This commit was manufactured by cvs2svn to create branch 'SAMBA_3_0'.(This used to...
authorcvs2svn Import User <samba-bugs@samba.org>
Wed, 25 Sep 2002 12:59:48 +0000 (12:59 +0000)
committercvs2svn Import User <samba-bugs@samba.org>
Wed, 25 Sep 2002 12:59:48 +0000 (12:59 +0000)
310 files changed:
docs/README.Win2kSP2 [new file with mode: 0644]
docs/Samba-HOWTO-Collection.pdf
docs/docbook/Makefile.in
docs/docbook/configure
docs/docbook/configure.in
docs/docbook/dbsgml/40chg.txt [new file with mode: 0644]
docs/docbook/dbsgml/41chg.txt [new file with mode: 0644]
docs/docbook/dbsgml/50issues.txt [new file with mode: 0644]
docs/docbook/dbsgml/ChangeLog [new file with mode: 0644]
docs/docbook/dbsgml/cals-tbl.dtd [new file with mode: 0644]
docs/docbook/dbsgml/catalog [new file with mode: 0644]
docs/docbook/dbsgml/dbcent.mod [new file with mode: 0755]
docs/docbook/dbsgml/dbgenent.mod [new file with mode: 0644]
docs/docbook/dbsgml/dbhier.mod [new file with mode: 0755]
docs/docbook/dbsgml/dbnotn.mod [new file with mode: 0755]
docs/docbook/dbsgml/dbpool.mod [new file with mode: 0755]
docs/docbook/dbsgml/docbook.cat [new file with mode: 0644]
docs/docbook/dbsgml/docbook.dcl [new file with mode: 0644]
docs/docbook/dbsgml/docbook.dtd [new file with mode: 0755]
docs/docbook/dbsgml/ent/ISOamsa [new file with mode: 0644]
docs/docbook/dbsgml/ent/ISOamsb [new file with mode: 0644]
docs/docbook/dbsgml/ent/ISOamsc [new file with mode: 0644]
docs/docbook/dbsgml/ent/ISOamsn [new file with mode: 0644]
docs/docbook/dbsgml/ent/ISOamso [new file with mode: 0644]
docs/docbook/dbsgml/ent/ISOamsr [new file with mode: 0644]
docs/docbook/dbsgml/ent/ISObox [new file with mode: 0644]
docs/docbook/dbsgml/ent/ISOcyr1 [new file with mode: 0644]
docs/docbook/dbsgml/ent/ISOcyr2 [new file with mode: 0644]
docs/docbook/dbsgml/ent/ISOdia [new file with mode: 0644]
docs/docbook/dbsgml/ent/ISOgrk1 [new file with mode: 0644]
docs/docbook/dbsgml/ent/ISOgrk2 [new file with mode: 0644]
docs/docbook/dbsgml/ent/ISOgrk3 [new file with mode: 0644]
docs/docbook/dbsgml/ent/ISOgrk4 [new file with mode: 0644]
docs/docbook/dbsgml/ent/ISOlat1 [new file with mode: 0644]
docs/docbook/dbsgml/ent/ISOlat2 [new file with mode: 0644]
docs/docbook/dbsgml/ent/ISOnum [new file with mode: 0644]
docs/docbook/dbsgml/ent/ISOpub [new file with mode: 0644]
docs/docbook/dbsgml/ent/ISOtech [new file with mode: 0644]
docs/docbook/dbsgml/readme.txt [new file with mode: 0644]
docs/docbook/docbook.txt
docs/docbook/manpages/pdbedit.8.sgml
docs/docbook/manpages/smb.conf.5.sgml
docs/docbook/manpages/smbtar.1.sgml
docs/docbook/manpages/testparm.1.sgml
docs/docbook/projdoc/OS2-Client-HOWTO.sgml [new file with mode: 0644]
docs/docbook/projdoc/PAM-Authentication-And-Samba.sgml
docs/docbook/projdoc/Printing.sgml
docs/docbook/projdoc/Samba-BDC-HOWTO.sgml
docs/docbook/projdoc/UNIX_INSTALL.sgml
docs/docbook/projdoc/printer_driver2.sgml
docs/docbook/projdoc/samba-doc.sgml
docs/docbook/projdoc/security_level.sgml
docs/docbook/scripts/README.ldp_print [new file with mode: 0644]
docs/docbook/scripts/collateindex.pl [new file with mode: 0644]
docs/docbook/scripts/fix_print_html.lib [new file with mode: 0644]
docs/docbook/scripts/ldp_print [new file with mode: 0755]
docs/docbook/scripts/make-article.pl [new file with mode: 0644]
docs/docbook/scripts/strip-links.pl
docs/docbook/stylesheets/ldp.dsl.in [new file with mode: 0644]
docs/faq/Samba-Server-FAQ.sgml
docs/faq/Samba-meta-FAQ.sgml
docs/faq/sambafaq.sgml
docs/htmldocs/printer_driver2.html
docs/htmldocs/smb.conf.5.html
docs/manpages/findsmb.1
docs/manpages/pdbedit.8
docs/manpages/smb.conf.5
docs/manpages/smbclient.1
docs/manpages/testparm.1
docs/textdocs/BROWSING.txt [new file with mode: 0644]
docs/textdocs/BUGS.txt [new file with mode: 0644]
docs/textdocs/DIAGNOSIS.txt [new file with mode: 0644]
docs/textdocs/DNIX.txt [new file with mode: 0644]
docs/textdocs/GROUP-MAPPING-HOWTO.txt [new file with mode: 0644]
docs/textdocs/INSTALL.sambatar [new file with mode: 0644]
docs/textdocs/Imprints.txt [new file with mode: 0644]
docs/textdocs/Macintosh_Clients.txt [new file with mode: 0644]
docs/textdocs/NetBIOS.txt [new file with mode: 0644]
docs/textdocs/Passwords.txt [new file with mode: 0644]
docs/textdocs/Printing.txt [new file with mode: 0644]
docs/textdocs/README.sambatar [new file with mode: 0644]
docs/textdocs/SCO.txt [new file with mode: 0644]
docs/textdocs/SMBTAR.notes [new file with mode: 0644]
docs/textdocs/Samba-OpenSSL.txt [new file with mode: 0644]
docs/textdocs/Speed.txt [new file with mode: 0644]
docs/textdocs/Speed2.txt [new file with mode: 0644]
docs/textdocs/Tracing.txt [new file with mode: 0644]
docs/textdocs/UNIX-SMB.txt [new file with mode: 0644]
docs/textdocs/Win95.txt [new file with mode: 0644]
docs/textdocs/WinNT.txt [new file with mode: 0644]
docs/textdocs/cifsntdomain.txt [new file with mode: 0644]
docs/textdocs/outdated/NTDOMAIN.txt [new file with mode: 0644]
docs/textdocs/outdated/PROJECTS [new file with mode: 0644]
docs/textdocs/security_level.txt [new file with mode: 0644]
docs/yodldocs/README-NOW [new file with mode: 0644]
examples/VFS/Makefile [new file with mode: 0644]
examples/VFS/Makefile.in
examples/VFS/README
examples/VFS/block/Makefile [new file with mode: 0644]
examples/VFS/block/Makefile.in [new file with mode: 0644]
examples/VFS/block/block.c [new file with mode: 0644]
examples/VFS/block/samba-block.conf [new file with mode: 0644]
examples/VFS/block/smb.conf [new file with mode: 0644]
examples/VFS/recycle.c
examples/pdb/mysql/Makefile.in
examples/pdb/mysql/pdb_mysql.c
examples/pdb/xml/Makefile.in
examples/pdb/xml/pdb_xml.c
examples/printing/smbprint
examples/printing/smbprint.old [deleted file]
packaging/Caldera/OpenLinux/samba3.spec.tmpl
packaging/SGI/winbindd.rc
source3/CodingSuggestions
source3/Makefile.in
source3/acconfig.h
source3/auth/auth_builtin.c
source3/auth/auth_domain.c
source3/auth/auth_sam.c
source3/auth/auth_server.c
source3/auth/auth_util.c
source3/auth/auth_winbind.c
source3/bin/.cvsignore
source3/client/client.c
source3/client/smbmnt.c
source3/configure
source3/configure.in
source3/groupdb/aliasdb.c
source3/groupdb/groupdb.c
source3/groupdb/mapping.c
source3/include/ads.h
source3/include/asn_1.h
source3/include/client.h
source3/include/config.h.in
source3/include/debug.h
source3/include/doserr.h
source3/include/includes.h
source3/include/libsmbclient.h
source3/include/local.h
source3/include/messages.h
source3/include/nt_printing.h
source3/include/printing.h
source3/include/rpc_client_proto.h [deleted file]
source3/include/rpc_netlogon.h
source3/include/rpc_spoolss.h
source3/include/sids.h [new file with mode: 0644]
source3/include/smb.h
source3/include/smb_acls.h
source3/include/smb_macros.h
source3/include/smbprofile.h
source3/include/trans2.h
source3/include/version.h
source3/include/vfs.h
source3/lib/account_pol.c
source3/lib/charcnv.c
source3/lib/debug.c
source3/lib/domain_namemap.c [deleted file]
source3/lib/error.c
source3/lib/messages.c
source3/lib/popt_common.c
source3/lib/readline.c
source3/lib/server_mutex.c
source3/lib/substitute.c
source3/lib/system.c
source3/lib/system_smbd.c
source3/lib/time.c
source3/lib/username.c
source3/lib/util.c
source3/lib/util_seaccess.c
source3/lib/util_sid.c
source3/lib/util_sock.c
source3/lib/util_unistr.c
source3/lib/xfile.c
source3/libads/ads_status.c
source3/libads/kerberos.c
source3/libads/krb5_setpw.c
source3/libads/ldap.c
source3/libads/ldap_printer.c
source3/libads/sasl.c
source3/libads/util.c
source3/libsmb/asn1.c
source3/libsmb/cli_dfs.c [new file with mode: 0644]
source3/libsmb/cli_lsarpc.c [new file with mode: 0644]
source3/libsmb/cli_netlogon.c [new file with mode: 0644]
source3/libsmb/cli_pipe_util.c [new file with mode: 0644]
source3/libsmb/cli_reg.c [new file with mode: 0644]
source3/libsmb/cli_samr.c [new file with mode: 0644]
source3/libsmb/cli_spoolss.c [new file with mode: 0644]
source3/libsmb/cli_spoolss_notify.c [new file with mode: 0644]
source3/libsmb/cli_srvsvc.c [new file with mode: 0644]
source3/libsmb/cli_wkssvc.c [new file with mode: 0644]
source3/libsmb/cliconnect.c
source3/libsmb/clientgen.c
source3/libsmb/clierror.c
source3/libsmb/clifile.c
source3/libsmb/clikrb5.c
source3/libsmb/clilist.c
source3/libsmb/clireadwrite.c
source3/libsmb/clispnego.c
source3/libsmb/libsmb_cache.c
source3/libsmb/libsmbclient.c
source3/libsmb/namecache.c
source3/libsmb/nterr.c
source3/libsmb/smbencrypt.c
source3/libsmb/trust_passwd.c
source3/locking/locking.c
source3/nmbd/nmbd_processlogon.c
source3/nmbd/nmbd_synclists.c
source3/nsswitch/pam_winbind.c
source3/nsswitch/pam_winbind.h
source3/nsswitch/wb_common.c
source3/nsswitch/wbinfo.c
source3/nsswitch/winbind_nss.c
source3/nsswitch/winbind_nss_config.h
source3/nsswitch/winbindd.c
source3/nsswitch/winbindd_ads.c
source3/nsswitch/winbindd_cm.c
source3/nsswitch/winbindd_nss.h
source3/nsswitch/winbindd_pam.c
source3/nsswitch/winbindd_proto.h [new file with mode: 0644]
source3/nsswitch/winbindd_rpc.c
source3/nsswitch/winbindd_util.c
source3/pam_smbpass/pam_smb_passwd.c
source3/param/loadparm.c
source3/passdb/machine_sid.c
source3/passdb/passdb.c
source3/passdb/passgrp.c [new file with mode: 0644]
source3/passdb/pdb_get_set.c
source3/passdb/pdb_interface.c
source3/passdb/pdb_ldap.c
source3/passdb/pdb_nisplus.c
source3/passdb/pdb_plugin.c
source3/passdb/pdb_smbpasswd.c
source3/passdb/secrets.c
source3/printing/notify.c
source3/printing/nt_printing.c
source3/printing/print_cups.c
source3/printing/printfsp.c
source3/printing/printing.c
source3/profile/profile.c
source3/registry/reg_frontend.c
source3/registry/reg_printing.c
source3/rpc_client/cli_login.c [new file with mode: 0644]
source3/rpc_client/cli_netlogon.c
source3/rpc_client/cli_pipe.c
source3/rpc_client/cli_spoolss.c
source3/rpc_client/cli_spoolss_notify.c
source3/rpc_client/msrpc_spoolss.c [new file with mode: 0644]
source3/rpc_client/ntclienttrust.c [new file with mode: 0644]
source3/rpc_parse/parse_misc.c
source3/rpc_parse/parse_net.c
source3/rpc_parse/parse_prs.c
source3/rpc_parse/parse_reg.c
source3/rpc_parse/parse_spoolss.c
source3/rpc_parse/parse_srv.c
source3/rpc_server/srv_lsa_nt.c
source3/rpc_server/srv_netlog_nt.c
source3/rpc_server/srv_pipe.c
source3/rpc_server/srv_reg_nt.c
source3/rpc_server/srv_samr_nt.c
source3/rpc_server/srv_spoolss_nt.c
source3/rpc_server/srv_srvsvc_nt.c
source3/rpcclient/cmd_lsarpc.c
source3/rpcclient/cmd_netlogon.c
source3/rpcclient/cmd_spoolss.c
source3/rpcclient/rpcclient.c
source3/rpcclient/samsync.c
source3/smbd/blocking.c
source3/smbd/conn.c
source3/smbd/connection.c
source3/smbd/dir.c
source3/smbd/filename.c
source3/smbd/mangle_hash.c
source3/smbd/mangle_hash2.c
source3/smbd/negprot.c
source3/smbd/nttrans.c
source3/smbd/open.c
source3/smbd/password.c
source3/smbd/posix_acls.c
source3/smbd/process.c
source3/smbd/reply.c
source3/smbd/sec_ctx.c
source3/smbd/server.c
source3/smbd/service.c
source3/smbd/sesssetup.c
source3/smbd/ssl.c [new file with mode: 0644]
source3/smbd/trans2.c
source3/smbd/uid.c
source3/smbd/vfs-wrap.c
source3/smbd/vfs.c
source3/tdb/spinlock.c
source3/tdb/tdb.c
source3/tdb/tdb.h
source3/tdb/tdbbackup.c
source3/tdb/tdbdump.c
source3/tdb/tdbtest.c
source3/tdb/tdbtool.c
source3/torture/torture.c
source3/utils/net.c
source3/utils/net_ads.c
source3/utils/net_help.c
source3/utils/net_rpc.c
source3/utils/net_rpc_join.c
source3/utils/pdbedit.c
source3/utils/smbcontrol.c
source3/utils/smbpasswd.c
source3/utils/status.c
source3/utils/testparm.c
source3/web/swat.c
testsuite/build_farm/basicsmb-sharelist.test
testsuite/build_farm/basicsmb.smb.conf.template

diff --git a/docs/README.Win2kSP2 b/docs/README.Win2kSP2
new file mode 100644 (file)
index 0000000..49a8fbf
--- /dev/null
@@ -0,0 +1,56 @@
+!==
+!== README.Win2kSP2
+!==
+
+Author:                Gerald (Jerry) Carter <jerry@samba.org>
+
+==================================================================
+
+There are several annoyances with Windows 2000 SP2. One of which
+only appears when using a Samba server to host user profiles
+to Windows 2000 SP2 clients in a Windows domain.  This assumes
+that Samba is a member of the domain, but the problem will
+likely occur if it is not.
+
+In order to server profiles successfully to Windows 2000 SP2 
+clients (when not operating as a PDC), Samba must have 
+
+       nt acl support = no
+
+added to the file share which houses the roaming profiles.
+If this is not done, then the Windows 2000 SP2 client will
+complain about not being able to access the profile (Access 
+Denied) and create multiple copies of it on disk (DOMAIN.user.001,
+DOMAIN.user.002, etc...).  See the smb.conf(5) man page
+for more details on this option.  Also note that the "nt acl support"
+parameter was formally a global parameter in releases prior
+to Samba 2.2.2.
+
+The following is a minimal profile share
+
+       [profile]
+               path = /export/profile
+               create mask = 0600
+               directory mask = 0700
+               nt acl support = no
+               read only = no
+
+The reason for this bug is that the Win2k SP2 client copies
+the security descriptor for the profile which contains
+the Samba server's SID, and not the domain SID.  The client
+compares the SID for SAMBA\user and realizes it is
+different that the one assigned to DOMAIN\user.  Hence the reason
+for the "access denied" message.
+
+By disabling the "nt acl support" parameter, Samba will send
+the Win2k client a response to the QuerySecurityDescriptor
+trans2 call which causes the client to set a default ACL
+for the profile. This default ACL includes 
+
+       DOMAIN\user     "Full Control"
+
+
+NOTE : This bug does not occur when using winbind to
+create accounts on the Samba host for Domain users.
+
+
index 85326c8b8cefd51cd7b237b6b5b51cc11bae77a2..e47621a0b84ddb45b69e8eed1c6de4dc71b37805 100644 (file)
@@ -1,6 +1,6 @@
-%PDF-1.3
+%PDF-1.2
 %âãÏÓ
-1 0 obj<</Producer(htmldoc 1.8.20 Copyright 1997-2002 Easy Software Products, All Rights Reserved.)/CreationDate(D:20020821135413-0200)/Title(SAMBA Project Documentation)/Creator(Modular DocBook HTML Stylesheet Version 1.76b+)>>endobj
+1 0 obj<</Producer(htmldoc 1.8.11 Copyright 1997-2001 Easy Software Products, All Rights Reserved.)/CreationDate(D:20020815182605Z)/Title(SAMBA Project Documentation)/Creator(Modular DocBook HTML Stylesheet Version 1.57)>>endobj
 2 0 obj<</Type/Encoding/Differences[ 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma/minus/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/grave/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 128/Euro 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 159/Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]>>endobj
 3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
 4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier-Bold/Encoding 2 0 R>>endobj
 7 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Roman/Encoding 2 0 R>>endobj
 8 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Bold/Encoding 2 0 R>>endobj
 9 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Italic/Encoding 2 0 R>>endobj
-10 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-BoldItalic/Encoding 2 0 R>>endobj
-11 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica/Encoding 2 0 R>>endobj
-12 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica-Bold/Encoding 2 0 R>>endobj
-13 0 obj<</Type/Font/Subtype/Type1/BaseFont/Symbol>>endobj
-14 0 obj<</Subtype/Link/Rect[72.0 684.0 223.5 697.0]/Border[0 0 0]/Dest[1012 0 R/XYZ 0 734 0]>>endobj
-15 0 obj<</Subtype/Link/Rect[108.0 670.8 174.9 683.8]/Border[0 0 0]/Dest[1012 0 R/XYZ 0 696 0]>>endobj
-16 0 obj<</Subtype/Link/Rect[72.0 644.4 112.9 657.4]/Border[0 0 0]/Dest[1012 0 R/XYZ 0 734 0]>>endobj
-17 0 obj<</Subtype/Link/Rect[72.0 618.0 277.3 631.0]/Border[0 0 0]/Dest[1034 0 R/XYZ 0 734 0]>>endobj
-18 0 obj<</Subtype/Link/Rect[108.0 604.8 249.2 617.8]/Border[0 0 0]/Dest[1034 0 R/XYZ 0 696 0]>>endobj
-19 0 obj<</Subtype/Link/Rect[108.0 591.6 255.0 604.6]/Border[0 0 0]/Dest[1034 0 R/XYZ 0 568 0]>>endobj
-20 0 obj<</Subtype/Link/Rect[108.0 578.4 257.7 591.4]/Border[0 0 0]/Dest[1034 0 R/XYZ 0 163 0]>>endobj
-21 0 obj<</Subtype/Link/Rect[108.0 565.2 309.0 578.2]/Border[0 0 0]/Dest[1036 0 R/XYZ 0 734 0]>>endobj
-22 0 obj<</Subtype/Link/Rect[108.0 552.0 313.9 565.0]/Border[0 0 0]/Dest[1036 0 R/XYZ 0 385 0]>>endobj
-23 0 obj<</Subtype/Link/Rect[108.0 538.8 284.9 551.8]/Border[0 0 0]/Dest[1036 0 R/XYZ 0 283 0]>>endobj
-24 0 obj<</Subtype/Link/Rect[144.0 525.6 316.0 538.6]/Border[0 0 0]/Dest[1036 0 R/XYZ 0 129 0]>>endobj
-25 0 obj<</Subtype/Link/Rect[144.0 512.4 364.6 525.4]/Border[0 0 0]/Dest[1038 0 R/XYZ 0 303 0]>>endobj
-26 0 obj<</Subtype/Link/Rect[108.0 499.2 362.2 512.2]/Border[0 0 0]/Dest[1040 0 R/XYZ 0 718 0]>>endobj
-27 0 obj<</Subtype/Link/Rect[108.0 486.0 315.8 499.0]/Border[0 0 0]/Dest[1040 0 R/XYZ 0 551 0]>>endobj
-28 0 obj<</Subtype/Link/Rect[108.0 472.8 511.6 485.8]/Border[0 0 0]/Dest[1040 0 R/XYZ 0 383 0]>>endobj
-29 0 obj<</Subtype/Link/Rect[108.0 459.6 259.4 472.6]/Border[0 0 0]/Dest[1040 0 R/XYZ 0 169 0]>>endobj
-30 0 obj<</Subtype/Link/Rect[144.0 446.4 272.0 459.4]/Border[0 0 0]/Dest[1042 0 R/XYZ 0 652 0]>>endobj
-31 0 obj<</Subtype/Link/Rect[144.0 433.2 222.5 446.2]/Border[0 0 0]/Dest[1042 0 R/XYZ 0 594 0]>>endobj
-32 0 obj<</Subtype/Link/Rect[144.0 420.0 303.2 433.0]/Border[0 0 0]/Dest[1042 0 R/XYZ 0 509 0]>>endobj
-33 0 obj<</Subtype/Link/Rect[144.0 406.8 331.6 419.8]/Border[0 0 0]/Dest[1042 0 R/XYZ 0 200 0]>>endobj
-34 0 obj<</Subtype/Link/Rect[144.0 393.6 213.7 406.6]/Border[0 0 0]/Dest[1044 0 R/XYZ 0 734 0]>>endobj
-35 0 obj<</Subtype/Link/Rect[144.0 380.4 268.3 393.4]/Border[0 0 0]/Dest[1044 0 R/XYZ 0 279 0]>>endobj
-36 0 obj<</Subtype/Link/Rect[72.0 354.0 267.5 367.0]/Border[0 0 0]/Dest[1046 0 R/XYZ 0 734 0]>>endobj
-37 0 obj<</Subtype/Link/Rect[108.0 340.8 181.6 353.8]/Border[0 0 0]/Dest[1046 0 R/XYZ 0 696 0]>>endobj
-38 0 obj<</Subtype/Link/Rect[108.0 327.6 184.7 340.6]/Border[0 0 0]/Dest[1046 0 R/XYZ 0 529 0]>>endobj
-39 0 obj<</Subtype/Link/Rect[108.0 314.4 150.5 327.4]/Border[0 0 0]/Dest[1046 0 R/XYZ 0 173 0]>>endobj
-40 0 obj<</Subtype/Link/Rect[144.0 301.2 198.7 314.2]/Border[0 0 0]/Dest[1046 0 R/XYZ 0 139 0]>>endobj
-41 0 obj<</Subtype/Link/Rect[144.0 288.0 198.7 301.0]/Border[0 0 0]/Dest[1048 0 R/XYZ 0 705 0]>>endobj
-42 0 obj<</Subtype/Link/Rect[144.0 274.8 198.7 287.8]/Border[0 0 0]/Dest[1048 0 R/XYZ 0 501 0]>>endobj
-43 0 obj<</Subtype/Link/Rect[144.0 261.6 198.7 274.6]/Border[0 0 0]/Dest[1050 0 R/XYZ 0 586 0]>>endobj
-44 0 obj<</Subtype/Link/Rect[144.0 248.4 198.7 261.4]/Border[0 0 0]/Dest[1050 0 R/XYZ 0 435 0]>>endobj
-45 0 obj<</Subtype/Link/Rect[144.0 235.2 198.7 248.2]/Border[0 0 0]/Dest[1050 0 R/XYZ 0 311 0]>>endobj
-46 0 obj<</Subtype/Link/Rect[144.0 222.0 198.7 235.0]/Border[0 0 0]/Dest[1052 0 R/XYZ 0 718 0]>>endobj
-47 0 obj<</Subtype/Link/Rect[144.0 208.8 198.7 221.8]/Border[0 0 0]/Dest[1052 0 R/XYZ 0 356 0]>>endobj
-48 0 obj<</Subtype/Link/Rect[144.0 195.6 198.7 208.6]/Border[0 0 0]/Dest[1054 0 R/XYZ 0 679 0]>>endobj
-49 0 obj<</Subtype/Link/Rect[144.0 182.4 209.7 195.4]/Border[0 0 0]/Dest[1054 0 R/XYZ 0 528 0]>>endobj
-50 0 obj<</Subtype/Link/Rect[144.0 169.2 209.7 182.2]/Border[0 0 0]/Dest[1054 0 R/XYZ 0 390 0]>>endobj
-51 0 obj<</Subtype/Link/Rect[108.0 156.0 221.4 169.0]/Border[0 0 0]/Dest[1054 0 R/XYZ 0 253 0]>>endobj
-52 0 obj<</Subtype/Link/Rect[72.0 129.6 348.8 142.6]/Border[0 0 0]/Dest[1056 0 R/XYZ 0 734 0]>>endobj
-53 0 obj<</Subtype/Link/Rect[108.0 116.4 161.5 129.4]/Border[0 0 0]/Dest[1056 0 R/XYZ 0 672 0]>>endobj
-54 0 obj<</Subtype/Link/Rect[108.0 103.2 327.7 116.2]/Border[0 0 0]/Dest[1056 0 R/XYZ 0 439 0]>>endobj
-55 0 obj<</Subtype/Link/Rect[144.0 90.0 213.1 103.0]/Border[0 0 0]/Dest[1056 0 R/XYZ 0 311 0]>>endobj
-56 0 obj<</Subtype/Link/Rect[144.0 76.8 239.6 89.8]/Border[0 0 0]/Dest[1058 0 R/XYZ 0 441 0]>>endobj
-57 0 obj<</Subtype/Link/Rect[144.0 63.6 231.1 76.6]/Border[0 0 0]/Dest[1058 0 R/XYZ 0 303 0]>>endobj
-58 0 obj[14 0 R
-15 0 R
+10 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica/Encoding 2 0 R>>endobj
+11 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica-Bold/Encoding 2 0 R>>endobj
+12 0 obj<</Type/Font/Subtype/Type1/BaseFont/Symbol>>endobj
+13 0 obj<</S/URI/URI(http://www.samba.org/)>>endobj
+14 0 obj<</Subtype/Link/Rect[188.4 449.8 289.8 462.8]/Border[0 0 0]/A 13 0 R>>endobj
+15 0 obj<</S/URI/URI(mailto:jerry@samba.org)>>endobj
+16 0 obj<</Subtype/Link/Rect[72.0 436.6 148.4 449.6]/Border[0 0 0]/A 15 0 R>>endobj
+17 0 obj<</S/URI/URI(http://www.fsf.org/licenses/gpl.txt)>>endobj
+18 0 obj<</Subtype/Link/Rect[72.0 383.8 223.3 396.8]/Border[0 0 0]/A 17 0 R>>endobj
+19 0 obj[14 0 R
 16 0 R
-17 0 R
 18 0 R
-19 0 R
-20 0 R
-21 0 R
-22 0 R
-23 0 R
-24 0 R
-25 0 R
+]endobj
+20 0 obj<</S/URI/URI(http://www.samba.org/)>>endobj
+21 0 obj<</Subtype/Link/Rect[369.9 587.8 471.0 600.8]/Border[0 0 0]/A 20 0 R>>endobj
+22 0 obj[21 0 R
+]endobj
+23 0 obj<</S/URI/URI(mailto:samba@samba.org)>>endobj
+24 0 obj<</Subtype/Link/Rect[167.0 677.8 250.8 690.8]/Border[0 0 0]/A 23 0 R>>endobj
+25 0 obj<</S/URI/URI(http://samba.org/samba)>>endobj
+26 0 obj<</Subtype/Link/Rect[238.5 664.6 344.2 677.6]/Border[0 0 0]/A 25 0 R>>endobj
+27 0 obj[24 0 R
 26 0 R
-27 0 R
-28 0 R
-29 0 R
-30 0 R
+]endobj
+28 0 obj<</S/URI/URI(ENCRYPTION.html)>>endobj
+29 0 obj<</Subtype/Link/Rect[176.8 381.8 270.6 394.8]/Border[0 0 0]/A 28 0 R>>endobj
+30 0 obj<</S/URI/URI(#PASSWORDLEVEL)>>endobj
+31 0 obj<</Subtype/Link/Rect[73.0 118.8 154.0 129.8]/Border[0 0 0]/A 30 0 R>>endobj
+32 0 obj<</S/URI/URI(#USERNAMELEVEL)>>endobj
+33 0 obj<</Subtype/Link/Rect[73.0 108.0 148.6 119.0]/Border[0 0 0]/A 32 0 R>>endobj
+34 0 obj[29 0 R
 31 0 R
-32 0 R
 33 0 R
-34 0 R
-35 0 R
-36 0 R
-37 0 R
+]endobj
+35 0 obj<</S/URI/URI(winbind.html)>>endobj
+36 0 obj<</Subtype/Link/Rect[508.9 602.2 547.4 615.2]/Border[0 0 0]/A 35 0 R>>endobj
+37 0 obj<</S/URI/URI(winbind.html)>>endobj
+38 0 obj<</Subtype/Link/Rect[72.0 589.0 115.4 602.0]/Border[0 0 0]/A 37 0 R>>endobj
+39 0 obj[36 0 R
 38 0 R
-39 0 R
-40 0 R
-41 0 R
-42 0 R
-43 0 R
-44 0 R
-45 0 R
+]endobj
+40 0 obj<</S/URI/URI(http://rsync.samba.org/)>>endobj
+41 0 obj<</Subtype/Link/Rect[120.9 89.0 222.3 102.0]/Border[0 0 0]/A 40 0 R>>endobj
+42 0 obj[41 0 R
+]endobj
+43 0 obj<</S/URI/URI(#OBEYPAMRESTRICTIONS)>>endobj
+44 0 obj<</Subtype/Link/Rect[238.2 649.4 332.9 662.4]/Border[0 0 0]/A 43 0 R>>endobj
+45 0 obj<</S/URI/URI(#ENCRYPTPASSWORDS)>>endobj
+46 0 obj<</Subtype/Link/Rect[344.2 570.2 454.9 583.2]/Border[0 0 0]/A 45 0 R>>endobj
+47 0 obj[44 0 R
 46 0 R
-47 0 R
-48 0 R
-49 0 R
-50 0 R
+]endobj
+48 0 obj<</S/URI/URI(http://www.microsoft.com/NTServer/nts/downloads/winfeatures/NTSDistrFile/AdminGuide.asp)>>endobj
+49 0 obj<</Subtype/Link/Rect[72.0 590.2 183.5 603.2]/Border[0 0 0]/A 48 0 R>>endobj
+50 0 obj<</S/URI/URI(#HOSTMSDFS)>>endobj
+51 0 obj<</Subtype/Link/Rect[347.8 511.0 420.4 524.0]/Border[0 0 0]/A 50 0 R>>endobj
+52 0 obj<</S/URI/URI(#MSDFSROOT)>>endobj
+53 0 obj<</Subtype/Link/Rect[383.6 497.8 456.2 510.8]/Border[0 0 0]/A 52 0 R>>endobj
+54 0 obj[49 0 R
 51 0 R
-52 0 R
 53 0 R
-54 0 R
-55 0 R
-56 0 R
-57 0 R]endobj
-59 0 obj<</Subtype/Link/Rect[72.0 684.0 348.8 697.0]/Border[0 0 0]/Dest[1056 0 R/XYZ 0 734 0]>>endobj
-60 0 obj<</Subtype/Link/Rect[144.0 670.8 251.2 683.8]/Border[0 0 0]/Dest[1058 0 R/XYZ 0 157 0]>>endobj
-61 0 obj<</Subtype/Link/Rect[108.0 657.6 382.4 670.6]/Border[0 0 0]/Dest[1060 0 R/XYZ 0 339 0]>>endobj
-62 0 obj<</Subtype/Link/Rect[144.0 644.4 291.6 657.4]/Border[0 0 0]/Dest[1062 0 R/XYZ 0 266 0]>>endobj
-63 0 obj<</Subtype/Link/Rect[144.0 631.2 260.1 644.2]/Border[0 0 0]/Dest[1064 0 R/XYZ 0 734 0]>>endobj
-64 0 obj<</Subtype/Link/Rect[144.0 618.0 223.8 631.0]/Border[0 0 0]/Dest[1066 0 R/XYZ 0 459 0]>>endobj
-65 0 obj<</Subtype/Link/Rect[144.0 604.8 230.5 617.8]/Border[0 0 0]/Dest[1066 0 R/XYZ 0 361 0]>>endobj
-66 0 obj<</Subtype/Link/Rect[144.0 591.6 236.6 604.6]/Border[0 0 0]/Dest[1066 0 R/XYZ 0 224 0]>>endobj
-67 0 obj<</Subtype/Link/Rect[108.0 578.4 523.2 591.4]/Border[0 0 0]/Dest[1068 0 R/XYZ 0 670 0]>>endobj
-68 0 obj<</Subtype/Link/Rect[108.0 565.2 497.9 578.2]/Border[0 0 0]/Dest[1068 0 R/XYZ 0 126 0]>>endobj
-69 0 obj<</Subtype/Link/Rect[144.0 552.0 389.3 565.0]/Border[0 0 0]/Dest[1072 0 R/XYZ 0 734 0]>>endobj
-70 0 obj<</Subtype/Link/Rect[144.0 538.8 455.0 551.8]/Border[0 0 0]/Dest[1072 0 R/XYZ 0 484 0]>>endobj
-71 0 obj<</Subtype/Link/Rect[144.0 525.6 368.5 538.6]/Border[0 0 0]/Dest[1072 0 R/XYZ 0 132 0]>>endobj
-72 0 obj<</Subtype/Link/Rect[108.0 512.4 181.6 525.4]/Border[0 0 0]/Dest[1074 0 R/XYZ 0 263 0]>>endobj
-73 0 obj<</Subtype/Link/Rect[72.0 486.0 460.7 499.0]/Border[0 0 0]/Dest[1076 0 R/XYZ 0 734 0]>>endobj
-74 0 obj<</Subtype/Link/Rect[108.0 472.8 202.4 485.8]/Border[0 0 0]/Dest[1076 0 R/XYZ 0 672 0]>>endobj
-75 0 obj<</Subtype/Link/Rect[108.0 459.6 244.9 472.6]/Border[0 0 0]/Dest[1078 0 R/XYZ 0 148 0]>>endobj
-76 0 obj<</Subtype/Link/Rect[108.0 446.4 270.2 459.4]/Border[0 0 0]/Dest[1080 0 R/XYZ 0 705 0]>>endobj
-77 0 obj<</Subtype/Link/Rect[72.0 420.0 402.3 433.0]/Border[0 0 0]/Dest[1082 0 R/XYZ 0 734 0]>>endobj
-78 0 obj<</Subtype/Link/Rect[108.0 406.8 179.2 419.8]/Border[0 0 0]/Dest[1082 0 R/XYZ 0 672 0]>>endobj
-79 0 obj<</Subtype/Link/Rect[144.0 393.6 197.2 406.6]/Border[0 0 0]/Dest[1084 0 R/XYZ 0 652 0]>>endobj
-80 0 obj<</Subtype/Link/Rect[72.0 367.2 412.7 380.2]/Border[0 0 0]/Dest[1086 0 R/XYZ 0 734 0]>>endobj
-81 0 obj<</Subtype/Link/Rect[108.0 354.0 444.7 367.0]/Border[0 0 0]/Dest[1086 0 R/XYZ 0 672 0]>>endobj
-82 0 obj<</Subtype/Link/Rect[108.0 340.8 319.1 353.8]/Border[0 0 0]/Dest[1086 0 R/XYZ 0 497 0]>>endobj
-83 0 obj<</Subtype/Link/Rect[108.0 327.6 231.1 340.6]/Border[0 0 0]/Dest[1086 0 R/XYZ 0 330 0]>>endobj
-84 0 obj<</Subtype/Link/Rect[108.0 314.4 292.2 327.4]/Border[0 0 0]/Dest[1088 0 R/XYZ 0 665 0]>>endobj
-85 0 obj<</Subtype/Link/Rect[144.0 301.2 244.5 314.2]/Border[0 0 0]/Dest[1088 0 R/XYZ 0 432 0]>>endobj
-86 0 obj<</Subtype/Link/Rect[144.0 288.0 269.6 301.0]/Border[0 0 0]/Dest[1088 0 R/XYZ 0 189 0]>>endobj
-87 0 obj<</Subtype/Link/Rect[108.0 274.8 301.4 287.8]/Border[0 0 0]/Dest[1090 0 R/XYZ 0 692 0]>>endobj
-88 0 obj<</Subtype/Link/Rect[108.0 261.6 392.1 274.6]/Border[0 0 0]/Dest[1090 0 R/XYZ 0 260 0]>>endobj
-89 0 obj<</Subtype/Link/Rect[108.0 248.4 384.2 261.4]/Border[0 0 0]/Dest[1094 0 R/XYZ 0 599 0]>>endobj
-90 0 obj<</Subtype/Link/Rect[72.0 222.0 277.1 235.0]/Border[0 0 0]/Dest[1096 0 R/XYZ 0 734 0]>>endobj
-91 0 obj<</Subtype/Link/Rect[108.0 208.8 181.6 221.8]/Border[0 0 0]/Dest[1096 0 R/XYZ 0 696 0]>>endobj
-92 0 obj<</Subtype/Link/Rect[108.0 195.6 189.0 208.6]/Border[0 0 0]/Dest[1096 0 R/XYZ 0 278 0]>>endobj
-93 0 obj<</Subtype/Link/Rect[144.0 182.4 245.7 195.4]/Border[0 0 0]/Dest[1098 0 R/XYZ 0 702 0]>>endobj
-94 0 obj<</Subtype/Link/Rect[144.0 169.2 330.4 182.2]/Border[0 0 0]/Dest[1100 0 R/XYZ 0 471 0]>>endobj
-95 0 obj<</Subtype/Link/Rect[144.0 156.0 323.3 169.0]/Border[0 0 0]/Dest[1102 0 R/XYZ 0 718 0]>>endobj
-96 0 obj<</Subtype/Link/Rect[144.0 142.8 386.9 155.8]/Border[0 0 0]/Dest[1102 0 R/XYZ 0 348 0]>>endobj
-97 0 obj<</Subtype/Link/Rect[144.0 129.6 278.1 142.6]/Border[0 0 0]/Dest[1104 0 R/XYZ 0 734 0]>>endobj
-98 0 obj<</Subtype/Link/Rect[108.0 116.4 220.1 129.4]/Border[0 0 0]/Dest[1104 0 R/XYZ 0 556 0]>>endobj
-99 0 obj<</Subtype/Link/Rect[144.0 103.2 250.3 116.2]/Border[0 0 0]/Dest[1104 0 R/XYZ 0 455 0]>>endobj
-100 0 obj<</Subtype/Link/Rect[144.0 90.0 317.2 103.0]/Border[0 0 0]/Dest[1104 0 R/XYZ 0 330 0]>>endobj
-101 0 obj<</Subtype/Link/Rect[144.0 76.8 258.3 89.8]/Border[0 0 0]/Dest[1104 0 R/XYZ 0 245 0]>>endobj
-102 0 obj<</Subtype/Link/Rect[144.0 63.6 270.5 76.6]/Border[0 0 0]/Dest[1104 0 R/XYZ 0 147 0]>>endobj
-103 0 obj[59 0 R
-60 0 R
+]endobj
+55 0 obj<</S/URI/URI(#NTACLSUPPORT)>>endobj
+56 0 obj<</Subtype/Link/Rect[342.7 533.8 441.7 546.8]/Border[0 0 0]/A 55 0 R>>endobj
+57 0 obj[56 0 R
+]endobj
+58 0 obj<</S/URI/URI(#SECURITYMASK)>>endobj
+59 0 obj<</Subtype/Link/Rect[88.2 668.2 180.6 681.2]/Border[0 0 0]/A 58 0 R>>endobj
+60 0 obj<</S/URI/URI(#CREATEMASK)>>endobj
+61 0 obj<</Subtype/Link/Rect[358.9 589.0 438.1 602.0]/Border[0 0 0]/A 60 0 R>>endobj
+62 0 obj<</S/URI/URI(#FORCESECURITYMODE)>>endobj
+63 0 obj<</Subtype/Link/Rect[427.0 536.2 526.0 549.2]/Border[0 0 0]/A 62 0 R>>endobj
+64 0 obj<</S/URI/URI(#FORCESECURITYMODE)>>endobj
+65 0 obj<</Subtype/Link/Rect[72.0 523.0 98.4 536.0]/Border[0 0 0]/A 64 0 R>>endobj
+66 0 obj<</S/URI/URI(#FORCECREATEMODE)>>endobj
+67 0 obj<</Subtype/Link/Rect[358.9 443.8 477.7 456.8]/Border[0 0 0]/A 66 0 R>>endobj
+68 0 obj<</S/URI/URI(smb.conf.5.html)>>endobj
+69 0 obj<</Subtype/Link/Rect[72.0 166.6 151.2 179.6]/Border[0 0 0]/A 68 0 R>>endobj
+70 0 obj[59 0 R
 61 0 R
-62 0 R
 63 0 R
-64 0 R
 65 0 R
-66 0 R
 67 0 R
-68 0 R
 69 0 R
-70 0 R
-71 0 R
-72 0 R
-73 0 R
+]endobj
+71 0 obj<</S/URI/URI(http://imprints.sourceforge.net)>>endobj
+72 0 obj<</Subtype/Link/Rect[146.5 548.2 280.3 561.2]/Border[0 0 0]/A 71 0 R>>endobj
+73 0 obj<</S/URI/URI(http://msdn.microsoft.com/)>>endobj
+74 0 obj<</Subtype/Link/Rect[221.4 521.8 341.1 534.8]/Border[0 0 0]/A 73 0 R>>endobj
+75 0 obj<</S/URI/URI(http://support.microsoft.com/support/kb/articles/Q189/1/05.ASP)>>endobj
+76 0 obj<</Subtype/Link/Rect[72.0 297.4 355.9 310.4]/Border[0 0 0]/A 75 0 R>>endobj
+77 0 obj[72 0 R
 74 0 R
-75 0 R
 76 0 R
-77 0 R
-78 0 R
-79 0 R
+]endobj
+78 0 obj<</Subtype/Link/Rect[462.9 705.8 540.9 718.8]/Border[0 0 0]/Dest[915 0 R/XYZ null 768 0]>>endobj
+79 0 obj<</S/URI/URI(#WRITELIST)>>endobj
+80 0 obj<</Subtype/Link/Rect[91.9 313.4 157.9 326.4]/Border[0 0 0]/A 79 0 R>>endobj
+81 0 obj<</S/URI/URI(smb.conf.5.html)>>endobj
+82 0 obj<</Subtype/Link/Rect[192.7 300.2 294.1 313.2]/Border[0 0 0]/A 81 0 R>>endobj
+83 0 obj<</S/URI/URI(#GUESTOK)>>endobj
+84 0 obj<</Subtype/Link/Rect[163.3 273.8 231.3 286.8]/Border[0 0 0]/A 83 0 R>>endobj
+85 0 obj<</S/URI/URI(#MAPTOGUEST)>>endobj
+86 0 obj<</Subtype/Link/Rect[401.4 168.2 492.0 181.2]/Border[0 0 0]/A 85 0 R>>endobj
+87 0 obj<</S/URI/URI(#MAPTOGUEST)>>endobj
+88 0 obj<</Subtype/Link/Rect[108.0 155.0 130.0 168.0]/Border[0 0 0]/A 87 0 R>>endobj
+89 0 obj[78 0 R
 80 0 R
-81 0 R
 82 0 R
-83 0 R
 84 0 R
-85 0 R
 86 0 R
-87 0 R
 88 0 R
-89 0 R
-90 0 R
-91 0 R
-92 0 R
-93 0 R
-94 0 R
-95 0 R
+]endobj
+90 0 obj<</S/URI/URI(#PRINTERADMIN)>>endobj
+91 0 obj<</Subtype/Link/Rect[433.8 567.8 526.2 580.8]/Border[0 0 0]/A 90 0 R>>endobj
+92 0 obj[91 0 R
+]endobj
+93 0 obj<</S/URI/URI(rpcclient.1.html)>>endobj
+94 0 obj<</Subtype/Link/Rect[239.1 583.4 382.1 596.4]/Border[0 0 0]/A 93 0 R>>endobj
+95 0 obj<</S/URI/URI(#SHOWADDPRINTERWIZARD)>>endobj
+96 0 obj<</Subtype/Link/Rect[108.0 159.0 306.0 172.0]/Border[0 0 0]/A 95 0 R>>endobj
+97 0 obj<</S/URI/URI(#ADDPRINTERCOMMAND)>>endobj
+98 0 obj<</Subtype/Link/Rect[456.6 132.6 535.8 145.6]/Border[0 0 0]/A 97 0 R>>endobj
+99 0 obj<</S/URI/URI(#ADDPRINTERCOMMAND)>>endobj
+100 0 obj<</Subtype/Link/Rect[72.0 119.4 118.2 132.4]/Border[0 0 0]/A 99 0 R>>endobj
+101 0 obj[94 0 R
 96 0 R
-97 0 R
 98 0 R
-99 0 R
 100 0 R
-101 0 R
-102 0 R]endobj
-104 0 obj<</Subtype/Link/Rect[72.0 684.0 277.1 697.0]/Border[0 0 0]/Dest[1096 0 R/XYZ 0 734 0]>>endobj
-105 0 obj<</Subtype/Link/Rect[108.0 670.8 300.2 683.8]/Border[0 0 0]/Dest[1106 0 R/XYZ 0 267 0]>>endobj
-106 0 obj<</Subtype/Link/Rect[72.0 644.4 264.8 657.4]/Border[0 0 0]/Dest[1110 0 R/XYZ 0 734 0]>>endobj
-107 0 obj<</Subtype/Link/Rect[108.0 631.2 181.6 644.2]/Border[0 0 0]/Dest[1110 0 R/XYZ 0 696 0]>>endobj
-108 0 obj<</Subtype/Link/Rect[108.0 618.0 251.9 631.0]/Border[0 0 0]/Dest[1112 0 R/XYZ 0 734 0]>>endobj
-109 0 obj<</Subtype/Link/Rect[108.0 604.8 236.0 617.8]/Border[0 0 0]/Dest[1112 0 R/XYZ 0 278 0]>>endobj
-110 0 obj<</Subtype/Link/Rect[108.0 591.6 287.0 604.6]/Border[0 0 0]/Dest[1114 0 R/XYZ 0 734 0]>>endobj
-111 0 obj<</Subtype/Link/Rect[108.0 578.4 210.4 591.4]/Border[0 0 0]/Dest[1114 0 R/XYZ 0 304 0]>>endobj
-112 0 obj<</Subtype/Link/Rect[108.0 565.2 231.1 578.2]/Border[0 0 0]/Dest[1116 0 R/XYZ 0 646 0]>>endobj
-113 0 obj<</Subtype/Link/Rect[108.0 552.0 229.3 565.0]/Border[0 0 0]/Dest[1116 0 R/XYZ 0 299 0]>>endobj
-114 0 obj<</Subtype/Link/Rect[108.0 538.8 210.0 551.8]/Border[0 0 0]/Dest[1116 0 R/XYZ 0 210 0]>>endobj
-115 0 obj<</Subtype/Link/Rect[108.0 525.6 196.6 538.6]/Border[0 0 0]/Dest[1118 0 R/XYZ 0 734 0]>>endobj
-116 0 obj<</Subtype/Link/Rect[72.0 499.2 192.4 512.2]/Border[0 0 0]/Dest[1120 0 R/XYZ 0 734 0]>>endobj
-117 0 obj<</Subtype/Link/Rect[108.0 486.0 181.6 499.0]/Border[0 0 0]/Dest[1120 0 R/XYZ 0 696 0]>>endobj
-118 0 obj<</Subtype/Link/Rect[108.0 472.8 323.7 485.8]/Border[0 0 0]/Dest[1120 0 R/XYZ 0 467 0]>>endobj
-119 0 obj<</Subtype/Link/Rect[72.0 446.4 278.4 459.4]/Border[0 0 0]/Dest[1124 0 R/XYZ 0 734 0]>>endobj
-120 0 obj<</Subtype/Link/Rect[108.0 433.2 305.4 446.2]/Border[0 0 0]/Dest[1124 0 R/XYZ 0 696 0]>>endobj
-121 0 obj<</Subtype/Link/Rect[108.0 420.0 293.5 433.0]/Border[0 0 0]/Dest[1126 0 R/XYZ 0 362 0]>>endobj
-122 0 obj<</Subtype/Link/Rect[108.0 406.8 313.4 419.8]/Border[0 0 0]/Dest[1126 0 R/XYZ 0 155 0]>>endobj
-123 0 obj<</Subtype/Link/Rect[72.0 380.4 431.7 393.4]/Border[0 0 0]/Dest[1130 0 R/XYZ 0 734 0]>>endobj
-124 0 obj<</Subtype/Link/Rect[108.0 367.2 170.0 380.2]/Border[0 0 0]/Dest[1130 0 R/XYZ 0 672 0]>>endobj
-125 0 obj<</Subtype/Link/Rect[108.0 354.0 187.1 367.0]/Border[0 0 0]/Dest[1130 0 R/XYZ 0 544 0]>>endobj
-126 0 obj<</Subtype/Link/Rect[108.0 340.8 239.1 353.8]/Border[0 0 0]/Dest[1130 0 R/XYZ 0 231 0]>>endobj
-127 0 obj<</Subtype/Link/Rect[144.0 327.6 229.8 340.6]/Border[0 0 0]/Dest[1132 0 R/XYZ 0 560 0]>>endobj
-128 0 obj<</Subtype/Link/Rect[108.0 314.4 227.5 327.4]/Border[0 0 0]/Dest[1132 0 R/XYZ 0 409 0]>>endobj
-129 0 obj<</Subtype/Link/Rect[144.0 301.2 330.1 314.2]/Border[0 0 0]/Dest[1132 0 R/XYZ 0 294 0]>>endobj
-130 0 obj<</Subtype/Link/Rect[144.0 288.0 272.3 301.0]/Border[0 0 0]/Dest[1134 0 R/XYZ 0 734 0]>>endobj
-131 0 obj<</Subtype/Link/Rect[144.0 274.8 330.4 287.8]/Border[0 0 0]/Dest[1134 0 R/XYZ 0 292 0]>>endobj
-132 0 obj<</Subtype/Link/Rect[144.0 261.6 310.8 274.6]/Border[0 0 0]/Dest[1136 0 R/XYZ 0 665 0]>>endobj
-133 0 obj<</Subtype/Link/Rect[144.0 248.4 244.5 261.4]/Border[0 0 0]/Dest[1136 0 R/XYZ 0 488 0]>>endobj
-134 0 obj<</Subtype/Link/Rect[108.0 235.2 265.4 248.2]/Border[0 0 0]/Dest[1136 0 R/XYZ 0 351 0]>>endobj
-135 0 obj<</Subtype/Link/Rect[144.0 222.0 231.4 235.0]/Border[0 0 0]/Dest[1136 0 R/XYZ 0 209 0]>>endobj
-136 0 obj<</Subtype/Link/Rect[144.0 208.8 238.1 221.8]/Border[0 0 0]/Dest[1138 0 R/XYZ 0 599 0]>>endobj
-137 0 obj<</Subtype/Link/Rect[144.0 195.6 262.6 208.6]/Border[0 0 0]/Dest[1138 0 R/XYZ 0 330 0]>>endobj
-138 0 obj<</Subtype/Link/Rect[108.0 182.4 183.5 195.4]/Border[0 0 0]/Dest[1152 0 R/XYZ 0 296 0]>>endobj
-139 0 obj<</Subtype/Link/Rect[108.0 169.2 182.9 182.2]/Border[0 0 0]/Dest[1154 0 R/XYZ 0 734 0]>>endobj
-140 0 obj<</Subtype/Link/Rect[72.0 142.8 421.8 155.8]/Border[0 0 0]/Dest[1156 0 R/XYZ 0 734 0]>>endobj
-141 0 obj<</Subtype/Link/Rect[108.0 129.6 224.7 142.6]/Border[0 0 0]/Dest[1156 0 R/XYZ 0 672 0]>>endobj
-142 0 obj<</Subtype/Link/Rect[108.0 116.4 186.5 129.4]/Border[0 0 0]/Dest[1156 0 R/XYZ 0 584 0]>>endobj
-143 0 obj<</Subtype/Link/Rect[108.0 103.2 321.6 116.2]/Border[0 0 0]/Dest[1158 0 R/XYZ 0 718 0]>>endobj
-144 0 obj<</Subtype/Link/Rect[108.0 90.0 435.5 103.0]/Border[0 0 0]/Dest[1160 0 R/XYZ 0 613 0]>>endobj
-145 0 obj<</Subtype/Link/Rect[144.0 76.8 374.7 89.8]/Border[0 0 0]/Dest[1160 0 R/XYZ 0 227 0]>>endobj
-146 0 obj<</Subtype/Link/Rect[144.0 63.6 404.0 76.6]/Border[0 0 0]/Dest[1162 0 R/XYZ 0 359 0]>>endobj
-147 0 obj[104 0 R
+]endobj
+102 0 obj<</S/URI/URI(#DELETEPRINTERCOMMAND)>>endobj
+103 0 obj<</Subtype/Link/Rect[189.3 681.4 334.5 694.4]/Border[0 0 0]/A 102 0 R>>endobj
+104 0 obj<</S/URI/URI(#ENUMPORTSCOMMAND)>>endobj
+105 0 obj<</Subtype/Link/Rect[451.4 504.2 510.8 517.2]/Border[0 0 0]/A 104 0 R>>endobj
+106 0 obj<</S/URI/URI(#ENUMPORTSCOMMAND)>>endobj
+107 0 obj<</Subtype/Link/Rect[72.0 491.0 118.2 504.0]/Border[0 0 0]/A 106 0 R>>endobj
+108 0 obj<</S/URI/URI(http://imprints.sourceforge.net/)>>endobj
+109 0 obj<</Subtype/Link/Rect[303.3 406.2 442.9 419.2]/Border[0 0 0]/A 108 0 R>>endobj
+110 0 obj[103 0 R
 105 0 R
-106 0 R
 107 0 R
-108 0 R
 109 0 R
-110 0 R
-111 0 R
-112 0 R
-113 0 R
-114 0 R
-115 0 R
-116 0 R
+]endobj
+111 0 obj<</S/URI/URI(http://imprints.sourceforge.net/)>>endobj
+112 0 obj<</Subtype/Link/Rect[108.0 479.8 244.9 492.8]/Border[0 0 0]/A 111 0 R>>endobj
+113 0 obj[112 0 R
+]endobj
+114 0 obj<</S/URI/URI(#SECURITY)>>endobj
+115 0 obj<</Subtype/Link/Rect[73.0 617.6 116.2 628.6]/Border[0 0 0]/A 114 0 R>>endobj
+116 0 obj<</S/URI/URI(DOMAIN_MEMBER.html)>>endobj
+117 0 obj<</Subtype/Link/Rect[72.0 578.2 193.3 591.2]/Border[0 0 0]/A 116 0 R>>endobj
+118 0 obj<</S/URI/URI(ADS-HOWTO.html)>>endobj
+119 0 obj<</Subtype/Link/Rect[372.4 565.0 464.5 578.0]/Border[0 0 0]/A 118 0 R>>endobj
+120 0 obj[115 0 R
 117 0 R
-118 0 R
 119 0 R
-120 0 R
-121 0 R
-122 0 R
-123 0 R
+]endobj
+121 0 obj<</S/URI/URI(smbpasswd.8.html)>>endobj
+122 0 obj<</Subtype/Link/Rect[221.4 455.8 287.7 468.8]/Border[0 0 0]/A 121 0 R>>endobj
+123 0 obj<</S/URI/URI(smb.conf.5.html)>>endobj
+124 0 obj<</Subtype/Link/Rect[353.1 139.0 425.7 152.0]/Border[0 0 0]/A 123 0 R>>endobj
+125 0 obj<</S/URI/URI(#SECURITY)>>endobj
+126 0 obj<</Subtype/Link/Rect[169.1 99.4 241.7 112.4]/Border[0 0 0]/A 125 0 R>>endobj
+127 0 obj[122 0 R
 124 0 R
-125 0 R
 126 0 R
-127 0 R
-128 0 R
-129 0 R
-130 0 R
+]endobj
+128 0 obj<</S/URI/URI(#WORKGROUP)>>endobj
+129 0 obj<</Subtype/Link/Rect[146.2 721.0 225.4 734.0]/Border[0 0 0]/A 128 0 R>>endobj
+130 0 obj<</S/URI/URI(#ENCRYPTPASSWORDS)>>endobj
+131 0 obj<</Subtype/Link/Rect[224.7 641.8 343.5 654.8]/Border[0 0 0]/A 130 0 R>>endobj
+132 0 obj<</S/URI/URI(#PASSWORDSERVER)>>endobj
+133 0 obj<</Subtype/Link/Rect[188.7 602.2 307.5 615.2]/Border[0 0 0]/A 132 0 R>>endobj
+134 0 obj[129 0 R
 131 0 R
-132 0 R
 133 0 R
-134 0 R
-135 0 R
-136 0 R
-137 0 R
+]endobj
+135 0 obj<</S/URI/URI(#SECURITYEQUALSSERVER)>>endobj
+136 0 obj<</Subtype/Link/Rect[277.9 721.0 354.1 734.0]/Border[0 0 0]/A 135 0 R>>endobj
+137 0 obj<</S/URI/URI(winbind.html)>>endobj
+138 0 obj<</Subtype/Link/Rect[153.9 668.2 222.3 681.2]/Border[0 0 0]/A 137 0 R>>endobj
+139 0 obj<</S/URI/URI(http://www.linuxworld.com)>>endobj
+140 0 obj<</Subtype/Link/Rect[443.5 351.4 500.6 364.4]/Border[0 0 0]/A 139 0 R>>endobj
+141 0 obj<</S/URI/URI(http://www.linuxworld.com/linuxworld/lw-1998-10/lw-10-samba.html)>>endobj
+142 0 obj<</Subtype/Link/Rect[72.0 338.2 189.3 351.2]/Border[0 0 0]/A 141 0 R>>endobj
+143 0 obj[136 0 R
 138 0 R
-139 0 R
 140 0 R
-141 0 R
 142 0 R
-143 0 R
-144 0 R
-145 0 R
-146 0 R]endobj
-148 0 obj<</Subtype/Link/Rect[72.0 684.0 421.8 697.0]/Border[0 0 0]/Dest[1156 0 R/XYZ 0 734 0]>>endobj
-149 0 obj<</Subtype/Link/Rect[144.0 670.8 320.9 683.8]/Border[0 0 0]/Dest[1162 0 R/XYZ 0 149 0]>>endobj
-150 0 obj<</Subtype/Link/Rect[108.0 657.6 266.9 670.6]/Border[0 0 0]/Dest[1164 0 R/XYZ 0 467 0]>>endobj
-151 0 obj<</Subtype/Link/Rect[108.0 644.4 258.3 657.4]/Border[0 0 0]/Dest[1166 0 R/XYZ 0 208 0]>>endobj
-152 0 obj<</Subtype/Link/Rect[108.0 631.2 249.1 644.2]/Border[0 0 0]/Dest[1168 0 R/XYZ 0 203 0]>>endobj
-153 0 obj<</Subtype/Link/Rect[108.0 618.0 298.4 631.0]/Border[0 0 0]/Dest[1174 0 R/XYZ 0 547 0]>>endobj
-154 0 obj<</Subtype/Link/Rect[144.0 604.8 373.5 617.8]/Border[0 0 0]/Dest[1176 0 R/XYZ 0 560 0]>>endobj
-155 0 obj<</Subtype/Link/Rect[144.0 591.6 447.7 604.6]/Border[0 0 0]/Dest[1176 0 R/XYZ 0 126 0]>>endobj
-156 0 obj<</Subtype/Link/Rect[108.0 578.4 436.5 591.4]/Border[0 0 0]/Dest[1184 0 R/XYZ 0 135 0]>>endobj
-157 0 obj<</Subtype/Link/Rect[72.0 552.0 518.1 565.0]/Border[0 0 0]/Dest[1190 0 R/XYZ 0 734 0]>>endobj
-158 0 obj<</Subtype/Link/Rect[108.0 538.8 224.7 551.8]/Border[0 0 0]/Dest[1190 0 R/XYZ 0 672 0]>>endobj
-159 0 obj<</Subtype/Link/Rect[108.0 525.6 186.5 538.6]/Border[0 0 0]/Dest[1190 0 R/XYZ 0 597 0]>>endobj
-160 0 obj<</Subtype/Link/Rect[108.0 512.4 364.6 525.4]/Border[0 0 0]/Dest[1190 0 R/XYZ 0 225 0]>>endobj
-161 0 obj<</Subtype/Link/Rect[144.0 499.2 405.8 512.2]/Border[0 0 0]/Dest[1192 0 R/XYZ 0 734 0]>>endobj
-162 0 obj<</Subtype/Link/Rect[144.0 486.0 292.5 499.0]/Border[0 0 0]/Dest[1192 0 R/XYZ 0 609 0]>>endobj
-163 0 obj<</Subtype/Link/Rect[108.0 472.8 331.3 485.8]/Border[0 0 0]/Dest[1192 0 R/XYZ 0 524 0]>>endobj
-164 0 obj<</Subtype/Link/Rect[108.0 459.6 273.6 472.6]/Border[0 0 0]/Dest[1192 0 R/XYZ 0 383 0]>>endobj
-165 0 obj<</Subtype/Link/Rect[144.0 446.4 351.1 459.4]/Border[0 0 0]/Dest[1194 0 R/XYZ 0 665 0]>>endobj
-166 0 obj<</Subtype/Link/Rect[72.0 420.0 484.2 433.0]/Border[0 0 0]/Dest[1196 0 R/XYZ 0 734 0]>>endobj
-167 0 obj<</Subtype/Link/Rect[108.0 406.8 168.2 419.8]/Border[0 0 0]/Dest[1196 0 R/XYZ 0 672 0]>>endobj
-168 0 obj<</Subtype/Link/Rect[108.0 393.6 187.1 406.6]/Border[0 0 0]/Dest[1196 0 R/XYZ 0 412 0]>>endobj
-169 0 obj<</Subtype/Link/Rect[108.0 380.4 245.2 393.4]/Border[0 0 0]/Dest[1198 0 R/XYZ 0 573 0]>>endobj
-170 0 obj<</Subtype/Link/Rect[108.0 367.2 384.2 380.2]/Border[0 0 0]/Dest[1198 0 R/XYZ 0 471 0]>>endobj
-171 0 obj<</Subtype/Link/Rect[108.0 354.0 273.0 367.0]/Border[0 0 0]/Dest[1200 0 R/XYZ 0 734 0]>>endobj
-172 0 obj<</Subtype/Link/Rect[144.0 340.8 291.6 353.8]/Border[0 0 0]/Dest[1200 0 R/XYZ 0 700 0]>>endobj
-173 0 obj<</Subtype/Link/Rect[144.0 327.6 263.5 340.6]/Border[0 0 0]/Dest[1200 0 R/XYZ 0 143 0]>>endobj
-174 0 obj<</Subtype/Link/Rect[108.0 314.4 287.0 327.4]/Border[0 0 0]/Dest[1202 0 R/XYZ 0 243 0]>>endobj
-175 0 obj<</Subtype/Link/Rect[108.0 301.2 256.2 314.2]/Border[0 0 0]/Dest[1204 0 R/XYZ 0 718 0]>>endobj
-176 0 obj<</Subtype/Link/Rect[108.0 288.0 330.7 301.0]/Border[0 0 0]/Dest[1204 0 R/XYZ 0 336 0]>>endobj
-177 0 obj<</Subtype/Link/Rect[108.0 274.8 324.3 287.8]/Border[0 0 0]/Dest[1206 0 R/XYZ 0 322 0]>>endobj
-178 0 obj<</Subtype/Link/Rect[108.0 261.6 185.9 274.6]/Border[0 0 0]/Dest[1208 0 R/XYZ 0 492 0]>>endobj
-179 0 obj<</Subtype/Link/Rect[72.0 235.2 268.2 248.2]/Border[0 0 0]/Dest[1210 0 R/XYZ 0 734 0]>>endobj
-180 0 obj<</Subtype/Link/Rect[108.0 222.0 231.7 235.0]/Border[0 0 0]/Dest[1210 0 R/XYZ 0 696 0]>>endobj
-181 0 obj<</Subtype/Link/Rect[108.0 208.8 253.4 221.8]/Border[0 0 0]/Dest[1210 0 R/XYZ 0 515 0]>>endobj
-182 0 obj<</Subtype/Link/Rect[108.0 195.6 216.8 208.6]/Border[0 0 0]/Dest[1210 0 R/XYZ 0 137 0]>>endobj
-183 0 obj<</Subtype/Link/Rect[108.0 182.4 241.5 195.4]/Border[0 0 0]/Dest[1212 0 R/XYZ 0 533 0]>>endobj
-184 0 obj<</Subtype/Link/Rect[144.0 169.2 354.8 182.2]/Border[0 0 0]/Dest[1212 0 R/XYZ 0 273 0]>>endobj
-185 0 obj<</Subtype/Link/Rect[108.0 156.0 245.8 169.0]/Border[0 0 0]/Dest[1218 0 R/XYZ 0 560 0]>>endobj
-186 0 obj<</Subtype/Link/Rect[108.0 142.8 315.8 155.8]/Border[0 0 0]/Dest[1220 0 R/XYZ 0 613 0]>>endobj
-187 0 obj<</Subtype/Link/Rect[108.0 129.6 290.1 142.6]/Border[0 0 0]/Dest[1222 0 R/XYZ 0 622 0]>>endobj
-188 0 obj<</Subtype/Link/Rect[108.0 116.4 270.5 129.4]/Border[0 0 0]/Dest[1222 0 R/XYZ 0 266 0]>>endobj
-189 0 obj<</Subtype/Link/Rect[108.0 103.2 281.8 116.2]/Border[0 0 0]/Dest[1224 0 R/XYZ 0 520 0]>>endobj
-190 0 obj<</Subtype/Link/Rect[108.0 90.0 276.6 103.0]/Border[0 0 0]/Dest[1226 0 R/XYZ 0 734 0]>>endobj
-191 0 obj<</Subtype/Link/Rect[108.0 76.8 221.7 89.8]/Border[0 0 0]/Dest[1226 0 R/XYZ 0 645 0]>>endobj
-192 0 obj[148 0 R
-149 0 R
-150 0 R
-151 0 R
-152 0 R
-153 0 R
-154 0 R
-155 0 R
+]endobj
+144 0 obj<</S/URI/URI(mailto:jtrostel@snapserver.com)>>endobj
+145 0 obj<</Subtype/Link/Rect[200.6 255.4 310.1 268.4]/Border[0 0 0]/A 144 0 R>>endobj
+146 0 obj[145 0 R
+]endobj
+147 0 obj<</S/URI/URI(http://samba.org/)>>endobj
+148 0 obj<</Subtype/Link/Rect[196.9 345.8 308.1 358.8]/Border[0 0 0]/A 147 0 R>>endobj
+149 0 obj[148 0 R
+]endobj
+150 0 obj<</S/URI/URI(winbindd.8.html)>>endobj
+151 0 obj<</Subtype/Link/Rect[311.8 63.0 366.1 76.0]/Border[0 0 0]/A 150 0 R>>endobj
+152 0 obj[151 0 R
+]endobj
+153 0 obj<</S/URI/URI(#WINBINDSEPARATOR)>>endobj
+154 0 obj<</Subtype/Link/Rect[100.0 663.2 191.8 674.2]/Border[0 0 0]/A 153 0 R>>endobj
+155 0 obj<</S/URI/URI(#WINBINDUID)>>endobj
+156 0 obj<</Subtype/Link/Rect[100.0 641.6 159.4 652.6]/Border[0 0 0]/A 155 0 R>>endobj
+157 0 obj<</S/URI/URI(#WINBINDGID)>>endobj
+158 0 obj<</Subtype/Link/Rect[100.0 620.0 159.4 631.0]/Border[0 0 0]/A 157 0 R>>endobj
+159 0 obj<</S/URI/URI(#WINBINDENUMUSERS)>>endobj
+160 0 obj<</Subtype/Link/Rect[100.0 598.4 197.2 609.4]/Border[0 0 0]/A 159 0 R>>endobj
+161 0 obj<</S/URI/URI(#WINBINDENUMGROUP)>>endobj
+162 0 obj<</Subtype/Link/Rect[100.0 587.6 202.6 598.6]/Border[0 0 0]/A 161 0 R>>endobj
+163 0 obj<</S/URI/URI(#TEMPLATEHOMEDIR)>>endobj
+164 0 obj<</Subtype/Link/Rect[100.0 566.0 186.4 577.0]/Border[0 0 0]/A 163 0 R>>endobj
+165 0 obj<</S/URI/URI(#TEMPLATESHELL)>>endobj
+166 0 obj<</Subtype/Link/Rect[100.0 555.2 175.6 566.2]/Border[0 0 0]/A 165 0 R>>endobj
+167 0 obj[154 0 R
 156 0 R
-157 0 R
 158 0 R
-159 0 R
 160 0 R
-161 0 R
 162 0 R
-163 0 R
 164 0 R
-165 0 R
 166 0 R
-167 0 R
-168 0 R
-169 0 R
-170 0 R
+]endobj
+168 0 obj<</S/URI/URI(smb.conf.5.html)>>endobj
+169 0 obj<</Subtype/Link/Rect[182.3 603.4 254.9 616.4]/Border[0 0 0]/A 168 0 R>>endobj
+170 0 obj<</S/URI/URI(ENCRYPTION.html)>>endobj
+171 0 obj<</Subtype/Link/Rect[334.9 603.4 418.9 616.4]/Border[0 0 0]/A 170 0 R>>endobj
+172 0 obj<</S/URI/URI(UNIX_INSTALL.html)>>endobj
+173 0 obj<</Subtype/Link/Rect[339.0 439.4 443.5 452.4]/Border[0 0 0]/A 172 0 R>>endobj
+174 0 obj<</S/URI/URI(smb.conf.5.html)>>endobj
+175 0 obj<</Subtype/Link/Rect[445.9 426.2 544.6 439.2]/Border[0 0 0]/A 174 0 R>>endobj
+176 0 obj[169 0 R
 171 0 R
-172 0 R
 173 0 R
-174 0 R
 175 0 R
-176 0 R
-177 0 R
-178 0 R
-179 0 R
+]endobj
+177 0 obj<</S/URI/URI(smb.conf.5.html)>>endobj
+178 0 obj<</Subtype/Link/Rect[468.3 636.2 549.6 649.2]/Border[0 0 0]/A 177 0 R>>endobj
+179 0 obj<</S/URI/URI(smb.conf.5.html)>>endobj
+180 0 obj<</Subtype/Link/Rect[72.0 623.0 92.8 636.0]/Border[0 0 0]/A 179 0 R>>endobj
+181 0 obj<</S/URI/URI(#NETBIOSNAME)>>endobj
+182 0 obj<</Subtype/Link/Rect[94.6 549.6 159.4 560.6]/Border[0 0 0]/A 181 0 R>>endobj
+183 0 obj<</S/URI/URI(#WORKGROUP)>>endobj
+184 0 obj<</Subtype/Link/Rect[94.6 538.8 143.2 549.8]/Border[0 0 0]/A 183 0 R>>endobj
+185 0 obj<</S/URI/URI(#OSLEVEL)>>endobj
+186 0 obj<</Subtype/Link/Rect[94.6 506.4 137.8 517.4]/Border[0 0 0]/A 185 0 R>>endobj
+187 0 obj<</S/URI/URI(#PERFERREDMASTER)>>endobj
+188 0 obj<</Subtype/Link/Rect[94.6 495.6 181.0 506.6]/Border[0 0 0]/A 187 0 R>>endobj
+189 0 obj<</S/URI/URI(#DOMAINMASTER)>>endobj
+190 0 obj<</Subtype/Link/Rect[94.6 484.8 164.8 495.8]/Border[0 0 0]/A 189 0 R>>endobj
+191 0 obj<</S/URI/URI(#LOCALMASTER)>>endobj
+192 0 obj<</Subtype/Link/Rect[94.6 474.0 159.4 485.0]/Border[0 0 0]/A 191 0 R>>endobj
+193 0 obj<</S/URI/URI(#SECURITYEQUALSUSER)>>endobj
+194 0 obj<</Subtype/Link/Rect[94.6 441.6 137.8 452.6]/Border[0 0 0]/A 193 0 R>>endobj
+195 0 obj<</S/URI/URI(#ENCRYPTPASSWORDS)>>endobj
+196 0 obj<</Subtype/Link/Rect[94.6 409.2 186.4 420.2]/Border[0 0 0]/A 195 0 R>>endobj
+197 0 obj<</S/URI/URI(#DOMAINLOGONS)>>endobj
+198 0 obj<</Subtype/Link/Rect[94.6 376.8 164.8 387.8]/Border[0 0 0]/A 197 0 R>>endobj
+199 0 obj<</S/URI/URI(#LOGONPATH)>>endobj
+200 0 obj<</Subtype/Link/Rect[94.6 344.4 148.6 355.4]/Border[0 0 0]/A 199 0 R>>endobj
+201 0 obj<</S/URI/URI(#LOGONDRIVE)>>endobj
+202 0 obj<</Subtype/Link/Rect[94.6 301.2 154.0 312.2]/Border[0 0 0]/A 201 0 R>>endobj
+203 0 obj<</S/URI/URI(#LOGONHOME)>>endobj
+204 0 obj<</Subtype/Link/Rect[94.6 290.4 148.6 301.4]/Border[0 0 0]/A 203 0 R>>endobj
+205 0 obj<</S/URI/URI(#LOGONSCRIPT)>>endobj
+206 0 obj<</Subtype/Link/Rect[94.6 247.2 159.4 258.2]/Border[0 0 0]/A 205 0 R>>endobj
+207 0 obj<</S/URI/URI(#PATH)>>endobj
+208 0 obj<</Subtype/Link/Rect[94.6 204.0 116.2 215.0]/Border[0 0 0]/A 207 0 R>>endobj
+209 0 obj<</S/URI/URI(#READONLY)>>endobj
+210 0 obj<</Subtype/Link/Rect[94.6 193.2 143.2 204.2]/Border[0 0 0]/A 209 0 R>>endobj
+211 0 obj<</S/URI/URI(#WRITELIST)>>endobj
+212 0 obj<</Subtype/Link/Rect[94.6 182.4 148.6 193.4]/Border[0 0 0]/A 211 0 R>>endobj
+213 0 obj<</S/URI/URI(#PATH)>>endobj
+214 0 obj<</Subtype/Link/Rect[94.6 139.2 116.2 150.2]/Border[0 0 0]/A 213 0 R>>endobj
+215 0 obj<</S/URI/URI(#READONLY)>>endobj
+216 0 obj<</Subtype/Link/Rect[94.6 128.4 143.2 139.4]/Border[0 0 0]/A 215 0 R>>endobj
+217 0 obj<</S/URI/URI(#CREATEMASK)>>endobj
+218 0 obj<</Subtype/Link/Rect[94.6 117.6 154.0 128.6]/Border[0 0 0]/A 217 0 R>>endobj
+219 0 obj<</S/URI/URI(#DIRECTORYMASK)>>endobj
+220 0 obj<</Subtype/Link/Rect[94.6 106.8 170.2 117.8]/Border[0 0 0]/A 219 0 R>>endobj
+221 0 obj[178 0 R
 180 0 R
-181 0 R
 182 0 R
-183 0 R
 184 0 R
-185 0 R
 186 0 R
-187 0 R
 188 0 R
-189 0 R
 190 0 R
-191 0 R]endobj
-193 0 obj<</Subtype/Link/Rect[72.0 684.0 255.6 697.0]/Border[0 0 0]/Dest[1228 0 R/XYZ 0 734 0]>>endobj
-194 0 obj<</Subtype/Link/Rect[108.0 670.8 190.8 683.8]/Border[0 0 0]/Dest[1228 0 R/XYZ 0 696 0]>>endobj
-195 0 obj<</Subtype/Link/Rect[108.0 657.6 169.4 670.6]/Border[0 0 0]/Dest[1228 0 R/XYZ 0 449 0]>>endobj
-196 0 obj<</Subtype/Link/Rect[144.0 644.4 220.4 657.4]/Border[0 0 0]/Dest[1228 0 R/XYZ 0 416 0]>>endobj
-197 0 obj<</Subtype/Link/Rect[144.0 631.2 247.0 644.2]/Border[0 0 0]/Dest[1228 0 R/XYZ 0 146 0]>>endobj
-198 0 obj<</Subtype/Link/Rect[144.0 618.0 346.3 631.0]/Border[0 0 0]/Dest[1230 0 R/XYZ 0 652 0]>>endobj
-199 0 obj<</Subtype/Link/Rect[108.0 604.8 197.8 617.8]/Border[0 0 0]/Dest[1230 0 R/XYZ 0 515 0]>>endobj
-200 0 obj<</Subtype/Link/Rect[108.0 591.6 175.2 604.6]/Border[0 0 0]/Dest[1230 0 R/XYZ 0 255 0]>>endobj
-201 0 obj<</Subtype/Link/Rect[108.0 578.4 175.8 591.4]/Border[0 0 0]/Dest[1232 0 R/XYZ 0 718 0]>>endobj
-202 0 obj<</Subtype/Link/Rect[108.0 565.2 169.4 578.2]/Border[0 0 0]/Dest[1232 0 R/XYZ 0 537 0]>>endobj
-203 0 obj<</Subtype/Link/Rect[108.0 552.0 189.3 565.0]/Border[0 0 0]/Dest[1232 0 R/XYZ 0 409 0]>>endobj
-204 0 obj<</Subtype/Link/Rect[108.0 538.8 174.6 551.8]/Border[0 0 0]/Dest[1232 0 R/XYZ 0 189 0]>>endobj
-205 0 obj<</Subtype/Link/Rect[108.0 525.6 180.1 538.6]/Border[0 0 0]/Dest[1234 0 R/XYZ 0 734 0]>>endobj
-206 0 obj<</Subtype/Link/Rect[108.0 512.4 180.1 525.4]/Border[0 0 0]/Dest[1234 0 R/XYZ 0 645 0]>>endobj
-207 0 obj<</Subtype/Link/Rect[108.0 499.2 182.5 512.2]/Border[0 0 0]/Dest[1234 0 R/XYZ 0 477 0]>>endobj
-208 0 obj<</Subtype/Link/Rect[108.0 486.0 208.2 499.0]/Border[0 0 0]/Dest[1234 0 R/XYZ 0 349 0]>>endobj
-209 0 obj<</Subtype/Link/Rect[108.0 472.8 217.4 485.8]/Border[0 0 0]/Dest[1234 0 R/XYZ 0 129 0]>>endobj
-210 0 obj<</Subtype/Link/Rect[108.0 459.6 194.8 472.6]/Border[0 0 0]/Dest[1236 0 R/XYZ 0 639 0]>>endobj
-211 0 obj<</Subtype/Link/Rect[108.0 446.4 194.2 459.4]/Border[0 0 0]/Dest[1236 0 R/XYZ 0 511 0]>>endobj
-212 0 obj<</Subtype/Link/Rect[108.0 433.2 196.0 446.2]/Border[0 0 0]/Dest[1236 0 R/XYZ 0 436 0]>>endobj
-213 0 obj<</Subtype/Link/Rect[108.0 420.0 188.7 433.0]/Border[0 0 0]/Dest[1238 0 R/XYZ 0 388 0]>>endobj
-214 0 obj<</Subtype/Link/Rect[72.0 393.6 228.8 406.6]/Border[0 0 0]/Dest[1240 0 R/XYZ 0 734 0]>>endobj
-215 0 obj<</Subtype/Link/Rect[108.0 380.4 159.0 393.4]/Border[0 0 0]/Dest[1240 0 R/XYZ 0 696 0]>>endobj
-216 0 obj<</Subtype/Link/Rect[144.0 367.2 532.3 380.2]/Border[0 0 0]/Dest[1240 0 R/XYZ 0 663 0]>>endobj
-217 0 obj<</Subtype/Link/Rect[144.0 354.0 499.9 367.0]/Border[0 0 0]/Dest[1240 0 R/XYZ 0 323 0]>>endobj
-218 0 obj<</Subtype/Link/Rect[144.0 340.8 181.6 353.8]/Border[0 0 0]/Dest[1240 0 R/XYZ 0 323 0]>>endobj
-219 0 obj<</Subtype/Link/Rect[144.0 327.6 488.9 340.6]/Border[0 0 0]/Dest[1242 0 R/XYZ 0 734 0]>>endobj
-220 0 obj<</Subtype/Link/Rect[144.0 314.4 458.7 327.4]/Border[0 0 0]/Dest[1242 0 R/XYZ 0 619 0]>>endobj
-221 0 obj<</Subtype/Link/Rect[72.0 288.0 342.4 301.0]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 734 0]>>endobj
-222 0 obj<</Subtype/Link/Rect[108.0 274.8 187.1 287.8]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 672 0]>>endobj
-223 0 obj<</Subtype/Link/Rect[108.0 261.6 247.6 274.6]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 557 0]>>endobj
-224 0 obj<</Subtype/Link/Rect[144.0 248.4 266.8 261.4]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 469 0]>>endobj
-225 0 obj<</Subtype/Link/Rect[144.0 235.2 241.8 248.2]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 358 0]>>endobj
-226 0 obj<</Subtype/Link/Rect[72.0 208.8 204.0 221.8]/Border[0 0 0]/Dest[1248 0 R/XYZ 0 734 0]>>endobj
-227 0 obj<</Subtype/Link/Rect[108.0 195.6 187.1 208.6]/Border[0 0 0]/Dest[1248 0 R/XYZ 0 696 0]>>endobj
-228 0 obj<</Subtype/Link/Rect[108.0 182.4 188.0 195.4]/Border[0 0 0]/Dest[1248 0 R/XYZ 0 436 0]>>endobj
-229 0 obj<</Subtype/Link/Rect[108.0 169.2 190.5 182.2]/Border[0 0 0]/Dest[1248 0 R/XYZ 0 295 0]>>endobj
-230 0 obj<</Subtype/Link/Rect[108.0 156.0 195.4 169.0]/Border[0 0 0]/Dest[1250 0 R/XYZ 0 639 0]>>endobj
-231 0 obj<</Subtype/Link/Rect[108.0 142.8 267.8 155.8]/Border[0 0 0]/Dest[1250 0 R/XYZ 0 287 0]>>endobj
-232 0 obj<</Subtype/Link/Rect[108.0 129.6 166.4 142.6]/Border[0 0 0]/Dest[1250 0 R/XYZ 0 185 0]>>endobj
-233 0 obj[193 0 R
+192 0 R
 194 0 R
-195 0 R
 196 0 R
-197 0 R
 198 0 R
-199 0 R
 200 0 R
-201 0 R
 202 0 R
-203 0 R
 204 0 R
-205 0 R
 206 0 R
-207 0 R
 208 0 R
-209 0 R
 210 0 R
-211 0 R
 212 0 R
-213 0 R
 214 0 R
-215 0 R
 216 0 R
-217 0 R
 218 0 R
-219 0 R
 220 0 R
-221 0 R
-222 0 R
-223 0 R
-224 0 R
+]endobj
+222 0 obj<</S/URI/URI(ENCRYPTION.html)>>endobj
+223 0 obj<</Subtype/Link/Rect[108.0 707.8 200.6 720.8]/Border[0 0 0]/A 222 0 R>>endobj
+224 0 obj<</S/URI/URI(#DOMAINADMINGROUP)>>endobj
+225 0 obj<</Subtype/Link/Rect[497.0 615.4 530.0 628.4]/Border[0 0 0]/A 224 0 R>>endobj
+226 0 obj<</S/URI/URI(#DOMAINADMINGROUP)>>endobj
+227 0 obj<</Subtype/Link/Rect[72.0 602.2 127.9 615.2]/Border[0 0 0]/A 226 0 R>>endobj
+228 0 obj[223 0 R
 225 0 R
-226 0 R
 227 0 R
-228 0 R
-229 0 R
-230 0 R
-231 0 R
-232 0 R]endobj
-234 0 obj<</S/URI/URI(http://www.samba.org/)>>endobj
-235 0 obj<</Subtype/Link/Rect[185.6 631.0 289.8 644.0]/Border[0 0 0]/A 234 0 R>>endobj
-236 0 obj<</S/URI/URI(mailto:jerry@samba.org)>>endobj
-237 0 obj<</Subtype/Link/Rect[72.0 617.8 148.4 630.8]/Border[0 0 0]/A 236 0 R>>endobj
-238 0 obj<</S/URI/URI(http://www.fsf.org/licenses/gpl.txt)>>endobj
-239 0 obj<</Subtype/Link/Rect[72.0 565.0 223.3 578.0]/Border[0 0 0]/A 238 0 R>>endobj
-240 0 obj<</Subtype/Link/Rect[80.2 499.0 223.9 512.0]/Border[0 0 0]/Dest[1034 0 R/XYZ 0 734 0]>>endobj
-241 0 obj<</Subtype/Link/Rect[124.5 485.8 249.8 498.8]/Border[0 0 0]/Dest[1034 0 R/XYZ 0 696 0]>>endobj
-242 0 obj<</Subtype/Link/Rect[124.5 472.6 255.0 485.6]/Border[0 0 0]/Dest[1034 0 R/XYZ 0 568 0]>>endobj
-243 0 obj<</Subtype/Link/Rect[124.5 459.4 258.3 472.4]/Border[0 0 0]/Dest[1034 0 R/XYZ 0 163 0]>>endobj
-244 0 obj<</Subtype/Link/Rect[124.5 446.2 309.7 459.2]/Border[0 0 0]/Dest[1036 0 R/XYZ 0 734 0]>>endobj
-245 0 obj<</Subtype/Link/Rect[124.5 433.0 312.7 446.0]/Border[0 0 0]/Dest[1036 0 R/XYZ 0 385 0]>>endobj
-246 0 obj<</Subtype/Link/Rect[124.5 419.8 284.9 432.8]/Border[0 0 0]/Dest[1036 0 R/XYZ 0 283 0]>>endobj
-247 0 obj<</Subtype/Link/Rect[168.8 406.6 316.0 419.6]/Border[0 0 0]/Dest[1036 0 R/XYZ 0 129 0]>>endobj
-248 0 obj<</Subtype/Link/Rect[168.8 393.4 366.4 406.4]/Border[0 0 0]/Dest[1038 0 R/XYZ 0 303 0]>>endobj
-249 0 obj<</Subtype/Link/Rect[124.5 380.2 364.7 393.2]/Border[0 0 0]/Dest[1040 0 R/XYZ 0 718 0]>>endobj
-250 0 obj<</Subtype/Link/Rect[124.5 367.0 313.9 380.0]/Border[0 0 0]/Dest[1040 0 R/XYZ 0 551 0]>>endobj
-251 0 obj<</Subtype/Link/Rect[124.5 353.8 500.6 366.8]/Border[0 0 0]/Dest[1040 0 R/XYZ 0 383 0]>>endobj
-252 0 obj<</Subtype/Link/Rect[130.0 340.6 257.3 353.6]/Border[0 0 0]/Dest[1040 0 R/XYZ 0 169 0]>>endobj
-253 0 obj<</Subtype/Link/Rect[174.2 327.4 273.2 340.4]/Border[0 0 0]/Dest[1042 0 R/XYZ 0 652 0]>>endobj
-254 0 obj<</Subtype/Link/Rect[174.2 314.2 221.9 327.2]/Border[0 0 0]/Dest[1042 0 R/XYZ 0 594 0]>>endobj
-255 0 obj<</Subtype/Link/Rect[174.2 301.0 303.2 314.0]/Border[0 0 0]/Dest[1042 0 R/XYZ 0 509 0]>>endobj
-256 0 obj<</Subtype/Link/Rect[174.2 287.8 331.6 300.8]/Border[0 0 0]/Dest[1042 0 R/XYZ 0 200 0]>>endobj
-257 0 obj<</Subtype/Link/Rect[174.2 274.6 212.4 287.6]/Border[0 0 0]/Dest[1044 0 R/XYZ 0 734 0]>>endobj
-258 0 obj<</Subtype/Link/Rect[174.2 261.4 269.0 274.4]/Border[0 0 0]/Dest[1044 0 R/XYZ 0 279 0]>>endobj
-259 0 obj<</Subtype/Link/Rect[80.2 248.2 219.0 261.2]/Border[0 0 0]/Dest[1046 0 R/XYZ 0 734 0]>>endobj
-260 0 obj<</Subtype/Link/Rect[124.5 235.0 182.2 248.0]/Border[0 0 0]/Dest[1046 0 R/XYZ 0 696 0]>>endobj
-261 0 obj<</Subtype/Link/Rect[124.5 221.8 182.9 234.8]/Border[0 0 0]/Dest[1046 0 R/XYZ 0 529 0]>>endobj
-262 0 obj<</Subtype/Link/Rect[124.5 208.6 149.9 221.6]/Border[0 0 0]/Dest[1046 0 R/XYZ 0 173 0]>>endobj
-263 0 obj<</Subtype/Link/Rect[168.8 195.4 198.1 208.4]/Border[0 0 0]/Dest[1046 0 R/XYZ 0 139 0]>>endobj
-264 0 obj<</Subtype/Link/Rect[168.8 182.2 198.1 195.2]/Border[0 0 0]/Dest[1048 0 R/XYZ 0 705 0]>>endobj
-265 0 obj<</Subtype/Link/Rect[168.8 169.0 198.1 182.0]/Border[0 0 0]/Dest[1048 0 R/XYZ 0 501 0]>>endobj
-266 0 obj<</Subtype/Link/Rect[168.8 155.8 198.1 168.8]/Border[0 0 0]/Dest[1050 0 R/XYZ 0 586 0]>>endobj
-267 0 obj<</Subtype/Link/Rect[168.8 142.6 198.1 155.6]/Border[0 0 0]/Dest[1050 0 R/XYZ 0 435 0]>>endobj
-268 0 obj<</Subtype/Link/Rect[168.8 129.4 198.1 142.4]/Border[0 0 0]/Dest[1050 0 R/XYZ 0 311 0]>>endobj
-269 0 obj<</Subtype/Link/Rect[168.8 116.2 198.1 129.2]/Border[0 0 0]/Dest[1052 0 R/XYZ 0 718 0]>>endobj
-270 0 obj<</Subtype/Link/Rect[168.8 103.0 198.1 116.0]/Border[0 0 0]/Dest[1052 0 R/XYZ 0 356 0]>>endobj
-271 0 obj<</Subtype/Link/Rect[168.8 89.8 198.1 102.8]/Border[0 0 0]/Dest[1054 0 R/XYZ 0 679 0]>>endobj
-272 0 obj<</Subtype/Link/Rect[174.2 76.6 209.1 89.6]/Border[0 0 0]/Dest[1054 0 R/XYZ 0 528 0]>>endobj
-273 0 obj<</Subtype/Link/Rect[174.2 63.4 209.1 76.4]/Border[0 0 0]/Dest[1054 0 R/XYZ 0 390 0]>>endobj
-274 0 obj[235 0 R
-237 0 R
-239 0 R
+]endobj
+229 0 obj<</S/URI/URI(smbpasswd.8.html)>>endobj
+230 0 obj<</Subtype/Link/Rect[72.0 524.2 138.6 537.2]/Border[0 0 0]/A 229 0 R>>endobj
+231 0 obj<</S/URI/URI(#ADDUSERSCRIPT)>>endobj
+232 0 obj<</Subtype/Link/Rect[422.7 203.0 486.9 216.0]/Border[0 0 0]/A 231 0 R>>endobj
+233 0 obj[230 0 R
+232 0 R
+]endobj
+234 0 obj<</S/URI/URI(http://www.microsoft.com/ntserver/management/deployment/planguide/prof_policies.asp)>>endobj
+235 0 obj<</Subtype/Link/Rect[164.2 636.2 409.3 649.2]/Border[0 0 0]/A 234 0 R>>endobj
+236 0 obj[235 0 R
+]endobj
+237 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/Softlib/MSLFILES/NEXUS.EXE)>>endobj
+238 0 obj<</Subtype/Link/Rect[287.9 721.0 540.0 734.0]/Border[0 0 0]/A 237 0 R>>endobj
+239 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/Softlib/MSLFILES/SRVTOOLS.EXE)>>endobj
+240 0 obj<</Subtype/Link/Rect[236.3 681.4 508.6 694.4]/Border[0 0 0]/A 239 0 R>>endobj
+241 0 obj<</S/URI/URI(http://www.tcpdump.org/)>>endobj
+242 0 obj<</Subtype/Link/Rect[352.1 266.6 458.1 279.6]/Border[0 0 0]/A 241 0 R>>endobj
+243 0 obj<</S/URI/URI(http://www.ethereal.com/)>>endobj
+244 0 obj<</Subtype/Link/Rect[430.0 253.4 539.4 266.4]/Border[0 0 0]/A 243 0 R>>endobj
+245 0 obj[238 0 R
 240 0 R
-241 0 R
 242 0 R
-243 0 R
 244 0 R
-245 0 R
-246 0 R
-247 0 R
-248 0 R
+]endobj
+246 0 obj<</S/URI/URI(http://samba.org)>>endobj
+247 0 obj<</Subtype/Link/Rect[236.3 338.2 310.8 351.2]/Border[0 0 0]/A 246 0 R>>endobj
+248 0 obj<</S/URI/URI(http://www.skippy.net/linux/smb-howto.html)>>endobj
+249 0 obj<</Subtype/Link/Rect[144.0 285.4 346.1 298.4]/Border[0 0 0]/A 248 0 R>>endobj
+250 0 obj<</S/URI/URI(http://bioserve.latrobe.edu.au/samba)>>endobj
+251 0 obj<</Subtype/Link/Rect[182.5 259.0 345.0 272.0]/Border[0 0 0]/A 250 0 R>>endobj
+252 0 obj<</S/URI/URI(http://samba.org/cifs/)>>endobj
+253 0 obj<</Subtype/Link/Rect[284.9 245.8 381.4 258.8]/Border[0 0 0]/A 252 0 R>>endobj
+254 0 obj<</S/URI/URI(http://mailhost.cb1.com/~lkcl/ntdom/)>>endobj
+255 0 obj<</Subtype/Link/Rect[244.2 232.6 411.2 245.6]/Border[0 0 0]/A 254 0 R>>endobj
+256 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/developr/drg/CIFS/)>>endobj
+257 0 obj<</Subtype/Link/Rect[280.3 219.4 471.9 232.4]/Border[0 0 0]/A 256 0 R>>endobj
+258 0 obj<</S/URI/URI(http://samba.org)>>endobj
+259 0 obj<</Subtype/Link/Rect[361.0 166.6 432.8 179.6]/Border[0 0 0]/A 258 0 R>>endobj
+260 0 obj<</S/URI/URI(http://www.samba-tng.org/)>>endobj
+261 0 obj<</Subtype/Link/Rect[301.1 127.0 425.6 140.0]/Border[0 0 0]/A 260 0 R>>endobj
+262 0 obj[247 0 R
 249 0 R
-250 0 R
 251 0 R
-252 0 R
 253 0 R
-254 0 R
 255 0 R
-256 0 R
 257 0 R
-258 0 R
 259 0 R
-260 0 R
 261 0 R
-262 0 R
-263 0 R
-264 0 R
-265 0 R
+]endobj
+263 0 obj<</S/URI/URI(http://lists.samba.org/)>>endobj
+264 0 obj<</Subtype/Link/Rect[135.5 351.4 227.8 364.4]/Border[0 0 0]/A 263 0 R>>endobj
+265 0 obj<</S/URI/URI(http://lists.samba.org/mailman/roster/samba-ntdom)>>endobj
+266 0 obj<</Subtype/Link/Rect[309.0 338.2 330.7 351.2]/Border[0 0 0]/A 265 0 R>>endobj
+267 0 obj[264 0 R
 266 0 R
-267 0 R
-268 0 R
-269 0 R
-270 0 R
-271 0 R
-272 0 R
-273 0 R]endobj
-275 0 obj<</Subtype/Link/Rect[124.5 721.0 222.0 734.0]/Border[0 0 0]/Dest[1054 0 R/XYZ 0 253 0]>>endobj
-276 0 obj<</Subtype/Link/Rect[80.2 707.8 289.9 720.8]/Border[0 0 0]/Dest[1056 0 R/XYZ 0 734 0]>>endobj
-277 0 obj<</Subtype/Link/Rect[124.5 694.6 160.9 707.6]/Border[0 0 0]/Dest[1056 0 R/XYZ 0 672 0]>>endobj
-278 0 obj<</Subtype/Link/Rect[124.5 681.4 325.9 694.4]/Border[0 0 0]/Dest[1056 0 R/XYZ 0 439 0]>>endobj
-279 0 obj<</Subtype/Link/Rect[171.5 668.2 237.5 681.2]/Border[0 0 0]/Dest[1056 0 R/XYZ 0 311 0]>>endobj
-280 0 obj<</Subtype/Link/Rect[171.5 655.0 277.1 668.0]/Border[0 0 0]/Dest[1058 0 R/XYZ 0 441 0]>>endobj
-281 0 obj<</Subtype/Link/Rect[171.5 641.8 263.9 654.8]/Border[0 0 0]/Dest[1058 0 R/XYZ 0 303 0]>>endobj
-282 0 obj<</Subtype/Link/Rect[171.5 628.6 290.3 641.6]/Border[0 0 0]/Dest[1058 0 R/XYZ 0 157 0]>>endobj
-283 0 obj<</Subtype/Link/Rect[124.5 615.4 378.7 628.4]/Border[0 0 0]/Dest[1060 0 R/XYZ 0 339 0]>>endobj
-284 0 obj<</Subtype/Link/Rect[168.8 602.2 289.1 615.2]/Border[0 0 0]/Dest[1062 0 R/XYZ 0 266 0]>>endobj
-285 0 obj<</Subtype/Link/Rect[168.8 589.0 255.8 602.0]/Border[0 0 0]/Dest[1064 0 R/XYZ 0 734 0]>>endobj
-286 0 obj<</Subtype/Link/Rect[168.8 575.8 221.3 588.8]/Border[0 0 0]/Dest[1066 0 R/XYZ 0 459 0]>>endobj
-287 0 obj<</Subtype/Link/Rect[168.8 562.6 228.0 575.6]/Border[0 0 0]/Dest[1066 0 R/XYZ 0 361 0]>>endobj
-288 0 obj<</Subtype/Link/Rect[168.8 549.4 232.9 562.4]/Border[0 0 0]/Dest[1066 0 R/XYZ 0 224 0]>>endobj
-289 0 obj<</Subtype/Link/Rect[124.5 536.2 523.3 549.2]/Border[0 0 0]/Dest[1068 0 R/XYZ 0 670 0]>>endobj
-290 0 obj<</Subtype/Link/Rect[124.5 523.0 495.4 536.0]/Border[0 0 0]/Dest[1068 0 R/XYZ 0 126 0]>>endobj
-291 0 obj<</Subtype/Link/Rect[168.8 509.8 388.1 522.8]/Border[0 0 0]/Dest[1072 0 R/XYZ 0 734 0]>>endobj
-292 0 obj<</Subtype/Link/Rect[168.8 496.6 450.1 509.6]/Border[0 0 0]/Dest[1072 0 R/XYZ 0 484 0]>>endobj
-293 0 obj<</Subtype/Link/Rect[168.8 483.4 371.6 496.4]/Border[0 0 0]/Dest[1072 0 R/XYZ 0 132 0]>>endobj
-294 0 obj<</Subtype/Link/Rect[124.5 470.2 181.6 483.2]/Border[0 0 0]/Dest[1074 0 R/XYZ 0 263 0]>>endobj
-295 0 obj<</Subtype/Link/Rect[80.2 457.0 396.2 470.0]/Border[0 0 0]/Dest[1076 0 R/XYZ 0 734 0]>>endobj
-296 0 obj<</Subtype/Link/Rect[124.5 443.8 201.8 456.8]/Border[0 0 0]/Dest[1076 0 R/XYZ 0 672 0]>>endobj
-297 0 obj<</Subtype/Link/Rect[124.5 430.6 244.9 443.6]/Border[0 0 0]/Dest[1078 0 R/XYZ 0 148 0]>>endobj
-298 0 obj<</Subtype/Link/Rect[124.5 417.4 268.4 430.4]/Border[0 0 0]/Dest[1080 0 R/XYZ 0 705 0]>>endobj
-299 0 obj<</Subtype/Link/Rect[80.2 404.2 344.5 417.2]/Border[0 0 0]/Dest[1082 0 R/XYZ 0 734 0]>>endobj
-300 0 obj<</Subtype/Link/Rect[124.5 391.0 179.8 404.0]/Border[0 0 0]/Dest[1082 0 R/XYZ 0 672 0]>>endobj
-301 0 obj<</Subtype/Link/Rect[168.8 377.8 196.6 390.8]/Border[0 0 0]/Dest[1084 0 R/XYZ 0 652 0]>>endobj
-302 0 obj<</Subtype/Link/Rect[80.2 364.6 352.5 377.6]/Border[0 0 0]/Dest[1086 0 R/XYZ 0 734 0]>>endobj
-303 0 obj<</Subtype/Link/Rect[124.5 351.4 441.7 364.4]/Border[0 0 0]/Dest[1086 0 R/XYZ 0 672 0]>>endobj
-304 0 obj<</Subtype/Link/Rect[124.5 338.2 318.5 351.2]/Border[0 0 0]/Dest[1086 0 R/XYZ 0 497 0]>>endobj
-305 0 obj<</Subtype/Link/Rect[124.5 325.0 228.7 338.0]/Border[0 0 0]/Dest[1086 0 R/XYZ 0 330 0]>>endobj
-306 0 obj<</Subtype/Link/Rect[124.5 311.8 291.0 324.8]/Border[0 0 0]/Dest[1088 0 R/XYZ 0 665 0]>>endobj
-307 0 obj<</Subtype/Link/Rect[168.8 298.6 245.8 311.6]/Border[0 0 0]/Dest[1088 0 R/XYZ 0 432 0]>>endobj
-308 0 obj<</Subtype/Link/Rect[168.8 285.4 270.8 298.4]/Border[0 0 0]/Dest[1088 0 R/XYZ 0 189 0]>>endobj
-309 0 obj<</Subtype/Link/Rect[124.5 272.2 300.2 285.2]/Border[0 0 0]/Dest[1090 0 R/XYZ 0 692 0]>>endobj
-310 0 obj<</Subtype/Link/Rect[124.5 259.0 397.0 272.0]/Border[0 0 0]/Dest[1090 0 R/XYZ 0 260 0]>>endobj
-311 0 obj<</Subtype/Link/Rect[124.5 245.8 387.3 258.8]/Border[0 0 0]/Dest[1094 0 R/XYZ 0 599 0]>>endobj
-312 0 obj<</Subtype/Link/Rect[80.2 232.6 225.4 245.6]/Border[0 0 0]/Dest[1096 0 R/XYZ 0 734 0]>>endobj
-313 0 obj<</Subtype/Link/Rect[124.5 219.4 182.2 232.4]/Border[0 0 0]/Dest[1096 0 R/XYZ 0 696 0]>>endobj
-314 0 obj<</Subtype/Link/Rect[124.5 206.2 189.6 219.2]/Border[0 0 0]/Dest[1096 0 R/XYZ 0 278 0]>>endobj
-315 0 obj<</Subtype/Link/Rect[168.8 193.0 248.8 206.0]/Border[0 0 0]/Dest[1098 0 R/XYZ 0 702 0]>>endobj
-316 0 obj<</Subtype/Link/Rect[168.8 179.8 331.6 192.8]/Border[0 0 0]/Dest[1100 0 R/XYZ 0 471 0]>>endobj
-317 0 obj<</Subtype/Link/Rect[168.8 166.6 325.8 179.6]/Border[0 0 0]/Dest[1102 0 R/XYZ 0 718 0]>>endobj
-318 0 obj<</Subtype/Link/Rect[168.8 153.4 381.4 166.4]/Border[0 0 0]/Dest[1102 0 R/XYZ 0 348 0]>>endobj
-319 0 obj<</Subtype/Link/Rect[168.8 140.2 281.8 153.2]/Border[0 0 0]/Dest[1104 0 R/XYZ 0 734 0]>>endobj
-320 0 obj<</Subtype/Link/Rect[124.5 127.0 218.9 140.0]/Border[0 0 0]/Dest[1104 0 R/XYZ 0 556 0]>>endobj
-321 0 obj<</Subtype/Link/Rect[168.8 113.8 250.3 126.8]/Border[0 0 0]/Dest[1104 0 R/XYZ 0 455 0]>>endobj
-322 0 obj<</Subtype/Link/Rect[168.8 100.6 322.1 113.6]/Border[0 0 0]/Dest[1104 0 R/XYZ 0 330 0]>>endobj
-323 0 obj<</Subtype/Link/Rect[168.8 87.4 258.3 100.4]/Border[0 0 0]/Dest[1104 0 R/XYZ 0 245 0]>>endobj
-324 0 obj<</Subtype/Link/Rect[168.8 74.2 271.1 87.2]/Border[0 0 0]/Dest[1104 0 R/XYZ 0 147 0]>>endobj
-325 0 obj<</Subtype/Link/Rect[124.5 61.0 299.0 63.0]/Border[0 0 0]/Dest[1106 0 R/XYZ 0 267 0]>>endobj
-326 0 obj[275 0 R
+]endobj
+268 0 obj<</S/URI/URI(Samba-PDC-HOWTO.html)>>endobj
+269 0 obj<</Subtype/Link/Rect[213.2 616.6 317.8 629.6]/Border[0 0 0]/A 268 0 R>>endobj
+270 0 obj[269 0 R
+]endobj
+271 0 obj<</S/URI/URI(http://www.openldap.org/)>>endobj
+272 0 obj<</Subtype/Link/Rect[172.3 563.8 285.9 576.8]/Border[0 0 0]/A 271 0 R>>endobj
+273 0 obj<</S/URI/URI(http://iplanet.netscape.com/directory)>>endobj
+274 0 obj<</Subtype/Link/Rect[226.6 550.6 387.9 563.6]/Border[0 0 0]/A 273 0 R>>endobj
+275 0 obj<</S/URI/URI(http://www.ora.com/)>>endobj
+276 0 obj<</Subtype/Link/Rect[115.4 524.2 202.0 537.2]/Border[0 0 0]/A 275 0 R>>endobj
+277 0 obj<</S/URI/URI(http://www.unav.es/cti/ldap-smb/ldap-smb-2_2-howto.html)>>endobj
+278 0 obj<</Subtype/Link/Rect[127.9 458.2 267.5 471.2]/Border[0 0 0]/A 277 0 R>>endobj
+279 0 obj<</S/URI/URI(http://samba.idealx.org/)>>endobj
+280 0 obj<</Subtype/Link/Rect[246.4 445.0 287.3 458.0]/Border[0 0 0]/A 279 0 R>>endobj
+281 0 obj<</S/URI/URI(#ENCRYPTPASSWORDS)>>endobj
+282 0 obj<</Subtype/Link/Rect[215.6 360.2 332.5 373.2]/Border[0 0 0]/A 281 0 R>>endobj
+283 0 obj[272 0 R
+274 0 R
 276 0 R
-277 0 R
 278 0 R
-279 0 R
 280 0 R
-281 0 R
 282 0 R
-283 0 R
-284 0 R
-285 0 R
-286 0 R
+]endobj
+284 0 obj<</S/URI/URI(http://www.padl.com/)>>endobj
+285 0 obj<</Subtype/Link/Rect[284.3 589.0 380.9 602.0]/Border[0 0 0]/A 284 0 R>>endobj
+286 0 obj<</S/URI/URI(samba-patches@samba.org)>>endobj
+287 0 obj<</Subtype/Link/Rect[335.0 464.6 458.0 477.6]/Border[0 0 0]/A 286 0 R>>endobj
+288 0 obj<</S/URI/URI(jerry@samba.org)>>endobj
+289 0 obj<</Subtype/Link/Rect[479.4 464.6 555.8 477.6]/Border[0 0 0]/A 288 0 R>>endobj
+290 0 obj<</S/URI/URI(jerry@samba.org)>>endobj
+291 0 obj<</Subtype/Link/Rect[273.9 223.8 350.4 236.8]/Border[0 0 0]/A 290 0 R>>endobj
+292 0 obj[285 0 R
 287 0 R
-288 0 R
 289 0 R
-290 0 R
 291 0 R
-292 0 R
-293 0 R
-294 0 R
-295 0 R
+]endobj
+293 0 obj<</S/URI/URI(#LDAPSSL)>>endobj
+294 0 obj<</Subtype/Link/Rect[108.0 651.4 141.3 664.4]/Border[0 0 0]/A 293 0 R>>endobj
+295 0 obj<</S/URI/URI(#LDAPSERVER)>>endobj
+296 0 obj<</Subtype/Link/Rect[108.0 638.2 156.6 651.2]/Border[0 0 0]/A 295 0 R>>endobj
+297 0 obj<</S/URI/URI(#LDAPADMINDN)>>endobj
+298 0 obj<</Subtype/Link/Rect[108.0 625.0 170.9 638.0]/Border[0 0 0]/A 297 0 R>>endobj
+299 0 obj<</S/URI/URI(#LDAPSUFFIX)>>endobj
+300 0 obj<</Subtype/Link/Rect[108.0 611.8 155.4 624.8]/Border[0 0 0]/A 299 0 R>>endobj
+301 0 obj<</S/URI/URI(#LDAPFILTER)>>endobj
+302 0 obj<</Subtype/Link/Rect[108.0 598.6 151.1 611.6]/Border[0 0 0]/A 301 0 R>>endobj
+303 0 obj<</S/URI/URI(#LDAPPORT)>>endobj
+304 0 obj<</Subtype/Link/Rect[108.0 585.4 147.4 598.4]/Border[0 0 0]/A 303 0 R>>endobj
+305 0 obj<</S/URI/URI(smb.conf.5.html)>>endobj
+306 0 obj<</Subtype/Link/Rect[189.6 559.0 243.1 572.0]/Border[0 0 0]/A 305 0 R>>endobj
+307 0 obj[294 0 R
 296 0 R
-297 0 R
 298 0 R
-299 0 R
 300 0 R
-301 0 R
 302 0 R
-303 0 R
 304 0 R
-305 0 R
 306 0 R
-307 0 R
-308 0 R
-309 0 R
-310 0 R
-311 0 R
-312 0 R
-313 0 R
-314 0 R
-315 0 R
-316 0 R
-317 0 R
-318 0 R
-319 0 R
+]endobj
+308 0 obj<</S/URI/URI(ENCRYPTION.html)>>endobj
+309 0 obj<</Subtype/Link/Rect[72.0 451.4 176.8 464.4]/Border[0 0 0]/A 308 0 R>>endobj
+310 0 obj[309 0 R
+]endobj
+311 0 obj<</S/URI/URI(Samba-PDC-HOWTO.html)>>endobj
+312 0 obj<</Subtype/Link/Rect[72.0 391.0 176.7 404.0]/Border[0 0 0]/A 311 0 R>>endobj
+313 0 obj[312 0 R
+]endobj
+314 0 obj<</S/URI/URI(mailto:jerry@samba.org)>>endobj
+315 0 obj<</Subtype/Link/Rect[305.4 285.8 381.8 298.8]/Border[0 0 0]/A 314 0 R>>endobj
+316 0 obj[315 0 R
+]endobj
+317 0 obj<</S/URI/URI(http://carol.wins.uva.nl/~leeuw/samba/warp.html)>>endobj
+318 0 obj<</Subtype/Link/Rect[331.1 607.0 550.0 620.0]/Border[0 0 0]/A 317 0 R>>endobj
+319 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/BusSys/Clients/LANMAN.OS2/)>>endobj
+320 0 obj<</Subtype/Link/Rect[72.0 241.4 319.2 254.4]/Border[0 0 0]/A 319 0 R>>endobj
+321 0 obj<</S/URI/URI(http://carol.wins.uva.nl/~leeuw/lanman.html)>>endobj
+322 0 obj<</Subtype/Link/Rect[346.1 241.4 544.2 254.4]/Border[0 0 0]/A 321 0 R>>endobj
+323 0 obj<</S/URI/URI(ftp://ftp.cdrom.com/pub/os2/network/ndis/)>>endobj
+324 0 obj<</Subtype/Link/Rect[175.9 117.8 366.2 130.8]/Border[0 0 0]/A 323 0 R>>endobj
+325 0 obj[318 0 R
 320 0 R
-321 0 R
 322 0 R
-323 0 R
 324 0 R
-325 0 R]endobj
-327 0 obj<</Subtype/Link/Rect[80.2 721.0 216.2 734.0]/Border[0 0 0]/Dest[1110 0 R/XYZ 0 734 0]>>endobj
-328 0 obj<</Subtype/Link/Rect[124.5 707.8 182.2 720.8]/Border[0 0 0]/Dest[1110 0 R/XYZ 0 696 0]>>endobj
-329 0 obj<</Subtype/Link/Rect[124.5 694.6 253.1 707.6]/Border[0 0 0]/Dest[1112 0 R/XYZ 0 734 0]>>endobj
-330 0 obj<</Subtype/Link/Rect[124.5 681.4 237.2 694.4]/Border[0 0 0]/Dest[1112 0 R/XYZ 0 278 0]>>endobj
-331 0 obj<</Subtype/Link/Rect[124.5 668.2 289.5 681.2]/Border[0 0 0]/Dest[1114 0 R/XYZ 0 734 0]>>endobj
-332 0 obj<</Subtype/Link/Rect[124.5 655.0 211.0 668.0]/Border[0 0 0]/Dest[1114 0 R/XYZ 0 304 0]>>endobj
-333 0 obj<</Subtype/Link/Rect[124.5 641.8 233.0 654.8]/Border[0 0 0]/Dest[1116 0 R/XYZ 0 646 0]>>endobj
-334 0 obj<</Subtype/Link/Rect[124.5 628.6 229.9 641.6]/Border[0 0 0]/Dest[1116 0 R/XYZ 0 299 0]>>endobj
-335 0 obj<</Subtype/Link/Rect[124.5 615.4 210.0 628.4]/Border[0 0 0]/Dest[1116 0 R/XYZ 0 210 0]>>endobj
-336 0 obj<</Subtype/Link/Rect[124.5 602.2 196.6 615.2]/Border[0 0 0]/Dest[1118 0 R/XYZ 0 734 0]>>endobj
-337 0 obj<</Subtype/Link/Rect[80.2 589.0 146.8 602.0]/Border[0 0 0]/Dest[1120 0 R/XYZ 0 734 0]>>endobj
-338 0 obj<</Subtype/Link/Rect[124.5 575.8 182.2 588.8]/Border[0 0 0]/Dest[1120 0 R/XYZ 0 696 0]>>endobj
-339 0 obj<</Subtype/Link/Rect[124.5 562.6 322.5 575.6]/Border[0 0 0]/Dest[1120 0 R/XYZ 0 467 0]>>endobj
-340 0 obj<</Subtype/Link/Rect[85.8 549.4 229.1 562.4]/Border[0 0 0]/Dest[1124 0 R/XYZ 0 734 0]>>endobj
-341 0 obj<</Subtype/Link/Rect[130.0 536.2 304.8 549.2]/Border[0 0 0]/Dest[1124 0 R/XYZ 0 696 0]>>endobj
-342 0 obj<</Subtype/Link/Rect[130.0 523.0 292.2 536.0]/Border[0 0 0]/Dest[1126 0 R/XYZ 0 362 0]>>endobj
-343 0 obj<</Subtype/Link/Rect[130.0 509.8 315.2 522.8]/Border[0 0 0]/Dest[1126 0 R/XYZ 0 155 0]>>endobj
-344 0 obj<</Subtype/Link/Rect[85.8 496.6 369.0 509.6]/Border[0 0 0]/Dest[1130 0 R/XYZ 0 734 0]>>endobj
-345 0 obj<</Subtype/Link/Rect[130.0 483.4 170.0 496.4]/Border[0 0 0]/Dest[1130 0 R/XYZ 0 672 0]>>endobj
-346 0 obj<</Subtype/Link/Rect[130.0 470.2 187.8 483.2]/Border[0 0 0]/Dest[1130 0 R/XYZ 0 544 0]>>endobj
-347 0 obj<</Subtype/Link/Rect[130.0 457.0 237.9 470.0]/Border[0 0 0]/Dest[1130 0 R/XYZ 0 231 0]>>endobj
-348 0 obj<</Subtype/Link/Rect[174.2 443.8 230.5 456.8]/Border[0 0 0]/Dest[1132 0 R/XYZ 0 560 0]>>endobj
-349 0 obj<</Subtype/Link/Rect[130.0 430.6 224.4 443.6]/Border[0 0 0]/Dest[1132 0 R/XYZ 0 409 0]>>endobj
-350 0 obj<</Subtype/Link/Rect[174.2 417.4 330.7 430.4]/Border[0 0 0]/Dest[1132 0 R/XYZ 0 294 0]>>endobj
-351 0 obj<</Subtype/Link/Rect[174.2 404.2 269.9 417.2]/Border[0 0 0]/Dest[1134 0 R/XYZ 0 734 0]>>endobj
-352 0 obj<</Subtype/Link/Rect[174.2 391.0 330.4 404.0]/Border[0 0 0]/Dest[1134 0 R/XYZ 0 292 0]>>endobj
-353 0 obj<</Subtype/Link/Rect[174.2 377.8 312.0 390.8]/Border[0 0 0]/Dest[1136 0 R/XYZ 0 665 0]>>endobj
-354 0 obj<</Subtype/Link/Rect[174.2 364.6 244.5 377.6]/Border[0 0 0]/Dest[1136 0 R/XYZ 0 488 0]>>endobj
-355 0 obj<</Subtype/Link/Rect[130.0 351.4 267.8 364.4]/Border[0 0 0]/Dest[1136 0 R/XYZ 0 351 0]>>endobj
-356 0 obj<</Subtype/Link/Rect[174.2 338.2 232.0 351.2]/Border[0 0 0]/Dest[1136 0 R/XYZ 0 209 0]>>endobj
-357 0 obj<</Subtype/Link/Rect[174.2 325.0 237.5 338.0]/Border[0 0 0]/Dest[1138 0 R/XYZ 0 599 0]>>endobj
-358 0 obj<</Subtype/Link/Rect[174.2 311.8 261.3 324.8]/Border[0 0 0]/Dest[1138 0 R/XYZ 0 330 0]>>endobj
-359 0 obj<</Subtype/Link/Rect[130.0 298.6 182.9 311.6]/Border[0 0 0]/Dest[1152 0 R/XYZ 0 296 0]>>endobj
-360 0 obj<</Subtype/Link/Rect[130.0 285.4 182.9 298.4]/Border[0 0 0]/Dest[1154 0 R/XYZ 0 734 0]>>endobj
-361 0 obj<</Subtype/Link/Rect[85.8 272.2 364.7 285.2]/Border[0 0 0]/Dest[1156 0 R/XYZ 0 734 0]>>endobj
-362 0 obj<</Subtype/Link/Rect[130.0 259.0 226.5 272.0]/Border[0 0 0]/Dest[1156 0 R/XYZ 0 672 0]>>endobj
-363 0 obj<</Subtype/Link/Rect[130.0 245.8 186.5 258.8]/Border[0 0 0]/Dest[1156 0 R/XYZ 0 584 0]>>endobj
-364 0 obj<</Subtype/Link/Rect[130.0 232.6 322.8 245.6]/Border[0 0 0]/Dest[1158 0 R/XYZ 0 718 0]>>endobj
-365 0 obj<</Subtype/Link/Rect[130.0 219.4 436.8 232.4]/Border[0 0 0]/Dest[1160 0 R/XYZ 0 613 0]>>endobj
-366 0 obj<</Subtype/Link/Rect[174.2 206.2 374.7 219.2]/Border[0 0 0]/Dest[1160 0 R/XYZ 0 227 0]>>endobj
-367 0 obj<</Subtype/Link/Rect[174.2 193.0 406.1 206.0]/Border[0 0 0]/Dest[1162 0 R/XYZ 0 359 0]>>endobj
-368 0 obj<</Subtype/Link/Rect[174.2 179.8 321.5 192.8]/Border[0 0 0]/Dest[1162 0 R/XYZ 0 149 0]>>endobj
-369 0 obj<</Subtype/Link/Rect[130.0 166.6 268.7 179.6]/Border[0 0 0]/Dest[1164 0 R/XYZ 0 467 0]>>endobj
-370 0 obj<</Subtype/Link/Rect[130.0 153.4 258.3 166.4]/Border[0 0 0]/Dest[1166 0 R/XYZ 0 208 0]>>endobj
-371 0 obj<</Subtype/Link/Rect[130.0 140.2 250.4 153.2]/Border[0 0 0]/Dest[1168 0 R/XYZ 0 203 0]>>endobj
-372 0 obj<</Subtype/Link/Rect[130.0 127.0 295.9 140.0]/Border[0 0 0]/Dest[1174 0 R/XYZ 0 547 0]>>endobj
-373 0 obj<</Subtype/Link/Rect[174.2 113.8 373.5 126.8]/Border[0 0 0]/Dest[1176 0 R/XYZ 0 560 0]>>endobj
-374 0 obj<</Subtype/Link/Rect[174.2 100.6 449.6 113.6]/Border[0 0 0]/Dest[1176 0 R/XYZ 0 126 0]>>endobj
-375 0 obj<</Subtype/Link/Rect[130.0 87.4 429.2 100.4]/Border[0 0 0]/Dest[1184 0 R/XYZ 0 135 0]>>endobj
-376 0 obj<</Subtype/Link/Rect[85.8 74.2 454.9 87.2]/Border[0 0 0]/Dest[1190 0 R/XYZ 0 734 0]>>endobj
-377 0 obj<</Subtype/Link/Rect[130.0 61.0 226.5 74.0]/Border[0 0 0]/Dest[1190 0 R/XYZ 0 672 0]>>endobj
-378 0 obj[327 0 R
-328 0 R
-329 0 R
-330 0 R
-331 0 R
+]endobj
+326 0 obj<</S/URI/URI(http://carol.wins.uva.nl/~leeuw/samba/fix.html)>>endobj
+327 0 obj<</Subtype/Link/Rect[225.7 661.0 434.8 674.0]/Border[0 0 0]/A 326 0 R>>endobj
+328 0 obj[327 0 R
+]endobj
+329 0 obj<</S/URI/URI(http://samba.org/samba/cvs.html)>>endobj
+330 0 obj<</Subtype/Link/Rect[357.1 577.0 500.7 590.0]/Border[0 0 0]/A 329 0 R>>endobj
+331 0 obj<</S/URI/URI(http://samba.org/cgi-bin/cvsweb)>>endobj
+332 0 obj<</Subtype/Link/Rect[138.6 354.6 283.2 367.6]/Border[0 0 0]/A 331 0 R>>endobj
+333 0 obj<</S/URI/URI(http://www.cyclic.com/)>>endobj
+334 0 obj<</Subtype/Link/Rect[394.3 230.2 498.2 243.2]/Border[0 0 0]/A 333 0 R>>endobj
+335 0 obj[330 0 R
 332 0 R
-333 0 R
 334 0 R
-335 0 R
-336 0 R
-337 0 R
-338 0 R
-339 0 R
-340 0 R
-341 0 R
-342 0 R
+]endobj
+336 0 obj<</S/URI/URI(Diagnosis.html)>>endobj
+337 0 obj<</Subtype/Link/Rect[187.8 344.6 229.3 357.6]/Border[0 0 0]/A 336 0 R>>endobj
+338 0 obj[337 0 R
+]endobj
+339 0 obj<</S/URI/URI(x1741.htm)>>endobj
+340 0 obj<</Subtype/Link/Rect[201.6 645.8 258.1 658.8]/Border[0 0 0]/A 339 0 R>>endobj
+341 0 obj[340 0 R
+]endobj
+342 0 obj<</Subtype/Link/Rect[72.0 684.0 277.3 697.0]/Border[0 0 0]/Dest[798 0 R/XYZ null 798 0]>>endobj
+343 0 obj<</Subtype/Link/Rect[108.0 670.8 249.2 683.8]/Border[0 0 0]/Dest[798 0 R/XYZ null 730 0]>>endobj
+344 0 obj<</Subtype/Link/Rect[108.0 657.6 255.0 670.6]/Border[0 0 0]/Dest[798 0 R/XYZ null 593 0]>>endobj
+345 0 obj<</Subtype/Link/Rect[108.0 644.4 257.7 657.4]/Border[0 0 0]/Dest[798 0 R/XYZ null 178 0]>>endobj
+346 0 obj<</Subtype/Link/Rect[108.0 631.2 309.0 644.2]/Border[0 0 0]/Dest[801 0 R/XYZ null 739 0]>>endobj
+347 0 obj<</Subtype/Link/Rect[108.0 618.0 316.7 631.0]/Border[0 0 0]/Dest[801 0 R/XYZ null 379 0]>>endobj
+348 0 obj<</Subtype/Link/Rect[108.0 604.8 284.9 617.8]/Border[0 0 0]/Dest[801 0 R/XYZ null 268 0]>>endobj
+349 0 obj<</Subtype/Link/Rect[108.0 591.6 280.0 604.6]/Border[0 0 0]/Dest[804 0 R/XYZ null 768 0]>>endobj
+350 0 obj<</Subtype/Link/Rect[108.0 578.4 328.6 591.4]/Border[0 0 0]/Dest[804 0 R/XYZ null 266 0]>>endobj
+351 0 obj<</Subtype/Link/Rect[108.0 565.2 364.9 578.2]/Border[0 0 0]/Dest[807 0 R/XYZ null 686 0]>>endobj
+352 0 obj<</Subtype/Link/Rect[108.0 552.0 315.8 565.0]/Border[0 0 0]/Dest[807 0 R/XYZ null 509 0]>>endobj
+353 0 obj<</Subtype/Link/Rect[108.0 538.8 514.3 551.8]/Border[0 0 0]/Dest[807 0 R/XYZ null 332 0]>>endobj
+354 0 obj<</Subtype/Link/Rect[108.0 525.6 259.4 538.6]/Border[0 0 0]/Dest[810 0 R/XYZ null 768 0]>>endobj
+355 0 obj<</Subtype/Link/Rect[108.0 512.4 236.0 525.4]/Border[0 0 0]/Dest[810 0 R/XYZ null 577 0]>>endobj
+356 0 obj<</Subtype/Link/Rect[108.0 499.2 186.5 512.2]/Border[0 0 0]/Dest[810 0 R/XYZ null 505 0]>>endobj
+357 0 obj<</Subtype/Link/Rect[108.0 486.0 267.2 499.0]/Border[0 0 0]/Dest[810 0 R/XYZ null 407 0]>>endobj
+358 0 obj<</Subtype/Link/Rect[108.0 472.8 295.6 485.8]/Border[0 0 0]/Dest[813 0 R/XYZ null 768 0]>>endobj
+359 0 obj<</Subtype/Link/Rect[108.0 459.6 177.7 472.6]/Border[0 0 0]/Dest[813 0 R/XYZ null 643 0]>>endobj
+360 0 obj<</Subtype/Link/Rect[108.0 446.4 232.3 459.4]/Border[0 0 0]/Dest[813 0 R/XYZ null 175 0]>>endobj
+361 0 obj<</Subtype/Link/Rect[72.0 420.0 267.5 433.0]/Border[0 0 0]/Dest[816 0 R/XYZ null 798 0]>>endobj
+362 0 obj<</Subtype/Link/Rect[108.0 406.8 181.6 419.8]/Border[0 0 0]/Dest[816 0 R/XYZ null 730 0]>>endobj
+363 0 obj<</Subtype/Link/Rect[108.0 393.6 184.7 406.6]/Border[0 0 0]/Dest[816 0 R/XYZ null 553 0]>>endobj
+364 0 obj<</Subtype/Link/Rect[108.0 380.4 150.5 393.4]/Border[0 0 0]/Dest[816 0 R/XYZ null 186 0]>>endobj
+365 0 obj<</Subtype/Link/Rect[108.0 367.2 162.7 380.2]/Border[0 0 0]/Dest[816 0 R/XYZ null 156 0]>>endobj
+366 0 obj<</Subtype/Link/Rect[108.0 354.0 162.7 367.0]/Border[0 0 0]/Dest[819 0 R/XYZ null 726 0]>>endobj
+367 0 obj<</Subtype/Link/Rect[108.0 340.8 162.7 353.8]/Border[0 0 0]/Dest[819 0 R/XYZ null 509 0]>>endobj
+368 0 obj<</Subtype/Link/Rect[108.0 327.6 162.7 340.6]/Border[0 0 0]/Dest[822 0 R/XYZ null 581 0]>>endobj
+369 0 obj<</Subtype/Link/Rect[108.0 314.4 162.7 327.4]/Border[0 0 0]/Dest[822 0 R/XYZ null 417 0]>>endobj
+370 0 obj<</Subtype/Link/Rect[108.0 301.2 162.7 314.2]/Border[0 0 0]/Dest[822 0 R/XYZ null 279 0]>>endobj
+371 0 obj<</Subtype/Link/Rect[108.0 288.0 162.7 301.0]/Border[0 0 0]/Dest[825 0 R/XYZ null 673 0]>>endobj
+372 0 obj<</Subtype/Link/Rect[108.0 274.8 162.7 287.8]/Border[0 0 0]/Dest[825 0 R/XYZ null 298 0]>>endobj
+373 0 obj<</Subtype/Link/Rect[108.0 261.6 162.7 274.6]/Border[0 0 0]/Dest[828 0 R/XYZ null 607 0]>>endobj
+374 0 obj<</Subtype/Link/Rect[108.0 248.4 173.7 261.4]/Border[0 0 0]/Dest[828 0 R/XYZ null 430 0]>>endobj
+375 0 obj<</Subtype/Link/Rect[108.0 235.2 173.7 248.2]/Border[0 0 0]/Dest[828 0 R/XYZ null 279 0]>>endobj
+376 0 obj<</Subtype/Link/Rect[108.0 222.0 221.4 235.0]/Border[0 0 0]/Dest[831 0 R/XYZ null 768 0]>>endobj
+377 0 obj<</Subtype/Link/Rect[72.0 195.6 348.8 208.6]/Border[0 0 0]/Dest[834 0 R/XYZ null 798 0]>>endobj
+378 0 obj<</Subtype/Link/Rect[108.0 182.4 161.5 195.4]/Border[0 0 0]/Dest[834 0 R/XYZ null 706 0]>>endobj
+379 0 obj<</Subtype/Link/Rect[108.0 169.2 327.7 182.2]/Border[0 0 0]/Dest[834 0 R/XYZ null 463 0]>>endobj
+380 0 obj<</Subtype/Link/Rect[108.0 156.0 177.1 169.0]/Border[0 0 0]/Dest[834 0 R/XYZ null 325 0]>>endobj
+381 0 obj<</Subtype/Link/Rect[108.0 142.8 203.6 155.8]/Border[0 0 0]/Dest[837 0 R/XYZ null 435 0]>>endobj
+382 0 obj<</Subtype/Link/Rect[108.0 129.6 195.1 142.6]/Border[0 0 0]/Dest[837 0 R/XYZ null 285 0]>>endobj
+383 0 obj<</Subtype/Link/Rect[108.0 116.4 215.2 129.4]/Border[0 0 0]/Dest[840 0 R/XYZ null 768 0]>>endobj
+384 0 obj<</Subtype/Link/Rect[108.0 103.2 382.4 116.2]/Border[0 0 0]/Dest[840 0 R/XYZ null 268 0]>>endobj
+385 0 obj<</Subtype/Link/Rect[108.0 90.0 255.6 103.0]/Border[0 0 0]/Dest[843 0 R/XYZ null 210 0]>>endobj
+386 0 obj<</Subtype/Link/Rect[108.0 76.8 224.1 89.8]/Border[0 0 0]/Dest[846 0 R/XYZ null 660 0]>>endobj
+387 0 obj<</Subtype/Link/Rect[108.0 63.6 187.8 76.6]/Border[0 0 0]/Dest[849 0 R/XYZ null 371 0]>>endobj
+388 0 obj[342 0 R
 343 0 R
 344 0 R
 345 0 R
 374 0 R
 375 0 R
 376 0 R
-377 0 R]endobj
-379 0 obj<</Subtype/Link/Rect[130.0 721.0 186.5 734.0]/Border[0 0 0]/Dest[1190 0 R/XYZ 0 597 0]>>endobj
-380 0 obj<</Subtype/Link/Rect[130.0 707.8 365.9 720.8]/Border[0 0 0]/Dest[1190 0 R/XYZ 0 225 0]>>endobj
-381 0 obj<</Subtype/Link/Rect[174.2 694.6 406.5 707.6]/Border[0 0 0]/Dest[1192 0 R/XYZ 0 734 0]>>endobj
-382 0 obj<</Subtype/Link/Rect[174.2 681.4 292.5 694.4]/Border[0 0 0]/Dest[1192 0 R/XYZ 0 609 0]>>endobj
-383 0 obj<</Subtype/Link/Rect[130.0 668.2 333.8 681.2]/Border[0 0 0]/Dest[1192 0 R/XYZ 0 524 0]>>endobj
-384 0 obj<</Subtype/Link/Rect[130.0 655.0 273.6 668.0]/Border[0 0 0]/Dest[1192 0 R/XYZ 0 383 0]>>endobj
-385 0 obj<</Subtype/Link/Rect[174.2 641.8 351.2 654.8]/Border[0 0 0]/Dest[1194 0 R/XYZ 0 665 0]>>endobj
-386 0 obj<</Subtype/Link/Rect[85.8 628.6 420.2 641.6]/Border[0 0 0]/Dest[1196 0 R/XYZ 0 734 0]>>endobj
-387 0 obj<</Subtype/Link/Rect[130.0 615.4 169.4 628.4]/Border[0 0 0]/Dest[1196 0 R/XYZ 0 672 0]>>endobj
-388 0 obj<</Subtype/Link/Rect[130.0 602.2 187.8 615.2]/Border[0 0 0]/Dest[1196 0 R/XYZ 0 412 0]>>endobj
-389 0 obj<</Subtype/Link/Rect[130.0 589.0 244.0 602.0]/Border[0 0 0]/Dest[1198 0 R/XYZ 0 573 0]>>endobj
-390 0 obj<</Subtype/Link/Rect[130.0 575.8 382.4 588.8]/Border[0 0 0]/Dest[1198 0 R/XYZ 0 471 0]>>endobj
-391 0 obj<</Subtype/Link/Rect[130.0 562.6 271.2 575.6]/Border[0 0 0]/Dest[1200 0 R/XYZ 0 734 0]>>endobj
-392 0 obj<</Subtype/Link/Rect[174.2 549.4 291.0 562.4]/Border[0 0 0]/Dest[1200 0 R/XYZ 0 700 0]>>endobj
-393 0 obj<</Subtype/Link/Rect[174.2 536.2 263.5 549.2]/Border[0 0 0]/Dest[1200 0 R/XYZ 0 143 0]>>endobj
-394 0 obj<</Subtype/Link/Rect[130.0 523.0 287.0 536.0]/Border[0 0 0]/Dest[1202 0 R/XYZ 0 243 0]>>endobj
-395 0 obj<</Subtype/Link/Rect[130.0 509.8 255.6 522.8]/Border[0 0 0]/Dest[1204 0 R/XYZ 0 718 0]>>endobj
-396 0 obj<</Subtype/Link/Rect[130.0 496.6 330.8 509.6]/Border[0 0 0]/Dest[1204 0 R/XYZ 0 336 0]>>endobj
-397 0 obj<</Subtype/Link/Rect[130.0 483.4 324.3 496.4]/Border[0 0 0]/Dest[1206 0 R/XYZ 0 322 0]>>endobj
-398 0 obj<</Subtype/Link/Rect[135.5 470.2 184.7 483.2]/Border[0 0 0]/Dest[1208 0 R/XYZ 0 492 0]>>endobj
-399 0 obj<</Subtype/Link/Rect[85.8 457.0 217.1 470.0]/Border[0 0 0]/Dest[1210 0 R/XYZ 0 734 0]>>endobj
-400 0 obj<</Subtype/Link/Rect[130.0 443.8 229.9 456.8]/Border[0 0 0]/Dest[1210 0 R/XYZ 0 696 0]>>endobj
-401 0 obj<</Subtype/Link/Rect[130.0 430.6 254.1 443.6]/Border[0 0 0]/Dest[1210 0 R/XYZ 0 515 0]>>endobj
-402 0 obj<</Subtype/Link/Rect[130.0 417.4 218.0 430.4]/Border[0 0 0]/Dest[1210 0 R/XYZ 0 137 0]>>endobj
-403 0 obj<</Subtype/Link/Rect[130.0 404.2 242.1 417.2]/Border[0 0 0]/Dest[1212 0 R/XYZ 0 533 0]>>endobj
-404 0 obj<</Subtype/Link/Rect[174.2 391.0 354.8 404.0]/Border[0 0 0]/Dest[1212 0 R/XYZ 0 273 0]>>endobj
-405 0 obj<</Subtype/Link/Rect[130.0 377.8 244.0 390.8]/Border[0 0 0]/Dest[1218 0 R/XYZ 0 560 0]>>endobj
-406 0 obj<</Subtype/Link/Rect[130.0 364.6 312.7 377.6]/Border[0 0 0]/Dest[1220 0 R/XYZ 0 613 0]>>endobj
-407 0 obj<</Subtype/Link/Rect[130.0 351.4 287.1 364.4]/Border[0 0 0]/Dest[1222 0 R/XYZ 0 622 0]>>endobj
-408 0 obj<</Subtype/Link/Rect[130.0 338.2 273.0 351.2]/Border[0 0 0]/Dest[1222 0 R/XYZ 0 266 0]>>endobj
-409 0 obj<</Subtype/Link/Rect[130.0 325.0 282.5 338.0]/Border[0 0 0]/Dest[1224 0 R/XYZ 0 520 0]>>endobj
-410 0 obj<</Subtype/Link/Rect[135.5 311.8 279.7 324.8]/Border[0 0 0]/Dest[1226 0 R/XYZ 0 734 0]>>endobj
-411 0 obj<</Subtype/Link/Rect[135.5 298.6 221.7 311.6]/Border[0 0 0]/Dest[1226 0 R/XYZ 0 645 0]>>endobj
-412 0 obj<</Subtype/Link/Rect[85.8 285.4 206.4 298.4]/Border[0 0 0]/Dest[1228 0 R/XYZ 0 734 0]>>endobj
-413 0 obj<</Subtype/Link/Rect[130.0 272.2 191.4 285.2]/Border[0 0 0]/Dest[1228 0 R/XYZ 0 696 0]>>endobj
-414 0 obj<</Subtype/Link/Rect[130.0 259.0 168.8 272.0]/Border[0 0 0]/Dest[1228 0 R/XYZ 0 449 0]>>endobj
-415 0 obj<</Subtype/Link/Rect[174.2 245.8 219.2 258.8]/Border[0 0 0]/Dest[1228 0 R/XYZ 0 416 0]>>endobj
-416 0 obj<</Subtype/Link/Rect[174.2 232.6 245.1 245.6]/Border[0 0 0]/Dest[1228 0 R/XYZ 0 146 0]>>endobj
-417 0 obj<</Subtype/Link/Rect[174.2 219.4 348.3 232.4]/Border[0 0 0]/Dest[1230 0 R/XYZ 0 652 0]>>endobj
-418 0 obj<</Subtype/Link/Rect[130.0 206.2 196.6 219.2]/Border[0 0 0]/Dest[1230 0 R/XYZ 0 515 0]>>endobj
-419 0 obj<</Subtype/Link/Rect[130.0 193.0 174.6 206.0]/Border[0 0 0]/Dest[1230 0 R/XYZ 0 255 0]>>endobj
-420 0 obj<</Subtype/Link/Rect[130.0 179.8 174.0 192.8]/Border[0 0 0]/Dest[1232 0 R/XYZ 0 718 0]>>endobj
-421 0 obj<</Subtype/Link/Rect[130.0 166.6 168.2 179.6]/Border[0 0 0]/Dest[1232 0 R/XYZ 0 537 0]>>endobj
-422 0 obj<</Subtype/Link/Rect[130.0 153.4 189.3 166.4]/Border[0 0 0]/Dest[1232 0 R/XYZ 0 409 0]>>endobj
-423 0 obj<</Subtype/Link/Rect[130.0 140.2 173.4 153.2]/Border[0 0 0]/Dest[1232 0 R/XYZ 0 189 0]>>endobj
-424 0 obj<</Subtype/Link/Rect[130.0 127.0 178.9 140.0]/Border[0 0 0]/Dest[1234 0 R/XYZ 0 734 0]>>endobj
-425 0 obj<</Subtype/Link/Rect[135.5 113.8 180.7 126.8]/Border[0 0 0]/Dest[1234 0 R/XYZ 0 645 0]>>endobj
-426 0 obj<</Subtype/Link/Rect[135.5 100.6 182.6 113.6]/Border[0 0 0]/Dest[1234 0 R/XYZ 0 477 0]>>endobj
-427 0 obj<</Subtype/Link/Rect[135.5 87.4 208.8 100.4]/Border[0 0 0]/Dest[1234 0 R/XYZ 0 349 0]>>endobj
-428 0 obj<</Subtype/Link/Rect[135.5 74.2 216.2 87.2]/Border[0 0 0]/Dest[1234 0 R/XYZ 0 129 0]>>endobj
-429 0 obj<</Subtype/Link/Rect[135.5 61.0 193.6 74.0]/Border[0 0 0]/Dest[1236 0 R/XYZ 0 639 0]>>endobj
-430 0 obj[379 0 R
+377 0 R
+378 0 R
+379 0 R
 380 0 R
 381 0 R
 382 0 R
 385 0 R
 386 0 R
 387 0 R
-388 0 R
-389 0 R
+]endobj
+389 0 obj<</Subtype/Link/Rect[108.0 684.0 194.5 697.0]/Border[0 0 0]/Dest[849 0 R/XYZ null 260 0]>>endobj
+390 0 obj<</Subtype/Link/Rect[108.0 670.8 200.6 683.8]/Border[0 0 0]/Dest[852 0 R/XYZ null 768 0]>>endobj
+391 0 obj<</Subtype/Link/Rect[108.0 657.6 526.0 670.6]/Border[0 0 0]/Dest[852 0 R/XYZ null 529 0]>>endobj
+392 0 obj<</Subtype/Link/Rect[108.0 644.4 500.6 657.4]/Border[0 0 0]/Dest[855 0 R/XYZ null 633 0]>>endobj
+393 0 obj<</Subtype/Link/Rect[108.0 631.2 353.3 644.2]/Border[0 0 0]/Dest[858 0 R/XYZ null 581 0]>>endobj
+394 0 obj<</Subtype/Link/Rect[108.0 618.0 419.0 631.0]/Border[0 0 0]/Dest[858 0 R/XYZ null 304 0]>>endobj
+395 0 obj<</Subtype/Link/Rect[108.0 604.8 332.5 617.8]/Border[0 0 0]/Dest[861 0 R/XYZ null 594 0]>>endobj
+396 0 obj<</Subtype/Link/Rect[108.0 591.6 181.6 604.6]/Border[0 0 0]/Dest[864 0 R/XYZ null 639 0]>>endobj
+397 0 obj<</Subtype/Link/Rect[72.0 565.2 463.4 578.2]/Border[0 0 0]/Dest[867 0 R/XYZ null 798 0]>>endobj
+398 0 obj<</Subtype/Link/Rect[108.0 552.0 202.4 565.0]/Border[0 0 0]/Dest[867 0 R/XYZ null 706 0]>>endobj
+399 0 obj<</Subtype/Link/Rect[108.0 538.8 244.9 551.8]/Border[0 0 0]/Dest[870 0 R/XYZ null 179 0]>>endobj
+400 0 obj<</Subtype/Link/Rect[108.0 525.6 270.3 538.6]/Border[0 0 0]/Dest[873 0 R/XYZ null 726 0]>>endobj
+401 0 obj<</Subtype/Link/Rect[72.0 499.2 402.3 512.2]/Border[0 0 0]/Dest[876 0 R/XYZ null 798 0]>>endobj
+402 0 obj<</Subtype/Link/Rect[108.0 486.0 179.2 499.0]/Border[0 0 0]/Dest[876 0 R/XYZ null 706 0]>>endobj
+403 0 obj<</Subtype/Link/Rect[108.0 472.8 161.2 485.8]/Border[0 0 0]/Dest[879 0 R/XYZ null 673 0]>>endobj
+404 0 obj<</Subtype/Link/Rect[72.0 446.4 412.7 459.4]/Border[0 0 0]/Dest[882 0 R/XYZ null 798 0]>>endobj
+405 0 obj<</Subtype/Link/Rect[108.0 433.2 447.4 446.2]/Border[0 0 0]/Dest[882 0 R/XYZ null 706 0]>>endobj
+406 0 obj<</Subtype/Link/Rect[108.0 420.0 319.1 433.0]/Border[0 0 0]/Dest[882 0 R/XYZ null 525 0]>>endobj
+407 0 obj<</Subtype/Link/Rect[108.0 406.8 231.1 419.8]/Border[0 0 0]/Dest[882 0 R/XYZ null 348 0]>>endobj
+408 0 obj<</Subtype/Link/Rect[108.0 393.6 292.2 406.6]/Border[0 0 0]/Dest[885 0 R/XYZ null 686 0]>>endobj
+409 0 obj<</Subtype/Link/Rect[108.0 380.4 208.5 393.4]/Border[0 0 0]/Dest[885 0 R/XYZ null 443 0]>>endobj
+410 0 obj<</Subtype/Link/Rect[108.0 367.2 233.6 380.2]/Border[0 0 0]/Dest[885 0 R/XYZ null 187 0]>>endobj
+411 0 obj<</Subtype/Link/Rect[108.0 354.0 301.4 367.0]/Border[0 0 0]/Dest[888 0 R/XYZ null 673 0]>>endobj
+412 0 obj<</Subtype/Link/Rect[108.0 340.8 394.8 353.8]/Border[0 0 0]/Dest[888 0 R/XYZ null 232 0]>>endobj
+413 0 obj<</Subtype/Link/Rect[108.0 327.6 386.9 340.6]/Border[0 0 0]/Dest[894 0 R/XYZ null 594 0]>>endobj
+414 0 obj<</Subtype/Link/Rect[72.0 301.2 277.1 314.2]/Border[0 0 0]/Dest[897 0 R/XYZ null 798 0]>>endobj
+415 0 obj<</Subtype/Link/Rect[108.0 288.0 181.6 301.0]/Border[0 0 0]/Dest[897 0 R/XYZ null 730 0]>>endobj
+416 0 obj<</Subtype/Link/Rect[108.0 274.8 189.0 287.8]/Border[0 0 0]/Dest[897 0 R/XYZ null 302 0]>>endobj
+417 0 obj<</Subtype/Link/Rect[108.0 261.6 209.7 274.6]/Border[0 0 0]/Dest[900 0 R/XYZ null 693 0]>>endobj
+418 0 obj<</Subtype/Link/Rect[108.0 248.4 294.4 261.4]/Border[0 0 0]/Dest[903 0 R/XYZ null 450 0]>>endobj
+419 0 obj<</Subtype/Link/Rect[108.0 235.2 287.3 248.2]/Border[0 0 0]/Dest[906 0 R/XYZ null 686 0]>>endobj
+420 0 obj<</Subtype/Link/Rect[108.0 222.0 350.9 235.0]/Border[0 0 0]/Dest[906 0 R/XYZ null 302 0]>>endobj
+421 0 obj<</Subtype/Link/Rect[108.0 208.8 242.1 221.8]/Border[0 0 0]/Dest[909 0 R/XYZ null 686 0]>>endobj
+422 0 obj<</Subtype/Link/Rect[108.0 195.6 220.1 208.6]/Border[0 0 0]/Dest[909 0 R/XYZ null 496 0]>>endobj
+423 0 obj<</Subtype/Link/Rect[108.0 182.4 214.3 195.4]/Border[0 0 0]/Dest[909 0 R/XYZ null 385 0]>>endobj
+424 0 obj<</Subtype/Link/Rect[108.0 169.2 281.2 182.2]/Border[0 0 0]/Dest[909 0 R/XYZ null 247 0]>>endobj
+425 0 obj<</Subtype/Link/Rect[108.0 156.0 222.3 169.0]/Border[0 0 0]/Dest[909 0 R/XYZ null 149 0]>>endobj
+426 0 obj<</Subtype/Link/Rect[108.0 142.8 234.5 155.8]/Border[0 0 0]/Dest[912 0 R/XYZ null 713 0]>>endobj
+427 0 obj<</Subtype/Link/Rect[108.0 129.6 300.2 142.6]/Border[0 0 0]/Dest[915 0 R/XYZ null 768 0]>>endobj
+428 0 obj<</Subtype/Link/Rect[72.0 103.2 264.8 116.2]/Border[0 0 0]/Dest[918 0 R/XYZ null 798 0]>>endobj
+429 0 obj<</Subtype/Link/Rect[108.0 90.0 181.6 103.0]/Border[0 0 0]/Dest[918 0 R/XYZ null 730 0]>>endobj
+430 0 obj<</Subtype/Link/Rect[108.0 76.8 251.9 89.8]/Border[0 0 0]/Dest[921 0 R/XYZ null 768 0]>>endobj
+431 0 obj<</Subtype/Link/Rect[108.0 63.6 236.0 76.6]/Border[0 0 0]/Dest[921 0 R/XYZ null 300 0]>>endobj
+432 0 obj[389 0 R
 390 0 R
 391 0 R
 392 0 R
 426 0 R
 427 0 R
 428 0 R
-429 0 R]endobj
-431 0 obj<</Subtype/Link/Rect[135.5 721.0 192.3 734.0]/Border[0 0 0]/Dest[1236 0 R/XYZ 0 511 0]>>endobj
-432 0 obj<</Subtype/Link/Rect[135.5 707.8 196.0 720.8]/Border[0 0 0]/Dest[1236 0 R/XYZ 0 436 0]>>endobj
-433 0 obj<</Subtype/Link/Rect[135.5 694.6 186.8 707.6]/Border[0 0 0]/Dest[1238 0 R/XYZ 0 388 0]>>endobj
-434 0 obj<</Subtype/Link/Rect[85.8 681.4 178.9 694.4]/Border[0 0 0]/Dest[1240 0 R/XYZ 0 734 0]>>endobj
-435 0 obj<</Subtype/Link/Rect[130.0 668.2 158.4 681.2]/Border[0 0 0]/Dest[1240 0 R/XYZ 0 696 0]>>endobj
-436 0 obj<</Subtype/Link/Rect[174.2 655.0 533.6 668.0]/Border[0 0 0]/Dest[1240 0 R/XYZ 0 663 0]>>endobj
-437 0 obj<</Subtype/Link/Rect[174.2 641.8 536.9 654.8]/Border[0 0 0]/Dest[1240 0 R/XYZ 0 323 0]>>endobj
-438 0 obj<</Subtype/Link/Rect[174.2 628.6 490.2 641.6]/Border[0 0 0]/Dest[1242 0 R/XYZ 0 734 0]>>endobj
-439 0 obj<</Subtype/Link/Rect[174.2 615.4 459.3 628.4]/Border[0 0 0]/Dest[1242 0 R/XYZ 0 619 0]>>endobj
-440 0 obj<</Subtype/Link/Rect[85.8 602.2 287.1 615.2]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 734 0]>>endobj
-441 0 obj<</Subtype/Link/Rect[130.0 589.0 187.8 602.0]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 672 0]>>endobj
-442 0 obj<</Subtype/Link/Rect[130.0 575.8 245.8 588.8]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 557 0]>>endobj
-443 0 obj<</Subtype/Link/Rect[174.2 562.6 263.2 575.6]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 469 0]>>endobj
-444 0 obj<</Subtype/Link/Rect[174.2 549.4 239.9 562.4]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 358 0]>>endobj
-445 0 obj<</Subtype/Link/Rect[85.8 536.2 157.2 549.2]/Border[0 0 0]/Dest[1248 0 R/XYZ 0 734 0]>>endobj
-446 0 obj<</Subtype/Link/Rect[130.0 523.0 187.8 536.0]/Border[0 0 0]/Dest[1248 0 R/XYZ 0 696 0]>>endobj
-447 0 obj<</Subtype/Link/Rect[130.0 509.8 188.7 522.8]/Border[0 0 0]/Dest[1248 0 R/XYZ 0 436 0]>>endobj
-448 0 obj<</Subtype/Link/Rect[130.0 496.6 189.9 509.6]/Border[0 0 0]/Dest[1248 0 R/XYZ 0 295 0]>>endobj
-449 0 obj<</Subtype/Link/Rect[130.0 483.4 198.4 496.4]/Border[0 0 0]/Dest[1250 0 R/XYZ 0 639 0]>>endobj
-450 0 obj<</Subtype/Link/Rect[130.0 470.2 269.0 483.2]/Border[0 0 0]/Dest[1250 0 R/XYZ 0 287 0]>>endobj
-451 0 obj<</Subtype/Link/Rect[130.0 457.0 167.6 470.0]/Border[0 0 0]/Dest[1250 0 R/XYZ 0 185 0]>>endobj
-452 0 obj[431 0 R
-432 0 R
-433 0 R
+429 0 R
+430 0 R
+431 0 R
+]endobj
+433 0 obj<</Subtype/Link/Rect[108.0 684.0 287.0 697.0]/Border[0 0 0]/Dest[924 0 R/XYZ null 768 0]>>endobj
+434 0 obj<</Subtype/Link/Rect[108.0 670.8 210.4 683.8]/Border[0 0 0]/Dest[924 0 R/XYZ null 327 0]>>endobj
+435 0 obj<</Subtype/Link/Rect[108.0 657.6 231.1 670.6]/Border[0 0 0]/Dest[927 0 R/XYZ null 639 0]>>endobj
+436 0 obj<</Subtype/Link/Rect[108.0 644.4 229.3 657.4]/Border[0 0 0]/Dest[927 0 R/XYZ null 280 0]>>endobj
+437 0 obj<</Subtype/Link/Rect[108.0 631.2 210.0 644.2]/Border[0 0 0]/Dest[927 0 R/XYZ null 182 0]>>endobj
+438 0 obj<</Subtype/Link/Rect[108.0 618.0 196.6 631.0]/Border[0 0 0]/Dest[930 0 R/XYZ null 739 0]>>endobj
+439 0 obj<</Subtype/Link/Rect[72.0 591.6 192.4 604.6]/Border[0 0 0]/Dest[933 0 R/XYZ null 798 0]>>endobj
+440 0 obj<</Subtype/Link/Rect[108.0 578.4 181.6 591.4]/Border[0 0 0]/Dest[933 0 R/XYZ null 730 0]>>endobj
+441 0 obj<</Subtype/Link/Rect[108.0 565.2 323.7 578.2]/Border[0 0 0]/Dest[933 0 R/XYZ null 491 0]>>endobj
+442 0 obj<</Subtype/Link/Rect[72.0 538.8 278.4 551.8]/Border[0 0 0]/Dest[939 0 R/XYZ null 798 0]>>endobj
+443 0 obj<</Subtype/Link/Rect[108.0 525.6 305.4 538.6]/Border[0 0 0]/Dest[939 0 R/XYZ null 730 0]>>endobj
+444 0 obj<</Subtype/Link/Rect[108.0 512.4 293.5 525.4]/Border[0 0 0]/Dest[942 0 R/XYZ null 383 0]>>endobj
+445 0 obj<</Subtype/Link/Rect[108.0 499.2 313.4 512.2]/Border[0 0 0]/Dest[942 0 R/XYZ null 166 0]>>endobj
+446 0 obj<</Subtype/Link/Rect[72.0 472.8 431.7 485.8]/Border[0 0 0]/Dest[948 0 R/XYZ null 798 0]>>endobj
+447 0 obj<</Subtype/Link/Rect[108.0 459.6 170.0 472.6]/Border[0 0 0]/Dest[948 0 R/XYZ null 706 0]>>endobj
+448 0 obj<</Subtype/Link/Rect[108.0 446.4 187.1 459.4]/Border[0 0 0]/Dest[948 0 R/XYZ null 569 0]>>endobj
+449 0 obj<</Subtype/Link/Rect[108.0 433.2 239.1 446.2]/Border[0 0 0]/Dest[948 0 R/XYZ null 246 0]>>endobj
+450 0 obj<</Subtype/Link/Rect[108.0 420.0 193.8 433.0]/Border[0 0 0]/Dest[951 0 R/XYZ null 581 0]>>endobj
+451 0 obj<</Subtype/Link/Rect[108.0 406.8 227.5 419.8]/Border[0 0 0]/Dest[951 0 R/XYZ null 417 0]>>endobj
+452 0 obj<</Subtype/Link/Rect[108.0 393.6 294.1 406.6]/Border[0 0 0]/Dest[951 0 R/XYZ null 292 0]>>endobj
+453 0 obj<</Subtype/Link/Rect[108.0 380.4 236.3 393.4]/Border[0 0 0]/Dest[954 0 R/XYZ null 768 0]>>endobj
+454 0 obj<</Subtype/Link/Rect[108.0 367.2 294.4 380.2]/Border[0 0 0]/Dest[954 0 R/XYZ null 313 0]>>endobj
+455 0 obj<</Subtype/Link/Rect[108.0 354.0 274.8 367.0]/Border[0 0 0]/Dest[957 0 R/XYZ null 673 0]>>endobj
+456 0 obj<</Subtype/Link/Rect[108.0 340.8 208.5 353.8]/Border[0 0 0]/Dest[957 0 R/XYZ null 483 0]>>endobj
+457 0 obj<</Subtype/Link/Rect[108.0 327.6 265.4 340.6]/Border[0 0 0]/Dest[957 0 R/XYZ null 332 0]>>endobj
+458 0 obj<</Subtype/Link/Rect[108.0 314.4 195.4 327.4]/Border[0 0 0]/Dest[957 0 R/XYZ null 181 0]>>endobj
+459 0 obj<</Subtype/Link/Rect[108.0 301.2 202.1 314.2]/Border[0 0 0]/Dest[960 0 R/XYZ null 541 0]>>endobj
+460 0 obj<</Subtype/Link/Rect[108.0 288.0 226.6 301.0]/Border[0 0 0]/Dest[960 0 R/XYZ null 258 0]>>endobj
+461 0 obj<</Subtype/Link/Rect[108.0 274.8 183.5 287.8]/Border[0 0 0]/Dest[984 0 R/XYZ null 618 0]>>endobj
+462 0 obj<</Subtype/Link/Rect[108.0 261.6 182.9 274.6]/Border[0 0 0]/Dest[984 0 R/XYZ null 401 0]>>endobj
+463 0 obj<</Subtype/Link/Rect[72.0 235.2 421.8 248.2]/Border[0 0 0]/Dest[987 0 R/XYZ null 798 0]>>endobj
+464 0 obj<</Subtype/Link/Rect[108.0 222.0 224.7 235.0]/Border[0 0 0]/Dest[987 0 R/XYZ null 706 0]>>endobj
+465 0 obj<</Subtype/Link/Rect[108.0 208.8 186.5 221.8]/Border[0 0 0]/Dest[987 0 R/XYZ null 608 0]>>endobj
+466 0 obj<</Subtype/Link/Rect[108.0 195.6 321.6 208.6]/Border[0 0 0]/Dest[990 0 R/XYZ null 726 0]>>endobj
+467 0 obj<</Subtype/Link/Rect[108.0 182.4 435.5 195.4]/Border[0 0 0]/Dest[993 0 R/XYZ null 607 0]>>endobj
+468 0 obj<</Subtype/Link/Rect[108.0 169.2 338.7 182.2]/Border[0 0 0]/Dest[993 0 R/XYZ null 215 0]>>endobj
+469 0 obj<</Subtype/Link/Rect[108.0 156.0 368.0 169.0]/Border[0 0 0]/Dest[996 0 R/XYZ null 332 0]>>endobj
+470 0 obj<</Subtype/Link/Rect[108.0 142.8 284.9 155.8]/Border[0 0 0]/Dest[999 0 R/XYZ null 768 0]>>endobj
+471 0 obj<</Subtype/Link/Rect[108.0 129.6 266.9 142.6]/Border[0 0 0]/Dest[999 0 R/XYZ null 392 0]>>endobj
+472 0 obj<</Subtype/Link/Rect[108.0 116.4 258.3 129.4]/Border[0 0 0]/Dest[1005 0 R/XYZ null 739 0]>>endobj
+473 0 obj<</Subtype/Link/Rect[108.0 103.2 249.1 116.2]/Border[0 0 0]/Dest[1008 0 R/XYZ null 686 0]>>endobj
+474 0 obj<</Subtype/Link/Rect[108.0 90.0 298.4 103.0]/Border[0 0 0]/Dest[1014 0 R/XYZ null 303 0]>>endobj
+475 0 obj<</Subtype/Link/Rect[108.0 76.8 337.5 89.8]/Border[0 0 0]/Dest[1017 0 R/XYZ null 277 0]>>endobj
+476 0 obj<</Subtype/Link/Rect[108.0 63.6 411.7 76.6]/Border[0 0 0]/Dest[1020 0 R/XYZ null 482 0]>>endobj
+477 0 obj[433 0 R
 434 0 R
 435 0 R
 436 0 R
 448 0 R
 449 0 R
 450 0 R
-451 0 R]endobj
-453 0 obj<</S/URI/URI(http://www.samba.org/)>>endobj
-454 0 obj<</Subtype/Link/Rect[367.1 584.2 468.3 597.2]/Border[0 0 0]/A 453 0 R>>endobj
-455 0 obj[454 0 R]endobj
-456 0 obj<</S/URI/URI(mailto:samba@samba.org)>>endobj
-457 0 obj<</Subtype/Link/Rect[164.2 193.4 250.8 206.4]/Border[0 0 0]/A 456 0 R>>endobj
-458 0 obj<</S/URI/URI(http://samba.org/samba)>>endobj
-459 0 obj<</Subtype/Link/Rect[233.0 180.2 338.7 193.2]/Border[0 0 0]/A 458 0 R>>endobj
-460 0 obj[457 0 R
-459 0 R]endobj
-461 0 obj<</S/Launch/F(ENCRYPTION.html)>>endobj
-462 0 obj<</Subtype/Link/Rect[174.0 562.6 270.6 575.6]/Border[0 0 0]/A 461 0 R>>endobj
-463 0 obj<</S/Launch/F(#PASSWORDLEVEL)>>endobj
-464 0 obj<</Subtype/Link/Rect[72.0 300.6 153.0 311.6]/Border[0 0 0]/A 463 0 R>>endobj
-465 0 obj<</S/Launch/F(#USERNAMELEVEL)>>endobj
-466 0 obj<</Subtype/Link/Rect[72.0 289.8 147.6 300.8]/Border[0 0 0]/A 465 0 R>>endobj
-467 0 obj[462 0 R
+451 0 R
+452 0 R
+453 0 R
+454 0 R
+455 0 R
+456 0 R
+457 0 R
+458 0 R
+459 0 R
+460 0 R
+461 0 R
+462 0 R
+463 0 R
 464 0 R
-466 0 R]endobj
-468 0 obj<</S/Launch/F(winbind.html)>>endobj
-469 0 obj<</Subtype/Link/Rect[503.4 161.0 544.6 174.0]/Border[0 0 0]/A 468 0 R>>endobj
-470 0 obj<</S/Launch/F(winbind.html)>>endobj
-471 0 obj<</Subtype/Link/Rect[72.0 147.8 115.4 160.8]/Border[0 0 0]/A 470 0 R>>endobj
-472 0 obj[469 0 R
-471 0 R]endobj
-473 0 obj<</S/URI/URI(http://rsync.samba.org/)>>endobj
-474 0 obj<</Subtype/Link/Rect[118.1 89.0 222.3 102.0]/Border[0 0 0]/A 473 0 R>>endobj
-475 0 obj[474 0 R]endobj
-476 0 obj<</S/Launch/F(#OBEYPAMRESTRICTIONS)>>endobj
-477 0 obj<</Subtype/Link/Rect[235.4 659.0 332.9 672.0]/Border[0 0 0]/A 476 0 R>>endobj
-478 0 obj<</S/Launch/F(#ENCRYPTPASSWORDS)>>endobj
-479 0 obj<</Subtype/Link/Rect[338.7 579.8 449.4 592.8]/Border[0 0 0]/A 478 0 R>>endobj
-480 0 obj[477 0 R
-479 0 R]endobj
-481 0 obj<</S/URI/URI(http://www.microsoft.com/NTServer/nts/downloads/winfeatures/NTSDistrFile/AdminGuide.asp)>>endobj
-482 0 obj<</Subtype/Link/Rect[72.0 586.6 183.5 599.6]/Border[0 0 0]/A 481 0 R>>endobj
-483 0 obj<</S/Launch/F(#HOSTMSDFS)>>endobj
-484 0 obj<</Subtype/Link/Rect[345.1 507.4 417.7 520.4]/Border[0 0 0]/A 483 0 R>>endobj
-485 0 obj<</S/Launch/F(#MSDFSROOT)>>endobj
-486 0 obj<</Subtype/Link/Rect[380.8 494.2 453.4 507.2]/Border[0 0 0]/A 485 0 R>>endobj
-487 0 obj[482 0 R
+465 0 R
+466 0 R
+467 0 R
+468 0 R
+469 0 R
+470 0 R
+471 0 R
+472 0 R
+473 0 R
+474 0 R
+475 0 R
+476 0 R
+]endobj
+478 0 obj<</Subtype/Link/Rect[108.0 684.0 436.5 697.0]/Border[0 0 0]/Dest[1032 0 R/XYZ null 274 0]>>endobj
+479 0 obj<</Subtype/Link/Rect[72.0 657.6 518.1 670.6]/Border[0 0 0]/Dest[1041 0 R/XYZ null 798 0]>>endobj
+480 0 obj<</Subtype/Link/Rect[108.0 644.4 224.7 657.4]/Border[0 0 0]/Dest[1041 0 R/XYZ null 706 0]>>endobj
+481 0 obj<</Subtype/Link/Rect[108.0 631.2 186.5 644.2]/Border[0 0 0]/Dest[1041 0 R/XYZ null 621 0]>>endobj
+482 0 obj<</Subtype/Link/Rect[108.0 618.0 364.6 631.0]/Border[0 0 0]/Dest[1041 0 R/XYZ null 239 0]>>endobj
+483 0 obj<</Subtype/Link/Rect[108.0 604.8 369.8 617.8]/Border[0 0 0]/Dest[1044 0 R/XYZ null 768 0]>>endobj
+484 0 obj<</Subtype/Link/Rect[108.0 591.6 256.5 604.6]/Border[0 0 0]/Dest[1044 0 R/XYZ null 630 0]>>endobj
+485 0 obj<</Subtype/Link/Rect[108.0 578.4 331.3 591.4]/Border[0 0 0]/Dest[1044 0 R/XYZ null 532 0]>>endobj
+486 0 obj<</Subtype/Link/Rect[108.0 565.2 273.6 578.2]/Border[0 0 0]/Dest[1044 0 R/XYZ null 381 0]>>endobj
+487 0 obj<</Subtype/Link/Rect[108.0 552.0 315.1 565.0]/Border[0 0 0]/Dest[1047 0 R/XYZ null 650 0]>>endobj
+488 0 obj<</Subtype/Link/Rect[72.0 525.6 484.2 538.6]/Border[0 0 0]/Dest[1050 0 R/XYZ null 798 0]>>endobj
+489 0 obj<</Subtype/Link/Rect[108.0 512.4 168.2 525.4]/Border[0 0 0]/Dest[1050 0 R/XYZ null 706 0]>>endobj
+490 0 obj<</Subtype/Link/Rect[108.0 499.2 187.1 512.2]/Border[0 0 0]/Dest[1050 0 R/XYZ null 437 0]>>endobj
+491 0 obj<</Subtype/Link/Rect[108.0 486.0 245.2 499.0]/Border[0 0 0]/Dest[1053 0 R/XYZ null 581 0]>>endobj
+492 0 obj<</Subtype/Link/Rect[108.0 472.8 384.2 485.8]/Border[0 0 0]/Dest[1053 0 R/XYZ null 469 0]>>endobj
+493 0 obj<</Subtype/Link/Rect[108.0 459.6 273.0 472.6]/Border[0 0 0]/Dest[1056 0 R/XYZ null 739 0]>>endobj
+494 0 obj<</Subtype/Link/Rect[108.0 446.4 255.6 459.4]/Border[0 0 0]/Dest[1056 0 R/XYZ null 709 0]>>endobj
+495 0 obj<</Subtype/Link/Rect[108.0 433.2 227.5 446.2]/Border[0 0 0]/Dest[1059 0 R/XYZ null 768 0]>>endobj
+496 0 obj<</Subtype/Link/Rect[108.0 420.0 287.0 433.0]/Border[0 0 0]/Dest[1059 0 R/XYZ null 180 0]>>endobj
+497 0 obj<</Subtype/Link/Rect[108.0 406.8 256.2 419.8]/Border[0 0 0]/Dest[1062 0 R/XYZ null 633 0]>>endobj
+498 0 obj<</Subtype/Link/Rect[108.0 393.6 330.7 406.6]/Border[0 0 0]/Dest[1062 0 R/XYZ null 240 0]>>endobj
+499 0 obj<</Subtype/Link/Rect[108.0 380.4 324.3 393.4]/Border[0 0 0]/Dest[1065 0 R/XYZ null 211 0]>>endobj
+500 0 obj<</Subtype/Link/Rect[108.0 367.2 185.9 380.2]/Border[0 0 0]/Dest[1068 0 R/XYZ null 362 0]>>endobj
+501 0 obj<</Subtype/Link/Rect[72.0 340.8 268.2 353.8]/Border[0 0 0]/Dest[1071 0 R/XYZ null 798 0]>>endobj
+502 0 obj<</Subtype/Link/Rect[108.0 327.6 231.7 340.6]/Border[0 0 0]/Dest[1071 0 R/XYZ null 730 0]>>endobj
+503 0 obj<</Subtype/Link/Rect[108.0 314.4 253.4 327.4]/Border[0 0 0]/Dest[1071 0 R/XYZ null 540 0]>>endobj
+504 0 obj<</Subtype/Link/Rect[108.0 301.2 216.8 314.2]/Border[0 0 0]/Dest[1074 0 R/XYZ null 768 0]>>endobj
+505 0 obj<</Subtype/Link/Rect[108.0 288.0 241.5 301.0]/Border[0 0 0]/Dest[1074 0 R/XYZ null 471 0]>>endobj
+506 0 obj<</Subtype/Link/Rect[108.0 274.8 318.8 287.8]/Border[0 0 0]/Dest[1074 0 R/XYZ null 202 0]>>endobj
+507 0 obj<</Subtype/Link/Rect[108.0 261.6 245.8 274.6]/Border[0 0 0]/Dest[1083 0 R/XYZ null 447 0]>>endobj
+508 0 obj<</Subtype/Link/Rect[108.0 248.4 315.8 261.4]/Border[0 0 0]/Dest[1086 0 R/XYZ null 488 0]>>endobj
+509 0 obj<</Subtype/Link/Rect[108.0 235.2 290.1 248.2]/Border[0 0 0]/Dest[1089 0 R/XYZ null 492 0]>>endobj
+510 0 obj<</Subtype/Link/Rect[108.0 222.0 270.5 235.0]/Border[0 0 0]/Dest[1092 0 R/XYZ null 768 0]>>endobj
+511 0 obj<</Subtype/Link/Rect[108.0 208.8 281.8 221.8]/Border[0 0 0]/Dest[1092 0 R/XYZ null 339 0]>>endobj
+512 0 obj<</Subtype/Link/Rect[108.0 195.6 276.6 208.6]/Border[0 0 0]/Dest[1095 0 R/XYZ null 567 0]>>endobj
+513 0 obj<</Subtype/Link/Rect[108.0 182.4 221.7 195.4]/Border[0 0 0]/Dest[1095 0 R/XYZ null 469 0]>>endobj
+514 0 obj<</Subtype/Link/Rect[72.0 156.0 255.6 169.0]/Border[0 0 0]/Dest[1098 0 R/XYZ null 798 0]>>endobj
+515 0 obj<</Subtype/Link/Rect[108.0 142.8 190.8 155.8]/Border[0 0 0]/Dest[1098 0 R/XYZ null 730 0]>>endobj
+516 0 obj<</Subtype/Link/Rect[108.0 129.6 169.4 142.6]/Border[0 0 0]/Dest[1098 0 R/XYZ null 474 0]>>endobj
+517 0 obj<</Subtype/Link/Rect[108.0 116.4 184.4 129.4]/Border[0 0 0]/Dest[1098 0 R/XYZ null 444 0]>>endobj
+518 0 obj<</Subtype/Link/Rect[108.0 103.2 211.0 116.2]/Border[0 0 0]/Dest[1098 0 R/XYZ null 161 0]>>endobj
+519 0 obj<</Subtype/Link/Rect[108.0 90.0 310.3 103.0]/Border[0 0 0]/Dest[1101 0 R/XYZ null 647 0]>>endobj
+520 0 obj<</Subtype/Link/Rect[108.0 76.8 197.8 89.8]/Border[0 0 0]/Dest[1101 0 R/XYZ null 483 0]>>endobj
+521 0 obj<</Subtype/Link/Rect[108.0 63.6 175.2 76.6]/Border[0 0 0]/Dest[1101 0 R/XYZ null 213 0]>>endobj
+522 0 obj[478 0 R
+479 0 R
+480 0 R
+481 0 R
+482 0 R
+483 0 R
 484 0 R
-486 0 R]endobj
-488 0 obj<</S/Launch/F(#NTACLSUPPORT)>>endobj
-489 0 obj<</Subtype/Link/Rect[339.9 526.6 438.9 539.6]/Border[0 0 0]/A 488 0 R>>endobj
-490 0 obj[489 0 R]endobj
-491 0 obj<</S/Launch/F(#SECURITYMASK)>>endobj
-492 0 obj<</Subtype/Link/Rect[493.0 707.8 545.8 720.8]/Border[0 0 0]/A 491 0 R>>endobj
-493 0 obj<</S/Launch/F(#SECURITYMASK)>>endobj
-494 0 obj<</Subtype/Link/Rect[72.0 694.6 98.4 707.6]/Border[0 0 0]/A 493 0 R>>endobj
-495 0 obj<</S/Launch/F(#CREATEMASK)>>endobj
-496 0 obj<</Subtype/Link/Rect[356.1 615.4 428.7 628.4]/Border[0 0 0]/A 495 0 R>>endobj
-497 0 obj<</S/Launch/F(#FORCESECURITYMODE)>>endobj
-498 0 obj<</Subtype/Link/Rect[424.3 562.6 549.7 575.6]/Border[0 0 0]/A 497 0 R>>endobj
-499 0 obj<</S/Launch/F(#FORCECREATEMODE)>>endobj
-500 0 obj<</Subtype/Link/Rect[356.1 483.4 468.3 496.4]/Border[0 0 0]/A 499 0 R>>endobj
-501 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-502 0 obj<</Subtype/Link/Rect[72.0 206.2 144.6 219.2]/Border[0 0 0]/A 501 0 R>>endobj
-503 0 obj[492 0 R
+485 0 R
+486 0 R
+487 0 R
+488 0 R
+489 0 R
+490 0 R
+491 0 R
+492 0 R
+493 0 R
 494 0 R
+495 0 R
 496 0 R
+497 0 R
 498 0 R
+499 0 R
 500 0 R
-502 0 R]endobj
-504 0 obj<</S/URI/URI(http://imprints.sourceforge.net)>>endobj
-505 0 obj<</Subtype/Link/Rect[143.7 544.6 280.3 557.6]/Border[0 0 0]/A 504 0 R>>endobj
-506 0 obj<</S/URI/URI(http://msdn.microsoft.com/)>>endobj
-507 0 obj<</Subtype/Link/Rect[218.6 518.2 341.1 531.2]/Border[0 0 0]/A 506 0 R>>endobj
-508 0 obj<</S/URI/URI(http://support.microsoft.com/support/kb/articles/Q189/1/05.ASP)>>endobj
-509 0 obj<</Subtype/Link/Rect[72.0 293.8 355.9 306.8]/Border[0 0 0]/A 508 0 R>>endobj
-510 0 obj<</Subtype/Link/Rect[504.8 69.1 551.6 82.1]/Border[0 0 0]/Dest[1106 0 R/XYZ 0 267 0]>>endobj
-511 0 obj[505 0 R
+501 0 R
+502 0 R
+503 0 R
+504 0 R
+505 0 R
+506 0 R
 507 0 R
+508 0 R
 509 0 R
-510 0 R]endobj
-512 0 obj<</Subtype/Link/Rect[94.2 719.6 125.4 732.6]/Border[0 0 0]/Dest[1106 0 R/XYZ 0 267 0]>>endobj
-513 0 obj<</S/Launch/F(#WRITELIST)>>endobj
-514 0 obj<</Subtype/Link/Rect[91.9 357.3 157.9 370.3]/Border[0 0 0]/A 513 0 R>>endobj
-515 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-516 0 obj<</Subtype/Link/Rect[184.4 344.1 285.8 357.1]/Border[0 0 0]/A 515 0 R>>endobj
-517 0 obj<</S/Launch/F(#GUESTOK)>>endobj
-518 0 obj<</Subtype/Link/Rect[160.6 317.7 228.6 330.7]/Border[0 0 0]/A 517 0 R>>endobj
-519 0 obj<</S/Launch/F(#MAPTOGUEST)>>endobj
-520 0 obj<</Subtype/Link/Rect[501.3 207.8 536.7 220.8]/Border[0 0 0]/A 519 0 R>>endobj
-521 0 obj<</S/Launch/F(#MAPTOGUEST)>>endobj
-522 0 obj<</Subtype/Link/Rect[94.2 194.6 174.1 207.6]/Border[0 0 0]/A 521 0 R>>endobj
-523 0 obj[512 0 R
+510 0 R
+511 0 R
+512 0 R
+513 0 R
 514 0 R
+515 0 R
 516 0 R
+517 0 R
 518 0 R
+519 0 R
 520 0 R
-522 0 R]endobj
-524 0 obj<</S/Launch/F(#PRINTERADMIN)>>endobj
-525 0 obj<</Subtype/Link/Rect[451.3 607.5 537.1 620.5]/Border[0 0 0]/A 524 0 R>>endobj
-526 0 obj[525 0 R]endobj
-527 0 obj<</S/Launch/F(rpcclient.1.html)>>endobj
-528 0 obj<</Subtype/Link/Rect[233.6 649.4 379.3 662.4]/Border[0 0 0]/A 527 0 R>>endobj
-529 0 obj<</S/Launch/F(#SHOWADDPRINTERWIZARD)>>endobj
-530 0 obj<</Subtype/Link/Rect[108.0 239.4 299.4 252.4]/Border[0 0 0]/A 529 0 R>>endobj
-531 0 obj<</S/Launch/F(#ADDPRINTERCOMMAND)>>endobj
-532 0 obj<</Subtype/Link/Rect[453.9 213.0 526.5 226.0]/Border[0 0 0]/A 531 0 R>>endobj
-533 0 obj<</S/Launch/F(#ADDPRINTERCOMMAND)>>endobj
-534 0 obj<</Subtype/Link/Rect[72.0 199.8 118.2 212.8]/Border[0 0 0]/A 533 0 R>>endobj
-535 0 obj<</S/Launch/F(#DELETEPRINTERCOMMAND)>>endobj
-536 0 obj<</Subtype/Link/Rect[189.3 94.2 334.5 107.2]/Border[0 0 0]/A 535 0 R>>endobj
-537 0 obj[528 0 R
+521 0 R
+]endobj
+523 0 obj<</Subtype/Link/Rect[108.0 684.0 175.8 697.0]/Border[0 0 0]/Dest[1104 0 R/XYZ null 660 0]>>endobj
+524 0 obj<</Subtype/Link/Rect[108.0 670.8 169.4 683.8]/Border[0 0 0]/Dest[1104 0 R/XYZ null 469 0]>>endobj
+525 0 obj<</Subtype/Link/Rect[108.0 657.6 189.3 670.6]/Border[0 0 0]/Dest[1104 0 R/XYZ null 332 0]>>endobj
+526 0 obj<</Subtype/Link/Rect[108.0 644.4 174.6 657.4]/Border[0 0 0]/Dest[1107 0 R/XYZ null 768 0]>>endobj
+527 0 obj<</Subtype/Link/Rect[108.0 631.2 180.1 644.2]/Border[0 0 0]/Dest[1107 0 R/XYZ null 683 0]>>endobj
+528 0 obj<</Subtype/Link/Rect[108.0 618.0 180.1 631.0]/Border[0 0 0]/Dest[1107 0 R/XYZ null 585 0]>>endobj
+529 0 obj<</Subtype/Link/Rect[108.0 604.8 182.5 617.8]/Border[0 0 0]/Dest[1107 0 R/XYZ null 407 0]>>endobj
+530 0 obj<</Subtype/Link/Rect[108.0 591.6 208.2 604.6]/Border[0 0 0]/Dest[1107 0 R/XYZ null 270 0]>>endobj
+531 0 obj<</Subtype/Link/Rect[108.0 578.4 217.4 591.4]/Border[0 0 0]/Dest[1110 0 R/XYZ null 713 0]>>endobj
+532 0 obj<</Subtype/Link/Rect[108.0 565.2 194.8 578.2]/Border[0 0 0]/Dest[1110 0 R/XYZ null 535 0]>>endobj
+533 0 obj<</Subtype/Link/Rect[108.0 552.0 194.2 565.0]/Border[0 0 0]/Dest[1110 0 R/XYZ null 398 0]>>endobj
+534 0 obj<</Subtype/Link/Rect[108.0 538.8 196.0 551.8]/Border[0 0 0]/Dest[1110 0 R/XYZ null 313 0]>>endobj
+535 0 obj<</Subtype/Link/Rect[108.0 525.6 188.7 538.6]/Border[0 0 0]/Dest[1113 0 R/XYZ null 264 0]>>endobj
+536 0 obj<</Subtype/Link/Rect[72.0 499.2 228.8 512.2]/Border[0 0 0]/Dest[1119 0 R/XYZ null 798 0]>>endobj
+537 0 obj<</Subtype/Link/Rect[108.0 486.0 159.0 499.0]/Border[0 0 0]/Dest[1119 0 R/XYZ null 730 0]>>endobj
+538 0 obj<</Subtype/Link/Rect[108.0 472.8 499.0 485.8]/Border[0 0 0]/Dest[1119 0 R/XYZ null 700 0]>>endobj
+539 0 obj<</Subtype/Link/Rect[108.0 459.6 504.2 472.6]/Border[0 0 0]/Dest[1119 0 R/XYZ null 348 0]>>endobj
+540 0 obj<</Subtype/Link/Rect[108.0 446.4 455.7 459.4]/Border[0 0 0]/Dest[1122 0 R/XYZ null 768 0]>>endobj
+541 0 obj<</Subtype/Link/Rect[108.0 433.2 425.4 446.2]/Border[0 0 0]/Dest[1122 0 R/XYZ null 639 0]>>endobj
+542 0 obj<</Subtype/Link/Rect[72.0 406.8 342.4 419.8]/Border[0 0 0]/Dest[1125 0 R/XYZ null 798 0]>>endobj
+543 0 obj<</Subtype/Link/Rect[108.0 393.6 187.1 406.6]/Border[0 0 0]/Dest[1125 0 R/XYZ null 706 0]>>endobj
+544 0 obj<</Subtype/Link/Rect[108.0 380.4 247.6 393.4]/Border[0 0 0]/Dest[1125 0 R/XYZ null 582 0]>>endobj
+545 0 obj<</Subtype/Link/Rect[108.0 367.2 230.8 380.2]/Border[0 0 0]/Dest[1125 0 R/XYZ null 484 0]>>endobj
+546 0 obj<</Subtype/Link/Rect[108.0 354.0 205.8 367.0]/Border[0 0 0]/Dest[1125 0 R/XYZ null 359 0]>>endobj
+547 0 obj<</Subtype/Link/Rect[72.0 327.6 204.0 340.6]/Border[0 0 0]/Dest[1131 0 R/XYZ null 798 0]>>endobj
+548 0 obj<</Subtype/Link/Rect[108.0 314.4 187.1 327.4]/Border[0 0 0]/Dest[1131 0 R/XYZ null 730 0]>>endobj
+549 0 obj<</Subtype/Link/Rect[108.0 301.2 188.0 314.2]/Border[0 0 0]/Dest[1131 0 R/XYZ null 461 0]>>endobj
+550 0 obj<</Subtype/Link/Rect[108.0 288.0 190.5 301.0]/Border[0 0 0]/Dest[1131 0 R/XYZ null 310 0]>>endobj
+551 0 obj<</Subtype/Link/Rect[108.0 274.8 195.4 287.8]/Border[0 0 0]/Dest[1134 0 R/XYZ null 633 0]>>endobj
+552 0 obj<</Subtype/Link/Rect[108.0 261.6 267.8 274.6]/Border[0 0 0]/Dest[1134 0 R/XYZ null 271 0]>>endobj
+553 0 obj<</Subtype/Link/Rect[108.0 248.4 166.4 261.4]/Border[0 0 0]/Dest[1134 0 R/XYZ null 160 0]>>endobj
+554 0 obj<</Subtype/Link/Rect[72.0 235.2 97.0 248.2]/Border[0 0 0]/Dest[1137 0 R/XYZ null 741 0]>>endobj
+555 0 obj[523 0 R
+524 0 R
+525 0 R
+526 0 R
+527 0 R
+528 0 R
+529 0 R
 530 0 R
+531 0 R
 532 0 R
+533 0 R
 534 0 R
-536 0 R]endobj
-538 0 obj<</S/Launch/F(#ENUMPORTSCOMMAND)>>endobj
-539 0 obj<</Subtype/Link/Rect[451.4 585.4 510.8 598.4]/Border[0 0 0]/A 538 0 R>>endobj
-540 0 obj<</S/Launch/F(#ENUMPORTSCOMMAND)>>endobj
-541 0 obj<</Subtype/Link/Rect[72.0 572.2 118.2 585.2]/Border[0 0 0]/A 540 0 R>>endobj
-542 0 obj<</S/URI/URI(http://imprints.sourceforge.net/)>>endobj
-543 0 obj<</Subtype/Link/Rect[297.8 497.0 437.4 510.0]/Border[0 0 0]/A 542 0 R>>endobj
-544 0 obj[539 0 R
+535 0 R
+536 0 R
+537 0 R
+538 0 R
+539 0 R
+540 0 R
 541 0 R
-543 0 R]endobj
-545 0 obj<</S/URI/URI(http://imprints.sourceforge.net/)>>endobj
-546 0 obj<</Subtype/Link/Rect[409.9 694.6 549.5 707.6]/Border[0 0 0]/A 545 0 R>>endobj
-547 0 obj[546 0 R]endobj
-548 0 obj<</S/Launch/F(#SECURITY)>>endobj
-549 0 obj<</Subtype/Link/Rect[72.0 615.0 115.2 626.0]/Border[0 0 0]/A 548 0 R>>endobj
-550 0 obj<</S/Launch/F(DOMAIN_MEMBER.html)>>endobj
-551 0 obj<</Subtype/Link/Rect[430.0 589.0 554.1 602.0]/Border[0 0 0]/A 550 0 R>>endobj
-552 0 obj<</S/Launch/F(ADS-HOWTO.html)>>endobj
-553 0 obj<</Subtype/Link/Rect[223.0 562.6 317.8 575.6]/Border[0 0 0]/A 552 0 R>>endobj
-554 0 obj[549 0 R
+542 0 R
+543 0 R
+544 0 R
+545 0 R
+546 0 R
+547 0 R
+548 0 R
+549 0 R
+550 0 R
 551 0 R
-553 0 R]endobj
-555 0 obj<</S/Launch/F(smbpasswd.8.html)>>endobj
-556 0 obj<</Subtype/Link/Rect[218.7 452.2 284.9 465.2]/Border[0 0 0]/A 555 0 R>>endobj
-557 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-558 0 obj<</Subtype/Link/Rect[350.3 135.4 422.9 148.4]/Border[0 0 0]/A 557 0 R>>endobj
-559 0 obj<</S/Launch/F(#SECURITY)>>endobj
-560 0 obj<</Subtype/Link/Rect[169.1 95.8 235.1 108.8]/Border[0 0 0]/A 559 0 R>>endobj
-561 0 obj[556 0 R
-558 0 R
-560 0 R]endobj
-562 0 obj<</S/Launch/F(#WORKGROUP)>>endobj
-563 0 obj<</Subtype/Link/Rect[146.2 721.0 225.4 734.0]/Border[0 0 0]/A 562 0 R>>endobj
-564 0 obj<</S/Launch/F(#ENCRYPTPASSWORDS)>>endobj
-565 0 obj<</Subtype/Link/Rect[224.7 641.8 336.9 654.8]/Border[0 0 0]/A 564 0 R>>endobj
-566 0 obj<</S/Launch/F(#PASSWORDSERVER)>>endobj
-567 0 obj<</Subtype/Link/Rect[188.7 602.2 300.9 615.2]/Border[0 0 0]/A 566 0 R>>endobj
-568 0 obj<</S/Launch/F(#SECURITYEQUALSSERVER)>>endobj
-569 0 obj<</Subtype/Link/Rect[275.2 69.0 351.3 82.0]/Border[0 0 0]/A 568 0 R>>endobj
-570 0 obj[563 0 R
-565 0 R
-567 0 R
-569 0 R]endobj
-571 0 obj<</S/Launch/F(winbind.html)>>endobj
-572 0 obj<</Subtype/Link/Rect[151.1 681.4 219.5 694.4]/Border[0 0 0]/A 571 0 R>>endobj
-573 0 obj<</S/URI/URI(http://www.linuxworld.com)>>endobj
-574 0 obj<</Subtype/Link/Rect[438.0 364.6 495.1 377.6]/Border[0 0 0]/A 573 0 R>>endobj
-575 0 obj<</S/URI/URI(http://www.linuxworld.com/linuxworld/lw-1998-10/lw-10-samba.html)>>endobj
-576 0 obj<</Subtype/Link/Rect[72.0 351.4 186.6 364.4]/Border[0 0 0]/A 575 0 R>>endobj
-577 0 obj[572 0 R
-574 0 R
-576 0 R]endobj
-578 0 obj<</S/URI/URI(mailto:jtrostel@snapserver.com)>>endobj
-579 0 obj<</Subtype/Link/Rect[197.9 304.6 310.1 317.6]/Border[0 0 0]/A 578 0 R>>endobj
-580 0 obj[579 0 R]endobj
-581 0 obj<</S/URI/URI(http://samba.org/)>>endobj
-582 0 obj<</Subtype/Link/Rect[151.1 438.2 262.3 451.2]/Border[0 0 0]/A 581 0 R>>endobj
-583 0 obj[582 0 R]endobj
-584 0 obj<</S/Launch/F(winbindd.8.html)>>endobj
-585 0 obj<</Subtype/Link/Rect[306.3 235.8 363.4 248.8]/Border[0 0 0]/A 584 0 R>>endobj
-586 0 obj<</S/Launch/F(#WINBINDSEPARATOR)>>endobj
-587 0 obj<</Subtype/Link/Rect[99.0 165.8 190.8 176.8]/Border[0 0 0]/A 586 0 R>>endobj
-588 0 obj<</S/Launch/F(#WINBINDUID)>>endobj
-589 0 obj<</Subtype/Link/Rect[99.0 144.2 158.4 155.2]/Border[0 0 0]/A 588 0 R>>endobj
-590 0 obj<</S/Launch/F(#WINBINDGID)>>endobj
-591 0 obj<</Subtype/Link/Rect[99.0 122.6 158.4 133.6]/Border[0 0 0]/A 590 0 R>>endobj
-592 0 obj<</S/Launch/F(#WINBINDENUMUSERS)>>endobj
-593 0 obj<</Subtype/Link/Rect[99.0 101.0 196.2 112.0]/Border[0 0 0]/A 592 0 R>>endobj
-594 0 obj<</S/Launch/F(#WINBINDENUMGROUP)>>endobj
-595 0 obj<</Subtype/Link/Rect[99.0 90.2 201.6 101.2]/Border[0 0 0]/A 594 0 R>>endobj
-596 0 obj<</S/Launch/F(#TEMPLATEHOMEDIR)>>endobj
-597 0 obj<</Subtype/Link/Rect[99.0 68.6 185.4 79.6]/Border[0 0 0]/A 596 0 R>>endobj
-598 0 obj<</S/Launch/F(#TEMPLATESHELL)>>endobj
-599 0 obj<</Subtype/Link/Rect[99.0 57.8 174.6 68.8]/Border[0 0 0]/A 598 0 R>>endobj
-600 0 obj[585 0 R
-587 0 R
-589 0 R
-591 0 R
-593 0 R
-595 0 R
-597 0 R
-599 0 R]endobj
-601 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-602 0 obj<</Subtype/Link/Rect[153.2 599.8 225.8 612.8]/Border[0 0 0]/A 601 0 R>>endobj
-603 0 obj<</S/Launch/F(ENCRYPTION.html)>>endobj
-604 0 obj<</Subtype/Link/Rect[303.1 599.8 389.9 612.8]/Border[0 0 0]/A 603 0 R>>endobj
-605 0 obj<</S/Launch/F(UNIX_INSTALL.html)>>endobj
-606 0 obj<</Subtype/Link/Rect[333.5 442.5 438.0 455.5]/Border[0 0 0]/A 605 0 R>>endobj
-607 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-608 0 obj<</Subtype/Link/Rect[440.4 429.3 541.8 442.3]/Border[0 0 0]/A 607 0 R>>endobj
-609 0 obj[602 0 R
-604 0 R
-606 0 R
-608 0 R]endobj
-610 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-611 0 obj<</Subtype/Link/Rect[465.5 659.0 546.8 672.0]/Border[0 0 0]/A 610 0 R>>endobj
-612 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-613 0 obj<</Subtype/Link/Rect[72.0 645.8 92.8 658.8]/Border[0 0 0]/A 612 0 R>>endobj
-614 0 obj<</S/Launch/F(#NETBIOSNAME)>>endobj
-615 0 obj<</Subtype/Link/Rect[93.6 573.4 158.4 584.4]/Border[0 0 0]/A 614 0 R>>endobj
-616 0 obj<</S/Launch/F(#WORKGROUP)>>endobj
-617 0 obj<</Subtype/Link/Rect[93.6 562.6 142.2 573.6]/Border[0 0 0]/A 616 0 R>>endobj
-618 0 obj<</S/Launch/F(#OSLEVEL)>>endobj
-619 0 obj<</Subtype/Link/Rect[93.6 530.2 136.8 541.2]/Border[0 0 0]/A 618 0 R>>endobj
-620 0 obj<</S/Launch/F(#PERFERREDMASTER)>>endobj
-621 0 obj<</Subtype/Link/Rect[93.6 519.4 180.0 530.4]/Border[0 0 0]/A 620 0 R>>endobj
-622 0 obj<</S/Launch/F(#DOMAINMASTER)>>endobj
-623 0 obj<</Subtype/Link/Rect[93.6 508.6 163.8 519.6]/Border[0 0 0]/A 622 0 R>>endobj
-624 0 obj<</S/Launch/F(#LOCALMASTER)>>endobj
-625 0 obj<</Subtype/Link/Rect[93.6 497.8 158.4 508.8]/Border[0 0 0]/A 624 0 R>>endobj
-626 0 obj<</S/Launch/F(#SECURITYEQUALSUSER)>>endobj
-627 0 obj<</Subtype/Link/Rect[93.6 465.4 136.8 476.4]/Border[0 0 0]/A 626 0 R>>endobj
-628 0 obj<</S/Launch/F(#ENCRYPTPASSWORDS)>>endobj
-629 0 obj<</Subtype/Link/Rect[93.6 433.0 185.4 444.0]/Border[0 0 0]/A 628 0 R>>endobj
-630 0 obj<</S/Launch/F(#DOMAINLOGONS)>>endobj
-631 0 obj<</Subtype/Link/Rect[93.6 400.6 163.8 411.6]/Border[0 0 0]/A 630 0 R>>endobj
-632 0 obj<</S/Launch/F(#LOGONPATH)>>endobj
-633 0 obj<</Subtype/Link/Rect[93.6 368.2 147.6 379.2]/Border[0 0 0]/A 632 0 R>>endobj
-634 0 obj<</S/Launch/F(#LOGONDRIVE)>>endobj
-635 0 obj<</Subtype/Link/Rect[93.6 325.0 153.0 336.0]/Border[0 0 0]/A 634 0 R>>endobj
-636 0 obj<</S/Launch/F(#LOGONHOME)>>endobj
-637 0 obj<</Subtype/Link/Rect[93.6 314.2 147.6 325.2]/Border[0 0 0]/A 636 0 R>>endobj
-638 0 obj<</S/Launch/F(#LOGONSCRIPT)>>endobj
-639 0 obj<</Subtype/Link/Rect[93.6 271.0 158.4 282.0]/Border[0 0 0]/A 638 0 R>>endobj
-640 0 obj<</S/Launch/F(#PATH)>>endobj
-641 0 obj<</Subtype/Link/Rect[93.6 227.8 115.2 238.8]/Border[0 0 0]/A 640 0 R>>endobj
-642 0 obj<</S/Launch/F(#READONLY)>>endobj
-643 0 obj<</Subtype/Link/Rect[93.6 217.0 142.2 228.0]/Border[0 0 0]/A 642 0 R>>endobj
-644 0 obj<</S/Launch/F(#WRITELIST)>>endobj
-645 0 obj<</Subtype/Link/Rect[93.6 206.2 147.6 217.2]/Border[0 0 0]/A 644 0 R>>endobj
-646 0 obj<</S/Launch/F(#PATH)>>endobj
-647 0 obj<</Subtype/Link/Rect[93.6 163.0 115.2 174.0]/Border[0 0 0]/A 646 0 R>>endobj
-648 0 obj<</S/Launch/F(#READONLY)>>endobj
-649 0 obj<</Subtype/Link/Rect[93.6 152.2 142.2 163.2]/Border[0 0 0]/A 648 0 R>>endobj
-650 0 obj<</S/Launch/F(#CREATEMASK)>>endobj
-651 0 obj<</Subtype/Link/Rect[93.6 141.4 153.0 152.4]/Border[0 0 0]/A 650 0 R>>endobj
-652 0 obj<</S/Launch/F(#DIRECTORYMASK)>>endobj
-653 0 obj<</Subtype/Link/Rect[93.6 130.6 169.2 141.6]/Border[0 0 0]/A 652 0 R>>endobj
-654 0 obj<</S/Launch/F(ENCRYPTION.html)>>endobj
-655 0 obj<</Subtype/Link/Rect[108.0 65.0 200.6 78.0]/Border[0 0 0]/A 654 0 R>>endobj
-656 0 obj[611 0 R
-613 0 R
-615 0 R
-617 0 R
-619 0 R
-621 0 R
-623 0 R
-625 0 R
-627 0 R
-629 0 R
-631 0 R
-633 0 R
-635 0 R
-637 0 R
-639 0 R
-641 0 R
-643 0 R
-645 0 R
-647 0 R
-649 0 R
-651 0 R
-653 0 R
-655 0 R]endobj
-657 0 obj<</S/Launch/F(#DOMAINADMINGROUP)>>endobj
-658 0 obj<</Subtype/Link/Rect[494.2 641.8 530.0 654.8]/Border[0 0 0]/A 657 0 R>>endobj
-659 0 obj<</S/Launch/F(#DOMAINADMINGROUP)>>endobj
-660 0 obj<</Subtype/Link/Rect[72.0 628.6 127.9 641.6]/Border[0 0 0]/A 659 0 R>>endobj
-661 0 obj[658 0 R
-660 0 R]endobj
-662 0 obj<</S/Launch/F(smbpasswd.8.html)>>endobj
-663 0 obj<</Subtype/Link/Rect[72.0 551.8 138.6 564.8]/Border[0 0 0]/A 662 0 R>>endobj
-664 0 obj<</S/Launch/F(#ADDUSERSCRIPT)>>endobj
-665 0 obj<</Subtype/Link/Rect[420.0 263.3 486.9 276.3]/Border[0 0 0]/A 664 0 R>>endobj
-666 0 obj[663 0 R
-665 0 R]endobj
-667 0 obj<</S/URI/URI(http://www.microsoft.com/ntserver/management/deployment/planguide/prof_policies.asp)>>endobj
-668 0 obj<</Subtype/Link/Rect[139.8 135.8 387.6 148.8]/Border[0 0 0]/A 667 0 R>>endobj
-669 0 obj[668 0 R]endobj
-670 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/Softlib/MSLFILES/NEXUS.EXE)>>endobj
-671 0 obj<</Subtype/Link/Rect[285.2 259.0 540.0 272.0]/Border[0 0 0]/A 670 0 R>>endobj
-672 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/Softlib/MSLFILES/SRVTOOLS.EXE)>>endobj
-673 0 obj<</Subtype/Link/Rect[230.8 219.4 505.8 232.4]/Border[0 0 0]/A 672 0 R>>endobj
-674 0 obj[671 0 R
-673 0 R]endobj
-675 0 obj<</S/URI/URI(http://www.tcpdump.org/)>>endobj
-676 0 obj<</Subtype/Link/Rect[349.4 483.4 455.4 496.4]/Border[0 0 0]/A 675 0 R>>endobj
-677 0 obj<</S/URI/URI(http://www.ethereal.com/)>>endobj
-678 0 obj<</Subtype/Link/Rect[424.5 470.2 536.6 483.2]/Border[0 0 0]/A 677 0 R>>endobj
-679 0 obj[676 0 R
-678 0 R]endobj
-680 0 obj<</S/URI/URI(http://samba.org)>>endobj
-681 0 obj<</Subtype/Link/Rect[233.5 602.2 308.1 615.2]/Border[0 0 0]/A 680 0 R>>endobj
-682 0 obj<</S/URI/URI(http://www.skippy.net/linux/smb-howto.html)>>endobj
-683 0 obj<</Subtype/Link/Rect[144.0 549.4 346.1 562.4]/Border[0 0 0]/A 682 0 R>>endobj
-684 0 obj<</S/URI/URI(http://bioserve.latrobe.edu.au/samba)>>endobj
-685 0 obj<</Subtype/Link/Rect[179.7 523.0 342.3 536.0]/Border[0 0 0]/A 684 0 R>>endobj
-686 0 obj<</S/URI/URI(http://samba.org/cifs/)>>endobj
-687 0 obj<</Subtype/Link/Rect[282.1 509.8 378.7 522.8]/Border[0 0 0]/A 686 0 R>>endobj
-688 0 obj<</S/URI/URI(http://mailhost.cb1.com/~lkcl/ntdom/)>>endobj
-689 0 obj<</Subtype/Link/Rect[241.5 496.6 408.5 509.6]/Border[0 0 0]/A 688 0 R>>endobj
-690 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/developr/drg/CIFS/)>>endobj
-691 0 obj<</Subtype/Link/Rect[277.5 483.4 469.1 496.4]/Border[0 0 0]/A 690 0 R>>endobj
-692 0 obj<</S/URI/URI(http://samba.org)>>endobj
-693 0 obj<</Subtype/Link/Rect[358.2 430.6 432.8 443.6]/Border[0 0 0]/A 692 0 R>>endobj
-694 0 obj<</S/URI/URI(http://www.samba-tng.org/)>>endobj
-695 0 obj<</Subtype/Link/Rect[298.4 391.0 422.8 404.0]/Border[0 0 0]/A 694 0 R>>endobj
-696 0 obj[681 0 R
-683 0 R
-685 0 R
-687 0 R
-689 0 R
-691 0 R
-693 0 R
-695 0 R]endobj
-697 0 obj<</S/URI/URI(http://lists.samba.org/)>>endobj
-698 0 obj<</Subtype/Link/Rect[132.8 615.4 227.8 628.4]/Border[0 0 0]/A 697 0 R>>endobj
-699 0 obj<</S/URI/URI(http://lists.samba.org/mailman/roster/samba-ntdom)>>endobj
-700 0 obj<</Subtype/Link/Rect[306.3 602.2 328.0 615.2]/Border[0 0 0]/A 699 0 R>>endobj
-701 0 obj[698 0 R
-700 0 R]endobj
-702 0 obj<</S/Launch/F(Samba-PDC-HOWTO.html)>>endobj
-703 0 obj<</Subtype/Link/Rect[210.4 613.0 317.8 626.0]/Border[0 0 0]/A 702 0 R>>endobj
-704 0 obj[703 0 R]endobj
-705 0 obj<</S/URI/URI(http://www.openldap.org/)>>endobj
-706 0 obj<</Subtype/Link/Rect[169.5 560.2 285.9 573.2]/Border[0 0 0]/A 705 0 R>>endobj
-707 0 obj<</S/URI/URI(http://iplanet.netscape.com/directory)>>endobj
-708 0 obj<</Subtype/Link/Rect[223.9 547.0 387.9 560.0]/Border[0 0 0]/A 707 0 R>>endobj
-709 0 obj<</S/URI/URI(http://www.ora.com/)>>endobj
-710 0 obj<</Subtype/Link/Rect[112.6 520.6 202.0 533.6]/Border[0 0 0]/A 709 0 R>>endobj
-711 0 obj<</S/URI/URI(http://www.unav.es/cti/ldap-smb/ldap-smb-2_2-howto.html)>>endobj
-712 0 obj<</Subtype/Link/Rect[125.1 454.6 267.5 467.6]/Border[0 0 0]/A 711 0 R>>endobj
-713 0 obj<</S/URI/URI(http://samba.idealx.org/)>>endobj
-714 0 obj<</Subtype/Link/Rect[243.7 441.4 287.3 454.4]/Border[0 0 0]/A 713 0 R>>endobj
-715 0 obj<</S/Launch/F(#ENCRYPTPASSWORDS)>>endobj
-716 0 obj<</Subtype/Link/Rect[212.8 366.2 332.5 379.2]/Border[0 0 0]/A 715 0 R>>endobj
-717 0 obj[706 0 R
-708 0 R
-710 0 R
-712 0 R
-714 0 R
-716 0 R]endobj
-718 0 obj<</S/URI/URI(http://www.padl.com/)>>endobj
-719 0 obj<</Subtype/Link/Rect[284.3 602.2 380.9 615.2]/Border[0 0 0]/A 718 0 R>>endobj
-720 0 obj<</S/Launch/F(samba-patches@samba.org)>>endobj
-721 0 obj<</Subtype/Link/Rect[332.3 487.4 458.0 500.4]/Border[0 0 0]/A 720 0 R>>endobj
-722 0 obj<</S/Launch/F(jerry@samba.org)>>endobj
-723 0 obj<</Subtype/Link/Rect[476.6 487.4 555.8 500.4]/Border[0 0 0]/A 722 0 R>>endobj
-724 0 obj<</S/Launch/F(jerry@samba.org)>>endobj
-725 0 obj<</Subtype/Link/Rect[271.2 237.0 350.4 250.0]/Border[0 0 0]/A 724 0 R>>endobj
-726 0 obj[719 0 R
-721 0 R
-723 0 R
-725 0 R]endobj
-727 0 obj<</S/Launch/F(#LDAPSSL)>>endobj
-728 0 obj<</Subtype/Link/Rect[108.0 61.4 141.3 74.4]/Border[0 0 0]/A 727 0 R>>endobj
-729 0 obj[728 0 R]endobj
-730 0 obj<</S/Launch/F(#LDAPSERVER)>>endobj
-731 0 obj<</Subtype/Link/Rect[108.0 721.0 156.6 734.0]/Border[0 0 0]/A 730 0 R>>endobj
-732 0 obj<</S/Launch/F(#LDAPADMINDN)>>endobj
-733 0 obj<</Subtype/Link/Rect[108.0 707.8 170.9 720.8]/Border[0 0 0]/A 732 0 R>>endobj
-734 0 obj<</S/Launch/F(#LDAPSUFFIX)>>endobj
-735 0 obj<</Subtype/Link/Rect[108.0 694.6 155.4 707.6]/Border[0 0 0]/A 734 0 R>>endobj
-736 0 obj<</S/Launch/F(#LDAPFILTER)>>endobj
-737 0 obj<</Subtype/Link/Rect[108.0 681.4 151.1 694.4]/Border[0 0 0]/A 736 0 R>>endobj
-738 0 obj<</S/Launch/F(#LDAPPORT)>>endobj
-739 0 obj<</Subtype/Link/Rect[108.0 668.2 147.4 681.2]/Border[0 0 0]/A 738 0 R>>endobj
-740 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-741 0 obj<</Subtype/Link/Rect[186.9 641.8 243.1 654.8]/Border[0 0 0]/A 740 0 R>>endobj
-742 0 obj[731 0 R
-733 0 R
-735 0 R
-737 0 R
-739 0 R
-741 0 R]endobj
-743 0 obj<</S/Launch/F(ENCRYPTION.html)>>endobj
-744 0 obj<</Subtype/Link/Rect[72.0 566.6 176.8 579.6]/Border[0 0 0]/A 743 0 R>>endobj
-745 0 obj[744 0 R]endobj
-746 0 obj<</S/Launch/F(Samba-PDC-HOWTO.html)>>endobj
-747 0 obj<</Subtype/Link/Rect[72.0 523.0 176.7 536.0]/Border[0 0 0]/A 746 0 R>>endobj
-748 0 obj[747 0 R]endobj
-749 0 obj<</S/URI/URI(mailto:jerry@samba.org)>>endobj
-750 0 obj<</Subtype/Link/Rect[302.7 445.4 381.8 458.4]/Border[0 0 0]/A 749 0 R>>endobj
-751 0 obj[750 0 R]endobj
-752 0 obj<</S/URI/URI(http://carol.wins.uva.nl/~leeuw/samba/warp.html)>>endobj
-753 0 obj<</Subtype/Link/Rect[325.6 603.4 544.5 616.4]/Border[0 0 0]/A 752 0 R>>endobj
-754 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/BusSys/Clients/LANMAN.OS2/)>>endobj
-755 0 obj<</Subtype/Link/Rect[72.0 251.0 319.2 264.0]/Border[0 0 0]/A 754 0 R>>endobj
-756 0 obj<</S/URI/URI(http://carol.wins.uva.nl/~leeuw/lanman.html)>>endobj
-757 0 obj<</Subtype/Link/Rect[340.6 251.0 538.7 264.0]/Border[0 0 0]/A 756 0 R>>endobj
-758 0 obj<</S/URI/URI(ftp://ftp.cdrom.com/pub/os2/network/ndis/)>>endobj
-759 0 obj<</Subtype/Link/Rect[173.1 128.6 363.5 141.6]/Border[0 0 0]/A 758 0 R>>endobj
-760 0 obj[753 0 R
-755 0 R
-757 0 R
-759 0 R]endobj
-761 0 obj<</S/URI/URI(http://carol.wins.uva.nl/~leeuw/samba/fix.html)>>endobj
-762 0 obj<</Subtype/Link/Rect[220.2 661.0 429.3 674.0]/Border[0 0 0]/A 761 0 R>>endobj
-763 0 obj[762 0 R]endobj
-764 0 obj<</S/URI/URI(http://samba.org/samba/cvs.html)>>endobj
-765 0 obj<</Subtype/Link/Rect[354.3 573.4 500.7 586.4]/Border[0 0 0]/A 764 0 R>>endobj
-766 0 obj<</S/URI/URI(http://samba.org/cgi-bin/cvsweb)>>endobj
-767 0 obj<</Subtype/Link/Rect[135.9 373.8 283.2 386.8]/Border[0 0 0]/A 766 0 R>>endobj
-768 0 obj<</S/URI/URI(http://www.cyclic.com/)>>endobj
-769 0 obj<</Subtype/Link/Rect[391.6 262.6 498.2 275.6]/Border[0 0 0]/A 768 0 R>>endobj
-770 0 obj[765 0 R
-767 0 R
-769 0 R]endobj
-771 0 obj<</S/Launch/F(Diagnosis.html)>>endobj
-772 0 obj<</Subtype/Link/Rect[185.0 350.6 229.3 363.6]/Border[0 0 0]/A 771 0 R>>endobj
-773 0 obj[772 0 R]endobj
-774 0 obj<</Dests 775 0 R>>endobj
-775 0 obj<</Kids[776 0 R]>>endobj
-776 0 obj<</Limits[(aen1022)(winbind)]/Names[(aen1022)777 0 R(aen1030)778 0 R(aen1034)779 0 R(aen1044)780 0 R(aen1047)781 0 R(aen1051)782 0 R(aen1073)783 0 R(aen1119)784 0 R(aen1135)785 0 R(aen1144)786 0 R(aen1152)787 0 R(aen1180)788 0 R(aen119)789 0 R(aen1191)790 0 R(aen1203)791 0 R(aen1206)792 0 R(aen1209)793 0 R(aen1222)794 0 R(aen1233)795 0 R(aen1266)796 0 R(aen1330)797 0 R(aen1335)798 0 R(aen135)799 0 R(aen1388)800 0 R(aen1392)801 0 R(aen1405)802 0 R(aen1412)803 0 R(aen1416)804 0 R(aen1421)805 0 R(aen1425)806 0 R(aen144)807 0 R(aen1441)808 0 R(aen1449)809 0 R(aen1453)810 0 R(aen1456)811 0 R(aen1463)812 0 R(aen1476)813 0 R(aen1490)814 0 R(aen1501)815 0 R(aen1520)816 0 R(aen1553)817 0 R(aen1569)818 0 R(aen1580)819 0 R(aen160)820 0 R(aen1616)821 0 R(aen1618)822 0 R(aen1635)823 0 R(aen1642)824 0 R(aen1648)825 0 R(aen1665)826 0 R(aen1698)827 0 R(aen1705)828 0 R(aen1715)829 0 R(aen1735)830 0 R(aen174)831 0 R(aen1741)832 0 R(aen1780)833 0 R(aen179)834 0 R(aen1823)835 0 R(aen183)836 0 R(aen1842)837 0 R(aen186)838 0 R(aen1877)839 0 R(aen1886)840 0 R(aen1901)841 0 R(aen1949)842 0 R(aen195)843 0 R(aen199)844 0 R(aen1993)845 0 R(aen20)846 0 R(aen208)847 0 R(aen2107)848 0 R(aen2133)849 0 R(aen2152)850 0 R(aen2160)851 0 R(aen2168)852 0 R(aen2176)853 0 R(aen2183)854 0 R(aen2219)855 0 R(aen222)856 0 R(aen2232)857 0 R(aen2235)858 0 R(aen2245)859 0 R(aen227)860 0 R(aen2281)861 0 R(aen2285)862 0 R(aen2293)863 0 R(aen2296)864 0 R(aen2299)865 0 R(aen2302)866 0 R(aen2306)867 0 R(aen2322)868 0 R(aen2343)869 0 R(aen2363)870 0 R(aen237)871 0 R(aen239)872 0 R(aen2392)873 0 R(aen2397)874 0 R(aen2409)875 0 R(aen2411)876 0 R(aen2428)877 0 R(aen245)878 0 R(aen2456)879 0 R(aen2461)880 0 R(aen2481)881 0 R(aen251)882 0 R(aen2551)883 0 R(aen2559)884 0 R(aen2570)885 0 R(aen2574)886 0 R(aen2583)887 0 R(aen2590)888 0 R(aen2595)889 0 R(aen2630)890 0 R(aen2649)891 0 R(aen266)892 0 R(aen2667)893 0 R(aen2677)894 0 R(aen2686)895 0 R(aen2704)896 0 R(aen2707)897 0 R(aen271)898 0 R(aen2725)899 0 R(aen2731)900 0 R(aen2733)901 0 R(aen2741)902 0 R(aen2747)903 0 R(aen2751)904 0 R(aen2758)905 0 R(aen2763)906 0 R(aen2768)907 0 R(aen277)908 0 R(aen2772)909 0 R(aen2777)910 0 R(aen2780)911 0 R(aen2783)912 0 R(aen2788)913 0 R(aen2792)914 0 R(aen2799)915 0 R(aen28)916 0 R(aen2804)917 0 R(aen2808)918 0 R(aen2811)919 0 R(aen2843)920 0 R(aen285)921 0 R(aen2860)922 0 R(aen2862)923 0 R(aen2877)924 0 R(aen2886)925 0 R(aen2890)926 0 R(aen2906)927 0 R(aen2911)928 0 R(aen2914)929 0 R(aen2919)930 0 R(aen2954)931 0 R(aen2961)932 0 R(aen2967)933 0 R(aen2984)934 0 R(aen2994)935 0 R(aen2997)936 0 R(aen311)937 0 R(aen328)938 0 R(aen333)939 0 R(aen339)940 0 R(aen344)941 0 R(aen361)942 0 R(aen383)943 0 R(aen399)944 0 R(aen4)945 0 R(aen415)946 0 R(aen426)947 0 R(aen434)948 0 R(aen446)949 0 R(aen458)950 0 R(aen463)951 0 R(aen471)952 0 R(aen476)953 0 R(aen479)954 0 R(aen491)955 0 R(aen501)956 0 R(aen529)957 0 R(aen537)958 0 R(aen554)959 0 R(aen56)960 0 R(aen561)961 0 R(aen566)962 0 R(aen571)963 0 R(aen592)964 0 R(aen60)965 0 R(aen636)966 0 R(aen643)967 0 R(aen663)968 0 R(aen698)969 0 R(aen718)970 0 R(aen727)971 0 R(aen738)972 0 R(aen74)973 0 R(aen758)974 0 R(aen773)975 0 R(aen787)976 0 R(aen794)977 0 R(aen8)978 0 R(aen80)979 0 R(aen816)980 0 R(aen880)981 0 R(aen90)982 0 R(aen901)983 0 R(aen923)984 0 R(aen934)985 0 R(aen969)986 0 R(aen986)987 0 R(aen997)988 0 R(bugreport)989 0 R(cvs-access)990 0 R(diagnosis)991 0 R(domain-security)992 0 R(improved-browsing)993 0 R(install)994 0 R(integrate-ms-networks)995 0 R(migration)996 0 R(msdfs)997 0 R(os2)998 0 R(pam)999 0 R(printing)1000 0 R(printingdebug)1001 0 R(samba-bdc)1002 0 R(samba-howto-collection.html)1003 0 R(samba-ldap-howto)1004 0 R(samba-pdc)1005 0 R(samba-project-documentation)1006 0 R(securitylevels)1007 0 R(speed)1008 0 R(unix-permissions)1009 0 R(winbind)1010 0 R]>>endobj
-777 0 obj<</D[1104 0 R/XYZ 0 734 0]>>endobj
-778 0 obj<</D[1104 0 R/XYZ 0 556 0]>>endobj
-779 0 obj<</D[1104 0 R/XYZ 0 455 0]>>endobj
-780 0 obj<</D[1104 0 R/XYZ 0 330 0]>>endobj
-781 0 obj<</D[1104 0 R/XYZ 0 245 0]>>endobj
-782 0 obj<</D[1104 0 R/XYZ 0 147 0]>>endobj
-783 0 obj<</D[1106 0 R/XYZ 0 267 0]>>endobj
-784 0 obj<</D[1110 0 R/XYZ 0 696 0]>>endobj
-785 0 obj<</D[1112 0 R/XYZ 0 734 0]>>endobj
-786 0 obj<</D[1112 0 R/XYZ 0 278 0]>>endobj
-787 0 obj<</D[1114 0 R/XYZ 0 734 0]>>endobj
-788 0 obj<</D[1114 0 R/XYZ 0 304 0]>>endobj
-789 0 obj<</D[1038 0 R/XYZ 0 303 0]>>endobj
-790 0 obj<</D[1116 0 R/XYZ 0 646 0]>>endobj
-791 0 obj<</D[1116 0 R/XYZ 0 299 0]>>endobj
-792 0 obj<</D[1116 0 R/XYZ 0 210 0]>>endobj
-793 0 obj<</D[1118 0 R/XYZ 0 734 0]>>endobj
-794 0 obj<</D[1120 0 R/XYZ 0 696 0]>>endobj
-795 0 obj<</D[1120 0 R/XYZ 0 467 0]>>endobj
-796 0 obj<</D[1124 0 R/XYZ 0 696 0]>>endobj
-797 0 obj<</D[1126 0 R/XYZ 0 362 0]>>endobj
-798 0 obj<</D[1126 0 R/XYZ 0 155 0]>>endobj
-799 0 obj<</D[1040 0 R/XYZ 0 718 0]>>endobj
-800 0 obj<</D[1130 0 R/XYZ 0 672 0]>>endobj
-801 0 obj<</D[1130 0 R/XYZ 0 544 0]>>endobj
-802 0 obj<</D[1130 0 R/XYZ 0 231 0]>>endobj
-803 0 obj<</D[1132 0 R/XYZ 0 560 0]>>endobj
-804 0 obj<</D[1132 0 R/XYZ 0 409 0]>>endobj
-805 0 obj<</D[1132 0 R/XYZ 0 294 0]>>endobj
-806 0 obj<</D[1134 0 R/XYZ 0 734 0]>>endobj
-807 0 obj<</D[1040 0 R/XYZ 0 551 0]>>endobj
-808 0 obj<</D[1134 0 R/XYZ 0 292 0]>>endobj
-809 0 obj<</D[1136 0 R/XYZ 0 665 0]>>endobj
-810 0 obj<</D[1136 0 R/XYZ 0 488 0]>>endobj
-811 0 obj<</D[1136 0 R/XYZ 0 351 0]>>endobj
-812 0 obj<</D[1136 0 R/XYZ 0 209 0]>>endobj
-813 0 obj<</D[1138 0 R/XYZ 0 599 0]>>endobj
-814 0 obj<</D[1138 0 R/XYZ 0 330 0]>>endobj
-815 0 obj<</D[1138 0 R/XYZ 0 192 0]>>endobj
-816 0 obj<</D[1140 0 R/XYZ 0 692 0]>>endobj
-817 0 obj<</D[1140 0 R/XYZ 0 288 0]>>endobj
-818 0 obj<</D[1142 0 R/XYZ 0 718 0]>>endobj
-819 0 obj<</D[1142 0 R/XYZ 0 571 0]>>endobj
-820 0 obj<</D[1040 0 R/XYZ 0 383 0]>>endobj
-821 0 obj<</D[1144 0 R/XYZ 0 527 0]>>endobj
-822 0 obj<</D[1144 0 R/XYZ 0 501 0]>>endobj
-823 0 obj<</D[1146 0 R/XYZ 0 600 0]>>endobj
-824 0 obj<</D[1148 0 R/XYZ 0 686 0]>>endobj
-825 0 obj<</D[1148 0 R/XYZ 0 620 0]>>endobj
-826 0 obj<</D[1148 0 R/XYZ 0 381 0]>>endobj
-827 0 obj<</D[1150 0 R/XYZ 0 429 0]>>endobj
-828 0 obj<</D[1152 0 R/XYZ 0 296 0]>>endobj
-829 0 obj<</D[1154 0 R/XYZ 0 734 0]>>endobj
-830 0 obj<</D[1156 0 R/XYZ 0 672 0]>>endobj
-831 0 obj<</D[1040 0 R/XYZ 0 169 0]>>endobj
-832 0 obj<</D[1156 0 R/XYZ 0 584 0]>>endobj
-833 0 obj<</D[1158 0 R/XYZ 0 718 0]>>endobj
-834 0 obj<</D[1042 0 R/XYZ 0 652 0]>>endobj
-835 0 obj<</D[1160 0 R/XYZ 0 613 0]>>endobj
-836 0 obj<</D[1042 0 R/XYZ 0 594 0]>>endobj
-837 0 obj<</D[1160 0 R/XYZ 0 227 0]>>endobj
-838 0 obj<</D[1042 0 R/XYZ 0 509 0]>>endobj
-839 0 obj<</D[1162 0 R/XYZ 0 359 0]>>endobj
-840 0 obj<</D[1162 0 R/XYZ 0 149 0]>>endobj
-841 0 obj<</D[1164 0 R/XYZ 0 467 0]>>endobj
-842 0 obj<</D[1166 0 R/XYZ 0 208 0]>>endobj
-843 0 obj<</D[1042 0 R/XYZ 0 200 0]>>endobj
-844 0 obj<</D[1044 0 R/XYZ 0 734 0]>>endobj
-845 0 obj<</D[1168 0 R/XYZ 0 203 0]>>endobj
-846 0 obj<</D[1034 0 R/XYZ 0 696 0]>>endobj
-847 0 obj<</D[1044 0 R/XYZ 0 279 0]>>endobj
-848 0 obj<</D[1174 0 R/XYZ 0 547 0]>>endobj
-849 0 obj<</D[1176 0 R/XYZ 0 560 0]>>endobj
-850 0 obj<</D[1176 0 R/XYZ 0 126 0]>>endobj
-851 0 obj<</D[1178 0 R/XYZ 0 599 0]>>endobj
-852 0 obj<</D[1178 0 R/XYZ 0 425 0]>>endobj
-853 0 obj<</D[1178 0 R/XYZ 0 201 0]>>endobj
-854 0 obj<</D[1180 0 R/XYZ 0 734 0]>>endobj
-855 0 obj<</D[1182 0 R/XYZ 0 428 0]>>endobj
-856 0 obj<</D[1046 0 R/XYZ 0 696 0]>>endobj
-857 0 obj<</D[1184 0 R/XYZ 0 531 0]>>endobj
-858 0 obj<</D[1184 0 R/XYZ 0 449 0]>>endobj
-859 0 obj<</D[1184 0 R/XYZ 0 135 0]>>endobj
-860 0 obj<</D[1046 0 R/XYZ 0 529 0]>>endobj
-861 0 obj<</D[1190 0 R/XYZ 0 672 0]>>endobj
-862 0 obj<</D[1190 0 R/XYZ 0 597 0]>>endobj
-863 0 obj<</D[1190 0 R/XYZ 0 225 0]>>endobj
-864 0 obj<</D[1192 0 R/XYZ 0 734 0]>>endobj
-865 0 obj<</D[1192 0 R/XYZ 0 609 0]>>endobj
-866 0 obj<</D[1192 0 R/XYZ 0 524 0]>>endobj
-867 0 obj<</D[1192 0 R/XYZ 0 383 0]>>endobj
-868 0 obj<</D[1194 0 R/XYZ 0 665 0]>>endobj
-869 0 obj<</D[1196 0 R/XYZ 0 672 0]>>endobj
-870 0 obj<</D[1196 0 R/XYZ 0 412 0]>>endobj
-871 0 obj<</D[1046 0 R/XYZ 0 173 0]>>endobj
-872 0 obj<</D[1046 0 R/XYZ 0 139 0]>>endobj
-873 0 obj<</D[1198 0 R/XYZ 0 573 0]>>endobj
-874 0 obj<</D[1198 0 R/XYZ 0 471 0]>>endobj
-875 0 obj<</D[1200 0 R/XYZ 0 734 0]>>endobj
-876 0 obj<</D[1200 0 R/XYZ 0 700 0]>>endobj
-877 0 obj<</D[1200 0 R/XYZ 0 143 0]>>endobj
-878 0 obj<</D[1048 0 R/XYZ 0 705 0]>>endobj
-879 0 obj<</D[1202 0 R/XYZ 0 243 0]>>endobj
-880 0 obj<</D[1204 0 R/XYZ 0 718 0]>>endobj
-881 0 obj<</D[1204 0 R/XYZ 0 336 0]>>endobj
-882 0 obj<</D[1048 0 R/XYZ 0 501 0]>>endobj
-883 0 obj<</D[1206 0 R/XYZ 0 322 0]>>endobj
-884 0 obj<</D[1208 0 R/XYZ 0 492 0]>>endobj
-885 0 obj<</D[1210 0 R/XYZ 0 696 0]>>endobj
-886 0 obj<</D[1210 0 R/XYZ 0 515 0]>>endobj
-887 0 obj<</D[1210 0 R/XYZ 0 137 0]>>endobj
-888 0 obj<</D[1212 0 R/XYZ 0 533 0]>>endobj
-889 0 obj<</D[1212 0 R/XYZ 0 273 0]>>endobj
-890 0 obj<</D[1218 0 R/XYZ 0 560 0]>>endobj
-891 0 obj<</D[1220 0 R/XYZ 0 613 0]>>endobj
-892 0 obj<</D[1050 0 R/XYZ 0 586 0]>>endobj
-893 0 obj<</D[1222 0 R/XYZ 0 622 0]>>endobj
-894 0 obj<</D[1222 0 R/XYZ 0 266 0]>>endobj
-895 0 obj<</D[1224 0 R/XYZ 0 520 0]>>endobj
-896 0 obj<</D[1226 0 R/XYZ 0 734 0]>>endobj
-897 0 obj<</D[1226 0 R/XYZ 0 645 0]>>endobj
-898 0 obj<</D[1050 0 R/XYZ 0 435 0]>>endobj
-899 0 obj<</D[1228 0 R/XYZ 0 696 0]>>endobj
-900 0 obj<</D[1228 0 R/XYZ 0 449 0]>>endobj
-901 0 obj<</D[1228 0 R/XYZ 0 416 0]>>endobj
-902 0 obj<</D[1228 0 R/XYZ 0 146 0]>>endobj
-903 0 obj<</D[1230 0 R/XYZ 0 652 0]>>endobj
-904 0 obj<</D[1230 0 R/XYZ 0 515 0]>>endobj
-905 0 obj<</D[1230 0 R/XYZ 0 255 0]>>endobj
-906 0 obj<</D[1232 0 R/XYZ 0 718 0]>>endobj
-907 0 obj<</D[1232 0 R/XYZ 0 537 0]>>endobj
-908 0 obj<</D[1050 0 R/XYZ 0 311 0]>>endobj
-909 0 obj<</D[1232 0 R/XYZ 0 409 0]>>endobj
-910 0 obj<</D[1232 0 R/XYZ 0 189 0]>>endobj
-911 0 obj<</D[1234 0 R/XYZ 0 734 0]>>endobj
-912 0 obj<</D[1234 0 R/XYZ 0 645 0]>>endobj
-913 0 obj<</D[1234 0 R/XYZ 0 477 0]>>endobj
-914 0 obj<</D[1234 0 R/XYZ 0 349 0]>>endobj
-915 0 obj<</D[1234 0 R/XYZ 0 129 0]>>endobj
-916 0 obj<</D[1034 0 R/XYZ 0 568 0]>>endobj
-917 0 obj<</D[1236 0 R/XYZ 0 639 0]>>endobj
-918 0 obj<</D[1236 0 R/XYZ 0 511 0]>>endobj
-919 0 obj<</D[1236 0 R/XYZ 0 436 0]>>endobj
-920 0 obj<</D[1238 0 R/XYZ 0 388 0]>>endobj
-921 0 obj<</D[1052 0 R/XYZ 0 718 0]>>endobj
-922 0 obj<</D[1240 0 R/XYZ 0 696 0]>>endobj
-923 0 obj<</D[1240 0 R/XYZ 0 663 0]>>endobj
-924 0 obj<</D[1240 0 R/XYZ 0 323 0]>>endobj
-925 0 obj<</D[1242 0 R/XYZ 0 734 0]>>endobj
-926 0 obj<</D[1242 0 R/XYZ 0 619 0]>>endobj
-927 0 obj<</D[1244 0 R/XYZ 0 672 0]>>endobj
-928 0 obj<</D[1244 0 R/XYZ 0 557 0]>>endobj
-929 0 obj<</D[1244 0 R/XYZ 0 469 0]>>endobj
-930 0 obj<</D[1244 0 R/XYZ 0 358 0]>>endobj
-931 0 obj<</D[1248 0 R/XYZ 0 696 0]>>endobj
-932 0 obj<</D[1248 0 R/XYZ 0 436 0]>>endobj
-933 0 obj<</D[1248 0 R/XYZ 0 295 0]>>endobj
-934 0 obj<</D[1250 0 R/XYZ 0 639 0]>>endobj
-935 0 obj<</D[1250 0 R/XYZ 0 287 0]>>endobj
-936 0 obj<</D[1250 0 R/XYZ 0 185 0]>>endobj
-937 0 obj<</D[1052 0 R/XYZ 0 356 0]>>endobj
-938 0 obj<</D[1054 0 R/XYZ 0 679 0]>>endobj
-939 0 obj<</D[1054 0 R/XYZ 0 528 0]>>endobj
-940 0 obj<</D[1054 0 R/XYZ 0 390 0]>>endobj
-941 0 obj<</D[1054 0 R/XYZ 0 253 0]>>endobj
-942 0 obj<</D[1056 0 R/XYZ 0 672 0]>>endobj
-943 0 obj<</D[1056 0 R/XYZ 0 439 0]>>endobj
-944 0 obj<</D[1056 0 R/XYZ 0 311 0]>>endobj
-945 0 obj<</D[1012 0 R/XYZ 0 696 0]>>endobj
-946 0 obj<</D[1058 0 R/XYZ 0 441 0]>>endobj
-947 0 obj<</D[1058 0 R/XYZ 0 303 0]>>endobj
-948 0 obj<</D[1058 0 R/XYZ 0 157 0]>>endobj
-949 0 obj<</D[1060 0 R/XYZ 0 339 0]>>endobj
-950 0 obj<</D[1062 0 R/XYZ 0 266 0]>>endobj
-951 0 obj<</D[1064 0 R/XYZ 0 734 0]>>endobj
-952 0 obj<</D[1066 0 R/XYZ 0 459 0]>>endobj
-953 0 obj<</D[1066 0 R/XYZ 0 361 0]>>endobj
-954 0 obj<</D[1066 0 R/XYZ 0 224 0]>>endobj
-955 0 obj<</D[1068 0 R/XYZ 0 670 0]>>endobj
-956 0 obj<</D[1068 0 R/XYZ 0 126 0]>>endobj
-957 0 obj<</D[1072 0 R/XYZ 0 734 0]>>endobj
-958 0 obj<</D[1072 0 R/XYZ 0 484 0]>>endobj
-959 0 obj<</D[1072 0 R/XYZ 0 132 0]>>endobj
-960 0 obj<</D[1034 0 R/XYZ 0 163 0]>>endobj
-961 0 obj<</D[1074 0 R/XYZ 0 523 0]>>endobj
-962 0 obj<</D[1074 0 R/XYZ 0 377 0]>>endobj
-963 0 obj<</D[1074 0 R/XYZ 0 263 0]>>endobj
-964 0 obj<</D[1076 0 R/XYZ 0 672 0]>>endobj
-965 0 obj<</D[1036 0 R/XYZ 0 734 0]>>endobj
-966 0 obj<</D[1078 0 R/XYZ 0 148 0]>>endobj
-967 0 obj<</D[1080 0 R/XYZ 0 705 0]>>endobj
-968 0 obj<</D[1082 0 R/XYZ 0 672 0]>>endobj
-969 0 obj<</D[1084 0 R/XYZ 0 652 0]>>endobj
-970 0 obj<</D[1086 0 R/XYZ 0 672 0]>>endobj
-971 0 obj<</D[1086 0 R/XYZ 0 497 0]>>endobj
-972 0 obj<</D[1086 0 R/XYZ 0 330 0]>>endobj
-973 0 obj<</D[1036 0 R/XYZ 0 385 0]>>endobj
-974 0 obj<</D[1088 0 R/XYZ 0 665 0]>>endobj
-975 0 obj<</D[1088 0 R/XYZ 0 432 0]>>endobj
-976 0 obj<</D[1088 0 R/XYZ 0 189 0]>>endobj
-977 0 obj<</D[1090 0 R/XYZ 0 692 0]>>endobj
-978 0 obj<</D[1024 0 R/XYZ 0 734 0]>>endobj
-979 0 obj<</D[1036 0 R/XYZ 0 283 0]>>endobj
-980 0 obj<</D[1090 0 R/XYZ 0 260 0]>>endobj
-981 0 obj<</D[1094 0 R/XYZ 0 599 0]>>endobj
-982 0 obj<</D[1036 0 R/XYZ 0 129 0]>>endobj
-983 0 obj<</D[1096 0 R/XYZ 0 696 0]>>endobj
-984 0 obj<</D[1096 0 R/XYZ 0 278 0]>>endobj
-985 0 obj<</D[1098 0 R/XYZ 0 702 0]>>endobj
-986 0 obj<</D[1100 0 R/XYZ 0 471 0]>>endobj
-987 0 obj<</D[1102 0 R/XYZ 0 718 0]>>endobj
-988 0 obj<</D[1102 0 R/XYZ 0 348 0]>>endobj
-989 0 obj<</D[1248 0 R/XYZ 0 734 0]>>endobj
-990 0 obj<</D[1244 0 R/XYZ 0 734 0]>>endobj
-991 0 obj<</D[1046 0 R/XYZ 0 734 0]>>endobj
-992 0 obj<</D[1124 0 R/XYZ 0 734 0]>>endobj
-993 0 obj<</D[1210 0 R/XYZ 0 734 0]>>endobj
-994 0 obj<</D[1034 0 R/XYZ 0 734 0]>>endobj
-995 0 obj<</D[1056 0 R/XYZ 0 734 0]>>endobj
-996 0 obj<</D[1106 0 R/XYZ 0 267 0]>>endobj
-997 0 obj<</D[1082 0 R/XYZ 0 734 0]>>endobj
-998 0 obj<</D[1240 0 R/XYZ 0 734 0]>>endobj
-999 0 obj<</D[1076 0 R/XYZ 0 734 0]>>endobj
-1000 0 obj<</D[1096 0 R/XYZ 0 734 0]>>endobj
-1001 0 obj<</D[1110 0 R/XYZ 0 734 0]>>endobj
-1002 0 obj<</D[1190 0 R/XYZ 0 734 0]>>endobj
-1003 0 obj<</D[1012 0 R/XYZ 0 734 0]>>endobj
-1004 0 obj<</D[1196 0 R/XYZ 0 734 0]>>endobj
-1005 0 obj<</D[1156 0 R/XYZ 0 734 0]>>endobj
-1006 0 obj<</D[1012 0 R/XYZ 0 734 0]>>endobj
-1007 0 obj<</D[1120 0 R/XYZ 0 734 0]>>endobj
-1008 0 obj<</D[1228 0 R/XYZ 0 734 0]>>endobj
-1009 0 obj<</D[1086 0 R/XYZ 0 734 0]>>endobj
-1010 0 obj<</D[1130 0 R/XYZ 0 734 0]>>endobj
-1011 0 obj<</Type/Pages/Count 121/Kids[1012 0 R
+552 0 R
+553 0 R
+554 0 R
+]endobj
+556 0 obj<</Dests 557 0 R>>endobj
+557 0 obj<</Kids[558 0 R]>>endobj
+558 0 obj<</Limits[(aen1022)(winbind)]/Names[(aen1022)559 0 R(aen1030)560 0 R(aen1034)561 0 R(aen1044)562 0 R(aen1047)563 0 R(aen1051)564 0 R(aen1073)565 0 R(aen1119)566 0 R(aen1135)567 0 R(aen1144)568 0 R(aen1152)569 0 R(aen1180)570 0 R(aen119)571 0 R(aen1191)572 0 R(aen1203)573 0 R(aen1206)574 0 R(aen1209)575 0 R(aen1222)576 0 R(aen1233)577 0 R(aen1266)578 0 R(aen1330)579 0 R(aen1335)580 0 R(aen135)581 0 R(aen1388)582 0 R(aen1392)583 0 R(aen1405)584 0 R(aen1412)585 0 R(aen1416)586 0 R(aen1421)587 0 R(aen1425)588 0 R(aen144)589 0 R(aen1441)590 0 R(aen1449)591 0 R(aen1453)592 0 R(aen1456)593 0 R(aen1463)594 0 R(aen1476)595 0 R(aen1490)596 0 R(aen1501)597 0 R(aen1520)598 0 R(aen1553)599 0 R(aen1569)600 0 R(aen1580)601 0 R(aen160)602 0 R(aen1616)603 0 R(aen1618)604 0 R(aen1635)605 0 R(aen1642)606 0 R(aen1648)607 0 R(aen1665)608 0 R(aen1698)609 0 R(aen1705)610 0 R(aen1715)611 0 R(aen1735)612 0 R(aen174)613 0 R(aen1741)614 0 R(aen1780)615 0 R(aen179)616 0 R(aen1823)617 0 R(aen183)618 0 R(aen1842)619 0 R(aen186)620 0 R(aen1877)621 0 R(aen1886)622 0 R(aen1901)623 0 R(aen1949)624 0 R(aen195)625 0 R(aen199)626 0 R(aen1993)627 0 R(aen20)628 0 R(aen208)629 0 R(aen2107)630 0 R(aen2133)631 0 R(aen2152)632 0 R(aen2160)633 0 R(aen2168)634 0 R(aen2176)635 0 R(aen2183)636 0 R(aen2219)637 0 R(aen222)638 0 R(aen2232)639 0 R(aen2235)640 0 R(aen2245)641 0 R(aen227)642 0 R(aen2281)643 0 R(aen2285)644 0 R(aen2293)645 0 R(aen2296)646 0 R(aen2299)647 0 R(aen2302)648 0 R(aen2306)649 0 R(aen2322)650 0 R(aen2343)651 0 R(aen2363)652 0 R(aen237)653 0 R(aen239)654 0 R(aen2392)655 0 R(aen2397)656 0 R(aen2409)657 0 R(aen2411)658 0 R(aen2428)659 0 R(aen245)660 0 R(aen2456)661 0 R(aen2461)662 0 R(aen2481)663 0 R(aen251)664 0 R(aen2551)665 0 R(aen2559)666 0 R(aen2570)667 0 R(aen2574)668 0 R(aen2583)669 0 R(aen2590)670 0 R(aen2595)671 0 R(aen2630)672 0 R(aen2649)673 0 R(aen266)674 0 R(aen2667)675 0 R(aen2677)676 0 R(aen2686)677 0 R(aen2704)678 0 R(aen2707)679 0 R(aen271)680 0 R(aen2725)681 0 R(aen2731)682 0 R(aen2733)683 0 R(aen2741)684 0 R(aen2747)685 0 R(aen2751)686 0 R(aen2758)687 0 R(aen2763)688 0 R(aen2768)689 0 R(aen277)690 0 R(aen2772)691 0 R(aen2777)692 0 R(aen2780)693 0 R(aen2783)694 0 R(aen2788)695 0 R(aen2792)696 0 R(aen2799)697 0 R(aen28)698 0 R(aen2804)699 0 R(aen2808)700 0 R(aen2811)701 0 R(aen2843)702 0 R(aen285)703 0 R(aen2860)704 0 R(aen2862)705 0 R(aen2877)706 0 R(aen2886)707 0 R(aen2890)708 0 R(aen2906)709 0 R(aen2911)710 0 R(aen2914)711 0 R(aen2919)712 0 R(aen2954)713 0 R(aen2961)714 0 R(aen2967)715 0 R(aen2984)716 0 R(aen2994)717 0 R(aen2997)718 0 R(aen3002)719 0 R(aen311)720 0 R(aen328)721 0 R(aen333)722 0 R(aen339)723 0 R(aen344)724 0 R(aen361)725 0 R(aen383)726 0 R(aen399)727 0 R(aen4)728 0 R(aen415)729 0 R(aen426)730 0 R(aen434)731 0 R(aen446)732 0 R(aen458)733 0 R(aen463)734 0 R(aen471)735 0 R(aen476)736 0 R(aen479)737 0 R(aen491)738 0 R(aen501)739 0 R(aen529)740 0 R(aen537)741 0 R(aen554)742 0 R(aen56)743 0 R(aen561)744 0 R(aen566)745 0 R(aen571)746 0 R(aen592)747 0 R(aen60)748 0 R(aen636)749 0 R(aen643)750 0 R(aen663)751 0 R(aen698)752 0 R(aen718)753 0 R(aen727)754 0 R(aen738)755 0 R(aen74)756 0 R(aen758)757 0 R(aen773)758 0 R(aen787)759 0 R(aen794)760 0 R(aen8)761 0 R(aen80)762 0 R(aen816)763 0 R(aen880)764 0 R(aen90)765 0 R(aen901)766 0 R(aen923)767 0 R(aen934)768 0 R(aen969)769 0 R(aen986)770 0 R(aen997)771 0 R(body.html)772 0 R(bugreport)773 0 R(cvs-access)774 0 R(diagnosis)775 0 R(domain-security)776 0 R(improved-browsing)777 0 R(install)778 0 R(integrate-ms-networks)779 0 R(migration)780 0 R(msdfs)781 0 R(os2)782 0 R(pam)783 0 R(printing)784 0 R(printing_debug)785 0 R(samba-bdc)786 0 R(samba-ldap-howto)787 0 R(samba-pdc)788 0 R(samba-project-documentation)789 0 R(security_levels)790 0 R(speed)791 0 R(unix-permissions)792 0 R(winbind)793 0 R]>>endobj
+559 0 obj<</D[906 0 R/XYZ null 686 null]>>endobj
+560 0 obj<</D[906 0 R/XYZ null 496 null]>>endobj
+561 0 obj<</D[906 0 R/XYZ null 385 null]>>endobj
+562 0 obj<</D[906 0 R/XYZ null 247 null]>>endobj
+563 0 obj<</D[906 0 R/XYZ null 149 null]>>endobj
+564 0 obj<</D[909 0 R/XYZ null 713 null]>>endobj
+565 0 obj<</D[912 0 R/XYZ null 768 null]>>endobj
+566 0 obj<</D[915 0 R/XYZ null 730 null]>>endobj
+567 0 obj<</D[918 0 R/XYZ null 768 null]>>endobj
+568 0 obj<</D[918 0 R/XYZ null 300 null]>>endobj
+569 0 obj<</D[921 0 R/XYZ null 768 null]>>endobj
+570 0 obj<</D[921 0 R/XYZ null 327 null]>>endobj
+571 0 obj<</D[801 0 R/XYZ null 266 null]>>endobj
+572 0 obj<</D[924 0 R/XYZ null 639 null]>>endobj
+573 0 obj<</D[924 0 R/XYZ null 280 null]>>endobj
+574 0 obj<</D[924 0 R/XYZ null 182 null]>>endobj
+575 0 obj<</D[927 0 R/XYZ null 739 null]>>endobj
+576 0 obj<</D[930 0 R/XYZ null 730 null]>>endobj
+577 0 obj<</D[930 0 R/XYZ null 491 null]>>endobj
+578 0 obj<</D[936 0 R/XYZ null 730 null]>>endobj
+579 0 obj<</D[939 0 R/XYZ null 383 null]>>endobj
+580 0 obj<</D[939 0 R/XYZ null 166 null]>>endobj
+581 0 obj<</D[804 0 R/XYZ null 686 null]>>endobj
+582 0 obj<</D[945 0 R/XYZ null 706 null]>>endobj
+583 0 obj<</D[945 0 R/XYZ null 569 null]>>endobj
+584 0 obj<</D[945 0 R/XYZ null 246 null]>>endobj
+585 0 obj<</D[948 0 R/XYZ null 581 null]>>endobj
+586 0 obj<</D[948 0 R/XYZ null 417 null]>>endobj
+587 0 obj<</D[948 0 R/XYZ null 292 null]>>endobj
+588 0 obj<</D[951 0 R/XYZ null 768 null]>>endobj
+589 0 obj<</D[804 0 R/XYZ null 509 null]>>endobj
+590 0 obj<</D[951 0 R/XYZ null 313 null]>>endobj
+591 0 obj<</D[954 0 R/XYZ null 673 null]>>endobj
+592 0 obj<</D[954 0 R/XYZ null 483 null]>>endobj
+593 0 obj<</D[954 0 R/XYZ null 332 null]>>endobj
+594 0 obj<</D[954 0 R/XYZ null 181 null]>>endobj
+595 0 obj<</D[957 0 R/XYZ null 541 null]>>endobj
+596 0 obj<</D[957 0 R/XYZ null 258 null]>>endobj
+597 0 obj<</D[960 0 R/XYZ null 753 null]>>endobj
+598 0 obj<</D[960 0 R/XYZ null 552 null]>>endobj
+599 0 obj<</D[960 0 R/XYZ null 134 null]>>endobj
+600 0 obj<</D[963 0 R/XYZ null 545 null]>>endobj
+601 0 obj<</D[963 0 R/XYZ null 385 null]>>endobj
+602 0 obj<</D[804 0 R/XYZ null 332 null]>>endobj
+603 0 obj<</D[966 0 R/XYZ null 324 null]>>endobj
+604 0 obj<</D[966 0 R/XYZ null 288 null]>>endobj
+605 0 obj<</D[969 0 R/XYZ null 359 null]>>endobj
+606 0 obj<</D[972 0 R/XYZ null 421 null]>>endobj
+607 0 obj<</D[972 0 R/XYZ null 353 null]>>endobj
+608 0 obj<</D[975 0 R/XYZ null 743 null]>>endobj
+609 0 obj<</D[978 0 R/XYZ null 743 null]>>endobj
+610 0 obj<</D[981 0 R/XYZ null 618 null]>>endobj
+611 0 obj<</D[981 0 R/XYZ null 401 null]>>endobj
+612 0 obj<</D[984 0 R/XYZ null 706 null]>>endobj
+613 0 obj<</D[807 0 R/XYZ null 768 null]>>endobj
+614 0 obj<</D[984 0 R/XYZ null 608 null]>>endobj
+615 0 obj<</D[987 0 R/XYZ null 726 null]>>endobj
+616 0 obj<</D[807 0 R/XYZ null 577 null]>>endobj
+617 0 obj<</D[990 0 R/XYZ null 607 null]>>endobj
+618 0 obj<</D[807 0 R/XYZ null 505 null]>>endobj
+619 0 obj<</D[990 0 R/XYZ null 215 null]>>endobj
+620 0 obj<</D[807 0 R/XYZ null 407 null]>>endobj
+621 0 obj<</D[993 0 R/XYZ null 332 null]>>endobj
+622 0 obj<</D[996 0 R/XYZ null 768 null]>>endobj
+623 0 obj<</D[996 0 R/XYZ null 392 null]>>endobj
+624 0 obj<</D[1002 0 R/XYZ null 739 null]>>endobj
+625 0 obj<</D[810 0 R/XYZ null 768 null]>>endobj
+626 0 obj<</D[810 0 R/XYZ null 643 null]>>endobj
+627 0 obj<</D[1005 0 R/XYZ null 686 null]>>endobj
+628 0 obj<</D[795 0 R/XYZ null 730 null]>>endobj
+629 0 obj<</D[810 0 R/XYZ null 175 null]>>endobj
+630 0 obj<</D[1011 0 R/XYZ null 303 null]>>endobj
+631 0 obj<</D[1014 0 R/XYZ null 277 null]>>endobj
+632 0 obj<</D[1017 0 R/XYZ null 482 null]>>endobj
+633 0 obj<</D[1017 0 R/XYZ null 225 null]>>endobj
+634 0 obj<</D[1020 0 R/XYZ null 684 null]>>endobj
+635 0 obj<</D[1020 0 R/XYZ null 446 null]>>endobj
+636 0 obj<</D[1020 0 R/XYZ null 289 null]>>endobj
+637 0 obj<</D[1026 0 R/XYZ null 605 null]>>endobj
+638 0 obj<</D[813 0 R/XYZ null 730 null]>>endobj
+639 0 obj<</D[1029 0 R/XYZ null 698 null]>>endobj
+640 0 obj<</D[1029 0 R/XYZ null 603 null]>>endobj
+641 0 obj<</D[1029 0 R/XYZ null 274 null]>>endobj
+642 0 obj<</D[813 0 R/XYZ null 553 null]>>endobj
+643 0 obj<</D[1038 0 R/XYZ null 706 null]>>endobj
+644 0 obj<</D[1038 0 R/XYZ null 621 null]>>endobj
+645 0 obj<</D[1038 0 R/XYZ null 239 null]>>endobj
+646 0 obj<</D[1041 0 R/XYZ null 768 null]>>endobj
+647 0 obj<</D[1041 0 R/XYZ null 630 null]>>endobj
+648 0 obj<</D[1041 0 R/XYZ null 532 null]>>endobj
+649 0 obj<</D[1041 0 R/XYZ null 381 null]>>endobj
+650 0 obj<</D[1044 0 R/XYZ null 650 null]>>endobj
+651 0 obj<</D[1047 0 R/XYZ null 706 null]>>endobj
+652 0 obj<</D[1047 0 R/XYZ null 437 null]>>endobj
+653 0 obj<</D[813 0 R/XYZ null 186 null]>>endobj
+654 0 obj<</D[813 0 R/XYZ null 156 null]>>endobj
+655 0 obj<</D[1050 0 R/XYZ null 581 null]>>endobj
+656 0 obj<</D[1050 0 R/XYZ null 469 null]>>endobj
+657 0 obj<</D[1053 0 R/XYZ null 739 null]>>endobj
+658 0 obj<</D[1053 0 R/XYZ null 709 null]>>endobj
+659 0 obj<</D[1056 0 R/XYZ null 768 null]>>endobj
+660 0 obj<</D[816 0 R/XYZ null 726 null]>>endobj
+661 0 obj<</D[1056 0 R/XYZ null 180 null]>>endobj
+662 0 obj<</D[1059 0 R/XYZ null 633 null]>>endobj
+663 0 obj<</D[1059 0 R/XYZ null 240 null]>>endobj
+664 0 obj<</D[816 0 R/XYZ null 509 null]>>endobj
+665 0 obj<</D[1062 0 R/XYZ null 211 null]>>endobj
+666 0 obj<</D[1065 0 R/XYZ null 362 null]>>endobj
+667 0 obj<</D[1068 0 R/XYZ null 730 null]>>endobj
+668 0 obj<</D[1068 0 R/XYZ null 540 null]>>endobj
+669 0 obj<</D[1071 0 R/XYZ null 768 null]>>endobj
+670 0 obj<</D[1071 0 R/XYZ null 471 null]>>endobj
+671 0 obj<</D[1071 0 R/XYZ null 202 null]>>endobj
+672 0 obj<</D[1080 0 R/XYZ null 447 null]>>endobj
+673 0 obj<</D[1083 0 R/XYZ null 488 null]>>endobj
+674 0 obj<</D[819 0 R/XYZ null 581 null]>>endobj
+675 0 obj<</D[1086 0 R/XYZ null 492 null]>>endobj
+676 0 obj<</D[1089 0 R/XYZ null 768 null]>>endobj
+677 0 obj<</D[1089 0 R/XYZ null 339 null]>>endobj
+678 0 obj<</D[1092 0 R/XYZ null 567 null]>>endobj
+679 0 obj<</D[1092 0 R/XYZ null 469 null]>>endobj
+680 0 obj<</D[819 0 R/XYZ null 417 null]>>endobj
+681 0 obj<</D[1095 0 R/XYZ null 730 null]>>endobj
+682 0 obj<</D[1095 0 R/XYZ null 474 null]>>endobj
+683 0 obj<</D[1095 0 R/XYZ null 444 null]>>endobj
+684 0 obj<</D[1095 0 R/XYZ null 161 null]>>endobj
+685 0 obj<</D[1098 0 R/XYZ null 647 null]>>endobj
+686 0 obj<</D[1098 0 R/XYZ null 483 null]>>endobj
+687 0 obj<</D[1098 0 R/XYZ null 213 null]>>endobj
+688 0 obj<</D[1101 0 R/XYZ null 660 null]>>endobj
+689 0 obj<</D[1101 0 R/XYZ null 469 null]>>endobj
+690 0 obj<</D[819 0 R/XYZ null 279 null]>>endobj
+691 0 obj<</D[1101 0 R/XYZ null 332 null]>>endobj
+692 0 obj<</D[1104 0 R/XYZ null 768 null]>>endobj
+693 0 obj<</D[1104 0 R/XYZ null 683 null]>>endobj
+694 0 obj<</D[1104 0 R/XYZ null 585 null]>>endobj
+695 0 obj<</D[1104 0 R/XYZ null 407 null]>>endobj
+696 0 obj<</D[1104 0 R/XYZ null 270 null]>>endobj
+697 0 obj<</D[1107 0 R/XYZ null 713 null]>>endobj
+698 0 obj<</D[795 0 R/XYZ null 593 null]>>endobj
+699 0 obj<</D[1107 0 R/XYZ null 535 null]>>endobj
+700 0 obj<</D[1107 0 R/XYZ null 398 null]>>endobj
+701 0 obj<</D[1107 0 R/XYZ null 313 null]>>endobj
+702 0 obj<</D[1110 0 R/XYZ null 264 null]>>endobj
+703 0 obj<</D[822 0 R/XYZ null 673 null]>>endobj
+704 0 obj<</D[1116 0 R/XYZ null 730 null]>>endobj
+705 0 obj<</D[1116 0 R/XYZ null 700 null]>>endobj
+706 0 obj<</D[1116 0 R/XYZ null 348 null]>>endobj
+707 0 obj<</D[1119 0 R/XYZ null 768 null]>>endobj
+708 0 obj<</D[1119 0 R/XYZ null 639 null]>>endobj
+709 0 obj<</D[1122 0 R/XYZ null 706 null]>>endobj
+710 0 obj<</D[1122 0 R/XYZ null 582 null]>>endobj
+711 0 obj<</D[1122 0 R/XYZ null 484 null]>>endobj
+712 0 obj<</D[1122 0 R/XYZ null 359 null]>>endobj
+713 0 obj<</D[1128 0 R/XYZ null 730 null]>>endobj
+714 0 obj<</D[1128 0 R/XYZ null 461 null]>>endobj
+715 0 obj<</D[1128 0 R/XYZ null 310 null]>>endobj
+716 0 obj<</D[1131 0 R/XYZ null 633 null]>>endobj
+717 0 obj<</D[1131 0 R/XYZ null 271 null]>>endobj
+718 0 obj<</D[1131 0 R/XYZ null 160 null]>>endobj
+719 0 obj<</D[1134 0 R/XYZ null 741 null]>>endobj
+720 0 obj<</D[822 0 R/XYZ null 298 null]>>endobj
+721 0 obj<</D[825 0 R/XYZ null 607 null]>>endobj
+722 0 obj<</D[825 0 R/XYZ null 430 null]>>endobj
+723 0 obj<</D[825 0 R/XYZ null 279 null]>>endobj
+724 0 obj<</D[828 0 R/XYZ null 768 null]>>endobj
+725 0 obj<</D[831 0 R/XYZ null 706 null]>>endobj
+726 0 obj<</D[831 0 R/XYZ null 463 null]>>endobj
+727 0 obj<</D[831 0 R/XYZ null 325 null]>>endobj
+728 0 obj<</D[792 0 R/XYZ null 647 null]>>endobj
+729 0 obj<</D[834 0 R/XYZ null 435 null]>>endobj
+730 0 obj<</D[834 0 R/XYZ null 285 null]>>endobj
+731 0 obj<</D[837 0 R/XYZ null 768 null]>>endobj
+732 0 obj<</D[837 0 R/XYZ null 268 null]>>endobj
+733 0 obj<</D[840 0 R/XYZ null 210 null]>>endobj
+734 0 obj<</D[843 0 R/XYZ null 660 null]>>endobj
+735 0 obj<</D[846 0 R/XYZ null 371 null]>>endobj
+736 0 obj<</D[846 0 R/XYZ null 260 null]>>endobj
+737 0 obj<</D[849 0 R/XYZ null 768 null]>>endobj
+738 0 obj<</D[849 0 R/XYZ null 529 null]>>endobj
+739 0 obj<</D[852 0 R/XYZ null 633 null]>>endobj
+740 0 obj<</D[855 0 R/XYZ null 581 null]>>endobj
+741 0 obj<</D[855 0 R/XYZ null 304 null]>>endobj
+742 0 obj<</D[858 0 R/XYZ null 594 null]>>endobj
+743 0 obj<</D[795 0 R/XYZ null 178 null]>>endobj
+744 0 obj<</D[858 0 R/XYZ null 271 null]>>endobj
+745 0 obj<</D[861 0 R/XYZ null 753 null]>>endobj
+746 0 obj<</D[861 0 R/XYZ null 639 null]>>endobj
+747 0 obj<</D[864 0 R/XYZ null 706 null]>>endobj
+748 0 obj<</D[798 0 R/XYZ null 739 null]>>endobj
+749 0 obj<</D[867 0 R/XYZ null 179 null]>>endobj
+750 0 obj<</D[870 0 R/XYZ null 726 null]>>endobj
+751 0 obj<</D[873 0 R/XYZ null 706 null]>>endobj
+752 0 obj<</D[876 0 R/XYZ null 673 null]>>endobj
+753 0 obj<</D[879 0 R/XYZ null 706 null]>>endobj
+754 0 obj<</D[879 0 R/XYZ null 525 null]>>endobj
+755 0 obj<</D[879 0 R/XYZ null 348 null]>>endobj
+756 0 obj<</D[798 0 R/XYZ null 379 null]>>endobj
+757 0 obj<</D[882 0 R/XYZ null 686 null]>>endobj
+758 0 obj<</D[882 0 R/XYZ null 443 null]>>endobj
+759 0 obj<</D[882 0 R/XYZ null 187 null]>>endobj
+760 0 obj<</D[885 0 R/XYZ null 673 null]>>endobj
+761 0 obj<</D[792 0 R/XYZ null 616 null]>>endobj
+762 0 obj<</D[798 0 R/XYZ null 268 null]>>endobj
+763 0 obj<</D[885 0 R/XYZ null 232 null]>>endobj
+764 0 obj<</D[891 0 R/XYZ null 594 null]>>endobj
+765 0 obj<</D[801 0 R/XYZ null 768 null]>>endobj
+766 0 obj<</D[894 0 R/XYZ null 730 null]>>endobj
+767 0 obj<</D[894 0 R/XYZ null 302 null]>>endobj
+768 0 obj<</D[897 0 R/XYZ null 693 null]>>endobj
+769 0 obj<</D[900 0 R/XYZ null 450 null]>>endobj
+770 0 obj<</D[903 0 R/XYZ null 686 null]>>endobj
+771 0 obj<</D[903 0 R/XYZ null 302 null]>>endobj
+772 0 obj<</D[798 0 R/XYZ null 698 null]>>endobj
+773 0 obj<</D[1128 0 R/XYZ null 798 null]>>endobj
+774 0 obj<</D[1122 0 R/XYZ null 798 null]>>endobj
+775 0 obj<</D[813 0 R/XYZ null 798 null]>>endobj
+776 0 obj<</D[936 0 R/XYZ null 798 null]>>endobj
+777 0 obj<</D[1068 0 R/XYZ null 798 null]>>endobj
+778 0 obj<</D[795 0 R/XYZ null 798 null]>>endobj
+779 0 obj<</D[831 0 R/XYZ null 798 null]>>endobj
+780 0 obj<</D[912 0 R/XYZ null 768 null]>>endobj
+781 0 obj<</D[873 0 R/XYZ null 798 null]>>endobj
+782 0 obj<</D[1116 0 R/XYZ null 798 null]>>endobj
+783 0 obj<</D[864 0 R/XYZ null 798 null]>>endobj
+784 0 obj<</D[894 0 R/XYZ null 798 null]>>endobj
+785 0 obj<</D[915 0 R/XYZ null 798 null]>>endobj
+786 0 obj<</D[1038 0 R/XYZ null 798 null]>>endobj
+787 0 obj<</D[1047 0 R/XYZ null 798 null]>>endobj
+788 0 obj<</D[984 0 R/XYZ null 798 null]>>endobj
+789 0 obj<</D[792 0 R/XYZ null 753 null]>>endobj
+790 0 obj<</D[930 0 R/XYZ null 798 null]>>endobj
+791 0 obj<</D[1095 0 R/XYZ null 798 null]>>endobj
+792 0 obj<</D[879 0 R/XYZ null 798 null]>>endobj
+793 0 obj<</D[945 0 R/XYZ null 798 null]>>endobj
+794 0 obj<</Type/Pages/MediaBox[0 0 595 792]/Count 120/Kids[795 0 R
+1140 0 R
+1143 0 R
+1146 0 R
+1149 0 R
+1152 0 R
+798 0 R
+801 0 R
+804 0 R
+807 0 R
+810 0 R
+813 0 R
+816 0 R
+819 0 R
+822 0 R
+825 0 R
+828 0 R
+831 0 R
+834 0 R
+837 0 R
+840 0 R
+843 0 R
+846 0 R
+849 0 R
+852 0 R
+855 0 R
+858 0 R
+861 0 R
+864 0 R
+867 0 R
+870 0 R
+873 0 R
+876 0 R
+879 0 R
+882 0 R
+885 0 R
+888 0 R
+891 0 R
+894 0 R
+897 0 R
+900 0 R
+903 0 R
+906 0 R
+909 0 R
+912 0 R
+915 0 R
+918 0 R
+921 0 R
+924 0 R
+927 0 R
+930 0 R
+933 0 R
+936 0 R
+939 0 R
+942 0 R
+945 0 R
+948 0 R
+951 0 R
+954 0 R
+957 0 R
+960 0 R
+963 0 R
+966 0 R
+969 0 R
+972 0 R
+975 0 R
+978 0 R
+981 0 R
+984 0 R
+987 0 R
+990 0 R
+993 0 R
+996 0 R
+999 0 R
+1002 0 R
+1005 0 R
+1008 0 R
+1011 0 R
 1014 0 R
-1016 0 R
-1018 0 R
+1017 0 R
 1020 0 R
-1022 0 R
-1024 0 R
+1023 0 R
 1026 0 R
-1028 0 R
-1030 0 R
+1029 0 R
 1032 0 R
-1034 0 R
-1036 0 R
+1035 0 R
 1038 0 R
-1040 0 R
-1042 0 R
+1041 0 R
 1044 0 R
-1046 0 R
-1048 0 R
+1047 0 R
 1050 0 R
-1052 0 R
-1054 0 R
+1053 0 R
 1056 0 R
-1058 0 R
-1060 0 R
+1059 0 R
 1062 0 R
-1064 0 R
-1066 0 R
+1065 0 R
 1068 0 R
-1070 0 R
-1072 0 R
+1071 0 R
 1074 0 R
-1076 0 R
-1078 0 R
+1077 0 R
 1080 0 R
-1082 0 R
-1084 0 R
+1083 0 R
 1086 0 R
-1088 0 R
-1090 0 R
+1089 0 R
 1092 0 R
-1094 0 R
-1096 0 R
+1095 0 R
 1098 0 R
-1100 0 R
-1102 0 R
+1101 0 R
 1104 0 R
-1106 0 R
-1108 0 R
+1107 0 R
 1110 0 R
-1112 0 R
-1114 0 R
+1113 0 R
 1116 0 R
-1118 0 R
-1120 0 R
+1119 0 R
 1122 0 R
-1124 0 R
-1126 0 R
+1125 0 R
 1128 0 R
-1130 0 R
-1132 0 R
+1131 0 R
 1134 0 R
-1136 0 R
-1138 0 R
-1140 0 R
-1142 0 R
-1144 0 R
-1146 0 R
-1148 0 R
-1150 0 R
-1152 0 R
-1154 0 R
-1156 0 R
-1158 0 R
-1160 0 R
-1162 0 R
-1164 0 R
-1166 0 R
-1168 0 R
-1170 0 R
-1172 0 R
-1174 0 R
-1176 0 R
-1178 0 R
-1180 0 R
-1182 0 R
-1184 0 R
-1186 0 R
-1188 0 R
-1190 0 R
-1192 0 R
-1194 0 R
-1196 0 R
-1198 0 R
-1200 0 R
-1202 0 R
-1204 0 R
-1206 0 R
-1208 0 R
-1210 0 R
-1212 0 R
-1214 0 R
-1216 0 R
-1218 0 R
-1220 0 R
-1222 0 R
-1224 0 R
-1226 0 R
-1228 0 R
-1230 0 R
-1232 0 R
-1234 0 R
-1236 0 R
-1238 0 R
-1240 0 R
-1242 0 R
-1244 0 R
-1246 0 R
-1248 0 R
-1250 0 R
-1252 0 R
+1137 0 R
 ]>>endobj
-1012 0 obj<</Type/Page/Parent 1011 0 R/Contents 1013 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1013 0 obj<</Filter/FlateDecode/Length 94        >>stream
-x\ 1+ä2T0\0BC\ 5s#\ 5c3\85ä\.§\10.}7K\ 5#\ 3\85\904\ 5K\13=3\ 5cS\10\19\92¢` g`\0\14\bvôurT\b(ÊÏJM.QpÉO.ÍMÍ+I,ÉÌÏÓ\fÉâr\rá
\ 2\0«\13\17\ eendstream
-endobj
-1014 0 obj<</Type/Page/Parent 1011 0 R/Contents 1015 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 58 0 R>>endobj
-1015 0 obj<</Filter/FlateDecode/Length 3675      >>stream
-x\ 1Í\Ûr#Ç\r}߯\98·8U\115÷áä%µ\978Ù*ßbɵy\9d\95¸\12c\91THj×þû\9c\ 3t£1$\1dѶèU\µÅ3g\1a\ 3 Ñh4f\94ÿ¾(²\1cÿ\15YWfU\9b]-^ä\93\1cWøOÁ\7f¾ÿ\a¯dmÝãßEVõ\93.\80»ìâ\85\83\8b¬kG\9c\83\8b¬h\8a\a\14Z5\93)\84vͤ\b\80B\1dÄÀ¼\9cô\8e\14eò~Rc\\9d\93\12Àq¤\9ai\15õ,\ 2\bzF¸È\9a\1c\8fÓ\eÉ9\bUj\88L\9c\83\8blÚBÛÄ9\b5\8b\1eö%Òc°Ð4êÆGz\f¶¥\89n¬Ã\8b¬Ì\9bIåØ\8a\9ekÚ^<×\94\01%A1\ 5ê\1a\aS"\14\ 2ã`J\844\85S\95H\8fÁ\96\1dfÙ±\ eÓPÎ\8cc\1d\ 6Ûu\93Ò±jJÓNZL¦\9a\99\128ÕÝ8\a£)Æ©)a\1c\95\85:FzLe+<Ù±\ e\83\95HJ¬*\8b[\18yª¬\80¤làT;ã\1c\8cÊ\1a§Ê\86qE.3k¤ÇP\a\ 1\ 6¿'Öa°mCÏ&Öa\9aÒ\8cƪ)U\8e\14\ 1É\94À©îÆ9\18M1NM   ã\8a¢£g\8dô\18êT\15C1±\ e\83md      &Öa¬\86¢åZ1Öc°UÇÅa¬\1a
-e\98ºtÎ\ 4$C\ 3§\96\19ç`4Ô854\8c\8e¦\18é1\rÍé÷Ä:\f¶-è¤Ä:\f¶cÂu¬ÃL
-\ 5\93\82\8dõ\18l]ÐIƪ\erz=ºA@rCàÔnã\1c\8cn0NÝ\10Æ\15eEC\8dô\98nè©Nb\1d¦\e\9bÄ:\f\16¡\8bÔ\94X\87\19\r\929\8díJø¬îsI(=Óµ\ 2\1aê Äbõ\14\8eô\98
-s5¥¡\1e\83ÅS¼`\8fÁö\8c67ÖaÎL=bUa¤E&\15ÕP@R8pAA#=V\85Û¬N,\f\88\98*q\9ft¬ÃP©dþM¬Ç`!©ñ¬Ã4\87\9a»±\ e\83m\1a\1akZy\f¶/GÏ\95 ­Û:%%\ 5\16¤\91\93¨L\9c\83!H\13'A\1aÇ\15y\8d M$1æ1<\91s\fe\ 5ñ\91\1eÃ\85(_\10\11\89u\18ì´ \e\12ë0\fÅâ\80û\8dõ\18,R\96×Êc°-cÙ\8du\98.d
-O¬º\10ªYº«\ 5$\17\ 6N}f\9c\83Ñ\85Æ©\vøàB#\83\v#\8bù\86C\13ë0\9cÔM¹ä\12ë0c´FBs¬Ã0\14Y\1fn°±\1e\83Ŷç\9f«n\80_-ÝÕ\ 2\92\e\ 2§v\eç`t\83\860.¸ÁÈà\86ȪÙ\89u\98n`2L
-yÌHê¸ÜÒX\87é\ 6\89Qc=\ 6\8b\8fõ\18,\12§\7f®Ç(ë˱d\8fÁ"ê¼d\8fÁN§\9c\1cÓÊcÔèHÑX\eÆz\f\16[Áh,K º¬q\11;ÕÔ\80L]\82\98\1eÞ¢7\92s\10yTÖ¹\b!ç \1c\&)$=\ 6\8bZ\ 3\8bÑ\86\93\ 3S\8cÕä\8dj\99É\9bç\14¬EA"Øa
-f\ 5æX\87179\8f\a\89\15ÁU?\95\82\15%ÁÆVÜê\1dë0\1fË\89
-F$0A\ 4Á\82\9càÈ"\95ãH\98X\871¶e\1dìX\87\98õ\18,Tô\92U©®\90å\1a\94\12ä\94\8a,ÎQ°'±\ eS)\ 6\85c\1d\ 6\8b8\98zÖaªÌ#P\1aë1Ø\82\19Ʊ\ e\83\95²Û±\ e\83m\18â\89Us\11Û\fñ`® gndQÇuYe¬\ e­\e\17p\95 74²(404±\ eÓ\17-²mb\19~\15J¢pÂ\87#\ 4P,\16h\84X\91<9'ÎA\9a\12é1X©É\1dë0X\84\ fæÕ\1eê1µe\r\92XÉï\15\1egù]\ 1Õ\95"?r\ 5Z\ 3p½Ü)¶0»hÝ\11ê`\ 560r\ 5\92V\17îL\ 3\91¹íìW
-H\ 3\ 3\87=­É\12'\13V¢ åAKÊ;\ 5\1cç L,¦\90\9dH\8fÁ¢D\83:"\87CUl£\9d\ e\95\89\r\\10c¤Ç&ÖX\15\8b      §_U¬\80$6pA\8c\91\1e\9bXcU¬T\99\80$6pA\8c\91\1e\9bXcU,\16¢\95Î\¥u\96Ä\ 6.\881Òc\13\8aEBNS& \89\r\\10c¤Ç&ÖX\11ËÝ\9dKL|«ÀÄFNÅ$Òã(6±*¶Ó\93\9d\8a\15\90Ä\ 6.\881Òc\13\8a\95Z3j+ \89\r\\10c¤Ç&ÖX\15+g\ 4\90²A\16\82(×c\ eeÑìX\87Á¢\9cè\1c«\82+=;\ 4A\82\9càȪ Ä:l\82\8d\95TS\94®¢V@¹\92j"\a×µP\9a7\92s\90\962Û&Òc°Ò"K,s1¶&î\ eXB\85þ¦Ì\84B"\96»D\13¦å0F»FF9\88G¡Ê«\92@\aÁ\89\ fÓ¸\ 4¹ý±\141ÎAn~Ü£\12\97 8´\80§\89\13gÊÑ(d_ùm®\fÌ\94\8dTcdL«\95\908\~Û\98Ààv4\97y\17\99\84`\96ÔCF9HÏWpGâ\12\ 4\87½\r½å(ÒAºªÂ\93\12\97 LFÇÑÉt\10\9c\14}6N<\8cK\96\11ä7\r\90\85\1c\19é+ó.a\f\ 2Ón\83D\1c.Yò\96ß&.2\14\90\18C\10ײgg\94\88C±Ì8Ô½\80¿M\d(@~\9bv\81)Pö\14\89zuùâüË\1eeVvù\ 1ÎE©\81 ëêìòZÞ5àòÕ\17\97Ãû»Y¶ú\90½^-·³åvóçËÿì¾\8eXßdç_6Ø/)ç,\b:+)è\8b\8b\97_¿zÉ1X)]É\17\e¸\98}·^ýgvµ\95ëè\1dÖ}¸þfuõ°ÀS\86í|µ$Ëã_¥ääóü¯ \1aç_Öf\1eÎ{\r¬d¸íØW\14m°ãr6,8\ e\eãtZ\7fVý÷½\16,J\13\96\97Ù\194\95ùzù~³]\ faj¦\93®yfÊï\9b#WJzû¬\12\85Í\96×·Ãýv¶&Å<\8dèÖè+&¼\84pUøÏÕ'\99+\14çñ\8eíJï\98ôE\88¾ìír³\1dîîD\18
-Ñ<^\1f\96×2:\9fÔÓ2H¼\9cm$¶KtBM\80­\ 4\9c\8fþРè¨\9f\8f`$\15Xj!\8c\8c¥\ eaÏW]r±\9dÝ\8bUå¤Ê§ábþW^Âa:]ú~6¨õØÃ\9a8x{;\93\eqxë£G\16\83,gìÅ­]»\1fnf\92N¸Jú0ú\17æ÷D\97Å5g|óW\8e\1cR\1eå\90bß!¯\1eæw×óå\r\1d\80´]¶1È\ e9åÕ|9¬çê\ 3\84.:\96êé\13\19{Plô\0Z!#\ fTGy Ü÷Àe\98}\9cX,"ºAδ\156_ܯÖÛa)ë\ 4'â¦\8c{À&Ä\1e\ e\9e\98\14\89Ç\83\9a\9fæbô\aÏ\8cn\85ÔG¹£ÚwÇëõlØÊz@ÑSÇýáP4l\16ïeÉ¡\\9dvaÉ]­\96\1fæ7\ f\ fñ\16:/â\82ü0¿\9b©^pv\17Æ\9cÆ-\93É\94Ê\9d±+6\ e\94æ(ÏÔû\9e±$ésÂÏ«\aÉף̩^àóÑ HQEóy\11¯Ôj˲\9fæÛ[q£Ï\[äãûa-[2\16\1aZ_'\8d«è*öO\\fµGyªÙ÷ÔÅvXoCRÁ!«±ðø\85\94\8cln7\86M
-G\86
-åH¶\¼\8f7þqÛ\91º\ 6  wì\18Ý\80Ðĵüpp\aj\ 6u\8eßY~Ñ9\1fÖ+­ÁêIaFÏ\97³íõ\84\ 1Å AÞA_è\94±\10ìív7\18t\9f$\1a\1e7ùýnÔ¼¼CM³DFø8\13oà°Qö1a FI¡"9]7ô¹äÙédÚÆ\144ÈÖ\8bÝ<U(\ 3}\82\ 3\87yëz\98\ eÇ\91¯«Âfþ\14\19¦ç£Îäð5Z#Ý®µ\aã Ý_#\97ë\9f)r\14áwó\8d-\eLÀÿÝ\8b7·Ã:ìĸµ\8a\9bÑðq\98ßñ\b\82·&Ñ}ê\16¿£\1dL]\9bÙú£V 8\82ÕÕÓígE\1e<Xù\954=Ê}ÝqîÃ*Yâ\90\16\12\ fßóÙÎs8Ë\1e¨û\1e\96ó\9f¨(òyª\1a¯îæ8ãÉe¼\12Ç\81ód\9b\12\9a\ 2¯?ÊQÓßí¨\83Iho\9d½ùöâ/â\ e¾hÔ\ 5ûîû\e¹\86Wàu\15«Èwóeÿ\93]®cu\8dËß\êe\7fÎÁåòÇý»¿½8/å*B2\1dYgÛ+,lÑ\ 2\9dË2Æùh®ÐÅ;0WÁÉ5>\7f\19­å"Wq¦åí \93\8e\9d©\8bòßJ"Æ­¹]º¼EÈIvÂ7H)jÞ¬\96\7f\8aã»xúz·Zÿø7*]á+» ó)òÓ12\82Ý\ 5\1a\ 2ãà\825º¡ñ}J\9cÐ7óáf¹ÚÄÕ\84®x\17g\15Ý\10d\98\85\98\8eX
-\1f£Äァ\90\19ßfì\19¡[\947ââju/©°ÄK\1cÛ&޾ѽ\ 4Ǹ¸½ü^µ~Ûø`\f?rÝ\8dD=Ïx[^ß®l:ð"®G¿J\97Þ¡ª
-S´]]­î\18j8-æq\8a²¯f\1fgr\15m\ë0ü6í\8f\18\15g\v\1f\1a¨'\14oàwëù2fo_õf\a\93Ò\ fß¼ý·,$¿ýY\1f$-ýäõ:es\ 4E\1dãý»×\94\86µQU'9\99DWà#\90½ÉÖ3\89÷ÅW««\1fc\ 5\8d\ 3ÀÓíÃGLÚ\81[
-íW¡í¼;\8dzHðª\7f=Üß\aÕ\91\1cRÖø\ 1µÅrXhÑ\82ÎxwÚJvÇ
-µÀ·}å\85𣽷ÐY\89©o'+"Z\8aXzY=åN\ 5\9bañ^\ 2p´3¤"\v»\80\15);
-\9f\ 6\16\15£Ü7×ÐFwsZî÷ÖÞ.·ëÕõ\ 3
-+­!c\97ä4
-þJ©jÏ\19\18\19±×\ f{¹Ù<,îi\82¤þF:\8a'+ã~¥\118ïqVÎðòÀïi(Aw«>ö Ä\0w\ eûµ\ f;õýÁ\98q\91A[ö\ fÍ\a[*²Á£ÁÖ\84¶Ñ©õ}D~4\aï\1câ;\14\1a³\7f\1c>h\8cäÍgdL-\81Öì\18£qæb*;h\8cDé³7F\v\8bG\8d\11O<#c\9a\83\95Á£ÆÈàgo\8cÖ
-\8f\1aÓÒ\13ÏÞ\18íü<j\8côç\9f\911âܳÝ\ 4 }\98G\8d\91îà³7F{%\8f\1a#-½gd\8c¾ÉÙ\9d\99Ð\94ð\ 5öÁܬ\87{´Góg°o\16jKëz}R\0ìw\19\ eÛ"%Àó²¥ïýþ\7fàõÚ\ßµóë­>¾ðº\1d>ÆC\1cþNÅ^$£\9e~@\ 3e#\8d \9e\91þàFиâÑÉò'£ú¸Ï\12Bu\1a\8fF8'ÌnÖèóëÛd´ùS§þë\væt÷\864C¯ïzõIjÙ\1a'bëuã}Ç'ôÈ"\91Þ\84X\v\17o©¬\9bqáÎWO^0\16\92îÜY möQ\81\1eKZüaIì"¼¼\99-¯õÄ\97Þf\8cýýy\91\1a\85\r\92½\13Ó78ªsÒÐ9³#jöýl³º{°\93 ¾!±.Ô|)S쿶Øk½Ü?¬U&\9e\80~@Ëýü«ùòA\1aïøã\89ô:\19\91p\17¿×èã×*Oí¿à\11þý\95?}±Ä\ f'\16ër\9f£é|~»
-g°:DþS+t´¼ ù¸+C½Ãád¬7^\17­î>Ú»Düqo|yyô\ 3\9fèÆBߦõPÕ\9dÚ©x8\88\8c\15§ÃMm\9cÜ?_3L\15G;5ü\9f\eÈ/ù\9ap\1a>·ã\8b\ 1|\0Øâ\8fêÒç\84ñóÁlïsÁ\8aß\ 2°\1dØñ£Æë/æ\C\7f¿|ñ¯\17ÿ\ 3\9cözKendstream
-endobj
-1016 0 obj<</Type/Page/Parent 1011 0 R/Contents 1017 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 103 0 R>>endobj
-1017 0 obj<</Filter/FlateDecode/Length 4538      >>stream
-x\ 1Í\Ûr\eÇ\11}×WìC\1e\94\aBØûâ)¥\8b\15«Ê\92\95\90\8eR\95Ê\ 3\ 4\82$,\ 2Ë\0 dÿ}N÷Ìt\9f\ 5@\914uqREóà`f§{zú6KýïQ\9e\8dñÿ<k\8b¬l²ÙòÑx4Æ'ò#\97\1fÿü»|\92\ 4?\97Y9\19å\11\fÇ\8f\b.³z<à\b.³|ÜØ,2\901Ø¢\1e\954-c°m1\1cKx\99\15y7*h,c°U>j\99%\f¶mF\1d±aâ²Æ\87Ël¢\9c\ 2Y1Ap\93Q\9d5Î9\94åNdAF\96*yQ\8c\1aLZ\172P\81LJp\99\80#(\1aêDC6\901Øj,\8ft\960ئ\94\8dq\960ØI%Úu\96°hWÖí,c°u;X2cØJ>\1eU46hw<Á\87
-\»\91ËóF\1ej$c\11g,ªp\960Øn2d  \8b8\93Á̺¤\1a[[¤%\ 5`KJ\X\82\93\8cñÐv\f+#\96°,©\83þ\9d\r\ fíJ=PjVµ\ 2\7fhäò²\82,N2Æ´u\ e;u6LÛLÜxk\ 5>mäòB\fÍIÆ2m7`ôµìHܵZ\81O\e¹¼hñ\1d'\19cÚ¦\1a°z*êªTcÐc\10\80LKp\99á\88bVý¢p\ 41i!¦à$ãðÈ1³XBÂ`»BöÌ&f\fC\19«ê\8de,fT\ fÆ2\ 6[ÉYõ\99\19\83U\9fC,a°\93\1a\1a!\960N\14f.\88e,¾9\1fM\98%¼Ì*øIìºIÄ\18,\8ci0³8­º\14·\12\9dV\0¾=\91ks±m\ 5º=\ e¡b\9cc&\19\83­KÙY\eÊX¶§\13ëv\960Ô4nEMÆ2\ 6[H\94"\960X8ÇÁXÂ`;  E4\96°¸´Îô"â2\ 6[\ e%b\f¶Õ­µ53Æ\ 6 \ 4\8c\rÇ.oÉI(\90§\ 6\9f\11¹è\89\8cd\f5"\fA\1cg\81±Ïil'\eL,a\8c\9dè\81ö±\84e\v$èùXƲ\ 5\127\88%,JnåüØÌ\8cEÉí`ÍA\15ã\92\1c\9b\ 2WEäò¢\92%\19ÉXì­\15a\9d%\f\16Î\ 1úw\96°\b\82\8de\f\16î\0Â:KXTÑ\rÇ\12\ 6[©%ûXÂ`'\85¨ÂYÂP\14\80\18,fâ±\8cÁj\8cñ\99UÉÕd\f\9b\ fÀ\94\9c¸¼ªp¸\9cd\f5ª7#\960X\1câ\96Ç\12\86°c   h>\961ئÁ\ 6\11KX\14Õ`ë\9dÕðRµ¢Ûè¿\ 2\10q4¼$.\87\ e\9bÌIIvÅ\19\e\80\8cÓd7q\9aÝ:G\10b"ñ)ã,2\901ØRÒ\ 1\1fÊ\18l-vH,aQ\91®V×'33\ 6«I¢\8fe\f\16[\f\15ùXÂrè\86«b,Ö¢\egc\83zËV\8fdЧ\ 2Woäà=\8b¬2\8e DU³v\92±¨IÜ´³á\91\96FW
\91\91Ë\11ºaFF2Æ´\90\1aú56L\9bçd(
-|ÚÈ!«Ç®\19G\10\93"ªÂ\88\8cd\f6l¡³\84ÁN$[ð±b\80%ôd\ 6\18\80¬G\r0qjqÎ\11D%!®Ù9\828Û²iÎ\11\149\1a¬ÅIÆb|¢:g\19\8bñ\95\83±\8cÁÖâªh,a°\88;¼(Æ`\91\ 3å<\960L\13vÂkÖ\r-\91\96H\r§¦\19\80mhârä\10(zõ\9b\a,\91ý\9a\a\f@8\8d¸\89\93ê\14\ 3õ\9b\8e\95\ 5>ÃjÄJJ\ 5B\11Äb¤>v\8e Ö~Øv\e\87Ú/Aì
-b6tg$c±®fÈ\12\ 6\v\17\88µúX²g\92\11\18l%u7±\84Á"\9d\815ØÌ\8cÅ\9dHÞá,c°H¹X¢°g¨ÍÄèÃ\9e)\10\15\12\84ñJ%[\1aG\10¢â\80Á\88\8cd,j\12¯@,a°8p<1cQ\84¸"\1fË\18l#I\1a±\84Á"Îb\ 3lU\8c¡\88±\ 4\g\19\83E¤à±\8cÁÂ`¡D\9b9(q\1c\9a\17Ak
-\\89\91CHÆ3\8d#\b;leS\8d#(
-.DIF2\ 6\8b$\eNÇYÂ`¡\94ÁX¢~=ÿ>\96°°\9d¨\9fXÇP0ªY\9e\99±lÝð¹ª$ɪ,\8a\ 4`JJ\9c\9a\96s\ 4± Ä÷Zs³&\93\81\8cÁµåÄ\86G"^X*R(ðGF.<Ã8\82öH#ã#ãÈ\1cÙ5\16ä,a\8cÕT\96X¢?©\ 1\9cU7(É\96µD\ 2\90åª\eL\(4\9cd\8c\87b\1e,Iç\91¡aZ\94|rÄÃ<
-|ÚÈåÚ¡+\8cd\8c\ 6q6(\17nÖ¼}¡À\95\e¹\1cÁ«Ì\9cd,ê\95ðD,a°e\ e{!\96°H*       1±\84E½²ñÎ\86\ 5\17¡\9d¢§´Pà\v\8e\9c,p\82áòM!\19ã¡\1a\83\88%\f\16:ÄC},a°\88.\ 3\960\16\9c«86\96±\9c'ñÀ>3c°è0\rXÂpX°4f\83*rj\ 1\15
-\\15\91\8b¢\eÉØTálPE\1a\eDw\96°©ÂÙ \8a86\8an,c\b\v+\80\85;K\18,Z\80Ø>g   C\15p¥8tÆJ
-\91ÃÙZÒ\17\80hBS\88ÄiÎà\1cA\1c*\89ÖÎ\11\84\9cèL\14D2\ 6[IBãC\19\8b\8e$Á"\96\84\89ÕMÍÛP¬«}\a`\9b\9a¸Px9\19\ 6¢\97k\9eY\1a½ÁöÃ<\91˵mà¤z\96\ËæèY\ 2\90'ª£I\\8e\82°òSHÆ\10\13kn\89\rÓ¢\ 3k~PÚ¯\85\8e\fÓFN
-\15\f4\92\85\aÄC\9d%,ºÕMs\960t\8bÐÆc\19\83E\ 2ÊlX0\86\98\87\95Æî\98\16\1c¹ÐFv\921\96¤Y\1e±\84\838\10Ö&\16ñ\12\16c\10ïà,c°È a¡6\96±\88\93\8b\99\19\eÄA\8enw1\92°w$När¤ 5\8aÉD2Æ\82\91\ eã¡Î\12\ 6\8b ;`    \8b8r\93ãc\19\83\85\9f\81þmfÆ`qÞ!\8e³\84Áj\ 3\8cXÂâ\1d¤\aପ\ 2×2V\98èïfß\91\91\ 4¬Ê\8c"(\9b*Õ½s\ eÁi²å\9c\80tp\8dÓ3ª.2¦éú»\1díÈ`¹\95\f\85\b\8f\82Û#\8a`Z"\ fí\94ä¿ñPëï&sdr-:\8d"\88   áópý$S\84Ón\10\«×i\89S\ 5סæÖ³­¿ÛÃ"\13ü\85Q\ 4eB\89mÎ9\14%ê}\8bL/S\12\ 4§®×ÆéB\10¡Ìæõw[HdB¦e\14A,\ 4ö-­\88xR\b\82뤼7N\1f\86\96\91\99\95þn\ f\8bLLëäkB\11Ä\84Ð.\82\9cq\ eÁ¡¯\81ð\98¸g'\8f\9e¼ÄwÇÙÉ\99¦ÈcÜ\83¶Uvrª\97Íøxöødúþr\9eõgÙó~µ\9d¯¶\9b¿\9eüº{\1f½>Ï\9e¼ÄqÏe\9e#ɵ1ÑQ!\13=~~1½ÚÎ×2J¢&\bL{ú8+Gò\11\86\ 4ø
-\93\9f¯§ÛÅê\>\87ò'y\19¹×ÇúU\9cû4øÝbuÚ\7fÒ¥ ;Ò6i\96Õ|û©_\7fH\ 4\9ch\9câÓb{!\93À4ëb\12?<\9e.ßOåÓ'/á3ââ\91\1d5\93\ 2RHpÆBñ\9fQ¥kÅUZ|þ\93ùvödµÙ`ÖÙÅhÖ¯Îd\16\91\1f}»ÿå\13\11\9a[¼ä¨\i¿\ 6õ¾\99.ç*?¶&ïâ\87ëù¦¿¼Þ.ú\95P¢Èôõ©j\10µ»oÂõf~ª3 \ 3\9d\11µ.t4âm×4qâ¸a0³*ÍÈ;\ 6Gj3Ä\1d\8e¨]\16a\96\87è°\18«V
-øFØ\fí%BaØËÊ\85=¹PÕ ºèê´Ü7óí³W?«ÝI\e\11\ 6ñ\19=>\9fÎÂ\148XhR<|ù·\8a^ä*\9fä\84\15w\12ï§×?þ||¢â¡å2îÚ(ÞÙâ2è\ 2\96SG3¹u1_è\vE\11dBB²»gÁ\9cÑ\173\ 3µå#}¬÷\97\8fþB\13½Ç\17ZÝý¦)J\95E=ÂÀú¢'!I^¼Ñm`á~êû\ f×W2\ 3\9a\8cßÂ\9c\ e\v\17\85\80A\ fD¨÷,ìÝ« \83ø\0;A$\ 4\9a|\93ï%F\14"Gé<\90#l\ 4îÂÓ\89ÿ±ÿ$\1aÇ>xÔx¿F\90\89®ià\ 6ήW3ñ\9b\e\192`¦+õ\92¸¸i,ø\Ä©Ñ°0G²íe(<l9Nîøt~uÙÿ®Û\8eV\98}s³\95\b¬kCma\8eóÐ\830Ã|u\9a¾\8e\ 2­«R\0¼Q\94ë$ hÈN\92\85Fä¯\93.úu3\93¢\92å\1c\1c\aJ\r¦AJ½G ØÌg×ëÅ6È\8fCݦ`Ò_\99¦q\1càò¢¯:¤\80;jZ"öâüz­ZÅÕéd\9cü»É\8dúÅ·à¬×ü\ 5\9eÉ\97µ\99Ï\97\97óM°\0dvfø\8b\94ÉÄ°\8a¤6¿1¤EM\96¨³àÛè\9cAÒ½söËf?PÝCÃoNÔäPi»\11éò\aq~ºÒo!P\9aýN¯·\17Èü\163¤gA¨\ 6y³mÐf¾þ\18\12<Ä¿n\1cs13\96ûþR4j\\ 5öeG#û±íõôC8\19xua\92\82Øá=ÔD\ fïN\98TËùò}ÌKq\8fj£{ÍånSÉÃÔ~£­\9föËi̧\10\ 5ñî§f\1d·j0ªLÞíÛQÙ~äD\1a\8f·\11ÌpoÐÛ\176\11\89×w\14ë6¹\93¥èËqtv\1a=9ä\86 óì\12\8e.:ì$ñmó\7f\13¾hÅܹ|B{\ 2»\bwüÙú)\ 6°Tù¤m\8dÑ
-m9ôy¢§|ûôµ<\ 3õ\8b\9byriHúÍôO\17\9bízñþz\e2}d\86­Í\81OÕ/pN?\83SXO//Õgã¸\166Órº\9a\9e\87Y$Eµ\8aë\80'A|A¡x\17;/º )«ÕÊ\9aê4ÄíÝm¿Á \ fDè¤!¼2\84ò÷.\8bùº¶\11D=Bã\8bÎ3\14¼+á\8b\9d\1dC\ 3;\85ǧûNû®îä\8bÊVÄ\ 2\15íT\8epx\93sW\98´       \9c\87$³öÈS\8dª6\19}p\95\83$j³|o\ 59\12³²û\86ÛYjÕÉG\19í\16©en;Ë1oJbýØoR\1f\ 4-\13¼\16\13ϱ\860\9d1\14£¯\17³u¿éÏôd¢{X7iówí\ 2*µ3ø2Öx¸øqM\1eÿ¾ÙÎ\97r¾P2{HØ®ç!¾¢gm\93\87\14\0íÐÒ
-~?iÈ[nLvn·«RëZjÇ\14hsr5\98Ò"rî¯VðZ×\9e\8e#íM\87àö\a~\8bo\ 4¡\8e\90\ 1\10IöS¼7ýv®\ 1\17ÎúO"E©u9[5\fòV\93\8e18\99ô/o^ý[­\8bKÄ·óõr±\91°,\14Â\8dgÜÏ\16¡Ñ(7\ fV\94Ä\8c_\f·K  ;÷\95¸\13\18\93\19l\86ÿt6\8bù:\9aÐ\9eòÃÅl×ý¥®\ e§Írã\9fà[ÃV \17þÃQ¡,eb²è\12WÈäÔÑÊßõ\83ÿZÌ?¥¢\13\97m\96°\1e*xf\17ÓÕyú2®M,)'\85ã\9e;:\90+S¸
-\86&«W\9f\87ë@$þ²~\1c·Ü
\ 3uÄÍ  íbzÙ\9fëÓ ô²\8aöp§c\17TwTj\13ÄÒ;tôv\15v¨t?P_\7f\84^E\98A\89o\1d/.\8bn\14'º>\J&O»WV¸+ä
-rs1\rÕ&\1aÐ]\1d÷ãNZ¸ß\97¢Îp)æÅ$\1cú®Æn2±\83Úè?­æëÍÅB;Rè\12Wõ÷k­Eùp#Éòí5sî'_(î¹Ù}ºXÏgÛ~\1d2[\\0¤fÄî     ÂYþRÕÌç6º\f\r\97\9d~/¶â@\bIñ]úÙ\16 ÝÕ\86\93O]®Ï=÷ËsQ\12$F\1c\fE\92ýêþÅ`\17¸M³+\ e\ eUõ-ö!é#í\a\ 6¾|¿\ 1Ö\9f.Î~O\ e\1a;bݾÃGí\ 1¦\88Äxüµ3ü²\16\az\84X0\94{¯â\96ë¼õT\932\19\81wb*ë±Ù]\1c^þ2u\1c
-4è|¢\9b¹Ö\86*Þöô\8b«Ã>v¶\9eO·!]Å-×8µ\83\96ÓÍ\auû¸R´ÊájºÆ\8d\18Ö\18\8e\ 3î\89\1f¨º¨\19}\93t`\12í®ïý\1eª9hlÓm¬öE;RhXê³\9c^]%\9b\85Þ\9b\adôñÄ\94»]\8e\12÷­·&\91Qw)\89|»Fo5­\v-WónÇ×WWý:\94\93\ e¶úÐZ\f\99\9b\ e\12pë%£d\18ý¦F\82÷\11ª¯\17\9e\93ÿHZÙíhÈ\e¹ì\17q\8fuÀ|Öýi¨wôhÅLdgêï\ 3K\15è\b¯ïÓ\19@%³+Ä~Y\8fkö?\8d Q
\ f\86{\817­U\10¾«{.N'Ù$gëÿ¹\12kýË\7fõp!}~¨\83ùC\eZÆæ\8b¾ìb)´lÈ~´=\9eo\93 R\1fY×áÅz\81ö~Háñ7\ fVL¤\ e"_\8aüð\e\8a¦¨\8dAëB\8fn\9a\ 5\8dýTÓý!©n\1eT\85{ÿ\1c]\9f\81´ûmpr\19\83+ä½|þrº>\ fA\ 5\r,\13~um\97\aÜ/9py f\90$\97^èÃ\9déaù«øN\0Þ¢Ú9|û\97ÎOOOÓ.aKS-ó&ÖGè:Ú;"\83\8dÃ\1fûY\ 4ý¸PU\r*ÃCA\9c\vt~ñã@\15ùôí;õÁx9°¾O¡xP\1fQ\1dúoMìècÿ\ 6Û£\ 2\17m\87
-î¨\ f=ÕüÝ·\88?zFð\96ÿ$u'\ e\8b~Xisæh?nì\95|'\aÞryµTëÔuK\82\92\93¾¿ÜÌ5 Â\174ßÅw¹\9e¢\90èÁС>ô&Ï»\8b©®Y®²­\13²Pñp5æ\8d¤$÷ßd\eñ*mWÆdÑ\9fùõ\7fK[\87¿\8cä\ e'nä\ e\eÃÌMö\18¼¶\9a)^úLåëÛéì\ 3.fÂ\86#Õi¾^w<\89×Ò\8bi"Û¾+¾\97eÒe3Þ-N\19à×ß­ø\84$ÕðÍ\a\91kßÉ\1e\94\vÍjÜ\98Ùu\ 65«³ç\97\v\¨©\aÄ?\97ò-ß\98     Rá\84Ä\7fdH\7fÓ\97:»ô^$þ\8e\ 2N&kðÇèz-yüôõ³§ÙÛuÿ+\1a\8b~v½ÄâM.ùÓÂq\89­oååÒÓÇ\8b\85ÈõÃÉ£\7f<ú?MÇ\7fíendstream
-endobj
-1018 0 obj<</Type/Page/Parent 1011 0 R/Contents 1019 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 147 0 R>>endobj
-1019 0 obj<</Filter/FlateDecode/Length 3947      >>stream
-x\ 1Í[ßs\eÇ\r~÷_q\93'w¦¤y¿É\87NG\91ëÔ\99Èq-yÜW\8a:I\97\90<åHÚÉ\7fß\ fÀ.\80#eÇULÙí\8cGß}Ü]\0\8bÅb±\9bß\9e¤É\ 4ÿO\93:Kò*Y¬\9e\13\7fRúçÍ\ fô%©\8a\19þ]%ùl\9c\ 6°LÎ\9f8¸JÊÉ\80sp\95Ì2í\84Ú9¸JÒ<\1fg®S\8fÁ\16å\90u\18ìt2Î}[\87WI6)\a\15I\91\97ã)T)³q\19\0\89ä Ä\9dQ¯üC\16wF"\84vi:\19W\8eô\98\94)Ƶg\1d\ 6[Õã³\ e\83\85Y`]\1dÖcR&\1f´õ\18l6U\19Id\9e´É\f-â¤1 J&-p2KÊ9\by0"4UÒc°\98\b\18ÐX\87E\97©cÙôå¬\82\90Áô\ 2Ôô\91KÑa\95\18)\r§9»\1fORÉÀ\1a\ 6.\9d\14°\9e\91\1eC\1eô\93yÖa°õl<s¬\fZÍÌQJ\ 66hàÐ\ ec*ç :MK\98ßH\8fÁfäT\8eu\98Ä-É
-Ú±Ç`«\ 2æ0VÄ-+4\89Æe`â\ 6nZ\91DÊ9\88N'\13\12HI\8f
-\0\8eu\18lY\93¸ÖÖa°Ó\94¬d¬Ãð\\98É÷,Ê\14äìQ\19\ 6¦Làê    ü¯TÎA,à\1cSg\9c\83¤h=hè1):%\ei·"NN¶\89â00q\ 2'ã+ç`\14G9\11'´K±ró¤TÒc²,{\98²"NZ»åÀÀÄ      \ÍΧ\9c\83è4#ë\96JzLCÖ$\90²2$b\81\92\81\r\198DM\18]9\aŬ\98e%¹ÓbF¡4\98U\80v\1a9\16Ü8\aI\8f\ 2í\8d¤ W`mÐTq\94\13@}:\88ñh§2ÎÁ°S\19Ç;Uì3Í&°\9b\91¢D\89\8dR\95``J\ 4N\82Z¡¤4Ìk3iÁÀ\1a\ 6\8e\ 3\8aq\ e\92ö\1945Òc°5M\98c\1d\ 6;-±M9ÖaÚLrx\80±\1e\83\85\1a¾-[=My½\8a\99\19\98Õ\ 3WRH+\94s\10V\1fr\ eBV\ 4vßÐc°EFzj·\1e\83-\8b!ë0Y\81¾kë0ô\9cP´4\96'-\9fÑ>\v\17\9a\ 5ð¤\19äÕ\9e:\ e«=BR¦\82i­¡Ç`aøÚ³\ e\83­R\88ëÚ:LÊ\90ã;Öa\8a²Õ ­Ç`\91\82\15®­¨
-\9f`ÇfÝ\18\98ª\81Ã\ 2\86¼Ê9HªR\16e¤Ç`1\13\10W\9bz\f\16\9e\ eû\1aë0ÄÍRDpcEÜ:\95åÄâ20q\ 3\ 4+WÎA^ø\90G9,ü\b!\ er>X^I\8fÁbË\80\15\8cu\18lEAñ\ e\83\9dÕÃ\9e\1d\16\17ôã\92KF\f¶ Eg=ÓBÌ\91\85iÎ'@\17bäxå\19ç û.ÔæN¨\1d|7BÒ\93vA#=\ 6\vý!\8d\18²¦´n\8cõ\18,fpÀ:\f\16\99\ 3ì«={\fvJÛ¹c\1dÆ6ÀI\98±\1e\83Åîê{\16GÊiêã\12g`\8e\148D\ 1ØZ9i\97Ê\19IB\ 3\ 3k\17\ 1á\81JJC\1cSxoåN\19XÃÀa1WI®\9c\83°|Fí\8dô\18\18\18R\9bÖt\14ËàÞ´ó¦\13ÒU\10\8dé1X\84\85Ú³\ e\83E\9e0u,ë\92a¡râFº\bP]"ÇËÎ8\aÑ)§&FzLCÒ\99ÃXÑ¥\92SE\90\9d\91Ó%²\ 5åu\99±\ e£cD\9a\ 1ë0¹gFvж\1e\93{Na`cE¨RN,A(FN¨Èæ)Bdf¬Ã\10
-3\a#\1aë0\86E¾îÛÊ°Ø\80É\95°\8cÜ°\91åÓ|f¬Ãè\18\99\1fôQÖcÑ\16\96RV\86Íäì\11\86\86\8d,ûif¬Ã\10¹(h
-\8cu\18,\12?hk¬Ã`±qW\9eu\18"#\1eÃQµ­\88\9cÊ    #\88ÌÈ\89\1cYx<la¬Ã$\14Õ\10\8c\95\15Àç¨\10>h\92²\84ú娠\10\r±\9f@\e%        c\19\86\96t\ 2\98yÖa´EL\86\9d´-k\93"èÑ^-Ú\b2m\94E¸+`,ú-±Ò\94\13CmÊÈ5\8d,\9c?\85Â\94TZSle\16Eh£«\98\fRD\16æG5ÉX\871,¶\8dܳ\ e\93²Ô§µe\v§\ 5UQ\82\85\ 5\90HláÈ¥H\b\14ý\92Hi\88b\8cFvªÔ¸©\11\88\11y«7\926U:!Òª\82ÓÃ\ 6\f¸O\83\10\862Xã\1c\%(JÁìÚÎAN; ¾r\88Ë\11B\16䶵#=&Ë\91TÖÔc²\¡=\91°\1eSð DÂÚzL\11\80v)Ç:L\11\80\ eû\8eu\18,\12\98\ 1ë0,\88Hãeæi\81¤|
-$7á¿u6\ 3\93býåF9\b=Q\13ª\8dã\ eQ_Pÿ࿵ÃÀ¤i\ 1ïP\8a\eU.±ç¿µQ`¤\91R\ eB
-¤F(ûQ\17ll\83à*Z°Æ\19¤yH¡»r\ e\82\83­\1cÇB­4%ç¿UÈÀ 1¡B\f~E\8c!\12\91k\\91r\90\fB\9b9\b1° ¨z\13ºt\10\1c"\93kç 8è\89\9a\9a¶3\b\ eNáÛ\19\84\8bàØ@u¨0\9e\83à°c 4¡\9cAp\18\0õ ÈqlC\82l»!\ 3\9e\1dNz"\87hD§KüPfN!Ì\82d\ 6'lå\f\82\9b¥\ 3ΠÔC¾@'ÇЧ\83à\10¦<g\90T'_Öv¬\ 2,l!\96\81©\10\ 5Ø/è\87Ì\19Äp\13ú¬\9c\83àPÎÀö\15Û9\b\ egK¤<Ê\19\ 4\87\rÄs\ 6¡\ 2TGÎ\12Û}\7fñäÙ\vÚË\92\8bk,U$È(\19×ErqÅw\fø¼xz1¿\6Iw\9d\9cvëm³ÞnþvñËþ5D\7f\93<{\81x\9eR?£ÐÑ(£\8e\9e\9eÞÎï¶MO­(@c\ 4t{õ4©Çô    M\ 4¾îÛõ¶]ßÐG2qU\ 5â|ww×õÛð\1d\8a\87ïíZÚ\8fg\18Gú8\9f¯.çô\15åYÔ¿ÃW¤Ðãßéë³\17\bóADd/ù$\85¬t\82\82\88D\9e
-6\97ÞÎÚ\9b~¾m;\1e§À\19'\12Û.\8c\9cO¦á·×}·¢\8f¨xao:\10\aÙü,Sq&"\ e~û©.UlÔ\91t ñÑþWäb"\9dÅ\f«\17ò\8d\90\97}r\1e§Ãy|Þ\înnÂD"7.¦Qñ\8fÎðë¾\83\8b­Ø±\90\11 ú\88©\8e¦ë ã¢Ü÷\r:ÏBñè\1a8>ì»ÆËõ¶ï®v\8bè\1dep\8dAÇ_\v\88B#$j\ 3%²}%\863\85\8dN\1d÷\8eÖbX²\88\17u\\8aw~¢\10\vg\8f9Ol΢¢É\1a¥Eîç'ßWíÝí\9c\ 3\ 6|·tÒ³VìfØ­ó8iÉ\95¬g\1c¦ã
-\7fI£ÀïÓ<,ÚÛùûæ\9fô\11=Î&Á\1e\8f>ÁQ{RËë\7f\10ºÎ\9bm\8c¥8\11Y\80ÜÝ\91\ eplÕ\94§z1çïØjë¸ö\92ùú\8a\7f\8b­bè\17l\ 5ìåY\98ýdÓôï\9b\8a\eÉôQ¬SÔ$Ç(­!óÀ\16å¾/üØ]\ 6E&NäõöïA\11T+Ã$¯\ fü ÛmïvìIT[ûê\8b<*\8d¬t¨tõp¥7Û~¾¾iÈ\188q\95iÜÑLud\vu\1e\82ø£»ü\18\e\88Ì4¦É\85ä\90=Ønýfþ\81'4\eÏtÕ¾î6ÛóEßÞIö\804L7#        qìâX!UÌJ¾\19ý®jú\9d\9f¯\17\rK\8cM2/b\96á·U\K}½è¤¶\8b3v঳}7}ÓÌ\97\a³vå3\b\94\ 1Ëé£æ\ 3ªÆþ\1fÅ\8cDõy.\12Ï?M\8f\82Î1Æ\9c7\8b]ßnÿ ®(ÍÕMhÙ¼o\96\1cD)º\87ÉÝ\17áÑq9\11\9d5qF5Ø\85[äóûSúM§F¢Î^j\84Cä¾\12g]Ï\11q\90?,ºÕݲÙ2\81÷\a\96\16]5\e\ e2á¨\80ûWÛ2»k2 ª]\16\95\ 5°`-Aq.\80,øhÛM\9cSËôqÃ\8eI\85²\9fLôQh`],&yM
-Tâtóø\aý\10§É\98ú_u«¹\9c×\90càeTØpÿ\8f#\1c\1fà\90¸LóGÛ\85ËlÏ÷©àï÷]ª¼°I²¨ç\8f\ eG\9fÁ\11t¾fË¡X­¹Ô«\vþ\84s§nWϽ\95ðº,XéC»½¥ßús`bGÝáÙ\92eFù,\8fççc\85\f±Î(Å[\0xªîÌ°\89¬&µÉý\92Þ\97^¾k×WÝ\a9\ 6\16nÁ \98ÎaÈ\1f\98ÅVò[TzbUàXÚR¿eN³0â\8bü¡ÆrþP\8dßÝrx\1fÔ\ 2Z\16\15Ö\99ÄÝ,ÙÞ\86\8fH±µXq\89Ì]N^\19\9cM³ñí­¸\10nÖ­\92à\97ß \90ðòÃ%EÜFB\8aÎ\a\18\14\80ªô\98kHÌä¶Iº\8cú\9cðr°\95¼]·×­d<¤\9e\1aî§î¦[³=q\8c³\94\ e¦ûÐ4¼Ò°³bÔ°~¼[ád\1f]%        +\10em=\17\ 4¯¤wD\9a)¾}õò¿4ñ8\ 1Øn½Û\84e\8eY\9a¦n¤Kø0ý\1aW\ 3ù,lú\9fï\94å~-"Ç\84\ fB\ e\9eê\rCÎÉ%eð\v9¤ Y\12¥?\7fÈ#ÿR4\1aávÉ/\19LÏP\8bo8k\b\1aÔµ\v\13\eÊ\7f\ 1\8e§î\0\8dÃÔ$(w½o\913°SáÆ/\96/\8f<\13\aÝ\aÅè\rÉpn°M±vîÌ\9b\Ìû\9bF\9c\f·7± ôv#jàU@\C\aÃ\1cÿC\19\8a\84H\ fÎ\86SôïN\ e\88¾Bû\91\19z×õ¿Êô`Í\1f{#ý\94}\82fHº÷¦\bJ\1cLÑY»è»Mw-\87\ak®ñ¦Yu\92·RÀ¬ãY\ 4\8e\88\ 3åNRÝÁ\99òt¾\fg\11Üì¡LÎ\ 5ñO       ú\0.ÎÚ\14\87¨XjåY\93Ðà\9dïÕ|%é8RJÍ1ÏQvj\17R¸@¥ZÃý9ò¥\ 5'Lx­\91¡Px\fáïÕ·\f5)$Ò\aÓ%ñÂ+õz\89:9Ý­ðvá®\17NvÛ[ܳ´\v½|À\ 5¤Mæ\19
-ÏË\10=p½w$÷\8cº\1cÌ\8e¬*¯\b\82\0ßî \bXùè¾üî\87¾\93\ 2$ZÛVúò9\19\80RV=\v\9f,\97\9di\ fÏÄ\13¾cNc\19JLx\9b¼·Ù¢"v°ÎÞ4\9bÝRB¡\v\ fÉé|q\es\7fܱÇÅw¯§\1cícÔ\84þ³\96aP\17=4G}¹Þl±ÈÕÅpM¯\eÔ}s\87Ë¿ëöfg\17b¸Î=\96ï}Ä:Q7dg\aº\1d\83\8cÂnÛ>Òÿ1?\aÙ§ûsr\18ëÞ4¿íÚ¾YÅ\9bÖê\11\ 3\98·@ÉÕ®Ñav\80\83%qÑlô¾\81o\r9æ&\17´ d#¥}$\96\96\7f\96\92:\9e\9cêYÆ\8f|Ä¿\83RxÌ<Øs¤|®kã§vÕnye°ìni\1cQ´Ïîº\92l§Æó¨¡7II\µÀ\8a],qN\91ûëoM      Þ*Ý!\91\9fØA\9f?-BÉ\8aÁsù\98N[^\87¨ ~§\17ôVt\8bñ\8bw[Ô»¬êbõ\89½G\ 3¼-Ù8sv\86\14õÏ\98ê&üÖ\0\ 5­8.Jñ«y/µ]<1\89Y²Õu¨H¦­é=Eß-\97²{¢jø°Ò}Å\9b\97\90#\9bò\9e\81GõÃLøußô\14e6­$\85x\94£wî JòWq\esµºÏvÏ/ùCQmD¯²\87
\9d\1e¿\9f/~½Ar!Gï\98F|II\1eØWP`pvDa`8\1dÑ5\83ÕñúÀ<\f\99`pC«\a\9aÃúÒ\9f9\19J¬öã¡\93á\15\8b¾\8by J\9fhVÉ\96\91!\8b\1flÐX
-{\1a÷\rÂkxë\83\17¤1WJÎ8\87\92\8cØ\97p.úÝ\863.¼I±óËÉb\819\97\aIxÏc>|_\ 2ó±Òìé²\8d[íàª\c\88í[÷M\86\ 3îÞj®k\8e2z\9d6ôð{\ fxóõNîË\ 6Ï\17\9aá\99\92·æ=w\ f\7fÁÀt«ñe²ð¨u6u»09Éa6ôÝÏë\11Ì>z±üã;Z\bx\b©9CòH\8a\97\7fá\b\§$8\ 2\7føïöù/~0\87\97¶á5\1a\92i\.$\15\9e\15ÌùÉÙ÷'T(ú¥Yl\93çÝbGù &ë9íB¨.\8ejz¹wõ´m[\1aã_\17Oþóä\7f#[znendstream
-endobj
-1020 0 obj<</Type/Page/Parent 1011 0 R/Contents 1021 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 192 0 R>>endobj
-1021 0 obj<</Filter/FlateDecode/Length 4602      >>stream
-x\ 1Å\Ûr\eÉ\r}÷Wð)q\1e,sî3yIùºqâ[$mù1EQ#\8bYQÔ\92\94íýû\1c »\813äxW\96,oRåÒáa÷\0h4\80F\ f÷×\aÙd\8aÿg\93&\9f\14õd¾|0=\98â\13ù'\93\7f\ e\7f\92O&uÙáßå¤è\ e²\b.&G\ f\b.'UuP\13Gp9i§\a%q\ 4\97\93.?(\88\9cde~Ð\10É\18\1c´Ì\12\ 6Û\95\83\89\19/'ù´>èh,c°Y5P\941ت\19¨Ê\18l·Ã\12\86\ 5aI\96¹ÉżE\85\ f!ò4?È#\12û2\ 6[4bEý®²\84ÁV\85\bå,a°m1\9c\990X\98ªâ±\84Å\18SY\ 4\9b\991ز\15C\1a[Ô¢P\9eC\18øDk@$&\88\87N3\99V¿\19\94u\f¶ôy\94%\f¶.EY\1fK8¨\ 3\91\8c\r"M;X/\89¤ÀE\8a\WȪ\eG\10\93\16j\ 5#\19\8b¸2»\ fe\f¶­Å\15
-Tu5\96$
-\14\80     \94¸VÔt\8e &Åt\1d\91\8cEÜl0\94q\10\97'\16q\13\ 6[Õ°\83?\961Xì2f\832ð'       \10ºÂ\95\ 2W&rª¯s\ 4E\q\18'\19\8b¸­<Ò¦e\f\16ë4e\960ü3¯±2>V7\UË.ÄPÝp\ 1©\97\11\ 6[×ðPb      ËIJi\9ce\f¶®\ 6c\19#
-À÷yl\10
-f\97M\13\85RDB%6\bá,a\13ÊØ(T\1c\9bcy`\vg     c,¤\80\95\9d%\f\91\11\12sb\19\83-Z\18ÔÇ2\ 6Û¨1læà2eá\e²Rà.\13¹\10á\9dd\fCÁ!à46\94±\98¢\15\e\eË\18lYÉîq\960Xì4\98ÂYÂP'\9f\ eff,¦ÈÄ\146\961XD*\96J²k\955ºy4\9d\ 6 \96 \88\8d%ÙÕ9\821»:§Ù5Í©éÔ9\82°_¦^¨OWG#\f\16þ\9ddS\960XlØ\82\ 4b\f¶ÉÄ~>3aX\17Ïa\961ØZüÂÇ2\ 6\vWâç2\96u+ĺö\Æ°=>g\961ØJC\90\8d\9c\94¨\17XfÆ`\91\9d\98\r\ e>-4È\84\98¨À\1d<rYV\88:F2\86\19!\12\ 2\90±:mÙM5Lè´\ 1Ø´\89Ë2ñ2'Ã@\ 4\80¥\ 2\1f\189Í0Î\11\14\87\90\bà$ãà\10-³p\90\84\83CL\99\85C$,\ e!å¥ÏÌ\18,Í$\ 23\ 6«õ\a\8d%\f\16\ e_ÓÌ\1ahKìAɼ!Ð\ 6$\133\16u%q\10K\18,2fÁ,a°\bu\1d³\84E]\89.>3cQW×Ne\fê:\16u\e¸\ 4\8d%\f\16þÏ23\96È$\ eéc\831*Y       3\86"2Fb\11Ô ®³\84Å\18\99<ÖYÂb\fÙvÄ\12\ 6ÛJÙG,a(¤¡ÖÙàÈ(|%{\87\1d @$&¸\9c4\12üKã\bâ\91\88?pd#\19\83E\9c\83ªÎ\12\ 6\vű²Î\12\ 6[·Ã±\84¡\fb\b\vÅ\18\1ee3\aUñp+¤K\ 5®jäZIÛÎ\11ÄáJ²\9cs\ 4!,\8a\1d(j\932\ 6\8b@8`   \a3`ÇúX\98!aa[YSb\1d\83ÅÞ\1fÌLX\8c$\85«\8f\rN\8a\15\93Ð\15w¨"rÒÄ\86\1dê,a\8c-§b'g     \v«kC¬c°m#\1eã,a\11Yw\9d±\8ce]kÙuÎ\12\ 6ÛÈ\91ÚY©\a\8a¶Ò-©\ 5@\0¢,ÁX\ f8§õ@\1a\87ú\17Çy\9d\11\84&8¨5D2\16MJØÙ\872\ 6\v\e\15Ì\12Ft\99Jzð±\8c\1d°p§\84%2I%Bc  \83ÕXH,aäÞL\ eÍÌ\8a   áS\16"\ 2°}\938=\808§û­@\10±ý\16\80\8f\8b\¦Í\ 1'Ã@Ô\8f\96\\v\ 5>0r\19ö?D3\92±¬\8c¤gb     \83mtQmlx(2£\1d!\v\ 5þÐÈaË×°¯|Q8\82\98\14\89\b¦3\92±<Rr'±\84Á"ÕtÌ\12\16G\92Íæc\19\83Í¥p'\96°¸\99\9cR\88%,\8e¤Ëm2\aCh\ 1\113B¡À\r\11¹P\13\18ê \8fÂ\146\941X\9c\17á\9fÎ\12\16e%ø9«!KÜß\8f\98\ 1\89L!\84\19«¹\90\98\18\ f\84\9dt&\19«\13\87\92\ 62éY5 \9fØX8k\eË\1fe      cl'ûÍǪ\11%\14\99\v\a #1pªa*\ 5à"¢ôÐ\841-²uÇ,a°\b|\19³\84EW      zþØ \12\ e·æà¹\ 2\17)rh¯\9584È\17\85#\88Gf²ã\9cd\f\16åmNlx$úfÖÉÈ\15ø##×\8a78GPl \879'\19\83\8bD,a\11H\ 2\84a!¬\ 4\8f\râ"+X Ë\15¸¸\91ë¤Qä\1cA\13×\ 6FqãȬ\16Ïö¡\8cE\19É\91Ä\12\16eÔº>3aQF\8a\ f\1f\e\94\96è\8b\13 æU Ê\10Ä´81A\e#%aJt\117Á³à`
-d\1cÁ\980\9dÓ\84\99ÆeH{Ø,6\901\9eX©W;K\18l\9d\8b\12\ 6«IÆYUSª        s±\0\12'"d°¡|SHÆb\ 4ñkb    \8bÀ\1d\1cÅÙðP$\10s\14É&­Î«»;@\fD!Siª      $c°°gÁ,ay¨\1cK}bÆ`QÕ\97Ä\ 6\91j:Éf
\ e\91ë$ú8G\10\93\96²lN\86I\11È-\8aI\14/IÏÈE½\8cd,z\8aq|(c°\1aú\9dÕ\98\9cáÌæ'Ê\80ªI²2VëQb    \8b6j^\9d\12\ 6Û\94²¦Î\12ÆnÒî\84³\8cÁb&(dc\19\83EG%É(Ïe\f\16Ç        \1e\el\9c\873cp\1e\ 5¾p\91C\86é\10\få\8bÂ\11\842ÈhPÆHÆ`µ'B,a1\93\98\9aXÂb&];\9b9\88;¥ób¦ÀÅ\8d\\90Ï8\82\91QÜ82ñ\17\ 29K\18c\11\ e°¥\9c%,âJ\99D,aY7UÆƪ2¸\9a±\ 2Uÿ6U"£¢\eã(éaTP#\8e
-Z8§J$NevÎaÒÀ9U \8eË3iÛ\e§âk\1c\88\85\9aþmâG\ 6\ 5êtb\8c#<
-ý§Ö)\82àP,gÄ9\ 4\87ÈT\10ç\10\1cê\86\8a8\87à\10l\88Sñq\9e·zDÿ6ñ#£\ 2\eã\bÓ©øF\11\ 4\87{NÜ\9aÉä2!AphÍáÆÐ8\87ð\10Ü\ 1\11§""³IrѤ©\7fË\8c\8eÐ.\96ûIc\1cáQ8\ fH\17?îY\82à4©8çPÄÐ{ª4NÅ@\v\8d>Xÿ61"\132\9aQ\ 4Å\1e\92Á\8c{züàñKI²\93ã3\15d\8aÛʦ\9c\1c\9fêU5>\9e?<\9e\9d\93ÕÙäÙêrÛ_n7\7f;þßîmöúãäñKìÆLæy$\1aa¢G¹LôðÙùìjÛ¯e\94Ô\r 0íéC,Û\81|\86\ 4\9b>ùçê³|\82îF\93>Ú®ô;\byY\11ÇA\8c³ÅÇëu/\f\®4æh¶<\99ɧ8\8age\9a\ 2\89BçðçÌT\ 5<¿Ê»8©\ e\83'¤Aï×\8bålý\9b\f\84\a\95uüÚóÕr¶¸ÔOQ\1eÙh±Ìzuq\11´|ü\12 9X"\87kV] \93È!\13Zã¡h\82©â¸ö´Çýkµ¸\\~Ü\93}{®ZÂFY\97'ý/\16X\ 5ùj\8eC\8c©i\96*¦müæØh×\0;y\9aů\1e|÷ÿ5\99HøHn °\98¬\7f¥Úç¦Îj¹\\ 5\93\16\aÍ4­òûõ
-n·Ô\95B"r¥f\97§23"`]\94\17ëõj­_ÅÕ\94yØw×itÂF½\v>\8f+Í¡¢õPÑ£ß6Û~¹·ÄïW\17\8bù¢Wé±$UÛD¥Æ\14\85\16\17ñËpòd\81QÉîãæÐe\95{⡲ÍPÙ\ fç³à¢ØuMÚ=+8¤Æ\ 1ì\8a¢J[í¼¿¸\92IQZÔæäó\99º\ 4VÙ|tòJ¾\85«\ 3Ûï\1fûí?t$r}\17\1fr\1fJ\7fmΦ\8cÆÐ\9dÌ>Þ\ e­A\9b\ eþiJÆ°!\93 ²\17u²ÓÙJ­\84s»ÛîÃâòtõ9m\a\8f\86Ý\97Ço^è\f¸ÑJ»çk\ 2ßýó¦        *ã¼¾ãíPL\95æ°\96Bõl»\b[\1cýŲ\91W£$\ 1¼ºÜl××sá6\7f\97iÑ¢±Àÿ¶ß~^­\7f\91\8f\91­p\9c\8d\83^¯>âëª0ÊÕøé\1dõjZU
-÷Ø\83@\85tð=5:ê·Û\14ãqÒFr\ff¸VïG\82\ fW³eü&
-Õ©E\84\9f7qûà0\99"÷d'$Ä]u\13\8bDµå\8d\ 2$"vßnÇ}ß½yòêí\7f\9f½{{|øîõÁö\8b\f=´¦N¹&,àAkÉçk\ eûöX\8c\8d&µïãoÜ\1e\7fÑ     pÕaÏòÄ\8fÃp\e3ËML ßi5\80SùR ´\12\83è!ò÷
-\98\90Ç¿¹\80y2\ föëÈ­oP\92<\9dÍ\7f   ¾"¯\84diC¸ñpíòµ\92\ 4=!ßB¡\80Abv\1fÜ+\7fP^]hõ\83\a\e·3\17XVýhbFdð-î¡ô\93ÂR]ÞW¦­d-©`*Qw\ f\ 2\v^\1c\e:ãûu¿î\7f½^l\16ÛP\ 1â\90Ý¥\9cyØÏNÓ\1e\83\7f<tUöþ
-º=\92K\rÞ]ð­¡B²®\1f׫ëPפ´¸7Ý\8fÿ *Ð4\14\eðRÅPúÑDÿëõìbq\16\8b\1a¸¥Wjêh8&¥ÂeB\1e2\92\1acE\8d~Rgi#d\12\8e\97cuîeÈ\1fZ\1f \82o§1ëÜÝ\8cÑ,r\85°ã©ÉW9\ 5ú\99Æ\8aµÉé*Tpx\8fÒ÷Ö\9ee> ým¶\96:\91\1c}\863T\ 3²sp\rà\9bm\11\8e\8c\1f~NíÀ"×\93©ä\9aÛy%Ø\a]÷úö©´­E\14\84ËlÇQöÓç\87óþRåÆ\ 1Ñ2ØBÓ9Þ\85õL7¶¢ï\9f?Ó¡hßÚ¡ç²ïOûSU\ 2A±ªîí8ãn\13µÕ&üp_\97Ã\9dñ,\94°\83\0\8a\e\ 3OÂ!\ fëfÛbÏ\e(ú£TLQâ\8f·\8fÚFÂ?^Dß    ¾®ÓíÿJk\ fWÞÙ\f;Ǽñ} \vÊ;y¯Äßô!W\96\14\0ö\v¦=k\8dÛùéógj\ e97W?î¼\90<\ 6Õª\17Y(áF
-æ[ZiÝ_á\109\v     Qâm\9e\8eÑc\ei³<¹\9am6\9f÷Óµ\9c-\83\85ð\1ea\1d\93êí\9dc0²Õ\93\ 3\95Yy\83\ fk¬°©¨Æ:Ú®Ö)ÅóqY\97ü¯á\80\84&Kª\ 2'R4?~3\9b\9f/.u\9b¡ß×ØiâÉ|\8eÄ«.&=1ÛV\8bK\9cÁ\96\1e{ñ&¾å\9f±òI\83\1az|~\86{ýüÉ{ñn\§ûF\7f¾X÷sÈ\1fúJ\bÈÍïGÝV\ f&T\1e\15(¡Ü\87\10    \87!çýõújµQ5)Ü\ f\96áO\ 5A\9f\9cÇzì\94D¯¤\9dv\1a\8e\86bÄ´.\7fªðááQ\85AQ\94:zÖÓ:º¾ºZ­·½î°Añbn\81\83\8ayÔQ¿þÔ\87þ\15Êm;ÖüXmÛN,\8dEÑî+/ÎN^;\9a\9f÷K\8d¸Ò®²æÎX»ê°¿Ð=´9_è!\17×Z¾CnØ°<|\19Ò>\ 2f:1çÅT\83  7\8aá÷\8b\9dq\95bEæ\1d\f\19­\82«»Á¾ÛIn©Ï\11ã\12Z\81ÞY\1eOE\9f\17Ûs±7ò¦­÷dÌ9î ûM\87vÓ°ò\83ü\84WcGòÓ»«þ2I\89\e\v?x¡¢Ô¦¼\87\1aQÅ,tSAnõ½$=^àÚ]£ýúóf\v\85~SþÝ\8e\v7R*)\ 1\17ç\9d·ÓA\8eî\9d\9a\80ný±½÷\13\8e\94W¡QF\8dâÉrv9ûØ/ã\r\ 26dÝ~CËèFÊ\8c\v÷\ 1\19Þ\17ÞÙK;\9dã£~~½^lCó\ 1ïMY·wLÉ\8dÜøð®GNýñ\87þ.^\ 1À\ 5wtÛé\ 3§­\83\970=úo®úùbv\11\96j\10Q·Ûõâäz\e\ e\8bè\ 4z!1Ö!f[èdx\9fâ¾\167j\8c\97È\aþºÓ7|ñe¶¼ºÐrdP]½~þê¥\ 6?\1c\10ô\ 29?]\83pÏiLÕ½z\9fu\97\99qÛ\ÜWðé
-\r\97òÛ\82aÀÁ       6j\95ÎÙÏp·\95nLqñúC6ÚèîÛý°+ER*ÆñjÈ\r\8añ\90ö¨\18\7fµ¼Z¯>Å:\a\97»¶\9a'k\V¤\1e6n/íÄ>R=ëâ\89<R+§\13ð®Ä÷\82»Ýö£Ü\ó¢¦\1ch\95Ý;\14j\9f\16½ÞSËO\93ì µ:\13\r¤©j\ 1k`\ 3¼éVïµ?ïE©±I\83¢\8fðr\ fíWäïáñá)/\1aÒiº^\99lB=«kDm$[K/al-q\11k¡{L¢{ú,)ZÂ\9dÑX\bwî¸m\1c*\1a/\97E\9fAÓ|ÝoV\17×é²
-áüG×\ 1{VIúàU¥Á\1d\rÞ\89\1fªôÕµ\9bÍ׫MH.¸¦´\93ïæú\ 4-Òð9.Ò\8a\ eí©³ûA\17Z\87¸¼åÕJçÚ[õQMÝÁ%sPW\1d\98sï`\8br\82Mw\8f\83IB/\rWôß³\93\16M\90ã%\87\80ý7\á\9bß\1fî¥Ç\ f¯Þ\1e©îSêq /\82`&\1f£\1fV\14ß·Û³»Ðã¸KgN\94=\ 3\ fØ)|o®úW·ÁH¬Ú7Ó»Ã\7fÿtøîgmÜàõÓ{|\93$\9b\86C\97¼Oº³±÷êá\9b^\eßI÷çzÇ«\11\11?Oû\ 1\r\17üW*äi\8fä\ 5æáâï\14Í/WëyjøáÇ\9fÖ5±T\83\9d»\91®ÂH{}¬-º\9cáý\1cÝ\ f(Ïÿ 17îηúÔì\80\8eÅ\8e\94Óof¿|\83\1d\1c\e¿\f\1aèm}Ó[érãAø\89MX|ùñÕpõ÷«è·«ÐØF»\87.HNV×ڷůB\ 6eçìt\8e\85TGÆ¥Á4½f6;=Evßij\14~\80\9f\eË|Ë/â\15ø j­o·p\9eCµ(\144H\a\86\17ÛE:2¡\8fOe3|ól67ùëô\1eå-źӰ¨\13nìâ\7fÒHÿÒ\97@ñJ»¾ú\887·ð«h¼L*¿þÂK\14GOÞ<}"/«ü\ f\1dp\[ͯåddí¢B*gÉ\7f\8d¼\8bzúpñI,óâøÁ\7f\1eü\1f\88±\83\96endstream
-endobj
-1022 0 obj<</Type/Page/Parent 1011 0 R/Contents 1023 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 233 0 R>>endobj
-1023 0 obj<</Filter/FlateDecode/Length 3300      >>stream
-x\ 1Õ[Ms\e7\12½ëWÌ-rÕ\8a\9eï\8fSJvÖIªìRb©Ö\17_hrd1!9Ü!%'ûë÷u7\80nPÔÚÙÚ¢¸I\95¤7oÐ@£\e\8dFcüϳ,Iñ\7f\964yRÔÉlu\96NR<¡\1f\19ýxÿ#=Iê²ÃÏURt\93Ì\81er}fà*©ªIm8\ 3WI\97NZÃ\19¸J²ª\f=\90P\8bÁ¶E$¶¨éå¢\82<tÙ\ 6@-\rDì¥>ùM\1e+7ÌsHó\r\19hCÇuͤLêÀ59õ\91vx\b¡i>É\1dâ±\1a\f¶l©)¿K,7­º\1aM|SAÚ4°\18g\95\18Ö`´m*\fBY\11\8c\99!\9bÈ\98*FF°gó\8c\ 4+k0\8d¸Âà\fk0ض\84¹\rkð*É3\1eT\90l1ؼ\98t¦­Å`\9brR\18\96­ZÕ\9dZU\0éÃVõ\1c<§I\943\10ÃÍÉ+\94\14¡U­\16¯\18¨PÇA\85\12îK/\12g ÍnA3\14H\11ZR\vçF\15\ 3\15ê¸6%ý\ 3\bÅH\ 3)B\8b\94\1dEôe B\1dǾY\ 5NÚe\rû\81´c í\1c×òÌ\ 4Î@\f\ 6\8fa\8b@\8a\1dVXÅ@\85:®iɳ\ 2g iH\vMI\16ZÂ\aõ    \bB=\a\17«\13å\f$¡-üQI\11ÚÐz]a¥c4%\ 3\12jà*i[ØB9\ 3\83ÐÐP\84Ö%ÛB¤0P¡\8eë2L[\198\ 3iNS\1aM Eh\85\90\1aFÊ@\85:N\86\168\ 3!\14Rò¤\f¤\b-\1a6\94\8c\94\81
-u\\96Ò:.\ 3i1ÄbÍ\97\86\15±9ÙÁÏ*\ 3\15ë8\19\f\84PÄÏ6)\ 3)B³Ì\98\8a\81
-u\9cH    \9c\81"\14\13\10H\16Zt­\9aJ@\10ê¹®\80þÊ\19HBiûQR\84b\85\ 4S\15\fT¨ãZ
-¬Ê\19\b¡Y\8d8¥$í¡\ 5\16(M)o\9a\ 2\81n\ fU\8e÷Pß\8e×\97r\ 6R\7fÚ\ 3        µ\18,¢Wëúç.i+,Øì.\86         \8e£\88çZ\8a,Êñ¶S\14´\ 5B(o}\82¸K\83Áæ5LmX\83Á\96\1aLÃ¥lÁ´5\18lWÑÔò(¸_\83iÛÉÈÔ\81µ\18,6è²\ 6\83\85ºV²Å`»\ eæ3\92\r\86Q±÷`ªB¿\16\83­òhT\16\83­Óh6,\ 6\8bY·c¶\98Ø\ e¡Íôkð*)Ó&ê×b°X£V_\8bÁbT¶_1~&y 3>#c|Ï\8a±\9558\18_Y1¾o+ÆVÖà`|eÅø®­3v`-\ eÆWV\8cïÛb\8d`9+k0Úb{\80y\955\18Fà`§¬Å`Ñ\ f²ëÐÖb°5m_\865\18,r\11\98\1a\f\16Úc¡(k0\f\98±ã\ 4Öb2~\13I\16ó¦\92WgHaáë\8cȼLæ\9däÎb{AjûÀr~iX\83Éö´\85\19Ö`°Ø/;Ë\1aL¶§üÈ´5\18\16\82\9e\96µ\98lO\8ai[\8bɺYÜÖ`°Ø.*ÛÖ`Ø\0K¾0¬Å`Ë\1cÖÕ~-\ 6[Wq[\83ÁÂǬF\16\83Efd5²\98l_G3)\ 6DlÐCLÎÈ\18г¼X\rk0\190ED1¬Áb^L\95J\86y=&óR¼1¬Ád^VHÛ\1a\f#à8\ 1u\ 3k1\19\90¶?Ã\1a\8c©â\ 3\99²\16\83åÈmX\83Á"üÀ¼¡_\8bÉ\b´Í+Ë£¨äXÆûzÎ\80&Ù@·Í+ÇÛ¼@Ì\ 3öQ¸Lhh1X¤'\18\8f²\ 6\83\85ãFm\rÆ,!\rÄhC[\8bi\86é¼lX\83Áb\ 1Em\r\96ù·ýr\ e\95Cåp\84\10@\13Á    \86ç2\9c!áNü&Ï\12e&9<.\1c\13\ 4hCǵ´¡*g f\ 1Îï¥PC\8bÁ"ða¬,\87Y\83i\ 6©\8a¡¬,\9cL\8e{.ò1â¦\9còä\9e\85ÖX¯Ê\1a\fÁH\ 1`8e\r\ 6\1eXé6\95\ 3¡ë\96\91éÖ³Ò\8d²\ 6\87n\95\95n}[>qç\81%ÿÍ\1a9ù±Ã
- N\rtþ«\1cû¯o\97¥4ûJZ\8cñ \Z\16\83\ 5\11\f.\80ºdOñ\9cx\8a\92Ò°\94³\9f¼É@\e:\ e{b\8d°E/\12g FÃ\9e¢¤\b-äì'B\19¨PÇaëÉ \v½ÈB\15\92P:\17+)B±\rÒ\81B\842P¡\8eÃÐ0\17\813\10B\11ÿJC\8aP¤wa\85e\fT¨ã䬧¤Å4V:û\19Ö`é\14j\ 6Á4\b\8fÁÂj\18¯²\ 6\83Åð[Ãò\80áåÁÎüw\18®cð«L\ 2óêæìå\e$\ 4irs\8b\ 5\84Ô³Jê¦Lnæ\¡ÄãÙùÍôÓ²O\86Ûäõ°ÞõëÝöÅÍoûEÌñsòò\rL\92\91\9c\v'è"'Aç¯ï¦\9b]?R+rqô\0±ósh7¡gøå\9f\OW\9f¦ü\1ebVé\9fnúñv\18WÓõ¬'\ eÇp\ 4R'c±ÝÞ÷< Ä\98\ 6%V\16=9Ò\7f°4\8dèå\e\18ØiNA»Â\fPI\vJB¹\8cµÌÝÐ0\89«Ít\l\875\ f\e\16uz\1eiÌOuãt¹@\9c\8fÇ\9fÇã¿Ú,\87Ùï<ö\82VáQ'ü©Á»ç^\aÔ\eöu\10+PYÏ»ÕÕC?>,ú/dA\94    aµçSÅ\ f\1c+Ϻ\ eÊ\0<ùvØoû\87~\99ó"\81\8fu\8d[\bÖ,8vTÅѵñ:d)Umb5\8aGj\-ç¤\ 3\1d)¼A¾»\9dþÎ+\1c1°®éÚ\84¢Ä þö\1dk\8c"c¥Än1¬ù1\8a\19uíÞ¿ 'ô^é\1eÌûÍØϦ»\9e;ÄI±ª]ôø\8a7}+\8d\88F}^ä\bÀ±â¢vXú×X8ý\8eG\8cs^ç#°!EdE\15\93"ýß\8eî[µ\88ßó:µmdÉ2\8e\ 5ïû)O*òù¢òfÜ.þÅVÄ\1e\18\1e\v\7f&äu\82«Xï¬b\9dÞMÿ \v¡ÞÐen\11%\7f¬\16l6J\1cZ·â\9eI\89¸[d~ìz{*ÉÆ\1aüî-ün±þÌ\8ewz!Ûi@û 5K\13\9båún:JpÀ>\1f¢Þj\98»Ý\1f5ºg\88y±5\1còFÁ\89v/\15hc\9dÞ\ el\93\1cµÉÆGµ%\85wv@\94DòîèQü FüЫµçk]¬Ó\87Å\Ì\84XØø\98¼\¬\9d\99°ª\90\14>ßF\e«\87Ì\9a\97\ fÎð±ó¡ÖÏ6hð\¶¡\83¡n\9cröpb\91îi­\*ªZ}\18\17»Ç«JÕ:\9955Á¹ÁÙ
-'Â=c¹\fUÕ:h,d\ 1óÅÌç\f(\9b\85\13\14GD^§®\8bB\1f\ e\ f{Þ÷®_\rã\9fô\10ÅÀºð©ÍjºÙøÀ\8e\93UæÖÛ\1150]yeðû\91\85\Þ \16º^\ e¼t(s\b©ÛëåÂ\1f/©äÛ\9eD À\8d\b\Iîû\9dË\1c¾¢\15¢üÂewÿ\ fJ¹ÜA\95\12«°CâÊÂgtÉî~í]\ fé·Ïþ\8c?\1cÿÏ`ª8iÅg\17ûË\89\97\12ÂvêwØä}¿½_Ji\83jN¹Û\8f\8f¯DÜ#®\89h춶\82ú\11¥\15|gð\9fª+¢µ©®\]ó±\912[¿\a'jÜ\ 2\90\85ütõáæ\8a:ÆÅ¡?\9fÅ\ 3;\ 6Â\15»(¯å\15Ø,Z\85¸|\8dó\8f7\97¿úrÐs\1eè\ fO\8fS\88Ò\»\85\91\12\8fë\13\b\89\ fKBÀ\9fM×4#ä¹\99/\81ýLOð)@8­Ì\86õíâó½¤Ë0`\97ú\93æÕõKq\ 1\eu?LÇ\r\89@\ 1-k}\1a\8aRߺ\9fÉY\15WZAöÀe<|\1e¢\87£o\17ÊÅ26 äTS¶T$\8c«\7f\8dÙâf¼'øñ\8533
-\82<\11ø¤/d\99\=ü\9e\1eã Þtz\8cöÓ^àë\83ýy\7f\`yÖy/høf\8a>\9e¯\a9zÚC\82³ÎÇ\17\7f£×éâ5÷©öAkàî\95ß´Õ\16|ZÅ3¨Õ×\ 3¶Í'|\186AÄMüE\81D\ 4n\19Nl\89\99}úÎòdR|\89!\17ü±g\18\ 4èÏ\91ÃÖÖ.eÍÐ4\15îè\95ìîzwðÄÕ^x:]û-D³±\81^¥9\8dÊ!¦B\8dêzØo¾Üõ¼\94\11ÆÕ\83\ f\1aïã¹ë\f\81[ë}(^nQ5úø\82:D!VÏÄ\vYU¸9ð¥\8aä~+ů¨¨ñí«OÖ\14\12O¿?\1c\88nY\96ÑHà\17\8fc\9bd\7f\ f­±ùÀþ¨\95ØäQdû,Õ3*ª\87\19\17¸\95ày§\8b¯\10\ræã\ 2sÄæÀ¼\87h9\1f¾¬\97\83\94­è\f\10\97a\fE\12\eñ\ eE\9a\83v\92\95ÉBÔõw\14\a&Ë<róf6xú¤\8dö¸¯nðRM0kSwmÄ¿P@½\9cÍú-ûD\81/]Â^pø®e;Ü\8f\82\97ÕÛf¨³ðTÚÍèaÁÑ\1a\ 3h}Í2yý\8fk÷^j\ 2°Ñ÷¿ÿ3Ër\12m.[r\8c1ª°àÛÕ8\eøy½\e\87ù}8õ\9dD\9aJSà\94¹h\1a\r¡\94ÛÄÃ×Ù\fgÕä     sîdõ ª\ 5[lé6m2\8c\dz¦ó®×sÿR\80T}\9cò<¡\9b:\9a.{LÍ\97þ\139\ 46¢2=âÉ7¨\84ºÝ\9e÷\1dº¯ù\v\1e$tã:½:¢BaI\86\15¦\17¹¸*ùz \92\12  DïûÍ0îÜñ\10\9f÷hþøêþ3ëHwíí\91ok\83\9eúG\96qNjb
-\7fy¦y\ 2ª*ñ\92\88ªÄ\11\ 5\89L<ü\1fûu?N¹À\8coÕ«Ú\977\17ë[\ e ðé¬=\91ìÍ\19çb¿\8eÞ¹Ì-ÜoüÐ\7fº\97Û\r\9b\0p%]\9c\r\v
-7«'\91\92>­ÔÞÝ\1a\1c­\1f×ÎTøÔÐ'øý8\ e£¨\85\8f¡Nâ\82\0\9f¸P ¾Ø/\91u\93½»µËÝn:»sq!ʾ\ el_\8f\8e\82ãý:\94\9c0!>\19M6ã\102\1c|ksÄk ¯8}ïb\ f\96¨\93ÅËî\97énv'W 8\88`×8   _ôqЩ\81\13\83ûw\89ü\17\7fÒ\83ï\8bøÃ\16|±V\14\ 5þÍ\1e}=\84ªÓõå»W\97É/ãð\eª\ 4É\ fÃì~\85ÒíÔW×\8b\fïeÈm\1aú²h~þ@þñ÷\9b³_Ïþ\rE\eºßendstream
-endobj
-1024 0 obj<</Type/Page/Parent 1011 0 R/Contents 1025 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1025 0 obj<</Filter/FlateDecode/Length 159       >>stream
-x\ 1\85\8eA\ f\820\f\85ïû\15ï¨\ag;æ\98G\88z3Ѹ?@ÆH$\ 1"Áÿo\11N^LÓ¤é{ïk_\8aAR\8cÜ s\88\9d"MpÙA[X\9fËl¤Ç\84f\11\fió+\94Aí/G\18Bh\84år\8fPC8$\9b¸y\14ײÀm\1cÚ\14'\9c\86øîR?UÓsè·¡ýFÙ.Ñ]Æ\82\ fõ\9a ©ê\16\8b\aójqÖéùÀ?®õ¤½·ò\90xyÆ\9c\83º«\ f\95ã;Òendstream
-endobj
-1026 0 obj<</Type/Page/Parent 1011 0 R/Contents 1027 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F7 10 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 274 0 R>>endobj
-1027 0 obj<</Filter/FlateDecode/Length 2453      >>stream
-x\ 1\8dY[SÛH\16~çWtÍË2U ¬»ÌË.\81M\86*&a\a§Ø\87y\91í6(±$¯$\87ðïç;§¥î#Öb\©2ùøtî\97n\99ÿ\9døj\86\7f¾J\ 3\15&jU\9e̼\19~C\1f>}üñéÄ÷C/Qñ<ñfªT\81\9fzY\8f¶ê\81\9eWq\16àw¥J\13\81¥Bz T~ì{¡\8a\19\11\97y\81\8a\92\88¹Ð\87´\ 1D        Xª(ô|Á  \bs$îä\ 4,Õ<´\ 6\80ðÅ\8fà\8b\13\94Øx:\17l\1c\8aâ\99\890"µ\fH-L\ e°TYB®ZN@2é[-$(1Ø õR!*1ØhNîZÅ\12\83\1e\8e\86)JÆ\19\82\7f\f\9c»=gü³\9c\80äPBJ-)19\14\90c\ 5\ 6\9b\85T\16Ë\1a\87\82\b­18ÄÀ9ÔsÆ\ 3Ë        \b¥³\18ò\91%%\ 6ëÏ)\7f\8e\15\18l\12\93»\8e\15\98ÜM(»\965î¢\\81u\97\81s·ç\8c\7f\96\13\90\1cÊ(\7f\96\94\18l\18S\86\1c+0Ø8¦Vq¬À4~\19u\99e%\ 6\8b¬#\11\96å`ÂyÆcÆÍj\80\rfàØ{Ç  \b\87f)\92áH\89)\98\19\1c\12¬À`\93\19ê&X\81Á¢wG\9a\ 5\ 6\v¿çRV`\84\1aÍ\10ªÓlBÍ"7¦!\ 3\17\99Ø,' L¢\r\ 4%\ 6\v\93±d\ 5\ 6\9b$cV`°YLîZ³\12SUi¢\1c\8b]\9b©0õy\88©y\90CF\14\8dÄP\8cæ\81¨c\ 5\ 6\8b¢£:\8e\15\18ì\9cÖ\84`\ 5¦\fÓ~u¬q*&g j\9cb$\9c\1aØ0"§\1c+0\99\9d\1d+0Ìb\19JVb°!mY'+1¹\9cQ@V³Ä`ãdä\95Ä`ç´¢\9c¬i¨(\863ýÞ
-\19¸\86ê9ÓA\96\13\10¡Î8ÿ\96\94\18\ 2\93\8e\15\18,6>\82q¬À`qæ"\11\8e\15\18Á\ 41u\90e%\ 6\eΩU\1d+0Ø$\18y%1¥) F¶²&Ma V\f\ 3\97¦\9e3y±\9c\806M\96ìÓÔKÒFDG8V`ÈâÖ\81^s¬À`qò£\89\1d+0\82ÁM\0ÁXVb°\91?ÒlBåÕ>t\ 4\ 3\17\99Ø,' \rÕ\92}¨½d\1fªcM¨\ 3\9bfä®c\ 5\86fØA"\1c+0\85\1aRGXVb
-5¡\14;V`°é|,+p   )^|VVb°èZô©c\ 5\ 6\8b\8d\8f\1ew¬À¸üÍ|êDËJ\f6àa·,¦\1e\95ÆE\81n>X´\ 3 ò\bÈwChå\a\89CG\f\10IÄÍ\aîZRb°1]+\ 5+0\15 ¦ÓÃÉÎ\ 2<M\ 3Ã\e\13Û'ì\11\99õ\ 5F\8a\11ê\885²H4­\1f\1fwb°\8cXV`°¸ Î%kdqþðÍ;¢}\1a0bY\81!\9b\82\15\98¼\8a\90MÇJ\f\16^\8c4\e»\18\13z\19ð1=)v.!c×a²K3-X\81Á¢&°ëd\ 56^!^Ë\92W\ 3\ 6\8bF\97\9a%\ 6\8b»j&e\ 5\ 6\eÏÇvMDX\8fÔStþ#W\8c8"âc¸¾8.\11/#\13¯Ã\14Q\8aj8\96Þ\7f\8cg¥Â¾EqÙm\12\14\10}L-å8@'çcð`Ñ
-JLÞ²EË"]1
-Ú¿\8eùt\ 4\eD6\99¤\ 5Â\95\ 39çub*gÈ\94J\82½\97\12Ç\80\ 4ùR`ny0Éï\86\ 6q
-\ 4\ 6Ë£åX#ÊÝhE\19   Ñ\81\965¢8-¹Á\8d\15FBt`\8d¨e\8dh`^çz\87\19    Ñ\81\965¢¸\rs3\18«\8c\84èÀ\1aQ˲(_0\86P\19\81c9˱XfÞE\8c¯\f\9cØÀ±\98åX,1·~#ÆÀ\89\r\1c\8bY\8eÅbs\836b\f\9cØÀ±\98ãx\f\9c\96 DÃ2`9\a\118ÞNèÝ\ 5\ f2gƧ¿Oò\83Øè\91á\1c\1cä,÷aqrñ\11ó>S\8b\r¾»HÒL-Öü\95\ 5~³:½Z¶]\93¯º_\17ßð\\82¦4Ï\9dCA\80'Oïò¶S_wë¼Óæ\99¨\7fæT]ªÅó^]í\9f°éѯ\97Qv\19ÅêúfA£\12ÐÓ3u\8eè#Ò³x.Zµ¬ëï
-?sµª·[½ê\8aºRõFýöåqñ\ 5¿^¯õZuµzÈËe®Öõj_êªËÍc?t£ºg­^uÞ´\9eºU]óJ\ fëªÝ7\1aTÞ©|»ííò$Ãn\ ejµo\1aè9SË}§ÚºÔ]Qê\96\95±3Û¼y\82òoõ\92´À£J«\9dnZ8·\ 2\ 2N\14\95\87xµ*k$¤Ñ+(Tp©íCè\10ß\eÓ\83ÿ¬d©Õ¦ÞWk\95s®ù;#þà/\8e\9a'uª\9e»nwyqñòòâµ\94\0¯n\9e.X§ý\96\89%øaøFÉøåF&é\17µË\9f´§î·:oµj5ìí¹v\88\1e«\1aì¢FC®¾é¦yý\97µ=~Þ\9aöú0G\95\1db5µBV×\ 5\1a«@ÂQQ\84Ý×îÓç¯ê\93®t\93oÕý~¹-Vê®@*áì\9f§\9fîïþüÕæ4ðÔ\15Úd÷J\r\82P{«\83¯\10e1\98*ªÕvO\9dóRtÏ\9c\15Ó?m½oVÚy\82JY\9dTW[\92º:ß\16¨ùTiD\8aD\8d\86+Ô{Ò^<í¶^÷óMy\87´\89Q¸~Öè\9b3Å馰.>¦bð\86\81É\97[M±_×U\87fãî\1a\8dè\90
-ßTÄ6ÉPÙSõ[ýB\13r[µ\1d&Cåh\87\85Fû>\ýþáêpyñ½¦í\aß\9bVýÐé\9d\9a]ª?t\8e\91¥¹@F©ûÌ\14XgDüÎß`ÒcVë_ª\ fûb».ª'Vý¡¨ò¦8Jsø¾æ\80v\16
-\8dd\14å®nº\1cSÜ"\94ÃÉ\10\85ÇÝú}Õ᥺n4Ö$»Ü\96K4oµ)\9eö\8d\99\89M±Õo4\1cÌMüæ!WMÎM\84\b¨\84¯hîÞ\82"ÕÜüãf:U\1d\9eÜåMy8º\89fJÞw ¾T\ f]ÞtCq\10)\96\1a:«Â\7f\ e\e\1a÷\14^\19þÆB.Ll\9aºÄ\84ëníQ>\ f\e\18Õ      ïf\7f£\7f\895°ítS¡2?ô%\1a \8f§À   B§Ó:×e]\1d¶u>\8e&}ßV\82\98Úb\eÚ\84=ãL\82\95\1fy±53^\99j¶ºÁ\81rØê(Âì}\9b©±\89tUtÄb\88ìbÜWÅOµÚ\16Ø'GØ\99¿o'û?;\¬\Ý|y8S\8f\9bÇ'|\16Õü'ÿø¼à\1fÁ÷3õåá"8Sº[y\9ew¼7¸g\8f}v\93ñHgÿí\ 6³\8dh[uSWÿèÔcÝ|ÿçXb\18¸q   ¡xº#o\8aü©ª[Êâ}Sc%\97Ç,8za\98ôö\ 1§\9aV·7G*\9a^i×ϵñ\8cö/¼ëj\«Ô\9dþ¡Í-èý%\f\1f§WÚ}\83;\ f\ 5Í%ýúùö¿t\90äê\9a{GÝ_\1fNì¨Ma`z\99ÝÕ«ïÐ\7f\9c\9aé\95ô{¾Û\91\9b_1<U\8e[Ýa\85çø\8b\9d=Ö¦+#\8aÍû\95¯B¸FMÏ¥ì$|Å8YóÛªkêõ\9e\87]\14©Ã\17!\93\8a®Úv_îèF<\11êHÏtïÐ!2¡a\1c\13þ¤8é\f\9f\11ñàK\86÷\95\98×\85÷\1a\16¯ýø7¶å6\0{\12\8eÙaÚßddºéYIt\94\92éÆf%ñQJ¦Û\9a\95$G)\99>\80XIz\94\92é\13\85\95dG)\99>.XÉü(%X\1aãçÞÔØ\9f\8dé\89\8fzãçÞª\99èÚ\8b\8fY\7f\15ç\95\11ÌÍÛ«|M\8e2|\1d\92Ex\99Æë%÷í¿\17'ÿ9ù\v«\>\94endstream
-endobj
-1028 0 obj<</Type/Page/Parent 1011 0 R/Contents 1029 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F2 5 0 R/F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 326 0 R>>endobj
-1029 0 obj<</Filter/FlateDecode/Length 3312      >>stream
-x\ 1\9dZ]sÛÈ\11|ׯØ\87<8\ f¦     \80\9fO)Ù>ç\eé\9c\93\1c§*\95\a\88\84$\9cIB\ 1@Ëþ÷é\9e%v\e:B¦SW¥s«¹³3=³³\1fÔ\7fÏ\12\7f\89\9b§.\9b¹Õöl<\1aã7ü\91ðÇï\7f?\9b¦£©\9b-f£±Ûºy\86ÿy°qWg\ 2·.\19OGs!\15\83\9dª°\8bQêfót´\80ÕÙ\98S\18 U\81\98q>Z
-'\106S8)¤b°³¬gV1ØÅ4xÀI\15o]\9aô§õ"L\97£\19Ü],è\92\ 1\8eôÜd6\9a\90\e\933@N ¦ÌÆ\14(\90\8aÁNR\ 6\13YÁ`!_¦¬`°H\ 4ä\8cc\ 5#\98t
-ß"«\18ì4ë¹¼\Rµ\8c\ 6ax6\r\88ñx2e*1\12     OÜÌP$Ç3Ëi²LhÖP §ËÌ\14L\93\ 5¢ñ\88¤I8\85XAB\ fÈ\99\84\1d\97¤6Ð>IR1%\1ccî8T1cÉ ¿°\82Á.'\bJXÁ¬\87\ 4¾EV1%\9c@%a\ 5o]\ 6\rtÞ%\ 5\9aÎæ^à\84\vË#\vH0\9c\9a²\f\85\15\f\16\8b\12*\9a%\e+\98\91\9dÈúiá\19S\97øi\fÉ´\1d\v\93p*²\829mÆ\0\ 2ë\r\9bô 3¶\8b©!3,\18ìdI\8f\ 3ë\87¦s+\8a\ 4\85\ 4Ò\90\r\15\8c¡S\13*°~h2±\92IPá©\9b\1aòC#ÆP4\14¨\18X_mãÄ\1207³\ 68R \ 6&Kf.\90\8ai\96ÝKXÁ`\17\8fc\ 5sép}EV1Sgõ\14Æ*\ 6\8be\ e\89#+\18ì|
-5\85\15\f\16U­>+F¥Nlu\ 5Ë\8aÁ.Ù ¢eÅ[7Á\92Öy\15\83\9d&Ìm°l)\98 \91²\18gK¤Ç\ 3¦@ SÀ\1d'\92\8aÁ¢\vÎ\94\15Ì\14pC\92±\82!\ 5º\97ZV\f6\9d!}q¬b°Ù\1cu'¬`°Hu¦¬`È\98ôçU\f\16{\84\18ì<Aúâ¼\8a!r\9aõ¼²%2\99\14rFÃ\86l\89\b\ 6\9b±/\b+\18,v]\88\11Ç
-\ 6\8b¦\8ep#+ØË\f\97\ 3K\99;\f\16+L½RL!§¬\8c8V0\85´\14\ 5Ö\87;K`\10NA\v\f5ä;BÄ`ÑL0md\ 5\83\9dMúc\ 5\8cb\84±\8a\19\10;\92°\82Ábûê\8d\15\fvÂÍVÆ
-\ 6\8bÕ¢>+\86\18c¦9\8eU\f\16g       õJ1«ªï\95\17\12½\80»q2\99ÐeC&¤`°è\97\98\82Á.Øî\85\15\8c\80¼\90a¬b°h\ 3p9²\82Áâ \ 21\ 2ëûIÆ®\8fiÇF\1a¢Ë<jNR6/ô\1a\93É\0)\81\1c3ÒÀ   ¤Më%\81T\f\16õÓÍa"   \ 6kÇähX1BA\85@Â`Y1XÛñ\85\15\8cÌ¥\93Þ¼^\86ñ\ 2\ 6q\14¥\1a\13\ 3¦B\84\fÇÊ4\90\8aÁ¦Kº\14X3\9b-¹±p(O\93\1e\82\19k\8aµ\13Y?\14\r\90µd\87÷Ì\0G
-ÄÀ     \e}$\15\83Åi#SV0XT,\
-\86\99ð\fõÂbÀ\1aZ\1c\0ç\14¸ÅA\ 4     ÷\1f$'\10ÅÀ\1a\8a\9c@zÃCN$\15\83µt\v+\18 Åi\10\91\98w\9c\948zë·\19am\eò\18c3î\94Â
-\ 6\véÕ+ï$*Ñ\ e|ã9u0Äim\8d³\rØÞ\802B°\86H\9a\ 1¦;ãá53@Jàá"\14\17y\b\15¬z"©\18,\1a\1f²\1dÌ*¦\82      \13\13YÁ`\17s*\18YÁPÁ®#\91U\f\16ËGçU\f\16÷
-(\18,{\ 5±Í°xq\9fÁ¬\ 6\báRÂ];\92\8aÁ¢°\90â0T1ÃI©pd\ 5Ã¥Ì\84
-¬b°è_:¯b\1f\8eZfx¨\ 1³\ 5viRDË\82\91v\1c\0 E`\15³(x0\8e¬\17ÊδX嬸Ì\0\85\12\88\8a±Ô\ 5\17\112\ 5\92"v\18,Nþ¨\89È
-\ 6ë\85\88¬`°ØàÐ\1f"+\18,®M\10\82!\13N(È{`\15\83µ³wdM\88\14;\a×\9cU\8c\a¡b:\8eË!A\ eøI\92\8aá\12Öé\XoÖöÖά\81höÀ\1dÌ\ 4R1ÌbmÌÐ'¸gÛ¤\82ÁÚ}XXÁ^\87±\8cµ\ 6\92â#¶'à®\99¢\1a\89Ì°`\18F\ 3\\bë\87â¨îÏ\17<,§\86l(ºP\871tɽ,²^\b\9c¶ý>ÏåʳxzÐ0b\f\85\ f0\14YÁ`±Èa8²\82é1w1a\ 5C
-4/D\eÆz§ÐC}£å¦\92\1a²x°Óv\98Ór;\12V0XÄ\ e\8dãXÁ`qï\86S\91\15Ìü°\8a#«ØשÎ˺í0X\84\87\80\82eÅ<dðÂ\12Y\1f.\16§m\1d><C\12nÇúð"+8\84\eY\1fn7Ö\87\17YÁ!ÜÀ\1eÂ=\8cMñ|5\81\91^)f¸L\95°\82\11.îg¨\9b0\96¹NÐ\e\939\96¥\a4+Ð\8e[\99p8}u\10K\96¹\89ã\ 4²$Ø`"©\18,^ç&Â\9aøÉâðì\ 1\9c!úãIl\96¶:Pï\98Ô\10I[uÉÔ_¹\13l+ \r\91T\8cI­CDÖ\ fÅÁß2\8e\ejb×\82C\13\11\8c¡3î\96¼4\1cXÁ`±·áe9²\82\91\17´£\85°\8aÁÚ\83k\1cë\9dÊ\ e×=lW\10Ñ\90\8f'bL\8bÂB´\91\15L\97M\8bÈ
-Æ´(ð¥\8cU\f\16«\ e\19\bc\15Óe6¾Èz\97ñPb\8d\ f\83à²!ïrÄp
-Cárd\ 5\83ÅS\fT\8e¬`ºl\ 1\ 5V1X,s8\15YÁ`ñÔ\87p#+\18,J\r¹\8f¬`¬\1cÜ»Ô+\1f\aV\8e(s\90\86,\ÁÌÐ\82++²\82ÁbéCåÈ
-f¸lå\91µU`oU8\8bð½ÄþÍ9#\82M¼è
-%\90ÞÌ B\18fqàÈà\8fÊ<­\19ðQ\ 4\88axë\\b\17!8\fÉ"g&ñ¶n\9b§­E\ 3¾\ e\98½\8eÃÖ\89'v~и\b\197\95\r\9c@pØOe\9cM\a]¬îP²xÆ#0\93\11ÂK»\1fD.Bpþu¹\eg&qÿð­Æ\8e|\ 4ÑdÇá¨\88\83dà"\84Iܪp¦ë8K\1c.<vvâMÇþM\8bøÜ\ 1a\10\12dz\ 6>æ'\v\10\1cÚ\0ÎM\81\8b\10\1c*\19{Bà"¤#    O\12\81\8b\9023«\81\13\b\ e\87Pì$ݸ××g¯ÞqÕºë[\9c\91ñm×Ü]¯íë´±»^½\80v£¿^ÿñôK¶úνpWm¹Ù¸ûük¹»sm]ío6Eó·þ§qX\1c;|ú%l¿ÄÃh
-ë/²A\93ïwmqWç--^\¹Ïån]=6nW´\8fUý¥q\8fe{ï®òíM~|\9aþ,Éà<çwÅn=`c¬\8e¦\83&.ómá~/\9aj³oËjçÊ\9dËÝþ.ܧ]ùíÕ\87r·ÿæàõf}\8a«xy\1f¹þ\aíÛLH÷ê\1d\1a\89åçÅ«¢]½º¯\9a¶é\7f´S9¦òI\10é©Æk\ 6ôu´ªv·?9Evê\14ôÿÿ\99`rê\ 4»¦A\9d¬îO\9aäIa\ e\97¦åÛäñùÎ\e·o\8aµ\95$rÿçjE\r\1f\97°_¤è\96\835v}_¸Ë¢}ýþ·+gó¿ÉW÷Åq«½\8cc¡=kôÃů¿]]_¹Ûrs\9a¹a]~ÒÐp;y{yå>TÕ\97ýÃI\ 1N\a\ 3üüþ\a\96\9eä|Ø¥_«GwS£\ 3±\1fÝîw+®ôÆ廵»\aÕVn]<lªï®is4?#ð\eö\16Â0to\ 6\9eé[½ä\rG&EÖ\14«}]¶ß]õð'§¸zË;¶"\9bÒÝVµk\8ab\8böÜ O\1dZlµ;®s¿<ñ}ù Ð\9f\9aBëþòÚaQäè\83ûö¾Øµå
-\8d\1c\9d±)ê¯E}|²'\81\ fWíEþ¥\v'wÛb{SÔ®ºål"
-<\bº¬«m^\ e\84ødÖáâ~óDÉ\9f\8eïI©Í\ 6µÄL«\rê\ 4õu\©\9e¥á\92í<fÅ~<¿°Ü¯Ë¦­Ë\9b}\8bv\85\9fn\85äÔùfóÝmó]~\87ßö3vÜ\ 1­\v\9c©\a#ñ5Ç5\82ù\8f\9b\12ýñÎ8hé­ø}Þ«©\13Ì\ e'\95²t2ù
-Eÿn¶7Ïì\17\87×ç¯ØÚ(|î.ÊU]5Õmë4\88wh·îê{Ó\16[\1c\98\8aÂau<Ó\15TñçÖáû\1dò»÷Íé¸2O-\rgï²j\8b¡
\9f\\853Üp%\7fº|ÿ/÷±¨·eÃrv¯ËÖ·Ìî4\87Uz¾Z±\17!\v87nÜ\a$z`Rõ\1c_\9e\ eÖÊ?ËâѤGÝ­îóÝ\1d\81¹ò\10\8eÍ_£;¹^«(óMu7à\80Ô*.Î\83ós«À~ð\15nØ®\1a\e\11\ f\8d¸¹Ïë\1fï·ø¶ep\9a.LnÜ®zÜ\15us_þxÃÄ\vÇ\89&k·.ëbÕVõw'Êý¸¬8Åpz¬òcQ\9c¢õó\9d¡óñ\876{K\17\7f\862¨ÃEµ.o¿³>¼¸?¥D¯J\86×\ 6ï7un+ÕßeX\8a8<àÀP¯\ fE²ª\8b¼-Ð\9a\9b/î!¯qÍÀ\98S\ 4\9b\ f\86vÊ´\16\1e6
-Lÿð\0-\8e罧éð´\1fk\1c6(èÕþᡪ[Þ\91üî\80ÇÛÑ·ã¶uÁãû\93çbª«µïzÇ-INðÞ>h¨·\15\1c·Ô÷\89wµþ纫Ú\v÷\86ÉcÈÿ~`ð\7fùOÿ\83ÝEí\89kÃÎ]\15­\99{[\978C5¶\9dÿò\rí\92s\98¾§Ô\ 6Ã\1fî)]vr·Éë»ÂíöÝéÊb8u\82á\ es¾^ÓÝK´ÆÎe4ÊÜú°n
-\1f?\9f¤Öð\12\96£\aÕÇ\11ñ#Ên`í<)âa}x\v{¿5-\1aw]U\9b¦h\8f;Ú¯\93çnv\9fïs,\87\1dx6éÕÉs\97ºPw\a\81\9d/\18÷1_}Á      o@\82'æO\94àÄó<¾Ëzf×1QqnÁ1Ô\9fÁÞlJ\1cK\8fëú$UÃ\95vQÚë\11¶\ìÅ·uµ\rýf<úÆß=Óx^½ã\e3ßÁøü=^ào\97\97\19\9f«®Î/^\9f£r«?°/º·Õj¿\85§æ5Ý}Ég:~üå<Å\9bÙúÅù\r\8echò$'ü\ 2{1Á_¬óÝ\8b¿ùåúì\1fgÿ\ 3\9añi\bendstream
-endobj
-1030 0 obj<</Type/Page/Parent 1011 0 R/Contents 1031 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 378 0 R>>endobj
-1031 0 obj<</Filter/FlateDecode/Length 3058      >>stream
-x\ 1­Z]oÛF\16}÷¯\18ôa\91\ 5Ö
-I\91\14U`±p\9c´ë"v²¶\82ìÛ\82¦h\9b­$º\14\15Çÿ~ϹCÍ\\1a\1aW\ 5\8a\ 4\8e\8f\8fç~Ï\9d;£ü~\12\9b\b\7fb3KÌ47Õú$\9aDø    ¿ÄürýóI1IL^ä\93ȬM6\9fÌ\a°27'
-®Í|>\99*NÁµ\89ÓÔI\91\85É$3ù,\99\14\10\1aÇ\11IA\9e\84ì\9cd\94Nb\93\v"©1Øél\92jVa°E<Z\9b\89Ö4Ç\92µ\99\154A\0å*H\8br.t¤Æ`\939ìV¬Â4)§7~­Â`ólÄZ\93¦Süpm\8a\8cr\ 5Ð$\ 5%º¹â\10Ý=¤J\8f$F
-\83Í\8a\91X\8dÁ\16SdÖ+Õxm\92xÆ(9\93¬¹        ê\83\11\94è
-\90\bz\bsSæÅq
-BeT0º\8eÔØ:\ 3\83\1ckUF¹\94\8aU)À«\1c8«Ãq
-RhD\95\8eÔ\18l\8eZW¬¨ÌæS)ÀY
\16\88J\ f±0\99ÂMOj\f6\9ba·xÖ\8a-")¿y\ 1é\99\0\8aU\90Ö\16°Ç\93va>\93"\99eT)@ìñ\90ö¤\94êHnÝ,K%[é\8c2\ 5p\9d\82Ȥ8å8«/\8d$ävwf\82¸Ð\92ÉÌ\ 6g\8e°f\ 2Ä\18\ fiL\8cÚñ¤Æ`gSÆÕ-Õ\18,j_\vÖ\18U\99$\93\99Z«1Ø,\1aë\15E1\v\12\r,F\93Ê\ 4\883\1e®\rª\0ö:NAÔól´NA\18\8bzFÔÝB\8dÁ¦^\aUj\f\165\ 2GÝZìUd)\8a%Õ¨@\84H\0W*H¥Ü\99\9eÔ\18,
-\13\11rK5\ 6\v×P\98\9eU\18,:\ 2Üñ¬Âì\b9#áX\8dÁNÙÒ=+î¤\ 5\9dB\f#Ød\81¸ã!ÝáÉâI\8dÁflR\8aU\18ìl\ 6¥\8aU\98Å\12Á`ÏZ\93¤âÑq\85\13@\93\14\14sS\93:\ eÖï¡5\17\ 69\92æî1X9\85\14«0\9d\993\ e~­Â`¥´\14«0\9c\91¬{Vc°)Ï\11ÏƬ\9f\14ÉåA\9aÎQ/\16ÐU\ 5\11\ 6\rÏ)\b\83¤ÇyRc°y>\12«1Ø\82\eU­U\98Î$\f\9aØG\934\ 6\8b\96\8d\80{Va°Ø7£µ
-\83EÐ4ks\9e\16Ò\ 2ÐjÁ   VËMy,Ãà\98Gp*È\93h7¬_\84\ 5\v\ 5\90S\90Q\1a\93\1a3J\19«Û-\8dá9\12\85¾!óÏ4e\85
-¢àXa¬\85\81H\9ccÅÞé<\93¤bÀÉ\8c\ 5b\92\874\89\89÷¤Æ\14\9b \1a\8a\15\93¦H\10Ûd\8cã¡0\16\89I
-\83EG\80Zù]a\15\98tÏjÌÄ\15\86b\9aÏmü\91\15dCá1ô"\8c°Ê³
-\83EÒç\9aµ\1eevr\8dq*`Æ\15$\92\15\86U\98s Ù±\1a[\9b\11\ e6§Ãø\9a\9c
-\12É
-3\92Ì\94b\15\ 6\8bV\15kVaz$ùô\92\15\86U8\92#½Öú\8baTæfd\ 19\12d#é1õzDÖ\16\15Z»$?\16µ\82d©ÂXjSäY\85i²¤È³Ö¨È\ e¸q.&\v\12ÉÂ&h­Ü_Lo\86½K¤Ø\99\1dýlSM\ 4     +MÕb:Ä\ 1
-\83-x7ñ¬¸\9bävÀã\8037\16Q°%Q\1e6\16B
-²ZQ'   T³[à\1fH\15@NA´[Î\ 4\9eS\10'\vKÒs
-ÂÔd¼Pc°¨\1e¸éTj\f\16Mp¦Y\85ÁJ\13Rk\15F5EÙÈ\19\8dYkÜñ~­Æ`çÜñ\9eµ\11\94\8e\bµh©0Y\90DPa\9a\9cR°cíRdÄ^\f\85\14ä2Ãm.\ 5\8e\99)\93M\9fÛjQ\18r¥*íïÚ¼±\91¸µH}ª×*ÌP°qúµ\1a\83E-\14\8a\15\8bc\1c\ 6,\17\Ëæ¨6\ 2jU\10&a\10\8c\15©1X\fí#Va(\95\17¬1Xìr¸ãÔj\f\16yN4«0Xبõj\8c
-\87^-Yc°èt\b\94Ó«1Ø\9c·
-ÏÚ®\19ã
-''-J\90M\90Ç\88\86ÜÜ\15«0XÔ\e¬òk\15\86G¸­Â*Çj\fV^\12\14«0lFCB\99¸µ\83Í\92cèES\81dAb³Â\90\1c³§zVc°\18£\10\r·Vc°È  ^\<«0Xôý\11«0lƸ\80\fºµ\83Íxq±Ã\ 5Ç\1d¾¿\14v\9bÈÝÒbx\84í\87,xVafAlö¬ÂÌ\ 27¶Z«0£Ák\8fg5\ 6+ã§gÅøxj'Õ8â\ 5Î" ³ÂP\8b\16\88äËï
-«0X\14\1dRäY\85irÎô:Öª\8d\87¹P\f\16\88\1f8>ùÀ$GjL\938Ó(Va°x;ÛK¢`«\14íV\9e|86Æ\ 2Èa+í!\16Ê\9dÈ\93\1a\83\15/\14«0Xt)(u\825&+qP¬Ç`ñ\16\86\b;V\fÆ\16\93;\1c\1f·ä{\89\91\87g¼£\14\ 4\87\80\14\8aó\10\1c\ 2­9\ fQ&Ø4sµNÆ\ 5X'\85\8d\ 69å+ÞP×\1er\1dCî8\ 5ÁáÆ¢9\ f¹ý9ù¸uv'a+Êy#
-\ 4Ðuök<wZÎ*p\9c\82Ð'\rÆs\1e\82Ã#\b\9f\802\15\84-r\15q\9c\82àdôó\9c\87à0Bâip/S\92'³>\13\9bÀf\ 1â\82\87äXÃ\8as\90ád\8a\1c§ 8ûVÅ\86,.xH÷X\1f~\9d\87t\8fåâ8\ 5Áa\1càËÑ SAp\98iÔ:¹âÊQBÏá\9d|OK<\1a\861Ç úx/\82\18¼ùp\14s\8cGÃû°c\10\1d^´d\rö3î
\9ez<B\10\e~M\ 2ì!8̾¸Úì\97)\88@ÉNw\9c\826ø¸¸ì×1ø\ 3$Ƕ¤8\aÁáæ¬9\ fÁáqTËô\10QD»Wv*\b\ eW>\±ö¶Hma«ÉðnÇ:\ 2qÝC¸n\87¼=÷nqòö'4éØ,îðáC^ÌÌb)\9f9DfQ½)&\7f_üúòs\88îÞ¼1ïëÛÝý}³¹7\9f»fÓÛoÚÛU½Þ\8e\97à\ 6\11\19,ÁG\1a§Rg\8b%ÄÆAÁ\17\9b¾k\97»ªoÚÍaI\91\16\94\ 4\ 5y\v\1fiaÝ\99Çî5\ 3Gb§A±_\1fÊ\1e\92DâÖ,[sa\1eÊoõ¿\8e°5\r
-½©{    áîÑ\8a®ÊGSn\96\16\98mÝ}«»@\GfgA\r¿´·\90³éÿa6­iwýã®?Ââü\byÛ¾+7÷õñBgA¡×å\93ùÜnû\9bªk\1e÷Q^\1eag¸NÏ\96ßÊMU/]\99\1e!m\1e6°.Wf¹/ýâNu¥\87EÝÔÕ®kúg³ª¿Õ«@rÇ¢þ¢M\83\96\11tð²íjSµëÇUÝ×ðt+\99ÀV4í\1dêç\b\93GîãÊ2\ e\92|\90)\rÄ      û'6Ѻl6\ 6\7foÊõmi\92É÷ñªC=\ 4¢Ãñø¥m6lIåÆ\-Ì{+ÿ©é\1f\9c\86ä°\ 6µ\9b\vZo\rå\16ýÚl\96íÓ\16ç\ 6ú\9cÕ\14HæXök\1dæÙ4[Ó?àË-\1a\ 3:Wÿ\0OTÄlG\bô\9cq\ 6ÂAú²iî\1aì\8c\8fí}»\11UOu½q\ e!pôïËÕÅ\7fÍnËhÂÕ[x{8rºTqß\b«=»eǨþ¸ý@J8\ 1\7fê\98àý'\98Jiè\83\12í·\ 6e\7f\94\8fÓW¼\\94Ý}Ý\9b\90¬\97Y
-\1f\ eÿn\9fö¡7_Ûî·ã\8cÃE4èòeSuí¶½ëÍu½n±Ñá6zä\ e{ÿ¼\\85\9a\91®ßx\82©%(ÿª\×æ\ 6§VSá_ì»êáp@_\8a\fgéó
-ãF\89ùÂ\9cíú\a\1cdMUrD0\97\18\16V¡ ¿\94\1f\ e2\12ÕI½ÿܵ8\85\9b³Õªµ:\8e³=|ö^×ÛݪGh«\al£ÃÒ^\96CXÚÅfÛ#IÖ{îÐóvs×Üï:ùÉaé/6'\1e\v\82¹û³\e\vwç ¬ëú÷]ÓÕk¤+P´ã\ 4áÙ3(kQoeDZ0\86[ó)4¿¼\fdx\84ùج\9b^\82v\94qá±\ 5  ¨Vh\91¡\81ulR8\Üè}ëò\89­3\1c\87\89)·¦ä\b³.»çýy\ 6µ\18\95W«º;"éÉ+)ÿÜÕ\1d3µmÐ
-®ër\19¬R\9d.|l\16LÖ»²úí\1e\e)tX\8cå\84\93¾/m\9e>ØõC@\86óü\8fü\1f+     oýó®F\15@Ã¥lÐÚ,ºÝ¶7gU\ 5\az\ 4\1e{l?P\9c¯\1a\163ÓD{¬%G\85ÿÕ~\nv\18,­!vÖ:lËaM/\1d\rçå\87O\9bSØ}úÓêù\87¿L]8}û¨1T6rÇ\ 4îåv       ·Âóv½F¸pzÉÅS2õ¡ëÚ#îJx \ ew\86\9bçm_¯q\15Y5USÛ
-\80\92»æ¨\83\ 6ÏÖÁ\8d!ÃF\8bxtæ¡^=\9a
-sÝ\85Á¤\10\98åÆ©\r_sÆ[Âܵ\9d\9bãæßß^~8\8£c\ 1\9f ¾Ò#ö;Ñ\1e;<\83:{Gßþh®êþ  sÉ0H\1eVõÒ\91p\8d¾¦IÝ\93¯ÛrÍM+\a÷ëÉyYPáKÙûO\97g\17Wÿ;ÿtµ¸þôqÒ\7fïÍ\8f.\90þ&1t\1eó7Û\90\ e{<Ö\1aÞ$C×?«zÛåÙ;1\81\8c3\8a&Ïû\11Î\0\fi«ç¡\11\ ev¬0Ä\1fÝ\89^\eZ\8f?\bÞþ\84\ fPäÑ\88oßQ\81ç×ù\14OGonÎ.ß\9dqGþZá÷mµãéïF\93S¾Õò×Og     ^\98\96oôm Åÿù)\8a\14ïP RFõÃâä?'ÿ\aú¤\93\rendstream
-endobj
-1032 0 obj<</Type/Page/Parent 1011 0 R/Contents 1033 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 430 0 R>>endobj
-1033 0 obj<</Filter/FlateDecode/Length 2791      >>stream
-x\ 1\95Z]SÛH\16}çWô[²\ f\96õ´E ÉR\e\ 2\8b\99âYØ\ 24±-\8f$\87Ìþú=綬¾bh\8f·¨rùpt?ûöíÛ\82?NB\13à'4ydâÌ,Ö'Ái\80ßð#äÇí×\93tv\1a\98l\96ásmÂ09M\a´2ó\81Ì£Ó\19ÈYÂ'\ 5\90S\10\82Qr\9a)Rc°qtZhVa°yx\1ajVáµ\89¢à4V¬Æ`ã©S\1a\83M\83ÓHË*\f\88§^\ 5\11\9fN\v\88RDm\11ÃÕ\18l2;Í5«0Ø4£fÑ$²
-Ãn\183É#«1#\8a\19¯c\15\ 6\9bdSY\85ÁÎ\\ 4´«ñÚÄÈ\95\eÚx¡!a¼1ÊÂd\82Äg\85\19oÀ5r¬Â6^øìXÄ»Ç`g²¾\8eU\18>c}áÕÈÚzDÐ\11\9cÊ\vZ\15@\9f\14\84Ú0ä\ 2\8d¤Æ`Q\90X\ 2Ç*\fV~¯X\85Áf³©¬Âp8È'Ni\f6\9bzeÃA\8cÜ^\b\1c¡
-`8
-®M\912e#§ \1c
-BVÛHj\f6̦¬Â\f5Àú*Y\85ÉJ\1d
-\83ÅN\9cÈ*ÌD\84ÜóNÖÖS\90\18ö\8b ©'»\9föl\0\15\8eU\18v\93\94\vàX\85ÁÎr.¼c\15¦WÒ\11FVc°v':Va°(0t\80\91ÅF\9d\99\14m\82\r\ 1\18\0ãQ\10\v;\83\9c}P\16ÖA¸\9b²Í8Rc°E\84ÅS¬Âp(ɱ\0\8eÕ\98Ápñ\14«0\83\89\90bÅ*\8cf\80ÅÒ²\1a\83Et: ©âtÆJB¥\8aO\ 2\18¬å²\6l\18²k¦\82\1c\99rI\10+\12\e\98T\10I\8dÁÆ\19m:Va°ð^ËZ«èB<\99°YÀ       ^\ 5!\88#\rjGRc«6Ó,Ìì1Ø\99,\9d\93U\18       \ eØ\13\9df\8dÁF,\eÅ*\f\16  ÆÂ\8e\9a5FúCfÚ±6Ø(\97:´gt*H²(g¶Åp\19\15\83p\1d«0Xéd\8aU\18lÁòW¬lè\14úå\80\90¦n\91ØU\18\ 1\85\ 5×@\9eµkË£(E\8b`\1f\ f\11\ 1ÊB\90\95u\98\17\1d+á&ØS¶hxzXd\15;\fQt\9f
-Ól6\95U\98.³l\9cfk6OlI±\8b%\ 2hµp\10jÑ`!8\92\1a\83E\91d\8aµjq,°\89 (¸+\80j¥oXÈXx\12;Rc°Ò{\15«0\8dætiT¬1"\95ô;Öº$%\88ÍÃEO\ 4\ e\8e.\8däàÒ \19Â\1c\8c:Va:ÌQE±
-ÓaæY±
-Óá\88y\1a5g\9c\98\928µÅ\14²uY$\15Á.\9d\ fk\83ÐÀ   § l¢\9e\91à\91Ô\18,º½\16Õ\18,\8e \94á(kS\18°\8c­âÂ$\82Ä#\18Úc*f\aR¬Â`Ó||vð801Z\98\f¡¢È"§xdqhÆóÂ*LÅ\ 1t(Y\85ÁbT\f\15+ñÄø¥tø\19%\ 5Poá \ 41©ÁÁ\91´\82\19«\ 6¤õW\90òwÏb\0Mp\11á³Ö_\87!\9b³\9d*\16ºpmÁ\96\956 ã\83E"«0\9dâ²+VajN¦¬Â¨5\9cJ°+v¨Yc°I\81%V¬Â`¡  \99
-\83E\92´¬MUboSèyX;\ 1´ª ÓÈbs¤Æ`Q¨ZTc¦\82³¢\92U\98©à6q¬u)²W\1eë\83\0çÒÀ\r.\8c¤ÆP\8bÚ\82ZÇ*\f\16}\ 1\ e;Va²\1c\ 55ë0ó\1f0\9cQÖ:\8c\ 6,u*z\ 58\87\anpp$5\1e\1dv¬ux/k\1dt¬Â£Ã\8a\15\87\aY\9e*X»\91µ\ e\aö>\83c\ 4%-@\1cv\10jqf#Ò\91Ô\18,ö62ìX\85\19\8eìfÇ*L\87yê(Y\85\91a\9cÊZ³8\1c\15öÆRp\87\ e;H\879ë9Rc°(í@³
-\83Í9Ã+Y\85á\12æ\9fT±Òþ#\9c\1fò\1a\82'\9d\ 5tI\ e¾=ÇV\vµò$I\8d\99\a\1eÂ\8aU\98y`þ\1dk\8dâÓ6b\9e@\91 Q\8cTï1c-(êX\9eH|ùÀ"\95\9b­\ 5\94T\10\82Øèȯ<iÕ:\fVú¥cíÊÄûI» ¨ \8aZ\12·\vK\19W"\ 1V-[)³*§\95\8c\84\1696ÄX/\91Âh\8c\91\8cHX\85áR\1e£º\15+M\9a\87¹\8c\88\11\a9\8bDVaf\89WrÅ*\fVÆ&Å*Ì\8aà»\vÇj\f\16\91æ\9aU\18\ 1\11\89\8fôJ2Åq\8a\8c\ 2r
-Â%¨É\14i\ 5å\13\821Bæ\\eH\9a\14\84 ²\ 2Á\91´\82\b\97\13+s1³\82\ eZA¼\9a\eI+\18ÛÙQ\9aG(À\85\11ò\1e\ 1\10C\ 1\12\86\83P\1aæ´8\92V)*OÞ°pú`\19Ú#\19Ûp\ fé\r¯ÿ\8e\14AÜOYa\12¯|\17{LÆÀðVWX@J¶Qnç$\8c»\85\91ï"4"\9aâ\ 1>R"\94Ù\19\b\9d\88\86rt\88\81\19)\11\93|Èe\9dßGK\ 3Ãk&®"{J\84ÐKÕô2\8e'v\98\198¬   Z÷\9e\131Ìë\92
-n\15ù.¶F\ 4\aQÿ\8aútwòñ\vê"4w\8f|\1f\9bÍrs·\94×±\81¹[¼Ç¹\1e\9dþãî÷×oiÛ'óÞ|*\17?\9eÚf·YN\9f@\9f\ e\f\9e\bÌ\aÊC!õÄ^=÷ÏeoþØ\95«ú±®:S\9a\8bf]Ö\esÞlú¶Y­ªÖ4\eÓ?WfSõ/Mûã\9f\83ÿS\83¡×ä¿\9a\17³lÄØ=\14v}Ù×°ñXo\96¦î;pâÁbôÀcòu\88þdÝ?W\eSw\12ÆÍÅ9B©\96ÕÒ£öëP\12o çåÆÌËõCi\1e*d\8eK²Ûþ5\81\1e;S÷S¯\15\9b.siºª7Ð_\ e6?]\9c{4¿
-\0\ 3Èß+o«íª^\94}%IêÖ\ fÛ²ë^\96X\95Uå1ó\ 1\7fFpkîOÓ¼oÚzódÝ~×\99ߺªýxU.\9eëMeÎ\16\v\14qoêÍcÓ®m% ü\90Ùo\17g7æ¢n«\ 5äÿ<¢ê\92\ 3qÞìÚmÓUokÑ+\81míMÖ%·Är·`¹\1e£É¿ëæ»í¶iûji£\9cWíϪí\8eÑy Í\8bçj]"sKs[­$\93Ýs½5}#Kzûå\1cãA\90\eä¡þ5¤ý\18\8bþÊD\8f\9fvnqÍKÝ?KHo+\9e\14&Nð\ 3\vv½­6R\ 1h\ 3bD\ 2z[ítýpvyWð/\1e¿­pÚ\ 2pê{\15\ eyDãDÚ¿¢\1fo;³.7åSµ®6ýÛÚ§îæ^Ýój\81Üö\7f\8aî\8e}æÿXµ\99W­dµÛV\8bº\Áï¾oë\87]\8fv\8c\r\99£ê±ðÚùü«\oW\15Êáò\8bù\8c­Ãó\85\89\95cr\84\83\98üµRÎÁófÍL{|\9d.¤¿\92/×Û¶ù\89íøÐ6/\1d\9b\15z\90äbjw\7fºN
-ù`\19c_ÿ¬«\17Ó<\8eºßV©«âP    \7fÚ{ØÙ\1eò7\9eNÕú;ÒMÛ<¬ªµi«®Yí\8eëp¸\9cx×et³\´M×\99\80\ 1³L¯Òy¨\91\8fÃ\83V;¦ÖpB1¾óê\95\19\7f9Ì«¾g\11Èi{\7fù}\8e³\97\1dú\98\95ó÷
-¥uÌ\ e\8f:s\7f}ûﯷ׿Ý\1c£ÿP¿\18½\9e꿸¾:»ü~\8cr\7f×øÒ´\v¦D6\ 5Ï\14\8c<\9c
-×e×\1f\97\18\7f§¸*\7f(ÕP:L\80Çë>Р¾7\98\87f׳JÊå\ 2\ e\9br¹D¡w\95§\1e§\9b\ 6\7fX\9eæÎu\9f«Ýª¯Ùäê\r²ðX.|\1a§\8dè@\8dÈ8¹\85.NC\9b\ 54wÝΧuRÐxméõ\13]r[¶u×l\8e\88\18o¡¼\8a®·«fñãä\95;x\aå×3ôÅib÷íUç\9fÞøýùVý¬V\919èÖkmþ&x½Z\9aw\8få\8fÊ46Îwø"\97\93\ ffYm1\8ab@ö\¸^¯°ßÊ\1c\19Ä(o5{R9õÙßfo«riºú¿GL¶øó\8bw9®Ê_æ׺>b`É\ e\f\10\186ò1kz \8b=\97-ÚJ³ô\15ý45þ\8eõ­y2+\96Ç1þø\9bÓ}½¬Ì
-W\95£Vê@#\92¥jË\97cÜ9Ðrî1\12VæX=þ\9d#î ¤\97õ\91÷\19ô\17\7fM_Uk\Òp\1al·GV\0ÞàM3áºê|\857\ 4ç«Ú?×}ü2\eÞ\9bð\ 5X0ÿÊ\141ßuÌÏ®>\9d\19\f3¿ãÚ\88«øbÇép¼;|\bñ¯\b|\1cwW¼cY¾?{èú¶\Há'ø\1f\86Ù,Á«\13\10)\9dû|wò\9f\93ÿ\ 1úg¡Úendstream
-endobj
-1034 0 obj<</Type/Page/Parent 1011 0 R/Contents 1035 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 452 0 R>>endobj
-1035 0 obj<</Filter/FlateDecode/Length 1487      >>stream
-x\ 1\95\97ÛnÛF\10\86ïõ\14si\ 31Ã%\97§«BN\9a\ 3ÐÀI$47¾¡)ZV*\91)IÙÍÛ÷\9f]\8a;t½®\83\0\8a\9cÙÙ\99Ù\ 3ÿ^(
-ñOQ\16Q\9cRuX\84A\88'ü£øçëûE\1a\a ¥y\1a\84t <\vÒ\11ö´Z\b<\90\8a \16¢5Ì¢ \87a\11\a\8aR\ 3l(\90\r5\9c\1a&\ 5\86Â\88Æ©\ 13¢C\18*\rçé$ª\98\81\86a\9cà?\vl(ð\0\13\8eƼÈ\9a@8\rÓ \10b\92spq\1cD\1c\rû¶À\86*\8cð8ÅÄ99*Jx|CF\15\fUk¶uª`¨I8·\15\fµH\82
->P\ 4\9f(ÑäY2T\9dÍl%CE       \91
-g+\18jÁE\10ª`d\18u\933\92ÌùW3[ɬ\16³ùJ\86\8aFA+MQI\86\8a\9e\90QI>\90\ e³\99gÉP£x\16³d¨é<æ±¾è\bîá±¾\86D}Oª­§S\ 5Oõuª­ïÉÖÖÓ©\82§úNêXßÑv¬§Sm½Oj\92p7;U0<g¦\9f\9d*\18y\8eLwOªd¨\18\a\vé\82¡¦)¯\f§
-FÜ\93N\15\f\15³Gõ\9d*\185R\8a;vR%s}Ó\99gÉ\_=Ë\86­o\82Ý\88·\1aÞÀ
-²dëë\18\8b\82¡\1aÏÂV0Ô\82W·P\ 5£
\98\8d+\19ªæ]ÅÙJæ
-òZ\10ª`¨E4÷,\18y\8e\15rål%CÕj6®d¨\98ßÌV0Ô,\9båJ2Ô<Á~%Æ\15ÌõÍg¶c\8d°æyW·k01äÖ e¨qÁ\9e\9d*\18*2\89ú:U0Ô4B_       U0Tô \96ª`ä\19;½´\95Ì5R<£i\ÉÈ\86âÓé\92¡Â3ê;ÙJ\86\8a]DF%\99ó\9ca\1d9[s<&)\97æ@Ø\aà×\0çQ N¹\9cí&M \12\11áb DÉP\13\9d©d¨Ø^ä \929Å|U\10\82\91DeR<\ 5e\8eå$á\9b\ 3L!ÂÔ\90\99\r\9fÙ\89æE7Þ ,°\86Tbr£¦\90\93Ó\9b¦\9d\ 4Ã-\ e¸Ó»F\15̳áë\86s<6jÄW$¨1o5\89!c+\18*\ eGäÉ©\82¡\16¦a\9c\19       n;f     XO\86\84ç\93j=9U0<#\7f\88Ê©f
-!\ f\87[\11_#\12\ 3ìW \92\98p\vO\9aɾFc¸ì[bC+f|7ÃÅ\8fÏNm\805\81\88FñfíDkhÎ`\18\86È\90=\90\8d¡C6äi8Ñ\1aêÜä\aCD¤\r\8c#\9e\10\868\1e´\10­!î\86<\7f\15òUW\ebKÉ<&OH¨\82Ù17¾P\ 5CE.1QçY0Ô\82OR§Ú pørr±Ï¤8Õ\188&Þ+´âsYcu\87ÄÏ»\9an\17\97ëÅëw)¢¤õ-ßåÓ<£õÆ\åCZWgH5\16Éùúûã+~·¥3ZíÛ\aú£Ýî\9a\8aù\14À+!]`iDpi<¥^Ooö»º\19h86»fû"_\99×ק\9fôµî\8fûÁ\13Ô\ 5æéÂòû¹ZE4ÆõáêÛúêé°\1e9SÞ°Þ-¿x\ 2ú\8f\v¿\93\ fHxU6ô\91ª¶¹Ým\8f¨âÕêuDßÊî\a½i\9b¦®\ 6j;ñPSÙSI\95Íð-´Uy¸)\7f{z:²b¸ã\a\91w>Ï\87\12ÓõYÓ\ e§\90®Ï_Ù\90àñ\15>\12c\8e1
-þ¡_\8d'öƳD*\86»\1a¿eó\93\93v}\7f¬{z¸«\e;üõ\19\8b÷u×ïÚæú\1c/б¯72E/L\8cö\ 6Â\89Ù´(Ѷ\1eèG·k\ 6D²év\18\15Ï\1f\9a}[nè¡íþB«\9bù\9b\ 2Úúô\9eÑ/ð©íz6÷\8fÍ\8dJ˪ªûÞÖ\99úöØU5úeSÓý®¤7\7f®\9e.ý¬\rsÔ~þ\9aù²7Ëþc3tíæX\rÈáü\9d§Ö=îe^O\88å\14ìÐRÏ}\19´\9dg\ 3x\14\1fî]^¿c\ 2Æé>Ô7/\vÓ\1f¨pXÝ{\96ñ¼F\857¸¯õ\8f\e¸ø\97Ç­Ç×l®Å33ýµZ\14ÏÔâ}ÝÔ]¹§]sÛþ\7fº\8aÀ¿\12ßÖ7Ç-íëûzï\99\9eÜe\8aÀ¿\940»ºk\10TÝum÷"gþÓj9\feuÇyG¯\95Ô\1d\e>l°B[^-/\99²ÿüú\\ eÕ]íqòú]>\9e°
-ßNa\1eã\v\8b\8fÙ³ÕòÓå\92>wíw޵߶Õñ\80S°<­«\v¾wñëè,\9cÆ\9b³åM?te5p¬\1a7Ò<×8b!¤üä÷õâËâ_ÆÏA«endstream
-endobj
-1036 0 obj<</Type/Page/Parent 1011 0 R/Contents 1037 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 455 0 R>>endobj
-1037 0 obj<</Filter/FlateDecode/Length 1081      >>stream
-x\ 1­VMoã6\10½ûWL·\ 56\ 5bÚ²ìØÎ-)ºÛ=´\8bn|é\91\96(\8bµDª$\15¯\81þø¾!åÄIÓ\0m\8a \86-~Ì\9b7oÞè\8fQFSüe´\9cQ~EE;\9a\8a)\9eðGÆ\1f_>\8e\85Èh1_\8b\19µ\94¯¯D>üjè\8e÷Ó"_\8b9ÍWK|\9fáß)ªâB\96Ïqè\85\85|&®\9e?¿Ý\8c&\1fÖ4\9bÒ¦\ 2¦«å\8a6e\84\82'ÅÅ\ fµì\82r\80E?Ù\ 3\ 5K\9f\8c\ f²iH\9a\92\aº»ùùöæûÍïñ\9el\99î\19G\f\9bò"\138z\17TGÓkú¢dI¡VÔJC\9dÜ)\9fÎÍ)Ë\86s³%0âÜæ|\17\95Ú\a§·}P%\1dt¨SP*¬    R\ejlðd+꽪ú\86´©,ÂÈ\80½@Z«¦cä;\15èh{\ 2~\87\8b\ 4}ªø7C\98Ò8ËA\1a\ 2\97Ö¼\ f´7ȶN\19;Fý\80\98ñ\e
-îHÞ¶*ÔÚì¨Ñ{u\9dRA\ 5\1fR¹B}pãwi%\eVÖ"_\80i,\18\8aÆ|µo·¥XÑ\9fÔZ§\9e\922\8e\aƳá¶Ï\88ï\10»w\85\8aIs¶®\95A[C\12"è¬6Ì\13\1e#Ûw²ÝJ:¨-y\1dÔeLø©àÜ\8e\ e¡»\9eL\ e\87\83ð|BX·{º7*\14{Y1ç\95\8eifb6T:»¦Û^7%SÃÕ¾ÕF:ýZ±-\95\1í/©Ò\ e¢r=8ÆÑÎÙ\9d\93mbd10xAb\82ÒWz×?'ë\ 2Å\8f\a\13A\10\8eSE°î(h\83ëÉ׶oJ\92}°LY\ 1%\1fYF\8fw\9dI!ñ\ 6vY&\8e\1cΠ)\7fôAµ'\ 1Q-ï\15õ¦÷½lÈ(Uz\86`¢ØZy\84
-}Íå@R)\91\17Dâ¬\rߦÕ\93\85X\ eJ9Ë\97Æc\16tÚzj\9cqÚû \92D"Bz¥èÀ\9dà;UhÀ³\1d\vÅGl\ 5\84§\8cÜ6\8aÙ\ 1`õU\15=gø\1fa¶rÿ\¼Ï\80Å\86,ÐQAÅ2m\ai\búl
-E:¼G\8dú\ 2ÒöèäX\9b¶Ó\räÌ\9dË\80Ñão@\ayDûz\9d>\107ì{\ 22z\1eº\95Ë\1cÝKÐo\ 3*¯:   q( þ§\93\13èèÑEzÿ6\9aOa@àë¹À§ÿ\a¾\0üõ0¿ØXQ(MGW\8dVÔwhÞh\ 3ÜD\12ݬîµí=Ý+çÙ¯à٩ɸº­ÞÕ!z)7Ktàhâì\ 3\16M;\1cbÓc,g\8dÊ;NJJ\9e¿U\98\87F¶§y!é\9dÀ\1dï ñ \fÇ~¬Ý\ eF)\8b=\aå\8bþ\ 6\92\aÎ[(DÒÊ\85×é\eH«4¦*ûà)Y\90\86Ù'a7î\9b\8bÎ\9b\ fÎ;»æF&\9eϺí¬\vÒ õ1}\9fF\au§9{\13R<tÅN%Çêá¿\95
-EÍ?\9dWM\ 5\14\ 5F\15¼\ 4e´ ÉQé´ÙÇý\11³\ fºí\9bè\8e\82\10m\92Ùtü\8a\802ó÷³Þ;+\9e\8beçÖ\8e\ 3\18k(\1fæ}±?^âa\8c\12\8d\ 3Ó`\v»:F\93\85Y\bN\8b\93\19fc\1aèÉ\8f\87`\10@\1c\12\1a\8c¦\93\8c9\ 6Ük¼\19Ĺ\0\8eâm\93\ f«Ç     >ÏÓ\ 4ÿ7oAóÕT¬Vó4á\97\fðÇÍè×Ñ_Vì÷#endstream
-endobj
-1038 0 obj<</Type/Page/Parent 1011 0 R/Contents 1039 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1039 0 obj<</Filter/FlateDecode/Length 1446      >>stream
-x\ 1\95V]oÛ6\14}ϯ¸ëK]¬\91?ã8\19öÐvi\11\fMºÆÅ\164Ã@I\94ÄF"\1d\92\7f¿sIivÔ´À\128v,ò~\9esî½;\98Ò\ 4¿S:\9eÑ|IYs0I&4?:JV´X\1dãó\f/+©\b\ ffG\8bdöÔ\83\93\93o/¼^\1f\8cß\9eÐô\98Ö\ 5|,WSZç\ 4û\93        ­³Ñ4Y$tåå\86æ§ôÆJá%ùJ\92kRÊ\8c.TÙZá\95ÑT¨Z&/Ö_`nASXas\87³ãd       \83£u%\11\9fÀË\89fSË'.;R:Ø\96\11G®Mseeæ\8dÝö\ fså¼UiË>\13\99²\94ÎÓÖ´¨\80ÈÙBÃaÀùt\8e:Ày\ 6¿E[×[r&\1cÌ\84&'%Uæ!x4\e6ç¨4äM)a²¿\8d\15\99W\99D\ 5p\98Ónpq#JTÚX\12\7f;$Ï)/\93E\9729ÅÉ"¼Öq\ 4OdM\ f¦­sJQ\18ÓÀ³Ò%Õê\96Ý)w\1aë9¡\93¾\9c\8bh\9bº\9fÏemRQÿÝ'<A\83\91pÿ\18ï\ fÆÞ\96Ö´\eú\95Þ_¿ûxùéCwx6\8d­Ù;ü¹B\fî\aÖp¶l9\1fs\v{Ú|ß/N\86v\18\8d²÷G\1fAc¾\8cÁ>T*«º2 ¤h       \80¥ÑõÐ\92tKBo\8d\96ô |\85Ï$²Ì´\1a!D´8iï¥}\89
-sé$\ e¡yø£,Õ¦D\17µh$\19Û\87ÚaâYHõ\19     \17zÈVÐép8¡\9bÑ\85    @\17\1e\10\135`ã¤\ f\awõô\15\9e^\89&\15¤\1cPa\11R\11¡òúãå\9f\17ï\12ÿÕ\ fü2pré\85ªÝÍ\8b¾\13\1dbþsÊß\8fß\1eu4\1a\ 1v\0\84ÒΣ>ñYO±\11Ê\ 2\18jãûç$(\1e\81`\ 4\16\8eÀÕ\84¹:¼\19\18K× \8e\96\12Ä1\94E\82«@'ëd]\f\9e#q-xÌ\84Û´±(½\87 \ 2=SAtI\9bZ ª|Ömd¦
-\ 5G\91æ\83 Ù0\a4\fòfļËe!Ú\1a9¢[\ 6}5·|n\8fâ\V\84\rÓ\ 3»ãÖÙqm2Q\8f\11P*ƵJÇ\ 3'7/\86\85¹Æ K¥a¹\89
-'R\83|\9dÌZ«<´Dz\ fȹ \ 5\1c\1er\15ë\1cx/\9c\ 4  
-Æ#\84\85Ó0YÛH=Äħ\8bó¿þ¹:{óéãùú\9a1ÓéèN\96\ fç\1dñ§ÉQ§Ç\8bSZwÂg;]\89å\ f<ñx\ 4H\ 6%|ĺ^\90Ïýs\bn³1Ö\v\90)\80\99ÛÄ\17C¬÷¢V9çi
\9f\1d\16¶ïù \961\86HFN¹\ f\ 4bjJ+\1ahv±ûÒ¶Ú\r:yù;»×ÜÍ\0í\1a\82\1f\ 2ª\8dÈ\81\9e\8e©.\18
-¸ï\ e\96ê\1e\13F\93´\96»'\9d\83P\ f\e»Ã/ì³w\82?¡yl\80Í\1cpo? \8c\19-RL¬T\ 2
-è«5\19è\82Îÿ¨KË®KG§\98\9e\90\ 6Ö¦`½IóàOãÃãÒíMËk4¢i\91wV\19\ 3\10\ 1>à>\ 4\ 6Eß]ïÅ\ e\12\96\vÙð\0\855]×wú¡´ô\ 3\84~3ú9rÆl\85ýÜPj|õ\13\9dE\ 5\a\8dá¡Ù\11¾y\82hÁÇ\93:Ãå­\ 4\9a\83\ 241\11ô\11ò\9dKÌS̾m,Ä\8fã}ÉÉ1BÃð\ eÕ\bövÙ\ fâíF\ 1×#\94>3MpW#R¶õ\84VH\9f\8dm\96\ 4¹xÜ\1c\94\ 3DâwZÞO£}'\83xº%#¡5k(Ï\v\95µµ\0yY.Ð\82~}¡\14Ø\8cbóÀ¨Äî\103ïe\1aË\ 2\8276\8fÊ\12¡\11&\11H¡yI    \15Ý\93Ç\fRäBõ\ 2¬`À\1a\13ef°±4\ 2¦E~\ fQà=\aä\ fæ\81ßa\93\18\8b\83"1²\87Ǿ\ 5ú¨\9bÕÌ\alwh\8bÔÌì\bb0×W\ 6S\82\asää6(Á \9c\8d\ 1z\­ÊÊcÉ\bz}תì\16ÿ \9c\80«ÒÊ+\11Ö®n¡\80Ã;^`vÜÅ®\166Õ9V]Þ\9d°\15\9e½b\8f¾\ 1HßCy /_¿¸\\9fýBk¤V\18^f\98øAÇPó\\15\18\ 6Ð\7fRAS¹³tq~ÅhÄÛÏ\81\87ý~»'uèèÆu\11¯º©>]bï_Íi\89÷°ó]½zÿú\15}°æ\vV'p;N\9a0¹¸r\87ý\85Ãã\196{Îó\7f\8b\15öËÕ\ 2{=î¯ØêÙúà\8f\83\7f\ 1ã4ß\90endstream
-endobj
-1040 0 obj<</Type/Page/Parent 1011 0 R/Contents 1041 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1041 0 obj<</Filter/FlateDecode/Length 1361      >>stream
-x\ 1\9dWkS\e7\14ýί¸Ð\ fu¦xýÀ\18Ã72IZf\1aBÁm&3\99éÈ»2VØ\95\92\16ð¿ï¹Ò
-?0%)\ f\8fa¥û8÷Üs¯ÿÙ\eP\1fß\ 3:\19ÒÑ\98òj¯\9fõix2Ê\864\9a\9cð{üZIó½·Ó½Þ\87\11\r\ 64\9dãÊxrBÓ\82p¼ß§iÞùÝ\98;\12\9e\96¦±ôfú\r\87a7\1cîô¤Ï{NÚ{\95K\17\9f%C\9d\8c>/pM9*ä\iY°\91ÚXO\83£Ó\9eÏë\8c.æ¤\8d_(}»~Ì/¤&Qà<\95¸\87\97;ɶûÔ\1d\1c!üiÑÁ\1dw\16ý\r\9e\ 2ï\ eÇÙ\88\9fjégʸ®s:ùÚ\8c\r\96ÒY§*U
-[.in,N\9fô\9a¢æ\É-LS\16´\10÷\92\84&©½]\86X^w¬]²ô¢ßKùèI\16ê?pEî¾Èr£ç\9bV:\b\aà\0 ÿ`\ 2D\8e\9c©d\ 4\92Ñ¢5|út\1aëÚ\1d\8e"<´õµ\ e\97óV\8a\8aP\1dTæA <k\8c§^ãl¯4¹({NT3Ñ\9b)ÝsÕ¬ ðÂñquúÙ\84ñß²OÉ\ 1`)n-Ì3į\18×l<¼l&\ f7Gãèfº\90$\1fEîÉ-µ\17\8fdæ;ùù2\8e÷Â*éh&ý\83\ 4ç\1a­\1e¥Ë(1\1eD$ÐSÚP|>©4~RU\ 2cDʽeæm£
-\99µÿL$»ü4}\7fF7¨Që\83D      \9c\8bed\17S\8b­\87Òµ`ý\r°¾vÐ\1d\L¾VHërcå×7\1cE\ 4å;ûð\8bi¶¢¬\1a\aö©\98\e\93ð\aì\11úd×ñ\150ñé\93\10\907T\89ÀJY\11øì\94óÈy7J\9f4\ eë%j\8aC\95\v­X\89%H\ 4\ 5\81¥ÆED\ e\94öÒÎ\ 5\84ç\80\95áÚ0\1fCËðQWË\Í\97\ 1À\8b\18+]\90©5)á^\ 2æ\95pwL  r+Ó\19]7:æs\9cD\8fÔ\9c\9bRÝnç)\ì\16\15ÌPaôÏ\9eîÐGôÀJÈu\9cY#\8a\\0}è"+Nð\aÿ\ 1\8cÞ\87äd-@n\82mO\91/H±\90\0¡\ 2ô\84\87m4yUÉC\9a5\9eæB\95\8e\0\fËÃ\13½odDÐÉ< \86ç\a^:Ï2ÌÎ\ ev\12\9bõÅ\14\f\11ļ\b\92\1dÓL\85)L\90\9díªîïï\7f>¿¾¼¸ü\15ïè#\97\19â\82ê\8a<\975B·\ 6\14§cª\ 5\ 4\82\93
-q3d¹©@\88"\bÝ\ eê¿H»\8c¦\98\12\8cÜ\1a\98\95\14\95¼s\85\98Q®f"=)\ 1û\8d\9crQlímS\81²î\90Ù¿º\1eî
-r¹Uµ?\fG\9d\17\18q0°å9\9e¡¹5U¬f*u'JÊV\89·a¼F\81`ø{®\1eR-íBÔ\8e¾q\9b;      ð\98\1dôÛ\9fWaærüa¬)\r£eÉ£\19\ 3\ eSPAëî\81=7\93iÇÎ*Î\9dLäaÍ\ 6S\8f\r\8eÞ©²\8cR\8e\ 6y\90eÙrý\94\ 6\18×¼rt\8f\ 6q4\r²q6ÌèÆË\9a\8eg\19\9d\97`\82\16^ÝË3
-\0\ 4â!\19Ô\85
-!+£7\81\83±!ï/\9d)ú?\95\ 2\18X¤µ~k½\88\18:\9bê¸k\98\82¬è©\84+æ 6\13,-m=\92\ e¯\11\86\18mF×iS\7f}(ÿ´\1fgì"áùÂl}y2wß\ 5\99æ\98~än\98¹íÝõµðiì\82Ú,ÑÐs\90J>ʼñbVJzÀ8\89Ù®\18\93/*hÆ/\8f±\14Ïààbµ;Û\17P(\a\v\83u¨Ø¶¥\17ð¤\19ÏP\10\1cm\19c     aq\97í\1cR6ÏÂ\1a³Y\96µ8@\9bÀWä\16\1aGÄ?\9dºÕ¢ä¡ÂÒP[\ 3µpiå]廫C\10ݳd\9eKz ÆZ\1cqeÀ\82̽\95fÞÍ_×#@¹\ 4ÚJs\84aFFÌR\ fÆý\ f{a»¶s¼Ñ\7fbi\aKSU\97Òõܽ\1du\ 3²Mý\f\91´k·Â\85ÔCÑoxÿÃ\fÀ\ 4Ó\ 1\ eL\9d\18GËíI;'\ac|Ê\98\1cáóÄ îk7ç\1fß\9eÓ\955ß0xè\9dÉ\83¤¢¹c\ f\85îÉ\10\1f<\8aÎÿ\15\83Ñ\ 4|\9f\8c +0rÊy½\9fîý±÷/Xlä¤endstream
-endobj
-1042 0 obj<</Type/Page/Parent 1011 0 R/Contents 1043 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1043 0 obj<</Filter/FlateDecode/Length 1290      >>stream
-x\ 1­VïOãF\10ýÎ_1=µj\90\88\13'!?øÐ\8a+G\85t@¯I\85ª¦\1f6öÆY°wsÞ5!ÿ}ßìÚ\81\ 4®=µ\ 5\11\99¬wæÍÌ{3óù(¦.~c\1aõ¨?¤¤8êF]\1a\8e\80\ 6ã\11\9e{ø+%-ýÁi/\8eÆo\1dôO\aQï­\83¸?y}ãýì¨s9¡xD³%¼\ f\87§xg\96\12|w»4KZq4\8ahêä\9a\86g4+·\94\94ÎÈ­$Ù\95(¥%ñ(T.\16¹$£ikª\92¬,\1fey<»\87\14\aëíÞ(\1aÂzëÛp\12×'\93¨\7f
-ç8°Å"É\95Ô\8eÚ\1f)¼Ô¯_j±á\95±N\8bB\86£A}Ôö\ 6Ú½!R\ 5#¿\9b
-ÈL\95§\94IG\v\91<\90ð¸É,ÿ       sDWK\8e\81R£¿w\1c¥&k
-éV\1c´²¤tbÊR&.ß"LW­#\ 6Ó¥vÜGÞáþÆ8\89{\82/ã}¾jRJ\84&\91[C\vI\95\95)9\83ë\926üb\93GTw/\97\ 6îKú(ôµÐ"ÃcH\8e¥yËVÉ\8a\84=ð}·¼ËæÇ\r¢&!uDÉÊ\18ë½\97\94ËG\99\ 3@R\95ÊmC\98\1cu!¶´T\1að\18×T\14\v\ 1Î}®¤u¨3­\85µ\e\88bi\80V9Ú¨<\ fÉ\ 5Ø\ 38!.ð\a\81Ö§\9dËÓ¦ ´«ö~9[@¡á*\ 3×MI©t \97\8d\104#äDâëÄ;G\12\99\8fl¼IâF!ß\95Û\ 3»=À%Ò´¡°Y;\ 5Ö¶\7fû\8e+Âv\12\7f
-ÃZF4ã\1aú\18µA°¦|À\7fnEÚèvHOàº\9d\1f\87(\9eÅÔî\ f\ 2!¡ÔZC£ ¡Äh\r\ 61\ 6o\8cÝVZ=Õõ\r\86þ\9dnÂÝ\9dh¨ÓAÒvºé\b\92¿\17Ðl»V\89ÈAp\ 6\16\9aª½4\17\8e\1a\19\90\1e\16\1d\18Î÷X§,8~fÝ\82ê\12\94á\1a*m\1dìË4\18ØcDýÝÎ(\97à\15\88·ÃhA\9f\85\18\85f\95ú\90½ç\95x\94`\14(\ e       *ý"À&ÝÜ\83"\14hy\18ÜRåÌ\a´@N\ 1\8b¸\f1ªÐ0î+Äèí\vúc\85\96aÿd\81yz)\1d¬5N^ ü\82»C\r_B     òI\14ktÙà\10\10\982>µàè\ 2ZUÄÄõðr\93!<_\ 3\1c.K\84Ë\99\ f\15rÛµ<{\85¨i\17\9d;\1dï®Ãv\83\9d\86öu/~¦þ¤¦þø\15õ\97¥) Ó\8bÛé   qã§Ò\93§\136\88\ 4õºA=øòfæÏz\ f't;íôNHº$\8a¢=¹4\84á\9bõ\98áZ\15¦Ò^h©²\ fh"2ûrà?\9dÍçwW7\17·wÓùü\87\10W3£Æq4©\87\94ÆPAõ)=£9~\82þ9ÓáùµºÂÝÝ|bXëRyXÿ+ |íâ70­\8dÉ÷dß°°}\0ì+ã÷Ø1%rùÆ(>4)s¹(\85\93'\ 4\ 2[   z¢+\bZT\19æÊÚ\94î\9b}þ |ÏÜ\89»\11Ýñ Â\ 4C#Ö\99¥\v?\96ïÐ\87\7f\f\17ߨ;ÞF³ö\ 3\9b\e6\ 6WP\ 5¡ë\94\18\16Üç\95~ w\9b\95¡M\19æ5T²FH¾c\95®ÞqoÐtE¶Ê2\8c?/\9f\14C\9b\1e\89L@_ó\16L×|mæ¿?\99\1f\93ãÁÈ\9aC+-°Nlô¡¦ÑØü¾D\85ÊV\ eù\10<w1õ\18ÇÅÕùÏ7·Ó«iä\9e\10\ 1\1f]\9e\7fÚm(ؽ\80\86½XWaÇñx\1dÈÅ/\16\98\99<_üx4~\15{Ñt´Üج4Õ\1a\11äÆ<4­ð×\ fç\17×\1f^\8e]l\13õ\1a°\12h2\92ס*I¤µË\8a'Ä®\95\93_xLe\ 1ÕúEK9éÛqçr\\ f\8fx\88=vÜÇVË;*v¥éùõûsú¥4÷h\94¨mR\15\ 4÷LÎj»¹Ð\1eõü~ø_·ÑÁh\10\8d\86ã°lÆ]öñavôéè/b"p6endstream
-endobj
-1044 0 obj<</Type/Page/Parent 1011 0 R/Contents 1045 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1045 0 obj<</Filter/FlateDecode/Length 1467      >>stream
-x\ 1\85V]sÚ8\14}ϯ¸\93\97Ò\19p1!@:³\ fä£;̤\94-î²\9dÉ\8bl\vpcKÔ\92!üû=W²\93à¦ÓÉ\84/KºGç\9c\9fg!õñ\17Òx@\17#J\8a³~ЧÑà"\18Òp2Æç\ 1þKIk÷àrt\89¯o<\18NúÁà­\aá8|{ÆåU0iO¸\8eÎ>|\1aR\18\ 6ªÑdLQJ@ÔïS\94t\ eºÌÓC\96Ê.\19M\85\12\1f
\95$\99\eI[ah\9bY:ꪤ]©ã\\16$Tê\1eè½,\13\8c¦Ì\ 6ô]W\94è*OIäX«Âd»\95´Z­ÞG?ÎúÔ\v\9f\98Ìâ\91&\93\bE±H\1e)3¦\92\86ôÚÍ0¢\88E/Í6ÒØ \9e;\18\81=Ì]m¥b,´Î\9eÜà\ 6Òâþnº¼##\ 1\r\80x\ fTíRa±.j1\92T'U!\95\15\8a\1e:ºÄ°ªL$`§òá=3`·Âòà\16d%\9f,ídi0ñ\90å9Ê£\ eh\91Âd²t(?|º¢\10 \99æÞEèñ\86\ fÂ\80n3±QÚdjC\vO¢á\12¯¥é\rX\9aÎlíö·\15{Ъ\8c\15\ 1×;Åv\98\83\r°jòkÀlNÞÎílú÷üËr¶\fì\93=]¿ãX(\8füæÀ3#õ\92\7f\80?\bh\99è\9d¤Ùíï@_\1f)\95kQå\96\96¬\1e«oHP\9c\võ\b¡ýì\80¢mf \8fPx\b\16\9d©\ e R\1f\fÅú        s\8aÊXo ÇÀÉ\12-Qf·\ 1Õl\95\12Ë\1dé \14ÔóÞ\13¤´ê\9d\ 2ðÔ±}\9c\88JÊ´\19Ît¼SÒÆ\996\1eð;2E\1c$Z­[uõ\8e\r\14дÙÁâÆ\9c.è ó\8a°2^¤µ,ü\1a\86³L\0\10¢ï\1e\81\1e\9e\ 4L\8b4@\eÁ\9bé3Wæ\ f¢\\ 4t³ÕÞQ\ ®²:Ñ9Ý˽ÌOµ\87\1f½·"\f\~¾fÝý`îîB(¨\97\89\&Ö`Õª,Ñ$`Ó+iªÝN\97ÖÐe\97\12°\fÊn¾|½ëº×Åý·e\97î§óÏÓyØmñä\7f\1e¸´\98Ga»\95]^ \ 1\12Þ\86¤\ 3w^!\9e²¢*^\0\82ª\1a\0\9a\81åk[þµF/ÝÔ\81ÇsÉ~CÛ×Æ\ 4ñ@áи.g!~iô\18\99S\v%i/ð¥\10?t\99Ù#§\13'\97\17\86)­#i¦Hç©,     ah`\f\97c\9e;v\1a2\15Y\89f^ëÊg\86\92\894Fø^ä\98d>\99I\8f\8aÌg\14\ 3\ 4)L¹Õ-r\9d\91ܺ\856¬V,\91
-HE\99ÂW\16\91
-c\1d\18ʳG\89\11n±gó¿î\157
-\8fU#¥G¢U~l\95-e!2Ån\16é\1eÝ&6\92\89ivÀe]\19öºË`\1d\9b¤Âa\87\ eåð\­W\e¨+\8d\9cÌÐ'\11 \0\841h\8bÔeÌ«ãÂé\8eu\eÓva\15ÉË\11ø\ 4í\8dûê\ f\ 3Bi\16\1aé\fëâ\80Âú>n\9e+\80,\0äÎT)öÒÚ#@\15]6AÂûdÂêHa´çÍ" \16\8dö×9ù8`{º\r»rm¯G\98ÉÄ\9d²Öj\10&¯1;ó\97k\ e\røX!E8aì¶.\91gèP\83#Ln>rJ%î\87vÿ­ê`\9dGL  ¾]]>¼o#[J\7fL7}ôÐÁ `U\95È!  äe(\ 5³\95J+²ü\17ÿϵ\95\1f)ziÔ]\99!\86\7fV²bÙ9<\1a\1e¹\17êÃ\a¾ff}RúÄ\8en\16\1ff\v\82°LtÓ¶\8dì-\91¼öl§\80>\ 1¡ã¾6Yæ\8fÐ\rÛÍ\91é²ÊÚËÂ\1d\8c\94GWïmÔZµêº:æh¬,\10\96¾ÑØÏU!bô\98ð\ e\8f«\8d#ú÷w\82a\80È\ 6OLͺÔ\ 5}\9bÏþc£ ºqjÒâ\86K¿dÚK\8a7\a\9c\83\8c\ ep\1d\aó\88\ 1\f$W&°\104íÅp?N\15n·Ò\17Âá¬pyÚ"6\9c\ 4'G!\8e¡\1d\1cÇ\8c´7ÞØ\8c\eqS\8aÂßø0PQs\90Ö÷\15ǧIÊlgé\1c \1cÎó\80¾J\81$\83¶<®¬\12w\ f㾩\87<[­Uú7Æ\8b8\ 6¸iÜ}SÐòûò_2ö\bøuqGLªÝµ"ÙzX|"#<A{}\9a\ 3¨ºw\92âÌ\87Ó\11ä¯p6çñ¤¾k\85#Üä'\174\1a\9bÞrúùzÊÇð\ f\9c£tûú®ÉÛé5\13\ 1nÞiç\ f7Ãáx\18\8cG\13Ü%ylÈKÜEgÿ\9cý\ fâ%é\13endstream
-endobj
-1046 0 obj<</Type/Page/Parent 1011 0 R/Contents 1047 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1047 0 obj<</Filter/FlateDecode/Length 1472      >>stream
-x\ 1mVmoÓH\10þÞ_1Ê\97+RëKÒ\92ô>ð¡¥EB\a-GÃ!¤êN\e{M\96Ú»fwMÈ¿ç\99Ùu\1a\fB¨icÏËó23_\8ff4Å¿\19-çt¶ ²=\9a\16S\9a?\9f\16s:¿Xògü÷\9ajùb¶¼(\16ã/®VG\7f¾ú\8bfç´ª\11kq\81\ f\15!ÎtJ«òxV̦Åó\82Þ¸òÑØÏÏV_ðø9ÍféñÓù\12\8f\1fßYMÊkEÛ\8d)7\14\«£iu Rõ\ 1?¢wýºÑd\ 25)PÁ\91¦t:_\14\9cðxµÑ¨\131(n\1dÅ]\87·\=<\9dãZ­+\8a\8eÖ\9a:íkç[ü¾Þ\91¢û·W\14´ÿ¦}A\bEµñ!rº\89×¥óÕ\10h\92ÓÎÎ\0\11Ò¦zUÓ¸m@\98²1ÚFNÁeâ\ f^ÙÏ\9a\vYï"*2\16\7fs\9d¶HÐè\94\81­8WDâI¥í\8eZWé0Á\1fT\94\9eB§KS\e\92\1e¡\94\ 4ã\0\1cy\fÌû\9fêG\93­²Ñ\94\81z[iO\1f¬ùί¢ó\1dU¦®\ 1#:¨½kAüaëù\85\8fÆVh¶ \7fµ\ fÆY\86yTÕ½j×
\ 3`\r\ 5Íi£¾\81\17\8fú\19\1a0*­Z\15\rþ^\9766\ fÇ\ fÏ\90\0µ\84]\88º\ 5ñMÃ\ f\9b¶ktË%u\1eíùQQ£Ìk\1d·\1a\90<5\92jI¼ èÕ\ 6½\96Ê\92u\91eP÷M³#´\89^#U=*sÀ\b\ 6©T@\83\99&©$\89\82\89ªU\19\13]\94\11\1aÄ\80\84¢\8fÔ|Ö\ 5Ë!\8b£ï8çü¿³99\8f\9f\8bó\13ª4\98¬à\17rV°Êº»\97bFy\ 5·ì\v¼\80\86BßuÎÇ ²Ky@ø\90hVÐ=\90\15}3\ e\9d\vÁ°½PG\86\82c\80\9eP³9¤f¯¿ö:\8c[Vk\a
-Q<b>Y\10\12c\r\83ý\81\88R\87\13\84w$_!\ f°o\f\98®\88\8d;\16mb\8d¥£`\8d\94\84\0jf\91D\8d¢!N\81\8e\ 5\ 3×1Q¢ófÇ`\1e\b¬ ×5©\11\90\a¬HÏB(ÇÈðg\f\ 2\ 4Ý\81 8ÖA\a\10ª±øÄ\ f&¿OO\19\91\13JmlÐ\ 3\9b\e\ 1\b\ e²£Ü9\80ø1y  K\84v\bë\85\82\9f\84\e\18\12àÞªÝ/ Âqe\ 4(\87ã\8dÂÆõMEåFc@Á¡9tv++\7fÇÂ\aê@~ë\rt*^\84\10Ó )03ð^ìá_\86|kâ\86{\1fõ\83\82\ e¬½uþ1cÀî\ 3û\ 1#Sr´x\10"¼õ:¤!軲`\ 2*°$*UMppQëà?Õ 4\8f/«¡ª P¯
-£äÙïiv²\17Brß\81<Py«\1e¡Â´O¤Iø%\r-\ 6\0\1d\10à\8f\8c0\99§\8dbÆ9¡O \82áʪ\0\1emAW\18©ºV}\13³\14Ä\9c\9cv¿ÇrÞí\ 6têï]cJ#\94\85ÇT±l§ÔΠ      ­{ QÓÎõ£~\83\8e4\ 1\80à{ßÐ\vÚ¥\1d\82ÈðúÖ@Lû\8e\13ÿì      &\173\1cÙ\7fCýXR\9f\\8f\17 \ 4æ£2AñÔ@\89Iö{(\9füØ\aÎ1\19¾y\81¹;ÉS\18vÀ&À\0\16\15Æ\r8\828±ÁY\ 3j<h*gÿ\88Ã\Û÷\bù¦/d³£Ë\87ãÐã\80PðJ\85\15\16\1e\9eAB<Beì#C²d-\14\88auì½Å\bÁÂ=8\18Fø&\90\98W\r\14\auÉx\10Ø\10\1fm"ÇÝßcÈV\98
-yÅ\97\8d\82À\ f®\12¼À5\1cî|\19£¨\93/\19f\95ù\aÞ\1d+\ 3\ 3\19<\89TÐ*/{¾9ø\92\80äF\15W\98\87¾5¸«¶|Dì\ f"U²i\86)\0\1f\ e»)\98\16:UV»>\f®6Ø rSÐå0\ 2Ù­*Èä\18e¼¾¹ýôÿíÝíÍ       ÉÇ÷7\97×ùãÇ÷¯W7¼Ýä\8bË7o\ e\97\85hI\ e\1c¬\\1eåhsm\1a\13ó\194JÃTÀ\1a\12éÕË+1©ür\8dåÈÏ\1e^£§ØKr\1eÊ\19º(è-\90dª>àس
-\17fzã\97\83\14Ë\ 1.K\87Ë°Ã"ë5½5¬åw/Ó\94`\16Ór\91\e\92Y\85èx¼ðöt¸\ 4A\ 13=D\80\13»    °eF\aÅ\f7å½N÷Qh×\ 5\9aw&u
-w$\8fk\10«L\13\17ù\92\9e-p­_\9cÑó³)Nt\1c¦÷\97o¯.é\9dw_ø°¹veÏG\94(\88[>\1d^8]Îq§W¿»ÓÏ\97çÅrq\81£\9e¿\9fók7«£\7f\8e~\0.{\ 1;endstream
-endobj
-1048 0 obj<</Type/Page/Parent 1011 0 R/Contents 1049 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1049 0 obj<</Filter/FlateDecode/Length 1359      >>stream
-x\ 1\95VMsÛ6\10½ûWìøÒd&¡>kÙ\99ÉA±åD3¶ä\9aLÓLÓ\ 3D\82\16j\12`\ 1Ð\8aþ}ß\ 2dê°é¡c{Æ\12\16ûñöí[üu2¡1~&´\98Òì\8còúd\9c\8ci~q\91\9cÓü|\81ÿ§ø³\92Êp0\99Ïþ}ð.;\19]_ÐtLY       _g\8b
-\82\9f1¾É_\îEã¥\85#ºRâA\e§ô\ 3\1dMkÉ\89z'ÈIû$íËìÏàf²\88n^ÏæÉ\14\8e^L\93IBkí­)ÚÜ+££å\9c&\93ÎrºHÎØ2Û+G¥ª$åF{¡´#A\95r\9eLI^:ï8,åBS#milMÞÐ\93¨T!¼\8c)¥ÏRBXO¢r\ 6\97«*^>ì\85'¿\97ðû(«#ç2¦×\93YÌ5\17­\93!\1a,\1akv\95¬    I©\92\94§R(x\11úHF÷V0w^6\ e±\82M#\9c\930ª*\8e\82Ó\987þ×ì\ 2¾Ø­ØUG:\18û\b(\a)\94Jˤûnz\96Ì\19\98ϨÚíM[\15T\18ZÞÜ\84
-\82çW¤tødl\81&Áê \91\víÅ\13b[%\vÆ(\17V\96m\85 ùÞ\18Îj\8fÂ\0L\ 5àl\97£Ñ8Gý\83\84\88\9dª\94\v\8dV%;í¢Ja+Õ{\18¦\rD¸_Nê\82j       àHÖ\80\10´92\85N\81Ga¤Ó?ù\80Å),\8ap#$¯\r\107Ue\ e\\ 3S\83\vførY´ tÀ\14\ 1\ 6ùv@ñõ\1d\9aÓÚÆ*Ç\19\97\80E\81¿¸\8a[6&\13rfú?çm\0}\9a\80ñKçÚºaÖ:\ e3ºþ\ 1m×:´\9b9
-ÖÄ~¯   <hQ4\ 3\10Ê\11ô\9c\9aèHU!©wë÷éêþ×Õ}¨]ÐÝe\7f²¼¼Y¯6\19í\8cß\ 3íA\91Ì\9d\a\86²U\9a½¿ß~¼ã®\a²w\919\19¸\ 3n¶Õ\9a\ 1?(]\98\ 3FÌØ\0xpàð5"\b\88D.µÇè5àw¨e\10³V¹5Î\94\98\9f¼\19©\ 6Ä\17ù#0ªÀ!-¼zÂ@½\8aØ"p-\8eÜ\80>ø§.øÅÏ\84ðý'\14øåÅ'\14\ 3_\8c\ 6QÓ ._^\ eÉ\95Å       í¸\80*\9dªU%l¨\ e\981)\8f\r(\8bZrpT{7tñ=^Ü©Gm\ e¡\8bZ w¸ Î\8a'p\16\ 3\v.í1FÌü@\1f\12èTɸ\1f\14æý\eî\9cL4u]7\a5\9dúº9Mè3"²\98\89¢\0þáËî"\8b\13í\8e\8dãVÆQ\b\9f\fõ±ß°ãÑõ\98.z)\9dGÅø\1d\11þè£\8e¡ùP\11´¶®¹ÅoAÒº1VØc\90[GCËF\80\12oi\ 4/Ã#+E\ 1ý\83T¼¥£üÁTD)ÿ°JW\81\9b)-Óôãí\8a@òt½ÝðB\82Üoïéf\99\81÷ÛkÊ>¬(]Þ¾[Rúq\9d­\12J·°¿ÜÞÞ.7Wi\9f@'Ñé\87í§\r]­¯h³ÍhõÛ:Íh½¡Õò\1eórßGéoõ
-zWI\ 1ÙkÀIá=@`®A\18\19Yi-\18YKçÄ\ 3øÂ<àY\0\9d\83¨³Þ\7fg\82S\80\87eäy\97D.\ 4\92ò¬í$Z4H¹Õ%\84X\17À\8c\9dw\ 2U*\v9Ë÷2\7füæ\89Öw\14¨g¥3U\e²\84ÓÜXdäqßIOm\93\90|xC·\ 2$\81¾E9\eÄ\1cI\9f\8f\82\97§ÀÒ¸W\e£0\a\x\88\127wW\b\1aË\v\ 2\vF~ÅÎ\1d\ eË\12{\14Ë&J:\8cX_\83°]mÒî  @"Ï\81b\98Àa\15MlÀ³r\19z\94ã\81W¼ÂH\ eªèy\1e³G9m\85ô1\81§\ 5\1e\aX\ 5_\99\86Ú`\982¸Ûñ\828 Ç¼ò:`\ 1\1f~\83Æ\9d²67\ 2Ï\86Þï)Çû\ fõ\9fÁ'¿9¾\99`+ðûèõ\8cù\e\1e63~Ú°\11M¢ÕwÛ\81\e¸ÎBqÿ\fæ\r¹\1fö*ßG&à«n\19õ\19\85J_±j\86\8b<²¼\15\7f\90z 'VhÏFðt\80^`-w\17o\8fHÓN²ø}Uª\87ÖFÍ\rO.\80T
-À{\f\8d\1f]\9fÿó>\9b_DQù\1f/Áùb\9e,ÎÎ\ 1\17@\98Ì8±UvòËÉß\9egdÛendstream
-endobj
-1050 0 obj<</Type/Page/Parent 1011 0 R/Contents 1051 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1051 0 obj<</Filter/FlateDecode/Length 1638      >>stream
-x\ 1½WÁNãH\10½ó\15%_\96\91\88CB\940#Í\ 1\18f\85Ä2ì\10­4\12\97¶Ý&=ØÝ\99n\9b$\7f¿¯ªm\b\86Ùã\12!\82Ý®îz¯Þ«ò¯\83    \1dã3¡Å\94\94×\aÇé1Í\17ótJ³Ó\ 5¾Oñë5\95rc¶\98¦óá\8dóåÁøë\8c&\13Z\96\885?]в Ä9>¦e~xã\1aý\89~¸ÖS¨³4w¶¤ÒT\9ajµ£LSårÕè\82\8cýD\1f\96?\11\vç\91X\87cÝäñR\1fþ\90¾ùwW¶Á\8f9R5\ eªÎÔ¸2Y|ò#Mfñ`£\93I\8a¯Åá4=I§)-uhhú:þ1\8d¦|üÃï­¥f¥)wu­lAÉÚØ\a:¿úóîòû?\97ß\13*½«eÅí\ 5½,8»¸¾º¼YîÝn­ÙRæ¶)]\95´s-\15ÎþÑÐ\83nxgì7ÁaxGEOª2\ 5À\ ekg\83æà\96\9f𴼸\1d_ÝRpe³Q Ã\ 4²®ÁÙ¼×ySí\80HhTUé"í\82Nç1U\ 6\1f\81T#[oLU\91Õ\0»q\84'|C\8a\92Â\ 5Z#\9bu\93ÐÆØÂmÈÅä\91\1a\16z@ÁÙ\ fcwù \13D©u\bêASP;\ 6*Y9\80Ë\87,]k\8b\84\1cØ7µ©\94ßËëËÍÝKRXÁ|\8fùÉ\10+$æ9Àé%ë \9bv\r\\e\ 6díB0\19ʪ;±\94\ 1òiV®m\88wÒ¶ñF#4vbj\83öOÚ\vyyep÷\882,½"\15B[ë\8e¬Áî+õÄE!À¿\89èu­\0 \82º\92·`\12Qda\88Ü\19\80Ya\95×*\0êÍj'\0Sm\1eV@L\99\8a32R/\9e\ 4\ f\1e,c[\1a¯7`û\19º\94Õ\85T÷ÈõºR[>Âàø¾­\80\0 ªÀ\9a\89,o\9c\7fD14\ 6GÁ¥_-\8e\8cïG´Ö~¥Ö\81²\1da;\87Úx \95ç`:V¿êÒ\bmf\11îþ\10\ 1®\8dmyc>\7f\18l\8eÊ×ôd\94 oÖåF\155WÞ\83Wuzÿ\81W\8f¿þF¯'\9d^OâªÞ\ f~¯WxMd\95F×ûºíJûE\96\8c]@\91T\ 5\8b\12¥\\19\94.\bTO BqI\85\15T7Ì&Sùã\90ØW\92ÐÞ£ÒzaÀ÷\1a\14\ac(Å\87Zd\9d\9c«\82Ö(8\90\0\95à\8eH\9eQÉ°õ\8e¤Þ4ªX*\15ütµ7\80\16"MÉQ\94_ BÛ\9dH/\89ÖÒ¢äC\82\ 4Á\ 3\98\16oé=ù\88%*W\1e¸\0\98h(W¤Å2\96\0)]¬tþ8Ø{ÓÙ\8b§7O¶A\92d\11¬\95¯\13\11[£ëµóÊ\e¤\aÅ8\bJÙ]\7ff©´A
-HHö\1flÜ¥\83s'ƾÉð\8dê^\91\93\80\ f\vóä¢÷ºD(ÀÿÚz\85¦:+z£à~ÅP guR|öôgÿ%ò\1a\9c\13p7El|o       Ö\85áî'\1e-mñ\99âj÷~|\ 5\9e©P@Nôk)gRb\ 4Þ~X¨Ýa\8f¢Ó½¬åüp²Ì¸0
-\ 1\1eïÐ\ f\16ñ¯¯î\96\977Ü$Ð@:\1a±\98ÿ§\91Jþ³ð\93\0\8b\88À\8a\99\88£1¾\92½À\1a­·\ 3\9e¯ÃS{>$k$\82V\12(\81<Ñ:âú½\ 68\808Ó\h­-áð¶¨Põ²\97A'y\96R¦s\ 5\9eÅ×EV}Ñô=^t\81:Uµn \14i\92à_\94¡úö5ظTh¼²G¥ki7\92\r\84Þ\18Ü\90&Û®ÙN ´"¥³*¸\8e0\11\e\8fC\86=\1d6s\7fØ\8bñþ\83t©°\83glI\8c$HðÁîÉ@Y¬D\ 6ó    êr-\f\0­"o\9c´½\r,\84û3¦#zÔ\1a¾ÎèT\ e\9e\8eù\ 6³Ó£\9c"\90ÞÂ\0\87\ 4/åi\1e>\14Ù¶Îb\8f\8b\r,¶ÔÍÊä+ÉR&»È-\9bJ¡aÄp\1c@øº.`é8kÍ\93\ 2S\80rvå A$\ 3Æ@\94«`\13Ü?ØR\1d\8e\11;,`ê;S\8f]IJkö\9f8\1eO\94\1f»\19p:\8b\83\11u?qÚ`£¤Ïtv}Ýï\7f\9c\9eòPöz\99x\13Öm·Ûtïw¼Ûýæ±\fÓ\0N\8fj*\15ú&\12\80ç}¦\1f±\99ìOÍ£é\9c÷»\8a-YepÅ#¸Mttes\8dN\80N¬Ñ\1fjU`\1e\a\ eì\9a\ 3HQ´\\ 32\v¨¶q5Ú:\86bìÚxeCÅjF÷\a¬ý\89»é³rnÍ\1d\8dT¡Ö¨\18ü-`\87\81&S¼\ 5à3\ 1[\18\1a\85\aiï¬+®ù|¥,\ 6¿È\14\13ÍÂù¿p\97ãE\8e÷G\ 2Áò\8b£\9boK\98\97\1c\8e\92÷ÈHÐ|;½c\fc\81@\95R¿\e\13V\fUÿx\14Nߪ»¬\a \82dS\99f'\8eÑéíy\f\91öÑÍÞÝ\14%/,bn\ 6\ 4\16ÞÃmÈU­´&\âËq!_o}.Ô\8d¿\9evoI\939\b:=¡ùÇi|\91¸;ûëü\8cn½û   íÓ\17\97c\98\85\8fp<>ï¨\7f\98â\ 5í\9dסÙb\96.æ§x\97ÃÝÉ\8c\1fº\\1eü}ð/\94\17\93Dendstream
-endobj
-1052 0 obj<</Type/Page/Parent 1011 0 R/Contents 1053 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1053 0 obj<</Filter/FlateDecode/Length 1473      >>stream
-x\ 1\85WÛN\eI\10}ç+jý\82³\82Á7l²o@È
-iÃzÁZi%$Ô3Ó¶;ôt;Ý=8þû=Õ=¾d DQ$c{êrê\9cSåoG}êá_\9f&\ 3\1a\8e©¨\8ezY\8fÎÏ'Ù\88F\17\13¼\1eà¿\934\8f\1f\8czãlüÖ\a\83\8bA6h\7fp5;:û<¢~\9ffs$\19_LhV\12\12ôz4+º\855F\16AYã3zìÞÙ ÿ °\94ÔÉ\95)I\99 Ý\\14Ò\935zÓ¡\95\92x\93J9W\85\92¦ØÐz)Q\9d
-´VZ\93±\81\84ÖvM\aÁ)X\ eûaöõ¨G§ý!
-\9d\95]mí*\17Å3\89²tÒû\14 G§ê»,É[k\1e?dÍC\831ðÀC\97H\80\84\88^UÖP!j/ÉÎ9<^\84µ%é\9cu\9e\94§¥xQf\81@¨yɯ\84vR\94\erµ1ü7\ 2¬¬\vÔ\1f~<!_\17K\12\9e\1eD\95\8b\8f]\ 5d|\95\ 3\14¿{|îl\ 5\90d(·\91\1f?\90u\a   µz\96ôI-T\10úØÓT\84åÚºg }½\94è|ck\97"d\80k\8eÎu\e¥\Î-ð\r\15\ 3H\1f\ 4J\8eµ ZA¥\90\84'P\bCâÅ*ÔC\1a\83\0.sWûà\ 4Ïø·WP\96´\91\18W\ 3éÊz¯r-\eP\91\96æBé\1aÙ\11hvó0£!·\8f\81\9bÈ\12_çh\9e*á1Cðå\8c\9bÏ\9d\15e!<⦱¶ ô2\ 4t\82Ê\995¦°Î\81\82\19\14\98`\11q K\11b
-ÄgÀöT¤Û)]6|9£«]²ý{\ f©ª/¨ê½ÔMâXxL\17ç\ eÎxp+Ö¤7Ìf01qK¥¦µ]d¦Êã¨"9Ï>\7f¤>¸É\ 2;\1dö\13M\aÙ0\ee4\93ÀaÄe\1cÊðtÀ2ìÞ×)"S\99áë ,4ñ\¯èô\8a®nÿ|¸¹ÿ÷æ\9e\9e\9e\1e.¿\]>=u2úÏÖä\97¶Ö%-\0=*c@¶\ 2Â\98\98Q­¶Sc^º\17è\86\ 5×ÖÔm|\8cJk\8ecHC¨$2}7\1f\f\98§µ,\7fF^\95Â@\ÌÅ(\ e\96ª<aZl'Úª-\91÷PT\8c\84V>ȨPð½.W[\95\95ÿmÀ\98ä\ 4+gÁ]èѧ\\80\94kfqªj\85O¤        Q\ 6\98¯\88\8d
-h3~kgkìs\11ÓíH4\ 2dt;oU\r7\89\ 6Ãð\83êP'K¢\80¹\ 4     éY#OùIò\85S+\86\14l\86¾\83\0\861¾S\8beØÛ)Ä\80®\19¸øÕ½¯¼O°ó\86`ç?!X
-\98\10B\82ô­óf\etyÈ{º]^ÿu{s7£ãß\8f_Gk¼÷\ròM¯ý!\ 1\80\17Óð\90O\11(\8d}\ 1ã²ó°fí7PO¯12\9eÇ\8e_-°wj\8c<Jß\8d\1e(Ëø\ e§ZÀì8\87Ázj¶\ 1!ðÚY³hs\ 6Õm\9b\8c©±}¬~\91ô¢\ 4}º{àP\86x±pÌ\1fõuÐIc\b"·x4@éïOkÜLkü\1aß·ìà\9di\954xwN3¦gP\80b\r:\1e,\ f\19!x\1c÷±ròEÙ\1a\7f°Må5,{ÿeH\98á\10\a\86\9e¶8ï~Qk<°5ßÖÀ\1a7Êè\92L]å0\1døÒ\9d\f¹²þlv=\ 5 KëÃNl[\8fo|\rÃXY\83Ù
-\1dàt\8beÚÈ\90jôc\b.ð¢Öº\95\16I¸©ô¸ÇÍÒÌ\aa±/#\1cè)Y\v\16ð\ 1\99½ÄÅÃ\14\120\1a¯\82Â<#\93¾ÕÒáZ\88\ 5yÙ¡
-W\8aXHßÊ\1cõê%ìUèÔÚ\e\9c\8b\9e±%Ü\82S\bòªRZ8ÎÀ\806øþ8\16ô\14ý¸\91jâÿN\13¼\ 5x\9d¦Kâ\17\13\ 1>.\ 2ª\0¾¨\83­`\88\ 5º*\96Â(_ÁéØ\81@\9ehj,¬f&òûJ:\10
-úÝÊ¢³¿\ e;dW|`\0ñ\162¸RÒa\83Ö`µ5¦¶a'\9c«\ 5\9f\15Èà\ eôu²§T4D\10\83o\8b\8c\ fBàl\9bÍb\ 3uÙE\1aW\894oî\93\88 7\93\ e\e\1d\917VmS=ÞÄq\12IôK ã=\8b¯ÂØ\eÞ±\13¦\84íz\93\1cYb±\0^T"\a\ e|\QZ\9a¸\19[·Ô®\82ÝrgmòuÝÌ\9e\ fö{9\87ºPws\9cñ¹Ò&g´§æ\8e>û|Ѹ\7f\7f\8c_\16\17Cü"À\9dÂÇH<1hêìW\côÉ\16õnaòLO·\ f\9cN\ 6øéPv_\1d8£É(\9b\8c/p\ 4áÓ~\I7³£\7f\8eþ\a\92Å&Fendstream
-endobj
-1054 0 obj<</Type/Page/Parent 1011 0 R/Contents 1055 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1055 0 obj<</Filter/FlateDecode/Length 1615      >>stream
-x\ 1uWÛnÛ8\10}ÏW\f\ 4\ 5j9v\Û-º\ 5z]\ 4ضÙÆ»\8b\ 2y¡%Êb#\91*)Ùñßï\19\8a\92e§I\10À±È¹\9c9sfôóbJ\97ø\9dÒrFW\v\8bËø\92\16«\97ñ\9cæ«%>Ïðg%eþÁÕlùøÁ»õÅäÓK\9aÎi\9dÁÖb±\8aW´N       \96./i\9d\8cfñU¼\8ci-]MËgë\1f8>§é´=>\9e-qxô­ÑTç\92\12S\96B§í©\17áÔ\88\¹I
-%uM\93É»ë?o?~û÷ã·ÉúóÍ©¹QLßMC.7M\91²=M\eI\955eUË\942cIP%\9cÛ\e\9bú³|ÿ\92ÆÓ«xÆa\84\9b\8d\93>\9aî(\99Ìÿ/\92Ä4\bâ\0'\ 2¨\14\85]¥kã\9f7Z=ÐÆ<Ð^ÕyL×\99\17¸Â'\18\0~BB\e\ 4\9cwÖ}Ü"õ Ðø\1fz\13\1ehQÊ×dªZ\19\80Õz\94\82\vÐQ¡´\8cIn_= â\99ßÉd£¶NÚ\9d´\93º¬àò\87Éujdk`X«\ 5Ê\ f\98¾\98Z¾¢ë\9a\94£Ê8§6\ 5\03ä*\99¨ìp\8a\9d(\8cÞ¶ys\85\81­åLH8\14¤(ÌÞ=\1d)Ê}\12ÛYä}¤¿9\99XY?\19ðW\9dH_\vPHÚÓø¸\98¡î[\89B!Æ\b|{\13\ 5âôuL\8dþÝ?×(¼¹'Ñ\1e\96Ö\82W¥tNl\ 1üuv\16¤ªÉ\89\83£Hé\9d(TJZÖàß=1
-\11ûk©Ï\15P\b3B\r"F\16$A?X+\93º8\90\93uS\81j\9c\86å\86\88\13£³88\9b\85Ê\80r½¿\8dH{²\ fü\14ê^Â^"P     Ç4öð£ûÇ\9d\11F$\17;   XDjöÞ\b\1aÆÑÝ\b\99:\83âyþöÖÉ\1d\-Ë»g´ijJUÊ@\81\8f\95\ 2/\10²kªÊØÚ7 ò-ñ\1dÇ=\1ev^¹ñ]?\860tÝ8\8d\89\8fá\9bah\96¢\16Gf\92\8bàGgjÛXáû\ 2¸)\1dPó>p\e*\94B\85zc\9dý>OA¥z@#'\ 2\8dß7=tÈs\86¡à\84¤\16àyÛ\96Q\7fª\90;YD][\82\13\82rµÍC]:WR\9bf\9b\93\85Õ=»:FÖUÀ\93°\12\90\8a?"ßÐ\1eÅPsæF\9fcLïs\99ÜsÕ½´°ÈTÂ\96\9d\13\9fûüè¡sʹw õ¹H\9dØC«/ÃBZ)êV\10o?¿Ã-\7f\b@ô÷2ÔùÄá\8bÖáxöâX:ß\83(\96\ 6\9fq\99\ 3\bm\a\8dfdYA:å\rbæØêäÓq\10¤Ê\12wiÕ\9c\88d\9d\1cª [Ç;¹,*z\13,¾n-v¢6bNòW\ 3**íjÛ$L'w2P¤×7Qp÷xÐë<h\80(ý\À\98Ȭ\94è\0w\ f1\14èf¤¸×\±ÀIÚs¿sòõ£P\a1 Ï³@}§\ f\aíøjÚª1Ï×U\98¯«Ó[°ØÎׯ­Æܼ÷n½È\ 5\vG´ N´SrOwøégí©Ù0g÷ª( fÜ\12\86R\1eHÈ3ôõTDß\v\8aR\83\11á\apÄ6\ 6\15fÌþ\ 4`®ìF\80Í\ 2¤Ç°\ 4\9eb'TáÙ\ 1\10,\9e}\90èv^ýBþ\18\ 3ßC¡õj\9a¡J)z\15"¦J\98µÔ\8a·×`\9cÞ(Dë\87\13<\99¢é\14\85\95\98%[é-pæ,\95gæ \9bÆ5-1XVSÚ\1c\10\0ò\ 6­YíHCÞpÕ\90Á\94\ 5ò\90Åv\8dÀB\81U\ 5à\19\rUm×\8cv,Â\19\ 4\97Ó1\1a\8c\v8\9f\81\98äÆ@³\8e\97\8fô<S\ f\18\1d\8c\1a\87\81p\\8dX½^²9\96\/\13\ 3½íd¢[C®o\b\1f\81
-
-\90QO\8bn\r\89PL\17j\12ù\r\b9³C\91î\ 4f/\18\92T\13U\85)\16jxóÞׯ÷ÿ\v\89n%
-|b®<®ÍN        úðå\96\11\86uÀ×.\0:t~\92ñ@z\87\19\9fä\87
-X*Êܸ\1aìæ\89öDøAeOD/¬\80\81\90¿Þ\0@Çh8«[R\ e&¶ãu   Eäq]Uà\ 2V'¤{àIÛÍÔ3^ð\ 6\136æñ_0Å«§Ø\80|XP4\84ÛÖ*iÐ\0Ï©\14÷è¦\ 6Û¬O4jó\ 4?̾\e=Gñº\e\eC\8d-\1df¶ÒÝ=\v®»Ùõ¶pæ93\9a»\86éî\97%/\95\99Hxg\82hz\15d;ÜV £¯\96\95?\e\ 4ê\93ã±Î\93b°ë\ 2\86\8d\b$kç]Q\9c¥-j¬!\15|\98î>&
-7\12»ò\8dí\87ä>WIîE8lð\867x\9fÿ\7f\81i¥Hr¿H\7fG\ 3v\1aÇX\9dyôÈù\94\0H·ÁË\a¨\97\97*oóv\18x;¥\19\ 3ùÀpøâ¶\v\8d\ 6µ_\857 é\ 2ïb«+¼\Íã\ 5o3·o?¿{K7Öü\0FôÁ$M\89ÕvÐÒáÂx9\vÛÏÙ;Ø|9\8f\97\8bUhü\ 5gõq}ñ÷Åÿ®\ 6n\92endstream
-endobj
-1056 0 obj<</Type/Page/Parent 1011 0 R/Contents 1057 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 460 0 R>>endobj
-1057 0 obj<</Filter/FlateDecode/Length 1645      >>stream
-x\ 1\8dWïSÛF\10ýî¿bë/qf\82°lÇ\86Ì0-I Ã\a(\ 5¥\99NédÎÒɾDÒ):   Çÿ}ßîIÆVè\ f\18\8cdÝíîí{ûvõm\10Ò\18¿!-&4\9dS\9c\ fÆÁ\98æ³Óà\84f'\v\OðWiJåÁìô\14·Ï<\98ÎÃ`öÜ\83Édú¬)x\rÆpÌ\1fw\1f\ 6§\93`Báë\13\18É)\\9c`\8f¿Ëè~\10Â8\96Î^cMN\93ù<X´wü\94\ 3\ eÇÏÄõ6\1a\1c_Î(\f)JqÆùÉ\82¢DÜ\8e)\8aGW)mmC+]ÓÐ\95:6©Ñ    Å6/\9bZWd\1c\15¶ÆÑcm\1eM±ÂÕ·F»Ú\rÉVäLn2\85U5\95\95]ªe¶¥\«ÂQ½V5>4­­«[+/£/\831\1d\85S\1c JF±-j\15×ؤéÑ(ªã\92\9c®\1eM¬]@ïÖ:þJµÅW\9aLz`«j\8a\82\1d\9bJ\95¥®Ü+REÂ\v\9d%\95$¸#]ÔÕ\96LÁ{{¾9*\17¨,³\eJ\r\ 2Hq\1aä¡¢83ØG\ f#>^³,tý\8at\1d\a\ f/ÙÄñå)rî3y4e°q\90I0\rN\ 3\8a\90\16:õ«\9eò}4á|\8fî\1a \83\13\9b#P¿êu\8bÊ\88à\86\1a§éû\ezÀÏÛ«\ f÷\17w¿_Ü=<D×·\87&G\ 1ý\ 1ÀÜÚ6YBKÍ\99ÏË\1a ñ\19\14\95ʹ\8d­\12>u!Øú¥le/û\f¸¢a\e\8f\0\9ei¶â\9a\18\0¸´É²í\10h:§V: ð\84\89Ð\19­èö\1dR\9dÖ\e\85²\0KL\11Û
-4©A\ 1\1a¹\851[õÜJ\8e\f\80~z°/ \}Õp\ f{²j( \91\804\14t-¼\ 3!ì4+ÊL¡Ù-í¬q$m\10Aëv2÷\10]Õ/\1c,\81\e¥uÎ0åv\feαYU¼¨   \99ûJ¶Á\ 5\13\18\90TT¨\1c«-û-p>I©\ 2C£=nr\ 2\98ô\82\ 6¬ç½c3#ù)\aMC1{F\1f\81ñÍùõÅ\90­óÓ?ë¼ü\v\84\8fkc\v²àr\97¨\r\ e\8e\8dO;Zol\89ãë¹\93,¸Ò\16\89\94\89·¾#\ 6²Kõ¶Ô\89 Êw©AíÔk\18MÍwd\15\97ÅÊÉIsµ\ 5;\ 1%\aع\ 3Te\89%=·¶äÀ%÷ÿX(ḭ\94pÌ»÷¥é\7f\96J¾Ì¬ýÚ\94ttMÑÅ}ôáî×\8fý\1a\ 1|\9c°Ýã\ e\1dÁ\12\89åÃ0Ô«ÊÂ\10S¡w\14aà½Ê\97J4        4`yù\84\8d\ 3÷\1d*/³¬Aö \1e¹¬\96\8a\95\v\1e®nY\8a*\94\10\83Éßäʱª.+XÁ\7fTlϯ°r\17Ù\ f4öb\9dX¦*ìyMÑYË\18(\ 1\97\15\80T\905 üIA\9c\15å¦\80\9eïé)¾\ 5Ü_\1ahÖR3K\1ck¡·       ÕT+e
\87é§ÆÕ&ËÄ>J*åãt¥T\10#C­òË!Ù²§\85§ÓZ=¢Æ\91¤½Â\rèz¿ò\11þ£\10úøòI ËJ§\1aú"ʹ'cmBÏh«Ý!\9fF|X]\88\9eH\80Ü\11ºLáèk\rùD¨\90ªªnÊÿ`mر6<ô\82P¼À_B\85}+\81¾C1\91\15¤\11!x¬\ 5}¯4Â\174\97}rµjέ\8c۩ǵÝ\99\19`\ 4þ\b%3\e«¬Ç\99\1d]|×b\9e\f\17öSGßË÷ÃË\ 3Ê¢\85H\ f\89mX\1aÑ\ 3Á`H\10\9bÚ+\99\9e_\7f\1c)\fßMºHÝ\1aR\f\85Ü\9b-ÐjLñ¨2\93ì\1aÔ\90\0(Z\16JÕ÷©DtÊ_³\96w#EÏm×ýQ\8c7\91x÷\\ 6C\1aÇ|{Jú®x\85\0\\16\ 5s"®¶Ò0w\8a\18«R-Mfj\10\9f§\bé+,v=×\99\19\vtSñÚÜ&Ü\199OØ\12+4pm\903\80«¥jö\19¼ÛuÖ*
-Û~\92¿\11\9dß¼÷_í±¾ëåmªÏzñ´zôù&ú|­b\88v[7Ýø1b* ov\9d\84§\9dW<»éBPÿ1\e\8eÎ/£\8b;\19  \90\13$\94¹Ó\94¥­úRÀ\13Çs\ 6\1eFR®\8c\ 4S\88Ë\9bý\82\84\18¢0\15ñ8z4\9duCÔ, {\91\16Ô¿À\bm\ 6\eÝÏ\87\89\92\8a\væ<TE\a¢ª>NÏ?tl½q¢ìrPà(«4#£UF\r¼0|\88Î\15&õÊÌdCßF\99sù¤©\89\r\96ú"Í¡¥\88¨\97\86©\81g0Ø\8d×h\92m\1fáqþi°¯V4ò\96~\11{\81­¼­Ý2YËËdª\90nÌ3HnQ\ 5\97>\10\9ae\1a\917K\17W\ 6¾Û$ÿ[\902K³\19Î\967µÑKTâ
-ö=¨»Xä]DB^×uùæøx\17³¿\92,ìVw\913*í¬uÎcÖ~#ðc[bc)+\ eá^´¯D\9fD\ 4?y|ñª#¯(á\1cï['S\9a\8fÇþ=áþüúí9ÝVö\vO_ïmÜä\98Ð\15\8f\1a¼ó¨Ûp´\98à\8dæ\99q|¶\98\ 5\8bù  Ø\86§á\827]D\83ß\ 6\7f\ 3ß\ 5]\1cendstream
-endobj
-1058 0 obj<</Type/Page/Parent 1011 0 R/Contents 1059 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1059 0 obj<</Filter/FlateDecode/Length 1286      >>stream
-x\ 1­VÁnã6\10½ç+æè\0\92\15ÛÉÍM7è\ 2MºíºØK.´D[l$R\15©$þû}CJ\8aìlÑ\16í\ 6\vX\12ù8óÞÌ\eþy\11Ó\1c\7f\12Z,)«.æÑ\9cÒùu´¦t½Âï\ 4ÿ\eI{ÿ!YÇï?ü°½\98Ý]S2§í\1eXËÕ\9a¶9\ 1g\8e7Ùä¶\10µ\93\r-"ú¤\9d<4Â)} û/ôUéܼXÒÒ½\98æÉÒ\8brÅåö\8f\8b9M\93\14 \93/¢Ú     ~Ã\aÄ«pÀt\91F      \7f]DqD\9b\83Ôy·&¥8îÖ$«hÉk¶\86T.µSû#¹BÒ\93<Ò¾Õ\99SF\8b\92*\99\15B+[Y2ûïÄÄ\91:CR\8b])=@.ëÒ\1c+@ò\8e!@\84\1c/BXÂ\92\0°Ð\1eS¾:\ 4È8Bç3Ó\80̺\14Ù\19\ 5\ fÛYÂ|9Ä£Mi\ eǨ'b\19y*¾JÐS\96$_E¥´¼áÏPl\9a\1fD%\81mMÙrn¤4¢¨[H÷»V¯³\9f\95n_i{ûyöé3ÒyV\8dÑ\9c\ 4ÃLÁ\1a¤Ê' \93\9fñ8$s\ e\8bäZ+s/\15\8ex¯"\12;ÁLÞcþd^h×@y&¡\17\ 3¤é\9c
-|\ 2ß\81d²ÎÓÎ\1fð\86uf\15\86­­\a\18$\18Ò@¥\9d§1\8aÓʬm\94;\92©\99¨\93s3£÷êÀ¤yTÚC/+eUJkÁhW½F\9fd\98¾?î¶ÃA©C\8a¾NHØw²m8I\9dOEi´ÄYͳl\ 2ú<Z¬Ó \8bèN\b¯\ 6m6'ü?lÑb¯³\14ý:¤\98\9bJ@¥JV»\1e\93z÷>hÀ\89\12\9dª\11õ3\8aÝ@\91±À£\ 3~\f¸HÓ5¦,{ìQÈYÀ\9f.\96Ñ2^ÒU\ 2ß@\85]\85×oí<M®h
-£é\1a\1aÕâ+î·¿)døE\993O³»ï5}×è½\9cA\86½\82\8c\94\190\8c\ 2\ 6-®P\96¹ò"\89&ôÔì\ evè]dÜ]3é²Ya¬³áЬ[3]Eë\8eÑÇd¹òu÷\86à?\ ery\fß¡Ï\11\1f\918\9aÿ\ 3G[\vßÍ\8a\7f\8c\ 5'\86#ía=ë(¾¦é"\ e\ e\ 5ûcC\ eiÅÝ¢É9s'rqIp\11¡HÙ4Ñ
-NeT*ëÍ\15NµÉs0f¡\e\9b\80\86ÇÙ\88äÁ·\11ó|ÝÛ}\1ab î_\fÿÇ\ 4\8aâî¹4\99(\991\1a~EþWè\10\8e\99\1d|\1eªt@¹FFKdÙáìÔag^#@å²\11 ¬
-+Ã{Bû(aS,      \1c\8cS\rÃ\bu K®\8d\95l
-aU_n\7fÉÔ\84P¦èƺ1Ï\98\89y\18{ý0ÅÈ\1aTµpìÑ\96rCÚ8\8cW\94»3}\8eÝ\94jdp\ 5\ 2Ë¢gù|è<\84ÉLµÈ\9e¤C\14\8c\8dNA×ðüC'ù\99X\17G«ÀJ?ÉÉ5\98~µi@·8b\11\98ªZ\8d%Nú\90\9e\9589\97\9fD£)\8akB\81\9dÁãyrßË\1c»6YÆ^Ü9O\1fù\a\82Qßonûg\5Nj\a\11Ãô\e\ 4]\1ei\91ÐN!\198@)õa¸r\fó\e\95Æ9ºcÍIaG\8d\1aÄ^Ð\88ñ·7mC\8f\93ôñ\12C)S\15§Ý²¿\9eÐS\v$\80\r»#ôÊ¡Âã\ 4!Ö²Q&\7f¼ô5L¾´¸Ä¢¸\13§\1fæ\9cÊ[éCL\ÆBÐ\1ef X'-"à®8\8d\15×\8bq´¸YQ®\ eÊQ\81\9bÃYÀg%aå(ê\f·\10\1d\9a\r÷Á\9bµ¼\99\8b\9b8¹Y¤7W˳p?¢\10\8e\83ø<'\9b}#2IU\8b\8e+\ 4¦       \8f\92±>\ekM¦<E|ë\ 3I£Ï\T\10 \12GÚ¡S0\18\8d\1f\8a£ò¨\f\16\9c\94.mý&ôÊÃ/h\8eÒ\9b¾-T\r\f÷"%¦\9b\1eí\bÔ\8d\80þ-ɶ\19¢±V\1düý¨óûõÉÍÒ\8f²\7fy¯}»*¦«4Z-×Ý\95kÍ\~Ü^üzñ\rT\94|3endstream
-endobj
-1060 0 obj<</Type/Page/Parent 1011 0 R/Contents 1061 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1061 0 obj<</Filter/FlateDecode/Length 1609      >>stream
-x\ 1\8dW]sÓ8\14}ﯸ\ 3\ f\ef\88\13§\99$e\9f
-]f\98YØ.\84Ù\97¾(¶\9c\88ÚR\90ä¦ù÷{®d;\8e\ef\97Â\0¶t¿Î¹ç^ÿ¼Ji\8a\9f\94\963º^PV]M\93)ÍÓY2£ùj\89\7fÏðÇJ*Â\8bÙr\9e,.½Hg«\97/Þ¯¯&\1fç\94¦´.àd±ZÒ:'8\98Ni\9d\8d\ 4Ì
-»Q^Ø#\19K¹r\99\95^\19Í\ f\94&-|meB·\9eüNRe\9c§\8dp*£R>É\92DY\92\96þ`ì#e¦ªj­2Á÷\1dyñ(\1díK\91\9dÒÛ7ë\1fWS\1a§×Hl\9d\8f>ß~ \91çV:~\99Ð7¥q²÷\14·«\9aýIÚ\96f\ 3WG\82ý\9fµ|KBç´\95ZÚðÔÊJ(¸,Գ̩@"B\1f\aîöÂz\95Õ¥°ÈËK[ ®·!)\81\0¶º\92Ú\93)p\93>Ý·\81Q\15\92pR;Ôß\9a\8aD\97n%´ØÊpm/­ÛËÌ«'\99\fÜ~6(±ßÁªÑ²o9Ã#d\16\9d#jØè'\9fÐ_8ßÔ§«\ 3c°·ªbtNQr\1aÊ\r\1c\80Ó­\ 5\84àé \0\17\9c\ 2âÚj8\ 5Â|èöë=\9eíËc\eýl\91Ì\19£\7fvR#åÚ!8®*\9c\9b\f\80ÑAh\ f\a¦\aº\84y¿Cý\fLZT.Û)¤\10C6Þd¦$UíËP²À\11BYÁ®aä!T¾öªµ¡E%_q\0¯vLÀø_$\88»¦|B\1e\bä\1c7$&\10\82\ 6C\10\ 1RÇéÌhoMYâüæÈq\r*¶þp?AQq¬PÛÚÆ\10\9bK V)]Bk\84Åÿ$¾;ù\88\r\9d5\9aH\9fM8¸\90Ì©åFì\98\91wu¶\v7/\96\98³=áÉ4ä'¹t^¡\ 3ÑN'ÎÒN8`\b\r    \1aW¨q\1e\81\89%ÎÐ\11x\ 2H'_\19\a|\¢Aº*\aãU\11*Ñg^ë\1d\9a°\95(\Û,\10\ 1\98s\1e­\87N\ 3\18·±yé+£P\87(ïm\ 4:6(\\8b\81Ó\8d5"Ï\ 4@4VÁ?\ 2«¤ß\19ÄÇ(!RGßïîéaô\9d9w'¼ØZQQkøá\rc\8d\9c­\84\16À\14£\ fbw\91rÅ/à[\1aÔ¦k_'·¡w\834\85\8dô7ׯEB_\1a\19gÑD\1fp\U(,ópo\10\12\ 2\81\14\ eR>W4£ËãïìN¡£\ eº\11´®MY×\18ú¶m\8bâÝùïHÁЬ´\17Ù#\10\8aº¤\19\9e\81ë¶@¡ï\99ÉPÉ`¾\17\13\1a'º|©+\ 1e\89>>\95vÈÞ5be§ÿ«\15\80\14\85©u\1eh\r<\1að¾kõ<ùSéú\99\9a>\84 {@\12Î\81H\8c8þ"\10¾®ê*jY\93Ó m.`\0\ 5ß<\87¾Ã²×sàÝ°\10,3hµ#\1dv
-5\80Õ#\86¥¤GÍÀ±Ø)ý+Ï­ü1\\9c1KÆN\96û \99\éF\18ëjO\ e¬aò\8b³É
-\rà\0¢ÆÅîâ\91!\9fU\18\89hÀ¡~aæQ£½±¥.\98ØHLiÎõI¨RlÊ8¯&\1fo(\85àó\8a0¾N£öcLã§A7mÞG¡\8bº\9b°RFðO\eÆxÆ\eÆè\94µ\97e\19GÑ0\9dRm¬\80
-¸wl\ 4«Ï¸\1d;̪pº\15BÃó\9d©ÒAÑ\16\18RX\1a½md7kôx¼LV¼V!\92\87ÙbÙ$ÑF\19^v{Hëìaä .ðÈuÌ\83G\8e\eÀ¸\9d©K\f\r´eíñ\ 2{\ 4\88y\84\f  \9bí \ 1\a\1e\93Þ\1e±Çp\90ÍXBoÿ¬E©
-%ó\ 1Oº1\16ø\0fA\r\1fkz\9eK»5ý2\9d\97µë\9b\f\98Ó]¬ç\17æ×7i\9f°¾ÄL+q\fiºÇ(lXJ@´*\82ñb\82´"å­Ð.6*:Í<Öû\8bp\H¡¥Ý\18»kzCã9ï¶\0\8d¹w}\99{\º\1eóÚ       \fâFæu\93¸w¨\ 5>LcT»Û¡*\89ÈÏZ\1c z\fÝ-$\8f\82©\1e×Á¹X\9e¢À²'ó\84>\85Åb8ä2«\ 2E\ 6«\ 4\8b@_\ f\9aÕ"6\87±9æ]'6Ã^aÏa÷Ê\83        ¨ÇqÏ,\1cðÊy[g¼±cì\87®b]¾i\1a{6\8f\8dMͯè2,-o7Jw\1c\9d&+Æ =VÕ¥W\98¨\91\95m)¹Þ\ 1*\94\13\8b,t§\9dYP\97Sô\9bfB÷¥\14X¢­,x%cÉÃç\ 4\ 4m\8f%:\f\9a\ eØ𿢶8\81/\12\89¡Uº0w~)SóËTÑÎA¥³Ý\ 5&tt9        Õ\19\1c\ 2Uäea Àq'êï\81\r\ eP\ 3ÞË\9aÎÇhßü\0E\88¿
-Ðÿí'\91\18®º\ 5ÖQsøo¨^G.¾H\b\ 3¸^G\9cV\8d\12¦\v|A®®ùË/¢ÿíöóû[Þ§B\80w&«y\r
-S\96o\8eÛ\vãå,èg3\ 6\86½Àgçø\14].VQgÓ\e~ôÇúêï«\7f\ 1\9c\81endstream
-endobj
-1062 0 obj<</Type/Page/Parent 1011 0 R/Contents 1063 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1063 0 obj<</Filter/FlateDecode/Length 1598      >>stream
-x\ 1\9dWïS\e7\10ýÎ_±ã|(LÁ?)\90\19HCÊ4\ 6\1a\9cÉ\17f:ò\9dl+ÜI\87¤Ãø¿ï[éd\9bkÜ6\85a°ï¤Ý·»oßJ\8f{\ 3êãw@§C\1a\9dPVîõ»}\1a\rúÝ!\1d\9f\9dâó\10\7fVÒlïb²×»ìÓk\9aÌ°ãä\f\1frÂê~\9f&Ù>5?¯èZ\94\92î¤}R\19þ/\95Ï\16\94\19=SóÚ
\8c¦\99*d÷`òu¯OGðt\ 6C\9býÍóá {²ý¼\12Î-ó7É\r,\96\95ð»\8cÐyá¥Õp÷$Ijo\95t43\96\82\19cs\12µ_à\85Ê"$aå\9b\9dÆ^ú\8e\9eC\10\8e´rT䢢¥ÒS¥ó\1d6ÜBäfù\1fÑÏ­©«ÍÚ\97¡¶ó²0λ­Å\9cÛ\b+×n\a\9aW;ÓÃÖHs\ 1­t¦¨C¹þ17/ýGïð\1c\12\83äüH\v\18R9åÓ&\8euºv¡ÓÒ/\8d}X\aÅ)^Ûm"jgA¢\98\83\82÷°gG\ 6*k¼ÉL\91¶¬}ìXo«l+ÇÿnßEú'ó/ñô.\8fi0\88mt4\f,¿\99!;µuò\90¤@¿\98\19!"'©\94ÙB\0]éP\91ÇZ¡,x#<¿&Q!\8eÊ*áÑ\9f"S\85òÌs¡ó\1e¨\9e0\10ê\aëÖÊÌ\17«\14à\b\r\8e¶K\8d)óÔ\90Ã\93î1¿¹òä\16¦.r\9aJÒÆË<:®5\b\ 6'ÔÔ)à\92Î÷J<\16s@®Á!ìqh¯C\9a¼»í]ݦÅØ\a0\ e\1cÕ¾\v\16\16-8Íj´XYë¦7±Ç¹\1aÖá\13ÁêLU¢à\f¹J\8a\a¥çdt±¢%Ú\19n2FaWíhîD9\15ô\ 4\92°\0\r»¬jKU\14\9c>*]?\93««ÊX\1fdB>{©y)²mB®CS4)%\17UMé\99\15ÎÛ:ó5\87Å+7\9aÔd¸\bƳB!d\17}"9bZH6m¦^(½Ým\bl|G_ %féèZú\8b«\9b»Ð\93\ 1\vry\9eç \81\93®K\13CsÞï\17jÝN\8dßY­3n_\ 1V¬(Ư¥Ì\83\15 `\19C\1dr@ò\8b\17T\12v\8et3Ú&öR<\84õ%\98E÷û*Jeïò§\86ÆûÄ+Z¥ÔÐkÖþ^¡¦øü'\ 4Òu\9dáU\9b\ 6Ø¿?@\10 2\ 2ª\vÏÅÄr\8b\ 2\81ç\9aÙ\84Ý^\14\8c7\84+)\1aÂè
-\9d´ÏnZ¶)G»dÞÀ\18\ 3ç\8eé0\8aN\vi%,\14\ fó\ 2ôÙä\aÄ`ÊÇêw¢Ìu\80N3\96\8d@ú¬\97¢îrcµñ°"\81õܼдÊ(íIùÄ\896*ã\9cjXRqb\84^m3£\84N0\98é
-6~Ø0%=gÂ\1e2'\vÃ\9bQL\96\8dô\16þ¹îJ·¼r\92X}Ã\fâè\97\v\ 5=\9a\1ap\84ß¹ÐGÉJJë\16aÓ«©d¿¡\r{\97¯ipÚèÝè8Ê˨;êÆ£Âö¤qT»\86\92HòÆl\83\8f\9b\eéAV^¦\18ç\89ái<7lö&íá\1crÚ­ÌYYàFLM\1d\954twPÞ\84\1f+ç8<h¦'>\87\ 5øÿ ÍRÓ\93°ÊÔîojz¿Ï\19\81DA8\94\83\84@pï\ fbòA>n¹:ð\fµé\1cR'9cëü}\13WpØ<\9a*\13\ 1ð÷»ñE«das\10S\82m\f\8aR\8aHP\14\v"\83"Ïc\93s\ 1ås&«0Ö!4ìpc½©u\86Ý\98,\90TQ°¤mô¯å8\ e©-º`è°\8bÜ\94¬I\8c+6w\84ÕYóª\13ú±\13×á\v´ÓJ4÷\8a¾òì\10\18\10%ûg\v-\9fA¬"'ÙUJ *\83!a2\1e\85yÌÅKåd\1fòYð\ 4¤\ 1ι\vô|\ 6\\8e\9b\19Óhî\17\11ëàÄ/Z>×\8b\99>`+f;;Á\80Ä÷ÀWäÈAg ë\98\92\18ÈO¢¨9ûh:hy`\9cK3\19\1e\9fd\81ç8\92\96Í\998&¯åz;\88Æ\16C\983¹ÀcDº\9e\10)\15\9c4\ 6\86ôX    û\9cÛ´>Î6>`¤IæWU\ 4Ùr\f\ 38[<)Ö@(\fç:\8e°^\b߶çë\ 4\vf¦(\f\ 4\16j\ 3¯°\8c \8b5>Æ\156óµ ¸\8d¸â\9dÀ\85Ó÷ÖýâhØ\bE:ñ\7fÖê\11      M\19¹\86¹¸é\e\97\88´g|þî·«ë÷×çã÷oûý_èçp/\81Ðß5×\13.h­5cƱ`kyJGëvòMÃ#6üAjiUFãF\96\19\1ffe\82ËÑß\1f|\87Õa\80ûQè1Ú\91á\ 2u*ÚÿEýåæÓï\1f>Ý|¾};\982æ_c£\8eq\86\81õ\v\8b\ 3\87´\rÆö     û\ 3_J\82`§R\9d5£wp\82kâÙ\88o\84Q\9dïÎÇ\17çtkÍWL_8ÉÂi"Ð\9c\8d\1f¥\rG§C\\1dóýï\e\ 5[rÎÖ\8eO\8f»§'g¸\91ÂÒ°Ï\8fÞOöþØû\v>"\8d]endstream
-endobj
-1064 0 obj<</Type/Page/Parent 1011 0 R/Contents 1065 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1065 0 obj<</Filter/FlateDecode/Length 2025      >>stream
-x\ 1\95X]sÛ¶\12}÷¯Øñ\93Ó\89dÉrm÷NÛ\19;qZÍõW-eÒ\87¼@$$"&      \ 6\0%ûßß³\vP\92é\99ô6\1f\87\ 2÷ãìÙ³\v\7f?\18Ó\b\7fÇt~B\933ʪ\83ÑpD'\93s|=½à¯'øï4-å\83ÉdxÚ\7f~5?8þ4¢_h¾\84¥³\vü\90\13¬\8cF4Ï\8e¨÷çËýã\7fÿx¼ÿüðëhò;ýF\7fèZ;\93Ñ\9dª4ü¬\8c\ fÚé\9c\16/¤Ê\92*]-´ód\97´}óÝüÛÁ\88\ 6ãÑð\ 2®~àa\9c±\87\8f¶R¦¦\ f\ eÎ\96%[;¦;\1dJ»²5Í´[ãÑÿo3g\9b76S%Ý*\ e\96®\9cÝø\7feC³\8di\8d\97k\1d\8fÚÛ²\8bäøÓ)\8dÇ\11ÐÁÉ\19g9\rä\vÛ\96@FSm\ 3 
-\85
-\ 2\12\92¹\9aÞϨRYají·8â\886\8e즦\1aøzR\9e\1aD\8cǤ\16\874/\8c'þWÓ\1aét8L\86'ì5cÐð\98\82¥ù\87\87ãé\ 3\ eú\80ʨ`líiS Z\843¹á\aøàE¬û\17@S\91Ê+S£¤N\ 5ëhcPÑ\#m<Õì\92\ 39Ö!;.¬\ f¨²ëùOG>ÞÍ(WA-\94×p\89´S:ð­¼·\99Q\fÈÆ\84\824@ Ä©òÜiï\87ÉâÉ\19\98\8b\8cîáxÙ:8vÔXS\a¦VV*g\96&\93¤ú8¿\97\fÓ<\96åh\17tü «×\11-M\89 j.\8f&\ eÜé̺ÜSn¹nÔ8»6¹î%Ê\87»2rn\14^\1aFhi]\15£\92jßÎè\8b©sð\r1\e]\ 3³\7\1aÞ@eÔ¨\ 4/\ 3^\8651\80ÜÀ̵Éø\99êW·R/Â&­s\9d\ fé²&ý¬ª\ 6ñã½\90\88!p\17ª\81\17)w\8däèM\1c´Q\1cÌ.\ 4\85|¹ïzyƦã\98´\e\12H½D:ÑW\17h\87Ý®\86\1c\8e\92D\84»(\7f\ 2\11´\r¬\14à4\ 3\15Î\95Ö>µ\r}=Z\eEªç¿Ãxá¬Ê30ûë;«¤ë¶Ò`)8,ÞXzºn\12ä\vµ~¥O\fñ®P?ý
\ 1\82p\ eQéùtú{«ÑCè2¼U#\11°\ e\98*\15âCN\87\16Â\90w\rÒÅ\86'%z\89ãÛa£ý\90¾\14\ 6\9c×\80´ç9¥\0\90\1dÞsº\ 1gR\10à\8c\14\91dä8£]y@\997½3ïr>ÜX÷´r¶m\ eѳt\18K}\b\ f"\0\19\18\ 2\95\82x,[ϦñE\18¨Ñ¾\ 2$ûB\83"#oVµ´\1e\9f°Ë^\ 2 \87t%l\b\ f#\84@0k\9d      \18\11\ e\8a\17t\ 6À\12iõ>7¡®\1c\1c\1a\0²Cû\91\82È\9bÞà\b\eg*å^Pç}ûÉ((³6ÎÖ\15WSâ\ 2/\85¨\8dÖn\10ì\80¿£=9CP\1d\ea,Û½T·tSH\ 5ÊÕ@^Í\ 2½ÈôD4IÇ»Ôß\8bƬxz
-æ¾\ 5\ 5º\ f9\9eÒT@\ 6½e©\ 5ì\88ì[\v\12ô\e¢\81~\ 2£\1cýòTó À\88\98ýyùxM·÷\1f¯·\16¿¾\93\14*È4J\16ÚNþYq_å\9bÐé\b\ 5×»á\9a\86ʦ°Ì\r\9eÆ{\89\97\r\85l#\9d"\9c©í6\1a\8a\83O\ 4\ 4©6ÖG¨\90«\1cý<»~\94ø{\18ïðy]\8d½R²Ú·Ü\83ß[ã8\8b\ 4\9eâ\1f\lyV(\ 5}\b<nWÔAØ\1f5{"¹\87\8aP\ 5\1e\1al9Ý(ÜV©kØ8Þ¸ò(®¨z)õvºÂè朗\97\1d\ 6¼W+Ð\16%E\\91õèï`3 \8dð¡(\98\e°\88\9ff"Át\9bÞ¹Âäx\ 2\af·WPÄ(Á8Ìÿx 0ÉñRìf\90±çù.- [g_\8fð\88[\8f®\94Çv7­\9b6Ð}\eøÛLv\ 3fT÷^\12\f]gªñ-v\8b­¯\9b\9b\ f\88êÆ® \ 3ý\8e¹1õS·Ö!è­ó\ 1\vçF4\11
-\1f§!\1aª-\83\ 3d\87\ 5\87qýy
-G¯£¾~\ e\90I\9d÷²ýÌD\90ím©2ÝÏC\95Þ²ú¹\16\93\ 4\92\f­þ\e\96»m\8fAá0\1e\84Ýïú9+T½\82\95]üè@)Öâ¥çø\ eö@\a\ 4ù\ 5"\11\15\0\ 30¡·u\98\16µ\ e\ fOÿ\1e\90«yÏ5\98È(Íã2Ä?òÂ)ùEw? ÿ¶³\91\15ú&³Ì¨gh·Ãþ\ 1]\921\8a\ 2Ù²\95ù[iÆÄø
-£m&\93c\83÷ \8aQ\8fMÙÇ\ 5b\92ñ*\9d\94¿,09\1a\ 6\vk\9aì(ù\9e\ 1ØU\12ûñ§_h\8c\15\91/1\83É8n\8b\93ád8\8e\8dÔå|ÇÛÙ\aì\ 6Ò\ 4¯7õsÞ0/Q¢½Ößf¯\91¶ÅȪ\99\9e¸×XL\96E»\\82"[¾"@\8fM\19\99ðüé\F5à¦\9c>ôê\92¶\Ì°N,4Hë°\88w"Áó\1er)_:y)@1\94¡jk\9e®\1dnRM\99{¼ñ\8fG\83ñÏ\84\9dª\r¼cLûË#BE
-\9aô\12\8b3¯¢<iì"`çã\1cw\eJ\8c¬\v\87\96ÎV\92\1dïª%È\v$9:À\12稥\95Å\ 3l\17«Bäï­ÞðfaV\98ùù\8fÈ\93 ê6ÿ)/\91\1d\ 2\98A £0\ f\89 dÎ;F$\ fcX\8cÓBóÊV@·°vó^\ 3 £¦ÈÁBñ\8d\fGôsc\10P¿>(Ú²l}\81\99\8bqé$\81J\ 5\\95â ÓI\ e8Ò¤Ìr©yU=\19\90P\18ß.¾aõ\ 1î=§ÁTz`9b]ª\17\14Ï\fõð?(¡ïg\9c"\81b©7H¦=:\8eã6ËpKx\ fÂ2\95\13\88µ§ç\9cï8q}Á\95Bn\97I\9f\96\ eû\a7"Ô\8fÉ
-5ÀU| &cé¡\r\85r*\ 3\81±çbl@\1c\84\8fI²û\1a3G {\9d\ 6õ(y)\14°0åø\96Ä\17\1a\83ý-íõlm¿«\12ý@\814\16\ fëEÀý6\1cƦ\9f©jÑß\98x3X«\92\19/ñ1\7föÞ¯\16\11¸Ã¤*\17éÊ8>ÃoS.&tvþsü½Åìòöê\92\1e\9c\95"~´\19n 5\#T\86tн08?\19±®ü£\16\9d\9e\9f\ eÏÏ. _8}2f#×ó\83¿\ eþ\aF{Üëendstream
-endobj
-1066 0 obj<</Type/Page/Parent 1011 0 R/Contents 1067 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1067 0 obj<</Filter/FlateDecode/Length 1698      >>stream
-x\ 1\9dXmoã6\12þ\9e_1p¾d\81Äk;A^\16E\ 1'qî\f$Þ\¬Þ¢\80\80\82\96h\9b\8dDª¤\14Ç÷ëï\19R\8a\9dÜq·m[ì6\129/Ï<ÏÌ(\7f\1c\fi\80\7f\87t1¢ÓsÊÊ\83ëäàóÝ\15\rÏ(YâÍù%þ'§A\7f0\18P\92\1d\9döOû£>%kI÷\ fÿü:Oæ´T\85ü\94ü\8ekg4\1c\86k'£\v\;JÖÊù÷\84¿\e×\88¢ØRa2QË\9c\94¦\879}S:7\e\84Îú\ 32\96
-/\83M\ 4çm\1eÝ|IÓoÓÙ,IÓù¯ódòp:JÓÛ§é¿'Oó4\9d$7ïc8"¡s~4 \93!bæp2£k¡´£\1aáO\1fi\9cçV:Ç'ý£Rdk¥%iQJ\8e \14u¶F¤\95\85¤?\ 4ÕbðÑ5CB\95´KcK¤&ëëé×¹7û!¢Úp\1c¢\8d£\14U¥ô
- (©\ 1Q¿==:ïs\15\8e¦5ÕÛJe-\8cæÙQ¡\9eå\97.¨«\ eü³p\9eÚ\7f\ eéÆT[«Vë\9aÒ£,ýDë«KzP\995Î,k¼¶Uçl8è_²³·Ë]È\1f\9f\83\ 4¨*þ\13äDY!ã}F Ü@n±õÀî<¡Ü\8en
\ f¡´ÈD=\98\17i)¹yü<}DЮ\16Ù3\ 1Ó\8e4W\97±\9b±ç!f_\9ewdh\91wd\96{\ 5\91`\8aaff¦¬\9aZZ&\86\8bÚ~Ë\a±ú\93}¢   (EHÖnÉ­MS\0\12IϲªÉhð\ e,ËÕ\8bÊ¡\f\94RËh\11¼âö¨²3V\15"\vjbV/ÁÔ\1añ\16\ 1UQ\98Í[\19¢\81gÆB\a\95A,`ß~²\81ô\1d?;\9dð\89\16\8d¨Í]\80NVÂzÅ\83\r¢¦B
-\84h 3W!t\96|-\16ÁSï°GÙ\1aÇ3Ø\8fÚ\ 6çVRKëuày\862åR\9bZzº\81(\16\1e\96`&B-\ 3×\9c\f/åk\ 6ø\95ÑñB.$`K?E\8b\11\rì]¿c\94\16\10ÆFÕë=¹Ý\8fgô ´X\81Ý£þkËp*ʵqu<,¦mhVf¹\946´±Pc®\9b|­¥v\9c\98o\bÜ÷>J6\1a¸\17ûáãÓä\a'n¿>|ù)7%ºèÏ?8:\9dÝÜÿr;¡\9f8l\96Ã\8f.\Oþ1\9dý6¾O&O³qò£H&³Û?{6M\a¯Z£Ýh£O*«tíiÞÑ\8c\SUÆÖé§XF±çtç\ 5ÆÖ\84Þ¶2ÇÜ\bBìêÎ?½qÚQ\8f\81\12EA\99\0{£Öùbh\1d 7ÚFeÁK\91{±ã ¿ö\93*C\8f\91}ºÞB\ 3\14õ±¿¦\98,6n\1e\99<¦ESóq\f\9dÛh\8c\84\f)ßÂ\8dÊ\8234
-4\17Ö\ f-\85*Ü_\17É>hm~^\1f\9cOïp\9fa=4\86U@J8g2\85.ÂiG\11\vh½Y\vDE\9b\91\99ZªÐ\a;ör¿áÙ\ 5%eµ£µÙ|×òÂbI\ 1\16Ü\ 2\v³BöøéEeÀx!×âÅï\vaR!§\17e\8dæ¾Ã[\83éP\8e\86Í\99³ô\ 3Âo©æ¡o0$\ 1§cR5\ f\-á×     Ì\14Ð@\14\ e\7fä9\89¨}f\1c\1fe?~ÊøiÒ!áGx±\11\ 5
-¤DQc\­ÖìÑS\15l\89Ú\a7Ñî7\9a6k\19Ø¿ã%[\7fQ\12Sè¯3eî\v·e}õ\ eÿ·\9f´"ÂB\80)¹=Ýݼ-[\18Æ×I\ÒÄ{Ï\86ù\ e\0\1a\9e½\81\1dSv]Ë\97Ü\8b\82±\10Øx\96\1e\14ù\1d\8a[ô÷Z\1f£°\eY\82~\99Ý\9c,\ 4ë\8c\91:\ 6Ü\98\8fDAÎ\98Ü¢PÿÁ¥vR\84Õ\1a    \0Ü\92y¹Å[Þ,<=¥\8dbNØ%\11ÓøþÛøWl¦û\84ª¬ÁF"a£ÛGyåb|÷ö\ f\fW<\89\ 6Ëâ\80ZÐlùj`^WÁVy\9dñ²\ 1ñÑ\ 6½\aÏÔ\YhR½|g\e\9a"Å<÷]\88\ 3sèåh\1eU³(TÖãÕ\9d\9fÊ×°\96úqNÞ\ f\80
-/£\91ß\v\8dÑ<\ fñ\17\8a7\95%õfMQÌ¡9´½9ûrÞ\89±9\92dt²°Ñ¶\1f\10¼6F\1d \ 4Á;\ 1P±R\84\ f\8fwõtMÆò^Âå¶ÅêYn¹Z\8d\86¿¨á4mݧ©ÛºZ\96i\9a5XìtÍ«®5\85\935^µm+M\v¡K¡C¥Ò\94w´R¢Ý»4ÕpíB¶\1eÙøJÒ"må
-HY\84;Wø\12Àà@?z+G[\7f\ fæÒ    ®\8e\8dW7\9aa\82¢\1e\865Á«òðÝ\12\80µz»AIÐÔYM(xQ+þ,é\88\17µ\8b}\11pq»æª @+k\9a
-JªÍJr¬}\1ac¾;\b\14ævõ\ 1\97²¢Éã2Ø\ryOHo\96]x\13\7f§#Þ)ÍKï1ýÿUÆa£Ð\9c\80,\172\ f\9bB§b\fªm\14\81ðÙà@\17®\ f7"\16Ðþ\87+ëæ\8fÆ\0)Þ0\8fù½\86lÛ£løóÝeû­><¿è\ f.Oéü
-\9fîùÑ|üp=¦Gk~\87¬éÖd\r\rñ½\93îøÉÅ\b¿cÈ¿÷;\86³\8b³þÅù%~1\81\11_\9f$\aÿ:ø/\1e¿ä¿endstream
-endobj
-1068 0 obj<</Type/Page/Parent 1011 0 R/Contents 1069 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1069 0 obj<</Filter/FlateDecode/Length 1605      >>stream
-x\ 1\95WÛnÛ8\10}ÏW\f\92\87M\81D¾ÖN
-ìC.î®\81ÄÍÆî\16\ 5\ 4,h\89\8eÙH¤*Jvò÷{\86\94|C´\9b&H`SäpæÌ\99\9fG\1djã·CÃ.õ\ 6\14¥Gí Mý^;èRÿb\88Ï]üå\92\16îA¯×}ûAç²\1f\f\ eO\Ï\8eZ\9fÛtI³\ 5î\18\àCL°ßnÓ,:¥êç\84°ý¢5iS\88B\19M\85!\9bÉH-^IÐR¾ÐJ$%\09¾k£Ï³\éBé'\8a\96"\17Q!óàÃìÇQ\9bÎ;íà\ 2·l\8d7­ÓlÉ\16\93ĬÙ\90|\11i\96HRIRÚ"\17\85´$\92\84Ì\82\8a¥´\12\e
-©-¼³\9f\9aL6­S§Ý\r\ 3@t9tAçK¥M\1d?\9d<<\8eèäöËý'-\8bµÉ\9fÙ!:Á\17zÊM\99ýféöæ\1dÆq\rÛ<\16Y¦E*ÉáÚé\1fo.Úùpâ\0\16       a3Y\99¯dþ\9e\eº=¶\91\99¬LD¾cÎÇ°·`M\99\17lw\1c6\89\89DbóÕ\8e-\87ÏÎw\86FÆ2v\84@vHé()cÙ\14@Ó:\9d\\8fþ\18Oþ¹º\9b\8d\1e'W³QóÆñäæîëí\b\88\86aía\18få<Q\11VÒ¥±\85}ßq\97û_8;\9aÜþ¿\87\8dW\8fQM@HÌÍ\8a9ìH~æ\96j\9a\1cW)¢ÈèB(\rÞûê\13I£ÕMÙ\ 1zR\85%æ[e¶"Ç1   \1dÓq\rÖæ\16Þ\89+òÆlQ\96ËÄ\bä÷Ì\99\8f\1dh{6HÙJ$\14\98`\rÜ Hh\9aK*­\8c\e]\87¶$¨î\9c\9c
-\8a¤FÉ'É+¥\0\80A\80É*©´P,\vN\ 6vÂi´o_m!Sö®Ôb%T"æ\89üuu\9a\98B"M¢p¹Z/\r\9cð\9eXÊD\8e\b+Ö;\154i\8a\10,A;¥\88\96\94\18ó\fgÍN\1az\962ã³\f¯.Ó9\10\81ÖEµ%À$(UZ¥eJk¨"©4Ë\99D\99Ì!Ä©ÐQsX,®¹Ä6 W0\16\90v\12ñJYFÃé;Ì\ 1o\11\1f\0Í\99\b¸hØ·Æ\10$ØåÄ\19Ö\19\18\aqëó%uú¾Ý\9c÷:Ü\bz\ 1ÿÒ\9f_¦³©ÛÈ\16[\9fûÔÁcnKçÝ!ï\9b-+C.u¶tt`ö\16\ e\9fÒ7¥c³¶4\99Q\1fM\11ݨ˭\f%àm¢\8d:\9b§7\9fÂðÛx2\99\85áôût6ºïuÃðöqü÷èq\1a\86£\99\13ó­\ f§Ìó:Ð\1eú+ÜÙ\14#çgü@Wq\9cK\8bÂAØÕ\12k\8eÓy8\90\8a"ZÂÑL¨Ü\ 64Þ«\ 5\9a¿ú4sS\80\15\93\94Üf\ fnTz\91\v´¾2*JÎ\9bÞ       ù\8cb\99\ 1q&\f8¶4kgpvóÐ\82oR¯Tn4S\90Á\83ë\võ\ 4\eq\0\1eì 
-\93\12}æõàâµðîÉ\9f¥B£g+¾ëÒW­^ZwJ\97/\87\b·d\11µ6¢»\ve\13\17\ 2г¡\1fÐídJw®F|æÞfC$21W\89*^÷Ãbl8\aUøV\16\8a\aU\eß á§\9a\85\88\9c1¤g\ 1̸\12bäó\0\r       Á0<\7f8MÝI\17dúg)Quì\8c\1f\p\9eý\80`F
-#\8a\16.s\0o½TP\ 1e}Ö\ 4#ª±X©ÉD\16×ã/Ó\83\8b'&FH¯\19ìa¦J%kä^6Q¶\ 1]Ñv\1f.jS*\ 5Z\ 6$\97*³4Ï¡Þ\11¨Dá)\ 4#§¯·\ f\awm¶\84\1f\4 mád»\16ZÇk'\7fp\81c´åü\87\8c\1c30\ 22\91½Æñq\16\97\85)Q\19UbjOxßÁÍ\11äQº\f\v\b´»@3'Î*\99à"»»÷\92\81¼bÊ\94Ñ3Ó\19\89C¶Y¿¶(\¸¾§!\97
-\12\1f\80Á¼æ%\1f¼eÂ{±#\88Æ\94¦n\1aã%3ç^\ 4ËU¬s/©[OÏj77R_É\a´i\83q}\1aHqg|K(·Åñ1ðNügu\ù=ái­\88c\r¶h 3áÌø\0\10\1dÏ\95Ê\13\96\v|§¾óEÔi·;-üëî4óÉõä\90\9cái\9dÓ½\e\98\8f\ e3?Á\92-Ðr<a8÷^.¡Ph3¬\9eî\11\8a\80s\9aË'\85N\r\95by\14µ¸\1fÒ%QNÕ|ûß+ø¥°\186¤¦'µÂ\7f\98M$\93Þh¹\97Ç­x;ä¹á\f<Þ3³Q\b\80&Ò¹à¤c\80\817L\84*(\86nû¢²-N\1e\82\11«?\11ó<\8cϼ\99cà÷®ª\eÙt\1e°&ûåZêN]3tï2;ïhçݾ÷­\1e·ñr\849«Ì2\93\17ô;}\97nÊÝ
\vÇõÏ7\83a]xW4n$¤j®¯Ê¸v|×Ó\8b*ªÎ\0ï¦\17=\1a\f\a¾aN¯î¯¯è!7N&nMTr?rÊË\81\9f×\aÎ\87]¼}6Ì\ 5ýa?\18\ e. kØÑíñÁÑì诣\7f\ 1Mïqðendstream
-endobj
-1070 0 obj<</Type/Page/Parent 1011 0 R/Contents 1071 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1071 0 obj<</Filter/FlateDecode/Length 1780      >>stream
-x\ 1\9dXËnÛ8\14Ýç+.ºr\ 1G~ÄuÒ\ 1f\91L\1a4Àô1p\ 6ÝdCI´ÅF"U\91\8aã¿\9fsIJV\14\ 3\ 5&AÒÀ|Ü×9ç^ö×Ù\82æø^Ðå\92\94UgódNëÕ"YÑêê\12\7f/ñÓHÚú\85\8füÉèó\9b\87³ÙÝ\9c>ÒÃ\167­¯ðGN¸e>§\87lBñk¯´%ÛÖµi\1cýI_Íû\87\9fgs:_Ì\93+\1c\18í\93ͳl°íåå%\19üð\99ÙÝ\8a\16\8b`ì|¹æ³ûBÂð¸\8c\8b\93Á1¾âõÑ        )K®\90tÿ\9dD\9e7ÒZ2[ÿÉ\8fû¯\e²Þ\81$\1cúH\8bËhïb\85¼ÀâE²Jè³ÙSÚ\98½UzGÛVgN\19\ 4)tN\ 5\96\9c¡\Ö¥9\90u"-%/ð\85\bz9\ f×`]êÜ/ö\17µþº\8d¨RñÚg>w\99ø\80¯\91J'\9cÌI¤æYNéË\86~(\9dÃ\17ªDV(--\8a¶SÖ!\8d\88S5ôUº\9bûo\eÒ¢ÂâãD%2ùÃG\1c\15Ú\9a\86\88\9e..\92%\aÌ       Q\99$w¨%)M¦\96\8dàx\1fß\93Ñì\rÊÚÖ  ]\97ÖLI\8c\1dä\Ë\17\919ª¤+LNé\81ö\85Ê
-x\80R°SÑápíȼ\13Opº.\ 5\Àö\"®
-QÆ{p%â\84çÚ8\1fÒ \1fY©¤v³PQ*àY*¥¦\9dzÆoA\83r\8flF\Láç«ûÿþòùÛæaC¥1OmÍîHÍ%̧ì\81ÚÒ-\0Äi\1cf\1cÁYS¶\9c±W'¤Ë<ʸ¸ë\0\8a{íCÈ\84\95l\1aÈæè|ÜÚ\fý%Q\96o3\a\0ZÚK,á_\9f×à(>Ç%¹Ñ\92sÿïí÷Q¸\0 ÈaÔ%ôÀ%Qð\17\10ëkÓ»\ f\s5K\93\89\12\8cNµtSjuÉ\1cêr\83ó­Eu°·\ 4\b{O\ 3;îǶcª¥M\bÑÛ\16°°Êµ\1e`\96<\17¨n̳Êá\8f\0\84\ 4x6@\90$Ë|\89´\rQWâ\80Js!2\95\96\87Q´Jÿ\94\19\13\18\8f' Âbw!\ 5\ 2\15«\8c\93Cj!Ò½i\9e@\9e@RNû¸Mhm \ 1ò\1dÕ¢\ 1\9a\ 1ÐÇ÷ãÒþð\85|\ 5:F\ 3§jz\1a·´W¨$6pÅ\90\15â´öìÞ+Ç$\92Cdtv;ön8£µÈ\9e¤³\94    Í\89iLë\ 5\ 4\8aÖ\86ã@\14kH¤ã°ä\9d¾\91È\1a\83JÇã1%¶³Ø\81ø¶mX\15Ù/¯\r 
+795 0 obj<</Type/Page/Parent 794 0 R/Contents 796 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 19 0 R>>endobj
+796 0 obj<</Length 797 0 R/Filter/FlateDecode>>stream
+x\ 1}SMsÚ0\10½ó+vr"3\89±lc\b§\92¤¥\9dI\eÚ8ÓK.²-°©mQI.åß÷I6\81Ði\87Á kwõ¾ôsÀÈÇ\87Ñ$ 0¦¬\1eÜ&\83Ñ\87\e
+|JVØ\89Ã\88\92\9c|Ï÷ñ&\e>Í?ßÎi©äFd\86îeÖÖ¢1Ü\94²¹L6®\95¡Ã¶^O|o\8aæ¾'\11¼¶%ï\93\ 1¦ÑxÌ°\eM'ø\1fà«\ 4­º\8d0öâó\8d3TÑMìF\1fqÍSm\14ÏL\a"&Æz\10ÁÔ\v,\88\a®\r=osnDW\13õ5C\9aQR´4o×ÄÆÄ\82Y4\9dEcº»O \82\1fØj\90 bÏ*1L\8aRS*å\ fÂ/§LV\15\94\0}\92+úøø=yÄë<\179\19IO¼N9å§*\91ü%\14\99BÐ^p¥=úDFím±ht\v\15\rñªêÏea\87\9fc+k\95\82ÚW\94\86´¬\85)k¡Ý0\a¦âj\8dá\e\99Ú)@Ô\bÚ
\ 1.òæ%¬*\e\8f@XP-¡\88\12\19&\12\9e\83\ 1A{vç\13Ò\ 1ë\89ÙÇ·Å\801+CÄ"È_SÀ&ÖC·ªèÉfÇÇr|æÍ\81¿\ 3\91ÂgÙ69\81¥£h'\1fÏPk\1a\16Ælg£Ñn·ó´\15Ð\93j=z[ë\1al-8:þ\17o¢xA[¾\16๬\ 4×\82´À\81­3\1frÉ#=\8a|\86´Õ4q¼ÜâÀä/`àæ\a¨>½\ f\e¡ÔþÝ+Ì\7f ôÜû³\10\1ddq\97Ǧ)/\91á\12Þ"<P¨\8fÉâË3-D#\14¯hÙ¦U\99ÑC Ó@ëe¸X>¼\Ò«}\ 1\91ÉíÞ¦\11!ëÏ=\84\bÍ®\11\87\95MVµ6¦»Ò\14NÂ.¬Z¶*\13G,HÅq¨MÑ«\81²¹®J$\8c»K×_ë0\9aºh0\ï\90ºÕ\7f\ 4\r£\9b³°\9c\98¿Ò+g}\8fZ\8fÖÛÊ3¿Ýq.\0Ç\a¢prGï
+\81<_\913§7ûëà\ f0\11c¸endstream
+endobj
+797 0 obj
+652
+endobj
+798 0 obj<</Type/Page/Parent 794 0 R/Contents 799 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 22 0 R>>endobj
+799 0 obj<</Length 800 0 R/Filter/FlateDecode>>stream
+x\ 1\9dV]sÛ6\10|ׯ¸¦\9d\89:cS¢>,Éov§NóÐf\1aë¥\8f\10    \8a¨H\80\ 5À(\9aé\8fïÞ\91´å4êÔ\19\8feK\ 2\ e{»{\vþ5Ji\8a\9f\94V3\9aßPV\8fî·£ÉÃ\86fSÚ\16øæfµ¦mNÓd:Å'Ùø§R5Q{J\13úÅ\1d):zoCTUEÊæ´Õ!Òãݯ÷w?nÿ\94:颫s=O\93\19*\8dÓ\ 4[\1f£nhzK\1fµÊ)\96\9aje©Q{\1dº}\vJÓ~ßlÅ»¶çk(7!z³k£ÎéhbÙ\1dI\99³Q\19KT¹\18È\15Ô\ 6\15\19[8\9c¢"\16\ 3h©«\86\81ïu¤\93k ð=*%Dï\vþ\80!Lé:\9dw\80sgßF:Xt[v\1d{Fý\84\98ñ[\8aþD\14\­ciì\9e*sз]/`÷©\97\9b\ 4täã\1f¨û*í¿\1a\8a\82®¹f¨wy²¦¿©v^˺\9f·#¦_4\0ïøïã»Ñl³J6´\ඦùf\93Lûw\15=v">\93¸\αì\Æ\ f\0í\81·õ\99\16ª\98#_«h\9c%\85\83\eg,Ó\v\9ehw\12\8d\1eU½StÔ;
+&ê+¡é%.¿§1\9516·\93ÉñxL\ 2ïH\9cßóÚ\17mHCX\8e¿´\ÌñºX¯ð:Ã/N/\ 6\e\ eöYN7¢Æ³\11a§ÞGé-Ý·¦Ê\99wöÒ½±Ê\9bËVr\94³\1dL¸¢Âx\18Ö·Ð\ f\e\eïö^Õ½8ËA\9cd\ 2c\15fßözL\1e\ 6fÇ°\96ìì\88\84/½Î¢ó§\84¶¨O¡tm\95\93j£cj3\8c \òTM\18|6ZÇ/d`\13zr\8döØ\84¦Â)D]'½=©T\9f4µ¶\r­ª\88¬Öy`\10VÌ\«\13\\1eJ\16\ e}u>û\8a\ 5½sñû/mxÞéõµÌIW`h\18c1ë=ÜQ\87S\82Ötäá
+\8dÎ\f ¹\86]\14\ 4N\ 6Gk«v\95Æxm\19¤þ¬³\96Ûz\1d´Z\1dôE,2Ö\19Æ2j\91c×; ¡\ f6Ódâ[hÑf°z@\1et\1aÔ\8d©ào\ e\0\ 6\89¨èÙø¿d1"è/áw\11\19øé\97¼\0&a\89ig\ 5\12ú£\a\ 2>\e\ 5á5`^Ú:\81G\9eó§\rßÄæP\1d\9d\7fEe\84úëu\1a*3Ä\8bÌüæD,øÆHêJê´\r\ 6P\ 6\99Ç@a"õ'ãÚ@\9f´\ f\1cM\9cêÝ\9c°pµÙ\97\96í.\11-1ÏÃì0xý.¹TÎ\12\1d5^ª!þÙi$\8fUõp§(z\93 È\e86j˧w"\89\8ev*;ð±]r|\81\93o¥o \ eíj\1f/\93ÖSU\18ܵ\9c`C\87 
+w¢BLøïøØ.k)\9d­\91\9aÿ\9d¬\9b\85ÜIçÁ:ï\83uvË#K|¹\9bºq>*\8b)ÇÕýoQå\92¾\8b\1d(\8cÄ^wiÔ"^\v\1d³\92ßú «\ 2P\91\80E\81Ô\80Ä\ eìyʽ±\aÙ \9d\85hê¶\92ìKè\9d\8e\12\82L³çÇ\v\0Þ0\863M\87Qñb    \9e\8cM\8dë\rÊâq!;\9c®ð¡\1c#\82sÞï\10M'ÉP¤DÒ×\1c"®{\1cèò¶¯\ fsÈ¥\86\9ap¨¤M\97»râÁ4ì,N~°$å&\ fë³û\7f%×ð«\1e¢\16ëi²Á\83\18?:õÒþ>ú\aµ¶è!endstream
+endobj
+800 0 obj
+1091
+endobj
+801 0 obj<</Type/Page/Parent 794 0 R/Contents 802 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+802 0 obj<</Length 803 0 R/Filter/FlateDecode>>stream
+x\ 1\9dV]oÓH\14}ﯸË\vA¢ÎG\934©´\ fÀ\ 2ª\10\1fÛ¦ÚEtµ\1aÛc{¨=\13fÆ-ù÷{î\8cÝ\ 4Óò° BZ_ßÏsνß\8e¦4Áß)\9dÎèdIYsôrsôzs4IV+Ú\7fØ\12?Lh¾^&+\9a¯Nñý\94¿ZI\ 5l'ðqÿÑÙ.WëdÞÙÎ`\1fLá|üfMÓ9m
+\84].\16É\926yx{B\9bl4Mæ       ]z¹¥\933ze¥ð\92|%É5)eF\17ªl­ðÊh*T-\93g\9b¯p8§é4:<\9e\9dÂÝhSI\84\13øçD³­å\ 3¯:R:x\96ß\83\89#rm\9a++3oì®\7f\9a+ç­J[\ e\99Ð9lÊR:O;Ó¢"\91³\8b\86³\98Ðñô$\99\f\81\8b¶®wäL0Ì\84&'%Uæ.\844[vç¨4äM)áÂr<ÚZ\91y\95It\0Ö\v\837·¢D\97\8d%Q×\87¯\87â\11v¶D\9fcÑä\14\97\8büZÇ)<P7Ý\99¶Î)\95¨×4\88­tIµºáxÊ\9dÅ\86NhÍý\9cÂù":§îÏ\97²6©¨ÿéK\ 6D8vÿ\18ÿß\19{SZÓnéwzÿùíÅÇ«O\9dñl\1a\86}hü¥B\ eî\17Þà°l¹ s\ 3\7fÚ<\1e\17\96a F£ñ½é\1e\eÇ(æ$\80ã®RYÕµ\ 1-ÅL\0,\8d±\87\99¤;\12zg´¤;å+|'\12YfZ\8d\14"`\9c´·Ò>G\8b¹u\12V\18\1f>\94¥Ú\94\98£\16\8d$cûT;T<        ¥>!áÂ\10Ù\vF\1d\8c\13º\1e}0\ 1éÂ\ 3\ 6p\9côÁð ¡¾ÂãKѤ\82\94\ 3.,r*"X^^|üëòüÃÛÄ\7f÷\83À\f\9d\z¡jwý¬\1fE\87\99}T~0~³è\984j\ 4\10¡´óèP|Ô\93l\84Æ\0\88Úøþ9:DÑ\ 6B\12\888\ 2]\13¦ëðÕ@Zú\fòh)A\1eCYä¸òÄT±NÖ¨\88_;@ö{NƵ 3ÓnÛÆÆô1\82\12ô|\ 5ß%mk\81Î\ 6\95\99*\14bEº\ fòdÏ\9cÓ0Ïë\11³/\97\85hkÔ\89\91\19ÂtÍM\97YOuî-R\87ï\81ãqëì¸6\99¨ÇH)\15ãZ¥ãA\94ëgC
+¿\81»Æ N¥á¹\89B'R\83\8a\9dÌZ«<4Ez\ f๠    \9c%u$"W±â\81ÿÂIp¡`XBa¸\10\93µ\8dÔCd\}8ÿûßËׯ®.Î7\9f\199!\9f þ\13:\99­ïµþ1ý\9e­\87ê½èÔ{~F\9bN'm§BqN\81Uäñ\fø\rʹç(\8f<PôÜ?\85>7[c½\0ñ\ 2îyôüZ(èVÔ*çn\98"ÀfØ~Þ\17\8f\ 2°c.7¦Ï\ 3ÒkJ+\9a\84è¼ØÿÖ¶Ú\r&þñ\1d' yê\81\a5\16DH©6"\aÌ:^;,\8b\82"K:ËRÝb'i\92Öò\98¥s\10ö!\ 2öPG\0\ eO\b(4ï\19p\9f\ 3\ 48\ 6ÍsF\8b\14K.\95\0\r\0`M\ 6r\ 1#\91HÝ<gÓ\15ä7îîÇæ9]Í\83\9e\1fîãe7ÑÅ\19ö2$\87E/äѤyÈLãË\8fȾ\9f#\13½iÑ ¬2\ 6 \ 4\1c¡(\90-\8cgÿr¯¡,\8d¹\90\r¯Ft¨°¦éæz/KJK?\b6Jè\ f£\9f¢9ØÚ\1c!7\94\1a_ýFô:j3\903\18"/äNF\9a\aÈ\8b_!Ì\83øáQT\ 2\83D\v\9aX\f\86\8eÍ\90Kìê\9c\bû#6ã\979?ç\ 2\19Ñá4\b-   \ eÑ\81¾\ 5\83\94»=\13\9aÂíÏL\13\ 2ÖÈ\95\9dý,A4\96>\eÛ,  2ôã\84дá\89\11\ 5¥[\14Ô/»Ã0\83\8cº+&¡\rË3o#\95µµ\0ÝY\860\88°\8e\ 3VR\809ÊØ\1dÃ\18ÇI¬¾_\ 2¸F\90¿±y\94¬\88\91¸é\98\91\9aï Ý |\ 6\95\87\ 1apa\8d\89
+v°:6hU#à\ä·\90\12>¥ \19!\0\ 39vå~T\fËA£\ 2Ä\af?#~t )¸ 1\e©Y\r"\9cAv_\19\80\83\17IÇã]\90\8fAMVº­\ 1\8a\­ÊÊã\8e     Ëà[«²\eü\80\96\ 2·J+¯D8íº£\85\e\1fI\87ò½\98?ÂöU·£§ËÓ\84Ï~\9cÝ\a÷÷å\8b÷/_Ð'k¾â \ 2±âÞ\b\8b\88s=\8eo\1dÇ×þϵ>_M\925N\7f\1c\8d\buúóè?\b\81Ŭendstream
+endobj
+803 0 obj
+1435
+endobj
+804 0 obj<</Type/Page/Parent 794 0 R/Contents 805 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+805 0 obj<</Length 806 0 R/Filter/FlateDecode>>stream
+x\ 1\95WaOã8\10ýί\18¸\ f×ÕÒ´iK[¸O¬v¹Cºe9èiµÒJ'7qZC\12÷l\87¶ÿþÞØM[²ôX@
+E±Çã÷Þ¼\99þ{\14S\17¿1\8d\1fRR\1c}\98\1c}\9a\1cu£ñ\98v\ f3Ã?]\1a÷¢1\rÆ#|\1c\f¢\ 1\19I\19\96â¿áîM¿\1f\rÃ\e\84ÂKÄß>\10§suNñ\80&\19\8e\1d\8eñ!õï»4IZq4\8câ\88î\9d\99¸À\aa\9c*g\94\19]\90*¥K£D\97Ù»ÉÃQçj@q\1câ´{#ÄiÝ|\99\8d&sd¥ó\/yçRå9M%¥*ˤ\91¥#\95\11­uE\95\95ts}OÚð\9f÷ä4\16YgÔ´r2%+Í\93J¤¥B,lÄ'v©Ý\eâÖ8éO­\1fI8\8ec(d\ 3\10}6­\8etI§Þý<ÓVDôu\8e}ÊR*3\(å(\vm\1cÅýó\8eK\16\11]gTj7çä÷\96\91\9bË\92D\8a\r\94c#\1e\8fr\93\8fz\9c\15\8bpb¼\87Í&g 7UÚ¶­-©>íyz{\17´ªP¹0ù\1aP\1a¬\1euªtáa³s]å)ÍÅ\93$Q\12\105k\9fÌë'\97\8etðÜ\e¹r$Sõ?Ð\1e\92A\vé\0\1d ä\96ÚcdÉêB\ 6(\19.`¸\ 5¨Kç¬\9d\18\9c\9e\ 5N©ñ³\8f\17d!EAà\aÜ,\ 5Ò3Z;êTÖtr\9d\88¼cE1\15\9d©*;¶\98B=ü¨éA\1d1=\8døT\1f\0\99Ax\86ø\95à%Çõ\8fç\10¶q\91¾/\ 2\96¿\\89Ä\91]\97N¬Hg/*ô0\8cOÂ(è~*ÝRBsU©VÒFTk\1eB$èS\1aÏ=¯Tå^m\92W\8c¨ï¾\91æ¬R©lV\11×+\8a\1c\1cm\ e!\91\ 3çt\1dÔÅÒâð\9eº\rXÿ\0,úÞB\810\9b¼/\95Æ&ÚÈïï8\8f\80ÊÏÖâ7]5ò,*\vý©p=\96á\e\ 2²\934\96\937\83ÃPÃs
\85)\v\82³Y\18\10®ý2P_J,.×à\15\8b
+뫱\10\b6\82Hlh\8c  \9d¨ÒI\93   ¸×      é\85S\9a    bMz÷äµv!\13\95­ýúë[®\1a#­m\80Áõ\ 4Ü\va\1fYEÞìv¡#º«jÀÏjóS\19û³\9a\ 5\1cj\87FiÚP10_öÞT\97¿:zD-Ñ\92ý\90Ó\9e\1a-ÒD\0\7fØ\1e»\8e?\8f\13ðpt®êC`Sµãq%4\8f
+¢a7\97@¡`¯\ 4\8f8Ä ]rª\90§\ 4\8b§L¨Ü\12 a\93تü^\ 6\10­L<nx\7fâ¤õ]\88O;yYßl3:e\94àê©÷îpÓ\9a\9c\92ê\87Fr||üõòîæúæw|¢ÏLo¨7$\ 6ó\15I"\17HÞh\b\9dÎ\88\16\ 2FÁ÷ò\993l\89\8aÔ\eÞ\v\15pP{hE\13$Ô ¼\90\ 2\15Æ\14\ 5\9fg\9aXWvÁjÚz\ 2\1f\1c\84e½ë"ÃYU@¹ö\94«`·ßo\16d\13£\16îÔ¯µÜÔ\99ñÆÑa\ràå^\1f\19où[4\88n\16É\1dXâÈ?±õ\94\16ÒÌÑ×é\81ëÝJàçEB\7fü}ë;0ßÀ·8U"j\9es£F³CGT0¾'àÏEµµÖm¢Þ\9b\e\89ò]K\8fI]­¼`OÅÐê#\8f)Þ×Q)K\99çþv~\10ëR/\1e
+sW\ fÓ\96\1f»0\í\8f\9fÍ\9aÃT¯\1e¦¦\11\90M)\9cz\92\17ä¡ò2\85ºÀ!¥B\16º|\9e\ 3¡§À0jÖü`\ 4\fövíó\9dÀÀáÍ\88¸áó\85\16\f\ 6k
+Ð=1ÐÌ\98\80p|íÞ{\bùÓá_Ïókm\8cáõ^þËqhÍó\1aù\ 3-ùpCo\7fôÂâ\9cÞ²×SºÙ»\9bXwÝÚK÷\0x\94\ɤrb\9aK\8c­nÞTr2/`1ô~\15Èø\ 1\ e¦k3ë}\83|\13\bÖ\87\vÀmez\0O\9a®   ²G5 \88C6Þ<÷J²&'\8c¹&\89üø\13Â\8f7] \1e\8e¢\18Ãý(Ì=÷\97\9f?\Ò­Ñ\ fðTú¨\13ï\14\10bÐ[;,o\8f\ e\90¾é;À`Ü\8dÎñ=\ 2Ûú\9c\ 2ê寣ÿ\0R0ƨendstream
+endobj
+806 0 obj
+1365
+endobj
+807 0 obj<</Type/Page/Parent 794 0 R/Contents 808 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+808 0 obj<</Length 809 0 R/Filter/FlateDecode>>stream
+x\ 1­VaOãF\10ýί\98\1a$â$&$!\1f\1dwÒIwÐ6nQÕôÃÆ^'Kì]\9fw\räß÷Í®]B\ 2ôC\v\ 2\1cv=óÞÌ{³ûídDC|\8fh\1aÓù\84Òòä}r2ø4¦Ñ\88\92\1c+\93Ù\94\92\8c\86Ñp8¤$í%\86¶ª(H9²Rg$ÂG«ÖZ\14ä\f¹\8d¤ª6©´VZ:Mî\10î¢\r×#]®²ð¿.E\8f\ 4Â\1cì³ÇÛ"Þ2¤~<\89Æ@Ô»¾I>ÎésN;ÓPc¥O¼øý×1Y·+$)Í\10wÖÉ\92\97\8d¥ØQ¡¶Øm¨0fKÂñjH\8f:´¬û£ó(æ,òQ\94U!íÀÞ×ã¾u¢vMuHÀ¦µª\10ÇP)\10z!Ê\95 \1cé\95ö\ 5A\8e\0Äsø\98\9c \9a49\9fD\13\1aϦx\8eñSKÊCñ/i\ 4\86¾øÃ8\9a=+ÿ(\9aF´p²¢É\9c\92\9aÉX§ôÚ³·\eQ£æâ^¨B¬P\ 3£\99tMhU}/ë#\961÷¶÷}[ýQ×%T?-\94Ô\8eú_ÚµónÍ\aÜ\18ë´(Û²u\9dÜkÎ\1fè\89Ý\98¦Èh-\1d­D\8aJ{¬dr¬\1cã\f@\ 3Ψkkfô\8f¾?\9a¬)¥Û0SeQ×ÔÔµL]±\ 35t¤\13G׶kãX\10¾¹Øϯ\9a\8cR¡I\14ÖÐJ²b2î\98\95\92\1exc\v\8a\0íy\ 5\rôQÓ\17¡¿
+-Öx\fµ±´ìÙ&Ý\90°­2»ä·ùízyÚAêôÚ*5Ý\18\ 3±"}M\85¼\97\ 5\10¤M­Ü.¨\94ÕÌ"Í\15\\11(\ 4=Õò[#­C{©\12Ö>\98:\ 3\8fÜ\0.\94öÀ\9ed-p\94\ 3<\81YD´\0W,¿`¶@éP×%êU\812!\veÒAV6\ 2mÆè\8b\89ÿ§>=»©MÞ\15òA¡æ\8d{\ 6ww\80LdY§]S9\ 5¹ö\7fû¡\e"©)\ 1 C`-#J6è£g©\rè\9azKøè6¤\8dî\87
+\ 5ñØå)gi]6¾¸Ä¸xÛeãø\ 2\1fr£hÖºl\1a\\96\1a­!7\ 6ë\93r\15\e­\1e[-\84Âí\8d\8f\7f5VxãÉU\83\ 1\eµóÕ@0\17\95¾n°dW©T\14ÐÿSCãΣû¡B¢Î¢=T\8eM   \ 3ð{ìa6$?sn8ABOÜ_¥1ì\8a\ 2&  \11\9eFøK³\19íédõ\ f\8a\979ôà_\8e\88aÑùEhv±çëSoĽ\84Üà\0dWz\8faWá\1e0DèI~È.W\ 5k\ 5s\91k\10\æIªpNÜ5 éã\vús\83\91bÿbÿyé!U\b×eÙ\83øJ¾C\8f\7f\82\13\83BF``\99øâBÀ+\1c\rÊ\1fx\1e_aÖà\17Ú\80Õ¼\ 6a.~h\92ÛUr~\ 4©\9b'oLíÁÀç\19øx\1c 5C<\8bqª½m\86x<óçëÓ\89?\8a.[3Ì\8eÌ\90צ\84ïn\16gÄc\ f¿\95¾|ô\7f®\93\8fñö\8c1p5'þ4ëÝ,\ 6ñ\19I\97FQôÌA\9dLù$ñG\13w²4\8döÎË\94ÝbþÈõëEù0_.o?__ÝÜ.\96Ë\9f\ eÏ5\8d£\88o
\9c\96ø
\82å\11\9eá·ö\8d}\1cíu\83\91T5\ e\80ÿ\ 3CQ¹Ñ\9c\8eqTÆ\14ÏÌ¿§Æ®õo³ô(q~\14Ò+?\bè\ 5F\1fd!Wµpò\8c [\7f\99Ã4\10´jÖ¸\8cT¦vßíig\82\99ø¢tfíÔ\19\11_#qKÜ»..Þ}}ÿ\8e~®Í\1d\FW&mJÜ+\ 4\e\8e\83C\12üV?¼ÖûÏ·\9bñl\18]âÖ\8a[͸\ 5ÿËÉß°\9c6\82endstream
+endobj
+809 0 obj
+1189
+endobj
+810 0 obj<</Type/Page/Parent 794 0 R/Contents 811 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+811 0 obj<</Length 812 0 R/Filter/FlateDecode>>stream
+x\ 1\8dWÛnÛ8\10}ÏW\fò\12\17pT_â\
+,\16Îma qÓÚ\vc\81¼P\12m³¡HW¤âøï{\86\94\12GmÑE\90À\91\993gÎÐß\ fúÔÃO\9fÎ\ 64<¥¬8¸\9c\1f|¼½ þ       Í\97xsz\8e\ f\92^¯Gó¬ÓOú½\84\16kái²¤ùZ\99\95£kk\8e<-lùô÷\87ù7ì?¡~?î?\1e\9ca\7f\ak\8dõ¼\9a¶XæH\98\9cv¶"çEéÉ[â\97Ot¸][Ú\96ÖKâ'\8e6JK²Kò¥pëC<\93\86&äªÕJ:\1fNÈ-\ e\91\e\1a\90X   eè±\83³\19F\8f\8eûÃdÀáÃ\9bÇ\ fä\95ÖaS&tA¹Ý\9a¤^98M8ÑÎ\9c\ 30°B­Ö\9eJ)r\ eJKÆq=\19ÿ3ý<\9bÌ\12ÿâC
\8anÇ_\12f\83·\89R\ 2\ e\87q¾Ê\9e"`_îÂ!\85P\9a
+ØmÙ\ 2iäÖ­J[m\90\82¶ö\89\90\f\9fÿõf|}\7fCK[R.=\8ep\8f\1f\12\9a\89"\15´\16\8eR   È $ˤsËJë\1dv\82W­eN¨\93_ÛÊ\81\13Ç<:å¥k\ 5FEt¾U¹ì\92³T\88]\8a¤\9c-¤5\92¤v2\84Y«ÀwI\9bÒ¦Z\16!\7f\8eo\9fe\99a5)\9fÐ\7fà ³\95Î\89\84Æi\15vs\12\8bÅ¢\15\95\91pá]&\f¥\ 2\)ç*\19\ eÇ \1eç\8a\vݮҢ©ÒR½\84ã\eL\ fw7ãÙ\r9 y\ 1\11'AÕ&\17H:\8a\f\99å6«
+i¼ðʲ\À«³U\99I\0Ï%T\ 2Ø\9e\ 5\ e\14-ÌF¢î\eY:lÜr\91\97
+\81@\f\94,\13â\r\ 3ô\v\8d\ 6gÐÔÉù\19>\ fð\ve,Ûíur1LN\7fn°~B×J¬\8cu,\97\87Hx(Û¯{\8b\95·\16Ï(A,|L­&\ 5\993]+de\ 3¾\8f·èøÐ\9f\9d÷\92fðo\ 1:\811\96®\8dyrU\9aê\87\8aÔ\89\9e\8cFÉù\9f\12\1dp#¶|d\0\19gv#irý»ä.w\10ýRTÚ×\8a\87 à\1e\94j\ 1»põî\84\9dÈ¡âÂ8\16^hò\12%2èqt\88}Á¦¢B×\ 5Q\ 6ªÞ\9dѪóä:¡¦£a\ 1ÜR[a\82O± \ 5ÌÌ\1c¿\87\10IæB\ 4a\90\91è>0×4À\91\91>UÖEÌGä\8a4ɬY¶"Û\r«\12ÑÇM\12\ fW.\1eÙ\9c\18Ð×\1d\ 2\89KïY$l\ fÀ\0\16\10\94=\16\96\ 4©³íByèOH>\7f%Ìí×o8:ûcý\86\83\81aBWk\e\80 To3«éN>Ký^Mpã8
+æX8»¿d!ÅÅì!\850(´\12ZfÞáÔª,Ñ¡ ½®º«6\e[zG£.Á»ÙÙ®>\7f½é\86¿\ fwÿκt7\9eÞ\8f§ýn\8bÐø\18Ã\ 1ÙOçý¶\93\ 4¿\82\ 1e\9c\87¤-÷}!^TQ\15o\bÁh\r\80\1aS\8eɽöÑ~5÷;\88Ç\ 6\8bS¾ª\18\ 5b\1cõô@4®ØOF\93òtã\922­Ï\ 2ÿ\14â\9b-\95ß½\9ax;\93\89!«sY\12ìØACÁHã\94`UÂÖ£E,mU{\96\91<1DìpÖ)SÊdFÄZ\15*\9a$#\ 4RfÝÛ\16¿ArA\92\85u\±0\8eàË2\87\ 2CzÆn±×9̽'\89\15á0Æ\14u½ßYa\19Þ\9b¦\9c\11\8a5z×\8a[JLSÃÊ\17ù3zS¬`N\18pM\ e\91W f\16Ã\1c°©Ë*\980\1a\9aý{±\¬Pbédù\fw\bLg\ 2\90\8dp\ e=\94·'e\98È(X£Ý.\ 4#ù<\ 2§ ¾Ñ Õ\9f\ 6\98ò¡Ú\18\11P0æ$\ 2À¾ÐÛ¯!@\18 r#\9b\1cé´ÒDý\8b.q\12\19çʬí\99Êas
+øEÇýuHÑ?X¥!ç\10¯­\14\96#\93·Ç\1crn5
+ó×\88\9e)$mÙe g#
+ä°U~]ÇÐ
+½ê0Iåê\13ûZ\16\1e´\eqQ\9bñt\8e:\95\84\7f/F|\91©\13n.`3\19/\fMG=v°
+pM%\984T\99Ñ\14ÌX}\ej§7Åíñ\13ÍßzvS*x÷÷JV\|ö\91\86Jn\8a0Âß4\19Ý5úöüêáãä\81P^nÃf\ e5ÅoU** È*¡[`\f\ 5¨Å¦âíPK\1eÒSL\ 2Y©ö¹|\8f`@)ö\84\8b#dö+àÖ´"\87@n\87[p\ 1ï¬\9b\8e\95]\15"E¿\89¨õ´Z\ 5ªê©=\1cýævr^_\ eú§g       \7f1À½\7fopÏÆ÷\97cvúo°jÜü÷îR\fë8î:\8eÛþ××\85\93ó^r\81¯\1a¸}\8fø\bàûrð\ 3\ 2ìñrendstream
+endobj
+812 0 obj
+1505
+endobj
+813 0 obj<</Type/Page/Parent 794 0 R/Contents 814 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+814 0 obj<</Length 815 0 R/Filter/FlateDecode>>stream
+x\ 1\95WÛnÛ8\10}ÏW\fò²)\90hm'q\92\87>äV Ø6é&n»\ 5\82.h\89ªÙJ¢JRqõ÷{fH9®ÒÅbQ\14P,q.gÎ\99\19\99Ò\ 4ÿ¦t2£Ã9åõÎÅbç÷Wg4=¢E\897óS<\144É&\93   -ò½i6\9ddG\19½s¦    ¦ùB¥³5½¿yý\17\ 5K\8a.+£\9b@ï._,¾ÂÐ\11M§ÑÐÁì\ 4\86ö\16\96:¯ñaË\ 6´£°R\81\8c'õ¨L¥\96\95¦G£ðÞ×Ë\83¥òº òÚ=âKñ¤¨kÌ\ fZY\1f¨·\1d­MUQ£ñ\19Üç¶n\r,\84\95\13:\98\1ef3v\vky\8c¬uö\8bSuF\9fp\1a\1f6\9bÓ¦ñAÁ\1a~$\9f\ 6¢]\1c\94Hw3ºÓ
+^ð\92?t]\1e\8cmðÌ\91Ê'TZGµucß\85\ eHÍg\94b\9aÍ3Æto±Ò\ eÆ\90\19ºûO÷\1fÈ\87\1e     $÷\82Maµ§ºËW\14#S5'ÈÐç\88\16\89\ fþ3ßûÇ\8c^\aàÐÀeã·#õ\19»¿^ì \94t|v\88\18\8eNOð<Ã\7fÄQ\8e+\7f||\96Í\9f×þ8£76ÿ\ 6ÿÿRáÛ\ 6åuZÑze\10´·µ\ e¦F\ e¹Bå=\ 5g;.3\12¯¢!\89\fÅú\19\18Ø °¶\14ú\16§l9|\9dì\ e5_j¢V;`_\ 3\8beÏ@¾½H\9cÉ\b Si\1cØ\ 2\7f»NçÖ\15\83¥Ý\11IbÀ\0Õ®Q\14J\84\ 1¯8NüàTóEs$Ë> $\94^\91mÁ \12¤ËH|yxh
+vÆLÙ-tÓ\83\13\85ö»ø\ 1Lç¬|«sS\1a]<ó\ f[J¬\11[`Ûclî~Ê\0
+:Ì=dQ@#ïY\1c8
+½ôD\85)Kp\fz\14íü\9c}:ñÑ4\ 5òÍè\83v\1e\8cö\84\fG\81Ý«z©h©\ 1²\ 6_f´R\8f(\8eC
+,;\164gÛ¨`ð;\95y\13ª\87½\87\17Q« eе°\95¿6u[é\9a\83\82\14Q9\90O\8a2Teä{©ÃZ\ 3\97§\b4±:\88{±B¾¹\82\8e-\ 4\v:\94]UõÐ\80\83á@E\87à,\80\ 2\82\91d$\86\97\8d¡^¥ÊÃÈ\7f¬\1a%\98\ 6RÀ¥ð$\ 2\90ø!¼H,éZö:û|8#t\85ÙçùÑ>\15\1a\ 5-X¹h\1c\fXb\18ÝÞK<#ÏÒè\92Dp\ 29ù®m­\v\11
+/\9eØÕ4£{à+Tg0Zë½a©!\92\ 4\a\eA\95|É:\89¼vú{§ý8mµ´(e4
+\r¡îÌ\\90\8dé\8c§M=rí÷áÀÆwð\84
+T\ 6\15/\88\8f\8dù\e\8bÇ\1cR\90Iô²a\84\1f¸0d-\1d½ÒA#nðTðcæ@\83\8c\9fp¾ê\19Q\ 1\8b"ÕÐ\ 3KR#4Y³©6R.©ëV\11\12\f ÿJµ¨\13\ 4l©äy\809\85.\ 4wQÿ\93\ 3Fe\9fb&+¤\813hÈ\1c¼ IÐS3ò\9e,\88<\87 ÏaÛ®\93:ÀÈ@b è\99òhf\92\16@_«þ\19\92Ð_\1e\0ÌvÃ#¿²]UP¾ÒhY<\908Y\10&j\97X\ 5=\8b\0Ø\ 3ÿµ3@\85ç\bS2¶\9e\fM\ 4\aC\a93îk\13Vãl\0\ 6!¤-¥¯­\83\e\81\81Óà\14ÐFÅI\8d\ fA&ô`§}ì\8bäÚ<ãÈ
+\99W¢&\9e\81UÍs]U°Í\1d­Ñ`\97\1fùW\10¼Ls\80&\r\95uÁ«\ 2`Þ¢ \82¯Õ7Ð1\8e\19És\ 3\ 5cÀÇ\a\14 h\81\99ÌÓ¤1~ä\18L\ 52è¸ì      ¥Ã\1aqÑC×¥ê*t\91H   \91*;Þ\f¸äyÍÛ\86þÑV&7R8ÿ\r1³)\19[1¥}ZvPpÉÛÍÈ»×\ 1\v\89\94}\93ÓKêãl\81i(_Ö¡§¬#\ f\86]\ 1\13\ 5þ\7fÁ\80g«  ïF\FÙL
+ãe/C\90Q\ 1\e<±n%qb\ 6°\97ÝáÕKtc¬LÒ\9bQ]L\bteácÀê\ 6r¬P7æ\82\1a7\9eÂ6¿\85¡ÓmÒ\ 4\91ã\v\19ûHôaÏóJÄL(°\81ú\87\17`R\93\84\98coLÅ(¥\ e¢^\1d:× £`\18\13#\8cY\v"}\ 2ù«\rͤ[\bt 8\12EN·\7f\8c\15¹\80,ÒüÏ+\ 5ªo--8ÀAl/\ 4Òó\11h¤0jË,\0æ-\13\ 4M\1aÅ\12Æ [Þ\ 4x%áE\ 3|\19Å\8c\ 5S»Ú`ïÂ\ 1ì\18\9b\8dIå¬\9f¡'@\93HήÁ9\f>\10V5Úv>I\1c3\10\83EV\ e:\1f&\13KWyi$#\9fW×7\9fþ¾¹½¹Þ'y¼»>¿J\8f\1fï^/®±E¸øæüÍ\eÉ4\8d\10¡\94l@\98Ƽ°#Ó¥©LH{ÒÈOÚq£©W\97\17"Øø×\15Æ&\7f\9dvÚéì8;ý\8f\9dö\8c/\ 3£ËÌ<£·À\9c«ú\1e7\8d\ 6ûµÈþ\17\97\17\8c\15¾sÈöó´\8f\80ÜñÔ0Öß]r3ae£âÒÁÓ\r\ 6\7fcðsKR`¶ÅN\89b1+\ 6\13Pn;ÞJmËTÀzy¯ã\9a\85}?Ã\92YòÄ¥Va%å>?Ü2¶\109\9abµÿÕ\92\7f\9aneÓùIÆW?Üì¶P¹?\7f{q\8e\v\9eýÊûÓ\95Í;ÞÖ\84\90lü \9e:\88Çþß\85ðèt\92\9dáV\89ÛÏ<\ 5úçÎ?\11\11´Lendstream
+endobj
+815 0 obj
+1723
+endobj
+816 0 obj<</Type/Page/Parent 794 0 R/Contents 817 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+817 0 obj<</Length 818 0 R/Filter/FlateDecode>>stream
+x\ 1\95VMoÛF\10½ûW\f|i\ 2Ä\94\92\1d \aÅ\96\13\ 1¶ä\9aLÓ éaE.Å­É]v\97´¢\7fß7KÒqØ @að´³óñæ½\99ýûdBcüLh\11ÒtNIyò>>YÅ'ãàâ\82¾ÿ±{|\18S¸X\ 4!Í.\16ø\7f6\vfd%e|\ 3\87póü\aæ£\9bK
\14gð>_\P\9cús|\93¼ºÊEUKKa@×JìµqJïéh\1aKN\94;ANÚ'i_Ç\7f\9d°\9bɬus6\9d z\9c¾
+\83I@k][\936I­\8cn-g4\99t\96á\82íâ\9ÊT!)1º\16J;\12T(W\93ɨ\96®v\1c\94\12¡©\9263¶¤ÚÐ\93(T*jÙ&\14½H\bAk\12\853¸\\14íåC.jªsÉ)\8cél2mS,Ô£,\8epÝ8é£å\92*kv\85,     I©\8cTM\99Pð"ô\91\8cî­`îjY9Äò6\95pN¨(8
+NÛ¼ñ¿f\17ðÅnÅ®8\ e28\18ûÈ°fJË ;\vçè\19\80ù\82ª]n\9a"¥ÔÐòö\96\9eß\90Òþ\93±)Z\ 4«\83F.\94\8b'XX%SÆ(\11VfMÁ\15æÆpV9
+\ 30\ 5\80³]\8e\1cõ\ f\12KD%vªPµB]h³ÊØi\17U
+[¨ÞÃ0m ÂýrR§TJ\0\ 4\84 Í\91+=\ 5\1e©\91NÿR\13W\7f
+\8bÔßðÉk\ 3ÄMQ\98\ 3×ÀÔ`(\19¾D¦\r\98ì1E\80\1dP|}\87æ4¶²ÊqÆ\19`Q`/®â\96m\93ñ9{\ 1\8dé|<\ 5Þ­\BH¦WËKRÏæ\97Áü\au\84\ 1t±t®)+æ¶ãtF7ÿ"÷Z{R0\93ûÞ!\1f°¥\ 14\f\93/ZÐK\ 2£oE\81Ô߯?D«\87ßV\ f\1e!A÷WýÉòêv½ÚÄ´3u\8e\9e\f `T÷Ö4\15Å«(þð°ýtÏÜð\92è"s2p\atm£5·å tj\ e\10¢±¾-Þ\81Ã×\88 \80I"u\r\81VP\81¯e\10³T\895ÎdPYR\8dT\ 5y\88ä\11\b\15`\9a\16µz\82ÐÞ´\1d@àR\1c¹M}ðÏ]ðËsBøþ\13
+üúê3\8a\81\18g\83¨\91\9f@__\ f)\18·:î\18\83*\9d*U!¬¯\ e\981u\8f\15\88\8dZ\120Y×nèâG¼¸S\8fÚ\1c|\17µ@ïp\13Ì\16O`6d\rÆå\10\eëÃ\93Ì\95»\0Ó,cÜ\ f
+Sá\19wN¦5u]7\a5\9dÖeu\1aÐ\17\91\14øû/»\8b<´hwä\13n\1c·²\15\8cÿd¨\8fý\96\1d\8fnÆtÉãvBgáy;Wþ@\84?û¨Ø\1e<kÐÚ²ä\16¿\83ÞÊÊXa\8f~(;\1aZV\ 2\94xG#x\19\1eY)RLI\f\94wt\94\ 3M\9cq
+óvðÆ\1fWÑÊÓ3¢e\14}º[\11x\1e­·\e¬\9b1¤¶} Ûe\fêoo\bÆ\14-ïÞ/)ú´\8eW\ 1E[Ø_mïî\96\9bë¨Ï¡\eéÑÇíç\r]¯¯i³\8diõû:\8ai½¡Õò\ 1\92yè£ô·úQ{_H\81ùX\81\96¢®\81\ 3Ó\r\13\94Á\95Ö\82\94¥tNìA\19¦\ 2Ë\ 1\8cöÓ\9f\17Ã\ f&8\ 5~ØZ5/\9d\96\ e\9e§,·\9dD\97\ 6)7:ÃÄÖ)`cçÝ$Ë\94ÅÜKr\99<>{¢õ=yöYéLÑø,á41\16\19Õ¸ïdMM\15\90Ü¿¥;\ 1\9e`\10¶so\10s$ëdä½<y¢¶\v¸2
+RàÂ}\94vÁw\85 ·¼I°\89ä7,ç¡^\96X¸ØJíì\87\11\ fb?Û®7Q÷R \91$@Ñ\8bpXEÕ6àE¹\f=Ê©\81W{\85\91\1cTÑS½Í\1eå4\ 5Ò\87\bOS¼"°3¾1\13µ\81\9eb¸Ûñ&9 Ç¼\e;`\ 1\1f\98;åMS   ¼/z¿§\1c¯[\13\93é\1c¼üï51\19\87^Nß\1fQa0El~Ät©Oñ¶â·Ñ\94_G|@\13>ùùê`\fRŽ5\90#ê:ä*É[\96à«n£õÙz\14ÞðPõ¼eEójýIY\9e¸ØÃ\1dS\a¨>3\9a;\8f\aLKán¢ñ#-Sûƶ#Ù¿Û\0`&\0ýÑ\93btsñý\897\rýÞü?\8fÉÙÅ8¸Ä{\140-:ü\7f\aÀtu\8fendstream
+endobj
+818 0 obj
+1398
+endobj
+819 0 obj<</Type/Page/Parent 794 0 R/Contents 820 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+820 0 obj<</Length 821 0 R/Filter/FlateDecode>>stream
+x\ 1½WMOãH\10½ó+J¾lF\ 2\87\84\0a¤9\0ì\90X\96\1d¢\95FâÒ¶ÛI\ f¶ÛÓm\93äßï«j\9b\ 433Ç%"\90¸]\1f¯ê½*ÿ8\98Ð1^\13:\9fÒÉ\19¥åÁÕâàfqp\1cÏç´{sK|8Æ\89xF³ù9þ\9dNã99M9\8eâþÉ\14ïáÊÉI|\16®À\14.Âþë\eì\8c¿Ìp\9c\16\9eÍÏi\91ÉõcZ¤£{Ûè\8fôͶ\8e|\99Ä©­rÊM¡©T[J4\156U\8dÎÈT\1féÃâûÁø\v»f[£±nÒðUo~D\7f»\9f\9d¤qëÝ\98M\15c¯ÊD\8d\v\93ð­\926\82:?\8b§}\96ÈJ\92D*ã/\174\99u\81Ϧ@b?ôi|\12OcZhßÐôm Çt4å<G_Û\8a\9a\95¦Ô\96¥ª2\8ajS-éêöÏÇ\9b¯ÿÞ|\8d(w¶\94\13\ f×´;py}w{s¿Ø»ÜVfC\89ÝÄt\9bÓÖ¶\94Ùê\8f\86½Â×\ 4\81°·¥nHÑ\8b*L\86\1c|m+¯ÙxÅw8Z\?\8co\1fÈÛ¼Y+äh<U¶AlÎé´)¶\80Î7ª(t\16\vÖ\9c\ 5\97\1f\96¹L°¤\1añ½6EA\95FY\1aK¸Å±Û(³\9ej¤S7\11­M\95Ù5Ù\90=rÃA\a,8ý¸\8bº·Ý%\14\82/µ÷j©É«-#\15­,Ðå(sÛVYD\16}bJS(·\97ØçûÇ]V8Á\9d1æ;}è¥\90è\0¬]Ú^7m\r`\eF¤¶Þ\9b\ 4\rØE,ý\82|\9a\95m\ebOºj\9cÑ0\rO\[¯Ý\8bvR½´0¸zH     \8eÞ\92ò¾-uW­\81÷\95zá®\10äßYtºT\0\10FmÎ.¸\8aè2ÿ®,\97@f\85cN+\ f¬×«­ L¥Y®\0\992\ 5§d¤c\1c   \96ø\8cBT\fnn\9c^£Þô
+^ÌLD²{åuºP\e\ eb\90\80k\v`\0\90
+4\9d     u^[÷\8cvh\fbÁW?Z\ 4\8dÿ\ f©Ön¥jOÉ\96àÏ¢;\96¤Ò\14µ\ e\ 4P]\1e¾M*\98{\1aÁÀ\9d©ZvÌ    ø\81s4¿¦\17£\ 4\7fSçk\95\95Ü{K§Êøé\ 3\9fî¨=;½Ø  Ø/¨=\9b\9eB¿\86Ô>é¨}ÂÖö%ìWÔ\86~\85úÓÑÝ>Å;\12ì\18Ì\18{´S\91Qhú ÉQjõ\82\8a)n>¿\ 2A\87Y'*}~×\ 2oØ£\9dCSö\1c\82\986è#\ 6\14\94ºR\19ÕèMT\v\84Â\15\91\a\86/\81ï-Ikj4¼45
+Ùµé \ 6BM\1fê\19\1d\ 6¦zÊtµ\15\96FA\86Z°ÃGT\18\14\f-!:Ô\vý!³Y¾Yr§pG\80äÂBf¼\18\88éz¥Óç\81ïu§D\8eÞÝÙzI\92ùR+WFÂËF\97µuÊ\19¤\arYpOUÛ>fiÉA
+HHü\ f\1cwé îÈTï2ô¿\95\bõ¨ ´Ì\ e§s\98\ 2üoeZÊT&Y¯)<\ 4\19
+\fÂ\8e´¯úÿªÕd\98\7f\838\ 1w\93\85iú¾À:3<REÎeÖ¾\96¸ØþܾB\9d)S@N\88^QÊE       \16Øý°S»`\ f\83(îÎr~\88,1Ö\1fy\8fq`1:\98à\15ìßÝ>.nîy\9e`ÖteÄaþLG*ú=¶\1eZ\12\80\15Õ\11íc|%{\815¨t\a<\7f\ fùíë!Y#\11L\1dO\11ø\89)\13Îï\rË\ 1Ä\89æFk«\1càÊ
+t½ø2\18:¯TJtªPg\19\ 1B«¾iú}@x\81>U¥n@\14\99§¨¿0Cõ\93nà8W\18Òâ£Ð¥L&É\ 6Do\f.È<nkÖ\13\10\r£ü²ð¶+\98\90\8dw,Ãê\ f\9dy\1aõd|ú \ 3Ío¡\19\e\12!ñb|à=\1a0\8b\99È`¾\80\85\0`¨¤\8d\95   ¹\86\84ð(ÇÆEÏZc\00:\85\85øc\17Â>ö,QxÒ\e(à°À\v¹\9b\17\15EU[&a\1c\86Q\17¦ïzeÒ\95d)ëb¨-\8bJ¦¡ÄP\1c@ø¶/ é\88µä¥\82K\80v¶ù A$\83\8a¡P¶\80Lð aIµ\b#\fcÀÔ\8f°\1e»\80\17|d{¼¦^ðâ8Á\ eu\1av(ê~ÂbÂBI\9fèòî®÷\8fÝ\9bW­·ÇD\9bpn³ÙÄ{¿ãíö\17·%X\1c\10=º)W\18°H\0\9a÷\89¾\85\9bcG\1c\19¯½py\eÆ·J \8c\87\10\9c êªJ5\86\ 1¦¶Æ\88(U\86Õ\1fP°p\ ePEßr\eÈÞ ÚÆ\96X\ 1°kÃqãTå\v&46\ 5 Û\aÝ-¬\85µ5O5R\99ªÑ4ø\9bA\11=M¦xâÀk\82\82\94RÈ*ÀÔâ¶OWªÂ\9a\18\8aŵfîü_ÐKx¡Ìóîidrv\16Oðt3\91Mbôxù×Õ%=8û\1dd Ï6Å"\bb±öó}G\93³s\1c?:\9fâ!(\e½{\92\98Í\8fã\v<-áÚ\9cÏc\99ùçà?,;Z/endstream
+endobj
+821 0 obj
+1601
+endobj
+822 0 obj<</Type/Page/Parent 794 0 R/Contents 823 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+823 0 obj<</Length 824 0 R/Filter/FlateDecode>>stream
+x\ 1\8dWÛN\eI\10}ç+jy\81¬`ð\r\eï\e·¬\90\12â\rÖJ+!¡\9e\99¶Ý¡§ÛéîÁñßï©î\19Û\98\84]EAÁ\9e©Ë9§NU¾\1f\83?]\1aõ¨?¤¢:¸\9a\1e\9c}\1cP·KÓ\19¾\19^\8chZR'ët:4-\8eo,Ý\7f\99Rí%\85\85¤Ã\\99\92\94 ÒÍD!=Y£×\87´\14NT\12\1fÒj!\9d¤µ­©\12kZ)¿ `7¯{Qå\ 2O{¿²®¤b!Ì\~\98~;èÐi·\9fõ\90ú\18q\95Va}B¶\r竼ÐJ\9a\10\83\1a)K\ e*
+\14àIÛBhòÒ½¨BÒ\f/\19ÔBNz«ë ¬á8üqz\90?¯]±\9fµ°ÆÈ\82\1f÷\19=\1eßÛ ÿø\7f\1d\97
+\14W Ýؼ
+è[k26\90ÐÚ®h'8\17\ e ÷zÖÖ.sQ<\93(K\14èS\80\1cí¨\1fhÖ[k\1e?dÍK½a6` .\91\0    \11½ªÐe!\98$;ãðÌÖÊ\92tÎ:OÊÓB¼(3G °´à\7f í¤(×äjcøw\10IKë\ 2uûã\13òu± áé\81ùÚ«õñX\ 1\1aP\ 2\1døÍû3g+èB\86²\rýø\81\81ßfÔêYÒ\8d\9a« ô\91§\89\b\v\88à\19p_/$Z\87f\\8a\90\ 1¯\19Z×û0å\12<¢5·æ\92\81¤\ f\ 2%ÇZP­ RH@qB  \10\86Ä\8b\aÌ\a\ 6fæj\1f\9c`\92\7f{\83eIk ¾\1aL\97Ö{\95kÙ Êò\99   ¥kdG éíÃ\94úÜ>\187Q&¾ÎÑ<ôéA"Fä\8c\9bÏ\9d\15e!<â&^÷ ô2\ 4t\82Ê\11W\99Â:\a\rf4ÑR\80Â"â\12\16\14\88Ï\80\8fî&tÙ\bæ\8c®6ɶ\9f=¤ª>£ª÷R7\89cá1]ä\1d¢ñ\10W¬I¯YÎ<wQ\*5­í<3U\1e©\8aê¼\9d\1eÀ9è¼ßÅÏÁÅ\b?{ø\8bîfÉhÆÔ\85vÙh\ 6ãQ\9c÷­Õô²~6Èh*\81×\80ËÝõ¥Ó\1eûÒñ×:efÍ3Ì\87H\8fáy®\97tzEWw\7f>Ü~ýûö+===\~¾º|z:Ìè\1f\98\91_ØZ\974\a\80\81k'\rt²òöàI\0°©`Àx2÷\87ï.¾F¥5G1¤!T\12'bÃ#0S\ 6
+ÕZ\96¿\12¹Ja0\85¬Ù8D<Ó2\9a_Ëü^mIä»ÃÇHhå\83\8c£Ì~[.Ûi\1eíWþÅ@YÉ2\96ÎBã\98[\ fT 2@Ê5ó\10«j\89o`¹q\ \ 3\11\e\15\98áøÔÆñy\ 5DL[J4\ 2´9[O\a\9dèD\f?F"®\13\98\16\(H\8c¨5ò\94ß$_8µdHQ\ f\b`\18ã;5_\84í¦ÁРk\ 6.>ºõ\9f]!ö\87,Á÷\85Øï§ÅóZ\88ç\8d\10Ï\7f\948!É\85¤ÇÎ\9b=züJ\96\97×\9fînï§tôûÑÛh\8d\99ÿD¤\93k¿+Ô¨Bz«»\b\8eÞÎÂ\8a½¤¡dr\rj\99·\8d\ e÷¤´\99ôlôTYÆO0\194\87yr\8e¸UÓz!\ 4^9kæYì\eË»ÝI(¯í¶´2æ\8e\8bøEÒ\8b\12tsÿÀ±Ìæ x=\88;­4\ e#r\8bW\ 3,a\97Ö^o\8c\15ø>­Ýñy6|uÊ°¿\f\eZ\87o\89ø©¿ü\9aÖ\92\12:e½\a\85Kd\ 5}\83\93vk\ 1J\9cAø,Ézéä\8b²5~aßËkì\8aíÃð\ 4\86Mìl\92t?\10®\ eQk¼Ðºþ\1e³\8d½etI¦®r¸\18¨»\97!WÖ\9fM¯'\0~a}ØLo»\\1a£\ 4iKk \ 2¡\ 3¬s¾H§@º¿ \88B\ 4¾\10´ÞKÛè#½îq\1f6<",\16u\84\ 3=%¯ÂæßQ½\97¸.Yk¸\ f­WA\81÷(¹ïµt¸SbA^\1eR\85ûHÌ¥ßË\1c\rÀKø5®ÁØZkB;Ú\8c
+sÎ)\ 4yU)-\1cg`@\e|_Ó\12\9dé4(\9bááµÂ{<\9d0ÿÁ\bôï" 
\8b
+\ e[ +>\86\95¯2ºcK\83x¢Kò\ 46\9cÈ\1fKé (\9cÁ\9bs|{\89\1f\92]ÆkW\99=dp\1e¥\8b
+­Á»k°¶fk\9d©9ß3Èàv|æd+©è°\10\ 6\1f5iÒÏ>^4\ e×\85³vi8ꤣ=n[\9a\r\a\fÝØ¢Þì\ e®æ4=~:êá?\15åñ\9bM?¸èdc\1c\ 5ønÌÏã\8eøëà_=\e\140endstream
+endobj
+824 0 obj
+1469
+endobj
+825 0 obj<</Type/Page/Parent 794 0 R/Contents 826 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+826 0 obj<</Length 827 0 R/Filter/FlateDecode>>stream
+x\ 1}VaoÛ6\10ý\9e_q00Ìý`9v\1cÛ-º\ 2M\96\ eùÐ6KÜ\ 1\ 3ò\85\92(\8b\8dDj¢dÇÿ~ï(R\96Ýn-\1a¤6É{wïÝ»ûçbF\97ø;£Õ\9c®\96\94\94\177\9b\8bé§\ 5Íf´ÉðÍr½¢MJ\97Ñåå%m\92ñ}F\aÓÖôpKB§de½\935\89Zê_\e2\9a\9a\\92\15%~´±\96\rÿ_ó\rÚ«¢ -eJ\8d¡ÖJwrrC¦j\14ß3xË\1d§¸6"M\84mÞl¾_\Òdv\15Í\81a,Ò´\96ÖòQ\8eÒä\ 2\113÷ûíõ\ 1#\7f\8c\16|i\93\90¶é\0\89E\\1c(\13ª å\93ñXKa_\V=\ 2
+1\91 iÓPbêZ&MDÏãG\99!s\80ÙÜ=mè\8a¿\96ö\1crlvòù\8d\ 3u·¹@\15i9¿\ 2²Åz\85ßçø\87\87³®èoi\ 6È\ôëõÛhyRöyt\15­"Úp"+\ e2äh2g\8eÆ\8fmWþÄ\94%sÓ\1d»öT\8em\19'\85\92º¡éôæþ\8f§»Ç¿î\1e§\9bÏ\ f§Ï\8d\etÙÜ´EJ\]M±$\14®¬\1a°\97\19ÐM\95°voêÔ\1d>KÚ_\r\1c\87£\81+\91\ 5
+\16\ 5\97µ0Û-ÞUÚóÚjõJ±y\ 5aM\1eQ'8Ú\v\13\1d\95M\ e¢\fÀÕgÁÃë\ e7Øsò\98\ fþ\v\r\1f\88\8e\95$Q,/¤P»Bi\19\11Éí»ó2R_dzÈÓi¬¶]?L\9b²¢É·ï&ש\91§õ\85 \836¿@1ïè¾!H´2Öª¸\80¬Ñ\b\95LTvpÐûê\89Âè­«\89û\1cÕ­9\17\12\16\94\14\85ÙÛ\1f öHÁø      ¶3ä=Ò_¬LjéúîT_¾\99¾êD:Þ "Ö>j×ãc:=ó[ßÈ#\0ø0òÒé\99L\r[\85ã§0\ 6\r×u½¬k(«D\83\8b­\f]\1cZ\1f"P\r|å`i¤ôN\14*\85\974Pà\vq\15FÝ{\f\88\19P\809\ 2\a#®ì mÑ÷0\99\82Ø:\17\ 3À(1:\vñ\ 23Ãx±Hû,\aq
+õ"ñ^"À\84e!¿ãªÂC{z¹"¹Ø\ 1R.R³w\8f e,¼\ 3\99Z\ 3ò\9c\82û×É\1el#Ëç7\14·\r¥*åBÁrÊJA\18ÀlÛª2uãz\10¹\96ø\8c\83N\ 6&\89\8cºÎ\9fÀÁCùf\91S1>\19\82«iÔU\92µdG\b¤3µmká\f\19\95SÚÛ\9d»Í\ fb\ 4¤ãùñµ\10 OUP©^ÑÍ°ï\81\8dÂ\11ÎIjx0O\ 2ð5ê\15D\85ÜÉb\14\9a\13º\10\94«m~¦V©M»Í»Ã=°\0äê\88-pé\83À1~\e\11÷µ«¤'\9e\ 5Ò§\19Ñm.\93\17\96\1a{\8fó\9aJÔe\1fÅ¥¿8\86\bQ9·\90S\9f\8eÔI}è\86Û\80\97hºá÷ôù\ 6·Ü!Ôâ¨\82\8cÙv¼\86\8a_w!'óë#\81®\17A\99Æ8Âu\86àÛ\ fnÍåe'    \1eìmͺg§\9fú\99\0\91ÕÄíZµg]?&Ù$pÀÍ¡êÀ\fn岨è\83\7fó=#=ºÅ\98ÅyÆ\98Ò¶©Û\84eeO¦\8btN'
+î#Wy7Ó\990Qº\19\ 1WÎj)\ 1\13\93ÙV\ 2}\8d\9ai\vÚÜ\87\r£\ 1Ô\ eLÈoÐ\17\fèp(Ï\17\18ÿ?\94ç³\85[)\8e»\10\ fåµ\1fÊëÓ×ÙåÝPþÚÍd¬K\fÏ)>Ì\98S¬cÞ\96vJîé\19\7fú\ 1}ú¬\1fÎn\97ê\97©\94÷!\14\88\85S\b\1a¥\ 6SÅMí\11?2¨Å^a,íO\98`\rÄ\ 2Ú\17\84\1eÁ\92\81Ê\8b\1dv$§$\18\186¯~½s;ßO,\93\ f!øÐ\9c\9d\ 3gà3EoÃøT\89gkê\f\1fdk¶òX\ 1®\eh\88d\8a6x\10»7Û¼Ò[T\9aÓTçKVkÛNBlÅ)Å\a\0à=¯p\ 6I\1a\8e\88«\86°\8aÕ¨=ú¿[>°\86`ÃAõ\f<ÁÏÿn\94"\18L\9aÓ1\1aÚô[ëY\15\93Ü\18\98Üñ2\8cû\87\19\90©W\8c\eV4Ã\80ÕØ\ 6X;\87å÷zS\1dXtp\95°½Ü?ôk(PöÊpÛ\10\e(èÄöëH\19¹Å       üsDÜÚ   LlølRMUåg\9f\1fn½©\ 4\93ù\89­w\9e\ 6M±^~¤g§\ 4ýþå\89ýÔõl\b\87-ÂÑ\a´î\8b\93ð'Y\ fìz\98õI\8e ¡¦¢Ì\8dm qöÆÿÊÀ;óôÓÚï¼³Å<\9aÑr¹pÛôøéãç\9b\8fôP\9bï\0H¿\9b¤-±È82:TË\15\8eOVs?æÎVîÅj\11­»\118»ä\vØèÿ¼ø\17Õ|\1aPendstream
+endobj
+827 0 obj
+1527
+endobj
+828 0 obj<</Type/Page/Parent 794 0 R/Contents 829 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+829 0 obj<</Length 830 0 R/Filter/FlateDecode>>stream
+x\ 1\9dWÛnÛF\10}÷W\fô\12\ 5°\19\17ð\83\93Ø\85\81Úum¥AQ\15Á\8a\JLÈ]f\97\94¬¿ï\99YR¢è \ 5\86Dr.;sÎ\99á÷\831\8dð;¦ó      \1d\9fQ\\1c¼\9f\1e¼»=¡ñ\98¦)î\9c]\9cÓ4¡Q4\1a\8dh\1a\ fïRÚØ\9a\16º"E\83̬T\9e%dtµ¶î\e\19\ 1YG\83¹J¨TÞãrBÚ9ë\ 6T-µá\7fäñ\18¥Ù\8bö¤Ê2ß\90ò|}C     |¥0Ç\97·Ó¯\a#:\1a\1fG\13$0\1cøb\1eç\996\15\1dý\ 6WÚ#\81¹]é\88î\f"¹*\8bë\¹C*Ô7D¨\9dæD\91ÉÒú
+qòÜ®\a\94gFSæ)¶Î鸢ÙÐk-9\15\8aÝ,´\9f½mBO΢\13\ e}\9d{{H\89%c+BD\97\r6ª¢TÁ\87|Z·gã:øJU\995äô÷\1a\89Êá\10Ò\18\84äë\95\95\90(Ã\\91×\ e>)«h\9dåyïتªtQ"\86mí©ö\99Y\88½\94\e\92ÖË,^Jgr»Xè\84¬\81\89\14àsf\12»ö¨K¼Äé#ú\vý3\1aÏà        .V/¤\94\84\8a¨8¶5j®_2>\ar\17\9fÏÝÌ%\ 11Ð/\\ fé.#\81\94Ù\81 êUµ\ 3¤\81/u\9c¥\19R\8amQÖ\15\97ÃK¹Ñ$\9d­øÀm-\ 5^>+24\9b\8bV:;Ws`¨ÐÊp¥Ñ\16Æ\18·½ñÒ; \1aQ!O\18iZe\8aª¸\94&d±ö\11}Xê\18ݵ¸\ 4¤¤{¾\m\8c\14\1f\16k\aèjç\ få\94xÐ[RI\82o\ 4\90º\re\82õ^l\ 1c$`\ 4\ 1\90\0£]JÚ\80{6Ä\ 5_ÏÁ¨CÒU\1c\ 58ÞL\ f@A:==\a&O.Îñy\82?\80<\r\8c½¤1ÀÊ\8c=\9d\1cGg{\9c\9dDÇÑeDSæÌ%'Ô%øÑ\84      >|ª\ 3\00!¡ðØi£\ 3\ 3àizù\85føy\7f÷ëóÍÓ\9f7O³Ùôþqßå0 Ì/m\9d'DsÍ-\ 2\86Ñ]>¬ÚÉ\ 2Ú$xêÕ¨±l$¦M\88\91\91\82òÄh\95Oë<ß\fÐwïÁ[è@*\90i½:zü\80¦¤ÕZ¡LÀSf\1aÖç\9b^ÄÌ\80±y\ eßm7 6\11p\92îÙE?×\16\ 1\82ExÇ\M³\85¨\rÇ¥­;¤Ò\8bÝäô\8a\1eÕ\e\16-\80ª´Þg\8cÕ-´\eÅ\88\95y\ 3Ñ`ݵ5>0òÑ#\17d¡£\18À\17\14\16\0è\80\9aë\11t\89  \94ë¢\97\16C\99i$\829\10·Wô M\7f¸¾¿\81þ\ 6\ 5û»*Ê\7fÀ\94 k\16$hë\ 6=DÕ\a;\8b&\1a{bmè\85\93*øÒ\9a\15¼oç\a\1f Ú\94:\91&ó·\14¢\86üà4\8c\11|4\v/\ 2X¨M#oH¿\r\87Î\95%\1eé\85µ%ë±Ô¾aØñÅ\b\ 3çç\f;>  \93a7\15\99aãQC±ñ\88£ü\ f\8e\15s\9e,uIG÷4½y\9eþúôû§>¹Ðf.ìî~ÛF\11\t\80\9bÆ\98X8\vO\8c\99Þ\99Emö\ 4\9cùNí\98xüàÁÙÜò\8c±{TfBÎ\15\8b#BÜ=²Ú9p\8f\9a (±gå\9e;L\eízQÃT\aB·¹½B|Ø,\12˨F\88 G:oÀ\ 5\982éi\89]!U\90N\80á³Â\0PTd\ 63££Ù¸
+d|­¡wsÍ\80ò\18þ\8dO(³Z¨Ì0\94z9ÂÌW\98Áâ\1fìKù8-ë\fÉØo¦\8b\1c\92=\a\ 4\ 5ä-Õ
+\9b\aªÔa|D÷Ý}\ 4é¯\ 4ûïn[mí,9¥Ó)v%èPSË+Úh¿\8f¦!\9fS\9bÝ\94\96\89ÓV        Ç^jÈ.Ò\84¤¹ª.»à\9eL.ÿs|\8c/O\7f0>Æã\16Üãýt\90}\18 ·\10ù0Ò0? Ç¨\1cJ\8d\\ 3\1e\ 44A¸\ 4T\18\1d¢Ñ|\1e©<ÖCï\eË\1c«\a\83L\80\9bÛXõ\97¤-¤°ÎAÀ\19\9e\16k\1eëÄn³èôdöv\ f×\98\v ×ÄÖ¬´\98Å\809/jpÕ!V\ f/á8"ûaXµ\99ú%t\1e\82ÛÙq:Ër+k\83°\173£e\fò\8a)¸çÄyfµ«M/l»\85\80±\ fS\89\1eð\ eð4»á¶èÛíRPÌÔ1\f\9eØmd\1e·\99P¬J5Ïò¬\ 2\ 6@\11ÊÅÚÙ\v\9dë\95ÎYïkÇÏ\166  û·(q¬° hl£è=³ \0¥\859\16íÆê
+wyå\r÷ÛW\8d!]?|ìÛìv\85¦ÖW½\84\1aÕúò0ýr\1föÛ¾W\1cD\80³\9dL¼v\1dò ×FÚþº\1c\9e®o§7O²\8c¢(`9\83§.Këúbʲö#\a³¡P\99ñÏ\18b\rà¸@\1eç×Ì\9aó\v0íG£æ¢Y»Ægç\11¿\9aáÍ«ó
+ö|}ÿþ\9a\1e\9dýÊo0\1fm\\17Ø8å\8d\83\9d\1f\ 5«£`6|µü\9d\9c\9fD\17Ø\13±ô\8d\85ÌÈæ\8f\83\7f\ 1¯Ä{êendstream
+endobj
+830 0 obj
+1609
+endobj
+831 0 obj<</Type/Page/Parent 794 0 R/Contents 832 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 27 0 R>>endobj
+832 0 obj<</Length 833 0 R/Filter/FlateDecode>>stream
+x\ 1\85RÛ²\930\14}ç+\96ouƦ\90R ¾hÏxyrFOù\81\90\ 6È)\10\fÁ\8e\7fïN@­·q\18ÂNöe­\15Öç(ALO\82\9cc\9fAöÑC\19íÞ\1d\91¤(kÊd\ 5\ 5\17Ä,\8ec\94rÃYÊpvºëÐ\8a/zhà¬\99«NM¯\9e\97\9a"I\96Ö-Ï©uSÚ¯p­B/tçë;=9\18\8bAݦ\86\17~7O*T)*µJt\98 C;j5\98\ 6]×!;ZCP=CI\ 3M]k©©t\12}%¾Ï÷,Þ\96\91'\1cX#ñÑãûèx`$'å¬@\8f$/è»ì:\9c½j\9fÜÓá½ÚÀU\8a\ 1\95\ 2±\92­º@8x\8cß\0l\83Màñ:¬ÌØæתPï«\88¼A­\87\v`f\87ÞX\ 5QùpÑ!(Ó\9a[\10>W\93´\9aÀé\16îîpÕ\98d\19; ãG\96\91$\9esÆ×ÝOIû\98\92\7fJj\95¼.ø~ì\ 2|S\15\10\9b\7f*DëÜør·û¡q\89þ®4Æ\96gÌÛgsê&\83Î\98«\9fí\11\r-\16\17#'è!\9c\9cÃO\1c\85¼\12\85g«Bº4\1c\8e{\1a\92\16\9c^º®zqi±Z-Éræ\1dL\ 6½sêùôáá\84\8fÖ<)éðÆȹW\83\13N\9bÁOß.]Û¥í\7f¾Nó\94¬á\ 16     _É}\8a¾\ 1\96¡è\9fendstream
+endobj
+833 0 obj
+445
+endobj
+834 0 obj<</Type/Page/Parent 794 0 R/Contents 835 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
+835 0 obj<</Length 836 0 R/Filter/FlateDecode>>stream
+x\ 1¥V]sê6\10}çWì#\99)66\ e&¼Ñ´\99Þ\99&sÛKç¾äEØ\ 2ÔØ\92k       \ 2ÿ¾gå\ f\9d¶sÃL\ 6léh÷\9cݳúk\14Ñ\14\9f\88Ò\98fsÊÊÑ\8fëÑÏëÑ4X,èò¯Þá\a\96¥ó`AÉ"Å÷8Æ×ZÒ\96wà%`ú\7fX\1e>=P<¥õ\16èótAëÜ¿Ç\93lü¸\17\95\93\ 2ú¤\9dÜÕÂ)½£ç/ôUéܼ[ÒÒ½\9búÍÒ»rû»õ\9f£)Mâ\ 4 ã/¢Ü\b\aDxÄ\aLfQ\10óÛY\10\ 5´ÚI\9d·k\12\8a¢vM\9cò\8aµ!\95KíÔöLn/éM\9ei{Ð\99SF\8b\82J\99í\85V¶´d¶ÿ\10\11ÇIÎ\90ÔbSH\8f\90˪0ç\12\98¼¥\8f\ fQE³&*aI\0Yh\ f*O\ eñ1\90Ðyhj\ 2\8bU!²\e
+^Öa<\ 5«\ e\11iS\98Ý9è\88\98\a\9e\8a¯\12ô\14\ 5É\93(\95\96K~\r\r'qûþE\94\12ØÖ\14\aÎ\8e\94F\18Õ\ 1\9aý¡Õ)üUéÃ\89Ö\8f\9fÃO\9f            \1dUm´O\83\81\rbåc\10Ê¿ñ³Ïç\16\18ù\1d¬Ì½X8äJÇNHÎm\80\1a\7fDýżӦ\86ú¼¸\93\ 4Ìé\9cöx\ 5Ò\e¦É:Ͻ\7f\83G,6kÑï=x\ 4/ÄðPÔÛm*W±Z\99\1djåÎd*¦kp2eFoÕ\8e¹kp·ÐÍJY\16ÒZ\10Û\161H\1ed\99|<ð±\ 5BÉcuW0$ìr¸õ¾Ù\9a¤\17=W\9c¹Î'¢0Zâôú\88\1e\9b¢"¼Z¢=\91\1fôz­\ 6\9a¼¬Ñx§0A\ f÷)ç¦\14\94å¦Çlõß|Ì\ 1x¢@\ 3k$qD\13\18Hq­úÕ    ?5ÀÈÚÕ¦(zð>à¬\81÷\96\ 4-\93t\ 6\83\0;\7f¹nöYú\10ÌQ\99\17?A\9b\ 5ä\8bò÷\7f©v\98J\913eáÓGghÝ \93ºQh« 1ä\aרppäöÊ2q^?Q7m\17\1c½Ñ\7`(]\16î\8du¶92k×LRX§\97ë5\9e§^Â\v\0¿ë\95ó\b¾\85\8f\ 1Çõ]8\1cÉ÷£hkaÊÙþ¿!µºÆéýep|C×8a\v\1fªÚ\9a\14µ^?¾åô\83\8c\j¨e¶\´\8bS\19\15Êzk\86Í­ò\1clZ(ʶ¢a\906 ¹óÖÉ\12<ð¬\80ÓÅ÷\8dÅRû\17Å\18yøDíïÂd¢`>©ÿ\16øoM#±Lìÿ\18 l¡=ÊC\1c\ 5fT\83³Q»\8d9\ 5\80Êe-@hÙ¬l\9e\13\9a\9b`É°b'\1cà¼\19-k\14-,½2V²\994\v»Zü&YcB\r£m«Ú\1c1\rA\95çâzXô\83\90¬AÍ\vÇ\16o)7¤\8d\83­£\19\9céòlç\-[\ 3!P-:ªoÇÖK3Û©\12Ù\9bt\88\83ÁÑHh*\1e¡lj<\98«ýÙ*PÓ\8d\10r5\ 6hejGT\883V\81¯ò ±ÆI\1fÔQ\89ÁÁ´9¸Û\b\ 5 k¤Â3\86Oy\969vÑ*ËØÈ[\9bêbÿ\81àòÏ«Çî7®+\83\12\18\195Â.ÎD³\986
+ùÀ#
+©wý½¥¿\ 5 â8Mw®8/l©P\8bØ\f*1A·æPÓë8y½Ã\9cËT\89ÌI\1fØ\8f\a\14U\ 2·%ìØ\9c¡Z\ e)^Ç\b²\92µ2ùë\9d/fò5Ƶ\16DmþÝ\95\80\93¹ô\0\14\85×6Q{\989`\9d´\b\81Ûc\18,.)}¸\1c/.h\94«\9dr´Ç\ 5¤\v¹\8dø\86v+¯ÂÎp\99ÑMÛ\11%ÓåB.§b\19ÅËY²¼\9fóÎðiq¹¶a\ 2¢\85þç\95ñr\rKÒ¤3ÛhÆàp¤ßF\7f\ 3yû=)endstream
+endobj
+836 0 obj
+1212
+endobj
+837 0 obj<</Type/Page/Parent 794 0 R/Contents 838 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
+838 0 obj<</Length 839 0 R/Filter/FlateDecode>>stream
+x\ 1\8dWÉrÛ8\10½û+ºr\19¥Ê¢\16Û\92\9299[Uª&\8e'Qj.¾@$("&\ 1\ 5\0-ëïç5ÀML25\96,[$\80^Þë×Í\1f\17\v\9aãµ õ\92®V\94V\17\17ï·\17ód³¡þÃîñ\ 5Ëæ¯\92\15]oÖø\7f¹L6d%å¼\ 37qL÷\81å³\ f×´XÐ6Çé«Í\9a¶Y¸?§m:yÿ$í\89´ôGc\1fIi/mnE*©ª\9d§B<I\12\9a>ݾ%\91eV:\97Эs&UÂË\8c\8eÊ\17Dbx\9f|!áJ%N´\93d4~íËí÷\8b9M\17\12Æ'\95Á\82\8f÷í\89\12gnÃ&åèî3!\92Rxe´+Ô\ 1\87ø£\94\9a½è·à[vnö\92DY\92«Ó\82\84sj¯+©½\e\19\16°+ìNy\81\98\8d¥L¹ÔJ6Å\17\94&-|m%Bô\1c\ 6U\ 69Ø  §R*å\93,\83\8d.Y©©ªZ«4úJ^<JG\87\92\93W;¥÷#ã\83\1câfB_\95ÆJ¾Ú'"f\1d\97f\87\80N\ 4\ 3?j\89è\10ð^jiÃU++¡´£\=\ 3\85\1c¡`Áidð ¬Wi]
+Ûà
+Ï.C\}\86Èä£ÌV!\f\93D¹5\15òÜÒ£\12Zì%g\96\ eÒº\83L½z\92ÉÈî'\86×\17\0\8cÑ\1f\80\96â\12\93"\9a\87ã8dH\9d\84>cCó.\15\fÄÁª\8a\ f»\1c\19õ\ 5È\837¯nO\80\ f\1e\14\ 5/`\148×VÃ(`æE·_îqíP\9e\97«ä\9aÙùOÁl\ 3\84p\ e\89\150nR\10\9f\8e\ 2\8c"o¨\a
+\10ÚàH\vÒ§\85B\bÁ\0¶y\93\9a\92Tu(CÒ\ 2Q\b\99\ 5ÇÆÔ\f¾²_/ÚC´¨ä\vöàEÁ4\ 47ù;BÄfS>!\12¸r^\15\bMÀ       \r\9a0\0\9eW§F{kÊ\12ëiwbÏF\99Û¾½\9f!¯X\97«}m£\93Í.\10¬lÊ3üK¼wö\ 1ê\13ädB3éÓ\19û\17âé\85f¦\19þP\91|Ê/ÓÌ\ 1÷\982\19ùJ&\9dW(EÔeÏ\h\91\ 3\8eÀ\ 6÷¡R\15\12Í\1aÐ¥9Eeà
+p\9d}apá\00ä,\8d\ 2V\19\b¬òS\84iP\96­}ÈÃ^"yA\fQ4Ð\ 3\9cç<j\10%\aDn£\14\12}a(êàè}\ 3w,U\18\17#³;kD\96
+@i¬\82\a\92¾0ð\90¡bg\1d}{wO\ f\93o̽wÂ\8b½\15\15µ'?¼dÄQ\99\1c\95\90\ 5\9cÅ\1c\0Á{g9í¿@¹4ÈOWÈNîC\15\a\9d
+9çC\16\7f¸3=Jèî¬/ \15\b\vÅ\8d\9c³gUÈ.óñ`à\14\A\17\19E=H/6\e]\9eþd{
+µuÔ\8dºu\ 5Ë"Ç\ 4h\v\98òüõù;t\8aX·t\10é#`\8a\1a¥\19£\91í6GA\ 2B!@4\83\81\81WAYÙèÏ\1a\13°\96¨éAzÇ4Þb'\9b\1d\14Åïk\82ë\80y\99\9bZg\81ßÀ¤Eð\9bVϳ¿\94®\9f©)I(¼\a.a!\12ϸã\ f\81ùuUWQÙ¸P\11Õ(r\8e\1e¤\83w\9eãßQ{P}\8cm\93ÿ.\17¬9¨º\13\1d\v\854àØS À£fô¸ûÿÞt«\86   ¡»sÐ\1c|!ËCÐPÎ6w  ä½®\ eäÀ\1d®\ 2qÖn¡\aì\ 1O\ 4]\9dq\13\91Ï\8a\e³D-\8eÕ\fm\90\1a1\8eÅÕ\9e18\ 2;!á\1cï\93P¥Ø5â\14F­9]mn0M5\83\15\86+ð=ÌU³\ f¯h\81\ eÁSÔÕ\r\ f\14\85Á\ 6¯\86\b\8bfÙ$\10!Ø}JX^#OúYlºäYlÒgÇ˲\8c-,\84=p¹T;+ \eî5\1f\82épÚ¶+&`XÝ\8a§áÑ\80YÕaÖ"ÁÍ·4zï\1aGÓFƧk\ 4\8ci0\9b<,Wëæfë&ßë&·ÖØÃÄA\8d`\91Ó\9d\ 5\8bì7\0t\85©Ë\f\860\91Ô\1ew0\82\80Ã'è\96°i\ 1Å8r\7fõö\84!\88½\8cù 0N\a3b­\7fÔ¢T¹Â\ e
+,\8e\d\91  ò1h\e1¯gÑ´£æï\ 2ú9{vP
+!²\96\eô.f\94î\98\8a_¥ÅÄÜ\ 4Û\f¹Â=F%Ä<\ 3JV\11\8f\9fúN§jÞ
+íbY£.Íc\8d\92ø?14\ 4]^Ý\80\96ÿMÐå|\11fís\8a\9a¢\9cÞ\ 1AÛî\ e4"A;A\e,jé\11\1a}(ãfD«$\82\18ðÏI\8f\86¾çÑk\\13àfxP\10y\8eiRf    }\fc˸{¦V\ 5&\8dæ\940Y\f\ 5¦\19\b\15\19\9b¡\91ö¾\8c«\8a\97¥2C\8fgnûÓ\81éÊ`\f¸è¼­S~0\80v\87úc±\7fÅJ°@\8anâØHÍO´\19F¢Ë\9dÒY{\16\1eà¸ÂÚeU]z\85~\18qo³9å\ 3Wñ) IÕ´\83\96µí\10\82ÕWW;Î&t_J\81YÝÊ\9c§¾P\1eÄC úã\1eÒ\85q¥Ã7|Ëk\8b£ñð#Ñ8J\17\1aZìõuÿHy¦|\9bF)\16«uÂϧ,\16=µ¾Þ~zsËcÊw@\88rIk\1e.BÛâð¦q×4n\9b4Z9&\ 2¯¼\86\ 3\8d\12-®ù\ 2üúûâ_ôìÈpendstream
+endobj
+839 0 obj
+1684
+endobj
+840 0 obj<</Type/Page/Parent 794 0 R/Contents 841 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+841 0 obj<</Length 842 0 R/Filter/FlateDecode>>stream
+x\ 1\8dWÛnã6\10}ÏW\fÜ\87zÑD¶¼Þ8»oIÛ\ 5\16è^\8a\18èK\80\82\92h\8b\e\89TIÊ\8eÿ¾gHÉV\94¸Û\ 4Hli8sævføÏEJsü¦´ZÐÛkÊë\8b»õÅïë\8byrsC§?v\8b/sZ¦i² åÍ
+\9f\17é
+\9f­¤\r\1fÁ[è9þ\81üìã{J\97´Þ@ýõ\r>\14áý\9cÖùôm²H\96    ½Y\7f¿\98}L;±éLú|¦\9dÛ+\9f\97Inô&
+,)M£\9e«Å
+z¦ëR9Ú¨J\12\84¼5\95#_J\12¹oEEZÔ\12¸\9c©Z¯\8c&/ìVz\97Ð\1a\98?4*\17Uu R¸(»\93\96Lö]æ\9e\#sµ\81\0\1fw$\1cÃ\98ÓU
+Øl~cªÊìÝ\87\88nNï\19\JW\8bw    »9¥îç'zÝ#V\85Ð>\13íM\8c\9fÓ\17öæ^Ú\9dÊñ?\84\86½Þ¨mk\ 3ÀàQrî|÷|\91&×C{\8d@\98\8b\ f=Rh¬\eáÏ)¡ÛÊK«an'I"âJ"þÆRPclA¢E\ 2´ïbFÂÊ\10\9d×<\8d\87\8e¶£åà\84#\8d¼V\85hh¯t¦tq\ 6\90+Eaöÿ\13ýÖ\9a¶9É>wu\1c\97Ò8ï\ 6Â\d\11\8feð"GçÂÃÚ^\94ã\7fÆæ¹ýh\1d\96C`\10\9c_¨D]«\82\8a¬óã\18®sè´ô{c\1f\8fNq\88\8fzÏT\87D2íñ\ 4\ 5ëáÌ\99|4Öx\93£\r»È\1dm\9c\91·M>\88ñ\8fõ»Xþ½úçxf\1f{~¸â\1e¼\8e=úu\83\0µÖÉK\92"/Él\98"\9c¤Zæ¥\0À\9aûþ\9fV\81(ðFøÈ \r\i¬\12\9e\99BäªR\9ek]èb\86rïqp}C½µ`\8bêÐ;Ù±Cß\9c²è\9b\12\98\ 2/|\ 2µ\94¦­
+Ê$iãe\11\1aE\ 6#Ôå*\0\93ÎÏj<\16[`nQG8\ 3\0Ú_Òú×o³Oßzi\1c\ 4\1a\87BÕ>A§V#<\9d4ú¬nõ\80Ô\\võ0JðWçª\ 1s"Hà>ñ¨ô\96\8c\ 6;îÑÔ°\933\ e{\18ûs/êL\10\88Ó1Í.Àés4nU\91(
+úCéö\89\Û4Æú@\16òÉKÍ¢\b¸¡\10ï@Õ]T)ò>)½±ÂyÛ\82ÍÙ1\13\824rª
+ÚóJÁi\17\8dr\80D\86\99\0å&óBéá\10\80k\9fïé/p
+\98\9b¾H\7f÷éë}èÍ\80\ 6á¤Û¢@18É\93ÂÐ\96\15x\f\9a\91åM«s\9e\v\ 2¥q \18\ 2-e\11Ô\0\ 2ó\19rQ\10\92Ä ¢0\87\10s\ 6\f\88¨FªÅc8P£¾èaªä\87n$¾ë&Þ\94%F\0ú\ 19«T\86Ï\7f\83*]â\fK\9dZaúð&Î;xÔV\9e\13
+q\8b$ö%È\0\fÇ=F!\10\a\87e\a\ 1;A\18ºS¶3RN\ 5Ú&÷\ 6Ú\18yðeÂ8&#¬\8d°\18_\98\1d(¢S\88P\1e\ú1\ 6\93Hy\13àÓ\f&j\8b\ 6O\18\19\10¤[nc\10\c\94ö¤<'\ 1õ\98\8d\18çTW+\r\aGèð>jP\ 6ÃÉ\ ePòó©^\90±ø\82\v÷\92k³2|\1a\19e
+éß\ 2\ 1'_éQ88çLÆa$\85\97
\94\19T
+¿t¡£z5\1c[~:(ÜþU&ÙphÈ°¬Åuì¦_ÍÐ\88ýb6\ÃÒ\17kØÛ$.\18\83u   Î´\ eù\89\1e\f\8d\84x=¯\aLù¸\97\r\80\9ed\89óaeÁÔ\ 3µ"3m$ÛÐü\81\9c{¯Xt\8b\1dCsíâs\90ÀÿGmö\9avÂ*Óº\17\84û0å@\81ÃÀ,Ê\81cÀÉ\ fo8)!z\13îÈ6Ô \926¹¤Io\8eÕó÷\ 1ÖÁ£L\99\88\0"4¹ÿ|7Jf\10\r\84KP\8eqRKÁ\8c\11²\b\16Bú·\91\ 3ø\99|Êe\13ÖQ0Q0yÒ\ f\9aå*Èq\1ct\ 1Ú\15\15³^ì\ f63²\1cgÙ \920\9aØ\ 6\15¦fÖâ#±û#°É±æ&¡_'Q\ e_P$V\86=ø;\8f\18\f\ 3§jFð\8aÕ@g\11)\eë\83\88ô`\9749ÏÌ"\86ã9»\ 6+ò   Ë9ô¦¸b\94 \85\1cÈ\1cw;¦ÖÖ\97\11mzíË\91«Ga.\r\14)\16\ 1¶B\18¥x\10ê\14qr "\90?f\16·,f÷NT-§\0=     Æ\ f\95çúé\r\93;Y\11^`\83­»\15:Fpd|èG§\8cAl¹ÈPÐpö8Húh\1cK\16\12\ 68Àý\818\ 5y\eéG\1eî!\11æÈ2|Ã"²SÌ\93à \90Ý8ìf!\ 4v<\8a×ÈH¼\96\ 46\83Ùî\8asDÈ\19\r\87ù\1e\11ìF`ñ\12Ñ_fn:ÖO¯WI\8ak[\1a¯)÷·\9fïné\9b5á~ô\9bÉÃ\1c\v±cäWQüjµÀí®èow¯_~\96«%t\ 6¹ô\1d\1f\ 6\7fýyñ/1&wÊendstream
+endobj
+842 0 obj
+1574
+endobj
+843 0 obj<</Type/Page/Parent 794 0 R/Contents 844 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+844 0 obj<</Length 845 0 R/Filter/FlateDecode>>stream
+x\ 1¥X]S\e7\14}çWÜÉ\13éÔÆ6Ô\90\19 Nê)\ 6\8aͤ\ f¼È»²­°+m$-\86\7fßs¥ÕÚlf\9af\9a0\ 6lé~\9c{î¹wùz0¤\ 1þ\ fétDÇcÊÊ\83\8bÅÁdq0è\9f\9dÑîÅ®ñË\80~9=ÃëÉÙ)^\87#~ÇJZñ\15ü\f\vÎ\1f}\1cÐ;Z¬`{\f[\8b<|< EvHÍ¿{­¾Ö\92®¥¿\98ÞÌéZ\94Òýúvñå`@½!\9cãR{6Ý\99\9d_þ1½\9e\\9fÏ&ï\a\83ßé7\9aKû$mø¦2IÊ\91­µVzMFÓÞñ\1f1|Ì\86?I-­Êh&²\8dÒ\88\13ñÑÃa
+Wã×\87·?`u\14½\12z&t\8aÚ!øÿ\13õç\9b»??ÝÝÜß¾\1f.9æ\ f¦\14
+i\vç\81É\855[xhb\1c\rûã}H?YSWÿ\rõ\9d\9bÁ+h\ 2$V®\15»\939-_H\14\ 5\95²\JëȬ¨½ù\1d Úsï\87Ù^"\97F{k\8a\82­\1d1S
+³FYcÍÝ\7f·\99³Í+\93\89¢\83Í\ fØ\90lcª\91©\96>²áN:S\80}ÁÊÑÇ\13\1a\ e\99ò½!õFãþ\88Ñ\9ezr\eS\17\0G\926\1e\8dð\ 1§D¥22\fÌm Ä\11©,\99­&b\9e9\12\8e*T\14ï\93X\9a'Ù§Å\ 6Tç/MO(wÂâ8ºÍ\188¼MÞÐâòöhzK8é<Ê#¼2ÚÑv\83\92\11\ eå\8aßÀ\a/Á¼{A1K\12y©4êj\857\96
+e¥\"y¼\8d.Óáì\91ôÙÑÆ8ßÂظÇ\95æÈ\87ë9åÂ\8b¥p\12>\91yL\88\ 4¼\vçL¦\ 4\83²U~C\12@\10B\15yn¥sýÄÜqÿ\84±¼\81çUm\ 1\82¥Ê(í\99aY!¬Z©,¤ÕÅúç\10&\9ba=\8aÕ9|\1dõ®l\87´R\ 5\82Ò\"I\1c¹\95\99±¹£Üpí¨²æIå²\835\1fN¥ääÈ¿T\fÑÊØ2F\ 5{H|6§ÏJçèI\ 4­¤ö°++    w 4êT\80\9f\1e·a.X@rI\1fø~Çk)^(pJÊ\æ}:×$\9fEY!\ 3\r;\ 2â\eQÁM(¹Fzß\ 6\15\1cÎ.\b\81\94YJ:NcûqTÒö        Ü^!¡è,\85\9aàcÆ5uä\80DÈ%P\18P4@\82½\9eE\ 3Ôf°X´\ 5`0\8f\10¦\87Ã'%Ht\ 2H8/­\11y\ 6\82?¼%\%©ëR\82«`rðÆ*\94º*\80¿\11O\92Ú\ 6\v]\88~l«õ\13ë\ e@\84w\bLÇ©\95\98Sè%t\e\8a£\91      ¨\a¬\ 2]÷ø\8aO\91\eO ék¨D\9e\9a E\87w
\14G¸c¹t}ú¼Q`>IÀÚñÝd\ 1 -.ZY\819M\18`\8e\15Ádð\98\12a°|ÓB\v\9c\bY¿Ù\1aû¸æ\11ð\86\80ß\9bXî7ð\10\94 \ 3M X\90\91UíØ4^0]á\0mL\ 1Lv\86\ 2#'§Ö:´ \1f1«N\ 6`HèN\18   l\8c(\ 2Ĭ¶Ê\83ÄÂbÀz\99\ 1³\86»r\9f¢P[\8e\95\15\ f\ 1@\80h?öÆ:0   èw|s\8c\95U¥°/H{ßAc\15ÄyRÖè\92K\1a"C\ 5\ 3]AJi{Þôø;\1a\95\93\ 4åÑ@»¡Æ*Þñز\8eõ\r"VAkÕ\12MÉ,eü\1a]Oéÿ\1côfÍ»F\0ÞÕ Bú\90#*T pÐd\86j`\8fØèK\r*t;£\82\98\ 2§\1c\8dó¨yr`dÌÿ8¿\9bÐìæä5ùð6$QB´Q7_7Ó êï«\94\e\84\12¯à<Î9ÞÎ\1a\99ßn\fS\84Gô^j-\ 4ql8\ 5Qz!S\85\9e        ÔѦ\8d\87\807\12\ fb\82l+ã"\H7¶ìý|r\17\0½ÃèuIö
+Êê_s7~­\95å<\18ÀX]Î&6\ 2ë\95\80XxÞòÖ\94`ìÎ\9e=ñÞ\ 3&0\ 6.*l?i8¶¥J­Û\f<&\02\r2_\84ª[Yb!HBÕÉ\ f\89\8bº"°H\7f´º7\19ÐFüP\17\90\1e+M\81\1fçq\v\9e5\97.0K\1eÁ\84ùì\ 2\ 2\19%\19§ù\8b'\ 4³\1d\97bgså:¾¯\9b\95¼u\17Ö^îBº\10\ e;ñTWµ§\9bÚó·yØ\18\98\1e«\aË\87Ô\99¨\\8d\95£õvuu\89¸®Ì\1a\9aÐí\9d\1f©Yù\10vë½Ç:º\r\12   ÉG      ¹­Ñ[uáCÉ\12(H¯\81\83\ 3\99ÜOá     ?íÅ=yöPM\99wò½g6ÄÝn%2¬õ¯S\11\853\9c\ e\1e,\b»\97\85xÿ\rÓi\17\1cÇ­È\1e±\19Òä9Û\b½\86\99]
+hÆP²åKÇõ5\f\82\14\bó3\14\ 1\86b£¿ì1ºl\96¸\84\89£.(ßäë÷bÁºÏ@-â\96Ä?òsXÈ0ºû\97&h\9b\1c\7f2üz\86\96[ì%\10©0dP#SÔa(\97\92AQ®Ä´£y\18&[\\84HF}VE\17\19\bKÆ»v³\e6\0\84Å&Gã`\99mæ=·Á\9eJ\86\130,Bôáa\16«ßx\80Å8>º\8eö\1e\\8f>¾£!\96Ë\15?\ 5cgç=s÷¤zÜ?î\ fcç%t®ye¸Äj\11zf·<B\15G§¼¤\9e£\9a{bÑâ$\ 1\90Áó\91f2ã        É`$-ëÕ
+tjÙÍ\998ìÛÈ\99Ë\99|F\ 1á.\9eÞvÊØlX\18\7fI^$(n±ÎSÒ\15Þ\16 ²á%IÒ\ 6|DÉÊZóhN\10\87ʳc\16\1dOÃAoø\va+«=ï(Óî\ 6\8ah\91\ 5º|\85õ\9b÷Y\9eQfé±6r\9a»\r\87bp) ZYS\86\ 4yã-Àu Éñ\ 1\9a8\84\r­\rÞÀv²Þ\ 4ÍDP\9dÄy3Qkl\fù¿Q­¹Ô\14öpÊ{hÂ\0Ã\vÔ\r<E&\88\993\8f\11\857cX\8cÔRòÒ·\81Ôa+Æd]J\80\1d\96¡x}#øé\ egäs¥\10\11{=úxÖ<o\fǧ}þ#È8>~ÏÏg\17çtkÍ\17l<x`Ï°¸j\1fÆ0ßëÅã½Ó\11þV\92\1f~\97\81'§'øKI8;\1c³\ 1\10þ¯\83\7f\0øÌ©\99endstream
+endobj
+845 0 obj
+1992
+endobj
+846 0 obj<</Type/Page/Parent 794 0 R/Contents 847 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+847 0 obj<</Length 848 0 R/Filter/FlateDecode>>stream
+x\ 1\95WmOã8\10þί\18\95/ ÑÒ\16\967­Nâ¥ÜU\82.G³·Z©ÒÉM\ê%±³±Sèýú{ÆNÚÒSà\16¤R\12Û3óÌóÌ\8c\7fîô¨\8bß\1e\9döéè\84âlç*Ú\19D;ÝÎÙ\19­?\8a'üÓ¥~\1f\1fÇg§üùé¼Ó§BÒ\8cwà%\8eY}`ùáí1õz\14ÍpúÉÙ)E\89\7fߥ(Þ\13:¡YZÚ¹ÄßÂdäæ\92b\11Ïå\ 1\7fÕDB\93pNf¹#gH¾Æs¡\9f$        Ê¤µ\ 2ß^\94\9bc­p\94a\9fÒü$Mi*É\96Ó\1f2v\84\8dûÑ\8f\9d.µ{Gð4Jö\9cÊdÛ\94\8e\12\99\8a¥í\90êÈÎ\ 5\r\9d%-2IÊ\92Ò\9b¾X\ 3\8bþU!­IK§\f|K\8dy.ó`Ï\96q,er@S\1cËQÔÞÄBoY×Æ\ 1.\9b\e\9dt(\9aÃ\18Ö°Ã\80 ´®\10Né'\9a\99\82J+\vKm\7f¦rì\96 \0P\88ØÉBY§b23o-/\8c3±I;\95­þIç\98#\8dàÉý\98¾)\9d\98\17Kp<Un\19ð\12iÊÏä«È\94\86Q\84T\9d6\92îjøeL!d\9f\ f6\1ec\a\12ÕÒSg\9dp-ö^ÒXdS±\15¢üYª\85H¥váHl~s@6\rص¼¿\9ee G¯\8bô\ 4R1½jJ\1dÞ\9eS\ fÑ0\81>\9d\86ÀÖ\14:ê ©Á\93»û?¾\8c£1ÍT*Ù¡MæµûÌ<à\ 1Wø=»SÚ\12\11-\91ÇX8\ 4\86\9co`5\8aè\18\rÔï\82ÔÊçñð\16\1a©Ø¼âÓõÅdòm8\1aE\93Éøû8\1aÜ\1fõ'\93\9bÇá_\83Çñd2\88®ßz³\aV'\14\eí\84Ò@\86é2| Ë$\ 1-\90c¼ÜdP ¤\ 6£\1c\84\91lA\9d\vU\80Á\9c\89`¥öo\8f*<¶\8dûðsY\80a\99¥:×Þ
+k\f\9e\88Ê\93Lä9sÑ\14
\94É6»\86 ú2WÌ\vFÑ<[JÕ³¼¨\1d9ç¤õ¨Ýÿ\14ØHÕÏ.]\9b|Y¨§¹£É^<Ù§Þùù\19Ý«¸0ÖÌ\1c^\17ym\f¬8ãÔ­6×\0l?\ fZB^\ 5Y\91åÈñ&!XL       M\99û\90ÄÊ\12\94aé:åøàJ\ 5\ 5³\90\ 5\ f\87Ã\a8\r\11ÄÏ^¨\95¾ÎÏ\9av6=\ f\8c¬ø\10\91·,\9fuB¤å\ 4\81\98±Éò\125\80\93f\eÏ^Å\ 3_ýÊ\ eÑ\0E\92\10l±$;7e
+H$=K\94\1fe\b\85B-T\ 2\95Z6&Á\13níÙÆay*â &\ ed\ 6v:ø\9b\96\99\ 6T\rViht<6EU \99}\9bÁ\ 6¢×ü¬\95Â+*4\1aÏ\Gke\8e\12Ê\82\a\eÐ7R)à¢Aç°9\gÅ;1\r\96Z»­uÅm<\e\9c{\92Z\16^\a\9egHS"Q襧\e\88RøJ\88òm²,pÍÊð\12=\rð£ú6'r*\ 1Ûd¿1\19\8d\8e½)w\8c\12Êü\14ÂðMs-\82»Ë\11Ý\v\8dvZP¿óZ1\9cÒln¬kv\8bi\eÊ\95\99͸Sù\84û\1csÞä«\93Úr`¾ pÿÝ\96l£ã^ì»\ f\8f\83\ fVÜ|¹¿ø\9c\98\f\85ô·\ f\96\ eG×w_o\ 6ô\99Ýf9|´ájðûpô÷å]4x\1c]F\1fy2\18Ýüßµ\93I÷Uk\94\emt;/\94ö\r\7fÕØ1¸ä¹)Üd¿)¢¦çt»\ 2_èe%ój\92ñ5¦\1a\960cÕS\84¥\16ÃÜ
+SL,ÀÞÆÓ9½¡t\80Þ(\ey\ 1^\8aÄ\8b\1dOøµï"~`èÐÕ\12\1a\98\892u\a~\9b\14ÍÇó\´:2\fRXN\10+Wn£ÑcÄ\f2§d    3\98}¼±\8d\81l&Tj\7f]$\9b Uñ­pjín2¬\85Âð\14\90\12Ö\9a\8a\8d\88\ 5´V§\ 5¢¢ÌÈXÍT(@5{¹Þpï\82\92bÌ¡sóòîÉÓ\ 2³\e°à\12\98\9a'\14oü·P10\9eʹX`Àѵ\8e¥^¨Âh®;<)\98\1aåF·9\93\80ð*Ô$Ô\r\86$àt@a*Õ\12v­@O\ 1\rDÊÓr\92Ðj(ÜV=1ãx)Ûñ]Æw\93\1a  ?ç¦/\18ÌkG\81\94H\1dÚÕÓ\9c\ 1\1fliô\9f\87\7f\0¨é\85ï\10oyɧ/\94D\17úu¦\8c\96\ÜZ»ÿ­'\95\880W¡\8b°ÕÇÛëÕ|\85f|\155K\9axîya¾\ 3\17´\86g\7fÀ\9a)ëªåSîEÁX\b\Uf\1e\14ù\8e´xÂM;\e¥\8fQX·,A_G×í©`\9d±¨\ e\07:\ eÇÙ\9cÄ\98É-Rõ\ f6U\9d"LÖ\b\0   à\92Ìó-Þòdáé)\8bFÌqùb\9f.ï¾]~\1fÓ\eBán\83\89Äßùªy\94ïF\8cïÆü\11n.\8d\8c`q@-(¶¼50¯Î`¥¼zØÍp\aãaÑ[ðLMT\ 1MªÅ;ÓÐ\10!&\89¿C±c\16åUR+/§©\8a[,E~Ê7-\1eK};'o\a@\85\97\8d\9eß \8dÖ<\ eþ§¸ôñHØ\1a\95i:\86æÐ]ÇlËz#¦H\10\13\87\89¶º\84òØÈ\ 6\ eoϪËKïä¤Ó£\93ó^ç\84gëñåýÕ%=\14Æ_\98oL\r±ðwBÞ×î\9d\9cbyû´\8f[{²÷Î\95ëøô\18Óº_Õ;å­¸Ûý¹ó/OÞÆ*endstream
+endobj
+848 0 obj
+1741
+endobj
+849 0 obj<</Type/Page/Parent 794 0 R/Contents 850 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+850 0 obj<</Length 851 0 R/Filter/FlateDecode>>stream
+x\ 1\95W]OÛH\14}çW\%\ f\9b\95 $!å£o@Ân$HYânµ\92¥jb\8fÉ´ö\8c;c\ 3ù÷{îØq\12ZïBiil\8fïç¹ç\9eü8\18Ò\0?C:\eÑÉ)EÙÁUp0\r\ e\ 6ýósÚþ²\8f¸\18ÐÉè¢\7fJãó3þ|zÞ\1f\93\95\94ð+x
+;Í/\9c\19Ð\ 5\ 5     l\9fÂV\10ûÇ\ 3
\1eÕ\7fº´\94$\96©¤ÂÀ\92\88©XIJ³\95q\85£Dá\81+£H:\97\94iºîS°R\8e¾Ë5á¿RÇÒþ\1e|;\18ÐÑ\10\91ÂÃ\8eá0ÌD´RZ\86¡[»Bfa\18\95ÖJ]DF\17Ö¤N\16x$í\93\82ý0L\85Î\84ækiÃ0\17Vd²\90\16O4\;\84 \8cv+a¥kõ©´\8fßÊGå
+\8bp\17*ËÓ5\898¦N^.S\15u8S\9f$\8ePb\90\ 4_ZÙo³Úv\1fµ\90Ô½\9aþ1\9b\7f%\ 13Ýé|òõò6\98>Ì/\83)WéÙØØ\91HSóLY\99\16*GA»³ùõíçÉ´Õ®+\ 4Ê\85B9\8e\15\rz´¦Ì%â4\8f\92cíÓ¥^\93Súq¯?¤t\94\96±l5ü¬Ò\94"Q:´\e±{³ì·XÆï¯À\8dÒHn}HÚè£Ü*] &\8aÐ$\11qïàLs\ 22[Ê8F\ 6hP&ò\1c§\1c-×­\81&Ê¢9\ epáþ°M\8ew.\8b«Ù§\ 5\83-ý(\r*Ũ8äç\9aJ.        \7fl5\1c\86\83\17­\11nõ¢O>\97\91J\80\11\17z\12i\89\812\16׿NêýU
+\10{b\18\ 4\1c\9e|\11À$\12\12 E«=BÈ$\1c9Z#_
+©=Ø?¶åÑv\9f\86\83Qÿø\7f\81¿g~Ä-&Ðl¦\9dº÷\ fSêN>Ý}Ô²\08¿s@ÔÅE\ 5\86ß\1cM®ß`\1cnØf\a­ôÍ ®ëpÜi\1cí|è:.°H   \87©\1aï·x\18\9d°\8dÜäe*ì\8e¹*\87½\eÎ\946\ 2Qyêx\8bí¡¯Mj"\91:û´cË×gç\9aK#\19·\f\btçÿ&¬ÕyM\13\r\1f¬É\ 1\15\ 5\11\82\ e=wáNÅÌo{Ý÷þ\1dïîÑW\9b\8b¶û4«¸W,Í\13\83ÜÏe\ 3\93NÝ"â\ 5 \94\ 6î©\ 6G«Õ\86Kxà\15\18\91ñV\9b­ÁÑñäÛÙ\14«ñÂ'ᶳAnej\ 4ú{èMp\83;¾h{6xÕù0\13\ 5$8\8306¼\ 6&\8d[C\a±¦\98\10\8dÀê\96)\134\b¶Ä?\98Ü[·ÊÓ\0mÓiµ_mÕj\11\8b'¡RÞãïg§¹)x\1d\88Â\ 3üyeÀM~ñ#mladX£\9e¹"2Yµ\98\8c&\89õN©1ßËü°=H\83=(\99ð½y]b\13XæºÆ\12Ê$(SZeeF~Cag[\ 6Q.-æ\ e¢ jO\8b\97°\958\86Ù,¸\16 v¬û'å6ªÆm%À^¡¹\13
+\0\ 1\16½ hMAbµ{r\86u.\8c\17h,Ç\86\10b\95\1c\eáÓF\8c\1dß\ÐpÌÚk@#\88µÑ\9eú:éó\ fýùi\11,¼Iö}|3¦á°zåhtÆbÊ\8b­M/JWzà0Î\vß\14º[Ð\17¥cóìh\1eÐ\18þAS£\ 1t Ò\95IèÊ\8dÉá\89\8f¢wý1\f¿Ìæó \f\17ÿ,\82éÝÉ(\f'\ f³¿§\ f\8b0\9c\ 6\9eÿ·Áôüh4\13ë»8»§Ë8\86\10ÃxUò\89p\8b5ãf5g¢\88VÛÙ¨]ç\ 2{½O³f~°±\91Ér]a\83×:\8c\9a´ä¥\8e\1c\12+°!˨(¹½z'ßC\8ae\8eÆøý\85³+\b,\1eßàúþxv¿ieíVê'e\8dfà2B\90\1ea2®åì¦Âð@\12êsMÏ¢
+Iþ(\15\14\ 1¿X­gú¬ÕËñ­Òå\víW¸w,\8bèØëæýnö~\ 2Íhp\ 1±üß \19\9e\9dþ\ 4\99q\9f\ 5Ýú\91Ûw\ 2\ 5¾\ 3\99Häb©RUx\99¾Í\97k¸­\12ظ(s&H±yP«\ 2jjäå\15%"òÖк\84¤æÉ\8aÑù×e\ 6\ 1\19Ö3\95@Ûé¤C\1d\98¸ü\95\12\82\ 1\8e\ 4\f\1c)h\1e-|\8fQäç\95\ 2­(WõWpå5nÖôTKÀW\9eç&Fë×9ìm¾6ì7\1a:\ f\9a\99¶çàh@\99Ä÷\r\86 5Òri±\ f\8eÂ\1e(ÈÒçÉk45GÂß}:^ªz\1c×Ô])"ϨH\97³tåò\9b\8c<\86 *\19æ\15mòûÌWÕ·\90º9u\8aþÜ«<#0®ôMðÖ\13p¾w \19\17\875\9fðDÞÞUÜ\82ÞB\8dËè;c\1d½CÇYòî\14â¼\96ÎbS\82W.\81÷Wåà\11à[Uú\8eg£"P"ÐÊ\82\16^\86ñ=³ä\ 5\av¯³]V<½\8dõp\13h³?ê\89\ 5\8d5e¦Íë(\16\97y\97~?\´°ïyÍ{ÃÓ³>\7f³Æ\97Þ\9do¿\8bË»«Kº·Æweb¢\92¹Ác\9dÓ?ªÞ:ª^ëý\92­ÇgcÌ0\9bí\rÏù%,\84¿\ eþ\ 5±£\95Ôendstream
+endobj
+851 0 obj
+1653
+endobj
+852 0 obj<</Type/Page/Parent 794 0 R/Contents 853 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+853 0 obj<</Length 854 0 R/Filter/FlateDecode>>stream
+x\ 1\9dWßOÛ:\18}ç¯ø´§N\82´)¥\85I{\80±iH\epÕ^MWâÅM\â\91ØYìPúßßóÙNI3&]Ý¡Umì|?Ï9\9fýë(¥    þRZLétNYutµ:ú¼:\9a$ççôúÑ<âÇ\84ÎÒY2£Ùù\ 2ߧÓä\9c\1aI\eìÅÊb\8e\9fa%\9dâ\81_\81-,ÂÁþ\ 3\86Æ_.(\9dÑj\ 3¿ós|Éýú\84VÙè49MÎ\12úqs»¤oÆ<µõûÕÏ£ñ\97\19¥ixãdºÀ\e£Ë°çaôCéÜl-Ýh'\e-\1dÝ\8aJÒR6ϲyxO\16_T&IYr\85$ù«UÏBjGfã\1fP³ÉÒÉ$\1dãcJ¶\96\99Ú(\99ÓíÕí\92]Oè$=M¦ìòat+ÝÕÍÝòÐEB1\16v%\e²Î4Ò\92·®\11\8b%¡sº¹'\91çX°xà
+áH B\8d|T\16qÃázG\82b2\ 3ÇY©8bR!äÕ§û1ÌYéÚ\9a
+ai-¥¦Gõ\8cOØ-¥°HOËP¡P    ö\7f\19ü'Ñút\8eV"­\95¡Ìè\8dzl\11ÐRTkAÎÀ&\87Ãm\88iqõ6¦,ÍVéGªE\83Ô\109i)sÎ6¼\92çH\ 5ßywè\1c°å;7²Õ:aGáq×Ð\11mT)?t{/¸É)\9dLÏBp\14ÿÁ©%ÛÖµi\1c\7f¤=4sÂïÌC\9fÞN¨µÿ1#ô\v\85ðy!\17¥}.]ðÿ+Ú[ÃÁ2\92@(.ùaV\ 16\1féåå%éýÿs\82Û\ 2\88\89å\9dvåí½ÉV\ eß\1e\7f\85!u\fè5ÙCÃ\93\7fB³ÅÅ+Õ{|î³w6;KæH¨ÏßYB_Í\96Ö\rHÉHÙ´:sÊ }L\83\ 2K\80G.ëÒì@\15±.Ñ\16,ð#©sþÝ\15\8b\ 5\ 5ÅÚ[j½=\8fÐÃìPÙ(
\88\13\ em\13kó,\8féû²£\14U"+\94\ 6ù:Îq_UC\1d§\ 3Uéa¤\12\99|ðM\8f¯\10/\ 1û\rIØè¢\8b¢Ðé\8bÛÕ\10\19\96\8dà|¡=Fs8\0,µ5T¢´æ\98@×Ã\10½*½\88Ì\11øT\18/\ 4ÛBe\ 5B\80hyß!ä`wàß\89'äT\97"h\Î\9c¬\90\ 3\93à(B×Æù\9cz\15 ²2\8eüþMIúì\1f8\8dJvL@bßÁ·ï_ï\96«%\95^¹!X\96¤æ\96æÇ\1c\ 3ôë\1a\82Â\95ìW\1d\1d±¦l¹h\aoH\97\rµê&°1\13 s`\ 1»÷ê®M?`\12eù{í\80AHÕVb\r_|iC¨\81ó9\8b&tøïëûAÂÀ ÈáÕ%´â®(\ 4\f\9cE\eý\ 4¢ö\95&\13%\ 4k\8d\89tL­.!üÔ\95\a\ 6 F^'KÈ¿\8fÕG\138r3ô¾\1f\1c        ¦\1c\8c\ 2\eV¹ÖÃÌFÉ®\eó¬rD$\80#\ 1¶!\ f\94(àH\92õº\1e\13¯Ä\8eE\1eÍÈÔºÜ\r\12Vú§Ì\98HJÇ\8c<\r¡\8b>b\fO\81¬+ãd\9fcHvk\9a'\90(p\95±ý.n\13Z\eH\81|÷:;\1eÞ\ fûûÃwópðÄj\1d¿\r_Ú*t\93Å\1d]\ 3Ñ´â6±Æìy¾U\8eÉ\14æá ÏP\91\84\96\ÔZdOÒYÊ\84æÒ4¦å
+xyrEk\ 3¾\0,>nD^î\81\v\87\9dÒ\91È\1a\83vÇ÷cQì0×ë¶a}äÀ¼J`\98£\89\19\ 3\ 5þe\89ú3#|~ÌòHr8Ê\1a  ð¡\ 3 \1aìBÆ`yè\90§\19\ 397\8cOÐ^\94Ø\9f\ f;,_\0½\84îà
+ªöJÈØB\7f\80è\ 4ÐÇ\80\8aø \ 2p_\93\r\a«ÜT\ 2òw\18J`Ë äqç^Öù\ 4\830!Î(\ 6F\83AÊh\18\84ÊÊ\f5r;<óÆqzp\8d)\13\ 2\r\90±\80ªpõÞt=pêû\1c"\85\ 5ɳ\8f­AvÙ­¯@¨å \ 3@y\ 3Ø\86ã\99}âÍ~^BÂ6\8d©:JCì1Ä\ 6>åKV\býÈï\1c\90\87\1dã<g£\96lAD\89\83ãnèÚW\1d+\1aT/Ë\1d\99µã\12\vD^Õ%\84¾GƲ\1c\8f»ýY\13XâjE8&ôÙûLÓ\93ô\8c01\80õCà±\16\17²ô2µ\1f+QRúÀ\188\ 6LØÍ\10\bW»à]8>f¢üþç\1eå\19ú,\e%¼0\86¶¾ú\88ô-Ôc!Áí¶vªÂpG\ fàià¾2Øa¥VX\ 5\9d\9cÉLIÈÔ\82\15 \r\éüa\84±~àxy\18\ fÏ\877q5dñ'\7f6·°`;\ 4Çf÷\8a\8dj\80¿,RþÖ\81²\8a\1eÓºevZ\7f\1eÂá\a\10\86x\16ª\14kU2ø=T\9b\ 6r0Hõ\r        b\9f\98¦¸Å8\\aøÐßÝ:ƽ!\12ít\17\80K½Ûß\0üLA)p\8fXC5\9e~\17:à|\8cÚîé\8b\ 1\ 1\1d³*ãÉʵd¡ßq²\rßL2Ái#®\9d_\1d¤P\bD    Ò×(\ 4ôÏ\13\9f»Ö\80\98
\87P\ 5l\8a\86:\ 4û\8b    ®vAXÇ_ÎãI8\9d/\92\94æó4Ü \96\97߯.é¾1<ÐèÚdm\ 5Fù<9\98\93°ýd1Åý3ÿÃýs¶\98á,ê7¤\17ü\16ÎÈ\7f\1dý\vÂ3ínendstream
+endobj
+854 0 obj
+1696
+endobj
+855 0 obj<</Type/Page/Parent 794 0 R/Contents 856 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 34 0 R>>endobj
+856 0 obj<</Length 857 0 R/Filter/FlateDecode>>stream
+x\ 1¥XÛnãÈ\11}÷W\14æI\vX´n\96ä\ 5ò0\8eg\92\ 1Æ\9eM¬Å$À¼´È¦Ôk\92­í&åQ¾>§ª\9b\17s7\17$\18@\90\87Í®êSç\9cªÖ¯Ws\9aáß\9c6\vZ®)-¯îwW\1fvW³d»¥þÃ\1dðÇ\f\8bð±Únð¹X$[r\9ar~\ 1Ï°K÷\81Õ7\1fW4\9fÓ.Çæëí\86v\99<\9fÑ.\9d<«r¯È7§\93uµ'E¹Vu\83½ê£ªI\15\85\94[\97ê\8cü¥J\8f¶2^ÕÆVD6§½ÃsM\85ñürê¬÷älScu¥ëWë^<5ÞT\aì§\7fØýr5£é|\99,\90Ãä\9dÓ¥­5µ\9bðöïè¤\9c*u­\1d\99\8a_"_î\93ÔV9å¦Ð  í\8eÆSª\1a¯=\85䩶\84\ 5µJky¡°©*¨T\9e7              ºQhd¯\0\98\84\8fy\92ª2â­\9cþµÑ¾n³â£\85\93»îè1\v\9dç:­ÍY\17\17¬6Ù\ 1)\11\ eÝ\1f\9dA\1c\85VÀÖk>%\83´¿\ 4¸\9cç=\81:Þnaé\0\ 5 jÒ\ 6\91T\96âx´W\9e\81\ 6^xÉÛ¢\91ºXG_?==\8fâþîÚkÚ75\19\1cðh\9b\ 2éhªP\92,T\9fÑÿOE:9{6\19\ e>`Â(²Ð¦\a\8f¦\11j&\18j\99\ 1`S¡v¹³e8\fª ²\fG\ 2\99ºs]3!¬ @ Væ¯\99\97\14\9b\1a\ 5\96\94\84{\96ò\ 6!\98µ©u\ eUCÉpl\84'DÑUm@\99\7f\93\ 2\95:=*\b d¤âѳ\84\84\94£àýÒ´\85öl\14=<=_\13/½ù\b¥\8b('7ºNo\8e\16\12
+\ fZµN®I ò\96l\95ð31\83\19Ýn\97\10|Ô>ôßJÿæã\1dÍWAè··Ð÷@èËä6¡Çgújª\8c5íuÚ8S_È\9e\18\17¨\17ü?Úר¦Ü\1cØ\ 5¢Ä\0t{¼5"C¼^ë²à\ 2\99ªÖ\a\90\19{¼Í\1eJ_°×L\ 6AÓÂ\0k\ fqFFW©»\9c\98p'å½T\95\94g\ f¨Ù]\14\11ð.
+]é\83¾\ 1\15NHT\93\ 2\94,\r>TÚL\17mzÑ[¾MTò\92¨\84\9ev\9f\1fÏóo?\10¨\ 2\95¾æ¯i¡\95£Z\7f\aõk\a\8e\88É\917å©@ec2Q`£\80     }\1a
+ÆiU\98\7fèl\94\81\90é\15\8a\15Oz~¼'&LmSËD\eÄ\0\a9\1e0°g¨\9b\9fµ\96\14\ 5ÏÄ?\15\8aý\90\13FúºÅ-\b\18\9a\1dEßC(\9d\81²?\8cÎ\0ÊÀåj/¬âJ­\13ð&\9b|\ 5°ýî\1d\10`\aÈ\0\ fÊP\93\ e\1d\11õÚk¼\85×`¸X\ 1OãC`5<Ü\ f\ 3Àß^ÕÅÿÈù¢Çu\81ßWôø°"ìväÊó\ 6??}úã\97\87\ fí\9f]ØX±(;\ eñRÙW8º\97×\9ev²K\12U\96F\95M7 .Kbòm±ÞÄ\87­ÒøY×\97v£ê · 0â\8a\96Ð(q,¸/x$\92A¦¨\ eì\8a\v\88ò¹\ 6´Äwx\18¤¸¿Ô\1aÖ\1eºV`\9a\98\ e¿5*\99ÂÎ\15ï"¤¹\r¯òá\9f~þü\99uàÐà´\vBõ§\ 2ö\85\18ì\81¥Àz»¦=þïáÃ3½è\v°°-ô¤F¡Þ\95ê`Ðk·\12\84ΪhÐY¥\ 1AdM\ 1?>Ð\1cûqöâ²\\8fϪzTÕ¿\ 6·åP\87op«8\8cÌy"ùë\9f®æ³\15À^®ØGJ@t\97lâ_\ 5=óü2\9cV\96+®ÌÐÆþn\9b¶Y9\9d³^¬T\9dO\88xÃý°ûÝ6Y¿Ý½\1f\8c$!LGmBãH?µ&ð!\88-\1a\¿\81\ 6\13.\ eL,N,àã\9f¿|Ý}A§\81s\85¦Ã\8dª´\90P¦ke
+\ f?\97¬MUiqÖiÈ¢ã ONìJ±p-´\ 3+½»\85\9fè)Dv6)ÛIúBóë¡ÃC\bà­\17s_&ß\ 3]ãÿÐ
+mã7ï/Á½bl¥\83É\83\9d\96\19Ù[À[+Nè}QôA±r\90°¸E\ eLÐcøð0ò.½Ê\8e\18
+£>\0Ð8\97\ eݯµ\ 1¸Î\ 5
+t\1d»Ø jÛq\8eê\8cÆ\ 1ò²F\90XæìéÄ4o½¶\84þ¤\ fH\9eX\88õâk&CGà\ 2ÎgT\9a
+³-Ê×µÃØoB¾     \89\7f²XÄýT]ëò\84~ÇBe\1cù       \a\82Ê3\87Á\91çÖ*rä­\9bJ~:»\96WÂ!F\10¡ø\18\1e\ 3\fëúÝÂÐ\8d\13§*="\jOhõÁX[\bÇ°Iò\8f\86'*\9b×Ìj\14\81gAæ­\0Ý\17\9e© É¡\b\f%ÖµÅb¬$,ÃÛ\86ìÚ×è\14].Á"K­0\8a\b\14¯l¬\1cÛé\ 3FDwaÚuw\ 3Ü\ 1Úôxb\9eê
+H\bì\1crÐ-Û\0\98TÆM\92\v¡`¨\\1d\16\h¦\12Wu§\8a¼ a-\9d\86e\9a\f>ÏC$k\86\9a\f¤\112\96\9bÅ[q\8c\ eÎÂ\ 5Ã3\8bÚ¡\7fwèu­½Ãºë\1f\ 3p\10\16>\83ª\98ÊÔ|ÿà-\14\1d¬Í\bã¸â3u¨\8c"\ fÀébtáÑ£}\93\1e1 É¤6¦È\ eõ\b\1aæâvõà\eYÅ31H.­\8fáÄÌ`\e\f\95\8c\b²õ\8dxG;\7fÞ}\8f\96Ê[²nøBÓ:_{Yäé´-%\ 2\81cP\93\ 3YJSK»B\14ôÁÐ\f\8aøJ5\83\18\ 63ßÛÊÈ!¹yÀ\13e².iË\97\1e»Roûmßà\ 1þ\8egí9m¹¥\r»\14g*ã,\15\1a×C)@w#ïûÆ\1fâ\18²\b\eMd\96\ e\r!¦³Y"\8f\926kô1ùþߤ³áQ®¿â·\90þϹô\1dy:\97\89M®ï÷\9dýÆK\82è\0î\ eVó|$uïbÇ\92E\15q¥Q«ÂÚ\97æÔ-l\aV\bKñu\95\95,\97ù\11\81ý\ 5\12?7àf\85ÛDB÷Z~\10à\89ño=\83Ø\Ï|O°\15î\10p¿
+\1fòC\ 1H>ȳ\e­ÄÏ8ÖÍÇm\9c\1açëM2Ç\8f&·a<~~ÿxÿ\9e~rö\17\986=Ø´)\11 »üLÃòéf!\83æÿ{å\ 2\87\7fÿ\92µÚ0á$ÆbÆ      \83-\7f¹ú'¹äÜ\ 4endstream
+endobj
+857 0 obj
+2022
+endobj
+858 0 obj<</Type/Page/Parent 794 0 R/Contents 859 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+859 0 obj<</Length 860 0 R/Filter/FlateDecode>>stream
+x\ 1½W]OÛH\14}çW\å)TÅÄIH`%\1eÊR´<\14º"¨»\12\12\9aØãdÀö¸3cBþý\9e;c;ÄPiµ\ fÛVÔ\89gîǹç\9e{ùy\10Ó\b\7fc\9a\8fi2£¤8¸X\1c|]\1c\8c¢ÓSÚý0+|À±É$\9aÑôt\8eçé4\9a\92\91\94á,>\8dãhܼñ\87ü\eØÂK8è~ÀÐñÕ\98â\98\16\19üÎNç´Hýû\11-\92am¥)E!)\97/2?\<\1d\1c_M\9bÓCª\84Á;'\r)KF\18\99o  çJ*¥Le\1añù\11\1d\8dg\88l\91\ eÿÐ\e¼5\9fqÏÚ\8d6)é\92îo®ÿ"»µN\16\96tæp»\10Ï\92à\19\1f©P¯2¥DàS²\86»\ 4ÞlD´XÃe!EiÉ­\85#U\12\f"\92L\9bÆm<\ 1\ 2p+Ø\96a_\82~¨2Õ\eKg¯\94äJ\96\8e\9c¦D\97¥Lü£ ;Q,\ 5á\ 2"ÅEU®pR
+CN¾:\12µ[ã\96J\84Sºü\fß\92\ 2*-\86Ã6¹^\14\1f\ 2XÔÖÑRÂ\9d÷ÎÖ
+ñª\8aº ².\96\1cuFuUáÁC\90KÇhoÖ*Y7~gm5\12]çi\88eW!\81»\88\1dX\89\ eu w£\9dô¸õ\82Ä9\8e¡Éþö\8e\91\v_9#RÅ9\8b\9c.¿Þ\11бøÄñ%f[¹\87áá\87\83\ 5"\1f\93\b\16Ni£ò\1cäµuÎ¥ìEåSW¥\95¥E\b/²Ë\ 4YY\ 4\vÊdF\17]q¹Ü\1dG¼e\91[½3O¹.W\801×+ÐÆ©\ 2\90¯|ÏõZØu HQÕ\1e3x\97¦¨\9d'\03Ö#Ö\16\9d¬3L\19Q¦DÎlùe\ 1êIZný\7f\93\ 3¢B8\94\10\1a\\ 2Å\1f\86ï\89\vL\12],UÙ8Ë\84Ê\1f\ eûmµ@Å\96\12\15\17\88Ã\15)\9eÙ:\9ee)\969j
+\1aiã¸?ð\95¯\19¼¶q[\ 2©$4\82\e´é\ 1\\a\92i\84^ã7hï\1e8nm$ÚR\97\99ZÕÆÇH\95¶V-U\8eB\ 1Uï­õ\f¨>pü\e\eõ\ 2\93IÌÒåål\8c§V³\8e¯Î(\86\84°BMÏæ¾­w\1a5\89N¢8¢{HÄ·»\8e\ 47\v®©\0\1d÷Z¶á6;Ý)\19k\14ëÞ°Q\15·Ö)hø¢ó\97\86þ"\rìï
+\9eé<×\e.u'\82H\97éÄýS,#\86\852\95K\9fàñÕ\88Î8\81\18®N\82\1cRó§\ 1åM-Îéoi[°!ú\1cZ{Úʤ6ÊméüM*H î\9dk+Û6ó9\rn¤»¸¾½{dA\7fÔÙã÷Ëß\aû@\1cqx³ \9b]ÕÉm4mÄÖç®R\96¿lË\99\83\16\1ae¨ÔÐF¯³~Zxúw\11TBA³P\8d\17\91+\88¾?\1eÑ-º\82õ¥M´\91k\ 6ÐÈ
+£D\95 +\1a\85I]\19ý\ 2ßè*Ø\ 1ä`{è¼^yÑËV ­Q\17£\13|\b\1a­} ì\8dè\89E\97#\94Ƽë¹D§ò£\ 6ÃÔ(\8f,"\b\e\ 5NzùÛã?÷\1c\12È0¨ð\80Á\14Z -\9a\91Âj̬0e¼6AÖR¾Ó\83¡C¯\11cAK½ª\11>\92\b#\99Sh¿íNó\97* cdÁ2ßÜgíðz\0p\9fü´C\98­­\9eo6ÒYôÕC|è$üË1\7fX\8e Â\1e\0F áD3\14ù\e_èP¸NE~\ 4\15!hx¨{ç¢ç\1d\8aøLºF\8d°\r\18¤\98\ 4Zk7\129\19p¡W{\81áXT\ e\18\ eög\8aÏ\95Õö\19¦m¿Ä÷aÛð÷ÚÂö¬§\1aä1òg­ KL'üÔ<¼\11¡u\80L`¡¹/Õ+\89\ 4³\18«\ 5K-\93\81Qf\1a"¦æU/ã\ 4ÈÂÐ\92£c\8aÃnex\91r<£\98/<=Ø'¬àì\e\99\v[LȧQÑñÉ´[ý~¥¢ãñÈ\8bо\8a\8e#úÆ»W`'\86\94lw\90}§ÐÖN\86R] 6\9cпÕS¯¥au`tzJÊûÝÿ¬£»\14>ÐQì©Ï+£ë
+\82;ðâ\ 6~\ 3\80pÉëç\a·ºîiºï\9c>íCÔSZæHP\16I\83O\ 3\fÛU]4ëé gl\10\98\9d\b¾cýºÊ\8c \8b\84'\\88\8d'³3\98\rºG°\86÷\88'°Î\81`\90\15\18àbàHÓ= kÊ{ËF\81¸{\94»Yô»çúÍò\1dx\8eß
+x\86Â*ãçM\aR5xð/\bÞé\93\86qöü\96ÔïùÅK\88êO\8a6DL\84@"ÛÌÚÓf'\8egó(¦Ùl\12\ 6îÝ\97o\17_è»Ñ^ÿ.uâ!ö2Ÿ\1c\85ãGó1~õI\87ÿu­\98Χ\98ØÞÄ8f»hË?\ fþ\ 1\9c#fgendstream
+endobj
+860 0 obj
+1525
+endobj
+861 0 obj<</Type/Page/Parent 794 0 R/Contents 862 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 39 0 R>>endobj
+862 0 obj<</Length 863 0 R/Filter/FlateDecode>>stream
+x\ 1\9dVïoÛ6\10ýî¿âÐ|ñ\80Z²ä\9fí\96\ 1I\93t\ 5\1a»\9b\1d\14C7\f´DÛl%Ñ\15i;þï÷\8e\94,ÇHV`        àX\11y¼{÷Þ;~oEÔÅoD£\98zCJòÖõ¼u;ou\83ñ\98\9a\8fr\85\87.\8dûA\9fúã\11¾\ e\87ø(%-±´KñÉ\9b¨\87\15bá-\ e8~ Pxק(¢ù\92\ f\1c\8eG4OÝ\82\93ö´ »\96t?£ÏªHõÞÐdN©Î\85*(Ñ\85-u\96É\92¶F\15+rKg²Üá?÷¢\10\15iJ\82r\91¬U!I$\89Þ\16\96\96ºäÅ?Í¿¶ºÔ\89zA\8cSÛ3\91/\ 4\19\17  ~\19Þ%Un\9d\11\8a¨\17þ\15\ fGÕû:w~Ý\89\87À\ 3\81&òѾ&ísÿ¨\8aí#\99\83±2'ù(\93­\95o«Ý\83*z\9bL¾Ø\bcö)uJútóî\9fÉÕý-u¾ÒÍôþêÃÄ=>\93\11@JÛϤÓ\89Ǩé\98Ð\83\91¤\97(Y\19Êuê\1eÄ\16\b\14V%Â*¤\9ajiÐ¥ï[\85\r\7fjZH\ 2\8a"\15eJ\ f\85z<\a\11à\ 3gôC\97)¾X}\86*ªR«\ 2Q¶*\ 5&\89\8b~\f²\16\ 6\87H¼oÒ\91)-\ e®\99¥Ìµ\95ÇÞß¼\v\88æ\DÝÈD\14Ø~vâ"ÓÉ7\ 4\9bRîP$ez¥\v\9ct Ò\\1c¢cç    ­\92La\9d[\ 1\94\8a\95!³MÖ\84ì\8c´\96Ù\85õªØ\89\fU\98µÌ2.¹âPx\aÉ8
+\9f°)\946  }O}ãjª´ '\95\87\80ÿë¤U+"bYüñ¾Õï\r\8374\18\8eÐÂ\9cú£\ 1\9f2\9a± »xäþ\9e
+\10fV\96\ 5Ú¹s½óÀsê\ f\1fn\f£Qk\88;f\98\9f\82È\93>\97ù\ 2¨xî\13\0\ 6p\ 6i\ 2E_¦#l£[\97*ÄÛFÈ\ 5\94ÙÔB\83A\1f\ e\80¼{\9c¶{hÒ\1e\f\9e$=\85TwJî]\ 3\8f¦à\8eáà\94¬Å\ 6\1c\90ÕoÓÏó)\84\ fÑ'ÌÚ\13\fiÐï\ 3\12ïFqmF\0+¼{C\11\84¯\r¢®Shc0½`\10ô\ 2\8b¥ZmAz\8f\aú\8e~\9fp\92%âÑyÚL4<fËj;Z¾¤-\99C@hÁZXæ\f\8e\81°*\7f
+\9f¸Ä\ 2\1cEo\9cÚ\8c=d\8dq ã j<kÏLôÙ\9ex\88#XírN \ 1t#«\88Þ\8a\9eJ\88 \11'\1aµ¬]\0ÆÉ$É\9c\14Ï\8e\95ER\1eÐ\9a\94\1cÃ!}Ú+dÂ~\ 1v¥îìÙý5y]\9d!éÚÆÈU~é±\93\99n;\9díàEpnå\9cÉ\19\17&\vº®÷Lç\8d(E.Á\vGj\ 6\94K\ f0\ f\96´T\99|ë[Ô¥7Üõ\bç°\82У\8b\vÚdRÀ\fK¹t^å6û\96Ãtk~U¬ËDŽºx\1ed>\f\9cðÐ\95\9bkô5\95V¨ìØ¥jÇ\97\17"ûû,\10U?\15\9aG,\r\9fò<H½Ú`\84\94Ê\1e°\88\85üBÌjHVÆ÷_ñ~fªOg\94Á*3\1e\13½\1e¼\1cs\ 2å ÊR&:Ïe\91J§rv¸ªª:!mª½\97ØZ¥\13\90±ú2¹\9d\7f\9c¾\9fN^ª}#ÀõK
+\8dÎå~-J\19ª"ä.\86~d¾P^)\ 5O\13\90ó\92\ e\1eªæ"Ñá\9e\ f\9d\8f\83ÉÏ|\14\ 4ê0Ñà\87{]~;êì©*
+)!X^\ 4J'8\8d¹Î!$®\12\ e÷×,\8fZ~õ\9b:ÛêFq2`&ó0îÂßë»\88\17dCjcËmbÙ\81\1cæn\ e§§þ\16c*¼èoÕð\89»\9eéçþ\16\ 5ôÀ\9eÏé50\9d(ðÊ\95t\1c«Î¨rqÀ\18Ð;\85û\82 5úC).\a\89Õå\ 1#Po3Ìiè½Bç¼ '\8eÆ\14b\v\aí&{Øà\ eâ\88çÔ\88#\13\992\10\fª\v^\8dßʱ\1c(<rÏå]óñÂ\15Ã7¿\8e¡\10ã)\\b³¦NJ!W\11¾bÙ¨ô\15urª¿×\89\9dQ\e\86áoe?XGt\8ba\89\9b\e¯\86\e¾¥_6û_« µ\16\9aüNn{âG)¼\1cÚ_\1e\b÷\83ñ³s\ f\17\8b\b7     ¾Ñóe±aÆìêþú\8a>\95ú+ZJ7:ÙBäÖ]\ 6\8eßÕñÛÚÿoNöG}äæ.©qÌQ\91òï­\7f\ 1,V¥Pendstream
+endobj
+863 0 obj
+1423
+endobj
+864 0 obj<</Type/Page/Parent 794 0 R/Contents 865 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
+865 0 obj<</Length 866 0 R/Filter/FlateDecode>>stream
+x\ 1\95TMoÛ0\f½çW\10Ý\ e\1d\89\9d8É1mWìÒ\8f-\ 6z)0(²\9c¨µ¥T\92\93õß\8f´ì$\b:\f³\ 1öD>ò=>½\rF0Ä{\ 4Ó\ 4Ò\fD=¸Ê\aßòÁ\90Ífp|Ø5~\fa2\9f±1\8cgS|OS\96\81\95PR\ 4.b\9aÃ\ 3·Ç·s\18\8d /1{6\9bB^´ëCÈÅeÊ&,e \83»%<)]\98½\83û\1cî¸Ø(-a!\84i´w_ò\97A|;>¤\89\92\fÑóâ2ßH'\81\95o\8d²²\0£«wØo¤\86%¯W\1c\94\83Æá\7fî\80Caj®4\800Ú[SUÒ2\80\9f²\94\16¼\ 1¿\91!(z¼¹\8e¾?<å\ fP\1aKèC\88FX(aÖ\ 6á
+鹪\1c\v\95\raNý\8d J&¡0è®O\ 4nyQ@ä ^)\1d\97¼Â\92£\ 2âBîbÝT\15\Ô¡ß_\9a×òâùùs\8f\88´\13â1Ù\96;·Ç\ÿ\13ãêU\1fÆ!ªÏÐ\bªU\195\9dÍ\11/h\9a ®½¤­\80H7       8\99dg\ 2f\f®\8d\16\94Ñ\1f(E\82_\ 6)¶ÖìT!I\88²\92¿Õª\92PK®\1d\91o¶È\93G1\1dc-­8\84\a\9d\17°ô\\17\11¯\f\8e\ 52ºCÅ"¸7à¶R(^\ 1\17\1eñIm-e\81z\83A9QÖ\r×\94^XIÙI\rÜ\eÆ\8a\9dfí9ïT\ e\18\ e'\ 6î\1fr\80®vÌî÷ƾBeÖ\b\94\90îkÛ\87ÒkÂóÐé\89\17\v\17\1er\9e\ 1bû8kõqH\ 3ªñ ´ó\92\17\98öµí Ì¸)\ 1ÓÊSë\84\90ýF\89\r1Q\19\81Ì\84Á>C;ñ\eP?Îsâ/\ em3 íñ­è\1c\17Mq0Ò9Ú\1cµ|N²i·Þ;\92\96£I\12¦u¡OKB7§ìw<ÆyrR4Vù÷Þ\85µ¬WdÀ\ f°ðpø;PoD\ 4â\95\97Vcé;¤Ø\0J}ÒØ      4Ü\ 4ãã¤\1e|ÿOØÎ\16côôǶ\98\8c²)£s\93ª>\9emËÅÝÕ\ 2\1e­y\91Âc\ 1¢©¥\ e4\13t\14¢¢\10Ö\9d\84d¥R­\e´^°\f\9dZØf\83Bk¯D+R7F\94d<\1dcm-[IJ?°æ\1f\83?Ȥ«¤endstream
+endobj
+866 0 obj
+736
+endobj
+867 0 obj<</Type/Page/Parent 794 0 R/Contents 868 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+868 0 obj<</Length 869 0 R/Filter/FlateDecode>>stream
+x\ 1\9dW[oÛ6\14~ϯ8@6Ì\ 5\12ù\12çÒ\ 2{h»õi\ 5:Ä{\v\90Ñ\12ms\95H\97¤â¸¿~ß!EIV4,\9b
+(5ÅsûÎw\ e\ f¿\9dÍi\86\7fsº]ÐÕ\råÕÙ\87ÕÙ¯«³YvwGÝËnñcF7\v¼\96w·xÏ\97óì\86¬¤\röÎh±¼Ê\16éÓõ"[ÆOP\86¯°Ð¾ iúé--f´ÚÀðÍí\1d­\8að\1d+ùäãNì½´´Ìè£Ñ\eµ­­Ò[úòþ3m\8c¥B9oÕºö² ¼ß¬þ:\9bÑåb       \1d\93\joEY\1e\89*¡Å\16[DíwXU¹ðÊhÞͶçØζ/¯æð\19\92Ël\9eѽ¨Ö\82\84.ØXܺ¤ù¼Ùº¸å\8dïI×Õ\1aî\99\rý¡Õ3¹£ó²rô0\91Ûwt_kº7¥°Ê=¼¹ áè Ë\92ÿÂ\r¢g<\1fî\7f¡\8d¨\14¼dS¿)]?_\906\aª½*ÕwÉ[\9b°æ\f)¬~)ëíV¬KIïOâ!úl\8aº\94l\1e>?¼\81æ\1c\91¼¡½5Oª\90\ 4D\ 68\PX0V}\ f¸\ 4O¬t¦¶ùÐvn\0ª)ÉIû¤ré2úb\15\12\ 1\ 3!&Å\9f\8b:g|\19\15ø\81À©\90¹r¼\84\83\13\1a~ ¯\1a\ 6\9f\10£¡ \1e᣽pî`l1\88»\10\ 5¤\1f&1\1f`]ÈÇd*}>\rRAfú)ej\ 2\10è`ê²\0ÿ¾Õ
+üd7\ 3\16Á\1f¸ØsÄ\ 5R1Bرµ\ 2\99ô;á[ì\10v\ e\ 2úãÀ³\ e\8dû:ß!Þ|g\80NcYé'S"Ê\13«§f\ 1\80cÉÖ¬pï(\ 6y\9d\82,ÍV5\9cmû\18n\8aØ\rQx±\rþ\1d\1a\ 4\ 5L³fiq\83\ 2fæ¡ìB\14\ 5H&¨\92ùNhåª\88\12\8a\11ôÐ2÷\81àHT\82«\8b\8b6ÖðvIµ.¤-\8f¨æ\81ÝÓ"\9dòÏ\8e\9aJo¬@Í\83\95`\1f<R\8e`7ô\ 6Ô¸TÐ\ eB·;2\1a-I\95\81ÇÓO\891(öTM\r\8cuDÈ[xÁ´^ý\12x¾>\92,\94ç\1e¤t¡PQµ(\83\81\86*\ 2\14+\r\1a\f\QºIO2\9b\88ZeÃ\f\r\91^\ 1¡\8d)Ks\b¦\80¶&ù,ª=ª>:9¢s:F\91\16\9b\8cEF´Ú\ 1µ¤p'Ð\1aAz³ç²u´\962\90£\87R­sSUè\9d\1c\96ã|®Ñ\81\8eèT\1e\ 5\1d\9a\11÷5åÉy\91\7fuÜr\8fl\9aÁ\8a:ѯC÷\89!\81îh\1fnS\97ØÅa\85\8e\81\961`\ 3S%\84Å6Y"£_\9dã&\1eZ;»Ý³\92\ 3¦µäc\81]*\88óÕ8Î8BYE¦ö\88<\97{\1fx\98C\ 5rgNQí\85¾\17ÕãþP¬3×ìié\11\92Ƥz˧Â\1c\aÏu¬\93ó\1fÁËËy6KÁàääú9\aî2p6\11¶KJh=\1cí\9f\9fR\8b\1dª\18üæò ÞÓ´9\84\1e\1fö>\94¡ôþØ\84ÀÁ5\1e½F\\9bàÑKáópn$K\94\89í\ 2yª÷ÿ.\e¹\87Zêù]   U¾\94|\8dËM¾È\81Ú8K«âz\0\e\ÏsSkß\98\v°9åq,\87\87aóª\92#æOäÆ\83îÑ¥\87µ\ 3\fLÏXªÆ%ÏA\86¾ì\18X%Ú"òôÒáóö<\8d\86ÇÌæ\16E[*æ8²èíñç«\ 1`éL~\85ó\ 3Ô»Óø\92Kä¦\19bиQyæàÂ@\80sØÊ})òÐJª8Çd(\17ÃÓÂ\13\88\10>\0=Aäb\1f\ 5¥ó².ä;vx¬\18\7f éZé)\8a|\8a\b§éLz\11\bJp\83\ 1\ 6x\98\ 1\eÏÌM!ǵRUʧM¡\17÷RÌB:ß?2G\83$/X\ 4áÝé\1a\8e°ÎÔ\98\96~F\82/[\9cg}oXs\89ñ74ôàäHD]é6\11Yc¼ùÚ\ 5ÅZ<wÒviDK!u÷\9d%\94s5\97FB\86×\9abm\96F´ì¥\ 5r\8d\14KôÛ\12\8b\ 5_bÍý³\96\9f$\89\8e÷Q(øòug*\9cÓ6X\eó%öóNÂí0\99·Y\8d¾Ô\98è» G´HýÔ}g»e!ú)
+\11\17Ý®\11-V\14ªN¦\ 3\9a«­\15â5ö\85ù\19ñ\eÑrØIÉÍ2\84ÔI$\1ev\11=Æ9\19[G´`6·á¤Kè\1e\84ÕIkZ\v¾4\r©Q3^ã|ØuCL\9a6øÞÆç\{ªó ÝT?ÆJþÄW\ 4t\84ð\7fö²\eÜ&\1cZ¯Iv\86'\14»\ 6\1dv
+\934T\ 4])ÈæîÔô\fd&^1èÿ\*Ò8}:\82ų&ºÛ\8e\bã[C-\ fvâ¦rÀè\1a\83\8e¡Ä\1dw½[ç\12wlÌ\11ÿíVL¯º       /o\97\18Rpé.&\8b%[Æ­ÿ÷³¿\ 1ÿ\rÜÃendstream
+endobj
+869 0 obj
+1567
+endobj
+870 0 obj<</Type/Page/Parent 794 0 R/Contents 871 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 42 0 R>>endobj
+871 0 obj<</Length 872 0 R/Filter/FlateDecode>>stream
+x\ 1ÕXÛnÛF\10}÷W\fP\14Q\0\8b\94\14\0}pàº\bP\17i­¾\ 5hWäRÜ\84ä2»¤dõë{f\97\14)*6\8c\14\ 5Z\e\90eqw®gfÎèËÅ\94\9dÒjFo\96\14å\17ïÖ\17?®/&ÁÕ\15u/f\8b\7f&4\9b¿  f4¿Záýj\19\\91\91\94àì\84Þ\-ñúµ'\8bé"X\9e=\81\16\\83êã\vT\84w°dJë\ 4\16-¯V´\8eÝó     ­£Q)ò?l¾)\85µ\81Õ¯×\9f.»yszDûTE)ÕVZªRI\ f\b¢XTb#¬l\1eGº¨\84\91{\15\19muRÑýí\9cd\11\99CYÉ\98XÁ^\9b\985Lh<e\87×ñ(\156\956 uªl'\17ïm¥\r®©\82¤\82jCÞ´Ö\91\11\85µ5a¦#\91\85\96Í
+K£v¢\92aãÍÞ©ê9sy*¡gD(«¨\11òäeÒ\86\8d9\95\ 1+\8eW\83øiÍ\14ËR\16±*¶¤\v\17I\1fÊA0T^f2\97\88f¥p.\81Ê\83®\rý^¨ÇðgUÔ\8fd\ f\929ÇK\9eÙò|*s\1d×\99$\84¶4z§b\ 4ws &¥;i,T\ eì\99\ 5³`Ê\8eg\88«      è}E\91(h#)Òy©2/Â\962RÉ\81\9dc\8cø\b-\8e\10\1a\8f÷Hà¸g\9c\81L\97ì®\ 5\9adA¦.
+\16å öÊú³mÖ{9\ 3è\12µ­\8d\1c\91Qe\15\10ÝÁð\1c BÚ\10ÉÜÇ´  ÿ©Ø~\11\fÅù°]\92\95Ò¹\17ë¨îR\ 4DÀçSi=#-²\17Éð\19ßced\ 4¨\1fH'N~Sbþ&ÅÊVFmj\ ePЪ¹æJ\9eÒx¶\bæ\Cß}ÿáæ~<\r&|\80µ£¿¸Ï\1d\féòÁjp\85Ì9pqºþÌôV\15¯à\9f٩ȹÒ\171\10)ê*¥Þ\8f\91_jx\10·\1fõ<E7¡BÇ2\13\87¡\90(ÒuQµwÐì¾A\bZ\12\9f   i\9bR+åå\96t}eÌ\99XúnÆU\99è,Ó{\860J\8d#üL\ 2\ 4Ú¢©TTgÂ\10\9dWx,\13Qg¨:\8dæáz\ 2·â\16\amK?6S\8e\8f\8dü_Â\8ek¼ß\80\9d\938\87\99Ú\84VFµQÕÁÕJã\ 3\155Bù¹E\11ÙTÄzO¢F,\9e\86Ô\ve;)­è\81´\1e¶^(íë@ïÁë\85r\1a\17óxá\93Ü6É>ÈÞû       ÒáL>
+\1e\1c¾=¡\17»ºÀ`E£FCÍE\8cG\9a\87¸;AÇ\11×Í[¹ÃA\1e7\98ê*"\97Ö6&Í æÊÇdR\91ë!\ 1=Ô \ 6Ì\ 5Z\85¨é,&\91¡ì1 \9cV\96È\15àâ\0
+`ôÖ\88\9cD\11ÓÞ\9dÆÓÚâ\ e
+\86\ f\ eTv\86\81DA9éQ*\8a-ºNmÛ©Ó¨huü¿ðÞ8ú¢\8eùB ý·à}î £\90§Ò\ fC\ 2\15ð§O\83ÿ\17]É·®¥:Ô0O\14ÑgF\ 1æç)F)\97\8c\13esðKP\17´c\ fÏRctl¸`´\83æ)AØ0\97\95C\9eÊ\1c\ 6Ã\1e\ 3\87ÛyÃ¥ªÔèz\8b\81\bA\8cóB>Ví3Ï\fÜigb@\1f\9cÙÈ\ 4l¶¹qÊ&P/\83\12pô¯7#<ý£¯\10ÅXÂîÌBüV\18Ç4Ù"ÏÍPÒ n¥Ø¨\fS\ 4\\1e±b7\9c\8dÊÍ\93\1ei\91ÅN\19]0ÉA\99ë\6\83\89\95\1e\99\ fW-*½å\92Î}\9fµ\96«yRÅÙ9\1fGm\90ªTT¾ü]\17\188?HgSú-ïs»\81 î\0He\ 4k\8dÈ(\ 1·y\86\1d?e\8e¬R\1d\13÷LË\ e\83\ e\1fÐÙv\0Û\10\b¾í\82.SKå¹gò¤\87+êè\r·>¤[!Õ"Î\15P\bó\1c\8b£\e0] \89ý\ 6&m\8d\11\94©\84\e4\ 3ê\92Ð\90\9d\ 5¾\99\ fâ\92\8bϼ\8f\194ö±N\12\vrªyQ@Ó=Ð^\80YñD\0\88]V\¦ÏpFIm\0\10C©Ìʤ\86%\1dIvÍÓíªÈåìú¸\7fÎðÎ-¦X2ûk\9a\82}òJy½pì§Û)çØ\e趥®èÓ7'ÃÃã¤\1dm@Þ\8cWÒÑ\1ax\15¶ª+üéB\86\15"e¤ÈÔ_ WFçð«\8d8\83\9c·\91\8d*\1a\82\9f\f÷¢SNzª|ty¶¯\80ºAX|¶=òØò\97ÛݦW3Æ\1e\8a\88\9fú°5û7(ù\84~ûéb~\15\Ób\8eðå4]L\82\9f\8c\1eø[\81\8eJ\82Яh±@0ºXÒÇ\11¯\1e,»Ûé\9d`,ö£´ªÊ·aèÔ\anl\aÚlÃÓÓî\1e\9fþøÚÇò8pI¢7m2eS.l×BÛJÊ\ e\80S!0e/»-ÄW\ 3/\1e«n\85\a±0 m~½ï8\85+\b^\17[J\80snådÜ;P~\1cÉí[ß\`\99Ø\v\80«á\bh\a    ¢,³\86p4_\118Ç:ÕÂ\18&\ 2Îx·\9a¦bÇt£åÔp¢D\rÃ5\11ïP\18pǺÝ\15ªÀA¸
+\1d\80\98\e¡'vß]ÜD\95\82¤Ûv;c½áÝU³ÔN\97+ìÅËë©ß¿\1enîßÝÐ\a£?a\95£Ûþ\82È÷Æþøx5Ã\17.ñè\ 5Å1_ͱÁ¹Ó3G\ 4\81ª_/þ\ 6¬Ä®1endstream
+endobj
+872 0 obj
+1701
+endobj
+873 0 obj<</Type/Page/Parent 794 0 R/Contents 874 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 47 0 R>>endobj
+874 0 obj<</Length 875 0 R/Filter/FlateDecode>>stream
+x\ 1\8dUÁnÛ8\14¼û+Þ­\ eP1\92,ËÎ.zp\9a¶§\14m- \97\h\89²ØJ¤KRqý÷\1dRr,¸\ 1v\11Ä\10M\933óÞÌÓ¯YB1þ\12Z¥´È©ìf÷ÅìöcFIBE\8d\9d|½¢¢¢\98ÅqLE9ß
+ó,KAOóÍÃöé\86¤"«©æ\86¸%2¢êK'µ"]ÓQV\82¸\11\9c\94pGm~\12ï]#\94\93%\ f¿q\86×µ,ÙMñcö¡\98\ 1\83òUÎRÊÖ+<§ø7\82ê\81Ò\1d%ÙH)K\19\1e'¤2¶`ôeóHﵪå¾7Ãý\9e[·c%¾¼@@.´Pâ?¾}\9a\aÌ\93\fWv\94ÜÅl1®ZÚþU\8cdy\85\4\ 2\14¥%\ eÉ\87 j\82J%o[QÑ\88>½½£4ñ\ 2\ad\8f5]c7\8fÙÝd\17m   ¼/äÍ\9eÎä¯Yé\9d\81w(\9fuF\86\8eXOârExÂ\15sF\ 4\11Të¶ÕG©ö^LmtGh\15i\15µR     jD{ÀO\f¾\94á¢h\80\8e\92\ 5ªWTó\8böí÷MñoÀ¢(ÍC¹æßÑuÚònÇÑÔÔ#ø\9eøF        r\9a\84â»V\84\ 6ÚþpÐÆÁ^\92        \16
+wû\11Ý
+n\9cS\14\1d¥k"Hó\b\17\9fÎ\9f\ 6nPmx'\9c0°_Û\92\arF·#¡3Ýc# Ï\10\14)íFj¶Ñ}[Q(\1eÌô\ 6M-KÝ+GènEVXë\9dÝqÅ÷¢\83\8f©\92F ¸Ï²PÄJÔ¼o\1díDÃ\9f¥6W¨Ð\rµ½\1d¤úr\96­@r\9cøí®³¡U{
+°8Ar¯4JÅ\15¾\1a)áðß\84\18\ e%m¸óÐÈTºò\ 5_.\96øìh\91Äl5®F{ÇXú\ 4Lã4t\8a·G~B¦\ap\eÚã9_\85\18v÷N)9d!ô#î\14  ¸Ë;Äj`áq§kìæë\17\8eaw²Æî:E\10.g_\rÂYæµ\12X«4§\83\83-¬Å\bª,½£\93ø\8f,`dY4Ú·k¬d4\0¼ØÝÏ\9aNW}+`e®¼\87ÎÎ\rÅh|îÕ^Ü"\80\a­P\9aë²u¢l¸\92¶Ãp\14\15fÄXÇ\ 3N\80´¯å\95\8f÷ô¢ã,\f\86\1cR\12_Òö0¸ð\9f1=Ësz^\9d
\87ÒcÓ0\13(\83aòW\aðz¼'ÉWÌ¿/ð:\98\8càíæñ~C_\8cþ\81\83.{\9f\900\87ýí\98\17þT4\1c\9bÿ¿\81\9d­2¶Æ;\bó%ÍG\8e_g\7f\0ÐÜçMendstream
+endobj
+875 0 obj
+822
+endobj
+876 0 obj<</Type/Page/Parent 794 0 R/Contents 877 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 54 0 R>>endobj
+877 0 obj<</Length 878 0 R/Filter/FlateDecode>>stream
+x\ 1¥WÛnÛF\10}÷W\fÐ\87*\80D\8bº;@
+ØIÕä!(Z«\b\8aª\ fKr%nBrU.)E\7fß3C.))M\8b \ eà\98ÜÙ¹\9e93üë.¤1þ\85´\9cÐtAq~÷´¹ûqs7\ eV+ê\7f\95{<\8ci2\9b\ 53\9a­\96øûa\85?KM;¾\81C¨é~Aü~ý@\931mvоX®h\93È9ÞÄ\83ש:Tº¤y@o­«L±'EïM\Zgw\15½1®*MTW:¡µÉô\8bÍÇ»1\8d&3(\19<\9f]¥sªJ­É\16ô¬òH±\0Û\v!ÁöFÓ0\98°ð<\b\ 3zW@]\1d\16®\91\9cQ\18\92\93%ËmRý\85Uj-m\a¶¤7;·}A\87Ò\1e\1d¼Íµ*\1cÙ\1d\91Ó\aU*        ¢\82\9aÌîM¬2:\1a}âó\1d\ 2À\85"¡Ä\94:®li´¸\ 17Ãiãf\95ª\8aj§KÇê\90ÒÒ"B(SqUC×!=;Q\9aÙ\18\96\10\ak\86\80Ó¨\80³u\19Ã\ 6²Áw¨ÐÕÉ\96\9f\10xE*ËìÉÑ\ e!¤f\9fê²Í¥·¬\8eÊd*2\99©ÎCr¹µPQ\92\83\9bj¯I\7f> L\18\1c\12\ 2S      E*SEÌ\ 5ÓU\1cÐ\1azs\v\10\98\ 2&rñ\8dTdk\14\86pn\am\95\ 2*\8f\92\90¡òëO\8c\e\9aÏçHCN³E\10\ f\19=ß]<æ¨W\18Ì/\ e¯ 'Ê\18¡\10XHF{¨õ¨Jl\纨ÄIIC\aW\ 1.\14\f\ 2jó3Y\0Ü\ 2\fãÈßätdÊ û©=!*üç\90b\ eµÃ£¢ß
\99(Wqj
+MÛ\ 1ç\1e\12#uRHT\9c\19ø\0yKQ\89ÒhÀªvHèMa\ 4×Á­7\96t¡¢LÓóû§Q¤\1c\1aäÍúYÊ+\17\86\14Ûbgö5\97¤¢\93©RÁ\ 4ë¹_OZØ\ fh4â£Qî\92ÝMK\fÈ\1e\18a\ 1ý\Ä\9a¢ÚdÕ\10\8d\86:N\96ó`E³å\ 2ÕËi\1aÎ\99\14ä\89\vǵÁ#7V_\a\80û\b(Ī H#;  À-\89k\ f¢3\90_u]´Ï, F\14Y\9b¡Ó¤,0|i
+\86gLA×\86»\9azPôa{¯¯\1dk\8aØe¢ç0\ f\8aûµ§\8b\ 1q§ç\9a©Ë4ÍÖ$\16ü)|2py\14p\ 5øµ¸\e\ 6\vàz\82lÁÝù\92³&Om\9ezÝÈØb\8aãË\9c1u\ 4ô»­   \9c\85ª8i.e\1c)&!\ 6^\89\96m\10$\95nN)ÓG\9d}\91½\v\aàÎj\86^¹r§\ fþËìMÑ\81\1cË­\93\137\ 4­]\ 1þ5\7f\ 1=vÞó506«ï\18Ñså\99Y­Á\9e\14ÊÉ­Ì\14\9f\9c/\ 1\13\ fÓ¡;ç\91ÍLLÍ©pêÁ\9a¢"n¶\96×\ 4\85®!.ýYå\87L\ 3ÝâxoüJ\93@ï~Ý\95\98\85Ì\92Ñ\ f\12ùË\96+ÃíVr\1f²²¾®\ 3vó¢2}`àvÔ\10LÀ³\a\85ôz}Ó{\8aþ\90ê\82\ 5Z\ 2é\18DU\98\83\87\8a\83S1ø¿ÑäµH\16\86¬üL\8c\97R7\96Á\18|\83\8dz\92÷C\ 5\%¨6·ã)\ 6Ñ\fi\8b\9fÛX·/¼·\9e09\12\9eÍ2\8e\84\93\88\87QCE\98F\17\91x*,U±ç\89Ò\8c½\ f¦Hxd=ÌÙÏÉx<¾5ñV\97ú{\1e©àc© T¿%\8fúÐö\85_\10T\8b\1eÐ\v3\90(ãr>ð\ 2\10b«`ò\ 2Ó\7fG\eÎIÛÀ2¶_z\`\ fb\91?\1aVúóæ5µ?\98»\91±\8e
+P\ 4½¢çÇ÷O\8f_\11\95ÁÑ4\ eAôÜm\ 4\13î\ 26\95ìÜ×ì\1c\14\15Ýc\1aÙ²º\87$sÀW,õÝÙÛéÑ9B\ 2¦²\ 1½køìFi·³\9cé\84äh0Í\81°n\10\8cú>³tÝ\~\ fñk\b;Ö÷\ fïqíle¯¿kÛ+ô\f\1a'ÿ\14Ø7ÜÇh.\1a\89å\eýHs\9bÐr>ÿ\7fîd\ 5\8d\C\91\9e(\1e¥\91\98Ä\1f%\85íöê        æ¿\12t¥Q ýÔ)\1c6\18\7fݽ\10\ 3Q\13¹\9fb\17\ 6x´¸ÔÖYâk˼pÐen\1co}ÍÞ\8a\84b3M\r*\8fu\97%®HL¶÷\9eÆd\1e¹:æÅ\ 3[­-²³\87f»ívÃ\fTÔ,½¼\15Ä¥Æ|\ebÔe\18°$\8bebvg1Ø X\88\1d\93#s\96
+\v¡Æ\ 4è\9aO¤ï\9c\8f\aK\ 6ØæÆ2va]2\9b\ 5hv,v\99ÉM³\ f\82JðÑ\81õ\e\9c\93ª#\16,þ® u´&\ 1\9f\9d%H°\17
+°gå\91ÁD\96,áÒ\1e½\81pE ó¦%\9bU\vnd~Ú²Í7~\ 1ùo\11Ojâ\1d\a7[ÎÀMø¨J\ 6\93%¿ÀÖñËÝß\82:!}endstream
+endobj
+878 0 obj
+1534
+endobj
+879 0 obj<</Type/Page/Parent 794 0 R/Contents 880 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
+880 0 obj<</Length 881 0 R/Filter/FlateDecode>>stream
+x\ 1uTËnÛ0\10¼û+æV\a\88UKqü8&MskÑ".zñ\85\88\89Eª$eA\7fß¡$'¨\91Z0 \88\ÎÎcùg\92cÎ'ǪÀÍ\12²\9aÜo'\9f\1f\17Èsl\ f\Y®WØ*̳ù|\8e­\9c>\1a+\8eÇ\ eAG45b©\11ºjï\8eFâhìk@t¨\9d±1½¤eX\1d[ç_\11Jáu@ç\1a´ÂÆk\b«\10¢ð\11O¢Ú\8bìjû2\99cV,³\ 51§¿\82ö\ 1Îâá\10f¢e1äÑh\e\ 3¤°°®ÅÞ»6è\1e\86\9b\10½&\1e+\12n\7f&ûô'í!"vü\85\84³Û©CÈp'¥\ eÁØg\f\8d\8fèùMV$ôDFÀù~q\8fÝ´-\8d,!êZ\v\9e\17 \8c×2:oÈi¤:´·»\ 2¢xåç¦g0l¤fã.\1eá]í\8d\88ÔnÐdhù¢\83Q·^\96¯Û  -À²¸¡6\8bõ\8aï\ 5ÿ\94ä08¶ANÑ\92c·ëM¶üdzÛ,ç\83ï.ê\900Þý¥å³"\19<ým¬¢\96o
+[­Ujx¯ ²w,U\809@ öúd\\13H¨r\8dM\vÖÙ\195\1dØÀ\ 4TBinMßàYL\1d\9d\8cÔ 3AР ¢ÄH\97ZÑ¥jÂ2?Þ©\86{D
+P;\1e\9d\12SQZ\18Æ\8b\1e'\80t~\86\81\97\1cs;[ek\9c\9dÜ\15ËÕ¸~ÎuZ~ËÙ\97Æ{¦*\19Tj¯?\ 5b2¨Ñ\e\19\fÓS\85\9e\f³\9e\82\ 1+*ú\e\1c\158\10I§£kµ\97\ f»áô¨éÿZ9·úȼ\ 5-\eob\87ºñµ\v:\\ fTǸu\80`_\8c-3\984\18ô=ôï\ fç!\18;+ÅIõ\96:\97¦f¥U\17>ÔÚW\86cà,ép¦C\1aZòu\96z(\1d̳eNÕ\18å4wt]\99C/Öåè\9baòÎ\93Ñ}(Ä\99ë\9b\16\17\9b\r\13ýQ¶ie\7f\eåËU\96nª$åû\8dôt÷íþ\ e?¼{á8âÁɦ¢\9b"Y\97¸Î\86ªÙP6½\9c\85ÅjÁ,ôæ\14ë´\9fÝü\9cü\ 5¬ú\90\19endstream
+endobj
+881 0 obj
+687
+endobj
+882 0 obj<</Type/Page/Parent 794 0 R/Contents 883 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 57 0 R>>endobj
+883 0 obj<</Length 884 0 R/Filter/FlateDecode>>stream
+x\ 1\95XMoÛF\10½ûW\frb\0\9b\96dE\8a{s\f;\rP$iì$=ø²"Wæ6ä.³$­êß÷Í,\97¢h\aEaÀ\10Er>ß{3«\9f's\9aáoNë\ 5]¬(«NÞÝ\9f\9cß^ÒbF÷[ÜY­ßÒ}N³t6Ã7Yr]¨ºÕ\9eV)}ýøá/ú¬}e\9aÆ8KïLÛ\90²9}76w»\86>Þ¿¾ÿûdFg\8b%l$WY¦\9b\86®\9dm½+é\ fÓ´\r?Àîæx\82Ý\9d]ÌÓ\ 5?¼Jç)}3zgì£\18Í
+e\1fùBÜÖ\83Û\86º\86¿n\v\r\87D\8dÎ:oÚ}ïz¾J9\81$7ªt\8f½¿%Í罿Å\9aï~Ô;2VlÜ©j£h\91ÎÒ%y]jÕh2\8dÜR\eSÂ2m\9d\1frd\9fYi´Eî­C,\9a\1f5\9e¬jÍ\93\1eÂÁ\87¶E\9c\12\ 1ò\9c_\84<C\´qÿðëô\84\8c%ÝÊåf»\17·\9d͵/÷/å\9eÆ\ 2¯\10-çáZö¯ZüCÐ1`|Ì\94×Û®$ëpÏQæªÚ;tN\93ø\88U#·\95k)rá\9a\96B=`ÁwÖr\fÎ\9er\84±¾}\1eMkÊ\92ÜFïá\16\9f¸\1d[Sj:t
+\16\95Dxª·K*¯\8c\ 5\12¼jQÕLY.\94¤us\7f¨\13èÑ\9c?}y\7f²XÏÒ5-/ߢ«\15-.×鼿*é\8e±;Ã奴ü\80Ù\ f¶÷\16ºÊ\10U\e\87æp\90¹Þª®léI\95\9d\8eéS­¼ª4\ 3\9dóD(cW\15],.Ò7#ÇãkÜ]]\ eAÆ°\8e\8ft~»èQ\18s\9a\86M\16uÊJjººv¾\95\82\ ff¤4b&\829¡B5´ÑÚ\92pEç´E\8bùµó[P\\10\7f\16\9c\rðÛª²Ñá\91\83\1dàãø­¤õÝô©Sj\80×JYSw%°\ e\ 1\0v\ eÝn\845\9d·\88\ 3÷6ûXéQsi¹~\83^-ß®Ó\19S\ e\84£mT (      Ë%\v¡\9b«t\91ÒïnÇ0\16º\bÌ\ e\0\ 3¸\9a\ 2 ?N\8eÅH\18\7f\8bÒ\0ÆLß%\1c\a
+#' ¼Ôg¸Ì~Ðδ\85\9bÇ¢E²\8eé½éÚ\96\93\85\1f\v-`\8c\ 3¹¹ñ:\ 3\84÷¬#\11ÝxÁ¶zJ\95ܳ0\94Ð\ 3À\v¯~ýx\r¼µEJß\v4\8fAYiÛQíê欫O98DÃ\1eù^HhÕ74ùì\1d\8aÞ\1a=Ѷ\84 I\b\0Q;D]q\8b\ 6\aQ<¢\14ݳdl<\8b\14uµ<f\9d¯TÙ\13yp\84dYL\89\94ë\11*5VN\91\9f\1dKB¡\90¬"\v]kÕ\ 6Úà\82Xs\1a#\1dl]Íhò?\0\97I\86w#E?¿\1d`\9aÒµÔEÊ\82ÈÅ:¨½w\1d! ¸n4SÜã\7fèYs:5ýù0F\8eq\92<{\94®ºÜ°\82?{\90õd\12ò§\9dÕ¾)L=yøyÉ\9fõó\17n"ì$±L1\105à  \ 41\8aµ÷\0R\85ñª\1e5]\81G?;Ý\0zT\ 3l\80(¾E\89\v]æè\\18-\ 1ö`\12Ç9ê\86ªk­<\990\fà\f\9fÃë\8c@&ÍÕX·O\19Æ*ÂbW\98¬àç\rÀ\8fÙ\953S1\13@Y\84zü¦Üʧ\fQ}©%\ f\10\vt\bãU\ 5(öqñ´\95À\0ÆÇ 3P@\8ep\1a`J\ 2î\1e·\b\r¥°gÛÎf,\ª\9c¤/Ä\8f$\16\15    4Â\8b­©4æ_pãl¹'\8e\82'kÀØ©ø\ fm\7f\139z\152\1c\81÷¨\9dÜ\16,-\1eY²½¾TTb,\82°\93Ø8gxwPz\ 6¸\1dËé\ 2sqõ\1frºX-'ãq\95^\1cV­ g/Ãw\10O!^Ø\ 5^J÷Õ\0ÿW¡\10\ 3gcÚ#\99\19`#+\90.K¶Ë\1cÞ\15\8eÜÎ\86J?B2­4\9f[       \bâ\8eö\93ÒX\8cìÀ|Ô¦_d°«UôÛq?8\8f~azuwóåÛÍ\97\87\a\81ÒCò\a«\13Ûyx=\89\12d\1a\83\8cC<     \86¦ù2b\18\8fº}÷áÓ\9dX\1e48è%Úù¤}\94\9bÁ\1cÇó\vc\12ªä\1aÕ\¶5ù\1aEã·FT\1e\9d\95Ím\1aùQÖ¿ð\99ë&ó¦\ e+mË3\82L\ e¼bGåÏ\9cc_Á02\80ã-\86_ÞoÕ\93\98Þß\£\18[ÃRÔ÷)lõªivÎç\94+¨96ï\87×G*\1f\8b>\10ëºt\10ÂiÌý\84\ 6\1daÏC\1f\ 2ù£\ 2G\0|\b\12w¼ï\1dv³äù\ e6f1Ìb]e6\86\18â\9a\95¼¼WÅñ~ Y\80«p¹@§¢°@¿\ e\0\88Ù\8e\9aúê\ 6\98Ù;«' M¦é1WBhÑJr¯~húô2Ã\93HP\193¬KA\8c\84\90È2,\96Òn! \8f¸ÐATB²ÂC ¯ot¹¥\87D6\97 \14\13\b\18^\1a0£sÓÔ¥Â\9a\12§\aË\0\9fNJ\85s\81@«ß`\ 4_,\fXêh¤\97\83øõp-\1eÈø4Á)ld\a\1cUO\90ÉÐâêx\9cð°BÈ¡N¶\16¡,|\ e\aN6z\94m\9cB8é\1cæ+\86*/ba\13Æ\ eÈ\80>\9d\9e\94\867F\9e\1c}À¡?ÃBç\9d\93]\7f\8c3Î=¥+\1cãxå      \ 5\bµÇºl\ 4\96\81\8aͲªÃ9\8fOÍý\19ï8\87Ih±y\9cl?\8b\ 2£ûòb\96\ fåí·å\10À\80\14\10·_\99\83°IÛ¸\98\98\98\ 2ËóÛ·ý@\fZºâ\13ëõÿú=\81\eÂrÍS\r¿PäÉâ\92\91íÏ\93\7f\ 1/]$3endstream
+endobj
+884 0 obj
+1797
+endobj
+885 0 obj<</Type/Page/Parent 794 0 R/Contents 886 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+886 0 obj<</Length 887 0 R/Filter/FlateDecode>>stream
+x\ 1\95XMoÛ8\10½çW\ft\89
\8a?R'ÝË"I\93E\16mÚm¼í\1er¡%*f#\89Z\92\8eãþú}CJ¶$·\ 5\16\ 5
+'¤É\997oÞ<æߣ    \8dñoBgS\9aÍ)-\8f.\17G'7§4\99Ð"ÇÊüü\8c\16\19\8d\93ñxL\8b4^¬¤\91¤,\89\8aî\16\94®ô¦¢T\97¥¨2r+áh£\8a\826Ú<á\93[ѽ(\97\82°=#Q\14zC\82ÖV\9a°x\91\95ªRÖ\19á´¡Ú¨gUÈGùjñíhL¯'³d\8aËãTW\95L\9dÌ\88\9cÆ÷Ã\91Ód\9c\9c\12\8ezÆiÂ\92ÑÚñzº\12Õ£D,\92\10\9b4v¥jÒ9Q\8e³-é\8a\96\1aq   *t*
+$qs\1f\96¶ÖÉ\92´\19Ünd©\9d¤R¯+\ eÁïÇ®&\8a\f\84\16+@¨<\vU\88e!9¢Z\18Ç7s(|èÉͼÁ5¾\97\96Ío[´cFÔÊtm\94Û\12Ö\8d0[Úà''\11õv\10Ø\9f¨D¹¥\8b¢P\16Yq\8a|S@g!E9ê\84\93\e]úåR¨ªÙ\93»\9a¬r2á\83¯\17G(2ÍgódN§çgø\f\84 ÅÎ\ 3'ÞÒä´áÄx\9a\9c÷X1ON\13ú¢äFU\8f\1eL\ 6(S\ 6UÓH¡\96¦TÖ*]Ù\80C\9b1\8a<e~1­\10\9d2\19-×Î!\e\87íM\v[ôi\7fRÔ?*n¾\99ÐU¡Ò'\ e\ 4ÇàLKK\83\9f,­k\14=S¢Ð\8f À\vÖÀV\v\ 2c\a3\82/\1c@Ü   Ü3\98Cúûîö\9fÀ¬¶¶L¬^       \81\10\rý8\93LÙº\10\aØó\19¹6%ý\16\12h\93c,\80\11Ý_\7fþrýùáÁwÊCü^#\9bJ\94òáÕ ëÎ\97¾úÎ\fgN[ÀÂAC¤\1ap碌¼ýxïO\1eÐ'´Õ¨!èî8\8eç'\87ùP9ÆÝI\1e¨Ðë+Íßê´4:3\14\98±\ 3\ e\83È{YÿäÎLÚÔ¨Ú¡\ 5      "Â5W\99¬\9cÊ·ü\99\91n\10¬\08äg\vä׸+\94a\10Ó\1f×W\0#W²ÈÚÊú\14ja-ô,£L8±\14\16\1dÓÁþ649\1a\1e\08èÑ \99Ê\91H\v²ëºÖÆý \e+½v\85\15è±Wß8\17\85õ\94Ü+rÌY5$ò´c\89\v\9aKK àõ\18ÚùCMö\ 5ëЬÕÕè\1aÒ¹Õ\95\1c\90*Þq½Û¹á\92î\1d8?ºYCí¯tå\8c.¢!,\v\ 4Ñm¡\80m¯!2\95çбÊùÚ\98F¤}\0­~(iGd5Ý\1eãªPrDÁ      n\ 4
+Ê(t.\19\14U@Àöí\97+c]Wîfogh¹_ËÝìÍ[Hbw\b²ÜM\12ºá«;\8aÔ¯+Óc§mÖ\81â\ 2\1cÚ5ÅÉ£Ñëú\ 4Ä\ 2ÝÀÝ\9ag\ 6¨é\13Kµ1ÒÖºÊ\98Ç\91\91"\8bF\14ñ(\90üA¾`Jàã/\12\ fGb"\ 1\80RÔ5Äg¹m\84_U~\8eº\95\91\92d!KàÏl¹¸zOa03ºÇæxDÇ\eüÇq\1d¿\1cÓR9Û\1eæÏÀ¶\ 1ÞýÈùÐNmxN6\ 2\1aòî¬u\ 3õg{ \1e\v½ôC\9a<\\ 1á\1fP¹er¿\ 4ñ\býΦ\83­\ 3²ç¬0,ýPî]Ýì\81,\87\ 2ùè:Ñ6zÏ8ìâè¨Yï¬\1eáÐ\89Á(õ#\8f;\8dÙÎÂ\98\14\8c\8eÇú\87_       ve\7f\7fW\13ü7\991\18¸\10CßKMNÝ´!k\83rõ"ï ÀHí¨êcòy\ f\eü\82éPmÃÖýY01 J¦«cÇt\81ܲ/\83ID~L       \1e\13\16j\98Â\86ÙF+Û¢Æ\81í\a\85\1c\ 2\18\ 5\9fw ](á`k\94\ 6y\ 3i¯X\83k\98!\bqm×~X0
+û¬ìN\ 1k#sõ\12:\8a÷ðt8È\83¢{\94\ 3v\83.ÒTZ{\10\ 5\80G#P\9e\9bC\88/×°ÔìTVÜÄ\98\9a\1a¯{+ÀWé^\8cÞd3ß\99ÌÂ{P\95®\vÑ0ÛÏC_Kv,\9eç\aÐ\94\10\1eV\84ßé\16¶Òd\180l¬\eÿ\1eõ/\8cx\89§\82\ 4rÜ ¥\86¦+Dà±lì¿Æ¤)´\0J\8c×Ý¢_¢N+E\vñ$éckÜ\ f@c\89\12\ eâ\ 6\9f(\89\1eâÍJ\81F\r\10¥\14\95w\ 1\95§äÃ+\1f\91\91<uÑ\89ÌÁ&7ÿ6\ 1v\83ä»Õ\ 6¶+ñÜ\1a    \94©\1ft\1c}<\88\ e\ 2ÉÜ÷þ\ fcn\83#ðB²@\ 6î<Õkc1¸4z\ 29bk¡õ\13\8a\8e\1f\ 4}\97F\8f¨I`\10\15¯u\8b\9cÐ\aÍ2#\1d^\eþIèf`\e{lTc¥P\bï}ýk\8cëó\b]à%¨aw\0Nfìô\7f=\0'ãð\10Û¿\ 2y\0N\13z·sø\9fö¾< ÔªÚn
+¶{1ÍÙ\98\a\89Û=¾È\86×\17\0\aB\e\90mg\f\82\98\0¿Nm\824ûiÎË\8cng\95à¹\a\b2>L\1d¿9اÖ^lQ        +\8b|\14\0CÙÚößû\86\9dogÿ°»\11£µÂÁ\16\19\1clf\9f']r\7fþz@\19ðʺmѾ!\7f\9a\13âJá\ 3ø  Ú\99ãDòE¤l\9e8CËö\9bM\91\97\ 5v¼Þ\1e\r°è"\85\14F;O\ 5Ñ\10Ktj\18ø=\9bÖä×^à\19trsÞ\18ÕÉü,\99àO\ 5ì¥ð|¹¿øpyA\9f\8cþ\86qDïtºf\83!\1c¸É¡¼\ eÛ_\9f\17\85\7foÇÓ³S¼=ý\17gc>\rïÖ¿\8eþ\ 3Ä\06¦endstream
+endobj
+887 0 obj
+1782
+endobj
+888 0 obj<</Type/Page/Parent 794 0 R/Contents 889 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+889 0 obj<</Length 890 0 R/Filter/FlateDecode>>stream
+x\ 1\95WÁrÛ6\10½û+vtRf\1cÙ\92mÉéÍ©\9bi&MÜ6ê´\a\12\94\10\93\ 4\ 3\90¦õ÷}»\80$
+r:ÓñØÖ\88Àâí¾·\ fËïgSºÄÏ\94\16\9aSV\9d½_\9e]|¸¦é\94\96\ 5\9eÌo\17´ÌérryyIËl¼Ühò:³u\8e\7f\82rãtÖZ·¥F»Êxolíi£<Õ\96\9cV%UZÕ¦^\13\99\9aZìÿëËÇ\7f\8e\16÷Ö\959)ÄtºqÚëºõo\96ßÎ.éíôj2\ 3\801ïã¯.>ÜDlc\1a\99\9diu>
+\8fv°ÇGÑÛ\8dj\11|K\85)5e\80\84\1dÔ\9bv\ 3<\0dü \87Þv\80\12\ 3O"\88Ù|rÍ ¾ªj¥Èok ñÆkÏéx½[\8e¨Ã\12\14ÖÑ\97%­¶\84´ÚÎI\rP\16Uó×w?ÿöZ1\92´+\9bk,ã\ 4¨Ö}Ha\9f\ 3B\aH\96\v\8b<üF9M!\a°¢Í³\96\1c~Y\9e\81A\9aÏ®\90Èõí\ 2\9fgøÅÚ"\10þ\8e¦È\90      ¿¹}7\99\1fQ>\9fÜLè³ÍM±e\16¥\8aHíUÞ\8fy\0\7f3\96Ï8ÙÍL¿º\9d\90\ 3*äMÕ\80\98mT½æcY\0¹ñM©¶I\9d£ªr£J»Nê·²/ç",ÊJ\93\ 2\ 5\98{%=|:Æ=¦U׶¶\9eЯ¶×ÏÚ\9dóñ¨\16W\97JS\99Vµ"óHMçµ\ 3?:\87",­°°ç¥¶\b\87«ÒÛ\ 4\98©[íT\16¢\88\18%Cߢ6Êå\91×\83\9c¨Rþ\89µ\93ãSÓp"è½û\87¯¨RÛ:\ 3À"G(\85q0\f>\15X\92\83[õ¤k(\96\17d\99íê6UùÇB 4Ê©J\ 3eì»Ù®ïj\881+ÉwMc]\9bV\8eU\bc@øð\ 4æ"V2.\80\1cìeÌ\aÕÒ\9bHBW\8dìãíì1\1dZûØTzS\96T(S&9q/s[\85\13÷´\8eî²L{O÷º6ð\88øø`\12\15\1eªuè\10\96jìò%\94V\18ç\ 1\ 6\ e\ 1åY8Y\8b.çvG}Y\89''å§\1e\144\ 4n\ 1\1a\ 1¢        \91K\83Ø`\8fUãÙ\14C\13£#Ñ\9d\8f\86=kt/Ø­\93dµsè¾\88\9däX\18¿Ó\15Cn\9cÍtÞA\8a\99\8a¥\836DE¹É\ 5\95~A¥[\9d:èã\9b  -ÙRؼcâ[Û!NM¶.· ¨
+\ eßt%\9c\ 3î\1cL\2¼X;Û5\17Áã\ f\82öR\ 6     &ÌÍÍýKèØx2º£\ 3ê-üÌAúß;8=õºLÙ\87K\80\12Ø0·\1c\93#\0\8f¬Xx\93kg\1f\14\17Ô+ÂW\83m\84¶b\ez\1c\v}À|\9d\93¤sNà@Rz|\83{ÍKÁ\9f\91Mál% v$\ f3\8eN\ 5÷ÿ±Yñæ\9azþù¤ä>|J\99\8a^Å øîô\Ò¨ q¢¦)¡~öÒ\11\ 1\9c\11ê$gHa¼Éõ\84Ðû`9!W\10ѳÁýÃ\90\ 6!H­ULê$8øÇL ê\87aiåÄÏ9\0ò?Ië$«¢Tk¸'îfí3ø\9bÎ\13Tjeq»\ 5\91ÂëJÛ{Æ.Î\97\1fßÄ+\95=É÷¯\^¶Î \18Þ¸Qè7n\1cæ\118«@¦JÎ\8dªÈlÕØ\1aI¦*ºóaÀ\89þè\83\1a\91\e\9dÓ¨\1fIÿ\8d^F´2-\1e\17Ü\90\83\91\0î\\90Å\ 6\19\1föF8°yßeð»tD\1aÝë\12~\8dhb{8\ 6ýàñ]Æó\ eâ   Û\91\12ÜQf][\87'¢5P$2\81$\84ä8êh\87Û/Íðo\ e\ 5\97\1d\87jÀf5¸Ø9ç8+òrÎt¸\1aN\17ôw<OâÞAU¹¡=z\vªÆ\ 4\95P\90ëBu%®¡\bZ.;Ü\f\98ï¼Ü¥\12\18\1f2DÙ2"qDvã\9e­\9c\15\8c\8a?T\1dl¹«³\8d\0{*Ò?5¦\8f,½P\87\0ú\ 5îÎ\85\114'²\96èð8¶=>\ 3½°w>\8d\89\11\eTÒãO[?%&t/*à7,÷ eî\8d£º\8bE):5gÚk:¨E\8a¢¶\14íocÖ\9b\12¿r\ 3&\8c\1c\84")ü \84Ü^'U Wå9\9cÛ\89R¸2\87\90H\85¯\9cРüÈ7:ÃmqBÐ\12³M\ 2졯qÉnLsræ\8178üa²\84ã\9c\14þtt\802÷åйð\10gìéí\fo,ÿ=cO¯oå\85âðZ5\9fÌ!ÑÃL(*\96
+&\13ax}\91i\90h?¢\89\15\1cæªýÜý\85\87\0¹üdD:Ì\197\1c\ebc\8b(lÇÃk?\b\a\ f° \0\ enK¬DË\fæÕ       Átw÷íO¡X»áp0Fí\8d\8b'×ÈÊnÄ\82Ðáº\87\15xËIVì;w°*ƹøp\egÊé|1\99Ò|±\98ÜÊëÙÝç÷wô»³ß`yto³®\82\93ȤÎÑß\86åo\173¼ÉæãÿûZs½¸Æ1²õjÊñ@ø\1fgÿ\ 2ÁØÓbendstream
+endobj
+890 0 obj
+1613
+endobj
+891 0 obj<</Type/Page/Parent 794 0 R/Contents 892 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R>>>>/Annots 70 0 R>>endobj
+892 0 obj<</Length 893 0 R/Filter/FlateDecode>>stream
+x\ 1¥XM\8fÛ6\10½ï¯\18ä²\ e°«\95ü½\ 5zHФ\b\8a4mãc.\\99^3+\89\8e$¯×ùõ}3¤$Jv\9d¢E\80$\92Èá|¼yóèoW     Åø\93ÐbL\939¥ùÕÛÕÕÝû1%      ­6ø2_.hµ¦8\8aã\98VéhcËTÓÚ\94:­my¤J§ûÒÔGÊíZ¿^}Åæi»ùv<\8f¦Ø>úT`\93¢}¥KJ3\93>UäÖÎüÚÑ«O¿½êo\1fQmIívÙ\91ê­&Úé27UelQÑg\95?(ÊÕ®\92o\8fæY\17½\ 5¦àÍl0¦Ûd\12\8dÙ\v>þî±´ûÝÝÁ\96Ù\9a¨¼;ܽP]\9a\11J}CªX³É\82\ e&Ë(ÝêôI\8eH·ªxÔëÞ!È\ 5\82¢\8dÁfõ¨LQÕ²öÁÔ\15[#S°\aïVW\9c>É!%ü¿¿~½Jæði>aÏrZ\8eÛ\87\8c>s    \90øÉT¼îRÏYðö\82\r9%ñ2\9a{[Íöþyå#u5õ'\ f­\a\95\93d®5"î\8b\91¦¶#Ú©RåºÖeDo\8a#IÌõVÕD\a]jdÎåK^)¼(l-9A]®\93\ 6©2Ug\86xQ¦75\1f}+N¶\85S\99-\80\0Ù£]¾\ 34Dâ,µ`{WUº¨\8dʲã\r}×¥uÎùݼ¸Kƨï\8fºÃï\b\0«\9eð\17¢Ó\0\89V5\0 *Ô\9c\8bk7MÐÚ\ 1\eÑ8ãó\ 6Ô\88Ù½éÒ\ 6¯ì\ 1fjë½nÀé\12æ\0ÈÑJB9'õÖVüwwJgç9jp1^Σ{\9aͦQ\fXM\0¯Ä?5ÀÀã¬×Ð\1f6miôË\ e½ijé¸^mðÀ!£vìG\85ÂÓ³Êö\80}Eò\8a\83\ 1ÎÃ\13qþ|~r~\8b)i\84\1e0\eçûþ¥\92wW
+IYká"*Ù×]i\9f\8dc¥[g¼ETjó\9dªÍ\83É\98»\ e¦ÞzN\19G1(\8b\ e[\ 6±ChË;>Û´Q©ß\87ðÁ4¥]ïS½\8eh\ 5Îáú6TwRd\90¤Ù\1cyQ[Ð\1e!\ 5¨&[À\f\8dË}¿[8¾x±X\bø9ó³\19j>\8b\13!\94©üë\9eºÊÇL3!\99ÿ®_j\1f·0\9dcÓ¦uCg\1cÕõ\98N"\b¨.ÄAx~NSÁcß\9b\8a§8@(\bdè+¹ÉÓô«\a\1c0@ÓåRà.ÃÆ=´1O\97÷½\88\9b\11òE\14\ 5Ü\86ð@n§Ü\96Ú²ÔÕÎòÜðLã[å<Í   ÏI,gH\0<\83Í\17      í\Æ\ 3>ëgI¦²g¥\8e\83Zêþ\17ܦ0\13Ñ\f\82\80l\8aGøë\ 5@\80×\96¬¶Ì\96ÙA\1d[þ@\84׶¸n`ëÚr\8a    ¶dÂB    gä\9eº\12Æ÷ø\18ÂöÿQ\16sV0JÃ3áÁâ>\9a\ 4\1e\84Ï\0r<\8b\16ÁW\1eÔ\17\80Ü\ 47ôßÕ\88\1afó©³t\11\92@\19c\7fHh\9eë¨Ol§ÌÖ\10\9b\ e\94Ì\ fymHlÂÃ\9d®\ 2îÿ\13±\81f\99x\vKè \88°´\16q'íÓg;&»8\1eöÅÊ\v¢\0þ-\1ayt³\9bá8gmçÞ5úÖËÙ\ eÄ\r?\84ÛÚv\ 1\961\14X\92\1a\99à\ 2\96\90\92úÛ\1eQ8\91¢dî\aýbË5\94\92Ï[£\8aß\8b~ì´´Sµ"<Á½@I.'ȸµx\83\81Åâ\97gîZWii\1eX\8f<Øgh"1%ü¬_R½«!I¸;\ 1ôA±Úh\86©8+êÏd\91e®VkÖ?\83d¶É\97ií>¶¬ã\94Í`\87ë\846\ 3\ 3W[{\\95\v,öÏ\1e\97í\f«r\ 6\83\ 1PÎd¦K-=\1c\8dÚg\0DË}Ì:}íÄo\ 6)iÏ\1a$C´¨[Ûæ4TÏîÞ2´6Hpçÿ\99ûZ é/û?ðìT   \ 6\r9tàb\83\ 5¢\8d\ 6Lv"ÑZ"\exÓ©\96\13Z£C_¯ù\9dM;~ðW\12\8c+/\8at!î»y\11\18îÑ\95»ô(¨µun
+\ 3"S¸\19S\8a7Ìd2\16]gW[ð\a\8fS\93UC\82¨j¾o\8azä¾å«*Kë\96Y\19)\81\a¢\ 28'r«\810    \\1a\ 2\1aãòh÷\b¾\10\ 5ÏNíw|\89awÀ\10Ø-çVþÔÍ\9e\96um&\97.Gî\9eNN¼@\80\94¢UÁNÅzP\91\ 6ÑFËW\90\97ÕUq]{E§p{DçÔ&Ýgªôw*()\91B"\16\0\97MNÃƲÆfw:ü³\ eoÈÎÝ·)\99\16ç\84\89\ eº\97\87FS\9c\99Ùø\rÄÿâ\91LÆØ\17ê\8d*\7f\88\90\8fÍ\97ÑìËké°Ë³Zh¸)\8cËrµÓ©Ù\98\94\e\90Y\9c~â$u}\82QÑÀ°c+¾}þ,*\7f\80Ôs´\86\85\83UMÞÃ\1fi~`òÜ\16æ^oüîýÒ§)\99/pµ\9bßO\90¨Ñç7\1fß¾¡?Jû\15ÁÑ/6Ýç¸\80Ë´b\97p\99çÅ·\8b1~AZ\8f ñ"ú(\17!®¡$\výÒ\1dÝÁ¼âíÓÅ\14úO¶NÆü\ 2õýóêoÑH\9cHendstream
+endobj
+893 0 obj
+1657
+endobj
+894 0 obj<</Type/Page/Parent 794 0 R/Contents 895 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+895 0 obj<</Length 896 0 R/Filter/FlateDecode>>stream
+x\ 1­\95ËnÛ0\10E÷þ\8aAV\ e\10«\96íØiwé\v(\8a6-¢ ]dCStÄF"]\92\8aá¿ï\1dê\11UuvE6VHÎÜ9s\87ü=Ii\8e¿\946\vZ®IV\93·ÙäÕÇ\15¥)e;¬¬¯6\94å4Oæó9erzí)W^:½Uù\ 5iC·¢Ú
+Z$ódE¡P´\17NT*(çéÍyö\vÁ\16}°Ùb\8d]Y>\95N\89 ¨\12þ\91÷Ì©_ÙY'\15uë6W£õ\;%\83\97\ f\ f¶´ç\87\ 5õ\99\ eÊ)ª½ÊQ\85\ fJädwã
+ríeíyO\81Ý       kù\90M\0\83.W«dA««\r~£xB¬]Ãî5¥¨\91Ù]¦\feHo\9dl\12úd@GÈ ­¡\83\ eELê\830¹pyËs§KE"\ 4\ 1
+Åî÷Ú<4@\9f»3[pw¦M\ f°Ç\93·\95ê
+y\7fs;\88±ÕÁÓýÔײ áé\f\89¬)\8fg÷ç`\10l\14r÷õÓOÚ+Wiï¡Ðs0A¬'¡¬Ð¾íGºDùH])\81=h<\0Ha\88¶ÐMÒ\9a]©eÀW8(e\1a®}P\8a
+ô¤ES¾\92µÓáH\94kQÚ\a\ 2\8dS\87FÙ9Äö\187\8e\88µÀ\12jOtλ1\8a\ e\82\8fh\1f\ 5ûÂ\1e¨Þ\13>uW)\15\0d,E\16\91\93\90RyO\ 4{Ælö`\94#\1dÐÀ²¤.F\8f5R\ 5Ó\91\\9e\8f¾Ñ\91és\7f\0Ql1T-\80\84î\f\92\85Ú`PÊVoË\ 6\b\8fAC\ 3\15>D`æAÀÊÍRËs$@#&\ f­0\96[Æ)£©\a\ 3ø\83cõt¸½\8c&f\0\1f® ©]\16Â<¨&ÛÐ.\ 4\1f\89²\ 4Tì­¼*\9f°iÈ°ö02/\8e´ùÎ\ 2M\95\17$á G\1f\eøêãe{\89Léìæó\19\1f}\1eê)ç|`+\bùÈ¿YeϹ\9f¢H¸3ØEç0óB\9eSi0°\fb$¼Ó\8b¬ðÿ׬õ\ 4ô°\8eèË! N$3\99±Q0\940NCØÓ\81ùÇ\93\ 3á>D\9bÁ·hÞ¿è\1a\ 5÷çÍ\84R7\93\b$v¸k\bc\12\18ú_sÍ\13\16\11óJ\ 3´\87|ªø\13\8c\87îm½y´õ\b\ f\86£.sx\ 2cç©ÀÌ\8c\93½\13Fªò\9f¦:\81JyÜ`Áñ\91Ó\1ePÆ׸\87"J\b\99\94\ 4þ\rÏ\93}RÎé<Wfx\99\97.ó«Övéz\93ð#\897pð\18Þ^\7fy{Mß\9cý\857\89Þ[YW
+CÈ7;\v\9e5§fͱéÿ¸üW\9bUr\85§\ 57ïrÉ9ð\1c}\9fü\ 1_¸j³endstream
+endobj
+896 0 obj
+853
+endobj
+897 0 obj<</Type/Page/Parent 794 0 R/Contents 898 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 77 0 R>>endobj
+898 0 obj<</Length 899 0 R/Filter/FlateDecode>>stream
+x\ 1\95WËrÛF\10¼ë+æà\ 3]%\82\ 4øöM~(q"ɲI\97\ f\91\ fK`I®\ 3`a,@Iþúôì\83¤(:\89KR\89Äcw¦§§{öûYL}üÄ4Ih0¦´8{½8ë]Î(éÓb\85;ãÉ\94\16\19õ£~\1fWÒÎ\9b\8d¨\1aYÓ$¢ÛZ\95\8d*×4o«J×\r©\92æ¢X
+J¢$zx¹øfW\8a\87n¥î \8e\12¬Õ\99DqDï˦ÖY\9b6J\97îÉ!ű\7f2\99ðs¯åZ\95%op¯\9a\r5\ei\17îS-s)\8c<÷»\19·½!ûH)\1aµ\95ôE\95\99¾7t³ *ÄYÈt#Je
+Cª¨rYȲ\91\19ïÞ§n<pÑm\95 º\9ew?ݾ¡»\8e\8add\97\9dß~øp5\9fS)
+\99Q¥*y÷2"` ·J·\86¶²6HÅ\90^\91\8fK\97ù#ùàðÎ\95(¯E¹\8bæhÛTä¹\89üÅd\1c\ 1´¬³@Ê"Ë\14\83$rZµ¥ÅKäªyÄBz«2,¼|t\89Ë{ììÃôÛ¢$iÞfÒ¼â\95QànX:Ôl¥k\ 2Pe®EÆP[°P߬\ 6\8a5ÑJåÒP£w\80ÎF½Ù´w³è%Ì\884W\0ÑP[é\922Y\882\8b\88÷ê]¦¾\9eÝI4\ 5\91\90Î]2\9eø\9b¡Ø|o\aýç*D\ 1\10\9f\ 6\ 2\80Q\17¦À.\10Tö"Ë\1c\v\11é\17õCÔ\19Jvqûåî%!-ûôûÂ.Ä)è\9c\8cl8¸w\8b3&´e5ÅüéÓog\93a4¢\91¥A\ 1úO£\81ÿ\96Ó\9c»\ 2è\8dâ¡%ɾ\1dî:µ\aw\0dk÷tÕzM\9dMÓT¯z=\10\8eih"£Û:\95\80}-£Ò\85³\8fÅ~â·\98\'`\f\19\92§ªË0ø¦ð´¶\91p±É²\ e\1cM7$\fÍ\eQ7ouzË\91Êú\9cÞ\95\87^\9a;ÄsN²I£\b\9c¿ëÌ%ê\80u=\96ñp\ 6¾\ e§c\14\13Ð\8dgQì¿í¡\eN¹Ô\87Jr=\7f{\ 3ê¥-·!\9a\16\ 4\12Í\7f X\98¬\8c
+\95ÖÚèU\13¥ºè=\85}\a 1±\v]K´\0>\16n\ 3ìÁp@\1c\ 6ÉÏ:ñâö=øs\ 2ü\0îÏÀ\1fÌ¢1Óü°µ\98¤i*\8d¡7\9a\15/§+eÐ/ é\9b+lC\88È\96\ 3\1cÒËo2Ž\13[ÿ¯öaªë-\ 4!4?C\10\16ÿÞÊV\12úSUmîÀ\0\14µn×NY[#Yº P¶ö,7\99\12:k,\96¦B\ 3=SËozIO\10>\11ü¿\90\9bLÑPÝ\80Üb#Q°\r¨¸\94²$£\v.\1fä\ fѤº\µ,±$\96ºmè~\ 3¶@4\91\852TH\ 1í\85úàºD\89\81fM¥\86\17\19ß[U[Éçt,köÊ\13Prªgõn  \8a«Ò4Ø\ 2\90ò¶^Ö7ÚX«Óuæ\1a?Àm\17á¶ZÕºØÉT\90H4Î\ 5-ÛõÑÎò\ 1\ 6O¼³\8f,\14\10Ù¡\93=\95Ü\90\12\0\0\12Lkg¾FÖ¬Ü\956(\1d§¾\85_\1c»\9c\97wf\b¿éóG\8c\vF\13¿+õp\1cUlñÕe
+SZ\vU\9eïr<v\83\144bBaé£ts\rÉ!H´å\94Ç\971{\8a<^F%Ùõ\ 3ê\90\ 5çuÚt\10)ÇoàÊàÌFÀ\8ck\92\ f\eµTÏ­\1dF\19Æ\82Ùþ.\17\f\92\81\952avSE¦A|f\90O\ 4é\84\18Q+Q>Ò½\80ñjD¤m\83\93ï\10g\99ÁÊ\ 3ù\17\eùH\ 2ìn\e\95«\1fÈ\ 4ª\aBbDðþí­4¼\18Ô\ 6/\ 2«<×÷\fÓõ\9cþ|\8du\1a\95æ\bµ@\b *\1a×öÊFæ\15©\15=êÖî\95I\94\1eoY$Cê\87¾ýÊ\8bÍØ{u\87~×÷Hê¨j\a>kÜb7\9a>£"Äs\9c¬\85\1dK\98Ã\87\9bð"Îiá               \1c\ 2Þ0\1dD\98-í7ï\r{ó³F\fóë]\86é \8fG\av\14Ú;®÷SßtGfà¯öþ^ö<F¦÷1\9eÎzq¯?\8a.æ·û\98¼û\aÃÀ\7fJF    \14\9c\9d
+\9fñ\87j­Â<\1c¦Ø$\9e\1eùØ\ 4Ã.«ûJ­ÛÚ*+oÒ»\1cyLãY\82\9c»É\8c½á/Ëß\17_ik"r_dýâëé°0\94pX1@\vaÅ3è%â²\13É\1e¨\84âÑä\b¨\93£©\93\88ZÂ9a»<=BSÁ\10\86ÙéÆÛ}`¡Ïø:\b\ fe\14\7fC\99­Â=ïnß\9c/l³*èDZKÁêö´óBë±V³®ú×ìú6\fÌ\90;&¡SÃ}§l\86Á:\18ØE\8eF4p\rLýûÅö18)õÓ²\ 1x"ëÚÑ\8cæÁ²ÔD\95\1e¢Î4>­íòØ6¼\8a\86ùùÙü\8ef\92Ðâs«±ÁÈvG\ f?ópk\ 3"\96b\9c<*Q\ 3j>a¹R8.¡¾ölÔ  Pø\9dYN\9f\9f :,KËcéµ\9aj}¬Âê®Ü°wh=\9e6\95LÕÊ\1d$¢ö(Ãêê7sG\ 1 ¤Se«ê\8fep\1f\1f\16Êv\ 1É\84ý\1eÕè\97²r)\a\rè°Àº\83\ eðq>\ f½Ëä
+\80\82¹\1cà\11*\96¬\16\ 2\10±\847¢ºÏÉêôÖÊmP)nzÛqã\18\1dgÛÌ«Á\89;ûÖ,¼f¸FõºÖ»\9cú¢ñ\ 1ûpðýµ#ô\10ç\12\7f~\1a\f\19\1a\ 4ûñì\1f_úÉÆendstream
+endobj
+899 0 obj
+1753
+endobj
+900 0 obj<</Type/Page/Parent 794 0 R/Contents 901 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 89 0 R>>endobj
+901 0 obj<</Length 902 0 R/Filter/FlateDecode>>stream
+x\ 1\8d\8eÛF\12}\9f¯¨\a\ 3#\ 3#\8d\1a#ÀÚÎÎÂ\ fv6\99Y,\16\99<´È\96D\9bd+Ýä(úû=UݼH#g7\ 1<ÓÓ·ªÓ§ªNñ\8f\9b\88¦ø?¢eLÉ\82ÒòæÃÓÍß\9f\93Õ\8aú\7fì\ e\83)%Ód² Ùj\89ߣÕl²"«iË[0\8b\7f°þþaFQDO[\8a\9aÓS&óSzJGO{í4\1d\94U¥®µuw\94WiÑdyµ£·O_oî\1fâ°wt°y\85%\94Ùü\ 5?¶y¡ý\8aöôQ\7fÎ\1d)سÑ|L¦\ fV§¹ªuFªÊÈíMSdT\99\9a°\82\8f\10/[«#6ý×\7fÜ$ëédM\8b%\§\92fÉr²\f£\82\1eÙQ8³\8c09t§q¸$¯¨ÒGüpµ*
+Uç¦r\13¢\ac©40+¯¶Æ\96òw2\15ÕûÜQºWÕNß\11\9dLÓZhõ\16\ 6\80\ 1;\87vÀªÅª³1XÕ#/\8e\0þÖ\91K[?ç;ë\8dp:e#\19\8a~»ü\86í#2[\9e\19'+¾l\1c%\93\18>\8fÄì̤M©«zò
+FÙ\ e\18ñ\93\16óx2\13ÚÌæ`\r x¼ñÔ¹6Óï\80\83B0¿\8a\1d\94¹Y\ 2ÔýL\8cÓ[âÝ?¬)\9a1Ípc\ 4v\r\9cÄ\93hB\1f­\86ÇàÄoB¦7¿³Ù==§4\8e\97ìÛ§\8a\8cÍ<ø®9\1c\8c­å\11\9aCa\94pÓlé\82\8fBHð\97\1f°l\\8d±Å¿©©¶ù®\81\91JVàq\99\9a\15ø\9euf\b|¸½Å\16Q!+\0½§\87ß\ 4\9e`s\8633O³GUnÔ­\ 3£\10\18\95*\1c9Cb)\9fOX\8fH9Q^²\aªªéÙGÑ\e\9ebV9m_òT\82`p½°xs"úw^eæèèË\93÷VÖ#J\99\94\ak^ò\fG\ 4|ÀéW\90`sÅ\88=¿m=\8c\17`\ 2\10þOOóÒdùöÔ\99£-\1cråfÂÈyÈp\9bÊ2Y±+ÌF\15} ;     i,Hùiµ¬¡­)
+säwn\93ÄÀ9\ fåó\bЦ¦±\ e\fÀ\12¨\a©\88^TÑh<¨kÒ=)G·\aUïo%±(»Ék«\0í ¡l4¨x(T\8a·9æõ^©\7fSu\0\f\8f\86\9d\96ébÉåµ~~û\83\94ÖLâ\bd\9c{°~ó^\v\13NIÀ\90ðß;*u¹á'        öWµÊJd \9d5Í¡Í$0Mm|º|µ?\80볪\87Óéº{J6ZÛ:×®õçìvk\90FA&P¬ÈÓ¼.\0   \90
+©ZL¹½²ñl\ 1ýH\7f\vf\87¥q\844\ 1\ f\87aza8?\ 66Þ7ÎÞ\17&UŽã`¸\ f'_³v\87ç¬É|öÓUw6\16\8cÔw\97\80e\19\926ÜüÞ!ïð\9aUÊL\ 4,]Üvi\0\81\94;&lEG\84»ÖÙ\15 Þ1\9cG\v~P\91»ú\16uäã^§ß\84èÌnr'Wë\92ðHeî\1c×\1a\8eÎR}ë¢úìÁ\1c§"±M¥à?rBª*DÂá$Á"\9b%3p\9aÂm\9f|\ 6ºj\1a;¨kÐ\8c9\84\82Z\8d\85\ eáàà[^·,D~2¤ÿ\84\eWO\ 3.ÿ\ fuz0ð\ 4-oîøb>õj)\8fÖ(\ñr\85h*i¾\9eÌà\94Ìa\ 1\88\97k\89¹3\85Ò\16ßÁÖ\92VóîÐï\96Þ^½\ 4\13.\ fï\9d\11H:Õ$ÕóL:\8d8Ê$13Ø\9cß\90\13\11è@\93«ø\8b&*ô\8b.x\8d¥ð\ 4ò\9a{\85I\7f\11þ¬\1d\97\8b¾¼5\87\f\19)@\17ÅS¨\9cx1G\89/)Z.ØE\19µ.b¸\90úß\ 3Ä,tä\95\fè\18xó¨}2nO\1e\9cUR<\8d&Éàäá\18³1\8aõ`öLT¶ª¦5õÒ\9a¶r<\8fæÏo        qP¡Xì|,¼\82w$)ø\9a(kãµ-"Þ/×ê\9cµØ\9f¬D\e\8a)%£\1e§d}¡\r¹¨[ýG\93\92I®nÑ\19\9c\0Ü\13VIýyÃ1fg3~£î¶á\18³à(\90íf¯bwÿ0\ f¢:øqiªÏ\94ç©ò\15x}Ø\8cXcë*\ 3A\ f\10´{p³+kLÛ\16L\9dù\84Â\14\91E\ 1\ 1\ 6ê\1f\ 2\ 6e³6\fÈX¬êÄ\90ð\17\85¶%uË4\11?¸ÌÕ!ÓHVÃu>\15!\196ZÞ«w\17}͸U ï\9bzoXk|1µþ!4\e]+Á\8fÅ      MNñjI¡Ðm9ô¼s\ 3mäýaYwæKè.\ 6ÚCáN<}\9eJ3\ 2\85Å\99ÖûÁJ\f\81û<jå\86¢Ì\94
+¡ê\v|\90^^î`\17$\99\ fõ½êj]PæªàúrÂõ(-\90\1a9GxFáº\9fü©\1fMU[è$Ü\89;ú|P\98\1d÷$¾éè}äw\198\82\17\80f  Ð{Â\84ôÂpqwUiÎ6PIxõ\9f\85ë\14\1d\8dýæ%\8a®^rk*      \89ã^Û®l\ 5oXO\7fe=}d\ 1\vÃ\82\98á_¥Ø\8bØ2\r\16\18kO\1c°jÃCÔá\ 2uºK\85"ÕtÚ \98\9e¼Ù!ú\92\98Ór\94ð\85%%hVÐHÈ(D3h\13\8b´×\91Z\1eÑ\17z\16\0Ë\f\8f\ 5<\87Ò½\ 5g £6P\16§Î\rV´­\ 1\83+aÀbvfÀp\8cÙ5÷<½yÃ1ú%$Öh0;\1cc\16é}¸÷\7f$\87\16\97KÏK%\15ßûù#}P"\Py\93\ 5\1f/\97 Î®ºÁ\0Æ\18ß\ 1\ 6}Ù¿@{¡Ö_f\170\86\ 3¥\95Á\b\ 5éWYI\1duQ\0äÏ\90;\10ê\88@é¿\9a
\eºotûÇ=âV2C÷\91\ 1\81ÕË¿À²\8dÆÛiD\14ó\a\92\ 5[L³ÛOh<þªA+6r<L\1f\9fÚ\1aÊo®¾×)1IÛ\ 6I|h;"¾\ 6\8a}ð-Ãq\80\96MQç\a¨º´È\91(\ 4\9aA\vaÓ=\94`ZÃQþRRûF3´>®Ùd¨-im,ÔºDE\v\9cÄÉ\9bß%\87 Ý\ 3(9z\9a\14ñ¢\1d26'^Ò
+\7fòMÄŵÁ\ 1¤\10o\15\81\1d\93\90À|Ó\ 5ÅÁº\17=\1d¤Hû>á¼6ó~Ñ\7fBuöýZk5Ò¡\85jØh\167òà\9dÝÒ3KÅ\143\87\ 6È\83\1f\1f`\1dÒþ*T¹h±DT,PV¤÷||ÿùÃ{ú§5_\ 1\16ý\14>aȧ\10yf¿|¼\8cù\eÂè¯>\1dÌ\96üåK\96%sÞ\8b øåæ¿:\8a¦\15endstream
+endobj
+902 0 obj
+2101
+endobj
+903 0 obj<</Type/Page/Parent 794 0 R/Contents 904 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 92 0 R>>endobj
+904 0 obj<</Length 905 0 R/Filter/FlateDecode>>stream
+x\ 1\9dWmoâF\10þ\9e_1E\95\8e\93\12ó\1a í\87\8a¼õ\90\12Â\ 1÷R5UµØ\vìÅör^;\1cU\7f|\9fÙµ\r8½HmPx±wwf\9e\99ñ×\93\165ñjQ¿M\9d\1eùÑÉåüäf~Òô\ 6\ 3Ú¿%+ühR¯ÓÆ{wÐçï=¼%\92\96¼\ 37qLù\86å\8dÛ&]Ð|\89£{8j\1eØÛM\9aûõß7\89\8aÓ\1fÿ8ã¿·ó/'M:kÁ\16\16Õ)ÿûûìS§ýyÐ+~ãógª}Rq ·\86Æsú6èÕ¾¿w4î6\ f\1eî½8o\\f^ÙÚi\ fï&ï\86åîc³Ãp³\16\7f\ e?O^=á~4\99\95\a\1c\1a\87ãÓn³Ù|u÷drµß\Ù=Ñ[\99L®ìþÆí9µZ\16ãNßëÒY{àµ\19Äá|~3\9e\8f\1eÆ?\10MoÞ\7f\18Mo®ir3½\1fÍf¸:cÜl\8e\8f\92\95ÓHç\17\17^/Ïqë\ 2\a"Ç3Îqã¶\9b\9bkÓy¿\ 3\83\87I\1dŤ\93@&\94jò³$\91q\1aîH\ 4\ 1      \8aå\96\82D=»»;\9dÑLD\vAkmÒS"\1dKÒKJ·Ø©ã@¥JÇ\86¢Ì¤X\11\ 6\94&\99ü\89}\ 6AÏÚ=k¸>_K\12¾¯³8¥ÌH¬²»cé§ü5Åí½\11ÊO\13ÏØD\99
+Ø^\93\1eëÊ\93\1e®$Z§Åi\8fo\89m5ný<Ú³>¨     â\ 6õÇv¯oo\1e\81×bÚ\ 3¼N¯\85\85ç(\91\ 1EÔmu\ 1£û\15V\ 1ìðº\8eeü¾,þOD\v\8e'\92Ñ\ 2Ð2\84\88:Oî¡}xsÞE&\8f¼ÙW«\rÀ\96l;\ f¹\b¥ê¢-\\98B^#\15³¥ý)ö\9b=¥ I\9dBeR¯
+g§Óòú\15@÷Ür$.Óü°\ 4'²ÄÈS\e\1cøÁ\19\8bÜ[\9a\98T\85!m´1Ò\18¾Å\1f`\ 1Óo©Bi\7f08&[\ 4*Á    :Q¸º\90±\14é\9a
+EòlHP£\8e+¤©Ì±M×\ 2\ 4\81\r>\8dÌZ$Ø\8d72ÒÒíM"\ 5H\15\87»7´ØQ \97"\vS{Ü\11W,Hy¡u\a\83RL[­\16ØRT\1a$¶W\85þ!ö%qé¬\99Ä>ì1
+\1cS"¿f\88)(£\80SɳÂr\11\aH\951ÚWvõqô§dT´A\91\86z\ 5×\ f\8b¦\ 2\ 3\9f\87¬gFÅ+\1cèÊå±®\93\ 5\ 5?JzìóZG]\159[&:Â1\ajÞõ\9a\8dö\13ù¡\82nxD\ f\e\19Sm,¡      ÉSÅ\9b±T«õ\ 2¤Xk\1dÔ :T»ßQ¾\96&¡@ök6öE\82f\81\ e\85%\fÔ^\ fØÂ\11\9e¡öK<]´§\15«±xV+¬)Ä¥6á&&\13ãy^\r&Bh\9fG¿!Af­3¨\96\91\9c\0R1ôL\84\14\18>Ti\8e\12Hɬ\8aDê¯\99¡ð°ÀÏ\11¬â\ 1H¥b¤YÇÌ\83ä0\1c^éxFè.à®kÑܬ\8b\ eݸ½ \16$\9b\83Þ}¬Þ}¯\8d\17Íd\9a²\93×V¬\8dEîæ\e\8a\98/\16\ 1³±}^Ñ»Û}\16Ç9ü\7f-X\15W\92ðÆPyf\ e m¹\8e-Ãc\r×\81[\ 1IÞ?Àfµb\14\90\87
+>\00Bb/Ëò;\85?9J\1c]\13ö\95)\1aQ,"I[a\8a
+vQõr\ 1¬Óø\81&ÓÑx~3¥ëéè#>\86\1f\87£»áåÝ\rÝ>Liþndû(Ï.¹Zäë\8fñ©{t\aÚ$\84
+2¶±ùk\11¯líÂ\e\16)\1a\7f¸»#\93\82P+{!\fõÖ\82\85Æ\86\v\99¢!\r¡hy"P?\7f\89\84ùP\ 1b<o´1cäÕd<\1a¦©\8c66\89°÷¬Ð\8e\ fÙ¶IôF&)\v"\97\8a(1ß®\95¿F:\98\9c\8c\9c\ 2Á"\15\15ë6\85\90\1fão-É$ÁÁ\11TY¬\+oÜ\16P3\81ò\9e~-­lASÙWC¾\88c4f4¹@\99M(v2@\82\99h9\e¬¿\1c\8aÙH_-\15P-ø\ 2\7f\8aM
\96Á©Ug,Ô:\94IÅç\ 3\ 4¬û\15\8b×Ú*ïV`Ö\0\80ù\996²Â\93Xo\7f9NüA\W¡ò\9f gºÆ\88°¿\ e\90\0Â\0íe\99fe/Lo\80\1ed\10Ál\15\9aÓwRµµ³p\8eÇV`Ö²¥A¢\12Û~ð\12t\88\ e\ 2\918Þaq8Y}`ÒÁGÈï6W\ 2«q\8b,M¡=\a\0\80*<Ú\15\90;K\0ºè\v¯LP{\ 1áéª,¡\99\fy\80\13\ 5¬¶SX\0ô&ÛX\11e\ 5-R\0\88\9cQ\90\9cFNiÑÐ,[yö(!eúï^L"/\a»½[\959d´ÌSd\90\90=\ 5\8eCwõã\9a\18ÆZ\14\95°Egv\ 6\ 5hH3Üð\ em¡ú(sºg@,ePÉ!,Z)à¬Ì0| :j\94\8aE1ó\15n\1cðØq«\18h\8a
+\e\1a\93ar[Ykn\92('*K¶ãYØyåP\14¡Ñ\\8ab\81   (Ò\81Zîò\80þźÉüu%\ 6¨\b\r¯î06\81îA¥ÒÝháTÆ\15ÅB\7f{á<-Á6?Ôv\ eñu\14¡J\1cæv§\ 1u °\90}Ô½±ã bg¹c\1eM\eÖa;%q:´k8y\14Æ\92ìE\ 6òº\9däM¿ìWV!y\10d±±m\9b%ÊM\1a\81\86¢òõH<qI±\84Ú^jÝÄ2תlÓd·\99ç<BV\80+\1d\ 3ñ\9d"»ãq\9cزiþOñ,\85~Vº³\17Dnqn^E\f|4?\99»Çƺ\89\16\1eFꥻ\Îí\16øÆí _Öêõ=~\8açG\b4úÙðþr\88&¤¿p©^k?ã<\80é®\11\9d¹ågý¶}fú¯\93E·ß\85 Ø­\9d\1eû\85¹æýÉ?wT\ 5\ 3endstream
+endobj
+905 0 obj
+1856
+endobj
+906 0 obj<</Type/Page/Parent 794 0 R/Contents 907 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 101 0 R>>endobj
+907 0 obj<</Length 908 0 R/Filter/FlateDecode>>stream
+x\ 1µXaoÛ6\10ý\9e_q\b\ 5bE\92\1dÛ Ð\ 1Î\9a\19Ú$\8bÝv\80Ý\ f\8cDÙj%Q#å8Ù¯ß;J´e#\19Z MQ#2)Þ»»wï\8eùç  \1fÿ\ 2\1a\86Ô\eP\94\1f\9cO\ f\a¾7\1aÑöC/ðàS8ð½>õGÃÍïZR¯`\15çl>°ÿøu\9f\82\80¦   \8e\1f\8c\864\8díºOÓ¨3.Tµ\94\9aÒ¢\92Z\9a*-\16dÒX\12¾\97\94\1aª\96¢¢Oi\11«µ¡«)EY*\8bÊP¬x\v­\8cÄ\16I\93÷çTj{
+\99¥Ðò\88îV\15iaO\8fDñbúåÀ§nÐóB\0èؽ\14§ZFUöHT)\12Åãæ\bUà±FÖ²½T\86-2Æ÷\93îíÍ\1f\1eÑt \90*¡H­4°\bcV¹l`ÃöSfùýÚ\rZ
+oe$\8d\11Ú"¸O3¹À\19\0ÁkZæ\1c\vkÜH}ϯó÷\8d»\16\83¤X&b\95UTJ\9d§Æ¤ª0{¶\ 1-]\142¦»Çv@Ùsw\16-Ò{\v^Òá\rGó°}\1e\a\89\r\1f^ÜKý¨
+yHk\99eݯ\85Z\17´ÐjUzlÓ\92\ 6©î\r¼\81£\b\brüú\94\82~C\a?ôF;\84\18z¡×óh²*K¥+@Ë\84^ @«ü\ e4A \e·­wmfuCfVçº`Ú\98\15Ó\ 2Ìá\0\v\9d\1aYP¼\82Guèby/3Uæ`\12\95Ø"ùà\89Èï\ 4\85à\87¥\1d'\ 5Á\82ϦÁ\12kDG\83yë"S"Þ\8fo¢4\ 5¾ÿ\9b¥\83C\89ì|°\84áÀµ¨4¾ùÄf\8cÊå\9aq\92X\7f]\v\13\8f6ÎYj*¼\7f\99\10<øS\80\13\96Ru\88\9b:\v¸Ønß\1c\ 4\83¡\17ÐI\7f\84ÊÌ)\fFÞ°yÊhbK\13\8f§Xl\17`\ 3\14A\92\rµ\19)\19\91\83SÖá#\v¦IlûTØ\18ô\90âÚ"Ûh?çÔ\vü\r\1e\87\v\16´\15\87\93F\1c\1cü}\84º\8cêjAd\8d¬\9a,D*ÏE\11[\8eo\ eµ²³£8\1dBíÓ\1dûÖ$SVÖ\9fæ\18\14\85\8aRQI{R·Æ°Q\89uZ-!\ 4P'S\89,à      õkMÍ%*ËÔ\9aI\85\a\91\97\99eÒR­a\ 3ßA\14\ed!\ 2Þ\12      ]Êø\8c1\1f¿öé\94k  nxbsÒù\85x¥³ñ\97JµPÔý@Z©êW##\rìÝ\88\ e%ª¡\ 6b\ em\0 kPh¦ÿ+\95\8b´x9»\1aß^]\8e?ÓõäåìC\91>|¦ ¤Cê\97³\rÍ=¿+2°¿÷¹9#\f\90L\9c1kñôa4pËÎ\84\15\ 6ÔÁ«º\1c.\8bDQ`\9db}mp\10ÿ4;®À¥3\9a½½¡w(5ý'¼èû ,\10¥P\9b\9b\89³à\0ü\b\v!JñçZèOÒcü\7fÿ÷\13\1e|W*\9dVüÈ\îä!ÉÄÂ\9cÍü\87\11Âîû.Ü;{
+NÒl\8e\9f\9bë7×óù²ìZ\On\8e¥\89tZVè2g³zÿþ{GW×ôêöòãÅ-\8d?\8e\8dÏß]Ðëë[\9a¾½\9cÐÍíåÕôâöèÉÓ¹´¡Ìg3·êxñMQ\9dÏ÷Jâ÷º¬lålõÃùGóùáóÌÄâÏÈÊd\15q¿OV\19f\ f\r\1a´\9bº²éyPí&\e\9e\ 4(üf\ e{¦ÉB³w$\9f[lߣq\1c³t]É55\ 5gè>\15V\1d[
+\80\ 1}¢Õ\9e?º©ã¨i\9e*I¤FÃÍ2צëa\fã\9aLR\9e=ÒÂf\83å¯\1e       ;&¿ó"U$»F:¼Ó\ e\e\ e\9bçy\87\ 4Å\8d¥\86ü\8e3£ ¹è\90V~÷Ç;«¾õf×Í[.±ëÎg4å\7f¹ï¦ÀÐÈ:÷æu
+\1f Ü\86µ\\15HSj\11b2î\86\83Z¯§h\94x\v³\eÚ\a7\18\8c±pþ\ eMÀN\r­\1c\ 3ª\8cV\98âÐL®KY4N]<Ì;\rx\15Ú<\7f\ 1³Üpâ<-à\19\86W\f\1c\1c\97îîäê\ 6Äy'õ¤gÛ\ 3aø¨#\18ºÀÚò\ 5&{Ü^tç/¼f{Ôlï\ eÁ#7\1dÏÃÁЮcÎÀ\14\87\\85}|æ48Ý<pGo=æ\98\9dÅö3VOúlÀ\9eï¶\9f1Hø\98\aZ«íg\1e\98ʶï¶\9f±ÚclÛÕ\9d;ÈvÌpqA\ 6\83ðd§ l\92\11§xÃÚuM\8a\97ô(ë1ï\7fG\8cy\87\99ÚLàÏ\84\16·\9d¸³\13×Q\1fíöt\88\8f\9cú\ 1ûo\1f\9aI©]o§#Û\98··¦K\f\82\1a\85À<ã颡\9c»\f1\81÷\19ÈÞmç|¬\8a¦f¡?L¾\9d\ 5\aØ0ä\8dv°mowO\84·vk\1f1\9bwÑe.6w\ 4læYµ?@~íï\8d÷>\8dê¡hëó7\ f
+·´¥¸G\6²s/²\15*\ 5·5¾7©\85\169.Tê+Ùͦ-Ç\8c\94ÓéÊ\a¡âGóh*\99S]ru59     k\15籬¢cûf$ʽ\9aã\12\15%¬c\1d\ 3'%¸æ\19Ô<¦Ø}M¤gE1Ù^\15m\e\80m'G\9f\96¸äÔ·S\ 6Ì$H´Ê\11\85z|>\82\84YW¸Õo©no˸Ô`\12³7j+ªG\r"7\9b³JÛ     yKËN­\91NØØdí°+´\ e"Éß´Âãb
+ÙÜLïí\139\14Z\96\82oÒMÜwCýl·`BWHP\89é^Q¦"\8e0c*ÐÞ\9cYë*X\80\e\95M)ÿ\9d\0\92]\9b\808Ù¿QÔW\0ü\9d¢\16ùÉøýù\18ÍB}\81ÌÓ+\15áz_TPfe{\8e»1\fC[àßu{í\ fY\12í{½!\83@Qüuð\1fý\16\15fendstream
+endobj
+908 0 obj
+1839
+endobj
+909 0 obj<</Type/Page/Parent 794 0 R/Contents 910 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 110 0 R>>endobj
+910 0 obj<</Length 911 0 R/Filter/FlateDecode>>stream
+x\ 1¥WMsÛ6\10½ûWìø¤ÌØ´(Ñ\94\95KÇùpë\99Äu\13eÒC.\10   IHHB\ 1@Ûʯï[\80 h%v;ÓIb\87\1fÂî¾÷öíêûQJcüIi6¡iNE}ôjqtv\95Q\9aÒb\85'ùÅ\8c\16%\8d\93ñxL\8bbd\9dª*j´£R®T#Ë\13\12\rIc´!½¢ãË¢\90ÖÒ\eÙ(Y\1e\93²d¤k\r^$§Ém$\15\95\92\8dK\88\93¸#\9c¿ýbñ\15\81']à\11\89²¤­Q\8d\93\86\1f\8dé4\9d&\13ä2Ú\1a½6¢\ e\1f\88\99\8e8\94|\90\10ªmJiB4\8d\13\1e\1cçæ\83ë¦\91\85\7fÅJsâ\vÁ\r¤,\8cªv$ÈhÔ&\8aB·H\92c¼]\1c\1e\ 2\7f\1f~?JÓY2¥<Ë\93\8cjJóirÞ]Uô\911\ 4\f\ f\87Ø-6ÒHÎSP¡ëm%k\0¡\9a5ua\86ÇÔ4Ió>\ 4\1f:¼ÆÓ|òSÈÇY\9a5íñ\8cù\1e¦TÊJ\82\85\ ehN«\16\ 1ïOóÕûÓö`¯@·\91µ¾ãôQ\85QÒÒÊèÚ£||\e\88³I\92\1cÓJW`c\80%åÓ<É)»\98%c\9aà\1fPY\ 5áÍ)\ 5f^xãIrñ\b¾Y\82\92\13ú(ê¥\80èJê¢Ð­6Î>\96\ 3ä2aá\8e>«¦Ô÷\96n\16g\13\96°¯\94Àý\9d4 ÂZ](\ 1\ 4\ 4mq
+Ý+·!)\8aM\84\ 4:\ 5mVB)¦\16\15$âÄ7\96-RÆ\1dÖÕ»ÛEúòÄc¶\17éë?ßã&]]¿{\8b\15\80\82ºÜëÖBb\95ÕdÛ­\ fÛI³\90[¯T¾7H®\fi!Å\0+\ ezµãþ\13måNH7Õî ºnö\9còa\10º¨Ñ\17Ç\ 1¼!pÇÈîAYÄÓ\rP°;ëdݧZjðÊÝn¤/¾\83I5¤\8do1}\10Ù§xBF $CÊ\ 5¹\eù½UÐ\v\94Â\88ER\82\15ØÄ7\0SÆí\ 4ÒöÎ\10òí³x\ 2¯¨7(AWP$|\87}£ñ)\93\ 4§Ð\1f\13\89ÞÃßû\8däR+½V\85¨~U\0§î      Pëιj@­Ð²^&ü\88pBT@¥EIKQ\89¦à~@o¬\84ªHCc^ö\83Ò®W´Ó-àô\80@G°¿\83³\972z+\a «kÉð[Ý\9cx Î®`ØÞ\9eG¶^&\85nV\\ 3|j:\9b\ 3À,\9fÃ(kʦ\17è pÕ¹ÒÞÙ§\93,I)\9b\8d½§îý\1dõY\v;\ 4í"ÐÒû\80÷¾G®2\92M[{±v      À*(;Ïñ\13ás\1c\1d.zOÌÎ\1fO\93ÿì7÷\e\85\9e,0j\80NkÃ4      \13ÈÏ\9f\87@7:ÄÏ\ 6
+À®e#¡D_K\ 5\8d{rV\1d\85\ fÓ\ fy?ëMY:9°vL\83\84\8d\82®kß\ 1\96\16\90¢\95\8eOÞ£ÞÛÒ£W\1d^\85%9ÎþN\95>ÝO7×\7f\13\8bäNT]×@ÅÔ·ÎÍ\82.1!c'\7fV?\84)¡ñ+(&\f\17'»ª&Ó\14\83d:K½*¦ |Þ]õ¼Lg\93\ 3\1d¨\86Å-\9cbÕA÷\ 2\16\b\15®x¬\869ÞWz/\97d\15{¨{B1#Ú8·}yv¦:t\12«[SH\84Xˤ\91î\8cSÝOÙ8q°\ 5 [%\16\ eüFùþ­½Ç\96ºhÙR|\96\84\9e/ª¶\84\893Z1\1cz\88ÃQ     \r\18µl¹ªè\a\16ë\0.ñ!\84ñ^\1ai@\ 3,1×|s\81¸¸~ÀZ\8c.Ûð©\ e\8b\95\14Xr@\1cÌ-â2\1cxÓé9wƳ¢\9a\8e\99 á¾À¢J\13úÌ\1e\ 1;\8a\aÿö\84¦âó`¹\85®ª®4Þ}X\8dÁNÂÈáV`\88Ö\1a\83\buû*±\ 1ö\1e|ëµÈ¯a[á /*ð\ fwPN\9b\1dÀîõÁºXC}üntvÈ\93'ôüül~\11Ç\16\95\11i+\8aob\r°B\1dEgf§3¸\15vÌrôe\92Ϻ\87qãàg=\ 3ûÔ¸\82PZ\âv¾È\ 2~é»Ý×Ø\ 3ã[\13\19\1c$\12æÏÙÕÿÉ\ 4Τ\1aë0q\82\1aÃhèaß
+âÒK'08\19\97îÕ\ 3\bæ­
\14\ 6\1f¿Ì(\9d\ eô7\808\v\aÄuæ\97uDÙö \86}\96Ò9ï\82ÏK\92\17Òü'IN\12z\1dñ\8dþó&P{ÛQû\84B\17 \v\1eç¿!@\94=KOðÂB^Ê\9d\ 6`\9eG[è­ä\16s<Èc÷Ó\97QïK\91éÄ=xç\1dÀæ÷­Þ"ö\1eÑm\18\ 3
+ª5¯ê{\91\7fy\ 1ønÈnü:ÅC'\ 6;\90\93o?\ 6`\10|ýCm·<´\84Á\9aPÁ¡áZª\89M\18OX©JZ,O\12"ÂÛ×7WÔÝbÑð·\ 6ö\9eÊߤFJ6»%6RÀ\1a%5TßÐ\81æ~3xÖ\80òó_\90}8ÖÂæü\f¿=*áMF£ß\1dKáÄ\92'I÷Ìo?T\8b\1dOõï­\84Û\96t§°\85:\14\fK¡?\16\8b[ªe±\11\8d²56Ez\8båü\0Ý(\1fÿE\84­É#Ò\aÛ`x\80®~×/éÓ\87w\9ed\ 6N\14®\85µAN÷\rïqÌ\89\97\18¤\1aÔÜ\ 5\8d\97¡ö\8bεÒ|\86=*\9fg\1e»ÑÇË÷¯.1\95õWx/½\19\ e(þÜixýt6ñF÷ïßh²Y\16]qzÁ' {ÿ:ú\a1CÅSendstream
+endobj
+911 0 obj
+1731
+endobj
+912 0 obj<</Type/Page/Parent 794 0 R/Contents 913 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
+913 0 obj<</Length 914 0 R/Filter/FlateDecode>>stream
+x\ 1\9dWÙn\e7\14}÷W\äIA#Y\9bµä¥p\9c81\127n­"}Ð\v5CI\8c\84äH\11\8aþ{Ï%9ZÆ\ 6
+Ô6dÉ\1cÞå\9cs\17ÿ¸èQ\17ß=\1a÷i0¢lsñnvñavÑíL&t|±+|èÒ 7íôi8\19ã}¯Ëï­¤%_Á)ì\1c^ðüåí\90z=\9a-a~4\19Ó,\ fç]\9ae-å(W+åEQìÉ©\95\969ÑV     ú¨«\87\8f´[«lM\99д\90T9\1czC[iÕrO~-<\95"{\12+I¹ÙéÂ\88\9c¯Ã¦È|\15Lúµ$£åëÙ÷\8b.µ{\ 3\ 4:Ë[V.¥µxVi\98\91t·)­Ò\1e±\b/\16ÂÉ\ eÑ\9dgC|ñòv\94âo\916>þ©N©\85Ä3³ÙH;CL~\8d\8bNf\95U~OÙZfOÄñçÊ\89E!ó\ e[\bÈ\ 2\8fÑ\0\bF\1cûxW£xy;¥Þ0aÖg|OQ\ew\ 6\9da\87f\1cºv\f\9eðÊhº)\94Ô\8d\0\91v\9f1oÝ\e\18Wziì&>måJØ\éÕ9\ 6êÔb\16,FL·B\15\9c@B-â\0ú\13µ\atk4Û1\9cö§¯ßf_;¥k\ 2·TÁVVT\fÝNùu\bDÕd8SÙLÖ\14\aÔ8\99Q\a¸ä­\90|ýèK1\83\15éB¬;C\9cµ\v& í\83\r\ 1\9a<\99%1\83BçT(-éAÚ\82\fU EÄ ³\94e{ÜA1°ûy\7f4N\87µ\14øì\0\ 2\14<ûü\v±\98rZYQBÉ¢@8^Ú¥@Z\10rH÷Ìuù?]·û\13\90\17\12\16\ 4¿0\0:à1\7fM¥5[\95\ 3'A\e)´#FãG%íþ\99.êÚ\0f\16%È&H0<'\85\ 5eek¾        $]@öI£2á&$N\e\93Ë\82´`f\84£\9d,
+þ];gLêJ&æ#%\11\80Ê­\82[\87rF\95l\8co\16õ£Ø,D¸õMiXA.¿Í¢ç\14r\14@CC`Heµ£X\18\0%\93\ eÚ    òYB\86ä¼,\11'B¢ÀQ\86Dø|\afK0,¬©p\18ÕrU·\v·YÄ\ 2jJ\9f\r5\9eµeöâ³A´\97·]\9ar7è\81ä«X\0À_
+tÇyËUei¬\ fa\0~/Ñý¸\910A´\ 2j\9a"xó×5_hè¬â¿\e\9f\89¿zè~\87hÞÒG\94\b7I$j\r\88\14\1e­¸äf\8b\8e\86æç\8dÝ\87dX\aÉn°Ã/ \8bïFÂ\12\r/ùìÃç\ 1­·ôg´ÏWcäÄÍ"t\90¦\97Áy´wÎU,.M×yþ\10e÷>(gÞ\82Þï\1fÛ\7f<Ü4"ø'}î÷:#F\ 5­õ\14\80`òÜâ\87\9f'Ö¸\94ë\81Ó°Ì\10d   \90q.©\fø¡ãPl3§£8\98¾¢ý \0ã³\ 6½vãHê\fÚBÛà&¹\ 6\97h\908@£\ f\85ÆÏÖ\1d\17\91\18´.\10¶CUñ      \97\1a9LIV+#S\a\98&áBú\9d\84
+«L\85¹uÐRjýÂ\1e\0Ì-T%\7f
+\8eá\r\9dV\9aÒ¡\93s5'ÎØyN¯®K<Ûðû\ 5}Ñ~Ã\80D#¹»C¡þEÛ«^gò\8aÎ*xz\85á_\14¨C´b®~\9er\ 1 Ô^ò\12í\13=7ù*9=\1d\19Ð0Ãʵ»6;¦\8e;\14\80Å2\912\8evq.¶\92\a\89zG2±¦\12\8f\1aé:_\81\9c#\99\9d*\8a\10¿Ü,p\ 6\85i©qC\83J\1aÅo\83Îâ\15Ä\9b+Q\98\15j\a\ 1ÕÄ"\a\80\85¦\96R\r\ 2CÍá4\ÿ¨\14\96\8fÂ\98'\18
+\9eO]\ f±p¸=ZÛ\ 6ѯаQÈ"­\ f's½\86ïÓç/÷óùc¸0\9fßTØ ´¿1Ú[S<J\8f?Å÷óyÈi>ÿ ·Ê\1aÍRm\8cÊ\93\1eÌ\80ÁýVb:\ 6|N°\11ÅNì\1d/~QÍ\80+\91\1e\84\8d\84g¼ká\a   BñϯZ   \bì3Ù\aGà¢\90`/Îá\93»gB{\ 6\95°\88¤àÿ\93Ù!tû\86âôÉ\r\8e\18µ\ 3¦\e|¤p\ 2"a"jÞRC\1e¨op\8b\9abYòÆ»7\15g\1eX;&\1e
+Z-\83~\911û"Q°øöQªidÊü×\17Ô\ f8¹|\1c\8f|L´2\ eydT¨\r\96ð°Dâ\13ª"E\9a4\8b(\8fM&©¿¦"­à<+C\ 3\88\vÆóÜïÐÃ
+:ã\bSpzu9\9d\1c\amàè\988ª§4ס²Î\9f\13î /íÑ\934\8c{£q\87ÿ¹áííøÿÇãõý»k®½ï\18dôÞd\15s\13\80`øÚñV;^ký÷Þ=\1c\ fë\rq0e\vØó\7f¿ø\17¹Ê5\93endstream
+endobj
+914 0 obj
+1526
+endobj
+915 0 obj<</Type/Page/Parent 794 0 R/Contents 916 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 113 0 R>>endobj
+916 0 obj<</Length 917 0 R/Filter/FlateDecode>>stream
+x\ 1­WMoÛ8\10½çWÌÞ\1c \96-ÙñGo ºéöÐEwc \17\ 3\vZ¢-¶\92¨%é8ù÷û\86\14mEI\81\1e\16EP}\91\9cyïÍ\9bñ¿W)Mñ/¥eF³\ 5åõÕÝæjr¿¦tN\9b=Þ,V¸(h\9aL§SÚä£e2OèzóýjôU\1d\8cpJ7ä4í\8d®éAÔ;AY2M\9eùY\96dÉ3\7f\9fS\9a\86ýÆÙ\12û\8d>«'\89\85¥pÔ\1aÕ8i¨0xf¨\16\8d8ÈZ6\8eJa)/Es\90\ 5mG'I¥n%©º5úI\16ÛkR\rñ)\84[ÃûhCFVRXi?P\1dãã\10¦4Ngø\12GûPECòYY§\9a\ 3\8em\170åxC{]Uú\84\17ØWTÔ
+WÚ\84þ\90F\92À\9f+%µÚZµ«$Ù\6\ 2G[¬2t9õ#\1f\vHÇÙ"a\bG_öô¢\8fThj´£BZÕmÕÈ\13=ª¦Ð'K\7fn(\0\12á°Ç¶ÕÆ}àE%GÛHYX\8ev'±W#\13¢Ûª:g3H¶\15\12ðZ:ióÃ\87nñ$p8¹Ï;bÆËdE\11¡m¶Xz\8e/Äñëa&'\ 1\8e\10\88\13?\80\84[0GzÏYDV\ayÐî\88Ü\ 3\ 4q} *ÀJëçn\85åLÆ=Þø$\0ÏhyÆ>ø[°ý\14\96\9eùä\85\93{\88ÚKn\14C±I!÷á]\94ã\88öªb\ 4\1fK¨ÑÖ»\82\84s²n\9d%άҹpÈ\8d\10Ö\0ØN­Ì¹\97C'b(\92o7\9fîH4\ 5í\85ª,)GtR ©0ºEö'_2GËtö\16û\0!t^(ªj\98¿°Vç
\14\10ddu{\8dè781$v\13\93®ÁÉ?\1d\aï¤í´®BH¢²\1aES\vDÎÉìDþã$\f$\96ë\1aÂW;U)÷¼\r\10ð\19±
\9aë\91«\91³iä³C\15\7f¿\14ã»b»É )\94ÅÏĶXô\8aF5Ö\ 1\120\11\vå¬\13\1fµ\88$\13Á\8fPf¦3£R[\aH»Ð< \8c:øÙ^³\80\94\97YOeª\ 1
+uðµ\90¡\97wkd.\vÙäP\ 3èá<]i$Ô^\81\ e&\9f·½ðÒ\11\ etÔ¡ÑÆ\e\98jòêXà»!³~},\14¯9¸*3\eH}U£ÑM~\ 6Ûl\9dô\81\eÖXß÷Âîç:éÔòÓ2\ 1¿ï\97`~4\86íZ7Õ\vY]\1d¹)\fÄ¢¼e\1dm(ÕH"\eÅí·G.µÈ0#\8b§¡¼ì\19\1d\9fyÁc?vjàks£Z\14Å\10ÔP^!ÇsY ÄóJ!Øðüâ\ 3Lêà[Óæï~\8bó\1f@<\aJ_Ð\8b\0\vJ<\b4è&,\83\95ð\8e¿o®¸yú\ eJ)_ýý\19}!\99Ò|>G       Ô\94.³dÝÝUôÀ\1dx°Â\1c¸9Ïç7¾d.͸t®ý8\99pGä(\12\váç\12\ 2>Ȥ\91nÂç_¶òWØ
\87ÚôJ\10uËþ\172\7f¥³¨£\9eÎ"\8aéz\96Ìh¼ðå{\9b\97îØ\1c~{\93ª?\r©â\7f\9a§)zï|µÄuºÆ%:\9fÏóÒ`0~¬nPñ\97ä6\084b.­\10âY¬ 2ÉuóÆÏ{\15È\9d\1a\9fXU o£d5ù\96\94½\8b2ç¾Ä{\1efµn@ð§Ð¡ W\ fáex\0ë5\e\1dw¡W¤{\1f\99Üg\9d\ 1÷\e\7fWX±À¹åÀ\92>o¯ß\81\1d3Ö+K\8cûùþ\eûó`Ãíèá\7fÛ+º\ f\ 2ü\95M\83¸i\96²\99\a~×+\8c;où\9dR¶ZykzÍpÉí{'y\18<\ 1tÀÚ§°ð]%Î\95\81FV/\96 Q\eêÆ#\1e:âW<}\9e»Ø\80¾\´¢khÛQ\80?"<*\94\15~ kÑ\1cmÇçÙ!0m²^øìà,\8c\14FÃÐ÷m4'n?=w\9bd<6\a?°Àtpä[}uÖ\11ì/|Ý\v!¡;L\81\9c\ fÌT·ìµ°I\0\8e\89\12V¸»4âP#hhÛÑ\rÂÇ`\rl1 q\1e¼\80º\8c\vÚ½\fpÂÈ \8e\95KøqÇq6[\9dk\18#>S¼\ f?\1608úI+],\13þ!Á\1a¾\90üpûõî\96¾\19ý]æ\ e\85\95\1fy¶÷FÉ»\8fêqX\16~^üú/\8bù\92\17Í|Ú\ 5û×Õ\7f-DÔ\fendstream
+endobj
+917 0 obj
+1405
+endobj
+918 0 obj<</Type/Page/Parent 794 0 R/Contents 919 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+919 0 obj<</Length 920 0 R/Filter/FlateDecode>>stream
+x\ 1¥W]oÛ6\14}ϯ¸\b\10,\ 5bù#nâî\v\ 6ëð\fõÐ\87v\ f\94DÙL(R!);ú÷;\97\94\1d[mÚaK\ 2E\12yï=<÷ò\êádJ\13üNézF\97WTÔ'¯\97'o\97'\93l± §\8b[áaB³ù«lFóÅ5î_¾Ä­\93Taî\84.çs\ÓÈl\96-\9e\93«lÞ\8f\]aR´A\14\98!ôþ\82\10ã\9bW4\9bв\ 2¢«ë\ 5-Ë8\8e7Åù\9bµh\82t´ÈèW\99·«\952+ºuÊ\84tcs-kÿbywÂ^¦óäet9\ 5Êey¾È¦\19½3ÁÙ²-\82²&Í\9cÓtÚÏ\9c]ó¼åZyÂ\9f ¿¶.P)}áTÃ\16d+ZÛ-\ 5\8b·@@Í.zãRtÚª°¦÷¢ÎEFÑS2Ï¥?²äØ\13\1aM/\13¶có½×ÊÙ\1a8Þÿþ\9a
+­¤     \1c\19Ïì\9e¼t\eé.ÈX¼^K²¸8Ú\8a\8e\84³­)3º±.\8e8\89\89^ÂB\ eâ²\9d|\14u£¥\1fïÃ\96ÊÉ"X×eýô\19ç\ fÔüq\7fAÞRg[ÄIh¢Ñç°(BÇDG·o\98    T\89r\9e\91r²Ø\83\91²dC@\ 5º Lɬ\87µ\b\ 3\90i¹¥\ 5\85¼VQ\84VhÝQ  .L÷\94\ 3\15¼ÔÕ\ 5©@w-Ba"²È\89¬UY¢6\84¡\\86­\94\86\ 1\1d­\1c\9c_\r"ÿeÔã\93\7fßæ¾óAÖY\9f\ 1°$Õ\ 6°\98ÆJi\8aü\ 4×øg¨\11Þ\1fN\88ù\93\8f(c#4\9d\ 6A\v[\ 3iy\9aÑ\ap\91ÂSÿ2\12×"\95`ªm\98\1ef\89ÉÞ®-àD²c1\17\96\v_kPÞzÎ\80\8d\ 5\8d1C¾Î3\8cW)Mµ\ 5uNj¹á\fï¦}:ß®U±\8eñ±-Z]\92¶ö~\0\1d\90à\8f׿óILz#VòÓ\v\94¥ü\9e\rÆ7\13zÅ[nJ£ÙËTY\14\7f>®´Í\85þ{ç\16êÃe\97\ 6i@\ 5¿\1d¡¦\91:\91Ø\8fäúÆbéûL\ e\èæaÏer;¢\95\f\14­è¡\95\a\11Ú¨#¼C?sàêc\ f#°UÛ\8d\ 4\8a;\9b\7f\11úÇ\98gTù³+\13P\8d\9f\11n\1c¡\8cuS\8e=ïóÄØN¥FÌÙU\12\rÎs\85\9cÚ-'\14ì\92Q\ 5\92néÞ@¤DnÛð\rÂ)-¹\11\S»\1a\8b´\ 6Û`A=n\82\90¤\8d\1e\19úâ\1a{WNú¶>ð\85\f\ 5\ 1\15ý\9a¯ñÍ\97\96÷6éÒ7W\90\80íÀ\83ÄÖ»q®\f(t4ÂßíYCgÏçó° \8e¬\1fb\85}Ãú°\1a\8e¬1\0"£õÝ×\b;æ¾wá\13þ"9ðHÆÿv\81$<_J}GI\eÛc?8)¼5\ 2\1d\15\9d®\12­\86\94\9d RJÙ`ÛE\19é¥4 #\85®\91\17\94·\81EXyó]\80Â
+å6¶\83\9a ýòÛÝRúÞÇ\9aÞ\1aÎ\1f\1a\7f\14\99µÀ\8eB)C®Å=K
+Â2\0m\v\b'äªTÜ\91}F±¹ôé÷ܳY\9c\84F#DËe/U\8bn1\bê\eY¨JA\ e\el=#jé/\88\9bE\12¯2\87pu±Ý$ Øj\85\16éö\97åo´\11º\95~¨¼\1fXò¹·õª\ 4=à5$vq\93Ë~G\95\b\ 6\86¶Jk\ 4ºgí@_i¬\13®C ¦ã\93\ 6S\98Ôtß\90¡S;Ü*\9e_\ eÎ\10\8cüIh\0!\1er2ôH4V(\"\86!H§l©À#\9ah¡¥0 \ 1ZÑSÙo\9b¤ü(\ 4ly\8fìÇÌp\8c\ 1¥\116Ü'5D
+*>¬ÅÝ\89\81ÞUû\aª\84Ò\91ëDW­Vë\0\r\aR-«\01uQÑc{B\13ó´gà¢_Ï ø¿Z]Ê\ 3¤\ eç\ e,ä°\17 9¥\ 4ÞZ\19n\9b\92N9w¦­séNQ\17\98¥`\aqã9")\10\eä]* Ô\83\86å±\84ß³\9fµ\f\bôc\14ìÓZ\14ÎúÓÄ.7¢²C1ö¹q²Ñ¢@Øx¨\14\rN\89\b%\82ìË\ f]\1eõ\ 6´|ä\93\12\87>\ 4\19`<óÜâ<\12\8e\17ÉuÏ\95Æ÷©\ 3ÆSLLu"«\80\10\ 4\1c\88x\16¤ô+¾\ 6\81\91\1eéÒñâìî9\aG\8c§Ó\ 6v5bï\ fU\9c0Ôi\83RåHñ\e%~\85,v\9f\1d\aß\16ã\9bÅþd\8fÏ\87ÿô\1d1¿\9eã\ 4ÂÖçói\1fòÏ\93\7f\0¿L#èendstream
+endobj
+920 0 obj
+1444
+endobj
+921 0 obj<</Type/Page/Parent 794 0 R/Contents 922 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+922 0 obj<</Length 923 0 R/Filter/FlateDecode>>stream
+x\ 1\8dVYoÛF\10~÷¯\98"Ií\0\15%RÔ\11\ 3vá      \90\ 2EÒZEQÄyX\91+q#\92Ëì.-»Ç\7fï7»¤,+\16\10Ë\12\8f\9d{¾9¾\9eÄ4Â'¦YBã)eÕÉëÅÉÛÅÉ(\9aÏéáǬñ0¢i\12¥\94Îg¸\1d\8f£)\19I+\90\82?\9dGóî$Nðbw2NÒ\87\93é8J\1e\8e&)\14tL\90Ù\89\83~H\84\1f(\1f¾{\ 5\1d´XÁÖé\1c7¹?\1fÑ";\9bGIDoä²]¯U½¦Æ¨ÚI\83«^\96²²/\17_N\86ïR\8aãÀ>Hf`?ûPKÚ\8a{r\9a\r|A@`$eùÔ:a\1c-ïawS\8a\8c)\!­¤LW\95¨sÚ*W\90-dY\92Í\8cj\1cØ
+á@\9fi\9331\9b0¢AÌÞCµ0ë¶\92\98\1dç\10\ 5\93ù\85^ùgï\ 3­T)#º"«ª¦\94\84¿z\1aضQà\ e\ fõÚR¥Ö\ 5ì\94çÁá\11½b\7fc\1a$\13$\rj©û\vÂ{ë/hèªfhÅ­\f\a/\1a\83\ 6\8b\93\18YéX\9fý0\ªú\81°w\8a\93ÐVR%6\92l\v\0ø(à\8dð÷\92\8c·°µÒ<Á;l­ñ
+TN\83\86.½U°,òV=Áð\8c\95\99¶î\ 2\18\ 1eWüKi\8c6TIkÅZö.Å\8fì\r9\rä}D|>9+\1a\10\11\rp\ 4\13\84\ 3Ô!í^·\86ì½u²z¦\9d\13ech\80ÿ\8fÏcz\9ePryùã·\ e= rÀi\9a\ 6t,
+Y³\9a\0H\12\1e\ 6\ 1)\86AXé[Æ r\11Ñ_ «\0â\15\87\9bí\ eyüÚÊVR-eîa¼DR\9cn\1a\99\93ª    ÀD\898ÝûÐ!ÓÊ\10\8aÀ\vä»6\80Ô«\rg_ôò(Ä\8aô\9cþI\93ÿè\ 5ɬÐT¨.\91\85ê5uá\ f\94c¦´Õ2+\15àOÃa©3Q\16Úºa¹M\ fXD\9e{ãQÜ+\91IRÍ\ 5\92É\9f\94\96\99°®\7fL&\13ª+a7\17¸\8búïè@ÜGaí\16q8§\83\83\12ª¾øtu½¸ú}ñ\99>\_|ú£Vw\9féZ\9a[i.>]\8bj)\bm.\9a}>`\863çtssÙ%Á'ý\eç\9bÖ9Î!\17x(?\ 4JX\84k\10Ï&ã\94nÎà\16m\96C{ó\12\ f\0´\ 1\84}\v\ e/\8f\89;8\8cGé+_úã¾\ 3ðµ×u@¼³?\13u&Kbæ\ 3\92·¾¬ÂyÉn\0\11\9e\8eÎÑÈr\98yÀð\1d2\7féEtbe~LÆS\1eî\14È;å\98ñheÑi°ð\14E\90«\fUÝ5k®\eöc\8b4\ 4°ç¨/Ô¢oó\fNL\0\83+z° ¥rh½¶\94"çXhîGÊF½ù]aq¡Â5ÒKt¿®=õýF·\ e\80ègAíoJ­7\84\19Â\1a\1f7\8e\0\1a\9eK¨Õ-Ï\19¦1Ò¶%\ f\14#\8f©þÚªlSv½\ 2:Iõ³Æ\8f;\9ev¾óù\ eç[\bû\13Z\1dBña\85    E\8dÔ<\8a
+n±ý\80\rl°BíúzçõPºlèEe¢   \86£\856Ò `Vé\1aó®¦[a\94F\9bÙëZ!|~\v\19Q2\19¡1\86¥c·Y`IØ_        \92xêgÜþR0\8eèO\ e\8f\97+\8d¥\Ó{oùÏ\8f!Âsί\ 4}\920¡|PO\81\ e×\98Ú\9e²¯k#*Þ\a²Bf\e¿\18 \ 1»\18\86\9d£\16\95ô½\9bG^k9\80\b+/\ 2ëZý\8dî\ 5\10ùæq\98¤w\88K7ß\7f"/\81Ñ\ 2C\8e¶Z®áÞ¾ÞGz\14ðÇ^î\8f\98пXÃZ\ 2\aÀÍ.IªÆ\94«\84CvhetÕÏ\1fØ×=v¡\88üða\19\ ec\891¸Òe©·ìs\87N¼<(\83 »ßrä\9d3"s¾©ï´~\9fÃ\ 3qÜç\83½e\17¤=\9eÓ\7fýª\81úßy~ʦv\90\9b\8cw{écÄÍ»-2\9eÎ"^\99±\7fî-¢×W¿¾¾¢\8fF\7f\91\99£7:ó[\9e\8f%\v\1f\ 4®A`û\9eµ5\9dñîÌJÎÒ¤³ï·\93ÿ\ 1}o~\aendstream
+endobj
+923 0 obj
+1321
+endobj
+924 0 obj<</Type/Page/Parent 794 0 R/Contents 925 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+925 0 obj<</Length 926 0 R/Filter/FlateDecode>>stream
+x\ 1\95WïoÚH\10ý\9e¿b¾\91\ 2¡@#õCª6×Tm\94k¨î*E:-ö\ 2\9bÚ^g×\ eAº?þÞÌÚÆ\90ÜU§(\80íÝùñæÍÛñÃÉ\88\86ø\eÑlLgS\8a³\93÷\8b\93\8f\8b\93a4\9fÓþíq\81eã³hJ\93ùL~ãÃiZaí\90Þ̦ÑüÙ\13ØÂC8h?`èõå[\1aMh±\82ßé\1c?\12y>¤E|:\8f&\11Ýê²4ù\9aª\82
+gò2V\ 5©<        \17äµ{ÔοZÜ\9f¼¾\9cÐh\14,\rÆ3X:ýa+ÊÔ\8e\13*-V\97lÇÛL·Æ<­¬£\9d­\1cݪl©Èï|©3^^y\1dÑUIÆ\93/\9dÍ×é\ e9Æ6Ët\9e°Å\8d*y'{\1fÒ`t\16\8dÙ+¶á\11°P±IMi´\873ûhxËr'\8f$\13ò\85µ©v\9dÈ\1e*]ay\9b\1f'kr\ 4\98©ÒØ<ª=\8d§\11#u\1a\ 2vú¡2\ eÛ´\81[GªÍ\8d\90\19\9d\92|\12\9d\1a µ\7fÜ5M´Ø Ñ\16ãÎ3Ú(A¸\93£ä'a\9d\aì\87ô\96¡\1fÑ`ü&\ 4G\94«Lÿ­R£ü(|\8d£(:·\ 5§òîQ¥\95\8dÃÚ\rØÂ4\0y\89ðU\9aY_â+\r¡1\15B\85|\7f\ f%\92ê±·\1ee\15V/5¡J\85õ@Üæ¨\9a]ÁB±Qy\95igbÆ¥B       \9d\8f-HÛû«wTÂx£\9c\8aK,\88\88n\99.µO\98ñ\96£±[Úì\8a\8dÎ=Ý\9dö\ 6½»W¤<mu\9abÇE\8e%H\9b\99£ø7,å¨à£\16L\84q\8c \80­]\9f¸âG!È>¶±EUQS_¨X\83\fd\84\90 YÂ\1e\15õ\ 2\1e©¥­Ê.(\beѸa*\ 5"Q¨\0\92Ø1ÅÙÆÝ\1d©ò(\0\ e\10<gìR\93c\19:B?\95\8d\9d\8dâvV¥¥)R\1d\16\1e³ô\93\ 6Æ
+ÿÒwúIeXêÙnK¶\95Á\1da\12d\87ë/ô.\1cÑ=׳Æ)\80Ça\ eÐè\90\88ät\14\11_ã²m¿Â\ 5²Ñá6î©P\94\ 3\ 3ã\17\r|ÝÑ\r\8b\rxu`¥_\9bhЯ¡\97\18Ú\98Î^2yî7ç@\995\ 6`p\9fñ\9d8{G¥ö"p$W¼¦¹s\10(¤ðy¦°ñk\93/\9a{\13Ì¡[÷x7r¢\12\14»Ë\9b®\16lÁyZ\19\87²øR¹R'`ÙÕ\8au\10\13\9d\876[£¾ ê¿\19és&\87j\92\a\ 3\íÄÊÆ\95å.C¿?ã\85¸ñ\15\18%
+Üzi\ 5\95ÛnË\8c\ 3Çð\14z\\a\15I?|¹ùÖªHè\06ÑK\8b\18òî´J\9eÉ\ 1$\9fù\ 3ªKp\ 6²Ð\14§Qý\ e\13\eþ¾\10§H>\ 5\99ï\93\b\9fO\ 6Y³ý\8d\82Bp,\90%\1c4 ¾v\99ñ\1ezÉB´À\93g±?\87\12\8a°ÑñOd3XõX\b\7f\19{§   \9aØùèÌ!r~c«4ÁÉÉíC·W¿}ú~CÞ¬s\952\1c\1c¬Ï\96¼\80\ fb¾%I@¤\ 2\94²¢íó\ e\91ö\bJ#×M#ÃÆ\90ƳY;@\8c\9bÉ\ 2óCwZ\18O\8e§\ 5pú³]r¬e\1fÁ\13Ô°¨DÖ^\98\rä´\ 3Q8\ 39bV\ eäsPip£\0±[\81Â\r\80Ï\80ð,!é±\vÙyo\97PodnV¦\99\bØ"îÓ\16m\ eÅ\ 5\11\1f\1eE\14m\9d*Pf\b¤Å\91$F;%\13ÜÙ +$<-\83À\83Úl½Í\91VÎâ\88ǺZ*\8f\92\e\16û\85\19"Ùܪ\87=Ä1\7fûxñåË\ f>·ÖõÜU\17Ù\99õ¦\16â@ß}×s£U\9eaSôþö\ 3\ e×#N\ 6ÎJdM\8bö¥Ýc\1cr\98µ
\9438\8d|iq\9e4Y°E40Âbò\7fÆ\17ñ\ 6¨%\86\ 1\1cñ¾Zf¦\84\0õ\eXv8,ÓôÈ{ne \bÀ°X}÷ú?\86\16V\81ÁM\r£DÄöö\ 4ê\ e(×Ü \12\ 5R\ fù1\88"\15,\938&XV\1eö\ 6{\8c½×8ÈE\99\84'\0»«\95]xÃYÏ\19\84\15\ 5\97¢&\f[ÐP\86 V\12\vÚ\80S<\15l7»zr\bxH¹âX\17ÀOæ\11±ÅT¯}4Bp\8d3?T\8bÙ¿UL|»ç\11ç²å9XH*\13a­º\92\eÔ\94Ç\f\90\15ÀÿÁ\93\f¯S\904\1c\1e9\ 6\9a Ðõxu\94\9eJ2\93c!\9a2\8cèRÿG£·b¥­¿PD:\84½4\8d*\fqH\8b'%\84,P4\a\ 6
+ô­\91å\ 4\8e|óq¶\15éÓO\ 5K1'\8d\\9aB«%Æ\9d0OEâ\92©Éõæü¾__ýI=nÙ\1eU%^\ 1\0\ 1ö'\1a\ 3\ 5Rê \ 6º°ã×\97óúÝe4\9dE#¼    MñjÅ\13þÅ×÷\17\98Eì=ÇðÁÆ\18`óR^\ 6xß ,\1fÌÆ"¢ÿï\85i2\9b@deãä\8c­A|\7f\ap\buÅendstream
+endobj
+926 0 obj
+1583
+endobj
+927 0 obj<</Type/Page/Parent 794 0 R/Contents 928 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+928 0 obj<</Length 929 0 R/Filter/FlateDecode>>stream
+x\ 1\85WmOÛH\10þί\18µ:A%pâ$\84À7Z\ eéNê˵9\9dNB'-ö&ÙbïºÞ54\15\9e\99µ\13ãÒ\16$\14¼Þy{\9eyfòå ¥1~S:\9bÐtNYyðzyðûò`\9c,\16´ÿS¯ñÏ\98&çi2§Ùâ\f\9fÓ      þÔ\9aVxwL³É$\99={2\9f.ø\îL§¸.wà\ 5×àz÷\a.F×3JSZ®\10Ñ|qFË\ÎÇ´Ì\8eV®.U \95\85F\15Å\96\8c¿xµü|0º\1eÓ9ßHédr\8a\10\96ù\11á'Ëit¯ê\91¯\9c+FE\95\8fªÚØ k\9c½$yJ¹©u\16\½%·"9¦ÏîÖ³Ù1\9d¤È¾³Vx¶ùüÏKZ\19\9bóM|(ôs×ù9å«Ëñ8-·\eçC\8c¼Kö\84c\9f'\13öö¯kÈo\SäTª;M¾A¹Â\ 6\99o]SÇ(\91\84oªÊÕÁãÈxjkóþcïM¿õA\97¤òÒXãC­\90(m\94'c}@\ 5uNªËt\1a}\1fÆ\1a ZÔé0Úz0EA\99³÷º\ ex\ 2¸9\97àHu^UUÕ\ e7UÀ!|ôãLØ\83°iL§\8bs\144ò`G\1dÐ`t}N)pcÐOOçO@_$ó\84þDe½¶á\988\r»Öä\9aP5\83"\ 2±  3æè½Í4\a\81dï¹tZ \91Ô\8c]\1fËQ¦,\9fXXTÈëÁÕõ\16\87¤na\9a\vÏÿ\98Ð\92Â\9aL\17\85½Ì#Ë\96°\\ 2KT§,\9dÅ»î¶@Å\81\87þ\8a@©Rkí\99Z1Ü\vºUÖ\ 2»ø\1c\16ÊÞµÿ\ 2`\ eUÛ|èç\8f\95\84¬À\83µ\ e\81\e:\ 6×7:»#\ 5\12\ e\16%ñLUäª`\10&\10\92G\b¤}\82\80\ 1ðʬAµ|@    \ 6ÔºÖ¡O¨\rFJ\8b\f¹¥`\e1\b\ fa\89]^ø\rÝ\1c1Ekí=m´ÊÙ[Ý\8fûæUë>!Ús~à}\87àÊ\15\85{\10Pì÷\ 4û\81\ 6´i^P\92$\1c\13\eß+L¿éúYI"me¸¤\w\1f¸\v~P}d\8cW\90ºb~:À\93m\14sðû®5;qh;n­A\b%\98ÂLÙõ\ f©&8¨\9dÉXê\9eTh\bqG\ 5FBêã!k^\81\89¹XÛQ@×\1d±ÒÖù\92¥£ñQNký¥\81\1cò\ 36Ó»\86Þ\vMEÞ­Â\ 3\17C\bä2\9d\83.^\84¨0pv»}r©T¶Y±X×{Ç]ç´åF=AÚ^³ì{¥#T&Bx\vñlDtÚ\1eóô`Â&\12AtWf\ 3.!6³k\97\ 1\99zµþ\80¶ý\94Õ¦
+"øÇÐÄ\f\12\80aÀÉJ\1dÑ)}!£¼6\90@Âc.Í[\93Õî\13*B\19\92·!¡k¸Ö_UY\15úxัLÿ\7f\8c=?åË\1dY"Ç~2Ä>Ä\81å\1fÛ\ fôN\95úñæè£Yo\ 2½)Lvwóê\ 3´\17Òl4^CV^²z¼Ìï\99\82ùã\8f9/ì\ 4½Ü\83\17}\81¤g\eç<¨¼\ 2\95ß\84º8¹\12ZW\15T    \b³è£\rxD&$ä\11Ò£,[t6Î7Â\1cG¹;&\f\1a\11G\99´x>¨I\9cN\8c#,>a;&\16\9a\8eþ»b\7f\k8gbðGÆ\1aÑA\98á9×\ 1\80ñ\18ó´\a\14ͲÄ\9beS\ 4\ 3,ØN©¶\ 3ï\99j\90\a_\86UQ\15"Ã{\ 2ö\a×d:Æ|üùàJÏãTØï+\8bä,¡\8fê¡\17[+¼¢±{!Ú\r®}I»Q"\18õ\9a\96VÓà?HÅE\11\99\8b\e\r׿\9dû\98\8fQ\ fl\\ eXúÛ\19\13g\9e[\r\8a²·Åe\16×<N¢¤·Z\8aÇ\ 6#\8b_\15,Xô\ 2¦\9dl\ 5ÇÜ~O\9aÆ\eôÃ\16|\80\15ëÐ\qk\198~\ 2\1eÏ\ 2\0FVGÆiËZF\87\97\9d"r§ñ"x%ð#­CnʾÛ>vétòKìÎ\172ÐûÐ-\12êZ\88¤ûZ\ 6?\83Ú;\87½§\93zâÅ"w\10Ë\92\81\81\96l\91ÍÚdR¸µg\95\8c\ 2+\ 1\e>³Ðyd \8aÆ\85}\11\ 1å­\ 2óçE;&\a5ãÉ$NüF£\83bÛ£-¯\1cs ZP\19äs7\15´òhÓ-xîw
+ÿÛßÝ\ e \vÝ\13ÇØBayà6úIdbGmÖ÷Ø¢díØó§\r½íPaKØV\98\1cÝ*$»\8aÁöêÍ7îCäÂ]\8e¾æ8ìÀi\7fÁ\94\10Û\892º^´ß\16ÒùY\92â\eÃ"î±\9f.ß¾¾\ 4nî3+ú\95Ë\9a\12\1a-efÓ'ñõ\93³ ¾XäG¿Ü1gg3,®òîlÆ\ 6°Ðþuð?ST8\eendstream
+endobj
+929 0 obj
+1506
+endobj
+930 0 obj<</Type/Page/Parent 794 0 R/Contents 931 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+931 0 obj<</Length 932 0 R/Filter/FlateDecode>>stream
+x\ 1u\90ÍNÃ0\10\84ïy\8a¹Q¤ÆØ©\9b¤ÇV\80Ä\ 1     ¨_ ?Û4Uc\97ÄAäíY\93"q\0Y+YÚýfvö=R\90ü\14²\ 4«\14U\17íLô`")$Ò|#4t\9eñ?áê  \87о{Ü@i\98\ 3\83éz-R\98\1a\fH      S-r±\11x£â\8c\9aʱiZÛÜ\9a\13C\1aJÍP\9cd\8c,\9e\ eðGBQº\ f\9a\87áÛË\80ÚÙ\e\8f#\9d/Ë0`Ñ\15SI\98Ü\bKTÃ;\94=Ë¢µß\ 2ì\82f´Ã\12Ã4xêàû¢â¾À\9e(xKÄj%\92ài®-ÿég¼e¿¶§Ê»~\12aø'¼Ô\1cì¯ðù5\87J3\11îÆ©\7fÅßo\9fw[¼ôîÄ\9a¸wÕØ\91õ\85o\9d\rêñLÅ3öß±t¦EÎ×å\85õúºÔkô\ 50Ruùendstream
+endobj
+932 0 obj
+276
+endobj
+933 0 obj<</Type/Page/Parent 794 0 R/Contents 934 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 120 0 R>>endobj
+934 0 obj<</Length 935 0 R/Filter/FlateDecode>>stream
+x\ 1}WÛnÛF\10}÷W\fô\12\19°iÝlË\ 5ò\90ÔIk\14\8eÛX@\1eâ¢X\91+\891Ée\97\ 2òñ=3»¼\98v\82\0\8e(íÎåÌ\99\7f\8f¦4Á¿)]Îh~Aq~ô~uôau4\89\96KêþØ-\1e&t¾\9cF\17´X^âól\16-ÉjÚð\rü\b\1f\1c?ûxE³   ­6°~q¹¤U"¿ã\9bxüëN\95N[º\8aè^ǵMÝ\812ý¤³êxõí\88oN\17þæé|\1aÍpw|\15M#º)\9c5I\1d»Ô\14þä\82¦ÓprvÉçîU¾VTÕei¬«Èí\10 É2³O\8b-\99\92oâ[#?l3³V\19Uù:\8aM±¡RY\95k\ 4æmOè\8aMOétv\1e!\9edüÕßø\9b\7f\17\8c\9a¤§\9cùçß\8eð?0\9a\ 1£\9c\16\v\1f\7f\ e\92\9c\17\90f\8d\93óå\1c×ú(U\ 1\1aöÖA+\9fäj\88oLoékµSV\7f¯+m\1fÆ\89Þ¨:s\ fÇß\13\93«´ø®\92JB>ûØÀuÊI]xdÿÌ´ª4*¹AE\ 22-$¹*\0Ë\96A´TWü)-ð9W\8c$©"i®$&®s]¸\ e\e:_Ìá"§él\1aÍÃÓ\ f¡\0p\82X\1f\81ë»Ûw7\9fþ¹ýpûþÃçhçòìu,Æ\12Þ¦¶(·¥µ\8a\1f·ÖÔ\88-ÑN¥YE\bÕcA¹I45ÈFD+\10äKZ$f_\81®\93I\b\7f>\99 äçs \8d\ 4æW³è<<5      à\11Ìë\91ú\ fm×Ú\9aªñÔ8\11\97\19=\8cÛ/Þ\12*òpL)Îê*¶éZ'\80U8ù<Á\86'ãw×÷§¿ß}YÝý\f\85H.Ke\85®w\e1©ÖæI\9fШç\1f<yÒvD¹VÜ\ e;åÈ7\8eÕ¡o\fÅY\8ar\86_SÇÑÚº(¸\8f\10ë\88¹&©\8dh]KÕ't:å\82£QTìj\95e\ap§ª4ðßl\bϤjT¨piìécõ¿µ®Ø\87\ 1\95\8cT¯oØ\87\19¡Hì\1c\87S\vc ¤J\92\94       ¨<!:Çm\vÓ\88\8dMPmN\96Þ\8e|¢¥I%-¯\ 1VC\ 1\ 6aun\81Ë\8f\ fP¬D\85zy¯u\9bG\10\eÍ\83ÃÄ?·lû´
+\91\9dH\95\8aX\0\18èà\ 1ÇKµÎ4\90#]Äö\0½L\ 4MN)Ô¹A;¨\9d\94ßË\12Ä\87¥(\b5>5:Ý×ÖÅäRªÕéòU4\8bèÖàplò2\83\14\ 6\82\8anr,-\87úrݨ
+\80ð"ü\8eîoß7¸;\9d¡\ 3QÛÀ(\ 2¨\95SÖÕ%í\99y\1d1Åè\88\9e\91\8d«¯\11\11ô\8dÜÞ´\1a>\12Éócc4\0\84eÉóÈ[\8cèË.\8dw\9c\0â\80ر¡^DVÇ\1a°\83Z\9b\8d\8eÃØØ«Cÿ\f\8e£Cm\8aSÌÖ\8eÈzà<u\95Î6\18V\ eJ\80Óà5% nìPVï\0\8c\16ôr¤ÿsè
+(\ 2ÇÔø}F ±Ô\80\ fÛôX\98=\8e£/R\19\9a=\12VΪb\8b\8eG_2\96\eDÄ-»OÝ®\97ÑYè\vU\96Ö(\8f\ eÊÆSVÊ\87yl\ fðÀýÎ÷Ñp h"\9a\8fq\89I\9cex\\1f\ 6ùw¸\9eÈY~\ e®¸\aL\ 1\18\98\13½P<\ fàE=A®\85÷\ÂýNã²\95\86\97\99Ï\81@FÌ^'\11\ 5·\18c"v7o`²\91S\8c\93âw\94ݤ¶r\88      É\0\90*e\86[I÷µÓ]\1a\0\ e¦+\8d\88\14\93µªxôU\1a\ 4\1e\12\ fm\83\89\89¹ÓÕ\9b»\9am\ 1dgb\93Q¡·\86¡\84\91 l\8c&æ4r\93¸\v,!\82\£`Ò\ 2=\f\a\80\95Q\8ac]:\82ÔXý\rl\83WP\8bSc\83g\8d1níuÊ:Ãþ?\19ô¸\1cÄY¡\13Z\13C\9e#\ e\ 1°ÂP\9ah5p,ÝëÛp\88\16ÈS\84\11à,ê\8dqb\8aB¢2'TÁ\9ccE|ã0­¹\1fánä\138óÑ\8fxf«"\10PFÃÀ;¢.~áï°¶ò2#,`C/SæS§X\14±|&cì\91ü\8cÇv\ñ­\1c-\90\16\ 1\8c^: \1c\10ã.ØX\93ËÕÖ\14ÔRLÏλ\bnüÐ\ràù\9c¼ü½\8c\vnüÔ÷³\16:Pzù12*Xÿ\81\\8eUÆ1\16ä±~\18×\15Ç3,ÇÈYÍÊ-8£º#\b
+÷¼\81\fT0\9cn\ e\1d#¢Q­Of\8bÌhð¨Â¸M·;´\89p\9fç\96äÀÙö\94æeFÞOÚí3\83~yÙ¶²X¨\f\94(\r:\8bsæ]S5Ó\ 2\0HëåXiStì°\ 3e/à%\82E>À\19ÀDzP\9a"á~§­è;\0\1f¤\10\90Gc×i\82\rÁ0}8[Þ2:\91ç\8eGcHh¯÷\95oÒ`\8e\85\8eWonkj"\1fx\1eXg\11À\1c\10¥\96Fä9ð0Ænz}-ºW\80\1e\8a5\8bÇ\18GW\96Y³HIH2#øêÃqpÕtÅÝã        Zx/Ñ÷Æ&\80õ/_"\82¯ý \8dÙ@Ô¡\81©æ§\1c,ðÆ\ 59?\88q\8d&\1a¤)f\85i}\19mÕHe\ 6T\96ÑÄ\97é\ 5\89yqæ\97\eß\ 6\ fÇbª\1d¬`/@Hy´z\81\1exo\18ê=\b®¦Ô\888¨o»\94 Í}'<o\11&\84°¿2±\1f\7f\12ÖÉÀ!^%t\89Q\ 1ù\vë\86èQPúÞ¾]É\8b*\8b+\`©{$îS\91Ô6è\9e\fa|¬1\18\ fX\ füöÊ~Ï>.»÷ß¹¼ÿþüÕzq¹ÀK»Èàâ\82-`]üëè\7f\85ô*"endstream
+endobj
+935 0 obj
+1797
+endobj
+936 0 obj<</Type/Page/Parent 794 0 R/Contents 937 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R>>>>>>endobj
+937 0 obj<</Length 938 0 R/Filter/FlateDecode>>stream
+x\ 1\85VÁnÛF\10½ë+\ 6<9\80ÌH²`9\87\1eâ¶\ 1rpÑÂ\ 2\82\ 2¹¬È¥¸1¹Ëî.­ðïûf\96\94d6AaÈ ÄÙ\997oÞÌì?\8b5­ð·¦Ý\86îî©h\17\8fûÅûO[Z¯i_áÍýÃ\8eö%­òÕjEûâ¦\ f:§Ï\91L «_µ'ý½kLab3PÐ6R¬5ÁÈ[ÕÂòÙµ\9a
+׶Ú\17F5ôüô\b3\8f\83\81B_Ô¤\ 2ý±'UÄ^5p¡Bp0\8cúÝþÛbE·ë»|\83ø7\1d^\9c\9c/\ 3\95Æë\82£\9dL¬)ÔÊë@Ʀ'j\80©A\84¢÷&\ eK:ô\91\82j\ f\8aTsRC`h!a´æ;©\1epm4\85\8aÆÁGQëv\1eúTk¯ÉHÊê\9cÚû       \11\9c©ôîâK\97K².\92¢L\0\9e\8d³|Ìks\9fo9¯'e\a*\1a\ 3\10 DÛRÎè\10\ 4\8e\8e}\97\11R²d*A\9d¸cö\7f\92rNûZ\ f\88î[!tôùª\1aSÎ8\9dª$$YGSF¨\9a0\ 6\9e\85ñX#ÜÙ\18q\155&Dr\15e\9d\ 3ÔCs)yÈrú\ 2N\ 5mJl\16\96\19§Ò¡\f 'zÍú°\165EÊ\19ó¬\9aàH\95¨utp\83à\12\8e\85Å¢â¸ü,ÌòÓ@Ñãã&?üø\95\85\rUÎÏâ×,ɤ"ç\8d\ e\91bÞQ\bN2EÓ%\13Ìa2þ\91~É(´\87\1cH+ ±Pö\1eï&Ƹ\1e°µ\ 4ý\14/ãÙÞÛYduTÆ\828\98\ 68þ!w\9f+ÐÒª\88Ö\80ÓÊõ\80&®ño\14
+¿¸\12.¡\89D\85\fu®°OÆ\8a\10²Q:Ò!Èfl\1143t/\1d9k\1e\ e;öÎøÞëÎyèTÊrF\93ô/-\0Ê\18Â,í·=\99\98KÊH\99MZ@g^Ë\1eI\95:\14Þ\1c\90¡V\1eMâÓáÔÐ#¨¨^RGÏ¢2\10\96˹÷\12EW4rk\80I®}\8cºíRf\8d;råYy\£qî\8c\14et\901W\1a{ÄäÃØ \82á,6\0^:b\ 6\0\ 2?b4TÞµ\12"1\812°ª1IÆ´Pã\91ÍyY\ 4pQhÁû\9fÐgÀ@\85¦Ñw±>Ï\9aKÏ1§¬¨¦q'\91ñÛ¢\83    P       \9a\1c<ú«\ 1>ËY4ø\ 3Ær\1a\r§\91÷·ëÑ»®oÀ;w:\1cë\94:²gÒ±\1c@rT^F\fpáW\13\96\94\ 61[L¥×M\93\10\8fr:%\ 2Óð\1fy\93Á=Ãjìò<hâÜ &-Î\84¾Kb׶ðCÇÃIj\84W¢W¡w´\832ßÂàͤȣR®\9d\85ÎÄÛ\8b\1e0'÷HeBn$M.\99,\ 1|\9b*)B\18\130ÐÚ\9c\98ÄZ½\828\1e{mg0\82S±y-Îb^R m\15¦5F\8a\9b2\14r©Ò*ö^/¥\1d\86+ç-FVÄ\aù\ 4Ý)\8fÕÌ\93\ 1\fÇ\95E\8cÅ>\8b\1aâ\80\97\17àç|¦û\83\8e^u5\160o\7fÓ\9eg"7 \b\f\r\a\94féya¿qÊ;\12vÿ\13\1aVH«\89\90ܱf\81a\9bãÒ@\81÷@¥\8c\80È\0Û*«\8e¸\ 1à\1a\93®\ 2\81ûý\ 4xr\90â\89Ùfå\1e4½ \ 3g)\83¦0ØBFðïû\ 5.Mt·Ûä÷´}Øáy\83\ f\ 2\8eõ0Þ±Ö÷»\9cï_¸^]ݳ\9e?>=~¤?½û\86ÍH¿¹¢gXrMá ·éÔm:vók­º\88îü\80Ý=\ eö$ÿÀÆÛÝ6\7fÀ]\ e÷\8dí\8e\7f\0¶¿\16ÿ\ 2p\86`óendstream
+endobj
+938 0 obj
+1153
+endobj
+939 0 obj<</Type/Page/Parent 794 0 R/Contents 940 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 127 0 R>>endobj
+940 0 obj<</Length 941 0 R/Filter/FlateDecode>>stream
+x\ 1\95W]oÛF\10|÷¯X (À\0\16%JòW\90\16°ã¸p\ 1;m¬ö¥îÃ\91<\89\8cI\9ezw´¬\7fßÙ;\1eEÉöC\90\0\89¤ãîììììñ¿£\84\93ÐÙ\94\94ÕGW\8b£ñÍ\ 5M'´Xâ\97Ó³sZä4\89'\13|\93E\9f\v±¶RS2\89ÉȬեÝÒ/\94«Z\94\ráï\83¨SAÓøåÃâ»\8b\94Ì}¤Ñ,\89§\88\15áÑ$¦ßUÙ\94Í\8aDC÷\vºöÏoJ[ô\11¦>Â\9c\92¤\8b0=ãç/\8dikI[ÕR!\9e%\89þ\89\17@ÒÏ@çâ\bº\97öêöë\ 35\ 2çÕ\92|@\94ë\ 2FôðåÛßÉ~\96\b\80r\12ZÒ÷=\80]\81\99¨*\99ïÇ\99Ð(\99ùÒ®¿Þ\1d\84;¦MQf\ 5\90\1a\0ýãúó\9bØÞ\0\87P8}\10Í\81³\eE©È\9eÚu =S\8dÕ
+È´!\1f¿«\9c\1f\1fÀc\1eÌ!\vHtuýùM\1aöë\8cüÉi\17 ô%¢¸K3=\8dÑë<ºmHé\1cm°Ê±H¶\90\1dÔcZ\96ÚX2V­        \v­Ë\85¬U\ 3ðL¾n\e÷D¦ê\1a\9f?î£@9!\8fVÊþÔ¡IBSM\9d®\851\9b\9cFß     \88i¤ù\1ff\9eF\7fùX³pø2¯¡Bcµ°Jÿì\9e\ 3r\7f(Ô7H\88\1en ·\818v\95¹\\f\9f¿âlK\ 5\ 2
+aC\93è1â\9fTSm©\16YQ6ÒÿÎÒØ`\8e\109ˤ1 ­#4Èj\90åáò\8eraE*\8c|ü@T\9a®º\98\16\88î¡O\7f¤¾\88c8Ô\95Za\80Ý° \90\ 3\f\81\1cW\17\86\16XUÛØ\81¼\19e#¹\ 2¡·Dk]>\97\95\¡JE"ÏCÑ\\9fKçG*&º]â3@\94æ §i\1d!˶"7î\9b\12\8a1\92y\93\ 4)\e±\92ïË£WÂGg62\ f\9d\80\1c\9cd¿,\8eØ×\9c¹QÂÿûöÛQ2¿\80\8açÓI|N5M\93\93ø¬û\ 4±zwÜ)c>Mplè\8f \10Æ\84ÎK\ri\89
+ãØäj\13ÓC\aÛ\95¸\9fU¯(¢\1eíctþøaÿ\94CéNa h\8dª]\17j\ 5%æÒ\8a²2\873\b1àG\90*_ o6Ú\>ËJ­k\89¦e*wma\8f\83-uææ¬Cµ\96m\95\9f@\9f2-\ 5\84éø\ e\9aÕ-\ 68´_5\a=ã£nØR\89    \90\ 5\94\84\16/¸¿.«ëa¡Ö\12]Å$¤Pý3
+\10i%É(Õ@Ò\riYI\b\9cR-\9a¬\80g¹É«ª×Uº°Î'h¥pÐ\16Zµ«b\ fqÀÚK\98\ 2\89k­¬ÊTuÌÇ\e?\84\1c\82u¼Á¼";¨éº±sù0½!.:\ 2Ã\81qt3\ fL~\vvÛ¨lx\ 2à|(\11Åq|Ã\e)/µÌ`<\18\16|í÷\ 4úÛ+Á=q@ïFµUάÁA5$=¢Fé\1aNº¥÷'aÜ\1a\14\96×\18\89S1æÙD_9öøf'çÞYow{|\12¿8z\1c\18ç\r\95RO\86ªò\89uQ\9a.mð\9c\81]~âÅþõîòö\9eî/ï¾üêÓõë×5s|\13\1e\8c>yÒ0)n\87ß\83¢W\8f\80úwA/Àëa\8aWç1hírYâ¦`Ñ\ãç¨Sö\eýDË0º\8aûÃS-_D½F\17\9eå\8e\16ê»âï\aïw\82­ÇÝ:âWÈ\ 6Ä\rè\9fr\16\bÊ\89\877E*¡T-×\95ÈÐþ¸¾"èuÁ\96\vϹÞ-\b÷\1c·-?ä\ 6·7-­\89m\9eîS\1aÅîè\0\8f\9b^/_L±³\ 4Ü\91°ëÔ¦AàtK¼\8aÝ7\80Úà¿@(r7ÓøQ4[RP½¦\16\13\11Ó­ecâ1x\92Ûým0ªØ¥\18\ fÒ\87õ×ß3y¥:w5[ce}ì2\9a"\8c\84\rÈ\0\12\e\f[\87 S\b¸ð`P¹±\9c\ 6;`z\9eĸ>Læñ\ 4\8e?;\99Áñý§Îñ¡ØÉÉ\9eËß«Í1:Á\ 6\87J!%í,\96Kò"\ e\17\1a¾¤Öì\97$óÒzð®ºW\e`|Ó\ f\ 6\f Æ\95\18\9d¼·   vS\eyiðN\95ý}
+©<-\aL6à\0=\b\86\1f\88\rL\\9c\81\88Ó9ö_MÉé,|èi8=q\17¼½·\ 1öÑÇ\b\8dÁ\8aÇ\85ĵ§#v\10\82ã]\80W\17<Ä{\83\83`\ 6\1eÉaºÁ\eÇ>\89aA\ ei©ø\82\85¹å¦ü³ªT*ª\7f9\80-yÉàmÀ+©ã\9a\9aíF÷¤»A\8d\1c\90Þ\17\ 3\e\ fÃ\18ß\9cw§¡ÙÙ\ 5ß\80\7fì-i~6Ç-\ 2¯Wy4?ï¸ûóè\7f\rU\ 6?endstream
+endobj
+941 0 obj
+1500
+endobj
+942 0 obj<</Type/Page/Parent 794 0 R/Contents 943 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 134 0 R>>endobj
+943 0 obj<</Length 944 0 R/Filter/FlateDecode>>stream
+x\ 1\9dW]oÛF\10|÷¯Øú%naÓ"%Kr\80 ðG]\ 4¨\9d´V\10\14u\1fNäIbBò\98»£eýûÎÞ\1di\8a6\9a¢Hà\ f\9d\9d\9d\9d]};\88i\84\7f\12\1aO)-\ f.\17\a¿,\ e\b¯ó\97\98¿üñëÁl\12%4\9d\11\95\14O¦Ñ<üVÐ=?tz3¡8¦Å
+á¦ó\19-2÷ü\88\16éÑ\9d\94nDµ\96d7\92~\|á$ý(\88y6\8e&û1\a\9aNo\92\90%àÙOD[¥¿®µjjzÇI\9e\ 3¸\9f\\80\16æ\11\15y%)¯\1c¤¿Ö\85Z\8aâo22µ¹Â\8b\8a´\14Ù[\aöôæ,¤=qyO\92)°.²£^>ºþpË9ûDtï\13\ 6YrCøÏ\ 4\94¤VîçL\95\ 2 ¶\92\84\96ôEåU^­£\8e£³$\9aÑtÄ|\97\94ÄI\14\87ß\ 2ï`{4Ã\1fû|ÿ©\1a*\ecI\14FÑF<zÚk¡\91×JÝ\ 6ï\87CðY\1c\9d\r\82ïË`¯\ 1q@6LN²Jõ®¶T\vcÀOf¾ß  #-\13îé\83æ\9c\8e\8e\84\97\9e{\ 6¦\10\12\94¦\9dj45Fj°ªøá\13\ fê$\1eC¬h\8fhÀveóTXP \1cßw\vúx}\15ñÛY\83ñ\14ü\9eMgx\0\1a\9c3Ûþ·\8eß³éÜE{ÖóM^\89¢Ø\1d\93È2z8\ 2\92Reùj÷ð#\89\96Û~(p\9bÌ£ó^àþïøëø\fÌï§ý7æ\ 3æ!¬\8eq\88X?\82£ÿ;\ 3ß\1d\ 2ÏZ§î¶Ó]^\9e\ 5\90Ìß.¯¯âð=ñým\9b9¢.Àb#\8d×?OG­óRè\1d\89*£¥H¿b\9aÃ\90¤ª²Z\15\ 5wü^\94KA´Í\8b\82\84µ²\84äÐb~\8bH-ϵ\17
+^ëË\801 s«\10§\9e(\ 4s±È"u/\90\14é&Ì*0zf1È!ü1a C*Å\8e¶¢r\18Ø9´\ ev\87\91/rÌbûÄ\0\02\99\9a\9d\86T\83\87Q~\ f-\eQ¡ð7\12¥ªÖ¯ÐàtÜcò¢À|WÂæ\8f\92\ 5\9a¯\1c8\aÌ\94Ë\8c\vC|X\ e\ f\ 54L\19\eBÉNè\92;¨p¦kïJ}Âñ(ØâÁ\e\94°\ fø¸£\ 3dqE\8e\0ÄÇóKIo½\bZ?íA\7f©¢\9fü{_\15\f¢ÂË6*;¦í&G\8b¶ðØ\9cå\915©Ì\98\90$\1aEÓc0X\14jÛÊ&Ô"\9f \15\90À´\eöäRò\9aÊM\89\97\84\1dÔ     çÈ\944\11-¸¦\90\9ed\8e§5-5ú\94
+c\rtÇD\19xÁç÷w÷\94  +\96\ 2̵
+`&h\95CݯÈÚ\eYO¡=v¡\8d5v\85±Ã®w\86¤¥±B[ï\8c¾þLHh\ah\90o\8d\86°ÖvÎ>)-r¸#\9b':³\ 6¼Æ`÷´¨°      \e\9dÛÝ\ fL\83¿        h<\1eã\0\98Ìgø
+b\11\8cV~û\9fã(ðÛ?9?\1føe<\8a\92\18ÆgÔνHF¸-¼ÒÜ\92Ø_\9d¼Ú\8fnEµ£Zªº\90~\91   ó\15ÝÕr-tÆ`]ë,û;Të*~\83Z\97y\ 1ä\\18\96\1e¤\9e×ü\ eT\88\9e¼LÞÒÙ\9aB+\9c\84÷µX"5\ 2±©@b\ 2}/\97hxðXd\1dÄ\fMUµÔ\982@DÚ2\7f\ 2j\bÃ\8f\vÙfmo\89\ 5d\ 4\8cÐu\ 39còVh\a\f`)íVJ\7f¦¤¹N\9b\12=®R\b\8c5
+*¾59\1e\14tè²\1cºà\fò\95àÁL¸À\8c¸\b¹_ÆÏþ·Q°¦Tp\162Ûܦ\eàDµ\87\1e¨\ f\16\11\16ý\85|\19½ª0P\95\94\19\ f᪥ûå(a1p©H/\9f\82?vcè\ 3#í%\eÔJ4\85Ų}®       \8cî\ 1ô[ÀXÞ\ 5¦©k¥_Ì®´\97ï?Ü;6î\16¿Ý>Æn\ 4zÃÅT£\99\ 5\94\95îºÑ0Ü\v´½UÍù\93\v\82        \8c\85\82ÉlÜ\81'\aU:K    ý)ݤ9\ 1µ±|\8c}=½"
+2VÖÆÃÍ\9cæEgm    ¹\ 6²<\ 3;¡'|Kvt:pÊ{7ß,,Ê6F\90ñKÛéJ\ e\9e@¦¾Çò)\95µ»\95Ñu'E\97ñðÞ\1f\1f\98\96ú\90VZ\95\8e/\f°\81ΠD-ëB°K/w\ 3Ê\18óá\ 5Npܬ×\90uj\15Öñ' ÄèAÉt¥ÊºÁÊ2\87t{{\85ëë6Oµ2jeÉgd¢ñ®Ê¨Bâ «\8b\ 6Îæh\r\1eÆÇKò\1d\ fÃ\1dÈ÷ýóÉ\a\v\eGôy³ó'<*ÆXò)\8dÂ+x\81·Jz\17lág.ë\15;»j´\ 6>^Í¡QÝ£Ðt0lì\98ê\8d\ 5oRº]ê\bd÷s~\87\13\a\16\ e7+\1468}ªò§î\ 6fb±\ 2\98\ 1\109 Ö\9d:|*á áH<æî\82ö\12\b\94\ 2˵\13Ó\e@ò£Ãë\1c·ÝÃ\ 30f/nt\9f\82ý)$\18\94:Àå«ö \8e\197¤Ëþ\81\15\8b\0ð%1,\95©q.Õ/\17Vè`\82G\16\91ã\ 5\90f\87\ 1*CyÞ\0OoæáCF\8cË\1f\9f¨Îñ\89#;º¿¸½¼ \8fZ}\81î°\98`µ \12&®*Æ|âß|2Kð©6;ú¯[m\82\8f\8cs|*Æ#\93s\8e\ 3\1dþ~ð\ fN\87°\17endstream
+endobj
+944 0 obj
+1711
+endobj
+945 0 obj<</Type/Page/Parent 794 0 R/Contents 946 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R>>>>/Annots 143 0 R>>endobj
+946 0 obj<</Length 947 0 R/Filter/FlateDecode>>stream
+x\ 1}WMsÛ6\10½ûWìQ\9d\91iRßîL\ fN\9ct<Ó8n¬\8c\ 5"!\11  I0\ 4iÙýõ}\v@$D7\1d\8f\ 4°oß¾ýà\8f\8b\84bü$´\9eÑ|Eiyñn{ña{\11G1þÏ\1f       \7f|ùýb\16/£kZmVQL%Í\16«hæW\ 5=ò©«\8f\vJ\12Úîqßj³¦mf/\88i\9bN\9eeóJF\95ª\10\rµ\9aÚ\\92.2ÙУ(w\82\8cL»Fµ¯TêLÒ/Ûo\8c\ 1\8bËå\99Åp\8d§\9bY\94\9cã\19¹Ð\1cèäÂ9¶ÁøoøÚ\0\1fNÛo8=\99\12\1dsÙH\8fù¨»"£Z\18\ 3w\1aÝ\1drv\8bÏ^:C\97É\1c\88·ÙDtxPµ*\15­Ò\155òG'MË<\bzRU¦\8f\86è~ë­\93ª,?F\94\92\8eâ\95\84  ö]/I7ý©ëM\b\99z\8b\16[t"r\93päæ\8c¦¤d6g¦ìÊG\ eñ\9a/,Ô!b\ f\85\14F\ 2ë\1e\11óq    oÀ}Ë8\9a\8fî;\17\ f¸ó\bÆFàü\ eþ\13\7fJ;íá°ªðY:þ@!\14ójZYZ\ e»Vó\93T\14Å+\81\ e\15}½¿û\8b:\95\81;\18\97VÛàX,=S'þAÿ-®\ 1÷\1dDàO!ªµ\89\88¶¹2\94²4ñW<\vÈxW`QQ&\9fe¡ë\12á¥]#ª4\97\86t\ 5 \ 2\ 1\86ÊKÍϦVRC|v]KGU\14´ã\1dÏ2cG\1aé8ïï1ZW\91?9[E\vÖÒ\16w\8aìYT­8H>\95\97\ 5\ 3\19¤\f\9cmî!ÐH\7f\fûg\87XÎ@\ 3IV#ÈìLp\11\97\87÷\94梪`\19\97Ê\17\91¶ð\9cwöâµ(D\15ÈÛåM¦Iµ\91c\96J)*ãÒjdÕ%¤¡J\1f!\92\ 6QVµh\1dõ.\mÓ!\97À\9d\15\87ÉUm\18Ì\7f£é\93ÌÀEú{¢"\19MéUw\94\ 2£È²\91ùSuâªÀ×\82oh¯\91FwM*=\8dVa¹xF8Î9âd÷\84âÛ¾Ñexøtúáö½\97f<\b\84Ѥ©î +\17+¶±\16î,dÅEe
+9µ¹Mø«\8fK_\87'}Y\r+ÛP§'\ 4Ñ 0;/)\13²\ 4N\97\10R\8eÚ\ 3\9f¿KY\ 3\11êÔÖ0]KT)[ÈG\94\ 5\1aQÕáTÓ8\87qW¡ñ/¾\93µéí\15´H2\97cð;k8\v-\97\81Á\13ç\9c]\80òI¥\8d6zß\8e¬÷\ 1¶AI\ 5\92\19:c¤M\87K5òNï\83\14\1e,\0ÂÓÿSè\ 2Á\ 6\ 3
\14r}d\1e§\16²år\ 4Ê9Ê\15Äòçyã\88^½Cðm¹\b  b\86\90ÀàZ\1a#\10 À\ fhu:ã25µ^BuÌ\9a®\19ÀÈôà\1f\80¶ygApRqlXyÃ\86^Öf¬³\eTнª¸¾Â"\ 4\80³\bQ\9fç%\97\0\eß³D\ f\11öÂÚtéî*\83±iÍAy\v\99S  \0kFÀvÃĤ\83lYRÒ\96nR\19÷Úý©Û\86\9dÃtiÎ\1dbØüxwë.,\14ª\88Þ\8fè\83\9c\ e¶ \f'v¨÷Õ\81ÓbJ²M#ºA\19Çc\ 4,4e«;\18CÝrXá=\8a½|ie\95¡xzþö]Ûa¢ð\95edÝ\ e\97ï2\\830'5ð\ fe\96û\1d\89º.\14Ú\ e·\91LF\84\92`¡ð
+\11¯4R\ e\eék¥^|g;õ\9d^^VE#Ó\ e³Ýz\90\b.×\{Ǩ§Ú¢Æ\10Cß}ÍÛ\89ô»«z¼\81Å\86ñ\89\93×ÇÉ\8cl\ 6á\96Ù\94\9dU#Îc\8dr\ fßë¢Ã\13Ȳ.0 1\99Ny¾VÊêY5ºâÎ\8b¬\16-¢Îùe\99á6>2Ü÷Ù«\8f«~\84½<uÜûÏÛ\ f¿ò      \8c¤óu\12-i\9ep3.i1ÛD+¿z3\ 4Ï\93h\83gkÛ¶\87¹\8a\ 6\9dÜ©\85\1cÜw¨'Óigç\b\f}\ 6ùÖ@\90\830óA/Or\ab\ eâ\1fU¹9y\98Sí Îs*ý¡ªîåI7\85kgý4ÖO²§\14°\rµ°t¸\99\9fæ±\9b\12ç<Ô¹\ 5{\16,áö5fÅáY°,iÃþ\ eÏ\82%&E\90\11^\8aw\86·èc\9c\1e\8f\89·\9a\85`Sðþîñ
+I9TÙ·ÎÙêåÝ\99\81g\ 1\181Íð\8bTÛ»w\95\8d\ ft²Zc\1c^Ïð\9a\12¼¯<Þ|zwC\ f\8dþ\86~\87ÁÐEÆN\18¬\84KwêÒ\1d\9b$q4\8b¼LY\94§\99r\16ãÕéÖ\8e)Vë\8bõ\ 2\9a`K\93\15õçÅ¿PÜ\1e endstream
+endobj
+947 0 obj
+1490
+endobj
+948 0 obj<</Type/Page/Parent 794 0 R/Contents 949 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
+949 0 obj<</Length 950 0 R/Filter/FlateDecode>>stream
+x\ 1¥WMoÛF\10½ûW\fzrP[¶dGrzK\82\1a0Ð8n­ =ä²"\97âÖä.Ã%Ũ¿¾ïí\92\12M\a\b\82"\8e\ 1\93»óñæÍ\9bá×\93¹\âß\V\v¹ZJR\9e¼[\9f\ܾ\91Å¥¬3¼Y®nd\9dÊåìò\12O\92Ó÷¹ª\1a]Ë|>\93OÖdF§ò\87Û:ëe£\9bNk+\9f\8dM]çå~ýjýÏÉ¥\9c/®aâTÙT>Ýßý-­7vËS\e\1cä\11ú\9bã\fý\9d_Íg\v\1e\87\ 3¸x»ñM­\92&\1e»\86ÛþØbÅCw¶ÑÛZ5ÆYqY4O?\1fLR;ï²f\14\8c4yíÚm.¢¤í#/\18¹ä\8aÁ#ò\ 4i\98T×ÈIÉ/¹+ö\ 2ë¦ø¥Od~\15c3¸£\81\82Ûj«]ë\ 57˪m\98\97¶;S;[jÛxÉ\\rK\85ÃóÆ\94z&\9fµTµöx)1¥e\9fÒ©tc@\86LOÏp\9fÆ\9då\1däØäZ\1eU¹Q\93\98|k\1a-<Q!®Z\95^\90\96\12ï
+\ 4\86,\e\17î>O\1dg7\85.\11Xô.¨\8eæµP)SVx     Ç\11a\18\9f8=âü×Ã{ITQø3y(ÚíVÁ¬¼m\11­mL\12ï\7fpi[h\9c`\89\98ǽ*\11ò£®w&AV\9di\92\9c\8eë\86ÒM\Þ¯%u¥B  \10iíÃñªÒ
+@ê«4è\0£È½'\e\ f!ý>¥R%¹±¨Ä:7^*\85ó\92j\9fÔf\83¼\19Ô¨\ e ãPr¿÷\8d.ÏD\7f«
+8g¥y8kmBtUa\9a½\98\86àï@!$\99#\ 5<\80\17Ð*3Û\16´:C`\88²\7fÕ¹úÉ\8b\ 1\87k\18(ö3¦úûú\ 4Í&¯çoðûúf\85ß\vü¯ákèÍ¡W®o^\a>\1e»\13\98 º¢\ 6Ô!0\9a¼¸\1dèÄf\8c\8d\13\ 2ëtQÈ\93u\1dØ\91«æ\aý\93«\1d\80MM\96¡C@ÆÒ¥º\88\1c¯uÏjâº0ÍIá¶è¾
+Ù¢'ÊÈ\aBÁÓ#\9b\8dNrëÐ\96\ 6Õ`÷\1c(Ø#\ eª\86Êe\10\85иRªT\13h\ 6f\92¶h@\89\89kBL\99СfMç$\96\93à³E\10\8e§AWï\ 5ö¬Õu¨\ 5áZÎ\82z}´\9a}X\82I\87\8e\8a\1c\84»Tí\8f"\ 2þ&µ\ e$\ 4\11\ 2ûQ[±àzÚc\93$®¥<ÀØÆ5 <\98\14Øú\125ôe\10Ó!àÀ\1fbÆ;A\a$vþ¸ñ\11BÏCÉ\fú\90@W5P\10\94\86½\ 6Å\1aÔ\9av\80È\90ïÀ÷\0ò1S\14\ 3\1d\96Õ®\14tL¦        ¾ëôN×èfXSiÊ\ 2Ñ\11\83\12Æþ\1c\9a        g\8074 \15\17xRk&ÅJr\a²\aS¡Rý½Jy\8f\86Iq\ 1¯kýµ5Ôé\80\1fÌv¹\81v@\82¬\14ZA^Xc\9b@ò­ù7ҭ׺ã Bê\13ßC\11\ 6í\91\ 3Q\98\19û\18Ã\v\19\91\99\ 1\81&Ð÷ÔP\0B}¾«µárpt\80\ 2\95q\82\eµÖâKH\ 1\1ah\88ö7\86\88Ñ|dâ¦é\ 5\ 6$\91Á\ 4È^v\19ï_Ü&ý\9c9_Ín0f1;¿,\96«~\b\ròÀw\aÅ\e\8b7J;qæû«?o÷¡/¤$¹²[²\86\1fóç\8b\eèà\ 1 »TSM99\ 1¢¯@V\ 3å:\90\19X\93ôß/\8et®-Ò^\12ö\9cDá°Ú8\988\fb\8f)Ñä®\r{ÉhJ¤mU\fÓ\ e¤|¦v \rÝ>¯<iÕ\9b\8aª\11º\bÍ\14\87
+H¡<f\ 4\11âå¨\ 2\13Òª´Ä@â\9e\ 4\ 1C#`\91á|\1cX\12Û\90\8e°Ì@\82\83ìh\84\ fÆD{\94ÔÃÜë\9f\r\ 2\12V\88 ÂS¯0\88Nß*ªÊhÇ\88\88\91É#´\80\ 5Ã\7f\ eù@ññØ\9b¿YÎ\96?\18{óå\ 2<\1d\18{WXa8ÂÀ#®\95òÐÏáÈþ\81à\87ù7\1c\8b\11õ»\ 21\1añPE\99æ@PÛ°\ 6É\ 6ó\ 1        º.\94)Örã¾Qm¢\9c\81sY[\14\13¬J]n\806PPØ\8aûýe&\1f\1e\0\83\15\ 1?)V¼#Chµ3`\9f\a\92}\83£\16\88°/"T×\80a\80u/\1d\ 62\ 6\fi>ñ\1cØvd@¼\8bÎ\18r`U\ e\11Á\1aó \98¤\9c\8ceËu\8c´ã\9e\16ç"þ\ 6Ê÷w\8f¿2f\9e\9cx$\9bq7`sî,&ßx#\9eêå\1aÖ5\92ÂNÌÉ\r\93Á>IÌá\82\84\81\98\v-Ç%£\19w\10\86\ fÚ\83OãæǺDR3\97¹'ì\1c/F\f\ 1\11ôJ\14KNæ³`ãk«±\ 1\ 4Ø\ 1\ 3brÅ\8e3\ 6\9fh\9a\8eFxa `Ó
+r}èPÈMü*\8a\ 4\1d\ 4\95\89±ÍDÞéD! \ 3ss\ 4\1d¶ÂxîE^\80\9f\9f\14\1dæÜN\17"_NwF\85Èî\1f\1fÃ\9a\19ò\88ß\0XÙ¸\81³¸Lå½\14fS«zÿå\15þ\ 6øÈ9ÅX\r\9b#\ 1ä¡#=Féâ,Û\e\93^£Â\ 2í±¾Â`¶M¨ðÅíÍñSíê2~5ýÔ§c zÏ^"ß7,S»^]\ f3ìõ\9c\ f°2ÿyò\1fk7Õ¦endstream
+endobj
+950 0 obj
+1670
+endobj
+951 0 obj<</Type/Page/Parent 794 0 R/Contents 952 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+952 0 obj<</Length 953 0 R/Filter/FlateDecode>>stream
+x\ 1\85WMsÓH\10½çWtíÉT%Æ_$áhÈn-\87\84,1\ 5\87\ZÒX\1a\98\19ÉZí¯ß×3\92?IJ\14\10@ÖLw¿~ïuûûÅ\9cfø5§\9b\ 5-¯)­.Þm.^ÿ±¢ù\9c6[|r}{C\9b\8cfÓÙlF\9btòÙ+çÉ\1aª\vE\9f\1f>|¥\8aÓB\eE)\87\87\86\1a¯èa#\7f9b\93Qîl³#2\)OìådG­mÊ,¼ú\9báZïÕoñ¶ðÖôÕæÛÅ\8c®æËé\ 2Ñ'\e9!÷§\85m\rmu\89\9bÈ[\Åu¼\8f\9d"|¦2J:\89\9eÙ\8auÈEÒu¤öÊPis<«å\9c¢óì%Q×\98Q`\8e/}½ú¢Mf[òÊ{\8dâQ\ 5\9f\86\18\12^\OW}ÂÀ¨ìÈ&{m\eO8®SÔ\19\80Cθ/Á3Ò\9e\12¥M.H\84ÿÅ\92FØEèj~Q!ó­uÕ(Ñ»\8f÷ë\ f\ fÏÏ\87\834<      èOiS \14~\e\95¢\ 6v\9dÔ kâ²´­?ä\ 3l2U+WIGc.NeÚ©4æn\89G\91{ SkjgË\12=G\94\96M\8dz\90(pÚ±«uÚ\94ì\b\1d°/ \83 Ý\16:-¨v\8d\97Wûk\ ex8µUN\99Tecl×Y¦%\19dÞ]\1e\12ß9»×\99\10\fÝiÐ_\83\98\11pðp¯Ó¡\9c\ 2\19H?z\16<\96M\9esR*Z\9f\9d\1aUyo³FH÷<y\ß?¿"ß!ë
+\bYê#\8f£î5£ö#\13ñ&\9b\8ep\9c\94\91\80\19\11ïve\9f¥\8f-\1a\85MyÇ\89.uÝ\81íå\1e    \bs\11\11ç+²[äaÒÂY£ÿ\11\12\ 1jï[ë2aUÝ*P>&êÉk`)Ý>yG4ãk\8b\ 6\ 3\8f\1f\1a\8b\139`AËz\1c\9f'½ì\7fhùó«Ð¤ß7\17ð z³\9cãçêö\ 6?\17ø\83(Ûh+oi\ ey\88­¬ÞÞ\ 4i\1f\8de>\9f.§s À.W5}\86Ô\ 4\8cS/ºZ\88\17MN´S\87\97\91?$e]ÎÀ!ô\p£\82÷¨Ù\10©¿µ¯\ 5!ô#a\91ÚÀ7³uìA´n\90g EOLxΨ\e­öEly\83\ 4Åû\80õ\8b¯û\90 »P\rþ8=вÕ@<hL:\ac\1c§)zÛ\95\v÷\8dã\9dÞÞ꺰\88\8b\9a¤\10Р       Î\8b|Åå\18\81¡2®Qm\9aÚÆԨ䴰^ÿ¹S\Ã\95À\86
+ÌÛêH¨QXΠ~à\85ûàËdQQ¡8\13ºÅ\%~(ÿ¼þ\0^ |\84ø´!?\88ØXà\ 1¯\80O8\15{Ór'<\8cð·
+MÛÁv\ ePJÅ\89:\18e°à\142w,\9cv À6f\15¢\8fk\12¥1$\80Þ¬\ fÿî\1dnP°Ì\95`M;\87¼B3á\eà\92¥{\9d:ëí¶îéc /é\ eQè0ò
+\1e\827áÀ£Ø\ 3_ñá\10É+®`'Á\87T.@CZÈ?È;¸\82ä\1aé(\8a\8fl=\15ÙòZäõÿ"[.ãü<\13ÙjJ\7fb\92\rI}\91*$áÿ\10Ú\ 6\91Û~Põ\86\a\7f\86Éê\\ 6-c®ÃÇ\99ÒR£\ f¯#ùáj\ e\vA\8dÖAQ@\e\ 6\ 2¾`¶\1aáM\fõ¦ß/&ýõÙy\ 6\13ÊXU\80\84JðP\99\90àÉ>\80OúÉÜËØÛô\ 5¦Ñ2&\ 3\82ÈÜqê{\ 3b¡CÀ\9d\9d\ 3\95E\ 5¢ÁÃGb\80¹2J\94\13\16\aÁúáé)\90\0N=jd¬SFL&\9d\94A\8ac^\ 2aÚÈ<\1aÓ\\10\ 4\12\85±²z\80J`G&     \89þT\85c\a\80%\17@\9b:\9dà\15\11\ 2\ 6\12\9cÇ\84>mýbµ\98^ÿ¢õ\8bÙíôölq\83¿®Ä_\8f\ 4\88á\18\8fRI&î÷\1e\8c\v\1fá\ 2\81\9d\92@~ê\14;\7fIj\v´\ 1sðÚDF\ e\9c\88YV±=»°\0=q\950mÀ{ªT\95È\12        \182\95ÚL\r/\8dàf/úÇöÖëâ\17\99c6ß?}z|\7f\98νé\r³\1aÔ\rè\v9*\8b"z\r\8f¢:U\ 6\9dÐ\ 2º<ÎR\11\r¶@/S¤ßzEÁiÙdÂ:\17ñ¬Øp\1ez{)\ 1±\ 1\9d-\16Ð\87     t?ásï7;kK\\ 4Í\94âõy\81ËAh!\16 \97µ
+b\ 5É¡A\eÖ3\10[\83N Ù\81O\a+ytº\925ï.,£"ß\1f·5l4w\82\19m\e\13\96<\ eë\ 6ø\17Zv)Kb!f[bßî´*3Ð\93\19¶Û-\85þEË\ e\eúàÐ\82r°øQä]ãv\16³}¬\94Á\8f\80\98\1fø@¡\9f¸\16´\14¶(ÓTA«Ãô\16x!pÑcXs£4ñ¦MÂ\\8c
+B¾\98\86Ø\99\ 36£|8\91¡*ë9ÖÇ\ 6£$ô,|e\88WNé#\0vg¹ÈW\91¡PD;i0\ 6üqå\8béIvµ\1d\85M\v6y\18fî¸\90Mé]GqÙFÇá*®\13^\ 1í\81xhU0·È«¡ìÓò.\ f\86Rñnì\9bÂ\14ÉïdI\18`Á×\15T\12¦úèòã7²~¿[¾ýÉä¹í]}\8eÙ$ß(gg\ 6ô´¾\7f·\16·ù&SýΦh&Ö\17\91\98\80s\15O]Åc\93\9f¬\83«\9b\15|M.\9e¼YÈ1äô×Å¿¶\98Ú\86endstream
+endobj
+953 0 obj
+1691
+endobj
+954 0 obj<</Type/Page/Parent 794 0 R/Contents 955 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+955 0 obj<</Length 956 0 R/Filter/FlateDecode>>stream
+x\ 1\85XMsÛ6\10½ûWìääÎØ´%»¶\93\9bã439Øu+eÚ[\a"A\891H0\0hUýõ}»\0)\8aJëÉd¢\88À~¾}û¨ï'3ºÄ\9f\19ÝÎéê\86òúäãòäâó{\9a]Ó²Ä\93\9b;|(è2»¼¼¤e~:\9be×Ù<£'UkZh÷Zåøw[\85|óÓò\e®^Ól\16¯\9eÏoqõt¹Ñ?:}FÖÑÓbqF\95'E¥V¡s\9aÂF\ 5þ\86Z§½nð¹¡Z5;úúôåO²­v*TÍ\9aüÎ\a\8c¾\ 4RÆØ­g÷\97t>»Êæì6\1e Ü/­«qÉ6ä»|CÊÓÆúР\ 1\7f\ 6Û\95\81\81Jy\8d0\9a\82:¯ÝÁ%
+\96V\9a\10\8e5¯º ÒÙ\9a\8aª,µC|S¯¶s¹FX\9f\91\9dþ[Õ­ÑgHÏ\aØVÆ6\9ab&[ë^ð¥\84U«]o>åu\10\808\84  í*ÄhK¢Ò¨©ã²2xè\83u\b\11©\ 6TÝØ\\19\92'R­\8cî©Ñ\81]ãÐ8\ 2\94a\87\83Σ\98\ 1um\ 3g\9dRþAL\93¬%Â\91·3\92R"\86\86rÛøÎÀ.=}YP¡\82Z¡Ö\84¦\1c\97\1aß)úô´à\_Ñ\ 69Õ7kâsÔ×,=\9aßd\fÖ\88¸Å\82\9a*\8f5n\9d];U×\8c\9dª    Ú\95
\8dÈ¡mÕ¬*ô\9e\93\1ep\17¼6%£\ 5¥\97®ré#ªþ;\14ÚrΩrìK`Ë\98\12¼IYÖÎv- B\7f$·xìÑ0 ~\88,Up\94äħ]\ 5U5=\1c\15Û*0\ 4ô´ì\8b×yöÿ¸øýù\81\b@0ðÁéÙת@æ@Âv\94\98ÊsÛaÜtÓÕ2c¶éËÚOÔW1\18\91ìP,IÍT+§Ü.:ÀL\ 3à¹j\ 63<ÐZ\1a\1d§+æÎ\0E\ 4b Vù\ 6\89\90ë\9a\ 6\ 1OÒì;Ã\93éµ4ìØ\1a(\ 2Ö\90ya1Î\rµ¦co;
\ 3K\14ý÷èeØØn½á v´Å\0§\19\896'¾ÙgêUz2\ 6XëªZ\12·Mp6\8e\99à\15\9cÆ\ 4ÆW.>\83Z\85\rOéB\87ü¢ñ^¨2ÃT\94ñDÏ\97§\f\b\ 6OªË\18¼µzav\ 2¬¾w\1a3\1aì$ÔÂ⩱ö¥k\ 1bTü\81úÆð·\f¬i@oÆ#ÉÀ*7g»©À\9c`Ñ|#PÕ\ 22¦þ°k5èñ¸s)V]\9c\89¡\9e\f%ºw­B!\8aw\87VP4L\ 2\88\89« 4\f>\90\ 6P\1c\1eRÒ0ËìÕµ\19-12\93Bp]«u\fÚ·:gÆ\8cÁWLÅ5\18\0\v\ 6Ó,Ë\86¹\86\80\86)\98ê\ 3\88\90QEÙ¶¼\90¬+´Ã®á+\9abôÿã¹ò\1fbs\7f\1e-ÃDNñò\87HË}Uâé\1e
+Øb=Òà.rù¾¡ÛÊ0Ú\98«\8dU\88\93j[t\86çÎ\18Ä\1dm\8d\80\a$\à/°÷\97ì\82Ì\v|ö«ú\14\1dâ\15\8aË«]ÄO4yhj´\Ù^o3m¹c«Ü ¬»IäÅ\ eÍ\ 4+\e³\8bñk\10@l\ 6\16~ÊE\0\v\83\8d)äÓ\1cË(\82´\9b\1c\95]\93ó\16E\9f+ph¬V\f_\b/\80\9cF»L\1a\98°\99ѯ\rC\18\93\ 5\f\ e\8b\9e¿\1f\82?rÏÑ1\9f CÜà\r\a/üßÑàö\fÚw\93\ 1Ë\9agÏó=\1fótcãíH+\ ffâm\fð÷\v\82Mo0Ç|/:\99
+!¬v BðÜh]pæ\93\88\81ëBä\aB\80\91\vS¤$\8c$Ê=îç\8fH\84q\10\83÷\94\8b\0\16+
+z\97\8bqÇs\ 30ß& #\91\93Êë,ÈW\ 5\f¢Á\12\8f0\e\1a\ 5\18H%\10\ 3Ãf¨!rî[\eÉe ÷È.Ò«_\96'Pº4¿¹\82\92¸¾»åÏø\vÚ)§Âx>\7f\9fÝ\1cKã«\8c\9eM·^«\15&ò¾ãZ\84^\83\9c
+eí\87\8f\87]tò[× #\8d·ôÒØ-Êëéùþ\11*\ 1Ý\84>\11y\17       {å\83S\98\bì~uè\1e     O0Á\a¬«þ\89\12\89\82Î7\8d5v\rÖÌP¸\0±Ìnz\82©D\99·Öû\8a³CE\85bËÝ^\ ec^\ f\9dÖ\1a.\80GÀyâ|\90Ð}ø£Á\89Ãl\81QÚ¨WÎ\ 5Î\9cÎmÝBç2Â@\15ãó¨:âäbp\8d°<ÊÎ\88|\9c8\1d\80Ô\aLîÐ\9dÎ(G­\85V\8ccwP\96\89\94ßW[\15\10\93\15W\e¢[\ 4´mÀiÀ\9cÝN¼²\ 6\88\9bK\vÒ\10¹Ì\v\ e[()öÄ[QCË\8aÀÊ\91\1dA+TaoY°;")±\85 Æâzâ\1d¥\83c\9e^Ë¢\9a\87\ 5Lù©ç\eÄ\16©mÚLÕ¨µ,Q¡å!Nd?<\90>\f\ 2\e¾YÓBz\a=     \vÎzÅ\1ak!ä¦\92®\8c\90\8e\97éG7ö\99áSÒM\88%
+J\9eïÕÔé(!^ñkÈE~çÁ\9ba\85\17\13´è9ɺOQJÒC\94w\86×ÿR`\17\83e\91+XË7ªY\v$+\80\88u\r:\a\1c\1e\r\e\80\8c]!2¿¿\ 3YG\1a/\92\ 4\ 1Þ\ 1øIïn\938Æa¤:öK%\ 1?*\1f¼BË\12\8f2\9fA\8eï\a}\1a×*ú\1f½Yì\e6v$S[UgÅ\11¯óF\1a-ë^¼1R\8e\98\9a÷)2\9a°\ 1HEv\ 3JwÈ\12£õ[+¼\9d°\ eá\ 2\8f\18\9cjnñ<\8dËC\8cþ.©¬ÙÍm6Ã/\16ïù%pqÿøñ\1eí´ß¸¼\9fl\8e÷\9a$þøÖy<|~;ÇÏ\1aÅ[?k\ß^gwø5\ 4'\7f¾âëX\14¿\9dü\vÕ¢ª\94endstream
+endobj
+956 0 obj
+1820
+endobj
+957 0 obj<</Type/Page/Parent 794 0 R/Contents 958 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 146 0 R>>endobj
+958 0 obj<</Length 959 0 R/Filter/FlateDecode>>stream
+x\ 1\8dWÛrÛ6\10}÷Wì[\94\19[¶(Ù\92ßêÄuⶹ4V&}ÈL\a"!  6       0\0)Y\7fß³\vR¢è6ÓÑ$¶E`/gÏ\9e]þ8\19Ñ\ 5>#\9a&4¾¢´8y3?9¿\9bÐhDó%\9e\ͦ4ÏèbxqqAót\90\9b\85W~G¹sO\81ê\92ªµ    D©³\95w9-M®©r\94éJûÂXMÛµª¨pY\9dëÀOr§29ápU\13©\1a?leRU\19g)]ëô\89\94ÍÈX¹ûzþxrAg£ñ0A \ 3ç3í\874g¯ÆÂÉR¥\9a
\ 4ë*Ë\8c]Á$Y½í\e\ eÚo\f\8e.\9d§oÆ.\f\l42Ñ*ìNIå9âA¨Vë\f     !Ò\85îùÎ\1cò\81_9ÇÁóóó;À'`\rJUü½\8d¦\87ÁÅ\87-\92\83\ 6\ 3b\ 3©+\8d\16\14z\16Î\ 1ïyÐiíMµ;ï[`TØíç\9b\ fÇ\88\aÎ\8aOw\80ò:×\ee+j\12\a<^£`\99ª¢kdì¶/ðß\18Em\ eô QÌÆaæÒº@¡b\99\ 4ÆÂù\17\10éJ\99<\f9\98_ç' \r]%ãá\84&³)~Oð\ fQ,#Ë®i4\89\9c]\ f¯\8ex6\1a\r'øÐW\84/txç\1dØv\7fK7\88;\92å\18\1fä\9e0W\aßÀ'p æ\9b(öJ.2ê^Kîµ\ 5\85\98\ 3\99Û\ 6ú8\97\92\98\8a\86\81\ e\b\84\=8\99\1c)oPø\8ciº4¸û}ðåþöûëHÃ\1eîpD!7«u\95ï(3Ë¥ö¸Ç|úúñþ/PÚ¤kZ+\94\83¼²+MnÉÞ\16Ú7Äâ2qðÂ\8fÆéN²   iC\81 
+\1dï÷Ýs×°\v8Ü_\8e\18\84!ÝWL¿¦¾¯\ 2\ 5\1fD÷¢\15*BVÒ£\12©Éöq±W\92îÁ± \86D\8cqÏsc5òÛ.ͪöÈ\ 1¸Âã
+\0Z*\15| ]¦\94¸\885\82£Pr\17³\eõòTSÀö\94yá¸Í\97B\ 5Fv+Ë\1c\0Ò°+F\18\81%\tj/,á\9ay\1d\¾AÄ,\10\1cáÒø\80º\99B\9fÆ,zù\1e觭~®bRHgé]\ 1       Á×Rbæ\89&)Yé]ª\ 3B*ËÜ@²\1a5j\99ØFù      8Ã\0ûîymQÞ\1a\bÖZ\81\97\ 5l1gñw/¯næ¢h\ 2\18\1a·\87\ 5D\89\1dË-t\85fE\13\80¤Î«\10K\ 6\8cØ\13\v,3T Î¨\ 4¾&T`8Ø\ eÅ\86QîÑö$ÄF-Tдֹ(º¢*[Pûõ\7f´\90\ 1ÜiÚ!\92\92]6\89\9dÄ\\85GÅìmb ­Úu¥g2\1eCp~.=ãëk\99,\87\11'Òs9¤/\92>½Ué\1aYs\1dº\83±\11\9b\eD\90\8a>\84\1dp((\ 5\ 2+mµ\87\92 ¸Ü     å\ 5ô\ 3àd¹\7fy\86Ö%H9wÀ:«Ñ\ 2\91JÕÖù'ä\ 5þÅv }\9dm®¶­,\82\81\8a»\ 4K\ 1s\14\1e\18û\8c0VÙî\ 3ÆFÐ?jmá(J\ e\85Z\88\88ö^ìX
+3W¨\17\rÖ\f÷\1cµFë\7f=ÖU\v
+\17q(x]ÕÞÂ!\eSôùö­\88\ 1BÂwøªå®Ê\1dX´5Õ\1a§Ú\88z<oâSypÜ\9b\8da\18áL`9jïþv\9b\ fXj,\84\9e'UtÚm\8a-TKsk)\e\15µçô0-:Y1ñ\1d\84\1c\13[ä£A\19Öá\ 3û\ 3k¹~.\r*x*ѵ\19ubò\f;èÑ\91\86\9ek\ 6\8bù\91º\ 22\89\83j\85\0±tôªÖh(\17»\r\ 3\85\81´ýËá\80\9a\92\ 5\vQ¤tÝ\97\13\\88ähl\99Nâ\¼Ì\84TaåB<\b\8e×=ìvÌìîA\9c;$\98\ 1\88\94Õ ª`[.N·Y\b\92Y\82\8eûyW&\93\99èÐQW¢'ï\ 1       \94\8dCzëâ¨\91o\ eN°Ôbc¥\11ÿ÷åÝÉ(\99a¿H\92\v\18-(\19Ï\86£æ¯\9c\1eú+o\92`÷8ZF>0_°õY¬¼\0à7·¶4÷hO\9dË\ e\ e\ eý\8a\ 6\8fX\87ùù/Áª\12\1d\ 3Ö\rQ[©:\au¸Â§e\ e`6l\8c\fÚûOßæ\9f\9aa\ 4\80±\14ò~,êv$Óx\16\8ff:¤Þ, \9bkìu\bs¥«}Ëq\ 4Ø~ecgØ|m­ìÊ8×´7t,\8e&<î,åØ\19y\88öè
+IÙ¹ÚÓ\1fÆÖÏ´pÏ8\15í!ô¶Ï÷NãF\82ôù\19º\1eJôæ\ 6Ë \7f\1aÃ\9d¹\ 3©GRÒù\81¯<¸\y\86 Ô)Ú0=æ\9eíoáà{\1aÎ+Ìcù¥¹}\86ÙÈ;ÿ\99\80\9e+v|\10ôA\eHû¢qWCsx\ 6nL\0ð\87)Ø.ÂH\ 5#\17jã|éDíå½ Ó\18ÝQ4\1a3©~NúëéË%ør8bÖ\83M\98\ fÌ\80ã°÷K¯¼\10õ\89À<\92\8d#\93y\8aBÊRÙ%\ 6Z\9aù°'\ 4
+[ì0ú²÷x\17\9a¢MâXë£Ó \19õ½T\v¼õA\94\ e\fn¸$¶;d\927¼öU1¾\88Éês+c'2\r\8d\86\8d}\85Ù`1\91ú¼\93Å=ù]\86\v/O¯¼^ÕàÇ+tH¤ø)\86\1aö_¨2ÚÏ¢\a°ÍCw«\12Û3v_\8d¢ñÅÈÁö\92äw~7k^åFW\9cúÕôr8ãe(\9eýìÝ#º\90n»oB\1cßY<~6Mð\8a\9c\rþï«Ëd:\81y¹r9a;ÐÇ?Oþ\ 1ª\97ö"endstream
+endobj
+959 0 obj
+1766
+endobj
+960 0 obj<</Type/Page/Parent 794 0 R/Contents 961 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 149 0 R>>endobj
+961 0 obj<</Length 962 0 R/Filter/FlateDecode>>stream
+x\ 1¥XMsÛ6\14¼ûW¼\9e¢ÌH´(Ë\963=t\9c4i3\19Çn¢N.¾\80$$!&       \95 ­êßw\17 i\8auzéd\12K&ð>w÷=毳Xæø\13Ëj!\17W\92\16go×gç\1f\96\12DzÞàÉÕõJÖ\99Ì£ù|.ët²Þ\19'¿ß}[ßÉN9I´.åP\99ºÆÏMe\vQòê\8bÎ~Wõ,Õe]\99ô\95ìuåö:­Í\93\9e\8a³b6"GÛ\88ª´4Î\94[Q¥­wº\92Ì8\I\9aÚØrúzýýl.³ø"Z \84   o\14ê\b·OZj+\85ÍÌæ(¸'¦Äµ\ 6\ e\ 4\1e
+}Ø©\9a\876\ 6?pâ\80\8b0pêA\ e¶zt\11ý\9c\7f¸jSF\15f\8b«hI\97ßvGq;Ûä\99|¤µ\1aÉÿ\12\8e§íñÙ*ºF\99pøaqµ\92ð°+\1f\9fõÆ|åT\9eÛ\83ó!}½¹}{#*+LɬUm+ú¨t~\14[ú#¢\1a\ 4_Ö&UÌM
+\9dî\14N\17®;ñy}þÍ\94\8bO£ZÝÿúN6´\87ÔG6Än$³\8524W$hM$Ò\99A;ð\v)­ä¶Ü¢!¥Ö\19£òEwz¯\10§¦³Ù 3*MmSÖ}P!3XzÒUÔ\96¤+/®=W×vÕM4òV\19¡À\1a#À´)\90øÿ+v\80)Íig¶%2aMÜÑÕ\1a8\1d\16\9e5ø¸éA)¦Øç\9a\ 1\90\ eʯ\0§Üg?H>¤       \ 4gr0nÇb=L6ÊTh£VÎäÇ\87×\ 2\84ÖzËÚ\89þ\eݦÙQÍ=y<DÙ<[z¸\8d\9d\r+;\r¥ê\93dn¸\8f\ 4¿S&\9b\ 2¶ª`;?¯\ 5\8fïon\ 5\ 1\80\8fµ'bG©\8dAôj\84¡D\83Ô\15¯1\r|"\87\10\15»\8dò0WâË\81\8cÊ\81F¾Ñï×g\90
+Y¾\89Á åõ
+\9f\17ø\v¢o\82²¼\91\18Ô¢²,/WÑÕ\89¶Äqt\19-"ù¢ÿjLåëïN   EôP\8f&m³<,\15r-\12%©-7fÛ Êä
+[\85øP   fI©I\9bªBKÑ\97 :Q4\ 6çäíÍ»Oòq-\7fÞÿtêxÒÂã\19>9\ 1{\1cÕ\fôq¬òt\84ú\89$*}\94\8aµÏ\16­\82LÎu\9d\9eïU\11eÁgG\95      ä°\82
+\11#9Hlí~\10\97'hùª\16\15â\82Rf ¾$ÖÖTÕÇ\7fGt{óéý(ü»ÏïåóÝ·\91\8f\ 1eoµóz}05\90\8eT\10ö\vuw\92\8bz\844×Ð\10E2\80S\16·\13´\850Êí\16¬à'\82¾PéÎ\94:òØ}åä°\e\97\96]<¨Ò«:äBÑ\ e\ 4}qɱ`\f\9e½5Úg¸8I]ãÄÀE@½Ò\ eUÕÞsÛ\rÌ@?ñ&2nG'æ¡\87£\8aÁ#Ë`+³5¥ÊÅÕä8~u\94\83\86\aDÐM»­®1!\e\90¢¾\84\9eVH~ë<J·\16\1f\9fg\ f¯[g\9d`®á)\87}W\v\94Õ\11å\10ó    \ f\93îW\vPh!\98ÍxæÅ\94ã\196\1f^O¡\ 4\ajQ\9a7\90DêYSú©\89Ç\b¨L \ 3\1e\84\81ÆØ\f0ö%æ?_~;\8b\17Ëè\8d\ÄsLµBâË\ 5(\1e¾åò\95ì\9eãk\8c\87Ã}!Sº°%ò¹Ï!#\94ù\r\96\8dùÁÕÐ\14\f¿YF\17\ 3ÃÃï\85,âË\13·Ãïxzq\15Å\83»\f\8aÑ?çQm¥Ëc\1c*`\83v\85r\1et\ 2lo\83þö\16¼\19X\98 áSÁòã\15ò¨¡¦\ 4±¤¹\85\0Ô­\8dÂT\15ç\8d\ 1" ÎLv\16|÷;ÍÉâ\82vbð\1dÊÜv\93Pc\97\14Ò\ 5äú=eÀÅ5¤\98Û\84ü\1a¦y\18ÝD£JLnêN¬AÙ6 ·\83\f¢í`\80\97G7%L\ e:Ïùso)0\ 6\7fÀ\f\ 47©ö\1a<\98xûÊ>\99\f\10\9dªË7°nêÇÌÃd\9f7Û­§éh\ 3\ 1\r\9b\;\8cÅ\ 2l@\15á¨\864Â.&\13½\97#\96ùâö\12!\1f\81û*\v0â,
+J\ fYi!L¢Ó\83ïJ·b\84QQ\va\18vBjWn\92JU\ 6UAe\90TY\8f\£)Þ{Ø\1a\80ã\ fh)T\19'1§¸ç¶\v\85ÃØ_EñÔï\18ì«*SMÎù\19\84]Ka7¥ñó\ f½Ö \82Ù<Z-g\8bExÒkMë(!\9a\10Y\93×n¼\ fCY±Úìt¾ß49\19¥rîÖô\8c\86\12\a\99~Ò¹Ýs\8f\ 1\98ÓGàÙQ\91^\88Â\1fýQ,<ß\ eöÅü\1aCû¿\a{¼Z\8e\ fö\v\88;Ò¡Ô`\15¦ÜÝ5¾ÚÃ×\8dv¼¿Õ \fpQ«\8a\17¦\1c#H\16\bI\80¨#0Ã\1eZy4HÕn6d\82O9°\17%£Nf\12Ô\aÍmÊ\92\8eûn¶»©|j\r\ 1Äi.Té²\9b\v®HÚùÜ7©\9b©ý\19)_:D¾\8d\8c\rµö9ý  \13\ 4߸DxÔðu\87ühÃ\a(@zð<¬\18~"2þn,ú\81ë\1a\14\8e·G)ñtxu\ 22XÙ2SUæ¹Úb\83{+À\1dP\rv\1ev&Ý\89köXö|DÝæÒã÷Ç£òys        of\bê_øõc\88]!VIÆ\96¶í{a\10\18RD\1d¸¾õr\84Õ\15À®0mO\18\f1C¡i+\14û9ÊÆUçx£\b¿î»Çã§'\a\0\9dBy!\1a6\bTòjÁBÁ;:\82×/\8eMI\1a\93SÌüH Ë\ 2\141ýÛôf\9ec\1d\11Ñ4(ñ\80±:ë\ 4¾{áõ/\8c]oú¡íÍí°{Bÿ¸ãâm\rïh(\16èÐ\89ásÑ\14\9b\17Þ\1e±¡S»:iÂü*\8em³GPiß\90üû=&Á¸\9e´þ²jù\ e\9cÖtÂÓÿ¥.òåþ\96ªäe«-B+6xA¸~Qk®[RÆWP\ü×Åüdå\b\85¿¯ìw,Ï\98\8eáUÒ¿\150¶Y¸5\v×&?zéXz\15£åÉå%ï!¨?Îþ\ 1PK2»endstream
+endobj
+962 0 obj
+1952
+endobj
+963 0 obj<</Type/Page/Parent 794 0 R/Contents 964 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 152 0 R>>endobj
+964 0 obj<</Length 965 0 R/Filter/FlateDecode>>stream
+x\ 1¥WÛ\8eÛ6\10}÷W\fÐ\87*ÀZ¶d¯/yKÚ¦ÈCz[?.PP\12e1+\89.)­c \1fß3¤$ËÞÝ´\9b&\80Ö6Éá\Î93úk\12Ñ\1cÿ#ZÇ´XQZMÞï&?í&óp³¡óÃìñeNñ|\1e.i¹Yãób\11®ÈHʱwN·«\15\9e~Å}t+°\85E\0<`höaKQD»\1c÷®6kÚen}N»4\88¢ð6\\84QH?è:Wû\16fD\9dQª«\83*%ݽûôþÝ\9bÝçÉìÃr02\8dWðj\97\ 5»Bb§?'\1a¥ëÑYÿ]çÞ\ 4)K\a#\9bæD¶1Bí\8b&×æ(L\16\12\95±\r5\85\91\12\eäÁR%NTë\86\12É×Ïi\1a\98/­e*­\15æD\99<È:Sõ\9eÚ\ 3î>\16²)¤!mÜÁ\93\10\8f\92ï}Tºµå\89\92V\95|\r\ 2\13U"(Qµ0JÚÐ\878§-§)¢i|ë#4Z7ßùÅÈ/.b¬ wY ÚFsô\17g§n}\1a¡\94¼çkç+ñ\80ô\95RÔßjÁT]úÃT¤\85KÔìC\17Ä+\1c       g}\11%M§GÕ\14xÔÈMö­\8eqhÿç,©Ú6¢,½\8d\1eySP`\89Ú¬<\10v\ 5@uTeyC  \83!\17mÙÜôG{ÜÕÔ;â9\10ÌZkf¥NE9³\f\82Ë;\82\90î\80A\86H%TÝYÉtÚV²n<¨UN\0\17\9f\eÁò(j K_]ou%\81K°J\96V\86ô±q\1e\93(­vhÌÜU]º3\92_dÚ6"\ 1õ\98\86¥J\8c\a¨\8bÂé\ 4¸\1f­\81.Ïý\18*ÐS\7fLt¬\ 2\7fO\88\1e\8f\89î#\8f:^\aµµ¨}Z\84gP÷Â\118o8)pß!ãìÚeþ\90\91±:\f\ 1P-e&\11­&ÓÖ.h\7f𶿾ÏÁ¥½\802!+°\eG\8c\ 5õn:\8bl/a\11:(o\1c>*\ 3Êë\834liT!®9\8b\94½!«ý-\10âN\18\a¯G\8c\1d\£ô@aèá2³º5©\9cõnÌ\10">ÿÙ¹\1f¢®üÓe\14£¬|ôµÏu\8búª\ 6Qôr\86P\9c$p\9as]\96\1a&÷dOU¢K\95"áõÃÛ×¹]Ö4µÎ\9d\17¼|ús\18¿èù»:cv¹Ú¥ÂJbqG-­.\81Qûm¾92ªä©#äyúÜR\18]¦! g\8bæ¢ç\9d#\f¼lô|ße5_sÙÙÆ\13P¼äÇÕe/gÿ\17}¼!a]¨,?\ 3üe\ 6\14]%d&\9bt@è\88Ͻ\92\ 6Ì\e\0\11\18£Ö¢g²ØìÁ¯\ 3Aå¸#vÄzTV±\18åFWW!0Lýµ\ 3O¾Ná\90èÓéõ\9eæ<\87\94Z?\80\ 1h\98\80\1fd_ä\r¼æÐÁ\91\ 1y×Ý\9bº\7f\a\ 1iËÞºol\8eÛÆÐß\18\1d]·î÷ÛBdú8ÞßÇ~µÑ¥ÌïÃ\bseø<2My¢\18º\16¢ée½WEô/NgçU/yÜÛXÝxШ ]hY\98a¸Bh(\10\8f\1aE|¦
+eæÛ¹/ιänFp\ajù¥é#ꦪFUÈ-pe 8\98À*t\95\ 4Ã\ fÄ2i\e\16*\1eár\81%C÷\ 1ã\85A\98éú{Ö°NÙÝ\91û7ä;$Vù`%ê\96=\1fÊôß4wf1\81Ìú`húH\7f\ 3¢òÐgé2¼\91º¹\80\95Ô^\83í\92\95\97\ 6Ðâ\1e\85*]ëE^{(\83%\b\85\94\88ô\81\ 4aÒÂ_ìA\ 2Üàصåí\16ÓÉ×»òj\83\19þ\99¶¼\18·e[%ÏPv\14à\9d|\94F\94t\10FT\12\ 5\ 1\1f0\ 3t\1d¶SèÞ\8aÃ%{\vP4F\97L    Ta4V\98\94¡á>\ fÿFâ\91\87þÀ¨wö£y\7f'oðIé^E"~\1fùãçI¼Øbr\897\18Z*\8a·Ë0ò_Jºã÷ 3cncÞ\a>\8fF\18~Q@×áP3iS£\12G\ 2ª´û¥Aõ¸=\r\948¿\ 4¹ëñ&\14ôU½\ f6÷oØËó\1e÷\89÷0^\91Ú=¦µgô\8aÆ1\9eý\r|\9a\8fÂúälºÁ"\8a\96á\82V[L\19Yà^¦è7£?Ë´¡\1fÇ3%\9f\9aF«5\122]Çîõ¢{5£\9d´,r\88\1eOK¿¶\8eºËõ\12\19r\eoW]¾\7f\9fü\ 3\19è&\87endstream
+endobj
+965 0 obj
+1403
+endobj
+966 0 obj<</Type/Page/Parent 794 0 R/Contents 967 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 167 0 R>>endobj
+967 0 obj<</Length 968 0 R/Filter/FlateDecode>>stream
+x\ 1¥WÛnÛF\10}÷WL\13\ 4Q\10\89")Q\92\83^àÔq\91\ 2¹´Q\90\87¦\ f+r%Ñ!¹ìîÒª\80~|Ïì\92ºÕ\16\12Ô6d\91»Ü\999sæÌð¯\8b\88BüF4\8di4¡´¼x9¿x5¿\b\83Ù\8cö\1fz\85\8b\90\92è2\88i<\9bâ{\94ÄÁ\98´¤%?\82U\9c³ûÀþáÍ\98¢\88æK\1c?\99Mi\9e¹õ\90æi¯TY¾ÌeFVQ^¥E\93I²k\1c¥\8aBmòjE²²:\97\ 6«ná\8f\16¢ø\93\8cLm®ª\17Ïæ·\17Ã\9b\90.Ù@D\838\813ó¬×mäõ\90\ 6\11BàÛÄ?ß\aAðã}\v\8fql-´°\922U
\14UF\8d\91º\12¥¤Mn×ôôùÓ>\15ù\17I×ïÞ\½~û¼[æ\ 3\1d`\1d\0\11£ðû/\17ñ\f(Mð\19S     $.á\89¿*èÃ1dî     @\16ó\ e\10+À±ÈáNë¢Ò.\82\1dÒ\ es<Û£\1fè9/\râéIÜ\8f9\14jòÌÐR+ø\12â\87¡\8fÝ\97¥Ò]Ø\1c\93i\ 3òî\87\93`\ 2÷\91ñ1MÜÅYïÃ)¶ßç=¬?ì·shà¼9\17Áê+"XiÕÔG!$³\ 4yhCð\17çBHf÷\a\0ãÿ+\0ÁÌ\ 6­\9bR\82h 0©%\98åsëpw¤»ÇÿÉ\bØ#k xL\89»:\eÀdìJa_m\9d\156îXíðÙ\17ë!\85¶ò\18<\149ç?\1a\85ø\9f¸«³Æ\93Ñ\ 3\ 4pÆ÷Ñ\9dµ~\1f\85\1d\11^P\1fQ\90YË¢ Ï=U\15[ª¤Ì +ù\92ecKk\81§¬,*iI¤©4æó³C~'#Ô\1eÇ\171hþêl|£ãâ´²¬\vÖ\8dµ*e\96\9f©Í!ï\18"\80Ê\ e\9f\\ f\9f|<r#\ e½J\84\f_â®Îº\11G'*±sÄ¡ñ0S\87Ð\92áB\98uk\1ey\80ªsr½ªÇ¸î4}xs¹Sðñ\94õë°²£(H\ 2P3 _U«Ò\1f®Þ¼¼\82Pé;©Y_XÒß_ÿܪ\v[<l
+\83\88Ú{UYÞ\7f¤ÿ©*K\16a\9cR
+\88\1e\1d\7fÛ\19=°Ð§ÍZÂ{o)n\9dïyÁ>6ߣܸCYáy\89\9bÅÈ\81ÚCaÒV5\9a>AwÕÆtêÈþ\9c\1c}\95\95y\95\e\8b\92ö¼\ fÐY Ñ=Ì%\ e÷\14(iHì\1fcZ×:¿Ë\v¹Úõ»\13\87|S
+¼mtÞ¶«î\0ÔJÙÇ~5é\82¦acô°P©(\86F\94\vá2Ïu ë\94\1cz\ 3ã°\e|¤3a\0\97.Osä ÖªF Z\9aZUè*m\96»t\99µj\8a\8c\16ò\ 5=bZp\8bÇSmW=\ 1¯í¤þn7,ô\1e}c\129S|ÄA\ 2\89Së@óí\99F      WÙy\9e\8fЧy\90Ø«gËó$ \ fVhKMíBj¥(£LÈ\12jîÈ*\8d¥Ü~w\1cÑ\ 1\82¯î0×4h\ 5Û>3\fz\ 6åÚ\88Ê:\9eóP´õÌ3å\82\f\9b\835\93ê¼v;H4\16ó\89Í\91Th]^Ý©¶4N¼9Á\ 3UáÇ(\85dh¨c\r·\9f®¢ØP\9f\16\r;ÏuQ+còEá³Ë1),Ý6øÂÉlma\97v}l\99kc\ 3¢¹ò.\ 3¡Sû»\11Fßå\10á>\8fwÿ)yêH\84\ 2aFïf¼ÿÁ÷\ e\97\a3òúiI¢Ø\88-¢Æ\ 4X©<s©t\93^'>¦\81¨8\1eû\3FÜz\90\ 3ÝT\15æUL\96ÞÄ×Vgmh $ýC+-ë\ eR7aì\15ä\808ó5Lvø´E\86\9aTrrjäÇ{\8c}ý¶ûuÌdg½\97mZºz\1e\85qB?\11\85á\v÷wäÆ\81ñ·j\83ø0\9c{\91vM×\82\16}²zËÌ]AU\fÚ\e\18\89MLP.\88\ 5³\86Qó3\aá\9eSUt\84oÃê^%Û \91-\15\r\9a\aSë0k±\92)\94w!Ò/\10ä\ 2zÍì÷CWçÕ§VëwwwÎ\82Ú7\b]þ-Ðëe\9f^»x9°ÝëJ\vl×@:ul\19<k59\9aL\83\88&Ó©\7f'ñíì½V·x§¡k\95b4¬¬\ 3\8fÏ\eøí\83i\8cW¦¬×Ê\10Í\ 1<¿ !ºjeè]cyóx:Æ¡nc2å\e\90¼ß.þ\ 5q\rßPendstream
+endobj
+968 0 obj
+1392
+endobj
+969 0 obj<</Type/Page/Parent 794 0 R/Contents 970 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+970 0 obj<</Length 971 0 R/Filter/FlateDecode>>stream
+x\ 1½V]oâ8\14}çW\u+ÁhJB(P:ÒhÕ\962[í´t§Ù\95V\9a\97\90\18ð\94Ø\8cí\94Aûç÷ØN\ 2e Ú§\ 5)RríûuÎ=ö÷FD\1dü#ºèÒù\80Ò¼q\1d7nãF'\18\ eiûPs¼t¨ÛÅ£7¼\b"\8a¢aÐ#Åh\86µøØ\1f\ 4Cg\82³ÎeÐÝ\9a\ 6çÕ®\ e\r\ 6Xë6!\fö!vý@\8cpÜ¡K\8agÈg\80øqæÌ\1d\8aÓÖÍíäýU\96sÁµQ\89\91ê]ü­Ñ¡v\84$±ÐÙ§\85ÊØryÀò©`Ú\1cøþÍ´\93ìÀ÷g55óC\eb}'\fS\82\99?5s9\84ã\1e\9aa\93nGÔî\ eP:Ò\99L_¸,ôrsFw´H^\18\89$g\19å\eÊd\9epAMTÔ¤D¸o6\85pÜ-\1dµÖ\L9,\9a­\92ºØm \16qMÍ÷Í Ì\1cA{6èß² 4\11\88@fÁH#"i©\fÉ\19>p1'#iÎ\fÍ\95,VÄÅLª<1\
+\9a)\99\93Ûõ8ºùàÓ©±hwû>\80\92Òüâ\8d\91\a
+ØöÀ\1f\ 4\ f\v­Â¥L\93e\88ÀÓ$D\ 5á\1a\8f\99¤öü\95ǶÛõ
\91o\8aCX\97eíB[ÚmÓß0;\98ß°ßÈ|U\0¾7\97\b£äryxÑ\rC7\1f\8bé\92ëÅá\15\82å     \1d-äÖÒg¥¸fÇ×|rð<Ê%O7t£\98¥;MÖ¢\8c¸%Â.ãb >+Dêàl\ 2e&LÓÑAÈ5M\19\15\1aü+        P\b>ãx%\14b´åÇT\9a\ 5\1c\ 2»Ai÷æø¢\ 3\8aÕÆr¤ÂçÜs}\86vIPvN©Ìs0ºæ\8f\9f\vLiÅÐ\1d\ 2õ+²[F"WZ%Z¯Ý0n\vÜÙjÉ­\17²Xf\8eÂ\89K\1dÙ$\ 6iËg\8d÷gF\eY(ªÈæ÷BfÒð\90÷\96÷áóG7¦®ºj@}ùk\8e¾ f®H°õ^å\ 5Ïô\19ÍÝs!1m\94qÅRÀÅ\99ï\ÆfI±4È\1c¤÷\aÖbæ¦ÔO§\9d]\0\95I\ 1(\ 1¹o;U)Tí}]ÞN\8bÞê®óew:q\87\94\ f/kÁ¶ú\\89r8¾,\81Á\9a>ÄxG\83£(è\açÁ  1ÿáÄ\ 2rl\ 2è\94I\94\81¢èTñ\95qÓeý8)·ùõ¼|Ôû£\80>sQüð\95Túé*±RbÛâM5IJEÜ£G\8b²\84å\90/ÁX¦-¹]&\84T\92\19æÌå¸ç\89t>ýÉ\8d\95á½uâÀ2\1f\rÈ¢[ª\10\ 2\9c\ f\88bII
+꯬* $¯å¥\1c\10\93èç3KM\97§M3\97\19\9fy¶íõÎ΢#±ÞhÃrÌÜ\82m\@;\9c\ 6,\ 5á}ª8iݹ㠠     î¡\bQ\9d·V]Åa!ì\17t7*óù²ßàe[tí\89ܬT®¬\8cÿì\8cFlÊ\13\11\94hÛr\92,«ÈéPàâEb\18m+*\84pâa\8ah¥äÊ\9f\9b;ùhö½`"eèåý\86öØä_µÅÔçRsâ\0\90gûkè\0\8cg;\95×Î\8e\11Ì\1d\8cÈÜÇ®\1aµ\93ü¡so¿i\95*àðwú°ÜXÚ \1dM\87~\93¶Ê]öÉOÒ®²ÙfÖÂZ^\92ê\83Ù¹ùÚúú\8eþ±±mzå½\88Êßïw\ f£\8f'O÷×'G\16°t\81\83ZÐéÉ\93\9df+ç§v\13.!ê\85§L\7f c[Ë!<Ô       ËÇ\8cN\11w4y\8cï&\ fOGÂ\7f¹\8dÿºúüñô×#v\9bÞ\11\93/íá\7f/ÍR\8bN\11÷?\95Ö-k\vÇÃrn#Ü\86íE×Þ\9c¡zOW÷×Wô¨ä7\9c 4\92i\91ãXt×3[x;\1aØ{wû¢ë®[¥\96R\8c\8b­Å*¶÷;M\93ÂÝZ{\17=8u\vûC»\eªÿGã_!ï_Åendstream
+endobj
+971 0 obj
+1242
+endobj
+972 0 obj<</Type/Page/Parent 794 0 R/Contents 973 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+973 0 obj<</Length 974 0 R/Filter/FlateDecode>>stream
+x\ 1½VkoÚH\14ýί8\ 5Ô\90ª~\ 2\86TB«Dm¤j·íncu?\84®jìq\98ÆÌ\10\8f\9dl´Ùÿ¾wÆ6\ 1¶n¢F*H\ 6û¾ÎÜǹ¾êxpéëaâc\18 ^uNÂÎ\9b°ãÚÓ)î/ù\ 5ݸð}º\8c¦\13ý×\eÛ\ 1r\86\94t]\fG¾=mDn`\8fîEãé´\16yðÜ#Û¯D\14\87\f)øæBA\9cS\17G\bS\ 2\14\10\8001b\17a<@ýañR\1e\86_;.,\8f\0\92ÎFôëÛ÷¯gÝ?¹Xp\91t[\94´=,\81~÷¬\88ò\82\8b\vôµ!\14˯yÌÔ+´\99&\11[I\ 1§T¹\93É8Ê\1c\15­\16\91\9c\9b*jÒ\12õã\9bðÓñoÃYÿ\97\16\85ï\1cë\1cýÊ\1c\16»¢bYQóÀÿß\93aýä3\9e?G!Ëx  ç:2p/\1dU.Ô­rÔj\81»;Ìç-P(ÑU¼\99×¢\91³¢Ì)\85\95Ú\9eÒ¿úÞ9\1dÁót%-\ f\96\1fPÕ©Pá\92á@\15r}\80´\14qÁ)\9bËH!B,ó\9c©µ\14\89.\b\13E~Kð¡\96e\81\b\14dº)\11"\91 \93ò\12
+\19¿d$åêU\15wÓ@\96?¦6¤¨:à|0?Ä?{H\9b\96ªúæìÝI[á·z\86\0\99\9e\1eÛ8\97<ËÖ¹\8cA©ÿ~\87üP\83Tøßÿ\ 4üâ!üþ\13\ eðøÁ}Z\11\9e:ª?<\8fù
+VúÍyliLÓwݶ®|x
+\r\91\139\ fG4\7f5o\13Y\eÖ&þuN\8f*¶%\15·\1a\96{¾õ<{l\ fm\9a\\eg2\8br®v\a\9b\88È\ fô|}\10P\95ÂKÜÊ\12\82±D\ fïJ&<¥1¦ÉmF³¢\84\ 1\1c\ e\17¼°\93\8aCm;,ß\8d0\80Ò\14]®¡â\9c¯\v\eo\v\94ª\8c²ì\16\90\82®FÁ\0Óû`XÑ\8c\9e2C\11º]± 
+QKYf   \84¼©,Ðô\0á\94ä65À\89\8b®\19\f§\83\vr\9det\12.vÑo\ 5úÖ&Ø;ÂK\98\ 4¤<cDr\1aD,E\11\91{JÚ\8a\11q\11ß=Ìa½\9eö«C×;¯×«\80n%nGZ«û\1emiª\11Oq\8e\92j{ÑÆÂç=\8fT'Ñ0âöoÏ\98
+ªh)
+ÖÆ`ìo^ìùLù\1e\8e\86  +>Þ\r£e&Y"ZQÞ5a2¥æ\ 3¦æ\87{~\eÃ5Of_L\15ô\ e^+Ú~¸kÑ56\eÝ\8b\9c­aÝ ï=Ò@\11$ò~ \9c¿\80\17\8esPßÁÖ7_Z\82\9e£Û'\90]<\9b¡Û\85YËæ\9cúé\9e\8dY\9cTĦf=\987\14Gï¯&\eLÑô^\95<'4©Ìëf½\1f\9e-ó8R\8c¢{ÝM\a\95ì\ 5\81­_°\82êõéìøÝÉ1~ÏåW\16\17x-ãrE\v8ÒÛY#´¼`BêÖħ÷°dPó\ 2B¦Ì"\fu\a+|(MíG\93\1195\8aã#mM\14ôGç?fí¯Õendstream
+endobj
+974 0 obj
+965
+endobj
+975 0 obj<</Type/Page/Parent 794 0 R/Contents 976 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+976 0 obj<</Length 977 0 R/Filter/FlateDecode>>stream
+x\ 1\95V]oâF\14}çW\m\1fÖ[\81\r\84\0é>TI³Qû\90ª*!U\83\ 4ÛãÎØ Ôö¿÷Ü\19\9b\ f\93Mw\15\85\ 4\98ûuî9güWg@}ü\fh2¤«1ÅYçnÖù0ëôÃé\94\8e/f\857}\1aõ¯Ã!\8d¦\13ü?¼\19\86S2\92\96\1c\82o\91çð\82óÑC\9fnh¶Dîñd\82°Yâ\ eôi\16\aom)LùvþîÝì¹Ó§Þ\0¥p ø¦ý\9e>$ª¤r-­¤TåÒR©ÉVøl¯+C*G¢4\15¥Ò9Í\83B\94kÛ¥\9d6\9b\95ÑUÑ¥µ¶åÿV\91ñZÓ\13w¤ò\15==ÞÝ·Ú ¢¨²&Ju,ÒÈ\8al!¢\85Ê#\9b-\12êÝSÏÒ|~\19\83°\17\ 2\11\14Æ:_Öç\87\83pÌ£\9f7ñó\977\917M¤_ÑÄVð4+îüb²/jðw\95\ 3\81\84î\85Ìt~9ûEVÆkç\83\92Ëãïß·à\0CtqI\10\0ºQiZ\18\1d\13\ f~\99éð5/ç\95¯¿¢\97o/\18\846ܾÞüfÅJ~G\91,ãHåª\f\13O\8fÐJ³\95\86þ&Çtú\a\7fuAÿ¾¹ìè0z#\ 2iEÌÇ\9c\fûtu3\ 6CjÑAx\8dä¢\87\e/0\1c\19O\9c~\8e\ 2\e\fÂëð*\1cã\97~\95®\ap\9b³F\ f#\1a\fX\98ÐÝÐQï§%«   \89}¯P\eù\93×õÉ Áò\18\1ctÛg\9au\9c\9d!\ 1\8e´\92\9d"\7fr\98\12G%K\82\ 5¯,\15Zåe×µf׺J\13ZH\12\8b\a@A¹\8cqR³;p\ 5\91+ç3\81S(Õ+\10ÈH\89Î\84Ê)\93Ù\ 2[y®lIø\ùÁw\12\98
+rê¦
+a!çkà\1f0¶/Ãßà8\9cNÎì­F\7f\12Ò\ f\10ºZUÈß\b\86\ 1ùtûè19[E8b\1f¨\97±\16[I\99H$9ÿ\ 3\1cKa<\18\9b\ï04`j\90t(û¡\ 5J±ÿ±\93\95z%\ 1\8e    \89ê¬;\91;È0d\v²:\15ã  qm\15
+\8b
+Áy©bo¯KmHs:rȪXÂj7R\16 \8eHP\ fef N!2Þ\8e\e»\8eT)\8c;\972áô\8bvi\91\96X@\ 23÷{·¥,\90k\1eÜ«¤&f½7Dgb#i!âMUXÒn\7fh˨\95ÊEZ3\r÷\99#xàu\89\86\ 4§d[rOß3.¹\ 6É\12\r\9c[\90\0æð üáدç\ f\be\a\aòã\b7m¦\93ʳ\12¸\1e\97²Så\9aÉ\89Ï<nLH\86Í\ 1\85\8dR\1dèò\81Û±Î
+´U#á`â[´aÙ\81Þa\18YÜ~±\8crkQ%^\9f³) D\19\88C\9b=-öÀu«=\1f°\1dÔÈ@A\1fp\92»\99Ïh]º[8z8¨ß\83ÞÔ\8a\80ç\9f5]B«ÏK;OñH-\8dÎxüöR\ eÝ\9fG\9e4]\13é¼G\î\9f/\e\10ï\93\8e6\11ëByºq\a¬l÷\88\f>5\9cÿÄ4\98·VÆ\95Qå¾Þ\foê#\c\ f\ fM~\84àì\1eä̺\9e§;8È\vóE©ZDM¢WfDâ'\9d
+£ #N\83ú­\8e\9a$\rQ,[4+\13Ji\81ã¯ÛÏ\17v\8evF¦W\17\1e\17Äkr\ f:-ªµÖO\17ãÖ¾9¾æ\aFÿ¨xvkMkB\ fpiñs'\1e\bO\9e\f\9fn\1fïné\93ÑÏìî÷:®2x\90Û\1e\8fÜóQ=\1f\16ÔFK3\]ìx³5^-}¬\9c\96G\93\11¬\9bó\aã>G£µ_:ÿ\ 1ß+.\86endstream
+endobj
+977 0 obj
+1140
+endobj
+978 0 obj<</Type/Page/Parent 794 0 R/Contents 979 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+979 0 obj<</Length 980 0 R/Filter/FlateDecode>>stream
+x\ 1ÍWÛnÛ8\10}ÏWÌ£\vØò%\89í,\90\87\16Ý`\ 3l±íÖ\8f\ 1\ 2Z¢m&\14é\92T\ýý\9e¡.\96/m¶Ø<¬\ 3\18\9993sæöíbL#ü\8ci6¡Ë)¥ùÅ\87ÅÅï\8b\8bQ2\9fÓþË­ñ\a\9c%Sº\9aÏø÷ÑM2!'i\85\97G4\99O\93«øè\92fÓd¾\7fr5\9dãÏZh\82W[\99ëɨ\96\81º\83'ÓÉU+3\99\0\r¦\80·ý\ 2®áÝ\rÝÐb\ 5/¦sü\92ÅÇ#Z¤½ñ8¹N.\93Y2NèOe\8aïÃ;'å\87¯\1f\a~+SµR)}~ÿ\89RkVj]8\11\94\16O\17û+\1a\8f+\9d\83É\14:{\8b\8d¤ê\11 ÆG½¡\fép+ò$\ez\91/Å¡d\8fVJKʬôdl #eFÁÒRRº\11f-³\84î\89\9e
+\1fHËU °Q>Ê\bO*ÐNøß\1a\83ѽ1\r\b\17À\88"l\b\1f'¿\15ÊAoý\19\1cz\99\16N\85\92¡=ú ÒçÄ[òÒ½¨TÞúÒ\a\99\ fX\ 3k\1fÑ`\8c,G¥ij\v\13Þ@é>|\ 3\ 6=\ 5\bÚ°\91®Áâá²\b\bBn3ä¢
+\8fÐÚîð@Rá%Ù\15í\94Y*\ 3\17\11\16a\88\81K\13T\1a\93Õ¨¢\9d\ 4©XÊX\97\vݸvY\99Öv­\fY\13ß@¶½Ef\1e\91  ]®\8cÐ\ 4\83\0\ fïúø§6\12ya9ß\87Ý\8cVaÛXK\88î¡Îeð\ 5\19\95F,¡\ fÖ\81¸yÇ÷\8f0\94¶ \\94È°CÆ\e6TT\88¸à\95\v\906y¯\89F\91\15 eIV=l\bÚ«ü8\92\88\ 2ÕûLî#\91\87wðào\99ý\81è£68Ò\9e_a2Ô\11\8b¡\94;j\8c\92\ f®HCád\9f\ 1F®¦\ 2þ²[Ñ\19\8e\e\rëç|9peXÅù\b\1e\87ûÐ\9f\ e°Cù]1@^\8eåWÎæm\f\8fk§ÎÖ-\98r(×åj¨\9f\8dªÎÒ)½V¼¬bv\9eëw V\870`º¥\9duÏ´uv+\9d.û1p;¥5       \8dòlø \15\886âE"Ð\99zQY\ 1rf(ó4ØH\90\15\94s~2\9b\vä\ 2ÙsÇé\13ÚI\91\950\aN¢¦Aý(Â]@º>¸ÛÍÕÆæÐV[(Aþ|«E\0£-êc-\8dt\1d\ 4`0×\r\80Wö9\88\9düD4 ×"VC\8a\8a\93Â+]¢4\ 2Ð*³®À\1cæ¸çóer\86¬´Öv       û\\1ee\9dÕë¦\ 5ï±²\ fpá0¥½¤F\87\1e\14\e'PµÄ8íâç¨Ä=¼ö¢nÛ\0\8f¸Ä6Õô&NµHSô\ f.\ e\81:7\b\1ay\95+-b\8fà|µC¢\13.\9e\11\88֧ƳsÃåG°0!¨\99%\8cI[ûLZ=s+R¯\ f\8fãùq:<´ò!\ 2\ 4A\15XqËÉE\16\8d\97·\994ÜË´¼\8d\15   \8c1ó`\9atîÖ\17\88\86\8cUÌÎ6\13¦\1e[°ì\8b\15¦¯bn\12\9d\ 3\8bÁÕÐëTÅÁð;Uñ+\93o\8fë5¥\e©µ?\ 3«\9e\9dÿų½\8a×@üû\99^\8f4À:\1cë¿\1e®ó}îçõ\14ÇçQEV[ÑQE\19\13c\87â*\91X~JTÅ=æ$\96\ 1æµ\7fSbÇ\15I\86P\9eÉä\9e\voÀÑWT\14F}\a\ 4\8fq/xÜ
+ßöòÿ\aå\8d\8di<\13©=a_qóÇÕ¼Wñv\9cç\10bÖòRüvJß®\90:ý°£Ônùöà-\14\9fÓê¬wÖ: çkñ¾³\96õ±U\8b\95º\9dxíÐ\8c×C'e§æ\ e\13¶7×C\15òZ\87Á³\94X\ 3°\f.\8bPm0­¹ªà\ek\9dY×f#\1e&|¥tJ°kD,-o?\ 1{¸Å^â«aë,®¨j#'<¯v ¬Ä¼Wq³èÂ\10'\8bÂÞßf¢Ô\9bî©÷?®Ê.H\8e\ 4\89\15Î\87s1þy\ 4Ù¯5\96!§2>q°-Ø2®E\99-pJ\1c!ÄÎ\98o\ 3nCì]\r¹}Ülâ\9d\8e³÷\12Guu_·G4NåáݼÞ\93ÆS^óg\13\1cÅ\9dëøëûO\1fÞÓgg\9f°ZÒG\9b\169æq{\ 4\ f*©A%ÖÜÒ´\90>0ÖÅ\ 6ß\9eþ*\ 2ý\9añ½Îú{Ó1ÿ\ 3о\ü\ 3°Þ\ 5\91endstream
+endobj
+980 0 obj
+1405
+endobj
+981 0 obj<</Type/Page/Parent 794 0 R/Contents 982 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+982 0 obj<</Length 983 0 R/Filter/FlateDecode>>stream
+x\ 1µWm\8fÚ8\10þί\18\95~`¥%!,\ 4òíhïVB§Õí\15tÒIH+ÇqÀ½$NýÒ=úë;vH`\ 3Ýe»4HV\1cìgÆÏ<c\8f¿t\ 2\18à/\80É\10nB yçòóDz3ð¦SØ7r\8d\9d\ 1\f\87Ø\8c¦\13lÇÓ\10[É µ3ðO\84i\1a\1cîßF\10Á2Eðp\8a/\89û{\0\v\ 2oìÝx\13oèÁBdDrÕW%£<å\14¨(R¾6\92h.\8a«åç\8e\7f;\82 ¨\90úÃ\10\91\r\ 3\9f\97$÷ì\ 4(\18K\14h\ 11\ 3º!Å\9a%\1eÌëWÐ\e® å\19\ 3%°C4ä[ø]ä\84\17`\14\93
+() \13kQ@,ô\ 6_)ɲ-\10e]\18@?¸ñ\86Öô#Ë2ü
+\9ae\ 5Ó\9eõ$\15Y&\1e\ 6\82thüRy\80\83¬¥9ä$aÞ¿Â8#Ô(-rþ­\1aÙ,À9\87¸%\93°\15F¶ÌJöÅpÉrVhu\1d\emש\f\9a\13)Z\11jo3f\94à\92\0Wf]y\14Ri4l¿hxäè}ÆÈWæ\8c\80Ú*Írd\8fÈlÛ2ÉóR(Åc$Íò*\84öªp\fª¸\ 6Ð\1f\8e½\91%¥[OEÁ¸>OÐQ\80w¿­zÝÕU³H\80À\vF\80O\14ù\83È\ fBXÜÍßµg·ûðQ\94[É×\e\r«\1e]]A\10Ea\1f\9bè\1a\16¦\80;N¥¨\96¢®a^Pç¨\r\ fÌpÝ\9f,\82\82O\f\ 3þ\15õÑ6ÓîÃýìîX\8e\87°G3f\ 69/4§N½\18ø\82¬]ÐÚ#[}T\1eÆ\v\80à|Ì)\17ë\ 4û¾QÒÏxì+F\8däzk\15ÿ\80Z\8by\91xJü4Ìûùbæ°LÁÿG /\0\ f)Gµ<\94D)x;tÂIö`Wt\ e~[BrG\89cD\99\14·\ 6n5õJFÎ\87i\18\91\98NZí\1do\11ñ\ 4ñÙP5\88?â¸\85ܦ Ñ\15\ao¤à     Ì/uXª\8dÍí3TÜPó\ 2Ù¸\15ã~¸Cüy\15<\81ù¥\14taF©0(Ô×çþnâÁ2\1d\9b¯T|³\95ìàÜr\15×Ì\81\9dÚRöÁ\10\19SU²¶¤y\12T2»E¹çØÇ\ 6t/þ\16æ\ få~\19\1e\1aÙ_\92\87\93 \17æ¡\11ëexhÃ]D\ f'A/ÌC\17\16\fë\ f¬ÈÎN¥Ú-µ\9bx\90ê\17\93i\17îñxIJ*9߯ní\98=YÝÔV\92\1fçϳçü\11\k¡Çp/§c¢kÖ\9e\16!ç`½\90Ù\18IS\96Bj,\95%üÉdÌ°^\83\7fÆî¤8¨\97V=SP\91Û*×Ö\9c\8c­G¯®^2²;\98\9d÷¢´·\a\92\9fñÿ?\19\8fOÕ&mK\87¥Èe\91ëý¤ÚE«\83óí\16üÛéîÆ\14\84!Vva4ªêôÅìîÃ\fî¥ø̨Æû\ f5\96êæ¦Õ\ f \ eïO\86xMKêk\1a,\99Òöv³Ü`«à/£-A£É\b\8b}70\1cÚ\ fxiü»ó\1dáiq\16endstream
+endobj
+983 0 obj
+978
+endobj
+984 0 obj<</Type/Page/Parent 794 0 R/Contents 985 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
+985 0 obj<</Length 986 0 R/Filter/FlateDecode>>stream
+x\ 1­V]oÛF\10|ׯX Eá\ 2\16%êÛ}s\9c\1a0\10\en¤¢}(`\9cÈ#u yÇÜ\87\15ýûÎ\1e\11ì¢\ 5b\e²ÍãÝÎÎÎ\fùu\90Ò\18ß)-'4]PV\ fÞo\ 6¿m\ 6ãdµ¢Ó\87-ñÏ\98\16³I²¢Ùj\89¿çódBVRÁ;°\88c\8e\1f¸}t;¦+Ú\148z\81£6y\\1eÓ&»xgüNZ"\11ü\8e\95Ñ¢"¢QpvT©íÈÉ,Xå\ f£\9fîÖ×£FÔO_ìv\9e8\93¤äíá©PÖù§F8÷Ëæó`LÃ\14HQââ]î+S*\8dÃâ\97È2\13´?\15ù/%ÎÏìÑþÀ³\9ct\ e]ÿ\10\LÃÞØüÿ\1dö
+\8f£Û\19¥)\8fl\98Òp²ÀxAé\1d\89Ê\19\12y.s\12gÛ¨RZ\92(<Æ\89\99Ò^é­Ò9&Õ®xC¥ôd\15Ð\15$´6\a¥KÊMØV\92\1akêÆ;*\8cí9\9f¶Eû\9e\Ò-\0Í\8cÑ<\98=4ç¼°\9e\ e&XZ\8bz+ègÆE\99ÑZf\9e\9d5¡Üµ÷\88¦©T&XgX\10q'ß\¨2Xt\ 5½0xè,᫱f´\0D¾X\ 1Q+ø      Dßë}t{E)\10\15ðÎ|:\8bàN\ 2OÓd\91ÐGU+\1f«F\99\9eè\85`'KîæÏ\96.Ú      \aju¨·à\11DU§\9d\fN\81#\18ÂJ(\19\b*)\1cP?K\e5\14;ÚKÚ\99F\12\b7XÈL-yg\11<:<#·;ÁýÊ×áy\1eu$·\87£\8eåª\ 3\19\8d\ fñ,T%xf\98\15E¶>*\1d¾AsÒ¢E0î\ eÎËú\12jñ»H}c,p3 èöã\9dghÚ}è\1fÔfÒz¡¸`c`\10ÔKè\16\ 5]Èv¸Ô\9d·\ 5
+PÀË\97DèÜʯAa;\ fñ\ 6äm­\80\1aÀ#_\80T Á³¢G0\1dl\86\89*\r×\88»\1e\ 4\b\Kû¬2üÞ+\ f\0BçôX\85²\8cD\#¼0\90^WtoòPÉc uBîºKh³\ 3«øÙJÌ\86ùª\r7lê\1a¢Äø\1fÖëX\80\1e¯ï©\ 4  G8\ 2w\94ôÇÃÝ_\18¹Î\8du q;£Û¬·ë\12é7½J\16¬©¿'\8be·ÞÛ\99\97\87sNn¬oÀI\rG\0\83c\8e0ôÜì\ 1`C\9fî>Ä\81ÅZ*wÄ\80µñ¸?\87Ë«Ò \94w5Z®X\13 #\97\r á\9cè s\92m\ e\93ýN\81>
+\9aëB¹ÁAº\84¹\960iÓ\8eÞI©i{8&\bÝqÙ\ 3ø¢\\15\85ÊB\ 5ñcL\16\ 4Bá<¥³z/»âÄÁÍ]'}äZM\14
+Jæ\ 4`µµqÁÓÑ\10wÝÆ\ 4þÍ\8cµ¡ñÀ\v¤92Ç\9a\83Ì_å¾7Ð[Ü÷³¹iM\fòX\99]XÆ\89×Q=\bFÙ2îÅ\17 T\1a=ôÏ°Þ\12\84°ÿ\82\ 4\8cqÆCÀ\13\8fùWõ9!\1c\94V!\10\8dÆ,cNt\94n\99m\87df;¿P@\9cÌ«-¦\9d \8f-v\ 19\9d§\b\8f\7f\ fÈiº\8cÚü. \97        Ý\18\9dU\81C¬Õs¯×c>²V{\96ú|é\93\9d\19\ 4ÜÞæß\19¶sìåÛvíÜ\8a¸Òù\99\8c Qk\1a«\84Ç\ 4îUf\8d3\85§O\8f7ÄÂwHëgvCeöQˬ3ìxVð\88\93¢F\b°s´\97%G#F\ 3\97\9dÎ9±}V775Û¾3\aB\81Zù¶\8ds\82pÒ9ö\ 1Ô)`\1e\89G\19\9e_!N\98\8dÆ\9c\88\1cñ¢0xÔ\ 6NÈØáý§ \et\94º Z}\93çMG£°\98\10\ 3Zz\96ØËÇàd6~ã1¸ê2(],ñr¶\9cà\ 5ïÅ\9bÞúúþý5=Zó\19Ïeú`²P#3#+Üý°Ý5l·]¼úØ\9c-g\b.>öb1åM\10Þï\83\7f\0"\9fc-endstream
+endobj
+986 0 obj
+1240
+endobj
+987 0 obj<</Type/Page/Parent 794 0 R/Contents 988 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 176 0 R>>endobj
+988 0 obj<</Length 989 0 R/Filter/FlateDecode>>stream
+x\ 1\9dXMsÓH\10½çWtqY§*\96-\7f&ÜòA\16j!\ 4b\96=¤jk,\8dí\ 1I#FR¼þ÷ûºG\92e\a\ e¡¸X\91¦?^¿~ÝÃ\8f\93\90\86ø\17Ò|Dã\19EéÉÕâdp{A£!-Vx3\9b\9fÓ"¦a0\1câ/Qïz£òR;
+G\ 1½µ[*-]ÛleÖ\95Óô Ò¥¢Q0"U\90:]|;\19R\7f4\81\81Þ½3©r;º±©2\19\9f)\9dM\12íø+v\18â3vØ\1f\878\8f\13ð\10\ 6tï´Ó?*S\98RÓg­b\93­ý\91   \85a}d4ç\ 3Wze\11ÄÎV\14Á¼É*MÎ\9f ¸,7¦ È\87\7fFy¢U¡)Uß5\15\1c;Þ«R\ e+<E6\85±R-\13M[SnØ¢$ ÷´T\85\89êì±\8fve\12]P¡Ý\93\89ð\ 3þ\8at\19ð)RYL\e\ f\95ÎÄ"ÿEÅ©ÉLÁXæª(¶ÖÅD:\8bÜ./\8dÍØ\82À\19\10-6º\80ÍrkÙé\9bÅ      WCJB!ÿúüçI\18\ e\831MgçÁ\84R
+ÏGÁEý\94Ð\ 3×t\88Ç\v¼ìÖ²´¹\89P(É÷       8Ç\1e'M\92Ü¡\13·¦Á-\98"\98÷\9aä\1e{ÓÇÓ:ªÑlï5¥q8       ¦G1´\16%\ 1±ØT±     ù8FT(ËÕZ\v\8aåÆ\87\ 6\bºæál2{\96pëL0\82³&¾c\17oö ×ô8L¿        ¶GvåYôöã×ÅGp\18ü\8d¸XÁ¾.4\9d\9e\a3\9a\9cÏ\83!:a\b\ 6Òªiª\86ãÓÑ$8l+\90\1d\ru¥¢ïkg«,f\83\83Ûi\r7:³ï9~gKýZÊ3¸\9d5Ÿ¬Ê\8du\7f\14$oýÑ\ 6×\1eØ\ 3ÞÇ6ªR\9d\95\84ß\8aÙ½4\99\12\9eqR7êÉÄð\9ee6\83\99Wû>¾¿¹\160¨ß\10]r\7f%娿»[4]}{ùé\15øzeÑ0\8dGϯ¢Êµ+t\f\8a-w\1eD\9biÁ­/ÙÍ\84\9b½¿ñ\15\0-8*\1f\8cu,3Nû\96eyÙ¨\18Äpk$\91P¤rµ4\89)\r7\89%\15\95¢?ôÕd±Ý\ 2\96\ 5MP\89C      :Jk/HD\8f=¤ýx\8aL¾rë·h\ 4Ã3Ú\82\89(i\8e*Åâ\f\98UY¤\11ðÊD\ 6á Õ\1cÒAÐ\8f£\búE¹Kô\91ãØ\vbb×\9cöÊÙôè\94@ݤ\ 2]FÃG\89A-\v\91\ 6.¨+M\ 4¡²U\99\98\8cA@\9f@Yò\822\r5*Xx\11Î\91箤ù\1cYµ   ¹Ãð;¡Êþ8pݨ'$OPªï¬\82þ\b+\1eKXS%\93BY\99iü       ÇQ3\b-;\9aqOL\86\13Ѩñ<\84>ø§V£&Ãé\91\0.óT¡¾;\8ek%\1a-±d\96QN\12»\ 5­ö9×0\88\98IÊÏ\94 G_îÞýóï»»\87Ååû÷Á¦L\93Ã\ fÛ\96ÿÉ à9Á_³\bÍÇ\90\9dñ\ 5\94&ãa\10ÖOmFã\vækWu1\9f\9c\f
+ÀÆ\13©\99\9e1~:\aAIv´ô£\f,\8b´æ\91\87Ì/\91î\ 6gÖÖÆh\86\ 2f@;\19l­*vC@@Ó\102ãÃã\80ºÏx;\1fA¨öoyH<CªÉð8\89\ 3ýg\8dÆ\10[{j·6Z\10ë6\17°Z\1dY\80\e¾xÌ\94\832S±±U\12\vÓ8A8\7fÍ\88w\85â¨m\9eõÚà°Qøøà6ª\15³?\a.XgâÞ#HYËi£\98ü®\8d2OTÄñ©¶)/þ«Û\8f#«@\7f\93FÛë¨ràhmíå®\9c.\9dÑOÞ[\82Í\805\90\1d )±/ð\@C\8b@¨ºùÐ[¬A\9dØ\ 6w\8b\83Ì\7f?\1a+\91\9cUXTÖ\8f§>YPÒ¯:¿\8bh£d^\94½$R±\83\94Û\ 4\1a
+\ 1{\81ñþè\1c\rÖ\1fÕ\ 3ä\90V¹aýc \ f  Æ\12Îêa²(©x(ÕmÄ4¯çÌ3Æu\ 3Çt\935¶tUQ¾(Ü\ 3v=\~\80»\1cIûY,\9b\ fôòÙÂ\ð\802\81\ e@J¯ÁL\ 3Y)["Ü-\18A,ÓÍÔ¾Â'è\11^N     z](Ôó' 7\9fÿª-\1a\94/c\16¥\9a\9dOF\89ú~áfø 2\b\81\93éçCÿ}x.¡üÜ{<\95\1aT¤­\9faÒ ò\97vKí¬ï\18âó\18Y7\86UÕºÝÏsþ\95\ e\1c\11ëÞo\1f`\8dF¶¸*4\11µ\82\0¯5­@\v\-t\8aX\84|ªá\vï\ 4¸\92\14²áøi]so?ÆE-;¥\ 3£\9d\1f\a\90\7f^<J\eÙD\0nV\8d}(u?Õô¬\97
+\992<\97K\8dÙ\12\9bÕ
+\16±\v\8a\96Ü-&G\9<,·\17\94`©uÖ.90SûFïpR\85
+eR¿Óñµ¯nÈwÝ\85 ËØ\bCCnR*\91\89\87À°\85J/BÓF´\84òÄ~\8d\11Hºê\8fm­½\8d1*û>à\ú¸¤HUq\7fäg<¶\8dp\rø\85\8a6X\96HZ\18;c\845\ e­Ìé~³¸\99\81\9a\85¼¬\10¼\ 6æÀ\ 5¶vy\1eM÷)KÅ\84\f~bC?\ 1Q¬Ke\12Ü\11«hÃ\9c\96ÙÑÈéÙ±\ 4\9e\91.£ ÀÜÇ-\e\ 3Æ\9dq\b¸±6\1ckV3\93ì8\80\ ea\8a\G\ 6˨¬§\1dhà3­}ÃÔN,AìTÉÛ\93\faÎ4î\9a~ËÃz\12é¼Þ5qhk\92\ 4\`\97\83Ûóz\9eÂùx*7\9a\97üÿÀÑB~ô\7f\ 2\93\91¤\8c3a(ö­O'ÿ\ 3ÆEò/endstream
+endobj
+989 0 obj
+1782
+endobj
+990 0 obj<</Type/Page/Parent 794 0 R/Contents 991 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 221 0 R>>endobj
+991 0 obj<</Length 992 0 R/Filter/FlateDecode>>stream
+x\ 1\95XMsÚH\10½ûWôek\89k\ 1I\b   6\95Úr\92u\92Ã:ÙØ·8\87A\f D_\19\r&Þ_¿¯{\ 4HÄ@bW       µ43ýúuOw\8f¾]øäáߧ8 QDI~ñòîâï»\vo0\99Ðþb\96\10<\8añ\84ÂI\8cÛ0\8e\ 6!\19M\v\9e\81\97XfwÁðáuH¾Ow\v¬\1eMbº\9bË{\8fî\92\v\9b\96\85\9eSYd\8f43©^àw¥\8d\1e<»ûâôc\1aT\ 4\8dº\0*·Ê\86×SòÃfé0\0\8cöâ~0\18\rèUY,ÒåÚ¤Å\92ìJÓ­Êg\8a^\97¹J\v~iM\99eÚ°¶6Ò~ÀH{w\98±HMm©¶º"LI\8cV\96\17S´)ÍW¾sK~xý\8aÒ\9alI´.æ\1asT1\17\95\952*×\16\8f¨Ð\89®ke\1ey©:\9f\r\12À\e\10½£M\9ae{\93\e\ e}&òã\9b\8bÑ4\1a\8c(ò|Ð\90\8fñë¤\8cn\85v\88\ 1\1e¶í/JKÊZ\9dW\96Q\19Ý×ß«\8cÍf\1e\98nR\80¾Ò\8f¤p\9f\97¸Ø\95Âü¹þ¶VVÃ)Iù\80qs\ 6Þàlã\0ªñd\10µPµe¼\8dãÎÛN¨\88\99\b\95­\99\87\96\bà-[\94«bO\14\8d'\13DDN\ 1\13v\9c\8c\ e#\95Zj\9eº\8f\83æ\1e|p]\1a\18Y<è"ÕE¢ÿø\81&õ i¦uAYZ|\ 5\13\9bÔ®d\90JìZe;\7fÒ\×\89I+\ em     c\8fú\ 1o\12\ 4Ô[æ\1a
+ÒßU^eZØ\1c^cëÉ&émíd û\88ìÑ\ 2ð HB\ fó  ñö§\eã\11Ì\`ëö\83±Óòi\99\953\95}\16c©ï37PNø{N/U\9d&Tk\ 3\7fâÇò\925\8fÄn\ f\ 2xiì\87¸æ\84í\1d\96ÒÝÆÞº¬\99\84Nìi;KKÄ;\ 2_@ì&î\18§\17\8då\81\83ßûðþÍû\ e\fo\ 4Ø9Å\1cõc\11\8eÂ`þ\84\ 4\87Ç\vÅà}¢á­º4åºúY07W\1foÞ]ñèÝÒýÀ\87\95îº#s£©^\95ëlξi6\11Í]váý\9f\95        "#WH\1f\ 6ù­Ü\80÷¶\91\vad4\ 6b'\1c5Rl\vãÃ<\a\9a3ý %{<\11Ùà9
+;*#OÜë{SNß"\9dÑ\19±åmÿVF/´átàL;Në£îÄV\18NÅ©Ó\80í\15á\8cî±\vÞ½/\ev\7f\88­m\82:\14á\8câ\10%ªU«Ú\9e<kî\93±Rë\ 4uÈ>î6\1dÝ÷ò5jË\1aA\81\87ÍÛ\17"ß?ëøÌ\8bÄg.LD8\83Þã|ÛÆ¿]ÿ8v\86Áo\9f\ 4\8f\94h\1e+\v\8fWª®±\9fæHB\7PX¾­S£¹\96»$Å©©\r~\14\87R·|ä\95\90\9ct\1aý(æ
+×Fߨß+?nF\13qOZQ¯«ª4v»C³rY\16\9dø\1c\85þ>>\9dp\ 6\ eN®?Äç~í§7å)\98\e)É(ÚµåR,ñQ\99r\91fºþ«C-ö0§\ f4H\11\8dD8\ 3\17µ Û& NðjWÇ)½Çßo7÷÷[\f\90Ö<úI\8e\1dx®q\ 2ü÷\9aVe®i\8e\18I`\ eZ\fäE7¨I\9d©\15Õ\87\85\9dȺà\98S¶cv\10qC\88ÍÌÝ \13N\9b\1dDñA@9³ç&}8Q ÞJ\85ÝÖÅ`Ìåµ!Û      g´\8e]ÕßÇ\86ÓÊ|\9c&\9b
+}\92êºÒIº\0£´Ô\856(ëN\81k?ÜnÌ2q\83D9\1a\91n/`Wð\93¸Êè\f}-:\9cËË×ïo//%"¸oäfñS¡­¬ü\19Õ\ e»\9eÁïXA\9f-¾àn!\10á\f+þèI_8ÐÇy\11\0\83$\9fó\90\83È{Þê¬\ 5¡ØÞT
+4u­.¿ÅÁÞ¬¶A~ä*EÈYË     §\ròãn¥8½\97\86ëÚ\f¥\98\fk>\8b\f³t6ÜòÛÁ\81\86\9a\89\95þÇ\17á\f\8eñô\80X\9cUÜÑê8«\aõÙ\ fÙ\8dM\8c\8cÒpr\90P6¨q\1a=rívõOt~\85Uó<\95®þX·õÜ\ 5\9e¸\95\93"·Á\9d´(\16îÃûÓ6UI\ f¼\8dU\1f\8d¡\9c Äµ"\9c±Î;,Dg\9c\8b#\16êË\10Mü°°\r\86¶S§#G/÷´r\7fZÿ\94+f»¸ü\84G\8b²­\10)RzyÎ\94r\7fZádtÐ6Èy\17\89XÕ_\8f\a\91\17y^[)B\96;÷)\a°Ü\9fV\8a\96ö \84îjÅ\19½±Ó»?'õ¥Iæã\16÷\ f|~ç\1e\94\ 4í?\8e\82ª2-¬\1cÕq8^á8ô\1fÎdîX¬f8æò1P>\1a #6G¸áõ¤9 ù(%>>I°#¡áöê\9f\97WôÁ\94_PÝð]!Ys#$\13\99\91¾\eÞ\8f\ 3Î\11½_þ&\11¢wÂ÷\17\9e\e\8d\e\8aÿ½ø\1fÇ{\86Êendstream
+endobj
+992 0 obj
+1578
+endobj
+993 0 obj<</Type/Page/Parent 794 0 R/Contents 994 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 228 0 R>>endobj
+994 0 obj<</Length 995 0 R/Filter/FlateDecode>>stream
+x\ 1¥XkoãD\14ýÞ_qU\90H¥Æ\89\93&éò-íRXÄ>Ø\rB\88"4±'\8d\99à\197\r¿\9esçáÚ!\vH¨­6ñã¾Î¹çÞÙ?ÎR\1aã'¥Å\84¦sʪ³\9bÕÙèî\8aÒ\94V\e¾4¿^Ð*§q2\1e\8fi\95\r¾QY}ØY\99ÓN\18³×un¨j\8c¥µ$©Äº\94yBt§kªt-)\97V\14¥!­h«÷DVS®Én\vsIµÜÈ\1aW.V\1fϾY\9d±\vç\87RþôþÛ³é<\19Ó|1I®©¢tr\9d \1c÷­¤\ f\1cèÑ\eõ\83\vx1Åó½\90ßܾÿåÝêÕÛ7ÉÖV%»{~Ó}Â\9b\83\84øÆè.\v¹\ f\170\93N\93    l\rî'óE¸\1fk÷\87\93yrÅ÷W[IFÖ\8fÈÇ\15Ã4»\9d®-r­D¡¨Ô\ fZ\19\12*'\11Ì è®Ä\ 3úUIë\1eøÍ\a\10\1d\fÈl\ 5Jx", ñù\98bÌÇ1\ 1 \8b0CH\950\16Ñ®k½Gà\84 \ 1%>l\80ÜÏ\85Êq\99(+\v©,\83VêLXo ä)\90\8f+%\r£Ç\97·\80þ])\85\91-¸Î磨\vÝÀà\eiA\99OtÃn\võ\80h²¦\82\ fa\vP¤PYÙäàÖ¾°[Ç\12Ê\vcëbݸû\bîÈeà×Ið"8'À\e\82L\13\1aÎ\98Z(åÒÐ\a\ 5Mp5×Ò\90Ò\96ô\86ù)(ÓÕ®\94Ⱦà\7f\9f£Õ\ez¨u³£Jìv\9cÌ\1aÙI©Úú½Yù\a\1cò\1c8X~5\99\81Ô³ë1\88SÑÕìºý\16I\8d\9b©cÕsÓý¤\8a§hê~ÀÝCø­¥(Ë\ 3ýÑ\14\88Í\ 5Y0H9ã%\9fv%3\ f¿\ 2<b.\9a\9dÈäýÅ%\1d\97\9a2ï£äJÛoBn\fO\98\10\85\ 5ÊTÑt\9c\17\8e½óµ¢Ù,yѹÇÍ\8a¯\ông\8a¼B\80®\88}çmW\92©ÖI¦Õ\ 6rS\8b
+(x\8a\16
+\¨<k\80C\86ZX\86àü¥ï¸%[6çdì¡\94$²L7Ê\9a¤\9bÅl\81*_]/\90Ñ\ 4\7fè´\8dW¿\17\94¢©7ÐÅÙd
+ÍéF\9cN\92«\84n£»×"Û\16JÒªf    \\ 67®Ñ¿×\85â\88n]\ f\19\ 6\ 5íçÒDÇÌ=ñ|´|ñYtÇ\90\15ÖÜÁ\12Äòæ­3\1f²`èEàk¼d·ÂòõÆxøE\ 3_Ê:>0\83}\1fGs÷\83Zà>´w+\98\1fx«¾¿\88¡\ 5Éóñ\ 6?¾çÑݯ\9eÙ\r(Pc\ré:\ú^E\0\9f\94ÞÃ$Gx~\8b¾i\18°P\97ä<¸\88\8d¹\82\1cÅ)\82nÃ;1Â~Â"³0\88\12²Ê²&æ\10[@n\9dZác\ 3ðÐ\0U£8cV\92  \92\9e+\8cºF¡ºÕÊÖº,e\8d\94\9dÐ'l©°\aÚ\80Ml\135ØÕò\915\10\85j\14\97U×Å\9f\b FÚ:2`'ëÛÍ«·\1f\97M­«£¢~\f¤àL|_9®< U\99+\80S\1aG\95p\93\91\19y\91      P\eD\1cõ\19úÂ#e£ÙCì\18pä3FÚ«)Æ/4µµôâ©5\80ñ\fñ\83\97ï¤Êä%@\89îÚ\87\98i
+eaq\84UI\95¬ÖòX\9a\1d !\8fµÌ\ 4\82Gb\90×\9d6\86³ý\fêð\8cÜì\16cc\vì\95>\82>\16þ(Ûà\10\92\11\11>"ݲÍçÝË[è\ 3\14C\12\8dÖBÚ+\14+(£\15\8bð^>ðD: @ËÐ\1c°sÉÛ\rWäò(\9c\7f·ï\1cìA4Q[ \82T7`&Æã×nòc\ 5\8cè0PáÒG\9fÇ\10\1d\ 3Ý æ\ e\80!f\ fÑ\ fB½æ6G5A\98¶ßPÔ-2¿\1f\80ó5\18^\1e8ôÑ]\L:í\ 2\rv¯åþ\89vA¹¿HÐ=òH\8b(\0\vãì\13Aðú\87AÅe<\8eàäà\8emzbp÷¶®%\9a\1e±\9b\9dV9·\8f\e\93mqìa\a5à       é@peê§8 \91´Ùèdn  *s×8\15¨¥[i\fD¥,   \16åc\11\96!¶7ìTJI¯¿~ ÅÝ-\96tðywØ\9d±æH\93Ü_\9cZøþ¡"a\95\99¾p\93\8a7Q\b\17ï\8dØ´h/\ eNNÜ|D\9f\9e\9a'æk΢Ë3Ð¥\11e\18ªZ%t£Ý:Ö"\r\95ï\95Þy÷\1esZ\1fо
+g\ 2_úÞvý\9fÖØó·j\bæ\f7åá¼\13Ò3ïúIÅYï¦dc±\rð\14d\16t"òË\1eF&\fs\\1d\ 4m\ 1åÆå83Ù\ e«¶Ç\95ox\85qüÀ®\1cgÆó\bäg°Mð<\92\8a\97Yl-[\9d3²«¿¹ë\97±K`\80uàCU\e7\86O'\e>`9\98JHÑ\89ÚÆ\19Ûö\90?aQ:\9fýëÚ\93NÓSkO\9aP`Æ­Û\7f 2Ðø×'W \1fQT
+Ôׯ4(\0m\8a\1a»\12N\1f;\16®\98D\80\96\87ài\9a2\10\98Çýç\ 3T\7fS\81#P\83&°?\1fØ\7fèȸ\19dÐNÀ\90k¬y\8d;³x\13³x\80{,vû~º\ 3\9c¥\b-\ 3õýJäN\ 2ë¯Ü\82âG\9aßÕ\14/°LL(¤SÖ.\vu\80\1dsvßk.\9eÿ®\8anH°ê¡.\bQ>    >\9d¸\8d\ f\85j\9eh\8d\83XÞÛà\«÷4>ò¤ÖÚ~\11ªÓ¦6jL=2ëBá\83¬9\95á\ 3¥Ø6\869\8drù8R\r\14q\98\85÷¦±$ç±'     \vÙ'^\86Üê7ºk-ÓÐÐ\88\roDi\\ f\8eîâë\9d:\ 4;¿³\89£²\7f\19\9câ\90î\ eÒ)N%)þ»Â\9f\9d\ 6\1f\96¯o\96ô®Ö\1fef±\ 5v\8e\99l\b\e8?>\L\9c\býßµ¾³f^-®°Û;«ó9»Bãýxö\17v¥XÊendstream
+endobj
+995 0 obj
+1869
+endobj
+996 0 obj<</Type/Page/Parent 794 0 R/Contents 997 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 233 0 R>>endobj
+997 0 obj<</Length 998 0 R/Filter/FlateDecode>>stream
+x\ 1¥WmoÛ6\10þ\9e_qK;Ä\ 5"Ù²\1dÇI·\ 1I»l\1d\96vk\\fÃ2\f´ÄØl%Ò\15¥8Þ¯ßs¤(+NÒ~\18\8a\1a¡HÞësÏ\1d?ï%4À¿\84\8e\874\9aPZì\9dÏö~\9cí\râé\94¶?å\ 2\8b\ 1M\8eã!\8d§Çøs4\8a'TJºÁQl\f&ñ´ÙI\86øàv 
+\9b\90ßþ@Nÿ\ 2ê\12\9aÝ@ídzL³Ìí\ fh\96öJcªgôböq¯\7f\9cê­\84µë\8c¢¼Ù\18\85\8dB¤K¥å?Z\14rçÎs¿\1e·\9a¢á$\1eCWo¶\94\8d\9c`F¯/«´ïµÜ¿Ö#©«rCk\95ç\94+[Q\85Û\8dZbµ\84½jI\82ö\9fï\93X­¤ÎdvHk£\ f*Z\8a[\89-'Ù\94ü\99åðWV3 (\19!\9c°I\90®±c\97\12¿Bg¤\rÑÒ@|¦J\99V¦ÜÄtaJ\92w¢Xå,´kDF\a\99Y­6\aÐ[çY£W{_\82\97\1du_õ7W\9f$\Uö4È8á|%\14\r\8f|\14\9d¾ç§w§G\83#üO\9a\83Cr\a{mfTúi\9b\9dA³{ÚÏäm\9f]>íÏ\95îß\88Ü6 \f       \8bX×ÄGçlnnåa\93´á\83äßS\11î÷(\15\9aæ\88\94ÞP&mZªU¥\90\ e\97´\e\84\923\99æ
+       >$\15Ëø\90Î\85\95\ 5Ö¯L±ª+YÆÞù ±\13ÀÖ½\16x[½bnM\8eëù\86\8a\1a\88\81\r¬ê­¬Îß¼»òúÍMG=U\86\ f}4\80\v>\9e\99B(\1d\13Í°\0¶v\0\13$\aÄ\85k_Ð\ 2\97¯D1\17\1e\84ÚT(ÑÔ,´úק\9a\84íÀª*aû\8eR\91¦¦Ö\95\v\v\82\11
+ê­YÃdák#5e)íÊèLé\ 5}Ðê\8e\9ak@¥\85\9fRSZJQq\95°£ZÞUd+¹"eÙ\v¿InÏÛ\eî#i;\ 6ñ}\9fBJ\8d®\100VÊ_×(¤è\936kMøX)\91S[1ε֪P\9c.Ô0¡\81Mf´¤Ú6òX¯ãÄÀe   \13Úû\9f\1cõ\8d§'ÀiA\93   \bÑ/rºb\1aÝÒ\9e;ï¸/°Ú\80Æ'\ 3\87ï-ûÙbîYèº7½~á\9cm\89ÓÉr\12¶PKMQ0[pêì\92\9d]ÊR¶5\eH¶ÍÔ£ìÚ*¥HPT|\9dc\83þ\ e\ 4Ö¬÷É\ 2}¤H8×HSSG\aö^y4¨\7fÿæ55\85¢å:\9cm\13\a\11\v©eÉPÚÁÅMi
+'ÿ\83\17áþ~\1a\99M\9d\87Ì$ãI<\ 2¼§\9eé~A]z\ 1\8e,B¥ù\ 2%U\142S°!ß<\0\89KY\ 3\92\11@ÂèàÎ\990^\10/\87\91þE\88'÷ß\91Ó¹EĥеÈA%®,\18\8d[æ¿\8fã\80U\84¥\90ÕÒd®\9e\10c\92\9fku+r\10\e\87ó)A;!\fEg44þ¡tfÖHÒ\8c~{ýª)\v\17\93ý+YÞÊ\92`§XÈr\1f©»\bÁ¯\14ú\17ha½TéÒ\9d\ eB¹Ì<\aìhmÈÏÝÜ^kJ\9c     Òæ\89=C?]
\90þs(åC¢\8d©Ë\86C9\ e·uÎH\99£sB\85p\9d1êð¹B\97¯3øÁ:8ÊÝû>²\ 2UÖbÐõ|\ 6°å\11 Kº\bÀ\99\v\92Ò\\13ºBî\¢ì\8e«\85,æ²´\ 1á\1d\97Ü\90`9®dê
+ZsQ.Ð\11ä¢\94øt\83øÃRð\1a\b±\10\95B\8aà\94­\11d\1f)\v#þ4µ\1f\ 3\98qwT¯E\89\8d«WÏj4<I\80I\ fÏ\13\ 6¾\83'\0LÃé°\ 5nw®ë_\9cP\82\81\8a§¸áx\8aá¯;Ça\ 4\1cÇÃ\98ößé\bq\8a.òÍ>½â\9c³¹ðáÒ\8fn4ã>Cg¾³¸\18m\v\82 \86ÇC7²Y4+äûºÇYçÎ\85ÂãYëú\ 5­Åæ\1e²\eVñq\ f|a\19\aVazBB\80\81<wm\v\9a¢\8b÷\83þÒ¶#øP0Ëj)¡\13\90F\eãü7Ð\84èÇÛw\13ùÐ*¯\94N%IøÞ¨}ÔT¸\87\92E\e\9ff­CÆ£¯t\1egD]ad¨TÊtÁj\1fíW££A|LÉd\8aÌ\16à\9b\13¤Ú¯BËÂ\12#\g$o    \83ý½×Ðáum==Ùzµ\ 2=f/\11\15|n\1d@ÎnÔ¢\ 6I7yg!\8du]í°\ 5Ý°kKw]Ð8\19ÇÀ\9b³;XÚ¶ÆÐ\\83s÷í\17Yæ+ÆÏ\80.#íÕÐU{d0\1e\ 2\9aÊ\15Ëö\89\12y¡í¤\8en\19³S,f\8bÔ\9ekYp|K½~ÀryĤ\83æ,Á\93/¿\90O\\ 6\8e1 »iðq~D·wñv\1d«Ó\7fÏ%£\19ú1ó\86'\82\ 3\ 5½\97ÙÏà`\9e¤\7fUº¾#»Á°U8\ 1ìåî\ÿ×"7s\91ÿíÂ\84\a
+^\80\\81\8c¾\8bã¸\94<\972U¢\88\ 4ÿaR¶Øùáá\95\9dÐÓ÷Ô¯mÙ·<ó3\89ñ~\94\1a hA   \ 6«ÈÒö]@Ñ%}[\aÐ0%\1dM\9f`¤ió6HðLå\a-\9e\94\1d _\9d]\9e\83\9b\11/*zmÒ\9a\87}\87L6=ò·"\7f­÷?\18l|<FÔXyorÌ¢Q\8a¿ïý\aƧ\99pendstream
+endobj
+998 0 obj
+1687
+endobj
+999 0 obj<</Type/Page/Parent 794 0 R/Contents 1000 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
+1000 0 obj<</Length 1001 0 R/Filter/FlateDecode>>stream
+x\ 1¥WÛnÛF\10}÷WL\8d\0\96\v\8b¶$GrR \85\80
+4Ma\15A\ 1½¬È\95´1¹«ì\92Vô÷=3KÊ\14\11\a\rê\edr9\973çÌ\f¿\9c\fè
\ 3\9a\fi4¦´8y7?¹¼\7fC\83k\9a¯pg|\83\ f\19]%WWW4O{\83ar\9d\8c\12úÝ\19\9aÊ\8d¦in´-©tòß\9d+\94±çóÏ°sM\83A´Ó\1fN`§7Çñ­w©Î*¯iå<}®\r)J\8fÌdb\86\9e\947:ÐÎ\94\e±þ¤}0Î\92[Ñ'c3·\vIt5®]!\8bþp\9cpÔ½ú\ 4\r\11|<\95Ö§ú\93ä\ 6ÙáÌb8\9eÐq´|ïÙÆF[ñ\\ 5íIç:-\ 3§ÊqËõç°\15Å /\9aÐ8Õb\8bó\9c()K*M]\ 5¨\94Íh«BØ9\9f±ï+ê\ f\90ã)7ª$\13ð¨y2¹^ëìÈ[ô\90\10Ý\12=¨b©He\ 5J\11J¯Jó¤\ f.\16=\93èä\82Ts¬v-ö7*tÜzçJzv\1a\b\18sm£\ f¤\ eà\17çTT¡¤¥&Ô[{\84¶Áß_ä ¹­æ\10ðÜÎä9­\94Éɬ8k$i¬ò{b\b;~\eD\90ñ\1aá[d&\1c©Á\11äÊ\rî6\aÃÆUyÆ1PÐB:ÀnV+\ 4\ 2`\eP\11\12\1c#\81®»\10\jT\89ÐùÎå=¸/\fíÑ¥.ÓKy^JòLÞ\1egë÷\17\12KÐiåM¹'òZ\ 5gC"\86ú¨`Ã:\8e?è 4}Ô{¦ê3\92/TK1«\14~,Á[ê÷[A\92\1fgî Ó²V['¡Cµ\97\ec5\95\9e+Õ \96\b¨Ç÷\1a@¥Z\803EB\8c\8b³}\84Û_åÈØuËUm39\84Â\1aÐ8Ç3Ù\9eôWð¯+Ä\16"\8d\ e?Ì#è?®ÂYÄð\85\f\0\\13}¡l¥r\89=\12\98f\19ÊgV&\8dä\9c\82\18kt\94BÛ*Ò¸¡      ×°QaÝ}¬*ô\ 5\12Ê&Ë
+I7:}\94z.ÝW:\9d
+h\10Ù\14B¯         º­uVw\87;icÉ)Ñ\8cã\ 1\91S\15`³qÚò)(r\95¿\9d%\1e\85~\8e»Áá¤\13\83uÿ\91\8eØ\82ÿ»àÁ,ºY«þÇ\ 4\88 þg\f[éÔ\10\90;Þÿ®\r^=3:R`\91ÕNeÄè,JjéÐ\16YE\r\ry\1c\105\rrïªØÖBµÝæûç\86yÔW;¾\ eâáéP·y\9d\ 5ú÷ó\13ÌK\1a]\ f\931]ßLðy\88_\1exÝñ:ººÁ°é\fØ×       Ó©@'ýèÝ2×\ 5÷\85\8cÞ{ï¼ôíËû£i'\93u\ 6bY¦¨±i^e\18\ 4töê\fÿáCC\13.E=.\7f\\82·tÖ¶#¦\17½r¿\85² 8\f\87(îCGýNCí4+\8e+\8eø\18´ÚnµÍt\96н×úÝÃ\1d[nËsÑc@\1c*î    ·1
+ö¡\ 4N¿!\8a\9d³geÝ\ f\90»\8cmY\1f\ e\80à1ã\85\97±y·¤2\8fû      \83ÎCØY\10¢V28µöª8\88°P\8fh³8_O\agS̤BeP7z#Fû#¦¸ö+l\fù>¡\aW\aÕM¦\15£C§a\93\9Î\90\9dÕ°¾n\ 6Õ\93Ùî"ÒÍvÕc\ 5ë\fN[á¨\fC7îg°\96Ð\9f¾ÁDNí6.¯C\17äÙbK¼ì\84§7\8b#7\8fHIÒ\r¼µñ5\8eK!<k¾T\9aþæÕhvG?Õ±6ìl\ 1;£µLk\8cîÓ\7f\19\1d\eÅ;\v¥ÎZàÄÛÃÑ\1a\99à\v½\13â=\9dFzËÞ\15e~!\99 óK\87W¹h£M\13Q´AÏ\84ùUnRT\85÷H\19²<²\18 \8cVv±c!Ë\10á\8bÏ\92\89\96û·´ÓL\8c\97öÈÑ\e4\ 1Ù|Á§\8d0;4Èb«àtãìzÉ)­°DJ¦\a\1d\9b\9cW«¬\83\8a-T\17=\9d¬\13X\80´2Ê°\jh\85½+
+\e\85².z@yöqú
\8f\96¿\8fwÓz+[¹<w;\ 6(E\7f\12\82òöÐñêuÁ\1d\17M\81¬.Y\aÑ_«Èám§Y´\982}»X|\9a}ø0_,~\8d<?P\9fí        õ~¦ËÎ\92Ö2p_yèÀC\85ÇK\ 3ðǶ\¯,h\ 6\85.\96à-z\91\12µ®½«¶g@\1a\v8\8b\9fÅ\14¸3I{Â\8eÁ\17"ó:\19³"\18Âæ]fÑ[ª\8c\15°ä\9b²cE\ 5ð
+P`;Tk\rTã6"\96\19(  !úCe\82+4V\ 6À­sì\f\11\8c\9bº\ f\fF\83d\80׳7L®\87Û?ÞÝò´ø\f\11Ñ\9dK+¬7¥,<üT\7f0\9eàp\7f2\94W\9e\1fy\87»\9e\7oJã\e\85áö×É¿-\96t°endstream
+endobj
+1001 0 obj
+1535
+endobj
+1002 0 obj<</Type/Page/Parent 794 0 R/Contents 1003 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/Fc 12 0 R>>>>>>endobj
+1003 0 obj<</Length 1004 0 R/Filter/FlateDecode>>stream
+x\ 1\9dW]OÛJ\10}çW\8cªVM¥à|@\13àå
 
-\981F`^\96H>SÁGÇä\8eÜF`Y#\ 1;ä?\0¬B¼àv¨\8e§\17#87\fL\90]\94Ø\9e\8f«+_PÅ\84¾Á\12¤ìHÄX?¾¡\13\ 1Òá]
-\88=\86\1azDn*\ 1É{íI`É\bUqg¯å¬6ð\12z\8c\1d\18\ 4\8cjA\9d¬Ì\90!wÀgþòÌh×\98\92ñ\8fxE\84ÃIË#\9b\82£¸@2vù2H-[õñ\9fÌäãd\vÀz\ 1\15ö\89÷z)\84nm\eSuL\86¼\1fÛV\a\92\15BïøÌ\905l\16R\v\12{\ 1Ù\83\80\12mü0Ê\(:V4\18^\96\a2©ãü
-ø]Õ%\98s$aY\8e¢í»\9b+\ 4ª\ fE\ 3\8a\18e\11\88      }ò&\17\8bóÅ\aB\8b\0È_C\ e|+d饩o#±\15\r11²\v\84°\951\ 6n\ eÁ¸p-»\12&\88\1eÝ\19*,\e%\ 6\ 4?\9a\88¬-Ô®\90 t[;U¡\93#ÿ04²^\19ì°R+¬\82FÎd¦$ÄiÁ!\7f\ 4\18\ 3I:{hY¬\1a\18¹¼w½?@ãID\8dÉû\97o\99è"ÊvÐ\8du\1ed\1a¹\0mY\99|ØH+Kç\94Ò\96Yiýð\83ᦫ\8fx\16ª\14©*\19ô\1e£M\ 3\11\18\ 5zBxØ$\9a\8añ<\1cØfÇ®\11oéÄçZ\1f\98\ 3[µkÃ4\814\0-)¤âé­¸\ 1ß3äµ'-:\ 2´Ëª\8c\13Àm\14Ê~à@\e\1e\1d2Á!Ã)Ì/X\1dù_\b¸\b¦×H\ 2$ϳ\9d\vÖ\80\8e¾Ùt\19À\9exO\87\ß¼0b½\91ÒÐþâèÌío\v\81\ 5
-\ 4Åæ6\a\ 3ö ³Âhe}ëä<\ f\b\8a³'µ\e\9ex\81z\ 3»®·Å;øòA{ã1\90\8bc«4álÓV\952rßg©ëÜ,êA\91üþSj4J#8Ý÷ß®éòX\8d\9b\1aù«e¾\fâ
-Q7}ØÑ\a¹Ý\ 6Ì@bÒFå;\b\ 1úw\97o\96Ì !#ãVr\açraÂðm®ñ\92\86\84ãtl÷]ß\ 3\v<6HBØC\9f
-S\14¥\98ßò7\9d\14@c\99\1d\99<¹7PI\81ø\85i!X\90 ô\12ÜéýæÌÿ¦>ýÄ4ÈÕÈ°ÇË1stÎj\1f\f\80Ð9\b­ð¬   \1dÁs\13\15èÞKÇ\89vê_\ 4>~ÌG¹\9dúñ7`-\f\88#³Þ!\8f9Ó?\9c\80\11¯\b¨\16b\86
-h\11
-Cf(TÈåI\a0\11rGR¶â,Ÿó\93-ú¸3ë²ú\f\85ÆÌ>\8d/H¼\86ýór2Ãp>+ ½\96Ý?¾;'xß K\908£½tÎîN>\11?$Ãá±ïø\ 6J?z'vbÕé~÷>\fÔç·\84\95²ò\136ÔIî\8eo¤ÙÝUtw±ÆÛüê\82Ök<VóÉæúËÍ5}o\fϹtk²¶B6½,p4çÝöóËå\9c÷ÿß\17-¿q\7f÷\86]]®\92Ëõ\15þw\0\86\96+¶ÿéáì\9f³ÿ\0j"\871endstream
-endobj
-1072 0 obj<</Type/Page/Parent 1011 0 R/Contents 1073 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 467 0 R>>endobj
-1073 0 obj<</Filter/FlateDecode/Length 1983      >>stream
-x\ 1\8dXQsã6\ e~÷¯ÀôÉ;\13+¶ãØÎÍôas»¹vf³Û»¸³íL^h\89¶ÙH¤*Jq|¿þ>\80¢ä(¹ig³ND\91\0\b\0øÏÑ\8c¦ø7£Õ\9c®\96\94\16£i2Å
-\7fÌøã?ÿ\1aͦódJ×óU²¤\82f\8berÓ>åô0:\7fÆÛ\9b5v\85½ü\16\82h¾¼\96\93k\bl\1fºW×\8bd\r¡+Þ1\97\87øj±J\16´X¯ø\fþW\9av£ÛÍèònA³\19mv°z¹^Ñ&\13c§´IÇ÷\ fôÝØÌ\1d=¥¹Ñ¶öT¨\135^\93¶iu*k\9dQ©¼?º*ó¤<\1eª\9aÜ\8e\14¥\a\95çÚê½¾¬´/\9dÅ!ÕÔ\aH1©ª\8d³T¸Lç\1f6\7f\8c¦4\99]%sè\1e?\8e\94¨\84¾n¾Ü?Ï\1e?\90«HåÎê\vþ+͵ª¨Ö/5ùº2vïi\87eo\8a\9d)´U\1e\96½V\97ÐÏ8tpM\9eÑVãþ*7ÿÕÙ@\7f}P5\1dM} \98J\ f÷·TV®v©Ëe!^\96\fßÕ³\16÷¬a\116[]Ã\ fO¤q\1aKÆR\99+|\8aµ0²sÙ\ 5m\9b\9a¬«\aº·\ e\0\84yU¼ñW¥ÿltí\93öØ|\89\80ÂeßáÓ^xç\ 4Ä\ 31F¬à\88n\11²q¿\ 3"µÕrªÖ\156lO¢\14\9ba·?\13ÆÖ\1c\1d\1dÕÉÿ\83Õ\ 2Ò\93¨÷£¥ûO\v\16\90³Õ¿~ýù\9fß>}\8e\8f\9d·B¬\12Ú\1c \1d?OÖ\1d\85\ f\88\f¹Öå]Ú¢q²JÖ\9cK\8c\89ùrE¬½Çª¼ì@³\81\94N\17ħÎ"(\fÎÚQS\96¸U
-D\\90²Xbw\95*Ë8v\88\0\8eaël\ 1OÔÚ·\86\ 6«Ù^>3\b\96\82XË2\ 4,×á _üë¯_¾0ú+\95¹\88\ 2tú275\e\ 3°\16âÑë%m±ôéó\ 3\134¸èuR\ 3M?\14joÒ\1fh-:èYå\8df\v\19þÉkd\ 1Í \8e-\97l\80µôEÙ{eÿ¿cc\10ßñíd¾Nf74¹\9e\83Jàþß]\13ó¦Ò;\ 6»c\87\88\95¯¹­ÚÓ\98~iù\80>\a\8a@¦¿Þ*\([á%P\88¤JÍÈøéÛ÷Í7D\ fÄ\91
-Cpn\17\ e0Ît­Lî    ¬Á·3Öêjà&Î=&\84v9^ð\8cÃn®\91Ìz\ 2\90?\9b\94\11\93>Ñì\82Îv\0\8a\0\8e\87É\9e®\92\17\89]»@\v\90æ\9bãW\b\7f>ä0áÇ@\ 2Lq\f\8a\ e\9dCNú\98ç½Jl<3FRu\ag¸#_\1aüÙÙf\1d\81\12÷o|à\ 1v\a\ 6>#\9e¨\19\19\7f\82\ew
-\88\19\99ÒÈó\aõ\fþ\ 1~\18¥°+«\Y2Ò"Ë\15H\0áß\96Q°](Åd b\8eÛlJ\85±\r\83\12OÁܨ8²½P\17\aT\98GÕµ.J\14\19ÎZ\\97\1a$YV\19(@^Û\16\19¯yL¬ÓÙ\85\1c   W@rL´¯Õ67\1eÎ\e\80\85E\9fIk<_\rEK¥\ahK]y\1arX4=âJL¿7iå¼ÛÕ\9cð\88\87°Kôr\1ftF\81Ø\86\b°\1f±/F\8a=ÅZY?ÜÌvõÁ\e\18\1dCÙÒS¡\15`*\8e82§ñÙJï\r\ 4Ý\15*\88$\17ø0\1açÄ+\16N\11\97\v\1a\15å\83¢\87¥\89£ @f\88\fçY¨`¢UuWj\11Aça¬4èÊd XÈ\94\1d\12\99L¸j¥\v\87\93bpkNWpDæ\0$ÔÌÎs]9íü\1cyûÌ1P
-^\ 1ì\8d5µÎO"AÑÞ¹\8c\15_\88\81".\19(îãÐiè\94£.ú&=Ķh\b\8e\rB\112\97ãÚÅ\ 2\91\0'£ù\0º¥6I¿ *×\84º\ 4[}#|\11Û®\9b\97VE_ÆX"§\8bE|\87°æZ\13£\b=\0\17²¨\ 2L
-SK\9d\0FP\7f\84¿¥¹i\9d+\91\fIpÖa½\ eK¸ã\e¿¼\9bÒMh\1f'óEèHØ\ 4é     )×Ï¡Å\eÓ\8fm       \9f\87ícck4\87Ââç2fÓPuâ\15ÿ¦\88¾Ë\8eå¥o\16Ð^Î\97\Én;\ 6¤\aUlU\0$øµm\10$\85:Å­ÿZ8³Ûá¸Ü¹§¦ì6Æv\r\bWÜtrFå.UÃ\92àO\1eÜF*M\11k´pt«S\ 5MÜ1ýÖ\87\93\99;dgÑ=\83\83,>°\86âg!·³³k/\ 2ã1p/ïæmç4\8e7\18à¹\8b\99q\8f\93
-\1d#\14"f\16<¯ÑÝ\f\81ý\13l@6^ô(CE\96;\84\e\82ëw5N\17ê©c\98¼0§²w:»ßKU\8b:\91!\12L\89Ã\1e\88¯ÄÅ_u\ 3I\9f\19\88JKå\1c Õ\86¶Eö_\80ú]ÿÅ\fú;þ+\1a_sF{-ý\1dsp¡^LÑ\14d\9bbËVïúÜÕ@3\8a\EÇ\83I\ f!lË\18\ 2³IX\8c\98\ 2órtú.\1eÓ\11Ó&SÿÀFlc\13ÚË\7f{`h\85%Ð@f\ 2°¤ë\8cm\rÌ\93IîqüøA¼ÁN\ eFt\80\8a\ eésñ\1cB\90°\ e\99\14úQΠ     \8eöÐ4L\80ÖÃ\ 4\14ò(PfFÏ\93È®rE\17[\8evD\b÷W\18\0=ó4w»,=4\13øµÇCmÀ\83<K\84\94æqd Y\0R\94hEÄ9\18\a\8a¦\96\11\94á\1aÖbÓÚöü2( \8c
-_bøäæ\89\7f!yQ½\14b\\83ýámNv\9e\1e\1eÇ\8cÚ7­`ê\8a­±­.®|\8f\1f\86)µA¼¶èTÈ\95Òó2\863üÍÒñw(M]ááäx§ò\ 1P\18ä8s«Ö\ f8\r7f2(à\r2{è\95C¥¥   Ú\99}S\85\89¼tÞ\9b­Á°bàSÖ\15û\14øé\1dµ2\13^Þ­[\bÏ\96øva}EËå,\90øÃÇûÛ\8fôKåþ@ÛF\9f\14`7ÑÅÖLâ\81Éj.\93ÞU²H\b\1c
-_:0åî\1a+£@\98£\ eÜ
-;Ôó2w'|\ 3 \8d\fÇ
-+\98Æä±;\1aR_PÁÊ\16«E²Z®ÃH9¿æ¥Ï\9bÑ¿Gÿ\ 3.\ eÀ»endstream
-endobj
-1074 0 obj<</Type/Page/Parent 1011 0 R/Contents 1075 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 472 0 R>>endobj
-1075 0 obj<</Filter/FlateDecode/Length 1492      >>stream
-x\ 1ÅW]oÚH\14}ϯ¸Ê\13[\15\a\ 3\ 1²R\1f\92¦Ý\8dÔ\84îBT­´R4Ø\ 38µ=tf\fáßï¹3cÀN\1eV\95VÛ4\11à\99ûqî¹ç^~\9cÅÔÃOLã>\rF\94\14g½¨GÃËËhHÃÉ\18¯ûøÕ\92\96ü\0GùOÌ\7fþüíl8\88q,î\8fp¤ á¸\1f\8d»\9cfÎP\1c÷£    ?\eðA÷æð¨7`OM\1f7ó³\8bÏW\14\ fi¾DX£      ^¤Îi\8fæIg\10]FqD\8fFÒý\8c¾eeªv\86\1eæ$\f\89\92Deײ´Y"l¦J2Ro¥þeþ\f\9bìÝÛìöÇ°Ù\99¯3C\85´k\95RVnU¾\95\86p\9dD\9af|Ý\90\ f\96*ÏÕ.+W´\11\8aÔ\ 6WÜ3S,¢D\95KZf¹üÕ»êÑUíi\88¬á\8bÂ?Y&z¿±°cÌNéÔÐ\aúK\1a¾Ö£nÜ\ 3T'§\8dL*\9dÙ=\ e\1d3yã\m-\9cÂñó\aio§\12á>©åÓ×Û\8fç¯q\18y\1c$ª+ðkw\8avbïòÎRÆq¹ç¬wk $5)M¥²$¨B8l\19\90§\87\ð"Ó¸oh+ò,\r§#\9a\96\92/8lëD\aQ\9f]k¹É÷@r©tá+¶Ñj\v×)×\13`Ûº\ 4­Â\16Ò\18±r\15Ñ*Á\9b÷®\18Ê\85é\9c=W\ 6\91"<©5âNT*£à\1dluE\99£Ö OÙ5ðè\1d1#p\92ßpQ³U¥}\xÀÔX\8aÄâ\85°\84\90\ 1\8f\96Â0_f¢X\bÚey\8e\8d\8cÛ¥\12´P«Ê4\11­?<\1cæ<2ÏE-\vee]é¥ÈrD¦Ð\9fÏÒ\85æ°vÅiy~]*D\87\8eÁÿ\1c\84.\91çV\1e²\ få¯\e x¸¢\1eÀ\0ÆiDßÀ
-\90\80L\86\90\1cìuÈ-ç¹J¾\93ªP\91%|áF"µ\15h¡²*\16Ì,ô\ fRáº7;XX+\8b\8deôQ\ 2\87¬\96¦Ê-÷\1f<jbÓ°lÚÕ}\84D¸þ=©iËxªÀJ-\7fT\19\93ßå\ 2(\17.#\v¼\84Né±Ì^H$\89ªJ_t¦\ 1;fÆÁtxÔÊ7\ 1¬°³àà\90\14¬n´Ü¢£\10î\8a\99²Ø\93'+ÈT\9eJY\92g8æ³9\15®SZô\f+`?¢{ñ]\ 6¾  ¨X\8d\18tñÀÑT\15\0\9cãü·Zèt\10*êP\ 4÷\9b*ø?\88à1\857D\10rú}¥Uµaùsâ\84¸\ 1\80¿äÄï\8d[5_ë\86ú@ï^CTË$×½FãüÝ94sU\15\TÔ÷¼eéÜ\935\11|Ç8]À)ðA U\98C>.\96\19«\81,\98\fFC<ľÅ%Q
-&\rD\ 2\ 6ø&\8e\81\82ºî2P±Á¢\87\1dîPG\9dÂ\v\v\97cn\18}0ÊÐ9Ë^¿ü¬¡RJÌ'<~V0Î\8e\9b\13·Å¬\88æÜ\ fÙa\98\ 5\8dw\11BÍ=}\8c\e\91Ø3ºµ
-Oß²ý\1a\9cÊ°Ús\1437ÔÑ\0¥X!\1f°\14°\15"\ 1\ 4èÜf§¶ <ÍÏ\ 1tñ9       kAw\1cMb\8a\7f÷Gcj\12Á=?Dý _ì{BspD_²²z!³7Ð*\92/\98
-¶^\ 5.\83ù\ eaQp\14I©« ãøéáúþ\13u\9févz\7f}÷àÞz\8fÍ\90°ö¤\9d7âéö'Q|uÄñ¿Ö;¦§g\90U-X±Ìd+&oÅc¿L<ÁëR¬Qü\85äQs\94vh"\14\90±\vó¬Þän?\ 6\1eÕ·½\92\1cþ¼®z· \92!S%k^3\8c´\96¹\ 5éÄ\1aèV\17³\96\18á\9eõ¾&Xyëí±æÈ\85´É\85/©?So\98\1d\82&è}»\ 3¯\9b\93\16\8dåqcß\8fw·®Õj\18xÀ`\rcL=g\83Â\87ÖD\9fa\9e`Å°\0ò\18fk?×+êð\8a¼À\96Ü\ 2p\8aµx\9bÉ\9dûø°Õ»ûîV²\16\e\1eÔÎ6¼ý>ý6\9fB« S     ¯Æ¡y\8e{zc<\r\18¶§Ã\8cúÉõ<,c'Ôá½>\95\ 5Æ3/\ 5ØÄÀ"\8coLÛÐ\8d<±/\1a-¹À¨\ 5\92n\94\e»Ï\8f2!ÚjµãÂ\83\14 Ã±a]9\83púáÏ$\95Á oû&_ÝVµYÖû\85ÛhU\89u\17ñ¶ª\11¾\15àüa\88¸M\a9\81\b©ó<»¿!¿\e\9cöѱ\14\93@Ðx\84¯l\93\ 1\8d®À×´3»¾¿¹¦¯Z¹õðV%n`¹5\8e\83èÖÇ»ã¾\13\9a\9fý~5\1c\ f£ñh\82olpÚ\1f±íOó³?Îþ\ 1Ën\8c\94endstream
-endobj
-1076 0 obj<</Type/Page/Parent 1011 0 R/Contents 1077 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1077 0 obj<</Filter/FlateDecode/Length 1200      >>stream
-x\ 1\9dVÛnÛF\14|÷W\1cØ}p\81\90\94HE\97´)àÄNú\10KnÍ (â¢X\91+\93       ¹«p\97\92õ÷\9d½P\96\97Ø°-\98Üs\9933g¿\9dô©\87ï>\8dbJ\86\94Õ'½°G\83I\12\8ei0\1eás\8c\9f\86ÓÂ>H\ 6£ç\1fÄÉ \8c\9f;1\9a<=ð&=\89Þ\r¨ß§t\81äÃñ\88Ò\9c\90¸×£4;O\8bRQÍu!s*ÅJV+®\88åy©K)H.H\17¨GV\95\\97â\9e\96¬ax\9b7\8a´´ÏT=\ f3)\16´(+þêÇô\vÒõhâ²\ 5ñ \1c ßùÙ\19-+Î\14G{\vÞt\87oY=gtsù\96~\9d}Jg\94\15l\89àT1ó»\14dâõ(è÷Ð\98\v£MÁ\19
\99-q!\eª%@˹fe¥\ eN|¾¯ä\9cU\7f\1eü\9bü\17\17Y³Yjô¥ÔZ6¹¢×ô\a?\fÒ½­xÖ6¥Þà¥VñæHÌ\Ö\f¥Wò^\8a\7f\8e÷\131A³[ªø\8aW\ 6ì$¡®\1dtÙðLÖ5\17\8f¤\92Ê\9f}\8d£þ\9d¸\1f\ e\rV\9f§Wé\87ÙûÙôXïK¦\vt\12)YóuÁ\1a\1e\95"2S\8cÔFi^\1fÉÙp\96\93\14\95Aaã Ú%X\10Ûì\0\0pb\88f>vf\9e\r\80þJ\8c>\8aò\81\*bY&[¡Ip\8e\19à\9d\f\994Ïm\ 4βÂbþ\82\98¢5¯*ó×Ä6OºJ\13È\ 2\9d_ßÒ§Rär­h\9aF±az\8d·JÁCJ÷è¬tÓfº\ 5{,ÜßÚ²áyhÂEï&[Í\ 4ñر8       _\86\ fé#¦oIrй{íÂVºíI\17\80\r-\e¹*s\8eÖ\v@N9\92eZ6\eR\85l«|§çÃ:?\94¢ÝbeHÁD¾%©ï\1a\ 3$½Y\96\19³T2ºEÂ\8cç¦=\83\94ÅÓ\88\18¤óxûV\9fêµcü\99m\ 5~@\81¢h\ e\82Ì\99*(È)2=D§F\ae~JAMÝçn\1a\8f¡¬Èò\7f{\8fèJ\18õßxI¾¢\9f\97ë_|Ð\8eÜ\8fAá?>nÀ¾?ôÁ¸\r\8bÜ°ã\90öèD×\8eItá\18{\9c\ 5`\1aìÎL¥á\8eXN5ë\82\v\aÒ\ 1¿ÜP\99\91·\rx©n\8c½5!ýþÄ+\ 3xeà¼\12\90ö\fصÁï\98ì\82U(Ø\8c6ç«H´ÐØ©×Í_\ 2®\7fzw÷C\97ñØl\83ÿsfot\86@{ÙL*;\16,,³¹\82Än\92$\1c\86ôV\8a¬j\15VÔ3ø\8f\9cÿ9\88½æ\fÀ\8b\8a?\94ó\8acÝ1\183LF.y\ 3\8b\ 1þah\ 1ÃV\86\7fu*¾Õ\90YÀ*)8\81æ+\902 ©$µäY    \95\810Ec[\98£\84è\8cÛA`\88îükÏ\vTH;AM\87\81Ùn~~.\87\ 2\13h:K·v!¸¶\8ei\17\8a-¤Ì¸zaÛ0röþb\r\ em\19·\ 1«\9céú²]Änx>\1d\9a\a\87êGê¹\ 4óVcób\ 1Àækö\95Û`Öïým`G\ fîĺ(áÎ\80¡\92Æ|Ð:p8H¶sÈ4£43Û;rõy²fÞq\ 3Ü{ú\94\1cïâáÈÞ\ 3\1e½Ö>\ f^ÆîRp!\ e$\9a\84\ fÑ\07©íºöÒªy=\87¬\1c±ö\93á.\94\9f\1fÍÔ\r\b\99X\ 5o\12(~\ 5\84¥±Ò\9dΦ)u¹/Ý%\0DíÔü_Ò\8e=\ 2ýd\1c\8e'  \rã\89#ãíÅõ\9b\vºiä\17¬\fº\94Y\8b{\81ÃÐÄ\rúC\\1fÇ \ 5£Ø¶âÌËèdQÞ\9b\ 5àÔ`\8c\ 6\98\8fÐØ\14ö\ 6åf`Â\fF\83p4\1cCl@#\1e\99\7f]¥'¿\9dü\rï¯$yendstream
-endobj
-1078 0 obj<</Type/Page/Parent 1011 0 R/Contents 1079 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1079 0 obj<</Filter/FlateDecode/Length 1451      >>stream
-x\ 1\95W]oÛ6\14}ϯ¸@6Ì\ 5Zù#n\92\16ØCÚµO+Ð!Þ[\80\8c\96h\8b\8bDºü\88ãþú\9dKJ\96¬¨[¦\ 2ICñ~\9cÃs量\9dÍi\86\7fsºZÐÅ%åõÙ\87ÕÙôó;ZÌhµÁ\9bË«kZ\154Ëf3¬ä\93\8f¥Øyii\99ÑG£7j\e¬Ò[úzó\856ÆR¡\9c·j\1d¼,\b?_­þ>\9bÑ\9bÅ\12>&¹ÔÞ\8aª:P-´Øb\87\b¾Ä¢Ê\85WFóf\ e=¿J¡ß\,³\ 5\e.³yF·¢^\v\12ºàXië\92æófëâ*»ä­7¤C½F~fC\7fjõDî༬\1dÝMäö=Ý\ 6M·¦\12V¹»W¯I8Ú˪âßH\84\9eð|¸ý\8d6¢VÈ\92cý®txzMÚì)xU©ï\92w6°æ\17)¿¯UØnź\92ts\ 2\88¾\98"T\92\83#ç»Wp\9cÃ\87?\907´³æQ\15\92\80\aä\ 57ƪï\91\96\98\87\95Î\ 4\9b\ f\ 6\94\9a\8a\9c´\8f*\97.£¯Vá\18à\9f\ 1)~[\84\9cÙeF\90\ 5\9cS!såx        Û\82C
-\1aYàP5â=\ 2`2NÌÑN8·7¶\18`.\84\17k\ 1ã»I:\f\88(\1eÆd*}>\8dVÑfú¹=¦ \18Ø\9bP\15då· l¤2ñ\10³A\82½4\Ô\13³\ 3¦¶Và\f})ü\917'sHÏ\1f\ 6yuLÜ\86¼\ 4ؼ4`¦    ¬ô£©\01\92?\1a\14à\1d\e\1e\83
-÷>\ 1\ 2¤ÊlU£Ö#¶×ÃM£\f\85ìö£®P5­¼ÀgÖ \\f±\94¸Ü\1a\ 19`¬e^
-­\\9d(B\11B\18Zæ>ê\1a\87Ô\92ÕÁÚXû%\ 5]H[\1d\ 3&O\8bszªI¥7V Ô¡­`%d\87\84\94#\84\8d-\ 1µ-\15¼C\89¥5a[\92Ñ\926
-%\92x\1aª¥ÎØ4½k9íQp7éU-ô½>\90,\94çΣt¡PHATÑ\7f£\12\ 1uU\ 6}\ 5\99(ýàC\85\ ey^\81 \8d©*³\8f¡Àµ&ù$êÝ¿\0)¦cú8R\93j\9a©ÈhU\82³Ö_)Ð\10!w³ãru´\962*£GCй©ktLFåø0×h;\a´'\8fB\8e\1d\b­Lyr^ä\ f\8eûì\81\ 33UÉ%ztl9      \10\94\8e¦á6¡Â.\ 6Õ4\8a\81\12X&\11\13Gd\83\8c>9Ç\8d;vsNº\17$\aGkÉ\93\80\13Â\18à\14bÖÌ!|Õd\82\aì\î|\94`\ e\ f87s*\8d\1eî\9d¨ïwûb\9d¹fO+\91I<°éç\19½k\aÁ2UÈùÏ\90ä\9by6k±Ì2\1ed\93s\90.£\[­v\a\12;\ e\83ý+¢ý¥m«C\17\83¿¹2¨÷4Ý­h\978ûX\80ÒûC\ 3\81Á5\19½Ä\\9b\98Ñsãó8+ÚHÔvÖ\93Ø\ 5\8e)ìþÛ6      \ fuÔ<\9cw-TõÜò%)7çE\ eºÆô¬\8b·\ 3Ú\90z\9e\9b }\13.Òæ\94\97½ð^Õr$ü\89Ý8è\9e\z\;\88\97\a\8c\1dÕ¸å9Äз\1d#«BGÄ9=Oøü8ESà±°¹EÉV\8a5\8eSôöðëÅ\80°v\12¿ ù\ 1ëÝ\f\ 6\17\8bxQâ\86\8d²3{\17¯\0\98½Vî*\91Ç&R§{\v7(Ã÷\83G¨ ¾\0u\82\7fÍý@é¼
-\85l\86äóBü\89¦k¥§(ð)ÐMÛIô\f[}\ f9po\ 1~<,¾\8dgÕ¶pÓZ¥jåÛM±¯÷\8e\97\8dt¾»g}FK^°ÀàÝé\1a&W\17jÌKÿ4b.[\8c±~6ì¹Âe76ò\98ä\b¢®l\e\18o\1e:PìÅs\13=.\8dx)¤îÞ³\85r.pY´ÌðZS¨ÍÒ\88\97\9d´`®±b\8b~Kb³\98Kª·\1f{9ö\92Ö¢Ó|2\8a¹<\94¦Æ|¶1ÚX.©\97w\16®Ä5üxª)\97\80ë{\a\8bÔ\8fÝ{\8e[\15¢\7fD\11Qm|Ñí\1añbE¡B\e:òR¯¹Ò\8eF¼Æ¹°>\13\7f#^ö¥\94Ü(#¤Î¢Õa\87è>Ý\v±uÄ\v.ã6N¹\96ݽ°ºõÚ®Å\\9afÔ¸\19©o\9erÝÍ¥½cð'\1a\ f¸ã4ç\8buSùøNáWüA\80nÀÿå\fy¶6\17{\86Õk\8e]Р  ¥\86AûRáê\f\ fÑU2¿î>Ò..ÓGÚÿû\86¤\97|7.¯\96ÙÕå5>X1ã\17×\1cúÓêì\8f³\7f\0%\9c\92Ëendstream
-endobj
-1080 0 obj<</Type/Page/Parent 1011 0 R/Contents 1081 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 475 0 R>>endobj
-1081 0 obj<</Filter/FlateDecode/Length 1651      >>stream
-x\ 1ÕXmoÛ6\10þ\9e_qÀ0Ô\ 3b9v\9c8)°\ f\ e\ 5\96¡[¼o\ 56Z¢,¶\92¨\92\94\1dï×ï9R²d9)¼\ e\ 3\ 4    \12ëx¼\97çî\9eÓç³)]à{J\8b\19]^S\\9c]Døwz\eÍi~³Àß3ü\18I)?\80(ÿ\9aò¯_\7f<\9b_GSº\9aC  éÕEt\19þÉéñìÍòlòv\ eE´L¡ÿúfAËÄ\9f¾ e<²;ëdA\95°v«MB\89pb%¬¤\ f£ï\96\1fq\94mࣣ\89tñÄË%áI«ttNÏ\89ÚL$z{\92èÚèº\1aH~ø\8e¶Êeä2I\85Nê\\1e^rAãée4\833£J\14¿ÛbŶEV\ fôÐ6SqFµ\95Öëz\14ÅJtn\86§±.\9dPe\90xP±ÑV§\8e\1eîç$ËØì*'\93}\8cø\82Þí\99°\99´\11-3e;½øÛ:mpL\95\884GQª­\99ä:\16ùIJQ\93ʨ\8dprÒø²=\8aó\8b\11ð¹      J^<LÚ°-\87:BVýÉ(yùbJd%ËD\95kÒe\17ÆA$TQå²\90\b¥S\10KqáN×\86~+ÕÓä'UÖO\14àÆÁ\92CK¾\9cÅ\0\ 1BX+£7*A`W;
-ÉÜHcqáÀ\9aY4CQÀ\86\1c15\11½s\14\8b\92V\92b]T*\ f\1al%c\95îØ3ä(\ 4çª\85<\8dÇ\8cÁqÏ´ ±\87\8a}µ@\99,ÉÔeÉ\9a¼Y¯l\90m\v¨\a\19À-UëÚ4÷uÚllTå"z\v³\v \a     C\14\8b\10Ï&ò\87Zûà\1fÚ\16bvNVJ\9f³DÇu\97\1e`aïñ36Zd.\96(ø}m\rÕ'ÊÈ\18\18ß\91N;LP8H\89²Î¨UÍá\89Z\9boC\13\1aÏæèj¨Üo¾}\7f÷0F\17c\ 1\ eÐEtã?÷\0Á3ä*\84ª\81\14Òæq\ 5Ëé\8f\¯Uù
\99\8d\8a},û*\ 6*E\8dfÒû2òs\r\a\92ö£\9e£h"TêDæb7T\12Ǻ.]{\ 6íø+\94 \131\ÿ\99\92}ÃnÔ\9cnI\7f\1a\8c\1cn®ÆTç¹Þ2zQc\1cÞ/D_ \17\1a§â:\17\86\8e\v;\91©¨s\94\9bFËð­\80»o\8b\81v\12\1d´ïj\9b¬\8e{÷¿\84\eßî¾\ 27\a1\9eäj5±2®\8dr;_&\8d\ f\88ä§\16A\14æ \89\1a±x\19N'êöZZÕ\ 3m=\\9d¨íy\90÷ u¢\9eÆÅ"¹
-In\e\1aÊ1\0ì]\18\1a\1dÆä\93àa\11Ú\12:°/\bLR´gôÑB$x¤yh{\89ýLëæ«Ü@\8e'\fÈ\8a\8aɧ´\8dGC\v¸â1\8cTì{GD\8f5x\0F\7f{\1dJ9OHä¨v\f\ 5\7f'+dì\a\9aãfmDA¢Lhë¥]V[\1cA¥°ÜàÂÎÌ6\84¨$¯<ÎD¹F¯©m3h\ 67ü¿\80ÞøyR\9b<\11Aÿ-\\1f;Hø\88GÑ÷\1dÓ
-|)âO_@ýÏÚÉ×¾\8fzÄ0#\14ñ'F\0\ 6æ!:©\90\8c\11e\v0I0\15ô`\ fÌJcV¬¸P´\87Ì!!X1i\95\9e&öØ\ 5S\16\fwL\18\rqr\19\1atZ{\80\97òɵ\8f\ 2\11ðÂÞÀ\88Þç\92W\0#S°ÖæÄ!y@¡\fÀï\99^o,4\8bÅ3\9c0\910;·P¿\16ÆsJ.¹@ÄPʱ¨ÄJå\18\1c\b\14;áMT~\84ô\1c\95åF\19]2¥AuëB6³\88ïÜó\9c6\90\815zçCºZÎ\13\18\14gæx\0µ!r\99p¡ì}õ\ f\\1f¤²)ù\96ãù\r@\10W>ò\18ÃX#rJÁd^¦Á/Y#]¦\13â>iÙ]\10ß\1dúÙ\ 68\e\82 ´Z\10ã\96°s\9fäÁ\ eGÔÞ\17îwHµB\9aER(à\ fÆyÆFwà´\0\12{\r\1aÉ@\16r\95rKf(\9d\13z°¿?´ïAP
\897.\83V>ÖijAC5¯\ 3h´;Ú
-\90(\9e\ 1\80¯O        'ù\ba\94Ö\ 6Ð0\94ɼJkØѱá¦cÞÒ\14û,/¶ãË\86SÎÁûé¾e\9fhºw\as $¿?¡\16Ñ\9e\ 4    ëj'û±@\80
-!0RäêOÐ$£\v\86\92\91\8bub¥Ê\86£§\7fk­9\ fÖt\v\a\b\18t%G\9b\1f\8f CÙ^\1d\18»+ãC¿FØßAûùÃÁÛ\ 2³¦\11eÎU¯'\13\7f0ò³3Òf=9\14÷\aYܯâ\88Á~î\91D£XåÊf\f¾\9bµÀÎwHp)0ìλ\15à\b\9d\18ì&¼K8xçàÑÉKZ;\94!ç÷<\ 6!CäÃH®_\87*\87Qb+°"5C\1a\85\89)-ª*o\ 6\92{\9fºw\ 5Â\18\1eÅÞn¾)\13\e\1e÷-\9b\85ù\15ª   N\89d\ 3\90Â\11ë÷EÜ\ 4\ eÀ\ 5Á)gb\82ÖÔ½)¸\8b\9d\82¢ûv%
-Ù¸i\16Éé5ÞßÜ\Òõí4ì=\8fw\ foîè½Ñ\1f±AÑ}\7f\93ãöÀx1Ã[\9adt\ 2¦ç\8by´¸¾A%@~vËj~X\9eýrö\17¿3¿?endstream
-endobj
-1082 0 obj<</Type/Page/Parent 1011 0 R/Contents 1083 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 480 0 R>>endobj
-1083 0 obj<</Filter/FlateDecode/Length 775       >>stream
-x\ 1\8dTM\8fÛ6\10½ûWÌ­^ R¬\8f\95¼)zðf\9b\9e¶Hk\ 1¹ì\85\96F\16\13\8atIj]ÿû>JvVë\r\8aÀ° j¾Þ¼yÃ\7f\16        ­ðK¨L)+¨î\17«xEEYÄ)åë\12ï)þ\96©\r\ 6¸\86G\12\1e\7fÿ±H\8a,ΩHs¸ô\94À½8\9f\14m\17ósOéê.ÎfÖù\19Öb\15ßÍ­E\11\97t\9bçñ\1a\99³U\8a:Ó)d\9e\9f\ 5\9e¹uv\86\15\99_YggXËòUæà\9b¯Ó·ÍßW\8b÷\9frJ\12ªZðU¬Kª\9a\91\8d\15UõrËöYÖLOËÍÃöé\86¤&g¨\15\96\84\ 3{ÍP{i4\99\96\8e²a\12\96\ 5iöGc¿\91\18|ÇÚËZ\8c\8a\95u|S}EÉ;JP)\94\8c²\1cP«f\99ÇYL\9f7\8fôÑèVî\a\85\92ý.®ñq
-}A\e¥a2\b­:Æ(¥#\ 1,\87±Ü,\8c\147!újÖvOK2;>ÑAôèÇy+Ç\8eÜkç1,8Ç\84\1a¥ÌQê}(ÙZÓ\13:%£#%5SÇê\0\17\8b\8frÊCQ\92\81z\0}\ 1·ý²©~\1d«P\94\16\13\ 3\17mE¿\13Pg\1a\92\87®\ 3\15\10k±S<Rä\86ÃÁX\8f¹È\98c\9a\88\81\80Ç1.£è(}\17¡§ÉpalùtónD\85v­èÙ³ÅÜ\94
-e¼5ê\fç\ 2öØ1ú²\84V´ñg`®3\83j&Ò0¬_Ày]\9bA{pß\90\82 z¡Å\9e{\8c\9f\1ai\19\9c\9bÈk¸\15\83ò´ãN<Kc¯\8a¢i´:¸©Ï@c­\18zóü/J¼\96\94Ñê4\96E\84Ük\ 3\9a\84Æ\973 Ä¾Å\13Ó\9fÆ\83ÎNø«Ê\13ñB\1dÅÉ\9dÓ¹\91ì\0âª2Ô\15F^\và4£.\7f¤,Öµ=\1d<Øv\ e+Ñ8ú\8dNüÿÚÂ\ 69\10\18hx\v1lGo\9aA1¤!t\98ÊE   #\9c.\b]ïù=¤|0\1aà®p÷\wBK×cK¹á&,t\88\0h¿7ó¢ØíãýwüPàØ\10&<®1\96÷"Ý\87\1f&ÁÝ^\94øãå\ 2\rÚL\9eë³gRàN^g\94¦á\ 2Zn7\8f÷\eúlÍWh\87\1eL=\ 4-\8d\17B\88\8b.îQ\99â\9eúÙ»#/ó¸,Ö¸t\10\92­B¦ß«Å_\8bÿ\0]®ÌFendstream
-endobj
-1084 0 obj<</Type/Page/Parent 1011 0 R/Contents 1085 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 487 0 R>>endobj
-1085 0 obj<</Filter/FlateDecode/Length 1435      >>stream
-x\ 1­W]\8fÚF\14}çW\)\ f%\12x1ß\e)\95v\93Òä!ªÚ¥\8aªÒ\87±=À$ö\f\9d±!üû\9e;c\ep\92ª+\95\95@öܹßçÜ»\7f÷b\1aá/¦Å\98&sJ\8bÞ(\1aá\r\7fÅüõÛÏü\86f³8\9aSAÓI4­\1frzê]=\16\14Çq4»:\1c/&QLÓÅ\18W
-\9a\8cæí\13_½~Æét\16-jÙpº\8c\964\9dÝGc¾;]BGxò§WÏ8]Æ7§\8fëÞÝê\9eÆ#Zo\11Û|±¤uæCÂ\9b´ÿf/\ e¥´4\8bè\9dq¥Ò;\12ôA¥Ö8³-é­r¥UIUÊ\8cV*\97\9fz#\1a\8e§PÒ\7f:»R\16TZ)Éhz\12E"X\80íÅ\8b`o8\99Âi\bÏ¢8¢÷\1aꪴTF» 9E¢jÉñ\ 2I\85äz/¿²Kµ­MßXz»u\9b\97t°æ¨2éào!\85vd¶ääAXá£(¡%7;\95\8a\9c\8eJ\9eøx\8b\b ¯3Ê\94\95ii¬\92Þ\ f\84\14O\82\9få^\94T9i\1d´IÚZ\83\b¡K¤e\ 5U\87ýÙy\9d¹Ia\bq°b\b8IV:SÙ\14&\90\r¾£ey2ö3â.Iä¹99ÚÂÿ½Úí¥­SÙØ\15G¡r\91¨\\95ç\ 1¹Â\18h°äà¤ØI\92_\ e\88\11ö\ 6\88Jd\94\88\94Ë%Ë4¢\15Ô\16ÆJR\1a\16
\19\89ÄT(áÖ\ràÚ\16ÊJã\8dÞö´Ý¡-Úð/¥ÏLZ\15R\97^×í=\ f\bÜëGu\10ã9zÎ\97N9j.²Ï¹PÈÐÞ\9c`\e?\ ey`\87Ú\9e\11ô»V_¨\10é^iI\9b\a\ 2Cq\12\88\15<\80¸¡Ä"}\12\1c¢î$Ï·ÞWÎ\18\92Z$¹¤§\ f\8fÃD8ôðÛÕ\93/\81¿0 Ôè­ÚU\9c·\92NªÜû²±ò»Õ¸îÌþpÈ'ÃÂeÛNÓöÉ\1c¸\a"úE§\92\92Jåå\0\11¶H¸J,:ê\88\12¤BS"\11p\86\96ò©¨\ f\923ú­l[w\97\e\94\98\12cr47Ýæßs\11ò\7fådHnëã\85·\9aZÝ­\1a¨õ\89ARH\86½
-\8d\1a"\ 6Éy,ö]\91D\9c\9aðº¹w\15\f\ 3)¢?LE\0 ÚiQr4nÏ5\13\8cH®±E\v\87jù¬\86Ó\\1eåsÂò\11yU·)ø×°"zh=ð×.ýÝ\0ÿÜ2\96Ï\9cóò¹Ò\9f]\93\13Æ\91ç\94s\91\98\14N=?\1c\8cÒ%we\rR_[\17`(¿\88â\90KôAÇ´»Vä+z·jSþ©Ò\9e\16\87\88_Õ¸\8f7\e\9f·ø¶\14ýÆÉ\90ÔKP`)¤\1f\80a\ eE\r\1aµ\r6\1a¶ù¸\97\9a\ 5:8\13%\býà#\13)\88,(j\94ø\f\f\99¸ÒV\ 6ÃÀ\15RÁ&\e¶jÈ\11\80ö\1d¦º,\9b\ 2\8d\ 3ÚàÓ\rtó²ñµ!\15\8e\83g\8c§U\ f-bV\rx\ 5­~#\ e\8e¹Ñ³÷G¥3¦Þû\19»9\1e\8dF]\vï¤\95?ð`\0eùâ\85Y\12ÐX\1dê~næ\\8d\95\11íuq!ï\9b16\r\82Ö\9c\91\1aJ~ö¼j:b\84q\ eºü3 ü¯Îkª?\18\1f\892\8e4ÀJ¯ééáÃãÃwD=µ\ 6¬\10DÏíX\eó¦Â¦²­û\9e\9d\83\0ñ½¦;ðµ±å\1d$\19ºß±t\ 1äÅÎ\85\11\93y\bî} \96\8eÖvò\9eé\84ìH0Ä\8105        V\e\84u`Õ\9d¦ìØ\ 59°Ø4
-{ý"\9cÆ5\95M°HÍ0ß\90\814ûV\84\17Eàû_µa¦é@q\9d\boÝ{®ÖÂd´\98ÍþOWsMCG7´òà\91Çtýà\93^¯m\r\e=Ïé\eý\1e\13\8f­úA\0É\9bö\857\97\84\1c5\83¥k\8eç\8aÛ\9b\9a\ 6an9H[(Ç+PXá\90\7f,i{\85öñ\vØUg\81\ 5ý"{áA?\8b\\95ò\80Ç~gt~f\1f®FZ;ȲzûãI\9dZ\89Ñ6À\94Ë1.É/Y\99Ú\9e\ 5$ø©\80\81\93;CÚ@È\e\0×ó\81\87.\16É\10\fæ>èªc\17[¡´L\87\11ø\ 2ÛS®
-\15v.\90\11¶oÄ\80ÍI\1c±Åð~Mâh\14øÖ\9e}\84`?Î\rßÇ2S$
-£Øg\b\97v\0\17båóÖ\97\9a­\96\97­{2ap<óß\80f\1do(±]x¦\8b\98/\ 3â&~jý´îýÚû\a\ 2þ
-=endstream
-endobj
-1086 0 obj<</Type/Page/Parent 1011 0 R/Contents 1087 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1087 0 obj<</Filter/FlateDecode/Length 683       >>stream
-x\ 1u\94AoÛ0\f\85ïù\15¼-\ 5j7¶³Ø=¶ërÛ°¡\19vÉE\91\98Zm,y\92\Ãÿ~O¶ÓmA\97 \80a\89äãÇÇüZd´Â7£2§bC²Y¬Ò\15mò"]Óº*ñ\9cãç\98\8eãÁÇ,OóË\83ûÝâf»¦,£Ý\11¹6UI;EȳZÑN.·Ú\88Ói Ï\81º\96BÍä\87æ`OZÒI\9b\17OÁRkµ        ñ!\1e\e\ e½u/äkáØÓ`;ê\85       ×$\8c"\1f\84\vô(\9a\83H¯vÏ\8b\15\ 6jwjùóód\r=\1c}"z\ 4\93<i6Á\93\14\86\8cíéàlïy¬\82K\14\1cs\f\88\94Pé^Ù\91\b´ÇÇÇ2û½:ú\94î¤dïµy\9aTϵ³\ 2@P;v"Ⱥñð@ûe_kY\93h[\16HçIiÇ2X§ÑÑÜç$n\7fEA¼àm7Ê\9fî\81×| \19\9cm\9d\16\ 1Ü& \93à\v\ 1\91ÉÍö\96\89ãH\8al¢ó1Íð¥¯6°\8f±\7ff\86Á'y\1cÚò§6
-\80Þ°\19f\15\85\1c\18\1e8X\84*ÒG\12Ô:~Õ¶óÐÙØÎÄ÷Æ\9a\ 4 &\91¤=5B1®Æw\ e¡\11Ϋ\96\e´½\0\b\ 1ä{1Ä`\14\85#\9cU\9d\8cI\f÷sâè\81\ 6¼HÃ/\18Û9ýܸ\9c}\98\94i\95Ñy:û|SÒ¿M\8fçoÖùÔ9\a£Dì5;þàQ\13Þ\vNË GÞpDãÇþ\86&\ e\9b\8ch04_Ûî¤\b\ e\8f\90N¶g'\85çwÕ`\1dÔò¿RÎZ·àäYvN\87\81Úεֳ¿\9ez\9d=4\90\80,8\11¾\8a\f&¼ÇñùálëYY-^añÞ\0s­Û¸B\17\ 3hÙ5\1aƶ\ 6Ý`G}\Btk\rh(öúÉÀ{j¶g\¤Æ*}\1cI]n²\9eVéìõá]\fçFÿ"QÍSË\8a*­n\vʪ"­"­Ç»/÷wôÍÙg,\ f=XÙ5\18\93\883\89m$Ù\ 6ÿQUAI\99\8ft/M¾.×i¹©°\aHVä1æónñ}ñ\eÆâ\8a\87endstream
-endobj
-1088 0 obj<</Type/Page/Parent 1011 0 R/Contents 1089 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 490 0 R>>endobj
-1089 0 obj<</Filter/FlateDecode/Length 1723      >>stream
-x\ 1\95WMoÛ8\10½ûW\frr\81Dñ×ÚéÞÒ é\ 6(Ònã¶{È\85\96h\8b[\8aTI)^ÿû}CJ\96¬$\v,\8a\1a±EÍç{o\86¿FS\9aàß\94V3\9a/)-F\93d\82_øcÊ\1f_?\8efËUò\9e\16ï§É\92
-\9a\92UóMÓã¨ÿ½ ùt\91L{Oûßñt¹<Zâwá\86\16Ë+Ø]Àê\84føï$mÃ\83ù\ 4\ 1\f\1f|X\8f.ïÞÓlBë-â^®®h\9d\85pñK:¾ÉEYIGË\84¾=ÜÿE_¤+\94÷Ê\1aú *OÂdôC\99Ìî==¬ß­ÿ\1eMèb¶\80\8dñu\9aJïéÆ\9aÊYM\9f\94¯<\1f`wÓUtw1_$3>¼L¦     }Wr¯Ì.\18Msavü%¸-\8fn=Õ\9e\7f®rÙs8I\82K/ÓÚ©ê@\99\12Úî\1aw\v\9aN\e\15J\ 3w\ frOÊ\ 4#\8f¢Ø\b.\14L8©¥ð\92\94\ f\8fÄFi¶¶µ®\97$¥ZI\83Ü+\8bX$\9fT\8e\8c¨Ô³¤c\ 4^V\15â\f! $ÓyÌ3\ 6F\eû\ f¿þ\8c\84\85ÍÔö\10\9cÖ&\93N\1f^K=ië»\8cé>Ø\8aÝ\8b
-\1f\b¹\r\17\7f¦ÂÉm­ÉX<³\94Ú¢t\16\8d\vÑvAÚmp\19J\9c[_Q,\ 6\f¸Ú\18\ eÁ\9aó\10 ¯\94Ö\8dû6\17»\91\axÕ:\18Ù*-©ë\13,hÉeDt¢±+²B\19ÀÀ\89
-\15M\85A$Õ0©{Ó\9c\8e-a\80\89\8dEi¹ã\99Ü\8aZWô,t-©        ¿\14N\14\92Q\1a\ 2\9bÛÑåݬAÀ\98\f¢I5ùº,­«NÏ\a\8e\86ó-bÆ\94\vO\e)\r\ 5\8c¶¨#¿vy\a>·°j+²\15ÚËø´3\81ú\9f¾0®\=<uNÞR!\8c*k\r$\81^H®«¦\ f\90¬\9dA\ 4\ 1Âc%Bõ\86\8c
-\X&³\84þ°û#ÎB\83\8eø\84\95¶->\aZN£f\127T¹CÂ\80\0ÈF\vÈG\ 4\ 5:´¼À×ô'íU\95\87þ8µË+*,óbSW\15ç\ 1G\ 6\1cbx ë\99r2Eû\ fÌ¿6\ 2¼`*\99q\f}®8f\94\ 6\91ÐZ¼úíá\86JQå     ýÈÑ\11ÆC!MM¥-ýE]\9esl\b\ 6\ eñ(æ³<6þ\8b³(g¥ä@\14Æ\ 4.#\9a@"\ 4m\11tÑ"\8bÍ·øl{¼fªm\1cs\9bê2Da¬+\84\8e)\82g\8d\9fF\84\98ëç\\8cX¥¾Ü\ 4ÖîA,À\f\99
-2\90\83JlÀ)\e%nP\91Ê\96\0\89û\19Kuy×¥÷Ø(ßi\eÇ Ýt5AÜÁ8\18u°5Â\81c/\99X\ e\9f±]þüEá:é\1d\18\7fqôºÎ\14\8bÞð\1c+ÈÐìç½\91Îçª\1c\1c~Yî\17­|ÃM\v¸\90W*\18\82\12¸\ 4v\80\1c\10T` \89\9d¤k(ý¯Zz`\8e\fØį¨\ fëe.uÆ\fc|E´\83B\1ce\ f\9a¢,¥p¤¢~Â\15þ\8eoó[ Êu_êÎ\19½¢ÅÃ>WiÎÇ\150\ f±Ï\98¡PQP\15\81\9e¼\18\9edC^\88¦Ì!  Ð       (\8dÓHD\b\ e¢Â ÜEÙ\80\96½\16^B\ 1ÓÍh
-y\98\8bmmRÖ!1TýÀõ\96¸A:"wð^¥
-\89q\11½X£\ f<\1fy\fEl\9d³÷Øîß\8e¼¼\8eé]Þu\82Ù\bGè#7\ 43Ý!E\98kªD\1aC\ 4\1c\1d4\85Û\0ß\16\82͸6ÿ¥\8dónÛ\88Êô:\1c{:\18\88\14Gâky\9c\1d\ 1}6@t\8bËN3\8eP\bk\80Ô\9aÍ\ 6\96ìÞÄ\ 2î ~&t\94\e\ 4ñä\10\a)\e\f¾HdäÜ\8cCl+\ 5ý~ZgΣY\1aÎ\1eo¿~¿ýúô\14Pû4þÄRÃv\9eÞ\r"ï½\ 4ÁÅ\1a\19m\1e\87i44Ì\96\1c\90Õ\87ûÏ\8fÁr\eYÔ>téYºó¡5\ eç\r[!Ò\90j\7fa        ¿îó!5\8fõã¾Æåe\10÷IÎo¸Ì¤O\9d*ãNW±Ú\93Ê\0Bliü7gØÔ/\8a?À¹Å\10Ë\9a­\92­öäâãí\rJ±U¬,ý\14JáýÞº\8c2\ 1eÆæùôîD±_°åFÛ\97\v\17\0\1fZ\107%4!Ò¹\95Ó¶û÷Q±NW¦Þ\82ôr?ê3\13f±±1ÅbÙÚ\15hüúâÓNé\8eaG¬ú\1c}j¥\ 2zÙu¿\95\86^ùÎn\ 1\98\835r\0Ðñ0;Ð$\ 6Ö\1a\19ÓZü\94ôùuv\8f[j\1e¥&
-\fS\11\95/ô:p\8f§Ul\1fê\10rÂ!\9cu^ê-=\8dÃúÑ(\84\8a»e·ø\a\17\99ò¥\16бv\16°\0ðr®\ 5\16ã\80«f\ f    àâ8°\9aõ\ 4ð¨åð\1cX¶nG\14¶iÖÊM(@¯v\ 1\95\f\ 6ø\10\1eë\11ßgÂî\11¸
-\8fÇË\16Û<ɵ\1d)Øó»I \10\89k*¶8¾>\84] çV<\v¥Å\86w>\9e\ 31ÜØ\9bniqÖ\862õ!Æ\89't\8d+\f/.M5C°\rÌÃdçË&\e\15Ø\r\8b2ÞqøÂ\18o    §\19\f¸Ø6\8eSm&K¤rS[Låam»=\8dK\fÂ6\eoÔ³Ð1®$¦_3r®º«Á\9c/ã¸qÞü¯\8b4½uy^¬\16Éjy\85\9b:lÎç\9cÛízôçè_+Ó\10éendstream
-endobj
-1090 0 obj<</Type/Page/Parent 1011 0 R/Contents 1091 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1091 0 obj<</Filter/FlateDecode/Length 1807      >>stream
-x\ 1\95XßSÛ8\10~ç¯ØÉ\vîL\b\ 4Ò@ïå\ 6(ÜpÓR®äÚ{àE±e¢b[>I&¤\7fý}+Ùñ\8fÐÞÝ\942\ e\92W»ß~ûí*\7fïMé\bÿ¦tzL's\8aó½£É\11ÍOæ\939ÍÎNñ|\8cÿFRê\17fG'øøÊÂôí»ÉÙpáb±wx=£é\94\16)\ e\99\9f\9dÒ"!\1cptD\8b8Z¬$\f+K¢ Û\ 5Å+½.(Öy.\8a\84ÜJ8Z«,£µ6Oxr+º\17ùR`wB"Ëô\9a\ 4UV\9a°v\9eäªPÖ\19á´¡Ò¨g\95ÉGùfñmï\88\ e¦'\93c\9c\1dź(dì$ìk¼\1e\f"ÂÉ\8c\19Æ\84%£µãõx%\8aG    O$Á3iìJ\95¤SJaÙ\92.h©á\94 LÇ"C\ 4×÷aic\9dÌI\9bÁÙFæÚIÊuU°\ 3~?\\r>$pXNh±\ 2\1c\8cȳP\99Xf\92ý)\85q|.\1ca\93\87×ó\1aÒ\88îe\9c©eøk\ 3tÄ`Z\19WF¹\r\b³¡5>9      \9f7\ 3·~G\12ò\r\9dg\99²\88)\9cS{µ\90"\1fw\9cI\8dÎ=\1e¹PE½'u%Yåä$xñ\8e¦È2§ûàd\ 6X\ 1ú|2\9bÐ\17%תxô\b\ 1\eJ\94A"4<+¥É\95µJ\17\1f\bL\1c\9f\82\870\ 1ªà\e\12ZVÎÁM`´\85ãí\16\8eÑ]kkÔ7\16ÕoNè2Sñ\13»\ 23°iiiðÉRU"\97\89\12\99~Df_°\ 6\ 6Z\90\12;8Ñõy\1d6u<÷¬Ä\ eúóöæ¯@\97\ 6J¦K/bNsM)\8e#Q¶ÌÄ\ 6\94\0¦l"Õ&§_\82ûMl\8c\ 5pd,F÷W\9f¿\}~xðä\7f\88>hÄR\88\>¼\19ÄÜy髯µ`ó¸Á+\18\1aâ\14 ¥[é.n>Ý{ËM(\81«¡RÆ4°ÆîüÀ\96÷\94]l\fy\94Bñ®4¿ÔA\15µæ\93ë©\ 2ö¡Ü\a'õbþÁ\91\89´±Q¥CY\11T\81ó­\12Y8\95\99q®ñ+\07ôd\ 3Ü+\9c\15\920ðé·«K@\91*\99\10Ja-ô)¡D8±\14\169ðuÐAþÆ\17.\171âwP\98A0\85#\11gd«²Ôƽ\12\8d\95^\8dÂ
-¤Ú«i\94\8aÌÖrÐ\16>¢ª)ä9Ç¢\154t \10¼¼BN8t(D\9b®\ eÇ\1a\9d\1c]A\v\90\ 3FE[\9ew¹ïeº{\ 4Ì\8f®+h÷¥.\9cÑÙh\bÊ\ 2>t-\ 4d{Å\90¨4\854\15ÎgÆ\ 4iõÇ7Ò¡¤\1d\93Õt³\8f\93B¾á\ 4\87·\16È&CÐ9c\90Q\81ÖÓV^ª\8c\82¡Î\82\82M[\ 5\9b\9aMÞµ\12ÓO\16ç\9c\e\9c\17+ëÀ[\ 1bl\99~øhtU\1e\82\10\bY²¸ûF'Ñô\8c\91¶ÔEÂÜ\1c\19)\92Ñ\98F¬Ù\92\1fä\vä\1c\8f?\89'XDç@\¹(KÈÉrSK´*|·s+#%ÉLæ@\95)p~ù!4OÆlßì\8fi\7f\8d_ìÕþË>-\95³\8d-o\ 2Û\ 6\1d\87É\ eàAæ|ü!èÎZ×ÍÆ4=fzé\e)y¨\ 2º¯\90³áf\1fþh\8c\ 2æ± DÎ!¡£ùÆÙ;¸Þ\ 2\91\r¹ñ¾u|õ­Þc°õ¢#N=S=
-¡²ü\1cÓw;êÔY[§
-s\88?âÕ7Â<±=½\1d¡"ò/2UÐ;¡l¾4^\8dy\90§\9eÛ\1d\ 4\18¥-CÛ \87åzÎ<(6akk\vS\ 6\18\92èbß1O \9d<5a\80Ctà\ 2\v¾\85°Å\18\92êÖÞd3ªI>Lá\10¼Q\98ÁvT(\fW\87×\1d{)ôf\105Pöê38\85%¢@^*¯ú\fA\e\92Ýêeidª^Z2±ÌïFq\8fL`d ó8\96ÖîøYwt\80Qk\8dçä\10Þ\8b
-£.O\e+.\t?\15z\86\97°\15\88\9e\8b\85gÌaáÇC\15W\99¨      íÛ\9ag\ fO\1d¡ô\90\14¨\vÊ~\80Яt\83\91Ï$è\13,\11Ì\f\1aõO\eñ
-\8b»\ 4h,\r¹\864+\1cïa\f#\81F»È´H\9aî²\93Ç\85x\1ajǧf¦ÞA\8duI8(\1a\86=I\ fÑz¥À¡\1a\88\\8aÂwóÂÓñá\8dwÊHî\9e(Aæ_\b5H[?\98\80v%\9e\9byàv±ãö§\1dß \8aLûzT_Ã\ 2î-\16Ð`p\8eue,:\90F5<áfãp5ÐOH9>\bú.\8d\1eSã>\7f\1axÓaá\84>jV\17ép\ fðw\r¦i\ 2®ñ\9c\8c\94o\1dè\98Mó}\84\1eð
-RøóFv<¡÷Ûáûî_»Y³\17Ý\96'æpWÛ^vÈ\86Û\ e`Dàk\r\9e×m;\88\ 3\85µ@\18¾Ùò2cÖYÅ0<@\84\83f2ø½a²i\9aÿ\ 6ðZ\99¥cÐ\10(à§)趫7ó47÷íyh\90\ 5ìZ\84\87\ 1p'÷\9f¿\ e\92ßi\ 3(hë6YscûID\14£\9bó}¯Ó\8d\88\98ç\1a\8eÏòXÌ\ 3\8b¯s\1eEÿÃè2ÞÎ;¸\v/Q}¡k÷\ 6¨:ºÆþPt8\13¸%bæh i¡í&¥.;D\91mÉ[\9bö\9d£»7\88\r\8b\ 4ê\11m
-H¿\92Ò\1d¤U\81Û      F\9dd\0xÔc\87¿\8fq\17ò²ØÀÊ_\fxw|ìÍ\9dr­+LYµÝº\1cÎêÑy:Ç×\1ag'õ×\11ÑýùÇ\8bsº3ú\ez*½×qÅã\91p¨3vô Ù~pz\8co-þïmvv:\9b\9cÎÏp\1dÆ«'3¶xµØûcï\1ff\85~dendstream
-endobj
-1092 0 obj<</Type/Page/Parent 1011 0 R/Contents 1093 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1093 0 obj<</Filter/FlateDecode/Length 1511      >>stream
-x\ 1\95WÁrã6\f½ç+0>yg\12\13;í-Û4Ó\9dí&mãN{È\85\96(\8b\e\89Ô\92R\14ÿ}\1f(ÚR¨äÐÙ\89Gk\91À\ 3ðð\0ÿ8\99Ó\ 5þÍi½ å\8a\92òäbvA«Õ\12\9f\97×k|.ðg%eþÅb9\9f]Æ/>oNÎï.i>§M\ 6[«ë5mR\82\9d\8b\vÚ$ÓGQn\ 5¹½®sé\94\93\8eøA\92Ò¹´ª\96)UÒ\96Ê9e´£ÌXºßÐv\ f§ucµÒ;\12\8e\84æoo~ù\9d/Óß÷_þ\1dÜ¢Ò¤òÓæûÉ\ 5\9dÍ\97³\ 5ÜOë\Ô$HË\962UHJ¬\14ì\v\86;@FÃ\94rär\81ðZÓ\14)\&R½È\19Û:¿û\89æ\88\84C:[^"lX]Í®fôͤ*Û30o\19\80S\85\9bµ±û\ 1\19éór¶XÏVl$º/tú¾\ 1\ 2:\84îTY!\0<%¹Ð;öË9H\95«
\8fÒ§8*~)
-³£­y=\8dòÂÞ\92B%ÏÁN\87ò*ToJ\ f_ßâ\9eÒ¶©k£gô\9b\8b´§ì\0\19ã¬\15ªTµ¨}áBÂ\e'-².S\94ÙÐ\16çZ>i²SÔ0%Q8\13!Rº\96V$\9d\95VÕ¹\8fÀÕ8.l\1aªÕS\84\9e\99\10)\9eª\8aÃ0\19Ý><\92¨k«\80Ö3\fÕg\14\f\82}\ 2Iä¶\16ÏR\83\84| IL£k_v\14{±ê\8aý%óH*aE)\81\91ºÌ,\ e¹Ò XR\90kªÊØ:N\eSKÖì¿{\83\r\80Ç\83é\9b\8e4bÚs\10²¬ü=¾îdÒ IÞ\10\8bZU\14\94      UD!ùä   ÝùëK:¹I\12é\1cÝJ­d:\89\81\96x'v\1dé\aÑo@£LY\a(¹ç\8a!mj´-÷/²\vÄcGéØ|G\9f\ e3\f\84¶Fk\16
-¶Q:f\8cC!B¥¡7HÿÓTÕÝ\9d\1d\1a\12\99\89B\95Ö¢ï\ 2tX\19AaøV\96\8c¸²&\91i\ 3\16&"$\ eÄ`\ 2¥*å H¾"͵\8cSóôiF\eÖ\88R
-H\93\ f{o\1a\98Ñdt±\8f0\95B«ª) 3\9c\1cBá¬\ 4G8¾ó\9d5MuÞ\1a\v\95é¹ì|\12\0fÔ¶Á1Ú¢\ 1æ=ôÉ\82ô?\1aè%µ²\88+\ fq\80K\88\1a;gxo\1cyð^7\8f6sáÞ¡¼\18\#4\14kÏÓT¢/Ñ\ 1\1cË)ù`N  \ 5ð\ 1=}bRp²_\10JfMé!\1cê;\f7Ä  )ï\14*Ê ë\15ßÕÔò\a\9eFu}ø\1aW)\b\14c¨,¸Ìé\fÜaù©ª\ 2¬gù\9ch3\88ÍM\90$\ fÔgÅ©TÎ\b-\8f\ 2G¨< \17\85I\82§¡\ 5\12;\11"\1aÙFå1\ e\ 2\82\14\96\11ðýûÍ8¦QHY!v\10LG©t  DM¦\11&±E²\ f$)
-Ó:\ 6îÕ.}Ë°­H\9eý÷ïL+£\13éïå\ 2Mv¨ P\96]\19Eä5Ð!1ee4"\8césãºÑ\1c$Ñu4ä¨'vrJ\93vâÛnò:¡­ªñ:Ãÿ\a\83\1dz\9c\91Áy¿\ 3\1cµo ì®Irä%Â5¹\95\ 5\14\9a\85\1c\ 4\80\13t\81ÃW   O|\98óu\ eÕ\0'ÔN\e\8b7\9ed\a\82\ 42\84mEZ\8cº8¼\7fØ\12T¹f=\1cÒ\1aw\ 5\18}X\ 28`\807P\18ÖpD9<\fiëx\17\1d\ 1h¿"I×5Ô6Ö\97Tf¢)0t\ 2¥ýhàÀzãÀ4\96i\ 4\vi>"ñ\84ö[\ e\9a\83\85®å×L\94V@\99ø¡l Â\8dNrÉ4y§áþ\92X3\92xz\ e\ 3Bôò\15bÎYñ`FtöÖÑÜ\a\9d;ö?Æ2\16>heØHÆ­1j÷¸(]Ë"~\87ÅÁ\ 4\12\17o\92îUI\8cµøHå\8e&>#bOAîrµË\vü\1d§Ý`Áìoò$ñ\ 1|\90?ÖÅQJº±èEÔ¯     Lo\11qx\ 1÷méÙTÉ\ 4+Ý(=\e,1Q/<´\1aó4WÕÈe_3\bz¿>vÝt~7X\18\1eFwAÉc2dêkðÁ\82¼\ 2éú\8dÎó\92óBÑB×íã~\99\v\ 1,xîc=>î[\1foÐ÷<Ö=ÕýÊÓõ,/\ e
-|b\ 1ÈLÃ\9bhK½A&\bÚ²¶¦ÀAôÄ`÷d1=LÐ\9f»D\1f6½ÁVtÔ$ÞB\ fÀþ\b&CNû\13ý\8f\92ÃFylÌÁ©\8fì¼w6X<¿»\ eËä|\85\9fh×Kü`»\9a]sò\1eo¾}¾¡?¬ù\ eñ£[\934%Tůè\8cöìpál½À\8f³ÿÿ\83ær}9[¯®ñ\9b\b\97\97Wló×ÍÉ\9f'ÿ\ 1ë¤\88Cendstream
-endobj
-1094 0 obj<</Type/Page/Parent 1011 0 R/Contents 1095 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 503 0 R>>endobj
-1095 0 obj<</Filter/FlateDecode/Length 1494      >>stream
-x\ 1½XMoÜ6\10½ûW\f\ 6päý\946\ 5zpФ\b\8a4m³Ç\¸\12åe"\89\8aÈõzûë;3¤$.½v\9c¢(\ 2(æ÷Ìã{3Ãýv1\83\9bA6\87E
-y}1M¦ØC\9f\19}þúõb9Ç¿ ÍæÉ\1ajXf\vüßµ*øDó!]½NR\1c\9b§ÉÒ7hh¾^&3X­§Ø[Ãb¾H2ߢѰ\8d£«ôtt5O\16°\9ag¼ñb½\1aZ¼6h£IË%­å¹4\1a¶ÉàìdÔYµ\®\9d\fmt-Þ9h£Ué\ 2Ï\rF\836\8e¾NOF       \8aY6Kæè-¢\95ú\ 6mûfsqýn      ³\19lJÄ;]g°)\18æ)lòÉÇ&\97 `od\ay¥ò¯æåæ\v®Xù\15\13xññ·\17®¯ße\ 2V\83hÛê\bv'¡\95\8cQº1ðIÔ[\ 1µh\r\ fݪ;Ù\9cLP\r­åó®o;½o¯\ fº«
-:`
-¯f\vtaSLºëÃõ=ØNµ\95\ 4\15\88¦ \1d\e8¨ª\82|'ó¯|B¾\13Í­,NÎ(u\87G\94
\8a\1acyêVYC\9b\81j¸Íg\9er®»\85ëwóÞu#ó}§ì12®\16æëéZ&-¯\1d!jE'jie\97ÀMs\ 4>Üî\84\85\83ì$:àÌæ\1e\81\1d\8d¶l\e¢s9»t&*\ 3Ã.@\93*YZ\10\95ndï\ 39\19\99\17\Gâ\87X\1d\bë[cdc\95¨ªã\15ü-;íÌ
-ð8ã=Þ¦ów¤Ñ\84ûð\83~I¼&),^\810\88:á«ËÞ]é\88¥<©\90\97Là       ¹K¶\85[¢Uú\80ÛX\1d9ä°r\14 ×\19J\82Ãî´¡ïp
-bÓïá\11\8e\11x_\ eHËû\16ù®,³ø\ 4jl\90\ex\15´·Ák\84;Qí\91M\8eÕlßSÄÉ\19\91\ 18¦Çøy\8c(t`Ûé;UÄW\9aëº\15VmU\85lD\ 5Ø\9d\17Ú<¡\b\11¥ì\8e\9c\18´è\ 1\80Rä~\19Z\8fêët±Ïe\91À\ 6uHpõê\7f\80\vU\1e\80q(Ùà,\ 3ºñ\8a»rб-½\ 2ȱi\86Á0¢ãïòÞzGXÐ\ eÝ^\1a£+\ 6þ+Eã>\18îz]\ 3zè \1e.ó¡\92\83¨4\88ñû\92Îu×IÓj\8aZ^e\9eR\8f«\9b\8dsó9èÅp\9d¨÷\0\vÄû\88£¡Þ\ 6o\9e¡c\81\11\18YÖDÊt\fQÍí\bi@\84A\98;\8a\fÕA\1c\a]aÔ¸ÔÍeìáÿ£N\87M¯ÑgP`\12\84á\a\8a\85gj4L\97?*Ñ\b}$Ö¿\92¨\v \8d\ 6d(¦ØÜræfz>\94ít\1a\ 6c"Y\12°m\14Ô\99TA\99;\9aÿ#ìDê`p£jCqràXäb\ 4:ðm\8f>¸d(8£\ 4rÕ]\81Ù×\83Ö§Àw\\e\14ª\93¹ÕÝÑ\87\1f.*0à aõ\18ô5ö`Ø¥º\ 6\19\H\93wjK\89n«ïd\18\93ä}.[\8b¹\8e¤\80´\8f.jTZ\84\ 3\8cv<      !\950R\14\94\1d\9eZæ2f´ÀA?\9c\eY:nçeq>`<nÏ3n6¾\913|\1aÌ\eãʹ"dÄu{Äë)žB.\fA\86âÏùä\1dPw8*Bâéó|5\1aßF\ 4n`ý\93p>i}d×\83B$ð%>¾Ooç/\11ÃÇ\8fÆ®È\961C\7f/\92ù\85½\bßS\ 1\8e\17\85\vP6l¼«\0\82}OB\94+\96±Ò(jÕ(\8c]\ 2%\f¹h\10h¬:©\ 4\ f³Ã\98A\19KU&\8e
-ÆÒ\ 3\82+\1fR+=|ðÔ!\94\12i\82ó9ÍRÁÅ52Vï\81A1\911{\1dõ\1e\9dj¸v$\9bö-\95Äd\r:\8c«ùXã\ f-÷ô\92ÑT\92U\14ÂÆlzÎ\bt\ f»UÇï\1a\fHMüfê\99¬$\8fB¡¥i.-Å)zâá\e\ 4õbU¾¯Dçës¬L¸Òàd|Eû;(éüRSqH\10\r2£ú\91&ñm\ e%\13?Ö¹¦Å7¨\7fe\ e\ f9So\13t±ü<Y}~yºîa©5qo¶\1ej\87\9bie®J\95\93\98(\16ÃO´ÍÈz\fø=­Æè\85i\b\9a3b\9e\ 3c\9c\88º¤\89Ѭ\1eÊc àïlynI°ù(ÁÀÞ\9b ©\\11\8e½®¨§;\b\90÷^¯=ij4K¦ë\ 5þ\1aò\1a\7f\13Á§Ý§\9b\ fonà\8fN\7fA\98à\17\9dïk|êqö"ç^õ\v^es|÷\17\934Y%ð\81+|ºc~,£\98F7F\11ðãm\99á/\1dé\1a\7fAÀÅ\8b\94ö|»¹øóâ\1f\e-l¡endstream
-endobj
-1096 0 obj<</Type/Page/Parent 1011 0 R/Contents 1097 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1097 0 obj<</Filter/FlateDecode/Length 827       >>stream
-x\ 1\9d\95O\8fÓ0\10Åïý\14£\9eºÒ6ýKÓ=î²TB\b\16´EpØ\8bë¸\8dÙÄ.¶³U¿=Ïv\12Ò\0\87EU¥¦¶gÞüæ\8dós0£)>3Jç´X\11/\aÓdJoÒi²¢å:Åï9¾FÐ>,,æ7ɺ¿p·\1dL6s\9aÍh»G¬Õ:¥mF\883\9dÒ\96\8f¸\11Ì   *\99}¾Úþ\18Li<_%Kl\19íµá\82\9au\9d\89Þz&\8dàN\9bó¿\ fw¶Ôç'\9be+¥Ít\12(¡²"#©¬\13,#½'\97\v:2ÃJá\84±\94IË+ë÷äØ\9dx-\93Í\rÍP\8d/k¼XFÕ«$Mè½Â\19Æ\9dÔ\8aNÒå!\98uLeÌdôÈÊ\1d£½,\ 4\8cÜU®­m\1a£\94ìx\94ê\10³t\15§ \ f61\ 4vY²º\14\8dÞû\87Çß!i'\9d¥§\91­xNÌÒ\10¤Q\99*Îç+Têt\90õõÓûït\14¦\94ÖB¯õ±¢º\84¶¹´5õÙ"\99ûÌ¥`Ø\ 38@Æ\99¢\1d\8a ®Õ¾\90ÜáÉ\9d\84P\11^\e3*±ÂÑ\8bd\91\85à\95\91î\f¬¬Ð\a\ 2\99¿\9déåö\11vç°ñ\92\1e\1c\10x\85¶t,ô \ 4\9d\98?!mPks}¢êHx\94M\99\94\ 3\8eÒ\14@\ 4F\8csa-Á\80!\97>)aH:´²(¨      qI\14<{b½\7fÚ\96\ 5?¶ÛÁJ±ú\84¾*är\95Â$\14µÚ\1a\f\84\86@°!Z'ðÀ\9cÇí\18¬\1a\97j\94½ô\12!!
-dµo\96ÏاóÍÇjÑøÆz.!\ 3àø´±r\9e3u\101[×(0\10+
-\0ÅÖÒ\8aâ\ 5{ºü*\v\vûÅ\9e4{ÙükâðÎs0Údó¦\1eÏ\11\r\1f>\fýÉß#;"¤<x\130þì\7f{\8d-ãv\96 \94íj¶×\8dµÔ+²`j=\85\9eìØ\91k\9fTѧmí\ 6¨ñ*B\83»p\1a\89\1eÈØ\ f\1d&\11\96\89t-\9d"ûÎ\r\80IvÁ_ð+úö'¶\98ÿé*\8e%5\83\88\1e²=®\eÂt8\ f¼«ÂÏU Û^&¯æÛÁZ{ò¬«\1e\1aÌDUdp\ 3\86ÍR.\ 3º\8b^¾e\8a\8bâ\8f~\1a\86\94±0>\17GþÞ~¡l\85«'p\84\10C\8d;\19þ\85×I¿\bcd\96  \15ü>Ù¬kGÍVxa­\17´Hoâ%ûxûñî\96>\eý\ 3ï\11º×¼*\ 5\ 6ËßÚ¾¾qs`\9cÎñªÊFÿyµ7\97\93\8f¹L\97IºZã\85\81x\8bÔÿõn;ø2ø\ 5L\8eS\endstream
-endobj
-1098 0 obj<</Type/Page/Parent 1011 0 R/Contents 1099 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 511 0 R>>endobj
-1099 0 obj<</Filter/FlateDecode/Length 1792      >>stream
-x\ 1\95WËvÓH\10Ýç+jÁ"9'\96-Ûñ\83]\bd\86\99$\ 4l\ e\8b       \8b¶Ô¶\9a\91ÔB-Ù      _?·úáW\ 2g8\84\9cèÑõ¸uëVéûIL=ü\8biܧÁ\88\92â¤\17õp\87\7fÅüëÓ\1f'ã8\1aÓEo\1a\8d¨ ~o\12\rüUN³\93x8Âýád\10õùéh\1aÅþ\8a\9fÂ\ eõ/&Ñ\84\9fá\9d©¿Ú>\eNñÆp2æ÷ð¿\96´<\19\ eú80\18ÂRAÃ1ûµ\17|èÍü¤{\r+=\9a/\11÷h<¡yjÃÅ\9däô*\13U#k\1aGt_«²Qå\8afmUéº!UÒL\14\v\ 1GýèñlþÍZ\8aÇÎR\a.ú°u:\8eâ\88Þ\97M­Ó6i\94\9bC\8acÿf\7f\8c\88ðæ\e¹ReÉ.6ªÉ¨É¤5ÍYäR\18yîý\19\17\80±o\94¢QkI_T\99ê\8d¡»9U!ÐB&\99(\95)\f©¢Êe!ËF¦ì¾G\9d\98\ 1\86Óµ\12t;ë|º¿¢\87S\15ÉÈZ\9dÝ\7føp3\9bQ)
-\99R¥*ùpÆ\10ȵҭ¡µ¬\r21¤\97>&]æOä\ 3Ã\89\e\8ar\eÊ\91ÏDä¹\89üÍþ(\1ar s¤+ÒT1D"§e[Z´D®\9a'\18Òk\95ÂðâÉe-7\14bô^Q\8f$oSi^³ap¯\13,\87\82-uM\0©ÌµH\19e\v\14\8a\9bÖ@°¦¥Ê%0Õ[,§\17Ýé¤{7ïö{ n\92+àg¨­tI©,D\99Ú\14º×\89/eg\1cM\98þHæ¡?\1a\13Çѽ\ e\85\ f·°\7f®B\14\80ð0\10À\8b\9apõ÷\8az\99¦\8e\81\bô\8bú!ê\14庼ÿòpFÈ\8a_~_X3\9c\81ÎÉÈ\86Ýwö*ýpZË%\8e7Ú"\7fØ\96õ\8aN)k\9aêu·\v²0\85Ldt['\12°­dT:\83»n¶\7fñ10Ãez\88C ØO¡x©<\9c\88g´'¥\r\85«eI\ 3\8a%\19 C³FÔÍ[\9dÜs¤²>§we[ü¥\17æ\ 1ñ\9c\93l\92(\8a\0ÑLJFÇf¼#ýíìí\1d¨\90´Ü\12h TTX¼véY±ÚG¥0i\19\15*©µÑË&JtÑ=Äq\v\b
-\ríQ%þ,\9c\ 3øð5\1dô\7fÖ\18\97÷ï\1fÎ^\ 23`õS0\a¬j Þ>ס\ 5\97I"\8d¡+Íú\93Ó\8d2`0\88suÃÄñ\r
-NèÅ7\994æ%×ÿ\8fÏÌ>½F\83\86nd\flí`ý{+[Iè\18Uµ¹C£ÉjÝ®\9cȵF²\90@/l-¹ûSÑ\88\ 5$ÏX,M\ 5J?S®oz±\ fðK±ÿ\82\83\9dþ$\8a§Ô     ÀÍ3\89\82e ÖBÊ\92\8c.¸|P#D\93èrÙ²à\91X趡M&\1a\82\86¡ ÊP!\ 5\94\10r\80û\12%\ 6\9a5\95\1a\ 3\ 2?x\0ùþÞªÚÊ/§cY³ãb\0É©\90\15 \ 5»6\r<\0PöêE6ÓÆ\8e\1d]§¶\8f·`o\9bdYëb+\e^±"º¤E»:r+\1fÁ\ 5\98?\98b=¤ Ð`\85H÷ÕçP\0}:H\1e(0¥Ý\144²f\15­´AÙ8í5¤ûxÚ\ 4©õ\9aås\8fhÎ@âg©\1e\8fc\8a-´ºL0\1eVB\95çÛü\8e\959\ 1\83\98K\1cS®¡\17G)C.-\9d<¶,*\87 ã0\8aȳ7 n\93Â\0t*³\8b\93]\18ÌF\90%\13\98\895ÉÇL-\14#ºx:ò\ed|ú\18\86\b\b\19\8c4fÊv²§\1a\8cgêø4\90L\88\10u\12å\13m\ 4\ 6 F@Ú6¶ï\f7»ÂD\r¬\9f\89\ 4XÝ6*W?\10\1aÔ\ eDĤöc40Ä\a\1cT\ 6\a\ 1T\9eë\rct;£¿ßÀN£\92\1c\91\16\88\0\ 4EÃÚ\1eÉd^\91\93n­¯T¢ì8ea\f\99ï\ fP;\9e»×#?4OéO½   3i×\15{óÎ8[w\9a\1c¼JÉZØÝ\80É»ï¦ñl®íF0\86aHÑ\8f:¯VGºîïvÿ]t}Ú¦û1\9eL»q·w\11]Îî\ f\1d\ 5áçEr\7fý³kÍ\18Ë!ëïR­ÚÚj\1f\1fî^_øüûØ\1e{1\ 2Ãâ\8aÁ\0 ÿDzíÕWZ\9b\88Ü\85¬_}uÇÂ6a\aû(ê\8d.øÈ/\16³ZbRaÌñò\ 4\rCeÀ»\8cYáv»\9d\ 3Ïn¾\r\9aA\88Ä¿\10B«( »MyW\1fß\11¯°hÔk\85ÞLj)\1cû·%Ùñ\9d\95\91\9f²æm\10i´ÿvxì¤ÄN£½ýEä ¿\81DcÝÝ\9aÚ\ 5à\94Ë/\8a\ 6¢+Ò\8eÝJ\85\9b\81¼T\95è\1c\ 6\ 2ÊÜ9ÖQÎq\7fc
-ñxÕ
-»ã³Õ\15\f\96оs«<ahlWn¿_p;¡\ 6<\17\11½¨\ 13\7fY¸*¸âöCO\1c9f1{ñË!t:\14\ 1-iåË\8e\8b
-\86]\911D!«xn*\99¨¥Û\9e\83=nbV² Êv\ 1\ 6>:Q¶\96þ3\ 4\ 3²
\8fÐ%Ä\8a'ÞoåsÈäS\163·Ü\v?K\11V*\97\0\12låø\8eà°\fõ[ì\8e\91\0À@ß8W>ã¤m\epèûy&!ªÛpÍ9xÀ\9f\rìê×EàÏ\83g\91\872\9e[í[H6\93Ê
-Mç\10ä­ÀdºÍ\8f\a!\8b|(\19\98Xâ{Æ\8f%[itþ5\88òò\12\89\82ò\87Ý
-b̪ëì\83ðn¹çì9Î\97VÙ[µÚiÐî\85\9d\80M§L\90¥ÁE\14÷\ 6¬1¿÷)<\1c\ f£ñhâ¾\86\ 6\13\ eèÝüäãÉ\7fÅ\9f\ 2¿endstream
-endobj
-1100 0 obj<</Type/Page/Parent 1011 0 R/Contents 1101 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 523 0 R>>endobj
-1101 0 obj<</Filter/FlateDecode/Length 1873      >>stream
-x\ 1\8dXYoÛF\10~÷¯\18\14\ 1¬\0\16-Rw\8d\0ÍÑ\14yHzØEZÄyX\91+\896ÉUvI+\ 2úãûÍ,/)JQ9V´ÚÝ9¾ùæ ¿\\844ÂOHó\88Æ3\8aó\8bQ0Â7ü\16òÛ\1f¿\DQ\10Ñl1        f\94Ót\1cLêEF·|\9afóq0¦Éb\8eÏ\11~­¦õE¸\f\964ÆÕ1_\8aÚ\ 5_ê-sZL\8föÂ0\82\82ñh\19\84¸\18Î\16ÐêW|³¿Æîr\ 4ñ½ÝÞ:§(\1c\a\8bÞî\82EE\8b(\98³àp\8aM¿\12Á½5vÇ#¨ïíöÖ¼»\ 4 ýÝn\8dÝé¬ÕÃ\92\12F\86ó\búr\9aÀ÷E½\92ÝÞ\1a»³      ¬ógyW\90\ f§KA~ÂrýBnvK\0<å{r\90÷zË\9cæs\0Úíõ\960v\14ÁÑnóÕÝiüí\86®ßâ~Hwkb{F!Â?\r¦³\ 5Ý%B\94\11ÝÅ\ 3§ã25Åó»\87\9e\ 4¡\11$\fȬ©Ü¦\8e\12\13W¹.Ê\80\ f^¿]R8aÁÃZòp\f\11$\ fæ\ 1L\vèµÕªL\8b\r}ÚÙ´(\9f\17\e\8bF¸:çãï
-26Ñ\96JC®Úí\8c-¡QSµË\8cJX\0L\10\118\93Øô    ÿ­ÓL»+:\98\8aòÊ\95X[¼Ç¦X§\9b
-,Vr\82ÜVaQ¨\'­\15b?\94\83cbí\1d\89ÖQ\7f    \1eãr\ 2\99   .§\ 5ݪ|¥.\1d>\96Ú\16*sä\8cØ)\97q\1cv\1d(ÍÙ~U\94t?ðn\13¶Ø\1d§íS\1ak\81¹Ó^9H_\1dècZ$fïèÃ\9dwU\8ek\8b«\ 6_\98§4\81\84\1a\9cµ±§xànÁhÝ?oÜ\8b\ eÐý\e\10¹­©²\84r\93¤ëCk\8c¶ðÆå«\80aóxA\99J\129±ÉÌJe´S\16ØÀcGªÀ\8e¡\98êåÌÚd\99Ùs\848\1e'\9ey\18ï\a\b^l*ëô\15\0k`Ö\9d`zRYÅÁtU¼%åèr§Êí%qä\94]¥¥UÀ\95\95×n¬4êÔ.S1\90Û§åöD¯Ú\ 1/@ÏFzÑÄ\80\81*\96\Zêûç?z"\8e\ 4f\1eN<V\9f¼ÓBTfÈ\b       \ f\b      ¯\eÊu¾b\18$\1f@\99R%9h±±¦ÚõLS«\ e\89£û5¶\9eÀ\1eM§Ë6\90l´¶eª]ãÏÑmkLÉL\ 2¿²4NË\f\90\0)N,¤\83\98ryæâÑ\ 1zA?Õf×G£\10\85      \1eö3ôÄq\ e\ 6.^WÎ^g&VÙµãD¸®%\9f³v\83p\96d\1eqípÖ\9d\95\ 5Õ5#õÝ# YB¦\80\9bß\13r\83h\161\13\11°´9Û\96\80\84©ÔJ¹b¾\16´GÜ´NÎ\0uÃpî-øAYêÊË\80èõVÇ\8f\9eç`7¹\83+uN\bR\9e:\87\82\99«Ç\96øG\ 1s\\86Ä6\15\83ÿ(\b±*\90  »\83$\8b\\96²À%
-ÚÞù2{Ö4vP\97 \19s\88
-S\f\85\ eµàÚ·´lX\88ÚdH\7f\85\e\ 1\97ÿC\9d\ e\f\84 áÍ\15+f©]gáü\11\12q!\15\85Çc\88´¡¨nC\83NêñѦßtr\aLw)\8fì5\17\1aOs¸eÑW\9e\10(ý¤3>\82\ 4ð\18\vª[\85\a_kÇ%»ë0Õ.Aeh\80©{\80´\13ÐM¢-\
-èVK\91;6S\ 6+i\8bMá¼\1f\9fS\8eØîÔÆËmýo\9c\1aH\ 5Ê\r\18\91\16(F9ì\872ükèÚÔPOdwZÄ\19Z«¿T©ÕÜ\82YÜy»®ßN\e¤éL\1a~cY\1fîDït\91\0ó\1d\fÛ\ 2î¶dr$\1aKu\120W\19u\87ò\9be\84z¼©Ð&P\89P\91Ks\82­\84\ 3ð4iP£,í\14j\YóWr\ 5\8a\91b\95®G\8dÆ¥fÒ\88æͤñ²*·\86ÛØ\aãcÚùÃel\16\8cfS®o\8c\1f§\8d\r\9c®\99WÞÍ^ÿõ®qû9r\8býTÐ\aüÓ\18\14\92\8d¥\1f\fØé!ë¬\19ÅÝ\1e¼¼\1f4]Ma\80Ê\15\98èûHÝß}S\85\10ô}!ò\96³3ãºu\80B\94,´°\94\19Ûª{#bN@~m\8aÒ¢\eCe\9fì\99Ù0Ü~Né¹\88`:\93¡\15ÖØ{ª4Ùâ\80U\89Bɹ\83Þ\eЯm\v?Q\v]\8aöÆ>ú.¨\8b§Ô\9aB(ºßj È\ 3Ú\ 3\ fh{\1e\89`\b\83Èu\1f\1f¥\83H\a7\15\ e\18k\ f\9c\ 6jÅK\af\1dN´µI.Ã\80\8e+\94ëCíAKÏ.\85%éú\9e\ 5\84\12\11G¯]Á\8aCk\15\86\1eÑÕæG\93çý|Ê\15\17`>×\ f´Wð\82^¡_ý\89¨\1fËi*@ÇK\945_f\9aa\ 3L\90ù\9bûÕ^gY@ïÑS0\rÕðU\ 5fc\87\91\12ÓÎ\16¬\95<iÇ2°ªk±5÷V\1aõ\ 1ó3úã\86Ð\16\90#Õf\eÐpø \ 1²xðm.½k\8a$OKê{\ 3)\a®\99C\99üÍàɪ0\19õÇs\1ekó*+Ó\1dâ\1dg)\12GÀé\92DÙx\8b\8e\e\97ð\15\ 3 L\95\9e0]µJPðâÒXLEB\94\ 6:¡Î³Ï\92D\98©\ 1L\8aÙ1\ 6\85´Cõ\929U+|å\87µ\13µµýH)o\15ÆÌ\9e\1d¨ü<à\80=ÜsÐQx¾Àè\8cVÓD¨\96×\8cØ\1fôWt÷n,n¬Æ¨mÑDV\9a{\17\83Õ\8cYõ¸Â@\8b\95\922ûÔm{H×uðÌÀZ\ 31äWãeo\fáÉõ\9fáÇqô×bÆ\9fë×\rýÐ+\ 6_\17³\1føîõ[<ÞÊÃb8Ã\1f\ 4\16c<-.\82ñR\1e#n_¾\7fõ\92~³æ\ 1\ 1¡7õ³ ô1¾\8bZë¯\fç\11\1e*ÿû\19p2dz2\1eBåàxÉ÷\7f¾»øýâ_%\13\aèendstream
-endobj
-1102 0 obj<</Type/Page/Parent 1011 0 R/Contents 1103 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 526 0 R>>endobj
-1103 0 obj<</Filter/FlateDecode/Length 1935      >>stream
-x\ 1¥Xï\8fâF\12ýÎ_Q\87"-+\r\ 6\f\ 3LîCÄÌ@\82\10`\93\9c¢Æn 3¶\9b¸ía\89òÇß«n\e\fIVJnW;\f¶»~¼zõª¼¿Ô:ÔÆß\ e\r|êö)\88km¯\8d+ü£Ã?\16ßÖº\83;¯K·\ 3ß»¥\98zþ->Ý·\88\96µêwÜíßz\9dÊ]\18¢^\8f\86\ 3üîã_*iS»_ÕZ\936ÝÑj\ 3ÿý!~       ­Û6­\82\ 6\15\7f~kþ8\9dõÚåWþü'Õ\7fTI¨\ f\86în[wÃúÇÕϵ65;mo\b\eÕ£]\7fô4ÿnt:]9:[Ñ(ÚïÄO£\7fÍ¿háy:_\9e\fT\9dâ×n·¿xz>\7f8\1f¾:=×\a\99Î\1fìùÖä\96:\1dÆÂ÷=¿Ý¡¦?ðz]\9f\13\1a­VãÙjú2û\a-Æß\7f\9a\8f4\1f/\9e§Ë%..9ýÖ¤W\1co2\12}¯Ý¿å£Ó\84t\1aÊ\942MA\9e¦2É¢#\890$A\89<P\98ªww÷¨sZ\8ax-h§MvC:\91¤7\94\1dpP'¡Ê\94N\fŹÉð@\14R\96æòkv\rÒ4ý¾×cw«\9d$\11\ 4:O2Ê\8dÄSöt"\83\8c\7fÍpûì£0&Þq\86r\15²»6½6\94'=\IµÎJc¯\1f]\92A\99äÀ\e2oáòÕï\ fè\12\ 2{³Ùéz\16½¿\11Ó\9a#\8a\ 64\8c\ 1Âf\ fW\8d\91n©5ñ\8b\88\1aûT%\19\9e\17\92˧í9ûtY¤\ 6EÊdÞ_Iªé\ f½ÎÝ\19ê\97\rê\92§FÞØøP#F\19\90\97øÛR\99LE\11íµ1Ò\18¾Å\1f¨\ 43`£"i¿p~&_\87*\85\ 5\9d*\]ËD\8algó\0\9f
-(ÿc\93üê¿\1e-d\ 1\13¨\12|°52;\91â4~\90\91¶ä\1fR)PÙ$:~ õ\91\11yä2oV\98>tL\7fI\ 2IÌÄ\1d³"ÀYÎ\88ãKå/9â\v©\8c\ 1\ eÒw\85ÇE\82\9c\8dÑ\81²\ f_&rCFÅ{P>Ò[DQåàUnl\ eåË\8dJ¶%û^\e:-¸õçu>·^ãõã       ýMªc\98)\85
-ZÑóÚ-ÿ\8d\82H¡     =zÙË\84ê3\89\ 6Kß®b\99IµÝ­QÝ\9dÖa\1d\1dLõç#\15ÏÒ<\12(cÝ&¾N!\83PS<Â(\9d\9b\v\ e\8ctpÂÒ¥zså4\11ïj\8bgÊF­Ï\1d£\8dçyux\88 #\1eý\eÅ1;\9dC\ 1\8cdðI%Ð\ 6\11YF3vh\98¢\17@.fG,²`ÇLC\80e\978¢\E\0\ 4%Ö      s ­fÃO¶&wÔ\81Ì°J4»\1d§8\ 3\ fréÑRf\19;\7f´zf, ãÏè1¾X&â\8c\94=\b#þ \14­/%¡\92+l?\98\93É\ 2\17:p\9bYÒ&\1a\\ 5\1c\85Â\82¡jËÉeú*kÀ\12{t\7fê\8d\e Z¤Î©µá\\99\13\11K:\b\97˨_j\10Í^h¾\98ÎVã\ 5=.¦?àcôÃhú4º\7f\1aÓäeA«ï¦v\ð\8c(zºxþ\12\9b\86GO BJh  c\85\89dk{\11Á°\80ÐìÓÓ\13\99\f$ÙÚ\v\ f\16(\b?.8ÙdÚE4\82Ú\14E@Gü*R®ñ\15\f³UËÇ0-úÃx4Ê2\19ïm\ 1áï]aZU\19´Oõ^¦\19\8b\15³_\9c\0?ìT°C-\98p\f\9cS\9c\12À²\ eWÞmý ]Ð&\86\9f\1dÉ4\85Ý\18\82)¶nÒµ&%ÒÌ\9dbä=J«B\90;\ eÕP \92\ 4\83\v#$Tf\1f\89£\f=ZÁ^A\84²UÍ^\ 6\0\14\ 4Ë'Ub2\bª\fy\ 6C¹Ì^ëH¦W\ 1WÒ·±_ú{ÔVE\ f\ 2s\18à\15&mZE\18\89>|sYóJN\ f\91
-Þ Nº~  F\88>\87\8e²â²H\97\8e÷\0\ e\9a\86T\ e*ÛýY\95\ evgsX\1c\ 4\96\10Û\11\12+â³\14« \83ï\12Æ\1d\ eÕ\95ã\13³\rðBJ\ fEû[ÁZçY\ 6!©dï6\9eÒ¦ó\ 3\8c-²­ÉßY-\962âÍF\9cjË¢ÏÁìõ>ß[Ed9<U´x\ eä\9e:ÑDy-Iy\e8Áɬ?þ_»ÁtSÔÇ \1açò_¦îúÆ\8d#â^\12¶×ÌÑ ï\fi\ 6\eÑAáOë6¦Øça¿~s®~"exU@8´
-À5Yb\1f@WÔ)\13ër\93*£¨0Øñʦ\aáÈ\98\1c»ÔÖzs\vÁiɱD»Ü\11+Q\89Èhî@±ÆN\12ëPm\8eE>\7fàÜäÁõ\9e\ 3í\18=<a\8f\ 1Ñëþv\v\82\93\16×\ ekýùw¡Ó\ 6l\f"m·\89@Ç1úÃ\ 1nO\1aÐ\ 6²
-©G¿\e»\9f)\8e\15\84½Ø\19l¸vÓáZh7a\8a\1c\8cå\17\9a®X7Ï\92Î\f\9c\17Ãû4 ¬*òbÆ\1acÇ/tÉí\v¡\86\88òåX¼q3±jÚÑi\83,g\93\1d\91\1c3\9b·ÊT\ 6rE\00Þi°³\ ekâÀ\8eù_\86\97\v\f°S0g\15ä\99æ¶Gè¯S&¼\80Ú7¢\86\89×\1e\16Ü\8d»\\ eðÆïPG\ eLZ»\88K7û\8d
-mÊ\92q¶ëHe%säG¶Ú¦_Òvù|\7f\12e\eÓ\rAM\b\rÂÖ!ðW    »*¹õ\99;\1aÓ19\9e,pM\8bÀ*®ù%«X6\9f\97ÍÅü\81\85\11!\ 2<·Ö³>æ\98>.hxþ#§Ü\1dE\a»\81\87\%ïø"µ\ 1¼c)ßÂ\ 6\v\96ÊXcÁ³¾íúÌ£\e×\8bB\16\18\98P\84XA£ñÚwåº\9c¡¼ÐWRâ¼KS´Å{%Ç\ e\11°T¬SÅ\1eCdo\8d±_\1cñ¦Y§\83\8c¢æ\e¦RBÛTç{[ÛÖdXP ÓÇÿ\1d\f»Ô¿ëy\83.omËÑóý\b4×?³\ 4\0`%\194Ìm\16x\av'\9a\ 3ß¾'þÕE±7\80§þнdöÚ\fÁxUû¾ö?Ü!e\83endstream
-endobj
-1104 0 obj<</Type/Page/Parent 1011 0 R/Contents 1105 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 537 0 R>>endobj
-1105 0 obj<</Filter/FlateDecode/Length 1738      >>stream
-x\ 1µXaOÛH\10ýί\18¡;]*\11c'Á  H\9c\14\ 4´\9cÚÀ\91´\9c\94ôÃbo\88[Ûëó:\ 4î×ß\9b]oâä@×J-\15Q7ëÝy3óæÍ\98¿÷\ 2òñ/ ~\87º!EÙ\9eïù\14\ e\8e½\1eõ\ 6}ü¿\83ßRÒ\9c7ð(\7f\ 4üqûv/\b\ 3/¤0èáá\8c:A×ëÔ«\94Æ{Í5v\8f\ 6^ÐÜm¬3êú}¯ÛØe\10Ýà\18\9f; º!Cò­Å°\ 3ÃvÁ\ 6\eË\8c\ 6\ 3oÐØk,3
-z\8c{s°¹Æ.Ün\1em®á\87\ fï\eg\9bkìvú[\90º\83À;¦ ?À\99\8cz8Û¯W\f¸¹ÆîQÏ;jìr\f\82°\a\v\11Z»à\83AÀá::Æ\97À{\14Â\86Y\98½Í\92Ñ\1eÃâz¯±Ä\1eâu´Ùcs½\17Ò~6Ù;¼\84\ f=\9aÌÁ\940äÀNbÃ\ 4\9f&Q«ïu¼®GãeQ¨²"A©(\1f$åËì^\96¤æT\94I^ÉR¿\99|ÁU=
-\ 2{U»ÓÇE­ë\R¢õRRµ\10\15-\84&Q&Zæ\14/qò\ 1_K\8aå£LU\91ɼ¢\ 2\8fH¾x,²{\ 1\82vpÞ<\95K\19S¥H×Xâ2y\ 4\86X­òT\89Ø ð©m\88
-ËsURàû¿é&J\8f>jgõ.ÉqVÓhBÃ\9b;¶¢U&W\fS¬¾®Di­\89gc=MtåÑÕ\9c2\85\82\8139©\²×\r\9bu0ࢤåÚ\90\16\19|4h\ fø.sh»ÞÊ\a\ 4?LðZT\16Q\94&\b\aÐkYÕ\9eF*ËD\1eo\1f75k\8e»Ø·(\ 2¸{FP\aLVÆ\85ú\1a¡µ\8a\12QI{Ó&b«¤Z\10\8e&¹®D\9aâ°=áÑ\ 4I\9a«4U+\ e\1e"%\9fDV¤&O\vµÂíø.RË4f»"\ 2Ò\ 2\ 1[ÈøÄò§cG\v®n¤ç\17â\9dÖÚS*Ô\83¢öG*\95ª~Õ2*\81º\1dѾ\ 4×,\ e½o\\a`ß°´u®2\91ä§ÓÑðvt5üL×ãÓéÇ<yúLcY\82\e§Ó5\89<¿-Rp«û¹¾£Ã*\ 1\1cÓ\ 6\r\9e\ 6¡Ûv&n,½éÜ\92í*\9f+
-\8cS\9cö\1a\añOýÄ\bÉ>¡é»\ez\ f"\97\7fÀ\8b\9e\ fE\ 5¢Djº\19;\v\ eÀ\8f°Ð\ 1Ñ\7f®\85Þ89Äï\87¿^ðà»RéôâGær+\ fóT<è\93©ÿ4@Ø}ß\85\99\9c\934\9dáçæúíõl¶(Ú\ 6×\8b\ fÇRGeRT\89ÊO¦öùÝs\a£k:¿½útqKÃOë÷ó÷\17ty}K\93wWcº¹½\1aM.n\ f\9d\8b\1a\85~2u»\8e\17ß\14ÕÙl§$~·ee*g£\1cÎ?\9aÍö_g&6\7fFVÆË(\92\97iúÌjFk4\10s[Ùô:(\8f\1dlö¨v\17"\19\9bÆÔóh\18Ç,I#¹¢º\904=&Âè]£²!ðö\1e'\92¨^Û Î\9eÑ~æb\99V\auËQó9ú\19A\ 1]s#½\80¢k~0É!\8bIn¢|x\89\1en\15[g÷^¤òù¶\91\16\rnßaó<o\9f\954\96%°§ZAIÑX\8cªæ.\95<iÁC#ªöY×\ 2\9b\1eűó\98î\92\7f¸[%@`µ\9aûÙ*\81\ 3PcÍ\ 2­rÄ>1ð0\b¶;¡\15aÖu\1cÊe\84nÀý¢dKâ\1eÊn\1am#qòIFË
\9eÓu!óÚ¡\8b§Y\8bË\b'¡·³7°Ê=$Î\92\1cn\95¢B\8bf·ÚÛMò1Iå\ 3\ 2:k%\9eô\8cä\13Úµ\8d\1ef!\eTS\92\80d®Û\89ììMM\8c¨~º\8d¹. ×üg\9d°o®3íÑ|\98¹Ö4JgÀ\9cXÇÂÄI ªÎìÊFõ\94\9e¥\9d-Ö-û¥\9e;C¾x\921Tz\ 5\1d&ª¸µ\86\99\96Ú\1d\8cÏÇ\9b´\a¶(A\11N\ 2÷Ó:\1fÈ\8fa\13gw7=\f\¬¡cWÔl¶\991sÇÿ\ 6¤Õp\7f\87\8cß<{dKÍcÞ#`¯ëåQ¤K¤\99ÙV\94ê¡\14\19-\94úJæYÝ\94\a\ 6Àqt9\80#¼ÔϺ\92YM\17Ë\ 4Wz\rb\1dÊ*:4'#Qìð\85é%
-XÇ>F\1f\9a\83\81\1a|Å<õ͵<'\14
-\94L\94Ï\86|¬!u!Ý-0Ñn&>ÎмT\19b`ç¸\ 3\14\9fñ\84\86bFW0Á¢\14rUY-8°È7à´ÅLj\e¾´lq»\92ä\bÙC\8eÙ\9cHþ¦\11\1c\17ÑF"\9b\17r\1cJY\88\929f\83n¯tqn½&q̵
-Ù)0d*JUÄáeH94ÙY5\8e\9añÙ¤\93å\14\ 3\11:\bÉâ@ÔB{Àj#Ë\12¹Ã\vÁþÐÈ\11\9dË<\91ñ>+\15fÄeÉ\8a\C¶Áöh¤\f\ 6Lò/ÇÆáÚ\ 1P\93Ó:î:\ 5D\9cç]£~ÐÈÜÔ%Ü\83nVò©bdld[F\ f\8c\e\8e.     ÄWX\95ãÙx\99W»ü\99\89\b\13\86ggÉ3\ 1w\ 5\83p-<ÿÕ°V,S     g] \eéÝHßKzůG¥ÌÔ#[\8113\9d\1aβ7/6,\e\97A-¸A\88\fð^\8f\17P~gl\8d\87\1fÎ\86èIê\vÚ       \9d«hÉN \ 5(ÓÙÚî@»ß1Bø]¯\96½~Ïë\87\ 3¼£ÂR/`(\17\93½?÷þ\ 5X\13Þ»endstream
-endobj
-1106 0 obj<</Type/Page/Parent 1011 0 R/Contents 1107 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 544 0 R>>endobj
-1107 0 obj<</Filter/FlateDecode/Length 1663      >>stream
-x\ 1¥WMsÛ8\f½çW`rrgbÙ\96\15Ûée§_i3Ó¦ÙV\9dì¡\17Z¢m¶\92è\8aT\÷×ï\ 3)*\8a\92v\ f;M\9d\98"    àáá\ 1úq2£)þÍh\19Ó|AYy2\8d¦Xá\8f\19\7f|z{2_^D       \9d\9fOñYR2_E«ö[A\9fy?\9dÏ\97QÌÏ\16øå¿t\8fâ%\8e%«%¶Åø_KÚ\9cÄñ9îH\16¼PÂî9oqß±Äïxx\8cMͧ³Ç÷ñ\83\88\16CCü`6[=~ð2=\99\^Ð,¡t\83ø\17\91»°§\94f#\84\13\9dGôY\94kA¢Êé¦V\95\955ÝèÚ\9agé7\9cNp³?=\8e\978=ºUU®\ f\86®ÓI<\ 5t{>CFÖw²6$\8cÑ\99\12V\92 =n¡\83²;\92"Ûù\8d²\8e(ÝI#©Òu)\8aâHV|\97dw@\f+¤7ôþ&\9d=?cóS\1aÏæ\0\ef_}ü\80Eº¼zÿ\ 6¿¤Í¢(x^6Æ\92(\8c&Óì\9dQ¾-ÓU&÷\96/äµ\9ek¹w
-\ eúp#zy¤\nDSØ3ÒUq\1cØÖ\95\f{Ý]gT\89Rætê\91ë£v
-ß~*\ 3\ 2\ 4æh¬,\83£¹\96\ 6q[ÐÃEÞB¤*Òu\ eØ­\1e\18v\ e\9eQ-\10PMÊ\92B\188ý£Qµ,%pGt!!Y¡°b¢ö\8ex\ 1\ 6\ 1¸k\8d\9d°m\9e;'~\ 3Öé}8ºPÕö\94\1c'*ç±D6}
-á      ~\ e;Éa\16z«2Q<å=ûí°WÛ
-\90YM%`Vû\ 2\90¶iÁ\ 5\85\169­E!ª\f¦\ 1\vm\84*H\83[ø®6tÔM\0ÃG8¸z-9­\8aíÂ\0\19]J\86Þèê\8cØ×É%×\r³{dÊu\ 4Ælür ý\b>\1a\aNºð\1eêF½¥Ée\1c.\91USº \ 6@dº,Q^\ fÏ£h¡\13|þÞÚa§P(\99¨\b®7ÆãåC@}\82Y(N$\ 2dÔÛZ\94>è­¬$\18â\,@=\a\ }\9f\85>6È\ 1ê\98å`<O<E\96ÑÜU%]\95\8eq\86\v#­?\11üà      ÈÜ\82I\95¢ÀºÍ\16\9b!\0\96ݺS¹säËõÕ?Ä<½\13EËS.ÊÀÕë\94^ä÷zs«~\89:\8fè\12Y\ 2\87\95\ 3\f\1c\11Vqò°A@Bj¹qUãÔ£sç ×d\14+\90óßáì>\9cÒ\ 3ñ\11í¬Ý?\9fLT\endtSg\12\ 6¶2ª¤\9d<\9d©\11Ô\8d\ e²(ø7¢\19x\98ë¬á\9at>¢h²¢É\91A'\80\1c\ 6\1e²5Ê\91«Z­\e\ e\89áG\99\18\99ñ7\9c\81\11\16¢\0)Ø·®\95tôì\89"*³Öyã\ f¡´ØÌF
-ÛÔH\ 2¤!`âj§ß    Æsî/H$§~\16Ñ-ë\ 3\1c\b\aþz"ó¼=<÷B\94é¢h=\86\81ñ\85æe\98\89È\1em5Ä\19îð\9dè¾ã L7\8e.¼KP\ 6àj0»\96¨8eu}\ 4\82]Ʊ¼\ 5Axk\8fAܱ.Î'\17«N\9cóZA)h/²ïb+Û\ e\96µå9^F+\9e\ 3\10Æ×x±l\15 \90Û=ìºÍ½k\1c\80\8f¬\92\19\94@À3øE\19\84Ä\95\1aoè`qå\ 3\ f\ 6\8e´øÿ?O \0ª2\16\19æõ\1e\12Ì\9aá\19³¶\ 2Í\84qiw\ e\90q]    \9d\83[B×õ\a\ 1\9cø㡹?\19EèÏ=HÃÀ1\8eWÑì\82ÆIâE\83¹\16Gô* \17\1aÍk\9fµ\9b\aY\vyq¢\13$\a\ 2Ã9`jwøÿ\ 6rfèZ\1e5°à\f\99Lï%\9f³\g¡Téë¨Ó\90\90ÃÈþôÓÄ\0\97Ç\ 5í\11ì\97±cF©1ýõÈûõYDW\15\99\1dÚÝ\19Ëx°4`\89¯©í/µßKß+î§\1f+jtÅ\82\87\1aNq¨¬\96f\eUH\831A\82\19P\9c«ëKj\97\98
-(.\9cª¡Ñ¼H\95\94,Kk\f^Àå      FýY,\86\9dÂ\ f~¿\91\8b´_\e~'GÙ\8d?¹°bÍJÞ>scJ)\8eÜþ~4\12\8a\97Ó\9dÂ\18e\11\b\ 4\80Þ¥é\r\95\89J\99ÒDô\ 6\93å Q\81\10¬(¬".ÎÎÒ\ eÚ\8d\1ctsjN_>½wyc8Df\e¨\10\ 6Ü\8aG\11ÆÙq\ 6Ã\8ag§·\18¾\r,3³ÔVq\89\1eÑ\82ÜÀÃî¿­\9a\9b·m¡\ e\9a;äJm8\15ÐßÖDg\1dÁãFï\12ÏÉð\ f\93èÀ¦ãoÍ[} ÷äj±\ 5ùXÚ}\86\16aTá1Ô/\85B\e!-<¨È\8aéá\1c\82\9eÔÔÊ\1e)ÛÉì;g\ 6\8c\17ëBæ\7f&JÒ\8e\14}ÉzåFÔ\87\ 2ÿ0¨\9b\9eèsè]`OPÖát\87I\91ýj\91ðVÂ\80×k\9aᢱ÷füîãmú1Ú\ fÞwF¾Z\1e
-3RÛÆ\ 3\1eÇÒ\8eÝ\ f¨ÿ\94ËÀ\1aM\9a³vÐÌ?°Ù»¼js4[àmr5Ç[\e¿Ù¡k}~ñáå\v¼£éohºôº?nðÉq80^Æ®Ëý÷ë]²L¢åbå\9bb\12ó-oÒ\93¿Oþ\ 5æJÄ"endstream
-endobj
-1108 0 obj<</Type/Page/Parent 1011 0 R/Contents 1109 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1109 0 obj<</Filter/FlateDecode/Length 1824      >>stream
-x\ 1\9dWÛrÛ6\10}÷WìäI\9eÚ\8cnÖ%/\1dçîIܦµ:é\83f:\10    I\88H\82\ 1\9aNÿ½g\ 1P\17ÚyhãĶBpoçìÙÅ÷\8b\1euñÕ£q\9f\ 6#J\8b\8bnÒ¥þ`\92ôi8\19óïøg$-/^Ï.^¾\1fR¯G³%\9f\1dMÆ4Ë\bç»]\9a¥\1dAV:ÒKJuQ\882£\\95\92¾H\93\93M\8dª\9c½\9c}\83\894\9a¸\1e'\13ö>Ë:óþhLáiãÀ?¼î\r\10\a\ e\bú0ûô\13-\84\95\19­\8c¨Ö*\159©ÒI³\14©$§É­å¹ëê\7fº¾îO\92Þ\94®û£dÈÎg0¬JëD\9e\v§tIi®déhÞQ%-´[ÓR\9bÂÎ/©2z«2iIP!Ei¹\1aßkiöª\ùøî\8aÊ hK\99p\82³AÍÌV\1a¶@\82+Ð¥CÒ\85\9aßÌ\95õ\85Ý\94zWÂ\89O\9b
-\9dÉ\9cJQ°?K;\99çü³q\8d\8ad8\9ek\91\11£\113ðadFÁ)Â+\ 1\9dly~\10ÅBø·¾ª\12V,ý2\v~c¼6\89o\9cÖ\bù¨´ñ\13*\85\82¤ÒZRø["ÉÚ\90u²B\94\88Èã\93"\v\ 3¨\15À\15F×e\16¸p\13\99Ò![,BÑÃ\83\86$\1d¶Ó>kªôÙ³>ä\97ï»4e\ 2£ÎýaÀ\17µ\97"]\ 3O[W\95\87\81Ò;\99º\9a¹ÏàÐ
-5+)\94n~\19óïu\93    säïÖgâ?½\84è\10Í+ú\80ö`\92"Q£\81¢p\92êÊ\ 3\94)\ 3_Úì}\170\a¢]o\87¿\ 1*~7À\15QxÎg\1f>\ fÕzE\7f\ 4ûüj\88\9c\96*\97¾\13Û^\ 6çÑÞY[3³JºÍ²/\81so=oæ\1dPýþáú÷/oZ\11ü\13?÷{É\88«2|Æä¹Åw\8f'Ö¸\8b\ 5J\8eFÛ·,s     RÀ\84\92q.±\aøÐQ\93\18RïöWè\ e:/\1cÔ\8b\\16\96d\99\82X\90\v\80»[\ 3HUTx\80>~Ò\9bNkH\16ÀÚ¡\9dØ\b÷\18Ù\8auF\85ª,¤ÛIY6AF\95Ú
-£tméH£¨\14Â\1cÙd\13z\ f>ÉGÁ\ 1\ÑI\87©2Íë \1f\11\9cÑ\8bÛ
-G[Î>C=ÌW\ 3\92\1aº»C\83þIÛ\9b^2yá{«±:½!\be\8eö\83èpϳ~ùÚ ç¢\93`\9e\9e\1a|\11]\9e69¨Ë\ 5å\96\1d#ƪ\84\92
-×èb0\8bçb+i\812E\96#\93ÐI\11½\84nY¹\\rP\ 1m\86Dv*Ï[y\82ñ²Xà\99c\17\fG\93\e4)ò\12?5ÔÄ)\106S"×+ôK¾\87æÄ\82\ 6ðØ»\ 67¢ÿ&\7f.2biùý^«tC¹Ö\e\96®\96ß!\86¢ÝCÊ
-D¾\82<£s\85c\v,0aDz:\ 6\85ùøéóý|þà_\98ÏßÔÆ\80woté\8cÎ\1f¤Ã\7f\85ßçs\9fÐ|þ®Ü*£K¦g0Ú(Þ\89\15¼o%\ 6¡¯ÍI]D¾\13{KµEA8t\94ê\84Q       ÍÖ¬È\18\0\e\1e\19O_4\12é\eÿrH\8bÅ¢\99Å\8er       ØÚ59c×\93"ÃY\ 5\83H(¡\8fz\87°Í\15\859\93i8*µ\v\84A¸-$b0\\f@\ 1¾\97,\10\9c\ 4º\19\98¢\89\98\8a)¤j¯kNú\99\9cI-=g\91\1293n\1fè\19G£Ì~\8e\9eO     \8fBrÃX\9eë\18]U\90\v¤\93«B¹0æð    \8d\10ã\f` D:Lû\16á $\e±BÒ\91\9fa\89x\9aø\1d\92ÍÏÐÁÔ\9cÞ¼\9cNZ\14\ eóÔ\93à\884\82:$\ 6Õ7ÖÅ  8¥\1e67?\ 2\aq\ 4\8e\93¡\7fØ¡{\85õÊo9Èhit\11\1a\98<r\96ý¤\9f<>%å8(þ\a?$}$­¤±\12"g\ fâ\1a ¤kQ® \bóÎN\ 2¾
\8aÝHoe\86á\82\86\83\eÂ'Ã\99¢m\8ddÎI{EE\13`\8b%>VP@>¢\1d\19$(x]Å\88=9\96:ÏÁ\13ËÜCÏT­!Æ\1fA"l\1dq®hk\15ô\r\e«,YÍ­\97¬\83ÏWì\14»ïa7¼[zÎeÚ³
-\14A×xö\95rw\8a\9c/FÓ\83q>\ñ;~Á+¥Ì<\85\16\18ÓP(¨\11èÓdÒJ´\12\ 6\82\856ÀÒ¤ÍÆ{³,a\ 1\94óõºiÚ\1f\rÕc";\81&\ 3ÊNlP\95l\8b\8f@\8d\e\0Äj!\1aÓ Eí\10µ/@óz(X¨Äô1æÍ\19¶ramâJy¬®|*À\19c\83\1f4ùÇ\9bA£«\9d\18\86M2¹\f97êØñÛMB_yÀc\vÂ:é Ñ¸zpN¹Ny\7f\10t\88¨\15\rÏ\avÜä\19u\7fööµ\9f©K¡ü õS
-9éÊoØlº¶Í\16q\1a\1cÈÍ{.K\81°V§¼ñùuõúDN\8fpÎ/½¦\85\94\8e»o\ 1\8af\9fÉØo+~\16\88ܲ\b\15¯Ú\ 6·¥t³\13\ 6ÌÂ\8d\flW\v\95+\aÍ\ 3\85ÅS¥-¸\ 3¹ÿ\ 22\8f\8e
-ñíØ\7fÏrì¦\1f\1frl䷲Ȱæ\1e"\ eíq\80ã|=à\95\17zn¢\0­5F\8e¿r\1d â\9a\ 3\9cù%3G\1d\96Ú8§T     <q\87â\8dǧë9\8d!\94Ê\fÛ \88\0\96[\e \8aç¸\91ð\9aËV\8f 4\95"µ*1jX°\82jûc|\9eñ:\ 54\ eZÏ6ø\ 6ª\ 1ÑóÆlúî¤h\93¸8ôpû\9eL\a4\1aÝð\12ýp{ÿú\967\9co¸"Ð[\9dÖ,¢>/ïº7Â5}2 ëqß_¦YËÿ\83\8c\ fÇÃd<\9a\84\8bøpÀ&ßÍ.~»ø\17\8c½'Aendstream
-endobj
-1110 0 obj<</Type/Page/Parent 1011 0 R/Contents 1111 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 547 0 R>>endobj
-1111 0 obj<</Filter/FlateDecode/Length 824       >>stream
-x\ 1­UMo\9b@\10½ûWLoD*k¾\fvo\89ÚF9¤Jk¤\|Y`±7\ 5\96î.qòï;³@â89ôPYFf?fÞÌ{óüg\11B\80\9f\10²\bâ\14Êv\11°\0\11Òã×õ"\8e\81tµa)´\90d\19[Mo\rlé<$¸\17C²Îðw\84_- ^\å\8bå÷\ 4Â\10ò\9ab§ë\fòÊ\85\ e /½\9b\1a\9eÕ\0GÞY°
-Z¹×Ü
\1d\88'i¬ìöp\91?`\fDâbx½\96\9d\15Ú°JÔãÖ\1cÞ\83Z6\ 2p[\81=\bèÄ\11\8c°CÿÙ½\96\83Ö\ 2Ó¨®y\ 6£\9aÁJÕQ\84\0ü0f\11âò¤!\14\83\11îƽì*u4ð#\87Ë»{Ú\91\9d±¼iÜ.®VZ>"\14\84[¹¥ÍӼĠ?`°\12\v)\ 4\98RËÞ\8a\8a²ù'é\ 6\83\ 5\8eE¬æúÀ´EÙHDz^\1df9?«ûòó\f¶b¬á¦u\r33tNUÃx       ¸ËqF¶Þ\83\a\akû/Ë¥\9cn3£\ 6]\8aZé½`\9d°K\ 2òzÏýÂ{§µáÙ\91FÞö\8d`#òrªÒÏØ:\84\98Ä\84]ßEi6Ñ<·Á_±Íz\ 3~\9a±$vÔ\\96\a;tûOo»â2¦,HW\14(GÖkÕ4êø\81p°¯¬TÝ;Ñô\óV\90¤\80£fñ\88\91\95Ð\ 2)UD^%z-JTeåx>Jä\1f\97µhÕ#®\19¥:\ 6_\15tjìæ«\9a&\1dµØ{'ÆI=\8e\ 2\11½\8e\86\1f¥,¡*&\85OR\1aE½ó®w\17\1fõ\10§èM\ 3ç\80®Á/º>\v¹ó¶ÿ1Z£°;¤ª\7f\ e;O¬¿
-X¼     Á\8f\10îH3Qxà\8f\ 2[,:°Gì+\8eñ)GUEýÜò¶àè3ø!\9eHm\85°È"\98¡ï\95Æ9¯_\ e\ 5ì     
-^þ>r]¹Æ\9fÌ`É{^ÈFÚgÄÿ\96\14¯\92\86\17h)¦Wª1\13e3xowá\ 4A©Ý \ 3\81Ù f+@Ã\81W'YF\ 1\1aê8\7fæ}F\94\fa8Åç¼`
-6â;AÀàJÙ\ 3Õ\8a\8e\87¶¥zbbTr%Èw
-Ô(ö\8b\fq\9c\0ÙÕ;o\85à[4§\9eïÉmQÚ(ý©Ü
-\8aç3\10èµ|hì4ÅëI´!Ng°\8e!J6l\13\93\10·\97·W\97p§Õ\83(-\ eE9´hdN\1d\14Ñ\9foøYä\84\8bÓÍàÖ\99>   \88\88Ôª}Ã\e®\11ËOt?É\12\96¥kü¯Â\IBKßòÅÏÅ_!Ûò\86endstream
-endobj
-1112 0 obj<</Type/Page/Parent 1011 0 R/Contents 1113 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1113 0 obj<</Filter/FlateDecode/Length 1388      >>stream
-x\ 1¥W]o\e7\10|÷¯X\180\9a\0öIr\14\17Ф1\9a\87¢.¢"\ fI\1fxw<\896\8f<\93<É÷ï;K\9e\12Û\ 1ê8¶t"w\873ËÙõÝÉ\84Æø7¡ù%½\9aQQ\9f\8c³1½~\9d-hº\98ãå%þ;IÕÉÛåÉèê\r]\8eiYaÇl¾ eIX=Æ\93âÅ»µh\82t´Èèw\99·«\952+ºvÊ\84ôÂæZÖþåò&F\99ÌS\94\8bWÓì\12q^,²IF\1fLp¶l\8b ¬I+§4\99ô+/çÙ\8cW.×Ê\13¾\ 5ùµu\81\v§\1aÞC¶¢µÝR°x
-\fÔìò7.姭
-kú(ê\d\14#¥í¹ôG;9û\98.&¯\12ºãíû¨\95³5p|üó-\15ZI\1383ÞsxòÒm¤;'cñx-Éâ\87£­èH8Û\9a2£+ëâ'Nb¡\97Ø!ùý ·¼\17u£¥\1fíÓ\96ÊÉ"X×eýÒËY6ejþº='o©³-ò$4qÓ×°(BÇBG×ï\98   (¬\9cg¤,\17G0R\96¼\11P\81.\bS2ëa-Â\0`:niA!\9fU\14¡\15ZwT\82\vÓ=h \82\97º:'\15è¦E*,\84\8a,d­Ê\12Õ!\få2l¥4\f\80\91íhåäüh\90ù\1f£î\1fâû6÷\9d\ f²Îz\ 5À\92T\eÀbú+¥ñ\83\ 5ãw\b\8d_\86\1aáýá\82¨\9f¼G!\e¡é4²7HZØ\1aHËÓ\8c>\81\8b\94\9eú\87\91¸\16R\82©¶aö\80\12\93½][À\89dÇb.,\97¾Ö ¼õ¬\80\8d\ 5\8dÏ\fù:Ïðy\95dª-¨sRË\r+¼[öåÅv­\8a\8fkÑê\92´µ·\ 3è\80\84x|þ]LbÒ\e±\92_^¢,å\8f¼at5¦7»K7M\95EñëóJÛ\è\7fwaÇp      \94\90\ 6TðÓ\vÔ4¤\13\89ýH®o,\8e¾Wr\10B7w{.SØ\vZÉ@q\17ݵ²\ 5ö B\e\9d\84oèW\ 1\}\1cá\ 2lÕv#\81âÆæß\84þ9ê\8c*\7fôd\ 2®ñ\v\8d\8d"\94\91\91ç{\9e\18;ô©Þ¥Pm\10ÔnYMPKF\15PÜÒ­\81C\89ܶá\19¶)\9d·\11\P»\ 2\8b\9c\ 6Ûà4=h\82\8b¤[\1eéùæ\ 1ûPNú¶>\88\ 5y\82\80\85>\15ktõÕÙÞ'Gz\16~BµC\ eúZïF¹2 ÏÑ\ 5¾¯Ï\1a:{\ÉÃR8Ú}\17\99Ý\87up´\e\1f\80Ÿûæ)¶\8e\89ïCø\84¿H\ 1<\94øß! À#EÔ7\92t\9f\81\93Â[#ÐJÑà*Ñj8h\95º\b\94\rn[t\8fÞA\93\1f\1ayNy\eØ{\957?\ 4\18«Pnc;\98\bú.?eóÞ\9d¥o{­añÐWÙõ£·¬\ 5.\12\8a\18.-nÙI\90\96\ 1h[À/áR¥âFì\93WõÒ{îÔlIB£ý¡Ñr\90ªE\8f\18äó\8d,T¥`\82\r.\9c\11µôçÜ!\92c\959ܪ\8b=&Á\80\8f\15Öq/¤ëß\96\7fÐFèVú¡Ý~b\9fç\86Ö[\11L\80O\90¸Å\8b\ö7©\8c­i«´F\9e\vô\92Æ:á:äi:\9e.\98¿ä û&\foÚ¡Vqj9\98\e\18ø\83¹\0A\1cm2ôE4S¸Z¢\85\11H§l©@"\1ag¡¥0 \ 1\16\91xìïK2{\14\ 1\87òQ\15N±Ç9à3¢Fôd\80à¿â     -^KTÉOô¡Ú¿¡J(\1d\99NdÕjµ\ e°m\0Õ²
-ðO\17M<v$ô-O{\ 2 Q<Πù÷\1c.\89\0\7fä\81s\1cº?\94)%àÖÊp£\94tÊÂ\99¶Î¥;EQxµb\8e\82\1d¤\8d\93Cr\1eÞ\90w©zR×\19ÖÆ\12qÏ~Õ2 ÑÏÑ¥OkQ8ëO\13¹ÜzÊ\ e\85Ø+ãd£E\81´q\8c\14\ræB¤\12Aöµ\87¾\8eb\ 3Z\1eò$Z¹Ä\98\87$\ 3\8cg\9e\9b\9a\87.\87áø\90\ó\gü:õ¼8·D¥\13Y\ 5< `daÎy\15,ôéX\83ܼ'Ò#]*®³\9bÇ\ 2\1c1\9eæ\vÜhäÞ\8fQ,\18ª´A¡r\9aÑÕâa^\9fÍÒ¼þý\7f\18LçÓl>[à\8f\v\f\15Ó×\1cñýòäï\93ÿ\0%\83\aËendstream
-endobj
-1114 0 obj<</Type/Page/Parent 1011 0 R/Contents 1115 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1115 0 obj<</Filter/FlateDecode/Length 1241      >>stream
-x\ 1\8dVmOãF\10þί\98ê\8e\86\93\1a'NL\12\90\89;é*UÐ&UU\ 1\1fÖö$^b{Íî\9a@_þ{gví\1c\18"\ 1\84øeÞç\99göþ \84\860\1dÁx\ 2Iq0\f\860\8a\7f4\9bò5}4Âʽ\98DÁ¤ûüóò`ðõ\ 4Â),Wdj2\va\99\ 2\99\19\ ea\99\1cÍ\82Q\0\17\18×ëµ,×PiYZÔô­â\1c\vóiyGê\11\84¤ÅêýÑ\94\,Ó£Ë\12a+\9eÀ*HYÛkz\13^\15¤á·Æ
-m!~¢(«\$,a34\b\89*
-Q¦°\956\ 3\93a\9e\83I´¬,©eÂ\92|¢tÊÂ\1c\ 4¹\ eÇÁ\88]\v½®\v,I\8eÕé=\99¢ ù\81Z¹{\97\ 5¬d\8e\ 1\9c\83\91E\95#à£pßN\86bÛHÒö7åÚ@!×\19Å\89§>å!\9c´\19GAÄn¡ùñÆÛèç0°E50â\ 1ý\8bÃ
-\ e]Ù¸X¡/\16k~øa\10Ëò»`\9bÔ0\98µÖ?À\16¡\10\e\ 4SSO]\15è\89\bÚEX\eÔoè\ e\9d\ 3\99B¿\823\17\15E\16¸¨ÞPpÎt]6\ 5ô½à\82r*î!j­4\14h\8cXc\9bRø"^ßS/ÞVÄõ\93»¢\b"¢"$Q\bÂ\12FÉÚ\93ª5\98'c±x#¦]\12y¥¡O\7fW\1fCø8\82ÑÙÙ\8f¯\13z\89K\87Êe\86%ûðh\ 4á0àa¢\19\81\85z`\0J\eÀ_$U\10\80W\f\ 3Wj\8eÙ÷ð¾Æ\1a¡DL\1d\84cj\88UU\85\12\b\94\8clì"\93-x]B½­=@\9dW_¢;\15ï\85W\16\9dÂ?Ñè?8\ 4L2\ 5\99l\9a\98ÉN¥¼ä\98%M\11'¹$èÃ`\90«Dä\992v\90\8e\8aHS\17<\8döJ$\b²\9aS#ù7\828\11ƶ·£ãc(\va6sº
-ÚÏ°cîJ\18³¥:\9cBçÅ\85*\84,ç×ç\8båùïË[¸\̯ÿ(åã-,P? \9e_/D\11\vf­`zÛQ¦dNáææ¬i\82kø«ä«ÚZn!\ f·\1f=*\940T®~8=\1eGpsÄ\14¹\89\aææ\13Ý\10\98\97   ¯y¸Ï«k\çe8\8cNÜØ\8f\9báw_­¯\8eð.þD\94     æÀÊ\1d\91/n¤üû\9cÓ D898%\12K)Ì\8eÂ;lþÒ\9ahÌbºÏÆ[\19î\1cࣴ¬øöTAÏ\87×£     HeBãÜ°4C\9e\93ØR\ f<ÒÓ\0h\f\1d½30\89ùY\86ü4H%ê\15\10KK\8ckr\14)\97A1\rI\13´\917LÏ3JY\81\8a\89ô\1aVjiFÕ\96°Ð®\80Ò]äJm\80V\a;|É\17\1e/~haËë\85e4\9a:ç=¢q\9fëûZ&\9b¼¡      ò       ²]1nËñ\92s\84ç\88ͱ\açã\19.\80Ë\15í%¨Pñ\ 2Ê\98XÛÅêµ(\b¹có&é\ 1Údà,%¢òq\13qV¨©^Fª\92¶\   \ fBKE\ 4ó\8c¯|õ\9eïúþ¸Y]³`\1cÀ\9f\9cµ\93Gm UðÍEôóë¦7+¾­>m\1c\1e5ÝVº4=Îb­EÁ,\98d\98l\1a:ü^\1c\7f\8a(E\81\8e\8ey\85Õ\86+Cõâž.åßÄH\ 4\ eG\bÝê\7f¥\8c\9b\933À( 8ö²'Ïe\e^\9b$¼¨äë4ÝÆð|Äæ×HÍ%0ìJ/KÚX\85°TsXiU´ë\84bkn\9b2øeÂ6,m\19\ 6ÖJå¹Úr¾\räèa\aÛÞv{bÁG«Eb\1dIï¼¾/Û¾Ø\9f\f²«Ð3\9dÞ¿îØ@#½Ë¼çk5kN}á\84\ e\9a³1L¢c>©,Î\7fý|\ eWZÝabáB%î0æÊÄzýV¼?\1dÑ   3}Ï     3\9aFÁt2£ó%ÉG\136óeyðÛÁÿó\8dYèendstream
-endobj
-1116 0 obj<</Type/Page/Parent 1011 0 R/Contents 1117 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1117 0 obj<</Filter/FlateDecode/Length 1547      >>stream
-x\ 1\95WïoÚH\10ý\9e¿b¾\91\ 6B\81\87Tm®­Ú*×PÝU\8atZì\ 56µ½Î®\1d\82Ô?þÞÌÚÆ8ÑU§(!\98ÝùñæÍ\9báþdLgø\19Ó|Bç3\8a³\93³è\8c&óWÑ\94¦\8b9ÿ\8f_§i}òvyòòê5\8dç´\ãÊl1¦eB8~vFËøt\11M#ºÑeiò\rU\ 5\15Îäe¬
-Ry\12Þ\90×îA;ÿby\aKS\1aÃ\0[\1aMæÑ\f¶N\7fØ\8a2µ§\ë\84J\8bó%[ò6Ó­9Okëho+G7*[)ò{_ê\8c\8fW^Gô±$ãÉ\97Îæ\9bt\8fÈc\9be:OØâV\95|\93ýÃëø<\9a°W\ÃGÈPÅ&5¥Ñ\1eÎì\83á+«½|$¹\90/¬MµëDv_é
-ÇÛ\f9]\93#ÀL\95ÆæQíi2\ 3\9að\14\ 2vú¾2\ e×´\81[GªÍ\8d\90\19\o\9c\92|\12\9d\1aàuø¸k\9a\96[äÙ\82Üù\88¶ÊsÔ½4CT\17\ 1ü3zÝ`?\r±\11å*Ó¿Tj\94\1f\87\97I\14E\17¶àLÞ<¨´Ò\17x\10îw\8b'¥»Bè*ͬ/ñ\92\86¸\98\b¡:~x\80\11 \rØÕ\80²
-§W\9aP¡Âz msTÌ®a¡Øª¼Ê´31cR¡|ÎÇ\164\1cü3èå\15o\95Sq\89\ 3 \1f3¥v        +Þr0vGÛ}±Õ¹§ÛÓÁhpû\82\0ÐN§iD\979N cæ\8câÿa'Gí\1e´À!\cn\bÎÚ\r¹Ô=ÿr\8dMìPN\14Ó\17*Ö`\ 1\19a"Ø\95°?E\83ÀÄr@je«²\8bH\84j\1e(Î^A 
-Ð#\83=S\9bMÜÞ\92*{þ9<ð\9bqKM\8e\ 4ýXò£6ræ%\1egUZ\9a"Õá`\9f\9d\1f4ðUø\95\8f*ÃQÏv[\96­\r\9e\b\85 \15£\86Ö\85£;.e\r\92 ÇA\8eÐà\90\86ät\1c\11¿ÇÛ¶é
-\178vtI\1aIêqt}òìõ/{ºf\89i\1a\ 4¯L+\94H
-Úà^\83~dðü9\83\17~{\ 1|Ñ£@\81;\8b\1fÄÙ\e\17M\9378Q¿?²\bé{\9a!\füÎÜs¶^\ 5[£É«\ 3Ä\8dr¨DZûP\91nßïÀqZ\e\87RøR¹R'\90Ã5+\1eTõ'ú\fMµAEÁÍ#ftlH\9fæ\9cJG Å\0\178±rqm¹©ÐÝO\98 n|\ 5\ e\89Ö¶^Zéä6Û1ÇÀ*|
-孃
-\1dðùú[«\19\81ólb\90\161\84Üi\95<i~\88;«/È-Á\19/¬fæ5òÞ!_CØgÂ\14m§ çCÒe\1cáï£AÒl~« \b\1c
-4\b\13\ 5T×.3ÞC\19¡:K|ð$ò\1e\86\92G¼ÕñOä2Z\ fXô~\17y\87÷Mä?PË\1c\82æ·¶J\13\fH\ 4§èæã\1f\1f¾_\937\9b\8c\ 5{óÙ\8a\ fðÄåG\92\ 2$)à('Ú¶î\10 \85O\1a·n\94ÃØ\17R\9e×#c\11\81ª\9fì\8aÃ(\87\88\8b kE%\ 2õì|\97\91\ 5
-px2*Ö\ e´rÐ[T½\0c[±Á\83\888Y^\a$tö!\17ïìjHHʬM3ÓÙ\1e\1eÓ\ e}\ví\ 4Á0»\87½
-ÔË\84¢\9dS\ 5ê\a©³\18,b³S\f\81\94\r²Ö\ri\15\84\1a\8ceãm\8a´v\163\1aÇjÑë\8bé\15·á\10ìFÅEz¹\ 1\8f;\83#þöþòóç\1f<}6õæTWÏ\99ͶVÔÀʶ\95¹{*Ï\88)z{ó\ eó±\97h ¢ÄÕôÝPD Æ¨ÂªTX§\9cÁPñ¥ÅXhr`\8bèJD\ 5J\7fÂ_âó\90>\8cs\fi_­2SBSZLö\98xiÚs\9e[\19é\ 1\15èÏw¯ÿcåàÆ\1e\10J<lî\98;²^|eÎK\ 4È:¤ÆðIë³êAíY&î\ fÖ\ 6\8cº×\98Ä¢4Â\ fÀÜÕ¾\ e°aVsðÝ\ 3½ÜD\1d\18°\àäìke°`\v¨ÄS}·Ý×\93?@!\85\8ac]\0:Y'$zæwm½ií¯\18Ú¡NÌù\9dbºÛ\ 3\818\95\1d/°ÂÍzA8¤\ 6qä=\ 1$\8dè/^Dø\98\82Ba\12äØG\82ÞÖ»Q//\95d&ÇA4bX­¥ò\ fFïÄJ[yá\86ô\ 5\9c4Í)ÔpH\8a÷\1c\ 4,@4ê\8fª0]k\9ü\9ek\1e-;\912ýX°°rÊȤ©²Za[  ëPpÉ\9cäbszß¿~ü\9b\ 6ܧ\ 3ªJlî\0\0÷\13\8d\9d\0\19\ 2Wz\8eë\15\v\8bc%À\99°Ö¼¼ZÔ_KÆ3|ùY\9cÓìõ¸^Þ/¿¼½ÄÊaï8Îw6Æ~\9a\97²ç³íQsa4\9f\88vþ¿ïCÓù4\9aÏ\16a_\9aÎÙâûåÉ\9f'ÿ\ 2ZÏg\88endstream
-endobj
-1118 0 obj<</Type/Page/Parent 1011 0 R/Contents 1119 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1119 0 obj<</Filter/FlateDecode/Length 1422      >>stream
-x\ 1\8dVÛnÛF\10}÷W\f\12\14N\0\99ºX\95d¿9q\r´@.MT\14\ 5\8c\ 2+r%mLî2Ü¥\15\16þø\9e\99%%ZQ\83:1@ï\92s9sæÌ|=\eÓ\bÿÆ4\9fÐå\8cÒâl\94\8ch6\9e'S\9a.æx\9eà·Ò´\96\8bÉì*Y\9cº\18/Ƨ¿\98\9føàÍòlx7¢+Z®á{¶ÀCFð;\1aÑ2}EøI3\1a>ªjèKçòa^fò26è
-w/IN)3\95N\83«\1ark\92kúâVþõòËÙ\88.Æ#\ 4ºÌÄZîÙæé\9f\97´66ã/ñ\90ëS\9fó9eë\9bÑh\4[ç\ 3»\18ÞMi<\8e\19\Lfìê/W\93ߺ:ϨP\ f\9a|\rÜÂV\ 5j\]Å\10\91\81¯ËÒUÁãÊxZ»ªÀ\e\1f>õÞô\8d\ fº \95\15Æ\1a\1f*\85,i«<\19ë\83Ês\9d\91êÒ¼L&ìû<\ 2\80P\ 1Òy´µ3yN©³\8fº
-8A\r9\91àHu^UYV\ e\80KøèÇ\99Ä,¯h<o³¼\9c¢ÄðµHf   ý\ 6À¼¶a@\1c Ýhru(ë\13ØÌ\13\83M5;@"\8f\f\8b\16Ì%lc7\ 3¹J\95å\e\v\9b
-1ï\U5¸$µ\82q\ 6\95ÿ0¡­¶5©Î\e\89\13\ 5\9fÌbtKX.P$d^\14Îâ]·Ê\81&°Öß\10*\95j£=s&\ 6|M+e-ê\12ÏQ\88U®ìCû'Jáj\9b\1dûùu-!+Ôx£CàÈú\86\ 6\94nuú@
-ä:b\ 3\e\94¼SU\92+\83A\94\0_\8e\10G{\82xQ»µÙ\80EÙQµ¹VÖµþ|Bm,\82,\12äV\81í\ 1B\87\15üg\8f×~K÷¯\98|\95ö\9e¶Zeì¬êG}ÿºõ\9eÐ\81ÌG¾÷å[»<w;©\88\9c}\83_LZâ \ 3Û$¯)I\12\ e)\92ì»Vê'$I´ 0\9a\8c¸\ fÌíÓ¸#Y¼\81¬\15SÓ¡.éV1ù¾oE³o÷¶\8d6\1aLPRL\98)º¦ U\a\8765)º¯é\83s\Û\8e\ 2\\ 2\81ÆC§¼\ 2\ 331¶¯½®:B\8d[ßK.Víkv\ 1ÅýZCßø\80Íô>C×\85º$ïÖaÇP\bs\ª3ðÄ\8b¸ä\ 6ÎVͳ\8f
-eëµJ\ 3^Ú;î:¦\ 5\eh\82­½&9ôHˤT´m\ 51¬EGÚÖò´3a\e) :*\926àÈL¿I:h\8f\bõ\11Íú9­L\19D¿\a\14\8d\ fmçT\ 5E4H_\9a\fD\8dpÌÀ¼3iå>\ 3\ fJ\91º\r      ÝÁµþ¦\8a\ 3ª-\13ýOc¯~>ò\8c\8f;¦D~]G:\9ebîÇ8\7füSû@ïU¡\9fî_}2\9bm ·¹I\1fî_\7f\84\9aBl\8dÆkÈÊKVO7Ù#ó/{ú\ f²\v/Qu·ó")Pètë\9c\a\89× ñÛPå\17·Bè²\84\10¡¸¬áà?\8f»\84\847Bw`Ò \9dq¿\15Ò8ÊÜ\8007D\ fejâü\b\848l¸\86°ø\8cç\18@è6úû\96ý1ÐpÎ\9càG®3¢\83\16Ãs¦\ 3ªÅSÉÓ¡\9a\1c\19¤¸Î\83A\1dØL¡\9a#穪\91&X\aW\86\85På"¼\aêýh\fÍ\13ú¤v=\97­¼\88\>\1fÐí\10:`Õ\8d\ 5\ 1¿×x\12\91´\8f\ 6©A\1cÎVT+®\1d\fl;\9f1íb\8fÛ8ÄYÇÛy\11ç\97[\1f¥{°Åø\89k\9e\rQ [iıÁøáW\ 5dÖ±\80É%Ó[\9aêY+x\ 3\967(4¬X\87\96\89ÛÅ\91ã~UXÙQ      ²:2I[\96':¿é4\8eÛ\87w\92[)+²:çNë{ýQQ\16   u\84\95\96r'ëñÞaóèt\99xüg\ eÒV0äèý\ 6\81nL*\90l<kZ\94C\89Åð\9d\85(#8\11 \86ìE,\15Ï~Ì\8a\17í8;B\83§\888ñ[\rÒÇ6E'Ý:®n´ R¨Ý^õòè¬\ 6Üô{=þé\8fnTËJõÌ1ö@X>r\eýÄé\11¥T?b×\91íàÀ\8c6ô¶©\84\a¡)¡óÝÂ"+\85ÁþèÍ?Ü;È\85\e\13­ÈqØ#§ý\15OBlõ\7fx·h÷×ñ\fkþâ\92f\93«¸A}¾y÷æ\ 6µs_X\83o]Z\17PU\ 1\9a\8d_t\1f\Ì'XØÿÇ>8\9dO\93ùl\81]\1foO\17\97åÙïgÿ\ 2\ 1à\ eÈendstream
-endobj
-1120 0 obj<</Type/Page/Parent 1011 0 R/Contents 1121 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1121 0 obj<</Filter/FlateDecode/Length 269       >>stream
-x\ 1u\90ËNÃ0\10E÷ù\8a»£H­\89\93(v\96­\0\89\ 5\12Pÿ@\1e\934Uc\97ÄAäï\19\93²D\96%KsÎÜñ|F\121\1f       \95 ÍQ\ fQ,bäI!2dZñ;á;\12Úè`¢\87ç\ 2RÁ´¬äZÂ4`<\8e\8d\16\85À\a\95\174TÍ]×ÛîÞ\9cYÉ \99\fÊ.Q"gióÒÂ\9f\beå¾hÅáûë\84ÆÙ;\8f\13]®Û\0X\fåR\11\16\12\ eÕÈ\8dÑÛß\ 6\9c\83n¶Ó\16Ó2y\1aàDzæºÀ\91(¤s¦LE\122Í­ä¿ýª÷\9c×\8fT{7.b\1dUßF\959ÿ\§P\85ÐÁ=î_\ f\8dîÌ8\1e]=\ fd}é{g\83¸ûãw*á]4ÿí"S\99P¹æM0\93\15A}2Ñ{ô\ 3\88£n\bendstream
-endobj
-1122 0 obj<</Type/Page/Parent 1011 0 R/Contents 1123 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 554 0 R>>endobj
-1123 0 obj<</Filter/FlateDecode/Length 1828      >>stream
-x\ 1\85WMoÛF\10½ûW\ft\89\fØ´$K¶\ \87¤NZ£pÜÆ\ 2r\88\8abE®$Æ$\97Ý]Z\11\90\1fß7³$EÑn\8b \82)îÎÇ\9b7oF\7f\9f\8ci\84\7f\9eÐå\15ÅùÉ(\1aá\eþ\18óÇç_ø\e\9aÍù3§ée4©\1f2z<¹\9cÍùål\1a^Î'Ѹ~â·ã\19LÐlr\1d]áêd:\8bæõ\13¿e\83ÓË9ÞMç×ø{\82ÿVÓúäýâäâã\rMF´X#¶«ë9-\12           ßÄÃ\9f·ªôÚÒMD\8f:®lê÷\94ég\9d¹ÓÅ7¹9¾\ e7Ï/§\88v\91\fo¢qDw\85·&©b\9f\9a"\9c\9cÒx\\9f\94\18qòQå+E®*Kc½#¿E@&ËÌ.-6dJ¾\8bo\8d¼Ødf¥2rù*\8aM±¦RY\95k\84\16¬\8fè¦1>\8d¦\1cÆ×pãO~/\bË\87Àl7tñqÒÞ\18\8f\0\15n¸:Á#\8bCzK_ÝVYý£rÚ.\87\89^«*óËÓ\1f\89ÉUZüP\89ë9\11Oâ¤\9bô\15ûø=ÓÊi@¿\ 6¨ujmN¹*\90×\86Q°T9þ+-ðw®\18
-REÒ\IL\åºð¯'7¤Û\87ûww\9fþºÿpÿþÃçhëóìød\13á\88ÎÇL2DÆ>×\95E\11,­Tü´±¦\82ÃD{\95f\8eà?äK¹I45XE´@Õ¾¤Ebv\ e,\ 2\89\7fÓv¥­qÍùæ¨\\fq\1c¼.[Ô\813\90\\9eR\8a\9bÚÅ6]é\ 4ùsõ\8f\83oj8¤w·\8fç¿>|Y<üG\8aÃHnÓùä*\10ãa-\84R+ó¬ÏhÐ\86÷\16IÙgm\a\94kÅÄÛ*O\81¢V×\f5\14g)p¯ß¦\9e£µUQ0c\11ë\809"\89\ ehU\85ò\1c\92U±¯T\96íQdç40]¯      Ï¤*äXø4\ eu¶úïJ;öaPs#\15é\1a\ ea2òì\1c\87S\v\8eJ\92\94\99¢ú(·ÍB\ 3v½36©\93¥·\83\90hiRI+t\9bÕèµ^X\a·Àåß\ fP¬¤ã;ÔZé6\8fºå\ 5h\ 2ãp\98øuK¡O\8b:²3©R¦X}
-\0\ 3ÍÙãx©V\99\ 6\8bØî¡M\89 É)Õun\b\8a\94\9f%®+T¢\107Ñ$¢{\ 3\19\8cM^f\10\93\9ax¢<ì£åFWòº=Íb\8bÞyG\8f÷ï\eD½ÎÐ/¨ZÍ\15\ 2\Î+ë«\92vÌ©\ 3åÄì\80\8eh$\1d\85\98 8äw¦ÕÁ\81\88P\10ßA/UV\86À\90`1¢/Û4Þr
-\88\ 3\86:\11Y\1dk\0
-Ò¬×:®¥w§öÝ38\8eÞ³)N1\ f\ f\14\rÝx`uê\9dÎÖ\90|\8f\8eÇi0\96\12P2ö(Xp@Ë¡pyO\e\10Ç\93þîÁwô:ÇÔø=¢\86Xjà\87mz*Ì\ eÇÁøTFO\87^Î[UlÐËè8Ær\8d\88¸\19w©ßv2º\b\ 4&U\96Ö¨\80\ eÊƳJÊ\87©f÷ðÀ\9dÌ÷ÑJ _"²\8b\91\83y\96ex\í{à\1fp=\93³ü\»bv\9b\ 200':¡\ 4\1eÀ\8bz\86¸
-£¹\84»­Æe+­,\93\93\ 3\81@\98\9dNú*v÷\ 6\16\e\9dÄ°À5©ý\81³ëÔ:\8f\90\90\vðp)SÜJ¶¯\9d>d\ 1Ü`Úi\ 4¤\98«Îñðq\1aüíó\ e}\83\99\85!q(7·+Û\ 2ÆÞÄ&£Bo\f#    #µd1\98\18\9cHMâ.0Ç\ 5¸F\9a¤\ 3:\10öðÖ(+\83\14Ǻô¬!V\7f\ 3Ùà\15ÌâÔØàEc\8c{{\95²\80°ÿO\ 6M.\aqVØ\84ÎÄ\98å\88ë\9am\ 1Xa(M´\922õ¼\87.ì£\ 5î\14µ¶{\8brcN\98¢\90¨Ì\199\98ó,uo<F+·#Ü\rB\ 2\17\ 1\ fXUÔü\v\9a\8f8\8b\9fØ=vÅvzñÕ\17Iò¡s¬WXÙ\92!¶/~Æc;ÛùR\ eʧE\9d}'~P\f\101ë×ÖäG\96 \8fò<\99\1düß\85éY\83\15r\bj÷"*NSÆw#\84ú{\19ÔÆ\88æ³\90\ 3©\1c{\86çÜ)`»\1cV\8eÃQì»Óæ\ 3o5Kµà\8aj\ e \1fÜâ\ 6]ï`8]ïåZ;\ fD\92Z\9fÌ\ e\19¶à\8dÃÜL7[´\85p\9d\a\90äÐóø2£à'm\17\93~\7f¼èRY\10T\ 6\ 6\94\ 6\8dÄ)ó¢¥\1aH\90¿tZ\8e\952E\83ö\rÊ|çe\80%½F³Æ\1eC¿4EÂíM\eQsàÝË l+ÜÇU\9a\eæ\ e'ËÛÂAÒ¹ÁÑ\a\12Úëm\14z²6Dzƫ/w15\91÷<÷¬sÏCõE\97¥ïXõ\97C,\8e··¢r\ 5\86\82b\89â¡ÅÑ\95eÖ,D\12\92L\ 4¾º<­]µ\vÝÓ\19:v'Ñw\86$\80\r?XDó^{!}Ø@t@\ 33,Ì4XàÍ     â½\17ã\9a§\86\18jêÜì\1a\98}]ÕlÅGe\ 6L\96A$\97_p\18\18\84Ȥ\v\96§ÂÙv\8c\82¼\0!åA\1aô¸\arCÐàAp5¥Fĵض+\b\9a<4Âq\870!\84üÎÄaØ\1dB\95°Îz\ e±çë\12\93\ 1jW/\17"Fµ°wöf'?íXKá\ 2ËÙ\13q\9bÊúÓ\ 6Ý\11!L\8b\15Æà\1eË@ØB{~qG\90A\1e\ 5ÏiΦ\83\fkùA\16ñSÕ`¤ðpÒ\16yá÷o»\9da\10V("â¢ÙîãØ\89\ 3\0=·M\1dñ\8b¤\99p\ 2\90`#\\ eÅ;\9e¼a\11      \b¨\fDw\fR-\92Eú½ßy.Þê\:÷âãüð+ù\12?\97\93ÿù\ 1\9eF×Wó ü³\11\87ÿaqòÇÉ?Ë\ 2b¨endstream
-endobj
-1124 0 obj<</Type/Page/Parent 1011 0 R/Contents 1125 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
-1125 0 obj<</Filter/FlateDecode/Length 1048      >>stream
-x\ 1\85VMoã6\10½ûW\f\ 2\89â¯ÚΡ\87\0{\bÐ"\ 6\8a\ 2{¡%ÊâF"U\92\8a×ÿ¾oF\1f\8e\95\0EàÀ\16ÉyoÞ¼\19êßÙ\82æø[ÐvI«\reõl\9eÎiõð\80ÿëÝ\16ÿ\97øxMÅìq?»\7fZÓbAû\ 2G6»-ísÂöù\9cöÙÍ©ÔØf"\99@\8aÚ ½Uµ¾oT\b'çs\8a¥êÖÚXj\eM¦¢Îoɺ\88íI(\95¿lNÒ/û\1f³9Ý-7é\1a(7ÏÊ\9e\f\ e\ 6
-ÚærF\87`\9cÅïØ6    é7mÉ\14\0Òxäß´g*\ 6ë\1c\9b*¬WXÈZoâ9¥}©Ï@÷µªªó\10óMU&ï±\17«tÉØC*th#\ eÐ\90QJ/ª>(\88\93!¿\0\8d\9b\81«¨2!\92+(i\1c¨\1e*=®\87$¥¿¡\83°í\12\9bÀ²J\94;Íj&ÑkM\99³Vg\11)'¬³ª\82#\953²ëÀ\ 5\8eÓgå\19\90ìñíLÑãã\868üõ;gW´\15\15ÎOðK\87\18¹AvÑy£Ã÷/¤Xw\14\82\93\f\92\9cÎY`\86Iø!ý\9a\ f)\98\16X·Zd\1e\15ãz`¯¥¬ÔÙk\7f¶õv\82¬\8eÊX\b\87­\ 1\81?Õî[\ 1Yj\15³\92\83\16®\ 55       Í\:=Å\88ïÍF\8aááB¦:uØ\93±b\84¤·\8eØ\ 5Ù\8c~ùÆF\13W];\89a)\88\13úu¯\eçáS)ËȦó¿´\0$c
-\93´¯ÃvÊõ\99Hf\83\17µí\91T®CæÍ\ 1\82jåÑ$¾;|E*ªWX    \81&¨Lä\93F}'#·\eLȵ\8fQ×M\97\8e\yv\1e×hèòN\82\84\ e]K\19{$ýSe\11\11\e\ 4/\1d1\9d\14\91\8e\18\r\85wµ@tJ¤\84Â\8b\92½Ö]\87\8b÷®õë\bg\99\16¾\1fÒ\1e  \83\15
-+åS\97Ý㬹ô\1ck
-4\98Ä\9dDÈë¢C      °\0ªCDO/Ï\8f½]&z\8b\a?QlêÇ\7f\\8bÁåÚ
-²s£#®î2\87\81YsÌ7h\1c\95\97      \ 3ZxjÂ-us\98\12E]U\1dáÞM'î\81ÁØý\\94¹=¡jìí8g>\ 4Á Å\99Ð6\9d×µÍü¹áÙ$%Â\92ØUÔí÷Á\98×4L,ÑÄ\1eÎrõ\ 4:\91h¯ú\8c1¹G*\ 3s#irÅä\ eÀ¯¡\902é{\16h\ 4̳:%\16±To\10\8e§^Ý\18Là®Ö'\80O0/)\90
\1a\13Å\r\19\8a¸Th\15[¯oÅ\çwÁkL¬\88\ fò      ºQ\1ew\e\ fB!\a2\8cË\88l\8b j\88g,^\88\8fù@G\19\16¢\84;zÕ\94¸3ù®2õ8\12¹ÿ `¨\18Pz¥µæ'lñ.(_\91Ø÷?ÐØ\85´ª\bË\1dK6\18®L¾6\ 3_\ 3\852\9e/I \83l­¬:ê\1aw1\ 5\1aeE»\9f@O\ eR<±ÚìÜ\83¦W4à$eÈ\14Î6\13Çß?íú7\8aÅ\ 6o\e»\15­\16óîÞ}ùúüø\95þôî\a® úÝe-C*ö\18\a¼\e\ eÜm\97x\ 1Éo~+U\13Ñz\ f¸\98û©Ý\99;ðöõv\9dn7;¼¸`ë/\v~ôÇ~ö×ì?\ 3~    õendstream
-endobj
-1126 0 obj<</Type/Page/Parent 1011 0 R/Contents 1127 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 561 0 R>>endobj
-1127 0 obj<</Filter/FlateDecode/Length 1449      >>stream
-x\ 1\95WïoÛ6\10ýî¿â\80a\80
-IJe;vR´\ 3\92¦\192 éV{û2ï\ 3\96\1aIôH*\8eÿû½#%ÿ\90\e`E\f'\12É»wïÞÝ1ÿö"\1aâ'¢Ù\88ÆSJÊÞ0\1câ\r\7fEüõõ×^4\99\863\9aD³pD%\8d¢QxÝ<\15\8dfWá\98¢á0\9c`u|9Ī\7fâÕëY\18Ñt\18^a-\9a\cÍ=ðÒÑ#Ö¦ãv#¯Ý.z\83ûk\1a\r\ 2¼éì\8a\16©C\857Ið)\13\e+5ü\84ddRëÜîè#¥ª\14yEøÌE\19\v\1a\85¯ï\16ß\9c¥hæ-õÇ\13D±H\ 3\1c\8dBúMåU^­ITô´ ;\7f~\9bÛloaä-L(\8a\1a\v£Y8e\v7ÆÔ¥¤\9dª)\13/\92ÄþÌ+@é\17às\96\ 4=I{ûðeN\95À~µ"o\12\ 4;\93Áüó׿¢S7\ 1\10¥$´¤o'\b\9b\b\13Q\142=53¤~4ö±Ý}yì\98» m\96'\19\80\1aàüýîÓÿ\84\ 6KØÜ1æ°Ù­¢X$Ïõ¦¥=Q\95Õ
-À´ñÖ\9b°ùô\118&Át)\80\9fÛ»Oß%á4ÊÀïìd% °ñ2\9aB\86HÎCEJ§H\81U\8e\99l\80^Ð*×Æ\92±jC ²I[*d©*Ð\ 3âu]¹\ 3\89*K<¿?Å\80`Z7Z)û\93_\8d\9at\8e/ÃÙ%4\v\10¦\8c\98mJýo\ 4àÔ×ü\8béïÿéO¡r¼\b\12R4V\v«ôÏî\18\ 2ð\9bZñõ½í½w$s\vÝ\1d©ä\10¥óDZð+ö¸R #\13¶M×2à\15U\15;*E\92å\95ôË,\91-
+ôr«\ 2\17\82T­íM²Åö¦»kBþý=³»\ e®[Zé¦\15 Ø\9e\9d9sÎ\99ñ÷\9d\11\rñoDÓ1íM(+wNf;g³\9darp@Ï?Ì\ 2W\93!\1d\8c\92\ fß'\874\1e'\ad$Íù\89a2D\98í\ fÜ>8ߧÑ\88fs\ e;9\98Ò,÷7\fi\96õ\94#ʵ´TiG¥pN\1aZ/\85ë#`ª5~\8b*'g6$\16BU     ½\9b\19\9cObÄ!í\8e'É>BöfKIvc\9d,)\13\95\8f\ 5mtMº¢ûÞ\87!>£Ã\93ûw  >!L\16ÃìNQ\ 1òÉ{÷ãÉ4\9eÑdÍ׶§\Ð7­*\89\94p\®KäD¶Î2ií¼.\8a\r¥µ#1ç2êÕÂ\88\U\v"§IP%×øöQ\1a«\90\90\9eû\10·¢L\ 5e:\97tA\véøKÎm\17\95\8dö\01r*\11\,d\9f^µjüS\91}º.¤°2`G\f\1ei\83\93*[\17\8ea1\14ñâóZÇ\89¼T\95²Î\b§Í+tCVÄ\8d)W\8e\8bA-ÀUÇVp\9eÏ\1dP\96t\96ÕÆ\86§Z\18Ý^\9c\92E< \87D\ 2ú \9b§E\8fVF=
+'\awW7\9f>Þ\}¹Np\7f¸©éB\8f\10\9c²¥¨\162O\88ÎQ\8c|\12åª\90ýN\ 1Ür#Ký\88âÑ¥¹*¤gQ\bø¾9Õ\96iÞ=CÔ\ e=u*\13ÜKÊ\8cDZ64\ f4\928øÊxN  \10Þ®ÅjÅ\98¤"{ðG̵qËN:©tk   \f\9bÖ[\1a'ÃdÚ§ÙåÇÀn$ù÷Ùñ)¥FTÙ2°á¾Ç\8a02Óe)«\æà-\11\13\0y ·µØ \15\9d£2mð\84'\110Õi\ 11\06´ÌH\8f¾\aD\eµP\95(\1aþ\127\ap¶0\8bÌÎ
+%+Gs£Ë\86\98-¢Ä\9bX F²,þ ÎRdKh\a\8c¬-D\92eºæà8Ù-\91%*]Õ,\1c©Ð6ól\vè3èÈ\19â.F\ 5\8fB\12
+åýo\1dß1«/¼8\80\ e'ï¡\89%m¥HQ{AzM\ 1Mê¿Ï½Ó\eNüåB^%t\aÛ{\v\8e¯\8d®\16\7fy\8dtÅÕêi&j\v1¥`\ 18q}úÁ#³\14\8fÌG\ 1ORN\0 xê/@\a\93.æ[\1a×Öë:\18Ïà|üì­\8d\ 3\89<'\1cgÈfF­\W5¥tK\rKÔQ0Ô4\17Ôc\9c}{׺.Xü9ÄåX\99Â\11Ü\7f)BO×Ú<@Ø\1dÐÎàV\10\1a\97\18[CÞ\9eb6ÁîÁ
+~\1aE\ 4\ 2¶P;.@¨
+\82~\94Ð\8cz®Ù+ÛC\15i\b\9e\e\ 5©\97¢ª½øcæ\126\0\877e\1d\aSÈÁW/¶bÓMú³x\807\84¼Q$Û\91\8fÀUð1l,Q¨\81ü/t\89\9d\12\12Ö®ó`c\18\1c\88Ò\ 1\10P ÕÖ\1c\8eáak¸\1a\9a\8cÁ(s\ 5\1f&¸;\8b\f\0f$@ë8ª\9d*\94Ûô\81ÈC÷Äç⸦æ\88J\94ÒÛ\r¾khw)ÝÉÅÕ-ùk´\86²Aη¯ß\12\9cÓÛ\1a³\ 6\87¿'AÎ-\87i,á+?þ\9aØ\ 2\1aáÙAR¶õ\ 6Q`\95jD\1fH\97\r"d~u@2?\82\98ЭF¢+©1;:Pú>\19¹\82\8d\ 3?F\a$­xhÂ\81Ø
+m\9dV\98Ò¥°\ f\16      \ 4gg\10B\13 \11\fø­«_ÎÐêà¡\1c¹sX\94°WGT6:Øa\ fbc\88ó´ieá\8dÇ\97\e£s¥áìßxpô¼8Ë\19x\fr6>ÞNBþ§a£ñ\86/èr¶?¸\e\7fòê²\ e*ÒU\1fÎá÷\14±µF\91jì<å¦S]Ã\8aT2¹reÙ\8e\82À\aç?,^\8d˼´{í\1d&\93°áAé¿´@A×Ç\9f1\84
+8\v<±^°tBEã\84§-ON<ì¯Àbçê ÷á\1e¾:ÂÕ+Àl:\ 5Ø\r6\1e]ò`bç\ 2Ûê
+EÅÉCv\89¦`ß©\b8y\98JY¦ì\91\9e\ 3\96Ã31¢où)\87eD\17\85^\ 3\91ÎaÒ\18\9eoUXÌx5IÐ\9c#"¦r\9e\82Ñ%ÿ\95dGøëkÄö¾7\9e\1cÜ¿ãâ\8fèËå§Ë«»K:»¹¹ºñ\ 4ù\82L\8e:ç¼a\e\7fÓ\1d\18ÃÊ\ 4IÉh¹\1aÊò\13\84\8bà§â¡0[V1Ç\1d\9c·\97©(º]l(á\94pËv\81ë\ 3\ eô\0ÿ+mJï±9Vªîöæ÷MöÌà³,ñxr v{ã¼à\9d6g\eÓ\9e¤Ð     v
+6¾6SB\9b\87}VÐ\-\9a\81\12Òk¦]¯9¥\935?ä\8c.h^\b¦U¸Ü¬®-¯\8aÆS&ùÀòRß\8d\13ÖP\e\19`\8f¶Kð!¿\1a\8d°F¿\ f/2\14?±jÐú{­xq\8e\1f&ÀJ\9aR¹Äú\ 5ðù\ 5k\17aöø\ 5«\17ÇûZÀ³\0\ eV;~\ 1à=u-\fÏ.ÐÉ©Ô[<ßàSö\8bé\137{\9bÜvC\7fùÐ^\1f\ 6\8eÅE\14!\9dö«ËJ\87=\8d\8fx1ì:O\7fª¤×8½ß³Ù¯¡]\90'Lp\9e¡\88ø«\90\8cN]©§\9f#"Íðt%¥_ü[ÍcÂôYâÏìçt½\80K\ra`­fûÿáí\r\1cã¦6\8e{\10÷¦ÑÞ(\19áE÷0´óöøóÉ1]\eý\8d7óS\9dÕØç\83\992EvG\93)nß\9d\8eýûçh\9cì'{        ý\83\8d´\19Ê\1fÂ\ 4AÁ,Å`Ñüèþt¿ym\9d\1cò\17x[ÿwç? Cêóendstream
+endobj
+1004 0 obj
+1802
+endobj
+1005 0 obj<</Type/Page/Parent 794 0 R/Contents 1006 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 236 0 R>>endobj
+1006 0 obj<</Length 1007 0 R/Filter/FlateDecode>>stream
+x\ 1\9dXMsÛ6\10½ûWìMJÇ¢õ-+\97\8c\938\8d§u\9aÆJ3íð\ 2\91\90\84\98\ 4T\82´¬\7fß·\0IALÚi\9b\8c\ 1ì.Þ¾}»ô\9f\17#\1aâÿ\88\16c\9aÌ)É/^¯.nW\17ÃhHóëe4¥éõ\ 2ßÇø)$mxùêÝ\92FSZmpp>\9bEsZ¥\84\ 3Ã!­\92þh\1cÍ#z8ÚRæôÑd*QÒ\92Ð)},ÌFeÒ¾X}\85\8d)\8dFÞÆ`¼\80\85þ}\95ìÈl¨ÜIRzc\8a\\94ÊhÒ2\91Ö\8aâH¥!\95ï3\99K]~×Ã'ó¤ô\96>[Y´Þ`\8b\ 4=\88|-Øñ\90\ 6£I4f\87©É\ 5\16\95u.­È%     þ.J\82w:ùb\9b\88ÊJr\9b\14nf½Ù/J§æ`éÃ\8a¦@È[\8c\88~7\15Ù\9d©²\94}z<\8130¢\11\7f|úñb9F\14óá\b\9f9\8dfóhQ?eôÀ(\ 3Û!o    ±-¤H]°\87\1d\82 ½Ø㢵\87Ð\ 4\f.'g\ 6Ãç\9cÆHÒ$p\17>cuº\8c\96ájð\8cÕ9\87ì\ 3çPÃç\9c&Ãy4
+VÃg¬\8e'Ñ,\\r\9e±:Y\9cEÅ 0X'Ø\8a-Õ°u\91¹kxÁ¹j\88æY×P\10©>O\97£CëÀy\81\83>\89'¡2±Î@÷Âät¯\92ÂX³)#>0p\ 1\fÆs\94\ 68ô^¢*\ 4~¬aú¤©bÎ\8a\8cRYÂ\8a}Ég®ÞÍk²£ÄÚ£_\98hbmª2\8cËUÌ\91naÈ\14¯üé¤>=XDר9¸\8dÇó\85Kü©\8ex­µ½2\94\80\b\88,a«Þ\fú¹¢ëë21z£¶ÑÞdÞIS\8f}:\82¼yeKªÀxG7ÐûA\16O\U\8cf\13ÞemuÖX\851v\16ÉgÙ5
+Æ¢¼Ql¼\10\14¡ÒIV¥2¥\83*w\Gµ£5`ñ6\1aìúÚ\94¼á\8b)\1emé´¡ã\ 4\85·ÚqBPÒâ<T\82\90\b\9c\12\9b\ 6\ 4\8blb\10Äc+UúÜ\ 39\87!3ª\13É[¯\1c\ e\f¨Û·a¼«
+\bFqI"+!\ 3Û\9d\83±¡ßrF\9dè\12¡ií0\vBQ\1a×Ì\80¨\v^wî~å\81ºä«\1cT\96ñe\88\ e\0§\85\12éðê»\96\89àd²´\16r«l     5}\94G\ e<pè¤Ï\91Y\96´\86Þb»³\81¯\12\ 5\ 6>Y`üÞ\1c$¸péÖ\9d¢ûBáí§\ 4º\98\8aJÓNì÷*;\92Ô\fDÇ%§\85ov`ì\9aZâ¾\1eÐ\96¬\ 1­.)1ynt$Ò¼\ 3»«öÎÉ\83ÒºüÎÞ\88î\1c\ 1P\ 4OR+î'Ü]ö\95ãÃ\19$@í`è\a6Bþ²\10\92\8e\9bäe\1c;Wq\8cÎÕ\8dËS\1ft;8r:ØÖJsGs eÆ<º\8e\ 3\0sª4Z$Ú\90ñ½#\88Å`½8(+#ú`PÚ"³\ 6Æ "î\83RUÈ\ 4ªqdj÷v*M¥îE.VXi\14k\85,5DD¶êürÙ\82ð\8lõ¼*9±Ì6\95Hú(\92G\9aPÜç\8eNL\89"~á¢?\19e\0\82¸Ñ\19#º}.\v\91\90U\9e\ 2 .§Êj\15Äz7{xÑÜ\90¯\9e;h^BC" ÀWîÙ:\11íñ\ fåÔîç\ 2;\9e¿sÖ\85Y{@óÄEæÂk\ 6;  Uà\f\95od\8eAû;\9dcXø\8eÂZ\93\83Ǻvê{Ç}G& æ'\ 4\b\92$éáÁn\8c \a\99e\88ËQ´\83¥ËÎÞX«¸?\81²\18?tf\ 4+(»­\ 3o]Ö>y\9eùe³A\ 2\97\vW'[T¸@-í\8fÍÈuve×ê\82\14Þ@\@>\98¯=Sf\12?\9e1¯YºÙû\1f²0t\93æJ³Äøõ\9f OAGE MÈN5:÷;5Û:µ\8dú\a\f~\ 3Å\0Ù ¢©i'ÌÿÝ*ï¼Êºø·\85©ö\r\86;¤2Ã\9d\19;v÷ì\14B\815Øãwú­è\0ÈÖÏ\Å\90\81·_Ó\9b·¨#OßFÊ\ 2Hã¸4&³q\Hû¨Ê8Ö\98\18\18º8®éå\8f¶}\99\19\1aÄÉõëm>Ä$sb¶îJ{j*\10f\80åäñTvMX}\7f\1fø\8d¾Õ¯\b\82%\eG\1cöµå±\99ÙSa\18gþP©òzÈ·\12íwS#°\877\14ú¾\93äóðq¯Ï<î\97\95F¹ Q\94;p\8aû\0z5\18\8eêH\8d\86\1fMÜv\8eu2r\91ì\14~í´\ fÍÍú;t\9Vs\82ð¯«\84w\9b:\8dÍ&öÓC7å\1eÊ\1e\v¹GX\96lµÝJ\8b\9a\92Ñã\1cWûÔU7¤\90Çò\97î\18\16Q×î~\ff\8a\8c\9bubB¦ÜKÃò9ây¥\ e"CÉ°þn\v±^£\9a}O½\92eråìùðO£dP\10hÈ\
+w\1c\1fõÜÛϽÐb+\8b\9eËYÏ\8f
+ÔüÒ\13ë¿O\95\ fh\v\12n<L®Ss~ª#¼\ 4\9d\1f¼×æpI»0,\87ÙYl®°ü$e{n\98èàÔ\rûU7\81­X õAo\14\ 6;f!\81%\96ß\1cýË$Ï=\i\94øaJËçÊ:ç(O7ay¡Â\81633²î\ 5Öv\85\90óå­Y`]·Iß\86ÂÙþ\1cðZÊZÀ1\83×SülX¯5U\8e¥öý4Ld\bÖÿ4w\8bI§¤ß\94<Ô/\8dWïþ)¢ëz¨\1fù7ºë\99\7fáy¸¹\7f}ÃoX_1kÐ[\93Tü6ÞNã\83Ñ|\81\17ÀÁbìnøïþ\180]L\9b\17\9bÅ\90I\80\17æ_/þ\ 2Q@÷Uendstream
+endobj
+1007 0 obj
+1793
+endobj
+1008 0 obj<</Type/Page/Parent 794 0 R/Contents 1009 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 245 0 R>>endobj
+1009 0 obj<</Length 1010 0 R/Filter/FlateDecode>>stream
+x\ 1\95XÛnÛH\12}÷WÔ\9b\14@¢DI\96ìyYäbÏ\ 4°\93ÝH\99Ì\0~i\91M©c\92Ía7­\18³ûï{ªH\8a\12í]Ì \88lñR×S§Nû\8f\8b\90¦ø\17ÒjFó%EÙÅ»ÍÅÍæb\1aLq\9d?BþøòóÅ,¼\f®iyµ\f¦\94Ñby\85\9fõ·\94ÖüÖävAaH\9b\84\r-¯V´\89ÅÂ\946Ñð}j¢GÚëR\93·\14ÛC\9eZ\15\93ßkRe´7O:¦Ä¤\9aÞl¾÷\9d\97;\1a&¾øi2Ág\90\99¨´Î&>\88l6Yã\97Ôl'÷ë»Û\8fw7ëɧ\9bß¾®\83\9bßnÎ\rI*04¥ñl\19,\10Ûp\ 3ßßL\8eX\1c}ÚÐ\ 2ù<éÒ\19\9b\93M$²ÁW§KºW¹ÚágbK¢\ f6S&w\ 3RyL\83µ.ñJû\ 4."=õ¤Lª¶©æ\0PÉp¹\bæ´\°WÔm¾\fP\1dùÖÔ\8d«µXIL]½\92ÒftߦJOF\11\92'\92ëç©I\83þV\8dÖ_~Ý|þ|w,ÓY¿\8f\95âþJ´\8b«\15~\9fá?ÒKêV_S\88"&¨çr:\v®Îz\1dÎ\82U@ßöÊ\93E\83K´=-(R9}¤\9döÿàð;°pG\18\ f.\1fþg*\7f&g«2Ò\8e{arÔ>S\9e[s,/®J\93ø\16ñShLjò\1d¥Æy7¢/·ï\a\14Û¨ÊtîÅ@@\ 4GRA\1a\87ó`Æ®ñ\84\831\ 4\fLi¢\83ñ{1îT¶U\14Ãbi¶\95\ 4\10YX\82o4þ\99vÖƤ\7f\14)0Âw%\$\99ëR¡½÷ï\80öÂÀ¸«¢=)×ó»-\ 1\1cÔ%YvósD©\94\91\8bâ8²Ø¨]n\9dg\93ÞÚÔ¡¤\ØÊÕs¥·ÕN\ 2\8f\ 5§\94Ú\1djFEiQʺ\1a\a)sÝ\8d\ 4ðï\85\84\86eM\87¢&\9cñ
+\rnKõ0[®dH»\ eòíñü\1a¸F)?çº\1d\9f­vþ$â&`\1e£\98ãÜq³\10\19F%sd\1c­¥ØÆ;\9d&hÓï¶êrì\8e\ 5\17¹\171\eÜ\ 2hä²m,\rÏù\17Ð\8c+td\92g:pgi ^)ÕO:Ũz\6h
+\9e\1cþÖ\1a5\84\1f \8f
+L<z\99\8bÍ\11;\1c\ 3§m\rľxâûà¡<\11vÈ,út
+V\18èR­\83w5\0ëëTG#i\96*ßa¼xîÃ^\86\ fC\8e\89ªRÿð\86C\ e§ô0\fÁ̽r*ç\ e\8cÝÃ\9b ¦Ò\8eïÞæÝ4&UJ\99ö{ \17\93ÓÅ\88.À8\86 `.®Ñ_1B¥2\1cÖäö²\81Å\90vQDã]\ f\rCJRµ\93,aí`Ò\14%\89Ò*~1t\ 2Ö³z5#½5¹*\r\1aÀ$«ÒÔ\1eè\19`@dÊ{\85\9eíâ-\7fãªpór\ ePº?!éM\83w\ 4ñ±\8f\16\14\a\8côÂ\14z.\ 6\8e£ÂuÅE,\ 6ÔóÑÕä1Â\8e*\ 1\988?¹Å&3õ(\10êµ\ føÈuÄÈ\rè\9f\90Ã\8d|\99\8eUêDZNµ\aï!Õ\9då;¼\1cÛì\9a1ÞÚ\1fÄ\13âª$1\91\ 1\97¡û@pª\95ó#Æ)JÑóZGê\rX\83\8b÷\1d¶%æÚd\8d¢\86©Ø=\rî\9cºÉ«lSVÎë¸]t\ 1Óe©Uâu9ê'ÝsÉ«\91¹\91\e\87YÕ9\90Ô¦>\92\f\11f©QZ)\13>\ 5\1e[ξWþ¶«HÓ¹*«\11¨|Ï!'¶WO:\1fxrè\89Â\86\ 2^°<ö¶Ä%æ\ 121 Ìu°\15\ f\ f­í\88wÇVû\83F\88ÅiG\806P\96\ eXE¾b\8bìø\94\ 2üsÁ1Á\ eb(Á\17õÜ\8d¤ÖL®\fÑ\ 6­ÜZÞ\1a&¯ô\8b©\3­\83¾y"ëyÃô\81\82\ erØÃÅ\13xÔì°_òÝO2lP\fÇýàq³P¥Êèß$üÃ\91Nn\8fÜ\rE\ 6\ 1\16\ f\1ff\97ÓÞ¤âÖ\91ÒPª(\15`\8dïh2ù3×~k¬£\!<P\ 4\84\10\16Þ\7f\1a\vÿÛ:¤Äìj\1a\844\9b\87X\b\19Í!\18Ûo¯      ÅÙ|&\8b£\93>osY\9c:g\11\15\9fi²¨\88«¬àIèdÀÿSD´÷¢\e\ f\87Càùå"°ån"(:
+ÜVð\fA\177\ 2P\95\85-ùQä4¿d¹;\v¯j\11·d¹V\7fëDÜ,¼î\898Q\a\85\8a\1e\ 1M\97\9b$iTä×Üü\90q\80ü\9cÏ\88öØèP,\f\eÌB+\8eY\11ó68\8fö¨öNR\ 3\91ó\88¦¬\88Ï\9f>ÉMnt¸¹\ 5¿ùREõdáSÖ\1d\f\9d¨ÎN\1d\8fè\13Æ\ 5DH÷67\1eï2\ 1\80\0\94Ìæ\98«³¦¼ÊH\9d\9cýÀ;\18\ 4Q\1e;ÿ0@\ 5\84_:¯XÉ¢¯Á(\1eCHï?´$\ 2\84¬ñuÐlÓ&·v?\9fÈø&>\18\ 6]º½)x%aªø}Ù,®Þ \80\15W¢n\96;\92\ 3\vQäM²\12+P CÞ&Ð"ØN\14\ 1\ 4`SIÍ\1e¥RàB]&*bIÀk%3.ªlå0¦±æýÌÌÚÁ»fgì\9b\97I3KöR´9XN\12\80\b\87Ï\93ÚºGsyY@\80\95X>\0S³0S\eA\9aÂ\ f/\15¦&\88P\15GX$G\ 4@6â\99\9eGWma\1aQ¿\ 3]\1fX\91JMÛ\89©5\8cÆ\99\8em\1eJ\83¥Rc\ 3\87\16\1c\ 3\1fñÐ36=¹måîÉ\99ì\17¬úØBÔ¶-\1f|:ÇÝ\80\97\1dæ\ 4ñ\7fëö2\12Ƕ>\9eæ®\7fpr¯©Ø\86
+_\97°íÁðc\r7.h\93ÁÑ'7¶Ñ\ 2X5\7fT¨-¸\bè¨
+,\19!J¯\8bVã%\96µ\vÛár±¢hÒÂ¥^u\91&úH¿â\14:\ræ\8bëQ£Nù<â\9a\ 3I7?/G\ 4ï\89\ exñLßÏ\86Î
+\87÷\1a ¶g\ 4¬Î*\ 5* ÿL\86\93l}ð­¥ãé`\9dÄ0á1Fø°ô»­z\1eeÅç\1aÍ\17\91þ:Ãp?\eÜó9¼éÀéÀ\9fvûü\91\16N8£È_\1fBl\9e\10\7f\80¸\146\1e®ßÞ¿{\vÝe¿c\fp~?9\vr¤ã\10d\8e\9a     6þÊÙu±ZàÄ#\8f¯DªcAüëâ¿\aYc\ 3endstream
+endobj
+1010 0 obj
+2019
+endobj
+1011 0 obj<</Type/Page/Parent 794 0 R/Contents 1012 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/Fc 12 0 R>>>>/Annots 262 0 R>>endobj
+1012 0 obj<</Length 1013 0 R/Filter/FlateDecode>>stream
+x\ 1ÕXMoãF\12½ûWT\ e\81\95À¢DÊÖG.\81\13cÇ3³#\ 5\83\0º´È\96È\98d3ÝM˾ìoßWݤ¾lg¼\83=$0`\88b³º«ê½z\8fúó$¤>þB\1aE4\18R\\9c\ÍOz7ç\14\864_ñWÃñ\88æ  õ\83~¿Oó¸s[f6\13yþDOª¦M\96çTJ\99\90U\94\95Æâ\ e\9d~\90v£ô=Ý),V\9aæJå\86D\99ÐåZ\96ö\94H\95dSI\1fæ4\93úAê\80°\88\12\85o3C?Ìÿ8ÁÖÝh\18\9ccóÎ;\85è3+´¥.\1e°6+×\ 6\1f¯UiµÊé\93(e\8ekj7æUú!\8b%¯ºL\12\17±w\137iu\91\1d\92I:\8bè¢ßÜkSÆ­n8\b"¾=\93¹\8c­;é×sâô(γø\9e³;ýø¯Óà\e·½vA8¶NMA\ f\12þÖð·¥\91¨$×ÿKV&jcv} ó ¿íãõ\94h\93Ê\92\8aÊÊä\7fÙ±\e\1axÉÛ¡±\95ÊJ¿3:U L«,G\8fLªê<!ù\98\19\8bÝ\9b²\ 1\96\ e\84\1dú~öûlþËÝç\8f\1fçß/\16³'ce1\88\16\8bÒ\ 5Y,~\f~dÈìpÛa<m\14\7fÙíïúiêe\92i´Té\fÛúý\84¡\8dÌó³ã]+¡Q'³X\1c\85FI²8¥\18Ø\13@¼«c)\ 15#ô\13Mß¿?5´\ 2èùyà´¹ÏÙr ½ÓT"¾\97\96\8bê̱Ãï´Í;\16\95­µ|~\ 4ß\a\84j       r[\92Ò\89Ôû,tüòU¶\8e\7f(·(¹Õ_ÀM0Õfª<Û±\18½Ð(ÿ1\999L\vþãz¶ünX½\ 2L<¬v\eÐ\1e\9aü±ÿîÄn\92a:{6ÿ#é¼×ã\ 3N\13Hýÿáô\aµ\ 1   ª'×qÏã-\0¶s\9dÙü\ 6ö\12\80\8e·<Õ¨È~®Ü6쪤.2c\80q(\8f!\87óDÊâh\eQa¸U:\13V:ÖBÔ4\99ÌÊ\80~?Ð7\12I\91\95\18P\1aÄy\90¤³ujÍv@Ïi©\1e\99~º.Á!¦û3\96BáZ\89\1fSr;\84'\8f.F»\84\89\87@NH\11Í     ©`ù$ÚÖ¹\9dßxôzz\94Ù¢³X¸3»9éFÀvbþÀó1\95Z\12\86² -±P".¦1å*F1\12H»M÷\86\17%\1aiëfb7\95\a\98²ÕѾl\vÜ\10\98\83\85\9b3\§\14\80A\81\1a\91Ç       ®_@\8f N\98ç&\8b9ònKæÂø\92òHo'\1f²@ßò\mø\19\97MîTdE©Ì«U\9dÓo\9fß{ó¡PRMyVÞ\9b\9f\8e¥y\14\8c[K0\1c¹\9b¿ÌOØô8çC!\7fúüî$\1c\9e\a\ 3\1aôÙ \14\14\rÆxÌ_å4;ôNì¨úçÎHìÜÓ¯
+uV+\9a\89b)\1cÎÜ^G\eé5u(µ¶ú©×3¼2Pzíʼ=\90{\82×\ 5ôER*\80HAE¦5\94§\94B;¼\7fw\9cå\e}\ f\17\95·ëÝ\f[\r\9eÊ\a\99«ª\0þü\9dÖ/uÐиæï·®Î'ç\ fcp(\10\85x\ 1¸ÈÇ\824jµÌe\11Ðí\8a\8c:\83F¸ {ÚØ>\ 4Á²©ð\96!ñG\80&\93\0r[\9c0D¬\aÆ¡Ãk]Ü+&¯EÐL¢~\80æ,VÖÒ\9dÔ\9a=­É\8a:\a\ f\98\1eWÓkZJÔ8Cq\85;*À1\8a`\95à\1faQ\81\84Ñy\106W\r\12\9e÷\14\88\88.Bgiw\88hÚ¼Ùl\ 2s\9fUÕS\0Ò÷\0Òú±g\8ae\17G³*Hm\91¿
+\0ß\90}sûÆÔ/s\vçµN ©\ 4\bÙæ\85\82\vHE\82ª\1a\13OOA\9f¦×g4E     \12º\12e\89¢;ëO÷RVnJø\10XƧAy°\1f\P\14±¡äú\f¸Z\ fW\ 3\1eqÿÝ¢Â|Ãfök\9cXf
+ÖìA\ 6è\10 $\ 3\99Ô\81¨=W^)\13­á=×nÆcƤ<é\9eäÛp\83l¢0
+&\14!§1²\19ô'袿z\89÷Q\18bÝ~fw\99\89ýäá\11x}{3;\98\8e\87gvÃæÅ\19Ð\8b³\95é\1d®n'Á!ø\ f_o¸\1fÀkDád\14\f9\83Ád{õR\ 6ád\8c\19@Ò§ªp\8e\97Ýíoeöøµ6au\9e\ 2MA¼\f\83X\15½ÿä÷qÞ+m\82Ïß\94\1f\86ãsGºÁd\82¦ø«\17\93\18_\1c\91ífþÉ\ f]NAåì\98gwWd*\197\92ð\9cµ\1dZ¹A\8cÿA\91ÅZ\19µBJH¡\19\97èu\8f\rIíFìÁ\vÓ¯\18H\10Ê[ZÃË°\90í4\9f«ÊHf\993?s\19÷:ÿ¢\8cEã      È\17\ eBßú!\83Ø_=«\1aÌy8\88\8e\9d\ 2Ï\Ae],Qµ­\84iÉS2¡\83S\ 5ô\ eoòê5|¼QÙÎvoÓN5XÖ¤qãwÿ¥®\11\ 2\ 5\81/wOùÚ\´\126««JégòÅ\8eñ/\9fkÄúÅLý\16[-ô2Äó"\9a@\ f&,\11 ÛÅ\0\15u\17MÁQæÉà\80^7\0ä\9f5Òs\86ÕíÅMF\11½\9aÎ?¼Ã\ 4û\8b¢¶~Á               {\86®-×ì\e^\ 1e\87nyÌ\e(\ej¦¥Û\9c\7fÇ\81Ü:nî^\9bÙÑ%ª<µx\7f\87\8e)\96ª¶þ\80]> N\8bJ\12\83¡$8e)\8aæø\ e¬A\13·U^¨?\87vAa^ø\rz-9\88*\9dIâXîAªr)\f¾[º±ï6Ù\99¾u\9d%¼°\84v´¾\ e\0w¿\1d0ÌC\1a\ e\87\ eÒ\9dÙåÝÕ%}Òê\ fþ]gÚ\18\17g-ùlÝp8Âòî(rã\133\7f\ 4{ÅþÃ[GGÄ\18\9eÄñÒqï\1cÂß8ÇQÄ1Ðü\7f\9fü\17\ e;\8cBendstream
+endobj
+1013 0 obj
+1871
+endobj
+1014 0 obj<</Type/Page/Parent 794 0 R/Contents 1015 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 267 0 R>>endobj
+1015 0 obj<</Length 1016 0 R/Filter/FlateDecode>>stream
+x\ 1¥X]sÛº\11}÷¯Ø>YéH´$\7fȹ/w\9cÏúÁ\8eo¬ÛL§î\ 3HB\14b\10Ð\ 5A+ê¯ïÙ\ 5iɬÛÉÌ\9dL\12ñ\ 3ÀâìÙ³\aüãhFSü\99ÑbN§\17TÔGï\96G'\9fÎh6£å\8aï^\.hYÒ4\9bN§´,FWv«v\r\ 5]ë:×\81âZEü£©ÔOÚú\8d\ e\r© éÉÛÖE\8dË1?ÞÉMr>ÒF\99\92\94+Óm\87aáÍòûÑ\94&³Ól\8eÅFU«\82âÁ\14=m\82/ÛB\93ÂÀ\10MÑZ\15h¥Ul±
+Ö~ù \9aZgtåvÄ¿È\1a§S<ǹn"U­n\9ac^nr°\1e\a\83ÈÖÆUTû\80       ø\8d\93OE\aÃ\ 4hÌ/²3\8eía~>í\1e÷(áéäômvÁ\8f;xjí¢ñ\8e\8c\ e6Øð\85_Q£ê\Ñη\ 2GÛð\8a¼º¼G\8c\9e\8a|¯Ù5Q×d"\90n\9dí\ 1D­+uÈè\1f\98©YûÖ\96\8cS®r»Ã\9e±QÎ\b\92\13\80¤F\17\1cNÃ!`ñ@M\9dg\85w+Z\19«Ç\f£Õ*\r\e\82ã7i(\19Gÿ¬,\16±ÿÂô\18¢V+ÌKw\1fÞSÓn6>Ä?\ 1ܵ#U\96FPCÖ9þ\ e·1\19\89\9a|\1e\15òYÒ½ ød\14Ñû¿ßS\ f¶°PE\r\13\90-ö4ÜO±ÖÅ#&1\91|ûjÄ=\rÿGª{&,\ 3H\8dÜÕêQ'Tÿ\0»d\ 3\ 5Ð\fò0\ fF¯Æd=2      ð­wÕ\98\bÐs}D\84Ñ\8fi¨Ò\11Ed5î\ e\92\9dë\15X\99ê\85k«ðõ\86ßC²\83V%ý\85è\83wÇ(-\8f\1c®cmI»Â\97\98¾\ 6ßU\85\1ax\18u(\16Ê\81\ f\963Wx\v2\f\16ó¨.\ fÎPcþ­\85\81<áÃ\9b?\93Û\94?0\99¼Ó\8cC\ûF\933«¸£ãëã\1a÷ií­)¡-Çx
+Â7)\8dÏÅ¢ ;ã\ 4vÃ¥\8fÚ\18\846\15\9eAZ¼H\8d\16\1aU+\ 3!¨¤2\9a×öñ\93\19\17Á7\8d@\9dÑ7\1f\1e\99F\88Õ\14k2\8d\10W¤&\95\8bs\82x\84\ e\r4Mj}­6\eí \8d&\83Ü\94\9c½Ánúq9\84)éÆÄÅÒ×i\1e®\80IÔÅÚ\99\8cèFAó6Ú\83\18¤PíOÀÙI4\1cH\83
\9b"\98\9c5u°\12K\1eáU\10\83Ó#\81\99\90Ê9¿K\80rì\bÐ0Ýó\8aâÖ\13\18#S°â\ 2^ú²\8aÚñ\1a\87\1aÛøZóì[c-øÇzÞqS6Ä)\7fä\1c¡,·¢g\884×1"}¥V\16\1a\0\81=)\96j\1dÆ2Õ`+¨\93­
+©¸\1dx\1c\98>¯eü|\9e\1f9¿\101gu­Mµ\8eо¶¥î\84ÿ¢ë\v#éHÊr\10û¦9B\95W"¬ p0Ø\ 2b\ 6\92ØGÞ\82\84Ü'\81\80\90B5T· \ eþ\9fO\ 1Ý\1dË0zé+|h4RÂøskAÂx\91\1cÌÓηÕ\9a\19VqÒù\r\14BÔ? o\hH­\ e\81sÔIÁkpüd\ 1<\8cîÀ}\83.óð\86®SU¯\15VUÏ\9aDNÇ\9a\99\17\14\9aöÃ\88V\ 1\9cå0Ðݸ\91qTr½1\e&£üN\11\19²\ 6Ù£$XÝæÿ\9a½¿º\13p\19³­¶à~\82ÿ°Yÿäv:´\85{X&èUk¡©\9dܪ\18U!\9e\0©óEËm\86ãE\99hV\14¤ë=zªA#\865\81ðco¼Ï¾ë\ e¨É\i@¤nǹ/w}\82ºÌd´Äðd\11^j\16U\80        +Óº­ \9b­8/à\98ê}<D­\14\9dPjN£z9=\eYNºÿ¾ý£§#d\83^%\9b¥\12Ì*¢\ f»__Aµo|\a}±¯\84Éü|ï\81þæ·\0\8c®E@ü*\91ð\85\ 6ÿ:HÙ\ 2Å\bwÉîêb1pWülÒ/½ô$|\93m8\16"\18Qÿ\84-
+ÍT\87Þábã\ e<NMÒ®\8dej2µ¶]J\81-\8b\1dhkbƱ}\\1e±ã\15ÛK3þõõóÑÅivN§36\825ÍÎÏ\11Xº²tϾ\19\ 6út¶\10\9b¸÷Ë\9f%sÂ\85\97\13\86\8a\187¿\9c\9c\88Bg\92øÌ\87\9e_\968øeö\rÖ\14è7bn\ 2R\vÊ¢¹ÔFê\9b%\e\9btû·\12Êç½ZÝ'\93\96îöæu$òûràËq\aF9\19/\10\1c.\8b\8dÏA[å1@m~ºÈ¦t:e'_Óüü2[tW\1dH{\9d\9c\ 1Ï3<<\13Ó¿G,£/((\1dÐ"ѶÐ)xêA6\18\ fB\13Ð/\9fõXMfsÎÃ3m\ ee55ä^\f{\ 1JM¯\91\16\ 46 ùtÄ\1a'¢p×úÞ\ 2ìôh\ 5ÁJ]\91i¥rPP"Ù\9fa`f\91\1cö]­³üC,3LzÁ\17+@\87ñ(?î\8b\ 4k\93e\194µC\11û\0v§ ØÙ%ã9Ç_Hþ*\9dÎÞÒ\fG\91\15*f>çªÙC7CWËà\ 5\91\19Çâ\14\83·Ò\ 5¿\19WúmCo\7f\9cÜ|äEN>õ´\0k's>ã\8dn}Ô¿\fªo´ÄþVÞZ¿e}ë\ e\12Òa°F×½º>ã\83©\8cS\16nôËÍÕõm\16Ñ\83ø\80\81³\89~2¾mìn\80R×Wq\0âæ.ôb/Ã-±o\13\16\ff\85¹ÊÑ\1cKæ¿x(©Þ\ 3\8f]ð½*\8dî7ºÀP^ôÐ\8b|Lç\8c1ý.\a0Y6\81ò\\15cÊwô\15\9e\8eÝÄ=þÝh\11\86\89ÀÕ\9d\ 5¯ s\ 25\97\9e\82o   \8fUðíF\ e\al\18º    \13\ 4¥Í\9d\r\14W\87ZN\ 3h\95<\86ò\80Üà!¶Îp\97\ 6\a«\0\a\ f\93ÛñF\rp+áé`æÚ\88\13\1fø×b\11¸\82\ 2\87G\80S*Üf\e\81Ѫi< àr\15\88¹\95qÈc¡\ 5ÒÉV\1aV\ 2|Q\85PSúL\17\19\ 2º²\8d\97\ 6\ 3}\8005i\f\12¿FsãN\8dÊ©äð.&¼mø{\0N\1e\bp\a\ f*¯§.{\104vP1\9bÄ$%D\11\12v\82Ñÿýuàat»ì\9e\12\1d\99\ f\7f«;\9dr\ 6à¸á\eJÏ_\ 5úCoRµåíg\9c\19¶8ètX?÷\1c¤äþæ\1dË*·\vD\ 6´`c\90HnÉ\1d\ 5Ö\98\96\9dÁ\ fP.¦<HÅóç\rt^ì\1f§nÙ\ eW=.û\81éø>È/ãºI§xáÎ\ 1X\9caã`mQ\18ø\9dÑí\80E´j\9d\1c÷\9558^¡\8eR\88\1c\1f\93\14i\19\1e `e\84EVÞ\ 4\e\8bÄ$¥z÷õË·ûëÛÏ\Ö\19]ã«Búð\80\8cÃ\91ë\92¿ó\0Ó\9eÌÂ]\1fáA\10\81\ f   E\15\ 33Éí`Ãý\a\ 4¾}òé²kY³\8bE6Ã'¨siª£û«\9bwWt\17üw>½~è<\99ÀÀã&éõÉBTqôóbx¶8ë\rÈâ\94gB#ûíè?\8etônendstream
+endobj
+1016 0 obj
+2245
+endobj
+1017 0 obj<</Type/Page/Parent 794 0 R/Contents 1018 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
+1018 0 obj<</Length 1019 0 R/Filter/FlateDecode>>stream
+x\ 1\9dW]oÛ¸\12}ϯ\98\87\ 5n\16\88ÕØqídw±@Ò6\85\81M\9b[»·}È\v-Q1\eITI*©ÿý=3¤lGÍbqo\83¶±)qfÎ\9c3\1fß\8fÆt\8a\9f1Í't6£¼>ºZ\1d½º\9eÒxL«\12'³ó9­
+:ÍNOOi\95\1f/¼ï´'§+\15tAÁRØhò¦¹¯ô¨²÷¶¡F\87\1e¨¶\85®H9M\85ñyç=\9e7\r\9e7\9e¼Î\83±MF´TõZ\91ïÚֺੰµ2ͯ«oG§4\1a\9fe\13X?\96{ýÉîæhÇçδ\ 1_«¦ ÎkG­³¥©à^i\1dÝ,é\8bi
\14?²K÷Îv­\97ç\ fN/¾¾ºy7°\98WF7pçicò\r=\99ª¢µ\96PK\8b\96ÏãH¯OfÙ\94\1dþ²Ñ\rÌÐòæ\8aâU\1c¹JÑá>¿\81\97\0/Fb\ 2­\9dUE®|\0´ß\810ls\10*=\81è\1eµ\ 3\+ ]\1a\87çl\ 3\87ìÀo§ÛjK÷\1a¯s^¾Ùu\84çQU¦@Æ<\19\1cµÊ{àÁ¨!q\b\12\9ej\9doTc|-/Ç̨¢6ø*8\15àÏFù\81EÓø ªJ\17\19-\ 2!µ­õÞ¬+MwÇë.\10îÝ\92\ f]k\8a»_9äÜi\98;\0c£A\11öVr\b/ÕZyÍW56\90ß\80A\ 5Ð\ fOZ\ f\89\11a\ 1\ 5L¦3¾c+|ÓeÉüzÔÀb\97wp\8e1Dú\vü\17\8c\84\8eWj¯«G\0£\18\17|\9f\9bV\ 5\86å c\ 2¼\19\86^èÚ"z \83×7ö\89T\87û\1a\\81\v \ 4Dð½3\88µ0pÈá\84JgkbXòÊÂî\16F\1e\17àDØ$~øl@§Ï½¯\80¥\ 4z\9d\83Á­í(\aÇjõ ù\83KLó\f¹)·\f\87q\89?\8fF\1dä4"ñ{|µ§ºëÀÐAr×*\80þ¬)\90\ 4\94\16\84#g\93ò{±³\ 6¡µ¦\ 2\8d\93åÖi\89:×HP¡ýC°­h\ f\84q\ 1dkºa W\1a¤×T©®É71\aÉNn\9bÒÜwÀZ\90eØ;)!\9c\1dg:l X8[Yû\80×U\88\15\82\8b\1f\90zÂi\10\1dl×àA\84ì7>GI\1cõ\9a^\81¡IË;±z\90<9¸¸=а*
+¤(\95    \94Çn\r\9c\92\9f¦\81\ e\83\ e\7fI½L\82Ï m0æ'\96yæM2\82\16\1f\97Ô¨ZÓÛ\8f7\97\8b\ f\7f\8có?      \81"5ÄwÊy¥¶»j\91|Î7\16\8c\8be!\16\10\82¿z\0\ 4Ðt:×P\ f \8dõ\8f\80~@Y\8eo÷FÄ        )\84\f8WþÈ+v\16R\8eµ\1e\84\ 5ªð\ f\ fÒ\1dþ,ß}úÏ»O\19±Õ\11ºL\ fï8~\85oFg\17Ù\8c«è\ 1â\88®a/\1aèZ
+g@ÍJöNØ:°n\90\8c²\92¥ð"X¯Qw¾\ 2nf'#4¼c\18ûâöÍ/±âà®X\1cãe\ 1¶qÑÞí¾5Mön÷\91\fÝ\8e>qn¾<\80ú\9f\81Ò³Ä÷(;\1d\9cA\1d\8e(\vº±ÏÄÊø/\1fQ\1e¤+vÁ\9f\1d;ûgÇ\9eã©÷\8c\94\9a\e¥ª\95˹Wq3\92Î-_\9b2\91¹´\1d ex¹\14­\87x¢Ô\17Ð'Ï\v1¶ø¬þ¡ó\8eÇ\87µT©$+\14ÙË2 \r±\9d\13!tâ.Ï\ f}î¥\82"\95;o\87xp¿ØÃÑ'eº\87ãïè\ 5¡\15,\7f$\8asô^\87ESÚ¾\1f÷\12\8c\1c\87{|\12\83\12jI÷B\8e6\16Ò\14\0S^\aþ\ 1\f\88C&'/à
+´ýä\92ÑÒ4yl\87¸?
+´7ý7\8e  ¿¸U\ 2#VéÀ`Ý¡\84×\V\ 5R\18w\ 37{ãâ        f¦\8b¯»Vróy¹b?L±Ó3_@\12æÀPaP70$l÷è÷P¿Þ£ÿz\92\9dÿ³¸w\94ßÃù\12\1f\11S\8a\90Ñ%\8f8\84\16\89je»p2p²ï\9a¾Õyj\92ý\15\87¦<WhÉ¢è\90 \8e©`\93Ñ5t \7f¨º­ô\89Ô³È\87»»\12SÊÝ]¶ó\83\16%\9b\1e\1d\8c±ÌÚ\1dÖ<\17\8bz\84éqn1|-ú"¤±Ç°gðl\8fa\ fëO\95æ%\9d¼\90p\ e\a¹ê%\ 5*\v5À¯X\98\1fFÀ}5Ö\827\1f?\/Þg·\1fÿ\8aJmm\85É\89\v\ 5ú/FÁ4\1f\83í}\94±KsE\88%ä¥Xûª:\8f±¾[\1dañ Éd\8e±zz>çßñ\97\91\8b\ 5\8d1oó\9e2¾8\93¦±ßTÆ Z\86®òæÙä°8\98\1c~c©ó|H\12\8cw\87»Ïh»\8f´!^Jvc\1cô\99ÆQ\90äöí\e\89G\1d\f\19©\1döý\10@\1fÎ.\ßU`h\ fÇ\8bÛ~&×Mî¶m?@²®y@\80
+Ñç\vv"\ 5#d¯®ó´»\8dæ\10\1av¶âøn2\9bK¿Ý\aÇg»õª_\93\ e§#ÞÄdþæq\9eG\99ZñD\86Êä:,\1f*ÏQù\83ÿ\9f\8c\8e&çØç\ e\a*L\88(LXQÒ\1aÈ`ʲ¥*oa\ 4\86¸"ï\1d|\8e¬\8c\8f¯®_§\88dzÓ\fã\ 3¬È\12\86\1d³s&le\11\95\1cÕدP¼0¾=\ 13Éw¤\18v`,¸ñ\9f\85\19\98\1697¾\80Û Ýòùr\8c\8dùBjÙ\9es\10$\9eci+\fêO¨È5ËY&\16\99ÓÁ"ì]Üã°8\e\96<7\fÄ\85é\8c¸\ 3Å%\ fW`×\ 2Ï0³H\ 5/4\86qM\16Ã=\8buPÖ\f¯å<-`LÇ©\83\15É^\14\9d}`{=\r\11\88ìÜ\ 2í[Ù·Y$ÁY¬q\8eǶgÈ¡\8cÊ\8d ­´\96\9d(\81\ f«s:\8d\92\\1e%\85²D\9f\1fð'Á³N\88Ê\87ª\aô|\97¿9ò7\9f0i÷\98./o®.éÖÙoè.ô\16ë7C*{\80\94§ñ\8cß\1aÅ×\8eÿ?ÕOçÓ^,ó)ß\8a ÿ}ô_¥(~½endstream
+endobj
+1019 0 obj
+1911
+endobj
+1020 0 obj<</Type/Page/Parent 794 0 R/Contents 1021 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+1021 0 obj<</Length 1022 0 R/Filter/FlateDecode>>stream
+x\ 1­WÛnÛF\10}÷WL]\18\95\ 1Y\96dY\97\0EaÇvb VRKiZDE°"\97âÆ$Wá.­èï{f\97¤$Ú}k\v8\92¸;\973gæ\f¿\1fõ¨\8bÿ{4êÓÅ\90\82ôèz~t;?êvÆcÚýÉWø\82cÝ!þ\ eÆ#þÜÇ\9f\RÄ7ð\10fê?8~~\87#=\9aGÔ§áø\92æ¡{Þ¥yÐú4»}<\9d\7f;:¿\e\94gZ\1d¢y,IgÉ\96\8c\f\8a\Ù-¥:\94D\9bX\ 51þQIB\99¶´Ñù\13\85\85$«ÉÊ ÎT \12D"\8cÎ\f)CÞtå¾5{\7fõxÛpçMW\8e:\877ºtÖ»èô\11rëæÃÃÕý´yYdá\v\8f\7f¾HêÐ\v\87\86(\13dø­0\96\ 4=\8b\   «t\86¼iöpM\85\919%òY&5\b.6DÔ\1fv\ 6\1cÑU`\v¶Ñ&\eà2\ 6\83H\8c¦ ÑF¾U2tð\0ÒP.\85ed\ 1¤´1\1c\90Î\1d\903\91.\ 5¥\1cË\12hòY\9d
+\95Q*\8c\959g½\aÅ2×\e\ e/Âme\8d+Ã*×Å\9aí"\83µÌ\91K¶"\81`èæ-*ú9V    \82³0\88\98ªR!>¸[kcÔ\12\8fQÅ@g\91Z\15 \93h8\85Ãgø\84IS\80\ 4\8b\96\88\10\19\92MÚä\ 2r\ eQ\8e2òD¯\98\ 4\ 2¦ìFS¨\fB
+,\\86*\8ad.3KQ\81_\0ºY\9c¶98\80Ç´\12´Ò:løW¡\14\1c¡ÑHço]\90\89u\91\84¨c*Ó%"±±°\ eº\9b·\1eÉ\®àÔ=\91äéósoISi¯ï?Ì\882\91JGvW<¾Ê.Ïö\80æ\13Ì\84\90\96[ú¬²\10¸£²
\e\8e\ 1\17\94ëÅ(7O\84Ú¥ãS_\15ÊÄ\80Ûn$jä¯\10èÛHÓ=x¸îÐ\1d\8aëxåÛ©Â\a5Ø¢\ 1M£Z|Í\93\bÙ£F\95\99ÒzEÙ©ÞÐR\ 4O\15#=guT×Ý\15qg  9"}\14Äõ¿\86U\87sFÇUÃÒ¯®U\8e\ 1ä}\84\83.\88FN±\ 6¯\ 1rM.×\11l\18\0x£Ür%Ã\907r\0÷u\1e²;\8dæLTÈ@»¦\84\95L:Ú\10\8aÿ½\90Æ\1anA ê)Ôdn$\ 2&\ 6Øa4êé\1d¦"\88\9a\91±ÊP\17\1efà5\7f=^\vcðCX\ 6u¼8¥§\8c«\9f\8d¥.¬\8f\ 6v}5ÿ+ñ\ eM&'\ 4\88Ù®U©,Ç\85\ f£\82FTm\83ìl®\93Dæ@\94Ëu\80\84om4rV\9dçÂ4à®Jã@¡cÎËM\87cZ\8b\1c\8cæ\96¨F\8d\91\80\ 6Ã\9b!`²\97qVL\9eÎ+?\8b\96\1fþ"\ 1\1fÃ-Q,LÃï+9´)W«Øþ¶8å³ÜZ\15\13ç \92Ä\0\935+ö©·Ô?ªáå¦\mÚ\95\11\a\81®\fe¤2å&7"\ 2\ 1?2yðÁ<±AxhD        t\v\f»\ e\8b\9c\8f MÛÝ8\11ÉFl÷¨ê ©;\vP\95óù\ 6\84­æ¯\9fxN\1e\9c^\1f\bðã;\96d\1a\fzÐ1þÔ¿\1cvÆ`.Í\8e¼|¿úhw'-UÞ\1fKpÍ=»èw\86å\93}ù?¿\9bP\ fò\14a\95¸\98\8cái_î±)\8c\ e½-Ǽ\97¼ûÌؼð\93ø\rͤuâ\ 19yÔ"e\14?±Ú|Ìu\ 4\11qU?¿»¬V\8a~\1fjxÖ\9f°"~\16y\86ó\8c¸\a\ 2\8bÌE\1dfo\ 2\ 4\ÞXSÎï\86\95\ 5º¸\189EÝ­%Ó\ fóÛ\9fØÌÞ^RG³.\ 3\81\10­×:w£e§)®*àïä/\9e®<\93§ó½ÒÀ\19\17Â#\ f\f\auDÀ«;:@ëÚ\13\14ó;( \91\0"FC\82\ 3õ £¼D¨\8a©\1aÓ\98TQ\91ðY#¥»Ö\b©\92\91\ 6;UºN hÐF´$\ 6d$\85\85\1a\9bæîá­URd$2\15¬l\©wÒÞg\91®\86cÕßåxEH+nzt<\8fÓ_\fU±{9\83\1cwè½Þ`õÉÝ\ 4iD\88`ÖPlÞP¤\97ëX<K\0¡Ó²U\8dä9\83qýÒ2EJ&aÛ/\97{!Ä<\98M\8ce\81û\12í\9bJ\81å\81»½áÞ'¾³Ìû\ 5B²¹
+¬ß´\96\92+\85        Ù´\1fª\1cº¡óí+`bн\ 4svõð;o1ôøñm\85f»\\82yNcAC¤"Ûú´ Bp\e$EÈ\ 1\bT¾ÄÁ%ýÚ(B\rÜ
+áöN¯\10\8d\9aTûÉ\ e\8f\9aõ<}êÒ\ 1²]\vð\93\ 6Ýö; 7éÖ=ùbt¸÷\ 4\97\93×GGo·æ\0³\839rدû³\1e]P¶*ÂÚA\8dfñUú²JôR$ÿ\02/ì\90!\93.;Ügøͳ5\82\rC»hq\86ò\87àfY\9c¾ñ\8e»\84\19\14áýé¬\7fé\17\82Bôl\8c-e\81ÿ*¸Ü*»ûʼ«¿ññÅâäÓbÁR_Þà\1f\ fÓ;c?Cÿj2G\1d¡C¢H°Ò"2·¶éµ\13%\14\86=\9fL½ÍÒ^Û©-va~fxù÷ݹXpýY\89ëx\1c\ 3¤;8=a#\8d\86à\8b*p/\1e\ 1T\91\9b@\14\16o\ f\96_ÆxÃÇÂ\8f\0¿p\8f\19\86Ø\9dïðºÆºÇ\rT¸á\ 6ƺ×\10\1fJ\99    ^\ fÊqëd²áü+ï\11\ 3O~\vv-Lf-\ 3\ 5Ò\87U}÷
+áß]\84S`\8fè¸Ô\81ÞpÔéÑp8\09¡%h¾ë+\16\9d\ 4Ýè à±è\ 4\8bï\9dùãg£>ÞcÃÖÿ%l\83Ñ\0¼w&G\97ì\a:öÇÑ¿ß8ðëendstream
+endobj
+1022 0 obj
+1797
+endobj
+1023 0 obj<</Type/Page/Parent 794 0 R/Contents 1024 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+1024 0 obj<</Length 1025 0 R/Filter/FlateDecode>>stream
+x\ 1¥WïO\e9\10ýÎ_1\17é\ 4\95Â\92\84\10\ 2R?@9¤ê
\8eTí©©*gãM\víÔö6\8dÔ?þÞØ»ÉfÛJÕ\1d\b\bY{~¼yófòù O=|÷é|@§#J\8b\83ëÉÁ\1f\93\83^2\1eÓî\97\9f\1e\9dö\ 6É\98\86ãs¼\1eðK+)ÃÙ\1e\9dõ\aÉ°z\82\97½ø\ 4¶ð\10\ e¶¿`èäö\8cú}\9adìp4>§É<\1cèÑ$=º7^^ҳɧ\83\93Ûauìè}þ\94æ4\18\89rq1¢cZKZ\8a/\92æÊ¥æ\8b´rN\82VÖÌrYÐz\897è­Òs³v\94æJj\8f¿BS!\94öø!Áö{tÜ?M\ 6ð~\94\1a­eê\95Ñä\rù¥¤÷KSH÷\81ÜRÀ\18®Ì¤_K©)7\v¥]B4ùîTQ:O÷¯'lÀÊÌXÉn\8e\e~f\92J\87`9\ 4\8e7S¹¤\95ðËä\ 3\1f\r°÷h4¼Ø\81Ü@òäö¢\ 2\ 4\17\ 1òq2À÷6ñ\8bwôÂèL-J+8³}H\11Ô`\84\82\89!W®VÆz¾\8bk\15d]Ú\98\92BR\b: ÒAöÀ\88±é n+
+é¥MèQ\143\81\928Òf\r¨\80S¦¾"QÇh
+O\1d-}\vsØ<\89\86øÎÚØ'G0°\96yÞ%¡\ 1\92ï¢\1a¦\v\86\8e¸8Àü'1TÖ뤮7@ZéE¸²\8bz\17\8e\8bk¥óV¥\1eá¢ø«Ò{¾\17¡¨\8bä¸dì\1dQÛC\17\10\0û,Hcì&i¥v]zZ\vå\7fc\920}\90\19±\8f§\0ià"\f%ô2\vo8é\83ñÌä¹Y³÷ÊÛûEnf"\a\r+v\9a\12¹b\96\80µ\19pÎåe¬m\8fÀ\89\f­|<8\8b¥m$þ\9c¦øúý\15~ÞL§IE>\17\8dvÌwG±'\90­æèì>+h­ò\9cæ¥WY\99ç\eÆ\8bcW¶¦M$·+g[x¨\8e\9a˽C\r0ä¹\9c·°ÛFFÓ#¿,\1d\9aö©ªcAK5\9fK=}V\ 3^W\e¢\ 1\1a&[\97f\88é\10\8cãj\ 5\8e\1dƨE\ e>2ÓpD¦\ 2O94A\99\14¾\8cm\1e\93Ee<xQ@[P:½i\ 4í|\99\98M\96\85úI°\16\ 6\99'­TÁ3\11H\1d¢\84c\17N\81LP¯ð 
+\rw!z5\ 1qÐ5ÊuÑ\ 5\90\1c\83ÞÈÕ\93äz´|»\95LU¦@Þ]}      Ú³×'\ 1¯J]\86ýþV¨\9b:ÝT\97Óq/\19ýH_N\83¾@#¸AÑ"÷\93_\14\99\7f %,ÁµÒÔü\v¡Î\8c_V,ÛÙ­\85\ 1ûcO\86s\8cî\9e\ 6ð\95øF\v\1a\16Ö\86LA´o\81\8bü*\8aÕÿî\19\16uLGÖÏØdì\8cvMVçÇíÆa5fÞÙ®Ç~8ì^ÆÙ¦Áét)Ó'\94vÍl¨\19M\15¥ç&\8a"j\80\91§÷A\81ä°ª\88Ðà\8d   $fàt\93\ e\83³!J]Mô\9f\f\9bÁà4¤º\9bÒÕ¸\19î\8d\9b\87j =J_®bÒµ°4ÆÍ[\8eU\ 4!\85xY\8cL\0\18ô\15\ 2\ fJ\85©}ñ\ eÚ\8fB\87\ 1\89v±ÉÍÕ\84u4E#A©1!Ð\98hYHæ\ZG\9dG/0Àî¤.;Ý\16\ f:7Ò=y³êt©\83\18\17\18\13\18ܹ\97~i̼\13ç9ô \16-\1e8L¬JÚ\8cöa\8b\bâ\87)^H»àº(\14\9dãÌ\rĬå\16\9díÐË(\ 4f\ 4\ eCÓÓËé\14úÎ)N§;\8ap\82\1a³\94G\1c\84ÓÉÏ%¼U«\ 6\80Ø* \15\ 6xaêðãÌ\9a\82¤H\97\b\1eíÕò\1e\12~1ÔXé8Ìí<1+\96\19À¶Âôc\11BsâÌsÚHÇ0¹%¯\ 3?z\18q\v§\9dÔNy\85ËÏ[εépºÆ¢6ì\7f»x¥b¥¼È)GGsÙp(¸JK¬hø\87µ¶RÐ
+\9eºÂmÉ\9f \9d-1\ 2M0\ ey¹CÝ0 8[~\8cY\8d,2La\9dJ^Ûª\91»V\ e\953$5´2\95 $·\v\7Nóæ\11Ê\ 2cʶRÜ÷\1d1¶ÉÝÕ}\^0¦x\1añ:j\95\87ý\14î!ú¼\ f\81Æ\1c\b\eðv\11{\1dW\8cm\ f\9c\ 1·t©´ìÒ\ 2÷\fK­·&§\a¡eNßð×9\8c³y¤*2ȱ&\84Ôß uªú\11\f\99?\86Ç­4\18'\v¾a\95\99£*_`\17 \905¢à©Û@\ 3\16\1e@\16G¯ÿ\8c\13vnè#Dê#ã\8d\r\8e-¥¦À>\0×\1c­\953c|\12vùcìûõ²Ý\8f\9dÿ\9e\96ç80 \17\ fsäN¥Ö8\93a\v\8fÏ\1d}ã|\9b+8rh°!bB\87¯Ì"ì\97\86\brzc\98°\87Èx\ 2±ê\82$\8e×\83°Ér\9a\ fV\15Ân\b·Ð±(çá.\88\16¾ß\87Äfw@F\8d\81       ¯Ðÿ¿\88d½ö`Ûgw'·ãêsA\7f8Hú4\1a\9dÇÉôxuw}Å4øļ¸1iY@8¶\9f\ 6\8eû8\88*\9c\ fðÉk~Tiúþ@§\97\1aÛq\19>\e¹Kp(NârE\7fW\14Ù£\1a\873<\1fÂ}0y>â7°xüuð/ý\e\87\0endstream
+endobj
+1025 0 obj
+1681
+endobj
+1026 0 obj<</Type/Page/Parent 794 0 R/Contents 1027 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F8 10 0 R>>>>>>endobj
+1027 0 obj<</Length 1028 0 R/Filter/FlateDecode>>stream
+x\ 1\95W]sÛ6\10|÷¯¸Ñ\8b\9c\19\1dÇ\8eóÒq\9c¤õÔqÓFi¦Sv:\10 J\88HB\ 1@Ëú÷Ý;\10\94Âôc:ö\83e\11¸»Ý½½ã\97£S:ÁÏ)]\9eѳ\vÊë£Wó£§oÏéô\94æ%¾¹xqIó\82Nf'''4Ï\8f?6\85vôÉ4\85Ýzºz>¡÷Î\96¦Ò\9e\94Ó\84ÿ6\95U\85.¨t¶¦°ÒxÀÔÊíèÎ.m3£Û\92v¶¥\95zÐß~MÊ?\99\7f>:¡éé³Ù\19"\1f\8fo*£\9b@¥uto\1ftUѽ\ e[ëÖ~<á\v\1a¹eÓgÑ\14Tq$ò¹3\9b@[\83#\8boSC\12ý\8d\1f´{Ðn6\bý_\99Ò8á ¥ým:)ú\10\94Ê檢Zå+Óh\9a\ e"+Z\98@j©Lã\83Ô\97Û&רÆ\96䬪M³¤Tò\84L\84Tù5Õ:Uqv1;g\0\7f\ 3Ø\92Ec·T\828ܧâ¥ïLeè!e\92LC\vûH\88\188>ýÞzí&´QÞ\ 3öb\ 2\92k|ñ\aqrZ\15\9cÓçÖ\87A\r\83c\7fÌ\88æ»\8dÆ))È«z¡\b7\ 3ø±ïî¤FÕ\9a²cp­\9a\1dYÐëÒWkä\8f£\96ô£ñaB\8b6\80Våpá 2Ð9(\92³ïE ZVL0¹
+\90è\1e`Óg p6!û\8d\9c\râ\ 2l\ 10¢0\bÝ)Oª"ßn6Ö\ 5O&dO&$\89H\81\1c\83?¡î\84ê\90µ\9f@·à$§VÊ£VHÝ·y®½/ÛªÚÑ\83ªLÁ\85H\1f\1c4e¯+áÝ4è\9dZ\9aN\12\1fÏÑ\94éÚAþ\8d\rÜ=K\80\83\ eZh\9cÔcp\ 1¬üÚË\1d\9dضƯ\98\r\9fú8\15ät©\9dFúþ;¢\ fºÒy ñNûñ?\96\98ºèê9å±Ùs[ÃPÚ\rx\v\88\82|\ví×Án&\92\82_Ù¶*¸©Õ¢\ 2L¬  î\89\88\18\v\17\1c{Ö%\8e\ e*,\8cCF\16~ä7:7¥A©\9d$G\91½\8d
\11\97Ïq\ fe*8@®¦Üá»®\87F¯cf£ \8d>\ 4å\ 2½ÓM;\9a\fÂ\8e`\93K§j?\92[Fð°\95µÅ\b¾VÁQ}ôCá8w\9aI\1dÂ\ 5Ö¼î\1f\92ÃAP\81Ø $Ñe\1da\9cH¨v#\1a¡m²J¡\1e¥2@%\9a­#\94\r¹\19\a\18b\ 6 jBVÅÔ6\b²àò!Æ\97ÓìÉ\8cz\7fÙ{\8b´H§±X\8d§²u8äú\ 2Ðâ Ñ\85\ 6Ï\ 2îð\8c©\ fÐ\93jkí\96\91á®?Å¢\84é\83±Ó+f \83ÔÔ´\17\80ª¸¦\1e4Áp\108\ 1\19Ô\9a-\17\15P£·\1a¦\9cxãÞØ\17\12§\9e\ 6)°¶0¤ðö`ô1Ìr_ºè)Ì\99Çè\1eç¿\91`7ñx\80
+&K\1dH;g! ~Þn¯\9e\ fªHc\ 6\17F\89sÒüW\v?\83µð¬        A×\e4\r\9ai\ ft\9cRü4Wîtm\83N@ÂÏ_)\ f'\85\15õ#\88E4\bÎFÞ¥è4û!ä\1a\15DÈ4YÕ\84 ã|-q>6æQÀ \8dvµñÞX\8c\ 2\13\0½²2\erf¹â\16ÿjú\ f\99NZ\98¤\ 3\87mýo,Aip\98Ú\93È\98% Ý\93\ 6D´£\5À\ 6|Kö\9d\ fFè:Û"iSÁ\1a\18[èÊnSà´ê|\8a\1d\8aY$A¤Ç\1aý(\8e\f\92\1a!\7f×ϲ\0ç@ÄØ7;Y¿À)Æ÷\92\r\v\13³V\1aÇ;\84©õH\ 2\9b¦Ýà`\82\1f\1cmeÇã³\83\19¾\1fý\85Q80!\88\ 1ã\88´ÏÕFÏ\88  \98buĪX\1c\9fÆÏøØ/s®\8d|9\8d     cÂL?\8a\9cØ\18£YUÖ®\91ý˯o:Ûß\942ÿáÇ7¿ýy÷ÓÍõÝ\9fï®o~¸½\7f\93\1cɲ\9bÖa\ 2\85\15H'Ëà½Ü[wØ\eäb¬\97é\9e¾\93Ľ@$Î9è\99Ñ\936f* \9b2í¹ï1\1d ý{î\ 4\86hoB2n@ÞZïàª\95Ykx%Úi!\1d1=Øió\97\8d+t\96%-e\19\87âý\80\97\ 5¾»ÁÔ«t\17\87oíêà\14$A\8eïô\97\16#-.\14\11§\83ò~\7fó\88æ\8eÏ-Q>Æ\1e\ 3o\1dÖ1&ëéÛ\8b~Õï1ùtýËýíý÷ñûô*pLÓn\1f\88Y%;L­ÕM[:ð×
+\ 1ãt\95\f\ e³Ï\8eÃ
+Páw\88Óÿ\84\89w^\94Wǵ\f\18É{\ 5{\8e©Ùl\14¿:\88¯zT\8dl¢c\18¬\95qn\13\81éoVH\\89G¼Ìó\1aó\1c\8c\1fp1¬yo4_Q\94\1d×ql`\9d\1aë\f\ 6£ìµ²\98ļ\ 6\9eÅ/Q\8dÖx\81âÙ\9aúéÙÕì\82[êÙ¾\11\1fsFQ&Aÿ>¥Ë\92W.¨\91ýú!ñ\14ý(;Þ\8f\97\95)
+h\8cü\ e\92MöD¬göúzÎ\1e"(\f\12ì产Y\mËïe\98$¬´¸\8cШ\ 3\98\17£¦Ûvðç\1eÓn\13Â\85ÝbÔM®ì\ 3\15{¬ù\98¨ÉÑ:\87\9d½ÿt×ïÏSvX®\95Éîr§\83>;Ðet\9a\8eN\98P\8f²¸Öù\1eâäËp:Y\95¸¸®mñæÛíª\83ãÏãç§o_t}uz~6;¥\8bË«Ù\vfðÃõ»W׬\92ÏLÒk\9b·\90WP\ 1>\15ɾ¸ÄãÓ˳h¡g³\173¸ß\8dmJ³l\9d<G·xïrmÎgüK¬Ø!pá\90×/Ý\9báG~åéÚMÞ§Ï/Ï\11^®¼¼ä8oæG?\1fý\ 5\vÉKÔendstream
+endobj
+1028 0 obj
+1802
+endobj
+1029 0 obj<</Type/Page/Parent 794 0 R/Contents 1030 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+1030 0 obj<</Length 1031 0 R/Filter/FlateDecode>>stream
+x\ 1¥X]oÛH\12|÷¯h\b8\9c\ 3H\8cä/Ù>Ü\83w\9dà\fl|¹µ\ eÁbµ0FäPbDr¸3C)ú÷WÝ3¤d\1aût     \fH49Ý]]UÝô\9fg3\9aâÿ\8cæ\17tyCiuöÓâìãç+\9aÍh\91ó¥\9bÛ9-2\9a&Óé\94\16éyºÑé\96üFSjj¯kïÈäò½±&/JM\8dò\eZ\9e;­iT\9aµ©åÊ\882íR[¬tF¤Vf§\97\1fƤê\f×Kíµ\1cÑ:m\93Ç\87\ 5\19ûañýlJ\93Ùer\81øçò\9b/\ fÏ$!rcûûÇD\95Ú\16õ\9a\14­Tºm\e*r²ú϶°:K\88\ f\9a \9cî¤\9bxéâ\9a&\97\r\9fþ\94\93*KÒ¥Ó\94«¢tc*êÔj\85ïNU+õw\874Wí\9aP\10\95z\87\eZi¿×º¦K)d6\r\ 5}DúdÛ\1a     5HH{òV¥\0Æ\9aµUÕ 2צ\eR8.m²¶jøÙZûÊÔ\89þ¡Ã\81¥1[â\9aU} m-\1f¯\ec½Kâa\177ÉU,ä`ZÚ¨\9d&\95¦ÚI\9aª¦ç\ 5\ 1Û\9d¶c\ 6®\ 6\8cÖy\ò\ 4¼¬Q\15\ 3\18;è¤\1a©\ 2\99H\vÑäZ\10ïÏé"w°~Q[\84|Sð\98kÑ?øìÐ^þÜ\bC\8e¨8\8eº+2Ðb_\808}\80P:³h¿Q\80\aÀeE\9ek«kTIÊâ6~\9c\89É­ß©\12Ü\fÍ\vðKÂ\9f\16g`2]ϧhüÕí\1c\9f\83§óÀü»È|Ü\ 3rܾ¡þì"¹M.\92ë\84¾\15ufö\8e\93ýfìÖyå\v\0t\95L9Ç£~@à®3ß\18uEÌã\b>\80\19óHýÅ\89Ò¬®-\88Öë£pÄôôLpZ æغ\ 1D¥ICf)(°ÒT\9b=¹F§E^\0o¿±¦]\aÌÞ(µQ )4i\83T>~¾>úA_гñú^Ôu¬÷ü÷r\9b\964\9bªv}7§   \15À\9eC\81h\9e\19Æí\11\7f@ÑKü\13qM\ 23\97Ë\8d©´[.c-B\80AAYáRX\a\84\8d£\84\15@B\14\8bòR\ 5|\80%»À\1a¥Á[p\94\88 REíñ\ 39\ 4çªu*-C\1e¸ÂQ&'nó»dò\a¹\8d\10kS@¢\99\ 1Ï^kã_)-\r\ 2\81\ 15÷¯3\ 1i-\9a\8a(hJ/CD`9\ e
+y_üß~9©|¿A\8d\81,(\90sæÓkt¥ë;åÖTò\9b7Éþ!4\9fÀ¸ûF-ä,\1cÃê\8c\8dÅ\83@\ f×\98\11j\aËS+\b\93=\86\94ø5Xº»ï\9c<³ÅN\8f\84sxØmL[fL,6\12\14:ÚÜ\8f\ 6\85F×2¨Á\92<\1e\85Ý?\8b\80\19ã\88yò½­C[z-×zßÅæ\9e\8c\8e%t\ 6Ô   \fe\12$o\ fR\ 5C\ 6uB\91\9d4¸ZE¯\19¦Bê\8d=¼¢v\8f+<P¢\88ðÀF\97°`\8c¬X9U8\13Úæ&\01Eýó\83:ùôÒ\99¾=R\81¢äëã\v<\10\83Òá\94\18\87{9\86­ñ´\ 4\985\0\18SÕÂ\93Å»÷¶ÀHl´­
\ f2¸AðÜòAè¼Åì\8a \au-Ïy°2\ 6¹)3\0ßãù6\9få\az¯Ø\\94\13å\15ùÆ)Ä1Ï'\f\12è1\11)ê,tx£\90ÂiÚ V¥ê\16\936ôH+È*bÁÞ­@(\8dRxMh|"xb\10£4íÚ
+³pÕ\ 6x\ 6á¹\8f^;\98!ûe\98\15ô\1e\14A\17\]YX·\16¾\7fgÀ1{\vÑ\ 2³\7f\7fw=¦¬Å¼\12\84\az¢]H\17\98\1e\ 6á\95÷ºj\84ÿÇ\16½\8f\7f/9\82\v\ 52ÅÐb<\ 5\ 1ñÃÔT\8d©Áµ\7ft}~{9èúd\9e<\85yܵ½oÁ\98i\1fòpT\19\9elB\ 1!pMw\98^ôäû;F\ fMS\16qJ<*¯F2üE®Ø\82\80Í\9e[¢Ü èÑ£v[o\9aÑ\98FÏÚo\8cÉøã\8bWÖÓ\17]·á\9c\11\1c\84w\1e\17\9fS@Üé2gM:\881\18@ÐâÉ\98ë$Þí\18\189\e\9aF+\8b\8ax\ 3;9\80    /\ 4?A\83\85\80`Ô´¶a×FÄ´µX\e<XØÖ[\18`ÝÅé¬ä7¬P<1Ù
+ùÌ\97\ 3ZVÑÏXx­)髪u)Ô6Í\ 1¬å){\14 nâ\81.\93-î\q\eFcþ5°\97{ä6@¶7\12Õ\bGA\13,k\665Î&5H?õ\12Vf\18Èù\97Y2§1\8a\96\1f\8e\16'9È\1aÍ\865\88þÖî\0\fOV\ fT\17¿ñ:î[\voÄd\89Ë?Æ,W\ fÙd\8a]\16\ 5Þÿk\89\80Â\v(FÄ\r\14Ow.\ fz\82èñ\97AÈ<\99K£2áJ\97Ú P\19\9fhS\89\ 1X\16õ\16ø`è\ 2G~³@\ f¸\r©\ ff%¨ã]@\16Úã]<¢q\9bÃ\âá\95\17ëÖʺšN×   xxË«¼£\ 3\81tÑ«ðî\82½bPÔ+ó|û\1a
+æè\9c¡¤\14\12\ 6¨òmPSÅV\84üE\160MSîtöÎ9\82ã_ô;\9aÊù¡À׬XÃH\ 3Å\1c\f)c§BÙ\88ÇF\r/ÁV\15ì]¡)\8c\96Tn+\98ï \eéVä\ 5D\a#5\9eõÊ\9d\81à»\ 6ðëU§\93¶.ù\95eä44Zø\ 3ýSÂF/A.öÐ\fõÒ(çöÆf\ e7\1f´\eE±1jBòOÏ?ÿúÛ×ÅÓ¿\9f\13ÿÃcâA\11§\ 1Âò\19Ct\87\rJ       ÷ @Ñ$*Ë\0-V<\93'P\96}^ô'\84\95\8dWòO\98gÀ&\8c\88\12±/ØLK&\1d'ø¼\18R\ 5\95ô¯\13¬¤ø\ e\87\18\98Û¿@\80P\9aZ#T\ 4\aÀv5À¾yì\9bv\88\18G\96nB¬üN(\v\ e¶![Éhî^\9diu`^\9efÄn\92\96ðÞ\89ÇNs\8c\148öñóm|O\98\92\19þt0\937¨ó\97\87/?=\10FÁwö­G\93b\9ac\1dgH¤þÙÍ\1c·Oæ\17ø\vCv\1e_³Øn\8f\92¢§ÚyÛÊv\88uô%¾OÀ\12\7f\8d/¯ÿe~"\ 67]¦ÕÕü
+áåÈù-ÇÁËß\7fÎþ\a\17\1c\93wendstream
+endobj
+1031 0 obj
+2002
+endobj
+1032 0 obj<</Type/Page/Parent 794 0 R/Contents 1033 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+1033 0 obj<</Length 1034 0 R/Filter/FlateDecode>>stream
+x\ 1\85W]oÛF\10|÷¯X\18\0\16-Éú4Ð\a'NZ\17\91ìZ
+òP\15Æ\89<Z\17\93wìÝѲþ}g\8f\14õ\91:\8d!A\11©ÛÝÙÙ\9dá?'\1djã¯CÃ.]\ e(ÎOÞÏO.>õ¨Ó¡yÊ_\rFC\9a\8eÚí6Í㳿²ç8£n_\94Oã!µ(7VRlò\jïÈÊXª\17\99\90X\9aÒÓtN\855©Ê¤»"¿Â\8dÂI2iø\_y7ÿvÒ¦Vç2ê"ÐÙc.¼\97Ö=F\14îâ\1fÓc^:ÿHK> Ëpüt^:i£\9bë9\19{N©±$(\17:\11ÞØÍ6èùö¾Éõôï\88\ 3}\9c\9f \12\1a\f.ñÞ\e\rñÞÅ\v%¤UåãºrÜsÙ\r\19íJït£QÔ\8d\ 6\11}U:1kÇõͤ}\91\96ÏÞÁ\86\83¨ÇåÌW\12\87+GÚø\95ÒOä\r9o
\98\92\!c\95nøk¡\91µð+Ô,|¸\98©gd\85Â\18·ÌÄÂ+£\19;®Üý²­Ñ\ 1§\10\ 4·Êó#09HlÊ,Ù\86ª\8eç\13\19Säc\81)N\17äD¾Ä{(ê\1cØ\86Ä\90º´4\9b¼o.\b\87\948mW\9d\88kG¡«#È\95Ea,\98!ul7\85G\9cB8·66qû\1dé\ fFÑà\7f:Ò¿\1c\ 3\1d\19F4[        Ë8Þ×tC]~-¥¦¯ã>j`ÆÐWc\9f\9d¯pìEíªgýºá\9dî\10     ´º£ªo÷Æ\83Ð
+lÛ\10\98\f^1B\96\94\8e\8d\ 5Ë=Ø\ 6\9aâ\ 6ô(Ë@\ 6>®¢\17&
+ÓR½=ü\16\b×o3½+ÂuÆø\b\ eg\r\97\87\87£v\vl\95~æwÇ\14B2´4O¥;§%\86k%^$Ó\8a\12\99INOù\88\16g\ f*\ 6\16I@¤\90\8bw»¼\10 \r\0«,Àî^\93\ 5f¡7@ùû\83\ eRáäT\94\99\9fÀ\8eÀOä±À¿\9f¦x}\ 1÷\8ep]+$É\13\9c\17\9e¹\1e[        \9c@¬D1j\18Î#\9e\9còi\81\8a2\8b\ 5\13\\8b\F÷7³SRéþ¬\0\f\9e\86&\1d\10ð\a'\9cÒZ\85\99\92Èó(ð\17\89Ðâ     \8bd\7f\86B¸P\87\96@\95\a\9aS\80Ëó(_E^d@öG\91\17\8bzÀN#\86¨¦ÛÞ\9e{\ 3¨\1f\14Ó\1c\19p9§õ
+\9df^\84\15Ìë\ 2\ålË8Fâaºö6Ñm\85#ðÓ´\16:tÇ\81)2@\8a\ e\80\91^XO\13©Kº \eé\9eyQ\ 5\ 41Eçoãrº×\90_\8f`~»½M=§T\89J§]\89Jàû
+\9d\e\89\15ë¥\88\9f! ªf\13Ô\85Ü
+[%Æ\14 `/3-}$_¿Û\7f\15D5\1d±ª\fÙRSjM\1e\8a\8e¯\16\8bµÒÚ\83\81\e\aÎ^vw<\rú\ 3t\eâ2Ôfù¢Lé\0t©w\88ËWå|Ø\9fGÅC'Æý\96Ѹ\7fe\9c¯4èû\9e\84I\ eU;é©,°³Ã\8eÉ6{ §Ð\1cìßBX\1e¨FþªÝÖü7h-¶Ô®©ÿ-³MU\81&\17\9f¶k\10\8aßh×\14\8a¸¤\9d´}§ÿ,\r\98\9c\ 1\85\94s¥¬\90\96ÎdØP\81?PK\9d\19\91ð\8a\86\84a"ê´Ü±dáû¥XVLNL=¿*\97\17¼\82!U\98=\96<U­¿Ô\94@%hæ\9e%@£´\84*\ 3Êzq\a<\8e\9a\ 3\rjä@¤Xæ\ 1³TYôÒ#bu¬òÜ÷Ø\14ªÚ\ 5Õþ\81\r¡ýß×ÕìÈR³\87C¶ö¦\1eG¡7±ÑÞ
+\ e\83\ 2y²Ö\95Kðô\98\18é\1e WµK\91ÑE]B\ 3×\8e\1a\a\86¦Ûí½-\9f0")\9b¼1oÿý\15\ fù\1cGts7¹¾\9d>~¸\9bÎ\1fî>GþÕÓվù1¹@Ò\1f8i\93ÑÏ4c\8fPÑbK\9bÎp\14Á\rvÇìyî\8ds\8a[x·\15ÎI­\95ü£Ú\82uúý&ã7\15±Ó\1d\a9Þy°9k¡(
\13õ\8a=\86\91´êIé Ô¢ôX\vèÓrC\7f\98\95¦ßi.má\0'³.ô7$\8f¯E\1elAhH\9c\95        ~\15\9a\80\r\7fÄ\93\ 2\93\v¥÷\9b(ÌÂ6ÿ\ e\eÉJK{\ÊNÑ\a\8d\87\1cõ\8f\10\9fÞÍ?ÒU\85ÝÖd\9f±\7fÃ\12³9\9d\1eb\9dI{\1a²DYðÍVfÀ1(\12Xi%\13\ 4\f2\1as\11\14\94\v§\92\12\83Á\16¦2\8eG5\85\89\89\85Æ\1aK¤E«ð\91ý]\12z\rN\1cô\1cy80P±\195ûÔ\98\ 5\9fH\97Q\87Ö¼\ 6\ 1ü\17\981¬É£ xJ(\84VX\ f¼´\96x\14\b¦\93O~Aa\10Vx.\a\97\eö\a\ fÚçëéV¢áÓ;<\ 5ÞÄ&;pà\8ay\99\94±L\8eâMTl\8d3©o5ð¬Å\ 6\8cI1§ \85\82\8b
+\96\1c\91x\81\1eAFØ\1d\82³\84»\94²\1e\930\1e{.\80O;
+»2ëjDð°Â¦É¢\a
+Þ      Ë\11þÝn-Ñ\ en·Ã"\b2ôí wM"äâ\95Ì\81_0ä\1cöâÓhë_\aC\0T=­\9dÍ®'ï¯Ù\v\7fc§zcâ\92\1fÏ\82óå_µ:áæÖ°\8bGºä¬vÑ<á©z*¡/ü¤q«\ 1Q\19óghïLú\80\15ÄéÁ\88\9ca\v\ 6
+1\82äð±½a\ ft\ fG\ eÇü\ 5FåÏ\93\7f\ 1\18Ú\8fËendstream
+endobj
+1034 0 obj
+1723
+endobj
+1035 0 obj<</Type/Page/Parent 794 0 R/Contents 1036 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R>>>>>>endobj
+1036 0 obj<</Length 1037 0 R/Filter/FlateDecode>>stream
+x\ 1\8dW]OÛH\14}çWÜ\97ª©\14\9c\ fX <¬D\81®Ð\8aÀ\12#T)/\13{\92L±=îÌ8©÷×ï¹3vpM´ª*Ñ$\9e\8f{Ï=çÜë\1fG\13\1aãß\84ΧtrFI~ô%>\1a}=¥É\84â\15\9e\9c]\9cS\9cÒ8\1a\8fÇ\14'\ 3·\11\ 5¹\8d$zQEªw\96f1ͯî£Oñ÷£1\1dOÏ¢Sl\18t\9f\95\86\12l\JR\85u"ËdJÂ\92T8Ê\90 2\13ª \95Ê$\89"¥Ò¨Â\91\r\e\17\83\97\87§¿ÿzzx~¤\9d6¯Øï\94.H\9bæÎÉI4å;ÃúÅ'<áÃE{\0bvT
+ãT¢Já¤E\10t£s¾òZ\17Îè\8c\16\83\9b\87û«»\19å2_J3¤G£raêv]\12Öe\88öݽ_DòZ\95ïW.>E\14\ 3*+rämÉ\99
+Á=ÌGSz\11¦¤¹OqH7j­\0\v=
+·ñ9z\18´GǪ\e¢\9flitZ%Î\ e   h\92^Ñn£\92\8d\93ê\81LE¦\8b\80\84ýòÅ\9arQÔTJ]¢&\88Ãâ¯4¹më\b@V\95UÅzHVS&ÝGN°&§)ɤ0\9e$B\99þÉ·àBݹ\99lm\9dÌQ\80_kÛ\14\ fÕÜøZ\1a¹V\96/H\85\13KaeÀvÿ3\17\b\ 5\ 5§PP\85\1asÕ{\ 4I¥M\8c\ 2    \91\ f\90QN\89\eؤ
+T&\ f\9f¹F\8c*\13J%8k\ 1ÞK\92?*µ\15\19.`¼\9f\võ\93n\84Ìua\11¥'\99©
+\8f,\88\85\r½Û;\92\90ÅV\19]ä8ª\97\86È\80æÁ\\0?B\12e\99©$\84iõÊí\84\91(½Ä_ ¿\82&{·¦u!rìȲ\9a2-R±D=3µ4b\8f\12Ç
+\e)!½ªÔEDw\10£HÜÐ#õÿ\18cc@Õön\96\i·\ 1E\ 28àSø\96\8b\9a
+       \a@į\85Þñÿл4¸1\10\93Ñ6Òz\9cùsàH\9fJ±_ÕÐ\82½cOÎL\ 3"\\0\97`\16w\90ÏE\82\88$-kÒÈ\97\83\13À;\aÛÙvt^:/=W\97xvÉ)\8d¾Â \e;ÜûÛõåbñr7\9bÅ\8bÅ\9faQë\99\ 3J\95¡\ fsOë'­Ý\87Å"|9\99.\16,\eµn\90\92\13éP\82¶¨\8d¯S÷\14ü\9aÁ?\1a\eÕKf;RD"¿\1dk?R\99lô/\91\1e\88\v5Q[éíÓ2íCi\1aÐ=ék]Á,jÚ  \b\ 3¥\84¾V \¦`\ 2Þf\98¢¼­-\11»ÿ%h³\12U\ 6\8a\85â\ e\9b»÷fÞ\90\eÏEîKbeR\19åê>\rÀUAi°ó\ e\8aCºW\89Ñ,\92.\ 1\9a\85,1ø>üÜv[\ 3û¥\91o\12k\12F\83ë\85Çt\99ß^??ÝÅß\9aÄ \\8f\a;G÷xÆ \18B\eåF\0Q´Cù\13èB\97*\85\11°F±¯\ 41W$AÓ~\9eÌ\92\83)\ 5\0¹ÃÀ Ñ\13*\ 3^4·r\13\f°Q®S\99\85\10­¨\83Az\9bëx
+ºæ;\aÙ»`^A\91¢B)}´ÎW5·2ÛByK       ×ô¿Ô\9e£\81 h &WÖr¿^A]\9e\ao\11\89B¬ÑQA\9a\0ÞqÓÆU5\12\80\ fT\9eZ©>\ 4JGÞÏ\bvß!\90\1cj\ 2\1f\ 1¾¶\ 5\84\89Ø\1a\1a{/Pã~ù\8eÚ{\ fæ\r\15\8eýØ÷·}\1a¡|+ÅcÃF£×Ã\0dâ´©\87´6\1a£A\18*ìF\95è×\bæÕé\92Ý\86\15\81\ 6\ e.!PønO\7f¿×+Ñ\1ew¾5 þ~\9c@7Ú)\90ÐÓL9ÈvǬ\ e\9a\8dºb\98ûõýÄ<\8b\ f\ f\11ó\96L\rÁÃ\1d\90\94\ 3½BÙ6¬{\10\9fÝ\15å?Ƴ\8aYǽFÓì!îU\9c£\84(ÐÂ|'â6»ª\90F\eùÛ%A\95pYl\ 1|\96Ï{y\9b\f=\89\9b\91²É°\8fl\8c¢þÊ\15ð\80\9b$w%<\83àÑô÷Ù^%\98\ 2\a¾\ 2ß}¾\;l\ 5AR?Ú±ø\99-½Ü:ªa)tJæg\8d7MùÁv\15Úá1SÄ_ÜÛ¾\18¨\bó\ fd#\v\vµïQo'\96þíðp¾ÕGæç)\83Y\ 6ý\15A3ÿY£\8e¿t¬*ÃÔÉÔaÇ\87\12\83\ 2x0ß\82³k\89\91ç\10¦s\91/\ 5&\15X¶g_\98Rq2îvh   \ eÝ\8a\8fã.\96VyéÁîè\97qÇ( \89l¾,\85µ;\ f+æ²KäÖ\9f¨ng×Oß\1eã»\87Yä~\82-\18Ûºc\1cR~;\85\v5*«å\bíd)FåÎ_\8f%h_\ 6ã\bÈ
+w\vñçÊ\98wS>\9fÎÔhòh¼\83Ǥ\90W`\ 1\18KK\98\15\12,´ã^(\85UðxÏ\10$¦r\fÔ<øy\8eu{\r\1eúë{Å\vînûh· qXÌ}o4p\97ö÷Ï\7f\ 4ci¿ã5í\9dD\1aqøjôô.zQ4¯K{Ïkz\8e/&K§m§~ éÜ       )`\fl\9a\8d§ÄRJö\ 4Ã\16  \°\13\ 3\11·,\9fáèëE3lMÎΣ      \9d}>áW;ðâË\15ÞÉôwìÂ\9bVR1\84~\fæ@\8fÃâãó)^RÓÁd\1a]DÓ\88_îüÙa\¾Ã\9b'·GHÁ^âÍË9\9eþàÎO\1aã
+>>#X¾ÃÏ)|ìéùit\81\97`\1cy1æ\1fnã£\7f\8eþ\ 3gÂ$Íendstream
+endobj
+1037 0 obj
+1723
+endobj
+1038 0 obj<</Type/Page/Parent 794 0 R/Contents 1039 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R>>>>>>endobj
+1039 0 obj<</Length 1040 0 R/Filter/FlateDecode>>stream
+x\ 1mRËn£0\14Ýó\15g\99\ 1\82\0Í.éCê¢ÓvÊ캹5&¸clÆvZõï{\1d¢*ªFÈ\92¥{}\9eüË
+äü\15hJljÈ)ÛuÙ\8f\9b
+E\81nàIÝ6èzä"Ïstrµ5\93\v\11êMù\ fôn"mñ®\8dÁHo
+÷¿®ñàõD<¼Z\86\97ÎFï\8cQ\1eÏ«\87«Ëç\v\81Û\b\1dЫ =½\18\858\12C\92\1cÏ\11/º×,ǺØ\88\92\15¬\8eø¼f\141¿³
+;\92\7f\ fó\7fyvG\9e\13BY\8b*!t£\ 2\v\0Ù\1e¼\10\98VYÌä£\96z¦¨À^¼\9a\8d\96\14µ³pCZÁÓö\ e=Ez¡ \10Ü\99Úo\16µÝ\7f\13ý\ 5nãYJdÁº£K¨\v¼tÓÌ\96\8e[qd\19:\ 6\96²×!ú\ f\91@¯»\8c;@]nØLÕ6|/ùx\85a©¬=UVÔ\8dHur[gµ±\87Ý\96«q¯JF\8eL\1e&f;ÚLèëåÕzy¶*JÑ\8aR\80»\eôþà\978n-«9È\14\89'\15#\eNN~;\9aÒõOà\92\99cÐF\85\ 4[5\95hù'âðÛâäâ1û\ 4ÓAÁ¾endstream
+endobj
+1040 0 obj
+383
+endobj
+1041 0 obj<</Type/Page/Parent 794 0 R/Contents 1042 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 270 0 R>>endobj
+1042 0 obj<</Length 1043 0 R/Filter/FlateDecode>>stream
+x\ 1\9dW]oÓH\14}ϯ¸Ò¾\14)qã|4\ 1 ¡¦ÀÂ\ 3Ð%\91º\12ð0±'Élm\8f;c\13òï÷Ü\99±ãº°»Z!UØ\9e¹\1fç\9e{îÍà¦1þÅ´\98Ðô\8a\92|°Ú\fÞl\ 6ãh¹¤ó\1f³ÇÃ\98&ÓEtE³å\ 2ÿ\9fNñ_#iÇ7ð\11fÚ?8~ùö9MÆ´ÙÁúÕbI\9bÔ}Ç\9bäâæ ÊJ\1a\8a§\11½ÓGª4]'\15     K\82V"¹¯Kz­s¡\8ag\9b¿\ 6c\1aMf¸~q£\8bÊè,ÃEUàämmdv¢µÈ·\82Ú\8fiç*Ç\10ã.Ç0\9aÆÑ\84ÍÀi\1cÑ­\91F>ÔʪJÒg)RUìÙÛåÛ\19Åq¸2Yð\85\95ÜiäyÒ5%\bA\15µDÞî\ 6\aR\1d\94¥Äg4¤2\93ÂJÊŽ$\8b\0ñYTî®ÀC¢sتÄ6\93tTÕ\81\rîÔ¾6ðN\82ý;è\e,c\ 6ôóï\83xƱÏ\971\10Ïi2\9bGËð\94ÑÚÁ\8fÇ    >vAö¸Ü¾¾a\Si\13£¶2õ\11Krȶõr\8e\vwi\84K£w\9fî6\9f\1e\9frõåSÑ9R\9a/bDã)1\ 1-\1aFt±\9fO\1f×\1f%\98D®Ò{£ë"es?\ 1þ\8e¡\ 3¸"\94ô\dó\8aÞ\87O¹H\ eª\b8óaÆ\16\84\12\85=\82)\99Þë\ 2A=ÔÒV\96vFçtÔæÞV¢Rº°\8eJ.M\1aqX\ð;U¤úhéã&8\8eèî \vù\1dö\ 4ÕÖ\9bå«ì\87:ÇïÎ\96\87¨<\8a|~Áµ.d\82 øVÏ¥§{'AÄ\9f¢p÷\96\ e
+\11\1f\19g\92ý\17"\97îD)¬\85\8f´ýBÕ©ôUfVjcà1"Ú\1cä¿z4²Ì\94´\9e\98\ 2ÈU¤wH\12\8cÍ\1dXÀV×UëjHøBò\87ÈAz÷¶ÌD\82\9c\11©\7fæPmÏoiôNá<³\15ú*õ@¹£´«³\8c\rðÌøñë\88®ñÖµY7\98Ö@Ci\94\8b\8fS*Ð`hBg¸çÝêQ" !)­¯?8\1a³¼\EN`\0\12\ 2ç>­\8e\9aîÁ\ 2Ë\b\8d\93\1f¸\9bqC\97À\86\8f½ kh\8bÊ\859=½Ø\væë\ 5\1aíë3WH\r
+\ 3Í\9c\95æ\91\ 4v8aéëÅ\8aoD\OâÖfA\82N\82Sx\91\v˪\9aèòÄqó«N\96\e*\87ït\80>\80\92\90°b\ fкEE)Yi\1d¬þ;óÑRC;\86\98yæ®6\86\92R¤ÓK\16\ e\114êùË\14}»?êi\9e\ 3>Gádw¤\v¨~?I ¢úT;\8a\13)/\13A\14\98â'N¶'\v®ÙjÄ\ayO\ 4&\82§#ê\9c°\9a\87À9¸\ 2]!¾\v\95±ÎDôÚK7£ÐË·RhÑ¢\81Õ!Ü\0Î\f+µµL\9b\8e´4\0#¼îIÆ\92Îè\r  ü%Рç\ f\8d.Õw\1fkcÉ©]\b¾Oöµ*Ы\904\v\19¤   \94Ï\ f\f½Û©DÁÇ      ó«,1­0=Ü0ö ACÁS\8e!©¡.EÕêß\rÔ£¨ì\10ý\98du3PÑ_-ó\82®NÆ\18k\fù\9f·Ìd ZÉ\1f<þm\9dC\7f8àà\11P\80M,\b®aW×8ï^µ*߬\ràÕ°\87\88Õ¨@)\fn£-\9cÒ³é/ûLoEömd!\8d\9c{h\15\9bo#\1eÇ 1ÃèÜXY½`«\97oÇô\9c\97\82\18j1÷jÁÒÎ㫤\97Üf«ëÆ=¶&\9e"!\85Ð\94/é$[\8a<>á¸ha%\9c8OÂ\11»»òCiÍãGd¤\91\ 3\ f\ 2l\f\962\855CÐ\97\ 3RµßüÌ /\85¬\9cÍod\ fÌ5\91Y\rq81\96È\bÏ\1aë\86Û?ð\88\85\ 6\96¸¨\8cN\90ç&\970\11¡q\87®N³?J\ró\8dëèb²¡\96\1a\8e6\81·D#èfé@\9dS\9d ÄEÕ] âås\0úÏ\vD<\9f÷¶\ep
+Ë£Û\10\1ej\91©\1d\9f,
+Mç\0\13.Ø+_Í';Þ\eÄy\ 2F½]â©\84·@\85òºÊ7Êgä^9     f$?ÊjõþÓ\9a<G\98Ã=PÝÕßâÄW\82¯Ü½ÿ¸F\85\f\82a\/Q\93-ªf´H¡C\18Ç^C3\8d\19F!£ó,penBpmÔsX\17
+kP\e\98\9b³!\88íO\83ð¶Ý9^+è·xë5\10\v\ 1\v\84\91.Ø´\ 1¥çïq\a \8d#\8eC¿\b[<\v\15¶;\9e
\99[.Õaû(Nþ\1d6|È1Ö\e¬Lg}F×\ eiëW\91\9eÏ\ f*1Úê]Õ\94NñvÂ\9có+\8c\11wWeB\8b\86\0\a¬-oZ\r/xP>Y¤x¢q\10~s§ù¯Öáeû»\ 2¿\81þÏ\8f¡Î&À+Ï\7fù\ 14[Ì Fìïb9   Aþ1ø\e\9cÀhSendstream
+endobj
+1043 0 obj
+1563
+endobj
+1044 0 obj<</Type/Page/Parent 794 0 R/Contents 1045 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>>>endobj
+1045 0 obj<</Length 1046 0 R/Filter/FlateDecode>>stream
+x\ 1¥WÛnÛ8\14|ÏW\1c`\1f6\ 5\1aÛ)°(riP?4é"^\14\vä\85\96(\9b\8dDº"\15×ûõ;\87¤lUMÚ\ 5\16E\13;\92ÎeÎÌ\1cêëÉ\90\ 6ø7¤Ù\88ÆSJË\93«åÉûåÉ \99Ïéø£ZãË\80F#ü\98ÌgÍÇJRÎ\ fà\1a¢\1c~àîþí\ 5\r'´Ì\11|:Ç\87Ì_\1fÐ2=\1d\8e\93q2Lè\83ÙQf¤%A\9fMõd\9dpÊhÊ\95ÎH9\8bk¥P\9aR£]e\8aBVïÞ,¿\9côo'4\1c\86ȽÑ\f\91O/énI»V\b<å6²       ðpùñê\12\7f\10\8evB#° Â¤¢ ÚÊ\8a\9c¡\95$Qã\ 1íT*\9cÌh#,ÿÝWr\fÄÙ\aÔCù#Îz¬\8brS\91Ï\92ÐÂ\85\9eÜFYZíñEé52ÞIwµ¸\7f -JI_kYíýS\1c}]\99z\e.ø ¿\rS\8eÓI'¬­K\80åû\90\90É}\97%>+\8d+ÊÑZ¢½\95H\9f(¯Lé/s.ÅW¹ï\1f %\ 1°S¡ñÛî\80FaÖFw2W\121¬³      -\riãÈl¥&+ÓºRnO\eS üʸ\8dÏ×\9e\ 3\aç\ e­,dÊÀ>\9e.ïoîßúÑ£ ¾vsMéÆX©\1fßtò¾PlkJ\140@\88*¡ËÜñ(yÄ\1c³]\ 3"g!\13\8fûwKi%3\1eµ(,êá1ñL:¹¹ò- G¤ìñ\r\93\81ãþPÑ\19     ûÄ\ 3f\ 6\88í¶2Ï¢H8\96×Ð\80Îç\ 3°%J\ 6²i\14ÓÖÇùd\9a¼ \90QB\9fÁI\1e\1cçþ\ 4 ´DéÙk2à»å3p\10\81Ù\81ì(=Ý\b½\96Ä­6=\9d!&¾F¢C\0\99Ñ\92 ¾\98ÊÏúÀ\7fäæ\aº µa\8eB~\85æ\91×+Æ\v4fÄ|þÈ]b¡;ü\ f­\96Âò8S³ÝwÆ\12)\8fp(°3hÖ£HÁÿØÂYàdY»Z\14Åþ;\89{Úó}\r\1e\r\84\91h\8fp2\1fýr\84\93ÉüÇ\11N\12º\86²\1e\12Þcè
\84Ôo\82±]ÿÒØ>+\88
+\13µì\8b¨â\fò\v\8dkxå³dß\ 3\16`Õ¶`ëâÛÀAgR\ 3ro\ 4î`½î¥C~P)¯\19\bUn\vYB\ 22óÁ:\18\87z\97R\94L=\9e1\8f\v\91k\9d¡\14\aixKc\97n"\85\81\ 2Î&9À¯Y\8b1\82'\1a\97Âetò\81eÊn`\ e¬¡V³~\ 6ðÛQPÇ)c¹`\87ó\ 3^\81ë9o       PBÐ\15ıc°|ñï\88þ\96lW\18°_!\95\14\16\rp\82ïJ\ e\ f¢Fñ,T!Vª\80¡5y\e\9f_\ 4\9beýñ\9dq\9e\91¹ 4;¡\ 1\18\ 1·\86Ñì©\90\95\988D\bóyV©\f\ e\8b\89\ 5O¥]\14m\a\94ÈaÎ\98\99\9dnóq<\1e\82k?·\94ÑÅ,\99v\97îy³r\ 1c¬«é\ 6ø½æ*\ fl)X\96\98¥^GR¡\9dh\19o¹n\1c\1c\ eSbÌsU0\15Ô3\96iÿãåõ\87ÅÝûäaqCÊ\eoÎë\88\e\fv\1am\ e8z¡0N\10?\1aÏ\15ØF \\ 5¦\9eñzS¶\ 3\13¼Ü/l\f\97\ 3æ,s\8c¢¬ñ`ðBÔ\19ì/#±\86Ã0+|l\94xt?~\18éÛ\ eØXD'#\90:#\eÖA»µc,Ø\96b67\v\98\89\13÷\a\1eN\88\ 3öoÓx\88éÍ\9295\14\7f\1cMgñzsÈá˽ñ\85\9fæ)\83û\97\82¿gÂ\89\95°í>ì^§\9bÊhõÏÏ*ð\b\94\12+\1f¨ae6»»Ój_º´ï\r\12Ø\ 1Uÿ=\1cV¼µ\ 4\164ÞóË\84Q\11\9dD¥ÐÁ¢\e\91AmØ\97¥Èä\19Aº<¤¨Â\86¾¬Ç»Å\ 3îñ\e#r\87\8bå\9bÙ\15p\92\13\9d\80\1cÃý \ 4Ë3\bµõ\18\95\12éùî´P°Kxa]dÞQÁ*©M½ÞðB;äò×;É\82é\91X\81o\0L¤©´|T³\9d\19òA\97géí\8c»ÌáHu%_äËù\b¬À\11ô5¾LYû\9e\94\ e[î@\99xBþN©¶\Åi\1fÉüóévzõôöäòF¹\82b]¥Ò§=\14#Ñ>°Õò\e$\8dàVÕ\8b­5®ûZk\8dT.õ\1eÁ\9c\92Ý0QþkÕÌ\8bh\ 3-N\82C\81\85\9d¦\ e\9cD* fÓJm1=N\18\8dÅ\93\13½¶\83á}\ 2K\9eß'xã:\83µ\85\83jØQ\8cÃ\ 1ëN¶£\80ý6\7f\11¢\ 6\82\17 ê\8dæ8«ô\1a~Ü*ÍùýÙÍ«á\bQn°Îù\ 5\85«i\1däüÚÄøÚÍà.ÈÃÁÿ¹Úþí\80.øýk\b×?÷Ç\9eS\ e\10\9cá\8f`ãáÆy4¹át\9a\fñ\1eèiéÏ\82ô©2_@\ 3\9c\85R¼ÖàäÆ\8cà§zÃé\f7÷f#¼,fÿóeq2\9b@)>Ð|ÌÑq,ÿóä_QЪ
+endstream
+endobj
+1046 0 obj
+1588
+endobj
+1047 0 obj<</Type/Page/Parent 794 0 R/Contents 1048 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+1048 0 obj<</Length 1049 0 R/Filter/FlateDecode>>stream
+x\ 1\95TMoã6\14¼ûW< \87¤\8bµ"9\8eì=\14E²»Asè6Û\18è¡è\81\96\9e,n%R!©¸ú÷\9dGK\8eã¶\87Â\80`QïkæÍðy\96Q\8a_F«\ 5]çT´³»Íìóf\96&ë5½>Ü\ e/)å«\9bdAËõ
+ÿ\17\8bdM\8e©\92\f|D\99ã\ 3áW÷)} M\85Ò9JmÊø9¥MqYÚViC­ò\81\1dý@Æ~¿ù6Ki\9e¡!"§\80Æî¬ñ\b\18ØKÄÕý\92²LjÎ3\9a/r\8c\82`T
+5Óï»ÆnUóÇÜs\11´5d«xîÛmRXSMïw\9f>&´©µGÿ?ÙÇ\18\9c\91\08;\1d\87\92\8aFµLO·?ßÝ~\97\15Ó\84×\87¦{\1dê\98úÛÃ\97'òì^Ø\8deQÙXê\9cÝ6Ü\92:txS\8b\10¢è\v\87»\87_\9ehçlß\1d\9a\85Z\ 5ùز2\81Â\91\96±é\96\8f\ 3rIÛ\81Z\vþ\91\ 4°\86\81§¨µa\19\83©S\ eã\v¿\17ÿ¤û\82\8a\13ðÆJ»cõ3°#\a[Ú׺¨\ 5\92¢Þèç\9e\8f ">Lî8rQJ\83ÈÏ£Ó­r\ 3}:ìü£5ÁÙ¦\ 1[Ò$
+\r²JÓ$\9fd\ 5iMªººÿ@ÙR\16\9eÒM\9eGq¼Ê(»Nn\92\9fì\9eJK\ f\1a]¨ \9c0añ\9dò~\8fYtÃ?¾\15\10ĶX\89z~\1dsÞ*æ$QöáÙx\1dô\v¸}\bTËN-a\e¥Ð¾¯Ù0ÖO\ 5\16±\13Rmì\ fÖH\ 1I«J\8e`Eàã&?#~ \1e\]x¬
+SZW\8e\ 5¤a,<
+û-\ eR¦<\99à\b¹\9cÚF}?\9dKg\8aÓf÷/äP\1cÇV\81\8dt7\fmxlm\1a\e\16ÊËÛ\83\98Ï&\82»\ 2ü\f \8dØ:ð_á\15\13?÷úE5l\82\7fO:PÛû\0\7f\ 4¡\ f´\ 6\b\89\86.@ÒVhÄîÎô·×nTõ\96\91½W\83\80õ\8cäîdÍG\8c0\7fål\e\81>ÂÚãBÄå@\877\10\1f?öA7:Àö~0Å\ 4vÚQ<¤\ 2æ\92pïGá\a§\8cï¬\vI<ÓÁsSÅ°\88\84\16ª(¸\vôN®\95w\87\ 6\14S+@\94ÛÃö\ 1\82\ 5;nÜÉ\19h\11G\9c\18~\9bDrj\9båuþ\1f¶Y\8f÷d\96¯\12¹Úqí\9eÜ¿ÑÏôèì7\\95pfÑ·Ø\84\92[S\86\98\1f²æ\87´Ëÿo³åj      «JÏËõR*Âæ_g\7f\ 3\18Lÿ\18endstream
+endobj
+1049 0 obj
+813
+endobj
+1050 0 obj<</Type/Page/Parent 794 0 R/Contents 1051 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 283 0 R>>endobj
+1051 0 obj<</Length 1052 0 R/Filter/FlateDecode>>stream
+x\ 1\9dX]sâ8\16}ϯ¸5/CªÀ`\ 3   Ùª}Èv:½©ê\99Îv\98éyàEØ\ 2´±-\8fd\87æßï¹\92\85\rIv>ª+é\18Kº_ç\9e{Äï\171Mð/¦ë\84¦W\94\16\17ÿZ^\8cïo(\99Ðr\837W×\vZf4\89&\13|\92\ e>ìDUKCñ,¢§Z\eUnéI\14kñ£¥_¬4ã\9fDºS¥¼\þ÷bB£d\86Ý\83Û4ÕMY\93*7Ú\14¢VºÄß$Jú|wûHwÊÈ\14g\1dx\13\e\8f±\8b\8d\8f¦q\94ð\ 1°\16GôØ\98J[wôø~FqÜ®J®yÍr§,e:m
+       S\99´©Qkii§÷Tkj¬<\1aÌ\82A\82?dûað:CâµÃm@ñÔ{T\e\91)\ eDäùÁ\1d!3\8e©ÞI²Åº\12Öî³Õ`¾º¤\8dÊeDô\80ø-ás8\98a\9d¨Ýb#EÆ\16sþã@;\81\16V¥Ô\94xckQfÈò\99}½ñ¹Ku\99ʪƦ2k7ïµyæ²tQ"¤\97\9e\rUâÐ<\97\19¼ºG\ 2
+mäImP\1e\99IaPÙ\1a\95j\fÒÊöBá\94´Cªr)\90c#70\85\84s&6:Ïõ\9e\9d±Øi#>ñãò\82Ñä E1ÿõõÓE<\99DS\9a'\8bhA\ 5%ÈòMû\94Ó\13c\12à\9c'7xÛ\aã\97J\96\ eA#r¾\9e\1ek¶4ØÕuõ\8fñx¿ßG\1a\8bóLT\916Ûñérç\ f\96\8fïÓ\16U£k\98\ 2à³Á*¹ºv§Ãïx>\8bàG<Çï\82¦ø\1f^º§ÖË\ e\96ìo|\85u}\7fÕc.JY\1fóv '_\99?ò_Unc\84Í6\15\95\8cR]\8c\8fõý{Á̦Ñ\8cf\8b\e๠Å4\9a´\ f¯BÁ\8b\9b\89C}G\ 3?ëZz\f·%í\1dPP<EFO\8f;+9\92íí¿:ùË\8f_¥â\9ezlÖ¹²à\12\ fýcmC±\ 6ÜN\ 1ë@¬ m£2x¥}gpk?\1dl-\vºÍ
+U*\8b\9eE«cÓN¥»¶Y8±¥Ì8\8a\91óh\14:ÜH\ fèL T´\9b\14\86;½)
+i\86àÇIâàÌ$w\85L2\ 3í5\89\82§Eô\83Õ\8dIÑ1Þl!\ eT\19ýâ\1c]KÚɼÚ49 ã\88\r(\9b3¬f        \13\rRy3\8fæíS×
+³dvV\90%ºí\14\a®µ¸\a\1c=\8f\1eï>\8c¸WFÿþòmùåti\97ÒB¨²Æ\ f\18j} \87m)R¥é\83n*)\9aÈYøÃ&¹\9e1°b\86\0·ò\1c\8dí\9f^!\vM2c\16ïÍ\17\8eãç%\15j\8b\9c`\1ag~Û\18\17áÃÝÇÛÏ¿½\17\93£Z¤\97h\8b\1a2÷j*D)¶Ò\91½§²­A\8cLà¶\ 16\84Ã\ 3J\eÀàsè§\95æ$!'em@o ;pðFm\eïð\9bI
+ÇôÉ\84ó3]\»Fáß   ~àä&Là0\ 4§s?rºæÃ4L"z`ûY\93r\96Ø]æ' ø\8a¦ÉÜC\a=¹h\9f\1e\ 1[\1e®Ý¹ËþL\e\ 2¯²<ÆÆ\1c\1e¬ôÎE\81§   Êím²\95þ3ÞÎâÓ·½g¼½\9a\0ÜÝ^ð¼\83¢û\15ð\e\82:÷ö\aY¦æPÕäf­6\99¥\7fÒAÚ\1fÞÃ\ 1\8a\16\94
+/\19ßC÷8 1ÀÀ\ 6£\96\eÿqP\16\ 3\87'\8a\80W\8c¼GGlôU\8dG\8fu{JQÈ!}þi\f<\a\1f\99uvnZ²@\80Ó\94îD  $Öªà\8f\ 6ñ±ÉÅ\16òE¼\ 41\15\96(\f«\96Nr¼\ e¨§@Þ
+\v£\1f­\ 6¼qcX      y r(\ 6\17\ 1\ 6Ø\82¯Ü\fgÉR\81¯ ê¼Xâ9N{Uï\b{\9cbëµI.\fb)\9bb\rá¤ÉjÊÒjàô_çn½Ó\8dE¬vuéH\14Dб(ë\ 6\ 5ÝÃüî{7Ï)×ú¹©,\15\r^\806+iXKâH+\7fo ø\14\v1DõI½ ;A^µ\ 1º\10¾+HO      \ e¯÷\9aSÒ÷»=\1d§BBºþÎõ\16ì³\1aè\92e\f\ 4\1a\95¬]sس\96\89     \80)!\86\1cG9Î`\86\87é\ 2Ƹ[°AÂ\92y>³\95\19xH8±\82x\86\94^]\ eá.båT\87¸\ 4T\1d­u]ç\12F\9e\9d\a\fB\8aè\e\vHl)¥Ì8±Lcà¯L~o§Y/¼c\ 5\ 3\1a\95q\82\15ãM@nB\9c½ÅîÓ\e'a:\15Ô)\1cVH£yâ$\19Ä7£\b)Éx¸­s\f]ØðÕ;\1f¾\9aÅ9\14¸#b#«\¥<bE§\9b]ã9\9afe\8aS\1cÁ\8dz\11qU\3êӶ{Ær.7\10Õ^ëËïÈ-Ô9\9eun[Z·m\8cóÐùÆ\1eÊt5\88W\97çMÂ\9dè?;.¶v÷îÒ½aE\94\ 2\9dº\18\9eU\\95#Æ;2ägÙ\9b\99\ e"â8"Î2\1d*q\v¿6Ê];\187È[áîVh¶>\11\81\1at<\ 1|\1co&\84\8e1\a$\fì\ 2\fi2\1aã\158?s½'gD]ãBÕpû\a\18      \®
+Ù]4p   \b´&¿Wª\9dàLmC\ 6<X\86eÚW\99c´£\a\1e2îÛ\8dò\80íUw5øúp\ajx\v\91ÿ'O#\\1f\92\ e\93·ÜO\90_M^3\15!W(A\86ëIª0:Ü\9dEø»\ f\10Ë´RHQ:Ö
+7B\7f\17ìâv=\ 3]\844f´ÇM-CH9.\16Y\90\82\81¢¹\1fn\1f\1f\a£\90Tp'\85\ etÄêOö·L×ù\10ô\85.ANîþÔ6\a,p\85­(²5ª\v@o\ 4xa5¨\8c|Q\80T~NÀ\8eHسÔ]ðÜv®       öÃ\1d?_\1c( ±Éjâ\19u¼·~øõ\89j#%³2äEÛ`   ÄÆt\bÀ\bèq¾É5U¥MíIñ\f.ÞÓµH\9f%`º\1aÈh\e\8a\98\84\96\e\8dxz\8cø*\86å¾Åº\91\v\98ø\8fÎ××ÙúõrÜ®\rè\1fd\82\88uQá¦í&ip2\94%\80æ\9b\97\90Cyâ/.\980T\99æ\rß\1d\90í·Í¿ã®hjÍÊ\81\93`衱\1a¸9n­N\15¨\8d\89\ e\1c\ 4g÷HûyÊx\8e»¹ïGÜ\89Ü\04º¯I\8e÷=þ2¡Dà"Wõ¡\e\1e<\8fqK±\18p Àãw\a¼zC\aÝ\84+Æø~ÑÖ\ 2-7\9d{\ 2ÿ³ßëÐ_ù.g\86«@{\8d^Ì9nhÔÿ\ü\ fÖï\83äendstream
+endobj
+1052 0 obj
+2085
+endobj
+1053 0 obj<</Type/Page/Parent 794 0 R/Contents 1054 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 292 0 R>>endobj
+1054 0 obj<</Length 1055 0 R/Filter/FlateDecode>>stream
+x\ 1\95XasÚH\12ýî_Ñ\95J\95I\95\11H`ÀûéX\13g}g{}\ 6×ÞUùË \r0±¤ÑjF&üû{=#\84 Nv/\ e\18¡Ñôë×ݯ{üçYH}ü\844\8eh0¢8;ûuqöyqÖ\ f&\13\95k\ô)\1aö\83!\r'c|\1e\8f\82   \95\92\ 4nb\9bæ\rË{7C
+CZ¬°ûh2¦Eâî÷i\11wb\9d­tiÅ2\95´UvC\95\9aDN&[\16Â\98mB+\95Ê\v2*+Ò\1dÌ\14©\88%}hî\7fð\ f\9bM\1f)Q¥\8c­.w\1fHå$Ò\94ìF~Z|=ëS7\1c\ 4\11\8cw\12\1dW\99Ì­°JçA}3\1aÁ\1dÜ\l$<\11ü¢\95ÜR¡Un\rYMÆ\96Ò\18\12K]YÚn\84å­\89\1fïÝDµ\83\9dn\97½è¦\89(\8cÈüͽ÷\1dJ´4\94kKE©ßT"\ 3"Ø#\87ÜTE\ 1&N°\96r%ËR&\f\0\ e±E»Q\ 6;µ|8ì«ò8­\12ù\vï\82\18v÷^M)\93"7¤W Ð\96J¾1Ë\95\91%\898ÖUn±;\ 2\919NhUê\8c8\b\7f¨<Ñ[CQ\1fA\9dÆV½I\9aí)&<þ&Ë æ ®9è\8e\91\r\bnÒy\89Fãúæ\9e\ 3¾×\ 4â\b\15\87\95Aõ¤\8d{>òÿ×ÎÝh\82ð6\1e3¯FÆ:OHY\99Q\fo\96\b*¼E\1e\ 1§Ë]\9dn.\0\ fó9\NèqzO\99NªT\1aÄçîËã\1dÁK\83\qü!\ 4Æe\94+\8d\87\9cðO_΢0
+\ 6ty9DYd4èO\82«ú*¥¹+\ f\^\1e\95\96¥@HÌ\1e£^Z¡ràsax\9cÎîh®WvËIùÒq    Ò\94\97³\8b\1aël¬-~éõ¶ÛmP\88$\ràfïx©«I^úò  ~ý¦·\12n]¸\94J$,¦Î=0¶RëªD(NRÑ9N\85\88\1a`\19ÍRî\98`ÎJ\13ëBr~\1d¥§«.O\14]\ e\0¶V\8c\b\9fð¼\13\8cÞÍ\15\85¨=\96\87áÕØÕèA Âa0\b\8b\ 3\9c¸PÍ]â\19\ 6Ø\16\97nÄâÂ%\\97\94È\92%Å:\91\;QÀ¡Ù\b\ 3Ø2§\ 4î§À\9c¸ [i,>zõa\7f~/dîl1T\9fèna\9c*HÇ      5M\bë\82FéKo×lt\95\90y,q¨â­._½b=HkbQÈsÓª)ïZË\14Ígÿ
+\9ap\9d\18N*·'JçÕq\ f\86\8c¦\95ð±e!ãH¡Æ\9d\88\0 W\0$\95 ,ºD qcY­9ÙÁ\9cA(=fÖ)¬Þ\88Ò=¸Rß\ 2º]1\0\ 44\1a\r8\98ÑU0â<\9f\8c\9a«&Ï\87\83>n¶Å~§+\a\ 6ðX¨8Ç/¨H¥\80QX2\15\80\82\10r\1dq\81z\17ÂÆ\0Å_;׿O|p½\14ÝzÝ?ÜU K\97¼À9ì\8f¹MÕ8\87\93\ 1ôÇ_íq6;îë\ 3ÎÐ÷Ø\1dM?\80ð\15\8eM\1f\1aà~ÛN»\16\86á\15\ 3qÝóGµÀ8Úì¡\12\86¨\ 4Ð\91 \87æI¦N®ÍF\15L\10§íÓÍ5E\83þ\18}˨oS¯í\fû\9d:\993suYÔ\8d\ 3Dc\93\Æèt¢Ü¡ª\9d5îÀ\1c\96ãªP¹ß\183CÝÝ\ee\97ß\ 4TV\9a\1e\97\aÅïu\8c¥\83¤{é<hËmÍuTô¶¶Ñ¦\¡Èj¥P¢\98\ fÐþ\19¦üVÈR¹N\9eºÈ\1c:KÝL\91fÊ*äÑÎ%\1c:#º\81W\82È© \12\9e\1cº\9a)Ò˯\98\1fâ\14\93\a\ 1Ê\1a\r/'\1e \KíÝôé\8a\95*D£¹ô\ 3\89\97\ e\85\90«0¸Äk\88×8\1c]BvðC\ fÓûÏtÞ6vNóçG\ 4® ùâéùzñü4½Ûû\81y\8b¥\8cøßìóü\9aÎ}´j\9cçï­»\7f\9e/À&U*¡\8fTâýåÓ»ë¦ÿeÖ)α,Í\1eyÊÒ¨·\8f\94ÛÖE±Mî\84±siy\99^ë|\ 1²éã{[:\9cäV­V~\19½ªøU7WØíZä×\e\91¯±\aáò¾2¶¹F_¶7©X\9b\9fî\9f(\831a÷Àòú\91'Äß´û´Á¯YÉà    ¾\8dKUÀ\ fÌ\920SjÎ]\7fõ\13à\89ô\8f¡Éã)\9e\8bþ\80L\e?"\ 2\136R\19
+âK©«âv\86/\12\9d¡I\83aÏñ¡¼º\9c\e#?i6é\15¼\9bÓ~àâ¾sZ[u\1fùýv\86æÀú­·<\10``áÄ÷©°\90"c\1dØ»UO·èo¦\8a7\9c½©\\v\fÀ\9aÅ\15\9d.G\19\14ÕÒ\ f?¬åÄ\82lK\f\86\10\12_S5Nÿ\fxH\8e[\15Íæ{Åf³Ü\bú!F\9cp2AÂf\14\8d
+\7fµ\17X\²Øµ¥ÌTËLùùùP×-©\81\ fÂKÿO\84ÿo©.Æþý\füOä\eagf°9<¸Ã\ 5s\95a>fc\ 6\87\a\1e\17|l8\1f\e\ 5:YQRÉbÃØ8C\10\19æ\805Áë_§5ºú;û©·Cx®Üá\10£O¢\ 5Ë\ e\ fKñ±\ 69Dà\b\90\1aÓníóÃí\7f\1c\80÷Fw$ÎôXÑ`A\1cãl\1d\85\8e\85ç\90Ä\9d#!ä~m÷Ó©#\88e4Q8ÂTµ¸:dÍá\v(Úó%\bå\1c6<p"!!ãiâ\86·\16\92\97\8e\fÖ\ 1k×˧\9ar\8då©(|\ 62Kí\9ev\ 4\10'27M°¸£\ 3r\ 3t\15\ 4ßñ\1fU\83úVëïÎz·9A÷p\ 6jâÎ#\aÇö=j!\99\8ez\9e\97\\ 5\ 2(ì1°Æñ\v&
+&\ f\1d\14[cC^u\12ùv'píüGÞaú\81\19\fmK\95û#k\8b]$2\97(`còû?;8P>GO¬z\ fÞ9ò½)á\9e\82æå   O_×ä§Ú\1d\ 2\9fâlP\ah-m±ÍEö\82\ 5I\e`L\v¸\97.øXÊUÄ\19í\ fÇ'¶½l\81\952W\8d)Rk# ÛÌ¢\e·ù\14¶7¬r IS\88\10s¾ªr\1c@uÎ\ 3n¬q(\8emºÛ\87\99\93\91\8fh\98\82O¬¶K9\13¯Ì&ÎßÚ\18U\ fä¾â9ò\1e ZÑw\ab\ 4\80Ñ]`P¶5Ó,ÿ|N#¦ôÄæ\ f¶x¸\9dsjó9\0îæÒº³\0hs\1a\8cIÅ;\87\94Áß\1e*\0r\8cÀ\81\12}¸¬b\8b\ 1ÙM\91½\9bI­9áh\1c\84ø«ÊÄ\8dÚ\9dùôþ×)=\96\9a§\18\9aµÿHÀ\10»~yw\1c¹óù_\9d­\86ã!\84Û-\9d\8cøyèý¿Ïþ\a\990\88fendstream
+endobj
+1055 0 obj
+2114
+endobj
+1056 0 obj<</Type/Page/Parent 794 0 R/Contents 1057 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+1057 0 obj<</Length 1058 0 R/Filter/FlateDecode>>stream
+x\ 1\9dV]oâ8\14}çW\©\ f¥R      \84ï>¶3ÛU¥Ýîì\96yC\1a\99Ä\80g\93\9d\ 5þý\9e\9b8\10R\90f&\95¢\ 6\8fsνö{'¤\ 1þB\9a\ri4¥(í<-:¿-:\83`>§ÓËlð1 \87)^ãù\fïp:
+\86d$­a; Ñp\82O¿4\19\ 6ãã\12Ü\a\ 3ÿòn¦ó\a\18TÆCl.½ nÿù\81Â1-ÖÈh:\99\ 4SZÄåî\ 1-¢n8\ e&\ 1}ÒÙZm
+£²\r½\89t%h§Ü\96þøüøånñ½3 Þ\bÖqe\1d\ 6ôW.3^¤Èo\14\8cMûÏc
+Ã*Zo8ãM\vM*\8b\92"\96d\8b<×ÆÑZ\er[|s¬Ç(ÒEæH¯¾ËÈÁ\96Dv\8a\10+\83_µ9\90\95æ?iîi­\8cu\88\9c\1fØ\87Ï/dà\10¬ô\18Øh+S\ 1ËD\92Ód\13\91Ç·ö<[:z\ eªÄ\ 1ÿ1ñ) \847£µ»¡jyâ\97»Q^å]GéK\17õ5\10Ib\91÷«Ðý\8fXx\97¯rïî\8f\800\bçÑÏ*8÷Ò­
+\ 2@í-\_À\´6\ 4´¸\822\8c\9dP\99%·Ó$\9c3jU8iy?Ø®ÑÜmU´¥X¢¸\98\8a\g¤\91±¡\ 6¾6 2Èm¡âÛ\93'R\16ûÖ*\9313ÚJ8Ò\16+\1eÀVÎ`?¾@ìm¬l\9e\88ëHåõ8\17ðD Èg\93Kcuv%$\v\ 5u<¡:Òk\8en%¥\ 5\925Wq\v\9b\95\84\8a\9fgð¨·\aî\93\90zhóRn77Ô\12Ó\19± f\18\96ýÛ\85e\93\ 3Zv#$S+\12Ø\eù^ sbZ\1d\98\aQ$nyWW\80\11Äê®»\92NO+|ÙFý\86kï¡\91F&e\8c0ÜÑÍnþåP-a°\18\7f2Ýk\84ÿ\82«æ4ùXz\91E:M%F\97Û\ 2ò\ 4\81I­é \vÚ       þ\15\93Ç\ f<VÉ?Ï\9f\86£Á\f\½¾¼-ï<\81- @l\9b\96\8b\9cdÊ6´ÜPF\80\87}\9e\ 6q\8f\156­Æã\væ+\8b£J\9c\89s[áÊ\94S\8c\ 3\1e     duÊ¢\8fU$-¡åËïª+(Õè\89ÂÊu\91$§f·÷(þ_ÞÄíPWä'òZ'\89ÞñÉ"÷"Í\13y_\ 2\93C7\18)\98êÂ@f\96R\81\ 3\82Ã}<\13¢DX\v\93e\97gC®­U«äÀÿ¨½?=ZA½\9dÚÿn4\82\bK;\99$Ë»ë­G/¾b°VCQ;õ\ 2\ 47Ͷ:\1e\828m[\96@Oîý\81V&\8f\ e\93ïÞ¨Ñ<µ<òÕ·\8dt¨<ße"]v/´*;Ä\88=µ*åFÚû£×ºKx2xÑåqív%ò\9dQñUÇXk8>úldÚÔ:\ fG¯s\81 h1^\99Þ&\1d<Ä[\98 ±Ò¢b\ 4]c\14(­$s:\8bkª>l® \ 5\ 2¯EºÂ\11ÄÏ1ÑSñ\95ÙæÇÌ¢¬Qõuo©ä\88_=FUÐò67 ÜÚ.ß¹æþ¶\10Ng\ 1ß\ 3ùútºu½=þùôH_\8c.o<\9fuTð\189^¢zÕ®^µíÇîhãÙ\18S½¼¥Íg\8c\1e2ü»ó?i\ 5 \1dendstream
+endobj
+1058 0 obj
+1030
+endobj
+1059 0 obj<</Type/Page/Parent 794 0 R/Contents 1060 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 307 0 R>>endobj
+1060 0 obj<</Length 1061 0 R/Filter/FlateDecode>>stream
+x\ 1¥WM\93ÚF\10½ó+ºv+A[µ\bÄ\87\ 4\87=à¬×v\95í8^n!\87A\1a@ö !3Òbþ}Þ´>\80µÊq²v\15ËÐ3ݯ»_wÏüÝ    h\80ÿ\ 1EC\1a\85\14ï:¯\16\9d×\8bÎÀ\9fNéôa6X`ÛhêOi<\8dð}4\89ü\90\8c¤µ;\ 2)ô4\1fØß\7f\98Q0¦Å\1aêÃ)¾$,\1fÐ"ö\82±?ñ\87>ý¦³uº)L\9amèQìVâfñ¥Ó\7f\18S\10\94\a\b\a½Å\16f´Rúàvî\85\11;\99KcIÀ¾x\12©\12+%)ÍÈîV~\f­¤3u¤C\9ao©Ô9¬tz½\9eûµ§\12±·bwiУ\83°P\13«"\91 \1fw\e\ 6Ô\vFþÐ!\89õn\9fª\ 6¯ïÄ\1c®ÚýÀÅàó\9bÎ(D\8c ôÇ´#\84\16\8a\1e;gË\1d\853\7ft&»\88%+C,\91\990\88 ê<\88Î\ 3²V1Â&ò\9c\ 3\ e\7f\yÜ\8b\903\84\96Ã0âp\0q\89oàܪññâ\84¯\92MÇHsØÈZñ\9d\90\ eÆ\1c«SºK¤Ò<Ió\ 2°\93\99£`\ 5¶\4`k\19\98\93ìl¹£ÙôBöï\8eLf`á\19\r\91ì@³${\89#Q\88\8cÔ\8eðâäH%\9b\8e\90íI#û  °\91Kówpm±^§ß^\ 26\1c!ÿ5X^\9cÀV²hæ\a4id?\ 16t¤ú\ eì:U¨ê\97\80\9d\fNõ6áÅ     l%\8b&.²\8dì'ÀN\82¶ÊÛk\93ÿ?¨\ 1J9¤ÉpÌt\ e¢ÀE\8fW\ e,\0\9dÊi\0Áä"Ph\85\16=\ f}/\9166é
+}
+\84ÌÑ!/ÑԽë[âÒ\9b,o.÷ÔÍ£\9dÈÐW7Ð\9c%d5Z\9fR\94é\9cV\12=~/E\ e;[i¤OôV\1f$Jù\96\ 4¡\83î\95d¥§\1eY\e$äÓõmC\ 5 s/\86\95÷÷óO\94¤Fƹ6G\8a\12\12{\980$¬SÕ\7f\18ÐÌõÿ\80zC\97-´®ëkê\17Öô\95\8e\85êÃìJôUºê׶j\b\18Ynû\9f\e¥WBýõìgrÿ¬\8c1qò#Ý9\%Ý\0¾:É[d\16\9bã>GD¬=h\93Xì=J\ 6\87Y0\f\98¼\1eoÍd¾Jµ¥\f#       »\16óÇ·\8b×o~o3\fM_7F\17{ìû8ÿüñݼÚu¡ð\9a¸Ï\18©8æ§a×¾9\91ë4\93\9cÿû\8f\94ë2Ö[\99Ñ*Í\127¨ð\9bcÇ)äp\1a髽¹pü\9aܨ­ÝæÜåÛÔ\12TãÓñÁ"k%åêÐ\83\11\9f\ 5,\18\82x\16ÌkÚ\15\96\89d%þ\1c\81ÐÁêâ<\eJ¨wh\864çÝC\8a\8cÌ÷\açrÃ\ 6¯ë\aûΡ¶\b_3ôýÖ\b\10®ª\8aR\97õódÅ\84\ 4Üwk\8eÈÕEC¿¢'¡\8a&ÉÏÂ\12oE¶\91ö\16\a\11\88&@e\99H\ 4\ 4иTà#_
\9dá\9cR\17¶@\80«8»ã+\ f}\10\19
+ÏÜêân/5Êé6\89ï\98áî\8b6\9b«öÌ\93ÝË8]\1fÙ\17®ª2±]K[ms&äÒ\ 3?D¡rë\0ºâq¢ª\r´!,U\0\9fØ\8a\95Ï(|@hGp\7fâÞãã{Òû<Õ\19\1d\1cùp\aËPámükOÜÒëêõº{\v^äÂä\94+\8b\ 5zGWg]jüXÞü\b¼U@Þ\9co\a}V0®\85»¸¸öT±¥\8a£µÎ\93Æ*G/ÄÝÆùÖ\8e¿$\13®c@ ³«\1f d«w4\9aÎÚ\ 1\9e§uå\88ü¬®-:e¼åÈ\9e\97u\e,&]y\ 5p\94û¯\fÛÈL\1a¡p\91æ\ 6R2©lO%\bWP\98Ø®7è¯m\0ªfVm\ 3\84¥÷ëÒ+Òäî\97\ 2©ôôê\vX\12+ôÙ\92òó\18\ 3!\ 3C\977Lûòn\8d\87Ç\0wÊòá1Äج\9f\1dç\8f\8c\99»k\9fß)ðÊ\b}ª4â­\80ÉöƵ_ë¦\1dJn'3nXçã¶zpÌ-Ï\ 6\1c\94/\8dò\18j}k
+\ e      ×Ge\80Î|¹¥£.Èny¶ítâªÔý"¿¥ÖÕD\1dªêQÁwJH\8cà\ 2ʵV̸D
+UÎÍ\vC"Ï1÷\8b\Zî4ý\87iuÓ\ fÂ\bW\89\10\171\1e\82\8fó\ f¯æôÉh\17cº×qá<f\e\ e@¯ÜÞ\8b\86ü8øá\9bl\1c\8d¡\93÷M§î0òòGç\1f      gÚ      endstream
+endobj
+1061 0 obj
+1427
+endobj
+1062 0 obj<</Type/Page/Parent 794 0 R/Contents 1063 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 310 0 R>>endobj
+1063 0 obj<</Length 1064 0 R/Filter/FlateDecode>>stream
+x\ 1­W[oÛ6\14~ϯ8È\1eæ\ e\12;\8eí\14È\83×-[\87ÄÍf\ 3Ã\80¼Ð\12\93D\8d¤ìúßï;¤$+Z»õa-\10[\16E\9eËw9úëbL×ø?¦ù\84nf\14ç\17ßo.~Ü\\G\8b\ 5\9dÿ\98\1d.°ìî.\9aÐt1Ç÷é4\9a\92\91\94ò\13¸\89mÚ?X~õ0¥ñ\986)v\9f-æ´IüýkÚÄ\83'\11ïU!-\898ÖUáð\ 5\eå¢\10;\99ÐQ¹=¹½$+ò­X\86%¤·\1feìâLX;¤\8f\95u\94©?%UV\9aó>\11ý¬\8fò Í\90\94ûÖ¾Ù|¼¸¦Ñø\ 6Ao\92AU\92ÓtÒ\15\7f\r\ es{m»\81¨\82\ 4%*M¥\91\85#g¤$\9dú\87\1e\7fX>S!riK\11Ë·þ7»×U\96p\14½³.uuÿ\93ÑUi\87I|_fB\15\1fµäïÚì.Û\0hç×\90(\12âG\9e¥.3¿ìË\8fø\94\ 5\1d\1aë"U»
+µD\92\86Vëµßøyùä+m\12Uì²\13½\f*[\89,;¡J\85¯ô\95tñU\96\882â-¨ÙG8¥\vJU&_ÞDõY\93\19Ú\8eb¾/hÍý\ 1\ 42)¬¤I4\89n\86~;\9fTÝÏ\9cËhOÖÉ\9c\94¥-\96&\84]KmÕ§:ý\886{ÜË%\97Áí\85\v[÷²Ë\85ï70Â\1da\80ø=|\95»ð\88èA\e*ôÑ\a\83b`ëBÓj3ò\88   ÁÕ\11\ 5Ìù\18_\ 6»LoEÖ;\95CÊt,²:Öº\12\9e"×t»¸\89\165!& EÃ\87«\87;\1a£N\8cþÛ[\80¾\83þñ4\9a\96qe\94\ eu\91ÎçwÉ3\9a0y\ 6\9b=\10éyâ\8e\9aT^jã\ 4J[jÅ\ 4\ 2¢\8dÌe¾\95\86\8e{Y\0Ã6®¬EÇ}©ls\1cJ×=\8dÐ\1e£À\80\80\84\89\9d6'ßý«\87YMi(Ũ\ 1Â\8aùö:è\ 1bá]\ fÒ\9f\9dåÏ`íQ\e\10\15®½\14\ e˶\95\93t\10Y\85(4öBE¨*d\11\9b\0\16Ï;\90Ô\ 2\8c\11\85\93â:\90Ñ\1cåçò\ e^&³y}³\89\92ïµäÿl\98 \81>\ 2\1cÅH$9*\10Ô\ 4µ¤\83\92ÇÏ\ 4ÿ/±\7fUh\8d&\8e&\vhR[C4\17\f*\9b\85Å\ f¾Ù1ÈeÈÉO\8eä_\95B\99Ð0Ü\ 2*cÔië\15\10¤ñ\90\80\14êB \9aL\ eÎÅk©®\1c%Ò¨\ 3°Ðë/¯ÓFíT\ 1|w\8e²hK±³\11y*åPJà#Õ&\ f\8a\0úò\93\89tBehZJ\8fOW«M?\81!`\0\1dåà°\9c\8f\ e¬©\9dbÌvñÛOì\1d4\1d³¬äp!|\84\8b\8cÖ\17\9dË\9cÆ×Sæ\9a_É7_Ù\8eß\8c]
+\væ^¡ÎvóãêÝo\7f<oÞ\7fXQ¼\17À\94\87ëÙ­ü7<;htÅ\vÛèç\ f¿o>\8cÞé,\ 3\a\18{uñ\1aào\ 2å\92\93/Fª\f<©¥\99²¶\92A\r/YXÉÚì\92\r
+[
+\ 3#A$(b*ª¬a0ZÌ,/@Ë\ 6þ5ò{\9d{\19ð\ fW\ f·5\11\ 6Í!t\ fu\r÷\1a°\r\0\r\8d\12Ô\aB8\8cã\84g ³W\f¨¾\13È´V\8c\96ûHÊ\80\96\0Ãï,,a'\84ø¡\94\ 5\17\19Ë`x\82M\98Å\172mÕ6\ 3,5£²A§ÿ\;aÜæq\1dX\ e\98Ë"\ 1çI\97Ò\ 4°Õ\16\ 5?\8c½ðó\91k\ 4óÞgÙ±w\89¹\ 1\ 5\8dá0CoÎ<T\0ÉÚ\9b\1eë!LÑO\18\88\ 3\97Â\87ÄÆÓví_«\9a¦ÿ(k\1f\12+íÉ\a\ 3c~øH©4ÚéXg\\89D\96\10T04a½MÅ\ 1zX{\19/>ÜP[\8f\14m%\90s3ÝôJÎ\875ÝÀX´5Â\9c\90¹Ê2>ý \12\88\89­Jßq°Ø\a§3h\ 2,\17\ 3\10d\19¦à\r\ 2½\8fu\9eW\85B\94lþ[é\8e\12]\8f3ÅÂÓ;\98e(ôÚöK±ALØSû\15µÕùä+¿/\8a\81\87\ 3Ï\a­\ 2\v\aÃ8\82\14§Fç´\17À\1fÒAp}\89äû½\98¸\18-vQ3?ZÔZ\99è\82wn \9e\82ÛúÈWËw\8fÜ\91Ð`̹~p\1dØL\94\89'l¸Ñ\12êm³ð\8e-~\f!¿\rSÑ7ßPð\14\8e"\10?8KR\ò\f\ 6\17\e\12\f\ fH(NÄÎyâ\90dv\1e 1t³\9f\85Å\$6I{\7f6ÑáÙ\84\9aÔëg\88ÿmO\94\14÷\97qq\1fæ³%;Û\10³eùåÙò\88\9d`{\9b}ÇÝé¨7^\ 2®£Ù\7fÌ<ãÛ\99Oã,Â\98z\16Qíå¥\8c\95\80q´öo\89\9dK<Ò>?\ 6½Z×\1dü\98a@/ä\86GÌ0"\9e[|>¬í^hsw\989W¹ßñÀèåêi¹:£p<\emO <\evóF!\90\17û\8c\81\96\82að@ Ü\ 2åµw¦$\9a¶Õï%{ù \14\8dU\ e\13\ eÎûÙY¢y\8déL:\rRý¤ÓøÒkx\9ck8xësèû45IÔoD_\11?u"îåò?Ä_\1e\93GaÝZú×\9bWñ³¨`Ü\95;\14Ö©\9c/j\91\81À©\ 2\ 6\9b_\a;c\ 6\86&6U\1aÐ\17ÛË\ 3ÕëÅ\1dcùbA»\0>òx\8e·S\9e\ 1Ü×öoQ+Íøf\11ÝÑlv\17Td½|ú~IÏFó+/ý ã\8aßP<~8ÈÑx6\8f :ó\89\9f|¿â}b:çÑɯ^Üñ\16\18Ä~½ø\eÁUô\84endstream
+endobj
+1064 0 obj
+1779
+endobj
+1065 0 obj<</Type/Page/Parent 794 0 R/Contents 1066 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 313 0 R>>endobj
+1066 0 obj<</Length 1067 0 R/Filter/FlateDecode>>stream
+x\ 1ÅX]oÛÆ\12}÷¯\18\18¸¨\ 2X\8cH}Ú@\1edK\8e\r4Mo¢"¹¸ìÃ\8a\I\e\93\\95KFñ¿¿gvIJ¢\144)nÓ\ 4\11\14\91»3sfæÌÙýã§\1eþú4\ e¨?¢(½¸]\Ì\17\17=o2¡ýG¾Æ\7fz\14\ 4ø\18LÆø\1cõ½\80rI+^\80gØ¥ùÀÛ/ﱩO\8b\15ï:\9a\8ci\11Û\17\88:"\8a\8aûD¬Í\8bŧ\8b\97÷\83êÍÎ\r\99"WÙ\9aô\8a\7f\8a6"\17Q!sC¦Ìs]f±\8ciùLæ\8fRÀô\12O\9fdaè¿¿\13\ÙæÒȬàõ0\80·\vZÕFzÔõÙáEÜ1e´!aè7
+;¥\91yøâ\8a>\84\9d\9dÎ\9fL!
+¥3þåcØÉ4m\851x\10\93ü²UyóPd1Ñ,ìÄÊ\88e"ãð\85G.\94¨
+¥;ö&T[\f\83Ѹz^\83Â\8f»ÁÈ\e°G\89^ël¡Ry\ 2ÇcVȵÌé³HJI\11@@\80É3\95\19<\8fÏÙ\ 4¾qçk\ 6k\87Øàjõ#->©èé\a\9bÜîâ;\91ÝmD¶þaÀÂæ\9bÒ\14?ÖèF§r\96«Ï§Q\9a­\8cÔJICÅFRÌïP"\vt\14\15\9av\e\85\97Tlí\vôÛ/w(ùbCõBÛmv\7f\95˨Ðù³Ç5zÐM\8böÆ)⧥<ØBev÷\95ÎSºüxsI°,Ѿ\1fI9Ç*\97Ðô{7\9d[\1e½\93+ëmË,¿xiûÆ\85u ¿s\91J\ e­²G&]z\91ÎVag\18¾@\90\19ÞY\83°tN©\86}\95±K¶©Ï¶oÝ\9e_ë¦þµ7²\84\12åj[ü
+ÜNú\97Ñ1ÍcÚæz+ó\ 2\ 4v\94\18\v9¢·á3%ýdÈÅæÖ^\91w÷f\86ÏùÇù\15é¼\85\85w;]ÐJ%Ò#kÏQh\84x\91\86¬L\12÷»µÂ\90ç2AÐ(\ 5`Ì8f²¨¬\81o±I\83¹}êPn\99t~ý\93 \ 3J\ eù,ê{t\85+ç*Ð
+Új)\ 2]l\0GÅ­\ e.a\ 1«ÆÐ\15     ä!\12     \89¥ÑIYØ\ e;(~\86\94\13\82÷êÖiÃWW)¿z\ 6¯?©Ñ\16ìÿ·\8aM\97\ f \8d³åzÔíßT±¼\82â\9a l\7fqY1Ú¶òZAT#þ¨>\1fWdíZ\86BN\8c,\88\87ì>\93\80ø\90¿®Üû\8dQ³Ñe\ 2\92.\15l²ÛJÔA\17Ô\1c\85\82\a?5ùcéÁÞ[¶
\aQ|\86H\b\r7G\186qòv'ÕÓ
+\95\9b¯ª¥v]TäÅQ\7f\7fYü)uÕÔô5ê\1a\ 6Ð\1f\10
+\9c£\ f{ásR\10\8d\ 2«\85Ùy!r\96>¿I\89ä*>1Êð«Jø4ªÎÒt\9d\9cª\91\e"S1ë>\fº\9c êÞ=ξ"Ⱦɥm®R\91?¿\86ÞÜ>ÎÎzwÎpe·v±Ú\85Ö¼\rÕ¿º\9ep{\1eIŶgµ$î\ 6\13¨ÖF).\0M*>é\a\88¸J5r?ú\f¡FIg¬\10Y\1fbÎfô^¤KÁ¼\ f)mµ1¾Ñ¯³;^\8f¦Ò©ÀÀ\f;y5h¹úÙA{\ 6¨U½ÏÒþÝkÖùÔ\1f\8eð\99\92ß\exãê\7f    ½?>\ 6Ø\ 5|hÀ\vÇÚߺÓ\85ýîÃÛ\ f\8b·lj\7fp°ß°¬cY$\96\85P\89A@èö\1d\8f+\1eçj]"H\17\15d<bq       £\99\våNgE®\93\84\95ý9þYá\99Þ1\12+]\82º\vÌË%¸ý\0<\ 3¥Ãð)H!®FÃ\10N«3\ 5J-\7f&åhÂö\83[\99é¬\eË\95(\93ÂÍ\14sÃÁáøÓ¤\ flÿÀdù\1d\ 5`\ f
+µn?\90\12\7fu\v;éyjþe'öDý\1d>\9cÖ1êöo\84\1et{\7f"\94ä\17\91n\13\89±nL\894,¦ï\1f\16ó×oi\83:ÊPaK\89~ij,æS¢k\15\9eEÅF\14\15hÃúÀêt\13#B¯\88§Å¿~Æ¿Ò\ 1S÷p\87\9et\ f\ 6\12
+Ee(1´\9eÂ\ 1Ö-¨\ f\87\9dZ\15´÷q"ï\ 3wµ°ó\952hÞ\98.\972zz¾t¢\11\9aÚé:×ÚW¶\82ÝNÁ©ßm\13ÕtVm\87q\0\ 6\b°\85Í9Ð\1a»0´¶=Â\b·­R\95x\93[\1c\9d\95A\88\95*·ÝÃF\ fÀ¸,UüÊns¥ËW[©9Iqôʶ\1d\7fÑùú\92ãhæ-¾0Á!Ë\ fz'1\9f¯\C2ËÕý\fjCOgºp\1eX\1c²\96eöØ\8d´jì\7f3N\aÇ\rçK\9dÊm""\16Ñ\8e v
 
-\86\93D\1a\ 3\ 6\19ÅQ\ 6\8f\9cÌo\1e)\15VÄÂÈå;ÊM\13_H\v\18÷èG?\12bÀ6ØA¡Ö¨cW1\88¢\83 ¥Ç\ 5\85Ú\ 5RUWöHäl¢\92\8c\1dmtþ\92\17r\8d\10\15\894m#æà\9c7_W!=¬ð\b\ 4ø\98Ú\85¿ª\8b\8es.øm\ eÝ\18É\94I\82\9e\8dXË·U²×Á{×pdÚæ\0bpÂ\1dÜ·)>Ò\16Â\87+$MjHC\14pZ¥j\eÒÜûu°N\9bµ^S@{oËàjùît\97ëën\17tM\e v\14\96
-\1a\15yaº\95\84Db\11\84ÈWÈ\93\9be*_d¡6¥\ 4ã\89J\1d©Ü¦ÐY\9aþÄ}OÕ\96û"\1f\0É\89\96\ 2\92rtµjÓ5ª°M\9dr\15ס\9au\eK(Wf\10\ 1\8b
-8\9cK\97\80Lm$ò\ 3\ 5ÇPë\vÐ\8b¸\90d\14\8c\ 1\8e\96\85\84.)Ö¢J24\1dW/Eq\1e¡³êJ\9dÖ
-\em¦U½ÎNà¶@÷ÚK\80 üm´²*QÅ\ 5ï®|éx   WrKË\0ÎÁJ\93\88C\8fnkî̬¯S ò3¬\99$yÅÊEçB|\b\8dy4<MÒ\Ë\ 4\1dcÇo}\8fGb÷\12p\a:¤nU]¤Ì\18\1a \86\16ûT)]¢\11îèm     \ f\a\85Âà\19Ào,\ 6\RÈ(Ûþ®z\1f\ eCx\18¾:r\1c\18\85\86\8aü\99\15\91\9bÆmÛ(\8e\ 3Oå/\8f7\ fOôtóøù\17ïn?9\9bâi\ f\ 6\1f<gs?}\9f@ÐÙ      ðþ&fH½;\98³ý(°zµÊ1ã-2k|ý4\92>O&ò\85\82U\9c\1d®eù*Ê\rR(bõ"\ f¤Ð>'~²¿\9d\aî\18î¾p\ eì\88¶#òGì\ 5jrÊáÞ\1eK¨TËM!\12$¿¹¡,în!Õ\ 5·I4\9a»CGwÇ8gi\97\19Ü»´´&´i|JhðÝúòÊEõºF\80»\rF\93ÚV°\eï\88Ǩ{\ 3 \15þÄ\9eÔ\952ÖDµ#\ 5½kªQ\vhѶ\1d\11ÏrwÚ¿û\ 5w&Fs4­ö÷C.,×PÍÎXY^8\87\ 6}ÊW\83m\81\ 1#Fªï+àK\90É\ 4ú.º%F9f²£²\eã\93Ú^4­
-è!\ríZ%ש×d{½àéQrã\93in=\1e\aø¬\91\ fî÷2G9\87¸]­\96Áå[\rýP\83\81O5\ f6¹¿ÜÀ\95\8f´CN\85¸@kÛ·[®ºÑá¾Í­n\19\80B\8cOLzGä[À÷õØÚ£\8f§[Û1t\8cºà\e\bÊ\84)û{]¨X\14ÿðåÞæèæ¸4ûÔ5LpÞY$M¡\6W\8c£\128¸n\82c\ 4\83û«ÃN\¦ÜUñÇþ\99\98Ì&álzå/x\97î\1eúyÑû£÷\1fC}÷`endstream
-endobj
-1128 0 obj<</Type/Page/Parent 1011 0 R/Contents 1129 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 570 0 R>>endobj
-1129 0 obj<</Filter/FlateDecode/Length 1714      >>stream
-x\ 1µW]oÛ6\14}ϯ¸ËKÝ!Qlù3\ 3\8a!\1fËP`I»ÅE1,{ %Úf#\89*IÅÑ¿ß¹¤äØrÖîehêD&y?Î=÷ðêëÑ\80úø7 iLà  %ùQ?êã\eþ\18ðÇ\1f¿\1eMGQL\93Ù$êSN\83Q\7fû\94ÑýÑî3VÇÃhÔìõ«ã8\9aÒ¤?\89f|ö|\16\9d7O~uç9§x2Ú_\1dLpv<\99Â\1fÎNΣqóäÏî<ãì`¼ÝË«»ÏX\8dÙo°Ä«È\8e\86Ã!>G³)>cü7\92\96~a\10\8f\11lg!î\ f\11Åp\84\8d0\a\b¦áÁûzyäµóýµí#Ö¦çÑðåÜåüèìfD\83\ 1Í\97(Ád6¥yê\91ïÓ<éÝÉgGÉZ\14+In-éíüK·6fEg7qc¡G\em\1eWFW%½Ûßì«é7·îz\94©B\92*¼é¿V\99^\88ìo²2qJãK\r<Dú\13\9b\19oc<\8d'(ï<íí¸¢ë\ f·a_k¼OÛ}ÂÂ\81²\84\1fΡ\10¹$½ô\7f§:\17ð¿\91$\80ý\17­
-U¬"\1føËù?uEye\1d\89ÌjZ\8b§\80E)\f,9i¾\8f\8a,\12S\97\8eJa-¢Ní÷¡±Ò1\ 2!)´\81/P¯\96þèKÉz\f\1f,"\8a¥6TëÊPe¥Aª\9aD\85|\v§\12ád\93Ó\80)\ 4ì°ÊXÜÍéãõU7á\eU\88,«OH¤)=ô`7שZÖ\ foI|?Ù6I\14Ò<!®ÿ\9d\a\a\ e\99\rH\8b\7f]^_\r\9aßqÀò\15\82Ì×Ò\ 6\ 60&¥Q¹05\89\85H\1e\86&\89.\9cÑYÆðÞ\8b|!h£²\8c\84s2Gu\81\10\89{)Ê·«à+\15íÚrp¼cG\8adÝp\15\11\ 6@Aä¦ä'\ 4>¢ä\94\8b\9a6¢ð! g\8ci\1a\16\8cÏ\14\88Û\1e8$\81-¹ÇHW8\8bÜw\18Ã-\98\89\\17«W è²æ"C/\14©'ÉÜQK\1f\9a\ fËæ\8b´!$\1a\8e             zQÊÍ\93³\ 4°k\1f(Úò:´ä.Ö\0\ 4H1Á;        ì\87{²ÅÂ7\ f·¼\17\18\1c_Húw\1d9äÏ\8fß 
-¬¢ë×:=¡ÍZ¡<\eè\8bbb¤U"SÆ:p\ 3\82\1eMÐCY¦7-_\9aLä3H\ 2\ 48oËr\94K\16Yes|%\'K4iª¥\8dhÎ)\ 5ç$\15\ e\eZ\18\94(\11ÖY¨\0£dÑ¢\9fßßÝS*\9cX\bÀÖ\16\9f\v°T õ+lvºãs\aY°b\ 5\91´®[ð­L\18i\9d0.¨OH>\15\12´A0ð·\82\941Ëj/QI¦ I^\9f\16r\85à*\vÍm\83\82øWF¹ú\87P\81s\1aàBâ\9bé\14÷\9e\ 1®þ¶eØúg¤Ä\0Ç}\f
-\81<\1d\8dä«`\1aMXönEQS)u\99É äÂ>¢fF®\84I9\f_\11\a½ä®ó©¼A\12\v\95!&\ 6\10¢\ fúª\92w v`}è¾Å©ÕÚ\96\ e1ß@b\ 1×0Ä*\ 1â\bÔ3_ \90\8dXÂkÇfS-]J\83ÎA\88p\9b«gD\8d\82\87vcy\96­×öv\9c\83\1e\88\11\84©@R´Ó\12@£§\17Òm¤\fwn¢LRå(^\91\808L=@ñµR8(èØ{9öÆ9Íø\91 ©\f9t\ f÷
-ö«p\91Ñi\9bêZCm\12Á^Èn\94\88\13Ù\1e\87@\83±\88.^3~@K\ e^\17h\93\94;kÙ¢Ý!+\1a\ 4\99»|n\14oÛ\ÁpD\97,9KQe\ e\92\11ðÜ\v/\88ºu,í¶*Km\ e\1aRºË÷\1fî=\16wóßn\9f\ 6\9eÙ;=Ã@£\94\19x\95ÔÔRÞr%Pô\963çÏ\8d      ÂL×rzíÇ\95î}íU¢©MîûÇ\93§µ\ 4\ 4üX¸Ë¥W\bAÖÉÒ\86`SÏw±\15«\98\98\9a\r6MAx2Úbé\83ÓA\8cy<`B¶6\1a
-\1fjÉ6á&̶  h(°|Ndé\87>\94ÜÓ\90\1d\1eß\87\ 1\ 2M+VÒ\1cÓÒè\9cG\96\11\82bà \91e&Xv\17u\87\14ÞÂ\ 5FI\8ck×`tâ4îÖO\b\12]\a\12_鼬p\ 1Ùcº½½Â\98\12£­^:
-\ e\19fì*¬Î$&\9f2« V\1eÔ³\9b×ui\18Ñçu\1dæL$\82Nãé\10ù\14<Ôz]£wM§ÿ\1c\ 4nw\1ai4êª2\ 6®ù\ em*°=\fª6ò\8aû xã\80\88\94þÖóÐ`4õ\1a\869\ 4z\v\85Ê4nZúT¨ç\97¡\10\88A¯97 ÔÁÌÏ#<Ï`ìh,ù\892Tv{\ 1   \b»¯\12:²  \91Ov\87U\8c_\ f\ f\880ÝOµ×8`Åñã\8bi\8d´yv¢
-)\87\18N8j\10\92\9f\87Ð\88n\9e\f\8b\97\9dÝ\¡m>H`ÈÔð ,U&m\8d¦È\9bÜ\ e\ 4\r\ 3lMVå*\13¨d\18\9auÆãv\eUSW\96`\1f÷þ\9b+^xz\87Åßßؾ\19õx¢àä\82é\8d®²Ô¿2 `¼Q­Ö\1cxÀrÖ¼\10\fðbÚ\9f\rñÞ6æëíþâöò\82>\1aý\ 5tÇe\bqG¡qmè\82Ï\9d¶ÛO§1^ïÒÞ\7f½KGxû\9eNf¸\86qh<d[¿Ì\8f~?ú\ae/Íåendstream
-endobj
-1130 0 obj<</Type/Page/Parent 1011 0 R/Contents 1131 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 577 0 R>>endobj
-1131 0 obj<</Filter/FlateDecode/Length 1331      >>stream
-x\ 1}VMoã6\10½ûWÌÑ\ 5\1cù3¶S \87d½)\ 2t³éÆ\8bôÐ\v-Q67\12©%);é¯ï\eR¶e\15)\82Ø\96HÎÇ\9b7oø³7¦\11þÆ´\98ÐtNiÙ\e%#¼á\8f1\7f|û½·¸IÆ4\9fÍ\93\19\954\9e\8cð\1d\9f
-zîµ\9f±:[$×­Õé|\9e\8ch:¹Iæ8;\9bLa)>ñYx¡é8Ú\9dðÁøÀK­G\9c\9b&\8bÖZ뱤å8¹i­µ\1e\11Íx\ 6¿g£Áßh\8ew³å\ 2¾'ø·\92òÞݺ7¼\9fa?­s 1_.h\9d\ 5\10F´Nû¢ö;©½J\85WFãÈÏZ:OÞ\90 \17¥3spô¸&'í^ZR\9a°\9d\9c(%\1dÄ;  ×ÚvsMÆ\9e\ eÝ,\9bC¿¬\7fôFt5\9e&\13\1fL]dIórÂ\0áåS!\85\93ð\9eà     |ÃIØqY/»¥>Ûß .ªD%íå¦PÙ°)G Jã³\8ci!3AîÝyY\86Ôjox%\15EÁI8µÕôýñá/ªU\86\94`~Ë?¼é\ 4ßBd\ 5\v\80£\ 62Í   kêÊ%´Þ)G©É$á[ì\85*ĦÀ\83¦Lîeaª\12xÓÆ
-\9dî¤#£9\ 4 \ e\KÃk\83\8eÓMíé \8a\826¼c/3NÁÊ\bÙÉ\8e3Fwa]æÈöB{±\95|*\vA_\15\1c\bÊ\93ÖVùw\8eÓï\9a\10:|à¨?:S\ 18\ 4\ 3\8a\ 4Vt¢n\19¦oO\9f(Ý    ­á\17\9bH=ò¾ S\88\16Ý\ 2\80\94op-¥Ð\8e\9eE¹A=\ 3']ǯ6\ap⸪\12\1eKåm\rf\ 3¸À       ·S\95û0\96\13å\1d»ÿ»¯\12\99\fèÝÔ\94"B\91e1\86\8eï&"X\rýc¥3µMe\ 3aàÕNìQ  ®Ëeã5`\82¨¹5%ØÚ=ü´ú\14¨«;>E\9a\9a\1a\84\8ae"lë²à!\ 4¬¸¿\a \92ß±\85áýu£       ý3\11~kµìY4ú\ 4ºØ÷\ 6õLÈ\12\8e\8aª°\83\f áW)+\ 4\9e\1aT9\rjb*       j\9cÛù¬\ 2íìõ¶qKܶ°U\18¼b\9bLÊÆ_!\9c?5\17J\90Yî>\ 6²åï\88\19w\15"ù¢Rk\9cÉ}\a²SqCER\81\1e\ 6Ã8P[#3´\9bÉ[\9d{v\80\0\1f¿X\85\bðQtû\ 3Ú\99\ 3c8\b\ 1\aövB\8aY²n\ 4ð\1aи\9aÃ;\14>\88D\a\1dt-p\96Π      Ô\86ùv&Td\18KÓ ¤\b\98\181S±ÿ\8eçsv\1c]\1dB`\1e\809w^?QÒu\19v\vÁÌ\95f5\85\1eg\9bê\84QQrã\87Ò^´w+b>Á9\ 4\97±É£\1c¸ÐÌ\\90ÿ\86Þ>\8f\82[Y±\7fæD[ h+=sI\ 6­&\95ñ¸Ë\8f\ 3¯=%\\9dî"ï\9a½Ï\ f«h¯PP\ e\93\ 3\8f¶AôÏÖ7\10x½åv\18\90ôiB·ÐmÏ\13¡í(¨9Ð\82TÅH\91:Ä]¾y©3¨e\83]^û\1a3<ªIÇwÉ\ 3\86\93j\86
-O!ȹErÐU\1el$ªªP\982<52\99\10t DÂO\ 3Ò\ 6}\86}ô]«·f\8c\1d§Ì\89W\81>\1dÏ1â°u+QV\16Ùhãbv\ 6\19ã\0Û\897*·\11ékÔ9ÞÀ,;0CES¡®¤·ê,³\ 1\95â\95é".«\fuGâUQc\85¯\a\ 5®'À1\12®\11G©÷Ê\1aÍC\16\9d,<ÊÍM\15\89ÝÉô4R\87÷óÓ\ 5êêxgyüºþü+\9fh+å\17¦P$+yÔ3þFù3\93Öað\1f l¹²àSUoÀ«Ý¹Þ/r\83ä¶â\1f¥?¼þü¡týöbl\91\85`O\17¤óÝ'\b\v\8fÀâ\ 3;­ûØÊ\84ÞC\1d\1e\1f\9e\87 t¨ï\aÆCã\ fï\97\r\1aã9®\9aË)ÍF\13\<q\8f{¾ýrwKOÖüÀ\ 4 U\93s\98·lñêxàj1Áí3ë\8fGÉ$iêÈU;Þ¯&#\ÏWal\a\16³d1_âþ\8aC×3¶õyÝû³÷/@¸»\9bendstream
-endobj
-1132 0 obj<</Type/Page/Parent 1011 0 R/Contents 1133 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1133 0 obj<</Filter/FlateDecode/Length 1616      >>stream
-x\ 1¥WMoÛF\10½ûW\frrP[±dÙrzK\82\ 60Ð8n­ =ä²"\97âÖä.Ã%Å(¿¾ïí\92\12M\a-ÚÂ6l\93»óñæÍ\9bÑ×\93¹\àk.«\85\^KR\9e\Ì.äj~5[Êòf\85¿\17ø©µdáÅâb1»\9e¾x»>yõþµ,.d\9dÁÖõêFÖ©ÀÎ\ 5\9e$§ïrU5º\96ù|&\9f¬É\8cNåW·uÖËF7\9dÖV>\e\9bºÎËÝúåúÏ\93\v9_,aâTÙT>ÝÝþ!­7vËS\e\1cä\11ú\9b¯¢¿óËålÁãp\0\17o6¾©UÒÄcK¸í\8f-V\b\1dÇnm£·µj\8c³â²è\80\9e>\98¤vÞeÍ(\1ciòÚµÛ\\94´}è\ 5C\97\1z\84\9e \ f\93ê\1aI)y\91»b/0n\8a\17}&óË\18\9cÁ\1d\r\18ÜV[íZ\8f\8beÕ6ÌKÛ\9d©\9d-µm¼d®\86¡ÂáycJ=\93ÏZªZ{¼\8c\19\19\9dJ7ÆcHôô\f×iÛY\a\82M®åA\95\e5\89È·¦Ñ<P!¨Z\95^\90\93\12ï
-\84\85\14\e\17®>Í\eg7\85.\11Vt\8eÒhÞ
-e2e\85wp;\80;ñxDø÷ûw\92¨¢ðgr_´Û­\82QyÓ"TÛ\98$^ÿàÒ¶Ð8Áâ0\89;U"\13]ïL\82ß\9di\92\9c\8cëF5\9b8M]©\0>â¬}8^UZ\ 1c\18u\95\ 6\ f4óîiÆ3H½Ï§TIn,j°Î\8d\97JḤÚ'µÙ i\864*\ 1X;ÔÚï}£Ë3Ñߪ\ 2¾Yc\1eÎZ\9b\10YU\98f/¦!ð;p\a)æÈ\0\ fà\ 5|Ê̶\ 5\9fbâý\9bÎÕ\8f^\f¨[ã~±\9fE2<í\82Ð4è\82ÅL@ò\1aø\ 5\7fñè@\10v×Р   Ác§\8bB\1e­ëPò\5ÿÐ\10¹ÚiIM\96\81òàWéR]DÖÖºç)ó%ÜÄxR\8c-º©B\1a`y\19«Ì:àðÈd£\93Ü:´\99\ 1Èl\87\ 3­z Á¾P\90\f]\1e\1a±T©&|\fË$mÑ Î\13ÇD\8eM¯C%\9aÎI,\121%é\11\8c§=Wï¥TÖê: L°®!\85\90\8d\8fV³¯JÐãÐ"\91\96ªýQ\12ÀɤÖô\85â\ 6>£`bÁÞ\90*pI\12ײÙakã\1a°\18ì\b\f|\8e\18ú,Hã\10î\80\17¯\84®\96ç}\8c\0zjIfÐX¼SÕ\80@P\15vÏQyi\ 6h\fÉ\ e\f\ eø\1eÓD\1dÐ2YíJA\ fd\9a¸»Nït\r\92¢ýÓ\94¥¡\e°A\aQ\8bý6$è5³Í\0mè(ú\a\96T\8eI\9d\92ÜaØÐR¨Q\7f­RÞ£\ 3R\9cÇÛZ\7fm\r\ 57`\a«]n \ 5\89²Rh\85\9b,®M ÜÖ|\8f,ëeëIÞ\13Ï\ 3þ\a%\19#ήÄ\10B:$dÈm\80\at:5lçPÍ\1fªf¸\1cü\1cp@Q(³µÖâK46ºf\88õg\ 6\88\99|dà¦éÕd ÅÝúÐh\98:\93ÖâõWï\93~\\9c¯f7\9cõ`ò\97ÅõJâÛA\14ÂË\83~\8d\85\18u\9dxóÿÝð}_GIre·ä\fáü?öÏ\177³ùë#F·©¦<r\b\ 2G_\81ª\ 6\82u r@[O\86y\8f¸t®-Ò^\vö\9c\94jã`á0R=D¿É]\eÆñHôÓ¶*\86Ñ\ 5N\8e5\ e´9tø¡òäxo)ÊEh!tR\1c\11Ò(\ fÅ'>¼\eÉHäG.UZbºpÝ\81\v°\8e\r,\89-H?\81\eAn4b\aÇ¢9êèa\86õÏ\ 6åàP÷Ay\7f ãhò­¢\9c\8cv\85\b\17\89<\82
-@0ú\1fvÃß\8e°Kl\18\1c\ 6w>¹ïGåSÚ\8efÙp0ºê\a:s\1f±«×]
-¼Ú\86EE6¡Î®\vàG\rÞ¸o\94\90¨P@!k\8bb\ 2|©Ë\rPDv
-;«Ä\15c&\1f-\16\93\86»\ 2¾S,`DzÓhgÀ(\ f\80ú¶\ 5ÄÇÚ@FM\0k/\1dF+Æ\ 5\89;ñ;ÚR\8eWÁun@Ì\80X\1fâ\89IP R\ e¹²åºD*q\8d\8a3\ eÿ\ 3ã»Û\87\9f\181ON\1c\92 ¸K¿çÎb\8a\8dwÕ©\ 2\92L\1a\19a[å\f\86Å`\9e¼ä¨@¶{²\8b»&'\1fc\19\8b!&   \bϧq/cB\91§Ì¤pî\11«\ 3öpÌ°I\94 \7fT?Îس`âk«1É\ 3â\eN\f0uÇ\89\81rûÇçPAß±/\ 5ù=t\1c´#~Xé7H\ 4\91
-F\e#\9bÉ[\9d(\ 4w l\8e\88ÃÊ\16÷ègI\ 1y.ú\1d\86ÖN\17òåtgT\88ýîá!l\v1ì°\8cO\12ÆÖÅÕ\98ee\ 4ï¤0\9bZÕû//ñ?pÇpÄ\80\fË\1f±ã\99#-F¹â(\9b\15#[£¶Ð\11ë+LXÛô½ysüô´¼\9añcÝ¿û4\17\bÞ\93\96 ÷MÊl\96«ålu}\13'ÒÕ\15\1fý²>ùíä/\15ªÌøendstream
-endobj
-1134 0 obj<</Type/Page/Parent 1011 0 R/Contents 1135 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1135 0 obj<</Filter/FlateDecode/Length 1671      >>stream
-x\ 1\85WÁrÛ6\10½û+vrRflY\92eY=*q3ÍÁ\8e\e+\93\1c|\ 1     \88DL\ 2\f@\8aU¾¾o\ 1\92\92iw:I\9c\84"°»oß{»úu6§\19~ÍéfAW+J˳ÙtF×Wsü\®oðs\81?NÑ.|pµ\9eM\17o}°X]O\97o}°^¿>ða{vùiIó9mw\b¾ZßÐV\12\ 2Ïf´M'ß¼r\9e¬¡:Wôíþó\ f*E\9ak£(\15á¡¡Æ+ºßò_\8e\84\91\949ÛTdD©<  Ï\a\ fÔÚ¦\90áÍwFÔz¯ÞÅËÂ[Ó÷Û\9fg3º\98_!½­\9c\ 4_\9fæ¶5´Ó\ 5\167\89:^'\0\ 2>R\92\92\ 3Ç\96\14:dÂÉ:R{e¨°\19\9eÕ|n\94:gé\1a3
-+bJ?.¾k#mK^y¯Q9j\10§\11út\17\1cÓ\ 5\81l²×¶ñ\84ã:E\95\ 1\8cû\12<#í)QÚd\8cCø_(èMÜjñ¬BÞ;ëÊQ\9e·_î6\9fï\9f\9e\86\83ý\83\0ü\94¶9\ 2á·Q)*\10îÀ\15è\9aDQØÖ\ fÙ\0\18©jåJnfÈÄ)©\9dJcâ\96Ä(n\arjMílQ Û\bÒ
-S£\18¤   \90*áj\9d6\85p\0ß>\83\ 5\8ct\9bë4§Ú5\9eßìn\19°pj§\9c\92c\7RjÎ\ 5y\1fÎ\87´+g÷Z2µÐ\99\ 6­5\b\19Á\ 6\ 1÷:í\8aÉ\91\0·¢ëÿCÑd\99H
-E\9b\17\87F5ÞYÙ0Û\9e&\ f\9b»§÷ä\ fHºd\12uqÇ1÷Z ð#\ 5ñ¦0\aÂiR\86ãI\12UUt)úØ\9dQÐTT"Ñ\85®\ f`y±Gxf,\ 2âxIv\87,L\9a;kôofO%¼o­\93̦ºU`zÌ\12\1aÑÀ\91û|ò\ eKÅ×\16½\ 5\18¯z\8a\13\190)l\aáÓ¤\93ú«f?½\ fý¹üô\aÍA{ö\8a\v8SPÀ|>½\9aÎQ\9bp\99ªé\e\94Ã%\9eúÊÅ\82}er"\85:¼ÌøÔ\90l&P]h#W\8fG¹Ø£\14\1fík.\e\18'\82\85Ó3Èì\9cð UZ7¨1tº£\1aüc\ 4q«=(\88.6H\8f]\f\0>ûº\v\bò2wàtÓ\81\ 6\8cA2Ü\rXÜ(GVOUØC¸n\1cíôòV×¹EX\14Äe     öª\9aýJ ,4#jT\9a¦¶15Ê8­ª\13\94¨a0^\97 ÒNG\86\8c\82
-       %\ 3+\\a\7f%\8brr%$ó'fÊÑ_×\1ep\v\f\8eè\9e\96ùJ\91Æ\ 2\vè\1e\9aw*¶¥\15\a&VD¾UèW\ 5\v\19`D¹\89\1a\f/Xi
-É:Á\1cuèü.æ\14\83\a©\b\90Ø÷¡û\99°a\11\85O"=z9òp\b.S9d\15Ú\b\v\0\87,ÝéÔYowuÇ\e\ 3µpc(´\16Y\ 5\8b\93|G°ö\81¼\12%\9c!X\8aÊ\18d(\ 5Ù³T\87´#\vùQ$éQ2`\7f\94Ìr\90ÌrJ\7faÌô\92øιqð\91l¦«~È´Ý\1céL        \16
-\1fÔ\19\8fA\81\99\v«\15\94\16\1að^F:ã1fu\8d~@!SÚ@çà\0&\9f\ 1\17b¨ënòO\80J\98Ròe
-\13\92B\95\0µ\94              \9e\8cj|Ð\8dÍN\95ަϰ\80VÀº\11\8bç\82S¿\1a\90%ôD8\ar2­YRÃ'lR\992\8a¥\10f:Cxÿø\18:\v/\1dõ$\16É#@²Mò\98Ã1Ïq0\rx^ôô9\9dÑÀ!7\96·\ 2ð\ 3=\97L\12V\94*q¬¯\1f\98¡{ʧN'x\ 5ÔÆ\94\14º\0\8d1>\8f\r\ 3\97ì\81GÖ}\ 5nPö\ 3'(Ù¢>"³·:Ìýý\ 2¹\ 6.\15ð4\ 2Qé \84óç¤vÀ\10à\ 5?LØíÑhåXvØ}öÂ\85\95ãQ\94\89 -8J¥*\13ÞÙP\9c\95ª\7fi\ 4¢ð,T¬K\91Ãÿ\937&âÝã×\87\8fÃLì¬éÈÅ\80(÷»´¨ \13Û(¦SEè°­¸ÕPÐq\86A\ 6Xº<Û|·a²ÔÒ¢\91Ì#\17±,\85\11Yh×9w\10\8b\84\18Eìl¡²¶À=Ð@Án\9cå¸\e\f\0uÞc >°\16\92²¼\ ea\8a\ 3,\1c\b2(þÁé\92·ªÛ¸t~\1cö¡Qhì\10·\8c×®1a§\12\83P¡Yç¼\92ål\88\ 5\83V\85\ 4Ý\ 4%Vb\93ÜQè\tU^\85{\13e\80£       W\8d«,&í\98ê½\9f\0\1fß·\9eBï°S\83\80\\9c2M\19ÄÖ\ fS\ 63ê),\91ñ\9fxÑ&aPE    \ 4\812@1ªV$<äxõÅzÖÀÞã\95H7Þ8¥/\80Ó½Èä´0\86üØÌð\8d¢³\94cnµ\1d\ 5Msa²0^Üqå\99Ò\87\ 3ÅM\16Ý\85\ 3SH°Ó\ 6\8a¡-Á\98øâà!ñ\e\vFo_Ûùà\ 6¥¨Æ\9e\17¼i{:±ûcø\1a\80\8c\1dÝ}ü\9esùiÝYî|\85¯të+Z-ðÝKN\1e7w\1f\16?y~ÞÚ\14\9aÀ*áª/ú×/n\163~ÿ?\96®åÍrz³Zc=Ã;×+>úçöìï³\7f\ 1amÇ\85endstream
-endobj
-1136 0 obj<</Type/Page/Parent 1011 0 R/Contents 1137 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1137 0 obj<</Filter/FlateDecode/Length 1832      >>stream
-x\ 1\95XMoÛF\10½ûW\f|r\ 1\9b¶dÇrrs\9c\ 6ÈÁ®[)hoÅ\8a\J\e\93\fwiUýõ}3»\94(ÊAP\ 4A\14jw>ß¼yÔ÷\93      ]áÏ\84fSº¾¥¼>¹Ê®hz{\9dÝÐÍÝ\8c?ã¯ÓT\9e|\\9c\~~O\93\eZ\94¸r{\87\ f\ 5áøÕ\15-ò³É$»É¦\19=©ZÓ\»W\93ãß\8d  ùú\97Å7\½¡É$^½\98Îpõl±Öo\9d>'ëèi>?'ãIQ©Uè\10@X«ÀOZ§½nð±¡Z5[úúôå/²­v*\98fE~ë\83®}F_\ 2©ª²\eÏÞ¯èbr\9dMÙk<\80ë¥u5îØ\86|\97¯IyZ[\1f\1a\84ïÏaÚT¸o\94×\b¢)¨óÚ\1d\
-\96\96\1a\95ñ¶zÕ\ 5\95ÎÖT\98²Ô\ eÑ\8d}ÚÎå\1aA}Fjú\1f\95>Gn>À´ªl£c\1a\eë^ðL\82ªÕ¶·\9e\92:p/þ`A;\83\bmIe¥ÆnKSá;\1f¬C\80È3 à\95ÍUEò\8dT*£{jt`Ï84\ e 4Σ\8e\ 1%m\ 3\94ï\e\11\8dR\96ø\ 6Î\90\88\b\1aÊmã»
-fééË\9c
-\15Ô\12e&ôã¸Êx¦èÓÓ\9c\13}E\aøPߦ\91ÇAG³ôÕô\16\916\9f\93jÛÊä±¾­³+§ê\9aAc\9a ]©\0Ø\b\19Ú\98fi8^»Ç[ðº*\19&¨ºô\93«\1eÑôãHhÃ\19Ǫ±'A+cIp&5Y9ÛµÀÆ\9fÉ'¾õ(\14 ¾\v+\16o\90àÈ¡]\ 6e\9a\1e\85\8aM\15@>=-úºu\9e½?Îÿx~ \0 \82\aN;\9a\ 2I\ 3\ 1\9bAR*Ïm\87\11ÓMWË\Ù¦¯h?E_Å^į+bZ\95Y:å¶Ñ>¦\18¨ÎU³³Â#¬¥Ãq¢bÞ\8cK\15ï×*_#\vr]Ó ÚQ\8e}K\18F^K§\8e\8d\81\14\80ª\ 5\15\16\ 3ÜP[uìkKÁu \85¢\7f\8e&\86µíVk\ eiK\eÌl\1a\f\981ØcjÒ\e¸j\9d©%kÛ\ 4gãh       LAaÌW|åò3(VÈïìR\87ü²ñ^\881Ã(\94ñ@Ï\8eg\0\ 2C&Õd\88ØZ½0\19\ 1Mß;\8d±\fvT¢ÂâÛÊÚ\97®\95Z?Pß\12~ÈxúßÑH&0Ê}Ù¬\rx\12\9c\99¯\ 5¡ZÀÅ4\1f¶­\ 6\e\1e7-\85ª\8bs1\94¨O\82;m\15ªP\9c\1e\1aAÁÐ\ 2\10\11×\80\9bÁË@\8aOib¤U\96ɪk3Zð\9cp\15Í\18/\12²ouÎü\18C7Ì»5èY\18@XS¶
-s\v§á\81\89ª`Z\ f`ÕB¦\135Ûðæ±®Ð\ e\94àcìɱTgÔ
-ã?ľ¾\el½ÄFñò\87HÂý:8D\ 1öUÏ]B\99<9ûnnLÅ8cj®¬B\9cTÛ¢«xܪ
-qG[{È\ 1\ 5\97ø\vÔý-Ä\9fyAÎ~%\9f¡;¼+qw\89a\81³hðÐÐ`\89²¹Þdjê±QîÎQØÅ\16}\ 4\aWÕ6\ 6¯1õ̤ð\8a%\10ý
-T±õ1\ 6\98=>Ì\91\fü§5\84}Ð59¯K´Ø\80\8eë\8d\80â\ 2øh°¶8µ\84É\8c~k\18ºû'<­»}ÎÏw\15?òα1\87\88\0à]Æ®ð¿Á¸ö\8cÙ÷Q\90*\9c°[6\89\7fy¦±Û¶¤\95\a\19aïó\96ë×\ 1,¯1½¼\f¢\8f±ÖÁ\ 6\a\1c\ 4È\8dÖ\ 53û(^\0º`6F~°Ñva\8c\90\ 4\8eD±Ç\9d|\8b9\18\ 1\11\1f;êâ\12 eEA§ÉÔi\f;\9eÛ\ 3òg\1c\bÅ1J!\15×YЭ
-\1aÌ\8emý&À$\ 6\86Ì°\82½l\11FÙñy¤\14iÔPÙ^\Cʲl\10I{\9dÑsÕ­Vj\89\ 1»ïØ|è5Ä£\8c\9dì\8bý0ñì\8a¾ýÙ5lõÊ[ziì\ 6Uóô|ÿ\984oÒ¨\f\ 3µôÁ)`\1cë[\1dzG\1e£*ñ\ 1ëÌ¿Qá\ 4\9d¯\e\15\18\90åE\80Èe'=[\98¨§­÷\86s\ 34\84.Ëí^Ç\8e\1a\ e\01D6r½\93¾½4\1c\8cB\1cN\vÜ­Õ+'\ 2WNç¶n!P\194\18üáqT\1cQ\ 2­R\1fô¬ìÀwG.wt.µ¡V94¦«\94£ÖBæÅ1:(ɱ\0\17\r\fÈB\ 6\1a.4´26Ü\16ª\ 4ü\ 4\10ÙÍ(O\16¯\16QsYA\ 1"s\19U;\9d\9d8(J_¡z¬\ eázZ¢\ 2{ÃI½ì\18')ú¡&\1eùFÙà\96\87Ѳ\16æ\99HÒ}L6=y ²HS#èàÍI­d\15
-ÃîÂ\1c<\97\16ì¨
-®Y\8dB1\a=\8a
-¾z±\19\v!L\95ôKDrÚÓRO?T§ñÂ>/|\1a\89A\1eÖåØå \e^Ó+h=~MÁ\8b\9cÁË\ 4ºó\9cDÙ§¨\ 3\1f¢6«x\83/\ 4nÑ1ËSÁX¾VÍJ h\80\1e\16&h\1aKÇñ\84\ 1À|\8cEGº\ 2QF\1a¯}yÀØ\0Õ\ 1ÀIïZ?\8e"\95°ß\r   îQÇàeWÖpÜ\ e\8cm<ßI˸\1aÑùèÌbm°±±ÂlU\9d\15GüÌ\842Ø·½ôb\88\1c1.¯Iä3b\80^\9d¢n\87\8bRT¦Vx§\80\8eàâ\ e\18®\9chnñu\9a\92\87\11\96°Tä\15"êU\91±\êAþÌ\1d\85Æë\1a&\96%)¤Ù`Ý\8b\1câ\13i\1d\1fÆ\bÝ\9a¿\bàá\9e¯ÆÊÝ%\896¹Åï\1dw×øeã=³ÿüþñã=\90d¿qo?Ù\1c/CI:ò½\8bþøÅl\8a\1f@Ò¶øñ\ f 7³\9blv{\87_NpöÝ\8cMüº8ùýä?ÒïÎóendstream
-endobj
-1138 0 obj<</Type/Page/Parent 1011 0 R/Contents 1139 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 580 0 R>>endobj
-1139 0 obj<</Filter/FlateDecode/Length 1810      >>stream
-x\ 1\8dWMsÛ6\10½ûWìÍÎ\8cE[\92-ɧ6\89ëÄmóÑX\99ô\90\99\ eDB"\1c\12`\ 1Ò²þ}ß.H\89¦ÝiÇÓ&1\81Ý}»oß.þ>\1aÓ9~Æ4\9fÐtFiyt\9e\9cÓl:Kft±\98ãï\13üç5­åÃÅåUrñÒ\87éd\9c,^ø\0ãÉ9ìóÿ¾¼;\1aO.\93+\9aÌ®`¾¤Ét\91\8cÛ\7f\15t'\1eÆ\8bóç®ß,\8fÎn.h<¦å\1aÑÎ\16sZfbù\9c\96é\89ó\99ö  -s\13ÈØZûµJ5\95ê\87\ e¤²ÌØ\r)²zKª©smk\93ªÚ8KAû\a\83\93kçé\9b±+c3zÐ~GZ\85Ý)©¢ :W5®ê,Píh¥_-ï\8fÎi4\9e&\13\84p\929«      ^å\18l\13\7f\ 1`      õ¤Rå_Ûh9        .~ìp\9cP鲦\90û©«\8cÎØÅÀÀYaVgA§\8d7õîlh@!`öúùõ\aJ\9d­½+hm
\ 6$>Ü\vÕëB?([w¨\91\1a\94µ©2UGÏ\80ë\9e¥èÁ(ê\0Ð\9dÖ{w\99K\9b\12¹\8c\99ä\f\96Î?K\8f®\95)B\12ã¾¢ñE,àh:\ 6\8d\90¿1þÄ\ f}E)\88Ѽó®©èö\9a^#\9aX¦§ \81hÂÕ?ù\86J¢¬\rß\84÷\8d\D)R¯\ 5QcA
-.kæ¶\81>.¹L¦æ¢²]@\ 6%\80À\83\f\ 5\b^\0È\ 3j\911?Ö\ 6W¿\9f|¹½þþ*òj\90
-\85Ùäu±£Ì¬×Úã\1a\97ïëÇÛ?i\9b\9b4§\!Åä\95Ýhrkv¶Ò¾¥\8a¤>ļ·.w\ 2%\80vmQ\83*u¼>tn[\ fð·¿,øCB·5\ 3mKv\1cèÞ­8.°\ 3Ì®    \90\84É\12§ÉöQ±Sé\ 5\9c
-*!ÎîÀmk\93ÍÃÚÚl\1a\ f\0H)~±Aî,U
-\1e\0\95))\ e¤8ð\12*nHö¡\9e\1fj+×\9d2ÏüJ6\81!Ô`X¿¢l\1e9\86Ù=ú5<ôj\1e\ 3\b¨opÅ\ 3Âe¢rxkã\ 3
-fJ}\1a!\fÀ\1eh§­~¬#"\80Y{W\8a\r)-ÓC\93Ôªò.Õ\ 1\ 1UUab\ föcébü\84\14\ 3\9f]\82·\ 6Â\93+°±\84)f*þ=\0Õ\87½ç]\9bîÞ7ð#v\1f·Í,ö\1cÇ\8b|4E\1db±P?v$2\89\ 4K\9a\90[\13\1a\1c7h5ËmÙ\1d\84\95
-\9ar]\80\ 4Ü\89u¶¢î×ÿÒ6Ú\ 6\90¦í\ 1¡"7B\8b²ë\1e\18\ 4ËÚ\bh«vÿ!"\97    }\11PôV¥9°prûC£\95\8d×\b5\95V\ f; +)\ 5°\8d¶ÚC\14\80¢pBaIå\9eYd¹\17\vç~4\15zlé\90À¬\ 1¥#9ê­ó?Ð\14`Td\7f\18
-a{µëKnuT       ¾%T
-i®á\80\13\9a\11\ 6\13\9b½\83¦\aýw£-üDñ Ð\bµ2ZíXÑ2WªgíÒÎ\81\ 2åkuõ \8e\16ô/£b{]7ÞÂ\1dL)ú|ýVú\1añÄ_u\T\85ÃôÜ\9a:Ç©A8\ 3úª"p^\ ef\19\ 5\fG\ 1\1d^fwÆB¬y\88D\9f=\8ao!?\9aûDÙ¨\8b{\89\1f85=HÌc\a5Æ$\85\ e²\12p~a\e\1e0ÔY\8fõcePºSÉð\0\ eGä9á E¯Ë95 ÂÀoêJ¨\1dΩ\rJÀRÂ*0(W+\85ý($°\17Î\ 6\14\93\87ò¤¹Ä'4\18º\8d\80\ 6¨3\13R\85\1d\bÑ@\v1?ÑJ<Ö\91àCÁ\9f Ë\90\85\94\e{/f\(vvv\831\8d\ 1Ë{Öh\8aáÜ\8eiô×-pB\8a"\7fØÓÛv\fÈoâån¹\911\8dE\ e\83ú\ 3×\10\v\92ý!\93çW\97[Zz4\8b.\ 4\1d¯\86\87%Ñoè\84î±Éð÷\9f\83U\15oiXï\90ñ§Çå\8e\1cgQ\87ø>\18Yõ8»ï?}[~jÅ\1eÀ±@ñÂ'\0\9f(!¾Å£\99\ e©7+te\8e%\bùÛèzß­\1c\ 1öÄÀ©eܾ±\96Õ\12ÇÚn\83¦DéÇ×Þ\92\89ý\8aG\94Ä}X\1aÑà;×xúÝØæ\91\11§Ä\1c\ 2ïúnï2î\12\0ÏßÐ\85\90\857¯±\94óOk·'ìPS@\92N\f|åÎ\15Ês\ 2*\9d¢1Ò§\8c°Ãm\13K]8«1ìä/íå\11ú\92\91d*©\1fkö{\90Ö\93.\8en)¾i \ 1<c\1eL@Ö\ fS¦Û\19\81\ 4\13\rÝï|åDwe\7fî±õ@Å\176ÆËdÌd\ 4G Á\קñ\bõ\98\1e\18\96\97Ù!\83:\93I\84úÈÚÝ/÷ Ê(W¹ÃpÉÞã)0Ç\83%\ e\8e!ê6KQF+µÂb\8fþ?Ðòe\86ð3¤ã\10Ó¸ÓÀk\91öH\1f4\ f\96Û\r\14ØBõ\87d\92;\93ßDÂÙ±×\9b\ 6U?\ 6ë#mO17°\8fBþÐR\16¼Ææ\v\81«+ì\9aX\155jÁ\17#³ºK\1d¼\ 3¹ö½ÂBºÒØ÷¶x\94`A\88"¢è8æh\94²Þ\9aôXV\b\10\8f§-bÀ²ºfâÇw\870^Añr¨<\ 4\f7V\r\17ót\0\90o\94\8aå\e\v\11:N$\9e\ 5\85å\r×"\ 5@qð}˯5\9cYc+å\ 3X\eb«õ\1d\10OëîM2k_jxûî\17¤où\8e\1a,6·l­Æ»ò§È±´=>\9a'\v~9\83eß'³yÛG\8böë\18ïÚÅÕ\94fs~-ãLLígïî\91\rºî?\9dØîh<ÃK{1¥Ñ|"6ÿï³èb~\91Ìg\8b\18Èå\82mý²<úãè\1f\17o\18;endstream
-endobj
-1140 0 obj<</Type/Page/Parent 1011 0 R/Contents 1141 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 583 0 R>>endobj
-1141 0 obj<</Filter/FlateDecode/Length 2018      >>stream
-x\ 1¥X]oÛH\12|÷¯èÃ=¬\ 2H\94(ÉúÀ=\1c\9cl|\e\ 4\8e}\89\ eyñË\88\1c\89³&9Ú\19ÒZýû«î!i\9aë,°X\ 4±-s>º«ª«\9bþí*¦\19þÅ´\9eÓbEIq5\8bft½\9eE+ZnÖøy\8eÿNÓ\81\1f`)\7f\89ùË×ÿ\­·QLËÙ"\9aSA1¾o\9bO9}»ê\7fÆÓåu´î?í}ÆÓÕ*Úô\9fö>ãév\16-zO9ÂÅ\f\11!\8eZDËá\83÷»«éí\92â\98v\aNsµYÓ.\95df´KF»ÌxRynÏ\9eªLÓ·\9b»÷7¤ÒÂ\94ÆWNUÖQe\ 1C~![Ê\12UcaY\99DU\ 6¿*t\92),.|»àËnúÝ\94óÏïv¿^Íh\123J»tôðó\a:ðq¸fp\86=Pj\veø´b¯\9d\8f¨=\84j\8fÏTZÊmyÔ\8eJ­S\ e)SÏ\9a¼>)\ 4©ùªIï.\95$¶.«.¤\90\16NzÖ.âÅÓÛU\ 3Jo×÷Ì\92Ïl\9d§´×ÈY¥¦<"^@\94Ú¤.\90õ¿Ãæ\16Q¾s¾\ 2ìÈO üåþûî\9ex\83öæX"TNÙ_|¥\8b×°"ÇO\aºØ\9a\14Df\8aS®ù\ 2¾1D\vl\15\1dL.Éõ¢\fY\90*S:\e\9f1\16\8f£\832\ e\14iåM~y|G¦¬ô\91\91!ý;\88äS\a\88\1e\9c-øzGL\8c-q\f\98\19pÖÇm\1c\90è2äÄ°?¢]¦*òʤcúDª`®¾ì\bO\1fnîpýI»jLÞJ®\85º '\84®\ 67íuU\81]ìâ\1cðÓ\19+\11\133  l$ÑL{M\95òO¾á0i8\9c¬£ML«\15Óð8_­)°´Eñ±î'óM\14oi²]\a¦â8º\8eæ\11}Õ¿ÕÆ  ìþ5¯L+\17ʨ¡HĦ\90d±W\94Øò`\8e5Ðeý3C@\ 6\10´\&µs`\12\1eÀGÑ@q#z\7fóá3}ÚÑÿ\1eþñúÞQ£\89\17Éä,ÃË\0\84gtÇaw+å\11íUòDõ\89\99l0\987\10\8d¦ºJ¦'UDépS
-\f\12\14ú\85\10¹ÿATRsåO\15\fC¢¢B¥¨eÚ[[QjüÓ\1fâ¹»ùüq\10ûý\97\8fôåþûà\8a^\1dÝiÏ°AÜ\15Ä\8dD\10ô\e\98{J\14üB=¡x*¸\82bý£\8c,vï\99\12v\8c#
-\81\7fb\9d\17*ÉL©\83^\7fòtÎ\86°2\81gUV¼\ 3\ 6 \9ac$=A\16U\15νr\18\1fÏÁâ>ö)*,\ 3\ 2y;í\81¨\96\8b\e&Ð=Ä\85ÿÀDk&\81¾\ 1\901°Î\1cM©rò\15\175~u¡³fã(É\ 4\e\8a\ e®\16×\86ïtðI!!ó#\8c\1e\e\8e\965Iÿ\9a<¾k®z10M9N÷\15Á&=\8b\eÆ\1c,àqÔþj\8eÊ\99\93\82µ\1e\10\ 6\9cîì\fûËã»1*ÿ\8c\80\92¼\86û±yÕeÂ5\82§\b§Ü£îSJ\95.l)%Ñ3µ\87\1c\9e{\0\8a!g\89îuçuG\1a\ 1\1c¢:ë=Ôq\f®Õ-\95N-K­\e\83H1\96\8b\86  ±\f(É-ʧj\8e(\8csìÐ\ 6¨²£\99\12\0Ö\126w\8f\ 1\e©=\97¹mû\ 2ú\ f\ eL4Ô\99ê6£\ eMx\17÷Uú9t¶ÐÇ\98Kµ7¹©Zw\83Ú\9bP|\ 6~\80\eäæâÇ\8còYç9\7f?Y®L\83\88q
-BF73\89\16çê!yröÙ¤\10Àþ\12ò\rP5\82\1d\8b)?\8eNy}<\8aÀ\a­\18
-®q7ZH\ 1)q\19x]ÁQp,\8c\9c//åØ\ 10]q}\82h\\1aHdç\ eî¨[þ¹Bø|á¢m¶Á]+b\r ø\9a\92ÏÍÞ)g\80\bPAF¨Ë·ï\ eÝ5¢[Ð\a\85_uú\v7%é»\1eýq\1dÅã\8e_U&\9aå*®]hUúa\89Âr&³h½\9cÌç\9cèË\b5
-×ìY@\b«Î+¤\ 2ÿ1C\1a2\9d\9f\ euÎZV9\9a\1fë
-äIv©~Ö¹=q»\87|\93'(Øs!\87«:\9fà dé\8fB   ëÛ.\a\r,â^\83[Àé\10&\17\1fF\13.ÿûºz\9d\r»®´¹÷\1aÚ\aÕ\95r¼¡I\89IßC$\17È\80\89±ôd\90\82=\1c\92J\10\17ÆCøF[Û ¬.¥è\e¾Dª\18¼ès³\9d£èI\16\87\85¸®[\8b$_ì\9b>Õ¹cÓ\^Ö\94o¬áê\19\9eÕZÏëÜG\9c\1dÊ\87[i\10\ 2\ 6\ e\1eûBì\0ϲ§K\9beÅCÁȹm\ fÒw|\rÌxï \1f^-\9af)\ 3Ó2U.\95ÂkØæ\81\rb\r*E©\9d3\93däë\13\ 6\1d       §íÞ\9d\16\86Ý»C\ 5}·íÞÁ¸\10\93 ÕÃ7X2\v¡­­¦
-¥! I1\v\96\9b:s\8bh\9d\ 5S\e\94êÐu¸\ 5\b_\82EñQ\ 1Ñ\97 kï¦\98\94\87@w\9c´+{±MyO¡Äh{eF¨\r©}Æ  ·G\84W
-n ´¯Mξ$®Þu\ 2ôÀ&·P2m]\810~¿y)@\9d¶Fݾ\97ÈÜÞ\12Óu/>-Ãè\ 5'\133\96÷\ e\0\85"hmí\ 50ÅÄ\85÷!\8cõìCRî°\991\15\97\86ç\81H\9aw\82\fñíaèC,ùð·\1d\1f Ï«ÿÌ*èëÃ\1d[\8cxP\ 3Áô\16Î!\13  ÛÀæ\95\11}h¦Ü0Ï´9K½¿æ\97ww¯@Ü\vûÓ1+%ì\rÓr7P`p89\90xA\818e\8eY\ 5¦¡¾\14\85\aè\ fÆI+p\9a+H\9f<Úþ\ 5ó\ 53?\0²\84å{¯0¾¦ú¤Kyg«O°\9es¦Á¢¼SðÆ®*qï³±µg_\1311×ßd´\87¤å\88F¦·3Úòû\ 3\fø8\8cºÿ\fùÇááb\8e'3~W@'µ\9c\8dì\9dÈóI<Ãk>ÖüÙ~ñ\94\ 4M°)\86æö¿p\82k\aå(Á|*@uIü\85c¢iK¢¦É\84\aI|\91êû;©ý\9d½­tÃ\19\9bF·ñb\19­6\vZmy$\ 5º¡\e=8û+^h0x\85wvQ\1eï\9cÄ+ü]\a\e&ë¹0ö£\17Áåz\19­W\9b@ëõ\96÷~Ü]ý÷êÿ¤u\7fíendstream
-endobj
-1142 0 obj<</Type/Page/Parent 1011 0 R/Contents 1143 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 600 0 R>>endobj
-1143 0 obj<</Filter/FlateDecode/Length 1526      >>stream
-x\ 1¥WmoÛ6\10þ\9e_q@QÔEcÉ\92\1d¿\14Û\80t]\87~h»-Þ§e\18(\89²ÙH¢'Jq\rìÇï9J\94å·uÙRÔ     MÞÝsoÏ\91\7f^\ 54¿\80f!\8d§\14çW#oDÓé\18\9f\93ù\f\9f\97\92\11Þ,În@\877\82\1aþøåÇ«p<ñÆ\14\8e\9cr
-\17\817iW\19Ý]\85¬6\187\9bA0Ç¡fµß\1c\10\92ó)\ 4\ 3»èö\0jê¶ìßÝÎt
-½9\ 5á\ 4ÂvÑmÝÜX}A¸\80°]t[ã±Õ\17\ 4cز\8bn+\f-þ`\14â\88]ðÖ\9bå\95ÿ\ e°\ 2\bÝt>£ebý\1fÑ2\1e,×ÊÐVeÙ5E;Jd*ꬺ&U\98Jd\90¿ýðæ\16+z¹ü\f=\b\84Õ3ðkSú\99\8e\e\91G¢Ùvf\ 6\1eÝIIÕZR. ÜhIt\粨D¥tA*¥\9d®YnDCx\13\ 2Ö`+\8a\8a*}dÞè\n×\12i\95\99\91\1e½¯,b\12\99Ñ\14Õ*K¬©­*"U$       É/2®+\11e\92D\91P¦¢R\94J\1a¯A¹è\821\fç\88\ 6\81\ 1\83Gßë"U«\1a\9aÃ\81ó¸0f«ªxíÅ8q¨h`Í°·-\84½Éæ \8b\v<\r¹F`q\89Ó\1d0*¤L$¼ÐTÖ\ 5;ÓÈÝ8ãNqr¨o@\89\909\82Y­K]¯Öä@Z\85¬.\92\14ë\8djtC¯*iSê\8d,YQ/ð\9cJN\8b¹&£\e#.×=Ð¥ÖÕ³chñ\86<¯©\ 2ßèº\8c¥ï`øð\10\7fÿÑ\86ÅCºø«C'zúß7)Mu\8d´©
-^ÄÒ\18QîØ\95\<4%\95ê,ÓP¹"³Ë#\9d©\18\91,\1e^?\rvVÐÐX8\17P\9e\85\17\91ß\16        7\8d­ÃX\18I:¥;¤Òè\f¥gþ\e6Ûc*:\ 5BMû\9dÛò\82Ã0\8c\83\e°Ü\f\9d\8f¢;\9b?\e\b\16\1aº³];^6³Gp\98ßcóá$ðæ£ðkæ÷êN*Æ"sjN\91\1d\99¿\9c¡\8fz{MÂ\10Ç\80\99§k\11\99 Ò\ e\836ðe\15wUÜëx×È\ 3.Hð£ÞRmdiû\7f\85\16Ü\10ø\8d©¦í½Ge\14ÓPZêü´­{ý縫Á±7Óô·G\1fvO\87\98*Xδ~@{ØÖ\ 1Ó\8b´\ 2\v\19ýÓUå¢\99\rC\8c"KNÔþl\ 4H/ymW¬\8d'\85åX\86Éèy(¢®Üy³\16\89ÞöÏ_8hcÕ\9c£\13Åýq\ 5¾¼È\96\98W}Îm©\90g\19Ó\9e¨+\9d\83Ó0¢²\1d§\ 5ó\ 3¤R qgø5K\98ÖÕê8þ±\88AÔl¦\90_*çM;­*\95K.¥\12Dd*\99ãâ\11¡ºÀ¡Q]1\7f!à©ÀNI÷\ 3\9eD\v\89.^0³µto%î_¶ã\10»,\97\8b¢fØ]\82ÜôîÆÇÙNö\ræ\9fï\¡á#ýE«RnúY;
\eF@Êüj\8e«ì°\1d\8f£#\1e\85Êì\9cET]        Ûf\90ñZ\e\8aDü@\82\10BüÆ\11øÿÕ\19<îÏ`\93Ggº¯71îä£,EF\eQ\8a\"Ò(qÌîv\9e\84ì´ØRc\1cÈuUêÌæ5\92kñ¨t   ÆnÜûêÐí\ 1l$z\93Ò]d\9cÉã\88\12Ã\81!&ÒÄ¥\8alMR®í7\15ÂÙN\11\16´\97ÔýMµ\Ñ \8bòý`~ÿòð\90=i\ f¡~\10\91\15®J§¼q       \99e\8b­0VçþF\96ëD¥íýA\15qV'ÇCØ1^\eìßV\99\8eDö;\19\19ó\8d¢«ác\92q\a\9dÁ>\97|ãyÞwç6\9eA-çºB\0ÑÞ°É}Å\1c\ ÿ\88Nµ¦\17¯^\7\94÷öÓ\87Û÷\1f_¹íÃpÙÛ?Â\15ÎöDÖÖ°3¢í5i@ßÒ«CY\17êa_زà3\ 6CµJÐúLúÁ\b?\sx^à\8f\14\85Ö\ 2gTM´ù\19r\90æ¾V\a  *\19\ 3\83±:\87VáÓ`­þ\ 5,KÍOÀ\ 5\9dÿ\vW3Ee\81§\ 1ÒÊ/\ 3\\9d:§9Fûéú\ 4X¬ÐÖ\85\95á¨íd#~\9am{vïwÿp\97\9a\7fÊøJ=î¯þ6­ ½R\82\96ÌZb\1aÝ\ ft\81\19äH)eÞÙ\11h\a­$³BV$b¾è\1e7ô¹
\98Ùd\þk<\8a\12Õ\15¨Ïk\1fq+*ÿù[ÿù¯¶2ö¾vr\16\92Ë\98Ï\ 3#\12f}¾\8eüwxëÚ\a_0A\0æc\9a.¦ÍK­yÒýTêÏhszÛ\7fÚ±®a0ų\19\ 2ÃYh¯\9eí\v\8b\96ÒðÕ\83ðî,V\86>Õv¨Nf\13o6\9d7×Äé\885ü°¼úùêo\11Õ\88\90endstream
-endobj
-1144 0 obj<</Type/Page/Parent 1011 0 R/Contents 1145 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1145 0 obj<</Filter/FlateDecode/Length 1086      >>stream
-x\ 1­VÛnã6\10}ÏWL·\ f\96,É×ä¥È:Iá\ 2»I±Z,úHI´MG"U\92²k \1fß\19RÊEq\ 2,ZÄ\ 1\fS\9cË9gÎ诳\18\8ba\9eÀx\ 6yu\16\85\11Ì\16\17á\ 4&\8b9~Oð_sX»\83é$    \93þÁ§ôlt{\ 1q\fé\1acÍæq¸\80´\0\8c\14E\90æ\838\ e§á8\9c\84ð»\12\12ì\96Ã׫Ï\9f®Àp½ç\1a¬r¿Ý_/¡P\15\13ò\97t\87!'\8f!\83d\86õ¤ÅàFZz\1e\ 3¬UYª\83\90\eÈUU1YP\94\8a=ð×áw]Ò§\ 4C8l9vå\13%m¢ÁõÝç«Õ\97\97Ù\a \8c\8b)YÅé(\82 \1e#
-X\8eZÃQ5\1a¾\v\83\aª¦\17ùª¨\84\14Æjf\95>\91\80uw\eÄ\ 4\8bS°e\ 6ØÓ-±çPk±\17%ßp\ 3\1eÆ^9\1e¼Ð\87GR[B\1eÑÓJÙ\9fýé´k\19F\8dÑ£Rå¬\1c\19Vel\94      9\92Ü\82®spÐ\ 5\ 6\b¹à\e¼Ó\ 5¢Ò\91\94"=µV56¢¹©\954H\8a§¸ãÊlUS\16\90ñKø@\9aàH\1fÞò\rô±;ÉÊ\87\1fd\90xêÁåã\ 2ñÚbö$â YxŵÚ\9d\86ðÕ2m¡©]¥¨<Ä©( `¼RÒQn¹± ìO\1eáSêÝsi\eV\96Ç!é\ 6\ e¢,áÀ¤uÚU\85X\1f½\9eL\95\81¡t\98ÍäZÔî     ÖX\9c\ e+\90ªò\88
-Ø«Ví½bzm¢ÒýÌ)\84XC\8da\r rÛ\11¤4CÈ\1a*\9d¤^+cDVzʨ#\85\ 6¿\10Cm*|J[\81\8566\84Tùz\11\9e~v\ f\94\eu\91s3\ 4ÄàÍ\19\93H/=\84ÿIÂ\1d(o²±:¯\80\95\a\9e\99fR\89ÂÑX
-\82µ5\13Ó K8iz\9e\11 Í\1dþº\91\12í'\f\7fpÞj\ 3\ 1ãð\ fl4¯;<\8b7«L·\98²768\E\93sb¦Fr|ÁøÜ\10ĺ_¬¯²%¥\9bÐq\94LáW\88¢K÷yQųAþ¢\ eØ\1eZ­·\j\1cHäC°úH\10mÐ&\8cª8\8a\11\1f"mÒ(d¤\18Â\8c¼\f¥&½¨ÑCþ\ fZqìÖ
-\82æ}ÄZ\83á9:iÆò\a`\b\13\89yÝ«ê{kݯj\rá\16ûæ\7f³ª.ù\10V®Yêêqó´ vË óºGñ^ø}\18$\13o%Ë\9b»\8f¯\1c\94¶Iäöå\80γF\17¼,»ÐÏN~k\10ù\13¿ïlÀ\9c|z\91\1etf7§.¤fE\13\88\16ÿ\rù9\ 1#m¶»l/TcÈ©V¸\8a\90M\16P\1d;\93>ÇrÏÝÀào>Êã\1eí\Âp\9a¬Ó\eïüã¹\9b\9cgzû\13=1g\1238ùà:â(/4]dÍni×·\9aÛh\85Îø\tk­*w Uö&\ 1Ïö_\f\8e\9dq\82Ôà;J18¹\ 6\ f­Ø6¾¿È_
-Ü­\17´]»×\16¿\1fÍ    \92Ús\ 2ü\9dcGñ;çKUἿ\eb©¤Õøjtú¡%G0ï\9b\fG\ 1W\81Ë4º]´¯\ 2ñ\f\16c\98]$á\8c ñ\vâ^«\1dÏ-\«¼©Ð»Ý\90S\8bAw!\98'\ eÂvUB\8aB%²ÐºäÆÀ]ãT8\99OÂùláÑ\9eÅ\14á&=ûãì_è\81!\1eendstream
-endobj
-1146 0 obj<</Type/Page/Parent 1011 0 R/Contents 1147 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1147 0 obj<</Filter/FlateDecode/Length 1123      >>stream
-x\ 1½VmoÛ6\10þî_qÈ\8cÆÅbÉoµ\9d\ 2Å\904ÉV¬yY#l\18\96} E:b#\91\ eIÅ5Öý÷Ý\91Râ8VÛu/)RDâñøÜ=Ïsâm«\ f=ü×\87É\0\86cH\8bV/êÁh\7f\1a\8da4\9dàß\ 3ü5\ 2æ­Ã¤\15\9fô`\1f\92\18\ f\ e\18ÝëA\92v^\1f\9f\7f{\99f¢`pÀ\v©ìóä}«\aÝ~/\9ab _?VN\98\85\91V4Ç|ot¹\80\v\9dËt\ 5¯\8d`N\e8_*a|Æød\ 4ý~\80Ð\1d\8c)s\92!ºR¥Nj\ 5»×       åv!e
-\94^ÂL@i\ 5\a§\ 1\97 Tr.ñ1\97ÖYÐs\98i\97A®S\96\ 3S\1c.\8e^S¼±þé\9aÀØ\b\12³\ 2\97\89º¤a4 \83ç:ÏõRªkHuQàî\97\14@=ZC\18\8d(Ôhí¾       «/ªÕ\ eáA¨°`Ö.yX|T\Øú«.ÁfºÌ¹/\80\88\869\84­o,>ß\bXéÒÀãã;±pi¼-{'ä\bø±\193_\1dp]0©ªò\97\12û\825K\ 3J,)3\91YU^Jn÷àÚÿ\9féB\0\97F¤È\94\14¡q\ÌY\99;\ 4.òÜFÕöÁ8\94D\8cY\86Û\æ»\87T!M\+$\12Ù\ e]\87\1aAÝÝÇÕ!\9a:ݧ\9aës\85\9dûk´L\ 3\90~?z\11\r£q\ 4\ 3U\vRI\17\8e\19\87:´©\91\vW)o¿Ö~w0ÚØß\8fà­Tå\87pÒ#\16+\89\86\95\aòQ73©ø\ 6ï\1dàL\14¨c%\ 4·$Z\8f\ 4\10
-\9b£y\bãf&[Ì\9edA1n\86©-aá0¤\f\rnJ¥\90\r\14»\ 6\96¢¢\17è\11\92\80¼·ržcöf\8f\14çQ\12ÈBs9\ f"Úè\1cYÌkÓ®¬\13\ 5fÏÄÊ\9fG\9es(>Ôq\80ZÛ&è6\10\11cqaµîi\a)¢7kj|'ø\ f\98\85ìû©L¬\98±§¹àHÌ$SQE5UÃ8¯5ç)\90êN£Å¨\135=h\13RËÂè\850\ep¬¸-\85JE\ 4§«\r!\85G\8bt\ 6 \ frØBâÞfÌ\16\ 6÷¨ê͸&iÍ\8d.<ì°á¡ß¥5±\1f\811ºrÆb\14f\b©\9b¾ÖìÚé«ÊóùÊs
\9eøÝ\87I\µ(8h}TQ\1fï'eõ5¹w\94ÏrÕ¹z\ e\7f\10\ 4:¸ú\80@õóã\9b³£W;\97§\87;\r\ 1"Í4t\15´w.ÉÅ4aÚ´      p¬ßÉTØ\97дµ2_¼¥!¤D\ em<÷èü"ys~vÙpü»ãäç\83·¯Úß5¬\13¼\86¥PÚÙÿ^\1a    \vÚxî\17\95\aµý\12¦^Sÿÿ#êÖ\r±EQ\81±áW\95õ\e´Ãvè\8a\16uYýbðäÍ°zó;<{\86s¦L3\88ï\98·ÞMlË\19\8eHR\19\bWW\r\12A\13T\ 2ë7D\18áJ\83ê\ fa\eA\7fÒsÃ\1d
-\1d¬\17k\ 6Î\18~\18p\10\1a#ìB+NFÂû
-]\85ð³\94\95\ e¿ØË0\akgù\19\12¨®%\9fñº^ükVG<Þê\1eÓ\97úýFæ9Îð\14êñÛ¨\8e¯\12ÇßñóçñÇ'Óê\ 6Ó\1fãÅ|:\84ñþ$\®/\ fN\ f\ fàÂè÷x\v\83#\9d\96\ 52ÅèFL\84\rÝÉ\0/ë¼SÝ{ \11Ö7-¡{\98\85óÒQøh2\8a&ã)ª\19\ 3zu\9c´~jý\ 5
-ýd\1dendstream
-endobj
-1148 0 obj<</Type/Page/Parent 1011 0 R/Contents 1149 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1149 0 obj<</Filter/FlateDecode/Length 931       >>stream
-x\ 1\95VkoÚH\14ýί8\ 5Ô\90*¶±!@ZE«D$RµÛv[P÷CèªÆ\1e\87il\8fã\19\87\8d¶ýï{glS\1eu7\ 5ñ\98\99û8÷qîø¾å¢Oo\17c\ f\83\11\82¤Õ·û8\1d÷í\11\86\931ý÷è\933D­Ëy˹îã\fó\884F\13ú\13\82¤û}Ì\83\1eª×\1d\8fã,\17\ 1Òd\19\1eÏ¿´ú°Ü¾=!á\8dÌ\87«ùÇ\8b?¼óîo\r\ 2,X\89\86£ß_¿\9d\9e·ÿâé\92§a»AHëÃJÑmÏV\85R<½E(Ö´ÖÚ\90,\7fà\ 1\93/Ѥ¿       b]úùy \83æ@nÐ-\83\85Åî)k\96_ox\a;\83\13\9e?G\9eÀ\8aà<ø¹\13\8bàÎ\91ÅR>JG&Ë\9f\85Ün
-(gªÈ)þ\12Ì\9e\89ozí\\9fÕ¥µ¼\91®\96ëÚ§öÀ\1eÙ\9e\8d\99\88ý\9cËRp\b×-\9b \92|\97B\96\ 2'x\14\ 5RÆB(\81D\84<z\84Z1\94\9aÔhF³ç0\158<åÊ\ e\1dé'KßÖEaù®\83\1e¤òsUd\90AÎ3eãµB!\v?\8e\1f!Rú2ç\ 6\96\81íià\94¤\10~\1a\9a\16IJP\90+QÄ´\16ëR\ 3u]        ¥ «\91\81½ò\1f\18\f\1að\94,Ç1\85ÁÓ]è[~\9cB\9aêøq\19\83C-¹\17À\89   >â1C` \ 4"U>Y§\84%L­tgÆü\8e\91\18\97/kO\15Å,oh\ fu@\9d\8e>Ù"R§SâÜÊÚÎi%î¹ÄbÒç\11\fV\b\ 3\99`âÓ\9eEªQZSxû·cT(s\8aªY¤\8a5Q\81ýÃÕ\9eÍ\88ïá¨iµè-\8eñï®\e}f\92\95ú ¥]\8f\10&å¢ÇäâxÏn­\98ñðüs\1d\91\93\ f¾6È\1a\9d\8dìmÎ2XktÝ'*H\82\8f¤ó7ðÂq\8eª\15l½øÜàô\ 6í.\81lãÙ9Úm\18b\9b8õî\9e\8e!!\15±®Y\a3Ýû\8eT"«³Á$Mâû\82ç\84&\12yÕ«ß\99³¥\1eø\92\91w·]5ðÖÑ\91!ÍÑAZ\ f\9a\fW!Wº&d*æ)y'NË\82ö\88äyÍ\11_q\91bÑË|µ\92'X\8büî6\17Ev\82\95\90ê\7f½\98QmBÕ\\98½¹\9cî%\86*÷#¢éQH5\99Â\92X,\ e\17\9cæç\86¡¤d\13\ 5£J¾Nö.\88·O\a¡/9\ 3\ 5\10åP¿ÕÈ\ f"{\12ÀêöÃÔg\890#\87Ê»uÉ\1eX%Æ;õÈ;LÕ«W{é \ e\11Ùa\83PJk\ 67Üî\9bc]\9cCG\9bã_Àò¢ì çzRÝ\1dî\88\9eJ&\ 3\8cÎNËé8»xsy\81?sñ\85\ 5
-S\11\14    £!«ÛRC°j\ 5kìÑ\93Êæ^Ã\9cIód0×SXâ]aæ×p<´Ç£     ÝÕ$:\1ah\vWóÖûÖ\7f¥\13yOendstream
-endobj
-1150 0 obj<</Type/Page/Parent 1011 0 R/Contents 1151 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1151 0 obj<</Filter/FlateDecode/Length 1552      >>stream
-x\ 1¥WÛnÛF\10}÷W\fÒ\17\19°HI¶%9AP$M\8d\ 6H\90´QQ\140P¬È\95´\11ÉUvI+BÛ\7fï\99½H$­¦\ fM\10Ç wçræÌ\9cá\97\8b1\8dðwL³   ]O)+/FÉ\88¦·3ü¼\99óÏ        þ\19I+÷âön\9cÜ\9c{q};Næý\17¯\17\17éý\88îh±\82\8fé\1c¿ä\ 4û£\11\ 1\11Él£éÙ¯V¬åsJe\9d¥ªRu\92§V\94K\91Xi\1e¥¡?ÉÖÂÔô\17þ×;úûÙåâóÅ\88\86ã\11\.r6ôâEï\99´"ãGéý]ô?\9cLùôx\9cÜ&×É\14ÿè\17é,«jíÏÞÐxì\83\r\87ß®è \eäï#¨7Ò\1f¼\r\a\adËeÞ½<¸ê\9f©Î\9c!Q\85{'[{U-U\95÷íQ.d©+K¢¦z£,í´ªê+\17\99Ýè¦Èi)I,\vIµ¦LW\95ÌpRã°\v\97¡ºN&\9c¼Ã\95\ 2®\ 2\16)×¥P\15\95²\\ 2êÏ\8d­      Ï\95Ï{/QyA\85ÎDA\r®%>µ»\16Ns\10â\ 4ë,¡\1ftµRë\ 67\7fóùpªôñÕû.L\88j2õw\ 3Ê\eñ(©\14¹$\15\12]  ãÓÜVz\8ft\0@ÄÈ\19õé\b¸Úk³E\19\91õZ"m\93P0º\17\95Ã\ 2ѳÿ\16\16Á\12\ 3µ3úQÁ¯hp·ªU&j¥+ZiC\9a­9ÄT&í\15m¥Ü\81\ f"\87·\84\16\eI;Q2è.çpO\15ÒR%eÎÆ\97}Ç¢¨\81kN\80Ý\95ÓÖr\97ÐÃà\8dÊ\ 3ÛB5p¹\14[IK\91m\9b\9d%íª\82\98\8c
-%ñ\88¢}\1dk\a®\83\10\84A+\8eè{ƤÒ`N®\ 1q\ f\ e \9c<\\86\87±2¿\83ü{U\14>\19ár-uÞxª\ 1ÓS=öªÞ0ãð¬\8b\19£\ 4Ò\86\1aè\9aér\87 \ 2
-¡­b&­*%Ijuc2\99VÖÂG¶ñIÇV\1d\fø®Í\81\96\a`ú¨=\11P\19ø(\8fmÖ²\1d³3Z×ßys§&t\88G_)Ðü#\10%±ºëºÅà\95Ñ%'߯È1úîÍVÐ\9eCþu\fqð-¯\ 3âbÒ©ñ3½S\9ei\1c\0÷ª#ï\91,xjØ~\vT¦¬\95YcT}\b\85±       }À\188`&æ?¡Ïì\ 1´,¯<C÷\18     g²K\vµL£\9dod\bÃ\9ft!\8cBÿ°\19¸ï\ 5\14\8dÄ`xârC¢EzФ\8d5ßò\e&T\84²U£³ÕÎvÄ5b¹éó¬W{:ãµ­-½18Nè\9dª\9a¯é½\91òõ§7C»\93\99\8c'aw^t\91s\11óD]<¥Ó©Á}ÈÝ\9b\81\19¹æá£ëÖ\0¢l#ªµÌ1\15ý\88/ä*\8eX\90\89\a>&«°Ï#ØA²\87\93\e\9f\16\ fFÈ,Êò¥A»åü;ÿé`â\0\83Pf[´J\1c\99/=\91\86l\81­3\v\83n\8b\r¦óÿ7\9aÞÇqÐA¯;\87@=ðú-S\f\1d#\8a \8bduãù\1aE\81µ±êë\ 1ë&T\80\9c,2\91+mJQÄ´\82Æ\16\1aÃ\99 \1f|\ 2Â`5Úõa\0-\11\84Á_ºÉm¥µ\90\98\87Kt\84,*Y£qq\r\rÂb¹ªw\11?\94\fÆL\ e\11\82\1cÈÊ˼\e³!\1cëö\rÆ5\ 4À\eK)\ e\98\13\ 6j\1eeÈSÀ\ 5\ 5\893
-$9Ó]¼\83}U\88'\7f*".\87È\90¶äøó¬\81þm,Æàá\92w,7OfÉ\981¶=°\1c\8arOÑ'V<Ód5¶\87«£>f\ 2µá¤Î¤RÀ÷\7f&\92z\88{Á1ÒÝlZ\18ºN\8bA¥ûf\88\92ôïóÐ\8f\ 6ú\r\13
\12\14é^;\12´\ e/\8eûñ±Ù\8ew\ f\1e®3ì¾\a\9bZ$ÁtÖn\ 5âMf'Mqðk\93\13[Q \e#t\12*\r*¹U\v«¦ÂÚÓ`\91\88\1aʬà­\87Ë\126C\14Íô«&
\80\ eð\ 6¹G\a\a²3!%66\18h±m£K\18;\8a4TeW\88Úíª\82Ö²\92¦\15\0\8d\82\8dûgðZeqÁ8É\ 4%2t(6   \8c/U\1cÐ/5\bævÀ§\83\13[zr\86\9f´.ô\12Þ¹!\ e¾N§Eà\18('\80ø»u\1c8¡qÕô#rñÔkk\\9f£\ fËxÈ!Ìg.£\1fIq\ eq\911'1-¸\1d\ 4ú\1aÛ=öQU*\b*\9fçR9ýêAÅ[BBï\ fO\ 4\94[\1c
-\8c¯¬\7f\v\8aå¾\15Q¡õ\96
-\85E\94×Õ \11ó°t\8e§øH\9c_Óôn\94¸ï«O¯Þ¿~E\1f\8dþÌ_!otÖ\94\80×í$\1cá0^\18Î&ø\f<~\8fÑ\ 2ßX\=,\8bÕÚÒ\87Æ-¨7³\9bd6\9dãó\11G§7láÇÅÅÏ\17ÿ\0\8f=y\1aendstream
-endobj
-1152 0 obj<</Type/Page/Parent 1011 0 R/Contents 1153 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1153 0 obj<</Filter/FlateDecode/Length 1194      >>stream
-x\ 1µWÛnã6\10}÷W\f6}p\80X\17Çñ¥@\80\ 6ðCÐíÚ/\ 5\ 2\ 44EÙÜȤ\97¤âU¿¾3ºY\96\93:\9bK\82\181DÎõÌ9£ï\9d\10\ 2ü\r\87Ë!ðM'ð\ 2\18\ 4\81×\87Áx\84ÿ÷ñÏ\b\88;\9f\17\1dÿ&\80 ,b¼1\1cã?\11àé \80\ 5ï²Ô­¡ø1â{*\8d\88òo~"\97¾\15<5Òeþ\96\13i],\13áY\rÒ\89Íuj\85\ 1+\94\15×\91P\19ÐÃk_8îÇnK\ f-h%\8c¹¶)çBDç\8bo\9d\0zaà\8d1\84¦g\9bƱäR(\87¾\8f=ï¤ZJ\15¡ãçM\9c\bÞ:Æ\1f(r\fëQrqm3\8b9ô(ý×\e]\8b$±O\84ŹNó\àÕ\99íM¼_fVX+µ¢þ¾Ñ¨\7f3\800,\10Õë\ f©\9d\8bµ\0ª$a­xÔͱ\80Ðñ"?Ñ+©\8aÇÕÍn\ e\18àLÁR\0_3µBì)ÁL\92\81Ck\96m\ 4ìXæÁÌ\81Ò;H´~°\90È\a\81Ï¥ýµrWB»×\1fx\83\16²NåI\0\17ÎeO4q?\18¯nâ\8bM¤Jþ tâÔÜÇÒXw¿eÖ¾\1e\98\1f\81v¥ó&>Q©=V_]©½\89S\1d{yjTÂ\9d6Ägïgôýf¨A\85\r£zëpDYBCú\ 4\15r­¬Î9øp\98ÐX1\863\95Ï\ 6\8e\95\15\170\ 3\16E8U8NÅù«j6!'þF¿NÑî~ä»8\82JX`\16\a\ 6ý,S\a,A\0\8er½DiB\9e¨[A\9a\92\vLcþ\9aNØR?
-T\9a\vp\1a"iY\92 \a\18­\1d\12\ 1²      ªË#
-\101\85\12\ e\eý\80\8c\82µSÞg[MV\19ÓqîÏ\ fd3Dª\ 3°Ø\15a´Ý\1dÊÖÑ=Ìj%\1c\18\19\81\8e\81)¥3©V\10ét\99äÝj\14mkôfë,`µ¡\82µõ
-\87\93\11\ 1\ 5ÿ\85¡wå]z#¯ïÁ\'ÌHÛ³[Á%\8a\82b¹J\r#\9c\15\16*F®AD\^\937]À
-\8bÈR#öTMÕ®X\9b踠sÄ\80[3\a\9b\fþÐ\e&\15q\1an\ 2DóØ6T\9f¥Æ\8d\1cû\99!\86Z­Ø¡¤\12²\9cH°«\1eE\12kê<Õ\86áBCý.Üâ!ò4\83\r\8b\84÷\8fNs'<µNoä¿ÅIR\9f<\ 1ZNÈî\16{\95éÔ´Ü\96¨Üà
-b/\bÍ\98§Ei Ö¸µ¶{\9f\19¦\ 4\98\19\85\82¸³.\9f6\84*ì$F\9f\b\86À%'Pl\19¥¨µ\ÊÍV£\1ec³óº"®Ë\86Ö»Z-hgÕÕru:\93¸pá®ôé·»îÙÝy\9d$@è\85\ 3b\8eÉÄ\ f&~8\84ùíìSûvû;ü®·\99\91«µ\83».¿;\87p2\19öðcr\ 1óTÁ­äF\17©Xä\14Åó@ \9eU<0ż¿\92\ 5\v_\ 5íX"::täöËôö\18\8eM³G7¦¨¨\98¹ä9z±ñ\8a­\ 45­}²õ='\f,KNz5\ 3!Á¦Ö\1c\ fÿáà6\ 2\99_fói¾5\97\85àLÖÐö|Wz\9béH²ä\9e2BI>i¿\r!Sær$\ 3?W\91\97\9b©+bp\9c\9cÝ\aÞjÕ\81ÅÿmUmñ¹\1a·,·K\10¹¢\ 6o,Á\81\99\ f\rØØâUí4\8aëÒ\9c(6R1òa9\17{yüÙ¹80ó¡%8\83i¹*\1eξ\7f3.7\9bp\88o¿ãK\18
-5\9cOo?Oá\8bÑß\ 4w(J<%¨å¯W]è\8dúøF\1cuKõ\84\85°\8eDg±ÆO\v\7f¥9É\fF\ 3o4\1cã\9b4\1e\1d^\11Äþ\tþîü\a&\84ê7endstream
-endobj
-1154 0 obj<</Type/Page/Parent 1011 0 R/Contents 1155 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1155 0 obj<</Filter/FlateDecode/Length 1233      >>stream
-x\ 1µWÛNãH\10}ç+Jbµb¤\89\13'!  ûÆÌ,\12Ú\ 1±\9bìå\ 1    uì\8eÓ\83íöô\85Lþ~Nµí\0\86\ 1VÊp   ÈÝ]uêTÕéò×\83\98\ 6ø\8ei:¤Ñ\84\92â`\10\rh8\99âs<ãÏ!~\8d¤UX8>\89fÝç\1f\16\aý³\ 1\9dÐb\ 5K\93\19þI    V\ 6\ 3Z$G\87ï\16_\ e\ 6Ô\8b\a8¹H\8fr\9d©\92\88D\92h_:²~µR\89\92ø7|õ½5ý\-ûV&Þ(·íW¢¸Ù¨r©Ê4²ú\15sF~õÊ*'kkôÔÜ/çóÓ`Óè\ZX\8cbz\8bQ#ÓÆæKF}©¾=k³ËCêj&öÄC×Ü^xxÖè\9eyÐn-\r\88Ý\13\ f]s{ááY£{æá\90æÒZ¥K*D)2Y #:eÙ-¡\16\96m\ e\86\ eëJX»Ñ&};®Ã\16\1eí4ùÓ¦|±Ç\9f\98ë\ 4úÔÜ®Ç\7fØ\8e©kY\13Þ­!p\90\r¦î-¶^I\v2é«J\eG+mè\ fi\96ÒhKÿ\1c\13»BZU"\1c'úúÈ\97\89.8Óä4y+w»¯ß½æÄ4òÁèuÅöD\8e6z\ 1ÿ­Y\1e×ÒäÌöf¥\8cu7\9c¡®§F¡\ 3/ûµÜêI££?ÁCS*?Ár\17{s}í\bz\vñ]¦[´{´ÕVõ>píÚ÷\7f\19£§ÕÕ?\eS\1c×óAo8á1à\9cDn5\894EÓ\89Î\19ÊU)I¬\1cn\ 6t\fÝßþõ
-\9a%\93\8e\8cJI¯H\94¥Þª2£Tûe.©2º¨\9cåîk    \1fECvÚ\ 6d£fa8\89Ƽp©7\90\0ë\ 4\9av«½¡¹(\96\82~e\\94è²\94\89c\ fnm´ÏÖõ\1eQUyÛÊn-ÂIÞ¼R\99g)Á\98Ãà!m\11?\r>ûg'\14O\e&FãÚ{\1cG\93\88>«B¹ \f¡#\1fs6\8d\ 2kÿÖc\10­\85\ 5i¥/ -LA~\7f\96Ý*D\8fáÉ°°\18\99Ka\ 1çN\9a\ 4¨\eIk]I\96\1d\8d\ 5¨\90ä\83\0½ÃZcÁþÆÏ1#"\83\16\8dÚyË·¤K|\88;¡rÁÉ`        d\16>«Ò\7f\83PI\83\10Á¤ÝZ'\8b÷¨\ 2·\ e\94²`Ú\80\aÛ\11T»³\ 3¦>\87è1\92&Ò8¡Ø_¥quÂ]Dgðg}²Æ£ÆÞ\12 À\0/¿'ÄÝH}@õ\11Ì-\8d@\92A"ÃD\ 5 ²:>wX\1aÔ\8cÒ6\12Ï\87.\ 5Ø\9bKs§\12üÝ(\a÷¢Lé*÷Y\16X8},ü\17\98=;n\9aÐ"Z¬Á(~\96\12ya²
-ÍÑâ¦À¥\81Ì_ÎçµýÓ\vÊ@À\ e\8cÀ\86\8cþ¾<ÿ\ fÙ.SmêBï\9f%Mûõ¦Ñ,¦ÑI]M×\18óÃè{_ka½w<¬gõ\ 5\82+PæÀ`\99!$<Õ\e\0XÐ_ç\9f\823\95\ 6¼¥vØ\9e¢sóLct_\17h\8f\9cË\ 1d¤²\ 2$\98       ]Ñ      \1dã\ 5r\8eH6k\ 5ò|É^Q³¸\12\r\8e\18ÊÐwU\9du+eIËíN\14è\9c½nÁ\16¥\8aß%|\1e®S\ 3öPÚ\9cÖ\8e·\87\86 \9dM\18m´¤êrX)\940\9a\97ˬî\7fÎL\89¢.ê+\9cK_\eã+\a´À\99BD\8cÞÊ´éöÇÄ·\8dóCâÛÌ|¬\9b\17Ôq}5òGWÈw\11J\aR'-1ßNÜrç"\84v\80n{\810´ÝBÒ¨Á\19À½Îä«¢Ë\a+\9fQP8]"§¬d\r\9fK¦ÚBi¹\8b\1f$?¤åÙ\bãFi\1fD8kj/\1eÍ¢ÙÉ\88&£I­ÆóÓ\8b\ f§teô\17¨+}Ò\89çI(àå\84õb~  \9d\8d¨7\1dâM2=zV&ÇÓq4\9dÌðâ\89\1d\93 \1fü}qðçÁw\ 1\11¶æendstream
-endobj
-1156 0 obj<</Type/Page/Parent 1011 0 R/Contents 1157 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1157 0 obj<</Filter/FlateDecode/Length 397       >>stream
-x\ 1mQM\8fÓ0\14¼çWÌq\91Ú\10§U\12\8eÝ\ 5$\ e­
-\e\ 4W¯ý\9axIìâ\8f\ 6þ=Ïí"¤\15\8ab[É\8cçÍÌÏB âG ­±i æ¢*+4Õ\86×m×òZóë    §â¾/Þ~|\aÑ¢?1¥é\ 4z\r\86W\15zu'DÙ\96xpVM)\18gßôÏ\8cßB0,ã×u[6̸ëGÂbì\93±\1aáw\88\10GïÒ0òNH\81àN×ãAÎ\84\17£x_LTã
-Ç)\r\83|\9a\b»Äx\e\8d\92\91\ 5±w:M\14V\90VguÖ\14\9b²Î\9aò|öîì\8d\8c\84½QÞ\ 5w\8aør|\80\92Ó\14\v\81On!Í\ 3 :0áb4!\90\9cùÖ\0c#\rþ&Åóý»æ\e;qKÀ¡\7f¥ªÝ,\8dÍ\86|\0\ f(ñõðéû\8bé\129\bO!M\11&ðÏÁ\93\8cüE'uõÃÔ\9c\87Ô³±&Ä,ÍS*\17bÎÇ'k\8d\1d\987\9b_ôÚðU\88sà¡`).Îÿ(o\8dt/\8d\88\86Ûí6\10UsËèq·¿ßáèÝ3©\88÷N¥\99ýúÍÌõ_º­¹pýß·í¶l\9b\8eëf@ÓfÞ\87¾ø\ü\ 1±\89¼³endstream
-endobj
-1158 0 obj<</Type/Page/Parent 1011 0 R/Contents 1159 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 609 0 R>>endobj
-1159 0 obj<</Filter/FlateDecode/Length 1740      >>stream
-x\ 1¥WÛnÛF\10}×W\fòR\19°h\91ººo¾Ä\8dÑÄqb¥é\83\81bE®ÄMH.»¤¬èï{f\96ÔÍ1Ð$\b"\8bÚ\9d\9d\99³gÎ\fÿí\84ÔÇ¿\90&\11\rÆ\14ç\9d~ÐÇ/ü\11òÇÇ?:Ó0\88h4\1e\ 6SÊ)\1c\rð×?eôÐ\89\ 6a\10nW£it¸º÷\9cÓ \9c\ 4ç{¶ðB£Ñ\b\9fÃé\ 4\9f\11þ;M\8bN4\ e\83\11\rû\13|Âl<æ-òÄ.\aãi0¤Áù0\18`u\18\r\83qóÄ«ûÏX\1d\8e±Ëï\95Õ½g¬\8eÏ\11înõrÖ9»9§¨O³\ 5P\19O¦4K\ 4\fü\12w¯RUÖÚQ\18\ 5ôÆ®©¶te\8b\85\10õ\83Êç
-)D¤*R'³/\9d>õ¢!\ eèÞ;\93+·¡k\9b+S°Míl\96iÇ»Øa8ñ\ e{\83!ìa\ 1\ fa@÷N;ýïÊT¦ÖôQ«Ä\14Ko2¤0lL¢  Ò\87É¥^X\84±±+\8aáÀ\14+\r\86à´NME±Oà\94ÊL«JS®¾jª8ú:UµØ*<Ä6ÇYµ\9ag\9aÖ¦Nù@É\12þi®*\13\85\ 3\1fîÂdº¢J»'\13ã\vÜUù<`+REB©ÇJ\17r"ÿ¢\92Ü\14¦b0KUUkë\12ÒEì6emlÁ\a\b\9c\ 1ÍR]áÄzm\81viâêȳ\ f÷      8%>KM²ã\90ÄnIg7 ´`Ömc{ì\8e\1eO\ ew\vïew\8bp\17 \15¥ZjɤNõ¡\81Ô\b\fºôz\17~\ 3óáÎöè.Ù\85¿\8d7ï?ÏÞ\83\r`BÌi\alpL\a!\10è\0Ê]ªøëÒÙU\91ø\8dã&¡\b«ý\10d;\ fú\ 3¡ÏŪN­û­¢;[ëßýî]B3¦BbãU®\8b\9að]ñ\8dÏM¡\ 4|\84\9eL\ 2\7fEa\v\9còjÇíûë+\92¸_1\1e\92!õZ\1a4ûîf-Óo.>¼BÜ\16\14jýÁ\e\18V­Jí*\9dàÖæ\e\8f\86\0ÐÛ¦3 ¦>\9d¿°\17øT\8c\9c\ f¥tÆ:®?§=\93¹îR\95à²Ü\12\89d\14«RÍMfjÃô±¤âZ
-\93>\9b"±k@3£!då°6\8f\12ÚU*=v\91úãI\0{d³\ 5\9fÒ\1aÜ@N%®&\11W\80mUÄ\1aá.Ll\10\fÒ-QP\84ª:òß«êMæ9µÃ1ñ:\91Ù%'½p6?²\12\89D}Èt\9c\19\fÅ\ 5Ã\17êj\13£xíªÎLÁ\0¤À¼ÖeE\85F\85V¬F\bæ(Ýý2÷\19²\94\11\12\ fèV\98²³\ 6¤©zBæ\84âýÊÂà-X\ 4¸ªÛ\v29´\86\89Æ[8\f\9cväv\ 1°\98y
-·µ\81§\85\b\91\9c^X\ 6-Ëì\1aLÙ%ÑäÅ%/g=«ö.}º»ýû\9fÛ»\87ÙÅÛ·AZçÙáÆm5¾ \85G!BU\9dè\eRc\1dmU?ÁWçP¾Ù\86æ^\80A\83Xk\96ê\80.\10\7f
-\93¥µ    ¨Zá\14ÐBÔøE\1d9P'\16\1f(äòh÷6z©\18ô\99\ 2g\0ØãÅp\1f\0KUjWY"×Å! bD\19Ðõ{Ñ\18\r\15\88xÏØzvÀ5Æèì&nT¨\87råa\ 2Ç<Fã\89ÈðÙM«:²¸\r³ÌTÌ\ 1ª-¯Ï¿5\14æÐV \11eúI£rt¼r ÅÏûrºvF?yw\19z\ e«\b{\0µÑ\89XPQ\16Rdªá0\8b\1cøÝ\16Øù·³»ÙAê¿\10\8d\95H\1e»Î*´Àåã\89Ï\16¬\91&úó'·Ñz]óºBÕ\ 6U\9fSi3\b\91\96æù\7f\17M\83ð|Ç\8dCj\95\86u\84¡<$\19\v!\17­)âlÅòîÉ.sQ£ÕÏX·\1f\84ÌHµ[Uõ\ fÅ{È°\87\8bw(¸\12iû¦&c̾#Hÿ³q¬\82Ê\9b@\aà¥\173&\82\8c+[.ÜÍø\86ö*î\12[P'<ø\10\84¯R~¤8F¹-Ð\17K£-Á\8b\84¥£!è\93Q¢z\9f¸ Þ©\ 2Bà¤\89øÐ\7f\ 1\9f\v(.\17 ë{\v\8b\14÷3PZLþÔn®\9dõUÃæ\10ÿkÃÚgÝæûI¿$\ 6ÇÔº÷=\1c¼i\ 6Ñ6¢­*ÀkC,\10\ 3s«Î\11\8bÐOµ\8cáÞ\8a\929Á÷½\86\86ø\1d¹t^µ¹· \ 6k\eÛL\10n[ö.\94¦¤\1a\826ÍY\9a\ 1·¸Z£\ 5$f±À(\8a©Jôän6<bË¡1S+Å\15̵.¶Ã\ 2\8ei|£z8©Êæ\80Åä~<â\97\8aF­o÷[ë>ec4\r\19ÓU&}   qa\9e\93b\84¬E4\87ø$~\1e\10Dö[\0F\9eí¨Ï l\v\813éa\82\96KÅË    ?ãq«éW\0_8\95«8ÅÐARÂ\98»b\fCµ§Í\17\8b©\1f´k¦\15\16YöáQ9p\80qW\9e£Ñ._(\10HÀDð]\15ú       x\12]+\93áíc\15§Ìgi\1e­\9c\9e\1e+à)é:\ e\ 2y\7fC\83\1c\0Þ\84Zzµ\ 3\8eɤåì\15zUêØ`\9e\93    o\a\v»Ì\e×8j#'AéTÍ\13Ë®\89@\96\v\8d×\18?+a\80\88uéç5جM\96\81\ 5\9cñ\9eG\99\9a0\16'd\v¾G´±\ 5þ2
-rmg7Ó½×ÀQ0\19\8c¸ûþÀ[êÑô{ôf:\9c\f\83Éxêo|<åè^Ï:\1f:ÿ\ 1,nÞ\15endstream
-endobj
-1160 0 obj<</Type/Page/Parent 1011 0 R/Contents 1161 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 656 0 R>>endobj
-1161 0 obj<</Filter/FlateDecode/Length 1503      >>stream
-x\ 1\95WKsÚH\10¾ûWôek\89+\b$a   6\95ÚrÞ9¬í\8d¹lÅ9\fÒ\0\8a4\98x\7fý~Ý£A\80\9d¬íT\80V¿ß­ï'>\8dñϧ8 0¢¤8\19{c\8a¦3oB\93i\8cß\ 1þ7\9a\96\8c\0)\7føüñéýI8\v½3\8a\82    H
-\9a\8cg^ÜA9]\9fìÃÀ\9e\85\9e¿\8fÝ\83\81\8d'Þt\ f+Føc<+(à¯H\0\16\eø^Dgá\14\ 6\164\8dðe\81\1e\17Ä ((\1e{\ 1\9d  °ÃMfgxXPÄê,Ðã¦\13\91é\8f§ðg"P\8f\8cC\11\99Q\80\1e\17\ 5\183\11 Ç\85c\11j\15
-°Ã\853VT\90ï\87 ±P\8f\8cÎz\85¡\0=.\fÅ\8b\98IB\ 1v¸`ƱCd\90$²@\8f\8bg=_ @\8f\v#ËÇ\11\r\ 4Øáü\99upÂj-Ðã¦\ ]´}\ 1z\ì÷ú|\ 1z\`\9d·2\ 5èq~lù8\83¾\0=nÌ\ 6vþù\ 2ìpH.'~ÆÜò\9b
-\ 2/\91\86\1eD\8c\ 1\9a\9f\8cÞÍÈ\8fi¾D\13D\88ò\94æ©\14ù\98æÉÀ\ f¼Ð£×U¹ÌV\9b&+WdÖ\9a®U±Pô¦*TV2Ò4U\9eëæÙü+ÄM`°\157\94Ò\9b§\839x\96\1aj\8d®       LI£\95aq\8a¶Uó\8d\7fY¡Wo^SÖ\92©hS¦\1a,ªLEg­\1aUh\83GTêD·­jîXR[,¼\ 4öyô\91¶Y\9e³\11c\1a¢¢\ 2x2(+CÊ\18\86\856z¨\7fÔ9ÛÍ\8eì    ]kô¸\82æµ¾#\85ßE\85\ f³VàOõ÷\8d2:¿£¤º\ 5]
-Å¢çp 4+\1a\88Xg\13\15ÊÒõöÔj¥\ fY\91\vÌ\17°zô®j ¡¼Õe¦ËD?¿g£ºÕ´Ðº¤<+¿Á\8cmfÖB¤\12³Qù.\18\94ê6i²ÚdUéu\11   ¸l\10\91\ fì(B¬JÒ?TQç\9a\98\ ecM\127pæÛÇ.\9f\ 3ZÂ<(\92´\81\9f\90«?\1cëÌ¥\9cG\b´|^åÕBå_:å2¼ð\98ð÷\82^©6K¨Õ\r\82\89/Ã"[¡¼\17P\19vCÇ^j³È*T\0J\81é\aô²3\1eõÎ\16\f®.ß_\1eÛ丹ÒVMµ©\1ff½8ÿtññüÐ\f\97\1c\8e\8e(\18Z\83äsçÏVS»®6yÊáé\8a\88\1e\¿y\95 9\85Bõ7´hª-\?Ô#\v\ 5Epè.<Íõ­\96\9afW£\89\9ax#@}Ýè¥n¸ ­pçØ\9d¶áì);kþ\8flßÒca»Ü¸ <\18\8bV'\18\14æn\97\19\14\e´þ\ 6Nãa\87})ðͳÇ\84Á19\83XÒ!ß/-B+5wµA\90jÕ¶(\82\14ÅËÍ\8eið}\935ºÐ¥±ÅÍ%}(ùáÄt"{\81Î4\17øGÆjS×Uc\©äÕª*\1fÕ\a]6{\ 6®\8e§éÞÊÀÃHl\r\ f:ÉNÝTË,×í\9f\8f\89\81(G\ 4ÌÚ9\7f\83¿ß.nn\9c\18@\9bCI¿Ì\93µ\88'\93Xó{KëªÐ\94"C    lÄTF+Y¢®Û2#âû*·ãeÁÃ{SrÆ\95y\82/i\93ÝîÆÊ\a\19m¼Iº^³þ²Iûþ2l\aÙ\13½mk\9ddK8E+]ê\ 6óÐ*°sÛ\96c\9eK$\8e{ÙziÖ\b\95D«Ñ9\96)VÃéé\9bËëÓSI
-o;^q\9f13Eò\17Ì(\94ýaB\1e.ï}K\9c³òÌK\8aôPÀO2úboI\8bZq¨+[¬¸½\8ba/Ľ­\87J\1e¶r¿ôF\9b\19Éð\1aµ|\9c\8còl1r\9e\8b°>\918=RªÊüιæ\1a§'Ùb\82i,ÙV
-ìþ\96)\8dJ\8bã\eÀ\85âg»â\85M\80D\82\9b\8e÷èAÛ\1dÙùÙõ\91]¢»\91ò\88hàÆÁ\\19a\91\8f\899\92~/
-euD!7\1aZIµß\¤ÆÑx|DÕ·ç\ 1\11î¬î£ã\ e
-·>"Þd8\11y$ËXN°¢q\95TKª«¬4r\râ\80[ãjø\17§\8b=ÝÔ\ 2§\18_Kr\99¢þ»K\aïpCwê¼}`òË.Â\84Ð¥Zä:µG\97Üz©6*Ë[\94\ 6\ 6Ï\96û'å\16ÊÚçX\14X³x"¾ï\r\89Ø;7ß^¼þôÏÕüãå\85·6\85=Fwô.\ 4\ 39ÉFï\92îà\1aÆÞÔ'w±Þ\ 4\1d\8eÀÇËÞt\16R\84÷\1dÙû×ç\7f½:§«¦ú\8aÑ\88C<Ùð\ e\93 °\89C?Â\8bë4¤a\1cà\8cO\9f~Æóëh\1cMñN\0îhÆBßÎOþ>ù\ f²Y\rLendstream
-endobj
-1162 0 obj<</Type/Page/Parent 1011 0 R/Contents 1163 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 661 0 R>>endobj
-1163 0 obj<</Filter/FlateDecode/Length 1744      >>stream
-x\ 1\9dWÛnÛF\10}÷W\fÜ\ 2\95\ 1\8bºX\96ä¾ÙNÓ¦\88\934QÑ\87º(VäÊbBî*»KËê×÷Ì^taä¤(\928æeçrfæÌáç\93\ 1õñg@\93!]\8c)¯OúY\1fwøÇ\80\7f¼ÿùd4\1cfC\1a÷ÇÙ\94j\1a]N³~¼ªè\ 3¿O\97W\17Ù\18Ï\86\93ì2^ð£½Ë\9a./³«½gþØô\ 2&GÓ  L\fñÏHZx{\83«É\97\ fnf'½\97#\1a\fh¶àXÇÓ     Í
-\1fj\9ffyg¶\94d¥y\94\86êÆ:²Íj¥\8d£B×¢TTé\a­,        U\90 ³ÙG\18C\8aÞXçO%\9d\7fþWx\90¼tÈ.\85\91áf\1eßî"6FmVtî\87ãI´\95\8eø\87ÝÁ\ 5\10Ã\ví\98æ\92\1cÂ\8c!ÕÂ:D;7z\8dÀ   AjSà\97\856ôG©
-ܦ¼*¥rä4\12È\85\vçc\9a\ 2épl}Ú:|q\9bÑ»J
-+\81æ\ 2¶p\90=>
-SêÆÒ\eéÖÚ|¢\eöYª\a\84\9275<\bWj\85\10òª)dAëÒ-q°´T\94Ö\99rÞøç\88¬å°\90N\94\95Í\8ea4\1cg£g`ê\ e§Ùà\8aº\97C\14\1a@][ú ê¹@\1f\f\11\93´¤´#½à\14\ 4åº^U\12É\97üÿ.\½ \a£\9b\15ÕbµâlæHOJµEïÍ,¼àëÞ\8aüwU>¥§÷\1d\9f+Ò5RTÕ\86>7%Üy¿%Ã^0\90òiUq+á¯@gpsÙ\95ÈåýÙ9mt÷\9aª8\0Þû<\9c(ó@\9dØ\ 1­\88DQôÏèð\9c\1fG\7fÎÖó,×jA+aD\rHB·\94
-\95©C\r\ 1J\8e,\1cãqú"4ÿ5[¶§dݦ\92$ò\7Ê¥¢]Ñ\0\93´@Kw/F¡b\83a6Êè6\99¹\13ù²T\92f\86\aë:\1e÷³ô«.\15{ºõ}jcFÃ~°\13»/DÁÏv\13\f\87±/>ê\17\1c8ï ÆG(\87\88m\91n¹¥p|¿±¡$¢Aw+çkÄ\8d\12¦%\99»ï\18\81ç\98\82¥à\9aá\94¹?C)[Àó\84\84ö\v\93\95Ñ«]\ f\ 1c\80§Á\ f\9bó0\12ðÿIé5,r\80§·èÎ\86+\11\81ÉN\13
-±ÿg0¿\12Öbò
-ô4Τ\0\ fó\15¹\83\aÖ\13O\ 1BC-\9dg\ 4üÚ\80\93u£8a\1eØ8§\92v\10ï±Á­VÎèª\92\19\ f³GÔ\e\86\16è\126\89\8c|d\9e\ 1L\8dbPµ)ÿ\ 1Ä)Э\1f\8b®c\16¹yõö\ 3)¾X\18]·ðü\18\9b\82q\8d\Ǽû\80áá^A1¥E\9a:=äºôÂ$ÇBÛl\7f\86ùð°\8fm\14êëËßr\99\ 2=@Ô\9e\13\88kkéêik ÐL0\19ý"U.ÏQ\91Ä·Ûw\18+\ 5P\98\7f`TR-ë9®ô¢åY¤,æ2\17È\84JÞ9\91ÁVÚZÎõ\99\92Ã3RsK0ó\12\85W:,\9cmÝ·°\a\14[\9eA\ 4©¼ñIbÜëm>ï^ÜbêµA<\12C¶-è\ 1NÌh\«\ 4Â{ùÀ¬¿Éè:Î\ 5Ì\9cÓR¯\19\90óh°\15Í7̯ÑdÂ8\94\ 4\89\94X@?² ¬òî.î0\86±\v¢§"Åç\9bÏïAî}ØáÆ¡×BÝñx\ 3IðývÐ\0è\12Yßw06\ 6½]mØÛnëïÍ   XÕ\1f\ei\97wîÏxn\127Ä (Ö\14¶Ù%B°¤\15v\ 6\ eàè^LêàYù°\83\88Ý®´*xpüÊÚbã6+Ð\0o+_`\8fÒa\8a\9d\9etyïhj\19\80yÙøñ7Ò\v\ 6\v2©*\82AùXF¥Áæº{@)\19h×/\18Ù\96QÏ{#àoJi³û³\10á¡\98ú
- I(\\\85]\81r\80± Ê\bB\86Öbãy$Æs\9c\ 4¾è2tK#ª¸%µÊèF{µ³-4Êú<ðÞypXÐ|\83ÁUÅÑ2ÿ7\89xúVuÑ9ÝEµ9Ý\vi×vG\93òLÞ8lwÞ}Ü\ 3{\11Å\19\82j\zíºW@W\82±q;mJ\90\1c\93u¨*ß\ fDã»\ 3*4­\8aÝâãw\8cä%$\15\vEh\90¥.PW\1e\14®í\9e³¯`X\8b\rÄÚ6hl\9c½Tà¸ö%ª6G\81Mã±7?Ð0\90\9a\v0IÔ\95ü\ 1\ 1\85Ì £Xò[¯hÀ\1dØÂwGEMhÏÄ\0HfÈ_\19^È/JÃ\9f\15\98\8fR\84±f¼Ö\9e#Wߢ\87ïÇ"|1Ý-\ 4\13åÀ_\blûÉòü¬ÅU\9f\83\12\81p¡¡Û\1a\96úÁÀeúæ¡Çrµ>̶\83ï\ fÂ(\80S\7f\10\85§6ó\83\17\1caK\ 5é¥XirÇ\81ùX\16·B\8e£¨äú\80®°ÐÑ \91ø\99ËX\8a(HjÁ\92Þ\v\1cA¯KÕ<Ñ\1c_/Å\81\1eó\13|ÀÜ©\ 5\8cÖî»vf½Æ\9a\9e\9d\97
-¿HÃ\99t\1fh\0ùÐ-¨WÈÇ\9ej@tÝ<bz\91 9M£\ 6\89µ\8d\17\97;̺\96zlw!*\e?\vÓé½¾\8ffþf\13­Ø¾\ fש\8cÜ_Q$\1eÍ$P7u«v¨ßv1\8dY\rÆø¼\9e^ÐxÌ\9fVhå\ f×w7×ôÎè\8f2wÐ\8d\7f\1c\7\1dèN\86\9eÁþ÷·\0\v\8b\9d4\1dMFÙd<\r\1fÏ\93>»ûivòÛÉ¿aÛ"Wendstream
-endobj
-1164 0 obj<</Type/Page/Parent 1011 0 R/Contents 1165 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 666 0 R>>endobj
-1165 0 obj<</Filter/FlateDecode/Length 1648      >>stream
-x\ 1¥WkoÛF\10üî_±uRD\ 1,J¤dIvÚ\ 2qR·)\9a¤\8dU\14E]\14'ò$]BÞ)<Ò²úë;{\ f½\9c\ 4\ 5\8aÀvÈ{ìîìììòãIJ}üKi\9cÑ`DyuÒOúxÿRþõî\a~Cçé(\99PE£Q2
-\ f%ݸ¥Av\91\8ci8\19c[\86\9fZÒüd0\9cðc6I\ 685pÇü\13\1fÛ\7fÆ*\8e\8eÃ^·º÷\Ñ0\1d&\17{«ìM\9aõ\93ôØäÕô¤w=¤4¥é\1c!\8d&c\9a\16.\92>MóÎt)ééô=öà¼ÛÓéÉ&ï­\84µë¯ÄÓ\1d\92º©7´VeI¥²\r58]\89|©´$-*\89¥fI\82N\1f\9f\92X­¤.dqFk£\9f\14w\12KîbSók¾\86ß²\95>uÓA\92Á·\8e ÝbÅ.%~\v]\906´4¸¼PµÌ\eSo\12º65É{Q­J¾sß\85\82\9e\14fµÚ<\81Ù¶,\82\9f\83ÜsÄG[ª\ f\12\81*{\19qºðPv³a2d\87\9d½Ç\97÷\97çýsü¤acFnc'x÷·Vù\a\ 6éà\9aÎe¯\90w=\8eø²7Sº7\17¥\r["îp)\e±¡ç3s'ÏB(YÌקï\8f\87;\94\vM3À¤7TH\9b×jÕ(¤Âåk\ e\1c9\89\10í\19©D&gt%¬¬ðüÂT«¶\91uâ]\8e\16÷ ÚÚÞƵ³+fÖ\948^n¨jA\16øÀ¦ÞÈæêÕÛ\eoßÌ÷ÌScxÓ{\ 3:\15üÀÛ\vS    ¥\13\9aâÿ Õ\11WâÅ\91lñÔ\17\8c â\e\84ç\9f6\rJ37\v­þñi&a÷(ÕÔpýȨÈsÓêÆ¡ârãiðƬá±ðU\91\9bº\96vet¡ô\82~Óê\9eÂ10Ò"L©)¯¥h¸@8N-ï\e²\8d\\91²\1c\85_tKÞÝx\1c);ò\87\8fû\ 4Rnt\ 3¸Ø&¿]£\84º\1f´YkÂËF\89r[+.°­O±*\19\ f\94)\f꺵á6gõP\ 6ë\ 5õ®Ï·â²-a[ͼ\80Üv&·O\ f\ f:\11u\awTÉMUq¥\ 3\19»do\97²\96Ûz\8bÚ\85*ðH×Æ4\8føÖ\9dñ\ emmRWP·
-U2xP%\ f\98º\97Â5Ûýl}=8Ùq¹\ 2Ρ\f\9eØ\ 3v{Ò¾{õ\92\ 2͵\Ç­[ä\81öBjY3\13\8eò:¯MåÒøÛî\8aÏó*\14iÌF\96%Y?\85r\8c\93ÉÀéêO¨+w]àÊA\81\91ª*Y(xQn<²1;\í£¤?:g\ 5z-t+JT´£'\13c§¾\87\8c\8a´A|\95l\96¦\88\8f­º\13\85aùÜ=GPDò\e\r\83¿+]\98\9eÒ//_ì\bJ§7²¾\935ÁK±\90õ)úD\84°Qh ¨ÍõRåK\87B¼RÙ#[¡,£\94¸\93»c\ 1<\16)Ô)rï\ 5Ê5ª|)ôBú×±¢ÎhcÚ:îz`ì®-9ù3ô1ä\ 3J­ÐbÛ\ 2\ 5\ 6xÿ¸\a\81î\1a.»aÁÎ#ö=gx\8e\82S\9a\e¤Ðå\8b³SÍdm#G÷Âq\rÚ2¤dÚ\ 6FKQ/\10°\Ô\12¯æ@\1e~*\rEªD£\90\e\84`Û|ydÓCf\13úô¾\1f;ù[\8b\1a:ÿ\15oî]_P\8a^:\a_\ 3o\aYäm\9a%Ã$Kèô­î"Òîu¹9¥\17¬\9dl\12\ e\13È\94µ\9a\9e{uvYÝ\9f|P       Ìà)c\ 5Á\87ÚÜvXsXýÁ}\1eUn\9fÒZl\ eh\19\83\15\8bÖ2\97­Âô\ 1\14\91µ²tÒ/Ccq\90=\10é}I¯Xé´\94°    F¢\15p\ 6\ 3³põ';`\05jà\8dÒ¹$\89Ð\83ÕOz\8aèPnèDÈÞç¥ã\8c  å\8b\94\a\ 2Ñ6hº\8dʹÒ\8fsép\ fíå ­ÁïÖzq°íj\85\81¢x\86¸ðzë\ 3P\9f«E\v­\v\99CØîþ\a]¥C¢(<¿üÄr¸-ö\90\ e\19\f3`\81Ò¼a7Äî\8d\v     \eö\e¢ªuB§Ûi\93\9f\ 4\1cZhÉèB\12Ròì\v¨¡t@\16\8cknj       ªáüÜͲèj\ e\92ãYáJ2e\80\r*>α\ ezz'\8b\1f¡S#ÌÂ?+ÝÞ\93Ý`*¨\82º÷ýLÉ-+\f\9f\7f.J3\13å_Ñp\1f\1f$ 9\11=¢o\92$©%ÏO,(¨\94\95¨!\13\98è,V¾{xä\b\96z­­{\96\aS.v^ï\16´\1dY©» \14\9fC]K»á\95º¯éë6tÑX×Ø3ÀçEÑqÕ<H\88»Q\1cS^¸é3
-îK7ñ\1d¦\8b\ 3Þ\96ïª6¹,Zþ¢\ 2[£N\82à\a×\ 4\13µ\ 2ý·:\89¤ÚÀ¾ÐG\ 2´£0)à{o;hÄN\93õû}ïP\1evuÑVù#\11\11Ýf£q\88v\12VÓÁ$\99\\fh4\1e\83M7Ï__A\8f\1e\9f0ôÒä-\ fØ®\10øb´X|(N\ 6Ô\1dgîÒÿ!zÃñ0\19\8f&Þ¹qÊ×\7f?=ùõä_Ï\b\8d\11endstream
-endobj
-1166 0 obj<</Type/Page/Parent 1011 0 R/Contents 1167 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1167 0 obj<</Filter/FlateDecode/Length 1770      >>stream
-x\ 1­WÛnÛF\10}÷WL\8d\0f
-\8bºØ\96ä\14ha+q!\14\8dÝX\81Q@/+r)mLr\99\8aþ¾gvI\99b\9c4\ fÉ\r\ e/;3gÎ93ü|4¤\ 1~\ fi2¢³1EÙÑ \1cÐùÙ4\1cÓùt\82\9fGøk$%G×\8b£þÍ9\r\87´HøÙñtB\8b\98ðü`@\8b(xØÈ\9cÊ\8d¤ÊJC2\95Qi©ÔôI+\7f=J\95ÌK¾$(Ö\99Pù)=¨<Ö[K\85ÑY\81ç\13mHä$¢HWxVä1\15ÂÚ­6ñëŧ£\ 1õ\86\bq\83r#JRü¦zR©\Ëø \98\ f\10Ò\15Ý\8bl%HÄ\99Ê\95-\8d\93Ü\aX\ 6*\94á)2ª\1f«\ 3»Ó7Âv\82\1a­Ëç\88\96´¯Ì¿\8b²\9f¤Y¾¦¬²%­$¡Zi\90×\ 6ÿþæ Ñ\85ä\ 4ðÚV¥)%B¥¤\12®\18\ 5ª\\98\9d\13µA\ 3Õ®\91|\1eÒ\ 207¸8ÌÊ\rn6ÏÙ\8d®Ò\983°²Á[%  ²\0¤û×P¢Ë¾\eÌZ\1d)Q"o¾Ó¿\ 1;\Ë\83¾,£¾{Ýõâ\99\f\ 1Wjv§.\13+£Ê¨r\aÒ\b«s\eò)=4n4\ eϹq\9c»\95Ö2
-\8frG:qÐ|·M\82¹$ð'G¨Èì
-\87!¿Í\84A\95¥Ê×|L§\98}±u\90LD\e\95K*\r·¨ÆËÃùâ-ß&\0\19¡\1a\86Dç=Dé%)ªÕ¦\13­*b÷\10:ªpz\8a\1dÉ/ \9d\87¡\7f3®Ál\11¹\91Àû\85Ç»\91X\e³¹Çè\e9\ 2\98&¿Lä\95H]v\9e\9aó\18½Q\89\8a<ífhúZZÊd^y~¾\80\9a×\ eå"\93§´ªJ¨\95r\10?ÚÈèÑ5k¥¿ÐñÌa\ 2éÌ Ý
-T§«Z=µàß:\91\87Ç4ç\@ÐHX\9cøu\9b\1cDÜÁ\97\vÄ\9bð\94C}ï\9fÔ.¡ZîuC\1aª}\176\9c
-+úVo\7f\12zl`?     6öQ`Ôá\1cÀ¬Í\94=4\922öBYi¸\1c\8b£¡×\88mº±»\9d®¼KÙª(Òݳý\1d¸d'Tc/[6zoØ2^¾v\ 2ïßD5³{\93p:ÄÏÓpÊj_\8eÆ\93ÚH.i\88\89\91À   ¦áð\12N~Q[ùp\14^\84Ì¢\f\96pgô*\95\19k=¦wÆhãLøY:\18=½Ñ\ 4ó        §ÏA©\9c©©ò(­bø:\9d¼:ÁÿðCÃ\10¦q\9dc#­\96\e]ÑIûA÷î2(w\ 5\14\ 3\1dÁͽ*\7fÄ\ 5;&Ã\81a å¦ÎJ\14\85Ìc\19\87tc¤¼¾\7fË'³Ê\9b\91\f¸f\8d\96\1aÂm²;[\ 2\89?\90ÄVç'\10`£87b[G{Á)ã4ë\8am\95¸àaáQå\81©s4¼V(.¯\8dÈöòÊÄ#Ì\11Ï×\86®óH\ 2È\18ª\85£a
-?bàJ\93`¶§»\90îõ>¥n-û\f\83Oä¾py¸á\11½hæ
-=©bë¯5\r
-X\9a2FÌV2"Æ\88t.Ï\87\85tk\9aèüÐv£Ó:o\ fzsj\v`\1833?U\8f(ÈÕj+ì6|\ri¡MU®>W\92\ 63\7fK¿ø¬\ e©}9òs¬ÅìÆÕ\1dõ{ÃÁEÃε\9b¿\98ÅÇÿ"F3\116\827\10\8at\9e\ 3H\9e\83¨\96\r3\fá\99\90îñÌ\93ÛmPÞá\9c{rÙÎÖEê´Ñæ\90\13´\82Yâô$U\11ºæ\18\88ÁÉs\88\ 1ĸä\0\8eQ|ñY/\87³ñ°/\a¬\ 2\976\8eÓ\96w\18\ 6\11K\0\97²§i£¬\83#)Á®çÊmn«ÒÊ\94· ¸\ 3\11\aoµ¯\ 5Ø2\90á:D\ f¡©\98\80\12*AlAv#ÐÓe\0\0çw³W¸Ì\0\ 3]¿aܽ\9dù\81\9fè4Õ[®=\82óppÞÉ:!\8dÌØHa\ 5\94Ë\92\ 5à\83µ\9agßx\8c\1a\87ha4{³\>Ìß¿_,\97¿û\87\9eI\8fã\1cé~¥~g\9dj\1dpS\19dn ¾Ã\ 5\0Ðc¥­\17\fx^&³\15(\v\ 3\12N¥k£«â\ 4\1d\99«·ìFÎ\92°.ð\ 5O¨N½ÜE\86¯\1e6\80q%bR±\14À\91oº½ÕÑ\9a\az\86=N¬%ÌÛí\15î\\ 6ÉÅ÷ÑÐ\13«3\89ù\ f¤e\8a\ 5 \13\12"\8f5V\12¶ñL\94¼Gl\91÷)\16È\15Ömìæh\r3K¬ñÉðò´9¿ð\1f\ 5ßÖäÅ´µ}:_åÑá\82¦zíJ\ 3M\96Á\fcr0¼¼Æ\Ã/ß´Æ\95Z\8d\99;\84x'Ù#I¶\8a\91T\98\enm\12    \17S\15°Xï\LÏ\nq\11\1f
-n\ 1>X~#\8d        6'\8f®sɶ²k¬OéxÁíü¡\1aNé.Å\1aÎ\v/\ fy\ 6\90\8d\ 5B²UZrÕØ\9eÝI\9d¦´>\97´©½\82{\83\8f4î#\9a
-Ô´ïF{Q]0+t\84O\0ë\r¦\85Ï=\1cÕ\96\9a¿\88\90\86\87\11\9fqX\9eû\ f·\1fþúóÃíÇ»\10\8f\1fÂ\1fðô\8a\1cÑx\86¢\ eùEdEú\15£\98§µp9|\82ÏC&\91?íY\816[u\94\17\90¨J,­¥\1fþµ\91±ÖÐ5Ø\b\88~k\1cWX#v\v÷a4V\ 2k1³\14ûV¹ñaþwfLëñ7Ä·öôò\8c..Ç~jÜ_ý}}ÅkÐ'\f\a\8c\84¨Â²^ºõ\9d\8fî\rÇø,\9f\9eQo2Âww\1cüÈöt>9\ f'ã)¾ôñÂdÄç¼[\1cýsô\1fòß\fdendstream
-endobj
-1168 0 obj<</Type/Page/Parent 1011 0 R/Contents 1169 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 669 0 R>>endobj
-1169 0 obj<</Filter/FlateDecode/Length 1815      >>stream
-x\ 1\8dWmO\e9\10þ\9e_1ªZ5\95`\93MÒ¼ôË\89\1epE\15¡\a©ÐIH\95w×!.»ëtí%äßß3¶\97lÒR\95ª\10Çö¼<3óÌøG'¦>þÅ4\19ÐpLiÑéGXNfÑ\88FÓ        >\ fð¿\92´ä\r\1cå_1ÿºþ§3\9eDS\8aû}ü.(\1e\ e¢aXåtÓi¯±;\9eíï¶ÖØ\85¦Yûnk]Ð`ð>zßÚm¯±;\1c?[ÁzÛkìNãhÒ¾ÛZcw6\8bâönk]Ð0~\1f\8d\1f\17\9dÞù\88â\98\16K\ 6k<\9dÐ"s\90ôi\91v\13i7R\96ô(+£ti\18ºhrD\8bù?$Ê\8cìJÒ§³\93SJ*Q¦+Ju&é®[j\v\80S]\14²Ìdv÷.¢\ 5Nê2ßÒFlÉêw\8bï\9d>\1dÇÃh\0\85ÝTW8o\9d¼u¥\93\\16¤\fÎA\8c±\1aÁbMºR÷ª\149eº\10ª¤\9b\8bS|\87#\85~ô'ÂF\9a+YZZVºà\8b\aÊÂ!¶¿\92ßµ*#>Ð;\a0\ e\87\96]lu!Ò\95*!¿ª\8d%\91¦ºfÙPlW°\11^®k++\92
-ª*Ø&\r1\0òIá<\8eá\10¯qS\1a£à[Ð×à\ e}\831\92\138Ü®\0ö\ 5T1FĶ9Ç\83Å\17t/=F\ 5$\89{I¯Ú\ 6þ\91i\aXüÞÐW\11Ý®\84}khSéòþ¯p¹±vÁþ·Â\95\8aÚÈ\8c\12\18\ fܾ\9cþíü^\89GUÞ\93 S++àþ¯\11\8dèbI[]\93@´kÃW ÅGfðsdD\96á\14ð6i¥ÖÖ\9fk\10íR!íJ#?5¥\95\14V6qCN1Ä.r\e\19©2S)\9f°ð\94\94¥\95ðñÚèêAf.V­\8c8+M\1dұɣ¬@\98¼-[c}æòe¸ÐÜn\10\91)¥°êQ¢\14ÔÎag¥\83\17ò·RȤB\94µÈq8Ø-·0\10ÙÎ\81K¸4½\7f\19òÐ\95P¾u:\8f[&_\8a\a     ð\9dÕp\911v"8H¬fÛÜ\rIýB\80\80\14\99"Y\vc6\19-\15\ 2©]z\1e¤Ô\8d(\12ÁÑßE4\ 3  °\ 3M\14B|EI2S(oª\ 4v¹ ðÕsì[Új«re·G\80ãá°\9cw\9eµ5\94¢\90\8eBZ\15<\97öãÅÕ\r¹½\rÊ\15Iùöõ[\12ëµã)N\17$À]\97\8b´\85bSçßøök
-\9c\ 6P\v¦\85\ 4¾Á\e\87&pJ4\84÷¤M{\ 1®\86\ 1\8cèFÃ̵ÔëüÐ-\17¢J®ue\1dx\9c\9ce
-\ e\ 6«0¹\99:)Á\ 6\850\ f\ 6ê=O3\ 2\1e\7f\94\ 6\99¤ç\v
-¤èäúJ=\b\9c+\8a\11\1dd\r$\eø\b\7f[60       :W\83löÒ+\ e\14\97\86Â=F[EW\9aM\99äî\ 6ã        ù\82m(×m\1f\ fâØ·\83@\83¢\9aÖ`<M¹\ 6óó\a\11ü;õ-ÀQ¼ ùbÔ»\1d|&.;cQ_º<\ 2\8f2]
-p\81'K\91è\1a\80m\ fÜnh3\91\\7f\992ÌQ¾îw½\91ë©)â\97i\ fi\7fr\89¦\92\83\83õ=×\8c\8fÇ âÖ\896\bÊt\e\ 6\84S8Á{qDW\\ 3\aÆ\99-\0Ð\ 5·\19&+¤Y]î\1a        \99\15"b¸\ eç\v\a@!\8b\84IÑEß°pN\89ÀT®eaîÑy®7pö@\97¬*îV%3\ 4D\14I\16\ 1ö\ fÄ)\9c%Èä\82?Eé\a\16P»ë\ eÆÓ»wì÷\aú:ÿ<¿º\9dÓÙõõÕµ#\93¯0äÃ\81\9a7L\95\97\r¦'訪ò\85$\ 3ÅjÔ\93ë\17ì\ 2_
-:Ñ\8dP», w\8e!Êõìn\8b,\8e%ítìBØ=\ 2\16@ßµãªp¤\9aéR\1e\1dØ·á\ 6Á$Ùt\8e²¡­gfm¬¾(Ñß3&.íR\ fõ\81á\80©®Ý\18}\80ûG\9Kuß´\ fï@ÓÚºÁ9ÿí®\91á\8e­tNË\p6ùmÌ«\87\93\9b"Êz\86   øP\8eãkt6\1f\82Ò;ïÓ\8c'?Nî\91\9f@(ü\ 4s\90Ì?jU!OÃ\ fÇ~-«BÙȸ)n\a0¤¸Á\15%\1eZùF\80¨\80\r&4\9e×\12\91>lDŽ
-©dUâH\9d\ f8\93ÝpùÄ\91\ eìиÙý\8dRDUñ\80"roN»ñ­µ\9f·XÃKR7Yò\93#]7®\82ê\98î\f34*\16\89ãÛu\18Î^\10X\97êég\810Ò_.¥Ì84m39[\8e¸´w\89ÏÂ9ë\v\8d\92ÀdÌ\84\1ffpÒK\9f_\1cÑ_Òì`4> Y<D0×/\11åi\14ÏøOßG;\1eDc4!?¶|ѹJyæ`\1aÿRiV`öó\88\13e\82\17\ 4B|YcÞw¶ Ï\96è\ 4\85£]*a-øÖO°ª@cÃ#ÀþRǵv\93áW\94ö³>æ\9fÀñ¬\1a
-\9b7B 1T\16#\83\8cA|ø3\1a#÷¡gUÌâ8\ 1\ 4Ý\19\85\1eâ\88PÐ-f=½1àJ\1aá     è\ 5\1fjݬ\1c¿bVtái©ee\9b\15¤\80\a\91øΨýgcuO]ºh<eõ\rx\1eÉ\ 6Vx¶oÁ¾,÷\ eu²Ä£P¹c>×Þ.UZi£\97ÖE\9bC\10^\v\9fd;G1\11+n|ü>\92\16\12\9a"o\9a,ÞwÏWy¬'ß\10[6¹\fØÒ\99\eÊÜ´ß;ßoáx\15î5p<\96\1d\13ÅÃi4\9d\ri<Á2ëÞ\9c\~<a\18¾ó«îT§5'\81K\10vú8Æ;»?\1dÒñdà$þY\1e\8e&£h2\9e\82® b2dIg\8bο\9dÿ\ 1Çìç=endstream
-endobj
-1170 0 obj<</Type/Page/Parent 1011 0 R/Contents 1171 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 674 0 R>>endobj
-1171 0 obj<</Filter/FlateDecode/Length 1871      >>stream
-x\ 1¥XÛrÛ8\12}÷Wô\9b4[6e],ÉyÙÊÅÞumìd"e2»¥\17\88\84$\8cI@C\90\96õ÷{ºAR\14\93\9a\9a©Iʲ%\80Ý\8dÓ§O7ôûÅ\90®ñ\7f\11\8d§\14g\17×Ñ5>á\97!¿|ù×Åh8\8eF4\1aM¢kÊh2\9dãwx\97Òâbx3\8fæ4\9cO¢     ¯\8eÇÍ;^\85!\1aÎ&Ñ\94\19?\87\9f\ÓæâÝòbp?¡á\90\96\eö<\9dÏh\99\88ãkZÆý¥£8תÐärÒ\89)è§åox\ 4æä\91¾-bg7f\eí]\1a\96jk}:º\92²Ò\17TzMÅNÓÓ\92\16:\7fÑ9}v©\89\8ft\a\8b.¿\f\ fÞÔ6       ¶ØW¤_u×æagâ\1d\19Ï\9f_]Ó\95\80²LúÆÆi\99è\84\ e¦Øµ\1c­Ë"\98\986Ö­+xÃ7\97?ûB\15ÆÙ\8e\93\88\96;\rx\8c'u\1e)9\8b\8f\9e\96\aO0L\80\ 3{`¯\e\8d/M¡Ö)\10\ 6l\ 2 ±Ûn\1c\1f\8c\r\ e\8c\96\13\9d\8fè¾Ì\ 1Z~I*-v®Üî\ 4ÃoÆ&\ eþoo:¡ÅÊÒZð:\83\ 5GL\81¦Dn;ç\1e\84l\òA\ e&Mù(t\0.\r\8aÈ\84\89\11\1c,ǪNc®·Æ\17ù\91\9eõ\111©ï\8e¯\0\9e×\ 5­yYs:9Ù\85Îö)¨ä#ú·;hÐàR\967&\85\83Mî2y{"\89\84\94\97\96vj¿7é\91´\15\18\92³ÖA9'\11ý\17\8c³\1a§\rX7,m\11ê\92b\97eÎF*É:y\87Õï\9e<\18k\8b\1fì\8dèA\92\ fö¿hk´-¨p´\a)øÄÅÁ±íV|ÿ`\e\14\8e\8a¤wâ\8b߬Vâiµ2vÓ\r«æ<\1d\84\96ì`m¬B\ 2\ 4¡Ô¹g!\1a\162*-Ðô\b&EÎñI~0^G\9dh\9e\1c*Z¥Þ!ZÅ!ã%1¹\8eQ\8dGætog\92DÛ^ýàh
-]A\99-á»f \12Ue\96\8b\15Dçza\9bçµÈá2ÏL¬é³\8a\9fiL«>#Í\ÈW?Iè'\9b\9dH¡v\11ݽ\16¹\8a\ 3´\ 1ÂÒ7\ 5u\92\r\1f¼ìáĪLÓàµ\83$\88\1eéH\8eÛ«êíôôS1ñû©Â\8e×\1f<*QV\ e\88=ÐT\89\8b\10\9dAòW\94\8d!a¬\94÷.6À\ 6\8a©x³ê\v\8b\0\99\87\1e ¿kM:@\83ÍÊÓA§iEÌ\ e\8c\92\97½óÞ°*\81©Ð\10\9b\8aÉN;%Z9dõú´Ù s·3)\8e-\8a\80öGr\9bö\83\81\ 15[jQ~\v=\ 1\ 3a½r\9cºX\ 4\97©"B;ÿ§sGo\93ÌXV\95°þ\1f(\92zQ&mT´\ e8\bÅ£\89sçݦ\10\97\83ûZÝ[\15÷\1ez\bZA'\13×\88ì?Ï\19Á\89«©ý`E*åTÛÜ\95û\1a\94\1d2\93â\14\8c\ 6\e|\95J7 \0ö´vB&#úÈÅ\b\81â\83ñæ9½ÿ\80\82\bnk=jE¹Z\15Î¥~µÊµ\7f6Åjeu\ 1¥0vµªDë<bô\85:Ðsס5\85øâT\ 4i}ì° q%Ò\7f\85åø\19õÓU!1\b¯Ñ÷\1aÄ\aÛ"ç\e¡\ 1\vð\96{\17s¡Ü\83\ 6\93\99Å^£wnªãïáË\ 3©N(çÁGôÕ\ 2Þ¢´à=\84¾Øq_\85\90³\90\13gáÄ\12w\8dc\95\85LÅ;\83\8fE½Ð\9b|HFÇ\910\9bS\83\7fÕR\93ñM'}ì¦Wu@v\98ë=\82òäËíV{ü\ 1þ\17\f\1cg·Ü'R¤«>\ 6¤ä\8dôM¬¡:\e\1c\13´T\1c«\13\11r\14:ø«\bH\15C
-òsYlsµ^£*¥\1f\ et\11\ fÄ\Åó¸\9ab®fÑ|\88¿yè\83,¯FÓY\95ͺ\12d\ 3Æ£\11¯£ßr\15\ 1¨÷\15:F\8fʪ­Î{\92±\1e\vtëC\8eø4\8b´\8ad\ 1m×°\13\80\92VË        *\8f\9aºÀyë\ e\97´kûeÐÎ|KE\85)È÷d\16è Õ\rKª·\15\ 2h^\90\ e\83\99\8c)H8\8aÇXWi\14\ f\9f\c\14\87IÈê×\12ó\ 67¬PòAr°¿ÉÌ\rù£\87úú\9a2µ¢-q\86`\8cç\9bªÑI+ÁðÜHÉ9\9a\ 1Ì&sC\fôã1¦}ÉÛÍu\95·zl®\96\9bÁ¶\9d¬6`\7fÏê\1d\86\96\82~1ú \85\9e\83û?\eß\15. ·`[\13à{V\13
-\93É©¯H\89¨\1c\15úÂdÆ\88'¹=¿Õä[êӦؿ\19\fð\1ae\8d¨cD\e, î©Y\ f\1e\17\1fï\1f>Þ-\ 6Ow¿~]Dw¿Þ\9d[\92K\12,µxÁYªs\89)\85oLç\94ø\ 3\1eþ°\1e\88'Ú¦\1f±ÿvË\97R=qñÅ(>\94Tðy¨r\95ûk\87^|ùeùéÓÇ?8w+uA\14p\aì\8aÂ-n\7f|û\1aÍ£á-~\roq\97\ 4\ 1\87£h\16Ñ7\9eÿB«Þét\8fB±A+:í\92!\9eá\12\89\a\ 11C\82\9fLÙ#yWæ1j\ f}\0ÍÃåY¨©\ 62|*\8cà%Þ\84\9bOÊBʪç/éËýû^è\1d\89\8bË\fÜ\94ç\9b\ 1\v\8eë
\ 64\ 5\ e\18$ѧ)«l­N:Àå\8fÙ¼à.%=cë\\82i 7\10ô\18¬J¬[mu®pC~|\87²F«b­ÇýRII·¼®sܹ\10p%õȶ\8b^@\94\9b\ fÇ\95\18µµÎ\17l2\bÆ\83À*w(\94\89^\97¡\8d\16\98º-"Þç\ e(\ 6$°\1fR±AË\10*\9dp\80\9afUz\9aÒ\rù篠 D[\9a\9e\80/\ 6ä¶>\1c£_Ü\8ei:¹\rãüâíã»·ô9w¿aô§\ f\85äÃ)¾-\98\8féj6\12½ú3t\99à{\86Ùt\1e\ 4n6a;wË\8b\9f\ fZ\r(|endstream
-endobj
-1172 0 obj<</Type/Page/Parent 1011 0 R/Contents 1173 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 679 0 R>>endobj
-1173 0 obj<</Filter/FlateDecode/Length 1974      >>stream
-x\ 1ÝX]oÛF\16}÷¯¸/\85\9cB¢>-Ù}Y8qÜ56Nº\95Ú \80^Fä\90\9a\98\9ca9C+Æîþ÷=w\86\94\8bEÛ§]\ 4\11,~ÜÏsν£_/¦4Á¿)­f4_R\\L¢ ®ðÇ\94?~üþb¶ZE\vZ,®ñYÐüz~ü\96Óúb~5\8b®h1¿\8af¸»X.¢eó\8dï¾Ý\\8cï\174\9dÒ&e\aËë\15m\12o\7fB\9bøò\93\96dRr{I;i\1d%JdÚX§brÆä\96RSQ"wu\96)\9dQY\99].\vKÊÒZ\14;AÊY\99§\11ýbj\8a\85¦ÚJom\94\90)\9d2úÍæËÅ\84FÓ9âÛ$\97logÜ\9el±KHè\844ÿá\fÙRÆ*}¡Ã^8\1ax\9f\94Ëg\99\ f\b\17\ e{\15ïù±ªÖ\11­eðRÀc)2iÉhoqÈîF\1d\7fÞ:»\81¿(6:õ\19\15¦\92¤4\82)\ 4\aɯ\9f²\f\81Û\886(K'\10\9f`%t&)­LAÓ^nÛK®c"SQçnû\86£\9dNh{9E\1f{u\14Ö\1eL\95Øí\9b¨12[¢­(ЭFudE{\99\97i\9dS!ÝÞ \98i'@T\1f¶cS\94*\97d}#jË\r«lo|\7fÕôü\92²8¦Q\16®¶H¸¤4\17\19'\bS\a\95ç(F\9c×\89\7f¹S½\90|·PJ\a°(-*\85ºsiE\9e\9b\ 3½\0\ 1\88J8'Щ,Ùñ7.\b:¦96ßñqè7\80\14K\8b\12\ 1\82ª ûW\86Ðhÿ~ó¢¯'®}Ü\10êød\9d\90RU\ 1Å\99tÞsç\16[,Ä\93\87M¯m@\85\961à¢\1f*DÅÁÆ®ÊG"w£DæÒI\9fgføNb\ e¨AH-1\85@Evæ+3ÂÖiªb%µCÓ\81Ù\
\86\8c­¦-\9dÊ\86@\9d*¤/Ü\17\98ö!\a\8b\ 1<\99Ô²\12ì\9c\ 6\1f¬x¯ëbSÕÖÉäÎûµ\ 3\ fÑJ\8aÔÉjØO¹\97&Gêð\9f{\ 6nJ\r\0µ\89\ f}~\8c;      ú"áÓ\ 3cǹ\9f×¾m(\92´¶.\ 2î\84ëùc<ìųÔ\ 3G\16\r\11\84@óü\85ìÞT¸Ä´W  ðËE05\13fm\86\0"\94È\1d$â+»Í\0Ê O¾\19!Z\11»\9aí±Û.ãÝKÉ\11Á\ e"¨ \ f\81jC_g\96(\86f\83RF/ªà\94®e\9f\88k\83Þ@Î\98\84\81\1c\ 4'\ 1c\90À\1e\1e\9e!\99*\ 3ôtö\1d\87\ 1\81\1dµ<v¸W\8aJ\14ôOb¹áûãû¸¡åh
-u\9fÏ!ý üvv5¡p¿%hsû(\9b¨V\9c{d\8d>Ðxü\ f-ÝN\19KZ Hh\83\95Õ³¬þõû\9c\8cf\8bèf¹:\89ó­¦õã[\92Z@å\13\82EëÅ\11\ 3".\93º(\19åâY¨\9c\1fð"È\1e{#«Êè\92öÎ\95ß\8dÇ\87Ã!òï\96\91©²ñùÓþ=~:¢÷\1e{"çÖzýóO\9e\f\14ñ\13\80dµJSh\ 4KêOZ}õØý¬ô|F{\8c.;ô:\rÜ2Ss#\12¤Âz}îÜO×~¨ÐZP@ä\98\14½ÇO±6\91µ}¾G\14®\12q`\ 1>ý,\82\1dzTqe¬I\1d!8Äb¡VCú\bpC±èÑhåð.Hô$"BC\v£Á\81³
-ÿ¦t\9cìÞñx\ 4\95«£Õww\ 3äÏÞO>1-\19\1cÀ+d\12Rÿî®e;º½Æ×A\18\92\1f\82\83Y\88\9aÝ«\92g\ 6\bÀo{íoÖ\ 4\0\84«\10Úd\8f4\16ú\85\90³\9fW5\84Ê"g\15\1dùÖn\ 6\16Qr5|\91 X²JEÌÃ\9a\97\8fBÙ¸6µ\ 5£\12\89Ùé'ô1Р \18        ¯\13f)ëåg4´È\87\ f\17\1c<¸Ô:GWYϱ\13U\18\ f\0Q#ú¹\89\93\87e\9f\15dW\ 1d1´þØzÿHÏ\9f­w°\1cÑ[\bêAx\91E9[à\87ÝB\8a°\13\1d*\ 5ÙoÊ\ e\9ccKá\0R\8c{ëuj|¿l\95¤3Tþ\8a1\9c\18z8¶zðñ\1cm\ 3\1eF\90@\ 4ÿù46    0\14GÀÜ|åÄþÂÑ\9fVG8i\ 1ÿ\10`ÄÅj\ 2<Úä\9e\18bÿk\8dÂA/Ðøº\84\°L9Y6{Ujxk`+\\vær\83O\êU\ eI Côó\ 2\vq4_Ü\f\9bm\10$\85}\ fÅ\13'^ã\1e¯ù!üê\99¾\9bó¢àµ\80¯våÀܪst\e\e\97\81A\81¶vÄ`z¬#j<f^"t¿\1e÷¼ùáª%ºê×áÿ$\18-\96\11\rv¥W\ 4îvñü\91þ8{\0Ä\15ÏK?\a\ 1êV\18úh¡\8d?\ 20Äo±\8b8\8f\1e\ eôH1\14È0â\1cöHί;\0¿70½v\ 2³~\84,\1cOI\8b?ßaÞV&§\1f\84\969¾·\10å\87ªg\85µ\10\17o\93\84íýñ\81¹Æ¦\10\87-ð¿§å×\80\ÅOL\8fÁ§¿\r\1a\8eýÑiýÎÛbCÍòwLò,ù?é\ 5p\90(îo\8b=\83¡í+\ 4ÿ°÷û\14N\fÐ\91ßé÷õ\9aÀN1§J,­Á\7fÃP¯O¼ß1OäW\85U\1cº\1d\1a\89ó¬?\84^~³þe½yÿøã§O\9bo¶Ûõ\v\98϶[\1d&àöÛèÛðF»\va=Ø\1c\f_ë®y\90Ó ÌÆ\9fC\827\ 19\90\88\9eO,b¨\95Ýn{\96\8fBÒlÆ\K\9c\ 5p\ 6\10Õ\vÝ}ø0\b£\8dßg©
\99Òl¨£¼ÍjÂ;RØN{\ 1Ä¢t5ÔðU\ 4¾\17
-5nN@mÿ<å\82\ 6\86CùQp;ô\ fû­çu8[xmé°\9b­´TàèºÅ|l\96\91\86æþtËÏwìwÐäcþß z\93Ðÿ\13Á»=ùÓ,\1fÍgÑjµ¢ùd\8eß\8düY\ 4\a\82\0Þë\86±Óùut}3Ç/O7á'\8aõíãÛ[\1c\95Í\17\96Ø;\13×\ 5¦\83?\81{`M\97«hr=§ÑjæÏ7Sø\88è3o\8f§ß6üÂóÀGu¿j,V\8bhµ¼\ e\a¢Õ\15Ûy¿¹øûÅ¿\ 1\1e\93ó\ 1endstream
-endobj
-1174 0 obj<</Type/Page/Parent 1011 0 R/Contents 1175 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 696 0 R>>endobj
-1175 0 obj<</Filter/FlateDecode/Length 2259      >>stream
-x\ 1­XMsÛF\12½ëWt\ e)Ñ)      ü\12?\94Ë\96\8eªV¶×dÖåZîa\0\f\89\89\80\19\ 6\ 3\88â\1eö·ïë\1e\80\14)ËI6.UI\ 2f¦§ûu÷ënüvÒ§\1e~ú4\19ÐpLIqÒ\8bzxÿúüëãÛ\93þ¸\1f\8dh4\9eD\ 3*h0\1cGýæ)§ÙÉd\10õhÔ¿\88.xqrÁ\8bòÄ\8býÞ$\9aÐÅt\8a=¼Ú\8b\86Í\13¯\ eú=ì¾À\99)V\87½1ï\95'9;¾Äµ\17¸|Ì«¸¶}\92³½\11?_LåÞáå\84\93¬NÇPvx9
-gÇ=Ü\10\9edu0Æ©áh,Z\rG²*O¼úz~Ò}sAý>Í\97\8cÉx:¡y*\90ôh\9etÞ¹\r%n½¥*Ó´4¹ö´,]!\8fïæ4Óå\83.ÉXú~öy6ÿéîãû÷óï\17\8bÙÖWº\18\ e\16\v««ÂÙÅâ\87è\aªÜ«ù¯'=:ï\ f¡ð<íü\91CÎÊe\9f\yï+U\19<+\9b\92×\15­uY\18ïñÊ\93ò´u5¥Z\17G\97¨õºtëÒ¨
-\16¸\92·\95äM¥#ú\8c\13\e\93çdµNI¥\85±ÆW%nyÐT\9aUVyjî\87±±{\84       TÖ\16ûÙª¨¹I\10\869s\a$ $\ 4¾\93\r|XÑ'cS·ñtù("Ú-\8c(äl`\18A\98© \9bZi[í\11~ròúæȬEg±\10\8d\ 5ãʹÜïÐ~\15Ñ<Ó¥&\ 3`¨ÔØ\17¼G¹K\80C
-««Lp\r\96PZÂä²ñpcòõ\r\99%Ãut³\80e,°,\82?°?C\9c\0\9bÔA¨ñ\11]\7f!f\14±­Æ®Zt\1a$D\88`yþ$6`\0Ü\95çnÃ'Ä\90\1cÎa\952\9d¯\97uN¿|ü;ìC08`YRnì½ÿ\91\95\9f·NùÙÁv·¤\99*b%~\17s\ e\13¿\Q\87²ªZÿØízÞ\18¹ru¸OX\82÷EôIS¦\10!\8a
-S\96p\9bÕJâ\8a¾ã3Ý7I\93Pç}ÐÊp\bÎAt,\ 6£\1e\85õ6á\9aå]>Àæ°aÜ\bèÐ\8d~й[\17\88\8bó\1d\80\9dÔü¾\rÑ`aPÉC5\84/ñ:§\8c\ 4=ò Îu\11Ñí\92¼;##"\9f\9eQ\9c\92\0I\83\ 2º\ 4Ô\88¨Ö\85\90i*qÚssÛôþ\8aÅ­wf\1aX"vf\89«*ºÓeÉéèMQç\88S\8eÞ×7×\14kàm8?\82ÆÏ\9c÷Ä\86Æ\8b\9bÍ&ò÷f½ÞF\bñ.b£~ìú">Çm\95\8b²ªÈ\19Ï}\ 1Øû7à|ìÃ?aÔU^e®^e\84j\ 1\96ÏÀM*/\1c\827S)`ó\94ª-3\96¢\ f7×gt\ 3ãRz­¬\ 5ªÂG÷Z¯\ 5ý \ 1»DÙ=s®Á\148ÿ\ 2\1c»X\8e\8dóLÑ\11Ð\84óu¤Ó:Ru\88ñ\17ì§\95ã\8ccªDÆfà|Úêoàê;ã\93\90£Ì\14×·of`Ë\1d\89\1c*#Õø\8bIÙMÌÒw\ fw·®{\1e\89\7f4ñÀî7®P $±û\17k\1e\ f¯x¦\10\19\\1a%q?J\Ñýo~\9fä][¥øÿðì_WïÍü\830\97(çò\14d7»{M~­\93@xû0Þ+º\146Ãï¨0Ié¼[BY(×$tÙMËU\97Ýð\7fª{>\1cD\93É\84ú\17£PÍ\17\83ñ¤!¸\96¿&Ñ´\8f \9dp[\ 3
\19\99\8e\12qK+Tofñ}©c<9ì\98ãýß\18À}_\82ìnù"\945&"E¶.b ±ãöR3g¤t *¢·¨I¡ñxF\e»<ù=Î?£$7É=3­0)\13¾ö\92}OkVS\ e¸$¡"ÙÝ¡`ÎhGê³z½v¥\1cß[Ù\91RöõsRþhç!b\9dãÖä\r²ù·\1a*K³$\12\18m$b¨\1aówo\91÷¿\ f\94Ð*kq^Ù\15\17É\17\82§C·Ìv\1eÔ\r\1cJ-wÃ7RV\9e·\14©³§èç\98"÷ZªØÕUÐï\9cõ\83²@\87Ýk ]\9aVE£¼Ä̱Ũq¸'ÈD¡ÖÞ\832Y\86³Ò\ f°(9Hë\+\8fw±P¥Ü±o<VµIy£\ 5Ý>ë-®ò\8dÚz\98Wh    Å\97\8aæ\83Ëk[iÔÐ3\16\ fîG\0[\a\8b\15\88¿ \97\bô`Â\1d{¢_ÕªT|\96UG\ 1\84c\7f­ÊÊ$(\92èÙ´ªjN\88êð}e
-´¸W\16½;þkLà\8bOcÄ\ 1­\10\rþ\94o{\1aÁ¬\v\14Ë88
-Wê\17*|\9b\8e_©ðÃË\90ó\rFm#²á¾\ 2fr×Ω+\99'\9ebÕjÏ\17³\12²Ï¡ÃGw\88W^\ 6
\9dè¿-^\1dáT[°bèè=\8ao\9e2X±\8aó­xY¼\8a°×\ f\0\13ÃC\12\12\ 1
-H>£1\07Ú¥4Àg\f\844@Ç\b¹u8\8a ü×*Ç\15ù¿!\9cÁ_.!\96+:ù\90ß\7f\1d¼[Ì\ fij¤\85k¿Á\ eÝ[\bp\17WH\b¤VHä\a£èú\9f³]ãÇa\9eòè³aBâ\8cÈaرQI¦\93{È0h&ëoPëç%b\1c^,Ô=º\a\1e¸Ú´\ 6'r³Ì\8bqiôò\f#    OYKüµ+ð¬³\9c-Ìãí\11/å"\85óðöÈí±F\a\81Üh\93
-\ 5\ eé\i¸\9dÇ\1eú\ eu}G-Üô\91\89K!½a\ 4O\8bN\83d\82¶×ã\1681q9\94\v\14ºt\1c=æ?\98¬ 4Ë[¼ú\ 6^\ e\9eäÁrGNèÛÈ\9aeµ¥ÓÛÓ\82\vOær\83¾Ñ\9fÂZÄ¿ß{\943G\81\89Î\ 2Þ\9eÙ\0ú\1d©ÏñmVX\ 3\v;a\1f\ 6\ 5ô°^ò©ç\8dÔ\9fè~\ 3àÜqxa_ÌK<â2\97£\9bL2\9eå8*\85\85d¤cfcêÇ_\8e\v\ f²\93ôÏ0ºk\vÎ4\11\98LjÄ\91Mí±\18\94\15¨ä\:° 'Ô)\9ddÖ$*\8fèN\81\f×Ú!BH\81\ 1\ 1WÖ%\14\ 2_Ç>)MÌ\{t\11s!v"BØC¢5«Ê}\f·íÛ\0*kÎâ@j¨SmÉÙ æ\0e\91\0&Ætü~YiË7<¥^\8fA\95\85Ë\0À\92öU\8b¯b§Ëð\8c\1cÝ\bÁAÏXW\15<\98j\95ã-Ïô0H1\81ëòL$\1dÙ\81lÙ¨2$º\95v\12ÙùB\ 4\8f\ 6ø\90ôõÁu,mÝg°J\18\1d\8dMò:}6ÄJµR2p=íwr\871C¾)mJ\ 3C :×°TÇ5\1aA\9e;å3\ f\87\ 5æÙ\1a¡\83¿\83^D\1fBÅþRDx-Xiäyeà3¾#Fèi+\13\19d­Øïì%$D¥\1fÁxKyÄìÉn
-^ó/`ò,\ fÚ.x\88\ fx\ 2Æ\93.xÚ4|ýá4\9a^\ eipÉ\1f×:³«»×Wô¡t¿2ÕÜ4S¼|\ 5\91\98èããco:¤óÉ@æ\97>úl$\11×\98ð¡C:gf+i¤¥Yæ/\89\93ñ4|i\98\8cYÎOó\93\7f\9cü\ fäî:Ûendstream
-endobj
-1176 0 obj<</Type/Page/Parent 1011 0 R/Contents 1177 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 701 0 R>>endobj
-1177 0 obj<</Filter/FlateDecode/Length 2169      >>stream
-x\ 1\95XÑrÛ¸\15}÷WÜ\87ÎTéÈ´$Û\92¼í´cg\9dÔ3µãµÔf\1fô\ 2\91 \88\98$\18\0\94¢¿ï¹\0(ÓÜô¡ÙlÆ\16   àÞsÏ9÷BßϦ4Á\7fSZÌèrNiu6I&ø\84ÿ\99ò?/\9fÏæ\93dI×ËIrE\15M¯¯O¿\95´:\9b]^%\97t=_$3<\9d\93\8d\9fb\1fº\9e.°âj¹ÀÏ3üo$ågwë³\8bOW4\9dÒ:ç³çË\ 5­3\7fî\84Öéh3zÖÖªmyÜ| \87\9c\8eº¥Bì%        JuÕ\94ÒIª¥«tMÎ\88TÒfD¹Ñ\15¹B\92nd­ê\1déÜÿÚ¨F\92Óþgi\8c6´ùðaýíì|BçÓKĽÎF¼\7f*j²²Îü\8b\7fI>Þ>S®J\1cié Ë2á5\17\9fÒ\18ôù\14ø\^R·Ãfv=¡ðJ\97W|ã|6\at8ä¹\94Â"\94BÕ¯8Íȼ-Ë#me®\ 1\8apN¤x´C\8e\99NÛJÖ\8eÃFT²\12ªL裮­Ê¤¡FXÇ/r²F\96r/jÇG÷\12j\84q\96T\1dóÞêìØáQIkÅN&´Ær+ª­ Þ\9f7,\95Ū\1d°Â¹T´; ÜV[\1c       ,\e©\ 1ü\18Á\rÑC\1cG\12e\89\92ÈÌ\97¨ñ§\ 1UC¶Ú&©®s\ 4Ã\ 1+\133¥L\19\99:m\8eÿø9²\1dl=dç\1dø³«äf¾ óË\9bdÎÐþS\1f\10\17=ÐN:Ä\1a
-ÿ.«xHW\e@Õí¿Ö\81Z>ÚZT\8ci¥÷ÈÄ3Jü\ 4£qÄ\88\v\0\ 4%5%\93\90Yt\88e\ 3\82>\96\9a\94óÔéÓí3#ì+ö^mfG#*\9ck~¹¸ðµH|}\12mvïßö\ 2å·Ç\94\96*}%\b!Ä/Á+ë¨R\9eé"й>½\15 ¾\8e8\8ehÕ6\8d6\9e=o\82\1c\81t^\ 6ÿk]\8fh+O °P8 ö\ eòpV\87ø(¡/ ®4\85h,\84&ßgäÝ&ä/ÍàY\97m¯hQK\99®ÿì¨Ñ\9cq µí¤ÎøA»¯^(\1a*ëÊ:\ euRàë·\16ïø'9\9c\ 1ñG¹\88-êïã{³\b\91e@ÖÂiÚºä\1f\!p´Ñ)ÿ\92CAX\ f\8e[\r>\1cÄ1I\92à3=Ï\80\13Néf\16ì`3\ 3\83\ 3F74\85ÿåàä2\99ÞàLpsɼ\9eÎ\92eB¿jàZ³þ\9dÑ%Á.諪3}°tóãâñþ=гY2\9bL±×\r\fÊ»\e\v=×e©\ f\f\86\85ê\14ø\ 2Q:lk©jÓ¢3\amÔNÕ¢¤_¿<Þ><%î\87\v\18¹Wºµ0,U§e\9b\83r\ 5y\ 2x\86÷XñØÛ²\ 23\8cÂ\96ÊÒ\16\ 6\981Y\ f\f\9e×JÏ£ôkȤ\939èÙÈ\94\97Þg\8ac\1eÓ¿-§àÏ|\9f5\94°=Ò\8bJ\va2~Ô×Û
-\1f62Èð\ 4\ f\8a\11à¹\85ux\80\99õ\82\ eÚ¼î\8cn\e\82\94\10©CÒ'©³}ï¼\99ISYÆ\r\8d\88×ÐÖ "x\18\9c5S9H%kø\ 2\12÷d\11\1cW\ f¥\f\145jÛ:±å>Óâ\8cÚ©Tøòd\ 2\1fs¿Àja­\ 6\ e¬0\8f9w\b\8exì¹\80\82\88´Ô¨\1c\89ÔóÑ\ex\f,¡ÛÒêñ\1f\ e\ fñA$a      *_Àý¹\rB\12;\83¦\82ó°Qk¥A/ñ¦z$Ûú×CïêÅ\8c\ 4vL'ì×á\89\88Pj¬ÞK38}3zZÇ'Þl4rG¯8Z'\ 1ê\89&o/Ù`T\0RÙ1÷äLK\0ã\88\9bª\v\8c õÓgªõaó¡ããÉã¡\80Õã\1dÛ û3\ 2\ 3V\98\10Ð\92¸ÓÅú\17Ø\96Ûí\ f°Î\85*øºIÄ\8f\86\16BôÙÄfÖ-´\85nKp\aÈ4ÃN|"N\ f+\96\9fª¡ch\ 3?'ô4 \10åmíU*Jå|/\r!r|à@ÇPT\ 5\7f³À\9ar\01¿\89ÇȦD]PJ°ãîåË×ÕÃÓgÖuB\ f\8ebä(x­Qîq jÇdÏ\íÐÚ\11\83q\ 5×\13j\ 4f±´¡(C´\1f¬mQ\9c®)àu\ f\ 2\10/åyXÙi¦Ò\99,½Ð \86´µl\ f\88\93«Ü\19U\12\8b\e\19À\95\ f²õÛ\82\19ÝÆ1ÀÔ¨Æ1a\0\ 6ó\98\r\9b§:86\ôqu2Rþµ\87+¿ß{zó{´Ù\9ez\ 3\970\1c\160\1dè\12ý\ 40r¦9Æ7ï\fïÒ\88\ 1w\94ü
-±3Ûz´dùv\94:([ Ê\13Ô
-\8dÊh\91¥Ìv#¿\ 3`\88\95£\16]1<3\83ùäÊà5]óà;\0ÊÈ\ 6ÕÄl¦$é\9bÞ\ 6tö \1a<\ag*<Â\88i\ 1\a\83ÆBa»f\15 ËÂ`keä\1d\9a¿È*\85\8f0\88c\9aÃ,e\a'²)\80B2ó\8cCaѯy¶ç©\1dæG^]Öµ\8dÊ0í#ãÔH\1c×Ã\ 2Þ\10\90õ%ì;#X\v\ eè3\80ï\ eR\ ey\11Ü\a\fP    F^d\8cI\95m\1dæ\a\81í%°8\95=\1a\12D\96!&§|êXRYYî\ 1\fì\81çj\95ª\ 6º\r] +\18ã®\86\99g\18$\91<\80Áê\ 23êÐ\ 3,}o\15\9a\ 5\9a-ßb\18\95´Ô8\96»í^ãôèüÑ\ 6\86\8a\vm\11¡¢_ä\0\ fýÀú1\87ݼ\12¯~65Ñþ,#®rßÓ0\8e\a¥ì\95ð|\b%\r¨ý5,í\88nZðsPÛ­p ¿¿'\1d\98Ð\1eà°c\94}'HV\14F\96º\ 4\89ù5\9c\8c\99"¶HÔ'\93öÕi4]¼\a¾\18\9eèêv\98è]¸,\95\ 2þ\18\eq<\87ï\18\ 2ëà®\80½õ\16ʵwìd¨³+ V\10¯Ô\9a\a\ f_\95\93\vøq*Â4È\14\93+\e6X\10\10û\85\9fãÎüv\8f\80\9ab\7f9)\95ÇÅ\18ßÃsOÀÝ0\19¯¨¶Ý\ 2¦\18¦ª¡\ 2Á-á_¾\7f\a\82!\8fA\¸²ú{" å5w\ f_Väo1a\82ûÛ4ý;·ÉþãR\1c¥   F\11\ 3N\v\r\ 5G\bÞ\ 1\ 25àîp
-\ 6\92¸µI\b\a°\ 6ç;Í\91ý#|\ 41»hÅ¡q\ 2\r\888x<;%·@\1e¢6ø³º\7fùÏý\8b/9®×Ô9å4ñc2>9Ý÷ÖoXãT?ËÖг÷Kß²\ 3\81Ç\*8q\8d2\84yÁû-2µ\12~ó;\ 3\rºýd\8b\ fÏ\1fÿ\14\8c\86/\0Þ\18\82w;¤\8f}NAwß\aÌBÐ\17\9f\96ñ®5½Â·\1fËK\9a/\96É|~ÍÓýêöñî\96\9e\8dþ\86Ø1å\87K¿'0\17ù|\8a¯UxÉùb\86oEþ\9fÛÀÕâ*YÌ\97øj\aË\16\vÞí~}öÛÙ\7f\ 1\90°ÉFendstream
-endobj
-1178 0 obj<</Type/Page/Parent 1011 0 R/Contents 1179 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1179 0 obj<</Filter/FlateDecode/Length 1905      >>stream
-x\ 1\9dXkoÛÊ\11ýî_1uQÔ\ 1lÚzX\8f\ 2EaÇö­\81k;\8d\94¦\ 5ôeE.Í\8dI®.\97\8c¢\7fß3³\J¦Ý¦m\828\12\1fó<ç̬\7f;\1aÐ\ 5þ\ eh:¤Ñ\84ââè"º ËÑ\0?dz)~\ eñ¯Ò\94Ê\8dù4\1aõ¯_/\8fÎïÆ4\18Ð2e\e\93Ù\94\96       ÁÎÅ\ 5\93e¦)Î\8d.kª3]Rbµ#E\8fºþúâjõÅéêWûlKxù­Ñ®>¥mfâ\f_ëÊèïx\18¯Q©
-M6\95Ï\r^ù££\9cßú°üvtAg\83Q4\84×\13\17WfSG|õ\f\11\85Ë£\88ø\12®\9c\r\98\9fì\87\15Û²Ôq\roV\9c >\1f\96Ë\14òWeBN«*Î\10Pj+<c\90\ 6®\9a\94LMø\92Ú\ 6_ùR¬JZkd \92Ó^\80x.$æ\9fÕ?tÜÔ:¡õNüúREt\95ÖÚ{9=¸N\89q]¤ie\8bwb}\93ýøçÙ;]&mW¸!¿èú¾LmhI¨        î|×\15âá;¾;â¿mHfÑ#)WÛ÷¹ãÉ\84_÷¥\94Bn*\9b\9a\88\16¦\8cµ\18¬´ÛØÒáK×\8c÷Â\12(\95¶&\94¤V¦¤¢\89³\9eÓ¢{\8c w\82\f®%\8e¯¦\9cÿ£Eª£\87/\8b%\92t&Ñ\ 4ÃÁ\0I\8e\89©\0\15[íºR\aT]îK=\9aG\93ÿ\ 6hoâz\ fk]ømÈÀ\87cØÕMU:²MÝÇÙÎ6\ 2C·Ñ±I=´ÞñÄ=\97\8e ¿\18»\eUg\11Ý\ 1áú\87*6¹>¥\15þøÖ¯Vi¥\93Õ*ê¸O¹Þg\a\14äRu\85\b/\ 4Ä;âï\86­\16Ð\ 3\9d¼©ßäçõ{\97\ 1oR;\95*¢M?¥u?þÜÚ\17\8fO\8fw÷¿D\9f\9e\14ÜØÜÄ\86ù\ f¼FtÏj\ 4>\aê\9f¶:À´÷ÊðN¢A\91¦>Ñó»9\r G)\84é\92ÎÆc\8f\99Á0\9aE\83\88>Ú25ÏM¥j\ 3\81¼/]]51\7fv\7fb\ 1ÝÚê\85\1c\97a´cÈ*,*W03\12\93¦ºÒL°5^Ô\10bE\9fn>J \8a\0þÄn\1dÍ\7fxY\ 5A\99êL¬\83\0\90i\9d©\9a}Aè;)ý¤\9cC(  Á|µÛH¬x\94\89É\9a\ e²$°\7fëF`p~\17·Cäl\1aÍx.!þÕp2\15éÞç&7;Áß\a~þpÛ±7±â}c\9dÓÎQ¡âÌ\94\90\81ªq5©8\86R×î\7fòz6DCæû\9c1>*\8d9\0z(Z¨bí«¹5yN*w\16\89éµ\8fðUi[ï\97mÎÃa4¼àñ\84ôF~\94a.T¦ÞQa¡ALÍB9\9e ë
-\9dÒU¯åBÁIt1¹lûÎC\8bÿQª·ècÁ\8c\93éV¨\17Ñ4t\8c'\f\14Ö@^6äX¾\81~È.O\83\88$GÊ\90Å\9añÂâJ\89\1a\93\18à`\18ôxo\9ckdLo3\r\1d¨\b2Â0ð\ 3Ò¾°·\0\96M\8atc\ 5¥À{]Ù<Ç\9bÀ¬;¬\0T\8e-öÙ
-<\96-@°ÆÈ\ eròeqûù5\1fN$\19²e¾{mµÝ5¤m\1c¨0*A\ e\\16\1d\89U\ e\14+\aÎ1Ó½ÝÎÕâ¯W\9fo{¾¤a|í 8!\95ÀúÎÀÍÓÃÕýcß\ 2w»ïéöóßߤå±\11\8cs|\b5G\92ß\ 4èô]UÆk\aäcñp-C\90rlUyW\a\ 1"\v\18]ÅuÃ6Xó`з\14\1f\ 4Õq\ exÀ> #s\1c-é Q¢\98¯ºîiQp(Ø\86äQßf\ fä^\89ZX\8bR\18 \95[ñ\Y\0\13fK²\eÍ2X>{VÝ|\8cèk\ 6\1dfl\15
-\11\85n!:xcê\9b5n¿B\9cêùlU\ e\10t\fîÕ\89\92­\vé\9fz\9a\89?4#ñ\81ËÊ\89R\80W\10_^Æ\10Q\ÃeÐ×\9aÒ\ 6WX¢W\1fÂD`dõ]?[\8bÝ1Ñ\8a#t6¢\7fbb»Ì6y\82&\16ºX39¡¶R8\bµÔ±ÒÏð)w4yìü~°æYp}ÿ´\90-\99¡nD\1c\ e§2\1aÈ\r\901\8fa)ëfP&¿r\8a6ä6fzó£Ráv,\84'Z]õy?7ÆeÝ4Á+½â¶ÃEl=\û\9dB åé\14\8a\ 3%ÙÑÖøeo/\ eü\9a\a\10ÛñÑßÀLë$ õÑni­bQ\16~¥S `I:¸·\84b#}¨¢¨ªH
-W¹¤ã\8eE\7f\16\96\1cË\80oµ½\97Yf\ 1iT4øð\\10»h5ë\1e\ 5\17$\10\19@Î:½ý®r\93p\99yka#|ðà\ 1ß\9e\80\9c¬\e%\90ÝóË,¤\94'\8b\0C\ 4Ûû\v\13\ e
-e»\e¬NøÛñ&\fh\1fÒñê\ 3½\94<îe9Vkì\8f>\16©\ 4^éùõ}à¬#\9aÏÿ\10Îaµ)0þ¤¥>\8aP\17\15ø\82ÜZ=\8f\88;uX\ 5Oh\99D\9e]=§Ò Ð\14¿\80\1dw\9ap\8c=µÂ\91\90©\10\ 4ÆiÔÅ\9f\17\ eO\8b\ 1å\8fË\10ÕêDN\98=\7f*çÅm'óî\9d\ 4N©2ÏYý\97Õ\a~\8f©\15 ¸\f«@\87\87CÌ­í\8f Xí\12Ôj\89´08Åá/Ñ©)\8dà\80G®ß'¸ãî\ 5özÁÊ    \14â\b\85kç´ßExíoEDå[µ;À¨\0£c\14
-Õj2HÕi®\ f­]Mö\9b\9b\8c°\95úÝDöÓá\7fÞO\17º\16¹\86\80\7f¶ªà\9a|a¼\7fjÏ{\9cÑùݤ\1dÚóËh6DMgÑØ»x|ZÞþÎ?\13~¹pÒ\19êÎ\17®Ùll%d<P`P\ e]Çi\8eç(>=.Û\94f­·é \1aNF4ÁÿÓ\89l[\8b«\87ë+\8eí\e¸H76nx_\92Ù)ý\1eLðË\90Ù\88ΦCYLÿ¿\r}<\1dÃáÌï¶Ó\19[¾]\1eýíè_\8a\eendstream
-endobj
-1180 0 obj<</Type/Page/Parent 1011 0 R/Contents 1181 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1181 0 obj<</Filter/FlateDecode/Length 1483      >>stream
-x\ 1¥WkoÛF\10üî_±\r\ 6$F¢\14=\ 2ôC\9c\81ÔM\13\ 5m\11\ 5Á\91<\8a\17\93<\85w\fã\7fßÙ;R\94)·)Ú\18\ 1\1e»³3³«ÏgS\9aàoJË\90f\v\8a\8b³I0¡§ËI° ùj\89Ï!þW\92R÷b¶^\ 4O\1fz1]\86\ f¿\98ON\9f_mÎ\9e¼\9cÓtJ\9b\14\97/VKÚ$\84\8b'\13ÚÄ\17W2Õ¸1Q&®\8d\8e\90Õ\14ë2U»\1aï*-
-~±¯tªriF¤,)Cµ\91i\9dóZ#¥Ûö»*×\7f\90(\13§\9b\rŹ\92¥5\97\9bOg\13\1aOgA\88»/T±Ïe\81\17d3i\90­\14\16÷\98 ]\17.\829¯ó§µgà\ e\1c+èFÚwFV?I{]¦\1a`}®¥ÁI\9a\ fâê\8b¬øÛNºã9Èê±9ÄN¹\8e\85\fègÝH,\1eñÆA\84\bf¯K\84\96hi¨Ô\96\85\81Ð\ 5\ 1.\84aä^TÂÊÓ\83)U2OF¤ËüÎÅÔF\90é\ 2ñe¢\92\ 1m2ÀWHQ\1a¬\10vp»Ï»C\9b°\ 3i\1a[©ØÊ\84s\8b$\97C\95'Ç'ª\92±ÕÕÝ\ 3Pöå8\82òíó_^é\9d.éÍë\17\1d\96#j2\15gL\0+\14B,Dyç³âÒ\97q^'|ÿ\11\b.eFf\90        \97¤\ 3\9ctz\1co\97Þ      \18dêý^WÖ\ 1Ý­bº%*MeÅ´á\12\f¨æ\12~òr}àù8\y\16MÃ`\15\84Á4à-\89n\f\ 1\89\17\1d\158èc\89\8c;\ 2nÀì6\18ìí\ 1d\14\.ïw¹\8e\ 1\88ÆL*ÎÑ\14QÀÚÁ3ÏÀTç¹n\18±í\ 5G.¿
-\16Àöò\99¿xBk/Íq8÷!ç®${a3ú\9e¶ø×ÁàØÝ\7fe2\1d¾ñòíöüÝv[@Ðí\ e~ø@z¬®\rj\93ÈTÔ¹\aÔ2'õÞ¥\81O|íù\8d?°=lD¥($XÍï\8c("áå¶Ý2ÅùÝ!\18®ªtënÎù\f\80Q}QñPg¸'® ~ÐZÔV\17(G,rÜ\10yé¼gÑ\18\86×í\ eè:¥;];IÔά@B\ eÄ­\80ð\19_&]\aØÈ-ÿXÔÆ~\1c\10·Ò­u\9a\97±\ 2\8f\93®¶GE\88*ÐF\8a(\97\8efa\18\84\93)\8dÃe°\9a9G{\9fßÆ9\85\vQïÖ\v\1aS\ 3;dÃ`WÕð\18Î\8fc    \ 5Ô\85\a\a2vö\16\8b\12BSNrX\f\ 6\95-§¼µ\r¢? Ã\1cà\90#i\e)KÈm\aÍzüï/b\10èæ×\r']y×\8f$û£KÙÅÇöNÌ\99à\83gM§§ñ!çu\97s««°×\15¬ÿ¿è
-ÛZ\10|µ\\9c\bË\15ç\91/\ 3óà\11"«@2+«\80Þºªg\82ݹAòÈ<U_\91\8aáF ,=*åÐWqæ\13\7f\10ïituk\b\a42ÏG®i)\8bf õ\bN\88Æ\ 55x\95ÿM\fmE:³¸º\ 3\96¬ræ_\1fu\1f´ÏîÔÍ÷µµ¼Ï;ZÇÜ\8e\86,-ô/×=Nì½ë¨Wµ¥F(û\1dË\8eù\80Ä\88\eÆ­ã?s\vç\1cäsêLÿàgÐ[Õ\9b\1a\e¾åBõ¾uþÊ\eHÐeåYÕO#°Zö"@Vr¤\9d­w¢hT\9eSR[\859\ 3®\0¤\18]Uu\84a\90 ý:: Ã\ eì\ eº\ f\18±­Èd ¢CXpf\9bÕÜénÛ
-\16\94©$\91åörØJo0\r´½]\80/\11bz\f®1À\8e]\8fÉE-r0\919\86%2\16xË¡\89nØáÈ]ÁQ\14\v¾\15°        \14\r\8d¶OÅØ:M\a!ëÔwQ\1e\86Ú\86\14\ 4\13\8eÍ.HÜË3Æa2âÙÌ\e\1e÷X7\amX.ÊOu¹Ö\10E®`\8d@qpwo\91®9¸Ú:Ç=\16È7\eñÌ\19ƽ1ñß¹Æ\9f0~fr×\92;N¹\10"\8d\15t2~r7\ 1å\9dÈÜ:Æã8f\a\97\7f0H\99½ðÈwà«/û\ eþ?uÀ\13ñ$X1ÿ\8fzM/\9c.?\96\10\87Õ\8f(O±m¶v\r\eеï7<©Æ\99\8coa\84\r\97µc&µÔtó,l\r³\fÚPy\1f\ 5¸\ 6;\ 3,QD c[ÉU;RM§\8b \9cÏi±X\ 6á\9a\7fD\`z¼zN¯+ý   ­\8a~ÐqÍSýa¦\1aO±t²\9aÑx\19â·FrѶ\8cû]\82®K̶µ\9b\9fÌ3zÛ\16ªÞÓ\9böwÇ;X ßâ~|0\12óå<X.Vø5\83C\97k~ôãæì·³¿\0L[R\87endstream
-endobj
-1182 0 obj<</Type/Page/Parent 1011 0 R/Contents 1183 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1183 0 obj<</Filter/FlateDecode/Length 1925      >>stream
-x\ 1\9dXïoÛF\12ýî¿b /r\0\89±\15Gv\ 2\14\aÇIÑ ±ã»(×+ª X\91+ic\92Ëî.#\vè\1f\7fof¹\94ʤÅá\10\ 4ùArgæÍ\9b7oýûÉ9\9dá×9]ÎèÙ\9còêäÕâäé\8f/èü\9c\16k<\99_]Ò¢ ³ììì\8c\16ùéù,»ÊfÙEF¿\98º°;O/þC÷ήM©é\83\ emódñ\ 5'\ô'Lgóì\ 2g\9cþ²Õ5)j½v´6Î\a*íÆ\93©ÉÖG§M(l5^ÀyüjöúzAÆSî´
\98\90ò¤\1c^°e¡\9d§Ñ\87 \ []·£  Ç>£éù³lÆ\11G¯µ\7f\b\19Mh\84\1c7NU~Dª.ht§ÃÖÚb\94Ñb«½¦Â8\9d\aë\8cÆñx\ 19\18G¹­\83®\83§\9d)KZiª´Ûè\ 2ÿ\f[I³´¹*\aQ¿"-ckO\1eçáe\14\98¿\.w\11¯å²\89hùå\92ë«U¥\19\0ß®¼þ½E4\86ÅÔ\1e\aSo$Ne\ 1\172äÇkg+Ò*ßfô«m\aÁ%ÑZ#l°\8c\9f|ýÛ¦´+U~"Û\ 4ÉlÔ8\14í¾jÊ\15Þù\81öÚ3H~k\81å÷\1eFÔäm¯ko\82ÁÇ?\f\82×v$ítè\fǯ\94©\ 3~#Jc\82*©Ô!pÓð_\12*o\81-þ¡ê=ÙµäÚ¡\93ú\9bu!\12\89Э\ 3-\84$Ü#Ä@ÛÐ"¦\ e£:ö\ÅZ;]çÚgôvM{Û¢o\1e}³¤ëµu¹\ 6\e½\ e\1cùèå        p\96¦\b\ 5\ 6\15ö\8c\94Ð\11b\97Ý^ß\81\97`M¡Q\b¾«hçLÀù9¢{\8e\18¶à0\7f$\ 5aÔú±x_KÖý8=\alùÖÔzB\e|gé\ 6\ 5:[Ò½ªuI\7fàOïwÖ\15\91¨^\97 ®\1cñ\11\85§YDPµÊ0\91ütP\ 4\83äÀ5P¾@K¾âT@ପ\98nGPd8\8dó\7fÿó\84Vm ÂÒçÚ\86Ï\fµÝIÌÜVM\8b\9er¢N¯¬\r\14ú\91¦ð<#N\0ÿóÿ×\8cqEÉ\ f¨þ¦42\ 4ÖÑ­É\9dõv\1d¨{ìé\ f\8e4=\92\0\14p`AD\83Æïì\86G\ e)ß-èµe\9a\8eE\bê   ¨á[ÈKت\bê½3\95r{Â7ø\ 4M\1c\1f2\18àúm>8õ\80`\94\15\9c\10\f\7f\820±~\16!\9cÎ\9eÓô9\14\98ÅícÍSv ÍäÐzÖGhs]ZU Å"\18Üô?ÕÒ\ fÅVa\94¿y\f\9d\1d\94wT8ÝY°¦ìq\1f\8bhG"'y\93\81\80\94±¶åÎ4¡\17Ñaj\98L\97NüÀªäÒÔ'
-uãû\97\99Ò8á mún:IÂ\87 \88\84§\99£é hE+\13HmXa"! 7¹F5\7f\1a\19Ù\7f\90l\13uFù\a¬\8aTEê"Ô:bPcxÖX\a\a\96}K\1d&\1c\94qe\1fe\v\89ÂýÆò3¡¦\13\80      \9aÌÜý\ 4   õA«\82súÒúá¼\ f\ 4ªï\eͺË]÷ªZ±\ e\90Íx$\89\ 2.O1e¢ÍxÑ¥G\ fH_\86G?\1a\1f¢2¬´r8p\0\1eôä¨FN¾ç\80jqd\1dLÎKý\b_\8cG\97\ 1\8fKÏ¥!e\fâ\ 2k\99Òøþ tG<©
-»µi°Ø°jÂòÉD\16D,\90cpZ¼.:P\87M{\8fn\vN\92þ\16îc¥ác|+Ò¾nËrO_Ui\8aèN\18ÑÄÅ\17½\94Dz\ro\9dJ\16\91$>^àåþX\bë·5°ÙÀ\0­4¾Ôc\19)pËË\19\1d×ÒNói\8cSA\aåûG·\ah\8c=?þË
-\8fòΣÊBÝá\87Ú\ 6ùw\86§\88\8ej"\19`\87·eÁ¾H­`× §ú\91\97H\ 4¬7O`%`\19\14\97\f×\9e|£s³6¨´cä(6¯Qa;\12\9d\1e°T`\0\9a\97m§ÓÇ^ïï,áý÷}`ò\e$\1a#-î\1cç\10.4\r\96)ÙϤ*9v6*\101\ 1#x» ë\b\ 6m#\14¡\1dÛ`~(\9d\1ec»¦åi×ON \1e\a(R1Ä\f_Uزª\98Ú\1aAVâ5jz9]>\11/\18ivP\16\99\90.P¬\ 6\1e¤u8\ 6\ e¼óÏ\98p±bSöb,ã\1d\9e1õAÓ¤ZñÀRAòj}§\8fÆ´gLÿ0Ò Ítï¸÷X\85\S\ fÚ÷<u\ 2òÈ\12×z§!É©\ e\1eåC!\a\93Ì\ eoØ·Q¥¥Õ\f³\14\93\ ez*6Í\1fáÜ5óX(»}\17=%\16á\ 66R;gámûm»{ñ|\0_gì\98\1d\91â\9c4ÿ­\85\9cAYxÓÀ W\r¤
-Ãt\0:î(~\9b\89ãtea.;ô3z¥<t\14BÔï\1f®l\10\9be¼ËÐiVC°5\12\88\90\7f\13\ 2\8dó\a     ó±6\8fñ\1eÖhW\19\1f/5\9c\ 4ô\1f.~k\1arf³E²\1dB]F\83È\87IOT\98¤\ f\8e!ý»&á`\bLÕÝ\ 2Ù¥Êðtñ@[nD®j@Ã\86>M\17d="ש\16^Ay\ 2\82%¶Òð±)p2\erO\15¿.ApXMµ~쯫Òû}¿É\ 2\ 6        \11ãØ\80Ìð^h)v÷\86õl\ 4á\96\8d\97­ßH\ 2\1e_\ 1\8eÖ÷ѧ­\18<®e°À\ f{¿0
-\1fÀ\11\88\1e÷¬è:Ø\7fã¾^\9c\1e\99ïT\9fk£þ8\8díbB¦\1f\85K|;\8eJUZû\80Ü_v}Löå§\9fßüúùÝû\9bëw\9fo¯o~z{÷f¹ìVÆryÓ:\\9b¿ãÝw¹¼\8f\97Üwp\b|\fç\93ÎéÌìÓ\1f¯º\9f\11\9c_̲³«g4\9fϳ9'ýáúöÕ5ÛÙ/|µymó¶ÂÙ\8aï®ñ°ù¥|0½\9cÅ"ã\ f%ø¦´6\9bÖÉ\9bô\16¦Èµ¹Üx_òÏ&\82\10§¡\7fu7\9d\8flHºDÅì^\^d\97ó«\88ÜÕ\19Çz³8ùçÉ\7f\ 1\12°³ìendstream
-endobj
-1184 0 obj<</Type/Page/Parent 1011 0 R/Contents 1185 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1185 0 obj<</Filter/FlateDecode/Length 2012      >>stream
-x\ 1\8dX]oÛF\10|÷¯8\b\0\12-ɶ>Ü'§nZ\ 3\8dáÖ*\8c"
-\82\13y\12/"yÌÝQ\8aþ}g÷H\89¢óÐ\ 4N\1c\85¼Ý\9d\99\9dÝó·\8b\91\18â÷HLÇâz"âüb\18\rÅõ|\8e?ofSü9Æ\97Ub}ñ~qqõáF\8cFb±¦g'³©X$\ 2Ï\ f\87b\11_\1eL%ö:ËÄZ\17\89\90\85P\85·\87¾X\e+\94\8cSQ9eû¬ų5k\9d©géÓH<\19¯\84O\95\88Máñ\8a£'|ª\9dت\83X^fz«²\83ðF¬Ô»Å×\8bÁP\fF×Ñ\18±/ã»år\8fhfï\96Ë2\9c\8aï(P!sµ|ק\93\v\91¨LÕQèÐV|Î\8e¢[õ­ÒV%\9ceD\81\10g<\89n(Χ߾kÏIZµÑ\ ee     \95hoìg~òêä\86¥\95ÛëýßO\8fO¿ÓI'Ø.Å\0e\0\11\15rÒÅæ\aµã?\91J\8có\ f"C8d¥\v\9dùò\92Q\ 2P]\88ZYü\ f\84¤ÛÒÙ¹Ð\84;àIåN\81¿\83Ðyi¬\97\85\a¥\99rÂ!#äb8\17mQ\82ÛzS
-\10¬\8b\1a²\86\1a\9c\84'\9c\97Ö\8b\\15UÔ&á\9cêv¹ç\ 5ærK\b\92ñ¶*)CÊ\8b\ 5\ 2IRR\9d°\12È\16J%*Y¾ë²¸ Q±B¹Bb]­×À\99\ e´*7»\86\8eÌÄ2\83ö¬\92ÉÀ\14\90\93\ 4Br\a°\91säå» \95\87ûEÍ\8e\9ddjE\9eØì\v\89\f\14z\ 4\7f\10¨W\ 3Ùë\8b^¡|jLBß\9eÀë¡ìDôpÞÆÊÜõ Ú,QÖq\85\ 3tät\1e\1aâ:\12\94\ 3>\19ÌÇA»NI\8bæ£.¤\88Ô\e?;\11=¿þ)JéÜÞØd\10£=©vB´\91ZK9g\ 5 \91º\9d´?Æ\87\ 1$\977§à\8d
-2³\ 1¸¬+ Ï\8d*æ·"Î4:ýüíÛ·oÇ©\8aY\9b\1doP¢A¶\84\85\80\94è!\16\94I\9fôH\99±Õ+\88U®Ì\8e\8d\80\10\0á\10\11w¦Ë\1aÿÏÇû§\80F\e·¾ø\81 \eã8VÓÔ>      \ 5\rÆ·bp=\8f&\ 4Ñ#\ 4\föUæ _©3×\aÜ1d\86\7f;\99¯$¨IÔªÚ@\19øR;<\19¬Ïï\15ôwÍB\18\r!$\94sE\9d\ 2\rR¢A\14,ÊÊ\98Ñ!\9dtÔè*È\80t\17\97I\95s×Bl¹)"õ]\85\ 33c¶¬\14ê2e-\1d¯È\ 3\82ÒZ\8e\88BÈï\83Uır\9c&Lÿi!\80ì\8e\9c\1er+\0¢u\1e\1fy\81þµF椳\9a>wª\ 2\990\7fpÿàtÇs\18×\96£}\94[¸ÓYÁ\18*\181ßéì0Jèû\12Rn£â(êNÃ\19 D¨æ\18 \94N\12Ú§\92\ 3\¢á\12V\15¨R\90¿ðëì\1e\18\19;\99\81¼\0?'|õa~\1a        ãYhÅÑ8\9a\bJ\7f­{\ 1\1a»E§{\8dÂo¢!Å>Í\8b\16â¯\84¦äþ­A\ 5`\8e»Õàó\1f\9fÈ$4p£ä£êá\84$;\8c\96H,`\v5#\9dÊÉ\9e\18Ì®à¬f/\©b½Ö\80ѧÖT\9b\94må¬ûJ     õaàZ\86b<\8eÆC\18Òx\1aÍ®yl\7fʶq&FCYmæSLD\ràè@¨Ä7\16Ì\9d\8d¡¿Ä/î\8cA\90Õr\99\9a\\9dÆ}`/Ñ.F\9fÓtò\81D\14È\rÖ©h¥b   \10\0\18\8d\94\r
-@\1f¡xVp.uáñ\15¼\19CªÀp ^\90\añý\89C\7f\16.e\19¤\1a\r\95\18¨âKaü\17¸\9aq¼¢´Ô\8aÕ¤ \8eV*40\11\8d Ñ©\83p>wÒÛb\7fúó¸Øô¡OT\18\14\80ò(#:\8e6\9dN\955µbmMþ6ó°´\fÞò\ 2!à|\1cMíUS\18ðÄgĽÜÁ³ä
-\9dE¶H86­ô\/_w\8d\ f'VïT\8fÄ\85w]jª,!\ 5\91\11 Ú^z×ëä\8c\ 3y¶£,l\16ôvÝ\98Çw\11\8f\17!\10óµ*\ 23Ç^,Ô¾     M,õN\154\ 6Ò,s¨2¬¦Ç\99\88.Dç5=\10\0ør\Á¾ t\ fHh8\86fÁó©Êà \187uÝ´ã\90T\88\16\98\88<\8dÌN\99\84næLÓ}\ 1@\89yüð\ 2\vÃ\ 2ìpJ\b\12é4\94!\19hf\ 3)a\bUpTÖËÞj¬µ¥²¹vô\1eA\e¸gÖ×U\96uÂ×ù\ 2\1d\1e\9c4EHGa\9f89Ûy:XuÞ¶ì\9a[§î6lïä&\94\9cÑ     \9dØGD¹3U\12øM%Rh§\rU岨0'\ fÌPëîÀlKÈ\89V(\9að¥\8f\18N\8cQP¡\\95C5«*ÀÓ     O,zEÛ4¹bpzA\105$\ 6P\18](ueq«P,ö¯\ 48&'î\0 \8f¤¿\9fßöERaÚ\ 4g@Â\ 5d\8bF\a]p\ 5`zè\84\97\1e\9bcÉêïPt\16ÿ\8es\84\14hïÇÈ!<\19\ 1f,6XÉ\v\97\86çó\8fCk·¦Æc\98¦\ríG
-ú4ÿB\1eNät\1f©WJ\82¦À\8e\16\89G\7f| w_\96\99®gÁ\83ô2,¤\86z\15+Ìi©íÔÜ{\b7\ 4Úf\9fN\8bí\vß
->âVP/¶p\8f°Ø\9e\r#àíT¶&Ìë\9b\að\r\1aeM{7k\17î\93¼ËʲÄæËk    ùN¸ºà\0\92;Ë»\85\ 5µ\ 1\82\89²²%<\9c\95ÅÈ÷Ð`Ulá}E\13§±\91\7f±þÐX$\17¤3_ÂÕàWÜb­Éij,TÆÂ6å\ 1Y\87M¿á\ 1\ fÑÐæÁVïKõ\1a\vZþèxË\1d\0{t\11Y²B!\12,Zd\10ز(\9bØ }Ül\8e\13¼®ü\87Y\92¢±ÍáÆÄ»@\93\ 2ß\ 6Ȭ:ÁÏ­\ e(\85¥®µ] ¸ú_´GûÊÂ\171S\82W¢K¸xôL"ù\8e\vE3ºW\1ffõÒ4\9aàG\ f³kü\8cá&\9aLniu~¹ÿøþ\9e®î_©®\a\13£×1­És(¿AóÊ`:æÛH½l        \10²Ö\9bÊ\ 6wz,p{¯xv¸;ñR/\1c\0íïz5ý\87\ 6\1c/\97\9bh:\99á\87$Hb6¢X¿-.þºø\ fd\84¨lendstream
-endobj
-1186 0 obj<</Type/Page/Parent 1011 0 R/Contents 1187 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1187 0 obj<</Filter/FlateDecode/Length 1735      >>stream
-x\ 1}WïoÛ6\10ý\9e¿â``[\vÄ\8cíøg\80~H\9b\16\b°8Yã¡\18æ! %:æ,\91ªHÅñ\7f¿w¤äjZ׶\ 6\\9bâݽ÷îÝùëÙ\90\ 6ø;¤Ù\88\94äg\ 31 É`(f4\9eÏð~\84W©h\e¾\18\8f\ 6bò½/\86\83©¸ì~ñ~uvñiLÃ!­¶4\9d\89ÅhDÓùDL¦sZ¥\84H\83\ 1­\927\7ffû$£á@VÏ\8b\19õI\93±^'\8aüNzZ®è\8b-÷ÎK¯­!¯²ÌQ^\7f©=iG©=\98ÌÊT\9bg\92T\94v«3¤\Ú\9cäÛÕßg\ 3ê\ f\bA߸Ì\1e(Óf/è°S~§JDÁ\15ø'\13_É,;â\ 3E\89\9clÙ:¥\0\ 3\8e9\8bà\895[ý\\951'í\\85ÓÒÑQy\ eØoE¬ÌÞ ¿óXM.÷ÊukzB
-fÿ\14OptN0¤D!_kBdI¹ô\9e3¶´Q\9dÂJålö¢Ò¿D\93Àh*Æ\r\84wt\82Wnù\ e\8d¤T?+çQN\89ç\vkRe\12®\e\ 1+\87S[[\99\14\95\99\14/\eà
\97¹JÏ;\19\ 4¶jð\1d\04x\0y\123£Ò\9a\8e:.î~Áõ\95É\94sÔs*©Jí\8fô.\84í\85\80=äR\1e\8b\0h\vÏB:w°eêpø¨\\8fÖo\9cb9\80q¦ýãòÃç?\1eV·÷Ká_ýú-\93Ø\ e\10C×!\9aË(~Ú©è\1déBÈ4\ 56N\90Ý\8a£­Êåêt\ 3\ 4\ 1\94RA\1fu\80Æn9\r§È\16¬UG\a\9de\ 4MAs\9c\1f¤\8cÌ\e)w\82\81T\99$\f\a\1f\8dô409Vö¯×K\bÀÈg\0WC\ 3X\9b
-Ü9¢ù\9d­|x\9eÙk\84Ðh_\e\10ÿ¢Lè#cË<¨½T_+]â¦Í±\93 Ø/)É\94,û^½úo¡¢ÆÀIGb\93¦\83s\vh\12\9bç\bæ`\1f\89Ò\90\r§\a\14\1a\95\\85\¹×\80nxß4ïS\94º{:ɹ©\82Ñ   D?å\95óO¬°\ 4\85àúå\8a«\167×+p~\1e²ç\961©ô¶<6AÏ\9bsw×ËXÈŧEmRýÚ¥ú£\85\98_\ 6Ã\18\8eÄ\\8cÄTÐ\17m`4¡y\1f\83|\19ßo\ 6×\82c\ 5[       \1dË-ÃÔ\81[çmAÐ\ f¹B%z{\f^e\90\95ô;T\ e£ã/3½Gu\80\9d«Ìl\12ý\ 5Øpeî\97¦\ 6¨1ÄÀIt+\1eìh)±U\966\91âí|a\ 3. C:Ì9\fUþKkÁó$ò\8aÍþx÷¾n\8d`o\99e\87e\85"_|× \8b\1c¹«]U\14\ 4ñßQi ó\eà\fÚ<ÚT\rôLÐãN\96\fÏC4r\a\8aýA)C_\16\93à\f\9d\910\16\83HŤ¦q8\98`¶Lq÷¬¡ñÁz\16~P<D\bIpõ%i\13¼/ñì­ªÄ\ 1ÀÏ\rëþÃîp*\ 6Ó      ;ê-\0`\87>M\ etùÆ>WèÁ\r\ 4¾\93/\8aG\18¥*S\1cG{\ 1\97ú¬\13\14\96\86ò
-µ~Ë\ 1úßI\15ÌâÉ­¬2\ f        <\83¢ \11\8c\9e5þü´ÄëwÁ]Ô\1e\8bÑi0\1dò\ 2\ 6`))\15ê\ 1¹)z;aýw¸êñeÁeú\91¶õ\9a5fd®ÄÃÍc\8fô¶-WÔÊ\82<e\ 3\11üà\86^ð¢ðÌrÕ        ü;¢Ð]ô±®\8c£a\1a\ 5̸eb§\0\bõ*ó"\ 3n?
-¼^×\1aï\ 5\84je´¦Çÿàô\83ZNW\ 6Xà²;ðÈÃ9\98\1c7,¯\fȶ\82{c\18Ôå6Öx\ea\ 4|\86\ eÒ\ 4r\1ct\10'\16\bPôèeééN\99\8a.èF¹=[\ 5\9b9\v>´÷÷qéµøx×AùÿÙ=ÕÓ£\7f/^AÍ;\10«Ñºi)\ f\e\99ìÝ\15Ö±(&ø7¹\1d\1a\19cy\13\võªº\9b@\84\88w\15¨\11na©¬L\\0XFÉÕz}ÐÆx\bðèp\bN{\92©\88]uú?#m7/ÚV\ e8ca8\ 1®^5V\17v°Ní0êŤo\rÎï¬óÿ\99Vëá¤f%tj¨Û)OU\11\17¡ÄgÇ\16ì[ø>L°\90ØöâZ\14F\fïD­\89Ã#        ÐaAE\85\81ÖZ\89\9däN\85\ 5¡L°\96\8eçm£ª·µÓ(ÅuÐ
-ë%,\9e\8c\90Æ\85/
-¥½\ 1cZ´Fì9»þFn¢HSÛI'ÈÌë\]°%b, É0]t4±°þ¡¢°\86\9f\86+\181*¬oEí£±êÖnCaÉäXíU\98¡Ùê\12¬qÄxoÜà\13[èØô|\86\a_Ö^\95N\93ë\ezQ&H\ 5\90c%õ¥äk-\1dÐ2Ý\1aã8öô\94Zå°f\97Ò¸-\è\ 2\94\87²kª°µò"Ìü·6\83\19ÿ|é7L]N\9a\91\82\81µ\10ts\7fw}»|úp¿\}¾ÿ\95WNºj¯
-76\97\ 3§h³:3ü\8c
-«ùÏôÈk8\7fzñ©\99\91\18\r\86ÐÄB\fâ\ eò`\9dÓÌà}3¹îêa\15\9f\9c7so<\16ó9ÿÈ\9a\8aé"¬/\8f×wï¯y\92þ\8d²èÆ&\15ïda­àgûCl<\83ù%õg#ü\16KßÔS\98ómýÀ¹5Î\97U\12\96Ú+zTÞó|F¿|¶2ç·ÁÔ\11%t\ 1_<\9e\8dÅ\f¿óÂ¥ó\11\7fôquöÛÙ?ü¶¯Èendstream
-endobj
-1188 0 obj<</Type/Page/Parent 1011 0 R/Contents 1189 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
-1189 0 obj<</Filter/FlateDecode/Length 1775      >>stream
-x\ 1\8dW]OÜH\10|çW´"EÙH¬a\17² \1eN\82@î¸; Ç\1a¡\93öeÖ\1eã        ¶Ç\99\19³ñýú«\9eñ\1ac8]Ä\vë\8féîêªêö÷\9d\19íãoFGs:XPRî\9cÅ;{_\ ei6£8£ù<\9aïÏhqü)ú´8¦8¥ýh\7f\7f\9fâd\12çÊ\92¨kY¥ê\am\84%mÔ\83ªDQ´$\1a\97k#SZ·ô»Î+ú\8dbijë\8c \9d\91Ë%-E¹\16¸*J\12UJ8LUIѤx)\97FR¦ÍÇøÛÎt\9f¦³\83h\8eØ\93Z['\8drmÄwö¾,º,§]\9aÓùQt|à\1f½¾\89/è$<¶-fB1ââ\84\92Þ\9dëR¨\8a>ëÊ\19]\14Ò¼óY k+ÉÈB8äá4)\87_\994ü¿®$ÙZ&*S \95\12Ϧ\\f×*+§\12á\94®8ä e\97\vG\89¨¨©Ri\18\99\8a\96Wg\94úø\11½ÊÃRm\94öñîU\95ê\8d¥ë\98\96Ò<!\89\83hF\e\ 6ÇêÂcû$ðpcGA\13]Ö¢R\12ý\ 1²kaQ\8b®øà'ÔEò\87\93\95\96«â^üyzMW¢\12\ f\881G\8cÚh§\13]D4ÈA1Ti\93Èt\14îJ%F[\9d¹i\8fÎF´àCF©BËÕºqªzð\91\1a\8b\10/\11£T8ÁIF(SÒùÍÕéåuä~8¦\0\92\15e] \14\9d\8dÂæzÓ\91\88ñ­\85A\v\ 5¢±x31\92\7f<£m\9f¡°¹`vþG"d\93\\96\1c\13àx\16¾ìhåK\19@³<½ò\94ÄcóEtÈ\\1dÞ\rÍã,×\9c\9c\bG·$\15G AuÁtÌT!}ÏЪÊ\11°â®¯&÷7·\7füz{s÷\956Ú<â}f\1aj\1c!\12\9e_}äêq¸Ø\1eàI8\0\88¥6b\1e\82\ 4àAìr-Í.}5ª\14¦Ý>\97ôJy\1d÷L$\8fMýúÉÕÇÈKÎ\8a\12u\83m¦ñº¦\9båÞ\9cî\85©;bïÒ9¬\ 3°ÐWár_£\87ÁãOV\95ª\10ãbÁQ\90ÑÙ]\ 2\9a̵M®\92ÜkmPê\e\95\8aB\83\8c\e ?`÷¸}±¦RT-ÕR\83}Üoø\ 2[\87õ\11ÐG\0\925\16¼Þ\85\1a©\90î\ 3\17ز¤\92B
-(\18Â\12Ê\8cO¾@KÛAd²-\­D\ 3^ö¶k\1eº\99û^\1aùÀbj\ar\89\11¡¿Ì\r\ 2\87À)è\94µÏ]\1f\11$\956\81\1c}=@F9%
-õO`\93ª ·2üÏÂcT\99P*ÁY«    W#¿7p\90\ 2\ 1\18ï»
\7f.d   #A\96\9ed¦©<²à\17^\18E\1fHBVOÊèªÄQ\81"}\19¢\0\9a\ 2ø\91\12&NÑY-pÏÜ\ 6BFëÙ\14\81|\ 6Ë\1cEMÛJ\94x\83ÇR¡E*Öèg¡Ö\ 6Ö١Ĺ\ 2Wɳ\8c\9aZW\11]B\8c"q»|ë\7f\8b\ 1Õ±\rKî´Ë\83õa\f\80OáW)Zªd\180\8f\15l\f\99CïÒ b f\88j=Îü\7fàÈ\98Jñ07ö\8e\9e\9c\85Æ4
-®Ï,\1e _\8a\ 4\19I\1eÌ\1aõrr\ 2x\97`{ʾ_Ö\9c(f_[ã^7A± øu`ào\9fOV«ûËëëxµú\85\11\7fÞ\19&p}Cï\97\9eÖ·Z»÷«Uøq0_­X6ê¡ëÑÖ,¹\90\ 1%\88Ç\9aïÓð\14\-à\1f\9d\8dê5³\1d\90\9fÎu\9c©Lrý"Ó7òBOÔ\93ôóÅ\8f´Ð\9aN\8b\9eô­n`\16-v \b\ 3­\84¾2P®P0\ 1o3LQ~mÛ"vÿ\13Ð&\13M\ 1\8a\85æî\8ex»%7îw+\92\95IÓo?\83V\80«¢[(\86(îR?\98\87\ 4\b\9b\87\97XØ|°q¼\9c\9dF>K\f:çÌ1àFé1G\96\17\9fïn/㿻 \\8f\a;\a+x{<c\10\fa\9be.\80(Æ!\86{â K\95\86\ 5\8aß«AÌ\8c$hú\16Ýß,)\0È\13\ 6\ 6\89\99Ððlï¢ò\10\f°Q©SY\84\14-ï'}²\ 3Oñ+Ó¨ÔÞ\ 5Ë\ 6\8a\1cì\f¾«¥\95Å\13\94·\96pM\7f¥õ\1c\r\ 4Å\01¥²¼mQ\ 6uy4\9f3êv.\90&Õp±W\86\rì[\14\0\1fh<µRý\16(\ 3yß!Ù~BÀÃÑ\13#-ðµ[@\86üeï\ 5\7f\ 6}xËwÐÏ\13¾ÊkÛ\87±¿õe\84öe\8a×\86\cÖÃ\0dâ´iwéÁh¬\ 6a©°¹ª1¯\91Ì£Ó5»\r+\ 2\ 3\1c\B¢ðÝ\91þ~nVb<nüh@ÿýÆ\84i´Q ¡§\99r\90í¦êMüÅN»ôÏ\8f\vóÄ\18\89¢[Ô\97[2u\ 4\ f1 ¿n\87\r¤
-mã\1d\93÷\ fvW´\7f\8a{\r³\8eg\8d¦ë\9bxÄ3Î\12¢À\bó\93\88ÇlÖ \8c~6öAB¯à²x\ 5ðY>ïþy3\f{\7fX)»
-ÇÈÆhêK®\80\a<$y*\ 5Ácè÷Õ\9e\ 2ìö\e\ 1øö©pïð*\b\92ú}\9dÅÏl\19Õ6P\rKaÐ2¿k¼ø\84b*úq8e\8aøÀ£×W\13\15ás\ 1²Á\87\fÔÞ£¾ÝX8úÞ\97ãnlÍ\16GÑþñ\ 1>cçÑbñ\89×s\18ÚÙ)v\ý\rDÅæ\9a\8bô_pÓí+Ó£9¾vÓÉl\1e\1d\88?\18\1a\13ö¤Kìòl8ü-u\82]Öùï\1cðýVc\0`´z\88\11Å;?'uxt\18\1dáKÚ\1fz|À\97\9d¿vþ\ 5\©9Jendstream
-endobj
-1190 0 obj<</Type/Page/Parent 1011 0 R/Contents 1191 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
-1191 0 obj<</Filter/FlateDecode/Length 709       >>stream
-x\ 1mT]Oã0\10|ï¯Ø·+\12¤M)Mà\8dò!ñp\85£9¡\93xq\92Mk\88ã`;ôúïoì´GÕ;5\95\12{wggvì\8fALcübJ&t>£B\rÆÑ\98.â$Ji\9a&x\9fào\98ªÁ<\e\8cî§\14Ç\94UH\99¥   e%!|<¦¬\18\8aÂIÝ\90 Î²¡µ°ÈúèØ:.IZjÙ(éüÇFºµlÈ­\99j\895KºÂ\97p!ó\eB\8dü\945¯Ø¾\9eD'ÙÛ`Lg\93Y4\ 5Ü0CÖR¨\\90\0óÉ\88×eW 2°\9d¬¥Ûöå
-ÑPÙ©6@½È¦Ô\eK\8b\8c\96×ßI6N\93Uy+¬Ý\94Ti£\84»"˼\ 3\8cÏ£\89\a¼[Ü<ÿzÊ\1e\1e\17\91ûí| rûpO\17ÏW\15Ñ\944j»|d}\87£v\13Ð\11²Õ\9d¡\86\85\81\1c»ö\954\ 6µPé\bÐë²£\11\86t\95(zVx\87¸UWSÞ9\ 2½F;Ê\99XXYoý^I %U[³â\ 6P`j¸­e!Âp°Ù\8b\98\8b²ÇêîEò,_´y_\19ݵö\94öë\97\17§äIî¿!¦\ f³.\94·aoÉæ\93\8dõíQ+\8c\93\85l\85c¨Fâ\88ê­V\ 2Ë\96\8bÎø©õ]õÃ\ 3×B7Îèº\ 6«|{\88 \83\ 5\88`\9a`\81\9c¹A¼1\8(\81ÌJ®:Ãå\9eá~\9c×µÒ\98\ 1#\7fKe\8f¿\91uÝ;éqqGOF*\81Í]s7û&\f½\ e\9fno`IzpÞÑ%[iD^sß0\8bb}Xñ\88kh\13\1e¯1,\aÛ0ÍEñÞµÿÅ\99\a\9c]\85Cë£\81 2\ 2¬·õ?\12\1fN;\1c+\1c\17\98 \14NäÂ2Y}Ðí\11EÙ¬\8e\9aþ;?xéK%\f\16}ÃK¨Ú\97/´jA)D\85ÃíOµá\95´ÎlÃ\bF÷éîæ\88g¸UÒs\8a/ãþH£¿ù5d×o\18\1eä(:ïÝà(ßÎÙ>á,\99à¢)\87ñ$J£ID\98L\18roí\87\ 6X]¸\83ì\15-Ù9Ðñ}>k¡üëO\7f-\ 1¥ÂÕb}ái2\8d\92Y\8a«\fEÓ©_ºË\ 6?\ 6\7f\0W£ªéendstream
-endobj
-1192 0 obj<</Type/Page/Parent 1011 0 R/Contents 1193 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 704 0 R>>endobj
-1193 0 obj<</Filter/FlateDecode/Length 1526      >>stream
-x\ 1\8dW]oÚJ\10}çW\8cÔ\97T\ 2\a\13\ 2¤RU壹ÍCÛÜ\82\94+¥}Xì\ 5öÆö:Þu)ÿ¾gv×`\9cÜ«*J\14ìÙ\9d\993gÎ\fϽ\98\86ø\89i:¢³    %yo\18\rñ\84ÿÄüçÛ_½øl\16\8dé|:\8b\86\94Óh|\1eͧ\8cælOç\93Y4¢ñl\8aÿGø­$­Ü\8bøb\12M^{1\8bqIçÀÕ¢wz{A£!-V\88i2\9dÑ"u¡àIrr½\11¥\95\15Åg\11}Ò[²\9a.\13\90 +\91<Õ%Ýè\¨âíâßÞ\90\ 6£1\8e\9f\ëÂV:ËpP\15°¼¯+\99íh.ò¥ ýË´u\94c\88§>\86ÁÙ\18\89á\1a8\8d#º¯d%\9fke\94\95ôM\8aT\15kövz;¦8\ eGFS¤\8c#Wr¥\ 1ÄN×\94 \b\12À¸3\1c\8aÝ(C\89Ï©Oe&\85\91\94\8b'I\ 6!âµ°î¬À\87Dç¸Ë\8ae&i«ì\86/\©u]Á?\89\90/Bt¡úÔîo®\19\9aT\9a¤RK\99z\97ÒÙ\1eW¸ZÓ\89Çc\80C\83O_\1f\16_\8fÍ\1c\eØ,òÉ\1eãã`fç\91+úÒu\91zÃWPyà¼\90¹\b\88\1fjP} »ð*\17ÉF\15\ 1\ 46æÄQoQ\98-
-\99éµ.\80ås-\8d5´ªtN[]=\19+¬Ò\85q\95v)РAåA\15©Þ\1aú²\b\8e#zØÈBþÄ}\82jã¯å£ì\87\ f\87\9bû(\v*pxÀ\85(d\82 øTÇ¥gc+AÄ\9f¢(O\866
-\11o$n«Ü\95ì¿\10¹t\16¥0\ 6>Òý\e²»ÒW\90)£«
-\1e#Z \94#Â7©îY]\ 1£2SÒxÒ\b\0gI¯\90\94\0­®íÞS\9fð\86ä/\91\83\90îi\99\89\ 4)#Pÿ\99#5TVz¥`¡L'gcÁùÔãäMWu\96\91Ë\r\9e\19>~\1cÑ%\9eº\16h\a\83ôü\ 5\81­\-6§T\80üh\10\7f±Ñ\83D ¥\1dËÐéMâóËÏ\8e¡Üü\13H\16\9a\10 !pî!»Õô\ 4\12\18Fàei\9c8ÀÝ\98\9b­\ 46L9oö\8e.Ñù*\17ÕîåÁNþßOÐCßߺ:j0\18hæ¬\ 2G\ 2Õ¢\84¡ï'W|Â×\93»\96Å\ 2*\ 6J\ 1¬\\18Ö¼D\97;\8e\9b\1fµ²l\12ß39¼§\rZ\1f\8c\84¼\14k\80Ö.*JÉ:è`õï\99\8e(i`\1dCÌ4sG\9b\8b\96\92R¤ÓI\16\ e\114êù\9f)ún?jiVi\9f£p\92\ 5\9b$\18þ\82_[±#åU"h\ 2S|ÇÉvTÁõZ\8dø ½\89\80^{:¢Î   +m\b\9c\83\15â§P\19ËLD7^V\19\85N¾V¡C\8b\ 6V\87p\ 383¬ÔÆ0mZÊÒ\0\8cðÚ\96\8c%\1dÐë\13ØL AÇ\1fú\ª\9f>Öæ&'v!ø.Ùçª@¯BÑ\fT\10\83x\14Æ\9c^­T¢àc\87ÙR\96\98$\18\fnTzР¡à)Ç\90Ô\10\97Âîåï\1aêQXÓG?&YÝ\8c»VË5:9\1abW`Èÿ¹g&\ 3U+\7fñp6u\ eýá\80\83G@\ 16± ¤Lå«KØ»G{\91o\86:xÕï b4*P\8a
-§Ñ\16NèùêÇu¦\97"û10PFÎ=´\8aÉ\97\11\8f\98atn\8c´ïøÖÓÛ!]4#{ìÕ\82\95\9dçWIï}l\8dû!¶\15¨IH!4å{ÚÉ=E\8e-\1c\17\rn   \16Ç\v\82[\ fæ<zDF\1a    ð\10À(7\94\7fA\8f\eäi~øyA\8f\85´îÂ\1fd6L4\91\19\reØ1\90H\a\9f\0·\18à#6\rÜÄ\15eh\82R7\89\84\1d\ 1\ 2·i\8b4û£´b²q\11]L&\14r«XÀÑ#ð\96h\ 4Ý,\13(rª\13Ô·°ÿ»\18`_sSÿ¹\16\99Zñ8zeø7í\80
-\1f|\89^Y >"\82\1d²ïl\b/\95y\ f\9a#[#h\95\+§¬\8cÑ\17i¯î¾ÎÉ\97\9e©Ù\81Ë\1d}\13'\1ec>òp÷e\ eì+\ 4Ã\88\9d\ 2í%êQi\91B^0e½4f\1a\83\8aBN\a\89w\ 5lBpÝÑqX\17
-ËÍ>07>C\10ËW\83ðw;;^\16èM¼ôÒ\869Ï}_I\17\80ÒñwLl¤±\859d\89°:³þ`gã\91\ 2\160O¹\93R\1d\96\8a\9f\86ÊbiÁ"t\90]4c\9f\96aÃø¬\92J\e½²\1dï7^\8b\14/\1dÌ&¿\99¸M\eq·Å#t^\b0ttÀÚðþÔð\82ç\1fÊÄ£\89\9d\9dÞÎ\ e\vúÅÈ/è×\7fú\85¢5¯y1ù\93/\11ãé8\9aNfø\1a\ 3Ù\98\9ds\f\1f\17½¿{¿\ 1Ö\93LÒendstream
-endobj
-1194 0 obj<</Type/Page/Parent 1011 0 R/Contents 1195 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1195 0 obj<</Filter/FlateDecode/Length 1586      >>stream
-x\ 1\9dWÛnÛ8\10}ÏW\f°\ fÛ\ 2¶â[l§@QäÒ yhÚE¼(\16È\v-Q6\e\89tE*®÷ë÷\f\8aêd\17\8b"¨m\91s9sæÌèÇÉ\90\ 6ø7¤Ù\88ÆSJË\93A2 ³ù \19Ñd>Ãç\11þ*I¹\7f09?K&Ç\1e\8cÏ&¿Þ¸\\9c\9cÞ\9cÓpB\8b\1cN¦s|È\b\ e\ 6\ 3Z¤o\86ãd\9c\f\13úd¶\94\19iIÐ7S=Z'\9c2\9ar¥3RÎâY)\94¦ÔhW\99¢\90Õ\87·\8bï°<¡á0Xî\8ff°üæ\82î\16´m\99À-·\96\8d\81û\8bÏ\97\17øA8Ú
-\rÂ
-\93\8a\82j++r\86\96\92D\8d\vÚ©T8\99ÑZXþÝGr0ÄÞ\aÔGø#öz\88\8brS\91÷\92Э\v9¹µ²´Üá\8bÒ+x¼\93îòöË=iQJúQËjço±õUeêMxà\8dü6LÙNÇ\9d°¶.\ 1\96ÏC\8atM&÷Y\96ø¬4\9e(G+\89ô\96"}¤¼2¥\7f̾\14?å¼\7f\81\94\ 4ÀN\85Æÿv\v4
-³2ºã¹\92°a\9dMhaH\eGf#5Y\99Ö\95r;Z\9b\ 2æ\97Æ­½¿v\1dØ8ghe!S\ 6öáÍâËõ\97w¾ô\b\88\9f]_Qº6Vê\87·\1d¿G\82mU\89\ 2\ 60Q%t\91;.%\97\98m¶c\80å,xârÿn)­dÆ¥\16\85E<\&®IÇ7G¾\ 1ä°\94=¼e2°Ý_"ê\91°\8f\`f\80Øl*ó$\8a\84\e ?\1e¢{@\19ÏüQBßÀ5.\bÛü
-\0´DHÙKôæÓò     ù\89ÀØ@b\84\94®\85^Iâ\14\9aX{°\89¯\91À vf´$tUtåk¸ç5|ó\85nòmøb\83¾@ßÈ×%ã\0z2\12Þ\7fä$q\ 3\85TKa¹L©Ùì:pG*Ã\1c\ 2ì\14\90ûL¤àuL¡\17¸VÖ®\16E±{Öº\9eÎ|®Á£Á\b\980\12\87Ò@8X\9búãɾ4\93\84®Ð  ÷¢\
-¯      t\89NBk^\a!ºzU\88\92)Wø\9bB\e V\96\95l\94\8czh\98\90\92\86º=IV*d  eÝ\14,6|\f¬q&5 ãZà\ 4wØN:D\0\92ä5§¨ÊM!K\90VfÞX\a½\10ñB\8a\92IÅÕãBÀr­3\84â@f/B¬«\8d¥P*\0Õ8\a¬5wO´à)Ä¡p\18\1d\7fà\8f²k´3³¾\95¬G\17\98\8e¦\ 1SFó\96\97n       \16ç¬ë(¶ KÐ~Ë`ùà?Ð_\92õ\ 5\95ó\9a_Ia\11\7f\16\87\10Å\93P\85\ 2
-\ 4±Ì;\11\ 4Ñ\vðDJ\82©,]\ 6X<ûÝ\8b úÅ"Z\94\1cÝ\ 5µxR©\f\92\88\82\ 5\11¤mÓ\8dðÑñÊ­ì\89¶Õ¯\12í¬\99}@'ú\131\1aÀrL\ 6\ 2¹îY\ 50·P$½\8alA ±Ëßq4\98å{ø\19Í\\15\cõ\84¹vúùâêÓíÝÇäþö\9a\94×À\9c'\ 3\83\15\94-*\13\10ò=À\b _\91R®@#\ 2\93*P°Ç\93FÙNò\90U?;Q66\98sg\ 2ä²ÆÅ _\883(VFb\ 5Qàz{Û\bñ X|\19îÛ¢ÕtuÇ#°ê\91\rÊÜNí`\v\98¦Í,ä\ 2E)ÇåX£4®\13ýY2\1fRÃÝ\87ÑtFìð°oøçýñy(\ 6£û§V?\83&gÂ\89¥°íDìN§ëÊhõ÷+!\ 4\bJ\89ñ\vØ0¾\9a9ÚÉõTºôÔ\8b\1aÀ\ 3¬þ{X\1c¼h\ 4\1a4ªò¯\ eyâGÚt\1c\95B\aYÝó<Ô\f-\87\14\99ì\11º\92«\14éÞ0\98÷\8b»Û{\9cñ*\1fÉÃÁòaîwlU¢ã\8e\82e/\9c\a'¸óB\ f¶®Q)á\9e\85\82\10Båê"óZ\89<¤6õjÍChïË?ï8\vrFb     Â\ 10\91¦ÒòÚd;5ä¥\93\85\8a³Ì!6uÕL\8fç\849\e%sVþ\17     3õ\83\81é\12\ 4g?\9aö\9c\89ëê³^µå2\96û@ç×ËÛI\96   \1eØÅrIKô¬«Tú¸CÏHä\8fx´ü\89¦Æf\86)t´\19\9aU÷ÅÜ\9an¹Ð;Xs~{$»fªü×°\99\19\16+Á¢ÀÃNV{VÂ\15`³i¥6¨\1f;\8cÚâé\89dÛÆ°Ýc\84óvÏÓÔ\19\8c\8daþ0\10{°;Þ\ e-ì'õQ\8c\1a\b\8e\1fÍ\93á9õ\e\8aÜ(Í\ 1ø\95Ë7Ä\ 1£Ü`Vóû\ 2\87ÓÚ¿üPD\ 1ÛÙà\14:Äa\ 6p¸§7\ 3:o^\87â2Ã\ 6\82\ fRÞä5\b\\8d{lìÔ÷h£ã\a|=-½Ç>âåþôf\1eÅr8Å;â|LÓ\19¿ÿ\81þ~\13¤¯\95ù\ e>acJñ²\82½\8d©Å¶ûÍ\85þl\84\97À¸
-ÿï\97À   ÜΦs,p05\9f²\87\8f\8b\93?Nþ\ 1jYª\eendstream
-endobj
-1196 0 obj<</Type/Page/Parent 1011 0 R/Contents 1197 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1197 0 obj<</Filter/FlateDecode/Length 747       >>stream
-x\ 1\9dTMoÚ@\10½ó+Fê!4*\ e\ 6bÜCU\85\1c\9a¦\ 5©\87ª\87e=Æ\9bÚ»Îî8Ôÿ¾³kC\bí©B\b³Þ\99yïÍ\9by\1aÄ0æO\fó  L\13\90Õ`\1c\8d!\99&Q\ 2³tÎÏ\13þZ\84\98¥\97Qzúb±\1e\ÜÍ \8ea\9ds®$\9dÃ:\ 3Î3\1eÃZ\ e\95\ 6*\10~lK³\11åÏ\91CIÊh0y8wÕ&\92Fçûÿ\8b\9bë\bÖ\85rP\89_èÂ\1d>\ 3£Ë\96\81l\95#´áT\8b
-auõyqõ&\96\8f\831\8câi4áêÃ\9d¢"\ú¾¼_\81\8c¶OË\99µ\81Ú\9aM\89\15\88®Â«\ÀW\ 4Ü#-\96_V°µ¦©!\ B\90\7fY¡Ð\ 4dN\8a\0\103Ø´P\19V\8e\83\98¬Fæ#\v¥ÑÃ@¨\85\9eÊYf*Á"U"0ûÀèΠ7V\1e\91×Æ\97;d?©Ûk°\81]¡dá)        h´zjð@"Àgä\16\83\16\99/\10ôy°ª\12\85\9b\ eĵÑdMY²Z¾ÈÅÝ{\88g]_GÓ8âÇlÈ\1a_Fq\ 4\9fÌ\ e2\ 3KNZ\97J
-ò\\11¸¡µpnÇ5T\89\1f»4/ö\18M¼=\86ßú\98×N8
-ô:;ÔN\91zfÍ\96\ 4\85ï\95\ 1V9órî
-ÔÈm\ 5É\ 2o½X&Ôg5@°î\95È0\908²Å-ßo¡a\rÎ\1c·\80Q\1a\9bõ  |Á\90¸7ìk\1e tv\84à@9Û\97\r¾]\9dZb\7fOéí?Ä\81\0Çä\84ÚW×È=wÜ\8d=ìIÒ)~Õ\99ô\ 4\11O\r±q\98HéýCø\9b^8áS£\9eE\89\9aÜ;P\ 4\88\9dE^>\96\95Ø ¨¥mkb«\1a/£ïÝNÙ¿4ónÝ GïDëÉ:äàú¨Í\a\8e<Ô¹5UÈôÀ#Û7ÄO/³ã\7f,|xÙ\90*\15ñ8»V˨û\ 1\89¯ýuçzC\93\15ÚÕÆR\14Î\149,s\1fÔ1
-\98¸\84\90\12k\82s¿.ÎûÌ!4g\8a~+\98\86Ø°¬\8eÝ÷ÄÛ!`mk<A \ e\82öã\90ök.Nx7¦S\98L¦]\8bÂ\fÂ\835\8f¼Þx\9adS±ÊÂo:\9f\ f\18Í'¼\15ÿg\88fóY4ORÞ°\1c\9eÎ}ÖÛõàëà\ fEyÖ\83endstream
-endobj
-1198 0 obj<</Type/Page/Parent 1011 0 R/Contents 1199 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 717 0 R>>endobj
-1199 0 obj<</Filter/FlateDecode/Length 2061      >>stream
-x\ 1¥XÛrÛF\12}×Wté%T\15      \11¼\88ÔVí\83Ö\8a\13U9±b1ñ>ðe\b\fÉ\89\0\f2\ 3\88æßçt\ f@@\94\9dì¥RQ       \9aKßN\9fÓã?.b\1aã¿\98\16\13\9aÞP\92_\8c£1þÂ?bþñé\87\8bÛE4§ùd\1eM(§I<\8dn\9b¯\8c\9e.âyÌßñ$\1acu\1aÏO_¼:\eG74[Îñ3§å\187\84\ f^ë}æ\14Oa²·8\9fF1Íâ[9\18ßÎáAø\12\9b\8b8ZÐl|\13ÍÄ£y4m¾x\95/\9a.§X\9b-\17ø\9d=s\9a\171¼YÒt\1aK ñ2\86\89ð%\97ö¾\11æ\84Mw«ýo¬N\97¯W{ßX½\19ÃÝîì¿V\17×ïoi2¦Õ\16¹¾Y,i\95J\8añ\97dðn¯ÊJ;\8ag\11=UÖ\99bGO*ߨï<ýêµ»þI%{Sè«Õï\17c\1aMf8=¸K\12[\17\15\99bk]®*c\vüNª \ f÷w\8fto\9cNp×\91\ f±ñx\11\8c\8f¦3D\8f\v`-\8eè±v¥õrõõû\19Åq³k²@|صÚ\eO©Mê\ÃXª}âÌF{ÚÛ\ 3U\96j¯O&ÓÖ$Á#òý@x\9f#õÖå&$@J|ª\9cJ\r\87¢²ì(Wè\94£ªö\9a|¾)\95÷\87t=\98¯¯hk2\1dÑ\ 3\12à    \7f\86\7f)¶©Jö:­R6\98ñ/GÚ+ì¡\8dò&¡ºÀ\8a¯T\91r\9aíöÌ\ 3I^b\8bD\97\15\ e\15isø`Ý3\1fè\82DD/=\e¦À¥Y¦Ó\88Þ#üÜ\ 2qýÚ <|÷\999åPÙ
-\95ª\1d\92ÊæÚÂ\19í\87TfZ!ÃNoa    éæ<lm\96Ù\ 3ûâqÒG|#\1aw4áf@Å>\96º\90(Fbëu3»\1d\rh_Uå?®¯\ f\87Cd±9KU\19Y·»~½_\18\0û¯ß'\r,F\8bhÉl\ 1#ëÉÍ\82x\7f\a\1aY\1cµ\954\8f\99*tu
-çHO!_\7fç\95)å`\84Ã>Q¥\8e\12\9b_\9f²þÿ¹8\9a,£ø¶KÕ϶Ò\ 2\9a××
-íI¦>~÷I\e\86âc½É\8cG\13î^om\934`\18\18\15íj\93âr\eÚ\91;âéè+\9dÓ]\9a\9bÂx@\1d\1d\82C{\93ì\e\90\85\ 4\9dRét@Aªà­Ý\92V\8e\9b£Îsí\86 \95ñD0ÀÌÐ@`u°¤Ò¶\93\ 2\97\0DÞÖ.\ 1Ì\82É\\1d©töE\9cÜhÚë¬ÜÖ\19)'lÐ\87Ôj\1f¸ç+X\12\9e\1a=Þ¿\e1æF?~ü¼úø­\14åÊ\14\15þG§n\8eô°+Tb,½³u©U-1üoX\83{ôó\8ar³CN\99\a\99¤¸}·Îæ¯\9déJûpÿýÝ\87\7f¿^íª)L\82\ eÙff±\94«Bí´0YèÔ\9d\83çÌN¾F\ 5\15_5B\11Ú\ e\b\99\91N¼·\1c:"-*\87îE/\83a¶fW\a\7f¿\1az{M¯ÓZ\12oa<k8\1aL>\ 1\15òåi\9dp\ 6Ø\97®3\19\19-\9d÷       v\b$èâäË\epwɺÔEâ\8eeEÂÀÖ¥\9eþIGí/¿\95?DÛ*Xð\ 5Ã\84\04\8e\96.\84w;\17\aÂçÃW:!wwùì\93iȸ\97í\85Êõ\90>üt\r\b´îq?í\85@Y1à/%{U z\95ÉùÏL´­\1am3µ\83\9e)4ÂFkI]¯\8a,c\9d\ 6½\8d¥'Ia±ÕÐ\10QD\0'`ÄPò\1az¡2H\88\8bB+ìÐ\8cÂê¬a%\9a\11:\1fÄ\93\99\9d\ e¦Ú\13Î\1c)Sn×Ê\7f\v\8c¢Î7P2f\ 4VWOë\81L\ 4\9d·ÕÞÖ\1e¡úõ\95@쬥\91r\b!\13W@{\96Qfís]zÊk,\80\13JíxºÀ\95^ÿQc\ 20,Ì\11ý`^\0\9cVn\9bø$\82/\ 6³\88\ 6?U\a{VÀör\\8a\89B:"³;´ëz`\vÖ5\b6\15<Ìd0ç=w2\90R@\1d¥©¥Ë\98½`:\871\96@\1cаä\9eÏl¥\ e\1e\12n,1Ma¶Z_\rá.BåL·a)¨<mlUe\1aF\9eÅ\ 3dZ·ÊJ\9fy\9eÀ\89\94ÓÊ}\8f\86\97@Òýv?Õ¯Å&v£.2¾\80¹\15¦\8fF¬ÏInÊ\83æ_iê|\82©Uf1\ 6\11R\922qo2\88     \8c\84â\9d\8b\8aåY\r\ 3\99P\97Óef\12\96\ fÕ\8dQÒqBl<ªà\96\82P\ 6Îc?,ébX\95YçÀPÎô\16CV\18ýô\17ä\16Ã\1a¾mæ\e"ô¡\11æmÇ\93óÇ"Y\ fâõUXéZ\ 4à<ßìýþ[[éàX°\13\80ÓæC\14\0\8b\86ü¿Jª­@öHµu&\8c/m-î\90ã­\911\94\81\83Äå2m£Ùú<\14\94\14Eèh\ 2i<Mª\84\8eáîÕ \17 È\92³6g\98qÐ=\92éiµª*\fØ5·\7f\v$\85a;×Ýä\89±°e5ý¥4\8dæ1³\r\19ñ`\19\9e?>é\fb\88&xH¹o·æÍ\±\1e|z¸o¨á\1c\93\7f\91¨V}ZTÞqGa¸¨³\8a¹\bÉÂÄ\9abbM\fTCÆX\15Æa`\96y%ת\10Új\9f\báqÐ\ 5.m\83 \ 1yLé\80Ù=EL\19FÕT\8aÚK\1c+ÿÝãC3ÑÀ(\86\v¸\93\11f\r7\87g\87ô>\86ÉÜ\16 '\19©\9bö\80\ 5.±WyºAy\ 1é­\ 2\a¥Ó/\ 6\10Ëä\15Õ³+TÂ\9e%2òËq.
-ÎÃ\9d /\82
-\f\8fä-±F\9d\1e2ï~{¢ÊiÍ´\fÕnƳ 4|:\ 4b\14&M\1eîë²´®
-´x\86\97àéF%Ï\1a8]\ f\8b\9ai|ÒvÝhÄò1âá\1eÛÏ\e\ f8     \7f:ß_¥\9b·ÛñÜrà\7fР "¶y\89§\97(iëd[\96\165\9fÃXÁ\e9\94'~Ë2e\98"Éj\9e\8a\91í¯\9bÿ\86»ª®,\ f\rdKÖ\82a\80Æz :î½M\fÈ\8d©\ e,\ 4g\ fHûyÊXÇE÷\83\f½\9a4\0\8dîå|zkHqð\80ÌLuìÔCô\18¯2(\1c8ðô\98Äæ-\1d\8eÏ=° chy(\0²&\92^{\91®>Qðk\16Q\99¼\14lâ!\0\0^\9e\88ä2\1c¼\94iòäॸ\r\84!\9f!\9d˦ú°\8e§\8e¨Ê\7fú\8f\vôßü\83Âl1\8b\167Ëð\16\.Ùø÷«\8b_.þ\ 4ßX\8b­endstream
-endobj
-1200 0 obj<</Type/Page/Parent 1011 0 R/Contents 1201 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 726 0 R>>endobj
-1201 0 obj<</Filter/FlateDecode/Length 1979      >>stream
-x\ 1\95X]sÚF\14}÷¯¸\ f\991\991\ 2\ 4\ 6ܧR\13§nm×5xÒÎð²H\vl,iUíÊ\84\7fßsw%\10ÄIÚ8`ÄîÞÏsϽë\7fÎzÔÅO\8fF!õ\87\14¥gÝ \8boø­ÇoO\1fÏÂ^\18ôér8
-BJ©ß\1d\aWÕSB3ÞO\97\83\ 1Ö\ 6ã\11>\87x\15\92Vgá°\8bc\83Ë0\18ð±ñ\10\vþ\89\8f\rº\83`¸_\1d\8cûÁ¸±ÊB\a\83\90w\1c\ví]]ASØe-)\85£1\84û§Ú\96¾\93t|ê\97ùYçf@½\1eÍWðv8\1eÑ<vNvi\1eµb\1d\95©Ì¬°JgÁûùç³.µÃ!DÏãÖ|#á\8eà\17­ä\96r­2kÈj2¶\90Æ\90XêÒÒv#,Ù\8d$>Þ¹     +e­v{«ì¦\9dÄ"7"õ\8bµ%-\8aµ4\94iKy¡_U,\ 3\82\9bN\1eÉ\94\v[YÓëÃmXSÈ\95,
-\19³~\959\85\f\ 45\8\88UY\94\94±ü\89¥ ½{§&\94J\91\19Ò+äÊ\16J¾ªlM¥\91\ 5\89(Òef!}¥\8bÔ\85\84V\85NIdôIe±Þ\1aD\1cÈ\98DV½J\9aªBFV\17;ÂéWY¸øun¢*\0íQ0f\8cÁöE8\1cUá©#à\16ÛµsGVå\89\88ب\8e´Q'\17Ælãÿ%º\1d\8e\83ÞÕÁe\ e¬\91\91ÎbRV¦\14Á\9f%\92
-wÓ<Qf\83 .w\88\ 1+u\19x\98ÍàtL\8f\93{Ju\&Ò\ 4t÷ññ\8eà¦\ 1T\ü\90s#O²\94¨e!\10USkÑK+T\ 6\r.\92\8f\93é\1dÍôÊn\19V\8b\96;}\vÅ\9aZ\e\9f:\9dív\eä"N\ 2\18Ú9ÞêÊ\94·.Þ\aô«ÞJ\18vá@\11K(L\9c\81py¥Öe\ 1¿NÌt¦S.¢\17±\86­lÌRî8BX!\13é\2B\8e\0Våà\8az¨!.¦v\7fà\v¥7\bú\ 1Í<láª\8báÌa°âf\ 5¶Ã\11jÛWW\ 5w\91ÆK\8at,\19×aÀ\94³\11\ 6\ 6É\8cb8\96À\9aØåÃJcñÑg\8a-ý#\97\99ÓƬàQè6F\89BU\9f8½Ï\8d¯5\14¥ôjÍF\97  0\0L,\13É\ 5¶ÕÅ\vqùÒ\83´&\12¹<7\r¼{ß\1a\9ah6ýý\90\87\13½qéd\ 2Õ/.¨p\82\91f4­\84OZE3 \13Î\80fK\18\9b
-Æ æu\81\faaY®\ 1Ã9£\8e*\93\99@°y#
-wn¥¾\ 4t»:Ñ¿Ó¥Ë0\142+0\1a/(O¤\80\1c\1c6%ÔC)\8a\1e¨D \93\ 4È°\11ôàk'ëk\84\12¢·\14íjßÏî)Ð\85ÇÙ~û\1e¥lÿ·$}\86\8b»\1fJø.ú\ 6@\1fìM\85\8bÓ\93L\1cy\99\8dÊÙ1\ 6ÊÓÍ5\85ýî¨
-MØõÈ͵Q_&\9e÷xéM¤ÎØÕ
-\98\15­"2\10\9aÉ\bm@0\ 1zí+Î\18âx\8cK ÚËFcu}¨%¿\b0\8f4\1dÆnÇ\aÏ\8b86¢å¼F¥Õ<¹h=h\8b\96\ 3öo*Þ\17\r(K­\14
-\ 5\8c\16ñnÀèK.\våZ]R7\18 AY\85\1c.Ð-@\90¾\ 2\15 ­
-W­ÞYZ\85\8bôò3è?J@Ð\ 4KÖh    \19qËt=§sÓ¥«\8a\8a'\9a'\16-L\19ý \17\â5ÀkÔ\e^¢öñC\ f\93û\ ftÞTvN³çGä2§Ùüéùzþü4¹«mëb~\0\9f\10ÿ\9b~\98]Ó¹OXeçù[ûî\9fgsÐ/\95*¦wTà}ñþÍ}\93¿\89÷E\19¶%é#7#\8d\1ayG\99m<äÛøN\18;\93\96·éµÎæ\885½{K¤³\93Ü®ÕÊo£\17\15½èý\13¤]\8bìz#²5d\10\1eïKc÷Ïè[ö&\11kó]ù±2裻\a&¹wdÒå¯Ú}Úà×´àö\8do£Båð\ 34\a5\85føú§ï\18\1eK\7f\f]\10§xpø\ 4²4~\84\82M\10¤RÔÄÇB\97ùí\14_Ä:E\vD\84}\8c\8fklß\v\9aU@®\90öxöã\b3ÿimy&ÿãv
-zæ&¦·ÜjÑÌ\19ó\1e\ 6s)x\82ñôs¨$4\18SF\eFn"×"a¢\0\19¢Õd¨\87¼\úÁ\80é\94\98@m\81©  ¼âË©*;\7f\ 61\88\8f\9b\ 5Mg5ÃÖ\91¬¦8S.SåÇÅC\95\ 3f      Ï¾ßáÞÿÄ\98\8dAö7À\87 \99\83\ 2\91ÊÇ\18î§\98\aÙ{\83Q\8e\8f6§w»Q\88\10\8f£\89dê`Û8á\b6»Å%^\11ZcTó+õ\98×"\9c+v\17èv'\91\80fg\ f\93ë1¥8\8b\10#\98´Wíö>?Üþå\fxkT\r\9bR-\f
-ı\99\r"=¦\91\ 3$[G´Æ\1dÓÖ\93\9c\8b\ f3d¬0°\97\15o:Ãâz\12\0ü}ÕÖ\r\ fg@\18(9\89Ý@Ô0dÑ\92Á:`"Z¼¯\ 2®±=\11¹\87\14Ǩ٥\8eìÃõõs¦mt8np\\11ð\1cÿQ\ 5¨Uµþê^s\9b\118\f\ 3ÿ>éÜò9±oÅ\15ôçâÎ\13\88«(Ø ul×Þí\v\ e\13T\1e\1a"DC ï:I»+ó:E,ó[Îaú\80\1a\8cAK\95ùëÙaÎ\ 5\88¹â`5F)¼û!ÛÙäñy¢Ô;ðÆõæU        w
\95Å<ü\\93\9f\12wÈz\82)ºJÏZÚ|\9b\89t\81\82¤\r0%\ 5¾GÂm® F³¿\a\9eèö,\84à"«\94ºJL\80«\8d\0\ 5s\10ÝøÊ\17\8eZ±Ê`M\92\80S8<«2ÃmKg<1F\1a\17ÀÈ&»*É\f\8d`ª<QÚ¬âT¼p,qÓÔƨjÀõÅÎy÷ö¡©|u÷CøÙ¸\v\f\9e
-4\139ßg\88#z¢ó\e"\1eng\8ck\9e«ám&­\9b­\115Ǩ\18@¼o\0\fnÙ%\fr\ 1\81\ 3\ 5:jQF\16ãi5ü\8d+ºéá\ f\12Ýq\9f\86£K?ÆÍ&÷¿Lè±Ð<\91дy#f#Ûõ\81ö(t÷Ñ\1f]X\ 6£A0\1a\8eýåu|Å2>ÌÏþ<û\17oÜFìendstream
-endobj
-1202 0 obj<</Type/Page/Parent 1011 0 R/Contents 1203 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 729 0 R>>endobj
-1203 0 obj<</Filter/FlateDecode/Length 1147      >>stream
-x\ 1\9dVÛnÛ8\10}÷W\f\90\878@,[²ãËcÒn\8a\ 2»i·ñ¾\19XP"m³+\89
-IÕñßï\fIɲ\12\ 3m\1dÄ\90LòÌí\9cá¼\fb\98à_\f\8b\ 4¦sÈ\8aÁ$Â×x\16Ía¶\às\82ÿZÀ\96\16p+}ÅôõíÓ`:§õy4\83\ 2îfÑÊ?çð<8½\150_EÓÓÊÃz0~\A¼\80õ\16\rÏ\971¬¹\83\9dÀ:\e¢á»\b>¨r+wµ\96å\ e\9eY\9128H»\87??Þ\7f½Y\7f÷\03\ f0\9aNÐÕ5÷'ã\b¾T¢¤\8d\90\ 5\10f¥*ý±\19F\16\8e\0\1f®\15È2Ëk.ÀÔU¥´\85­Ò`÷øNvï³LÕ¥\ 5\95~\17\99ŽÀÊ\93\ 5.5þªô\11\8cÐ?\84¾\85­ÔÆ¢åêH\18dt\ 2£x\1a%dÌ!F&Û\8b\82áÎ\\80U`rVñksî-´È\91w\9cJÒ8NùF4­\94½ò«wau\bYåýn¬\8c\85ÍÆ
-3\92sV\8d½éñÛ\\ 4È'ñjoÛ\84P\12έ\9fEp\8e\ 1a\82úG(¾\88jÑ;\10ÁúB\96q³e²4`\ f
-\98µZ¦µ\15\86Îw²yØËl\ f\`p\1cêJ\95 Ðc\r\9dü\1aoãº\96üú\ 4\ 4Òà±­,\ 5§\82öüÍ\94Á\95\90¿\9eËX|þN]¯¹4UÎ\8e\10\97í¼\93N4\84ìÙUB\eU^0I<\89à\ 1c\ 3µ%ãF@Q#ÉRÑT\8a÷2\93
-ä0\92ë×ëײmÕ\90mæÉvu\ 5=*\9d\95\15Ë\92Ä^\86¸³[\ 1Ø\f3t¦á#¦^\8b\97\1auÃ!=R\19X\9dÛÍM\13Á$Z\12·\eMÂéÓ3ïD4î@\a\84\8e\e¥\10\1cÍ\90\9e»ZþmS=^\10\15\7fÑÝKõþ\r¨n/y\ez]fª(\ 46.»Ç\94çh\18ä\16\8eª\86\ 3£_±ï\84vG,ùöø!\99N\16X«§ÏÏ\9b\9bPÀ^¢°°ý²¼[\93R\9a\ e\95\88ðC\98ãÇn\ev½û3¶Vb\86÷\9aªf÷Ì:\7f\vì\ 4Ô\rÀ¨\82\18Ïe&\f ÚÝ»\97\ 4\14
-\ 5Q\e±­óü$ts\8b\91ÿG\87\9c\16¶*ÏÕ\ 1¯\94&°Ð\96Å++ª\ܺ¬TH\1aì&ØÐ\99F\8e\19(\18Þ\rdîíu\90åÌ\18ܲ\19R_¨\9412Í\8fô _\9b\8b\ 3WzæÜò'­Ð\b3p\10y¾¹¹¬;ø\1c\925©h\0\ 3û°0]Mµ÷\1f^ܽ\9d\98\1aî2ç<ÊK¼\84M\1då4ܨÒ\7fwÂbäÕ¡dÅfø\8eN   \10ÛëI§Pian[ÔF"Ô\16\ 2ã*ÞÀ¦¬:hÉ/\ 2ãZ\a¸ÅìxÚ%:uÆ@r\86íÏ`k¥ùáR9NÙëT\ 4%£%\964P¦½\86\9b\12zuåS\8a\19\8b\14o\1fú´\8e\9e\82÷Ûv?·-+;Q_F+\ 4Yü'äÈ\eu£U;\19Ñhåç¢ä\9d\99\8ab9×¢\1f\89°!´R\81\8ai¼Õ,ÞP@Ie?\98ÌY\8a£\v)²HÝÅ\8eò@Ú»   Íc&Í<2\1aѯ#\1a>\90\ 6\87Ø\8a(Ñnúâîx\93Ý Lì\ 6\95ÄÞ\15f@'\92Þ\10ªw4µ\8eÜ\f\8a±\92!0&w@í¸êÎàÎñc\16\1c\e-"\9c;qàäÃM2_\84\19`\19Vãé2Z®¦8¸&þN{¾ÿëá\1e¾jå\86À\8f*«©·¶så(\9eã ¼\9cÂh\91\9f\1abg\8b\98\17+'Õ?Ö\83¿\aÿ\ 3REm§endstream
-endobj
-1204 0 obj<</Type/Page/Parent 1011 0 R/Contents 1205 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 742 0 R>>endobj
-1205 0 obj<</Filter/FlateDecode/Length 1522      >>stream
-x\ 1½WmsâF\fþίÐ\84iCfÀ` \ 6:\93\ fÜär/sIÓ\83\1f\16{\rNl¯»»>\8e\7f_Ik\9b\97r7mgzÉ\84°Þ\95ôHz$­ÿlù0À_\1f&C\18\ 5\10\817À'ôáÓÇçw­Qà\r \98Òg\ 6·coV-RX´\8e\96\19LÇ^p´çä&CoÚÈñâ WíMo½!\ 4ÍÞÑ2\83Ù\94ì5{Nçí\f\rÕXxqÐYíMGÞ\18\82fÏÉ\8d\ 3|XËñâ WíMf\9e\ fA³çäF#\ 4XËñâ WíMnÉ^³çû\1c§AÀÎû\13\9f´ò\8a$1¼0Ä\13C\18O'ô\1dÿ´\84¸õfy\1e\7f½\81þÃ\18|\1f\961e(\98N`\19q\82\ 6°\f;i$
-0R\7f\91úfùr$Í)dé°\92îM¼)¥{\19uVÃ`\ 2§ç9Û'ÖøxÏ'ßQ\84\r\89(Kr\88òSÑÿÅ\94)ã8ùú\ 3\fÅIj\7f
-¥í\7fñç\90ÿÞpêù3è\r\89Ç\98\93åV\1a  \ 2©\13I\13êd-#ÀüØ­<µSç¶\ 3&[{¡ÊãUçvusz¨Îb\a2\91C!6¨9\8fÀ(Ø%i
-¹²°\96HÓB
-\8bv¶RK\ fÞ«\9dDêuA\80\11Y\91:Ãশ\a\18e$¸ÒP"â]b·¨\1c>ÝÏ\9f!J´\f­Ò{\bU\99
-´ A\18\82×\7f\18À\8c¨?@¯ÇÎëv\eú¥ÑýT\85"í£Ùµè§Éº_Ûb·\10Â\0k\ f\83ôû&Uk\91þqö\18èÇÈ°Ô\89ÝÃ\1dár\15t\90ä#2\ fõ¾°\18\10cvJG\ 6Ïî%\83#L>v"4ÂGsi×\892\90\8bLâ©å|ñ~ùöݯ\97\f£¦×\8dVe\81ç\9eæ\9f\9f>Ì«S'
-ÛÀU§eÊ!/\84FÍHÖ\8bÖÛH\828É%¥\1fî\9fÀ*\17ë­Ìa\9däQ\92\19í\1eBî:G­¯\ e\19\ 6¤Wã6çÎn\13Cªñ\93è`0k\8equè=\80Ï\ 2-hH\1cÕÏ\82Ù\86¬4Ì##ñß\1e\11\12¬k\94çøFÐÛq_ê?\f]Þ;\98"-m±£ø4lè\\93+l¿aûßL\91Æb«\ 5\12Î\15\ 5¥\eu\19ÏFk&$Âý\10sD®NÚÛ\15|\11iÙ$ù,,áVä\eiº(\88\81¨yQU\89Ä\80 4®\14ôÑ»\94ü\13[H\80«0¿[\10\8dáQäXwº«Ê»B*,§n\14Þ1Ãé\8bÒ\9b«Ë4\ 1SÈ0\89÷ì\vW\95Kìµ\81­2\96    ¹ê ?D\99ZC\0©xh«ê\ 2gÁc\84N\ 5â\13[±ö\18\85\87\10.#¸?po±ø\ 4ª°\89ÊaGäÃ~\93c\85_âߥè´aÕ¹Vq|ÝE^X¡-ØÔà\ 2{ǵʯq·òcuó=ð&Eä\8düeÐG\ 5\99âBí©bK\15GcÈ\93Æ*G/ÀIL¾]ÆïÈd\18\81ʯ¾\83\92­ÞÁh:»\fð8­k"òY]\eì\94á\96#{\Ö\97\94òP%Êý[\86md.µHSG±*\ 3®=9\10TPØ\9a¨7¨×K\0ªfV\1dC\b«ÎÏ«N\99Dw?\95\98Ê\8eZ¿ KÂ\14«ÖQ~\1eâ@È\91¡«\e¦}ÿa\ 6>Þ~x\18\8cx\0â\1d*ð :hx^½£®jh\86a%e2ç>t\18¡Ô³'®gÏ\r7}\14s\86ð\vNR'\88E¼Õ%\97\13\13¿2\ 1G »°W%\98-\ f­LET~ôD~M\f\91½\8eAu\7fâ«\13îhÁ\95a\95J\99J\91\14©\e\88'\86\84µ8ÏK+MÝBê¡ÿ((ãò\e°y´R\8f?Ñv\ 2û\85Zp\9a¼Ê3÷\8f¦yb±s\94Å\99\vX\1eä þ«:¿Å\ er\f\ 4\vGàp\89\eäXNZJP1\vq1Q\1f2\85\bå/DZÃ\92;3Dìty¤¶W¤"É_\14÷Bj\81\r\0à      êÒN"ÏMËü¶\b\8dyãÁG\8cÁ\99\16%\9b\12)\80NjxZ,\98OÏóG&\88¦\ 1\8aôGÊ\9a\92
-¡[÷\89¾´a\9fÊ\8boVÔîX\8fË3Ý{V7ç9ü\90Ã\82\e>\8evIu=ô\86Þ\88&\8atN\1dñ\17ÌÞX\99QaQ\v\88\0»Q¡LòµrßÃ9\8d{\99¤Û\9aÝ
-[©ÎÄëy\KC·:Ì\bÙa\1d\1cåcV{ð\80\8d6W;\ 6\83Á@Õ¹\82§e\8f\19Ã\11¯\11\1dj\f£ânY\14²³¸ò5­ÂZE¢ÿ0­ÞIü\0ß\7f¦#|­Á[^ÔYÌ\1fßÌáY+j\ 5p¯Â\92*\98#IZ{õñÞdÈï1ÿ´þÇ\93±7        ¦îågæ\93®·ËÖo­¿\0?ÌLdendstream
-endobj
-1206 0 obj<</Type/Page/Parent 1011 0 R/Contents 1207 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 745 0 R>>endobj
-1207 0 obj<</Filter/FlateDecode/Length 1748      >>stream
-x\ 1½X]\93Ó6\14}ß_qgû\12:\89ÉÇ\92d\99Ù\87íRÚÎ,\v%a ÓôA±åD`KA\92\13òï{®dçÃ@\87N;\0»$\91¬ûuÎ=Wùx1 >þ\ eh2¤Ñ\98Òò¢\9fôi<½N®èj:Áë!~¬¤\9c\17°\95\7f\rø×ë_ÂÖ'£A2¦\92Æ×É\84â\9b\82f\17'oK\1aô¯\92éÉ"\9b\18õùð\96\89\9fæ\17\8f\9f_Ó`Bó\1c^\8dÇOðÜ<\vVû4O;\83«d\92ÐL¦\95U~OBgäD¹\14·ij*í\1fÍßã\80+\1a\fâ\ 1½á\ 4ÎͳÎ|-\11\83À\8fß\19RåÆX/´§\8dQÚ;ò\ 6!\96²\JK»µÔ\94)\97VÎ)½"¿\96ä\1a\83&?³GR{«¤#¥y\1f\9bïSo0J\86l4SV¦ÞØ}\12ý\1a×~!Ͻá\18   Æ\9e\a¹\95öÜí\ e|áS·p\16\8bò\95pnglFÆ\92ö\87wÂcײò\92¶¢¨à\84ÁQH     UZêÔî7^ftÿìö\15ÜG(F×n¤µ\e½I2åêÃ\8bÅp<¡s'Ãâ!\94/º)\8aÂìH\eÝ\13Y\89\fTNÚ\90Ë­\92»\7fçû7¹ÖÔµ7\9c&\83ëc\ eQ\'iÓdi-\1c>\bÅN\v),yùÉ\93üX)ä     \ 5Ã\12`\93"QKÉ>g\~@\ 2Î\e-\90NÎ:ÇB;åצò\94I«¶5\16Z56V­\94\16\ 5\9d\98\8b\84\9e£`¥\ 1è\94Î\8d-\85G\11\bÿØ@&½P\ 5\8a\96Óý\8bÇ\ fó¶ÿ]  \87\ fð\rÛ\83ÕsþÙ\15jw(ÐÏ\ fw¯ÿx5ÿíå\ 3¥k\81Ò\aP\1d)\e\91\ e\edû3¦Mï×\97oç/{w¦(\80Ô\ 6"8¶\81ç<\12\87gre\9d?\92A9WÉnX¹,2±!ç\8aKrå2I\8dÎ\11\90\15¥\84'\885\17UÑð\f\85`.j\90§Ai\rÐVn\17\9d\bÉ'5`;\8d\11ºA\16ãZ\83\89Îâ\11jÖðµ6\bz[Ï\ 1\8fA¹Àk8æ\ 5"­y}`(\82²`OBo\99ýñ xør#53¨å\18·Äø@\97\94'å`\b\f[\16À\8e\84\9c4ÿϼ°~~?\8b\\ 4\16¥Î\0:\ 3ÀEDÄæA\9bB¤2à\ 1\16g   ý\16B<©±\ 4\1c\91ÍT8d}oª\0q\80ÍèU±\ f-ËTV¬" ÑÁDph\r÷\ eýë\1fS\9aç\9få4ðò\ 4\ f\ f&ðCø\10!§fF\ek¼IMÁyÈä\ 6=\ f$ʸ%æb\v\ 6Ô\80ãÍÛ\11\1d²ñy"\12úÕì¸\1fv[ùf¼6¥ B-­°{r^\15\ 5\eߪ\ftwÕ&T\eD\v¾\99\ 2¬%àom\90k´íÐÂQ÷Ô\94\15\9cd6.¥ßI\94<-\14·\86\96á /\ 1\19®\9d\899|Â\99\86\15¨Q\87\10{\15ÎE.\0\ 5|°Å±Ç\1e©P.\18Fkç\ 6ã(·¦¤µ\0ö\10\ e\9ck71^oùÄÉ8à6¡9×·nf\99Ñ|p\83î\1c´6;~w{wÏõ\88å\85~\ayì¸Bl²ÀÕ¸pàÒÓfãu#£WQ­~ø\81bÓg'"çcëÏô%\894\85Ît     \92\ 4\1cè=q)÷ì\92,ÜA\eûAÑ;q3ç\88eÌÝ\1cU®{\94¸&òú\19â?K ]ß\¦ú&t0ºeéé\9aêf#ͦ\90Ý,½\ 1\91\94~oÂkcW\97´Ã°Ðv 9ìG.NX<\9d<z£ Î\187¦I­¡\e\99*\81\86}\90]T\ fX;\1d?\ 2|¾6\7f\9cí$³|\8f\8e\9b\16\10\r@\89\16Â]!vçcé\8eæ\ eU\89å;\9d"\8eÙkW2òôöáÅíÃ\11\\83qo¹\a\91Y)Á#(TF\ 2\91±tX´G\10Ç2\91\1d°[\8bVN¢©F=ݬå'\10/U%Ä/*^ ÈãççóE3\f\9d\8c\18\r\0ã\88ÑHÍyÙ\8fYì<\r\15\92\9a ¾Ù\7f:ñ¸\15Ëÿáÿf\97Ý\vçg²5\85Â\7fî\15\98
-\89õªä7uï@ßR\1a]\7fp=éG\85bfÅ"6iê|µºa\90imþZ\1aOtä\b)ÚñX\f\10²ªûÿV?0Ú?/ĪE\ 2\84\1f³ËÐ\ 6r\ f\10ã\96m-¦v\16C°Ú}¬x>GsO?HÌ
-\7fþu\ 4!÷0\9cÏ#>å\8d\8d\93\88\\95®\19ÁohÑáƺxÔ¥·\8b\ e\86æ\ f."\98?y·èhôäfN\94\9f6**0/r«\7f¶ÀÌ\1ed3[<úoÙ(ÌÊè9j\1dËsl­\90õ\b\84\13.2\16,\83~W\1a\9egqû9\85Ú#z\ 3\8có\11\9d-æùw5ùA¥\1f¾·MÐìN軵Ыï\97[\18}Q9ÿ\9d­®M)\9fáæñy\9c\8eÅ(ç\8bg\98\ 6x\ f\15Òsã\86¢îÖ
-tÀ\8b\1239oxóp\aØ{ôúú¹@¸püÙ\15õ\84Qܲ²ÓsKÄÏ\17¦ã\11õØÊ7\eº|÷\142\e.ÙïXÏØjíP­hñ°èTB¯ë»\rýwb\96\9f»\fÜ\89Ö/áws\8b¨í5÷\8bEç   fþ\12\ 63oÐâö]ë\8b\14nôæD\90¦õD4\18M\93éõ\bß;\fã\r~vûâ§[ze\r\8b5=3iU6\92\18<\1f\8cñ%ÆtD½É0\90ô\e¾\9e¸\9aà+\8cñ4Þ»¯\87|ÌÏó\8bß/þ\ 6['X\84endstream
-endobj
-1208 0 obj<</Type/Page/Parent 1011 0 R/Contents 1209 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 748 0 R>>endobj
-1209 0 obj<</Filter/FlateDecode/Length 1657      >>stream
-x\ 1µXmOÛH\10þί\18!U\97Jĵ\9d÷H|\bI(Håè\95Tíér\1f6ö&18Þ\9c×nàßß3»v^LÚ½\80\bÆÞ\9d\99\99gÆüuâ\91\8bo\8f:>5Ú\14¬N\ÇÅ\1dþðøãÓ{¾CÍn\17\9f+òܦÓ)þ\8aéÎ<ó{\r§\89{\1d¬ðñ\93J\9a\9f\LNÞ]Â\86G\939[nw;4       \8da\97&AM\ai´Î>\8alùvr\8f¥Íbi­O\93¥¤ÝcZ§j-Óì\89ôZ\ 6Ñ<\92\9a2¬Xc+©¹¹ÎµL\7fÑ\14«\85J\8a­gä\foFø\1c\7f\1d\9f\91\8bKu¯áø\88£æ\\f&4\8fbéXwY\1a%\v
-DB3II\1eÇö¾q\12i\1c)\16YôMR¦\8cÃDf\85³¥Haã\93\9cË´|xº\1fÇiÅñZ¤b%3¬\8e\12cJ¯fN \92ù´Ö\9a¾¥\15"X\8b\ 5\10T)­\14 \8c\12\®à]%\8e\85*( ªw\9c®G~\eàãDS¿Ý!» \84Ý<¯7zN\9b\17\0G>ðQÈwÐ
-\vlqÎ\ 2Øb+c\ 2\898\97%V EÚ\0xF\ 2I\bDLb¦U\9cgòÙé³%g\ 3ë>ÿ:4®\8e\83ÇÀ\9fâùëÀªxûÏ C\8e®ÔÊ\1cæ\19S\97x0\8aR\19d*}z       Yy\ 3\85Û\1d\9chæ3CmHW9\84\84ÛRózNÆmÊ\94DF´ÌH$á^\85\b
-ÍÃXfàÚ\99]¾õ©\97*\8fC¦ºÉ\ 3{¬ï\15\a\83¿ÇÿU®3»\16´ß¨ôa\9b»²þ\98¡4Å\17ÎðM¦øÍe1\9dnOy\949\95\83òÑ
-\1e\1dç\ 4\1fùõ\9cøi\ 1\95õñÝ\ 2jùN\97\v\88\ 5Ç×\99©F\ eÿ\80\r\ 1\ e-\ 2.í"gE¡äi*\93,~¢<\81\89ðh\15C\13\7fPÂ¥j¥QøÌ+s'J2¹\80ßT®S©áÌ\ 4Xf§(â­\86E!V°\90¦4­}º\1eMßþ\8b\90Öi´\12éÓûTåëëÑÑè~à¸\f±°B\v6SÞ4\15a-\1eJ^\15¬²wÔý®ãõ¨^J"7\92\95¸Wi\84îa[\85æÆQ\88\8a&\90\94\99A^h³\94     Ý\89ÕLpM!\93Ü\12\ 4®èãhÈûQTj% ÛÓZº'ø\1cb¥k¦\v4Õm³16ë0R¿ºý2¹=\ovb}ÍH~(3\11Å\1aQ¡d7ÜQ¸7D\8b\1c\91ÚÐl@\16u\1aÙx\86*ÉR\15Ç(½·Ç4d\8egjÃÇ\99«\1câ\9bA­gPç=\ 4\8b1\88ÐU\99R\9aq\18\ 4\81Ê\93\8cÀ\17h[d\9b­aµÝ\99¨¤\1eʹÈãÌv\ 5ÝçáÝosp \9d/K£m[%çw\93Àk¨phÃ4ä]ãû'alõö5Q\1c!$\bø?ÂïÐå³QG>\8aÕ:\96èÍZçh=\93ÁÝÕdüþ\96\96 R\ 2\92Í$x¿¥Y¸£<·\94l)2{äV9¡\15s\96écçFöß|\98NßävYY\8c\bÍ·ö
-\ 1\\89\12°\f%\14eº2­ÔÊI¨jÇ\8ei_¸:\85i\93\94`\84
-ét&\83\87§S\e\ e\86B;\9aÙ\12=3$¶\96ü2p;\97qÜU\17\85`GÕ\80åã\1a À\17\8cs\7f\9bN\8do\87Ð\89MµØ\ 1a\97Z\92\8f\91Æ\11\8b\14P\ 5\8cÓ<
\8d\993\95\9f¯¥â$\85Á¹©<¾Péâ\94ϱ\1d¹pa\1a\b\8dD\9f=³%ÉbUV4\14
-U\9d(Ô,\a``H*\8e9`Û\9a\8añùÅ0m¥\93\ 5Òhf\91Éu,\ 2\8cÁV¡6\11\1a¹\91Õ\r\94\1733üí\ 2´\9em²*\81\85Rpì¤owÀ£Fæ\0\adLÁ&\8fM\98\96Ùz©AÓ\9at\16\8eÉÔÍíÅïE\96¶ý­G\1e^Bæ,Í\8d¦\9d\9a½¦ÓshlK\84>\8c®/i\f±ã\97\f\1eÌÄ\81\ eZ\9cJ\82Ã\8aß±£õ\ 41ì4\96óA<'q¤ÆäVU£$\88s\8dQ¾ìqk¥£ÇRfÕì\1ecd\10£P\8d\8eò\v\bØ/\ 2\ e\93>1q\16¹Ô\99\8fYz\9f:HC\94Ü+C#°§\84×µóK\82×-­\11Xاn§;êº^³í¶\87£\81ßkw:\83fs|9ð\1a­Æå°SÙºÞ\847\98\ 2\87\0|!ûä{ÍN³Ûh7\9f­;\98\ 6úäù®W1\15¯vQ´Z~ÏõÝ\86w1\1e\8d{ð>\185.\9a\8dÖEËkºÍñ¸²\15Q|\10\93\19,»øîô<¿YYd\8a|\12­\10¦[ydñ\1d\1a|\9f%\96\0
-øöÉ\ 2\±ð\10\ 5\ fj>·æ¿\8b\82\b\82ì2\16\vݧ?>\7f¥òëÏ\8a1\8eô§¶0òá°=×mWv\ 3\8c¡HÊ\8c\98£î¦Qæ¦yé{ÎÌÄRÒ¶tæ8ø\b\9eÎPR¦\96\ e\1a?w\80ïQT¾\80¤\81HÍëÇÏXúî²[\88´×Æ¿\11º\r\1a<\12ß\rn.\ 6ô1U\\19\18w\ 2t°b¼e<êåòzÇ7Sá«ë\19Dv:í.4\ 1Þz\r6:\9e\9cüvò7ÍØ)\vendstream
-endobj
-1210 0 obj<</Type/Page/Parent 1011 0 R/Contents 1211 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 751 0 R>>endobj
-1211 0 obj<</Filter/FlateDecode/Length 652       >>stream
-x\ 1\85TKoÓ@\10¾çW̱\1câì+~äD\9e\ 5\89ÒÒ\18\81\ 4\1c6öÆqj{Íz­\12\10ÿ\9dY'¡Â\ 4ê\95-¯æ\9b÷|óu@\81à¡\100à>$å\80x\ 4\84Ï<\1fD\18à?Ã×(Ø:\ 1\87ºÏýõ\80\ 5 (ñ\ 4\94ÀIä\85§[\ 1ëÎ\10G\13¢oh\16\ fF+\ 2\11Ä[tí\87ø\93v\86    ÄÉU¡3]Åy©&@^Äû\ 1\81!:\b\11s\95æM]ÈÃ[é\84×ÊÈ"\85¹4V\99\1e°(ïdÓ<j\93N`<f\11a\84ÓÙr±\8c\96«étÁg\82\8fgc*\88X.{ªµÉKi\ e×F·õëÅ\ 4(#´\aÑ\9b½Jì¼@\17\13¨u\93\7f\9b&\89n+û?\#Ë\8d¼\8c\93IbW\85ÌÐÚ§÷\1fáü|é\99k\ee\9eÒú\91\98Cm\7fÎê\e¦öáýÃw,[_!Çô³äR\81Ú<}Û\96\ee&\10\11Ò¯sR=S^\9dåÕz§\8ab\ 2£M^\8d6²Ùõ\9c»6n·Ç>2*\ 2\11r_\ 4=Pö\14\ 6ý+\8a\87<yxÞDý\98¾\91\8d]+\8b½"x\82\bDzçǸJÐ\v\99ît©\16¹ÁvjsÀdÜ}d1\e«2=º\;ô8\97Õ|'«ìÂ\8c¢ô¦mìYüÏÔ+ûÔË0\b\17!¡Â'þ|1e\91\1f\ 4S!pT)\1fóÕ¼«Úh\15\ 1\r\8e\94\19ráè@\85\87Ì\80¹.KUÙÆå<Z    ô\84b\ 1\92\18qw\85\92\8d\82\ 5È¢\80ä¤\80´Î¤Ió*\ 3»Ë\exuû!¾\ 5{\1c£?Én2¸\82½2æð²\edO\9b¬«ñoX·\18\1cÌ\83Ø\19KuÒvaÁ£l\0¹b¡­SiUzö\80¼æ\1es\ 1\1aµ-°\ 5\18\85\82µã  .\1dæq\8c¯\8bÜûLÇÇäÂSrÔÇÍ\14\8c\1e7Ãzz3\9bÂ\9dÑ\8e\99°8ù\96\95Ó\1c\9e\15\86\ 1Ã%s±t8¢^à\87¸\91P\1e  §¶\8c\aï\ 6¿\0Ajh\12endstream
-endobj
-1212 0 obj<</Type/Page/Parent 1011 0 R/Contents 1213 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1213 0 obj<</Filter/FlateDecode/Length 1602      >>stream
-x\ 1\8dWMSãF\10½ó+º¸\0UFØ\86ÅìÞ`7[Å!fS8\95CH¥FÒÈ\9a¬4£ÌHxýïóºG\12Fì&)
-0h¦?^¿~ÝúûhAs|-hµ¤ËkÊê£y2§«\9bëä\1a?Wø¼Ä·×TÈ\83Å|\95ÜL\1fÜm\8e.>¿§å\9c6\ 5l]¯nh\93\13ìÌñ\9fìôc©\9aV{Z¼Kè¾n¼{Ö9¥Þí\82±[2\96\82ªSu¶ùK¬,VÑÊùåU²\84\9dS\[$ôð¬ý³Ñ;rÅx7^¹¢Å¢¿²\!j\yüù\8e¬nwÎ\7fe\17ìÒä:\90¢Zg¥²&Ô\94îiW\9a¬¤¬2Ú¶\812eIe\99\ e|®2¡eWµÊJcq\15aªÁæ\8c$Ú9\9d/.c\8cÁ\9dgªª\90×±$¦ÅÀqB\9bÒ\84h,s¶UÆ\86\17\93m©ZR\80Ök\95ï©upX\0§ÂT\9a\94Í/\9cGèƶ\148wD&gÚR{ÎüÀý\18åδ\b\97pd\88\95\10~K¹\83\ 1ëZ¤\92U]®_\ 2\89\12{ÒRÖy|h«=©\14q ªÜI\0\88¬UákH&Î7pv\904!áR«g\ 3\v]àJÃRU\11פ\87\8fÎ\16fÛyÕ\1ag\19g~:R¢T\81R­-\17\ e1Ô8\95Qá¦Y\aWkzdî°#\1ffðk3\84Ì\98ç.ëjä1D»¼N®\98\1aw\ 3ïv\ 6\1f6Ä,!S\90U0çupU'Q\15ÞÕ´ÖíÝýã<\14øï¿\90Ês\1c\v@s\84´èlÆ\97&Ðd\ eXfÀ2¡_\83æ<\15ýv¿~\1cðd¨Ì¶\ 4R8æjÄ\9b\ 30@®\f~\ 1×\83ppy\bæ\89       þtv\18ÔÄñ\18b\12ý¡\0h7\98«]«á}ËÐ\få\10V¥LÎÑ\ 3cñg»o4È\ 2à¹\ 2¨\93\10\96Û\84aKõÄgße±àvO\8e\89\8a\86Sà<\82\9fÀ+uaÕ8ìw©\10ú}\99ÐX§Ð5\8dóÌÚC\9dø^Ó\v\13¬ÛQÑU\80´¿\b*õ%çVè©*Â\13\86#\91¤¶Nsn;&°ª\82#îX狼Áa×0\ 6,\ 4\93¼¹N¡N\13\1c/bï>\9d\ 6ýò¿§ÓwOgOgS"FâFÑ\81\f\88è8\88ÈÐKµ
-,\9a@\1f¤a\8en½ë\1a    \90=ªÔT¦ÝËsÑO®â\80Uîj®få¶\88x\12.g\182o\1aH\1e2e¼Ô³2\15w{B\8f\büÓÃÏ·÷ë¤ýÖ\8aõÚA¢\ ei\0&¼rð/\991\8c*ëÓë/õ\89IUÞ&ØKf¤\8d\10\ eÒ%½\9a¡\14
-ìei\ eÄÝ9ɬz\v\1f\97\8bÛ        \16 xP¸QÃ\87\16dk\18K\10!\9f÷ÑÄÈ\ e»CÚð\99\95\ 5º\8aÖ\80\12\94z?q_+TÃ0\7f¸S\0-\9b\9e±òâó«þfÝOÑ\1e\91ÐRÒ½ëüè\11jöZ(¦\b¯¹\8b\ 5\1cÜ£Pº®Ê¥)\83n{EDÖi\fø5ìS>\89\15\16\¡1K 4*óqJôõ\86>  ±>\10( 1\19ßÂ:#\8e¨îxzZ4¡ÆئR\ 1;gõ@\9b   \ 3\1a\1c\19    >\9b êõVù¼â©\f\11Ù\95\1a\1eÔõfÖgËM2J\8eè\16\ e¿N<r)ôË\0\v\80\14©\1f­S\84\7f\7f\81Xt\81û\14xr\8fóÜ\82bHÇ\1e\88ù\8cÒ\ e¥\96\94µ\9aW  åe°\87Fg¦0¼#ÈT\1c*\1f\18®é\;0\9aÐzsû(«É\eïB\99WgÁbl8æ\e¢C­83@%ý.Ò¨í³ñβôO@F91\98¸En¹E0g¸\1e?ä.\97\98\94\19\1d\9d\84W£-SM\94\83ô×\9b\95\89c:\8f$y        ì?}2\8d8%¹È\7f\8e@\1eFðÇ´¤\eG[´Ç0\rX/eôs6Vǹë;;\1aìB§ªXUÑ\9fáÌ\90ùñÈÙã~8¼\9d\rã\\80³~\9c\80ÃhÿñnOà\94ç?tEQ£0ì\1\8d>\8e\v\99KÜ­²ò`Î\r\9ec[ÇC}áá2î\93¦\rºÂhB\93\8cÉsÅÁRî¥Ð¥Ø\95Q#¦î\84\18odKz&\8eB\96\ 2\0ÉÅúIg\ 5´\13j:ß8lH\1fàÅ:,G\9aY\87óÌH¦\rdY{¸\9dñÅ\89SýMÕÍ0\8c\8eû\9de°s\1cåõe¼b\8dÅ¢¨¶Z\10ûÑFq\99Ð\97¸L\1eìTì÷âówV\89û\82x¹D²\90     ^òx1\16² vK¥ktÜ18\15\ 4$\8c£_\98Rêª\11\1dl½Ê¾ÂÀ.®äý:\8b\11\aUP\94ë´ÛNr¯ \98(jAK\f\14Xy¨ô¯1¼\r£\9dny®¢|ý\10à(úµ}Ø\1eäýE\8a\ 1Á\ 1í±ë´\98ãq8é8Ùk\86\96òòÑ¿ËÄA\98ä*nÑ\17\9fo^^µ.çñÍçÿ¿Ü]­®\92Õõ\r^\10±\86¿\7fÇ\89ÿ´9úåè\1f\10\eоendstream
-endobj
-1214 0 obj<</Type/Page/Parent 1011 0 R/Contents 1215 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1215 0 obj<</Filter/FlateDecode/Length 1740      >>stream
-x\ 1­WÛnÛF\10}÷W\f\8c\ 2U\10I\16eY²óRø\16Ô\ fq][m^\ 4\14+r)mLr\19îR\82\0\7f\fI\99bâ¦(Ê8\0/»;3gÎ\9c\19}=
-h\84\7f\ 1ÍÆt:¥0=\1a\rGt6\9a\f§49\9fá~\8cÿ\85¦X>\8c'ßùp5?:ù8¡  y\8c³¦ç3\9aG\84sF#\9a\87½{ë5ùµòdb2\9e"«]ö³§­-\9e\ 5ílÙÇ\ 2\9dñ\1d¹µ-\93\88\9c7IBKMj\99`»%¿Ëù\18MN\17\e]P¦R|t´Àõtûøçí#\99ìÝüËÑ\88\ 6Áép\f\1fz±Itª2µÂz1°\86}\9dy<ª,¢öçÚld\\9e¨\9d\18J\8códcR\ee\12qíU¡Ý°¶2\9e\ e'låÉÂ\93\1c\8eÆ\ 6ç.\v»u&[Q\8c\8d\ eA\84ªtâü\ eÑsìkµ©\82Y%v©\12:^\95\1aÆT\18Ú2óÇ\88ÑsÌ\8a6*1Qó¾1Ü\84÷¨S\9d.%6 ËØÜ=\ÿD¡Í2\1dzc3¼Ã\a\8eÃÉçÊ\7f2\8eÝ\10ôÄn_ÐðëÒI\ 6Ò\12®\88\87\8d}YÕÁ¶öµñ©\ 1ã2q\16çQb\ 5»\1a\16ÀF+í=\83²4Þ#×Ë
-ä¼°HpÊ8{k      ÙÚQ®
-$\17Yr$1h\84\94âK\84Pà6\96fé2êøc2ä_ûh\88ðã!Í×\88Ò\17&|æp\81e\ 6\878\v.W¡æ¤ø­\86\e\8c\9aÍ\ 5,6À\8f{ó´èéÕ\a\1aDc\1cí¼V\11Û\1eD4^¼ëwÌËæW+|ÎàJp\1dÜ×\ 6Ü\90îõ\96@^\87Ü ¶*\ ebp2»\ 5[
-J-\1e\12ó¬\13Àc\11wQ \95x\10b¡>\8a\8e]pME¡bòÀ}\0 e¥¢\bDu}r\16®ãT|Ç"Ä\rÇ\0\ 2L2\r3­#\1duS8gH°®@ªVÔ$¨Î¤ð\82\11efa\91ÁªW\17\1a³ð#Uî\99PÝw\ fT{Ã\89Ø\16\16\14Xô\®C\13\eÝÍâÖøµ$áØp\99Æ\9c«ã&A\88Ä¥KIðâ\1dãpòñ\82\ 2¨\rËÎàtR\95cp6\9c\f骩A\15\16Ö9rå\12N¹j׫X\rÆ3(\1d\8aøsc¸Ð\89\ 6R\9c\9d'\95.\15\ 5Ã\8ba0[ôT\92¯U 0«¥ÝèÅ»zÁ\1a*´d.\95y¤¼\ 6\89,DF\ 4\ 3r\83\aWæ¹-\ 4®Nö
-\9d'&TB?\18\14áàüsÁ\1e8NK\b
-\ 3ù\11\16\856B\1a\91ò\8a¼®*Xq\ 3pWN¨pm´\b\8dÙ\8b\1dR\1f®\96\89H»°0KÐc\r\1e²Ç¬?\A±V¾\ 4\9cy\14\998Ö \8eç\ 5\Ìûc\9bò\9fó^}\18\88P\ 5e\97Ñüúá\ 4|¨s\ 1\1a\18=l8\8b\14i®<\ 6\10ÚPØR\ 4@6W¢\99+äqO¶\ e\92¾PqlB$\85\9b\88H\18\a\ 1¿Y\ 1\91\11´ãóÝý\13\fq\aa\8d8x\ 1Ä\19vüÑ\rVqkº×þêî·'i6î\9b\92O\12»eEk¯bôZ\94\87[\99\ 4ã\vú\99(/\ 2\8c,oUÀ\94+\9c¾\96ºØ1éPS]/\8dжÕ×\90\189fcÔþ\ 4ÀöÇÍ\ 3Ä+|FÜÐM¡\p:c\8f:\87BfA\8d\fà3\ 4\ 5ÐÁz\8eWµM£^» sѳï:Veâ¡óèÑÿ2úÆglßç\10ü*l*ÞIü\8cHãZÇ´ð5Õ@\13ËáE½L:\ 4'¶â\14myj`©oM\ ePB\9bÔý\96§\ 6QÞö~\85\r,wÕ\19\1dìHà"zG\95¯6\83ê¥\rù\9b\17\98\81\ 2q:D£÷Ú^ÁØ8Ôg×áÎ\8e>c\96À A\17gýýýý¼ËBd­Ò©\8aÕ®âþ~Àhq\11ä:ÌïÊl¸\ 3
-=RÎ+\88ÿë5êSê£Ïê\8d\97h¼¥J:¨p\93\12åÊcÆ¢Çä\81¿\17g¢I¸\83£\88\ 2I翪ÍÖÕÿPØ\\17\1eJÖ'h\1ap\a\83\ 4\91FTPÄ|\9e\84Õ±Û9²i\a2ÊI\1f\93\96\80±¬j   A«%\ 4\15êÆã'µ3R\89\15'J\9cø\85-¶çY´\bn\10×­6òº\ 5Ñ)\9eN*\19G\rF*\vu\9fg0¯L&\84\18\9e\rS»ág\88\9c\87\88ßñ\8c\ 52«gäà\93a\8flì;á:Èw\81ùp§\15\86!d
-C\94\94\8bÈ¿\14B-ò\\16p¦&U5ÑU¼HÔ\8aû\13ê=âL8\9eVÑÿ\15|\0\1e\8f²ñë\8ei\96\8cªõA ¤%ök¢±\19\95K\7f\ 3¥Þ\80\92Çù\86$\80eOöî°q\8dIÈ0     TÓ\b@¿J·¡\ e\96%ÖÑ\87*'#º¨\13;®{=ýøZôn>]Uã\ 2+èhxÎÙ<Øw\1füuY½ÀÝUó    ÷×õ=noZ¯o\e¨¾w\18½4+©}Û¾o­ \97\1aü·ëÍó\ eÜ©å2xõõàîm¯Þë÷\akß|\90¥oºóò\18\0\93GióøýùÍU\7f\19ãÃËãø\1fpúß<:\0è\e\7f:/ÞFH\8e©ñeï[Wýöôõ\95\1csòñ¼þõ\1c\93ûü\94¦\17³ú·å姫K\82d~á!áÆ\86e\8añKT\97\91\1d4\e\ 6³1~lG½\1f\ e¿\93Ùd8\9b\9ec`Æê\8b)\1fr;?úýèoÉ>ÔÕendstream
-endobj
-1216 0 obj<</Type/Page/Parent 1011 0 R/Contents 1217 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
-1217 0 obj<</Filter/FlateDecode/Length 1768      >>stream
-x\ 1}XmOÛH\10þί\98o\80\94¸yá\80\9eN'%PNÕ\1d\81\ 3ª~Aª6ö\86lq¼©wM\8eÓýø{f_\1cg   M%'Ø»;3Ï<3ó¸?\ e\864À¿!\9d\8dh|Jùê`úpðáj@\1féa\81\a§çøQР\e\f\ 6ô\90\1f\11õßý\90ÿ¼û¼óàøáûÁ\80úÃAv\8eãqê\7fno÷\1an\85Cñå\1fv\7floñÝôÌÙèÛ\84\bש»^`\rþ¸ÄWüÌƼ\ 2\1füÀ¢ð\8b\17º\ fî^Rzj|Øù~<úúyvÿxÌK?\\9dÐpè±ë\8fN9¸\v]\19e¬ª\9eH/hL¦\99\1az<\1aöhÔ£ñã1庪dneAóW²\eMµn¬¬yÑ\1d\8d°¦Ov)\8d¤BS¥-­\8514¯µ(ra¬ÉèÞ\9dKÃèñ8\e±ù¥0ô\v­D¾T\954¤+R¶\17\9c \11ñã\93öqû`\9c<ÈhbL³\92´Ð5ûA+½\92\95ÅOaI\94¥÷-1Ý\1a\15µä\10\17ê©©\11£Õ4\97¤*w\90\118u£ëç'ļFÀlÁ¨ÕºT¹²
-.\eñ,\1f\8f3ºö1Ðløí\82ãð@\82»Ê$\86\10Þ¥^  \18»\ 6L²¦i­7\ 6ß\8fGJfÀ\826
-îçº,\85\95Î#\80\8a\15T"i¦\8d·õpÇ\13ð)1­L7RXgn\10\f¾À¦¨\8a\b\16i X·ÀÓ[\88\ 4\ f°\ 6\vUM3i§\9foî©\ 2^\ 6NÛejÙfáÎè4;áÔOL´\86pv\92\9aÉÖ¬{$K\10O\81£.Ô\95\aÉC\0þ9p,\12@ëRä\92a\97H\ 33\99Y`\97µ\94\89\1f\81ß-c\1cE\82u\9f»\8d\82µN\ 2{¾J\93Û(\rÆËUaòhLýÄ(\9cIc|®ô¦"d Ô¹(\11¿\ 3³\8d,\10\19È®EmUÞ\94\ 2¼s5\94y7¹4\ 4N(^DeÅ\1336±
-·*®k,d4ö\19êÆÉë@8PÄH\vðùï½äL\13\auB\13aR\9aÞ6µ¾\1aß\14\9b^,@#³\145;Ë\T¹ã\10\88\ f<|\aA\ 4(e\84ñ\9a\ 4ÉÌt'ðf\8fs<"£\87\9f\84í\88\12\8aÔñ¨\96¹T/®È\90¬Ö2£\г\94\0\8d\1dº."Û\16"\ f\1d\87Ñ\8e\94\ 2\9c­{"FÇ\9eá\ 1×0ïöç\0}\9f¨¹@G\8e§zF¸¥\19]é:qÁò9h±\12tô-°Ûó¢\17\88á=Ø#ÜF»jlëÐA\82>\88Bàp¼\e\89qö?%\ 3\ô5\18\bÐsÛßã\9es6¬äðÑ\1a\8d*$·áCÑØ¥®\95\15\16Y9tõ\1fZyè2Ê&þ\84\f\1azQ"нMc\80\1c6æ2\17\r2,":È\8a¬Üh{\8f.|Þ\9b\13\13ã«\ 6ÉÜ\ 2æ\ 6G\8cìg\15Èì²ËÆe_С­q\8e,\ e\1dë\ eÑ\96ÕB\89\0jitSç2">\f#ôº3<}Û\8eµ\87s}Ñì­}ðO\8a\1a\1dd\8eiN\9b%0ðs&T\12zO\87|\ 6#÷%m¦<éç\f\80½-_=\94Q\vD^;ò!w\9cÕJWýÝÌÆxÚ¹ÀU\84<­µr#<\92/\8c¼RëgnM\vÌDLBLJ_õl¤Sx\86^u\83ÉÝ\94\ 5;Åó\1c7êØ\97\92äUR=-çº^j]\90Z¸½l\b\1ec#º"Ê@t[qÌl\8d}\16\8ag\83ÁËgvÄi\7f\aݽ\97>[M6õ#<\8c|¢¿PGÑ¡ 9½\1aÝnÙ\15¶¸Ï\v\92=ÞÎp»ÉI\91í\9f<7&\98fÃoSw½p×Kwý\14Î\1a\r3'\výY£íf¯Twþæ³ _Ý\95ÏÚÊ\8dÝSÆ\9d],Z;\1fָؠ \81ë®|
-Vx ßHÕ\19T\81§´cuK\91Ø\15|3÷½ÎHÌMH¦\1erÓÖ9v¸R\17y­!OEõ\1a»lØ\9aRq¦7$ÿ\11+hÓ¨çF¬\1cÈh&\84ñÊ\80'1\9a
-$§#àÞ^\a
-1\9f¼\8c\11q®ú©\1fÓ\18êÙ\17\1d\84\95&óZåËZWê_\10\18r¯S\8fNceôÙBqcZº\8a\81:ÿÑÈú5\14ð\8e¸{<âü@¨\aeA\9fo\13»¢(Ðb\0\8b1:WÀ®p6\L³\8e¼£¯7w\7fþqwóåö÷áô·ÐWY÷Ñ\ 6@D]èß\15ÐP½\84HlíÊ\1dÔ0S\15αpt\ 6wté\16oÀÈF¼@L³uSA\ 2:\9e²¸ò³4\ 6\15\14aÐ3\89y\9cjeY:ùãZ&\88­do&\81_\12\8c'\ fÞV\80¿\91UÁð\8b è'U¥\eøå^GÖ"\7f\86´B\0\82¾\Þ¢ÃÕ\96\86ãs4\16~ಠ     »xwØæÝ\8binAóTú\14h\90l       É¹w
-þSÕ¬FP\ 3e\19²â£âPö
-9G18̧·Eäß\ 5¼\8eÇ}\ae\12°\9b\18\199¼ùð¿Â$¨¶Ó\98\97\;}»\ f\rØ0ùR\16M        \1a§
-k\v\ 4T\0\96 8æ,j\83Oe´¡\1d]rÑ\13"\8c\93\ 5¿\98Ì1\f;Hº\ 3`\ 1c¢Ð¨gÞß©§ô%Í\8d\99RáÕâW\8eþÃÕyxs\1e\9e\9ee\83ó1\9d~\1có[Ìýäz:¡ÛZ\7fÇ\0\ 4Ì9^C¡ÇÙ[Þ×\8fËûg#ü\17Eq4ü%;Éük\9eË\9eoE¡ÿð\8e\93³\93ììô\1cÿ»\81Õ\1fÏøÖ§\87\83¿\ fþ\a$\8cc4endstream
-endobj
-1218 0 obj<</Type/Page/Parent 1011 0 R/Contents 1219 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
-1219 0 obj<</Filter/FlateDecode/Length 914       >>stream
-x\ 1íWK\8fÚ0\10¾ó+æ\b\15Ió ÀöÆc÷Ô®Z\15©\17$d\82Ùx\17ì®í\80¶¿¾3v\82Ù\88ªÝöR©\e$gb23ßØão&\8f\9d\14\12ü¥0Ê \1fB±ïL\17\9d·7      \Áb\8b\7f\fÇ(l \89\93$\81EÑýR­%·\10®©VGÃá#3\96k\9cþ \8cí-î;        Di\12\8f\e¹+¨\80\9f¨G\9c'©¥ãý¤Aé6]ÍÂ\13\0>Oú4NÝ8sãÜ\8d×}hY;W¼(ßf«É²ûfÙC\ 3Ùj\1aÄY\10çN¬-gi<¤Ø<Î,\18%õð\848Ѳ7êFÂ\99­æ/Æ\87Ñ6H0ä \9eð¥+\8f\ fí§«ë\9f\ 3¸Û|5\ fO\b5wPs·¤ù\8a â\eí\80¹>pmà(l   \f\9c#`[Ú|[ò=0ÍA*\19±Ê\96J\vˬ8à\fÛs\13\93©·7\ 3HS\9f\QæÖpbQU\18ø¦\84´P\192¿SêAÈ;\10\92Ì
-\r\98uG¥\1fð.îʵҥR\eP\12\8cKH\83\19¬4d\b\ 3Ã90¼£&Ê\1e/¾ºV¶ì7+\9fÇ\19í\9f÷v²\ 3ymÁ\92\1d%wOÎXË\90\8e\8dw\17\18&|6\8c\adtA~1bÔ}¬¸,8¨-ð\ 3\97Ö &fA\15E¥ù\ 6\88Ù%\8cTG?iÜ\1cùÛ©\82í`ïÏÕÚ\9d2\1d\ 2\86¼\15ȲK\9bµìÅðµä\12\84\ 5ó$\8bR+)¾s\ 3Þ\0ìðtÖ{G>6jÏp\85[NÐ\14¥[\8f\8cÜq|\9f\16îl1[\9e1,-ÐEXÄ´\ fLnPC!3\84é,\86\89K\14\97x%3ç\107>£ÐóÌ)\1fDÁ"Ê4F\9e[.\9fEC©\82\81=ð:¿NÜ\15e\ 3¿\1fÿ=i\9d²¾fäóS\7fQ&*hH\ 6ù \88'¾¡d#¬wæ¿ãæ¸]\¾óIw\96êÒòÛÔýò\rûã\ 2ö/óyÃÆ\97ù\1c)¾Å\v¦\92k$¬~]DΨçwh=\94\12b¯¬\ fëÊb-³\90·  þFHtþÔw¤x\91¨\89Ù½=,JH¨ÔTôj\10ÈËÀî\88x]\11ý\ 5\11ÏNg,­k\16¡suNóB`Yq(öÂ\18*\98¾ÞAMÊ1ÔP!r¬\8a\9cË\0;5¶ÁÂ\86µ\99#6±Å ±\ 6\14¥\90HãTÀ5ß«\ 3Ö'
-¢¬Ný\í_m·\18\vÁ~ÆÃ\ eÒ\89\8cá=íÍY'ùÊÆØ÷y"m²ö\95\8dÃGÂ9e^\94ÿ²$ýißûÊóMß>®ûöt8\8a\93q\ eÃÑ°þ\ 6\9a|\9c\93V÷¼°0WEµGúÁÆ_IÊô¨Q\88F\19~Cnºé»x\10Ã\94ZZb,Vhe°\17ô\8d<i\fF\83x4\1cãç'¾}5¦©ëEçsç\a9\9a¿\97endstream
-endobj
-1220 0 obj<</Type/Page/Parent 1011 0 R/Contents 1221 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1221 0 obj<</Filter/FlateDecode/Length 1573      >>stream
-x\ 1\9dWÛnã6\10}÷W\fò²)\10\13ÛIÑ\r\90½\ 4ÈÃzÓÆhQ\14} %Êâ®$º$\95¬ûõ=C\91¶¬¤è¢\bâÄ\928\973sÎ\8cþ\1aMh\8c\9f       -¦t1§¬\1e\8dÓ1Í.&ø¼¼Zàs\8a_#©\18½[\8dÎï.i2¡U\81#ó«\ 5­rÂãã1­²ÓÇ]\93\95F7êoá\94n,­¥{\96²!WJÊu-TCµ°N\1aZ\eýlñW49U:\13Õà\86¥gUU\94éÆ©¦\95ä4é,kÍ\19­[÷ÃêËhLÉä"\9dÂÿ©+\95%[ê¶Êá\91\ 4Á\83Èwø#\9c$«\ëÃIñé<½äc÷\ 5I\85È\f\19ÝrL¿LHãsJ\85P\95õA\17ºªô³j6]8>\84\1fÙ\ e\80J¢¡¥¨¥%] ÚzË\96ð¥!)²\12ÎsÉw\18\0Õ\88,\93Öªu%©\ 12Ú|¥Â\88M-\e\17òEø\8c\92ï̩@8Â\ e²­4¢\11\96KU\ 3\1a\19L{\ fÑh#Õ¦\ëÖ\94Z\ 3^e\9dõÉ'(\\ 4m\92\12\eÆ\95}\1e·ÎÉz\8bP\06\80odæø_Än\aÑ\1f\12õUb¼|aº(<\1cþF£\1dWÄÈZ?q>F×ì49*Þ\ 1\8cï\89{ú2n\14R7{\98\ f\88¢+²Ö\ 1þÂ{öÁýv¿|$4Þ\93D+)\17ÊÚT;ß9\\19dÜÕ)<æ\8b©ÜË2pÓÚv\rÐ\91û\8eZËmÒ]H\94Õ\15\9a\ fýh´È3ô<-¥{wÿù\91\1aÀ\ 3Dð@Ë$Ii\85Þ\90E\ 1´-  Ð̪ZU \90Aå])8\eðÅ»
-Qr¼ôa\9fվб;/:ÀÎï®i\ 2º\16¨÷\8c\92ù8½b\12Lfé,¥Gé@³\rµ[ØêAÄ\ 1ô       \9fL\17é\9c\8f\88#èQÔk\81\9eÍJt,Ó\açU\93\83Ü´\Á.\ 3½¿]\v\ f³\95Î{Bº}g@B\ 3s\87«Þê ûè\ 3ùz\92÷¤\9dn©n\ 1²Ès_æ\ 3\96Q\ e}L¶^§hm4\84B©ù:À·²\ 2ø(Vtá\19ÞëÑ@¯?6\95^\8bÊþ\89\13\99·\1aÝUH¾Ãj¶\17Ç=­ \1f\90§v»ÕÆÑ[ÚIßJÇ°\ 6\15Úá\85\13\90Ý\1aù¤të99I¯S\94°\14\9c#\9a{+\fz\89\95+\97\85h+ÏV\98O   \8c`HJñ\ 49lv¤«\1c\14Ñú\0ÛÎ\17àÀ)³×&Ð\83\85ÕAÑ7 \88m7\e iͽív»1\ 2â\86r\84¸¸økðüÌ·\ 1\82\ 1´p¹£Jrÿseqiàù\90\ 3\f½iô\e.\8a\80òãQ¨N¨H'_¨HlêO]ñjº\92N\8e±?ý/ÄOO:Þ\7f\95\92\e\9e\ 5\92yÅnû,µ é\ 6÷¤AÎÞ\11\82ªÏ \ f\9e,Ð`1È\86iÈ¢}de8w~Ge´
-LЬ?\9f\97\1fá\84\93\ f\9a\96\9fW\11·ÿ\93dè} Zk\b\vô£a¥\1c\ 4Ý\15?x\r÷"Î\81\91\9d.¼à5#Ðg°o\8cF\ 2-\143äÆ]°§ªÊ$%¸#»F[®\ 6¡ä:ky\1aúyí\91Ì%fa\85\96^jÌr¯\80=}ñ\86;\91\81Ö#;#·\95Êxì#\ 2?\815\ 2\80Ô£¶Ý\1cg$\ 6^#.|\ 6Ò\12\ 2\aé\85\9fè\95ü\16d\9ddó¤À\ 6\ e1¥[K\9fTf´Õ\85\83ã¢E¿ÂBÌ!tp\8c\b´\1e¸Ý\1aít¦±it\15@ü</±ä\18ØGG\80\eNejËét\12\ 4\ f={LtOÑ­\ e[E\10ª¢umWo(âÀ«÷\95Üt.=~=\8b\14c\ 2ñ¼TCXx\13ñ\eÆs©°Ñ`\96\81\96ýv:\9e\ 1\ 3wYÜÊ\ 2ª/Z\ 6ë\/eÏ\ 4\1eæý¦\8clñrÆýtò\92à^\ 2z\92\158\1e2ð¶`Ñ<êL|/\11Û\9a·U\1e\10j\ 3\ 4;¥ó\83E6ö\0)t"
-S¯H<@ÃDÁNà·;\8có\17xìmGEá¡\85}Ào\90^×÷t\91&J¹9p\b\91B\95\a\93÷\8c\aZ\15÷@\ fÞÀq\9c\ f{\7f¡[N\1e\8cª\ 5tºÇ¦\13Ø\93X§Ãêzò\1e{¸ÑÕÀæ\83hd\95Ü@í8Ûäæ!vtr³zÿ\90Ü\1c\19Ì\95¨ôÆr\8c\91Á×3\1e\15ñÛrå7\0'\91È«]\vfúu\82\v×K#ÄØCí\955\80'4³\93Ï\869~\18ãAûãr0È\92W\ 5K~'8¿û×ùÞ\85ö\96nü~\87´\ e\11þÄ\ 6_\9d÷ÏÐ&ùê\11®qx;á\90y°t\86»w\89~²±²ð\895µç×·ýùÝUXI&s¼Ë]]Ð|1ëv¿ÇÛOïn EûÂ\9bþ\87¾örÄI<\90,¦x½û\9e]ñrq\99.æWx5Äã××låãjôóè\1fqV¤Ìendstream
-endobj
-1222 0 obj<</Type/Page/Parent 1011 0 R/Contents 1223 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1223 0 obj<</Filter/FlateDecode/Length 1416      >>stream
-x\ 1ÍWËnÛF\14Ýë+.¼©\13È\8c$[²\4\ 5âæ\ 1£\88\93Æ\f²hº\18\91C\89        9£Ì\90Qõ÷=w\1e\94ÄH)²jmøÉ\99û<çÜË/\831\8dð9¦ë       ]Î(«\a£dDÓùe2§«ù5~\9fàËH*\ 6·éàÉË+\1a\8f)-pe6¿¦4'\1c\1f\8d(ÍÎïu#©Y\89\ 6ßJKU©$½~ÿ\90Òý\9b\94n_ÐÃ\8b\94J\85\87\92l½H2­
-*ÊJ\92.Ü?\1f\10d¥ù*\r\89¬)Õ\92\84u\8f>ÜÝ?\84'\8fÒO\83\11]\8c/\93        ¼\9f\97\8d\95U\91Ð]A[ÝâLC\vݬܭ3>ûäå4D|¾)\95%Û®×Ú4ô\94¶Òú\ 31¥ó3Òë¦Ô\8a\84Ê¿cÁGø\94~U¢\96¿\9c²\81<\15©z\91÷"Þ\94UE\85(+j4ÙF\98&        '&³ä\8asJW\12õ\16øj6\9aÖÚÚr\812ÙL*aJm©Ð\863u\15\94\19\1cAb\vÅÙ\e½±(]B0\83ú\1aÛP.\eøÃ\91ãwz\ 1F\vÄ\85 ØÜhó\99Ð.\18\94\ f¥Êá\84n¦CòMãzÅÿÞ§T\8bl\85îsï\80\ 6NDé\86-\14å²52G[{>×(\ 3ã@ì\9by®kxô\89X\89ëù¿eÒeϱ\87ÈC\14\9e_\ 4ë½X×\84'/oh\fT3¼/.¯|;ÆÓd\96Ðîv·¡Ä\8cf\ 4üæÝï¯Þ½yÿ\96Mïóãbr\9dÌ\?ÑgtæT§NÖ¹+#üà2à²\90=\9fCWY¡N¥åH¡$JÎ`óAhðò\80kÞ0óÒ×\82^\vÛ\80\83.Oüüx\8eöíS\eì~\fR?îye\v\16\94
-zkÊZ\98m´ù\eðctUI3$Q5+Ý.W.\19E]\13\1cç\9c\85\90:­+±µ\9eѸ,íÇG\ e\ e=ÇüÈ£'$Pû\ 4\1c\92\91\0âE\8e\19¼\v\97\87ô8\91Ð(Û\80NF×TéLT@®Ë<\´®5 «ËÌñ«\ f\\87ð\95ø\8a¤#ì\89Á\fåZ8\82\ 6Éc\12-\8dn×      Îé\ 3ïhDLô\80\1c°\95\87xzéÆ´$h\16i¿Ñm\953>\84\9a\13Í©ó9¤V      Ö\10\87\ 2\8d\9e}\8eø\eª\89Ry\15\81\9e60ÓóËUX\ei¥²¡Ü\aQ\86¢\1aÏúZ|\86\0\1c\95¦\9d¤±\90\89]\98}!¼c%Þ\11\8c¤úZ\1a­j©xÆÈÃ"uîë\16\92Ç\958@9PçE\1djäNhUm{  â\12÷äxVkT§+(±ô\ 3\8a\1d©\ e\9dy\ 6\1cµ3ìùdRr.\ 5Щ1¡\96q\ 6\ 5Üü¹¬ôBT\7f\81½\18\89\90µ0-\ fGèÏlu7ê ^q\98\1c\ 6qdêí\9dMOÖÔ\ 2°À\97¨,\ 6\92\91\854\ 6xÚr\999øcäqS
\99ôFí`\85øM\8eJ6ºW\a\1e\19\124r»Ã©¢Ø¸@üPUFt\13$}\12$\9dÂÇ\89âð~1Âþ\83Y\1cO\1edØUñÈÁP\1d°/hÉ÷\ ec\96WHºÂ62\9bú\16Æeĵ%l\ 3'\10Y\8b®\ 1\a¢ùíÒ4¤ÒïGF~iK#ûD»\97\7f7C¿@ùF\83â\18Ôh\ 6æ·\93\99\88:/\82q\e`\9d\8f
-æÎfà+V7\8fÿ\83\9a\ 2å{\9dg\0uÄJè\19´h·CP@\1eó9\b\1dH@hKn\99\8a\9bÇÍ4\ 6c1³º!\ 3ûЫFªþ&\ 61\\82}F.4æ\e\1a¦\91².prHÀyÙüdÝxµ-tVÐRë\9cÊ\
-VÑ\96M²a7\914\1c\7fî+\ e®ìW \97u¬Ç\7f\ 5\11ð\7f\83ôçÚ\95;ô×é\87k       \90\ 5Ùèo-\90½\ 18\84®pC¶\1e\12\e\ 1±Æ\98\ràÅ\ 3C\9aß+6«\12Íüv´¹Ý
\ eZ\16GJ\9f.)Î\9dí÷ö\8cg>&\ 2oM\82\86Ù\ 3¤|\97\ en\9b¡³¾h\9cQ&\80°þ\0æ· \ 6\1f8\941Ú"\86d\15g\ 3\94\96ß(°-v¯0Qcöc\ 4èb\84«\12{\98Tn\1d\ 3è\1d\8b˦\aÖ@B\8c'·:ôýÆåy\1eÞ´Æ3¼7Î/ñ\86
-öðìõí3ì\83ú\13ÂÄ>\98µ<Á±\1di··^Äã\17×\13¼Hæç?²p_ÍæÉl:Á¾Î\17G#\ eüE:øcð\ f\8c\97endstream
-endobj
-1224 0 obj<</Type/Page/Parent 1011 0 R/Contents 1225 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1225 0 obj<</Filter/FlateDecode/Length 1350      >>stream
-x\ 1½WMSãF\10½ó+:>AÕZkËø\83T6U6\v     \a\fY+Å!ä0\92FX i\1c\8d\84×ÿ>¯gFF\16°E.\81\ 2lk¦?ß{Ýüs4¤\ 1¾\874õi4¡(?\1ax\ 3\1a\9f\8d¼S:\9dMñÚÇO))1\ füÑôõ\83Epôùò\94\86C
-\12Ø\9a̦\14Ä\ 4;\83\ 1\ 5ÑñUB;UÓZ<K\12\ 5-\ 3ÊE´N\vIª j-I×a!+¼\14\959¹Mõ\9a*E¡4\8f3\15\89\fwt%K
-KµÕø\8b{\859\1cÁd\9cj\11fò$x<\1aP\7f8ò|\ 4\12y(()U\ eK\91ÊÓâ\81\ 4½i-Ü\91\96UÅ'8 De\99Úò;µ©RUhJm¤\7f=d*\14Ùß8\1dñ\ 3R        _è8ÖyèEªH(I3I?óÓÏ\97\ 3:³åéû§(!â#÷\15«\À¾Kð\v\15ª±7ðfí\83\a¡ÿàܦ\94\89,K\19\7fÀ¦Ò\94Ég\99Ñ\17\1aØ@Ïh\88þq#û#\13çpìM=Z¹úÔ\eZp\ f¸:\88ZÐ×\9bëùÕÒÞ}\ 1\9fz\13\ eÞu_\0B"\8eù\96í\v\9aø,KÍ}\16t\97\161l26¾Újìû\9b׺BI*n\10Á¹8¸OB\93hÊåú~XO\a\18\8f\16;\8ae"ê¬útèñ¶LsQî\1aÏ窨J\0\0 KTÉ     Ú\88
-\91KJá.Óê\8d¦»S\1d\98²\ 5\83\r¿\ 5÷¤Øá3TBÓ6Í2@Z\8a'J\93nj¥|H\19ó¨\110iíwRíx[Êjqu³"\13êý±í̯ÃÅ/÷'pU­éîj¹B×`UÄ\ e»tûõÜsfý\89Eæ%¢¶¤Ô¤àÜä`\19 @[`»\ 2\97\1cY«y°eH\99\vC(î×a·Ñ.\83â\1fæ\81\1akôJGe\1aÊØ£@¡hOÀÏ\811¼= D£\f\8c\13\ eë=\12w\¿Ciú\9f\93º   ¨Ãö7Xüþá\16\8d'c6Ø\16ä¾ßfb£®V\8f\ fK\9a¤\ fk[=\999\853¸q\82\r48Åf.8ÙfmoúÍuï©}F\8e\90F`z´\11%®±\88\83óÐW¼0O´å¦²x\ 2ÃØ"ËzU\ 3llR\951\ eCk÷q\18NYö°´Ë\ f¡
-\14\83µ\1d±\16\95\0ö\88±\9e+|\12K\80:s)"
--­óFê{\977ßί\96¿Ñj~½\98SpC\8b\8b¦u.Ñà÷\vº\9e¯\82\8bo=\8c\1c¤Ø%V{\14¶hs\98\16\87\97Ë<dæÛùBNÒP}\ 1ÁpÔ´rÂÅâ\eºÆ/\93\1e\97¥\13\98ȶb§y º¼ùä«ùé°`&f%\9e¸\1fèYÅ2ß\90«\81\ 5(
-)ÃàÀDÞÏÖ\8eÓ7ÙÙ\9a´ï\11\94þ\13%Çû½\ 30·òåªÕ\1a¨\87JÁ£\93Þ \17>mñè­qhíc Î\fp".\916kÆ˺bݾæ \9b\87wk^l\18³V×{\87\1aÞã\11\ 3\12û
-&8ê\ 5&4eGÔ*\92ZSmæ/º"â\b\8b\11(t\81\9dj\7f®Ó\89\8d\88\9e \8aN·Ñ;*jÆ\17ÃkÏJL£u
-\e{çx\8f\85\fu\8ad,\8bHÒýq\98
-\8dY"h­0\95õZÕYl\17;» uü6a·\87¯\ 3\91¿ \0hÇZÐvÃȪÖ5O
->Ô\181«Â#o\ 3"T5~\17;\1eF2Óò\1d\9amEQ9wh\ fö¹¶-Æ¿±ÖÌ\vè\96Õ£\1eÙ-Ï-\7f\fÿý0\80\1d$\ f\95Dñl\r\eßÍÖyU¡\82fÍ0\ 1\ f<úÓô
-»ÔÖ\94Ë\8c²´2ñ0\9b_òSL'æÔÎM]½Ã¤ÎQwù=\92\9bªù\94\ 1ש´=©\7fº?q\ f\1a.ÌY\8f\9b¼Ðn¿\13E(Ñã»ä\ e«1Ê\ eM:\e\7f¢\10åå\95k\19ÌW\1eÍÍßF\83\18Dn=2=4\12Þ\89fä7UiÂ\b â¹ø\9eæuþÂ1 Ý\1f»i5s4\1eNð?ÇlD\93)ÖeìðFkoKõ\88q\84\1d(ªs\89å\83woöÙo\8e÷§>þ×\88\8f?¼«\9eNfÞdìcËå[\83![»\b\8eþ8ú\17³H%\96endstream
-endobj
-1226 0 obj<</Type/Page/Parent 1011 0 R/Contents 1227 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1227 0 obj<</Filter/FlateDecode/Length 1593      >>stream
-x\ 1\9dWMoÛF\10½ûW\f\ 3H\8c$˲] \a\em\0\ 3\8dÓÂ*\8c\ 2¹¬È\95´        ¹ËrI\vú÷}3»\94IJ.Ú"\89cQÜùzoÞÌþu1£)þÌèfNWKJ\8b\8bi2¥ÅÝ,YÐâö\ 6¿Ïñ¯Ò´       _,\93åðùÃêâã§\ 5Íf´ÚÀÔòö\86V\19ÁÌtJ«ôòqC\a×Ð^Ù\9a¼*Ö\8ajG\e\9a\94%\9dë´6Î\12þúZUuS\8e©Þi|Ò5ÿB£²Ò\e]U:£BùZW#Úæn­rr¥\9c4x·X'©³\e\98þ°úv1¥Éì*\99#\8cËÑAûQBÏâxoò<\18ß©W¸'\9f\9bí®&\95½":µÕä^uE\ en+*]­mmà'¸¥uåö^W\1e\16\14Π&ÖÕt\8cnàxp(¡?¼ÆIã©T\95*4\12¡½©w\94ÂÒ\98\94'\13
-%¡Õ{G;çkO_/÷;-\ 1áÇAÜî\8dÍ\10
-Ý]\93«èi5ð\8cgRç¯\1f¸¨\B|Ô\94»\14¹øfmQØ5r\94
-K\bgJ\f\8c¤t\11\8cRWÆe\ 6\16rÄ`3Bµkc\eþ<p/aJ¥OA\ 6T®Ê\909̯uê\10\16Ç\17BëW,\89fçK0\11@\9e¥Ñ\9aA\1ce®P°Ü??\8a\91\9b\9a\8a\9d\15Úf`\91ÀÇ\94T¹wR\84·ü\a¹\ 4\93#\ e7V\ 3\ 6H\ 6&K\9aÌ\82\98\8c¢³±0Ý%ÑýÎå \99\0]ѯ÷O(ÇÀå\v\1e\82  !l6-Qª³5b|\r8âö\96Ù©²\14\r\82t]®j$\1a°>)¤\14¤tÞ\9b5\82AjÜ9fÛ\80ÐL»\90\19\88\8eV\0×\1d©ºÖE\89fìaö~¢m\11ZÇm+®\80ôÆT\880\18\ f@0    <5%\9a\ 1Í  @\99\10g\8d't\8f7Bsö\83\94£oa\ e*Ú!ÚY»¤\91é\81®©\0¡kí\13\87\10Ï\ 6­\16âTÀ\82e¡ë\99\99¥òJ«ìÀa\ fü\9ewÆÍ\13ºC\99\9c]±"TîÕd(\83jjp¹6)\b\9b56S6=\8cÉï\\93s\18\9aÒ\ 6B\b!íÙ\1eø\8d:E\evÀß}ütG3\882«óäj\11úiv\9dÜ%ôY}7v\e\93b\a'\86»Ò>\99ß@þÑ\8c«á\9b¡Ç|él`\15\13>u9xÈæÙp\88\8arâ\86\ e(\9a¼6%\b\18Xê   ½(\9d)/ò©\14ãÁ¥Èx\98\9f®÷\9a\a\84H\19àú\13½Ì/\17ê{Û\98*Eã°R\ f2¢õ\81;^¢\1aèÆOÄ£\82\8c\1d¸kgKB\ f\aÊôF!pnÏNïC\84zuk\99ßj×\13FIH\8ee'Âùôe%âóÜÎijÜçB*Ú»êû¶rè\12)Ñ.¦\ 6.b\bñ\ f<PÃÀ\9fVô³(ã0\9c\17\19¯â\16ä;­\11S\94\9fö\ 5õ\983C\88òsdñ\re­klª!°2±
-\95\r\9b\ 1Áow\98\1d¡×\0`\8e\ 1\1c\e\ e\83jS¹â¬Ä\81+`\ 1¢Aç\ 5¼eüà\81\95\19Ä@ãC\ 1u\1aâv°é®rÖ@­»ä\eVã½ÁÂ\15è¡Ê~,="\8eíVCÅz#\84ß\1e9O9\12ÌG´Ã^A\1a\7fÐÍÀL(ì F¡\91õÇ-Èc\11@ñyõy\9bI±ÊÝ)\ 4\93\13´\b\1f\80Å»ëÔ0ß72bxs\12¨l\14û¯\97Ʀy\93\1d%\ 1ÈÈ°Ï\8d \e\99\v¢6\9eßQôòøô\1c\8fs\9e\95Æì\ 1°Oº~xüò<È\96\99\8av\r\ 5\87>D«¼I9\vn\ 4£À*\f2Q\8e\13\9bÂwÔIÀày\85\9dÊn}hG\91\8b\1fÙ-vÙIÛ~\92ã¹\1d#\9eâ|¬\8aÃP\14\7fÐÏíê\17Ö´Øú\122\8eæα\86\ er\8d\9bWwé\12 &X\93Û\818K\88OáÉ1TL~\15\vC;U\96\1aä\88`cuÈX8ÛØ&{\8c\8c\ 3w\14Ê\88f\89Ó0\fð4Õ\1e\ 2!\ee\14¸IgG\16Má®\1e\1f{¼W\92\16UæxD6¨\ e¢       z\84Mõ$»yÈn2¿Æй\vsãq3F\10{\16\81qÜAE\86\98d\82R\97\13g8\16`ÿÏ\0ó²\1a\85¢ÇX¸\15HsÇdÆ\b\92`X]+½e\95ãK\87d(ëØ\0â\16\88V\ 5\83ÈÄ­\9ekÕi\8eqHï\1c     \ 3s± j\83Î\91\10~Àe do]\94T\96\ 1\bÀ\88/¡²}i\8a¾\8f ´ÔïP¬Å\0×        ûF²è\97Ù\11\7fZ\85Jµ<\1a\86/ãò= :ÒñÏ$ãì[´\8eÔC§ø\ 16\1dü¸X=ÖÊ\95\87ÝÈøì\81ÄO¥}$Z4A«
-^Ç\ 1Î\97²\93*Gª\7füt\eoÁ³\ 5nÍ·W´¼Z\86kèóýç\87{ú­rßpÝÅXN\e\9e\95Ø\8e\9c\95\96¸jãÀäf\8eKsvùo·³Åò6Y^ϱØñ¡é\9c\8dý²ºøýâo±P?0endstream
-endobj
-1228 0 obj<</Type/Page/Parent 1011 0 R/Contents 1229 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1229 0 obj<</Filter/FlateDecode/Length 482       >>stream
-x\ 1\8dRËnÛ0\10¼û+\ 6¾Ä9\98\15eYv\8f Ú\ 2=¤ha\ 1¹øBI+\9b±Dª$U5\7fße\1c\v\14\85 \17¸;3;³ßg\12  _\12\9b\14«\1cU7KD\82\æ"E¶ÝðwÊ·#4/\aëLòïÕÁ}1{÷é=ä\ 6EÃXùV¢¨Á8I\82¢Zȵ\90\89À\17\e\bª´C@鬪+å\ 3T];ò\9eümñÄ \19$÷F\90\119Ã,>7x¶\83\83¡0ZwÂÀÅP\98's\94ÊSý7\18ö\8bÆ:ÐOÕõ-A7Ð\ 1dj\ fm¸3Ùß"\1cÉDX\8cºmá\83Ó'\8a
-\98W®xræí\9d-[ê¼À£6µ\1d="è#K88;ô\1eµe!Æ\ 6\ eÁÂ\ f}o\1dÏ\84äÆÿ.ËÔ\13W\84Ueû\8c\86QY\87
-W¼ìÍèµ9@ñ¹Q\1d¡µö\14       Gkn\ 2?ÝI\9cÝ\9a,_®2\91EÕÑk)ð0´A¿\fo\ 2¹FUÿ0x§ºRñ ãe\0\8fNUGmx¼Q\87\vØ%\ 2ý\ 6*p\8e\a\83¦Â©àO§¯F5Äñ±q\1ci¬Ã|ê\9bÃöA[\13#ó])*k\9aX\1aßú0ð>rC'°#z;ß/Ö\1cmL©¦ të_mÚ¾.\95Ìy\9d·+È|{\8exw÷p\7f\87¯Î>Q\15ðÁVCG&¨È\e\95./\rËMÊ\8b|6÷¿\169c\86|\9dò\1aÇ®d\15Ñ>\16³o³_\97°\ eûendstream
-endobj
-1230 0 obj<</Type/Page/Parent 1011 0 R/Contents 1231 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1231 0 obj<</Filter/FlateDecode/Length 1531      >>stream
-x\ 1\8dWÑnÛ6\14}ÏWÜ\97¡)\10«\96ã:é\80=,ÁR\14ØÒ\ e1\90\97¼P\12es¡H\95¤¬ùïw.IǶ:\fCÑƵÈËsÏ9÷Pù~QÒ\1c\7fJºYÐõ\8aêîb^Ìi¹\98\17+ZÞÞàó\ 2\7f\9d¤6>(Ë\9bb9}p·¾øðð\89\16sZ·¨µº¹¥uC¨3Ç7õåýVôA:*W\ 5=\89®\12ÔK×Z×       SKRÞ\ fÒ¿_ÿ\15k\947©ÆìzY,På\12\9bÊ\82îm×\v§¼5yå\92Ê2¯\Ü\0*V®·2\97÷ÒípÞ१õý7
-\96\82Яñ'\16ÕZI\13
-Zo\aOª¥½\1dH ÃàöÊlx\95\97ÀÕ\92
-\a¤\9eF©u\é·vÐ\rã\9dÓ¬¼N(\9d\14Zï©\8e0±7p\95ÞÙ\8d\13\9d§°\15\81Ñà\83$/:É\8f\82­­f\10\92\ 3(\16\8dB\r±\13J\8bJÇEi?¸¢Vá\9bà\84ñ­t\93Óßês³ÜI\e\1ea,Nt\91\83JxÙÐÓ\1fwh\8eÙ)r\8dÅ
-z\82½/\89\87Q\98\88=H@\12\e¡\f~zÛÉ°en´z\95$èqÍå\9fÛçM®Æ\9d\99HϨÀÓVì\0ÖR£|ì\ 4äP5\84\bÄ\9a   z©"Hü\93\95áÚ\19$}åg£\ 2w¬R'öI\88J\82O\ 6$p\f´\ 5o\8d\f\84}#\97^.ýPoIxz\94¡\92\83zy\ fN¦Ú%Ñ¢·â\ 1 \8dP\7f'´j¦,}\96Fºx\1cÃIV\804¦I\1a\9f¹Û\93W\1d¤t\0\a.X\13ØÀ\89ñMFò½\94MA_@qtÕÁnô}P\ 1DO\98ªà«Vx\9e%Hnèñáé\8a\84\ eØ»Ùâ+å    Êî©ã®\eÙKÓx²Q\170ºÇÆnÚÐ\93Ä\ e¡q°ía°(\c\r¤8N\1cØ\b£\84¾©=0H\8fv\87y¸b\ 4Ñ  Ê<®Ñ\87\89\1a^óiõ¤\83<øp"Ë]ÁdW¤\fE\9bò\9cH\1a­ó\98Í/ä\a°SÃ\8c¼Pm6lÈVÔ\ 1æ@\9f,R\82³\ 3Ïðgª\91»\8cfÃÆÉé[á\9a\91ç\83[h\9c\9eç²a\92ø\9c\1d2Æ"\14\12W¾ ÏX\83¦\92\8e`'ïO'gÍjé\ 2æ\ 4*WÓ\ 3\99D\19T@\15n3ÊM#ü~\86ÖGQ8AOÓ/N%ÒoQÐ×^Ûúõ\98\91xÄ9;»æ\90N\19¹à\94ü\8a\86vJ\8eÜö\87\87³\88äe¹LÊ:¦\1aÓ\14£\83S!\85¢§\8d\8c¡×!\96\15Xi\9dí0d9Qac IQ'j\94\88©d¡ª\bX\rÂ\10#\87Õ\13ò\11e&xPOp\1aÚÁtÚ¾·.\fFù j®ü\8a\ 1\85\ eI\8c\84\88Ån\1dò\18g\v\\15P:bÆ(à        \8bf\99z¶¬¨k        Ô\1cá\19Ú\ 4\ 2Ë\8e}1¢ÄÆñbØ\18±}ì¥\11A\14ôÌ\12%W%¬aßÃÑ\6£â$Âè\98Ó½àÁ|¨µõS\e\9c\12´æ)­ÁÂ\86M!\r®AvÜé\8dX!dZ\15\92- ó!¢#*Æà¤\96\181²m\9e\81²øT\94·\88FÌÅ\88Ñu\ e\93\83Æü\10\19\ 6ãS¢!UDÂ\1c\ eΤ\11¨\90¢²\15\83\ eWÿÂ\1c\83F.\1e\96·-O\rÄÆTÈ\19UûYüD¸hP\14¥¼\fá \ 6.o\{\1c\?'s~<¹¿ó\r\94láé\17z\10:qxnâ¼î\99   Àdu\88·ä\ 5Îb0\ 2>\ f5\80lkGÎ6\ 4\1eÀ\bn\ 60[o;áð*\808Á¥Î:ãn¸ãï\ 1Xvl3VfÚ\7f\8f\eûoÕ\89À~\11t=ÿ\89T\87ïv\120`ųá\86F\1dÈ9RÌDqÎn\90°o°"zvm\18\84\9e\9cwZ\e°Øf\91\1aÎ,\bß\89\8dQah$ÁÈ\80\85FSâ3å8oäw\8e\13Ã:Ù(vE\8aÏÆbÙô.øæä.Æ\1f8H   \97}\852\bÍ\11D
-z×
\ 2d\9eßá\ 3\ f~î4ý\a1 ý\19´\96m¤&°\80\8a\17\99\95¨_\11ɸ§â\85\13T¥´
-{~\eâ\97½\18ä*¼\8b1\9dr\7fä>Ñ     zÆÕù+ß\9c\ e÷çÐAWä@{ìÜê\ 6Uql£¦w~kµ¶ãIð¾Ej\99^\87bð"z\7f\87\87ôâ<\81\7f\bÖ8\98\891¼,\17\1fA\93\91\98\8bÜÎ\f\ÄB/\97ü\9e\a\81ô\1eYw°+\ 6&\8f*\ 6ñåòäJgª\99aîÝbäªý\84À<°4cûFÁ}W\15µ5l\11C={\8eß\1f\e\89KJû\97÷Ð
-\ 3\9f]\92Q\1d\92\8f#}>Ñ@ûÃÙÿ9á·Ç        _^'Rÿï/\ 2ËÕm±ú¸À\15Ç\97Û|É-ÿ¶¾øóâ\1f\83o'^endstream
-endobj
-1232 0 obj<</Type/Page/Parent 1011 0 R/Contents 1233 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1233 0 obj<</Filter/FlateDecode/Length 1595      >>stream
-x\ 1\95WMoÛF\10½ûW\ft\89\ 3H´¾,+\87\1eìÄ)\82ÖuZë\90\ 2\ 1\8a\14×"¹ìîÒ\8aúëûfHÉ\12­\1e\8aÀ\88@jgÞ¼yófõ÷Å\84Æø7¡\9b\16\94\94\17ãhL\8bé,\9aÓ|y\83ÏSü9M\99¼\98/¯£å¹\17Óé\99\17\8b«Ï×4\99Ð*C\92Åò\86V)!ÁxL«ä²Ð/º\98\92­\v\9bl<ýDÁ5úýê\19\87æ\87C£é\ 2PVé¥ÏmS¤äk­SJl\954Îé*\90J\12í=\ 5K\99)4>ä
-\ f\81¸²\ 1ß+K[\15;Ú:\13\82®ðµ!ù&ÉIyRu]\98D\ 5c+òÚ½\98jM>ÇQÏ Æ4\9aÌ¢)§þ~itÔ½jã#\7fP¦êâStÿí¾K?z\rO\ f&qÖÛ,Ðc\96\99D·!¾¿çä\ 6 \8bÂn=%\85A\1d\A/­Ó*\1d©\9cÿ£D%¹FºÚ D\9b\ 1\85öh
-W\1cµ\94}  xb\9eG³IKÙd\11M£YD\8fàí]¦6zÏõ;|\90²G\94êÚi\90 Ó·Ìs».\9fT\19+ä¯\80×\83ä£0C\8aw´vª
-L\9dê¢Ó6×\15Zëð¤­\rõ¢¿\99ud+\10¹Ê\rêGá ÑÙ¢@?\eÏ\11PT\8f\ 2\11¾\96íñ\ e\8eÓ\ f\92ÑÎ6è^ \93W\10ÓNû\ 1G¬ä\e,\88 \8b¢K³\a&bA+JµëeVkèÀ\e(t×\91\8fXB8¥*(©\ 6\r\ 40]µ-\0ñ{­ÞW*\96T}Ö\99Ä\ 2ã\84Æ\8a,[¹\11\98é>       .iSÙ-m\rg`ýƺ\13:ÈÊ\9c-\99É®\88>p\b\8b\82)µÔ-\11¼Æi\8aÍ\9ajíÐ\86RU\10£)kg_tÉC\84 ÀÃ\1dWãd ü\81[͵\80<nZ§\1a\9e\97ss\82Æ\83æ²)\82©qd/l\90û\8a\7fß\80vX\85     \9eM\0\fÜ-ò
\ fðYvk4W(O¬s\8dèöUò\90h+ùùAò\10ü\13\f\ 5§Z¸2ͧ\96r\13-XÚ+ÁËÒPT5e\fÉb´üÉa\80\ 2\ 1°\ 1­PY¦\93\16ì1\9d8©hõñ+ÅÊ£Il(\88W\98M_Ó2PRÁ\91b\0ålâvú\1a\8f©g\9c\10z\90vÄ6äÜ5¦\8cMNU)rA\13[\83\17ütôØÕ?dyÁ«ð°'\95Ãtq3Î!\1a\9cr1@þD|£u :\ 4@þF\15T«µ\86£øÄ\99\18\88sH\18¾ÌÓ\89äð+F¹ÆLõ\r\16\ e\84\1at\85\8cß\8cÓϨz¯\9bSDäÌ:oÛS²1µ*O\rZ\84å\0\91#=¦É\1d\v\1f®Õ\ 4VÕ>f\89í`a?hr\8f TÃÝR\8cJ`§{n<fËCàIÎ.ÆÌc\aA\vÜ\16\0l{\84¶ïØVQN7Z\82\0K\ e\fU:l­Û\9c#û¤2VÒ_¿=~ºÿõöOöJî(\8f¼¨\11ó\ÊÆ\93\9aù\15f{­\81\8em\14\93wD\0»ni}èUÖáÀ\98?ðÜ×\1a[XÃ\98jë¸Y¼BÓ\949ïI\0Æz\84l@©mà\ e->YTG#ÑK)\ 3Òê9u\10AK!t\12Hÿ¨\v\9bø\våê\85\95\ eçfðb<Â@ç\10¯[\15H®¾|%\1fT²a\92<ö)\94ÞËëÑ\bQORÓíÇ_\8eöå\19ó\98\aï[oþ\91iù/ßØ[á@\8aæo\ f:cèz\ 5\15\14ªf?I\8dß\88åû+q:ßÎh×\81\937bºÜOUÚ\86m\19§±lz\ 5ÅZÊÁÞõ\90¹\83Ù`º=o\\b¬\9b̧\87»½/xú~Ù]\96à^x!(\86\87Oßd,ñ\9cK\89\9dÚâ\82\13Z(·\86\9dA\19l$àúE\15\rË\91ïT\0ÜÙ]¬×¦B\81ptÁ\887bݱF+e\8er\f\10fFC\0©\9cÜæ\16Ê«ÑBØ\84¬6ÄëUÜquäd\18Vø      \8a=Â=\949í!°\92dOv\87\83\97\16l\8c(fµqý½Ä\82\87\eøv`Á\ 1¶'7¹æRyª9\ eÔÌ÷\9f\96\14¾«ÊuM4Àî·\aÒÝZÅÓMi@ï\90\91Ä?
-\WA\8b\96\ 3u\1a\9fI`g\0\1e6&ÜÇ°¦^[\ 5\92P©{\8b\9f\8d:SØÕ]+q~²\98-ç­=\9e\80ø\81¡Æ\85\ 2W^1ÿ\ 3a)çݱ»[\ 4\927\10\13Ë\9b·\84\1aE%Ã\1e\ 1\8e\8a\84¼\1d¡Iñ\e>&ôµÊ\92\8bË\8b\82\95JAr\ 5
-[n\93ßùÀþ\aßÚª]D·]\ 1Ü\rZ\_ãg\fB×ÖT`Ð÷\85ÌÉ%v¢°Uå\8e\ 4ô|\15çK0\95º´ÈÙT\154ê½r¦Ø  wW\9f\97Ýo\92É\ 2?\8b\963Z|\18·×\88§Û\87»[úêì3ï\82O6i\ e\qå£ý\81ÑÍ\14¿{ÒËÿ\7f-\9f/\96Ñâz\8a»=\1f\1f_sØûÕÅï\17ÿ\ 2\9e\80eendstream
-endobj
-1234 0 obj<</Type/Page/Parent 1011 0 R/Contents 1235 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1235 0 obj<</Filter/FlateDecode/Length 1474      >>stream
-x\ 1uWaoÛ6\10ý\9e_qð\979C­Ú\8e­¸\ 3ú¡Y[ À\9au\88\81a\83¿Ð\12e±¡D\95¤ìx¿~ïH)v\14\17I\80Ä\12ïÞ½{÷\8eùq5£)¾ft;§\9b\94²êj\9aL)]½K\16´XÝâ÷9~¬¤"<XNWIzéÁÍjzùÁ,\9d&óK'VK\ 4\1e¤¸[_½ýü\8ef·´.\80*M\97É\8aÖ9\ 1ÓtJël<K\93eB_Å\13=UÊ_¯¿ãý\ 5ÍfñýÉü\16 Öùø\83\85õmC¾\94\94i%kO¢ÎÉI»\97\96j¹3^ /IШ\12Oªj+òVÔ\ eaGäÔ\7fò\r\1dJ\95\95¤\15>r!\ e\7fL¦Àiaõ\91\84Öôðõ\8eQLi2»A\9dÈ\9d\99ªB&\97Ð?¦¥LÔÈéÃñ>O\bãKáéAT[A\a\85@'D­Sõ.\1c`d¡PzO#2\8dW¦&U\ f\12ºj\9bd¦.\12º7((\ 4ö¥r\84o®þEZ \ad4ôG+\1dÃz\89Bd\99\eÚ¶\9e\ 2ö0+sÑå\92ôk¤ø×XK\8c\92ÐúÄ}\ fÂÊLª½\f\f3@Ç\8dñ¦cb{\f\88Ïú\15\18\1a¤.MmZËÅ!@hOÒ½1O![ôà\8b§\\16¢ÕÜ8Cér  mo\8f^:Ú\8cÏ8Ù\ÇR\95g,\8dqNmuW\963U¯\1c\a\ e\8fÔH[\18[ÑVz\ f \1d\94/I\f ¹
-¢ÀÃ^JÔÖÊ\83\b\9eî\85\ 6묠-\1dã\878æÓÅ\8a\93kõ(¡) ÍDë@\90\84N%5Ö\0Qå^UXSeÐÀL8Dä\92º\82û®o¹½Q2áìù\Mn\16\91'\8cS\9aÐ\1f&{\ 4<.åâ4Ý\1d\9f\83GÁæ\ 69Y\1eªj\0\8e[è¼U\99'\1dC\11t*\ 5\86ÇJ\91¿=X\ 5]f<.\9b±Ð¾4í®$p\9e«\1crF\8dr¯Lë\ 6\¢~\aÁ»ÍuB_
-:b\9ad-¸?\83d\9bq\1c\99Ñàó÷t\94n´¹fzêp\9eÛX(Ø@\10.GtmQ _¢ã{\0¡k¹¨3I%\0£¬ \vwtþBSXïÃ#a¸¹\8b@~\84vh\aNX?\88uÿù\ 1]lk/sÀ\82&bبÉÌ´:ç\ 3?Z¦¯Tà\f\9a¨qp\80\12¤\v\r2Ýc\94ÉÏZ}\9bÐC) ªÊä2°}±Ý\ f,üF\1a´ö\8c,ÓÈ\9a5\1cp²ÈÐ\9e#9m\ e<çø\eߦðÀ·\95\909ëräN9G\94!5¼Næ(Ù\9bA!E«ÁÑITAÖ\ 6&q\8a\80Þ£c'oEÕA\12Á\vBð^\vggÞC¬£\ efèÇN¼rQ\16\83\80~!jPÜ\15Ë\e#Ó&\18r,\9c\8d1\84¨$\867Èh3Æ\89è\16<\8cQo\14{I\aSÿâ   ¾\ 1\ 5±È`Ô9a¾í t\90%\ 2·ì\0\9c>pÇ9Ã\fMLÍÌDF\ve1Û¥\0ç<âx\97Çl\12Æ,¡ÏÆ®j¬§¦Ñ*\13¼4\82×`Þ\fGUÐÞá\82\86Ø\ 3ð\1c}äùfØ\95\8brD       ±HäÄ\18a  ³ýü\8da2\a÷2W.\81)§R\8a½\ 2j\bý\85\ 6\ 6\95\1f\8c\r\993c±\1c<\ e0ëÈ\ 2 ø\0Û\14ÁX-¼ªX\11Ñ\83N\9aÀ\f7\8d±\9egEË\ 2{>¾×\e\1d\99z4tÐ5B\9d\ 5      ÚA#ct&w+\ 3³\81WÖ5\1erúYò.Á\ 5ÅJ-Ñn´Vc\ 6\ 2up\\17×\ 2¿÷¯*\8aÉGP0ôµ{éïd\rsüö;\85_*\11\19ðÆhX]¨¼6\a\0À½eß\97\1e\81\9fgd0\1c¸«èp7y5[}§î×C"îÿ\\7fú\8d¾ÄêÂRá%\r\r\98\17\8eº`\1fh\f´ß]G ×°®xÜrªde`\v{%\b· f3æi\18\8eù3øÀç©\a¸2\ 5'©ÄcØi \15\9b·\ 5S\85\80ßZØ\97äå,q\ 1|\94a6X\95\ 2\8an7°\80C\85?sÁ\15\1d\94²\97\9a¥xÑ\ 3»}ÓßÜt\7f ,0gè\11ý©      "\19årÛvÑxÕ°Móþ\ f«\9d±\9e\16ÏóªA\87vØ×Ö4¯/sgëã䫽£réÝ\ 5¶Ð­+»ÍÏè\ 2\e\ 2þkãâ\85-Ø0úý5\96\18\90àÚò       \ 3êp\rë\88Zu7èY\8a\vÿê\86Òù"Þe\1f>|½û@߬ù\8eɤ\8f&kyÙ\87¸Lݤ?0¹\9dãz\9e\9e/Rüð\9cã2Ï\8f§)\1fû´¾úëê\7f¿Ü\ 4ûendstream
-endobj
-1236 0 obj<</Type/Page/Parent 1011 0 R/Contents 1237 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1237 0 obj<</Filter/FlateDecode/Length 1225      >>stream
-x\ 1½VÁnã6\10½ç+\ 6¾4\v8ªe»vö\90C\82¶À\1e²m\13\ 3\8b\ 2¹Ð\12mqM\89
-IYU¿¾oH9ÑÊÙôP \b\12\ 4Ð\90óæÍ\9b7|¾Hi\86\9f\94ÖsZ¬(+/fÉ\8cVé*\99Óòz\8dÿçøµ\92váÃry\9d¬Þú°\98ÏÞþ\90ÎfçWÝm.~üõ#¥kÚì\90}u\9dÒ&'d\9eÍh\93]"ûÇ\84¾¨\\92V\95t\1f6_\11¿¤\14a\1c\7f5_#Ù&¿Ü\14\92&m\1fwp\132µW¦"å¨2-ÉJlµÌiÛQ.w¢Ñ~JÛÆ\93ÚQg\1aÊ\95ãï¤<=]î\8c¥­ô^Zr2k¬òÝÓ\aò\85¬Bl):F\81Üé\ 2õ ·kv;\ 4\vª¥ÅáRT\99¤\ 2
-|9£\8fªÚÓNi (¥K\88Á\ ecµq\8e\91\9c¬\0³\87U\88#ªÚKßæ\94\89\f§nF©;é&Sj\v\95\15§R\ 1ôTc\12éz¥÷j±L\96\f\19¼¦³\84\1e¤ÈÉ\8aö}Zm\1fŤJ+N¼æÒ©=£õ\ 6|\91¨\ 2ç¥r2\9f\92\95\16^VY\17*\a\11Hõr>¡[\90k\8f í\9cϬ0ÆI¾¶2\9e\S×Æ\82L´¬0­Ä\99\ 4Érz\14åVàøAº\97 îÝd\88\97Á
-\r\8a\94\aC\1e\17¯r\18ñÙ\8b#\10ÇêZEº>UäL)Ñ\ 4\87d\99V²ò\8erSýà©\0\16Hg\90\15\b;j¥Ö\ 1¦È|#´î\b}dZPò°÷\8dc@@æq\11«l¬.>\16\83¸³\99©\8eH\1eª\1aqêƨ\1fM\14¬Ú\17Ȭ\ e\81R\ fl/Xé\ 6\14O\ 2L'%t$¸\9eº\96\95#\f\ fFÃR\ 5ù\19{Hè\93§2^ÅEL¡\e´\9a@8º4¢Q` 2\1fÏ\ f\8aMè·
-Dxé<\17\9d¡`ô\8a¹ñ`ë}µ¦°\ 1\8c¢üw¹¶§°ÿ¤×xËÿ#Øo\10¿«Ø\11ϯvvÞ{ȵ\84g°kò\8ca
-13\93A*\17Å\18tW±mi
-_§ì[ÑRXï'ÓÃ\b¹\82\872\83P÷ÐR¡\82\1d\ f\8c0zîû}\9c÷®S[\99«\8c\8bý®ùÄ\ 1g\95ä&jýõ\10Ë3\8c¤ÙñÐÐãý\1d\84÷æ0Ø\a6\9bAp)\ 5\14\8dJ}ï\1al\11p\rÌô\88\97·\82\ 5\9bµp>Z\18\864X\v¸ÁÀ·B\ 5\15³åp\\85£C\18L\95°V\1de\18\1d.\ 3aa#Ô\ 6­(\8d\1d'\7fnTvÀ4´\1c÷rgÈiås\83±éo<\eõ\r\9aÁ\v _dÃE\97Ð\9fØp\9c>º^pÁ®·\94è\ 4\ 3¦n\88WÊXM\9f\r\ 6\17À\fâ\91ÓðL7p}f\8c·\Ï4L\ 2ö\0\97p\8c\ 3Ç7?\8c
-ÓhôNX¯²F\v\8b»\v©k\8a4ó^p\8a\1dãdÂOX¿X~ÂÑä\v\ fþ\84\9a*\87Ç~Þ`iG\15C=ÚÀ¯ÍnÔì`Ô\ eÂ×\ 1`ð<\11J\18Ã\8cRl\919ì¤P\8e(\18;·1êådà$JÓTX\µÌÔNñ:\8fÝ\8cd;õ7@ö£Â¦*t+:\17\11\8c\0Æ\14 5=ÐV\9b\f\7fqu.¬Â3"ÎÍw\96û"¡{        l\1df¿®á¶1ú\8d\97S,­ß²\11\ 6\9bsläQaÃ~s\ fë²d#G#x%¾x\fûA\90Ù\1e\92Çc\b½\83Kl±Ê±Ų̂°ÁR\98²l\fnµP0VLØç¼øsÅÏ*¼ p\e³\84-Îk\1fÑ!q\88í@[Þ bpaOÌuÿHLWx»^/ð´\ÆçÚãíýÝ-ýnÍWÞQ?\9b¬)±Qó\86Q^\9d\ e\­çx\83\86·ÒÙ\et¹Âë÷§9^ \1c0[óÁ_6\17\7f\ 3>\14\98Ûendstream
-endobj
-1238 0 obj<</Type/Page/Parent 1011 0 R/Contents 1239 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1239 0 obj<</Filter/FlateDecode/Length 1551      >>stream
-x\ 1\85VïOã8\10ýÎ_1ê\97e¥mhÚRÊIû\81\85²ªD¡G\8bÐÞq:¹\89ÓdIâ\9cí4íýõ÷ÆIøQ`O´(uì\99ñ\9b7oæ\9f\ 3\9fzøóé¤O\83\11\ 5ÙAÏëÑÈïy}\1a\8eOðÜÇWK\8aÜ\8bá¸ÿÁ\8b\1eïÝ;ñmypt9$ߧe\ 4'£ñ       -C\82\83^\8f\96ÁáR\91ÌÅ*\95´S¥ûÆb#É*ø\vTV$x³\10ÙJP\95Ø\98l,©{q·\98ü=\9b\9dÍI\156Q9áÃ/.¯Î¾/(MrI*â\95ÏË\9f\a=êú\ 3Ä»\f\ fgâQF0è5ëý\917äõkeá1\16\962\99)½£L\14E\92¯)10\9dî¨42d'|\18K\85Ìñ[KÁ\8béî\v\89<ä½¹²õÖÕÎÅÓq[´¨:{\81À\82\16\1c¹G˸4îÚ\99ØÁ>\f½\8d\ 11I\92Q$\ 3\9b\0\9b$r\aÂÄ8Ü\9e½À9Gý´@_÷üæªãî~tyJ>òÀ      é\ e\865
-þÈó\87\1e-RUÑy\9aÈÜ\1a>þ2yÝþ\897bÄn\01î`\80I,\f (\94¶ÀÄ\81h¤µ\1c\a§¤Ðʪ@¥\9cÐó\9bÛÉüênA¸{,5oÎéêìzvvݧ5g]P¨E\ 6d\82½ÀM!a=É`n#3\84F\ f\87\91V\19ù½Ç#ÃÆýc~zø¼\9fÛ)\99\12§\ 3\16#MóóO\ 6ç\aã\91Ùú#Z    d÷á3U\12(\vóÈ¡GJ\93C=\14\81\1d\ 5ªLC
-bYyôlY\90I²$\15úݨë3+      ¤B\ 23Zx^¤        Ìé8\12u2±¥m\96XúJýÞpÜùBIn¬cZ\ 4¿"_ï#Û^¸%ù\95ÂEÚMµ\ f\93ü+;\94%ëØ\92H\8d¢X¦Å¯\89\10áJÁáÇ<pdIÝ\1e\12\f_\9a)ÃN*±3\14\96®\90\1d\ f\841\95Ò\ e»ÀAl\93Lztç\18Ë;@;\89£\85\16`y Rê\14í\99Tndº_CU\92¦-#\90!ÜØ\80?©²\1eý\80\92Ô¨»Û6úÂN:w\97ç\14è]a;­v$µv¼Ò\86\ fëcä5¥A¶Ìáòã\ 2\89¬Ì\11OM\Ð\16
-\97Q\0Â\83\b\16wäbQ\88[Ràj\8d\95 }fr\83\80r+²\ 2òw\ fUP\95q¤¼Wúq­UY\80êln\8fqʹe\17%K\14[Y¡\1aQlËó9W,V2\91\ao$p!\9d\0ë&\1a
-UP;\f¥\15Ij@÷\9c
\91\9a\12Dÿ\ 2ö;\9d\8e¥@Ru\99©R£\ eYCùN÷Ñýº\ 1Ø\91ç\85\b#\90ûéõÅÍýbúÇÄ\91\1e+\8bÉ÷Ùäzé\96\18$g\eÙ\14z\r½Ë
-p\82õ÷\17\178c^C\80\e!7*c\85R\8c\9f3\16©\12ÚúJ\9f.d$ÊÔÞ\ 6\9b\1aa\94\9a\vþÏÙ\ 2\85B\ 5\13áõÝ^²ø±XNfÞôzêº\ 2Á:Pv÷F^\a=´Ò5Ä\9a9¹JÐI\9e¥\8b\95#Tù'K\8f9¤¶\8awm ·ýh¶#UåÈ?î\v\1d\ e$Uh}oÃm\0\9fÒZ¢u\95AÜ&û\ 5NuÛl¡Ü\88\145ùpè\8f\ 6ãá>wt\8d·\86\88Ò\r²¨_\ 1øZãE¾s5GÐc]_× \829"W\89 ,.\90\83\15`\86Iw°øÔ2öü¢¸óç\ eÒ\96L¨UÁÈ\v\8a\90\18Ï\83\1eÐÂf\10¬â\1eà:\80\83\1a\90\8fýÓþÿC;e\85Q+4Î\1d\85\12\8d<lT\83é\85       D\83-:¬ euWg2Û]á\ 6
-Tü\96Vjû<¥4lW\ e,Øj¨Â#Èã~Rçà\1a\9d« Ö\ 2Hp×\ 4     $9¢Z(\1fK6b¨Õ\0\r%tEÌ«<]`\14ÂïZ0"\95\ 2j~\13¨<HÑôUn~kPm94EÛ\10PHW\8d\9c²ðä\16#\1c\ fT\ e¸ªª¼,   ´2P\r\ f\ eX\82Ð\1eñA\ 5\96\ 5Z\1fv\ 2y6\ 1wF\ 5\8f\ 4£øÏ\11\956I\13\9bÈýú®â\ 4Dløþ«\8a=Wy\94¬Kt\8dÆÁé1«Ôt\ e\13c1\875­Ò5x®¦Wü®u\fÅ\84é\f4AZ×\18\1e \8ai*Ã=\8eÍ\96w\8bùdrá ¨#DÕ`\S\91\e\14)\97è\eKp\1e¦ðÝ\b\9d\80·Tgöéªu~\ 1\90£D¤¥\ 4\8dÄ\ 6\ 2É\93\983°ç¸möµOw\a¾íʵºg9®\a\ eçÛ%\12Sx·ÍäLl\11>Ýb4ݸ\89\8bY\1a³sxè{ÄîðóiĽ\85¶¾·\15¥Á[\8f.ÇÍ$î\ f\8f\a4:\1dÖÃñâlöí\8cæZýäaéB\ 5%ÏYnJå\93]\7f\84á\1e\aº'ýÚùûãâp4öFÇý&ÀÞ\98ÏN\96\a¿\1fü\aaKñªendstream
-endobj
-1240 0 obj<</Type/Page/Parent 1011 0 R/Contents 1241 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1241 0 obj<</Filter/FlateDecode/Length 1512      >>stream
-x\ 1\85VÛrÛ6\10}÷Wl\9fìL-\9a\17Ýì7_\eM£D\8dÔI:u\1f \12\94\10\91\ 4\ 3\80\96Õ¯ïY\90r\1c&3µÇ\1e\8aZ\0»ç\9c=\8b¯'\11\85ø\8dh\12S2¦´<    \83\90\92Ñe0¤át\82ç\18\7fFRî¿\88\92K|ì}q³:¹x\18R\14Ñ*çMÆÓ   ­2ÂFaH«ôl¾úóºqúNÙT?ICx\10ëB¾Y}9\19`\11b²³$ þ\8c\8f\83(      b~\85e7\85Hwou!ï¤\93©ûéÊá\8f+Wª\94´ÒôN=Iº¯ø°ì»ÓFÿ³f@o?,\96\94Äß­\1aÿ¸êýÝ\8cnEº\95´TÿJ
-¿\8b\9f´ñ\83xD\83x\f@QÔ\8c\9cQ2£'e\#\8aâ@øG:'\87=\94\93¥¥RVNé
-Aªò¯3\9d\92D\95ù\17ºÂ:DÐ~«Ò-\95"\93$(Sy.\8d¬RINc\17Î%ü\ 6ç^X¿Øêt'\1dé\9a\ f±\ 1Í\1c¹Æðqºq4#\8e[Kç@\94ÎsÚ+·å/Duø\85\7fº]_êA\8aÒ k\94Àär5¶\96¼\ej2¢²Èé\9c7ÜKYÑ\930J7\16»V\97#J\v\85²¬¯KÐÝçx0\1eS\1cÎoÈJÃJáÃIô
-I\8d¨ë\ 3½¿\8fY_©.ká\14(öÛè"£ÙÝ=e\86¹\7f<û]¢´\82E\1c$áã\9b\80VÀù\98\17\19á\0"
-6RXí\85B¹6\14\85´\16\82\ f³Ïó{¿E®6\8d\91HÝÈ+Z\0\9fß\80é"BþmQ\94Üê\92Ra²+\1aÆá`8\fw7\17\96Fa8\18Åíó"âü=\ 6¯Â{Õ&\97X\1cµ\v\86x\1euÏw\9f\87\83É\11Â\ e\8c+J&á \99¶ÑI\82ç\91\7fî\951óÕy-Y !-ä\0\1e;¶Èí5åªàêh\18\8c@\87\93Ïοê¨\8a\8e/9¬Å\14`4\ 5siªS\87ý30SY\95I£ªM¯&Öú\16Ðì\81\1e-E¹\16¤ÀASU\88E*,ÊS>\9d©\86¼Ó­ªäOÄÇ\6u\ 6\12{]\13ù<cZ\eÝl¶\ eA^ú/\15\96r\ 3\8a¾4\=\8b\rlx\8aÐuVÃ@:uö5pM\95Ü\1fiCÚ\82\16I\92\15,Ê·¶ÀKì6gÂY\ 2>\9bm³þ\89úº,Ü\16;íѽ´Ñ:»êá5\1c\81÷.;\10UûvÌh\1c\86¿ú\8cñn#]?ÑwZï\18OáÈ:X\a'ò°Z\0      \8f
-v9ÿ\ 6¾ µB\¡\91\ 4Úæ\88ES\83£ÌrãÌÈ6u­Y0[N\14       \97Ú'ü#ÁH¨ó.ëÙ­\8dv:Õ\ 5\8c\0¹«\1cN\aÀ\1aô*òöìhO\90ïG\18G\9b¦¤Z\9a\\97\82-mïÃ×\92¾6°I®h³ñÚòe_<\R\84©\93c\9a\f\92aëµÑ8\88àÁó\ 3}lÅÉ°~\9bT\88\8c\98]yÉ|×R×p\91½\80ÓÂ@­\94l\v\ 5UM¹\96ÆrE0Ù£\17\17jÇH({\ eµ\90G\ 4¸ÀÎ\r\1ab\ 6yÃ~Ð>Ó±}fuø.ïÑz\14ü§üÓ\86\92\0³Ïû\1dw\a\7fZ\93\vUs­éÎ\eõ\16V%<K¯L\8e§\ 2LsÍ\8ekDù*p9¿í\1dy_\0¼A4¦Ùò\1a\X\92Lf\ 5\12X§­>ýtñ9¹Æ7äì\14µd<oÀ¹G\ 6\93\ 2ýþ1}ú¤ªLï;¾{Çý=_®n\17ÿ\0Ë\94§\rgh\ f\16S.P\95â­¢q2Å\0\aE\9dãû\86\ 2jÙsÂÃà\bÑ;U5Ͼ2Q0ÜÀáUɽS\19\10A(\9e^Êm«ûK7¨\13í\r\97#ѹpó£`å³(!\ 3{\819\9d\ 5T¿Î\94A\ 1Ú`èúAÝ;/S\16ÁP6Jì7áÌ+\1cƽ\83\17\0\ 1(*óMIS0ÆöÙ\92\9eêú\80úÚèaÄÑ{£\1c\87²\1eÐF¸\82q4@ë^À5[Ðúg~ȹ¹\8c\95ç\1cj¤·ÒB»¶_±Á\1a\97\84m)Ì\8eo\ 4À#\86nöx<ú\ 2NòÓ­kWG\e\fSK\aÀ\a\9fÀ\88¯±¶\vê\1fîÅâIâ¹\ 2;\84>0ê\99\13<½_\9dûÇ\7Ç\17´áVAy\Ö\9agQ{\7fh¥îí£í\9eV\9d¹À®Öõ(è¦(èá\vÈã\19\ fñR>¾aÅÚrÝ}}T\13x\10\95fl¨`aÑZC\sq\80½ÌN±\81Èx8²×\1dÇ\9aop\1e\v\998P\10t¦3í.½Ñ\187åiB£IØÞ]\97×ó\9bkZ\18ýÅ_[;ÓÀ=EW\9c9:°]0\98ÄþúûS«\1a\8e§Áx\14·\17ä(¼ä\95÷«\93?Nþ\ 34\99\9aáendstream
-endobj
-1242 0 obj<</Type/Page/Parent 1011 0 R/Contents 1243 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 760 0 R>>endobj
-1243 0 obj<</Filter/FlateDecode/Length 1512      >>stream
-x\ 1¥WÛnÛF\10}÷W\fôb\19\90I\91\92%9@PØ\86Õ\b\8d/\89Ô¦\ 5ô²$W\12\13rWÙ]ZÑK¿½g\96¤/jã´¨\rË&wvgöÌ\993ã¯G\11õñ\1dÑ8¦Á\88Òò¨\1fôñ\86?"þøøóQ|6\bFt6\9a\ 4C*i8\8e\83³æ© 9ÛS|>\84Åp2æ¿ñc$­ê\85h\84Ç\92âá8\88)öO¼)Æa£æ\19G\8eFÁøÙjÔ\8f\82\88ÎÙ+¶\9eGðç\1fZw\93A09ôv¹8
-§ç\14÷i±Â\85Fã     -2\7f\ f¼I»W\e±uÒP4\ eèn\1eÓU\91KåèÝݧÅÝÉâ³ß\e\8d뽧\83!\82]d]\18G\ 1M/>ØG\93akÒGp­     \8cÞé\1d¥BÑ\8cR­Vùº\ 2\ 4wó0¦OÂléJ+%SGÚ<{9$aIðÉ}:\ 52\1cp7­ãZÁr.ÊDüT{\1eR\145\9ecD\99u/¨Ôp\91êr[H'I(»Ãõ\9c&·É-}­¤u¹V>¦\ 4ÙÐ\95ÊH+ïíe\82Í\9aº´qnû&\fSat\11ìre\83êA\ 4ª\bÿ,¤¬v¡åXÂ\1dî\12l\Y¼<Æ\93\85\8f      \9aËÄ#0\ 5A^
-\9b§¢(ö=Úë\8a\94\94\19Â3²\8e[+dÀ¾á=`Þi»i±\91\v¾RF÷&G\96\9ad-»Ç³Ë\eº\97Ò\1c/Ox_8M\e`NÇÁ\84©\f¯Ëx4¦zµ\85Í/\9eF\83\8b«ûpvO|\9c\ 2'\94td«íV\e÷ÿ\8e\9d[é.gwsÒ\ fÈFí¨C\99Éù\11\ eñæòú×Ù\7fôs\1aO\82èü       ¢\99²\ e°æj\r8\91ÜÜXGn\87ÜëµÄ\eC»ÜmüZ"¬$½\95F86·{ëd "\90 ¤\10êKû\ 6\9c\91߶\85È\15r\94+¿\97©Ûd´\85®\14ª\12E@³UMì\rS¸0Rd{J¤TØêC\93Y\8f\92ÊÕiGiì\ 4Ò\br6Ëþxà¾Óæ\8b\ f«\86¿G\15¢Å\ 5\ e¼væ²@ù\0Dj®\ eB\e\ 2ÖÍ\ 1\1dÒÉg.°&òμ¾ç\ºjÛ\81q\91IsÈÎ\8b,k\11|5m\80FiG\99´©É\93'xj,<M?WH@"\8c,öm\bZ!?\87\17ÉtZ\95`=\92¡U@s'\8c£\9bûÅ<¸þýºG(þô\v'çî\97g\ f\1d¨G£(ï/îç\1dïñÑ´Ã%ÁJs\80ÙíõÂ\13ñî·ë\8f\8fD\ 4<Ç÷F;\9dêÂ\1e\a´`­à8        ¿\81»\82ª<p\91j:¾ª\8ca\89l½û\98±§Î\ 5¬\85ó[{\a\8e\9f"\83檵$U\95\894uعJA\16$9w´2ºDÅÂ\17ôs.\90\/]­~Ö\185\87·â\0Þ1ã½4\92\95\ 6eµìÚå  ÇÏI\ 2vP\1aC\85\86î ª\13\90¬\16\1f\16g½eÜY\90Hd\19A\ 3\94(%\18\f¥Á\v#­Å\93ö>ìaîjo\80\89%\96+Ýo}\9f[×é±°Û­Ló\15N¦O³Ûy\13\1c×|+ ~\83\ fù\98IÂycÇ\1f§W\ 4\15*s¥\v½Þ/OZ\9e¶57Åá/º\bki)ö\8d\9ejÊôN\15\ e\8aªm&Ð\ e¸<\9eÄ\92cN ¤k\86\1d\10qüPtI\85|\90\ 5·¡\7f(õ!§ÚW#íd²\15È$S\17\0\82 "\ 1O| Üt£Ç®\18ÕÂï\egü£®8\0:\9c´¦;.Ozuw\8c\82¸\aN\f\80jË­¦;ÆÁ7\7fµW[ã\1f\80\87³Ýh       x\86kÜä©ÑV¯\1c½¿¸¥\e¡p\1f\83Y%NÛîÂ\90ù\8eͼô~ÿÖ'¹O7=dåû%>\83²=9@3\ e/+\ví ë\8eeC8»¹¸\r0q\84/\8f\99\8còË5?wý«¶\f\ 5\87
-½Ö\92\19®\16Ä&t?8ä
-\v¥¯1fÄ\ 6\1a\r\92´ò̼¬áC]¡ \91wh>7\rU9»\91EÑ#\99\81L̤\157ëå\12wd©i\14Øhí\ eüf¹\81Dk³o*¬F;\81!m¡\83¹\9fW\9a\a³0ÕóA8íÓy;ÿ\fk\8eÑÁWÜ\7fkYî\ 3ùí±tûõPu`\89!ñ-7\9f/hU\ 1:b\eç«Ö\ fYÖÚ\86Óv®\0!\ 6\r5\13     @¥ox-\8a\fN\vÞEau\ f\95ª\8eÝ#1!\86E\95¡\9an¯ã>FífLHd*\18\vô\93j½ÞC©\ 1\e\9fW\9b\117\19\ 5soçÏ\8fø>\85»ôÄÜ4\ 3Ó=k·U\12j\e\87\8c
-Zr¨²Ü~\8f°\9e$høMõO\9e&SÿO\0\ 6°\1fÍÚC\1eþÏâzZ\8b¢>ßæzqôáè/\80ù®Ôendstream
-endobj
-1244 0 obj<</Type/Page/Parent 1011 0 R/Contents 1245 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 763 0 R>>endobj
-1245 0 obj<</Filter/FlateDecode/Length 1093      >>stream
-x\ 1­VÁnÛF\10½ë+\ 6>)\80¼\12%YR\f'\85\9dÈ\8d\ 3×qm"FÑ\14Å\8a\J\9b\fwiU\97~{ß,ÉZR\90[a\98 ¹Ã\997oÞÌè[/¢\11þ"\9a\8fi2£$ï\8dÄ\b\12ñåáç^4]\881ÍÆ31¢\9c&gs1i\9f\f=²=\9d-^\8b\ 5M\17\8fñ_)ÊÂÁd2\11Óã\83«¸7¼~MÑ\94â\f±g\vܤ!ä\88â¤\1fÍE$&\82.áÅo\14®²Ø\91å[ÒÎÕÊÑv£
-úô8\1cÓ\97>\1f>«Êi[|y\ 5\ 3ª\9dJI:\92¯â¯½\11\9dF3`\8bÓ~b´*üOüvx=¥(jÂ\9f\8eç|úÄ.w¶¦Ô\92¤»eL\9fo\96Od+öÇ8èäZ\eÆ\92Ò}¥\v\82?zPÎÖU¢èª²[§ª\93\ 1\15\96\1e\92\84G\86Fnc·T\97¢C4\ 1\9f\88\19o\07\91\ 5­À\97þ\e°W;\ 4/¥O6\94U6\ fö\87õ¨ÖÔ§\8d÷åùp\98ÈÊ\1a±Õ\85\13õ³\14\85\19þc\94ª·CÇÑ\87p)6>7\87^BiÙ\8b \18Y5Á¶Ú\18\8bÄÔ©J\8f\80ê\ 2°\8cô¨@K5Ù¬ÉQÐ\8d'i\9c\r\19\80uJl]\82(\1845++»2*w\ 3r5òBeÊJ13ºX\93±¸d ¶\90y[Ø£ØvõU%\1e\8e!\84´\92ë5hbnBM\9elõWi$Ø\7fÜ(¤àmx½Ï~ }_o§\93\b\9a\ 4ýAhSA\1fP\1c\86ÖÊ\ 3\ej\8b<ÓJ#U¼ß\16ÆÊ\94\88Ä\803("(¯\91\93û\91\9e®uåü\80\92J\816°â6\9c@"\8d\ 1þßï\1fnîâ÷\ f\9fÿ\0\éYµðoÒSX§\12l      zgË\1dë±\8dÖÂa¦\1c§XÁäÎÂ3\7f\7fÄ\18\8bU,/ÿ\f¼:ÊkçÉù¶ÂN\95²\ 2$TÃ\ 6½\87Ò\17
-¨@^§u[éµ.¤\81 \9c\aæÆÕ ¨¿°\1e5\ 6:\b·=þN0\1d\13Ì\ 2anç¼Ê»\1eÀ4 E¸i\ 30軸£=cö\ 2×\81\9f¶(A±\ 5\ 1l`Çå+\91Ø"\v}SAD(Þ\80\ew¾rYÒ\e¦hx=~éú¨íÁN{\8dA7\16ú'],H\9f¡±\19¹R%:ÓM\9f\1ezìÿÀÏ\808<{`\81sS\1c&\1aÞ¶ªe\96\8eJÙò\18¬Ð8\995\ 6Cæ¼µê8¼À4Ú³|Koèb\8f\0þú­¸HÕ³F£\84§\ 1\16çôá\9en%zñ#\94\7fv\8bïn/\1f\97\ f\1f\97±8<9
\eæ$Ï­\8d|VÐ\97ñ\9a\81\0Áɲ\ 4G\819(\9b\99ù®êYÐ\9e-Ì®eu\17\88       BÙKåEqLÛ^\ 6\83¶*,\13é¡«Ò³~ÿk×`\1e\88Ñ w\99ø\1aªÞ\1dÚ3PL©U\rW\88¶×å\14¾ò<axE¼8çÎå~\90ÏR\9b¦q?5\82q
-ª<\9e£-Ò\ 1i߸ä©ÂJ\83\9bÀ\14ï\0§ó\12Ðx\15¤)\8f\9c£Ô»!Ç4ã\18\14e<°¶\e\8déºïø(sÛ)y\8f³v8.Ú¾\88fØà\8b     MægÍÎ|¼üåê\12ûÎò\f¦÷6©sìPé±lÙ;vkóÁé|\8cÝÝ\8eÔÿcwÓÞ¶\9eÎ\16bv6ÆO\ 5\8e\10E\1cy\19÷~íý\vKð·tendstream
-endobj
-1246 0 obj<</Type/Page/Parent 1011 0 R/Contents 1247 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 770 0 R>>endobj
-1247 0 obj<</Filter/FlateDecode/Length 1498      >>stream
-x\ 1\8dW]oÛ6\14}ϯ¸èKS \96#Ùq\9c<më\96¶@Ñn\8dÛ`@_h\8a²XK¢FRÖüïw.)Ù\8e\e`EaÇ\12ÉË{Ï9÷£ÿ\¤t\85\7f)Ýd4[\90¬/®\92+¼á¯\94¿>¿½È\96Y2£ëÙ2\99SMól\99Ü\fO\15=ð~ºÆ»\ 5Í\97\9dác\15\15aa>¿J²ó\85Å,¹¥\19Ì-a.KSì\88O£¹Yv\v#gæfé-îȲ\e\17\v\1c\8bO|ì·ÕÅôþ\96²+Z\15\88gq³¤U\1eÂÀ\eyù¦\14­W\96ÒeBï>=®>ѯR*çèAÔkAÎtV*\92&W¯Vß/®h\92Íqþr§\ 5½ùúÀïØzz\13­Ofs\\8eu\98K\13zßxkòNzm\9a¸uNi:l\rþbk¼H;ÊÕNU¦U9é\86DCøÙ\90jvÚ\9a¦V\8dOè÷a\87uÔ9Å\ eзË7¦\91\9dµØ@_\95u¸J7\ezØ;¯êo¯È\9bÁñt\16]{!K%·ºy\81³¢r\86\8déq¡£\17ÒÔµö/pªQýiìI\84㥣\9d°Út.ܽ¶¢\811G\12Þ®\15\89\80\1cü\a:g\97\8aÆ4ûz<Ø9vÑ\97
-\91:o#@\f\80\17º\8añû\12\88ÈHN2\18\ 3³\ 1ü\15¯åFv\8c
-á· ÚäºÐ|u\84\80Lñ£ýÂtMNÂ\asOÅl7tI¥÷íÝtê\98ùÄØMü5\95;\97\94¾®\9e\1e\v\89\80cçô\a\ fA\7f\96\ 4\8c\ 65yC\a³lgzÿ\8c\12V\0¤\16²Ô\8d:î&Û5\1caÛ­+-«ý\80²^WQ\0VµÆioì\9e
-c\87\1eÂ?\91/#â \1f+b 4\19\ 5Ñ
\15\eå^\83\rYu9s\13\9c}MÖí\e     -æô]{¤ÉºÛ$\ 47\91Æ\ 2\1fß\e8\fµöbïø\82¨\80\91\Ö§S\16w\92\8fv\ 3\91ãÍ¥q>\90\e@\ 4r\9c¡\93Y\1ai\ e "\8b\ 6\b\87\94ëÕú\19\09çþ6]Pbtâ\87øùü\1eéL\85Øá\8fö\8a\1e\1f\1fimM\ f'9,VRUá\91÷1\84'\96¤i<ÔÆQ\9e\ 5¡\9b\ïtÞ\89\8a
-¨×qö²´O\88a\0CªÁfeÌ\16\1a\1c¶ì4',áêÀ o\8cI\88}\9b\0é¹ù1\19F\f\ fQs*\v·\8d* ¤CA\15Ì2\19kå{\85b"\9a}àlH\12Ø?wu´>¦Ú\17\94\19\ eæËç\ ft\17\ 2ÿ\99¼\91\e=Yë\863g ëØ;\9eäͳ\94#sN(\87\8dÿã;D\1e«6ûz*z&]Pcl\rz`\8ad¥C)\rloô\ e|1Ùu'K\14\11h\9a\89¶¦"òå%\14·3ÆsC½öåó,\9fê'TZÓyêK\83t\1d\1cóVáV¦z«TËVjêð×P. JvùèðÙÕ,\ e\9ct\83\¡X\8e¸µªPh\ 19ÕÊ\97&?¦"é"\ 4ÁÙ*\ e\1d\ 6e\ 2·7ÆÓ÷Îy,HáX¿c.\f\97\8e"XÁ3´\88Ê\88<\WÁM\1cc8O°~M­Ñ¨ÇÀÌ\8e\96F¡ÿ\8c|ú¾Oä\1eüÈ\ 4QN\83\ f\a±\8dª¹L\82ë¼k\võ\9e¡ÃX¼|gzÆr£\82\87/\91\ 4Í6Öb U\0{8]ø\9e\11A;\0É|êíÇ/ôöÏ\ fÜ\12\91ÀC÷ÿö*¡\8f\ 6\94ø2&,\83\88ÏóetcE[j    \18¹îE\9d90¯¡¬Ö\1a\94\b¦à¸\vX)[\bL\17ð\96}p\ 6ìé\1aÚ¨á\98@\13\b\86\ e\8c\7f@ ç\154\1eu83^\18\98\ e\19±C3\15Ü&
-kê±¹=Eù<ÝÁô\86ëùPøBö\1c:7óÍc\aûZ\18.\94¡SxÕB\8e÷è=\áIý+ê\16\97êØ\99\9dC\97\0AΦ^@"çÓ\81\9e5\eP8\9f»FÛ\8a\fÖí©ä\8e5V\ 3\81¡Ç\90\v£O\94¶ëÖ(\81¾\v$rr#Kd\1c\0~h\80Ô\88:Ly\18w'£ößc@AS\0s8ÈãÆè+Ð@\9dÂ
-Ge\15öì15ñðÂÝzÜÅ\11\1dË\ e¡(
\ f¨O0\bb\ 2Ũ\98\10Ë\18\8f\87\8eü¹\8buyÈv^\9eÞ_\9f\8c\8eàÄ\96'9ݵ±ËÞáù\97Ã\98qÇå×\1a$9Z\89\ e©r\9c:&<É\ eV\1e\ 6Ð\85æ\11\8ba\98\15ÎõÆ\82»}«\82\8bÓûtðá\12¦£Wã\18sy\bê:Ãø\8e¸PÆǸ\16\v~ñLT\a\10fqóô~9Ü0É®1   \a¤ÇÉ\9f\1fÒCõDÚðÍó\ 5þïq\9d\r\19¿ûcuñ×Å\7fIrÿêendstream
-endobj
-1248 0 obj<</Type/Page/Parent 1011 0 R/Contents 1249 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
-1249 0 obj<</Filter/FlateDecode/Length 611       >>stream
-x\ 1\8dTËn£@\10¼û+J{r\ e\10À\18{}Zç±Êe\95¬\826\97HÑx\18\f\11L;3\83­üýö\0N\9cd\ f\12\8f\9eê®ê*^&1"þÅX$\98e\90í$
-#Ì£4Ì\90.\17|\9dðß(\94\93\8b|rþs\8e8F^úÚl¹@^\80ë£\b¹\9cʽEP`µ³Êì\95Yñý\ f\8d\bÉlWç|k\88\1c\7fz\96?3^:â\ 5\11\82$\vSF\9cæUmq¨\9b\ 6Ò(á\14\ 4\8aÚ(éȼB\8a¦QÅ\0ÁXÚ\89Z×z\vW)4\lÝøÎRg¤â\92BáqZ\87*ìkn®×W¾5÷\8bgaâû9±Ý2¤\9f\7fc\84\96ÕãY\88~\bÙ\19£´k¸-ñ\95Ý\91.,\1cõH3\16¦P{ÕЮå"8£Tè¡O¹\þ¹\1fA\95\ 5ñ\90\ 6~\ 2¦¡±Q \8d\9f\9f\9bo^ÑÙ#\8fA\9ad\94f\1a\98\8fZM!tÁ­Ë\81¹\0\13\80\16-3\£©Y\ 1*Ǧ_\99ö\85öØ¿¤\8e¡H÷\84¾]½³ù\86\9dØò|eÿ¦_\18\ ej\ 3[»¾\8d¤¶åcF½t^r^\98£OÍ\ 6nýùq1    ëmT£\84\1dörT\99º\86\15P(H«\8fJ\94Ô4tðºø\86\17øÝ\86'®ù\7fû\ 5\ 6÷ë_\17ë§ä)ù\97\17O¬ñP)Í¢\18¼R\87\83ð[&´Ê°4õ ÚH­·\99¬\84Þò\9e;æçýøez\94\86Z¶¶«\86Ó\9f\14\ed~óújXû1r\9f¸v»Âg\83\13\17Ü\r\85oYâ\88ξs\80ÙÛi\88áårtS\9c\973ÄÙÜ¿ï\85À\9d¡gÎ\17®HvÞËÂÕ¤ý¹ Îø\eÀåÁ"á\90\17ÓËJì\1cë\11/CÜÜ>ä·XK©¬Å½O:NC·¯\ 5Øþ\1e\96a6OøCÃ\10q<óÏ®óÉïÉ_{;_Þendstream
-endobj
-1250 0 obj<</Type/Page/Parent 1011 0 R/Contents 1251 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 773 0 R>>endobj
-1251 0 obj<</Filter/FlateDecode/Length 1603      >>stream
-x\ 1}WaoÛ6\10ý\9e_q\b\ 5RÙ²\1d'-Plëºv\ 3öak\r\f\ 5ú\85\96N\16\eJÔH*\8eÿýÞ\91\92ã¨é\90X¶¥ãñîÝ»wô¿\179-ð\97ÓÍ\92V\e*\9a\8bE¶ õâ&[Óúö\ 6\9f\97x9¦J\1eÀT.¹\>~¸Èó\15\1e®òëlC\rå×7ÙjøfèSt´Ül²åÔÑÛíÅüý+Z.h[aïÍÍ-mËè\19w\8aÙ¯µê\ 2;Ê_eô\91\82n÷ô¶ßû\17Û¯qe~\93V¾\­á}[Î`\9agôG\e\9c-û"hÛ&Ó5åù`º¼A\900ÝÖLÜ(mH\95¥c全\8e\1eIÊ^\9e´'¯\9a\9dú9^3ëöâlA/\97\e\80\ 2\17\7f\19V\9e)¨;\à.è\ 6\17\v\aªÄ\r¬¯´aÚ1<3\1dmO¾ß5:\90:Û'£_\8c·WÔ%g\9e\99tE0ª\95§¢Ví\9e\b\aæ\98\fö\aÚ1[Çq\8d¿"\98\1e\98\1au\84eZ$PIL\8f    É\9d\86Å£ö\r©@ÞJ¸\889{>/\85¸¨´â¼é\8bZÞ%\87Bµòî<\9bJ²­Ùt\14\9c*î`|hÇ]3ú$à   \8a\rxI"G$_r©\v\15¸\1cö\1dóÙ;Ûwd+êØ\ 2\ e\96î­éÛÀ \ 1²Ñ¸"Þ+òwÚ\18Oª-\89\e|Fÿ0\80/Xß\83£ÊQ#\98§úîl\1f\ 4Ñ\80Ü\ 5'd0Ù¹³Þë\9dAp­?°Ã\ 66æZ+xS)ýZïk\84!\0\16,QÂY2\8fq(\14ûAJ\17ëÌ\88¬G\80tYò=\eÛ±\9blY9\r#s¼<+\91D\18È0È\87ÅÑ_@2>L+ôÎRkÁ#ï{©¡¬\1avF&\92h*<ª#\1f\vÛtYçl°\855>óÍ\8eZ>ø\ 1î\88lDJ\18bt\\ f\87\0ê\0\94'aGnë\80&\e2í}ÇEÄ6DZ\10\19n¤ð1Æ\98ß\ e\15P\b¤­ô¾wJ:ód\88\10[)\ f\16\80çÒñ\88Û\v\82R3;      @\12\92â\8e\16À#Ô\áõe&8\ 28l  ú|yA×\vH\95\15\v@ËÎ\13\ 2Hh\9f\12\1eÚG!ú\13¯QÌ)ö\9fÑ\ 3b\1aÛÃhé}KÆÚ;ø³ý¾\8e\90\v\13Ûð\14\8a\1aìD»\1ej-ý\84@\81È=·`B\10ò\15\ 5t\b<\ 4½b\1fMROi\1fxG\9dÚ3Ø\ 5\91\b¡{=\9f\9f\14*}\9aËB\91Ös\81\8c\92\ 5\81\fô\81[vÊ\90\bïüý3\ 2ù6ÉV\92¬(½ç²\85>`t¼\bÁPÖ¨\9f\1e\8c9\12;g\1dZòOAE'¹\0Dû¨\87Ihíî^[\90¼AÆ\92Ì$ÕX\9aÀÆÄv\8aß°Õ\8fèÆFû\91\13Ñ0(-\88+ZàzÀÆ>tÊ5R\15ùü4DÑcÑùÂ:\94\b\1ax\842=LKü»´=öK\ ekÈR*k\fòéôs{\9aQ©Õ¾µ^§,N\ 6qF\8aÁO´\95i\80ÿ{vGÒ\8d\f\18Õ~ÓÖCOé¶0}ɨ²\vQhNØ¡#C\9d2z\14v!\+Âï{0
-i«\16\8d\a}\95þ\89\vøA\15\83\b\85ä\ 5\8dã â¥\15\14\13ï¨0BI!\98´[ÒÜ(¶ç\8eä\11\ 6go Wâ0¢ø=Ö­2zÇ\12³\11=\1c&ø3¬\ 3\ 4âW,e\0ªö\98Ê\8b´0\8ab6©\rv\fq\96\90\81V*¦t\90H.Ú\e0C\ 3bs:®z/vð\0\19\86fG\16B\12\ 4¶   \b²õ#OEþ¢JA\12âd\8dÕ\83|T½\91tà­<\ 3m\14>\15]Ä<¥zÃì¦U¤h¾ _Û\ 3\96=³õèaT¢\ e7:§QJ\9c\12h\18@Éñ^\94$θ\921[Í\15 \13½9\8a¼!W\9b\86V©ý\1dùN\15ß\fù­hlªoùX\18Y-\81Íß_\ fG¦ÙY6oÒ£±l³So§û8\10ÆSÖ\f\13&\93&\9d\98gôù\;+\9d$>\ 1\19\ 3\92\12Ä4ÅÁÙ\81g@@\1aøk\8fÖ¶­\8cx¨*Þ\85\9e\1d\9c o\84ýð\92´\86a2Úe\84ÄÁ¤x<ÃίÇÐ_\8dçÃu:Ü\9db 7\94/Æ@\16\99\9cQg#GðlÞ{77¶PfÐ^£wø¾Ï~h&\8bƶþÎ\9a\11´aáSM\8eGV!,\15\98ÀH.±\98Æè\aà\9f\ræäx\80*­y,â!\8eÍËáé¥È\94ôA«p´\0\7fñyLd8w\ eê\10\85D{\f< *\14\92\937Ì¡\1añÜÛÉÌo\8f\ fÑm\1a\94)\1d#\ fп«¨ÅP§\ 6ǽ\14Ö3´û\86u©=&A%\16¡¼¢´q6+cì!m\86\bù\ 1g0\1c\1e!kQEJ]U\10-|õ\ôN\a\ 4\81\eÌg´]<+\rbE\1c
-QÆ\91s\93\9d\aà\ 6ù»}ü©±\92\1fO`Ëÿÿ\90Yon³Íõ\12?\80`\9açkñþÛöâï\8bÿ\0\8a\80YVendstream
-endobj
-1252 0 obj<</Type/Page/Parent 1011 0 R/Contents 1253 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1253 0 obj<</Filter/FlateDecode/Length 1654      >>stream
-x\ 1\95WÁn\e7\10½û+¦ºT\ 6bY²eÙ)Ð\83\83Ø\80\81&M\1dµ@\0_¸»Ü\15#.©\92\Ëúû¾\19îZ\86l\1f\8a @Â%93oÞ{Cý{4£)þÌèò\8cÎ\17T¶GÓÉ\94\16³éä\8cæW\97ø÷\19þ\ 6Mµ|8»¸\9c\½õav±x}âÓòèôvN³\19-k\ 4Y\]Ò²"\ 4\98NiY\8e\97+MÇË\9fØ\83\ 4dÏ8¶Å¤ô®ÎËÃÑ1i\97Â./^\f{Éú\86¬~Ô\96~?Üo"Å\9dón×ú.ÒÖ¤\15%D{ó\9aJ\17]óÎ=i¥\12­T¤BkG]Ô\15\19GÞV:pÈ)\9dÌÎQ÷²\1a\10\8dw\91|MßU[(R\ e\9bù¤q\r\10LÊ8\1c¯} B\95ë­
-U¤Ò·\e\95La¬I;>:\0@µ±:Nú g\8bÉ\9c\83\G.ã\7fàð¨l§9\vãÊ \15ç¿ó\1d\0±\16)\95>T¤(\9aÆ\99Ú\94Ê%»\evrÒ\19\14d%\105¼d\1c
-h\91²wCr\ 3\ 2·¨¬õ1½Øí7:ÈÞ(a[µ#ç\139\8d<\10W§Äw®L³Ò\ 1\95)Gç\13úªU@\1e
-)¢1À\bË\85¦\14\80\1a\9f\ e°\1f.B¦³é\a\9cJ|`\13ôF\85\1erEÿÜÜÿ «B£éÑÛ®Õ\f7S¨RII-§·\1fi\ 6\8a2WOÎç\19òÙÇÉ|Bw.éà\94%\1d\82\ f1w` 'v\9f]N\16Ü »Z
-m4\92¤ÑÝ×åÍý×ë?èæþþÏû\11µ:F\85ø \10º\10$ºô\99LÂG\ 5ö\bá2\7f\1a \85Ò;§\9f6ºL(\84\e¥ìAñÛ\15\98B¡s\ eX"ÓÄíÞ\ 4\82Q\ 4ÊM\vÞK\e¨V\9då[\ 1£\95^\95:01±3ÇW\8c9'\98sx\18w\ e<\94ö\1dÄ]©G¸\ 2ß·\83BB\ 5B\ 3Ò\0ÝŤ[\8a¾N¼ôpÜ\9f\e8\f\88X\8a\ 3\16¥B'êàq¢-*þä\18\raès\15è¦*E+Î\0\87\82ë\1a.@ýå
-\9cC\19\81&Çt\90ì÷/\9f\9e\ f\80÷Ú<æk8æ\84\96+QHí\19\8d\14 ç\1dë½î,£!äc®V~\8bÿ!\7fÎÍJ\9d´±¬¬\83\88\10\9cí*ô\1aýèÛÍÈ\82\93>¤A:\ 3&? É¸ò\9då¾DßWC+¿¥äùLðUWB\ 3ûÀ\1fÈÔ´ñ1\1a¤1¡o\92\ 3µjÍ»P\ 6«Ý;á@ÆFWoEeIJÈÚ\80\14Â>\ 5WbÃgZ©Í\ 6j\ 4\ 1\84æ\ f\11Å®¨\f L\1e@AI\9cÚ~a\vAk\91ÂZë\8d°ý\0\9f(\1eÉúËN\97\9b A\91=ß&üì[\90¼·b\9d¯\e\ 1TÑAÏÍb°ÙÞ*/\18üÆ!Oo\87\81Á2í}´©\8aL7.(ïz)æ~\97ª*n90\b~\13\8cJèºJ+dçóiÖ\91`\85\96ñ\95ìT=\8eº\85\14³\19TÞýÊC\ 4ráM(\8dù´£QU<\8d\98\1d`Ãó\8a\90òpjà\8e\\1e/@\ 5\1d       Ä#Î¥\ 1\9bYè        \ 6)L\15kË-à#\ 3U}Yv\ 1Íd;\13r\1e\84\15Þ\fdm!§CÂô\ 5­\1d\8b@90'FݲÍXå\9a\8e­\rñ\1cã\ f²T&âûh Gð\1dÜ^ÓûyÑÃ\18\9c6\89§Õ+\8f·¦\b
\r×ä@\12\82SÈàì?bJ\94\98 ÌÜôp,\8eÇ\98\ 3­­\ fkB.¤\9f\ 3ïuB `!¯\8d\17óÝz¿\166$iC\ 4\92¾sB\90ÒWPàÍ#*Gþ\99\80ÜrÆi\ f\91$\fWèäL\8f5[NnôÞ\1c\ eºÒ\8f¿,\ 4éÈ{sêbB×    $\0w\1a®T\rS\81\19PÂÅ_3½\1f[\7fóTO\9d\ 3Å\ 1Hô°äÎ\99'\1d¹%\ e¬\ fÉ\94\1d\86gþÆ\ eê\12Yãº'Zc0j\e\ 12¼AX
-ÿêÚ\rÂï}\ 4¸0\13\93\8ak~N\1d\96\88Éß U\9d©\100\eºL\83Ê#\ 5\87c\11¹ÈaxÏ¡M\11i3Áú¡ÃØ\97b£}³\95àÁ`pø~H\1eDïÁ\81Â\18·Ñ³7|»û<êÉÁ÷òLÇÒó¬\82ÜR\17³~E\9d£RÔ\88ç+x\8eW\17«´O£T\0æ ,'$\0     X9¸¬Y\ 3påÞ½úûáPª\84YÇ»ö\83\1c-³BºÌcXà³Îs¿ß~Ô,03ø6ý>+\96\88Sh<è\ 6\94÷\1c\95A       1ËÀèG]DÇkóôËà{Q\ 3\0¼¾á\99\1c¦\1f\93\fUÎkðå1æF]ÓI\97\97\a#\1e³ßã¥Ùkê\9d÷67_\8eÇnÃ\93\15Þ\91>\90\aDak`\99ïF+ç\aá&ô\85\87'\84-\83+ä)ÂC\rÉ©\ 6\8f\ 1NcÐÊó\80_û½·ñM/¬"âm\87aÍý· \rÄ$N°÷\e\14Õÿ\\90Æ!Ç<\9bOo¯ú\1f\ 5~z]\9dÓb>ËÏÐï×_>]Ó·à\7fbäÒg_â\ 1Û?ê8úÉpàäò\f¿­ªñ»ÏÖùâj²¸8Ã\13\97wÍ.øôÍò诣ÿ\0\84îendstream
-endobj
-1254 0 obj<</Count 22/First 1255 0 R/Last 1460 0 R>>endobj
-1255 0 obj<</Parent 1254 0 R/Title(Table of Contents)/Dest[1014 0 R/XYZ 0 756 0]/Next 1256 0 R>>endobj
-1256 0 obj<</Parent 1254 0 R/Count -1/First 1257 0 R/Last 1257 0 R/Title(SAMBA Project Documentation)/Dest[1024 0 R/XYZ 0 786 0]/Prev 1255 0 R/Next 1258 0 R>>endobj
-1257 0 obj<</Parent 1256 0 R/Title(SAMBA Team)/Dest[1024 0 R/XYZ 0 762 0]>>endobj
-1258 0 obj<</Parent 1254 0 R/Title(Abstract)/Dest[1026 0 R/XYZ 0 786 0]/Prev 1256 0 R/Next 1259 0 R>>endobj
-1259 0 obj<</Parent 1254 0 R/Count -10/First 1260 0 R/Last 1271 0 R/Title(Chapter 1. How to Install and Test SAMBA)/Dest[1036 0 R/XYZ 0 786 0]/Prev 1258 0 R/Next 1278 0 R>>endobj
-1260 0 obj<</Parent 1259 0 R/Title(1.1. Step 0: Read the man pages)/Dest[1036 0 R/XYZ 0 762 0]/Next 1261 0 R>>endobj
-1261 0 obj<</Parent 1259 0 R/Title(1.2. Step 1: Building the Binaries)/Dest[1036 0 R/XYZ 0 621 0]/Prev 1260 0 R/Next 1262 0 R>>endobj
-1262 0 obj<</Parent 1259 0 R/Title(1.3. Step 2: The all important step)/Dest[1036 0 R/XYZ 0 216 0]/Prev 1261 0 R/Next 1263 0 R>>endobj
-1263 0 obj<</Parent 1259 0 R/Title(1.4. Step 3: Create the smb configuration file.)/Dest[1038 0 R/XYZ 0 786 0]/Prev 1262 0 R/Next 1264 0 R>>endobj
-1264 0 obj<</Parent 1259 0 R/Title(1.5. Step 4: Test your config file with testparm)/Dest[1038 0 R/XYZ 0 437 0]/Prev 1263 0 R/Next 1265 0 R>>endobj
-1265 0 obj<</Parent 1259 0 R/Count -2/First 1266 0 R/Last 1267 0 R/Title(1.6. Step 5: Starting the smbd and nmbd)/Dest[1038 0 R/XYZ 0 336 0]/Prev 1264 0 R/Next 1268 0 R>>endobj
-1266 0 obj<</Parent 1265 0 R/Title(1.6.1. Step 5a: Starting from inetd.conf)/Dest[1038 0 R/XYZ 0 181 0]/Next 1267 0 R>>endobj
-1267 0 obj<</Parent 1265 0 R/Title(1.6.2. Step 5b. Alternative: starting it as a daemon)/Dest[1040 0 R/XYZ 0 356 0]/Prev 1266 0 R>>endobj
-1268 0 obj<</Parent 1259 0 R/Title(1.7. Step 6: Try listing the shares available on your server)/Dest[1042 0 R/XYZ 0 771 0]/Prev 1265 0 R/Next 1269 0 R>>endobj
-1269 0 obj<</Parent 1259 0 R/Title(1.8. Step 7: Try connecting with the unix client)/Dest[1042 0 R/XYZ 0 603 0]/Prev 1268 0 R/Next 1270 0 R>>endobj
-1270 0 obj<</Parent 1259 0 R/Title(1.9. Step 8: Try connecting from a DOS, WfWg, Win9x, WinNT, Win2k, OS/2, etc... client)/Dest[1042 0 R/XYZ 0 436 0]/Prev 1269 0 R/Next 1271 0 R>>endobj
-1271 0 obj<</Parent 1259 0 R/Count -6/First 1272 0 R/Last 1277 0 R/Title(1.10. What If Things Don't Work?)/Dest[1042 0 R/XYZ 0 221 0]/Prev 1270 0 R>>endobj
-1272 0 obj<</Parent 1271 0 R/Title(1.10.1. Diagnosing Problems)/Dest[1044 0 R/XYZ 0 705 0]/Next 1273 0 R>>endobj
-1273 0 obj<</Parent 1271 0 R/Title(1.10.2. Scope IDs)/Dest[1044 0 R/XYZ 0 647 0]/Prev 1272 0 R/Next 1274 0 R>>endobj
-1274 0 obj<</Parent 1271 0 R/Title(1.10.3. Choosing the Protocol Level)/Dest[1044 0 R/XYZ 0 562 0]/Prev 1273 0 R/Next 1275 0 R>>endobj
-1275 0 obj<</Parent 1271 0 R/Title(1.10.4. Printing from UNIX to a Client PC)/Dest[1044 0 R/XYZ 0 253 0]/Prev 1274 0 R/Next 1276 0 R>>endobj
-1276 0 obj<</Parent 1271 0 R/Title(1.10.5. Locking)/Dest[1046 0 R/XYZ 0 786 0]/Prev 1275 0 R/Next 1277 0 R>>endobj
-1277 0 obj<</Parent 1271 0 R/Title(1.10.6. Mapping Usernames)/Dest[1046 0 R/XYZ 0 332 0]/Prev 1276 0 R>>endobj
-1278 0 obj<</Parent 1254 0 R/Count -4/First 1279 0 R/Last 1293 0 R/Title(Chapter 2. Diagnosing your samba server)/Dest[1048 0 R/XYZ 0 786 0]/Prev 1259 0 R/Next 1294 0 R>>endobj
-1279 0 obj<</Parent 1278 0 R/Title(2.1. Introduction)/Dest[1048 0 R/XYZ 0 762 0]/Next 1280 0 R>>endobj
-1280 0 obj<</Parent 1278 0 R/Title(2.2. Assumptions)/Dest[1048 0 R/XYZ 0 581 0]/Prev 1279 0 R/Next 1281 0 R>>endobj
-1281 0 obj<</Parent 1278 0 R/Count -11/First 1282 0 R/Last 1292 0 R/Title(2.3. Tests)/Dest[1048 0 R/XYZ 0 225 0]/Prev 1280 0 R/Next 1293 0 R>>endobj
-1282 0 obj<</Parent 1281 0 R/Title(2.3.1. Test 1)/Dest[1048 0 R/XYZ 0 205 0]/Next 1283 0 R>>endobj
-1283 0 obj<</Parent 1281 0 R/Title(2.3.2. Test 2)/Dest[1050 0 R/XYZ 0 758 0]/Prev 1282 0 R/Next 1284 0 R>>endobj
-1284 0 obj<</Parent 1281 0 R/Title(2.3.3. Test 3)/Dest[1050 0 R/XYZ 0 554 0]/Prev 1283 0 R/Next 1285 0 R>>endobj
-1285 0 obj<</Parent 1281 0 R/Title(2.3.4. Test 4)/Dest[1052 0 R/XYZ 0 639 0]/Prev 1284 0 R/Next 1286 0 R>>endobj
-1286 0 obj<</Parent 1281 0 R/Title(2.3.5. Test 5)/Dest[1052 0 R/XYZ 0 488 0]/Prev 1285 0 R/Next 1287 0 R>>endobj
-1287 0 obj<</Parent 1281 0 R/Title(2.3.6. Test 6)/Dest[1052 0 R/XYZ 0 364 0]/Prev 1286 0 R/Next 1288 0 R>>endobj
-1288 0 obj<</Parent 1281 0 R/Title(2.3.7. Test 7)/Dest[1054 0 R/XYZ 0 771 0]/Prev 1287 0 R/Next 1289 0 R>>endobj
-1289 0 obj<</Parent 1281 0 R/Title(2.3.8. Test 8)/Dest[1054 0 R/XYZ 0 409 0]/Prev 1288 0 R/Next 1290 0 R>>endobj
-1290 0 obj<</Parent 1281 0 R/Title(2.3.9. Test 9)/Dest[1056 0 R/XYZ 0 731 0]/Prev 1289 0 R/Next 1291 0 R>>endobj
-1291 0 obj<</Parent 1281 0 R/Title(2.3.10. Test 10)/Dest[1056 0 R/XYZ 0 581 0]/Prev 1290 0 R/Next 1292 0 R>>endobj
-1292 0 obj<</Parent 1281 0 R/Title(2.3.11. Test 11)/Dest[1056 0 R/XYZ 0 443 0]/Prev 1291 0 R>>endobj
-1293 0 obj<</Parent 1278 0 R/Title(2.4. Still having troubles?)/Dest[1056 0 R/XYZ 0 305 0]/Prev 1281 0 R>>endobj
-1294 0 obj<</Parent 1254 0 R/Count -6/First 1295 0 R/Last 1312 0 R/Title(Chapter 3. Integrating MS Windows networks with Samba)/Dest[1058 0 R/XYZ 0 786 0]/Prev 1278 0 R/Next 1313 0 R>>endobj
-1295 0 obj<</Parent 1294 0 R/Title(3.1. Agenda)/Dest[1058 0 R/XYZ 0 738 0]/Next 1296 0 R>>endobj
-1296 0 obj<</Parent 1294 0 R/Count -4/First 1297 0 R/Last 1300 0 R/Title(3.2. Name Resolution in a pure Unix/Linux world)/Dest[1058 0 R/XYZ 0 491 0]/Prev 1295 0 R/Next 1301 0 R>>endobj
-1297 0 obj<</Parent 1296 0 R/Title(3.2.1. /etc/hosts)/Dest[1058 0 R/XYZ 0 363 0]/Next 1298 0 R>>endobj
-1298 0 obj<</Parent 1296 0 R/Title(3.2.2. /etc/resolv.conf)/Dest[1060 0 R/XYZ 0 494 0]/Prev 1297 0 R/Next 1299 0 R>>endobj
-1299 0 obj<</Parent 1296 0 R/Title(3.2.3. /etc/host.conf)/Dest[1060 0 R/XYZ 0 356 0]/Prev 1298 0 R/Next 1300 0 R>>endobj
-1300 0 obj<</Parent 1296 0 R/Title(3.2.4. /etc/nsswitch.conf)/Dest[1060 0 R/XYZ 0 210 0]/Prev 1299 0 R>>endobj
-1301 0 obj<</Parent 1294 0 R/Count -5/First 1302 0 R/Last 1306 0 R/Title(3.3. Name resolution as used within MS Windows networking)/Dest[1062 0 R/XYZ 0 392 0]/Prev 1296 0 R/Next 1307 0 R>>endobj
-1302 0 obj<</Parent 1301 0 R/Title(3.3.1. The NetBIOS Name Cache)/Dest[1064 0 R/XYZ 0 319 0]/Next 1303 0 R>>endobj
-1303 0 obj<</Parent 1301 0 R/Title(3.3.2. The LMHOSTS file)/Dest[1066 0 R/XYZ 0 786 0]/Prev 1302 0 R/Next 1304 0 R>>endobj
-1304 0 obj<</Parent 1301 0 R/Title(3.3.3. HOSTS file)/Dest[1068 0 R/XYZ 0 512 0]/Prev 1303 0 R/Next 1305 0 R>>endobj
-1305 0 obj<</Parent 1301 0 R/Title(3.3.4. DNS Lookup)/Dest[1068 0 R/XYZ 0 414 0]/Prev 1304 0 R/Next 1306 0 R>>endobj
-1306 0 obj<</Parent 1301 0 R/Title(3.3.5. WINS Lookup)/Dest[1068 0 R/XYZ 0 276 0]/Prev 1305 0 R>>endobj
-1307 0 obj<</Parent 1294 0 R/Title(3.4. How browsing functions and how to deploy stable and dependable browsing using Samba)/Dest[1070 0 R/XYZ 0 723 0]/Prev 1301 0 R/Next 1308 0 R>>endobj
-1308 0 obj<</Parent 1294 0 R/Count -3/First 1309 0 R/Last 1311 0 R/Title(3.5. MS Windows security options and how to configure Samba for seemless integration)/Dest[1070 0 R/XYZ 0 179 0]/Prev 1307 0 R/Next 1312 0 R>>endobj
-1309 0 obj<</Parent 1308 0 R/Title(3.5.1. Use MS Windows NT as an authentication server)/Dest[1074 0 R/XYZ 0 786 0]/Next 1310 0 R>>endobj
-1310 0 obj<</Parent 1308 0 R/Title(3.5.2. Make Samba a member of an MS Windows NT security domain)/Dest[1074 0 R/XYZ 0 537 0]/Prev 1309 0 R/Next 1311 0 R>>endobj
-1311 0 obj<</Parent 1308 0 R/Title(3.5.3. Configure Samba as an authentication server)/Dest[1074 0 R/XYZ 0 185 0]/Prev 1310 0 R>>endobj
-1312 0 obj<</Parent 1294 0 R/Title(3.6. Conclusions)/Dest[1076 0 R/XYZ 0 316 0]/Prev 1308 0 R>>endobj
-1313 0 obj<</Parent 1254 0 R/Count -3/First 1314 0 R/Last 1316 0 R/Title(Chapter 4. Configuring PAM for distributed but centrally managed authentication)/Dest[1078 0 R/XYZ 0 786 0]/Prev 1294 0 R/Next 1317 0 R>>endobj
-1314 0 obj<</Parent 1313 0 R/Title(4.1. Samba and PAM)/Dest[1078 0 R/XYZ 0 738 0]/Next 1315 0 R>>endobj
-1315 0 obj<</Parent 1313 0 R/Title(4.2. Distributed Authentication)/Dest[1080 0 R/XYZ 0 201 0]/Prev 1314 0 R/Next 1316 0 R>>endobj
-1316 0 obj<</Parent 1313 0 R/Title(4.3. PAM Configuration in smb.conf)/Dest[1082 0 R/XYZ 0 758 0]/Prev 1315 0 R>>endobj
-1317 0 obj<</Parent 1254 0 R/Count -1/First 1318 0 R/Last 1318 0 R/Title(Chapter 5. Hosting a Microsoft Distributed File System tree on Samba)/Dest[1084 0 R/XYZ 0 786 0]/Prev 1313 0 R/Next 1320 0 R>>endobj
-1318 0 obj<</Parent 1317 0 R/Count -1/First 1319 0 R/Last 1319 0 R/Title(5.1. Instructions)/Dest[1084 0 R/XYZ 0 738 0]>>endobj
-1319 0 obj<</Parent 1318 0 R/Title(5.1.1. Notes)/Dest[1086 0 R/XYZ 0 705 0]>>endobj
-1320 0 obj<</Parent 1254 0 R/Count -7/First 1321 0 R/Last 1329 0 R/Title(Chapter 6. UNIX Permission Bits and Windows NT Access Control Lists)/Dest[1088 0 R/XYZ 0 786 0]/Prev 1317 0 R/Next 1330 0 R>>endobj
-1321 0 obj<</Parent 1320 0 R/Title(6.1. Viewing and changing UNIX permissions using the NT security dialogs)/Dest[1088 0 R/XYZ 0 738 0]/Next 1322 0 R>>endobj
-1322 0 obj<</Parent 1320 0 R/Title(6.2. How to view file security on a Samba share)/Dest[1088 0 R/XYZ 0 550 0]/Prev 1321 0 R/Next 1323 0 R>>endobj
-1323 0 obj<</Parent 1320 0 R/Title(6.3. Viewing file ownership)/Dest[1088 0 R/XYZ 0 383 0]/Prev 1322 0 R/Next 1324 0 R>>endobj
-1324 0 obj<</Parent 1320 0 R/Count -2/First 1325 0 R/Last 1326 0 R/Title(6.4. Viewing file or directory permissions)/Dest[1090 0 R/XYZ 0 718 0]/Prev 1323 0 R/Next 1327 0 R>>endobj
-1325 0 obj<</Parent 1324 0 R/Title(6.4.1. File Permissions)/Dest[1090 0 R/XYZ 0 485 0]/Next 1326 0 R>>endobj
-1326 0 obj<</Parent 1324 0 R/Title(6.4.2. Directory Permissions)/Dest[1090 0 R/XYZ 0 241 0]/Prev 1325 0 R>>endobj
-1327 0 obj<</Parent 1320 0 R/Title(6.5. Modifying file or directory permissions)/Dest[1092 0 R/XYZ 0 745 0]/Prev 1324 0 R/Next 1328 0 R>>endobj
-1328 0 obj<</Parent 1320 0 R/Title(6.6. Interaction with the standard Samba create mask parameters)/Dest[1092 0 R/XYZ 0 313 0]/Prev 1327 0 R/Next 1329 0 R>>endobj
-1329 0 obj<</Parent 1320 0 R/Title(6.7. Interaction with the standard Samba file attribute mapping)/Dest[1096 0 R/XYZ 0 652 0]/Prev 1328 0 R>>endobj
-1330 0 obj<</Parent 1254 0 R/Count -4/First 1331 0 R/Last 1343 0 R/Title(Chapter 7. Printing Support in Samba 2.2.x)/Dest[1098 0 R/XYZ 0 786 0]/Prev 1320 0 R/Next 1344 0 R>>endobj
-1331 0 obj<</Parent 1330 0 R/Title(7.1. Introduction)/Dest[1098 0 R/XYZ 0 762 0]/Next 1332 0 R>>endobj
-1332 0 obj<</Parent 1330 0 R/Count -5/First 1333 0 R/Last 1337 0 R/Title(7.2. Configuration)/Dest[1098 0 R/XYZ 0 331 0]/Prev 1331 0 R/Next 1338 0 R>>endobj
-1333 0 obj<</Parent 1332 0 R/Title(7.2.1. Creating [print$])/Dest[1100 0 R/XYZ 0 755 0]/Next 1334 0 R>>endobj
-1334 0 obj<</Parent 1332 0 R/Title(7.2.2. Setting Drivers for Existing Printers)/Dest[1102 0 R/XYZ 0 524 0]/Prev 1333 0 R/Next 1335 0 R>>endobj
-1335 0 obj<</Parent 1332 0 R/Title(7.2.3. Support a large number of printers)/Dest[1104 0 R/XYZ 0 771 0]/Prev 1334 0 R/Next 1336 0 R>>endobj
-1336 0 obj<</Parent 1332 0 R/Title(7.2.4. Adding New Printers via the Windows NT APW)/Dest[1104 0 R/XYZ 0 401 0]/Prev 1335 0 R/Next 1337 0 R>>endobj
-1337 0 obj<</Parent 1332 0 R/Title(7.2.5. Samba and Printer Ports)/Dest[1106 0 R/XYZ 0 786 0]/Prev 1336 0 R>>endobj
-1338 0 obj<</Parent 1330 0 R/Count -4/First 1339 0 R/Last 1342 0 R/Title(7.3. The Imprints Toolset)/Dest[1106 0 R/XYZ 0 609 0]/Prev 1332 0 R/Next 1343 0 R>>endobj
-1339 0 obj<</Parent 1338 0 R/Title(7.3.1. What is Imprints?)/Dest[1106 0 R/XYZ 0 507 0]/Next 1340 0 R>>endobj
-1340 0 obj<</Parent 1338 0 R/Title(7.3.2. Creating Printer Driver Packages)/Dest[1106 0 R/XYZ 0 383 0]/Prev 1339 0 R/Next 1341 0 R>>endobj
-1341 0 obj<</Parent 1338 0 R/Title(7.3.3. The Imprints server)/Dest[1106 0 R/XYZ 0 298 0]/Prev 1340 0 R/Next 1342 0 R>>endobj
-1342 0 obj<</Parent 1338 0 R/Title(7.3.4. The Installation Client)/Dest[1106 0 R/XYZ 0 200 0]/Prev 1341 0 R>>endobj
-1343 0 obj<</Parent 1330 0 R/Title(7.4. Migration to from Samba 2.0.x to 2.2.x)/Dest[1108 0 R/XYZ 0 320 0]/Prev 1338 0 R>>endobj
-1344 0 obj<</Parent 1254 0 R/Count -9/First 1345 0 R/Last 1353 0 R/Title(Chapter 8. Debugging Printing Problems)/Dest[1112 0 R/XYZ 0 786 0]/Prev 1330 0 R/Next 1354 0 R>>endobj
-1345 0 obj<</Parent 1344 0 R/Title(8.1. Introduction)/Dest[1112 0 R/XYZ 0 762 0]/Next 1346 0 R>>endobj
-1346 0 obj<</Parent 1344 0 R/Title(8.2. Debugging printer problems)/Dest[1114 0 R/XYZ 0 786 0]/Prev 1345 0 R/Next 1347 0 R>>endobj
-1347 0 obj<</Parent 1344 0 R/Title(8.3. What printers do I have?)/Dest[1114 0 R/XYZ 0 331 0]/Prev 1346 0 R/Next 1348 0 R>>endobj
-1348 0 obj<</Parent 1344 0 R/Title(8.4. Setting up printcap and print servers)/Dest[1116 0 R/XYZ 0 786 0]/Prev 1347 0 R/Next 1349 0 R>>endobj
-1349 0 obj<</Parent 1344 0 R/Title(8.5. Job sent, no output)/Dest[1116 0 R/XYZ 0 357 0]/Prev 1348 0 R/Next 1350 0 R>>endobj
-1350 0 obj<</Parent 1344 0 R/Title(8.6. Job sent, strange output)/Dest[1118 0 R/XYZ 0 699 0]/Prev 1349 0 R/Next 1351 0 R>>endobj
-1351 0 obj<</Parent 1344 0 R/Title(8.7. Raw PostScript printed)/Dest[1118 0 R/XYZ 0 351 0]/Prev 1350 0 R/Next 1352 0 R>>endobj
-1352 0 obj<</Parent 1344 0 R/Title(8.8. Advanced Printing)/Dest[1118 0 R/XYZ 0 263 0]/Prev 1351 0 R/Next 1353 0 R>>endobj
-1353 0 obj<</Parent 1344 0 R/Title(8.9. Real debugging)/Dest[1120 0 R/XYZ 0 786 0]/Prev 1352 0 R>>endobj
-1354 0 obj<</Parent 1254 0 R/Count -2/First 1355 0 R/Last 1356 0 R/Title(Chapter 9. Security levels)/Dest[1122 0 R/XYZ 0 786 0]/Prev 1344 0 R/Next 1357 0 R>>endobj
-1355 0 obj<</Parent 1354 0 R/Title(9.1. Introduction)/Dest[1122 0 R/XYZ 0 762 0]/Next 1356 0 R>>endobj
-1356 0 obj<</Parent 1354 0 R/Title(9.2. More complete description of security levels)/Dest[1122 0 R/XYZ 0 520 0]/Prev 1355 0 R>>endobj
-1357 0 obj<</Parent 1254 0 R/Count -3/First 1358 0 R/Last 1360 0 R/Title(Chapter 10. security = domain in Samba 2.x)/Dest[1126 0 R/XYZ 0 786 0]/Prev 1354 0 R/Next 1361 0 R>>endobj
-1358 0 obj<</Parent 1357 0 R/Title(10.1. Joining an NT Domain with Samba 2.2)/Dest[1126 0 R/XYZ 0 762 0]/Next 1359 0 R>>endobj
-1359 0 obj<</Parent 1357 0 R/Title(10.2. Samba and Windows 2000 Domains)/Dest[1128 0 R/XYZ 0 415 0]/Prev 1358 0 R/Next 1360 0 R>>endobj
-1360 0 obj<</Parent 1357 0 R/Title(10.3. Why is this better than security = server?)/Dest[1128 0 R/XYZ 0 207 0]/Prev 1359 0 R>>endobj
-1361 0 obj<</Parent 1254 0 R/Count -7/First 1362 0 R/Last 1377 0 R/Title(Chapter 11. Unified Logons between Windows NT and UNIX using Winbind)/Dest[1132 0 R/XYZ 0 786 0]/Prev 1357 0 R/Next 1378 0 R>>endobj
-1362 0 obj<</Parent 1361 0 R/Title(11.1. Abstract)/Dest[1132 0 R/XYZ 0 738 0]/Next 1363 0 R>>endobj
-1363 0 obj<</Parent 1361 0 R/Title(11.2. Introduction)/Dest[1132 0 R/XYZ 0 597 0]/Prev 1362 0 R/Next 1364 0 R>>endobj
-1364 0 obj<</Parent 1361 0 R/Count -1/First 1365 0 R/Last 1365 0 R/Title(11.3. What Winbind Provides)/Dest[1132 0 R/XYZ 0 284 0]/Prev 1363 0 R/Next 1366 0 R>>endobj
-1365 0 obj<</Parent 1364 0 R/Title(11.3.1. Target Uses)/Dest[1134 0 R/XYZ 0 613 0]>>endobj
-1366 0 obj<</Parent 1361 0 R/Count -5/First 1367 0 R/Last 1371 0 R/Title(11.4. How Winbind Works)/Dest[1134 0 R/XYZ 0 462 0]/Prev 1364 0 R/Next 1372 0 R>>endobj
-1367 0 obj<</Parent 1366 0 R/Title(11.4.1. Microsoft Remote Procedure Calls)/Dest[1134 0 R/XYZ 0 347 0]/Next 1368 0 R>>endobj
-1368 0 obj<</Parent 1366 0 R/Title(11.4.2. Name Service Switch)/Dest[1136 0 R/XYZ 0 786 0]/Prev 1367 0 R/Next 1369 0 R>>endobj
-1369 0 obj<</Parent 1366 0 R/Title(11.4.3. Pluggable Authentication Modules)/Dest[1136 0 R/XYZ 0 345 0]/Prev 1368 0 R/Next 1370 0 R>>endobj
-1370 0 obj<</Parent 1366 0 R/Title(11.4.4. User and Group ID Allocation)/Dest[1138 0 R/XYZ 0 718 0]/Prev 1369 0 R/Next 1371 0 R>>endobj
-1371 0 obj<</Parent 1366 0 R/Title(11.4.5. Result Caching)/Dest[1138 0 R/XYZ 0 541 0]/Prev 1370 0 R>>endobj
-1372 0 obj<</Parent 1361 0 R/Count -3/First 1373 0 R/Last 1375 0 R/Title(11.5. Installation and Configuration)/Dest[1138 0 R/XYZ 0 403 0]/Prev 1366 0 R/Next 1376 0 R>>endobj
-1373 0 obj<</Parent 1372 0 R/Title(11.5.1. Introduction)/Dest[1138 0 R/XYZ 0 262 0]/Next 1374 0 R>>endobj
-1374 0 obj<</Parent 1372 0 R/Title(11.5.2. Requirements)/Dest[1140 0 R/XYZ 0 652 0]/Prev 1373 0 R/Next 1375 0 R>>endobj
-1375 0 obj<</Parent 1372 0 R/Title(11.5.3. Testing Things Out)/Dest[1140 0 R/XYZ 0 383 0]/Prev 1374 0 R>>endobj
-1376 0 obj<</Parent 1361 0 R/Title(11.6. Limitations)/Dest[1154 0 R/XYZ 0 349 0]/Prev 1372 0 R/Next 1377 0 R>>endobj
-1377 0 obj<</Parent 1361 0 R/Title(11.7. Conclusion)/Dest[1156 0 R/XYZ 0 786 0]/Prev 1376 0 R>>endobj
-1378 0 obj<</Parent 1254 0 R/Count -9/First 1379 0 R/Last 1392 0 R/Title(Chapter 12. How to Configure Samba 2.2 as a Primary Domain Controller)/Dest[1158 0 R/XYZ 0 786 0]/Prev 1361 0 R/Next 1393 0 R>>endobj
-1379 0 obj<</Parent 1378 0 R/Title(12.1. Prerequisite Reading)/Dest[1158 0 R/XYZ 0 738 0]/Next 1380 0 R>>endobj
-1380 0 obj<</Parent 1378 0 R/Title(12.2. Background)/Dest[1158 0 R/XYZ 0 637 0]/Prev 1379 0 R/Next 1381 0 R>>endobj
-1381 0 obj<</Parent 1378 0 R/Title(12.3. Configuring the Samba Domain Controller)/Dest[1160 0 R/XYZ 0 771 0]/Prev 1380 0 R/Next 1382 0 R>>endobj
-1382 0 obj<</Parent 1378 0 R/Count -3/First 1383 0 R/Last 1385 0 R/Title(12.4. Creating Machine Trust Accounts and Joining Clients to the Domain)/Dest[1162 0 R/XYZ 0 665 0]/Prev 1381 0 R/Next 1386 0 R>>endobj
-1383 0 obj<</Parent 1382 0 R/Title(12.4.1. Manual Creation of Machine Trust Accounts)/Dest[1162 0 R/XYZ 0 279 0]/Next 1384 0 R>>endobj
-1384 0 obj<</Parent 1382 0 R/Title(12.4.2. "On-the-Fly" Creation of Machine Trust Accounts)/Dest[1164 0 R/XYZ 0 411 0]/Prev 1383 0 R/Next 1385 0 R>>endobj
-1385 0 obj<</Parent 1382 0 R/Title(12.4.3. Joining the Client to the Domain)/Dest[1164 0 R/XYZ 0 202 0]/Prev 1384 0 R>>endobj
-1386 0 obj<</Parent 1378 0 R/Title(12.5. Common Problems and Errors)/Dest[1166 0 R/XYZ 0 520 0]/Prev 1382 0 R/Next 1387 0 R>>endobj
-1387 0 obj<</Parent 1378 0 R/Title(12.6. System Policies and Profiles)/Dest[1168 0 R/XYZ 0 261 0]/Prev 1386 0 R/Next 1388 0 R>>endobj
-1388 0 obj<</Parent 1378 0 R/Title(12.7. What other help can I get?)/Dest[1170 0 R/XYZ 0 256 0]/Prev 1387 0 R/Next 1389 0 R>>endobj
-1389 0 obj<</Parent 1378 0 R/Count -2/First 1390 0 R/Last 1391 0 R/Title(12.8. Domain Control for Windows 9x/ME)/Dest[1176 0 R/XYZ 0 599 0]/Prev 1388 0 R/Next 1392 0 R>>endobj
-1390 0 obj<</Parent 1389 0 R/Title(12.8.1. Configuration Instructions: Network Logons)/Dest[1178 0 R/XYZ 0 613 0]/Next 1391 0 R>>endobj
-1391 0 obj<</Parent 1389 0 R/Title(12.8.2. Configuration Instructions: Setting up Roaming User Profiles)/Dest[1178 0 R/XYZ 0 179 0]/Prev 1390 0 R>>endobj
-1392 0 obj<</Parent 1378 0 R/Title(12.9. DOMAIN_CONTROL.txt : Windows NT Domain Control & Samba)/Dest[1186 0 R/XYZ 0 188 0]/Prev 1389 0 R>>endobj
-1393 0 obj<</Parent 1254 0 R/Count -5/First 1394 0 R/Last 1400 0 R/Title(Chapter 13. How to Act as a Backup Domain Controller in a Purely Samba Controlled Domain)/Dest[1192 0 R/XYZ 0 786 0]/Prev 1378 0 R/Next 1402 0 R>>endobj
-1394 0 obj<</Parent 1393 0 R/Title(13.1. Prerequisite Reading)/Dest[1192 0 R/XYZ 0 738 0]/Next 1395 0 R>>endobj
-1395 0 obj<</Parent 1393 0 R/Title(13.2. Background)/Dest[1192 0 R/XYZ 0 650 0]/Prev 1394 0 R/Next 1396 0 R>>endobj
-1396 0 obj<</Parent 1393 0 R/Count -2/First 1397 0 R/Last 1398 0 R/Title(13.3. What qualifies a Domain Controller on the network?)/Dest[1192 0 R/XYZ 0 278 0]/Prev 1395 0 R/Next 1399 0 R>>endobj
-1397 0 obj<</Parent 1396 0 R/Title(13.3.1. How does a Workstation find its domain controller?)/Dest[1194 0 R/XYZ 0 786 0]/Next 1398 0 R>>endobj
-1398 0 obj<</Parent 1396 0 R/Title(13.3.2. When is the PDC needed?)/Dest[1194 0 R/XYZ 0 662 0]/Prev 1397 0 R>>endobj
-1399 0 obj<</Parent 1393 0 R/Title(13.4. Can Samba be a Backup Domain Controller?)/Dest[1194 0 R/XYZ 0 577 0]/Prev 1396 0 R/Next 1400 0 R>>endobj
-1400 0 obj<</Parent 1393 0 R/Count -1/First 1401 0 R/Last 1401 0 R/Title(13.5. How do I set up a Samba BDC?)/Dest[1194 0 R/XYZ 0 436 0]/Prev 1399 0 R>>endobj
-1401 0 obj<</Parent 1400 0 R/Title(13.5.1. How do I replicate the smbpasswd file?)/Dest[1196 0 R/XYZ 0 718 0]>>endobj
-1402 0 obj<</Parent 1254 0 R/Count -10/First 1403 0 R/Last 1414 0 R/Title(Chapter 14. Storing Samba's User/Machine Account information in an LDAP Directory)/Dest[1198 0 R/XYZ 0 786 0]/Prev 1393 0 R/Next 1415 0 R>>endobj
-1403 0 obj<</Parent 1402 0 R/Title(14.1. Purpose)/Dest[1198 0 R/XYZ 0 738 0]/Next 1404 0 R>>endobj
-1404 0 obj<</Parent 1402 0 R/Title(14.2. Introduction)/Dest[1198 0 R/XYZ 0 465 0]/Prev 1403 0 R/Next 1405 0 R>>endobj
-1405 0 obj<</Parent 1402 0 R/Title(14.3. Supported LDAP Servers)/Dest[1200 0 R/XYZ 0 626 0]/Prev 1404 0 R/Next 1406 0 R>>endobj
-1406 0 obj<</Parent 1402 0 R/Title(14.4. Schema and Relationship to the RFC 2307 posixAccount)/Dest[1200 0 R/XYZ 0 524 0]/Prev 1405 0 R/Next 1407 0 R>>endobj
-1407 0 obj<</Parent 1402 0 R/Count -2/First 1408 0 R/Last 1409 0 R/Title(14.5. Configuring Samba with LDAP)/Dest[1202 0 R/XYZ 0 786 0]/Prev 1406 0 R/Next 1410 0 R>>endobj
-1408 0 obj<</Parent 1407 0 R/Title(14.5.1. OpenLDAP configuration)/Dest[1202 0 R/XYZ 0 766 0]/Next 1409 0 R>>endobj
-1409 0 obj<</Parent 1407 0 R/Title(14.5.2. Configuring Samba)/Dest[1202 0 R/XYZ 0 196 0]/Prev 1408 0 R>>endobj
-1410 0 obj<</Parent 1402 0 R/Title(14.6. Accounts and Groups management)/Dest[1204 0 R/XYZ 0 296 0]/Prev 1407 0 R/Next 1411 0 R>>endobj
-1411 0 obj<</Parent 1402 0 R/Title(14.7. Security and sambaAccount)/Dest[1206 0 R/XYZ 0 771 0]/Prev 1410 0 R/Next 1412 0 R>>endobj
-1412 0 obj<</Parent 1402 0 R/Title(14.8. LDAP specials attributes for sambaAccounts)/Dest[1206 0 R/XYZ 0 389 0]/Prev 1411 0 R/Next 1413 0 R>>endobj
-1413 0 obj<</Parent 1402 0 R/Title(14.9. Example LDIF Entries for a sambaAccount)/Dest[1208 0 R/XYZ 0 375 0]/Prev 1412 0 R/Next 1414 0 R>>endobj
-1414 0 obj<</Parent 1402 0 R/Title(14.10. Comments)/Dest[1210 0 R/XYZ 0 544 0]/Prev 1413 0 R>>endobj
-1415 0 obj<</Parent 1254 0 R/Count -11/First 1416 0 R/Last 1427 0 R/Title(Chapter 15. Improved browsing in samba)/Dest[1212 0 R/XYZ 0 786 0]/Prev 1402 0 R/Next 1428 0 R>>endobj
-1416 0 obj<</Parent 1415 0 R/Title(15.1. Overview of browsing)/Dest[1212 0 R/XYZ 0 762 0]/Next 1417 0 R>>endobj
-1417 0 obj<</Parent 1415 0 R/Title(15.2. Browsing support in samba)/Dest[1212 0 R/XYZ 0 568 0]/Prev 1416 0 R/Next 1418 0 R>>endobj
-1418 0 obj<</Parent 1415 0 R/Title(15.3. Problem resolution)/Dest[1212 0 R/XYZ 0 189 0]/Prev 1417 0 R/Next 1419 0 R>>endobj
-1419 0 obj<</Parent 1415 0 R/Count -1/First 1420 0 R/Last 1420 0 R/Title(15.4. Browsing across subnets)/Dest[1214 0 R/XYZ 0 586 0]/Prev 1418 0 R/Next 1421 0 R>>endobj
-1420 0 obj<</Parent 1419 0 R/Title(15.4.1. How does cross subnet browsing work ?)/Dest[1214 0 R/XYZ 0 326 0]>>endobj
-1421 0 obj<</Parent 1415 0 R/Title(15.5. Setting up a WINS server)/Dest[1220 0 R/XYZ 0 613 0]/Prev 1419 0 R/Next 1422 0 R>>endobj
-1422 0 obj<</Parent 1415 0 R/Title(15.6. Setting up Browsing in a WORKGROUP)/Dest[1222 0 R/XYZ 0 665 0]/Prev 1421 0 R/Next 1423 0 R>>endobj
-1423 0 obj<</Parent 1415 0 R/Title(15.7. Setting up Browsing in a DOMAIN)/Dest[1224 0 R/XYZ 0 675 0]/Prev 1422 0 R/Next 1424 0 R>>endobj
-1424 0 obj<</Parent 1415 0 R/Title(15.8. Forcing samba to be the master)/Dest[1224 0 R/XYZ 0 319 0]/Prev 1423 0 R/Next 1425 0 R>>endobj
-1425 0 obj<</Parent 1415 0 R/Title(15.9. Making samba the domain master)/Dest[1226 0 R/XYZ 0 573 0]/Prev 1424 0 R/Next 1426 0 R>>endobj
-1426 0 obj<</Parent 1415 0 R/Title(15.10. Note about broadcast addresses)/Dest[1228 0 R/XYZ 0 786 0]/Prev 1425 0 R/Next 1427 0 R>>endobj
-1427 0 obj<</Parent 1415 0 R/Title(15.11. Multiple interfaces)/Dest[1228 0 R/XYZ 0 698 0]/Prev 1426 0 R>>endobj
-1428 0 obj<</Parent 1254 0 R/Count -17/First 1429 0 R/Last 1448 0 R/Title(Chapter 16. Samba performance issues)/Dest[1230 0 R/XYZ 0 786 0]/Prev 1415 0 R/Next 1449 0 R>>endobj
-1429 0 obj<</Parent 1428 0 R/Title(16.1. Comparisons)/Dest[1230 0 R/XYZ 0 762 0]/Next 1430 0 R>>endobj
-1430 0 obj<</Parent 1428 0 R/Count -3/First 1431 0 R/Last 1433 0 R/Title(16.2. Oplocks)/Dest[1230 0 R/XYZ 0 502 0]/Prev 1429 0 R/Next 1434 0 R>>endobj
-1431 0 obj<</Parent 1430 0 R/Title(16.2.1. Overview)/Dest[1230 0 R/XYZ 0 482 0]/Next 1432 0 R>>endobj
-1432 0 obj<</Parent 1430 0 R/Title(16.2.2. Level2 Oplocks)/Dest[1230 0 R/XYZ 0 199 0]/Prev 1431 0 R/Next 1433 0 R>>endobj
-1433 0 obj<</Parent 1430 0 R/Title(16.2.3. Old 'fake oplocks' option - deprecated)/Dest[1232 0 R/XYZ 0 705 0]/Prev 1432 0 R>>endobj
-1434 0 obj<</Parent 1428 0 R/Title(16.3. Socket options)/Dest[1232 0 R/XYZ 0 567 0]/Prev 1430 0 R/Next 1435 0 R>>endobj
-1435 0 obj<</Parent 1428 0 R/Title(16.4. Read size)/Dest[1232 0 R/XYZ 0 307 0]/Prev 1434 0 R/Next 1436 0 R>>endobj
-1436 0 obj<</Parent 1428 0 R/Title(16.5. Max xmit)/Dest[1234 0 R/XYZ 0 771 0]/Prev 1435 0 R/Next 1437 0 R>>endobj
-1437 0 obj<</Parent 1428 0 R/Title(16.6. Locking)/Dest[1234 0 R/XYZ 0 590 0]/Prev 1436 0 R/Next 1438 0 R>>endobj
-1438 0 obj<</Parent 1428 0 R/Title(16.7. Share modes)/Dest[1234 0 R/XYZ 0 462 0]/Prev 1437 0 R/Next 1439 0 R>>endobj
-1439 0 obj<</Parent 1428 0 R/Title(16.8. Log level)/Dest[1234 0 R/XYZ 0 242 0]/Prev 1438 0 R/Next 1440 0 R>>endobj
-1440 0 obj<</Parent 1428 0 R/Title(16.9. Wide lines)/Dest[1236 0 R/XYZ 0 786 0]/Prev 1439 0 R/Next 1441 0 R>>endobj
-1441 0 obj<</Parent 1428 0 R/Title(16.10. Read raw)/Dest[1236 0 R/XYZ 0 698 0]/Prev 1440 0 R/Next 1442 0 R>>endobj
-1442 0 obj<</Parent 1428 0 R/Title(16.11. Write raw)/Dest[1236 0 R/XYZ 0 530 0]/Prev 1441 0 R/Next 1443 0 R>>endobj
-1443 0 obj<</Parent 1428 0 R/Title(16.12. Read prediction)/Dest[1236 0 R/XYZ 0 402 0]/Prev 1442 0 R/Next 1444 0 R>>endobj
-1444 0 obj<</Parent 1428 0 R/Title(16.13. Memory mapping)/Dest[1236 0 R/XYZ 0 182 0]/Prev 1443 0 R/Next 1445 0 R>>endobj
-1445 0 obj<</Parent 1428 0 R/Title(16.14. Slow Clients)/Dest[1238 0 R/XYZ 0 692 0]/Prev 1444 0 R/Next 1446 0 R>>endobj
-1446 0 obj<</Parent 1428 0 R/Title(16.15. Slow Logins)/Dest[1238 0 R/XYZ 0 564 0]/Prev 1445 0 R/Next 1447 0 R>>endobj
-1447 0 obj<</Parent 1428 0 R/Title(16.16. Client tuning)/Dest[1238 0 R/XYZ 0 489 0]/Prev 1446 0 R/Next 1448 0 R>>endobj
-1448 0 obj<</Parent 1428 0 R/Title(16.17. My Results)/Dest[1240 0 R/XYZ 0 441 0]/Prev 1447 0 R>>endobj
-1449 0 obj<</Parent 1254 0 R/Count -1/First 1450 0 R/Last 1450 0 R/Title(Chapter 17. OS2 Client HOWTO)/Dest[1242 0 R/XYZ 0 786 0]/Prev 1428 0 R/Next 1455 0 R>>endobj
-1450 0 obj<</Parent 1449 0 R/Count -4/First 1451 0 R/Last 1454 0 R/Title(17.1. FAQs)/Dest[1242 0 R/XYZ 0 762 0]>>endobj
-1451 0 obj<</Parent 1450 0 R/Title(17.1.1. How can I configure OS/2 Warp Connect or OS/2 Warp 4 as a client for Samba?)/Dest[1242 0 R/XYZ 0 729 0]/Next 1452 0 R>>endobj
-1452 0 obj<</Parent 1450 0 R/Title(17.1.2. How can I configure OS/2 Warp 3 \(not Connect\), OS/2 1.2, 1.3 or 2.x for Samba?)/Dest[1242 0 R/XYZ 0 376 0]/Prev 1451 0 R/Next 1453 0 R>>endobj
-1453 0 obj<</Parent 1450 0 R/Title(17.1.3. Are there any other issues when OS/2 \(any version\) is used as a client?)/Dest[1244 0 R/XYZ 0 786 0]/Prev 1452 0 R/Next 1454 0 R>>endobj
-1454 0 obj<</Parent 1450 0 R/Title(17.1.4. How do I get printer driver download working for OS/2 clients?)/Dest[1244 0 R/XYZ 0 671 0]/Prev 1453 0 R>>endobj
-1455 0 obj<</Parent 1254 0 R/Count -2/First 1456 0 R/Last 1457 0 R/Title(Chapter 18. HOWTO Access Samba source code via CVS)/Dest[1246 0 R/XYZ 0 786 0]/Prev 1449 0 R/Next 1460 0 R>>endobj
-1456 0 obj<</Parent 1455 0 R/Title(18.1. Introduction)/Dest[1246 0 R/XYZ 0 738 0]/Next 1457 0 R>>endobj
-1457 0 obj<</Parent 1455 0 R/Count -2/First 1458 0 R/Last 1459 0 R/Title(18.2. CVS Access to samba.org)/Dest[1246 0 R/XYZ 0 610 0]/Prev 1456 0 R>>endobj
-1458 0 obj<</Parent 1457 0 R/Title(18.2.1. Access via CVSweb)/Dest[1246 0 R/XYZ 0 522 0]/Next 1459 0 R>>endobj
-1459 0 obj<</Parent 1457 0 R/Title(18.2.2. Access via cvs)/Dest[1246 0 R/XYZ 0 411 0]/Prev 1458 0 R>>endobj
-1460 0 obj<</Parent 1254 0 R/Count -6/First 1461 0 R/Last 1466 0 R/Title(Chapter 19. Reporting Bugs)/Dest[1250 0 R/XYZ 0 786 0]/Prev 1455 0 R>>endobj
-1461 0 obj<</Parent 1460 0 R/Title(19.1. Introduction)/Dest[1250 0 R/XYZ 0 762 0]/Next 1462 0 R>>endobj
-1462 0 obj<</Parent 1460 0 R/Title(19.2. General info)/Dest[1250 0 R/XYZ 0 489 0]/Prev 1461 0 R/Next 1463 0 R>>endobj
-1463 0 obj<</Parent 1460 0 R/Title(19.3. Debug levels)/Dest[1250 0 R/XYZ 0 348 0]/Prev 1462 0 R/Next 1464 0 R>>endobj
-1464 0 obj<</Parent 1460 0 R/Title(19.4. Internal errors)/Dest[1252 0 R/XYZ 0 692 0]/Prev 1463 0 R/Next 1465 0 R>>endobj
-1465 0 obj<</Parent 1460 0 R/Title(19.5. Attaching to a running process)/Dest[1252 0 R/XYZ 0 339 0]/Prev 1464 0 R/Next 1466 0 R>>endobj
-1466 0 obj<</Parent 1460 0 R/Title(19.6. Patches)/Dest[1252 0 R/XYZ 0 238 0]/Prev 1465 0 R>>endobj
-1467 0 obj<</Type/Catalog/Pages 1011 0 R/PageLayout/SinglePage/Outlines 1254 0 R/OpenAction[1024 0 R/XYZ null null 0]/PageMode/UseOutlines/PageLabels<</Nums[0<</P(title)>>1<</S/r>>6<</S/D/St 1/P()>>7<</S/D/St 2/P()>>12<</S/D/St 7/P()>>18<</S/D/St 13/P()>>23<</S/D/St 18/P()>>33<</S/D/St 28/P()>>36<</S/D/St 31/P()>>38<</S/D/St 33/P()>>43<</S/D/St 38/P()>>50<</S/D/St 45/P()>>55<</S/D/St 50/P()>>57<</S/D/St 52/P()>>60<</S/D/St 55/P()>>73<</S/D/St 68/P()>>90<</S/D/St 85/P()>>93<</S/D/St 88/P()>>100<</S/D/St 95/P()>>109<</S/D/St 104/P()>>115<</S/D/St 110/P()>>117<</S/D/St 112/P()>>119<</S/D/St 114/P()>>]>>>>endobj
\12ò\ e\9c\rÉ\r\83{\ f\9di\97®\96g\8dΠ\8aoÜQÉ­@\98\ 65\a@ø®\ 4{â<\87s®Ý½¦ °#½µgsõæíí\7fª<\81\12Ù\90#wòG>n Ü}\ eßì\80WíuÎËûkòq5±â\9b¡`l\8f9ûÛ\e\7fà]{4wÍD?Ï\1eïi\ eNäc&\9f­Ä\11]:@ëV@Ò\ 3\1e\a\9d\ 5\13\8dX\87q<vÃ\86zU\16%¥Á¥L=B·Ú¨/5\17ëå'\1c\ 4\r\96o\9d®Ùo\1f\86\86îv%În\88\vl]JS\ 4\90ë\87%\86l©ì\93¶å\86\93\80\8b/ö2éÎ]\0ÝÐd<\99Mzþ`Ô\eÝͦÁõh<\9e\ e\ 6óû©ß\1föïïÆ­¥G7\ 17\14ø\83ñ`Ò\1f\rNÞ;R\e7\80»ç·¶JÒ½\17ÃapÝ\vz}ÿv>\9b_ÃútÖ¿\1dô\87·C\7fÐ\eÌç\ en\=Ù«7\7f4ò|ܾÙ`ÞOßÜN1,5C\86a\19\81\ 23wáÅ«ºþh\8c\97»ãÀj\91ïN2â\ 3hvíu\8f7D\8dýûâ\7f\12¨\1a2endstream
+endobj
+1067 0 obj
+1836
+endobj
+1068 0 obj<</Type/Page/Parent 794 0 R/Contents 1069 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 316 0 R>>endobj
+1069 0 obj<</Length 1070 0 R/Filter/FlateDecode>>stream
+x\ 1\8d\8eÛ6\10}÷WÌ£\ 3Ä2Iɺ\18X ¾n\ 3d\93M¬¢\ 5\8a\12-Ë+\89*Eaã\16ý÷\ e%ßÂl·k\ 1²\88\19ÎåÌÌ\99?\a\14\b>\14\ 2\ 6®\ fI9\98Ç\83U< N\18Âõ¥2<\10p\19u\18xa\80ßÌ\r\9d\10\94\80\1d*\13\98D\91ã\9fDQèx½\ 4\8d¡\10=\^hi¼&\10A¼C¯>z\89ÓNL N\86õsú\917z#ô\14(Á'\88(óÞÅ\87\ 1\81\11ÅxP{XÈLVq^\8a)\10K$·\a\91èEÁ\9bf
+\r/·|\96$²­´¥×æé\14²V4\9aY\92§<y\92»]o\9eQ/ðB×÷\ 2K\8b'\89^\17<C/¿ÿò\e\9c\7f\7fXj&Òÿµ¥L,4"Ä·n#\18\v^-ö¼ÊΩ\8e×\1ePj°\eQ\181\1f«\81\80Ä{¬\82,
\9cW\19ä\rð
+>.?¬ATZ\1dQ¤ m\8ch+õ\1e4jßB\83Ú)Բɿ\9d°\82\1eÅÄ (\9a©\89ê¦d#6Áê¢×´\9a\ 2âx\97%\i¡Þ\83lïj!ëB¼O\93»ºàyu\90Ý·T\99\95Ú+%Ló\ 6ï\1e?qSß{¡x\91¢ó`Û(\1f1Àg©\10¾É\84E\84\11\97ÎWËU´ZÏfKwî¹\93ù\84zÄ[­¬«µÊK®\8e÷J¶õ\87%¢Ï\bµT¾ë¤[t^Ó»\85ÕÒ{cÇ´\8dP×´þNÔ±ÖÿÌë\a&\ eáק¿°\9f,»}'÷%øQô©-·BM\ 1»Ë\1e\95\ 4Ë÷*¼2Ë«Í^\14Å\14ÆÛ¼\1aoy³·<¼©¿³<=\87A\7f\88âmãö\ 2-0×Nè2G¶`/K±Ì\15\12\83TGLÆ\9cÇ\1a³Ñ"\93ãSûZ\99½0{7\f\84Ò\87¶ÑçÑüO\9a¨ôµ\96a\10.CB=\9fø\8bå\8cE~\10Ì<\ f[\95º\13w½è\18¦#^¤YÊ.\Ê\90[;\92E*\1d¯# 8{;dl\16\18ú½åNê9È\90°\90e\89\98\84z{'ú¥\86\83¿Þ\ f\98ëâ\0³\89\12\\12á\7f\7f*`cèÿJ2èfB-7\8f\85à\8d\80\92ç\ 5ð¢\80ää\ f£Ì¸J\rÍè=rÐÏ\9f\7f\8d?\83\96Ð!{áÿ.
+\\ 2Ã\83PêøS71Î\99 .Zݾ0Z\ e@l¬¥2i»´à\997\80̤¡­S®E\8a.εs{:TbW`±;¢Û\98\1d\0Ìa\8e\8b\ 1v¡;Wd\80±\0Ó;-´ï\90\ eO<KýÀ1Û\11×ÓÍ\9eÚÌ\1eæ3xTÒ¬\eX\9e\82ã:\97\95±>êo\8dúkÃ\17*\83{\ 5\1d\e£Ã¨£\1e\97Á¿¼å\11^endstream
+endobj
+1070 0 obj
+860
+endobj
+1071 0 obj<</Type/Page/Parent 794 0 R/Contents 1072 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+1072 0 obj<</Length 1073 0 R/Filter/FlateDecode>>stream
+x\ 1\9dWMoÛF\10½ûW\f\rÈ\8c¤(¶\93[\9c´\80\ f\91SXE\ fuQ,É¥´\r¹Ëî\92Rôïûf\96¤$ª\1f@\11\ 4QìÝ\997oÞ¼Yýy1£)þÌè~Noï(«.\1eW\17o~|Oó)­
+üæîþ\81V9M\93é\14?É®?mTÝhO³w =Uµw[\9dSêÝ.\18»&c)¨*U7«?$Êl\11£Ü¾\9d%sĹƵYBÏ[í·FïÈ\15ÃÝxeA³Ywe~Ï\17^¾<\92ÕÍÎùo\9c\80\13\9a\\aRTél£¬  \15¥{ÚmL¶¡¬4Ú6\812eIe\99\ e|®4¡áD\95Ê6Æâ*@ª>æ\84\ 4ë\94ngo#Âàn3U\96¨êRÊÒ\12à2!ZmL\88Ñ2g\eel8Äl6ª!å5y­ò=5\ e\19\vÐT\98R\93²ù\eç\81ÝØ\86\ 2\97\ ehr¦ÙhÏ\85\1få\1f`îL\ 3¼\84#=Ø\ 4\10Zào(w\b`]\83Z²²Íõ\ 1H$\ 2HìUCYëñ¡)÷¤Rà\0ªÜ     \80³¬\8d
\82Ô¨cGbÙ\84\8a7Zm\r\81;\8dPeIÜ\95\8el\úälaÖ­W\8dq\96©æ_\ f\9aب@©ÖvT':    L\15îdT\80\9dà*M/,\1eÎäÃ\ 4\89m\ 6ÐÌzB%I\17d~\97@Yùõc/¼\9d\ 1ªåó\8aX(d
+á¼\ e®l\ 5Uá]EKÝ<>=¿È/¥\ 1O_Iå9\8e\ 5ð9\90Z´6ãK#Ä\99\ 3\9b\19ØLèç ¹NE¿<-_:F\85+³Þ\80*\1cs\15ðæ`\f¤+\83\7fÐÆ#8¸Ü\83ye\8d¿Þ\1c\83\1a%\1e &1\1f:\80yC¸Ê5\1aÙ×LMß\ fÑUÊò\1c20\17¿7ûZC. \9a9G\9fD²<)L[ªG9»A\8b\1d·{r,UÌ\9c\82ê\ 1~D¯ôå\87Õ\ 5l\82\16ï§\98¤ÅÃ=>Ïñ\17CQô®ÒûÁâ]làÁW`\fó\84\86~\86¶®\9dg}\1f\eʹ;\88^¬ÛQÑ\96 ¾»\ 6ÁuÂ8\96´\18TèÏD1Û*Íy>¹yª\f\8ex´½\93ù\87Ö]ÍT±e\8cèáv\86*Mp¼\88Cþz\1dôág¯×ï^o^oÆz\8dú\8eö\ 4¿\10{r°\9b~æ*\15Ø\y\1e\94Hyí][\v@ΨRS\9af\1fçEJ\87ºzªrWqÓK·\ 6â\11\®0dÞÔ0GTÊ\84©­2%Û\ 2(z\ 1òÏÏ_>>-\93æ{#á+\87¾\1dË\ 5\8a9Éð/¥1\8f*ëêë.u\95I_Î+\946\ 1\97(\13.'C\9d¡\19
+2g\e\ fÄc<ª­<'\90\eÆs\87\bðF\98áà÷ý¬r4$}\82]ù¼Ã\13±\1dÏ\91\fì\96=\b\1e\8c!\1aÓ\8a\9fïa½h\88a      ñL¡\b\8e=a\97Æç\13\1d\91b\90¢¤¥«{×ú!#|ïÔRÆ\1c/yÞ\85\1dÜ£°qm\99Ëø\ 6ÝtÞ\89²Ó\bø\94ø±¤$
+[³(\99ÍRF\9a%9ÖúrE\9fE[\1f\b"ÐX£ç¼N\88\11U-¯Z\8bAÔØð´QàÎYÝ\v\81úl\v±y\8bâ' n­|^ò
+\87Ýì6\1a8}Gêr5éªå9\19ÌI\1c\ e\87O\v\8fb
+ÝË\81=\80\9b4ÒP·\94Ç|ÿz \\8c\82\a\17ìòÐó¾\83\85È\b\1f-\81      ¥-\1a/½çýl5¿B\94\97'A¨uf
+ÃÏ\vY§½\ e\ 2\937~\a\1c\ 5\85P\97«\8f/ò¬9K/
+:=\fUãyd¾\ 3\1fzǵ\81\0ñ\fm·Æ;ËKcD\ 3Ú\8b\95Æ3ó\91g\ 6\e\8a\8f\96³fYBC¢«p²\143UG×2\9aß\17\fm\94T\1e\8c·Q5\adÿ\99\94uÅ5ÉEþO´òÈå1\84ßÆ]]9Zc^ú\15Á\vS^\r\\8eÕqeûÖ\ e\ 1ÛЪ26V\1c©?Ó\97~9Èö²[\18çûbØ\15HÖ­\18\88\1a~0Üí\14\9dòÓ\ 1\8f\11EµÂþsÅ\18}\!²«x|åµ\84å×g\8es\1e\ fu\9dGÊø\185MÐ%Ö\15¦f(\9e[\ e¡òp\856ÅK\9b\9bÄò\1duéÌÈÄêâ~d£\936\80\91\Â_µVX»¢ºõµÃëê\ 3ÒX\87\87\95fÝá<k\92\85\ 3§Ö\1ey'|q\94T\7fWU=l¨ËîÁÓ\aº\8c\8e{Xº°b\vÚÖXi\1c¨{\8f<<$w\7fû\1cy\18¾kà\9bÍÿú\8a³¸_$\ fø\92\84\97èûy\97ò§\8b¿\0¯¤g½endstream
+endobj
+1073 0 obj
+1463
+endobj
+1074 0 obj<</Type/Page/Parent 794 0 R/Contents 1075 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+1075 0 obj<</Length 1076 0 R/Filter/FlateDecode>>stream
+x\ 1\8dWÁrÛ6\10½û+v<\9d©=#1¦$[v.\9dØI'>Äucµ¹è\ 2\92 \88\98$\18\ 2\94¢¿ïÛ\ 5©È¬\9bi\12g$\13Àî¾÷ö-øí$¦\vü\8di9£ù\15¥ÕÉíêäÍï7\14/h\95ãÉÕ5>dt\11]\\Ð*=\8b/£yD\8f­MJ]Q«\9d-;ol}¾ú\8a}\v\8aã°o:[bßÙ}NÎVÚ\17¦ÞPfµ«\7fõ´³í3ùB×TØFç]Yîù+\95v\13ÕUB¹)5íLYR¡Ë\86ö¶#ߪô\19\aìjYÙ\84ø\11ѪÝ\93¢L'Ý\86S¸ i<\8ff\1cºÔ[]\92ÍiF¶¥9åø?7uÆ\99ôû]DïJg©¶^ã\ååð´k[]{JZ»sÈÊ8O\9dë\14§¹ÑÞ\91ó¶Õ\19\19䢿{>¸â/j\94\80\94\91b\eÖ\86³¢Lù¨_5»\8a\18Ù³\87Cl\93\93ñ/Aâ\9c\84óª\ 5\bWØ®Ì\90\ 2Ã\93hRà\81¼%¿o¸\ 4MN·[ÝR­*<t´Æ\9f§\ f\9fÿþð\19\92`¥jµÁú@\aâ£r|Uu&4\f\8fû°\99qM©z¶\18\17À«¶Ê\94\92\86+\14\ 41.ð       üS£m\83D\19ÿ\80\ 5³\90c£C\11©ê\8032Ø£z\16H¡¶¡\98Mi\13UÒé¦Ó\b¦ÒÔvµ?E\8d\82÷­*M6ü~\b<\bà³®t\95Hm=³÷\8fw¿PjëZ§¬Y\84Ä\ 3æ×\ 5è$\7f2\8eÓ\10ô$îDÐðEç\84\81ªC*\92a\1f\7f\84ê\8b\\87\9c\ 6¶Yn8\ fR\17ìzX\0\e+Ë3(\89ñ\1e\'\ 1ä^¨\8c³·\96\9e\1aÕ\82\°äHjÐ(©Â\93\f¥ m,E\13e£¬ O<ôY\84òsî\9b\ 2eúÖ «ø\83ô\0T\ eý4*ÕÌ\8aßiäÁ\92²\8d Å\11øë!>­Ïôæ-M³\19Îv^«\8c\83O3\9a­Ï'£ø²ùG\14>gz+ÀN\1fú\0èFzÐ;\82|\1dØAu¡\12bxj»\83^ZªÐz¨óY³gXT\8e^M=¾\88´Ð+í(0:Oe©bù \7f@ î£²\fRu\13¸\13·neñ\1c\8bP82\ 3
+\bÉB¬µÎt6&qÅ\98`]\v²\ e^2H\\94Á\90övb°êG
+CXäQ)÷ÌÎtÿH}6ÌÄ®µ\10ÁúÌ5:5¹Ñc\1e\17©áFÍ\99¬Ó\81!TâªD(^\9f3\ e\1fV'pnZÌâè\9a\16×K|\9eá\a\10æc£\9f__\8f\8d~\11Ñ-{ ËR¥­u°¾.Aê\8eÏ~Åí¿\fɵºÔ@\93\19|RU¢(\8en¢x¹>SeS¨X¨P\89Ýêõy¿ \80W%,¸®\81IÂ1A®®ÅV`Jø⺦±­8ô\88áV7¥I\95h\14\ 1\83Õömý"mJ`\1f\99j\rL*H-µ\19¸\86.\82Ä]èkÉ\ 3\9c\84,TZ\18\8c\12\80n\ eÞ6X\8ct\91ëÝ$Ó.mM\ 2\r\15\10+§Ì6Å}\96kå;\80Þ5,¶Ìä¹\96    \83\ 5Üó\87c\a\97Xñ^ý²\12Ñ\13\9a³¦ÕÝã\e\88¦§\ 2Z1\1aåôÊ\ 6E\9a\e\94!\84\87´¶\13£\90ÝÁ\\e\ 5\1e\ f\92\1ca\899\9bç&\ 5-<uÅê¸
+$ÎN    Na[ð\98\ fO\bÄ\93F¼äÅo \15\18*øTô\1eËx\86=h\7f{ÿÇ\93L%÷/k(K»c\8d\1d¯bü\8e:\ 3yÕ®\f\1cã      \ 6\9fX4*̬È\13¨²\11зNãF\0\19°Ã\1c§9*T\98\ 35rÌÖ(¾DÈ    Àí¯÷\8f0¹ô\19\85Ã`Euñ|É\19\8d\ e\85\1fC\1c5ÃÏ\9eÐ\ 2\1f\82\95Ä\1eÅìGó`\ e\9c¼ÎUWzL\ 4LóÿYþ\90\1fX\84ÄZ[Iz\ 2\0 \19Å>Î\14'T\1axb=Xí\9fÈ0an\83®Âý\v\17#Æz¸dÈu¯\1fÍ|Á\10\8b>Ú?\8a©°\9d]òp¢Çå\85ïR\81±WØ\19\1a`\18Ý\13\ 1S:Zö¼0!&DÌü0\ 4\ 2\8eCB\13N\1d     ìé\v®\1dð1º¹\9c\1c>?¬Æ:\ 4mÁ¬\ 2O\0é0é\99÷#5B^\81à¾\ahc¶<+E \15÷\1d¤ÿñ\ e=*-2a\9bÇ/1£q\8b\1c\81ÄóØl:t,ßHÐÍ,\1f$|s)Æ\84\14e\80\17&ro\ 1¸\867ºõð³  ÁÙ\054$\90 r°\16t2\1f(\85\8d"\8fÎ\1c&\87ÜûdäõÓ#¾\9cáFýóé\11Ç×r\9d}ñ¢°\88â\88\vùâOÇÜ\ 5kcJ%Ûß8³WæÉÝÑÌù±\ 50(¾ò\ 4×G¿fªNõ\84/v^\99\9aO­ÐT\86/\9c\95Ýòw8¢gÏ¿ç\9b\e\9eA×'Ã)ÙÜ\8fpqpû\16·Î½V¸b\81T\ͤµdZHÏô3\81;\bÙôú\v÷Ä ¡Rmx\9eÁ\1cä=\81ß\81øN¡\90\ 4\0á\0\13t\98/F¡YgaTÂLd\84NzMr\18ÕH#B}ÿ\81%¿$\fz\ 2.\87¾\18_`îp»2,\175\8c\rÖ\8b¸<\9cIJ\1f;z\eH¹î_éâ«e\14ãu0\ e¯-Oï>ݾã÷À¯ìºïmÚUxs\10\11ó¾iX>]ÎðÖ\98ýô­q±\àr"Ënæ¼\17²ûóä\1f7!Çuendstream
+endobj
+1076 0 obj
+1726
+endobj
+1077 0 obj<</Type/Page/Parent 794 0 R/Contents 1078 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R>>>>>>endobj
+1078 0 obj<</Length 1079 0 R/Filter/FlateDecode>>stream
+x\ 1­X[oâ8\14~ï¯8o¥\1a`\1a ·G:\9d\91*m;³m¥}AZ\99`\8a§!fl§lWýñû\1d_B\bÐ\95V\vRpâãsýÎ%ü:Êè\14ß\8c.\ 64<§|ytýtôõéè´\7fyI\9b\8byÆÍ)]]õ\a4º¼Àòâ¼\7fIFÒ\1c¤§t6:ë\9fÇ\9dìlÐ\1f\85-ðÂ.\ 4Ô\170úü\r\8cèi\ e¡ç\10ò4óÛ§ô\94wèß?\93ÎÍÝõäääéçÑ)õ2¨\b\ eÛ\aï³?Ç\81\11\89%Ö_â\1aË\9bÆã¯\1f1£÷DIÍesÝ  ÷\83¼zÿís\90ß\96\9a\96ÒÁ£û?\87µú\ 4­>í?Ô~êI\ fªóþ\90Á'\ fºrÒìÓ#î\fÀõýað\81\9fþ7\8d\1cÔ6¦}\7fØC\9eMô/kßøħÃÍ£]6\87£\1eO\1d&Øììx=@®ym\ 2Òs®QY/¶Hv4½\1fpÖà\8a\8cÁ\95s\ 5?u\9eðí0æ\15\161­°JIÅÛ7´£i´²ñ3éüq{ÿ\18Røó·\11e\19\17\83^F½Á9Ê\v²ù\8b.­²N\95Ϥç4¤àgK\93NÖ¥A\97\86\93\13ÊuYÊÜÉ\19MßÈ­5\19\ f=&z\0ÕÃ\04=r\vi%Í4\95ÚÑJXKS£Å,\17ÖÙ>ÑcL\9b¤õ0È_\bKg´\14ùB\95Ò\92.I¹nÔ\82\ 6ÄÛ£z»Þ\18¶6À\7flmµD\8dÔ\865¡¥^ÊÒa)\1c\89¢hI\rºÖR\ 5\8a+\8c\9c«çÊÀJ§i*I\95\9e\91\15àºÖæå\19V¯`2K°j¹*T®\9c\82ÎV¼ÈÉ       T¸\vV\90/\7f°$ø²%:#e\9bÂ`à\8d^
+H»\83§\90Ð×F¯-~'\1d%ÁT9Z«¢À\91¢\10Nz\9dàX\90P\81ÀÙÚâZǦ.-á\1ee;ò\19#\ 4\91¯\90\19ûË\8bÑp\93©\9dO»^2ò\19*\80\ 6\84Êнt×·ß\1f[2K8ÐÂ\ 6·\80-ý¸  ø\8d\18~c\9b¤Á\9e­xLµfÄU«.É\ 2èS\0ª·u\19Ü\14|`\98\8b\18Ъ\10¹d\bI\ 4\82áÌ@p\v#eK¥\bò\rj<L¢ø\10¾µ\82¸:\86\ 4\98ûtm=F\82°Ã|:¶¶\86-\99)A¶\8c|)õº$@ Ð¹(à\0ïÍÚ´\bf¸v%\8cSyU\b`Ï'\12t÷0ã\ 4\11`1{\15¥\13Ï\fÛ\96`èUrz\83\90ý±ORÓP¦\ 3æ\0\12\8b.\aÄã~/@Û¡ü¾Çï\84Nɸ´ÝMpCJîd\1câ5\a\92ìB\18Ö\96á¨r\ f\1c\84\17\1e  \95\ 4& ¡aÇ[ËJ\ 6§çÀ\87±\ f8%\16pÕÓ\a\86\ 4§\ 6,\19\99Kõê3\r\jÑìç\19½H  \97´\84ã\84\84¸¹Ècáa\7f'TÁ¡µ~"éæUÃ\ eg2\1f\ f\8c\10\80\10«©@mNl\ 3*<)\8e}Ó¦¥\84[\80\16ÕV\ 2\93¡\16¦âçã¾\85»íb\17=\9f<nµÏÉú\80O0\14Dd\ 3\e\14ôh       g\ 3Ú\80\80\8a!\13#\bºþø!üye#e,\91VÍ$×ãcQ¹\856Ê        \87¸\1cû*\90jT¨.ʵô\891´ôªD\84|\1dÈät¸k*sQ!È¢\ e\93\95²ômî\10b\98á\ eË\96ôe\85pn<æ[HJ\85\ fó\90\11æ\16\95\a\80 cgÀHÎ\8e\8eQ\9eÕ\\89i\ 1\17\18iuer\99|\9eÅvz×h¤¡|§\f\ 4ß\909{+\0 (\85A\1d\99¢µÓz\ 1'\84\86\13Ó  %¨\81?\8böûÚ.ªÜö§ì½\99\82÷]ñ\ 6\90ã.Õ½\ 4mßE\10=\8ek©ËÞvl\93=u\7fàLB VZùn\9eà\17{_¡õ\v;t\8eæ\88\96\88\9e\19R\9f\85x´Õ ~Ó\15ºxUÌX+îíx`RLZá+¥z^LµYh=#5gR8M¿@e\1cDqD&\88fIN°58ç0ÿ¬Ñ\82\99gãõ«78\v\1dï1ÌA\9b!í:4óØý\89~C*%\85â+W\98N7Gh3®b\85ç|ß:\13ä4ÞR\1a/e\9e\13îÇèjxmó×/þzã¯é-m\90áM\13]:ðjLä¾\176ôÁ=óÂ@ë¯Ì\vólÔh\9bKc\82÷m³É\ 5C/NbâõWæ\82978rßìz\8f      !ÀÚ#»\86\r¡¨£n\ 3\r\85b~ê"<u²ã\84ǨÈ\8dƼ*Ê·TlãÑ6\1cïõ\9aä_b\89\9eQQNÆà£\19\146L  Ü\94QZ0\82z\10î-y\80\11c*Ì4"µØ0\ 1¤PƤ\ e\99\87)K\93}+ó\85Ñ¥ú\e Æð×HJ?bA\99[\87!\1c\8dÓç\r\ 6ö_\954o1\8d©9êM:\1c$ÌîqÌ Û\1fÁ×\97ñ=!;¿èó\1f\a£\88\82ñÝõ\98~\18ý\13é\r\85sÌÛ\989x2ãs½@Þ»\18àÿ\85Y';ë\ fûL\8dzµôõª¨\12éèb\84ÿ\12<ÙÕ\88Ïâ_\90ß\8fþ\ 1vEã\83endstream
+endobj
+1079 0 obj
+1623
+endobj
+1080 0 obj<</Type/Page/Parent 794 0 R/Contents 1081 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R>>>>>>endobj
+1081 0 obj<</Length 1082 0 R/Filter/FlateDecode>>stream
+x\ 1íWQoâ8\10~çWÌc{\ 2J\ 2\ 5z:\9d\ 4¥=UwÛö¶¬úR      \99Ä\90,`wã\ 4Ôûõ÷\8dí$4ju½}:é\16\89í\99oÆ3ßØßZ\ 1õð\ fh\14R\7fHÑ®5\9d·®æ­^w<¦ºÉÖxéQ\18¢\19\8c\8eº!e\92V\98\8aõ£AwìG\82ó°;¨\87\ 6\83aµ(\by²]\ 55èCwÕ@ÇÙõ\80\82\80æ+@\1a\8eG4\8fíx\8fæÑ\89\88ãL\1a\18\1d¥"\971\1dÒ<¡<\91t+óéÍÝ\ 3\93D\8fw\9f\7fÿíóÝ\97û_\83é/]¢y\92\1a7t\10\ 6ÚשÉe\16ÓòÅ.\9eé\9dHÕéük«G\9d \ f³æñÉNð\1cZfú`ð|:¹\r\16\97O§µÊÇ\9bÛ\aÂÐ\1e£\90j´VüLsb%K­\ 1°ë\85\86C8\ 4BïT\ 4¬ábJ\e\ 5¹V{i\96^\1d\81¡\86zHÍåvkÅç\89È  \ 6±Ý[\1d\89msòJg\rcL±T2§\90-6RÅ©Z\93 OÖÄ\89\0®\9dT9=\8bh\83\890@Ð\97Ù==ë,§ ?ö\ 3\ 1\90D*2/*J2­Ò¿¤q>\ 1ÄåKCo¬\9d&lÏ\83õÔ\95*v!\ 1ó¶Ü\16g\16Ûâ¶Á£¢©w|®-bö+VY£½Óy¯­C¬/\e\9aÅR\179tX\8f³ôØnrÓU\99\8c\87\18\9eò¾? ÜD\89\8c\8b\8a\86ªÚ\15"O\11\ 4\99üVH\ 3?i\8f\b\11»½Ø8ça \9b¬l|iDpC\ 2T Cb­¤\15àB\90\bZÓP½Õz\83\81\8d¤\9fyäìºG\17\9c<\ 1uÂs\17r\ fnë©ú9Ç\96n&ú\ 3rK±Èw\ eÓ\8eýU+\88Ü\aßâ;÷\1ak\9c\9e ^ÄùR¿\11á}ÒævjÛKÛÎl{Õ¦\86´ã\85\91D\93§\93\9f\9eN!\0ùTw/ëîÌv½ä0è\ eÙ6\87\85Út¬_Y\1cã\84PÛ2Îp1û×ø`m\89\ 4&×Ý
+_°pø ?X\½\ fµ_c»í/fõ\e\Ú·Pû\16j\7fÁP1£i°M<\9f¤\ 2D\ 6§\91°Á\87 ßÙXSZuD\91':Ks\ 4ñ^Z¶4\96¾jJîpX\r\1d=N\98\a@BÏÈð\9c
+¤¤\ 1\19é\rç{ª8nÓ\8cÀ9\a\9dmðL×ÉRg\89Ö1!C\1c\1d\19\84©Î@J\87\14\89m¤l$¸á©KäG»t¾§f§­\92C}/!g9Zm\99ã\ê8¦°\82\1c"}(µ7©y\ e\ 20\=\f§/ó42VîA\8aL\ eH\\1dEE\86\9a\ 3vµÑA`p÷ÑØoPð6\1d\1f\ 1m\18\82¢\82ýz:\ 5\e<2©2Í\1cóêqæ×\85çm&³\ 5j\82­\85\90µ\ 4\9cå\ fç\84\86\95¥ ³\1a\Ð&¡b¬Ð\ 6\97n¢°¢*\e}  \97º\1a£/Á6×yõ>\8dD\a\15Ñ\bVÝÐùÊ\9c\8aº|\90ý`®\8a\19@7\8e/JÿyZ>Ný7ûÌ\a\80\14ên%\9aÃ\8d       ÀKþß\91bðaW~\ f\7fWDõa-ß]Åþã¤^RòÛ¤\8e\83\\19Ú\9eÒM¡\96 ­¶¯$Gôó\11n¯ë      sPئe\91\83\9esê7Yþ:UPþÒ¶ÄøÞáÙ×'T&\90*\1f.øÔÏ%
+¼Gb\8d»Â?\90qøêîÀè¬$\1c;SÔ\16\8bb\97\1aÃUÓ\9fj=1\83u=VêX^¶Gr\ID\8cò\86"-\ 1.]ÁJ\1ci£$U|0Í\9a\8c\9bÉ\9dÞ£f¡d\99\ 4>Ñ«\15\8cáJõ\8a\8b\8a\90\7f\9c%ËceE\9b¯\18ùìzìï¨ÁpØ\rhxá\83øaòi:¡ûL\7f\95Q\8eëLTð\9dÊ^
+8":Áp\84é\9dQ\88ël|\12\9cwû]\9e½Üâ\14\86\9b­Þ\16|\7fà©\ 3{\9b¶Ó.Îù\ 3\7f¶þ\ 6\19QVÜendstream
+endobj
+1082 0 obj
+1265
+endobj
+1083 0 obj<</Type/Page/Parent 794 0 R/Contents 1084 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+1084 0 obj<</Length 1085 0 R/Filter/FlateDecode>>stream
+x\ 1½WÛnÛF\10}÷W\fò\12§°\14Q²%;@\vر\ 3ä!J[\v-\8a¦0VäRÚ\84äªÜ¥]õë{fv)ÒtÓô\ 24Fhr¹\9cË\999gÖ¿\1e%4ÁOB\8b)Íæ\94\96GW«£\9bÕÑd|~NÝ¥ÞàaBg\8bs\OÏ\17¸&S^©5åü      îaçpÁþ\97o&tA«\1c¶ç°µÊäõ\84Vé1}éßrvwùáø«\ f/N\b·WÝíëîöZn_¬>\1eMh4MÆs¸8¾mÖ\95öÓÎþrzwÕ=\11áù\12F±*××r½\8eV\12$ÌVú\1füéý2éâKºø\92»C|É]\88\ fö\93»\9b\7fßÉ\7f\ 3aÖE\ e\f¯»'\80\0Ë\b\fÈÊ\95\8eÿ\ 5\84\93\7fì\ 5\ 5k\8b\8eªu·\a¨§\11êa+èú^×\8e\1e\8cß\92\90TîuM~«KRhÝÊV#Õø­­\8dWÞÜcE\95Ú\8dÙÔË7§\94$ÜÀ£\ 4\r6\1fO¥ÁöUº­me~Ç~[9Zkÿ uÅ6)³¥2\15\95ʱ\97um\1f\1c~«*£Â¦ª\18¼àÐ\8a\82R[yS5\9a¼%\9b¦M}BëÆ·0Í\82[¿5\8eÜÖ6E\ 6\8fH\a\1eT¶Ç/å59ã\e     G\ 2g:Ìǧ\1cíÛ\9c4ÒG\10µm8¦ï\13²¸N)W¦p\12tn\8bÂ>\98j\13Â\91\10^±{ÈÁÁÐ\92a!\9b#ÚrÇ\96ðP\91\16Î3Ío\18\0S©4ÕÎ\99u\ 1(\81\8c­?Q^«M©+ï(x@ü\f\93Ç\7f\9dQ\8ex\94\e¤[X\84£\1c+R  l¼v'°-.Z«\956\9bíÚ6õÖÚ\8c¨0λ1±\9d\11ª\96\92°\84\95C*\97Þër\87h\807°¯têù\16á»A\ 2]®R(\86Lj#q\84N      \19UÖsUj]Ú{\9d\rrÉk[þEä\9f     |ú4p\14ÓV\a¨;TÑ\19iãQ\82\1cPG_?¾]Þ\12\9a\ f\f\0r>\96¶*ö$íÃåAΡXq\9fTÔø§¥àÎu¢«È~O\8dã^  \v#ãl\81\ eD\ 1Ðí*KÑù´Ôþêíû[\ 1\b\98`GÃT\19\13­Ð":Ï\81¸\13ú9S\9aB\81\8fv\80\99ß*N\beµâ-\ 6Ê!Óõ!³®Üm¿ÏÂ\92̯        Í.\16Ðó0­¦½YõòÍ\ 5%àG\8eÁ7\9b3QºÑ\94\9c\8dÏÆt«=8¹¡f\a\87=,9ÌN\17\98h\v¦ÙMà\98¢[U®\15º;Ý¢·\99iøÚT\19t\80\96+Xåz\1c^\97jÏÅpÚ\8b\1f@ÒwÅpYy\19Í\ e j\9d\0\13\11\84^\94´·\r\95\rJ¡²LZ¯ã¸Ýq-bÃ\93+×cp\0\8d\11¼\8e
+9] B¨it1püªeâÏ\9b®Uá~Á\17©XmÝ\15\9c}Àê,jhO\94 5вf·³µ§¯i¯¥å\1eÃ\1aõë\a\b\8d¨,z!`»«õ½±\8d°7\19_\8c\93\ 5m\15'        \16ìT\r\99b\99Ët®\9aBx\ró\80\12ÜaP¶
+\12¯ª=Ù"Ã6\9e\ fÑü Éà\f\80à«ú d \12Ë°\87þo@%×l6\1aB\9c\89íf·©\15¤\10\ 5\89\81qý×P\84\13é\ 4D\ 3párO\85f\9epá±4ðÜ%\ 1CÏ+û\9cË¢0'°\15\ 2\15k\12FT\ fÔw¡çâ¸{ö\18üã/A~ü,(Ä'­¹ãY\93\84~ì·Og\a>oðR×HZ\ 6+¢*O $B\17\1a¤Ãle\89\7fde8¦~Biâp\8bl°,Uï\977pÂÍ"ÄA\19¯--߯Zäè_¤\19û\1f\98\96\16\a\0\bMŪ:\88:\94¿õ\e_¶"\13i\19´á       »\19\83>\8f¥7*\r¼PÏ\98\1d\81¯&Õ4Â\e\1dzm¹\1aÄ\92Ù´áñ)\ 3^°Ì4fgÁm½´\98þ"\96=\99\11ËAk0\19\90_­w\85Iù \80\10df[D\80Á\80ò\86ÉÏX\fܶÈð7\9dJa\b+9\ 3\14ú·8\ 3HW÷\ 6\8cà\18\11Ò¥£w&­­³¹\87ç¼AÓÂD\9bElã6$°oàwW[oS\8bÃI(\ 2\12àñ\8asQ\r\aè
+\10Ä\9bÔì8\9fp&\80\87\9e=¡»\10ugãI$\1e\1dòÆ7¡æPÆ\81[q6ú&ø\14\ 4{&©\r
\13Í\86¾ðáE\ e%\ f[\83S\10&\1fÈÙo©ÇÃ`à.mOr\9fQ\7f>\ 2ör\16:ðð\ fñ\ 5\94\11\96\94æÂ\10ÈD{\1eêÔ\ 5\8eã1÷<Jt2_\8cñ·Úb\16Î\8e·\97ï®.éÛÚ~ä\13Òu¿\v9\99QØ>ZLñ']vüå¹yº8Å4\96Í\17\80)ýÝÑ\1f\91äTËendstream
+endobj
+1085 0 obj
+1519
+endobj
+1086 0 obj<</Type/Page/Parent 794 0 R/Contents 1087 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+1087 0 obj<</Length 1088 0 R/Filter/FlateDecode>>stream
+x\ 1­WÛ\8e\1aG\10}߯(íKp\ 4\180\vl\14¯´ëK´\8a\8c7f¬}\88óÐ0\r\8c\8d»gLøû\9cêËÀLXG\96bKXàîº\9c:uªúëÅ\90\ 6ø;¤é\88^LhU\Ü%\17o\92\8bA\7f6£ã\87Ùà\v\8e\8døs<\9bòç¸?&#iÍ7ð3ÌÔ\1f8þüí\98\86CJÖ°>\99M)IÝÿ\ f(Yun×¥4Tn%=ÞÏ\17d¥ù\86ï[ai)¥¢\95VëlS\19\99ÒAWTT¶$©,~À\1dQ\92Ès*Äj\9b)ii'L\99­²\9d(3µ!­\9cY%˽6_\9e%\9f/\ 6Ô\e¾è\8fà¿#`àÄö>+·î´HS#­%½Æ×Ì\9e\ 6Õ'º_s\14æôWÂ!A\vQ,E\f¤Kë\faeÎ\7fËoã Ý?PtèOÓå\83É
+a\ eÞÅ¡q        {2O}L\92._iU\1a\9d·,?\b%óÞÍܧۻy0ºÔ+\9dÛÞMòê¡wãà\8d\ 6ÓLäzc9ÆÇL¥zoéú\8a42\vßæ   ÒM4\95\12\99\88\96+\9fD(\15\97î$\ f\a\98HÑa»Öy®÷\\9a\1cå¢\12Öq÷ÏM®\97"ÿ\v¥_\95\19\8a\ 6\v\U[,û\¡\96o@\8bJÿ¿>\7f{UÓª7\9a\80\82(,ìÛÈ¢\97t£D!9¯c\84¿ú«GF\1e¯n%Xqî
+\17Y\82"\81©¯ATo\98YÒL6\90\91}f¥=ñÛ\ f\89Ä@çº\f\1cvDs\90¼û¸Hhþ>¡»7´x\93\ 4
+ÕP0¯\90\8dwÚ(\82\0\15\8a§\85\1eB\92ùºf2\80*i©\ 3÷/\9b \ 6(«ÝN\9b\92^ÒAÚ&t\9dKÒ;W2¡|\85é¼    ßÓ¡\1a\8fF\10¹"U,ÓVÌ{n¦µÈrf\8c-Ñãm(\13W8ni´:í´µÙ\12\95TÂdÚÒ\1aÕ@ª\ e£jG+\83#d«%´\81\96\ 6ì\ax}\82\19 l 0©,á\8fytöN+Àh\81\15GPÐ\eV\17\18Q\\96ØT×WÝ \14\fXüu\9eDáà걦!\11¥ËS}\12\ eú\13ýb©s\9drjæµ.à\91\e\17\99 \9d4¼üG*uú\1c|\b=\84\11\12h%\8b\eëªàÆ\ 3\ 6À\8bY\7f\12\86Á\b\ 3\ 1\19¸Yðüí5\rÑ\97¬üãÁ¸?khÿðª?éÓâ\bò]¨\ 5\13_Ðãû\ f¿ÿöáýÇ\87\80Â\88gH\aòÄü}ª O\96£\9e\17ð\82Ë`ÕR¶<v]\ 1\84z*y7\8c\94ÄTbNú 44­Ñ\94Þ0h\1d\10£wÂò°sYâßO\1dTùT\ 3 2?£û\7fnye\v\96u\fí-(\ e\b_\ 5\87A.M\17²YnuµÙºd\14Õ¥r¢à,DuÚåâ\80    Ë\9d\8fI"í§g±§â\80d
\7fy\92\ 5g\85\11\1e     ^ä\88\19\93\v\97\87ôl\92Ðw\ví[\e]P®W\82G´Ë<\ÄxE}ÑÕȬ\95«oÊÀÀ­ø\86¤cw´Æ{\18\98<Û7FW;Ðþ\11\12­+ô\ 5*\113\ 5\8bã\ 2áàK]\8f´¼6Ã#\89\85"ÊÃ^W\18½ \88PÈWs¦)ÕN»T)ÁZãhÀ\87\ eѳO\12ß\ 12°ò\89µQ¾/\1d\88Àz\87µ\ 3\8bMÀÛGÙ\82Í«C!¾`\0\9e\95°£ô±à\89c\98Ñm\9c\80\1f\93\176ªo\99Ѫ\90ªt\9ïÞ-_\8cD\83æ \9dW\7fô¼;¡U~há\8bK\\93ófw@§\ 6ÔÍU¿z\84¶jzó=pÖP·å\94ïsë\1c×\8e\ 2sÎ-\1e|>.\1e~Ú>½i4\8383\1fY¨ÂV\92Ànó|ì!\vÆ\82`"·\98\F®¥1 Ô\81\19ÇÁ\9ck\1f7Îx¹Ð{\15y\85Ý\14\9b\93I¥i¡\0bòz,ÑInÏx
+\15·\v²Ç\1f\82e@×,îCdzå÷/
+\7f\9aÙÖèð\bÃS\82å;\9el¤ø½\83\ 1\1eô_è×ï\1dÆÔÏ\91t\8eÅerÅ\98\1c\1f!=\ ewâß\ 1O\17¦\10u\11\1aÒùï\1d«K\99{\17`ê}­2#ÛÝ6\97\7f\97]71B±O\1f0NkÂJ\17Å/L^Vû(cn1X¡i±éù\1e\16Ù\84¾o×\1f%­»\v\8du\vE:n\1c\14"â®\ e2\96òZ\9eY´µ%·zÅ=\ 5\ f\84zr~êÔ³\ 6\9c±m\15/%K\82¦\rZÐÈ¥Æ\98CÑ4\14B㹧º\ 4²gåOÖMY[Am\ 5m´N)K¥à\8b\15\84Ð\19Æ`rï\10V=\1cj(\ f¾;\10Z\19·Äüÿ%ü,¼8\86\93i\7fH\93ë\81§ÑâöÝÝ-F³þ\8cG\fÆýªb-Å;T+\8e®ç\8f÷¦#¼yÓÎ\8fì=ã)oMîÚõ\94maãúãâ\1fc\8a
+Oendstream
+endobj
+1088 0 obj
+1553
+endobj
+1089 0 obj<</Type/Page/Parent 794 0 R/Contents 1090 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+1090 0 obj<</Length 1091 0 R/Filter/FlateDecode>>stream
+x\ 1½WÛnã6\10}÷W\fò\94\ 5jÇv|KÑ\16\88siý\90\ 2ö¡Û\aJ¢lm$1\15©\18þû\9e!)EVât\81¢M\ 2\863Ã3sÎLþê\8dh\88ï\11ÍÇt>£(ï-\83ÞMÐ\e\ e\16\vz})7x3¤ñøb0¦Éb\8e¿'\93Á\84JI        lñn
+ãw\9f̦ç\83Ù\9b'\88\82c\bݼ ÄÙí\90.(H\90Î\fá\83Ø>\1eR\10\9d\92ÿ\8aU.Ò\82\8d,ég*Ô§à[oHý\11Ç\ fâÆ0S\91È^íöR\1f1|.e"ËRÆßc¬4eòEf\88<\9b²Ã³Û  \8dF\9cs\7fDýñ\fð \89k\85Ä\fÅ\8aÌ6Õ\94¨\92r\ 5¬ÌV\14¤
+Ik\91\87\82´,_p\vU\90\14Ñ\96t\15\16Òü@°6[¹§]\9a\13%þ0[g¢ð\0\aøÔn\9bâLÚ\ëÜ\856\8aB\ e\0\81°T;\84\ex\10\90è\84\13\r`wÒ6<¡gQ\8a\2º"ËpÈç
+¿"2$4\89÷=\13Yg]8O(\12\95~EߧYäaLð     h"      \97>?\92\99\8cL
+Dð£\8d(MõL¢\80)'Z£ßNRKS§¸M7\80©P\15~i\86^\18JM]v\1fXoU\95Å\80´\80ßý\9b¸º\8bÐ*¡½ªh+^\90fA÷\ 1Ú$Ú¦¨!2ä¬\Õ\4¶Ü¥zË7û 
+|®°n#¸\8cS-ÂLvòt\1d\92\94*\87§Håi±9\82<\85{t\921lÁ     %\8aëÆïÔ3C©       wå\a\7fl2\15\8aìOX{\8c\13þ¼\13Xçá REBI\9a\91\9f¶xÙ\1fO]çü[B\1e%n·\81>"yÝ\10°\19r¢V¸X\9aÆ\8dL\8d!NV¥ 8g·\174Bß'P¼Épa/ò*1£é`> µG\12}·dÎ0\8eÜ+týpw¹ºwpÔ\9c\87î\8cçÌ#ß%\ 2\91D\1có\996Ã5÷\83 /i\113¡ÐC×NÆ\9a>È+m¬d \90Ä-\7fpÞ²®S¦C!¬éMË=Å2\11U\ 6\1d9\88øX¦¹(÷uä+U\98\12\8d\ 2\9a³:áz.£\ 2Ü\87¨\80ûºQÖZYÐBÞÊËoMZö`ÙƧ\11\17\99\\10¿b£\9d\8e\85¥\14O\94&Ý«\95r\93²\96\ 3£Æ\7fçª\9dh÷Ò,W\ fk²©~=uuùe´üéë'§\94_V÷kÔ\f^ELÊö8=^_u\99}\8b¬\1dy59]µòÌi°D\83\ 3\ 6£\86\1fµ\8a\a_\96¼¹°Äãz\1dV\e"i5õÃ{\0c\8dZé¨LC\19\ f \9f
+¨=±\18¶½ám[\9f\eÁâF±\89\1d£{'ø\11òSC÷ÿ\98ïÿï\0ö|¬µØ©÷!®      ¦\85±\b63ÇÎY/ïè    ¯ïÌ\b/ò¬ïuÕ¹)0\91:0Ûí =\9fÀ|¨1hf\9f\99)ª\[\81\92§\80©Ðs¶÷Ê\18ÖhÛ&\11K-»\fØIà'{'ð!I ù¶ï÷Ä\92TV\ 5÷1bsÏÛM$\96hîÌ_\12ihé¢×£áäöáóÕêþWZ_Þ-/)x åM'bðÛ\rÝ]®\83\9bÏ'\18Q¸d\97\b\16ü\16}\ eïÅùå2\ fY\ 1<W½´\ 1\7fl 5E\9d¬0Z|BWx\ 1ZnIê$&²\9dØk\1eÀþâlùfÞún°\13Ö\88'.\bV\1fl\fEñº1@UH\1aö¾²5\8b;Aß%ik2¿¥é?\8cåWf¶\añÔo\9b<yü\ ew8 x%¦CÉp\1f½;W\89\8e\8cÐ9\8fy·è\1f\85O`4\9b\ fø¿\ 6lç­5ÝuËc©¾aÅÀ´\88ª\BFy\ra¼úîTß\1d;ýî\89;\99O°Ýs¨Ó\8b\ 5; ÿ½÷7ö\ fí endstream
+endobj
+1091 0 obj
+1223
+endobj
+1092 0 obj<</Type/Page/Parent 794 0 R/Contents 1093 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+1093 0 obj<</Length 1094 0 R/Filter/FlateDecode>>stream
+x\ 1\8dWMoÛF\10½ûWLur\0[\91d˶
+ô`£    ` QZX\85\97\127&wUîÒ\8aþ}ÞÌ\92²´V\8a"\88mQ»óñæÍ\9bá¿gc\1aáß\98n'tuCy}ö°8ûøyFãkZ¬ðÍÍ\1dþ(h4\1c\8dF´ÈÏÇÓáÝ\90>»&7vM^Õ\99¢à(Ó\14JMµòA7\1f\16ß`ã\9aÆãhãrr\v\eçË\92Ïå®Ö^\ e\ fâiÊ\1a·õº\19\90ñThܯ\8dÕ\ 5e;R\96t¥ó`\9c¥Mãrí=µ\9e\1dã\8e*rxóC¢O*/÷\aÙù\88.ÇWà ;ݨüE\aÊ\9d\rÊXO\8al[gº!·¢\8djTÍ\ e=mK\ 3\e{ïø¬\ 2\ê\\17Úæ\9a\9eÏ3£üó\aÜ/\9d\ fäK×V\ 5\95êU\93±\9cNâ·\8f\eá=ì`x¥Ú*Ð\93àÕz  èU7;ªÜöÐ\8f²\ 5\8cµ\1eÏùPo\ 5\809úÖ±Ê\\8b\9fvç¬Æ×^\ f\93\9b!WêüqE;×ÒVÙÞ\1d®n\11ã\81­RÛhÍ\ 3\1a®ÛÀÁ£~ÕÕ\80Ö\95ËTEn#¨ã\9e¯³!à[q\bÈÞ¬K \17Aì}÷`?\86>S  x\84äÿ\96r]]ÓV\0«Õ\v\0\v\12\90ªª\83 \1cà \84\0L\1cBjÈïÀ¥\1aÈëï¹Þ\84þ)#\98`\1dOú_\9e?$XÜ\1f&\86\82O\92(2\8d*/WË5\0-hiìlzA\19ðµ.Ð|qÿ\84\ 4îå\ f*\\rþ\b\8f\1aWU\88\8f«\98\ 4"\10Òդǥ¯ÉBZ㻩Û\9a\99í\93é4\89ø°zûæZ¡ÛôQ3 \1f|PMh7\17\?|ê\v       Î®tÓ \7fbwýwA\93ø\a\aÈ9ÒtkP ±.4Wä+\14\1fä+^A.µÖ$5\8bÕÚ¸ m0`ÎqWs«\ 3dÕh\ 1u\1f^â9¹$ÄaI\ 1Hû.\ 5iBI9L]\90òd"Ñ%¶°uÒ\97\1e\96\83\1fP\10ø\ 5ù\v(\fͦä\1aT3q\8dg\824\9a\e°â\16\7fÔhÀ\1cÉø6³\806C\92\82±\840Øg±\a\19½!àuåØèƸÂÀBÅ*V$.Y\8d\8cmå[        S ~_f\10Î5\ 5¸\ 6óQ9%¾\18Ú1d)åN\12        *­hÐQùøþ \8b\1c½    Ì!|®®µ-À#©\1fK\8aª¼\13\10ÞòOò\8a&\a\1cn\87\ 6¢Vh\94nPH\9aÜ[]2ªo«ãX\bHH¢ÛÒU`\99\14º¡?îç\80#q¹ÄC0!\86ͦ%JÕ\95\8bú\9aàÉmíÛ\0Aº®R\ 1\89ÆZ¿\ 3R\0Ù8ïM\86`\90\1a\8b¡Y·`\16Ó.v)æ\17¤KTO\ 5È\16ôê¸f'A\97D{\10zǽ\98.ÀÄ\95ixØ\88ñX\888>Û\rX\8dîìÆîIã¬]8Ò\89©\f\9e>J¹û\16g\ 2é\ 1ÓN\1aîTzJ\98ÓmÐ<\81\11ë.F´B³ÅH\15ª!:~à\9a¹¥ªF«bÇ\ 5N\1c\9föÆÒ\1cûC\99J|±(4îÕ\14<FÛ\0e\ e&\ag\8bÖ\16Êæ»\8b~<Ã\ 5å-Ô\10³ðÈxâ¸Û@hÅ\1eø»O\8b3l<4¹\9b\rïèúî\96ÿÆ\7f\94|\95.H\93éMº Í\86ôE½\1cìG\bã\9dû\13\v\12P<>\17[Ño\9c\8däã¾È1}\90/v Î.FN\95Á&Ä\8dRcË0\eð4\92Ù\13ZV\1aX\ eò­\1cK\95Ë\81J\8a\81\ e\93D\14\8f\8bú\ fz\9eOËÌ\8e4W9\1a\8c%=\r\14Ë\1aF\90\84\95èËoÄC\ 5KRâ¯_+àè`A\92Õ\0¬\8d"\ 1µ:­o\91~®Î1tbz¬OÝN6ÿº\10\95z\12ÞI\17\9e\b\98¡TX\a\9a\97uãÐN\ 2RÙå&\ 3Àò\14À\ 3\95F>_Ðï²\r¤á,e\12\8b[Pô=Hq¹ë·ä~ï\8dë\10ræ"¢\0\1cY§[ÊZ×bý\84\12£¼Ïçµ*Ò\9eAðë\12C&nN(a\85\8d´kLL´Uãê\93Z\b\80\a\88\11Ó/V\v <\88K\ eW\1a\1fjÈXZ¸\9dÍËÆY\ 3Y?¤_\8aÆÏ&Ð{\Äé#âX¯5äîhÖðé\83í\94×OÒ@\ 5¿PZ¦f\1a\1e\vsÜ0\ fögl\f\90\11Þ\92Þ\86שáíh\8d3\91ì°\8fZütóJó}##/¶H\ 2ÈvSáùÜؼj\8b½$ð\8b\ 4âÉ+#\95í\98\v5\8fo7\8a\96\8fó§î:çÙh\f)\14v®ÃÃãק$ef*7lD\1c\12Ñ\99ååÇY\90#yg\12ñxg\94ÄL·\ 6ðdÃöe×x5âA#\8añ+ûýøù®{±\eßÜ\ eÇxA\9cñkÇÓý\97\87{ú³qßð¾\86þÈ[&-\84ÊIû\ÆÃ\97·\13¼E\16ÿû-òúö\1a\ 2,Wf3ö\ eaþëì\a×9ã\fendstream
+endobj
+1094 0 obj
+1575
+endobj
+1095 0 obj<</Type/Page/Parent 794 0 R/Contents 1096 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+1096 0 obj<</Length 1097 0 R/Filter/FlateDecode>>stream
+x\ 1\8dUMOÛ@\14¼çW<q!HĵóMo ¶\12\ah«DâÂeco\92\ 5{×Ý]7åßwÞÚN\9c\0\ 2!Dpöí\9b73oü§\97P\8c\9f\84fC\1aM)-z7ËÞ\97\1fcJ\12Z®ùÑt>£eFq\14Ç1-Óþ\8b©,å&\159\15ÂyiieÍÎIëh§ò\9cV\92*-V¹$oh­tF\822S\b¥ÛómÁ%    GÊ×eFç/\\9b\eó¬ôæbùÔ\8bi\90\8c¢!º÷\8d&¿å/¹­«VZú\88øÌ\08ÛCIý\bO\ 6Ãi4æ:µF÷4WR{Ú\8a²\94Ú1¬\8dÄ¿&ÏÈð÷5ºÁNe²\81F¹r\1eð\0\1eßW\18\8e\84÷²(}(\17i*\9dÃ7[ã<)\1d\80tÐú­ðÍ\15íxG¬\90\95Îä\7fÁ\10\97þæöç\82´($ã   Å|ñë\ 1\87Í£á\84\ 6£«hÊ\13Þ®/\ 1c'ÿJ{I+ã·äD±\12\ 1{\90ª\9e\1eh-\84\16¸\1f\17\84©B\11@è¯<\ 2ÄÞ\13÷\91Ê©Ñ^¤>Lй\8dÛ\ 6YsÃ\8d\1c5h¶øhå\ 6¬J+³zFåODVLé±U\1akÁ"\18\8cÙ
+½öÐßEY{ÊÊT*Ð\1c\189\87×Ê\93\8e"Ë \ 5P\ 6#º·\9b\1fth]Õ1Z+Ã\ e$\ 2}cµ¦ña\9ewÌuê-ö橹j²jCÖ\94\r:V\v\9e\18¸í³Vc\ 6ZÍö\ eÄʸ\13Æ:"*,Ã\91y÷"\81ïF©\8eÇê5
+xyÏÛ\84p\92×\0ûrlù\96êÆòß\97=\ 4\10M\92Y4§ñ|\86ÏCüÂÒë:°®(Á¯\11eã9oþ!¯\92I\94Ä\11Ý\eÏMMåyÇE\96"»¨Ñ_\86)\ f©\a~\87\1czX.
+\16CÜì\8c\11XÓ³ø\8cVÂÁȯ®¢ÇþÚX\92ÿDQ"\ 2\91?H\0©3\98\8fý\11?^°\8d5_[{Ôy«\9e堠˥5\bÐÂED\ fHPÄ+ñ­\ fÀ°±¦*Ù©@¢\8dÇ*È\82m㪲4\16#Q\f§wp!ÃöÍø^\10ÿRç2Ó~Ò8ì[È\b\94\85Dâ<æ\86;£Ï\11Õ@\10qM#È8¹úP\90Ñ\9c\83êX\10lÐ]\95{\15\b\85µ@¤òÅo¨°\b\81¦Í®\1dÒáM\92n\95\ 6\ 5ÁsE{U«\93Ú_     \ 6k\11áe$Áþäáı\1e'|hÉieXx>Gg\87º32¥Wx1AXW¬",!ÂÛ\10ÿU\9b
+ÖDA\81þ\v8¼=ðØ\9fÀ\ 1¬e&½P¹ë\929\1aMàé·Ü=o^ÇÉt\16ñ«\1a\ e¡\8bë»\9bkúeÍ\93D"\7f3iUà}'\18\1c\8f3¨«\ 6uYÿÓû0\9eΣ\19\16
+{\90Äq#úïÞ\7fËü\92\98endstream
+endobj
+1097 0 obj
+905
+endobj
+1098 0 obj<</Type/Page/Parent 794 0 R/Contents 1099 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+1099 0 obj<</Length 1100 0 R/Filter/FlateDecode>>stream
+x\ 1\8dWÑnÛ6\14}ÏWÜ\97¡)\90(\96\9dÆé\80=,ÁR\14Ø\92\ e1\90\97¼P\12es¡H\95¤¬ùï{.IǶ6\fCÑÆ\95ÉËsÏ9÷Pù~VÒ\f\7fJZÎiqCuwv·:»zøLó\19­Z|s³¼¥UC³b6Ã\93úü~#ú \1d\957\ 5=\8b®\12ÔK×Z×       SKRÞ\ fÒ\7f\15k\94שÆå¢,æ¨r\8eMeA÷¶ë\85\9a¼ò\9aÊ2¯\9c/yÝj#sq/Ý\16§\r^zZÝ\7f£`)\bý\16\7fbQ­\954¡ Õfð¤ZÚÙ\81\84\93\14ÜN\995¯ò\12¨ZRa\8fÓÓ(µ\8e+ýÆ\ eºa´3º,\17   £\93\1dÕ\11\ 6®Ò;»v¢ó\146"0\1a|\90äE'ù«`k«\19\84¤Îú@(Ñ(Ô\10[¡´¨t\\94ö\83)j\15\9e\ 4'\8c\9b\9cþ^\9f\9båNÚÐ\13ö\bcq¢\8b\1cTÂË\86\9eÿ¸CsÌN\91kÌo
+\10Þ\9c\7fM<\8cÂDìA\ 2\92X\veðÓÛN\86\rs£Õ\9b$A\8f+.ÿÒ¾¬s5îÌDzF\ 5\9e6b\v°\96\1aåc' \87ª!D ÖLÐK\15\9f¬\f×Πé\89¿\e\15¸c\95:±KBT\12|2 \81c -xkT\vf ì;¹ôzî\87zCÂÓ£\f\95\1cÔëGp2Õ.\89\16\9d\15\ f\0i\84ú[¡U3eé\8b4ÒÅã\18\ 2¤1MÒøÄÛ\9e¼ê ¥\ 38pÁ\9aÀ\ 6N\8cï2\92ï¥l
+\8a£«öv£ï\83
+rÂ\93 
+¾j\85çI\82ä\86\1e\1f\9e/Hè\80½ë\r\1e)OPvG\1dwÝÈ^\9aÆ\93\8dº\80Ñ\1d6vÓ\86\9e%v\b\8d\83m\ f\83\1ak ÅaÞÀF\18%ôMí\81Az´[ÌÃ\ 5#\88NPæq\85>L´
+Õð\9aO«'=ä±\87\13
+&» e(Ú\94çDÒh\9dÇl~%?\80\9d\1a\85j½fC¶¢\ e0\aúd\91\12\9c-x\86?S\8dÜe4\e6NNß\b×\8c<\1fÜBã\14Z÷<\97\r\93Äçl\910\16¡\90¸ò\ 5\1a4\95t\ 4;y\7f:9kVK\170'P¹\9a\1eÈ$Ê \ 2ªp\9bQn\1aá÷\13´>\8aòÛê\fyI×ókDÊõí\12\9fçøËÓ¼\8f×2Gãâó,\ eí!`\91\91ó\82\9ezmë·\98\8fȦ\ 5¢7¦ç\9cóó      Ín\95\1c\99\92«\87\7f\84\9ar\90eÀ¤ÅXáÄH\81éi-c v\bl\ 5ÆZg;\f`N[X\1c§§\18\145JÄIJP\\ 4¬\ 6\99\88\98ýê\890\889\13<d!¸\10-`rmß[\17\ 6£|P5W~ÃðB£$TBÄFh\1d²\1ag\v\"pAÄ\8c1Á7,¨eYØ΢®%Ps¼gh\13\bl ì\8bñ%Ö\8e\17Ãâ\88ôC/\8d\b¢ \17\96/9.a\r»\1enç²\19\15§\14ÆÊ\1cï\ 5\ fæªÖÖO-rLÐ\8a\ 6\vk6\8c4¸ Ù\8dÇwe\85\0jUH\96\81Èûø\8e¨\18\83\93Zbüȶy>ÊâsQÞ"613#ÆÚ9L\15\1aóCd\18\8c\1f\13\1d\99\86V\11
+\9388\93æ£BÄÊV\f:\ü\vu\8c\1a¡¹_Þ¶<RP\e##/©Ú]ÆO\84[\bEQÊË\10öjà^Ç\9dÈ©ösr秣«=_OÉ\17\9e\a¡\13\89§.Îë^\98\ 1\8c]\87ìKfà \ 6% t_\ 3È6väàCz\82ð\ 1\94àÚ\0µõ¦\13\ eï        È\1aÜø,4.\8e;~\ eÀ²c\9f±4Óþ{\ç\7f«N\ 46\8c Åì'R\1d\9em%`À\8b'\93\ f\91:\90\98\89â\10^#~ßaEôlÛ0\b=9ï¸6`±Ï"ùÖ5\1chP¾\13k£ÂÐH\82\93\ 1\v\8d¦ë\80)Çy#¿\90\1c9ÖÉF±-R¶6\16˦\17Å7'·1\eÁA\8a¿l,\94AF\8d RÐ\87Vàý óü\ 1\1fxòs§é?ÈPèÏ µl#5\11\86\ 5T¼åL\1a­Dý\86¼Æ%\16o£ *¥UØñ«\12¿\aÆ\94WáCÌðt)\8cÜ':AϸW\7fåkÕár\1d\8a h\ f\9d[Ý *\8emÔô\85 µZÛñ$\95˲Dâþw*/\97Å\r\12w\12Ê\88åßa5=?NçSëÆ·×8À\89XÄ~ñ     l\1a\89y\15½È]_\82²Xèõ\9cß\15¡£Þ!\13÷®Æ\å\91Ƽ¾\9e\1f½\16°",\ 4Sd1\99ÕnÂs\9ekºd\97G_ø®*jkØI\86z¶&¿\836\12\17\9dö¯\1f!)r!\9b)£Úã@t\1f&ÿtð\816\9d}õp{\18ñÅ2½\81þß_\12®on\8b%~ÉàËmVr+¸:ÿ<û\ 1ÝI\1e\7fendstream
+endobj
+1100 0 obj
+1536
+endobj
+1101 0 obj<</Type/Page/Parent 794 0 R/Contents 1102 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+1102 0 obj<</Length 1103 0 R/Filter/FlateDecode>>stream
+x\ 1\95VßOãF\10~ç¯\18åå8\89\98\12¨Ô\a¸ã*Ô£\K\1e®\12Rµ¶×ñ\12Ûëî®IÓ¿¾ß\8cm\92ø\90N\15\ 2¢Øëùf¾\1fã¿O¦4ÁÏ\94\963ºXPR\9eܬNÎ?Ïi:¥U\86+\8bË%­R\9aD\93É\84VÉ©×!\98jM!×T+§J\1d´£\9fÞ¯\9eqìÃë±ñl\11Íqð´Ð/º\98\91­\v\9bl<ýLÁ5º½{_äõn\9fÛ¦HÉ×Z§\94Ø*i\9cÓU \95$Ú{
+\962Sh|È\15¾t\9a*\ep_YÚªØÑÖ\99\10t\85ÛÎÈ7INÊ\93ªëÂ$*\18[\91×î\85±û\1cG=\83\98Ðxz\11Í\18èÓ©ÑQw©}>ê\aeªîù\14Ý~»íÊ\8f÷\8f§{\938ëm\16è!ËL¢ÛG<½çâ\ 6 \8bÂn=%\85A\1fÜÁ ¬Ó*\1d«\9cÿQ¢\12L5±µA\8b\19\96\8cøØíê\ 4\87«%þÎ/ùï\f¿\18CÖÒvES\f\9diû°hÛÚ\137]D³è"¢\aÌ÷]¦6ºçä\1d>ÈxÆ\94êÚi\fK§ß3Ä28}Te¬\80³B_\1ed\1c\8câ\1d­\9dªD\1eª{:ms]A\ 2\8epLf@\18\f\84\90YG¶ÂÄW¹Á 0!LÛÙ¢\0ñ\8d\aK\839±Þ|\19G¸-ë\ 1\8f¤~ßÇ(¢»\8c\ 1Ï\81Úk{Ùí´\1fñ@+¹\83¥\13tQôJî±\89®ÀZ©v\83új\rÉx\ 31ï:\9e\18\11«\91R\15\94ô\ 3®\ 1FW^Ø\82¶z\13ÜV*\96ZÃÁó\1c\v\10\b\r\88\82[e\12fÓ}\12@ÜÓ¦²[Ú\1a®ÀR\8fuç        \8c+s¶äYvM\f\81C\83\14L©¥qy\82×8M±YS­\1d\88(U\ 5Ý\9a²vöE\97ì7\98\ 5_î¸\e'Þñ¯ÃÕÜ\v¦Ç´u±ՠf\a\1eÜcÎeS\ 4SãHï\ 1\fw\8f¿g õµL\82m\f\80\81é"\8f\84ÙÃgå­Á.\8f|P3±Î5"äC¯Ì/.~è\95\8b«+\89\80#¯À)\8fH,Ôj\9b\94¸8\fÆñL\1c±\92\1eYO\8aª¦\8c¡t8×\1f\1dE#èF°£Á\0úT\96é¤mð\90\ 2\9cT´úø\95båA,ç\15\9eW\98\8d$æAX\89\ f\87*\ 3\947\v·¦m<B\85qr\82\v\85±\r93Ícæ\fUU\8aZÐÑÖà\ 2\7f;~èº?cI"
+ñå`ì¯\9ed\ 2ßB4:\9eÅ\bõ\13\89\9b6àö¦FýF\15X*kXJûÄ\99\18\88\1e±Ï\96FqÄ!£\Ã\87ÃüFp¡\a]A\1aÈúï,øËÁÞ:FDάó\96\9e\92ó¬uFj@\11v\ f\8c\81òp ;4\v®       ¬Ä~\17\96X>\16«\ 5$\ f\ 6\94j\84b
+{\ 5\ eÈçÆÃ\8f\1e¦HrÎ>\9e<V\1c´Ð-Ö\96#оã4F;\9d\1d\ 5\ 1v(&Té°µnóÖ°\8f:c%ýõÛçÛ/×\7frÂ2£\1c\13¢Fd@)\vUzæKÈ\83µ\ 6:\ e_Nµý\08«Këà³\ e\a¢á\9e³¢ÖH[\8d0«­c²xC§)û{ \ 1¼\ 4\1c \eQj\e$J\8bOöà\81%\ 6%Å ­\9eS\a\11´#\84N\ 2é\7fêBUí¢¿£\½°Ò\11÷\f^ÂJ&Ð¥Ê~i\ 3ÉùÝWòA%\e\1e\92Ǻ\86Ò\au=\88\90¤Jjºþøk«®n\1dO±jç?XÇÓÙU´8z\8fÂ:\9e\a¯}oþ}ã\8d¨O\97>dG2\1a¾wÔÅGÇ(´R¨\9aS'5~#ËÄ\9fK\86úÖÉ\1dOGW$Î\99uUÚ\86\ 3?\et,K-ÖÒ4\96º\87\19\1c"       \19ày\9dC\86\9d\7f\1fïoúôðôtÚ½±!ãpAP\9c½~úÆæ\1dÔÁ]ÜXìÔ\16ïL  Pn\8dÐ\83~8nðÅ\8b*\1a\16-¿Ø\ 1p\17\8a±^\9b
+\rbW\bF\é \83pq[\ e\9bÁY\1a2Iùä ð6·Pk\rÚ\11-²Bùéݬ\ eò\ e\96Fê Ù\ 3¤gâæ\ 1\ 2+ðúaÇZp`½\ fêr\15AÊøbV¨\10+\b\98@±õùçËîUzºXFSZ,'í[êãõýÍ5}uö\99\93M\1aÞ×¢z®3no\1f/gxYOOÿÿ;ß|q\19-ñþÈ\87'3~$TþûÉ\7fìÚë\1dendstream
+endobj
+1103 0 obj
+1411
+endobj
+1104 0 obj<</Type/Page/Parent 794 0 R/Contents 1105 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+1105 0 obj<</Length 1106 0 R/Filter/FlateDecode>>stream
+x\ 1\85W]OãF\14}çW\奡\ 2o\12B\b\95ö\ 1º»ÒJ\85nE¤ªU^&ö\98ÌbÏxgÆ\84ô×÷Ü;Î\a\ 6i\ 5H`<÷ãÜsÎÜü8\19Ó\b_cº\9aÐÅ\8còúävqòáË\94ÆcZ\94øÏl~E\8b\82FÙh4¢E>\¬M ÷¬}¥\9aÆØGÚ8ÿ\14h¥C¤ÍZ[\8akM¡ÑºÀk%\15&<\91²\ 5Y\1dùMRy®C åñ\96©M¥ü\19­Õ3GBÐ-U&ÆJ\93.K\9dÇÓÅ÷\93\11\9d\8f/²        \8a\18¾\8eÏá\9dÕ\84zê6_Ó£×*j\8f\ 2TªÂ¡\14\9fu1&³lÊ1\16(¯Ð¥j«HϪjåüxv1\9f\9eѪųã"^\1aíM­mTÑ8\8b:¹QôXpÞ­\8e\14\1d\82!imð\80;wM4µªRè³^ý\8c\83\89\pe\9etµåR\11\ 3Ç\ 4¾TÎÆT|\1cPHCxk\ 5è8kØ\86¨k`g·\eµÍè¦k\80§A³ËKÌ\ f¡\eg,\10\fá\9dä\12;Wm@õ®åêUU¹\1c°Q­k\87\9c­µ\9a\a¤¼©¶\82ÝçÅ     \86O³ñ\bC\98ίðû\ 4?\98_\99¸rMc Ë\¹¼J \1fØ2\9ee\97\19Ý©\17\8d\8có\98\13æÖð&R\88ÊǶ\11,òÊ\0q!MÐ\9e{³úÑEÃU*\1aÔêÅÔmMÑ+\e\10t\0\1eý§Ï@>\ 3\12TàT\f\12\87\1f3G¬V\1e(¢Sz¸»í¡\92»ºÆXBFÿ\0\90\1cÌ  <V\8cd\97GÂÈ \1eT½R$\18\1e*j\ 3S\97\ fpeÒ&}¤\81\10\ 1\94\970Ô«,w¶ÌèÞ¡¡\8e\ 1\98\e¾ß¤Eõ(\19XÿhY_ò2\1d\95Ábjb"®u¯êî§e0ötû5aükj&EÉh\81&:ðwÍ{\90Á<³Tq\1c\15\ 6\9e\fh\93jX1\83÷g\98Ýò¼\97zí¬k=w\87\02\9f¾&¿Æ\9d\96먼ÚF\1dh9<\ 2ey\9aZM\1aj\\bf\ 5¯\90\82«w\95À\ fÔ\96 ÝÒù\9aÕî°1qMªWZ\80T+¶\8c\8eK ¿\89\0ÂoÅ\8fØ\1eÄÅXN\9cÆÒd4\9d\1f\vØ\813,§ ATM\8dw¨¨\ eo:´T;L0W\ 1\11¹¥\9d\auc\17\ 3`ópöXuÓñu6ÿ\89ê.æ³W\ e\rÍÍ2úÃåOh\82\e~Gr·Û}\ 1i\94\85C]L!S7h\80Ç\1c¢7y$ø\ 3\a\82Õ\92VP\18\¶ø°ñ\ 6äÍYSË¡ªâÚµ\8fkö¶ÂÀâ,pÐÏƵ}\ f\ 2F\ 1\1d\86åiF_Kñ m\15Ï°\97l9Lº\1aô\9e\7f\84ë\86Áò\94!´r\9eG]\1aPOXÀ®\16\1d\1eV\91\eyG\vesMk\14\8c\84:\9d¹ö\a·À¨úGÄ\ 1xÒ¨\9cÝy\7fó Öý\97\aLºµQ\17(\v¼I\9e\9dx\9b»¶*øÀ\8f\96á[\e`\ 6ÞX\14Ñ«\92\92Ë3Q©3áÉ|òS\13\9eLçrÓ½2á«\8c\1eÖ|çÖ®Ð2\95wHñÀ\12\ 3\ 1\8e u\8d¶<\7fé\86©\8f!n)TnÃ\8e\81¿ñíÊ\88.V:i\ 1®Å\f\1f\84\ 1åH\f\ 5\80\89®×nÙV@ò@=\11\88\83Ý\1c"\80!\98ëÁ¦±X\bqÄU$ø\8e1Gg>\82Ò\83®L\9eZ/í£\ 2U\992
+,\aõ1\88®Yö²¼râí©qÞ\rdðµ\96õ\ 2\17÷r\88\13ÉwXÖ\89\95Ý-\8dµÈþ\12      \ e\ 4\9e1\15áùE/=|Ãó\ 5¥\ 4[v>N/ØqNQÚ¹³\8cLB´4\1e\1eÂ[\b\13\97ße1\9e\8b\183úâ<\8cÏâ¦k\9aÊàRg¥%Y\14\8e£\1aß+Àmì^Þ\82\0\97]+öÌDZ´\90\9aDN\88\r·9\eÙß\90\9cÛ`\179ÎUhÔTÐZc\9f\90Câ@/­pp \8b#\13+w\1e×LÄ\81Ã~\84\a¸\98\11\8cÙ²[\92\92S\1d8\ 1¥7\8dó\91\15\12+Cº\ 1wÖêÊ^â\81³\83÷\ 4~\14R\98\84±¦\û\85ÏkA\99Y\8e\7f2=ÇÙu6¾Â\0*\8dácÐX¤6Ü\ en-, rÝð{ÿ\9a²<ÿ\ 4@ú^x¯ã­¶0Ôo¿\93üR+/F\e\9d«`\8f²'Z·AwX\88\9ew@¤Âºì{Åô¤\92\16k úFi»¹Ý/ú@Üÿ¹øü\e}MÝÉeÅ\97\81\9di3USvô\ 5+\81î¡\84tg1yå\1a\15»eòÙ(ÂzÕ,\87¬\8d¾è÷Å\v\9e\87\19`\17\13_©Õ\93Ü\95\0µÛðK\85\ 5ØÃÊtZ¶ïð\86(\85\ 6T¨¢»O\98ÎÒaç\9c\17×ØYßÛ^çÝ'\9dñì*ãOAø\90sôiçáæîö\86¾y÷\1d\f¥O.o÷\9f\ 6\98[çéÔy:6|»íNgóì
+\9b1¶Üñè\82\8f \9e¿Nþ\aèÍ\¯endstream
+endobj
+1106 0 obj
+1590
+endobj
+1107 0 obj<</Type/Page/Parent 794 0 R/Contents 1108 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+1108 0 obj<</Length 1109 0 R/Filter/FlateDecode>>stream
+x\ 1½VMOãH\10½ó+J¹,#\81'N    \a\ e Ý\91\90vfw!Òh%.\1d»\12÷¤Ý\1dÜíxòï÷UÛ\ 1ã\99\85ÃJ+ \8aèêúxõêU?\9d¤4ÆOJó   Mg\94\95'·Ë\93\8f\9f®(½ å\1a\ 5¾ä4NÆã1-³Ót\96,\12úÝmÈð\9eÍ\87å7\98_P\9a¶æç\939ÌOïÖtp5y\ e\14
+&s4§ÇSe¼£­u\8d%åi\94óªî|\8d\1e?P¡7\ 5W¸¤,Mä®\8d\8eJu _¯×8RdTµaÊ+·#m%\811\9d§Ód"\81w\­]U*\9bqBËB{Âï\8a3U{\8e©x®öð²6µ/Ø?g·Ö\86\ 3\8eXe\ 598RA;{FM¡ñ\8f\f    ­\98p÷@ü}ÇÖë=BHøß\96'\80\87fÓ)>/\16s|NðW1­\87h^^]Å<_áy\95ÐW\9d\ 3%mÙÿ\v K 8j:«­\1f!AÉNª\ 3\94ÄV­\fç´:PÎkU\9bpF«:\90\90k/ç¤\ 3\1a\0|PI\90R=gu¥Ã\ 1À÷¡\1e\f|\ f\4
+Þ-\8aôÎìµÝ\90 hUÉ^pgêÛ\1açc\1f\f\16ivi\15j\8fª6\1c\9a\1cøf¸u=\b}`?:v +\15\89\1ekLzè_N/ßG\7f\9cþ\88~:Nè\9eUN\95\ 2¿êl\ 4ú\8e\e\82~Î^o¤¦à\84\1f`\89t¦Ô\9eó3ð¾97*°Í\ e\11\1fÀ\85@Ï÷\13ºA\v"\1fAðAéYá\9cpÖ¡Á\ 1äßí\\ 5ÈÑØÂ5\18½*A°\9c\1eT¹RTª-È|4\92\ e\8fúù
+U\94\ 1\90:\14B\82\15KÇ^H3\bÝQ(Â\8bÙ\9aÌ\12Ñ\80Ó;KÞ\95\8cVy\ 4Ë\8cf\e\0\80³¿\ 4¼æ X/j\9c\94\86\8d\89iª,ÔÊ\98\ 3¡Û\ 2\vÈ×gHí%!d\16\a\1f-\1e¢!×Z#é\7fæì\1eÁcU\ 3LA¿®\9a\ f®\95\10(\vBëmÄ4`\8c\9f\93¥k`<\8ayzf\f¼\92\82v2ä\84\19\83\92UdÁRWm\13º\vT¶®¤\8a\ 6½& \8e6\rpT\10¬,´÷{Õ&ô\87\ 5\12\81}\90ªEYÐ,\ 1'\0®>©§\97ódñ\8e¤L'?\bt\9aBQ0×ü\1e§\9b£Ñ\7f"uëåÿaõ«\8cߤõ \17/Ê8¤õ\83\84ü\88üâ\8b\8c*\ 6\vå[ÆFrZY/\86âé\99Hàq?\80\ 5²óÄA£}!\93\9ba,°ª\ 2öР\9dV¾û½\9e\10§·×GºhGñÕúH'\9d\80í*Îu& H°\9flåV+\84o¹kÇæå\8a\10=N·[Ç¥øðù\16cVb\93æ\18©{Ñ­\9e
\ 1<B'@¢6Ã\1a£;þ\1e*E¹
+J"Èð\1aåC«\86\98÷¨R@\10ÚÑ(\1dçAÔKì,®R/\r\ 1TUU\»\18B)\ 3fq\ 5í\9cÍ\a\0\97\ eû÷©ÖÙ\16\88ݳÏ\18³â§\1a\ 3ØyôCR\1c\9f\ eÝæìoÖ\84þF\9b%|+ QP\ f\9d\9aÒCê\9ad\87\rÝ\7fq\18Î\b_L¦g\8f\95âD\1dð^Á¦°\11¨\ e\r\84\ 6ª\84\93xM\f\87\9eï\a\9dò\85«\rz§ª ³\1aO'ø.Øì¨\85YV\8c×¢=G=\7f<õ5Þ;ò6û*ò0¢Úæ\90ë/K¼\12\83=ÆAúÝz\0zÔ|\8fñ01Á¨\9e*\96\10ÓüøiÑ=\14ÓÙ<Ii6¿j7ËÃÍçÛ\eú³rßD/\7fuY]BÞãûK"\9c·æçó \9e ùÏ\9e \17³E2ÇkUNÇ\17r\a\8f²¿Nþ\ 1},p/endstream
+endobj
+1109 0 obj
+1188
+endobj
+1110 0 obj<</Type/Page/Parent 794 0 R/Contents 1111 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+1111 0 obj<</Length 1112 0 R/Filter/FlateDecode>>stream
+x\ 1\85V]OãH\10|çW´ò² \817NB\b\ fû\90\85°\8aD\80Û\ 4¡½ãt\9aØãØ\eÛã\9b\19\13|¿þªÇö\12¼ì"\14+8óÑ]]UÝÿ\1eøÔÇ\9fOg\ 3\1a\8e\ e\ e>^\8dÈ÷i\15á\97ñä\8cV!õ½~¿O«àp)²µ ]\92¦\94+KZ\8a\90DÌÏLiI¡°\82l,r<$\89L\95¹%SÈ \89\12\19RR¿ï¹m&ùOöH\156Q¹GsK"Ý\89ʸ3ÍÑêûA\9fNü¡7Àý\87õ\15*'\7fKëT\ 5xâèPèD\1a\8f×ÎV\a\88\91Æã!\9e£É\19\9e\ 3|\10RT§tNþ¨Iipî\ e}IÊ\1f\88\16\129T\94\89¢Hò\r\9fº\8fÄÉ\80\91h\00eQ(më`±\98¢$\95\86\9e\12AÙ«S\18\87Ì£Û\\92Q\99ÄáA\9cäXjãÄP\0 6É\13\90¢Tè\8dDVÊX²ª\93~!u¤t&ò@\1e\13PP8U\eJ,ÎÛâ0.E\98D\91Ô\12KH0\96é1\89<äÕîb·¶\ 2 a\89\15{\a\0õ`ì\ 1 ðp¥Hæb\9dJªTé>±@\84Vao ²\ 2\89\ 2\e»:\9f\Þ/gÿ,\16Ó»¦\9c|+\13àêzúeI)\12&\15ñ\9bN^\vDÏÈuc¸Q\167ÆÈ£\83&0SyZQiÀ&\Rî
+\99ã\7fÇ*þ¹Î\1ck\19\17·t]¹xjâi±ëu\ 2Á      ZÔD\Å¥qig¢Âù\80ðç\18\1c×%ð\ e,W/\89Ü\8601\ e·\97[p9\93ãÇ\vúÔ¹7W½}ú\8e&§Þä\1dú\8eNY\11¯É;òh\99ª\1d\89Ì­\13Ï\eÔe\12"O\ 3ÜbÁÔe
+\ 37\a´\91Ör¬\¶B+«\ 2\95rÑ/n¿Îî®ï\97\ 4|@:^\9cÓõôf1½\19Ð\86\99!(Ô"\ 3zA'9è\9e5\9fá¸'\99!0z<\8c´ÊÈïo?B\ 1\8aüSþöxÔ­ÿ\9cLÉ®\ 1)0        X*w\17\1f\fö\ f'cóì\8fi-À\80Ç#Ú\81ò$ÌÖiPé7\¨¢@\95iHA,w°\99\1f'\v2I\96@voF]ïYK \15\12ØÓ³WJ°«ç$ÖËÄ3=gPØ'\1aôG\93Þ1\8cÎX6E°>\0`\9b.²m­¿]+$Ò.ªï¨í1K61«Ù(\8aeZì\93e8\9aÀÇ~ïuC\7fäTý\9a\r\15\ 2û\15[\1c¡R·\82\ 4\83\9cfìM\8dI\87¥³\ 4Ç\16aÌNi\87
+a\93Lztï¸Ï+@M\89­\85\16ÐK Rê\15Í\9e\ eö©|\92i¯n/\r\0àbØ!\95õè\e<©®\8däq*¾¤w\7fuA\81®
+Û6\95¶Ý¼r\99¦Q\fÐ(Fï\807@£\18ÿ¤µ±×È\8cl\99#4Ná-±EVæ\88º\16\ 1$\0\9cá\83T\16H°ð\94\93[àTëÑ
+YÔßY( ³|\16Y\ 1»}\80\v©\9d!~÷ ôv£UY@6|\\aAå®å+J¶DÞ±\86²!ÜÕÅÝïl\7f)\9dáë6\82P\ 5õ\85¡´"I\r¤\93S!4
+XB4ÇP\92ë\vèý(½.ÑêÑ\91\9c\1a\ fÑæi\ 6Ý^\8e@\1eæ7\97·\ fËù\9f3' ¼Yξ,f7+÷\8a»¢;»í\8a \ 2\98Ã~ÿ\9b¾5e\8dÀð\9bÆá\9a^!\15ãç\ e\8bx`¨\ 3lÅ|)#Q¦ökðT#Ü\12æ¯Å\12\rÑ\83¯¸õÍÞµü¶\Í\16Þüfîº\10át ìòF]\87}LTÜÚ\99¹ëd³o\83ìB¡Ê?XÚæ0í]\µvÐöàEEj\97£þÈ\17\8e\8e\86½C«ý9Ü\ 6ð9m$Ze\19Äm±÷p\82\9a°·\85òI¤Pîã¡?\1eNF]îèz
+Ñ0dºE\155ð~\ 1ðu¿\10\94Iðv]§k s7Ø°^AX$\90\83\15`\86I«z\ 6ªÛOç^\88>\7féF­dB­
+F^P\84â\83Çø>ì\ 3-,\ 6ÁvÜO\7qP\ 3ò\89\7f>x\1f\99,F4ê\8aB\89Á!l¼\85é\85\89G\83-:ÜÁñê)\82Él«Â\r0Ðû3F´ç\97©\bÍ\89\17¸y\fÙ:Ãç\17\18y¶®¨\1f¯&Í,í\8fÏ<\1fóô¹\9b\8bÏSºÓê;7¹K\15\94Ü\1fÝ\ 4Âà\9cÔ\8b\ 6\18ºC\14ë\17óéh<ñÎ0¥ó\9aþ)ï\84½ýqð?\1aìºúendstream
+endobj
+1112 0 obj
+1441
+endobj
+1113 0 obj<</Type/Page/Parent 794 0 R/Contents 1114 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+1114 0 obj<</Length 1115 0 R/Filter/FlateDecode>>stream
+x\ 1\85WÛrÛ6\10}÷Wl\9fâL-\9a\17ÝÒ7Ûr\1aM£D\8dÔq:M\1f \12\92\10\93\ 4\ 3\80¦Õ¯ïY\90ò\85v§qì\11i\0\8b={ÎÙõ\8f\93\88B|E4\89)\19SZ\9c\®OÎß\ f)\8ah½ÅoÆÓ     ­3
+\830\fi\9d\9e.E\9dÓ\95N÷F\94\92öÂR¦ñÁêB\92\93Ö©rGº¤4W²tdU\86×uÉoE\99QÊËÈir{I[\9dçºá_¥ºLóÚ*]Ú_Þ®¿\9f\844\88ÇÁ\10\81Oç¥u"Ïý\86\9bØJWW\81¼Çf\95ã\87Ñ\ 55M\13\14*5Úê­\v\10! õ^YÂ\7fQ\12ÕU&\1c\a\fij:½%\9c\8a\9f|§Ú©\9%m\179J\82\98#7{\95îI\15\95Ñw\92*ipD!ÊT\ 6½+^ér«vµA¦È
+\ 1Þ\8dh}µ\9c/ÉÈ\9d²Î\1c\b÷fd,§¾S8n\83\17ÒP{l{*Í©¶\92\ 4!àÎ\88\82Rä-³Þ­\16ë?VËëë\99\a¡½â\9c\91Þn}|*¥c\ 4$î#ð}'\8cÒµ%\8dË\99Çd±\1eË\81\91;T\f¤\94ù\81Ä\9dP¹Øä2 >¡\17ºK\82Ú¨>\rNx\83ª?\85ÇC\8d2#¸/&hõPÍ\85¸G\ 2D_dÁ r\80\ 1\98\ 6fe§Qà\9fñ88\96àËÍüÓë\8bã\97\8bqðEíôLÙ\14g\ 3[|â\\9eGI^Ýx\99\83\r\1ft.gÒÉÔýÇÞá˽k\85\9a>rQéºä\80Ùó\88£ÿÙ5 \ f\9f\97+¢$~¾oürߧÙ\9c®D
+ÐWê\1fÄ\v\9fï\98´;\ 6ñè\11ñ99£p¥;e\\rB¡ÈP\93/¾$åda©\80R!=,R¥§P¦Ó\9a_zyø7ºÄFÖy[ûB@Ö\822µÝ\82f\90\ 4óºèó¥\8190AXo\12\ 4­8\8a\rh\ e|]m8 ®\1d\v;A0\8b\eåöü\vQ\1e\7f=¹ÍqIipo$Á\85æ|l%ù4P\1a¶dq©3>°\91²|à\7f«ËÖ\97,ùÔ\ 4;Æ\83ñ\98âpq    \8d\1a¦\rG'Ñ£~jDU\1dèÓuÌ6\b\8f©\84SÌ-6\10\9dg4\9f]\13e\86Yðíô7\89är\8a\830HÂoo½\1a\1fnF\86í\88S6RXí\19ã%\13\85´\11V®ûöò~þuqÍr\84ç±ËÀÖ ,¢% ¢_\ 1,-#äÐ9nr\ 5KL\85É°b\18\87\83á0¼½<G£0\1c\8câöa\19q\16­E?nèå\9c¼Ãî¨Û=Äè{\98}\1d\ e&£ãþ\16\13DK&á \99\93\ 4\ f#ÿÐ/\9fÏ2cfÀí¸ep¿8Ö\8d\£½·#K\1a\ 6#ÔÅÉ{×Ú=\83-(â\97þ-÷\80\16\ Rç\8e\91)ß8\ 4àNSró1pÝ^^LÉ=\0\1dW¢Ø\bn\15dêÒ·)]2Cßp|®:\15Ð\9b*å+Dä\92´Ý¥§¡ÈÓ"¦\8dÑõnï°Èëà!Gf\80m\9b\17\19\0&\1ejâ+\ 5\11únÚQµO\87\v\18|s\ 4\9f{\1c-\93$á|K8\97Wº`\94Bp\1aug*øëìëM\8bÕ#ÖOîá[AÃ=c§uvlÂG\1f\1e\8ePýîz(VåÅ\99Ñ8\f\7f\85\97\9d^©?j}ë;?\ 6\ 1\87âñUÞ¯\97\0Ã\ 3\83\1e\v h£°\ e\13\ 1°øvzD\ 3à¡P\99e\19ÍÉÖU¥\996¾½!ûBû+¿¬2nÔ¹\99õ%FSu:Õ9\8c\81u£¶0?\80VC»¸¹/Q;\95xyÂIÚ\8bv\8dßwhjüò\8d¤\1f5\9c\938©ÝÎSÌg~½>Á\98Dq4Ä\01\9cNø3¾qÁm;U½£\b3\rOUÑ4ôãÍã\\15\8d\83\bþ½8 7z.3\96O\a±AÌ\83Øé\8a'¨Jê
+æÓ\bx4\9c×JÉf\92SY\17\ei0ú\94\83\8bçê\96\11\fÄ"\8f\1cðC#0PÏ\1cZ\80iAlÓ±½g"y[èiæ(\8e\9bíÍ\8e\92\0=ÚÛ$K\89\9f6äÒê\UíTå\1d\9e'CáËé½±µF\160¼vÃN\8d     çÉÂÕâª\17ò\1aC\99\1cDc\9a¯.P3K\92\8b\8eáÆSº¥²oKþNÝ\8c9\7f\83\ü@Ê\93\r#ãh&·\98\97ôîF\95\99n:^ôÂýµXafû\e;RnS|C{°è\8f\81*\15\1f\15\8d\93)\ 6\0\14¨k\14^{@-»O¸\87\1c!ú¨ÊúÞg&r\86\e8<I¹\17µu4$O\ fé²`\ 3úS×È\13N\80Ò\16\ f!!rô\80#±å½(@\ 3{\8e\ e\9fíä9Ô±É\94A\ 2\1a#'7Ã\17#\Æã¨\82\ 2\90b_­\18#\81\16\8cþ\16\ 1\ 4À¨Ì«\97¦¨\98\9f·}ÑS]\1d\90_»z\18ñêÆ`\80Æ\1cÏ|\80ܸS\81\9e\0­{\ 1\8bmAëÇü¼e\r\1a+Ïx©\91ÞvsL³^×8`\83éb_\bsË£\ 4ð\88Á\9b\ 6\1f\8f\ 6\82H¾'¶²\86¤y,µt\0|0\14\8c\ 6\15öv\8b|ðó÷Óîo\9bh< "ü}3jÿÐX],./hiôw\1e\0\b\846¯K.\1a\98ÈË\a\938ôÃêkr\1d\8e§Á¤\efÃ1ï\82%ü~ò/ä\ 1"6endstream
+endobj
+1115 0 obj
+1704
+endobj
+1116 0 obj<</Type/Page/Parent 794 0 R/Contents 1117 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 10 0 R>>>>>>endobj
+1117 0 obj<</Length 1118 0 R/Filter/FlateDecode>>stream
+x\ 1MQËNÃ0\10¼ç+æÖT¢Æn\8b\1d\8e­\0©\87"\1e\96¸ôâ$NI\95Ø\10;¨ù{6M\91\90åÕÊ;³;;þN\ 48\1d\ 1µÄJ¢h\93­Nn\9fÖ\10\ 2º¢\8aÌ\14t  Î8çÐEº\9býX\98&xD\e¢-ñQ»û;\18\9eõÍ%­|ÿ÷\80£!Fk\11?-râ |Yâ\99\0\83`ÚÜ hjë"\83&De¨k\88s}J8\16\964>\9d\10ð\15\8dnpH+ßQËÃ\1cu@hók¹ë\9d«Ý\11Þ\91\bOó:4µëÏÈý\99ao\86Üb7£\ 6¦,I\8e\ f\16\9d\r}\13\ 3\bk\11|kK3\8016Î\7fÔ        ­\r)W\14×\99¢¸¤KÀjr)»º$¤b£\83dÐ?§Þ7ûí\ 6/\9d?Ù"âÁ\17}K[\9aX{7v_L¬ÅDK\85dB\91È\ 1o\93¤\11³\96\19Sô    ä\80àêªé5ù\ 5\7fWendstream
+endobj
+1118 0 obj
+305
+endobj
+1119 0 obj<</Type/Page/Parent 794 0 R/Contents 1120 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>>>/Annots 325 0 R>>endobj
+1120 0 obj<</Length 1121 0 R/Filter/FlateDecode>>stream
+x\ 1¥W]oâF\14}ϯ¸â%\89\ 46\18\12\93\95VU\12%]Ô|íB»­ÄËØ\1eÀ\e{\86\9d\19\87奿½ç\8emHP»«¶\89DbÏ×\9dsÏ=çòõh@}ü\ e(\8ehxNiyt5;º\99\1dõ\83ñ\98ö\1ff\89\aL\8b\ 6AD£q\8cÿG£`DFÒ\82W`\10Ûì>0=¼½ ¨O³\ 5v?\8fÇ4Ëü8Þ¤'×+±vÒР\ eèq\1aÑu\91KåèÃãçÙãéìË\11¯\1d\8cêµ½!\1f9ËN0y\10ÐíåGËSúÔ\eb¯æ5\ 6\r¥BÑ\84\16ù²Bh\8fÓ0¢Ï¬éZ+%SGÚЫ·#\12\96D³Ýà<à(OÒ:\98\ 5¦NE\99\88\9fxÜ#Ò^qÀ÷üôóQtv\11\fè,\8e\80FI£x\8c¿õSASF%¼\1dÑ`Pßã,\1e¾Áà\92J\8d\10S]®\vé$      e7\80Äir«ÜÒ×JZ\97kåï\94\85®TFxáÃÝ!íc\ 1Ü'´rný.\fSat\11lre\83êE\ 4ª\bÿ,¤¬6¡åË\84\e \11¬\Y¼ÝƧ\8e·       \1a4¢sd\17h\        \9b§¢(¶]Úê\8a\94\94\19\ 2\8e\+ä;ã5 O¯]4[IºÍ\v¾TFO&Gn\9b\14ÏO\8e'W÷ô$¥9\9e\9fú»\84·i\ 3R/F\ 6|RçÑyÜ\f\bòXo0¬¹0»~
+'OÄ»)\10IIG¶Z¯µqÿkW\84Ýy\90îjò8%ý\82lÔçt(39?â<¼¹ºùuò/\8féEc\ 4¾Ãg¢¬\ 3¦¹Z\ 2KTPn¬#·AêõRâ\8d¡MîV~,\11V\92^K#\1cO'»µN\96Ì\ 3AI!Ôsû\ 6\9c\91ßÖ\85È\152\94+¿\98©ßä³E®\14ª\12E@\93E]\18´â\12(\8c\14Ù\96\12)\15ÖúàdÖ¥¤ruÖQ[\e\81,\82\9dÍ°ß\1ft@Ôæ\99#kðïR\85\80q\87\83s;SY \0\ 1#5·\a£\r\ 1íf\83\ e\91N¾p\8d6Áw¦õU§ÒUë\ ef\17\994\87ô¼Ì²\16Åïf\ eè(í(\9365y\ 2\84ÚSj<<Q¿TÈB"\8c,¶í¨VHÒáU2\9dV%x\8f\8ch\15ÐÔ      ã\88î\9ffÓàæ÷\9b.A@ÒgÎÐã/¯\1e:\90 F\96î.\9f¦\1d\7fd=\95çv¸,X¯\ ep{¸\99y:>þvóiGG DÇOF;\9dêÂ\1e\aD3Ö\f\8e\15\17³\f¿\82¼¼p­j:¾®\8ca}m#ð\81cU\9d\12Ì\16ίí\1e\9c½»H\a\82­\96\92TU&ÒÔ¡ç*\ 5i\90ëÜÑÂè\12\85\8b³ ÄS\81\1c{\rÛ)q\8dT³{+\12\93ßk,YiP`ó\13\vQhr\ 5P 8\86
+\rý\ 1½\12\90­\16\89zÍð³2\91È2\82\1a(QJp\19\92\83\17FZ\8b\ f±\87\8f³Ä!s\10\9d\a¿ö.·®Óe\93°k\99æ\vlMôyò0mâc\ 1\81ü\12\1fö1Ó\85óÇg\7fº½>\80\11\ 2UæJ\17\9d\9fÂÁ°ý\eOb]¥Rl\e\94é\8d*´À=\14UëLÀ\1d¸VöÊÉa'\90Õ%\83\ f\9cü\1d ï\87×,ä\8b,Øãüy#θ¯MÚÈd-\90P¦1P\ 4OD\ 2ºøꪭ\8e¢\v\96¬ÚêÙàZ§\7fíÍÑ9÷\0¯\9dÝ\9btô#7\1e\ 2H.ÇÆ\95ç§ÝÆ\95aõ]ph\88\14´ 6®\1c\ 5ß<\b{K~m®½(f³ú\ 3Hr\ fÐH\10x\89ûÞç©ÑV/\1cÝ]>нP¸¸¡(\88ÒÖ\94üƾW`"óÁ-\ 6}vÁ\92¢Q\f,"ÿÔXû¾×i\1d¸\8f    ñ\ 1\1c\voÉø\fÊ6\8a\0\8e\1f^U\16ê\16Ö¦hC\ 4v\7fù\10 \15
+\9bÓ£x\84Ö¢>\91[\v\84ûOç·ÖÝ\ 6y\18\ 3Ô\81Óîñü\ fm\ 3<\ 6\1aù½\96\81áãÝ{u\ 4;\93öýM®0Zz\ 1`¦®à$ ok"\0u²Pô\90\eÐ\11Ö\ 4B\vh\8d³+Y\14]\92\19XÎUºà\96b>\aL,\86\8dM\18­\9d¿Û¾;Èr\ 3\1fÑfËåïWúä&\98Ik\88\e«F(ü8+gÝÆ\84·}ºà\8em\0»>«{ :ø\89úï-\9bR ¿í*\ e­23ð`&rö\9e\19\96\1aÀºÛ@¿;û%ËÚ¹{\8e÷\10ÏÐ\93<\91@Tz_nadpZô.\v«»\90\10uìvu\0¬Ò¢ÊPæ\ f7Q\1fÍkÓÏ$2\15\f\ 5þIµ\n\ 3\9a\ 17Þ°\9eÊ\11£\1a\ 6ýapAã\b·D9\\8c@GÿÐV\ 3\8d\87\1e\80}\8fÏæ>}}\987  \ fÀß°p_(i\86\1aôE²®\92PÛ(d\0Ñd\84*Ë­¯\8f}íµÜ?ñ\8cB\ f\13x\9e\e\ fùk\8aÿ²òVÁÆ»®\9c»Í}Ì?ú^2:\1f\aqÝ¡\ eúã\ 6\9a\8fG\7f\ 1\91\18Ò@endstream
+endobj
+1121 0 obj
+1599
+endobj
+1122 0 obj<</Type/Page/Parent 794 0 R/Contents 1123 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F2 5 0 R/F4 7 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 328 0 R>>endobj
+1123 0 obj<</Length 1124 0 R/Filter/FlateDecode>>stream
+x\ 1­VaoÛ6\10ýî_qÈ'\17phËI\1c'H3¤­³¦ÈÒ,\16\1a\fë0Ð\12e±£DU¤âùË~ûÞQrb;ë·!\88![äÝ»wï\1dù½\17Ñ\b\7f\11\9d\8eéhBIÑ{\17÷\86×g\14\1dS\9cáÍd\8a\87\94Fb4\1aQ\9cô£S\11\89#AWµ"\9f+|ÊrM\96\1fI;×(G«\\95ôy>\1cÓ×>¿|RµÓ¶üú\86°\82\1a§R\92\8eä\9bø[oD\87ÑDL\91¡\9f\18­Jÿ\13ÿ:¼>¦(jó\1f\8eOùí#Ç\Û\86RK\92îf1}¹\99=\92­9\1e\ 3¡\83km\18LJ÷µ.=Ñû\10\90\1e\94³M\9d(zWÛ\95SõÁ\80JKsY,$á+\83#\97Û\155\95à䳸ÇÅ\86\8a)â§\87\9f{ÑÉ\918¥Éx"FT\80¨10·ß\fÍ\992\10\15\80¾\10\15ç(6\91%ÑBQ¦ÿFÕ\8b5°WÒ'9eµ-(0°\9b«^R\9frï«óá0\91µ5b¥K'\9a')J3üÇ(Õ¬\86\8eÁ\ f\11Sä¾0»Q\ 2v\8e"\88bÐÒ¦[ic\18\87.\13Ó¤*\r{Àý\91\183»º\ 40#=zØ5\8blÖr$èÆ\934ÎR(\ 2}£Ä6\15¨Æ\8a¶íUm\17F\15n@®AièmU+¦V\97K2\16\1fØjT)\8bN\1c{Ùíâ\9bJ<"CLi-\97KP\15øá¶>Úú¯ÊHôo\9e+\14\86vo7P\ 4&ÛÆÑÉô\fÍ9\9e\9e¢Ucü#h¶/ê\93\93ÉkQ\1f\vú\b\19@`7´T\1eE@F`$­5HÁï«ÒX\99Ò
+\88¸2Ê ¾ óVºîGÚ½Öµó\ 3Jj\ 5\86Á\9f˹ÒD\1a\83B\7f¿\7f¸¹\8b?<|ù\ 3eIÏ\ eá\f&=ÄòT\82X4ò½­Ö¬þ._\87\88Iu­  ±æÎ"x\88±G/³(fW\7f\86&8*\1açÉùN\10NU²\ 6,ôÎ\ 6\7f\ 5¥\94
\98é\8d¹l­\97º\94\ 6\ 2r\1eÀÛX\83`·ÒzH\ 2\0¡õîõ+\81m\10³ê±,°æÖΫ"x\ ec\0ÖâAÓ¿é\120ê»xC~Æ\14\ 6Â\ 3I]kZ\89\97\ 3"\99¦\f7Pä\8a\85Hl\99\ 5¯Õ\10\1d\9a\ 3ëÆ\9bh\85¬è-³4¼\1e¿\f\9a\8d\196Zm\17l&Qÿà9\eÜÂèx\1d\91«T¢3ݺ{7fÿ\a\91\ 6Ä\08\ 4±'ØH»Õ\86_;\9d3U{\ríÈ\f«`6Ðb\fFÛy·lÃä\ 5\86àÖÒKzK\17[$\84Ü\97â"UO\1aîâh\97\ 3Rb)Î\89>ÞÓ­\84\85\a'·Øy{5\9f=|\9aÅb÷Í^Êß0 yäåòIAhÆk\1e\14-\b(OV\15x
+ôAæÌΫîgA\84¶4ë\8eÙuà&\b\98\17å\ 5\1a·j\18t½a½H\ f\81U\9e\95ñì^^ß\ 6Úc5\b\9f\eè{½»\81¡b¼-\1aÄÂþ-ÓSØæÃdâãé%<;\99­!\9f¤6\9d\8f?·Êq
+úÜ\9fÁ\1dØ\ 1i\9c]!*\ f\9a :D
+|ñ\19âtQ\ 1\1e\1f%iÊc(d|éáó\80d¶ñ\1eLe<ÅV¹ÆlFìçÐ{õÛ\8dª·\98Û\19¬Gã\11N\8bÿ\1a¬ÓÎDÑ\ 4\97\ 3Ü$pQغ1̯~yw\85CÙò\94§\ f6i
+\1côÒãJÀ\10p\ 1à]\87í¶ÿñ~A[7\8aãÉ\14ç7ãêG£3N\8bÓâ×Þ¿D\8a¤endstream
+endobj
+1124 0 obj
+1118
+endobj
+1125 0 obj<</Type/Page/Parent 794 0 R/Contents 1126 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 335 0 R>>endobj
+1126 0 obj<</Length 1127 0 R/Filter/FlateDecode>>stream
+x\ 1\8dWQoÛ6\10~ϯ8ä¥)ÐÈ\96ì8N\9e¶uK[ h·Æm0 /4EÙ¬%Q#)kþ÷û\8e\94\1cÅéÐ"H,Y'ÞÝwßwwùç,¥)~RºÎh¶ Y\9dý¶:\9bÜÝP6¥U\81'\8bë%­r\9a&Ó)¾\91\17¯·¢ñÊRºLèíÇ\87ÕGúUJå\1cÝ\8bj-È\99ÖJEÒäêåêÛÙ\94.³9Þ¿ØkA¯¿Üów|z\8a/ùôËY\9a\1cÇ¥  ½«½5y+½6u4\9dS\9aö¦Ù5\eF7ÚQ®öª4\8dÊI×$jÂeMªÞkkêJÕ>!ú½7±\8eZ§Ø?}½xmjÙZ\v\vú¢¬\83']oèþ༪¾¾$oú¸ÓY\8cì\n\95Üéú\1cï\8aÒ\19ÚÕ¦\83GGt.MUi\7f\8e×jÕ\8ds\87ó\10è\vG{aµi]𾶢Æq\8e$\ 2^+\12\ 1\0xNÜ\8aÚÔ\87jx±u\1c¤ß*$ë¼\8d\b1\ 6^è2Bà·\0EÆê$|Ø\1f«3®Z(\1d¥|õéÍY¶¼JRº\9a\94*\9agË亿+é\9ek?ÅíìIÅW|pnd˨\12®\ 5U&×\85æ¸#\82d\8açÁ\15¦­s\12\9eBfO#±\eºØzßÜN&\8ey\93\18»\89W\13¹wÉÖWå³\14B2x\11\9ft5ËP\9dùò\1a×\9c\8aUT\fÌ\1d¸5¿Y&̽Gî\82dY\12
+ÑsÖ\e:ºg\7f\93»g|[\ 1óJÈ­®Õ£-Ù¶f\1c\9av]jY\1eúBêu\19Y\86x\1aã´7ö@\85±ýcp+ 4Ò\b\ 3çÀR+B¾\10Ä@»FÈ\9dØ(÷\8aPrY¶9\13 \ 4û\8a¬;Ô\12\9cÏé\9bö\10ãºÝ$\84@\81\82À¯ï\fB\86*:qpìa\b¯§\10ëÀ)\v¯djD¤]¨Ð£ï­q~D!\9aÏæ?F{:ý\1eÚ\10u\8f\ 1:µþ\1f¤ÿ6mÐE\14Å3¤øý\ 3º\vQ!öøÔ^ÑÃÃ\ 3­­é\90\r\ 3ÀÜ,Kܲ!£=:J\9aÚ\83¿\8cÇI¶ºÎõ^ç­(©\80\98\1c÷\13VÚ¨\86\fuÐ>Î,\8dÙ1«£É^s\a!\82ïPm¶\8c]\ 1\86\9b\80þéù\ 1ÙQ¥\8fyss\11n\17\19CP\18*Wâ\®üZùN¡Á\89ú\10êÛ\v\ f\ eN\83\1d
+·X$\v\9a¥7ø[Q\96r\9f\8dwG¡Ï²)\1e\8e\ 5ò\19]\92óúüé=Ýþ´nåF_®uÍÊí«û¤õ\8cu;\9bÞ$Ë\1fè6»~\1aTP-t;â\11\88D\ 1Ì8\998£±æ\98I\82¨6¶BÍq\16ÉRÇ\89\118´Ñ{°\80)Tµr\8bf\aM1}¬)É°jø\11:ø       \8frC\9döÛïsgÌÊ0PLë©Û\1a4\8c>4o\15¼\ 6\94\98\8aZ|\1aÊ\ 5¸ÎQÇ\90\86\ 40\88@=׫\0Bऩ±ªP\98u9UÊoMÎÍ ×\84.B\1aÜ/Äq\96¢S\81¿µñô­u\1e\ f¤p¬\8bAcì\19µ\9deY2£ôæ
+\9câ!²Àg¼;r+½á/ÇÜZ!\ f\fÎÒ\88<\ 4W")øàèGÅyE\8dÑ\183\80Ø\ en\aµý\f+»®Kä\ 1õ\94 d8      P\1dGÏÀÄ\8b$äÉV»\130{9½xk:F~£B\84/ Ãz\17G\a°-P*\ 4\8eáÃ\94\ 3'BNo>|¦7\7f¾çM\ 1m¤ß\89¾¾Ä6ðÁ \84~\eû\ 6cn\87ýhhøý\18 \8d\15ÍVK Î}:2Ó\81*\1aTl¬A§â\8a=Z\ 1-e\v\81¥\vñFª£Øº\ 2\99*\84&0·pÐI\9aÜ¢"_Þ#1°%¼êðÎà0\10#\88h\8f\15Cðd+¬©¨\9fÚOq\1eZ\1a\98\10¶=ÔzÃ\ 3¨çZ\10Üq\9fá\8aó:Ʊ\16\86ûu\18m^5 /Ýa\òH"õ¯¨\1axÕqçp\ eû\a3\a\10²þ:\ 1\96\9c.MÒ4\aæx \7f\18\96cn%ýá\8a\f\fìøÑc³×,Â~,\92\v[a\14\83k×hž\ru<-\9e4P\99ôÔOmªE\15L°R_\ e ¼Ãæ\86ñ\84âÁ\94W©!Z\0\82î\86'\9c\97U°9`\9fä­\8ew\8c£\19'\15´\1e\9a\15¡ã
+{HB\97¾Ä\92\8cí\1ckt¼Çíq\91øÔÆ   Ñ\97ü©=Ú*3crwÕïÙüæ\100;»Ìé¶\89ËÂ-î\7f9®K·Üî­A«À\9cÓ¡\17\96ý)\97\9c÷ì\1a­\1e1ýü\7f\f¡Çõd\9d/x5\8dI¥S\ e\12\8d篳ÿ\0\146ìgendstream
+endobj
+1127 0 obj
+1482
+endobj
+1128 0 obj<</Type/Page/Parent 794 0 R/Contents 1129 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F1 4 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R>>>>>>endobj
+1129 0 obj<</Length 1130 0 R/Filter/FlateDecode>>stream
+x\ 1\8dTËnÛ0\10¼û+\ 69)\a)\92ìÚ®Ou^È¥HÚ\bÍ%@@S\94¥T\12\15\92²á¿ï\92\94\1dÛí¡0\fHÔrvgvv?F  bú%\98¥\18\9bÑu6ºº\9f I\90\15öh:\9f\11Gq\1c#ãÁK)ZT\ 6LÿÖØÉ\1e\85T`è\98Ö[©r\98]'p\99½\13J2 \ 4|£ýÉ\1e7\88\H\8c0\9dF\13Â\ f~ö-L)ÀeÓ°6w\9fC*\82ræÁØ\87\7f\19\10éÃá&\81#̱è´P\e¡\16ôþM³fÅ"©Ö\8b+zUR\1a\ 2\86;=-$<*!++\8dmU×àJ0#\88U^)Á\8dT;pV×"÷\10\84Õ\1aVµU»v5£¦hm\86\8f\8a["¹ÀkPE"rA\ fwË[\9b\9b\12&ã(µ´\f[¯       Ó\12X)Öòòõ2\82«\ 2¼WJ´¦¦Ä\92\9et'Û\ÃH\a5\8ebäb#jÙ5\14\ 4£\ 4%±àÇtn~=\ f°BC\92
\ 6bÒb% W\96\ 2¥_íÐë=\15¯Nºo\¨Nå
+`{\93\8bÂ\93
+hYCé±D]\91\b²8cé©\1d"õ¾\80\84%}ÛqqûIè\82Ü´¦
+\vÇÖu\r\82®\8cOdM"Û³<J|ô¶\vÔDÒÉÓ;iOJª+Q\v¦}w¨f'6\97}M2\bä²\15§r\14²®åÖ\8a3øòÜ\88Ç\82ÿ¿\11C\85çå÷ëå[ú\96þË\95G¦´ãFÊ(7j[f»-Ñ\bEúT^ºÁ|Îo¼dí\9aÚÝ\13EÇý/\ 2(\94lÈå¦ô×ÏDôb\1fl¿8ÌáÞ³\93s\ 5ì(\8e¿FSkh«@ßåvvh"Ã'\v~\97\8dhw`2\9eSÌd>£ç\94þJ ð»f¾\9féé,²{ÈNüçºq:áIÉw\1aDÜJÞ[Ë3Sùþ\87\89»\15úkÁMÉ:Cb%ó\b\ f\8f/Ù#\96\9c\v­ñl\17\ 2\8eGsS1Ð\88Ø\12'Óy4ó\9b&I\92¡è\1f£?'  \88©endstream
+endobj
+1130 0 obj
+662
+endobj
+1131 0 obj<</Type/Page/Parent 794 0 R/Contents 1132 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 338 0 R>>endobj
+1132 0 obj<</Length 1133 0 R/Filter/FlateDecode>>stream
+x\ 1}WaoÛ6\10ý\9e_q\b0,\ 5RÙ²\93Ø)Plëºv\ 5öak\r\f\ 5ú\85\92(\8b\r%j$\15Çÿ~ï\8e\92í:ÝÐF\96-òx÷îÝ»Ó?\179Íñ/§Õ\82\96wT¶\17o6\17¿m.æÙzMÇ\8bßâË\9cÖ7Ù\rݬW¸].³;ò\9a\80g°r¸`õìÝ=-æ´©aünµ¦M%ÏñKyõk£ú¨=å÷\19}Ô½óÑt[z3lÃ\8bÍ×\vÞ\99ߤ\9d/\97y¶ÀÞ+,Í3úÐE瑱\8cÆuié\råù¸t±â\85\9bF\93n\95±¤ªÊë\10¨v\9e\8aa\v_ù¤@&PPm¡~\96kæü\96MÍéåâ\ eÁÁÄ\9fV« )ª\a\`.\9a\16\17\a\ 3ªÂ\ fØ_\e«©Ð°¬iï\ 6
+CÑ\9aHêä\9c\8c~±Á]S\9f\8c\ 5­ÉÔ\84E\8d
+T6ªÛêj<7_¦\18\v\1dwZw8Gö\84kÂÒ\9d¦VíqXÚÄ@±OÇ\80ø\97V³E\13ZR\91\82cwásöý¸\14ü¢Ê±ñv(\eþä\18JÕñ§\ fÚÖ\1cm£mOÑ«ò\ 1\8bwÝtjF\9f\18<F\11(w\11\7fº¢b\8fà+]\99RÅgqm½\ezr5õÚ\ 1\ eÚ5\8e\1e\9d\1dº¨A\ 2Dcp\85¿×\14\1e\8cµ\81TW\91®\81n\f\19ý­\ 1H©Í#¨¦<µ\8cyÊoá\86È\88FÄÎ8!\823D{\17\82),\9cëÂN{\1cà$ÖFÁ\9aJá7fÛÀ\r\ 6°Ôì%\8c¥åâ\87\9f8u\92g\rÏ\ 68H\97\95~ÔÖõÚ\9f\1dY{\83Ev\7fy\92"ö0\92Õ \1f6\8b½\88`BÌè,Eo\1du\ eD
+aà$ò¶ñh\84Â\91¦Ì#=|[º¶Ïzï¢+\9d\rYh\vêô.\8cx\v´\ 2\15\1aÙ\ f\83@j\a\98Ïü\16r\exôa\fu\b½.\ 5Ü(¼ ÂI\85Õ-§^\9c\94\b\vä@Á\93®6ÛÁ+®ÌÃBøØq\82°\ 1Üæ\8a\87ã\811\94´¹3\178¤D.Îïä´T\ 1\1e
+\7f\18J`\873Á //èv\ eíq¼\ 2èj\1f\b\1e\ f!\8f\15¤àþ\81ÚÈçy\81|F\19ðR©\10k¸ü\1d\1e\rÛF@g2vñ[\\95/\e\10\14\15»k\f\97\14\1c\ 5$\8fº\ 3\19"ó¯,!E "\18&¥t\16z
+{§\vêÕV\83\89\18ûW³ÙA¤ÒÝL\18#ú<§\9b<\87\10'9^à\ e§\8a\1a\9f*èrµ\12u9ª/¤t\91Ñ{Ýi¯,\99®\96<ÌÞ=\93Ò7Ià\92¸\89D\9f
+\1c*FC\eX2Æô\8bÒ\ 6PkOÚ{çQ¼\7f0x&       \v\90Ü\8ar&IvÅ£q(\87\16ÀpÌg\88H\ 6£¶V
+O¾á¨\1fQ·­       \13Ý <¬vÐd0\9c\ f@W\87Ø+ßròøþ[\17Y¹¹#\94Î#\93PË=4ìI\98\90P\1dû\18\90\9dÓÇ÷\17y~\9b­i9¿G·k)¿]eËñ\9b¥OÒúh\99Ïñð´ÁýÎú\ 2w\93?\rôo$\8f\ 4yh\93r\ 6zåUeÔ¶sÁ$\10\ eÏ¥¡òó\9f\886ÜwðÿQû=\99\96[\99êâ9\83Çâ5]i\87J\83L>\8a¤\1d°GéÇ&!rl!Ìë\8e[L\18@!À¦:\148\94\9cËT6è'U2\8fw¬H\1c\18ÔT\9fe¬r\9c\85Do*-3\9fyÌU\9dÔ]dýÔ\10?B\8b\1e,\84\91\r\9ed\81\16wsðöÿ¹½\18;ö7Ü^fôVsl\96\15z\9c(\9eq\e@ñé¼\8e\e²êö\89D\b\1e­QbN5Yh4\v\ e\f\98&Êp9s\v\80Ö \19\10$Q
+¯ë!ð:X@[@\ f\11®C\9f\18Ü3¨øèc5°\1a\8bfB\9f¤ÓK\8e¡eõ`9\18X«N \9ddX\89 \89\92s<M\ fK)\84|N¡q;lûÎÑ\93\85I\16{üÐ{\83\84cj¡±!&Ã[\965é¹\95F¯·×\80\8cÅoÏZ\8bX]j¢\95       \ f\14zU>\e:6¬ø\89\ 5Õ1-²\9b=\9b½»\1d'¸+\ 6$\1dú:=\99\92vuP\90ô;¦U\99ù®\b\1d/c-8[\9fÑçS%¯\r\94\ 1LN\88r\82&\8føÈt&[À\b8\8db#\ 6,\14_\aH\88ëxè\80Èã\93iü u\ f+¨/®\12\98I\9a¦±dZ\97¡f\85L21âìW\93÷÷<°æ\987oÓ¼y\128åóÉ\13ÌÞ<\8còC\197_Ól\b~f]©ìØ\v¬)ð}\9býÐ\9em\9aêÿ?öL°\8d\e\8fÒÿ\92½ºKÓ(Ó\96J\8c\ 5\b0qYZÏìÝ\11þï:t0>â\95¢>ær'­ür|zÉ\9aÆåÐ)\f< 1î§`Ʊx\94\12Q\1d\13Ð\84\81*3\89_\a°\1c\12#øô<\88\ 3' ðm\8b\¥év\a±¼\16á\87\94µ<\85&¿\ eì;\16Ó3ö¥29ój*OÑe\19\18\94µn\97N\83\8b¤\9f0\1c\85
+\8a\9cT¦®¡qø\1at9x\13áê>DÝbj@ýÉ\f7j\16éX²\90
\98{É×õñ]\a/_Â\8eÿ\7f\93º¹[g+¼\7fñûS¾`#hq\7f\vînjÃendstream
+endobj
+1133 0 obj
+1667
+endobj
+1134 0 obj<</Type/Page/Parent 794 0 R/Contents 1135 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>>>endobj
+1135 0 obj<</Length 1136 0 R/Filter/FlateDecode>>stream
+x\ 1\8dW]oÛF\10|÷¯Øê¥2\103\92?d¥@\1f\1cÄ\ 6\f4iê¨\ 5\ 2øåH\1e©\8bÈ;õî(Yÿ¾³{¤e01R\ 4\ 1\12ÞÇîÎÎÌ\9eþ=\99Ó\f\7fæt}N\17\v\93÷«\93·w\974\9fÓªÂÊbyM«\92fÙl6£U1mU±6Vg§«o'3:;_d\97X\9f®Ö\9aøÓÛ;\&G§¡Í³ÂÙ*}\1en\9c\92¶Ñ\1fúÍWÃæÆÕÔè\9dnè÷ñ~\13(\1c¬³\87Öu\81ö&®)"Ú\ f¯)uÞÕ¯Ü\13×*ÒZ\ 5ʵ¶D]Ð%\19K®)µï«\99_dç\ÍNû`\9c\rä*ú¢Ú\\91²ØÌG\8d­Éë¨\80AI\95ó\94«b³W¾\fD\85k·*\9aÜ4&\1eøì\0\ 1U¦Ña\8cÙM\90BR½ÿ\a\89\9dj:Íi\18[x­¸\80\83ë\0IÓ §Âù\92HQ0µ5\95)\94\8dÍaØÊi'\\90\96 TãÓ¨lcQP\8b
+\9cÍè\ eµµ.D:n'·Õ^\96\83\ 4\81¬\8bd52A`\1d#ÇY\9bz­=jS\96.2ú¤\95G"¤\90\13\b\99\ 1ÈQìè\81#_\13\84\ç³78\15q\80¶^o\95ïaWôÏíÃW¢FùZÓÎ5]«\19r&R©¢\12°oW' .]-/²%].¯ñïsüõ\9aªÄów4\a}\99çWW ÷\v\9eÏße\97\19ÝÛ¨½U\r\9d\ f©U\ 3\95\99þ,\8eé}%pÔ\9as\9fÜ\7fZÝ>|ºù\83n\1f\1eþ|\98P«CPÈ\11\C·¼d(| \13±¨@3¡f"Z\r<\81OgõÓV\17\11Õr?U3\82k¿\ 6£ÈwÖ\ 2\19\99\16[ïr\95\ 3kîEÝB!Ò,ªT×ð­@·\91\96\16Ú3\83±3ÅWÜ\18N0åð8í,ø*M\1eÅ]«\1dÀãû\ eÐ\92/Á|Àî¡Ð\10uKÁU\91?=\9eöç\ 6\7f\0D,Ú\ 1\8bB¡[\95w8Ñæ%/YFC\98ü\\ 5
\945À!çº\86\vP\7f±\ 63QF\93dÔ¨\10GÉ~ùøþù\0ô¡Í.]Ã13Z­EI\95\907R\80î\ fl\fU×0\1aÂIftéöø\1fòçÜ\1a©\93\r+p\14\11Âlº\12½F?úv3² ®óq¬ÿ¯ÐnX»®á¾\ 4×WCk·§èø\8cweWè\97\81ß\90©hëB0H#£Ï\92\ 3µjûP\ 6»\82³Â\81\84\8d.\7f\14\95\85+!+\ 3R\bû\14Ü\8buÁ´RÛ-4\v¬P\ 3\bÍ\vBØ \85./\r \8c\ e@Am\8cÉñÃ\1e²×"\85\8dÖ[aû\b\9f fÊ\1aM\8e\98\9a A\91½0\84-§oAt®\11\8fý¾\11@\15\1d\93Áf\e,\9d\e\87|{7øé\8b\19U\97\e\17\94\94r?ÉTYrË\81\81w[oTD×U\#;\97\8e\ 4\8c¯d;ëqÔ-¤\98Ì töW\1e7\90\vo\12\86óÜ\9b\94ùÓ\84ɧí\b\e\9elL:\86\94ÇX\r\ fåòø\ 3TÐrÜ\89@<á\j°\99\85\1eá\9bÂT±¿Ô\ 2>2PÕ\15EçÑL63!ç(¬ðf k\v9\8d       Ó\17´±,\ 2\9c\10tË6Ó([wlm\88g\19\7f\90¥4\ 1ë\93\81\1cÞu\98      \9a\8b\1e§à´\89<ÕH\8d\92kLî\15P\e®I\81$\ 4§\90À9.bx\14\183ÌÜøx*\8eÇ\98\ 3­½ó\eB.¤\9fTÁsñû\84@Àü0\8eïÜFØ\10¥\r\ 1HºÎ
+A
+WB\81·;v®\97-g\9c\8e\10IÂp\85NÎôX³å¤F\1fÍa\148ÍÈ^\b\99¼\96úav~>ÿé0\9b/\97ãav\95ÑM\ 4W@±\9a\ 1QÃð`¢\140{Nàåï\9fm\7fó\9b v\16:\0jÁÁ·;k\9età¾YHÃGSt\98Âi\8dmÖFj\8cí\9eh\83Ù©\9b\80NÀ@\84Ê0¹®Ý"øÑl\0\1eÓ5ª°á×Ù\18\a<"jô³3%\ 2\97\91Q:¤ ®ýx*N \9a\19\9e\87èe@ÚÌÂ~2±C\14âµ=#\94 ÁP ü(j?W\a\ 6Fmòl \9fï?Lz\ 6ñ½<øñéy A\93±\vIä"áI!\92Åk\18\13\8e¥\8c4FQ\91\8e\8a\87\95
+X)8cT4\ 6àʽG\8bè'H¡"\ 6"ï:N{´¬\11kLd\87O>\9b\ 1\87î   5\9fϲÅO^G×\vpnô<Z`þpPý\1auVH&×°ó¡\15G¶ËÈ\85-Èèé\87f\0-*óôËà A\ 3%¼øá¾\1c¤\1f¸\82'g\7f´øiiª\8aκôu°ô)O\ e<f{u¾òÄg\86`\82á|è¶<¤aCñ\r9\0é÷\ 6îËýøa¸âr\14\8f<\87á\11\9adö¥\89Ä\ 3\12׫\1a\ f.`\ 1êchËS\83\7fbô>\99®Zö¿\86æ\8bël\8e_^\17é·Õ\97\9b\8fïoè³wß0xé\83+ðÔí\9fv|î,m?»>ç\17ìôÕ\87ëåb\99]ã¥Ë{æ\17|\12\ 4øëä?Oæ{¦endstream
+endobj
+1136 0 obj
+1642
+endobj
+1137 0 obj<</Type/Page/Parent 794 0 R/Contents 1138 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 341 0 R>>endobj
+1138 0 obj<</Length 1139 0 R/Filter/FlateDecode>>stream
+x\ 1U\91ÍnÂ0\10\84ïy\8a9¦R1Ù\10\bm©z¨D\8b_À²\r\ 5\12[5I\81·ï\12PSdÙòÏj¾\99õwBÈx\10Ê\1c\13    Ó$s\95\8c\17\ 5\88 Öü"«\12Ê"\13Y\96A\99ô\10ºh\1c´·¨]\8bÆaïÃ\11p'mÚú\8cã\97nñãâa\e<ΡCwpVàAí\92\17\95°\fd)E\8e¢*y\9fó\8c\ eë+u
+bXO\9dLEqÇ}óÖ\9d\ 6\15\8e@\97åó5¡|*$$e¢B\ 3ª¤ Û©Æê*.\87HD\ö?Ô2n\e\1dÏx\ e\8dÞz<\ 5ßÆP×.>öÆ{ÔÀ\8b\e¤\98k³ßÄÐy{15Tô;®\18\e\90dÉn(«8µ²éjö>\9fa\19ÃÎ\99\96\89¦k\9couËýº(\8d®å£2çvÛô/v!+Qò\7fð\1dQqkÄGò\v²ùq¢endstream
+endobj
+1139 0 obj
+290
+endobj
+1140 0 obj<</Type/Page/Parent 794 0 R/Contents 1141 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 388 0 R>>endobj
+1141 0 obj<</Length 1142 0 R/Filter/FlateDecode>>stream
+x\ 1Õ\9c[s\eÇ\11\85ßõ+ö-JU\ 2a\17»¸ä%¥K\1c«J\17ǤKy\85H\88\84M\0\f\0Jö¿÷é\9e\9eÝÓ=\8c\12!9®\8a¸Ü9\1fg{zzn½û¿Gu5Æ\7fu5kªÉ´ºØ<zvþèÉ7\8bª\19\1fªº[\8cêj:k«óËj<\1a\8fñÛ\8bÇçË÷7«j÷¡z¾Û\1eWÛãá¯ç?>ú×ù#) ¥ªZ~úþßò\9bjÚ.ðÿ\9bª­G\v»¸©Îäï\84òû«êÉ7]U×ò\97¡ëðÇè¯>¿^Þ\1eWûÊþ\18á6U×Dvº\1d\10õ(«I°©f³ÑÔ×,Ý\ eêow\9f²\9c\14\9b\18u^\9en\aùq\97Õ$ØTuÓ\8c\1a/O÷\83üåöp\ÞÜd\ 6Ë\0i\9bÑÌC¬@ ,·\97=\814 L»h\ 4\83\ 6Âùêpì\11$ÚÀeºÑ$T"\15\b\88³§¯\9f=\95f\9cÌá]ÒÊ\8fG'ø_m\9e3\99\8aWNºÑ\1c^Ùub}½0¯|òMk>\88\ e1Eá¹sÃzD^4\88³\171ÉØ\91pv\Ýf\v&O±ºÌçâÅL°Û\910þGÖ\93\ 4mX·ñaì~\ 4|¿Z\ e~@*0&ãQë+\91±\11r¼^åj°
+\ft\1fD\r~\90\ 26ËmÏ \15\18xôÐ0\19\e\19·Ë«\95\86 ¦=¥;\r\1eë\1d\výyÚ;\96^\98c\89;5\13Üä¨V\8f\9a!(©;\99>5=ë\93;\15\84Ò\9d\8c\90Ú\9e   Æ,ê\10ÜÉôÒfhF\ 6\182\ 2\9eÝ­o.×Û«¾)I\89¦l§\12\17\98\93Ñ\11Ä.E*0æ\13é´\8ea\ 5"ãÙz»Ü¯\93\ 5ÛÓ\ 5\98ì\11Þ\1fÆ\vÔ!\a\1a½ \7f¨¥·y\7f\98\ 4\7f0}j;Ö'\7f(\b¥?\18!5\1e\13\12³ 4Á\1fL_\8fç2È0 !\vÀ9E\ 6\12¡\19Ñ\80\18+\19\82\11ƺ¬\ 2c:\17Wp\8c\84-\18ëÍín\7f\niÀ\1a´âT]| À«iÁ9 bËàQOQû\93\8dWæNÎ\9bºÅ\14aѼ)]\fÞÔ-$fzoj½7e½¶¼Ó«7\95\84Â\9b2A\9bÞ\11\8c\19ë0ñÞ\94õu3FTp\0CFÀóýjy\1c\86\1aÒ¡      1>w\9e\92Á\11ñ\85T`t2ÿs5ÉØÈ8lÞ÷1\8eT\98ûÔ\8b\82a\ 5"ãb·ý°¾ºÛ/\8fë]?ø±\1e´É\f.îj\94\v\87õÍj¤¾9{èÁ¯áùS§\ 19;¢^\90#ÎcPë\82\e\9a\f«\93\e\ 6\84¦O\1eÃz#ú¿ß\ 6\174u\8d\8e\8e\86\ 1½ÜMyI#î7\11÷cB\86zÄ/»»~åÂ" ¦­ô\ 3\870ªG$¿éÝ\8fd\80ÌkD2\ f±\ 2\1e"îÒ#H$³÷V|ÎÕÃ
+xħõñ:#X\ 4DÛÆZ \0\98\1eP\1d±\84¸]î7âOX\ 24\ f\19R½ÓN\17ä¿Ó\vrÚÙ¸\98êO\83Û\9a>9\19ë\93Û\16\84Òq\8d\90ü\8c     \89Y\10ºàº¦¯\e\8d{\f\ 2pv\î\8f<7#%\1c\a\8b@t\ 1æ\18º\0qü$\95\ 2\19©@Á@ü\1cÖ\1d$\13\ f\9eañã!©@\ 1á5,©$\bË6\80\ 2\ 5c\8b\8a\88û\9dpÉà=±\9bÂî\e,\92$~è\ 5\8e\1c~\1c\9fÒ²\93DØ}\90u¬#Øm\19Ô\98Á¾H"\98~ÜHÏçJØý\88è\96½7²\b\88\89\ e\7f\8c@\ 10#¡ðF\12\8a'M$\808\8c\15\88 \ fûÝ&G!\96\939\9e\87\187BÖÛÕñr$\81U|\ 1>;\7fÈP\94\97\aúïÄ\r¦íD×\b©åô\82¼\ 1\aÐz\84I`\1f\99H\94½\81       v;2Jo°:HÃb<bDò\86¢\1aÝû¾\ e,B3¦\99\ f#r\81X\8d§7ØÒÛb*ôq5¸\16É\ 1[\88m\}2?°AæC\1dIÅ/d£Í\83¬@\ 4­û\ 5\ 3\8b$ÀÈ\ e\83\ 2\11±<dïd\11\10M-ý\95m\93\v\14\88\9e@\1a\10´{x\82\15\88\84Ëåj³Ûê0+;C\ f³rñ\9e\8c\95ÿ°>Ñ\vòä  v;\L¬¥÷¡4\84\9a>\8d\86¬·Û\91À~L"ô\ 4ÙLë\98`·#aÚ;\1eIàwã\99\84f\ 6Øý\b8ßÿ\92[\8aE@`\1a\8f¶fD.\10\19\83\e¤I)ýI§f\8ec\ 5"\87\aiR\811\17\ fðuéЯ\8a&9\/÷«ÞyY&Î;\95øì*bÜX\91åÇåúFÏ ,б\16¤V6>\1c)\17\88$Z$\91\b\bD6\ 4*®L¦F\ 4ϾY\ 6ÈB§\f\ e\b©\ e«ýÇÕ^\1e§\99£ò\9f­7µn(¨eé\97×UzA\1d¨\8e{ÑóÐ}L\9d\\9dÕ©û\ 4}ÙyL\9f<\9dõFô\7f\7f\16º\8e©ÍÉYn@//;N\ 6tsé{\fÈLOÀн]]¸\9eCRñz\99Ó{\90\15ð ^Ô°\b\blª`:áêbT\8fà®G\1aø\18ö\ 6à¨\8e°@7
+\8dq·]ÿ\9cã\bK¤³LâSä\ 2¾
+\177k\1cÇ©\87\8a[\7f6\ fu3\17½ð>;\96úe\9fÕ\vòY¬+}-q\ e\18¼ÖôÉÇX\9f¼¶ \94~k\84äfL0f¬Ã<x®éÍË\18\b(}7#\92\7f1"S#ãÿzoFÍåT¯s(£G\94\9b\ e\93LüW÷Ù\1cÄ
+DÈ2»\1f\7fu\18s\ 4\83\8b·g\7fË\10\96\ 1ÒMdüaH.\10!ï>¼»\1a\ 3\ 5­\11,\92Á\ 5e½]ü<`H¸©&MñD\99|\ fæÍy\8fa!0S9ItÏ\94\vDLõn½m~\1a\ 4g¡ÓJ¶\rÐ\0GÊÛ³'ÍÀ \95\9c®ëúÙ1¬@¤¬\8e\17èù\99X\b\f\16A\88U\8cÉ\ 5\ 5\9b{\87C\17$Z¸\8c®x%"§\8b!H´\v¬iÂÌ\10\e\8eÓA\83\89Ý\f5t\0»\1d\11ï®\97ý<\9eD\9b
+ѹõ\ 4»\1d /?ä\1a\90\ 4]
\85\99\aØý\b8¿ÆÎË0\99"\1d(Xæ\84jdpļØmÿÒ?
+ë@AÕ#ÅÀ\91òn·ÿé\9f:8È.Ø\ 3\ e\ eåp1\1au<Éi\11\95åL\f\e<ã*]\90/ÌdvÅ;\178rÇIäà\r\83
+ϯG?\8e1]\80\19\19/ÖË«íîà6Âä,*WE¶aC]2:¢¾Ûï\90ÿ²Ñ#çV²gN\94¿\10Ìê-\8aê˺+YT/È¢ÈÂ\88ë.X\94\10Ô¢\86XÌÑ\15[F\88A\vÄÙÅî¶ßJ&\r\9a\ 4«d\18\96       v?Vãå\v5"Êß\e\ 3\9fêÒ\e¶C.SoX½ Ãv÷\98u8¿M\8da\80º\9e`JÖ2Aì\1a\bϯwÞII\ 5Ë"\80Ô\9e\91±¾"<\17%\r\bØ   \8d\ 4+à    pòãîbw\93\ 3 \v\81YHSº\87É\ 5<æÕêãêÆ&¤ÓÓv\15ß\8cº^ÎýC/¨\19q\b\11§¨è\1fÃÑijHCÈl\ eÏÎ\f\82ñÝ~½u+\13ÒISÖ2\8c1%\83ceÜÜ\8ed\80L%Æ{\88\15\88\90\1fÞ¼üoß\96$\13\97\90µ\82\87X\81\b\19RØX\ 4\ 4\16Dèñîa\8c\1a\11Ã\1c\9342Ç\94}#O°\ 2\91ð\\179ùYX\b\8cfÇ8L.\101ß=\17·Ä\89Á)\86©\eýpè 3!\8dºzA¾ØH\1e^1ú\rç§É\17\rQ#å\ e3\11f\88/\16\8c\8b\9f0ôI-4+ëK\8d\86po\9cº¦©\81^\90qÐ\÷L\r\86Sºd\1cCÔø\17\f1NÁx½¼½åy\ 1ɤ\8bÉòÉA27Öå\al\10m\97\9b\94yÔÎ!ûbfÎ&\95üÛ    ¶ïûüÛta\16ålÛÉÜ{Ý}Ù¶\99¤Ù±\8e¤Ù¶\111Ì/H\0\8bâ|\ 6ÉÆZ+«\88Ý÷5¸gÆFJp&\12·\1c'£=\88wÿX$\8d+Ù4\1eaT\8f8,7ï\87ÈE*00\14v\81a\ 5\ 2cØ>\94ý SúÆ\8cÃÏd&'\10¶[\93.z\7f Ì×        \ 2¸\1f\14\91ÔÙÏÁuc&\93jäbM+\87²û\11ñr{Üï.ï°c\97\8e%Ðð\ fu,qo¨ùÝ_zKa³¥Oå\9cèÅ\10\8b&H\8d÷\r\8cg        ö1}\8d\90\1c Ù§@<=\1cî6·b\1d\9d\18w§Ï6û\r\vyÛ´\92Z\99½H/È6HÍôq\1a»
+Á6¦ÇB\r½\87õÉ4\ 5A\92pÔ(Í×å1d0o \ 4\12]\91É ÿD/È@Èðñ\13e1ÐнôÐ6\89ôL\17A\8a v;28O   á5\8b°á!û\15\8e`·#As\rQ\91\93F'²àoýè­\8b=u]\96©uõ\82¬+/¯Ð\9b#bÛ¡k&ã\99\81õév \94\965}²,ë\131è5÷ã+µëÜ\r\ e\98PÊà\90¬ \17d×qL½\17Ë\ e\1d\9bDÙk\99`·#£´­Õ!Ù\96     É¶E-&:¯ý:½ÖYWN\eû¬\9ft1X·A2B\1cP\90úÐ\87M5_&¨%\1cÁnGFaÝLPë:\821#Awq¿Rß]°ï6³\94i\9f\17d]¬&Ë!\89\96U\12H2!Y\82     \89Y0JëZ\1d\92u\99\90\98\ 5Aw)þ\14ÖÕI­E\86F/ȺÓ\98\97,\91\81Öej]#$K0!Y·`\94Ö5B².\13\8c\19k¡ë ?\85uqÌÕ\8fgr¤5®ÈºHÔ\88ãÙ\907\93\8cgúd\aÖÛmO(-kúdYÖ\eÑëu,þ*íZ\8f]H@ö`?\9c5zAfE:I\áà ;\ 4\#$30!\19¶`\94¦5B2-\13\12³ è\90ñg0.²\81\86ÑL/ȸ8b-G³áà?YÏ\bÉ\10L°Û\91Q\1a×\bɸL0f$è\88ñu\1a×½èÓ`ã¿?"K\17d\=1\89!\ 1[¨yWT÷Á2"ÙFy\86À6\98$\1dú>Ͷ%\89lØÈË\ 5®\ ev?"Rç\93Eó)w7~kÑ ÷joÙqJQL6Ò\v²,\9eõ\9e\85\19­ÌdÝÑ\18"\99\81\11\ 2QZÖôfY\ 6\182Ö"=ÂWnY9\8b\96ALWðéb°l=\8f±v\98Ú\92\0ïQËÛ¢Nm·½þì¸\1eÞ\86'\8dø«´\91#Ø}O¸^~äm_R\81\81\8f\16`3L\1fÈ\9e\ 1XüÂ#°\9bu\87³à\83\1e«#´Ï¾¤ã×ù\r\ 3Ùõ\95}k       Îº3\9b.ì9x×7\1d q ¹oß7³t\9bÖ±\8c\1e3\r\86%!I¤aä\10Æ\ 1ì~\ 4`\9fpuµGZ8½SLb \90\82\99\1f²o\9fD\8f¬×g9*²\b\88\99d´¸Ú \0~\11\ 1HݹÜ}\1a²8H''NcìB{\8a\15\88\1c¼lð )\18=\88¥\0i~½\ 3å\ 2\11ÄÉ\8a,\ 3\ 4\8e\1e\9e)\17\88\903ÙÒÖ\85³Ì\82>k¼®uA\8e\ f\82è\97\16ê6%{¤^¬\17½'Ò~s\8d\13\13? a\94î\a4\12ckA>¸\91°F²Û\91ðôjµ½L\ f\r÷ß\1d\92¤@0Ó$ep¤GÑ\v{8|7 Æ©\9d\1f\96xG\8b$0\8e¼NX³ÞnGÂ\e\1c\9eA"t\f\88g\1ea÷#âûÕawsÇï±²\16$ìâ¢\97rer\81\88Zos]X\ 4\ 4Ö"òüb\9cÜÑÛû\f2\1cÏ\90Bzy'ýÓé­@¬Âíݾ7\bËЭ\90"\11\9fø\11ò\ 3²x\9f¼Zoï\86\^\12\ 3\85Ö\bÆ\ 5\1d\15\8c \84\8a\9bô\8a\9alÒ~Öþ\99½38 ^"é\97 µ^\90\ 3\9d\87      q¿¡wêl=I`qìØÕ\bÐB3\80Ý÷\88'ÈC|r½³]}\8c$\ fô\94ùiÿØ¿Á6ÈÝè×\91\92§1Ï\8f&\9dSG¦h\9d°á\9c\ eò3DB\88d\9d\ 2¢öÁ«\18»\9b\8fý+jÈ
+}\10OøC¶©]^'\92LûE þ<8\rNFý\12P¼f\98\eès\9b¼FâF]±>Ý\8d\84Þiz\93 Ùñ3\ f_\7fÈ\18TØÛ\ 5ïNëúMv¾ôçÁ.H¿\8e#\1d\8fuúä&¯\91úß8}º\e      j\97íá\80©ÁÅuo\9bÙ\17\9d\8fÂ4µKÂÂ\87;úwÃôçÁ$X\8cùèÀç
+:\80\99XG"\16§\9bQ^\fn&\97î\87\8f\87HEì\8f'`Ôk¿\v#[¯D/F\9a4>ÕD\18\80%ùÒ?Äð\12       F2%>3ÂêÄ\8bú»Ã\8a^\97îE à3 ø\14\v\13\123\12dªHCë ÃHTË ®c¤Û\911L I\ 2½fÆ°ÞnG}\98?\93\ e©ï\92gç*a·#Ä&Ï\96ÄÔ~\86.ï}\13\ f~úóà\9b]\fb<1Õîhb|;\ 1ï´       ÈÄé¦\97\9f\ fßÆ\19Ê£E±_&o-\ fât×\8b߬\8eÏ^¾¥\ 5M/\ 2\ 1ï\85âåT"\80\89·áݸÍý\82\ 4PãÏá\95\ 3V'\9e×?_^\¯dÕ\80\14³\93\a\97:§5éº\ 23\86~HÖ\9f\87\16Ó7¹ý\80,CO\9eaj³\98\­Ìòt3&®ÄV3µ¼á\89ì{©I\ e\ 3Åß\7fõúÛ·gçC»\r2i7ùZ\1a3\8c\1aë ßî\10ÓcçîK\1eÐ×î \1eëð~ø×\9f\87Vhb\82\8cÄô0ü\9b\6Âj¼Ý\ 3\16w\9d\82à­8\88`ED³¹#\183V\82¬xr\a¦É\82û±Ö-ÿás\98ú\93~\ e\13\8b\1c&ÒÆñ 5l\ eÊÄáñ\99|@±B\8aö\8fxù±z±»¸Ûà½?ý \90®èñ.PWý}¦I\b\8f×ò+,ÆÿóèWé"bgendstream
+endobj
+1142 0 obj
+4385
+endobj
+1143 0 obj<</Type/Page/Parent 794 0 R/Contents 1144 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 432 0 R>>endobj
+1144 0 obj<</Length 1145 0 R/Filter/FlateDecode>>stream
+x\ 1Í\9c[s\eÇ\11\85ßõ+ö!\ fÊC`ì\r\97§\94,Y±ª"\95\12ÑQªRy\80@\90\84Mp\19\0\94ì\7f\9fÓ3=3§{¡²n¦dWÙXî\9c\ f³====\97Åÿ\1eÔÕ\14ÿÖÕ¼©ÚYµÞ=øþìÁwO\97U3­Î.ªº_Nêj6荒ój:\99Nñ×õóÕ\9bëM5\T\8f\87\9bãææxøóÙÏ\ f~8{ \ 5B©ª\96OÿüÛ\83v6\99V³n\89ÿîªY;éõâºz%_ä\ 4ûË껧]U×òըͬÇ×Ñ÷¶\93vÒM*ý6ÂíªÅbÒZv¼í\bO^¼Jr(\9a\µºi|Ýâ}§ÿû0ürw+\15h[\98íìüáä+ÿS/Ô\1cÑÔm?YdS\87\v\98\13E\16#\83öΠJXv\93\ e
+Á)!\1atÄxý¬Ø\94D»ªn\16\13ùRBè}_\r²j\83\ 6ìZ/\8d\1d3XµïÅeÂ\ 5YµiqÓºiqR\92ìªùRlÊz½í       ?\ eï\92\9b\92FLÚJwd\82Þ÷\847ûáÝa{s\99\ 4g&M`8©\80\a]Üݬ\8fÛáæ\90\ 5iÑûgJpOZÝ\9cg\ 6©v\b5sÿT      ë\19WÅ0¬\ 2£^øz¤\ 2\9eq\1cR5X\ 4D_ûj¤\ 2\1eq¾¹½\1e\18\12\ 2\83\16A\98ã6Jd\8f9\1cC UWc!0ËŨ6Jö\182,«vUÛ·\93¹«\8ab=£Â#mnι>¬\ 6k9÷\ 6N\ 5<Ëû\1eKwU×t2&°}R\ 1\ fºc\ ff\1d\88\82\ 2ÀzÆ«ÕîÍJ,ÜÌÑyMhq\9d|*½3uòpA\9d¼\9eâ¦íä%pÆ^¬úy;YV3ÖÇÛ#Âó<\14\91\ 4=
+\9e\8c¾É\80x\7f\ 4x½½9G/OnÈB`ú\99´\17c´À\88sجïöÛcög\96\ 2´¬Å\9f\r(²G áÖF
+RJ\ f\9dJô4\9cX`Äa\87&\15\18\8d«Ø\11\83#\ 5©ÀèZ_\ fÅ\8e\18\14)H\ 4\ 4r\ 3\84a~\14¥\8e\10ëáæb{y·ß¤Vb-z\15üÕ\19W\v\8cHUðä\84a!0mHÓ¸BZ`\84¹\18ö\99A*0\16So[Å\8e\18\87Ífw½9dÏc©tð0î\9bÊDö\b´Eúx¹_\89×H\17íz\8c¤¦\8bæäª\99ò\80Ü/ghCÍ(ãEé«="U3ꫵMs\12a\81\8c²2\84\90æ\8c\19?\1dr\13\92\ 6ÝcÚ \9c\19\82Þ÷µ(ý\9d5 t3\18Þ\10P\0\7fð\0ßßI\aʬC\ 6l)ZÀs^\9c%\ f`\11\10s±ªE(Õ#V¹íY\ 4ÄB\82¨E(u\84¸Éµ \11:\17"»Gh\81\11âîx\85éÇv\1d<(á\18 }µövI\ 5<î°Ù¿ÝìÃX1\83æ´#f\8fü\98\ fMm¼\17\ e\92çC}¸ ï]\8cÇ\99Æù®ê\11=Ñâ¬\8f¾ë\bÏW¿d×%        \1a+\8cÄ\ 6 ÷m\15Làa\11\10\b­3[\a\14À\1f,a\95Ú\86Ë\8bÃɨj*\90
+Xýn³{³Éq\8beâr\8d7C*`!\98¯j+°\ 4\80e\8f\18lk¡L\vX\15\8f%  \¬î0\1cX\80\16°\80çyÄg\89¸¼L\90\r \15°\0\17\ 1X\a
+:\9a³&
+\0k\19¥÷³\0ñ\1fOá+¡D\vðé\ 2\v\81éæ\1e\83\ 2£Z\9c\ f»Õ6\ 4ý¶A\8eú }Íõ©Ù\12YS\1a\11Â\ 5õ)ø\99\9føöXKHþ\10»\8d\12j\8c\1a#âý\11\ 4«\1fvlg)ü
+9\ 3ü\8aAZ`D²=\8ct  {ô\94X`D¡ L" f2 Û\8aÄ\ 2cDqq\12Á·Z\99IXD,0F\9c\ eÊ\ 4\0n6õ\ f¥ß0ÂQPîÑË>ÁQ~/P7\8d      ÎÈmó\¿\ f\17äHý\1c7í4`\96Ý(äùQ\ 2£#ÿ\81Ñ\19 ÷=\ 2n´¾ÆT\asl©Hß`\10þ\ 3\1eó÷Ìð\9eûM«ÖÁZ]Õ·\92Ã#Å\934<^¨q¾{Úëº\9d\94ª]\ 2öøju{,\ 1\9cä\98o5\9e¥·=\84\16U\8a\ 4\86®eMÄTF\91\1e\90ú+/\8b\90\18¨.týð\90ú\\89îY/\1f=OÑ\83U`ÀEÐS\f\9eA©8«Ð=jY\ 6³\fÅzÆùöpÜoßÜ\1d7yq\85ÕÒs±\16kY©\80g\81\92\9e\89U`Ì\11-\1d£\15\9b\1aÙØ~u}\9d§\92¬ÄØ\10fçæ¹R\ 1Oªv«\9bÕey(\96\ 2\84\19(\15ð \95   GâË3Éû> \835\9d\89\vµ\8ckº<Ð\87\8bìú´dÝ×v Afàâ\83r\16sq{æÄðàôfd \8d\ 4\18      T\86 ÷m\rh2Í\12\0à£0"W!\15°\ 4øºX\ 2+6Ë\ f±Û{\ 2É\97ú³k\96i\eÆýh¼pAázÚ¹q¿\9b\94\\9a$b͹\8cH\fÐû\1eñdÜãX\fÔ<\84'F¥\ 2\9eõhì\9c²8ñ\ 1Îù¥¬\998MÏÎÞ-§e\10\8c\17Ū\1d:\9f\1d\ 41ó´N\9eô\98{-*£\ fF\1d\13(\9c\92\ 6¶Ä\14¶µ\ 4½ïë\90\82»\99
\1c°0z\9bê¤\ 2\9e¶-y\10\89\80Àò©«O¢zÄa÷f²F\86(vÅ\0ð¾\85\8dÔ\0_ðÿÍLÛR\86ì\ e3ø<dÇ\8b\1c·Ê\90ÝÍdk\83\13\9bSCvb\85ñÕ°Â\90=\86Ð\12©ô\89¤_Ê\8cÍè\95è+ñãp8ÒhM:4ÅTrHCÑû\9eRf\9f$\11ß\92E3\ 3HLOx¾]ï\87Ãp\91ÇGÖb|\9cÊÂ\95%)Ü\93ND\ fV\83ÕÌ|­R\ 1ÏzºÅ.¬65Ë\0\99I\ 2a*\94
+xÈ«ß\ eÇÍ.cH\b\fÖ\16\9c\89\13Ùc\8eûM©\vÉ\0Á:Vjzõ¼Äõ\90!÷:\16a¸ÇHå\1c&\15ð\880^\8aM0­ü\8c\9dÄf®v\r»ª\1d6xòØ\1f/r\1f¢±¿ëm\17Â|Å\85EåÈpÐ`\v
+\8a\ 1\9eÝ ¹»\8bÛoR\1føTÿ5\ 6\87÷Å&g¥v\1e\86â0[îÂ\85>\1cö\9e»Vv58À\88u\8a}H\84Íü¥\98\87        zÛ3^\fÇM\984a%kñ-Y&Z¬I{ó!\10×\92³êÜ©\v\17Ù\89(\10\87Ô\9fít2\10++\86MfÅ@<\82Ð$5\ 4bÕ££Î1\99\93\8a%?\8c·¥óp%~zñìß)F\90\bA\14í\8a\b½ï\11/7ûÝö ÓÜ\ 4b-HX\ 4C°aR*àQßo\8f\99d\80\ 1c\9e\81h\ 1\ fá¼\98T1\ 2\0\v¨'øÕ8Dî¤\ 3¥\13\9745\91\10,\ 5<\87VäH\ 4Ä|\91\81Ú<\89ê\11\8fÖkÚ\8fa!¢'6\141αMR\ 1\8fA\12\ fש\81\ e²\98ô|©c+Úsþ\8e\1c9öK\99b|Z:Û\98#\18-\12/IcB\9c\8c\17¹÷P\bn\97\12:Øs1\9aÚ \9cHX¡]b")Øäû2\98\8c  ÿÚnÞq\12Rtð7,\9aö\96¢\_\ fv7\12\89ßË\82\90©H¢zÆújusIUa©ø¾Ä_\v\aqwf\99¸­¬¦X\88r=ä6wèÜ\19Y\r\16\96\96\95
+x\96Ùég\1d(8+â\1a*\15ð\14ì\ 6%×e\15\\17\93±ÖÕD±\9eQ:#\8bÄû%V\1aä\ 2\1eQ\8dVÈI\v\12VS:GÒ\ 2\9et¾]]\ f\97¡'!\ 5ú\88)\84ë<xÖ\9c¿´á"u`xÞÂNæ°\aè:\8cªÃI#£\8e\9dÑéýÙ¥¨ØU\98RÂ~üå
+´__öÜI\10;\1a\9c\9båzßÊߢ³&\1f\90n\944  #D÷fB*`\11\17\94\b\88°\96o\11\bï\0,\94\8e*\87T,FÉ\16CC%I\0À\fÜ?\8a\16°\802ó!\ 5º\14ÖáÐ¥\8c\80Õ\9bÕ'VI \90C[\86\91
+XÆájµßHöÚÈñªO\e\vÞ\97\80\96¿;\87\9fËÂC\1a\ 59<Ögl*\8a5\ 6çòª\8f±\9cõÑåG\84\93c\84Bd        \19Á\87)Êõõ0\9eG*´8\92\18X\9b\19      ë!û\9bÍþpµ\r§TC\ù£l^¬\7fú\93k\93^v¡R\9b\84\vj\13<\9fu\eìeº6Q}´\1dëc\9b\8c\b'ÛD!j<¦(××ãD\9b$F\13ò\ 5f$¬\87\94375\89$ ÈfAk\10ZÀ#ηûÍú8ìóÒ:k¥KËÎ\8c%)Ü\93hÜÖIå}L\9dZs\80§ÅQ\1f\99\f\85y]¼ gÀ¢\9f\9d~\883\944\8eD\98\ 1\1eCÐÛ\9eÁ«%$B#`\8e\8f\1c.ÔH+¡÷=¢LaÂ\90\8cùûG\fɧûÈgÿÕÙ5\fGÉ®á\82ì\8a=X\9f\1có\82x4\9c\12ê©LìZFè}\ fy2òL\92\8a\8f\8b\99\f(±=ilß/z
+çclíÌZÇ7\18b¤    \17dVyU\82ÞR\807¹È¥ê\1aË\84\bâ,\8f@\ax>\9co/~ã<\9f\840(6bà¯\8cQ²ã\98ÐE"qy9ce\11±\80CPà"     \08\19\82ÔÊÔ!\16p\80qØ"¥\84-9/f9±\80㸠\85®÷I\87F>Â\ 5Zsf«E\13\94\8c"\\90\a`+Îg\14´â\12\86        ÕKK!â3 úÀ\bñ\fg#÷«°ø\97\13Z\12\8b\1f,\90Õ\eT¢ûê¼Û\1e¯2\84d\80\ 1ã\ 6×\a\üÁ#hnÅ\1a\10\16c\82B=\ 3çÝqÄ|\9fwªY
+_¨å\1c¤­\8a²=È楤\93¼4L\17ù\81\12ØSÖûÍêXf\8c$\ 4&¤Z¦2\89ì1»Õá\97d\\96\87>%¶¤7`R\ 1\ f©nWûÕn\83&\8fC\8b\8cæ\9f\93·Yïm°3\92s¯xQ¼·Yú3óX¦²\11,é£\7f\19@ðÞ1â½Þ\9b\r\r*Ñ}uÆÞ\9b!ÁÑ,\ 4Þ;®ÎÈ{3!x\98%(ÔWã´÷&Pt2\v\a\9dðÞLA\10mQ\7fi.m¡\ 4ö\14\8eî\rÉÄwe©ÂB´\80\87¬\8ezz¤8pÑÂ\811\83Æ«\80¦:
+÷$\1cظ½Å\98\15RÊéçÏôÚVHñ¥B¬$ÅóÞau;^¨uøÜQ\13NvðP|jí<±ÂÚ¹a)Ý\1f\v¦¾ \8bãI\8fwÙ`äP1­\8b\12½þå\1eÇÜi4'!¢gØ`2\18½ï1¯îno\87\81\84qÙd3\18\90ñ\a\8dm\92H\14\97u?\vÐ\ 2\1e\97uð<\84:OQ°§`1fòkX\16\90u¡Ï       u\1f\9b#=\r^\8fÊËbñ"{\15­)㸸Éï°îᢣrâ\91?\ 3\8aÑÑ\ 1\10\e÷ÃyÜ×\13\vÀo>/Ø\7f\84\ 5> hk\8d\84\97DrâÓ\84\v5\92ø\17\ 4\83fvÆQ}\1dÎ\19\19@4Î\baNr\88}ÂaÑ{ò\90ß³\8f3\ evtd\\r3#ÙÞÉQ[\8c\837Îì\9a\86\18§ø\ e\89ÐÿpT  =\87\11zßC\1eKÖBá\84\95\12OdEÁpR\ 1\ fúÏ­\ 4¦?ýWL\8cÕå¯\7f¶«5g\90\1a,\80å%\82xA\8e\87\81É÷J\89(i\18\8b¶SBxsÑ\10ô¶g¼Ú\1cÙ²¤\13ÃÊlÕPô¾§<Ùoñ\1a\13a!0\9dìé\19L*à9|<\94T`\84WÓ-C\v\ f¿b'\8e\9d\85¤\b×ÈO;W\19-àAa\10Óä\14k\ 2\7fÜBnî\80m:Å\14\a:\1cÝÉo|5á\82¼aêO}JO+kº±¹\95P£0z\1a#ô¾\87ø\11\97\84h\ 4,r !\19\93È\9eSVáI\13=ª÷\84\bõ\84ëÕþ2OTÄ_\92\ e\94°s`ë¡\ 5<åæμECBñ)\99Q[\8c\16ð\18~\8f¦\88àMµ\9c\12\b¥zD\88\9bîe\8d§5\azdÏSFþÐðñ¢x\13º\97\eïÑKldIú°ÛlôJ´\84GççÔ\aI\ 4»\87)¢Aè}\8bxAÛZ$\ 1\0ëÞs4\9f<\90>CbZBêÁ)D²\10\18lJ.\1d\16óv[Ü\994 `\96P;\82\16°\ 4\9e\8b\91\ 6\ e\84±\v?Eb\1eE\vX\82?xA:PÂû\83\86\ 2\96QöyY\09\ e]8C¤\ 2\16ðèåë\90¾ÊDèK&'ÎS1ÝÊï5Õá\82<uî\ f\14KÜ+«\8fÑ\19\95\10^\995\ 4½í\19&¿'\15\9a8l¨\1a\86Þ÷\fwÚa\ 1ÿ\8aÏ!\13\15\9c\aITÏP\87ÍþJJñW\99cZ\8e\16\18q0k
+\8b*Ø"ù:ÇçÚt\ e,\fe5òÙ¼\18\13/¨IÃj9Ïaç4\90\85\8c9éѹ`\81\0S½Þö'\91Ïʱ\bÒHs\8e\b\13\9eíBÄ.9\r)ÁAòáj\92Ð\1et6\f×\87Íñ\9bH9]«À{rº)^\9a\8fÄ!\95\97'ôé&æËnPP\ 2Î%À\1aL\88\1dmÄx}µÊÓy\12Á !«0\b½ï«±-MB\1ai\129bm\b       ê\11©mÿ*\8d\82Éؽ\fÇ9Ë\e\7f\82\85«\9c÷ɶE>­%Í\82ß\16²\eZÒYÜ, \8aĨ2Ã2\88Ø.#Èé\19Væ \13#\9eqU\12Ú×ÆG0R¢>x\7f\12Md8ZÀsâ\8c"\aB\12b¼Â{\86\8dÃh\ 1\8fy¹Zÿ\82wªB,ıÍûZsp\r\8ac %õ
+\17\14ý\9aqsº4¾V}Ø¢\8d\17ª\8f­é\b\14ûH\ 1ëã\b\fÖxøûõ¾­Aê\1dÙø¤\ 3¥\97þb(        l1æ-ÖO=\119î+\9fð\17×\1a8\89\8bpA­\81é\8aÍy¤{ùTX      ÑzL\88í1b\8cZD\ 1Ò\99Ñ¥\99 L_\v9\16\8f\97\fí\9b\96¾%[¤\86\95ð\1eöøz\8b\97\16C&'ÛO_2\93ûðÖiÍYW,\0çü |.M\82C*~I©´G\18þU\1c\7fb\84Õñ®×?ßêï¯d\a\ f¿g\92\10\12\97IF\95(göâ\ 1\98¤F^ÞUF\1d\12\17û!¿\81"\vX*B;\86\10âmO09+©\80\80zi+\11¡\1e\81\9fq\99ü\9a­PT\12be÷ÁÔ"Þö\88b\a\92@\8f­.«×Û^\9f×ı¯þe'\15'\±K\aräÄ<F\8cü\92Xø¬.ÇÛ+X\ e°AíÔî\8a\82ÂV\b\83ÂÞÊ\88°È\19T\11 É`oü\98#\9fÌ\96\8d\97\91úÉæÍÝ¥9\ f]\84  ßÂïM\11E¹þ1Â(Mós\12\8aûÈ\16®¡Dî\982àG1wapÅ\ 6â½N4:sT\ 1\1d=ïj\84Ϲ-iS£·a\ 4      |i
\e\14\92\0\840âÔßø\86\865\ f<1ïg\84Ï%º"i¶ã\1d\9cÇ\9aEÅâIx§MHl\96\91þ¤\87ª\10¾\85­\11y¯¤P\94ë«\11&_åç\13H\a\bNQÛªà6~\83Ë=Éí\9eÜS~ñõ~\7fº´3¿±\81x\98\a¸ð¹4\ 1Î\ 3yÏ, `ð=\15\87×\80Y\1coz9ϱ\8a\ 4\9b+XÎ\97\8aè\97Ç»^¯¦/Ó¬¢\93\ 6\94ßÁ`\88b=å<ÿä$ID/S\0£\8f\7f\96Ç¥¢\80\1c¯öN\9d<\0½üjõv\13¦wxMî¾²~?âD\ fÀX£¿\10\1c>\85\1füÅd*üà¯d=3Ìse¢ýðÕ£çß?ª^î\87\9fqêµz2¬ïvHÓBÊ\17\16\ fê¾úË<\9c\11{¸ÝÊ_pRà\1f\ fþ\ f\91îÓâendstream
+endobj
+1145 0 obj
+4944
+endobj
+1146 0 obj<</Type/Page/Parent 794 0 R/Contents 1147 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 477 0 R>>endobj
+1147 0 obj<</Length 1148 0 R/Filter/FlateDecode>>stream
+x\ 1Í\9cm\8f\eE\12ÇßçS\8cx\95\93\ eÇóhû¤Ó)\ 4Â\ 5\91\90K\16qo\1d¯³kðC°½     |ûûWwu÷¿j"\8e l6 \81g§ëç\9eªêªê\87ñ¯÷êj\8a\7fëjÖTíP­v÷¾º¸÷àñ¢j¦ÕÅëªî\17\93º\1af]uqYM'Ó)þºº\7f±|µ]W\87×Õ£Ãþ¼Þ\9fO\7f»øùÞ7\17÷¤AhUÕòéÅ·÷Úa2­\86n\81ÿ\9f4z±­^Ê\179\81ãUõàqWÕµ|5z3ôø:úÞù¤\9bTú]\ 4ÛUó\85'ÇÛNþåú|Þì¯\12\82¤vU=m&\vÛ»xß1nÞ$q\96\80|WOfV^\e\9bãf\7f^-\v\86\ 4\81\19¦\93Îab\ 3\87Yî/sGH\ 6\84\1f\8e\10:\92\19$µ«\9aºÏvSS)Ö1NëãÛõ1Ø¿\9dâkÅ^÷'·úOת\aDßjûÉ<ûV¸Ð\ e\8bÿ ÉÜyPï<Hågí¤E{\81©|ô \11á»Ã«¤3\92ÙU\8baÒ[\80Þö]8aÀü=!H
+\96«§âÆÜ ½ï\19ûC\ 2°\f\b-\86\88\ 6\1eq¸9¿¹9\8b*\9b\19zþ    \f÷G^á\8cÚ4\93!\e5\\90Q\9b\167mX\18\9cQU>Z\80å£QG\84\91Q\15\10ÕÏ\0Eú.¼Ç¨\8a¨[ÄÂj`\86RG\8cóq¹¿ZgË\92 ,\e\ 31c@\ 6×SÈ®Ã\9dYµëÌ\18\9d\95\87\v2'\9cÞf\97ùdæÌ©ò³¹\f\ f\96\8fæ\1c\11^,ß%-\92\f\94Ø\f\92Í\98\10ï\8f\bÏ\ f§óËÕqóæ\9c@,+æ\98I¼`\926\18¡B\98]_\8aB>U\88|ïH³6éá\84M²I¼(6é\173Ü´Clnm\92ä%Ç\r\95\ 1\ 4£\8c\11\ f/ß.÷«uÉZ$\19#×Ôr\12Ú÷å¹$P¤ñ Q))î:v\19\91Hs±\13/H±sïê\v§V\95\ eni¤£V\9dü\8bõr\9b\1c\94DÄÓ;1K é×ë}Û\81Ëõ«\9b«+Uf'Ùï\8e\95\19\·ë5| >DÕ8\84d\80*h¡\17úD\ f\1e÷Z+J«\99Ë
+\8f®\97oÎëcR\ f\89#\12\17ÁÊÒÛ\1eBæ)"Hö\1dj=#¯D/ÿr½º9nο§^\90 \18IB\9fÁè}\8fٮ߮·¡ÊB¼ÿ<l4\99t\ 3\aù¾kK\90\8f\17ÙLTÒ÷]çÂ=&\18n\f(©Ft\85\ f\87+EÅA0B<Ù\9f\8f\87Ë\9bÕysØK\9f`\8c;\8f
+\14\83\9d¢\90\ 5\r\17út¨X{$}\ey1³qêQùy\rOèY>jgDxz8æ¢\82\84b\90À0`\84Þ÷\9dX\1dvo¶ësÆHxI\92à̤ö5\9cÔÀ\83.ק\90Ua¨4$X\1a¬¹T°\96¥xÏÂüS\1d\90\850yA\96G@àÇJ\r<âä\86'\8b\ 2ÔË\94Î\80Ð\0\7fð\18\1a\9eÝ­ÕÒÙ\8bBP\9cJ\1cØU1l\85\8b<Ú((N;´â<þÞ ¨¬>h\9eYJ÷\10\948Ió$\83¨8\ 2èm\ fðj'AxÀt&\1eÀýÐû\1eóÏÔ\v\16\ 1\0y\fVb@jà    \97\87ÝrS<\91\ 4\81AF\81W\e\8c\18B\90\10\10\8bF\1cÈ ´\81G¼\î^-óó\90\1cÜp:x\85$°§4\93ßdHÔ5ÊÜO\94È»9g\81n1\rÉ\1a+\12ó*^d¿¤,Ð-j\97­áS%\r\904¼ªG¨1(½í\11ß\1d6{ZÝ!9q*Y\822\14½ï)Ëâ\ e$\ 3\ 2¢Jg     \80â\ f\1eðì"\9b\91D\0\18¤$3]HL\8føÚº% \ 23\1f¼>\12ÙcÞmÎ×¹/$&ë;\92Zm_´\81\87\18Çd9PZIù\86\92\1ax
+\12²:æ-OJ\9d;Î$\96ì0Q\13w\f\17%×v¨\88m5\f',É\96\84áI\19 ·=¨\8b¤`¸ºÁ¨4\9dÐû\9eÁK{$\ 4\ 4\82\a¼\98»\91¨\9eñÓf\7fyxwÊæ'Iñ!Il\96ÓË\1f\91\ 5ß\9cd\8b\10lßÔ\88\8e\16¡T\ f\89Þ\1c×\bç·\96\1e¹ÞZ\98\90\84á#õV4X¸ \1f\18d\ 2É\19\12>ÐæôF2Xd\96\9a§c\80Þö\88\9f®s½O2!\92Áz\fÐÛ\1e°ÉvC\90J"âA²Øc\0\vØ`ô\bçë\ 2`\19\10\90Ñ1b¹\v©\81ïÃ+¬\95\97Ù\13\v\ 23´âÊ\ 6£d\8f9_S@%1IkSqB\ 3Ñ\ 6\1eâë\ 5\16\15P\bf\fJ\r<(W\f,\ 3ÂX-©\81\ 5ï\7f\89\835\vøÃíeÙ.y±Ô{];+õ^¼ÈyµÔ{\1d\96\7fÿ\7f½\97X¡83¬Pï\8d!('R\10 \99\94\99CÏ´3zÛ÷âÇýæõ¦¬üÄÌ«OT·2±6ÝÐû\9eòýáê°Ï#\83åà\913\19ä\86\92\1ax\f\1cûÝz]²<IJX\93]\fËÑ\ 6\9eã",K\82Ó\86z\83u\93\1axN©\17X\b\b¬øb¬\1aD+}ó\0J\17,\ 3\ 2\8a±Ö\11\14ê\19?>{òßdc\16ÛUm=\97±nº¡\\ f¹9QùÅr à{1Ø\99\92\1ax
+ôú
+ÉKF\18\94øÁåB_\9bà\1fÖÁRð\ f\17yÜp=ÚÈ\94Á¤\ 1\94ÐÙëc\9cW\14&#\18\8f\8cÒÛ\1eñðÕ       +ú«°Ç\12ötn/VPòûÓ\1f\9d¢0ÈK¥\14.(K¢
+q\95\12¦ÀN=
+¨±u\b\7faBÔÏ\88ñY¯ÚXí´0z®!âEÑN»\90Ýgç<®\86H\80¹l\e\18@PÎ\18ñÓõ2o=\90\10"]3\87«\1a\84Þ÷½Ð\81\94\865\vJ
+\9fÁL\ 6\93\1axÎóãáí\ 6\v7aD\ e\18ÆwâÇΠs)\8c0®%̶á\82\f2\1f\8deÔ+Å]\8b\fô\80*¤·\84a\81kK¸X\1e¯ÖÙ\1e,#\ 6\91\85\87ÔÀB~<E\1d"Å|&K¸}\98\94áàFØJogò \1a\ 5étÖ¸ÒBFxÑ©<S\ 2\84ªÖ\0¢\93\8f\10ÿ>ä}:\92\11\95Ê>\9d!è}ß\89\91\8f\17A`° 
\86ÇÒ'Iä\11çpü%®¯K¶»\13\a\97Àí\f\82rJ¶Á£\93\87\v2\b2ªõ¯`\10ïæ\8a\88Q¹e\86¸ù\88ñt³:\1eN\87×Å×C8\8f\82¢Q\99Ã\1aL"ûÞ¼Xï\ e´`L\82À bv\ e£\r<\ 6Á\a{\867e\ 5\9be¥^\ewHá\9eôh¹Õ-\94O2þ\9c)±r\18Òk\88\82LÙÉÒ\92K ¨gËè*R¨º¥þh\19!\96\1c!\9e-wy¹\9eD |¬Ú`¬2`!×¾\ f/q´g³Ê\f\16\ 3\ 4³-$2\86¤\ 6#\ e\96¡V×aÂ\84\9dý;\1a[}ËUa\8b9GHçA¯á\82¬\ 1ý\8cÒ9\9eÖYC\11âþÐ\1e\1c#Æó-öYñ9í\b\vB\9fáø\95Á¤\ 6¾7\ foÎ×8B´Y-e»+gw\ 2Äa\81\ 1ƽJßàqO±q¶Íɽ»}û8S`%²$òpA¦\90C\88tþ/D8J:Á|
\929b=\ 3Ä\ e\ e\80\14\9c7\84I\0ú\a\1a\a Y<Þw\0\9a\b\0]#Ã\92\ 1ÚÀ\11¾=\1eè\b!I\81\81\9dnXÍ0:ôÊ\11\9e|\9d\8dN\ 20:\ e\15\8dxlà\0\ f·ÛCô\1eñEì¦~ð$ëOO2|ÃÞ\9c\95h§ñð^Lpá\82\8c\8fm\ f»\98\11Ì_Îï\91\14¢¢,ÆD\9e"Äü#Ä\8bõéf\9b\93\e       Aû(\82àAÜ\v½ïûñh¹º.çOî°\PíZ¥6pÜP5H\9a\8b\17\r\96\9cGU\ 3©´ÈÈ\98\90\93,\86\10ê¸1ãÉþtFvµ\ 1\89¤E¹²#`XÀã\ f¾;<ÀH\ 6\84°Xn    ÚÀ3p*ùõæêæ\18ú#.>|Âý0±\893È,\1e\7f\vþÚ\84\v2ÈÜ\1f\7f\83\97c\ 6m³M\94\82\12pü£«\f\ 3\8c\18\9fïÔÚ©f\88§Ð¢jÂ\ 5©\ 6SÔQ"Æz¬S\8d"jì÷×UÃ\f\88ñbýëÍæ¸Þ¥cëpé;?ý*.\93\8e<\85©XÓÇCdQ/á\82ôÒ\8f\8aÅÞ\97'     P\87\13\0ñJ  ¢\15G¸X\9fø\<\vÉÐ\95)\91\ 6\1f\17\12\14i}¶\88\ 1ÒK\96±\10åZÈ\ fñLr-~qwÓ0k\f,Cæy±¬Ñæ#â8°Ót\122]\91R\8e\80©\0)\bú°4\9c ñþ\88ñýf·9\87ð\15&¥x\7fâsðQM7\83©¥åÈLI7á\82\\15gËGé¦\9cî\8d\0\ e×d\82Þ÷\fÄ÷Õ\16\8bÍñ°×gª\1cÙµ\91m(\99g\84}\95x¡ºá£\8bÍÔ\9f'zß)\9dÄÂ\14\1e\19 \80\95¥t\ fÁzkª\13I\ 6Û\98²wg\0\ 3xu¦Èè6¦\ 1\ 3Îù-\85°\8d\99\9e@Îç¸GÀ6æ{´ i¼LAI\10!\ 5Y\ fã\8f5\91Ⱦ#fS\9eå@ÁQg§\8eÔÀSdÎ\98&o$%\85·¬5Ø\9eh\ 3ÏXæøÈB@Ô3q~~\98Ô`\84H\9d`\19\100XPP\19\82B=\ 1\a¨wËcÞ£fIìÔ\80à9\8aö\1c{L\85\ 5\81Á°DùÉÝI\r<F^";\1e¶Ûõ1LGdùùÃ#ÿ`&\165\96ÄìR\82s¼È\ 3\8f¶}p,Ð\86n,&åA\13\82O\ 2ÕHHxK.`\95¤÷-áùq}\94\ 2ã´¡µ/\92\95L(gÂ\f        püÁ\82p²û²Ì1î2ú;Íâ\ 5\98\9c\fëp¡ú@2\94]Xû\18\bB%\fE\8d) ®å¨¤!è}Ïøj¹úå
+³æ¸'\bõý\15ÿÐÜõ\91ÿçt\83\aÈ©PÞ¹\eÒ»d¢\eLB\*l¸j\v\9eª\80\1a\ 3·\85\ 4\11ð\19\9e<b¤©\ em¼²0Ü\r+QP3£R\ 3ß\1f,+¥ÐÂR`\84¢Ú2\14ë\19\92\9cDI9ùm)ÚÀSl`aA`\10XD\9b¤\9bÔÀc\`\91©Ó\87\a\96?å1\83)\18ë\8eN\9dÅ\v\1a#\9d?\1f%\e£.ê( Fe\0\95\85+\13uF\8cGÇ5ÊÅòj+KÂ\80Xf\82Î\98\93\1aøÎ<\rk\eÅ\11HR\1cA6$,G\exÎÅñæ\94×YXNr\9d\9cø°\14\ 5{ÊÃÕ
+ãþ\\92&\89\ 2\84ù?|\9b\1f+±=\88\96\15X
+\f¸ Â±a(Ö3ÜùR\96\8ciÓ©&5ð\9c\8dL>ÓX\93´\98$ÁÁ\1cÁ)'5ð\9cR^±\10\10Ø!®í#¥\ 6#D\19ò,\ 5\ 6Nb9Õ¦\ 6\9e\11\a«¤n\1crøÀÐ<\98WHêVOêɺn¼ q\13èf¢%ã\86òu\91\82§b\19\ f#'\0ÓÈ\81ZG\8c§ËýMy\85\8a¥dÔ\84\9cÏ\8cÔÀ\9f
+\8bÃ\8fVãI\14 \1c¾\94/\97§ÓÎ\80ý\9eÞÐ\e\r$\ 2\0\16"aQ\ 3Ð\ 6¾'~ü\92$\9c\1dÇ\<G\ex\8e\19¿,\97\87\f÷&5ð\944~\83wÈ3|ôøë<\b{ñy7A6æ§Iá\92\81\e·\9a$þCÕIð\1f\ 5\88®\11\16\98\80u\13Oøâ\87ý\97È\9a_>ÞþþE\1aÎ,        ËÍ°4c9©\81íÌÈ\83H\10\18\14\9e\8dÃh\ 3\8b!\ f"\11±¼\9c¼5Ï\93\98\16àü\87å@Á*\ eF\15k%5°\14ë=$\ 5\ 6^<Åè6\fm`\19ì;X ùX¾3Ìt\ e\17\16ÚäÅ\90\ 6ã\87\v
+9S\7f6-¤j·\13\98\10²(\86ÁÅ\fq\99\11Ã¥\11\16\83¡q8\ 4þÂ\90ÔÀ÷\85Ë5\92\ 2£\97µ\aËÐ\ 6\9e\11SQv]\12\ 4\ 6Ŧï
+~ýaü@%\ f±\b\0\ e\9f3Ï¢Lß\ f~\16\92\82·Ä\84o\18ÚÀ3(\ fÝÞKX¶\1a\1cÌ»/xw3Wÿásñ$¬\7f\8cj\7f·ë¢Òbí^Þ/Ís\87\8f\0\8f\ e»\1då\9b"\ 5½£:\9c\e\84B}'p¶\ 2¿ã²Ë\95\b   \8aù¥\88å\8eèmO¡Ò\8ad\0\80ìÂ\ 2\ 3¾9\1e\ fñ'D\90\9en­D·\96\8bWÖ~x}!\9f\80\f\9f\8býæ£ó\8f(¨mÍ®Òáì2K\aó\8dä_þ~:¯wià\15!¨-̬\98\10ïú\1e<?l7«Íº\18¯È\ 1\12NÓ0D±\9eÂÆ+2\0àm ¶2\80\ 3àC¯7éü\80Üüè\19þ}\86Ë\7f\9bM9\9ac\16\91Oi\86ÏÅ\82ØI±é\ 5\81Å-D«4ò&~ÙAH*\1d,8\92\1f\1dÐTqy!\a¿\ 3\11è¿ÿ\80\98\97Ï"\90\90x\80dY&èm\8f¸^o˯\b\15¡h~G\88·=aE/gÀ¾*#\0  !¦\vñ¶\a<I.L\12\10G\88Æïl\90\ eô¶\17Ç¡Êð*\ 5Ö;>µçÀ\85fæ¨8\ e\væ%Ãð¹8O?
+Þå×0\82w¨,ÎYÉÏ
+\80îã¤íâF\11\11ÃK±Èòñ®ýv]ÕÈ\8a/Bb7ÙCa\822-âõ¡x^\91\808B\rÞ)§\a\15wo>\90\94\14\9ar\86Å "Ô"\16¿=xúM\98\15ȯ\8fÝêoFÍÌv\156Kr½\17>\17+c%c´x\89\99t    óR#ª|\f§\f@­7\ 2¤Õ9{0"\ 4êÄÁë£xoE:¥\1dQ²ï\8b\1c±8Æ_88ý#Û¾HCó8í\85·Á\18\15o{Ô3¼\0\83ã®        Br\80àe2\vÑÛ\1e\12_Æ   \16\94oüè6\9c\99õüpæ]\ fÂ\86ÏÅjx\v˺\16â/\ 2\8fµ\9aÊGÝ2@6Ã=à\ f¬\968A±ÌQ²Gý\81Õ\14\15\ 6\15á\1eå~»\8eäÄô\12x\18¢·=¤\9c<#\11È£>Án¥,î©bõ¶\97\7fqXîh\95\91äd\ 5L\Ç@æÍX»|\ 4\8f\8f\99\91×Û¾\13¦ähÿ¢ëÍÂ\8a-&Jú\83\85áSøýA,³\87ß\1fü²ÆÁqdD¼ì$G\14î¿|øô«\87\15¾üçõê\}}XÝÈ\19\92|ƨ\85ß\rÕ\97³pÖîþf³ÑÂä?÷þ\a\90¿\1e´endstream
+endobj
+1148 0 obj
+4511
+endobj
+1149 0 obj<</Type/Page/Parent 794 0 R/Contents 1150 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 522 0 R>>endobj
+1150 0 obj<</Length 1151 0 R/Filter/FlateDecode>>stream
+x\ 1Í\9c[\93\e·\11\85ßõ+ø\14;\ fYsn$'/)]"G\15K«h\95Òc\8aâÎJ\8c\96K\9aäJv~}N\ 3\rÌé\ 6å²ÊÞ\95­*\17g\aç#\ 6h4\1a\r\f\7f|PM¦øWMæõ¤\99MV\9b\a\8f^?øîi?©§\93×W\93ªëϪÉlÞN^_N¦gÓ)þºúöõòíõ0Ù^M\1eoo\8eÃÍñðç×ÿ}ð÷×\ f¤@(5©äÓ«ï\1f4³³édÖöøÿf2\9b\9e-ôâzr!_ä\ 4ûw\93ï\9e\93ª\92¯Fmf\1d¾\8e¾·ªÏú³\89~\19Ñ6\93j1=ë,;Þw\84'çÏ\1f>{ñ\9fÇç/^¿:ÿáìøÓ1á\98 ¼ÙYcyZÀ\ 1ÿ:êGÅfR7ÕYíõ¡\80Ó¿Yß\n?\1d\12\85u ´\8b³¹¥h\ 1Gyñ:\ 3H\ 2\0\1eÃ5¹2\1dàÉv³\ßd\bÉ6\93¦nü³(×AÄ\1aöÛëDa\1d(Më{H\v\9f²\9e\14ÐÏJ},àô\17ËÍÛ¥ØH-\8d'\ 6ôíÙ¯üoÞ\8f\86<\99ÕõÙ\fVÛVg½^¨Õ~÷´S\e\85m£qfÆH\1f¿_î\8eÃ>=\ 5É7\93nqÖZ\96Þö\90ªÉvN\9aÍdÑÈp\f5ÓÊèm\ føÇöSª\ 1i6\93¾\93\ 1É\0½í\ 1ÇmÒ\93\ 4\ 3£je`0 ÇÀ+Zááj\1cY$\ 1 \ e\80ÄôUXæaÁ" \9aâ!R\81\ 2\91\1e\825 Ì\eß©(pâ1\1e-W\1fnw\19B2\f.t\92³\8cÄõÕpÃ\8b\84ÀÌf¾O\13Ùct\80]\8fÖÅb æ\vß»©\80GÑ`'Qô\18®\7fA=Ñ2ËÔ(â\v\92B\9cÅT\9c\ 5wo*à«ðòv?\ÿ\9c0,\ 4¦ëüHI\ 5<&\8c÷L!\1d\86ît!î\8f+\93À\9e\92\9bö2¡X\fT[ôR*àQ±³Å\93`öë½\aZÔêcâÔ8íñ\9cij\f\17ÙÉðDXMQÌL\85p\ 4ÙEÄ©NQU\15æ\fÅû\ 5ãå~Ø\ f?Þ®\ fëã\90\9e\9aÕ\18']-\13\10³P`2+P¯\86ååúæ]xè\ e\8bÜî¯ôο®\98mß®\9fÁ\1cµ}ã\85¶/Â\8b®\9fã¦kÕÚ¶j\ 2\88\8fê \10\9c\12\96\fq\19ïöÛÛ\9bKi\r4`ý\15[ö\99k\e\1c\96\82ÚfQØÛ8%Å'Wùb\8eáoäzÛ\ 2Þ¼_æ\19\81$2!\88Ó2\0½o\ 1?Þ.¯×Wë\81&\85Q\18'\ 5t)?\ 6Èø\83¥d·%\13B*\1f'\ 4),-¢\8d\90
+X½õäâï\93\f¾³®òU\82h\ 1\vÉÎ&G  ,\ 5\bu\83±qmR\ 1\vÚ\8e!\eI\0è*\8c[\vÐ\ 2\16p|\9fG>k@è%ú±\ 4\85ZÂÍpü´Ý\7fø\9b\18{;ÅLö;\r}g«³\1eM\8bq,+\89.\\90­ÎeaáƱñ\8f£
+\11\90\84P\ 61ë']\81 \0\8a\14°\94à^\8d>Þ/\b\97[²UR\89É7Ò=ü\18âVËJ\8cÖJ
+è±Ú\81Ù\19},PTâ\rúæp\\1e×£©°\1a\1d=­dü\1a\17¬+¬UÒ<Á2@à\1d[\vÑ\ 2\ 5d}Ì\ 3\98Ub³\129\98\8ah\81\82qiW+$\14Ã\9dû¶Qr\81YÅõ
+©h½óßËz\17\rÏñ]7\v\v       41l7\\90ívs·~@p\88õÖ8\v\8d*Ønðx\8c\10Û-\10\ fÙ1\90\ 4\86\83\80\bÆÏ\80\1e\86T\0Ö¹\8fX!\86+ѿѧ\ 2þ1ȳ°
+\f¬Pa+\\87TÀ3^>y\9cì\8dU2\0Âll\18\8aõ\8c\9b\1c.C\a7hÙßË=Ù\89õóWÎ\14Úf\f÷ºpA¦ÐÊ rn¬\1d\r!\8cy\ 5,$½`\0qÒ-\10\8f\97Ù\12H\83\16\fk\10CÐû¾\12&¾f\99\98Ã\L\9a\9f#\15ð\94·y\9ea\11\10XÃÃ\15\1aD-\7fð\80Ñ\15\92\ 2ú9RMN¯\ 5<Á¯åF¡xÁÞ7(È'ªaç\7f\96\89\aëetð³¤\ 2¾.c\ 4\10]O\7f71³³¾F<l
+\86Ã\ 5Y_ÈX9ëë\9cõ)\0£\ fn\87\ 1Ñú
+\ 4M¢¤   ~\fÓ\1d\ 3ô¶\985×árÌB,$\1eÑ
+TSÉ\0\18\0ü\9cÜ÷\80\81\90D,\17©G\v\0ó\84þ0ä¨\955b¸!ôãg@\81\13\ 4J\1f\90\ 4\0¤~à\a\r@\vø\87\18m\9f4bû­xsCÐ\ 2\9e`\a1éÄô«Ü²j\ e ì)\8f\9e<\ eæ\8a\14N±®ý¼\vü\8dw\9c\rWârR \18\86«"\fìx\99\1c¦R\ 5Ä \8d\ 12\95:\0Ù/\95GËO¥\ 5:Vë}[\81Ñ|Y\ 1½LòV\9f
+XÀh¾¤\80¾\93Ô\93ùþ\84´úý°»^¯\96´¾'¥X\90\96£\ 5,\87gsÒÀzBæÏ\12´\80%\1c6owËÃáÓ\18A\92\12\1cxMW\93\84\9c«õõ\10\8c°úâôî\97\18â¢Õ\10NüDÛO1D4\15\1c/Ôè8\15Üö2\90Ø{\9dJ\ 5'VÈÛ\1aVH\ 5\97\10\84ÖÉ\87\91&dr{­\99VFoûZ\\1c·{äf\12\ 4éܤ\83\ 14\12\8c\99jèý\82"iõoƸ\90\84âC$\93b0\89ì9ÿ>\fûï\9e/Wï×79$`¹\98\82\8cS\ 3K\ 5<ìáj\85DKöЬD\ e\11Á®ç´òè\9e²¾¹Úî7f\8dÄZ\90ª>·Yò6ÓÅIRje\96\0\80\90¤±\8f\94
+øÊ\8cñ\1a\8b\80\98\89ã3­\92
+xÄ\ fO\1e¾Ìõ \99\18°¤£,d6?ñ OÖûa\ 5»ù9,ë\7f9j^t¼Úiçó1Ä\8d\17y¬PF³EÖÙ\ 5»\98̲¥\87x"¡BÒÍ ô¶G £¼Û\1e\ 6©NóËuþ\12Wð;\95\84í¬\1c\8bµá"YÖlÒÎ:\17\aÁ      Ð\92PV\ 2Q#S        ¦8½RBl\9d\82ñLvç.oW\92\v\90&úc¥&­\11\94S\93m¸ Öél\8c\88¶q©É¨@ÛÀ\ 3ÀºY\1fÛÆ\11.nw»íþ8ä¹\89\85À ¯\85\98TÀÖ\84\a\1e\8b\80@\1eÐ#\94j\11\17Ãþã°\ f\eê\88ëf÷½\\15[_ÌÌxn$\9f¢\8b\866\PW`\16°Ó³$\82Ü(V\0\ 2t¸@\ 6ľ(\10\17«÷Ã&\87¼$\13c\ fN\90!zß×c9¦ªX$=Ñùz \0*æ        ¯\86ë0%\1cÞ¯i\ 3p\14\ 3\85\9d/\fV®M¢{ظ\9bÊ"\998k\19Ë\ 6¡Ô\ 2A©ZR\81\81p\1cs83\12Ö3^=Í   \15V\81\ 1ã\86\171\fÅzFÝLçiva\99L\93av1\10åz\bÜôú'\9d½\83/\92   ö·f\8e\9dá"W%A[´²pA\86[Kö\9fc5\18®[í¶
+\10û\81å2A\99\9e\81UýÕúÝ-G[,\86Å U\89I\9c\80\15\eéÄ\84k_!\80\81õ\8cOëãûÔU,\12»\13\ak+¢T\ f\11§&]ôåÇ)~ÃĹ\98\e\1fTÉRY\17}m¸ ®\84Õ\15\91D±ì\8b\1dÚ\1e\9dÉ\f¬û$.²\8cóÝpcÜ9édä˦¯¡$°\a\1cl"ø\92`êó»ÉõüRkÛælà3Cì!qv¼\18\9b³é%\13V\8c\f\8a>F\954§ìT\19\ 6\9a³d\9c\1a\19$\ 5\b\e÷\ e\94ؾ>adÜ»E\16Í»X°\896\vÉH©·\89\17Ô¦\8bÂ×Ìì$\99ä1±eôÁ×4\8e ®s\\8e\85ìV¦\84Í C\91ì\96\87ð\1cI
\fñ×V¯\ 5ì\83|\8f}îÝX        \92ÁÅ 0\85y\85vѦH\\vÙ,o\96ï\86\rÎ\11\86á!ËÓß:\13\14\9dUþÁu\1fÒÈ9ÊiÂ\ 5u\1f<c\11åÌ]\a\9aJ¬h\b±\ 3\vÆÅ°ÂLqÌ\a`X\89.@z\ 3]À5I\ 5|e¸\eI\ 5\ 6\92ª®. ë\19\aYÝÓ|<»÷åÓ"\9d½\vçb\1a\98R\9e¼ã\ 5õ\aòìÖ\840y/\\7f(\0ÛØh\82\80Ø\1d\ 5\82\9d=\89Ð\8aµl=\e\84Þ÷µ8ì\86Õzy=\8e\aR\82\83%\0Æ W%¡=hy<î×oo\8f´\7fLbéX9\95kQZÀ£\90ÙÈ\11\0©$â\93µ\91eh\ 1Ï`ã\b+\13\9c\9b\8c \95C`ɧ\86\v2\ 2\1cȲS6\8cÀ\9d\ en\14P!^\9e\95±\82\82ñ÷\9f\96\9b\1dÎ6«kga¶\ 4®H*àëòÃ\93gO3$\9aAªËLöþM]Ô\fÊÊ`ÁÎç]H)æ$\9bM\96£\ 5|eØ\ 6H%v$\1di\19ZÀ3òz\8c5bE\12\8aZ\82B=\81­H\9a\17\95½«åm?5Ss#>\0f$g·\9apAf\84-\97"ÜÁñ¶Ôy$B{\85MS\83Ðû\1eòx»\91       -\8c\16ôëâ>f´r\8e\97¾Ò¦\91\85H\83¨Af½\90y\8e\17Ú2\9c×n°Ùa§¿SyíÄ\82[i\15¬,¥{\bÂ\83ÔȤA##\97\f?\19ª¦\ 4½ï   Ï6»ýö#gmF%8ØÈÀ@cNB{ÐÛ=\8eàS\8a\9c¥\0!\93\ 6ïa@Êö ñT-\8b\80\b)L\8bPªG\84a"}\ 4¯q7Nö\84UàO½9\97\1a\8f\7f©ë\8d\17Ù2(\8b[c×ËÍÄfå%\89Ê\84\8a\e\\86\15¦â\92q\8e\fØÇõ\90\ f°³\12m\19b\1cÃI\ 5|eð\86\8aZ;\8bÄ4z\98\86E(Õ#\92i\b\a)¢¯w\96Óõ\ fÜt\9e\1aëp¡ý\83s­5Îo¹©\11ùä<Úb«+@\9a®ÁÁqÁ)!Þ/\18\8fü !%\9a´­áP\f\ 5è\10³­¹kH)]#;£\96ÓÖ'\1e\89\86\1aI\0À1\96Ö\ 1b\81²"ùM\91\ eæp\ fk\ e3ò\\87\86\89$\r¸pA\1d\8aM\1c7I!\ fé:T\ 1²JÀ cBìÐ\82ñr¿Åk\\9bÜ\ f$\94þDHm1\89ìë²\1f\ eÛëÛ´«\80Þü\9aÇ¿Å\93\99Ów5:?/Ìã\ 55lW\8c\13\97½Nr5æ\03ãÄ\11>3J´\12\15\167\1d\82&>f\1c\87\91Ã,Wûía\H\90\f]\83\83\84\1e¢\ 5ìÓ\1cnßâtnÜK¨¾R¯¸Îhè\18o\1d.¨3°!bã\f\84\bfSP2OQ¥Çx\r\ 2\89§º@ø\13\1cI\1e\8fñ\1a}8ÁQ\12Êc¼\99\11\ eÛ\18\86\1cã-\11¶3I\85ÎD^\0õæ¦\88\a\83JJìÎ<\I(É\16Ù\8a°\98X h\914£%\10K\ 1
\9a\ 1i\81\ 2$Ǿ3\84d\ 2\91¨ÆBb\81\ 2\12\ ffb5{Wî×\19 65r^A¶@fiÖ\93y\13Ç\19\8bhf\8c\eU@/Ç\16\r@o{ÄÅp<RhI:t>ö'1Wq5ô¾§Ð!2Ò\80\80~¯,!A=b\Á\91\ 6\ 4ô\15\f\90ë\90 \9eðæÙ\8b\8bÔá,\13+\96Ãp\16¢\\ fÁñ\ f\84w!À\95Ö¿«n7S­¹èÍö¦¼j7\ 6\82<\92ìfÚ\8\96\ 2nÞU@ì8\ 6D\83(\10'\rB!ÚwLQ®¯Ha\10\89еâ$\99\90 \1eQLU$E\97b}\82\800IÅ#ù¼=@\81\18IÄ&\82g3\0-àk2\9a&iÄ\8d\ 4«2\ 4-à  oÎ_ýóûWçÿ\ e;U\98\1fÛ»3¬ÞlMÕ!ß\9bâ¶pAö\83]¶"ns\89ã\ 4\88ýÌ\80h?\ 5â¤ýh-´«\99¢\_\91Â~\12!\1a\ 1\13\12Ô#>c? \14ûÚ\80Ä~\8aç)ì'\ 1bW\e\802}M¼ý(¡Æ\9a\ eÎÑ\10\14ê ñw\ 1Ä+!î½\ f¯Ô\9bÝ£
+o¼å 5^\8cVT-\8a¨È%»\93\1c¯¾Ì±\0\12\96Ê\83\ryÀÓí~ÅSҨ¨Å6ïÌ2\94j+\11Ò\14y2 \11\10\bfz\8bHTË C\11$\ 1 ÄÇæ9\12Ó\ 2è¥\ 2\92\0\0\ f\1at\rþ`å|¨\95\14Ðc\83\14¯øsC&¤%l\96\a¼ê\1f&³{ÌÕôf«$νê\81â\ 5Ù\ e\8ezÛ*#¦vYò\ 4\88ý\1cfrc=\ 5âùòCa>A\86\96\8b\96À\10Åúz\9c\ 4  kOó(\89ë)Ü\85¤BE°ÚG\17rEâ\92VζÛ\16±o\93±\10S\10Þ\vY8\8c\92=\86láNO&s0ã,\ 1£=\ 4·\92è®Â\ 5YÂÌ\1f\13\85%øDw\14aq%       $C\bù\84ª`¼Ø\8eGËI\84öÇ¡\19ø\11®\84Þ÷ÕX¾ÝÞæ\13¼,\ 3d&É\ 4\ 3I\ 5<\ 5«\9aåå
+Ã1û$ÒJ?\8a[·$-àIËËKd4\ eCÌÝËË\91÷\12£"»"~\ 4¿¢\136@«V\8fÑ\86¾\f\17Ô\97á]7\ e¤/éôì(B#"Á\0\88Ø\99\ 5äùíõqmv¿F%88\96\8dÙ\859       íÏá®ñ«@û«å*·á=:G\1e\1eòylWÙñ¨ð\8a¶L´a5\1a/´YyÇ£ªmÔvj¿#\91ÂÞ\84!)Û"°æJ\96I\8a\90Æ\80\85\87ZiEô¶\95_Hª2\ 1\90¨H\1at\v^\82D·0Aï[Â\ e="§ÜoVãî&I\ 1
+g\9a\f(±-i}8ÜÆ\9e­ï9ÓWMÓîU\1c#Ø)Ê\876dog\91Â\1eó+R\12¿Z\8f/\vàÜ\1d1DRTÜ'0,½ï\19ØáÛ-÷ëÃö&8
+¼BûÇØäsm\84ð?ç;ÂçÑ\8bàE\ f\97í\80Û°Í¢jLáí\84Õ¡M
+ýùîz»ú\10ó\8d²±x/~Ó\8f÷Ï\»f  \9b\ 4\88\99\18>\8fͲð'ø`-5ÛKÖ`Ì\84s\83\f@\12²\0¤ý¬°¼\90\95Ç\1f¤a\\9bÌèT`ø<¶I\88\8eÍ|#mBÆ"m¢z9\12\81ß\ 3\12\98\ 2Ð&\ 5à\87áãp]'\8fF\1a4*\16\ 3JS\80Þö\a\ 1­½Ý³/òvæ\1a\13Ç\19Ã\82N\1e%|\1e\e³;1êh3'+ðk_rd\9eÕhI§>¿Î/- 4Þ   \8fß[!\1a@Y¹Ð/\8ewíW\7fsµü0Î\ 6£Df\95©Ó+Ñ\ 2¶qÄ\7f\93ûq\94É\84\12~\84\84ê TÏ°?N\91E  dÄ»àL\88LKøKþú±<B>l×ÚÖS\9c\15_\ e;¼ê\847$ÃÏõ iyw©hÄ"f\93\1d\81B\9e¾ÂçÑF°\8bVLYd#á\ 5 ¨Æd\8fÃÿòYÕÁ7\17ú\vxæñUæQ\84FÆ9\¼\82@\84x××`»\93~\8aÞý+½\99âÆ\9ckΰôL\998Éb\8cÍ\89³\14¶×áÓýF_<p\88ÃKH\19\91:4g¡\97ß»JV7JÐ\98S9 Äúx×\7fÿaý¿ð\9a\9a¬Æÿ(Ó\ 1ZW[\14\91²þ\8e\14~\96\13«àð³\9cHÁá\17\bÃZ\ e¿¬xñðù£\87\13ì$ÿ\17¯\vN\9elW·rì)\9f\e!\93¿Ìå§D/¿]\7fÔõÍ¿\1eü\1f¢hÃ-endstream
+endobj
+1151 0 obj
+4777
+endobj
+1152 0 obj<</Type/Page/Parent 794 0 R/Contents 1153 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 555 0 R>>endobj
+1153 0 obj<</Length 1154 0 R/Filter/FlateDecode>>stream
+x\ 1Í\9bßo\e7\12ÇßýWì£\ 3Ü)û[Ú§ÂI/m\80\ 6icãò\92\17E^ÛêYZßJ²Óÿþ¾3\1cr\87C\15¨qE¬\ 6(Â,çãÙ/\87Ã!\97þïY\91åøSdó2«Úlµ9{suöú]\97\95yvu\93\15M7+²v^gW×Y>Ësüëêüjùõ¾Ï\86\9bìí°Ý÷ÛýîÕÕïgÿº:£\ eÜ++èo\9f~:«ÚY\9eµu\87ÿo²6\9f-¤q\9f\ f2\ 6ãmöú]\9d\15\ 5ýhxÓ6øqêç\16í¬\99eòÃ\14m\93-ªÙ<F»Ç\ 6ðaùÍ\9b+\8bMVä\95uÍ=7öß6ë=ýøb1« ÚÕõùì\14þ\83û"\8aÓ»jð6^on\88Þ¤)º,¬ª­QU\0Ý|VÃ\80h\ 2pª&\88_\86Õ\7fÖÛ[r\82{\9f\8e\99\15§,gm\10\87\eJ\9c²ÂC\13rs#\8e\0\16\8bY\93µ\1aàÄI\10\97w˱\ fa7Y!ì\8a9â(b\bÕº±\19®{\9eeå|V\9eFäY]ó\ eÁâ\83\8e\eJ×"ÇC£ëÂè*\80E\817l5Àé\9a ~\19n\83ª\93\rMf\1aá\88à\98    á¾\7fìï)hKÊL§\13´E^ëùÜt-$\11i]c\92¶Á$-­´],­\a,(Ü"\0K\9b">¯¯§\88\9d\8c\ 5Ö\83\b!PëÅýz+\11\9b\9fJÄ"U[e\91åye"\81\en(e\17IÈ"\82|ȵ\93É&ë
+D\d/\8fc§~yíí\95I\90U; ÏcÀ¸|¢À(\9aYw2áj%m;·ø°>ÜP\92Îi¢\99<P\14FT!t5ƦÑ\ 4'jÂø<®÷!\\95\15\1cI:btuÖ$\ 4¯+ù|"iÀÊÚ´nÙbY¹¡dmæé²U\94FV!¸ÀÒ\ 4'kÂH£U\b\ 5Ö\7fL\17\8d\10¨uãaì¯×«ýzØRØÖ\15\16\81\97\95תÊ.!³ò\vqC©Z×é¢UTFU!\14y\8b9Ùh\84@-äC¿\19Æ?|\1aÐv\88׺Á\8f\8c\83Ål\96\ f\ f¾äj_V×"o¢åª¢\8cïEå\86\12µ¢¥Úf\80Ú\88*\ 4\17U\9aà4M\18\97÷Ã\93WT\19APÔg\8b¬Ñ\bynÝx{¿ö;\99²ÃlzÙ8å]\85Õ\15Õâ´XqCéZ¤yUí\958¾ÅÞ     í\9dª\86\90j*ö¤)¦¿\ 6\b2v\ 1õÙzë\8aÖ\13\15\94w}>P¹¡\ 4Íë#K\95Ú(±¤BèhAn4ÁI\9a0\\94\85P\9dÌ(Ty½Ó\10ÁZGö\87­Ìü\92ª±\97\8fT\13¨u\97Ok\95kLºÖ\1c+6\ 1¨=\16éê     \8b\1a\ 5kD`]SÆ\87\90P\95   ­ÿ-Î\ 5"\80\82M;ñ©ß\1dîÝA\ 6²Ks\ 2¢rµÚJbÅAIV·5çÕº@°¹\86Èúú]#\87&Ô«1   öíÝòaß\8f\94ù\ 65+\96\8e\88%\8f-\ 4³Ý\ 3\94\r\ e^
+\1a!öL\9c\91Ç\16ðñ²ô\0eCCD\19:"ÈsK\88ç\8e\ 3\ 5Å\88¡ø\ e\16óóÇÏW\1f¹\1cyÁqÆ>J/\99u\83\ 33¿Ãs\8d0´ê<¬nÌÒ9\9f©Ú\99Jk\ f¦\f¡ÀT\ 1ñNÏ\ 2Þ]üæ\12\98\97Ï#ñY\9aÕ¨\9aÃIdk:L¬¹!¯\86S­ºZà¡\9eÐ\bØB«3Ya»V!mF\88\163*Aü¬\8a\8aÉ\82B\96\8a\87È^\88Ö\89Õrë\83^\e\11\82\bá;XÆû\89\80Ð\96HS\86à:XÂjØÞ¬o\ fÓ!\94\ 5     Á\82ÈÑ\8aú\ e\96ôñòu\98ÅÚl\93\95Ø\93\9a\1d,äór|ðï¤Í\0i¨Ê\8d<A\aü\83EàÜyÛ¯ö\81¢ì@Á\1a\81\9c¤ßÇ\83-g\bYQ\e\ 1\81\11×w°\88Lk¢í6YUÒ*\13;"`KÑ\9ah3\82t\94îõÛø\ e\16R{=´\r\bHéf|}\aKXî\ 2B\19\11\82\ e÷b'¤C\82\98\b\93\r\bsÚ¿\1a\82ë` +®Ä\ 3F\19\ 2ÓQí\19\83ÅÜL\83«­6Y\8d3T\13ª¾\83e\.7_\97?P¦®¨\129\96!m\96B\15ÇÇË\9co¸¡²TÙàa\92¥ÔF}²òYJ#(K%\88$K\89\a\92O´½ËR    !ÍR\ 1Á   E#<Õ¾\88ÍR\9eà²TLpPKø³,åI.KE$\81[\92\9e\91\92\84\ 4"é&\82\b×Bô\8cÔfH\ e8áG~Ñ\10ÎR\89®\95\8fam\ 1{\1c\12 (\8dì\ 5i\9dør¾\1d¦,§ì@YЦ*¦H\aK\91lùåÕ?\82\18\93
+\8b\91uH:XT\94í´\1d(8\15¢ø¤ø÷!/`KÁò\19\Ñf\804tF\14C\84\9bB\82¾Ú
+\fTÀf||\aËP)B\19\ 1\81\12\14)3z\17é`\11å,|RÔV`ð׳\98!XË\88R\15}ssVHU\15§»È\ fÁZF\94ª\8e\1d_ØD\85"\86¿×pÊá\86\1f5\84\15\8aòøä\99Ë)uö5Ya\ f° \9c¬\11\94¨\12ÄÅT\80(\vª\85è\10\97çÖ\89ý]?1´\19 Øµ\91ßôRò\1eèpÄ\8bå6l\15µ\r\b8\05nø\ eÖ\8f\81\1cñsIÛQ1E_¼c?\1aL®D\8dõnwèÃr«Í0·ÑÛ¾Ìâب<Ýõ¡ÀÔF@ ` APzø\ eömtºÔf\80`Ó`FÖw°\90/çJXm\aJ7\ 5\8b\f\8dï`)\8fý¸Ãañ\97W^\m\8b)\85×±/Õ\1d\vµl\1d\94Õ6 `\1dÇÄÖ²ø\ eÖ\97î\ f\1f\19 5\9f*D\10áZ\88.¨&# P±RtªáñÔ\ 4áµÐ6 ð\ 5\85\98 PKp\ 5\15\97180úk_8\8a¼Ó\eÔª#CÙ|¹Æ\94-*\fð\91\8d©:Ô¥\0ð\b.B"\ 4²E\8a°e\8d7wçá\91½\10­\13×\83WNÛ¸|S\89;>Uðé}ê\84ªjhÍ\ f> &o\f\ 1I\8c:X'nû°~\17Ê
+^´\94°¢÷ð\1d,ãa\ã\9aÍ\94p\94%8|Ø\16\83å\\8fkL° \8a2¤|Aá\19c¤C\82\19\9e¶÷Ãô%S\9b\ 2\84\88\83\ 5=\r\1añ\ eiKÊ\1a´\ 5\8b\1cò\1d,'Së§6Ã$)ècd\f\11®\85è,¨Íh®RM\12A|\a\vq3mçv\f4\r\8fí\18âS\8e¨5Í::ð«æT\85 
+ ¬ç\1a\12¯úÀ¯\9aÓ\ 1\9aÞT\1c;ðó,>\9d\8bXB·\10\qò\ 3£l\10oyCãË®\897òÜ\12ø Í3´\19 \15g\ 4\rñ\1d,åbµêw!\9bkC`æt"\1aù\82\ eø\a\váâ(¸¢¬\10\9câ,rE:XÊn8\8c«ð¡Y\eÒüáé¬1¾\83Ŭp\97Çû¢Í\0©é86òÅw°\90Çõ20\94\15\18ø¸m\19ÒÁ2Þþû\92r<N)\8eom£Ð|N\ 3\9fÝ£Å\ 3\ 1\12®\UÜ\bq¬N7+Ü54»c|Þ\b\a\98Î\1a#\8fã&D¡fÉsËx¿Ý\8fÃõ!|\84n¨¢~æ´|λ?£¯\95\89?þb\8d¥\83Ü\8a\e"\13\ e8©:0\159Vd#\8e\0ð\89\ 3\93@\ 3\ 4i\11\b\0\1f\86Ô¥\83\90\88 Ï-ÁÌNeG\93<§1Ò~x°Å짥Z\19Ñ\ 4§mN\8c\90\ e\16±££\9aÙ0ò%Dþ\fÿ½\aÙ\ e'ïÝ|ÉÄ\r5\9cUeK&\1aN\15í\9c \ 5A7Ú0¢\9aA5SÂ0£¡¬hLé&oÄðXë\8aÊ-Ú
+\fÌ7Ä\85öÃw°\f\84ÖSÿ\95OÎh#ò½ÇÂÍB;"\90\80¿²°¶ÜP#B\17\9eõ]c\1a\ f5Á&\eèà\94Õ\ 4\1a\ fC8:\1aâ\82Ȧ        \ 25\90t,<\ 1£\8f±\88\bh`\88\raõÈ\9fxP\9f¾xÞ\9bÆ\83Ê\9b\12g¹´,p\ 1â\1aaY\98¾g\96¨îãUáXyãY\bÐZÀÂ\12º\85@*\9fú\94\r\r-\85\8d\84OýÃ0îUýªM\ 1Â,ñï(®ø\ e\96ôæpë¾Âå(Á_f¦L«\16>\9bêµ»\9c«k½®\11\ 6I­Ýå"¹à\8bX\f\12óúãQní\8eXîyÂ8éµ;\96\89ï%ÈÚM\9f\8aJ\7f
+\85µ»líåXD\9fJ-´Þ;\e\1cúÓo\16D\0§M\82ø©ßöãòÞ\a±²CìáÚ\ 3bO»!Ï­#ëíÍ@Ã\8dã½goV¦\98ù;ÿfã\ f\9b¯ðe¼ä\86Ä\1f    Û\98\92¨\9b©#J\96\91j ±6w²\1aÀ\8fý×CØ\8f*\e\92\94.îG\ 4y\1e»ÀWÊÝl¦5û¥g3\8f\8c\95\14\9b¯ðë!%7\94¤5É\16-\84H\0f"\v\0'Ñsl|\88&\0'j\82À<îÇ­
+ÖÉ\10ÊâÛ\ar¶Æ8p\82éÇq\18\9d\15\ 6ã\ 4´Å\11s\94,K¹¤Ë¡Ç\r¥,>;Æ\v\19²\80º¢7Ù@\13>\8f*5ÁI\9b0.öûåê.Z\85è3\8c3ua[JK\ñlë\8dªÁ\11ëÞ\88Æ\87~ÿ'ò\85&\ 3\88°%Õ6 à;\9d%\bÔ\12ÆÃ\96î¶ù¬¦-ÁÁ}8Ë\11´å<\8c\ 3\1d\epýY~ÇUÕ\ 6\ 4ª®ðK1%7T@\14öN/\ 2B]0ä\80\10\0\ e­0G4ÀÅC\82øu¹_ݹ_¼¨þæ]ýÿ\9bå'm¸úËÝ-a\ 4\ 2\96*n\884Ô´·sßo¯ûo4\9aåIÌû¿ EQðïðàUåW"ùoü\e\8e\v¬&üË\955v|¸Hën\1d\9c_^|xs\91ý:\ e¿ÓÕ\96\1f\87Õa\83\eÉK\7f{¾â±þç\9cËûóGÉ;¿\9dý\ f¢÷ò\90endstream
+endobj
+1154 0 obj
+3118
+endobj
+1155 0 obj<</Count 21/First 1156 0 R/Last 1365 0 R>>endobj
+1156 0 obj<</Parent 1155 0 R/Title(Table of Contents)/Dest[1140 0 R/XYZ null 756 null]/Next 1157 0 R>>endobj
+1157 0 obj<</Parent 1155 0 R/Count -18/First 1158 0 R/Last 1175 0 R/Title(Chapter 1. How to Install and Test SAMBA)/Dest[798 0 R/XYZ null 750 null]/Prev 1156 0 R/Next 1176 0 R>>endobj
+1158 0 obj<</Parent 1157 0 R/Title(1.1. Step 0: Read the man pages)/Dest[798 0 R/XYZ null 726 null]/Next 1159 0 R>>endobj
+1159 0 obj<</Parent 1157 0 R/Title(1.2. Step 1: Building the Binaries)/Dest[798 0 R/XYZ null 589 null]/Prev 1158 0 R/Next 1160 0 R>>endobj
+1160 0 obj<</Parent 1157 0 R/Title(1.3. Step 2: The all important step)/Dest[798 0 R/XYZ null 174 null]/Prev 1159 0 R/Next 1161 0 R>>endobj
+1161 0 obj<</Parent 1157 0 R/Title(1.4. Step 3: Create the smb configuration file.)/Dest[801 0 R/XYZ null 735 null]/Prev 1160 0 R/Next 1162 0 R>>endobj
+1162 0 obj<</Parent 1157 0 R/Title(1.5. Step 4: Test your config file with  testparm)/Dest[801 0 R/XYZ null 375 null]/Prev 1161 0 R/Next 1163 0 R>>endobj
+1163 0 obj<</Parent 1157 0 R/Title(1.6. Step 5: Starting the smbd and nmbd)/Dest[801 0 R/XYZ null 264 null]/Prev 1162 0 R/Next 1164 0 R>>endobj
+1164 0 obj<</Parent 1157 0 R/Title(1.6.1. Step 5a: Starting from inetd.conf)/Dest[804 0 R/XYZ null 750 null]/Prev 1163 0 R/Next 1165 0 R>>endobj
+1165 0 obj<</Parent 1157 0 R/Title(1.6.2. Step 5b. Alternative: starting it as a daemon)/Dest[804 0 R/XYZ null 262 null]/Prev 1164 0 R/Next 1166 0 R>>endobj
+1166 0 obj<</Parent 1157 0 R/Title(1.7. Step 6: Try listing the shares available on your  server)/Dest[807 0 R/XYZ null 682 null]/Prev 1165 0 R/Next 1167 0 R>>endobj
+1167 0 obj<</Parent 1157 0 R/Title(1.8. Step 7: Try connecting with the unix client)/Dest[807 0 R/XYZ null 505 null]/Prev 1166 0 R/Next 1168 0 R>>endobj
+1168 0 obj<</Parent 1157 0 R/Title(1.9. Step 8: Try connecting from a DOS, WfWg, Win9x, WinNT,  Win2k, OS/2, etc... client)/Dest[807 0 R/XYZ null 328 null]/Prev 1167 0 R/Next 1169 0 R>>endobj
+1169 0 obj<</Parent 1157 0 R/Title(1.10. What If Things Don't Work?)/Dest[810 0 R/XYZ null 750 null]/Prev 1168 0 R/Next 1170 0 R>>endobj
+1170 0 obj<</Parent 1157 0 R/Title(1.10.1. Diagnosing Problems)/Dest[810 0 R/XYZ null 573 null]/Prev 1169 0 R/Next 1171 0 R>>endobj
+1171 0 obj<</Parent 1157 0 R/Title(1.10.2. Scope IDs)/Dest[810 0 R/XYZ null 501 null]/Prev 1170 0 R/Next 1172 0 R>>endobj
+1172 0 obj<</Parent 1157 0 R/Title(1.10.3. Choosing the Protocol Level)/Dest[810 0 R/XYZ null 403 null]/Prev 1171 0 R/Next 1173 0 R>>endobj
+1173 0 obj<</Parent 1157 0 R/Title(1.10.4. Printing from UNIX to a Client PC)/Dest[813 0 R/XYZ null 750 null]/Prev 1172 0 R/Next 1174 0 R>>endobj
+1174 0 obj<</Parent 1157 0 R/Title(1.10.5. Locking)/Dest[813 0 R/XYZ null 639 null]/Prev 1173 0 R/Next 1175 0 R>>endobj
+1175 0 obj<</Parent 1157 0 R/Title(1.10.6. Mapping Usernames)/Dest[813 0 R/XYZ null 171 null]/Prev 1174 0 R>>endobj
+1176 0 obj<</Parent 1155 0 R/Count -15/First 1177 0 R/Last 1191 0 R/Title(Chapter 2. Diagnosing your samba server)/Dest[816 0 R/XYZ null 750 null]/Prev 1157 0 R/Next 1192 0 R>>endobj
+1177 0 obj<</Parent 1176 0 R/Title(2.1. Introduction)/Dest[816 0 R/XYZ null 726 null]/Next 1178 0 R>>endobj
+1178 0 obj<</Parent 1176 0 R/Title(2.2. Assumptions)/Dest[816 0 R/XYZ null 549 null]/Prev 1177 0 R/Next 1179 0 R>>endobj
+1179 0 obj<</Parent 1176 0 R/Title(2.3. Tests)/Dest[816 0 R/XYZ null 182 null]/Prev 1178 0 R/Next 1180 0 R>>endobj
+1180 0 obj<</Parent 1176 0 R/Title(2.3.1. Test 1)/Dest[816 0 R/XYZ null 152 null]/Prev 1179 0 R/Next 1181 0 R>>endobj
+1181 0 obj<</Parent 1176 0 R/Title(2.3.2. Test 2)/Dest[819 0 R/XYZ null 722 null]/Prev 1180 0 R/Next 1182 0 R>>endobj
+1182 0 obj<</Parent 1176 0 R/Title(2.3.3. Test 3)/Dest[819 0 R/XYZ null 505 null]/Prev 1181 0 R/Next 1183 0 R>>endobj
+1183 0 obj<</Parent 1176 0 R/Title(2.3.4. Test 4)/Dest[822 0 R/XYZ null 577 null]/Prev 1182 0 R/Next 1184 0 R>>endobj
+1184 0 obj<</Parent 1176 0 R/Title(2.3.5. Test 5)/Dest[822 0 R/XYZ null 413 null]/Prev 1183 0 R/Next 1185 0 R>>endobj
+1185 0 obj<</Parent 1176 0 R/Title(2.3.6. Test 6)/Dest[822 0 R/XYZ null 275 null]/Prev 1184 0 R/Next 1186 0 R>>endobj
+1186 0 obj<</Parent 1176 0 R/Title(2.3.7. Test 7)/Dest[825 0 R/XYZ null 669 null]/Prev 1185 0 R/Next 1187 0 R>>endobj
+1187 0 obj<</Parent 1176 0 R/Title(2.3.8. Test 8)/Dest[825 0 R/XYZ null 294 null]/Prev 1186 0 R/Next 1188 0 R>>endobj
+1188 0 obj<</Parent 1176 0 R/Title(2.3.9. Test 9)/Dest[828 0 R/XYZ null 603 null]/Prev 1187 0 R/Next 1189 0 R>>endobj
+1189 0 obj<</Parent 1176 0 R/Title(2.3.10. Test 10)/Dest[828 0 R/XYZ null 426 null]/Prev 1188 0 R/Next 1190 0 R>>endobj
+1190 0 obj<</Parent 1176 0 R/Title(2.3.11. Test 11)/Dest[828 0 R/XYZ null 275 null]/Prev 1189 0 R/Next 1191 0 R>>endobj
+1191 0 obj<</Parent 1176 0 R/Title(2.4. Still having troubles?)/Dest[831 0 R/XYZ null 750 null]/Prev 1190 0 R>>endobj
+1192 0 obj<</Parent 1155 0 R/Count -18/First 1193 0 R/Last 1210 0 R/Title(Chapter 3. Integrating MS Windows networks with Samba)/Dest[834 0 R/XYZ null 750 null]/Prev 1176 0 R/Next 1211 0 R>>endobj
+1193 0 obj<</Parent 1192 0 R/Title(3.1. Agenda)/Dest[834 0 R/XYZ null 702 null]/Next 1194 0 R>>endobj
+1194 0 obj<</Parent 1192 0 R/Title(3.2. Name Resolution in a pure Unix/Linux world)/Dest[834 0 R/XYZ null 459 null]/Prev 1193 0 R/Next 1195 0 R>>endobj
+1195 0 obj<</Parent 1192 0 R/Title(3.2.1. /etc/hosts)/Dest[834 0 R/XYZ null 321 null]/Prev 1194 0 R/Next 1196 0 R>>endobj
+1196 0 obj<</Parent 1192 0 R/Title(3.2.2. /etc/resolv.conf)/Dest[837 0 R/XYZ null 431 null]/Prev 1195 0 R/Next 1197 0 R>>endobj
+1197 0 obj<</Parent 1192 0 R/Title(3.2.3. /etc/host.conf)/Dest[837 0 R/XYZ null 281 null]/Prev 1196 0 R/Next 1198 0 R>>endobj
+1198 0 obj<</Parent 1192 0 R/Title(3.2.4. /etc/nsswitch.conf)/Dest[840 0 R/XYZ null 750 null]/Prev 1197 0 R/Next 1199 0 R>>endobj
+1199 0 obj<</Parent 1192 0 R/Title(3.3. Name resolution as used within MS Windows networking)/Dest[840 0 R/XYZ null 264 null]/Prev 1198 0 R/Next 1200 0 R>>endobj
+1200 0 obj<</Parent 1192 0 R/Title(3.3.1. The NetBIOS Name Cache)/Dest[843 0 R/XYZ null 206 null]/Prev 1199 0 R/Next 1201 0 R>>endobj
+1201 0 obj<</Parent 1192 0 R/Title(3.3.2. The LMHOSTS file)/Dest[846 0 R/XYZ null 656 null]/Prev 1200 0 R/Next 1202 0 R>>endobj
+1202 0 obj<</Parent 1192 0 R/Title(3.3.3. HOSTS file)/Dest[849 0 R/XYZ null 367 null]/Prev 1201 0 R/Next 1203 0 R>>endobj
+1203 0 obj<</Parent 1192 0 R/Title(3.3.4. DNS Lookup)/Dest[849 0 R/XYZ null 256 null]/Prev 1202 0 R/Next 1204 0 R>>endobj
+1204 0 obj<</Parent 1192 0 R/Title(3.3.5. WINS Lookup)/Dest[852 0 R/XYZ null 750 null]/Prev 1203 0 R/Next 1205 0 R>>endobj
+1205 0 obj<</Parent 1192 0 R/Title(3.4. How browsing functions and how to deploy stable and  dependable browsing using Samba)/Dest[852 0 R/XYZ null 525 null]/Prev 1204 0 R/Next 1206 0 R>>endobj
+1206 0 obj<</Parent 1192 0 R/Title(3.5. MS Windows security options and how to configure  Samba for seemless integration)/Dest[855 0 R/XYZ null 629 null]/Prev 1205 0 R/Next 1207 0 R>>endobj
+1207 0 obj<</Parent 1192 0 R/Title(3.5.1. Use MS Windows NT as an authentication server)/Dest[858 0 R/XYZ null 577 null]/Prev 1206 0 R/Next 1208 0 R>>endobj
+1208 0 obj<</Parent 1192 0 R/Title(3.5.2. Make Samba a member of an MS Windows NT security domain)/Dest[858 0 R/XYZ null 300 null]/Prev 1207 0 R/Next 1209 0 R>>endobj
+1209 0 obj<</Parent 1192 0 R/Title(3.5.3. Configure Samba as an authentication server)/Dest[861 0 R/XYZ null 590 null]/Prev 1208 0 R/Next 1210 0 R>>endobj
+1210 0 obj<</Parent 1192 0 R/Title(3.6. Conclusions)/Dest[864 0 R/XYZ null 635 null]/Prev 1209 0 R>>endobj
+1211 0 obj<</Parent 1155 0 R/Count -3/First 1212 0 R/Last 1214 0 R/Title(Chapter 4. Configuring PAM for distributed but centrally  managed authentication)/Dest[867 0 R/XYZ null 750 null]/Prev 1192 0 R/Next 1215 0 R>>endobj
+1212 0 obj<</Parent 1211 0 R/Title(4.1. Samba and PAM)/Dest[867 0 R/XYZ null 702 null]/Next 1213 0 R>>endobj
+1213 0 obj<</Parent 1211 0 R/Title(4.2. Distributed Authentication)/Dest[870 0 R/XYZ null 175 null]/Prev 1212 0 R/Next 1214 0 R>>endobj
+1214 0 obj<</Parent 1211 0 R/Title(4.3. PAM Configuration in smb.conf)/Dest[873 0 R/XYZ null 722 null]/Prev 1213 0 R>>endobj
+1215 0 obj<</Parent 1155 0 R/Count -2/First 1216 0 R/Last 1217 0 R/Title(Chapter 5. Hosting a Microsoft Distributed File System tree on Samba)/Dest[876 0 R/XYZ null 750 null]/Prev 1211 0 R/Next 1218 0 R>>endobj
+1216 0 obj<</Parent 1215 0 R/Title(5.1. Instructions)/Dest[876 0 R/XYZ null 702 null]/Next 1217 0 R>>endobj
+1217 0 obj<</Parent 1215 0 R/Title(5.1.1. Notes)/Dest[879 0 R/XYZ null 669 null]/Prev 1216 0 R>>endobj
+1218 0 obj<</Parent 1155 0 R/Count -9/First 1219 0 R/Last 1227 0 R/Title(Chapter 6. UNIX Permission Bits and Windows NT Access Control Lists)/Dest[882 0 R/XYZ null 750 null]/Prev 1215 0 R/Next 1228 0 R>>endobj
+1219 0 obj<</Parent 1218 0 R/Title(6.1. Viewing and changing UNIX permissions using the NT  security dialogs)/Dest[882 0 R/XYZ null 702 null]/Next 1220 0 R>>endobj
+1220 0 obj<</Parent 1218 0 R/Title(6.2. How to view file security on a Samba share)/Dest[882 0 R/XYZ null 521 null]/Prev 1219 0 R/Next 1221 0 R>>endobj
+1221 0 obj<</Parent 1218 0 R/Title(6.3. Viewing file ownership)/Dest[882 0 R/XYZ null 344 null]/Prev 1220 0 R/Next 1222 0 R>>endobj
+1222 0 obj<</Parent 1218 0 R/Title(6.4. Viewing file or directory permissions)/Dest[885 0 R/XYZ null 682 null]/Prev 1221 0 R/Next 1223 0 R>>endobj
+1223 0 obj<</Parent 1218 0 R/Title(6.4.1. File Permissions)/Dest[885 0 R/XYZ null 439 null]/Prev 1222 0 R/Next 1224 0 R>>endobj
+1224 0 obj<</Parent 1218 0 R/Title(6.4.2. Directory Permissions)/Dest[885 0 R/XYZ null 183 null]/Prev 1223 0 R/Next 1225 0 R>>endobj
+1225 0 obj<</Parent 1218 0 R/Title(6.5. Modifying file or directory permissions)/Dest[888 0 R/XYZ null 669 null]/Prev 1224 0 R/Next 1226 0 R>>endobj
+1226 0 obj<</Parent 1218 0 R/Title(6.6. Interaction with the standard Samba create mask  parameters)/Dest[888 0 R/XYZ null 228 null]/Prev 1225 0 R/Next 1227 0 R>>endobj
+1227 0 obj<</Parent 1218 0 R/Title(6.7. Interaction with the standard Samba file attribute  mapping)/Dest[894 0 R/XYZ null 590 null]/Prev 1226 0 R>>endobj
+1228 0 obj<</Parent 1155 0 R/Count -13/First 1229 0 R/Last 1241 0 R/Title(Chapter 7. Printing Support in Samba 2.2.x)/Dest[897 0 R/XYZ null 750 null]/Prev 1218 0 R/Next 1242 0 R>>endobj
+1229 0 obj<</Parent 1228 0 R/Title(7.1. Introduction)/Dest[897 0 R/XYZ null 726 null]/Next 1230 0 R>>endobj
+1230 0 obj<</Parent 1228 0 R/Title(7.2. Configuration)/Dest[897 0 R/XYZ null 298 null]/Prev 1229 0 R/Next 1231 0 R>>endobj
+1231 0 obj<</Parent 1228 0 R/Title(7.2.1. Creating [print$])/Dest[900 0 R/XYZ null 689 null]/Prev 1230 0 R/Next 1232 0 R>>endobj
+1232 0 obj<</Parent 1228 0 R/Title(7.2.2. Setting Drivers for Existing Printers)/Dest[903 0 R/XYZ null 446 null]/Prev 1231 0 R/Next 1233 0 R>>endobj
+1233 0 obj<</Parent 1228 0 R/Title(7.2.3. Support a large number of printers)/Dest[906 0 R/XYZ null 682 null]/Prev 1232 0 R/Next 1234 0 R>>endobj
+1234 0 obj<</Parent 1228 0 R/Title(7.2.4. Adding New Printers via the Windows NT APW)/Dest[906 0 R/XYZ null 298 null]/Prev 1233 0 R/Next 1235 0 R>>endobj
+1235 0 obj<</Parent 1228 0 R/Title(7.2.5. Samba and Printer Ports)/Dest[909 0 R/XYZ null 682 null]/Prev 1234 0 R/Next 1236 0 R>>endobj
+1236 0 obj<</Parent 1228 0 R/Title(7.3. The Imprints Toolset)/Dest[909 0 R/XYZ null 492 null]/Prev 1235 0 R/Next 1237 0 R>>endobj
+1237 0 obj<</Parent 1228 0 R/Title(7.3.1. What is Imprints?)/Dest[909 0 R/XYZ null 381 null]/Prev 1236 0 R/Next 1238 0 R>>endobj
+1238 0 obj<</Parent 1228 0 R/Title(7.3.2. Creating Printer Driver Packages)/Dest[909 0 R/XYZ null 243 null]/Prev 1237 0 R/Next 1239 0 R>>endobj
+1239 0 obj<</Parent 1228 0 R/Title(7.3.3. The Imprints server)/Dest[909 0 R/XYZ null 145 null]/Prev 1238 0 R/Next 1240 0 R>>endobj
+1240 0 obj<</Parent 1228 0 R/Title(7.3.4. The Installation Client)/Dest[912 0 R/XYZ null 709 null]/Prev 1239 0 R/Next 1241 0 R>>endobj
+1241 0 obj<</Parent 1228 0 R/Title(7.4. Migration to from Samba 2.0.x to 2.2.x)/Dest[915 0 R/XYZ null 750 null]/Prev 1240 0 R>>endobj
+1242 0 obj<</Parent 1155 0 R/Count -9/First 1243 0 R/Last 1251 0 R/Title(Chapter 8. Debugging Printing Problems)/Dest[918 0 R/XYZ null 750 null]/Prev 1228 0 R/Next 1252 0 R>>endobj
+1243 0 obj<</Parent 1242 0 R/Title(8.1. Introduction)/Dest[918 0 R/XYZ null 726 null]/Next 1244 0 R>>endobj
+1244 0 obj<</Parent 1242 0 R/Title(8.2. Debugging printer problems)/Dest[921 0 R/XYZ null 750 null]/Prev 1243 0 R/Next 1245 0 R>>endobj
+1245 0 obj<</Parent 1242 0 R/Title(8.3. What printers do I have?)/Dest[921 0 R/XYZ null 296 null]/Prev 1244 0 R/Next 1246 0 R>>endobj
+1246 0 obj<</Parent 1242 0 R/Title(8.4. Setting up printcap and print servers)/Dest[924 0 R/XYZ null 750 null]/Prev 1245 0 R/Next 1247 0 R>>endobj
+1247 0 obj<</Parent 1242 0 R/Title(8.5. Job sent, no output)/Dest[924 0 R/XYZ null 323 null]/Prev 1246 0 R/Next 1248 0 R>>endobj
+1248 0 obj<</Parent 1242 0 R/Title(8.6. Job sent, strange output)/Dest[927 0 R/XYZ null 635 null]/Prev 1247 0 R/Next 1249 0 R>>endobj
+1249 0 obj<</Parent 1242 0 R/Title(8.7. Raw PostScript printed)/Dest[927 0 R/XYZ null 276 null]/Prev 1248 0 R/Next 1250 0 R>>endobj
+1250 0 obj<</Parent 1242 0 R/Title(8.8. Advanced Printing)/Dest[927 0 R/XYZ null 178 null]/Prev 1249 0 R/Next 1251 0 R>>endobj
+1251 0 obj<</Parent 1242 0 R/Title(8.9. Real debugging)/Dest[930 0 R/XYZ null 735 null]/Prev 1250 0 R>>endobj
+1252 0 obj<</Parent 1155 0 R/Count -2/First 1253 0 R/Last 1254 0 R/Title(Chapter 9. Security levels)/Dest[933 0 R/XYZ null 750 null]/Prev 1242 0 R/Next 1255 0 R>>endobj
+1253 0 obj<</Parent 1252 0 R/Title(9.1. Introduction)/Dest[933 0 R/XYZ null 726 null]/Next 1254 0 R>>endobj
+1254 0 obj<</Parent 1252 0 R/Title(9.2. More complete description of security levels)/Dest[933 0 R/XYZ null 487 null]/Prev 1253 0 R>>endobj
+1255 0 obj<</Parent 1155 0 R/Count -3/First 1256 0 R/Last 1258 0 R/Title(Chapter 10. security = domain in Samba 2.x)/Dest[939 0 R/XYZ null 750 null]/Prev 1252 0 R/Next 1259 0 R>>endobj
+1256 0 obj<</Parent 1255 0 R/Title(10.1. Joining an NT Domain with Samba 2.2)/Dest[939 0 R/XYZ null 726 null]/Next 1257 0 R>>endobj
+1257 0 obj<</Parent 1255 0 R/Title(10.2. Samba and Windows 2000 Domains)/Dest[942 0 R/XYZ null 379 null]/Prev 1256 0 R/Next 1258 0 R>>endobj
+1258 0 obj<</Parent 1255 0 R/Title(10.3. Why is this better than security = server?)/Dest[942 0 R/XYZ null 162 null]/Prev 1257 0 R>>endobj
+1259 0 obj<</Parent 1155 0 R/Count -16/First 1260 0 R/Last 1275 0 R/Title(Chapter 11. Unified Logons between Windows NT and UNIX using Winbind)/Dest[948 0 R/XYZ null 750 null]/Prev 1255 0 R/Next 1276 0 R>>endobj
+1260 0 obj<</Parent 1259 0 R/Title(11.1. Abstract)/Dest[948 0 R/XYZ null 702 null]/Next 1261 0 R>>endobj
+1261 0 obj<</Parent 1259 0 R/Title(11.2. Introduction)/Dest[948 0 R/XYZ null 565 null]/Prev 1260 0 R/Next 1262 0 R>>endobj
+1262 0 obj<</Parent 1259 0 R/Title(11.3. What Winbind Provides)/Dest[948 0 R/XYZ null 242 null]/Prev 1261 0 R/Next 1263 0 R>>endobj
+1263 0 obj<</Parent 1259 0 R/Title(11.3.1. Target Uses)/Dest[951 0 R/XYZ null 577 null]/Prev 1262 0 R/Next 1264 0 R>>endobj
+1264 0 obj<</Parent 1259 0 R/Title(11.4. How Winbind Works)/Dest[951 0 R/XYZ null 413 null]/Prev 1263 0 R/Next 1265 0 R>>endobj
+1265 0 obj<</Parent 1259 0 R/Title(11.4.1. Microsoft Remote Procedure Calls)/Dest[951 0 R/XYZ null 288 null]/Prev 1264 0 R/Next 1266 0 R>>endobj
+1266 0 obj<</Parent 1259 0 R/Title(11.4.2. Name Service Switch)/Dest[954 0 R/XYZ null 750 null]/Prev 1265 0 R/Next 1267 0 R>>endobj
+1267 0 obj<</Parent 1259 0 R/Title(11.4.3. Pluggable Authentication Modules)/Dest[954 0 R/XYZ null 309 null]/Prev 1266 0 R/Next 1268 0 R>>endobj
+1268 0 obj<</Parent 1259 0 R/Title(11.4.4. User and Group ID Allocation)/Dest[957 0 R/XYZ null 669 null]/Prev 1267 0 R/Next 1269 0 R>>endobj
+1269 0 obj<</Parent 1259 0 R/Title(11.4.5. Result Caching)/Dest[957 0 R/XYZ null 479 null]/Prev 1268 0 R/Next 1270 0 R>>endobj
+1270 0 obj<</Parent 1259 0 R/Title(11.5. Installation and Configuration)/Dest[957 0 R/XYZ null 328 null]/Prev 1269 0 R/Next 1271 0 R>>endobj
+1271 0 obj<</Parent 1259 0 R/Title(11.5.1. Introduction)/Dest[957 0 R/XYZ null 177 null]/Prev 1270 0 R/Next 1272 0 R>>endobj
+1272 0 obj<</Parent 1259 0 R/Title(11.5.2. Requirements)/Dest[960 0 R/XYZ null 537 null]/Prev 1271 0 R/Next 1273 0 R>>endobj
+1273 0 obj<</Parent 1259 0 R/Title(11.5.3. Testing Things Out)/Dest[960 0 R/XYZ null 254 null]/Prev 1272 0 R/Next 1274 0 R>>endobj
+1274 0 obj<</Parent 1259 0 R/Title(11.6. Limitations)/Dest[984 0 R/XYZ null 614 null]/Prev 1273 0 R/Next 1275 0 R>>endobj
+1275 0 obj<</Parent 1259 0 R/Title(11.7. Conclusion)/Dest[984 0 R/XYZ null 397 null]/Prev 1274 0 R>>endobj
+1276 0 obj<</Parent 1155 0 R/Count -14/First 1277 0 R/Last 1290 0 R/Title(Chapter 12. How to Configure Samba 2.2 as a Primary Domain Controller)/Dest[987 0 R/XYZ null 750 null]/Prev 1259 0 R/Next 1291 0 R>>endobj
+1277 0 obj<</Parent 1276 0 R/Title(12.1. Prerequisite Reading)/Dest[987 0 R/XYZ null 702 null]/Next 1278 0 R>>endobj
+1278 0 obj<</Parent 1276 0 R/Title(12.2. Background)/Dest[987 0 R/XYZ null 604 null]/Prev 1277 0 R/Next 1279 0 R>>endobj
+1279 0 obj<</Parent 1276 0 R/Title(12.3. Configuring the Samba Domain Controller)/Dest[990 0 R/XYZ null 722 null]/Prev 1278 0 R/Next 1280 0 R>>endobj
+1280 0 obj<</Parent 1276 0 R/Title(12.4. Creating Machine Trust Accounts and Joining Clients to the Domain)/Dest[993 0 R/XYZ null 603 null]/Prev 1279 0 R/Next 1281 0 R>>endobj
+1281 0 obj<</Parent 1276 0 R/Title(12.4.1. Manual Creation of Machine Trust Accounts)/Dest[993 0 R/XYZ null 211 null]/Prev 1280 0 R/Next 1282 0 R>>endobj
+1282 0 obj<</Parent 1276 0 R/Title(12.4.2. "On-the-Fly" Creation of Machine Trust Accounts)/Dest[996 0 R/XYZ null 328 null]/Prev 1281 0 R/Next 1283 0 R>>endobj
+1283 0 obj<</Parent 1276 0 R/Title(12.4.3. Joining the Client to the Domain)/Dest[999 0 R/XYZ null 750 null]/Prev 1282 0 R/Next 1284 0 R>>endobj
+1284 0 obj<</Parent 1276 0 R/Title(12.5. Common Problems and Errors)/Dest[999 0 R/XYZ null 388 null]/Prev 1283 0 R/Next 1285 0 R>>endobj
+1285 0 obj<</Parent 1276 0 R/Title(12.6. System Policies and Profiles)/Dest[1005 0 R/XYZ null 735 null]/Prev 1284 0 R/Next 1286 0 R>>endobj
+1286 0 obj<</Parent 1276 0 R/Title(12.7. What other help can I get?)/Dest[1008 0 R/XYZ null 682 null]/Prev 1285 0 R/Next 1287 0 R>>endobj
+1287 0 obj<</Parent 1276 0 R/Title(12.8. Domain Control for Windows 9x/ME)/Dest[1014 0 R/XYZ null 299 null]/Prev 1286 0 R/Next 1288 0 R>>endobj
+1288 0 obj<</Parent 1276 0 R/Title(12.8.1. Configuration Instructions: Network Logons)/Dest[1017 0 R/XYZ null 273 null]/Prev 1287 0 R/Next 1289 0 R>>endobj
+1289 0 obj<</Parent 1276 0 R/Title(12.8.2. Configuration Instructions: Setting up Roaming User Profiles)/Dest[1020 0 R/XYZ null 478 null]/Prev 1288 0 R/Next 1290 0 R>>endobj
+1290 0 obj<</Parent 1276 0 R/Title(12.9. DOMAIN_CONTROL.txt : Windows NT Domain Control & Samba)/Dest[1032 0 R/XYZ null 270 null]/Prev 1289 0 R>>endobj
+1291 0 obj<</Parent 1155 0 R/Count -8/First 1292 0 R/Last 1299 0 R/Title(Chapter 13. How to Act as a Backup Domain Controller in a Purely Samba Controlled Domain)/Dest[1041 0 R/XYZ null 750 null]/Prev 1276 0 R/Next 1300 0 R>>endobj
+1292 0 obj<</Parent 1291 0 R/Title(13.1. Prerequisite Reading)/Dest[1041 0 R/XYZ null 702 null]/Next 1293 0 R>>endobj
+1293 0 obj<</Parent 1291 0 R/Title(13.2. Background)/Dest[1041 0 R/XYZ null 617 null]/Prev 1292 0 R/Next 1294 0 R>>endobj
+1294 0 obj<</Parent 1291 0 R/Title(13.3. What qualifies a Domain Controller on the network?)/Dest[1041 0 R/XYZ null 235 null]/Prev 1293 0 R/Next 1295 0 R>>endobj
+1295 0 obj<</Parent 1291 0 R/Title(13.3.1. How does a Workstation find its domain controller?)/Dest[1044 0 R/XYZ null 750 null]/Prev 1294 0 R/Next 1296 0 R>>endobj
+1296 0 obj<</Parent 1291 0 R/Title(13.3.2. When is the PDC needed?)/Dest[1044 0 R/XYZ null 626 null]/Prev 1295 0 R/Next 1297 0 R>>endobj
+1297 0 obj<</Parent 1291 0 R/Title(13.4. Can Samba be a Backup Domain Controller?)/Dest[1044 0 R/XYZ null 528 null]/Prev 1296 0 R/Next 1298 0 R>>endobj
+1298 0 obj<</Parent 1291 0 R/Title(13.5. How do I set up a Samba BDC?)/Dest[1044 0 R/XYZ null 377 null]/Prev 1297 0 R/Next 1299 0 R>>endobj
+1299 0 obj<</Parent 1291 0 R/Title(13.5.1. How do I replicate the smbpasswd file?)/Dest[1047 0 R/XYZ null 646 null]/Prev 1298 0 R>>endobj
+1300 0 obj<</Parent 1155 0 R/Count -12/First 1301 0 R/Last 1312 0 R/Title(Chapter 14. Storing Samba's User/Machine Account information in an LDAP Directory)/Dest[1050 0 R/XYZ null 750 null]/Prev 1291 0 R/Next 1313 0 R>>endobj
+1301 0 obj<</Parent 1300 0 R/Title(14.1. Purpose)/Dest[1050 0 R/XYZ null 702 null]/Next 1302 0 R>>endobj
+1302 0 obj<</Parent 1300 0 R/Title(14.2. Introduction)/Dest[1050 0 R/XYZ null 433 null]/Prev 1301 0 R/Next 1303 0 R>>endobj
+1303 0 obj<</Parent 1300 0 R/Title(14.3. Supported LDAP Servers)/Dest[1053 0 R/XYZ null 577 null]/Prev 1302 0 R/Next 1304 0 R>>endobj
+1304 0 obj<</Parent 1300 0 R/Title(14.4. Schema and Relationship to the RFC 2307 posixAccount)/Dest[1053 0 R/XYZ null 465 null]/Prev 1303 0 R/Next 1305 0 R>>endobj
+1305 0 obj<</Parent 1300 0 R/Title(14.5. Configuring Samba with LDAP)/Dest[1056 0 R/XYZ null 735 null]/Prev 1304 0 R/Next 1306 0 R>>endobj
+1306 0 obj<</Parent 1300 0 R/Title(14.5.1. OpenLDAP configuration)/Dest[1056 0 R/XYZ null 705 null]/Prev 1305 0 R/Next 1307 0 R>>endobj
+1307 0 obj<</Parent 1300 0 R/Title(14.5.2. Configuring Samba)/Dest[1059 0 R/XYZ null 750 null]/Prev 1306 0 R/Next 1308 0 R>>endobj
+1308 0 obj<</Parent 1300 0 R/Title(14.6. Accounts and Groups management)/Dest[1059 0 R/XYZ null 176 null]/Prev 1307 0 R/Next 1309 0 R>>endobj
+1309 0 obj<</Parent 1300 0 R/Title(14.7. Security and sambaAccount)/Dest[1062 0 R/XYZ null 629 null]/Prev 1308 0 R/Next 1310 0 R>>endobj
+1310 0 obj<</Parent 1300 0 R/Title(14.8. LDAP specials attributes for sambaAccounts)/Dest[1062 0 R/XYZ null 236 null]/Prev 1309 0 R/Next 1311 0 R>>endobj
+1311 0 obj<</Parent 1300 0 R/Title(14.9. Example LDIF Entries for a sambaAccount)/Dest[1065 0 R/XYZ null 207 null]/Prev 1310 0 R/Next 1312 0 R>>endobj
+1312 0 obj<</Parent 1300 0 R/Title(14.10. Comments)/Dest[1068 0 R/XYZ null 358 null]/Prev 1311 0 R>>endobj
+1313 0 obj<</Parent 1155 0 R/Count -12/First 1314 0 R/Last 1325 0 R/Title(Chapter 15. Improved browsing in samba)/Dest[1071 0 R/XYZ null 750 null]/Prev 1300 0 R/Next 1326 0 R>>endobj
+1314 0 obj<</Parent 1313 0 R/Title(15.1. Overview of browsing)/Dest[1071 0 R/XYZ null 726 null]/Next 1315 0 R>>endobj
+1315 0 obj<</Parent 1313 0 R/Title(15.2. Browsing support in samba)/Dest[1071 0 R/XYZ null 536 null]/Prev 1314 0 R/Next 1316 0 R>>endobj
+1316 0 obj<</Parent 1313 0 R/Title(15.3. Problem resolution)/Dest[1074 0 R/XYZ null 750 null]/Prev 1315 0 R/Next 1317 0 R>>endobj
+1317 0 obj<</Parent 1313 0 R/Title(15.4. Browsing across subnets)/Dest[1074 0 R/XYZ null 467 null]/Prev 1316 0 R/Next 1318 0 R>>endobj
+1318 0 obj<</Parent 1313 0 R/Title(15.4.1. How does cross subnet browsing work ?)/Dest[1074 0 R/XYZ null 198 null]/Prev 1317 0 R/Next 1319 0 R>>endobj
+1319 0 obj<</Parent 1313 0 R/Title(15.5. Setting up a WINS server)/Dest[1083 0 R/XYZ null 443 null]/Prev 1318 0 R/Next 1320 0 R>>endobj
+1320 0 obj<</Parent 1313 0 R/Title(15.6. Setting up Browsing in a WORKGROUP)/Dest[1086 0 R/XYZ null 484 null]/Prev 1319 0 R/Next 1321 0 R>>endobj
+1321 0 obj<</Parent 1313 0 R/Title(15.7. Setting up Browsing in a DOMAIN)/Dest[1089 0 R/XYZ null 488 null]/Prev 1320 0 R/Next 1322 0 R>>endobj
+1322 0 obj<</Parent 1313 0 R/Title(15.8. Forcing samba to be the master)/Dest[1092 0 R/XYZ null 750 null]/Prev 1321 0 R/Next 1323 0 R>>endobj
+1323 0 obj<</Parent 1313 0 R/Title(15.9. Making samba the domain master)/Dest[1092 0 R/XYZ null 335 null]/Prev 1322 0 R/Next 1324 0 R>>endobj
+1324 0 obj<</Parent 1313 0 R/Title(15.10. Note about broadcast addresses)/Dest[1095 0 R/XYZ null 563 null]/Prev 1323 0 R/Next 1325 0 R>>endobj
+1325 0 obj<</Parent 1313 0 R/Title(15.11. Multiple interfaces)/Dest[1095 0 R/XYZ null 465 null]/Prev 1324 0 R>>endobj
+1326 0 obj<</Parent 1155 0 R/Count -20/First 1327 0 R/Last 1346 0 R/Title(Chapter 16. Samba performance issues)/Dest[1098 0 R/XYZ null 750 null]/Prev 1313 0 R/Next 1347 0 R>>endobj
+1327 0 obj<</Parent 1326 0 R/Title(16.1. Comparisons)/Dest[1098 0 R/XYZ null 726 null]/Next 1328 0 R>>endobj
+1328 0 obj<</Parent 1326 0 R/Title(16.2. Oplocks)/Dest[1098 0 R/XYZ null 470 null]/Prev 1327 0 R/Next 1329 0 R>>endobj
+1329 0 obj<</Parent 1326 0 R/Title(16.2.1. Overview)/Dest[1098 0 R/XYZ null 440 null]/Prev 1328 0 R/Next 1330 0 R>>endobj
+1330 0 obj<</Parent 1326 0 R/Title(16.2.2. Level2 Oplocks)/Dest[1098 0 R/XYZ null 157 null]/Prev 1329 0 R/Next 1331 0 R>>endobj
+1331 0 obj<</Parent 1326 0 R/Title(16.2.3. Old 'fake oplocks' option - deprecated)/Dest[1101 0 R/XYZ null 643 null]/Prev 1330 0 R/Next 1332 0 R>>endobj
+1332 0 obj<</Parent 1326 0 R/Title(16.3. Socket options)/Dest[1101 0 R/XYZ null 479 null]/Prev 1331 0 R/Next 1333 0 R>>endobj
+1333 0 obj<</Parent 1326 0 R/Title(16.4. Read size)/Dest[1101 0 R/XYZ null 209 null]/Prev 1332 0 R/Next 1334 0 R>>endobj
+1334 0 obj<</Parent 1326 0 R/Title(16.5. Max xmit)/Dest[1104 0 R/XYZ null 656 null]/Prev 1333 0 R/Next 1335 0 R>>endobj
+1335 0 obj<</Parent 1326 0 R/Title(16.6. Locking)/Dest[1104 0 R/XYZ null 465 null]/Prev 1334 0 R/Next 1336 0 R>>endobj
+1336 0 obj<</Parent 1326 0 R/Title(16.7. Share modes)/Dest[1104 0 R/XYZ null 328 null]/Prev 1335 0 R/Next 1337 0 R>>endobj
+1337 0 obj<</Parent 1326 0 R/Title(16.8. Log level)/Dest[1107 0 R/XYZ null 750 null]/Prev 1336 0 R/Next 1338 0 R>>endobj
+1338 0 obj<</Parent 1326 0 R/Title(16.9. Wide lines)/Dest[1107 0 R/XYZ null 679 null]/Prev 1337 0 R/Next 1339 0 R>>endobj
+1339 0 obj<</Parent 1326 0 R/Title(16.10. Read raw)/Dest[1107 0 R/XYZ null 581 null]/Prev 1338 0 R/Next 1340 0 R>>endobj
+1340 0 obj<</Parent 1326 0 R/Title(16.11. Write raw)/Dest[1107 0 R/XYZ null 403 null]/Prev 1339 0 R/Next 1341 0 R>>endobj
+1341 0 obj<</Parent 1326 0 R/Title(16.12. Read prediction)/Dest[1107 0 R/XYZ null 266 null]/Prev 1340 0 R/Next 1342 0 R>>endobj
+1342 0 obj<</Parent 1326 0 R/Title(16.13. Memory mapping)/Dest[1110 0 R/XYZ null 709 null]/Prev 1341 0 R/Next 1343 0 R>>endobj
+1343 0 obj<</Parent 1326 0 R/Title(16.14. Slow Clients)/Dest[1110 0 R/XYZ null 531 null]/Prev 1342 0 R/Next 1344 0 R>>endobj
+1344 0 obj<</Parent 1326 0 R/Title(16.15. Slow Logins)/Dest[1110 0 R/XYZ null 394 null]/Prev 1343 0 R/Next 1345 0 R>>endobj
+1345 0 obj<</Parent 1326 0 R/Title(16.16. Client tuning)/Dest[1110 0 R/XYZ null 309 null]/Prev 1344 0 R/Next 1346 0 R>>endobj
+1346 0 obj<</Parent 1326 0 R/Title(16.17. My Results)/Dest[1113 0 R/XYZ null 260 null]/Prev 1345 0 R>>endobj
+1347 0 obj<</Parent 1155 0 R/Count -5/First 1348 0 R/Last 1352 0 R/Title(Chapter 17. OS2 Client HOWTO)/Dest[1119 0 R/XYZ null 750 null]/Prev 1326 0 R/Next 1353 0 R>>endobj
+1348 0 obj<</Parent 1347 0 R/Title(17.1. FAQs)/Dest[1119 0 R/XYZ null 726 null]/Next 1349 0 R>>endobj
+1349 0 obj<</Parent 1347 0 R/Title(17.1.1. How can I configure OS/2 Warp Connect or  OS/2 Warp 4 as a client for Samba?)/Dest[1119 0 R/XYZ null 696 null]/Prev 1348 0 R/Next 1350 0 R>>endobj
+1350 0 obj<</Parent 1347 0 R/Title(17.1.2. How can I configure OS/2 Warp 3 \(not Connect\),  OS/2 1.2, 1.3 or 2.x for Samba?)/Dest[1119 0 R/XYZ null 344 null]/Prev 1349 0 R/Next 1351 0 R>>endobj
+1351 0 obj<</Parent 1347 0 R/Title(17.1.3. Are there any other issues when OS/2 \(any version\)  is used as a client?)/Dest[1122 0 R/XYZ null 750 null]/Prev 1350 0 R/Next 1352 0 R>>endobj
+1352 0 obj<</Parent 1347 0 R/Title(17.1.4. How do I get printer driver download working  for OS/2 clients?)/Dest[1122 0 R/XYZ null 635 null]/Prev 1351 0 R>>endobj
+1353 0 obj<</Parent 1155 0 R/Count -4/First 1354 0 R/Last 1357 0 R/Title(Chapter 18. HOWTO Access Samba source code via CVS)/Dest[1125 0 R/XYZ null 750 null]/Prev 1347 0 R/Next 1358 0 R>>endobj
+1354 0 obj<</Parent 1353 0 R/Title(18.1. Introduction)/Dest[1125 0 R/XYZ null 702 null]/Next 1355 0 R>>endobj
+1355 0 obj<</Parent 1353 0 R/Title(18.2. CVS Access to samba.org)/Dest[1125 0 R/XYZ null 578 null]/Prev 1354 0 R/Next 1356 0 R>>endobj
+1356 0 obj<</Parent 1353 0 R/Title(18.2.1. Access via CVSweb)/Dest[1125 0 R/XYZ null 480 null]/Prev 1355 0 R/Next 1357 0 R>>endobj
+1357 0 obj<</Parent 1353 0 R/Title(18.2.2. Access via cvs)/Dest[1125 0 R/XYZ null 355 null]/Prev 1356 0 R>>endobj
+1358 0 obj<</Parent 1155 0 R/Count -6/First 1359 0 R/Last 1364 0 R/Title(Chapter 19. Reporting Bugs)/Dest[1131 0 R/XYZ null 750 null]/Prev 1353 0 R/Next 1365 0 R>>endobj
+1359 0 obj<</Parent 1358 0 R/Title(19.1. Introduction)/Dest[1131 0 R/XYZ null 726 null]/Next 1360 0 R>>endobj
+1360 0 obj<</Parent 1358 0 R/Title(19.2. General info)/Dest[1131 0 R/XYZ null 457 null]/Prev 1359 0 R/Next 1361 0 R>>endobj
+1361 0 obj<</Parent 1358 0 R/Title(19.3. Debug levels)/Dest[1131 0 R/XYZ null 306 null]/Prev 1360 0 R/Next 1362 0 R>>endobj
+1362 0 obj<</Parent 1358 0 R/Title(19.4. Internal errors)/Dest[1134 0 R/XYZ null 629 null]/Prev 1361 0 R/Next 1363 0 R>>endobj
+1363 0 obj<</Parent 1358 0 R/Title(19.5. Attaching to a running process)/Dest[1134 0 R/XYZ null 267 null]/Prev 1362 0 R/Next 1364 0 R>>endobj
+1364 0 obj<</Parent 1358 0 R/Title(19.6. Patches)/Dest[1134 0 R/XYZ null 156 null]/Prev 1363 0 R>>endobj
+1365 0 obj<</Parent 1155 0 R/Title(Index)/Dest[1137 0 R/XYZ null 722 null]/Prev 1358 0 R>>endobj
+1366 0 obj<</Type/Catalog/Pages 794 0 R/Names 556 0 R/PageLayout/SinglePage/Outlines 1155 0 R/OpenAction[795 0 R/XYZ null null null]/PageMode/UseOutlines/PageLabels<</Nums[0<</P(title)>>1<</S/r>>6<</S/D>>]>>>>endobj
 xref
-0 1468 
+0 1367 
 0000000000 65535 f 
 0000000015 00000 n 
-0000000250 00000 n 
-0000001816 00000 n 
-0000001890 00000 n 
-0000001969 00000 n 
-0000002051 00000 n 
-0000002137 00000 n 
-0000002215 00000 n 
-0000002292 00000 n 
-0000002371 00000 n 
-0000002455 00000 n 
-0000002532 00000 n 
-0000002614 00000 n 
-0000002673 00000 n 
-0000002775 00000 n 
-0000002878 00000 n 
-0000002980 00000 n 
-0000003082 00000 n 
-0000003185 00000 n 
-0000003288 00000 n 
-0000003391 00000 n 
-0000003494 00000 n 
-0000003597 00000 n 
-0000003700 00000 n 
-0000003803 00000 n 
-0000003906 00000 n 
-0000004009 00000 n 
-0000004112 00000 n 
-0000004215 00000 n 
-0000004318 00000 n 
-0000004421 00000 n 
+0000000244 00000 n 
+0000001810 00000 n 
+0000001884 00000 n 
+0000001963 00000 n 
+0000002045 00000 n 
+0000002131 00000 n 
+0000002209 00000 n 
+0000002286 00000 n 
+0000002365 00000 n 
+0000002442 00000 n 
+0000002524 00000 n 
+0000002583 00000 n 
+0000002635 00000 n 
+0000002720 00000 n 
+0000002773 00000 n 
+0000002857 00000 n 
+0000002923 00000 n 
+0000003007 00000 n 
+0000003045 00000 n 
+0000003097 00000 n 
+0000003182 00000 n 
+0000003206 00000 n 
+0000003259 00000 n 
+0000003344 00000 n 
+0000003397 00000 n 
+0000003482 00000 n 
+0000003513 00000 n 
+0000003559 00000 n 
+0000003644 00000 n 
+0000003689 00000 n 
+0000003773 00000 n 
+0000003818 00000 n 
+0000003902 00000 n 
+0000003940 00000 n 
+0000003983 00000 n 
+0000004068 00000 n 
+0000004111 00000 n 
+0000004195 00000 n 
+0000004226 00000 n 
+0000004280 00000 n 
+0000004364 00000 n 
+0000004388 00000 n 
+0000004439 00000 n 
 0000004524 00000 n 
-0000004627 00000 n 
-0000004730 00000 n 
-0000004833 00000 n 
-0000004936 00000 n 
-0000005038 00000 n 
-0000005141 00000 n 
-0000005244 00000 n 
-0000005347 00000 n 
-0000005450 00000 n 
-0000005553 00000 n 
-0000005656 00000 n 
-0000005759 00000 n 
-0000005862 00000 n 
-0000005965 00000 n 
-0000006068 00000 n 
-0000006171 00000 n 
-0000006274 00000 n 
-0000006377 00000 n 
-0000006480 00000 n 
-0000006583 00000 n 
-0000006685 00000 n 
-0000006788 00000 n 
-0000006891 00000 n 
-0000006993 00000 n 
-0000007094 00000 n 
-0000007195 00000 n 
-0000007519 00000 n 
-0000007621 00000 n 
-0000007724 00000 n 
-0000007827 00000 n 
-0000007930 00000 n 
+0000004572 00000 n 
+0000004657 00000 n 
+0000004688 00000 n 
+0000004806 00000 n 
+0000004890 00000 n 
+0000004931 00000 n 
+0000005016 00000 n 
+0000005057 00000 n 
+0000005142 00000 n 
+0000005180 00000 n 
+0000005224 00000 n 
+0000005309 00000 n 
+0000005333 00000 n 
+0000005377 00000 n 
+0000005461 00000 n 
+0000005503 00000 n 
+0000005588 00000 n 
+0000005637 00000 n 
+0000005722 00000 n 
+0000005771 00000 n 
+0000005854 00000 n 
+0000005901 00000 n 
+0000005986 00000 n 
+0000006032 00000 n 
+0000006116 00000 n 
+0000006175 00000 n 
+0000006237 00000 n 
+0000006322 00000 n 
+0000006379 00000 n 
+0000006464 00000 n 
+0000006557 00000 n 
+0000006641 00000 n 
+0000006679 00000 n 
+0000006784 00000 n 
+0000006825 00000 n 
+0000006909 00000 n 
+0000006955 00000 n 
+0000007040 00000 n 
+0000007079 00000 n 
+0000007164 00000 n 
+0000007206 00000 n 
+0000007291 00000 n 
+0000007333 00000 n 
+0000007418 00000 n 
+0000007477 00000 n 
+0000007521 00000 n 
+0000007606 00000 n 
+0000007630 00000 n 
+0000007677 00000 n 
+0000007762 00000 n 
+0000007814 00000 n 
+0000007899 00000 n 
+0000007948 00000 n 
 0000008033 00000 n 
-0000008136 00000 n 
-0000008239 00000 n 
-0000008342 00000 n 
-0000008445 00000 n 
-0000008548 00000 n 
-0000008651 00000 n 
-0000008754 00000 n 
-0000008857 00000 n 
-0000008960 00000 n 
-0000009062 00000 n 
-0000009165 00000 n 
-0000009268 00000 n 
-0000009371 00000 n 
-0000009473 00000 n 
+0000008082 00000 n 
+0000008167 00000 n 
+0000008214 00000 n 
+0000008267 00000 n 
+0000008354 00000 n 
+0000008403 00000 n 
+0000008490 00000 n 
+0000008539 00000 n 
+0000008625 00000 n 
+0000008689 00000 n 
+0000008776 00000 n 
+0000008826 00000 n 
+0000008890 00000 n 
+0000008977 00000 n 
+0000009003 00000 n 
+0000009044 00000 n 
+0000009130 00000 n 
+0000009180 00000 n 
+0000009266 00000 n 
+0000009312 00000 n 
+0000009399 00000 n 
+0000009441 00000 n 
+0000009489 00000 n 
 0000009576 00000 n 
-0000009679 00000 n 
-0000009781 00000 n 
-0000009884 00000 n 
-0000009987 00000 n 
-0000010090 00000 n 
-0000010193 00000 n 
-0000010296 00000 n 
-0000010399 00000 n 
-0000010502 00000 n 
-0000010605 00000 n 
-0000010708 00000 n 
-0000010810 00000 n 
-0000010913 00000 n 
-0000011016 00000 n 
-0000011119 00000 n 
-0000011222 00000 n 
-0000011325 00000 n 
-0000011428 00000 n 
-0000011531 00000 n 
-0000011634 00000 n 
-0000011737 00000 n 
-0000011840 00000 n 
-0000011942 00000 n 
-0000012044 00000 n 
-0000012372 00000 n 
-0000012475 00000 n 
-0000012579 00000 n 
-0000012682 00000 n 
-0000012786 00000 n 
-0000012890 00000 n 
-0000012994 00000 n 
-0000013098 00000 n 
-0000013202 00000 n 
-0000013306 00000 n 
-0000013410 00000 n 
-0000013514 00000 n 
-0000013618 00000 n 
-0000013721 00000 n 
-0000013825 00000 n 
-0000013929 00000 n 
-0000014032 00000 n 
-0000014136 00000 n 
-0000014240 00000 n 
-0000014344 00000 n 
-0000014447 00000 n 
-0000014551 00000 n 
-0000014655 00000 n 
-0000014759 00000 n 
-0000014863 00000 n 
-0000014967 00000 n 
-0000015071 00000 n 
-0000015175 00000 n 
-0000015279 00000 n 
-0000015383 00000 n 
-0000015487 00000 n 
-0000015591 00000 n 
-0000015695 00000 n 
-0000015799 00000 n 
-0000015903 00000 n 
-0000016007 00000 n 
-0000016111 00000 n 
-0000016214 00000 n 
-0000016318 00000 n 
-0000016422 00000 n 
-0000016526 00000 n 
-0000016629 00000 n 
-0000016731 00000 n 
-0000016833 00000 n 
-0000017194 00000 n 
-0000017297 00000 n 
-0000017401 00000 n 
-0000017505 00000 n 
-0000017609 00000 n 
-0000017713 00000 n 
-0000017817 00000 n 
-0000017921 00000 n 
-0000018025 00000 n 
-0000018129 00000 n 
-0000018232 00000 n 
-0000018336 00000 n 
-0000018440 00000 n 
-0000018544 00000 n 
-0000018648 00000 n 
-0000018752 00000 n 
-0000018856 00000 n 
-0000018960 00000 n 
-0000019064 00000 n 
-0000019167 00000 n 
-0000019271 00000 n 
-0000019375 00000 n 
-0000019479 00000 n 
-0000019583 00000 n 
-0000019687 00000 n 
-0000019791 00000 n 
-0000019895 00000 n 
-0000019999 00000 n 
-0000020103 00000 n 
-0000020207 00000 n 
-0000020311 00000 n 
-0000020415 00000 n 
-0000020518 00000 n 
-0000020622 00000 n 
-0000020726 00000 n 
-0000020830 00000 n 
-0000020934 00000 n 
-0000021038 00000 n 
-0000021142 00000 n 
-0000021246 00000 n 
-0000021350 00000 n 
-0000021454 00000 n 
-0000021558 00000 n 
-0000021661 00000 n 
-0000021763 00000 n 
-0000022132 00000 n 
-0000022235 00000 n 
-0000022339 00000 n 
-0000022443 00000 n 
-0000022547 00000 n 
-0000022651 00000 n 
-0000022755 00000 n 
-0000022859 00000 n 
-0000022963 00000 n 
-0000023067 00000 n 
-0000023171 00000 n 
-0000023275 00000 n 
-0000023379 00000 n 
-0000023483 00000 n 
-0000023587 00000 n 
-0000023691 00000 n 
-0000023795 00000 n 
-0000023899 00000 n 
-0000024003 00000 n 
-0000024107 00000 n 
-0000024211 00000 n 
-0000024315 00000 n 
-0000024418 00000 n 
-0000024522 00000 n 
-0000024626 00000 n 
-0000024730 00000 n 
-0000024834 00000 n 
-0000024938 00000 n 
-0000025042 00000 n 
-0000025145 00000 n 
-0000025249 00000 n 
-0000025353 00000 n 
-0000025457 00000 n 
-0000025561 00000 n 
-0000025664 00000 n 
-0000025768 00000 n 
-0000025872 00000 n 
-0000025976 00000 n 
-0000026080 00000 n 
-0000026184 00000 n 
-0000026288 00000 n 
-0000026625 00000 n 
-0000026678 00000 n 
-0000026765 00000 n 
-0000026819 00000 n 
-0000026905 00000 n 
-0000026972 00000 n 
-0000027058 00000 n 
-0000027161 00000 n 
-0000027265 00000 n 
-0000027369 00000 n 
-0000027473 00000 n 
-0000027577 00000 n 
-0000027681 00000 n 
-0000027785 00000 n 
-0000027889 00000 n 
-0000027993 00000 n 
-0000028097 00000 n 
-0000028201 00000 n 
-0000028305 00000 n 
-0000028409 00000 n 
-0000028513 00000 n 
-0000028617 00000 n 
-0000028721 00000 n 
-0000028825 00000 n 
-0000028929 00000 n 
-0000029033 00000 n 
-0000029136 00000 n 
-0000029240 00000 n 
-0000029344 00000 n 
-0000029448 00000 n 
-0000029552 00000 n 
-0000029656 00000 n 
-0000029760 00000 n 
-0000029864 00000 n 
-0000029968 00000 n 
-0000030072 00000 n 
-0000030176 00000 n 
-0000030280 00000 n 
-0000030383 00000 n 
-0000030485 00000 n 
-0000030587 00000 n 
-0000030900 00000 n 
-0000031004 00000 n 
-0000031107 00000 n 
-0000031211 00000 n 
-0000031315 00000 n 
-0000031419 00000 n 
+0000009623 00000 n 
+0000009710 00000 n 
+0000009751 00000 n 
+0000009837 00000 n 
+0000009879 00000 n 
+0000009921 00000 n 
+0000010008 00000 n 
+0000010057 00000 n 
+0000010144 00000 n 
+0000010191 00000 n 
+0000010278 00000 n 
+0000010320 00000 n 
+0000010373 00000 n 
+0000010460 00000 n 
+0000010504 00000 n 
+0000010591 00000 n 
+0000010648 00000 n 
+0000010735 00000 n 
+0000010831 00000 n 
+0000010917 00000 n 
+0000010967 00000 n 
+0000011029 00000 n 
+0000011116 00000 n 
+0000011142 00000 n 
+0000011191 00000 n 
+0000011278 00000 n 
+0000011304 00000 n 
+0000011351 00000 n 
+0000011436 00000 n 
+0000011462 00000 n 
+0000011511 00000 n 
+0000011598 00000 n 
+0000011641 00000 n 
+0000011728 00000 n 
+0000011771 00000 n 
+0000011858 00000 n 
+0000011907 00000 n 
+0000011994 00000 n 
+0000012043 00000 n 
+0000012130 00000 n 
+0000012178 00000 n 
+0000012265 00000 n 
+0000012311 00000 n 
+0000012398 00000 n 
+0000012472 00000 n 
+0000012519 00000 n 
+0000012606 00000 n 
+0000012653 00000 n 
+0000012740 00000 n 
+0000012789 00000 n 
+0000012876 00000 n 
+0000012923 00000 n 
+0000013010 00000 n 
+0000013060 00000 n 
+0000013107 00000 n 
+0000013194 00000 n 
+0000013241 00000 n 
+0000013326 00000 n 
+0000013370 00000 n 
+0000013456 00000 n 
+0000013498 00000 n 
+0000013584 00000 n 
+0000013624 00000 n 
+0000013710 00000 n 
+0000013758 00000 n 
+0000013844 00000 n 
+0000013889 00000 n 
+0000013975 00000 n 
+0000014019 00000 n 
+0000014105 00000 n 
+0000014156 00000 n 
+0000014242 00000 n 
+0000014291 00000 n 
+0000014377 00000 n 
+0000014422 00000 n 
+0000014508 00000 n 
+0000014550 00000 n 
+0000014636 00000 n 
+0000014679 00000 n 
+0000014765 00000 n 
+0000014807 00000 n 
+0000014893 00000 n 
+0000014937 00000 n 
+0000015023 00000 n 
+0000015060 00000 n 
+0000015146 00000 n 
+0000015187 00000 n 
+0000015273 00000 n 
+0000015315 00000 n 
+0000015401 00000 n 
+0000015438 00000 n 
+0000015524 00000 n 
+0000015565 00000 n 
+0000015651 00000 n 
+0000015694 00000 n 
+0000015780 00000 n 
+0000015826 00000 n 
+0000015912 00000 n 
+0000016106 00000 n 
+0000016153 00000 n 
+0000016240 00000 n 
+0000016289 00000 n 
+0000016376 00000 n 
+0000016425 00000 n 
+0000016511 00000 n 
+0000016553 00000 n 
+0000016601 00000 n 
+0000016687 00000 n 
+0000016733 00000 n 
+0000016820 00000 n 
+0000016854 00000 n 
+0000016969 00000 n 
+0000017056 00000 n 
+0000017082 00000 n 
+0000017164 00000 n 
+0000017251 00000 n 
+0000017336 00000 n 
+0000017423 00000 n 
+0000017478 00000 n 
+0000017565 00000 n 
+0000017621 00000 n 
+0000017708 00000 n 
+0000017758 00000 n 
+0000017806 00000 n 
+0000017893 00000 n 
+0000017967 00000 n 
+0000018054 00000 n 
+0000018122 00000 n 
+0000018209 00000 n 
+0000018263 00000 n 
+0000018350 00000 n 
+0000018418 00000 n 
+0000018505 00000 n 
+0000018579 00000 n 
+0000018666 00000 n 
+0000018714 00000 n 
+0000018801 00000 n 
+0000018858 00000 n 
+0000018945 00000 n 
+0000019027 00000 n 
+0000019082 00000 n 
+0000019169 00000 n 
+0000019250 00000 n 
+0000019337 00000 n 
+0000019371 00000 n 
+0000019423 00000 n 
+0000019510 00000 n 
+0000019536 00000 n 
+0000019592 00000 n 
+0000019679 00000 n 
+0000019748 00000 n 
+0000019835 00000 n 
+0000019886 00000 n 
+0000019973 00000 n 
+0000020060 00000 n 
+0000020147 00000 n 
+0000020203 00000 n 
+0000020290 00000 n 
+0000020339 00000 n 
+0000020426 00000 n 
+0000020492 00000 n 
+0000020544 00000 n 
+0000020631 00000 n 
+0000020686 00000 n 
+0000020773 00000 n 
+0000020820 00000 n 
+0000020907 00000 n 
+0000020954 00000 n 
+0000021041 00000 n 
+0000021091 00000 n 
+0000021131 00000 n 
+0000021218 00000 n 
+0000021261 00000 n 
+0000021348 00000 n 
+0000021392 00000 n 
+0000021479 00000 n 
+0000021522 00000 n 
+0000021609 00000 n 
+0000021652 00000 n 
+0000021739 00000 n 
+0000021780 00000 n 
+0000021867 00000 n 
+0000021914 00000 n 
+0000022001 00000 n 
+0000022075 00000 n 
+0000022122 00000 n 
+0000022208 00000 n 
+0000022234 00000 n 
+0000022286 00000 n 
+0000022372 00000 n 
+0000022398 00000 n 
+0000022452 00000 n 
+0000022539 00000 n 
+0000022565 00000 n 
+0000022644 00000 n 
+0000022731 00000 n 
+0000022813 00000 n 
+0000022899 00000 n 
+0000022974 00000 n 
+0000023061 00000 n 
+0000023134 00000 n 
+0000023221 00000 n 
+0000023271 00000 n 
+0000023349 00000 n 
+0000023436 00000 n 
+0000023462 00000 n 
+0000023525 00000 n 
+0000023612 00000 n 
+0000023675 00000 n 
+0000023762 00000 n 
+0000023816 00000 n 
+0000023903 00000 n 
+0000023945 00000 n 
+0000023991 00000 n 
+0000024078 00000 n 
+0000024104 00000 n 
+0000024145 00000 n 
+0000024232 00000 n 
+0000024258 00000 n 
+0000024363 00000 n 
+0000024469 00000 n 
+0000024575 00000 n 
+0000024681 00000 n 
+0000024787 00000 n 
+0000024893 00000 n 
+0000024999 00000 n 
+0000025105 00000 n 
+0000025211 00000 n 
+0000025317 00000 n 
+0000025423 00000 n 
+0000025529 00000 n 
+0000025635 00000 n 
+0000025741 00000 n 
+0000025847 00000 n 
+0000025953 00000 n 
+0000026059 00000 n 
+0000026165 00000 n 
+0000026271 00000 n 
+0000026376 00000 n 
+0000026482 00000 n 
+0000026588 00000 n 
+0000026694 00000 n 
+0000026800 00000 n 
+0000026906 00000 n 
+0000027012 00000 n 
+0000027118 00000 n 
+0000027224 00000 n 
+0000027330 00000 n 
+0000027436 00000 n 
+0000027542 00000 n 
+0000027648 00000 n 
+0000027754 00000 n 
+0000027860 00000 n 
+0000027966 00000 n 
+0000028071 00000 n 
+0000028177 00000 n 
+0000028283 00000 n 
+0000028389 00000 n 
+0000028495 00000 n 
+0000028601 00000 n 
+0000028707 00000 n 
+0000028813 00000 n 
+0000028918 00000 n 
+0000029022 00000 n 
+0000029126 00000 n 
+0000029512 00000 n 
+0000029618 00000 n 
+0000029724 00000 n 
+0000029830 00000 n 
+0000029936 00000 n 
+0000030042 00000 n 
+0000030148 00000 n 
+0000030254 00000 n 
+0000030360 00000 n 
+0000030465 00000 n 
+0000030571 00000 n 
+0000030677 00000 n 
+0000030783 00000 n 
+0000030888 00000 n 
+0000030994 00000 n 
+0000031100 00000 n 
+0000031205 00000 n 
+0000031311 00000 n 
+0000031417 00000 n 
 0000031523 00000 n 
-0000031627 00000 n 
-0000031731 00000 n 
-0000031835 00000 n 
-0000031939 00000 n 
-0000032043 00000 n 
-0000032147 00000 n 
-0000032251 00000 n 
-0000032355 00000 n 
-0000032459 00000 n 
-0000032563 00000 n 
-0000032667 00000 n 
-0000032771 00000 n 
-0000032875 00000 n 
-0000032979 00000 n 
-0000033082 00000 n 
-0000033186 00000 n 
-0000033290 00000 n 
-0000033394 00000 n 
-0000033497 00000 n 
-0000033601 00000 n 
-0000033705 00000 n 
-0000033808 00000 n 
-0000033912 00000 n 
-0000034016 00000 n 
-0000034120 00000 n 
-0000034224 00000 n 
-0000034328 00000 n 
-0000034432 00000 n 
-0000034536 00000 n 
-0000034640 00000 n 
-0000034744 00000 n 
-0000034847 00000 n 
-0000034951 00000 n 
-0000035055 00000 n 
-0000035159 00000 n 
-0000035263 00000 n 
-0000035367 00000 n 
-0000035471 00000 n 
-0000035575 00000 n 
-0000035679 00000 n 
-0000035783 00000 n 
-0000035887 00000 n 
-0000035990 00000 n 
-0000036092 00000 n 
-0000036194 00000 n 
-0000036619 00000 n 
-0000036722 00000 n 
-0000036826 00000 n 
-0000036930 00000 n 
-0000037034 00000 n 
-0000037138 00000 n 
-0000037242 00000 n 
-0000037346 00000 n 
-0000037450 00000 n 
-0000037554 00000 n 
-0000037658 00000 n 
-0000037761 00000 n 
-0000037865 00000 n 
-0000037969 00000 n 
-0000038072 00000 n 
-0000038176 00000 n 
-0000038280 00000 n 
-0000038384 00000 n 
-0000038487 00000 n 
-0000038591 00000 n 
-0000038695 00000 n 
-0000038799 00000 n 
-0000038903 00000 n 
-0000039007 00000 n 
-0000039111 00000 n 
-0000039215 00000 n 
-0000039319 00000 n 
-0000039423 00000 n 
-0000039527 00000 n 
-0000039631 00000 n 
-0000039735 00000 n 
-0000039839 00000 n 
-0000039943 00000 n 
-0000040047 00000 n 
-0000040151 00000 n 
-0000040254 00000 n 
-0000040358 00000 n 
-0000040462 00000 n 
-0000040566 00000 n 
-0000040670 00000 n 
-0000040774 00000 n 
-0000040878 00000 n 
-0000040982 00000 n 
-0000041086 00000 n 
-0000041190 00000 n 
-0000041294 00000 n 
-0000041398 00000 n 
-0000041502 00000 n 
-0000041606 00000 n 
-0000041709 00000 n 
-0000041810 00000 n 
-0000041912 00000 n 
-0000042337 00000 n 
-0000042441 00000 n 
-0000042545 00000 n 
-0000042649 00000 n 
-0000042753 00000 n 
-0000042857 00000 n 
-0000042961 00000 n 
-0000043065 00000 n 
-0000043168 00000 n 
-0000043272 00000 n 
-0000043376 00000 n 
-0000043480 00000 n 
-0000043584 00000 n 
-0000043688 00000 n 
-0000043792 00000 n 
-0000043896 00000 n 
-0000044000 00000 n 
-0000044104 00000 n 
-0000044208 00000 n 
-0000044312 00000 n 
-0000044416 00000 n 
-0000044519 00000 n 
-0000044623 00000 n 
-0000044727 00000 n 
-0000044831 00000 n 
-0000044935 00000 n 
-0000045039 00000 n 
-0000045143 00000 n 
-0000045247 00000 n 
-0000045351 00000 n 
-0000045455 00000 n 
-0000045559 00000 n 
-0000045663 00000 n 
-0000045767 00000 n 
-0000045870 00000 n 
-0000045974 00000 n 
-0000046078 00000 n 
-0000046182 00000 n 
-0000046286 00000 n 
-0000046390 00000 n 
-0000046494 00000 n 
-0000046598 00000 n 
-0000046702 00000 n 
-0000046806 00000 n 
-0000046910 00000 n 
-0000047014 00000 n 
-0000047118 00000 n 
-0000047222 00000 n 
-0000047326 00000 n 
-0000047429 00000 n 
-0000047531 00000 n 
-0000047633 00000 n 
-0000048058 00000 n 
-0000048162 00000 n 
-0000048266 00000 n 
-0000048370 00000 n 
-0000048473 00000 n 
-0000048577 00000 n 
-0000048681 00000 n 
-0000048785 00000 n 
-0000048889 00000 n 
-0000048993 00000 n 
-0000049096 00000 n 
-0000049200 00000 n 
-0000049304 00000 n 
-0000049408 00000 n 
-0000049512 00000 n 
-0000049615 00000 n 
-0000049719 00000 n 
-0000049823 00000 n 
-0000049927 00000 n 
-0000050031 00000 n 
-0000050135 00000 n 
-0000050239 00000 n 
-0000050424 00000 n 
-0000050477 00000 n 
-0000050564 00000 n 
-0000050589 00000 n 
-0000050643 00000 n 
-0000050730 00000 n 
-0000050784 00000 n 
-0000050871 00000 n 
-0000050904 00000 n 
-0000050952 00000 n 
-0000051039 00000 n 
-0000051086 00000 n 
-0000051172 00000 n 
-0000051219 00000 n 
-0000051305 00000 n 
-0000051346 00000 n 
-0000051391 00000 n 
-0000051478 00000 n 
-0000051523 00000 n 
-0000051609 00000 n 
-0000051642 00000 n 
-0000051697 00000 n 
-0000051783 00000 n 
-0000051808 00000 n 
-0000051861 00000 n 
-0000051948 00000 n 
-0000051998 00000 n 
-0000052085 00000 n 
-0000052118 00000 n 
-0000052237 00000 n 
-0000052323 00000 n 
-0000052366 00000 n 
-0000052453 00000 n 
-0000052496 00000 n 
-0000052583 00000 n 
-0000052624 00000 n 
-0000052670 00000 n 
-0000052757 00000 n 
-0000052782 00000 n 
-0000052828 00000 n 
-0000052915 00000 n 
-0000052961 00000 n 
-0000053046 00000 n 
-0000053090 00000 n 
-0000053177 00000 n 
-0000053228 00000 n 
-0000053315 00000 n 
-0000053364 00000 n 
-0000053451 00000 n 
-0000053499 00000 n 
-0000053585 00000 n 
-0000053650 00000 n 
-0000053713 00000 n 
-0000053800 00000 n 
-0000053858 00000 n 
-0000053945 00000 n 
-0000054039 00000 n 
-0000054125 00000 n 
-0000054227 00000 n 
-0000054276 00000 n 
-0000054379 00000 n 
-0000054422 00000 n 
-0000054508 00000 n 
-0000054556 00000 n 
-0000054643 00000 n 
-0000054684 00000 n 
-0000054771 00000 n 
-0000054815 00000 n 
-0000054902 00000 n 
-0000054946 00000 n 
-0000055032 00000 n 
-0000055097 00000 n 
-0000055143 00000 n 
-0000055230 00000 n 
-0000055255 00000 n 
-0000055304 00000 n 
-0000055391 00000 n 
-0000055445 00000 n 
+0000031629 00000 n 
+0000031735 00000 n 
+0000031841 00000 n 
+0000031947 00000 n 
+0000032053 00000 n 
+0000032159 00000 n 
+0000032264 00000 n 
+0000032370 00000 n 
+0000032476 00000 n 
+0000032582 00000 n 
+0000032688 00000 n 
+0000032794 00000 n 
+0000032900 00000 n 
+0000033006 00000 n 
+0000033112 00000 n 
+0000033218 00000 n 
+0000033324 00000 n 
+0000033430 00000 n 
+0000033536 00000 n 
+0000033642 00000 n 
+0000033747 00000 n 
+0000033852 00000 n 
+0000033956 00000 n 
+0000034060 00000 n 
+0000034422 00000 n 
+0000034528 00000 n 
+0000034634 00000 n 
+0000034740 00000 n 
+0000034846 00000 n 
+0000034952 00000 n 
+0000035058 00000 n 
+0000035163 00000 n 
+0000035269 00000 n 
+0000035375 00000 n 
+0000035480 00000 n 
+0000035586 00000 n 
+0000035692 00000 n 
+0000035798 00000 n 
+0000035903 00000 n 
+0000036009 00000 n 
+0000036115 00000 n 
+0000036221 00000 n 
+0000036327 00000 n 
+0000036433 00000 n 
+0000036539 00000 n 
+0000036645 00000 n 
+0000036751 00000 n 
+0000036857 00000 n 
+0000036963 00000 n 
+0000037069 00000 n 
+0000037175 00000 n 
+0000037281 00000 n 
+0000037387 00000 n 
+0000037493 00000 n 
+0000037599 00000 n 
+0000037704 00000 n 
+0000037810 00000 n 
+0000037916 00000 n 
+0000038022 00000 n 
+0000038128 00000 n 
+0000038234 00000 n 
+0000038340 00000 n 
+0000038446 00000 n 
+0000038552 00000 n 
+0000038659 00000 n 
+0000038766 00000 n 
+0000038872 00000 n 
+0000038977 00000 n 
+0000039082 00000 n 
+0000039452 00000 n 
+0000039559 00000 n 
+0000039665 00000 n 
+0000039772 00000 n 
+0000039879 00000 n 
+0000039986 00000 n 
+0000040093 00000 n 
+0000040200 00000 n 
+0000040307 00000 n 
+0000040414 00000 n 
+0000040521 00000 n 
+0000040627 00000 n 
+0000040734 00000 n 
+0000040841 00000 n 
+0000040948 00000 n 
+0000041055 00000 n 
+0000041162 00000 n 
+0000041269 00000 n 
+0000041376 00000 n 
+0000041483 00000 n 
+0000041590 00000 n 
+0000041697 00000 n 
+0000041804 00000 n 
+0000041911 00000 n 
+0000042017 00000 n 
+0000042124 00000 n 
+0000042231 00000 n 
+0000042338 00000 n 
+0000042445 00000 n 
+0000042552 00000 n 
+0000042659 00000 n 
+0000042766 00000 n 
+0000042873 00000 n 
+0000042980 00000 n 
+0000043087 00000 n 
+0000043194 00000 n 
+0000043301 00000 n 
+0000043407 00000 n 
+0000043514 00000 n 
+0000043621 00000 n 
+0000043728 00000 n 
+0000043835 00000 n 
+0000043941 00000 n 
+0000044046 00000 n 
+0000044151 00000 n 
+0000044521 00000 n 
+0000044628 00000 n 
+0000044735 00000 n 
+0000044842 00000 n 
+0000044949 00000 n 
+0000045056 00000 n 
+0000045163 00000 n 
+0000045270 00000 n 
+0000045377 00000 n 
+0000045484 00000 n 
+0000045591 00000 n 
+0000045698 00000 n 
+0000045805 00000 n 
+0000045912 00000 n 
+0000046018 00000 n 
+0000046125 00000 n 
+0000046232 00000 n 
+0000046339 00000 n 
+0000046446 00000 n 
+0000046553 00000 n 
+0000046659 00000 n 
+0000046766 00000 n 
+0000046873 00000 n 
+0000046980 00000 n 
+0000047087 00000 n 
+0000047193 00000 n 
+0000047300 00000 n 
+0000047407 00000 n 
+0000047514 00000 n 
+0000047621 00000 n 
+0000047728 00000 n 
+0000047835 00000 n 
+0000047940 00000 n 
+0000048214 00000 n 
+0000048248 00000 n 
+0000048282 00000 n 
+0000052100 00000 n 
+0000052149 00000 n 
+0000052198 00000 n 
+0000052247 00000 n 
+0000052296 00000 n 
+0000052345 00000 n 
+0000052394 00000 n 
+0000052443 00000 n 
+0000052492 00000 n 
+0000052541 00000 n 
+0000052590 00000 n 
+0000052639 00000 n 
+0000052688 00000 n 
+0000052737 00000 n 
+0000052786 00000 n 
+0000052835 00000 n 
+0000052884 00000 n 
+0000052933 00000 n 
+0000052982 00000 n 
+0000053031 00000 n 
+0000053080 00000 n 
+0000053129 00000 n 
+0000053178 00000 n 
+0000053227 00000 n 
+0000053276 00000 n 
+0000053325 00000 n 
+0000053374 00000 n 
+0000053423 00000 n 
+0000053472 00000 n 
+0000053521 00000 n 
+0000053570 00000 n 
+0000053619 00000 n 
+0000053668 00000 n 
+0000053717 00000 n 
+0000053766 00000 n 
+0000053815 00000 n 
+0000053864 00000 n 
+0000053913 00000 n 
+0000053962 00000 n 
+0000054011 00000 n 
+0000054060 00000 n 
+0000054109 00000 n 
+0000054158 00000 n 
+0000054207 00000 n 
+0000054256 00000 n 
+0000054305 00000 n 
+0000054354 00000 n 
+0000054403 00000 n 
+0000054452 00000 n 
+0000054501 00000 n 
+0000054550 00000 n 
+0000054599 00000 n 
+0000054648 00000 n 
+0000054697 00000 n 
+0000054746 00000 n 
+0000054795 00000 n 
+0000054844 00000 n 
+0000054893 00000 n 
+0000054942 00000 n 
+0000054991 00000 n 
+0000055040 00000 n 
+0000055089 00000 n 
+0000055138 00000 n 
+0000055187 00000 n 
+0000055236 00000 n 
+0000055285 00000 n 
+0000055335 00000 n 
+0000055384 00000 n 
+0000055433 00000 n 
+0000055483 00000 n 
 0000055532 00000 n 
-0000055583 00000 n 
-0000055670 00000 n 
-0000055721 00000 n 
-0000055807 00000 n 
-0000055861 00000 n 
-0000055947 00000 n 
-0000056004 00000 n 
-0000056054 00000 n 
-0000056141 00000 n 
-0000056191 00000 n 
-0000056277 00000 n 
-0000056341 00000 n 
-0000056428 00000 n 
-0000056469 00000 n 
-0000056533 00000 n 
-0000056620 00000 n 
-0000056645 00000 n 
-0000056687 00000 n 
-0000056773 00000 n 
-0000056824 00000 n 
-0000056911 00000 n 
-0000056958 00000 n 
-0000057045 00000 n 
-0000057086 00000 n 
-0000057135 00000 n 
-0000057222 00000 n 
-0000057270 00000 n 
-0000057357 00000 n 
-0000057399 00000 n 
-0000057485 00000 n 
-0000057526 00000 n 
-0000057569 00000 n 
-0000057656 00000 n 
-0000057706 00000 n 
-0000057793 00000 n 
-0000057841 00000 n 
-0000057928 00000 n 
-0000057982 00000 n 
-0000058067 00000 n 
-0000058116 00000 n 
-0000058161 00000 n 
-0000058248 00000 n 
-0000058305 00000 n 
-0000058392 00000 n 
-0000058488 00000 n 
-0000058574 00000 n 
-0000058615 00000 n 
-0000058677 00000 n 
-0000058764 00000 n 
-0000058789 00000 n 
-0000058838 00000 n 
-0000058925 00000 n 
-0000058950 00000 n 
-0000058998 00000 n 
-0000059085 00000 n 
-0000059135 00000 n 
+0000055581 00000 n 
+0000055631 00000 n 
+0000055681 00000 n 
+0000055731 00000 n 
+0000055781 00000 n 
+0000055831 00000 n 
+0000055881 00000 n 
+0000055931 00000 n 
+0000055981 00000 n 
+0000056030 00000 n 
+0000056080 00000 n 
+0000056130 00000 n 
+0000056180 00000 n 
+0000056229 00000 n 
+0000056279 00000 n 
+0000056329 00000 n 
+0000056379 00000 n 
+0000056429 00000 n 
+0000056479 00000 n 
+0000056529 00000 n 
+0000056579 00000 n 
+0000056629 00000 n 
+0000056679 00000 n 
+0000056729 00000 n 
+0000056778 00000 n 
+0000056827 00000 n 
+0000056877 00000 n 
+0000056927 00000 n 
+0000056977 00000 n 
+0000057027 00000 n 
+0000057077 00000 n 
+0000057126 00000 n 
+0000057176 00000 n 
+0000057226 00000 n 
+0000057276 00000 n 
+0000057325 00000 n 
+0000057375 00000 n 
+0000057425 00000 n 
+0000057475 00000 n 
+0000057525 00000 n 
+0000057575 00000 n 
+0000057625 00000 n 
+0000057675 00000 n 
+0000057725 00000 n 
+0000057775 00000 n 
+0000057824 00000 n 
+0000057874 00000 n 
+0000057924 00000 n 
+0000057974 00000 n 
+0000058024 00000 n 
+0000058074 00000 n 
+0000058123 00000 n 
+0000058173 00000 n 
+0000058223 00000 n 
+0000058273 00000 n 
+0000058323 00000 n 
+0000058373 00000 n 
+0000058423 00000 n 
+0000058473 00000 n 
+0000058523 00000 n 
+0000058573 00000 n 
+0000058622 00000 n 
+0000058672 00000 n 
+0000058722 00000 n 
+0000058772 00000 n 
+0000058822 00000 n 
+0000058872 00000 n 
+0000058922 00000 n 
+0000058972 00000 n 
+0000059021 00000 n 
+0000059071 00000 n 
+0000059121 00000 n 
+0000059171 00000 n 
 0000059221 00000 n 
-0000059265 00000 n 
-0000059351 00000 n 
-0000059395 00000 n 
-0000059481 00000 n 
-0000059531 00000 n 
-0000059617 00000 n 
-0000059667 00000 n 
-0000059752 00000 n 
-0000059801 00000 n 
-0000059885 00000 n 
-0000059932 00000 n 
-0000060016 00000 n 
-0000060097 00000 n 
-0000060145 00000 n 
-0000060232 00000 n 
-0000060280 00000 n 
-0000060367 00000 n 
-0000060417 00000 n 
-0000060504 00000 n 
-0000060552 00000 n 
-0000060639 00000 n 
-0000060688 00000 n 
-0000060736 00000 n 
-0000060823 00000 n 
-0000060871 00000 n 
-0000060956 00000 n 
+0000059270 00000 n 
+0000059320 00000 n 
+0000059370 00000 n 
+0000059420 00000 n 
+0000059470 00000 n 
+0000059520 00000 n 
+0000059570 00000 n 
+0000059620 00000 n 
+0000059670 00000 n 
+0000059720 00000 n 
+0000059770 00000 n 
+0000059820 00000 n 
+0000059870 00000 n 
+0000059920 00000 n 
+0000059970 00000 n 
+0000060020 00000 n 
+0000060070 00000 n 
+0000060119 00000 n 
+0000060168 00000 n 
+0000060217 00000 n 
+0000060266 00000 n 
+0000060315 00000 n 
+0000060364 00000 n 
+0000060413 00000 n 
+0000060462 00000 n 
+0000060511 00000 n 
+0000060560 00000 n 
+0000060609 00000 n 
+0000060658 00000 n 
+0000060707 00000 n 
+0000060756 00000 n 
+0000060805 00000 n 
+0000060854 00000 n 
+0000060903 00000 n 
+0000060952 00000 n 
 0000061001 00000 n 
-0000061087 00000 n 
-0000061130 00000 n 
-0000061216 00000 n 
-0000061257 00000 n 
-0000061343 00000 n 
-0000061392 00000 n 
-0000061478 00000 n 
-0000061524 00000 n 
-0000061610 00000 n 
-0000061655 00000 n 
-0000061741 00000 n 
-0000061793 00000 n 
-0000061879 00000 n 
-0000061929 00000 n 
-0000062015 00000 n 
-0000062061 00000 n 
-0000062147 00000 n 
-0000062190 00000 n 
-0000062276 00000 n 
-0000062320 00000 n 
-0000062406 00000 n 
-0000062449 00000 n 
-0000062535 00000 n 
-0000062580 00000 n 
-0000062666 00000 n 
-0000062704 00000 n 
-0000062790 00000 n 
-0000062832 00000 n 
-0000062918 00000 n 
-0000062961 00000 n 
-0000063047 00000 n 
-0000063085 00000 n 
-0000063171 00000 n 
-0000063213 00000 n 
-0000063299 00000 n 
-0000063343 00000 n 
-0000063429 00000 n 
-0000063476 00000 n 
-0000063562 00000 n 
-0000063610 00000 n 
-0000063695 00000 n 
-0000063896 00000 n 
-0000063946 00000 n 
-0000064033 00000 n 
-0000064083 00000 n 
-0000064169 00000 n 
-0000064202 00000 n 
-0000064251 00000 n 
-0000064337 00000 n 
-0000064384 00000 n 
-0000064471 00000 n 
-0000064504 00000 n 
-0000064619 00000 n 
-0000064706 00000 n 
-0000064731 00000 n 
-0000064813 00000 n 
-0000064900 00000 n 
-0000064985 00000 n 
-0000065072 00000 n 
-0000065105 00000 n 
-0000065160 00000 n 
-0000065247 00000 n 
-0000065303 00000 n 
-0000065390 00000 n 
-0000065423 00000 n 
-0000065471 00000 n 
-0000065558 00000 n 
-0000065632 00000 n 
-0000065719 00000 n 
-0000065787 00000 n 
-0000065874 00000 n 
-0000065928 00000 n 
-0000066015 00000 n 
-0000066083 00000 n 
-0000066170 00000 n 
-0000066244 00000 n 
-0000066331 00000 n 
-0000066379 00000 n 
-0000066466 00000 n 
-0000066523 00000 n 
-0000066610 00000 n 
-0000066691 00000 n 
-0000066746 00000 n 
-0000066833 00000 n 
-0000066914 00000 n 
-0000067001 00000 n 
-0000067034 00000 n 
-0000067087 00000 n 
-0000067174 00000 n 
-0000067199 00000 n 
-0000067255 00000 n 
-0000067342 00000 n 
-0000067411 00000 n 
-0000067498 00000 n 
-0000067549 00000 n 
-0000067636 00000 n 
-0000067723 00000 n 
-0000067810 00000 n 
-0000067866 00000 n 
-0000067953 00000 n 
-0000068003 00000 n 
-0000068090 00000 n 
-0000068155 00000 n 
-0000068207 00000 n 
-0000068294 00000 n 
-0000068350 00000 n 
-0000068437 00000 n 
-0000068485 00000 n 
-0000068572 00000 n 
-0000068620 00000 n 
-0000068707 00000 n 
-0000068756 00000 n 
-0000068797 00000 n 
-0000068882 00000 n 
-0000068907 00000 n 
-0000068951 00000 n 
-0000069038 00000 n 
-0000069083 00000 n 
-0000069170 00000 n 
-0000069214 00000 n 
-0000069301 00000 n 
-0000069345 00000 n 
-0000069432 00000 n 
-0000069474 00000 n 
-0000069561 00000 n 
-0000069609 00000 n 
-0000069696 00000 n 
-0000069761 00000 n 
-0000069809 00000 n 
-0000069895 00000 n 
-0000069920 00000 n 
-0000069973 00000 n 
-0000070059 00000 n 
-0000070084 00000 n 
-0000070138 00000 n 
-0000070225 00000 n 
-0000070250 00000 n 
-0000070329 00000 n 
-0000070416 00000 n 
-0000070498 00000 n 
-0000070584 00000 n 
-0000070659 00000 n 
-0000070746 00000 n 
-0000070819 00000 n 
-0000070906 00000 n 
-0000070955 00000 n 
-0000071033 00000 n 
-0000071120 00000 n 
-0000071145 00000 n 
-0000071208 00000 n 
-0000071295 00000 n 
-0000071358 00000 n 
-0000071445 00000 n 
-0000071499 00000 n 
-0000071586 00000 n 
-0000071627 00000 n 
-0000071674 00000 n 
-0000071761 00000 n 
-0000071786 00000 n 
-0000071820 00000 n 
-0000071854 00000 n 
-0000075683 00000 n 
-0000075727 00000 n 
-0000075771 00000 n 
-0000075815 00000 n 
-0000075859 00000 n 
-0000075903 00000 n 
-0000075947 00000 n 
-0000075991 00000 n 
-0000076035 00000 n 
-0000076079 00000 n 
-0000076123 00000 n 
-0000076167 00000 n 
-0000076211 00000 n 
-0000076255 00000 n 
-0000076299 00000 n 
-0000076343 00000 n 
-0000076387 00000 n 
-0000076431 00000 n 
-0000076475 00000 n 
-0000076519 00000 n 
-0000076563 00000 n 
-0000076607 00000 n 
-0000076651 00000 n 
-0000076695 00000 n 
-0000076739 00000 n 
-0000076783 00000 n 
-0000076827 00000 n 
-0000076871 00000 n 
-0000076915 00000 n 
-0000076959 00000 n 
-0000077003 00000 n 
-0000077047 00000 n 
-0000077091 00000 n 
-0000077135 00000 n 
-0000077179 00000 n 
-0000077223 00000 n 
-0000077267 00000 n 
-0000077311 00000 n 
-0000077355 00000 n 
-0000077399 00000 n 
-0000077443 00000 n 
-0000077487 00000 n 
-0000077531 00000 n 
-0000077575 00000 n 
-0000077619 00000 n 
-0000077663 00000 n 
-0000077707 00000 n 
-0000077751 00000 n 
-0000077795 00000 n 
-0000077839 00000 n 
-0000077883 00000 n 
-0000077927 00000 n 
-0000077971 00000 n 
-0000078015 00000 n 
-0000078059 00000 n 
-0000078103 00000 n 
-0000078147 00000 n 
-0000078191 00000 n 
-0000078235 00000 n 
-0000078279 00000 n 
-0000078323 00000 n 
-0000078367 00000 n 
-0000078411 00000 n 
-0000078455 00000 n 
-0000078499 00000 n 
-0000078543 00000 n 
-0000078587 00000 n 
-0000078631 00000 n 
-0000078675 00000 n 
-0000078719 00000 n 
-0000078763 00000 n 
-0000078807 00000 n 
-0000078851 00000 n 
-0000078895 00000 n 
-0000078939 00000 n 
-0000078983 00000 n 
-0000079027 00000 n 
-0000079071 00000 n 
-0000079115 00000 n 
-0000079159 00000 n 
-0000079203 00000 n 
-0000079247 00000 n 
-0000079291 00000 n 
-0000079335 00000 n 
-0000079379 00000 n 
-0000079423 00000 n 
-0000079467 00000 n 
-0000079511 00000 n 
-0000079555 00000 n 
-0000079599 00000 n 
-0000079643 00000 n 
-0000079687 00000 n 
-0000079731 00000 n 
-0000079775 00000 n 
-0000079819 00000 n 
-0000079863 00000 n 
-0000079907 00000 n 
-0000079951 00000 n 
-0000079995 00000 n 
-0000080039 00000 n 
-0000080083 00000 n 
-0000080127 00000 n 
-0000080171 00000 n 
-0000080215 00000 n 
-0000080259 00000 n 
-0000080303 00000 n 
-0000080347 00000 n 
-0000080391 00000 n 
-0000080435 00000 n 
-0000080479 00000 n 
-0000080523 00000 n 
-0000080567 00000 n 
-0000080611 00000 n 
-0000080655 00000 n 
-0000080699 00000 n 
-0000080743 00000 n 
-0000080787 00000 n 
-0000080831 00000 n 
-0000080875 00000 n 
-0000080919 00000 n 
-0000080963 00000 n 
-0000081007 00000 n 
-0000081051 00000 n 
-0000081095 00000 n 
-0000081139 00000 n 
-0000081183 00000 n 
-0000081227 00000 n 
-0000081271 00000 n 
-0000081315 00000 n 
-0000081359 00000 n 
-0000081403 00000 n 
-0000081447 00000 n 
-0000081491 00000 n 
-0000081535 00000 n 
-0000081579 00000 n 
-0000081623 00000 n 
-0000081667 00000 n 
-0000081711 00000 n 
-0000081755 00000 n 
-0000081799 00000 n 
-0000081843 00000 n 
-0000081887 00000 n 
-0000081931 00000 n 
-0000081975 00000 n 
-0000082019 00000 n 
-0000082063 00000 n 
-0000082107 00000 n 
-0000082151 00000 n 
-0000082195 00000 n 
-0000082239 00000 n 
-0000082283 00000 n 
-0000082327 00000 n 
-0000082371 00000 n 
-0000082415 00000 n 
-0000082459 00000 n 
-0000082503 00000 n 
-0000082547 00000 n 
-0000082591 00000 n 
-0000082635 00000 n 
-0000082679 00000 n 
-0000082723 00000 n 
-0000082767 00000 n 
-0000082811 00000 n 
-0000082855 00000 n 
-0000082899 00000 n 
-0000082943 00000 n 
-0000082987 00000 n 
-0000083031 00000 n 
-0000083075 00000 n 
-0000083119 00000 n 
-0000083163 00000 n 
-0000083207 00000 n 
-0000083251 00000 n 
-0000083295 00000 n 
-0000083339 00000 n 
-0000083383 00000 n 
-0000083427 00000 n 
-0000083471 00000 n 
-0000083515 00000 n 
-0000083559 00000 n 
-0000083603 00000 n 
-0000083647 00000 n 
-0000083691 00000 n 
-0000083735 00000 n 
-0000083779 00000 n 
-0000083823 00000 n 
-0000083867 00000 n 
-0000083911 00000 n 
-0000083955 00000 n 
-0000083999 00000 n 
-0000084043 00000 n 
-0000084087 00000 n 
-0000084131 00000 n 
-0000084175 00000 n 
-0000084219 00000 n 
-0000084263 00000 n 
-0000084307 00000 n 
-0000084351 00000 n 
-0000084395 00000 n 
-0000084439 00000 n 
-0000084483 00000 n 
-0000084527 00000 n 
-0000084571 00000 n 
-0000084615 00000 n 
-0000084659 00000 n 
-0000084703 00000 n 
-0000084747 00000 n 
-0000084791 00000 n 
-0000084835 00000 n 
-0000084879 00000 n 
-0000084923 00000 n 
-0000084967 00000 n 
-0000085011 00000 n 
-0000085055 00000 n 
-0000085099 00000 n 
-0000085143 00000 n 
-0000085187 00000 n 
-0000085231 00000 n 
-0000085275 00000 n 
-0000085319 00000 n 
-0000085363 00000 n 
-0000085407 00000 n 
-0000085451 00000 n 
-0000085495 00000 n 
-0000085540 00000 n 
-0000085585 00000 n 
-0000085630 00000 n 
-0000085675 00000 n 
-0000085720 00000 n 
-0000085765 00000 n 
-0000085810 00000 n 
-0000085855 00000 n 
-0000085900 00000 n 
-0000085945 00000 n 
-0000085990 00000 n 
-0000087128 00000 n 
-0000087289 00000 n 
-0000087458 00000 n 
-0000087651 00000 n 
-0000091401 00000 n 
-0000091595 00000 n 
-0000096208 00000 n 
-0000096402 00000 n 
-0000100424 00000 n 
-0000100618 00000 n 
-0000105295 00000 n 
-0000105489 00000 n 
-0000108864 00000 n 
-0000109025 00000 n 
-0000109259 00000 n 
-0000109463 00000 n 
-0000111991 00000 n 
-0000112175 00000 n 
-0000115562 00000 n 
-0000115737 00000 n 
-0000118870 00000 n 
-0000119045 00000 n 
-0000121911 00000 n 
-0000122086 00000 n 
-0000123648 00000 n 
-0000123860 00000 n 
-0000125016 00000 n 
-0000125204 00000 n 
-0000126725 00000 n 
-0000126922 00000 n 
-0000128358 00000 n 
-0000128573 00000 n 
-0000129938 00000 n 
-0000130117 00000 n 
-0000131659 00000 n 
-0000131829 00000 n 
-0000133376 00000 n 
-0000133555 00000 n 
-0000134989 00000 n 
-0000135168 00000 n 
-0000136881 00000 n 
-0000137060 00000 n 
-0000138608 00000 n 
-0000138787 00000 n 
-0000140477 00000 n 
-0000140671 00000 n 
-0000142391 00000 n 
-0000142589 00000 n 
-0000143950 00000 n 
-0000144148 00000 n 
-0000145832 00000 n 
-0000146020 00000 n 
-0000147693 00000 n 
-0000147872 00000 n 
-0000149972 00000 n 
-0000150151 00000 n 
-0000151924 00000 n 
-0000152103 00000 n 
-0000153783 00000 n 
-0000153971 00000 n 
-0000155826 00000 n 
-0000156038 00000 n 
-0000158096 00000 n 
-0000158309 00000 n 
-0000159876 00000 n 
-0000160065 00000 n 
-0000161340 00000 n 
-0000161528 00000 n 
-0000163054 00000 n 
-0000163257 00000 n 
-0000164983 00000 n 
-0000165186 00000 n 
-0000166036 00000 n 
-0000166248 00000 n 
-0000167758 00000 n 
-0000167938 00000 n 
-0000168696 00000 n 
-0000168917 00000 n 
-0000170715 00000 n 
-0000170921 00000 n 
-0000172803 00000 n 
-0000173000 00000 n 
-0000174586 00000 n 
-0000174797 00000 n 
-0000176366 00000 n 
-0000176554 00000 n 
-0000177456 00000 n 
-0000177687 00000 n 
-0000179554 00000 n 
-0000179766 00000 n 
-0000181714 00000 n 
-0000181945 00000 n 
-0000183955 00000 n 
-0000184177 00000 n 
-0000185990 00000 n 
-0000186212 00000 n 
-0000187950 00000 n 
-0000188148 00000 n 
-0000190047 00000 n 
-0000190259 00000 n 
-0000191158 00000 n 
-0000191337 00000 n 
-0000192800 00000 n 
-0000192979 00000 n 
-0000194295 00000 n 
-0000194474 00000 n 
-0000196096 00000 n 
-0000196275 00000 n 
-0000197772 00000 n 
-0000197942 00000 n 
-0000198286 00000 n 
-0000198489 00000 n 
-0000200392 00000 n 
-0000200552 00000 n 
-0000201675 00000 n 
-0000201905 00000 n 
-0000203429 00000 n 
-0000203641 00000 n 
-0000205430 00000 n 
-0000205623 00000 n 
-0000207029 00000 n 
-0000207218 00000 n 
-0000208909 00000 n 
-0000209088 00000 n 
-0000210834 00000 n 
-0000211022 00000 n 
-0000212929 00000 n 
-0000213142 00000 n 
-0000215027 00000 n 
-0000215267 00000 n 
-0000217360 00000 n 
-0000217572 00000 n 
-0000219173 00000 n 
-0000219379 00000 n 
-0000220540 00000 n 
-0000220728 00000 n 
-0000221926 00000 n 
-0000222105 00000 n 
-0000223111 00000 n 
-0000223299 00000 n 
-0000224926 00000 n 
-0000225114 00000 n 
-0000226383 00000 n 
-0000226572 00000 n 
-0000227880 00000 n 
-0000228050 00000 n 
-0000228522 00000 n 
-0000228735 00000 n 
-0000230550 00000 n 
-0000230763 00000 n 
-0000232341 00000 n 
-0000232563 00000 n 
-0000234382 00000 n 
-0000234622 00000 n 
-0000236345 00000 n 
-0000236552 00000 n 
-0000238397 00000 n 
-0000238628 00000 n 
-0000240518 00000 n 
-0000240740 00000 n 
-0000242686 00000 n 
-0000242898 00000 n 
-0000244947 00000 n 
-0000245150 00000 n 
-0000247484 00000 n 
-0000247706 00000 n 
-0000249950 00000 n 
-0000250157 00000 n 
-0000252137 00000 n 
-0000252316 00000 n 
-0000253874 00000 n 
-0000254044 00000 n 
-0000256044 00000 n 
-0000256232 00000 n 
-0000258319 00000 n 
-0000258507 00000 n 
-0000260317 00000 n 
-0000260495 00000 n 
-0000262345 00000 n 
-0000262505 00000 n 
-0000263289 00000 n 
-0000263483 00000 n 
-0000265084 00000 n 
-0000265273 00000 n 
-0000266934 00000 n 
-0000267104 00000 n 
-0000267926 00000 n 
-0000268148 00000 n 
-0000270284 00000 n 
-0000270497 00000 n 
-0000272551 00000 n 
-0000272773 00000 n 
-0000273995 00000 n 
-0000274208 00000 n 
-0000275805 00000 n 
-0000276027 00000 n 
-0000277850 00000 n 
-0000278072 00000 n 
-0000279804 00000 n 
-0000279998 00000 n 
-0000280725 00000 n 
-0000280895 00000 n 
-0000282572 00000 n 
-0000282751 00000 n 
-0000284566 00000 n 
-0000284735 00000 n 
-0000286578 00000 n 
-0000286747 00000 n 
-0000287736 00000 n 
-0000287915 00000 n 
-0000289563 00000 n 
-0000289751 00000 n 
-0000291242 00000 n 
-0000291430 00000 n 
-0000292855 00000 n 
-0000293025 00000 n 
-0000294693 00000 n 
-0000294863 00000 n 
-0000295420 00000 n 
-0000295599 00000 n 
-0000297205 00000 n 
-0000297384 00000 n 
-0000299054 00000 n 
-0000299224 00000 n 
-0000300773 00000 n 
-0000300943 00000 n 
-0000302243 00000 n 
-0000302413 00000 n 
-0000304039 00000 n 
-0000304209 00000 n 
-0000305796 00000 n 
-0000306000 00000 n 
-0000307587 00000 n 
-0000307781 00000 n 
-0000308949 00000 n 
-0000309152 00000 n 
-0000310725 00000 n 
-0000310903 00000 n 
-0000311589 00000 n 
-0000311792 00000 n 
-0000313470 00000 n 
-0000313658 00000 n 
-0000315387 00000 n 
-0000315446 00000 n 
-0000315549 00000 n 
-0000315714 00000 n 
-0000315796 00000 n 
-0000315904 00000 n 
-0000316083 00000 n 
-0000316200 00000 n 
-0000316334 00000 n 
-0000316469 00000 n 
-0000316616 00000 n 
-0000316764 00000 n 
-0000316941 00000 n 
-0000317067 00000 n 
-0000317205 00000 n 
-0000317365 00000 n 
-0000317513 00000 n 
-0000317699 00000 n 
-0000317855 00000 n 
-0000317968 00000 n 
-0000318085 00000 n 
-0000318220 00000 n 
-0000318361 00000 n 
-0000318476 00000 n 
-0000318587 00000 n 
-0000318764 00000 n 
-0000318867 00000 n 
-0000318983 00000 n 
-0000319132 00000 n 
-0000319231 00000 n 
-0000319344 00000 n 
-0000319457 00000 n 
-0000319570 00000 n 
-0000319683 00000 n 
-0000319796 00000 n 
-0000319909 00000 n 
-0000320022 00000 n 
-0000320135 00000 n 
-0000320250 00000 n 
-0000320351 00000 n 
-0000320464 00000 n 
-0000320655 00000 n 
-0000320752 00000 n 
-0000320937 00000 n 
-0000321040 00000 n 
-0000321163 00000 n 
-0000321284 00000 n 
-0000321395 00000 n 
-0000321590 00000 n 
-0000321705 00000 n 
-0000321828 00000 n 
-0000321945 00000 n 
-0000322062 00000 n 
-0000322166 00000 n 
-0000322354 00000 n 
-0000322576 00000 n 
-0000322714 00000 n 
-0000322876 00000 n 
-0000323012 00000 n 
-0000323114 00000 n 
-0000323331 00000 n 
-0000323435 00000 n 
-0000323566 00000 n 
-0000323686 00000 n 
-0000323892 00000 n 
-0000324019 00000 n 
-0000324103 00000 n 
-0000324308 00000 n 
-0000324466 00000 n 
-0000324613 00000 n 
-0000324740 00000 n 
-0000324920 00000 n 
-0000325029 00000 n 
-0000325143 00000 n 
-0000325287 00000 n 
-0000325450 00000 n 
-0000325599 00000 n 
-0000325779 00000 n 
-0000325882 00000 n 
-0000326038 00000 n 
-0000326148 00000 n 
-0000326292 00000 n 
-0000326433 00000 n 
-0000326582 00000 n 
-0000326698 00000 n 
-0000326861 00000 n 
-0000326971 00000 n 
-0000327110 00000 n 
-0000327236 00000 n 
-0000327352 00000 n 
-0000327481 00000 n 
-0000327657 00000 n 
-0000327760 00000 n 
-0000327891 00000 n 
-0000328020 00000 n 
-0000328162 00000 n 
-0000328286 00000 n 
-0000328415 00000 n 
-0000328542 00000 n 
-0000328664 00000 n 
-0000328769 00000 n 
-0000328933 00000 n 
-0000329036 00000 n 
-0000329171 00000 n 
-0000329351 00000 n 
-0000329478 00000 n 
-0000329614 00000 n 
-0000329748 00000 n 
-0000329954 00000 n 
-0000330054 00000 n 
-0000330172 00000 n 
-0000330337 00000 n 
-0000330428 00000 n 
-0000330589 00000 n 
-0000330715 00000 n 
-0000330842 00000 n 
-0000330982 00000 n 
-0000331118 00000 n 
-0000331226 00000 n 
-0000331400 00000 n 
-0000331506 00000 n 
-0000331626 00000 n 
-0000331738 00000 n 
-0000331855 00000 n 
-0000331957 00000 n 
-0000332164 00000 n 
-0000332276 00000 n 
-0000332392 00000 n 
-0000332537 00000 n 
-0000332746 00000 n 
-0000332881 00000 n 
-0000333036 00000 n 
-0000333162 00000 n 
-0000333294 00000 n 
-0000333428 00000 n 
-0000333560 00000 n 
-0000333736 00000 n 
-0000333872 00000 n 
-0000334026 00000 n 
-0000334172 00000 n 
-0000334398 00000 n 
-0000334510 00000 n 
-0000334626 00000 n 
-0000334820 00000 n 
-0000334964 00000 n 
-0000335081 00000 n 
-0000335227 00000 n 
-0000335385 00000 n 
-0000335503 00000 n 
-0000335723 00000 n 
-0000335822 00000 n 
-0000335940 00000 n 
-0000336068 00000 n 
-0000336226 00000 n 
-0000336397 00000 n 
-0000336513 00000 n 
-0000336624 00000 n 
-0000336760 00000 n 
-0000336891 00000 n 
-0000337039 00000 n 
-0000337184 00000 n 
-0000337285 00000 n 
-0000337462 00000 n 
-0000337574 00000 n 
-0000337705 00000 n 
-0000337829 00000 n 
-0000337996 00000 n 
-0000338113 00000 n 
-0000338243 00000 n 
-0000338383 00000 n 
-0000338520 00000 n 
-0000338656 00000 n 
-0000338792 00000 n 
-0000338929 00000 n 
-0000339041 00000 n 
-0000339216 00000 n 
-0000339319 00000 n 
-0000339470 00000 n 
-0000339572 00000 n 
-0000339694 00000 n 
-0000339826 00000 n 
-0000339946 00000 n 
-0000340061 00000 n 
-0000340175 00000 n 
-0000340288 00000 n 
-0000340405 00000 n 
-0000340520 00000 n 
-0000340636 00000 n 
-0000340751 00000 n 
-0000340867 00000 n 
-0000340989 00000 n 
-0000341110 00000 n 
-0000341229 00000 n 
-0000341347 00000 n 
-0000341467 00000 n 
-0000341570 00000 n 
-0000341736 00000 n 
-0000341856 00000 n 
-0000342025 00000 n 
-0000342213 00000 n 
-0000342394 00000 n 
-0000342550 00000 n 
-0000342738 00000 n 
-0000342842 00000 n 
-0000342995 00000 n 
-0000343106 00000 n 
-0000343214 00000 n 
-0000343364 00000 n 
-0000343468 00000 n 
-0000343586 00000 n 
-0000343704 00000 n 
-0000343825 00000 n 
-0000343961 00000 n 
-0000344060 00000 n 
+0000061050 00000 n 
+0000061099 00000 n 
+0000061148 00000 n 
+0000061197 00000 n 
+0000061246 00000 n 
+0000061295 00000 n 
+0000061344 00000 n 
+0000061393 00000 n 
+0000061442 00000 n 
+0000061491 00000 n 
+0000061540 00000 n 
+0000061589 00000 n 
+0000061638 00000 n 
+0000061687 00000 n 
+0000061736 00000 n 
+0000061785 00000 n 
+0000061834 00000 n 
+0000061883 00000 n 
+0000061932 00000 n 
+0000061981 00000 n 
+0000062030 00000 n 
+0000062079 00000 n 
+0000062128 00000 n 
+0000062177 00000 n 
+0000062226 00000 n 
+0000062275 00000 n 
+0000062324 00000 n 
+0000062373 00000 n 
+0000062422 00000 n 
+0000062471 00000 n 
+0000062520 00000 n 
+0000062569 00000 n 
+0000062618 00000 n 
+0000062667 00000 n 
+0000062717 00000 n 
+0000062767 00000 n 
+0000062816 00000 n 
+0000062865 00000 n 
+0000062915 00000 n 
+0000062964 00000 n 
+0000063013 00000 n 
+0000063062 00000 n 
+0000063111 00000 n 
+0000063161 00000 n 
+0000063210 00000 n 
+0000063259 00000 n 
+0000063308 00000 n 
+0000063358 00000 n 
+0000063408 00000 n 
+0000063457 00000 n 
+0000063506 00000 n 
+0000063555 00000 n 
+0000063605 00000 n 
+0000063654 00000 n 
+0000063703 00000 n 
+0000064784 00000 n 
+0000064940 00000 n 
+0000065663 00000 n 
+0000065684 00000 n 
+0000065858 00000 n 
+0000067020 00000 n 
+0000067042 00000 n 
+0000067193 00000 n 
+0000068699 00000 n 
+0000068721 00000 n 
+0000068881 00000 n 
+0000070317 00000 n 
+0000070339 00000 n 
+0000070517 00000 n 
+0000071777 00000 n 
+0000071799 00000 n 
+0000071941 00000 n 
+0000073517 00000 n 
+0000073539 00000 n 
+0000073672 00000 n 
+0000075466 00000 n 
+0000075488 00000 n 
+0000075630 00000 n 
+0000077099 00000 n 
+0000077121 00000 n 
+0000077263 00000 n 
+0000078935 00000 n 
+0000078957 00000 n 
+0000079099 00000 n 
+0000080639 00000 n 
+0000080661 00000 n 
+0000080803 00000 n 
+0000082401 00000 n 
+0000082423 00000 n 
+0000082565 00000 n 
+0000084245 00000 n 
+0000084267 00000 n 
+0000084414 00000 n 
+0000084930 00000 n 
+0000084951 00000 n 
+0000085112 00000 n 
+0000086395 00000 n 
+0000086417 00000 n 
+0000086578 00000 n 
+0000088333 00000 n 
+0000088355 00000 n 
+0000088515 00000 n 
+0000090160 00000 n 
+0000090182 00000 n 
+0000090324 00000 n 
+0000092387 00000 n 
+0000092409 00000 n 
+0000092551 00000 n 
+0000094363 00000 n 
+0000094385 00000 n 
+0000094527 00000 n 
+0000096251 00000 n 
+0000096273 00000 n 
+0000096424 00000 n 
+0000098191 00000 n 
+0000098213 00000 n 
+0000098388 00000 n 
+0000100481 00000 n 
+0000100503 00000 n 
+0000100663 00000 n 
+0000102259 00000 n 
+0000102281 00000 n 
+0000102456 00000 n 
+0000103950 00000 n 
+0000103972 00000 n 
+0000104124 00000 n 
+0000104931 00000 n 
+0000104952 00000 n 
+0000105103 00000 n 
+0000106741 00000 n 
+0000106763 00000 n 
+0000106928 00000 n 
+0000108700 00000 n 
+0000108722 00000 n 
+0000108887 00000 n 
+0000109780 00000 n 
+0000109801 00000 n 
+0000109975 00000 n 
+0000111580 00000 n 
+0000111602 00000 n 
+0000111745 00000 n 
+0000112503 00000 n 
+0000112524 00000 n 
+0000112707 00000 n 
+0000114575 00000 n 
+0000114597 00000 n 
+0000114766 00000 n 
+0000116619 00000 n 
+0000116641 00000 n 
+0000116801 00000 n 
+0000118485 00000 n 
+0000118507 00000 n 
+0000118680 00000 n 
+0000120408 00000 n 
+0000120430 00000 n 
+0000120581 00000 n 
+0000121505 00000 n 
+0000121526 00000 n 
+0000121710 00000 n 
+0000123534 00000 n 
+0000123556 00000 n 
+0000123730 00000 n 
+0000125902 00000 n 
+0000125924 00000 n 
+0000126117 00000 n 
+0000128044 00000 n 
+0000128066 00000 n 
+0000128251 00000 n 
+0000130161 00000 n 
+0000130183 00000 n 
+0000130359 00000 n 
+0000132161 00000 n 
+0000132183 00000 n 
+0000132353 00000 n 
+0000133950 00000 n 
+0000133972 00000 n 
+0000134157 00000 n 
+0000135633 00000 n 
+0000135655 00000 n 
+0000135797 00000 n 
+0000137312 00000 n 
+0000137334 00000 n 
+0000137476 00000 n 
+0000138868 00000 n 
+0000138890 00000 n 
+0000139032 00000 n 
+0000140686 00000 n 
+0000140708 00000 n 
+0000140850 00000 n 
+0000142427 00000 n 
+0000142449 00000 n 
+0000142582 00000 n 
+0000142929 00000 n 
+0000142950 00000 n 
+0000143116 00000 n 
+0000144984 00000 n 
+0000145006 00000 n 
+0000145129 00000 n 
+0000146353 00000 n 
+0000146375 00000 n 
+0000146568 00000 n 
+0000148139 00000 n 
+0000148161 00000 n 
+0000148336 00000 n 
+0000150118 00000 n 
+0000150140 00000 n 
+0000150296 00000 n 
+0000151857 00000 n 
+0000151879 00000 n 
+0000152031 00000 n 
+0000153772 00000 n 
+0000153794 00000 n 
+0000153936 00000 n 
+0000155698 00000 n 
+0000155720 00000 n 
+0000155871 00000 n 
+0000157762 00000 n 
+0000157784 00000 n 
+0000157941 00000 n 
+0000159778 00000 n 
+0000159800 00000 n 
+0000159994 00000 n 
+0000162017 00000 n 
+0000162039 00000 n 
+0000162214 00000 n 
+0000163688 00000 n 
+0000163710 00000 n 
+0000163885 00000 n 
+0000165348 00000 n 
+0000165370 00000 n 
+0000165539 00000 n 
+0000166852 00000 n 
+0000166874 00000 n 
+0000167016 00000 n 
+0000168052 00000 n 
+0000168073 00000 n 
+0000168224 00000 n 
+0000169435 00000 n 
+0000169457 00000 n 
+0000169608 00000 n 
+0000171084 00000 n 
+0000171106 00000 n 
+0000171248 00000 n 
+0000172297 00000 n 
+0000172318 00000 n 
+0000172470 00000 n 
+0000173781 00000 n 
+0000173803 00000 n 
+0000173988 00000 n 
+0000175841 00000 n 
+0000175863 00000 n 
+0000176029 00000 n 
+0000177678 00000 n 
+0000177700 00000 n 
+0000177885 00000 n 
+0000179825 00000 n 
+0000179847 00000 n 
+0000180031 00000 n 
+0000181789 00000 n 
+0000181811 00000 n 
+0000181982 00000 n 
+0000183590 00000 n 
+0000183613 00000 n 
+0000183784 00000 n 
+0000185659 00000 n 
+0000185682 00000 n 
+0000185869 00000 n 
+0000187735 00000 n 
+0000187758 00000 n 
+0000187936 00000 n 
+0000190028 00000 n 
+0000190051 00000 n 
+0000190228 00000 n 
+0000192172 00000 n 
+0000192195 00000 n 
+0000192373 00000 n 
+0000194691 00000 n 
+0000194714 00000 n 
+0000194868 00000 n 
+0000196852 00000 n 
+0000196875 00000 n 
+0000197037 00000 n 
+0000198907 00000 n 
+0000198930 00000 n 
+0000199083 00000 n 
+0000200837 00000 n 
+0000200860 00000 n 
+0000200994 00000 n 
+0000202869 00000 n 
+0000202892 00000 n 
+0000203036 00000 n 
+0000205111 00000 n 
+0000205134 00000 n 
+0000205287 00000 n 
+0000207083 00000 n 
+0000207106 00000 n 
+0000207240 00000 n 
+0000209036 00000 n 
+0000209059 00000 n 
+0000209184 00000 n 
+0000209640 00000 n 
+0000209662 00000 n 
+0000209821 00000 n 
+0000211457 00000 n 
+0000211480 00000 n 
+0000211634 00000 n 
+0000213295 00000 n 
+0000213318 00000 n 
+0000213462 00000 n 
+0000214348 00000 n 
+0000214370 00000 n 
+0000214557 00000 n 
+0000216715 00000 n 
+0000216738 00000 n 
+0000216916 00000 n 
+0000219103 00000 n 
+0000219126 00000 n 
+0000219279 00000 n 
+0000220382 00000 n 
+0000220405 00000 n 
+0000220583 00000 n 
+0000222083 00000 n 
+0000222106 00000 n 
+0000222293 00000 n 
+0000224145 00000 n 
+0000224168 00000 n 
+0000224355 00000 n 
+0000226264 00000 n 
+0000226287 00000 n 
+0000226446 00000 n 
+0000227379 00000 n 
+0000227401 00000 n 
+0000227536 00000 n 
+0000229072 00000 n 
+0000229095 00000 n 
+0000229230 00000 n 
+0000231029 00000 n 
+0000231052 00000 n 
+0000231186 00000 n 
+0000232882 00000 n 
+0000232905 00000 n 
+0000233039 00000 n 
+0000234377 00000 n 
+0000234400 00000 n 
+0000234553 00000 n 
+0000236145 00000 n 
+0000236168 00000 n 
+0000236321 00000 n 
+0000237947 00000 n 
+0000237970 00000 n 
+0000238123 00000 n 
+0000239419 00000 n 
+0000239442 00000 n 
+0000239577 00000 n 
+0000241225 00000 n 
+0000241248 00000 n 
+0000241383 00000 n 
+0000242361 00000 n 
+0000242383 00000 n 
+0000242527 00000 n 
+0000244136 00000 n 
+0000244159 00000 n 
+0000244303 00000 n 
+0000245787 00000 n 
+0000245810 00000 n 
+0000245945 00000 n 
+0000247608 00000 n 
+0000247631 00000 n 
+0000247766 00000 n 
+0000249027 00000 n 
+0000249050 00000 n 
+0000249185 00000 n 
+0000250699 00000 n 
+0000250722 00000 n 
+0000250857 00000 n 
+0000252634 00000 n 
+0000252657 00000 n 
+0000252782 00000 n 
+0000253160 00000 n 
+0000253182 00000 n 
+0000253351 00000 n 
+0000255023 00000 n 
+0000255046 00000 n 
+0000255205 00000 n 
+0000256396 00000 n 
+0000256419 00000 n 
+0000256578 00000 n 
+0000258133 00000 n 
+0000258156 00000 n 
+0000258308 00000 n 
+0000259043 00000 n 
+0000259065 00000 n 
+0000259233 00000 n 
+0000260973 00000 n 
+0000260996 00000 n 
+0000261149 00000 n 
+0000262864 00000 n 
+0000262887 00000 n 
+0000263046 00000 n 
+0000263409 00000 n 
+0000263431 00000 n 
+0000263590 00000 n 
+0000268048 00000 n 
+0000268071 00000 n 
+0000268230 00000 n 
+0000273247 00000 n 
+0000273270 00000 n 
+0000273429 00000 n 
+0000278013 00000 n 
+0000278036 00000 n 
+0000278195 00000 n 
+0000283045 00000 n 
+0000283068 00000 n 
+0000283227 00000 n 
+0000286418 00000 n 
+0000286441 00000 n 
+0000286500 00000 n 
+0000286609 00000 n 
+0000286793 00000 n 
+0000286915 00000 n 
+0000287054 00000 n 
+0000287194 00000 n 
+0000287346 00000 n 
+0000287500 00000 n 
+0000287644 00000 n 
+0000287789 00000 n 
+0000287946 00000 n 
+0000288112 00000 n 
+0000288265 00000 n 
+0000288457 00000 n 
+0000288594 00000 n 
+0000288726 00000 n 
+0000288848 00000 n 
+0000288988 00000 n 
+0000289134 00000 n 
+0000289254 00000 n 
+0000289370 00000 n 
+0000289553 00000 n 
+0000289661 00000 n 
+0000289782 00000 n 
+0000289897 00000 n 
+0000290015 00000 n 
+0000290133 00000 n 
+0000290251 00000 n 
+0000290369 00000 n 
+0000290487 00000 n 
+0000290605 00000 n 
+0000290723 00000 n 
+0000290841 00000 n 
+0000290959 00000 n 
+0000291079 00000 n 
+0000291199 00000 n 
+0000291317 00000 n 
+0000291514 00000 n 
+0000291616 00000 n 
+0000291768 00000 n 
+0000291890 00000 n 
+0000292018 00000 n 
+0000292144 00000 n 
+0000292274 00000 n 
+0000292436 00000 n 
+0000292570 00000 n 
+0000292698 00000 n 
+0000292820 00000 n 
+0000292942 00000 n 
+0000293065 00000 n 
+0000293259 00000 n 
+0000293449 00000 n 
+0000293606 00000 n 
+0000293773 00000 n 
+0000293928 00000 n 
+0000294035 00000 n 
+0000294258 00000 n 
+0000294367 00000 n 
+0000294503 00000 n 
+0000294628 00000 n 
+0000294839 00000 n 
+0000294947 00000 n 
+0000295050 00000 n 
+0000295260 00000 n 
+0000295424 00000 n 
+0000295576 00000 n 
+0000295708 00000 n 
+0000295855 00000 n 
+0000295983 00000 n 
+0000296116 00000 n 
+0000296265 00000 n 
+0000296434 00000 n 
+0000296589 00000 n 
+0000296775 00000 n 
+0000296883 00000 n 
+0000297006 00000 n 
+0000297135 00000 n 
+0000297284 00000 n 
+0000297430 00000 n 
+0000297584 00000 n 
+0000297719 00000 n 
+0000297849 00000 n 
+0000297978 00000 n 
+0000298122 00000 n 
+0000298253 00000 n 
+0000298388 00000 n 
+0000298522 00000 n 
+0000298703 00000 n 
+0000298811 00000 n 
+0000298947 00000 n 
+0000299081 00000 n 
+0000299228 00000 n 
+0000299357 00000 n 
+0000299491 00000 n 
+0000299623 00000 n 
+0000299750 00000 n 
+0000299860 00000 n 
+0000300029 00000 n 
+0000300137 00000 n 
+0000300277 00000 n 
+0000300462 00000 n 
+0000300594 00000 n 
+0000300735 00000 n 
+0000300874 00000 n 
+0000301086 00000 n 
+0000301191 00000 n 
+0000301314 00000 n 
+0000301446 00000 n 
+0000301570 00000 n 
+0000301698 00000 n 
+0000301843 00000 n 
+0000301975 00000 n 
+0000302120 00000 n 
+0000302261 00000 n 
+0000302388 00000 n 
+0000302529 00000 n 
+0000302654 00000 n 
+0000302779 00000 n 
+0000302910 00000 n 
+0000303032 00000 n 
+0000303139 00000 n 
+0000303352 00000 n 
+0000303469 00000 n 
+0000303590 00000 n 
+0000303740 00000 n 
+0000303916 00000 n 
+0000304070 00000 n 
+0000304230 00000 n 
+0000304375 00000 n 
+0000304512 00000 n 
+0000304652 00000 n 
+0000304790 00000 n 
+0000304934 00000 n 
+0000305090 00000 n 
+0000305264 00000 n 
+0000305416 00000 n 
+0000305648 00000 n 
+0000305766 00000 n 
+0000305888 00000 n 
+0000306050 00000 n 
+0000306214 00000 n 
+0000306351 00000 n 
+0000306503 00000 n 
+0000306643 00000 n 
+0000306781 00000 n 
+0000307007 00000 n 
+0000307112 00000 n 
+0000307236 00000 n 
+0000307370 00000 n 
+0000307534 00000 n 
+0000307673 00000 n 
+0000307809 00000 n 
+0000307940 00000 n 
+0000308082 00000 n 
+0000308219 00000 n 
+0000308373 00000 n 
+0000308524 00000 n 
+0000308631 00000 n 
+0000308814 00000 n 
+0000308932 00000 n 
+0000309069 00000 n 
+0000309199 00000 n 
+0000309334 00000 n 
+0000309485 00000 n 
+0000309621 00000 n 
+0000309767 00000 n 
+0000309910 00000 n 
+0000310052 00000 n 
+0000310194 00000 n 
+0000310337 00000 n 
+0000310455 00000 n 
+0000310636 00000 n 
+0000310745 00000 n 
+0000310864 00000 n 
+0000310986 00000 n 
+0000311114 00000 n 
+0000311266 00000 n 
+0000311392 00000 n 
+0000311513 00000 n 
+0000311633 00000 n 
+0000311752 00000 n 
+0000311875 00000 n 
+0000311996 00000 n 
+0000312118 00000 n 
+0000312239 00000 n 
+0000312361 00000 n 
+0000312489 00000 n 
+0000312616 00000 n 
+0000312741 00000 n 
+0000312865 00000 n 
+0000312991 00000 n 
+0000313100 00000 n 
+0000313272 00000 n 
+0000313374 00000 n 
+0000313564 00000 n 
+0000313759 00000 n 
+0000313947 00000 n 
+0000314110 00000 n 
+0000314304 00000 n 
+0000314414 00000 n 
+0000314549 00000 n 
+0000314680 00000 n 
+0000314794 00000 n 
+0000314964 00000 n 
+0000315074 00000 n 
+0000315198 00000 n 
+0000315322 00000 n 
+0000315449 00000 n 
+0000315591 00000 n 
+0000315696 00000 n 
+0000315793 00000 n 
 trailer
-<</Size 1468/Root 1467 0 R/Info 1 0 R/ID[<1ca9696980f269e0c25de21a8ecbd4b4><1ca9696980f269e0c25de21a8ecbd4b4>]>>
+<</Size 1367/Root 1366 0 R/Info 1 0 R/ID[<71cc99b012ddb9744eb11230f6ad49a0><71cc99b012ddb9744eb11230f6ad49a0>]>>
 startxref
-344676
+316009
 %%EOF
index b225eb97809da54b320a12c95c4ba8a9cee68d4d..032008187621581a7aac3f8ef8d9f7fba4db2d21 100644 (file)
@@ -1,8 +1,7 @@
 #################################################################
 # Makefile.in for Samba Documentation
 # Authors:     James Moore <jmoore@php.net>
-#                      Gerald Carter <jerry@samba.org>
-#                      Jelmer Vernooij <jelmer@samba.org>
+#               Gerald Carter <jerry@samba.org>
 #
 # Please see http://www.samba.org/samba/cvs.html
 # for information on getting the latest  
 #
 
 # Autoconf Variables
-
-MANPAGES_NAMES=findsmb.1 smbclient.1 \
-       smbspool.8 lmhosts.5 \
-       smbcontrol.1  smbstatus.1 \
-       make_smbcodepage.1  smbd.8 \
-       smbtar.1 nmbd.8 smbmnt.8 \
-       smbumount.8 nmblookup.1 \
-       smbmount.8 swat.8 rpcclient.1    \
-       smbpasswd.5 testparm.1 samba.7 \
-       smbpasswd.8 testprns.1 \
-       smb.conf.5 wbinfo.1 pdbedit.8 \
-       smbcacls.1 smbsh.1 winbindd.8 \
-       make_unicodemap.1 net.8 \
-       smbgroupedit.8 vfstest.1
-
-## This part contains only rules. You shouldn't need to change it 
-## if you are adding docs
-
-DOCBOOK2MAN = @JW@ -b man
-DOCBOOK2HTML = @JW@ -b html
-DOCBOOK2PDF = @JW@ -b pdf
-DOCBOOK2PS = @JW@ -b ps
-DOCBOOK2TXT = @JW@ -b txt
-DOCBOOK2INFO = @JW@ -b texi
-HTMLDOC = @HTMLDOC@
 SRCDIR = @srcdir@
+JADE = @JADE@
+NSGMLS = @NSGMLS@
+SGMLSPL=@SGMLSPL@
+HTMLDOC=@HTMLDOC@
+PERL=@PERL@
+#CATALOG = @CATALOG@
 MANDIR=../manpages
 HTMLDIR=../htmldocs
-MANSGMLDIR = manpages/
-SGMLDIR = projdoc/
-PERL = @PERL@
 
-MANPAGES=$(patsubst %,$(MANDIR)/%,$(MANPAGES_NAMES))
-MANPAGES_HTML=$(patsubst %,$(HTMLDIR)/%.html,$(MANPAGES_NAMES))
+#Stylesheets and Dependicies
+SGML_SHARE=@SGML_SHARE@
+#SGML_CATALOG_FILES=$(SGML_CATALOG_FILES):./dbsgml/catalog
+HTML_STYLESHEET = $(srcdir)/stylesheets/html.dsl
+HTML_DEPS = $(srcdir)/stylesheets/html-common.dsl $(srcdir)/stylesheets/common.dsl
+
+MANPAGES=$(MANDIR)/findsmb.1 $(MANDIR)/smbclient.1 \
+       $(MANDIR)/smbspool.8 $(MANDIR)/lmhosts.5 \
+       $(MANDIR)/smbcontrol.1  $(MANDIR)/smbstatus.1 \
+       $(MANDIR)/make_smbcodepage.1  $(MANDIR)/smbd.8 \
+       $(MANDIR)/smbtar.1 $(MANDIR)/nmbd.8 $(MANDIR)/smbmnt.8 \
+       $(MANDIR)/smbumount.8 $(MANDIR)/nmblookup.1 \
+       $(MANDIR)/smbmount.8 $(MANDIR)/swat.8 $(MANDIR)/rpcclient.1      \
+       $(MANDIR)/smbpasswd.5 $(MANDIR)/testparm.1 $(MANDIR)/samba.7 \
+       $(MANDIR)/smbpasswd.8 $(MANDIR)/testprns.1 \
+       $(MANDIR)/smb.conf.5 $(MANDIR)/wbinfo.1 $(MANDIR)/pdbedit.8 \
+       $(MANDIR)/smbcacls.1 $(MANDIR)/smbsh.1 $(MANDIR)/winbindd.8 \
+       $(MANDIR)/make_unicodemap.1 $(MANDIR)/net.8 \
+       $(MANDIR)/smbgroupedit.8
+
+SGMLMANSRC=manpages/findsmb.1.sgml manpages/smbclient.1.sgml \
+       manpages/smbspool.8.sgml manpages/lmhosts.5.sgml \
+       manpages/smbcontrol.1.sgml manpages/smbstatus.1.sgml \
+       manpages/make_smbcodepage.1.sgml  manpages/smbd.8.sgml \
+       manpages/smbtar.1.sgml manpages/nmbd.8.sgml manpages/smbmnt.8.sgml \
+       manpages/smbumount.8.sgml manpages/nmblookup.1.sgml \
+       manpages/smbmount.8.sgml manpages/swat.8.sgml \
+       manpages/rpcclient.1.sgml manpages/smbpasswd.5.sgml \
+       manpages/testparm.1.sgml manpages/samba.7.sgml \
+       manpages/smbpasswd.8.sgml manpages/testprns.1.sgml \
+       manpages/smb.conf.5.sgml manpages/pdbedit.8.sgml \
+       manpages/wbinfo.1.sgml manpages/smbcacls.1.sgml \
+       manpages/smbsh.1.sgml manpages/winbindd.8.sgml \
+       manpages/make_unicodemap.1.sgml manpages/smbgroupedit.8.sgml \
+       manpages/net.8.sgml
+
+HOWTOSRC=projdoc/DOMAIN_MEMBER.sgml projdoc/NT_Security.sgml \
+       projdoc/msdfs_setup.sgml projdoc/printer_driver2.sgml \
+       projdoc/UNIX_INSTALL.sgml projdoc/winbind.sgml projdoc/OS2-Client-HOWTO.sgml \
+       projdoc/Samba-PDC-HOWTO.sgml projdoc/ENCRYPTION.sgml \
+       projdoc/CVS-Access.sgml projdoc/Integrating-with-Windows.sgml \
+       projdoc/PAM-Authentication-And-Samba.sgml projdoc/Samba-LDAP-HOWTO.sgml \
+       projdoc/Samba-BDC-HOWTO.sgml projdoc/Printing.sgml projdoc/Diagnosis.sgml \
+       projdoc/security_level.sgml projdoc/Browsing.sgml projdoc/Bugs.sgml \
+       projdoc/Speed.sgml
 
+
+
+######################################################################
+# Make instructions
+######################################################################
 all: 
-       @echo "Supported make targets:"
-       @echo "manpages - Build manpages"
-       @echo "ps - Build PostScript version of HOWTO Collection"
-       @echo "pdf - Build PDF version of HOWTO Collection"
-       @echo -n "html-single - Build single file HTML version of HOWTO Collection"
-       @echo " and developers guide"
-       @echo "html - Build HTML version of HOWTO Collection"
-       @echo "htmlman - Build html version of manpages"
-       @echo "txt - Build plain text version of HOWTO Collection"
-
-manpages: $(MANPAGES)
-pdf: ../Samba-HOWTO-Collection.pdf
-ps: ../Samba-HOWTO-Collection.ps
-txt: ../Samba-HOWTO-Collection.txt
-htmlman:  $(MANPAGES_HTML)
-html:
-       $(DOCBOOK2HTML) -d samba.dsl -o $(HTMLDIR) projdoc/samba-doc.sgml
-html-single: ../Samba-HOWTO-Collection.html  ../Samba-Developers-Guide.html
-
-../Samba-HOWTO-Collection.txt: $(SGMLDIR)/samba-doc.sgml
-       $(DOCBOOK2TXT) -o .. $<
-       mv ../samba-doc.txt $@
-
-../Samba-HOWTO-Collection.ps: $(SGMLDIR)/samba-doc.sgml
-       $(DOCBOOK2PS) -o .. $<
-       mv ../samba-doc.ps $@
-
-../Samba-HOWTO-Collection.pdf: ../Samba-HOWTO-Collection.html
-       $(HTMLDOC) --book --color --links -f $@ $<
-
-../Samba-HOWTO-Collection.html: $(SGMLDIR)/samba-doc.sgml
-       $(DOCBOOK2HTML) -u -o .. $<
-       mv ../samba-doc.html $@
-
-../Samba-Developers-Guide.html: devdoc/dev-doc.sgml
-       $(DOCBOOK2HTML) -u -o .. $<
-       mv ../dev-doc.html $@
-
-
-$(HTMLDIR)/%.html: $(MANSGMLDIR)/%.sgml
-       $(DOCBOOK2HTML) -o $(HTMLDIR) $<
-       mv $(HTMLDIR)/index.html $@
-
-$(MANDIR)/%: $(MANSGMLDIR)/%.sgml 
-       $(DOCBOOK2MAN) -o $(MANDIR) $<
-       $(PERL) scripts/strip-links.pl < $@ > $@.temp
-       mv $@.temp $@
+       @echo "Possible options to the Makefile include:"
+       @echo "   all-docs  - Force a rebuild of all documentation"
+       @echo "   HOWTO     - Build all individual HOWTOs in html format"
+       @echo "   proj-doc  - Build the Samba-HOWTO-Collection.[pdf|html] file"
+       @echo "   man       - Rebuild html and nroff versions of man pages as necessary"
+       @echo "   syntax    - Check the SGML/DocBook syntax of all source files"
+
+all-docs: HOWTO proj-doc man-all man-html-all
+
+syntax: $(SGMLMANSRC) projdoc/samba-doc.sgml
+       @echo Checking syntax of all SGML/DocBook source files...
+       @(for i in $?; do \
+          echo "$$i..."; \
+          $(NSGMLS) -sv $$i 2>&1 | grep -v "DTDDECL catalog entries are not supported" ; \
+       done)
+       
+
+
+man: $(MANPAGES)
+
+HOWTO: $(HOWTOSRC)
+       @echo Building HOWTO pages...
+       @(for i in $?; do \
+          htmlfile=`echo $$i | sed 's,.*/,,' | sed "s/\.sgml/\.html/g"`; \
+          echo "Making $$htmlfile"; \
+          cat $$i | $(PERL) scripts/make-article.pl > /tmp/`echo $$i | sed 's,.*/,,'`; \
+          $(JADE) -t sgml -V nochunks -d  $(SGML_SHARE)/dsssl/docbook/html/docbook.dsl \
+             -f /tmp/jade.log /tmp/`echo $$i | sed 's,.*/,,'` > ../htmldocs/$$htmlfile; \
+          cat /tmp/jade.log | grep -v DTDDECL; \
+          /bin/rm -f /tmp/jade.log /tmp/`echo $$i | sed 's,.*/,,'`; \
+       done)
+
+
+## I'm using htmldoc here to produc the PDF output.  If you want
+## Postscript output, you can run 
+##
+##           sgmltools -b ps projdoc/samba-doc.sgml
+##
+proj-doc: 
+       echo Building Samba-HOWTO-Collections...
+       @$(PERL) scripts/collateindex.pl -N -o projdoc/index.sgml
+       @$(JADE) -t sgml -V html-index -d $(SGML_SHARE)/dsssl/docbook/html/docbook.dsl projdoc/samba-doc.sgml
+       @$(PERL) scripts/collateindex.pl -o projdoc/index.sgml HTML.index
+       @/bin/rm HTML.index *.htm
+       @$(JADE) -t sgml -i html -V nochunks -d stylesheets/ldp.dsl\#html projdoc/samba-doc.sgml > samba-doc.html
+       @(cd scripts; ./ldp_print ../samba-doc.html)
+       @mv -f samba-doc.pdf ../Samba-HOWTO-Collection.pdf
+       @/bin/mv -f samba-doc.html ../htmldocs/Samba-HOWTO-Collection.html
+
+
+## generate all HTML man pages
+man-html-all: $(SGMLMANSRC)
+       @echo Building HTML formatted man pages...
+       @(for i in $?; do \
+          htmlfile=`echo $$i | sed 's,.*/,,' | sed "s/\.sgml/\.html/g"`; \
+          echo "Making $$htmlfile"; \
+          $(JADE) -t sgml -i html -V nochunks -d  ./stylesheets/ldp.dsl\#html -f /tmp/jade.log $$i > ../htmldocs/$$htmlfile; \
+          cat /tmp/jade.log | grep -v DTDDECL; \
+          /bin/rm -f /tmp/jade.log; \
+       done)
+
+## generate all man pages
+man-all: $(SGMLMANSRC)
+       @echo Building man pages...
+       @(for i in $?; do \
+               manfile=`echo $$i | sed 's,.*/,,' | sed "s/\.sgml//g"`; \
+               echo "Making $$manfile"; \
+               $(NSGMLS) -f /tmp/docbook2x.log $$i | $(SGMLSPL) \
+                  $(SGML_SHARE)/docbook2X/docbook2man-spec.pl; \
+               cat /tmp/docbook2x.log | grep -v DTDDECL; \
+               /bin/rm -f /tmp/docbook2x.log; \
+               cat $$manfile | $(PERL) scripts/strip-links.pl > $(MANDIR)/$$manfile; \
+               /bin/rm -f $$manfile; \
+         done)
+
+
+
+
+##
+## these rules are for building individual files
+##
+$(MANDIR)/findsmb.1:  manpages/findsmb.1.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/smbclient.1: manpages/smbclient.1.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/smbspool.8: manpages/smbspool.8.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/lmhosts.5: manpages/lmhosts.5.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/smbcontrol.1: manpages/smbcontrol.1.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/smbstatus.1: manpages/smbstatus.1.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/make_smbcodepage.1: manpages/make_smbcodepage.1.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/make_unicodemap.1: manpages/make_unicodemap.1.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/smbd.8: manpages/smbd.8.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/smbtar.1: manpages/smbtar.1.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/nmbd.8: manpages/nmbd.8.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/smbmnt.8: manpages/smbmnt.8.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/smbumount.8: manpages/smbumount.8.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/nmblookup.1: manpages/nmblookup.1.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/smbmount.8: manpages/smbmount.8.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/swat.8: manpages/swat.8.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/rpcclient.1: manpages/rpcclient.1.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/smbpasswd.5: manpages/smbpasswd.5.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/testparm.1: manpages/testparm.1.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/samba.7: manpages/samba.7.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/smbpasswd.8: manpages/smbpasswd.8.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/testprns.1: manpages/testprns.1.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/smb.conf.5: manpages/smb.conf.5.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/wbinfo.1: manpages/wbinfo.1.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/smbcacls.1: manpages/smbcacls.1.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/smbsh.1 : manpages/smbsh.1.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/winbindd.8: manpages/winbindd.8.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+
+$(MANDIR)/pdbedit.8: manpages/pdbedit.8.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/net.8: manpages/net.8.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
+$(MANDIR)/smbgroupedit.8: manpages/smbgroupedit.8.sgml
+       @echo "Making $@"
+       @$(NSGMLS) $< | $(SGMLSPL) $(SGML_SHARE)/docbook2X/docbook2man-spec.pl
+       @cat `echo $@ | sed 's,.*/,,'` | $(PERL) scripts/strip-links.pl > $@
+       @/bin/rm -f `echo $@ | sed 's,.*/,,'`
+       @echo "Making HTML version of $@"
+       @$(JADE) -t sgml -i html -V nochunks -d ./stylesheets/ldp.dsl\#html $< > $(HTMLDIR)/`echo $< | sed 's,.*/,,'| sed "s/\.sgml/\.html/g"`
+
 
+## Clean Rule
 clean: 
-       rm -f $(MANPAGES) $(MANPAGES_HTML) ../htmldocs/*.html ../Samba-HOWTO-Collection.pdf ../Samba-HOWTO-Collection.ps
+       /bin/rm -f manpage.*
index 609c17ed87fb11ded9732e3bdf0d86e2c8f8b021..26ea467482350214b046f9d23db18f149b78e0a7 100755 (executable)
@@ -11,6 +11,8 @@
 ac_help=
 ac_default_prefix=/usr/local
 # Any additions from configure.in:
+ac_help="$ac_help
+  --with-sgml-share=DIR   change the default location of SGML stylesheets"
 
 # Initialize some variables set by options.
 # The variables have the same names as the options, with
@@ -522,19 +524,22 @@ fi
 
 
 
-# Extract the first word of "jw", so it can be a program name with args.
-set dummy jw; ac_word=$2
+## check for the necesary install tools
+## Openjade includes 'onsgmls' while
+## the older jade package includes 'nsgmls'
+# Extract the first word of "openjade", so it can be a program name with args.
+set dummy openjade; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:529: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_JW'+set}'`\" = set"; then
+echo "configure:534: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_path_JADE'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
-  case "$JW" in
+  case "$JADE" in
   /*)
-  ac_cv_path_JW="$JW" # Let the user override the test with a path.
+  ac_cv_path_JADE="$JADE" # Let the user override the test with a path.
   ;;
   ?:/*)                         
-  ac_cv_path_JW="$JW" # Let the user override the test with a dos path.
+  ac_cv_path_JADE="$JADE" # Let the user override the test with a dos path.
   ;;
   *)
   IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
@@ -542,7 +547,7 @@ else
   for ac_dir in $ac_dummy; do 
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
-      ac_cv_path_JW="$ac_dir/$ac_word"
+      ac_cv_path_JADE="$ac_dir/$ac_word"
       break
     fi
   done
@@ -550,26 +555,28 @@ else
   ;;
 esac
 fi
-JW="$ac_cv_path_JW"
-if test -n "$JW"; then
-  echo "$ac_t""$JW" 1>&6
+JADE="$ac_cv_path_JADE"
+if test -n "$JADE"; then
+  echo "$ac_t""$JADE" 1>&6
 else
   echo "$ac_t""no" 1>&6
 fi
 
-# Extract the first word of "perl", so it can be a program name with args.
-set dummy perl; ac_word=$2
+
+if test -z "$JADE"; then
+       # Extract the first word of "jade", so it can be a program name with args.
+set dummy jade; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:564: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
+echo "configure:571: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_path_JADE'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
-  case "$PERL" in
+  case "$JADE" in
   /*)
-  ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
+  ac_cv_path_JADE="$JADE" # Let the user override the test with a path.
   ;;
   ?:/*)                         
-  ac_cv_path_PERL="$PERL" # Let the user override the test with a dos path.
+  ac_cv_path_JADE="$JADE" # Let the user override the test with a dos path.
   ;;
   *)
   IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
@@ -577,7 +584,7 @@ else
   for ac_dir in $ac_dummy; do 
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
-      ac_cv_path_PERL="$ac_dir/$ac_word"
+      ac_cv_path_JADE="$ac_dir/$ac_word"
       break
     fi
   done
@@ -585,17 +592,90 @@ else
   ;;
 esac
 fi
-PERL="$ac_cv_path_PERL"
-if test -n "$PERL"; then
-  echo "$ac_t""$PERL" 1>&6
+JADE="$ac_cv_path_JADE"
+if test -n "$JADE"; then
+  echo "$ac_t""$JADE" 1>&6
 else
   echo "$ac_t""no" 1>&6
+fi
+
+       # Extract the first word of "nsgmls", so it can be a program name with args.
+set dummy nsgmls; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:606: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_path_NSGMLS'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  case "$NSGMLS" in
+  /*)
+  ac_cv_path_NSGMLS="$NSGMLS" # Let the user override the test with a path.
+  ;;
+  ?:/*)                         
+  ac_cv_path_NSGMLS="$NSGMLS" # Let the user override the test with a dos path.
+  ;;
+  *)
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do 
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_path_NSGMLS="$ac_dir/$ac_word"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac
+fi
+NSGMLS="$ac_cv_path_NSGMLS"
+if test -n "$NSGMLS"; then
+  echo "$ac_t""$NSGMLS" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+else
+       # Extract the first word of "onsgmls", so it can be a program name with args.
+set dummy onsgmls; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:642: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_path_NSGMLS'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  case "$NSGMLS" in
+  /*)
+  ac_cv_path_NSGMLS="$NSGMLS" # Let the user override the test with a path.
+  ;;
+  ?:/*)                         
+  ac_cv_path_NSGMLS="$NSGMLS" # Let the user override the test with a dos path.
+  ;;
+  *)
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do 
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_path_NSGMLS="$ac_dir/$ac_word"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac
+fi
+NSGMLS="$ac_cv_path_NSGMLS"
+if test -n "$NSGMLS"; then
+  echo "$ac_t""$NSGMLS" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
 fi
 
 # Extract the first word of "htmldoc", so it can be a program name with args.
 set dummy htmldoc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:599: checking for $ac_word" >&5
+echo "configure:679: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_HTMLDOC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -627,6 +707,102 @@ else
   echo "$ac_t""no" 1>&6
 fi
 
+# Extract the first word of "sgmlspl", so it can be a program name with args.
+set dummy sgmlspl; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:714: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_path_SGMLSPL'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  case "$SGMLSPL" in
+  /*)
+  ac_cv_path_SGMLSPL="$SGMLSPL" # Let the user override the test with a path.
+  ;;
+  ?:/*)                         
+  ac_cv_path_SGMLSPL="$SGMLSPL" # Let the user override the test with a dos path.
+  ;;
+  *)
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do 
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_path_SGMLSPL="$ac_dir/$ac_word"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac
+fi
+SGMLSPL="$ac_cv_path_SGMLSPL"
+if test -n "$SGMLSPL"; then
+  echo "$ac_t""$SGMLSPL" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+# Extract the first word of "perl", so it can be a program name with args.
+set dummy perl; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:749: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  case "$PERL" in
+  /*)
+  ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
+  ;;
+  ?:/*)                         
+  ac_cv_path_PERL="$PERL" # Let the user override the test with a dos path.
+  ;;
+  *)
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do 
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_path_PERL="$ac_dir/$ac_word"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac
+fi
+PERL="$ac_cv_path_PERL"
+if test -n "$PERL"; then
+  echo "$ac_t""$PERL" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+
+SGML_SHARE="/usr/local/share/sgml"
+
+# Check whether --with-sgml-share or --without-sgml-share was given.
+if test "${with_sgml_share+set}" = set; then
+  withval="$with_sgml_share"
+  case "$withval" in
+        no) SGML_SHARE=""
+                ;;
+        yes)
+                ;;
+        /*|\\*)
+                SGML_SHARE="$withval"
+                ;;
+        *)
+                SGML_SHARE="/$withval"
+                ;;
+esac
+
+fi
+
+# The Makefile requires docbook2X in the share/sgml directory
+if  ! test -f $SGML_SHARE/docbook2X/docbook2man-spec.pl ; then
+       { echo "configure: error: "Unable to find dockbook2X. Make sure it is installed and that the sgml-share path is correct."" 1>&2; exit 1; }
+fi
+
 
 DOC_BUILD_DATE=`date '+%d-%m-%Y'`
 
@@ -743,7 +919,7 @@ done
 
 ac_given_srcdir=$srcdir
 
-trap 'rm -fr `echo "Makefile " | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+trap 'rm -fr `echo "Makefile stylesheets/ldp.dsl " | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
 EOF
 cat >> $CONFIG_STATUS <<EOF
 
@@ -775,9 +951,12 @@ s%@includedir@%$includedir%g
 s%@oldincludedir@%$oldincludedir%g
 s%@infodir@%$infodir%g
 s%@mandir@%$mandir%g
-s%@JW@%$JW%g
-s%@PERL@%$PERL%g
+s%@JADE@%$JADE%g
+s%@NSGMLS@%$NSGMLS%g
 s%@HTMLDOC@%$HTMLDOC%g
+s%@SGMLSPL@%$SGMLSPL%g
+s%@PERL@%$PERL%g
+s%@SGML_SHARE@%$SGML_SHARE%g
 s%@DOC_BUILD_DATE@%$DOC_BUILD_DATE%g
 
 CEOF
@@ -820,7 +999,7 @@ EOF
 
 cat >> $CONFIG_STATUS <<EOF
 
-CONFIG_FILES=\${CONFIG_FILES-"Makefile "}
+CONFIG_FILES=\${CONFIG_FILES-"Makefile stylesheets/ldp.dsl "}
 EOF
 cat >> $CONFIG_STATUS <<\EOF
 for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
index 3a9ed51d163ab15a8a1a33581391ce2f6698a148..ad0613f2be8156cc84fa68c4cf691fbe8f338c6b 100644 (file)
@@ -1,10 +1,49 @@
 AC_INIT(global.ent)
 
-AC_PATH_PROG(JW, jw)
-AC_PATH_PROG(PERL, perl)
+## check for the necesary install tools
+## Openjade includes 'onsgmls' while
+## the older jade package includes 'nsgmls'
+AC_PATH_PROG(JADE,openjade)
+
+if test -z "$JADE"; then
+       AC_PATH_PROG(JADE,jade)
+       AC_PATH_PROG(NSGMLS, nsgmls)
+else
+       AC_PATH_PROG(NSGMLS, onsgmls)
+fi
+
 AC_PATH_PROG(HTMLDOC, htmldoc)
+AC_PATH_PROG(SGMLSPL, sgmlspl)
+AC_PATH_PROG(PERL, perl)
+
+dnl ----------------------------------------------------------------
+dnl --with-sgml-share
+SGML_SHARE="/usr/local/share/sgml"
+
+AC_ARG_WITH(sgml-share,
+[  --with-sgml-share=DIR   change the default location of SGML stylesheets],
+[case "$withval" in
+        no) SGML_SHARE=""
+                ;;
+        yes)
+                ;;
+        /*|\\*)
+                SGML_SHARE="$withval"
+                ;;
+        *)
+                SGML_SHARE="/$withval"
+                ;;
+esac
+])dnl
+
+# The Makefile requires docbook2X in the share/sgml directory
+if [ ! test -f $SGML_SHARE/docbook2X/docbook2man-spec.pl ]; then
+       AC_MSG_ERROR("Unable to find dockbook2X. Make sure it is installed and that the sgml-share path is correct.")
+fi
+
+AC_SUBST(SGML_SHARE)dnl
 
 DOC_BUILD_DATE=`date '+%d-%m-%Y'`
 AC_SUBST(DOC_BUILD_DATE)
 
-AC_OUTPUT( Makefile )
+AC_OUTPUT( Makefile stylesheets/ldp.dsl )
diff --git a/docs/docbook/dbsgml/40chg.txt b/docs/docbook/dbsgml/40chg.txt
new file mode 100644 (file)
index 0000000..2d2467d
--- /dev/null
@@ -0,0 +1,45 @@
+19 June 2000
+
+Changes from DocBook V3.1 to DocBook V4.1:
+
+Markup:
+
+- RFE  17: Added a common attribute 'Condition' for generic effectivity
+- RFE  38: The nav.class elements (ToC|LoT|Index|Glossary|Bibliography) are
+           now allowed at the beginning and end of components and sections
+- RFE  58: The 'optmult' and 'reqmult' attribute values have been
+           removed from Group
+- RFE  65: Added several class attribute values to Filename and SystemItem
+           at the request of the Linux community
+- RFE  73: Removed BookBiblio and SeriesInfo
+- RFE  81: Added SidebarInfo to Sidebar
+- RFE  87: Added 'xmlpi' and 'emptytag' as class values of SGMLTag
+- RFE  92: Added 'CO' to Synopsis and LiteralLayout
+- RFE  99: Added SimpleMsgEntry as an alternative to MsgEntry in order
+           to provide a simpler MsgSet construct
+- RFE 103: Added RevDescription as an alternative to RevRemark in
+           RevHistory; this allows longer descriptive text in a revision
+- RFE 104: Added 'Specification' to the list of document classes on Article
+- RFE 108: Allow admonitions in Answers
+- RFE 110: Allow a RevHistory on QandAEntry
+- RFE 115: Allow optional Title on OrderedList and ItemizedList
+- RFE 116: Added LineNumbering attribute to linespecific environments for
+           presentation of line numbers
+- Added a common attribute 'Security' for effectivity
+- Added synopsis markup for modern programming languages (e.g, object
+  oriented languages like Java, C++, and IDL)
+- Renamed DocInfo to PrefaceInfo, ChapterInfo, AppendixInfo, etc.
+- Comment was renamed Remark
+- InterfaceDefinition was removed
+
+Other:
+
+- RFE  88: Added PEs to include/ignore dbnotn.mod and dbcent.mod
+- RFE 102: Fixed some outstanding namecase problems
+- RFE 105: Added PNG notation
+- RFE 106: Removed some odd *.content PEs that interfered with
+           customization layers
+- RFE 109: Added FPI to content of dbgenent.mod (for consistency)
+- RFE 111: Added the Euro symbol
+- Fixed bug in cals-tbl.dtd; a model group was used for the element
+  declaration, but the attlist declaration used "Table" literally.
diff --git a/docs/docbook/dbsgml/41chg.txt b/docs/docbook/dbsgml/41chg.txt
new file mode 100644 (file)
index 0000000..d2a9147
--- /dev/null
@@ -0,0 +1,7 @@
+19 June 2000
+
+Changes from DocBook V4.0 to DocBook V4.1:
+
+No user-visible changes; removed some 4.0 future use comments that had
+accidentally been left in the DTD and fixed a couple of incorrect FPIs.
+See 40chg.txt for a list of the significant changes.
diff --git a/docs/docbook/dbsgml/50issues.txt b/docs/docbook/dbsgml/50issues.txt
new file mode 100644 (file)
index 0000000..3149742
--- /dev/null
@@ -0,0 +1,39 @@
+19 June 2000
+
+Backwards-incompatible changes to DocBook that are planned for V5.0:
+
+- DocBook V5.0 will be an XML DTD. This will require a wide range of
+  changes. As a result, DocBook V5.0 will more closely resemble
+  The XML version of DocBook V4.1 than the SGML version.
+
+- Parameter entity reorganization may greatly reduce many
+  content models.  The goal of this effort is to remove a large
+  number of spurious elements that snuck into content models
+  during the first PE reorg, in practice these changes should have
+  very little "real world" impact.
+
+- The Coords attribute will be removed from AreaSet.
+
+- ArtHeader will be dropped from BiblioEntry
+
+- Contents attribute will be removed from BookInfo and SetInfo
+
+- The %indexdivcomponent.mix; will be restricted.  Numbered figures
+  and other elements inappropriate for an Index or SetIndex will be
+  removed.
+
+- RevHistory will be removed from GlossTerm
+
+- Constant Class will be removed from SystemItem
+
+- Graphic and InlineGraphic will be removed
+
+- Tables will be restricted from full CALS to the OASIS Exchange model
+
+- An experimental XML Schema version of DocBook 5.0 will be
+  produced in parallel with the DTD version. It will be
+  backwards-incompatible in an unspecified number of ways. The
+  goal of the effort will be that most DocBook documents that
+  validate under the DTD will also validate under the Schema,
+  but the committee does not feel bound to guarantee this
+  condition.
diff --git a/docs/docbook/dbsgml/ChangeLog b/docs/docbook/dbsgml/ChangeLog
new file mode 100644 (file)
index 0000000..c4673db
--- /dev/null
@@ -0,0 +1,85 @@
+2000-06-19  Norman Walsh  <ndw@nwalsh.com>
+
+       * 40chg.txt: Added notes about comment and interfacedefinition
+
+       * 41chg.txt: New file.
+
+       * 50issues.txt, dbcent.mod, dbgenent.mod, dbhier.mod, dbnotn.mod, dbpool.mod, docbook.cat, docbook.dcl, readme.txt: 
+       Updated version numbers to 4.1
+
+       * dbhier.mod, dbpool.mod: Removed 4.0 future use comments
+
+       * docbook.cat: Fixed version number in comment
+
+       * docbook.dtd: DocBook V4.1 released.
+
+2000-05-18  Norman Walsh  <ndw@nwalsh.com>
+
+       * 40chg.txt, dbcent.mod, dbgenent.mod, dbhier.mod, dbnotn.mod, dbpool.mod, docbook.cat, docbook.dcl, docbook.dtd, readme.txt: 
+       Removed references to beta6
+
+       * docbook.dtd: DocBook V4.0 released.
+
+2000-04-10  Norman Walsh  <ndw@nwalsh.com>
+
+       * 40chg.txt, dbcent.mod, dbgenent.mod, dbhier.mod, dbnotn.mod, dbpool.mod, docbook.cat, docbook.dcl, docbook.dtd, readme.txt: 
+       Updated release date and version to 4.0beta6
+
+       * dbpool.mod: Added support for EBNF hook; fixed equation content bug
+
+2000-04-03  Norman Walsh  <ndw@nwalsh.com>
+
+       * 40chg.txt: Added note about renaming DocInfo to *Info.
+
+       * 40chg.txt, dbcent.mod, dbgenent.mod, dbhier.mod, dbnotn.mod, dbpool.mod, docbook.cat, docbook.dcl, docbook.dtd, readme.txt: 
+       Updated version numbers
+
+2000-03-24  Norman Walsh  <ndw@nwalsh.com>
+
+       * 40chg.txt, dbcent.mod, dbgenent.mod, dbhier.mod, dbnotn.mod, dbpool.mod, docbook.cat, docbook.dcl, docbook.dtd, readme.txt: 
+       Updated version numbers
+
+       * 50issues.txt: Added note about PE reorg
+
+       * dbefsyn.mod: Removed
+
+       * dbpool.mod: Removed ELEMENT from comments to ease text searching of the DTD.
+       Merged dbefsyn.mod into dbpool.mod
+       Added Modifier as an optional element at the end of MethodSynopsis
+       and MethodParam.
+
+2000-03-07  Norman Walsh  <ndw@nwalsh.com>
+
+       * 40chg.txt, dbcent.mod, dbgenent.mod, dbhier.mod, dbnotn.mod, dbpool.mod, docbook.cat, docbook.dcl, docbook.dtd, readme.txt: 
+       Updated internal versions to beta3
+
+2000-03-03  Norman Walsh  <ndw@nwalsh.com>
+
+       * dbpool.mod: Removed erroneous comment about inline synopses
+
+2000-03-02  Norman Walsh  <ndw@nwalsh.com>
+
+       * 30chg.txt, 31chg.txt, 40issues.txt, 50issues.txt, announce.txt, cals-tbl.dtd, dbcent.mod, dbgenent.mod, dbhier.mod, dbnotn.mod, dbpool.mod, docbook.cat, docbook.dcl, docbook.dtd, readme.txt: 
+       Version 3.1
+
+       * 30chg.txt, 40issues.txt, announce.txt, cals-tbl.dtd, dbgenent.mod, dbhier.mod, dbpool.mod, docbook.cat, docbook.dcl, docbook.dtd: 
+       branches:  1.1.1;
+       Initial revision
+
+       * 30chg.txt, 40issues.txt, announce.txt, cals-tbl.dtd, dbgenent.mod, dbhier.mod, dbpool.mod, docbook.cat, docbook.dcl, docbook.dtd: 
+       New file.
+
+       * 31chg.txt, 40chg.txt, 40issues.txt, 50issues.txt, cals-tbl.dtd, dbcent.mod, dbefsyn.mod, dbgenent.mod, dbhier.mod, dbnotn.mod, dbpool.mod, docbook.cat, docbook.dcl, docbook.dtd, readme.txt: 
+       Version 4.0beta2
+
+       * 50issues.txt: Added warning about exchange table model
+
+       * dbefsyn.mod, dbpool.mod: Added ooclass, oointerface, and ooexception as wrappers for modifiers
+       and names in classsynopsis. Also allow them inline.
+       
+       Fixed SGML PE parsing problem with hook PEs.
+
+       * dbhier.mod, dbpool.mod: Added hook PEs for future module extension
+
+       * dbpool.mod, docbook.dtd: Removed reference to sgml-features PE
+
diff --git a/docs/docbook/dbsgml/cals-tbl.dtd b/docs/docbook/dbsgml/cals-tbl.dtd
new file mode 100644 (file)
index 0000000..78c7d5a
--- /dev/null
@@ -0,0 +1,330 @@
+<!-- CALS TABLE MODEL DECLARATION MODULE -->
+
+<!-- This set of declarations defines the CALS Table Model as of the
+     date shown in the Formal Public Identifier (FPI) for this entity.
+
+     This set of declarations may be referred to using a public external
+     entity declaration and reference as shown in the following two lines:
+
+<!ENTITY % calstbls PUBLIC "-//USA-DOD//DTD Table Model 951010//EN">
+%calstbls;
+
+     If various parameter entities used within this set of declarations
+     are to be given non-default values, the appropriate declarations
+     should be given before calling in this package (i.e., before the
+     "%calstbls;" reference).
+
+     NOTE:  This set of declarations assumes a NAMELEN of 32 as is used in
+     the standard CALS defined SGML declaration.
+-->
+
+<!-- This entity includes a set of element and attribute declarations
+     that partially defines the CALS table model.  However, the model
+     is not well-defined without the accompanying natural language
+     description of the semantics (meanings) of these various elements,
+     attributes, and attribute values.  The semantic writeup, available
+     as a separate entity, should be used in conjunction with this entity.
+-->
+
+<!-- In order to use the CALS table model, various parameter entity
+     declarations are required.  A brief description is as follows:
+
+     ENTITY NAME      WHERE USED              WHAT IT IS
+
+     %bodyatt         In ATTLIST of:          Additional (non-table related)
+                      table element(s)        attributes on the overall
+                                              (wrapper) table element(s)
+
+     %secur           In ATTLIST of:          Additional (non-table related)
+                      table element(s)        attributes on all the listed
+                      <tgroup>                elements
+                      <tbody>
+                      table head and foot element(s)
+                      <row>
+                      <entrytbl>
+                      <entry>
+
+     %yesorno         In ATTLIST of:          An attribute declared value
+                      almost all elements     for a "boolean" attribute
+
+     %titles          In content model of:    The "title" part of the model
+                      table element(s)        group for the table element(s)
+
+     %paracon         In content model of:    The "text" (data content) part
+                      <entry>                 of the model group for <entry>
+
+     %tbl.table.name  In declaration of:      The name(s) of the "table"
+                      table element(s)        element(s)
+
+     %tbl.table-titles.mdl In content model of: The model group for the title
+                      table elements(s)       part of the content model for 
+                                              table element(s)
+
+     %tbl.table-main.mdl In content model of: The model group for the main part
+                      table elements(s)       (not including titles) of the
+                                              content model for table element(s)
+
+     %tbl.table.mdl   In content model of:    The model group for the content
+                      table elements(s)       model for table element(s),
+                                              often (and by default) defined
+                                              in terms of %tbl.table-titles.mdl
+                                              and %tbl.table-main.mdl
+
+     %tbl.table.excep In content model of:    The exceptions for the content
+                      table element(s)        model for table element(s)
+
+     %tbl.table.att   In ATTLIST of:          Additional attributes on the
+                      table element(s)        table element(s)
+
+     %tbl.tgroup.mdl  In content model of:    The model group for the content
+                      <tgroup>                model for <tgroup>
+
+     %tbl.tgroup.att  In ATTLIST of:          Additional attributes on the
+                      <tgroup>                <tgroup> and <entrytbl> elements
+                      <entrytbl>
+
+     %tbl.hdft.name   In declaration of:      The name(s) of the table
+                      head/foot element(s)    head and foot element(s)
+
+     %tbl.hdft.mdl    In content model of:    The model group for the content
+                      head/foot element(s)    model for head/foot element(s)
+
+     %tbl.hdft.excep  In content model of:    The exceptions for the content
+                      head/foot element(s)    model for head/foot element(s)
+
+     %tbl.row.mdl     In content model of:    The model group for the content
+                      <row>                   model for <row>
+
+     %tbl.row.excep   In content model of:    The exceptions for the content
+                      <row>                   model for <row>
+
+     %tbl.entrytbl.mdl In content model of:   The model group for the content
+                      <entrytbl>              model for <entrytbl>
+
+     %tbl.entrytbl.excep In content model of: The exceptions for the content
+                      <entrytbl>              model for <entrytbl>
+
+     %tbl.entry.mdl   In content model of:    The model group for the content
+                      <entry>                 model for <entry>
+
+     %tbl.entry.excep In content model of:    The exceptions for the content
+                      <entry>                 model for <entry>
+
+     If any of these parameter entities are not declared before this set of
+     declarations is referenced, this set of declarations will make the
+     following default definitions for all of these have parameter entities.
+-->
+
+<!-- These definitions are not directly related to the table model, but are 
+     used in the default CALS table model and are usually defined elsewhere 
+     (and prior to the inclusion of this table module) in a CALS DTD. -->
+
+<!ENTITY % bodyatt "">
+<!ENTITY % secur "">
+<!ENTITY % yesorno 'NUMBER'  -- no if zero(s),
+                                yes if any other digits value -->
+<!ENTITY % titles  'title?'>
+<!ENTITY % paracon '#PCDATA' -- default for use in entry content -->
+
+<!--
+The parameter entities as defined below provide the CALS table model
+as published (as part of the Example DTD) in MIL-HDBK-28001.
+
+These following declarations provide the CALS-compliant default definitions
+for these entities.  However, these entities can and should be redefined
+(by giving the appropriate parameter entity declaration(s) prior to the
+reference to this Table Model declaration set entity) to fit the needs
+of the current application.
+-->
+
+<!ENTITY % tbl.table.name       "(table|chart)">
+<!ENTITY % tbl.table-titles.mdl "%titles,">
+<!ENTITY % tbl.table-main.mdl   "(tgroup+|graphic+)">
+<!ENTITY % tbl.table.mdl        "%tbl.table-titles.mdl; %tbl.table-main.mdl;">
+<!ENTITY % tbl.table.excep      "-(table|chart|figure)">
+<!ENTITY % tbl.table.att        '
+    tabstyle    NMTOKEN         #IMPLIED
+    tocentry    %yesorno;       #IMPLIED
+    shortentry  %yesorno;       #IMPLIED
+    orient      (port|land)     #IMPLIED
+    pgwide      %yesorno;       #IMPLIED '>
+<!ENTITY % tbl.tgroup.mdl       "colspec*,spanspec*,thead?,tfoot?,tbody">
+<!ENTITY % tbl.tgroup.att       '
+    tgroupstyle NMTOKEN         #IMPLIED '>
+<!ENTITY % tbl.hdft.name        "(thead|tfoot)">
+<!ENTITY % tbl.hdft.mdl         "colspec*,row+">
+<!ENTITY % tbl.hdft.excep       "-(entrytbl)">
+<!ENTITY % tbl.row.mdl          "(entry|entrytbl)+">
+<!ENTITY % tbl.row.excep        "-(pgbrk)">
+<!ENTITY % tbl.entrytbl.mdl     "colspec*,spanspec*,thead?,tbody">
+<!ENTITY % tbl.entrytbl.excep   "-(entrytbl|pgbrk)">
+<!ENTITY % tbl.entry.mdl        "(para|warning|caution|note|legend|%paracon;)*">
+<!ENTITY % tbl.entry.excep      "-(pgbrk)">
+
+<!-- =====  Element and attribute declarations follow. =====  -->
+
+<!--
+     Default declarations previously defined in this entity and
+     referenced below include:
+     ENTITY % tbl.table.name       "(table|chart)"
+     ENTITY % tbl.table-titles.mdl "%titles,"
+     ENTITY % tbl.table-main.mdl   "(tgroup+|graphic+)"
+     ENTITY % tbl.table.mdl        "%tbl.table-titles; %tbl.table-main.mdl;"
+     ENTITY % tbl.table.excep      "-(table|chart|figure)"
+     ENTITY % tbl.table.att        '
+                        tabstyle        NMTOKEN         #IMPLIED
+                        tocentry        %yesorno;       #IMPLIED
+                        shortentry      %yesorno;       #IMPLIED
+                        orient          (port|land)     #IMPLIED
+                        pgwide          %yesorno;       #IMPLIED '
+-->
+
+<!ELEMENT %tbl.table.name; - - (%tbl.table.mdl;) %tbl.table.excep; >
+
+<!ATTLIST %tbl.table.name;
+        frame           (top|bottom|topbot|all|sides|none)      #IMPLIED
+        colsep          %yesorno;                               #IMPLIED
+        rowsep          %yesorno;                               #IMPLIED
+        %tbl.table.att;
+        %bodyatt;
+        %secur;
+>
+
+<!--
+     Default declarations previously defined in this entity and
+     referenced below include:
+     ENTITY % tbl.tgroup.mdl    "colspec*,spanspec*,thead?,tfoot?,tbody"
+     ENTITY % tbl.tgroup.att    '
+                        tgroupstyle     NMTOKEN         #IMPLIED '
+-->
+
+<!ELEMENT tgroup - O (%tbl.tgroup.mdl;) >
+
+<!ATTLIST tgroup
+        cols            NUMBER                                  #REQUIRED
+        %tbl.tgroup.att;
+        colsep          %yesorno;                               #IMPLIED
+        rowsep          %yesorno;                               #IMPLIED
+        align           (left|right|center|justify|char)        #IMPLIED
+        char            CDATA                                   #IMPLIED
+        charoff         NUTOKEN                                 #IMPLIED
+        %secur;
+>
+
+<!ELEMENT colspec - O EMPTY >
+
+<!ATTLIST colspec
+        colnum          NUMBER                                  #IMPLIED
+        colname         NMTOKEN                                 #IMPLIED
+        colwidth        CDATA                                   #IMPLIED
+        colsep          %yesorno;                               #IMPLIED
+        rowsep          %yesorno;                               #IMPLIED
+        align           (left|right|center|justify|char)        #IMPLIED
+        char            CDATA                                   #IMPLIED
+        charoff         NUTOKEN                                 #IMPLIED
+>
+
+<!ELEMENT spanspec - O EMPTY >
+
+<!ATTLIST spanspec
+        namest          NMTOKEN                                 #REQUIRED
+        nameend         NMTOKEN                                 #REQUIRED
+        spanname        NMTOKEN                                 #REQUIRED
+        colsep          %yesorno;                               #IMPLIED
+        rowsep          %yesorno;                               #IMPLIED
+        align           (left|right|center|justify|char)        #IMPLIED
+        char            CDATA                                   #IMPLIED
+        charoff         NUTOKEN                                 #IMPLIED
+>
+
+
+<!--
+     Default declarations previously defined in this entity and
+     referenced below include:
+     ENTITY % tbl.hdft.name     "(thead|tfoot)"
+     ENTITY % tbl.hdft.mdl      "colspec*,row+"
+     ENTITY % tbl.hdft.excep    "-(entrytbl)"
+-->
+
+<!ELEMENT %tbl.hdft.name; - O (%tbl.hdft.mdl;)  %tbl.hdft.excep;>
+
+<!ATTLIST %tbl.hdft.name;
+        valign          (top|middle|bottom)                     #IMPLIED
+        %secur;
+>
+
+
+<!ELEMENT tbody - O (row+)>
+
+<!ATTLIST tbody
+        valign          (top|middle|bottom)                     #IMPLIED
+        %secur;
+>
+
+<!--
+     Default declarations previously defined in this entity and
+     referenced below include:
+     ENTITY % tbl.row.mdl       "(entry|entrytbl)+"
+     ENTITY % tbl.row.excep     "-(pgbrk)"
+-->
+
+<!ELEMENT row - O (%tbl.row.mdl;) %tbl.row.excep;>
+
+<!ATTLIST row
+        rowsep          %yesorno;                               #IMPLIED
+        valign          (top|middle|bottom)                     #IMPLIED
+        %secur;
+>
+
+<!--
+     Default declarations previously defined in this entity and
+     referenced below include:
+     ENTITY % tbl.entrytbl.mdl  "colspec*,spanspec*,thead?,tbody"
+     ENTITY % tbl.entrytbl.excep "-(entrytbl|pgbrk)"
+     ENTITY % tbl.tgroup.att    '
+                        tgroupstyle     NMTOKEN         #IMPLIED '
+-->
+
+<!ELEMENT entrytbl - - (%tbl.entrytbl.mdl) %tbl.entrytbl.excep; >
+
+<!ATTLIST entrytbl
+        cols            NUMBER                                  #REQUIRED
+        %tbl.tgroup.att;
+        colname         NMTOKEN                                 #IMPLIED
+        spanname        NMTOKEN                                 #IMPLIED
+        namest          NMTOKEN                                 #IMPLIED
+        nameend         NMTOKEN                                 #IMPLIED
+        colsep          %yesorno;                               #IMPLIED
+        rowsep          %yesorno;                               #IMPLIED
+        align           (left|right|center|justify|char)        #IMPLIED
+        char            CDATA                                   #IMPLIED
+        charoff         NUTOKEN                                 #IMPLIED
+        %secur;
+>
+
+
+<!--
+     Default declarations previously defined in this entity and
+     referenced below include:
+     ENTITY % paracon           "#PCDATA"
+     ENTITY % tbl.entry.mdl     "(para|warning|caution|note|legend|%paracon;)*"
+     ENTITY % tbl.entry.excep   "-(pgbrk)"
+-->
+
+<!ELEMENT entry - O (%tbl.entry.mdl;) %tbl.entry.excep; >
+
+<!ATTLIST entry
+        colname         NMTOKEN                                 #IMPLIED
+        namest          NMTOKEN                                 #IMPLIED
+        nameend         NMTOKEN                                 #IMPLIED
+        spanname        NMTOKEN                                 #IMPLIED
+        morerows        NUMBER                                  #IMPLIED
+        colsep          %yesorno;                               #IMPLIED
+        rowsep          %yesorno;                               #IMPLIED
+        align           (left|right|center|justify|char)        #IMPLIED
+        char            CDATA                                   #IMPLIED
+        charoff         NUTOKEN                                 #IMPLIED
+        rotate          %yesorno;                               #IMPLIED
+        valign          (top|middle|bottom)                     #IMPLIED
+        %secur;
+>
diff --git a/docs/docbook/dbsgml/catalog b/docs/docbook/dbsgml/catalog
new file mode 100644 (file)
index 0000000..521e820
--- /dev/null
@@ -0,0 +1,63 @@
+  -- ...................................................................... --
+  -- Catalog data for DocBook V4.1 ........................................ --
+  -- File docbook.cat ..................................................... --
+
+  -- Please direct all questions, bug reports, or suggestions for
+     changes to the docbook@lists.oasis-open.org mailing list. For more
+     information, see http://www.oasis-open.org/.
+  --
+
+  -- This is the catalog data file for DocBook V4.1. It is provided as
+     a convenience in building your own catalog files. You need not use
+     the filenames listed here, and need not use the filename method of
+     identifying storage objects at all.  See the documentation for
+     detailed information on the files associated with the DocBook DTD.
+     See SGML Open Technical Resolution 9401 for detailed information
+     on supplying and using catalog data.
+  --
+
+  -- ...................................................................... --
+  -- SGML declaration associated with DocBook ............................. --
+
+DTDDECL "-//OASIS//DTD DocBook V4.1//EN" "docbook.dcl"
+
+  -- ...................................................................... --
+  -- DocBook driver file .................................................. --
+
+PUBLIC "-//OASIS//DTD DocBook V4.1//EN" "docbook.dtd"
+
+  -- ...................................................................... --
+  -- DocBook modules ...................................................... --
+
+PUBLIC "-//USA-DOD//DTD Table Model 951010//EN" "cals-tbl.dtd"
+PUBLIC "-//OASIS//ELEMENTS DocBook Information Pool V4.1//EN" "dbpool.mod"
+PUBLIC "-//OASIS//ELEMENTS DocBook Document Hierarchy V4.1//EN" "dbhier.mod"
+PUBLIC "-//OASIS//ENTITIES DocBook Additional General Entities V4.1//EN" "dbgenent.mod"
+PUBLIC "-//OASIS//ENTITIES DocBook Notations V4.1//EN" "dbnotn.mod"
+PUBLIC "-//OASIS//ENTITIES DocBook Character Entities V4.1//EN" "dbcent.mod"
+
+  -- ...................................................................... --
+  -- ISO entity sets ...................................................... --
+
+PUBLIC "ISO 8879:1986//ENTITIES Diacritical Marks//EN" "ent/ISOdia"
+PUBLIC "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN" "ent/ISOnum"
+PUBLIC "ISO 8879:1986//ENTITIES Publishing//EN" "ent/ISOpub"
+PUBLIC "ISO 8879:1986//ENTITIES General Technical//EN" "ent/ISOtech"
+PUBLIC "ISO 8879:1986//ENTITIES Added Latin 1//EN" "ent/ISOlat1"
+PUBLIC "ISO 8879:1986//ENTITIES Added Latin 2//EN" "ent/ISOlat2"
+PUBLIC "ISO 8879:1986//ENTITIES Greek Letters//EN" "ent/ISOgrk1"
+PUBLIC "ISO 8879:1986//ENTITIES Monotoniko Greek//EN" "ent/ISOgrk2"
+PUBLIC "ISO 8879:1986//ENTITIES Greek Symbols//EN" "ent/ISOgrk3"
+PUBLIC "ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN" "ent/ISOgrk4"
+PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN" "ent/ISOamsa"
+PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN" "ent/ISOamsb"
+PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN" "ent/ISOamsc"
+PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN" "ent/ISOamsn"
+PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN" "ent/ISOamso"
+PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN" "ent/ISOamsr"
+PUBLIC "ISO 8879:1986//ENTITIES Box and Line Drawing//EN" "ent/ISObox"
+PUBLIC "ISO 8879:1986//ENTITIES Russian Cyrillic//EN" "ent/ISOcyr1"
+PUBLIC "ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN" "ent/ISOcyr2"
+
+  -- End of catalog data for DocBook V4.1 ................................. --
+  -- ...................................................................... --
diff --git a/docs/docbook/dbsgml/dbcent.mod b/docs/docbook/dbsgml/dbcent.mod
new file mode 100755 (executable)
index 0000000..7f05211
--- /dev/null
@@ -0,0 +1,181 @@
+<!-- ...................................................................... -->
+<!-- DocBook character entities module V4.1 ............................... -->
+<!-- File dbcent.mod ...................................................... -->
+
+<!-- Copyright 1992-2000 HaL Computer Systems, Inc.,
+     O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+     Corporation, and the Organization for the Advancement of
+     Structured Information Standards (OASIS).
+
+     $Id: dbcent.mod,v 1.3 2001/12/06 07:37:55 jerry Exp $
+
+     Permission to use, copy, modify and distribute the DocBook DTD and
+     its accompanying documentation for any purpose and without fee is
+     hereby granted in perpetuity, provided that the above copyright
+     notice and this paragraph appear in all copies.  The copyright
+     holders make no representation about the suitability of the DTD for
+     any purpose.  It is provided "as is" without expressed or implied
+     warranty.
+
+     If you modify the DocBook DTD in any way, except for declaring and
+     referencing additional sets of general entities and declaring
+     additional notations, label your DTD as a variant of DocBook.  See
+     the maintenance documentation for more information.
+
+     Please direct all questions, bug reports, or suggestions for
+     changes to the docbook@lists.oasis-open.org mailing list. For more
+     information, see http://www.oasis-open.org/docbook/.
+-->
+
+<!-- ...................................................................... -->
+
+<!-- This module contains the entity declarations for the standard ISO
+     entity sets used by DocBook.
+
+     In DTD driver files referring to this module, please use an entity
+     declaration that uses the public identifier shown below:
+
+     <!ENTITY % dbcent PUBLIC
+     "-//OASIS//ENTITIES DocBook Character Entities V4.1//EN">
+     %dbcent;
+
+     See the documentation for detailed information on the parameter
+     entity and module scheme used in DocBook, customizing DocBook and
+     planning for interchange, and changes made since the last release
+     of DocBook.
+-->
+
+<!-- ...................................................................... -->
+
+<!ENTITY % ISOamsa.module "INCLUDE">
+<![ %ISOamsa.module; [
+<!ENTITY % ISOamsa PUBLIC
+"ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN">
+%ISOamsa;
+<!--end of ISOamsa.module-->]]>
+
+<!ENTITY % ISOamsb.module "INCLUDE">
+<![ %ISOamsb.module; [
+<!ENTITY % ISOamsb PUBLIC
+"ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN">
+%ISOamsb;
+<!--end of ISOamsb.module-->]]>
+
+<!ENTITY % ISOamsc.module "INCLUDE">
+<![ %ISOamsc.module; [
+<!ENTITY % ISOamsc PUBLIC
+"ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN">
+%ISOamsc;
+<!--end of ISOamsc.module-->]]>
+
+<!ENTITY % ISOamsn.module "INCLUDE">
+<![ %ISOamsn.module; [
+<!ENTITY % ISOamsn PUBLIC
+"ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN">
+%ISOamsn;
+<!--end of ISOamsn.module-->]]>
+
+<!ENTITY % ISOamso.module "INCLUDE">
+<![ %ISOamso.module; [
+<!ENTITY % ISOamso PUBLIC
+"ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN">
+%ISOamso;
+<!--end of ISOamso.module-->]]>
+
+<!ENTITY % ISOamsr.module "INCLUDE">
+<![ %ISOamsr.module; [
+<!ENTITY % ISOamsr PUBLIC
+"ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN">
+%ISOamsr;
+<!--end of ISOamsr.module-->]]>
+
+<!ENTITY % ISObox.module "INCLUDE">
+<![ %ISObox.module; [
+<!ENTITY % ISObox PUBLIC
+"ISO 8879:1986//ENTITIES Box and Line Drawing//EN">
+%ISObox;
+<!--end of ISObox.module-->]]>
+
+<!ENTITY % ISOcyr1.module "INCLUDE">
+<![ %ISOcyr1.module; [
+<!ENTITY % ISOcyr1 PUBLIC
+"ISO 8879:1986//ENTITIES Russian Cyrillic//EN">
+%ISOcyr1;
+<!--end of ISOcyr1.module-->]]>
+
+<!ENTITY % ISOcyr2.module "INCLUDE">
+<![ %ISOcyr2.module; [
+<!ENTITY % ISOcyr2 PUBLIC
+"ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN">
+%ISOcyr2;
+<!--end of ISOcyr2.module-->]]>
+
+<!ENTITY % ISOdia.module "INCLUDE">
+<![ %ISOdia.module; [
+<!ENTITY % ISOdia PUBLIC
+"ISO 8879:1986//ENTITIES Diacritical Marks//EN">
+%ISOdia;
+<!--end of ISOdia.module-->]]>
+
+<!ENTITY % ISOgrk1.module "INCLUDE">
+<![ %ISOgrk1.module; [
+<!ENTITY % ISOgrk1 PUBLIC
+"ISO 8879:1986//ENTITIES Greek Letters//EN">
+%ISOgrk1;
+<!--end of ISOgrk1.module-->]]>
+
+<!ENTITY % ISOgrk2.module "INCLUDE">
+<![ %ISOgrk2.module; [
+<!ENTITY % ISOgrk2 PUBLIC
+"ISO 8879:1986//ENTITIES Monotoniko Greek//EN">
+%ISOgrk2;
+<!--end of ISOgrk2.module-->]]>
+
+<!ENTITY % ISOgrk3.module "INCLUDE">
+<![ %ISOgrk3.module; [
+<!ENTITY % ISOgrk3 PUBLIC
+"ISO 8879:1986//ENTITIES Greek Symbols//EN">
+%ISOgrk3;
+<!--end of ISOgrk3.module-->]]>
+
+<!ENTITY % ISOgrk4.module "INCLUDE">
+<![ %ISOgrk4.module; [
+<!ENTITY % ISOgrk4 PUBLIC
+"ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN">
+%ISOgrk4;
+<!--end of ISOgrk4.module-->]]>
+
+<!ENTITY % ISOlat1.module "INCLUDE">
+<![ %ISOlat1.module; [
+<!ENTITY % ISOlat1 PUBLIC
+"ISO 8879:1986//ENTITIES Added Latin 1//EN">
+%ISOlat1;
+<!--end of ISOlat1.module-->]]>
+
+<!ENTITY % ISOlat2.module "INCLUDE">
+<![ %ISOlat2.module; [
+<!ENTITY % ISOlat2 PUBLIC
+"ISO 8879:1986//ENTITIES Added Latin 2//EN">
+%ISOlat2;
+<!--end of ISOlat2.module-->]]>
+
+<!ENTITY % ISOnum.module "INCLUDE">
+<![ %ISOnum.module; [
+<!ENTITY % ISOnum PUBLIC
+"ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN">
+%ISOnum;
+<!--end of ISOnum.module-->]]>
+
+<!ENTITY % ISOpub.module "INCLUDE">
+<![ %ISOpub.module; [
+<!ENTITY % ISOpub PUBLIC
+"ISO 8879:1986//ENTITIES Publishing//EN">
+%ISOpub;
+<!--end of ISOpub.module-->]]>
+
+<!ENTITY % ISOtech.module "INCLUDE">
+<![ %ISOtech.module; [
+<!ENTITY % ISOtech PUBLIC
+"ISO 8879:1986//ENTITIES General Technical//EN">
+%ISOtech;
+<!--end of ISOtech.module-->]]>
diff --git a/docs/docbook/dbsgml/dbgenent.mod b/docs/docbook/dbsgml/dbgenent.mod
new file mode 100644 (file)
index 0000000..b60c5b2
--- /dev/null
@@ -0,0 +1,39 @@
+<!-- ...................................................................... -->
+<!-- DocBook additional general entities V4.1 ............................. -->
+
+<!-- Copyright 1992-2000 HaL Computer Systems, Inc.,
+     O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+     Corporation, and the Organization for the Advancement of
+     Structured Information Standards (OASIS).
+
+     In DTD driver files referring to this module, please use an entity
+     declaration that uses the public identifier shown below:
+
+     <!ENTITY % dbgenent PUBLIC
+     "-//OASIS//ENTITIES DocBook Additional General Entities V4.1//EN"
+     %dbgenent;
+-->
+
+<!-- File dbgenent.mod .................................................... -->
+
+<!-- You can edit this file to add the following:
+
+     o General entity declarations of any kind.  For example:
+
+       <!ENTITY happyface SDATA "insert-face">    (system-specific data)
+       <!ENTITY productname "WinWidget">          (small boilerplate)
+       <!ENTITY legal-notice SYSTEM "notice.sgm"> (large boilerplate)
+
+     o Notation declarations.  For example:
+
+       <!NOTATION chicken-scratch SYSTEM>
+
+     o Declarations for and references to external parameter entities
+       containing collections of any of the above.  For example:
+
+       <!ENTITY % all-titles PUBLIC "-//DocTools//ELEMENTS Book Titles//EN">
+       %all-titles;
+-->
+
+<!-- End of DocBook additional general entities V4.1 ...................... -->
+<!-- ...................................................................... -->
diff --git a/docs/docbook/dbsgml/dbhier.mod b/docs/docbook/dbsgml/dbhier.mod
new file mode 100755 (executable)
index 0000000..10e1f3f
--- /dev/null
@@ -0,0 +1,2100 @@
+<!-- ...................................................................... -->
+<!-- DocBook document hierarchy module V4.1 ............................... -->
+<!-- File dbhier.mod ...................................................... -->
+
+<!-- Copyright 1992-2000 HaL Computer Systems, Inc.,
+     O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+     Corporation, and the Organization for the Advancement of
+     Structured Information Standards (OASIS).
+
+     $Id: dbhier.mod,v 1.3 2001/12/06 07:37:55 jerry Exp $
+
+     Permission to use, copy, modify and distribute the DocBook DTD and
+     its accompanying documentation for any purpose and without fee is
+     hereby granted in perpetuity, provided that the above copyright
+     notice and this paragraph appear in all copies.  The copyright
+     holders make no representation about the suitability of the DTD for
+     any purpose.  It is provided "as is" without expressed or implied
+     warranty.
+
+     If you modify the DocBook DTD in any way, except for declaring and
+     referencing additional sets of general entities and declaring
+     additional notations, label your DTD as a variant of DocBook.  See
+     the maintenance documentation for more information.
+
+     Please direct all questions, bug reports, or suggestions for
+     changes to the docbook@lists.oasis-open.org mailing list. For more
+     information, see http://www.oasis-open.org/docbook/.
+-->
+
+<!-- ...................................................................... -->
+
+<!-- This module contains the definitions for the overall document
+     hierarchies of DocBook documents.  It covers computer documentation
+     manuals and manual fragments, as well as reference entries (such as
+     man pages) and technical journals or anthologies containing
+     articles.
+
+     This module depends on the DocBook information pool module.  All
+     elements and entities referenced but not defined here are assumed
+     to be defined in the information pool module.
+
+     In DTD driver files referring to this module, please use an entity
+     declaration that uses the public identifier shown below:
+
+     <!ENTITY % dbhier PUBLIC
+     "-//OASIS//ELEMENTS DocBook Document Hierarchy V4.1//EN">
+     %dbhier;
+
+     See the documentation for detailed information on the parameter
+     entity and module scheme used in DocBook, customizing DocBook and
+     planning for interchange, and changes made since the last release
+     of DocBook.
+-->
+
+<!-- ...................................................................... -->
+<!-- Entities for module inclusions ....................................... -->
+
+<!ENTITY % dbhier.redecl.module                "IGNORE">
+<!ENTITY % dbhier.redecl2.module       "IGNORE">
+
+<!-- ...................................................................... -->
+<!-- Entities for element classes ......................................... -->
+
+<!ENTITY % local.appendix.class "">
+<!ENTITY % appendix.class      "Appendix %local.appendix.class;">
+
+<!ENTITY % local.article.class "">
+<!ENTITY % article.class       "Article %local.article.class;">
+
+<!ENTITY % local.book.class "">
+<!ENTITY % book.class          "Book %local.book.class;">
+
+<!ENTITY % local.chapter.class "">
+<!ENTITY % chapter.class       "Chapter %local.chapter.class;">
+
+<!ENTITY % local.index.class "">
+<!ENTITY % index.class         "Index|SetIndex %local.index.class;">
+
+<!ENTITY % local.refentry.class "">
+<!ENTITY % refentry.class      "RefEntry %local.refentry.class;">
+
+<!ENTITY % local.nav.class "">
+<!ENTITY % nav.class           "ToC|LoT|Index|Glossary|Bibliography 
+                               %local.nav.class;">
+
+<!-- Redeclaration placeholder ............................................ -->
+
+<!-- For redeclaring entities that are declared after this point while
+     retaining their references to the entities that are declared before
+     this point -->
+
+<![ %dbhier.redecl.module; [
+%rdbhier;
+<!--end of dbhier.redecl.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Entities for element mixtures ........................................ -->
+
+<!-- The DocBook TC may produce an official forms module for DocBook. -->
+<!-- This PE provides the hook by which it can be inserted into the DTD. -->
+<!ENTITY % forms.hook "">
+
+<!ENTITY % local.divcomponent.mix "">
+<!ENTITY % divcomponent.mix
+               "%list.class;           |%admon.class;
+               |%linespecific.class;   |%synop.class;
+               |%para.class;           |%informal.class;
+               |%formal.class;         |%compound.class;
+               |%genobj.class;         |%descobj.class;
+               |%ndxterm.class;
+                %forms.hook;
+               %local.divcomponent.mix;">
+
+<!ENTITY % local.refcomponent.mix "">
+<!ENTITY % refcomponent.mix
+               "%list.class;           |%admon.class;
+               |%linespecific.class;   |%synop.class;
+               |%para.class;           |%informal.class;
+               |%formal.class;         |%compound.class;
+               |%genobj.class;         |%descobj.class;
+               |%ndxterm.class;
+               %local.refcomponent.mix;">
+
+<!ENTITY % local.indexdivcomponent.mix "">
+<!ENTITY % indexdivcomponent.mix
+               "ItemizedList|OrderedList|VariableList|SimpleList
+               |%linespecific.class;   |%synop.class;
+               |%para.class;           |%informal.class;
+               |Anchor|Remark
+               |%link.char.class;
+               %local.indexdivcomponent.mix;">
+
+<!ENTITY % local.refname.char.mix "">
+<!ENTITY % refname.char.mix
+               "#PCDATA
+               |%tech.char.class;
+               %local.refname.char.mix;">
+
+<!ENTITY % local.partcontent.mix "">
+<!ENTITY % partcontent.mix
+               "%appendix.class;|%chapter.class;|%nav.class;|%article.class;
+               |Preface|%refentry.class;|Reference %local.partcontent.mix;">
+
+<!ENTITY % local.refinline.char.mix "">
+<!ENTITY % refinline.char.mix
+               "#PCDATA
+               |%xref.char.class;      |%gen.char.class;
+               |%link.char.class;      |%tech.char.class;
+               |%base.char.class;      |%docinfo.char.class;
+               |%other.char.class;
+               |%ndxterm.class;
+               %local.refinline.char.mix;">
+
+<!ENTITY % local.refclass.char.mix "">
+<!ENTITY % refclass.char.mix
+               "#PCDATA
+               |Application
+               %local.refclass.char.mix;">
+
+<!-- Redeclaration placeholder 2 .......................................... -->
+
+<!-- For redeclaring entities that are declared after this point while
+     retaining their references to the entities that are declared before
+     this point -->
+
+<![ %dbhier.redecl2.module; [
+%rdbhier2;
+<!--end of dbhier.redecl2.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Entities for content models .......................................... -->
+
+<!ENTITY % div.title.content
+       "Title, Subtitle?, TitleAbbrev?">
+
+<!ENTITY % bookcomponent.title.content
+       "Title, Subtitle?, TitleAbbrev?">
+
+<!ENTITY % sect.title.content
+       "Title, Subtitle?, TitleAbbrev?">
+
+<!ENTITY % refsect.title.content
+       "Title, Subtitle?, TitleAbbrev?">
+
+<!ENTITY % bookcomponent.content
+       "((%divcomponent.mix;)+, 
+           (Sect1*|(%refentry.class;)*|SimpleSect*|Section*))
+         | (Sect1+|(%refentry.class;)+|SimpleSect+|Section+)">
+
+<!-- ...................................................................... -->
+<!-- Set and SetInfo ...................................................... -->
+
+<!ENTITY % set.content.module "INCLUDE">
+<![ %set.content.module; [
+<!ENTITY % set.module "INCLUDE">
+<![ %set.module; [
+<!ENTITY % local.set.attrib "">
+<!ENTITY % set.role.attrib "%role.attrib;">
+
+<!ENTITY % set.element "INCLUDE">
+<![ %set.element; [
+<!ELEMENT Set - O ((%div.title.content;)?, SetInfo?, ToC?, (%book.class;)+,
+               SetIndex?) %ubiq.inclusion;>
+<!--end of set.element-->]]>
+
+<!ENTITY % set.attlist "INCLUDE">
+<![ %set.attlist; [
+<!ATTLIST Set
+               --
+               FPI: SGML formal public identifier
+               --
+               FPI             CDATA           #IMPLIED
+               %status.attrib;
+               %common.attrib;
+               %set.role.attrib;
+               %local.set.attrib;
+>
+<!--end of set.attlist-->]]>
+<!--end of set.module-->]]>
+
+<!ENTITY % setinfo.module "INCLUDE">
+<![ %setinfo.module; [
+<!ENTITY % local.setinfo.attrib "">
+<!ENTITY % setinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % setinfo.element "INCLUDE">
+<![ %setinfo.element; [
+<!ELEMENT SetInfo - - ((Graphic | MediaObject
+               | LegalNotice | ModeSpec | SubjectSet 
+               | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+               %beginpage.exclusion;>
+<!--end of setinfo.element-->]]>
+
+<!ENTITY % setinfo.attlist "INCLUDE">
+<![ %setinfo.attlist; [
+<!--FUTURE USE (V5.0):
+......................
+The Contents attribute will be removed from SetInfo
+......................
+-->
+<!ATTLIST SetInfo
+               --
+               Contents: IDs of the ToC, Books, and SetIndex that comprise 
+               the set, in the order of their appearance
+               --
+               Contents        IDREFS          #IMPLIED
+               %common.attrib;
+               %setinfo.role.attrib;
+               %local.setinfo.attrib;
+>
+<!--end of setinfo.attlist-->]]>
+<!--end of setinfo.module-->]]>
+<!--end of set.content.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Book and BookInfo .................................................... -->
+
+<!ENTITY % book.content.module "INCLUDE">
+<![ %book.content.module; [
+<!ENTITY % book.module "INCLUDE">
+<![ %book.module; [
+
+<!ENTITY % local.book.attrib "">
+<!ENTITY % book.role.attrib "%role.attrib;">
+
+<!ENTITY % book.element "INCLUDE">
+<![ %book.element; [
+<!ELEMENT Book - O ((%div.title.content;)?, BookInfo?,
+               (Dedication | ToC | LoT
+               | Glossary | Bibliography | Preface
+               | %chapter.class; | Reference | Part
+               | %article.class;
+               | %appendix.class;
+               | %index.class;
+               | Colophon)*)
+               %ubiq.inclusion;>
+<!--end of book.element-->]]>
+
+<!ENTITY % book.attlist "INCLUDE">
+<![ %book.attlist; [
+<!ATTLIST Book 
+               --
+               FPI: SGML formal public identifier
+               --
+               FPI             CDATA           #IMPLIED
+               %label.attrib;
+               %status.attrib;
+               %common.attrib;
+               %book.role.attrib;
+               %local.book.attrib;
+>
+<!--end of book.attlist-->]]>
+<!--end of book.module-->]]>
+
+<!ENTITY % bookinfo.module "INCLUDE">
+<![ %bookinfo.module; [
+<!ENTITY % local.bookinfo.attrib "">
+<!ENTITY % bookinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % bookinfo.element "INCLUDE">
+<![ %bookinfo.element; [
+<!ELEMENT BookInfo - - ((Graphic | MediaObject
+               | LegalNotice | ModeSpec | SubjectSet 
+               | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+               %beginpage.exclusion;>
+<!--end of bookinfo.element-->]]>
+
+<!ENTITY % bookinfo.attlist "INCLUDE">
+<![ %bookinfo.attlist; [
+<!--FUTURE USE (V5.0):
+......................
+The Contents attribute will be removed from BookInfo
+......................
+-->
+<!ATTLIST BookInfo
+               --
+               Contents: IDs of the ToC, LoTs, Prefaces, Parts, Chapters,
+               Appendixes, References, GLossary, Bibliography, and indexes
+               comprising the Book, in the order of their appearance
+               --
+               Contents        IDREFS          #IMPLIED
+               %common.attrib;
+               %bookinfo.role.attrib;
+               %local.bookinfo.attrib;
+>
+<!--end of bookinfo.attlist-->]]>
+<!--end of bookinfo.module-->]]>
+<!--end of book.content.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Dedication, ToC, and LoT ............................................. -->
+
+<!ENTITY % dedication.module "INCLUDE">
+<![ %dedication.module; [
+<!ENTITY % local.dedication.attrib "">
+<!ENTITY % dedication.role.attrib "%role.attrib;">
+
+<!ENTITY % dedication.element "INCLUDE">
+<![ %dedication.element; [
+<!ELEMENT Dedication - O ((%sect.title.content;)?, (%legalnotice.mix;)+)>
+<!--end of dedication.element-->]]>
+
+<!ENTITY % dedication.attlist "INCLUDE">
+<![ %dedication.attlist; [
+<!ATTLIST Dedication
+               %status.attrib;
+               %common.attrib;
+               %dedication.role.attrib;
+               %local.dedication.attrib;
+>
+<!--end of dedication.attlist-->]]>
+<!--end of dedication.module-->]]>
+
+<!ENTITY % colophon.module "INCLUDE">
+<![ %colophon.module; [
+<!ENTITY % local.colophon.attrib "">
+<!ENTITY % colophon.role.attrib "%role.attrib;">
+
+<!ENTITY % colophon.element "INCLUDE">
+<![ %colophon.element; [
+<!ELEMENT Colophon - O ((%sect.title.content;)?, (%textobject.mix;)+)>
+<!--end of colophon.element-->]]>
+
+<!ENTITY % colophon.attlist "INCLUDE">
+<![ %colophon.attlist; [
+<!ATTLIST Colophon
+               %status.attrib;
+               %common.attrib;
+               %colophon.role.attrib;
+               %local.colophon.attrib;>
+<!--end of colophon.attlist-->]]>
+<!--end of colophon.module-->]]>
+
+<!ENTITY % toc.content.module "INCLUDE">
+<![ %toc.content.module; [
+<!ENTITY % toc.module "INCLUDE">
+<![ %toc.module; [
+<!ENTITY % local.toc.attrib "">
+<!ENTITY % toc.role.attrib "%role.attrib;">
+
+<!ENTITY % toc.element "INCLUDE">
+<![ %toc.element; [
+<!ELEMENT ToC - O ((%bookcomponent.title.content;)?, ToCfront*,
+               (ToCpart | ToCchap)*, ToCback*)>
+<!--end of toc.element-->]]>
+
+<!ENTITY % toc.attlist "INCLUDE">
+<![ %toc.attlist; [
+<!ATTLIST ToC
+               %pagenum.attrib;
+               %common.attrib;
+               %toc.role.attrib;
+               %local.toc.attrib;
+>
+<!--end of toc.attlist-->]]>
+<!--end of toc.module-->]]>
+
+<!ENTITY % tocfront.module "INCLUDE">
+<![ %tocfront.module; [
+<!ENTITY % local.tocfront.attrib "">
+<!ENTITY % tocfront.role.attrib "%role.attrib;">
+
+<!ENTITY % tocfront.element "INCLUDE">
+<![ %tocfront.element; [
+<!ELEMENT ToCfront - O ((%para.char.mix;)+)>
+<!--end of tocfront.element-->]]>
+
+<!ENTITY % tocfront.attlist "INCLUDE">
+<![ %tocfront.attlist; [
+<!ATTLIST ToCfront
+               %label.attrib;
+               %linkend.attrib; --to element that this entry represents--
+               %pagenum.attrib;
+               %common.attrib;
+               %tocfront.role.attrib;
+               %local.tocfront.attrib;
+>
+<!--end of tocfront.attlist-->]]>
+<!--end of tocfront.module-->]]>
+
+<!ENTITY % tocentry.module "INCLUDE">
+<![ %tocentry.module; [
+<!ENTITY % local.tocentry.attrib "">
+<!ENTITY % tocentry.role.attrib "%role.attrib;">
+
+<!ENTITY % tocentry.element "INCLUDE">
+<![ %tocentry.element; [
+<!ELEMENT ToCentry - - ((%para.char.mix;)+)>
+<!--end of tocentry.element-->]]>
+
+<!ENTITY % tocentry.attlist "INCLUDE">
+<![ %tocentry.attlist; [
+<!ATTLIST ToCentry
+               %linkend.attrib; --to element that this entry represents--
+               %pagenum.attrib;
+               %common.attrib;
+               %tocentry.role.attrib;
+               %local.tocentry.attrib;
+>
+<!--end of tocentry.attlist-->]]>
+<!--end of tocentry.module-->]]>
+
+<!ENTITY % tocpart.module "INCLUDE">
+<![ %tocpart.module; [
+<!ENTITY % local.tocpart.attrib "">
+<!ENTITY % tocpart.role.attrib "%role.attrib;">
+
+<!ENTITY % tocpart.element "INCLUDE">
+<![ %tocpart.element; [
+<!ELEMENT ToCpart - O (ToCentry+, ToCchap*)>
+<!--end of tocpart.element-->]]>
+
+<!ENTITY % tocpart.attlist "INCLUDE">
+<![ %tocpart.attlist; [
+<!ATTLIST ToCpart
+               %common.attrib;
+               %tocpart.role.attrib;
+               %local.tocpart.attrib;
+>
+<!--end of tocpart.attlist-->]]>
+<!--end of tocpart.module-->]]>
+
+<!ENTITY % tocchap.module "INCLUDE">
+<![ %tocchap.module; [
+<!ENTITY % local.tocchap.attrib "">
+<!ENTITY % tocchap.role.attrib "%role.attrib;">
+
+<!ENTITY % tocchap.element "INCLUDE">
+<![ %tocchap.element; [
+<!ELEMENT ToCchap - O (ToCentry+, ToClevel1*)>
+<!--end of tocchap.element-->]]>
+
+<!ENTITY % tocchap.attlist "INCLUDE">
+<![ %tocchap.attlist; [
+<!ATTLIST ToCchap
+               %label.attrib;
+               %common.attrib;
+               %tocchap.role.attrib;
+               %local.tocchap.attrib;
+>
+<!--end of tocchap.attlist-->]]>
+<!--end of tocchap.module-->]]>
+
+<!ENTITY % toclevel1.module "INCLUDE">
+<![ %toclevel1.module; [
+<!ENTITY % local.toclevel1.attrib "">
+<!ENTITY % toclevel1.role.attrib "%role.attrib;">
+
+<!ENTITY % toclevel1.element "INCLUDE">
+<![ %toclevel1.element; [
+<!ELEMENT ToClevel1 - O (ToCentry+, ToClevel2*)>
+<!--end of toclevel1.element-->]]>
+
+<!ENTITY % toclevel1.attlist "INCLUDE">
+<![ %toclevel1.attlist; [
+<!ATTLIST ToClevel1
+               %common.attrib;
+               %toclevel1.role.attrib;
+               %local.toclevel1.attrib;
+>
+<!--end of toclevel1.attlist-->]]>
+<!--end of toclevel1.module-->]]>
+
+<!ENTITY % toclevel2.module "INCLUDE">
+<![ %toclevel2.module; [
+<!ENTITY % local.toclevel2.attrib "">
+<!ENTITY % toclevel2.role.attrib "%role.attrib;">
+
+<!ENTITY % toclevel2.element "INCLUDE">
+<![ %toclevel2.element; [
+<!ELEMENT ToClevel2 - O (ToCentry+, ToClevel3*)>
+<!--end of toclevel2.element-->]]>
+
+<!ENTITY % toclevel2.attlist "INCLUDE">
+<![ %toclevel2.attlist; [
+<!ATTLIST ToClevel2
+               %common.attrib;
+               %toclevel2.role.attrib;
+               %local.toclevel2.attrib;
+>
+<!--end of toclevel2.attlist-->]]>
+<!--end of toclevel2.module-->]]>
+
+<!ENTITY % toclevel3.module "INCLUDE">
+<![ %toclevel3.module; [
+<!ENTITY % local.toclevel3.attrib "">
+<!ENTITY % toclevel3.role.attrib "%role.attrib;">
+
+<!ENTITY % toclevel3.element "INCLUDE">
+<![ %toclevel3.element; [
+<!ELEMENT ToClevel3 - O (ToCentry+, ToClevel4*)>
+<!--end of toclevel3.element-->]]>
+
+<!ENTITY % toclevel3.attlist "INCLUDE">
+<![ %toclevel3.attlist; [
+<!ATTLIST ToClevel3
+               %common.attrib;
+               %toclevel3.role.attrib;
+               %local.toclevel3.attrib;
+>
+<!--end of toclevel3.attlist-->]]>
+<!--end of toclevel3.module-->]]>
+
+<!ENTITY % toclevel4.module "INCLUDE">
+<![ %toclevel4.module; [
+<!ENTITY % local.toclevel4.attrib "">
+<!ENTITY % toclevel4.role.attrib "%role.attrib;">
+
+<!ENTITY % toclevel4.element "INCLUDE">
+<![ %toclevel4.element; [
+<!ELEMENT ToClevel4 - O (ToCentry+, ToClevel5*)>
+<!--end of toclevel4.element-->]]>
+
+<!ENTITY % toclevel4.attlist "INCLUDE">
+<![ %toclevel4.attlist; [
+<!ATTLIST ToClevel4
+               %common.attrib;
+               %toclevel4.role.attrib;
+               %local.toclevel4.attrib;
+>
+<!--end of toclevel4.attlist-->]]>
+<!--end of toclevel4.module-->]]>
+
+<!ENTITY % toclevel5.module "INCLUDE">
+<![ %toclevel5.module; [
+<!ENTITY % local.toclevel5.attrib "">
+<!ENTITY % toclevel5.role.attrib "%role.attrib;">
+
+<!ENTITY % toclevel5.element "INCLUDE">
+<![ %toclevel5.element; [
+<!ELEMENT ToClevel5 - O (ToCentry+)>
+<!--end of toclevel5.element-->]]>
+
+<!ENTITY % toclevel5.attlist "INCLUDE">
+<![ %toclevel5.attlist; [
+<!ATTLIST ToClevel5
+               %common.attrib;
+               %toclevel5.role.attrib;
+               %local.toclevel5.attrib;
+>
+<!--end of toclevel5.attlist-->]]>
+<!--end of toclevel5.module-->]]>
+
+<!ENTITY % tocback.module "INCLUDE">
+<![ %tocback.module; [
+<!ENTITY % local.tocback.attrib "">
+<!ENTITY % tocback.role.attrib "%role.attrib;">
+
+<!ENTITY % tocback.element "INCLUDE">
+<![ %tocback.element; [
+<!ELEMENT ToCback - O ((%para.char.mix;)+)>
+<!--end of tocback.element-->]]>
+
+<!ENTITY % tocback.attlist "INCLUDE">
+<![ %tocback.attlist; [
+<!ATTLIST ToCback
+               %label.attrib;
+               %linkend.attrib; --to element that this entry represents--
+               %pagenum.attrib;
+               %common.attrib;
+               %tocback.role.attrib;
+               %local.tocback.attrib;
+>
+<!--end of tocback.attlist-->]]>
+<!--end of tocback.module-->]]>
+<!--end of toc.content.module-->]]>
+
+<!ENTITY % lot.content.module "INCLUDE">
+<![ %lot.content.module; [
+<!ENTITY % lot.module "INCLUDE">
+<![ %lot.module; [
+<!ENTITY % local.lot.attrib "">
+<!ENTITY % lot.role.attrib "%role.attrib;">
+
+<!ENTITY % lot.element "INCLUDE">
+<![ %lot.element; [
+<!ELEMENT LoT - O ((%bookcomponent.title.content;)?, LoTentry*)>
+<!--end of lot.element-->]]>
+
+<!ENTITY % lot.attlist "INCLUDE">
+<![ %lot.attlist; [
+<!ATTLIST LoT
+               %label.attrib;
+               %common.attrib;
+               %lot.role.attrib;
+               %local.lot.attrib;
+>
+<!--end of lot.attlist-->]]>
+<!--end of lot.module-->]]>
+
+<!ENTITY % lotentry.module "INCLUDE">
+<![ %lotentry.module; [
+<!ENTITY % local.lotentry.attrib "">
+<!ENTITY % lotentry.role.attrib "%role.attrib;">
+
+<!ENTITY % lotentry.element "INCLUDE">
+<![ %lotentry.element; [
+<!ELEMENT LoTentry - - ((%para.char.mix;)+ )>
+<!--end of lotentry.element-->]]>
+
+<!ENTITY % lotentry.attlist "INCLUDE">
+<![ %lotentry.attlist; [
+<!ATTLIST LoTentry
+               --
+               SrcCredit: Information about the source of the entry, 
+               as for a list of illustrations
+               --
+               SrcCredit       CDATA           #IMPLIED
+               %pagenum.attrib;
+               %common.attrib;
+               %linkend.attrib; --to element that this entry represents--
+               %lotentry.role.attrib;
+               %local.lotentry.attrib;
+>
+<!--end of lotentry.attlist-->]]>
+<!--end of lotentry.module-->]]>
+<!--end of lot.content.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Appendix, Chapter, Part, Preface, Reference, PartIntro ............... -->
+
+<!ENTITY % appendix.module "INCLUDE">
+<![ %appendix.module; [
+<!ENTITY % local.appendix.attrib "">
+<!ENTITY % appendix.role.attrib "%role.attrib;">
+
+<!ENTITY % appendix.element "INCLUDE">
+<![ %appendix.element; [
+<!ELEMENT Appendix - O (AppendixInfo?,
+                         (%bookcomponent.title.content;), 
+                         (%nav.class)*,
+                         ToCchap?,
+                         (%bookcomponent.content;),
+                         (%nav.class)*)
+                         %ubiq.inclusion;>
+<!--end of appendix.element-->]]>
+
+<!ENTITY % appendix.attlist "INCLUDE">
+<![ %appendix.attlist; [
+<!ATTLIST Appendix
+               %label.attrib;
+               %status.attrib;
+               %common.attrib;
+               %appendix.role.attrib;
+               %local.appendix.attrib;
+>
+<!--end of appendix.attlist-->]]>
+<!--end of appendix.module-->]]>
+
+<!ENTITY % chapter.module "INCLUDE">
+<![ %chapter.module; [
+<!ENTITY % local.chapter.attrib "">
+<!ENTITY % chapter.role.attrib "%role.attrib;">
+
+<!ENTITY % chapter.element "INCLUDE">
+<![ %chapter.element; [
+<!ELEMENT Chapter - O (ChapterInfo?,
+                        (%bookcomponent.title.content;),
+                        (%nav.class)*,
+                        ToCchap?,
+                        (%bookcomponent.content;),
+                        (%nav.class)*)
+                        %ubiq.inclusion;>
+<!--end of chapter.element-->]]>
+
+<!ENTITY % chapter.attlist "INCLUDE">
+<![ %chapter.attlist; [
+<!ATTLIST Chapter
+               %label.attrib;
+               %status.attrib;
+               %common.attrib;
+               %chapter.role.attrib;
+               %local.chapter.attrib;
+>
+<!--end of chapter.attlist-->]]>
+<!--end of chapter.module-->]]>
+
+<!ENTITY % part.module "INCLUDE">
+<![ %part.module; [
+
+<!-- Note that Part was to have its content model reduced in V4.1.  This
+change will not be made after all. -->
+
+<!ENTITY % local.part.attrib "">
+<!ENTITY % part.role.attrib "%role.attrib;">
+
+<!ENTITY % part.element "INCLUDE">
+<![ %part.element; [
+<!ELEMENT Part - - (PartInfo?, (%bookcomponent.title.content;), PartIntro?,
+               (%partcontent.mix;)+) %ubiq.inclusion;>
+<!--end of part.element-->]]>
+
+<!ENTITY % part.attlist "INCLUDE">
+<![ %part.attlist; [
+<!ATTLIST Part
+               %label.attrib;
+               %status.attrib;
+               %common.attrib;
+               %part.role.attrib;
+               %local.part.attrib;
+>
+<!--end of part.attlist-->]]>
+<!--ELEMENT PartIntro (defined below)-->
+<!--end of part.module-->]]>
+
+<!ENTITY % preface.module "INCLUDE">
+<![ %preface.module; [
+<!ENTITY % local.preface.attrib "">
+<!ENTITY % preface.role.attrib "%role.attrib;">
+
+<!ENTITY % preface.element "INCLUDE">
+<![ %preface.element; [
+<!ELEMENT Preface - O (PrefaceInfo?,
+                        (%bookcomponent.title.content;),
+                        (%nav.class)*,
+                        ToCchap?,
+                        (%bookcomponent.content;),
+                        (%nav.class)*)
+                        %ubiq.inclusion;>
+<!--end of preface.element-->]]>
+
+<!ENTITY % preface.attlist "INCLUDE">
+<![ %preface.attlist; [
+<!ATTLIST Preface
+               %status.attrib;
+               %common.attrib;
+               %preface.role.attrib;
+               %local.preface.attrib;
+>
+<!--end of preface.attlist-->]]>
+<!--end of preface.module-->]]>
+
+<!ENTITY % reference.module "INCLUDE">
+<![ %reference.module; [
+<!ENTITY % local.reference.attrib "">
+<!ENTITY % reference.role.attrib "%role.attrib;">
+
+<!ENTITY % reference.element "INCLUDE">
+<![ %reference.element; [
+<!ELEMENT Reference - O (ReferenceInfo?, (%bookcomponent.title.content;),
+                PartIntro?,
+               (%refentry.class;)+) %ubiq.inclusion;>
+<!--end of reference.element-->]]>
+
+<!ENTITY % reference.attlist "INCLUDE">
+<![ %reference.attlist; [
+<!ATTLIST Reference
+               %label.attrib;
+               %status.attrib;
+               %common.attrib;
+               %reference.role.attrib;
+               %local.reference.attrib;
+>
+<!--end of reference.attlist-->]]>
+<!--ELEMENT PartIntro (defined below)-->
+<!--end of reference.module-->]]>
+
+<!ENTITY % partintro.module "INCLUDE">
+<![ %partintro.module; [
+<!ENTITY % local.partintro.attrib "">
+<!ENTITY % partintro.role.attrib "%role.attrib;">
+
+<!ENTITY % partintro.element "INCLUDE">
+<![ %partintro.element; [
+<!ELEMENT PartIntro - O ((%div.title.content;)?, (%bookcomponent.content;))
+               %ubiq.inclusion;>
+<!--end of partintro.element-->]]>
+
+<!ENTITY % partintro.attlist "INCLUDE">
+<![ %partintro.attlist; [
+<!ATTLIST PartIntro    
+               %label.attrib;
+               %common.attrib;
+               %local.partintro.attrib;
+               %partintro.role.attrib;
+>
+<!--end of partintro.attlist-->]]>
+<!--end of partintro.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Other Info elements .................................................. -->
+
+<!ENTITY % appendixinfo.module "INCLUDE">
+<![ %appendixinfo.module; [
+<!ENTITY % local.appendixinfo.attrib "">
+<!ENTITY % appendixinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % appendixinfo.element "INCLUDE">
+<![ %appendixinfo.element; [
+<!ELEMENT AppendixInfo - - ((Graphic | MediaObject 
+               | LegalNotice | ModeSpec 
+               | SubjectSet | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+               %beginpage.exclusion;>
+<!--end of appendixinfo.element-->]]>
+
+<!ENTITY % appendixinfo.attlist "INCLUDE">
+<![ %appendixinfo.attlist; [
+<!ATTLIST AppendixInfo
+               %common.attrib;
+               %appendixinfo.role.attrib;
+               %local.appendixinfo.attrib;
+>
+<!--end of appendixinfo.attlist-->]]>
+<!--end of appendixinfo.module-->]]>
+
+
+<!ENTITY % bibliographyinfo.module "INCLUDE">
+<![ %bibliographyinfo.module; [
+<!ENTITY % local.bibliographyinfo.attrib "">
+<!ENTITY % bibliographyinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % bibliographyinfo.element "INCLUDE">
+<![ %bibliographyinfo.element; [
+<!ELEMENT BibliographyInfo - - ((Graphic | MediaObject 
+               | LegalNotice | ModeSpec 
+               | SubjectSet | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+               %beginpage.exclusion;>
+<!--end of bibliographyinfo.element-->]]>
+
+<!ENTITY % bibliographyinfo.attlist "INCLUDE">
+<![ %bibliographyinfo.attlist; [
+<!ATTLIST BibliographyInfo
+               %common.attrib;
+               %bibliographyinfo.role.attrib;
+               %local.bibliographyinfo.attrib;
+>
+<!--end of bibliographyinfo.attlist-->]]>
+<!--end of bibliographyinfo.module-->]]>
+
+<!ENTITY % chapterinfo.module "INCLUDE">
+<![ %chapterinfo.module; [
+<!ENTITY % local.chapterinfo.attrib "">
+<!ENTITY % chapterinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % chapterinfo.element "INCLUDE">
+<![ %chapterinfo.element; [
+<!ELEMENT ChapterInfo - - ((Graphic | MediaObject 
+               | LegalNotice | ModeSpec 
+               | SubjectSet | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+               %beginpage.exclusion;>
+<!--end of chapterinfo.element-->]]>
+
+<!ENTITY % chapterinfo.attlist "INCLUDE">
+<![ %chapterinfo.attlist; [
+<!ATTLIST ChapterInfo
+               %common.attrib;
+               %chapterinfo.role.attrib;
+               %local.chapterinfo.attrib;
+>
+<!--end of chapterinfo.attlist-->]]>
+<!--end of chapterinfo.module-->]]>
+
+<!ENTITY % glossaryinfo.module "INCLUDE">
+<![ %glossaryinfo.module; [
+<!ENTITY % local.glossaryinfo.attrib "">
+<!ENTITY % glossaryinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % glossaryinfo.element "INCLUDE">
+<![ %glossaryinfo.element; [
+<!ELEMENT GlossaryInfo - - ((Graphic | MediaObject 
+               | LegalNotice | ModeSpec 
+               | SubjectSet | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+               %beginpage.exclusion;>
+<!--end of glossaryinfo.element-->]]>
+
+<!ENTITY % glossaryinfo.attlist "INCLUDE">
+<![ %glossaryinfo.attlist; [
+<!ATTLIST GlossaryInfo
+               %common.attrib;
+               %glossaryinfo.role.attrib;
+               %local.glossaryinfo.attrib;
+>
+<!--end of glossaryinfo.attlist-->]]>
+<!--end of glossaryinfo.module-->]]>
+
+
+<!ENTITY % indexinfo.module "INCLUDE">
+<![ %indexinfo.module; [
+<!ENTITY % local.indexinfo.attrib "">
+<!ENTITY % indexinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % indexinfo.element "INCLUDE">
+<![ %indexinfo.element; [
+<!ELEMENT IndexInfo - - ((Graphic | MediaObject 
+               | LegalNotice | ModeSpec 
+               | SubjectSet | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+               %beginpage.exclusion;>
+<!--end of indexinfo.element-->]]>
+
+<!ENTITY % indexinfo.attlist "INCLUDE">
+<![ %indexinfo.attlist; [
+<!ATTLIST IndexInfo
+               %common.attrib;
+               %indexinfo.role.attrib;
+               %local.indexinfo.attrib;
+>
+<!--end of indexinfo.attlist-->]]>
+<!--end of indexinfo.module-->]]>
+
+<!ENTITY % partinfo.module "INCLUDE">
+<![ %partinfo.module; [
+<!ENTITY % local.partinfo.attrib "">
+<!ENTITY % partinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % partinfo.element "INCLUDE">
+<![ %partinfo.element; [
+<!ELEMENT PartInfo - - ((Graphic | MediaObject 
+               | LegalNotice | ModeSpec 
+               | SubjectSet | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+               %beginpage.exclusion;>
+<!--end of partinfo.element-->]]>
+
+<!ENTITY % partinfo.attlist "INCLUDE">
+<![ %partinfo.attlist; [
+<!ATTLIST PartInfo
+               %common.attrib;
+               %partinfo.role.attrib;
+               %local.partinfo.attrib;
+>
+<!--end of partinfo.attlist-->]]>
+<!--end of partinfo.module-->]]>
+
+
+<!ENTITY % prefaceinfo.module "INCLUDE">
+<![ %prefaceinfo.module; [
+<!ENTITY % local.prefaceinfo.attrib "">
+<!ENTITY % prefaceinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % prefaceinfo.element "INCLUDE">
+<![ %prefaceinfo.element; [
+<!ELEMENT PrefaceInfo - - ((Graphic | MediaObject 
+               | LegalNotice | ModeSpec 
+               | SubjectSet | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+               %beginpage.exclusion;>
+<!--end of prefaceinfo.element-->]]>
+
+<!ENTITY % prefaceinfo.attlist "INCLUDE">
+<![ %prefaceinfo.attlist; [
+<!ATTLIST PrefaceInfo
+               %common.attrib;
+               %prefaceinfo.role.attrib;
+               %local.prefaceinfo.attrib;
+>
+<!--end of prefaceinfo.attlist-->]]>
+<!--end of prefaceinfo.module-->]]>
+
+
+<!ENTITY % refentryinfo.module "INCLUDE">
+<![ %refentryinfo.module; [
+<!ENTITY % local.refentryinfo.attrib "">
+<!ENTITY % refentryinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % refentryinfo.element "INCLUDE">
+<![ %refentryinfo.element; [
+<!ELEMENT RefEntryInfo - - ((Graphic | MediaObject 
+               | LegalNotice | ModeSpec 
+               | SubjectSet | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+               %beginpage.exclusion;>
+<!--end of refentryinfo.element-->]]>
+
+<!ENTITY % refentryinfo.attlist "INCLUDE">
+<![ %refentryinfo.attlist; [
+<!ATTLIST RefEntryInfo
+               %common.attrib;
+               %refentryinfo.role.attrib;
+               %local.refentryinfo.attrib;
+>
+<!--end of refentryinfo.attlist-->]]>
+<!--end of refentryinfo.module-->]]>
+
+
+<!ENTITY % refsect1info.module "INCLUDE">
+<![ %refsect1info.module; [
+<!ENTITY % local.refsect1info.attrib "">
+<!ENTITY % refsect1info.role.attrib "%role.attrib;">
+
+<!ENTITY % refsect1info.element "INCLUDE">
+<![ %refsect1info.element; [
+<!ELEMENT RefSect1Info - - ((Graphic | MediaObject 
+               | LegalNotice | ModeSpec 
+               | SubjectSet | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+               %beginpage.exclusion;>
+<!--end of refsect1info.element-->]]>
+
+<!ENTITY % refsect1info.attlist "INCLUDE">
+<![ %refsect1info.attlist; [
+<!ATTLIST RefSect1Info
+               %common.attrib;
+               %refsect1info.role.attrib;
+               %local.refsect1info.attrib;
+>
+<!--end of refsect1info.attlist-->]]>
+<!--end of refsect1info.module-->]]>
+
+
+<!ENTITY % refsect2info.module "INCLUDE">
+<![ %refsect2info.module; [
+<!ENTITY % local.refsect2info.attrib "">
+<!ENTITY % refsect2info.role.attrib "%role.attrib;">
+
+<!ENTITY % refsect2info.element "INCLUDE">
+<![ %refsect2info.element; [
+<!ELEMENT RefSect2Info - - ((Graphic | MediaObject 
+               | LegalNotice | ModeSpec 
+               | SubjectSet | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+               %beginpage.exclusion;>
+<!--end of refsect2info.element-->]]>
+
+<!ENTITY % refsect2info.attlist "INCLUDE">
+<![ %refsect2info.attlist; [
+<!ATTLIST RefSect2Info
+               %common.attrib;
+               %refsect2info.role.attrib;
+               %local.refsect2info.attrib;
+>
+<!--end of refsect2info.attlist-->]]>
+<!--end of refsect2info.module-->]]>
+
+
+<!ENTITY % refsect3info.module "INCLUDE">
+<![ %refsect3info.module; [
+<!ENTITY % local.refsect3info.attrib "">
+<!ENTITY % refsect3info.role.attrib "%role.attrib;">
+
+<!ENTITY % refsect3info.element "INCLUDE">
+<![ %refsect3info.element; [
+<!ELEMENT RefSect3Info - - ((Graphic | MediaObject 
+               | LegalNotice | ModeSpec 
+               | SubjectSet | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+               %beginpage.exclusion;>
+<!--end of refsect3info.element-->]]>
+
+<!ENTITY % refsect3info.attlist "INCLUDE">
+<![ %refsect3info.attlist; [
+<!ATTLIST RefSect3Info
+               %common.attrib;
+               %refsect3info.role.attrib;
+               %local.refsect3info.attrib;
+>
+<!--end of refsect3info.attlist-->]]>
+<!--end of refsect3info.module-->]]>
+
+
+<!ENTITY % refsynopsisdivinfo.module "INCLUDE">
+<![ %refsynopsisdivinfo.module; [
+<!ENTITY % local.refsynopsisdivinfo.attrib "">
+<!ENTITY % refsynopsisdivinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % refsynopsisdivinfo.element "INCLUDE">
+<![ %refsynopsisdivinfo.element; [
+<!ELEMENT RefSynopsisDivInfo - - ((Graphic | MediaObject 
+               | LegalNotice | ModeSpec 
+               | SubjectSet | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+               %beginpage.exclusion;>
+<!--end of refsynopsisdivinfo.element-->]]>
+
+<!ENTITY % refsynopsisdivinfo.attlist "INCLUDE">
+<![ %refsynopsisdivinfo.attlist; [
+<!ATTLIST RefSynopsisDivInfo
+               %common.attrib;
+               %refsynopsisdivinfo.role.attrib;
+               %local.refsynopsisdivinfo.attrib;
+>
+<!--end of refsynopsisdivinfo.attlist-->]]>
+<!--end of refsynopsisdivinfo.module-->]]>
+
+
+<!ENTITY % referenceinfo.module "INCLUDE">
+<![ %referenceinfo.module; [
+<!ENTITY % local.referenceinfo.attrib "">
+<!ENTITY % referenceinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % referenceinfo.element "INCLUDE">
+<![ %referenceinfo.element; [
+<!ELEMENT ReferenceInfo - - ((Graphic | MediaObject 
+               | LegalNotice | ModeSpec 
+               | SubjectSet | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+               %beginpage.exclusion;>
+<!--end of referenceinfo.element-->]]>
+
+<!ENTITY % referenceinfo.attlist "INCLUDE">
+<![ %referenceinfo.attlist; [
+<!ATTLIST ReferenceInfo
+               %common.attrib;
+               %referenceinfo.role.attrib;
+               %local.referenceinfo.attrib;
+>
+<!--end of referenceinfo.attlist-->]]>
+<!--end of referenceinfo.module-->]]>
+
+
+<!ENTITY % sect1info.module "INCLUDE">
+<![ %sect1info.module; [
+<!ENTITY % local.sect1info.attrib "">
+<!ENTITY % sect1info.role.attrib "%role.attrib;">
+
+<!ENTITY % sect1info.element "INCLUDE">
+<![ %sect1info.element; [
+<!ELEMENT Sect1Info - - ((Graphic | MediaObject 
+               | LegalNotice | ModeSpec 
+               | SubjectSet | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+               %beginpage.exclusion;>
+<!--end of sect1info.element-->]]>
+
+<!ENTITY % sect1info.attlist "INCLUDE">
+<![ %sect1info.attlist; [
+<!ATTLIST Sect1Info
+               %common.attrib;
+               %sect1info.role.attrib;
+               %local.sect1info.attrib;
+>
+<!--end of sect1info.attlist-->]]>
+<!--end of sect1info.module-->]]>
+
+
+<!ENTITY % sect2info.module "INCLUDE">
+<![ %sect2info.module; [
+<!ENTITY % local.sect2info.attrib "">
+<!ENTITY % sect2info.role.attrib "%role.attrib;">
+
+<!ENTITY % sect2info.element "INCLUDE">
+<![ %sect2info.element; [
+<!ELEMENT Sect2Info - - ((Graphic | MediaObject 
+               | LegalNotice | ModeSpec 
+               | SubjectSet | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+               %beginpage.exclusion;>
+<!--end of sect2info.element-->]]>
+
+<!ENTITY % sect2info.attlist "INCLUDE">
+<![ %sect2info.attlist; [
+<!ATTLIST Sect2Info
+               %common.attrib;
+               %sect2info.role.attrib;
+               %local.sect2info.attrib;
+>
+<!--end of sect2info.attlist-->]]>
+<!--end of sect2info.module-->]]>
+
+
+<!ENTITY % sect3info.module "INCLUDE">
+<![ %sect3info.module; [
+<!ENTITY % local.sect3info.attrib "">
+<!ENTITY % sect3info.role.attrib "%role.attrib;">
+
+<!ENTITY % sect3info.element "INCLUDE">
+<![ %sect3info.element; [
+<!ELEMENT Sect3Info - - ((Graphic | MediaObject 
+               | LegalNotice | ModeSpec 
+               | SubjectSet | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+               %beginpage.exclusion;>
+<!--end of sect3info.element-->]]>
+
+<!ENTITY % sect3info.attlist "INCLUDE">
+<![ %sect3info.attlist; [
+<!ATTLIST Sect3Info
+               %common.attrib;
+               %sect3info.role.attrib;
+               %local.sect3info.attrib;
+>
+<!--end of sect3info.attlist-->]]>
+<!--end of sect3info.module-->]]>
+
+
+<!ENTITY % sect4info.module "INCLUDE">
+<![ %sect4info.module; [
+<!ENTITY % local.sect4info.attrib "">
+<!ENTITY % sect4info.role.attrib "%role.attrib;">
+
+<!ENTITY % sect4info.element "INCLUDE">
+<![ %sect4info.element; [
+<!ELEMENT Sect4Info - - ((Graphic | MediaObject 
+               | LegalNotice | ModeSpec 
+               | SubjectSet | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+               %beginpage.exclusion;>
+<!--end of sect4info.element-->]]>
+
+<!ENTITY % sect4info.attlist "INCLUDE">
+<![ %sect4info.attlist; [
+<!ATTLIST Sect4Info
+               %common.attrib;
+               %sect4info.role.attrib;
+               %local.sect4info.attrib;
+>
+<!--end of sect4info.attlist-->]]>
+<!--end of sect4info.module-->]]>
+
+
+<!ENTITY % sect5info.module "INCLUDE">
+<![ %sect5info.module; [
+<!ENTITY % local.sect5info.attrib "">
+<!ENTITY % sect5info.role.attrib "%role.attrib;">
+
+<!ENTITY % sect5info.element "INCLUDE">
+<![ %sect5info.element; [
+<!ELEMENT Sect5Info - - ((Graphic | MediaObject 
+               | LegalNotice | ModeSpec 
+               | SubjectSet | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+               %beginpage.exclusion;>
+<!--end of sect5info.element-->]]>
+
+<!ENTITY % sect5info.attlist "INCLUDE">
+<![ %sect5info.attlist; [
+<!ATTLIST Sect5Info
+               %common.attrib;
+               %sect5info.role.attrib;
+               %local.sect5info.attrib;
+>
+<!--end of sect5info.attlist-->]]>
+<!--end of sect5info.module-->]]>
+
+
+<!ENTITY % setindexinfo.module "INCLUDE">
+<![ %setindexinfo.module; [
+<!ENTITY % local.setindexinfo.attrib "">
+<!ENTITY % setindexinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % setindexinfo.element "INCLUDE">
+<![ %setindexinfo.element; [
+<!ELEMENT SetIndexInfo - - ((Graphic | MediaObject 
+               | LegalNotice | ModeSpec 
+               | SubjectSet | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+               %beginpage.exclusion;>
+<!--end of setindexinfo.element-->]]>
+
+<!ENTITY % setindexinfo.attlist "INCLUDE">
+<![ %setindexinfo.attlist; [
+<!ATTLIST SetIndexInfo
+               %common.attrib;
+               %setindexinfo.role.attrib;
+               %local.setindexinfo.attrib;
+>
+<!--end of setindexinfo.attlist-->]]>
+<!--end of setindexinfo.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Section (parallel to Sect*) ......................................... -->
+
+<!ENTITY % section.content.module "INCLUDE">
+<![ %section.content.module; [
+<!ENTITY % section.module "INCLUDE">
+<![ %section.module; [
+<!ENTITY % local.section.attrib "">
+<!ENTITY % section.role.attrib "%role.attrib;">
+
+<!ENTITY % section.element "INCLUDE">
+<![ %section.element; [
+<!ELEMENT Section - - (SectionInfo?,
+                       (%sect.title.content;),
+                       (%nav.class;)*,
+                       (((%divcomponent.mix;)+,
+                         ((%refentry.class;)*|Section*))
+                        | (%refentry.class;)+|Section+),
+                       (%nav.class;)*)
+                       %ubiq.inclusion;>
+<!--end of section.element-->]]>
+
+<!ENTITY % section.attlist "INCLUDE">
+<![ %section.attlist; [
+<!ATTLIST Section
+               --
+               What did we decide about RenderAs?
+               Renderas        (Sect1
+                               |Sect2
+                               |Sect3
+                               |Sect4
+                               |Sect5)         #IMPLIED
+               --
+               %label.attrib;
+               %status.attrib;
+               %common.attrib;
+               %section.role.attrib;
+               %local.section.attrib;
+>
+<!--end of section.attlist-->]]>
+<!--end of section.module-->]]>
+
+<!ENTITY % sectioninfo.module "INCLUDE">
+<![ %sectioninfo.module; [
+<!ENTITY % sectioninfo.role.attrib "%role.attrib;">
+<!ENTITY % local.sectioninfo.attrib "">
+
+<!ENTITY % sectioninfo.element "INCLUDE">
+<![ %sectioninfo.element; [
+<!ELEMENT SectionInfo - - ((Graphic | MediaObject | LegalNotice | ModeSpec 
+       | SubjectSet | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+       -(BeginPage)>
+<!--end of sectioninfo.element-->]]>
+
+<!ENTITY % sectioninfo.attlist "INCLUDE">
+<![ %sectioninfo.attlist; [
+<!ATTLIST SectionInfo
+               %common.attrib;
+               %sectioninfo.role.attrib;
+               %local.sectioninfo.attrib;
+>
+<!--end of sectioninfo.attlist-->]]>
+<!--end of sectioninfo.module-->]]>
+<!--end of section.content.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Sect1, Sect2, Sect3, Sect4, Sect5 .................................... -->
+
+<!ENTITY % sect1.module "INCLUDE">
+<![ %sect1.module; [
+<!ENTITY % local.sect1.attrib "">
+<!ENTITY % sect1.role.attrib "%role.attrib;">
+
+<!ENTITY % sect1.element "INCLUDE">
+<![ %sect1.element; [
+<!ELEMENT Sect1 - O (Sect1Info?, (%sect.title.content;), (%nav.class;)*,
+               (((%divcomponent.mix;)+, 
+               ((%refentry.class;)* | Sect2* | SimpleSect*))
+               | (%refentry.class;)+ | Sect2+ | SimpleSect+), (%nav.class;)*)
+               %ubiq.inclusion;>
+<!--end of sect1.element-->]]>
+
+<!ENTITY % sect1.attlist "INCLUDE">
+<![ %sect1.attlist; [
+<!ATTLIST Sect1
+               --
+               Renderas: Indicates the format in which the heading should
+               appear
+               --
+               Renderas        (Sect2
+                               |Sect3
+                               |Sect4
+                               |Sect5)         #IMPLIED
+               %label.attrib;
+               %status.attrib;
+               %common.attrib;
+               %sect1.role.attrib;
+               %local.sect1.attrib;
+>
+<!--end of sect1.attlist-->]]>
+<!--end of sect1.module-->]]>
+
+<!ENTITY % sect2.module "INCLUDE">
+<![ %sect2.module; [
+<!ENTITY % local.sect2.attrib "">
+<!ENTITY % sect2.role.attrib "%role.attrib;">
+
+<!ENTITY % sect2.element "INCLUDE">
+<![ %sect2.element; [
+<!ELEMENT Sect2 - O (Sect2Info?, (%sect.title.content;), (%nav.class;)*,
+               (((%divcomponent.mix;)+, 
+               ((%refentry.class;)* | Sect3* | SimpleSect*))
+               | (%refentry.class;)+ | Sect3+ | SimpleSect+), (%nav.class;)*)>
+<!--end of sect2.element-->]]>
+
+<!ENTITY % sect2.attlist "INCLUDE">
+<![ %sect2.attlist; [
+<!ATTLIST Sect2
+               --
+               Renderas: Indicates the format in which the heading should
+               appear
+               --
+               Renderas        (Sect1
+                               |Sect3
+                               |Sect4
+                               |Sect5)         #IMPLIED
+               %label.attrib;
+               %status.attrib;
+               %common.attrib;
+               %sect2.role.attrib;
+               %local.sect2.attrib;
+>
+<!--end of sect2.attlist-->]]>
+<!--end of sect2.module-->]]>
+
+<!ENTITY % sect3.module "INCLUDE">
+<![ %sect3.module; [
+<!ENTITY % local.sect3.attrib "">
+<!ENTITY % sect3.role.attrib "%role.attrib;">
+
+<!ENTITY % sect3.element "INCLUDE">
+<![ %sect3.element; [
+<!ELEMENT Sect3 - O (Sect3Info?, (%sect.title.content;), (%nav.class;)*,
+               (((%divcomponent.mix;)+, 
+               ((%refentry.class;)* | Sect4* | SimpleSect*))
+               | (%refentry.class;)+ | Sect4+ | SimpleSect+), (%nav.class;)*)>
+<!--end of sect3.element-->]]>
+
+<!ENTITY % sect3.attlist "INCLUDE">
+<![ %sect3.attlist; [
+<!ATTLIST Sect3
+               --
+               Renderas: Indicates the format in which the heading should
+               appear
+               --
+               Renderas        (Sect1
+                               |Sect2
+                               |Sect4
+                               |Sect5)         #IMPLIED
+               %label.attrib;
+               %status.attrib;
+               %common.attrib;
+               %sect3.role.attrib;
+               %local.sect3.attrib;
+>
+<!--end of sect3.attlist-->]]>
+<!--end of sect3.module-->]]>
+
+<!ENTITY % sect4.module "INCLUDE">
+<![ %sect4.module; [
+<!ENTITY % local.sect4.attrib "">
+<!ENTITY % sect4.role.attrib "%role.attrib;">
+
+<!ENTITY % sect4.element "INCLUDE">
+<![ %sect4.element; [
+<!ELEMENT Sect4 - O (Sect4Info?, (%sect.title.content;), (%nav.class;)*,
+               (((%divcomponent.mix;)+, 
+               ((%refentry.class;)* | Sect5* | SimpleSect*))
+               | (%refentry.class;)+ | Sect5+ | SimpleSect+), (%nav.class;)*)>
+<!--end of sect4.element-->]]>
+
+<!ENTITY % sect4.attlist "INCLUDE">
+<![ %sect4.attlist; [
+<!ATTLIST Sect4
+               --
+               Renderas: Indicates the format in which the heading should
+               appear
+               --
+               Renderas        (Sect1
+                               |Sect2
+                               |Sect3
+                               |Sect5)         #IMPLIED
+               %label.attrib;
+               %status.attrib;
+               %common.attrib;
+               %sect4.role.attrib;
+               %local.sect4.attrib;
+>
+<!--end of sect4.attlist-->]]>
+<!--end of sect4.module-->]]>
+
+<!ENTITY % sect5.module "INCLUDE">
+<![ %sect5.module; [
+<!ENTITY % local.sect5.attrib "">
+<!ENTITY % sect5.role.attrib "%role.attrib;">
+
+<!ENTITY % sect5.element "INCLUDE">
+<![ %sect5.element; [
+<!ELEMENT Sect5 - O (Sect5Info?, (%sect.title.content;), (%nav.class;)*,
+               (((%divcomponent.mix;)+, ((%refentry.class;)* | SimpleSect*))
+               | (%refentry.class;)+ | SimpleSect+), (%nav.class;)*)>
+<!--end of sect5.element-->]]>
+
+<!ENTITY % sect5.attlist "INCLUDE">
+<![ %sect5.attlist; [
+<!ATTLIST Sect5
+               --
+               Renderas: Indicates the format in which the heading should
+               appear
+               --
+               Renderas        (Sect1
+                               |Sect2
+                               |Sect3
+                               |Sect4)         #IMPLIED
+               %label.attrib;
+               %status.attrib;
+               %common.attrib;
+               %sect5.role.attrib;
+               %local.sect5.attrib;
+>
+<!--end of sect5.attlist-->]]>
+<!--end of sect5.module-->]]>
+
+<!ENTITY % simplesect.module "INCLUDE">
+<![ %simplesect.module; [
+<!ENTITY % local.simplesect.attrib "">
+<!ENTITY % simplesect.role.attrib "%role.attrib;">
+
+<!ENTITY % simplesect.element "INCLUDE">
+<![ %simplesect.element; [
+<!ELEMENT SimpleSect - O ((%sect.title.content;), (%divcomponent.mix;)+)
+               %ubiq.inclusion;>
+<!--end of simplesect.element-->]]>
+
+<!ENTITY % simplesect.attlist "INCLUDE">
+<![ %simplesect.attlist; [
+<!ATTLIST SimpleSect
+               %common.attrib;
+               %simplesect.role.attrib;
+               %local.simplesect.attrib;
+>
+<!--end of simplesect.attlist-->]]>
+<!--end of simplesect.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Bibliography ......................................................... -->
+
+<!ENTITY % bibliography.content.module "INCLUDE">
+<![ %bibliography.content.module; [
+<!ENTITY % bibliography.module "INCLUDE">
+<![ %bibliography.module; [
+<!ENTITY % local.bibliography.attrib "">
+<!ENTITY % bibliography.role.attrib "%role.attrib;">
+
+<!ENTITY % bibliography.element "INCLUDE">
+<![ %bibliography.element; [
+<!ELEMENT Bibliography - O (BibliographyInfo?,
+               (%bookcomponent.title.content;)?,
+               (%component.mix;)*, 
+               (BiblioDiv+ | (BiblioEntry|BiblioMixed)+))>
+<!--end of bibliography.element-->]]>
+
+<!ENTITY % bibliography.attlist "INCLUDE">
+<![ %bibliography.attlist; [
+<!ATTLIST Bibliography
+               %status.attrib;
+               %common.attrib;
+               %bibliography.role.attrib;
+               %local.bibliography.attrib;
+>
+<!--end of bibliography.attlist-->]]>
+<!--end of bibliography.module-->]]>
+
+<!ENTITY % bibliodiv.module "INCLUDE">
+<![ %bibliodiv.module; [
+<!ENTITY % local.bibliodiv.attrib "">
+<!ENTITY % bibliodiv.role.attrib "%role.attrib;">
+
+<!ENTITY % bibliodiv.element "INCLUDE">
+<![ %bibliodiv.element; [
+<!ELEMENT BiblioDiv - O ((%sect.title.content;)?, (%component.mix;)*,
+               (BiblioEntry|BiblioMixed)+)>
+<!--end of bibliodiv.element-->]]>
+
+<!ENTITY % bibliodiv.attlist "INCLUDE">
+<![ %bibliodiv.attlist; [
+<!ATTLIST BiblioDiv
+               %status.attrib;
+               %common.attrib;
+               %bibliodiv.role.attrib;
+               %local.bibliodiv.attrib;
+>
+<!--end of bibliodiv.attlist-->]]>
+<!--end of bibliodiv.module-->]]>
+<!--end of bibliography.content.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Glossary ............................................................. -->
+
+<!ENTITY % glossary.content.module "INCLUDE">
+<![ %glossary.content.module; [
+<!ENTITY % glossary.module "INCLUDE">
+<![ %glossary.module; [
+<!ENTITY % local.glossary.attrib "">
+<!ENTITY % glossary.role.attrib "%role.attrib;">
+
+<!ENTITY % glossary.element "INCLUDE">
+<![ %glossary.element; [
+<!ELEMENT Glossary - O (GlossaryInfo?,
+               (%bookcomponent.title.content;)?, (%component.mix;)*,
+               (GlossDiv+ | GlossEntry+), Bibliography?)>
+<!--end of glossary.element-->]]>
+
+<!ENTITY % glossary.attlist "INCLUDE">
+<![ %glossary.attlist; [
+<!ATTLIST Glossary
+               %status.attrib;
+               %common.attrib;
+               %glossary.role.attrib;
+               %local.glossary.attrib;
+>
+<!--end of glossary.attlist-->]]>
+<!--end of glossary.module-->]]>
+
+<!ENTITY % glossdiv.module "INCLUDE">
+<![ %glossdiv.module; [
+<!ENTITY % local.glossdiv.attrib "">
+<!ENTITY % glossdiv.role.attrib "%role.attrib;">
+
+<!ENTITY % glossdiv.element "INCLUDE">
+<![ %glossdiv.element; [
+<!ELEMENT GlossDiv - O ((%sect.title.content;), (%component.mix;)*,
+               GlossEntry+)>
+<!--end of glossdiv.element-->]]>
+
+<!ENTITY % glossdiv.attlist "INCLUDE">
+<![ %glossdiv.attlist; [
+<!ATTLIST GlossDiv
+               %status.attrib;
+               %common.attrib;
+               %glossdiv.role.attrib;
+               %local.glossdiv.attrib;
+>
+<!--end of glossdiv.attlist-->]]>
+<!--end of glossdiv.module-->]]>
+<!--end of glossary.content.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Index and SetIndex ................................................... -->
+
+<!ENTITY % index.content.module "INCLUDE">
+<![ %index.content.module; [
+<!ENTITY % index.module "INCLUDE">
+<![ %index.module; [
+<!ENTITY % local.index.attrib "">
+<!ENTITY % index.role.attrib "%role.attrib;">
+
+<!ENTITY % index.element "INCLUDE">
+<![ %index.element; [
+<!ELEMENT Index - O (IndexInfo?, (%bookcomponent.title.content;)?,
+               (%component.mix;)*, (IndexDiv* | IndexEntry*))
+               %ndxterm.exclusion;>
+<!--end of index.element-->]]>
+
+<!ENTITY % index.attlist "INCLUDE">
+<![ %index.attlist; [
+<!ATTLIST Index
+               %common.attrib;
+               %index.role.attrib;
+               %local.index.attrib;
+>
+<!--end of index.attlist-->]]>
+<!--end of index.module-->]]>
+
+<!ENTITY % setindex.module "INCLUDE">
+<![ %setindex.module; [
+<!ENTITY % local.setindex.attrib "">
+<!ENTITY % setindex.role.attrib "%role.attrib;">
+
+<!ENTITY % setindex.element "INCLUDE">
+<![ %setindex.element; [
+<!ELEMENT SetIndex - O (SetIndexInfo?, (%bookcomponent.title.content;)?,
+               (%component.mix;)*, (IndexDiv* | IndexEntry*))
+               %ndxterm.exclusion;>
+<!--end of setindex.element-->]]>
+
+<!ENTITY % setindex.attlist "INCLUDE">
+<![ %setindex.attlist; [
+<!ATTLIST SetIndex
+               %common.attrib;
+               %setindex.role.attrib;
+               %local.setindex.attrib;
+>
+<!--end of setindex.attlist-->]]>
+<!--end of setindex.module-->]]>
+
+<!ENTITY % indexdiv.module "INCLUDE">
+<![ %indexdiv.module; [
+
+<!-- SegmentedList in this content is useful for marking up permuted
+     indices. -->
+
+<!ENTITY % local.indexdiv.attrib "">
+<!ENTITY % indexdiv.role.attrib "%role.attrib;">
+
+<!ENTITY % indexdiv.element "INCLUDE">
+<![ %indexdiv.element; [
+<!ELEMENT IndexDiv - O ((%sect.title.content;)?, ((%indexdivcomponent.mix;)*,
+               (IndexEntry+ | SegmentedList)))>
+<!--end of indexdiv.element-->]]>
+
+<!ENTITY % indexdiv.attlist "INCLUDE">
+<![ %indexdiv.attlist; [
+<!ATTLIST IndexDiv
+               %common.attrib;
+               %indexdiv.role.attrib;
+               %local.indexdiv.attrib;
+>
+<!--end of indexdiv.attlist-->]]>
+<!--end of indexdiv.module-->]]>
+
+<!ENTITY % indexentry.module "INCLUDE">
+<![ %indexentry.module; [
+<!-- Index entries appear in the index, not the text. -->
+
+<!ENTITY % local.indexentry.attrib "">
+<!ENTITY % indexentry.role.attrib "%role.attrib;">
+
+<!ENTITY % indexentry.element "INCLUDE">
+<![ %indexentry.element; [
+<!ELEMENT IndexEntry - O (PrimaryIE, (SeeIE|SeeAlsoIE)*,
+               (SecondaryIE, (SeeIE|SeeAlsoIE|TertiaryIE)*)*)>
+<!--end of indexentry.element-->]]>
+
+<!ENTITY % indexentry.attlist "INCLUDE">
+<![ %indexentry.attlist; [
+<!ATTLIST IndexEntry
+               %common.attrib;
+               %indexentry.role.attrib;
+               %local.indexentry.attrib;
+>
+<!--end of indexentry.attlist-->]]>
+<!--end of indexentry.module-->]]>
+
+<!ENTITY % primsecterie.module "INCLUDE">
+<![ %primsecterie.module; [
+<!ENTITY % local.primsecterie.attrib "">
+<!ENTITY % primsecterie.role.attrib "%role.attrib;">
+
+<!ENTITY % primsecterie.elements "INCLUDE">
+<![ %primsecterie.elements; [
+<!ELEMENT (PrimaryIE | SecondaryIE | TertiaryIE) - O ((%ndxterm.char.mix;)+)>
+<!--end of primsecterie.elements-->]]>
+
+<!ENTITY % primsecterie.attlists "INCLUDE">
+<![ %primsecterie.attlists; [
+<!ATTLIST (PrimaryIE | SecondaryIE | TertiaryIE)
+               %linkends.attrib; --to IndexTerms that these entries represent--
+               %common.attrib;
+               %primsecterie.role.attrib;
+               %local.primsecterie.attrib;
+>
+<!--end of primsecterie.attlists-->]]>
+<!--end of primsecterie.module-->]]>
+       
+<!ENTITY % seeie.module "INCLUDE">
+<![ %seeie.module; [
+<!ENTITY % local.seeie.attrib "">
+<!ENTITY % seeie.role.attrib "%role.attrib;">
+
+<!ENTITY % seeie.element "INCLUDE">
+<![ %seeie.element; [
+<!ELEMENT SeeIE - O ((%ndxterm.char.mix;)+)>
+<!--end of seeie.element-->]]>
+
+<!ENTITY % seeie.attlist "INCLUDE">
+<![ %seeie.attlist; [
+<!ATTLIST SeeIE
+               %linkend.attrib; --to IndexEntry to look up--
+               %common.attrib;
+               %seeie.role.attrib;
+               %local.seeie.attrib;
+>
+<!--end of seeie.attlist-->]]>
+<!--end of seeie.module-->]]>
+
+<!ENTITY % seealsoie.module "INCLUDE">
+<![ %seealsoie.module; [
+<!ENTITY % local.seealsoie.attrib "">
+<!ENTITY % seealsoie.role.attrib "%role.attrib;">
+
+<!ENTITY % seealsoie.element "INCLUDE">
+<![ %seealsoie.element; [
+<!ELEMENT SeeAlsoIE - O ((%ndxterm.char.mix;)+)>
+<!--end of seealsoie.element-->]]>
+
+<!ENTITY % seealsoie.attlist "INCLUDE">
+<![ %seealsoie.attlist; [
+<!ATTLIST SeeAlsoIE
+               %linkends.attrib; --to related IndexEntries--
+               %common.attrib;
+               %seealsoie.role.attrib;
+               %local.seealsoie.attrib;
+>
+<!--end of seealsoie.attlist-->]]>
+<!--end of seealsoie.module-->]]>
+<!--end of index.content.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- RefEntry ............................................................. -->
+
+<!ENTITY % refentry.content.module "INCLUDE">
+<![ %refentry.content.module; [
+<!ENTITY % refentry.module "INCLUDE">
+<![ %refentry.module; [
+<!ENTITY % local.refentry.attrib "">
+<!ENTITY % refentry.role.attrib "%role.attrib;">
+
+<!ENTITY % refentry.element "INCLUDE">
+<![ %refentry.element; [
+<!ELEMENT RefEntry - O (RefEntryInfo?, RefMeta?, (Remark|%link.char.class;)*,
+               RefNameDiv, RefSynopsisDiv?, RefSect1+) %ubiq.inclusion;>
+<!--end of refentry.element-->]]>
+
+<!ENTITY % refentry.attlist "INCLUDE">
+<![ %refentry.attlist; [
+<!ATTLIST RefEntry
+               %status.attrib;
+               %common.attrib;
+               %refentry.role.attrib;
+               %local.refentry.attrib;
+>
+<!--end of refentry.attlist-->]]>
+<!--end of refentry.module-->]]>
+
+<!ENTITY % refmeta.module "INCLUDE">
+<![ %refmeta.module; [
+<!ENTITY % local.refmeta.attrib "">
+<!ENTITY % refmeta.role.attrib "%role.attrib;">
+
+<!ENTITY % refmeta.element "INCLUDE">
+<![ %refmeta.element; [
+<!ELEMENT RefMeta - - (RefEntryTitle, ManVolNum?, RefMiscInfo*)
+               %beginpage.exclusion;>
+<!--end of refmeta.element-->]]>
+
+<!ENTITY % refmeta.attlist "INCLUDE">
+<![ %refmeta.attlist; [
+<!ATTLIST RefMeta
+               %common.attrib;
+               %refmeta.role.attrib;
+               %local.refmeta.attrib;
+>
+<!--end of refmeta.attlist-->]]>
+<!--end of refmeta.module-->]]>
+
+<!ENTITY % refmiscinfo.module "INCLUDE">
+<![ %refmiscinfo.module; [
+<!ENTITY % local.refmiscinfo.attrib "">
+<!ENTITY % refmiscinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % refmiscinfo.element "INCLUDE">
+<![ %refmiscinfo.element; [
+<!ELEMENT RefMiscInfo - - ((%docinfo.char.mix;)+)>
+<!--end of refmiscinfo.element-->]]>
+
+<!ENTITY % refmiscinfo.attlist "INCLUDE">
+<![ %refmiscinfo.attlist; [
+<!ATTLIST RefMiscInfo
+               --
+               Class: Freely assignable parameter; no default
+               --
+               Class           CDATA           #IMPLIED
+               %common.attrib;
+               %refmiscinfo.role.attrib;
+               %local.refmiscinfo.attrib;
+>
+<!--end of refmiscinfo.attlist-->]]>
+<!--end of refmiscinfo.module-->]]>
+
+<!ENTITY % refnamediv.module "INCLUDE">
+<![ %refnamediv.module; [
+<!ENTITY % local.refnamediv.attrib "">
+<!ENTITY % refnamediv.role.attrib "%role.attrib;">
+
+<!ENTITY % refnamediv.element "INCLUDE">
+<![ %refnamediv.element; [
+<!ELEMENT RefNameDiv - O (RefDescriptor?, RefName+, RefPurpose, RefClass*,
+               (Remark|%link.char.class;)*)>
+<!--end of refnamediv.element-->]]>
+
+<!ENTITY % refnamediv.attlist "INCLUDE">
+<![ %refnamediv.attlist; [
+<!ATTLIST RefNameDiv
+               %common.attrib;
+               %refnamediv.role.attrib;
+               %local.refnamediv.attrib;
+>
+<!--end of refnamediv.attlist-->]]>
+<!--end of refnamediv.module-->]]>
+       
+<!ENTITY % refdescriptor.module "INCLUDE">
+<![ %refdescriptor.module; [
+<!ENTITY % local.refdescriptor.attrib "">
+<!ENTITY % refdescriptor.role.attrib "%role.attrib;">
+
+<!ENTITY % refdescriptor.element "INCLUDE">
+<![ %refdescriptor.element; [
+<!ELEMENT RefDescriptor - O ((%refname.char.mix;)+)>
+<!--end of refdescriptor.element-->]]>
+
+<!ENTITY % refdescriptor.attlist "INCLUDE">
+<![ %refdescriptor.attlist; [
+<!ATTLIST RefDescriptor
+               %common.attrib;
+               %refdescriptor.role.attrib;
+               %local.refdescriptor.attrib;
+>
+<!--end of refdescriptor.attlist-->]]>
+<!--end of refdescriptor.module-->]]>
+
+<!ENTITY % refname.module "INCLUDE">
+<![ %refname.module; [
+<!ENTITY % local.refname.attrib "">
+<!ENTITY % refname.role.attrib "%role.attrib;">
+
+<!ENTITY % refname.element "INCLUDE">
+<![ %refname.element; [
+<!ELEMENT RefName - O ((%refname.char.mix;)+)>
+<!--end of refname.element-->]]>
+
+<!ENTITY % refname.attlist "INCLUDE">
+<![ %refname.attlist; [
+<!ATTLIST RefName
+               %common.attrib;
+               %refname.role.attrib;
+               %local.refname.attrib;
+>
+<!--end of refname.attlist-->]]>
+<!--end of refname.module-->]]>
+
+<!ENTITY % refpurpose.module "INCLUDE">
+<![ %refpurpose.module; [
+<!ENTITY % local.refpurpose.attrib "">
+<!ENTITY % refpurpose.role.attrib "%role.attrib;">
+
+<!ENTITY % refpurpose.element "INCLUDE">
+<![ %refpurpose.element; [
+<!ELEMENT RefPurpose - O ((%refinline.char.mix;)+)>
+<!--end of refpurpose.element-->]]>
+
+<!ENTITY % refpurpose.attlist "INCLUDE">
+<![ %refpurpose.attlist; [
+<!ATTLIST RefPurpose
+               %common.attrib;
+               %refpurpose.role.attrib;
+               %local.refpurpose.attrib;
+>
+<!--end of refpurpose.attlist-->]]>
+<!--end of refpurpose.module-->]]>
+
+<!ENTITY % refclass.module "INCLUDE">
+<![ %refclass.module; [
+<!ENTITY % local.refclass.attrib "">
+<!ENTITY % refclass.role.attrib "%role.attrib;">
+
+<!ENTITY % refclass.element "INCLUDE">
+<![ %refclass.element; [
+<!ELEMENT RefClass - O ((%refclass.char.mix;)+)>
+<!--end of refclass.element-->]]>
+
+<!ENTITY % refclass.attlist "INCLUDE">
+<![ %refclass.attlist; [
+<!ATTLIST RefClass
+               %common.attrib;
+               %refclass.role.attrib;
+               %local.refclass.attrib;
+>
+<!--end of refclass.attlist-->]]>
+<!--end of refclass.module-->]]>
+
+<!ENTITY % refsynopsisdiv.module "INCLUDE">
+<![ %refsynopsisdiv.module; [
+<!ENTITY % local.refsynopsisdiv.attrib "">
+<!ENTITY % refsynopsisdiv.role.attrib "%role.attrib;">
+
+<!ENTITY % refsynopsisdiv.element "INCLUDE">
+<![ %refsynopsisdiv.element; [
+<!ELEMENT RefSynopsisDiv - O (RefSynopsisDivInfo?, (%refsect.title.content;)?,
+               (((%refcomponent.mix;)+, RefSect2*) | (RefSect2+)))>
+<!--end of refsynopsisdiv.element-->]]>
+
+<!ENTITY % refsynopsisdiv.attlist "INCLUDE">
+<![ %refsynopsisdiv.attlist; [
+<!ATTLIST RefSynopsisDiv
+               %common.attrib;
+               %refsynopsisdiv.role.attrib;
+               %local.refsynopsisdiv.attrib;
+>
+<!--end of refsynopsisdiv.attlist-->]]>
+<!--end of refsynopsisdiv.module-->]]>
+
+<!ENTITY % refsect1.module "INCLUDE">
+<![ %refsect1.module; [
+<!ENTITY % local.refsect1.attrib "">
+<!ENTITY % refsect1.role.attrib "%role.attrib;">
+
+<!ENTITY % refsect1.element "INCLUDE">
+<![ %refsect1.element; [
+<!ELEMENT RefSect1 - O (RefSect1Info?, (%refsect.title.content;),
+               (((%refcomponent.mix;)+, RefSect2*) | RefSect2+))>
+<!--end of refsect1.element-->]]>
+
+<!ENTITY % refsect1.attlist "INCLUDE">
+<![ %refsect1.attlist; [
+<!ATTLIST RefSect1
+               %status.attrib;
+               %common.attrib;
+               %refsect1.role.attrib;
+               %local.refsect1.attrib;
+>
+<!--end of refsect1.attlist-->]]>
+<!--end of refsect1.module-->]]>
+
+<!ENTITY % refsect2.module "INCLUDE">
+<![ %refsect2.module; [
+<!ENTITY % local.refsect2.attrib "">
+<!ENTITY % refsect2.role.attrib "%role.attrib;">
+
+<!ENTITY % refsect2.element "INCLUDE">
+<![ %refsect2.element; [
+<!ELEMENT RefSect2 - O (RefSect2Info?, (%refsect.title.content;),
+       (((%refcomponent.mix;)+, RefSect3*) | RefSect3+))>
+<!--end of refsect2.element-->]]>
+
+<!ENTITY % refsect2.attlist "INCLUDE">
+<![ %refsect2.attlist; [
+<!ATTLIST RefSect2
+               %status.attrib;
+               %common.attrib;
+               %refsect2.role.attrib;
+               %local.refsect2.attrib;
+>
+<!--end of refsect2.attlist-->]]>
+<!--end of refsect2.module-->]]>
+
+<!ENTITY % refsect3.module "INCLUDE">
+<![ %refsect3.module; [
+<!ENTITY % local.refsect3.attrib "">
+<!ENTITY % refsect3.role.attrib "%role.attrib;">
+
+<!ENTITY % refsect3.element "INCLUDE">
+<![ %refsect3.element; [
+<!ELEMENT RefSect3 - O (RefSect3Info?, (%refsect.title.content;), 
+       (%refcomponent.mix;)+)>
+<!--end of refsect3.element-->]]>
+
+<!ENTITY % refsect3.attlist "INCLUDE">
+<![ %refsect3.attlist; [
+<!ATTLIST RefSect3
+               %status.attrib;
+               %common.attrib;
+               %refsect3.role.attrib;
+               %local.refsect3.attrib;
+>
+<!--end of refsect3.attlist-->]]>
+<!--end of refsect3.module-->]]>
+<!--end of refentry.content.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Article .............................................................. -->
+
+<!ENTITY % article.module "INCLUDE">
+<![ %article.module; [
+<!-- An Article is a chapter-level, stand-alone document that is often,
+     but need not be, collected into a Book. -->
+
+<!ENTITY % local.article.attrib "">
+<!ENTITY % article.role.attrib "%role.attrib;">
+
+<!ENTITY % article.element "INCLUDE">
+<![ %article.element; [
+<!ELEMENT Article - O ((%div.title.content;)?, ArticleInfo?, ToCchap?, LoT*,
+                      (%bookcomponent.content;),
+                      ((%nav.class;) | (%appendix.class;) | Ackno)*)
+                      %ubiq.inclusion;>
+<!--end of article.element-->]]>
+
+<!ENTITY % article.attlist "INCLUDE">
+<![ %article.attlist; [
+<!ATTLIST Article
+               --
+               Class: Indicates the type of a particular article;
+               all articles have the same structure and general purpose.
+               No default.
+               --
+               Class           (JournalArticle
+                               |ProductSheet
+                               |WhitePaper
+                               |TechReport
+                               |Specification
+                               |FAQ)           #IMPLIED
+               --
+               ParentBook: ID of the enclosing Book
+               --
+               ParentBook      IDREF           #IMPLIED
+               %status.attrib;
+               %common.attrib;
+               %article.role.attrib;
+               %local.article.attrib;
+>
+<!--end of article.attlist-->]]>
+<!--end of article.module-->]]>
+
+<!-- End of DocBook document hierarchy module V4.1 ........................ -->
+<!-- ...................................................................... -->
diff --git a/docs/docbook/dbsgml/dbnotn.mod b/docs/docbook/dbsgml/dbnotn.mod
new file mode 100755 (executable)
index 0000000..b980630
--- /dev/null
@@ -0,0 +1,97 @@
+<!-- ...................................................................... -->
+<!-- DocBook notations module V4.1 ........................................ -->
+<!-- File dbnotn.mod ...................................................... -->
+
+<!-- Copyright 1992-2000 HaL Computer Systems, Inc.,
+     O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+     Corporation, and the Organization for the Advancement of
+     Structured Information Standards (OASIS).
+
+     $Id: dbnotn.mod,v 1.3 2001/12/06 07:37:55 jerry Exp $
+
+     Permission to use, copy, modify and distribute the DocBook DTD and
+     its accompanying documentation for any purpose and without fee is
+     hereby granted in perpetuity, provided that the above copyright
+     notice and this paragraph appear in all copies.  The copyright
+     holders make no representation about the suitability of the DTD for
+     any purpose.  It is provided "as is" without expressed or implied
+     warranty.
+
+     If you modify the DocBook DTD in any way, except for declaring and
+     referencing additional sets of general entities and declaring
+     additional notations, label your DTD as a variant of DocBook.  See
+     the maintenance documentation for more information.
+
+     Please direct all questions, bug reports, or suggestions for
+     changes to the docbook@lists.oasis-open.org mailing list. For more
+     information, see http://www.oasis-open.org/docbook/.
+-->
+
+<!-- ...................................................................... -->
+
+<!-- This module contains the entity declarations for the standard
+     notations used by DocBook.
+
+     In DTD driver files referring to this module, please use an entity
+     declaration that uses the public identifier shown below:
+
+     <!ENTITY % dbnotn PUBLIC
+     "-//OASIS//ENTITIES DocBook Notations V4.1//EN">
+     %dbnotn;
+
+     See the documentation for detailed information on the parameter
+     entity and module scheme used in DocBook, customizing DocBook and
+     planning for interchange, and changes made since the last release
+     of DocBook.
+-->
+
+<!ENTITY % local.notation.class "">
+<!ENTITY % notation.class
+               "BMP| CGM-CHAR | CGM-BINARY | CGM-CLEAR | DITROFF | DVI
+               | EPS | EQN | FAX | GIF | GIF87a | GIF89a 
+               | JPG | JPEG | IGES | PCX
+               | PIC | PNG | PS | SGML | TBL | TEX | TIFF | WMF | WPG
+               | linespecific
+               %local.notation.class;">
+
+<!NOTATION BMP         PUBLIC
+"+//ISBN 0-7923-9432-1::Graphic Notation//NOTATION Microsoft Windows bitmap//EN">
+<!NOTATION CGM-CHAR    PUBLIC "ISO 8632/2//NOTATION Character encoding//EN">
+<!NOTATION CGM-BINARY  PUBLIC "ISO 8632/3//NOTATION Binary encoding//EN">
+<!NOTATION CGM-CLEAR   PUBLIC "ISO 8632/4//NOTATION Clear text encoding//EN">
+<!NOTATION DITROFF     SYSTEM "DITROFF">
+<!NOTATION DVI         SYSTEM "DVI">
+<!NOTATION EPS         PUBLIC 
+"+//ISBN 0-201-18127-4::Adobe//NOTATION PostScript Language Ref. Manual//EN">
+<!-- EQN was SYSTEM "-//AT&T//NOTATION EQN-1//EN" -->
+<!NOTATION EQN         SYSTEM>
+<!NOTATION FAX         PUBLIC 
+"-//USA-DOD//NOTATION CCITT Group 4 Facsimile Type 1 Untiled Raster//EN">
+<!NOTATION GIF         SYSTEM "GIF">
+<!NOTATION GIF87a               PUBLIC
+"-//CompuServe//NOTATION Graphics Interchange Format 87a//EN">
+
+<!NOTATION GIF89a               PUBLIC
+"-//CompuServe//NOTATION Graphics Interchange Format 89a//EN">
+<!NOTATION JPG         SYSTEM "JPG">
+<!NOTATION JPEG                SYSTEM "JPG">
+<!NOTATION IGES                PUBLIC 
+"-//USA-DOD//NOTATION (ASME/ANSI Y14.26M-1987) Initial Graphics Exchange Specification//EN">
+<!NOTATION PCX         PUBLIC 
+"+//ISBN 0-7923-9432-1::Graphic Notation//NOTATION ZSoft PCX bitmap//EN">
+<!-- PIC was SYSTEM "-//AT&T//NOTATION EQN-1//EN" -->
+<!NOTATION PIC         SYSTEM>
+<!NOTATION PNG          SYSTEM "http://www.w3.org/TR/REC-png">
+<!NOTATION PS          SYSTEM "PS">
+<!NOTATION SGML                PUBLIC 
+"ISO 8879:1986//NOTATION Standard Generalized Markup Language//EN">
+<!-- TBL was SYSTEM "-//AT&T//NOTATION EQN-1//EN" -->
+<!NOTATION TBL         SYSTEM>
+<!NOTATION TEX         PUBLIC 
+"+//ISBN 0-201-13448-9::Knuth//NOTATION The TeXbook//EN">
+<!NOTATION TIFF                SYSTEM "TIFF">
+<!NOTATION WMF         PUBLIC 
+"+//ISBN 0-7923-9432-1::Graphic Notation//NOTATION Microsoft Windows Metafile//EN">
+<!NOTATION WPG         SYSTEM "WPG" --WordPerfect Graphic format-->
+<!NOTATION linespecific        SYSTEM 
+"line ends and leading white space must be preserved in output">
diff --git a/docs/docbook/dbsgml/dbpool.mod b/docs/docbook/dbsgml/dbpool.mod
new file mode 100755 (executable)
index 0000000..3867d07
--- /dev/null
@@ -0,0 +1,7396 @@
+<!-- ...................................................................... -->
+<!-- DocBook information pool module V4.1 ................................. -->
+<!-- File dbpool.mod ...................................................... -->
+
+<!-- Copyright 1992-2000 HaL Computer Systems, Inc.,
+     O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+     Corporation, and the Organization for the Advancement of
+     Structured Information Standards (OASIS).
+
+     $Id: dbpool.mod,v 1.3 2001/12/06 07:37:55 jerry Exp $
+
+     Permission to use, copy, modify and distribute the DocBook DTD and
+     its accompanying documentation for any purpose and without fee is
+     hereby granted in perpetuity, provided that the above copyright
+     notice and this paragraph appear in all copies.  The copyright
+     holders make no representation about the suitability of the DTD for
+     any purpose.  It is provided "as is" without expressed or implied
+     warranty.
+
+     If you modify the DocBook DTD in any way, except for declaring and
+     referencing additional sets of general entities and declaring
+     additional notations, label your DTD as a variant of DocBook.  See
+     the maintenance documentation for more information.
+
+     Please direct all questions, bug reports, or suggestions for
+     changes to the docbook@lists.oasis-open.org mailing list. For more
+     information, see http://www.oasis-open.org/docbook/.
+-->
+
+<!-- ...................................................................... -->
+
+<!-- This module contains the definitions for the objects, inline
+     elements, and so on that are available to be used as the main
+     content of DocBook documents.  Some elements are useful for general
+     publishing, and others are useful specifically for computer
+     documentation.
+
+     This module has the following dependencies on other modules:
+
+     o It assumes that a %notation.class; entity is defined by the
+       driver file or other high-level module.  This entity is
+       referenced in the NOTATION attributes for the graphic-related and
+       ModeSpec elements.
+
+     o It assumes that an appropriately parameterized table module is
+       available for use with the table-related elements.
+
+     In DTD driver files referring to this module, please use an entity
+     declaration that uses the public identifier shown below:
+
+     <!ENTITY % dbpool PUBLIC
+     "-//OASIS//ELEMENTS DocBook Information Pool V4.1//EN">
+     %dbpool;
+
+     See the documentation for detailed information on the parameter
+     entity and module scheme used in DocBook, customizing DocBook and
+     planning for interchange, and changes made since the last release
+     of DocBook.
+-->
+
+<!-- ...................................................................... -->
+<!-- General-purpose semantics entities ................................... -->
+
+<!ENTITY % yesorno.attvals     "NUMBER">
+
+<![IGNORE[
+<!ENTITY % yes.attval          "1"> <!-- never actually used -->
+]]>
+
+<!ENTITY % no.attval           "0">
+
+<!-- ...................................................................... -->
+<!-- Entities for module inclusions ....................................... -->
+
+<!ENTITY % dbpool.redecl.module "IGNORE">
+
+<!-- ...................................................................... -->
+<!-- Entities for element classes and mixtures ............................ -->
+
+<!-- Object-level classes ................................................. -->
+
+<!ENTITY % local.list.class "">
+<!ENTITY % list.class
+               "CalloutList|GlossList|ItemizedList|OrderedList|SegmentedList
+               |SimpleList|VariableList %local.list.class;">
+
+<!ENTITY % local.admon.class "">
+<!ENTITY % admon.class
+               "Caution|Important|Note|Tip|Warning %local.admon.class;">
+
+<!ENTITY % local.linespecific.class "">
+<!ENTITY % linespecific.class
+               "LiteralLayout|ProgramListing|ProgramListingCO|Screen
+               |ScreenCO|ScreenShot %local.linespecific.class;">
+
+<!ENTITY % local.method.synop.class "">
+<!ENTITY % method.synop.class
+               "ConstructorSynopsis
+                 |DestructorSynopsis
+                 |MethodSynopsis %local.method.synop.class;">
+
+<!ENTITY % local.synop.class "">
+<!ENTITY % synop.class
+               "Synopsis|CmdSynopsis|FuncSynopsis
+                 |ClassSynopsis|FieldSynopsis
+                 |%method.synop.class; %local.synop.class;">
+
+<!ENTITY % local.para.class "">
+<!ENTITY % para.class
+               "FormalPara|Para|SimPara %local.para.class;">
+
+<!ENTITY % local.informal.class "">
+<!ENTITY % informal.class
+               "Address|BlockQuote
+               |Graphic|GraphicCO|MediaObject|MediaObjectCO
+               |InformalEquation
+               |InformalExample
+               |InformalFigure
+               |InformalTable %local.informal.class;">
+
+<!ENTITY % local.formal.class "">
+<!ENTITY % formal.class
+               "Equation|Example|Figure|Table %local.formal.class;">
+
+<!-- The DocBook TC may produce an official EBNF module for DocBook. -->
+<!-- This PE provides the hook by which it can be inserted into the DTD. -->
+<!ENTITY % ebnf.block.hook "">
+
+<!ENTITY % local.compound.class "">
+<!ENTITY % compound.class
+               "MsgSet|Procedure|Sidebar|QandASet
+                 %ebnf.block.hook;
+                 %local.compound.class;">
+
+<!ENTITY % local.genobj.class "">
+<!ENTITY % genobj.class
+               "Anchor|BridgeHead|Remark|Highlights
+               %local.genobj.class;">
+
+<!ENTITY % local.descobj.class "">
+<!ENTITY % descobj.class
+               "Abstract|AuthorBlurb|Epigraph
+               %local.descobj.class;">
+
+<!-- Character-level classes .............................................. -->
+
+<!ENTITY % local.ndxterm.class "">
+<!ENTITY % ndxterm.class
+               "IndexTerm %local.ndxterm.class;">
+
+<!ENTITY % local.xref.char.class "">
+<!ENTITY % xref.char.class
+               "FootnoteRef|XRef %local.xref.char.class;">
+
+<!ENTITY % local.gen.char.class "">
+<!ENTITY % gen.char.class
+               "Abbrev|Acronym|Citation|CiteRefEntry|CiteTitle|Emphasis
+               |FirstTerm|ForeignPhrase|GlossTerm|Footnote|Phrase
+               |Quote|Trademark|WordAsWord %local.gen.char.class;">
+
+<!ENTITY % local.link.char.class "">
+<!ENTITY % link.char.class
+               "Link|OLink|ULink %local.link.char.class;">
+
+<!-- The DocBook TC may produce an official EBNF module for DocBook. -->
+<!-- This PE provides the hook by which it can be inserted into the DTD. -->
+<!ENTITY % ebnf.inline.hook "">
+
+<!ENTITY % local.tech.char.class "">
+<!ENTITY % tech.char.class
+               "Action|Application
+                |ClassName|MethodName|InterfaceName|ExceptionName
+                |OOClass|OOInterface|OOException
+                |Command|ComputerOutput
+               |Database|Email|EnVar|ErrorCode|ErrorName|ErrorType|Filename
+               |Function|GUIButton|GUIIcon|GUILabel|GUIMenu|GUIMenuItem
+               |GUISubmenu|Hardware|Interface|KeyCap
+               |KeyCode|KeyCombo|KeySym|Literal|Constant|Markup|MediaLabel
+               |MenuChoice|MouseButton|Option|Optional|Parameter
+               |Prompt|Property|Replaceable|ReturnValue|SGMLTag|StructField
+               |StructName|Symbol|SystemItem|Token|Type|UserInput|VarName
+                %ebnf.inline.hook;
+               %local.tech.char.class;">
+
+<!ENTITY % local.base.char.class "">
+<!ENTITY % base.char.class
+               "Anchor %local.base.char.class;">
+
+<!ENTITY % local.docinfo.char.class "">
+<!ENTITY % docinfo.char.class
+               "Author|AuthorInitials|CorpAuthor|ModeSpec|OtherCredit
+               |ProductName|ProductNumber|RevHistory
+               %local.docinfo.char.class;">
+
+<!ENTITY % local.other.char.class "">
+<!ENTITY % other.char.class
+               "Remark|Subscript|Superscript %local.other.char.class;">
+
+<!ENTITY % local.inlineobj.char.class "">
+<!ENTITY % inlineobj.char.class
+               "InlineGraphic|InlineMediaObject|InlineEquation %local.inlineobj.char.class;">
+
+<!-- Redeclaration placeholder ............................................ -->
+
+<!-- For redeclaring entities that are declared after this point while
+     retaining their references to the entities that are declared before
+     this point -->
+
+<![ %dbpool.redecl.module; [
+%rdbpool;
+<!--end of dbpool.redecl.module-->]]>
+
+<!-- Object-level mixtures ................................................ -->
+
+<!--
+                      list admn line synp para infm form cmpd gen  desc
+Component mixture       X    X    X    X    X    X    X    X    X    X
+Sidebar mixture         X    X    X    X    X    X    X    a    X
+Footnote mixture        X         X    X    X    X
+Example mixture         X         X    X    X    X
+Highlights mixture      X    X              X
+Paragraph mixture       X         X    X         X
+Admonition mixture      X         X    X    X    X    X    b    c
+Figure mixture                    X    X         X
+Table entry mixture     X    X    X         X    d
+Glossary def mixture    X         X    X    X    X         e
+Legal notice mixture    X    X    X         X    f
+
+a. Just Procedure; not Sidebar itself or MsgSet.
+b. No MsgSet.
+c. No Highlights.
+d. Just Graphic; no other informal objects.
+e. No Anchor, BridgeHead, or Highlights.
+f. Just BlockQuote; no other informal objects.
+-->
+
+<!ENTITY % local.component.mix "">
+<!ENTITY % component.mix
+               "%list.class;           |%admon.class;
+               |%linespecific.class;   |%synop.class;
+               |%para.class;           |%informal.class;
+               |%formal.class;         |%compound.class;
+               |%genobj.class;         |%descobj.class;
+               |%ndxterm.class;
+               %local.component.mix;">
+
+<!ENTITY % local.sidebar.mix "">
+<!ENTITY % sidebar.mix
+               "%list.class;           |%admon.class;
+               |%linespecific.class;   |%synop.class;
+               |%para.class;           |%informal.class;
+               |%formal.class;         |Procedure
+               |%genobj.class;
+               |%ndxterm.class;
+               %local.sidebar.mix;">
+
+<!ENTITY % local.qandaset.mix "">
+<!ENTITY % qandaset.mix
+               "%list.class;           |%admon.class;
+               |%linespecific.class;   |%synop.class;
+               |%para.class;           |%informal.class;
+               |%formal.class;         |Procedure
+               |%genobj.class;
+               |%ndxterm.class;
+               %local.qandaset.mix;">
+
+<!ENTITY % local.revdescription.mix "">
+<!ENTITY % revdescription.mix
+               "%list.class;           |%admon.class;
+               |%linespecific.class;   |%synop.class;
+               |%para.class;           |%informal.class;
+               |%formal.class;         |Procedure
+               |%genobj.class;
+               |%ndxterm.class;
+               %local.revdescription.mix;">
+
+<!ENTITY % local.footnote.mix "">
+<!ENTITY % footnote.mix
+               "%list.class;
+               |%linespecific.class;   |%synop.class;
+               |%para.class;           |%informal.class;
+               %local.footnote.mix;">
+
+<!ENTITY % local.example.mix "">
+<!ENTITY % example.mix
+               "%list.class;
+               |%linespecific.class;   |%synop.class;
+               |%para.class;           |%informal.class;
+               |%ndxterm.class;
+               %local.example.mix;">
+
+<!ENTITY % local.highlights.mix "">
+<!ENTITY % highlights.mix
+               "%list.class;           |%admon.class;
+               |%para.class;
+               |%ndxterm.class;
+               %local.highlights.mix;">
+
+<!-- %formal.class; is explicitly excluded from many contexts in which
+     paragraphs are used -->
+
+<!ENTITY % local.para.mix "">
+<!ENTITY % para.mix
+               "%list.class;           |%admon.class;
+               |%linespecific.class;
+                                       |%informal.class;
+               |%formal.class;
+               %local.para.mix;">
+
+<!ENTITY % local.admon.mix "">
+<!ENTITY % admon.mix
+               "%list.class;
+               |%linespecific.class;   |%synop.class;
+               |%para.class;           |%informal.class;
+               |%formal.class;         |Procedure|Sidebar
+               |Anchor|BridgeHead|Remark
+               |%ndxterm.class;
+               %local.admon.mix;">
+
+<!ENTITY % local.figure.mix "">
+<!ENTITY % figure.mix
+               "%linespecific.class;   |%synop.class;
+                                       |%informal.class;
+               |%ndxterm.class;
+               %local.figure.mix;">
+
+<!ENTITY % local.tabentry.mix "">
+<!ENTITY % tabentry.mix
+               "%list.class;           |%admon.class;
+               |%linespecific.class;
+               |%para.class;           |Graphic|MediaObject
+               %local.tabentry.mix;">
+
+<!ENTITY % local.glossdef.mix "">
+<!ENTITY % glossdef.mix
+               "%list.class;
+               |%linespecific.class;   |%synop.class;
+               |%para.class;           |%informal.class;
+               |%formal.class;
+               |Remark
+               |%ndxterm.class;
+               %local.glossdef.mix;">
+
+<!ENTITY % local.legalnotice.mix "">
+<!ENTITY % legalnotice.mix
+               "%list.class;           |%admon.class;
+               |%linespecific.class;
+               |%para.class;           |BlockQuote
+               |%ndxterm.class;
+               %local.legalnotice.mix;">
+
+<!ENTITY % local.textobject.mix "">
+<!ENTITY % textobject.mix
+               "%list.class;           |%admon.class;
+               |%linespecific.class;
+               |%para.class;           |BlockQuote
+               %local.textobject.mix;">
+
+<!ENTITY % local.mediaobject.mix "">
+<!ENTITY % mediaobject.mix 
+               "VideoObject|AudioObject|ImageObject %local.mediaobject.mix">
+
+<!-- Character-level mixtures ............................................. -->
+
+<!ENTITY % local.ubiq.mix "">
+<!ENTITY % ubiq.mix
+               "%ndxterm.class;|BeginPage %local.ubiq.mix;">
+
+<!ENTITY % ubiq.exclusion "-(%ubiq.mix)">
+<!ENTITY % ubiq.inclusion "+(%ubiq.mix)">
+
+<!ENTITY % footnote.exclusion "-(Footnote|%formal.class;)">
+<!ENTITY % highlights.exclusion "-(%ubiq.mix;|%formal.class;)">
+<!ENTITY % admon.exclusion "-(%admon.class;)">
+<!ENTITY % formal.exclusion "-(%formal.class;)">
+<!ENTITY % acronym.exclusion "-(Acronym)">
+<!ENTITY % beginpage.exclusion "-(BeginPage)">
+<!ENTITY % ndxterm.exclusion "-(%ndxterm.class;)">
+<!ENTITY % blockquote.exclusion "-(Epigraph)">
+<!ENTITY % remark.exclusion "-(Remark|%ubiq.mix;)">
+<!ENTITY % glossterm.exclusion "-(GlossTerm)">
+<!ENTITY % links.exclusion "-(Link|OLink|ULink|XRef)">
+
+<!--
+                    #PCD xref word link cptr base dnfo othr inob (synop)
+para.char.mix         X    X    X    X    X    X    X    X    X
+title.char.mix        X    X    X    X    X    X    X    X    X
+ndxterm.char.mix      X    X    X    X    X    X    X    X    a
+cptr.char.mix         X              X    X    X         X    a
+smallcptr.char.mix    X                   b                   a
+word.char.mix         X         c    X         X         X    a
+docinfo.char.mix      X         d    X    b              X    a
+
+a. Just InlineGraphic; no InlineEquation.
+b. Just Replaceable; no other computer terms.
+c. Just Emphasis and Trademark; no other word elements.
+d. Just Acronym, Emphasis, and Trademark; no other word elements.
+-->
+
+<!-- The DocBook TC may produce an official forms module for DocBook. -->
+<!-- This PE provides the hook by which it can be inserted into the DTD. -->
+<!ENTITY % forminlines.hook "">
+
+<!ENTITY % local.para.char.mix "">
+<!ENTITY % para.char.mix
+               "#PCDATA
+               |%xref.char.class;      |%gen.char.class;
+               |%link.char.class;      |%tech.char.class;
+               |%base.char.class;      |%docinfo.char.class;
+               |%other.char.class;     |%inlineobj.char.class;
+               |%synop.class;
+               |%ndxterm.class;
+                %forminlines.hook;
+               %local.para.char.mix;">
+
+<!ENTITY % local.title.char.mix "">
+<!ENTITY % title.char.mix
+               "#PCDATA
+               |%xref.char.class;      |%gen.char.class;
+               |%link.char.class;      |%tech.char.class;
+               |%base.char.class;      |%docinfo.char.class;
+               |%other.char.class;     |%inlineobj.char.class;
+               |%ndxterm.class;
+               %local.title.char.mix;">
+
+<!ENTITY % local.ndxterm.char.mix "">
+<!ENTITY % ndxterm.char.mix
+               "#PCDATA
+               |%xref.char.class;      |%gen.char.class;
+               |%link.char.class;      |%tech.char.class;
+               |%base.char.class;      |%docinfo.char.class;
+               |%other.char.class;     |InlineGraphic|InlineMediaObject
+               %local.ndxterm.char.mix;">
+
+<!ENTITY % local.cptr.char.mix "">
+<!ENTITY % cptr.char.mix
+               "#PCDATA
+               |%link.char.class;      |%tech.char.class;
+               |%base.char.class;
+               |%other.char.class;     |InlineGraphic|InlineMediaObject
+               |%ndxterm.class;
+               %local.cptr.char.mix;">
+
+<!ENTITY % local.smallcptr.char.mix "">
+<!ENTITY % smallcptr.char.mix
+               "#PCDATA
+                                       |Replaceable
+                                       |InlineGraphic|InlineMediaObject
+               |%ndxterm.class;
+               %local.smallcptr.char.mix;">
+
+<!ENTITY % local.word.char.mix "">
+<!ENTITY % word.char.mix
+               "#PCDATA
+                                       |Acronym|Emphasis|Trademark
+               |%link.char.class;
+               |%base.char.class;
+               |%other.char.class;     |InlineGraphic|InlineMediaObject
+               |%ndxterm.class;
+               %local.word.char.mix;">
+
+<!ENTITY % local.docinfo.char.mix "">
+<!ENTITY % docinfo.char.mix
+               "#PCDATA
+               |%link.char.class;
+                                       |Emphasis|Trademark
+                                       |Replaceable
+               |%other.char.class;     |InlineGraphic|InlineMediaObject
+               |%ndxterm.class;
+               %local.docinfo.char.mix;">
+<!--ENTITY % bibliocomponent.mix (see Bibliographic section, below)-->
+<!--ENTITY % person.ident.mix (see Bibliographic section, below)-->
+
+<!-- ...................................................................... -->
+<!-- Entities for content models .......................................... -->
+
+<!ENTITY % formalobject.title.content "Title, TitleAbbrev?">
+
+<!-- ...................................................................... -->
+<!-- Entities for attributes and attribute components ..................... -->
+
+<!-- Effectivity attributes ............................................... -->
+
+<!ENTITY % arch.attrib
+       --Arch: Computer or chip architecture to which element applies; no 
+       default--
+       "Arch           CDATA           #IMPLIED">
+
+<!ENTITY % condition.attrib
+       --Condition: General-purpose effectivity attribute--
+       "Condition      CDATA           #IMPLIED">
+
+<!ENTITY % conformance.attrib
+       --Conformance: Standards conformance characteristics--
+       "Conformance    NMTOKENS        #IMPLIED">
+
+<!ENTITY % os.attrib
+       --OS: Operating system to which element applies; no default--
+       "OS             CDATA           #IMPLIED">
+
+<!ENTITY % revision.attrib
+       --Revision: Editorial revision to which element belongs; no default--
+       "Revision       CDATA           #IMPLIED">
+
+<!ENTITY % security.attrib
+       --Security: Security classification; no default--
+       "Security       CDATA           #IMPLIED">
+
+<!ENTITY % userlevel.attrib
+       --UserLevel: Level of user experience to which element applies; no 
+       default--
+       "UserLevel      CDATA           #IMPLIED">
+
+<!ENTITY % vendor.attrib
+       --Vendor: Computer vendor to which element applies; no default--
+       "Vendor         CDATA           #IMPLIED">
+
+<!ENTITY % local.effectivity.attrib "">
+<!ENTITY % effectivity.attrib
+       "%arch.attrib;
+       %condition.attrib;
+       %conformance.attrib;
+       %os.attrib;
+       %revision.attrib;
+       %security.attrib;
+       %userlevel.attrib;
+       %vendor.attrib;
+       %local.effectivity.attrib;"
+>
+
+<!-- Common attributes .................................................... -->
+
+<!ENTITY % id.attrib
+       --Id: Unique identifier of element; no default--
+       "Id             ID              #IMPLIED">
+
+<!ENTITY % idreq.attrib
+       --Id: Unique identifier of element; a value must be supplied; no 
+       default--
+       "Id             ID              #REQUIRED">
+
+<!ENTITY % lang.attrib
+       --Lang: Indicator of language in which element is written, for
+       translation, character set management, etc.; no default--
+       "Lang           CDATA           #IMPLIED">
+
+<!ENTITY % remap.attrib
+       --Remap: Previous role of element before conversion; no default--
+       "Remap          CDATA           #IMPLIED">
+
+<!ENTITY % role.attrib
+       --Role: New role of element in local environment; no default--
+       "Role           CDATA           #IMPLIED">
+
+<!ENTITY % xreflabel.attrib
+       --XRefLabel: Alternate labeling string for XRef text generation;
+       default is usually title or other appropriate label text already
+       contained in element--
+       "XRefLabel      CDATA           #IMPLIED">
+
+<!ENTITY % revisionflag.attrib
+       --RevisionFlag: Revision status of element; default is that element
+       wasn't revised--
+       "RevisionFlag   (Changed
+                       |Added
+                       |Deleted
+                       |Off)           #IMPLIED">
+
+<!ENTITY % local.common.attrib "">
+<!ENTITY % common.attrib
+       "%id.attrib;
+       %lang.attrib;
+       %remap.attrib;
+       --Role is included explicitly on each element--
+       %xreflabel.attrib;
+       %revisionflag.attrib;
+       %effectivity.attrib;
+       %local.common.attrib;"
+>
+
+<!ENTITY % idreq.common.attrib
+       "%idreq.attrib;
+       %lang.attrib;
+       %remap.attrib;
+       --Role is included explicitly on each element--
+       %xreflabel.attrib;
+       %revisionflag.attrib;
+       %effectivity.attrib;
+       %local.common.attrib;"
+>
+
+<!-- Semi-common attributes and other attribute entities .................. -->
+
+<!ENTITY % local.graphics.attrib "">
+<!ENTITY % graphics.attrib
+       "
+       --EntityRef: Name of an external entity containing the content
+       of the graphic--
+       EntityRef       ENTITY          #IMPLIED
+
+       --FileRef: Filename, qualified by a pathname if desired, 
+       designating the file containing the content of the graphic--
+       FileRef         CDATA           #IMPLIED
+
+       --Format: Notation of the element content, if any--
+       Format          (%notation.class;)
+                                       #IMPLIED
+
+       --SrcCredit: Information about the source of the Graphic--
+       SrcCredit       CDATA           #IMPLIED
+
+       --Width: Same as CALS reprowid (desired width)--
+       Width           NUTOKEN         #IMPLIED
+
+       --Depth: Same as CALS reprodep (desired depth)--
+       Depth           NUTOKEN         #IMPLIED
+
+       --Align: Same as CALS hplace with 'none' removed; #IMPLIED means 
+       application-specific--
+       Align           (Left
+                       |Right 
+                       |Center)        #IMPLIED
+
+       --Scale: Conflation of CALS hscale and vscale--
+       Scale           NUMBER          #IMPLIED
+
+       --Scalefit: Same as CALS scalefit--
+       Scalefit        %yesorno.attvals;
+                                       #IMPLIED
+       %local.graphics.attrib;"
+>
+
+<!ENTITY % local.keyaction.attrib "">
+<!ENTITY % keyaction.attrib
+       "
+       --Action: Key combination type; default is unspecified if one 
+       child element, Simul if there is more than one; if value is 
+       Other, the OtherAction attribute must have a nonempty value--
+       Action          (Click
+                       |Double-Click
+                       |Press
+                       |Seq
+                       |Simul
+                       |Other)         #IMPLIED
+
+       --OtherAction: User-defined key combination type--
+       OtherAction     CDATA           #IMPLIED
+       %local.keyaction.attrib;"
+>
+
+<!ENTITY % label.attrib
+       --Label: Identifying number or string; default is usually the
+       appropriate number or string autogenerated by a formatter--
+       "Label          CDATA           #IMPLIED">
+
+<!ENTITY % linespecific.attrib
+       --Format: whether element is assumed to contain significant white
+       space--
+       "Format         NOTATION
+                       (linespecific)  linespecific
+         LineNumbering (Numbered|Unnumbered)   #IMPLIED">
+
+<!ENTITY % linkend.attrib
+       --Linkend: link to related information; no default--
+       "Linkend        IDREF           #IMPLIED">
+
+<!ENTITY % linkendreq.attrib
+       --Linkend: required link to related information--
+       "Linkend        IDREF           #REQUIRED">
+
+<!ENTITY % linkends.attrib
+       --Linkends: link to one or more sets of related information; no 
+       default--
+       "Linkends       IDREFS          #IMPLIED">
+
+<![IGNORE[
+<!-- Declared for completeness, but never used -->
+<!ENTITY % linkendsreq.attrib
+       --Linkends: required link to one or more sets of related information--
+       "Linkends       IDREFS          #REQUIRED">
+]]>
+
+<!ENTITY % local.mark.attrib "">
+<!ENTITY % mark.attrib
+       "Mark           CDATA           #IMPLIED
+       %local.mark.attrib;"
+>
+
+<!ENTITY % moreinfo.attrib
+       --MoreInfo: whether element's content has an associated RefEntry--
+       "MoreInfo       (RefEntry|None) None">
+
+<!ENTITY % pagenum.attrib
+       --Pagenum: number of page on which element appears; no default--
+       "Pagenum        CDATA           #IMPLIED">
+
+<!ENTITY % local.status.attrib "">
+<!ENTITY % status.attrib
+       --Status: Editorial or publication status of the element
+       it applies to, such as "in review" or "approved for distribution"--
+       "Status         CDATA           #IMPLIED
+       %local.status.attrib;"
+>
+
+<!ENTITY % width.attrib
+       --Width: width of the longest line in the element to which it
+       pertains, in number of characters--
+       "Width          NUMBER          #IMPLIED">
+
+<!-- ...................................................................... -->
+<!-- Title elements ....................................................... -->
+
+<!ENTITY % title.module "INCLUDE">
+<![ %title.module; [
+<!ENTITY % local.title.attrib "">
+<!ENTITY % title.role.attrib "%role.attrib;">
+
+<!ENTITY % title.element "INCLUDE">
+<![ %title.element; [
+<!ELEMENT Title - O ((%title.char.mix;)+)>
+<!--end of title.element-->]]>
+
+<!ENTITY % title.attlist "INCLUDE">
+<![ %title.attlist; [
+<!ATTLIST Title
+               %pagenum.attrib;
+               %common.attrib;
+               %title.role.attrib;
+               %local.title.attrib;
+>
+<!--end of title.attlist-->]]>
+<!--end of title.module-->]]>
+
+<!ENTITY % titleabbrev.module "INCLUDE">
+<![ %titleabbrev.module; [
+<!ENTITY % local.titleabbrev.attrib "">
+<!ENTITY % titleabbrev.role.attrib "%role.attrib;">
+
+<!ENTITY % titleabbrev.element "INCLUDE">
+<![ %titleabbrev.element; [
+<!ELEMENT TitleAbbrev - O ((%title.char.mix;)+)>
+<!--end of titleabbrev.element-->]]>
+
+<!ENTITY % titleabbrev.attlist "INCLUDE">
+<![ %titleabbrev.attlist; [
+<!ATTLIST TitleAbbrev
+               %common.attrib;
+               %titleabbrev.role.attrib;
+               %local.titleabbrev.attrib;
+>
+<!--end of titleabbrev.attlist-->]]>
+<!--end of titleabbrev.module-->]]>
+
+<!ENTITY % subtitle.module "INCLUDE">
+<![ %subtitle.module; [
+<!ENTITY % local.subtitle.attrib "">
+<!ENTITY % subtitle.role.attrib "%role.attrib;">
+
+<!ENTITY % subtitle.element "INCLUDE">
+<![ %subtitle.element; [
+<!ELEMENT Subtitle - O ((%title.char.mix;)+)>
+<!--end of subtitle.element-->]]>
+
+<!ENTITY % subtitle.attlist "INCLUDE">
+<![ %subtitle.attlist; [
+<!ATTLIST Subtitle
+               %common.attrib;
+               %subtitle.role.attrib;
+               %local.subtitle.attrib;
+>
+<!--end of subtitle.attlist-->]]>
+<!--end of subtitle.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Bibliographic entities and elements .................................. -->
+
+<!-- The bibliographic elements are typically used in the document
+     hierarchy. They do not appear in content models of information
+     pool elements.  See also the document information elements,
+     below. -->
+
+<!ENTITY % local.person.ident.mix "">
+<!ENTITY % person.ident.mix
+               "Honorific|FirstName|Surname|Lineage|OtherName|Affiliation
+               |AuthorBlurb|Contrib %local.person.ident.mix;">
+
+<!ENTITY % local.bibliocomponent.mix "">
+<!ENTITY % bibliocomponent.mix
+               "Abbrev|Abstract|Address|ArtPageNums|Author
+               |AuthorGroup|AuthorInitials|BiblioMisc|BiblioSet
+               |Collab|ConfGroup|ContractNum|ContractSponsor
+               |Copyright|CorpAuthor|CorpName|Date|Edition
+               |Editor|InvPartNumber|ISBN|ISSN|IssueNum|OrgName
+               |OtherCredit|PageNums|PrintHistory|ProductName
+               |ProductNumber|PubDate|Publisher|PublisherName
+               |PubsNumber|ReleaseInfo|RevHistory|SeriesVolNums
+               |Subtitle|Title|TitleAbbrev|VolumeNum|CiteTitle
+               |%person.ident.mix;
+               |%ndxterm.class;
+               %local.bibliocomponent.mix;">
+
+<!ENTITY % biblioentry.module "INCLUDE">
+<![ %biblioentry.module; [
+<!ENTITY % local.biblioentry.attrib "">
+
+<!ENTITY % biblioentry.role.attrib "%role.attrib;">
+
+<!ENTITY % biblioentry.element "INCLUDE">
+<![ %biblioentry.element; [
+<!--FUTURE USE (V5.0):
+......................
+ArticleInfo will be droped from BiblioEntry
+......................
+-->
+<!ELEMENT BiblioEntry - O ((ArticleInfo
+                            | (%bibliocomponent.mix;))+)
+                          %ubiq.exclusion;>
+<!--end of biblioentry.element-->]]>
+
+<!ENTITY % biblioentry.attlist "INCLUDE">
+<![ %biblioentry.attlist; [
+<!ATTLIST BiblioEntry
+               %common.attrib;
+               %biblioentry.role.attrib;
+               %local.biblioentry.attrib;
+>
+<!--end of biblioentry.attlist-->]]>
+<!--end of biblioentry.module-->]]>
+
+<!ENTITY % bibliomixed.module "INCLUDE">
+<![ %bibliomixed.module; [
+<!ENTITY % local.bibliomixed.attrib "">
+<!ENTITY % bibliomixed.role.attrib "%role.attrib;">
+
+<!ENTITY % bibliomixed.element "INCLUDE">
+<![ %bibliomixed.element; [
+<!ELEMENT BiblioMixed - O ((%bibliocomponent.mix; | BiblioMSet | #PCDATA)+)
+       %ubiq.exclusion;>
+<!--end of bibliomixed.element-->]]>
+
+<!ENTITY % bibliomixed.attlist "INCLUDE">
+<![ %bibliomixed.attlist; [
+<!ATTLIST BiblioMixed
+               %common.attrib;
+               %bibliomixed.role.attrib;
+               %local.bibliomixed.attrib;
+>
+<!--end of bibliomixed.attlist-->]]>
+<!--end of bibliomixed.module-->]]>
+
+<!ENTITY % articleinfo.module "INCLUDE">
+<![ %articleinfo.module; [
+<!ENTITY % local.articleinfo.attrib "">
+<!ENTITY % articleinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % articleinfo.element "INCLUDE">
+<![ %articleinfo.element; [
+<!ELEMENT ArticleInfo - - ((Graphic | MediaObject | LegalNotice | ModeSpec 
+       | SubjectSet | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+       -(BeginPage)>
+<!--end of articleinfo.element-->]]>
+
+<!ENTITY % articleinfo.attlist "INCLUDE">
+<![ %articleinfo.attlist; [
+<!ATTLIST ArticleInfo
+               %common.attrib;
+               %articleinfo.role.attrib;
+               %local.articleinfo.attrib;
+>
+<!--end of articleinfo.attlist-->]]>
+<!--end of articleinfo.module-->]]>
+
+<!ENTITY % biblioset.module "INCLUDE">
+<![ %biblioset.module; [
+<!ENTITY % local.biblioset.attrib "">
+<!ENTITY % biblioset.role.attrib "%role.attrib;">
+
+<!ENTITY % biblioset.element "INCLUDE">
+<![ %biblioset.element; [
+<!ELEMENT BiblioSet - - ((%bibliocomponent.mix;)+) %ubiq.exclusion;>
+<!--end of biblioset.element-->]]>
+
+<!ENTITY % biblioset.attlist "INCLUDE">
+<![ %biblioset.attlist; [
+<!ATTLIST BiblioSet
+               --
+               Relation: Relationship of elements contained within BiblioSet
+               --
+               Relation        CDATA           #IMPLIED
+               %common.attrib;
+               %biblioset.role.attrib;
+               %local.biblioset.attrib;
+>
+<!--end of biblioset.attlist-->]]>
+<!--end of biblioset.module-->]]>
+
+<!ENTITY % bibliomset.module "INCLUDE">
+<![ %bibliomset.module; [
+<!ENTITY % bibliomset.role.attrib "%role.attrib;">
+<!ENTITY % local.bibliomset.attrib "">
+
+<!ENTITY % bibliomset.element "INCLUDE">
+<![ %bibliomset.element; [
+<!ELEMENT BiblioMSet - - ((%bibliocomponent.mix; | BiblioMSet | #PCDATA)+)
+       %ubiq.exclusion;>
+<!--end of bibliomset.element-->]]>
+
+<!ENTITY % bibliomset.attlist "INCLUDE">
+<![ %bibliomset.attlist; [
+<!ATTLIST BiblioMSet
+               --
+               Relation: Relationship of elements contained within BiblioMSet
+               --
+               Relation        CDATA           #IMPLIED
+               %bibliomset.role.attrib;
+               %common.attrib;
+               %local.bibliomset.attrib;
+>
+<!--end of bibliomset.attlist-->]]>
+<!--end of bibliomset.module-->]]>
+
+<!ENTITY % bibliomisc.module "INCLUDE">
+<![ %bibliomisc.module; [
+<!ENTITY % local.bibliomisc.attrib "">
+<!ENTITY % bibliomisc.role.attrib "%role.attrib;">
+
+<!ENTITY % bibliomisc.element "INCLUDE">
+<![ %bibliomisc.element; [
+<!ELEMENT BiblioMisc - - ((%para.char.mix;)+)>
+<!--end of bibliomisc.element-->]]>
+
+<!ENTITY % bibliomisc.attlist "INCLUDE">
+<![ %bibliomisc.attlist; [
+<!ATTLIST BiblioMisc
+               %common.attrib;
+               %bibliomisc.role.attrib;
+               %local.bibliomisc.attrib;
+>
+<!--end of bibliomisc.attlist-->]]>
+<!--end of bibliomisc.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Subject, Keyword, and ITermSet elements .............................. -->
+
+<!ENTITY % subjectset.content.module "INCLUDE">
+<![ %subjectset.content.module; [
+<!ENTITY % subjectset.module "INCLUDE">
+<![ %subjectset.module; [
+<!ENTITY % local.subjectset.attrib "">
+<!ENTITY % subjectset.role.attrib "%role.attrib;">
+
+<!ENTITY % subjectset.element "INCLUDE">
+<![ %subjectset.element; [
+<!ELEMENT SubjectSet - - (Subject+)>
+<!--end of subjectset.element-->]]>
+
+<!ENTITY % subjectset.attlist "INCLUDE">
+<![ %subjectset.attlist; [
+<!ATTLIST SubjectSet
+               --
+               Scheme: Controlled vocabulary employed in SubjectTerms
+               --
+               Scheme          NAME            #IMPLIED
+               %common.attrib;
+               %subjectset.role.attrib;
+               %local.subjectset.attrib;
+>
+<!--end of subjectset.attlist-->]]>
+<!--end of subjectset.module-->]]>
+
+<!ENTITY % subject.module "INCLUDE">
+<![ %subject.module; [
+<!ENTITY % local.subject.attrib "">
+<!ENTITY % subject.role.attrib "%role.attrib;">
+
+<!ENTITY % subject.element "INCLUDE">
+<![ %subject.element; [
+<!ELEMENT Subject - - (SubjectTerm+)>
+<!--end of subject.element-->]]>
+
+<!ENTITY % subject.attlist "INCLUDE">
+<![ %subject.attlist; [
+<!ATTLIST Subject
+               --
+               Weight: Ranking of this group of SubjectTerms relative 
+               to others, 0 is low, no highest value specified
+               --
+               Weight          NUMBER          #IMPLIED
+               %common.attrib;
+               %subject.role.attrib;
+               %local.subject.attrib;
+>
+<!--end of subject.attlist-->]]>
+<!--end of subject.module-->]]>
+
+<!ENTITY % subjectterm.module "INCLUDE">
+<![ %subjectterm.module; [
+<!ENTITY % local.subjectterm.attrib "">
+<!ENTITY % subjectterm.role.attrib "%role.attrib;">
+
+<!ENTITY % subjectterm.element "INCLUDE">
+<![ %subjectterm.element; [
+<!ELEMENT SubjectTerm - - (#PCDATA)>
+<!--end of subjectterm.element-->]]>
+
+<!ENTITY % subjectterm.attlist "INCLUDE">
+<![ %subjectterm.attlist; [
+<!ATTLIST SubjectTerm
+               %common.attrib;
+               %subjectterm.role.attrib;
+               %local.subjectterm.attrib;
+>
+<!--end of subjectterm.attlist-->]]>
+<!--end of subjectterm.module-->]]>
+<!--end of subjectset.content.module-->]]>
+
+<!ENTITY % keywordset.content.module "INCLUDE">
+<![ %keywordset.content.module; [
+<!ENTITY % local.keywordset.attrib "">
+<!ENTITY % keywordset.module "INCLUDE">
+<![ %keywordset.module; [
+<!ENTITY % local.keywordset.attrib "">
+<!ENTITY % keywordset.role.attrib "%role.attrib;">
+
+<!ENTITY % keywordset.element "INCLUDE">
+<![ %keywordset.element; [
+<!ELEMENT KeywordSet - - (Keyword+)>
+<!--end of keywordset.element-->]]>
+
+<!ENTITY % keywordset.attlist "INCLUDE">
+<![ %keywordset.attlist; [
+<!ATTLIST KeywordSet
+               %common.attrib;
+               %keywordset.role.attrib;
+               %local.keywordset.attrib;
+>
+<!--end of keywordset.attlist-->]]>
+<!--end of keywordset.module-->]]>
+
+<!ENTITY % keyword.module "INCLUDE">
+<![ %keyword.module; [
+<!ENTITY % local.keyword.attrib "">
+<!ENTITY % keyword.role.attrib "%role.attrib;">
+
+<!ENTITY % keyword.element "INCLUDE">
+<![ %keyword.element; [
+<!ELEMENT Keyword - - (#PCDATA)>
+<!--end of keyword.element-->]]>
+
+<!ENTITY % keyword.attlist "INCLUDE">
+<![ %keyword.attlist; [
+<!ATTLIST Keyword
+               %common.attrib;
+               %keyword.role.attrib;
+               %local.keyword.attrib;
+>
+<!--end of keyword.attlist-->]]>
+<!--end of keyword.module-->]]>
+<!--end of keywordset.content.module-->]]>
+
+<!ENTITY % itermset.module "INCLUDE">
+<![ %itermset.module; [
+<!ENTITY % local.itermset.attrib "">
+<!ENTITY % itermset.role.attrib "%role.attrib;">
+
+<!ENTITY % itermset.element "INCLUDE">
+<![ %itermset.element; [
+<!ELEMENT ITermSet - - (IndexTerm+)>
+<!--end of itermset.element-->]]>
+
+<!ENTITY % itermset.attlist "INCLUDE">
+<![ %itermset.attlist; [
+<!ATTLIST ITermSet
+               %common.attrib;
+               %itermset.role.attrib;
+               %local.itermset.attrib;
+>
+<!--end of itermset.attlist-->]]>
+<!--end of itermset.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Compound (section-ish) elements ...................................... -->
+
+<!-- Message set ...................... -->
+
+<!ENTITY % msgset.content.module "INCLUDE">
+<![ %msgset.content.module; [
+<!ENTITY % msgset.module "INCLUDE">
+<![ %msgset.module; [
+<!ENTITY % local.msgset.attrib "">
+<!ENTITY % msgset.role.attrib "%role.attrib;">
+
+<!ENTITY % msgset.element "INCLUDE">
+<![ %msgset.element; [
+<!ELEMENT MsgSet - - ((%formalobject.title.content;)?, (MsgEntry+|SimpleMsgEntry+))>
+<!--end of msgset.element-->]]>
+
+<!ENTITY % msgset.attlist "INCLUDE">
+<![ %msgset.attlist; [
+<!ATTLIST MsgSet
+               %common.attrib;
+               %msgset.role.attrib;
+               %local.msgset.attrib;
+>
+<!--end of msgset.attlist-->]]>
+<!--end of msgset.module-->]]>
+
+<!ENTITY % msgentry.module "INCLUDE">
+<![ %msgentry.module; [
+<!ENTITY % local.msgentry.attrib "">
+<!ENTITY % msgentry.role.attrib "%role.attrib;">
+
+<!ENTITY % msgentry.element "INCLUDE">
+<![ %msgentry.element; [
+<!ELEMENT MsgEntry - O (Msg+, MsgInfo?, MsgExplan*)>
+<!--end of msgentry.element-->]]>
+
+<!ENTITY % msgentry.attlist "INCLUDE">
+<![ %msgentry.attlist; [
+<!ATTLIST MsgEntry
+               %common.attrib;
+               %msgentry.role.attrib;
+               %local.msgentry.attrib;
+>
+<!--end of msgentry.attlist-->]]>
+<!--end of msgentry.module-->]]>
+
+<!ENTITY % simplemsgentry.module "INCLUDE">
+<![ %simplemsgentry.module; [
+<!ENTITY % local.simplemsgentry.attrib "">
+<!ENTITY % simplemsgentry.role.attrib "%role.attrib;">
+
+<!ENTITY % simplemsgentry.element "INCLUDE">
+<![ %simplemsgentry.element; [
+<!ELEMENT SimpleMsgEntry - O (MsgText, MsgExplan)>
+<!--end of simplemsgentry.element-->]]>
+
+<!ENTITY % simplemsgentry.attlist "INCLUDE">
+<![ %simplemsgentry.attlist; [
+<!ATTLIST SimpleMsgEntry
+               %common.attrib;
+               %simplemsgentry.role.attrib;
+               %local.simplemsgentry.attrib;
+               Audience        CDATA   #IMPLIED
+               Level           CDATA   #IMPLIED
+               Origin          CDATA   #IMPLIED
+>
+<!--end of simplemsgentry.attlist-->]]>
+<!--end of simplemsgentry.module-->]]>
+
+<!ENTITY % msg.module "INCLUDE">
+<![ %msg.module; [
+<!ENTITY % local.msg.attrib "">
+<!ENTITY % msg.role.attrib "%role.attrib;">
+
+<!ENTITY % msg.element "INCLUDE">
+<![ %msg.element; [
+<!ELEMENT Msg - O (Title?, MsgMain, (MsgSub | MsgRel)*)>
+<!--end of msg.element-->]]>
+
+<!ENTITY % msg.attlist "INCLUDE">
+<![ %msg.attlist; [
+<!ATTLIST Msg
+               %common.attrib;
+               %msg.role.attrib;
+               %local.msg.attrib;
+>
+<!--end of msg.attlist-->]]>
+<!--end of msg.module-->]]>
+
+<!ENTITY % msgmain.module "INCLUDE">
+<![ %msgmain.module; [
+<!ENTITY % local.msgmain.attrib "">
+<!ENTITY % msgmain.role.attrib "%role.attrib;">
+
+<!ENTITY % msgmain.element "INCLUDE">
+<![ %msgmain.element; [
+<!ELEMENT MsgMain - - (Title?, MsgText)>
+<!--end of msgmain.element-->]]>
+
+<!ENTITY % msgmain.attlist "INCLUDE">
+<![ %msgmain.attlist; [
+<!ATTLIST MsgMain
+               %common.attrib;
+               %msgmain.role.attrib;
+               %local.msgmain.attrib;
+>
+<!--end of msgmain.attlist-->]]>
+<!--end of msgmain.module-->]]>
+
+<!ENTITY % msgsub.module "INCLUDE">
+<![ %msgsub.module; [
+<!ENTITY % local.msgsub.attrib "">
+<!ENTITY % msgsub.role.attrib "%role.attrib;">
+
+<!ENTITY % msgsub.element "INCLUDE">
+<![ %msgsub.element; [
+<!ELEMENT MsgSub - - (Title?, MsgText)>
+<!--end of msgsub.element-->]]>
+
+<!ENTITY % msgsub.attlist "INCLUDE">
+<![ %msgsub.attlist; [
+<!ATTLIST MsgSub
+               %common.attrib;
+               %msgsub.role.attrib;
+               %local.msgsub.attrib;
+>
+<!--end of msgsub.attlist-->]]>
+<!--end of msgsub.module-->]]>
+
+<!ENTITY % msgrel.module "INCLUDE">
+<![ %msgrel.module; [
+<!ENTITY % local.msgrel.attrib "">
+<!ENTITY % msgrel.role.attrib "%role.attrib;">
+
+<!ENTITY % msgrel.element "INCLUDE">
+<![ %msgrel.element; [
+<!ELEMENT MsgRel - - (Title?, MsgText)>
+<!--end of msgrel.element-->]]>
+
+<!ENTITY % msgrel.attlist "INCLUDE">
+<![ %msgrel.attlist; [
+<!ATTLIST MsgRel
+               %common.attrib;
+               %msgrel.role.attrib;
+               %local.msgrel.attrib;
+>
+<!--end of msgrel.attlist-->]]>
+<!--end of msgrel.module-->]]>
+
+<!-- MsgText (defined in the Inlines section, below)-->
+
+<!ENTITY % msginfo.module "INCLUDE">
+<![ %msginfo.module; [
+<!ENTITY % local.msginfo.attrib "">
+<!ENTITY % msginfo.role.attrib "%role.attrib;">
+
+<!ENTITY % msginfo.element "INCLUDE">
+<![ %msginfo.element; [
+<!ELEMENT MsgInfo - - ((MsgLevel | MsgOrig | MsgAud)*)>
+<!--end of msginfo.element-->]]>
+
+<!ENTITY % msginfo.attlist "INCLUDE">
+<![ %msginfo.attlist; [
+<!ATTLIST MsgInfo
+               %common.attrib;
+               %msginfo.role.attrib;
+               %local.msginfo.attrib;
+>
+<!--end of msginfo.attlist-->]]>
+<!--end of msginfo.module-->]]>
+
+<!ENTITY % msglevel.module "INCLUDE">
+<![ %msglevel.module; [
+<!ENTITY % local.msglevel.attrib "">
+<!ENTITY % msglevel.role.attrib "%role.attrib;">
+
+<!ENTITY % msglevel.element "INCLUDE">
+<![ %msglevel.element; [
+<!ELEMENT MsgLevel - - ((%smallcptr.char.mix;)+)>
+<!--end of msglevel.element-->]]>
+
+<!ENTITY % msglevel.attlist "INCLUDE">
+<![ %msglevel.attlist; [
+<!ATTLIST MsgLevel
+               %common.attrib;
+               %msglevel.role.attrib;
+               %local.msglevel.attrib;
+>
+<!--end of msglevel.attlist-->]]>
+<!--end of msglevel.module-->]]>
+
+<!ENTITY % msgorig.module "INCLUDE">
+<![ %msgorig.module; [
+<!ENTITY % local.msgorig.attrib "">
+<!ENTITY % msgorig.role.attrib "%role.attrib;">
+
+<!ENTITY % msgorig.element "INCLUDE">
+<![ %msgorig.element; [
+<!ELEMENT MsgOrig - - ((%smallcptr.char.mix;)+)>
+<!--end of msgorig.element-->]]>
+
+<!ENTITY % msgorig.attlist "INCLUDE">
+<![ %msgorig.attlist; [
+<!ATTLIST MsgOrig
+               %common.attrib;
+               %msgorig.role.attrib;
+               %local.msgorig.attrib;
+>
+<!--end of msgorig.attlist-->]]>
+<!--end of msgorig.module-->]]>
+
+<!ENTITY % msgaud.module "INCLUDE">
+<![ %msgaud.module; [
+<!ENTITY % local.msgaud.attrib "">
+<!ENTITY % msgaud.role.attrib "%role.attrib;">
+
+<!ENTITY % msgaud.element "INCLUDE">
+<![ %msgaud.element; [
+<!ELEMENT MsgAud - - ((%para.char.mix;)+)>
+<!--end of msgaud.element-->]]>
+
+<!ENTITY % msgaud.attlist "INCLUDE">
+<![ %msgaud.attlist; [
+<!ATTLIST MsgAud
+               %common.attrib;
+               %msgaud.role.attrib;
+               %local.msgaud.attrib;
+>
+<!--end of msgaud.attlist-->]]>
+<!--end of msgaud.module-->]]>
+
+<!ENTITY % msgexplan.module "INCLUDE">
+<![ %msgexplan.module; [
+<!ENTITY % local.msgexplan.attrib "">
+<!ENTITY % msgexplan.role.attrib "%role.attrib;">
+
+<!ENTITY % msgexplan.element "INCLUDE">
+<![ %msgexplan.element; [
+<!ELEMENT MsgExplan - - (Title?, (%component.mix;)+)>
+<!--end of msgexplan.element-->]]>
+
+<!ENTITY % msgexplan.attlist "INCLUDE">
+<![ %msgexplan.attlist; [
+<!ATTLIST MsgExplan
+               %common.attrib;
+               %msgexplan.role.attrib;
+               %local.msgexplan.attrib;
+>
+<!--end of msgexplan.attlist-->]]>
+<!--end of msgexplan.module-->]]>
+<!--end of msgset.content.module-->]]>
+
+<!-- QandASet ........................ -->
+<!ENTITY % qandset.content.module "INCLUDE">
+<![ %qandset.content.module; [
+<!ENTITY % qandset.module "INCLUDE">
+<![ %qandset.module; [
+<!ENTITY % local.qandset.attrib "">
+<!ENTITY % qandset.role.attrib "%role.attrib;">
+
+<!ENTITY % qandset.element "INCLUDE">
+<![ %qandset.element; [
+<!ELEMENT QandASet - - ((%formalobject.title.content;)?,
+                       (%qandaset.mix;)*,
+                        (QandADiv+|QandAEntry+))>
+<!--end of qandset.element-->]]>
+
+<!ENTITY % qandset.attlist "INCLUDE">
+<![ %qandset.attlist; [
+<!ATTLIST QandASet
+               DefaultLabel    (qanda|number|none)       #IMPLIED
+               %common.attrib;
+               %qandset.role.attrib;
+               %local.qandset.attrib;>
+<!--end of qandset.attlist-->]]>
+<!--end of qandset.module-->]]>
+
+<!ENTITY % qandadiv.module "INCLUDE">
+<![ %qandadiv.module; [
+<!ENTITY % local.qandadiv.attrib "">
+<!ENTITY % qandadiv.role.attrib "%role.attrib;">
+
+<!ENTITY % qandadiv.element "INCLUDE">
+<![ %qandadiv.element; [
+<!ELEMENT QandADiv - - ((%formalobject.title.content;)?, 
+                       (%qandaset.mix;)*,
+                       (QandADiv+|QandAEntry+))>
+<!--end of qandadiv.element-->]]>
+
+<!ENTITY % qandadiv.attlist "INCLUDE">
+<![ %qandadiv.attlist; [
+<!ATTLIST QandADiv
+               %common.attrib;
+               %qandadiv.role.attrib;
+               %local.qandadiv.attrib;>
+<!--end of qandadiv.attlist-->]]>
+<!--end of qandadiv.module-->]]>
+
+<!ENTITY % qandaentry.module "INCLUDE">
+<![ %qandaentry.module; [
+<!ENTITY % local.qandaentry.attrib "">
+<!ENTITY % qandaentry.role.attrib "%role.attrib;">
+
+<!ENTITY % qandaentry.element "INCLUDE">
+<![ %qandaentry.element; [
+<!ELEMENT QandAEntry - - (RevHistory?, Question, Answer*)>
+<!--end of qandaentry.element-->]]>
+
+<!ENTITY % qandaentry.attlist "INCLUDE">
+<![ %qandaentry.attlist; [
+<!ATTLIST QandAEntry
+               %common.attrib;
+               %qandaentry.role.attrib;
+               %local.qandaentry.attrib;>
+<!--end of qandaentry.attlist-->]]>
+<!--end of qandaentry.module-->]]>
+
+<!ENTITY % question.module "INCLUDE">
+<![ %question.module; [
+<!ENTITY % local.question.attrib "">
+<!ENTITY % question.role.attrib "%role.attrib;">
+
+<!ENTITY % question.element "INCLUDE">
+<![ %question.element; [
+<!ELEMENT Question - - (Label?, (%qandaset.mix;)+)>
+<!--end of question.element-->]]>
+
+<!ENTITY % question.attlist "INCLUDE">
+<![ %question.attlist; [
+<!ATTLIST Question
+               %common.attrib;
+               %question.role.attrib;
+               %local.question.attrib;
+>
+<!--end of question.attlist-->]]>
+<!--end of question.module-->]]>
+
+<!ENTITY % answer.module "INCLUDE">
+<![ %answer.module; [
+<!ENTITY % local.answer.attrib "">
+<!ENTITY % answer.role.attrib "%role.attrib;">
+
+<!ENTITY % answer.element "INCLUDE">
+<![ %answer.element; [
+<!ELEMENT Answer - - (Label?, (%qandaset.mix;)*, QandAEntry*)>
+<!--end of answer.element-->]]>
+
+<!ENTITY % answer.attlist "INCLUDE">
+<![ %answer.attlist; [
+<!ATTLIST Answer
+               %common.attrib;
+               %answer.role.attrib;
+               %local.answer.attrib;
+>
+<!--end of answer.attlist-->]]>
+<!--end of answer.module-->]]>
+
+<!ENTITY % label.module "INCLUDE">
+<![ %label.module; [
+<!ENTITY % local.label.attrib "">
+<!ENTITY % label.role.attrib "%role.attrib;">
+
+<!ENTITY % label.element "INCLUDE">
+<![ %label.element; [
+<!ELEMENT Label - - (%word.char.mix;)*>
+<!--end of label.element-->]]>
+
+<!ENTITY % label.attlist "INCLUDE">
+<![ %label.attlist; [
+<!ATTLIST Label
+               %common.attrib;
+               %label.role.attrib;
+               %local.label.attrib;
+>
+<!--end of label.attlist-->]]>
+<!--end of label.module-->]]>
+<!--end of qandset.content.module-->]]>
+
+<!-- Procedure ........................ -->
+
+<!ENTITY % procedure.content.module "INCLUDE">
+<![ %procedure.content.module; [
+<!ENTITY % procedure.module "INCLUDE">
+<![ %procedure.module; [
+<!ENTITY % local.procedure.attrib "">
+<!ENTITY % procedure.role.attrib "%role.attrib;">
+
+<!ENTITY % procedure.element "INCLUDE">
+<![ %procedure.element; [
+<!ELEMENT Procedure - - ((%formalobject.title.content;)?,
+       (%component.mix;)*, Step+)>
+<!--end of procedure.element-->]]>
+
+<!ENTITY % procedure.attlist "INCLUDE">
+<![ %procedure.attlist; [
+<!ATTLIST Procedure
+               %common.attrib;
+               %procedure.role.attrib;
+               %local.procedure.attrib;
+>
+<!--end of procedure.attlist-->]]>
+<!--end of procedure.module-->]]>
+
+<!ENTITY % step.module "INCLUDE">
+<![ %step.module; [
+<!ENTITY % local.step.attrib "">
+<!ENTITY % step.role.attrib "%role.attrib;">
+
+<!ENTITY % step.element "INCLUDE">
+<![ %step.element; [
+<!ELEMENT Step - O (Title?, (((%component.mix;)+, (SubSteps,
+               (%component.mix;)*)?) | (SubSteps, (%component.mix;)*)))>
+<!--end of step.element-->]]>
+
+<!ENTITY % step.attlist "INCLUDE">
+<![ %step.attlist; [
+<!ATTLIST Step
+               --
+               Performance: Whether the Step must be performed
+               --
+               Performance     (Optional
+                               |Required)      Required -- not #REQUIRED! --
+               %common.attrib;
+               %step.role.attrib;
+               %local.step.attrib;
+>
+<!--end of step.attlist-->]]>
+<!--end of step.module-->]]>
+
+<!ENTITY % substeps.module "INCLUDE">
+<![ %substeps.module; [
+<!ENTITY % local.substeps.attrib "">
+<!ENTITY % substeps.role.attrib "%role.attrib;">
+
+<!ENTITY % substeps.element "INCLUDE">
+<![ %substeps.element; [
+<!ELEMENT SubSteps - - (Step+)>
+<!--end of substeps.element-->]]>
+
+<!ENTITY % substeps.attlist "INCLUDE">
+<![ %substeps.attlist; [
+<!ATTLIST SubSteps
+               --
+               Performance: whether entire set of substeps must be performed
+               --
+               Performance     (Optional
+                               |Required)      Required -- not #REQUIRED! --
+               %common.attrib;
+               %substeps.role.attrib;
+               %local.substeps.attrib;
+>
+<!--end of substeps.attlist-->]]>
+<!--end of substeps.module-->]]>
+<!--end of procedure.content.module-->]]>
+
+<!-- Sidebar .......................... -->
+
+<!ENTITY % sidebar.content.model "INCLUDE">
+<![ %sidebar.content.model; [
+
+<!ENTITY % sidebarinfo.module "INCLUDE">
+<![ %sidebarinfo.module; [
+<!ENTITY % local.sidebarinfo.attrib "">
+<!ENTITY % sidebarinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % sidebarinfo.element "INCLUDE">
+<![ %sidebarinfo.element; [
+<!ELEMENT SidebarInfo - - ((Graphic | MediaObject | LegalNotice | ModeSpec 
+       | SubjectSet | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+       -(BeginPage)>
+<!--end of sidebarinfo.element-->]]>
+
+<!ENTITY % sidebarinfo.attlist "INCLUDE">
+<![ %sidebarinfo.attlist; [
+<!ATTLIST SidebarInfo
+               %common.attrib;
+               %sidebarinfo.role.attrib;
+               %local.sidebarinfo.attrib;
+>
+<!--end of sidebarinfo.attlist-->]]>
+<!--end of sidebarinfo.module-->]]>
+
+<!ENTITY % sidebar.module "INCLUDE">
+<![ %sidebar.module; [
+<!ENTITY % local.sidebar.attrib "">
+<!ENTITY % sidebar.role.attrib "%role.attrib;">
+
+<!ENTITY % sidebar.element "INCLUDE">
+<![ %sidebar.element; [
+<!ELEMENT Sidebar - - (SidebarInfo?,
+                      (%formalobject.title.content;)?, (%sidebar.mix;)+)>
+<!--end of sidebar.element-->]]>
+
+<!ENTITY % sidebar.attlist "INCLUDE">
+<![ %sidebar.attlist; [
+<!ATTLIST Sidebar
+               %common.attrib;
+               %sidebar.role.attrib;
+               %local.sidebar.attrib;
+>
+<!--end of sidebar.attlist-->]]>
+<!--end of sidebar.module-->]]>
+<!--end of sidebar.content.model-->]]>
+
+<!-- ...................................................................... -->
+<!-- Paragraph-related elements ........................................... -->
+
+<!ENTITY % abstract.module "INCLUDE">
+<![ %abstract.module; [
+<!ENTITY % local.abstract.attrib "">
+<!ENTITY % abstract.role.attrib "%role.attrib;">
+
+<!ENTITY % abstract.element "INCLUDE">
+<![ %abstract.element; [
+<!ELEMENT Abstract - - (Title?, (%para.class;)+)>
+<!--end of abstract.element-->]]>
+
+<!ENTITY % abstract.attlist "INCLUDE">
+<![ %abstract.attlist; [
+<!ATTLIST Abstract
+               %common.attrib;
+               %abstract.role.attrib;
+               %local.abstract.attrib;
+>
+<!--end of abstract.attlist-->]]>
+<!--end of abstract.module-->]]>
+
+<!ENTITY % authorblurb.module "INCLUDE">
+<![ %authorblurb.module; [
+<!ENTITY % local.authorblurb.attrib "">
+<!ENTITY % authorblurb.role.attrib "%role.attrib;">
+
+<!ENTITY % authorblurb.element "INCLUDE">
+<![ %authorblurb.element; [
+<!ELEMENT AuthorBlurb - - (Title?, (%para.class;)+)>
+<!--end of authorblurb.element-->]]>
+
+<!ENTITY % authorblurb.attlist "INCLUDE">
+<![ %authorblurb.attlist; [
+<!ATTLIST AuthorBlurb
+               %common.attrib;
+               %authorblurb.role.attrib;
+               %local.authorblurb.attrib;
+>
+<!--end of authorblurb.attlist-->]]>
+<!--end of authorblurb.module-->]]>
+
+<!ENTITY % blockquote.module "INCLUDE">
+<![ %blockquote.module; [
+<!ENTITY % local.blockquote.attrib "">
+<!ENTITY % blockquote.role.attrib "%role.attrib;">
+
+<!ENTITY % blockquote.element "INCLUDE">
+<![ %blockquote.element; [
+<!ELEMENT BlockQuote - - (Title?, Attribution?, (%component.mix;)+)
+                         %blockquote.exclusion;>
+<!--end of blockquote.element-->]]>
+
+<!ENTITY % blockquote.attlist "INCLUDE">
+<![ %blockquote.attlist; [
+<!ATTLIST BlockQuote
+               %common.attrib;
+               %blockquote.role.attrib;
+               %local.blockquote.attrib;
+>
+<!--end of blockquote.attlist-->]]>
+<!--end of blockquote.module-->]]>
+
+<!ENTITY % attribution.module "INCLUDE">
+<![ %attribution.module; [
+<!ENTITY % local.attribution.attrib "">
+<!ENTITY % attribution.role.attrib "%role.attrib;">
+
+<!ENTITY % attribution.element "INCLUDE">
+<![ %attribution.element; [
+<!ELEMENT Attribution - O ((%para.char.mix;)+)>
+<!--end of attribution.element-->]]>
+
+<!ENTITY % attribution.attlist "INCLUDE">
+<![ %attribution.attlist; [
+<!ATTLIST Attribution
+               %common.attrib;
+               %attribution.role.attrib;
+               %local.attribution.attrib;
+>
+<!--end of attribution.attlist-->]]>
+<!--end of attribution.module-->]]>
+
+<!ENTITY % bridgehead.module "INCLUDE">
+<![ %bridgehead.module; [
+<!ENTITY % local.bridgehead.attrib "">
+<!ENTITY % bridgehead.role.attrib "%role.attrib;">
+
+<!ENTITY % bridgehead.element "INCLUDE">
+<![ %bridgehead.element; [
+<!ELEMENT BridgeHead - - ((%title.char.mix;)+)>
+<!--end of bridgehead.element-->]]>
+
+<!ENTITY % bridgehead.attlist "INCLUDE">
+<![ %bridgehead.attlist; [
+<!ATTLIST BridgeHead
+               --
+               Renderas: Indicates the format in which the BridgeHead
+               should appear
+               --
+               Renderas        (Other
+                               |Sect1
+                               |Sect2
+                               |Sect3
+                               |Sect4
+                               |Sect5)         #IMPLIED
+               %common.attrib;
+               %bridgehead.role.attrib;
+               %local.bridgehead.attrib;
+>
+<!--end of bridgehead.attlist-->]]>
+<!--end of bridgehead.module-->]]>
+
+<!ENTITY % remark.module "INCLUDE">
+<![ %remark.module; [
+<!ENTITY % local.remark.attrib "">
+<!ENTITY % remark.role.attrib "%role.attrib;">
+
+<!ENTITY % remark.element "INCLUDE">
+<![ %remark.element; [
+<!ELEMENT Remark - - ((%para.char.mix;)+) %remark.exclusion;>
+<!--end of remark.element-->]]>
+
+<!ENTITY % remark.attlist "INCLUDE">
+<![ %remark.attlist; [
+<!ATTLIST Remark
+               %common.attrib;
+               %remark.role.attrib;
+               %local.remark.attrib;
+>
+<!--end of remark.attlist-->]]>
+<!--end of remark.module-->]]>
+
+<!ENTITY % epigraph.module "INCLUDE">
+<![ %epigraph.module; [
+<!ENTITY % local.epigraph.attrib "">
+<!ENTITY % epigraph.role.attrib "%role.attrib;">
+
+<!ENTITY % epigraph.element "INCLUDE">
+<![ %epigraph.element; [
+<!ELEMENT Epigraph - - (Attribution?, (%para.class;)+)>
+<!--end of epigraph.element-->]]>
+
+<!ENTITY % epigraph.attlist "INCLUDE">
+<![ %epigraph.attlist; [
+<!ATTLIST Epigraph
+               %common.attrib;
+               %epigraph.role.attrib;
+               %local.epigraph.attrib;
+>
+<!--end of epigraph.attlist-->]]>
+<!-- Attribution (defined above)-->
+<!--end of epigraph.module-->]]>
+
+<!ENTITY % footnote.module "INCLUDE">
+<![ %footnote.module; [
+<!ENTITY % local.footnote.attrib "">
+<!ENTITY % footnote.role.attrib "%role.attrib;">
+
+<!ENTITY % footnote.element "INCLUDE">
+<![ %footnote.element; [
+<!ELEMENT Footnote - - ((%footnote.mix;)+) %footnote.exclusion;>
+<!--end of footnote.element-->]]>
+
+<!ENTITY % footnote.attlist "INCLUDE">
+<![ %footnote.attlist; [
+<!ATTLIST Footnote
+               %label.attrib;
+               %common.attrib;
+               %footnote.role.attrib;
+               %local.footnote.attrib;
+>
+<!--end of footnote.attlist-->]]>
+<!--end of footnote.module-->]]>
+
+<!ENTITY % highlights.module "INCLUDE">
+<![ %highlights.module; [
+<!ENTITY % local.highlights.attrib "">
+<!ENTITY % highlights.role.attrib "%role.attrib;">
+
+<!ENTITY % highlights.element "INCLUDE">
+<![ %highlights.element; [
+<!ELEMENT Highlights - - ((%highlights.mix;)+) %highlights.exclusion;>
+<!--end of highlights.element-->]]>
+
+<!ENTITY % highlights.attlist "INCLUDE">
+<![ %highlights.attlist; [
+<!ATTLIST Highlights
+               %common.attrib;
+               %highlights.role.attrib;
+               %local.highlights.attrib;
+>
+<!--end of highlights.attlist-->]]>
+<!--end of highlights.module-->]]>
+
+<!ENTITY % formalpara.module "INCLUDE">
+<![ %formalpara.module; [
+<!ENTITY % local.formalpara.attrib "">
+<!ENTITY % formalpara.role.attrib "%role.attrib;">
+
+<!ENTITY % formalpara.element "INCLUDE">
+<![ %formalpara.element; [
+<!ELEMENT FormalPara - O (Title, (%ndxterm.class;)*, Para)>
+<!--end of formalpara.element-->]]>
+
+<!ENTITY % formalpara.attlist "INCLUDE">
+<![ %formalpara.attlist; [
+<!ATTLIST FormalPara
+               %common.attrib;
+               %formalpara.role.attrib;
+               %local.formalpara.attrib;
+>
+<!--end of formalpara.attlist-->]]>
+<!--end of formalpara.module-->]]>
+
+<!ENTITY % para.module "INCLUDE">
+<![ %para.module; [
+<!ENTITY % local.para.attrib "">
+<!ENTITY % para.role.attrib "%role.attrib;">
+
+<!ENTITY % para.element "INCLUDE">
+<![ %para.element; [
+<!ELEMENT Para - O ((%para.char.mix; | %para.mix;)+)>
+<!--end of para.element-->]]>
+
+<!ENTITY % para.attlist "INCLUDE">
+<![ %para.attlist; [
+<!ATTLIST Para
+               %common.attrib;
+               %para.role.attrib;
+               %local.para.attrib;
+>
+<!--end of para.attlist-->]]>
+<!--end of para.module-->]]>
+
+<!ENTITY % simpara.module "INCLUDE">
+<![ %simpara.module; [
+<!ENTITY % local.simpara.attrib "">
+<!ENTITY % simpara.role.attrib "%role.attrib;">
+
+<!ENTITY % simpara.element "INCLUDE">
+<![ %simpara.element; [
+<!ELEMENT SimPara - O ((%para.char.mix;)+)>
+<!--end of simpara.element-->]]>
+
+<!ENTITY % simpara.attlist "INCLUDE">
+<![ %simpara.attlist; [
+<!ATTLIST SimPara
+               %common.attrib;
+               %simpara.role.attrib;
+               %local.simpara.attrib;
+>
+<!--end of simpara.attlist-->]]>
+<!--end of simpara.module-->]]>
+
+<!ENTITY % admon.module "INCLUDE">
+<![ %admon.module; [
+<!ENTITY % local.admon.attrib "">
+<!ENTITY % admon.role.attrib "%role.attrib;">
+
+<!ENTITY % admon.elements "INCLUDE">
+<![ %admon.elements; [
+<!ELEMENT (%admon.class;) - - (Title?, (%admon.mix;)+) %admon.exclusion;>
+<!--end of admon.elements-->]]>
+
+<!ENTITY % admon.attlists "INCLUDE">
+<![ %admon.attlists; [
+<!ATTLIST (%admon.class;)
+               %common.attrib;
+               %admon.role.attrib;
+               %local.admon.attrib;
+>
+<!--end of admon.attlists-->]]>
+<!--end of admon.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Lists ................................................................ -->
+
+<!-- GlossList ........................ -->
+
+<!ENTITY % glosslist.module "INCLUDE">
+<![ %glosslist.module; [
+<!ENTITY % local.glosslist.attrib "">
+<!ENTITY % glosslist.role.attrib "%role.attrib;">
+
+<!ENTITY % glosslist.element "INCLUDE">
+<![ %glosslist.element; [
+<!ELEMENT GlossList - - (GlossEntry+)>
+<!--end of glosslist.element-->]]>
+
+<!ENTITY % glosslist.attlist "INCLUDE">
+<![ %glosslist.attlist; [
+<!ATTLIST GlossList
+               %common.attrib;
+               %glosslist.role.attrib;
+               %local.glosslist.attrib;
+>
+<!--end of glosslist.attlist-->]]>
+<!--end of glosslist.module-->]]>
+
+<!ENTITY % glossentry.content.module "INCLUDE">
+<![ %glossentry.content.module; [
+<!ENTITY % glossentry.module "INCLUDE">
+<![ %glossentry.module; [
+<!ENTITY % local.glossentry.attrib "">
+<!ENTITY % glossentry.role.attrib "%role.attrib;">
+
+<!ENTITY % glossentry.element "INCLUDE">
+<![ %glossentry.element; [
+<!ELEMENT GlossEntry - O (GlossTerm, Acronym?, Abbrev?,
+                         (%ndxterm.class;)*,
+                         RevHistory?, (GlossSee|GlossDef+))>
+<!--end of glossentry.element-->]]>
+
+<!ENTITY % glossentry.attlist "INCLUDE">
+<![ %glossentry.attlist; [
+<!ATTLIST GlossEntry
+               --
+               SortAs: String by which the GlossEntry is to be sorted
+               (alphabetized) in lieu of its proper content
+               --
+               SortAs          CDATA           #IMPLIED
+               %common.attrib;
+               %glossentry.role.attrib;
+               %local.glossentry.attrib;
+>
+<!--end of glossentry.attlist-->]]>
+<!--end of glossentry.module-->]]>
+
+<!-- GlossTerm (defined in the Inlines section, below)-->
+<!ENTITY % glossdef.module "INCLUDE">
+<![ %glossdef.module; [
+<!ENTITY % local.glossdef.attrib "">
+<!ENTITY % glossdef.role.attrib "%role.attrib;">
+
+<!ENTITY % glossdef.element "INCLUDE">
+<![ %glossdef.element; [
+<!ELEMENT GlossDef - O ((%glossdef.mix;)+, GlossSeeAlso*)>
+<!--end of glossdef.element-->]]>
+
+<!ENTITY % glossdef.attlist "INCLUDE">
+<![ %glossdef.attlist; [
+<!ATTLIST GlossDef
+               --
+               Subject: List of subjects; keywords for the definition
+               --
+               Subject         CDATA           #IMPLIED
+               %common.attrib;
+               %glossdef.role.attrib;
+               %local.glossdef.attrib;
+>
+<!--end of glossdef.attlist-->]]>
+<!--end of glossdef.module-->]]>
+
+<!ENTITY % glosssee.module "INCLUDE">
+<![ %glosssee.module; [
+<!ENTITY % local.glosssee.attrib "">
+<!ENTITY % glosssee.role.attrib "%role.attrib;">
+
+<!ENTITY % glosssee.element "INCLUDE">
+<![ %glosssee.element; [
+<!ELEMENT GlossSee - O ((%para.char.mix;)+)>
+<!--end of glosssee.element-->]]>
+
+<!ENTITY % glosssee.attlist "INCLUDE">
+<![ %glosssee.attlist; [
+<!ATTLIST GlossSee
+               --
+               OtherTerm: Reference to the GlossEntry whose GlossTerm
+               should be displayed at the point of the GlossSee
+               --
+               OtherTerm       IDREF           #CONREF
+               %common.attrib;
+               %glosssee.role.attrib;
+               %local.glosssee.attrib;
+>
+<!--end of glosssee.attlist-->]]>
+<!--end of glosssee.module-->]]>
+
+<!ENTITY % glossseealso.module "INCLUDE">
+<![ %glossseealso.module; [
+<!ENTITY % local.glossseealso.attrib "">
+<!ENTITY % glossseealso.role.attrib "%role.attrib;">
+
+<!ENTITY % glossseealso.element "INCLUDE">
+<![ %glossseealso.element; [
+<!ELEMENT GlossSeeAlso - O ((%para.char.mix;)+)>
+<!--end of glossseealso.element-->]]>
+
+<!ENTITY % glossseealso.attlist "INCLUDE">
+<![ %glossseealso.attlist; [
+<!ATTLIST GlossSeeAlso
+               --
+               OtherTerm: Reference to the GlossEntry whose GlossTerm
+               should be displayed at the point of the GlossSeeAlso
+               --
+               OtherTerm       IDREF           #CONREF
+               %common.attrib;
+               %glossseealso.role.attrib;
+               %local.glossseealso.attrib;
+>
+<!--end of glossseealso.attlist-->]]>
+<!--end of glossseealso.module-->]]>
+<!--end of glossentry.content.module-->]]>
+
+<!-- ItemizedList and OrderedList ..... -->
+
+<!ENTITY % itemizedlist.module "INCLUDE">
+<![ %itemizedlist.module; [
+<!ENTITY % local.itemizedlist.attrib "">
+<!ENTITY % itemizedlist.role.attrib "%role.attrib;">
+
+<!ENTITY % itemizedlist.element "INCLUDE">
+<![ %itemizedlist.element; [
+<!ELEMENT ItemizedList - - ((%formalobject.title.content;)?, ListItem+)>
+<!--end of itemizedlist.element-->]]>
+
+<!ENTITY % itemizedlist.attlist "INCLUDE">
+<![ %itemizedlist.attlist; [
+<!ATTLIST ItemizedList 
+               --
+               Spacing: Whether the vertical space in the list should be
+               compressed
+               --
+               Spacing         (Normal
+                               |Compact)       #IMPLIED
+               --
+               Mark: Keyword, e.g., bullet, dash, checkbox, none;
+               list of keywords and defaults are implementation specific
+               --
+               %mark.attrib;
+               %common.attrib;
+               %itemizedlist.role.attrib;
+               %local.itemizedlist.attrib;
+>
+<!--end of itemizedlist.attlist-->]]>
+<!--end of itemizedlist.module-->]]>
+
+<!ENTITY % orderedlist.module "INCLUDE">
+<![ %orderedlist.module; [
+<!ENTITY % local.orderedlist.attrib "">
+<!ENTITY % orderedlist.role.attrib "%role.attrib;">
+
+<!ENTITY % orderedlist.element "INCLUDE">
+<![ %orderedlist.element; [
+<!ELEMENT OrderedList - - ((%formalobject.title.content;)?, ListItem+)>
+<!--end of orderedlist.element-->]]>
+
+<!ENTITY % orderedlist.attlist "INCLUDE">
+<![ %orderedlist.attlist; [
+<!ATTLIST OrderedList
+               --
+               Numeration: Style of ListItem numbered; default is expected
+               to be Arabic
+               --
+               Numeration      (Arabic
+                               |Upperalpha
+                               |Loweralpha
+                               |Upperroman
+                               |Lowerroman)    #IMPLIED
+               --
+               InheritNum: Specifies for a nested list that the numbering
+               of ListItems should include the number of the item
+               within which they are nested (e.g., 1a and 1b within 1,
+               rather than a and b)--
+               InheritNum      (Inherit
+                               |Ignore)        Ignore
+               --
+               Continuation: Where list numbering begins afresh (Restarts,
+               the default) or continues that of the immediately preceding 
+               list (Continues)
+               --
+               Continuation    (Continues
+                               |Restarts)      Restarts
+               --
+               Spacing: Whether the vertical space in the list should be
+               compressed
+               --
+               Spacing         (Normal
+                               |Compact)       #IMPLIED
+               %common.attrib;
+               %orderedlist.role.attrib;
+               %local.orderedlist.attrib;
+>
+<!--end of orderedlist.attlist-->]]>
+<!--end of orderedlist.module-->]]>
+
+<!ENTITY % listitem.module "INCLUDE">
+<![ %listitem.module; [
+<!ENTITY % local.listitem.attrib "">
+<!ENTITY % listitem.role.attrib "%role.attrib;">
+
+<!ENTITY % listitem.element "INCLUDE">
+<![ %listitem.element; [
+<!ELEMENT ListItem - O ((%component.mix;)+)>
+<!--end of listitem.element-->]]>
+
+<!ENTITY % listitem.attlist "INCLUDE">
+<![ %listitem.attlist; [
+<!ATTLIST ListItem
+               --
+               Override: Indicates the mark to be used for this ListItem
+               instead of the default mark or the mark specified by
+               the Mark attribute on the enclosing ItemizedList
+               --
+               Override        CDATA           #IMPLIED
+               %common.attrib;
+               %listitem.role.attrib;
+               %local.listitem.attrib;
+>
+<!--end of listitem.attlist-->]]>
+<!--end of listitem.module-->]]>
+
+<!-- SegmentedList .................... -->
+<!ENTITY % segmentedlist.content.module "INCLUDE">
+<![ %segmentedlist.content.module; [
+<!ENTITY % segmentedlist.module "INCLUDE">
+<![ %segmentedlist.module; [
+<!ENTITY % local.segmentedlist.attrib "">
+<!ENTITY % segmentedlist.role.attrib "%role.attrib;">
+
+<!ENTITY % segmentedlist.element "INCLUDE">
+<![ %segmentedlist.element; [
+<!ELEMENT SegmentedList - - ((%formalobject.title.content;)?, 
+                             SegTitle, SegTitle+,
+                             SegListItem+)>
+<!--end of segmentedlist.element-->]]>
+
+<!ENTITY % segmentedlist.attlist "INCLUDE">
+<![ %segmentedlist.attlist; [
+<!ATTLIST SegmentedList
+               %common.attrib;
+               %segmentedlist.role.attrib;
+               %local.segmentedlist.attrib;
+>
+<!--end of segmentedlist.attlist-->]]>
+<!--end of segmentedlist.module-->]]>
+
+<!ENTITY % segtitle.module "INCLUDE">
+<![ %segtitle.module; [
+<!ENTITY % local.segtitle.attrib "">
+<!ENTITY % segtitle.role.attrib "%role.attrib;">
+
+<!ENTITY % segtitle.element "INCLUDE">
+<![ %segtitle.element; [
+<!ELEMENT SegTitle - O ((%title.char.mix;)+)>
+<!--end of segtitle.element-->]]>
+
+<!ENTITY % segtitle.attlist "INCLUDE">
+<![ %segtitle.attlist; [
+<!ATTLIST SegTitle
+               %common.attrib;
+               %segtitle.role.attrib;
+               %local.segtitle.attrib;
+>
+<!--end of segtitle.attlist-->]]>
+<!--end of segtitle.module-->]]>
+
+<!ENTITY % seglistitem.module "INCLUDE">
+<![ %seglistitem.module; [
+<!ENTITY % local.seglistitem.attrib "">
+<!ENTITY % seglistitem.role.attrib "%role.attrib;">
+
+<!ENTITY % seglistitem.element "INCLUDE">
+<![ %seglistitem.element; [
+<!ELEMENT SegListItem - O (Seg, Seg+)>
+<!--end of seglistitem.element-->]]>
+
+<!ENTITY % seglistitem.attlist "INCLUDE">
+<![ %seglistitem.attlist; [
+<!ATTLIST SegListItem
+               %common.attrib;
+               %seglistitem.role.attrib;
+               %local.seglistitem.attrib;
+>
+<!--end of seglistitem.attlist-->]]>
+<!--end of seglistitem.module-->]]>
+
+<!ENTITY % seg.module "INCLUDE">
+<![ %seg.module; [
+<!ENTITY % local.seg.attrib "">
+<!ENTITY % seg.role.attrib "%role.attrib;">
+
+<!ENTITY % seg.element "INCLUDE">
+<![ %seg.element; [
+<!ELEMENT Seg - O ((%para.char.mix;)+)>
+<!--end of seg.element-->]]>
+
+<!ENTITY % seg.attlist "INCLUDE">
+<![ %seg.attlist; [
+<!ATTLIST Seg
+               %common.attrib;
+               %seg.role.attrib;
+               %local.seg.attrib;
+>
+<!--end of seg.attlist-->]]>
+<!--end of seg.module-->]]>
+<!--end of segmentedlist.content.module-->]]>
+
+<!-- SimpleList ....................... -->
+
+<!ENTITY % simplelist.content.module "INCLUDE">
+<![ %simplelist.content.module; [
+<!ENTITY % simplelist.module "INCLUDE">
+<![ %simplelist.module; [
+<!ENTITY % local.simplelist.attrib "">
+<!ENTITY % simplelist.role.attrib "%role.attrib;">
+
+<!ENTITY % simplelist.element "INCLUDE">
+<![ %simplelist.element; [
+<!ELEMENT SimpleList - - (Member+)>
+<!--end of simplelist.element-->]]>
+
+<!ENTITY % simplelist.attlist "INCLUDE">
+<![ %simplelist.attlist; [
+<!ATTLIST SimpleList
+               --
+               Columns: The number of columns the array should contain
+               --
+               Columns         NUMBER          #IMPLIED
+               --
+               Type: How the Members of the SimpleList should be
+               formatted: Inline (members separated with commas etc.
+               inline), Vert (top to bottom in n Columns), or Horiz (in
+               the direction of text flow) in n Columns.  If Column
+               is 1 or implied, Type=Vert and Type=Horiz give the same
+               results.
+               --
+               Type            (Inline
+                               |Vert
+                               |Horiz)         Vert
+               %common.attrib;
+               %simplelist.role.attrib;
+               %local.simplelist.attrib;
+>
+<!--end of simplelist.attlist-->]]>
+<!--end of simplelist.module-->]]>
+
+<!ENTITY % member.module "INCLUDE">
+<![ %member.module; [
+<!ENTITY % local.member.attrib "">
+<!ENTITY % member.role.attrib "%role.attrib;">
+
+<!ENTITY % member.element "INCLUDE">
+<![ %member.element; [
+<!ELEMENT Member - O ((%para.char.mix;)+)>
+<!--end of member.element-->]]>
+
+<!ENTITY % member.attlist "INCLUDE">
+<![ %member.attlist; [
+<!ATTLIST Member
+               %common.attrib;
+               %member.role.attrib;
+               %local.member.attrib;
+>
+<!--end of member.attlist-->]]>
+<!--end of member.module-->]]>
+<!--end of simplelist.content.module-->]]>
+
+<!-- VariableList ..................... -->
+
+<!ENTITY % variablelist.content.module "INCLUDE">
+<![ %variablelist.content.module; [
+<!ENTITY % variablelist.module "INCLUDE">
+<![ %variablelist.module; [
+<!ENTITY % local.variablelist.attrib "">
+<!ENTITY % variablelist.role.attrib "%role.attrib;">
+
+<!ENTITY % variablelist.element "INCLUDE">
+<![ %variablelist.element; [
+<!ELEMENT VariableList - - ((%formalobject.title.content;)?, VarListEntry+)>
+<!--end of variablelist.element-->]]>
+
+<!ENTITY % variablelist.attlist "INCLUDE">
+<![ %variablelist.attlist; [
+<!ATTLIST VariableList
+               --
+               TermLength: Length beyond which the presentation engine
+               may consider the Term too long and select an alternate
+               presentation of the Term and, or, its associated ListItem.
+               --
+               TermLength      CDATA           #IMPLIED
+               %common.attrib;
+               %variablelist.role.attrib;
+               %local.variablelist.attrib;
+>
+<!--end of variablelist.attlist-->]]>
+<!--end of variablelist.module-->]]>
+
+<!ENTITY % varlistentry.module "INCLUDE">
+<![ %varlistentry.module; [
+<!ENTITY % local.varlistentry.attrib "">
+<!ENTITY % varlistentry.role.attrib "%role.attrib;">
+
+<!ENTITY % varlistentry.element "INCLUDE">
+<![ %varlistentry.element; [
+<!ELEMENT VarListEntry - O (Term+, ListItem)>
+<!--end of varlistentry.element-->]]>
+
+<!ENTITY % varlistentry.attlist "INCLUDE">
+<![ %varlistentry.attlist; [
+<!ATTLIST VarListEntry
+               %common.attrib;
+               %varlistentry.role.attrib;
+               %local.varlistentry.attrib;
+>
+<!--end of varlistentry.attlist-->]]>
+<!--end of varlistentry.module-->]]>
+
+<!ENTITY % term.module "INCLUDE">
+<![ %term.module; [
+<!ENTITY % local.term.attrib "">
+<!ENTITY % term.role.attrib "%role.attrib;">
+
+<!ENTITY % term.element "INCLUDE">
+<![ %term.element; [
+<!ELEMENT Term - O ((%para.char.mix;)+)>
+<!--end of term.element-->]]>
+
+<!ENTITY % term.attlist "INCLUDE">
+<![ %term.attlist; [
+<!ATTLIST Term
+               %common.attrib;
+               %term.role.attrib;
+               %local.term.attrib;
+>
+<!--end of term.attlist-->]]>
+<!--end of term.module-->]]>
+
+<!-- ListItem (defined above)-->
+<!--end of variablelist.content.module-->]]>
+
+<!-- CalloutList ...................... -->
+
+<!ENTITY % calloutlist.content.module "INCLUDE">
+<![ %calloutlist.content.module; [
+<!ENTITY % calloutlist.module "INCLUDE">
+<![ %calloutlist.module; [
+<!ENTITY % local.calloutlist.attrib "">
+<!ENTITY % calloutlist.role.attrib "%role.attrib;">
+
+<!ENTITY % calloutlist.element "INCLUDE">
+<![ %calloutlist.element; [
+<!ELEMENT CalloutList - - ((%formalobject.title.content;)?, Callout+)>
+<!--end of calloutlist.element-->]]>
+
+<!ENTITY % calloutlist.attlist "INCLUDE">
+<![ %calloutlist.attlist; [
+<!ATTLIST CalloutList
+               %common.attrib;
+               %calloutlist.role.attrib;
+               %local.calloutlist.attrib;
+>
+<!--end of calloutlist.attlist-->]]>
+<!--end of calloutlist.module-->]]>
+
+<!ENTITY % callout.module "INCLUDE">
+<![ %callout.module; [
+<!ENTITY % local.callout.attrib "">
+<!ENTITY % callout.role.attrib "%role.attrib;">
+
+<!ENTITY % callout.element "INCLUDE">
+<![ %callout.element; [
+<!ELEMENT Callout - O ((%component.mix;)+)>
+<!--end of callout.element-->]]>
+
+<!ENTITY % callout.attlist "INCLUDE">
+<![ %callout.attlist; [
+<!ATTLIST Callout
+               --
+               AreaRefs: IDs of one or more Areas or AreaSets described
+               by this Callout
+               --
+               AreaRefs        IDREFS          #REQUIRED
+               %common.attrib;
+               %callout.role.attrib;
+               %local.callout.attrib;
+>
+<!--end of callout.attlist-->]]>
+<!--end of callout.module-->]]>
+<!--end of calloutlist.content.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Objects .............................................................. -->
+
+<!-- Examples etc. .................... -->
+
+<!ENTITY % example.module "INCLUDE">
+<![ %example.module; [
+<!ENTITY % local.example.attrib "">
+<!ENTITY % example.role.attrib "%role.attrib;">
+
+<!ENTITY % example.element "INCLUDE">
+<![ %example.element; [
+<!ELEMENT Example - - ((%formalobject.title.content;), (%example.mix;)+)
+               %formal.exclusion;>
+<!--end of example.element-->]]>
+
+<!ENTITY % example.attlist "INCLUDE">
+<![ %example.attlist; [
+<!ATTLIST Example
+               %label.attrib;
+               %width.attrib;
+               %common.attrib;
+               %example.role.attrib;
+               %local.example.attrib;
+>
+<!--end of example.attlist-->]]>
+<!--end of example.module-->]]>
+
+<!ENTITY % informalexample.module "INCLUDE">
+<![ %informalexample.module; [
+<!ENTITY % local.informalexample.attrib "">
+<!ENTITY % informalexample.role.attrib "%role.attrib;">
+
+<!ENTITY % informalexample.element "INCLUDE">
+<![ %informalexample.element; [
+<!ELEMENT InformalExample - - ((%example.mix;)+)>
+<!--end of informalexample.element-->]]>
+
+<!ENTITY % informalexample.attlist "INCLUDE">
+<![ %informalexample.attlist; [
+<!ATTLIST InformalExample
+               %width.attrib;
+               %common.attrib;
+               %informalexample.role.attrib;
+               %local.informalexample.attrib;
+>
+<!--end of informalexample.attlist-->]]>
+<!--end of informalexample.module-->]]>
+
+<!ENTITY % programlistingco.module "INCLUDE">
+<![ %programlistingco.module; [
+<!ENTITY % local.programlistingco.attrib "">
+<!ENTITY % programlistingco.role.attrib "%role.attrib;">
+
+<!ENTITY % programlistingco.element "INCLUDE">
+<![ %programlistingco.element; [
+<!ELEMENT ProgramListingCO - - (AreaSpec, ProgramListing, CalloutList*)>
+<!--end of programlistingco.element-->]]>
+
+<!ENTITY % programlistingco.attlist "INCLUDE">
+<![ %programlistingco.attlist; [
+<!ATTLIST ProgramListingCO
+               %common.attrib;
+               %programlistingco.role.attrib;
+               %local.programlistingco.attrib;
+>
+<!--end of programlistingco.attlist-->]]>
+<!-- CalloutList (defined above in Lists)-->
+<!--end of programlistingco.module-->]]>
+
+<!ENTITY % areaspec.content.module "INCLUDE">
+<![ %areaspec.content.module; [
+<!ENTITY % areaspec.module "INCLUDE">
+<![ %areaspec.module; [
+<!ENTITY % local.areaspec.attrib "">
+<!ENTITY % areaspec.role.attrib "%role.attrib;">
+
+<!ENTITY % areaspec.element "INCLUDE">
+<![ %areaspec.element; [
+<!ELEMENT AreaSpec - - ((Area|AreaSet)+)>
+<!--end of areaspec.element-->]]>
+
+<!ENTITY % areaspec.attlist "INCLUDE">
+<![ %areaspec.attlist; [
+<!ATTLIST AreaSpec
+               --
+               Units: global unit of measure in which coordinates in
+               this spec are expressed:
+
+               - CALSPair "x1,y1 x2,y2": lower-left and upper-right 
+               coordinates in a rectangle describing repro area in which 
+               graphic is placed, where X and Y dimensions are each some 
+               number 0..10000 (taken from CALS graphic attributes)
+
+               - LineColumn "line column": line number and column number
+               at which to start callout text in "linespecific" content
+
+               - LineRange "startline endline": whole lines from startline
+               to endline in "linespecific" content
+
+               - LineColumnPair "line1 col1 line2 col2": starting and ending
+               points of area in "linespecific" content that starts at
+               first position and ends at second position (including the
+               beginnings of any intervening lines)
+
+               - Other: directive to look at value of OtherUnits attribute
+               to get implementation-specific keyword
+
+               The default is implementation-specific; usually dependent on 
+               the parent element (GraphicCO gets CALSPair, ProgramListingCO
+               and ScreenCO get LineColumn)
+               --
+               Units           (CALSPair
+                               |LineColumn
+                               |LineRange
+                               |LineColumnPair
+                               |Other)         #IMPLIED
+               --
+               OtherUnits: User-defined units
+               --
+               OtherUnits      NAME            #IMPLIED
+               %common.attrib;
+               %areaspec.role.attrib;
+               %local.areaspec.attrib;
+>
+<!--end of areaspec.attlist-->]]>
+<!--end of areaspec.module-->]]>
+
+<!ENTITY % area.module "INCLUDE">
+<![ %area.module; [
+<!ENTITY % local.area.attrib "">
+<!ENTITY % area.role.attrib "%role.attrib;">
+
+<!ENTITY % area.element "INCLUDE">
+<![ %area.element; [
+<!ELEMENT Area - O EMPTY>
+<!--end of area.element-->]]>
+
+<!ENTITY % area.attlist "INCLUDE">
+<![ %area.attlist; [
+<!ATTLIST Area
+               %label.attrib; --bug number/symbol override or initialization--
+               %linkends.attrib; --to any related information--
+               --
+               Units: unit of measure in which coordinates in this
+               area are expressed; inherits from AreaSet and AreaSpec
+               --
+               Units           (CALSPair
+                               |LineColumn
+                               |LineRange
+                               |LineColumnPair
+                               |Other)         #IMPLIED
+               --
+               OtherUnits: User-defined units
+               --
+               OtherUnits      NAME            #IMPLIED
+               Coords          CDATA           #REQUIRED
+               %idreq.common.attrib;
+               %area.role.attrib;
+               %local.area.attrib;
+>
+<!--end of area.attlist-->]]>
+<!--end of area.module-->]]>
+
+<!ENTITY % areaset.module "INCLUDE">
+<![ %areaset.module; [
+<!ENTITY % local.areaset.attrib "">
+<!ENTITY % areaset.role.attrib "%role.attrib;">
+
+<!ENTITY % areaset.element "INCLUDE">
+<![ %areaset.element; [
+<!ELEMENT AreaSet - - (Area+)>
+<!--end of areaset.element-->]]>
+
+<!ENTITY % areaset.attlist "INCLUDE">
+<![ %areaset.attlist; [
+<!--FUTURE USE (V5.0):
+......................
+Coord attribute will be removed from AreaSet
+......................
+-->
+<!ATTLIST AreaSet
+               %label.attrib; --bug number/symbol override or initialization--
+
+               --
+               Units: unit of measure in which coordinates in this
+               area are expressed; inherits from AreaSpec
+               --
+               Units           (CALSPair
+                               |LineColumn
+                               |LineRange
+                               |LineColumnPair
+                               |Other)         #IMPLIED
+               OtherUnits      NAME            #IMPLIED
+               Coords          CDATA           #REQUIRED
+               %idreq.common.attrib;
+               %areaset.role.attrib;
+               %local.areaset.attrib;
+>
+<!--end of areaset.attlist-->]]>
+<!--end of areaset.module-->]]>
+<!--end of areaspec.content.module-->]]>
+
+<!ENTITY % programlisting.module "INCLUDE">
+<![ %programlisting.module; [
+<!ENTITY % local.programlisting.attrib "">
+<!ENTITY % programlisting.role.attrib "%role.attrib;">
+
+<!ENTITY % programlisting.element "INCLUDE">
+<![ %programlisting.element; [
+<!ELEMENT ProgramListing - - ((CO | LineAnnotation | %para.char.mix;)+)>
+<!--end of programlisting.element-->]]>
+
+<!ENTITY % programlisting.attlist "INCLUDE">
+<![ %programlisting.attlist; [
+<!ATTLIST ProgramListing
+               %width.attrib;
+               %linespecific.attrib;
+               %common.attrib;
+               %programlisting.role.attrib;
+               %local.programlisting.attrib;
+>
+<!--end of programlisting.attlist-->]]>
+<!--end of programlisting.module-->]]>
+
+<!ENTITY % literallayout.module "INCLUDE">
+<![ %literallayout.module; [
+<!ENTITY % local.literallayout.attrib "">
+<!ENTITY % literallayout.role.attrib "%role.attrib;">
+
+<!ENTITY % literallayout.element "INCLUDE">
+<![ %literallayout.element; [
+<!ELEMENT LiteralLayout - - ((CO | LineAnnotation | %para.char.mix;)+)>
+<!--end of literallayout.element-->]]>
+
+<!ENTITY % literallayout.attlist "INCLUDE">
+<![ %literallayout.attlist; [
+<!ATTLIST LiteralLayout
+               %width.attrib;
+               %linespecific.attrib;
+               Class   (Monospaced|Normal)     "Normal"
+               %common.attrib;
+               %literallayout.role.attrib;
+               %local.literallayout.attrib;
+>
+<!--end of literallayout.attlist-->]]>
+<!-- LineAnnotation (defined in the Inlines section, below)-->
+<!--end of literallayout.module-->]]>
+
+<!ENTITY % screenco.module "INCLUDE">
+<![ %screenco.module; [
+<!ENTITY % local.screenco.attrib "">
+<!ENTITY % screenco.role.attrib "%role.attrib;">
+
+<!ENTITY % screenco.element "INCLUDE">
+<![ %screenco.element; [
+<!ELEMENT ScreenCO - - (AreaSpec, Screen, CalloutList*)>
+<!--end of screenco.element-->]]>
+
+<!ENTITY % screenco.attlist "INCLUDE">
+<![ %screenco.attlist; [
+<!ATTLIST ScreenCO
+               %common.attrib;
+               %screenco.role.attrib;
+               %local.screenco.attrib;
+>
+<!--end of screenco.attlist-->]]>
+<!-- AreaSpec (defined above)-->
+<!-- CalloutList (defined above in Lists)-->
+<!--end of screenco.module-->]]>
+
+<!ENTITY % screen.module "INCLUDE">
+<![ %screen.module; [
+<!ENTITY % local.screen.attrib "">
+<!ENTITY % screen.role.attrib "%role.attrib;">
+
+<!ENTITY % screen.element "INCLUDE">
+<![ %screen.element; [
+<!ELEMENT Screen - - ((CO | LineAnnotation | %para.char.mix;)+)>
+<!--end of screen.element-->]]>
+
+<!ENTITY % screen.attlist "INCLUDE">
+<![ %screen.attlist; [
+<!ATTLIST Screen
+               %width.attrib;
+               %linespecific.attrib;
+               %common.attrib;
+               %screen.role.attrib;
+               %local.screen.attrib;
+>
+<!--end of screen.attlist-->]]>
+<!--end of screen.module-->]]>
+
+<!ENTITY % screenshot.content.module "INCLUDE">
+<![ %screenshot.content.module; [
+<!ENTITY % screenshot.module "INCLUDE">
+<![ %screenshot.module; [
+<!ENTITY % local.screenshot.attrib "">
+<!ENTITY % screenshot.role.attrib "%role.attrib;">
+
+<!ENTITY % screenshot.element "INCLUDE">
+<![ %screenshot.element; [
+<!ELEMENT ScreenShot - - (ScreenInfo?, 
+               (Graphic|GraphicCO
+               |MediaObject|MediaObjectCO))>
+<!--end of screenshot.element-->]]>
+
+<!ENTITY % screenshot.attlist "INCLUDE">
+<![ %screenshot.attlist; [
+<!ATTLIST ScreenShot
+               %common.attrib;
+               %screenshot.role.attrib;
+               %local.screenshot.attrib;
+>
+<!--end of screenshot.attlist-->]]>
+<!--end of screenshot.module-->]]>
+
+<!ENTITY % screeninfo.module "INCLUDE">
+<![ %screeninfo.module; [
+<!ENTITY % local.screeninfo.attrib "">
+<!ENTITY % screeninfo.role.attrib "%role.attrib;">
+
+<!ENTITY % screeninfo.element "INCLUDE">
+<![ %screeninfo.element; [
+<!ELEMENT ScreenInfo - O ((%para.char.mix;)+) %ubiq.exclusion;>
+<!--end of screeninfo.element-->]]>
+
+<!ENTITY % screeninfo.attlist "INCLUDE">
+<![ %screeninfo.attlist; [
+<!ATTLIST ScreenInfo
+               %common.attrib;
+               %screeninfo.role.attrib;
+               %local.screeninfo.attrib;
+>
+<!--end of screeninfo.attlist-->]]>
+<!--end of screeninfo.module-->]]>
+<!--end of screenshot.content.module-->]]>
+
+<!-- Figures etc. ..................... -->
+
+<!ENTITY % figure.module "INCLUDE">
+<![ %figure.module; [
+<!ENTITY % local.figure.attrib "">
+<!ENTITY % figure.role.attrib "%role.attrib;">
+
+<!ENTITY % figure.element "INCLUDE">
+<![ %figure.element; [
+<!ELEMENT Figure - - ((%formalobject.title.content;), (%figure.mix; |
+               %link.char.class;)+)>
+<!--end of figure.element-->]]>
+
+<!ENTITY % figure.attlist "INCLUDE">
+<![ %figure.attlist; [
+<!ATTLIST Figure
+               --
+               Float: Whether the Figure is supposed to be rendered
+               where convenient (yes (1) value) or at the place it occurs
+               in the text (no (0) value, the default)
+               --
+               Float           %yesorno.attvals;       %no.attval;
+               PgWide          %yesorno.attvals;       #IMPLIED
+               %label.attrib;
+               %common.attrib;
+               %figure.role.attrib;
+               %local.figure.attrib;
+>
+<!--end of figure.attlist-->]]>
+<!--end of figure.module-->]]>
+
+<!ENTITY % informalfigure.module "INCLUDE">
+<![ %informalfigure.module; [
+<!ENTITY % local.informalfigure.attrib "">
+<!ENTITY % informalfigure.role.attrib "%role.attrib;">
+
+<!ENTITY % informalfigure.element "INCLUDE">
+<![ %informalfigure.element; [
+<!ELEMENT InformalFigure - - ((%figure.mix; | %link.char.class;)+)>
+<!--end of informalfigure.element-->]]>
+
+<!ENTITY % informalfigure.attlist "INCLUDE">
+<![ %informalfigure.attlist; [
+<!ATTLIST InformalFigure
+               --
+               Float: Whether the Figure is supposed to be rendered
+               where convenient (yes (1) value) or at the place it occurs
+               in the text (no (0) value, the default)
+               --
+               Float           %yesorno.attvals;       %no.attval;
+               PgWide          %yesorno.attvals;       #IMPLIED
+               %label.attrib;
+               %common.attrib;
+               %informalfigure.role.attrib;
+               %local.informalfigure.attrib;
+>
+<!--end of informalfigure.attlist-->]]>
+<!--end of informalfigure.module-->]]>
+
+<!ENTITY % graphicco.module "INCLUDE">
+<![ %graphicco.module; [
+<!ENTITY % local.graphicco.attrib "">
+<!ENTITY % graphicco.role.attrib "%role.attrib;">
+
+<!ENTITY % graphicco.element "INCLUDE">
+<![ %graphicco.element; [
+<!ELEMENT GraphicCO - - (AreaSpec, Graphic, CalloutList*)>
+<!--end of graphicco.element-->]]>
+
+<!ENTITY % graphicco.attlist "INCLUDE">
+<![ %graphicco.attlist; [
+<!ATTLIST GraphicCO
+               %common.attrib;
+               %graphicco.role.attrib;
+               %local.graphicco.attrib;
+>
+<!--end of graphicco.attlist-->]]>
+<!-- AreaSpec (defined above in Examples)-->
+<!-- CalloutList (defined above in Lists)-->
+<!--end of graphicco.module-->]]>
+
+<!-- Graphical data can be the content of Graphic, or you can reference
+     an external file either as an entity (Entitref) or a filename
+     (Fileref). -->
+
+<!ENTITY % graphic.module "INCLUDE">
+<![ %graphic.module; [
+<!ENTITY % local.graphic.attrib "">
+<!ENTITY % graphic.role.attrib "%role.attrib;">
+
+<!ENTITY % graphic.element "INCLUDE">
+<![ %graphic.element; [
+<!ELEMENT Graphic - O EMPTY>
+<!--end of graphic.element-->]]>
+
+<!ENTITY % graphic.attlist "INCLUDE">
+<![ %graphic.attlist; [
+<!ATTLIST Graphic
+               %graphics.attrib;
+               %common.attrib;
+               %graphic.role.attrib;
+               %local.graphic.attrib;
+>
+<!--end of graphic.attlist-->]]>
+<!--end of graphic.module-->]]>
+
+<!ENTITY % inlinegraphic.module "INCLUDE">
+<![ %inlinegraphic.module; [
+<!ENTITY % local.inlinegraphic.attrib "">
+<!ENTITY % inlinegraphic.role.attrib "%role.attrib;">
+
+<!ENTITY % inlinegraphic.element "INCLUDE">
+<![ %inlinegraphic.element; [
+<!ELEMENT InlineGraphic - O EMPTY>
+<!--end of inlinegraphic.element-->]]>
+
+<!ENTITY % inlinegraphic.attlist "INCLUDE">
+<![ %inlinegraphic.attlist; [
+<!ATTLIST InlineGraphic
+               %graphics.attrib;
+               %common.attrib;
+               %inlinegraphic.role.attrib;
+               %local.inlinegraphic.attrib;
+>
+<!--end of inlinegraphic.attlist-->]]>
+<!--end of inlinegraphic.module-->]]>
+
+<!ENTITY % mediaobject.content.module "INCLUDE">
+<![ %mediaobject.content.module; [
+
+<!ENTITY % mediaobject.module "INCLUDE">
+<![ %mediaobject.module; [
+<!ENTITY % local.mediaobject.attrib "">
+<!ENTITY % mediaobject.role.attrib "%role.attrib;">
+
+<!ENTITY % mediaobject.element "INCLUDE">
+<![ %mediaobject.element; [
+<!ELEMENT MediaObject - - (ObjectInfo?,
+                           (%mediaobject.mix;),
+                          (%mediaobject.mix;|TextObject)*,
+                          Caption?)>
+<!--end of mediaobject.element-->]]>
+
+<!ENTITY % mediaobject.attlist "INCLUDE">
+<![ %mediaobject.attlist; [
+<!ATTLIST MediaObject
+               %common.attrib;
+               %mediaobject.role.attrib;
+               %local.mediaobject.attrib;
+>
+<!--end of mediaobject.attlist-->]]>
+<!--end of mediaobject.module-->]]>
+
+<!ENTITY % inlinemediaobject.module "INCLUDE">
+<![ %inlinemediaobject.module; [
+<!ENTITY % local.inlinemediaobject.attrib "">
+<!ENTITY % inlinemediaobject.role.attrib "%role.attrib;">
+
+<!ENTITY % inlinemediaobject.element "INCLUDE">
+<![ %inlinemediaobject.element; [
+<!ELEMENT InlineMediaObject - - (ObjectInfo?,
+                                (%mediaobject.mix;),
+                                (%mediaobject.mix;|TextObject)*)>
+<!--end of inlinemediaobject.element-->]]>
+
+<!ENTITY % inlinemediaobject.attlist "INCLUDE">
+<![ %inlinemediaobject.attlist; [
+<!ATTLIST InlineMediaObject
+               %common.attrib;
+               %inlinemediaobject.role.attrib;
+               %local.inlinemediaobject.attrib;
+>
+<!--end of inlinemediaobject.attlist-->]]>
+<!--end of inlinemediaobject.module-->]]>
+
+<!ENTITY % videoobject.module "INCLUDE">
+<![ %videoobject.module; [
+<!ENTITY % local.videoobject.attrib "">
+<!ENTITY % videoobject.role.attrib "%role.attrib;">
+
+<!ENTITY % videoobject.element "INCLUDE">
+<![ %videoobject.element; [
+<!ELEMENT VideoObject - - (ObjectInfo?, VideoData)>
+<!--end of videoobject.element-->]]>
+
+<!ENTITY % videoobject.attlist "INCLUDE">
+<![ %videoobject.attlist; [
+<!ATTLIST VideoObject
+               %common.attrib;
+               %videoobject.role.attrib;
+               %local.videoobject.attrib;
+>
+<!--end of videoobject.attlist-->]]>
+<!--end of videoobject.module-->]]>
+
+<!ENTITY % audioobject.module "INCLUDE">
+<![ %audioobject.module; [
+<!ENTITY % local.audioobject.attrib "">
+<!ENTITY % audioobject.role.attrib "%role.attrib;">
+
+<!ENTITY % audioobject.element "INCLUDE">
+<![ %audioobject.element; [
+<!ELEMENT AudioObject - - (ObjectInfo?, AudioData)>
+<!--end of audioobject.element-->]]>
+
+<!ENTITY % audioobject.attlist "INCLUDE">
+<![ %audioobject.attlist; [
+<!ATTLIST AudioObject
+               %common.attrib;
+               %audioobject.role.attrib;
+               %local.audioobject.attrib;
+>
+<!--end of audioobject.attlist-->]]>
+<!--end of audioobject.module-->]]>
+
+<!ENTITY % imageobject.module "INCLUDE">
+<![ %imageobject.module; [
+<!ENTITY % local.imageobject.attrib "">
+<!ENTITY % imageobject.role.attrib "%role.attrib;">
+
+<!ENTITY % imageobject.element "INCLUDE">
+<![ %imageobject.element; [
+<!ELEMENT ImageObject - - (ObjectInfo?, ImageData)>
+<!--end of imageobject.element-->]]>
+
+<!ENTITY % imageobject.attlist "INCLUDE">
+<![ %imageobject.attlist; [
+<!ATTLIST ImageObject
+               %common.attrib;
+               %imageobject.role.attrib;
+               %local.imageobject.attrib;
+>
+<!--end of imageobject.attlist-->]]>
+<!--end of imageobject.module-->]]>
+
+<!ENTITY % textobject.module "INCLUDE">
+<![ %textobject.module; [
+<!ENTITY % local.textobject.attrib "">
+<!ENTITY % textobject.role.attrib "%role.attrib;">
+
+<!ENTITY % textobject.element "INCLUDE">
+<![ %textobject.element; [
+<!ELEMENT TextObject - - (ObjectInfo?, (Phrase|(%textobject.mix;)+))>
+<!--end of textobject.element-->]]>
+
+<!ENTITY % textobject.attlist "INCLUDE">
+<![ %textobject.attlist; [
+<!ATTLIST TextObject
+               %common.attrib;
+               %textobject.role.attrib;
+               %local.textobject.attrib;
+>
+<!--end of textobject.attlist-->]]>
+<!--end of textobject.module-->]]>
+
+<!ENTITY % objectinfo.module "INCLUDE">
+<![ %objectinfo.module; [
+<!ENTITY % local.objectinfo.attrib "">
+<!ENTITY % objectinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % objectinfo.element "INCLUDE">
+<![ %objectinfo.element; [
+<!ELEMENT ObjectInfo - - ((Graphic | MediaObject | LegalNotice | ModeSpec 
+       | SubjectSet | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
+       -(BeginPage)>
+<!--end of objectinfo.element-->]]>
+
+<!ENTITY % objectinfo.attlist "INCLUDE">
+<![ %objectinfo.attlist; [
+<!ATTLIST ObjectInfo
+               %common.attrib;
+               %objectinfo.role.attrib;
+               %local.objectinfo.attrib;
+>
+<!--end of objectinfo.attlist-->]]>
+<!--end of objectinfo.module-->]]>
+
+<!ENTITY % local.objectdata.attrib "">
+<!ENTITY % objectdata.attrib
+       "
+       --EntityRef: Name of an external entity containing the content
+       of the object data--
+       EntityRef       ENTITY          #IMPLIED
+
+       --FileRef: Filename, qualified by a pathname if desired, 
+       designating the file containing the content of the object data--
+       FileRef         CDATA           #IMPLIED
+
+       --Format: Notation of the element content, if any--
+       Format          (%notation.class;)
+                                       #IMPLIED
+
+       --SrcCredit: Information about the source of the image--
+       SrcCredit       CDATA           #IMPLIED
+
+       %local.objectdata.attrib;"
+>
+
+<!ENTITY % videodata.module "INCLUDE">
+<![ %videodata.module; [
+<!ENTITY % local.videodata.attrib "">
+<!ENTITY % videodata.role.attrib "%role.attrib;">
+
+<!ENTITY % videodata.element "INCLUDE">
+<![ %videodata.element; [
+<!ELEMENT VideoData - O EMPTY>
+<!--end of videodata.element-->]]>
+
+<!ENTITY % videodata.attlist "INCLUDE">
+<![ %videodata.attlist; [
+<!ATTLIST VideoData
+               %common.attrib;
+               %objectdata.attrib;
+
+       --Width: Same as CALS reprowid (desired width)--
+       Width           NUTOKEN         #IMPLIED
+
+       --Depth: Same as CALS reprodep (desired depth)--
+       Depth           NUTOKEN         #IMPLIED
+
+       --Align: Same as CALS hplace with 'none' removed; #IMPLIED means 
+       application-specific--
+       Align           (Left
+                       |Right 
+                       |Center)        #IMPLIED
+
+       --Scale: Conflation of CALS hscale and vscale--
+       Scale           NUMBER          #IMPLIED
+
+       --Scalefit: Same as CALS scalefit--
+       Scalefit        %yesorno.attvals;
+                                       #IMPLIED
+
+               %videodata.role.attrib;
+               %local.videodata.attrib;
+>
+<!--end of videodata.attlist-->]]>
+<!--end of videodata.module-->]]>
+
+<!ENTITY % audiodata.module "INCLUDE">
+<![ %audiodata.module; [
+<!ENTITY % local.audiodata.attrib "">
+<!ENTITY % audiodata.role.attrib "%role.attrib;">
+
+<!ENTITY % audiodata.element "INCLUDE">
+<![ %audiodata.element; [
+<!ELEMENT AudioData - O EMPTY>
+<!--end of audiodata.element-->]]>
+
+<!ENTITY % audiodata.attlist "INCLUDE">
+<![ %audiodata.attlist; [
+<!ATTLIST AudioData
+               %common.attrib;
+               %objectdata.attrib;
+               %local.audiodata.attrib;
+               %audiodata.role.attrib;
+>
+<!--end of audiodata.attlist-->]]>
+<!--end of audiodata.module-->]]>
+
+<!ENTITY % imagedata.module "INCLUDE">
+<![ %imagedata.module; [
+<!ENTITY % local.imagedata.attrib "">
+<!ENTITY % imagedata.role.attrib "%role.attrib;">
+
+<!ENTITY % imagedata.element "INCLUDE">
+<![ %imagedata.element; [
+<!ELEMENT ImageData - O EMPTY>
+<!--end of imagedata.element-->]]>
+
+<!ENTITY % imagedata.attlist "INCLUDE">
+<![ %imagedata.attlist; [
+<!ATTLIST ImageData
+               %common.attrib;
+               %objectdata.attrib;
+
+       --Width: Same as CALS reprowid (desired width)--
+       Width           NUTOKEN         #IMPLIED
+
+       --Depth: Same as CALS reprodep (desired depth)--
+       Depth           NUTOKEN         #IMPLIED
+
+       --Align: Same as CALS hplace with 'none' removed; #IMPLIED means 
+       application-specific--
+       Align           (Left
+                       |Right 
+                       |Center)        #IMPLIED
+
+       --Scale: Conflation of CALS hscale and vscale--
+       Scale           NUMBER          #IMPLIED
+
+       --Scalefit: Same as CALS scalefit--
+       Scalefit        %yesorno.attvals;
+                                       #IMPLIED
+
+               %local.imagedata.attrib;
+               %imagedata.role.attrib;
+>
+<!--end of imagedata.attlist-->]]>
+<!--end of imagedata.module-->]]>
+
+<!ENTITY % caption.module "INCLUDE">
+<![ %caption.module; [
+<!ENTITY % local.caption.attrib "">
+<!ENTITY % caption.role.attrib "%role.attrib;">
+
+<!ENTITY % caption.element "INCLUDE">
+<![ %caption.element; [
+<!ELEMENT Caption - - (%textobject.mix;)*>
+<!--end of caption.element-->]]>
+
+<!ENTITY % caption.attlist "INCLUDE">
+<![ %caption.attlist; [
+<!ATTLIST Caption
+               %common.attrib;
+               %local.caption.attrib;
+               %caption.role.attrib;
+>
+<!--end of caption.attlist-->]]>
+<!--end of caption.module-->]]>
+
+<!ENTITY % mediaobjectco.module "INCLUDE">
+<![ %mediaobjectco.module; [
+<!ENTITY % local.mediaobjectco.attrib "">
+<!ENTITY % mediaobjectco.role.attrib "%role.attrib;">
+
+<!ENTITY % mediaobjectco.element "INCLUDE">
+<![ %mediaobjectco.element; [
+<!ELEMENT MediaObjectCO - - (ObjectInfo?, ImageObjectCO,
+                          (ImageObjectCO|TextObject)*)>
+<!--end of mediaobjectco.element-->]]>
+
+<!ENTITY % mediaobjectco.attlist "INCLUDE">
+<![ %mediaobjectco.attlist; [
+<!ATTLIST MediaObjectCO
+               %common.attrib;
+               %mediaobjectco.role.attrib;
+               %local.mediaobjectco.attrib;
+>
+<!--end of mediaobjectco.attlist-->]]>
+<!--end of mediaobjectco.module-->]]>
+
+<!ENTITY % imageobjectco.module "INCLUDE">
+<![ %imageobjectco.module; [
+<!ENTITY % local.imageobjectco.attrib "">
+<!ENTITY % imageobjectco.role.attrib "%role.attrib;">
+
+<!ENTITY % imageobjectco.element "INCLUDE">
+<![ %imageobjectco.element; [
+<!ELEMENT ImageObjectCO - - (AreaSpec, ImageObject, CalloutList*)>
+<!--end of imageobjectco.element-->]]>
+
+<!ENTITY % imageobjectco.attlist "INCLUDE">
+<![ %imageobjectco.attlist; [
+<!ATTLIST ImageObjectCO
+               %common.attrib;
+               %imageobjectco.role.attrib;
+               %local.imageobjectco.attrib;
+>
+<!--end of imageobjectco.attlist-->]]>
+<!--end of imageobjectco.module-->]]>
+<!--end of mediaobject.content.module-->]]>
+
+<!-- Equations ........................ -->
+
+<!-- This PE provides a mechanism for replacing equation content, -->
+<!-- perhaps adding a new or different model (e.g., MathML) -->
+<!ENTITY % equation.content "(Alt?, (Graphic+|MediaObject+))">
+<!ENTITY % inlineequation.content "(Alt?, (Graphic+|InlineMediaObject+))">
+
+<!ENTITY % equation.module "INCLUDE">
+<![ %equation.module; [
+<!ENTITY % local.equation.attrib "">
+<!ENTITY % equation.role.attrib "%role.attrib;">
+
+<!ENTITY % equation.element "INCLUDE">
+<![ %equation.element; [
+<!ELEMENT Equation - - ((%formalobject.title.content;)?, (InformalEquation |
+               %equation.content;))>
+<!--end of equation.element-->]]>
+
+<!ENTITY % equation.attlist "INCLUDE">
+<![ %equation.attlist; [
+<!ATTLIST Equation
+               %label.attrib;
+               %common.attrib;
+               %equation.role.attrib;
+               %local.equation.attrib;
+>
+<!--end of equation.attlist-->]]>
+<!--end of equation.module-->]]>
+
+<!ENTITY % informalequation.module "INCLUDE">
+<![ %informalequation.module; [
+<!ENTITY % local.informalequation.attrib "">
+<!ENTITY % informalequation.role.attrib "%role.attrib;">
+
+<!ENTITY % informalequation.element "INCLUDE">
+<![ %informalequation.element; [
+<!ELEMENT InformalEquation - - (%equation.content;)>
+<!--end of informalequation.element-->]]>
+
+<!ENTITY % informalequation.attlist "INCLUDE">
+<![ %informalequation.attlist; [
+<!ATTLIST InformalEquation
+               %common.attrib;
+               %informalequation.role.attrib;
+               %local.informalequation.attrib;
+>
+<!--end of informalequation.attlist-->]]>
+<!--end of informalequation.module-->]]>
+
+<!ENTITY % inlineequation.module "INCLUDE">
+<![ %inlineequation.module; [
+<!ENTITY % local.inlineequation.attrib "">
+<!ENTITY % inlineequation.role.attrib "%role.attrib;">
+
+<!ENTITY % inlineequation.element "INCLUDE">
+<![ %inlineequation.element; [
+<!ELEMENT InlineEquation - - (%inlineequation.content;)>
+<!--end of inlineequation.element-->]]>
+
+<!ENTITY % inlineequation.attlist "INCLUDE">
+<![ %inlineequation.attlist; [
+<!ATTLIST InlineEquation
+               %common.attrib;
+               %inlineequation.role.attrib;
+               %local.inlineequation.attrib;
+>
+<!--end of inlineequation.attlist-->]]>
+<!--end of inlineequation.module-->]]>
+
+<!ENTITY % alt.module "INCLUDE">
+<![ %alt.module; [
+<!ENTITY % local.alt.attrib "">
+<!ENTITY % alt.role.attrib "%role.attrib;">
+
+<!ENTITY % alt.element "INCLUDE">
+<![ %alt.element; [
+<!ELEMENT Alt - - (#PCDATA)>
+<!--end of alt.element-->]]>
+
+<!ENTITY % alt.attlist "INCLUDE">
+<![ %alt.attlist; [
+<!ATTLIST Alt 
+               %common.attrib;
+               %alt.role.attrib;
+               %local.alt.attrib;
+>
+<!--end of alt.attlist-->]]>
+<!--end of alt.module-->]]>
+
+<!-- Tables ........................... -->
+
+<!ENTITY % table.module "INCLUDE">
+<![ %table.module; [
+
+<!ENTITY % tables.role.attrib "%role.attrib;">
+
+<!-- Add Label attribute to Table element (and InformalTable element). -->
+<!ENTITY % bodyatt "%label.attrib;">
+
+<!-- Add common attributes to Table, TGroup, TBody, THead, TFoot, Row, 
+     EntryTbl, and Entry (and InformalTable element). -->
+<!ENTITY % secur
+       "%common.attrib;
+       %tables.role.attrib;">
+
+<!-- Remove Chart. -->
+<!ENTITY % tbl.table.name "Table">
+
+<!-- Content model for Table. -->
+<!ENTITY % tbl.table.mdl
+       "((%formalobject.title.content;),
+          (%ndxterm.class;)*,
+          (Graphic+|MediaObject+|tgroup+))">
+
+<!-- Exclude all DocBook tables and formal objects. -->
+<!ENTITY % tbl.table.excep "-(InformalTable|%formal.class;)">
+
+<!-- Remove pgbrk exception on Row. -->
+<!ENTITY % tbl.row.excep "">
+
+<!-- Allow either objects or inlines; beware of REs between elements. -->
+<!ENTITY % tbl.entry.mdl "((%tabentry.mix;)+ | (%para.char.mix;)+)">
+
+<!-- Remove pgbrk exception on Entry. -->
+<!ENTITY % tbl.entry.excep "">
+
+<!-- Remove pgbrk exception on EntryTbl, but leave exclusion of itself. -->
+<!ENTITY % tbl.entrytbl.excep "-(entrytbl)">
+
+<!-- Reference CALS table module. -->
+<!ENTITY % calstbls PUBLIC "-//USA-DOD//DTD Table Model 951010//EN">
+%calstbls;
+<!--end of table.module-->]]>
+
+<!ENTITY % informaltable.module "INCLUDE">
+<![ %informaltable.module; [
+
+<!-- Note that InformalTable is dependent on some of the entity
+     declarations that customize Table. -->
+
+<!ENTITY % local.informaltable.attrib "">
+
+<!ENTITY % informaltable.element "INCLUDE">
+<![ %informaltable.element; [
+<!ELEMENT InformalTable - - (Graphic+|MediaObject+|tgroup+) %tbl.table.excep;>
+<!--end of informaltable.element-->]]>
+
+<!ENTITY % informaltable.attlist "INCLUDE">
+<![ %informaltable.attlist; [
+<!ATTLIST InformalTable
+               --
+               Frame, Colsep, and Rowsep must be repeated because
+               they are not in entities in the table module.
+               --
+               Frame           (Top
+                               |Bottom
+                               |Topbot
+                               |All
+                               |Sides
+                               |None)                  #IMPLIED
+               Colsep          %yesorno.attvals;       #IMPLIED
+               Rowsep          %yesorno.attvals;       #IMPLIED
+               %tbl.table.att; -- includes TabStyle, ToCentry, ShortEntry, 
+                               Orient, PgWide --
+               %bodyatt; -- includes Label --
+               %secur; -- includes common attributes --
+               %local.informaltable.attrib;
+>
+<!--end of informaltable.attlist-->]]>
+<!--end of informaltable.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Synopses ............................................................. -->
+
+<!-- Synopsis ......................... -->
+
+<!ENTITY % synopsis.module "INCLUDE">
+<![ %synopsis.module; [
+<!ENTITY % local.synopsis.attrib "">
+<!ENTITY % synopsis.role.attrib "%role.attrib;">
+
+<!ENTITY % synopsis.element "INCLUDE">
+<![ %synopsis.element; [
+<!ELEMENT Synopsis - - ((CO | LineAnnotation | %para.char.mix;
+               | Graphic | MediaObject)+)>
+<!--end of synopsis.element-->]]>
+
+<!ENTITY % synopsis.attlist "INCLUDE">
+<![ %synopsis.attlist; [
+<!ATTLIST Synopsis
+               %label.attrib;
+               %linespecific.attrib;
+               %common.attrib;
+               %synopsis.role.attrib;
+               %local.synopsis.attrib;
+>
+<!--end of synopsis.attlist-->]]>
+
+<!-- LineAnnotation (defined in the Inlines section, below)-->
+<!--end of synopsis.module-->]]>
+
+<!-- CmdSynopsis ...................... -->
+
+<!ENTITY % cmdsynopsis.content.module "INCLUDE">
+<![ %cmdsynopsis.content.module; [
+<!ENTITY % cmdsynopsis.module "INCLUDE">
+<![ %cmdsynopsis.module; [
+<!ENTITY % local.cmdsynopsis.attrib "">
+<!ENTITY % cmdsynopsis.role.attrib "%role.attrib;">
+
+<!ENTITY % cmdsynopsis.element "INCLUDE">
+<![ %cmdsynopsis.element; [
+<!ELEMENT CmdSynopsis - - ((Command | Arg | Group | SBR)+, SynopFragment*)>
+<!--end of cmdsynopsis.element-->]]>
+
+<!ENTITY % cmdsynopsis.attlist "INCLUDE">
+<![ %cmdsynopsis.attlist; [
+<!ATTLIST CmdSynopsis
+               %label.attrib;
+               --
+               Sepchar: Character that should separate command and all 
+               top-level arguments; alternate value might be e.g., &Delta;
+               --
+               Sepchar         CDATA           " "
+               --
+               CmdLength: Length beyond which the presentation engine
+               may consider a Command too long and select an alternate
+               presentation of the Command and, or, its associated
+               arguments.
+               --
+               CmdLength       CDATA           #IMPLIED
+               %common.attrib;
+               %cmdsynopsis.role.attrib;
+               %local.cmdsynopsis.attrib;
+>
+<!--end of cmdsynopsis.attlist-->]]>
+<!--end of cmdsynopsis.module-->]]>
+
+<!ENTITY % arg.module "INCLUDE">
+<![ %arg.module; [
+<!ENTITY % local.arg.attrib "">
+<!ENTITY % arg.role.attrib "%role.attrib;">
+
+<!ENTITY % arg.element "INCLUDE">
+<![ %arg.element; [
+<!ELEMENT Arg - - ((#PCDATA 
+               | Arg 
+               | Group 
+               | Option 
+               | SynopFragmentRef 
+               | Replaceable
+               | SBR)+)>
+<!--end of arg.element-->]]>
+
+<!ENTITY % arg.attlist "INCLUDE">
+<![ %arg.attlist; [
+<!ATTLIST Arg
+               --
+               Choice: Whether Arg must be supplied: Opt (optional to 
+               supply, e.g. [arg]; the default), Req (required to supply, 
+               e.g. {arg}), or Plain (required to supply, e.g. arg)
+               --
+               Choice          (Opt
+                               |Req
+                               |Plain)         Opt
+               --
+               Rep: whether Arg is repeatable: Norepeat (e.g. arg without 
+               ellipsis; the default), or Repeat (e.g. arg...)
+               --
+               Rep             (Norepeat
+                               |Repeat)        Norepeat
+               %common.attrib;
+               %arg.role.attrib;
+               %local.arg.attrib;
+>
+<!--end of arg.attlist-->]]>
+<!--end of arg.module-->]]>
+
+<!ENTITY % group.module "INCLUDE">
+<![ %group.module; [
+
+<!ENTITY % local.group.attrib "">
+<!ENTITY % group.role.attrib "%role.attrib;">
+
+<!ENTITY % group.element "INCLUDE">
+<![ %group.element; [
+<!ELEMENT Group - - ((Arg | Group | Option | SynopFragmentRef 
+               | Replaceable | SBR)+)>
+<!--end of group.element-->]]>
+
+<!ENTITY % group.attlist "INCLUDE">
+<![ %group.attlist; [
+<!ATTLIST Group
+               --
+               Choice: Whether Group must be supplied: Opt (optional to
+               supply, e.g.  [g1|g2|g3]; the default), Req (required to
+               supply, e.g.  {g1|g2|g3}), Plain (required to supply,
+               e.g.  g1|g2|g3), OptMult (can supply zero or more, e.g.
+               [[g1|g2|g3]]), or ReqMult (must supply one or more, e.g.
+               {{g1|g2|g3}})
+               --
+               Choice          (Opt
+                               |Req
+                               |Plain)         Opt
+               --
+               Rep: whether Group is repeatable: Norepeat (e.g. group 
+               without ellipsis; the default), or Repeat (e.g. group...)
+               --
+               Rep             (Norepeat
+                               |Repeat)        Norepeat
+               %common.attrib;
+               %group.role.attrib;
+               %local.group.attrib;
+>
+<!--end of group.attlist-->]]>
+<!--end of group.module-->]]>
+
+<!ENTITY % sbr.module "INCLUDE">
+<![ %sbr.module; [
+<!ENTITY % local.sbr.attrib "">
+<!-- Synopsis break -->
+<!ENTITY % sbr.role.attrib "%role.attrib;">
+
+<!ENTITY % sbr.element "INCLUDE">
+<![ %sbr.element; [
+<!ELEMENT SBR - O EMPTY>
+<!--end of sbr.element-->]]>
+
+<!ENTITY % sbr.attlist "INCLUDE">
+<![ %sbr.attlist; [
+<!ATTLIST SBR
+               %common.attrib;
+               %sbr.role.attrib;
+               %local.sbr.attrib;
+>
+<!--end of sbr.attlist-->]]>
+<!--end of sbr.module-->]]>
+
+<!ENTITY % synopfragmentref.module "INCLUDE">
+<![ %synopfragmentref.module; [
+<!ENTITY % local.synopfragmentref.attrib "">
+<!ENTITY % synopfragmentref.role.attrib "%role.attrib;">
+
+<!ENTITY % synopfragmentref.element "INCLUDE">
+<![ %synopfragmentref.element; [
+<!ELEMENT SynopFragmentRef - - RCDATA >
+<!--end of synopfragmentref.element-->]]>
+
+<!ENTITY % synopfragmentref.attlist "INCLUDE">
+<![ %synopfragmentref.attlist; [
+<!ATTLIST SynopFragmentRef
+               %linkendreq.attrib; --to SynopFragment of complex synopsis
+                       material for separate referencing--
+               %common.attrib;
+               %synopfragmentref.role.attrib;
+               %local.synopfragmentref.attrib;
+>
+<!--end of synopfragmentref.attlist-->]]>
+<!--end of synopfragmentref.module-->]]>
+
+<!ENTITY % synopfragment.module "INCLUDE">
+<![ %synopfragment.module; [
+<!ENTITY % local.synopfragment.attrib "">
+<!ENTITY % synopfragment.role.attrib "%role.attrib;">
+
+<!ENTITY % synopfragment.element "INCLUDE">
+<![ %synopfragment.element; [
+<!ELEMENT SynopFragment - - ((Arg | Group)+)>
+<!--end of synopfragment.element-->]]>
+
+<!ENTITY % synopfragment.attlist "INCLUDE">
+<![ %synopfragment.attlist; [
+<!ATTLIST SynopFragment
+               %idreq.common.attrib;
+               %synopfragment.role.attrib;
+               %local.synopfragment.attrib;
+>
+<!--end of synopfragment.attlist-->]]>
+<!--end of synopfragment.module-->]]>
+
+<!-- Command (defined in the Inlines section, below)-->
+<!-- Option (defined in the Inlines section, below)-->
+<!-- Replaceable (defined in the Inlines section, below)-->
+<!--end of cmdsynopsis.content.module-->]]>
+
+<!-- FuncSynopsis ..................... -->
+
+<!ENTITY % funcsynopsis.content.module "INCLUDE">
+<![ %funcsynopsis.content.module; [
+<!ENTITY % funcsynopsis.module "INCLUDE">
+<![ %funcsynopsis.module; [
+
+<!ENTITY % local.funcsynopsis.attrib "">
+<!ENTITY % funcsynopsis.role.attrib "%role.attrib;">
+
+<!ENTITY % funcsynopsis.element "INCLUDE">
+<![ %funcsynopsis.element; [
+<!ELEMENT FuncSynopsis - - (FuncSynopsisInfo|FuncPrototype)+>
+<!--end of funcsynopsis.element-->]]>
+
+<!ENTITY % funcsynopsis.attlist "INCLUDE">
+<![ %funcsynopsis.attlist; [
+<!ATTLIST FuncSynopsis
+               %label.attrib;
+               %common.attrib;
+               %funcsynopsis.role.attrib;
+               %local.funcsynopsis.attrib;
+>
+<!--end of funcsynopsis.attlist-->]]>
+<!--end of funcsynopsis.module-->]]>
+
+<!ENTITY % funcsynopsisinfo.module "INCLUDE">
+<![ %funcsynopsisinfo.module; [
+<!ENTITY % local.funcsynopsisinfo.attrib "">
+<!ENTITY % funcsynopsisinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % funcsynopsisinfo.element "INCLUDE">
+<![ %funcsynopsisinfo.element; [
+<!ELEMENT FuncSynopsisInfo - O ((LineAnnotation | %cptr.char.mix;)* )>
+<!--end of funcsynopsisinfo.element-->]]>
+
+<!ENTITY % funcsynopsisinfo.attlist "INCLUDE">
+<![ %funcsynopsisinfo.attlist; [
+<!ATTLIST FuncSynopsisInfo
+               %linespecific.attrib;
+               %common.attrib;
+               %funcsynopsisinfo.role.attrib;
+               %local.funcsynopsisinfo.attrib;
+>
+<!--end of funcsynopsisinfo.attlist-->]]>
+<!--end of funcsynopsisinfo.module-->]]>
+
+<!ENTITY % funcprototype.module "INCLUDE">
+<![ %funcprototype.module; [
+<!ENTITY % local.funcprototype.attrib "">
+<!ENTITY % funcprototype.role.attrib "%role.attrib;">
+
+<!ENTITY % funcprototype.element "INCLUDE">
+<![ %funcprototype.element; [
+<!ELEMENT FuncPrototype - O (FuncDef, (Void | VarArgs | ParamDef+))>
+<!--end of funcprototype.element-->]]>
+
+<!ENTITY % funcprototype.attlist "INCLUDE">
+<![ %funcprototype.attlist; [
+<!ATTLIST FuncPrototype
+               %common.attrib;
+               %funcprototype.role.attrib;
+               %local.funcprototype.attrib;
+>
+<!--end of funcprototype.attlist-->]]>
+<!--end of funcprototype.module-->]]>
+
+<!ENTITY % funcdef.module "INCLUDE">
+<![ %funcdef.module; [
+<!ENTITY % local.funcdef.attrib "">
+<!ENTITY % funcdef.role.attrib "%role.attrib;">
+
+<!ENTITY % funcdef.element "INCLUDE">
+<![ %funcdef.element; [
+<!ELEMENT FuncDef - - ((#PCDATA 
+               | Replaceable 
+               | Function)*)>
+<!--end of funcdef.element-->]]>
+
+<!ENTITY % funcdef.attlist "INCLUDE">
+<![ %funcdef.attlist; [
+<!ATTLIST FuncDef
+               %common.attrib;
+               %funcdef.role.attrib;
+               %local.funcdef.attrib;
+>
+<!--end of funcdef.attlist-->]]>
+<!--end of funcdef.module-->]]>
+
+<!ENTITY % void.module "INCLUDE">
+<![ %void.module; [
+<!ENTITY % local.void.attrib "">
+<!ENTITY % void.role.attrib "%role.attrib;">
+
+<!ENTITY % void.element "INCLUDE">
+<![ %void.element; [
+<!ELEMENT Void - O EMPTY>
+<!--end of void.element-->]]>
+
+<!ENTITY % void.attlist "INCLUDE">
+<![ %void.attlist; [
+<!ATTLIST Void
+               %common.attrib;
+               %void.role.attrib;
+               %local.void.attrib;
+>
+<!--end of void.attlist-->]]>
+<!--end of void.module-->]]>
+
+<!ENTITY % varargs.module "INCLUDE">
+<![ %varargs.module; [
+<!ENTITY % local.varargs.attrib "">
+<!ENTITY % varargs.role.attrib "%role.attrib;">
+
+<!ENTITY % varargs.element "INCLUDE">
+<![ %varargs.element; [
+<!ELEMENT VarArgs - O EMPTY>
+<!--end of varargs.element-->]]>
+
+<!ENTITY % varargs.attlist "INCLUDE">
+<![ %varargs.attlist; [
+<!ATTLIST VarArgs
+               %common.attrib;
+               %varargs.role.attrib;
+               %local.varargs.attrib;
+>
+<!--end of varargs.attlist-->]]>
+<!--end of varargs.module-->]]>
+
+<!-- Processing assumes that only one Parameter will appear in a
+     ParamDef, and that FuncParams will be used at most once, for
+     providing information on the "inner parameters" for parameters that
+     are pointers to functions. -->
+
+<!ENTITY % paramdef.module "INCLUDE">
+<![ %paramdef.module; [
+<!ENTITY % local.paramdef.attrib "">
+<!ENTITY % paramdef.role.attrib "%role.attrib;">
+
+<!ENTITY % paramdef.element "INCLUDE">
+<![ %paramdef.element; [
+<!ELEMENT ParamDef - - ((#PCDATA 
+               | Replaceable 
+               | Parameter 
+               | FuncParams)*)>
+<!--end of paramdef.element-->]]>
+
+<!ENTITY % paramdef.attlist "INCLUDE">
+<![ %paramdef.attlist; [
+<!ATTLIST ParamDef
+               %common.attrib;
+               %paramdef.role.attrib;
+               %local.paramdef.attrib;
+>
+<!--end of paramdef.attlist-->]]>
+<!--end of paramdef.module-->]]>
+
+<!ENTITY % funcparams.module "INCLUDE">
+<![ %funcparams.module; [
+<!ENTITY % local.funcparams.attrib "">
+<!ENTITY % funcparams.role.attrib "%role.attrib;">
+
+<!ENTITY % funcparams.element "INCLUDE">
+<![ %funcparams.element; [
+<!ELEMENT FuncParams - - ((%cptr.char.mix;)*)>
+<!--end of funcparams.element-->]]>
+
+<!ENTITY % funcparams.attlist "INCLUDE">
+<![ %funcparams.attlist; [
+<!ATTLIST FuncParams
+               %common.attrib;
+               %funcparams.role.attrib;
+               %local.funcparams.attrib;
+>
+<!--end of funcparams.attlist-->]]>
+<!--end of funcparams.module-->]]>
+
+<!-- LineAnnotation (defined in the Inlines section, below)-->
+<!-- Replaceable (defined in the Inlines section, below)-->
+<!-- Function (defined in the Inlines section, below)-->
+<!-- Parameter (defined in the Inlines section, below)-->
+<!--end of funcsynopsis.content.module-->]]>
+
+<!-- ClassSynopsis ..................... -->
+
+<!ENTITY % classsynopsis.content.module "INCLUDE">
+<![%classsynopsis.content.module;[
+
+<!ENTITY % classsynopsis.module "INCLUDE">
+<![%classsynopsis.module;[
+<!ENTITY % local.classsynopsis.attrib "">
+<!ENTITY % classsynopsis.role.attrib "%role.attrib;">
+
+<!ENTITY % classsynopsis.element "INCLUDE">
+<![%classsynopsis.element;[
+<!ELEMENT ClassSynopsis - - ((OOClass|OOInterface|OOException)+,
+                             (ClassSynopsisInfo
+                              |FieldSynopsis|%method.synop.class;)*)>
+<!--end of classsynopsis.element-->]]>
+
+<!ENTITY % classsynopsis.attlist "INCLUDE">
+<![%classsynopsis.attlist;[
+<!ATTLIST ClassSynopsis
+       %common.attrib;
+       %classsynopsis.role.attrib;
+       %local.classsynopsis.attrib;
+       Language        CDATA   #IMPLIED
+       Class   (Class|Interface)       "Class"
+>
+<!--end of classsynopsis.attlist-->]]>
+<!--end of classsynopsis.module-->]]>
+
+<!ENTITY % classsynopsisinfo.module "INCLUDE">
+<![ %classsynopsisinfo.module; [
+<!ENTITY % local.classsynopsisinfo.attrib "">
+<!ENTITY % classsynopsisinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % classsynopsisinfo.element "INCLUDE">
+<![ %classsynopsisinfo.element; [
+<!ELEMENT ClassSynopsisInfo - O ((LineAnnotation | %cptr.char.mix;)* )>
+<!--end of classsynopsisinfo.element-->]]>
+
+<!ENTITY % classsynopsisinfo.attlist "INCLUDE">
+<![ %classsynopsisinfo.attlist; [
+<!ATTLIST ClassSynopsisInfo
+               %linespecific.attrib;
+               %common.attrib;
+               %classsynopsisinfo.role.attrib;
+               %local.classsynopsisinfo.attrib;
+>
+<!--end of classsynopsisinfo.attlist-->]]>
+<!--end of classsynopsisinfo.module-->]]>
+
+<!ENTITY % ooclass.module "INCLUDE">
+<![%ooclass.module;[
+<!ENTITY % local.ooclass.attrib "">
+<!ENTITY % ooclass.role.attrib "%role.attrib;">
+
+<!ENTITY % ooclass.element "INCLUDE">
+<![%ooclass.element;[
+<!ELEMENT OOClass - - (Modifier*, ClassName)>
+<!--end of ooclass.element-->]]>
+
+<!ENTITY % ooclass.attlist "INCLUDE">
+<![%ooclass.attlist;[
+<!ATTLIST OOClass
+       %common.attrib;
+       %ooclass.role.attrib;
+       %local.ooclass.attrib;
+>
+<!--end of ooclass.attlist-->]]>
+<!--end of ooclass.module-->]]>
+
+<!ENTITY % oointerface.module "INCLUDE">
+<![%oointerface.module;[
+<!ENTITY % local.oointerface.attrib "">
+<!ENTITY % oointerface.role.attrib "%role.attrib;">
+
+<!ENTITY % oointerface.element "INCLUDE">
+<![%oointerface.element;[
+<!ELEMENT OOInterface - - (Modifier*, InterfaceName)>
+<!--end of oointerface.element-->]]>
+
+<!ENTITY % oointerface.attlist "INCLUDE">
+<![%oointerface.attlist;[
+<!ATTLIST OOInterface
+       %common.attrib;
+       %oointerface.role.attrib;
+       %local.oointerface.attrib;
+>
+<!--end of oointerface.attlist-->]]>
+<!--end of oointerface.module-->]]>
+
+<!ENTITY % ooexception.module "INCLUDE">
+<![%ooexception.module;[
+<!ENTITY % local.ooexception.attrib "">
+<!ENTITY % ooexception.role.attrib "%role.attrib;">
+
+<!ENTITY % ooexception.element "INCLUDE">
+<![%ooexception.element;[
+<!ELEMENT OOException - - (Modifier*, ExceptionName)>
+<!--end of ooexception.element-->]]>
+
+<!ENTITY % ooexception.attlist "INCLUDE">
+<![%ooexception.attlist;[
+<!ATTLIST OOException
+       %common.attrib;
+       %ooexception.role.attrib;
+       %local.ooexception.attrib;
+>
+<!--end of ooexception.attlist-->]]>
+<!--end of ooexception.module-->]]>
+
+<!ENTITY % modifier.module "INCLUDE">
+<![%modifier.module;[
+<!ENTITY % local.modifier.attrib "">
+<!ENTITY % modifier.role.attrib "%role.attrib;">
+
+<!ENTITY % modifier.element "INCLUDE">
+<![%modifier.element;[
+<!ELEMENT Modifier - - (%smallcptr.char.mix;)*>
+<!--end of modifier.element-->]]>
+
+<!ENTITY % modifier.attlist "INCLUDE">
+<![%modifier.attlist;[
+<!ATTLIST Modifier
+       %common.attrib;
+       %modifier.role.attrib;
+       %local.modifier.attrib;
+>
+<!--end of modifier.attlist-->]]>
+<!--end of modifier.module-->]]>
+
+<!ENTITY % interfacename.module "INCLUDE">
+<![%interfacename.module;[
+<!ENTITY % local.interfacename.attrib "">
+<!ENTITY % interfacename.role.attrib "%role.attrib;">
+
+<!ENTITY % interfacename.element "INCLUDE">
+<![%interfacename.element;[
+<!ELEMENT InterfaceName - - (%smallcptr.char.mix;)*>
+<!--end of interfacename.element-->]]>
+
+<!ENTITY % interfacename.attlist "INCLUDE">
+<![%interfacename.attlist;[
+<!ATTLIST InterfaceName
+       %common.attrib;
+       %interfacename.role.attrib;
+       %local.interfacename.attrib;
+>
+<!--end of interfacename.attlist-->]]>
+<!--end of interfacename.module-->]]>
+
+<!ENTITY % exceptionname.module "INCLUDE">
+<![%exceptionname.module;[
+<!ENTITY % local.exceptionname.attrib "">
+<!ENTITY % exceptionname.role.attrib "%role.attrib;">
+
+<!ENTITY % exceptionname.element "INCLUDE">
+<![%exceptionname.element;[
+<!ELEMENT ExceptionName - - (%smallcptr.char.mix;)*>
+<!--end of exceptionname.element-->]]>
+
+<!ENTITY % exceptionname.attlist "INCLUDE">
+<![%exceptionname.attlist;[
+<!ATTLIST ExceptionName
+       %common.attrib;
+       %exceptionname.role.attrib;
+       %local.exceptionname.attrib;
+>
+<!--end of exceptionname.attlist-->]]>
+<!--end of exceptionname.module-->]]>
+
+<!ENTITY % fieldsynopsis.module "INCLUDE">
+<![%fieldsynopsis.module;[
+<!ENTITY % local.fieldsynopsis.attrib "">
+<!ENTITY % fieldsynopsis.role.attrib "%role.attrib;">
+
+<!ENTITY % fieldsynopsis.element "INCLUDE">
+<![%fieldsynopsis.element;[
+<!ELEMENT FieldSynopsis - - (Modifier*, Type?, VarName, Initializer?)>
+<!--end of fieldsynopsis.element-->]]>
+
+<!ENTITY % fieldsynopsis.attlist "INCLUDE">
+<![%fieldsynopsis.attlist;[
+<!ATTLIST FieldSynopsis
+       %common.attrib;
+       %fieldsynopsis.role.attrib;
+       %local.fieldsynopsis.attrib;
+>
+<!--end of fieldsynopsis.attlist-->]]>
+<!--end of fieldsynopsis.module-->]]>
+
+<!ENTITY % initializer.module "INCLUDE">
+<![%initializer.module;[
+<!ENTITY % local.initializer.attrib "">
+<!ENTITY % initializer.role.attrib "%role.attrib;">
+
+<!ENTITY % initializer.element "INCLUDE">
+<![%initializer.element;[
+<!ELEMENT Initializer - - (%smallcptr.char.mix;)*>
+<!--end of initializer.element-->]]>
+
+<!ENTITY % initializer.attlist "INCLUDE">
+<![%initializer.attlist;[
+<!ATTLIST Initializer
+       %common.attrib;
+       %initializer.role.attrib;
+       %local.initializer.attrib;
+>
+<!--end of initializer.attlist-->]]>
+<!--end of initializer.module-->]]>
+
+<!ENTITY % constructorsynopsis.module "INCLUDE">
+<![%constructorsynopsis.module;[
+<!ENTITY % local.constructorsynopsis.attrib "">
+<!ENTITY % constructorsynopsis.role.attrib "%role.attrib;">
+
+<!ENTITY % constructorsynopsis.element "INCLUDE">
+<![%constructorsynopsis.element;[
+<!ELEMENT ConstructorSynopsis - - (Modifier*,
+                                   MethodName?,
+                                   (MethodParam+|Void),
+                                   ExceptionName*)>
+<!--end of constructorsynopsis.element-->]]>
+
+<!ENTITY % constructorsynopsis.attlist "INCLUDE">
+<![%constructorsynopsis.attlist;[
+<!ATTLIST ConstructorSynopsis
+       %common.attrib;
+       %constructorsynopsis.role.attrib;
+       %local.constructorsynopsis.attrib;
+>
+<!--end of constructorsynopsis.attlist-->]]>
+<!--end of constructorsynopsis.module-->]]>
+
+<!ENTITY % destructorsynopsis.module "INCLUDE">
+<![%destructorsynopsis.module;[
+<!ENTITY % local.destructorsynopsis.attrib "">
+<!ENTITY % destructorsynopsis.role.attrib "%role.attrib;">
+
+<!ENTITY % destructorsynopsis.element "INCLUDE">
+<![%destructorsynopsis.element;[
+<!ELEMENT DestructorSynopsis - - (Modifier*,
+                                  MethodName?,
+                                  (MethodParam+|Void),
+                                  ExceptionName*)>
+<!--end of destructorsynopsis.element-->]]>
+
+<!ENTITY % destructorsynopsis.attlist "INCLUDE">
+<![%destructorsynopsis.attlist;[
+<!ATTLIST DestructorSynopsis
+       %common.attrib;
+       %destructorsynopsis.role.attrib;
+       %local.destructorsynopsis.attrib;
+>
+<!--end of destructorsynopsis.attlist-->]]>
+<!--end of destructorsynopsis.module-->]]>
+
+<!ENTITY % methodsynopsis.module "INCLUDE">
+<![%methodsynopsis.module;[
+<!ENTITY % local.methodsynopsis.attrib "">
+<!ENTITY % methodsynopsis.role.attrib "%role.attrib;">
+
+<!ENTITY % methodsynopsis.element "INCLUDE">
+<![%methodsynopsis.element;[
+<!ELEMENT MethodSynopsis - - (Modifier*,
+                              (Type|Void)?,
+                              MethodName,
+                              (MethodParam+|Void),
+                              ExceptionName*,
+                              Modifier*)>
+<!--end of methodsynopsis.element-->]]>
+
+<!ENTITY % methodsynopsis.attlist "INCLUDE">
+<![%methodsynopsis.attlist;[
+<!ATTLIST MethodSynopsis
+       %common.attrib;
+       %methodsynopsis.role.attrib;
+       %local.methodsynopsis.attrib;
+>
+<!--end of methodsynopsis.attlist-->]]>
+<!--end of methodsynopsis.module-->]]>
+
+<!ENTITY % methodname.module "INCLUDE">
+<![%methodname.module;[
+<!ENTITY % local.methodname.attrib "">
+<!ENTITY % methodname.role.attrib "%role.attrib;">
+
+<!ENTITY % methodname.element "INCLUDE">
+<![%methodname.element;[
+<!ELEMENT MethodName - - (%smallcptr.char.mix;)*>
+<!--end of methodname.element-->]]>
+
+<!ENTITY % methodname.attlist "INCLUDE">
+<![%methodname.attlist;[
+<!ATTLIST MethodName
+       %common.attrib;
+       %methodname.role.attrib;
+       %local.methodname.attrib;
+>
+<!--end of methodname.attlist-->]]>
+<!--end of methodname.module-->]]>
+
+<!ENTITY % methodparam.module "INCLUDE">
+<![%methodparam.module;[
+<!ENTITY % local.methodparam.attrib "">
+<!ENTITY % methodparam.role.attrib "%role.attrib;">
+
+<!ENTITY % methodparam.element "INCLUDE">
+<![%methodparam.element;[
+<!ELEMENT MethodParam - - (Modifier*,
+                           Type?, ((Parameter,Initializer?)|FuncParams),
+                           Modifier*)>
+<!--end of methodparam.element-->]]>
+
+<!ENTITY % methodparam.attlist "INCLUDE">
+<![%methodparam.attlist;[
+<!ATTLIST MethodParam
+       %common.attrib;
+       %methodparam.role.attrib;
+       %local.methodparam.attrib;
+       Choice          (Opt
+                       |Req
+                       |Plain)         "Req"
+       Rep             (Norepeat
+                       |Repeat)        "Norepeat"
+>
+<!--end of methodparam.attlist-->]]>
+<!--end of methodparam.module-->]]>
+<!--end of classsynopsis.content.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Document information entities and elements ........................... -->
+
+<!-- The document information elements include some elements that are
+     currently used only in the document hierarchy module. They are
+     defined here so that they will be available for use in customized
+     document hierarchies. -->
+
+<!-- .................................. -->
+
+<!ENTITY % docinfo.content.module "INCLUDE">
+<![ %docinfo.content.module; [
+
+<!-- Ackno ............................ -->
+
+<!ENTITY % ackno.module "INCLUDE">
+<![ %ackno.module; [
+<!ENTITY % local.ackno.attrib "">
+<!ENTITY % ackno.role.attrib "%role.attrib;">
+
+<!ENTITY % ackno.element "INCLUDE">
+<![ %ackno.element; [
+<!ELEMENT Ackno - - ((%docinfo.char.mix;)+)>
+<!--end of ackno.element-->]]>
+
+<!ENTITY % ackno.attlist "INCLUDE">
+<![ %ackno.attlist; [
+<!ATTLIST Ackno
+               %common.attrib;
+               %ackno.role.attrib;
+               %local.ackno.attrib;
+>
+<!--end of ackno.attlist-->]]>
+<!--end of ackno.module-->]]>
+
+<!-- Address .......................... -->
+
+<!ENTITY % address.content.module "INCLUDE">
+<![ %address.content.module; [
+<!ENTITY % address.module "INCLUDE">
+<![ %address.module; [
+<!ENTITY % local.address.attrib "">
+<!ENTITY % address.role.attrib "%role.attrib;">
+
+<!ENTITY % address.element "INCLUDE">
+<![ %address.element; [
+<!ELEMENT Address - - (#PCDATA|%person.ident.mix;
+                      |Street|POB|Postcode|City|State|Country|Phone
+                      |Fax|Email|OtherAddr)*>
+<!--end of address.element-->]]>
+
+<!ENTITY % address.attlist "INCLUDE">
+<![ %address.attlist; [
+<!ATTLIST Address
+               %linespecific.attrib;
+               %common.attrib;
+               %address.role.attrib;
+               %local.address.attrib;
+>
+<!--end of address.attlist-->]]>
+<!--end of address.module-->]]>
+
+  <!ENTITY % street.module "INCLUDE">
+  <![ %street.module; [
+ <!ENTITY % local.street.attrib "">
+  <!ENTITY % street.role.attrib "%role.attrib;">
+  
+<!ENTITY % street.element "INCLUDE">
+<![ %street.element; [
+<!ELEMENT Street - - ((%docinfo.char.mix;)+)>
+<!--end of street.element-->]]>
+  
+<!ENTITY % street.attlist "INCLUDE">
+<![ %street.attlist; [
+<!ATTLIST Street
+               %common.attrib;
+               %street.role.attrib;
+               %local.street.attrib;
+>
+<!--end of street.attlist-->]]>
+  <!--end of street.module-->]]>
+
+  <!ENTITY % pob.module "INCLUDE">
+  <![ %pob.module; [
+  <!ENTITY % local.pob.attrib "">
+  <!ENTITY % pob.role.attrib "%role.attrib;">
+  
+<!ENTITY % pob.element "INCLUDE">
+<![ %pob.element; [
+<!ELEMENT POB - - ((%docinfo.char.mix;)+)>
+<!--end of pob.element-->]]>
+  
+<!ENTITY % pob.attlist "INCLUDE">
+<![ %pob.attlist; [
+<!ATTLIST POB
+               %common.attrib;
+               %pob.role.attrib;
+               %local.pob.attrib;
+>
+<!--end of pob.attlist-->]]>
+  <!--end of pob.module-->]]>
+
+  <!ENTITY % postcode.module "INCLUDE">
+  <![ %postcode.module; [
+  <!ENTITY % local.postcode.attrib "">
+  <!ENTITY % postcode.role.attrib "%role.attrib;">
+  
+<!ENTITY % postcode.element "INCLUDE">
+<![ %postcode.element; [
+<!ELEMENT Postcode - - ((%docinfo.char.mix;)+)>
+<!--end of postcode.element-->]]>
+  
+<!ENTITY % postcode.attlist "INCLUDE">
+<![ %postcode.attlist; [
+<!ATTLIST Postcode
+               %common.attrib;
+               %postcode.role.attrib;
+               %local.postcode.attrib;
+>
+<!--end of postcode.attlist-->]]>
+  <!--end of postcode.module-->]]>
+
+  <!ENTITY % city.module "INCLUDE">
+  <![ %city.module; [
+  <!ENTITY % local.city.attrib "">
+  <!ENTITY % city.role.attrib "%role.attrib;">
+  
+<!ENTITY % city.element "INCLUDE">
+<![ %city.element; [
+<!ELEMENT City - - ((%docinfo.char.mix;)+)>
+<!--end of city.element-->]]>
+  
+<!ENTITY % city.attlist "INCLUDE">
+<![ %city.attlist; [
+<!ATTLIST City
+               %common.attrib;
+               %city.role.attrib;
+               %local.city.attrib;
+>
+<!--end of city.attlist-->]]>
+  <!--end of city.module-->]]>
+
+  <!ENTITY % state.module "INCLUDE">
+  <![ %state.module; [
+  <!ENTITY % local.state.attrib "">
+  <!ENTITY % state.role.attrib "%role.attrib;">
+  
+<!ENTITY % state.element "INCLUDE">
+<![ %state.element; [
+<!ELEMENT State - - ((%docinfo.char.mix;)+)>
+<!--end of state.element-->]]>
+  
+<!ENTITY % state.attlist "INCLUDE">
+<![ %state.attlist; [
+<!ATTLIST State
+               %common.attrib;
+               %state.role.attrib;
+               %local.state.attrib;
+>
+<!--end of state.attlist-->]]>
+  <!--end of state.module-->]]>
+
+  <!ENTITY % country.module "INCLUDE">
+  <![ %country.module; [
+  <!ENTITY % local.country.attrib "">
+  <!ENTITY % country.role.attrib "%role.attrib;">
+  
+<!ENTITY % country.element "INCLUDE">
+<![ %country.element; [
+<!ELEMENT Country - - ((%docinfo.char.mix;)+)>
+<!--end of country.element-->]]>
+  
+<!ENTITY % country.attlist "INCLUDE">
+<![ %country.attlist; [
+<!ATTLIST Country
+               %common.attrib;
+               %country.role.attrib;
+               %local.country.attrib;
+>
+<!--end of country.attlist-->]]>
+  <!--end of country.module-->]]>
+
+  <!ENTITY % phone.module "INCLUDE">
+  <![ %phone.module; [
+  <!ENTITY % local.phone.attrib "">
+  <!ENTITY % phone.role.attrib "%role.attrib;">
+  
+<!ENTITY % phone.element "INCLUDE">
+<![ %phone.element; [
+<!ELEMENT Phone - - ((%docinfo.char.mix;)+)>
+<!--end of phone.element-->]]>
+  
+<!ENTITY % phone.attlist "INCLUDE">
+<![ %phone.attlist; [
+<!ATTLIST Phone
+               %common.attrib;
+               %phone.role.attrib;
+               %local.phone.attrib;
+>
+<!--end of phone.attlist-->]]>
+  <!--end of phone.module-->]]>
+
+  <!ENTITY % fax.module "INCLUDE">
+  <![ %fax.module; [
+  <!ENTITY % local.fax.attrib "">
+  <!ENTITY % fax.role.attrib "%role.attrib;">
+  
+<!ENTITY % fax.element "INCLUDE">
+<![ %fax.element; [
+<!ELEMENT Fax - - ((%docinfo.char.mix;)+)>
+<!--end of fax.element-->]]>
+  
+<!ENTITY % fax.attlist "INCLUDE">
+<![ %fax.attlist; [
+<!ATTLIST Fax
+               %common.attrib;
+               %fax.role.attrib;
+               %local.fax.attrib;
+>
+<!--end of fax.attlist-->]]>
+  <!--end of fax.module-->]]>
+
+  <!-- Email (defined in the Inlines section, below)-->
+
+  <!ENTITY % otheraddr.module "INCLUDE">
+  <![ %otheraddr.module; [
+  <!ENTITY % local.otheraddr.attrib "">
+  <!ENTITY % otheraddr.role.attrib "%role.attrib;">
+  
+<!ENTITY % otheraddr.element "INCLUDE">
+<![ %otheraddr.element; [
+<!ELEMENT OtherAddr - - ((%docinfo.char.mix;)+)>
+<!--end of otheraddr.element-->]]>
+  
+<!ENTITY % otheraddr.attlist "INCLUDE">
+<![ %otheraddr.attlist; [
+<!ATTLIST OtherAddr
+               %common.attrib;
+               %otheraddr.role.attrib;
+               %local.otheraddr.attrib;
+>
+<!--end of otheraddr.attlist-->]]>
+  <!--end of otheraddr.module-->]]>
+<!--end of address.content.module-->]]>
+
+<!-- Affiliation ...................... -->
+
+<!ENTITY % affiliation.content.module "INCLUDE">
+<![ %affiliation.content.module; [
+<!ENTITY % affiliation.module "INCLUDE">
+<![ %affiliation.module; [
+<!ENTITY % local.affiliation.attrib "">
+<!ENTITY % affiliation.role.attrib "%role.attrib;">
+
+<!ENTITY % affiliation.element "INCLUDE">
+<![ %affiliation.element; [
+<!ELEMENT Affiliation - - (ShortAffil?, JobTitle*, OrgName?, OrgDiv*,
+               Address*)>
+<!--end of affiliation.element-->]]>
+
+<!ENTITY % affiliation.attlist "INCLUDE">
+<![ %affiliation.attlist; [
+<!ATTLIST Affiliation
+               %common.attrib;
+               %affiliation.role.attrib;
+               %local.affiliation.attrib;
+>
+<!--end of affiliation.attlist-->]]>
+<!--end of affiliation.module-->]]>
+
+  <!ENTITY % shortaffil.module "INCLUDE">
+  <![ %shortaffil.module; [
+  <!ENTITY % local.shortaffil.attrib "">
+  <!ENTITY % shortaffil.role.attrib "%role.attrib;">
+  
+<!ENTITY % shortaffil.element "INCLUDE">
+<![ %shortaffil.element; [
+<!ELEMENT ShortAffil - - ((%docinfo.char.mix;)+)>
+<!--end of shortaffil.element-->]]>
+  
+<!ENTITY % shortaffil.attlist "INCLUDE">
+<![ %shortaffil.attlist; [
+<!ATTLIST ShortAffil
+               %common.attrib;
+               %shortaffil.role.attrib;
+               %local.shortaffil.attrib;
+>
+<!--end of shortaffil.attlist-->]]>
+  <!--end of shortaffil.module-->]]>
+
+  <!ENTITY % jobtitle.module "INCLUDE">
+  <![ %jobtitle.module; [
+  <!ENTITY % local.jobtitle.attrib "">
+  <!ENTITY % jobtitle.role.attrib "%role.attrib;">
+  
+<!ENTITY % jobtitle.element "INCLUDE">
+<![ %jobtitle.element; [
+<!ELEMENT JobTitle - - ((%docinfo.char.mix;)+)>
+<!--end of jobtitle.element-->]]>
+  
+<!ENTITY % jobtitle.attlist "INCLUDE">
+<![ %jobtitle.attlist; [
+<!ATTLIST JobTitle
+               %common.attrib;
+               %jobtitle.role.attrib;
+               %local.jobtitle.attrib;
+>
+<!--end of jobtitle.attlist-->]]>
+  <!--end of jobtitle.module-->]]>
+
+  <!-- OrgName (defined elsewhere in this section)-->
+
+  <!ENTITY % orgdiv.module "INCLUDE">
+  <![ %orgdiv.module; [
+  <!ENTITY % local.orgdiv.attrib "">
+  <!ENTITY % orgdiv.role.attrib "%role.attrib;">
+  
+<!ENTITY % orgdiv.element "INCLUDE">
+<![ %orgdiv.element; [
+<!ELEMENT OrgDiv - - ((%docinfo.char.mix;)+)>
+<!--end of orgdiv.element-->]]>
+  
+<!ENTITY % orgdiv.attlist "INCLUDE">
+<![ %orgdiv.attlist; [
+<!ATTLIST OrgDiv
+               %common.attrib;
+               %orgdiv.role.attrib;
+               %local.orgdiv.attrib;
+>
+<!--end of orgdiv.attlist-->]]>
+  <!--end of orgdiv.module-->]]>
+
+  <!-- Address (defined elsewhere in this section)-->
+<!--end of affiliation.content.module-->]]>
+
+<!-- ArtPageNums ...................... -->
+
+<!ENTITY % artpagenums.module "INCLUDE">
+<![ %artpagenums.module; [
+<!ENTITY % local.artpagenums.attrib "">
+<!ENTITY % argpagenums.role.attrib "%role.attrib;">
+
+<!ENTITY % artpagenums.element "INCLUDE">
+<![ %artpagenums.element; [
+<!ELEMENT ArtPageNums - - ((%docinfo.char.mix;)+)>
+<!--end of artpagenums.element-->]]>
+
+<!ENTITY % artpagenums.attlist "INCLUDE">
+<![ %artpagenums.attlist; [
+<!ATTLIST ArtPageNums
+               %common.attrib;
+               %argpagenums.role.attrib;
+               %local.artpagenums.attrib;
+>
+<!--end of artpagenums.attlist-->]]>
+<!--end of artpagenums.module-->]]>
+
+<!-- Author ........................... -->
+
+<!ENTITY % author.module "INCLUDE">
+<![ %author.module; [
+<!ENTITY % local.author.attrib "">
+<!ENTITY % author.role.attrib "%role.attrib;">
+
+<!ENTITY % author.element "INCLUDE">
+<![ %author.element; [
+<!ELEMENT Author - - ((%person.ident.mix;)+)>
+<!--end of author.element-->]]>
+
+<!ENTITY % author.attlist "INCLUDE">
+<![ %author.attlist; [
+<!ATTLIST Author
+               %common.attrib;
+               %author.role.attrib;
+               %local.author.attrib;
+>
+<!--end of author.attlist-->]]>
+<!--(see "Personal identity elements" for %person.ident.mix;)-->
+<!--end of author.module-->]]>
+
+<!-- AuthorGroup ...................... -->
+
+<!ENTITY % authorgroup.content.module "INCLUDE">
+<![ %authorgroup.content.module; [
+<!ENTITY % authorgroup.module "INCLUDE">
+<![ %authorgroup.module; [
+<!ENTITY % local.authorgroup.attrib "">
+<!ENTITY % authorgroup.role.attrib "%role.attrib;">
+
+<!ENTITY % authorgroup.element "INCLUDE">
+<![ %authorgroup.element; [
+<!ELEMENT AuthorGroup - - ((Author|Editor|Collab|CorpAuthor|OtherCredit)+)>
+<!--end of authorgroup.element-->]]>
+
+<!ENTITY % authorgroup.attlist "INCLUDE">
+<![ %authorgroup.attlist; [
+<!ATTLIST AuthorGroup
+               %common.attrib;
+               %authorgroup.role.attrib;
+               %local.authorgroup.attrib;
+>
+<!--end of authorgroup.attlist-->]]>
+<!--end of authorgroup.module-->]]>
+
+  <!-- Author (defined elsewhere in this section)-->
+  <!-- Editor (defined elsewhere in this section)-->
+
+  <!ENTITY % collab.content.module "INCLUDE">
+  <![ %collab.content.module; [
+  <!ENTITY % collab.module "INCLUDE">
+  <![ %collab.module; [
+  <!ENTITY % local.collab.attrib "">
+  <!ENTITY % collab.role.attrib "%role.attrib;">
+  
+<!ENTITY % collab.element "INCLUDE">
+<![ %collab.element; [
+<!ELEMENT Collab - - (CollabName, Affiliation*)>
+<!--end of collab.element-->]]>
+  
+<!ENTITY % collab.attlist "INCLUDE">
+<![ %collab.attlist; [
+<!ATTLIST Collab
+               %common.attrib;
+               %collab.role.attrib;
+               %local.collab.attrib;
+>
+<!--end of collab.attlist-->]]>
+  <!--end of collab.module-->]]>
+
+    <!ENTITY % collabname.module "INCLUDE">
+  <![ %collabname.module; [
+  <!ENTITY % local.collabname.attrib "">
+  <!ENTITY % collabname.role.attrib "%role.attrib;">
+    
+<!ENTITY % collabname.element "INCLUDE">
+<![ %collabname.element; [
+<!ELEMENT CollabName - - ((%docinfo.char.mix;)+)>
+<!--end of collabname.element-->]]>
+    
+<!ENTITY % collabname.attlist "INCLUDE">
+<![ %collabname.attlist; [
+<!ATTLIST CollabName
+               %common.attrib;
+               %collabname.role.attrib;
+               %local.collabname.attrib;
+>
+<!--end of collabname.attlist-->]]>
+    <!--end of collabname.module-->]]>
+
+    <!-- Affiliation (defined elsewhere in this section)-->
+  <!--end of collab.content.module-->]]>
+
+  <!-- CorpAuthor (defined elsewhere in this section)-->
+  <!-- OtherCredit (defined elsewhere in this section)-->
+
+<!--end of authorgroup.content.module-->]]>
+
+<!-- AuthorInitials ................... -->
+
+<!ENTITY % authorinitials.module "INCLUDE">
+<![ %authorinitials.module; [
+<!ENTITY % local.authorinitials.attrib "">
+<!ENTITY % authorinitials.role.attrib "%role.attrib;">
+
+<!ENTITY % authorinitials.element "INCLUDE">
+<![ %authorinitials.element; [
+<!ELEMENT AuthorInitials - - ((%docinfo.char.mix;)+)>
+<!--end of authorinitials.element-->]]>
+
+<!ENTITY % authorinitials.attlist "INCLUDE">
+<![ %authorinitials.attlist; [
+<!ATTLIST AuthorInitials
+               %common.attrib;
+               %authorinitials.role.attrib;
+               %local.authorinitials.attrib;
+>
+<!--end of authorinitials.attlist-->]]>
+<!--end of authorinitials.module-->]]>
+
+<!-- ConfGroup ........................ -->
+
+<!ENTITY % confgroup.content.module "INCLUDE">
+<![ %confgroup.content.module; [
+<!ENTITY % confgroup.module "INCLUDE">
+<![ %confgroup.module; [
+<!ENTITY % local.confgroup.attrib "">
+<!ENTITY % confgroup.role.attrib "%role.attrib;">
+
+<!ENTITY % confgroup.element "INCLUDE">
+<![ %confgroup.element; [
+<!ELEMENT ConfGroup - - ((ConfDates|ConfTitle|ConfNum|Address|ConfSponsor)*)>
+<!--end of confgroup.element-->]]>
+
+<!ENTITY % confgroup.attlist "INCLUDE">
+<![ %confgroup.attlist; [
+<!ATTLIST ConfGroup
+               %common.attrib;
+               %confgroup.role.attrib;
+               %local.confgroup.attrib;
+>
+<!--end of confgroup.attlist-->]]>
+<!--end of confgroup.module-->]]>
+
+  <!ENTITY % confdates.module "INCLUDE">
+  <![ %confdates.module; [
+  <!ENTITY % local.confdates.attrib "">
+  <!ENTITY % confdates.role.attrib "%role.attrib;">
+  
+<!ENTITY % confdates.element "INCLUDE">
+<![ %confdates.element; [
+<!ELEMENT ConfDates - - ((%docinfo.char.mix;)+)>
+<!--end of confdates.element-->]]>
+  
+<!ENTITY % confdates.attlist "INCLUDE">
+<![ %confdates.attlist; [
+<!ATTLIST ConfDates
+               %common.attrib;
+               %confdates.role.attrib;
+               %local.confdates.attrib;
+>
+<!--end of confdates.attlist-->]]>
+  <!--end of confdates.module-->]]>
+
+  <!ENTITY % conftitle.module "INCLUDE">
+  <![ %conftitle.module; [
+  <!ENTITY % local.conftitle.attrib "">
+  <!ENTITY % conftitle.role.attrib "%role.attrib;">
+  
+<!ENTITY % conftitle.element "INCLUDE">
+<![ %conftitle.element; [
+<!ELEMENT ConfTitle - - ((%docinfo.char.mix;)+)>
+<!--end of conftitle.element-->]]>
+  
+<!ENTITY % conftitle.attlist "INCLUDE">
+<![ %conftitle.attlist; [
+<!ATTLIST ConfTitle
+               %common.attrib;
+               %conftitle.role.attrib;
+               %local.conftitle.attrib;
+>
+<!--end of conftitle.attlist-->]]>
+  <!--end of conftitle.module-->]]>
+
+  <!ENTITY % confnum.module "INCLUDE">
+  <![ %confnum.module; [
+  <!ENTITY % local.confnum.attrib "">
+  <!ENTITY % confnum.role.attrib "%role.attrib;">
+  
+<!ENTITY % confnum.element "INCLUDE">
+<![ %confnum.element; [
+<!ELEMENT ConfNum - - ((%docinfo.char.mix;)+)>
+<!--end of confnum.element-->]]>
+  
+<!ENTITY % confnum.attlist "INCLUDE">
+<![ %confnum.attlist; [
+<!ATTLIST ConfNum
+               %common.attrib;
+               %confnum.role.attrib;
+               %local.confnum.attrib;
+>
+<!--end of confnum.attlist-->]]>
+  <!--end of confnum.module-->]]>
+
+  <!-- Address (defined elsewhere in this section)-->
+
+  <!ENTITY % confsponsor.module "INCLUDE">
+  <![ %confsponsor.module; [
+  <!ENTITY % local.confsponsor.attrib "">
+  <!ENTITY % confsponsor.role.attrib "%role.attrib;">
+  
+<!ENTITY % confsponsor.element "INCLUDE">
+<![ %confsponsor.element; [
+<!ELEMENT ConfSponsor - - ((%docinfo.char.mix;)+)>
+<!--end of confsponsor.element-->]]>
+  
+<!ENTITY % confsponsor.attlist "INCLUDE">
+<![ %confsponsor.attlist; [
+<!ATTLIST ConfSponsor
+               %common.attrib;
+               %confsponsor.role.attrib;
+               %local.confsponsor.attrib;
+>
+<!--end of confsponsor.attlist-->]]>
+  <!--end of confsponsor.module-->]]>
+<!--end of confgroup.content.module-->]]>
+
+<!-- ContractNum ...................... -->
+
+<!ENTITY % contractnum.module "INCLUDE">
+<![ %contractnum.module; [
+<!ENTITY % local.contractnum.attrib "">
+<!ENTITY % contractnum.role.attrib "%role.attrib;">
+
+<!ENTITY % contractnum.element "INCLUDE">
+<![ %contractnum.element; [
+<!ELEMENT ContractNum - - ((%docinfo.char.mix;)+)>
+<!--end of contractnum.element-->]]>
+
+<!ENTITY % contractnum.attlist "INCLUDE">
+<![ %contractnum.attlist; [
+<!ATTLIST ContractNum
+               %common.attrib;
+               %contractnum.role.attrib;
+               %local.contractnum.attrib;
+>
+<!--end of contractnum.attlist-->]]>
+<!--end of contractnum.module-->]]>
+
+<!-- ContractSponsor .................. -->
+
+<!ENTITY % contractsponsor.module "INCLUDE">
+<![ %contractsponsor.module; [
+<!ENTITY % local.contractsponsor.attrib "">
+<!ENTITY % contractsponsor.role.attrib "%role.attrib;">
+
+<!ENTITY % contractsponsor.element "INCLUDE">
+<![ %contractsponsor.element; [
+<!ELEMENT ContractSponsor - - ((%docinfo.char.mix;)+)>
+<!--end of contractsponsor.element-->]]>
+
+<!ENTITY % contractsponsor.attlist "INCLUDE">
+<![ %contractsponsor.attlist; [
+<!ATTLIST ContractSponsor
+               %common.attrib;
+               %contractsponsor.role.attrib;
+               %local.contractsponsor.attrib;
+>
+<!--end of contractsponsor.attlist-->]]>
+<!--end of contractsponsor.module-->]]>
+
+<!-- Copyright ........................ -->
+
+<!ENTITY % copyright.content.module "INCLUDE">
+<![ %copyright.content.module; [
+<!ENTITY % copyright.module "INCLUDE">
+<![ %copyright.module; [
+<!ENTITY % local.copyright.attrib "">
+<!ENTITY % copyright.role.attrib "%role.attrib;">
+
+<!ENTITY % copyright.element "INCLUDE">
+<![ %copyright.element; [
+<!ELEMENT Copyright - - (Year+, Holder*)>
+<!--end of copyright.element-->]]>
+
+<!ENTITY % copyright.attlist "INCLUDE">
+<![ %copyright.attlist; [
+<!ATTLIST Copyright
+               %common.attrib;
+               %copyright.role.attrib;
+               %local.copyright.attrib;
+>
+<!--end of copyright.attlist-->]]>
+<!--end of copyright.module-->]]>
+
+  <!ENTITY % year.module "INCLUDE">
+  <![ %year.module; [
+  <!ENTITY % local.year.attrib "">
+  <!ENTITY % year.role.attrib "%role.attrib;">
+  
+<!ENTITY % year.element "INCLUDE">
+<![ %year.element; [
+<!ELEMENT Year - - ((%docinfo.char.mix;)+)>
+<!--end of year.element-->]]>
+  
+<!ENTITY % year.attlist "INCLUDE">
+<![ %year.attlist; [
+<!ATTLIST Year
+               %common.attrib;
+               %year.role.attrib;
+               %local.year.attrib;
+>
+<!--end of year.attlist-->]]>
+  <!--end of year.module-->]]>
+
+  <!ENTITY % holder.module "INCLUDE">
+  <![ %holder.module; [
+  <!ENTITY % local.holder.attrib "">
+  <!ENTITY % holder.role.attrib "%role.attrib;">
+  
+<!ENTITY % holder.element "INCLUDE">
+<![ %holder.element; [
+<!ELEMENT Holder - - ((%docinfo.char.mix;)+)>
+<!--end of holder.element-->]]>
+  
+<!ENTITY % holder.attlist "INCLUDE">
+<![ %holder.attlist; [
+<!ATTLIST Holder
+               %common.attrib;
+               %holder.role.attrib;
+               %local.holder.attrib;
+>
+<!--end of holder.attlist-->]]>
+  <!--end of holder.module-->]]>
+<!--end of copyright.content.module-->]]>
+
+<!-- CorpAuthor ....................... -->
+
+<!ENTITY % corpauthor.module "INCLUDE">
+<![ %corpauthor.module; [
+<!ENTITY % local.corpauthor.attrib "">
+<!ENTITY % corpauthor.role.attrib "%role.attrib;">
+
+<!ENTITY % corpauthor.element "INCLUDE">
+<![ %corpauthor.element; [
+<!ELEMENT CorpAuthor - - ((%docinfo.char.mix;)+)>
+<!--end of corpauthor.element-->]]>
+
+<!ENTITY % corpauthor.attlist "INCLUDE">
+<![ %corpauthor.attlist; [
+<!ATTLIST CorpAuthor
+               %common.attrib;
+               %corpauthor.role.attrib;
+               %local.corpauthor.attrib;
+>
+<!--end of corpauthor.attlist-->]]>
+<!--end of corpauthor.module-->]]>
+
+<!-- CorpName ......................... -->
+
+<!ENTITY % corpname.module "INCLUDE">
+<![ %corpname.module; [
+<!ENTITY % local.corpname.attrib "">
+
+<!ENTITY % corpname.element "INCLUDE">
+<![ %corpname.element; [
+<!ELEMENT CorpName - - ((%docinfo.char.mix;)+)>
+<!--end of corpname.element-->]]>
+<!ENTITY % corpname.role.attrib "%role.attrib;">
+
+<!ENTITY % corpname.attlist "INCLUDE">
+<![ %corpname.attlist; [
+<!ATTLIST CorpName
+               %common.attrib;
+               %corpname.role.attrib;
+               %local.corpname.attrib;
+>
+<!--end of corpname.attlist-->]]>
+<!--end of corpname.module-->]]>
+
+<!-- Date ............................. -->
+
+<!ENTITY % date.module "INCLUDE">
+<![ %date.module; [
+<!ENTITY % local.date.attrib "">
+<!ENTITY % date.role.attrib "%role.attrib;">
+
+<!ENTITY % date.element "INCLUDE">
+<![ %date.element; [
+<!ELEMENT Date - - ((%docinfo.char.mix;)+)>
+<!--end of date.element-->]]>
+
+<!ENTITY % date.attlist "INCLUDE">
+<![ %date.attlist; [
+<!ATTLIST Date
+               %common.attrib;
+               %date.role.attrib;
+               %local.date.attrib;
+>
+<!--end of date.attlist-->]]>
+<!--end of date.module-->]]>
+
+<!-- Edition .......................... -->
+
+<!ENTITY % edition.module "INCLUDE">
+<![ %edition.module; [
+<!ENTITY % local.edition.attrib "">
+<!ENTITY % edition.role.attrib "%role.attrib;">
+
+<!ENTITY % edition.element "INCLUDE">
+<![ %edition.element; [
+<!ELEMENT Edition - - ((%docinfo.char.mix;)+)>
+<!--end of edition.element-->]]>
+
+<!ENTITY % edition.attlist "INCLUDE">
+<![ %edition.attlist; [
+<!ATTLIST Edition
+               %common.attrib;
+               %edition.role.attrib;
+               %local.edition.attrib;
+>
+<!--end of edition.attlist-->]]>
+<!--end of edition.module-->]]>
+
+<!-- Editor ........................... -->
+
+<!ENTITY % editor.module "INCLUDE">
+<![ %editor.module; [
+<!ENTITY % local.editor.attrib "">
+<!ENTITY % editor.role.attrib "%role.attrib;">
+
+<!ENTITY % editor.element "INCLUDE">
+<![ %editor.element; [
+<!ELEMENT Editor - - ((%person.ident.mix;)+)>
+<!--end of editor.element-->]]>
+
+<!ENTITY % editor.attlist "INCLUDE">
+<![ %editor.attlist; [
+<!ATTLIST Editor
+               %common.attrib;
+               %editor.role.attrib;
+               %local.editor.attrib;
+>
+<!--end of editor.attlist-->]]>
+  <!--(see "Personal identity elements" for %person.ident.mix;)-->
+<!--end of editor.module-->]]>
+
+<!-- ISBN ............................. -->
+
+<!ENTITY % isbn.module "INCLUDE">
+<![ %isbn.module; [
+<!ENTITY % local.isbn.attrib "">
+<!ENTITY % isbn.role.attrib "%role.attrib;">
+
+<!ENTITY % isbn.element "INCLUDE">
+<![ %isbn.element; [
+<!ELEMENT ISBN - - ((%docinfo.char.mix;)+)>
+<!--end of isbn.element-->]]>
+
+<!ENTITY % isbn.attlist "INCLUDE">
+<![ %isbn.attlist; [
+<!ATTLIST ISBN
+               %common.attrib;
+               %isbn.role.attrib;
+               %local.isbn.attrib;
+>
+<!--end of isbn.attlist-->]]>
+<!--end of isbn.module-->]]>
+
+<!-- ISSN ............................. -->
+
+<!ENTITY % issn.module "INCLUDE">
+<![ %issn.module; [
+<!ENTITY % local.issn.attrib "">
+<!ENTITY % issn.role.attrib "%role.attrib;">
+
+<!ENTITY % issn.element "INCLUDE">
+<![ %issn.element; [
+<!ELEMENT ISSN - - ((%docinfo.char.mix;)+)>
+<!--end of issn.element-->]]>
+
+<!ENTITY % issn.attlist "INCLUDE">
+<![ %issn.attlist; [
+<!ATTLIST ISSN
+               %common.attrib;
+               %issn.role.attrib;
+               %local.issn.attrib;
+>
+<!--end of issn.attlist-->]]>
+<!--end of issn.module-->]]>
+
+<!-- InvPartNumber .................... -->
+
+<!ENTITY % invpartnumber.module "INCLUDE">
+<![ %invpartnumber.module; [
+<!ENTITY % local.invpartnumber.attrib "">
+<!ENTITY % invpartnumber.role.attrib "%role.attrib;">
+
+<!ENTITY % invpartnumber.element "INCLUDE">
+<![ %invpartnumber.element; [
+<!ELEMENT InvPartNumber - - ((%docinfo.char.mix;)+)>
+<!--end of invpartnumber.element-->]]>
+
+<!ENTITY % invpartnumber.attlist "INCLUDE">
+<![ %invpartnumber.attlist; [
+<!ATTLIST InvPartNumber
+               %common.attrib;
+               %invpartnumber.role.attrib;
+               %local.invpartnumber.attrib;
+>
+<!--end of invpartnumber.attlist-->]]>
+<!--end of invpartnumber.module-->]]>
+
+<!-- IssueNum ......................... -->
+
+<!ENTITY % issuenum.module "INCLUDE">
+<![ %issuenum.module; [
+<!ENTITY % local.issuenum.attrib "">
+<!ENTITY % issuenum.role.attrib "%role.attrib;">
+
+<!ENTITY % issuenum.element "INCLUDE">
+<![ %issuenum.element; [
+<!ELEMENT IssueNum - - ((%docinfo.char.mix;)+)>
+<!--end of issuenum.element-->]]>
+
+<!ENTITY % issuenum.attlist "INCLUDE">
+<![ %issuenum.attlist; [
+<!ATTLIST IssueNum
+               %common.attrib;
+               %issuenum.role.attrib;
+               %local.issuenum.attrib;
+>
+<!--end of issuenum.attlist-->]]>
+<!--end of issuenum.module-->]]>
+
+<!-- LegalNotice ...................... -->
+
+<!ENTITY % legalnotice.module "INCLUDE">
+<![ %legalnotice.module; [
+<!ENTITY % local.legalnotice.attrib "">
+<!ENTITY % legalnotice.role.attrib "%role.attrib;">
+
+<!ENTITY % legalnotice.element "INCLUDE">
+<![ %legalnotice.element; [
+<!ELEMENT LegalNotice - - (Title?, (%legalnotice.mix;)+) %formal.exclusion;>
+<!--end of legalnotice.element-->]]>
+
+<!ENTITY % legalnotice.attlist "INCLUDE">
+<![ %legalnotice.attlist; [
+<!ATTLIST LegalNotice
+               %common.attrib;
+               %legalnotice.role.attrib;
+               %local.legalnotice.attrib;
+>
+<!--end of legalnotice.attlist-->]]>
+<!--end of legalnotice.module-->]]>
+
+<!-- ModeSpec ......................... -->
+
+<!ENTITY % modespec.module "INCLUDE">
+<![ %modespec.module; [
+<!ENTITY % local.modespec.attrib "">
+<!ENTITY % modespec.role.attrib "%role.attrib;">
+
+<!ENTITY % modespec.element "INCLUDE">
+<![ %modespec.element; [
+<!ELEMENT ModeSpec - - ((%docinfo.char.mix;)+) %ubiq.exclusion;>
+<!--end of modespec.element-->]]>
+
+<!ENTITY % modespec.attlist "INCLUDE">
+<![ %modespec.attlist; [
+<!ATTLIST ModeSpec
+               --
+               Application: Type of action required for completion
+               of the links to which the ModeSpec is relevant (e.g.,
+               retrieval query)
+               --
+               Application     NOTATION
+                               (%notation.class;)      #IMPLIED
+               %common.attrib;
+               %modespec.role.attrib;
+               %local.modespec.attrib;
+>
+<!--end of modespec.attlist-->]]>
+<!--end of modespec.module-->]]>
+
+<!-- OrgName .......................... -->
+
+<!ENTITY % orgname.module "INCLUDE">
+<![ %orgname.module; [
+<!ENTITY % local.orgname.attrib "">
+<!ENTITY % orgname.role.attrib "%role.attrib;">
+
+<!ENTITY % orgname.element "INCLUDE">
+<![ %orgname.element; [
+<!ELEMENT OrgName - - ((%docinfo.char.mix;)+)>
+<!--end of orgname.element-->]]>
+
+<!ENTITY % orgname.attlist "INCLUDE">
+<![ %orgname.attlist; [
+<!ATTLIST OrgName
+               %common.attrib;
+               %orgname.role.attrib;
+               %local.orgname.attrib;
+>
+<!--end of orgname.attlist-->]]>
+<!--end of orgname.module-->]]>
+
+<!-- OtherCredit ...................... -->
+
+<!ENTITY % othercredit.module "INCLUDE">
+<![ %othercredit.module; [
+<!ENTITY % local.othercredit.attrib "">
+<!ENTITY % othercredit.role.attrib "%role.attrib;">
+
+<!ENTITY % othercredit.element "INCLUDE">
+<![ %othercredit.element; [
+<!ELEMENT OtherCredit - - ((%person.ident.mix;)+)>
+<!--end of othercredit.element-->]]>
+
+<!ENTITY % othercredit.attlist "INCLUDE">
+<![ %othercredit.attlist; [
+<!ATTLIST OtherCredit
+               %common.attrib;
+               %othercredit.role.attrib;
+               %local.othercredit.attrib;
+>
+<!--end of othercredit.attlist-->]]>
+  <!--(see "Personal identity elements" for %person.ident.mix;)-->
+<!--end of othercredit.module-->]]>
+
+<!-- PageNums ......................... -->
+
+<!ENTITY % pagenums.module "INCLUDE">
+<![ %pagenums.module; [
+<!ENTITY % local.pagenums.attrib "">
+<!ENTITY % pagenums.role.attrib "%role.attrib;">
+
+<!ENTITY % pagenums.element "INCLUDE">
+<![ %pagenums.element; [
+<!ELEMENT PageNums - - ((%docinfo.char.mix;)+)>
+<!--end of pagenums.element-->]]>
+
+<!ENTITY % pagenums.attlist "INCLUDE">
+<![ %pagenums.attlist; [
+<!ATTLIST PageNums
+               %common.attrib;
+               %pagenums.role.attrib;
+               %local.pagenums.attrib;
+>
+<!--end of pagenums.attlist-->]]>
+<!--end of pagenums.module-->]]>
+
+<!-- Personal identity elements ....... -->
+
+<!-- These elements are used only within Author, Editor, and 
+OtherCredit. -->
+
+<!ENTITY % person.ident.module "INCLUDE">
+<![ %person.ident.module; [
+  <!ENTITY % contrib.module "INCLUDE">
+  <![ %contrib.module; [
+  <!ENTITY % local.contrib.attrib "">
+  <!ENTITY % contrib.role.attrib "%role.attrib;">
+  
+<!ENTITY % contrib.element "INCLUDE">
+<![ %contrib.element; [
+<!ELEMENT Contrib - - ((%docinfo.char.mix;)+)>
+<!--end of contrib.element-->]]>
+  
+<!ENTITY % contrib.attlist "INCLUDE">
+<![ %contrib.attlist; [
+<!ATTLIST Contrib
+               %common.attrib;
+               %contrib.role.attrib;
+               %local.contrib.attrib;
+>
+<!--end of contrib.attlist-->]]>
+  <!--end of contrib.module-->]]>
+
+  <!ENTITY % firstname.module "INCLUDE">
+  <![ %firstname.module; [
+  <!ENTITY % local.firstname.attrib "">
+  <!ENTITY % firstname.role.attrib "%role.attrib;">
+  
+<!ENTITY % firstname.element "INCLUDE">
+<![ %firstname.element; [
+<!ELEMENT FirstName - - ((%docinfo.char.mix;)+)>
+<!--end of firstname.element-->]]>
+  
+<!ENTITY % firstname.attlist "INCLUDE">
+<![ %firstname.attlist; [
+<!ATTLIST FirstName
+               %common.attrib;
+               %firstname.role.attrib;
+               %local.firstname.attrib;
+>
+<!--end of firstname.attlist-->]]>
+  <!--end of firstname.module-->]]>
+
+  <!ENTITY % honorific.module "INCLUDE">
+  <![ %honorific.module; [
+  <!ENTITY % local.honorific.attrib "">
+  <!ENTITY % honorific.role.attrib "%role.attrib;">
+  
+<!ENTITY % honorific.element "INCLUDE">
+<![ %honorific.element; [
+<!ELEMENT Honorific - - ((%docinfo.char.mix;)+)>
+<!--end of honorific.element-->]]>
+  
+<!ENTITY % honorific.attlist "INCLUDE">
+<![ %honorific.attlist; [
+<!ATTLIST Honorific
+               %common.attrib;
+               %honorific.role.attrib;
+               %local.honorific.attrib;
+>
+<!--end of honorific.attlist-->]]>
+  <!--end of honorific.module-->]]>
+
+  <!ENTITY % lineage.module "INCLUDE">
+  <![ %lineage.module; [
+  <!ENTITY % local.lineage.attrib "">
+  <!ENTITY % lineage.role.attrib "%role.attrib;">
+  
+<!ENTITY % lineage.element "INCLUDE">
+<![ %lineage.element; [
+<!ELEMENT Lineage - - ((%docinfo.char.mix;)+)>
+<!--end of lineage.element-->]]>
+  
+<!ENTITY % lineage.attlist "INCLUDE">
+<![ %lineage.attlist; [
+<!ATTLIST Lineage
+               %common.attrib;
+               %lineage.role.attrib;
+               %local.lineage.attrib;
+>
+<!--end of lineage.attlist-->]]>
+  <!--end of lineage.module-->]]>
+
+  <!ENTITY % othername.module "INCLUDE">
+  <![ %othername.module; [
+  <!ENTITY % local.othername.attrib "">
+  <!ENTITY % othername.role.attrib "%role.attrib;">
+  
+<!ENTITY % othername.element "INCLUDE">
+<![ %othername.element; [
+<!ELEMENT OtherName - - ((%docinfo.char.mix;)+)>
+<!--end of othername.element-->]]>
+  
+<!ENTITY % othername.attlist "INCLUDE">
+<![ %othername.attlist; [
+<!ATTLIST OtherName
+               %common.attrib;
+               %othername.role.attrib;
+               %local.othername.attrib;
+>
+<!--end of othername.attlist-->]]>
+  <!--end of othername.module-->]]>
+
+  <!ENTITY % surname.module "INCLUDE">
+  <![ %surname.module; [
+  <!ENTITY % local.surname.attrib "">
+  <!ENTITY % surname.role.attrib "%role.attrib;">
+  
+<!ENTITY % surname.element "INCLUDE">
+<![ %surname.element; [
+<!ELEMENT Surname - - ((%docinfo.char.mix;)+)>
+<!--end of surname.element-->]]>
+  
+<!ENTITY % surname.attlist "INCLUDE">
+<![ %surname.attlist; [
+<!ATTLIST Surname
+               %common.attrib;
+               %surname.role.attrib;
+               %local.surname.attrib;
+>
+<!--end of surname.attlist-->]]>
+  <!--end of surname.module-->]]>
+<!--end of person.ident.module-->]]>
+
+<!-- PrintHistory ..................... -->
+
+<!ENTITY % printhistory.module "INCLUDE">
+<![ %printhistory.module; [
+<!ENTITY % local.printhistory.attrib "">
+<!ENTITY % printhistory.role.attrib "%role.attrib;">
+
+<!ENTITY % printhistory.element "INCLUDE">
+<![ %printhistory.element; [
+<!ELEMENT PrintHistory - - ((%para.class;)+)>
+<!--end of printhistory.element-->]]>
+
+<!ENTITY % printhistory.attlist "INCLUDE">
+<![ %printhistory.attlist; [
+<!ATTLIST PrintHistory
+               %common.attrib;
+               %printhistory.role.attrib;
+               %local.printhistory.attrib;
+>
+<!--end of printhistory.attlist-->]]>
+<!--end of printhistory.module-->]]>
+
+<!-- ProductName ...................... -->
+
+<!ENTITY % productname.module "INCLUDE">
+<![ %productname.module; [
+<!ENTITY % local.productname.attrib "">
+<!ENTITY % productname.role.attrib "%role.attrib;">
+
+<!ENTITY % productname.element "INCLUDE">
+<![ %productname.element; [
+<!ELEMENT ProductName - - ((%para.char.mix;)+)>
+<!--end of productname.element-->]]>
+
+<!ENTITY % productname.attlist "INCLUDE">
+<![ %productname.attlist; [
+<!ATTLIST ProductName
+               --
+               Class: More precisely identifies the item the element names
+               --
+               Class           (Service
+                               |Trade
+                               |Registered
+                               |Copyright)     Trade
+               %common.attrib;
+               %productname.role.attrib;
+               %local.productname.attrib;
+>
+<!--end of productname.attlist-->]]>
+<!--end of productname.module-->]]>
+
+<!-- ProductNumber .................... -->
+
+<!ENTITY % productnumber.module "INCLUDE">
+<![ %productnumber.module; [
+<!ENTITY % local.productnumber.attrib "">
+<!ENTITY % productnumber.role.attrib "%role.attrib;">
+
+<!ENTITY % productnumber.element "INCLUDE">
+<![ %productnumber.element; [
+<!ELEMENT ProductNumber - - ((%docinfo.char.mix;)+)>
+<!--end of productnumber.element-->]]>
+
+<!ENTITY % productnumber.attlist "INCLUDE">
+<![ %productnumber.attlist; [
+<!ATTLIST ProductNumber
+               %common.attrib;
+               %productnumber.role.attrib;
+               %local.productnumber.attrib;
+>
+<!--end of productnumber.attlist-->]]>
+<!--end of productnumber.module-->]]>
+
+<!-- PubDate .......................... -->
+
+<!ENTITY % pubdate.module "INCLUDE">
+<![ %pubdate.module; [
+<!ENTITY % local.pubdate.attrib "">
+<!ENTITY % pubdate.role.attrib "%role.attrib;">
+
+<!ENTITY % pubdate.element "INCLUDE">
+<![ %pubdate.element; [
+<!ELEMENT PubDate - - ((%docinfo.char.mix;)+)>
+<!--end of pubdate.element-->]]>
+
+<!ENTITY % pubdate.attlist "INCLUDE">
+<![ %pubdate.attlist; [
+<!ATTLIST PubDate
+               %common.attrib;
+               %pubdate.role.attrib;
+               %local.pubdate.attrib;
+>
+<!--end of pubdate.attlist-->]]>
+<!--end of pubdate.module-->]]>
+
+<!-- Publisher ........................ -->
+
+<!ENTITY % publisher.content.module "INCLUDE">
+<![ %publisher.content.module; [
+<!ENTITY % publisher.module "INCLUDE">
+<![ %publisher.module; [
+<!ENTITY % local.publisher.attrib "">
+<!ENTITY % publisher.role.attrib "%role.attrib;">
+
+<!ENTITY % publisher.element "INCLUDE">
+<![ %publisher.element; [
+<!ELEMENT Publisher - - (PublisherName, Address*)>
+<!--end of publisher.element-->]]>
+
+<!ENTITY % publisher.attlist "INCLUDE">
+<![ %publisher.attlist; [
+<!ATTLIST Publisher
+               %common.attrib;
+               %publisher.role.attrib;
+               %local.publisher.attrib;
+>
+<!--end of publisher.attlist-->]]>
+<!--end of publisher.module-->]]>
+
+  <!ENTITY % publishername.module "INCLUDE">
+  <![ %publishername.module; [
+  <!ENTITY % local.publishername.attrib "">
+  <!ENTITY % publishername.role.attrib "%role.attrib;">
+  
+<!ENTITY % publishername.element "INCLUDE">
+<![ %publishername.element; [
+<!ELEMENT PublisherName - - ((%docinfo.char.mix;)+)>
+<!--end of publishername.element-->]]>
+  
+<!ENTITY % publishername.attlist "INCLUDE">
+<![ %publishername.attlist; [
+<!ATTLIST PublisherName
+               %common.attrib;
+               %publishername.role.attrib;
+               %local.publishername.attrib;
+>
+<!--end of publishername.attlist-->]]>
+  <!--end of publishername.module-->]]>
+
+  <!-- Address (defined elsewhere in this section)-->
+<!--end of publisher.content.module-->]]>
+
+<!-- PubsNumber ....................... -->
+
+<!ENTITY % pubsnumber.module "INCLUDE">
+<![ %pubsnumber.module; [
+<!ENTITY % local.pubsnumber.attrib "">
+<!ENTITY % pubsnumber.role.attrib "%role.attrib;">
+
+<!ENTITY % pubsnumber.element "INCLUDE">
+<![ %pubsnumber.element; [
+<!ELEMENT PubsNumber - - ((%docinfo.char.mix;)+)>
+<!--end of pubsnumber.element-->]]>
+
+<!ENTITY % pubsnumber.attlist "INCLUDE">
+<![ %pubsnumber.attlist; [
+<!ATTLIST PubsNumber
+               %common.attrib;
+               %pubsnumber.role.attrib;
+               %local.pubsnumber.attrib;
+>
+<!--end of pubsnumber.attlist-->]]>
+<!--end of pubsnumber.module-->]]>
+
+<!-- ReleaseInfo ...................... -->
+
+<!ENTITY % releaseinfo.module "INCLUDE">
+<![ %releaseinfo.module; [
+<!ENTITY % local.releaseinfo.attrib "">
+<!ENTITY % releaseinfo.role.attrib "%role.attrib;">
+
+<!ENTITY % releaseinfo.element "INCLUDE">
+<![ %releaseinfo.element; [
+<!ELEMENT ReleaseInfo - - ((%docinfo.char.mix;)+)>
+<!--end of releaseinfo.element-->]]>
+
+<!ENTITY % releaseinfo.attlist "INCLUDE">
+<![ %releaseinfo.attlist; [
+<!ATTLIST ReleaseInfo
+               %common.attrib;
+               %releaseinfo.role.attrib;
+               %local.releaseinfo.attrib;
+>
+<!--end of releaseinfo.attlist-->]]>
+<!--end of releaseinfo.module-->]]>
+
+<!-- RevHistory ....................... -->
+
+<!ENTITY % revhistory.content.module "INCLUDE">
+<![ %revhistory.content.module; [
+<!ENTITY % revhistory.module "INCLUDE">
+<![ %revhistory.module; [
+<!ENTITY % local.revhistory.attrib "">
+<!ENTITY % revhistory.role.attrib "%role.attrib;">
+
+<!ENTITY % revhistory.element "INCLUDE">
+<![ %revhistory.element; [
+<!ELEMENT RevHistory - - (Revision+)>
+<!--end of revhistory.element-->]]>
+
+<!ENTITY % revhistory.attlist "INCLUDE">
+<![ %revhistory.attlist; [
+<!ATTLIST RevHistory
+               %common.attrib;
+               %revhistory.role.attrib;
+               %local.revhistory.attrib;
+>
+<!--end of revhistory.attlist-->]]>
+<!--end of revhistory.module-->]]>
+
+  <!ENTITY % revision.module "INCLUDE">
+  <![ %revision.module; [
+  <!ENTITY % local.revision.attrib "">
+  <!ENTITY % revision.role.attrib "%role.attrib;">
+  
+<!ENTITY % revision.element "INCLUDE">
+<![ %revision.element; [
+<!ELEMENT Revision - - (RevNumber, Date, AuthorInitials*, (RevRemark|RevDescription)?)>
+<!--end of revision.element-->]]>
+  
+<!ENTITY % revision.attlist "INCLUDE">
+<![ %revision.attlist; [
+<!ATTLIST Revision
+               %common.attrib;
+               %revision.role.attrib;
+               %local.revision.attrib;
+>
+<!--end of revision.attlist-->]]>
+  <!--end of revision.module-->]]>
+
+  <!ENTITY % revnumber.module "INCLUDE">
+  <![ %revnumber.module; [
+  <!ENTITY % local.revnumber.attrib "">
+  <!ENTITY % revnumber.role.attrib "%role.attrib;">
+  
+<!ENTITY % revnumber.element "INCLUDE">
+<![ %revnumber.element; [
+<!ELEMENT RevNumber - - ((%docinfo.char.mix;)+)>
+<!--end of revnumber.element-->]]>
+  
+<!ENTITY % revnumber.attlist "INCLUDE">
+<![ %revnumber.attlist; [
+<!ATTLIST RevNumber
+               %common.attrib;
+               %revnumber.role.attrib;
+               %local.revnumber.attrib;
+>
+<!--end of revnumber.attlist-->]]>
+<!--end of revnumber.module-->]]>
+
+<!-- Date (defined elsewhere in this section)-->
+<!-- AuthorInitials (defined elsewhere in this section)-->
+
+<!ENTITY % revremark.module "INCLUDE">
+<![ %revremark.module; [
+<!ENTITY % local.revremark.attrib "">
+<!ENTITY % revremark.role.attrib "%role.attrib;">
+
+<!ENTITY % revremark.element "INCLUDE">
+<![ %revremark.element; [
+<!ELEMENT RevRemark - - ((%docinfo.char.mix;)+)>
+<!--end of revremark.element-->]]>
+
+<!ENTITY % revremark.attlist "INCLUDE">
+<![ %revremark.attlist; [
+<!ATTLIST RevRemark
+               %common.attrib;
+               %revremark.role.attrib;
+               %local.revremark.attrib;
+>
+<!--end of revremark.attlist-->]]>
+<!--end of revremark.module-->]]>
+
+<!ENTITY % revdescription.module "INCLUDE">
+<![ %revdescription.module; [
+<!ENTITY % local.revdescription.attrib "">
+<!ENTITY % revdescription.role.attrib "%role.attrib;">
+
+<!ENTITY % revdescription.element "INCLUDE">
+<![ %revdescription.element; [
+<!ELEMENT RevDescription - - ((%revdescription.mix;)+)>
+<!--end of revdescription.element-->]]>
+
+<!ENTITY % revdescription.attlist "INCLUDE">
+<![ %revdescription.attlist; [
+<!ATTLIST RevDescription
+               %common.attrib;
+               %revdescription.role.attrib;
+               %local.revdescription.attrib;
+>
+<!--end of revdescription.attlist-->]]>
+<!--end of revdescription.module-->]]>
+<!--end of revhistory.content.module-->]]>
+
+<!-- SeriesVolNums .................... -->
+
+<!ENTITY % seriesvolnums.module "INCLUDE">
+<![ %seriesvolnums.module; [
+<!ENTITY % local.seriesvolnums.attrib "">
+<!ENTITY % seriesvolnums.role.attrib "%role.attrib;">
+
+<!ENTITY % seriesvolnums.element "INCLUDE">
+<![ %seriesvolnums.element; [
+<!ELEMENT SeriesVolNums - - ((%docinfo.char.mix;)+)>
+<!--end of seriesvolnums.element-->]]>
+
+<!ENTITY % seriesvolnums.attlist "INCLUDE">
+<![ %seriesvolnums.attlist; [
+<!ATTLIST SeriesVolNums
+               %common.attrib;
+               %seriesvolnums.role.attrib;
+               %local.seriesvolnums.attrib;
+>
+<!--end of seriesvolnums.attlist-->]]>
+<!--end of seriesvolnums.module-->]]>
+
+<!-- VolumeNum ........................ -->
+
+<!ENTITY % volumenum.module "INCLUDE">
+<![ %volumenum.module; [
+<!ENTITY % local.volumenum.attrib "">
+<!ENTITY % volumenum.role.attrib "%role.attrib;">
+
+<!ENTITY % volumenum.element "INCLUDE">
+<![ %volumenum.element; [
+<!ELEMENT VolumeNum - - ((%docinfo.char.mix;)+)>
+<!--end of volumenum.element-->]]>
+
+<!ENTITY % volumenum.attlist "INCLUDE">
+<![ %volumenum.attlist; [
+<!ATTLIST VolumeNum
+               %common.attrib;
+               %volumenum.role.attrib;
+               %local.volumenum.attrib;
+>
+<!--end of volumenum.attlist-->]]>
+<!--end of volumenum.module-->]]>
+
+<!-- .................................. -->
+
+<!--end of docinfo.content.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Inline, link, and ubiquitous elements ................................ -->
+
+<!-- Technical and computer terms ......................................... -->
+
+<!ENTITY % accel.module "INCLUDE">
+<![ %accel.module; [
+<!ENTITY % local.accel.attrib "">
+<!ENTITY % accel.role.attrib "%role.attrib;">
+
+<!ENTITY % accel.element "INCLUDE">
+<![ %accel.element; [
+<!ELEMENT Accel - - ((%smallcptr.char.mix;)+)>
+<!--end of accel.element-->]]>
+
+<!ENTITY % accel.attlist "INCLUDE">
+<![ %accel.attlist; [
+<!ATTLIST Accel
+               %common.attrib;
+               %accel.role.attrib;
+               %local.accel.attrib;
+>
+<!--end of accel.attlist-->]]>
+<!--end of accel.module-->]]>
+
+<!ENTITY % action.module "INCLUDE">
+<![ %action.module; [
+<!ENTITY % local.action.attrib "">
+<!ENTITY % action.role.attrib "%role.attrib;">
+
+<!ENTITY % action.element "INCLUDE">
+<![ %action.element; [
+<!ELEMENT Action - - ((%smallcptr.char.mix;)+)>
+<!--end of action.element-->]]>
+
+<!ENTITY % action.attlist "INCLUDE">
+<![ %action.attlist; [
+<!ATTLIST Action
+               %moreinfo.attrib;
+               %common.attrib;
+               %action.role.attrib;
+               %local.action.attrib;
+>
+<!--end of action.attlist-->]]>
+<!--end of action.module-->]]>
+
+<!ENTITY % application.module "INCLUDE">
+<![ %application.module; [
+<!ENTITY % local.application.attrib "">
+<!ENTITY % application.role.attrib "%role.attrib;">
+
+<!ENTITY % application.element "INCLUDE">
+<![ %application.element; [
+<!ELEMENT Application - - ((%para.char.mix;)+)>
+<!--end of application.element-->]]>
+
+<!ENTITY % application.attlist "INCLUDE">
+<![ %application.attlist; [
+<!ATTLIST Application
+               Class           (Hardware
+                               |Software)      #IMPLIED
+               %moreinfo.attrib;
+               %common.attrib;
+               %application.role.attrib;
+               %local.application.attrib;
+>
+<!--end of application.attlist-->]]>
+<!--end of application.module-->]]>
+
+<!ENTITY % classname.module "INCLUDE">
+<![ %classname.module; [
+<!ENTITY % local.classname.attrib "">
+<!ENTITY % classname.role.attrib "%role.attrib;">
+
+<!ENTITY % classname.element "INCLUDE">
+<![ %classname.element; [
+<!ELEMENT ClassName - - ((%smallcptr.char.mix;)+)>
+<!--end of classname.element-->]]>
+
+<!ENTITY % classname.attlist "INCLUDE">
+<![ %classname.attlist; [
+<!ATTLIST ClassName
+               %common.attrib;
+               %classname.role.attrib;
+               %local.classname.attrib;
+>
+<!--end of classname.attlist-->]]>
+<!--end of classname.module-->]]>
+
+<!ENTITY % co.module "INCLUDE">
+<![ %co.module; [
+<!ENTITY % local.co.attrib "">
+<!-- CO is a callout area of the LineColumn unit type (a single character 
+     position); the position is directly indicated by the location of CO. -->
+<!ENTITY % co.role.attrib "%role.attrib;">
+
+<!ENTITY % co.element "INCLUDE">
+<![ %co.element; [
+<!ELEMENT CO - O EMPTY>
+<!--end of co.element-->]]>
+
+<!ENTITY % co.attlist "INCLUDE">
+<![ %co.attlist; [
+<!ATTLIST CO
+               %label.attrib; --bug number/symbol override or initialization--
+               %linkends.attrib; --to any related information--
+               %idreq.common.attrib;
+               %co.role.attrib;
+               %local.co.attrib;
+>
+<!--end of co.attlist-->]]>
+<!--end of co.module-->]]>
+
+<!ENTITY % command.module "INCLUDE">
+<![ %command.module; [
+<!ENTITY % local.command.attrib "">
+<!ENTITY % command.role.attrib "%role.attrib;">
+
+<!ENTITY % command.element "INCLUDE">
+<![ %command.element; [
+<!ELEMENT Command - - ((%cptr.char.mix;)+)>
+<!--end of command.element-->]]>
+
+<!ENTITY % command.attlist "INCLUDE">
+<![ %command.attlist; [
+<!ATTLIST Command
+               %moreinfo.attrib;
+               %common.attrib;
+               %command.role.attrib;
+               %local.command.attrib;
+>
+<!--end of command.attlist-->]]>
+<!--end of command.module-->]]>
+
+<!ENTITY % computeroutput.module "INCLUDE">
+<![ %computeroutput.module; [
+<!ENTITY % local.computeroutput.attrib "">
+<!ENTITY % computeroutput.role.attrib "%role.attrib;">
+
+<!ENTITY % computeroutput.element "INCLUDE">
+<![ %computeroutput.element; [
+<!ELEMENT ComputerOutput - - ((%cptr.char.mix;)+)>
+<!--end of computeroutput.element-->]]>
+
+<!ENTITY % computeroutput.attlist "INCLUDE">
+<![ %computeroutput.attlist; [
+<!ATTLIST ComputerOutput
+               %moreinfo.attrib;
+               %common.attrib;
+               %computeroutput.role.attrib;
+               %local.computeroutput.attrib;
+>
+<!--end of computeroutput.attlist-->]]>
+<!--end of computeroutput.module-->]]>
+
+<!ENTITY % database.module "INCLUDE">
+<![ %database.module; [
+<!ENTITY % local.database.attrib "">
+<!ENTITY % database.role.attrib "%role.attrib;">
+
+<!ENTITY % database.element "INCLUDE">
+<![ %database.element; [
+<!ELEMENT Database - - ((%smallcptr.char.mix;)+)>
+<!--end of database.element-->]]>
+
+<!ENTITY % database.attlist "INCLUDE">
+<![ %database.attlist; [
+<!ATTLIST Database
+               --
+               Class: Type of database the element names; no default
+               --
+               Class           (Name
+                               |Table
+                               |Field
+                               |Key1
+                               |Key2
+                               |Record)        #IMPLIED
+               %moreinfo.attrib;
+               %common.attrib;
+               %database.role.attrib;
+               %local.database.attrib;
+>
+<!--end of database.attlist-->]]>
+<!--end of database.module-->]]>
+
+<!ENTITY % email.module "INCLUDE">
+<![ %email.module; [
+<!ENTITY % local.email.attrib "">
+<!ENTITY % email.role.attrib "%role.attrib;">
+
+<!ENTITY % email.element "INCLUDE">
+<![ %email.element; [
+<!ELEMENT Email - - ((%docinfo.char.mix;)+)>
+<!--end of email.element-->]]>
+
+<!ENTITY % email.attlist "INCLUDE">
+<![ %email.attlist; [
+<!ATTLIST Email
+               %common.attrib;
+               %email.role.attrib;
+               %local.email.attrib;
+>
+<!--end of email.attlist-->]]>
+<!--end of email.module-->]]>
+
+<!ENTITY % envar.module "INCLUDE">
+<![ %envar.module; [
+<!ENTITY % local.envar.attrib "">
+<!ENTITY % envar.role.attrib "%role.attrib;">
+
+<!ENTITY % envar.element "INCLUDE">
+<![ %envar.element; [
+<!ELEMENT EnVar - - ((%smallcptr.char.mix;)+)>
+<!--end of envar.element-->]]>
+
+<!ENTITY % envar.attlist "INCLUDE">
+<![ %envar.attlist; [
+<!ATTLIST EnVar
+               %common.attrib;
+               %envar.role.attrib;
+               %local.envar.attrib;
+>
+<!--end of envar.attlist-->]]>
+<!--end of envar.module-->]]>
+
+
+<!ENTITY % errorcode.module "INCLUDE">
+<![ %errorcode.module; [
+<!ENTITY % local.errorcode.attrib "">
+<!ENTITY % errorcode.role.attrib "%role.attrib;">
+
+<!ENTITY % errorcode.element "INCLUDE">
+<![ %errorcode.element; [
+<!ELEMENT ErrorCode - - ((%smallcptr.char.mix;)+)>
+<!--end of errorcode.element-->]]>
+
+<!ENTITY % errorcode.attlist "INCLUDE">
+<![ %errorcode.attlist; [
+<!ATTLIST ErrorCode
+               %moreinfo.attrib;
+               %common.attrib;
+               %errorcode.role.attrib;
+               %local.errorcode.attrib;
+>
+<!--end of errorcode.attlist-->]]>
+<!--end of errorcode.module-->]]>
+
+<!ENTITY % errorname.module "INCLUDE">
+<![ %errorname.module; [
+<!ENTITY % local.errorname.attrib "">
+<!ENTITY % errorname.role.attrib "%role.attrib;">
+
+<!ENTITY % errorname.element "INCLUDE">
+<![ %errorname.element; [
+<!ELEMENT ErrorName - - ((%smallcptr.char.mix;)+)>
+<!--end of errorname.element-->]]>
+
+<!ENTITY % errorname.attlist "INCLUDE">
+<![ %errorname.attlist; [
+<!ATTLIST ErrorName
+               %common.attrib;
+               %errorname.role.attrib;
+               %local.errorname.attrib;
+>
+<!--end of errorname.attlist-->]]>
+<!--end of errorname.module-->]]>
+
+<!ENTITY % errortype.module "INCLUDE">
+<![ %errortype.module; [
+<!ENTITY % local.errortype.attrib "">
+<!ENTITY % errortype.role.attrib "%role.attrib;">
+
+<!ENTITY % errortype.element "INCLUDE">
+<![ %errortype.element; [
+<!ELEMENT ErrorType - - ((%smallcptr.char.mix;)+)>
+<!--end of errortype.element-->]]>
+
+<!ENTITY % errortype.attlist "INCLUDE">
+<![ %errortype.attlist; [
+<!ATTLIST ErrorType
+               %common.attrib;
+               %errortype.role.attrib;
+               %local.errortype.attrib;
+>
+<!--end of errortype.attlist-->]]>
+<!--end of errortype.module-->]]>
+
+<!ENTITY % filename.module "INCLUDE">
+<![ %filename.module; [
+<!ENTITY % local.filename.attrib "">
+<!ENTITY % filename.role.attrib "%role.attrib;">
+
+<!ENTITY % filename.element "INCLUDE">
+<![ %filename.element; [
+<!ELEMENT Filename - - ((%smallcptr.char.mix;)+)>
+<!--end of filename.element-->]]>
+
+<!ENTITY % filename.attlist "INCLUDE">
+<![ %filename.attlist; [
+<!ATTLIST Filename
+               --
+               Class: Type of filename the element names; no default
+               --
+               Class           (HeaderFile
+                               |DeviceFile
+                               |Directory
+                               |LibraryFile
+                               |SymLink)       #IMPLIED
+               --
+               Path: Search path (possibly system-specific) in which 
+               file can be found
+               --
+               Path            CDATA           #IMPLIED
+               %moreinfo.attrib;
+               %common.attrib;
+               %filename.role.attrib;
+               %local.filename.attrib;
+>
+<!--end of filename.attlist-->]]>
+<!--end of filename.module-->]]>
+
+<!ENTITY % function.module "INCLUDE">
+<![ %function.module; [
+<!ENTITY % local.function.attrib "">
+<!ENTITY % function.role.attrib "%role.attrib;">
+
+<!ENTITY % function.element "INCLUDE">
+<![ %function.element; [
+<!ELEMENT Function - - ((%cptr.char.mix;)+)>
+<!--end of function.element-->]]>
+
+<!ENTITY % function.attlist "INCLUDE">
+<![ %function.attlist; [
+<!ATTLIST Function
+               %moreinfo.attrib;
+               %common.attrib;
+               %function.role.attrib;
+               %local.function.attrib;
+>
+<!--end of function.attlist-->]]>
+<!--end of function.module-->]]>
+
+<!ENTITY % guibutton.module "INCLUDE">
+<![ %guibutton.module; [
+<!ENTITY % local.guibutton.attrib "">
+<!ENTITY % guibutton.role.attrib "%role.attrib;">
+
+<!ENTITY % guibutton.element "INCLUDE">
+<![ %guibutton.element; [
+<!ELEMENT GUIButton - - ((%smallcptr.char.mix;|Accel)+)>
+<!--end of guibutton.element-->]]>
+
+<!ENTITY % guibutton.attlist "INCLUDE">
+<![ %guibutton.attlist; [
+<!ATTLIST GUIButton
+               %moreinfo.attrib;
+               %common.attrib;
+               %guibutton.role.attrib;
+               %local.guibutton.attrib;
+>
+<!--end of guibutton.attlist-->]]>
+<!--end of guibutton.module-->]]>
+
+<!ENTITY % guiicon.module "INCLUDE">
+<![ %guiicon.module; [
+<!ENTITY % local.guiicon.attrib "">
+<!ENTITY % guiicon.role.attrib "%role.attrib;">
+
+<!ENTITY % guiicon.element "INCLUDE">
+<![ %guiicon.element; [
+<!ELEMENT GUIIcon - - ((%smallcptr.char.mix;|Accel)+)>
+<!--end of guiicon.element-->]]>
+
+<!ENTITY % guiicon.attlist "INCLUDE">
+<![ %guiicon.attlist; [
+<!ATTLIST GUIIcon
+               %moreinfo.attrib;
+               %common.attrib;
+               %guiicon.role.attrib;
+               %local.guiicon.attrib;
+>
+<!--end of guiicon.attlist-->]]>
+<!--end of guiicon.module-->]]>
+
+<!ENTITY % guilabel.module "INCLUDE">
+<![ %guilabel.module; [
+<!ENTITY % local.guilabel.attrib "">
+<!ENTITY % guilabel.role.attrib "%role.attrib;">
+
+<!ENTITY % guilabel.element "INCLUDE">
+<![ %guilabel.element; [
+<!ELEMENT GUILabel - - ((%smallcptr.char.mix;|Accel)+)>
+<!--end of guilabel.element-->]]>
+
+<!ENTITY % guilabel.attlist "INCLUDE">
+<![ %guilabel.attlist; [
+<!ATTLIST GUILabel
+               %moreinfo.attrib;
+               %common.attrib;
+               %guilabel.role.attrib;
+               %local.guilabel.attrib;
+>
+<!--end of guilabel.attlist-->]]>
+<!--end of guilabel.module-->]]>
+
+<!ENTITY % guimenu.module "INCLUDE">
+<![ %guimenu.module; [
+<!ENTITY % local.guimenu.attrib "">
+<!ENTITY % guimenu.role.attrib "%role.attrib;">
+
+<!ENTITY % guimenu.element "INCLUDE">
+<![ %guimenu.element; [
+<!ELEMENT GUIMenu - - ((%smallcptr.char.mix;|Accel)+)>
+<!--end of guimenu.element-->]]>
+
+<!ENTITY % guimenu.attlist "INCLUDE">
+<![ %guimenu.attlist; [
+<!ATTLIST GUIMenu
+               %moreinfo.attrib;
+               %common.attrib;
+               %guimenu.role.attrib;
+               %local.guimenu.attrib;
+>
+<!--end of guimenu.attlist-->]]>
+<!--end of guimenu.module-->]]>
+
+<!ENTITY % guimenuitem.module "INCLUDE">
+<![ %guimenuitem.module; [
+<!ENTITY % local.guimenuitem.attrib "">
+<!ENTITY % guimenuitem.role.attrib "%role.attrib;">
+
+<!ENTITY % guimenuitem.element "INCLUDE">
+<![ %guimenuitem.element; [
+<!ELEMENT GUIMenuItem - - ((%smallcptr.char.mix;|Accel)+)>
+<!--end of guimenuitem.element-->]]>
+
+<!ENTITY % guimenuitem.attlist "INCLUDE">
+<![ %guimenuitem.attlist; [
+<!ATTLIST GUIMenuItem
+               %moreinfo.attrib;
+               %common.attrib;
+               %guimenuitem.role.attrib;
+               %local.guimenuitem.attrib;
+>
+<!--end of guimenuitem.attlist-->]]>
+<!--end of guimenuitem.module-->]]>
+
+<!ENTITY % guisubmenu.module "INCLUDE">
+<![ %guisubmenu.module; [
+<!ENTITY % local.guisubmenu.attrib "">
+<!ENTITY % guisubmenu.role.attrib "%role.attrib;">
+
+<!ENTITY % guisubmenu.element "INCLUDE">
+<![ %guisubmenu.element; [
+<!ELEMENT GUISubmenu - - ((%smallcptr.char.mix;|Accel)+)>
+<!--end of guisubmenu.element-->]]>
+
+<!ENTITY % guisubmenu.attlist "INCLUDE">
+<![ %guisubmenu.attlist; [
+<!ATTLIST GUISubmenu
+               %moreinfo.attrib;
+               %common.attrib;
+               %guisubmenu.role.attrib;
+               %local.guisubmenu.attrib;
+>
+<!--end of guisubmenu.attlist-->]]>
+<!--end of guisubmenu.module-->]]>
+
+<!ENTITY % hardware.module "INCLUDE">
+<![ %hardware.module; [
+<!ENTITY % local.hardware.attrib "">
+<!ENTITY % hardware.role.attrib "%role.attrib;">
+
+<!ENTITY % hardware.element "INCLUDE">
+<![ %hardware.element; [
+<!ELEMENT Hardware - - ((%smallcptr.char.mix;)+)>
+<!--end of hardware.element-->]]>
+
+<!ENTITY % hardware.attlist "INCLUDE">
+<![ %hardware.attlist; [
+<!ATTLIST Hardware
+               %moreinfo.attrib;
+               %common.attrib;
+               %hardware.role.attrib;
+               %local.hardware.attrib;
+>
+<!--end of hardware.attlist-->]]>
+<!--end of hardware.module-->]]>
+
+<!ENTITY % interface.module "INCLUDE">
+<![ %interface.module; [
+<!ENTITY % local.interface.attrib "">
+<!ENTITY % interface.role.attrib "%role.attrib;">
+
+<!ENTITY % interface.element "INCLUDE">
+<![ %interface.element; [
+<!ELEMENT Interface - - (%smallcptr.char.mix;|Accel)*>
+<!--end of interface.element-->]]>
+
+<!ENTITY % interface.attlist "INCLUDE">
+<![ %interface.attlist; [
+<!ATTLIST Interface
+               %moreinfo.attrib;
+               %common.attrib;
+               %interface.role.attrib;
+               %local.interface.attrib;
+>
+<!--end of interface.attlist-->]]>
+<!--end of interface.module-->]]>
+
+<!ENTITY % keycap.module "INCLUDE">
+<![ %keycap.module; [
+<!ENTITY % local.keycap.attrib "">
+<!ENTITY % keycap.role.attrib "%role.attrib;">
+
+<!ENTITY % keycap.element "INCLUDE">
+<![ %keycap.element; [
+<!ELEMENT KeyCap - - (%smallcptr.char.mix;)*>
+<!--end of keycap.element-->]]>
+
+<!ENTITY % keycap.attlist "INCLUDE">
+<![ %keycap.attlist; [
+<!ATTLIST KeyCap
+               %moreinfo.attrib;
+               %common.attrib;
+               %keycap.role.attrib;
+               %local.keycap.attrib;
+>
+<!--end of keycap.attlist-->]]>
+<!--end of keycap.module-->]]>
+
+<!ENTITY % keycode.module "INCLUDE">
+<![ %keycode.module; [
+<!ENTITY % local.keycode.attrib "">
+<!ENTITY % keycode.role.attrib "%role.attrib;">
+
+<!ENTITY % keycode.element "INCLUDE">
+<![ %keycode.element; [
+<!ELEMENT KeyCode - - ((%smallcptr.char.mix;)+)>
+<!--end of keycode.element-->]]>
+
+<!ENTITY % keycode.attlist "INCLUDE">
+<![ %keycode.attlist; [
+<!ATTLIST KeyCode
+               %common.attrib;
+               %keycode.role.attrib;
+               %local.keycode.attrib;
+>
+<!--end of keycode.attlist-->]]>
+<!--end of keycode.module-->]]>
+
+<!ENTITY % keycombo.module "INCLUDE">
+<![ %keycombo.module; [
+<!ENTITY % local.keycombo.attrib "">
+<!ENTITY % keycombo.role.attrib "%role.attrib;">
+
+<!ENTITY % keycombo.element "INCLUDE">
+<![ %keycombo.element; [
+<!ELEMENT KeyCombo - - ((KeyCap|KeyCombo|KeySym|MouseButton)+)>
+<!--end of keycombo.element-->]]>
+
+<!ENTITY % keycombo.attlist "INCLUDE">
+<![ %keycombo.attlist; [
+<!ATTLIST KeyCombo
+               %keyaction.attrib;
+               %moreinfo.attrib;
+               %common.attrib;
+               %keycombo.role.attrib;
+               %local.keycombo.attrib;
+>
+<!--end of keycombo.attlist-->]]>
+<!--end of keycombo.module-->]]>
+
+<!ENTITY % keysym.module "INCLUDE">
+<![ %keysym.module; [
+<!ENTITY % local.keysym.attrib "">
+<!ENTITY % keysysm.role.attrib "%role.attrib;">
+
+<!ENTITY % keysym.element "INCLUDE">
+<![ %keysym.element; [
+<!ELEMENT KeySym - - ((%smallcptr.char.mix;)+)>
+<!--end of keysym.element-->]]>
+
+<!ENTITY % keysym.attlist "INCLUDE">
+<![ %keysym.attlist; [
+<!ATTLIST KeySym
+               %common.attrib;
+               %keysysm.role.attrib;
+               %local.keysym.attrib;
+>
+<!--end of keysym.attlist-->]]>
+<!--end of keysym.module-->]]>
+
+<!ENTITY % lineannotation.module "INCLUDE">
+<![ %lineannotation.module; [
+<!ENTITY % local.lineannotation.attrib "">
+<!ENTITY % lineannotation.role.attrib "%role.attrib;">
+
+<!ENTITY % lineannotation.element "INCLUDE">
+<![ %lineannotation.element; [
+<!ELEMENT LineAnnotation - - ((%para.char.mix;)+)>
+<!--end of lineannotation.element-->]]>
+
+<!ENTITY % lineannotation.attlist "INCLUDE">
+<![ %lineannotation.attlist; [
+<!ATTLIST LineAnnotation
+               %common.attrib;
+               %lineannotation.role.attrib;
+               %local.lineannotation.attrib;
+>
+<!--end of lineannotation.attlist-->]]>
+<!--end of lineannotation.module-->]]>
+
+<!ENTITY % literal.module "INCLUDE">
+<![ %literal.module; [
+<!ENTITY % local.literal.attrib "">
+<!ENTITY % literal.role.attrib "%role.attrib;">
+
+<!ENTITY % literal.element "INCLUDE">
+<![ %literal.element; [
+<!ELEMENT Literal - - (%cptr.char.mix;)*>
+<!--end of literal.element-->]]>
+
+<!ENTITY % literal.attlist "INCLUDE">
+<![ %literal.attlist; [
+<!ATTLIST Literal
+               %moreinfo.attrib;
+               %common.attrib;
+               %literal.role.attrib;
+               %local.literal.attrib;
+>
+<!--end of literal.attlist-->]]>
+<!--end of literal.module-->]]>
+
+<!ENTITY % constant.module "INCLUDE">
+<![ %constant.module; [
+<!ENTITY % local.constant.attrib "">
+<!ENTITY % constant.role.attrib "%role.attrib;">
+
+<!ENTITY % constant.element "INCLUDE">
+<![ %constant.element; [
+<!ELEMENT Constant - - (%smallcptr.char.mix;)*>
+<!--end of constant.element-->]]>
+
+<!ENTITY % constant.attlist "INCLUDE">
+<![ %constant.attlist; [
+<!ATTLIST Constant
+               %common.attrib;
+               %constant.role.attrib;
+               %local.constant.attrib;
+               Class   (Limit)         #IMPLIED
+>
+<!--end of constant.attlist-->]]>
+<!--end of constant.module-->]]>
+
+<!ENTITY % varname.module "INCLUDE">
+<![ %varname.module; [
+<!ENTITY % local.varname.attrib "">
+<!ENTITY % varname.role.attrib "%role.attrib;">
+
+<!ENTITY % varname.element "INCLUDE">
+<![ %varname.element; [
+<!ELEMENT VarName - - (%smallcptr.char.mix;)*>
+<!--end of varname.element-->]]>
+
+<!ENTITY % varname.attlist "INCLUDE">
+<![ %varname.attlist; [
+<!ATTLIST VarName
+               %common.attrib;
+               %varname.role.attrib;
+               %local.varname.attrib;
+>
+<!--end of varname.attlist-->]]>
+<!--end of varname.module-->]]>
+
+<!ENTITY % markup.module "INCLUDE">
+<![ %markup.module; [
+<!ENTITY % local.markup.attrib "">
+<!ENTITY % markup.role.attrib "%role.attrib;">
+
+<!ENTITY % markup.element "INCLUDE">
+<![ %markup.element; [
+<!ELEMENT Markup - - ((%smallcptr.char.mix;)+)>
+<!--end of markup.element-->]]>
+
+<!ENTITY % markup.attlist "INCLUDE">
+<![ %markup.attlist; [
+<!ATTLIST Markup
+               %common.attrib;
+               %markup.role.attrib;
+               %local.markup.attrib;
+>
+<!--end of markup.attlist-->]]>
+<!--end of markup.module-->]]>
+
+<!ENTITY % medialabel.module "INCLUDE">
+<![ %medialabel.module; [
+<!ENTITY % local.medialabel.attrib "">
+<!ENTITY % medialabel.role.attrib "%role.attrib;">
+
+<!ENTITY % medialabel.element "INCLUDE">
+<![ %medialabel.element; [
+<!ELEMENT MediaLabel - - ((%smallcptr.char.mix;)+)>
+<!--end of medialabel.element-->]]>
+
+<!ENTITY % medialabel.attlist "INCLUDE">
+<![ %medialabel.attlist; [
+<!ATTLIST MediaLabel
+               --
+               Class: Type of medium named by the element; no default
+               --
+               Class           (Cartridge
+                               |CDRom
+                               |Disk
+                               |Tape)          #IMPLIED
+               %common.attrib;
+               %medialabel.role.attrib;
+               %local.medialabel.attrib;
+>
+<!--end of medialabel.attlist-->]]>
+<!--end of medialabel.module-->]]>
+
+<!ENTITY % menuchoice.content.module "INCLUDE">
+<![ %menuchoice.content.module; [
+<!ENTITY % menuchoice.module "INCLUDE">
+<![ %menuchoice.module; [
+<!ENTITY % local.menuchoice.attrib "">
+<!ENTITY % menuchoice.role.attrib "%role.attrib;">
+
+<!ENTITY % menuchoice.element "INCLUDE">
+<![ %menuchoice.element; [
+<!ELEMENT MenuChoice - - (Shortcut?, (GUIButton|GUIIcon|GUILabel
+               |GUIMenu|GUIMenuItem|GUISubmenu|Interface)+)>
+<!--end of menuchoice.element-->]]>
+
+<!ENTITY % menuchoice.attlist "INCLUDE">
+<![ %menuchoice.attlist; [
+<!ATTLIST MenuChoice
+               %moreinfo.attrib;
+               %common.attrib;
+               %menuchoice.role.attrib;
+               %local.menuchoice.attrib;
+>
+<!--end of menuchoice.attlist-->]]>
+<!--end of menuchoice.module-->]]>
+
+<!ENTITY % shortcut.module "INCLUDE">
+<![ %shortcut.module; [
+<!-- See also KeyCombo -->
+<!ENTITY % local.shortcut.attrib "">
+<!ENTITY % shortcut.role.attrib "%role.attrib;">
+
+<!ENTITY % shortcut.element "INCLUDE">
+<![ %shortcut.element; [
+<!ELEMENT Shortcut - - ((KeyCap|KeyCombo|KeySym|MouseButton)+)>
+<!--end of shortcut.element-->]]>
+
+<!ENTITY % shortcut.attlist "INCLUDE">
+<![ %shortcut.attlist; [
+<!ATTLIST Shortcut
+               %keyaction.attrib;
+               %moreinfo.attrib;
+               %common.attrib;
+               %shortcut.role.attrib;
+               %local.shortcut.attrib;
+>
+<!--end of shortcut.attlist-->]]>
+<!--end of shortcut.module-->]]>
+<!--end of menuchoice.content.module-->]]>
+
+<!ENTITY % mousebutton.module "INCLUDE">
+<![ %mousebutton.module; [
+<!ENTITY % local.mousebutton.attrib "">
+<!ENTITY % mousebutton.role.attrib "%role.attrib;">
+
+<!ENTITY % mousebutton.element "INCLUDE">
+<![ %mousebutton.element; [
+<!ELEMENT MouseButton - - ((%smallcptr.char.mix;)+)>
+<!--end of mousebutton.element-->]]>
+
+<!ENTITY % mousebutton.attlist "INCLUDE">
+<![ %mousebutton.attlist; [
+<!ATTLIST MouseButton
+               %moreinfo.attrib;
+               %common.attrib;
+               %mousebutton.role.attrib;
+               %local.mousebutton.attrib;
+>
+<!--end of mousebutton.attlist-->]]>
+<!--end of mousebutton.module-->]]>
+
+<!ENTITY % msgtext.module "INCLUDE">
+<![ %msgtext.module; [
+<!ENTITY % local.msgtext.attrib "">
+<!ENTITY % msgtext.role.attrib "%role.attrib;">
+
+<!ENTITY % msgtext.element "INCLUDE">
+<![ %msgtext.element; [
+<!--FUTURE USE (V5.0):
+......................
+The content model of MsgText will be reduced. It will be made
+the same as %example.mix; although it may not use that PE.
+......................
+-->
+<!ELEMENT MsgText - - ((%component.mix;)+)>
+<!--end of msgtext.element-->]]>
+
+<!ENTITY % msgtext.attlist "INCLUDE">
+<![ %msgtext.attlist; [
+<!ATTLIST MsgText
+               %common.attrib;
+               %msgtext.role.attrib;
+               %local.msgtext.attrib;
+>
+<!--end of msgtext.attlist-->]]>
+<!--end of msgtext.module-->]]>
+
+<!ENTITY % option.module "INCLUDE">
+<![ %option.module; [
+<!ENTITY % local.option.attrib "">
+<!ENTITY % option.role.attrib "%role.attrib;">
+
+<!ENTITY % option.element "INCLUDE">
+<![ %option.element; [
+<!ELEMENT Option - - (%smallcptr.char.mix;)*>
+<!--end of option.element-->]]>
+
+<!ENTITY % option.attlist "INCLUDE">
+<![ %option.attlist; [
+<!ATTLIST Option
+               %common.attrib;
+               %option.role.attrib;
+               %local.option.attrib;
+>
+<!--end of option.attlist-->]]>
+<!--end of option.module-->]]>
+
+<!ENTITY % optional.module "INCLUDE">
+<![ %optional.module; [
+<!ENTITY % local.optional.attrib "">
+<!ENTITY % optional.role.attrib "%role.attrib;">
+
+<!ENTITY % optional.element "INCLUDE">
+<![ %optional.element; [
+<!ELEMENT Optional - - ((%cptr.char.mix;)+)>
+<!--end of optional.element-->]]>
+
+<!ENTITY % optional.attlist "INCLUDE">
+<![ %optional.attlist; [
+<!ATTLIST Optional
+               %common.attrib;
+               %optional.role.attrib;
+               %local.optional.attrib;
+>
+<!--end of optional.attlist-->]]>
+<!--end of optional.module-->]]>
+
+<!ENTITY % parameter.module "INCLUDE">
+<![ %parameter.module; [
+<!ENTITY % local.parameter.attrib "">
+<!ENTITY % parameter.role.attrib "%role.attrib;">
+
+<!ENTITY % parameter.element "INCLUDE">
+<![ %parameter.element; [
+<!ELEMENT Parameter - - (%smallcptr.char.mix;)*>
+<!--end of parameter.element-->]]>
+
+<!ENTITY % parameter.attlist "INCLUDE">
+<![ %parameter.attlist; [
+<!ATTLIST Parameter
+               --
+               Class: Type of the Parameter; no default
+               --
+               Class           (Command
+                               |Function
+                               |Option)        #IMPLIED
+               %moreinfo.attrib;
+               %common.attrib;
+               %parameter.role.attrib;
+               %local.parameter.attrib;
+>
+<!--end of parameter.attlist-->]]>
+<!--end of parameter.module-->]]>
+
+<!ENTITY % prompt.module "INCLUDE">
+<![ %prompt.module; [
+<!ENTITY % local.prompt.attrib "">
+<!ENTITY % prompt.role.attrib "%role.attrib;">
+
+<!ENTITY % prompt.element "INCLUDE">
+<![ %prompt.element; [
+<!ELEMENT Prompt - - ((%smallcptr.char.mix;)+)>
+<!--end of prompt.element-->]]>
+
+<!ENTITY % prompt.attlist "INCLUDE">
+<![ %prompt.attlist; [
+<!ATTLIST Prompt
+               %moreinfo.attrib;
+               %common.attrib;
+               %prompt.role.attrib;
+               %local.prompt.attrib;
+>
+<!--end of prompt.attlist-->]]>
+<!--end of prompt.module-->]]>
+
+<!ENTITY % property.module "INCLUDE">
+<![ %property.module; [
+<!ENTITY % local.property.attrib "">
+<!ENTITY % property.role.attrib "%role.attrib;">
+
+<!ENTITY % property.element "INCLUDE">
+<![ %property.element; [
+<!ELEMENT Property - - (%smallcptr.char.mix;)*>
+<!--end of property.element-->]]>
+
+<!ENTITY % property.attlist "INCLUDE">
+<![ %property.attlist; [
+<!ATTLIST Property
+               %moreinfo.attrib;
+               %common.attrib;
+               %property.role.attrib;
+               %local.property.attrib;
+>
+<!--end of property.attlist-->]]>
+<!--end of property.module-->]]>
+
+<!ENTITY % replaceable.module "INCLUDE">
+<![ %replaceable.module; [
+<!ENTITY % local.replaceable.attrib "">
+<!ENTITY % replaceable.role.attrib "%role.attrib;">
+
+<!ENTITY % replaceable.element "INCLUDE">
+<![ %replaceable.element; [
+<!ELEMENT Replaceable - - ((#PCDATA 
+               | %link.char.class; 
+               | Optional
+               | %base.char.class; 
+               | %other.char.class; 
+               | InlineGraphic
+               | InlineMediaObject)+)>
+<!--end of replaceable.element-->]]>
+
+<!ENTITY % replaceable.attlist "INCLUDE">
+<![ %replaceable.attlist; [
+<!ATTLIST Replaceable
+               --
+               Class: Type of information the element represents; no
+               default
+               --
+               Class           (Command
+                               |Function
+                               |Option
+                               |Parameter)     #IMPLIED
+               %common.attrib;
+               %replaceable.role.attrib;
+               %local.replaceable.attrib;
+>
+<!--end of replaceable.attlist-->]]>
+<!--end of replaceable.module-->]]>
+
+<!ENTITY % returnvalue.module "INCLUDE">
+<![ %returnvalue.module; [
+<!ENTITY % local.returnvalue.attrib "">
+<!ENTITY % returnvalue.role.attrib "%role.attrib;">
+
+<!ENTITY % returnvalue.element "INCLUDE">
+<![ %returnvalue.element; [
+<!ELEMENT ReturnValue - - ((%smallcptr.char.mix;)+)>
+<!--end of returnvalue.element-->]]>
+
+<!ENTITY % returnvalue.attlist "INCLUDE">
+<![ %returnvalue.attlist; [
+<!ATTLIST ReturnValue
+               %common.attrib;
+               %returnvalue.role.attrib;
+               %local.returnvalue.attrib;
+>
+<!--end of returnvalue.attlist-->]]>
+<!--end of returnvalue.module-->]]>
+
+<!ENTITY % sgmltag.module "INCLUDE">
+<![ %sgmltag.module; [
+<!ENTITY % local.sgmltag.attrib "">
+<!ENTITY % sgmltag.role.attrib "%role.attrib;">
+
+<!ENTITY % sgmltag.element "INCLUDE">
+<![ %sgmltag.element; [
+<!ELEMENT SGMLTag - - ((%smallcptr.char.mix;)+)>
+<!--end of sgmltag.element-->]]>
+
+<!ENTITY % sgmltag.attlist "INCLUDE">
+<![ %sgmltag.attlist; [
+<!ATTLIST SGMLTag
+               --
+               Class: Type of SGML construct the element names; no default
+               --
+               Class           (Attribute
+                               |AttValue
+                               |Element
+                               |EndTag
+                               |EmptyTag
+                               |GenEntity
+                               |NumCharRef
+                               |ParamEntity
+                               |PI
+                               |XMLPI
+                               |StartTag
+                               |SGMLComment)   #IMPLIED
+               %common.attrib;
+               %sgmltag.role.attrib;
+               %local.sgmltag.attrib;
+>
+<!--end of sgmltag.attlist-->]]>
+<!--end of sgmltag.module-->]]>
+
+<!ENTITY % structfield.module "INCLUDE">
+<![ %structfield.module; [
+<!ENTITY % local.structfield.attrib "">
+<!ENTITY % structfield.role.attrib "%role.attrib;">
+
+<!ENTITY % structfield.element "INCLUDE">
+<![ %structfield.element; [
+<!ELEMENT StructField - - ((%smallcptr.char.mix;)+)>
+<!--end of structfield.element-->]]>
+
+<!ENTITY % structfield.attlist "INCLUDE">
+<![ %structfield.attlist; [
+<!ATTLIST StructField
+               %common.attrib;
+               %structfield.role.attrib;
+               %local.structfield.attrib;
+>
+<!--end of structfield.attlist-->]]>
+<!--end of structfield.module-->]]>
+
+<!ENTITY % structname.module "INCLUDE">
+<![ %structname.module; [
+<!ENTITY % local.structname.attrib "">
+<!ENTITY % structname.role.attrib "%role.attrib;">
+
+<!ENTITY % structname.element "INCLUDE">
+<![ %structname.element; [
+<!ELEMENT StructName - - ((%smallcptr.char.mix;)+)>
+<!--end of structname.element-->]]>
+
+<!ENTITY % structname.attlist "INCLUDE">
+<![ %structname.attlist; [
+<!ATTLIST StructName
+               %common.attrib;
+               %structname.role.attrib;
+               %local.structname.attrib;
+>
+<!--end of structname.attlist-->]]>
+<!--end of structname.module-->]]>
+
+<!ENTITY % symbol.module "INCLUDE">
+<![ %symbol.module; [
+<!ENTITY % local.symbol.attrib "">
+<!ENTITY % symbol.role.attrib "%role.attrib;">
+
+<!ENTITY % symbol.element "INCLUDE">
+<![ %symbol.element; [
+<!ELEMENT Symbol - - ((%smallcptr.char.mix;)+)>
+<!--end of symbol.element-->]]>
+
+<!ENTITY % symbol.attlist "INCLUDE">
+<![ %symbol.attlist; [
+<!ATTLIST Symbol
+               --
+               Class: Type of symbol; no default
+               --
+               Class           (Limit)         #IMPLIED
+               %common.attrib;
+               %symbol.role.attrib;
+               %local.symbol.attrib;
+>
+<!--end of symbol.attlist-->]]>
+<!--end of symbol.module-->]]>
+
+<!ENTITY % systemitem.module "INCLUDE">
+<![ %systemitem.module; [
+<!ENTITY % local.systemitem.attrib "">
+<!ENTITY % systemitem.role.attrib "%role.attrib;">
+
+<!ENTITY % systemitem.element "INCLUDE">
+<![ %systemitem.element; [
+<!ELEMENT SystemItem - - ((%smallcptr.char.mix; | Acronym)*)>
+<!--end of systemitem.element-->]]>
+
+<!ENTITY % systemitem.attlist "INCLUDE">
+<![ %systemitem.attlist; [
+<!ATTLIST SystemItem
+               --
+               Class: Type of system item the element names; no default
+               --
+               Class   (Constant
+                       |GroupName
+                       |Library
+                       |Macro
+                       |OSname
+                       |Resource
+                       |SystemName
+                       |UserName)      #IMPLIED
+               %moreinfo.attrib;
+               %common.attrib;
+               %systemitem.role.attrib;
+               %local.systemitem.attrib;
+>
+<!--end of systemitem.attlist-->]]>
+<!--end of systemitem.module-->]]>
+
+
+<!ENTITY % token.module "INCLUDE">
+<![ %token.module; [
+<!ENTITY % local.token.attrib "">
+<!ENTITY % token.role.attrib "%role.attrib;">
+
+<!ENTITY % token.element "INCLUDE">
+<![ %token.element; [
+<!ELEMENT Token - - ((%smallcptr.char.mix;)+)>
+<!--end of token.element-->]]>
+
+<!ENTITY % token.attlist "INCLUDE">
+<![ %token.attlist; [
+<!ATTLIST Token
+               %common.attrib;
+               %token.role.attrib;
+               %local.token.attrib;
+>
+<!--end of token.attlist-->]]>
+<!--end of token.module-->]]>
+
+<!ENTITY % type.module "INCLUDE">
+<![ %type.module; [
+<!ENTITY % local.type.attrib "">
+<!ENTITY % type.role.attrib "%role.attrib;">
+
+<!ENTITY % type.element "INCLUDE">
+<![ %type.element; [
+<!ELEMENT Type - - ((%smallcptr.char.mix;)+)>
+<!--end of type.element-->]]>
+
+<!ENTITY % type.attlist "INCLUDE">
+<![ %type.attlist; [
+<!ATTLIST Type
+               %common.attrib;
+               %type.role.attrib;
+               %local.type.attrib;
+>
+<!--end of type.attlist-->]]>
+<!--end of type.module-->]]>
+
+<!ENTITY % userinput.module "INCLUDE">
+<![ %userinput.module; [
+<!ENTITY % local.userinput.attrib "">
+<!ENTITY % userinput.role.attrib "%role.attrib;">
+
+<!ENTITY % userinput.element "INCLUDE">
+<![ %userinput.element; [
+<!ELEMENT UserInput - - ((%cptr.char.mix;)+)>
+<!--end of userinput.element-->]]>
+
+<!ENTITY % userinput.attlist "INCLUDE">
+<![ %userinput.attlist; [
+<!ATTLIST UserInput
+               %moreinfo.attrib;
+               %common.attrib;
+               %userinput.role.attrib;
+               %local.userinput.attrib;
+>
+<!--end of userinput.attlist-->]]>
+<!--end of userinput.module-->]]>
+
+<!-- General words and phrases ............................................ -->
+
+<!ENTITY % abbrev.module "INCLUDE">
+<![ %abbrev.module; [
+<!ENTITY % local.abbrev.attrib "">
+<!ENTITY % abbrev.role.attrib "%role.attrib;">
+
+<!ENTITY % abbrev.element "INCLUDE">
+<![ %abbrev.element; [
+<!ELEMENT Abbrev - - ((%word.char.mix;)+)>
+<!--end of abbrev.element-->]]>
+
+<!ENTITY % abbrev.attlist "INCLUDE">
+<![ %abbrev.attlist; [
+<!ATTLIST Abbrev
+               %common.attrib;
+               %abbrev.role.attrib;
+               %local.abbrev.attrib;
+>
+<!--end of abbrev.attlist-->]]>
+<!--end of abbrev.module-->]]>
+
+<!ENTITY % acronym.module "INCLUDE">
+<![ %acronym.module; [
+<!ENTITY % local.acronym.attrib "">
+<!ENTITY % acronym.role.attrib "%role.attrib;">
+
+<!ENTITY % acronym.element "INCLUDE">
+<![ %acronym.element; [
+<!ELEMENT Acronym - - ((%word.char.mix;)+) %acronym.exclusion;>
+<!--end of acronym.element-->]]>
+
+<!ENTITY % acronym.attlist "INCLUDE">
+<![ %acronym.attlist; [
+<!ATTLIST Acronym
+               %common.attrib;
+               %acronym.role.attrib;
+               %local.acronym.attrib;
+>
+<!--end of acronym.attlist-->]]>
+<!--end of acronym.module-->]]>
+
+<!ENTITY % citation.module "INCLUDE">
+<![ %citation.module; [
+<!ENTITY % local.citation.attrib "">
+<!ENTITY % citation.role.attrib "%role.attrib;">
+
+<!ENTITY % citation.element "INCLUDE">
+<![ %citation.element; [
+<!ELEMENT Citation - - ((%para.char.mix;)+)>
+<!--end of citation.element-->]]>
+
+<!ENTITY % citation.attlist "INCLUDE">
+<![ %citation.attlist; [
+<!ATTLIST Citation
+               %common.attrib;
+               %citation.role.attrib;
+               %local.citation.attrib;
+>
+<!--end of citation.attlist-->]]>
+<!--end of citation.module-->]]>
+
+<!ENTITY % citerefentry.module "INCLUDE">
+<![ %citerefentry.module; [
+<!ENTITY % local.citerefentry.attrib "">
+<!ENTITY % citerefentry.role.attrib "%role.attrib;">
+
+<!ENTITY % citerefentry.element "INCLUDE">
+<![ %citerefentry.element; [
+<!ELEMENT CiteRefEntry - - (RefEntryTitle, ManVolNum?)>
+<!--end of citerefentry.element-->]]>
+
+<!ENTITY % citerefentry.attlist "INCLUDE">
+<![ %citerefentry.attlist; [
+<!ATTLIST CiteRefEntry
+               %common.attrib;
+               %citerefentry.role.attrib;
+               %local.citerefentry.attrib;
+>
+<!--end of citerefentry.attlist-->]]>
+<!--end of citerefentry.module-->]]>
+
+<!ENTITY % refentrytitle.module "INCLUDE">
+<![ %refentrytitle.module; [
+<!ENTITY % local.refentrytitle.attrib "">
+<!ENTITY % refentrytitle.role.attrib "%role.attrib;">
+
+<!ENTITY % refentrytitle.element "INCLUDE">
+<![ %refentrytitle.element; [
+<!ELEMENT RefEntryTitle - O ((%para.char.mix;)+)>
+<!--end of refentrytitle.element-->]]>
+
+<!ENTITY % refentrytitle.attlist "INCLUDE">
+<![ %refentrytitle.attlist; [
+<!ATTLIST RefEntryTitle
+               %common.attrib;
+               %refentrytitle.role.attrib;
+               %local.refentrytitle.attrib;
+>
+<!--end of refentrytitle.attlist-->]]>
+<!--end of refentrytitle.module-->]]>
+
+<!ENTITY % manvolnum.module "INCLUDE">
+<![ %manvolnum.module; [
+<!ENTITY % local.manvolnum.attrib "">
+<!ENTITY % namvolnum.role.attrib "%role.attrib;">
+
+<!ENTITY % manvolnum.element "INCLUDE">
+<![ %manvolnum.element; [
+<!ELEMENT ManVolNum - O ((%word.char.mix;)+)>
+<!--end of manvolnum.element-->]]>
+
+<!ENTITY % manvolnum.attlist "INCLUDE">
+<![ %manvolnum.attlist; [
+<!ATTLIST ManVolNum
+               %common.attrib;
+               %namvolnum.role.attrib;
+               %local.manvolnum.attrib;
+>
+<!--end of manvolnum.attlist-->]]>
+<!--end of manvolnum.module-->]]>
+
+<!ENTITY % citetitle.module "INCLUDE">
+<![ %citetitle.module; [
+<!ENTITY % local.citetitle.attrib "">
+<!ENTITY % citetitle.role.attrib "%role.attrib;">
+
+<!ENTITY % citetitle.element "INCLUDE">
+<![ %citetitle.element; [
+<!ELEMENT CiteTitle - - ((%para.char.mix;)+)>
+<!--end of citetitle.element-->]]>
+
+<!ENTITY % citetitle.attlist "INCLUDE">
+<![ %citetitle.attlist; [
+<!ATTLIST CiteTitle
+               --
+               Pubwork: Genre of published work cited; no default
+               --
+               Pubwork         (Article
+                               |Book
+                               |Chapter
+                               |Part
+                               |RefEntry
+                               |Section
+                               |Journal
+                               |Series
+                               |Set
+                               |Manuscript)    #IMPLIED
+               %common.attrib;
+               %citetitle.role.attrib;
+               %local.citetitle.attrib;
+>
+<!--end of citetitle.attlist-->]]>
+<!--end of citetitle.module-->]]>
+
+<!ENTITY % emphasis.module "INCLUDE">
+<![ %emphasis.module; [
+<!ENTITY % local.emphasis.attrib "">
+<!ENTITY % emphasis.role.attrib "%role.attrib;">
+
+<!ENTITY % emphasis.element "INCLUDE">
+<![ %emphasis.element; [
+<!ELEMENT Emphasis - - ((%para.char.mix;)+)>
+<!--end of emphasis.element-->]]>
+
+<!ENTITY % emphasis.attlist "INCLUDE">
+<![ %emphasis.attlist; [
+<!ATTLIST Emphasis
+               %common.attrib;
+               %emphasis.role.attrib;
+               %local.emphasis.attrib;
+>
+<!--end of emphasis.attlist-->]]>
+<!--end of emphasis.module-->]]>
+
+<!ENTITY % firstterm.module "INCLUDE">
+<![ %firstterm.module; [
+<!ENTITY % local.firstterm.attrib "">
+<!ENTITY % firstterm.role.attrib "%role.attrib;">
+
+<!ENTITY % firstterm.element "INCLUDE">
+<![ %firstterm.element; [
+<!ELEMENT FirstTerm - - ((%word.char.mix;)+)>
+<!--end of firstterm.element-->]]>
+
+<!ENTITY % firstterm.attlist "INCLUDE">
+<![ %firstterm.attlist; [
+<!ATTLIST FirstTerm
+               %linkend.attrib; --to GlossEntry or other explanation--
+               %common.attrib;
+               %firstterm.role.attrib;
+               %local.firstterm.attrib;
+>
+<!--end of firstterm.attlist-->]]>
+<!--end of firstterm.module-->]]>
+
+<!ENTITY % foreignphrase.module "INCLUDE">
+<![ %foreignphrase.module; [
+<!ENTITY % local.foreignphrase.attrib "">
+<!ENTITY % foreignphrase.role.attrib "%role.attrib;">
+
+<!ENTITY % foreignphrase.element "INCLUDE">
+<![ %foreignphrase.element; [
+<!ELEMENT ForeignPhrase - - ((%para.char.mix;)+)>
+<!--end of foreignphrase.element-->]]>
+
+<!ENTITY % foreignphrase.attlist "INCLUDE">
+<![ %foreignphrase.attlist; [
+<!ATTLIST ForeignPhrase
+               %common.attrib;
+               %foreignphrase.role.attrib;
+               %local.foreignphrase.attrib;
+>
+<!--end of foreignphrase.attlist-->]]>
+<!--end of foreignphrase.module-->]]>
+
+<!ENTITY % glossterm.module "INCLUDE">
+<![ %glossterm.module; [
+<!ENTITY % local.glossterm.attrib "">
+<!ENTITY % glossterm.role.attrib "%role.attrib;">
+
+<!ENTITY % glossterm.element "INCLUDE">
+<![ %glossterm.element; [
+<!ELEMENT GlossTerm - O ((%para.char.mix;)+) %glossterm.exclusion;>
+<!--end of glossterm.element-->]]>
+
+<!ENTITY % glossterm.attlist "INCLUDE">
+<![ %glossterm.attlist; [
+<!ATTLIST GlossTerm
+               %linkend.attrib; --to GlossEntry if Glossterm used in text--
+               --
+               BaseForm: Provides the form of GlossTerm to be used
+               for indexing
+               --
+               BaseForm        CDATA           #IMPLIED
+               %common.attrib;
+               %glossterm.role.attrib;
+               %local.glossterm.attrib;
+>
+<!--end of glossterm.attlist-->]]>
+<!--end of glossterm.module-->]]>
+
+<!ENTITY % phrase.module "INCLUDE">
+<![ %phrase.module; [
+<!ENTITY % local.phrase.attrib "">
+<!ENTITY % phrase.role.attrib "%role.attrib;">
+
+<!ENTITY % phrase.element "INCLUDE">
+<![ %phrase.element; [
+<!ELEMENT Phrase - - ((%para.char.mix;)+)>
+<!--end of phrase.element-->]]>
+
+<!ENTITY % phrase.attlist "INCLUDE">
+<![ %phrase.attlist; [
+<!ATTLIST Phrase
+               %common.attrib;
+               %phrase.role.attrib;
+               %local.phrase.attrib;
+>
+<!--end of phrase.attlist-->]]>
+<!--end of phrase.module-->]]>
+
+<!ENTITY % quote.module "INCLUDE">
+<![ %quote.module; [
+<!ENTITY % local.quote.attrib "">
+<!ENTITY % quote.role.attrib "%role.attrib;">
+
+<!ENTITY % quote.element "INCLUDE">
+<![ %quote.element; [
+<!ELEMENT Quote - - ((%para.char.mix;)+)>
+<!--end of quote.element-->]]>
+
+<!ENTITY % quote.attlist "INCLUDE">
+<![ %quote.attlist; [
+<!ATTLIST Quote
+               %common.attrib;
+               %quote.role.attrib;
+               %local.quote.attrib;
+>
+<!--end of quote.attlist-->]]>
+<!--end of quote.module-->]]>
+
+<!ENTITY % ssscript.module "INCLUDE">
+<![ %ssscript.module; [
+<!ENTITY % local.ssscript.attrib "">
+<!ENTITY % ssscript.role.attrib "%role.attrib;">
+
+<!ENTITY % ssscript.elements "INCLUDE">
+<![ %ssscript.elements [
+<!ELEMENT (Subscript | Superscript) - - ((#PCDATA 
+               | %link.char.class;
+               | Emphasis
+               | Replaceable 
+               | Symbol 
+               | InlineGraphic 
+               | InlineMediaObject
+               | %base.char.class; 
+               | %other.char.class;)+)
+               %ubiq.exclusion;>
+<!--end of ssscript.elements-->]]>
+
+<!ENTITY % ssscript.attlists "INCLUDE">
+<![ %ssscript.attlists; [
+<!ATTLIST (Subscript | Superscript)
+               %common.attrib;
+               %ssscript.role.attrib;
+               %local.ssscript.attrib;
+>
+<!--end of ssscript.attlists-->]]>
+<!--end of ssscript.module-->]]>
+
+<!ENTITY % trademark.module "INCLUDE">
+<![ %trademark.module; [
+<!ENTITY % local.trademark.attrib "">
+<!ENTITY % trademark.role.attrib "%role.attrib;">
+
+<!ENTITY % trademark.element "INCLUDE">
+<![ %trademark.element; [
+<!ELEMENT Trademark - - ((#PCDATA 
+               | %link.char.class; 
+               | %tech.char.class;
+               | %base.char.class; 
+               | %other.char.class; 
+               | InlineGraphic
+               | InlineMediaObject
+               | Emphasis)+)>
+<!--end of trademark.element-->]]>
+
+<!ENTITY % trademark.attlist "INCLUDE">
+<![ %trademark.attlist; [
+<!ATTLIST Trademark
+               --
+               Class: More precisely identifies the item the element names
+               --
+               Class           (Service
+                               |Trade
+                               |Registered
+                               |Copyright)     Trade
+               %common.attrib;
+               %trademark.role.attrib;
+               %local.trademark.attrib;
+>
+<!--end of trademark.attlist-->]]>
+<!--end of trademark.module-->]]>
+
+<!ENTITY % wordasword.module "INCLUDE">
+<![ %wordasword.module; [
+<!ENTITY % local.wordasword.attrib "">
+<!ENTITY % wordasword.role.attrib "%role.attrib;">
+
+<!ENTITY % wordasword.element "INCLUDE">
+<![ %wordasword.element; [
+<!ELEMENT WordAsWord - - ((%word.char.mix;)+)>
+<!--end of wordasword.element-->]]>
+
+<!ENTITY % wordasword.attlist "INCLUDE">
+<![ %wordasword.attlist; [
+<!ATTLIST WordAsWord
+               %common.attrib;
+               %wordasword.role.attrib;
+               %local.wordasword.attrib;
+>
+<!--end of wordasword.attlist-->]]>
+<!--end of wordasword.module-->]]>
+
+<!-- Links and cross-references ........................................... -->
+
+<!ENTITY % link.module "INCLUDE">
+<![ %link.module; [
+<!ENTITY % local.link.attrib "">
+<!ENTITY % link.role.attrib "%role.attrib;">
+
+<!ENTITY % link.element "INCLUDE">
+<![ %link.element; [
+<!ELEMENT Link - - ((%para.char.mix;)+) %links.exclusion;>
+<!--end of link.element-->]]>
+
+<!ENTITY % link.attlist "INCLUDE">
+<![ %link.attlist; [
+<!ATTLIST Link
+               --
+               Endterm: ID of element containing text that is to be
+               fetched from elsewhere in the document to appear as
+               the content of this element
+               --
+               Endterm         IDREF           #IMPLIED
+               %linkendreq.attrib; --to linked-to object--
+               --
+               Type: Freely assignable parameter
+               --
+               Type            CDATA           #IMPLIED
+               %common.attrib;
+               %link.role.attrib;
+               %local.link.attrib;
+>
+<!--end of link.attlist-->]]>
+<!--end of link.module-->]]>
+
+<!ENTITY % olink.module "INCLUDE">
+<![ %olink.module; [
+<!ENTITY % local.olink.attrib "">
+<!ENTITY % olink.role.attrib "%role.attrib;">
+
+<!ENTITY % olink.element "INCLUDE">
+<![ %olink.element; [
+<!ELEMENT OLink - - ((%para.char.mix;)+) %links.exclusion;>
+<!--end of olink.element-->]]>
+
+<!ENTITY % olink.attlist "INCLUDE">
+<![ %olink.attlist; [
+<!ATTLIST OLink
+               --
+               TargetDocEnt: Name of an entity to be the target of the link
+               --
+               TargetDocEnt    ENTITY          #IMPLIED
+               --
+               LinkMode: ID of a ModeSpec containing instructions for
+               operating on the entity named by TargetDocEnt
+               --
+               LinkMode        IDREF           #IMPLIED
+               --
+               LocalInfo: Information that may be passed to ModeSpec
+               --
+               LocalInfo       CDATA           #IMPLIED
+               --
+               Type: Freely assignable parameter
+               --
+               Type            CDATA           #IMPLIED
+               %common.attrib;
+               %olink.role.attrib;
+               %local.olink.attrib;
+>
+<!--end of olink.attlist-->]]>
+<!--end of olink.module-->]]>
+
+<!ENTITY % ulink.module "INCLUDE">
+<![ %ulink.module; [
+<!ENTITY % local.ulink.attrib "">
+<!ENTITY % ulink.role.attrib "%role.attrib;">
+
+<!ENTITY % ulink.element "INCLUDE">
+<![ %ulink.element; [
+<!ELEMENT ULink - - ((%para.char.mix;)+) %links.exclusion;>
+<!--end of ulink.element-->]]>
+
+<!ENTITY % ulink.attlist "INCLUDE">
+<![ %ulink.attlist; [
+<!ATTLIST ULink
+               --
+               URL: uniform resource locator; the target of the ULink
+               --
+               URL             CDATA           #REQUIRED
+               --
+               Type: Freely assignable parameter
+               --
+               Type            CDATA           #IMPLIED
+               %common.attrib;
+               %ulink.role.attrib;
+               %local.ulink.attrib;
+>
+<!--end of ulink.attlist-->]]>
+<!--end of ulink.module-->]]>
+
+<!ENTITY % footnoteref.module "INCLUDE">
+<![ %footnoteref.module; [
+<!ENTITY % local.footnoteref.attrib "">
+<!ENTITY % footnoteref.role.attrib "%role.attrib;">
+
+<!ENTITY % footnoteref.element "INCLUDE">
+<![ %footnoteref.element; [
+<!ELEMENT FootnoteRef - O EMPTY>
+<!--end of footnoteref.element-->]]>
+
+<!ENTITY % footnoteref.attlist "INCLUDE">
+<![ %footnoteref.attlist; [
+<!ATTLIST FootnoteRef
+               %linkendreq.attrib; --to footnote content supplied elsewhere--
+               %label.attrib;
+               %common.attrib;
+               %footnoteref.role.attrib;
+               %local.footnoteref.attrib;
+>
+<!--end of footnoteref.attlist-->]]>
+<!--end of footnoteref.module-->]]>
+
+<!ENTITY % xref.module "INCLUDE">
+<![ %xref.module; [
+<!ENTITY % local.xref.attrib "">
+<!ENTITY % xref.role.attrib "%role.attrib;">
+
+<!ENTITY % xref.element "INCLUDE">
+<![ %xref.element; [
+<!ELEMENT XRef - O EMPTY>
+<!--end of xref.element-->]]>
+
+<!ENTITY % xref.attlist "INCLUDE">
+<![ %xref.attlist; [
+<!ATTLIST XRef
+               --
+               Endterm: ID of element containing text that is to be
+               fetched from elsewhere in the document to appear as
+               the content of this element
+               --
+               Endterm         IDREF           #IMPLIED
+               %linkendreq.attrib; --to linked-to object--
+               %common.attrib;
+               %xref.role.attrib;
+               %local.xref.attrib;
+>
+<!--end of xref.attlist-->]]>
+<!--end of xref.module-->]]>
+
+<!-- Ubiquitous elements .................................................. -->
+
+<!ENTITY % anchor.module "INCLUDE">
+<![ %anchor.module; [
+<!ENTITY % local.anchor.attrib "">
+<!ENTITY % anchor.role.attrib "%role.attrib;">
+
+<!ENTITY % anchor.element "INCLUDE">
+<![ %anchor.element; [
+<!ELEMENT Anchor - O EMPTY>
+<!--end of anchor.element-->]]>
+
+<!ENTITY % anchor.attlist "INCLUDE">
+<![ %anchor.attlist; [
+<!ATTLIST Anchor
+               %idreq.attrib; -- required --
+               %pagenum.attrib; --replaces Lang --
+               %remap.attrib;
+               %xreflabel.attrib;
+               %revisionflag.attrib;
+               %effectivity.attrib;
+               %anchor.role.attrib;
+               %local.anchor.attrib;
+>
+<!--end of anchor.attlist-->]]>
+<!--end of anchor.module-->]]>
+
+<!ENTITY % beginpage.module "INCLUDE">
+<![ %beginpage.module; [
+<!ENTITY % local.beginpage.attrib "">
+<!ENTITY % beginpage.role.attrib "%role.attrib;">
+
+<!ENTITY % beginpage.element "INCLUDE">
+<![ %beginpage.element; [
+<!ELEMENT BeginPage - O EMPTY>
+<!--end of beginpage.element-->]]>
+
+<!ENTITY % beginpage.attlist "INCLUDE">
+<![ %beginpage.attlist; [
+<!ATTLIST BeginPage
+               --
+               PageNum: Number of page that begins at this point
+               --
+               %pagenum.attrib;
+               %common.attrib;
+               %beginpage.role.attrib;
+               %local.beginpage.attrib;
+>
+<!--end of beginpage.attlist-->]]>
+<!--end of beginpage.module-->]]>
+
+<!-- IndexTerms appear in the text flow for generating or linking an
+     index. -->
+
+<!ENTITY % indexterm.content.module "INCLUDE">
+<![ %indexterm.content.module; [
+<!ENTITY % indexterm.module "INCLUDE">
+<![ %indexterm.module; [
+<!ENTITY % local.indexterm.attrib "">
+<!ENTITY % indexterm.role.attrib "%role.attrib;">
+
+<!ENTITY % indexterm.element "INCLUDE">
+<![ %indexterm.element; [
+<!ELEMENT IndexTerm - O (Primary, ((Secondary, ((Tertiary, (See|SeeAlso+)?)
+               | See | SeeAlso+)?) | See | SeeAlso+)?) %ubiq.exclusion;>
+<!--end of indexterm.element-->]]>
+
+<!ENTITY % indexterm.attlist "INCLUDE">
+<![ %indexterm.attlist; [
+<!ATTLIST IndexTerm
+               %pagenum.attrib;
+               --
+               Scope: Indicates which generated indices the IndexTerm
+               should appear in: Global (whole document set), Local (this
+               document only), or All (both)
+               --
+               Scope           (All
+                               |Global
+                               |Local)         #IMPLIED
+               --
+               Significance: Whether this IndexTerm is the most pertinent
+               of its series (Preferred) or not (Normal, the default)
+               --
+               Significance    (Preferred
+                               |Normal)        Normal
+               --
+               Class: Indicates type of IndexTerm; default is Singular, 
+               or EndOfRange if StartRef is supplied; StartOfRange value 
+               must be supplied explicitly on starts of ranges
+               --
+               Class           (Singular
+                               |StartOfRange
+                               |EndOfRange)    #IMPLIED
+               --
+               StartRef: ID of the IndexTerm that starts the indexing 
+               range ended by this IndexTerm
+               --
+               StartRef                IDREF           #CONREF
+               --
+               Zone: IDs of the elements to which the IndexTerm applies,
+               and indicates that the IndexTerm applies to those entire
+               elements rather than the point at which the IndexTerm
+               occurs
+               --
+               Zone                    IDREFS          #IMPLIED
+               %common.attrib;
+               %indexterm.role.attrib;
+               %local.indexterm.attrib;
+>
+<!--end of indexterm.attlist-->]]>
+<!--end of indexterm.module-->]]>
+
+<!ENTITY % primsecter.module "INCLUDE">
+<![ %primsecter.module; [
+<!ENTITY % local.primsecter.attrib "">
+<!ENTITY % primsecter.role.attrib "%role.attrib;">
+
+<!ENTITY % primsecter.elements "INCLUDE">
+<![ %primsecter.elements; [
+<!ELEMENT (Primary | Secondary | Tertiary) - O ((%ndxterm.char.mix;)+)>
+<!--end of primsecter.elements-->]]>
+
+<!ENTITY % primsecter.attlists "INCLUDE">
+<![ %primsecter.attlists; [
+<!ENTITY % containing.attlist "INCLUDE">
+<![ %containing.attlist; [
+<!ATTLIST (Primary | Secondary | Tertiary)
+               --
+               SortAs: Alternate sort string for index sorting, e.g.,
+               "fourteen" for an element containing "14"
+               --
+               SortAs          CDATA           #IMPLIED
+               %common.attrib;
+               %primsecter.role.attrib;
+               %local.primsecter.attrib;
+>
+<!--end of containing.attlist-->]]>
+<!--end of primsecter.attlist-->]]>
+<!--end of primsecter.module-->]]>
+
+<!ENTITY % seeseealso.module "INCLUDE">
+<![ %seeseealso.module; [
+<!ENTITY % local.seeseealso.attrib "">
+<!ENTITY % seeseealso.role.attrib "%role.attrib;">
+
+<!ENTITY % seeseealso.elements "INCLUDE">
+<![ %seeseealso.elements [
+<!ELEMENT (See | SeeAlso) - O ((%ndxterm.char.mix;)+)>
+<!--end of seeseealso.elements-->]]>
+
+<!ENTITY % seeseealso.attlists "INCLUDE">
+<![ %seeseealso.attlists [
+<!ATTLIST (See | SeeAlso)
+               %common.attrib;
+               %seeseealso.role.attrib;
+               %local.seeseealso.attrib;
+>
+<!--end of seeseealso.attlists-->]]>
+<!--end of seeseealso.module-->]]>
+<!--end of indexterm.content.module-->]]>
+
+<!-- End of DocBook information pool module V4.1 .......................... -->
+<!-- ...................................................................... -->
diff --git a/docs/docbook/dbsgml/docbook.cat b/docs/docbook/dbsgml/docbook.cat
new file mode 100644 (file)
index 0000000..0f285d0
--- /dev/null
@@ -0,0 +1,63 @@
+  -- ...................................................................... --
+  -- Catalog data for DocBook V4.1 ........................................ --
+  -- File docbook.cat ..................................................... --
+
+  -- Please direct all questions, bug reports, or suggestions for
+     changes to the docbook@lists.oasis-open.org mailing list. For more
+     information, see http://www.oasis-open.org/.
+  --
+
+  -- This is the catalog data file for DocBook V4.1. It is provided as
+     a convenience in building your own catalog files. You need not use
+     the filenames listed here, and need not use the filename method of
+     identifying storage objects at all.  See the documentation for
+     detailed information on the files associated with the DocBook DTD.
+     See SGML Open Technical Resolution 9401 for detailed information
+     on supplying and using catalog data.
+  --
+
+  -- ...................................................................... --
+  -- SGML declaration associated with DocBook ............................. --
+
+DTDDECL "-//OASIS//DTD DocBook V4.1//EN" "docbook.dcl"
+
+  -- ...................................................................... --
+  -- DocBook driver file .................................................. --
+
+PUBLIC "-//OASIS//DTD DocBook V4.1//EN" "docbook.dtd"
+
+  -- ...................................................................... --
+  -- DocBook modules ...................................................... --
+
+PUBLIC "-//USA-DOD//DTD Table Model 951010//EN" "cals-tbl.dtd"
+PUBLIC "-//OASIS//ELEMENTS DocBook Information Pool V4.1//EN" "dbpool.mod"
+PUBLIC "-//OASIS//ELEMENTS DocBook Document Hierarchy V4.1//EN" "dbhier.mod"
+PUBLIC "-//OASIS//ENTITIES DocBook Additional General Entities V4.1//EN" "dbgenent.mod"
+PUBLIC "-//OASIS//ENTITIES DocBook Notations V4.1//EN" "dbnotn.mod"
+PUBLIC "-//OASIS//ENTITIES DocBook Character Entities V4.1//EN" "dbcent.mod"
+
+  -- ...................................................................... --
+  -- ISO entity sets ...................................................... --
+
+PUBLIC "ISO 8879:1986//ENTITIES Diacritical Marks//EN" "ISOdia"
+PUBLIC "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN" "ISOnum"
+PUBLIC "ISO 8879:1986//ENTITIES Publishing//EN" "ISOpub"
+PUBLIC "ISO 8879:1986//ENTITIES General Technical//EN" "ISOtech"
+PUBLIC "ISO 8879:1986//ENTITIES Added Latin 1//EN" "ISOlat1"
+PUBLIC "ISO 8879:1986//ENTITIES Added Latin 2//EN" "ISOlat2"
+PUBLIC "ISO 8879:1986//ENTITIES Greek Letters//EN" "ISOgrk1"
+PUBLIC "ISO 8879:1986//ENTITIES Monotoniko Greek//EN" "ISOgrk2"
+PUBLIC "ISO 8879:1986//ENTITIES Greek Symbols//EN" "ISOgrk3"
+PUBLIC "ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN" "ISOgrk4"
+PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN" "ISOamsa"
+PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN" "ISOamsb"
+PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN" "ISOamsc"
+PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN" "ISOamsn"
+PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN" "ISOamso"
+PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN" "ISOamsr"
+PUBLIC "ISO 8879:1986//ENTITIES Box and Line Drawing//EN" "ISObox"
+PUBLIC "ISO 8879:1986//ENTITIES Russian Cyrillic//EN" "ISOcyr1"
+PUBLIC "ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN" "ISOcyr2"
+
+  -- End of catalog data for DocBook V4.1 ................................. --
+  -- ...................................................................... --
diff --git a/docs/docbook/dbsgml/docbook.dcl b/docs/docbook/dbsgml/docbook.dcl
new file mode 100644 (file)
index 0000000..c76de20
--- /dev/null
@@ -0,0 +1,106 @@
+<!SGML  "ISO 8879:1986"
+  -- ...................................................................... --
+  -- DocBook SGML declaration V4.1 ........................................ --
+  -- file docbook.dcl ..................................................... --
+
+CHARSET
+
+       BASESET
+  "ISO 646:1983//CHARSET International Reference Version (IRV)//ESC 2/5 4/0"
+       DESCSET
+                    0   9   UNUSED
+                    9   2     9
+                   11   2   UNUSED
+                   13   1    13
+                   14  18   UNUSED
+                   32  95    32
+                  127   1   UNUSED
+
+       BASESET 
+  "ISO Registration Number 100//CHARSET ECMA-94 Right Part of Latin Alphabet Nr. 1//ESC 2/13 4/1"
+       DESCSET  
+                  128  32   UNUSED
+                  160  96   32
+
+CAPACITY SGMLREF
+
+       TOTALCAP 99000000
+       ATTCAP    1000000
+       ATTCHCAP  1000000
+       AVGRPCAP  1000000
+       ELEMCAP   1000000
+       ENTCAP    1000000
+       ENTCHCAP  1000000
+       GRPCAP    1000000
+       IDCAP    32000000
+       IDREFCAP 32000000
+  
+SCOPE DOCUMENT
+
+SYNTAX
+
+       SHUNCHAR  CONTROLS   0   1   2   3   4   5   6   7   8   9
+                            10  11  12  13  14  15  16  17  18  19
+                            20  21  22  23  24  25  26  27  28  29
+                            30  31                     127 128 129
+                           130 131 132 133 134 135 136 137 138 139
+                           140 141 142 143 144 145 146 147 148 149
+                           150 151 152 153 154 155 156 157 158 159
+
+       BASESET
+  "ISO 646:1983//CHARSET International Reference Version (IRV)//ESC 2/5 4/0"
+       DESCSET
+                  0   128   0
+
+       FUNCTION
+               RE          13
+               RS          10
+               SPACE       32
+               TAB SEPCHAR  9
+
+       NAMING
+               LCNMSTRT ""
+               UCNMSTRT ""
+               LCNMCHAR ".-_"
+               UCNMCHAR ".-_"
+               NAMECASE
+                       GENERAL YES
+                       ENTITY  NO
+
+       DELIM
+               GENERAL  SGMLREF
+               SHORTREF SGMLREF
+
+       NAMES SGMLREF
+
+       QUANTITY SGMLREF
+               ATTCNT    256
+               GRPCNT    253
+               GRPGTCNT  253
+               LITLEN   8092
+               NAMELEN    44
+               TAGLVL    100
+
+FEATURES
+
+         MINIMIZE
+                  DATATAG  NO
+                  OMITTAG  NO
+                  RANK     NO
+                  SHORTTAG YES 
+
+         LINK
+                  SIMPLE   NO
+                  IMPLICIT NO
+                  EXPLICIT NO
+
+         OTHER
+                  CONCUR   NO
+                  SUBDOC   NO
+                  FORMAL   YES
+
+APPINFO NONE
+
+  -- End of DocBook SGML declaration V4.1 ................................. --
+  -- ...................................................................... --
+>
diff --git a/docs/docbook/dbsgml/docbook.dtd b/docs/docbook/dbsgml/docbook.dtd
new file mode 100755 (executable)
index 0000000..4d784cc
--- /dev/null
@@ -0,0 +1,117 @@
+<!-- ...................................................................... -->
+<!-- DocBook DTD V4.1 ..................................................... -->
+<!-- File docbook.dtd ..................................................... -->
+
+<!-- Copyright 1992-2000 HaL Computer Systems, Inc.,
+     O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+     Corporation, and the Organization for the Advancement of
+     Structured Information Standards (OASIS).
+
+     $Id: docbook.dtd,v 1.3 2001/12/06 07:37:56 jerry Exp $
+
+     Permission to use, copy, modify and distribute the DocBook DTD and
+     its accompanying documentation for any purpose and without fee is
+     hereby granted in perpetuity, provided that the above copyright
+     notice and this paragraph appear in all copies.  The copyright
+     holders make no representation about the suitability of the DTD for
+     any purpose.  It is provided "as is" without expressed or implied
+     warranty.
+
+     If you modify the DocBook DTD in any way, except for declaring and
+     referencing additional sets of general entities and declaring
+     additional notations, label your DTD as a variant of DocBook.  See
+     the maintenance documentation for more information.
+
+     Please direct all questions, bug reports, or suggestions for 
+     changes to the docbook@lists.oasis-open.org mailing list. For more
+     information, see http://www.oasis-open.org/docbook/.
+-->
+
+<!-- ...................................................................... -->
+
+<!-- This is the driver file for V4.1 of the DocBook DTD.
+     Please use the following formal public identifier to identify it:
+
+     "-//OASIS//DTD DocBook V4.1//EN"
+
+     For example, if your document's top-level element is Book, and
+     you are using DocBook directly, use the FPI in the DOCTYPE
+     declaration:
+
+     <!DOCTYPE Book PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [...]>
+
+     Or, if you have a higher-level driver file that customizes DocBook,
+     use the FPI in the parameter entity declaration:
+
+     <!ENTITY % DocBookDTD PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
+     %DocBookDTD;
+
+     The DocBook DTD is accompanied by an SGML declaration.
+
+     See the documentation for detailed information on the parameter
+     entity and module scheme used in DocBook, customizing DocBook and
+     planning for interchange, and changes made since the last release
+     of DocBook.
+-->
+
+<!-- ...................................................................... -->
+<!-- Notation declarations ................................................ -->
+
+<!ENTITY % dbnotn.module "INCLUDE">
+<![ %dbnotn.module; [
+<!ENTITY % dbnotn PUBLIC 
+"-//OASIS//ENTITIES DocBook Notations V4.1//EN">
+%dbnotn;
+<!--end of dbnotn.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- ISO character entity sets ............................................ -->
+
+<!ENTITY % dbcent.module "INCLUDE">
+<![ %dbcent.module; [
+<!ENTITY euro SDATA "[euro  ]"><!-- euro sign, U+20AC NEW -->
+<!ENTITY % dbcent PUBLIC 
+"-//OASIS//ENTITIES DocBook Character Entities V4.1//EN">
+%dbcent;
+<!--end of dbcent.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- DTD modules .......................................................... -->
+
+<!-- Information pool .............. -->
+
+<!ENTITY % dbpool.module "INCLUDE">
+<![ %dbpool.module; [
+<!ENTITY % dbpool PUBLIC 
+"-//OASIS//ELEMENTS DocBook Information Pool V4.1//EN">
+%dbpool;
+<!--end of dbpool.module-->]]>
+
+<!-- Redeclaration placeholder ..... -->
+
+<!ENTITY % intermod.redecl.module "IGNORE">
+<![ %intermod.redecl.module; [
+%rdbmods;
+<!--end of intermod.redecl.module-->]]>
+
+<!-- Document hierarchy ............ -->
+
+<!ENTITY % dbhier.module "INCLUDE">
+<![ %dbhier.module; [
+<!ENTITY % dbhier PUBLIC 
+"-//OASIS//ELEMENTS DocBook Document Hierarchy V4.1//EN">
+%dbhier;
+<!--end of dbhier.module-->]]>
+
+<!-- ...................................................................... -->
+<!-- Other general entities ............................................... -->
+
+<!ENTITY % dbgenent.module "INCLUDE">
+<![ %dbgenent.module; [
+<!ENTITY % dbgenent PUBLIC
+"-//OASIS//ENTITIES DocBook Additional General Entities V4.1//EN">
+%dbgenent;
+<!--end of dbgenent.module-->]]>
+
+<!-- End of DocBook DTD V4.1 .............................................. -->
+<!-- ...................................................................... -->
diff --git a/docs/docbook/dbsgml/ent/ISOamsa b/docs/docbook/dbsgml/ent/ISOamsa
new file mode 100644 (file)
index 0000000..b77154c
--- /dev/null
@@ -0,0 +1,66 @@
+<!-- (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % ISOamsa PUBLIC
+       "ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN">
+     %ISOamsa;
+-->
+<!ENTITY cularr SDATA "[cularr]"--/curvearrowleft A: left curved arrow -->
+<!ENTITY curarr SDATA "[curarr]"--/curvearrowright A: rt curved arrow -->
+<!ENTITY dArr   SDATA "[dArr  ]"--/Downarrow A: down dbl arrow -->
+<!ENTITY darr2  SDATA "[darr2 ]"--/downdownarrows A: two down arrows -->
+<!ENTITY dharl  SDATA "[dharl ]"--/downleftharpoon A: dn harpoon-left -->
+<!ENTITY dharr  SDATA "[dharr ]"--/downrightharpoon A: down harpoon-rt -->
+<!ENTITY lAarr  SDATA "[lAarr ]"--/Lleftarrow A: left triple arrow -->
+<!ENTITY Larr   SDATA "[Larr  ]"--/twoheadleftarrow A:-->
+<!ENTITY larr2  SDATA "[larr2 ]"--/leftleftarrows A: two left arrows -->
+<!ENTITY larrhk SDATA "[larrhk]"--/hookleftarrow A: left arrow-hooked -->
+<!ENTITY larrlp SDATA "[larrlp]"--/looparrowleft A: left arrow-looped -->
+<!ENTITY larrtl SDATA "[larrtl]"--/leftarrowtail A: left arrow-tailed -->
+<!ENTITY lhard  SDATA "[lhard ]"--/leftharpoondown A: l harpoon-down -->
+<!ENTITY lharu  SDATA "[lharu ]"--/leftharpoonup A: left harpoon-up -->
+<!ENTITY hArr   SDATA "[hArr  ]"--/Leftrightarrow A: l&r dbl arrow -->
+<!ENTITY harr   SDATA "[harr  ]"--/leftrightarrow A: l&r arrow -->
+<!ENTITY lrarr2 SDATA "[lrarr2]"--/leftrightarrows A: l arr over r arr -->
+<!ENTITY rlarr2 SDATA "[rlarr2]"--/rightleftarrows A: r arr over l arr -->
+<!ENTITY harrw  SDATA "[harrw ]"--/leftrightsquigarrow A: l&r arr-wavy -->
+<!ENTITY rlhar2 SDATA "[rlhar2]"--/rightleftharpoons A: r harp over l -->
+<!ENTITY lrhar2 SDATA "[lrhar2]"--/leftrightharpoons A: l harp over r -->
+<!ENTITY lsh    SDATA "[lsh   ]"--/Lsh A:-->
+<!ENTITY map    SDATA "[map   ]"--/mapsto A:-->
+<!ENTITY mumap  SDATA "[mumap ]"--/multimap A:-->
+<!ENTITY nearr  SDATA "[nearr ]"--/nearrow A: NE pointing arrow -->
+<!ENTITY nlArr  SDATA "[nlArr ]"--/nLeftarrow A: not implied by -->
+<!ENTITY nlarr  SDATA "[nlarr ]"--/nleftarrow A: not left arrow -->
+<!ENTITY nhArr  SDATA "[nhArr ]"--/nLeftrightarrow A: not l&r dbl arr -->
+<!ENTITY nharr  SDATA "[nharr ]"--/nleftrightarrow A: not l&r arrow -->
+<!ENTITY nrarr  SDATA "[nrarr ]"--/nrightarrow A: not right arrow -->
+<!ENTITY nrArr  SDATA "[nrArr ]"--/nRightarrow A: not implies -->
+<!ENTITY nwarr  SDATA "[nwarr ]"--/nwarrow A: NW pointing arrow -->
+<!ENTITY olarr  SDATA "[olarr ]"--/circlearrowleft A: l arr in circle -->
+<!ENTITY orarr  SDATA "[orarr ]"--/circlearrowright A: r arr in circle -->
+<!ENTITY rAarr  SDATA "[rAarr ]"--/Rrightarrow A: right triple arrow -->
+<!ENTITY Rarr   SDATA "[Rarr  ]"--/twoheadrightarrow A:-->
+<!ENTITY rarr2  SDATA "[rarr2 ]"--/rightrightarrows A: two rt arrows -->
+<!ENTITY rarrhk SDATA "[rarrhk]"--/hookrightarrow A: rt arrow-hooked -->
+<!ENTITY rarrlp SDATA "[rarrlp]"--/looparrowright A: rt arrow-looped -->
+<!ENTITY rarrtl SDATA "[rarrtl]"--/rightarrowtail A: rt arrow-tailed -->
+<!ENTITY rarrw  SDATA "[rarrw ]"--/squigarrowright A: rt arrow-wavy -->
+<!ENTITY rhard  SDATA "[rhard ]"--/rightharpoondown A: rt harpoon-down -->
+<!ENTITY rharu  SDATA "[rharu ]"--/rightharpoonup A: rt harpoon-up -->
+<!ENTITY rsh    SDATA "[rsh   ]"--/Rsh A:-->
+<!ENTITY drarr  SDATA "[drarr ]"--/searrow A: downward rt arrow -->
+<!ENTITY dlarr  SDATA "[dlarr ]"--/swarrow A: downward l arrow -->
+<!ENTITY uArr   SDATA "[uArr  ]"--/Uparrow A: up dbl arrow -->
+<!ENTITY uarr2  SDATA "[uarr2 ]"--/upuparrows A: two up arrows -->
+<!ENTITY vArr   SDATA "[vArr  ]"--/Updownarrow A: up&down dbl arrow -->
+<!ENTITY varr   SDATA "[varr  ]"--/updownarrow A: up&down arrow -->
+<!ENTITY uharl  SDATA "[uharl ]"--/upleftharpoon A: up harpoon-left -->
+<!ENTITY uharr  SDATA "[uharr ]"--/uprightharpoon A: up harp-r-->
+<!ENTITY xlArr  SDATA "[xlArr ]"--/Longleftarrow A: long l dbl arrow -->
+<!ENTITY xhArr  SDATA "[xhArr ]"--/Longleftrightarrow A: long l&r dbl arr-->
+<!ENTITY xharr  SDATA "[xharr ]"--/longleftrightarrow A: long l&r arr -->
+<!ENTITY xrArr  SDATA "[xrArr ]"--/Longrightarrow A: long rt dbl arr -->
diff --git a/docs/docbook/dbsgml/ent/ISOamsb b/docs/docbook/dbsgml/ent/ISOamsb
new file mode 100644 (file)
index 0000000..43944a7
--- /dev/null
@@ -0,0 +1,52 @@
+<!-- (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % ISOamsb PUBLIC
+       "ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN">
+     %ISOamsb;
+-->
+<!ENTITY amalg  SDATA "[amalg ]"--/amalg B: amalgamation or coproduct-->
+<!ENTITY Barwed SDATA "[Barwed]"--/doublebarwedge B: log and, dbl bar-->
+<!ENTITY barwed SDATA "[barwed]"--/barwedge B: logical and, bar above-->
+<!ENTITY Cap    SDATA "[Cap   ]"--/Cap /doublecap B: dbl intersection-->
+<!ENTITY Cup    SDATA "[Cup   ]"--/Cup /doublecup B: dbl union-->
+<!ENTITY cuvee  SDATA "[cuvee ]"--/curlyvee B: curly logical or-->
+<!ENTITY cuwed  SDATA "[cuwed ]"--/curlywedge B: curly logical and-->
+<!ENTITY diam   SDATA "[diam  ]"--/diamond B: open diamond-->
+<!ENTITY divonx SDATA "[divonx]"--/divideontimes B: division on times-->
+<!ENTITY intcal SDATA "[intcal]"--/intercal B: intercal-->
+<!ENTITY lthree SDATA "[lthree]"--/leftthreetimes B:-->
+<!ENTITY ltimes SDATA "[ltimes]"--/ltimes B: times sign, left closed-->
+<!ENTITY minusb SDATA "[minusb]"--/boxminus B: minus sign in box-->
+<!ENTITY oast   SDATA "[oast  ]"--/circledast B: asterisk in circle-->
+<!ENTITY ocir   SDATA "[ocir  ]"--/circledcirc B: open dot in circle-->
+<!ENTITY odash  SDATA "[odash ]"--/circleddash B: hyphen in circle-->
+<!ENTITY odot   SDATA "[odot  ]"--/odot B: middle dot in circle-->
+<!ENTITY ominus SDATA "[ominus]"--/ominus B: minus sign in circle-->
+<!ENTITY oplus  SDATA "[oplus ]"--/oplus B: plus sign in circle-->
+<!ENTITY osol   SDATA "[osol  ]"--/oslash B: solidus in circle-->
+<!ENTITY otimes SDATA "[otimes]"--/otimes B: multiply sign in circle-->
+<!ENTITY plusb  SDATA "[plusb ]"--/boxplus B: plus sign in box-->
+<!ENTITY plusdo SDATA "[plusdo]"--/dotplus B: plus sign, dot above-->
+<!ENTITY rthree SDATA "[rthree]"--/rightthreetimes B:-->
+<!ENTITY rtimes SDATA "[rtimes]"--/rtimes B: times sign, right closed-->
+<!ENTITY sdot   SDATA "[sdot  ]"--/cdot B: small middle dot-->
+<!ENTITY sdotb  SDATA "[sdotb ]"--/dotsquare /boxdot B: small dot in box-->
+<!ENTITY setmn  SDATA "[setmn ]"--/setminus B: reverse solidus-->
+<!ENTITY sqcap  SDATA "[sqcap ]"--/sqcap B: square intersection-->
+<!ENTITY sqcup  SDATA "[sqcup ]"--/sqcup B: square union-->
+<!ENTITY ssetmn SDATA "[ssetmn]"--/smallsetminus B: sm reverse solidus-->
+<!ENTITY sstarf SDATA "[sstarf]"--/star B: small star, filled-->
+<!ENTITY timesb SDATA "[timesb]"--/boxtimes B: multiply sign in box-->
+<!ENTITY top    SDATA "[top   ]"--/top B: inverted perpendicular-->
+<!ENTITY uplus  SDATA "[uplus ]"--/uplus B: plus sign in union-->
+<!ENTITY wreath SDATA "[wreath]"--/wr B: wreath product-->
+<!ENTITY xcirc  SDATA "[xcirc ]"--/bigcirc B: large circle-->
+<!ENTITY xdtri  SDATA "[xdtri ]"--/bigtriangledown B: big dn tri, open-->
+<!ENTITY xutri  SDATA "[xutri ]"--/bigtriangleup B: big up tri, open-->
+<!ENTITY coprod SDATA "[coprod]"--/coprod L: coproduct operator-->
+<!ENTITY prod   SDATA "[prod  ]"--/prod L: product operator-->
+<!ENTITY sum    SDATA "[sum   ]"--/sum L: summation operator-->
diff --git a/docs/docbook/dbsgml/ent/ISOamsc b/docs/docbook/dbsgml/ent/ISOamsc
new file mode 100644 (file)
index 0000000..06222d5
--- /dev/null
@@ -0,0 +1,20 @@
+<!-- (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % ISOamsc PUBLIC
+       "ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN">
+     %ISOamsc;
+-->
+<!ENTITY rceil  SDATA "[rceil ]"--/rceil C: right ceiling-->
+<!ENTITY rfloor SDATA "[rfloor]"--/rfloor C: right floor-->
+<!ENTITY rpargt SDATA "[rpargt]"--/rightparengtr C: right paren, gt-->
+<!ENTITY urcorn SDATA "[urcorn]"--/urcorner C: upper right corner-->
+<!ENTITY drcorn SDATA "[drcorn]"--/lrcorner C: downward right corner-->
+<!ENTITY lceil  SDATA "[lceil ]"--/lceil O: left ceiling-->
+<!ENTITY lfloor SDATA "[lfloor]"--/lfloor O: left floor-->
+<!ENTITY lpargt SDATA "[lpargt]"--/leftparengtr O: left parenthesis, gt-->
+<!ENTITY ulcorn SDATA "[ulcorn]"--/ulcorner O: upper left corner-->
+<!ENTITY dlcorn SDATA "[dlcorn]"--/llcorner O: downward left corner-->
diff --git a/docs/docbook/dbsgml/ent/ISOamsn b/docs/docbook/dbsgml/ent/ISOamsn
new file mode 100644 (file)
index 0000000..0c8327a
--- /dev/null
@@ -0,0 +1,70 @@
+<!-- (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % ISOamsn PUBLIC
+       "ISO 8879:1986//ENTITIES
+        Added Math Symbols: Negated Relations//EN">
+     %ISOamsn;
+-->
+<!ENTITY gnap   SDATA "[gnap  ]"--/gnapprox N: greater, not approximate-->
+<!ENTITY gne    SDATA "[gne   ]"--/gneq N: greater, not equals-->
+<!ENTITY gnE    SDATA "[gnE   ]"--/gneqq N: greater, not dbl equals-->
+<!ENTITY gnsim  SDATA "[gnsim ]"--/gnsim N: greater, not similar-->
+<!ENTITY gvnE   SDATA "[gvnE  ]"--/gvertneqq N: gt, vert, not dbl eq-->
+<!ENTITY lnap   SDATA "[lnap  ]"--/lnapprox N: less, not approximate-->
+<!ENTITY lnE    SDATA "[lnE   ]"--/lneqq N: less, not double equals-->
+<!ENTITY lne    SDATA "[lne   ]"--/lneq N: less, not equals-->
+<!ENTITY lnsim  SDATA "[lnsim ]"--/lnsim N: less, not similar-->
+<!ENTITY lvnE   SDATA "[lvnE  ]"--/lvertneqq N: less, vert, not dbl eq-->
+<!ENTITY nap    SDATA "[nap   ]"--/napprox N: not approximate-->
+<!ENTITY ncong  SDATA "[ncong ]"--/ncong N: not congruent with-->
+<!ENTITY nequiv SDATA "[nequiv]"--/nequiv N: not identical with-->
+<!ENTITY ngE    SDATA "[ngE   ]"--/ngeqq N: not greater, dbl equals-->
+<!ENTITY nge    SDATA "[nge   ]"--/ngeq N: not greater-than-or-equal-->
+<!ENTITY nges   SDATA "[nges  ]"--/ngeqslant N: not gt-or-eq, slanted-->
+<!ENTITY ngt    SDATA "[ngt   ]"--/ngtr N: not greater-than-->
+<!ENTITY nle    SDATA "[nle   ]"--/nleq N: not less-than-or-equal-->
+<!ENTITY nlE    SDATA "[nlE   ]"--/nleqq N: not less, dbl equals-->
+<!ENTITY nles   SDATA "[nles  ]"--/nleqslant N: not less-or-eq, slant-->
+<!ENTITY nlt    SDATA "[nlt   ]"--/nless N: not less-than-->
+<!ENTITY nltri  SDATA "[nltri ]"--/ntriangleleft N: not left triangle-->
+<!ENTITY nltrie SDATA "[nltrie]"--/ntrianglelefteq N: not l tri, eq-->
+<!ENTITY nmid   SDATA "[nmid  ]"--/nmid-->
+<!ENTITY npar   SDATA "[npar  ]"--/nparallel N: not parallel-->
+<!ENTITY npr    SDATA "[npr   ]"--/nprec N: not precedes-->
+<!ENTITY npre   SDATA "[npre  ]"--/npreceq N: not precedes, equals-->
+<!ENTITY nrtri  SDATA "[nrtri ]"--/ntriangleright N: not rt triangle-->
+<!ENTITY nrtrie SDATA "[nrtrie]"--/ntrianglerighteq N: not r tri, eq-->
+<!ENTITY nsc    SDATA "[nsc   ]"--/nsucc N: not succeeds-->
+<!ENTITY nsce   SDATA "[nsce  ]"--/nsucceq N: not succeeds, equals-->
+<!ENTITY nsim   SDATA "[nsim  ]"--/nsim N: not similar-->
+<!ENTITY nsime  SDATA "[nsime ]"--/nsimeq N: not similar, equals-->
+<!ENTITY nsmid  SDATA "[nsmid ]"--/nshortmid-->
+<!ENTITY nspar  SDATA "[nspar ]"--/nshortparallel N: not short par-->
+<!ENTITY nsub   SDATA "[nsub  ]"--/nsubset N: not subset-->
+<!ENTITY nsube  SDATA "[nsube ]"--/nsubseteq N: not subset, equals-->
+<!ENTITY nsubE  SDATA "[nsubE ]"--/nsubseteqq N: not subset, dbl eq-->
+<!ENTITY nsup   SDATA "[nsup  ]"--/nsupset N: not superset-->
+<!ENTITY nsupE  SDATA "[nsupE ]"--/nsupseteqq N: not superset, dbl eq-->
+<!ENTITY nsupe  SDATA "[nsupe ]"--/nsupseteq N: not superset, equals-->
+<!ENTITY nvdash SDATA "[nvdash]"--/nvdash N: not vertical, dash-->
+<!ENTITY nvDash SDATA "[nvDash]"--/nvDash N: not vertical, dbl dash-->
+<!ENTITY nVDash SDATA "[nVDash]"--/nVDash N: not dbl vert, dbl dash-->
+<!ENTITY nVdash SDATA "[nVdash]"--/nVdash N: not dbl vertical, dash-->
+<!ENTITY prnap  SDATA "[prnap ]"--/precnapprox N: precedes, not approx-->
+<!ENTITY prnE   SDATA "[prnE  ]"--/precneqq N: precedes, not dbl eq-->
+<!ENTITY prnsim SDATA "[prnsim]"--/precnsim N: precedes, not similar-->
+<!ENTITY scnap  SDATA "[scnap ]"--/succnapprox N: succeeds, not approx-->
+<!ENTITY scnE   SDATA "[scnE  ]"--/succneqq N: succeeds, not dbl eq-->
+<!ENTITY scnsim SDATA "[scnsim]"--/succnsim N: succeeds, not similar-->
+<!ENTITY subne  SDATA "[subne ]"--/subsetneq N: subset, not equals-->
+<!ENTITY subnE  SDATA "[subnE ]"--/subsetneqq N: subset, not dbl eq-->
+<!ENTITY supne  SDATA "[supne ]"--/supsetneq N: superset, not equals-->
+<!ENTITY supnE  SDATA "[supnE ]"--/supsetneqq N: superset, not dbl eq-->
+<!ENTITY vsubnE SDATA "[vsubnE]"--/subsetneqq N: subset not dbl eq, var-->
+<!ENTITY vsubne SDATA "[vsubne]"--/subsetneq N: subset, not eq, var-->
+<!ENTITY vsupne SDATA "[vsupne]"--/supsetneq N: superset, not eq, var-->
+<!ENTITY vsupnE SDATA "[vsupnE]"--/supsetneqq N: super not dbl eq, var-->
diff --git a/docs/docbook/dbsgml/ent/ISOamso b/docs/docbook/dbsgml/ent/ISOamso
new file mode 100644 (file)
index 0000000..ad9b329
--- /dev/null
@@ -0,0 +1,29 @@
+<!-- (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % ISOamso PUBLIC
+       "ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN">
+     %ISOamso;
+-->
+<!ENTITY ang    SDATA "[ang   ]"--/angle - angle-->
+<!ENTITY angmsd SDATA "[angmsd]"--/measuredangle - angle-measured-->
+<!ENTITY beth   SDATA "[beth  ]"--/beth - beth, Hebrew-->
+<!ENTITY bprime SDATA "[bprime]"--/backprime - reverse prime-->
+<!ENTITY comp   SDATA "[comp  ]"--/complement - complement sign-->
+<!ENTITY daleth SDATA "[daleth]"--/daleth - daleth, Hebrew-->
+<!ENTITY ell    SDATA "[ell   ]"--/ell - cursive small l-->
+<!ENTITY empty  SDATA "[empty ]"--/emptyset /varnothing =small o, slash-->
+<!ENTITY gimel  SDATA "[gimel ]"--/gimel - gimel, Hebrew-->
+<!ENTITY image  SDATA "[image ]"--/Im - imaginary-->
+<!ENTITY inodot SDATA "[inodot]"--/imath =small i, no dot-->
+<!ENTITY jnodot SDATA "[jnodot]"--/jmath - small j, no dot-->
+<!ENTITY nexist SDATA "[nexist]"--/nexists - negated exists-->
+<!ENTITY oS     SDATA "[oS    ]"--/circledS - capital S in circle-->
+<!ENTITY planck SDATA "[planck]"--/hbar /hslash - Planck's over 2pi-->
+<!ENTITY real   SDATA "[real  ]"--/Re - real-->
+<!ENTITY sbsol  SDATA "[sbsol ]"--/sbs - short reverse solidus-->
+<!ENTITY vprime SDATA "[vprime]"--/varprime - prime, variant-->
+<!ENTITY weierp SDATA "[weierp]"--/wp - Weierstrass p-->
diff --git a/docs/docbook/dbsgml/ent/ISOamsr b/docs/docbook/dbsgml/ent/ISOamsr
new file mode 100644 (file)
index 0000000..3f26c34
--- /dev/null
@@ -0,0 +1,94 @@
+<!-- (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % ISOamsr PUBLIC
+       "ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN">
+     %ISOamsr;
+-->
+<!ENTITY ape    SDATA "[ape   ]"--/approxeq R: approximate, equals-->
+<!ENTITY asymp  SDATA "[asymp ]"--/asymp R: asymptotically equal to-->
+<!ENTITY bcong  SDATA "[bcong ]"--/backcong R: reverse congruent-->
+<!ENTITY bepsi  SDATA "[bepsi ]"--/backepsilon R: such that-->
+<!ENTITY bowtie SDATA "[bowtie]"--/bowtie R:-->
+<!ENTITY bsim   SDATA "[bsim  ]"--/backsim R: reverse similar-->
+<!ENTITY bsime  SDATA "[bsime ]"--/backsimeq R: reverse similar, eq-->
+<!ENTITY bump   SDATA "[bump  ]"--/Bumpeq R: bumpy equals-->
+<!ENTITY bumpe  SDATA "[bumpe ]"--/bumpeq R: bumpy equals, equals-->
+<!ENTITY cire   SDATA "[cire  ]"--/circeq R: circle, equals-->
+<!ENTITY colone SDATA "[colone]"--/coloneq R: colon, equals-->
+<!ENTITY cuepr  SDATA "[cuepr ]"--/curlyeqprec R: curly eq, precedes-->
+<!ENTITY cuesc  SDATA "[cuesc ]"--/curlyeqsucc R: curly eq, succeeds-->
+<!ENTITY cupre  SDATA "[cupre ]"--/curlypreceq R: curly precedes, eq-->
+<!ENTITY dashv  SDATA "[dashv ]"--/dashv R: dash, vertical-->
+<!ENTITY ecir   SDATA "[ecir  ]"--/eqcirc R: circle on equals sign-->
+<!ENTITY ecolon SDATA "[ecolon]"--/eqcolon R: equals, colon-->
+<!ENTITY eDot   SDATA "[eDot  ]"--/doteqdot /Doteq R: eq, even dots-->
+<!ENTITY esdot  SDATA "[esdot ]"--/doteq R: equals, single dot above-->
+<!ENTITY efDot  SDATA "[efDot ]"--/fallingdotseq R: eq, falling dots-->
+<!ENTITY egs    SDATA "[egs   ]"--/eqslantgtr R: equal-or-gtr, slanted-->
+<!ENTITY els    SDATA "[els   ]"--/eqslantless R: eq-or-less, slanted-->
+<!ENTITY erDot  SDATA "[erDot ]"--/risingdotseq R: eq, rising dots-->
+<!ENTITY fork   SDATA "[fork  ]"--/pitchfork R: pitchfork-->
+<!ENTITY frown  SDATA "[frown ]"--/frown R: down curve-->
+<!ENTITY gap    SDATA "[gap   ]"--/gtrapprox R: greater, approximate-->
+<!ENTITY gsdot  SDATA "[gsdot ]"--/gtrdot R: greater than, single dot-->
+<!ENTITY gE     SDATA "[gE    ]"--/geqq R: greater, double equals-->
+<!ENTITY gel    SDATA "[gel   ]"--/gtreqless R: greater, equals, less-->
+<!ENTITY gEl    SDATA "[gEl   ]"--/gtreqqless R: gt, dbl equals, less-->
+<!ENTITY ges    SDATA "[ges   ]"--/geqslant R: gt-or-equal, slanted-->
+<!ENTITY Gg     SDATA "[Gg    ]"--/ggg /Gg /gggtr R: triple gtr-than-->
+<!ENTITY gl     SDATA "[gl    ]"--/gtrless R: greater, less-->
+<!ENTITY gsim   SDATA "[gsim  ]"--/gtrsim R: greater, similar-->
+<!ENTITY Gt     SDATA "[Gt    ]"--/gg R: dbl greater-than sign-->
+<!ENTITY lap    SDATA "[lap   ]"--/lessapprox R: less, approximate-->
+<!ENTITY ldot   SDATA "[ldot  ]"--/lessdot R: less than, with dot-->
+<!ENTITY lE     SDATA "[lE    ]"--/leqq R: less, double equals-->
+<!ENTITY lEg    SDATA "[lEg   ]"--/lesseqqgtr R: less, dbl eq, greater-->
+<!ENTITY leg    SDATA "[leg   ]"--/lesseqgtr R: less, eq, greater-->
+<!ENTITY les    SDATA "[les   ]"--/leqslant R: less-than-or-eq, slant-->
+<!ENTITY lg     SDATA "[lg    ]"--/lessgtr R: less, greater-->
+<!ENTITY Ll     SDATA "[Ll    ]"--/Ll /lll /llless R: triple less-than-->
+<!ENTITY lsim   SDATA "[lsim  ]"--/lesssim R: less, similar-->
+<!ENTITY Lt     SDATA "[Lt    ]"--/ll R: double less-than sign-->
+<!ENTITY ltrie  SDATA "[ltrie ]"--/trianglelefteq R: left triangle, eq-->
+<!ENTITY mid    SDATA "[mid   ]"--/mid R:-->
+<!ENTITY models SDATA "[models]"--/models R:-->
+<!ENTITY pr     SDATA "[pr    ]"--/prec R: precedes-->
+<!ENTITY prap   SDATA "[prap  ]"--/precapprox R: precedes, approximate-->
+<!ENTITY pre    SDATA "[pre   ]"--/preceq R: precedes, equals-->
+<!ENTITY prsim  SDATA "[prsim ]"--/precsim R: precedes, similar-->
+<!ENTITY rtrie  SDATA "[rtrie ]"--/trianglerighteq R: right tri, eq-->
+<!ENTITY samalg SDATA "[samalg]"--/smallamalg R: small amalg-->
+<!ENTITY sc     SDATA "[sc    ]"--/succ R: succeeds-->
+<!ENTITY scap   SDATA "[scap  ]"--/succapprox R: succeeds, approximate-->
+<!ENTITY sccue  SDATA "[sccue ]"--/succcurlyeq R: succeeds, curly eq-->
+<!ENTITY sce    SDATA "[sce   ]"--/succeq R: succeeds, equals-->
+<!ENTITY scsim  SDATA "[scsim ]"--/succsim R: succeeds, similar-->
+<!ENTITY sfrown SDATA "[sfrown]"--/smallfrown R: small down curve-->
+<!ENTITY smid   SDATA "[smid  ]"--/shortmid R:-->
+<!ENTITY smile  SDATA "[smile ]"--/smile R: up curve-->
+<!ENTITY spar   SDATA "[spar  ]"--/shortparallel R: short parallel-->
+<!ENTITY sqsub  SDATA "[sqsub ]"--/sqsubset R: square subset-->
+<!ENTITY sqsube SDATA "[sqsube]"--/sqsubseteq R: square subset, equals-->
+<!ENTITY sqsup  SDATA "[sqsup ]"--/sqsupset R: square superset-->
+<!ENTITY sqsupe SDATA "[sqsupe]"--/sqsupseteq R: square superset, eq-->
+<!ENTITY ssmile SDATA "[ssmile]"--/smallsmile R: small up curve-->
+<!ENTITY Sub    SDATA "[Sub   ]"--/Subset R: double subset-->
+<!ENTITY subE   SDATA "[subE  ]"--/subseteqq R: subset, dbl equals-->
+<!ENTITY Sup    SDATA "[Sup   ]"--/Supset R: dbl superset-->
+<!ENTITY supE   SDATA "[supE  ]"--/supseteqq R: superset, dbl equals-->
+<!ENTITY thkap  SDATA "[thkap ]"--/thickapprox R: thick approximate-->
+<!ENTITY thksim SDATA "[thksim]"--/thicksim R: thick similar-->
+<!ENTITY trie   SDATA "[trie  ]"--/triangleq R: triangle, equals-->
+<!ENTITY twixt  SDATA "[twixt ]"--/between R: between-->
+<!ENTITY vdash  SDATA "[vdash ]"--/vdash R: vertical, dash-->
+<!ENTITY Vdash  SDATA "[Vdash ]"--/Vdash R: dbl vertical, dash-->
+<!ENTITY vDash  SDATA "[vDash ]"--/vDash R: vertical, dbl dash-->
+<!ENTITY veebar SDATA "[veebar]"--/veebar R: logical or, bar below-->
+<!ENTITY vltri  SDATA "[vltri ]"--/vartriangleleft R: l tri, open, var-->
+<!ENTITY vprop  SDATA "[vprop ]"--/varpropto R: proportional, variant-->
+<!ENTITY vrtri  SDATA "[vrtri ]"--/vartriangleright R: r tri, open, var-->
+<!ENTITY Vvdash SDATA "[Vvdash]"--/Vvdash R: triple vertical, dash-->
diff --git a/docs/docbook/dbsgml/ent/ISObox b/docs/docbook/dbsgml/ent/ISObox
new file mode 100644 (file)
index 0000000..643e926
--- /dev/null
@@ -0,0 +1,62 @@
+<!-- (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % ISObox PUBLIC
+       "ISO 8879:1986//ENTITIES Box and Line Drawing//EN">
+     %ISObox;
+-->
+<!-- All names are in the form: box1234, where:
+    box = constants that identify a box drawing entity.
+    1&2 = v, V, u, U, d, D, Ud, or uD, as follows:
+      v = vertical line for full height.
+      u = upper half of vertical line.
+      d = downward (lower) half of vertical line.
+    3&4 = h, H, l, L, r, R, Lr, or lR, as follows:
+      h = horizontal line for full width.
+      l = left half of horizontal line.
+      r = right half of horizontal line.
+    In all cases, an upper-case letter means a double or heavy line.
+-->
+<!ENTITY boxh   SDATA "[boxh  ]"--horizontal line -->
+<!ENTITY boxv   SDATA "[boxv  ]"--vertical line-->
+<!ENTITY boxur  SDATA "[boxur ]"--upper right quadrant-->
+<!ENTITY boxul  SDATA "[boxul ]"--upper left quadrant-->
+<!ENTITY boxdl  SDATA "[boxdl ]"--lower left quadrant-->
+<!ENTITY boxdr  SDATA "[boxdr ]"--lower right quadrant-->
+<!ENTITY boxvr  SDATA "[boxvr ]"--upper and lower right quadrants-->
+<!ENTITY boxhu  SDATA "[boxhu ]"--upper left and right quadrants-->
+<!ENTITY boxvl  SDATA "[boxvl ]"--upper and lower left quadrants-->
+<!ENTITY boxhd  SDATA "[boxhd ]"--lower left and right quadrants-->
+<!ENTITY boxvh  SDATA "[boxvh ]"--all four quadrants-->
+<!ENTITY boxvR  SDATA "[boxvR ]"--upper and lower right quadrants-->
+<!ENTITY boxhU  SDATA "[boxhU ]"--upper left and right quadrants-->
+<!ENTITY boxvL  SDATA "[boxvL ]"--upper and lower left quadrants-->
+<!ENTITY boxhD  SDATA "[boxhD ]"--lower left and right quadrants-->
+<!ENTITY boxvH  SDATA "[boxvH ]"--all four quadrants-->
+<!ENTITY boxH   SDATA "[boxH  ]"--horizontal line-->
+<!ENTITY boxV   SDATA "[boxV  ]"--vertical line-->
+<!ENTITY boxUR  SDATA "[boxUR ]"--upper right quadrant-->
+<!ENTITY boxUL  SDATA "[boxUL ]"--upper left quadrant-->
+<!ENTITY boxDL  SDATA "[boxDL ]"--lower left quadrant-->
+<!ENTITY boxDR  SDATA "[boxDR ]"--lower right quadrant-->
+<!ENTITY boxVR  SDATA "[boxVR ]"--upper and lower right quadrants-->
+<!ENTITY boxHU  SDATA "[boxHU ]"--upper left and right quadrants-->
+<!ENTITY boxVL  SDATA "[boxVL ]"--upper and lower left quadrants-->
+<!ENTITY boxHD  SDATA "[boxHD ]"--lower left and right quadrants-->
+<!ENTITY boxVH  SDATA "[boxVH ]"--all four quadrants-->
+<!ENTITY boxVr  SDATA "[boxVr ]"--upper and lower right quadrants-->
+<!ENTITY boxHu  SDATA "[boxHu ]"--upper left and right quadrants-->
+<!ENTITY boxVl  SDATA "[boxVl ]"--upper and lower left quadrants-->
+<!ENTITY boxHd  SDATA "[boxHd ]"--lower left and right quadrants-->
+<!ENTITY boxVh  SDATA "[boxVh ]"--all four quadrants-->
+<!ENTITY boxuR  SDATA "[boxuR ]"--upper right quadrant-->
+<!ENTITY boxUl  SDATA "[boxUl ]"--upper left quadrant-->
+<!ENTITY boxdL  SDATA "[boxdL ]"--lower left quadrant-->
+<!ENTITY boxDr  SDATA "[boxDr ]"--lower right quadrant-->
+<!ENTITY boxUr  SDATA "[boxUr ]"--upper right quadrant-->
+<!ENTITY boxuL  SDATA "[boxuL ]"--upper left quadrant-->
+<!ENTITY boxDl  SDATA "[boxDl ]"--lower left quadrant-->
+<!ENTITY boxdR  SDATA "[boxdR ]"--lower right quadrant-->
diff --git a/docs/docbook/dbsgml/ent/ISOcyr1 b/docs/docbook/dbsgml/ent/ISOcyr1
new file mode 100644 (file)
index 0000000..97b961b
--- /dev/null
@@ -0,0 +1,77 @@
+<!-- (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % ISOcyr1 PUBLIC
+       "ISO 8879:1986//ENTITIES Russian Cyrillic//EN">
+     %ISOcyr1;
+-->
+<!ENTITY acy    SDATA "[acy   ]"--=small a, Cyrillic-->
+<!ENTITY Acy    SDATA "[Acy   ]"--=capital A, Cyrillic-->
+<!ENTITY bcy    SDATA "[bcy   ]"--=small be, Cyrillic-->
+<!ENTITY Bcy    SDATA "[Bcy   ]"--=capital BE, Cyrillic-->
+<!ENTITY vcy    SDATA "[vcy   ]"--=small ve, Cyrillic-->
+<!ENTITY Vcy    SDATA "[Vcy   ]"--=capital VE, Cyrillic-->
+<!ENTITY gcy    SDATA "[gcy   ]"--=small ghe, Cyrillic-->
+<!ENTITY Gcy    SDATA "[Gcy   ]"--=capital GHE, Cyrillic-->
+<!ENTITY dcy    SDATA "[dcy   ]"--=small de, Cyrillic-->
+<!ENTITY Dcy    SDATA "[Dcy   ]"--=capital DE, Cyrillic-->
+<!ENTITY iecy   SDATA "[iecy  ]"--=small ie, Cyrillic-->
+<!ENTITY IEcy   SDATA "[IEcy  ]"--=capital IE, Cyrillic-->
+<!ENTITY iocy   SDATA "[iocy  ]"--=small io, Russian-->
+<!ENTITY IOcy   SDATA "[IOcy  ]"--=capital IO, Russian-->
+<!ENTITY zhcy   SDATA "[zhcy  ]"--=small zhe, Cyrillic-->
+<!ENTITY ZHcy   SDATA "[ZHcy  ]"--=capital ZHE, Cyrillic-->
+<!ENTITY zcy    SDATA "[zcy   ]"--=small ze, Cyrillic-->
+<!ENTITY Zcy    SDATA "[Zcy   ]"--=capital ZE, Cyrillic-->
+<!ENTITY icy    SDATA "[icy   ]"--=small i, Cyrillic-->
+<!ENTITY Icy    SDATA "[Icy   ]"--=capital I, Cyrillic-->
+<!ENTITY jcy    SDATA "[jcy   ]"--=small short i, Cyrillic-->
+<!ENTITY Jcy    SDATA "[Jcy   ]"--=capital short I, Cyrillic-->
+<!ENTITY kcy    SDATA "[kcy   ]"--=small ka, Cyrillic-->
+<!ENTITY Kcy    SDATA "[Kcy   ]"--=capital KA, Cyrillic-->
+<!ENTITY lcy    SDATA "[lcy   ]"--=small el, Cyrillic-->
+<!ENTITY Lcy    SDATA "[Lcy   ]"--=capital EL, Cyrillic-->
+<!ENTITY mcy    SDATA "[mcy   ]"--=small em, Cyrillic-->
+<!ENTITY Mcy    SDATA "[Mcy   ]"--=capital EM, Cyrillic-->
+<!ENTITY ncy    SDATA "[ncy   ]"--=small en, Cyrillic-->
+<!ENTITY Ncy    SDATA "[Ncy   ]"--=capital EN, Cyrillic-->
+<!ENTITY ocy    SDATA "[ocy   ]"--=small o, Cyrillic-->
+<!ENTITY Ocy    SDATA "[Ocy   ]"--=capital O, Cyrillic-->
+<!ENTITY pcy    SDATA "[pcy   ]"--=small pe, Cyrillic-->
+<!ENTITY Pcy    SDATA "[Pcy   ]"--=capital PE, Cyrillic-->
+<!ENTITY rcy    SDATA "[rcy   ]"--=small er, Cyrillic-->
+<!ENTITY Rcy    SDATA "[Rcy   ]"--=capital ER, Cyrillic-->
+<!ENTITY scy    SDATA "[scy   ]"--=small es, Cyrillic-->
+<!ENTITY Scy    SDATA "[Scy   ]"--=capital ES, Cyrillic-->
+<!ENTITY tcy    SDATA "[tcy   ]"--=small te, Cyrillic-->
+<!ENTITY Tcy    SDATA "[Tcy   ]"--=capital TE, Cyrillic-->
+<!ENTITY ucy    SDATA "[ucy   ]"--=small u, Cyrillic-->
+<!ENTITY Ucy    SDATA "[Ucy   ]"--=capital U, Cyrillic-->
+<!ENTITY fcy    SDATA "[fcy   ]"--=small ef, Cyrillic-->
+<!ENTITY Fcy    SDATA "[Fcy   ]"--=capital EF, Cyrillic-->
+<!ENTITY khcy   SDATA "[khcy  ]"--=small ha, Cyrillic-->
+<!ENTITY KHcy   SDATA "[KHcy  ]"--=capital HA, Cyrillic-->
+<!ENTITY tscy   SDATA "[tscy  ]"--=small tse, Cyrillic-->
+<!ENTITY TScy   SDATA "[TScy  ]"--=capital TSE, Cyrillic-->
+<!ENTITY chcy   SDATA "[chcy  ]"--=small che, Cyrillic-->
+<!ENTITY CHcy   SDATA "[CHcy  ]"--=capital CHE, Cyrillic-->
+<!ENTITY shcy   SDATA "[shcy  ]"--=small sha, Cyrillic-->
+<!ENTITY SHcy   SDATA "[SHcy  ]"--=capital SHA, Cyrillic-->
+<!ENTITY shchcy SDATA "[shchcy]"--=small shcha, Cyrillic-->
+<!ENTITY SHCHcy SDATA "[SHCHcy]"--=capital SHCHA, Cyrillic-->
+<!ENTITY hardcy SDATA "[hardcy]"--=small hard sign, Cyrillic-->
+<!ENTITY HARDcy SDATA "[HARDcy]"--=capital HARD sign, Cyrillic-->
+<!ENTITY ycy    SDATA "[ycy   ]"--=small yeru, Cyrillic-->
+<!ENTITY Ycy    SDATA "[Ycy   ]"--=capital YERU, Cyrillic-->
+<!ENTITY softcy SDATA "[softcy]"--=small soft sign, Cyrillic-->
+<!ENTITY SOFTcy SDATA "[SOFTcy]"--=capital SOFT sign, Cyrillic-->
+<!ENTITY ecy    SDATA "[ecy   ]"--=small e, Cyrillic-->
+<!ENTITY Ecy    SDATA "[Ecy   ]"--=capital E, Cyrillic-->
+<!ENTITY yucy   SDATA "[yucy  ]"--=small yu, Cyrillic-->
+<!ENTITY YUcy   SDATA "[YUcy  ]"--=capital YU, Cyrillic-->
+<!ENTITY yacy   SDATA "[yacy  ]"--=small ya, Cyrillic-->
+<!ENTITY YAcy   SDATA "[YAcy  ]"--=capital YA, Cyrillic-->
+<!ENTITY numero SDATA "[numero]"--=numero sign-->
diff --git a/docs/docbook/dbsgml/ent/ISOcyr2 b/docs/docbook/dbsgml/ent/ISOcyr2
new file mode 100644 (file)
index 0000000..480b01c
--- /dev/null
@@ -0,0 +1,36 @@
+<!-- (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % ISOcyr2 PUBLIC
+       "ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN">
+     %ISOcyr2;
+-->
+<!ENTITY djcy   SDATA "[djcy  ]"--=small dje, Serbian-->
+<!ENTITY DJcy   SDATA "[DJcy  ]"--=capital DJE, Serbian-->
+<!ENTITY gjcy   SDATA "[gjcy  ]"--=small gje, Macedonian-->
+<!ENTITY GJcy   SDATA "[GJcy  ]"--=capital GJE Macedonian-->
+<!ENTITY jukcy  SDATA "[jukcy ]"--=small je, Ukrainian-->
+<!ENTITY Jukcy  SDATA "[Jukcy ]"--=capital JE, Ukrainian-->
+<!ENTITY dscy   SDATA "[dscy  ]"--=small dse, Macedonian-->
+<!ENTITY DScy   SDATA "[DScy  ]"--=capital DSE, Macedonian-->
+<!ENTITY iukcy  SDATA "[iukcy ]"--=small i, Ukrainian-->
+<!ENTITY Iukcy  SDATA "[Iukcy ]"--=capital I, Ukrainian-->
+<!ENTITY yicy   SDATA "[yicy  ]"--=small yi, Ukrainian-->
+<!ENTITY YIcy   SDATA "[YIcy  ]"--=capital YI, Ukrainian-->
+<!ENTITY jsercy SDATA "[jsercy]"--=small je, Serbian-->
+<!ENTITY Jsercy SDATA "[Jsercy]"--=capital JE, Serbian-->
+<!ENTITY ljcy   SDATA "[ljcy  ]"--=small lje, Serbian-->
+<!ENTITY LJcy   SDATA "[LJcy  ]"--=capital LJE, Serbian-->
+<!ENTITY njcy   SDATA "[njcy  ]"--=small nje, Serbian-->
+<!ENTITY NJcy   SDATA "[NJcy  ]"--=capital NJE, Serbian-->
+<!ENTITY tshcy  SDATA "[tshcy ]"--=small tshe, Serbian-->
+<!ENTITY TSHcy  SDATA "[TSHcy ]"--=capital TSHE, Serbian-->
+<!ENTITY kjcy   SDATA "[kjcy  ]"--=small kje Macedonian-->
+<!ENTITY KJcy   SDATA "[KJcy  ]"--=capital KJE, Macedonian-->
+<!ENTITY ubrcy  SDATA "[ubrcy ]"--=small u, Byelorussian-->
+<!ENTITY Ubrcy  SDATA "[Ubrcy ]"--=capital U, Byelorussian-->
+<!ENTITY dzcy   SDATA "[dzcy  ]"--=small dze, Serbian-->
+<!ENTITY DZcy   SDATA "[DZcy  ]"--=capital dze, Serbian-->
diff --git a/docs/docbook/dbsgml/ent/ISOdia b/docs/docbook/dbsgml/ent/ISOdia
new file mode 100644 (file)
index 0000000..3b6f98d
--- /dev/null
@@ -0,0 +1,24 @@
+<!-- (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % ISOdia PUBLIC
+       "ISO 8879:1986//ENTITIES Diacritical Marks//EN">
+     %ISOdia;
+-->
+<!ENTITY acute  SDATA "[acute ]"--=acute accent-->
+<!ENTITY breve  SDATA "[breve ]"--=breve-->
+<!ENTITY caron  SDATA "[caron ]"--=caron-->
+<!ENTITY cedil  SDATA "[cedil ]"--=cedilla-->
+<!ENTITY circ   SDATA "[circ  ]"--=circumflex accent-->
+<!ENTITY dblac  SDATA "[dblac ]"--=double acute accent-->
+<!ENTITY die    SDATA "[die   ]"--=dieresis-->
+<!ENTITY dot    SDATA "[dot   ]"--=dot above-->
+<!ENTITY grave  SDATA "[grave ]"--=grave accent-->
+<!ENTITY macr   SDATA "[macr  ]"--=macron-->
+<!ENTITY ogon   SDATA "[ogon  ]"--=ogonek-->
+<!ENTITY ring   SDATA "[ring  ]"--=ring-->
+<!ENTITY tilde  SDATA "[tilde ]"--=tilde-->
+<!ENTITY uml    SDATA "[uml   ]"--=umlaut mark-->
diff --git a/docs/docbook/dbsgml/ent/ISOgrk1 b/docs/docbook/dbsgml/ent/ISOgrk1
new file mode 100644 (file)
index 0000000..dea16bf
--- /dev/null
@@ -0,0 +1,59 @@
+<!-- (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % ISOgrk1 PUBLIC
+       "ISO 8879:1986//ENTITIES Greek Letters//EN">
+     %ISOgrk1;
+-->
+<!ENTITY agr    SDATA "[agr   ]"--=small alpha, Greek-->
+<!ENTITY Agr    SDATA "[Agr   ]"--=capital Alpha, Greek-->
+<!ENTITY bgr    SDATA "[bgr   ]"--=small beta, Greek-->
+<!ENTITY Bgr    SDATA "[Bgr   ]"--=capital Beta, Greek-->
+<!ENTITY ggr    SDATA "[ggr   ]"--=small gamma, Greek-->
+<!ENTITY Ggr    SDATA "[Ggr   ]"--=capital Gamma, Greek-->
+<!ENTITY dgr    SDATA "[dgr   ]"--=small delta, Greek-->
+<!ENTITY Dgr    SDATA "[Dgr   ]"--=capital Delta, Greek-->
+<!ENTITY egr    SDATA "[egr   ]"--=small epsilon, Greek-->
+<!ENTITY Egr    SDATA "[Egr   ]"--=capital Epsilon, Greek-->
+<!ENTITY zgr    SDATA "[zgr   ]"--=small zeta, Greek-->
+<!ENTITY Zgr    SDATA "[Zgr   ]"--=capital Zeta, Greek-->
+<!ENTITY eegr   SDATA "[eegr  ]"--=small eta, Greek-->
+<!ENTITY EEgr   SDATA "[EEgr  ]"--=capital Eta, Greek-->
+<!ENTITY thgr   SDATA "[thgr  ]"--=small theta, Greek-->
+<!ENTITY THgr   SDATA "[THgr  ]"--=capital Theta, Greek-->
+<!ENTITY igr    SDATA "[igr   ]"--=small iota, Greek-->
+<!ENTITY Igr    SDATA "[Igr   ]"--=capital Iota, Greek-->
+<!ENTITY kgr    SDATA "[kgr   ]"--=small kappa, Greek-->
+<!ENTITY Kgr    SDATA "[Kgr   ]"--=capital Kappa, Greek-->
+<!ENTITY lgr    SDATA "[lgr   ]"--=small lambda, Greek-->
+<!ENTITY Lgr    SDATA "[Lgr   ]"--=capital Lambda, Greek-->
+<!ENTITY mgr    SDATA "[mgr   ]"--=small mu, Greek-->
+<!ENTITY Mgr    SDATA "[Mgr   ]"--=capital Mu, Greek-->
+<!ENTITY ngr    SDATA "[ngr   ]"--=small nu, Greek-->
+<!ENTITY Ngr    SDATA "[Ngr   ]"--=capital Nu, Greek-->
+<!ENTITY xgr    SDATA "[xgr   ]"--=small xi, Greek-->
+<!ENTITY Xgr    SDATA "[Xgr   ]"--=capital Xi, Greek-->
+<!ENTITY ogr    SDATA "[ogr   ]"--=small omicron, Greek-->
+<!ENTITY Ogr    SDATA "[Ogr   ]"--=capital Omicron, Greek-->
+<!ENTITY pgr    SDATA "[pgr   ]"--=small pi, Greek-->
+<!ENTITY Pgr    SDATA "[Pgr   ]"--=capital Pi, Greek-->
+<!ENTITY rgr    SDATA "[rgr   ]"--=small rho, Greek-->
+<!ENTITY Rgr    SDATA "[Rgr   ]"--=capital Rho, Greek-->
+<!ENTITY sgr    SDATA "[sgr   ]"--=small sigma, Greek-->
+<!ENTITY Sgr    SDATA "[Sgr   ]"--=capital Sigma, Greek-->
+<!ENTITY sfgr   SDATA "[sfgr  ]"--=final small sigma, Greek-->
+<!ENTITY tgr    SDATA "[tgr   ]"--=small tau, Greek-->
+<!ENTITY Tgr    SDATA "[Tgr   ]"--=capital Tau, Greek-->
+<!ENTITY ugr    SDATA "[ugr   ]"--=small upsilon, Greek-->
+<!ENTITY Ugr    SDATA "[Ugr   ]"--=capital Upsilon, Greek-->
+<!ENTITY phgr   SDATA "[phgr  ]"--=small phi, Greek-->
+<!ENTITY PHgr   SDATA "[PHgr  ]"--=capital Phi, Greek-->
+<!ENTITY khgr   SDATA "[khgr  ]"--=small chi, Greek-->
+<!ENTITY KHgr   SDATA "[KHgr  ]"--=capital Chi, Greek-->
+<!ENTITY psgr   SDATA "[psgr  ]"--=small psi, Greek-->
+<!ENTITY PSgr   SDATA "[PSgr  ]"--=capital Psi, Greek-->
+<!ENTITY ohgr   SDATA "[ohgr  ]"--=small omega, Greek-->
+<!ENTITY OHgr   SDATA "[OHgr  ]"--=capital Omega, Greek-->
diff --git a/docs/docbook/dbsgml/ent/ISOgrk2 b/docs/docbook/dbsgml/ent/ISOgrk2
new file mode 100644 (file)
index 0000000..657bb99
--- /dev/null
@@ -0,0 +1,30 @@
+<!-- (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % ISOgrk2 PUBLIC
+       "ISO 8879:1986//ENTITIES Monotoniko Greek//EN">
+     %ISOgrk2;
+-->
+<!ENTITY aacgr  SDATA "[aacgr ]"--=small alpha, accent, Greek-->
+<!ENTITY Aacgr  SDATA "[Aacgr ]"--=capital Alpha, accent, Greek-->
+<!ENTITY eacgr  SDATA "[eacgr ]"--=small epsilon, accent, Greek-->
+<!ENTITY Eacgr  SDATA "[Eacgr ]"--=capital Epsilon, accent, Greek-->
+<!ENTITY eeacgr SDATA "[eeacgr]"--=small eta, accent, Greek-->
+<!ENTITY EEacgr SDATA "[EEacgr]"--=capital Eta, accent, Greek-->
+<!ENTITY idigr  SDATA "[idigr ]"--=small iota, dieresis, Greek-->
+<!ENTITY Idigr  SDATA "[Idigr ]"--=capital Iota, dieresis, Greek-->
+<!ENTITY iacgr  SDATA "[iacgr ]"--=small iota, accent, Greek-->
+<!ENTITY Iacgr  SDATA "[Iacgr ]"--=capital Iota, accent, Greek-->
+<!ENTITY idiagr SDATA "[idiagr]"--=small iota, dieresis, accent, Greek-->
+<!ENTITY oacgr  SDATA "[oacgr ]"--=small omicron, accent, Greek-->
+<!ENTITY Oacgr  SDATA "[Oacgr ]"--=capital Omicron, accent, Greek-->
+<!ENTITY udigr  SDATA "[udigr ]"--=small upsilon, dieresis, Greek-->
+<!ENTITY Udigr  SDATA "[Udigr ]"--=capital Upsilon, dieresis, Greek-->
+<!ENTITY uacgr  SDATA "[uacgr ]"--=small upsilon, accent, Greek-->
+<!ENTITY Uacgr  SDATA "[Uacgr ]"--=capital Upsilon, accent, Greek-->
+<!ENTITY udiagr SDATA "[udiagr]"--=small upsilon, dieresis, accent, Greek-->
+<!ENTITY ohacgr SDATA "[ohacgr]"--=small omega, accent, Greek-->
+<!ENTITY OHacgr SDATA "[OHacgr]"--=capital Omega, accent, Greek-->
diff --git a/docs/docbook/dbsgml/ent/ISOgrk3 b/docs/docbook/dbsgml/ent/ISOgrk3
new file mode 100644 (file)
index 0000000..f76c3a0
--- /dev/null
@@ -0,0 +1,53 @@
+<!-- (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % ISOgrk3 PUBLIC
+       "ISO 8879:1986//ENTITIES Greek Symbols//EN">
+     %ISOgrk3;
+-->
+<!ENTITY alpha    SDATA "[alpha ]"--=small alpha, Greek-->
+<!ENTITY beta     SDATA "[beta  ]"--=small beta, Greek-->
+<!ENTITY gamma    SDATA "[gamma ]"--=small gamma, Greek-->
+<!ENTITY Gamma    SDATA "[Gamma ]"--=capital Gamma, Greek-->
+<!ENTITY gammad   SDATA "[gammad]"--/digamma-->
+<!ENTITY delta    SDATA "[delta ]"--=small delta, Greek-->
+<!ENTITY Delta    SDATA "[Delta ]"--=capital Delta, Greek-->
+<!ENTITY epsi     SDATA "[epsi  ]"--=small epsilon, Greek-->
+<!ENTITY epsiv    SDATA "[epsiv ]"--/varepsilon-->
+<!ENTITY epsis    SDATA "[epsis ]"--/straightepsilon-->
+<!ENTITY zeta     SDATA "[zeta  ]"--=small zeta, Greek-->
+<!ENTITY eta      SDATA "[eta   ]"--=small eta, Greek-->
+<!ENTITY thetas   SDATA "[thetas]"--straight theta-->
+<!ENTITY Theta    SDATA "[Theta ]"--=capital Theta, Greek-->
+<!ENTITY thetav   SDATA "[thetav]"--/vartheta - curly or open theta-->
+<!ENTITY iota     SDATA "[iota  ]"--=small iota, Greek-->
+<!ENTITY kappa    SDATA "[kappa ]"--=small kappa, Greek-->
+<!ENTITY kappav   SDATA "[kappav]"--/varkappa-->
+<!ENTITY lambda   SDATA "[lambda]"--=small lambda, Greek-->
+<!ENTITY Lambda   SDATA "[Lambda]"--=capital Lambda, Greek-->
+<!ENTITY mu       SDATA "[mu    ]"--=small mu, Greek-->
+<!ENTITY nu       SDATA "[nu    ]"--=small nu, Greek-->
+<!ENTITY xi       SDATA "[xi    ]"--=small xi, Greek-->
+<!ENTITY Xi       SDATA "[Xi    ]"--=capital Xi, Greek-->
+<!ENTITY pi       SDATA "[pi    ]"--=small pi, Greek-->
+<!ENTITY piv      SDATA "[piv   ]"--/varpi-->
+<!ENTITY Pi       SDATA "[Pi    ]"--=capital Pi, Greek-->
+<!ENTITY rho      SDATA "[rho   ]"--=small rho, Greek-->
+<!ENTITY rhov     SDATA "[rhov  ]"--/varrho-->
+<!ENTITY sigma    SDATA "[sigma ]"--=small sigma, Greek-->
+<!ENTITY Sigma    SDATA "[Sigma ]"--=capital Sigma, Greek-->
+<!ENTITY sigmav   SDATA "[sigmav]"--/varsigma-->
+<!ENTITY tau      SDATA "[tau   ]"--=small tau, Greek-->
+<!ENTITY upsi     SDATA "[upsi  ]"--=small upsilon, Greek-->
+<!ENTITY Upsi     SDATA "[Upsi  ]"--=capital Upsilon, Greek-->
+<!ENTITY phis     SDATA "[phis  ]"--/straightphi - straight phi-->
+<!ENTITY Phi      SDATA "[Phi   ]"--=capital Phi, Greek-->
+<!ENTITY phiv     SDATA "[phiv  ]"--/varphi - curly or open phi-->
+<!ENTITY chi      SDATA "[chi   ]"--=small chi, Greek-->
+<!ENTITY psi      SDATA "[psi   ]"--=small psi, Greek-->
+<!ENTITY Psi      SDATA "[Psi   ]"--=capital Psi, Greek-->
+<!ENTITY omega    SDATA "[omega ]"--=small omega, Greek-->
+<!ENTITY Omega    SDATA "[Omega ]"--=capital Omega, Greek-->
diff --git a/docs/docbook/dbsgml/ent/ISOgrk4 b/docs/docbook/dbsgml/ent/ISOgrk4
new file mode 100644 (file)
index 0000000..e4427a0
--- /dev/null
@@ -0,0 +1,53 @@
+<!-- (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % ISOgrk4 PUBLIC
+       "ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN">
+     %ISOgrk4;
+-->
+<!ENTITY b.alpha  SDATA "[b.alpha ]"--=small alpha, Greek-->
+<!ENTITY b.beta   SDATA "[b.beta  ]"--=small beta, Greek-->
+<!ENTITY b.gamma  SDATA "[b.gamma ]"--=small gamma, Greek-->
+<!ENTITY b.Gamma  SDATA "[b.Gamma ]"--=capital Gamma, Greek-->
+<!ENTITY b.gammad SDATA "[b.gammad]"--/digamma-->
+<!ENTITY b.delta  SDATA "[b.delta ]"--=small delta, Greek-->
+<!ENTITY b.Delta  SDATA "[b.Delta ]"--=capital Delta, Greek-->
+<!ENTITY b.epsi   SDATA "[b.epsi  ]"--=small epsilon, Greek-->
+<!ENTITY b.epsiv  SDATA "[b.epsiv ]"--/varepsilon-->
+<!ENTITY b.epsis  SDATA "[b.epsis ]"--/straightepsilon-->
+<!ENTITY b.zeta   SDATA "[b.zeta  ]"--=small zeta, Greek-->
+<!ENTITY b.eta    SDATA "[b.eta   ]"--=small eta, Greek-->
+<!ENTITY b.thetas SDATA "[b.thetas]"--straight theta-->
+<!ENTITY b.Theta  SDATA "[b.Theta ]"--=capital Theta, Greek-->
+<!ENTITY b.thetav SDATA "[b.thetav]"--/vartheta - curly or open theta-->
+<!ENTITY b.iota   SDATA "[b.iota  ]"--=small iota, Greek-->
+<!ENTITY b.kappa  SDATA "[b.kappa ]"--=small kappa, Greek-->
+<!ENTITY b.kappav SDATA "[b.kappav]"--/varkappa-->
+<!ENTITY b.lambda SDATA "[b.lambda]"--=small lambda, Greek-->
+<!ENTITY b.Lambda SDATA "[b.Lambda]"--=capital Lambda, Greek-->
+<!ENTITY b.mu     SDATA "[b.mu    ]"--=small mu, Greek-->
+<!ENTITY b.nu     SDATA "[b.nu    ]"--=small nu, Greek-->
+<!ENTITY b.xi     SDATA "[b.xi    ]"--=small xi, Greek-->
+<!ENTITY b.Xi     SDATA "[b.Xi    ]"--=capital Xi, Greek-->
+<!ENTITY b.pi     SDATA "[b.pi    ]"--=small pi, Greek-->
+<!ENTITY b.Pi     SDATA "[b.Pi    ]"--=capital Pi, Greek-->
+<!ENTITY b.piv    SDATA "[b.piv   ]"--/varpi-->
+<!ENTITY b.rho    SDATA "[b.rho   ]"--=small rho, Greek-->
+<!ENTITY b.rhov   SDATA "[b.rhov  ]"--/varrho-->
+<!ENTITY b.sigma  SDATA "[b.sigma ]"--=small sigma, Greek-->
+<!ENTITY b.Sigma  SDATA "[b.Sigma ]"--=capital Sigma, Greek-->
+<!ENTITY b.sigmav SDATA "[b.sigmav]"--/varsigma-->
+<!ENTITY b.tau    SDATA "[b.tau   ]"--=small tau, Greek-->
+<!ENTITY b.upsi   SDATA "[b.upsi  ]"--=small upsilon, Greek-->
+<!ENTITY b.Upsi   SDATA "[b.Upsi  ]"--=capital Upsilon, Greek-->
+<!ENTITY b.phis   SDATA "[b.phis  ]"--/straightphi - straight phi-->
+<!ENTITY b.Phi    SDATA "[b.Phi   ]"--=capital Phi, Greek-->
+<!ENTITY b.phiv   SDATA "[b.phiv  ]"--/varphi - curly or open phi-->
+<!ENTITY b.chi    SDATA "[b.chi   ]"--=small chi, Greek-->
+<!ENTITY b.psi    SDATA "[b.psi   ]"--=small psi, Greek-->
+<!ENTITY b.Psi    SDATA "[b.Psi   ]"--=capital Psi, Greek-->
+<!ENTITY b.omega  SDATA "[b.omega ]"--=small omega, Greek-->
+<!ENTITY b.Omega  SDATA "[b.Omega ]"--=capital Omega, Greek-->
diff --git a/docs/docbook/dbsgml/ent/ISOlat1 b/docs/docbook/dbsgml/ent/ISOlat1
new file mode 100644 (file)
index 0000000..0d7d0a7
--- /dev/null
@@ -0,0 +1,72 @@
+<!-- (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % ISOlat1 PUBLIC
+       "ISO 8879:1986//ENTITIES Added Latin 1//EN">
+     %ISOlat1;
+-->
+<!ENTITY aacute SDATA "[aacute]"--=small a, acute accent-->
+<!ENTITY Aacute SDATA "[Aacute]"--=capital A, acute accent-->
+<!ENTITY acirc  SDATA "[acirc ]"--=small a, circumflex accent-->
+<!ENTITY Acirc  SDATA "[Acirc ]"--=capital A, circumflex accent-->
+<!ENTITY agrave SDATA "[agrave]"--=small a, grave accent-->
+<!ENTITY Agrave SDATA "[Agrave]"--=capital A, grave accent-->
+<!ENTITY aring  SDATA "[aring ]"--=small a, ring-->
+<!ENTITY Aring  SDATA "[Aring ]"--=capital A, ring-->
+<!ENTITY atilde SDATA "[atilde]"--=small a, tilde-->
+<!ENTITY Atilde SDATA "[Atilde]"--=capital A, tilde-->
+<!ENTITY auml   SDATA "[auml  ]"--=small a, dieresis or umlaut mark-->
+<!ENTITY Auml   SDATA "[Auml  ]"--=capital A, dieresis or umlaut mark-->
+<!ENTITY aelig  SDATA "[aelig ]"--=small ae diphthong (ligature)-->
+<!ENTITY AElig  SDATA "[AElig ]"--=capital AE diphthong (ligature)-->
+<!ENTITY ccedil SDATA "[ccedil]"--=small c, cedilla-->
+<!ENTITY Ccedil SDATA "[Ccedil]"--=capital C, cedilla-->
+<!ENTITY eth    SDATA "[eth   ]"--=small eth, Icelandic-->
+<!ENTITY ETH    SDATA "[ETH   ]"--=capital Eth, Icelandic-->
+<!ENTITY eacute SDATA "[eacute]"--=small e, acute accent-->
+<!ENTITY Eacute SDATA "[Eacute]"--=capital E, acute accent-->
+<!ENTITY ecirc  SDATA "[ecirc ]"--=small e, circumflex accent-->
+<!ENTITY Ecirc  SDATA "[Ecirc ]"--=capital E, circumflex accent-->
+<!ENTITY egrave SDATA "[egrave]"--=small e, grave accent-->
+<!ENTITY Egrave SDATA "[Egrave]"--=capital E, grave accent-->
+<!ENTITY euml   SDATA "[euml  ]"--=small e, dieresis or umlaut mark-->
+<!ENTITY Euml   SDATA "[Euml  ]"--=capital E, dieresis or umlaut mark-->
+<!ENTITY iacute SDATA "[iacute]"--=small i, acute accent-->
+<!ENTITY Iacute SDATA "[Iacute]"--=capital I, acute accent-->
+<!ENTITY icirc  SDATA "[icirc ]"--=small i, circumflex accent-->
+<!ENTITY Icirc  SDATA "[Icirc ]"--=capital I, circumflex accent-->
+<!ENTITY igrave SDATA "[igrave]"--=small i, grave accent-->
+<!ENTITY Igrave SDATA "[Igrave]"--=capital I, grave accent-->
+<!ENTITY iuml   SDATA "[iuml  ]"--=small i, dieresis or umlaut mark-->
+<!ENTITY Iuml   SDATA "[Iuml  ]"--=capital I, dieresis or umlaut mark-->
+<!ENTITY ntilde SDATA "[ntilde]"--=small n, tilde-->
+<!ENTITY Ntilde SDATA "[Ntilde]"--=capital N, tilde-->
+<!ENTITY oacute SDATA "[oacute]"--=small o, acute accent-->
+<!ENTITY Oacute SDATA "[Oacute]"--=capital O, acute accent-->
+<!ENTITY ocirc  SDATA "[ocirc ]"--=small o, circumflex accent-->
+<!ENTITY Ocirc  SDATA "[Ocirc ]"--=capital O, circumflex accent-->
+<!ENTITY ograve SDATA "[ograve]"--=small o, grave accent-->
+<!ENTITY Ograve SDATA "[Ograve]"--=capital O, grave accent-->
+<!ENTITY oslash SDATA "[oslash]"--=small o, slash-->
+<!ENTITY Oslash SDATA "[Oslash]"--=capital O, slash-->
+<!ENTITY otilde SDATA "[otilde]"--=small o, tilde-->
+<!ENTITY Otilde SDATA "[Otilde]"--=capital O, tilde-->
+<!ENTITY ouml   SDATA "[ouml  ]"--=small o, dieresis or umlaut mark-->
+<!ENTITY Ouml   SDATA "[Ouml  ]"--=capital O, dieresis or umlaut mark-->
+<!ENTITY szlig  SDATA "[szlig ]"--=small sharp s, German (sz ligature)-->
+<!ENTITY thorn  SDATA "[thorn ]"--=small thorn, Icelandic-->
+<!ENTITY THORN  SDATA "[THORN ]"--=capital THORN, Icelandic-->
+<!ENTITY uacute SDATA "[uacute]"--=small u, acute accent-->
+<!ENTITY Uacute SDATA "[Uacute]"--=capital U, acute accent-->
+<!ENTITY ucirc  SDATA "[ucirc ]"--=small u, circumflex accent-->
+<!ENTITY Ucirc  SDATA "[Ucirc ]"--=capital U, circumflex accent-->
+<!ENTITY ugrave SDATA "[ugrave]"--=small u, grave accent-->
+<!ENTITY Ugrave SDATA "[Ugrave]"--=capital U, grave accent-->
+<!ENTITY uuml   SDATA "[uuml  ]"--=small u, dieresis or umlaut mark-->
+<!ENTITY Uuml   SDATA "[Uuml  ]"--=capital U, dieresis or umlaut mark-->
+<!ENTITY yacute SDATA "[yacute]"--=small y, acute accent-->
+<!ENTITY Yacute SDATA "[Yacute]"--=capital Y, acute accent-->
+<!ENTITY yuml   SDATA "[yuml  ]"--=small y, dieresis or umlaut mark-->
diff --git a/docs/docbook/dbsgml/ent/ISOlat2 b/docs/docbook/dbsgml/ent/ISOlat2
new file mode 100644 (file)
index 0000000..4bcb337
--- /dev/null
@@ -0,0 +1,131 @@
+<!-- (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % ISOlat2 PUBLIC
+       "ISO 8879:1986//ENTITIES Added Latin 2//EN">
+     %ISOlat2;
+-->
+<!ENTITY abreve SDATA "[abreve]"--=small a, breve-->
+<!ENTITY Abreve SDATA "[Abreve]"--=capital A, breve-->
+<!ENTITY amacr  SDATA "[amacr ]"--=small a, macron-->
+<!ENTITY Amacr  SDATA "[Amacr ]"--=capital A, macron-->
+<!ENTITY aogon  SDATA "[aogon ]"--=small a, ogonek-->
+<!ENTITY Aogon  SDATA "[Aogon ]"--=capital A, ogonek-->
+<!ENTITY cacute SDATA "[cacute]"--=small c, acute accent-->
+<!ENTITY Cacute SDATA "[Cacute]"--=capital C, acute accent-->
+<!ENTITY ccaron SDATA "[ccaron]"--=small c, caron-->
+<!ENTITY Ccaron SDATA "[Ccaron]"--=capital C, caron-->
+<!ENTITY ccirc  SDATA "[ccirc ]"--=small c, circumflex accent-->
+<!ENTITY Ccirc  SDATA "[Ccirc ]"--=capital C, circumflex accent-->
+<!ENTITY cdot   SDATA "[cdot  ]"--=small c, dot above-->
+<!ENTITY Cdot   SDATA "[Cdot  ]"--=capital C, dot above-->
+<!ENTITY dcaron SDATA "[dcaron]"--=small d, caron-->
+<!ENTITY Dcaron SDATA "[Dcaron]"--=capital D, caron-->
+<!ENTITY dstrok SDATA "[dstrok]"--=small d, stroke-->
+<!ENTITY Dstrok SDATA "[Dstrok]"--=capital D, stroke-->
+<!ENTITY ecaron SDATA "[ecaron]"--=small e, caron-->
+<!ENTITY Ecaron SDATA "[Ecaron]"--=capital E, caron-->
+<!ENTITY edot   SDATA "[edot  ]"--=small e, dot above-->
+<!ENTITY Edot   SDATA "[Edot  ]"--=capital E, dot above-->
+<!ENTITY emacr  SDATA "[emacr ]"--=small e, macron-->
+<!ENTITY Emacr  SDATA "[Emacr ]"--=capital E, macron-->
+<!ENTITY eogon  SDATA "[eogon ]"--=small e, ogonek-->
+<!ENTITY Eogon  SDATA "[Eogon ]"--=capital E, ogonek-->
+<!ENTITY gacute SDATA "[gacute]"--=small g, acute accent-->
+<!ENTITY gbreve SDATA "[gbreve]"--=small g, breve-->
+<!ENTITY Gbreve SDATA "[Gbreve]"--=capital G, breve-->
+<!ENTITY Gcedil SDATA "[Gcedil]"--=capital G, cedilla-->
+<!ENTITY gcirc  SDATA "[gcirc ]"--=small g, circumflex accent-->
+<!ENTITY Gcirc  SDATA "[Gcirc ]"--=capital G, circumflex accent-->
+<!ENTITY gdot   SDATA "[gdot  ]"--=small g, dot above-->
+<!ENTITY Gdot   SDATA "[Gdot  ]"--=capital G, dot above-->
+<!ENTITY hcirc  SDATA "[hcirc ]"--=small h, circumflex accent-->
+<!ENTITY Hcirc  SDATA "[Hcirc ]"--=capital H, circumflex accent-->
+<!ENTITY hstrok SDATA "[hstrok]"--=small h, stroke-->
+<!ENTITY Hstrok SDATA "[Hstrok]"--=capital H, stroke-->
+<!ENTITY Idot   SDATA "[Idot  ]"--=capital I, dot above-->
+<!ENTITY Imacr  SDATA "[Imacr ]"--=capital I, macron-->
+<!ENTITY imacr  SDATA "[imacr ]"--=small i, macron-->
+<!ENTITY ijlig  SDATA "[ijlig ]"--=small ij ligature-->
+<!ENTITY IJlig  SDATA "[IJlig ]"--=capital IJ ligature-->
+<!ENTITY inodot SDATA "[inodot]"--=small i without dot-->
+<!ENTITY iogon  SDATA "[iogon ]"--=small i, ogonek-->
+<!ENTITY Iogon  SDATA "[Iogon ]"--=capital I, ogonek-->
+<!ENTITY itilde SDATA "[itilde]"--=small i, tilde-->
+<!ENTITY Itilde SDATA "[Itilde]"--=capital I, tilde-->
+<!ENTITY jcirc  SDATA "[jcirc ]"--=small j, circumflex accent-->
+<!ENTITY Jcirc  SDATA "[Jcirc ]"--=capital J, circumflex accent-->
+<!ENTITY kcedil SDATA "[kcedil]"--=small k, cedilla-->
+<!ENTITY Kcedil SDATA "[Kcedil]"--=capital K, cedilla-->
+<!ENTITY kgreen SDATA "[kgreen]"--=small k, Greenlandic-->
+<!ENTITY lacute SDATA "[lacute]"--=small l, acute accent-->
+<!ENTITY Lacute SDATA "[Lacute]"--=capital L, acute accent-->
+<!ENTITY lcaron SDATA "[lcaron]"--=small l, caron-->
+<!ENTITY Lcaron SDATA "[Lcaron]"--=capital L, caron-->
+<!ENTITY lcedil SDATA "[lcedil]"--=small l, cedilla-->
+<!ENTITY Lcedil SDATA "[Lcedil]"--=capital L, cedilla-->
+<!ENTITY lmidot SDATA "[lmidot]"--=small l, middle dot-->
+<!ENTITY Lmidot SDATA "[Lmidot]"--=capital L, middle dot-->
+<!ENTITY lstrok SDATA "[lstrok]"--=small l, stroke-->
+<!ENTITY Lstrok SDATA "[Lstrok]"--=capital L, stroke-->
+<!ENTITY nacute SDATA "[nacute]"--=small n, acute accent-->
+<!ENTITY Nacute SDATA "[Nacute]"--=capital N, acute accent-->
+<!ENTITY eng    SDATA "[eng   ]"--=small eng, Lapp-->
+<!ENTITY ENG    SDATA "[ENG   ]"--=capital ENG, Lapp-->
+<!ENTITY napos  SDATA "[napos ]"--=small n, apostrophe-->
+<!ENTITY ncaron SDATA "[ncaron]"--=small n, caron-->
+<!ENTITY Ncaron SDATA "[Ncaron]"--=capital N, caron-->
+<!ENTITY ncedil SDATA "[ncedil]"--=small n, cedilla-->
+<!ENTITY Ncedil SDATA "[Ncedil]"--=capital N, cedilla-->
+<!ENTITY odblac SDATA "[odblac]"--=small o, double acute accent-->
+<!ENTITY Odblac SDATA "[Odblac]"--=capital O, double acute accent-->
+<!ENTITY Omacr  SDATA "[Omacr ]"--=capital O, macron-->
+<!ENTITY omacr  SDATA "[omacr ]"--=small o, macron-->
+<!ENTITY oelig  SDATA "[oelig ]"--=small oe ligature-->
+<!ENTITY OElig  SDATA "[OElig ]"--=capital OE ligature-->
+<!ENTITY racute SDATA "[racute]"--=small r, acute accent-->
+<!ENTITY Racute SDATA "[Racute]"--=capital R, acute accent-->
+<!ENTITY rcaron SDATA "[rcaron]"--=small r, caron-->
+<!ENTITY Rcaron SDATA "[Rcaron]"--=capital R, caron-->
+<!ENTITY rcedil SDATA "[rcedil]"--=small r, cedilla-->
+<!ENTITY Rcedil SDATA "[Rcedil]"--=capital R, cedilla-->
+<!ENTITY sacute SDATA "[sacute]"--=small s, acute accent-->
+<!ENTITY Sacute SDATA "[Sacute]"--=capital S, acute accent-->
+<!ENTITY scaron SDATA "[scaron]"--=small s, caron-->
+<!ENTITY Scaron SDATA "[Scaron]"--=capital S, caron-->
+<!ENTITY scedil SDATA "[scedil]"--=small s, cedilla-->
+<!ENTITY Scedil SDATA "[Scedil]"--=capital S, cedilla-->
+<!ENTITY scirc  SDATA "[scirc ]"--=small s, circumflex accent-->
+<!ENTITY Scirc  SDATA "[Scirc ]"--=capital S, circumflex accent-->
+<!ENTITY tcaron SDATA "[tcaron]"--=small t, caron-->
+<!ENTITY Tcaron SDATA "[Tcaron]"--=capital T, caron-->
+<!ENTITY tcedil SDATA "[tcedil]"--=small t, cedilla-->
+<!ENTITY Tcedil SDATA "[Tcedil]"--=capital T, cedilla-->
+<!ENTITY tstrok SDATA "[tstrok]"--=small t, stroke-->
+<!ENTITY Tstrok SDATA "[Tstrok]"--=capital T, stroke-->
+<!ENTITY ubreve SDATA "[ubreve]"--=small u, breve-->
+<!ENTITY Ubreve SDATA "[Ubreve]"--=capital U, breve-->
+<!ENTITY udblac SDATA "[udblac]"--=small u, double acute accent-->
+<!ENTITY Udblac SDATA "[Udblac]"--=capital U, double acute accent-->
+<!ENTITY umacr  SDATA "[umacr ]"--=small u, macron-->
+<!ENTITY Umacr  SDATA "[Umacr ]"--=capital U, macron-->
+<!ENTITY uogon  SDATA "[uogon ]"--=small u, ogonek-->
+<!ENTITY Uogon  SDATA "[Uogon ]"--=capital U, ogonek-->
+<!ENTITY uring  SDATA "[uring ]"--=small u, ring-->
+<!ENTITY Uring  SDATA "[Uring ]"--=capital U, ring-->
+<!ENTITY utilde SDATA "[utilde]"--=small u, tilde-->
+<!ENTITY Utilde SDATA "[Utilde]"--=capital U, tilde-->
+<!ENTITY wcirc  SDATA "[wcirc ]"--=small w, circumflex accent-->
+<!ENTITY Wcirc  SDATA "[Wcirc ]"--=capital W, circumflex accent-->
+<!ENTITY ycirc  SDATA "[ycirc ]"--=small y, circumflex accent-->
+<!ENTITY Ycirc  SDATA "[Ycirc ]"--=capital Y, circumflex accent-->
+<!ENTITY Yuml   SDATA "[Yuml  ]"--=capital Y, dieresis or umlaut mark-->
+<!ENTITY zacute SDATA "[zacute]"--=small z, acute accent-->
+<!ENTITY Zacute SDATA "[Zacute]"--=capital Z, acute accent-->
+<!ENTITY zcaron SDATA "[zcaron]"--=small z, caron-->
+<!ENTITY Zcaron SDATA "[Zcaron]"--=capital Z, caron-->
+<!ENTITY zdot   SDATA "[zdot  ]"--=small z, dot above-->
+<!ENTITY Zdot   SDATA "[Zdot  ]"--=capital Z, dot above-->
diff --git a/docs/docbook/dbsgml/ent/ISOnum b/docs/docbook/dbsgml/ent/ISOnum
new file mode 100644 (file)
index 0000000..d7b41c3
--- /dev/null
@@ -0,0 +1,91 @@
+<!-- (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % ISOnum PUBLIC
+       "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN">
+     %ISOnum;
+-->
+<!ENTITY half   SDATA "[half  ]"--=fraction one-half-->
+<!ENTITY frac12 SDATA "[frac12]"--=fraction one-half-->
+<!ENTITY frac14 SDATA "[frac14]"--=fraction one-quarter-->
+<!ENTITY frac34 SDATA "[frac34]"--=fraction three-quarters-->
+<!ENTITY frac18 SDATA "[frac18]"--=fraction one-eighth-->
+<!ENTITY frac38 SDATA "[frac38]"--=fraction three-eighths-->
+<!ENTITY frac58 SDATA "[frac58]"--=fraction five-eighths-->
+<!ENTITY frac78 SDATA "[frac78]"--=fraction seven-eighths-->
+
+<!ENTITY sup1   SDATA "[sup1  ]"--=superscript one-->
+<!ENTITY sup2   SDATA "[sup2  ]"--=superscript two-->
+<!ENTITY sup3   SDATA "[sup3  ]"--=superscript three-->
+
+<!ENTITY plus   SDATA "[plus  ]"--=plus sign B:-- >
+<!ENTITY plusmn SDATA "[plusmn]"--/pm B: =plus-or-minus sign-->
+<!ENTITY lt     SDATA "[lt    ]"--=less-than sign R:-->
+<!ENTITY equals SDATA "[equals]"--=equals sign R:-->
+<!ENTITY gt     SDATA "[gt    ]"--=greater-than sign R:-->
+<!ENTITY divide SDATA "[divide]"--/div B: =divide sign-->
+<!ENTITY times  SDATA "[times ]"--/times B: =multiply sign-->
+
+<!ENTITY curren SDATA "[curren]"--=general currency sign-->
+<!ENTITY pound  SDATA "[pound ]"--=pound sign-->
+<!ENTITY dollar SDATA "[dollar]"--=dollar sign-->
+<!ENTITY cent   SDATA "[cent  ]"--=cent sign-->
+<!ENTITY yen    SDATA "[yen   ]"--/yen =yen sign-->
+
+<!ENTITY num    SDATA "[num   ]"--=number sign-->
+<!ENTITY percnt SDATA "[percnt]"--=percent sign-->
+<!ENTITY amp    SDATA "[amp   ]"--=ampersand-->
+<!ENTITY ast    SDATA "[ast   ]"--/ast B: =asterisk-->
+<!ENTITY commat SDATA "[commat]"--=commercial at-->
+<!ENTITY lsqb   SDATA "[lsqb  ]"--/lbrack O: =left square bracket-->
+<!ENTITY bsol   SDATA "[bsol  ]"--/backslash =reverse solidus-->
+<!ENTITY rsqb   SDATA "[rsqb  ]"--/rbrack C: =right square bracket-->
+<!ENTITY lcub   SDATA "[lcub  ]"--/lbrace O: =left curly bracket-->
+<!ENTITY horbar SDATA "[horbar]"--=horizontal bar-->
+<!ENTITY verbar SDATA "[verbar]"--/vert =vertical bar-->
+<!ENTITY rcub   SDATA "[rcub  ]"--/rbrace C: =right curly bracket-->
+<!ENTITY micro  SDATA "[micro ]"--=micro sign-->
+<!ENTITY ohm    SDATA "[ohm   ]"--=ohm sign-->
+<!ENTITY deg    SDATA "[deg   ]"--=degree sign-->
+<!ENTITY ordm   SDATA "[ordm  ]"--=ordinal indicator, masculine-->
+<!ENTITY ordf   SDATA "[ordf  ]"--=ordinal indicator, feminine-->
+<!ENTITY sect   SDATA "[sect  ]"--=section sign-->
+<!ENTITY para   SDATA "[para  ]"--=pilcrow (paragraph sign)-->
+<!ENTITY middot SDATA "[middot]"--/centerdot B: =middle dot-->
+<!ENTITY larr   SDATA "[larr  ]"--/leftarrow /gets A: =leftward arrow-->
+<!ENTITY rarr   SDATA "[rarr  ]"--/rightarrow /to A: =rightward arrow-->
+<!ENTITY uarr   SDATA "[uarr  ]"--/uparrow A: =upward arrow-->
+<!ENTITY darr   SDATA "[darr  ]"--/downarrow A: =downward arrow-->
+<!ENTITY copy   SDATA "[copy  ]"--=copyright sign-->
+<!ENTITY reg    SDATA "[reg   ]"--/circledR =registered sign-->
+<!ENTITY trade  SDATA "[trade ]"--=trade mark sign-->
+<!ENTITY brvbar SDATA "[brvbar]"--=broken (vertical) bar-->
+<!ENTITY not    SDATA "[not   ]"--/neg /lnot =not sign-->
+<!ENTITY sung   SDATA "[sung  ]"--=music note (sung text sign)-->
+
+<!ENTITY excl   SDATA "[excl  ]"--=exclamation mark-->
+<!ENTITY iexcl  SDATA "[iexcl ]"--=inverted exclamation mark-->
+<!ENTITY quot   SDATA "[quot  ]"--=quotation mark-->
+<!ENTITY apos   SDATA "[apos  ]"--=apostrophe-->
+<!ENTITY lpar   SDATA "[lpar  ]"--O: =left parenthesis-->
+<!ENTITY rpar   SDATA "[rpar  ]"--C: =right parenthesis-->
+<!ENTITY comma  SDATA "[comma ]"--P: =comma-->
+<!ENTITY lowbar SDATA "[lowbar]"--=low line-->
+<!ENTITY hyphen SDATA "[hyphen]"--=hyphen-->
+<!ENTITY period SDATA "[period]"--=full stop, period-->
+<!ENTITY sol    SDATA "[sol   ]"--=solidus-->
+<!ENTITY colon  SDATA "[colon ]"--/colon P:-->
+<!ENTITY semi   SDATA "[semi  ]"--=semicolon P:-->
+<!ENTITY quest  SDATA "[quest ]"--=question mark-->
+<!ENTITY iquest SDATA "[iquest]"--=inverted question mark-->
+<!ENTITY laquo  SDATA "[laquo ]"--=angle quotation mark, left-->
+<!ENTITY raquo  SDATA "[raquo ]"--=angle quotation mark, right-->
+<!ENTITY lsquo  SDATA "[lsquo ]"--=single quotation mark, left-->
+<!ENTITY rsquo  SDATA "[rsquo ]"--=single quotation mark, right-->
+<!ENTITY ldquo  SDATA "[ldquo ]"--=double quotation mark, left-->
+<!ENTITY rdquo  SDATA "[rdquo ]"--=double quotation mark, right-->
+<!ENTITY nbsp   SDATA "[nbsp  ]"--=no break (required) space-->
+<!ENTITY shy    SDATA "[shy   ]"--=soft hyphen-->
diff --git a/docs/docbook/dbsgml/ent/ISOpub b/docs/docbook/dbsgml/ent/ISOpub
new file mode 100644 (file)
index 0000000..c184973
--- /dev/null
@@ -0,0 +1,100 @@
+<!-- (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % ISOpub PUBLIC
+       "ISO 8879:1986//ENTITIES Publishing//EN">
+     %ISOpub;
+-->
+<!ENTITY emsp   SDATA "[emsp  ]"--=em space-->
+<!ENTITY ensp   SDATA "[ensp  ]"--=en space (1/2-em)-->
+<!ENTITY emsp13 SDATA "[emsp3 ]"--=1/3-em space-->
+<!ENTITY emsp14 SDATA "[emsp4 ]"--=1/4-em space-->
+<!ENTITY numsp  SDATA "[numsp ]"--=digit space (width of a number)-->
+<!ENTITY puncsp SDATA "[puncsp]"--=punctuation space (width of comma)-->
+<!ENTITY thinsp SDATA "[thinsp]"--=thin space (1/6-em)-->
+<!ENTITY hairsp SDATA "[hairsp]"--=hair space-->
+<!ENTITY mdash  SDATA "[mdash ]"--=em dash-->
+<!ENTITY ndash  SDATA "[ndash ]"--=en dash-->
+<!ENTITY dash   SDATA "[dash  ]"--=hyphen (true graphic)-->
+<!ENTITY blank  SDATA "[blank ]"--=significant blank symbol-->
+<!ENTITY hellip SDATA "[hellip]"--=ellipsis (horizontal)-->
+<!ENTITY nldr   SDATA "[nldr  ]"--=double baseline dot (en leader)-->
+<!ENTITY frac13 SDATA "[frac13]"--=fraction one-third-->
+<!ENTITY frac23 SDATA "[frac23]"--=fraction two-thirds-->
+<!ENTITY frac15 SDATA "[frac15]"--=fraction one-fifth-->
+<!ENTITY frac25 SDATA "[frac25]"--=fraction two-fifths-->
+<!ENTITY frac35 SDATA "[frac35]"--=fraction three-fifths-->
+<!ENTITY frac45 SDATA "[frac45]"--=fraction four-fifths-->
+<!ENTITY frac16 SDATA "[frac16]"--=fraction one-sixth-->
+<!ENTITY frac56 SDATA "[frac56]"--=fraction five-sixths-->
+<!ENTITY incare SDATA "[incare]"--=in-care-of symbol-->
+<!ENTITY block  SDATA "[block ]"--=full block-->
+<!ENTITY uhblk  SDATA "[uhblk ]"--=upper half block-->
+<!ENTITY lhblk  SDATA "[lhblk ]"--=lower half block-->
+<!ENTITY blk14  SDATA "[blk14 ]"--=25% shaded block-->
+<!ENTITY blk12  SDATA "[blk12 ]"--=50% shaded block-->
+<!ENTITY blk34  SDATA "[blk34 ]"--=75% shaded block-->
+<!ENTITY marker SDATA "[marker]"--=histogram marker-->
+<!ENTITY cir    SDATA "[cir   ]"--/circ B: =circle, open-->
+<!ENTITY squ    SDATA "[squ   ]"--=square, open-->
+<!ENTITY rect   SDATA "[rect  ]"--=rectangle, open-->
+<!ENTITY utri   SDATA "[utri  ]"--/triangle =up triangle, open-->
+<!ENTITY dtri   SDATA "[dtri  ]"--/triangledown =down triangle, open-->
+<!ENTITY star   SDATA "[star  ]"--=star, open-->
+<!ENTITY bull   SDATA "[bull  ]"--/bullet B: =round bullet, filled-->
+<!ENTITY squf   SDATA "[squf  ]"--/blacksquare =sq bullet, filled-->
+<!ENTITY utrif  SDATA "[utrif ]"--/blacktriangle =up tri, filled-->
+<!ENTITY dtrif  SDATA "[dtrif ]"--/blacktriangledown =dn tri, filled-->
+<!ENTITY ltrif  SDATA "[ltrif ]"--/blacktriangleleft R: =l tri, filled-->
+<!ENTITY rtrif  SDATA "[rtrif ]"--/blacktriangleright R: =r tri, filled-->
+<!ENTITY clubs  SDATA "[clubs ]"--/clubsuit =club suit symbol-->
+<!ENTITY diams  SDATA "[diams ]"--/diamondsuit =diamond suit symbol-->
+<!ENTITY hearts SDATA "[hearts]"--/heartsuit =heart suit symbol-->
+<!ENTITY spades SDATA "[spades]"--/spadesuit =spades suit symbol-->
+<!ENTITY malt   SDATA "[malt  ]"--/maltese =maltese cross-->
+<!ENTITY dagger SDATA "[dagger]"--/dagger B: =dagger-->
+<!ENTITY Dagger SDATA "[Dagger]"--/ddagger B: =double dagger-->
+<!ENTITY check  SDATA "[check ]"--/checkmark =tick, check mark-->
+<!ENTITY cross  SDATA "[ballot]"--=ballot cross-->
+<!ENTITY sharp  SDATA "[sharp ]"--/sharp =musical sharp-->
+<!ENTITY flat   SDATA "[flat  ]"--/flat =musical flat-->
+<!ENTITY male   SDATA "[male  ]"--=male symbol-->
+<!ENTITY female SDATA "[female]"--=female symbol-->
+<!ENTITY phone  SDATA "[phone ]"--=telephone symbol-->
+<!ENTITY telrec SDATA "[telrec]"--=telephone recorder symbol-->
+<!ENTITY copysr SDATA "[copysr]"--=sound recording copyright sign-->
+<!ENTITY caret  SDATA "[caret ]"--=caret (insertion mark)-->
+<!ENTITY lsquor SDATA "[lsquor]"--=rising single quote, left (low)-->
+<!ENTITY ldquor SDATA "[ldquor]"--=rising dbl quote, left (low)-->
+
+<!ENTITY fflig  SDATA "[fflig ]"--small ff ligature-->
+<!ENTITY filig  SDATA "[filig ]"--small fi ligature-->
+<!ENTITY fjlig  SDATA "[fjlig ]"--small fj ligature-->
+<!ENTITY ffilig SDATA "[ffilig]"--small ffi ligature-->
+<!ENTITY ffllig SDATA "[ffllig]"--small ffl ligature-->
+<!ENTITY fllig  SDATA "[fllig ]"--small fl ligature-->
+
+<!ENTITY mldr   SDATA "[mldr  ]"--em leader-->
+<!ENTITY rdquor SDATA "[rdquor]"--rising dbl quote, right (high)-->
+<!ENTITY rsquor SDATA "[rsquor]"--rising single quote, right (high)-->
+<!ENTITY vellip SDATA "[vellip]"--vertical ellipsis-->
+
+<!ENTITY hybull SDATA "[hybull]"--rectangle, filled (hyphen bullet)-->
+<!ENTITY loz    SDATA "[loz   ]"--/lozenge - lozenge or total mark-->
+<!ENTITY lozf   SDATA "[lozf  ]"--/blacklozenge - lozenge, filled-->
+<!ENTITY ltri   SDATA "[ltri  ]"--/triangleleft B: l triangle, open-->
+<!ENTITY rtri   SDATA "[rtri  ]"--/triangleright B: r triangle, open-->
+<!ENTITY starf  SDATA "[starf ]"--/bigstar - star, filled-->
+
+<!ENTITY natur  SDATA "[natur ]"--/natural - music natural-->
+<!ENTITY rx     SDATA "[rx    ]"--pharmaceutical prescription (Rx)-->
+<!ENTITY sext   SDATA "[sext  ]"--sextile (6-pointed star)-->
+
+<!ENTITY target SDATA "[target]"--register mark or target-->
+<!ENTITY dlcrop SDATA "[dlcrop]"--downward left crop mark -->
+<!ENTITY drcrop SDATA "[drcrop]"--downward right crop mark -->
+<!ENTITY ulcrop SDATA "[ulcrop]"--upward left crop mark -->
+<!ENTITY urcrop SDATA "[urcrop]"--upward right crop mark -->
diff --git a/docs/docbook/dbsgml/ent/ISOtech b/docs/docbook/dbsgml/ent/ISOtech
new file mode 100644 (file)
index 0000000..cbda344
--- /dev/null
@@ -0,0 +1,73 @@
+<!-- (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % ISOtech PUBLIC
+       "ISO 8879:1986//ENTITIES General Technical//EN">
+     %ISOtech;
+-->
+<!ENTITY aleph  SDATA "[aleph ]"--/aleph =aleph, Hebrew-->
+<!ENTITY and    SDATA "[and   ]"--/wedge /land B: =logical and-->
+<!ENTITY ang90  SDATA "[ang90 ]"--=right (90 degree) angle-->
+<!ENTITY angsph SDATA "[angsph]"--/sphericalangle =angle-spherical-->
+<!ENTITY ap     SDATA "[ap    ]"--/approx R: =approximate-->
+<!ENTITY becaus SDATA "[becaus]"--/because R: =because-->
+<!ENTITY bottom SDATA "[bottom]"--/bot B: =perpendicular-->
+<!ENTITY cap    SDATA "[cap   ]"--/cap B: =intersection-->
+<!ENTITY cong   SDATA "[cong  ]"--/cong R: =congruent with-->
+<!ENTITY conint SDATA "[conint]"--/oint L: =contour integral operator-->
+<!ENTITY cup    SDATA "[cup   ]"--/cup B: =union or logical sum-->
+<!ENTITY equiv  SDATA "[equiv ]"--/equiv R: =identical with-->
+<!ENTITY exist  SDATA "[exist ]"--/exists =at least one exists-->
+<!ENTITY forall SDATA "[forall]"--/forall =for all-->
+<!ENTITY fnof   SDATA "[fnof  ]"--=function of (italic small f)-->
+<!ENTITY ge     SDATA "[ge    ]"--/geq /ge R: =greater-than-or-equal-->
+<!ENTITY iff    SDATA "[iff   ]"--/iff =if and only if-->
+<!ENTITY infin  SDATA "[infin ]"--/infty =infinity-->
+<!ENTITY int    SDATA "[int   ]"--/int L: =integral operator-->
+<!ENTITY isin   SDATA "[isin  ]"--/in R: =set membership-->
+<!ENTITY lang   SDATA "[lang  ]"--/langle O: =left angle bracket-->
+<!ENTITY lArr   SDATA "[lArr  ]"--/Leftarrow A: =is implied by-->
+<!ENTITY le     SDATA "[le    ]"--/leq /le R: =less-than-or-equal-->
+<!ENTITY minus  SDATA "[minus ]"--B: =minus sign-->
+<!ENTITY mnplus SDATA "[mnplus]"--/mp B: =minus-or-plus sign-->
+<!ENTITY nabla  SDATA "[nabla ]"--/nabla =del, Hamilton operator-->
+<!ENTITY ne     SDATA "[ne    ]"--/ne /neq R: =not equal-->
+<!ENTITY ni     SDATA "[ni    ]"--/ni /owns R: =contains-->
+<!ENTITY or     SDATA "[or    ]"--/vee /lor B: =logical or-->
+<!ENTITY par    SDATA "[par   ]"--/parallel R: =parallel-->
+<!ENTITY part   SDATA "[part  ]"--/partial =partial differential-->
+<!ENTITY permil SDATA "[permil]"--=per thousand-->
+<!ENTITY perp   SDATA "[perp  ]"--/perp R: =perpendicular-->
+<!ENTITY prime  SDATA "[prime ]"--/prime =prime or minute-->
+<!ENTITY Prime  SDATA "[Prime ]"--=double prime or second-->
+<!ENTITY prop   SDATA "[prop  ]"--/propto R: =is proportional to-->
+<!ENTITY radic  SDATA "[radic ]"--/surd =radical-->
+<!ENTITY rang   SDATA "[rang  ]"--/rangle C: =right angle bracket-->
+<!ENTITY rArr   SDATA "[rArr  ]"--/Rightarrow A: =implies-->
+<!ENTITY sim    SDATA "[sim   ]"--/sim R: =similar-->
+<!ENTITY sime   SDATA "[sime  ]"--/simeq R: =similar, equals-->
+<!ENTITY square SDATA "[square]"--/square B: =square-->
+<!ENTITY sub    SDATA "[sub   ]"--/subset R: =subset or is implied by-->
+<!ENTITY sube   SDATA "[sube  ]"--/subseteq R: =subset, equals-->
+<!ENTITY sup    SDATA "[sup   ]"--/supset R: =superset or implies-->
+<!ENTITY supe   SDATA "[supe  ]"--/supseteq R: =superset, equals-->
+<!ENTITY there4 SDATA "[there4]"--/therefore R: =therefore-->
+<!ENTITY Verbar SDATA "[Verbar]"--/Vert =dbl vertical bar-->
+
+<!ENTITY angst  SDATA "[angst ]"--Angstrom =capital A, ring-->
+<!ENTITY bernou SDATA "[bernou]"--Bernoulli function (script capital B)-->
+<!ENTITY compfn SDATA "[compfn]"--B: composite function (small circle)-->
+<!ENTITY Dot    SDATA "[Dot   ]"--=dieresis or umlaut mark-->
+<!ENTITY DotDot SDATA "[DotDot]"--four dots above-->
+<!ENTITY hamilt SDATA "[hamilt]"--Hamiltonian (script capital H)-->
+<!ENTITY lagran SDATA "[lagran]"--Lagrangian (script capital L)-->
+<!ENTITY lowast SDATA "[lowast]"--low asterisk-->
+<!ENTITY notin  SDATA "[notin ]"--N: negated set membership-->
+<!ENTITY order  SDATA "[order ]"--order of (script small o)-->
+<!ENTITY phmmat SDATA "[phmmat]"--physics M-matrix (script capital M)-->
+<!ENTITY tdot   SDATA "[tdot  ]"--three dots above-->
+<!ENTITY tprime SDATA "[tprime]"--triple prime-->
+<!ENTITY wedgeq SDATA "[wedgeq]"--R: corresponds to (wedge, equals)-->
diff --git a/docs/docbook/dbsgml/readme.txt b/docs/docbook/dbsgml/readme.txt
new file mode 100644 (file)
index 0000000..52d3f9f
--- /dev/null
@@ -0,0 +1,12 @@
+README for DocBook V4.1
+
+This is DocBook V4.1, released 19 June 2000.
+
+See 40chg.txt for information about what has changed since DocBook 3.1.
+
+For more information about DocBook, please see
+
+  http://www.oasis-open.org/docbook/
+
+Please send all questions, comments, concerns, and bug reports to the
+DocBook mailing list: docbook@lists.oasis-open.org
index 019b073b5117e6db6fb3e867d01d9fe7ab3d1f9a..388cd5cf9b70aa11ea325873568b2eed0f255b7b 100644 (file)
@@ -1,9 +1,8 @@
 !==
-!== docbook.txt for Samba HEAD
+!== docbook.txt for Samba 2.2.0 release
 !==
 !== Author:    David Bannon, D.Bannon@latrobe.edu.au  November, 2000
 !== Updates:   Gerald (Jerry) Carter, jerry@samba.org, Feb. 2001
-!== Updates:   Jelmer Vernooij, jelmer@samba.org,              Aug, 2002
 
 What are DocBook documents doing in the Samba Distribution ?
 -----------------------------------------------------------
@@ -45,17 +44,93 @@ as the following autogenerated formats
   * man pages
   * HTML
   * ASCII text (where appropriate)
-  * PDF
 
 
 The Tools
 ---------
 
-To generate the docs, you need to have the following packages installed:
+[
+ addendum: For a good general overview of installing the tools
+ needed for generating files from SGML/DocBook source, refer
+ to the DocBook-Install mini HOWTO at
+ http://www.ibiblio.org/pub/Linux/docs/HOWTO/mini/DocBook-Install
 
-* docbook-utils
-* htmldoc
+ While the above link is to a Linux HOWTO, the tools can be installed 
+ on almost any UNIX platform.
+
+ David's original notes follow below:
+]
+
+Any sgml document needs to be referred to a suitable style sheet
+(describing syntax) and other sheets that tell the translating programmes
+how to do the translations. The list of necessary 'included files is a
+bit messy but once installed is pretty easy.
+
+On one of my RedHat 6.2 systems I installed the following:
+* sgml-common (as an rpm)
+* docbook  (as an rpm)
+* stylesheets  (as an rpm)
+* jade  (as an rpm)
+* Docbook 4.1 from http://docbook.org
+* DSSSL 157 from http://nwalsh.com/docbook/dsssl/ 
+
+There are several downloadable descriptions of the DocBook syntax at the
+web sites mentioned above. Note that a lot of the docs only talk about
+version 3.1 with 4.1 as an add-on.
+
+In either case you will need to include in the html/docbook.dsl and most
+likely a couple of defines to achieve a suitable output. I made a
+local dsl file that I called html.dsl that looks like this :
+
+<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" [
+<!ENTITY dbstyle SYSTEM "/usr/lib/sgml/dsssl-157/docbook/html/docbook.dsl" 
+CDATA DSSSL>
+]>
+
+<style-sheet>
+<style-specification use="docbook">
+<style-specification-body>
+
+(define nochunks #t)                   ;; Dont make multiple pages
+(define rootchunk #t)                  ;; Do make a 'root' page
+(define %use-id-as-filename% #t)       ;; Use book id as filename      
+(define %html-ext% ".html")            ;; give it a proper html extension
+
+</style-specification-body>
+</style-specification>
+<external-specification id="docbook" document="dbstyle">
+</style-sheet>
+
+Note the top block that refers to where the dsssl-157 style sheets are
+installed, if you don\92t put them there make sure you edit the file.
+
+To use this stylesheet, have it in your working directory along with your
+sgml files.  Jade does the actual conversion to html, call it like this :
+
+jade -t sgml -d html.dsl stuff.sgml
+
+To create the text version run the html through lynx :
+
+Lynx  -dump  -nolist  stuff.html  >  stuff.txt
+
+These instructions are crude by might help someone get going. Please feel
+free to contact me if you have any questions or if you can correct any one
+of the many mistakes I must have made above.
+
+David
+
+==========================================================================
 
 This directory now contains a ./configure script and Makefile to 
-support the automated building of man pages (including HTML versions), and 
-the building of the Samba-HOWTO-Collection (HTML,PDF,PS,Text versions).
+support the automated building of man pages (including HTML versions).
+The DocBook V4.1 DTD and ISO entity files have also been included in CVS
+to make sure we are all working from the same plate.
+
+The SGML_CATALOG_FILES environment variable should be set as follows
+(this assumes you have a working local installation of jade and
+Norman's Walsh's DSSSL stylesheets):
+
+  export SGML_CATALOG_FILES=$SGML_CATALOG_FILES:./dbsgml/catalog
+
+
+--jerry
index 213275b7ccb66475f381d6a8866cf5940388bb35..3f6023d16fa85234fee25f92397446d816ae72dc 100644 (file)
@@ -29,7 +29,6 @@
                <arg choice="opt">-x</arg>      
                <arg choice="opt">-i passdb-backend</arg>       
                <arg choice="opt">-e passdb-backend</arg>   
-               <arg choice="opt">-b passdb-backend</arg>
                <arg choice="opt">-D debuglevel</arg>
        </cmdsynopsis>
 </refsynopsisdiv>
 
                <varlistentry>
                <term>-i passdb-backend</term>
-               <listitem><para>Use a different passdb backend to retrieve users than the one specified in smb.conf. Can be used to import data into your 
-               local user database.</para>
+               <listitem><para>Use a different passdb backend to retrieve users than the one specified in smb.conf.</para>
 
                <para>This option will ease migration from one passdb backend to another.
                </para>
 
-               <para>Example: <command>pdbedit -i smbpasswd:/etc/smbpasswd.old</command>
+               <para>Example: <command>pdbedit -i smbpasswd:/etc/smbpasswd.old -e tdbsam:/etc/samba/passwd.tdb</command>
                </para>
                </listitem>
                </varlistentry>
                <para>Example: <command>pdbedit -e smbpasswd:/root/samba-users.backup</command></para>
                </listitem>
                </varlistentry>
-
-               <varlistentry>
-               <term>-b passdb-backend</term>
-               <listitem><para>Use a different default passdb backend. </para>
-
-               <para>Example: <command>pdbedit -b xml:/root/pdb-backup.xml -l</command></para>
-               </listitem>
-               </varlistentry>
        </variablelist>
 </refsect1>
 
index 89ffa0934a36c516167c27c5a342bcf87c85028d..1e713147c99feb91707196b584f435604858b8f7 100644 (file)
                to change your config based on what the client calls you. Your 
                server can have a "dual personality".</para>
 
-                <para>Note that this parameter is not available when Samba listens
+                <para>Note that this paramater is not available when Samba listens
                 on port 445, as clients no longer send this information </para>
                 </listitem>
 
 
        <itemizedlist>
                <listitem><para><link linkend="ABORTSHUTDOWNSCRIPT"><parameter>abort shutdown script</parameter></link></para></listitem>
-               <listitem><para><link linkend="ADDGROUPSCRIPT"><parameter>add group script</parameter></link></para></listitem>
-               <listitem><para><link linkend="ADDPRINTERCOMMAND"><parameter>addprinter command</parameter></link></para></listitem>
+               <listitem><para><link linkend="ADDPRINTERCOMMAND"><parameter>add printer command</parameter></link></para></listitem>
                <listitem><para><link linkend="ADDSHARECOMMAND"><parameter>add share command</parameter></link></para></listitem>
                <listitem><para><link linkend="ADDUSERSCRIPT"><parameter>add user script</parameter></link></para></listitem>
-               <listitem><para><link linkend="ADDUSERTOGROUPSCRIPT"><parameter>add user to group script</parameter></link></para></listitem>
                <listitem><para><link linkend="ADDMACHINESCRIPT"><parameter>add machine script</parameter></link></para></listitem>
-               <listitem><para><link linkend="DELETEGROUPSCRIPT"><parameter>delete group script</parameter></link></para></listitem>
-               <listitem><para><link linkend="ADSSERVER"><parameter>ads server</parameter></link></para></listitem>
                <listitem><para><link linkend="ALGORITHMICRIDBASE"><parameter>algorithmic rid base</parameter></link></para></listitem>
                <listitem><para><link linkend="ALLOWTRUSTEDDOMAINS"><parameter>allow trusted domains</parameter></link></para></listitem>
                <listitem><para><link linkend="ANNOUNCEAS"><parameter>announce as</parameter></link></para></listitem>
                <listitem><para><link linkend="DEBUGLEVEL"><parameter>debuglevel</parameter></link></para></listitem>
                <listitem><para><link linkend="DEFAULT"><parameter>default</parameter></link></para></listitem>
                <listitem><para><link linkend="DEFAULTSERVICE"><parameter>default service</parameter></link></para></listitem>
-               <listitem><para><link linkend="DELETEPRINTERCOMMAND"><parameter>deleteprinter command</parameter></link></para></listitem>
+               <listitem><para><link linkend="DELETEPRINTERCOMMAND"><parameter>delete printer command</parameter></link></para></listitem>
                <listitem><para><link linkend="DELETESHARECOMMAND"><parameter>delete share command</parameter></link></para></listitem>
                <listitem><para><link linkend="DELETEUSERSCRIPT"><parameter>delete user script</parameter></link></para></listitem>
-               <listitem><para><link linkend="DELETEUSERFROMGROUPSCRIPT"><parameter>delete user from group script</parameter></link></para></listitem>
                <listitem><para><link linkend="DFREECOMMAND"><parameter>dfree command</parameter></link></para></listitem>
-               <listitem><para><link linkend="DISABLENETBIOS"><parameter>disable netbios</parameter></link></para></listitem>
                <listitem><para><link linkend="DISABLESPOOLSS"><parameter>disable spoolss</parameter></link></para></listitem>
-               <listitem><para><link linkend="DISPLAYCHARSET"><parameter>display charset</parameter></link></para></listitem>
                <listitem><para><link linkend="DNSPROXY"><parameter>dns proxy</parameter></link></para></listitem>
                <listitem><para><link linkend="DOMAINADMINGROUP"><parameter>domain admin group</parameter></link></para></listitem>
                <listitem><para><link linkend="DOMAINGUESTGROUP"><parameter>domain guest group</parameter></link></para></listitem>
                <listitem><para><link linkend="DOMAINLOGONS"><parameter>domain logons</parameter></link></para></listitem>
                <listitem><para><link linkend="DOMAINMASTER"><parameter>domain master</parameter></link></para></listitem>
-               <listitem><para><link linkend="DOSCHARSET"><parameter>dos charset</parameter></link></para></listitem>
                <listitem><para><link linkend="ENCRYPTPASSWORDS"><parameter>encrypt passwords</parameter></link></para></listitem>
                <listitem><para><link linkend="ENHANCEDBROWSING"><parameter>enhanced browsing</parameter></link></para></listitem>
                <listitem><para><link linkend="ENUMPORTSCOMMAND"><parameter>enumports command</parameter></link></para></listitem>
                <listitem><para><link linkend="GETWDCACHE"><parameter>getwd cache</parameter></link></para></listitem>
                <listitem><para><link linkend="HIDELOCALUSERS"><parameter>hide local users</parameter></link></para></listitem>
                <listitem><para><link linkend="HIDEUNREADABLE"><parameter>hide unreadable</parameter></link></para></listitem>
-               <listitem><para><link linkend="HIDEUNWRITEABLEFILES"><parameter>hide unwriteable files</parameter></link></para></listitem>
                <listitem><para><link linkend="HOMEDIRMAP"><parameter>homedir map</parameter></link></para></listitem>
                <listitem><para><link linkend="HOSTMSDFS"><parameter>host msdfs</parameter></link></para></listitem>
-               <listitem><para><link linkend="HOSTNAMELOOKUPS"><parameter>hostname lookups</parameter></link></para></listitem>
                <listitem><para><link linkend="HOSTSEQUIV"><parameter>hosts equiv</parameter></link></para></listitem>
                <listitem><para><link linkend="INTERFACES"><parameter>interfaces</parameter></link></para></listitem>
                <listitem><para><link linkend="KEEPALIVE"><parameter>keepalive</parameter></link></para></listitem>
                <listitem><para><link linkend="MINPASSWORDLENGTH"><parameter>min password length</parameter></link></para></listitem>
                <listitem><para><link linkend="MINPROTOCOL"><parameter>min protocol</parameter></link></para></listitem>
                <listitem><para><link linkend="MINWINSTTL"><parameter>min wins ttl</parameter></link></para></listitem>
-               <listitem><para><link linkend="NAMECACHETIMEOUT"><parameter>name cache timeout</parameter></link></para></listitem>
                <listitem><para><link linkend="NAMERESOLVEORDER"><parameter>name resolve order</parameter></link></para></listitem>
                <listitem><para><link linkend="NETBIOSALIASES"><parameter>netbios aliases</parameter></link></para></listitem>
                <listitem><para><link linkend="NETBIOSNAME"><parameter>netbios name</parameter></link></para></listitem>
                <listitem><para><link linkend="NETBIOSSCOPE"><parameter>netbios scope</parameter></link></para></listitem>
                <listitem><para><link linkend="NISHOMEDIR"><parameter>nis homedir</parameter></link></para></listitem>
-               <listitem><para><link linkend="NTLMAUTH"><parameter>ntlm auth</parameter></link></para></listitem>
                <listitem><para><link linkend="NONUNIXACCOUNTRANGE"><parameter>non unix account range</parameter></link></para></listitem>
                <listitem><para><link linkend="NTPIPESUPPORT"><parameter>nt pipe support</parameter></link></para></listitem>
                <listitem><para><link linkend="NTSTATUSSUPPORT"><parameter>nt status support</parameter></link></para></listitem>
                <listitem><para><link linkend="OS2DRIVERMAP"><parameter>os2 driver map</parameter></link></para></listitem>
                <listitem><para><link linkend="PAMPASSWORDCHANGE"><parameter>pam password change</parameter></link></para></listitem>
                <listitem><para><link linkend="PANICACTION"><parameter>panic action</parameter></link></para></listitem>
-               <listitem><para><link linkend="PARANOIDSERVERSECURITY"><parameter>paranoid server security</parameter></link></para></listitem>
                <listitem><para><link linkend="PASSDBBACKEND"><parameter>passdb backend</parameter></link></para></listitem>
                <listitem><para><link linkend="PASSWDCHAT"><parameter>passwd chat</parameter></link></para></listitem>
                <listitem><para><link linkend="PASSWDCHATDEBUG"><parameter>passwd chat debug</parameter></link></para></listitem>
                <listitem><para><link linkend="READBMPX"><parameter>read bmpx</parameter></link></para></listitem>
                <listitem><para><link linkend="READRAW"><parameter>read raw</parameter></link></para></listitem>
                <listitem><para><link linkend="READSIZE"><parameter>read size</parameter></link></para></listitem>
-               <listitem><para><link linkend="REALM"><parameter>realm</parameter></link></para></listitem>
                <listitem><para><link linkend="REMOTEANNOUNCE"><parameter>remote announce</parameter></link></para></listitem>
                <listitem><para><link linkend="REMOTEBROWSESYNC"><parameter>remote browse sync</parameter></link></para></listitem>
                <listitem><para><link linkend="RESTRICTANONYMOUS"><parameter>restrict anonymous</parameter></link></para></listitem>
                <listitem><para><link linkend="SHOWADDPRINTERWIZARD"><parameter>show add printer wizard</parameter></link></para></listitem>
                <listitem><para><link linkend="SHUTDOWNSCRIPT"><parameter>shutdown script</parameter></link></para></listitem>
                <listitem><para><link linkend="SMBPASSWDFILE"><parameter>smb passwd file</parameter></link></para></listitem>
-               <listitem><para><link linkend="SMBPORTS"><parameter>smb ports</parameter></link></para></listitem>
                <listitem><para><link linkend="SOCKETADDRESS"><parameter>socket address</parameter></link></para></listitem>
                <listitem><para><link linkend="SOCKETOPTIONS"><parameter>socket options</parameter></link></para></listitem>
                <listitem><para><link linkend="SOURCEENVIRONMENT"><parameter>source environment</parameter></link></para></listitem>
                <listitem><para><link linkend="TIMESERVER"><parameter>time server</parameter></link></para></listitem>
                <listitem><para><link linkend="TIMESTAMPLOGS"><parameter>timestamp logs</parameter></link></para></listitem>
                <listitem><para><link linkend="TOTALPRINTJOBS"><parameter>total print jobs</parameter></link></para></listitem>
-               <listitem><para><link linkend="UNICODE"><parameter>unicode</parameter></link></para></listitem>
-               <listitem><para><link linkend="UNIXCHARSET"><parameter>unix charset</parameter></link></para></listitem>
                <listitem><para><link linkend="UNIXEXTENSIONS"><parameter>unix extensions</parameter></link></para></listitem>
                <listitem><para><link linkend="UNIXPASSWORDSYNC"><parameter>unix password sync</parameter></link></para></listitem>
                <listitem><para><link linkend="UPDATEENCRYPTED"><parameter>update encrypted</parameter></link></para></listitem>
                <listitem><para><link linkend="USERNAMEMAP"><parameter>username map</parameter></link></para></listitem>
                <listitem><para><link linkend="UTMP"><parameter>utmp</parameter></link></para></listitem>
                <listitem><para><link linkend="UTMPDIRECTORY"><parameter>utmp directory</parameter></link></para></listitem>
-               <listitem><para><link linkend="WTMPDIRECTORY"><parameter>wtmp directory</parameter></link></para></listitem>
                <listitem><para><link linkend="WINBINDCACHETIME"><parameter>winbind cache time</parameter></link></para></listitem>
                <listitem><para><link linkend="WINBINDENUMUSERS"><parameter>winbind enum users</parameter></link></para></listitem>
                <listitem><para><link linkend="WINBINDENUMGROUPS"><parameter>winbind enum groups</parameter></link></para></listitem>
                <listitem><para><link linkend="WINBINDUID"><parameter>winbind uid</parameter></link></para></listitem>
                <listitem><para><link linkend="WINBINDUSEDEFAULTDOMAIN"><parameter>winbind use default domain</parameter></link></para></listitem>
                <listitem><para><link linkend="WINSHOOK"><parameter>wins hook</parameter></link></para></listitem>
-               <listitem><para><link linkend="WINSPARTNERS"><parameter>wins partners</parameter></link></para></listitem>
                <listitem><para><link linkend="WINSPROXY"><parameter>wins proxy</parameter></link></para></listitem>
                <listitem><para><link linkend="WINSSERVER"><parameter>wins server</parameter></link></para></listitem>
                <listitem><para><link linkend="WINSSUPPORT"><parameter>wins support</parameter></link></para></listitem>
                <listitem><para><link linkend="ALLOWHOSTS"><parameter>allow hosts</parameter></link></para></listitem>
                <listitem><para><link linkend="AVAILABLE"><parameter>available</parameter></link></para></listitem>
                <listitem><para><link linkend="BLOCKINGLOCKS"><parameter>blocking locks</parameter></link></para></listitem>
-<listitem><para><link linkend="BLOCKSIZE"><parameter>block size</parameter></link></para></listitem>
                <listitem><para><link linkend="BROWSABLE"><parameter>browsable</parameter></link></para></listitem>
                <listitem><para><link linkend="BROWSEABLE"><parameter>browseable</parameter></link></para></listitem>
                <listitem><para><link linkend="CASESENSITIVE"><parameter>case sensitive</parameter></link></para></listitem>
                <listitem><para><link linkend="MANGLEDMAP"><parameter>mangled map</parameter></link></para></listitem>
                <listitem><para><link linkend="MANGLEDNAMES"><parameter>mangled names</parameter></link></para></listitem>
                <listitem><para><link linkend="MANGLINGCHAR"><parameter>mangling char</parameter></link></para></listitem>
-               <listitem><para><link linkend="MANGLINGMETHOD"><parameter>mangling method</parameter></link></para></listitem>
                <listitem><para><link linkend="MAPARCHIVE"><parameter>map archive</parameter></link></para></listitem>
                <listitem><para><link linkend="MAPHIDDEN"><parameter>map hidden</parameter></link></para></listitem>
                <listitem><para><link linkend="MAPSYSTEM"><parameter>map system</parameter></link></para></listitem>
                <listitem><para><link linkend="VALIDUSERS"><parameter>valid users</parameter></link></para></listitem>
                <listitem><para><link linkend="VETOFILES"><parameter>veto files</parameter></link></para></listitem>
                <listitem><para><link linkend="VETOOPLOCKFILES"><parameter>veto oplock files</parameter></link></para></listitem>
-               <listitem><para><link linkend="VFSPATH"><parameter>vfs path</parameter></link></para></listitem>
                <listitem><para><link linkend="VFSOBJECT"><parameter>vfs object</parameter></link></para></listitem>
                <listitem><para><link linkend="VFSOPTIONS"><parameter>vfs options</parameter></link></para></listitem>
                <listitem><para><link linkend="VOLUME"><parameter>volume</parameter></link></para></listitem>
                </listitem>
                </varlistentry>
 
+
                <varlistentry>
-               <term><anchor id="ADDPRINTERCOMMAND">addprinter command (G)</term>
+               <term><anchor id="ADDPRINTERCOMMAND">add printer command (G)</term>
                <listitem><para>With the introduction of MS-RPC based printing
                support for Windows NT/2000 clients in Samba 2.2, The MS Add
                Printer Wizard (APW) icon is now also available in the 
                shared by <ulink url="smbd.8.html"><command>smbd(8)</command>
                </ulink>.</para>
                
-               <para>The <parameter>addprinter command</parameter> is
+               <para>The <parameter>add printer command</parameter> is
                automatically invoked with the following parameter (in 
                order:</para>
                
                only.  The remaining fields in the structure are generated from answers
                to the APW questions.</para>
                
-               <para>Once the <parameter>addprinter command</parameter> has 
+               <para>Once the <parameter>add printer command</parameter> has 
                been executed, <command>smbd</command> will reparse the <filename>
                smb.conf</filename> to determine if the share defined by the APW
                exists.  If the sharename is still invalid, then <command>smbd
                </command> will return an ACCESS_DENIED error to the client.</para>
                
                <para>See also <link linkend="DELETEPRINTERCOMMAND"><parameter>
-               deleteprinter command</parameter></link>, <link 
+               delete printer command</parameter></link>, <link 
                linkend="printing"><parameter>printing</parameter></link>,
                <link linkend="SHOWADDPRINTERWIZARD"><parameter>show add
                printer wizard</parameter></link></para>
                
                <para>
                This parameter is only used for add file shares.  To add printer shares, 
-               see the <link linkend="ADDPRINTERCOMMAND"><parameter>addprinter 
+               see the <link linkend="ADDPRINTERCOMMAND"><parameter>add printer 
                command</parameter></link>.
                </para>
                
                </listitem>
                </varlistentry>
 
-               <varlistentry>
-               <term><anchor id="ADSSERVER">ads server (G)</term>
-               <listitem><para>If this option is specified, samba does 
-               not try to figure out what ads server to use itself, but 
-               uses the specified ads server. Either one DNS name or IP 
-               address can be used.</para>
-
-               <para>Default: <command>ads server = </command></para>
-
-               <para>Example: <command>ads server = 192.168.1.2</command></para>
-               </listitem>
-               </varlistentry>
 
                <varlistentry>
                <term><anchor id="ADDUSERSCRIPT">add user script (G)</term>
                %u</command></para>
                </listitem>
                </varlistentry>
-               
-               <varlistentry><term><anchor id="ADDGROUPSCRIPT">add group script (G)</term>
-               <listitem><para>This is the full pathname to a script that will 
-               be run <emphasis>AS ROOT</emphasis> by <ulink url="smbd.8.html">smbd(8)</ulink> when a new group is requested. It will expand any <parameter>%g</parameter> to the group name passed.  This script is only useful for installations using the Windows NT domain administration tools.
-               </para></listitem>
-               </varlistentry>
+<varlistentry><term><anchor id="ADDGROUPSCRIPT">add group script (G)</term>
+<listitem><para>This is the full pathname to a script that will 
+               be run <emphasis>AS ROOT</emphasis> by <ulink url="smbd.8.html">smbd(8) when a new group is requested. It will expand any <parameter>%g</parameter> to the group name passed.  This script is only useful for installations using the Windows NT domain administration tools.
+               </ulink> 
+
+</para></listitem>
+</varlistentry>
+
 
                <varlistentry>
                <term><anchor id="ADMINUSERS">admin users (S)</term>
                <para>Example: <command>admin users = jason</command></para>
                </listitem>
                </varlistentry>
-
-               <varlistentry>
-               <term><anchor id="ADDUSERTOGROUPSCRIPT">add user to group script (G)</term>
-               <listitem><para>Full path to the script that will be called when 
-               a user is added to a group using the Windows NT domain administration 
-               tools. It will be run by <ulink url="smbd.8.html">smbd(8)</ulink> 
-               <emphasis>AS ROOT</emphasis>. Any <parameter>%g</parameter> will be 
-               replaced with the group name and any <parameter>%u</parameter> will 
-               be replaced with the user name.
-               </para>
-
-               <para>Default: <command>add user to group script = </command></para>
-
-               <para>Example: <command>add user to group script = /usr/sbin/adduser %u %g</command></para>
                
-               </listitem>
-               </varlistentry>
+
 
                <varlistentry>
                <term><anchor id="ALLOWHOSTS">allow hosts (S)</term>
                </listitem>
                </varlistentry>
                
+
+
                <varlistentry>
                <term><anchor id="ANNOUNCEAS">announce as (G)</term>
                <listitem><para>This specifies what type of server 
 
                </listitem>
                </varlistentry>
-       
-               <varlistentry>
-               <term><anchor id="BLOCKSIZE">block size (S)</term>
-               <listitem><para>This parameter controls the behavior of 
-               <ulink url="smbd.8.html">smbd(8)</ulink> when reporting disk free 
-               sizes. By default, this reports a disk block size of 1024 bytes.
-               </para>        
-               
-               <para>Changing this parameter may have some effect on the
-               efficiency of client writes, this is not yet confirmed. This
-               parameter was added to allow advanced administrators to change
-               it (usually to a higher value) and test the effect it has on
-               client write performance without re-compiling the code. As this
-               is an experimental option it may be removed in a future release.
-               </para>
-
-               <para>Changing this option does not change the disk free reporting
-               size, just the block size unit reported to the client.</para>
-
-                                                                                                                                                       <para>Default: <command>block size = 1024</command></para>
-                                                                                                                                                                       <para>Example: <command>block size = 65536</command></para>
-
-                                                                                                                                                                                       </listitem>
-                                                                                                                                                                                                       </varlistentry>
-                                                                                                                                                                                                               
+               
 
 
                <varlistentry>
                </listitem>
                </varlistentry>
                
-               <varlistentry><term><anchor id="DELETEGROUPSCRIPT">delete group script (G)</term>
-               <listitem><para>This is the full pathname to a script that will 
-               be run <emphasis>AS ROOT</emphasis> by <ulink url="smbd.8.html">smbd(8)</ulink> when a group is requested to be deleted. It will expand any <parameter>%g</parameter> to the group name passed.  This script is only useful for installations using the Windows NT domain administration tools.
-               </para></listitem>
-               </varlistentry>
+
 
                <varlistentry>
-               <term><anchor id="DELETEPRINTERCOMMAND">deleteprinter command (G)</term>
+               <term><anchor id="DELETEPRINTERCOMMAND">delete printer command (G)</term>
                <listitem><para>With the introduction of MS-RPC based printer
                support for Windows NT/2000 clients in Samba 2.2, it is now 
                possible to delete printer at run time by issuing the 
                from the print system and from <filename>smb.conf</filename>.
                </para>
                
-               <para>The <parameter>deleteprinter command</parameter> is 
+               <para>The <parameter>delete printer command</parameter> is 
                automatically called with only one parameter: <parameter>
                "printer name"</parameter>.</para>
                
                                
-               <para>Once the <parameter>deleteprinter command</parameter> has 
+               <para>Once the <parameter>delete printer command</parameter> has 
                been executed, <command>smbd</command> will reparse the <filename>
                smb.conf</filename> to associated printer no longer exists.  
                If the sharename is still valid, then <command>smbd
                </command> will return an ACCESS_DENIED error to the client.</para>
                
                <para>See also <link linkend="ADDPRINTERCOMMAND"><parameter>
-               addprinter command</parameter></link>, <link 
+               add printer command</parameter></link>, <link 
                linkend="printing"><parameter>printing</parameter></link>,
                <link linkend="SHOWADDPRINTERWIZARD"><parameter>show add
                printer wizard</parameter></link></para>
                
                <para>
                This parameter is only used to remove file shares.  To delete printer shares, 
-               see the <link linkend="DELETEPRINTERCOMMAND"><parameter>deleteprinter 
+               see the <link linkend="DELETEPRINTERCOMMAND"><parameter>delete printer 
                command</parameter></link>.
                </para>
                
                %u</command></para></listitem>
                </varlistentry>
 
-               <varlistentry>
-               <term><anchor id="DELETEUSERFROMGROUPSCRIPT">delete user from group script (G)</term>
-               <listitem><para>Full path to the script that will be called when 
-               a user is removed from a group using the Windows NT domain administration 
-               tools. It will be run by <ulink url="smbd.8.html">smbd(8)</ulink> 
-               <emphasis>AS ROOT</emphasis>. Any <parameter>%g</parameter> will be 
-               replaced with the group name and any <parameter>%u</parameter> will 
-               be replaced with the user name.
-               </para>
 
-               <para>Default: <command>delete user from group script = </command></para>
 
-               <para>Example: <command>delete user from group script = /usr/sbin/deluser %u %g</command></para>
-               
-               </listitem>
-               </varlistentry>
+
 
                <varlistentry>
                <term><anchor id="DELETEVETOFILES">delete veto files (S)</term>
                </varlistentry>
 
 
-               <varlistentry>
-               <term><anchor id="DISABLENETBIOS">disable netbios (G)</term>
-               <listitem><para>Enabling this parameter will disable netbios support
-               in Samba. Netbios is the only available form of browsing in 
-               all windows versions except for 2000 and XP. </para>
-
-               <para>Note that clients that only support netbios won't be able to 
-               see your samba server when netbios support is disabled.
-               </para>
-
-               <para>Default: <command>disable netbios = no</command></para>
-               <para>Example: <command>disable netbios = yes</command></para>
-               </listitem>
-               </varlistentry>
 
                <varlistentry>
                <term><anchor id="DISABLESPOOLSS">disable spoolss (G)</term>
-               <listitem><para>Enabling this parameter will disable Samba's support
+               <listitem><para>Enabling this parameter will disables Samba's support
                for the SPOOLSS set of MS-RPC's and will yield identical behavior
                as Samba 2.0.x.  Windows NT/2000 clients will downgrade to using
                Lanman style printing commands. Windows 9x/ME will be uneffected by
                </listitem>
                </varlistentry>
                
-               <varlistentry>
-               <term><anchor id="DISPLAYCHARSET">display charset (G)</term>
-               <listitem><para>Specifies the charset that samba will use 
-               to print messages to stdout and stderr and SWAT will use. 
-               Should generally be the same as the <command>unix charset</command>.
-               </para>
-
-               <para>Default: <command>display charset = ASCII</command></para>
-
-               <para>Example: <command>display charset = UTF8</command></para>
-
-               </listitem>
-               </varlistentry>
                
                
                <varlistentry>
                </listitem>
                </varlistentry>
                
-               <varlistentry>
-               <term><anchor id="DOSCHARSET">dos charset (G)</term>
-               <listitem><para>DOS SMB clients assume the server has 
-               the same charset as they do. This option specifies which 
-               charset Samba should talk to DOS clients.
-               </para>
 
-               <para>The default depends on which charsets you have instaled. 
-               Samba tries to use charset 850 but falls back to ASCII in 
-               case it is not available. Run <ulink url="testparm.1.html">testparm(1)
-               </ulink> to check the default on your system.
-               </para>
-               </listitem>
-               </varlistentry>
 
                <varlistentry>
                <term><anchor id="DOSFILEMODE">dos filemode (S)</term>
                
                
                <varlistentry>
-               <term><anchor id="FORCEDIRECTORYSECURITYMODE">force directory security mode (S)</term>
+               <term><anchor id="FORCEDIRECTORYSECURITYMODE">force directory 
+               security mode (S)</term>
                <listitem><para>This parameter controls what UNIX permission bits 
                can be modified when a Windows NT client is manipulating the UNIX 
                permission on a directory using the native NT security dialog box.</para>
                </listitem>
                </varlistentry>
 
+
+
                <varlistentry>
                <term><anchor id="FORCESECURITYMODE">force security mode (S)</term>
                <listitem><para>This parameter controls what UNIX permission 
                <para>Example: <command>force security mode = 700</command></para>
                </listitem>
                </varlistentry>
-
-
                
                
                
 
 
                <varlistentry>
-               <term><anchor id="HIDEUNREADABLE">hide unreadable (G)</term>
+               <term><anchor id="HIDEUNREADABLE">hide unreadable (S)</term>
                <listitem><para>This parameter prevents clients from seeing the
                existance of files that cannot be read. Defaults to off.</para>
 
-               <para>Default: <command>hide unreadable = no</command></para>
-               </listitem>
+               <para>Default: <command>hide unreadable = no</command></para></listitem>
                </varlistentry>
 
-               <varlistentry>
-               <term><anchor id="HIDEUNWRITEABLEFILES">hide unwriteable files (G)</term>
-               <listitem><para>This parameter prevents clients from seeing
-               the existance of files that cannot be written to. Defaults to off.
-               Note that unwriteable directories are shown as usual.
-               </para>
 
-               <para>Default: <command>hide unwriteable = no</command></para>
-               </listitem>
-               </varlistentry>
 
                <varlistentry>
                <term><anchor id="HOMEDIRMAP">homedir map (G)</term>
                <para>Default: <command>host msdfs = no</command></para>
                </listitem>
                </varlistentry>
-               
-               <varlistentry>
-               <term><anchor id="HOSTNAMELOOKUPS">hostname lookups (G)</term>
-               <listitem><para>Specifies whether samba should use (expensive)
-               hostname lookups or use the ip addresses instead. An example place
-               where hostname lookups are currently used is when checking 
-               the <command>hosts deny</command> and <command>hosts allow</command>.
-               </para>
-
-               <para>Default: <command>hostname lookups = yes</command></para>
-
-               <para>Example: <command>hostname lookups = no</command></para>
-
-               </listitem>
-               </varlistentry>
 
        
                <varlistentry>
                </para>
        
                
-               <para>Default : <command>ldap filter = (&amp;(uid=%u)(objectclass=sambaAccount))</command></para>
+               <para>Default : <command>ldap filter = (&(uid=%u)(objectclass=sambaAccount))</command></para>
                </listitem>
                </varlistentry>
 
                </listitem>
                </varlistentry>
 
-               <varlistentry>
-               <term><anchor id="MANGLINGMETHOD">mangling method (G)</term>
-               <listitem><para> controls the algorithm used for the generating
-               the mangled names. Can take two different values, "hash" and
-               "hash2". "hash" is  the default and is the algorithm that has been
-               used in Samba for many years. "hash2" is a newer and considered
-               a better algorithm (generates less collisions) in the names.
-               However, many Win32 applications store the mangled names and so
-               changing to the new algorithm must not be done
-               lightly as these applications may break unless reinstalled.
-               New installations of Samba may set the default to hash2.</para>
-               <para>Default: <command>mangling method = hash</command></para>
-               <para>Example: <command>mangling method = hash2</command></para>
-               </listitem>
-               </varlistentry>
 
+               
                <varlistentry>
                <term><anchor id="MANGLEDSTACK">mangled stack (G)</term>
                <listitem><para>This parameter controls the number of mangled names 
                </listitem>
                </varlistentry>
          
-               <varlistentry>
-               <term><anchor id="NAMECACHETIMEOUT">name cache timeout (G)</term>
-               <listitem><para>Specifies the number of seconds it takes before 
-               entries in samba's hostname resolve cache time out. If 
-               the timeout is set to 0. the caching is disabled.
-               </para>
-
-
-               <para>Default: <command>name cache timeout = 660</command></para>
-               <para>Example: <command>name cache timeout = 0</command></para>
-               </listitem>
-               </varlistentry>
          
                <varlistentry> 
                <term><anchor id="NAMERESOLVEORDER">name resolve order (G)</term>
                </listitem>
                </varlistentry>
 
-               <varlistentry>
-               <term><anchor id="NTLMAUTH">ntlm auth (G)</term>
-               <listitem><para>This parameter determines whether or not <ulink url="smbd.8.html">smbd</ulink> will
-               attempt to authenticate users using the NTLM password hash.
-               If disabled, only the lanman password hashes will be used. 
-               </para>
 
-               <para>Please note that at least this option or <command>lanman auth</command> should be enabled in order to be able to log in.
-               </para>
-               
-               <para>Default : <command>ntlm auth = yes</command></para>
-               </listitem>
-               </varlistentry>
 
                <varlistentry>
                <term><anchor id="OSLEVEL">os level (G)</term>
                </listitem>
                </varlistentry>
 
-               <varlistentry>
-               <term><anchor id="PARANOIDSERVERSECURITY">paranoid server security (G)</term>
-               <listitem><para>Some version of NT 4.x allow non-guest 
-               users with a bad passowrd. When this option is enabled, samba will not 
-               use a broken NT 4.x server as password server, but instead complain
-               to the logs and exit.
-               </para>
-
-               <para>Default: <command>paranoid server security = yes</command></para>
-
-               </listitem>
-               </varlistentry>
 
                <varlistentry>
                <term><anchor id="PASSDBBACKEND">passdb backend (G)</term>
                 (eg --with-tdbsam) at configure time.
                </para>
 
-                <para>This parameter is in two parts, the backend's name, and a 'location'
+                <para>This paramater is in two parts, the backend's name, and a 'location'
                 string that has meaning only to that particular backed.  These are separated
                 by a : character.</para>
 
                         <para>See also <link linkend="NONUNIXACCOUNTRANGE">
                         <parameter>non unix account range</parameter></link></para></listitem>
                        
-                       <listitem><para><command>nisplussam</command> - The NIS+ based passdb backend. Takes name NIS domain as an optional argument. Only works with sun NIS+ servers. </para></listitem>
-                       
                        <listitem><para><command>plugin</command> - Allows Samba to load an 
                         arbitary passdb backend from the .so specified as a compulsary argument.
                         </para>
                </varlistentry>
 
 
-               <varlistentry>
-               <term><anchor id="REALM">realm (G)</term>
-               <listitem><para>
-               This option specifies the kerberos realm to use. The realm is 
-               used as the ADS equivalent of the NT4<command>domain</command>. It
-               is usually set to the DNS name of the kerberos server.
-               </para>
-               
-               <para>Default: <command>realm = </command></para>
-               <para>Example: <command>realm = mysambabox.mycompany.com</command></para>
-               </listitem>
-               </varlistentry>
 
                <varlistentry>
                <term><anchor id="REMOTEANNOUNCE">remote announce (G)</term>
                </varlistentry>
 
 
-               <varlistentry>
-               <term><anchor id="SMBPORTS">smb ports (G)</term>
-               <listitem><para>Specifies which ports the server should listen on
-               for SMB traffic.
-               </para>
 
-               <para>Default: <command>smb ports = 445 139</command></para>
-
-               </listitem>
-               </varlistentry>
 
                <varlistentry>
                <term><anchor id="SOCKETADDRESS">socket address (G)</term>
                </listitem>
                </varlistentry>
 
-               <varlistentry>
-               <term><anchor id="UNICODE">unicode (G)</term>
-               <listitem><para>Specifies whether Samba should try 
-               to use unicode on the wire by default. 
-               </para>
 
-               <para>Default: <command>unicode = yes</command></para>
-
-               </listitem>
-               </varlistentry>
-
-               <varlistentry>
-               <term><anchor id="UNIXCHARSET">unix charset (G)</term>
-               <listitem><para>Specifies the charset the unix machine 
-               Samba runs on uses. Samba needs to know this in order to be able to 
-               convert text to the charsets other SMB clients use.
-               </para>
 
-               <para>Default: <command>unix charset = ASCII</command></para>
-               </listitem>
-               </varlistentry>
 
                <varlistentry>
                <term><anchor id="UNIXEXTENSIONS">unix extensions(G)</term>
                </listitem>
                </varlistentry>
 
+
+
                <varlistentry>
                <term><anchor id="UTMPDIRECTORY">utmp directory(G)</term>
                <listitem><para>This parameter is only available if Samba has 
                <filename>/var/run/utmp</filename> on Linux).</para>
 
                <para>Default: <emphasis>no utmp directory</emphasis></para>
-               <para>Example: <command>utmp directory = /var/run/utmp</command></para>
                </listitem>
                </varlistentry>
 
-               <varlistentry>
-               <term><anchor id="WTMPDIRECTORY">wtmp directory(G)</term>
-               <listitem><para>This parameter is only available if Samba has 
-               been configured and compiled with the option <command>
-               --with-utmp</command>. It specifies a directory pathname that is
-               used to store the wtmp or wtmpx files (depending on the UNIX system) that
-               record user connections to a Samba server. The difference with
-               the utmp directory is the fact that user info is kept after a user 
-               has logged out.
-               
-               See also the <link linkend="UTMP">
-               <parameter>utmp</parameter></link> parameter. By default this is 
-               not set, meaning the system will use whatever utmp file the 
-               native system is set to use (usually 
-               <filename>/var/run/wtmp</filename> on Linux).</para>
 
-               <para>Default: <emphasis>no wtmp directory</emphasis></para>
-               <para>Example: <command>wtmp directory = /var/log/wtmp</command></para>
-               </listitem>
-               </varlistentry>
+
 
 
                <varlistentry>
@@ -7980,18 +7722,7 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
                </listitem>
                </varlistentry>
 
-               <varlistentry>
-               <term><anchor id="VFSPATH">vfs path (S)</term>
-               <listitem><para>This parameter specifies the directory
-               to look in for vfs modules. The name of every <command>vfs object
-               </command> will be prepended by this directory
-               </para>
 
-               <para>Default: <command>vfs path = </command></para>
-               <para>Example: <command>vfs path = /usr/lib/samba/vfs</command></para>
-
-               </listitem>
-               </varlistentry>
 
                <varlistentry>
                <term><anchor id="VFSOBJECT">vfs object (S)</term>
@@ -8362,20 +8093,6 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
 
 
 
-               <varlistentry>
-               <term><anchor id="WINSPARTNERS">wins partners (G)</term>
-               <listitem><para>A space separated list of partners' IP addresses for 
-               WINS replication. WINS partners are always defined as push/pull 
-               partners as defining only one way WINS replication is unreliable. 
-               WINS replication is currently experimental and unreliable between 
-               samba servers.
-               </para>
-
-               <para>Default: <command>wins partners = </command></para>
-
-               <para>Example: <command>wins partners = 192.168.0.1 172.16.1.2</command></para>
-               </listitem>
-               </varlistentry>
 
 
                <varlistentry>
index d1585d7ca39b15d2150dcc05f36b6b3fcf8a1c3d..4e2ee5fff0a75e476911e3db8f42676e6b145742 100644 (file)
 <refsect1>
        <title>VERSION</title>
 
-       <para>This man page is correct for version 3.0 of 
+       <para>This man page is correct for version 2.2 of 
        the Samba suite.</para>
 </refsect1>
 
index 350683eb5743cf642487693b0189089d2fd00598..320e39e6f5827547b4d3e62099d48032388b642c 100644 (file)
@@ -18,7 +18,6 @@
                <command>testparm</command>
                <arg choice="opt">-s</arg>
                <arg choice="opt">-h</arg>
-               <arg choice="opt">-v</arg>
                <arg choice="opt">-L &lt;servername&gt;</arg>
                <arg choice="req">config filename</arg>
                <arg choice="opt">hostname  hostIP</arg>
                %L macro. </para></listitem>
                </varlistentry>
 
-               <varlistentry>
-               <term>-v</term>
-               <listitem><para>If this option is specified, testparm 
-               will also output all options that were not used in 
-               <filename>smb.conf</filename> and are thus set to
-               their defaults.</para></listitem>
-               </varlistentry>
 
                <varlistentry>
                <term>configfilename</term>
diff --git a/docs/docbook/projdoc/OS2-Client-HOWTO.sgml b/docs/docbook/projdoc/OS2-Client-HOWTO.sgml
new file mode 100644 (file)
index 0000000..ca7ad6a
--- /dev/null
@@ -0,0 +1,142 @@
+<chapter id="os2">
+
+
+<chapterinfo>
+       <author>
+               <firstname>Jim</firstname><surname>McDonough</surname>
+               <affiliation>
+                       <orgname>IBM</orgname>
+                       <address>
+                               <email>jerry@samba.org</email>
+                       </address>
+               </affiliation>
+       </author>
+       
+               
+       <pubdate>5 Mar 2001</pubdate>
+</chapterinfo>
+
+<title>OS2 Client HOWTO</title>
+
+<sect1>
+       <title>FAQs</title>
+
+       <sect2>
+               <title>How can I configure OS/2 Warp Connect or 
+               OS/2 Warp 4 as a client for Samba?</title>
+
+               <para>A more complete answer to this question can be 
+               found on <ulink url="http://carol.wins.uva.nl/~leeuw/samba/warp.html">
+               http://carol.wins.uva.nl/~leeuw/samba/warp.html</ulink>.</para>
+               
+               <para>Basically, you need three components:</para>
+               
+               <itemizedlist>
+                       <listitem><para>The File and Print Client ('IBM Peer')
+                       </para></listitem>
+                       <listitem><para>TCP/IP ('Internet support') 
+                       </para></listitem>
+                       <listitem><para>The "NetBIOS over TCP/IP" driver ('TCPBEUI')
+                       </para></listitem>
+               </itemizedlist>
+               
+               <para>Installing the first two together with the base operating 
+               system on a blank system is explained in the Warp manual. If Warp 
+               has already been installed, but you now want to install the 
+               networking support, use the "Selective Install for Networking" 
+               object in the "System Setup" folder.</para>
+
+               <para>Adding the "NetBIOS over TCP/IP" driver is not described 
+               in the manual and just barely in the online documentation. Start 
+               MPTS.EXE, click on OK, click on "Configure LAPS" and click 
+               on "IBM OS/2 NETBIOS OVER TCP/IP" in  'Protocols'.  This line 
+               is then moved to 'Current Configuration'. Select that line, 
+               click on "Change number" and increase it from 0 to 1. Save this
+               configuration.</para>
+
+               <para>If the Samba server(s) is not on your local subnet, you 
+               can optionally add IP names and addresses of these servers 
+               to the "Names List", or specify a  WINS server ('NetBIOS 
+               Nameserver' in IBM and RFC terminology). For Warp Connect you 
+               may need to download an update for 'IBM Peer' to bring it on 
+               the same level as Warp 4. See the webpage mentioned above.</para>
+       </sect2>
+       
+       <sect2>
+               <title>How can I configure OS/2 Warp 3 (not Connect), 
+               OS/2 1.2, 1.3 or 2.x for Samba?</title>
+               
+               <para>You can use the free Microsoft LAN Manager 2.2c Client 
+               for OS/2 from 
+               <ulink url="ftp://ftp.microsoft.com/BusSys/Clients/LANMAN.OS2/">
+               ftp://ftp.microsoft.com/BusSys/Clients/LANMAN.OS2/</ulink>.
+       See <ulink url="http://carol.wins.uva.nl/~leeuw/lanman.html">
+               http://carol.wins.uva.nl/~leeuw/lanman.html</ulink> for 
+               more information on how to install and use this client. In 
+               a nutshell, edit the file \OS2VER in the root directory of 
+               the OS/2 boot partition and add the lines:</para>
+               
+               <para><programlisting>
+               20=setup.exe
+               20=netwksta.sys
+               20=netvdd.sys
+               </programlisting></para>
+               
+               <para>before you install the client. Also, don't use the 
+               included NE2000 driver because it is buggy. Try the NE2000 
+               or NS2000 driver from 
+               <ulink url="ftp://ftp.cdrom.com/pub/os2/network/ndis/">
+               ftp://ftp.cdrom.com/pub/os2/network/ndis/</ulink> instead.
+               </para>
+       </sect2>
+       
+       <sect2>
+               <title>Are there any other issues when OS/2 (any version) 
+               is used as a client?</title>
+               
+               <para>When you do a NET VIEW or use the "File and Print 
+               Client Resource Browser", no Samba servers show up. This can 
+               be fixed by a patch from <ulink
+               url="http://carol.wins.uva.nl/~leeuw/samba/fix.html">
+               http://carol.wins.uva.nl/~leeuw/samba/fix.html</ulink>.
+               The patch will be included in a later version of Samba. It also 
+               fixes a couple of other problems, such as preserving long 
+               filenames when objects are dragged from the Workplace Shell 
+               to the Samba server. </para>
+       </sect2>
+       
+       <sect2>
+               <title>How do I get printer driver download working 
+               for OS/2 clients?</title>
+
+               <para>First, create a share called [PRINTDRV] that is 
+               world-readable.  Copy your OS/2 driver files there.  Note 
+               that the .EA_ files must still be separate, so you will need 
+               to use the original install files, and not copy an installed 
+               driver from an OS/2 system.</para>
+               
+               <para>Install the NT driver first for that printer.  Then, 
+               add to your smb.conf a parameter, "os2 driver map = 
+               <replaceable>filename</replaceable>".  Then, in the file 
+               specified by <replaceable>filename</replaceable>, map the 
+               name of the NT driver name to the OS/2 driver name as 
+               follows:</para>
+               
+               <para>&lt;nt driver name&gt; = &lt;os2 driver 
+               name&gt;.&lt;device name&gt;, e.g.:
+               HP LaserJet 5L = LASERJET.HP LaserJet 5L</para>
+
+               <para>You can have multiple drivers mapped in this file.</para>
+       
+               <para>If you only specify the OS/2 driver name, and not the 
+               device name, the first attempt to download the driver will 
+               actually download the files, but the OS/2 client will tell 
+               you the driver is not available.  On the second attempt, it 
+               will work.  This is fixed simply by adding the device name
+                to the mapping, after which it will work on the first attempt.
+               </para>
+       </sect2>
+</sect1>
+
+</chapter>
+   
index adcd059bc2ffc070e130e7cafac394d1a06238e0..594516640de35e8e41aa8d3280f90d5c7c752c6a 100644 (file)
@@ -154,7 +154,7 @@ password   required     /lib/security/pam_smbpass.so nodelay smbconf=/etc/samba.
 
 <para>
 Note: PAM allows stacking of authentication mechanisms. It is 
-also possible to pass information obtained within one PAM module through 
+also possible to pass information obtained within on PAM module through 
 to the next module in the PAM stack. Please refer to the documentation for 
 your particular system implementation for details regarding the specific 
 capabilities of PAM in this environment. Some Linux implmentations also 
index ce9f40e88bf183d61e1377ebd8a139fab8d212c7..cb7e5cdfb7c55a9e033d0df16fb83ae45b8921a5 100644 (file)
@@ -1,4 +1,4 @@
-<chapter id="printingdebug">
+<chapter id="printing_debug">
 <chapterinfo>
        <author>
                <firstname>Patrick</firstname><surname>Powell</surname>
index 7653e3d1c03af776e23d1f8c61b75ba92895d700..53a0959c39a2d6207a934b8ed07a2b9630f92ab0 100644 (file)
@@ -157,17 +157,10 @@ Several things have to be done:
 <itemizedlist>
 
 <listitem><para>
-The domain SID has to be the same on the PDC and the BDC. This used to
-be stored in the file private/MACHINE.SID. This file is not created
-anymore since Samba 2.2.5 or even earlier. Nowadays the domain SID is
-stored in the file private/secrets.tdb. Simply copying the secrets.tdb
-from the PDC to the BDC does not work, as the BDC would
-generate a new SID for itself and override the domain SID with this
-new BDC SID.</para>
-
-<para>
-To retrieve the domain SID from the PDC or an existing BDC and store it in the
-secrets.tdb, execute 'net rpc getsid' on the BDC.
+The file private/MACHINE.SID identifies the domain. When a samba
+server is first started, it is created on the fly and must never be
+changed again. This file has to be the same on the PDC and the BDC,
+so the MACHINE.SID has to be copied from the PDC to the BDC.
 </para></listitem>
 
 <listitem><para>
index c307636d5fabbef2e9425d4c14a1d5feb521812c..aab193c4519a848700f5620a8b3b7018dfbf4ae3 100644 (file)
                <title>Printing from UNIX to a Client PC</title>
 
                <para>To use a printer that is available via a smb-based 
-               server from a unix host with LPR you will need to compile the 
+               server from a unix host you will need to compile the 
                smbclient program. You then need to install the script 
                "smbprint". Read the instruction in smbprint for more details.
                </para>
 
                <para>There is also a SYSV style script that does much 
                the same thing called smbprint.sysv. It contains instructions.</para>
-
-               <para>See the CUPS manual for information about setting up 
-               printing from a unix host with CUPS to a smb-based server. </para>
        </sect2>
 
        <sect2>
index 85ae0713b39fa950d3552312cee77661d3f542a6..84a24bcdefcd8779b17e8f65170f0e230656712d 100644 (file)
@@ -107,7 +107,7 @@ the client.
  
 <para>
 These parameters, including <parameter>printer driver
-file</parameter> parameter, are being deprecated and should not 
+file</parameter> parameter, are being depreciated and should not 
 be used in new installations.  For more information on this change, 
 you should refer to the <link linkend="MIGRATION">Migration section</link>
 of this document.
@@ -260,7 +260,7 @@ driver now?</emphasis>
 
 <para>
 Click "No" in the error dialog and you will be presented with
-the printer properties window.  The way to assign a driver to a 
+the printer properties window.  The way assign a driver to a 
 printer is to either
 </para>
        
@@ -382,65 +382,11 @@ of the connected user, not necessarily a root account.
 </para>
 
 <para>
-There is a complementary <ulink url="smb.conf.5.html#DELETEPRINTERCOMMAND"><parameter>delete
+There is a complementing <ulink url="smb.conf.5.html#DELETEPRINTERCOMMAND"><parameter>delete
 printer command</parameter></ulink> for removing entries from the "Printers..."
 folder.
 </para>
 
-<para>
-The following is an example <ulink url="smb.conf.5.html#ADDPRINTERCOMMAN"><parameter>add printer command</parameter></ulink> script. It adds the appropriate entries to <filename>/etc/printcap.local</filename> (change that to what you need) and returns a line of 'Done' which is needed for the whole process to work.
-</para>
-
-<programlisting>
-#!/bin/sh
-
-# Script to insert a new printer entry into printcap.local
-#
-# $1, printer name, used as the descriptive name
-# $2, share name, used as the printer name for Linux
-# $3, port name
-# $4, driver name
-# $5, location, used for the device file of the printer
-# $6, win9x location
-
-#
-# Make sure we use the location that RedHat uses for local printer defs
-PRINTCAP=/etc/printcap.local
-DATE=`date +%Y%m%d-%H%M%S`
-LP=lp
-RESTART="service lpd restart"
-
-# Keep a copy
-cp $PRINTCAP $PRINTCAP.$DATE
-# Add the printer to $PRINTCAP
-echo ""                                                        >> $PRINTCAP
-echo "$2|$1:\\"                                        >> $PRINTCAP
-echo "  :sd=/var/spool/lpd/$2:\\"                      >> $PRINTCAP
-echo "  :mx=0:ml=0:sh:\\"                              >> $PRINTCAP
-echo "  :lp=/usr/local/samba/var/print/$5.prn:"        >> $PRINTCAP
-
-touch "/usr/local/samba/var/print/$5.prn" >> /tmp/printadd.$$ 2>&1
-chown $LP "/usr/local/samba/var/print/$5.prn" >> /tmp/printadd.$$ 2>&1
-
-mkdir /var/spool/lpd/$2
-chmod 700 /var/spool/lpd/$2
-chown $LP /var/spool/lpd/$2
-#echo $1 >> "/usr/local/samba/var/print/$5.prn"
-#echo $2 >> "/usr/local/samba/var/print/$5.prn"
-#echo $3 >> "/usr/local/samba/var/print/$5.prn"
-#echo $4 >> "/usr/local/samba/var/print/$5.prn"
-#echo $5 >> "/usr/local/samba/var/print/$5.prn"
-#echo $6 >> "/usr/local/samba/var/print/$5.prn"
-$RESTART >> "/usr/local/samba/var/print/$5.prn"
-# Not sure if this is needed
-touch /usr/local/samba/lib/smb.conf
-#
-# You need to return a value, but I am not sure what it means.
-#
-echo "Done"
-exit 0
-</programlisting>
-
 </sect2>
 
 
index 75c5c379d32386d6992ae536414c9999a20a64f5..0ec9efe014e3f16a4f8493cce1851240b56d0168 100644 (file)
@@ -6,6 +6,7 @@
 <!ENTITY DOMAIN-MEMBER SYSTEM "DOMAIN_MEMBER.sgml">
 <!ENTITY WINBIND SYSTEM "winbind.sgml">
 <!ENTITY NT-Security SYSTEM "NT_Security.sgml">
+<!ENTITY OS2-Client SYSTEM "OS2-Client-HOWTO.sgml">
 <!ENTITY Samba-PDC-HOWTO SYSTEM "Samba-PDC-HOWTO.sgml">
 <!ENTITY Samba-BDC-HOWTO SYSTEM "Samba-BDC-HOWTO.sgml">
 <!ENTITY CVS-Access SYSTEM "CVS-Access.sgml">
@@ -18,9 +19,7 @@
 <!ENTITY SECURITY-LEVEL SYSTEM "security_level.sgml">
 <!ENTITY SPEED SYSTEM "Speed.sgml">
 <!ENTITY BROWSING SYSTEM "Browsing.sgml">
-<!ENTITY GROUP-MAPPING-HOWTO SYSTEM "GROUP-MAPPING-HOWTO.sgml">
-<!ENTITY Portability SYSTEM "Portability.sgml">
-<!ENTITY Other-Clients SYSTEM "Other-Clients.sgml">
+<!ENTITY INDEX-FILE SYSTEM "index.sgml">
 ]>
 
 <book id="Samba-Project-Documentation">
@@ -80,10 +79,11 @@ Cheers, jerry
 &Samba-LDAP;
 &BROWSING;
 &SPEED;
-&Other-Clients;
+&OS2-Client;
 &CVS-Access;
 &BUGS;
-&GROUP-MAPPING-HOWTO;
-&Portability;
+
+<!-- Autogenerated Index -->
+&INDEX-FILE;
 
 </book>
index efe2b6eaf3dff4043d79ddf863baec21551df014..46a2ad7fe4656b9e08b896834bdc6b22b4767a9a 100644 (file)
@@ -1,4 +1,4 @@
-<chapter id="securitylevels">
+<chapter id="security_levels">
 <chapterinfo>
        <author>
                <firstname>Andrew</firstname><surname>Tridgell</surname>
diff --git a/docs/docbook/scripts/README.ldp_print b/docs/docbook/scripts/README.ldp_print
new file mode 100644 (file)
index 0000000..8d61a85
--- /dev/null
@@ -0,0 +1,60 @@
+
+######################################################################
+    ldp_print -  print tool/script for DocBook SGML/XML documents 
+######################################################################
+
+This process/script is used in the production environment for the
+LDP.  It relies on the HTMLDOC software package (GPL'ed) which can be
+obtained from the Easy Software Products (c) web site:
+
+        http://www.easysw.com/htmldoc/
+
+This process creates a PDF variant from the single-file HTML
+representation of a DocBook SGML (or XML) instance. The simple
+wrapper script (ldp_print) assumes that the file was created using
+{open}jade in a manner similar to:
+
+        jade -t sgml -i html -V nochunks -d $style $fname > $fname.html
+
+Give the script the filename as an argument. It will then parse the
+file into 'title.html' and 'body.html' and send each to htmldoc (as
+the corresponding title page and body of the document).
+
+
+CAVEATS
+=======
+
+o  Assumes perl is in /usr/bin; adjust if necessary
+
+o  You may need to specify where the htmldoc executable resides.
+   The script assumes it's within your $PATH.
+
+o  If you want Postscript as an output variant, uncomment the
+   appropriate lines (see below).
+
+o  Relies on output from a DocBook instance created via DSSSL/{open}jade!
+
+o  Cleans up (removes) the intermediate files it creates (but not the
+   PDF or Postscript files, obviously!)
+
+o  Works silently; PDF (PostScript) will be created in the same directory
+   as was specified for the input (single-file HTML) file.
+
+o  Provided without warranty or support!
+
+o  I ran into a problem with htmldoc v1.8.8 which required a source
+   code change (I was getting a core dump from the htmldoc process).
+   Here is the change required:
+
+       htmldoc/ps-pdf.cxx :
+       3662,3665d3661
+       <      /* gjf = 11Oct2000 */
+       <      if( temprow == NULL )
+       <          break;
+       < 
+
+
+====
+gferg (at) sgi.com / Ferg
+11 Jan 2000
+
diff --git a/docs/docbook/scripts/collateindex.pl b/docs/docbook/scripts/collateindex.pl
new file mode 100644 (file)
index 0000000..fd757ed
--- /dev/null
@@ -0,0 +1,595 @@
+# -*- Perl -*-\r
+#\r
+\r
+use Getopt::Std;\r
+\r
+$usage = "Usage: $0 <opts> file\r
+Where <opts> are:\r
+       -p        Link to points in the document.  The default is to link\r
+                 to the closest containing section.\r
+       -g        Group terms with IndexDiv based on the first letter \r
+                 of the term (or its sortas attribute).\r
+                 (This probably doesn't handle i10n particularly well)\r
+       -s name   Name the IndexDiv that contains symbols.  The default\r
+                 is 'Symbols'.  Meaningless if -g is not used.\r
+       -t name   Title for the index.\r
+       -P file   Read a preamble from file.  The content of file will\r
+                 be inserted before the <index> tag.\r
+       -i id     The ID for the <index> tag.\r
+       -o file   Output to file. Defaults to stdout.\r
+       -S scope  Scope of the index, must be 'all', 'local', or 'global'.\r
+                 If unspecified, 'all' is assumed.\r
+       -I scope  The implied scope, must be 'all', 'local', or 'global'.\r
+                 IndexTerms which do not specify a scope will have the\r
+                 implied scope.  If unspecified, 'all' is assumed.\r
+       -x        Make a SetIndex.\r
+       -f        Force the output file to be written, even if it appears\r
+                 to have been edited by hand.\r
+       -N        New index (generates an empty index file).\r
+       file      The file containing index data generated by Jade\r
+                 with the DocBook HTML Stylesheet.\n";\r
+\r
+die $usage if ! getopts('Dfgi:NpP:s:o:S:I:t:x');\r
+\r
+$linkpoints   = $opt_p;\r
+$lettergroups = $opt_g;\r
+$symbolsname  = $opt_s || "Symbols";\r
+$title        = $opt_t;\r
+$preamble     = $opt_P;\r
+$outfile      = $opt_o || '-';\r
+$indexid      = $opt_i;\r
+$scope        = uc($opt_S) || 'ALL';\r
+$impliedscope = uc($opt_I) || 'ALL';\r
+$setindex     = $opt_x;\r
+$forceoutput  = $opt_f;\r
+$newindex     = $opt_N;\r
+$debug        = $opt_D;\r
+\r
+$indextag     = $setindex ? 'setindex' : 'index';\r
+\r
+if ($newindex) {\r
+    safe_open(*OUT, $outfile);\r
+    if ($indexid) {\r
+       print OUT "<$indextag id='$indexid'>\n\n";\r
+    } else {\r
+       print OUT "<$indextag>\n\n";\r
+    }\r
+\r
+    print OUT "<!-- This file was produced by collateindex.pl.         -->\n";\r
+    print OUT "<!-- Remove this comment if you edit this file by hand! -->\n";\r
+\r
+    print OUT "</$indextag>\n";\r
+    exit 0;\r
+}\r
+\r
+$dat = shift @ARGV || die $usage;\r
+die "$0: cannot find $dat.\n" if ! -f $dat;\r
+\r
+%legal_scopes = ('ALL' => 1, 'LOCAL' => 1, 'GLOBAL' => 1);\r
+if ($scope && !$legal_scopes{$scope}) {\r
+    die "Invalid scope.\n$usage\n";\r
+}\r
+if ($impliedscope && !$legal_scopes{$impliedscope}) {\r
+    die "Invalid implied scope.\n$usage\n";\r
+}\r
+\r
+@term = ();\r
+%id   = ();\r
+\r
+$termcount = 0;\r
+\r
+print STDERR "Processing $dat...\n";\r
+\r
+# Read the index file, creating an array of objects.  Each object \r
+# represents and indexterm and has fields for the content of the\r
+# indexterm\r
+\r
+open (F, $dat);\r
+while (<F>) {\r
+    chop;\r
+\r
+    if (/^\/indexterm/i) {\r
+       push (@term, $idx);\r
+       next;\r
+    }\r
+\r
+    if (/^indexterm (.*)$/i) {\r
+       $termcount++;\r
+       $idx = {};\r
+       $idx->{'zone'} = {};\r
+       $idx->{'href'} = $1;\r
+       $idx->{'count'} = $termcount;\r
+       $idx->{'scope'} = $impliedscope;\r
+       next;\r
+    }\r
+\r
+    if (/^indexpoint (.*)$/i) {\r
+       $idx->{'hrefpoint'} = $1;\r
+       next;\r
+    }\r
+\r
+    if (/^title (.*)$/i) {\r
+       $idx->{'title'} = $1;\r
+       next;\r
+    }\r
+\r
+    if (/^primary[\[ ](.*)$/i) {\r
+       if (/^primary\[(.*?)\] (.*)$/i) {\r
+           $idx->{'psortas'} = $1;\r
+           $idx->{'primary'} = $2;\r
+       } else {\r
+           $idx->{'psortas'} = $1;\r
+           $idx->{'primary'} = $1;\r
+       }\r
+       next;\r
+    }\r
+\r
+    if (/^secondary[\[ ](.*)$/i) {\r
+       if (/^secondary\[(.*?)\] (.*)$/i) {\r
+           $idx->{'ssortas'} = $1;\r
+           $idx->{'secondary'} = $2;\r
+       } else {\r
+           $idx->{'ssortas'} = $1;\r
+           $idx->{'secondary'} = $1;\r
+       }\r
+       next;\r
+    }\r
+\r
+    if (/^tertiary[\[ ](.*)$/i) {\r
+       if (/^tertiary\[(.*?)\] (.*)$/i) {\r
+           $idx->{'tsortas'} = $1;\r
+           $idx->{'tertiary'} = $2;\r
+       } else {\r
+           $idx->{'tsortas'} = $1;\r
+           $idx->{'tertiary'} = $1;\r
+       }\r
+       next;\r
+    }\r
+\r
+    if (/^see (.*)$/i) {\r
+       $idx->{'see'} = $1;\r
+       next;\r
+    }\r
+\r
+    if (/^seealso (.*)$/i) {\r
+       $idx->{'seealso'} = $1;\r
+       next;\r
+    }\r
+\r
+    if (/^significance (.*)$/i) {\r
+       $idx->{'significance'} = $1;\r
+       next;\r
+    }\r
+\r
+    if (/^class (.*)$/i) {\r
+       $idx->{'class'} = $1;\r
+       next;\r
+    }\r
+\r
+    if (/^scope (.*)$/i) {\r
+       $idx->{'scope'} = uc($1);\r
+       next;\r
+    }\r
+\r
+    if (/^startref (.*)$/i) {\r
+       $idx->{'startref'} = $1;\r
+       next;\r
+    }\r
+\r
+    if (/^id (.*)$/i) {\r
+       $idx->{'id'} = $1;\r
+       $id{$1} = $idx;\r
+       next;\r
+    }\r
+\r
+    if (/^zone (.*)$/i) {\r
+       my($href) = $1;\r
+       $_ = scalar(<F>);\r
+       chop;\r
+       die "Bad zone: $_\n" if !/^title (.*)$/i;\r
+       $idx->{'zone'}->{$href} = $1;\r
+       next;\r
+    }\r
+\r
+    die "Unrecognized: $_\n";\r
+}\r
+close (F);\r
+\r
+print STDERR "$termcount entries loaded...\n";\r
+\r
+# Fixup the startrefs...\r
+# In DocBook, STARTREF is a #CONREF attribute; support this by copying\r
+# all of the fields from the indexterm with the id specified by STARTREF\r
+# to the indexterm that has the STARTREF.\r
+foreach $idx (@term) {\r
+    my($ididx, $field);\r
+    if ($idx->{'startref'}) {\r
+       $ididx = $id{$idx->{'startref'}};\r
+       foreach $field ('primary', 'secondary', 'tertiary', 'see', 'seealso',\r
+                       'psortas', 'ssortas', 'tsortas', 'significance',\r
+                       'class', 'scope') {\r
+           $idx->{$field} = $ididx->{$field};\r
+       }\r
+    }\r
+}\r
+\r
+# Sort the index terms\r
+@term = sort termsort @term;\r
+\r
+# Move all of the non-alphabetic entries to the front of the index.\r
+@term = sortsymbols(@term);\r
+\r
+safe_open(*OUT, $outfile);\r
+\r
+# Write the index...\r
+if ($indexid) {\r
+    print OUT "<$indextag id='$indexid'>\n\n";\r
+} else {\r
+    print OUT "<$indextag>\n\n";\r
+}\r
+\r
+print OUT "<!-- This file was produced by collateindex.pl.         -->\n";\r
+print OUT "<!-- Remove this comment if you edit this file by hand! -->\n";\r
+\r
+print OUT "<!-- ULINK is abused here.\r
+      \r
+      The URL attribute holds the URL that points from the index entry\r
+      back to the appropriate place in the output produced by the HTML\r
+      stylesheet. (It's much easier to calculate this URL in the first\r
+      pass.)\r
+\r
+      The Role attribute holds the ID (either real or manufactured) of\r
+      the corresponding INDEXTERM.  This is used by the print backends\r
+      to produce page numbers.\r
+\r
+      The entries below are sorted and collated into the correct order.\r
+      Duplicates may be removed in the HTML backend, but in the print\r
+      backends, it is impossible to suppress duplicate pages or coalesce\r
+      sequences of pages into a range.\r
+-->\n\n";\r
+\r
+print OUT "<title>$title</title>\n\n" if $title;\r
+\r
+$last = {};     # the last indexterm we processed\r
+$first = 1;     # this is the first one\r
+$group = "";    # we're not in a group yet\r
+$lastout = "";  # we've not put anything out yet\r
+\r
+foreach $idx (@term) {\r
+    next if $idx->{'startref'}; # no way to represent spans...\r
+    next if ($idx->{'scope'} eq 'LOCAL') && ($scope eq 'GLOBAL');\r
+    next if ($idx->{'scope'} eq 'GLOBAL') && ($scope eq 'LOCAL');\r
+    next if &same($idx, $last); # suppress duplicates\r
+\r
+    $termcount--;\r
+\r
+    # If primary changes, output a whole new index term, otherwise just\r
+    # output another secondary or tertiary, as appropriate.  We know from\r
+    # sorting that the terms will always be in the right order.\r
+    if (!&tsame($last, $idx, 'primary')) { \r
+       print "DIFF PRIM\n" if $debug;\r
+       &end_entry() if not $first;\r
+\r
+       if ($lettergroups) {\r
+           # If we're grouping, make the right indexdivs\r
+           $letter = $idx->{'psortas'};\r
+           $letter = $idx->{'primary'} if !$letter;\r
+           $letter = uc(substr($letter, 0, 1));\r
+           \r
+           # symbols are a special case\r
+           if (($letter lt 'A') || ($letter gt 'Z')) {\r
+               if (($group eq '')\r
+                   || (($group ge 'A') && ($group le 'Z'))) {\r
+                   print OUT "</indexdiv>\n" if !$first;\r
+                   print OUT "<indexdiv><title>$symbolsname</title>\n\n";\r
+                   $group = $letter;\r
+               }\r
+           } elsif (($group eq '') || ($group ne $letter)) {\r
+               print OUT "</indexdiv>\n" if !$first;\r
+               print OUT "<indexdiv><title>$letter</title>\n\n";\r
+               $group = $letter;\r
+           }\r
+       }\r
+\r
+       $first = 0; # there can only be on first ;-)\r
+\r
+       print OUT "<indexentry>\n";\r
+       print OUT "  <primaryie>", $idx->{'primary'};\r
+       $lastout = "primaryie";\r
+\r
+       if ($idx->{'secondary'}) {\r
+           print OUT "\n  </primaryie>\n";\r
+           print OUT "  <secondaryie>", $idx->{'secondary'};\r
+           $lastout = "secondaryie";\r
+       };\r
+\r
+       if ($idx->{'tertiary'}) {\r
+           print OUT "\n  </secondaryie>\n";\r
+           print OUT "  <tertiaryie>", $idx->{'tertiary'};\r
+           $lastout = "tertiaryie";\r
+       }\r
+    } elsif (!&tsame($last, $idx, 'secondary')) {\r
+       print "DIFF SEC\n" if $debug;\r
+\r
+       print OUT "\n  </$lastout>\n" if $lastout;\r
+\r
+       print OUT "  <secondaryie>", $idx->{'secondary'};\r
+       $lastout = "secondaryie";\r
+       if ($idx->{'tertiary'}) {\r
+           print OUT "\n  </secondaryie>\n";\r
+           print OUT "  <tertiaryie>", $idx->{'tertiary'};\r
+           $lastout = "tertiaryie";\r
+       }\r
+    } elsif (!&tsame($last, $idx, 'tertiary')) {\r
+       print "DIFF TERT\n" if $debug;\r
+\r
+       print OUT "\n  </$lastout>\n" if $lastout;\r
+\r
+       if ($idx->{'tertiary'}) {\r
+           print OUT "  <tertiaryie>", $idx->{'tertiary'};\r
+           $lastout = "tertiaryie";\r
+       }\r
+    }\r
+\r
+    &print_term($idx);\r
+    \r
+    $last = $idx;\r
+}\r
+\r
+# Termcount is > 0 iff some entries were skipped.\r
+print STDERR "$termcount entries ignored...\n";\r
+\r
+&end_entry();\r
+\r
+print OUT "</indexdiv>\n" if $lettergroups;\r
+print OUT "</$indextag>\n";\r
+\r
+close (OUT);\r
+\r
+print STDERR "Done.\n";\r
+\r
+sub same {\r
+    my($a) = shift;\r
+    my($b) = shift;\r
+\r
+    my($aP) = $a->{'psortas'} || $a->{'primary'};   \r
+    my($aS) = $a->{'ssortas'} || $a->{'secondary'}; \r
+    my($aT) = $a->{'tsortas'} || $a->{'tertiary'};  \r
+                                                   \r
+    my($bP) = $b->{'psortas'} || $b->{'primary'};   \r
+    my($bS) = $b->{'ssortas'} || $b->{'secondary'}; \r
+    my($bT) = $b->{'tsortas'} || $b->{'tertiary'};  \r
+\r
+    my($same);\r
+\r
+    $aP =~ s/^\s*//; $aP =~ s/\s*$//; $aP = uc($aP);\r
+    $aS =~ s/^\s*//; $aS =~ s/\s*$//; $aS = uc($aS);\r
+    $aT =~ s/^\s*//; $aT =~ s/\s*$//; $aT = uc($aT);\r
+    $bP =~ s/^\s*//; $bP =~ s/\s*$//; $bP = uc($bP);\r
+    $bS =~ s/^\s*//; $bS =~ s/\s*$//; $bS = uc($bS);\r
+    $bT =~ s/^\s*//; $bT =~ s/\s*$//; $bT = uc($bT);\r
+\r
+#    print "[$aP]=[$bP]\n";\r
+#    print "[$aS]=[$bS]\n";\r
+#    print "[$aT]=[$bT]\n";\r
+\r
+    # Two index terms are the same if:\r
+    # 1. the primary, secondary, and tertiary entries are the same\r
+    #    (or have the same SORTAS)\r
+    # AND\r
+    # 2. They occur in the same titled section\r
+    # AND\r
+    # 3. They point to the same place\r
+    #\r
+    # Notes: Scope is used to suppress some entries, but can't be used\r
+    #          for comparing duplicates.\r
+    #        Interpretation of "the same place" depends on whether or\r
+    #          not $linkpoints is true.\r
+\r
+    $same = (($aP eq $bP)\r
+            && ($aS eq $bS)\r
+            && ($aT eq $bT)\r
+            && ($a->{'title'} eq $b->{'title'})\r
+            && ($a->{'href'} eq $b->{'href'}));\r
+\r
+    # If we're linking to points, they're only the same if they link\r
+    # to exactly the same spot.  (surely this is redundant?)\r
+    $same = $same && ($a->{'hrefpoint'} eq $b->{'hrefpoint'})\r
+       if $linkpoints;\r
+\r
+    $same;\r
+}\r
+\r
+sub tsame {\r
+    # Unlike same(), tsame only compares a single term\r
+    my($a) = shift;\r
+    my($b) = shift;\r
+    my($term) = shift;\r
+    my($sterm) = substr($term, 0, 1) . "sortas";\r
+    my($A, $B);\r
+\r
+    $A = $a->{$sterm} || $a->{$term};\r
+    $B = $b->{$sterm} || $b->{$term};\r
+\r
+    $A =~ s/^\s*//; $A =~ s/\s*$//; $A = uc($A);\r
+    $B =~ s/^\s*//; $B =~ s/\s*$//; $B = uc($B);\r
+\r
+    return $A eq $B;\r
+}\r
+\r
+sub end_entry {\r
+    # End any open elements...\r
+    print OUT "\n  </$lastout>\n" if $lastout;\r
+    print OUT "</indexentry>\n\n";\r
+    $lastout = "";\r
+}\r
+\r
+sub print_term {\r
+    # Print out the links for an indexterm.  There can be more than\r
+    # one if the term has a ZONE that points to more than one place.\r
+    # (do we do the right thing in that case?)\r
+    my($idx) = shift;\r
+    my($key, $indent, @hrefs);\r
+    my(%href) = ();\r
+    my(%phref) = ();\r
+\r
+    $indent = "    ";\r
+\r
+    if ($idx->{'see'}) {\r
+       # it'd be nice to make this a link...\r
+       if ($lastout) {\r
+           print OUT "\n  </$lastout>\n";\r
+           $lastout = "";\r
+       }\r
+       print OUT $indent, "<seeie>", $idx->{'see'}, "</seeie>\n";\r
+       return;\r
+    }\r
+\r
+    if ($idx->{'seealso'}) {\r
+       # it'd be nice to make this a link...\r
+       if ($lastout) {\r
+           print OUT "\n  </$lastout>\n";\r
+           $lastout = "";\r
+       }\r
+       print OUT $indent, "<seealsoie>", $idx->{'seealso'}, "</seealsoie>\n";\r
+       return;\r
+    }\r
+\r
+    if (keys %{$idx->{'zone'}}) {\r
+       foreach $key (keys %{$idx->{'zone'}}) {\r
+           $href{$key} = $idx->{'zone'}->{$key};\r
+           $phref{$key} = $idx->{'zone'}->{$key};\r
+       }\r
+    } else {\r
+       $href{$idx->{'href'}} = $idx->{'title'};\r
+       $phref{$idx->{'href'}} = $idx->{'hrefpoint'};\r
+    }\r
+\r
+    # We can't use <LINK> because we don't know the ID of the term in the\r
+    # original source (and, in fact, it might not have one).\r
+    print OUT ",\n";\r
+    @hrefs = keys %href;\r
+    while (@hrefs) {\r
+       my($linkend) = "";\r
+       my($role) = "";\r
+       $key = shift @hrefs;\r
+       if ($linkpoints) {\r
+           $linkend = $phref{$key};\r
+       } else {\r
+           $linkend = $key;\r
+       }\r
+\r
+       $role = $linkend;\r
+       $role = $1 if $role =~ /\#(.*)$/;\r
+\r
+       print OUT $indent;\r
+       print OUT "<ulink url=\"$linkend\" role=\"$role\">";\r
+       print OUT "<emphasis>" if ($idx->{'significance'} eq 'PREFERRED');\r
+       print OUT $href{$key};\r
+       print OUT "</emphasis>" if ($idx->{'significance'} eq 'PREFERRED');\r
+       print OUT "</ulink>";\r
+    }\r
+}\r
+\r
+sub termsort {\r
+    my($aP) = $a->{'psortas'} || $a->{'primary'};   \r
+    my($aS) = $a->{'ssortas'} || $a->{'secondary'}; \r
+    my($aT) = $a->{'tsortas'} || $a->{'tertiary'};  \r
+    my($ap) = $a->{'count'};\r
+                                                   \r
+    my($bP) = $b->{'psortas'} || $b->{'primary'};   \r
+    my($bS) = $b->{'ssortas'} || $b->{'secondary'}; \r
+    my($bT) = $b->{'tsortas'} || $b->{'tertiary'};  \r
+    my($bp) = $b->{'count'};\r
+\r
+    $aP =~ s/^\s*//; $aP =~ s/\s*$//; $aP = uc($aP);\r
+    $aS =~ s/^\s*//; $aS =~ s/\s*$//; $aS = uc($aS);\r
+    $aT =~ s/^\s*//; $aT =~ s/\s*$//; $aT = uc($aT);\r
+    $bP =~ s/^\s*//; $bP =~ s/\s*$//; $bP = uc($bP);\r
+    $bS =~ s/^\s*//; $bS =~ s/\s*$//; $bS = uc($bS);\r
+    $bT =~ s/^\s*//; $bT =~ s/\s*$//; $bT = uc($bT);\r
+\r
+    if ($aP eq $bP) {\r
+       if ($aS eq $bS) {\r
+           if ($aT eq $bT) {\r
+               # make sure seealso's always sort to the bottom\r
+               return 1 if ($a->{'seealso'});\r
+               return -1  if ($b->{'seealso'});\r
+               # if everything else is the same, keep these elements\r
+               # in document order (so the index links are in the right\r
+               # order)\r
+               return $ap <=> $bp;\r
+           } else {\r
+               return $aT cmp $bT;\r
+           }\r
+       } else {\r
+           return $aS cmp $bS;\r
+       }\r
+    } else {\r
+       return $aP cmp $bP;\r
+    }\r
+}\r
+\r
+sub sortsymbols {\r
+    my(@term) = @_;\r
+    my(@new) = ();\r
+    my(@sym) = ();\r
+    my($letter);\r
+    my($idx);\r
+\r
+    # Move the non-letter things to the front.  Should digits be thier\r
+    # own group?  Maybe...\r
+    foreach $idx (@term) {\r
+       $letter = $idx->{'psortas'};\r
+       $letter = $idx->{'primary'} if !$letter;\r
+       $letter = uc(substr($letter, 0, 1));\r
+\r
+       if (($letter lt 'A') || ($letter gt 'Z')) {\r
+           push (@sym, $idx);\r
+       } else {\r
+           push (@new, $idx);\r
+       }\r
+    }\r
+\r
+    return (@sym, @new);\r
+}\r
+\r
+sub safe_open {\r
+    local(*OUT) = shift;\r
+    local(*F, $_);\r
+\r
+    if (($outfile ne '-') && (!$forceoutput)) {\r
+       my($handedit) = 1;\r
+       if (open (OUT, $outfile)) {\r
+           while (<OUT>) {\r
+               if (/<!-- Remove this comment if you edit this file by hand! -->/){\r
+                   $handedit = 0;\r
+                   last;\r
+               }\r
+           } \r
+           close (OUT);\r
+       } else {\r
+           $handedit = 0;\r
+       }\r
+       \r
+       if ($handedit) {\r
+           print "\n$outfile appears to have been edited by hand; use -f or\n";\r
+           print "      change the output file.\n";\r
+           exit 1;\r
+       }\r
+    }\r
+\r
+    open (OUT, ">$outfile") || die "$usage\nCannot write to $outfile.\n";\r
+\r
+    if ($preamble) { \r
+       # Copy the preamble\r
+       if (open(F, $preamble)) {\r
+           while (<F>) {\r
+               print OUT $_;\r
+           }\r
+           close(F);\r
+       } else {\r
+           warn "$0: cannot open preamble $preamble.\n";\r
+       }\r
+    }\r
+}\r
diff --git a/docs/docbook/scripts/fix_print_html.lib b/docs/docbook/scripts/fix_print_html.lib
new file mode 100644 (file)
index 0000000..e8a9aaa
--- /dev/null
@@ -0,0 +1,172 @@
+#
+# fix_print_html.lib
+#
+#   Dan Scott  / <dan.scott (at) acm.org>
+#   Ferg       / <gferg (at) sgi.com>
+#
+#   Used to prepare single-file HTML variant for PDF/Postscript creation
+#   thru htmldoc.
+#
+# log:
+#     16Oct2000 - initial entry <gferg (at) sgi.com>
+#     03Apr2001 - fix for <preface>
+#
+#
+
+sub fix_print_html {
+
+   my($in,$out,$ttl) = @_;
+
+   open(IN_FILE, "< $in") || do {
+        print "fix_print_html: cannot open $in: $!\n";
+        return 0;
+   };
+
+   my($buf,$ttl_buf) = '';
+   my($indx) = -1;
+   my($is_article) = 0;
+   while(<IN_FILE>) {
+
+         if( $indx == 1 ) {
+
+             # ignore everything until we see the chapter or sect
+             #
+             if( $_ =~ /CLASS="CHAP/i || $_ =~ /CLASS="PREF/i ) {
+
+                 $buf .= $_;
+                 $indx++;
+
+             } elsif( $_ =~ /CLASS="SECT/ || $_ =~ /CLASS="sect/ )  {
+
+                 $buf .= $_;
+                 $indx++;
+                 $is_article = 1;
+
+             } else {
+                 next;
+             }
+
+         } elsif( $indx == 0 ) {
+
+             # write out the title page file
+             #
+             if( $_ =~ /CLASS="TOC"/ ) {
+
+                 $ttl_buf .= "></DIV>\n</BODY>\n</HTML>\n"; 
+                 $ttl_buf =~ s/<\/H1\n/<\/H1\n><P><BR><BR\n/ms;
+                 
+                 open(TOC_FILE, "> $ttl") || do {
+                      print "fix_print_html: cannot open $ttl: $!\n";
+                      close(IN_FILE);
+                      return 0;
+                 };
+                 print TOC_FILE $ttl_buf;
+                 close(TOC_FILE);
+                 $ttl_buf = '';
+                 $indx++;
+
+             } else {
+                $ttl_buf .= $_;
+             }
+
+         } elsif( $indx < 0 ) {
+
+             # up to this point, both buffers get the line
+             #
+             if( $_ =~ /CLASS="TITLEPAGE"/ ) {
+
+                 $ttl_buf .= $_ . ">\n<P>\n<BR><BR><BR><BR>\n<\/P\n";
+                 $indx++;
+
+             } else {
+                 $buf .= $_;
+                 $ttl_buf .= $_;
+             }
+
+         } else {
+
+             $buf .= $_;
+         }
+   }
+   close(IN_FILE);
+
+   open(OUT_FILE, "> $out") || do {
+        print "fix_print_html: cannot open $out: $!\n";
+        return 0;
+   };
+
+
+   # make these corrections and write out the file
+   #
+
+   $buf =~ s/(\n><LI\n)><P\n(.*?)<\/P\n>/$1$2\n/gms;
+   $buf =~ s/(\n><LI\n><DIV\nCLASS="FORMALPARA"\n)><P\n(.*?)<\/P\n>/$1$2\n/gms;
+   $buf =~ s/(\n><LI\nSTYLE="[^\"]+"\n)><P\n(.*?)<\/P\n>/$1$2\n/gms;
+   if( $is_article == 0 ) {
+       $buf =~ s/(\nCLASS="SECT[TION\d]+"\n>)<H1\n(.*?)<\/H1/$1<H2\n$2<\/H2/gims;
+       $buf =~ s/(\nCLASS="SECT[TION\d]+"\n><HR>)<H1\n(.*?)<\/H1/$1<H2\n$2<\/H2/gims;
+   }
+   $buf =~ s/<H1(\nCLASS="INDEXDIV"\n)(.*?)<\/H1/<H2$1$2<\/H2/gims;
+   if( ($indx = rindex($buf, "<H1\n><A\nNAME=\"DOC-INDEX\"")) > -1 ) {
+       $buf = substr($buf, 0, $indx);
+       $buf .= "\n<\/BODY>\n<\/HTML>\n\n";
+   } elsif( ($indx = rindex($buf, "<H1\n><A\nNAME=\"doc-index\"")) > -1 ) {
+       $buf = substr($buf, 0, $indx);
+       $buf .= "\n<\/BODY>\n<\/HTML>\n\n";
+   }
+   $buf =~ s/\&\#13;//g;
+   $buf =~ s/\&\#60;/\&lt;/g;
+   $buf =~ s/\&\#62;/\&gt;/g;
+   $buf =~ s/\&\#8211;/\-/g;
+   $buf =~ s/WIDTH=\"\d\"//g;
+   $buf =~ s/><[\/]*TBODY//g;
+   $buf =~ s/><[\/]*THEAD//g;
+   $buf =~ s/TYPE=\"1\"\n//gim;
+
+   if( $is_article == 0 ) {
+
+       # for books...decrement the headers by 1 and then re-set the
+       # chapter level only to H1...
+       #
+       my($cnt,$j) = 0;
+       for($cnt=5; $cnt > 0; $cnt--) {
+           $j = $cnt + 1;
+           $buf =~ s/<H${cnt}/<H${j}/g;
+           $buf =~ s/<\/H${cnt}/<\/H${j}/g;
+       }
+
+       my(@l) = split(/\n/, $buf);
+       for( $cnt=0; $cnt < (@l + 0); $cnt++ ) {
+
+            if( $j == 1 ) {
+                if( $l[$cnt] =~ /<DIV/ ) {
+                    $j = 0;
+                    next;
+                }
+                $l[$cnt] =~ s/<H2/<H1/g;
+                $l[$cnt] =~ s/<\/H2/<\/H1/g;
+            }
+            if( $l[$cnt] =~ /^CLASS=\"CHAP/i
+                ||
+                $l[$cnt] =~ /^CLASS=\"PREF/i ) {
+                $j = 1;
+            }
+       }
+
+       $buf = join("\n", @l);
+
+   }
+   $buf =~ s/><DIV\nCLASS="\w+"\n//gms;
+   $buf =~ s/><\/DIV\n//gms;
+   $buf =~ s/(><LI\n)><P\n(.*?)<\/P\n>(<\/LI\n)/$1$2$3/gms;
+
+   print OUT_FILE $buf;
+   close(OUT_FILE);
+
+   return 1;
+}
+
+# Return true from package include
+#
+1;
+
diff --git a/docs/docbook/scripts/ldp_print b/docs/docbook/scripts/ldp_print
new file mode 100755 (executable)
index 0000000..70bb801
--- /dev/null
@@ -0,0 +1,71 @@
+#!/usr/bin/perl -w
+#
+# usage: ldp_print <single_file.html>
+#
+# Creates a PDF variant of a single-file HTML representation of a
+# DocBook SGML (or XML) instance. This simple wrapper assumes that
+# the file was created using {open}jade in a manner similar to:
+#
+#      jade -t sgml -i html -V nochunks -d $style $fname > $fname.html
+#
+# Give this script the filename as an argument. It will then parse
+# the file into 'title.html' and 'body.html' and send each to
+# htmldoc (as the corresponding title page and body of the document).
+#
+#
+# CAVEATS:
+#
+# Assumes perl is in /usr/bin; adjust if necessary
+#
+# You may need to specify where the htmldoc executable resides.
+# The script assumes it's within your $PATH.
+#
+# If you want Postscript as an output variant, uncomment the 
+# appropriate lines (see below).
+#
+# Relies on output from a DocBook instance created via DSSSL/{open}jade!
+#
+# Cleans up (removes) the intermediate files it creates (but not the
+# PDF or Postscript files, obviously!)
+#
+# Works silently; PDF (PostScript) will be created in the same directory
+# as was specified for the input (single-file HTML) file.
+#
+# Provided without warranty or support!
+#
+#      gferg@sgi.com / Ferg (used as part of the LDP production env)
+#
+
+use strict;
+push(@INC, "./");
+require 'fix_print_html.lib';
+
+if( $ARGV[0] eq '' || !(-r $ARGV[0]) ) {
+    die "\nusage: ldp_print <single_file.html>\n\n";
+}
+
+my($fname_wo_ext) = $ARGV[0];
+$fname_wo_ext =~ s/\.[\w]+$//;
+
+
+# create new files from single HTML file to use for print
+#
+&fix_print_html($ARGV[0], 'body.html', 'title.html');
+
+my($cmd) = "htmldoc --size universal -t pdf  -f ${fname_wo_ext}.pdf " .
+           "--firstpage p1 --titlefile title.html body.html";
+
+# For postscript output; append onto the above cmd string:
+#
+#          "; htmldoc --size universal -t ps -f -f ${fname_wo_ext}.ps " .
+#          "--firstpage p1 --titlefile title.html body.html";
+#
+system($cmd);
+die "\nldp_print: could not create ${fname_wo_ext}.pdf ($!)\n" if ($?);
+
+# cleanup
+#
+system("rm -f body.html title.html");
+
+exit(0);
+
diff --git a/docs/docbook/scripts/make-article.pl b/docs/docbook/scripts/make-article.pl
new file mode 100644 (file)
index 0000000..d1f8c66
--- /dev/null
@@ -0,0 +1,25 @@
+#!/usr/bin/perl
+
+$ignore = 0;
+
+print "<!DOCTYPE article PUBLIC \"-//OASIS//DTD DocBook V4.1//EN\">\n";
+
+while (<STDIN>) {
+
+       $_ =~ s/<chapter/<article/g;
+       $_ =~ s/<\/chapter/<\/article/g;
+
+       if ( $_ =~ '<articleinfo>') {
+               $ignore = 1;
+       }
+
+       if ( $_ =~ '</articleinfo>') {
+               $ignore = 0;
+               $_ = "";
+       }
+
+
+       if (! $ignore) { print "$_"; }
+
+
+}
index 66bc101e086bca2513d24a26ad7e8eeb4a244b67..dbbdceaabccd9a267cd21e0f7ce6af5d9d72c189 100644 (file)
@@ -1,15 +1,13 @@
 #!/usr/bin/perl
 
-## small script to strip the <URL:...> tags from
+## small script to stirp the <URL:...> tags from 
 ## manpages generated from docbook2man.  we'll leave
 ## the <URL:ftp://...> and <URL:mailto:...> links for now
 
 while (<STDIN>) {
 
        chomp ($_);
-       $_ =~ s/\s*<URL:.*html.*>\s+/ /g;
-       $_ =~ s/\s*<URL:.*html.*>\S//g;
-       $_ =~ s/\s*<URL:.*html.*>$//g;
+       $_ =~ s/\s*<URL:.*html.*>\s*//g;
        print "$_\n";
 
 }
diff --git a/docs/docbook/stylesheets/ldp.dsl.in b/docs/docbook/stylesheets/ldp.dsl.in
new file mode 100644 (file)
index 0000000..d6e06f4
--- /dev/null
@@ -0,0 +1,256 @@
+<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" [
+<!ENTITY % html "IGNORE">
+<![%html;[
+<!ENTITY % print "IGNORE">
+<!ENTITY docbook.dsl SYSTEM "@SGML_SHARE@/dsssl/docbook/html/docbook.dsl" CDATA dsssl>
+]]>
+<!ENTITY % print "INCLUDE">
+<![%print;[
+<!ENTITY docbook.dsl SYSTEM "@SGML_SHARE@/dsssl/docbook/print/docbook.dsl" CDATA dsssl>
+]]>
+]>
+
+<style-sheet>
+
+<style-specification id="print" use="docbook">
+<style-specification-body> 
+
+;; ==============================
+;; customize the print stylesheet
+;; ==============================
+
+(declare-characteristic preserve-sdata?
+  ;; this is necessary because right now jadetex does not understand
+  ;; symbolic entities, whereas things work well with numeric entities.
+  "UNREGISTERED::James Clark//Characteristic::preserve-sdata?"
+  #f)
+
+(define %generate-article-toc%
+  ;; Should a Table of Contents be produced for Articles?
+  #t)
+
+(define (toc-depth nd)
+  2)
+
+(define %generate-article-titlepage-on-separate-page%
+  ;; Should the article title page be on a separate page?
+  #t)
+
+(define %section-autolabel%
+  ;; Are sections enumerated?
+  #t)
+
+(define %footnote-ulinks%
+  ;; Generate footnotes for ULinks?
+  #f)
+
+(define %bop-footnotes%
+  ;; Make "bottom-of-page" footnotes?
+  #f)
+
+(define %body-start-indent%
+  ;; Default indent of body text
+  0pi)
+
+(define %para-indent-firstpara%
+  ;; First line start-indent for the first paragraph
+  0pt)
+
+(define %para-indent%
+  ;; First line start-indent for paragraphs (other than the first)
+  0pt)
+
+(define %block-start-indent%
+  ;; Extra start-indent for block-elements
+  0pt)
+
+(define formal-object-float
+  ;; Do formal objects float?
+  #t)
+
+(define %hyphenation%
+  ;; Allow automatic hyphenation?
+  #t)
+
+(define %admon-graphics%
+  ;; Use graphics in admonitions?
+  #f)
+
+</style-specification-body>
+</style-specification>
+
+
+<!--
+;; ===================================================
+;; customize the html stylesheet; borrowed from Cygnus
+;; at http://sourceware.cygnus.com/ (cygnus-both.dsl)
+;; ===================================================
+-->
+
+<style-specification id="html" use="docbook">
+<style-specification-body> 
+
+(declare-characteristic preserve-sdata?
+  ;; this is necessary because right now jadetex does not understand
+  ;; symbolic entities, whereas things work well with numeric entities.
+  "UNREGISTERED::James Clark//Characteristic::preserve-sdata?"
+  #f)
+
+(define %generate-legalnotice-link%
+  ;; put the legal notice in a separate file
+  #t)
+
+(define %admon-graphics-path%
+  ;; use graphics in admonitions, set their
+  "../images/")
+
+(define %admon-graphics%
+  #f)
+
+(define %funcsynopsis-decoration%
+  ;; make funcsynopsis look pretty
+  #t)
+
+(define %html-ext%
+  ;; when producing HTML files, use this extension
+  ".html")
+
+(define %generate-book-toc%
+  ;; Should a Table of Contents be produced for books?
+  #t)
+
+(define %generate-article-toc% 
+  ;; Should a Table of Contents be produced for articles?
+  #t)
+
+(define %generate-part-toc%
+  ;; Should a Table of Contents be produced for parts?
+  #t)
+
+(define %generate-book-titlepage%
+  ;; produce a title page for books
+  #t)
+
+(define %generate-article-titlepage%
+  ;; produce a title page for articles
+  #t)
+
+(define (chunk-skip-first-element-list)
+  ;; forces the Table of Contents on separate page
+  '())
+
+(define (list-element-list)
+  ;; fixes bug in Table of Contents generation
+  '())
+
+(define %root-filename%
+  ;; The filename of the root HTML document (e.g, "index").
+  "index")
+
+(define %shade-verbatim%
+  ;; verbatim sections will be shaded if t(rue)
+  #t)
+
+(define %use-id-as-filename%
+  ;; Use ID attributes as name for component HTML files?
+  #t)
+
+(define %graphic-extensions%
+  ;; graphic extensions allowed
+  '("gif" "png" "jpg" "jpeg" "tif" "tiff" "eps" "epsf" ))
+
+(define %graphic-default-extension% 
+  "gif")
+
+(define %section-autolabel%
+  ;; For enumerated sections (1.1, 1.1.1, 1.2, etc.)
+  #t)
+
+(define (toc-depth nd)
+  ;; more depth (2 levels) to toc; instead of flat hierarchy
+  ;; 2)
+  4)
+
+(element emphasis
+  ;; make role=strong equate to bold for emphasis tag
+  (if (equal? (attribute-string "role") "strong")
+     (make element gi: "STRONG" (process-children))
+     (make element gi: "EM" (process-children))))
+
+(define (book-titlepage-recto-elements)
+  ;; elements on a book's titlepage
+  ;; note: added revhistory to the default list
+  (list (normalize "title")
+        (normalize "subtitle")
+        (normalize "graphic")
+        (normalize "mediaobject")
+        (normalize "corpauthor")
+        (normalize "authorgroup")
+        (normalize "author")
+        (normalize "editor")
+        (normalize "copyright")
+        (normalize "revhistory")
+        (normalize "abstract")
+        (normalize "legalnotice")))
+
+(define (article-titlepage-recto-elements)
+  ;; elements on an article's titlepage
+  ;; note: added othercredit to the default list
+  (list (normalize "title")
+        (normalize "subtitle")
+        (normalize "authorgroup")
+        (normalize "author")
+        (normalize "othercredit")
+        (normalize "releaseinfo")
+        (normalize "copyright")
+        (normalize "pubdate")
+        (normalize "revhistory")
+        (normalize "abstract")))
+
+(mode article-titlepage-recto-mode
+
+ (element contrib
+  ;; print out with othercredit information; for translators, etc.
+  (make sequence
+    (make element gi: "SPAN"
+          attributes: (list (list "CLASS" (gi)))
+          (process-children))))
+
+ (element othercredit
+  ;; print out othercredit information; for translators, etc.
+  (let ((author-name  (author-string))
+        (author-contrib (select-elements (children (current-node))
+                                          (normalize "contrib"))))
+    (make element gi: "P"
+         attributes: (list (list "CLASS" (gi)))
+         (make element gi: "B"  
+              (literal author-name)
+              (literal " - "))
+         (process-node-list author-contrib))))
+)
+
+(define (article-title nd)
+  (let* ((artchild  (children nd))
+         (artheader (select-elements artchild (normalize "artheader")))
+         (artinfo   (select-elements artchild (normalize "articleinfo")))
+         (ahdr (if (node-list-empty? artheader)
+                   artinfo
+                   artheader))
+         (ahtitles  (select-elements (children ahdr)
+                                     (normalize "title")))
+         (artitles  (select-elements artchild (normalize "title")))
+         (titles    (if (node-list-empty? artitles)
+                        ahtitles
+                        artitles)))
+    (if (node-list-empty? titles)
+        ""
+        (node-list-first titles))))
+
+
+</style-specification-body>
+</style-specification>
+
+<external-specification id="docbook" document="docbook.dsl">
+
+</style-sheet>
+
index 8f57e73aa31f43d32df84c55fa92d53090b9cdf2..eddad19e253ea4292ea11fb097c895d2fd420611 100644 (file)
@@ -329,6 +329,22 @@ to specify a service name correctly), read on:
 <item> Some clients force service names into upper case.
 </itemize>
 
+<sect1>My client reports "cannot find domain controller", "cannot log on to the network" or similar <p> <label id="cant_see_net">
+Nothing is wrong - Samba does not implement the primary domain name
+controller stuff for several reasons, including the fact that the
+whole concept of a primary domain controller and "logging in to a
+network" doesn't fit well with clients possibly running on multiuser
+machines (such as users of smbclient under Unix). Having said that,
+several developers are working hard on building it in to the next
+major version of Samba. If you can contribute, send a message to
+<htmlurl url="mailto:samba@samba.org" name="samba@samba.org"> !
+
+Seeing this message should not affect your ability to mount redirected
+disks and printers, which is really what all this is about.
+
+For many clients (including Windows for Workgroups and Lan Manager),
+setting the domain to STANDALONE at least gets rid of the message.
+
 <sect1>Printing doesn't work :-(<p> <label id="no_printing"> 
 
 Make sure that the specified print command for the service you are
@@ -356,6 +372,29 @@ coreplus.  Also not that print status error messages don't mean
 printing won't work. The print status is received by a different
 mechanism.
 
+<sect1>My programs install on the server OK, but refuse to work properly<p><label id="programs_wont_run">
+There are numerous possible reasons for this, but one MAJOR
+possibility is that your software uses locking. Make sure you are
+using Samba 1.6.11 or later. It may also be possible to work around
+the problem by setting "locking=no" in the Samba configuration file
+for the service the software is installed on. This should be regarded
+as a strictly temporary solution.
+
+In earlier Samba versions there were some difficulties with the very
+latest Microsoft products, particularly Excel 5 and Word for Windows
+6. These should have all been solved. If not then please let Andrew
+Tridgell know via email at <htmlurl url="mailto:samba@samba.org" name="samba@samba.org">.
+
+<sect1>My "server string" doesn't seem to be recognised<p><label id="bad_server_string">
+OR My client reports the default setting, eg. "Samba 1.9.15p4", instead
+of what I have changed it to in the smb.conf file.
+
+You need to use the -C option in nmbd. The "server string" affects
+what smbd puts out and -C affects what nmbd puts out.
+Current versions of Samba (1.9.16 +) have combined these options into
+the "server string" field of smb.conf, -C for nmbd is now obsolete.
+
 <sect1>My client reports "This server is not configured to list shared resources" <p> <label id="cant_list_shares">
 Your guest account is probably invalid for some reason. Samba uses the
 guest account for browsing in smbd.  Check that your guest account is
@@ -404,4 +443,50 @@ it casts to -1 as a uid, and the setreuid() system call ignores (with
 no error) uid changes to -1. This means any daemon attempting to run
 as uid 65535 will actually run as root. This is not good!
 
+<sect1>Issues specific to IBM OS/2 systems<p><label id="OS2Issues">
+
+<url url="http://carol.wins.uva.nl/~leeuw/samba/samba2.html" name="Samba for OS/2">
+
+<sect1>Issues specific to IBM MVS systems<p><label id="MVSIssues">
+
+<url url="ftp://ftp.mks.com/pub/samba/" name="Samba for OS/390 MVS">
+
+<sect1>Issues specific to Digital VMS systems<p><label id="VMSIssues">
+
+<sect1>Issues specific to Amiga systems<p><label id="AmigaIssues">
+
+<url url="http://www.gbar.dtu.dk/~c948374/Amiga/Samba/" name="Samba for Amiga">
+
+There is a mailing list for Samba on the Amiga.
+
+                                Subscribing.
+
+   Send an email to rask-samba-request@kampsax.dtu.dk with the word subscribe
+in the message. The list server will use the address in the Reply-To: or
+From: header field, in that order.
+
+                               Unsubscribing.
+
+   Send an email to rask-samba-request@kampsax.dtu.dk with the word
+unsubscribe in the message. The list server will use the address in the
+Reply-To: or From: header field, in that order. If you are unsure which
+address you are subscribed with, look at the headers. You should see a
+"From " (no colon) or Return-Path: header looking something like
+
+   rask-samba-owner-myname=my.domain@kampsax.dtu.dk
+
+where myname=my.domain gives you the address myname@my.domain. This also
+means that I will always be able to find out which address is causing
+bounces, for example.
+                                List archive.
+
+   Messages sent to the list are archived in HTML. See the mailing list home
+page at <URL url="http://www.gbar.dtu.dk/~c948374/Amiga/Samba/mailinglist/">
+
+<sect1>Issues specific to Novell IntraNetware systems<p><label id="NetwareIssues">
+
+<sect1>Issues specific to Stratos VOS systems<p><label id="NetwareIssues">
+
+<url url="ftp://ftp.stratus.com/pub/vos/tools/" name="Samba for Stratus VOS">
+
 </article>
index ecaa1b267cd2fbb03dcbfb460b532bd7fecb65fd..377d81663d76a9953fa4e2685cdbae8dadcf67ab 100644 (file)
@@ -126,6 +126,17 @@ from...)
 information about client-side issues, includes a list of all clients
 that are known to work with Samba.
 
+<item> <url url="samba-man-index.html" name="manual pages"> contains
+descriptions of and links to all the Samba manual pages, in Unix man and
+postscript format.
+
+<item> <url url="samba-txt-index.html"> has descriptions of and links to
+a large number of text files have been contributed to samba covering
+many topics. These are gradually being absorbed into the FAQs and HOWTOs
+but in the meantime you might find helpful answers here.
+
+<item> 
+
 </itemize>
 
 <sect> General Information<p><label id="general_info">
@@ -172,9 +183,97 @@ must be made freely available. A copy of the GPL must always be included
 in any copy of the package.
 
 The primary creator of the Samba suite is Andrew Tridgell. Later
-versions incorporate much effort by many helpers. The man pages
+versions incorporate much effort by many net.helpers. The man pages
 and this FAQ were originally written by Karl Auer.
 
+<sect1> What is the current version of Samba?<p><label id="current_version">
+
+At time of writing, the current version was 1.9.17. If you want to be
+sure check the bottom of the change-log file. <url url="ftp://samba.org/pub/samba/alpha/change-log">
+
+For more information see <ref id="version_nums" name="What do the version numbers mean?">
+
+<sect1> Where can I get it? <p><label id="WhereFrom">
+
+The Samba suite is available via anonymous ftp from samba.org and
+many <url url="../MIRRORS" name="mirror"> sites. You will get much
+faster performance if you use a mirror site. The latest and greatest
+versions of the suite are in the directory:
+
+/pub/samba/
+
+Development (read "alpha") versions, which are NOT necessarily stable
+and which do NOT necessarily have accurate documentation, are available
+in the directory:
+
+/pub/samba/alpha
+
+Note that binaries are NOT included in any of the above. Samba is
+distributed ONLY in source form, though binaries may be available from
+other sites. Most Linux distributions, for example, do contain Samba
+binaries for that platform. The VMS, OS/2, Netware and Amiga and other
+ports typically have binaries made available.
+
+A special case is vendor-provided binary packages. Samba binaries and
+default configuration files are put into packages for a specific
+operating system. RedHat Linux and Sun Solaris (Sparc and x86) is
+already included, and others such as OS/2 may follow. All packages are
+in the directory:
+
+/pub/samba/Binary_Packages/"OS_Vendor"
+
+<sect1>What do the version numbers mean?<p><label id="version_nums">
+
+It is not recommended that you run a version of Samba with the word
+"alpha" in its name unless you know what you are doing and are willing
+to do some debugging. Many, many people just get the latest
+recommended stable release version and are happy. If you are brave, by
+all means take the plunge and help with the testing and development -
+but don't install it on your departmental server. Samba is typically
+very stable and safe, and this is mostly due to the policy of many
+public releases.
+
+How the scheme works:
+
+<enum>
+
+<item>When major changes are made the version number is increased. For
+example, the transition from 1.9.16 to 1.9.17. However, this version
+number will not appear immediately and people should continue to use
+1.9.15 for production systems (see next point.)
+
+<item>Just after major changes are made the software is considered
+unstable, and a series of alpha releases are distributed, for example
+1.9.16alpha1. These are for testing by those who know what they are
+doing.  The "alpha" in the filename will hopefully scare off those who
+are just looking for the latest version to install.
+
+<item>When Andrew thinks that the alphas have stabilised to the point
+where he would recommend new users install it, he renames it to the
+same version number without the alpha, for example 1.9.17.
+
+<item>Inevitably bugs are found in the "stable" releases and minor patch
+levels are released which give us the pXX series, for example 1.9.17p2.
+
+</enum>
+
+So the progression goes:
+
+<verb>
+               1.9.16p10       (production)
+               1.9.16p11       (production)
+               1.9.17alpha1    (test sites only)
+                 :
+               1.9.17alpha20   (test sites only)
+               1.9.17          (production)
+               1.9.17p1        (production)
+</verb>
+
+The above system means that whenever someone looks at the samba ftp
+site they will be able to grab the highest numbered release without an
+alpha in the name and be sure of getting the current recommended
+version.
+
 <sect1> Where can I go for further information?<p><label id="more">
 
 There are a number of places to look for more information on Samba,
@@ -182,7 +281,7 @@ including:
 
 <itemize>
 
-<item>The mailing lists devoted to discussion of Samba-related matters.
+<item>Two mailing lists devoted to discussion of Samba-related matters.
 See below for subscription information.
 
 <item>The newsgroup comp.protocols.smb, which has a great deal of
@@ -203,7 +302,35 @@ url="http://samba.org/samba/"> includes:
 
 <sect1>How do I subscribe to the Samba Mailing Lists?<p><label id="mailinglist">
 
-Surf to <url url="http://lists.samba.org/"> for an overview of all the mailing lists.
+Send email to <htmlurl url="mailto:listproc@samba.org"
+name="listproc@samba.org">. Make sure the subject line is blank,
+and include the following two lines in the body of the message:
+
+<tscreen><verb>
+subscribe samba Firstname Lastname
+subscribe samba-announce Firstname Lastname
+</verb></tscreen>
+
+Obviously you should substitute YOUR first name for "Firstname" and
+YOUR last name for "Lastname"! Try not to send any signature, it
+sometimes confuses the list processor.
+
+The samba list is a digest list - every eight hours or so it sends a
+single message containing all the messages that have been received by
+the list since the last time and sends a copy of this message to all
+subscribers. There are thousands of people on this list.
+
+If you stop being interested in Samba, please send another email to
+<htmlurl url="mailto:listproc@samba.org" name="listproc@samba.org">. Make sure the subject line is blank, and
+include the following two lines in the body of the message:
+
+<tscreen><verb>
+unsubscribe samba
+unsubscribe samba-announce
+</verb></tscreen>
+
+The <bf>From:</bf> line in your message <em>MUST</em> be the same
+address you used when you subscribed.
 
 <sect1> Something's gone wrong - what should I do?<p><label id="wrong">
 
index a80981a1e970c476296e1beb3decf36595c80d81..17ed7059fd27c151047054433cb34952b9d6ab77 100644 (file)
 <title> Samba FAQ
 
 <author>Paul Blackman, <tt>ictinus@samba.org</tt>
-<author>Jelmer Vernooij, <tt>jelmer@samba.org</tt>
 
-<date>v 1.0, August 2002
+<date>v 0.8, June '97
 
 <abstract> This is the Frequently Asked Questions (FAQ) document for
 Samba, the free and very popular SMB server product. An SMB server
 allows file and printer connections from clients such as Windows,
-OS/2, Linux and others. Current to version 3.0. Please send any
+OS/2, Linux and others. Current to version 1.9.17. Please send any
 corrections to the author.
 </abstract>
 
index 5a6e6586da5c92df9fe5911dd51085d9e61113c6..b3dbc9f9fcb77b90338a11b7d9855c2ccc54bfaa 100644 (file)
@@ -165,7 +165,7 @@ CLASS="PARAMETER"
 >printer driver
 file</I
 ></TT
-> parameter, are being deprecated and should not 
+> parameter, are being depreciated and should not 
 be used in new installations.  For more information on this change, 
 you should refer to the <A
 HREF="#MIGRATION"
@@ -447,7 +447,7 @@ NAME="AEN88"
 >One issue that has arisen during the development
 phase of Samba 2.2 is the need to support driver downloads for
 100's of printers.  Using the Windows NT APW is somewhat 
-awkward to say the least.  If more than one printer is using the 
+awkward to say the list.  If more than one printer are using the 
 same driver, the <A
 HREF="rpcclient.1.html"
 TARGET="_top"
@@ -457,7 +457,7 @@ CLASS="COMMAND"
 setdriver command</B
 ></A
 > can be used to set the driver
-associated with an installed driver.  The following is an example
+associated with an installed driver.  The following is example
 of how this could be accomplished:</P
 ><P
 ><PRE
@@ -514,7 +514,7 @@ NAME="AEN99"
 CLASS="FILENAME"
 >smb.conf</TT
 >
-in the "Printers..." folder.  Also in this folder is the Windows NT 
+in the "Printers..." folder.  Also existing in this folder is the Windows NT 
 Add Printer Wizard icon.  The APW will be show only if</P
 ><P
 ></P
@@ -580,7 +580,7 @@ CLASS="PARAMETER"
 >add printer 
 command</I
 ></TT
-> and reparse the <TT
+> and reparse to the <TT
 CLASS="FILENAME"
 >smb.conf</TT
 >
@@ -594,7 +594,7 @@ CLASS="PARAMETER"
 > is executed under the context
 of the connected user, not necessarily a root account.</P
 ><P
->There is a complementary <A
+>There is a complementing <A
 HREF="smb.conf.5.html#DELETEPRINTERCOMMAND"
 TARGET="_top"
 ><TT
@@ -619,7 +619,7 @@ NAME="AEN124"
 >Windows NT/2000 print servers associate a port with each printer.  These normally
 take the form of LPT1:, COM1:, FILE:, etc...  Samba must also support the
 concept of ports associated with a printer.  By default, only one printer port,
-named "Samba Printer Port", exists on a system.  Samba does not really need a port in
+named "Samba Printer Port", exists on a system.  Samba does not really a port in
 order to print, rather it is a requirement of Windows clients.  </P
 ><P
 >Note that Samba does not support the concept of "Printer Pooling" internally 
@@ -978,10 +978,10 @@ CLASS="PARAMETER"
 >use client driver</I
 ></TT
 >). Both of 
-these options are described in the smb.conf(5) man page and are 
+these options are described in the smb.coinf(5) man page and are 
 disabled by default.</P
 ></DIV
 ></DIV
 ></BODY
 ></HTML
->
+>
\ No newline at end of file
index 5d1cc21da7188a6cfdd10860c9997660accc95fc..6f0e88c4d356c0322f701a32bd846b7e7713f3a9 100644 (file)
@@ -1,12 +1,10 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <HTML
 ><HEAD
 ><TITLE
 >smb.conf</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
-"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.57"></HEAD
 ><BODY
 CLASS="REFENTRY"
 BGCOLOR="#FFFFFF"
@@ -16,7 +14,9 @@ VLINK="#840084"
 ALINK="#0000FF"
 ><H1
 ><A
-NAME="SMB.CONF">smb.conf</H1
+NAME="SMB.CONF"
+>smb.conf</A
+></H1
 ><DIV
 CLASS="REFNAMEDIV"
 ><A
@@ -123,12 +123,8 @@ NAME="AEN28"
 ><P
 >There are three special sections, [global],
        [homes] and [printers], which are
-       described under <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->special sections</I
-></SPAN
+       described under <EM
+>special sections</EM
 >. The
        following notes apply to ordinary section descriptions.</P
 ><P
@@ -142,20 +138,12 @@ CLASS="EMPHASIS"
        printable services (used by the client to access print services 
        on the host running the server).</P
 ><P
->Sections may be designated <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->guest</I
-></SPAN
+>Sections may be designated <EM
+>guest</EM
 > services,
        in which case no password is required to access them. A specified 
-       UNIX <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->guest account</I
-></SPAN
+       UNIX <EM
+>guest account</EM
 > is used to define access
        privileges in this case.</P
 ><P
@@ -177,6 +165,12 @@ CLASS="FILENAME"
 >/home/bar</TT
 >. 
        The share is accessed via the share name "foo":</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
 ><PRE
 CLASS="SCREEN"
 >      <TT
@@ -187,19 +181,24 @@ CLASS="COMPUTEROUTPUT"
        </TT
 >
        </PRE
+></TD
+></TR
+></TABLE
 ><P
 >The following sample section defines a printable share. 
        The share is readonly, but printable. That is, the only write 
        access permitted is via calls to open, write to and close a 
-       spool file. The <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->guest ok</I
-></SPAN
+       spool file. The <EM
+>guest ok</EM
 > parameter means 
        access will be permitted as the default guest user (specified 
        elsewhere):</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
 ><PRE
 CLASS="SCREEN"
 >      <TT
@@ -212,6 +211,9 @@ CLASS="COMPUTEROUTPUT"
        </TT
 >
        </PRE
+></TD
+></TR
+></TABLE
 ></DIV
 ><DIV
 CLASS="REFSECT1"
@@ -269,12 +271,8 @@ NAME="AEN53"
 ></LI
 ></UL
 ><P
->If you decide to use a <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->path =</I
-></SPAN
+>If you decide to use a <EM
+>path =</EM
 > line 
                in your [homes] section then you may find it useful 
                to use the %S macro. For example :</P
@@ -303,6 +301,12 @@ CLASS="USERINPUT"
                a normal service section can specify, though some make more sense 
                than others. The following is a typical and suitable [homes]
                section:</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
 ><PRE
 CLASS="SCREEN"
 >              <TT
@@ -312,41 +316,28 @@ CLASS="COMPUTEROUTPUT"
                </TT
 >
                </PRE
+></TD
+></TR
+></TABLE
 ><P
 >An important point is that if guest access is specified 
                in the [homes] section, all home directories will be 
-               visible to all clients <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->without a password</I
-></SPAN
+               visible to all clients <EM
+>without a password</EM
 >. 
                In the very unlikely event that this is actually desirable, it 
-               would be wise to also specify <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+               would be wise to also specify <EM
 >read only
-               access</I
-></SPAN
+               access</EM
 >.</P
 ><P
->Note that the <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->browseable</I
-></SPAN
+>Note that the <EM
+>browseable</EM
 > flag for 
                auto home directories will be inherited from the global browseable 
                flag, not the [homes] browseable flag. This is useful as 
-               it means setting <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->browseable = no</I
-></SPAN
+               it means setting <EM
+>browseable = no</EM
 > in
                the [homes] section will hide the [homes] share but make
                any auto home directories visible.</P
@@ -406,6 +397,12 @@ NAME="AEN79"
                world-writeable spool directory with the sticky bit set on 
                it. A typical [printers] entry would look like 
                this:</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
 ><PRE
 CLASS="SCREEN"
 ><TT
@@ -416,12 +413,21 @@ CLASS="COMPUTEROUTPUT"
                        printable = yes 
                </TT
 ></PRE
+></TD
+></TR
+></TABLE
 ><P
 >All aliases given for a printer in the printcap file 
                are legitimate printer names as far as the server is concerned. 
                If your printing subsystem doesn't work like that, you will have 
                to set up a pseudo-printcap. This is a file consisting of one or 
                more lines like this:</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
 ><PRE
 CLASS="SCREEN"
 >              <TT
@@ -430,6 +436,9 @@ CLASS="COMPUTEROUTPUT"
                </TT
 >
                </PRE
+></TD
+></TR
+></TABLE
 ><P
 >Each alias should be an acceptable printer name for 
                your printing subsystem. In the [global] section, specify 
@@ -461,44 +470,24 @@ NAME="AEN102"
 >parameters define the specific attributes of sections.</P
 ><P
 >Some parameters are specific to the [global] section
-       (e.g., <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->security</I
-></SPAN
+       (e.g., <EM
+>security</EM
 >).  Some parameters are usable 
-       in all sections (e.g., <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->create mode</I
-></SPAN
+       in all sections (e.g., <EM
+>create mode</EM
 >). All others 
        are permissible only in normal sections. For the purposes of the 
        following descriptions the [homes] and [printers]
-       sections will be considered normal.  The letter <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->G</I
-></SPAN
+       sections will be considered normal.  The letter <EM
+>G</EM
 > 
        in parentheses indicates that a parameter is specific to the
-       [global] section. The letter <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->S</I
-></SPAN
+       [global] section. The letter <EM
+>S</EM
 >
        indicates that a parameter can be specified in a service specific
-       section. Note that all <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->S</I
-></SPAN
+       section. Note that all <EM
+>S</EM
 > parameters can also be specified in 
        the [global] section - in which case they will define
        the default behavior for all services.</P
@@ -602,7 +591,7 @@ CLASS="VARIABLELIST"
                to change your config based on what the client calls you. Your 
                server can have a "dual personality".</P
 ><P
->Note that this parameter is not available when Samba listens
+>Note that this paramater is not available when Samba listens
                 on port 445, as clients no longer send this information </P
 ></DD
 ><DT
@@ -618,12 +607,8 @@ CLASS="VARIABLELIST"
 ><P
 >the name of your NIS home directory server.  
                This is obtained from your NIS auto.map entry.  If you have 
-               not compiled Samba with the <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->--with-automount</I
-></SPAN
+               not compiled Samba with the <EM
+>--with-automount</EM
 > 
                option then this value will be the same as %L.</P
 ></DD
@@ -733,12 +718,8 @@ CLASS="VARIABLELIST"
 > controls if names that have characters that 
                aren't of the "default" case are mangled. For example, 
                if this is yes then a name like "Mail" would be mangled. 
-               Default <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->no</I
-></SPAN
+               Default <EM
+>no</EM
 >.</P
 ></DD
 ><DT
@@ -747,12 +728,8 @@ CLASS="EMPHASIS"
 ><P
 >controls whether filenames are case sensitive. If 
                they aren't then Samba must do a filename search and match on passed 
-               names. Default <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->no</I
-></SPAN
+               names. Default <EM
+>no</EM
 >.</P
 ></DD
 ><DT
@@ -760,12 +737,8 @@ CLASS="EMPHASIS"
 ><DD
 ><P
 >controls what the default case is for new 
-               filenames. Default <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->lower</I
-></SPAN
+               filenames. Default <EM
+>lower</EM
 >.</P
 ></DD
 ><DT
@@ -774,12 +747,8 @@ CLASS="EMPHASIS"
 ><P
 >controls if new files are created with the 
                case that the client passes, or if they are forced to be the 
-               "default" case. Default <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->yes</I
-></SPAN
+               "default" case. Default <EM
+>yes</EM
 >.
                </P
 ></DD
@@ -792,12 +761,8 @@ CLASS="EMPHASIS"
                upper case, or if they are forced to be the "default" 
                case. This option can be use with "preserve case = yes" 
                to permit long filenames to retain their case, while short names 
-               are lowercased. Default <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->yes</I
-></SPAN
+               are lowercased. Default <EM
+>yes</EM
 >.</P
 ></DD
 ></DL
@@ -900,7 +865,7 @@ NAME="AEN255"
 ><LI
 ><P
 ><A
-HREF="index.html#ABORTSHUTDOWNSCRIPT"
+HREF="#ABORTSHUTDOWNSCRIPT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -912,23 +877,11 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#ADDGROUPSCRIPT"
-><TT
-CLASS="PARAMETER"
-><I
->add group script</I
-></TT
-></A
-></P
-></LI
-><LI
-><P
-><A
-HREF="index.html#ADDPRINTERCOMMAND"
+HREF="#ADDPRINTERCOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
->addprinter command</I
+>add printer command</I
 ></TT
 ></A
 ></P
@@ -936,7 +889,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#ADDSHARECOMMAND"
+HREF="#ADDSHARECOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -948,7 +901,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#ADDUSERSCRIPT"
+HREF="#ADDUSERSCRIPT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -960,19 +913,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#ADDUSERTOGROUPSCRIPT"
-><TT
-CLASS="PARAMETER"
-><I
->add user to group script</I
-></TT
-></A
-></P
-></LI
-><LI
-><P
-><A
-HREF="index.html#ADDMACHINESCRIPT"
+HREF="#ADDMACHINESCRIPT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -984,31 +925,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DELETEGROUPSCRIPT"
-><TT
-CLASS="PARAMETER"
-><I
->delete group script</I
-></TT
-></A
-></P
-></LI
-><LI
-><P
-><A
-HREF="index.html#ADSSERVER"
-><TT
-CLASS="PARAMETER"
-><I
->ads server</I
-></TT
-></A
-></P
-></LI
-><LI
-><P
-><A
-HREF="index.html#ALGORITHMICRIDBASE"
+HREF="#ALGORITHMICRIDBASE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1020,7 +937,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#ALLOWTRUSTEDDOMAINS"
+HREF="#ALLOWTRUSTEDDOMAINS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1032,7 +949,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#ANNOUNCEAS"
+HREF="#ANNOUNCEAS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1044,7 +961,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#ANNOUNCEVERSION"
+HREF="#ANNOUNCEVERSION"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1056,7 +973,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#AUTHMETHODS"
+HREF="#AUTHMETHODS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1068,7 +985,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#AUTOSERVICES"
+HREF="#AUTOSERVICES"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1080,7 +997,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#BINDINTERFACESONLY"
+HREF="#BINDINTERFACESONLY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1092,7 +1009,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#BROWSELIST"
+HREF="#BROWSELIST"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1104,7 +1021,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#CHANGENOTIFYTIMEOUT"
+HREF="#CHANGENOTIFYTIMEOUT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1116,7 +1033,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#CHANGESHARECOMMAND"
+HREF="#CHANGESHARECOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1128,7 +1045,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#CONFIGFILE"
+HREF="#CONFIGFILE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1140,7 +1057,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DEADTIME"
+HREF="#DEADTIME"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1152,7 +1069,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DEBUGHIRESTIMESTAMP"
+HREF="#DEBUGHIRESTIMESTAMP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1164,7 +1081,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DEBUGPID"
+HREF="#DEBUGPID"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1176,7 +1093,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DEBUGTIMESTAMP"
+HREF="#DEBUGTIMESTAMP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1188,7 +1105,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DEBUGUID"
+HREF="#DEBUGUID"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1200,7 +1117,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DEBUGLEVEL"
+HREF="#DEBUGLEVEL"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1212,7 +1129,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DEFAULT"
+HREF="#DEFAULT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1224,7 +1141,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DEFAULTSERVICE"
+HREF="#DEFAULTSERVICE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1236,11 +1153,11 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DELETEPRINTERCOMMAND"
+HREF="#DELETEPRINTERCOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
->deleteprinter command</I
+>delete printer command</I
 ></TT
 ></A
 ></P
@@ -1248,7 +1165,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DELETESHARECOMMAND"
+HREF="#DELETESHARECOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1260,7 +1177,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DELETEUSERSCRIPT"
+HREF="#DELETEUSERSCRIPT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1272,19 +1189,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DELETEUSERFROMGROUPSCRIPT"
-><TT
-CLASS="PARAMETER"
-><I
->delete user from group script</I
-></TT
-></A
-></P
-></LI
-><LI
-><P
-><A
-HREF="index.html#DFREECOMMAND"
+HREF="#DFREECOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1296,19 +1201,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DISABLENETBIOS"
-><TT
-CLASS="PARAMETER"
-><I
->disable netbios</I
-></TT
-></A
-></P
-></LI
-><LI
-><P
-><A
-HREF="index.html#DISABLESPOOLSS"
+HREF="#DISABLESPOOLSS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1320,19 +1213,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DISPLAYCHARSET"
-><TT
-CLASS="PARAMETER"
-><I
->display charset</I
-></TT
-></A
-></P
-></LI
-><LI
-><P
-><A
-HREF="index.html#DNSPROXY"
+HREF="#DNSPROXY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1344,7 +1225,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DOMAINADMINGROUP"
+HREF="#DOMAINADMINGROUP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1356,7 +1237,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DOMAINGUESTGROUP"
+HREF="#DOMAINGUESTGROUP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1368,7 +1249,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DOMAINLOGONS"
+HREF="#DOMAINLOGONS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1380,7 +1261,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DOMAINMASTER"
+HREF="#DOMAINMASTER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1392,19 +1273,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DOSCHARSET"
-><TT
-CLASS="PARAMETER"
-><I
->dos charset</I
-></TT
-></A
-></P
-></LI
-><LI
-><P
-><A
-HREF="index.html#ENCRYPTPASSWORDS"
+HREF="#ENCRYPTPASSWORDS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1416,7 +1285,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#ENHANCEDBROWSING"
+HREF="#ENHANCEDBROWSING"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1428,7 +1297,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#ENUMPORTSCOMMAND"
+HREF="#ENUMPORTSCOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1440,7 +1309,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#GETWDCACHE"
+HREF="#GETWDCACHE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1452,7 +1321,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#HIDELOCALUSERS"
+HREF="#HIDELOCALUSERS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1464,7 +1333,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#HIDEUNREADABLE"
+HREF="#HIDEUNREADABLE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1476,19 +1345,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#HIDEUNWRITEABLEFILES"
-><TT
-CLASS="PARAMETER"
-><I
->hide unwriteable files</I
-></TT
-></A
-></P
-></LI
-><LI
-><P
-><A
-HREF="index.html#HOMEDIRMAP"
+HREF="#HOMEDIRMAP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1500,7 +1357,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#HOSTMSDFS"
+HREF="#HOSTMSDFS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1512,19 +1369,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#HOSTNAMELOOKUPS"
-><TT
-CLASS="PARAMETER"
-><I
->hostname lookups</I
-></TT
-></A
-></P
-></LI
-><LI
-><P
-><A
-HREF="index.html#HOSTSEQUIV"
+HREF="#HOSTSEQUIV"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1536,7 +1381,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#INTERFACES"
+HREF="#INTERFACES"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1548,7 +1393,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#KEEPALIVE"
+HREF="#KEEPALIVE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1560,7 +1405,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#KERNELOPLOCKS"
+HREF="#KERNELOPLOCKS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1572,7 +1417,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LANMANAUTH"
+HREF="#LANMANAUTH"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1584,7 +1429,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LARGEREADWRITE"
+HREF="#LARGEREADWRITE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1596,7 +1441,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LDAPADMINDN"
+HREF="#LDAPADMINDN"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1608,7 +1453,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LDAPFILTER"
+HREF="#LDAPFILTER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1620,7 +1465,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LDAPSSL"
+HREF="#LDAPSSL"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1632,7 +1477,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LDAPSUFFIX"
+HREF="#LDAPSUFFIX"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1644,7 +1489,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LDAPUSERSUFFIX"
+HREF="#LDAPUSERSUFFIX"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1656,7 +1501,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LDAPMACHINESUFFIX"
+HREF="#LDAPMACHINESUFFIX"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1668,7 +1513,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LMANNOUNCE"
+HREF="#LMANNOUNCE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1680,7 +1525,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LMINTERVAL"
+HREF="#LMINTERVAL"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1692,7 +1537,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LOADPRINTERS"
+HREF="#LOADPRINTERS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1704,7 +1549,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LOCALMASTER"
+HREF="#LOCALMASTER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1716,7 +1561,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LOCKDIR"
+HREF="#LOCKDIR"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1728,7 +1573,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LOCKDIRECTORY"
+HREF="#LOCKDIRECTORY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1740,7 +1585,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LOCKSPINCOUNT"
+HREF="#LOCKSPINCOUNT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1752,7 +1597,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LOCKSPINTIME"
+HREF="#LOCKSPINTIME"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1764,7 +1609,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PIDDIRECTORY"
+HREF="#PIDDIRECTORY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1776,7 +1621,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LOGFILE"
+HREF="#LOGFILE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1788,7 +1633,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LOGLEVEL"
+HREF="#LOGLEVEL"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1800,7 +1645,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LOGONDRIVE"
+HREF="#LOGONDRIVE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1812,7 +1657,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LOGONHOME"
+HREF="#LOGONHOME"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1824,7 +1669,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LOGONPATH"
+HREF="#LOGONPATH"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1836,7 +1681,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LOGONSCRIPT"
+HREF="#LOGONSCRIPT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1848,7 +1693,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LPQCACHETIME"
+HREF="#LPQCACHETIME"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1860,7 +1705,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MACHINEPASSWORDTIMEOUT"
+HREF="#MACHINEPASSWORDTIMEOUT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1872,7 +1717,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MANGLEDSTACK"
+HREF="#MANGLEDSTACK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1884,7 +1729,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MAPTOGUEST"
+HREF="#MAPTOGUEST"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1896,7 +1741,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MAXDISKSIZE"
+HREF="#MAXDISKSIZE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1908,7 +1753,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MAXLOGSIZE"
+HREF="#MAXLOGSIZE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1920,7 +1765,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MAXMUX"
+HREF="#MAXMUX"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1932,7 +1777,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MAXOPENFILES"
+HREF="#MAXOPENFILES"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1944,7 +1789,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MAXPROTOCOL"
+HREF="#MAXPROTOCOL"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1956,7 +1801,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MAXSMBDPROCESSES"
+HREF="#MAXSMBDPROCESSES"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1968,7 +1813,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MAXTTL"
+HREF="#MAXTTL"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1980,7 +1825,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MAXWINSTTL"
+HREF="#MAXWINSTTL"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -1992,7 +1837,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MAXXMIT"
+HREF="#MAXXMIT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2004,7 +1849,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MESSAGECOMMAND"
+HREF="#MESSAGECOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2016,7 +1861,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MINPASSWDLENGTH"
+HREF="#MINPASSWDLENGTH"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2028,7 +1873,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MINPASSWORDLENGTH"
+HREF="#MINPASSWORDLENGTH"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2040,7 +1885,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MINPROTOCOL"
+HREF="#MINPROTOCOL"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2052,7 +1897,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MINWINSTTL"
+HREF="#MINWINSTTL"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2064,19 +1909,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#NAMECACHETIMEOUT"
-><TT
-CLASS="PARAMETER"
-><I
->name cache timeout</I
-></TT
-></A
-></P
-></LI
-><LI
-><P
-><A
-HREF="index.html#NAMERESOLVEORDER"
+HREF="#NAMERESOLVEORDER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2088,7 +1921,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#NETBIOSALIASES"
+HREF="#NETBIOSALIASES"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2100,7 +1933,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#NETBIOSNAME"
+HREF="#NETBIOSNAME"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2112,7 +1945,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#NETBIOSSCOPE"
+HREF="#NETBIOSSCOPE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2124,7 +1957,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#NISHOMEDIR"
+HREF="#NISHOMEDIR"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2136,19 +1969,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#NTLMAUTH"
-><TT
-CLASS="PARAMETER"
-><I
->ntlm auth</I
-></TT
-></A
-></P
-></LI
-><LI
-><P
-><A
-HREF="index.html#NONUNIXACCOUNTRANGE"
+HREF="#NONUNIXACCOUNTRANGE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2160,7 +1981,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#NTPIPESUPPORT"
+HREF="#NTPIPESUPPORT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2172,7 +1993,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#NTSTATUSSUPPORT"
+HREF="#NTSTATUSSUPPORT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2184,7 +2005,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#NULLPASSWORDS"
+HREF="#NULLPASSWORDS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2196,7 +2017,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#OBEYPAMRESTRICTIONS"
+HREF="#OBEYPAMRESTRICTIONS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2208,7 +2029,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#OPLOCKBREAKWAITTIME"
+HREF="#OPLOCKBREAKWAITTIME"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2220,7 +2041,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#OSLEVEL"
+HREF="#OSLEVEL"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2232,7 +2053,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#OS2DRIVERMAP"
+HREF="#OS2DRIVERMAP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2244,7 +2065,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PAMPASSWORDCHANGE"
+HREF="#PAMPASSWORDCHANGE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2256,7 +2077,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PANICACTION"
+HREF="#PANICACTION"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2268,19 +2089,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PARANOIDSERVERSECURITY"
-><TT
-CLASS="PARAMETER"
-><I
->paranoid server security</I
-></TT
-></A
-></P
-></LI
-><LI
-><P
-><A
-HREF="index.html#PASSDBBACKEND"
+HREF="#PASSDBBACKEND"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2292,7 +2101,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PASSWDCHAT"
+HREF="#PASSWDCHAT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2304,7 +2113,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PASSWDCHATDEBUG"
+HREF="#PASSWDCHATDEBUG"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2316,7 +2125,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PASSWDPROGRAM"
+HREF="#PASSWDPROGRAM"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2328,7 +2137,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PASSWORDLEVEL"
+HREF="#PASSWORDLEVEL"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2340,7 +2149,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PASSWORDSERVER"
+HREF="#PASSWORDSERVER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2352,7 +2161,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PREFEREDMASTER"
+HREF="#PREFEREDMASTER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2364,7 +2173,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PREFERREDMASTER"
+HREF="#PREFERREDMASTER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2376,7 +2185,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PRELOAD"
+HREF="#PRELOAD"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2388,7 +2197,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PRINTCAP"
+HREF="#PRINTCAP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2400,7 +2209,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PRINTCAPNAME"
+HREF="#PRINTCAPNAME"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2412,7 +2221,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PRINTERDRIVERFILE"
+HREF="#PRINTERDRIVERFILE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2424,7 +2233,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PRIVATEDIR"
+HREF="#PRIVATEDIR"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2436,7 +2245,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PROTOCOL"
+HREF="#PROTOCOL"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2448,7 +2257,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#READBMPX"
+HREF="#READBMPX"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2460,7 +2269,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#READRAW"
+HREF="#READRAW"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2472,7 +2281,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#READSIZE"
+HREF="#READSIZE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2484,19 +2293,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#REALM"
-><TT
-CLASS="PARAMETER"
-><I
->realm</I
-></TT
-></A
-></P
-></LI
-><LI
-><P
-><A
-HREF="index.html#REMOTEANNOUNCE"
+HREF="#REMOTEANNOUNCE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2508,7 +2305,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#REMOTEBROWSESYNC"
+HREF="#REMOTEBROWSESYNC"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2520,7 +2317,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#RESTRICTANONYMOUS"
+HREF="#RESTRICTANONYMOUS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2532,7 +2329,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#ROOT"
+HREF="#ROOT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2544,7 +2341,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#ROOTDIR"
+HREF="#ROOTDIR"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2556,7 +2353,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#ROOTDIRECTORY"
+HREF="#ROOTDIRECTORY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2568,7 +2365,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#SECURITY"
+HREF="#SECURITY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2580,7 +2377,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#SERVERSTRING"
+HREF="#SERVERSTRING"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2592,7 +2389,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#SHOWADDPRINTERWIZARD"
+HREF="#SHOWADDPRINTERWIZARD"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2604,7 +2401,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#SHUTDOWNSCRIPT"
+HREF="#SHUTDOWNSCRIPT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2616,7 +2413,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#SMBPASSWDFILE"
+HREF="#SMBPASSWDFILE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2628,19 +2425,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#SMBPORTS"
-><TT
-CLASS="PARAMETER"
-><I
->smb ports</I
-></TT
-></A
-></P
-></LI
-><LI
-><P
-><A
-HREF="index.html#SOCKETADDRESS"
+HREF="#SOCKETADDRESS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2652,7 +2437,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#SOCKETOPTIONS"
+HREF="#SOCKETOPTIONS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2664,7 +2449,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#SOURCEENVIRONMENT"
+HREF="#SOURCEENVIRONMENT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2676,7 +2461,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#SPNEGO"
+HREF="#SPNEGO"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2688,7 +2473,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#STATCACHE"
+HREF="#STATCACHE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2700,7 +2485,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#STATCACHESIZE"
+HREF="#STATCACHESIZE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2712,7 +2497,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#STRIPDOT"
+HREF="#STRIPDOT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2724,7 +2509,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#SYSLOG"
+HREF="#SYSLOG"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2736,7 +2521,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#SYSLOGONLY"
+HREF="#SYSLOGONLY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2748,7 +2533,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#TEMPLATEHOMEDIR"
+HREF="#TEMPLATEHOMEDIR"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2760,7 +2545,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#TEMPLATESHELL"
+HREF="#TEMPLATESHELL"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2772,7 +2557,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#TIMEOFFSET"
+HREF="#TIMEOFFSET"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2784,7 +2569,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#TIMESERVER"
+HREF="#TIMESERVER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2796,7 +2581,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#TIMESTAMPLOGS"
+HREF="#TIMESTAMPLOGS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2808,7 +2593,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#TOTALPRINTJOBS"
+HREF="#TOTALPRINTJOBS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2820,31 +2605,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#UNICODE"
-><TT
-CLASS="PARAMETER"
-><I
->unicode</I
-></TT
-></A
-></P
-></LI
-><LI
-><P
-><A
-HREF="index.html#UNIXCHARSET"
-><TT
-CLASS="PARAMETER"
-><I
->unix charset</I
-></TT
-></A
-></P
-></LI
-><LI
-><P
-><A
-HREF="index.html#UNIXEXTENSIONS"
+HREF="#UNIXEXTENSIONS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2856,7 +2617,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#UNIXPASSWORDSYNC"
+HREF="#UNIXPASSWORDSYNC"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2868,7 +2629,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#UPDATEENCRYPTED"
+HREF="#UPDATEENCRYPTED"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2880,7 +2641,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#USEMMAP"
+HREF="#USEMMAP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2892,7 +2653,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#USERHOSTS"
+HREF="#USERHOSTS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2904,7 +2665,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#USERNAMELEVEL"
+HREF="#USERNAMELEVEL"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2916,7 +2677,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#USERNAMEMAP"
+HREF="#USERNAMEMAP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2928,7 +2689,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#UTMP"
+HREF="#UTMP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2940,7 +2701,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#UTMPDIRECTORY"
+HREF="#UTMPDIRECTORY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2952,19 +2713,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#WTMPDIRECTORY"
-><TT
-CLASS="PARAMETER"
-><I
->wtmp directory</I
-></TT
-></A
-></P
-></LI
-><LI
-><P
-><A
-HREF="index.html#WINBINDCACHETIME"
+HREF="#WINBINDCACHETIME"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2976,7 +2725,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#WINBINDENUMUSERS"
+HREF="#WINBINDENUMUSERS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -2988,7 +2737,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#WINBINDENUMGROUPS"
+HREF="#WINBINDENUMGROUPS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3000,7 +2749,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#WINBINDGID"
+HREF="#WINBINDGID"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3012,7 +2761,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#WINBINDSEPARATOR"
+HREF="#WINBINDSEPARATOR"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3024,7 +2773,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#WINBINDUID"
+HREF="#WINBINDUID"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3036,7 +2785,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#WINBINDUSEDEFAULTDOMAIN"
+HREF="#WINBINDUSEDEFAULTDOMAIN"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3048,7 +2797,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#WINSHOOK"
+HREF="#WINSHOOK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3060,19 +2809,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#WINSPARTNERS"
-><TT
-CLASS="PARAMETER"
-><I
->wins partners</I
-></TT
-></A
-></P
-></LI
-><LI
-><P
-><A
-HREF="index.html#WINSPROXY"
+HREF="#WINSPROXY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3084,7 +2821,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#WINSSERVER"
+HREF="#WINSSERVER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3096,7 +2833,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#WINSSUPPORT"
+HREF="#WINSSUPPORT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3108,7 +2845,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#WORKGROUP"
+HREF="#WORKGROUP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3120,7 +2857,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#WRITERAW"
+HREF="#WRITERAW"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3134,7 +2871,7 @@ CLASS="PARAMETER"
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN1003"
+NAME="AEN927"
 ></A
 ><H2
 >COMPLETE LIST OF SERVICE PARAMETERS</H2
@@ -3147,7 +2884,7 @@ NAME="AEN1003"
 ><LI
 ><P
 ><A
-HREF="index.html#ADMINUSERS"
+HREF="#ADMINUSERS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3159,7 +2896,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#ALLOWHOSTS"
+HREF="#ALLOWHOSTS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3171,7 +2908,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#AVAILABLE"
+HREF="#AVAILABLE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3183,7 +2920,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#BLOCKINGLOCKS"
+HREF="#BLOCKINGLOCKS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3195,19 +2932,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#BLOCKSIZE"
-><TT
-CLASS="PARAMETER"
-><I
->block size</I
-></TT
-></A
-></P
-></LI
-><LI
-><P
-><A
-HREF="index.html#BROWSABLE"
+HREF="#BROWSABLE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3219,7 +2944,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#BROWSEABLE"
+HREF="#BROWSEABLE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3231,7 +2956,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#CASESENSITIVE"
+HREF="#CASESENSITIVE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3243,7 +2968,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#CASESIGNAMES"
+HREF="#CASESIGNAMES"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3255,7 +2980,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#COMMENT"
+HREF="#COMMENT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3267,7 +2992,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#COPY"
+HREF="#COPY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3279,7 +3004,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#CREATEMASK"
+HREF="#CREATEMASK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3291,7 +3016,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#CREATEMODE"
+HREF="#CREATEMODE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3303,7 +3028,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#CSCPOLICY"
+HREF="#CSCPOLICY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3315,7 +3040,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DEFAULTCASE"
+HREF="#DEFAULTCASE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3327,7 +3052,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DEFAULTDEVMODE"
+HREF="#DEFAULTDEVMODE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3339,7 +3064,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DELETEREADONLY"
+HREF="#DELETEREADONLY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3351,7 +3076,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DELETEVETOFILES"
+HREF="#DELETEVETOFILES"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3363,7 +3088,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DENYHOSTS"
+HREF="#DENYHOSTS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3375,7 +3100,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DIRECTORY"
+HREF="#DIRECTORY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3387,7 +3112,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DIRECTORYMASK"
+HREF="#DIRECTORYMASK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3399,7 +3124,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DIRECTORYMODE"
+HREF="#DIRECTORYMODE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3411,7 +3136,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DIRECTORYSECURITYMASK"
+HREF="#DIRECTORYSECURITYMASK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3423,7 +3148,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DONTDESCEND"
+HREF="#DONTDESCEND"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3435,7 +3160,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DOSFILEMODE"
+HREF="#DOSFILEMODE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3447,7 +3172,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DOSFILETIMERESOLUTION"
+HREF="#DOSFILETIMERESOLUTION"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3459,7 +3184,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#DOSFILETIMES"
+HREF="#DOSFILETIMES"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3471,7 +3196,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#EXEC"
+HREF="#EXEC"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3483,7 +3208,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#FAKEDIRECTORYCREATETIMES"
+HREF="#FAKEDIRECTORYCREATETIMES"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3495,7 +3220,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#FAKEOPLOCKS"
+HREF="#FAKEOPLOCKS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3507,7 +3232,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#FOLLOWSYMLINKS"
+HREF="#FOLLOWSYMLINKS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3519,7 +3244,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#FORCECREATEMODE"
+HREF="#FORCECREATEMODE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3531,7 +3256,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#FORCEDIRECTORYMODE"
+HREF="#FORCEDIRECTORYMODE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3543,7 +3268,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#FORCEDIRECTORYSECURITYMODE"
+HREF="#FORCEDIRECTORYSECURITYMODE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3555,7 +3280,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#FORCEGROUP"
+HREF="#FORCEGROUP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3567,7 +3292,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#FORCESECURITYMODE"
+HREF="#FORCESECURITYMODE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3579,7 +3304,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#FORCEUSER"
+HREF="#FORCEUSER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3591,7 +3316,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#FSTYPE"
+HREF="#FSTYPE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3603,7 +3328,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#GROUP"
+HREF="#GROUP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3615,7 +3340,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#GUESTACCOUNT"
+HREF="#GUESTACCOUNT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3627,7 +3352,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#GUESTOK"
+HREF="#GUESTOK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3639,7 +3364,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#GUESTONLY"
+HREF="#GUESTONLY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3651,7 +3376,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#HIDEDOTFILES"
+HREF="#HIDEDOTFILES"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3663,7 +3388,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#HIDEFILES"
+HREF="#HIDEFILES"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3675,7 +3400,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#HOSTSALLOW"
+HREF="#HOSTSALLOW"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3687,7 +3412,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#HOSTSDENY"
+HREF="#HOSTSDENY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3699,7 +3424,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#INCLUDE"
+HREF="#INCLUDE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3711,7 +3436,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#INHERITACLS"
+HREF="#INHERITACLS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3723,7 +3448,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#INHERITPERMISSIONS"
+HREF="#INHERITPERMISSIONS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3735,7 +3460,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#INVALIDUSERS"
+HREF="#INVALIDUSERS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3747,7 +3472,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LEVEL2OPLOCKS"
+HREF="#LEVEL2OPLOCKS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3759,7 +3484,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LOCKING"
+HREF="#LOCKING"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3771,7 +3496,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LPPAUSECOMMAND"
+HREF="#LPPAUSECOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3783,7 +3508,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LPQCOMMAND"
+HREF="#LPQCOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3795,7 +3520,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LPRESUMECOMMAND"
+HREF="#LPRESUMECOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3807,7 +3532,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#LPRMCOMMAND"
+HREF="#LPRMCOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3819,7 +3544,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MAGICOUTPUT"
+HREF="#MAGICOUTPUT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3831,7 +3556,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MAGICSCRIPT"
+HREF="#MAGICSCRIPT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3843,7 +3568,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MANGLECASE"
+HREF="#MANGLECASE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3855,7 +3580,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MANGLEDMAP"
+HREF="#MANGLEDMAP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3867,7 +3592,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MANGLEDNAMES"
+HREF="#MANGLEDNAMES"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3879,7 +3604,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MANGLINGCHAR"
+HREF="#MANGLINGCHAR"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3891,19 +3616,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MANGLINGMETHOD"
-><TT
-CLASS="PARAMETER"
-><I
->mangling method</I
-></TT
-></A
-></P
-></LI
-><LI
-><P
-><A
-HREF="index.html#MAPARCHIVE"
+HREF="#MAPARCHIVE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3915,7 +3628,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MAPHIDDEN"
+HREF="#MAPHIDDEN"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3927,7 +3640,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MAPSYSTEM"
+HREF="#MAPSYSTEM"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3939,7 +3652,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MAXCONNECTIONS"
+HREF="#MAXCONNECTIONS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3951,7 +3664,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MAXPRINTJOBS"
+HREF="#MAXPRINTJOBS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3963,7 +3676,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MINPRINTSPACE"
+HREF="#MINPRINTSPACE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3975,7 +3688,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#MSDFSROOT"
+HREF="#MSDFSROOT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3987,7 +3700,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#NTACLSUPPORT"
+HREF="#NTACLSUPPORT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -3999,7 +3712,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#ONLYGUEST"
+HREF="#ONLYGUEST"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4011,7 +3724,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#ONLYUSER"
+HREF="#ONLYUSER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4023,7 +3736,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#OPLOCKCONTENTIONLIMIT"
+HREF="#OPLOCKCONTENTIONLIMIT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4035,7 +3748,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#OPLOCKS"
+HREF="#OPLOCKS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4047,7 +3760,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PATH"
+HREF="#PATH"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4059,7 +3772,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#POSIXLOCKING"
+HREF="#POSIXLOCKING"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4071,7 +3784,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#POSTEXEC"
+HREF="#POSTEXEC"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4083,7 +3796,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#POSTSCRIPT"
+HREF="#POSTSCRIPT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4095,7 +3808,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PREEXEC"
+HREF="#PREEXEC"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4107,7 +3820,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PREEXECCLOSE"
+HREF="#PREEXECCLOSE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4119,7 +3832,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PRESERVECASE"
+HREF="#PRESERVECASE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4131,7 +3844,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PRINTCOMMAND"
+HREF="#PRINTCOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4143,7 +3856,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PRINTOK"
+HREF="#PRINTOK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4155,7 +3868,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PRINTABLE"
+HREF="#PRINTABLE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4167,7 +3880,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PRINTER"
+HREF="#PRINTER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4179,7 +3892,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PRINTERADMIN"
+HREF="#PRINTERADMIN"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4191,7 +3904,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PRINTERDRIVER"
+HREF="#PRINTERDRIVER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4203,7 +3916,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PRINTERDRIVERLOCATION"
+HREF="#PRINTERDRIVERLOCATION"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4215,7 +3928,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PRINTERNAME"
+HREF="#PRINTERNAME"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4227,7 +3940,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PRINTING"
+HREF="#PRINTING"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4239,7 +3952,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#PUBLIC"
+HREF="#PUBLIC"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4251,7 +3964,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#QUEUEPAUSECOMMAND"
+HREF="#QUEUEPAUSECOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4263,7 +3976,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#QUEUERESUMECOMMAND"
+HREF="#QUEUERESUMECOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4275,7 +3988,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#READLIST"
+HREF="#READLIST"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4287,7 +4000,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#READONLY"
+HREF="#READONLY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4299,7 +4012,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#ROOTPOSTEXEC"
+HREF="#ROOTPOSTEXEC"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4311,7 +4024,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#ROOTPREEXEC"
+HREF="#ROOTPREEXEC"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4323,7 +4036,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#ROOTPREEXECCLOSE"
+HREF="#ROOTPREEXECCLOSE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4335,7 +4048,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#SECURITYMASK"
+HREF="#SECURITYMASK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4347,7 +4060,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#SETDIRECTORY"
+HREF="#SETDIRECTORY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4359,7 +4072,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#SHAREMODES"
+HREF="#SHAREMODES"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4371,7 +4084,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#SHORTPRESERVECASE"
+HREF="#SHORTPRESERVECASE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4383,7 +4096,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#STATUS"
+HREF="#STATUS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4395,7 +4108,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#STRICTALLOCATE"
+HREF="#STRICTALLOCATE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4407,7 +4120,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#STRICTLOCKING"
+HREF="#STRICTLOCKING"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4419,7 +4132,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#STRICTSYNC"
+HREF="#STRICTSYNC"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4431,7 +4144,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#SYNCALWAYS"
+HREF="#SYNCALWAYS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4443,7 +4156,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#USECLIENTDRIVER"
+HREF="#USECLIENTDRIVER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4455,7 +4168,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#USER"
+HREF="#USER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4467,7 +4180,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#USERNAME"
+HREF="#USERNAME"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4479,7 +4192,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#USERS"
+HREF="#USERS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4491,7 +4204,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#VALIDUSERS"
+HREF="#VALIDUSERS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4503,7 +4216,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#VETOFILES"
+HREF="#VETOFILES"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4515,7 +4228,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#VETOOPLOCKFILES"
+HREF="#VETOOPLOCKFILES"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4527,19 +4240,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#VFSPATH"
-><TT
-CLASS="PARAMETER"
-><I
->vfs path</I
-></TT
-></A
-></P
-></LI
-><LI
-><P
-><A
-HREF="index.html#VFSOBJECT"
+HREF="#VFSOBJECT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4551,7 +4252,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#VFSOPTIONS"
+HREF="#VFSOPTIONS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4563,7 +4264,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#VOLUME"
+HREF="#VOLUME"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4575,7 +4276,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#WIDELINKS"
+HREF="#WIDELINKS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4587,7 +4288,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#WRITABLE"
+HREF="#WRITABLE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4599,7 +4300,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#WRITECACHESIZE"
+HREF="#WRITECACHESIZE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4611,7 +4312,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#WRITELIST"
+HREF="#WRITELIST"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4623,7 +4324,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#WRITEOK"
+HREF="#WRITEOK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4635,7 +4336,7 @@ CLASS="PARAMETER"
 ><LI
 ><P
 ><A
-HREF="index.html#WRITEABLE"
+HREF="#WRITEABLE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4649,7 +4350,7 @@ CLASS="PARAMETER"
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN1507"
+NAME="AEN1419"
 ></A
 ><H2
 >EXPLANATION OF EACH PARAMETER</H2
@@ -4665,12 +4366,8 @@ NAME="ABORTSHUTDOWNSCRIPT"
 >abort shutdown script (G)</DT
 ><DD
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->This parameter only exists in the HEAD cvs branch</I
-></SPAN
+><EM
+>This parameter only exists in the HEAD cvs branch</EM
 >
                This a full path name to a script called by
                <A
@@ -4682,7 +4379,7 @@ CLASS="COMMAND"
 ></A
 >  that
                should stop a shutdown procedure issued by the <A
-HREF="index.html#SHUTDOWNSCRIPT"
+HREF="#SHUTDOWNSCRIPT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4693,12 +4390,8 @@ CLASS="PARAMETER"
 ><P
 >This command will be run as user.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->None</I
-></SPAN
+>Default: <EM
+>None</EM
 >.</P
 ><P
 >Example: <B
@@ -4710,7 +4403,7 @@ CLASS="COMMAND"
 ><A
 NAME="ADDPRINTERCOMMAND"
 ></A
->addprinter command (G)</DT
+>add printer command (G)</DT
 ><DD
 ><P
 >With the introduction of MS-RPC based printing
@@ -4747,7 +4440,7 @@ CLASS="COMMAND"
 >The <TT
 CLASS="PARAMETER"
 ><I
->addprinter command</I
+>add printer command</I
 ></TT
 > is
                automatically invoked with the following parameter (in 
@@ -4821,7 +4514,7 @@ CLASS="PARAMETER"
 >Once the <TT
 CLASS="PARAMETER"
 ><I
->addprinter command</I
+>add printer command</I
 ></TT
 > has 
                been executed, <B
@@ -4838,15 +4531,15 @@ CLASS="COMMAND"
 > will return an ACCESS_DENIED error to the client.</P
 ><P
 >See also <A
-HREF="index.html#DELETEPRINTERCOMMAND"
+HREF="#DELETEPRINTERCOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
->              deleteprinter command</I
+>              delete printer command</I
 ></TT
 ></A
 >, <A
-HREF="index.html#PRINTING"
+HREF="#PRINTING"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4855,7 +4548,7 @@ CLASS="PARAMETER"
 ></A
 >,
                <A
-HREF="index.html#SHOWADDPRINTERWIZARD"
+HREF="#SHOWADDPRINTERWIZARD"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4865,12 +4558,8 @@ CLASS="PARAMETER"
 ></A
 ></P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->none</I
-></SPAN
+>Default: <EM
+>none</EM
 ></P
 ><P
 >Example: <B
@@ -4977,11 +4666,11 @@ CLASS="PARAMETER"
 ><P
 >              This parameter is only used for add file shares.  To add printer shares, 
                see the <A
-HREF="index.html#ADDPRINTERCOMMAND"
+HREF="#ADDPRINTERCOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
->addprinter 
+>add printer 
                command</I
 ></TT
 ></A
@@ -4989,7 +4678,7 @@ CLASS="PARAMETER"
                </P
 ><P
 >              See also <A
-HREF="index.html#CHANGESHARECOMMAND"
+HREF="#CHANGESHARECOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -4998,7 +4687,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 >, <A
-HREF="index.html#DELETESHARECOMMAND"
+HREF="#DELETESHARECOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -5009,12 +4698,8 @@ CLASS="PARAMETER"
 >.
                </P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->none</I
-></SPAN
+>Default: <EM
+>none</EM
 ></P
 ><P
 >Example: <B
@@ -5043,7 +4728,7 @@ TARGET="_top"
 ><P
 >Default: <B
 CLASS="COMMAND"
->add machine script = &lt;empty string&gt;
+>add machine script = &#60;empty string&#62;
                </B
 ></P
 ><P
@@ -5055,40 +4740,14 @@ CLASS="COMMAND"
 ></DD
 ><DT
 ><A
-NAME="ADSSERVER"
-></A
->ads server (G)</DT
-><DD
-><P
->If this option is specified, samba does 
-               not try to figure out what ads server to use itself, but 
-               uses the specified ads server. Either one DNS name or IP 
-               address can be used.</P
-><P
->Default: <B
-CLASS="COMMAND"
->ads server = </B
-></P
-><P
->Example: <B
-CLASS="COMMAND"
->ads server = 192.168.1.2</B
-></P
-></DD
-><DT
-><A
 NAME="ADDUSERSCRIPT"
 ></A
 >add user script (G)</DT
 ><DD
 ><P
 >This is the full pathname to a script that will 
-               be run <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->AS ROOT</I
-></SPAN
+               be run <EM
+>AS ROOT</EM
 > by <A
 HREF="smbd.8.html"
 TARGET="_top"
@@ -5105,12 +4764,8 @@ HREF="smbd.8.html"
 TARGET="_top"
 >smbd</A
 > to create the required UNIX users 
-               <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->ON DEMAND</I
-></SPAN
+               <EM
+>ON DEMAND</EM
 > when a user accesses the Samba server.</P
 ><P
 >In order to use this option, <A
@@ -5118,12 +4773,8 @@ HREF="smbd.8.html"
 TARGET="_top"
 >smbd</A
 > 
-               must <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->NOT</I
-></SPAN
+               must <EM
+>NOT</EM
 > be set to <TT
 CLASS="PARAMETER"
 ><I
@@ -5172,12 +4823,8 @@ CLASS="PARAMETER"
 CLASS="COMMAND"
 >smbd</B
 > will
-               call the specified script <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->AS ROOT</I
-></SPAN
+               call the specified script <EM
+>AS ROOT</EM
 >, expanding 
                any <TT
 CLASS="PARAMETER"
@@ -5195,7 +4842,7 @@ CLASS="COMMAND"
                match existing Windows NT accounts.</P
 ><P
 >See also <A
-HREF="index.html#SECURITY"
+HREF="#SECURITY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -5203,7 +4850,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 >, <A
-HREF="index.html#PASSWORDSERVER"
+HREF="#PASSWORDSERVER"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -5212,7 +4859,7 @@ CLASS="PARAMETER"
 ></A
 >, 
                <A
-HREF="index.html#DELETEUSERSCRIPT"
+HREF="#DELETEUSERSCRIPT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -5224,7 +4871,7 @@ CLASS="PARAMETER"
 ><P
 >Default: <B
 CLASS="COMMAND"
->add user script = &lt;empty string&gt;
+>add user script = &#60;empty string&#62;
                </B
 ></P
 ><P
@@ -5242,95 +4889,42 @@ NAME="ADDGROUPSCRIPT"
 ><DD
 ><P
 >This is the full pathname to a script that will 
-               be run <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->AS ROOT</I
-></SPAN
+               be run <EM
+>AS ROOT</EM
 > by <A
 HREF="smbd.8.html"
 TARGET="_top"
->smbd(8)</A
-> when a new group is requested. It will expand any <TT
+>smbd(8) when a new group is requested. It will expand any <TT
 CLASS="PARAMETER"
 ><I
 >%g</I
 ></TT
-> to the group name passed.  This script is only useful for installations using the Windows NT domain administration tools.
-               </P
-></DD
-><DT
-><A
-NAME="ADMINUSERS"
-></A
->admin users (S)</DT
-><DD
-><P
->This is a list of users who will be granted 
-               administrative privileges on the share. This means that they 
-               will do all file operations as the super-user (root).</P
-><P
->You should use this option very carefully, as any user in 
-               this list will be able to do anything they like on the share, 
-               irrespective of file permissions.</P
-><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->no admin users</I
-></SPAN
-></P
-><P
->Example: <B
-CLASS="COMMAND"
->admin users = jason</B
-></P
-></DD
-><DT
-><A
-NAME="ADDUSERTOGROUPSCRIPT"
-></A
->add user to group script (G)</DT
-><DD
-><P
->Full path to the script that will be called when 
-               a user is added to a group using the Windows NT domain administration 
-               tools. It will be run by <A
-HREF="smbd.8.html"
-TARGET="_top"
->smbd(8)</A
-> 
-               <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->AS ROOT</I
-></SPAN
->. Any <TT
-CLASS="PARAMETER"
-><I
->%g</I
-></TT
-> will be 
-               replaced with the group name and any <TT
-CLASS="PARAMETER"
-><I
->%u</I
-></TT
-> will 
-               be replaced with the user name.
-               </P
+> to the group name passed.  This script is only useful for installations using the Windows NT domain administration tools.
+               </A
+> &#13;</P
+></DD
+><DT
+><A
+NAME="ADMINUSERS"
+></A
+>admin users (S)</DT
+><DD
 ><P
->Default: <B
-CLASS="COMMAND"
->add user to group script = </B
+>This is a list of users who will be granted 
+               administrative privileges on the share. This means that they 
+               will do all file operations as the super-user (root).</P
+><P
+>You should use this option very carefully, as any user in 
+               this list will be able to do anything they like on the share, 
+               irrespective of file permissions.</P
+><P
+>Default: <EM
+>no admin users</EM
 ></P
 ><P
 >Example: <B
 CLASS="COMMAND"
->add user to group script = /usr/sbin/adduser %u %g</B
+>admin users = jason</B
 ></P
 ></DD
 ><DT
@@ -5341,7 +4935,7 @@ NAME="ALLOWHOSTS"
 ><DD
 ><P
 >Synonym for <A
-HREF="index.html#HOSTSALLOW"
+HREF="#HOSTSALLOW"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -5390,7 +4984,7 @@ NAME="ALLOWTRUSTEDDOMAINS"
 ><DD
 ><P
 >This option only takes effect when the <A
-HREF="index.html#SECURITY"
+HREF="#SECURITY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -5494,7 +5088,7 @@ NAME="AUTOSERVICES"
 ><DD
 ><P
 >This is a synonym for the <A
-HREF="index.html#PRELOAD"
+HREF="#PRELOAD"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -5516,7 +5110,7 @@ CLASS="COMMAND"
 >smbd</B
 > will use when authenticating
                 a user.  This option defaults to sensible values based on <A
-HREF="index.html#SECURITY"
+HREF="#SECURITY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -5532,7 +5126,7 @@ CLASS="PARAMETER"
 ><P
 >Default: <B
 CLASS="COMMAND"
->auth methods = &lt;empty string&gt;</B
+>auth methods = &#60;empty string&#62;</B
 ></P
 ><P
 >Example: <B
@@ -5553,12 +5147,8 @@ CLASS="PARAMETER"
 ><I
 >available = no</I
 ></TT
->, then <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->ALL</I
-></SPAN
+>, then <EM
+>ALL</EM
 > 
                attempts to connect to the service will fail. Such failures are 
                logged.</P
@@ -5594,7 +5184,7 @@ CLASS="COMMAND"
 >nmbd</B
 > to bind 
                to ports 137 and 138 on the interfaces listed in the <A
-HREF="index.html#INTERFACES"
+HREF="#INTERFACES"
 >interfaces</A
 > parameter. <B
 CLASS="COMMAND"
@@ -5648,7 +5238,7 @@ TARGET="_top"
 >smbd(8)</A
 >
                to bind only to the interface list given in the <A
-HREF="index.html#INTERFACES"
+HREF="#INTERFACES"
 >              interfaces</A
 > parameter. This restricts the networks that 
                <B
@@ -5665,12 +5255,8 @@ CLASS="PARAMETER"
 >bind interfaces only</I
 ></TT
 > is set then 
-               unless the network address <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->127.0.0.1</I
-></SPAN
+               unless the network address <EM
+>127.0.0.1</EM
 > is added 
                to the <TT
 CLASS="PARAMETER"
@@ -5699,12 +5285,8 @@ CLASS="COMMAND"
 CLASS="COMMAND"
 >smbpasswd</B
 >
-               by default connects to the <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->localhost - 127.0.0.1</I
-></SPAN
+               by default connects to the <EM
+>localhost - 127.0.0.1</EM
 > 
                address as an SMB client to issue the password change request. If 
                <TT
@@ -5713,12 +5295,8 @@ CLASS="PARAMETER"
 >bind interfaces only</I
 ></TT
 > is set then unless the 
-               network address <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->127.0.0.1</I
-></SPAN
+               network address <EM
+>127.0.0.1</EM
 > is added to the
                <TT
 CLASS="PARAMETER"
@@ -5767,19 +5345,11 @@ CLASS="COMMAND"
 CLASS="COMMAND"
 >nmbd</B
 > at the address 
-               <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->127.0.0.1</I
-></SPAN
+               <EM
+>127.0.0.1</EM
 > to determine if they are running.  
-               Not adding <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->127.0.0.1</I
-></SPAN
+               Not adding <EM
+>127.0.0.1</EM
 >  will cause <B
 CLASS="COMMAND"
 >              smbd</B
@@ -5839,50 +5409,13 @@ CLASS="COMMAND"
 ></DD
 ><DT
 ><A
-NAME="BLOCKSIZE"
-></A
->block size (S)</DT
-><DD
-><P
->This parameter controls the behavior of 
-               <A
-HREF="smbd.8.html"
-TARGET="_top"
->smbd(8)</A
-> when reporting disk free 
-               sizes. By default, this reports a disk block size of 1024 bytes.
-               </P
-><P
->Changing this parameter may have some effect on the
-               efficiency of client writes, this is not yet confirmed. This
-               parameter was added to allow advanced administrators to change
-               it (usually to a higher value) and test the effect it has on
-               client write performance without re-compiling the code. As this
-               is an experimental option it may be removed in a future release.
-               </P
-><P
->Changing this option does not change the disk free reporting
-               size, just the block size unit reported to the client.</P
-><P
->Default: <B
-CLASS="COMMAND"
->block size = 1024</B
-></P
-><P
->Example: <B
-CLASS="COMMAND"
->block size = 65536</B
-></P
-></DD
-><DT
-><A
 NAME="BROWSABLE"
 ></A
 >browsable (S)</DT
 ><DD
 ><P
 >See the <A
-HREF="index.html#BROWSEABLE"
+HREF="#BROWSEABLE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -5944,7 +5477,7 @@ NAME="CASESENSITIVE"
 ><DD
 ><P
 >See the discussion in the section <A
-HREF="index.html#AEN203"
+HREF="#AEN203"
 >NAME MANGLING</A
 >.</P
 ><P
@@ -5961,7 +5494,7 @@ NAME="CASESIGNAMES"
 ><DD
 ><P
 >Synonym for <A
-HREF="index.html#CASESENSITIVE"
+HREF="#CASESENSITIVE"
 >case 
                sensitive</A
 >.</P
@@ -6105,7 +5638,7 @@ CLASS="PARAMETER"
                </P
 ><P
 >              See also <A
-HREF="index.html#ADDSHARECOMMAND"
+HREF="#ADDSHARECOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -6114,7 +5647,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 >, <A
-HREF="index.html#DELETESHARECOMMAND"
+HREF="#DELETESHARECOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -6125,12 +5658,8 @@ CLASS="PARAMETER"
 >.
                </P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->none</I
-></SPAN
+>Default: <EM
+>none</EM
 ></P
 ><P
 >Example: <B
@@ -6155,7 +5684,7 @@ CLASS="COMMAND"
 ><P
 >If you want to set the string that is displayed next to the 
                machine name then see the <A
-HREF="index.html#SERVERSTRING"
+HREF="#SERVERSTRING"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -6164,12 +5693,8 @@ CLASS="PARAMETER"
 ></A
 > parameter.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->No comment string</I
-></SPAN
+>Default: <EM
+>No comment string</EM
 ></P
 ><P
 >Example: <B
@@ -6226,12 +5751,8 @@ NAME="COPY"
                copied must occur earlier in the configuration file than the 
                service doing the copying.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->no value</I
-></SPAN
+>Default: <EM
+>no value</EM
 ></P
 ><P
 >Example: <B
@@ -6248,7 +5769,7 @@ NAME="CREATEMASK"
 ><P
 >A synonym for this parameter is 
                <A
-HREF="index.html#CREATEMODE"
+HREF="#CREATEMODE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -6262,12 +5783,8 @@ CLASS="PARAMETER"
                calculated according to the mapping from DOS modes to UNIX 
                permissions, and the resulting UNIX mode is then bit-wise 'AND'ed 
                with this parameter. This parameter may be thought of as a bit-wise 
-               MASK for the UNIX modes of a file. Any bit <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->not</I
-></SPAN
+               MASK for the UNIX modes of a file. Any bit <EM
+>not</EM
 > 
                set here will be removed from the modes set on a file when it is 
                created.</P
@@ -6277,7 +5794,7 @@ CLASS="EMPHASIS"
 ><P
 >Following this Samba will bit-wise 'OR' the UNIX mode created 
                from this parameter with the value of the <A
-HREF="index.html#FORCECREATEMODE"
+HREF="#FORCECREATEMODE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -6289,7 +5806,7 @@ CLASS="PARAMETER"
 ><P
 >This parameter does not affect directory modes. See the 
                parameter <A
-HREF="index.html#DIRECTORYMODE"
+HREF="#DIRECTORYMODE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -6300,7 +5817,7 @@ CLASS="PARAMETER"
 > for details.</P
 ><P
 >See also the <A
-HREF="index.html#FORCECREATEMODE"
+HREF="#FORCECREATEMODE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -6310,7 +5827,7 @@ CLASS="PARAMETER"
 ></A
 > parameter for forcing particular mode 
                bits to be set on created files. See also the <A
-HREF="index.html#DIRECTORYMODE"
+HREF="#DIRECTORYMODE"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -6319,7 +5836,7 @@ CLASS="PARAMETER"
 ></A
 > parameter for masking 
                mode bits on created directories.  See also the <A
-HREF="index.html#INHERITPERMISSIONS"
+HREF="#INHERITPERMISSIONS"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -6331,7 +5848,7 @@ CLASS="PARAMETER"
 >Note that this parameter does not apply to permissions
                set by Windows NT/2000 ACL editors. If the administrator wishes to enforce
                a mask on access control lists also, they need to set the <A
-HREF="index.html#SECURITYMASK"
+HREF="#SECURITYMASK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -6358,7 +5875,7 @@ NAME="CREATEMODE"
 ><DD
 ><P
 >This is a synonym for <A
-HREF="index.html#CREATEMASK"
+HREF="#CREATEMASK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -6374,13 +5891,9 @@ NAME="CSCPOLICY"
 >csc policy (S)</DT
 ><DD
 ><P
->This stands for <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+>This stands for <EM
 >client-side caching 
-               policy</I
-></SPAN
+               policy</EM
 >, and specifies how clients capable of offline
                caching will cache the files in the share. The valid values
                are: manual, documents, programs, disable.</P
@@ -6453,7 +5966,7 @@ NAME="DEBUGHIRESTIMESTAMP"
                message header when turned on.</P
 ><P
 >Note that the parameter <A
-HREF="index.html#DEBUGTIMESTAMP"
+HREF="#DEBUGTIMESTAMP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -6485,7 +5998,7 @@ TARGET="_top"
                to the timestamp message headers in the logfile when turned on.</P
 ><P
 >Note that the parameter <A
-HREF="index.html#DEBUGTIMESTAMP"
+HREF="#DEBUGTIMESTAMP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -6509,7 +6022,7 @@ NAME="DEBUGTIMESTAMP"
 ><P
 >Samba 2.2 debug log messages are timestamped 
                by default. If you are running at a high <A
-HREF="index.html#DEBUGLEVEL"
+HREF="#DEBUGLEVEL"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -6538,7 +6051,7 @@ NAME="DEBUGUID"
                in the log file if turned on.</P
 ><P
 >Note that the parameter <A
-HREF="index.html#DEBUGTIMESTAMP"
+HREF="#DEBUGTIMESTAMP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -6561,7 +6074,7 @@ NAME="DEBUGLEVEL"
 ><DD
 ><P
 >Synonym for <A
-HREF="index.html#LOGLEVEL"
+HREF="#LOGLEVEL"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -6578,7 +6091,7 @@ NAME="DEFAULT"
 ><DD
 ><P
 >A synonym for <A
-HREF="index.html#DEFAULTSERVICE"
+HREF="#DEFAULTSERVICE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -6595,10 +6108,10 @@ NAME="DEFAULTCASE"
 ><DD
 ><P
 >See the section on <A
-HREF="index.html#AEN203"
+HREF="#AEN203"
 >              NAME MANGLING</A
 >. Also note the <A
-HREF="index.html#SHORTPRESERVECASE"
+HREF="#SHORTPRESERVECASE"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -6620,7 +6133,7 @@ NAME="DEFAULTDEVMODE"
 ><DD
 ><P
 >This parameter is only applicable to <A
-HREF="index.html#PRINTOK"
+HREF="#PRINTOK"
 >printable</A
 > services.  When smbd is serving
                Printer Drivers to Windows NT/2k/XP clients, each printer on the Samba
@@ -6672,12 +6185,8 @@ NAME="DEFAULTSERVICE"
 ><P
 >This parameter specifies the name of a service
                which will be connected to if the service actually requested cannot
-               be found. Note that the square brackets are <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->NOT</I
-></SPAN
+               be found. Note that the square brackets are <EM
+>NOT</EM
 >
                given in the parameter value (see example below).</P
 ><P
@@ -6686,7 +6195,7 @@ CLASS="EMPHASIS"
                service results in an error.</P
 ><P
 >Typically the default service would be a <A
-HREF="index.html#GUESTOK"
+HREF="#GUESTOK"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -6694,7 +6203,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 >, <A
-HREF="index.html#READONLY"
+HREF="#READONLY"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -6719,6 +6228,12 @@ CLASS="PARAMETER"
 ><P
 >Example:</P
 ><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
 ><PRE
 CLASS="PROGRAMLISTING"
 >[global]
@@ -6727,39 +6242,16 @@ CLASS="PROGRAMLISTING"
 [pub]
        path = /%S
                </PRE
+></TD
+></TR
+></TABLE
 ></P
 ></DD
 ><DT
 ><A
-NAME="DELETEGROUPSCRIPT"
-></A
->delete group script (G)</DT
-><DD
-><P
->This is the full pathname to a script that will 
-               be run <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->AS ROOT</I
-></SPAN
-> by <A
-HREF="smbd.8.html"
-TARGET="_top"
->smbd(8)</A
-> when a group is requested to be deleted. It will expand any <TT
-CLASS="PARAMETER"
-><I
->%g</I
-></TT
-> to the group name passed.  This script is only useful for installations using the Windows NT domain administration tools.
-               </P
-></DD
-><DT
-><A
 NAME="DELETEPRINTERCOMMAND"
 ></A
->deleteprinter command (G)</DT
+>delete printer command (G)</DT
 ><DD
 ><P
 >With the introduction of MS-RPC based printer
@@ -6784,7 +6276,7 @@ CLASS="FILENAME"
 >The <TT
 CLASS="PARAMETER"
 ><I
->deleteprinter command</I
+>delete printer command</I
 ></TT
 > is 
                automatically called with only one parameter: <TT
@@ -6797,7 +6289,7 @@ CLASS="PARAMETER"
 >Once the <TT
 CLASS="PARAMETER"
 ><I
->deleteprinter command</I
+>delete printer command</I
 ></TT
 > has 
                been executed, <B
@@ -6814,15 +6306,15 @@ CLASS="COMMAND"
 > will return an ACCESS_DENIED error to the client.</P
 ><P
 >See also <A
-HREF="index.html#ADDPRINTERCOMMAND"
+HREF="#ADDPRINTERCOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
->              addprinter command</I
+>              add printer command</I
 ></TT
 ></A
 >, <A
-HREF="index.html#PRINTING"
+HREF="#PRINTING"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -6831,7 +6323,7 @@ CLASS="PARAMETER"
 ></A
 >,
                <A
-HREF="index.html#SHOWADDPRINTERWIZARD"
+HREF="#SHOWADDPRINTERWIZARD"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -6841,12 +6333,8 @@ CLASS="PARAMETER"
 ></A
 ></P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->none</I
-></SPAN
+>Default: <EM
+>none</EM
 ></P
 ><P
 >Example: <B
@@ -6950,11 +6438,11 @@ CLASS="PARAMETER"
 ><P
 >              This parameter is only used to remove file shares.  To delete printer shares, 
                see the <A
-HREF="index.html#DELETEPRINTERCOMMAND"
+HREF="#DELETEPRINTERCOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
->deleteprinter 
+>delete printer 
                command</I
 ></TT
 ></A
@@ -6962,7 +6450,7 @@ CLASS="PARAMETER"
                </P
 ><P
 >              See also <A
-HREF="index.html#ADDSHARECOMMAND"
+HREF="#ADDSHARECOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -6971,7 +6459,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 >, <A
-HREF="index.html#CHANGESHARECOMMAND"
+HREF="#CHANGESHARECOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -6982,12 +6470,8 @@ CLASS="PARAMETER"
 >.
                </P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->none</I
-></SPAN
+>Default: <EM
+>none</EM
 ></P
 ><P
 >Example: <B
@@ -7027,7 +6511,7 @@ CLASS="COMMAND"
 ><P
 >Default: <B
 CLASS="COMMAND"
->delete user script = &lt;empty string&gt;
+>delete user script = &#60;empty string&#62;
                </B
 ></P
 ><P
@@ -7039,51 +6523,6 @@ CLASS="COMMAND"
 ></DD
 ><DT
 ><A
-NAME="DELETEUSERFROMGROUPSCRIPT"
-></A
->delete user from group script (G)</DT
-><DD
-><P
->Full path to the script that will be called when 
-               a user is removed from a group using the Windows NT domain administration 
-               tools. It will be run by <A
-HREF="smbd.8.html"
-TARGET="_top"
->smbd(8)</A
-> 
-               <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->AS ROOT</I
-></SPAN
->. Any <TT
-CLASS="PARAMETER"
-><I
->%g</I
-></TT
-> will be 
-               replaced with the group name and any <TT
-CLASS="PARAMETER"
-><I
->%u</I
-></TT
-> will 
-               be replaced with the user name.
-               </P
-><P
->Default: <B
-CLASS="COMMAND"
->delete user from group script = </B
-></P
-><P
->Example: <B
-CLASS="COMMAND"
->delete user from group script = /usr/sbin/deluser %u %g</B
-></P
-></DD
-><DT
-><A
 NAME="DELETEVETOFILES"
 ></A
 >delete veto files (S)</DT
@@ -7092,7 +6531,7 @@ NAME="DELETEVETOFILES"
 >This option is used when Samba is attempting to 
                delete a directory that contains one or more vetoed directories 
                (see the <A
-HREF="index.html#VETOFILES"
+HREF="#VETOFILES"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -7128,7 +6567,7 @@ CLASS="COMMAND"
                is deleted (so long as the user has permissions to do so).</P
 ><P
 >See also the <A
-HREF="index.html#VETOFILES"
+HREF="#VETOFILES"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -7151,7 +6590,7 @@ NAME="DENYHOSTS"
 ><DD
 ><P
 >Synonym for <A
-HREF="index.html#HOSTSDENY"
+HREF="#HOSTSDENY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -7196,23 +6635,15 @@ CLASS="FILENAME"
                third return value can give the block size in bytes. The default 
                blocksize is 1024 bytes.</P
 ><P
->Note: Your script should <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->NOT</I
-></SPAN
+>Note: Your script should <EM
+>NOT</EM
 > be setuid or 
                setgid and should be owned by (and writeable only by) root!</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+>Default: <EM
 >By default internal routines for 
                determining the disk capacity and remaining space will be used.
-               </I
-></SPAN
+               </EM
 ></P
 ><P
 >Example: <B
@@ -7223,22 +6654,40 @@ CLASS="COMMAND"
 ><P
 >Where the script dfree (which must be made executable) could be:</P
 ><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
 ><PRE
 CLASS="PROGRAMLISTING"
 > 
                #!/bin/sh
                df $1 | tail -1 | awk '{print $2" "$4}'
                </PRE
+></TD
+></TR
+></TABLE
 ></P
 ><P
 >or perhaps (on Sys V based systems):</P
 ><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
 ><PRE
 CLASS="PROGRAMLISTING"
 > 
                #!/bin/sh
                /usr/bin/df -k $1 | tail -1 | awk '{print $3" "$5}'
                </PRE
+></TD
+></TR
+></TABLE
 ></P
 ><P
 >Note that you may have to replace the command names 
@@ -7252,7 +6701,7 @@ NAME="DIRECTORY"
 ><DD
 ><P
 >Synonym for <A
-HREF="index.html#PATH"
+HREF="#PATH"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -7277,12 +6726,8 @@ NAME="DIRECTORYMASK"
                calculated according to the mapping from DOS modes to UNIX permissions, 
                and the resulting UNIX mode is then bit-wise 'AND'ed with this 
                parameter. This parameter may be thought of as a bit-wise MASK for 
-               the UNIX modes of a directory. Any bit <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->not</I
-></SPAN
+               the UNIX modes of a directory. Any bit <EM
+>not</EM
 > set 
                here will be removed from the modes set on a directory when it is 
                created.</P
@@ -7293,7 +6738,7 @@ CLASS="EMPHASIS"
 ><P
 >Following this Samba will bit-wise 'OR' the UNIX mode 
                created from this parameter with the value of the <A
-HREF="index.html#FORCEDIRECTORYMODE"
+HREF="#FORCEDIRECTORYMODE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -7307,7 +6752,7 @@ CLASS="PARAMETER"
 >Note that this parameter does not apply to permissions
                set by Windows NT/2000 ACL editors. If the administrator wishes to enforce
                a mask on access control lists also, they need to set the <A
-HREF="index.html#DIRECTORYSECURITYMASK"
+HREF="#DIRECTORYSECURITYMASK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -7317,7 +6762,7 @@ CLASS="PARAMETER"
 >.</P
 ><P
 >See the <A
-HREF="index.html#FORCEDIRECTORYMODE"
+HREF="#FORCEDIRECTORYMODE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -7329,7 +6774,7 @@ CLASS="PARAMETER"
                bits to always be set on created directories.</P
 ><P
 >See also the <A
-HREF="index.html#CREATEMODE"
+HREF="#CREATEMODE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -7339,7 +6784,7 @@ CLASS="PARAMETER"
 ></A
 > parameter for masking mode bits on created files, 
                and the <A
-HREF="index.html#DIRECTORYSECURITYMASK"
+HREF="#DIRECTORYSECURITYMASK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -7350,7 +6795,7 @@ CLASS="PARAMETER"
 > parameter.</P
 ><P
 >Also refer to the <A
-HREF="index.html#INHERITPERMISSIONS"
+HREF="#INHERITPERMISSIONS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -7377,7 +6822,7 @@ NAME="DIRECTORYMODE"
 ><DD
 ><P
 >Synonym for <A
-HREF="index.html#DIRECTORYMASK"
+HREF="#DIRECTORYMASK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -7408,12 +6853,8 @@ NAME="DIRECTORYSECURITYMASK"
                meaning a user is allowed to modify all the user/group/world
                permissions on a directory.</P
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Note</I
-></SPAN
+><EM
+>Note</EM
 > that users who can access the 
                Samba server through other means can easily bypass this restriction, 
                so it is primarily useful for standalone "appliance" systems.  
@@ -7424,7 +6865,7 @@ CLASS="CONSTANT"
 >.</P
 ><P
 >See also the <A
-HREF="index.html#FORCEDIRECTORYSECURITYMODE"
+HREF="#FORCEDIRECTORYSECURITYMODE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -7432,7 +6873,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 >, <A
-HREF="index.html#SECURITYMASK"
+HREF="#SECURITYMASK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -7441,7 +6882,7 @@ CLASS="PARAMETER"
 ></A
 >, 
                <A
-HREF="index.html#FORCESECURITYMODE"
+HREF="#FORCESECURITYMODE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -7463,37 +6904,12 @@ CLASS="COMMAND"
 ></DD
 ><DT
 ><A
-NAME="DISABLENETBIOS"
-></A
->disable netbios (G)</DT
-><DD
-><P
->Enabling this parameter will disable netbios support
-               in Samba. Netbios is the only available form of browsing in 
-               all windows versions except for 2000 and XP. </P
-><P
->Note that clients that only support netbios won't be able to 
-               see your samba server when netbios support is disabled.
-               </P
-><P
->Default: <B
-CLASS="COMMAND"
->disable netbios = no</B
-></P
-><P
->Example: <B
-CLASS="COMMAND"
->disable netbios = yes</B
-></P
-></DD
-><DT
-><A
 NAME="DISABLESPOOLSS"
 ></A
 >disable spoolss (G)</DT
 ><DD
 ><P
->Enabling this parameter will disable Samba's support
+>Enabling this parameter will disables Samba's support
                for the SPOOLSS set of MS-RPC's and will yield identical behavior
                as Samba 2.0.x.  Windows NT/2000 clients will downgrade to using
                Lanman style printing commands. Windows 9x/ME will be uneffected by
@@ -7502,17 +6918,13 @@ NAME="DISABLESPOOLSS"
                Wizard or by using the NT printer properties dialog window.  It will
                also disable the capability of Windows NT/2000 clients to download
                print drivers from the Samba host upon demand.
-               <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Be very careful about enabling this parameter.</I
-></SPAN
+               <EM
+>Be very careful about enabling this parameter.</EM
 >
                </P
 ><P
 >See also <A
-HREF="index.html#USECLIENTDRIVER"
+HREF="#USECLIENTDRIVER"
 >use client driver</A
 >
                </P
@@ -7524,31 +6936,6 @@ CLASS="COMMAND"
 ></DD
 ><DT
 ><A
-NAME="DISPLAYCHARSET"
-></A
->display charset (G)</DT
-><DD
-><P
->Specifies the charset that samba will use 
-               to print messages to stdout and stderr and SWAT will use. 
-               Should generally be the same as the <B
-CLASS="COMMAND"
->unix charset</B
->.
-               </P
-><P
->Default: <B
-CLASS="COMMAND"
->display charset = ASCII</B
-></P
-><P
->Example: <B
-CLASS="COMMAND"
->display charset = UTF8</B
-></P
-></DD
-><DT
-><A
 NAME="DNSPROXY"
 ></A
 >dns proxy (G)</DT
@@ -7576,7 +6963,7 @@ CLASS="COMMAND"
                action.</P
 ><P
 >See also the parameter <A
-HREF="index.html#WINSSUPPORT"
+HREF="#WINSSUPPORT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -7610,7 +6997,7 @@ CLASS="FILENAME"
                </P
 ><P
 >See also <A
-HREF="index.html#DOMAINGUESTGROUP"
+HREF="#DOMAINGUESTGROUP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -7619,7 +7006,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 >, <A
-HREF="index.html#DOMAINLOGONS"
+HREF="#DOMAINLOGONS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -7630,12 +7017,8 @@ CLASS="PARAMETER"
 >
                </P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->no domain administrators</I
-></SPAN
+>Default: <EM
+>no domain administrators</EM
 ></P
 ><P
 >Example: <B
@@ -7663,7 +7046,7 @@ CLASS="FILENAME"
                </P
 ><P
 >See also <A
-HREF="index.html#DOMAINADMINGROUP"
+HREF="#DOMAINADMINGROUP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -7672,7 +7055,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 >, <A
-HREF="index.html#DOMAINLOGONS"
+HREF="#DOMAINLOGONS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -7683,12 +7066,8 @@ CLASS="PARAMETER"
 >
                </P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->no domain guests</I
-></SPAN
+>Default: <EM
+>no domain guests</EM
 ></P
 ><P
 >Example: <B
@@ -7708,7 +7087,7 @@ CLASS="CONSTANT"
 >true</TT
 >, the Samba server will serve 
                Windows 95/98 Domain logons for the <A
-HREF="index.html#WORKGROUP"
+HREF="#WORKGROUP"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -7750,7 +7129,7 @@ CLASS="COMMAND"
 > to
                claim a special domain specific NetBIOS name that identifies 
                it as a domain master browser for its given <A
-HREF="index.html#WORKGROUP"
+HREF="#WORKGROUP"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -7810,7 +7189,7 @@ CLASS="PARAMETER"
                strangely and may fail.</P
 ><P
 >If <A
-HREF="index.html#DOMAINLOGONS"
+HREF="#DOMAINLOGONS"
 ><B
 CLASS="COMMAND"
 >domain logons = yes</B
@@ -7867,13 +7246,9 @@ CLASS="FILENAME"
 >. 
                Experimentation is the best policy :-)  </P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+>Default: <EM
 >none (i.e., all directories are OK 
-               to descend)</I
-></SPAN
+               to descend)</EM
 ></P
 ><P
 >Example: <B
@@ -7883,28 +7258,6 @@ CLASS="COMMAND"
 ></DD
 ><DT
 ><A
-NAME="DOSCHARSET"
-></A
->dos charset (G)</DT
-><DD
-><P
->DOS SMB clients assume the server has 
-               the same charset as they do. This option specifies which 
-               charset Samba should talk to DOS clients.
-               </P
-><P
->The default depends on which charsets you have instaled. 
-               Samba tries to use charset 850 but falls back to ASCII in 
-               case it is not available. Run <A
-HREF="testparm.1.html"
-TARGET="_top"
->testparm(1)
-               </A
-> to check the default on your system.
-               </P
-></DD
-><DT
-><A
 NAME="DOSFILEMODE"
 ></A
 >dos filemode (S)</DT
@@ -8036,7 +7389,7 @@ CLASS="COMMAND"
 ></A
 > program for information on how to set up 
                and maintain this file), or set the <A
-HREF="index.html#SECURITY"
+HREF="#SECURITY"
 >security = [server|domain|ads]</A
 > parameter which 
                causes <B
@@ -8117,12 +7470,8 @@ CLASS="PARAMETER"
                to standard output.  This listing will then be used in response
                to the level 1 and 2 EnumPorts() RPC.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->no enumports command</I
-></SPAN
+>Default: <EM
+>no enumports command</EM
 ></P
 ><P
 >Example: <B
@@ -8139,7 +7488,7 @@ NAME="EXEC"
 ><DD
 ><P
 >This is a synonym for <A
-HREF="index.html#PREEXEC"
+HREF="#PREEXEC"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -8216,7 +7565,7 @@ CLASS="COMMAND"
                the file.</P
 ><P
 >It is generally much better to use the real <A
-HREF="index.html#OPLOCKS"
+HREF="#OPLOCKS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -8288,12 +7637,8 @@ NAME="FORCECREATEMODE"
 ><DD
 ><P
 >This parameter specifies a set of UNIX mode bit 
-               permissions that will <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->always</I
-></SPAN
+               permissions that will <EM
+>always</EM
 > be set on a 
                file created by Samba. This is done by bitwise 'OR'ing these bits onto 
                the mode bits of a file that is being created or having its 
@@ -8308,7 +7653,7 @@ CLASS="PARAMETER"
                parameter is applied.</P
 ><P
 >See also the parameter <A
-HREF="index.html#CREATEMASK"
+HREF="#CREATEMASK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -8319,7 +7664,7 @@ CLASS="PARAMETER"
 > for details on masking mode bits on files.</P
 ><P
 >See also the <A
-HREF="index.html#INHERITPERMISSIONS"
+HREF="#INHERITPERMISSIONS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -8351,12 +7696,8 @@ NAME="FORCEDIRECTORYMODE"
 ><DD
 ><P
 >This parameter specifies a set of UNIX mode bit 
-               permissions that will <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->always</I
-></SPAN
+               permissions that will <EM
+>always</EM
 > be set on a directory 
                created by Samba. This is done by bitwise 'OR'ing these bits onto the 
                mode bits of a directory that is being created. The default for this 
@@ -8371,7 +7712,7 @@ CLASS="PARAMETER"
                applied.</P
 ><P
 >See also the parameter <A
-HREF="index.html#DIRECTORYMASK"
+HREF="#DIRECTORYMASK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -8382,7 +7723,7 @@ CLASS="PARAMETER"
                on created directories.</P
 ><P
 >See also the <A
-HREF="index.html#INHERITPERMISSIONS"
+HREF="#INHERITPERMISSIONS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -8409,7 +7750,8 @@ CLASS="COMMAND"
 ><A
 NAME="FORCEDIRECTORYSECURITYMODE"
 ></A
->force directory security mode (S)</DT
+>force directory 
+               security mode (S)</DT
 ><DD
 ><P
 >This parameter controls what UNIX permission bits 
@@ -8426,12 +7768,8 @@ NAME="FORCEDIRECTORYSECURITYMODE"
                allows a user to modify all the user/group/world permissions on a 
                directory without restrictions.</P
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Note</I
-></SPAN
+><EM
+>Note</EM
 > that users who can access the 
                Samba server through other means can easily bypass this restriction, 
                so it is primarily useful for standalone "appliance" systems.  
@@ -8439,7 +7777,7 @@ CLASS="EMPHASIS"
                it set as 0000.</P
 ><P
 >See also the <A
-HREF="index.html#DIRECTORYSECURITYMASK"
+HREF="#DIRECTORYSECURITYMASK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -8447,7 +7785,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 >, <A
-HREF="index.html#SECURITYMASK"
+HREF="#SECURITYMASK"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -8456,7 +7794,7 @@ CLASS="PARAMETER"
 ></A
 >, 
                <A
-HREF="index.html#FORCESECURITYMODE"
+HREF="#FORCESECURITYMODE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -8508,7 +7846,7 @@ CLASS="FILENAME"
                other users will retain their ordinary primary group.</P
 ><P
 >If the <A
-HREF="index.html#FORCEUSER"
+HREF="#FORCEUSER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -8531,7 +7869,7 @@ CLASS="PARAMETER"
 >.</P
 ><P
 >See also <A
-HREF="index.html#FORCEUSER"
+HREF="#FORCEUSER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -8541,12 +7879,8 @@ CLASS="PARAMETER"
 ></A
 >.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->no forced group</I
-></SPAN
+>Default: <EM
+>no forced group</EM
 ></P
 ><P
 >Example: <B
@@ -8576,12 +7910,8 @@ NAME="FORCESECURITYMODE"
                and allows a user to modify all the user/group/world permissions on a file,
                with no restrictions.</P
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Note</I
-></SPAN
+><EM
+>Note</EM
 > that users who can access 
                the Samba server through other means can easily bypass this restriction, 
                so it is primarily useful for standalone "appliance" systems.  
@@ -8589,7 +7919,7 @@ CLASS="EMPHASIS"
                this set to 0000.</P
 ><P
 >See also the <A
-HREF="index.html#FORCEDIRECTORYSECURITYMODE"
+HREF="#FORCEDIRECTORYSECURITYMODE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -8598,7 +7928,7 @@ CLASS="PARAMETER"
 ></A
 >,
                <A
-HREF="index.html#DIRECTORYSECURITYMASK"
+HREF="#DIRECTORYSECURITYMASK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -8607,7 +7937,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 >, <A
-HREF="index.html#SECURITYMASK"
+HREF="#SECURITYMASK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -8650,7 +7980,7 @@ NAME="FORCEUSER"
                as the primary group of the connecting user (this was a bug).</P
 ><P
 >See also <A
-HREF="index.html#FORCEGROUP"
+HREF="#FORCEGROUP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -8660,12 +7990,8 @@ CLASS="PARAMETER"
 ></A
 ></P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->no forced user</I
-></SPAN
+>Default: <EM
+>no forced user</EM
 ></P
 ><P
 >Example: <B
@@ -8726,7 +8052,7 @@ NAME="GETWDCACHE"
                caching algorithm will be used to reduce the time taken for getwd() 
                calls. This can have a significant impact on performance, especially 
                when the <A
-HREF="index.html#WIDELINKS"
+HREF="#WIDELINKS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -8752,7 +8078,7 @@ NAME="GROUP"
 ><DD
 ><P
 >Synonym for <A
-HREF="index.html#FORCEGROUP"
+HREF="#FORCEGROUP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -8771,7 +8097,7 @@ NAME="GUESTACCOUNT"
 ><P
 >This is a username which will be used for access 
                to services which are specified as <A
-HREF="index.html#GUESTOK"
+HREF="#GUESTOK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -8800,17 +8126,9 @@ CLASS="COMMAND"
 >              lp(1)</B
 >.</P
 ><P
->This paramater does not accept % marcos, becouse
-               many parts of the system require this value to be
-               constant for correct operation</P
-><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+>Default: <EM
 >specified at compile time, usually 
-               "nobody"</I
-></SPAN
+               "nobody"</EM
 ></P
 ><P
 >Example: <B
@@ -8831,7 +8149,7 @@ CLASS="CONSTANT"
 > for 
                a service, then no password is required to connect to the service. 
                Privileges will be those of the <A
-HREF="index.html#GUESTACCOUNT"
+HREF="#GUESTACCOUNT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -8841,7 +8159,7 @@ CLASS="PARAMETER"
 >.</P
 ><P
 >See the section below on <A
-HREF="index.html#SECURITY"
+HREF="#SECURITY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -8869,7 +8187,7 @@ CLASS="CONSTANT"
 > for 
                a service, then only guest connections to the service are permitted. 
                This parameter will have no effect if <A
-HREF="index.html#GUESTOK"
+HREF="#GUESTOK"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -8879,7 +8197,7 @@ CLASS="PARAMETER"
 > is not set for the service.</P
 ><P
 >See the section below on <A
-HREF="index.html#SECURITY"
+HREF="#SECURITY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -8936,7 +8254,7 @@ NAME="HIDEFILES"
                as they are scanned.</P
 ><P
 >See also <A
-HREF="index.html#HIDEDOTFILES"
+HREF="#HIDEDOTFILES"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -8945,7 +8263,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 >, <A
-HREF="index.html#VETOFILES"
+HREF="#VETOFILES"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -8953,7 +8271,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 > and <A
-HREF="index.html#CASESENSITIVE"
+HREF="#CASESENSITIVE"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -8962,12 +8280,8 @@ CLASS="PARAMETER"
 ></A
 >.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->no file are hidden</I
-></SPAN
+>Default: <EM
+>no file are hidden</EM
 ></P
 ><P
 >Example: <B
@@ -9004,7 +8318,7 @@ CLASS="COMMAND"
 ><A
 NAME="HIDEUNREADABLE"
 ></A
->hide unreadable (G)</DT
+>hide unreadable (S)</DT
 ><DD
 ><P
 >This parameter prevents clients from seeing the
@@ -9017,30 +8331,13 @@ CLASS="COMMAND"
 ></DD
 ><DT
 ><A
-NAME="HIDEUNWRITEABLEFILES"
-></A
->hide unwriteable files (G)</DT
-><DD
-><P
->This parameter prevents clients from seeing
-               the existance of files that cannot be written to. Defaults to off.
-               Note that unwriteable directories are shown as usual.
-               </P
-><P
->Default: <B
-CLASS="COMMAND"
->hide unwriteable = no</B
-></P
-></DD
-><DT
-><A
 NAME="HOMEDIRMAP"
 ></A
 >homedir map (G)</DT
 ><DD
 ><P
 >If<A
-HREF="index.html#NISHOMEDIR"
+HREF="#NISHOMEDIR"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -9079,17 +8376,13 @@ CLASS="COMMAND"
                that copes with different map formats and also Amd (another 
                automounter) maps.</P
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->NOTE :</I
-></SPAN
+><EM
+>NOTE :</EM
 >A working NIS client is required on 
                the system for this option to work.</P
 ><P
 >See also <A
-HREF="index.html#NISHOMEDIR"
+HREF="#NISHOMEDIR"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -9098,7 +8391,7 @@ CLASS="PARAMETER"
 >
                </A
 >, <A
-HREF="index.html#DOMAINLOGONS"
+HREF="#DOMAINLOGONS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -9110,7 +8403,7 @@ CLASS="PARAMETER"
 ><P
 >Default: <B
 CLASS="COMMAND"
->homedir map = &lt;empty string&gt;</B
+>homedir map = &#60;empty string&#62;</B
 ></P
 ><P
 >Example: <B
@@ -9137,7 +8430,7 @@ CLASS="CONSTANT"
                to browse Dfs trees hosted on the server.</P
 ><P
 >See also the <A
-HREF="index.html#MSDFSROOT"
+HREF="#MSDFSROOT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -9160,35 +8453,6 @@ CLASS="COMMAND"
 ></DD
 ><DT
 ><A
-NAME="HOSTNAMELOOKUPS"
-></A
->hostname lookups (G)</DT
-><DD
-><P
->Specifies whether samba should use (expensive)
-               hostname lookups or use the ip addresses instead. An example place
-               where hostname lookups are currently used is when checking 
-               the <B
-CLASS="COMMAND"
->hosts deny</B
-> and <B
-CLASS="COMMAND"
->hosts allow</B
->.
-               </P
-><P
->Default: <B
-CLASS="COMMAND"
->hostname lookups = yes</B
-></P
-><P
->Example: <B
-CLASS="COMMAND"
->hostname lookups = no</B
-></P
-></DD
-><DT
-><A
 NAME="HOSTSALLOW"
 ></A
 >hosts allow (S)</DT
@@ -9225,7 +8489,7 @@ CLASS="FILENAME"
 ><P
 >Note that the localhost address 127.0.0.1 will always 
                be allowed access unless specifically denied by a <A
-HREF="index.html#HOSTSDENY"
+HREF="#HOSTSDENY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -9236,12 +8500,8 @@ CLASS="PARAMETER"
 ><P
 >You can also specify hosts by network/netmask pairs and 
                by netgroup names if your system supports netgroups. The 
-               <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->EXCEPT</I
-></SPAN
+               <EM
+>EXCEPT</EM
 > keyword can also be used to limit a 
                wildcard list. The following examples may provide some help:</P
 ><P
@@ -9292,13 +8552,9 @@ CLASS="COMMAND"
 > for a way of testing your host access to see if it does 
                what you expect.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+>Default: <EM
 >none (i.e., all hosts permitted access)
-               </I
-></SPAN
+               </EM
 ></P
 ><P
 >Example: <B
@@ -9320,12 +8576,8 @@ CLASS="PARAMETER"
 >hosts allow</I
 ></TT
 > 
-               - hosts listed here are <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->NOT</I
-></SPAN
+               - hosts listed here are <EM
+>NOT</EM
 > permitted access to 
                services unless the specific services have their own lists to override 
                this one. Where the lists conflict, the <TT
@@ -9336,13 +8588,9 @@ CLASS="PARAMETER"
 > 
                list takes precedence.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+>Default: <EM
 >none (i.e., no hosts specifically excluded)
-               </I
-></SPAN
+               </EM
 ></P
 ><P
 >Example: <B
@@ -9364,7 +8612,7 @@ NAME="HOSTSEQUIV"
                </P
 ><P
 >This is not be confused with <A
-HREF="index.html#HOSTSALLOW"
+HREF="#HOSTSALLOW"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -9380,12 +8628,8 @@ CLASS="PARAMETER"
 > may be useful for NT clients which will 
                not supply passwords to Samba.</P
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->NOTE :</I
-></SPAN
+><EM
+>NOTE :</EM
 > The use of <TT
 CLASS="PARAMETER"
 ><I
@@ -9402,21 +8646,13 @@ CLASS="PARAMETER"
 ></TT
 > option be only used if you really 
                know what you are doing, or perhaps on a home network where you trust 
-               your spouse and kids. And only if you <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->really</I
-></SPAN
+               your spouse and kids. And only if you <EM
+>really</EM
 > trust 
                them :-).</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->no host equivalences</I
-></SPAN
+>Default: <EM
+>no host equivalences</EM
 ></P
 ><P
 >Example: <B
@@ -9454,12 +8690,8 @@ CLASS="PARAMETER"
 >.
                </P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->no file included</I
-></SPAN
+>Default: <EM
+>no file included</EM
 ></P
 ><P
 >Example: <B
@@ -9499,7 +8731,7 @@ NAME="INHERITPERMISSIONS"
 ><P
 >The permissions on new files and directories 
                are normally governed by <A
-HREF="index.html#CREATEMASK"
+HREF="#CREATEMASK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -9507,7 +8739,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 >, <A
-HREF="index.html#DIRECTORYMASK"
+HREF="#DIRECTORYMASK"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -9515,7 +8747,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 >, <A
-HREF="index.html#FORCECREATEMODE"
+HREF="#FORCECREATEMODE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -9524,7 +8756,7 @@ CLASS="PARAMETER"
 >
                </A
 > and <A
-HREF="index.html#FORCEDIRECTORYMODE"
+HREF="#FORCEDIRECTORYMODE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -9541,7 +8773,7 @@ CLASS="PARAMETER"
 >New files inherit their read/write bits from the parent 
                directory.  Their execute bits continue to be determined by
                <A
-HREF="index.html#MAPARCHIVE"
+HREF="#MAPARCHIVE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -9550,7 +8782,7 @@ CLASS="PARAMETER"
 >
                </A
 >, <A
-HREF="index.html#MAPHIDDEN"
+HREF="#MAPHIDDEN"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -9559,7 +8791,7 @@ CLASS="PARAMETER"
 >
                </A
 > and <A
-HREF="index.html#MAPSYSTEM"
+HREF="#MAPSYSTEM"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -9569,12 +8801,8 @@ CLASS="PARAMETER"
                </A
 > as usual.</P
 ><P
->Note that the setuid bit is <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->never</I
-></SPAN
+>Note that the setuid bit is <EM
+>never</EM
 > set via 
                inheritance (the code explicitly prohibits this).</P
 ><P
@@ -9583,7 +8811,7 @@ CLASS="EMPHASIS"
                share to be used flexibly by each user.</P
 ><P
 >See also <A
-HREF="index.html#CREATEMASK"
+HREF="#CREATEMASK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -9592,7 +8820,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 >, <A
-HREF="index.html#DIRECTORYMASK"
+HREF="#DIRECTORYMASK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -9600,7 +8828,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 >, <A
-HREF="index.html#FORCECREATEMODE"
+HREF="#FORCECREATEMODE"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -9608,7 +8836,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 > and <A
-HREF="index.html#FORCEDIRECTORYMODE"
+HREF="#FORCEDIRECTORYMODE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -9684,7 +8912,7 @@ CLASS="COMMAND"
                The netmasks of the latter two interfaces would be set to 255.255.255.0.</P
 ><P
 >See also <A
-HREF="index.html#BINDINTERFACESONLY"
+HREF="#BINDINTERFACESONLY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -9694,13 +8922,9 @@ CLASS="PARAMETER"
 ></A
 >.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+>Default: <EM
 >all active interfaces except 127.0.0.1 
-               that are broadcast capable</I
-></SPAN
+               that are broadcast capable</EM
 ></P
 ></DD
 ><DT
@@ -9711,12 +8935,8 @@ NAME="INVALIDUSERS"
 ><DD
 ><P
 >This is a list of users that should not be allowed 
-               to login to this service. This is really a <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->paranoid</I
-></SPAN
+               to login to this service. This is really a <EM
+>paranoid</EM
 > 
                check to absolutely ensure an improper setting does not breach 
                your security.</P
@@ -9733,7 +8953,7 @@ CLASS="EMPHASIS"
                so the value <TT
 CLASS="PARAMETER"
 ><I
->+&amp;group</I
+>+&#38;group</I
 ></TT
 > means check the 
                UNIX group database, followed by the NIS netgroup database, and 
@@ -9755,7 +8975,7 @@ CLASS="PARAMETER"
                This is useful in the [homes] section.</P
 ><P
 >See also <A
-HREF="index.html#VALIDUSERS"
+HREF="#VALIDUSERS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -9765,12 +8985,8 @@ CLASS="PARAMETER"
 ></A
 >.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->no invalid users</I
-></SPAN
+>Default: <EM
+>no invalid users</EM
 ></P
 ><P
 >Example: <B
@@ -9799,7 +9015,7 @@ CLASS="PARAMETER"
 ><P
 >Keepalives should, in general, not be needed if the socket 
                being used has the SO_KEEPALIVE attribute set on it (see <A
-HREF="index.html#SOCKETOPTIONS"
+HREF="#SOCKETOPTIONS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -9827,7 +9043,7 @@ NAME="KERNELOPLOCKS"
 ><DD
 ><P
 >For UNIXes that support kernel based <A
-HREF="index.html#OPLOCKS"
+HREF="#OPLOCKS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -9854,12 +9070,8 @@ CLASS="COMMAND"
 >
                </A
 > has oplocked. This allows complete data consistency between 
-               SMB/CIFS, NFS and local file access (and is a <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->very</I
-></SPAN
+               SMB/CIFS, NFS and local file access (and is a <EM
+>very</EM
 > 
                cool feature :-).</P
 ><P
@@ -9871,7 +9083,7 @@ CLASS="CONSTANT"
                You should never need to touch this parameter.</P
 ><P
 >See also the <A
-HREF="index.html#OPLOCKS"
+HREF="#OPLOCKS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -9880,7 +9092,7 @@ CLASS="PARAMETER"
 >
                </A
 > and <A
-HREF="index.html#LEVEL2OPLOCKS"
+HREF="#LEVEL2OPLOCKS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -9978,12 +9190,8 @@ CLASS="COMMAND"
                page for more information on how to accmplish this.
                </P
 ><P
->Default : <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->none</I
-></SPAN
+>Default : <EM
+>none</EM
 ></P
 ></DD
 ><DT
@@ -10007,7 +9215,7 @@ CLASS="CONSTANT"
 ><P
 >Default : <B
 CLASS="COMMAND"
->ldap filter = (&amp;(uid=%u)(objectclass=sambaAccount))</B
+>ldap filter = (&#38;(uid=%u)(objectclass=sambaAccount))</B
 ></P
 ></DD
 ><DT
@@ -10019,12 +9227,8 @@ NAME="LDAPSSL"
 ><P
 >This option is used to define whether or not Samba should
                use SSL when connecting to the ldap server
-               This is <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->NOT</I
-></SPAN
+               This is <EM
+>NOT</EM
 > related to
                Samba's previous SSL support which was enabled by specifying the 
                <B
@@ -10076,12 +9280,8 @@ NAME="LDAPSUFFIX"
 >ldap suffix (G)</DT
 ><DD
 ><P
->Default : <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->none</I
-></SPAN
+>Default : <EM
+>none</EM
 ></P
 ></DD
 ><DT
@@ -10094,12 +9294,8 @@ NAME="LDAPUSERSUFFIX"
 >It specifies where users are added to the tree.
                </P
 ><P
->Default : <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->none</I
-></SPAN
+>Default : <EM
+>none</EM
 ></P
 ></DD
 ><DT
@@ -10113,12 +9309,8 @@ NAME="LDAPMACHINESUFFIX"
                 added to the ldap tree.
                </P
 ><P
->Default : <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->none</I
-></SPAN
+>Default : <EM
+>none</EM
 ></P
 ></DD
 ><DT
@@ -10152,7 +9344,7 @@ NAME="LEVEL2OPLOCKS"
 >For more discussions on level2 oplocks see the CIFS spec.</P
 ><P
 >Currently, if <A
-HREF="index.html#KERNELOPLOCKS"
+HREF="#KERNELOPLOCKS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -10166,7 +9358,7 @@ CLASS="CONSTANT"
 >yes</TT
 >). 
                Note also, the <A
-HREF="index.html#OPLOCKS"
+HREF="#OPLOCKS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -10181,7 +9373,7 @@ CLASS="CONSTANT"
                this parameter to have any effect.</P
 ><P
 >See also the <A
-HREF="index.html#OPLOCKS"
+HREF="#OPLOCKS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -10190,7 +9382,7 @@ CLASS="PARAMETER"
 >
                </A
 > and <A
-HREF="index.html#OPLOCKS"
+HREF="#OPLOCKS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -10265,7 +9457,7 @@ CLASS="PARAMETER"
 >.</P
 ><P
 >See also <A
-HREF="index.html#LMINTERVAL"
+HREF="#LMINTERVAL"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -10294,7 +9486,7 @@ NAME="LMINTERVAL"
 ><P
 >If Samba is set to produce Lanman announce 
                broadcasts needed by OS/2 clients (see the <A
-HREF="index.html#LMANNOUNCE"
+HREF="#LMANNOUNCE"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -10313,7 +9505,7 @@ CLASS="PARAMETER"
                parameter.</P
 ><P
 >See also <A
-HREF="index.html#LMANNOUNCE"
+HREF="#LMANNOUNCE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -10343,7 +9535,7 @@ NAME="LOADPRINTERS"
 >A boolean variable that controls whether all 
                printers in the printcap will be loaded for browsing by default. 
                See the <A
-HREF="index.html#AEN79"
+HREF="#AEN79"
 >printers</A
 > section for 
                more details.</P
@@ -10383,22 +9575,14 @@ CLASS="CONSTANT"
 CLASS="CONSTANT"
 >true</TT
 > doesn't
-               mean that Samba will <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->become</I
-></SPAN
+               mean that Samba will <EM
+>become</EM
 > the local master 
                browser on a subnet, just that <B
 CLASS="COMMAND"
 >nmbd</B
-> will <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->              participate</I
-></SPAN
+> will <EM
+>              participate</EM
 > in elections for local master browser.</P
 ><P
 >Setting this value to <TT
@@ -10408,12 +9592,8 @@ CLASS="CONSTANT"
 CLASS="COMMAND"
 >nmbd</B
 >
-               <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->never</I
-></SPAN
+               <EM
+>never</EM
 > to become a local master browser.</P
 ><P
 >Default: <B
@@ -10429,7 +9609,7 @@ NAME="LOCKDIR"
 ><DD
 ><P
 >Synonym for <A
-HREF="index.html#LOCKDIRECTORY"
+HREF="#LOCKDIRECTORY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -10448,7 +9628,7 @@ NAME="LOCKDIRECTORY"
 >This option specifies the directory where lock 
                files will be placed.  The lock files are used to implement the 
                <A
-HREF="index.html#MAXCONNECTIONS"
+HREF="#MAXCONNECTIONS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -10502,7 +9682,7 @@ NAME="LOCKSPINTIME"
 >The time in microseconds that smbd should 
                pause before attempting to gain a failed lock.  See
                <A
-HREF="index.html#LOCKSPINCOUNT"
+HREF="#LOCKSPINCOUNT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -10543,19 +9723,11 @@ CLASS="COMMAND"
 >, real locking will be performed 
                by the server.</P
 ><P
->This option <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->may</I
-></SPAN
+>This option <EM
+>may</EM
 > be useful for read-only 
-               filesystems which <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->may</I
-></SPAN
+               filesystems which <EM
+>may</EM
 > not need locking (such as 
                CDROM drives), although setting this parameter of <TT
 CLASS="CONSTANT"
@@ -10626,7 +9798,7 @@ NAME="LOGONDRIVE"
 ><P
 >This parameter specifies the local path to 
                which the home directory will be connected (see <A
-HREF="index.html#LOGONHOME"
+HREF="#LOGONHOME"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -10695,7 +9867,7 @@ CLASS="COMMAND"
                but use the whole string when dealing with profiles.</P
 ><P
 >Note that in prior versions of Samba, the <A
-HREF="index.html#LOGONPATH"
+HREF="#LOGONPATH"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -10742,7 +9914,7 @@ NAME="LOGONPATH"
                stored.  Contrary to previous versions of these manual pages, it has 
                nothing to do with Win 9X roaming profiles.  To find out how to 
                handle roaming profiles for Win 9X system, see the <A
-HREF="index.html#LOGONHOME"
+HREF="#LOGONHOME"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -10780,12 +9952,8 @@ CLASS="FILENAME"
 >Thereafter, the directories and any of the contents can, 
                if required, be made read-only.  It is not advisable that the 
                NTuser.dat file be made read-only - rename it to NTuser.man to 
-               achieve the desired effect (a <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->MAN</I
-></SPAN
+               achieve the desired effect (a <EM
+>MAN</EM
 >datory 
                profile). </P
 ><P
@@ -10826,7 +9994,7 @@ NAME="LOGONSCRIPT"
 ><P
 >The script must be a relative path to the [netlogon] 
                service.  If the [netlogon] service specifies a <A
-HREF="index.html#PATH"
+HREF="#PATH"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -10875,12 +10043,8 @@ CLASS="COMMAND"
 >This option is only useful if Samba is set up as a logon 
                server.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->no logon script defined</I
-></SPAN
+>Default: <EM
+>no logon script defined</EM
 ></P
 ><P
 >Example: <B
@@ -10937,7 +10101,7 @@ CLASS="PARAMETER"
                in the lppause command as the PATH may not be available to the server.</P
 ><P
 >See also the <A
-HREF="index.html#PRINTING"
+HREF="#PRINTING"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -11031,7 +10195,7 @@ CLASS="COMMAND"
 >A value of 0 will disable caching completely.</P
 ><P
 >See also the <A
-HREF="index.html#PRINTING"
+HREF="#PRINTING"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -11115,7 +10279,7 @@ CLASS="PARAMETER"
                print queue listing.</P
 ><P
 >See also the <A
-HREF="index.html#PRINTING"
+HREF="#PRINTING"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -11125,17 +10289,13 @@ CLASS="PARAMETER"
 ></A
 > parameter.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+>Default: <EM
 >depends on the setting of <TT
 CLASS="PARAMETER"
 ><I
 >              printing</I
 ></TT
-></I
-></SPAN
+></EM
 ></P
 ><P
 >Example: <B
@@ -11157,7 +10317,7 @@ NAME="LPRESUMECOMMAND"
 >This command should be a program or script which takes 
                a printer name and job number to resume the print job. See 
                also the <A
-HREF="index.html#LPPAUSECOMMAND"
+HREF="#LPPAUSECOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -11191,7 +10351,7 @@ CLASS="PARAMETER"
                be available to the server.</P
 ><P
 >See also the <A
-HREF="index.html#PRINTING"
+HREF="#PRINTING"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -11277,7 +10437,7 @@ CLASS="PARAMETER"
                available to the server.</P
 ><P
 >See also the <A
-HREF="index.html#PRINTING"
+HREF="#PRINTING"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -11287,18 +10447,14 @@ CLASS="PARAMETER"
 ></A
 > parameter.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+>Default: <EM
 >depends on the setting of <TT
 CLASS="PARAMETER"
 ><I
 >printing
                </I
 ></TT
-></I
-></SPAN
+></EM
 ></P
 ><P
 >Example 1: <B
@@ -11322,7 +10478,7 @@ NAME="MACHINEPASSWORDTIMEOUT"
 ><P
 >If a Samba server is a member of a Windows 
                NT Domain (see the <A
-HREF="index.html#SECURITYEQUALSDOMAIN"
+HREF="#SECURITYEQUALSDOMAIN"
 >security = domain</A
 >) 
                parameter) then periodically a running <A
@@ -11347,7 +10503,7 @@ CLASS="COMMAND"
                </B
 ></A
 >, and the <A
-HREF="index.html#SECURITYEQUALSDOMAIN"
+HREF="#SECURITYEQUALSDOMAIN"
 >              security = domain</A
 >) parameter.</P
 ><P
@@ -11366,7 +10522,7 @@ NAME="MAGICOUTPUT"
 >This parameter specifies the name of a file 
                which will contain output created by a magic script (see the 
                <A
-HREF="index.html#MAGICSCRIPT"
+HREF="#MAGICSCRIPT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -11387,7 +10543,7 @@ CLASS="PARAMETER"
 ><P
 >Default: <B
 CLASS="COMMAND"
->magic output = &lt;magic script name&gt;.out
+>magic output = &#60;magic script name&#62;.out
                </B
 ></P
 ><P
@@ -11414,7 +10570,7 @@ NAME="MAGICSCRIPT"
 ><P
 >If the script generates output, output will be sent to 
                the file specified by the <A
-HREF="index.html#MAGICOUTPUT"
+HREF="#MAGICOUTPUT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -11426,36 +10582,20 @@ CLASS="PARAMETER"
 >Note that some shells are unable to interpret scripts 
                containing CR/LF instead of CR as 
                the end-of-line marker. Magic scripts must be executable 
-               <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->as is</I
-></SPAN
+               <EM
+>as is</EM
 > on the host, which for some hosts and 
                some shells will require filtering at the DOS end.</P
 ><P
->Magic scripts are <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->EXPERIMENTAL</I
-></SPAN
+>Magic scripts are <EM
+>EXPERIMENTAL</EM
 > and 
-               should <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->NOT</I
-></SPAN
+               should <EM
+>NOT</EM
 > be relied upon.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->None. Magic scripts disabled.</I
-></SPAN
+>Default: <EM
+>None. Magic scripts disabled.</EM
 ></P
 ><P
 >Example: <B
@@ -11471,7 +10611,7 @@ NAME="MANGLECASE"
 ><DD
 ><P
 >See the section on <A
-HREF="index.html#AEN203"
+HREF="#AEN203"
 >              NAME MANGLING</A
 ></P
 ><P
@@ -11522,12 +10662,8 @@ CLASS="FILENAME"
 > off the ends of filenames on some CDROMs (only visible 
                under some UNIXes). To do this use a map of (*;1 *;).</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->no mangled map</I
-></SPAN
+>Default: <EM
+>no mangled map</EM
 ></P
 ><P
 >Example: <B
@@ -11547,7 +10683,7 @@ NAME="MANGLEDNAMES"
                or whether non-DOS names should simply be ignored.</P
 ><P
 >See the section on <A
-HREF="index.html#AEN203"
+HREF="#AEN203"
 >              NAME MANGLING</A
 > for details on how to control the mangling process.</P
 ><P
@@ -11573,7 +10709,7 @@ HREF="index.html#AEN203"
 ><P
 >Note that the character to use may be specified using 
                        the <A
-HREF="index.html#MANGLINGCHAR"
+HREF="#MANGLINGCHAR"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -11622,33 +10758,6 @@ CLASS="COMMAND"
 ></DD
 ><DT
 ><A
-NAME="MANGLINGMETHOD"
-></A
->mangling method (G)</DT
-><DD
-><P
-> controls the algorithm used for the generating
-               the mangled names. Can take two different values, "hash" and
-               "hash2". "hash" is  the default and is the algorithm that has been
-               used in Samba for many years. "hash2" is a newer and considered
-               a better algorithm (generates less collisions) in the names.
-               However, many Win32 applications store the mangled names and so
-               changing to the new algorithm must not be done
-               lightly as these applications may break unless reinstalled.
-               New installations of Samba may set the default to hash2.</P
-><P
->Default: <B
-CLASS="COMMAND"
->mangling method = hash</B
-></P
-><P
->Example: <B
-CLASS="COMMAND"
->mangling method = hash2</B
-></P
-></DD
-><DT
-><A
 NAME="MANGLEDSTACK"
 ></A
 >mangled stack (G)</DT
@@ -11692,14 +10801,10 @@ NAME="MANGLINGCHAR"
 ><DD
 ><P
 >This controls what character is used as 
-               the <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->magic</I
-></SPAN
+               the <EM
+>magic</EM
 > character in <A
-HREF="index.html#AEN203"
+HREF="#AEN203"
 >name mangling</A
 >. The default is a '~'
                but this may interfere with some software. Use this option to set 
@@ -11737,7 +10842,7 @@ CLASS="PARAMETER"
 >
                parameter to be set such that owner execute bit is not masked out 
                (i.e. it must include 100). See the parameter <A
-HREF="index.html#CREATEMASK"
+HREF="#CREATEMASK"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -11769,7 +10874,7 @@ CLASS="PARAMETER"
 > 
                to be set such that the world execute bit is not masked out (i.e. 
                it must include 001). See the parameter <A
-HREF="index.html#CREATEMASK"
+HREF="#CREATEMASK"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -11801,7 +10906,7 @@ CLASS="PARAMETER"
 > 
                to be set such that the group execute bit is not masked out (i.e. 
                it must include 010). See the parameter <A
-HREF="index.html#CREATEMASK"
+HREF="#CREATEMASK"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -11823,7 +10928,7 @@ NAME="MAPTOGUEST"
 ><DD
 ><P
 >This parameter is only useful in <A
-HREF="index.html#SECURITY"
+HREF="#SECURITY"
 >              security</A
 > modes other than <TT
 CLASS="PARAMETER"
@@ -11873,7 +10978,7 @@ CLASS="CONSTANT"
                        logins with an invalid password are rejected, unless the username 
                        does not exist, in which case it is treated as a guest login and 
                        mapped into the <A
-HREF="index.html#GUESTACCOUNT"
+HREF="#GUESTACCOUNT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -11890,7 +10995,7 @@ CLASS="CONSTANT"
 > - Means user logins 
                        with an invalid password are treated as a guest login and mapped 
                        into the <A
-HREF="index.html#GUESTACCOUNT"
+HREF="#GUESTACCOUNT"
 >guest account</A
 >. Note that 
                        this can cause problems as it means that any user incorrectly typing 
@@ -11898,12 +11003,8 @@ HREF="index.html#GUESTACCOUNT"
                        will not know the reason they cannot access files they think
                        they should - there will have been no message given to them
                        that they got their password wrong. Helpdesk services will
-                       <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->hate</I
-></SPAN
+                       <EM
+>hate</EM
 > you if you set the <TT
 CLASS="PARAMETER"
 ><I
@@ -11922,12 +11023,8 @@ CLASS="PARAMETER"
 ></TT
 > modes other than 
                share. This is because in these modes the name of the resource being
-               requested is <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->not</I
-></SPAN
+               requested is <EM
+>not</EM
 > sent to the server until after 
                the server has successfully authenticated the client so the server 
                cannot make authentication decisions at the correct time (connection 
@@ -11969,7 +11066,7 @@ CLASS="PARAMETER"
 ><P
 >Record lock files are used to implement this feature. The 
                lock files will be stored in the directory specified by the <A
-HREF="index.html#LOCKDIRECTORY"
+HREF="#LOCKDIRECTORY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -12121,7 +11218,7 @@ CLASS="COMMAND"
 ></A
 > will remote "Out of Space" to the client.
                See all <A
-HREF="index.html#TOTALPRINTJOBS"
+HREF="#TOTALPRINTJOBS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -12177,12 +11274,8 @@ CLASS="CONSTANT"
 ><TT
 CLASS="CONSTANT"
 >LANMAN1</TT
->: First <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->                      modern</I
-></SPAN
+>: First <EM
+>                      modern</EM
 > version of the protocol. Long filename
                        support.</P
 ></LI
@@ -12209,7 +11302,7 @@ CLASS="CONSTANT"
                the appropriate protocol.</P
 ><P
 >See also <A
-HREF="index.html#MINPROTOCOL"
+HREF="#MINPROTOCOL"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -12305,7 +11398,7 @@ TARGET="_top"
 >nmbd(8)
                </A
 > when acting as a WINS server (<A
-HREF="index.html#WINSSUPPORT"
+HREF="#WINSSUPPORT"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -12321,7 +11414,7 @@ CLASS="COMMAND"
                parameter.  The default is 6 days (518400 seconds).</P
 ><P
 >See also the <A
-HREF="index.html#MINWINSTTL"
+HREF="#MINWINSTTL"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -12385,13 +11478,9 @@ CLASS="COMMAND"
 CLASS="COMMAND"
 >xedit</B
 >, then 
-               removes it afterwards. <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+               removes it afterwards. <EM
 >NOTE THAT IT IS VERY IMPORTANT 
-               THAT THIS COMMAND RETURN IMMEDIATELY</I
-></SPAN
+               THAT THIS COMMAND RETURN IMMEDIATELY</EM
 >. That's why I 
                have the '&#38;' on the end. If it doesn't return immediately then 
                your PCs may freeze when sending messages (they should recover 
@@ -12457,7 +11546,7 @@ CLASS="PARAMETER"
 ><B
 CLASS="COMMAND"
 >message command = /bin/mail -s 'message from %f on 
-               %m' root &lt; %s; rm %s</B
+               %m' root &#60; %s; rm %s</B
 ></P
 ><P
 >If you don't have a message command then the message 
@@ -12473,12 +11562,8 @@ CLASS="COMMAND"
 >message command = rm %s</B
 ></P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->no message command</I
-></SPAN
+>Default: <EM
+>no message command</EM
 ></P
 ><P
 >Example: <B
@@ -12495,7 +11580,7 @@ NAME="MINPASSWDLENGTH"
 ><DD
 ><P
 >Synonym for <A
-HREF="index.html#MINPASSWORDLENGTH"
+HREF="#MINPASSWORDLENGTH"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -12519,7 +11604,7 @@ CLASS="COMMAND"
                UNIX password changing.</P
 ><P
 >See also <A
-HREF="index.html#UNIXPASSWORDSYNC"
+HREF="#UNIXPASSWORDSYNC"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -12528,7 +11613,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 >, <A
-HREF="index.html#PASSWDPROGRAM"
+HREF="#PASSWDPROGRAM"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -12536,7 +11621,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 > and <A
-HREF="index.html#PASSWDCHATDEBUG"
+HREF="#PASSWDCHATDEBUG"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -12564,7 +11649,7 @@ NAME="MINPRINTSPACE"
                means a user can always spool a print job.</P
 ><P
 >See also the <A
-HREF="index.html#PRINTING"
+HREF="#PRINTING"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -12594,7 +11679,7 @@ NAME="MINPROTOCOL"
 >The value of the parameter (a string) is the 
                lowest SMB protocol dialect than Samba will support.  Please refer
                to the <A
-HREF="index.html#MAXPROTOCOL"
+HREF="#MAXPROTOCOL"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -12612,7 +11697,7 @@ CLASS="FILENAME"
 ><P
 >If you are viewing this parameter as a security measure, you should
                also refer to the <A
-HREF="index.html#LANMANAUTH"
+HREF="#LANMANAUTH"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -12647,7 +11732,7 @@ TARGET="_top"
 >nmbd(8)</A
 >
                when acting as a WINS server (<A
-HREF="index.html#WINSSUPPORT"
+HREF="#WINSSUPPORT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -12698,7 +11783,7 @@ TARGET="_top"
 >.</P
 ><P
 >See also <A
-HREF="index.html#HOSTMSDFS"
+HREF="#HOSTMSDFS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -12715,28 +11800,6 @@ CLASS="COMMAND"
 ></DD
 ><DT
 ><A
-NAME="NAMECACHETIMEOUT"
-></A
->name cache timeout (G)</DT
-><DD
-><P
->Specifies the number of seconds it takes before 
-               entries in samba's hostname resolve cache time out. If 
-               the timeout is set to 0. the caching is disabled.
-               </P
-><P
->Default: <B
-CLASS="COMMAND"
->name cache timeout = 660</B
-></P
-><P
->Example: <B
-CLASS="COMMAND"
->name cache timeout = 0</B
-></P
-></DD
-><DT
-><A
 NAME="NAMERESOLVEORDER"
 ></A
 >name resolve order (G)</DT
@@ -12793,7 +11856,7 @@ CLASS="CONSTANT"
 >wins</TT
 > : Query a name with 
                        the IP address listed in the <A
-HREF="index.html#WINSSERVER"
+HREF="#WINSSERVER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -12810,7 +11873,7 @@ CLASS="CONSTANT"
 >bcast</TT
 > : Do a broadcast on 
                        each of the known local interfaces listed in the <A
-HREF="index.html#INTERFACES"
+HREF="#INTERFACES"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -12860,7 +11923,7 @@ TARGET="_top"
                with these capabilities.</P
 ><P
 >See also <A
-HREF="index.html#NETBIOSNAME"
+HREF="#NETBIOSNAME"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -12870,12 +11933,8 @@ CLASS="PARAMETER"
 ></A
 >.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->empty string (no additional names)</I
-></SPAN
+>Default: <EM
+>empty string (no additional names)</EM
 ></P
 ><P
 >Example: <B
@@ -12898,7 +11957,7 @@ NAME="NETBIOSNAME"
                advertised under.</P
 ><P
 >See also <A
-HREF="index.html#NETBIOSALIASES"
+HREF="#NETBIOSALIASES"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -12908,12 +11967,8 @@ CLASS="PARAMETER"
 ></A
 >.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->machine DNS name</I
-></SPAN
+>Default: <EM
+>machine DNS name</EM
 ></P
 ><P
 >Example: <B
@@ -12957,7 +12012,7 @@ NAME="NISHOMEDIR"
                it will be mounted on the Samba client directly from the directory 
                server. When Samba is returning the home share to the client, it 
                will consult the NIS map specified in <A
-HREF="index.html#HOMEDIRMAP"
+HREF="#HOMEDIRMAP"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -12998,7 +12053,7 @@ NAME="NONUNIXACCOUNTRANGE"
 ><P
 >Default: <B
 CLASS="COMMAND"
->non unix account range = &lt;empty string&gt;
+>non unix account range = &#60;empty string&#62;
                </B
 ></P
 ><P
@@ -13116,7 +12171,7 @@ NAME="OBEYPAMRESTRICTIONS"
                default behavior is to use PAM for clear text authentication only
                and to ignore any account or session management.  Note that Samba
                always ignores PAM for authentication in the case of <A
-HREF="index.html#ENCRYPTPASSWORDS"
+HREF="#ENCRYPTPASSWORDS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -13157,7 +12212,7 @@ CLASS="PARAMETER"
 ></TT
 > list and is only really
                useful in <A
-HREF="index.html#SECURITYEQUALSSHARE"
+HREF="#SECURITYEQUALSSHARE"
 >shave level</A
 >
                security.</P
@@ -13178,7 +12233,7 @@ CLASS="PARAMETER"
                name of the user.</P
 ><P
 >See also the <A
-HREF="index.html#USER"
+HREF="#USER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -13201,7 +12256,7 @@ NAME="ONLYGUEST"
 ><DD
 ><P
 >A synonym for <A
-HREF="index.html#GUESTONLY"
+HREF="#GUESTONLY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -13225,13 +12280,9 @@ NAME="OPLOCKBREAKWAITTIME"
                is the amount of time Samba will wait before sending an oplock break 
                request to such (broken) clients.</P
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+><EM
 >DO NOT CHANGE THIS PARAMETER UNLESS YOU HAVE READ 
-               AND UNDERSTOOD THE SAMBA OPLOCK CODE</I
-></SPAN
+               AND UNDERSTOOD THE SAMBA OPLOCK CODE</EM
 >.</P
 ><P
 >Default: <B
@@ -13246,12 +12297,8 @@ NAME="OPLOCKCONTENTIONLIMIT"
 >oplock contention limit (S)</DT
 ><DD
 ><P
->This is a <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->very</I
-></SPAN
+>This is a <EM
+>very</EM
 > advanced 
                <A
 HREF="smbd.8.html"
@@ -13274,13 +12321,9 @@ CLASS="COMMAND"
 > to behave in a similar 
                way to Windows NT.</P
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+><EM
 >DO NOT CHANGE THIS PARAMETER UNLESS YOU HAVE READ 
-               AND UNDERSTOOD THE SAMBA OPLOCK CODE</I
-></SPAN
+               AND UNDERSTOOD THE SAMBA OPLOCK CODE</EM
 >.</P
 ><P
 >Default: <B
@@ -13316,7 +12359,7 @@ CLASS="FILENAME"
 ><P
 >Oplocks may be selectively turned off on certain files with a 
                share. See the <A
-HREF="index.html#VETOOPLOCKFILES"
+HREF="#VETOOPLOCKFILES"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -13335,7 +12378,7 @@ CLASS="PARAMETER"
 > parameter for details.</P
 ><P
 >See also the <A
-HREF="index.html#KERNELOPLOCKS"
+HREF="#KERNELOPLOCKS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -13344,7 +12387,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 > and <A
-HREF="index.html#LEVEL2OPLOCKS"
+HREF="#LEVEL2OPLOCKS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -13360,33 +12403,6 @@ CLASS="COMMAND"
 ></DD
 ><DT
 ><A
-NAME="NTLMAUTH"
-></A
->ntlm auth (G)</DT
-><DD
-><P
->This parameter determines whether or not <A
-HREF="smbd.8.html"
-TARGET="_top"
->smbd</A
-> will
-               attempt to authenticate users using the NTLM password hash.
-               If disabled, only the lanman password hashes will be used. 
-               </P
-><P
->Please note that at least this option or <B
-CLASS="COMMAND"
->lanman auth</B
-> should be enabled in order to be able to log in.
-               </P
-><P
->Default : <B
-CLASS="COMMAND"
->ntlm auth = yes</B
-></P
-></DD
-><DT
-><A
 NAME="OSLEVEL"
 ></A
 >os level (G)</DT
@@ -13406,12 +12422,8 @@ CLASS="PARAMETER"
 ></TT
 > in the local broadcast area.</P
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Note :</I
-></SPAN
+><EM
+>Note :</EM
 >By default, Samba will win 
                a local master browsing election over all Microsoft operating 
                systems except a Windows NT 4.0/2000 Domain Controller.  This 
@@ -13447,8 +12459,8 @@ NAME="OS2DRIVERMAP"
                path to a file containing a mapping of Windows NT printer driver
                names to OS/2 printer driver names.  The format is:</P
 ><P
->&lt;nt driver name&gt; = &lt;os2 driver 
-               name&gt;.&lt;device name&gt;</P
+>&#60;nt driver name&#62; = &#60;os2 driver 
+               name&#62;.&#60;device name&#62;</P
 ><P
 >For example, a valid entry using the HP LaserJet 5
                printer driver would appear as <B
@@ -13473,7 +12485,7 @@ TARGET="_top"
 ><P
 >Default: <B
 CLASS="COMMAND"
->os2 driver map = &lt;empty string&gt;
+>os2 driver map = &#60;empty string&#62;
                </B
 ></P
 ></DD
@@ -13489,7 +12501,7 @@ NAME="PAMPASSWORDCHANGE"
                flag for Samba.  If enabled, then PAM will be used for password
                changes when requested by an SMB client instead of the program listed in 
                 <A
-HREF="index.html#PASSWDPROGRAM"
+HREF="#PASSWDPROGRAM"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -13499,7 +12511,7 @@ CLASS="PARAMETER"
 >. 
                 It should be possible to enable this without changing your 
                 <A
-HREF="index.html#PASSWDCHAT"
+HREF="#PASSWDCHAT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -13537,7 +12549,7 @@ TARGET="_top"
 ><P
 >Default: <B
 CLASS="COMMAND"
->panic action = &lt;empty string&gt;</B
+>panic action = &#60;empty string&#62;</B
 ></P
 ><P
 >Example: <B
@@ -13547,24 +12559,6 @@ CLASS="COMMAND"
 ></DD
 ><DT
 ><A
-NAME="PARANOIDSERVERSECURITY"
-></A
->paranoid server security (G)</DT
-><DD
-><P
->Some version of NT 4.x allow non-guest 
-               users with a bad passowrd. When this option is enabled, samba will not 
-               use a broken NT 4.x server as password server, but instead complain
-               to the logs and exit.
-               </P
-><P
->Default: <B
-CLASS="COMMAND"
->paranoid server security = yes</B
-></P
-></DD
-><DT
-><A
 NAME="PASSDBBACKEND"
 ></A
 >passdb backend (G)</DT
@@ -13577,7 +12571,7 @@ NAME="PASSDBBACKEND"
                 (eg --with-tdbsam) at configure time.
                </P
 ><P
->This parameter is in two parts, the backend's name, and a 'location'
+>This paramater is in two parts, the backend's name, and a 'location'
                 string that has meaning only to that particular backed.  These are separated
                 by a : character.</P
 ><P
@@ -13603,7 +12597,7 @@ CLASS="COMMAND"
                         Takes a path to the smbpasswd file as an optional argument.</P
 ><P
 >See also <A
-HREF="index.html#NONUNIXACCOUNTRANGE"
+HREF="#NONUNIXACCOUNTRANGE"
 >                        <TT
 CLASS="PARAMETER"
 ><I
@@ -13620,7 +12614,7 @@ CLASS="COMMAND"
 > - The TDB based password storage
                         backend.  Takes a path to the TDB as an optional argument (defaults to passdb.tdb 
                         in the <A
-HREF="index.html#PRIVATEDIR"
+HREF="#PRIVATEDIR"
 >                        <TT
 CLASS="PARAMETER"
 ><I
@@ -13637,7 +12631,7 @@ CLASS="COMMAND"
 > - The TDB based password storage
                         backend, with non unix account support.  Takes a path to the TDB as an optional argument (defaults to passdb.tdb 
                         in the <A
-HREF="index.html#PRIVATEDIR"
+HREF="#PRIVATEDIR"
 >                        <TT
 CLASS="PARAMETER"
 ><I
@@ -13647,7 +12641,7 @@ CLASS="PARAMETER"
 > directory.</P
 ><P
 >See also <A
-HREF="index.html#NONUNIXACCOUNTRANGE"
+HREF="#NONUNIXACCOUNTRANGE"
 >                        <TT
 CLASS="PARAMETER"
 ><I
@@ -13681,7 +12675,7 @@ CLASS="COMMAND"
 >)</P
 ><P
 >See also <A
-HREF="index.html#NONUNIXACCOUNTRANGE"
+HREF="#NONUNIXACCOUNTRANGE"
 >                        <TT
 CLASS="PARAMETER"
 ><I
@@ -13694,13 +12688,6 @@ CLASS="PARAMETER"
 ><P
 ><B
 CLASS="COMMAND"
->nisplussam</B
-> - The NIS+ based passdb backend. Takes name NIS domain as an optional argument. Only works with sun NIS+ servers. </P
-></LI
-><LI
-><P
-><B
-CLASS="COMMAND"
 >plugin</B
 > - Allows Samba to load an 
                         arbitary passdb backend from the .so specified as a compulsary argument.
@@ -13758,12 +12745,8 @@ NAME="PASSWDCHAT"
 >passwd chat (G)</DT
 ><DD
 ><P
->This string controls the <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->"chat"</I
-></SPAN
+>This string controls the <EM
+>"chat"</EM
 > 
                conversation that takes places between <A
 HREF="smbd.8.html"
@@ -13777,7 +12760,7 @@ TARGET="_top"
 >              smbd(8)</A
 > uses to determine what to send to the 
                <A
-HREF="index.html#PASSWDPROGRAM"
+HREF="#PASSWDPROGRAM"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -13793,7 +12776,7 @@ CLASS="PARAMETER"
                etc).</P
 ><P
 >Note that this parameter only is only used if the <A
-HREF="index.html#UNIXPASSWORDSYNC"
+HREF="#UNIXPASSWORDSYNC"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -13805,18 +12788,14 @@ CLASS="PARAMETER"
 CLASS="CONSTANT"
 >yes</TT
 >. This 
-               sequence is then called <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->AS ROOT</I
-></SPAN
+               sequence is then called <EM
+>AS ROOT</EM
 > when the SMB password 
                in the smbpasswd file is being changed, without access to the old 
                password cleartext. This means that root must be able to reset the user's password
                without knowing the text of the previous password. In the presence of NIS/YP, 
                this means that the <A
-HREF="index.html#PASSWDPROGRAM"
+HREF="#PASSWDPROGRAM"
 >passwd program</A
 > must be 
                executed on the NIS master.
@@ -13852,7 +12831,7 @@ CLASS="CONSTANT"
                if the expect string is a full stop then no string is expected.</P
 ><P
 >If the <A
-HREF="index.html#PAMPASSWORDCHANGE"
+HREF="#PAMPASSWORDCHANGE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -13866,7 +12845,7 @@ CLASS="PARAMETER"
                </P
 ><P
 >See also <A
-HREF="index.html#UNIXPASSWORDSYNC"
+HREF="#UNIXPASSWORDSYNC"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -13875,7 +12854,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 >, <A
-HREF="index.html#PASSWDPROGRAM"
+HREF="#PASSWDPROGRAM"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -13883,7 +12862,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 > ,<A
-HREF="index.html#PASSWDCHATDEBUG"
+HREF="#PASSWDCHATDEBUG"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -13891,7 +12870,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 > and <A
-HREF="index.html#PAMPASSWORDCHANGE"
+HREF="#PAMPASSWORDCHANGE"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -13921,12 +12900,8 @@ NAME="PASSWDCHATDEBUG"
 ><DD
 ><P
 >This boolean specifies if the passwd chat script 
-               parameter is run in <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->debug</I
-></SPAN
+               parameter is run in <EM
+>debug</EM
 > mode. In this mode the 
                strings passed to and received from the passwd chat are printed 
                in the <A
@@ -13935,7 +12910,7 @@ TARGET="_top"
 >smbd(8)</A
 > log with a 
                <A
-HREF="index.html#DEBUGLEVEL"
+HREF="#DEBUGLEVEL"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -13962,7 +12937,7 @@ CLASS="PARAMETER"
 > and should 
                be turned off after this has been done. This option has no effect if the 
                 <A
-HREF="index.html#PAMPASSWORDCHANGE"
+HREF="#PAMPASSWORDCHANGE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -13973,7 +12948,7 @@ CLASS="PARAMETER"
                 paramter is set. This parameter is off by default.</P
 ><P
 >See also <A
-HREF="index.html#PASSWDCHAT"
+HREF="#PASSWDCHAT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -13982,7 +12957,7 @@ CLASS="PARAMETER"
 >
                </A
 >, <A
-HREF="index.html#PAMPASSWORDCHANGE"
+HREF="#PAMPASSWORDCHANGE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -13991,7 +12966,7 @@ CLASS="PARAMETER"
 >
                 </A
 >, <A
-HREF="index.html#PASSWDPROGRAM"
+HREF="#PASSWDPROGRAM"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -14023,24 +12998,16 @@ CLASS="PARAMETER"
                will be replaced with the user name. The user name is checked for 
                existence before calling the password changing program.</P
 ><P
->Also note that many passwd programs insist in <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+>Also note that many passwd programs insist in <EM
 >reasonable
-               </I
-></SPAN
+               </EM
 > passwords, such as a minimum length, or the inclusion 
                of mixed case chars and digits. This can pose a problem as some clients 
                (such as Windows for Workgroups) uppercase the password before sending 
                it.</P
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Note</I
-></SPAN
+><EM
+>Note</EM
 > that if the <TT
 CLASS="PARAMETER"
 ><I
@@ -14051,12 +13018,8 @@ CLASS="PARAMETER"
 CLASS="CONSTANT"
 >true
                </TT
-> then this program is called <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->AS ROOT</I
-></SPAN
+> then this program is called <EM
+>AS ROOT</EM
 > 
                before the SMB password in the <A
 HREF="smbpasswd.5.html"
@@ -14076,19 +13039,11 @@ CLASS="PARAMETER"
 >unix password sync</I
 ></TT
 > parameter 
-               is set this parameter <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->MUST USE ABSOLUTE PATHS</I
-></SPAN
+               is set this parameter <EM
+>MUST USE ABSOLUTE PATHS</EM
 > 
-               for <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->ALL</I
-></SPAN
+               for <EM
+>ALL</EM
 > programs called, and must be examined 
                for security implications. Note that by default <TT
 CLASS="PARAMETER"
@@ -14102,7 +13057,7 @@ CLASS="CONSTANT"
 >.</P
 ><P
 >See also <A
-HREF="index.html#UNIXPASSWORDSYNC"
+HREF="#UNIXPASSWORDSYNC"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -14212,7 +13167,7 @@ CLASS="FILENAME"
 ><P
 >The name of the password server is looked up using the 
                parameter <A
-HREF="index.html#NAMERESOLVEORDER"
+HREF="#NAMERESOLVEORDER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -14227,21 +13182,13 @@ CLASS="PARAMETER"
                the "LM1.2X002" or the "NT LM 0.12" protocol, and it must be in 
                user level security mode.</P
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->NOTE:</I
-></SPAN
+><EM
+>NOTE:</EM
 > Using a password server 
                means your UNIX box (running Samba) is only as secure as your 
-               password server. <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+               password server. <EM
 >DO NOT CHOOSE A PASSWORD SERVER THAT 
-               YOU DON'T COMPLETELY TRUST</I
-></SPAN
+               YOU DON'T COMPLETELY TRUST</EM
 >.</P
 ><P
 >Never point a Samba server at itself for password 
@@ -14298,7 +13245,7 @@ CLASS="PARAMETER"
                Primary or Backup Domain controllers to authenticate against by 
                doing a query for the name <TT
 CLASS="CONSTANT"
->WORKGROUP&lt;1C&gt;</TT
+>WORKGROUP&#60;1C&#62;</TT
 > 
                and then contacting each server returned in the list of IP 
                addresses from the name resolution source. </P
@@ -14358,7 +13305,7 @@ CLASS="COMMAND"
 ></UL
 ><P
 >See also the <A
-HREF="index.html#SECURITY"
+HREF="#SECURITY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -14370,7 +13317,7 @@ CLASS="PARAMETER"
 ><P
 >Default: <B
 CLASS="COMMAND"
->password server = &lt;empty string&gt;</B
+>password server = &#60;empty string&#62;</B
 >
                </P
 ><P
@@ -14421,7 +13368,7 @@ CLASS="PARAMETER"
                up pseudo home directories for users.</P
 ><P
 >Note that this path will be based on <A
-HREF="index.html#ROOTDIR"
+HREF="#ROOTDIR"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -14430,12 +13377,8 @@ CLASS="PARAMETER"
 ></A
 > if one was specified.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->none</I
-></SPAN
+>Default: <EM
+>none</EM
 ></P
 ><P
 >Example: <B
@@ -14512,7 +13455,7 @@ CLASS="COMMAND"
 ></P
 ><P
 >See also <A
-HREF="index.html#PREEXEC"
+HREF="#PREEXEC"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -14522,19 +13465,15 @@ CLASS="PARAMETER"
                </A
 >.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->none (no command executed)</I
-></SPAN
+>Default: <EM
+>none (no command executed)</EM
 >
                </P
 ><P
 >Example: <B
 CLASS="COMMAND"
 >postexec = echo \"%u disconnected from %S 
-               from %m (%I)\" &gt;&gt; /tmp/log</B
+               from %m (%I)\" &#62;&#62; /tmp/log</B
 ></P
 ></DD
 ><DT
@@ -14583,7 +13522,7 @@ CLASS="COMMAND"
 >Of course, this could get annoying after a while :-)</P
 ><P
 >See also <A
-HREF="index.html#PREEXECCLOSE"
+HREF="#PREEXECCLOSE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -14592,7 +13531,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 > and <A
-HREF="index.html#POSTEXEC"
+HREF="#POSTEXEC"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -14602,18 +13541,14 @@ CLASS="PARAMETER"
 ></A
 >.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->none (no command executed)</I
-></SPAN
+>Default: <EM
+>none (no command executed)</EM
 ></P
 ><P
 >Example: <B
 CLASS="COMMAND"
 >preexec = echo \"%u connected to %S from %m
-               (%I)\" &gt;&gt; /tmp/log</B
+               (%I)\" &#62;&#62; /tmp/log</B
 ></P
 ></DD
 ><DT
@@ -14625,7 +13560,7 @@ NAME="PREEXECCLOSE"
 ><P
 >This boolean option controls whether a non-zero 
                return code from <A
-HREF="index.html#PREEXEC"
+HREF="#PREEXEC"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -14666,7 +13601,7 @@ CLASS="COMMAND"
                used in conjunction with <B
 CLASS="COMMAND"
 ><A
-HREF="index.html#DOMAINMASTER"
+HREF="#DOMAINMASTER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -14687,7 +13622,7 @@ CLASS="COMMAND"
                capabilities.</P
 ><P
 >See also <A
-HREF="index.html#OSLEVEL"
+HREF="#OSLEVEL"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -14710,7 +13645,7 @@ NAME="PREFEREDMASTER"
 ><DD
 ><P
 >Synonym for <A
-HREF="index.html#PREFERREDMASTER"
+HREF="#PREFERREDMASTER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -14733,7 +13668,7 @@ NAME="PRELOAD"
 ><P
 >Note that if you just want all printers in your 
                printcap file loaded then the <A
-HREF="index.html#LOADPRINTERS"
+HREF="#LOADPRINTERS"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -14742,12 +13677,8 @@ CLASS="PARAMETER"
 ></A
 > option is easier.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->no preloaded services</I
-></SPAN
+>Default: <EM
+>no preloaded services</EM
 ></P
 ><P
 >Example: <B
@@ -14765,7 +13696,7 @@ NAME="PRESERVECASE"
 > This controls if new filenames are created
                with the case that the client passes, or if they are forced to 
                be the <A
-HREF="index.html#DEFAULTCASE"
+HREF="#DEFAULTCASE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -14781,7 +13712,7 @@ CLASS="COMMAND"
 ></P
 ><P
 >See the section on <A
-HREF="index.html#AEN203"
+HREF="#AEN203"
 >NAME 
                MANGLING</A
 > for a fuller discussion.</P
@@ -14823,12 +13754,8 @@ CLASS="COMMAND"
 >%z - the size of the spooled
                print job (in bytes)</P
 ><P
->The print command <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->MUST</I
-></SPAN
+>The print command <EM
+>MUST</EM
 > contain at least 
                one occurrence of <TT
 CLASS="PARAMETER"
@@ -14869,7 +13796,7 @@ CLASS="CONSTANT"
 >nobody</TT
 > account. If this happens then create 
                an alternative guest account that can print and set the <A
-HREF="index.html#GUESTACCOUNT"
+HREF="#GUESTACCOUNT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -14886,14 +13813,14 @@ CLASS="PARAMETER"
 ><P
 ><B
 CLASS="COMMAND"
->print command = echo Printing %s &gt;&gt
+>print command = echo Printing %s &#62;&#62
                /tmp/print.log; lpr -P %p %s; rm %s</B
 ></P
 ><P
 >You may have to vary this command considerably depending 
                on how you normally print files on your system. The default for 
                the parameter varies depending on the setting of the <A
-HREF="index.html#PRINTING"
+HREF="#PRINTING"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -14935,7 +13862,7 @@ CLASS="COMMAND"
 ><P
 >For printing = CUPS :   If SAMBA is compiled against
                libcups, then <A
-HREF="index.html#PRINTING"
+HREF="#PRINTING"
 >printcap = cups</A
 > 
                uses the CUPS API to
@@ -14966,7 +13893,7 @@ NAME="PRINTOK"
 ><DD
 ><P
 >Synonym for <A
-HREF="index.html#PRINTABLE"
+HREF="#PRINTABLE"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -14992,7 +13919,7 @@ CLASS="CONSTANT"
 >Note that a printable service will ALWAYS allow writing 
                to the service path (user privileges permitting) via the spooling 
                of print data. The <A
-HREF="index.html#WRITEABLE"
+HREF="#WRITEABLE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -15016,7 +13943,7 @@ NAME="PRINTCAP"
 ><DD
 ><P
 >Synonym for   <A
-HREF="index.html#PRINTCAPNAME"
+HREF="#PRINTCAPNAME"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -15037,7 +13964,7 @@ NAME="PRINTCAPNAME"
 CLASS="FILENAME"
 >              /etc/printcap</TT
 >). See the discussion of the <A
-HREF="index.html#AEN79"
+HREF="#AEN79"
 >[printers]</A
 > section above for reasons 
                why you might want to do this.</P
@@ -15048,7 +13975,7 @@ CLASS="COMMAND"
                </B
 >. This should be supplemented by an addtional setting 
                <A
-HREF="index.html#PRINTING"
+HREF="#PRINTING"
 >printing = cups</A
 > in the [global] 
                section.  <B
@@ -15086,6 +14013,12 @@ CLASS="COMMAND"
 ><P
 >A minimal printcap file would look something like this:</P
 ><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
 ><PRE
 CLASS="PROGRAMLISTING"
 >              print1|My Printer 1
@@ -15094,18 +14027,17 @@ CLASS="PROGRAMLISTING"
                print4|My Printer 4
                print5|My Printer 5
                </PRE
+></TD
+></TR
+></TABLE
 ></P
 ><P
 >where the '|' separates aliases of a printer. The fact 
                that the second alias has a space in it gives a hint to Samba 
                that it's a comment.</P
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->NOTE</I
-></SPAN
+><EM
+>NOTE</EM
 >: Under AIX the default printcap 
                name is <TT
 CLASS="FILENAME"
@@ -15144,7 +14076,7 @@ NAME="PRINTERADMIN"
 ><P
 >Default: <B
 CLASS="COMMAND"
->printer admin = &lt;empty string&gt;</B
+>printer admin = &#60;empty string&#62;</B
 >
                </P
 ><P
@@ -15160,12 +14092,8 @@ NAME="PRINTERDRIVER"
 >printer driver (S)</DT
 ><DD
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Note :</I
-></SPAN
+><EM
+>Note :</EM
 >This is a deprecated 
                parameter and will be removed in the next major release
                following version 2.2.  Please see the instructions in
@@ -15188,7 +14116,7 @@ TARGET="_top"
                sensitive) that describes the appropriate printer driver for your 
                system. If you don't know the exact string to use then you should 
                first try with no <A
-HREF="index.html#PRINTERDRIVER"
+HREF="#PRINTERDRIVER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -15200,7 +14128,7 @@ CLASS="PARAMETER"
                shown in a scroll box after you have chosen the printer manufacturer.</P
 ><P
 >See also <A
-HREF="index.html#PRINTERDRIVERFILE"
+HREF="#PRINTERDRIVERFILE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -15222,12 +14150,8 @@ NAME="PRINTERDRIVERFILE"
 >printer driver file (G)</DT
 ><DD
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Note :</I
-></SPAN
+><EM
+>Note :</EM
 >This is a deprecated 
                parameter and will be removed in the next major release
                following version 2.2.  Please see the instructions in
@@ -15271,7 +14195,7 @@ CLASS="FILENAME"
 >.</P
 ><P
 >See also <A
-HREF="index.html#PRINTERDRIVERLOCATION"
+HREF="#PRINTERDRIVERLOCATION"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -15280,12 +14204,8 @@ CLASS="PARAMETER"
 ></A
 >.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->None (set in compile).</I
-></SPAN
+>Default: <EM
+>None (set in compile).</EM
 ></P
 ><P
 >Example: <B
@@ -15301,12 +14221,8 @@ NAME="PRINTERDRIVERLOCATION"
 >printer driver location (S)</DT
 ><DD
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Note :</I
-></SPAN
+><EM
+>Note :</EM
 >This is a deprecated 
                parameter and will be removed in the next major release
                following version 2.2.  Please see the instructions in
@@ -15341,7 +14257,7 @@ CLASS="FILENAME"
 >.</P
 ><P
 >See also <A
-HREF="index.html#PRINTERDRIVERFILE"
+HREF="#PRINTERDRIVERFILE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -15375,16 +14291,12 @@ NAME="PRINTERNAME"
                name given will be used for any printable service that does 
                not have its own printer name specified.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+>Default: <EM
 >none (but may be <TT
 CLASS="CONSTANT"
 >lp</TT
 > 
-               on many systems)</I
-></SPAN
+               on many systems)</EM
 ></P
 ><P
 >Example: <B
@@ -15400,7 +14312,7 @@ NAME="PRINTER"
 ><DD
 ><P
 >Synonym for <A
-HREF="index.html#PRINTERNAME"
+HREF="#PRINTERNAME"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -15493,7 +14405,7 @@ TARGET="_top"
 >This option can be set on a per printer basis</P
 ><P
 >See also the discussion in the <A
-HREF="index.html#AEN79"
+HREF="#AEN79"
 >              [printers]</A
 > section.</P
 ></DD
@@ -15528,7 +14440,7 @@ NAME="PROTOCOL"
 ><DD
 ><P
 >Synonym for <A
-HREF="index.html#MAXPROTOCOL"
+HREF="#MAXPROTOCOL"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -15545,7 +14457,7 @@ NAME="PUBLIC"
 ><DD
 ><P
 >Synonym for <A
-HREF="index.html#GUESTOK"
+HREF="#GUESTOK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -15586,18 +14498,14 @@ CLASS="PARAMETER"
                path in the command as the PATH may not be available to the 
                server.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+>Default: <EM
 >depends on the setting of <TT
 CLASS="PARAMETER"
 ><I
 >printing
                </I
 ></TT
-></I
-></SPAN
+></EM
 ></P
 ><P
 >Example: <B
@@ -15616,7 +14524,7 @@ NAME="QUEUERESUMECOMMAND"
                executed on the server host in order to resume the printer queue. It 
                is the command to undo the behavior that is caused by the 
                previous parameter (<A
-HREF="index.html#QUEUEPAUSECOMMAND"
+HREF="#QUEUEPAUSECOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -15646,20 +14554,16 @@ CLASS="PARAMETER"
                path in the command as the PATH may not be available to the 
                server.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+>Default: <EM
 >depends on the setting of <A
-HREF="index.html#PRINTING"
+HREF="#PRINTING"
 ><TT
 CLASS="PARAMETER"
 ><I
 >printing</I
 ></TT
 ></A
-></I
-></SPAN
+></EM
 >
                </P
 ><P
@@ -15703,7 +14607,7 @@ NAME="READLIST"
 >This is a list of users that are given read-only 
                access to a service. If the connecting user is in this list then 
                they will not be given write access, no matter what the <A
-HREF="index.html#WRITEABLE"
+HREF="#WRITEABLE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -15713,7 +14617,7 @@ CLASS="PARAMETER"
 >
                option is set to. The list can include group names using the 
                syntax described in the <A
-HREF="index.html#INVALIDUSERS"
+HREF="#INVALIDUSERS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -15723,7 +14627,7 @@ CLASS="PARAMETER"
 > parameter.</P
 ><P
 >See also the <A
-HREF="index.html#WRITELIST"
+HREF="#WRITELIST"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -15731,7 +14635,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 > parameter and the <A
-HREF="index.html#INVALIDUSERS"
+HREF="#INVALIDUSERS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -15743,7 +14647,7 @@ CLASS="PARAMETER"
 ><P
 >Default: <B
 CLASS="COMMAND"
->read list = &lt;empty string&gt;</B
+>read list = &#60;empty string&#62;</B
 ></P
 ><P
 >Example: <B
@@ -15759,7 +14663,7 @@ NAME="READONLY"
 ><DD
 ><P
 >Note that this is an inverted synonym for <A
-HREF="index.html#WRITEABLE"
+HREF="#WRITEABLE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -15789,7 +14693,7 @@ NAME="READRAW"
 ><P
 >In general this parameter should be viewed as a system tuning 
                tool and left severely alone. See also <A
-HREF="index.html#WRITERAW"
+HREF="#WRITERAW"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -15846,31 +14750,6 @@ CLASS="COMMAND"
 ></DD
 ><DT
 ><A
-NAME="REALM"
-></A
->realm (G)</DT
-><DD
-><P
->              This option specifies the kerberos realm to use. The realm is 
-               used as the ADS equivalent of the NT4<B
-CLASS="COMMAND"
->domain</B
->. It
-               is usually set to the DNS name of the kerberos server.
-               </P
-><P
->Default: <B
-CLASS="COMMAND"
->realm = </B
-></P
-><P
->Example: <B
-CLASS="COMMAND"
->realm = mysambabox.mycompany.com</B
-></P
-></DD
-><DT
-><A
 NAME="REMOTEANNOUNCE"
 ></A
 >remote announce (G)</DT
@@ -15903,7 +14782,7 @@ CLASS="COMMAND"
                to the two given IP addresses using the given workgroup names. 
                If you leave out the workgroup name then the one given in 
                the <A
-HREF="index.html#WORKGROUP"
+HREF="#WORKGROUP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -15928,7 +14807,7 @@ CLASS="FILENAME"
 ><P
 >Default: <B
 CLASS="COMMAND"
->remote announce = &lt;empty string&gt;
+>remote announce = &#60;empty string&#62;
                </B
 ></P
 ></DD
@@ -15978,7 +14857,7 @@ CLASS="COMMAND"
 ><P
 >Default: <B
 CLASS="COMMAND"
->remote browse sync = &lt;empty string&gt;
+>remote browse sync = &#60;empty string&#62;
                </B
 ></P
 ></DD
@@ -16034,7 +14913,7 @@ NAME="ROOT"
 ><DD
 ><P
 >Synonym for <A
-HREF="index.html#ROOTDIRECTORY"
+HREF="#ROOTDIRECTORY"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -16051,7 +14930,7 @@ NAME="ROOTDIR"
 ><DD
 ><P
 >Synonym for <A
-HREF="index.html#ROOTDIRECTORY"
+HREF="#ROOTDIRECTORY"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -16077,7 +14956,7 @@ CLASS="COMMAND"
                It may also check for, and deny access to, soft links to other 
                parts of the filesystem, or attempts to use ".." in file names 
                to access other directories (depending on the setting of the <A
-HREF="index.html#WIDELINKS"
+HREF="#WIDELINKS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -16101,12 +14980,8 @@ CLASS="PARAMETER"
 >root directory</I
 ></TT
 > 
-               option, <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->including</I
-></SPAN
+               option, <EM
+>including</EM
 > some files needed for 
                complete operation of the server. To maintain full operability 
                of the server you will need to mirror some system files 
@@ -16152,7 +15027,7 @@ CLASS="PARAMETER"
                (such as CDROMs) after a connection is closed.</P
 ><P
 >See also <A
-HREF="index.html#POSTEXEC"
+HREF="#POSTEXEC"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -16163,7 +15038,7 @@ CLASS="PARAMETER"
 ><P
 >Default: <B
 CLASS="COMMAND"
->root postexec = &lt;empty string&gt;
+>root postexec = &#60;empty string&#62;
                </B
 ></P
 ></DD
@@ -16185,7 +15060,7 @@ CLASS="PARAMETER"
                connection is opened.</P
 ><P
 >See also <A
-HREF="index.html#PREEXEC"
+HREF="#PREEXEC"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -16193,7 +15068,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 > and <A
-HREF="index.html#PREEXECCLOSE"
+HREF="#PREEXECCLOSE"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -16204,7 +15079,7 @@ CLASS="PARAMETER"
 ><P
 >Default: <B
 CLASS="COMMAND"
->root preexec = &lt;empty string&gt;
+>root preexec = &#60;empty string&#62;
                </B
 ></P
 ></DD
@@ -16224,7 +15099,7 @@ CLASS="PARAMETER"
 > parameter except that the command is run as root.</P
 ><P
 >See also <A
-HREF="index.html#PREEXEC"
+HREF="#PREEXEC"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -16232,7 +15107,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 > and <A
-HREF="index.html#PREEXECCLOSE"
+HREF="#PREEXECCLOSE"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -16326,7 +15201,7 @@ CLASS="COMMAND"
 >security = user</B
 >, see 
                the <A
-HREF="index.html#MAPTOGUEST"
+HREF="#MAPTOGUEST"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -16339,15 +15214,11 @@ CLASS="PARAMETER"
 >It is possible to use <B
 CLASS="COMMAND"
 >smbd</B
-> in a <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->              hybrid mode</I
-></SPAN
+> in a <EM
+>              hybrid mode</EM
 > where it is offers both user and share 
                level security under different <A
-HREF="index.html#NETBIOSALIASES"
+HREF="#NETBIOSALIASES"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -16361,13 +15232,9 @@ CLASS="PARAMETER"
 ><A
 NAME="SECURITYEQUALSSHARE"
 ></A
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+><EM
 >SECURITY = SHARE
-               </I
-></SPAN
+               </EM
 ></P
 ><P
 >When clients connect to a share level security server they 
@@ -16385,12 +15252,8 @@ CLASS="COMMAND"
 >Note that <B
 CLASS="COMMAND"
 >smbd</B
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->ALWAYS</I
-></SPAN
+> <EM
+>ALWAYS</EM
 > 
                uses a valid UNIX user to act on behalf of the client, even in
                <B
@@ -16414,7 +15277,7 @@ CLASS="COMMAND"
 ><LI
 ><P
 >If the <A
-HREF="index.html#GUESTONLY"
+HREF="#GUESTONLY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -16424,7 +15287,7 @@ CLASS="PARAMETER"
 ></A
 > parameter is set, then all the other 
                        stages are missed and only the <A
-HREF="index.html#GUESTACCOUNT"
+HREF="#GUESTACCOUNT"
 >                      <TT
 CLASS="PARAMETER"
 ><I
@@ -16438,7 +15301,7 @@ CLASS="PARAMETER"
 ><P
 >Is a username is sent with the share connection 
                        request, then this username (after mapping - see <A
-HREF="index.html#USERNAMEMAP"
+HREF="#USERNAMEMAP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -16450,13 +15313,9 @@ CLASS="PARAMETER"
 ></LI
 ><LI
 ><P
->If the client did a previous <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+>If the client did a previous <EM
 >logon
-                       </I
-></SPAN
+                       </EM
 > request (the SessionSetup SMB call) then the 
                        username sent in this SMB will be added as a potential username.
                        </P
@@ -16474,7 +15333,7 @@ CLASS="EMPHASIS"
 ><LI
 ><P
 >Any users on the <A
-HREF="index.html#USER"
+HREF="#USER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -16511,37 +15370,29 @@ CLASS="PARAMETER"
 >, then this 
                guest user will be used, otherwise access is denied.</P
 ><P
->Note that it can be <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->very</I
-></SPAN
+>Note that it can be <EM
+>very</EM
 > confusing 
                in share-level security as to which UNIX username will eventually
                be used in granting access.</P
 ><P
 >See also the section <A
-HREF="index.html#AEN236"
+HREF="#AEN236"
 >              NOTE ABOUT USERNAME/PASSWORD VALIDATION</A
 >.</P
 ><P
 ><A
 NAME="SECURITYEQUALSUSER"
 ></A
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+><EM
 >SECURITY = USER
-               </I
-></SPAN
+               </EM
 ></P
 ><P
 >This is the default security setting in Samba 2.2. 
                With user-level security a client must first "log-on" with a 
                valid username and password (which can be mapped using the <A
-HREF="index.html#USERNAMEMAP"
+HREF="#USERNAMEMAP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -16550,7 +15401,7 @@ CLASS="PARAMETER"
 ></A
 > 
                parameter). Encrypted passwords (see the <A
-HREF="index.html#ENCRYPTPASSWORDS"
+HREF="#ENCRYPTPASSWORDS"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -16559,7 +15410,7 @@ CLASS="PARAMETER"
 ></A
 > parameter) can also
                be used in this security mode. Parameters such as <A
-HREF="index.html#USER"
+HREF="#USER"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -16567,7 +15418,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 > and <A
-HREF="index.html#GUESTONLY"
+HREF="#GUESTONLY"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -16578,24 +15429,16 @@ CLASS="PARAMETER"
                may change the UNIX user to use on this connection, but only after 
                the user has been successfully authenticated.</P
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Note</I
-></SPAN
+><EM
+>Note</EM
 > that the name of the resource being 
-               requested is <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->not</I
-></SPAN
+               requested is <EM
+>not</EM
 > sent to the server until after 
                the server has successfully authenticated the client. This is why 
                guest shares don't work in user level security without allowing 
                the server to automatically map unknown users into the <A
-HREF="index.html#GUESTACCOUNT"
+HREF="#GUESTACCOUNT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -16604,7 +15447,7 @@ CLASS="PARAMETER"
 ></A
 >. 
                See the <A
-HREF="index.html#MAPTOGUEST"
+HREF="#MAPTOGUEST"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -16615,20 +15458,16 @@ CLASS="PARAMETER"
 > parameter for details on doing this.</P
 ><P
 >See also the section <A
-HREF="index.html#AEN236"
+HREF="#AEN236"
 >              NOTE ABOUT USERNAME/PASSWORD VALIDATION</A
 >.</P
 ><P
 ><A
 NAME="SECURITYEQUALSSERVER"
 ></A
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+><EM
 >SECURITY = SERVER
-               </I
-></SPAN
+               </EM
 ></P
 ><P
 >In this mode Samba will try to validate the username/password 
@@ -16653,12 +15492,8 @@ CLASS="FILENAME"
 > for details on how to set this 
                up.</P
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Note</I
-></SPAN
+><EM
+>Note</EM
 > that from the client's point of 
                view <B
 CLASS="COMMAND"
@@ -16670,24 +15505,16 @@ CLASS="COMMAND"
                with the authentication, it does not in any way affect what the 
                client sees.</P
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Note</I
-></SPAN
+><EM
+>Note</EM
 > that the name of the resource being 
-               requested is <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->not</I
-></SPAN
+               requested is <EM
+>not</EM
 > sent to the server until after 
                the server has successfully authenticated the client. This is why 
                guest shares don't work in user level security without allowing 
                the server to automatically map unknown users into the <A
-HREF="index.html#GUESTACCOUNT"
+HREF="#GUESTACCOUNT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -16696,7 +15523,7 @@ CLASS="PARAMETER"
 ></A
 >. 
                See the <A
-HREF="index.html#MAPTOGUEST"
+HREF="#MAPTOGUEST"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -16707,12 +15534,12 @@ CLASS="PARAMETER"
 > parameter for details on doing this.</P
 ><P
 >See also the section <A
-HREF="index.html#AEN236"
+HREF="#AEN236"
 >              NOTE ABOUT USERNAME/PASSWORD VALIDATION</A
 >.</P
 ><P
 >See also the <A
-HREF="index.html#PASSWORDSERVER"
+HREF="#PASSWORDSERVER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -16721,7 +15548,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 > parameter and the <A
-HREF="index.html#ENCRYPTPASSWORDS"
+HREF="#ENCRYPTPASSWORDS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -16734,13 +15561,9 @@ CLASS="PARAMETER"
 ><A
 NAME="SECURITYEQUALSDOMAIN"
 ></A
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+><EM
 >SECURITY = DOMAIN
-               </I
-></SPAN
+               </EM
 ></P
 ><P
 >This mode will only work correctly if <A
@@ -16749,7 +15572,7 @@ TARGET="_top"
 >smbpasswd(8)</A
 > has been used to add this 
                machine into a Windows NT Domain. It expects the <A
-HREF="index.html#ENCRYPTPASSWORDS"
+HREF="#ENCRYPTPASSWORDS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -16765,22 +15588,14 @@ CLASS="CONSTANT"
                it to a Windows NT Primary or Backup Domain Controller, in exactly 
                the same way that a Windows NT Server would do.</P
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Note</I
-></SPAN
+><EM
+>Note</EM
 > that a valid UNIX user must still 
                exist as well as the account on the Domain Controller to allow 
                Samba to have a valid UNIX account to map file access to.</P
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Note</I
-></SPAN
+><EM
+>Note</EM
 > that from the client's point 
                of view <B
 CLASS="COMMAND"
@@ -16792,24 +15607,16 @@ CLASS="COMMAND"
 >. It only affects how the server deals with the authentication, 
                it does not in any way affect what the client sees.</P
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Note</I
-></SPAN
+><EM
+>Note</EM
 > that the name of the resource being 
-               requested is <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->not</I
-></SPAN
+               requested is <EM
+>not</EM
 > sent to the server until after 
                the server has successfully authenticated the client. This is why 
                guest shares don't work in user level security without allowing 
                the server to automatically map unknown users into the <A
-HREF="index.html#GUESTACCOUNT"
+HREF="#GUESTACCOUNT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -16818,7 +15625,7 @@ CLASS="PARAMETER"
 ></A
 >. 
                See the <A
-HREF="index.html#MAPTOGUEST"
+HREF="#MAPTOGUEST"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -16828,12 +15635,8 @@ CLASS="PARAMETER"
                </A
 > parameter for details on doing this.</P
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->BUG:</I
-></SPAN
+><EM
+>BUG:</EM
 > There is currently a bug in the 
                implementation of <B
 CLASS="COMMAND"
@@ -16846,12 +15649,12 @@ CLASS="COMMAND"
                Domain Controller. This issue will be addressed in a future release.</P
 ><P
 >See also the section <A
-HREF="index.html#AEN236"
+HREF="#AEN236"
 >              NOTE ABOUT USERNAME/PASSWORD VALIDATION</A
 >.</P
 ><P
 >See also the <A
-HREF="index.html#PASSWORDSERVER"
+HREF="#PASSWORDSERVER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -16860,7 +15663,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 > parameter and the <A
-HREF="index.html#ENCRYPTPASSWORDS"
+HREF="#ENCRYPTPASSWORDS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -16902,12 +15705,8 @@ NAME="SECURITYMASK"
                a user to modify all the user/group/world permissions on a file.
                </P
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Note</I
-></SPAN
+><EM
+>Note</EM
 > that users who can access the 
                Samba server through other means can easily bypass this 
                restriction, so it is primarily useful for standalone 
@@ -16918,7 +15717,7 @@ CLASS="CONSTANT"
 >.</P
 ><P
 >See also the <A
-HREF="index.html#FORCEDIRECTORYSECURITYMODE"
+HREF="#FORCEDIRECTORYSECURITYMODE"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -16927,7 +15726,7 @@ CLASS="PARAMETER"
 ></A
 >, 
                <A
-HREF="index.html#DIRECTORYSECURITYMASK"
+HREF="#DIRECTORYSECURITYMASK"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -16936,7 +15735,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 >, <A
-HREF="index.html#FORCESECURITYMODE"
+HREF="#FORCESECURITYMODE"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -17074,12 +15873,8 @@ CLASS="CONSTANT"
 >This option gives full share compatibility and enabled 
                by default.</P
 ><P
->You should <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->NEVER</I
-></SPAN
+>You should <EM
+>NEVER</EM
 > turn this parameter 
                off as many Windows applications will break if you do so.</P
 ><P
@@ -17099,7 +15894,7 @@ NAME="SHORTPRESERVECASE"
                which conform to 8.3 syntax, that is all in upper case and of 
                suitable length, are created upper case, or if they are forced 
                to be the <A
-HREF="index.html#DEFAULTCASE"
+HREF="#DEFAULTCASE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -17108,7 +15903,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 >. This  option can be use with <A
-HREF="index.html#PRESERVECASE"
+HREF="#PRESERVECASE"
 ><B
 CLASS="COMMAND"
 >preserve case = yes</B
@@ -17118,7 +15913,7 @@ CLASS="COMMAND"
                names are lowered. </P
 ><P
 >See the section on <A
-HREF="index.html#AEN203"
+HREF="#AEN203"
 >              NAME MANGLING</A
 >.</P
 ><P
@@ -17162,17 +15957,13 @@ CLASS="PARAMETER"
 ></TT
 >
                parameter will always cause the OpenPrinterEx() on the server
-               to fail.  Thus the APW icon will never be displayed. <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->              Note :</I
-></SPAN
+               to fail.  Thus the APW icon will never be displayed. <EM
+>              Note :</EM
 >This does not prevent the same user from having 
                administrative privilege on an individual printer.</P
 ><P
 >See also <A
-HREF="index.html#ADDPRINTERCOMMAND"
+HREF="#ADDPRINTERCOMMAND"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -17181,7 +15972,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 >, <A
-HREF="index.html#DELETEPRINTERCOMMAND"
+HREF="#DELETEPRINTERCOMMAND"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -17189,7 +15980,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 >, <A
-HREF="index.html#PRINTERADMIN"
+HREF="#PRINTERADMIN"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -17210,12 +16001,8 @@ NAME="SHUTDOWNSCRIPT"
 >shutdown script (G)</DT
 ><DD
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->This parameter only exists in the HEAD cvs branch</I
-></SPAN
+><EM
+>This parameter only exists in the HEAD cvs branch</EM
 >
                This a full path name to a script called by
                <A
@@ -17256,12 +16043,8 @@ CLASS="PARAMETER"
 >%r</I
 ></TT
 > will be substituted with the
-               switch <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->-r</I
-></SPAN
+               switch <EM
+>-r</EM
 >. It means reboot after shutdown
                for NT.
                </P
@@ -17272,21 +16055,13 @@ CLASS="PARAMETER"
 >%f</I
 ></TT
 > will be substituted with the
-               switch <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->-f</I
-></SPAN
+               switch <EM
+>-f</EM
 >. It means force the shutdown
                even if applications do not respond for NT.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->None</I
-></SPAN
+>Default: <EM
+>None</EM
 >.</P
 ><P
 >Example: <B
@@ -17295,7 +16070,13 @@ CLASS="COMMAND"
 ></P
 ><P
 >Shutdown script example:
-               <PRE
+               <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
 CLASS="PROGRAMLISTING"
 >              #!/bin/bash
                
@@ -17305,12 +16086,15 @@ CLASS="PROGRAMLISTING"
 
                /sbin/shutdown $3 $4 +$time $1 &#38;
                </PRE
+></TD
+></TR
+></TABLE
 >
                Shutdown does not return so we need to launch it in background.
                </P
 ><P
 >See also <A
-HREF="index.html#ABORTSHUTDOWNSCRIPT"
+HREF="#ABORTSHUTDOWNSCRIPT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -17344,22 +16128,6 @@ CLASS="COMMAND"
 ></DD
 ><DT
 ><A
-NAME="SMBPORTS"
-></A
->smb ports (G)</DT
-><DD
-><P
->Specifies which ports the server should listen on
-               for SMB traffic.
-               </P
-><P
->Default: <B
-CLASS="COMMAND"
->smb ports = 445 139</B
-></P
-></DD
-><DT
-><A
 NAME="SOCKETADDRESS"
 ></A
 >socket address (G)</DT
@@ -17464,12 +16232,8 @@ TARGET="_top"
 ></LI
 ></UL
 ><P
->Those marked with a <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->'*'</I
-></SPAN
+>Those marked with a <EM
+>'*'</EM
 > take an integer 
                argument. The others can optionally take a 1 or 0 argument to enable 
                or disable the option, by default they will be enabled if you 
@@ -17541,12 +16305,8 @@ CLASS="COMMAND"
 >SAMBA_NETBIOS_NAME = myhostname</B
 ></P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->No default value</I
-></SPAN
+>Default: <EM
+>No default value</EM
 ></P
 ><P
 >Examples: <B
@@ -17570,12 +16330,8 @@ NAME="SPNEGO"
 ><P
 > This variable controls controls whether samba will try to use Simple and Protected NEGOciation (as specified by rfc2478) with WindowsXP and Windows2000sp2 clients to agree upon an authentication mechanism.  As of samba 3.0alpha it must be set to "no" for these clients to join a samba domain controller.  It can be set to "yes" to allow samba to participate in an AD domain controlled by a Windows2000 domain controller.</P
 ><P
->Default:  <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->use spnego = yes</I
-></SPAN
+>Default:  <EM
+>use spnego = yes</EM
 ></P
 ></DD
 ><DT
@@ -17745,7 +16501,7 @@ TARGET="_top"
                explorer shell file copies.</P
 ><P
 >See also the <A
-HREF="index.html#SYNCALWAYS"
+HREF="#SYNCALWAYS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -17812,7 +16568,7 @@ CLASS="CONSTANT"
                any affect.</P
 ><P
 >See also the <A
-HREF="index.html#STRICTSYNC"
+HREF="#STRICTSYNC"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -17982,7 +16738,7 @@ NAME="TIMESTAMPLOGS"
 ><DD
 ><P
 >Synonym for <A
-HREF="index.html#DEBUGTIMESTAMP"
+HREF="#DEBUGTIMESTAMP"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -18011,7 +16767,7 @@ TARGET="_top"
                can be used to prevent a server from exceeding its capacity and is
                designed as a printing throttle.  See also 
                <A
-HREF="index.html#MAXPRINTJOBS"
+HREF="#MAXPRINTJOBS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -18033,39 +16789,6 @@ CLASS="COMMAND"
 ></DD
 ><DT
 ><A
-NAME="UNICODE"
-></A
->unicode (G)</DT
-><DD
-><P
->Specifies whether Samba should try 
-               to use unicode on the wire by default. 
-               </P
-><P
->Default: <B
-CLASS="COMMAND"
->unicode = yes</B
-></P
-></DD
-><DT
-><A
-NAME="UNIXCHARSET"
-></A
->unix charset (G)</DT
-><DD
-><P
->Specifies the charset the unix machine 
-               Samba runs on uses. Samba needs to know this in order to be able to 
-               convert text to the charsets other SMB clients use.
-               </P
-><P
->Default: <B
-CLASS="COMMAND"
->unix charset = ASCII</B
-></P
-></DD
-><DT
-><A
 NAME="UNIXEXTENSIONS"
 ></A
 >unix extensions(G)</DT
@@ -18102,19 +16825,15 @@ CLASS="PARAMETER"
 >passwd
                program</I
 ></TT
->parameter is called <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->AS ROOT</I
-></SPAN
+>parameter is called <EM
+>AS ROOT</EM
 > - 
                to allow the new UNIX password to be set without access to the 
                old UNIX password (as the SMB password change code has no 
                access to the old password cleartext, only the new).</P
 ><P
 >See also <A
-HREF="index.html#PASSWDPROGRAM"
+HREF="#PASSWDPROGRAM"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -18123,7 +16842,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 >, <A
-HREF="index.html#PASSWDCHAT"
+HREF="#PASSWDCHAT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -18162,7 +16881,7 @@ CLASS="CONSTANT"
 >.</P
 ><P
 >In order for this parameter to work correctly the <A
-HREF="index.html#ENCRYPTPASSWORDS"
+HREF="#ENCRYPTPASSWORDS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -18225,18 +16944,14 @@ CLASS="COMMAND"
 >If this parameter is enabled for a printer, then any attempt
                to open the printer with the PRINTER_ACCESS_ADMINISTER right is mapped
                to PRINTER_ACCESS_USE instead.  Thus allowing the OpenPrinterEx()
-               call to succeed.  <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+               call to succeed.  <EM
 >This parameter MUST not be able enabled
                on a print share which has valid print driver installed on the Samba 
-               server.</I
-></SPAN
+               server.</EM
 ></P
 ><P
 >See also <A
-HREF="index.html#DISABLESPOOLSS"
+HREF="#DISABLESPOOLSS"
 >disable spoolss</A
 >
                </P
@@ -18288,12 +17003,8 @@ CLASS="FILENAME"
                will be read to find the names of hosts and users who will be allowed 
                access without specifying a password.</P
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->NOTE:</I
-></SPAN
+><EM
+>NOTE:</EM
 > The use of <TT
 CLASS="PARAMETER"
 ><I
@@ -18323,7 +17034,7 @@ NAME="USER"
 ><DD
 ><P
 >Synonym for <A
-HREF="index.html#USERNAME"
+HREF="#USERNAME"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -18340,7 +17051,7 @@ NAME="USERS"
 ><DD
 ><P
 >Synonym for <A
-HREF="index.html#USERNAME"
+HREF="#USERNAME"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -18399,7 +17110,7 @@ CLASS="PARAMETER"
 ><P
 >To restrict a service to a particular set of users you 
                can use the <A
-HREF="index.html#VALIDUSERS"
+HREF="#VALIDUSERS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -18429,7 +17140,7 @@ CLASS="PARAMETER"
                search.</P
 ><P
 >See the section <A
-HREF="index.html#AEN236"
+HREF="#AEN236"
 >NOTE ABOUT 
                USERNAME/PASSWORD VALIDATION</A
 > for more information on how 
@@ -18438,7 +17149,7 @@ HREF="index.html#AEN236"
 >Default: <B
 CLASS="COMMAND"
 >The guest account if a guest service, 
-               else &lt;empty string&gt;.</B
+               else &#60;empty string&#62;.</B
 ></P
 ><P
 >Examples:<B
@@ -18575,11 +17286,20 @@ CLASS="COMMAND"
                '!' to tell Samba to stop processing if it gets a match on 
                that line.</P
 ><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
 ><PRE
 CLASS="PROGRAMLISTING"
 >              !sys = mary fred
                guest = *
                </PRE
+></TD
+></TR
+></TABLE
 ></P
 ><P
 >Note that the remapping is applied to all occurrences 
@@ -18600,7 +17320,7 @@ CLASS="CONSTANT"
 >fred</TT
 >. The only exception to this is the 
                username passed to the <A
-HREF="index.html#PASSWORDSERVER"
+HREF="#PASSWORDSERVER"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -18616,12 +17336,8 @@ CLASS="PARAMETER"
                trouble deleting print jobs as PrintManager under WfWg will think 
                they don't own the print job.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->no username map</I
-></SPAN
+>Default: <EM
+>no username map</EM
 ></P
 ><P
 >Example: <B
@@ -18656,7 +17372,7 @@ CLASS="CONSTANT"
                performance on large installations. </P
 ><P
 >See also the <A
-HREF="index.html#UTMPDIRECTORY"
+HREF="#UTMPDIRECTORY"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -18684,7 +17400,7 @@ CLASS="COMMAND"
 >. It specifies a directory pathname that is
                used to store the utmp or utmpx files (depending on the UNIX system) that
                record user connections to a Samba server. See also the <A
-HREF="index.html#UTMP"
+HREF="#UTMP"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -18699,63 +17415,8 @@ CLASS="FILENAME"
 >/var/run/utmp</TT
 > on Linux).</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->no utmp directory</I
-></SPAN
-></P
-><P
->Example: <B
-CLASS="COMMAND"
->utmp directory = /var/run/utmp</B
-></P
-></DD
-><DT
-><A
-NAME="WTMPDIRECTORY"
-></A
->wtmp directory(G)</DT
-><DD
-><P
->This parameter is only available if Samba has 
-               been configured and compiled with the option <B
-CLASS="COMMAND"
->              --with-utmp</B
->. It specifies a directory pathname that is
-               used to store the wtmp or wtmpx files (depending on the UNIX system) that
-               record user connections to a Samba server. The difference with
-               the utmp directory is the fact that user info is kept after a user 
-               has logged out.
-               
-               See also the <A
-HREF="index.html#UTMP"
->              <TT
-CLASS="PARAMETER"
-><I
->utmp</I
-></TT
-></A
-> parameter. By default this is 
-               not set, meaning the system will use whatever utmp file the 
-               native system is set to use (usually 
-               <TT
-CLASS="FILENAME"
->/var/run/wtmp</TT
-> on Linux).</P
-><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->no wtmp directory</I
-></SPAN
-></P
-><P
->Example: <B
-CLASS="COMMAND"
->wtmp directory = /var/log/wtmp</B
+>Default: <EM
+>no utmp directory</EM
 ></P
 ></DD
 ><DT
@@ -18793,7 +17454,7 @@ CLASS="PARAMETER"
 >. This is useful in the [homes] section.</P
 ><P
 >See also <A
-HREF="index.html#INVALIDUSERS"
+HREF="#INVALIDUSERS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -18803,13 +17464,9 @@ CLASS="PARAMETER"
 ></A
 ></P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+>Default: <EM
 >No valid users list (anyone can login)
-               </I
-></SPAN
+               </EM
 ></P
 ><P
 >Example: <B
@@ -18831,12 +17488,8 @@ NAME="VETOFILES"
                or directories as in DOS wildcards.</P
 ><P
 >Each entry must be a unix path, not a DOS path and 
-               must <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->not</I
-></SPAN
+               must <EM
+>not</EM
 > include the  unix directory 
                separator '/'.</P
 ><P
@@ -18852,12 +17505,8 @@ CLASS="PARAMETER"
                is important to be aware of is Samba's behaviour when
                trying to delete a directory. If a directory that is
                to be deleted contains nothing but veto files this
-               deletion will <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->fail</I
-></SPAN
+               deletion will <EM
+>fail</EM
 > unless you also set
                the <TT
 CLASS="PARAMETER"
@@ -18877,7 +17526,7 @@ CLASS="PARAMETER"
                for a match as they are scanned.</P
 ><P
 >See also <A
-HREF="index.html#HIDEFILES"
+HREF="#HIDEFILES"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -18886,7 +17535,7 @@ CLASS="PARAMETER"
 ></TT
 ></A
 > and <A
-HREF="index.html#CASESENSITIVE"
+HREF="#CASESENSITIVE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -18895,16 +17544,18 @@ CLASS="PARAMETER"
 ></A
 >.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+>Default: <EM
 >No files or directories are vetoed.
-               </I
-></SPAN
+               </EM
 ></P
 ><P
->Examples:<PRE
+>Examples:<TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
 CLASS="PROGRAMLISTING"
 >; Veto any files containing the word Security, 
 ; any ending in .tmp, and any directory containing the
@@ -18914,6 +17565,9 @@ veto files = /*Security*/*.tmp/*root*/
 ; Veto the Apple specific files that a NetAtalk server
 ; creates.
 veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/</PRE
+></TD
+></TR
+></TABLE
 ></P
 ></DD
 ><DT
@@ -18924,7 +17578,7 @@ NAME="VETOOPLOCKFILES"
 ><DD
 ><P
 >This parameter is only valid when the <A
-HREF="index.html#OPLOCKS"
+HREF="#OPLOCKS"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -18936,7 +17590,7 @@ CLASS="PARAMETER"
                to selectively turn off the granting of oplocks on selected files that
                match a wildcarded list, similar to the wildcarded list used in the
                <A
-HREF="index.html#VETOFILES"
+HREF="#VETOFILES"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -18946,13 +17600,9 @@ CLASS="PARAMETER"
 > 
                parameter.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
+>Default: <EM
 >No files are vetoed for oplock 
-               grants</I
-></SPAN
+               grants</EM
 ></P
 ><P
 >You might want to do this on files that you know will 
@@ -18974,31 +17624,6 @@ CLASS="COMMAND"
 ></DD
 ><DT
 ><A
-NAME="VFSPATH"
-></A
->vfs path (S)</DT
-><DD
-><P
->This parameter specifies the directory
-               to look in for vfs modules. The name of every <B
-CLASS="COMMAND"
->vfs object
-               </B
-> will be prepended by this directory
-               </P
-><P
->Default: <B
-CLASS="COMMAND"
->vfs path = </B
-></P
-><P
->Example: <B
-CLASS="COMMAND"
->vfs path = /usr/lib/samba/vfs</B
-></P
-></DD
-><DT
-><A
 NAME="VFSOBJECT"
 ></A
 >vfs object (S)</DT
@@ -19010,12 +17635,8 @@ NAME="VFSOBJECT"
                with a VFS object.  The Samba VFS layer is new to Samba 2.2 and 
                must be enabled at compile time with --with-vfs.</P
 ><P
->Default : <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->no value</I
-></SPAN
+>Default : <EM
+>no value</EM
 ></P
 ></DD
 ><DT
@@ -19029,7 +17650,7 @@ NAME="VFSOPTIONS"
                to the vfs layer at initialization time.  The Samba VFS layer 
                is new to Samba 2.2 and must be enabled at compile time 
                with --with-vfs.  See also <A
-HREF="index.html#VFSOBJECT"
+HREF="#VFSOBJECT"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -19038,12 +17659,8 @@ CLASS="PARAMETER"
 ></A
 >.</P
 ><P
->Default : <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->no value</I
-></SPAN
+>Default : <EM
+>no value</EM
 ></P
 ></DD
 ><DT
@@ -19057,12 +17674,8 @@ NAME="VOLUME"
                returned for a share. Useful for CDROMs with installation programs 
                that insist on a particular volume label.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->the name of the share</I
-></SPAN
+>Default: <EM
+>the name of the share</EM
 ></P
 ></DD
 ><DT
@@ -19146,12 +17759,8 @@ CLASS="COMMAND"
 > system call
                will not return any data. </P
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Warning:</I
-></SPAN
+><EM
+>Warning:</EM
 > Turning off user
                enumeration may cause some programs to behave oddly.  For
                example, the finger program relies on having access to the
@@ -19201,12 +17810,8 @@ CLASS="COMMAND"
 > system
                call will not return any data. </P
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Warning:</I
-></SPAN
+><EM
+>Warning:</EM
 > Turning off group
                enumeration may cause some programs to behave oddly.
                </P
@@ -19235,7 +17840,7 @@ TARGET="_top"
 ><P
 >Default: <B
 CLASS="COMMAND"
->winbind gid = &lt;empty string&gt;
+>winbind gid = &#60;empty string&#62;
                </B
 ></P
 ><P
@@ -19306,7 +17911,7 @@ TARGET="_top"
 ><P
 >Default: <B
 CLASS="COMMAND"
->winbind uid = &lt;empty string&gt;
+>winbind uid = &#60;empty string&#62;
                </B
 ></P
 ><P
@@ -19334,7 +17939,7 @@ TARGET="_top"
 ><P
 >Default: <B
 CLASS="COMMAND"
->winbind use default domain = &lt;falseg&gt
+>winbind use default domain = &#60;falseg&#62
                </B
 ></P
 ><P
@@ -19449,12 +18054,8 @@ TARGET="_top"
 >You should point this at your WINS server if you have a
                multi-subnetted network.</P
 ><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->NOTE</I
-></SPAN
+><EM
+>NOTE</EM
 >. You need to set up Samba to point 
                to a WINS server if you have multiple subnets and wish cross-subnet 
                browsing to work correctly.</P
@@ -19465,12 +18066,8 @@ CLASS="FILENAME"
 > 
                in the docs/ directory of your Samba source distribution.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->not enabled</I
-></SPAN
+>Default: <EM
+>not enabled</EM
 ></P
 ><P
 >Example: <B
@@ -19499,12 +18096,8 @@ CLASS="CONSTANT"
 CLASS="COMMAND"
 >nmbd</B
 > to be your WINS server. 
-               Note that you should <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->NEVER</I
-></SPAN
+               Note that you should <EM
+>NEVER</EM
 > set this to <TT
 CLASS="CONSTANT"
 >true</TT
@@ -19526,7 +18119,7 @@ NAME="WORKGROUP"
 >This controls what workgroup your server will 
                appear to be in when queried by clients. Note that this parameter 
                also controls the Domain name used with the <A
-HREF="index.html#SECURITYEQUALSDOMAIN"
+HREF="#SECURITYEQUALSDOMAIN"
 ><B
 CLASS="COMMAND"
 >security = domain</B
@@ -19534,12 +18127,8 @@ CLASS="COMMAND"
 >
                setting.</P
 ><P
->Default: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->set at compile time to WORKGROUP</I
-></SPAN
+>Default: <EM
+>set at compile time to WORKGROUP</EM
 ></P
 ><P
 >Example: <B
@@ -19555,7 +18144,7 @@ NAME="WRITABLE"
 ><DD
 ><P
 >Synonym for <A
-HREF="index.html#WRITEABLE"
+HREF="#WRITEABLE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -19573,12 +18162,8 @@ NAME="WRITECACHESIZE"
 ><P
 >If this integer parameter is set to non-zero value,
                Samba will create an in-memory cache for each oplocked file 
-               (it does <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->not</I
-></SPAN
+               (it does <EM
+>not</EM
 > do this for 
                non-oplocked files). All writes that the client does not request 
                to be flushed directly to disk will be stored in this cache if possible. 
@@ -19618,7 +18203,7 @@ NAME="WRITELIST"
 >This is a list of users that are given read-write 
                access to a service. If the connecting user is in this list then 
                they will be given write access, no matter what the <A
-HREF="index.html#WRITEABLE"
+HREF="#WRITEABLE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -19633,7 +18218,7 @@ CLASS="PARAMETER"
                write list then they will be given write access.</P
 ><P
 >See also the <A
-HREF="index.html#READLIST"
+HREF="#READLIST"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -19645,7 +18230,7 @@ CLASS="PARAMETER"
 ><P
 >Default: <B
 CLASS="COMMAND"
->write list = &lt;empty string&gt;
+>write list = &#60;empty string&#62;
                </B
 ></P
 ><P
@@ -19657,37 +18242,13 @@ CLASS="COMMAND"
 ></DD
 ><DT
 ><A
-NAME="WINSPARTNERS"
-></A
->wins partners (G)</DT
-><DD
-><P
->A space separated list of partners' IP addresses for 
-               WINS replication. WINS partners are always defined as push/pull 
-               partners as defining only one way WINS replication is unreliable. 
-               WINS replication is currently experimental and unreliable between 
-               samba servers.
-               </P
-><P
->Default: <B
-CLASS="COMMAND"
->wins partners = </B
-></P
-><P
->Example: <B
-CLASS="COMMAND"
->wins partners = 192.168.0.1 172.16.1.2</B
-></P
-></DD
-><DT
-><A
 NAME="WRITEOK"
 ></A
 >write ok (S)</DT
 ><DD
 ><P
 >Synonym for <A
-HREF="index.html#WRITEABLE"
+HREF="#WRITEABLE"
 ><TT
 CLASS="PARAMETER"
 ><I
@@ -19720,7 +18281,7 @@ NAME="WRITEABLE"
 ><DD
 ><P
 >An inverted synonym is <A
-HREF="index.html#READONLY"
+HREF="#READONLY"
 >              <TT
 CLASS="PARAMETER"
 ><I
@@ -19740,12 +18301,8 @@ CLASS="CONSTANT"
 CLASS="COMMAND"
 >printable = yes</B
 >)
-               will <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->ALWAYS</I
-></SPAN
+               will <EM
+>ALWAYS</EM
 > allow writing to the directory 
                (user privileges permitting), but only via spooling operations.</P
 ><P
@@ -19760,7 +18317,7 @@ CLASS="COMMAND"
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN6109"
+NAME="AEN5817"
 ></A
 ><H2
 >WARNINGS</H2
@@ -19790,7 +18347,7 @@ TARGET="_top"
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN6115"
+NAME="AEN5823"
 ></A
 ><H2
 >VERSION</H2
@@ -19801,7 +18358,7 @@ NAME="AEN6115"
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN6118"
+NAME="AEN5826"
 ></A
 ><H2
 >SEE ALSO</H2
@@ -19880,7 +18437,7 @@ CLASS="COMMAND"
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN6138"
+NAME="AEN5846"
 ></A
 ><H2
 >AUTHOR</H2
index c10076fd5c52b451cf3b2aa5a30b6db4923ba8c0..a6bb66b7f1b43b5f9a67e4e3c9079e4a926cb85c 100644 (file)
@@ -1,28 +1,27 @@
-.\" This manpage has been automatically generated by docbook2man 
-.\" from a DocBook document.  This tool can be found at:
-.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/> 
+.\" This manpage has been automatically generated by docbook2man-spec
+.\" from a DocBook document.  docbook2man-spec can be found at:
+.\" <http://shell.ipoline.com/~elmert/hacks/docbook2X/> 
 .\" Please send any bug reports, improvements, comments, patches, 
 .\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "FINDSMB" "1" "20 augustus 2002" "" ""
+.TH "FINDSMB" "1" "28 January 2002" "" ""
 .SH NAME
 findsmb \- list info about machines that respond to SMB  name queries on a subnet
 .SH SYNOPSIS
-
-\fBfindsmb\fR [ \fBsubnet broadcast address\fR ]
-
+.sp
+\fBfindsmb\fR [ \fBsubnet broadcast address\fR ] 
 .SH "DESCRIPTION"
 .PP
-This perl script is part of the  Samba <URL:samba.7.html> suite.
+This perl script is part of the  Sambasuite.
 .PP
 \fBfindsmb\fR is a perl script that
 prints out several pieces of information about machines 
-on a subnet that respond to SMB  name query requests.
-It uses \fB nmblookup(1)\fR <URL:nmblookup.1.html> and  \fBsmbclient(1)\fR <URL:smbclient.1.html> to obtain this information.
+on a subnet that respond to SMB name query requests.
+It uses \fB nmblookup(1)\fRto obtain this information.
 .SH "OPTIONS"
 .TP
 \fBsubnet broadcast address\fR
 Without this option, \fBfindsmb
-\fR will probe the subnet of the machine where 
+\fRwill probe the subnet of the machine where 
 \fBfindsmb\fR is run. This value is passed 
 to \fBnmblookup\fR as part of the 
 -B option
@@ -41,16 +40,16 @@ Machines that are running Windows, Windows 95 or Windows 98 will
 not show any information about the operating system or server 
 version.
 .PP
-The command must be run on a system without \fBnmbd\fR <URL:nmbd.8.html> running. 
+The command must be run on a system without \fBnmbd\fRrunning. 
 If \fBnmbd\fR is running on the system, you will 
-only  get the IP address and the DNS name of the machine. To 
-get proper responses  from Windows 95 and Windows 98 machines, 
+only get the IP address and the DNS name of the machine. To 
+get proper responses from Windows 95 and Windows 98 machines, 
 the command must be run as root. 
 .PP
 For example running \fBfindsmb\fR on a machine 
 without \fBnmbd\fR running would yield output similar
 to the following
-
+.sp
 .nf
 IP ADDR         NETBIOS NAME   WORKGROUP/OS/VERSION 
 --------------------------------------------------------------------- 
@@ -65,6 +64,7 @@ IP ADDR         NETBIOS NAME   WORKGROUP/OS/VERSION
 192.168.35.93   FROGSTAR-PC    [MVENGR] [Windows 5.0] [Windows 2000 LAN Manager]
 192.168.35.97   HERBNT1       *[HERB-NT] [Windows NT 4.0] [NT LAN Manager 4.0]
        
+.sp
 .fi
 .SH "VERSION"
 .PP
@@ -72,9 +72,9 @@ This man page is correct for version 2.2 of
 the Samba suite.
 .SH "SEE ALSO"
 .PP
-\fBnmbd(8)\fR <URL:nmbd.8.html>
+\fBnmbd(8)\fR, 
 \fBsmbclient(1)
-\fR <URL:smbclient.1.html>, and  \fBnmblookup(1)\fR <URL:nmblookup.1.html>
+\fR
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities 
@@ -86,5 +86,5 @@ The original Samba man pages were written by Karl Auer.
 The man page sources were converted to YODL format (another 
 excellent piece of Open Source software, available at
 ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0 
-release by Jeremy Allison.  The conversion to DocBook for 
+release by Jeremy Allison. The conversion to DocBook for 
 Samba 2.2 was done by Gerald Carter
index 523751712dab4d9e093e0668ccfd76e1c4e7e3fc..e2f5531d5d4aeab624e008f239397a378eb35bc8 100644 (file)
@@ -1,15 +1,14 @@
-.\" This manpage has been automatically generated by docbook2man 
-.\" from a DocBook document.  This tool can be found at:
-.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/> 
+.\" This manpage has been automatically generated by docbook2man-spec
+.\" from a DocBook document.  docbook2man-spec can be found at:
+.\" <http://shell.ipoline.com/~elmert/hacks/docbook2X/> 
 .\" Please send any bug reports, improvements, comments, patches, 
 .\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "PDBEDIT" "8" "20 August 2002" "" ""
+.TH "PDBEDIT" "8" "24 April 2002" "" ""
 .SH NAME
 pdbedit \- manage the SAM database
 .SH SYNOPSIS
-
-\fBpdbedit\fR [ \fB-l\fR ] [ \fB-v\fR ] [ \fB-w\fR ] [ \fB-u username\fR ] [ \fB-f fullname\fR ] [ \fB-h homedir\fR ] [ \fB-d drive\fR ] [ \fB-s script\fR ] [ \fB-p profile\fR ] [ \fB-a\fR ] [ \fB-m\fR ] [ \fB-x\fR ] [ \fB-i passdb-backend\fR ] [ \fB-e passdb-backend\fR ] [ \fB-b passdb-backend\fR ] [ \fB-D debuglevel\fR ]
-
+.sp
+\fBpdbedit\fR [ \fB-l\fR ]  [ \fB-v\fR ]  [ \fB-w\fR ]  [ \fB-u username\fR ]  [ \fB-f fullname\fR ]  [ \fB-h homedir\fR ]  [ \fB-d drive\fR ]  [ \fB-s script\fR ]  [ \fB-p profile\fR ]  [ \fB-a\fR ]  [ \fB-m\fR ]  [ \fB-x\fR ]  [ \fB-i passdb-backend\fR ]  [ \fB-e passdb-backend\fR ]  [ \fB-D debuglevel\fR ] 
 .SH "DESCRIPTION"
 .PP
 This tool is part of the  Sambasuite.
@@ -35,11 +34,12 @@ the ':' character.
 
 Example: \fBpdbedit -l\fR
 
-
+.sp
 .nf
                sorce:500:Simo Sorce
                samba:45:Test User
                
+.sp
 .fi
 .TP
 \fB-v\fR
@@ -49,7 +49,7 @@ out the account fields in a descriptive format.
 
 Example: \fBpdbedit -l -v\fR
 
-
+.sp
 .nf
                ---------------
                username:       sorce
@@ -70,6 +70,7 @@ Example: \fBpdbedit -l -v\fR
                Logon Script:   
                Profile Path:   \\\\BERSERKER\\profile
                
+.sp
 .fi
 .TP
 \fB-w\fR
@@ -80,11 +81,12 @@ out the account fields in a format compatible with the
 
 Example: \fBpdbedit -l -w\fR
 
-
+.sp
 .nf
                sorce:500:508818B733CE64BEAAD3B435B51404EE:D2A2418EFC466A8A0F6B1DBB5C3DB80C:[UX         ]:LCT-00000000:
                samba:45:0F2B255F7B67A7A9AAD3B435B51404EE:BC281CE3F53B6A5146629CD4751D3490:[UX         ]:LCT-3BFA1E8D:
                
+.sp
 .fi
 .TP
 \fB-u username\fR
@@ -136,10 +138,11 @@ the -u switch. When adding a new user pdbedit will also
 ask for the password to be used
 
 Example: \fBpdbedit -a -u sorce\fR
-
+.sp
 .nf
 new password:
                retype new password
+.sp
 .fi
 .TP
 \fB-m\fR
@@ -158,12 +161,11 @@ from the database. It need the username be specified with the
 Example: \fBpdbedit -x -u bob\fR
 .TP
 \fB-i passdb-backend\fR
-Use a different passdb backend to retrieve users than the one specified in smb.conf. Can be used to import data into your 
-local user database.
+Use a different passdb backend to retrieve users than the one specified in smb.conf.
 
 This option will ease migration from one passdb backend to another.
 
-Example: \fBpdbedit -i smbpasswd:/etc/smbpasswd.old\fR
+Example: \fBpdbedit -i smbpasswd:/etc/smbpasswd.old -e tdbsam:/etc/samba/passwd.tdb\fR
 .TP
 \fB-e passdb-backend\fR
 Export all currently available users to the specified password database backend.
@@ -171,11 +173,6 @@ Export all currently available users to the specified password database backend.
 This option will ease migration from one passdb backend to another and will ease backupping
 
 Example: \fBpdbedit -e smbpasswd:/root/samba-users.backup\fR
-.TP
-\fB-b passdb-backend\fR
-Use a different default passdb backend. 
-
-Example: \fBpdbedit -b xml:/root/pdb-backup.xml -l\fR
 .SH "NOTES"
 .PP
 This command may be used only by root.
@@ -197,6 +194,6 @@ to the way the Linux kernel is developed.
 The original Samba man pages were written by Karl Auer. 
 The man page sources were converted to YODL format (another 
 excellent piece of Open Source software, available at
-ftp://ftp.icce.rug.nl/pub/unix/) and updated for the Samba 2.0 
-release by Jeremy Allison.  The conversion to DocBook for 
+ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0 
+release by Jeremy Allison. The conversion to DocBook for 
 Samba 2.2 was done by Gerald Carter
index 89671344817e40758aee133eb49ec0c88a8d6096..caa27103dbb9a5e4613b13ab3210f27089d65a25 100644 (file)
@@ -1,9 +1,9 @@
-.\" This manpage has been automatically generated by docbook2man 
-.\" from a DocBook document.  This tool can be found at:
-.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/> 
+.\" This manpage has been automatically generated by docbook2man-spec
+.\" from a DocBook document.  docbook2man-spec can be found at:
+.\" <http://shell.ipoline.com/~elmert/hacks/docbook2X/> 
 .\" Please send any bug reports, improvements, comments, patches, 
 .\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "SMB.CONF" "5" "07 September 2002" "" ""
+.TH "SMB.CONF" "5" "15 August 2002" "" ""
 .SH NAME
 smb.conf \- The configuration file for the Samba suite
 .SH "SYNOPSIS"
@@ -13,7 +13,7 @@ file for the Samba suite. \fIsmb.conf\fR contains
 runtime configuration information for the Samba programs. The
 \fIsmb.conf\fR file is designed to be configured and 
 administered by the \fBswat(8)\fR
- program. The complete description of the file format and 
+program. The complete description of the file format and 
 possible parameters held within are here for reference purposes.
 .SH "FILE FORMAT"
 .PP
@@ -23,8 +23,7 @@ until the next section begins. Sections contain parameters of the
 form
 .PP
 \fIname\fR = \fIvalue
-\fR
-.PP
+\fR.PP
 The file is line-based - that is, each newline-terminated 
 line represents either a comment, a section name or a parameter.
 .PP
@@ -91,13 +90,14 @@ access than the host system grants.
 The following sample section defines a file space share. 
 The user has write access to the path \fI/home/bar\fR. 
 The share is accessed via the share name "foo":
-
+.sp
 .nf
                [foo]
                path = /home/bar
                writeable = true
        
        
+.sp
 .fi
 .PP
 The following sample section defines a printable share. 
@@ -106,7 +106,7 @@ access permitted is via calls to open, write to and close a
 spool file. The \fBguest ok\fR parameter means 
 access will be permitted as the default guest user (specified 
 elsewhere):
-
+.sp
 .nf
                [aprinter]
                path = /usr/spool/public
@@ -115,15 +115,16 @@ elsewhere):
                guest ok = true
        
        
+.sp
 .fi
 .SH "SPECIAL SECTIONS"
-.SS "THE [GLOBAL] SECTION"
+.SS "THE  GLOBAL  SECTION"
 .PP
 parameters in this section apply to the server 
 as a whole, or are defaults for sections which do not 
 specifically define certain items. See the notes
 under PARAMETERS for more information.
-.SS "THE [HOMES] SECTION"
+.SS "THE  HOMES  SECTION"
 .PP
 If a section called homes is included in the 
 configuration file, services connecting clients to their 
@@ -151,31 +152,38 @@ If you decide to use a \fBpath =\fR line
 in your [homes] section then you may find it useful 
 to use the %S macro. For example :
 .PP
+.PP
 \fBpath = /data/pchome/%S\fR
 .PP
+.PP
 would be useful if you have different home directories 
 for your PCs than for UNIX access.
 .PP
+.PP
 This is a fast and simple way to give a large number 
 of clients access to their home directories with a minimum 
 of fuss.
 .PP
+.PP
 A similar process occurs if the requested section 
 name is "homes", except that the share name is not 
 changed to that of the requesting user. This method of using
 the [homes] section works well if different users share 
 a client PC.
 .PP
+.PP
 The [homes] section can specify all the parameters 
 a normal service section can specify, though some make more sense 
 than others. The following is a typical and suitable [homes]
 section:
-
+.PP
+.sp
 .nf
                                [homes]
                        writeable = yes
                
                
+.sp
 .fi
 .PP
 An important point is that if guest access is specified 
@@ -185,13 +193,15 @@ In the very unlikely event that this is actually desirable, it
 would be wise to also specify \fBread only
 access\fR.
 .PP
+.PP
 Note that the \fBbrowseable\fR flag for 
 auto home directories will be inherited from the global browseable 
 flag, not the [homes] browseable flag. This is useful as 
 it means setting \fBbrowseable = no\fR in
 the [homes] section will hide the [homes] share but make
 any auto home directories visible.
-.SS "THE [PRINTERS] SECTION"
+.PP
+.SS "THE  PRINTERS  SECTION"
 .PP
 This section works like [homes], 
 but for printers.
@@ -229,17 +239,20 @@ Note that the [printers] service MUST be
 printable - if you specify otherwise, the server will refuse 
 to load the configuration file.
 .PP
+.PP
 Typically the path specified would be that of a 
 world-writeable spool directory with the sticky bit set on 
 it. A typical [printers] entry would look like 
 this:
-
+.PP
+.sp
 .nf
                [printers]
                        path = /usr/spool/public
                        guest ok = yes
                        printable = yes 
                
+.sp
 .fi
 .PP
 All aliases given for a printer in the printcap file 
@@ -247,40 +260,45 @@ are legitimate printer names as far as the server is concerned.
 If your printing subsystem doesn't work like that, you will have 
 to set up a pseudo-printcap. This is a file consisting of one or 
 more lines like this:
-
+.PP
+.sp
 .nf
                                alias|alias|alias|alias...    
                
                
+.sp
 .fi
 .PP
 Each alias should be an acceptable printer name for 
 your printing subsystem. In the [global] section, specify 
-the new file as your printcap.  The server will then only recognize 
+the new file as your printcap. The server will then only recognize 
 names found in your pseudo-printcap, which of course can contain 
 whatever aliases you like. The same technique could be used 
 simply to limit access to a subset of your local printers.
 .PP
+.PP
 An alias, by the way, is defined as any component of the 
 first entry of a printcap record. Records are separated by newlines,
 components (if there are more than one) are separated by vertical 
 bar symbols ('|').
 .PP
+.PP
 NOTE: On SYSV systems which use lpstat to determine what 
 printers are defined on the system you may be able to use
 "printcap name = lpstat" to automatically obtain a list 
 of printers. See the "printcap name" option 
 for more details.
+.PP
 .SH "PARAMETERS"
 .PP
 parameters define the specific attributes of sections.
 .PP
 Some parameters are specific to the [global] section
-(e.g., \fBsecurity\fR).  Some parameters are usable 
+(e.g., \fBsecurity\fR). Some parameters are usable 
 in all sections (e.g., \fBcreate mode\fR). All others 
 are permissible only in normal sections. For the purposes of the 
 following descriptions the [homes] and [printers]
-sections will be considered normal.  The letter \fBG\fR 
+sections will be considered normal. The letter \fBG\fR 
 in parentheses indicates that a parameter is specific to the
 [global] section. The letter \fBS\fR
 indicates that a parameter can be specified in a service specific
@@ -343,15 +361,15 @@ the NetBIOS name of the server. This allows you
 to change your config based on what the client calls you. Your 
 server can have a "dual personality".
 
-Note that this parameter is not available when Samba listens
+Note that this paramater is not available when Samba listens
 on port 445, as clients no longer send this information 
 .TP
 \fB%M\fR
 the Internet name of the client machine.
 .TP
 \fB%N\fR
-the name of your NIS home directory server.  
-This is obtained from your NIS auto.map entry.  If you have 
+the name of your NIS home directory server. 
+This is obtained from your NIS auto.map entry. If you have 
 not compiled Samba with the \fB--with-automount\fR 
 option then this value will be the same as %L.
 .TP
@@ -390,6 +408,7 @@ The value of the environment variable
 .PP
 There are some quite creative things that can be done 
 with these substitutions and other smb.conf options.
+.PP
 .SH "NAME MANGLING"
 .PP
 Samba supports "name mangling" so that DOS and 
@@ -435,43 +454,39 @@ are lowercased. Default \fByes\fR.
 .PP
 By default, Samba 2.2 has the same semantics as a Windows 
 NT server, in that it is case insensitive but case preserving.
+.PP
 .SH "NOTE ABOUT USERNAME/PASSWORD VALIDATION"
 .PP
 There are a number of ways in which a user can connect 
 to a service. The server uses the following steps in determining 
 if it will allow a connection to a specified service. If all the 
-steps fail, then the connection request is rejected.  However, if one of the 
+steps fail, then the connection request is rejected. However, if one of the 
 steps succeeds, then the following steps are not checked.
 .PP
 If the service is marked "guest only = yes" and the
 server is running with share-level security ("security = share")
 then steps 1 to 5 are skipped.
-.TP 3
-1. 
+.IP 1. 
 If the client has passed a username/password 
 pair and that username/password pair is validated by the UNIX 
 system's password programs then the connection is made as that 
 username. Note that this includes the 
 \\\\server\\service%\fIusername\fR method of passing 
 a username.
-.TP 3
-2. 
+.IP 2. 
 If the client has previously registered a username 
 with the system and now supplies a correct password for that 
 username then the connection is allowed.
-.TP 3
-3. 
+.IP 3. 
 The client's NetBIOS name and any previously 
 used user names are checked against the supplied password, if 
 they match then the connection is allowed as the corresponding 
 user.
-.TP 3
-4. 
+.IP 4. 
 If the client has previously validated a
 username/password pair with the server and the client has passed 
 the validation token then that username is used. 
-.TP 3
-5. 
+.IP 5. 
 If a "user = " field is given in the
 \fIsmb.conf\fR file for the service and the client 
 has supplied a password, and that password matches (according to 
@@ -481,8 +496,7 @@ the username in the "user =" line. If one
 of the username in the "user =" list begins with a
 \&'@' then that name expands to a list of names in 
 the group of the same name.
-.TP 3
-6. 
+.IP 6. 
 If the service is a guest service then a 
 connection is made as the username given in the "guest 
 account =" for the service, irrespective of the 
@@ -490,16 +504,13 @@ supplied password.
 .SH "COMPLETE LIST OF GLOBAL PARAMETERS"
 .PP
 Here is a list of all global parameters. See the section of 
-each parameter for details.  Note that some are synonyms.
+each parameter for details. Note that some are synonyms.
 .TP 0.2i
 \(bu
 \fIabort shutdown script\fR
 .TP 0.2i
 \(bu
-\fIadd group script\fR
-.TP 0.2i
-\(bu
-\fIaddprinter command\fR
+\fIadd printer command\fR
 .TP 0.2i
 \(bu
 \fIadd share command\fR
@@ -508,18 +519,9 @@ each parameter for details.  Note that some are synonyms.
 \fIadd user script\fR
 .TP 0.2i
 \(bu
-\fIadd user to group script\fR
-.TP 0.2i
-\(bu
 \fIadd machine script\fR
 .TP 0.2i
 \(bu
-\fIdelete group script\fR
-.TP 0.2i
-\(bu
-\fIads server\fR
-.TP 0.2i
-\(bu
 \fIalgorithmic rid base\fR
 .TP 0.2i
 \(bu
@@ -577,7 +579,7 @@ each parameter for details.  Note that some are synonyms.
 \fIdefault service\fR
 .TP 0.2i
 \(bu
-\fIdeleteprinter command\fR
+\fIdelete printer command\fR
 .TP 0.2i
 \(bu
 \fIdelete share command\fR
@@ -586,21 +588,12 @@ each parameter for details.  Note that some are synonyms.
 \fIdelete user script\fR
 .TP 0.2i
 \(bu
-\fIdelete user from group script\fR
-.TP 0.2i
-\(bu
 \fIdfree command\fR
 .TP 0.2i
 \(bu
-\fIdisable netbios\fR
-.TP 0.2i
-\(bu
 \fIdisable spoolss\fR
 .TP 0.2i
 \(bu
-\fIdisplay charset\fR
-.TP 0.2i
-\(bu
 \fIdns proxy\fR
 .TP 0.2i
 \(bu
@@ -616,9 +609,6 @@ each parameter for details.  Note that some are synonyms.
 \fIdomain master\fR
 .TP 0.2i
 \(bu
-\fIdos charset\fR
-.TP 0.2i
-\(bu
 \fIencrypt passwords\fR
 .TP 0.2i
 \(bu
@@ -637,18 +627,12 @@ each parameter for details.  Note that some are synonyms.
 \fIhide unreadable\fR
 .TP 0.2i
 \(bu
-\fIhide unwriteable files\fR
-.TP 0.2i
-\(bu
 \fIhomedir map\fR
 .TP 0.2i
 \(bu
 \fIhost msdfs\fR
 .TP 0.2i
 \(bu
-\fIhostname lookups\fR
-.TP 0.2i
-\(bu
 \fIhosts equiv\fR
 .TP 0.2i
 \(bu
@@ -784,9 +768,6 @@ each parameter for details.  Note that some are synonyms.
 \fImin wins ttl\fR
 .TP 0.2i
 \(bu
-\fIname cache timeout\fR
-.TP 0.2i
-\(bu
 \fIname resolve order\fR
 .TP 0.2i
 \(bu
@@ -802,9 +783,6 @@ each parameter for details.  Note that some are synonyms.
 \fInis homedir\fR
 .TP 0.2i
 \(bu
-\fIntlm auth\fR
-.TP 0.2i
-\(bu
 \fInon unix account range\fR
 .TP 0.2i
 \(bu
@@ -835,9 +813,6 @@ each parameter for details.  Note that some are synonyms.
 \fIpanic action\fR
 .TP 0.2i
 \(bu
-\fIparanoid server security\fR
-.TP 0.2i
-\(bu
 \fIpassdb backend\fR
 .TP 0.2i
 \(bu
@@ -889,9 +864,6 @@ each parameter for details.  Note that some are synonyms.
 \fIread size\fR
 .TP 0.2i
 \(bu
-\fIrealm\fR
-.TP 0.2i
-\(bu
 \fIremote announce\fR
 .TP 0.2i
 \(bu
@@ -925,9 +897,6 @@ each parameter for details.  Note that some are synonyms.
 \fIsmb passwd file\fR
 .TP 0.2i
 \(bu
-\fIsmb ports\fR
-.TP 0.2i
-\(bu
 \fIsocket address\fR
 .TP 0.2i
 \(bu
@@ -973,12 +942,6 @@ each parameter for details.  Note that some are synonyms.
 \fItotal print jobs\fR
 .TP 0.2i
 \(bu
-\fIunicode\fR
-.TP 0.2i
-\(bu
-\fIunix charset\fR
-.TP 0.2i
-\(bu
 \fIunix extensions\fR
 .TP 0.2i
 \(bu
@@ -1006,9 +969,6 @@ each parameter for details.  Note that some are synonyms.
 \fIutmp directory\fR
 .TP 0.2i
 \(bu
-\fIwtmp directory\fR
-.TP 0.2i
-\(bu
 \fIwinbind cache time\fR
 .TP 0.2i
 \(bu
@@ -1033,9 +993,6 @@ each parameter for details.  Note that some are synonyms.
 \fIwins hook\fR
 .TP 0.2i
 \(bu
-\fIwins partners\fR
-.TP 0.2i
-\(bu
 \fIwins proxy\fR
 .TP 0.2i
 \(bu
@@ -1067,9 +1024,6 @@ each parameter for details. Note that some are synonyms.
 \fIblocking locks\fR
 .TP 0.2i
 \(bu
-\fIblock size\fR
-.TP 0.2i
-\(bu
 \fIbrowsable\fR
 .TP 0.2i
 \(bu
@@ -1241,9 +1195,6 @@ each parameter for details. Note that some are synonyms.
 \fImangling char\fR
 .TP 0.2i
 \(bu
-\fImangling method\fR
-.TP 0.2i
-\(bu
 \fImap archive\fR
 .TP 0.2i
 \(bu
@@ -1400,9 +1351,6 @@ each parameter for details. Note that some are synonyms.
 \fIveto oplock files\fR
 .TP 0.2i
 \(bu
-\fIvfs path\fR
-.TP 0.2i
-\(bu
 \fIvfs object\fR
 .TP 0.2i
 \(bu
@@ -1433,7 +1381,7 @@ each parameter for details. Note that some are synonyms.
 \fBabort shutdown script (G)\fR
 \fBThis parameter only exists in the HEAD cvs branch\fR
 This a full path name to a script called by
-\fBsmbd(8)\fR that
+\fBsmbd(8)\fRthat
 should stop a shutdown procedure issued by the \fIshutdown script\fR.
 
 This command will be run as user.
@@ -1442,24 +1390,24 @@ Default: \fBNone\fR.
 
 Example: \fBabort shutdown script = /sbin/shutdown -c\fR
 .TP
-\fBaddprinter command (G)\fR
+\fBadd printer command (G)\fR
 With the introduction of MS-RPC based printing
 support for Windows NT/2000 clients in Samba 2.2, The MS Add
 Printer Wizard (APW) icon is now also available in the 
-"Printers..." folder displayed a share listing.  The APW
+"Printers..." folder displayed a share listing. The APW
 allows for printers to be add remotely to a Samba or Windows 
 NT/2000 print server.
 
 For a Samba host this means that the printer must be 
-physically added to the underlying printing system.  The \fIadd 
+physically added to the underlying printing system. The \fIadd 
 printer command\fR defines a script to be run which 
 will perform the necessary operations for adding the printer
 to the print system and to add the appropriate service definition 
-to the  \fIsmb.conf\fR file in order that it can be 
+to the \fIsmb.conf\fR file in order that it can be 
 shared by \fBsmbd(8)\fR
+.
 
-
-The \fIaddprinter command\fR is
+The \fIadd printer command\fR is
 automatically invoked with the following parameter (in 
 order:
 .RS
@@ -1482,33 +1430,37 @@ order:
 \(bu
 \fIWindows 9x driver location\fR
 .RE
-
+.PP
 All parameters are filled in from the PRINTER_INFO_2 structure sent 
-by the Windows NT/2000 client with one exception.  The "Windows 9x
+by the Windows NT/2000 client with one exception. The "Windows 9x
 driver location" parameter is included for backwards compatibility
-only.  The remaining fields in the structure are generated from answers
+only. The remaining fields in the structure are generated from answers
 to the APW questions.
-
-Once the \fIaddprinter command\fR has 
-been executed, \fBsmbd\fR will reparse the \fI  smb.conf\fR to determine if the share defined by the APW
-exists.  If the sharename is still invalid, then \fBsmbd
-\fR will return an ACCESS_DENIED error to the client.
-
-See also \fI  deleteprinter command\fR, \fIprinting\fR,
+.PP
+.PP
+Once the \fIadd printer command\fR has 
+been executed, \fBsmbd\fR will reparse the \fI smb.conf\fR to determine if the share defined by the APW
+exists. If the sharename is still invalid, then \fBsmbd
+\fRwill return an ACCESS_DENIED error to the client.
+.PP
+.PP
+See also \fI delete printer command\fR, \fIprinting\fR,
 \fIshow add
 printer wizard\fR
-
+.PP
+.PP
 Default: \fBnone\fR
-
+.PP
+.PP
 Example: \fBaddprinter command = /usr/bin/addprinter
-\fR
+\fR.PP
 .TP
 \fBadd share command (G)\fR
 Samba 2.2.0 introduced the ability to dynamically 
-add and delete shares via the Windows NT 4.0 Server Manager.  The 
+add and delete shares via the Windows NT 4.0 Server Manager. The 
 \fIadd share command\fR is used to define an 
 external program or script which will add a new service definition 
-to \fIsmb.conf\fR.  In order to successfully 
+to \fIsmb.conf\fR. In order to successfully 
 execute the \fIadd share command\fR, \fBsmbd\fR
 requires that the administrator be connected using a root account (i.e. 
 uid == 0).
@@ -1533,57 +1485,49 @@ directory on disk.
 \fIcomment\fR - comment string to associate 
 with the new share.
 .RE
-
-This parameter is only used for add file shares.  To add printer shares, 
-see the \fIaddprinter 
+.PP
+This parameter is only used for add file shares. To add printer shares, 
+see the \fIadd printer 
 command\fR.
-
+.PP
+.PP
 See also \fIchange share 
 command\fR, \fIdelete share
 command\fR.
-
+.PP
+.PP
 Default: \fBnone\fR
-
+.PP
+.PP
 Example: \fBadd share command = /usr/local/bin/addshare\fR
+.PP
 .TP
 \fBadd machine script (G)\fR
 This is the full pathname to a script that will 
-be run by smbd(8) when a machine is added
+be run by smbd(8)when a machine is added
 to it's domain using the administrator username and password method. 
 
 This option is only required when using sam back-ends tied to the
-Unix uid method of RID calculation such as smbpasswd.  This option is only
+Unix uid method of RID calculation such as smbpasswd. This option is only
 available in Samba 3.0.
 
 Default: \fBadd machine script = <empty string>
 \fR
-
 Example: \fBadd machine script = /usr/sbin/adduser -n -g machines -c Machine -d /dev/null -s /bin/false %u
-\fR
-.TP
-\fBads server (G)\fR
-If this option is specified, samba does 
-not try to figure out what ads server to use itself, but 
-uses the specified ads server. Either one DNS name or IP 
-address can be used.
-
-Default: \fBads server = \fR
-
-Example: \fBads server = 192.168.1.2\fR
-.TP
+\fR.TP
 \fBadd user script (G)\fR
 This is the full pathname to a script that will 
 be run \fBAS ROOT\fR by smbd(8)
- under special circumstances described below.
+under special circumstances described below.
 
 Normally, a Samba server requires that UNIX users are 
 created for all users accessing files on this server. For sites 
 that use Windows NT account databases as their primary user database 
 creating these users and keeping the user list in sync with the 
-Windows NT PDC is an onerous task. This option allows smbd to create the required UNIX users 
+Windows NT PDC is an onerous task. This option allows smbdto create the required UNIX users 
 \fBON DEMAND\fR when a user accesses the Samba server.
 
-In order to use this option, smbd 
+In order to use this option, smbd
 must \fBNOT\fR be set to \fIsecurity = share\fR
 and \fIadd user script\fR
 must be set to a full pathname for a script that will create a UNIX 
@@ -1591,38 +1535,33 @@ user given one argument of \fI%u\fR, which expands into
 the UNIX user name to create.
 
 When the Windows user attempts to access the Samba server, 
-at login (session setup in the SMB protocol) time,   smbd contacts the \fIpassword server\fR and 
+at login (session setup in the SMB protocol) time,  smbdcontacts the \fIpassword server\fR and 
 attempts to authenticate the given user with the given password. If the 
 authentication succeeds then \fBsmbd\fR 
 attempts to find a UNIX user in the UNIX password database to map the 
 Windows user into. If this lookup fails, and \fIadd user script
-\fR is set then \fBsmbd\fR will
+\fRis set then \fBsmbd\fR will
 call the specified script \fBAS ROOT\fR, expanding 
 any \fI%u\fR argument to be the user name to create.
 
 If this script successfully creates the user then \fBsmbd
-\fR will continue on as though the UNIX user
+\fRwill continue on as though the UNIX user
 already existed. In this way, UNIX users are dynamically created to
 match existing Windows NT accounts.
 
-See also \fI  security\fR,   \fIpassword server\fR, 
+See also \fI security\fR,  \fIpassword server\fR, 
 \fIdelete user 
 script\fR.
 
 Default: \fBadd user script = <empty string>
 \fR
-
 Example: \fBadd user script = /usr/local/samba/bin/add_user 
 %u\fR
 .TP
 \fBadd group script (G)\fR
-This is the full pathname to a script that will be run \fBAS ROOT\fR
-by smbd(8) when a new group is requested. It will expand any \fI%g\fR
-to the group name passed.  This script is only useful for
-installations using the Windows NT domain administration tools. The
-script is free to create a group with an arbitrary name to circumvent
-unix group name restrictions. In that case the script must print the
-numeric gid of the created group on stdout.
+This is the full pathname to a script that will 
+be run \fBAS ROOT\fR by smbd(8) when a new group is requested. It will expand any \fI%g\fR to the group name passed. This script is only useful for installations using the Windows NT domain administration tools.
+
 .TP
 \fBadmin users (S)\fR
 This is a list of users who will be granted 
@@ -1637,20 +1576,8 @@ Default: \fBno admin users\fR
 
 Example: \fBadmin users = jason\fR
 .TP
-\fBadd user to group script (G)\fR
-Full path to the script that will be called when 
-a user is added to a group using the Windows NT domain administration 
-tools. It will be run by smbd(8) 
-\fBAS ROOT\fR. Any \fI%g\fR will be 
-replaced with the group name and any \fI%u\fR will 
-be replaced with the user name.
-
-Default: \fBadd user to group script = \fR
-
-Example: \fBadd user to group script = /usr/sbin/adduser %u %g\fR
-.TP
 \fBallow hosts (S)\fR
-Synonym for   \fIhosts allow\fR.
+Synonym for  \fIhosts allow\fR.
 .TP
 \fBalgorithmic rid base (G)\fR
 This determines how Samba will use its
@@ -1661,10 +1588,10 @@ Setting this option to a larger value could be useful to sites
 transitioning from WinNT and Win2k, as existing user and 
 group rids would otherwise clash with sytem users etc. 
 
-All UIDs and GIDs must be able to be resolved into SIDs for  
-the correct operation of ACLs on the server.  As such the algorithmic
+All UIDs and GIDs must be able to be resolved into SIDs for 
+the correct operation of ACLs on the server. As such the algorithmic
 mapping can't be 'turned off', but pushing it 'out of the way' should
-resolve the issues.  Users and groups can then be assigned 'low' RIDs
+resolve the issues. Users and groups can then be assigned 'low' RIDs
 in arbitary-rid supporting backends. 
 
 Default: \fBalgorithmic rid base = 1000\fR
@@ -1673,26 +1600,26 @@ Example: \fBalgorithmic rid base = 100000\fR
 .TP
 \fBallow trusted domains (G)\fR
 This option only takes effect when the \fIsecurity\fR option is set to 
-server or domain.  
+server or domain. 
 If it is set to no, then attempts to connect to a resource from 
-a domain or workgroup other than the one which smbd is running 
+a domain or workgroup other than the one which smbdis running 
 in will fail, even if that domain is trusted by the remote server 
 doing the authentication.
 
 This is useful if you only want your Samba server to 
 serve resources to users in the domain it is a member of. As 
-an example, suppose that there are two domains DOMA and DOMB.  DOMB 
-is trusted by DOMA, which contains the Samba server.  Under normal 
+an example, suppose that there are two domains DOMA and DOMB. DOMB 
+is trusted by DOMA, which contains the Samba server. Under normal 
 circumstances, a user with an account in DOMB can then access the 
 resources of a UNIX account with the same account name on the 
-Samba server even if they do not have an account in DOMA.  This 
+Samba server even if they do not have an account in DOMA. This 
 can make implementing a security boundary difficult.
 
 Default: \fBallow trusted domains = yes\fR
 .TP
 \fBannounce as (G)\fR
 This specifies what type of server 
-\fBnmbd\fR 
+\fBnmbd\fR
 will announce itself as, to a network neighborhood browse 
 list. By default this is set to Windows NT. The valid options 
 are : "NT Server" (which can also be written as "NT"), 
@@ -1710,7 +1637,7 @@ Example: \fBannounce as = Win95\fR
 \fBannounce version (G)\fR
 This specifies the major and minor version numbers 
 that nmbd will use when announcing itself as a server. The default 
-is 4.2.  Do not change this parameter unless you have a specific 
+is 4.2. Do not change this parameter unless you have a specific 
 need to set a Samba server to be a downlevel server.
 
 Default: \fBannounce version = 4.5\fR
@@ -1718,14 +1645,14 @@ Default: \fBannounce version = 4.5\fR
 Example: \fBannounce version = 2.0\fR
 .TP
 \fBauto services (G)\fR
-This is a synonym for the   \fIpreload\fR.
+This is a synonym for the  \fIpreload\fR.
 .TP
 \fBauth methods (G)\fR
 This option allows the administrator to chose what
 authentication methods \fBsmbd\fR will use when authenticating
-a user.  This option defaults to sensible values based on \fI  security\fR.
+a user. This option defaults to sensible values based on \fI security\fR.
 Each entry in the list attempts to authenticate the user in turn, until
-the user authenticates.  In practice only one method will ever actually 
+the user authenticates. In practice only one method will ever actually 
 be able to complete the authentication.
 
 Default: \fBauth methods = <empty string>\fR
@@ -1743,13 +1670,13 @@ Default: \fBavailable = yes\fR
 \fBbind interfaces only (G)\fR
 This global parameter allows the Samba admin 
 to limit what interfaces on a machine will serve SMB requests. If 
-affects file service smbd(8) and 
-name service nmbd(8) in slightly 
+affects file service smbd(8)and 
+name service nmbd(8)in slightly 
 different ways.
 
 For name service it causes \fBnmbd\fR to bind 
 to ports 137 and 138 on the interfaces listed in the interfaces parameter. \fBnmbd
-\fR also binds to the "all addresses" interface (0.0.0.0) 
+\fRalso binds to the "all addresses" interface (0.0.0.0) 
 on ports 137 and 138 for the purposes of reading broadcast messages. 
 If this option is not set then \fBnmbd\fR will service 
 name requests on all of these sockets. If \fIbind interfaces
@@ -1760,21 +1687,21 @@ interfaces in the \fIinterfaces\fR parameter list.
 As unicast packets are received on the other sockets it allows 
 \fBnmbd\fR to refuse to serve names to machines that 
 send packets that arrive through any interfaces not listed in the
-\fIinterfaces\fR list.  IP Source address spoofing
+\fIinterfaces\fR list. IP Source address spoofing
 does defeat this simple check, however so it must not be used
 seriously as a security feature for \fBnmbd\fR.
 
 For file service it causes smbd(8)
-to bind only to the interface list given in the   interfaces parameter. This restricts the networks that 
+to bind only to the interface list given in the  interfaces parameter. This restricts the networks that 
 \fBsmbd\fR will serve to packets coming in those 
-interfaces.  Note that you should not use this parameter for machines 
+interfaces. Note that you should not use this parameter for machines 
 that are serving PPP or other intermittent or non-broadcast network 
 interfaces as it will not cope with non-permanent interfaces.
 
 If \fIbind interfaces only\fR is set then 
 unless the network address \fB127.0.0.1\fR is added 
-to the \fIinterfaces\fR parameter list \fBsmbpasswd(8)\fR 
-and \fBswat(8)\fR may 
+to the \fIinterfaces\fR parameter list \fBsmbpasswd(8)\fR
+and \fBswat(8)\fRmay 
 not work as expected due to the reasons covered below.
 
 To change a users SMB password, the \fBsmbpasswd\fR
@@ -1782,23 +1709,23 @@ by default connects to the \fBlocalhost - 127.0.0.1\fR
 address as an SMB client to issue the password change request. If 
 \fIbind interfaces only\fR is set then unless the 
 network address \fB127.0.0.1\fR is added to the
-\fIinterfaces\fR parameter list then \fB  smbpasswd\fR will fail to connect in it's default mode. 
+\fIinterfaces\fR parameter list then \fB smbpasswd\fR will fail to connect in it's default mode. 
 \fBsmbpasswd\fR can be forced to use the primary IP interface 
-of the local host by using its   \fI-r remote machine\fR
- parameter, with \fIremote machine\fR set 
+of the local host by using its  \fI-r remote machine\fR
+parameter, with \fIremote machine\fR set 
 to the IP name of the primary interface of the local host.
 
 The \fBswat\fR status page tries to connect with
 \fBsmbd\fR and \fBnmbd\fR at the address 
-\fB127.0.0.1\fR to determine if they are running.  
-Not adding \fB127.0.0.1\fR  will cause \fB  smbd\fR and \fBnmbd\fR to always show
-"not running" even if they really are.  This can prevent \fB  swat\fR from starting/stopping/restarting \fBsmbd\fR
+\fB127.0.0.1\fR to determine if they are running. 
+Not adding \fB127.0.0.1\fR will cause \fB smbd\fR and \fBnmbd\fR to always show
+"not running" even if they really are. This can prevent \fB swat\fR from starting/stopping/restarting \fBsmbd\fR
 and \fBnmbd\fR.
 
 Default: \fBbind interfaces only = no\fR
 .TP
 \fBblocking locks (S)\fR
-This parameter controls the behavior of smbd(8) when given a request by a client 
+This parameter controls the behavior of smbd(8)when given a request by a client 
 to obtain a byte range lock on a region of an open file, and the 
 request has a time limit associated with it.
 
@@ -1814,30 +1741,11 @@ cannot be obtained.
 
 Default: \fBblocking locks = yes\fR
 .TP
-\fBblock size (S)\fR
-This parameter controls the behavior of 
-smbd(8) when reporting disk free 
-sizes. By default, this reports a disk block size of 1024 bytes.
-
-Changing this parameter may have some effect on the
-efficiency of client writes, this is not yet confirmed. This
-parameter was added to allow advanced administrators to change
-it (usually to a higher value) and test the effect it has on
-client write performance without re-compiling the code. As this
-is an experimental option it may be removed in a future release.
-
-Changing this option does not change the disk free reporting
-size, just the block size unit reported to the client.
-
-Default: \fBblock size = 1024\fR
-
-Example: \fBblock size = 65536\fR
-.TP
 \fBbrowsable (S)\fR
-See the \fI  browseable\fR.
+See the \fI browseable\fR.
 .TP
 \fBbrowse list (G)\fR
-This controls whether   \fBsmbd(8)\fR will serve a browse list to 
+This controls whether  \fBsmbd(8)\fRwill serve a browse list to 
 a client doing a \fBNetServerEnum\fR call. Normally 
 set to true. You should never need to change 
 this.
@@ -1863,7 +1771,7 @@ sensitive.
 This SMB allows a client to tell a server to 
 "watch" a particular directory for any changes and only reply to
 the SMB request when a change has occurred. Such constant scanning of
-a directory is expensive under UNIX, hence an   \fBsmbd(8)\fR daemon only performs such a scan 
+a directory is expensive under UNIX, hence an  \fBsmbd(8)\fRdaemon only performs such a scan 
 on each requested directory once every \fIchange notify 
 timeout\fR seconds.
 
@@ -1875,10 +1783,10 @@ Would change the scan time to every 5 minutes.
 .TP
 \fBchange share command (G)\fR
 Samba 2.2.0 introduced the ability to dynamically 
-add and delete shares via the Windows NT 4.0 Server Manager.  The 
+add and delete shares via the Windows NT 4.0 Server Manager. The 
 \fIchange share command\fR is used to define an 
 external program or script which will modify an existing service definition 
-in \fIsmb.conf\fR.  In order to successfully 
+in \fIsmb.conf\fR. In order to successfully 
 execute the \fIchange share command\fR, \fBsmbd\fR
 requires that the administrator be connected using a root account (i.e. 
 uid == 0).
@@ -1903,17 +1811,21 @@ directory on disk.
 \fIcomment\fR - comment string to associate 
 with the new share.
 .RE
-
-This parameter is only used modify existing file shares definitions.  To modify 
+.PP
+This parameter is only used modify existing file shares definitions. To modify 
 printer shares, use the "Printers..." folder as seen when browsing the Samba host.
-
+.PP
+.PP
 See also \fIadd share
 command\fR, \fIdelete 
 share command\fR.
-
+.PP
+.PP
 Default: \fBnone\fR
-
+.PP
+.PP
 Example: \fBchange share command = /usr/local/bin/addshare\fR
+.PP
 .TP
 \fBcomment (S)\fR
 This is a text field that is seen next to a share 
@@ -1922,7 +1834,7 @@ neighborhood or via \fBnet view\fR to list what shares
 are available.
 
 If you want to set the string that is displayed next to the 
-machine name then see the \fI  server string\fR parameter.
+machine name then see the \fI server string\fR parameter.
 
 Default: \fBNo comment string\fR
 
@@ -1946,8 +1858,7 @@ If the config file doesn't exist then it won't be loaded
 clients).
 
 Example: \fBconfig file = /usr/local/samba/lib/smb.conf.%m
-\fR
-.TP
+\fR.TP
 \fBcopy (S)\fR
 This parameter allows you to "clone" service 
 entries. The specified service is simply duplicated under the 
@@ -1985,12 +1896,12 @@ parameter which is set to 000 by default.
 
 This parameter does not affect directory modes. See the 
 parameter \fIdirectory mode
-\fR for details.
+\fRfor details.
 
 See also the \fIforce 
 create mode\fR parameter for forcing particular mode 
-bits to be set on created files. See also the   \fIdirectory mode\fR parameter for masking 
-mode bits on created directories.  See also the   \fIinherit permissions\fR parameter.
+bits to be set on created files. See also the  \fIdirectory mode\fR parameter for masking 
+mode bits on created directories. See also the  \fIinherit permissions\fR parameter.
 
 Note that this parameter does not apply to permissions
 set by Windows NT/2000 ACL editors. If the administrator wishes to enforce
@@ -2001,7 +1912,7 @@ Default: \fBcreate mask = 0744\fR
 Example: \fBcreate mask = 0775\fR
 .TP
 \fBcreate mode (S)\fR
-This is a synonym for \fI  create mask\fR.
+This is a synonym for \fI create mask\fR.
 .TP
 \fBcsc policy (S)\fR
 This stands for \fBclient-side caching 
@@ -2014,7 +1925,7 @@ servers.
 
 For example, shares containing roaming profiles can have
 offline caching disabled using \fBcsc policy = disable
-\fR.
+\fR\&.
 
 Default: \fBcsc policy = manual\fR
 
@@ -2049,25 +1960,25 @@ are needed with a resolution of higher that seconds, this
 boolean parameter adds microsecond resolution to the timestamp 
 message header when turned on.
 
-Note that the parameter \fI  debug timestamp\fR must be on for this to have an 
+Note that the parameter \fI debug timestamp\fR must be on for this to have an 
 effect.
 
 Default: \fBdebug hires timestamp = no\fR
 .TP
 \fBdebug pid (G)\fR
 When using only one log file for more then one 
-forked smbdprocess there may be hard to follow which process 
+forked smbd-process there may be hard to follow which process 
 outputs which message. This boolean parameter is adds the process-id 
 to the timestamp message headers in the logfile when turned on.
 
-Note that the parameter \fI  debug timestamp\fR must be on for this to have an 
+Note that the parameter \fI debug timestamp\fR must be on for this to have an 
 effect.
 
 Default: \fBdebug pid = no\fR
 .TP
 \fBdebug timestamp (G)\fR
 Samba 2.2 debug log messages are timestamped 
-by default. If you are running at a high   \fIdebug level\fR these timestamps
+by default. If you are running at a high  \fIdebug level\fR these timestamps
 can be distracting. This boolean parameter allows timestamping 
 to be turned off.
 
@@ -2079,42 +1990,42 @@ run as the connected user, this boolean parameter inserts the
 current euid, egid, uid and gid to the timestamp message headers 
 in the log file if turned on.
 
-Note that the parameter \fI  debug timestamp\fR must be on for this to have an 
+Note that the parameter \fI debug timestamp\fR must be on for this to have an 
 effect.
 
 Default: \fBdebug uid = no\fR
 .TP
 \fBdebuglevel (G)\fR
-Synonym for \fI  log level\fR.
+Synonym for \fI log level\fR.
 .TP
 \fBdefault (G)\fR
-A synonym for \fI  default service\fR.
+A synonym for \fI default service\fR.
 .TP
 \fBdefault case (S)\fR
-See the section on   NAME MANGLING. Also note the   \fIshort preserve case\fR parameter.
+See the section on  NAME MANGLING. Also note the  \fIshort preserve case\fR parameter.
 
 Default: \fBdefault case = lower\fR
 .TP
 \fBdefault devmode (S)\fR
-This parameter is only applicable to printable services.  When smbd is serving
+This parameter is only applicable to printable services. When smbd is serving
 Printer Drivers to Windows NT/2k/XP clients, each printer on the Samba
 server has a Device Mode which defines things such as paper size and
-orientation and duplex settings.  The device mode can only correctly be
+orientation and duplex settings. The device mode can only correctly be
 generated by the printer driver itself (which can only be executed on a
-Win32 platform).  Because smbd is unable to execute the driver code
+Win32 platform). Because smbd is unable to execute the driver code
 to generate the device mode, the default behavior is to set this field
 to NULL.
 
 Most problems with serving printer drivers to Windows NT/2k/XP clients
-can be traced to a problem with the generated device mode.  Certain drivers
+can be traced to a problem with the generated device mode. Certain drivers
 will do things such as crashing the client's Explorer.exe with a NULL devmode.
 However, other printer drivers can cause the client's spooler service
 (spoolsv.exe) to die if the devmode was not created by the driver itself
 (i.e. smbd generates a default devmode).
 
 This parameter should be used with care and tested with the printer
-driver in question.  It is better to leave the device mode to NULL
-and let the Windows client set the correct values.  Because drivers do not
+driver in question. It is better to leave the device mode to NULL
+and let the Windows client set the correct values. Because drivers do not
 do this all the time, setting \fBdefault devmode = yes\fR
 will instruct smbd to generate a default one.
 
@@ -2133,7 +2044,7 @@ There is no default value for this parameter. If this
 parameter is not given, attempting to connect to a nonexistent 
 service results in an error.
 
-Typically the default service would be a   \fIguest ok\fR,   \fIread-only\fR service.
+Typically the default service would be a  \fIguest ok\fR,  \fIread-only\fR service.
 
 Also note that the apparent service name will be changed 
 to equal that of the requested service, this is very useful as it 
@@ -2146,7 +2057,7 @@ interesting things.
 
 Example:
 
-
+.sp
 .nf
 [global]
        default service = pub
@@ -2154,42 +2065,38 @@ Example:
 [pub]
        path = /%S
                
+.sp
 .fi
 .TP
-\fBdelete group script (G)\fR
-This is the full pathname to a script that will 
-be run \fBAS ROOT\fR by smbd(8) when a group is requested to be deleted. It will expand any \fI%g\fR to the group name passed.  This script is only useful for installations using the Windows NT domain administration tools.
-.TP
-\fBdeleteprinter command (G)\fR
+\fBdelete printer command (G)\fR
 With the introduction of MS-RPC based printer
 support for Windows NT/2000 clients in Samba 2.2, it is now 
 possible to delete printer at run time by issuing the 
 DeletePrinter() RPC call.
 
 For a Samba host this means that the printer must be 
-physically deleted from underlying printing system.  The \fI  deleteprinter command\fR defines a script to be run which 
+physically deleted from underlying printing system. The \fI deleteprinter command\fR defines a script to be run which 
 will perform the necessary operations for removing the printer
 from the print system and from \fIsmb.conf\fR.
 
-The \fIdeleteprinter command\fR is 
-automatically called with only one parameter: \fI  "printer name"\fR.
+The \fIdelete printer command\fR is 
+automatically called with only one parameter: \fI "printer name"\fR.
 
-Once the \fIdeleteprinter command\fR has 
-been executed, \fBsmbd\fR will reparse the \fI  smb.conf\fR to associated printer no longer exists.  
+Once the \fIdelete printer command\fR has 
+been executed, \fBsmbd\fR will reparse the \fI smb.conf\fR to associated printer no longer exists. 
 If the sharename is still valid, then \fBsmbd
-\fR will return an ACCESS_DENIED error to the client.
+\fRwill return an ACCESS_DENIED error to the client.
 
-See also \fI  addprinter command\fR, \fIprinting\fR,
+See also \fI add printer command\fR, \fIprinting\fR,
 \fIshow add
 printer wizard\fR
 
 Default: \fBnone\fR
 
 Example: \fBdeleteprinter command = /usr/bin/removeprinter
-\fR
-.TP
+\fR.TP
 \fBdelete readonly (S)\fR
-This parameter allows readonly files to be deleted.  
+This parameter allows readonly files to be deleted. 
 This is not normal DOS semantics, but is allowed by UNIX.
 
 This option may be useful for running applications such 
@@ -2200,10 +2107,10 @@ Default: \fBdelete readonly = no\fR
 .TP
 \fBdelete share command (G)\fR
 Samba 2.2.0 introduced the ability to dynamically 
-add and delete shares via the Windows NT 4.0 Server Manager.  The 
+add and delete shares via the Windows NT 4.0 Server Manager. The 
 \fIdelete share command\fR is used to define an 
 external program or script which will remove an existing service 
-definition from \fIsmb.conf\fR.  In order to successfully 
+definition from \fIsmb.conf\fR. In order to successfully 
 execute the \fIdelete share command\fR, \fBsmbd\fR
 requires that the administrator be connected using a root account (i.e. 
 uid == 0).
@@ -2220,18 +2127,22 @@ of the global \fIsmb.conf\fR file.
 \fIshareName\fR - the name of 
 the existing service.
 .RE
-
-This parameter is only used to remove file shares.  To delete printer shares, 
-see the \fIdeleteprinter 
+.PP
+This parameter is only used to remove file shares. To delete printer shares, 
+see the \fIdelete printer 
 command\fR.
-
+.PP
+.PP
 See also \fIadd share
 command\fR, \fIchange 
 share command\fR.
-
+.PP
+.PP
 Default: \fBnone\fR
-
+.PP
+.PP
 Example: \fBdelete share command = /usr/local/bin/delshare\fR
+.PP
 .TP
 \fBdelete user script (G)\fR
 This is the full pathname to a script that will 
@@ -2246,27 +2157,14 @@ This script should delete the given UNIX username.
 
 Default: \fBdelete user script = <empty string>
 \fR
-
 Example: \fBdelete user script = /usr/local/samba/bin/del_user 
 %u\fR
 .TP
-\fBdelete user from group script (G)\fR
-Full path to the script that will be called when 
-a user is removed from a group using the Windows NT domain administration 
-tools. It will be run by smbd(8) 
-\fBAS ROOT\fR. Any \fI%g\fR will be 
-replaced with the group name and any \fI%u\fR will 
-be replaced with the user name.
-
-Default: \fBdelete user from group script = \fR
-
-Example: \fBdelete user from group script = /usr/sbin/deluser %u %g\fR
-.TP
 \fBdelete veto files (S)\fR
 This option is used when Samba is attempting to 
 delete a directory that contains one or more vetoed directories 
 (see the \fIveto files\fR
-option).  If this option is set to false (the default) then if a vetoed 
+option). If this option is set to false (the default) then if a vetoed 
 directory contains any non-vetoed files or directories then the 
 directory delete will fail. This is usually what you want.
 
@@ -2278,7 +2176,7 @@ directories you might normally veto DOS/Windows users from seeing
 (e.g. \fI.AppleDouble\fR)
 
 Setting \fBdelete veto files = yes\fR allows these 
-directories to be  transparently deleted when the parent directory 
+directories to be transparently deleted when the parent directory 
 is deleted (so long as the user has permissions to do so).
 
 See also the \fIveto 
@@ -2317,28 +2215,28 @@ setgid and should be owned by (and writeable only by) root!
 Default: \fBBy default internal routines for 
 determining the disk capacity and remaining space will be used.
 \fR
-
 Example: \fBdfree command = /usr/local/samba/bin/dfree
 \fR
-
 Where the script dfree (which must be made executable) could be:
 
-
+.sp
 .nf
  
                #!/bin/sh
                df $1 | tail -1 | awk '{print $2" "$4}'
                
+.sp
 .fi
 
 or perhaps (on Sys V based systems):
 
-
+.sp
 .nf
  
                #!/bin/sh
                /usr/bin/df -k $1 | tail -1 | awk '{print $3" "$5}'
                
+.sp
 .fi
 
 Note that you may have to replace the command names 
@@ -2346,7 +2244,7 @@ with full path names on some systems.
 .TP
 \fBdirectory (S)\fR
 Synonym for \fIpath
-\fR.
+\fR\&.
 .TP
 \fBdirectory mask (S)\fR
 This parameter is the octal modes which are 
@@ -2367,7 +2265,7 @@ user who owns the directory to modify it.
 
 Following this Samba will bit-wise 'OR' the UNIX mode 
 created from this parameter with the value of the \fIforce directory mode
-\fR parameter. This parameter is set to 000 by 
+\fRparameter. This parameter is set to 000 by 
 default (i.e. no extra mode bits are added).
 
 Note that this parameter does not apply to permissions
@@ -2379,18 +2277,18 @@ directory mode\fR parameter to cause particular mode
 bits to always be set on created directories.
 
 See also the \fIcreate mode
-\fR parameter for masking mode bits on created files, 
+\fRparameter for masking mode bits on created files, 
 and the \fIdirectory 
 security mask\fR parameter.
 
-Also refer to the \fI  inherit permissions\fR parameter.
+Also refer to the \fI inherit permissions\fR parameter.
 
 Default: \fBdirectory mask = 0755\fR
 
 Example: \fBdirectory mask = 0775\fR
 .TP
 \fBdirectory mode (S)\fR
-Synonym for \fI  directory mask\fR
+Synonym for \fI directory mask\fR
 .TP
 \fBdirectory security mask (S)\fR
 This parameter controls what UNIX permission bits 
@@ -2410,38 +2308,26 @@ permissions on a directory.
 
 \fBNote\fR that users who can access the 
 Samba server through other means can easily bypass this restriction, 
-so it is primarily useful for standalone "appliance" systems.  
+so it is primarily useful for standalone "appliance" systems. 
 Administrators of most normal systems will probably want to leave
 it as the default of 0777.
 
-See also the \fI  force directory security mode\fR, \fIsecurity mask\fR, 
+See also the \fI force directory security mode\fR, \fIsecurity mask\fR, 
 \fIforce security mode
-\fR parameters.
+\fRparameters.
 
 Default: \fBdirectory security mask = 0777\fR
 
 Example: \fBdirectory security mask = 0700\fR
 .TP
-\fBdisable netbios (G)\fR
-Enabling this parameter will disable netbios support
-in Samba. Netbios is the only available form of browsing in 
-all windows versions except for 2000 and XP. 
-
-Note that clients that only support netbios won't be able to 
-see your samba server when netbios support is disabled.
-
-Default: \fBdisable netbios = no\fR
-
-Example: \fBdisable netbios = yes\fR
-.TP
 \fBdisable spoolss (G)\fR
-Enabling this parameter will disable Samba's support
+Enabling this parameter will disables Samba's support
 for the SPOOLSS set of MS-RPC's and will yield identical behavior
-as Samba 2.0.x.  Windows NT/2000 clients will downgrade to using
+as Samba 2.0.x. Windows NT/2000 clients will downgrade to using
 Lanman style printing commands. Windows 9x/ME will be uneffected by
 the parameter. However, this will also disable the ability to upload
 printer drivers to a Samba server via the Windows NT Add Printer
-Wizard or by using the NT printer properties dialog window.  It will
+Wizard or by using the NT printer properties dialog window. It will
 also disable the capability of Windows NT/2000 clients to download
 print drivers from the Samba host upon demand.
 \fBBe very careful about enabling this parameter.\fR
@@ -2450,17 +2336,8 @@ See also use client driver
 
 Default : \fBdisable spoolss = no\fR
 .TP
-\fBdisplay charset (G)\fR
-Specifies the charset that samba will use 
-to print messages to stdout and stderr and SWAT will use. 
-Should generally be the same as the \fBunix charset\fR.
-
-Default: \fBdisplay charset = ASCII\fR
-
-Example: \fBdisplay charset = UTF8\fR
-.TP
 \fBdns proxy (G)\fR
-Specifies that nmbd(8) 
+Specifies that nmbd(8)
 when acting as a WINS server and finding that a NetBIOS name has not 
 been registered, should treat the NetBIOS name word-for-word as a DNS 
 name and do a lookup with the DNS server for that name on behalf of 
@@ -2474,16 +2351,16 @@ characters, so the DNS name (or DNS alias) can likewise only be
 DNS name lookup requests, as doing a name lookup is a blocking 
 action.
 
-See also the parameter \fI  wins support\fR.
+See also the parameter \fI wins support\fR.
 
 Default: \fBdns proxy = yes\fR
 .TP
 \fBdomain admin group (G)\fR
 This parameter is intended as a temporary solution
 to enable users to be a member of the "Domain Admins" group when 
-a Samba host is acting as a PDC.  A complete solution will be provided
+a Samba host is acting as a PDC. A complete solution will be provided
 by a system for mapping Windows NT/2000 groups onto UNIX groups.
-Please note that this parameter has a somewhat confusing name.  It 
+Please note that this parameter has a somewhat confusing name. It 
 accepts a list of usernames and of group names in standard 
 \fIsmb.conf\fR notation.
 
@@ -2498,9 +2375,9 @@ Example: \fBdomain admin group = root @wheel\fR
 \fBdomain guest group (G)\fR
 This parameter is intended as a temporary solution
 to enable users to be a member of the "Domain Guests" group when 
-a Samba host is acting as a PDC.  A complete solution will be provided
+a Samba host is acting as a PDC. A complete solution will be provided
 by a system for mapping Windows NT/2000 groups onto UNIX groups.
-Please note that this parameter has a somewhat confusing name.  It 
+Please note that this parameter has a somewhat confusing name. It 
 accepts a list of usernames and of group names in standard 
 \fIsmb.conf\fR notation.
 
@@ -2514,24 +2391,24 @@ Example: \fBdomain guest group = nobody @guest\fR
 .TP
 \fBdomain logons (G)\fR
 If set to true, the Samba server will serve 
-Windows 95/98 Domain logons for the   \fIworkgroup\fR it is in. Samba 2.2 also 
+Windows 95/98 Domain logons for the  \fIworkgroup\fR it is in. Samba 2.2 also 
 has limited capability to act as a domain controller for Windows 
-NT 4 Domains.  For more details on setting up this feature see 
+NT 4 Domains. For more details on setting up this feature see 
 the Samba-PDC-HOWTO included in the \fIhtmldocs/\fR
 directory shipped with the source code.
 
 Default: \fBdomain logons = no\fR
 .TP
 \fBdomain master (G)\fR
-Tell \fB  nmbd(8)\fR to enable WAN-wide browse list
+Tell \fB nmbd(8)\fRto enable WAN-wide browse list
 collation. Setting this option causes \fBnmbd\fR to
 claim a special domain specific NetBIOS name that identifies 
-it as a domain master browser for its given   \fIworkgroup\fR. Local master browsers 
+it as a domain master browser for its given  \fIworkgroup\fR. Local master browsers 
 in the same \fIworkgroup\fR on broadcast-isolated 
 subnets will give this \fBnmbd\fR their local browse lists, 
-and then ask \fBsmbd(8)\fR 
+and then ask \fBsmbd(8)\fR
 for a complete copy of the browse list for the whole wide area 
-network.  Browser clients will then contact their local master browser, 
+network. Browser clients will then contact their local master browser, 
 and will receive the domain-wide browse list, instead of just the list 
 for their broadcast-isolated subnet.
 
@@ -2547,7 +2424,7 @@ strangely and may fail.
 
 If \fBdomain logons = yes\fR
 , then the default behavior is to enable the \fIdomain 
-master\fR parameter.  If \fIdomain logons\fR is 
+master\fR parameter. If \fIdomain logons\fR is 
 not enabled (the default setting), then neither will \fIdomain 
 master\fR be enabled by default.
 
@@ -2561,31 +2438,21 @@ parameter allows you to specify a comma-delimited list of directories
 that the server should always show as empty.
 
 Note that Samba can be very fussy about the exact format 
-of the "dont descend" entries. For example you may need \fI  ./proc\fR instead of just \fI/proc\fR. 
-Experimentation is the best policy :-)  
+of the "dont descend" entries. For example you may need \fI ./proc\fR instead of just \fI/proc\fR. 
+Experimentation is the best policy :-) 
 
 Default: \fBnone (i.e., all directories are OK 
 to descend)\fR
 
 Example: \fBdont descend = /proc,/dev\fR
 .TP
-\fBdos charset (G)\fR
-DOS SMB clients assume the server has 
-the same charset as they do. This option specifies which 
-charset Samba should talk to DOS clients.
-
-The default depends on which charsets you have instaled. 
-Samba tries to use charset 850 but falls back to ASCII in 
-case it is not available. Run testparm(1)
- to check the default on your system.
-.TP
 \fBdos filemode (S)\fR
 The default behavior in Samba is to provide 
 UNIX-like behavior where only the owner of a file/directory is 
-able to change the permissions on it.  However, this behavior
-is often confusing to  DOS/Windows users.  Enabling this parameter 
+able to change the permissions on it. However, this behavior
+is often confusing to DOS/Windows users. Enabling this parameter 
 allows a user who has write access to the file (by whatever 
-means) to modify the permissions on it.  Note that a user
+means) to modify the permissions on it. Note that a user
 belonging to the group owning the file will not be allowed to
 change permissions if the group is only granted read access.
 Ownership of the file/directory is not changed, only the permissions 
@@ -2599,7 +2466,7 @@ granularity on time resolution is two seconds. Setting this parameter
 for a share causes Samba to round the reported time down to the 
 nearest two second boundary when a query call that requires one second 
 resolution is made to \fBsmbd(8)\fR
-
+.
 
 This option is mainly used as a compatibility option for Visual 
 C++ when used against Samba shares. If oplocks are enabled on a 
@@ -2620,7 +2487,7 @@ file they can change the timestamp on it. Under POSIX semantics,
 only the owner of the file or root may change the timestamp. By 
 default, Samba runs with POSIX semantics and refuses to change the 
 timestamp on a file if the user \fBsmbd\fR is acting 
-on behalf of is not the file owner. Setting this option to   true allows DOS semantics and smbd will change the file 
+on behalf of is not the file owner. Setting this option to  true allows DOS semantics and smbdwill change the file 
 timestamp as DOS requires.
 
 Default: \fBdos filetimes = no\fR
@@ -2634,9 +2501,9 @@ Samba see the file ENCRYPTION.txt in the Samba documentation
 directory \fIdocs/\fR shipped with the source code.
 
 In order for encrypted passwords to work correctly
-\fBsmbd(8)\fR must either 
+\fBsmbd(8)\fRmust either 
 have access to a local \fIsmbpasswd(5)
-\fR program for information on how to set up 
+\fRprogram for information on how to set up 
 and maintain this file), or set the security = [server|domain|ads] parameter which 
 causes \fBsmbd\fR to authenticate against another 
 server.
@@ -2646,7 +2513,7 @@ Default: \fBencrypt passwords = yes\fR
 \fBenhanced browsing (G)\fR
 This option enables a couple of enhancements to 
 cross-subnet browse propagation that have been added in Samba 
-but which are not standard in Microsoft implementations.  
+but which are not standard in Microsoft implementations. 
 
 The first enhancement to browse propagation consists of a regular
 wildcard query to a Samba WINS server for all Domain Master Browsers,
@@ -2666,27 +2533,26 @@ Default: \fBenhanced browsing = yes\fR
 .TP
 \fBenumports command (G)\fR
 The concept of a "port" is fairly foreign
-to UNIX hosts.  Under Windows NT/2000 print servers, a port
+to UNIX hosts. Under Windows NT/2000 print servers, a port
 is associated with a port monitor and generally takes the form of
 a local port (i.e. LPT1:, COM1:, FILE:) or a remote port
-(i.e. LPD Port Monitor, etc...).  By default, Samba has only one
-port defined--"Samba Printer Port".  Under 
-Windows NT/2000, all printers must have a valid port name.  
+(i.e. LPD Port Monitor, etc...). By default, Samba has only one
+port defined--"Samba Printer Port". Under 
+Windows NT/2000, all printers must have a valid port name. 
 If you wish to have a list of ports displayed (\fBsmbd
-\fR does not use a port name for anything) other than 
+\fRdoes not use a port name for anything) other than 
 the default "Samba Printer Port", you 
 can define \fIenumports command\fR to point to
 a program which should generate a list of ports, one per line,
-to standard output.  This listing will then be used in response
+to standard output. This listing will then be used in response
 to the level 1 and 2 EnumPorts() RPC.
 
 Default: \fBno enumports command\fR
 
 Example: \fBenumports command = /usr/bin/listports
-\fR
-.TP
+\fR.TP
 \fBexec (S)\fR
-This is a synonym for   \fIpreexec\fR.
+This is a synonym for  \fIpreexec\fR.
 .TP
 \fBfake directory create times (S)\fR
 NTFS and Windows VFAT file systems keep a create 
@@ -2707,11 +2573,11 @@ timestamp than the object files it contains.
 
 However, Unix time semantics mean that the create time 
 reported by Samba will be updated whenever a file is created or 
-or deleted in the directory.  NMAKE finds all object files in 
-the object directory.  The timestamp of the last one built is then 
-compared to the timestamp of the object directory.  If the 
+or deleted in the directory. NMAKE finds all object files in 
+the object directory. The timestamp of the last one built is then 
+compared to the timestamp of the object directory. If the 
 directory's timestamp if newer, then all object files
-will be rebuilt.  Enabling this option 
+will be rebuilt. Enabling this option 
 ensures directories always predate their contents and an NMAKE build 
 will proceed as expected.
 
@@ -2725,7 +2591,7 @@ that it is the only one accessing the file and it will aggressively
 cache file data. With some oplock types the client may even cache 
 file open/close operations. This can give enormous performance benefits.
 
-When you set \fBfake oplocks = yes\fR, \fBsmbd(8)\fR will
+When you set \fBfake oplocks = yes\fR, \fBsmbd(8)\fRwill
 always grant oplock requests no matter how many clients are using 
 the file.
 
@@ -2744,13 +2610,13 @@ Default: \fBfake oplocks = no\fR
 .TP
 \fBfollow symlinks (S)\fR
 This parameter allows the Samba administrator 
-to stop \fBsmbd(8)\fR 
+to stop \fBsmbd(8)\fR
 from following symbolic links in a particular share. Setting this 
 parameter to no prevents any file or directory 
 that is a symbolic link from being followed (the user will get an 
-error).  This option is very useful to stop users from adding a 
+error). This option is very useful to stop users from adding a 
 symbolic link to \fI/etc/passwd\fR in their home 
-directory for instance.  However it will slow filename lookups 
+directory for instance. However it will slow filename lookups 
 down slightly.
 
 This option is enabled (i.e. \fBsmbd\fR will 
@@ -2792,10 +2658,10 @@ bits to a created directory. This operation is done after the mode
 mask in the parameter \fIdirectory mask\fR is 
 applied.
 
-See also the parameter \fI  directory mask\fR for details on masking mode bits 
+See also the parameter \fI directory mask\fR for details on masking mode bits 
 on created directories.
 
-See also the \fI  inherit permissions\fR parameter.
+See also the \fI inherit permissions\fR parameter.
 
 Default: \fBforce directory mode = 000\fR
 
@@ -2805,7 +2671,7 @@ would force all created directories to have read and execute
 permissions set for 'group' and 'other' as well as the
 read/write/execute bits set for the 'user'.
 .TP
-\fBforce directory security mode (S)\fR
+\fBforce directory\fR
 This parameter controls what UNIX permission bits 
 can be modified when a Windows NT client is manipulating the UNIX 
 permission on a directory using the native NT security dialog box.
@@ -2822,13 +2688,13 @@ directory without restrictions.
 
 \fBNote\fR that users who can access the 
 Samba server through other means can easily bypass this restriction, 
-so it is primarily useful for standalone "appliance" systems.  
+so it is primarily useful for standalone "appliance" systems. 
 Administrators of most normal systems will probably want to leave
 it set as 0000.
 
-See also the \fI  directory security mask\fR,   \fIsecurity mask\fR, 
+See also the \fI directory security mask\fR,  \fIsecurity mask\fR, 
 \fIforce security mode
-\fR parameters.
+\fRparameters.
 
 Default: \fBforce directory security mode = 0\fR
 
@@ -2857,7 +2723,7 @@ primary group assigned to sys when accessing this Samba share. All
 other users will retain their ordinary primary group.
 
 If the \fIforce user
-\fR parameter is also set the group specified in 
+\fRparameter is also set the group specified in 
 \fIforce group\fR will override the primary group
 set in \fIforce user\fR.
 
@@ -2886,13 +2752,13 @@ with no restrictions.
 
 \fBNote\fR that users who can access 
 the Samba server through other means can easily bypass this restriction, 
-so it is primarily useful for standalone "appliance" systems.  
+so it is primarily useful for standalone "appliance" systems. 
 Administrators of most normal systems will probably want to leave
 this set to 0000.
 
-See also the \fI  force directory security mode\fR,
+See also the \fI force directory security mode\fR,
 \fIdirectory security
-mask\fR, \fI  security mask\fR parameters.
+mask\fR, \fI security mask\fR parameters.
 
 Default: \fBforce security mode = 0\fR
 
@@ -2908,7 +2774,7 @@ This user name only gets used once a connection is established.
 Thus clients still need to connect as a valid user and supply a 
 valid password. Once connected, all file operations will be performed 
 as the "forced user", no matter what username the client connected 
-as.  This can be very useful.
+as. This can be very useful.
 
 In Samba 2.0.5 and above this parameter also causes the 
 primary group of the forced user to be used as the primary group 
@@ -2917,7 +2783,6 @@ as the primary group of the connecting user (this was a bug).
 
 See also \fIforce group
 \fR
-
 Default: \fBno forced user\fR
 
 Example: \fBforce user = auser\fR
@@ -2926,7 +2791,7 @@ Example: \fBforce user = auser\fR
 This parameter allows the administrator to 
 configure the string that specifies the type of filesystem a share 
 is using that is reported by \fBsmbd(8)
-\fR when a client queries the filesystem type
+\fRwhen a client queries the filesystem type
 for a share. The default type is NTFS for 
 compatibility with Windows NT but this can be changed to other 
 strings such as Samba or FAT
@@ -2951,7 +2816,7 @@ group\fR.
 .TP
 \fBguest account (S)\fR
 This is a username which will be used for access 
-to services which are specified as \fI  guest ok\fR (see below). Whatever privileges this 
+to services which are specified as \fI guest ok\fR (see below). Whatever privileges this 
 user has will be available to any client connecting to the guest service. 
 Typically this user will exist in the password file, but will not
 have a valid login. The user account "ftp" is often a good choice 
@@ -2962,11 +2827,7 @@ One some systems the default guest account "nobody" may not
 be able to print. Use another account in this case. You should test 
 this by trying to log in as your guest user (perhaps by using the 
 \fBsu -\fR command) and trying to print using the 
-system print command such as \fBlpr(1)\fR or \fB  lp(1)\fR.
-
-This paramater does not accept % marcos, becouse
-many parts of the system require this value to be
-constant for correct operation
+system print command such as \fBlpr(1)\fR or \fB lp(1)\fR.
 
 Default: \fBspecified at compile time, usually 
 "nobody"\fR
@@ -2976,18 +2837,18 @@ Example: \fBguest account = ftp\fR
 \fBguest ok (S)\fR
 If this parameter is yes for 
 a service, then no password is required to connect to the service. 
-Privileges will be those of the \fI  guest account\fR.
+Privileges will be those of the \fI guest account\fR.
 
-See the section below on \fI  security\fR for more information about this option.
+See the section below on \fI security\fR for more information about this option.
 
 Default: \fBguest ok = no\fR
 .TP
 \fBguest only (S)\fR
 If this parameter is yes for 
 a service, then only guest connections to the service are permitted. 
-This parameter will have no effect if   \fIguest ok\fR is not set for the service.
+This parameter will have no effect if  \fIguest ok\fR is not set for the service.
 
-See the section below on \fI  security\fR for more information about this option.
+See the section below on \fI security\fR for more information about this option.
 
 Default: \fBguest only = no\fR
 .TP
@@ -2999,11 +2860,11 @@ Default: \fBhide dot files = yes\fR
 .TP
 \fBhide files(S)\fR
 This is a list of files or directories that are not 
-visible but are accessible.  The DOS 'hidden' attribute is applied 
+visible but are accessible. The DOS 'hidden' attribute is applied 
 to any files or directories that match.
 
 Each entry in the list must be separated by a '/', 
-which allows spaces to be included in the entry.  '*'
+which allows spaces to be included in the entry. '*'
 and '?' can be used to specify multiple files or directories 
 as in DOS wildcards.
 
@@ -3018,7 +2879,7 @@ as it will be forced to check all files and directories for a match
 as they are scanned.
 
 See also \fIhide 
-dot files\fR, \fI  veto files\fR and   \fIcase sensitive\fR.
+dot files\fR, \fI veto files\fR and  \fIcase sensitive\fR.
 
 Default: \fBno file are hidden\fR
 
@@ -3036,31 +2897,24 @@ users (root, wheel, floppy, etc) from remote clients.
 
 Default: \fBhide local users = no\fR
 .TP
-\fBhide unreadable (G)\fR
+\fBhide unreadable (S)\fR
 This parameter prevents clients from seeing the
 existance of files that cannot be read. Defaults to off.
 
 Default: \fBhide unreadable = no\fR
 .TP
-\fBhide unwriteable files (G)\fR
-This parameter prevents clients from seeing
-the existance of files that cannot be written to. Defaults to off.
-Note that unwriteable directories are shown as usual.
-
-Default: \fBhide unwriteable = no\fR
-.TP
 \fBhomedir map (G)\fR
 If\fInis homedir
-\fR is true, and \fBsmbd(8)\fR is also acting 
+\fRis true, and \fBsmbd(8)\fRis also acting 
 as a Win95/98 \fIlogon server\fR then this parameter 
 specifies the NIS (or YP) map from which the server for the user's 
-home directory should be extracted.  At present, only the Sun 
+home directory should be extracted. At present, only the Sun 
 auto.home map format is understood. The form of the map is:
 
 \fBusername server:/some/file/system\fR
 
 and the program will extract the servername from before 
-the first ':'.  There should probably be a better parsing system 
+the first ':'. There should probably be a better parsing system 
 that copes with different map formats and also Amd (another 
 automounter) maps.
 
@@ -3077,26 +2931,16 @@ Example: \fBhomedir map = amd.homedir\fR
 .TP
 \fBhost msdfs (G)\fR
 This boolean parameter is only available 
-if Samba has been configured and compiled with the \fB  --with-msdfs\fR option. If set to yes, 
-Samba will act as a Dfs server, and  allow Dfs-aware clients 
+if Samba has been configured and compiled with the \fB --with-msdfs\fR option. If set to yes, 
+Samba will act as a Dfs server, and allow Dfs-aware clients 
 to browse Dfs trees hosted on the server.
 
-See also the \fI  msdfs root\fR share  level  parameter.  For
-more  information  on  setting  up a Dfs tree on Samba,
-refer to msdfs_setup.html
+See also the \fI msdfs root\fR share level parameter. For
+more information on setting up a Dfs tree on Samba,
+refer to msdfs_setup.html.
 
 Default: \fBhost msdfs = no\fR
 .TP
-\fBhostname lookups (G)\fR
-Specifies whether samba should use (expensive)
-hostname lookups or use the ip addresses instead. An example place
-where hostname lookups are currently used is when checking 
-the \fBhosts deny\fR and \fBhosts allow\fR.
-
-Default: \fBhostname lookups = yes\fR
-
-Example: \fBhostname lookups = no\fR
-.TP
 \fBhosts allow (S)\fR
 A synonym for this parameter is \fIallow 
 hosts\fR.
@@ -3111,7 +2955,7 @@ service has a different setting.
 You can specify the hosts by name or IP number. For 
 example, you could restrict access to only the hosts on a 
 Class C subnet with something like \fBallow hosts = 150.203.5.
-\fR. The full syntax of the list is described in the man 
+\fR\&. The full syntax of the list is described in the man 
 page \fIhosts_access(5)\fR. Note that this man
 page may not be present on your system, so a brief description will
 be given here also.
@@ -3146,15 +2990,13 @@ deny access from one particular host
 Note that access still requires suitable user-level passwords.
 
 See \fBtestparm(1)\fR
- for a way of testing your host access to see if it does 
+for a way of testing your host access to see if it does 
 what you expect.
 
 Default: \fBnone (i.e., all hosts permitted access)
 \fR
-
 Example: \fBallow hosts = 150.203.5. myhost.mynet.edu.au
-\fR
-.TP
+\fR.TP
 \fBhosts deny (S)\fR
 The opposite of \fIhosts allow\fR 
 - hosts listed here are \fBNOT\fR permitted access to 
@@ -3164,21 +3006,19 @@ list takes precedence.
 
 Default: \fBnone (i.e., no hosts specifically excluded)
 \fR
-
 Example: \fBhosts deny = 150.203.4. badhost.mynet.edu.au
-\fR
-.TP
+\fR.TP
 \fBhosts equiv (G)\fR
 If this global parameter is a non-null string, 
 it specifies the name of a file to read for the names of hosts 
 and users who will be allowed access without specifying a password.
 
-This is not be confused with   \fIhosts allow\fR which is about hosts 
-access to services and is more useful for guest services. \fI  hosts equiv\fR may be useful for NT clients which will 
+This is not be confused with  \fIhosts allow\fR which is about hosts 
+access to services and is more useful for guest services. \fI hosts equiv\fR may be useful for NT clients which will 
 not supply passwords to Samba.
 
 \fBNOTE :\fR The use of \fIhosts equiv
-\fR can be a major security hole. This is because you are 
+\fRcan be a major security hole. This is because you are 
 trusting the PC to supply the correct username. It is very easy to 
 get a PC to supply a false username. I recommend that the 
 \fIhosts equiv\fR option be only used if you really 
@@ -3192,7 +3032,7 @@ Example: \fBhosts equiv = /etc/hosts.equiv\fR
 .TP
 \fBinclude (G)\fR
 This allows you to include one config file 
-inside another.  The file is included literally, as though typed 
+inside another. The file is included literally, as though typed 
 in place.
 
 It takes the standard substitutions, except \fI%u
@@ -3201,14 +3041,13 @@ It takes the standard substitutions, except \fI%u
 Default: \fBno file included\fR
 
 Example: \fBinclude = /usr/local/samba/lib/admin_smb.conf
-\fR
-.TP
+\fR.TP
 \fBinherit acls (S)\fR
 This parameter can be used to ensure
 that if default acls exist on parent directories,
 they are always honored when creating a subdirectory.
 The default behavior is to use the mode specified
-when creating the directory.  Enabling this option
+when creating the directory. Enabling this option
 sets the mode to 0777, thus guaranteeing that 
 default directory acls are propagated.
 
@@ -3216,7 +3055,7 @@ Default: \fBinherit acls = no\fR
 .TP
 \fBinherit permissions (S)\fR
 The permissions on new files and directories 
-are normally governed by \fI  create mask\fR,   \fIdirectory mask\fR, \fIforce create mode\fR
+are normally governed by \fI create mask\fR,  \fIdirectory mask\fR, \fIforce create mode\fR
 and \fIforce 
 directory mode\fR but the boolean inherit 
 permissions parameter overrides this.
@@ -3225,7 +3064,7 @@ New directories inherit the mode of the parent directory,
 including bits such as setgid.
 
 New files inherit their read/write bits from the parent 
-directory.  Their execute bits continue to be determined by
+directory. Their execute bits continue to be determined by
 \fImap archive\fR
 , \fImap hidden\fR
 and \fImap system\fR
@@ -3239,7 +3078,7 @@ many users, perhaps several thousand, to allow a single [homes]
 share to be used flexibly by each user.
 
 See also \fIcreate mask
-\fR, \fI  directory mask\fR,   \fIforce create mode\fR and \fIforce directory mode\fR
+\fR, \fI directory mask\fR,  \fIforce create mode\fR and \fIforce directory mode\fR
 \&.
 
 Default: \fBinherit permissions = no\fR
@@ -3271,29 +3110,35 @@ an IP/mask pair.
 \(bu
 a broadcast/mask pair.
 .RE
-
+.PP
 The "mask" parameters can either be a bit length (such 
 as 24 for a C class network) or a full netmask in dotted 
 decimal form.
-
+.PP
+.PP
 The "IP" parameters above can either be a full dotted 
 decimal IP address or a hostname which will be looked up via 
 the OS's normal hostname resolution mechanisms.
-
+.PP
+.PP
 For example, the following line:
-
+.PP
+.PP
 \fBinterfaces = eth0 192.168.2.10/24 192.168.3.10/255.255.255.0
-\fR
-
+\fR.PP
+.PP
 would configure three network interfaces corresponding 
 to the eth0 device and IP addresses 192.168.2.10 and 192.168.3.10. 
 The netmasks of the latter two interfaces would be set to 255.255.255.0.
-
+.PP
+.PP
 See also \fIbind 
 interfaces only\fR.
-
+.PP
+.PP
 Default: \fBall active interfaces except 127.0.0.1 
 that are broadcast capable\fR
+.PP
 .TP
 \fBinvalid users (S)\fR
 This is a list of users that should not be allowed 
@@ -3320,13 +3165,12 @@ The current servicename is substituted for \fI%S\fR.
 This is useful in the [homes] section.
 
 See also \fIvalid users
-\fR.
+\fR\&.
 
 Default: \fBno invalid users\fR
 
 Example: \fBinvalid users = root fred admin @wheel
-\fR
-.TP
+\fR.TP
 \fBkeepalive (G)\fR
 The value of the parameter (an integer) represents 
 the number of seconds between \fIkeepalive\fR 
@@ -3348,9 +3192,9 @@ For UNIXes that support kernel based \fIoplocks\fR
 allows the use of them to be turned on or off.
 
 Kernel oplocks support allows Samba \fIoplocks
-\fR to be broken whenever a local UNIX process or NFS operation 
+\fRto be broken whenever a local UNIX process or NFS operation 
 accesses a file that \fBsmbd(8)\fR
- has oplocked. This allows complete data consistency between 
+has oplocked. This allows complete data consistency between 
 SMB/CIFS, NFS and local file access (and is a \fBvery\fR 
 cool feature :-).
 
@@ -3360,12 +3204,12 @@ You should never need to touch this parameter.
 
 See also the \fIoplocks\fR
 and \fIlevel2 oplocks
-\fR parameters.
+\fRparameters.
 
 Default: \fBkernel oplocks = yes\fR
 .TP
 \fBlanman auth (G)\fR
-This parameter determines whether or not smbd will
+This parameter determines whether or not smbdwill
 attempt to authenticate users using the LANMAN password hash.
 If disabled, only clients which support NT password hashes (e.g. Windows 
 NT/2000 clients, smbclient, etc... but not Windows 95/98 or the MS DOS 
@@ -3389,8 +3233,8 @@ The \fIldap admin dn\fR defines the Distinguished
 Name (DN) name used by Samba to contact the ldap server when retreiving 
 user account information. The \fIldap
 admin dn\fR is used in conjunction with the admin dn password
-stored in the \fIprivate/secrets.tdb\fR file.  See the
-\fBsmbpasswd(8)\fR man
+stored in the \fIprivate/secrets.tdb\fR file. See the
+\fBsmbpasswd(8)\fRman
 page for more information on how to accmplish this.
 
 Default : \fBnone\fR
@@ -3398,8 +3242,8 @@ Default : \fBnone\fR
 \fBldap filter (G)\fR
 This parameter specifies the RFC 2254 compliant LDAP search filter.
 The default is to match the login name with the uid 
-attribute for all entries matching the sambaAccount  
-objectclass.  Note that this filter should only return one entry.
+attribute for all entries matching the sambaAccount 
+objectclass. Note that this filter should only return one entry.
 
 Default : \fBldap filter = (&(uid=%u)(objectclass=sambaAccount))\fR
 .TP
@@ -3472,11 +3316,11 @@ parameters.
 Default: \fBlevel2 oplocks = yes\fR
 .TP
 \fBlm announce (G)\fR
-This parameter determines if   \fBnmbd(8)\fR will produce Lanman announce 
+This parameter determines if  \fBnmbd(8)\fRwill produce Lanman announce 
 broadcasts that are needed by OS/2 clients in order for them to see 
 the Samba server in their browse list. This parameter can have three 
 values, true, false, or
-auto. The default is auto.  
+auto. The default is auto. 
 If set to false Samba will never produce these 
 broadcasts. If set to true Samba will produce 
 Lanman announce broadcasts at a frequency set by the parameter 
@@ -3487,7 +3331,7 @@ then start sending them at a frequency set by the parameter
 \fIlm interval\fR.
 
 See also \fIlm interval
-\fR.
+\fR\&.
 
 Default: \fBlm announce = auto\fR
 
@@ -3495,9 +3339,9 @@ Example: \fBlm announce = yes\fR
 .TP
 \fBlm interval (G)\fR
 If Samba is set to produce Lanman announce 
-broadcasts needed by OS/2 clients (see the   \fIlm announce\fR parameter) then this 
+broadcasts needed by OS/2 clients (see the  \fIlm announce\fR parameter) then this 
 parameter defines the frequency in seconds with which they will be 
-made.  If this is set to zero then no Lanman announcements will be 
+made. If this is set to zero then no Lanman announcements will be 
 made despite the setting of the \fIlm announce\fR 
 parameter.
 
@@ -3517,12 +3361,12 @@ more details.
 Default: \fBload printers = yes\fR
 .TP
 \fBlocal master (G)\fR
-This option allows \fB  nmbd(8)\fR to try and become a local master browser 
-on a subnet. If set to false then \fB  nmbd\fR will not attempt to become a local master browser 
+This option allows \fB nmbd(8)\fRto try and become a local master browser 
+on a subnet. If set to false then \fB nmbd\fR will not attempt to become a local master browser 
 on a subnet and will also lose in all browsing elections. By
 default this value is set to true. Setting this value to true doesn't
 mean that Samba will \fBbecome\fR the local master 
-browser on a subnet, just that \fBnmbd\fR will \fB  participate\fR in elections for local master browser.
+browser on a subnet, just that \fBnmbd\fR will \fB participate\fR in elections for local master browser.
 
 Setting this value to false will cause \fBnmbd\fR
 \fBnever\fR to become a local master browser.
@@ -3530,11 +3374,11 @@ Setting this value to false will cause \fBnmbd\fR
 Default: \fBlocal master = yes\fR
 .TP
 \fBlock dir (G)\fR
-Synonym for \fI  lock directory\fR.
+Synonym for \fI lock directory\fR.
 .TP
 \fBlock directory (G)\fR
 This option specifies the directory where lock 
-files will be placed.  The lock files are used to implement the 
+files will be placed. The lock files are used to implement the 
 \fImax connections\fR
 option.
 
@@ -3545,10 +3389,10 @@ Example: \fBlock directory = /var/run/samba/locks\fR
 \fBlock spin count (G)\fR
 This parameter controls the number of times
 that smbd should attempt to gain a byte range lock on the 
-behalf of a client request.  Experiments have shown that
+behalf of a client request. Experiments have shown that
 Windows 2k servers do not reply with a failure if the lock
 could not be immediately granted, but try a few more times
-in case the lock could later be aquired.  This behavior
+in case the lock could later be aquired. This behavior
 is used to support PC database formats such as MS Access
 and FoxPro.
 
@@ -3556,7 +3400,7 @@ Default: \fBlock spin count = 2\fR
 .TP
 \fBlock spin time (G)\fR
 The time in microseconds that smbd should 
-pause before attempting to gain a failed lock.  See
+pause before attempting to gain a failed lock. See
 \fIlock spin 
 count\fR for more details.
 
@@ -3593,8 +3437,7 @@ This option takes the standard substitutions, allowing
 you to have separate log files for each user or machine.
 
 Example: \fBlog file = /usr/local/samba/var/log.%m
-\fR
-.TP
+\fR.TP
 \fBlog level (G)\fR
 The value of the parameter (a astring) allows 
 the debug level (logging level) to be specified in the 
@@ -3607,8 +3450,7 @@ The default will be the log level specified on
 the command line or level zero if none was specified.
 
 Example: \fBlog level = 3 passdb:5 auth:10 winbind:2
-\fR
-.TP
+\fR.TP
 \fBlogon drive (G)\fR
 This parameter specifies the local path to 
 which the home directory will be connected (see \fIlogon home\fR) 
@@ -3623,7 +3465,7 @@ Example: \fBlogon drive = h:\fR
 .TP
 \fBlogon home (G)\fR
 This parameter specifies the home directory 
-location when a Win95/98 or NT Workstation logs into a Samba PDC.  
+location when a Win95/98 or NT Workstation logs into a Samba PDC. 
 It allows you to do 
 
 C:\\> \fBNET USE H: /HOME\fR
@@ -3635,19 +3477,19 @@ you to have separate logon scripts for each user or machine.
 
 This parameter can be used with Win9X workstations to ensure 
 that roaming profiles are stored in a subdirectory of the user's 
-home directory.  This is done in the following way:
+home directory. This is done in the following way:
 
 \fBlogon home = \\\\%N\\%U\\profile\fR
 
 This tells Samba to return the above string, with 
 substitutions made when a client requests the info, generally 
-in a NetUserGetInfo request.  Win9X clients truncate the info to
+in a NetUserGetInfo request. Win9X clients truncate the info to
 \\\\server\\share when a user does \fBnet use /home\fR
 but use the whole string when dealing with profiles.
 
-Note that in prior versions of Samba, the   \fIlogon path\fR was returned rather than 
-\fIlogon home\fR.  This broke \fBnet use 
-/home\fR but allowed profiles outside the home directory.  
+Note that in prior versions of Samba, the  \fIlogon path\fR was returned rather than 
+\fIlogon home\fR. This broke \fBnet use 
+/home\fR but allowed profiles outside the home directory. 
 The current implementation is correct, and can be used for 
 profiles if you use the above trick.
 
@@ -3661,12 +3503,12 @@ Example: \fBlogon home = "\\\\remote_smb_server\\%U"\fR
 \fBlogon path (G)\fR
 This parameter specifies the home directory 
 where roaming profiles (NTuser.dat etc files for Windows NT) are 
-stored.  Contrary to previous versions of these manual pages, it has 
-nothing to do with Win 9X roaming profiles.  To find out how to 
-handle roaming profiles for Win 9X system, see the   \fIlogon home\fR parameter.
+stored. Contrary to previous versions of these manual pages, it has 
+nothing to do with Win 9X roaming profiles. To find out how to 
+handle roaming profiles for Win 9X system, see the  \fIlogon home\fR parameter.
 
 This option takes the standard substitutions, allowing you 
-to have separate logon scripts for each user or machine.  It also 
+to have separate logon scripts for each user or machine. It also 
 specifies the directory from which the "Application Data", 
 (\fIdesktop\fR, \fIstart menu\fR,
 \fInetwork neighborhood\fR, \fIprograms\fR 
@@ -3675,18 +3517,18 @@ your Windows NT client.
 
 The share and the path must be readable by the user for 
 the preferences and directories to be loaded onto the Windows NT
-client.  The share must be writeable when the user logs in for the first
+client. The share must be writeable when the user logs in for the first
 time, in order that the Windows NT client can create the NTuser.dat
 and other directories.
 
 Thereafter, the directories and any of the contents can, 
-if required, be made read-only.  It is not advisable that the 
+if required, be made read-only. It is not advisable that the 
 NTuser.dat file be made read-only - rename it to NTuser.man to 
 achieve the desired effect (a \fBMAN\fRdatory 
 profile). 
 
 Windows clients can sometimes maintain a connection to 
-the [homes] share, even though there is no user logged in.  
+the [homes] share, even though there is no user logged in. 
 Therefore, it is vital that the logon path does not include a 
 reference to the homes share (i.e. setting this parameter to
 \\%N\\%U\\profile_path will cause problems).
@@ -3704,22 +3546,22 @@ Example: \fBlogon path = \\\\PROFILESERVER\\PROFILE\\%U\fR
 \fBlogon script (G)\fR
 This parameter specifies the batch file (.bat) or 
 NT command file (.cmd) to be downloaded and run on a machine when 
-a user successfully logs in.  The file must contain the DOS 
+a user successfully logs in. The file must contain the DOS 
 style CR/LF line endings. Using a DOS-style editor to create the 
 file is recommended.
 
 The script must be a relative path to the [netlogon] 
-service.  If the [netlogon] service specifies a   \fIpath\fR of \fI/usr/local/samba/netlogon
+service. If the [netlogon] service specifies a  \fIpath\fR of \fI/usr/local/samba/netlogon
 \fR, and \fBlogon script = STARTUP.BAT\fR, then 
 the file that will be downloaded is:
 
 \fI/usr/local/samba/netlogon/STARTUP.BAT\fR
 
-The contents of the batch file are entirely your choice.  
+The contents of the batch file are entirely your choice. A 
 suggested command would be to add \fBNET TIME \\\\SERVER /SET 
 /YES\fR, to force every machine to synchronize clocks with 
-the same time server.  Another use would be to add \fBNET USE 
-U: \\\\SERVER\\UTILS\fR for commonly used utilities, or \fB  NET USE Q: \\\\SERVER\\ISO9001_QA\fR for example.
+the same time server. Another use would be to add \fBNET USE 
+U: \\\\SERVER\\UTILS\fR for commonly used utilities, or \fB NET USE Q: \\\\SERVER\\ISO9001_QA\fR for example.
 
 Note that it is particularly important not to allow write 
 access to the [netlogon] share, or to grant users write permission 
@@ -3749,18 +3591,18 @@ having a too low priority won't be sent to the printer.
 
 If a \fI%p\fR is given then the printer name 
 is put in its place. A \fI%j\fR is replaced with 
-the job number (an integer).  On HPUX (see \fIprinting=hpux
+the job number (an integer). On HPUX (see \fIprinting=hpux
 \fR), if the \fI-p%p\fR option is added 
 to the lpq command, the job will show up with the correct status, i.e. 
 if the job priority is lower than the set fence priority it will 
-have the PAUSED status, whereas if  the priority is equal or higher it 
+have the PAUSED status, whereas if the priority is equal or higher it 
 will have the SPOOLED or PRINTING status.
 
 Note that it is good practice to include the absolute path 
 in the lppause command as the PATH may not be available to the server.
 
 See also the \fIprinting
-\fR parameter.
+\fRparameter.
 
 Default: Currently no default value is given to 
 this string, unless the value of the \fIprinting\fR 
@@ -3773,13 +3615,13 @@ is SOFTQ, then the default is:
 
 \fBqstat -s -j%j -h\fR
 
-Example for HPUX: \fBlppause command = /usr/bin/lpalt  
+Example for HPUX: \fBlppause command = /usr/bin/lpalt 
 %p-%j -p0\fR
 .TP
 \fBlpq cache time (G)\fR
 This controls how long lpq info will be cached 
 for to prevent the \fBlpq\fR command being called too 
-often. A separate cache is kept for each variation of the \fB  lpq\fR command used by the system, so if you use different 
+often. A separate cache is kept for each variation of the \fB lpq\fR command used by the system, so if you use different 
 \fBlpq\fR commands for different users then they won't
 share cache information.
 
@@ -3794,7 +3636,7 @@ be advisable if your \fBlpq\fR command is very slow.
 A value of 0 will disable caching completely.
 
 See also the \fIprinting
-\fR parameter.
+\fRparameter.
 
 Default: \fBlpq cache time = 10\fR
 
@@ -3826,15 +3668,15 @@ command.
 
 Note that it is good practice to include the absolute path 
 in the \fIlpq command\fR as the \fB$PATH
-\fR may not be available to the server.  When compiled with
+\fRmay not be available to the server. When compiled with
 the CUPS libraries, no \fIlpq command\fR is
 needed because smbd will make a library call to obtain the 
 print queue listing.
 
 See also the \fIprinting
-\fR parameter.
+\fRparameter.
 
-Default: \fBdepends on the setting of \fI  printing\fB\fR
+Default: \fBdepends on the setting of \fI printing\fB\fR
 
 Example: \fBlpq command = /usr/bin/lpq -P%p\fR
 .TP
@@ -3846,7 +3688,7 @@ printing or spooling a specific print job.
 This command should be a program or script which takes 
 a printer name and job number to resume the print job. See 
 also the \fIlppause command
-\fR parameter.
+\fRparameter.
 
 If a \fI%p\fR is given then the printer name 
 is put in its place. A \fI%j\fR is replaced with 
@@ -3857,7 +3699,7 @@ in the \fIlpresume command\fR as the PATH may not
 be available to the server.
 
 See also the \fIprinting
-\fR parameter.
+\fRparameter.
 
 Default: Currently no default value is given 
 to this string, unless the value of the \fIprinting\fR 
@@ -3889,28 +3731,25 @@ path in the \fIlprm command\fR as the PATH may not be
 available to the server.
 
 See also the \fIprinting
-\fR parameter.
+\fRparameter.
 
 Default: \fBdepends on the setting of \fIprinting
 \fB\fR
-
 Example 1: \fBlprm command = /usr/bin/lprm -P%p %j
 \fR
-
 Example 2: \fBlprm command = /usr/bin/cancel %p-%j
-\fR
-.TP
+\fR.TP
 \fBmachine password timeout (G)\fR
 If a Samba server is a member of a Windows 
 NT Domain (see the security = domain) 
-parameter) then periodically a running   smbd(8) process will try and change the MACHINE ACCOUNT 
+parameter) then periodically a running  smbd(8)process will try and change the MACHINE ACCOUNT 
 PASSWORD stored in the TDB called \fIprivate/secrets.tdb
-\fR This parameter specifies how often this password 
+\fR\&. This parameter specifies how often this password 
 will be changed, in seconds. The default is one week (expressed in 
 seconds), the same as a Windows NT Domain member server.
 
 See also \fBsmbpasswd(8)
-\fR and the   security = domain) parameter.
+\fR, and the  security = domain) parameter.
 
 Default: \fBmachine password timeout = 604800\fR
 .TP
@@ -3921,12 +3760,11 @@ which will contain output created by a magic script (see the
 parameter below).
 
 Warning: If two clients use the same \fImagic script
-\fR in the same directory the output file content
+\fRin the same directory the output file content
 is undefined.
 
 Default: \fBmagic output = <magic script name>.out
 \fR
-
 Example: \fBmagic output = myfile.txt\fR
 .TP
 \fBmagic script (S)\fR
@@ -3940,7 +3778,7 @@ completion assuming that the user has the appropriate level
 of privilege and the file permissions allow the deletion.
 
 If the script generates output, output will be sent to 
-the file specified by the \fI  magic output\fR parameter (see above).
+the file specified by the \fI magic output\fR parameter (see above).
 
 Note that some shells are unable to interpret scripts 
 containing CR/LF instead of CR as 
@@ -3956,14 +3794,14 @@ Default: \fBNone. Magic scripts disabled.\fR
 Example: \fBmagic script = user.csh\fR
 .TP
 \fBmangle case (S)\fR
-See the section on   NAME MANGLING
+See the section on  NAME MANGLING
 
 Default: \fBmangle case = no\fR
 .TP
 \fBmangled map (S)\fR
 This is for those who want to directly map UNIX 
-file names which cannot be represented on Windows/DOS.  The mangling 
-of names is not always what is needed.  In particular you may have 
+file names which cannot be represented on Windows/DOS. The mangling 
+of names is not always what is needed. In particular you may have 
 documents with file extensions that differ between DOS and UNIX. 
 For example, under UNIX it is common to use \fI.html\fR 
 for HTML files, whereas under Windows/DOS \fI.htm\fR 
@@ -3975,7 +3813,7 @@ you would use:
 \fBmangled map = (*.html *.htm)\fR
 
 One very useful case is to remove the annoying \fI;1
-\fR off the ends of filenames on some CDROMs (only visible 
+\fRoff the ends of filenames on some CDROMs (only visible 
 under some UNIXes). To do this use a map of (*;1 *;).
 
 Default: \fBno mangled map\fR
@@ -3987,7 +3825,7 @@ This controls whether non-DOS names under UNIX
 should be mapped to DOS-compatible names ("mangled") and made visible, 
 or whether non-DOS names should simply be ignored.
 
-See the section on   NAME MANGLING for details on how to control the mangling process.
+See the section on  NAME MANGLING for details on how to control the mangling process.
 
 If mangling is used then the mangling algorithm is as follows:
 .RS
@@ -4025,40 +3863,29 @@ for other filenames, but with the leading dot removed and "___" as
 its extension regardless of actual original extension (that's three 
 underscores).
 .RE
-
+.PP
 The two-digit hash value consists of upper case 
 alphanumeric characters.
-
+.PP
+.PP
 This algorithm can cause name collisions only if files 
 in a directory share the same first five alphanumeric characters. 
 The probability of such a clash is 1/1300.
-
+.PP
+.PP
 The name mangling (if enabled) allows a file to be 
 copied between UNIX directories from Windows/DOS while retaining 
 the long UNIX filename. UNIX files can be renamed to a new extension 
 from Windows/DOS and will retain the same basename. Mangled names 
 do not change between sessions.
-
+.PP
+.PP
 Default: \fBmangled names = yes\fR
-.TP
-\fBmangling method (G)\fR
-controls the algorithm used for the generating
-the mangled names. Can take two different values, "hash" and
-"hash2". "hash" is  the default and is the algorithm that has been
-used in Samba for many years. "hash2" is a newer and considered
-a better algorithm (generates less collisions) in the names.
-However, many Win32 applications store the mangled names and so
-changing to the new algorithm must not be done
-lightly as these applications may break unless reinstalled.
-New installations of Samba may set the default to hash2.
-
-Default: \fBmangling method = hash\fR
-
-Example: \fBmangling method = hash2\fR
+.PP
 .TP
 \fBmangled stack (G)\fR
 This parameter controls the number of mangled names 
-that should be cached in the Samba server   smbd(8)
+that should be cached in the Samba server  smbd(8).
 
 This stack is a list of recently mangled base names 
 (extensions are only maintained if they are longer than 3 characters 
@@ -4088,15 +3915,15 @@ Example: \fBmangling char = ^\fR
 .TP
 \fBmap archive (S)\fR
 This controls whether the DOS archive attribute 
-should be mapped to the UNIX owner execute bit.  The DOS archive bit 
-is set when a file has been modified since its last backup.  One 
+should be mapped to the UNIX owner execute bit. The DOS archive bit 
+is set when a file has been modified since its last backup. One 
 motivation for this option it to keep Samba/your PC from making 
-any file it touches from becoming executable under UNIX.  This can 
+any file it touches from becoming executable under UNIX. This can 
 be quite annoying for shared source code, documents, etc...
 
 Note that this requires the \fIcreate mask\fR
 parameter to be set such that owner execute bit is not masked out 
-(i.e. it must include 100). See the parameter   \fIcreate mask\fR for details.
+(i.e. it must include 100). See the parameter  \fIcreate mask\fR for details.
 
 Default: \fBmap archive = yes\fR
 .TP
@@ -4106,7 +3933,7 @@ should be mapped to the UNIX world execute bit.
 
 Note that this requires the \fIcreate mask\fR 
 to be set such that the world execute bit is not masked out (i.e. 
-it must include 001). See the parameter   \fIcreate mask\fR for details.
+it must include 001). See the parameter  \fIcreate mask\fR for details.
 
 Default: \fBmap hidden = no\fR
 .TP
@@ -4116,17 +3943,17 @@ should be mapped to the UNIX group execute bit.
 
 Note that this requires the \fIcreate mask\fR 
 to be set such that the group execute bit is not masked out (i.e. 
-it must include 010). See the parameter   \fIcreate mask\fR for details.
+it must include 010). See the parameter  \fIcreate mask\fR for details.
 
 Default: \fBmap system = no\fR
 .TP
 \fBmap to guest (G)\fR
-This parameter is only useful in   security modes other than \fIsecurity = share\fR 
+This parameter is only useful in  security modes other than \fIsecurity = share\fR 
 - i.e. user, server, 
 and domain.
 
 This parameter can take three different values, which tell
-smbd(8) what to do with user 
+smbd(8)what to do with user 
 login requests that don't match a valid UNIX user in some way.
 
 The three settings are :
@@ -4141,7 +3968,7 @@ default.
 Bad User - Means user
 logins with an invalid password are rejected, unless the username 
 does not exist, in which case it is treated as a guest login and 
-mapped into the \fI   guest account\fR.
+mapped into the \fI guest account\fR.
 .TP 0.2i
 \(bu
 Bad Password - Means user logins 
@@ -4155,7 +3982,7 @@ that they got their password wrong. Helpdesk services will
 \fBhate\fR you if you set the \fImap to 
 guest\fR parameter this way :-).
 .RE
-
+.PP
 Note that this parameter is needed to set up "Guest" 
 share services when using \fIsecurity\fR modes other than 
 share. This is because in these modes the name of the resource being
@@ -4163,18 +3990,22 @@ requested is \fBnot\fR sent to the server until after
 the server has successfully authenticated the client so the server 
 cannot make authentication decisions at the correct time (connection 
 to the share) for "Guest" shares.
-
+.PP
+.PP
 For people familiar with the older Samba releases, this 
-parameter maps to the old compile-time setting of the   GUEST_SESSSETUP value in local.h.
-
+parameter maps to the old compile-time setting of the  GUEST_SESSSETUP value in local.h.
+.PP
+.PP
 Default: \fBmap to guest = Never\fR
-
+.PP
+.PP
 Example: \fBmap to guest = Bad User\fR
+.PP
 .TP
 \fBmax connections (S)\fR
 This option allows the number of simultaneous 
 connections to a service to be limited. If \fImax connections
-\fR is greater than 0 then connections will be refused if 
+\fRis greater than 0 then connections will be refused if 
 this number of connections to the service are already open. A value 
 of zero mean an unlimited number of connections may be made.
 
@@ -4230,7 +4061,7 @@ Default: \fBmax mux = 50\fR
 .TP
 \fBmax open files (G)\fR
 This parameter limits the maximum number of 
-open files that one smbd(8) file 
+open files that one smbd(8)file 
 serving process may have open for a client at any one time. The 
 default for this parameter is set very high (10,000) as Samba uses 
 only one bit per unopened file.
@@ -4244,7 +4075,7 @@ Default: \fBmax open files = 10000\fR
 \fBmax print jobs (S)\fR
 This parameter limits the maximum number of 
 jobs allowable in a Samba printer queue at any given moment.
-If this number is exceeded, \fB  smbd(8)\fR will remote "Out of Space" to the client.
+If this number is exceeded, \fB smbd(8)\fRwill remote "Out of Space" to the client.
 See all \fItotal
 print jobs\fR.
 
@@ -4268,7 +4099,7 @@ COREPLUS: Slight improvements on
 CORE for efficiency.
 .TP 0.2i
 \(bu
-LANMAN1: First \fB   modern\fR version of the protocol. Long filename
+LANMAN1: First \fB modern\fR version of the protocol. Long filename
 support.
 .TP 0.2i
 \(bu
@@ -4278,17 +4109,21 @@ LANMAN2: Updates to Lanman1 protocol.
 NT1: Current up to date version of 
 the protocol. Used by Windows NT. Known as CIFS.
 .RE
-
+.PP
 Normally this option should not be set as the automatic 
 negotiation phase in the SMB protocol takes care of choosing 
 the appropriate protocol.
-
+.PP
+.PP
 See also \fImin
 protocol\fR
-
+.PP
+.PP
 Default: \fBmax protocol = NT1\fR
-
+.PP
+.PP
 Example: \fBmax protocol = LANMAN1\fR
+.PP
 .TP
 \fBmax smbd processes (G)\fR
 This parameter limits the maximum number of 
@@ -4296,11 +4131,11 @@ This parameter limits the maximum number of
 processes concurrently running on a system and is intended
 as a stopgap to prevent degrading service to clients in the event
 that the server has insufficient resources to handle more than this
-number of connections.  Remember that under normal operating
-conditions, each user will have an smbd associated with him or her
+number of connections. Remember that under normal operating
+conditions, each user will have an smbdassociated with him or her
 to handle connections to all shares from a given host.
 
-Default: \fBmax smbd processes = 0\fR   ## no limit
+Default: \fBmax smbd processes = 0\fR ## no limit
 
 Example: \fBmax smbd processes = 1000\fR
 .TP
@@ -4315,10 +4150,10 @@ Default: \fBmax ttl = 259200\fR
 .TP
 \fBmax wins ttl (G)\fR
 This option tells nmbd(8)
- when acting as a WINS server (  \fIwins support = yes\fR) what the maximum
+when acting as a WINS server ( \fIwins support = yes\fR) what the maximum
 \&'time to live' of NetBIOS names that \fBnmbd\fR 
 will grant will be (in seconds). You should never need to change this
-parameter.  The default is 6 days (518400 seconds).
+parameter. The default is 6 days (518400 seconds).
 
 See also the \fImin 
 wins ttl\fR parameter.
@@ -4355,7 +4190,7 @@ your PCs may freeze when sending messages (they should recover
 after 30 seconds, hopefully).
 
 All messages are delivered as the global guest user. 
-The command takes the standard substitutions, although \fI  %u\fR won't work (\fI%U\fR may be better 
+The command takes the standard substitutions, although \fI %u\fR won't work (\fI%U\fR may be better 
 in this case).
 
 Apart from the standard substitutions, some additional 
@@ -4374,32 +4209,40 @@ the message was sent to (probably the server name).
 \fI%f\fR = who the message 
 is from.
 .RE
-
+.PP
 You could make this command send mail, or whatever else 
 takes your fancy. Please let us know of any really interesting 
 ideas you have.
-
+.PP
+.PP
 Here's a way of sending the messages as mail to root:
-
+.PP
+.PP
 \fBmessage command = /bin/mail -s 'message from %f on 
 %m' root < %s; rm %s\fR
-
+.PP
+.PP
 If you don't have a message command then the message 
 won't be delivered and Samba will tell the sender there was 
 an error. Unfortunately WfWg totally ignores the error code 
 and carries on regardless, saying that the message was delivered.
-
+.PP
+.PP
 If you want to silently delete it then try:
-
+.PP
+.PP
 \fBmessage command = rm %s\fR
-
+.PP
+.PP
 Default: \fBno message command\fR
-
+.PP
+.PP
 Example: \fBmessage command = csh -c 'xedit %s;
 rm %s' &\fR
+.PP
 .TP
 \fBmin passwd length (G)\fR
-Synonym for   \fImin password length\fR.
+Synonym for  \fImin password length\fR.
 .TP
 \fBmin password length (G)\fR
 This option sets the minimum length in characters 
@@ -4407,7 +4250,7 @@ of a plaintext password that \fBsmbd\fR will accept when performing
 UNIX password changing.
 
 See also \fIunix 
-password sync\fR,   \fIpasswd program\fR and \fIpasswd chat debug\fR
+password sync\fR,  \fIpasswd program\fR and \fIpasswd chat debug\fR
 \&.
 
 Default: \fBmin password length = 5\fR
@@ -4419,7 +4262,7 @@ a print job. It is specified in kilobytes. The default is 0, which
 means a user can always spool a print job.
 
 See also the \fIprinting
-\fR parameter.
+\fRparameter.
 
 Default: \fBmin print space = 0\fR
 
@@ -4427,57 +4270,47 @@ Example: \fBmin print space = 2000\fR
 .TP
 \fBmin protocol (G)\fR
 The value of the parameter (a string) is the 
-lowest SMB protocol dialect than Samba will support.  Please refer
+lowest SMB protocol dialect than Samba will support. Please refer
 to the \fImax protocol\fR
 parameter for a list of valid protocol names and a brief description
-of each.  You may also wish to refer to the C source code in
+of each. You may also wish to refer to the C source code in
 \fIsource/smbd/negprot.c\fR for a listing of known protocol
 dialects supported by clients.
 
 If you are viewing this parameter as a security measure, you should
 also refer to the \fIlanman 
-auth\fR parameter.  Otherwise, you should never need 
+auth\fR parameter. Otherwise, you should never need 
 to change this parameter.
 
 Default : \fBmin protocol = CORE\fR
 
-Example : \fBmin protocol = NT1\fR  # disable DOS 
+Example : \fBmin protocol = NT1\fR # disable DOS 
 clients
 .TP
 \fBmin wins ttl (G)\fR
 This option tells nmbd(8)
-when acting as a WINS server (\fI  wins support = yes\fR) what the minimum 'time to live' 
+when acting as a WINS server (\fI wins support = yes\fR) what the minimum 'time to live' 
 of NetBIOS names that \fBnmbd\fR will grant will be (in 
-seconds). You should never need to change this parameter.  The default 
+seconds). You should never need to change this parameter. The default 
 is 6 hours (21600 seconds).
 
 Default: \fBmin wins ttl = 21600\fR
 .TP
 \fBmsdfs root (S)\fR
 This boolean parameter is only available if 
-Samba is configured  and  compiled with the \fB  --with-msdfs\fR option.  If set to yes, 
-Samba treats the share as a Dfs root and  allows clients to browse 
+Samba is configured and compiled with the \fB --with-msdfs\fR option. If set to yes, 
+Samba treats the share as a Dfs root and allows clients to browse 
 the distributed file system tree rooted at the share directory. 
-Dfs links are specified  in  the share directory by symbolic 
+Dfs links are specified in the share directory by symbolic 
 links of the form \fImsdfs:serverA\\shareA,serverB\\shareB
-\fR and so on.  For more information on setting up a Dfs tree 
-on Samba,  refer to msdfs_setup.html
-
+\fRand so on. For more information on setting up a Dfs tree 
+on Samba, refer to msdfs_setup.html
+.
 
 See also \fIhost msdfs
 \fR
-
 Default: \fBmsdfs root = no\fR
 .TP
-\fBname cache timeout (G)\fR
-Specifies the number of seconds it takes before 
-entries in samba's hostname resolve cache time out. If 
-the timeout is set to 0. the caching is disabled.
-
-Default: \fBname cache timeout = 660\fR
-
-Example: \fBname cache timeout = 0\fR
-.TP
 \fBname resolve order (G)\fR
 This option is used by the programs in the Samba 
 suite to determine what naming services to use and in what order 
@@ -4491,7 +4324,7 @@ cause names to be resolved as follows :
 \(bu
 lmhosts : Lookup an IP 
 address in the Samba lmhosts file. If the line in lmhosts has 
-no name type attached to the NetBIOS name (see the lmhosts(5) for details) then
+no name type attached to the NetBIOS name (see the lmhosts(5)for details) then
 any name type matches for lookup.
 .TP 0.2i
 \(bu
@@ -4500,13 +4333,13 @@ name to IP address resolution, using the system \fI/etc/hosts
 \fR, NIS, or DNS lookups. This method of name resolution 
 is operating system depended for instance on IRIX or Solaris this 
 may be controlled by the \fI/etc/nsswitch.conf\fR 
-file.  Note that this method is only used if the NetBIOS name 
+file. Note that this method is only used if the NetBIOS name 
 type being queried is the 0x20 (server) name type, otherwise 
 it is ignored.
 .TP 0.2i
 \(bu
 wins : Query a name with 
-the IP address listed in the \fI   wins server\fR parameter.  If no WINS server has
+the IP address listed in the \fI wins server\fR parameter. If no WINS server has
 been specified this method will be ignored.
 .TP 0.2i
 \(bu
@@ -4516,19 +4349,20 @@ parameter. This is the least reliable of the name resolution
 methods as it depends on the target host being on a locally 
 connected subnet.
 .RE
-
+.PP
 Default: \fBname resolve order = lmhosts host wins bcast
-\fR
-
+\fR.PP
+.PP
 Example: \fBname resolve order = lmhosts bcast host
-\fR
-
+\fR.PP
+.PP
 This will cause the local lmhosts file to be examined 
 first, followed by a broadcast attempt, followed by a normal 
 system hostname lookup.
+.PP
 .TP
 \fBnetbios aliases (G)\fR
-This is a list of NetBIOS names that nmbd(8) will advertise as additional 
+This is a list of NetBIOS names that nmbd(8)will advertise as additional 
 names by which the Samba server is known. This allows one machine 
 to appear in browse lists under multiple names. If a machine is 
 acting as a browse server or logon server none 
@@ -4581,7 +4415,7 @@ being on a different server to the logon server and as
 long as a Samba daemon is running on the home directory server, 
 it will be mounted on the Samba client directly from the directory 
 server. When Samba is returning the home share to the client, it 
-will consult the NIS map specified in   \fIhomedir map\fR and return the server 
+will consult the NIS map specified in  \fIhomedir map\fR and return the server 
 listed there.
 
 Note that for this option to work there must be a working 
@@ -4593,8 +4427,8 @@ Default: \fBnis homedir = no\fR
 \fBnon unix account range (G)\fR
 The non unix account range parameter specifies 
 the range of 'user ids' that are allocated by the various 'non unix 
-account' passdb backends.  These backends allow
-the storage of passwords for users who don't exist in /etc/passwd.  
+account' passdb backends. These backends allow
+the storage of passwords for users who don't exist in /etc/passwd. 
 This is most often used for machine account creation. 
 This range of ids should have no existing local or NIS users within 
 it as strange conflicts can occur otherwise.
@@ -4605,12 +4439,11 @@ RID mapping does not conflict with normal users.
 
 Default: \fBnon unix account range = <empty string>
 \fR
-
 Example: \fBnon unix account range = 10000-20000\fR
 .TP
 \fBnt acl support (S)\fR
 This boolean parameter controls whether 
-smbd(8) will attempt to map 
+smbd(8)will attempt to map 
 UNIX permissions into Windows NT access control lists.
 This parameter was formally a global parameter in releases
 prior to 2.2.2.
@@ -4619,7 +4452,7 @@ Default: \fBnt acl support = yes\fR
 .TP
 \fBnt pipe support (G)\fR
 This boolean parameter controls whether 
-smbd(8) will allow Windows NT 
+smbd(8)will allow Windows NT 
 clients to connect to the NT SMB specific IPC$ 
 pipes. This is a developer debugging option and can be left
 alone.
@@ -4627,7 +4460,7 @@ alone.
 Default: \fBnt pipe support = yes\fR
 .TP
 \fBnt status support (G)\fR
-This boolean parameter controls whether smbd(8) will negotiate NT specific status
+This boolean parameter controls whether smbd(8)will negotiate NT specific status
 support with Windows NT/2k/XP clients. This is a developer
 debugging option and should be left alone.
 If this option is set to no then Samba offers
@@ -4642,18 +4475,18 @@ Default: \fBnt status support = yes\fR
 Allow or disallow client access to accounts 
 that have null passwords. 
 
-See also smbpasswd (5)
+See also smbpasswd (5).
 
 Default: \fBnull passwords = no\fR
 .TP
 \fBobey pam restrictions (G)\fR
 When Samba 2.2 is configured to enable PAM support
 (i.e. --with-pam), this parameter will control whether or not Samba
-should obey PAM's account and session management directives.  The 
+should obey PAM's account and session management directives. The 
 default behavior is to use PAM for clear text authentication only
-and to ignore any account or session management.  Note that Samba
+and to ignore any account or session management. Note that Samba
 always ignores PAM for authentication in the case of \fIencrypt passwords = yes\fR
-\&.  The reason is that PAM modules cannot support the challenge/response
+\&. The reason is that PAM modules cannot support the challenge/response
 authentication mechanism needed in the presence of SMB password encryption.
 
 Default: \fBobey pam restrictions = no\fR
@@ -4662,7 +4495,7 @@ Default: \fBobey pam restrictions = no\fR
 This is a boolean option that controls whether 
 connections with usernames not in the \fIuser\fR 
 list will be allowed. By default this option is disabled so that a 
-client can supply a username to be used by the server.  Enabling
+client can supply a username to be used by the server. Enabling
 this parameter will force the server to only user the login 
 names from the \fIuser\fR list and is only really
 useful in shave level
@@ -4681,7 +4514,7 @@ parameter.
 Default: \fBonly user = no\fR
 .TP
 \fBonly guest (S)\fR
-A synonym for \fI  guest only\fR.
+A synonym for \fI guest only\fR.
 .TP
 \fBoplock break wait time (G)\fR
 This is a tuning parameter added due to bugs in 
@@ -4699,11 +4532,11 @@ Default: \fBoplock break wait time = 0\fR
 .TP
 \fBoplock contention limit (S)\fR
 This is a \fBvery\fR advanced 
-smbd(8) tuning option to 
+smbd(8)tuning option to 
 improve the efficiency of the granting of oplocks under multiple 
 client contention for the same file.
 
-In brief it specifies a number, which causes smbd not to 
+In brief it specifies a number, which causes smbdnot to 
 grant an oplock even when requested if the approximate number of 
 clients contending for an oplock on the same file goes over this 
 limit. This causes \fBsmbd\fR to behave in a similar 
@@ -4721,43 +4554,34 @@ share. The oplock code can dramatically (approx. 30% or more) improve
 the speed of access to files on Samba servers. It allows the clients 
 to aggressively cache files locally and you may want to disable this 
 option for unreliable network environments (it is turned on by 
-default in Windows NT Servers).  For more information see the file 
+default in Windows NT Servers). For more information see the file 
 \fISpeed.txt\fR in the Samba \fIdocs/\fR 
 directory.
 
 Oplocks may be selectively turned off on certain files with a 
-share. See the \fI  veto oplock files\fR parameter. On some systems 
+share. See the \fI veto oplock files\fR parameter. On some systems 
 oplocks are recognized by the underlying operating system. This 
 allows data synchronization between all access to oplocked files, 
 whether it be via Samba or NFS or a local UNIX process. See the 
 \fIkernel oplocks\fR parameter for details.
 
 See also the \fIkernel 
-oplocks\fR and \fI  level2 oplocks\fR parameters.
+oplocks\fR and \fI level2 oplocks\fR parameters.
 
 Default: \fBoplocks = yes\fR
 .TP
-\fBntlm auth (G)\fR
-This parameter determines whether or not smbd will
-attempt to authenticate users using the NTLM password hash.
-If disabled, only the lanman password hashes will be used. 
-
-Please note that at least this option or \fBlanman auth\fR should be enabled in order to be able to log in.
-
-Default : \fBntlm auth = yes\fR
-.TP
 \fBos level (G)\fR
 This integer value controls what level Samba 
 advertises itself as for browse elections. The value of this 
-parameter determines whether nmbd(8) 
-has a chance of becoming a local master browser for the \fI  WORKGROUP\fR in the local broadcast area.
+parameter determines whether nmbd(8)
+has a chance of becoming a local master browser for the \fI WORKGROUP\fR in the local broadcast area.
 
 \fBNote :\fRBy default, Samba will win 
 a local master browsing election over all Microsoft operating 
-systems except a Windows NT 4.0/2000 Domain Controller.  This 
+systems except a Windows NT 4.0/2000 Domain Controller. This 
 means that a misconfigured Samba host can effectively isolate 
-a subnet for browsing purposes.  See \fIBROWSING.txt
-\fR in the Samba \fIdocs/\fR directory 
+a subnet for browsing purposes. See \fIBROWSING.txt
+\fRin the Samba \fIdocs/\fR directory 
 for details.
 
 Default: \fBos level = 20\fR
@@ -4767,7 +4591,7 @@ Example: \fBos level = 65 \fR
 \fBos2 driver map (G)\fR
 The parameter is used to define the absolute
 path to a file containing a mapping of Windows NT printer driver
-names to OS/2 printer driver names.  The format is:
+names to OS/2 printer driver names. The format is:
 
 <nt driver name> = <os2 driver 
 name>.<device name>
@@ -4778,17 +4602,16 @@ LaserJet 5L\fR.
 
 The need for the file is due to the printer driver namespace 
 problem described in the Samba 
-Printing HOWTO  For more details on OS/2 clients, please 
+Printing HOWTO. For more details on OS/2 clients, please 
 refer to the OS2-Client-HOWTO
- containing in the Samba documentation.
+containing in the Samba documentation.
 
 Default: \fBos2 driver map = <empty string>
-\fR
-.TP
+\fR.TP
 \fBpam password change (G)\fR
 With the addition of better PAM support in Samba 2.2, 
 this parameter, it is possible to use PAM's password change control 
-flag for Samba.  If enabled, then PAM will be used for password
+flag for Samba. If enabled, then PAM will be used for password
 changes when requested by an SMB client instead of the program listed in 
 \fIpasswd program\fR. 
 It should be possible to enable this without changing your 
@@ -4799,7 +4622,7 @@ Default: \fBpam password change = no\fR
 .TP
 \fBpanic action (G)\fR
 This is a Samba developer option that allows a 
-system command to be called when either   smbd(8) 
+system command to be called when either  smbd(8)
 crashes. This is usually used to draw attention to the fact that 
 a problem occurred.
 
@@ -4807,14 +4630,6 @@ Default: \fBpanic action = <empty string>\fR
 
 Example: \fBpanic action = "/bin/sleep 90000"\fR
 .TP
-\fBparanoid server security (G)\fR
-Some version of NT 4.x allow non-guest 
-users with a bad passowrd. When this option is enabled, samba will not 
-use a broken NT 4.x server as password server, but instead complain
-to the logs and exit.
-
-Default: \fBparanoid server security = yes\fR
-.TP
 \fBpassdb backend (G)\fR
 This option allows the administrator to chose which backends to retrieve and store passwords with. This allows (for example) both 
 smbpasswd and tdbsam to be used without a recompile. 
@@ -4822,8 +4637,8 @@ Multiple backends can be specified, seperated by spaces. The backends will be se
 Experimental backends must still be selected
 (eg --with-tdbsam) at configure time.
 
-This parameter is in two parts, the backend's name, and a 'location'
-string that has meaning only to that particular backed.  These are separated
+This paramater is in two parts, the backend's name, and a 'location'
+string that has meaning only to that particular backed. These are separated
 by a : character.
 
 Available backends can include:
@@ -4831,41 +4646,38 @@ Available backends can include:
 .TP 0.2i
 \(bu
 \fBsmbpasswd\fR - The default smbpasswd
-backend.  Takes a path to the smbpasswd file as an optional argument.
+backend. Takes a path to the smbpasswd file as an optional argument.
 .TP 0.2i
 \(bu
 \fBsmbpasswd_nua\fR - The smbpasswd
-backend, but with support for 'not unix accounts'.  
+backend, but with support for 'not unix accounts'. 
 Takes a path to the smbpasswd file as an optional argument.
 
-See also                         \fInon unix account range\fR
+See also  \fInon unix account range\fR
 .TP 0.2i
 \(bu
 \fBtdbsam\fR - The TDB based password storage
-backend.  Takes a path to the TDB as an optional argument (defaults to passdb.tdb 
-in the                         \fIprivate dir\fR directory.
+backend. Takes a path to the TDB as an optional argument (defaults to passdb.tdb 
+in the  \fIprivate dir\fR directory.
 .TP 0.2i
 \(bu
 \fBtdbsam_nua\fR - The TDB based password storage
-backend, with non unix account support.  Takes a path to the TDB as an optional argument (defaults to passdb.tdb 
-in the                         \fIprivate dir\fR directory.
+backend, with non unix account support. Takes a path to the TDB as an optional argument (defaults to passdb.tdb 
+in the  \fIprivate dir\fR directory.
 
-See also                         \fInon unix account range\fR
+See also  \fInon unix account range\fR
 .TP 0.2i
 \(bu
 \fBldapsam\fR - The LDAP based passdb 
-backend.  Takes an LDAP URL as an optional argument (defaults to 
+backend. Takes an LDAP URL as an optional argument (defaults to 
 \fBldap://localhost\fR)
 .TP 0.2i
 \(bu
 \fBldapsam_nua\fR - The LDAP based passdb 
-backend, with non unix account support.  Takes an LDAP URL as an optional argument (defaults to 
+backend, with non unix account support. Takes an LDAP URL as an optional argument (defaults to 
 \fBldap://localhost\fR)
 
-See also                         \fInon unix account range\fR
-.TP 0.2i
-\(bu
-\fBnisplussam\fR - The NIS+ based passdb backend. Takes name NIS domain as an optional argument. Only works with sun NIS+ servers. 
+See also  \fInon unix account range\fR
 .TP 0.2i
 \(bu
 \fBplugin\fR - Allows Samba to load an 
@@ -4887,6 +4699,7 @@ This backend should always be the last backend listed, since it contains all use
 the unix passdb and might 'override' mappings if specified earlier. It's meant to only return 
 accounts for users that aren't covered by the previous backends.
 .RE
+.PP
 
 Default: \fBpassdb backend = smbpasswd unixsam\fR
 
@@ -4898,9 +4711,9 @@ Example: \fBpassdb backend = plugin:/usr/local/samba/lib/my_passdb.so:my_plugin_
 .TP
 \fBpasswd chat (G)\fR
 This string controls the \fB"chat"\fR 
-conversation that takes places between smbd and the local password changing
+conversation that takes places between smbdand the local password changing
 program to change the user's password. The string describes a 
-sequence of response-receive pairs that   smbd(8) uses to determine what to send to the 
+sequence of response-receive pairs that  smbd(8)uses to determine what to send to the 
 \fIpasswd program\fR
 and what to expect back. If the expected output is not 
 received then the password is not changed.
@@ -4919,15 +4732,15 @@ this means that the passwd program must be
 executed on the NIS master.
 
 The string can contain the macro \fI%n\fR which is substituted 
-for the new password.  The chat sequence can also contain the standard 
-macros \\n, \\r,   \\t and \\s to give line-feed, 
-carriage-return, tab and space.  The chat sequence string can also contain 
+for the new password. The chat sequence can also contain the standard 
+macros \\n, \\r,  \\t and \\s to give line-feed, 
+carriage-return, tab and space. The chat sequence string can also contain 
 a '*' which matches any sequence of characters.
 Double quotes can be used to collect strings with spaces 
 in them into a single string.
 
 If the send string in any part of the chat sequence 
-is a full stop ".",  then no string is sent. Similarly, 
+is a full stop ".", then no string is sent. Similarly, 
 if the expect string is a full stop then no string is expected.
 
 If the \fIpam
@@ -4936,7 +4749,7 @@ may be matched in any order, and success is determined by the PAM result,
 not any particular output. The \\n macro is ignored for PAM conversions.
 
 See also \fIunix password 
-sync\fR, \fI  passwd program\fR ,  \fIpasswd chat debug\fR and   \fIpam password change\fR.
+sync\fR, \fI passwd program\fR , \fIpasswd chat debug\fR and  \fIpam password change\fR.
 
 Default: \fBpasswd chat = *new*password* %n\\n 
 *new*password* %n\\n *changed*\fR
@@ -4949,7 +4762,7 @@ changed*"\fR
 This boolean specifies if the passwd chat script 
 parameter is run in \fBdebug\fR mode. In this mode the 
 strings passed to and received from the passwd chat are printed 
-in the smbd(8) log with a 
+in the smbd(8)log with a 
 \fIdebug level\fR 
 of 100. This is a dangerous option as it will allow plaintext passwords 
 to be seen in the \fBsmbd\fR log. It is available to help 
@@ -4968,12 +4781,12 @@ Default: \fBpasswd chat debug = no\fR
 .TP
 \fBpasswd program (G)\fR
 The name of a program that can be used to set 
-UNIX user passwords.  Any occurrences of \fI%u\fR 
+UNIX user passwords. Any occurrences of \fI%u\fR 
 will be replaced with the user name. The user name is checked for 
 existence before calling the password changing program.
 
 Also note that many passwd programs insist in \fBreasonable
-\fR passwords, such as a minimum length, or the inclusion 
+\fRpasswords, such as a minimum length, or the inclusion 
 of mixed case chars and digits. This can pose a problem as some clients 
 (such as Windows for Workgroups) uppercase the password before sending 
 it.
@@ -4982,7 +4795,7 @@ it.
 password sync\fR parameter is set to true
 then this program is called \fBAS ROOT\fR 
 before the SMB password in the smbpasswd(5)
- file is changed. If this UNIX password change fails, then 
+file is changed. If this UNIX password change fails, then 
 \fBsmbd\fR will fail to change the SMB password also 
 (this is by design).
 
@@ -5001,18 +4814,18 @@ Example: \fBpasswd program = /sbin/npasswd %u\fR
 .TP
 \fBpassword level (G)\fR
 Some client/server combinations have difficulty 
-with mixed-case passwords.  One offending client is Windows for 
+with mixed-case passwords. One offending client is Windows for 
 Workgroups, which for some reason forces passwords to upper 
 case when using the LANMAN1 protocol, but leaves them alone when 
-using COREPLUS!  Another problem child is the Windows 95/98
-family of operating systems.  These clients upper case clear
+using COREPLUS! Another problem child is the Windows 95/98
+family of operating systems. These clients upper case clear
 text passwords even when NT LM 0.12 selected by the protocol
 negotiation request/response.
 
 This parameter defines the maximum number of characters 
 that may be upper case in passwords.
 
-For example, say the password given was "FRED". If \fI  password level\fR is set to 1, the following combinations 
+For example, say the password given was "FRED". If \fI password level\fR is set to 1, the following combinations 
 would be tried if "FRED" failed:
 
 "Fred", "fred", "fRed", "frEd","freD"
@@ -5040,13 +4853,13 @@ Example: \fBpassword level = 4\fR
 \fBpassword server (G)\fR
 By specifying the name of another SMB server (such 
 as a WinNT box) with this option, and using \fBsecurity = domain
-\fR or \fBsecurity = server\fR you can get Samba 
+\fRor \fBsecurity = server\fR you can get Samba 
 to do all its username/password validation via a remote server.
 
 This option sets the name of the password server to use. 
 It must be a NetBIOS name, so if the machine's NetBIOS name is 
 different from its Internet name then you may have to add its NetBIOS 
-name to the lmhosts  file which is stored in the same directory 
+name to the lmhosts file which is stored in the same directory 
 as the \fIsmb.conf\fR file.
 
 The name of the password server is looked up using the 
@@ -5078,9 +4891,9 @@ domain, then the list of machines in this
 option must be a list of Primary or Backup Domain controllers for the
 Domain or the character '*', as the Samba server is effectively
 in that domain, and will use cryptographically authenticated RPC calls
-to authenticate the user logging on. The advantage of using \fB  security = domain\fR is that if you list several hosts in the 
+to authenticate the user logging on. The advantage of using \fB security = domain\fR is that if you list several hosts in the 
 \fIpassword server\fR option then \fBsmbd
-\fR will try each in turn till it finds one that responds. This 
+\fRwill try each in turn till it finds one that responds. This 
 is useful in case your primary server goes down.
 
 If the \fIpassword server\fR option is set 
@@ -5101,26 +4914,29 @@ You may list several password servers in
 the \fIpassword server\fR parameter, however if an 
 \fBsmbd\fR makes a connection to a password server, 
 and then the password server fails, no more users will be able 
-to be authenticated from this \fBsmbd\fR.  This is a 
+to be authenticated from this \fBsmbd\fR. This is a 
 restriction of the SMB/CIFS protocol when in \fBsecurity = server
-\fR mode and cannot be fixed in Samba.
+\fRmode and cannot be fixed in Samba.
 .TP 0.2i
 \(bu
 If you are using a Windows NT server as your 
 password server then you will have to ensure that your users 
-are able to login from the Samba server, as when in \fB   security = server\fR  mode the network logon will appear to 
+are able to login from the Samba server, as when in \fB security = server\fR mode the network logon will appear to 
 come from there rather than from the users workstation.
 .RE
-
+.PP
 See also the \fIsecurity
-\fR parameter.
-
+\fRparameter.
+.PP
+.PP
 Default: \fBpassword server = <empty string>\fR
-
+.PP
+.PP
 Example: \fBpassword server = NT-PDC, NT-BDC1, NT-BDC2
-\fR
-
+\fR.PP
+.PP
 Example: \fBpassword server = *\fR
+.PP
 .TP
 \fBpath (S)\fR
 This parameter specifies a directory to which 
@@ -5141,7 +4957,7 @@ will be replaced by the NetBIOS name of the machine they are
 connecting from. These replacements are very useful for setting 
 up pseudo home directories for users.
 
-Note that this path will be based on   \fIroot dir\fR if one was specified.
+Note that this path will be based on  \fIroot dir\fR if one was specified.
 
 Default: \fBnone\fR
 
@@ -5149,7 +4965,7 @@ Example: \fBpath = /home/fred\fR
 .TP
 \fBpid directory (G)\fR
 This option specifies the directory where pid 
-files will be placed.  
+files will be placed. 
 
 Default: \fBpid directory = ${prefix}/var/locks\fR
 
@@ -5159,9 +4975,9 @@ Example: \fBpid directory = /var/run/\fR
 The \fBsmbd(8)\fR
 daemon maintains an database of file locks obtained by SMB clients.
 The default behavior is to map this internal database to POSIX
-locks.  This means that file locks obtained by SMB clients are 
+locks. This means that file locks obtained by SMB clients are 
 consistent with those seen by POSIX compliant applications accessing 
-the files via a non-SMB method (e.g. NFS or local file access).  
+the files via a non-SMB method (e.g. NFS or local file access). 
 You should never need to disable this parameter.
 
 Default: \fBposix locking = yes\fR
@@ -5210,8 +5026,8 @@ is an example:
 Of course, this could get annoying after a while :-)
 
 See also \fIpreexec close
-\fR and \fIpostexec
-\fR.
+\fRand \fIpostexec
+\fR\&.
 
 Default: \fBnone (no command executed)\fR
 
@@ -5221,23 +5037,23 @@ Example: \fBpreexec = echo \\"%u connected to %S from %m
 \fBpreexec close (S)\fR
 This boolean option controls whether a non-zero 
 return code from \fIpreexec
-\fR should close the service being connected to.
+\fRshould close the service being connected to.
 
 Default: \fBpreexec close = no\fR
 .TP
 \fBpreferred master (G)\fR
-This boolean parameter controls if nmbd(8) is a preferred master browser 
+This boolean parameter controls if nmbd(8)is a preferred master browser 
 for its workgroup.
 
 If this is set to true, on startup, \fBnmbd\fR 
 will force an election, and it will have a slight advantage in 
-winning the election.  It is recommended that this parameter is 
-used in conjunction with \fB\fI  domain master\fB = yes\fR, so that \fB  nmbd\fR can guarantee becoming a domain master.
+winning the election. It is recommended that this parameter is 
+used in conjunction with \fB\fI domain master\fB = yes\fR, so that \fB nmbd\fR can guarantee becoming a domain master.
 
 Use this option with caution, because if there are several 
 hosts (whether Samba servers, Windows 95 or NT) that are preferred 
 master browsers on the same subnet, they will each periodically 
-and continuously attempt to become the local master browser.  
+and continuously attempt to become the local master browser. 
 This will result in unnecessary broadcast traffic and reduced browsing
 capabilities.
 
@@ -5247,7 +5063,7 @@ See also \fIos level\fR
 Default: \fBpreferred master = auto\fR
 .TP
 \fBprefered master (G)\fR
-Synonym for \fI  preferred master\fR for people who cannot spell :-).
+Synonym for \fI preferred master\fR for people who cannot spell :-).
 .TP
 \fBpreload\fR
 This is a list of services that you want to be 
@@ -5256,7 +5072,7 @@ for homes and printers services that would otherwise not be
 visible.
 
 Note that if you just want all printers in your 
-printcap file loaded then the   \fIload printers\fR option is easier.
+printcap file loaded then the  \fIload printers\fR option is easier.
 
 Default: \fBno preloaded services\fR
 
@@ -5266,7 +5082,7 @@ Example: \fBpreload = fred lp colorlp\fR
 This controls if new filenames are created
 with the case that the client passes, or if they are forced to 
 be the \fIdefault case
-\fR.
+\fR\&.
 
 Default: \fBpreserve case = yes\fR
 
@@ -5303,9 +5119,9 @@ print job (in bytes)
 
 The print command \fBMUST\fR contain at least 
 one occurrence of \fI%s\fR or \fI%f
-\fR - the \fI%p\fR is optional. At the time 
+\fR- the \fI%p\fR is optional. At the time 
 a job is submitted, if no printer name is supplied the \fI%p
-\fR will be silently removed from the printer command.
+\fRwill be silently removed from the printer command.
 
 If specified in the [global] section, the print command given 
 will be used for any printable service that does not have its own 
@@ -5330,7 +5146,7 @@ will log a print job, print the file, then remove it. Note that
 
 You may have to vary this command considerably depending 
 on how you normally print files on your system. The default for 
-the parameter varies depending on the setting of the   \fIprinting\fR parameter.
+the parameter varies depending on the setting of the  \fIprinting\fR parameter.
 
 Default: For \fBprinting = BSD, AIX, QNX, LPRNG 
 or PLP :\fR
@@ -5345,12 +5161,12 @@ For \fBprinting = SOFTQ :\fR
 
 \fBprint command = lp -d%p -s %s; rm %s\fR
 
-For printing = CUPS :   If SAMBA is compiled against
+For printing = CUPS : If SAMBA is compiled against
 libcups, then printcap = cups 
 uses the CUPS API to
-submit jobs, etc.  Otherwise it maps to the System V
+submit jobs, etc. Otherwise it maps to the System V
 commands with the -oraw option for printing, i.e. it
-uses \fBlp -c -d%p -oraw; rm %s\fR.   
+uses \fBlp -c -d%p -oraw; rm %s\fR. 
 With \fBprinting = cups\fR,
 and if SAMBA is compiled against libcups, any manually 
 set print command will be ignored.
@@ -5359,7 +5175,7 @@ Example: \fBprint command = /usr/local/samba/bin/myprintscript
 %p %s\fR
 .TP
 \fBprint ok (S)\fR
-Synonym for   \fIprintable\fR.
+Synonym for  \fIprintable\fR.
 .TP
 \fBprintable (S)\fR
 If this parameter is yes, then 
@@ -5369,37 +5185,37 @@ specified for the service.
 Note that a printable service will ALWAYS allow writing 
 to the service path (user privileges permitting) via the spooling 
 of print data. The \fIwriteable
-\fR parameter controls only non-printing access to 
+\fRparameter controls only non-printing access to 
 the resource.
 
 Default: \fBprintable = no\fR
 .TP
 \fBprintcap (G)\fR
-Synonym for  \fI  printcap name\fR.
+Synonym for \fI printcap name\fR.
 .TP
 \fBprintcap name (G)\fR
 This parameter may be used to override the 
-compiled-in default printcap name used by the server (usually \fI  /etc/printcap\fR). See the discussion of the [printers] section above for reasons 
+compiled-in default printcap name used by the server (usually \fI /etc/printcap\fR). See the discussion of the [printers] section above for reasons 
 why you might want to do this.
 
 To use the CUPS printing interface set \fBprintcap name = cups
-\fR. This should be supplemented by an addtional setting 
+\fR\&. This should be supplemented by an addtional setting 
 printing = cups in the [global] 
-section.  \fBprintcap name = cups\fR will use the  
+section. \fBprintcap name = cups\fR will use the 
 "dummy" printcap created by CUPS, as specified in your CUPS
 configuration file.
 
 On System V systems that use \fBlpstat\fR to 
 list available printers you can use \fBprintcap name = lpstat
-\fR to automatically obtain lists of available printers. This 
+\fRto automatically obtain lists of available printers. This 
 is the default for systems that define SYSV at configure time in 
-Samba (this includes most System V based systems). If \fI  printcap name\fR is set to \fBlpstat\fR on 
+Samba (this includes most System V based systems). If \fI printcap name\fR is set to \fBlpstat\fR on 
 these systems then Samba will launch \fBlpstat -v\fR and 
 attempt to parse the output to obtain a printer list.
 
 A minimal printcap file would look something like this:
 
-
+.sp
 .nf
                print1|My Printer 1
                print2|My Printer 2
@@ -5407,6 +5223,7 @@ A minimal printcap file would look something like this:
                print4|My Printer 4
                print5|My Printer 5
                
+.sp
 .fi
 
 where the '|' separates aliases of a printer. The fact 
@@ -5435,9 +5252,9 @@ Example: \fBprinter admin = admin, @staff\fR
 \fBprinter driver (S)\fR
 \fBNote :\fRThis is a deprecated 
 parameter and will be removed in the next major release
-following version 2.2.  Please see the instructions in
+following version 2.2. Please see the instructions in
 the Samba 2.2. Printing
-HOWTO for more information
+HOWTOfor more information
 on the new method of loading printer drivers onto a Samba server.
 
 This option allows you to control the string 
@@ -5449,7 +5266,7 @@ system.
 You need to set this parameter to the exact string (case 
 sensitive) that describes the appropriate printer driver for your 
 system. If you don't know the exact string to use then you should 
-first try with no \fI  printer driver\fR option set and the client will 
+first try with no \fI printer driver\fR option set and the client will 
 give you a list of printer drivers. The appropriate strings are 
 shown in a scroll box after you have chosen the printer manufacturer.
 
@@ -5461,9 +5278,9 @@ Example: \fBprinter driver = HP LaserJet 4L\fR
 \fBprinter driver file (G)\fR
 \fBNote :\fRThis is a deprecated 
 parameter and will be removed in the next major release
-following version 2.2.  Please see the instructions in
+following version 2.2. Please see the instructions in
 the Samba 2.2. Printing
-HOWTO for more information
+HOWTOfor more information
 on the new method of loading printer drivers onto a Samba server.
 
 This parameter tells Samba where the printer driver 
@@ -5474,12 +5291,12 @@ to be found. If this is not set, the default is :
 /lib/printers.def\fR
 
 This file is created from Windows 95 \fImsprint.inf
-\fR files found on the Windows 95 client system. For more 
+\fRfiles found on the Windows 95 client system. For more 
 details on setting up serving of printer drivers to Windows 95 
 clients, see the outdated documentation file in the \fIdocs/\fR 
 directory, \fIPRINTER_DRIVER.txt\fR.
 
-See also \fI  printer driver location\fR.
+See also \fI printer driver location\fR.
 
 Default: \fBNone (set in compile).\fR
 
@@ -5489,9 +5306,9 @@ Example: \fBprinter driver file =
 \fBprinter driver location (S)\fR
 \fBNote :\fRThis is a deprecated 
 parameter and will be removed in the next major release
-following version 2.2.  Please see the instructions in
+following version 2.2. Please see the instructions in
 the Samba 2.2. Printing
-HOWTO for more information
+HOWTOfor more information
 on the new method of loading printer drivers onto a Samba server.
 
 This parameter tells clients of a particular printer 
@@ -5504,15 +5321,14 @@ to serve printer drivers to Windows 95 machines, this should be set to
 Where MACHINE is the NetBIOS name of your Samba server, 
 and PRINTER$ is a share you set up for serving printer driver 
 files. For more details on setting this up see the outdated documentation 
-file in the \fIdocs/\fR directory, \fI  PRINTER_DRIVER.txt\fR.
+file in the \fIdocs/\fR directory, \fI PRINTER_DRIVER.txt\fR.
 
-See also \fI  printer driver file\fR.
+See also \fI printer driver file\fR.
 
 Default: \fBnone\fR
 
 Example: \fBprinter driver location = \\\\MACHINE\\PRINTER$
-\fR
-.TP
+\fR.TP
 \fBprinter name (S)\fR
 This parameter specifies the name of the printer 
 to which print jobs spooled through a printable service will be sent.
@@ -5527,7 +5343,7 @@ on many systems)\fR
 Example: \fBprinter name = laserwriter\fR
 .TP
 \fBprinter (S)\fR
-Synonym for \fI  printer name\fR.
+Synonym for \fI printer name\fR.
 .TP
 \fBprinting (S)\fR
 This parameters controls how printer status 
@@ -5546,11 +5362,11 @@ QNX, SOFTQ,
 and CUPS.
 
 To see what the defaults are for the other print 
-commands when using the various options use the testparm(1) program.
+commands when using the various options use the testparm(1)program.
 
 This option can be set on a per printer basis
 
-See also the discussion in the   [printers] section.
+See also the discussion in the  [printers] section.
 .TP
 \fBprivate dir (G)\fR
 This parameters defines the directory
@@ -5560,7 +5376,7 @@ and \fIsecrets.tdb\fR.
 Default :\fBprivate dir = ${prefix}/private\fR
 .TP
 \fBprotocol (G)\fR
-Synonym for   \fImax protocol\fR.
+Synonym for  \fImax protocol\fR.
 .TP
 \fBpublic (S)\fR
 Synonym for \fIguest 
@@ -5587,14 +5403,13 @@ server.
 
 Default: \fBdepends on the setting of \fIprinting
 \fB\fR
-
 Example: \fBqueuepause command = disable %p\fR
 .TP
 \fBqueueresume command (S)\fR
 This parameter specifies the command to be 
 executed on the server host in order to resume the printer queue. It 
 is the command to undo the behavior that is caused by the 
-previous parameter (\fI  queuepause command\fR).
+previous parameter (\fI queuepause command\fR).
 
 This command should be a program or script which takes 
 a printer name as its only parameter and resumes the printer queue, 
@@ -5615,10 +5430,9 @@ server.
 Default: \fBdepends on the setting of \fIprinting\fB\fR
 
 Example: \fBqueuepause command = enable %p
-\fR
-.TP
+\fR.TP
 \fBread bmpx (G)\fR
-This boolean parameter controls whether smbd(8) will support the "Read 
+This boolean parameter controls whether smbd(8)will support the "Read 
 Block Multiplex" SMB. This is now rarely used and defaults to 
 no. You should never need to set this 
 parameter.
@@ -5630,9 +5444,9 @@ This is a list of users that are given read-only
 access to a service. If the connecting user is in this list then 
 they will not be given write access, no matter what the \fIwriteable\fR
 option is set to. The list can include group names using the 
-syntax described in the \fI  invalid users\fR parameter.
+syntax described in the \fI invalid users\fR parameter.
 
-See also the \fI  write list\fR parameter and the \fIinvalid users\fR
+See also the \fI write list\fR parameter and the \fIinvalid users\fR
 parameter.
 
 Default: \fBread list = <empty string>\fR
@@ -5655,7 +5469,7 @@ block size incorrectly or are incapable of supporting larger block
 sizes, and for these clients you may need to disable raw reads.
 
 In general this parameter should be viewed as a system tuning 
-tool and left severely alone. See also   \fIwrite raw\fR.
+tool and left severely alone. See also  \fIwrite raw\fR.
 
 Default: \fBread raw = yes\fR
 .TP
@@ -5683,17 +5497,8 @@ Default: \fBread size = 16384\fR
 
 Example: \fBread size = 8192\fR
 .TP
-\fBrealm (G)\fR
-This option specifies the kerberos realm to use. The realm is 
-used as the ADS equivalent of the NT4\fBdomain\fR. It
-is usually set to the DNS name of the kerberos server.
-
-Default: \fBrealm = \fR
-
-Example: \fBrealm = mysambabox.mycompany.com\fR
-.TP
 \fBremote announce (G)\fR
-This option allows you to setup nmbd(8) to periodically announce itself 
+This option allows you to setup nmbd(8)to periodically announce itself 
 to arbitrary IP addresses with an arbitrary workgroup name.
 
 This is useful if you want your Samba server to appear 
@@ -5720,10 +5525,9 @@ See the documentation file \fIBROWSING.txt\fR
 in the \fIdocs/\fR directory.
 
 Default: \fBremote announce = <empty string>
-\fR
-.TP
+\fR.TP
 \fBremote browse sync (G)\fR
-This option allows you to setup nmbd(8) to periodically request 
+This option allows you to setup nmbd(8)to periodically request 
 synchronization of browse lists with the master browser of a Samba 
 server that is on a remote segment. This option will allow you to 
 gain browse lists for multiple workgroups across routed networks. This 
@@ -5738,7 +5542,6 @@ For example:
 
 \fBremote browse sync = 192.168.2.255 192.168.4.255
 \fR
-
 the above line would cause \fBnmbd\fR to request 
 the master browser on the specified subnets or addresses to 
 synchronize their browse lists with the local server.
@@ -5751,39 +5554,38 @@ that the remote machine is available, is listening, nor that it
 is in fact the browse master on its segment.
 
 Default: \fBremote browse sync = <empty string>
-\fR
-.TP
+\fR.TP
 \fBrestrict anonymous (G)\fR
-This is a boolean parameter.  If it is true, then 
+This is a boolean parameter. If it is true, then 
 anonymous access to the server will be restricted, namely in the 
 case where the server is expecting the client to send a username, 
-but it doesn't.  Setting it to true will force these anonymous 
+but it doesn't. Setting it to true will force these anonymous 
 connections to be denied, and the client will be required to always 
 supply a username and password when connecting. Use of this parameter 
 is only recommended for homogeneous NT client environments.
 
 This parameter makes the use of macro expansions that rely
-on the username (%U, %G, etc) consistent.  NT 4.0 
+on the username (%U, %G, etc) consistent. NT 4.0 
 likes to use anonymous connections when refreshing the share list, 
 and this is a way to work around that.
 
 When restrict anonymous is true, all anonymous connections 
-are denied no matter what they are for.  This can effect the ability 
+are denied no matter what they are for. This can effect the ability 
 of a machine to access the Samba Primary Domain Controller to revalidate 
 its machine account after someone else has logged on the client 
-interactively.  The NT client will display a message saying that 
-the machine's account in  the domain doesn't exist or the password is 
-bad.  The best way to deal  with this is to reboot NT client machines 
-between interactive logons,  using "Shutdown and Restart", rather 
+interactively. The NT client will display a message saying that 
+the machine's account in the domain doesn't exist or the password is 
+bad. The best way to deal with this is to reboot NT client machines 
+between interactive logons, using "Shutdown and Restart", rather 
 than "Close all programs and logon as a different user".
 
 Default: \fBrestrict anonymous = no\fR
 .TP
 \fBroot (G)\fR
-Synonym for   \fIroot directory"\fR.
+Synonym for  \fIroot directory"\fR.
 .TP
 \fBroot dir (G)\fR
-Synonym for   \fIroot directory"\fR.
+Synonym for  \fIroot directory"\fR.
 .TP
 \fBroot directory (G)\fR
 The server will \fBchroot()\fR (i.e. 
@@ -5818,37 +5620,35 @@ parameter except that the command is run as root. This
 is useful for unmounting filesystems 
 (such as CDROMs) after a connection is closed.
 
-See also \fI  postexec\fR.
+See also \fI postexec\fR.
 
 Default: \fBroot postexec = <empty string>
-\fR
-.TP
+\fR.TP
 \fBroot preexec (S)\fR
 This is the same as the \fIpreexec\fR
 parameter except that the command is run as root. This 
 is useful for mounting filesystems (such as CDROMs) when a 
 connection is opened.
 
-See also \fI  preexec\fR and   \fIpreexec close\fR.
+See also \fI preexec\fR and  \fIpreexec close\fR.
 
 Default: \fBroot preexec = <empty string>
-\fR
-.TP
+\fR.TP
 \fBroot preexec close (S)\fR
 This is the same as the \fIpreexec close
-\fR parameter except that the command is run as root.
+\fRparameter except that the command is run as root.
 
-See also \fI  preexec\fR and   \fIpreexec close\fR.
+See also \fI preexec\fR and  \fIpreexec close\fR.
 
 Default: \fBroot preexec close = no\fR
 .TP
 \fBsecurity (G)\fR
 This option affects how clients respond to 
-Samba and is one of the most important settings in the \fI  smb.conf\fR file.
+Samba and is one of the most important settings in the \fI smb.conf\fR file.
 
 The option sets the "security mode bit" in replies to 
 protocol negotiations with smbd(8)
- to turn share level security on or off. Clients decide 
+to turn share level security on or off. Clients decide 
 based on this bit whether (and how) to transfer user and password 
 information to the server.
 
@@ -5858,7 +5658,7 @@ Windows NT.
 
 The alternatives are \fBsecurity = share\fR,
 \fBsecurity = server\fR or \fBsecurity = domain
-\fR.
+\fR\&.
 
 In versions of Samba prior to 2.0.0, the default was 
 \fBsecurity = share\fR mainly because that was
@@ -5884,20 +5684,19 @@ to setup guest shares with \fBsecurity = user\fR, see
 the \fImap to guest\fR
 parameter for details.
 
-It is possible to use \fBsmbd\fR in a \fB  hybrid mode\fR where it is offers both user and share 
-level security under different   \fINetBIOS aliases\fR. 
+It is possible to use \fBsmbd\fR in a \fB hybrid mode\fR where it is offers both user and share 
+level security under different  \fINetBIOS aliases\fR. 
 
 The different settings will now be explained.
 
 \fBSECURITY = SHARE
 \fR
-
 When clients connect to a share level security server they 
 need not log onto the server with a valid username and password before 
 attempting to connect to a shared resource (although modern clients 
 such as Windows 95/98 and Windows NT will send a logon request with 
 a username but no password when talking to a \fBsecurity = share
-\fR server). Instead, the clients send authentication information 
+\fRserver). Instead, the clients send authentication information 
 (passwords) on a per-share basis, at the time they attempt to connect 
 to that share.
 
@@ -5917,7 +5716,7 @@ client password is constructed using the following methods :
 \(bu
 If the \fIguest 
 only\fR parameter is set, then all the other 
-stages are missed and only the    \fIguest account\fR username is checked.
+stages are missed and only the  \fIguest account\fR username is checked.
 .TP 0.2i
 \(bu
 Is a username is sent with the share connection 
@@ -5926,7 +5725,7 @@ is added as a potential username.
 .TP 0.2i
 \(bu
 If the client did a previous \fBlogon
-\fR request (the SessionSetup SMB call) then the 
+\fRrequest (the SessionSetup SMB call) then the 
 username sent in this SMB will be added as a potential username.
 .TP 0.2i
 \(bu
@@ -5938,36 +5737,41 @@ The NetBIOS name of the client is added to
 the list as a potential username.
 .TP 0.2i
 \(bu
-Any users on the \fI   user\fR list are added as potential usernames.
+Any users on the \fI user\fR list are added as potential usernames.
 .RE
-
+.PP
 If the \fIguest only\fR parameter is 
 not set, then this list is then tried with the supplied password. 
 The first user for whom the password matches will be used as the 
 UNIX user.
-
+.PP
+.PP
 If the \fIguest only\fR parameter is 
 set, or no username can be determined then if the share is marked 
 as available to the \fIguest account\fR, then this 
 guest user will be used, otherwise access is denied.
-
+.PP
+.PP
 Note that it can be \fBvery\fR confusing 
 in share-level security as to which UNIX username will eventually
 be used in granting access.
-
-See also the section   NOTE ABOUT USERNAME/PASSWORD VALIDATION.
-
+.PP
+.PP
+See also the section  NOTE ABOUT USERNAME/PASSWORD VALIDATION.
+.PP
+.PP
 \fBSECURITY = USER
-\fR
-
+\fR.PP
+.PP
 This is the default security setting in Samba 2.2. 
 With user-level security a client must first "log-on" with a 
 valid username and password (which can be mapped using the \fIusername map\fR 
-parameter). Encrypted passwords (see the   \fIencrypted passwords\fR parameter) can also
-be used in this security mode. Parameters such as   \fIuser\fR and   \fIguest only\fR if set are then applied and 
+parameter). Encrypted passwords (see the  \fIencrypted passwords\fR parameter) can also
+be used in this security mode. Parameters such as  \fIuser\fR and  \fIguest only\fR if set are then applied and 
 may change the UNIX user to use on this connection, but only after 
 the user has been successfully authenticated.
-
+.PP
+.PP
 \fBNote\fR that the name of the resource being 
 requested is \fBnot\fR sent to the server until after 
 the server has successfully authenticated the client. This is why 
@@ -5975,12 +5779,14 @@ guest shares don't work in user level security without allowing
 the server to automatically map unknown users into the \fIguest account\fR. 
 See the \fImap to guest\fR
 parameter for details on doing this.
-
-See also the section   NOTE ABOUT USERNAME/PASSWORD VALIDATION.
-
+.PP
+.PP
+See also the section  NOTE ABOUT USERNAME/PASSWORD VALIDATION.
+.PP
+.PP
 \fBSECURITY = SERVER
-\fR
-
+\fR.PP
+.PP
 In this mode Samba will try to validate the username/password 
 by passing it to another SMB server, such as an NT box. If this 
 fails it will revert to \fBsecurity = user\fR, but note 
@@ -5990,12 +5796,14 @@ revert back to checking the UNIX password file, it must have a valid
 documentation file in the \fIdocs/\fR directory 
 \fIENCRYPTION.txt\fR for details on how to set this 
 up.
-
+.PP
+.PP
 \fBNote\fR that from the client's point of 
-view \fBsecurity = server\fR is the same as \fB  security = user\fR.  It only affects how the server deals 
+view \fBsecurity = server\fR is the same as \fB security = user\fR. It only affects how the server deals 
 with the authentication, it does not in any way affect what the 
 client sees.
-
+.PP
+.PP
 \fBNote\fR that the name of the resource being 
 requested is \fBnot\fR sent to the server until after 
 the server has successfully authenticated the client. This is why 
@@ -6003,32 +5811,38 @@ guest shares don't work in user level security without allowing
 the server to automatically map unknown users into the \fIguest account\fR. 
 See the \fImap to guest\fR
 parameter for details on doing this.
-
-See also the section   NOTE ABOUT USERNAME/PASSWORD VALIDATION.
-
+.PP
+.PP
+See also the section  NOTE ABOUT USERNAME/PASSWORD VALIDATION.
+.PP
+.PP
 See also the \fIpassword 
 server\fR parameter and the \fIencrypted passwords\fR
 parameter.
-
+.PP
+.PP
 \fBSECURITY = DOMAIN
-\fR
-
-This mode will only work correctly if smbpasswd(8) has been used to add this 
+\fR.PP
+.PP
+This mode will only work correctly if smbpasswd(8)has been used to add this 
 machine into a Windows NT Domain. It expects the \fIencrypted passwords\fR
 parameter to be set to true. In this 
 mode Samba will try to validate the username/password by passing
 it to a Windows NT Primary or Backup Domain Controller, in exactly 
 the same way that a Windows NT Server would do.
-
+.PP
+.PP
 \fBNote\fR that a valid UNIX user must still 
 exist as well as the account on the Domain Controller to allow 
 Samba to have a valid UNIX account to map file access to.
-
+.PP
+.PP
 \fBNote\fR that from the client's point 
 of view \fBsecurity = domain\fR is the same as \fBsecurity = user
-\fR. It only affects how the server deals with the authentication, 
+\fR\&. It only affects how the server deals with the authentication, 
 it does not in any way affect what the client sees.
-
+.PP
+.PP
 \fBNote\fR that the name of the resource being 
 requested is \fBnot\fR sent to the server until after 
 the server has successfully authenticated the client. This is why 
@@ -6036,7 +5850,8 @@ guest shares don't work in user level security without allowing
 the server to automatically map unknown users into the \fIguest account\fR. 
 See the \fImap to guest\fR
 parameter for details on doing this.
-
+.PP
+.PP
 \fBBUG:\fR There is currently a bug in the 
 implementation of \fBsecurity = domain\fR with respect 
 to multi-byte character set usernames. The communication with a 
@@ -6044,16 +5859,21 @@ Domain Controller must be done in UNICODE and Samba currently
 does not widen multi-byte user names to UNICODE correctly, thus 
 a multi-byte username will not be recognized correctly at the 
 Domain Controller. This issue will be addressed in a future release.
-
-See also the section   NOTE ABOUT USERNAME/PASSWORD VALIDATION.
-
+.PP
+.PP
+See also the section  NOTE ABOUT USERNAME/PASSWORD VALIDATION.
+.PP
+.PP
 See also the \fIpassword 
 server\fR parameter and the \fIencrypted passwords\fR
 parameter.
-
+.PP
+.PP
 Default: \fBsecurity = USER\fR
-
+.PP
+.PP
 Example: \fBsecurity = DOMAIN\fR
+.PP
 .TP
 \fBsecurity mask (S)\fR
 This parameter controls what UNIX permission 
@@ -6073,12 +5893,12 @@ a user to modify all the user/group/world permissions on a file.
 \fBNote\fR that users who can access the 
 Samba server through other means can easily bypass this 
 restriction, so it is primarily useful for standalone 
-"appliance" systems.  Administrators of most normal systems will 
+"appliance" systems. Administrators of most normal systems will 
 probably want to leave it set to 0777.
 
-See also the   \fIforce directory security mode\fR, 
+See also the  \fIforce directory security mode\fR, 
 \fIdirectory 
-security mask\fR,   \fIforce security mode\fR parameters.
+security mask\fR,  \fIforce security mode\fR parameters.
 
 Default: \fBsecurity mask = 0777\fR
 
@@ -6143,45 +5963,45 @@ This boolean parameter controls if new files
 which conform to 8.3 syntax, that is all in upper case and of 
 suitable length, are created upper case, or if they are forced 
 to be the \fIdefault case
-\fR. This  option can be use with \fBpreserve case = yes\fR
+\fR\&. This option can be use with \fBpreserve case = yes\fR
 to permit long filenames to retain their case, while short 
 names are lowered. 
 
-See the section on   NAME MANGLING.
+See the section on  NAME MANGLING.
 
 Default: \fBshort preserve case = yes\fR
 .TP
 \fBshow add printer wizard (G)\fR
 With the introduction of MS-RPC based printing support
 for Windows NT/2000 client in Samba 2.2, a "Printers..." folder will 
-appear on Samba hosts in the share listing.  Normally this folder will 
-contain an icon for the MS Add Printer Wizard (APW).  However, it is 
+appear on Samba hosts in the share listing. Normally this folder will 
+contain an icon for the MS Add Printer Wizard (APW). However, it is 
 possible to disable this feature regardless of the level of privilege 
 of the connected user.
 
 Under normal circumstances, the Windows NT/2000 client will 
 open a handle on the printer server with OpenPrinterEx() asking for
-Administrator privileges.  If the user does not have administrative
+Administrator privileges. If the user does not have administrative
 access on the print server (i.e is not root or a member of the 
 \fIprinter admin\fR group), the OpenPrinterEx() 
 call fails and the client makes another open call with a request for 
-a lower privilege level.  This should succeed, however the APW 
+a lower privilege level. This should succeed, however the APW 
 icon will not be displayed.
 
 Disabling the \fIshow add printer wizard\fR
 parameter will always cause the OpenPrinterEx() on the server
-to fail.  Thus the APW icon will never be displayed. \fB  Note :\fRThis does not prevent the same user from having 
+to fail. Thus the APW icon will never be displayed. \fB Note :\fRThis does not prevent the same user from having 
 administrative privilege on an individual printer.
 
 See also \fIaddprinter
-command\fR,   \fIdeleteprinter command\fR, \fIprinter admin\fR
+command\fR,  \fIdeleteprinter command\fR, \fIprinter admin\fR
 
 Default :\fBshow add printer wizard = yes\fR
 .TP
 \fBshutdown script (G)\fR
 \fBThis parameter only exists in the HEAD cvs branch\fR
 This a full path name to a script called by
-\fBsmbd(8)\fR that
+\fBsmbd(8)\fRthat
 should start a shutdown procedure.
 
 This command will be run as the user connected to the
@@ -6209,7 +6029,7 @@ Default: \fBNone\fR.
 Example: \fBabort shutdown script = /usr/local/samba/sbin/shutdown %m %t %r %f\fR
 
 Shutdown script example:
-
+.sp
 .nf
                #!/bin/bash
                
@@ -6219,6 +6039,7 @@ Shutdown script example:
 
                /sbin/shutdown $3 $4 +$time $1 &
                
+.sp
 .fi
 Shutdown does not return so we need to launch it in background.
 
@@ -6226,21 +6047,13 @@ See also \fIabort shutdown script\fR.
 .TP
 \fBsmb passwd file (G)\fR
 This option sets the path to the encrypted 
-smbpasswd file.  By default the path to the smbpasswd file 
+smbpasswd file. By default the path to the smbpasswd file 
 is compiled into Samba.
 
 Default: \fBsmb passwd file = ${prefix}/private/smbpasswd
 \fR
-
 Example: \fBsmb passwd file = /etc/samba/smbpasswd
-\fR
-.TP
-\fBsmb ports (G)\fR
-Specifies which ports the server should listen on
-for SMB traffic.
-
-Default: \fBsmb ports = 445 139\fR
-.TP
+\fR.TP
 \fBsocket address (G)\fR
 This option allows you to control what 
 address Samba will listen for connections on. This is used to 
@@ -6270,9 +6083,9 @@ will help).
 
 You may find that on some systems Samba will say 
 "Unknown socket option" when you supply an option. This means you 
-either incorrectly  typed it or you need to add an include file 
-to includes.h for your OS.  If the latter is the case please 
-send the patch to   samba@samba.org <URL:mailto:samba@samba.org>.
+either incorrectly typed it or you need to add an include file 
+to includes.h for your OS. If the latter is the case please 
+send the patch to  samba@samba.org <URL:mailto:samba@samba.org>.
 
 Any of the supported socket options may be combined 
 in any way you like, as long as your OS allows it.
@@ -6311,34 +6124,44 @@ SO_SNDLOWAT *
 \(bu
 SO_RCVLOWAT *
 .RE
-
+.PP
 Those marked with a \fB'*'\fR take an integer 
 argument. The others can optionally take a 1 or 0 argument to enable 
 or disable the option, by default they will be enabled if you 
 don't specify 1 or 0.
-
+.PP
+.PP
 To specify an argument use the syntax SOME_OPTION = VALUE 
 for example \fBSO_SNDBUF = 8192\fR. Note that you must 
 not have any spaces before or after the = sign.
-
+.PP
+.PP
 If you are on a local network then a sensible option 
 might be
-
+.PP
+.PP
 \fBsocket options = IPTOS_LOWDELAY\fR
-
+.PP
+.PP
 If you have a local network then you could try:
-
+.PP
+.PP
 \fBsocket options = IPTOS_LOWDELAY TCP_NODELAY\fR
-
+.PP
+.PP
 If you are on a wide area network then perhaps try 
 setting IPTOS_THROUGHPUT. 
-
+.PP
+.PP
 Note that several of the options may cause your Samba 
 server to fail completely. Use these options with caution!
-
+.PP
+.PP
 Default: \fBsocket options = TCP_NODELAY\fR
-
+.PP
+.PP
 Example: \fBsocket options = IPTOS_LOWDELAY\fR
+.PP
 .TP
 \fBsource environment (G)\fR
 This parameter causes Samba to set environment 
@@ -6350,7 +6173,7 @@ will set the environment variables from the output of the pipe.
 
 The contents of the file or the output of the pipe should 
 be formatted as the output of the standard Unix \fBenv(1)
-\fR command. This is of the form :
+\fRcommand. This is of the form :
 
 Example environment entry:
 
@@ -6360,17 +6183,16 @@ Default: \fBNo default value\fR
 
 Examples: \fBsource environment = |/etc/smb.conf.sh
 \fR
-
 Example: \fBsource environment = 
 /usr/local/smb_env_vars\fR
 .TP
 \fBuse spnego (G)\fR
-This variable controls controls whether samba will try to use Simple and Protected NEGOciation (as specified by rfc2478) with WindowsXP and Windows2000sp2 clients to agree upon an authentication mechanism.  As of samba 3.0alpha it must be set to "no" for these clients to join a samba domain controller.  It can be set to "yes" to allow samba to participate in an AD domain controlled by a Windows2000 domain controller.
+This variable controls controls whether samba will try to use Simple and Protected NEGOciation (as specified by rfc2478) with WindowsXP and Windows2000sp2 clients to agree upon an authentication mechanism. As of samba 3.0alpha it must be set to "no" for these clients to join a samba domain controller. It can be set to "yes" to allow samba to participate in an AD domain controlled by a Windows2000 domain controller.
 
-Default:  \fBuse spnego = yes\fR
+Default: \fBuse spnego = yes\fR
 .TP
 \fBstat cache (G)\fR
-This parameter determines if smbd(8) will use a cache in order to 
+This parameter determines if smbd(8)will use a cache in order to 
 speed up case insensitive name mappings. You should never need 
 to change this parameter.
 
@@ -6378,7 +6200,7 @@ Default: \fBstat cache = yes\fR
 .TP
 \fBstat cache size (G)\fR
 This parameter determines the number of 
-entries in the \fIstat cache\fR.  You should 
+entries in the \fIstat cache\fR. You should 
 never need to change this parameter.
 
 Default: \fBstat cache size = 50\fR
@@ -6436,7 +6258,7 @@ the process to be suspended until the kernel has ensured that
 all outstanding data in kernel disk buffers has been safely stored 
 onto stable storage. This is very slow and should only be done 
 rarely. Setting this parameter to no (the 
-default) means that smbd ignores the Windows applications requests for
+default) means that smbdignores the Windows applications requests for
 a sync call. There is only a possibility of losing data if the
 operating system itself that Samba is running on crashes, so there is
 little danger in this default setting. In addition, this fixes many
@@ -6462,7 +6284,7 @@ the write call returns. If this is false then the server will be
 guided by the client's request in each write call (clients can 
 set a bit indicating that a particular write should be synchronous). 
 If this is true then every write will be followed by a \fBfsync()
-\fR call to ensure the data is written to disk. Note that 
+\fRcall to ensure the data is written to disk. Note that 
 the \fIstrict sync\fR parameter must be set to
 yes in order for this parameter to have 
 any affect.
@@ -6478,10 +6300,10 @@ are logged onto the system syslog logging levels. Samba debug
 level zero maps onto syslog LOG_ERR, debug 
 level one maps onto LOG_WARNING, debug level 
 two maps onto LOG_NOTICE, debug level three 
-maps onto LOG_INFO. All higher levels are mapped to   LOG_DEBUG.
+maps onto LOG_INFO. All higher levels are mapped to  LOG_DEBUG.
 
 This parameter sets the threshold for sending messages 
-to syslog.  Only messages with debug level less than this value 
+to syslog. Only messages with debug level less than this value 
 will be sent to syslog.
 
 Default: \fBsyslog = 1\fR
@@ -6495,18 +6317,18 @@ Default: \fBsyslog only = no\fR
 .TP
 \fBtemplate homedir (G)\fR
 When filling out the user information for a Windows NT 
-user, the winbindd(8) daemon 
-uses this parameter to fill in the home directory for that user.  
+user, the winbindd(8)daemon 
+uses this parameter to fill in the home directory for that user. 
 If the string \fI%D\fR is present it is substituted 
-with the user's Windows NT domain name.  If the string \fI%U
-\fR is present it is substituted with the user's Windows 
+with the user's Windows NT domain name. If the string \fI%U
+\fRis present it is substituted with the user's Windows 
 NT user name.
 
 Default: \fBtemplate homedir = /home/%D/%U\fR
 .TP
 \fBtemplate shell (G)\fR
 When filling out the user information for a Windows NT 
-user, the winbindd(8) daemon 
+user, the winbindd(8)daemon 
 uses this parameter to fill in the login shell for that user.
 
 Default: \fBtemplate shell = /bin/false\fR
@@ -6522,43 +6344,30 @@ Default: \fBtime offset = 0\fR
 Example: \fBtime offset = 60\fR
 .TP
 \fBtime server (G)\fR
-This parameter determines if     
-nmbd(8) advertises itself as a time server to Windows 
+This parameter determines if  
+nmbd(8)advertises itself as a time server to Windows 
 clients.
 
 Default: \fBtime server = no\fR
 .TP
 \fBtimestamp logs (G)\fR
-Synonym for \fI  debug timestamp\fR.
+Synonym for \fI debug timestamp\fR.
 .TP
 \fBtotal print jobs (G)\fR
 This parameter accepts an integer value which defines
 a limit on the maximum number of print jobs that will be accepted 
-system wide at any given time.  If a print job is submitted
-by a client which will exceed this number, then smbd will return an 
-error indicating that no space is available on the server.  The 
-default value of 0 means that no such limit exists.  This parameter
+system wide at any given time. If a print job is submitted
+by a client which will exceed this number, then smbdwill return an 
+error indicating that no space is available on the server. The 
+default value of 0 means that no such limit exists. This parameter
 can be used to prevent a server from exceeding its capacity and is
-designed as a printing throttle.  See also 
+designed as a printing throttle. See also 
 \fImax print jobs\fR.
 
 Default: \fBtotal print jobs = 0\fR
 
 Example: \fBtotal print jobs = 5000\fR
 .TP
-\fBunicode (G)\fR
-Specifies whether Samba should try 
-to use unicode on the wire by default. 
-
-Default: \fBunicode = yes\fR
-.TP
-\fBunix charset (G)\fR
-Specifies the charset the unix machine 
-Samba runs on uses. Samba needs to know this in order to be able to 
-convert text to the charsets other SMB clients use.
-
-Default: \fBunix charset = ASCII\fR
-.TP
 \fBunix extensions(G)\fR
 This boolean parameter controls whether Samba 
 implments the CIFS UNIX extensions, as defined by HP. 
@@ -6580,7 +6389,7 @@ old UNIX password (as the SMB password change code has no
 access to the old password cleartext, only the new).
 
 See also \fIpasswd 
-program\fR, \fI  passwd chat\fR.
+program\fR, \fI passwd chat\fR.
 
 Default: \fBunix password sync = no\fR
 .TP
@@ -6612,29 +6421,29 @@ Default: \fBupdate encrypted = no\fR
 .TP
 \fBuse client driver (S)\fR
 This parameter applies only to Windows NT/2000
-clients.  It has no affect on Windows 95/98/ME clients.  When 
+clients. It has no affect on Windows 95/98/ME clients. When 
 serving a printer to Windows NT/2000 clients without first installing
 a valid printer driver on the Samba host, the client will be required
-to install a local printer driver.  From this point on, the client
+to install a local printer driver. From this point on, the client
 will treat the print as a local printer and not a network printer 
-connection.  This is much the same behavior that will occur
-when \fBdisable spoolss = yes\fR.  
+connection. This is much the same behavior that will occur
+when \fBdisable spoolss = yes\fR. 
 
 The differentiating 
 factor is that under normal circumstances, the NT/2000 client will 
-attempt to open the network printer using MS-RPC.  The problem is that
+attempt to open the network printer using MS-RPC. The problem is that
 because the client considers the printer to be local, it will attempt
 to issue the OpenPrinterEx() call requesting access rights associated 
 with the logged on user. If the user possesses local administator rights
 but not root privilegde on the Samba host (often the case), the OpenPrinterEx()
-call will fail.  The result is that the client will now display an "Access
+call will fail. The result is that the client will now display an "Access
 Denied; Unable to connect" message in the printer queue window (even though
-jobs may successfully be printed).  
+jobs may successfully be printed). 
 
 If this parameter is enabled for a printer, then any attempt
 to open the printer with the PRINTER_ACCESS_ADMINISTER right is mapped
-to PRINTER_ACCESS_USE instead.  Thus allowing the OpenPrinterEx()
-call to succeed.  \fBThis parameter MUST not be able enabled
+to PRINTER_ACCESS_USE instead. Thus allowing the OpenPrinterEx()
+call to succeed. \fBThis parameter MUST not be able enabled
 on a print share which has valid print driver installed on the Samba 
 server.\fR
 
@@ -6660,18 +6469,18 @@ will be read to find the names of hosts and users who will be allowed
 access without specifying a password.
 
 \fBNOTE:\fR The use of \fIuse rhosts
-\fR can be a major security hole. This is because you are 
+\fRcan be a major security hole. This is because you are 
 trusting the PC to supply the correct username. It is very easy to 
-get a PC to supply a false username. I recommend that the \fI  use rhosts\fR option be only used if you really know what 
+get a PC to supply a false username. I recommend that the \fI use rhosts\fR option be only used if you really know what 
 you are doing.
 
 Default: \fBuse rhosts = no\fR
 .TP
 \fBuser (S)\fR
-Synonym for \fI  username\fR.
+Synonym for \fI username\fR.
 .TP
 \fBusers (S)\fR
-Synonym for \fI  username\fR.
+Synonym for \fI username\fR.
 .TP
 \fBusername (S)\fR
 Multiple users may be specified in a comma-delimited 
@@ -6702,7 +6511,7 @@ so they cannot do anything that user cannot do.
 
 To restrict a service to a particular set of users you 
 can use the \fIvalid users
-\fR parameter.
+\fRparameter.
 
 If any of the usernames begin with a '@' then the name 
 will be looked up first in the NIS netgroups list (if Samba 
@@ -6784,7 +6593,7 @@ Using '!' is most useful when you have a wildcard mapping line
 later in the file.
 
 For example to map from the name admin 
-or administrator to the UNIX name   root you would use:
+or administrator to the UNIX name  root you would use:
 
 \fBroot = admin administrator\fR
 
@@ -6798,7 +6607,7 @@ map file.
 
 If your system supports the NIS NETGROUP option then 
 the netgroup database is checked before the \fI/etc/group
-\fR database for matching groups.
+\fRdatabase for matching groups.
 
 You can map Windows usernames that have spaces in them
 by using double quotes around the name. For example:
@@ -6813,19 +6622,20 @@ unix user sys, and map the rest to guest. Note the use of the
 \&'!' to tell Samba to stop processing if it gets a match on 
 that line.
 
-
+.sp
 .nf
                !sys = mary fred
                guest = *
                
+.sp
 .fi
 
 Note that the remapping is applied to all occurrences 
-of usernames. Thus if you connect to \\\\server\\fred and   fred is remapped to mary then you 
+of usernames. Thus if you connect to \\\\server\\fred and  fred is remapped to mary then you 
 will actually be connecting to \\\\server\\mary and will need to 
 supply a password suitable for mary not 
 fred. The only exception to this is the 
-username passed to the \fI  password server\fR (if you have one). The password 
+username passed to the \fI password server\fR (if you have one). The password 
 server will receive whatever username the client supplies without 
 modification.
 
@@ -6837,57 +6647,38 @@ they don't own the print job.
 Default: \fBno username map\fR
 
 Example: \fBusername map = /usr/local/samba/lib/users.map
-\fR
-.TP
+\fR.TP
 \fButmp (G)\fR
 This boolean parameter is only available if 
-Samba has been configured and compiled  with the option \fB  --with-utmp\fR. If set to true then Samba will attempt
+Samba has been configured and compiled with the option \fB --with-utmp\fR. If set to true then Samba will attempt
 to add utmp or utmpx records (depending on the UNIX system) whenever a
 connection is made to a Samba server. Sites may use this to record the
 user connecting to a Samba share.
 
 Due to the requirements of the utmp record, we
 are required to create a unique identifier for the
-incoming user.  Enabling this option creates an n^2
-algorithm to find this number.  This may impede
+incoming user. Enabling this option creates an n^2
+algorithm to find this number. This may impede
 performance on large installations. 
 
-See also the \fI  utmp directory\fR parameter.
+See also the \fI utmp directory\fR parameter.
 
 Default: \fButmp = no\fR
 .TP
 \fButmp directory(G)\fR
 This parameter is only available if Samba has 
-been configured and compiled with the option \fB  --with-utmp\fR. It specifies a directory pathname that is
+been configured and compiled with the option \fB --with-utmp\fR. It specifies a directory pathname that is
 used to store the utmp or utmpx files (depending on the UNIX system) that
-record user connections to a Samba server. See also the   \fIutmp\fR parameter. By default this is 
+record user connections to a Samba server. See also the  \fIutmp\fR parameter. By default this is 
 not set, meaning the system will use whatever utmp file the 
 native system is set to use (usually 
 \fI/var/run/utmp\fR on Linux).
 
 Default: \fBno utmp directory\fR
-
-Example: \fButmp directory = /var/run/utmp\fR
-.TP
-\fBwtmp directory(G)\fR
-This parameter is only available if Samba has 
-been configured and compiled with the option \fB  --with-utmp\fR. It specifies a directory pathname that is
-used to store the wtmp or wtmpx files (depending on the UNIX system) that
-record user connections to a Samba server. The difference with
-the utmp directory is the fact that user info is kept after a user 
-has logged out.
-See also the   \fIutmp\fR parameter. By default this is 
-not set, meaning the system will use whatever utmp file the 
-native system is set to use (usually 
-\fI/var/run/wtmp\fR on Linux).
-
-Default: \fBno wtmp directory\fR
-
-Example: \fBwtmp directory = /var/log/wtmp\fR
 .TP
 \fBvalid users (S)\fR
 This is a list of users that should be allowed 
-to login to this service. Names starting with '@', '+' and  '&'
+to login to this service. Names starting with '@', '+' and '&'
 are interpreted using the same rules as described in the 
 \fIinvalid users\fR parameter.
 
@@ -6896,25 +6687,23 @@ If a username is in both this list and the \fIinvalid
 users\fR list then access is denied for that user.
 
 The current servicename is substituted for \fI%S
-\fR. This is useful in the [homes] section.
+\fR\&. This is useful in the [homes] section.
 
 See also \fIinvalid users
 \fR
-
 Default: \fBNo valid users list (anyone can login)
 \fR
-
 Example: \fBvalid users = greg, @pcusers\fR
 .TP
 \fBveto files(S)\fR
 This is a list of files and directories that 
-are neither visible nor accessible.  Each entry in the list must 
+are neither visible nor accessible. Each entry in the list must 
 be separated by a '/', which allows spaces to be included 
 in the entry. '*' and '?' can be used to specify multiple files 
 or directories as in DOS wildcards.
 
 Each entry must be a unix path, not a DOS path and 
-must \fBnot\fR include the  unix directory 
+must \fBnot\fR include the unix directory 
 separator '/'.
 
 Note that the \fIcase sensitive\fR option 
@@ -6933,13 +6722,12 @@ of Samba, as it will be forced to check all files and directories
 for a match as they are scanned.
 
 See also \fIhide files
-\fR and \fI  case sensitive\fR.
+\fRand \fI case sensitive\fR.
 
 Default: \fBNo files or directories are vetoed.
 \fR
-
 Examples:
-
+.sp
 .nf
 ; Veto any files containing the word Security, 
 ; any ending in .tmp, and any directory containing the
@@ -6949,6 +6737,7 @@ veto files = /*Security*/*.tmp/*root*/
 ; Veto the Apple specific files that a NetAtalk server
 ; creates.
 veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
+.sp
 .fi
 .TP
 \fBveto oplock files (S)\fR
@@ -6971,31 +6760,21 @@ the line (either in the [global] section or in the section for
 the particular NetBench share :
 
 Example: \fBveto oplock files = /*.SEM/
-\fR
-.TP
-\fBvfs path (S)\fR
-This parameter specifies the directory
-to look in for vfs modules. The name of every \fBvfs object
-\fR will be prepended by this directory
-
-Default: \fBvfs path = \fR
-
-Example: \fBvfs path = /usr/lib/samba/vfs\fR
-.TP
+\fR.TP
 \fBvfs object (S)\fR
 This parameter specifies a shared object file that 
-is used for Samba VFS I/O operations.  By default, normal 
+is used for Samba VFS I/O operations. By default, normal 
 disk I/O operations are used but these can be overloaded 
-with a VFS object.  The Samba VFS layer is new to Samba 2.2 and 
+with a VFS object. The Samba VFS layer is new to Samba 2.2 and 
 must be enabled at compile time with --with-vfs.
 
 Default : \fBno value\fR
 .TP
 \fBvfs options (S)\fR
 This parameter allows parameters to be passed 
-to the vfs layer at initialization time.  The Samba VFS layer 
+to the vfs layer at initialization time. The Samba VFS layer 
 is new to Samba 2.2 and must be enabled at compile time 
-with --with-vfs.  See also \fI  vfs object\fR.
+with --with-vfs. See also \fI vfs object\fR.
 
 Default : \fBno value\fR
 .TP
@@ -7015,13 +6794,13 @@ to areas that are outside the directory tree being exported.
 
 Note that setting this parameter can have a negative 
 effect on your server performance due to the extra system calls 
-that Samba has to  do in order to perform the link checks.
+that Samba has to do in order to perform the link checks.
 
 Default: \fBwide links = yes\fR
 .TP
 \fBwinbind cache time (G)\fR
 This parameter specifies the number of seconds the
-winbindd(8) daemon will cache 
+winbindd(8)daemon will cache 
 user and group information before querying a Windows NT server 
 again.
 
@@ -7029,17 +6808,17 @@ Default: \fBwinbind cache type = 15\fR
 .TP
 \fBwinbind enum users (G)\fR
 On large installations using
-winbindd(8) it may be
+winbindd(8)it may be
 necessary to suppress the enumeration of users through the
-\fB setpwent()\fR,
+\fBsetpwent()\fR,
 \fBgetpwent()\fR and
-\fBendpwent()\fR group of system calls.  If
+\fBendpwent()\fR group of system calls. If
 the \fIwinbind enum users\fR parameter is
 false, calls to the \fBgetpwent\fR system call
 will not return any data. 
 
 \fBWarning:\fR Turning off user
-enumeration may cause some programs to behave oddly.  For
+enumeration may cause some programs to behave oddly. For
 example, the finger program relies on having access to the
 full user list when searching for matching
 usernames. 
@@ -7048,11 +6827,11 @@ Default: \fBwinbind enum users = yes \fR
 .TP
 \fBwinbind enum groups (G)\fR
 On large installations using
-winbindd(8) it may be
+winbindd(8)it may be
 necessary to suppress the enumeration of groups through the
-\fB setgrent()\fR,
+\fBsetgrent()\fR,
 \fBgetgrent()\fR and
-\fBendgrent()\fR group of system calls.  If
+\fBendgrent()\fR group of system calls. If
 the \fIwinbind enum groups\fR parameter is
 false, calls to the \fBgetgrent()\fR system
 call will not return any data. 
@@ -7064,19 +6843,18 @@ Default: \fBwinbind enum groups = yes \fR
 .TP
 \fBwinbind gid (G)\fR
 The winbind gid parameter specifies the range of group 
-ids that are allocated by the   winbindd(8) daemon.  This range of group ids should have no 
+ids that are allocated by the  winbindd(8)daemon. This range of group ids should have no 
 existing local or NIS groups within it as strange conflicts can 
 occur otherwise.
 
 Default: \fBwinbind gid = <empty string>
 \fR
-
 Example: \fBwinbind gid = 10000-20000\fR
 .TP
 \fBwinbind separator (G)\fR
 This parameter allows an admin to define the character 
 used when listing a username of the form of \fIDOMAIN
-\fR\\\fIuser\fR.  This parameter 
+\fR\\\fIuser\fR. This parameter 
 is only applicable when using the \fIpam_winbind.so\fR
 and \fInss_winbind.so\fR modules for UNIX services.
 
@@ -7090,27 +6868,25 @@ Example: \fBwinbind separator = +\fR
 .TP
 \fBwinbind uid (G)\fR
 The winbind gid parameter specifies the range of group 
-ids that are allocated by the   winbindd(8) daemon.  This range of ids should have no 
+ids that are allocated by the  winbindd(8)daemon. This range of ids should have no 
 existing local or NIS users within it as strange conflicts can 
 occur otherwise.
 
 Default: \fBwinbind uid = <empty string>
 \fR
-
 Example: \fBwinbind uid = 10000-20000\fR
 .TP
 \fBwinbind use default domain\fR
 .TP
 \fBwinbind use default domain\fR
-This parameter specifies whether the   winbindd(8)
-daemon should operate on users without domain component in their username.  
+This parameter specifies whether the  winbindd(8)
+daemon should operate on users without domain component in their username. 
 Users without a domain component are treated as is part of the winbindd server's 
-own domain.  While this does not benifit Windows users, it makes SSH, FTP and e-mail 
+own domain. While this does not benifit Windows users, it makes SSH, FTP and e-mail 
 function in a way much closer to the way they would in a native unix system.
 
 Default: \fBwinbind use default domain = <falseg> 
 \fR
-
 Example: \fBwinbind use default domain = true\fR
 .TP
 \fBwins hook (G)\fR
@@ -7124,8 +6900,7 @@ The wins hook parameter specifies the name of a script
 or executable that will be called as follows:
 
 \fBwins_hook operation name nametype ttl IP_list
-\fR
-.RS
+\fR.RS
 .TP 0.2i
 \(bu
 The first argument is the operation and is one 
@@ -7138,7 +6913,7 @@ as an add.
 \(bu
 The second argument is the NetBIOS name. If the 
 name is not a legal name then the wins hook is not called. 
-Legal names contain only  letters, digits, hyphens, underscores 
+Legal names contain only letters, digits, hyphens, underscores 
 and periods.
 .TP 0.2i
 \(bu
@@ -7154,21 +6929,22 @@ The fifth and subsequent arguments are the IP
 addresses currently registered for that name. If this list is 
 empty then the name should be deleted.
 .RE
-
+.PP
 An example script that calls the BIND dynamic DNS update 
 program \fBnsupdate\fR is provided in the examples 
 directory of the Samba source code. 
+.PP
 .TP
 \fBwins proxy (G)\fR
-This is a boolean that controls if nmbd(8) will respond to broadcast name 
-queries on behalf of  other hosts. You may need to set this 
+This is a boolean that controls if nmbd(8)will respond to broadcast name 
+queries on behalf of other hosts. You may need to set this 
 to yes for some older clients.
 
 Default: \fBwins proxy = no\fR
 .TP
 \fBwins server (G)\fR
 This specifies the IP address (or DNS name: IP 
-address for preference) of the WINS server that   nmbd(8) should register with. If you have a WINS server on 
+address for preference) of the WINS server that  nmbd(8)should register with. If you have a WINS server on 
 your network then you should set this to the WINS server's IP.
 
 You should point this at your WINS server if you have a
@@ -7186,8 +6962,8 @@ Default: \fBnot enabled\fR
 Example: \fBwins server = 192.9.200.1\fR
 .TP
 \fBwins support (G)\fR
-This boolean controls if the    
-nmbd(8) process in Samba will act as a WINS server. You should 
+This boolean controls if the  
+nmbd(8)process in Samba will act as a WINS server. You should 
 not set this to true unless you have a multi-subnetted network and 
 you wish a particular \fBnmbd\fR to be your WINS server. 
 Note that you should \fBNEVER\fR set this to true
@@ -7206,7 +6982,7 @@ Default: \fBset at compile time to WORKGROUP\fR
 Example: \fBworkgroup = MYGROUP\fR
 .TP
 \fBwritable (S)\fR
-Synonym for \fI  writeable\fR for people who can't spell :-).
+Synonym for \fI writeable\fR for people who can't spell :-).
 .TP
 \fBwrite cache size (S)\fR
 If this integer parameter is set to non-zero value,
@@ -7245,27 +7021,14 @@ Note that if a user is in both the read list and the
 write list then they will be given write access.
 
 See also the \fIread list
-\fR option.
+\fRoption.
 
 Default: \fBwrite list = <empty string>
 \fR
-
 Example: \fBwrite list = admin, root, @staff
-\fR
-.TP
-\fBwins partners (G)\fR
-A space separated list of partners' IP addresses for 
-WINS replication. WINS partners are always defined as push/pull 
-partners as defining only one way WINS replication is unreliable. 
-WINS replication is currently experimental and unreliable between 
-samba servers.
-
-Default: \fBwins partners = \fR
-
-Example: \fBwins partners = 192.168.0.1 172.16.1.2\fR
-.TP
+\fR.TP
 \fBwrite ok (S)\fR
-Synonym for \fI  writeable\fR.
+Synonym for \fI writeable\fR.
 .TP
 \fBwrite raw (G)\fR
 This parameter controls whether or not the server 
@@ -7275,7 +7038,7 @@ You should never need to change this parameter.
 Default: \fBwrite raw = yes\fR
 .TP
 \fBwriteable (S)\fR
-An inverted synonym is   \fIread only\fR.
+An inverted synonym is  \fIread only\fR.
 
 If this parameter is no, then users 
 of a service may not create or modify files in the service's 
@@ -7295,8 +7058,8 @@ problem - but be aware of the possibility.
 .PP
 On a similar note, many clients - especially DOS clients - 
 limit service names to eight characters. smbd(8)
- has no such limitation, but attempts to connect from such 
-clients will fail if they truncate the service names.  For this reason 
+has no such limitation, but attempts to connect from such 
+clients will fail if they truncate the service names. For this reason 
 you should probably keep your service names down to eight characters 
 in length.
 .PP
@@ -7311,14 +7074,14 @@ This man page is correct for version 2.2 of
 the Samba suite.
 .SH "SEE ALSO"
 .PP
-samba(7)
-\fBsmbpasswd(8)\fR
-\fBswat(8)\fR
-\fBsmbd(8)\fR 
-\fBnmbd(8)\fR 
-\fBsmbclient(1)\fR 
-\fBnmblookup(1)\fR
-\fBtestparm(1)\fR 
+samba(7),
+\fBsmbpasswd(8)\fR,
+\fBswat(8)\fR,
+\fBsmbd(8)\fR, 
+\fBnmbd(8)\fR, 
+\fBsmbclient(1)\fR, 
+\fBnmblookup(1)\fR,
+\fBtestparm(1)\fR, 
 \fBtestprns(1)\fR
 .SH "AUTHOR"
 .PP
@@ -7331,5 +7094,5 @@ The original Samba man pages were written by Karl Auer.
 The man page sources were converted to YODL format (another 
 excellent piece of Open Source software, available at
 ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0 
-release by Jeremy Allison.  The conversion to DocBook for 
+release by Jeremy Allison. The conversion to DocBook for 
 Samba 2.2 was done by Gerald Carter
index 765c9e527340e17b6eb45443038f12e2158760e5..641f2d4a9f19f2a54aa5ca2781f020434bbdecac 100644 (file)
@@ -1,22 +1,21 @@
-.\" This manpage has been automatically generated by docbook2man 
-.\" from a DocBook document.  This tool can be found at:
-.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/> 
+.\" This manpage has been automatically generated by docbook2man-spec
+.\" from a DocBook document.  docbook2man-spec can be found at:
+.\" <http://shell.ipoline.com/~elmert/hacks/docbook2X/> 
 .\" Please send any bug reports, improvements, comments, patches, 
 .\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "SMBCLIENT" "1" "20 augustus 2002" "" ""
+.TH "SMBCLIENT" "1" "08 May 2002" "" ""
 .SH NAME
 smbclient \- ftp-like client to access SMB/CIFS resources  on servers
 .SH SYNOPSIS
-
-\fBsmbclient\fR \fBservicename\fR [ \fBpassword\fR ] [ \fB-b <buffer size>\fR ] [ \fB-d debuglevel\fR ] [ \fB-D Directory\fR ] [ \fB-U username\fR ] [ \fB-W workgroup\fR ] [ \fB-M <netbios name>\fR ] [ \fB-m maxprotocol\fR ] [ \fB-A authfile\fR ] [ \fB-N\fR ] [ \fB-l logfile\fR ] [ \fB-L <netbios name>\fR ] [ \fB-I destinationIP\fR ] [ \fB-E <terminal code>\fR ] [ \fB-c <command string>\fR ] [ \fB-i scope\fR ] [ \fB-O <socket options>\fR ] [ \fB-p port\fR ] [ \fB-R <name resolve order>\fR ] [ \fB-s <smb config file>\fR ] [ \fB-T<c|x>IXFqgbNan\fR ]
-
+.sp
+\fBsmbclient\fR \fBservicename\fR [ \fBpassword\fR ]  [ \fB-b <buffer size>\fR ]  [ \fB-d debuglevel\fR ]  [ \fB-D Directory\fR ]  [ \fB-U username\fR ]  [ \fB-W workgroup\fR ]  [ \fB-M <netbios name>\fR ]  [ \fB-m maxprotocol\fR ]  [ \fB-A authfile\fR ]  [ \fB-N\fR ]  [ \fB-l logfile\fR ]  [ \fB-L <netbios name>\fR ]  [ \fB-I destinationIP\fR ]  [ \fB-E <terminal code>\fR ]  [ \fB-c <command string>\fR ]  [ \fB-i scope\fR ]  [ \fB-O <socket options>\fR ]  [ \fB-p port\fR ]  [ \fB-R <name resolve order>\fR ]  [ \fB-s <smb config file>\fR ]  [ \fB-T<c|x>IXFqgbNan\fR ] 
 .SH "DESCRIPTION"
 .PP
-This tool is part of the  Samba <URL:samba.7.html> suite.
+This tool is part of the  Sambasuite.
 .PP
 \fBsmbclient\fR is a client that can 
 \&'talk' to an SMB/CIFS server. It offers an interface
-similar to that of the ftp program (see \fBftp(1)\fR).  
+similar to that of the ftp program (see \fBftp(1)\fR). 
 Operations include things like getting files from the server 
 to the local machine, putting files from the local machine to 
 the server, retrieving directory information from the server 
@@ -27,15 +26,14 @@ and so on.
 servicename is the name of the service 
 you want to use on the server. A service name takes the form
 \fI//server/service\fR where \fIserver
-\fR is the NetBIOS name of the SMB/CIFS server 
+\fRis the NetBIOS name of the SMB/CIFS server 
 offering the desired service and \fIservice\fR 
-is the name of the service offered.  Thus to connect to 
+is the name of the service offered. Thus to connect to 
 the service "printer" on the SMB/CIFS server "smbserver",
 you would use the servicename \fI//smbserver/printer
 \fR
-
 Note that the server name required is NOT necessarily 
-the IP (DNS) host name of the server !  The name required is 
+the IP (DNS) host name of the server ! The name required is 
 a NetBIOS server name, which may or may not be the
 same as the IP hostname of the machine running the server.
 
@@ -61,7 +59,7 @@ required, simply press ENTER to provide a null password.)
 
 Note: Some servers (including OS/2 and Windows for 
 Workgroups) insist on an uppercase password. Lowercase 
-or mixed case passwords may be rejected by these servers.   
+or mixed case passwords may be rejected by these servers. 
 
 Be cautious about including passwords in scripts.
 .TP
@@ -71,7 +69,7 @@ Specifies the location of the all important
 .TP
 \fB-O socket options\fR
 TCP socket options to set on the client 
-socket. See the socket options parameter in the \fI  smb.conf (5)\fR manpage for the list of valid 
+socket. See the socket options parameter in the \fI smb.conf (5)\fR manpage for the list of valid 
 options. 
 .TP
 \fB-R <name resolve order>\fR
@@ -87,7 +85,7 @@ cause names to be resolved as follows :
 \(bu
 lmhosts : Lookup an IP 
 address in the Samba lmhosts file. If the line in lmhosts has 
-no name type attached to the NetBIOS name (see the lmhosts(5) <URL:lmhosts.5.html> for details) then
+no name type attached to the NetBIOS name (see the lmhosts(5)for details) then
 any name type matches for lookup.
 .TP 0.2i
 \(bu
@@ -96,14 +94,14 @@ name to IP address resolution, using the system \fI/etc/hosts
 \fR, NIS, or DNS lookups. This method of name resolution 
 is operating system dependent, for instance on IRIX or Solaris this 
 may be controlled by the \fI/etc/nsswitch.conf\fR 
-file).  Note that this method is only used if the NetBIOS name 
+file). Note that this method is only used if the NetBIOS name 
 type being queried is the 0x20 (server) name type, otherwise 
 it is ignored.
 .TP 0.2i
 \(bu
 wins : Query a name with 
 the IP address listed in the \fIwins server\fR
-parameter.  If no WINS server has
+parameter. If no WINS server has
 been specified this method will be ignored.
 .TP 0.2i
 \(bu
@@ -114,15 +112,17 @@ parameter. This is the least reliable of the name resolution
 methods as it depends on the target host being on a locally 
 connected subnet.
 .RE
-
+.PP
 If this parameter is not set then the name resolve order 
-defined in the \fIsmb.conf\fR file parameter  
+defined in the \fIsmb.conf\fR file parameter 
 (name resolve order) will be used. 
-
+.PP
+.PP
 The default order is lmhosts, host, wins, bcast and without 
 this parameter or any entry in the \fIname resolve order
-\fR parameter of the \fIsmb.conf\fR file the name resolution
+\fRparameter of the \fIsmb.conf\fR file the name resolution
 methods will be attempted in this order. 
+.PP
 .TP
 \fB-M NetBIOS name\fR
 This options allows you to send messages, using 
@@ -139,7 +139,7 @@ The message is also automatically truncated if the message
 is over 1600 bytes, as this is the limit of the protocol. 
 
 One useful trick is to cat the message through
-\fBsmbclient\fR. For example: \fB  cat mymessage.txt | smbclient -M FRED \fR will 
+\fBsmbclient\fR. For example: \fB cat mymessage.txt | smbclient -M FRED \fR will 
 send the message in the file \fImymessage.txt\fR 
 to the machine FRED. 
 
@@ -147,7 +147,7 @@ You may also find the \fI-U\fR and
 \fI-I\fR options useful, as they allow you to 
 control the FROM and TO parts of the message. 
 
-See the message command parameter in the \fI  smb.conf(5)\fR for a description of how to handle incoming 
+See the message command parameter in the \fI smb.conf(5)\fR for a description of how to handle incoming 
 WinPopup messages in Samba. 
 
 \fBNote\fR: Copy WinPopup into the startup group 
@@ -197,7 +197,7 @@ data, and should only be used when investigating a problem.
 Levels above 3 are designed for use only by developers and 
 generate HUGE amounts of log data, most of which is extremely 
 cryptic. If \fIdebuglevel\fR is set to the letter 'A', then \fBall
-\fR  debug messages will be printed. This setting
+\fRdebug messages will be printed. This setting
 is for developers only (and people who \fBreally\fR want 
 to know how the code works internally). 
 
@@ -222,7 +222,7 @@ The base name is used to generate actual log file names.
 For example, if the name specified was "log", the debug file 
 would be \fIlog.client\fR.
 
-The log file generated is never removed by the client.   
+The log file generated is never removed by the client. 
 .TP
 \fB-h\fR
 Print the usage message for the client. 
@@ -267,11 +267,11 @@ a \fBPASSWD\fR environment variable from which
 to read the password. 
 
 A third option is to use a credentials file which 
-contains the plaintext of the domain name, username and password.  This 
+contains the plaintext of the domain name, username and password. This 
 option is mainly provided for scripts where the admin doesn't 
 wish to pass the credentials on the command line or via environment 
 variables. If this method is used, make certain that the permissions 
-on the file restrict access from unwanted users.  See the 
+on the file restrict access from unwanted users. See the 
 \fI-A\fR for more details. 
 
 Be cautious about including passwords in scripts or in 
@@ -284,14 +284,15 @@ it in directly.
 \fB-A filename\fR
 This option allows 
 you to specify a file from which to read the username, domain name, and 
-password used in the connection.  The format of the file is 
-
+password used in the connection. The format of the file is 
 
+.sp
 .nf
 username = <value> 
 password = <value>
 domain = <value>
                
+.sp
 .fi
 
 If the domain parameter is missing the current workgroup name
@@ -301,8 +302,8 @@ access from unwanted users.
 \fB-L\fR
 This option allows you to look at what services 
 are available on a server. You use it as \fBsmbclient -L 
-host\fR and a list should appear.  The \fI-I
-\fR option may be useful if your NetBIOS names don't 
+host\fR and a list should appear. The \fI-I
+\fRoption may be useful if your NetBIOS names don't 
 match your TCP/IP DNS host names or if you are trying to reach a 
 host on another network. 
 .TP
@@ -310,7 +311,7 @@ host on another network.
 This option tells \fBsmbclient\fR how to interpret 
 filenames coming from the remote server. Usually Asian language 
 multibyte UNIX implementations use different character sets than 
-SMB/CIFS servers (\fBEUC\fR instead of \fB  SJIS\fR for example). Setting this parameter will let 
+SMB/CIFS servers (\fBEUC\fR instead of \fB SJIS\fR for example). Setting this parameter will let 
 \fBsmbclient\fR convert between the UNIX filenames and 
 the SMB filenames correctly. This option has not been seriously tested 
 and may have some problems. 
@@ -333,7 +334,7 @@ servers.
 .TP
 \fB-T tar options\fR
 smbclient may be used to create \fBtar(1)
-\fR compatible backups of all the files on an SMB/CIFS
+\fRcompatible backups of all the files on an SMB/CIFS
 share. The secondary tar flags that can be given to this option 
 are : 
 .RS
@@ -360,18 +361,18 @@ their creation dates restored properly.
 \fII\fR - Include files and directories. 
 Is the default behavior when filenames are specified above. Causes 
 tar files to be included in an extract or create (and therefore 
-everything else to be excluded). See example below.  Filename globbing 
-works  in one of two ways.  See r below. 
+everything else to be excluded). See example below. Filename globbing 
+works in one of two ways. See r below. 
 .TP 0.2i
 \(bu
 \fIX\fR - Exclude files and directories. 
 Causes tar files to be excluded from an extract or create. See 
-example below.  Filename globbing works in one of two ways now. 
+example below. Filename globbing works in one of two ways now. 
 See \fIr\fR below. 
 .TP 0.2i
 \(bu
 \fIb\fR - Blocksize. Must be followed 
-by a valid (greater than zero) blocksize.  Causes tar file to be 
+by a valid (greater than zero) blocksize. Causes tar file to be 
 written out in blocksize*TBLOCK (usually 512 byte) blocks. 
 .TP 0.2i
 \(bu
@@ -381,14 +382,14 @@ files that have the archive bit set. Useful only with the
 .TP 0.2i
 \(bu
 \fIq\fR - Quiet. Keeps tar from printing 
-diagnostics as it works.  This is the same as tarmode quiet. 
+diagnostics as it works. This is the same as tarmode quiet. 
 .TP 0.2i
 \(bu
 \fIr\fR - Regular expression include
-or exclude.  Uses regular  expression matching for 
-excluding or excluding files if  compiled with HAVE_REGEX_H. 
-However this mode can be very slow. If  not compiled with 
-HAVE_REGEX_H, does a limited wildcard match on '*' and  '?'. 
+or exclude. Uses regular expression matching for 
+excluding or excluding files if compiled with HAVE_REGEX_H. 
+However this mode can be very slow. If not compiled with 
+HAVE_REGEX_H, does a limited wildcard match on '*' and '?'. 
 .TP 0.2i
 \(bu
 \fIN\fR - Newer than. Must be followed 
@@ -402,50 +403,63 @@ specified are backed up to the tar file. Useful only with the
 archive bit to be reset when a file is backed up. Useful with the 
 \fIg\fR and \fIc\fR flags. 
 .RE
-
+.PP
 \fBTar Long File Names\fR
-
+.PP
+.PP
 \fBsmbclient\fR's tar option now supports long 
 file names both on backup and restore. However, the full path 
-name of the file must be less than 1024 bytes.  Also, when
+name of the file must be less than 1024 bytes. Also, when
 a tar archive is created, \fBsmbclient\fR's tar option places all 
 files in the archive with relative names, not absolute names. 
-
+.PP
+.PP
 \fBTar Filenames\fR
-
+.PP
+.PP
 All file names can be given as DOS path names (with '\\' 
 as the component separator) or as UNIX path names (with '/' as 
 the component separator). 
-
+.PP
+.PP
 \fBExamples\fR
-
+.PP
+.PP
 Restore from tar file \fIbackup.tar\fR into myshare on mypc 
 (no password on share). 
-
+.PP
+.PP
 \fBsmbclient //mypc/yshare "" -N -Tx backup.tar
-\fR
-
+\fR.PP
+.PP
 Restore everything except \fIusers/docs\fR
-
+.PP
+.PP
 \fBsmbclient //mypc/myshare "" -N -TXx backup.tar 
 users/docs\fR
-
-Create a tar file of the files beneath \fI  users/docs\fR. 
-
+.PP
+.PP
+Create a tar file of the files beneath \fI users/docs\fR. 
+.PP
+.PP
 \fBsmbclient //mypc/myshare "" -N -Tc
 backup.tar users/docs \fR
-
+.PP
+.PP
 Create the same tar file as above, but now use 
 a DOS path name. 
-
+.PP
+.PP
 \fBsmbclient //mypc/myshare "" -N -tc backup.tar 
 users\\edocs \fR
-
+.PP
+.PP
 Create a tar file of all the files and directories in 
 the share. 
-
+.PP
+.PP
 \fBsmbclient //mypc/myshare "" -N -Tc backup.tar *
-\fR
+\fR.PP
 .TP
 \fB-D initial directory\fR
 Change to initial directory before starting. Probably 
@@ -453,7 +467,7 @@ only of any use with the tar -T option.
 .TP
 \fB-c command string\fR
 command string is a semicolon-separated list of 
-commands to be executed instead of prompting from stdin. \fI  -N\fR is implied by \fI-c\fR.
+commands to be executed instead of prompting from stdin. \fI -N\fR is implied by \fI-c\fR.
 
 This is particularly useful in scripts and for printing stdin 
 to the server, e.g. \fB-c 'print -'\fR. 
@@ -472,14 +486,14 @@ The prompt indicates that the client is ready and waiting to
 carry out a user command. Each command is a single word, optionally 
 followed by parameters specific to that command. Command and parameters 
 are space-delimited unless these notes specifically
-state otherwise. All commands are case-insensitive.  Parameters to 
+state otherwise. All commands are case-insensitive. Parameters to 
 commands may or may not be case sensitive, depending on the command. 
 .PP
 You can specify file names which have spaces in them by quoting 
 the name with double quotes, for example "a long file name". 
 .PP
 Parameters shown in square brackets (e.g., "[parameter]") are 
-optional.  If not given, the command will use suitable defaults. Parameters 
+optional. If not given, the command will use suitable defaults. Parameters 
 shown in angle brackets (e.g., "<parameter>") are required.
 .PP
 Note that all commands operating on the server are actually 
@@ -490,12 +504,12 @@ The commands available are given here in alphabetical order.
 .TP
 \fB? [command]\fR
 If \fIcommand\fR is specified, the ? command will display 
-a brief informative message about the specified command.  If no 
+a brief informative message about the specified command. If no 
 command is specified, a list of available commands will
 be displayed. 
 .TP
 \fB! [shell command]\fR
-If \fIshell command\fR is specified, the !  
+If \fIshell command\fR is specified, the ! 
 command will execute a shell locally and run the specified shell 
 command. If no command is specified, a local shell will be run. 
 .TP
@@ -545,7 +559,7 @@ from the program.
 \fBget <remote file name> [local file name]\fR
 Copy the file called \fIremote file name\fR from 
 the server to the machine running the client. If specified, name 
-the local copy \fIlocal file name\fR.  Note that all transfers in 
+the local copy \fIlocal file name\fR. Note that all transfers in 
 \fBsmbclient\fR are binary. See also the 
 lowercase command. 
 .TP
@@ -703,7 +717,7 @@ outside the currently connected share. This is enforced by the Samba server.
 .TP
 \fBtar <c|x>[IXbgNa]\fR
 Performs a tar operation - see the \fI-T
-\fR command line option above. Behavior may be affected 
+\fRcommand line option above. Behavior may be affected 
 by the tarmode command (see below). Using g (incremental) and N 
 (newer) will affect tarmode settings. Note that using the "-" option 
 with tar x may not work - use the command line option instead. 
@@ -736,18 +750,18 @@ supports the LANMAN2 protocol or above.
 .SH "ENVIRONMENT VARIABLES"
 .PP
 The variable \fBUSER\fR may contain the 
-username of the person  using the client. This information is 
-used only if the protocol  level is high enough to support 
+username of the person using the client. This information is 
+used only if the protocol level is high enough to support 
 session-level passwords.
 .PP
 The variable \fBPASSWD\fR may contain 
-the password of the person using the client.  This information is 
+the password of the person using the client. This information is 
 used only if the protocol level is high enough to support 
 session-level passwords. 
 .PP
 The variable \fBLIBSMB_PROG\fR may contain 
 the path, executed with system(), which the client should connect 
-to instead of connecting to a server.  This functionality is primarily
+to instead of connecting to a server. This functionality is primarily
 intended as a development aid, and works best when using a LMHOSTS 
 file
 .SH "INSTALLATION"
@@ -767,7 +781,7 @@ and writeable only by the user.
 .PP
 To test the client, you will need to know the name of a 
 running SMB/CIFS server. It is possible to run \fBsmbd(8)
-\fR as an ordinary user - running that server as a daemon 
+\fRas an ordinary user - running that server as a daemon 
 on a user-accessible port (typically any port number over 1024)
 would provide a suitable test server. 
 .SH "DIAGNOSTICS"
@@ -794,5 +808,5 @@ The original Samba man pages were written by Karl Auer.
 The man page sources were converted to YODL format (another 
 excellent piece of Open Source software, available at
 ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0 
-release by Jeremy Allison.  The conversion to DocBook for 
+release by Jeremy Allison. The conversion to DocBook for 
 Samba 2.2 was done by Gerald Carter
index d463db78b15c26e237a6bdbb617a55f78b4081c8..21b6666133159ea80eba7836964c4afc7835fac0 100644 (file)
@@ -1,15 +1,14 @@
-.\" This manpage has been automatically generated by docbook2man 
-.\" from a DocBook document.  This tool can be found at:
-.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/> 
+.\" This manpage has been automatically generated by docbook2man-spec
+.\" from a DocBook document.  docbook2man-spec can be found at:
+.\" <http://shell.ipoline.com/~elmert/hacks/docbook2X/> 
 .\" Please send any bug reports, improvements, comments, patches, 
 .\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "TESTPARM" "1" "21 August 2002" "" ""
+.TH "TESTPARM" "1" "28 January 2002" "" ""
 .SH NAME
 testparm \- check an smb.conf configuration file for  internal correctness
 .SH SYNOPSIS
-
-\fBtestparm\fR [ \fB-s\fR ] [ \fB-h\fR ] [ \fB-v\fR ] [ \fB-L <servername>\fR ] \fBconfig filename\fR [ \fBhostname  hostIP\fR ]
-
+.sp
+\fBtestparm\fR [ \fB-s\fR ]  [ \fB-h\fR ]  [ \fB-L <servername>\fR ]  \fBconfig filename\fR [ \fBhostname hostIP\fR ] 
 .SH "DESCRIPTION"
 .PP
 This tool is part of the  Sambasuite.
@@ -18,7 +17,7 @@ This tool is part of the  Sambasuite.
 to check an \fBsmbd\fR configuration file for 
 internal correctness. If this program reports no problems, you 
 can use the configuration file with confidence that \fBsmbd
-\fR will successfully load the configuration file.
+\fRwill successfully load the configuration file.
 .PP
 Note that this is \fBNOT\fR a guarantee that 
 the services specified in the configuration file will be 
@@ -47,16 +46,10 @@ Sets the value of the %L macro to \fIservername\fR.
 This is useful for testing include files specified with the 
 %L macro. 
 .TP
-\fB-v\fR
-If this option is specified, testparm 
-will also output all options that were not used in 
-\fIsmb.conf\fR and are thus set to
-their defaults.
-.TP
 \fBconfigfilename\fR
 This is the name of the configuration file 
 to check. If this parameter is not present then the 
-default \fIsmb.conf\fR file will be checked.  
+default \fIsmb.conf\fR file will be checked. 
 .TP
 \fBhostname\fR
 If this parameter and the following are 
@@ -64,13 +57,13 @@ specified, then \fBtestparm\fR will examine the \fIhosts
 allow\fR and \fIhosts deny\fR 
 parameters in the \fIsmb.conf\fR file to 
 determine if the hostname with this IP address would be
-allowed access to the \fBsmbd\fR server.  If 
+allowed access to the \fBsmbd\fR server. If 
 this parameter is supplied, the hostIP parameter must also
 be supplied.
 .TP
 \fBhostIP\fR
 This is the IP address of the host specified 
-in the previous parameter.  This address must be supplied 
+in the previous parameter. This address must be supplied 
 if the hostname parameter is supplied. 
 .SH "FILES"
 .TP
@@ -102,6 +95,6 @@ to the way the Linux kernel is developed.
 The original Samba man pages were written by Karl Auer. 
 The man page sources were converted to YODL format (another 
 excellent piece of Open Source software, available at
-ftp://ftp.icce.rug.nl/pub/unix/) and updated for the Samba 2.0 
-release by Jeremy Allison.  The conversion to DocBook for 
+ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0 
+release by Jeremy Allison. The conversion to DocBook for 
 Samba 2.2 was done by Gerald Carter
diff --git a/docs/textdocs/BROWSING.txt b/docs/textdocs/BROWSING.txt
new file mode 100644 (file)
index 0000000..2ca41e5
--- /dev/null
@@ -0,0 +1,559 @@
+Author/s:      Many (Thanks to Luke, Jeremy, Andrew, etc.)
+Updated:       July 5, 1998
+Status:                Current - For VERY Advanced Users ONLY
+
+Summary: This describes how to configure Samba for improved browsing.
+=====================================================================
+
+OVERVIEW:
+=========
+
+SMB networking provides a mechanism by which clients can access a list
+of machines in a network, a so-called "browse list".  This list
+contains machines that are ready to offer file and/or print services
+to other machines within the network. Thus it does not include
+machines which aren't currently able to do server tasks.  The browse
+list is heavily used by all SMB clients.  Configuration of SMB
+browsing has been problematic for some Samba users, hence this
+document.
+
+Browsing will NOT work if name resolution from NetBIOS names to IP
+addresses does not function correctly. Use of a WINS server is highly
+recommended to aid the resolution of NetBIOS (SMB) names to IP addresses.
+WINS allows remote segment clients to obtain NetBIOS name_type information
+that can NOT be provided by any other means of name resolution.
+
+=====================================================================
+
+BROWSING
+========
+Samba now fully supports browsing.  The browsing is supported by nmbd
+and is also controlled by options in the smb.conf file (see smb.conf(5)).
+
+Samba can act as a local browse master for a workgroup and the ability
+for samba to support domain logons and scripts is now available.  See
+DOMAIN.txt for more information on domain logons.
+
+Samba can also act as a domain master browser for a workgroup.  This
+means that it will collate lists from local browse masters into a
+wide area network server list.  In order for browse clients to
+resolve the names they may find in this list, it is recommended that
+both samba and your clients use a WINS server.
+
+Note that you should NOT set Samba to be the domain master for a
+workgroup that has the same name as an NT Domain: on each wide area
+network, you must only ever have one domain master browser per workgroup,
+regardless of whether it is NT, Samba or any other type of domain master
+that is providing this service.
+
+[Note that nmbd can be configured as a WINS server, but it is not
+necessary to specifically use samba as your WINS server.  NTAS can
+be configured as your WINS server.  In a mixed NT server and
+samba environment on a Wide Area Network, it is recommended that
+you use the NT server's WINS server capabilities.  In a samba-only
+environment, it is recommended that you use one and only one nmbd
+as your WINS server].
+
+To get browsing to work you need to run nmbd as usual, but will need
+to use the "workgroup" option in smb.conf to control what workgroup
+Samba becomes a part of.
+
+Samba also has a useful option for a Samba server to offer itself for
+browsing on another subnet.  It is recommended that this option is only
+used for 'unusual' purposes: announcements over the internet, for
+example.  See "remote announce" in the smb.conf man page.  
+
+If something doesn't work then hopefully the log.nmb file will help
+you track down the problem.  Try a debug level of 2 or 3 for finding
+problems. Also note that the current browse list usually gets stored
+in text form in a file called browse.dat.
+
+Note that if it doesn't work for you, then you should still be able to
+type the server name as \\SERVER in filemanager then hit enter and
+filemanager should display the list of available shares.
+
+Some people find browsing fails because they don't have the global
+"guest account" set to a valid account.  Remember that the IPC$
+connection that lists the shares is done as guest, and thus you must
+have a valid guest account.
+
+Also, a lot of people are getting bitten by the problem of too many
+parameters on the command line of nmbd in inetd.conf.  This trick is to
+not use spaces between the option and the parameter (eg: -d2 instead
+of -d 2), and to not use the -B and -N options.  New versions of nmbd
+are now far more likely to correctly find your broadcast and network
+address, so in most cases these aren't needed.
+
+The other big problem people have is that their broadcast address,
+netmask or IP address is wrong (specified with the "interfaces" option
+in smb.conf)
+
+
+BROWSING ACROSS SUBNETS
+=======================
+
+With the release of Samba 1.9.17(alpha1 and above) Samba has been
+updated to enable it to support the replication of browse lists
+across subnet boundaries.  New code and options have been added to
+achieve this.  This section describes how to set this feature up
+in different settings.
+
+To see browse lists that span TCP/IP subnets (ie.  networks separated
+by routers that don't pass broadcast traffic) you must set up at least
+one WINS server.  The WINS server acts as a DNS for NetBIOS names, allowing
+NetBIOS name to IP address translation to be done by doing a direct
+query of the WINS server.  This is done via a directed UDP packet on
+port 137 to the WINS server machine.  The reason for a WINS server is
+that by default, all NetBIOS name to IP address translation is done
+by broadcasts from the querying machine.  This means that machines
+on one subnet will not be able to resolve the names of machines on
+another subnet without using a WINS server.
+
+Remember, for browsing across subnets to work correctly, all machines,
+be they Windows 95, Windows NT, or Samba servers must have the IP address
+of a WINS server given to them by a DHCP server, or by manual configuration 
+(for Win95 and WinNT, this is in the TCP/IP Properties, under Network 
+settings) for Samba this is in the smb.conf file.
+
+How does cross subnet browsing work ?
+=====================================
+
+Cross subnet browsing is a complicated dance, containing multiple
+moving parts.  It has taken Microsoft several years to get the code
+that achieves this correct, and Samba lags behind in some areas.
+However, with the 1.9.17 release, Samba is capable of cross subnet
+browsing when configured correctly.
+
+Consider a network set up as follows :
+
+                                   (DMB)
+             N1_A      N1_B        N1_C       N1_D        N1_E
+              |          |           |          |           |
+          -------------------------------------------------------
+            |          subnet 1                       |
+          +---+                                      +---+
+          |R1 | Router 1                  Router 2   |R2 |
+          +---+                                      +---+
+            |                                          |
+            |  subnet 2              subnet 3          |
+  --------------------------       ------------------------------------
+  |     |     |      |               |        |         |           |
+ N2_A  N2_B  N2_C   N2_D           N3_A     N3_B      N3_C        N3_D 
+                    (WINS)
+
+Consisting of 3 subnets (1, 2, 3) conneted by two routers
+(R1, R2) - these do not pass broadcasts.  Subnet 1 has 5 machines
+on it, subnet 2 has 4 machines, subnet 3 has 4 machines.  Assume
+for the moment that all these machines are configured to be in the
+same workgroup (for simplicities sake).  Machine N1_C on subnet 1
+is configured as Domain Master Browser (ie.  it will collate the
+browse lists for the workgroup).  Machine N2_D is configured as
+WINS server and all the other machines are configured to register
+their NetBIOS names with it.
+
+As all these machines are booted up, elections for master browsers
+will take place on each of the three subnets.  Assume that machine
+N1_C wins on subnet 1, N2_B wins on subnet 2, and N3_D wins on
+subnet 3 - these machines are known as local master browsers for
+their particular subnet.  N1_C has an advantage in winning as the
+local master browser on subnet 1 as it is set up as Domain Master
+Browser.
+
+On each of the three networks, machines that are configured to 
+offer sharing services will broadcast that they are offering
+these services.  The local master browser on each subnet will
+receive these broadcasts and keep a record of the fact that
+the machine is offering a service.  This list of records is
+the basis of the browse list.  For this case, assume that
+all the machines are configured to offer services so all machines
+will be on the browse list.
+
+For each network, the local master browser on that network is
+considered 'authoritative' for all the names it receives via
+local broadcast.  This is because a machine seen by the local
+master browser via a local broadcast must be on the same 
+network as the local master browser and thus is a 'trusted'
+and 'verifiable' resource.  Machines on other networks that
+the local master browsers learn about when collating their
+browse lists have not been directly seen - these records are
+called 'non-authoritative'.
+
+At this point the browse lists look as follows (these are 
+the machines you would see in your network neighborhood if
+you looked in it on a particular network right now).
+
+Subnet           Browse Master   List
+------           -------------   ----
+Subnet1          N1_C            N1_A, N1_B, N1_C, N1_D, N1_E
+
+Subnet2          N2_B            N2_A, N2_B, N2_C, N2_D
+
+Subnet3          N3_D            N3_A, N3_B, N3_C, N3_D
+
+Note that at this point all the subnets are separate, no
+machine is seen across any of the subnets.
+
+Now examine subnet 2.  As soon as N2_B has become the local
+master browser it looks for a Domain master browser to synchronize
+its browse list with.  It does this by querying the WINS server
+(N2_D) for the IP address associated with the NetBIOS name 
+WORKGROUP<1B>.  This name was registerd by the Domain master
+browser (N1_C) with the WINS server as soon as it was booted.
+
+Once N2_B knows the address of the Domain master browser it
+tells it that is the local master browser for subnet 2 by
+sending a MasterAnnouncement packet as a UDP port 138 packet.
+It then synchronizes with it by doing a NetServerEnum2 call.  This
+tells the Domain Master Browser to send it all the server
+names it knows about.  Once the domain master browser receives
+the MasterAnnouncement packet it schedules a synchronization
+request to the sender of that packet.  After both synchronizations
+are done the browse lists look like :
+
+Subnet           Browse Master   List
+------           -------------   ----
+Subnet1          N1_C            N1_A, N1_B, N1_C, N1_D, N1_E, 
+                                 N2_A(*), N2_B(*), N2_C(*), N2_D(*)
+
+Subnet2          N2_B            N2_A, N2_B, N2_C, N2_D
+                                 N1_A(*), N1_B(*), N1_C(*), N1_D(*), N1_E(*)
+
+Subnet3          N3_D            N3_A, N3_B, N3_C, N3_D
+
+Servers with a (*) after them are non-authoritative names.
+
+At this point users looking in their network neighborhood on
+subnets 1 or 2 will see all the servers on both, users on
+subnet 3 will still only see the servers on their own subnet.
+
+The same sequence of events that occured for N2_B now occurs
+for the local master browser on subnet 3 (N3_D).  When it
+synchronizes browse lists with the domain master browser (N1_A)
+it gets both the server entries on subnet 1, and those on
+subnet 2.  After N3_D has synchronized with N1_C and vica-versa
+the browse lists look like.
+
+Subnet           Browse Master   List
+------           -------------   ----
+Subnet1          N1_C            N1_A, N1_B, N1_C, N1_D, N1_E, 
+                                 N2_A(*), N2_B(*), N2_C(*), N2_D(*),
+                                 N3_A(*), N3_B(*), N3_C(*), N3_D(*)
+
+Subnet2          N2_B            N2_A, N2_B, N2_C, N2_D
+                                 N1_A(*), N1_B(*), N1_C(*), N1_D(*), N1_E(*)
+
+Subnet3          N3_D            N3_A, N3_B, N3_C, N3_D
+                                 N1_A(*), N1_B(*), N1_C(*), N1_D(*), N1_E(*),
+                                 N2_A(*), N2_B(*), N2_C(*), N2_D(*)
+
+Servers with a (*) after them are non-authoritative names.
+
+At this point users looking in their network neighborhood on
+subnets 1 or 3 will see all the servers on all sunbets, users on
+subnet 2 will still only see the servers on subnets 1 and 2, but not 3.
+
+Finally, the local master browser for subnet 2 (N2_B) will sync again
+with the domain master browser (N1_C) and will recieve the missing
+server entries.  Finally - and as a steady state (if no machines
+are removed or shut off) the browse lists will look like :
+
+Subnet           Browse Master   List
+------           -------------   ----
+Subnet1          N1_C            N1_A, N1_B, N1_C, N1_D, N1_E, 
+                                 N2_A(*), N2_B(*), N2_C(*), N2_D(*),
+                                 N3_A(*), N3_B(*), N3_C(*), N3_D(*)
+
+Subnet2          N2_B            N2_A, N2_B, N2_C, N2_D
+                                 N1_A(*), N1_B(*), N1_C(*), N1_D(*), N1_E(*)
+                                 N3_A(*), N3_B(*), N3_C(*), N3_D(*)
+
+Subnet3          N3_D            N3_A, N3_B, N3_C, N3_D
+                                 N1_A(*), N1_B(*), N1_C(*), N1_D(*), N1_E(*),
+                                 N2_A(*), N2_B(*), N2_C(*), N2_D(*)
+
+Servers with a (*) after them are non-authoritative names.
+
+Synchronizations between the domain master browser and local
+master browsers will continue to occur, but this should be a
+steady state situation.
+
+If either router R1 or R2 fails the following will occur:
+
+1) Names of computers on each side of the inaccessible network fragments
+will be maintained for as long as 36 minutes, in the network neighbourhood
+lists.
+
+2) Attempts to connect to these inaccessible computers will fail, but the
+names will not be removed from the network neighbourhood lists.
+
+3) If one of the fragments is cut off from the WINS server, it will only
+be able to access servers on its local subnet, by using subnet-isolated
+broadcast NetBIOS name resolution.  The effects are similar to that of
+losing access to a DNS server.
+
+Setting up a WINS server
+========================
+
+Either a Samba machine or a Windows NT Server machine may be set up
+as a WINS server.  To set a Samba machine to be a WINS server you must
+add the following option to the smb.conf file on the selected machine :
+in the [globals] section add the line 
+
+        wins support = yes
+
+Versions of Samba previous to 1.9.17 had this parameter default to
+yes.  If you have any older versions of Samba on your network it is
+strongly suggested you upgrade to 1.9.17 or above, or at the very
+least set the parameter to 'no' on all these machines.
+
+Machines with "wins support = yes" will keep a list of all NetBIOS
+names registered with them, acting as a DNS for NetBIOS names.
+
+You should set up only ONE wins server.  Do NOT set the
+"wins support = yes" option on more than one Samba server.
+
+To set up a Windows NT Server as a WINS server you need to set up
+the WINS service - see your NT documentation for details.  Note that
+Windows NT WINS Servers can replicate to each other, allowing more
+than one to be set up in a complex subnet environment.  As Microsoft
+refuse to document these replication protocols Samba cannot currently
+participate in these replications.  It is possible in the future that
+a Samba->Samba WINS replication protocol may be defined, in which
+case more than one Samba machine could be set up as a WINS server
+but currently only one Samba server should have the "wins support = yes"
+parameter set.
+
+After the WINS server has been configured you must ensure that all
+machines participating on the network are configured with the address
+of this WINS server.  If your WINS server is a Samba machine, fill in
+the Samba machine IP address in the "Primary WINS Server" field of
+the "Control Panel->Network->Protocols->TCP->WINS Server" dialogs
+in Windows 95 or Windows NT.  To tell a Samba server the IP address
+of the WINS server add the following line to the [global] section of
+all smb.conf files :
+
+        wins server = <name or IP address>
+
+where <name or IP address> is either the DNS name of the WINS server
+machine or its IP address.
+
+Note that this line MUST NOT BE SET in the smb.conf file of the Samba
+server acting as the WINS server itself.  If you set both the
+"wins support = yes" option and the "wins server = <name>" option then
+nmbd will fail to start.
+
+There are two possible scenarios for setting up cross subnet browsing.
+The first details setting up cross subnet browsing on a network containing
+Windows 95, Samba and Windows NT machines that are not configured as
+part of a Windows NT Domain.  The second details setting up cross subnet
+browsing on networks that contain NT Domains.
+
+Setting up Browsing in a WORKGROUP
+==================================
+
+To set up cross subnet browsing on a network containing machines
+in up to be in a WORKGROUP, not an NT Domain you need to set up one
+Samba server to be the Domain Master Browser (note that this is *NOT*
+the same as a Primary Domain Controller, although in an NT Domain the
+same machine plays both roles).  The role of a Domain master browser is
+to collate the browse lists from local master browsers on all the
+subnets that have a machine participating in the workgroup.  Without
+one machine configured as a domain master browser each subnet would
+be an isolated workgroup, unable to see any machines on any other
+subnet.  It is the presense of a domain master browser that makes
+cross subnet browsing possible for a workgroup.
+
+In an WORKGROUP environment the domain master browser must be a
+Samba server, and there must only be one domain master browser per
+workgroup name.  To set up a Samba server as a domain master browser,
+set the following option in the [global] section of the smb.conf file :
+
+        domain master = yes
+
+The domain master browser should also preferrably be the local master
+browser for its own subnet.  In order to achieve this set the following
+options in the [global] section of the smb.conf file :
+
+        domain master = yes
+        local master = yes
+        preferred master = yes
+        os level = 65
+
+The domain master browser may be the same machine as the WINS
+server, if you require.
+
+Next, you should ensure that each of the subnets contains a
+machine that can act as a local master browser for the
+workgroup.  Any NT machine should be able to do this, as will
+Windows 95 machines (although these tend to get rebooted more
+often, so it's not such a good idea to use these).  To make a 
+Samba server a local master browser set the following
+options in the [global] section of the smb.conf file :
+
+        domain master = no
+        local master = yes
+        preferred master = yes
+        os level = 65
+
+Do not do this for more than one Samba server on each subnet,
+or they will war with each other over which is to be the local
+master browser.
+
+The "local master" parameter allows Samba to act as a local master
+browser.  The "preferred master" causes nmbd to force a browser
+election on startup and the "os level" parameter sets Samba high
+enough so that it should win any browser elections.
+
+If you have an NT machine on the subnet that you wish to
+be the local master browser then you can disable Samba from
+becoming a local master browser by setting the following
+options in the [global] section of the smb.conf file :
+
+        domain master = no
+        local master = no
+        preferred master = no
+        os level = 0
+
+Setting up Browsing in a DOMAIN
+===============================
+
+If you are adding Samba servers to a Windows NT Domain then
+you must not set up a Samba server as a domain master browser.
+By default, a Windows NT Primary Domain Controller for a Domain
+name is also the Domain master browser for that name, and many
+things will break if a Samba server registers the Domain master
+browser NetBIOS name (DOMAIN<1B>) with WINS instead of the PDC.
+
+For subnets other than the one containing the Windows NT PDC
+you may set up Samba servers as local master browsers as
+described.  To make a Samba server a local master browser set 
+the following options in the [global] section of the smb.conf 
+file :
+
+        domain master = no
+        local master = yes
+        preferred master = yes
+        os level = 65
+
+If you wish to have a Samba server fight the election with machines
+on the same subnet you may set the "os level" parameter to lower
+levels.  By doing this you can tune the order of machines that
+will become local master browsers if they are running.  For
+more details on this see the section "FORCING SAMBA TO BE THE MASTER"
+below.
+
+If you have Windows NT machines that are members of the domain
+on all subnets, and you are sure they will always be running then
+you can disable Samba from taking part in browser elections and
+ever becoming a local master browser by setting following options 
+in the [global] section of the smb.conf file :
+        domain master = no
+        local master = no
+        preferred master = no
+        os level = 0
+
+FORCING SAMBA TO BE THE MASTER
+==============================
+
+Who becomes the "master browser" is determined by an election process
+using broadcasts.  Each election packet contains a number of parameters
+which determine what precedence (bias) a host should have in the
+election.  By default Samba uses a very low precedence and thus loses
+elections to just about anyone else.
+
+If you want Samba to win elections then just set the "os level" global
+option in smb.conf to a higher number.  It defaults to 0.  Using 34
+would make it win all elections over every other system (except other
+samba systems!)
+
+A "os level" of 2 would make it beat WfWg and Win95, but not NTAS.  A
+NTAS domain controller uses level 32.
+
+The maximum os level is 255
+
+If you want samba to force an election on startup, then set the
+"preferred master" global option in smb.conf to "yes".  Samba will
+then have a slight advantage over other potential master browsers
+that are not preferred master browsers.  Use this parameter with
+care, as if you have two hosts (whether they are windows 95 or NT or
+samba) on the same local subnet both set with "preferred master" to
+"yes", then periodically and continually they will force an election
+in order to become the local master browser.
+
+If you want samba to be a "domain master browser", then it is
+recommended that you also set "preferred master" to "yes", because
+samba will not become a domain master browser for the whole of your
+LAN or WAN if it is not also a local master browser on its own
+broadcast isolated subnet.
+
+It is possible to configure two samba servers to attempt to become
+the domain master browser for a domain.  The first server that comes
+up will be the domain master browser.  All other samba servers will
+attempt to become the domain master browser every 5 minutes.  They
+will find that another samba server is already the domain master
+browser and will fail.  This provides automatic redundancy, should
+the current domain master browser fail.
+
+MAKING SAMBA THE DOMAIN MASTER
+==============================
+
+The domain master is responsible for collating the browse lists of
+multiple subnets so that browsing can occur between subnets.  You can
+make samba act as the domain master by setting "domain master = yes"
+in smb.conf.  By default it will not be a domain master.
+
+Note that you should NOT set Samba to be the domain master for a
+workgroup that has the same name as an NT Domain.
+
+When samba is the domain master and the master browser it will listen
+for master announcements (made roughly every twelve minutes) from local
+master browsers on other subnets and then contact them to synchronise
+browse lists.
+
+If you want samba to be the domain master then I suggest you also set
+the "os level" high enough to make sure it wins elections, and set
+"preferred master" to "yes", to get samba to force an election on
+startup.
+
+Note that all your servers (including samba) and clients should be
+using a WINS server to resolve NetBIOS names.  If your clients are only
+using broadcasting to resolve NetBIOS names, then two things will occur:
+
+a) your local master browsers will be unable to find a domain master
+   browser, as it will only be looking on the local subnet.
+
+b) if a client happens to get hold of a domain-wide browse list, and
+   a user attempts to access a host in that list, it will be unable to
+   resolve the NetBIOS name of that host.
+
+If, however, both samba and your clients are using a WINS server, then:
+
+a) your local master browsers will contact the WINS server and, as long as
+   samba has registered that it is a domain master browser with the WINS
+   server, your local master browser will receive samba's ip address
+   as its domain master browser.
+
+b) when a client receives a domain-wide browse list, and a user attempts
+   to access a host in that list, it will contact the WINS server to
+   resolve the NetBIOS name of that host.  as long as that host has
+   registered its NetBIOS name with the same WINS server, the user will
+   be able to see that host.  
+
+NOTE ABOUT BROADCAST ADDRESSES
+==============================
+
+If your network uses a "0" based broadcast address (for example if it
+ends in a 0) then you will strike problems.  Windows for Workgroups
+does not seem to support a 0's broadcast and you will probably find
+that browsing and name lookups won't work.
+
+
+MULTIPLE INTERFACES
+===================
+
+Samba now supports machines with multiple network interfaces.  If you
+have multiple interfaces then you will need to use the "interfaces"
+option in smb.conf to configure them.  See smb.conf(5) for details.
+
diff --git a/docs/textdocs/BUGS.txt b/docs/textdocs/BUGS.txt
new file mode 100644 (file)
index 0000000..247998c
--- /dev/null
@@ -0,0 +1,135 @@
+Contributor:   Samba Team
+Updated:       June 27, 1997
+
+Subject: This file describes how to report Samba bugs. 
+============================================================================
+
+>> The email address for bug reports is samba@samba.org <<
+
+Please take the time to read this file before you submit a bug
+report. Also, please see if it has changed between releases, as we
+may be changing the bug reporting mechanism at some time.
+
+Please also do as much as you can yourself to help track down the
+bug. Samba is maintained by a dedicated group of people who volunteer
+their time, skills and efforts. We receive far more mail about it than
+we can possibly answer, so you have a much higher chance of an answer
+and a fix if you send us a "developer friendly" bug report that lets
+us fix it fast. 
+
+Do not assume that if you post the bug to the comp.protocols.smb
+newsgroup or the mailing list that we will read it. If you suspect that your 
+problem is not a bug but a configuration problem then it is better to send 
+it to the Samba mailing list, as there are (at last count) 5000 other users on
+that list that may be able to help you.
+
+You may also like to look though the recent mailing list archives,
+which are conveniently accessible on the Samba web pages
+at http://samba.org/samba/ 
+
+
+GENERAL INFO
+------------
+
+Before submitting a bug report check your config for silly
+errors. Look in your log files for obvious messages that tell you that
+you've misconfigured something and run testparm to test your config
+file for correct syntax.
+
+Have you run through DIAGNOSIS.txt? This is very important.
+
+If you include part of a log file with your bug report then be sure to
+annotate it with exactly what you were doing on the client at the
+time, and exactly what the results were.
+
+
+DEBUG LEVELS
+------------
+
+If the bug has anything to do with Samba behaving incorrectly as a
+server (like refusing to open a file) then the log files will probably
+be very useful. Depending on the problem a log level of between 3 and
+10 showing the problem may be appropriate. A higher level givesmore
+detail, but may use too much disk space.
+
+To set the debug level use "log level =" in your smb.conf. You may
+also find it useful to set the log level higher for just one machine
+and keep separate logs for each machine. To do this use:
+
+log level = 10
+log file = /usr/local/samba/lib/log.%m
+include = /usr/local/samba/lib/smb.conf.%m
+
+then create a file "/usr/local/samba/lib/smb.conf.machine" where
+"machine" is the name of the client you wish to debug. In that file
+put any smb.conf commands you want, for example "log level=" may be
+useful. This also allows you to experiment with different security
+systems, protocol levels etc on just one machine.
+
+The smb.conf entry "log level =" is synonymous with the entry
+"debuglevel =" that has been used in older versions of Samba and
+is being retained for backwards compatibility of smb.conf files.
+
+As the "log level =" value is increased you will record a significantly
+increasing level of debugging information. For most debugging operations
+you may not need a setting higher than 3. Nearly all bugs can be tracked
+at a setting of 10, but be prepared for a VERY large volume of log data.
+
+
+INTERNAL ERRORs
+---------------
+
+If you get a "INTERNAL ERROR" message in your log files it means that
+Samba got an unexpected signal while running. It is probably a
+segmentation fault and almost certainly means a bug in Samba (unless
+you have faulty hardware or system software)
+
+If the message came from smbd then it will probably be accompanied by
+a message which details the last SMB message received by smbd. This
+info is often very useful in tracking down the problem so please
+include it in your bug report.
+
+You should also detail how to reproduce the problem, if
+possible. Please make this reasonably detailed.
+
+You may also find that a core file appeared in a "corefiles"
+subdirectory of the directory where you keep your samba log
+files. This file is the most useful tool for tracking down the bug. To
+use it you do this:
+
+gdb smbd core
+
+adding appropriate paths to smbd and core so gdb can find them. If you
+don't have gdb then try "dbx". Then within the debugger use the
+command "where" to give a stack trace of where the problem
+occurred. Include this in your mail.
+
+If you known any assembly language then do a "disass" of the routine
+where the problem occurred (if its in a library routine then
+disassemble the routine that called it) and try to work out exactly
+where the problem is by looking at the surrounding code. Even if you
+don't know assembly then incuding this info in the bug report can be
+useful. 
+
+
+ATTACHING TO A RUNNING PROCESS
+------------------------------
+
+Unfortunately some unixes (in particular some recent linux kernels)
+refuse to dump a core file if the task has changed uid (which smbd
+does often). To debug with this sort of system you could try to attach
+to the running process using "gdb smbd PID" where you get PID from
+smbstatus. Then use "c" to continue and try to cause the core dump
+using the client. The debugger should catch the fault and tell you
+where it occurred.
+
+
+PATCHES
+-------
+
+The best sort of bug report is one that includes a fix! If you send us
+patches please use "diff -u" format if your version of diff supports
+it, otherwise use "diff -c4". Make sure your do the diff against a
+clean version of the source and let me know exactly what version you
+used. 
+
diff --git a/docs/textdocs/DIAGNOSIS.txt b/docs/textdocs/DIAGNOSIS.txt
new file mode 100644 (file)
index 0000000..2816610
--- /dev/null
@@ -0,0 +1,321 @@
+Contributor:   Andrew Tridgell
+Updated:       November 1, 1999
+
+Subject:       DIAGNOSING YOUR SAMBA SERVER
+===========================================================================
+
+This file contains a list of tests you can perform to validate your
+Samba server. It also tells you what the likely cause of the problem
+is if it fails any one of these steps. If it passes all these tests
+then it is probably working fine.
+
+You should do ALL the tests, in the order shown. I have tried to
+carefully choose them so later tests only use capabilities verified in
+the earlier tests.
+
+If you send me an email saying "it doesn't work" and you have not
+followed this test procedure then you should not be surprised if I
+ignore your email.
+
+
+ASSUMPTIONS
+-----------
+
+In all of the tests I assume you have a Samba server called BIGSERVER
+and a PC called ACLIENT both in workgroup TESTGROUP. I also assume the
+PC is running windows for workgroups with a recent copy of the
+microsoft tcp/ip stack. Alternatively, your PC may be running Windows
+95 or Windows NT (Workstation or Server).
+
+The procedure is similar for other types of clients.
+
+I also assume you know the name of an available share in your
+smb.conf. I will assume this share is called "tmp". You can add a
+"tmp" share like by adding the following to smb.conf:
+
+[tmp]
+ comment = temporary files 
+ path = /tmp
+ read only = yes
+
+
+THESE TESTS ASSUME VERSION 2.0.6 OR LATER OF THE SAMBA SUITE. SOME
+COMMANDS SHOWN DID NOT EXIST IN EARLIER VERSIONS
+
+Please pay attention to the error messages you receive. If any error message
+reports that your server is being unfriendly you should first check that you
+IP name resolution is correctly set up. eg: Make sure your /etc/resolv.conf
+file points to name servers that really do exist.
+
+Also, if you do not have DNS server access for name resolution please check
+that the settings for your smb.conf file results in "dns proxy = no". The
+best way to check this is with "testparm smb.conf"
+
+
+TEST 1:
+-------
+
+In the directory in which you store your smb.conf file, run the command
+"testparm smb.conf". If it reports any errors then your smb.conf
+configuration file is faulty.
+
+Note:  Your smb.conf file may be located in: /etc
+       Or in:   /usr/local/samba/lib
+
+
+TEST 2:
+-------
+
+run the command "ping BIGSERVER" from the PC and "ping ACLIENT" from
+the unix box. If you don't get a valid response then your TCP/IP
+software is not correctly installed. 
+
+Note that you will need to start a "dos prompt" window on the PC to
+run ping.
+
+If you get a message saying "host not found" or similar then your DNS
+software or /etc/hosts file is not correctly setup. It is possible to
+run samba without DNS entries for the server and client, but I assume
+you do have correct entries for the remainder of these tests. 
+
+Another reason why ping might fail is if your host is running firewall 
+software. You will need to relax the rules to let in the workstation
+in question, perhaps by allowing access from another subnet (on Linux
+this is done via the ipfwadm program.)
+
+
+TEST 3:
+-------
+
+Run the command "smbclient -L BIGSERVER" on the unix box. You
+should get a list of available shares back. 
+
+If you get a error message containing the string "Bad password" then
+you probably have either an incorrect "hosts allow", "hosts deny" or
+"valid users" line in your smb.conf, or your guest account is not
+valid. Check what your guest account is using "testparm" and
+temporarily remove any "hosts allow", "hosts deny", "valid users" or
+"invalid users" lines.
+
+If you get a "connection refused" response then the smbd server may
+not be running. If you installed it in inetd.conf then you probably edited
+that file incorrectly. If you installed it as a daemon then check that
+it is running, and check that the netbios-ssn port is in a LISTEN
+state using "netstat -a".
+
+If you get a "session request failed" then the server refused the
+connection. If it says "Your server software is being unfriendly" then
+its probably because you have invalid command line parameters to smbd,
+or a similar fatal problem with the initial startup of smbd. Also
+check your config file (smb.conf) for syntax errors with "testparm"
+and that the various directories where samba keeps its log and lock
+files exist.
+
+There are a number of reasons for which smbd may refuse or decline
+a session request. The most common of these involve one or more of
+the following smb.conf file entries:
+       hosts deny = ALL
+       hosts allow = xxx.xxx.xxx.xxx/yy
+       bind interfaces only = Yes
+
+In the above, no allowance has been made for any session requests that
+will automatically translate to the loopback adaptor address 127.0.0.1.
+To solve this problem change these lines to:
+       hosts deny = ALL
+       hosts allow = xxx.xxx.xxx.xxx/yy 127.
+Do NOT use the "bind interfaces only" parameter where you may wish to
+use the samba password change facility, or where smbclient may need to
+access local service for name resolution or for local resource
+connections. (Note: the "bind interfaces only" parameter deficiency
+where it will not allow connections to the loopback address will be
+fixed soon).
+
+Another common cause of these two errors is having something already running 
+on port 139, such as Samba (ie: smbd is running from inetd already) or
+something like Digital's Pathworks. Check your inetd.conf file before trying
+to start smbd as a daemon, it can avoid a lot of frustration!
+
+And yet another possible cause for failure of TEST 3 is when the subnet mask
+and / or broadcast address settings are incorrect. Please check that the
+network interface IP Address / Broadcast Address / Subnet Mask settings are
+correct and that Samba has correctly noted these in the log.nmb file.
+
+TEST 4:
+-------
+
+Run the command "nmblookup -B BIGSERVER __SAMBA__". You should get the
+IP address of your Samba server back.
+
+If you don't then nmbd is incorrectly installed. Check your inetd.conf
+if you run it from there, or that the daemon is running and listening
+to udp port 137.
+
+One common problem is that many inetd implementations can't take many
+parameters on the command line. If this is the case then create a
+one-line script that contains the right parameters and run that from
+inetd.
+
+
+TEST 5:
+-------
+
+run the command "nmblookup -B ACLIENT '*'"
+
+You should get the PCs IP address back. If you don't then the client
+software on the PC isn't installed correctly, or isn't started, or you
+got the name of the PC wrong. 
+
+If ACLIENT doesn't resolve via DNS then use the IP address of the
+client in the above test.
+
+
+TEST 6:
+-------
+
+Run the command "nmblookup -d 2 '*'"
+
+This time we are trying the same as the previous test but are trying
+it via a broadcast to the default broadcast address. A number of
+Netbios/TCPIP hosts on the network should respond, although Samba may
+not catch all of the responses in the short time it listens. You
+should see "got a positive name query response" messages from several
+hosts. 
+
+If this doesn't give a similar result to the previous test then
+nmblookup isn't correctly getting your broadcast address through its
+automatic mechanism. In this case you should experiment use the
+"interfaces" option in smb.conf to manually configure your IP
+address, broadcast and netmask. 
+
+If your PC and server aren't on the same subnet then you will need to
+use the -B option to set the broadcast address to the that of the PCs
+subnet.
+
+This test will probably fail if your subnet mask and broadcast address are
+not correct. (Refer to TEST 3 notes above).
+
+TEST 7:
+-------
+
+Run the command "smbclient //BIGSERVER/TMP". You should then be
+prompted for a password. You should use the password of the account
+you are logged into the unix box with. If you want to test with
+another account then add the -U <accountname> option to the end of
+the command line.  eg: smbclient //bigserver/tmp -Ujohndoe
+
+Note: It is possible to specify the password along with the username
+as follows:
+       smbclient //bigserver/tmp -Ujohndoe%secret
+
+Once you enter the password you should get the "smb>" prompt. If you
+don't then look at the error message. If it says "invalid network
+name" then the service "tmp" is not correctly setup in your smb.conf.
+
+If it says "bad password" then the likely causes are:
+
+- you have shadow passords (or some other password system) but didn't
+compile in support for them in smbd
+- your "valid users" configuration is incorrect
+- you have a mixed case password and you haven't enabled the "password
+level" option at a high enough level
+- the "path =" line in smb.conf is incorrect. Check it with testparm
+- you enabled password encryption but didn't create the SMB encrypted
+password file
+
+Once connected you should be able to use the commands "dir" "get"
+"put" etc. Type "help <command>" for instructions. You should
+especially check that the amount of free disk space shown is correct
+when you type "dir".
+
+
+TEST 8:
+-------
+
+On the PC type the command "net view \\BIGSERVER". You will need to do
+this from within a "dos prompt" window. You should get back a list of
+available shares on the server.
+
+If you get a "network name not found" or similar error then netbios
+name resolution is not working. This is usually caused by a problem in
+nmbd. To overcome it you could do one of the following (you only need
+to choose one of them):
+
+- fixup the nmbd installation
+- add the IP address of BIGSERVER to the "wins server" box in the
+advanced tcp/ip setup on the PC.
+- enable windows name resolution via DNS in the advanced section of
+the tcp/ip setup
+- add BIGSERVER to your lmhosts file on the PC.
+
+If you get a "invalid network name" or "bad password error" then the
+same fixes apply as they did for the "smbclient -L" test above. In
+particular, make sure your "hosts allow" line is correct (see the man
+pages)
+
+Also, do not overlook that fact that when the workstation requests the
+connection to the samba server it will attempt to connect using the 
+name with which you logged onto your Windows machine. You need to make
+sure that an account exists on your Samba server with that exact same
+name and password.
+
+If you get "specified computer is not receiving requests" or similar
+it probably means that the host is not contactable via tcp services.
+Check to see if the host is running tcp wrappers, and if so add an entry in
+the hosts.allow file for your client (or subnet, etc.)
+
+
+TEST 9:
+--------
+
+Run the command "net use x: \\BIGSERVER\TMP". You should be prompted
+for a password then you should get a "command completed successfully"
+message. If not then your PC software is incorrectly installed or your
+smb.conf is incorrect. make sure your "hosts allow" and other config
+lines in smb.conf are correct.
+
+It's also possible that the server can't work out what user name to
+connect you as. To see if this is the problem add the line "user =
+USERNAME" to the [tmp] section of smb.conf where "USERNAME" is the
+username corresponding to the password you typed. If you find this
+fixes things you may need the username mapping option.
+
+TEST 10:
+--------
+
+Run the command "nmblookup -M TESTGROUP" where TESTGROUP is the name
+of the workgroup that your Samba server and Windows PCs belong to. You
+should get back the IP address of the master browser for that
+workgroup.
+
+If you don't then the election process has failed. Wait a minute to
+see if it is just being slow then try again. If it still fails after
+that then look at the browsing options you have set in smb.conf. Make
+sure you have "preferred master = yes" to ensure that an election is
+held at startup.
+
+TEST 11:
+--------
+
+From file manager try to browse the server. Your samba server should
+appear in the browse list of your local workgroup (or the one you
+specified in smb.conf). You should be able to double click on the name
+of the server and get a list of shares. If you get a "invalid
+password" error when you do then you are probably running WinNT and it
+is refusing to browse a server that has no encrypted password
+capability and is in user level security mode. In this case either set
+"security = server" AND "password server = Windows_NT_Machine" in your
+smb.conf file, or enable encrypted passwords AFTER compiling in support
+for encrypted passwords (refer to the Makefile).
+
+
+Still having troubles?
+----------------------
+
+Try the mailing list or newsgroup, or use the tcpdump-smb utility to
+sniff the problem. The official samba mailing list can be reached at
+samba@samba.org. To find out more about samba and how to
+subscribe to the mailing list check out the samba web page at
+              http://samba.org/samba
+
+Also look at the other docs in the Samba package!
+
diff --git a/docs/textdocs/DNIX.txt b/docs/textdocs/DNIX.txt
new file mode 100644 (file)
index 0000000..51005e6
--- /dev/null
@@ -0,0 +1,69 @@
+DNIX has a problem with seteuid() and setegid(). These routines are
+needed for Samba to work correctly, but they were left out of the DNIX
+C library for some reason.
+
+For this reason Samba by default defines the macro NO_EID in the DNIX
+section of includes.h. This works around the problem in a limited way,
+but it is far from ideal, some things still won't work right.
+
+To fix the problem properly you need to assemble the following two
+functions and then either add them to your C library or link them into
+Samba.
+
+put this in the file setegid.s:
+
+        .globl  _setegid
+_setegid:
+        moveq   #47,d0
+        movl    #100,a0
+        moveq   #1,d1
+        movl    4(sp),a1
+        trap    #9
+        bccs    1$
+        jmp     cerror
+1$:
+        clrl    d0
+        rts
+
+
+put this in the file seteuid.s:
+
+        .globl  _seteuid
+_seteuid:
+        moveq   #47,d0
+        movl    #100,a0
+        moveq   #0,d1
+        movl    4(sp),a1
+        trap    #9
+        bccs    1$
+        jmp     cerror
+1$:
+        clrl    d0
+        rts
+
+after creating the above files you then assemble them using
+
+as seteuid.s
+as setegid.s
+
+that should produce the files seteuid.o and setegid.o
+
+then you need to add these to the LIBSM line in the DNIX section of
+the Samba Makefile. Your LIBSM line will then look something like this:
+
+LIBSM = setegid.o seteuid.o -ln
+
+You should then remove the line:
+
+#define NO_EID
+
+from the DNIX section of includes.h
+
+Then recompile and try it out!
+
+Note that this file was derived from an email from Peter Olsson
+<pol@leissner.se>. I don't have DNIX myself, so you're probably better
+off contacting Peter if you have problems.
+
+Andrew
+
diff --git a/docs/textdocs/GROUP-MAPPING-HOWTO.txt b/docs/textdocs/GROUP-MAPPING-HOWTO.txt
new file mode 100644 (file)
index 0000000..c266f56
--- /dev/null
@@ -0,0 +1,60 @@
+Samba 3.0 prealpha guide to group mapping
+---------------------------------------------------
+
+Jean François Micouleau (jfm@samba.org)
+
+Starting with Samba 3.0 alpha 2, a new group mapping function is available. The
+current method (likely to change) to manage the groups is a new command called
+smbgroupedit.
+
+The first immediate reason to use the group mapping on a PDC, is that
+the 'domain admin group' of smb.conf is now gone. This parameter was
+used to give the listed users local admin rights on their
+workstations. It was some magic stuff that simply worked but didn't
+scale very well for complex setups.
+
+Let me explain how it works on NT/W2K, to have this magic fade away.
+When installing NT/W2K on a computer, the installer program creates some users
+and groups. Notably the 'Administrators' group, and gives to that group some
+privileges like the ability to change the date and time or to kill any process
+(or close too) running on the local machine. The 'Administrator' user is a
+member of the 'Administrators' group, and thus 'inherit' the 'Administrators'
+group privileges. If a 'joe' user is created and become a member of the
+'Administrator' group, 'joe' has exactly the same rights as 'Administrator'.
+
+When a NT/W2K machine is joined to a domain, during that phase, the "Domain
+Administrators' group of the PDC is added to the 'Administrators' group of the
+workstation. Every members of the 'Domain Administrators' group 'inherit' the
+rights of the 'Administrators' group when logging on the workstation.
+
+
+You are now wondering how to make some of your samba PDC users members of the
+'Domain Administrators' ? That's really easy.
+
+1) create a unix group (usually in /etc/group), let's call it domadm
+2) add to this group the users that must be Administrators. For example if you
+want joe,john and mary, your entry in /etc/group will look like:
+
+       domadm:x:502:joe,john,mary
+
+3) map this domadm group to the 'domain admins' group by running the command:
+
+   smbgroupedit -c "Domain Admins" -u domadm
+
+you're set, joe, john and mary are domain administrators !
+
+
+
+Like the Domain Admins group, you can map any arbitrary Unix group to any NT
+group. You can also make any Unix group a domain group. For example, on a domain
+member machine (an NT/W2K or a samba server running winbind), you would like to
+give access to a certain directory to some users who are member of a group on
+your samba PDC. Flag that group as a domain group by running:
+
+       smbgroupedit -a unixgroup -td
+
+
+You can list the various groups in the mapping database like this
+
+        smbgroupedit -v
+
diff --git a/docs/textdocs/INSTALL.sambatar b/docs/textdocs/INSTALL.sambatar
new file mode 100644 (file)
index 0000000..413f54d
--- /dev/null
@@ -0,0 +1,33 @@
+Contributor:   Ricky Poulten <poultenr@logica.co.uk>
+Date:          Unknown
+Status:                Current
+
+Subject:       Using smbtar
+=============================================================================
+
+Please see the readme and the man page for general info.
+
+1) Follow the samba installation instructions.
+
+2) If all goes well, test it out by creating a share on your PC (called
+backup for example) then doing something like,
+
+  ./smbtar -s mypc -t /dev/rmt/0ubn -x backup
+
+substituting whatever your tape drive is for the -t option, or set your
+tape environmental variable.
+
+If all does not go well, feel free to mail the author (poultenr@logica.co.uk)
+about bug reports / help / money / pizza / etc.
+
+3) Read the man page and the NOTES file for more information
+
+4) Work smbtar into your usual nightly backup scheme (presuming you
+have one :-}).
+
+
+NOTE:
+
+If you have problems with smbtar then it's probably best to contact the
+author Ricky Poulten (poultenr@logica.co.uk).
+
diff --git a/docs/textdocs/Imprints.txt b/docs/textdocs/Imprints.txt
new file mode 100644 (file)
index 0000000..4ea9782
--- /dev/null
@@ -0,0 +1,47 @@
+==================================================================
+
+
+Imprints (Installation Manager of Printer driver 
+Retreival and Installation for Samba) is a project to 
+implement a UNIX equivalent of the Windows NT APW.    
+It has been taken on in part by the Samba Team, VA Linux 
+Systems and Hewlett-Packard.   The Imprints toolset seeks 
+to provide central repository for users and administrators 
+to locate, download, and install all variations Window 
+95/98/NT printer drivers on Samba print servers.  
+
+The server portion of Imprints is composed of a database 
+server which contains information and locations of various 
+printer driver packages.  This server can be queried over 
+standard HTTP get requests and should therefore be available 
+to most administrators behind firewalls.  The server's 
+database consists of records containing data  about each 
+known printer driver package.  For example, each driver 
+record contains a URL from which the Imprints installation 
+client can download the package as well as a public key which 
+can be used to verify the package's integrity.
+
+Once downloaded, the installation client will attempt to 
+install the printer driver on the defined remote server 
+using the username and password provided by the administrator.  
+If the username/password pair can be authenticated by the 
+remote server (and has the appropriate authorization), then 
+the printer driver(s) is (are) installed and the new Printer 
+is created. 
+
+From Samba's point of view, the process of creating a new 
+printer via the Imprints installation client is identical to 
+that of using the Windows NT APW.  In fact, Imprints utilizes 
+Samba's rpcclient and smbclient tools to issue the same MS-RPC 
+and file copy operations as an NT client.  This means that 
+Imprints can also be used to install printers on remote Windows 
+NT print servers.
+
+For more information on Imprints, visit the project homepage 
+at 
+
+        http://imprints.sourceforge.net/.
+
+
+
+
diff --git a/docs/textdocs/Macintosh_Clients.txt b/docs/textdocs/Macintosh_Clients.txt
new file mode 100644 (file)
index 0000000..dfac97e
--- /dev/null
@@ -0,0 +1,23 @@
+> Are there any Macintosh clients for Samba?
+
+Yes. Thursby now have a CIFS Client / Server called DAVE - see
+http://www.thursby.com/
+
+They test it against Windows 95, Windows NT and samba for
+compatibility issues.  At the time of writing, DAVE was at version
+1.0.1. The 1.0.0 to 1.0.1 update is available as a free download from
+the Thursby web site (the speed of finder copies has been greatly
+enhanced, and there are bug-fixes included).
+
+Alternatives - There are two free implementations of AppleTalk for
+several kinds of UNIX machnes, and several more commercial ones.
+These products allow you to run file services and print services
+natively to Macintosh users, with no additional support required on
+the Macintosh.  The two free omplementations are Netatalk,
+http://www.umich.edu/~rsug/netatalk/, and CAP,
+http://www.cs.mu.oz.au/appletalk/atalk.html.  What Samba offers MS
+Windows users, these packages offer to Macs.  For more info on these
+packages, Samba, and Linux (and other UNIX-based systems) see
+http://www.eats.com/linux_mac_win.html
+
+
diff --git a/docs/textdocs/NetBIOS.txt b/docs/textdocs/NetBIOS.txt
new file mode 100644 (file)
index 0000000..ca0dcc8
--- /dev/null
@@ -0,0 +1,152 @@
+Contributor:    lkcl - samba@samba.org
+                Copyright 1997  Luke Kenneth Casson Leighton 
+Date:           March 1997
+Status:         Current
+Updated:        12jun97
+
+Subject:       Definition of NetBIOS Protocol and Name Resolution Modes
+=============================================================================
+
+=======
+NETBIOS
+=======
+
+NetBIOS runs over the following tranports: TCP/IP; NetBEUI and IPX/SPX.
+Samba only uses NetBIOS over TCP/IP.  For details on the TCP/IP NetBIOS 
+Session Service NetBIOS Datagram Service, and NetBIOS Names, see
+rfc1001.txt and rfc1002.txt.
+
+NetBEUI is a raw NetBIOS frame protocol implementation that allows NetBIOS
+datagrams to be sent out over the 'wire' embedded within LLC frames.
+NetBEUI is not required when using NetBIOS over TCP/IP protocols and it
+is preferable NOT to install NetBEUI if it can be avoided.
+
+IPX/SPX is also not required when using NetBIOS over TCP/IP, and it is
+preferable NOT to install the IPX/SPX transport unless you are using Novell
+servers.  At the very least, it is recommended that you do not install
+'NetBIOS over IPX/SPX'.
+
+[When installing Windows 95, you will find that NetBEUI and IPX/SPX are
+installed as the default protocols.  This is because they are the simplest
+to manage: no Windows 95 user-configuration is required].
+
+
+NetBIOS applications (such as samba) offer their services (for example,
+SMB file and print sharing) on a NetBIOS name.  They must claim this name
+on the network before doing so.  The NetBIOS session service will then
+accept connections on the application's behalf (on the NetBIOS name
+claimed by the application).  A NetBIOS session between the application
+and the client can then commence.
+
+NetBIOS names consist of 15 characters plus a 'type' character.  This is
+similar, in concept, to an IP address and a TCP port number, respectively.
+A NetBIOS-aware application on a host will offer different services under
+different NetBIOS name types, just as a host will offer different TCP/IP
+services on different port numbers.
+
+NetBIOS names must be claimed on a network, and must be defended.  The use
+of NetBIOS names is most suitable on a single subnet; a Local Area Network
+or a Wide Area Network.
+
+NetBIOS names are either UNIQUE or GROUP.  Only one application can claim a
+UNIQUE NetBIOS name on a network.
+
+There are two kinds of NetBIOS Name resolution: Broadcast and Point-to-Point.
+
+
+=================
+BROADCAST NetBIOS
+=================
+
+Clients can claim names, and therefore offer services on successfully claimed
+names, on their broadcast-isolated subnet.  One way to get NetBIOS services
+(such as browsing: see ftp.microsoft.com/drg/developr/CIFS/browdiff.txt; and
+SMB file/print sharing: see cifs4.txt) working on a LAN or WAN is to make
+your routers forward all broadcast packets from TCP/IP ports 137, 138 and 139.
+
+This, however, is not recommended.  If you have a large LAN or WAN, you will
+find that some of your hosts spend 95 percent of their time dealing with
+broadcast traffic.  [If you have IPX/SPX on your LAN or WAN, you will find
+that this is already happening: a packet analyzer will show, roughly
+every twelve minutes, great swathes of broadcast traffic!].
+
+
+============
+NBNS NetBIOS
+============
+
+rfc1001.txt describes, amongst other things, the implementation and use
+of, a 'NetBIOS Name Service'.  NT/AS offers 'Windows Internet Name Service'
+which is fully rfc1001/2 compliant, but has had to take specific action
+with certain NetBIOS names in order to make it useful.  (for example, it
+deals with the registration of <1c> <1d> <1e> names all in different ways.
+I recommend the reading of the Microsoft WINS Server Help files for full
+details).
+
+Samba also offers WINS server capabilities.  Samba does not interact
+with NT/AS (WINS replication), so if you have a mixed NT server and
+Samba server environment, it is recommended that you use the NT server's
+WINS capabilities, instead of samba's WINS server capabilities.
+
+The use of a WINS server cuts down on broadcast network traffic for
+NetBIOS name resolution.  It has the effect of pulling all the broadcast
+isolated subnets together into a single NetBIOS scope, across your LAN
+or WAN, while avoiding the use of TCP/IP broadcast packets.
+
+When you have a WINS server on your LAN, WINS clients will be able to
+contact the WINS server to resolve NetBIOS names.  Note that only those
+WINS clients that have registered with the same WINS server will be
+visible.  The WINS server _can_ have static NetBIOS entries added to its
+database (usually for security reasons you might want to consider putting
+your domain controllers or other important servers as static entries,
+but you should not rely on this as your sole means of security), but for
+the most part, NetBIOS names are registered dynamically.
+
+[It is important to mention that samba's browsing capabilities (as a WINS
+client) must have access to a WINS server.  if you are using samba also
+as a WINS server, then it will have a direct short-cut into the WINS
+database.
+
+This provides some confusion for lots of people, and is worth mentioning
+here:  a Browse Server is NOT a WINS Server, even if these services are
+implemented in the same application.  A Browse Server _needs_ a WINS server
+because a Browse Server is a WINS client, which is _not_ the same thing].
+
+Clients can claim names, and therefore offer services on successfully claimed
+names, on their broadcast-isolated subnet.  One way to get NetBIOS services
+(such as browsing: see ftp.microsoft.com/drg/developr/CIFS/browdiff.txt; and
+SMB file/print sharing: see cifs6.txt) working on a LAN or WAN is to make
+your routers forward all broadcast packets from TCP/IP ports 137, 138 and 139.
+You will find, however, if you do this on a large LAN or a WAN, that your
+network is completely swamped by NetBIOS and browsing packets, which is why
+WINS was developed to minimise the necessity of broadcast traffic.
+
+WINS Clients therefore claim names from the WINS server.  If the WINS
+server allows them to register a name, the client's NetBIOS session service
+can then offer services on this name.  Other WINS clients will then
+contact the WINS server to resolve a NetBIOS name.
+
+
+=======================
+Samba WINS Capabilities
+=======================
+
+To configure samba as a WINS server, you must add "wins support = yes" to
+the [global] section of your smb.conf file.  This will enable WINS server
+capabilities in nmbd.
+
+To configure samba as a WINS client, you must add "wins server = x.x.x.x"
+to the [global] section of your smb.conf file, where x.x.x.x is the TCP/IP
+address of your WINS server.  The browsing capabilities in nmbd will then
+register (and resolve) WAN-wide NetBIOS names with this WINS server.
+
+Note that if samba has "wins support = yes", then the browsing capabilities
+will _not_ use the "wins server" option to resolve NetBIOS names: it will
+go directly to the internal WINS database for NetBIOS name resolution.  It
+is therefore invalid to have both "wins support = yes" and
+"wins server = x.x.x.x".  Note, in particular, that if you configure the
+"wins server" parameter to be the ip address of your samba server itself
+(as might one intuitively think), that you will run into difficulties.
+Do not use both parameters!
+
+
diff --git a/docs/textdocs/Passwords.txt b/docs/textdocs/Passwords.txt
new file mode 100644 (file)
index 0000000..25d4c81
--- /dev/null
@@ -0,0 +1,46 @@
+Contributor:   Unknown
+Date:          Updated April 19th 1999.
+Status:                Current
+
+Subject:       NOTE ABOUT PASSWORDS
+=============================================================================
+
+Unix systems use a wide variety of methods for checking the validity
+of a password. This is primarily controlled with the Makefile defines
+mentioned in the Makefile.
+
+Also note that some clients (notably WfWg) uppercase the password
+before sending it. The server tries the password as it receives it and
+also after lowercasing it.
+
+The Samba server can also be configured to try different
+upper/lowercase combinations. This is controlled by the [global]
+parameter "password level". A level of N means to try all combinations
+up to N uppercase characters in the password. A high value can chew a
+fair bit of CPU time and can lower the security of your system. Do not
+use this options unless you really need it - the time taken for
+password checking can become so high that clients time out. 
+
+If you do use the "password level" option then you might like to use
+-DUFC_CRYPT in your Makefile. On some machine this makes password
+checking _much_ faster. This is also useful if you use the @group
+syntax in the user= option.
+
+If your site uses AFS (the Andrew File System), you can use the AFS section
+in the Makefile.  This will first attempt to authenticate a username and
+password to AFS.  If that succeeds, then the associated AFS rights will be
+granted.  Otherwise, the password checking routine falls back to whatever
+Unix password checking method you are using.  Note that the AFS code is
+only written and tested for AFS 3.3 and later.
+
+
+SECURITY = SERVER or DOMAIN
+===========================
+
+Samba can use a remote server to do its username/password
+validation. This allows you to have one central machine (for example a
+NT box) control the passwords for the Unix box.
+
+See the section on "security =" in smb.conf(5) for details.
+
+
diff --git a/docs/textdocs/Printing.txt b/docs/textdocs/Printing.txt
new file mode 100644 (file)
index 0000000..2c50e5f
--- /dev/null
@@ -0,0 +1,255 @@
+Contributor:   Unknown <samba@samba.org>
+Revised by:    Patrick Powell <papowell@lprng.org>
+Date:          August 11, 2000
+Status:                Current
+
+Subject:       Debugging Printing Problems
+=============================================================================
+
+This is a short description of how to debug printing problems with
+Samba. This describes how to debug problems with printing from a SMB
+client to a Samba server, not the other way around. For the reverse
+see the examples/printing directory.
+
+Please send enhancements to this file to samba@samba.org
+
+Ok, so you want to print to a Samba server from your PC. The first
+thing you need to understand is that Samba does not actually do any
+printing itself, it just acts as a middleman between your PC client
+and your Unix printing subsystem. Samba receives the file from the PC
+then passes the file to a external "print command". What print command
+you use is up to you.
+
+The whole things is controlled using options in smb.conf. The most
+relevant options (which you should look up in the smb.conf man page)
+are:
+      [global]
+        print command     - send a file to a spooler
+        lpq command       - get spool queue status
+        lprm command      - remove a job
+      [printers]
+        path = /var/spool/lpd/samba
+
+The following are nice to know about:
+
+        queuepause command   - stop a printer or print queue
+        queueresume command  - start a printer or print queue
+
+Example:
+        print command = /usr/bin/lpr -r -P%p %s
+        lpq command   = /usr/bin/lpq    -P%p %s
+        lprm command  = /usr/bin/lprm   -P%p %j
+        queuepause command = /usr/sbin/lpc -P%p stop
+        queuepause command = /usr/sbin/lpc -P%p start
+
+Samba should set reasonable defaults for these depending on your
+system type, but it isn't clairvoyant. It is not uncommon that you
+have to tweak these for local conditions.  The commands should
+always have fully specified pathnames,  as the smdb may not have
+the correct PATH values.
+
+When you send a job to Samba to be printed,  it will make a temporary
+copy of it in the directory specified in the [printers] section.
+and it should be periodically cleaned out.  The lpr -r option
+requests that the temporary copy be removed after printing; If
+printing fails then you might find leftover files in this directory,
+and it should be periodically cleaned out.  Samba used the lpq
+command to determine the "job number" assigned to your print job
+by the spooler.
+
+The %<letter> are "macros" that get dynamically replaced with appropriate
+values when they are used. The %s gets replaced with the name of the spool
+file that Samba creates and the %p gets replaced with the name of the
+printer. The %j gets replaced with the "job number" which comes from
+the lpq output.
+
+DEBUGGING PRINTER PROBLEMS
+
+One way to debug printing problems is to start by replacing these
+command with shell scripts that record the arguments and the contents
+of the print file. A simple example of this kind of things might
+be:
+
+       print command = /tmp/saveprint %p %s
+
+    #!/bin/saveprint
+    # we make sure that we are the right user
+    /usr/bin/id -p >/tmp/tmp.print
+    # we run the command and save the error messages
+    # replace the command with the one appropriate for your system
+    /usr/bin/lpr -r -P$1 $2 2>>&/tmp/tmp.print
+
+Then you print a file and try removing it.  You may find that the
+print queue needs to be stopped in order to see the queue status
+and remove the job:
+
+h4: {42} % echo hi >/tmp/hi
+h4: {43} % smbclient //localhost/lw4
+added interface ip=10.0.0.4 bcast=10.0.0.255 nmask=255.255.255.0
+Password: 
+Domain=[ASTART] OS=[Unix] Server=[Samba 2.0.7]
+smb: \> print /tmp/hi
+putting file /tmp/hi as hi-17534 (0.0 kb/s) (average 0.0 kb/s)
+smb: \> queue
+1049     3            hi-17534
+smb: \> cancel 1049
+Error cancelling job 1049 : code 0
+smb: \> cancel 1049
+Job 1049 cancelled
+smb: \> queue
+smb: \> exit
+
+The 'code 0' indicates that the job was removed.  The comment
+by the  smbclient is a bit misleading on this.
+You can observe the command output and then and look at the
+/tmp/tmp.print file to see what the results are.  You can quickly
+find out if the problem is with your printing system.  Often people
+have problems with their /etc/printcap file or permissions on
+various print queues.
+
+WHAT PRINTERS DO I HAVE
+
+You can use the 'testprns' program to check to see if the printer
+name you are using is recognized by Samba.  For example,  you can
+use:
+
+    testprns printer /etc/printcap
+
+Samba can get its printcap information from a file or from a program.
+You can try the following to see the format of the extracted
+information:
+
+    testprns -a printer /etc/printcap
+
+    testprns -a printer '|/bin/cat printcap'
+
+SETTING UP PRINTCAP AND PRINT SERVERS
+
+You may need to set up some printcaps for your Samba system to use.
+It is strongly recommended that you use the facilities provided by
+the print spooler to set up queues and printcap information.
+
+Samba requires either a printcap or program to deliver printcap
+information.  This printcap information has the format:
+
+  name|alias1|alias2...:option=value:...
+
+For almost all printing systems, the printer 'name' must be composed
+only of alphanumeric or underscore '_' characters.  Some systems also
+allow hyphens ('-') as well.  An alias is an alternative name for the
+printer,  and an alias with a space in it is used as a 'comment'
+about the printer.  The printcap format optionally uses a \ at the end of lines
+to extend the printcap to multiple lines.
+
+
+Here are some examples of printcap files:
+
+pr              just printer name
+pr|alias        printer name and alias
+pr|My Printer   printer name, alias used as comment
+pr:sh:\        Same as pr:sh:cm= testing
+  :cm= \ 
+  testing
+pr:sh           Same as pr:sh:cm= testing
+  :cm= testing
+
+Samba reads the printcap information when first started.  If you make
+changes in the printcap information, then you must do the following:
+
+a)  make sure that the print spooler is aware of these changes.
+    The LPRng system uses the 'lpc reread' command to do this.
+
+b)  make sure that the spool queues, etc., exist and have the
+    correct permissions.  The LPRng system uses the 'checkpc -f'
+    command to do this.
+
+c)  You now should send a SIGHUP signal to the smbd server to have
+    it reread the printcap information.
+
+JOB SENT, NO OUTPUT
+
+This is the most frustrating part of printing.  You may have sent the
+job,  verified that the job was forwarded,  set up a wrapper around
+the command to send the file,  but there was no output from the printer.
+
+First,  check to make sure that the job REALLY is getting to the
+right print queue.  If you are using a BSD or LPRng print spooler,
+you can temporarily stop the printing of jobs.  Jobs can still be
+submitted, but they will not be printed.  Use:
+
+  lpc -Pprinter stop
+
+Now submit a print job and then use 'lpq -Pprinter' to see if the
+job is in the print queue.  If it is not in the print queue then
+you will have to find out why it is not being accepted for printing.
+
+Next, you may want to check to see what the format of the job really
+was.  With the assistance of the system administrator you can view
+the submitted jobs files.  You may be surprised to find that these
+are not in what you would expect to call a printable format.
+You can use the UNIX 'file' utitily to determine what the job
+format actually is:
+
+    cd /var/spool/lpd/printer   # spool directory of print jobs
+    ls                          # find job files
+    file dfA001myhost
+
+You should make sure that your printer supports this format OR that
+your system administrator has installed a 'print filter' that will
+convert the file to a format appropriate for your printer.
+
+JOB SENT, STRANGE OUTPUT
+
+Once you have the job printing, you can then start worrying about
+making it print nicely.
+
+The most common problem is extra pages of output: banner pages
+OR blank pages at the end.
+
+If you are getting banner pages,  check and make sure that the
+printcap option or printer option is configured for no banners.
+If you have a printcap,  this is the :sh (suppress header or banner
+page) option.  You should have the following in your printer.
+
+   printer: ... :sh
+
+If you have this option and are still getting banner pages,  there
+is a strong chance that your printer is generating them for you
+automatically.  You should make sure that banner printing is disabled
+for the printer.  This usually requires using the printer setup software
+or procedures supplied by the printer manufacturer.
+
+If you get an extra page of output,  this could be due to problems
+with your job format,  or if you are generating PostScript jobs,
+incorrect setting on your printer driver on the MicroSoft client.
+For example, under Win95 there is a option:
+
+  Printers|Printer Name|(Right Click)Properties|Postscript|Advanced|
+
+that allows you to choose if a Ctrl-D is appended to all jobs.
+This is a very bad thing to do, as most spooling systems will
+automatically add a ^D to the end of the job if it is detected as
+PostScript.  The multiple ^D may cause an additional page of output.
+
+RAW POSTSCRIPT PRINTED
+
+This is a problem that is usually caused by either the print spooling
+system putting information at the start of the print job that makes
+the printer think the job is a text file, or your printer simply
+does not support PostScript.  You may need to enable 'Automatic
+Format Detection' on your printer.
+
+ADVANCED PRINTING
+
+Note that you can do some pretty magic things by using your
+imagination with the "print command" option and some shell scripts.
+Doing print accounting is easy by passing the %U option to a print
+command shell script. You could even make the print command detect
+the type of output and its size and send it to an appropriate
+printer.
+
+DEBUGGING
+
+If the above debug tips don't help, then maybe you need to bring in
+the bug guns, system tracing. See Tracing.txt in this directory.
+-----------------------------------------------------------------------------
diff --git a/docs/textdocs/README.sambatar b/docs/textdocs/README.sambatar
new file mode 100644 (file)
index 0000000..af7250c
--- /dev/null
@@ -0,0 +1,23 @@
+Contributor/s: Martin.Kraemer <Martin.Kraemer@mch.sni.de>
+                and Ricky Poulten (ricky@logcam.co.uk)
+Date:          Unknown - circa 1994
+Status:                Obsoleted - smbtar has been a stable part of Samba
+               since samba-1.9.13
+
+Subject:       Sambatar (now smbtar)
+=============================================================================
+
+This is version 1.4 of my small extension to samba that allows PC shares
+to be backed up directly to a UNIX tape. It only has been tested under
+Solaris 2.3, Linux 1.1.59 and DG/UX 5.4r3.10 with version 1.9.13 of samba.
+
+See the file INSTALL for installation instructions, and
+the man page and NOTES file for some basic usage. Please let me know if you
+have any problems getting it to work under your flavour of Unix.
+
+This is only (yet another) intermediate version of sambatar.
+This version also comes with an extra gift, zen.bas, written in
+microsoft qbasic by a colleague. It is (apparently) based on a 70s
+British sci-fi series known as Blake's 7. If you have any questions
+about this program, or any suggestions (e.g. what about servillan.bas
+?), feel free to mail the author (of zen.bas) greenm@lilhd.logica.com.
diff --git a/docs/textdocs/SCO.txt b/docs/textdocs/SCO.txt
new file mode 100644 (file)
index 0000000..7c01aa5
--- /dev/null
@@ -0,0 +1,19 @@
+Contributor:   Geza Makay <makayg@math.u-szeged.hu>
+Date:          Unknown
+Status:                Obsolete - Dates to SCO Unix v3.2.4 approx.
+
+Subject:       TCP/IP Bug in SCO Unix
+============================================================================
+
+There is an annoying TCPIP bug in SCO Unix. This causes corruption when
+transferring files with Samba.
+
+Geza Makay (makayg@math.u-szeged.hu) sends this information:
+
+The patch you need is UOD385 Connection Drivers SLS. It is available from
+SCO (ftp.sco.com, directory SLS, files uod385a.Z and uod385a.ltr.Z).
+
+You do not need anything else but the above patch. It installs in seconds,
+and corrected the Excel problem. We also had some other minor problems (not
+only with Samba) that disappeared by installing this patch.
+
diff --git a/docs/textdocs/SMBTAR.notes b/docs/textdocs/SMBTAR.notes
new file mode 100644 (file)
index 0000000..679d776
--- /dev/null
@@ -0,0 +1,46 @@
+Contributor:   Unknown
+Date:          1994
+Status:                Mostly Current - refer man page
+
+Subject:       Smbtar
+============================================================================
+
+Intro
+-----
+
+sambatar is just a small extension to the smbclient program distributed with
+samba. A basic front end shell script, smbtar, is provided as an interface
+to the smbclient extensions.
+
+Extensions
+----------
+
+This release adds the following extensions to smbclient,
+
+tar [c|x] filename
+  creates or restores from a tar file. The tar file may be a tape
+or a unix tar file. tar's behaviour is modified with the newer and tarmode
+commands.
+
+tarmode [full|inc|reset|noreset]
+  With no arguments, tarmode prints the current tar mode (by default full,
+noreset). In full mode, every file is backed up during a tar command.
+In incremental, only files with the dos archive bit set are backed up.
+The archive bit is reset if in reset mode, or left untouched if in noreset.
+In reset mode, the share has to be writable, which makes sambatar even
+less secure. An alternative might be to use tarmode inc noreset which
+would implement an "expanding incremental" backup (which some may prefer
+anyway).
+
+setmode <setmode string> filename
+  This is a "freebie" - nothing really to do with sambatar. This 
+is a crude attrib like command (only the other way around). Setmode string
+is a combination of +-rhsa. So for example -rh would reset the read only
+bit on filename.
+
+newer filename
+  This is in fact part of the 1.9.13 samba distribution, but comes
+into its own with sambatar. This causes tar (or get, mget, etc) to
+only copy files newer than the specified file name. Could be used
+against the previous nights (or whatever) log file to implement incremental
+backups.
diff --git a/docs/textdocs/Samba-OpenSSL.txt b/docs/textdocs/Samba-OpenSSL.txt
new file mode 100644 (file)
index 0000000..e1b54b1
--- /dev/null
@@ -0,0 +1,405 @@
+Contributor: Christian Starkjohann <cs@obdev.at>
+Date:        May 29, 1998
+Status:      
+
+Comment: Updated by Lutz Jaenicke <Lutz.Jaenicke@aet.TU-Cottbus.DE>
+Date:   July 16, 2001
+
+Subject:     Compiling and using samba with SSL support
+============================================================================
+
+What is SSL and SSLeay/OpenSSL?
+===============================
+SSL (Secure Socket Layer) is a protocol for encrypted and authenticated data
+transport. It is used by secure web servers for shopping malls, telebanking
+and things like that.
+
+SSLeay is a free implementation of the SSL protocol. The successor of it is
+OpenSSL, available from
+
+    http://www.openssl.org/
+
+The current version while these lines are written is 0.9.6b. In some countries
+encryption is plagued by legal problems, even though things have relaxed a
+lot in the last years.
+
+To compile samba with SSL support, you must first compile and install OpenSSL.
+At least version 0.9.5 of OpenSSL is required. Version 0.9.6b is the latest
+version and is strongly recommended.
+OpenSSL consists of a library (which can be linked to other applications like
+samba) and several utility programs needed for key generation, certification
+etc. OpenSSL installs to /usr/local/ssl/ by default.
+
+
+Compiling samba with OpenSSL
+============================
+1. Get and install OpenSSL. The rest of this documentation assumes that you
+   have installed it at the default location, which is /usr/local/ssl/.
+2. Call "configure" with the "--with-ssl" flag. If OpenSSL is not installed in
+   the default directory, you can use the "--with-sslinc" and "--with-ssllib"
+   flags to specify the location.
+3. Compile and install as usual.
+
+
+Configuring SSL in samba
+========================
+Before you configure SSL, you should know the basics of cryptography and how
+SSL relates to all of this. A basic introduction can be found further down in
+this document. The following variables in the "[global]" section of the
+configuration file are used to configure SSL:
+
+ssl                     = yes
+   This variable enables or disables the entire SSL mode. If it is set to
+   "no", the SSL enabled samba behaves exactly like the non-SSL samba. If set
+   to "yes", it depends on the variables "ssl hosts" and "ssl hosts resign"
+   whether an SSL connection will be required.
+ssl hosts               = 
+ssl hosts resign        = 192.168.
+   These two variables define whether samba will go into SSL mode or not. If
+   none of them is defined, samba will allow only SSL connections. If the
+   "ssl hosts" variable lists hosts (by IP-address, IP-address range, net
+   group or name), only these hosts will be forced into SSL mode. If the
+   "ssl hosts resign" variable lists hosts, only these hosts will NOT be
+   forced into SSL mode. The syntax for these two variables is the same as
+   for the "hosts allow" and "hosts deny" pair of variables, only that the
+   subject of the decision is different: It's not the access right but
+   whether SSL is used or not. See the man page of smb.conf (section about
+   "allow hosts") for details. The above example requires SSL connections
+   from all hosts outside the local net (which is 192.168.*.*).
+ssl CA certDir          = /usr/local/ssl/certs
+   This variable defines where to look up the Certification Autorities. The
+   given directory should contain one file for each CA that samba will trust.
+   The file name must be the hash value over the "Distinguished Name" of the
+   CA. How this directory is set up is explained later in this document. All
+   files within the directory that don't fit into this naming scheme are
+   ignored. You don't need this variable if you don't verify client
+   certificates.
+ssl CA certFile         = /usr/local/ssl/certs/trustedCAs.pem
+   This variable is a second way to define the trusted CAs. The certificates
+   of the trusted CAs are collected in one big file and this variable points
+   to the file. You will probably only use one of the two ways to define your
+   CAs. The first choice is preferable if you have many CAs or want to be
+   flexible, the second is perferable if you only have one CA and want to
+   keep things simple (you won't need to create the hashed file names). You
+   don't need this variable if you don't verify client certificates.
+ssl server cert         = /usr/local/ssl/certs/samba.pem
+   This is the file containing the server's certificate. The server _must_
+   have a certificate. The file may also contain the server's private key.
+   See later for how certificates and private keys are created.
+ssl server key          = /usr/local/ssl/private/samba.pem
+   This file contains the private key of the server. If this variable is not
+   defined, the key is looked up in the certificate file (it may be appended
+   to the certificate). The server _must_ have a private key and the
+   certificate _must_ match this private key.
+ssl client cert         = /usr/local/ssl/certs/smbclient.pem
+   The certificate in this file is used by smbclient if it exists. It's needed
+   if the server requires a client certificate.
+ssl client key          = /usr/local/ssl/private/smbclient.pem
+   This is the private key for smbclient. It's only needed if the client
+   should have a certificate.
+ssl require clientcert  = yes
+   If this variable is set to "yes", the server will not tolerate connections
+   from clients that don't have a valid certificate. The directory/file
+   given in "ssl CA certDir" and "ssl CA certFile" will be used to look up
+   the CAs that issued the client's certificate. If the certificate can't be
+   verified positively, the connection will be terminated.
+   If this variable is set to "no", clients don't need certificates. Contrary
+   to web applications you really _should_ require client certificates. In
+   the web environment the client's data is sensitive (credit card numbers)
+   and the server must prove to be trustworthy. In a file server environment
+   the server's data will be sensitive and the clients must prove to be
+   trustworthy.
+ssl require servercert  = yes
+   If this variable is set to "yes", the smbclient will request a certificate
+   from the server. Same as "ssl require clientcert" for the server.
+ssl ciphers             = ???
+   This variable defines the ciphers that should be offered during SSL
+   negotiation. You should not set this variable unless you know what you do.
+ssl version             = ssl2or3
+   This enumeration variable defines the versions of the SSL protocol that
+   will be used. "ssl2or3" allows dynamic negotiation of SSL v2 or v3, "ssl2"
+   results SSL v2, "ssl3" results in SSL v3 and "tls1" results in TLS v1. TLS
+   (Transport Layer Security) is the (proposed?) new standard for SSL. The
+   default value is "ssl2or3".
+ssl compatibility       = no
+   This variable defines whether SSLeay should be configured for bug
+   compatibility with other SSL implementations. This is probably not
+   desirable because currently no clients with SSL implementations other than
+   SSLeay exist.
+ssl entropy file        =
+   Specifies a file from which processes will read "random bytes" on startup.
+   In order to seed the internal pseudo random number generator, entropy
+   must be provided. On system with a /dev/urandom device file, the processes
+   will retrieve its entropy from the kernel. On systems without kernel
+   entropy support, a file can be supplied that will be read on startup
+   and that will be used to seed the PRNG.
+ssl entropy bytes      = 256
+   Number of bytes that will be read from entropy file. If -1 is given, the
+   complete file will be read.
+ssl egd socket         =
+   Location of the communiation socket of an EGD or PRNGD daemon, from which
+   entropy can be retrieved. This option can be used instead of or together
+   with the "ssl entropy file" directive. 255bytes of entropy will be
+   retrieved from the daemon.
+
+
+Running samba with OpenSSL
+==========================
+Samba is started as usual. The daemon will ask for the private key's pass
+phrase before it goes to background if the private key has been encrypted.
+If you start smbd from inetd, this won't work. Therefore you must not encrypt
+your private key if you run smbd from inetd.
+
+Windows clients will try to connect to the SSL enabled samba daemon and they
+will fail. This can fill your log with failed SSL negotiation messages. To
+avoid this, you can either not run nmbd (if all clients use DNS to look up
+the server), which will leave the Windows machine unaware of the server, or
+list all (local) Windows machines in the "ssl hosts resign" variable.
+
+
+About certificates
+==================
+Secure samba servers will not be set up for public use as it is the case with
+secure web servers. Most installations will probably use it for distributed
+offices that use parts of the internet for their intranet, for access to a
+web server that's physically hosted by the provider or simply for teleworking.
+All these applications work with a known group of users that can easily agree
+on a certification authority. The CA can be operated by the company and the
+policy for issuing certificates can be determined by the company. If samba is
+configured to verify client certificates, it (currently) only verifies
+whether a valid certificate exists. It does not verify any of the data within
+the certificate (although it prints some of the data to the log file).
+
+
+Which clients are available that support SSL?
+=============================================
+Currently there are only smbclient which is part of the samba package and
+Sharity. Shariy versions newer than 0.14 in the beta branch and 1.01 in the
+main branch can be compiled with SSLeay. Sharity is a CIFS/SMB client
+implementation for Unix. It is a commercial product, but it is available in
+source code and the demo-mode allows access to the first three layers of the
+mounted directory hierarchy. Licenses for universities and students are free.
+Sharity is available at
+
+    http://www.obdev.at/Products/Sharity.html
+
+
+
+###########################################################################
+Basics about Cryptography and SSL(eay)
+###########################################################################
+
+There are many good introductions to cryptography. I assume that the reader
+is familiar with the words "encryption", "digital signature" and RSA. If you
+don't know these terms, please read the cryptography FAQ part 6 and 7, which
+is posted to the usenet newsgroup sci.crypt. It is also available from
+
+    ftp://rtfm.mit.edu/pub/usenet/news.answers/cryptography-faq
+and
+    http://www.cis.ohio-state.edu/hypertext/faq/usenet/cryptography-faq
+
+I'll concentrate on the questions specific to SSL and samba here.
+
+
+What is a certificate?
+======================
+A certificate is issued by an issuer, usually a "Certification Authority"
+(CA), who confirms something by issuing the certificate. The subject of this
+confirmation depends on the CA's policy. CAs for secure web servers (used for
+shopping malls etc.) usually only attest that the given public key belongs the
+the given domain name. Company-wide CAs might attest that you are an employee
+of the company, that you have permissions to use a server or whatever.
+
+
+What is an X.509 certificate technically?
+=========================================
+Technically, the certificate is a block of data signed by the certificate
+issuer (the CA). The relevant fields are:
+   - unique identifier (name) of the certificate issuer
+   - time range during that the certificate is valid
+   - unique identifier (name) of the certified subject
+   - public key of the certified subject
+   - the issuer's signature over all of the above
+If this certificate should be verified, the verifier must have a table of the
+names and public keys of trusted CAs. For simplicity, these tables are lists
+of certificates issued by the respective CAs for themselves (self-signed
+certificates).
+
+
+What are the implications of this certificate structure?
+========================================================
+  - Because the certificate contains the subject's public key, the
+    certificate and the private key together are all that's needed to encrypt
+    and decrypt.
+  - To verify certificates, you need the certificates of all CAs you trust.
+  - The simplest form of a dummy-certificate is one that's signed by the
+    subject itself.
+  - A CA is needed. The client can't simply issue local certificates for
+    servers it trusts because the server determines which certificate it
+    presents.
+
+
+
+###########################################################################
+Setting up files and directories for OpenSSL
+###########################################################################
+
+The first thing you should do is to change your PATH environment variable to
+include the bin directory of OpenSSL. E.g.:
+
+    PATH=$PATH:/usr/local/ssl/bin   
+
+If your system's kernel supports a /dev/urandom device, all OpenSSL operations
+will automatically retrieve its entropy from it. If your system does not
+support /dev/urandom, you may install an EGD/PRNGD daemon for entropy
+supply or can generate seed from reading files (that should contain information
+unpredictable/unknown to attackers). Use the "-rand" option to the openssl
+commands to specify the entropy source (if /dev/urandom is not available).
+
+OpenSSL additionally keeps random seed in the $HOME/.rnd file. You can
+initialize this file using:
+    
+    openssl rand -rand /tmp/rfile.txt > $HOME/.rnd
+    rm -f /tmp/rfile.txt       # nobody must know!!
+
+or
+
+    openssl rand -rand /path/to/egd-socket > $HOME/.rnd
+
+How to create a keypair
+=======================
+This is done with 'genrsa' for RSA keys and 'gendsa' for DSA keys. For an RSA
+key with 1024 bits which is written to the file "key.pem" type:
+
+    openssl genrsa -des3 -rand /path/to/source 1024 > key.pem
+
+You will be asked for a pass phrase to protect this key. If you don't want to
+protect your private key with a pass phrase, just omit the parameter "-des3".
+If you want a different key size, replace the parameter "1024". You really
+should use a pass phrase.
+
+If you want to remove the pass phrase from a key use:
+
+    openssl rsa -in key.pem -out newkey.pem
+
+And to add or change a pass phrase:
+
+    openssl rsa -des3 -in key.pem -out newkey.pem
+
+
+How to create a dummy certificate
+=================================
+If you still have your keypair in the file "key.pem", the command
+
+    openssl req -new -x509 -key key.pem -out cert.pem
+
+will write a self-signed dummy certificate to the file "cert.pem". This can
+be used for testing or if only encryption and no certification is needed.
+Please bear in mind that encryption without authentication (certification)
+can never be secure. It's open to (at least) "man-in-the-middle" attacks.
+
+
+How to create a certificate signing request
+===========================================
+You must not simply send your keypair to the CA for signing because it
+contains the private key which _must_ be kept secret. A signing request
+consists of your public key and some additional information you want to have
+bound to that key by the certificate. If you operate a secure web server,
+this additional information will (among other things) contain the URL of
+your server in the field "Common Name". The certificate signing request is
+created from the keypair with the following command (assuming that the key
+pair is still in "key.pem"):
+
+    openssl req -new -key key.pem -out csr.pem
+
+This command will ask you for the information which must be included in the
+certificate and will write the signing request to the file "csr.pem". This
+signing request is all the CA needs for signing, at least technically. Most
+CAs will demand bureaucratic material and money, too.
+
+
+How to set up a Certification Authority (CA)
+============================================
+Being a certification authority requires a database that holds the CA's
+keypair, the CA's certificate, a list of all signed certificates and other
+information. This database is kept in a directory hierarchy below a
+configurable starting point. The starting point must be configured in the
+ssleay.conf file. This file is at /usr/local/ssl/lib/ssleay.conf if you have
+not changed the default installation path.
+
+The first thing you should do is to edit this file according to your needs.
+Let's  assume that you want to hold the CA's database at the directory
+"/usr/local/ssl/CA". Change the variable "dir" in section "CA_default" to
+this path. You may also want to edit the default settings for some variables,
+but the values given should be OK. This path is also contained in the shell
+script CA.sh, which should be at "/usr/local/ssl/bin/CA.sh". Change the path
+in the shell script:
+
+    CATOP=/usr/local/ssl/CA
+    CAKEY=./cakey.pem           # relative to $CATOP/
+    CACERT=./cacert.pem         # relative to $CATOP/private/
+
+Then create the directory "/usr/local/ssl/CA" and make it writable for the
+user that operates the CA. You should also initialize SSLeay as CA user (set
+up the random number generator). Now you should call the shell script CA.sh
+to set up the initial database:
+
+    CA.sh -newca
+
+This command will ask you whether you want to use an existing certificate or
+create one. Just press enter to create a new key pair and certificate. You
+will be asked the usual questions for certificates: the country, state, city,
+"Common Name", etc. Enter the appropriate values for the CA. When CA.sh
+finishes, it has set up a bunch of directories and files. A CA must publish
+it's certificate, which is in the file "/usr/local/ssl/CA/cacert.pem".
+
+
+How to sign a certificate request
+=================================
+After setting up the CA stuff, you can start signing certificate requests.
+Make sure that the SSLeay utilities know where the configuration file is.
+The default is compiled in, if you don't use the default location, add the
+parameter "-config <cfg-file>". Make also sure that the configuration file
+contains the correct path to the CA database. If all this is set up properly,
+you can sign the request in the file "csr.pem" with the command:
+
+    openssl ca -policy policy_anything -days 365 -infiles csr.pem >cert.pem
+
+The resulting certificate (and additional information) will be in "cert.pem".
+If you want the certificate to be valid for a period different from 365 days,
+simply change the "-days" parameter.
+
+
+How to install a new CA certificate
+===================================
+Whereever a certificate must be checked, the CA's certificate must be
+available. Let's take the common case where the client verifies the server's
+certificate. The case where the server verfies the client's certificate works
+the same way. The client receives the server's certificate, which contains
+the "Distinguished Name" of the CA. To verify whether the signature in this
+certificate is OK, it must look up the public key of that CA. Therefore each
+client must hold a database of CAs, indexed by CA name. This database is best
+kept in a directory where each file contains the certificate of one CA and is
+named after the hashvalue (checksum) of the CA's name. This section describes
+how such a database is managed technically. Whether or not to install (and
+thereby trust) a CA is a totally different matter.
+
+The client must know the directory of the CA database. This can be configured.
+There may also be a configuration option to set up a CA database file which
+contains all CA certs in one file. Let's assume that the CA database is kept
+in the directory "/usr/local/ssl/certs". The following example assumes that
+the CA's certificate is in the file "cacert.pem" and the CA is known as
+"myCA". To install the certificate, do the following:
+
+    cp cacert.pem /usr/local/ssl/cers/myCA.pem
+    cd /usr/local/ssl/certs
+    ln -s myCA.pem `openssl x509 -noout -hash < myCA.pem`.0
+
+The last command creates a link from the hashed name to the real file.
+
+From now on all certificates signed by the myCA authority will be accepted by
+clients that use the directory "/usr/local/ssl/certs/" as their CA certificate
+database.
+
+
+
diff --git a/docs/textdocs/Speed.txt b/docs/textdocs/Speed.txt
new file mode 100644 (file)
index 0000000..b82db8f
--- /dev/null
@@ -0,0 +1,338 @@
+
+Subject:       Samba performance issues
+============================================================================
+
+This file tries to outline the ways to improve the speed of a Samba server.
+
+COMPARISONS
+-----------
+
+The Samba server uses TCP to talk to the client. Thus if you are
+trying to see if it performs well you should really compare it to
+programs that use the same protocol. The most readily available
+programs for file transfer that use TCP are ftp or another TCP based
+SMB server.
+
+If you want to test against something like a NT or WfWg server then
+you will have to disable all but TCP on either the client or
+server. Otherwise you may well be using a totally different protocol
+(such as Netbeui) and comparisons may not be valid.
+
+Generally you should find that Samba performs similarly to ftp at raw
+transfer speed. It should perform quite a bit faster than NFS,
+although this very much depends on your system.
+
+Several people have done comparisons between Samba and Novell, NFS or
+WinNT. In some cases Samba performed the best, in others the worst. I
+suspect the biggest factor is not Samba vs some other system but the
+hardware and drivers used on the various systems. Given similar
+hardware Samba should certainly be competitive in speed with other
+systems.
+
+
+OPLOCKS
+-------
+
+Oplocks are the way that SMB clients get permission from a server to
+locally cache file operations. If a server grants an oplock
+(opportunistic lock) then the client is free to assume that it is the
+only one accessing the file and it will agressively cache file
+data. With some oplock types the client may even cache file open/close
+operations. This can give enormous performance benefits.
+
+With the release of Samba 1.9.18 we now correctly support opportunistic 
+locks. This is turned on by default, and can be turned off on a share-
+by-share basis by setting the parameter :
+
+oplocks = False
+
+We recommend that you leave oplocks on however, as current benchmark
+tests with NetBench seem to give approximately a 30% improvement in
+speed with them on. This is on average however, and the actual 
+improvement seen can be orders of magnitude greater, depending on
+what the client redirector is doing.
+
+Previous to Samba 1.9.18 there was a 'fake oplocks' option. This
+option has been left in the code for backwards compatibility reasons
+but it's use is now deprecated. A short summary of what the old
+code did follows.
+
+LEVEL2 OPLOCKS
+--------------
+
+With Samba 2.0.5 a new capability - level2 (read only) oplocks is
+supported (although the option is off by default - see the smb.conf
+man page for details). Turning on level2 oplocks (on a share-by-share basis)
+by setting the parameter :
+
+level2 oplocks = true 
+
+should speed concurrent access to files that are not commonly written
+to, such as application serving shares (ie. shares that contain common
+.EXE files - such as a Microsoft Office share) as it allows clients to
+read-ahread cache copies of these files.
+
+Old 'fake oplocks' option - deprecated.
+---------------------------------------
+
+Samba can also fake oplocks, by granting a oplock whenever a client 
+asks for one. This is controlled using the smb.conf option "fake 
+oplocks". If you set "fake oplocks = yes" then you are telling the 
+client that it may agressively cache the file data for all opens.
+
+Enabling 'fake oplocks' on all read-only shares or shares that you know
+will only be accessed from one client at a time you will see a big
+performance improvement on many operations. If you enable this option
+on shares where multiple clients may be accessing the files read-write
+at the same time you can get data corruption.
+
+SOCKET OPTIONS
+--------------
+
+There are a number of socket options that can greatly affect the
+performance of a TCP based server like Samba.
+
+The socket options that Samba uses are settable both on the command
+line with the -O option, or in the smb.conf file.
+
+The "socket options" section of the smb.conf manual page describes how
+to set these and gives recommendations.
+
+Getting the socket options right can make a big difference to your
+performance, but getting them wrong can degrade it by just as
+much. The correct settings are very dependent on your local network.
+
+The socket option TCP_NODELAY is the one that seems to make the
+biggest single difference for most networks. Many people report that
+adding "socket options = TCP_NODELAY" doubles the read performance of
+a Samba drive. The best explanation I have seen for this is that the
+Microsoft TCP/IP stack is slow in sending tcp ACKs.
+
+
+READ SIZE
+---------
+
+The option "read size" affects the overlap of disk reads/writes with
+network reads/writes. If the amount of data being transferred in
+several of the SMB commands (currently SMBwrite, SMBwriteX and
+SMBreadbraw) is larger than this value then the server begins writing
+the data before it has received the whole packet from the network, or
+in the case of SMBreadbraw, it begins writing to the network before
+all the data has been read from disk.
+
+This overlapping works best when the speeds of disk and network access
+are similar, having very little effect when the speed of one is much
+greater than the other.
+
+The default value is 16384, but very little experimentation has been
+done yet to determine the optimal value, and it is likely that the best
+value will vary greatly between systems anyway. A value over 65536 is
+pointless and will cause you to allocate memory unnecessarily.
+
+
+MAX XMIT
+--------
+
+At startup the client and server negotiate a "maximum transmit" size,
+which limits the size of nearly all SMB commands. You can set the
+maximum size that Samba will negotiate using the "max xmit = " option
+in smb.conf. Note that this is the maximum size of SMB request that 
+Samba will accept, but not the maximum size that the *client* will accept.
+The client maximum receive size is sent to Samba by the client and Samba
+honours this limit.
+
+It defaults to 65536 bytes (the maximum), but it is possible that some
+clients may perform better with a smaller transmit unit. Trying values
+of less than 2048 is likely to cause severe problems.
+
+In most cases the default is the best option.
+
+
+LOCKING
+-------
+
+By default Samba does not implement strict locking on each read/write
+call (although it did in previous versions). If you enable strict
+locking (using "strict locking = yes") then you may find that you
+suffer a severe performance hit on some systems.
+
+The performance hit will probably be greater on NFS mounted
+filesystems, but could be quite high even on local disks.
+
+
+SHARE MODES
+-----------
+
+Some people find that opening files is very slow. This is often
+because of the "share modes" code needed to fully implement the dos
+share modes stuff. You can disable this code using "share modes =
+no". This will gain you a lot in opening and closing files but will
+mean that (in some cases) the system won't force a second user of a
+file to open the file read-only if the first has it open
+read-write. For many applications that do their own locking this
+doesn't matter, but for some it may. Most Windows applications
+depend heavily on "share modes" working correctly and it is
+recommended that the Samba share mode support be left at the
+default of "on".
+
+The share mode code in Samba has been re-written in the 1.9.17
+release following tests with the Ziff-Davis NetBench PC Benchmarking
+tool. It is now believed that Samba 1.9.17 implements share modes
+similarly to Windows NT.
+
+NOTE: In the most recent versions of Samba there is an option to use
+shared memory via mmap() to implement the share modes. This makes
+things much faster. See the Makefile for how to enable this.
+
+
+LOG LEVEL
+---------
+
+If you set the log level (also known as "debug level") higher than 2
+then you may suffer a large drop in performance. This is because the
+server flushes the log file after each operation, which can be very
+expensive. 
+
+
+WIDE LINKS
+----------
+
+The "wide links" option is now enabled by default, but if you disable
+it (for better security) then you may suffer a performance hit in
+resolving filenames. The performance loss is lessened if you have
+"getwd cache = yes", which is now the default.
+
+
+READ RAW
+--------
+
+The "read raw" operation is designed to be an optimised, low-latency
+file read operation. A server may choose to not support it,
+however. and Samba makes support for "read raw" optional, with it
+being enabled by default.
+
+In some cases clients don't handle "read raw" very well and actually
+get lower performance using it than they get using the conventional
+read operations. 
+
+So you might like to try "read raw = no" and see what happens on your
+network. It might lower, raise or not affect your performance. Only
+testing can really tell.
+
+
+WRITE RAW
+---------
+
+The "write raw" operation is designed to be an optimised, low-latency
+file write operation. A server may choose to not support it,
+however. and Samba makes support for "write raw" optional, with it
+being enabled by default.
+
+Some machines may find "write raw" slower than normal write, in which
+case you may wish to change this option.
+
+READ PREDICTION
+---------------
+
+Samba can do read prediction on some of the SMB commands. Read
+prediction means that Samba reads some extra data on the last file it
+read while waiting for the next SMB command to arrive. It can then
+respond more quickly when the next read request arrives.
+
+This is disabled by default. You can enable it by using "read
+prediction = yes".
+
+Note that read prediction is only used on files that were opened read
+only.
+
+Read prediction should particularly help for those silly clients (such
+as "Write" under NT) which do lots of very small reads on a file.
+
+Samba will not read ahead more data than the amount specified in the
+"read size" option. It always reads ahead on 1k block boundaries.
+
+
+MEMORY MAPPING
+--------------
+
+Samba supports reading files via memory mapping them. One some
+machines this can give a large boost to performance, on others it
+makes not difference at all, and on some it may reduce performance.
+
+To enable you you have to recompile Samba with the -DUSE_MMAP option
+on the FLAGS line of the Makefile.
+
+Note that memory mapping is only used on files opened read only, and
+is not used by the "read raw" operation. Thus you may find memory
+mapping is more effective if you disable "read raw" using "read raw =
+no".
+
+
+SLOW CLIENTS
+------------
+
+One person has reported that setting the protocol to COREPLUS rather
+than LANMAN2 gave a dramatic speed improvement (from 10k/s to 150k/s).
+
+I suspect that his PC's (386sx16 based) were asking for more data than
+they could chew. I suspect a similar speed could be had by setting
+"read raw = no" and "max xmit = 2048", instead of changing the
+protocol. Lowering the "read size" might also help.
+
+
+SLOW LOGINS
+-----------
+
+Slow logins are almost always due to the password checking time. Using
+the lowest practical "password level" will improve things a lot. You
+could also enable the "UFC crypt" option in the Makefile.
+
+CLIENT TUNING
+-------------
+
+Often a speed problem can be traced to the client. The client (for
+example Windows for Workgroups) can often be tuned for better TCP
+performance.
+
+See your client docs for details. In particular, I have heard rumours
+that the WfWg options TCPWINDOWSIZE and TCPSEGMENTSIZE can have a
+large impact on performance.
+
+Also note that some people have found that setting DefaultRcvWindow in
+the [MSTCP] section of the SYSTEM.INI file under WfWg to 3072 gives a
+big improvement. I don't know why.
+
+My own experience wth DefaultRcvWindow is that I get much better
+performance with a large value (16384 or larger). Other people have
+reported that anything over 3072 slows things down enourmously. One
+person even reported a speed drop of a factor of 30 when he went from
+3072 to 8192. I don't know why.
+
+It probably depends a lot on your hardware, and the type of unix box
+you have at the other end of the link.
+
+
+MY RESULTS
+----------
+
+Some people want to see real numbers in a document like this, so here
+they are. I have a 486sx33 client running WfWg 3.11 with the 3.11b
+tcp/ip stack. It has a slow IDE drive and 20Mb of ram. It has a SMC
+Elite-16 ISA bus ethernet card. The only WfWg tuning I've done is to
+set DefaultRcvWindow in the [MSTCP] section of system.ini to 16384. My
+server is a 486dx3-66 running Linux. It also has 20Mb of ram and a SMC
+Elite-16 card. You can see my server config in the examples/tridge/
+subdirectory of the distribution.
+
+I get 490k/s on reading a 8Mb file with copy.
+I get 441k/s writing the same file to the samba server.
+
+Of course, there's a lot more to benchmarks than 2 raw throughput
+figures, but it gives you a ballpark figure.
+
+I've also tested Win95 and WinNT, and found WinNT gave me the best
+speed as a samba client. The fastest client of all (for me) is
+smbclient running on another linux box. Maybe I'll add those results
+here someday ...
+
+
diff --git a/docs/textdocs/Speed2.txt b/docs/textdocs/Speed2.txt
new file mode 100644 (file)
index 0000000..a8c3e73
--- /dev/null
@@ -0,0 +1,57 @@
+Contributor:   Paul Cochrane <paulc@dth.scot.nhs.uk>
+Organization:  Dundee Limb Fitting Centre
+Date:          Fri, 10 Apr 1998
+Subject:       Samba SPEED.TXT comment
+=============================================================================
+
+This might be relevant to Client Tuning. I have been trying various methods
+of getting win95 to talk to Samba quicker. The results I have come up with
+are:
+
+1. Install the W2setup.exe file from www.microsoft.com. This is an 
+update for the winsock stack and utilities which improve performance.
+
+2. Configure the win95 TCPIP registry settings to give better 
+perfomance. I use a program called MTUSPEED.exe which I got off the 
+net. There are various other utilities of this type freely available. 
+The setting which give the best performance for me are:
+
+(a) MaxMTU                  Remove
+(b) RWIN                    Remove
+(c) MTUAutoDiscover         Disable
+(d) MTUBlackHoleDetect      Disable
+(e) Time To Live            Enabled
+(f) Time To Live - HOPS     32
+(g) NDI Cache Size          0
+
+3. I tried virtually all of the items mentioned in the document and 
+the only one which made a difference to me was the socket options. It 
+turned out I was better off without any!!!!! 
+
+In terms of overall speed of transfer, between various win95 clients 
+and a DX2-66 20MB server with a crappy NE2000 compatible and old IDE 
+drive (Kernel 2.0.30). The transfer rate was reasonable for 10 baseT.
+
+The figures are:          Put              Get 
+P166 client 3Com card:    420-440kB/s      500-520kB/s
+P100 client 3Com card:    390-410kB/s      490-510kB/s
+DX4-75 client NE2000:     370-380kB/s      330-350kB/s
+
+I based these test on transfer two files a 4.5MB text file and a 15MB 
+textfile. The results arn't bad considering the hardware Samba is 
+running on. It's a crap machine!!!!
+
+The updates mentioned in 1 and 2 brought up the transfer rates from 
+just over 100kB/s in some clients.
+
+A new client is a P333 connected via a 100MB/s card and hub. The 
+transfer rates from this were good: 450-500kB/s on put and 600+kB/s 
+on get.
+
+Looking at standard FTP throughput, Samba is a bit slower (100kB/s 
+upwards). I suppose there is more going on in the samba protocol, but 
+if it could get up to the rate of FTP the perfomance would be quite 
+staggering.
+
+Paul Cochrane
+
diff --git a/docs/textdocs/Tracing.txt b/docs/textdocs/Tracing.txt
new file mode 100644 (file)
index 0000000..6cc1d69
--- /dev/null
@@ -0,0 +1,93 @@
+Contributor:   Andrew Tridgell <samba@samba.org>
+Date:          Old
+Status:                Questionable
+
+Subject:       How to trace samba system calls for debugging purposes
+=============================================================================
+
+This file describes how to do a system call trace on Samba to work out
+what its doing wrong. This is not for the faint of heart, but if you
+are reading this then you are probably desperate.
+
+Actually its not as bad as the the above makes it sound, just don't
+expect the output to be very pretty :-)
+
+Ok, down to business. One of the big advantages of unix systems is
+that they nearly all come with a system trace utility that allows you
+to monitor all system calls that a program is making. This is
+extremely using for debugging and also helps when trying to work out
+why something is slower than you expect. You can use system tracing
+without any special compilation options. 
+
+The system trace utility is called different things on different
+systems. On Linux systems its called strace. Under SunOS 4 its called
+trace. Under SVR4 style systems (including solaris) its called
+truss. Under many BSD systems its called ktrace. 
+
+The first thing you should do is read the man page for your native
+system call tracer. In the discussion below I'll assume its called
+strace as strace is the only portable system tracer (its available for
+free for many unix types) and its also got some of the nicest
+features.
+
+Next, try using strace on some simple commands. For example, "strace
+ls" or "strace echo hello".
+
+You'll notice that it produces a LOT of output. It is showing you the
+arguments to every system call that the program makes and the
+result. Very little happens in a program without a system call so you
+get lots of output. You'll also find that it produces a lot of
+"preamble" stuff showing the loading of shared libraries etc. Ignore
+this (unless its going wrong!)
+
+For example, the only line that really matters in the "strace echo
+hello" output is:
+
+write(1, "hello\n", 6)                  = 6
+
+all the rest is just setting up to run the program.
+
+Ok, now you're famialiar with strace. To use it on Samba you need to
+strace the running smbd daemon. The way I tend ot use it is to first
+login from my Windows PC to the Samba server, then use smbstatus to
+find which process ID that client is attached to, then as root I do
+"strace -p PID" to attach to that process. I normally redirect the
+stderr output from this command to a file for later perusal. For
+example, if I'm using a csh style shell:
+
+  strace -f -p 3872 >& strace.out
+
+or with a sh style shell:
+
+  strace -f -p 3872 > strace.out 2>&1
+
+Note the "-f" option. This is only available on some systems, and
+allows you to trace not just the current process, but any children it
+forks. This is great for finding printing problems caused by the
+"print command" being wrong.
+
+Once you are attached you then can do whatever it is on the client
+that is causing problems and you will capture all the system calls
+that smbd makes. 
+
+So how do you interpret the results? Generally I search through the
+output for strings that I know will appear when the problem
+happens. For example, if I am having touble with permissions on a file
+I would search for that files name in the strace output and look at
+the surrounding lines. Another trick is to match up file descriptor
+numbers and "follow" what happens to an open file until it is closed.
+
+Beyond this you will have to use your initiative. To give you an idea
+of wehat you are looking for here is a piece of strace output that
+shows that /dev/null is not world writeable, which causes printing to
+fail with Samba:
+
+[pid 28268] open("/dev/null", O_RDWR)   = -1 EACCES (Permission denied)
+[pid 28268] open("/dev/null", O_WRONLY) = -1 EACCES (Permission denied)
+
+the process is trying to first open /dev/null read-write then
+read-only. Both fail. This means /dev/null has incorrect permissions.
+
+Have fun!
+
+(please send updates/fixes to this file to samba@samba.org)
diff --git a/docs/textdocs/UNIX-SMB.txt b/docs/textdocs/UNIX-SMB.txt
new file mode 100644 (file)
index 0000000..c3d7643
--- /dev/null
@@ -0,0 +1,231 @@
+Contributor:   Andrew Tridgell <samba@samba.org>
+Date:          April 1995
+
+Subject:       Discussion of NetBIOS in a Unix World
+============================================================================
+
+This is a short document that describes some of the issues that
+confront a SMB implementation on unix, and how Samba copes with
+them. They may help people who are looking at unix<->PC
+interoperability.
+
+It was written to help out a person who was writing a paper on unix to
+PC connectivity.
+
+
+Usernames
+=========
+
+The SMB protocol has only a loose username concept. Early SMB
+protocols (such as CORE and COREPLUS) have no username concept at
+all. Even in later protocols clients often attempt operations
+(particularly printer operations) without first validating a username
+on the server.
+
+Unix security is based around username/password pairs. A unix box
+should not allow clients to do any substantive operation without some
+sort of validation. 
+
+The problem mostly manifests itself when the unix server is in "share
+level" security mode. This is the default mode as the alternative
+"user level" security mode usually forces a client to connect to the
+server as the same user for each connected share, which is
+inconvenient in many sites.
+
+In "share level" security the client normally gives a username in the
+"session setup" protocol, but does not supply an accompanying
+password. The client then connects to resources using the "tree
+connect" protocol, and supplies a password. The problem is that the
+user on the PC types the username and the password in different
+contexts, unaware that they need to go together to give access to the
+server. The username is normally the one the user typed in when they
+"logged onto" the PC (this assumes Windows for Workgroups). The
+password is the one they chose when connecting to the disk or printer.
+
+The user often chooses a totally different username for their login as
+for the drive connection. Often they also want to access different
+drives as different usernames. The unix server needs some way of
+divining the correct username to combine with each password.
+
+Samba tries to avoid this problem using several methods. These succeed
+in the vast majority of cases. The methods include username maps, the
+service%user syntax, the saving of session setup usernames for later
+validation and the derivation of the username from the service name
+(either directly or via the user= option).
+
+File Ownership
+==============
+
+The commonly used SMB protocols have no way of saying "you can't do
+that because you don't own the file". They have, in fact, no concept
+of file ownership at all.
+
+This brings up all sorts of interesting problems. For example, when
+you copy a file to a unix drive, and the file is world writeable but
+owned by another user the file will transfer correctly but will
+receive the wrong date. This is because the utime() call under unix
+only succeeds for the owner of the file, or root, even if the file is
+world writeable. For security reasons Samba does all file operations
+as the validated user, not root, so the utime() fails. This can stuff
+up shared development diectories as programs like "make" will not get
+file time comparisons right.
+
+There are several possible solutions to this problem, including
+username mapping, and forcing a specific username for particular
+shares.
+
+Passwords
+=========
+
+Many SMB clients uppercase passwords before sending them. I have no
+idea why they do this. Interestingly WfWg uppercases the password only
+if the server is running a protocol greater than COREPLUS, so
+obviously it isn't just the data entry routines that are to blame.
+
+Unix passwords are case sensitive. So if users use mixed case
+passwords they are in trouble.
+
+Samba can try to cope with this by either using the "password level"
+option which causes Samba to try the offered password with up to the
+specified number of case changes, or by using the "password server"
+option which allows Samba to do its validation via another machine
+(typically a WinNT server).
+
+Samba supports the password encryption method used by SMB
+clients. Note that the use of password encryption in Microsoft
+networking leads to password hashes that are "plain text equivalent".
+This means that it is *VERY* important to ensure that the Samba
+smbpasswd file containing these password hashes is only readable
+by the root user. See the documentation ENCRYPTION.txt for more
+details.
+
+
+Locking
+=======
+
+The locking calls available under a DOS/Windows environment are much
+richer than those available in unix. This means a unix server (like
+Samba) choosing to use the standard fcntl() based unix locking calls
+to implement SMB locking has to improvise a bit.
+
+One major problem is that dos locks can be in a 32 bit (unsigned)
+range. Unix locking calls are 32 bits, but are signed, giving only a 31
+bit range. Unfortunately OLE2 clients use the top bit to select a
+locking range used for OLE semaphores.
+
+To work around this problem Samba compresses the 32 bit range into 31
+bits by appropriate bit shifting. This seems to work but is not
+ideal. In a future version a separate SMB lockd may be added to cope
+with the problem.
+
+It also doesn't help that many unix lockd daemons are very buggy and
+crash at the slightest provocation. They normally go mostly unused in
+a unix environment because few unix programs use byte range
+locking. The stress of huge numbers of lock requests from dos/windows
+clients can kill the daemon on some systems.
+
+The second major problem is the "opportunistic locking" requested by
+some clients. If a client requests opportunistic locking then it is
+asking the server to notify it if anyone else tries to do something on
+the same file, at which time the client will say if it is willing to
+give up its lock. Unix has no simple way of implementing
+opportunistic locking, and currently Samba has no support for it.
+
+Deny Modes
+==========
+
+When a SMB client opens a file it asks for a particular "deny mode" to
+be placed on the file. These modes (DENY_NONE, DENY_READ, DENY_WRITE,
+DENY_ALL, DENY_FCB and DENY_DOS) specify what actions should be
+allowed by anyone else who tries to use the file at the same time. If
+DENY_READ is placed on the file, for example, then any attempt to open
+the file for reading should fail.
+
+Unix has no equivalent notion. To implement this Samba uses either lock
+files based on the files inode and placed in a separate lock
+directory or a shared memory implementation. The lock file method 
+is clumsy and consumes processing and file resources,
+the shared memory implementation is vastly prefered and is turned on
+by default for those systems that support it.
+
+Trapdoor UIDs
+=============
+
+A SMB session can run with several uids on the one socket. This
+happens when a user connects to two shares with different
+usernames. To cope with this the unix server needs to switch uids
+within the one process. On some unixes (such as SCO) this is not
+possible. This means that on those unixes the client is restricted to
+a single uid.
+
+Note that you can also get the "trapdoor uid" message for other
+reasons. Please see the FAQ for details.
+
+Port numbers
+============
+
+There is a convention that clients on sockets use high "unprivilaged"
+port numbers (>1000) and connect to servers on low "privilaged" port
+numbers. This is enforced in Unix as non-root users can't open a
+socket for listening on port numbers less than 1000.
+
+Most PC based SMB clients (such as WfWg and WinNT) don't follow this
+convention completely. The main culprit is the netbios nameserving on
+udp port 137. Name query requests come from a source port of 137. This
+is a problem when you combine it with the common firewalling technique
+of not allowing incoming packets on low port numbers. This means that
+these clients can't query a netbios nameserver on the other side of a
+low port based firewall.
+
+The problem is more severe with netbios node status queries. I've
+found that WfWg, Win95 and WinNT3.5 all respond to netbios node status
+queries on port 137 no matter what the source port was in the
+request. This works between machines that are both using port 137, but
+it means it's not possible for a unix user to do a node status request
+to any of these OSes unless they are running as root. The answer comes
+back, but it goes to port 137 which the unix user can't listen
+on. Interestingly WinNT3.1 got this right - it sends node status
+responses back to the source port in the request.
+
+
+Protocol Complexity
+===================
+
+There are many "protocol levels" in the SMB protocol. It seems that
+each time new functionality was added to a Microsoft operating system,
+they added the equivalent functions in a new protocol level of the SMB
+protocol to "externalise" the new capabilities.
+
+This means the protocol is very "rich", offering many ways of doing
+each file operation. This means SMB servers need to be complex and
+large. It also means it is very difficult to make them bug free. It is
+not just Samba that suffers from this problem, other servers such as
+WinNT don't support every variation of every call and it has almost
+certainly been a headache for MS developers to support the myriad of
+SMB calls that are available.
+
+There are about 65 "top level" operations in the SMB protocol (things
+like SMBread and SMBwrite). Some of these include hundreds of
+sub-functions (SMBtrans has at least 120 sub-functions, like
+DosPrintQAdd and NetSessionEnum). All of them take several options
+that can change the way they work. Many take dozens of possible
+"information levels" that change the structures that need to be
+returned. Samba supports all but 2 of the "top level" functions. It
+supports only 8 (so far) of the SMBtrans sub-functions. Even NT
+doesn't support them all.
+
+Samba currently supports up to the "NT LM 0.12" protocol, which is the
+one preferred by Win95 and WinNT3.5. Luckily this protocol level has a
+"capabilities" field which specifies which super-duper new-fangled
+options the server suports. This helps to make the implementation of
+this protocol level much easier.
+
+There is also a problem with the SMB specications. SMB is a X/Open
+spec, but the X/Open book is far from ideal, and fails to cover many
+important issues, leaving much to the imagination. Microsoft recently
+renamed the SMB protocol CIFS (Common Internet File System) and have 
+published new specifications. These are far superior to the old 
+X/Open documents but there are still undocumented calls and features. 
+This specification is actively being worked on by a CIFS developers 
+mailing list hosted by Microsft.
+
diff --git a/docs/textdocs/Win95.txt b/docs/textdocs/Win95.txt
new file mode 100644 (file)
index 0000000..69330c5
--- /dev/null
@@ -0,0 +1,74 @@
+Copyright (C) 1997 - Samba-Team
+Contributed Date:      August 20, 1997
+Last Update:           August 20, 1997
+
+Subject:       Windows 95 and Samba Interoperability
+===============================================================================
+
+Password Handling:
+------------------
+Microsoft periodically release updates to all their operating systems. Some of
+these are welcomed while others cause us to change the way we do things. Few
+people like change, particularly if the change is unexpected. The best advice
+always is to read the documentation provided BEFORE applying an update.
+
+One of the recent Win95 updates (VRDRUPD.EXE) disables plain text (also called
+clear text) password authentication. The effects of this updates are desirable
+where MS Windows NT is providing the password authentication service. This
+update is most undesirable where Samba must provide the authentication service
+unless Samba has been specifically configured to use encrypted passwords _AND_
+has been linked with the libdes library.
+
+If the above conditions have not been complied with, and you are using Samba,
+then Windows 95 clients will NOT be able to authenticate to a Samba server.
+
+To re-enable plain text password capabilities AFTER applying this update
+you must create a new value in the Windows 95 registry.
+
+Either foillow the following procedure or just double click on the
+file Win95_PlainPassword.reg for an easier way to do this.
+
+Procedure:
+1)     Launch the Registry Editor as follows:
+       Click on:       /Start/Run
+       Type "regedit" and press enter.
+
+2)     Double click on:        HKEY_LOCAL_MACHINE
+
+3)     Locate the following Key:
+       /HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/VxD/VNETSUP
+
+4)     From the menu bar select Edit/New/DWORD Value
+
+5)     Rename the entry from "New Value #1" to:
+               EnablePlainTextPassword
+
+6)     Press Enter, then double click on the new entry.
+       A dialog box will pop up and enable you to set a value.
+       You must set this value to 1.
+
+-------------------------------------------------------------------------------
+
+Windows 95 Updates:
+-------------------
+When using Windows 95 OEM SR2 the following updates are recommended where Samba
+is being used. Please NOTE that the above change will affect you once these
+updates  have been installed.
+
+There are more updates than the ones mentioned here. You are referred to the
+Microsoft Web site for all currently available updates to your specific version
+of Windows 95.
+
+Kernel Update: KRNLUPD.EXE
+Ping Fix:      PINGUPD.EXE
+RPC Update:    RPCRTUPD.EXE
+TCP/IP Update: VIPUPD.EXE
+Redirector Update:     VRDRUPD.EXE
+
+Also, if using MS OutLook it is desirable to install the OLEUPD.EXE fix. This
+fix may stop your machine from hanging for an extended period when exiting
+OutLook and you may also notice a significant speedup when accessing network
+neighborhood services.
+
+-------------------------------------------------------------------------------
+The above password information was provided by: Jochen Huppertz <jhu@nrh.de>
diff --git a/docs/textdocs/WinNT.txt b/docs/textdocs/WinNT.txt
new file mode 100644 (file)
index 0000000..5c72fb0
--- /dev/null
@@ -0,0 +1,104 @@
+Contributors:  Various
+               Password Section - Copyright (C) 1997 - John H Terpstra
+               Printing Section - Copyright (C) 1997 - Matthew Harrell
+               Priting Info     - Copyright (C) 1997 - Frank Varnavas
+Updated:       October 16, 1997
+Status:                Current
+
+Subject:       Samba and Windows NT Password Handling
+=============================================================================
+
+There are some particular issues with Samba and Windows NT.
+
+Passwords:
+==========
+One of the most annoying problems with WinNT is that NT refuses to
+connect to a server that is in user level security mode and that
+doesn't support password encryption unless it first prompts the user
+for a password.
+
+This means even if you have the same password on the NT box and the
+Samba server you will get prompted for a password. Entering the
+correct password will get you connected only if Windows NT can
+communicate with Samba using a compatible mode of password security.
+
+All versions of Windows NT prior to 4.0 Service Pack 3 could negotiate
+plain text (clear text) passwords. Windows NT 4.0 Service Pack 3 changed
+this default behaviour so it now will only handle encrypted passwords.
+The following registry entry change will re-enable clear text password
+handling:
+
+Run regedt32.exe and locate the hive key entry:
+HKEY_LOCAL_MACHINE\system\CurrentControlSet\Services\Rdr\Parameters\
+
+Add the following value:
+       EnablePlainTextPassword:REG_DWORD=1
+
+Alternatively, use the NT4_PlainPassword.reg file in this directory (either
+by double clicking on it, or run regedt32.exe and select "Import Registry
+File" from the "Registry" Menu).
+
+The other major ramification of this feature of NT is that it can't
+browse a user level non-encrypted server unless it already has a
+connection open. This is because there is no spot for a password
+prompt in the browser window. It works fine if you already have a
+drive mounted (for example, one auto mounted on startup).
+=====================================================================
+
+Printing:
+=========
+When you mount a printer using the print manager in NT you may find
+the following info from Matthew Harrell <harrell@leech.nrl.navy.mil>
+useful:
+
+------------
+        I noticed in your change-log you noted that some people were
+still unable to use print manager under NT.  If this is the same problem
+that I encountered, it's caused by the length of time it takes NT to
+determine if the printer is ready.
+
+The problem occurs when you double-click on a printer to connect it to
+the NT machine.  Because it's unable to determine if the printer is ready
+in the short span of time it has, it assumes it isn't and gives some
+strange error about not having enough resources (I forget what the error
+is).  A solution to this that seems to work fine for us is to click
+once on the printer, look at the bottom of the window and wait until
+it says it's ready, then clilck on "OK".
+
+By the way, this problem probably occurs in our group because the
+Samba server doesn't actually have the printers - it queues them to
+remote printers either on other machines or using their own network
+cards.  Because of this "middle layer", it takes an extra amount of
+time for the NT machine to get verification that the printer queue
+actually exists.
+
+I hope this helped in some way...
+
+=====================================================================
+Printing Info:
+--------------
+
+From: Frank Varnavas <varnavas@ny.ubs.com>
+Subject: RE: Samba as a print server
+
+When an NT client attempts to connect  to a printer  on a non-NT print
+server the attempt is failed with an error, something like:
+
+   "You have insufficient access to your computer to perform the
+    operation because a driver needs to be installed"
+
+This is  because  domain users  must  have 'Power User'  status on the
+desktop to connect to printers on a non-NT print server.
+
+This  error  occurs regardless of  whether  the driver  in question is
+already installed or not.  What it really means is  that the server is
+a non-NT  server  and the client does  not  have permission to  create
+printers  locally.   Apparently when a   connection to a  non-NT print
+server is made the printer is defined  locally.  Such an action can be
+performed   by  either a   local    administrator  or  a Power   User.
+Unfortunately there is no way to limit the powers of a Power User, nor
+is there any way to grant the Printer Creation right to another group.
+
+This permission policy is documented in PSS database WINNT, ID Q101874
+
+Frank Varnavas (varnavas@ny.ubs.com)
diff --git a/docs/textdocs/cifsntdomain.txt b/docs/textdocs/cifsntdomain.txt
new file mode 100644 (file)
index 0000000..643b895
--- /dev/null
@@ -0,0 +1,1498 @@
+NT Domain Authentication
+------------------------
+
+Authors:       - Luke Kenneth Casson Leighton (lkcl@switchboard.net)
+--------       - Paul Ashton                  (paul@argo.demon.co.uk)
+               - Duncan Stansfield            (duncans@sco.com)
+
+                 Copyright (C) 1997 Luke Kenneth Casson Leighton
+                 Copyright (C) 1997 Paul Ashton
+                 Copyright (C) 1997 Duncan Stansfield
+
+Version:       0.024 (01Nov97)
+--------
+
+Distribution:  Unlimited and encouraged, for the purposes of implementation
+-------------  and comments.  Feedback welcomed by the authors.
+
+Liability:     Absolutely none accepted implicitly or explicitly, direct
+----------     or consequentially, for use, abuse, misuse, lack of use,
+               misunderstandings, mistakes, omissions, mis-information for
+               anything in or not in, related to or not related to, or
+               pertaining to this document, or anything else that a lawyer
+               can think of or not think of.
+
+Warning:       Please bear in mind that an incorrect implementation of this
+--------       protocol can cause NT workstation to fail irrevocably, for
+               which the authors accept no liability (see above).  Please
+               contact your vendor if you have any problems.
+
+Sources:       - Packet Traces from Netmonitor (Service Pack 1 and above)
+--------       - Paul Ashton and Luke Leighton's other "NT Domain" doc.
+               - CIFS documentation - cifs6.txt
+               - CIFS documentation - cifsrap2.txt
+
+Original:      http://mailhost.cb1.com/~lkcl/cifsntdomain.txt.
+---------      (Controlled copy maintained by lkcl@switchboard.net)
+
+Credits:       - Paul Ashton: loads of work with Net Monitor; 
+--------         understanding the NT authentication system;
+                 reference implementation of the NT domain support on which
+                 this document is originally based.
+               - Duncan Stansfield: low-level analysis of MSRPC Pipes.
+               - Linus Nordberg: producing c-code from Paul's crypto spec.
+               - Windows Sourcer development team
+
+
+Contents:
+---------
+
+   1) Introduction
+
+   2) Structures and notes
+
+      2.1) Notes
+      2.3) Enumerations
+      2.3) Structures
+
+   3) Transact Named Pipe Header/Tail
+
+      3.1) MSRPC Pipes
+      3.2) Header
+      3.3) Tail
+
+   4) NTLSA Transact Named Pipe
+
+      4.1) LSA Open Policy
+      4.2) LSA Query Info Policy
+      4.3) LSA Enumerate Trusted Domains
+      4.4) LSA Open Secret
+      4.5) LSA Close
+      4.6) LSA Lookup SIDS
+      4.7) LSA Lookup Names
+
+   5) NETLOGON rpc Transact Named Pipe
+
+      5.1) LSA Request Challenge
+      5.2) LSA Authenticate 2
+      5.3) LSA Server Password Set
+      5.4) LSA SAM Logon
+      5.5) LSA SAM Logoff
+
+   6) \\MAILSLOT\NET\NTLOGON
+
+      6.1) Query for PDC
+      6.2) SAM Logon
+
+   7) SRVSVC Transact Named Pipe
+
+      7.1) Net Share Enum
+      7.2) Net Server Get Info
+
+
+Appendix:
+---------
+
+   A1) Cryptographic side of NT Domain Authentication
+   
+       A1.1) Definitions
+       A1.2) Protocol
+       A1.3) Comments
+
+   A2) SIDs and RIDs
+
+       A2.1) Well-known SIDs
+
+             A2.1.1) Universal well-known SIDs
+             A2.1.2) NT well-known SIDs
+
+       A2.2) Well-known RIDS
+      
+             A2.2.1) Well-known RID users
+             A2.2.2) Well-known RID groups
+             A2.2.3) Well-known RID aliases
+
+
+
+1) Introduction
+---------------
+
+
+This document contains information to provide an NT workstation with login
+services, without the need for an NT server.
+
+It should be possible to select a domain instead of a workgroup (in the NT
+workstation's TCP/IP settings) and after the obligatory reboot, type in a
+username, password, select a domain and successfully log in.  I would
+appreciate any feedback on your experiences with this process, and any
+comments, corrections and additions to this document.
+
+
+The packets described here can be easily derived from (and are probably
+better understood using) Netmon.exe.  You will need to use the version
+of Netmon that matches your system, in order to correctly decode the
+NETLOGON, lsarpc and srvsvc Transact pipes.  This document is derived from
+NT Service Pack 1 and its corresponding version of Netmon.  It is intended
+that an annotated packet trace be produced, which will likely be more
+instructive than this document.
+
+Also needed, to fully implement NT Domain Login Services, is the 
+document describing the cryptographic part of the NT authentication.
+This document is available from comp.protocols.smb; from the ntsecurity.net
+digest and from the samba digest, amongst other sources.
+
+A copy is available from:
+
+http://ntbugtraq.rc.on.ca/SCRIPTS/WA.EXE?A2=ind9708&L=ntbugtraq&O=A&P=2935
+http://mailhost.cb1.com/~lkcl/crypt.html
+
+
+A c-code implementation, provided by Linus Nordberg <linus@incolumitas.se>
+of this protocol is available from:
+
+http://samba.org/cgi-bin/mfs/01/digest/1997/97aug/0391.html
+http://mailhost.cb1.com/~lkcl/crypt.txt
+
+
+Also used to provide debugging information is the Check Build version of
+NT workstation, and enabling full debugging in NETLOGON.  This is
+achieved by setting the following REG_SZ registry key to 0x1ffffff:
+
+HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters
+
+- Incorrect direct editing of the registry can cause your machine to fail.
+  Then again, so can incorrect implementation of this protocol.
+  See "Liability:" above.
+
+
+Bear in mind that each packet over-the-wire will have its origin in an
+API call.  Therefore, there are likely to be structures, enumerations
+and defines that are usefully documented elsewhere.
+
+
+This document is by no means complete or authoritative.  Missing sections
+include, but are not limited to:
+
+- the meaning (and use by NT) of SIDs and RIDs.
+
+- mappings of RIDs to usernames (and vice-versa).
+
+- what a User ID is and what a Group ID is.
+
+- the exact meaning/definition of various magic constants or enumerations.
+
+- the reply error code and use of that error code when a workstation
+  becomes a member of a domain (to be described later).  Failure to
+  return this error code will make the workstation report that it is
+  already a member of the domain.
+
+- the cryptographic side of the NetrServerPasswordSet command, which would
+  allow the workstation to change its password.  This password is used to
+  generate the long-term session key.  [It is possible to reject this
+  command, and keep the default workstation password].
+   
+
+2) Notes and Structures
+-----------------------
+
+
+2.1) Notes
+----------
+
+- In the SMB Transact pipes, some "Structures", described here, appear to be
+  4-byte aligned with the SMB header, at their start.  Exactly which
+  "Structures" need aligning is not precisely known or documented.
+
+- In the UDP NTLOGON Mailslots, some "Structures", described here, appear to be
+  2-byte aligned with the start of the mailslot, at their start.
+
+- Domain SID is of the format S-revision-version-auth1-auth2...authN.
+  e.g S-1-5-123-456-789-123-456.  the 5 could be a sub-revision.
+
+- any undocumented buffer pointers must be non-zero if the string buffer it
+  refers to contains characters.  exactly what value they should be is unknown.
+  0x0000 0002 seems to do the trick to indicate that the buffer exists.  a
+  NULL buffer pointer indicates that the string buffer is of zero length.
+  If the buffer pointer is NULL, then it is suspected that the structure it
+  refers to is NOT put into (or taken out of) the SMB data stream.  This is
+  empirically derived from, for example, the LSA SAM Logon response packet,
+  where if the buffer pointer is NULL, the user information is not inserted
+  into the data stream.  Exactly what happens with an array of buffer pointers
+  is not known, although an educated guess can be made.
+
+- an array of structures (a container) appears to have a count and a pointer.
+  if the count is zero, the pointer is also zero.  no further data is put
+  into or taken out of the SMB data stream.  if the count is non-zero, then
+  the pointer is also non-zero.  immediately following the pointer is the
+  count again, followed by an array of container sub-structures.  the count
+  appears a third time after the last sub-structure.
+
+  
+2.2) Enumerations
+-----------------
+
+- MSRPC Header type.  command number in the msrpc packet header
+
+    MSRPC_Request:   0x00
+    MSRPC_Response:  0x02
+    MSRPC_Bind:      0x0B
+    MSRPC_BindAck:   0x0C
+
+- MSRPC Packet info.  the meaning of these flags is undocumented
+
+    FirstFrag:     0x01 
+    LastFrag:      0x02 
+    NotaFrag:      0x04  
+    RecRespond:    0x08  
+    NoMultiplex:   0x10  
+    NotForIdemp:   0x20  
+    NotforBcast:   0x40  
+    NoUuid:        0x80 
+
+
+2.3) Structures
+---------------
+
+- sizeof VOID* is 32 bits.
+
+- sizeof char is 8 bits.
+
+- UTIME is 32 bits, indicating time in seconds since 01jan1970.  documented
+  in cifs6.txt (section 3.5 page, page 30).
+
+- NTTIME is 64 bits.  documented in cifs6.txt (section 3.5 page, page 30).
+
+- DOM_SID (domain SID structure) :
+
+        UINT32             num of sub-authorities in domain SID
+        UINT8              SID revision number
+        UINT8              num of sub-authorities in domain SID
+        UINT8[6]           6 bytes for domain SID - Identifier Authority.
+        UINT16[n_subauths] domain SID sub-authorities
+
+  Note: the domain SID is documented elsewhere.
+
+- STR (string) :
+
+        char[]             null-terminated string of ascii characters.
+
+- UNIHDR (unicode string header) :
+
+        UINT16             length of unicode string
+        UINT16             max length of unicode string
+        UINT32             4 - undocumented.
+   
+- UNIHDR2 (unicode string header plus buffer pointer) :
+
+        UNIHDR             unicode string header
+        VOID*              undocumented buffer pointer
+
+- UNISTR (unicode string) :
+
+        UINT16[]           null-terminated string of unicode characters.
+
+- NAME (length-indicated unicode string) :
+
+        UINT32             length of unicode string
+        UINT16[]           null-terminated string of unicode characters.
+
+- UNISTR2 (aligned unicode string) :
+
+        UINT8[]            padding to get unicode string 4-byte aligned
+                           with the start of the SMB header.
+        UINT32             max length of unicode string
+        UINT32             0 - undocumented
+        UINT32             length of unicode string
+        UINT16[]           string of uncode characters.
+
+- OBJ_ATTR (object attributes) :
+
+        UINT32             0x18 - length (in bytes) including the length field.
+        VOID*              0 - root directory (pointer)
+        VOID*              0 - object name (pointer)
+        UINT32             0 - attributes (undocumented)
+        VOID*              0 - security descriptior (pointer)
+        UINT32             0 - security quality of service
+        
+- POL_HND (LSA policy handle) :
+
+    char[20]           policy handle
+
+- DOM_SID2 (domain SID structure, SIDS stored in unicode) :
+
+        UINT32             5 - SID type
+        UINT32             0 - undocumented
+        UNIHDR2            domain SID unicode string header
+        UNISTR             domain SID unicode string
+
+  Note:        there is a conflict between the unicode string header and the
+       unicode string itself as to which to use to indicate string
+       length.  this will need to be resolved.
+
+  Note:        the SID type indicates, for example, an alias; a well-known group etc.
+       this is documented somewhere.
+
+- DOM_RID (domain RID structure) :
+
+        UINT32             5 - well-known SID.  1 - user SID (see ShowACLs)
+        UINT32             5 - undocumented
+        UINT32             domain RID 
+        UINT32             0 - domain index out of above reference domains
+        
+
+- LOG_INFO (server, account, client structure) :
+
+  Note:        logon server name starts with two '\' characters and is upper case.
+
+  Note:        account name is the logon client name from the LSA Request Challenge,
+       with a $ on the end of it, in upper case.
+
+        VOID*       undocumented buffer pointer
+        UNISTR2     logon server unicode string
+        UNISTR2     account name unicode string
+        UINT16      sec_chan - security channel type
+        UNISTR2     logon client machine unicode string
+
+- CLNT_SRV (server, client names structure) :
+
+  Note:        logon server name starts with two '\' characters and is upper case.
+
+        VOID*       undocumented buffer pointer
+        UNISTR2     logon server unicode string
+        VOID*       undocumented buffer pointer
+        UNISTR2     logon client machine unicode string
+
+- CREDS (credentials + time stamp)
+
+        char[8]     credentials
+        UTIME       time stamp
+    
+- CLNT_INFO2 (server, client structure, client credentials) :
+
+  Note: whenever this structure appears in a request, you must take a copy
+       of the client-calculated credentials received, because they will be
+       used in subsequent credential checks.  the presumed intention is to
+       maintain an authenticated request/response trail.
+        
+        CLNT_SRV     client and server names
+        UINT8[]      ???? padding, for 4-byte alignment with SMB header.
+        VOID*        pointer to client credentials.
+        CREDS        client-calculated credentials + client time
+
+- CLNT_INFO (server, account, client structure, client credentials) :
+
+  Note: whenever this structure appears in a request, you must take a copy
+       of the client-calculated credentials received, because they will be
+       used in subsequent credential checks.  the presumed intention is to
+       maintain an authenticated request/response trail.
+        
+        LOG_INFO    logon account info
+        CREDS       client-calculated credentials + client time
+
+- ID_INFO_1 (id info structure, auth level 1) :
+
+    VOID*         ptr_id_info_1
+    UNIHDR        domain name unicode header
+    UINT32        param control
+    UINT64        logon ID
+    UNIHDR        user name unicode header
+    UNIHDR        workgroup name unicode header
+    char[16]      arc4 LM OWF Password
+    char[16]      arc4 NT OWF Password
+    UNISTR2       domain name unicode string
+    UNISTR2       user name unicode string
+    UNISTR2       workstation name unicode string
+
+- SAM_INFO (sam logon/logoff id info structure) :
+
+  Note: presumably, the return credentials is supposedly for the server to
+        verify that the credential chain hasn't been compromised.
+
+        CLNT_INFO2  client identification/authentication info
+        VOID*       pointer to return credentials.
+        CRED        return credentials - ignored.
+        UINT16      logon level
+        UINT16      switch value
+
+        switch (switch_value)
+        case 1:
+        {
+            ID_INFO_1     id_info_1;
+        }
+
+- GID (group id info) :
+
+        UINT32      group id
+        UINT32      user attributes (only used by NT 3.1 and 3.51)
+
+- DOM_REF (domain reference info) :
+
+        VOID*                    undocumented buffer pointer.
+        UINT32                   num referenced domains?
+        VOID*                    undocumented domain name buffer pointer.
+        UINT32                   32 - max number of entries
+        UINT32                   4 - num referenced domains?
+
+        UNIHDR2                  domain name unicode string header
+        UNIHDR2[num_ref_doms-1]  referenced domain unicode string headers
+
+        UNISTR                   domain name unicode string
+        DOM_SID[num_ref_doms]    referenced domain SIDs
+
+- DOM_INFO (domain info, levels 3 and 5 are the same)) :
+
+        UINT8[]     ??? padding to get 4-byte alignment with start of SMB header
+        UINT16      domain name string length * 2
+        UINT16      domain name string length * 2
+        VOID*       undocumented domain name string buffer pointer
+        VOID*       undocumented domain SID string buffer pointer
+        UNISTR2     domain name (unicode string)
+        DOM_SID     domain SID
+
+- USER_INFO (user logon info) :
+
+    Note: it would be nice to know what the 16 byte user session key is for.
+
+        NTTIME            logon time
+        NTTIME            logoff time
+        NTTIME            kickoff time
+        NTTIME            password last set time
+        NTTIME            password can change time
+        NTTIME            password must change time
+
+        UNIHDR            username unicode string header
+        UNIHDR            user's full name unicode string header
+        UNIHDR            logon script unicode string header
+        UNIHDR            profile path unicode string header
+        UNIHDR            home directory unicode string header
+        UNIHDR            home directory drive unicode string header
+
+        UINT16            logon count
+        UINT16            bad password count
+
+        UINT32            User ID
+        UINT32            Group ID
+        UINT32            num groups
+        VOID*             undocumented buffer pointer to groups.
+
+        UINT32            user flags
+        char[16]          user session key
+
+        UNIHDR            logon server unicode string header
+        UNIHDR            logon domain unicode string header
+        VOID*             undocumented logon domain id pointer
+        char[40]          40 undocumented padding bytes.  future expansion?
+
+        UINT32            0 - num_other_sids?
+        VOID*             NULL - undocumented pointer to other domain SIDs.
+        
+        UNISTR2           username unicode string
+        UNISTR2           user's full name unicode string
+        UNISTR2           logon script unicode string
+        UNISTR2           profile path unicode string
+        UNISTR2           home directory unicode string
+        UNISTR2           home directory drive unicode string
+
+        UINT32            num groups
+        GID[num_groups]   group info
+
+        UNISTR2           logon server unicode string
+        UNISTR2           logon domain unicode string
+
+        DOM_SID           domain SID
+        DOM_SID[num_sids] other domain SIDs?
+
+- SH_INFO_1_PTR (pointers to level 1 share info strings):
+
+Note:  see cifsrap2.txt section5, page 10.
+
+       0 for shi1_type indicates a  Disk.
+       1 for shi1_type indicates a  Print Queue.
+       2 for shi1_type indicates a  Device.
+       3 for shi1_type indicates an IPC pipe.
+       0x8000 0000 (top bit set in shi1_type) indicates a hidden share.
+
+        VOID*        shi1_netname - pointer to net name
+        UINT32       shi1_type    - type of share.  0 - undocumented.
+        VOID*        shi1_remark  - pointer to comment.
+
+- SH_INFO_1_STR (level 1 share info strings) :
+
+        UNISTR2      shi1_netname - unicode string of net name
+        UNISTR2      shi1_remark  - unicode string of comment.
+
+- SHARE_INFO_1_CTR :
+
+    share container with 0 entries:
+
+        UINT32        0 - EntriesRead
+        UINT32        0 - Buffer
+
+    share container with > 0 entries:
+
+        UINT32                      EntriesRead
+        UINT32                      non-zero - Buffer
+        UINT32                      EntriesRead
+
+        SH_INFO_1_PTR[EntriesRead]  share entry pointers
+        SH_INFO_1_STR[EntriesRead]  share entry strings
+
+        UINT8[]                     padding to get unicode string 4-byte
+                                    aligned with start of the SMB header.
+        UINT32                      EntriesRead
+       UINT32                      0 - padding
+
+- SERVER_INFO_101 :
+
+Note:  see cifs6.txt section 6.4 - the fields described therein will be
+       of assistance here.  for example, the type listed below is the
+       same as fServerType, which is described in 6.4.1.
+
+       SV_TYPE_WORKSTATION        0x00000001  All workstations
+       SV_TYPE_SERVER             0x00000002  All servers
+       SV_TYPE_SQLSERVER          0x00000004  Any server running with SQL
+                                              server
+       SV_TYPE_DOMAIN_CTRL        0x00000008  Primary domain controller
+       SV_TYPE_DOMAIN_BAKCTRL     0x00000010  Backup domain controller
+       SV_TYPE_TIME_SOURCE        0x00000020  Server running the timesource
+                                              service
+       SV_TYPE_AFP                0x00000040  Apple File Protocol servers
+       SV_TYPE_NOVELL             0x00000080  Novell servers
+       SV_TYPE_DOMAIN_MEMBER      0x00000100  Domain Member
+       SV_TYPE_PRINTQ_SERVER      0x00000200  Server sharing print queue
+       SV_TYPE_DIALIN_SERVER      0x00000400  Server running dialin service.
+       SV_TYPE_XENIX_SERVER       0x00000800  Xenix server
+       SV_TYPE_NT                 0x00001000  NT server
+       SV_TYPE_WFW                0x00002000  Server running Windows for
+
+       SV_TYPE_SERVER_NT          0x00008000  Windows NT non DC server
+       SV_TYPE_POTENTIAL_BROWSER  0x00010000  Server that can run the browser
+                                              service
+       SV_TYPE_BACKUP_BROWSER     0x00020000  Backup browser server
+       SV_TYPE_MASTER_BROWSER     0x00040000  Master browser server
+       SV_TYPE_DOMAIN_MASTER      0x00080000  Domain Master Browser server
+       SV_TYPE_LOCAL_LIST_ONLY    0x40000000  Enumerate only entries marked
+                                              "local"
+       SV_TYPE_DOMAIN_ENUM        0x80000000  Enumerate Domains. The pszServer
+                                              and pszDomain parameters must be
+                                              NULL.
+
+        UINT32        500 - platform_id
+        VOID*         pointer to name
+        UINT32        5 - major version
+        UINT32        4 - minor version
+        UINT32        type (SV_TYPE_... bit field)
+        VOID*         pointer to comment
+
+        UNISTR2       sv101_name - unicode string of server name
+        UNISTR2       sv_101_comment  - unicode string of server comment.
+
+        UINT8[]       padding to get unicode string 4-byte
+                      aligned with start of the SMB header.
+
+
+
+3) MSRPC over Transact Named Pipe
+---------------------------------
+
+For details on the SMB Transact Named Pipe, see cifs6.txt
+
+
+3.1) MSRPC Pipes
+----------------
+
+The MSRPC is conducted over an SMB Transact Pipe with a name of "\PIPE\".
+You must first obtain a 16 bit file handle, by sending a SMBopenX with the
+pipe name "\PIPE\srvsvc" for example.  You can then perform an SMB Trans,
+and must carry out an SMBclose on the file handle once you are finished.
+
+Trans Requests must be sent with two setup UINT16s, no UINT16 params (none
+known about), and UINT8 data parameters sufficient to contain the MSRPC
+header, and MSRPC data.  The first UINT16 setup parameter must be either
+0x0026 to indicate an RPC, or 0x0001 to indicate Set Named Pipe Handle
+state.  The second UINT16 parameter must be the file handle for the pipe,
+obtained above.
+
+The Data section for an API Command of 0x0026 (RPC pipe) in the Trans
+Request is the RPC Header, followed by the RPC Data.  The Data section for
+an API Command of 0x0001 (Set Named Pipe Handle state) is two bytes.  The
+only value seen for these two bytes is 0x00 0x43.
+
+
+MSRPC Responses are sent as response data inside standard SMB Trans
+responses, with the MSRPC Header, MSRPC Data and MSRPC tail.
+
+
+It is suspected that the Trans Requests will need to be at least 2-byte
+aligned (probably 4-byte).  This is standard practice for SMBs.  It is also
+independent of the observed 4-byte alignments with the start of the MSRPC
+header, including the 4-byte alignment between the MSRPC header and the
+MSRPC data.
+
+
+First, an SMBtconX connection is made to the IPC$ share.  The connection
+must be made using encrypted passwords, not clear-text.  Then, an SMBopenX
+is made on the pipe.  Then, a Set Named Pipe Handle State must be sent,
+after which the pipe is ready to accept API commands.  Lastly, and SMBclose
+is sent.
+
+
+To be resolved:
+
+    lkcl/01nov97 there appear to be two additional bytes after the null-
+    terminated \PIPE\ name for the RPC pipe.  Values seen so far are
+    listed below:
+
+        initial SMBopenX request:         RPC API command 0x26 params:
+
+        "\\PIPE\\lsarpc"                  0x65 0x63; 0x72 0x70; 0x44 0x65;
+        "\\PIPE\\srvsvc"                  0x73 0x76; 0x4E 0x00; 0x5C 0x43;
+
+
+3.2) Header
+-----------
+
+[section to be rewritten, following receipt of work by Duncan Stansfield]
+
+
+Interesting note: if you set packed data representation to 0x0100 0000
+then all 4-byte and 2-byte word ordering is turned around!
+
+The start of each of the NTLSA and NETLOGON named pipes begins with:
+
+00  UINT8         5 - RPC major version
+01  UINT8         0 - RPC minor version
+02  UINT8         2 - RPC response packet
+03  UINT8         3 - (FirstFrag bit-wise or with LastFrag)
+04  UINT32        0x1000 0000 - packed data representation
+08  UINT16        fragment length - data size (bytes) inc header and tail.
+0A  UINT16        0 - authentication length 
+0C  UINT32        call identifier.  matches 12th UINT32 of incoming RPC data.
+10  UINT32        allocation hint - data size (bytes) minus header and tail.
+14  UINT16        0 - presentation context identifier
+16  UINT8         0 - cancel count
+17  UINT8         in replies: 0 - reserved; in requests: opnum - see #defines.
+18  ......        start of data (goes on for allocation_hint bytes)
+
+
+RPC_Packet for request, response, bind and bind acknowledgement.
+{
+  
+  UINT8 versionmaj        # reply same as request (0x05)
+  UINT8 versionmin        # reply same as request (0x00)
+  UINT8 type              # one of the MSRPC_Type enums
+  UINT8 flags             # reply same as request (0x00 for Bind, 0x03 for Request)
+  UINT32 representation   # reply same as request (0x00000010)
+  UINT16 fraglength       # the length of the data section of the SMB trans packet
+  UINT16 authlength       
+  UINT32 callid           # call identifier. (e.g. 0x00149594)
+
+  * stub USE TvPacket     # the remainder of the packet depending on the "type"
+}
+
+
+# the interfaces are numbered. as yet I haven't seen more than one interface
+# used on the same pipe name
+# srvsvc
+#   abstract (0x4B324FC8, 0x01D31670, 0x475A7812, 0x88E16EBF, 0x00000003)
+#   transfer (0x8A885D04, 0x11C91CEB, 0x0008E89F, 0x6048102B, 0x00000002)
+RPC_Iface RW
+{
+  UINT8 byte[16]    # 16 bytes of number
+  UINT32 version    # the interface number
+}
+
+
+# the remainder of the packet after the header if "type" was Bind
+# in the response header, "type" should be BindAck
+RPC_ReqBind RW
+{
+  UINT16 maxtsize       # maximum transmission fragment size (0x1630)
+  UINT16 maxrsize       # max receive fragment size (0x1630)
+  UINT32 assocgid       # associated group id (0x0)
+  UINT32 numelements    # the number of elements (0x1)
+  UINT16 contextid      # presentation context identifier (0x0)
+  UINT8 numsyntaxes     # the number of syntaxes (has always been 1?)(0x1)
+  UINT8[]               # 4-byte alignment padding, against SMB header
+
+  * abstractint USE RPC_Iface # num and vers. of interface client is using
+  * transferint USE RPC_Iface # num and vers. of interface to use for replies
+}
+
+
+RPC_Address RW
+{
+  UINT16 length        # length of the string including null terminator
+  * port USE string    # the string above in single byte, null terminated form
+}
+
+
+# the response to place after the header in the reply packet
+RPC_ResBind RW
+{
+  UINT16 maxtsize                   # same as request
+  UINT16 maxrsize                   # same as request
+  UINT32 assocgid                   # zero
+
+  * secondaddr USE RPC_Address     # the address string, as described earlier
+
+  UINT8[]                           # 4-byte alignment padding, against SMB header
+
+  UINT8 numresults                  # the number of results (0x01)
+
+  UINT8[]                           # 4-byte alignment padding, against SMB header
+  UINT16 result                     # result (0x00 = accept)
+  UINT16 reason                     # reason (0x00 = no reason specified)
+
+  * transfersyntax USE RPC_Iface   # the transfer syntax from the request
+}
+
+
+# the remainder of the packet after the header for every other other
+# request
+RPC_ReqNorm RW
+{
+  UINT32 allochint         # the size of the stub data in bytes
+  UINT16 prescontext       # presentation context identifier (0x0)
+  UINT16 opnum             # operation number (0x15)
+
+  * stub USE TvPacket      # a packet dependent on the pipe name
+                           # (probably the interface) and the op number)
+}
+
+
+# response to a request
+RPC_ResNorm RW
+{
+  UINT32 allochint         # size of the stub data in bytes
+  UINT16 prescontext       # presentation context identifier (same as request)
+  UINT8 cancelcount        # cancel count? (0x0)
+  UINT8 reserved           # 0 - one byte padding
+
+  * stub USE TvPacket      # the remainder of the reply
+}
+
+
+3.3) Tail
+---------
+
+The end of each of the NTLSA and NETLOGON named pipes ends with:
+
+    ......        end of data
+    UINT32        return code
+
+
+
+3.4 RPC Bind / Bind Ack
+-----------------------
+
+RPC Binds are the process of associating an RPC pipe (e.g \PIPE\lsarpc)
+with a "transfer syntax" (see RPC_Iface structure).  The purpose for doing
+this is unknown.
+
+Note:  The RPC_ResBind SMB Transact request is sent with two uint16 setup
+       parameters.  The first is 0x0026; the second is the file handle
+       returned by the SMBopenX Transact response.
+
+Note:  The RPC_ResBind members maxtsize, maxrsize and assocgid are the
+       same in the response as the same members in the RPC_ReqBind.  The
+       RPC_ResBind member transfersyntax is the same in the response as
+       the
+
+Note:  The RPC_ResBind response member secondaddr contains the name
+       of what is presumed to be the service behind the RPC pipe.  The
+       mapping identified so far is:
+
+               initial SMBopenX request:          RPC_ResBind response:
+
+               "\\PIPE\\srvsvc"                   "\\PIPE\\ntsvcs"
+               "\\PIPE\\samr"                     "\\PIPE\\lsass"
+               "\\PIPE\\lsarpc"                   "\\PIPE\\lsass"
+               "\\PIPE\\wkssvc"                   "\\PIPE\\wksvcs"
+               "\\PIPE\\NETLOGON"                 "\\PIPE\\NETLOGON"
+
+Note:  The RPC_Packet fraglength member in both the Bind Request and Bind
+       Acknowledgment must contain the length of the entire RPC data,
+       including the RPC_Packet header.  
+
+Request:
+
+    RPC_Packet
+    RPC_ReqBind
+
+Response:
+
+    RPC_Packet
+    RPC_ResBind
+
+
+
+4) NTLSA Transact Named Pipe
+----------------------------
+        
+The sequence of actions taken on this pipe are:
+
+- Establish a connection to the IPC$ share (SMBtconX).  use encrypted passwords.
+- Open an RPC Pipe with the name "\\PIPE\\lsarpc".  Store the file handle.
+- Using the file handle, send a Set Named Pipe Handle state to 0x4300.
+- Send an LSA Open Policy request.  Store the Policy Handle.
+- Using the Policy Handle, send LSA Query Info Policy requests, etc.
+- Using the Policy Handle, send an LSA Close.
+- Close the IPC$ share.
+
+
+Defines for this pipe, identifying the query are:
+
+- LSA Open Policy:               0x2c
+- LSA Query Info Policy:         0x07
+- LSA Enumerate Trusted Domains: 0x0d
+- LSA Open Secret:               0xff
+- LSA Lookup SIDs:               0xfe
+- LSA Lookup Names:              0xfd
+- LSA Close:                     0x00
+
+
+4.1) LSA Open Policy
+--------------------
+
+Note:  The policy handle can be anything you like.
+
+Request:
+
+       VOID*     buffer pointer
+    UNISTR2   server name - unicode string starting with two '\'s
+    OBJ_ATTR  object attributes
+    UINT32    1 - desired access
+
+Response:
+
+    POL_HND   LSA policy handle
+
+    return    0 - indicates success
+
+
+4.2) LSA Query Info Policy
+--------------------------
+
+Note:  The info class in response must be the same as that in the request.
+
+Request:
+
+    POL_HND   LSA policy handle
+    UINT16    info class (also a policy handle?)
+
+Response:
+
+    VOID*     undocumented buffer pointer
+    UINT16    info class (same as info class in request).
+    
+    switch (info class)
+    case 3:
+    case 5:
+    {
+        DOM_INFO domain info, levels 3 and 5 (are the same).
+    }
+
+    return    0 - indicates success
+
+
+4.3) LSA Enumerate Trusted Domains
+----------------------------------
+
+Request:
+
+    no extra data
+
+Response:
+
+    UINT32     0 - enumeration context
+    UINT32     0 - entries read
+    UINT32     0 - trust information
+
+    return     0x8000 001a - "no trusted domains" success code
+
+
+4.4) LSA Open Secret
+--------------------
+
+Request:
+
+    no extra data
+
+Response:
+
+    UINT32    0 - undocumented
+    UINT32    0 - undocumented
+    UINT32    0 - undocumented
+    UINT32    0 - undocumented
+    UINT32    0 - undocumented
+
+    return    0x0C00 0034 - "no such secret" success code
+
+
+4.5) LSA Close
+--------------
+
+Request:
+
+    POL_HND   policy handle to be closed
+
+Response:
+
+    POL_HND   0s - closed policy handle (all zeros)
+
+    return    0 - indicates success
+
+
+4.6) LSA Lookup SIDS
+--------------------
+
+Note:  num_entries in response must be same as num_entries in request.
+
+Request:
+
+    POL_HND            LSA policy handle
+    UINT32             num_entries
+    VOID*              undocumented domain SID buffer pointer
+    VOID*              undocumented domain name buffer pointer
+    VOID*[num_entries] undocumented domain SID pointers to be looked up.
+    DOM_SID[num_entries] domain SIDs to be looked up.
+    char[16]           completely undocumented 16 bytes.
+
+Response:
+
+    DOM_REF               domain reference response
+
+    UINT32                num_entries (listed above)
+    VOID*                 undocumented buffer pointer
+
+    UINT32                num_entries (listed above)
+    DOM_SID2[num_entries] domain SIDs (from Request, listed above).
+
+    UINT32                num_entries (listed above)
+
+    return                0 - indicates success
+
+
+4.7) LSA Lookup Names
+---------------------
+
+Note:  num_entries in response must be same as num_entries in request.
+
+Request:
+
+    POL_HND            LSA policy handle
+    UINT32             num_entries
+    UINT32             num_entries
+    VOID*              undocumented domain SID buffer pointer
+    VOID*              undocumented domain name buffer pointer
+    NAME[num_entries]  names to be looked up.
+    char[]             undocumented bytes - falsely translated SID structure?
+
+Response:
+
+    DOM_REF               domain reference response
+
+    UINT32                num_entries (listed above)
+    VOID*                 undocumented buffer pointer
+
+    UINT32                num_entries (listed above)
+    DOM_RID[num_entries]  domain SIDs (from Request, listed above).
+
+    UINT32                num_entries (listed above)
+
+    return                0 - indicates success
+
+
+
+5) NETLOGON rpc Transact Named Pipe
+-----------------------------------
+
+The sequence of actions taken on this pipe are:
+
+- Establish a connection to the IPC$ share (SMBtconX).  use encrypted passwords.
+- Open an RPC Pipe with the name "\\PIPE\\NETLOGON".  Store the file handle.
+- Using the file handle, send a Set Named Pipe Handle state to 0x4300.
+- Create Client Challenge. Send LSA Request Challenge.  Store Server Challenge.
+- Calculate Session Key.  Send an LSA Auth 2 Challenge.  Store Auth2 Challenge.
+- Calc/Verify Client Creds.  Send LSA Srv PW Set.  Calc/Verify Server Creds.
+- Calc/Verify Client Creds.  Send LSA SAM Logon .  Calc/Verify Server Creds.
+- Calc/Verify Client Creds.  Send LSA SAM Logoff.  Calc/Verify Server Creds.
+- Close the IPC$ share.
+
+
+Defines for this pipe, identifying the query are:
+
+- LSA Request Challenge:         0x04
+- LSA Server Password Set:       0x06
+- LSA SAM Logon:                 0x02
+- LSA SAM Logoff:                0x03
+- LSA Auth 2:                    0x0f
+- LSA Logon Control:             0x0e
+
+
+5.1) LSA Request Challenge
+--------------------------
+
+Note:  logon server name starts with two '\' characters and is upper case.
+
+Note:  logon client is the machine, not the user.
+
+Note:  the initial LanManager password hash, against which the challenge
+       is issued, is the machine name itself (lower case).  there will be
+       calls issued (LSA Server Password Set) which will change this, later.
+       refusing these calls allows you to always deal with the same password
+       (i.e the LM# of the machine name in lower case).
+
+Request:
+
+    VOID*       undocumented buffer pointer
+    UNISTR2     logon server unicode string
+    UNISTR2     logon client unicode string
+    char[8]     client challenge
+
+Response:
+
+    char[8]     server challenge
+
+    return    0 - indicates success
+
+
+
+5.2) LSA Authenticate 2
+-----------------------
+
+Note:  in between request and response, calculate the client credentials,
+       and check them against the client-calculated credentials (this
+       process uses the previously received client credentials).
+
+Note:  neg_flags in the response is the same as that in the request.
+
+Note:  you must take a copy of the client-calculated credentials received
+       here, because they will be used in subsequent authentication packets.
+
+Request:
+
+    LOG_INFO    client identification info
+
+    char[8]     client-calculated credentials
+    UINT8[]     padding to 4-byte align with start of SMB header.
+    UINT32      neg_flags - negotiated flags (usual value is 0x0000 01ff)
+
+Response:
+
+    char[8]     server credentials.
+    UINT32      neg_flags - same as neg_flags in request.
+
+    return    0 - indicates success.  failure value unknown.
+
+
+5.3) LSA Server Password Set
+----------------------------
+
+Note:  the new password is suspected to be a DES encryption using the old
+       password to generate the key.
+
+Note:  in between request and response, calculate the client credentials,
+       and check them against the client-calculated credentials (this
+       process uses the previously received client credentials).
+
+Note:  the server credentials are constructed from the client-calculated
+       credentials and the client time + 1 second.
+
+Note:  you must take a copy of the client-calculated credentials received
+       here, because they will be used in subsequent authentication packets.
+
+Request:
+
+    CLNT_INFO   client identification/authentication info
+    char[]      new password - undocumented.
+    
+Response:
+
+    CREDS       server credentials.  server time stamp appears to be ignored.
+
+    return    0 - indicates success; 0xC000 006a indicates failure
+
+
+5.4) LSA SAM Logon
+------------------
+
+Note:  valid_user is True iff the username and password hash are valid for
+       the requested domain.
+
+Request:
+
+    SAM_INFO    sam_id structure
+
+Response:
+
+    VOID*       undocumented buffer pointer
+    CREDS       server credentials.  server time stamp appears to be ignored.
+    
+    if (valid_user)
+    {
+               UINT16      3 - switch value indicating USER_INFO structure.
+        VOID*     non-zero - pointer to USER_INFO structure
+        USER_INFO user logon information
+
+        UINT32    1 - Authoritative response; 0 - Non-Auth?
+
+        return    0 - indicates success
+    }
+    else
+    {
+               UINT16    0 - switch value.  value to indicate no user presumed.
+        VOID*     0x0000 0000 - indicates no USER_INFO structure.
+
+        UINT32    1 - Authoritative response; 0 - Non-Auth?
+
+        return    0xC000 0064 - NT_STATUS_NO_SUCH_USER.
+    }
+
+
+5.5) LSA SAM Logoff
+--------------------
+
+Note:  presumably, the SAM_INFO structure is validated, and a (currently
+       undocumented) error code returned if the Logoff is invalid.
+
+Request:
+
+    SAM_INFO    sam_id structure
+
+Response:
+
+    VOID*       undocumented buffer pointer
+    CREDS       server credentials.  server time stamp appears to be ignored.
+
+    return      0 - indicates success.  undocumented failure indication.
+
+
+6) \\MAILSLOT\NET\NTLOGON
+-------------------------
+
+Note:  mailslots will contain a response mailslot, to which the response
+       should be sent.  the target NetBIOS name is REQUEST_NAME<20>, where
+       REQUEST_NAME is the name of the machine that sent the request.
+
+
+6.1) Query for PDC
+------------------
+
+Note:  NTversion, LMNTtoken, LM20token in response are the same as those
+       given in the request.
+
+Request:
+
+    UINT16         0x0007 - Query for PDC
+    STR            machine name
+    STR            response mailslot
+    UINT8[]        padding to 2-byte align with start of mailslot.
+    UNISTR         machine name
+    UINT32         NTversion
+    UINT16         LMNTtoken
+    UINT16         LM20token
+
+Response:
+
+    UINT16         0x000A - Respose to Query for PDC
+    STR            machine name (in uppercase)
+    UINT8[]        padding to 2-byte align with start of mailslot.
+    UNISTR         machine name
+    UNISTR         domain name
+    UINT32         NTversion (same as received in request)
+    UINT16         LMNTtoken (same as received in request)
+    UINT16         LM20token (same as received in request)
+
+
+6.2) SAM Logon
+--------------
+
+Note:  machine name in response is preceded by two '\' characters.
+
+Note:  NTversion, LMNTtoken, LM20token in response are the same as those
+       given in the request.
+
+Note:  user name in the response is presumably the same as that in the request.
+
+Request:
+
+    UINT16         0x0012 - SAM Logon
+    UINT16         request count
+    UNISTR         machine name
+    UNISTR         user name
+    STR            response mailslot
+    UINT32         alloweable account
+    UINT32         domain SID size
+    char[sid_size] domain SID, of sid_size bytes.
+    UINT8[]        ???? padding to 4? 2? -byte align with start of mailslot.
+    UINT32         NTversion
+    UINT16         LMNTtoken
+    UINT16         LM20token
+    
+Response:
+
+    UINT16         0x0013 - Response to SAM Logon
+    UNISTR         machine name
+    UNISTR         user name - workstation trust account
+    UNISTR         domain name 
+    UINT32         NTversion
+    UINT16         LMNTtoken
+    UINT16         LM20token
+
+
+
+7) SRVSVC Transact Named Pipe
+-----------------------------
+
+
+Defines for this pipe, identifying the query are:
+
+- Net Share Enum :              0x0f
+- Net Server Get Info :         0x15
+
+
+7.1) Net Share Enum
+------------------
+
+Note:  share level and switch value in the response are presumably the 
+       same as those in the request.
+
+Note:  cifsrap2.txt (section 5) may be of limited assistance here.
+
+Request:
+
+    VOID*             pointer (to server name?)
+       UNISTR2           server name
+
+    UINT8[]           padding to get unicode string 4-byte aligned
+                      with the start of the SMB header.
+
+    UINT32            share level
+    UINT32            switch value
+
+    VOID*             pointer to SHARE_INFO_1_CTR
+    SHARE_INFO_1_CTR  share info with 0 entries
+
+    UINT32            preferred maximum length (0xffff ffff)
+
+Response:
+
+    UINT32            share level
+    UINT32            switch value
+
+    VOID*             pointer to SHARE_INFO_1_CTR
+    SHARE_INFO_1_CTR  share info (only added if share info ptr is non-zero)
+
+    return            0 - indicates success
+
+
+7.2) Net Server Get Info
+------------------
+
+Note:  level is the same value as in the request.
+
+Request:
+
+       UNISTR2           server name
+    UINT32            switch level
+
+Response:
+
+    UINT32            switch level
+    VOID*             pointer to SERVER_INFO_101
+
+    SERVER_INFO_101   server info (only added if server info ptr is non-zero)
+
+    return            0 - indicates success
+
+
+
+Appendix
+--------
+
+A1) Cryptographic side of NT Domain Authentication
+--------------------------------------------------
+
+
+A1.1) Definitions
+-----------------
+
+Add(A1,A2): Intel byte ordered addition of corresponding 4 byte words
+in arrays A1 and A2
+
+E(K,D): DES ECB encryption of 8 byte data D using 7 byte key K
+
+lmowf(): Lan man hash
+
+ntowf(): NT hash
+
+PW: md4(machine_password) == md4(lsadump $machine.acc) ==
+pwdump(machine$) (initially) == md4(lmowf(unicode(machine)))
+
+ARC4(K,Lk,D,Ld): ARC4 encryption of data D of length Ld with key K of
+length Lk
+
+v[m..n(,l)]: subset of v from bytes m to n, optionally padded with
+zeroes to length l
+
+Cred(K,D): E(K[7..7,7],E(K[0..6],D)) computes a credential
+
+Time(): 4 byte current time
+
+Cc,Cs: 8 byte client and server challenges Rc,Rs: 8 byte client and
+server credentials
+
+
+A1.2) Protocol
+--------------
+
+C->S ReqChal,Cc S->C Cs
+
+C & S compute session key Ks = E(PW[9..15],E(PW[0..6],Add(Cc,Cs)))
+
+C: Rc = Cred(Ks,Cc) C->S Authenticate,Rc S: Rs = Cred(Ks,Cs),
+assert(Rc == Cred(Ks,Cc)) S->C Rs C: assert(Rs == Cred(Ks,Cs))
+
+On joining the domain the client will optionally attempt to change its
+password and the domain controller may refuse to update it depending
+on registry settings. This will also occur weekly afterwards.
+
+C: Tc = Time(), Rc' = Cred(Ks,Rc+Tc) C->S ServerPasswordSet,Rc',Tc,
+arc4(Ks[0..7,16],lmowf(randompassword()) C: Rc = Cred(Ks,Rc+Tc+1) S:
+assert(Rc' == Cred(Ks,Rc+Tc)), Ts = Time() S: Rs' = Cred(Ks,Rs+Tc+1)
+S->C Rs',Ts C: assert(Rs' == Cred(Ks,Rs+Tc+1)) S: Rs = Rs'
+
+User: U with password P wishes to login to the domain (incidental data
+such as workstation and domain omitted)
+
+C: Tc = Time(), Rc' = Cred(Ks,Rc+Tc) C->S NetLogonSamLogon,Rc',Tc,U,
+arc4(Ks[0..7,16],16,ntowf(P),16), arc4(Ks[0..7,16],16,lmowf(P),16) S:
+assert(Rc' == Cred(Ks,Rc+Tc)) assert(passwords match those in SAM) S:
+Ts = Time()
+
+S->C Cred(Ks,Cred(Ks,Rc+Tc+1)),userinfo(logon script,UID,SIDs,etc) C:
+assert(Rs == Cred(Ks,Cred(Rc+Tc+1)) C: Rc = Cred(Ks,Rc+Tc+1)
+
+
+A1.3) Comments
+--------------
+
+On first joining the domain the session key could be computed by
+anyone listening in on the network as the machine password has a well
+known value. Until the machine is rebooted it will use this session
+key to encrypt NT and LM one way functions of passwords which are
+password equivalents. Any user who logs in before the machine has been
+rebooted a second time will have their password equivalent exposed. Of
+course the new machine password is exposed at this time anyway.
+
+None of the returned user info such as logon script, profile path and
+SIDs *appear* to be protected by anything other than the TCP checksum.
+
+The server time stamps appear to be ignored.
+
+The client sends a ReturnAuthenticator in the SamLogon request which I
+can't find a use for.  However its time is used as the timestamp
+returned by the server.
+
+The password OWFs should NOT be sent over the network reversibly
+encrypted. They should be sent using ARC4(Ks,md4(owf)) with the server
+computing the same function using the owf values in the SAM.
+
+
+A2) SIDs and RIDs
+-----------------
+
+SIDs and RIDs are well documented elsewhere.
+
+A SID is an NT Security ID (see DOM_SID structure).  They are of the form:
+
+       S-revision-NN-SubAuth1-SubAuth2-SubAuth3... 
+       S-revision-0xNNNNNNNNNNNN-SubAuth1-SubAuth2-SubAuth3...
+
+currently, the SID revision is 1.
+The Sub-Authorities are known as Relative IDs (RIDs).
+
+
+A2.1) Well-known SIDs
+---------------------
+
+
+A2.1.1) Universal well-known SIDs
+---------------------------------
+
+       Null SID                     S-1-0-0
+       World                        S-1-1-0
+       Local                        S-1-2-0
+       Creator Owner ID             S-1-3-0
+       Creator Group ID             S-1-3-1
+       Creator Owner Server ID      S-1-3-2
+       Creator Group Server ID      S-1-3-3
+       
+       (Non-unique IDs)             S-1-4
+
+
+A2.1.2) NT well-known SIDs
+--------------------------
+
+       NT Authority          S-1-5
+       Dialup                S-1-5-1
+
+       Network               S-1-5-2
+       Batch                 S-1-5-3
+       Interactive           S-1-5-4
+       Service               S-1-5-6
+       AnonymousLogon        S-1-5-7       (aka null logon session)
+       Proxy                 S-1-5-8
+       ServerLogon           S-1-5-8       (aka domain controller account)
+       
+       (Logon IDs)           S-1-5-5-X-Y
+       
+       (NT non-unique IDs)   S-1-5-0x15-...
+       
+       (Built-in domain)     s-1-5-0x20
+       
+
+
+A2.2) Well-known RIDS
+---------------------
+
+A RID is a sub-authority value, as part of either a SID, or in the case
+of Group RIDs, part of the DOM_GID structure, in the USER_INFO_1
+structure, in the LSA SAM Logon response.
+
+
+A2.2.1) Well-known RID users
+----------------------------
+
+       DOMAIN_USER_RID_ADMIN          0x0000 01F4
+       DOMAIN_USER_RID_GUEST          0x0000 01F5
+
+
+
+A2.2.2) Well-known RID groups
+----------------------------
+
+       DOMAIN_GROUP_RID_ADMINS        0x0000 0200
+       DOMAIN_GROUP_RID_USERS         0x0000 0201
+       DOMAIN_GROUP_RID_GUESTS        0x0000 0202
+
+
+
+A2.2.3) Well-known RID aliases
+------------------------------
+
+       DOMAIN_ALIAS_RID_ADMINS        0x0000 0220
+       DOMAIN_ALIAS_RID_USERS         0x0000 0221
+       DOMAIN_ALIAS_RID_GUESTS        0x0000 0222
+       DOMAIN_ALIAS_RID_POWER_USERS   0x0000 0223
+
+       DOMAIN_ALIAS_RID_ACCOUNT_OPS   0x0000 0224
+       DOMAIN_ALIAS_RID_SYSTEM_OPS    0x0000 0225
+       DOMAIN_ALIAS_RID_PRINT_OPS     0x0000 0226
+       DOMAIN_ALIAS_RID_BACKUP_OPS    0x0000 0227
+
+       DOMAIN_ALIAS_RID_REPLICATOR    0x0000 0228
+
+
diff --git a/docs/textdocs/outdated/NTDOMAIN.txt b/docs/textdocs/outdated/NTDOMAIN.txt
new file mode 100644 (file)
index 0000000..8408acb
--- /dev/null
@@ -0,0 +1,51 @@
+!==
+!== NTDOMAIN.txt for Samba release 2.0.4 18 May 1999
+!==
+Contributor:   Luke Kenneth Casson Leighton (samba-bugs@samba.org)
+               Copyright (C) 1997 Luke Kenneth Casson Leighton
+Created:       October 20, 1997
+Updated:       February 25, 1999 (Jerry Carter)
+
+Subject:       NT Domain Logons
+===========================================================================
+
+As of 1.9.18alpha1, Samba supports logins for NT 3.51 and 4.0 Workstations,
+without the need, use or intervention of NT Server.  This document describes
+how to set this up.  Over the continued development of the 1.9.18alpha
+series, this process (and therefore this document) should become simpler.
+
+One useful thing to do is to get this version of Samba up and running
+with Win95 profiles, as you would for the current stable version of
+Samba (currently at 1.9.17p4), and is fully documented.  You will need
+to set up encrypted passwords.  Even if you don't have any Win95 machines,
+using your Samba Server to store the profile for one of your NT Workstation
+users is a good test that you have 1.9.18alpha1 correctly configured *prior*
+to attempting NT Domain Logons.
+
+The support is still experimental, so should be used at your own risk.
+
+NT is not as robust as you might have been led to believe: during the
+development of the Domain Logon Support, one person reported having to
+reinstall NT from scratch: their workstation had become totally unuseable.
+
+[further reports on ntsec@iss.net by independent administrators showing
+ similar symptoms lead us to believe that the SAM database file may be
+ corruptible.  this _is_ recoverable (or, at least the machine is accessible),
+ by deleting the SAM file, under which circumstances all user account details
+ are lost, but at least the Administrator can log in with a blank password.
+ this is *not* possible except if the NT system is installed in a FAT
+ partition.]
+
+This *has* been reported to the NTBUGTRAQ@LISTSERV.NTBUGTRAQ.COM digest.
+
+==========================================================================
+Please note that Samba 2.0 does not **officially** support domain logons
+for Windows NT clients.  Of course, domain logon support for Windows 9x
+clients is complete and official.  These are two different issues.
+
+Samba's capability to act as a Primary Domain Controller for Windows NT
+domains is not advertised as it is not completed yet.  For more information 
+regarding how to obtain the latest development (HEAD branch) source code
+and what features are available, please refer to the NT Domain FAQ on-line
+at the Samba web site under the documentation page.
+
diff --git a/docs/textdocs/outdated/PROJECTS b/docs/textdocs/outdated/PROJECTS
new file mode 100644 (file)
index 0000000..3008bea
--- /dev/null
@@ -0,0 +1,88 @@
+                 Samba Projects Directory
+                 ========================
+
+
+>>>>> NOTE: THIS FILE IS NOW VERY OUT OF DATE <<<<<
+
+
+This is a list of who's working on what in Samba. It's not guaranteed
+to be uptodate or accurate but I hope it will help us getting
+coordinated.
+
+If you are working on something to do with Samba and you aren't here
+then please let me know! Also, if you are listed below and you have
+any corrections or updates then please let me know.
+
+Email contact:
+samba-bugs@samba.org
+
+========================================================================
+Documentation and FAQ
+
+Docs and FAQ files for the Samba suite of software.
+
+Contact samba-bugs@samba.org with the diffs. These are urgently 
+required. 
+
+The FAQ is being added to on an ad hoc basis, see the web pages for info.
+
+Mark Preston was working on a set of formatted docs for Samba. Is this
+still happening? Contact mpreston@sghms.ac.uk
+
+Status last updated 2nd October 1996
+========================================================================
+
+========================================================================
+Netbeui support
+
+This aimed to produce patches so that Samba can be used with clients
+that do not have TCP/IP. It will try to remain as portable as possible.
+Contact Brian.Onn@Canada.Sun.COM (Brian Onn) Unfortunately it died, and
+although a lot of people have expressed interest nobody has come forward
+to do it. The Novell port (see Samba web pages) includes NetBEUI 
+functionality in a proprietrary library which should still be helpful as 
+we have the interfaces. Alan Cox (a.cox@li.org) has the information 
+required to write the state machine if someone is going to do the work.
+
+Status last updated 2nd October 1996
+========================================================================
+
+========================================================================
+Smbfs
+
+A mountable smb filesystem for Linux using the userfs userspace filesystem
+
+Contact lendecke@namu01.gwdg.de (Volker Lendecke)
+
+This works really well, and is measurably more efficient than commercial
+client software. It is now part of the Linux kernel. Long filename support
+is in use.
+
+Status last updated June 1997
+========================================================================
+
+========================================================================
+Admin Tool
+
+Aims to produce a nice smb.conf editor and other useful tools for
+administering a Samba system.
+
+Contact: Steve Brown (steve@unicorn.dungeon.com)
+
+In the design phase.
+
+Status last updated 4th September 1994
+========================================================================
+
+
+========================================================================
+Lanman Client.
+
+Contact: john@amanda.xs4all.nl (John Stewart)
+
+Aims to produce a reliable LANMAN Client implementation for LINUX,
+and possibly other variations of UNIX. Project ably started by
+Tor Lillqvist; tml@hemuli.tte.vtt.fi
+
+Status last updated 17th January 1995
+========================================================================
diff --git a/docs/textdocs/security_level.txt b/docs/textdocs/security_level.txt
new file mode 100644 (file)
index 0000000..f4e0df7
--- /dev/null
@@ -0,0 +1,100 @@
+Contributor:   Andrew Tridgell
+Updated:       June 27, 1997
+Status:                Current
+
+Subject:       Description of SMB security levels.
+===========================================================================
+
+Samba supports the following options to the global smb.conf parameter
+"security =":
+       share, user, server
+
+Note: Samba-2.0.0 now adds the "domain" security mode. Please refer to
+the smb.conf man page for usage information and to the document
+docs/textdocs/DOMAIN_MEMBER.txt for further background details.
+
+Of the above, "security = server" means that Samba reports to clients that
+it is running in "user mode" but actually passes off all authentication
+requests to another "user mode" server. This requires an additional
+parameter "password server =" that points to the real authentication server.
+That real authentication server can be another Samba server or can be a
+Windows NT server, the later natively capable of encrypted password support.
+
+Below is a more complete description of security levels.
+===========================================================================
+
+A SMB server tells the client at startup what "security level" it is
+running. There are two options "share level" and "user level". Which
+of these two the client receives affects the way the client then tries
+to authenticate itself. It does not directly affect (to any great
+extent) the way the Samba server does security. I know this is
+strange, but it fits in with the client/server approach of SMB. In SMB
+everything is initiated and controlled by the client, and the server
+can only tell the client what is available and whether an action is
+allowed. 
+
+I'll describe user level security first, as its simpler. In user level
+security the client will send a "session setup" command directly after
+the protocol negotiation. This contains a username and password. The
+server can either accept or reject that username/password
+combination. Note that at this stage the server has no idea what
+share the client will eventually try to connect to, so it can't base
+the "accept/reject" on anything other than:
+
+- the username/password
+- the machine that the client is coming from
+
+If the server accepts the username/password then the client expects to
+be able to mount any share (using a "tree connection") without
+specifying a password. It expects that all access rights will be as
+the username/password specified in the "session setup". 
+
+It is also possible for a client to send multiple "session setup"
+requests. When the server responds it gives the client a "uid" to use
+as an authentication tag for that username/password. The client can
+maintain multiple authentication contexts in this way (WinDD is an
+example of an application that does this)
+
+
+Ok, now for share level security. In share level security the client
+authenticates itself separately for each share. It will send a
+password along with each "tree connection" (share mount). It does not
+explicitly send a username with this operation. The client is
+expecting a password to be associated with each share, independent of
+the user. This means that samba has to work out what username the
+client probably wants to use. It is never explicitly sent the
+username. Some commercial SMB servers such as NT actually associate
+passwords directly with shares in share level security, but samba
+always uses the unix authentication scheme where it is a
+username/password that is authenticated, not a "share/password".
+
+Many clients send a "session setup" even if the server is in share
+level security. They normally send a valid username but no
+password. Samba records this username in a list of "possible
+usernames". When the client then does a "tree connection" it also adds
+to this list the name of the share they try to connect to (useful for
+home directories) and any users listed in the "user =" smb.conf
+line. The password is then checked in turn against these "possible
+usernames". If a match is found then the client is authenticated as
+that user.
+
+Finally "server level" security. In server level security the samba
+server reports to the client that it is in user level security. The
+client then does a "session setup" as described earlier. The samba
+server takes the username/password that the client sends and attempts
+to login to the "password server" by sending exactly the same
+username/password that it got from the client. If that server is in
+user level security and accepts the password then samba accepts the
+clients connection. This allows the samba server to use another SMB
+server as the "password server". 
+
+You should also note that at the very start of all this, where the
+server tells the client what security level it is in, it also tells
+the client if it supports encryption. If it does then it supplies the
+client with a random "cryptkey". The client will then send all
+passwords in encrypted form. You have to compile samba with encryption
+enabled to support this feature, and you have to maintain a separate
+smbpasswd file with SMB style encrypted passwords. It is
+cryptographically impossible to translate from unix style encryption
+to SMB style encryption, although there are some fairly simple management
+schemes by which the two could be kept in sync.
diff --git a/docs/yodldocs/README-NOW b/docs/yodldocs/README-NOW
new file mode 100644 (file)
index 0000000..592d38c
--- /dev/null
@@ -0,0 +1,14 @@
+!==
+!== Notice of change of documentation format
+!==
+
+Samba is no longer using yodl as the source markup
+language for our documentation.  As of release 2.2.0,
+we are using DocBook V4.1 exclusively (assuming you are not
+counting the ASCII files yet to be converted).
+
+Please see ../docbook/docbook.txt for more information
+on this.
+
+jerry carter
+SAMBA Team
diff --git a/examples/VFS/Makefile b/examples/VFS/Makefile
new file mode 100644 (file)
index 0000000..f93cd0c
--- /dev/null
@@ -0,0 +1,37 @@
+#
+# Makefile for samba-vfs examples
+#
+#
+
+# Variables
+
+CC = gcc
+LIBTOOL = libtool
+
+SAMBA_SRC = ../../source
+SAMBA_INCL = ../../source/include
+POPT_INCL = ../../source/popt
+UBIQX_SRC = ../../source/ubiqx
+SMBWR_SRC = ../../source/smbwrapper
+KRB5_SRC = /usr/kerberos/include
+CFLAGS = -I$(SAMBA_SRC) -I$(SAMBA_INCL) -I$(POPT_INCL) -I$(UBIQX_SRC) -I$(SMBWR_SRC) -I$(KRB5_SRC) -Wall -g
+VFS_OBJS = audit.so skel.so recycle.so
+
+# Default target
+
+default: $(VFS_OBJS)
+
+# Pattern rules
+
+%.so: %.lo
+       $(LIBTOOL) $(CC) -shared -o $@ $< $(LDFLAGS)
+
+%.lo: %.c
+       $(LIBTOOL) $(CC) $(CPPFLAGS) $(CFLAGS) -c $<
+
+# Misc targets
+
+clean:
+       rm -rf .libs
+       rm -f core *~ *% *.bak \
+               $(VFS_OBJS) $(VFS_OBJS:.so=.o) $(VFS_OBJS:.so=.lo) 
index 46e1a90263b9b3c5dc23384312f103b6bc39ae54..3126dfa3b835af94e10380b0da74fa1a5ee1132e 100644 (file)
@@ -1,24 +1,42 @@
+MAKEFILE       = Makefile.vfs
+
+include        $(MAKEFILE)
+
 CC             = @CC@
-CFLAGS         = @CFLAGS@
-CPPFLAGS       = @CPPFLAGS@
-LDFLAGS                = @LDFLAGS@
+LIBTOOL                = libtool
+CFLAGS         = @CFLAGS@ $(VFS_CFLAGS)
+CPPFLAGS       = @CPPFLAGS@ $(VFS_CPPFLAGS)
+LDFLAGS                = @LDFLAGS@ $(VFS_LDFLAGS)
 LDSHFLAGS      = -shared
 srcdir         = @builddir@
 FLAGS          =  $(CFLAGS) -Iinclude -I$(srcdir)/include -I$(srcdir)/ubiqx -I$(srcdir)/smbwrapper  -I. $(CPPFLAGS) -I$(srcdir)
 
-# Auto target
-default: $(patsubst %.c,%.so,$(wildcard *.c))
+# Default target
+
+default: $(VFS_OBJS)
+
+# if file doesn't exist try to create one; 
+# it is possible that some variables will be 
+# defined correctly
+Makefile.vfs:
+       @echo -ne "VFS_OBJS\t= " > $(MAKEFILE); \
+       for i in *.c; do \
+       echo -n $$i" " | sed -e 's/\(.*\)\.c\(.*\)/\1\.so\2/g' >> $(MAKEFILE); \
+       done; \
+       echo -ne "\nVFS_CFLAGS\t= \nVFS_CPPFLAGS\t= \nVFS_LDFLAGS\t= \n" >> $(MAKEFILE)
+       make
 
 # Pattern rules
 
-%.so: %.o
-       $(CC) $(LDSHFLAGS) $(LDFLAGS) -o $@ $<
+%.so: %.lo
+       $(LIBTOOL) $(CC) $(LDSHFLAGS) $(LDFLAGS) -o $@ $< 
 
-%.o: %.c
-       $(CC) $(FLAGS) -c $<
+%.lo: %.c
+       $(LIBTOOL) $(CC) $(FLAGS) -c $<
 
 # Misc targets
 
 clean:
        rm -rf .libs
-       rm -f core *~ *% *.bak *.o *.so
+       rm -f core *~ *% *.bak \
+       $(VFS_OBJS) $(VFS_OBJS:.so=.o) $(VFS_OBJS:.so=.lo) 
index 1b09929059112ee37c5483c73aee4b6cace1500b..c2f39f9727d36c39a9246b52588b7daefb4a53e7 100644 (file)
@@ -17,26 +17,8 @@ construction.  The following VFS modules are given:
                connect/disconnect, directory opens/create/remove,
                file open/close/rename/unlink/chmod.
 
-       recycle
-               A recycle-bin like modules. When used any unlink call
-               will be intercepted and files moved to the recycle
-               directory nstead of beeing deleted.
-
-       block
-               A simple module to block access to certain mount points or 
-               directories. This module only hides the specified directories 
-               and all directories beneath them. It should NOT be used to
-               secure directories. If the name of a file in one of those
-               directories is known, the file can still be opened.
-
-       netatalk
-               A netatalk module, that will ease co-existence of samba and
-               netatalk file sharing services.
-               Looka t the README for more informations.
-
-You may have problems to compile these modules, as shared libraries are
-compiled and linked in different ways on different systems.
-I currently tested them against GNU/linux and IRIX.
+The libtool program, available from your favourite GNU software
+archive, is required to compile these programs.
 
 To use the VFS modules, create a share similar to the one below.  The
 important parameter is the 'vfs object' parameter which must point to
diff --git a/examples/VFS/block/Makefile b/examples/VFS/block/Makefile
new file mode 100644 (file)
index 0000000..44b0868
--- /dev/null
@@ -0,0 +1,37 @@
+#
+# Makefile for samba-vfs examples
+#
+#
+
+# Variables
+
+CC = gcc
+LIBTOOL = libtool
+
+SAMBA_SRC = ../../../source
+SAMBA_INCL = ${SAMBA_SRC}/include
+UBIQX_SRC = ${SAMBA_SRC}/ubiqx
+SMBWR_SRC = ${SAMBA_SRC}/smbwrapper
+CFLAGS = -I$(SAMBA_SRC) -I$(SAMBA_INCL) -I$(UBIQX_SRC) -I$(SMBWR_SRC) -Wall -g -D_LARGEFILE63_SOURCE -D_GNU_SOURCE -fno-builtin  
+
+VFS_OBJS = block.so
+
+# Default target
+
+default: $(VFS_OBJS)
+
+# Pattern rules
+
+%.so: %.lo
+       $(LIBTOOL) $(CC) -shared -o $@ $< $(LDFLAGS)
+
+%.lo: %.c
+       $(LIBTOOL) $(CC) $(CPPFLAGS) $(CFLAGS) -c $<
+
+# Misc targets
+
+clean:
+       rm -rf .libs
+       rm -f core *~ *% *.bak \
+               $(VFS_OBJS) $(VFS_OBJS:.so=.o) $(VFS_OBJS:.so=.lo) 
diff --git a/examples/VFS/block/Makefile.in b/examples/VFS/block/Makefile.in
new file mode 100644 (file)
index 0000000..3126dfa
--- /dev/null
@@ -0,0 +1,42 @@
+MAKEFILE       = Makefile.vfs
+
+include        $(MAKEFILE)
+
+CC             = @CC@
+LIBTOOL                = libtool
+CFLAGS         = @CFLAGS@ $(VFS_CFLAGS)
+CPPFLAGS       = @CPPFLAGS@ $(VFS_CPPFLAGS)
+LDFLAGS                = @LDFLAGS@ $(VFS_LDFLAGS)
+LDSHFLAGS      = -shared
+srcdir         = @builddir@
+FLAGS          =  $(CFLAGS) -Iinclude -I$(srcdir)/include -I$(srcdir)/ubiqx -I$(srcdir)/smbwrapper  -I. $(CPPFLAGS) -I$(srcdir)
+
+# Default target
+
+default: $(VFS_OBJS)
+
+# if file doesn't exist try to create one; 
+# it is possible that some variables will be 
+# defined correctly
+Makefile.vfs:
+       @echo -ne "VFS_OBJS\t= " > $(MAKEFILE); \
+       for i in *.c; do \
+       echo -n $$i" " | sed -e 's/\(.*\)\.c\(.*\)/\1\.so\2/g' >> $(MAKEFILE); \
+       done; \
+       echo -ne "\nVFS_CFLAGS\t= \nVFS_CPPFLAGS\t= \nVFS_LDFLAGS\t= \n" >> $(MAKEFILE)
+       make
+
+# Pattern rules
+
+%.so: %.lo
+       $(LIBTOOL) $(CC) $(LDSHFLAGS) $(LDFLAGS) -o $@ $< 
+
+%.lo: %.c
+       $(LIBTOOL) $(CC) $(FLAGS) -c $<
+
+# Misc targets
+
+clean:
+       rm -rf .libs
+       rm -f core *~ *% *.bak \
+       $(VFS_OBJS) $(VFS_OBJS:.so=.o) $(VFS_OBJS:.so=.lo) 
diff --git a/examples/VFS/block/block.c b/examples/VFS/block/block.c
new file mode 100644 (file)
index 0000000..9478b75
--- /dev/null
@@ -0,0 +1,440 @@
+/* 
+ * 
+ * Block access from links to dev mount points specified in PARAMCONF file
+ *
+ * Copyright (C) Ronald Kuetemeier, 2001
+ * Copyright (C) Alexander Bokovoy, 2002
+ *
+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <string.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <errno.h>
+
+
+#ifdef HAVE_UTIME_H
+#include <utime.h>
+#endif
+#ifdef HAVE_DIRENT_H
+#include <dirent.h>
+#endif
+#include <syslog.h>
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
+
+#include <includes.h>
+#include <vfs.h>
+
+
+
+static DIR *block_opendir(connection_struct *conn, char *fname);
+static int block_connect(connection_struct *conn, const char *service, const char *user);    
+static void block_disconnect(connection_struct *conn);    
+
+static struct smb_vfs_handle_struct *block_handle;
+
+/* VFS operations */
+
+
+static struct vfs_ops default_vfs_ops;   /* For passthrough operation */
+
+static vfs_op_tuple block_vfs_ops[] = {
+    
+       /* Disk operations */
+
+       {block_connect,         SMB_VFS_OP_CONNECT,     SMB_VFS_LAYER_TRANSPARENT},
+       {block_disconnect,      SMB_VFS_OP_DISCONNECT,  SMB_VFS_LAYER_TRANSPARENT},
+
+       /* Directory operations */
+
+       {block_opendir,         SMB_VFS_OP_OPENDIR,     SMB_VFS_LAYER_TRANSPARENT},
+       
+       {NULL,                  SMB_VFS_OP_NOOP,        SMB_VFS_LAYER_NOOP}
+};
+
+
+#ifndef PARAMCONF
+#define PARAMCONF "/etc/samba-block.conf"
+#endif
+
+extern BOOL pm_process(char *FileName, BOOL (*sfunc)(char *), BOOL(*pfunc)(char * , char *));
+
+//functions
+
+static BOOL enter_pblock_mount(char *dir);
+static BOOL get_section(char *sect);
+static BOOL get_parameter_value(char *param, char *value);
+static BOOL load_param(void);
+static BOOL search(struct stat *stat_buf);
+static BOOL dir_search(char *link, char *dir);
+static BOOL enter_pblock_dir(char *dir);
+
+
+
+typedef struct block_dir
+{
+       dev_t st_dev;
+       int str_len;    
+       char *dir_name;
+       struct block_dir *next;
+} block_dir;
+
+
+static char *params[] = {"mount_point","dir_name"};
+enum                    { MOUNT_POINT , DIR_NAME };
+
+static struct block_dir *pblock_mountp = NULL;
+static struct block_dir *pblock_dir = NULL;
+
+
+
+/*
+ * Load the conf file into a table
+ */
+
+static BOOL load_param(void)
+{
+
+       if ((pm_process(PARAMCONF,&get_section,&get_parameter_value)) == TRUE)
+       {
+               return TRUE;
+               
+       }
+       return FALSE;   
+}
+
+
+
+/*
+ * Enter the key and data into the list
+ * 
+ */
+
+static BOOL enter_pblock_mount(char *dir)
+{
+       struct stat stat_buf;
+       static struct block_dir *tmp_pblock;
+       
+
+       if((stat(dir,&stat_buf)) != 0)
+       {
+               return FALSE;
+       }
+       
+       if(pblock_mountp == NULL)
+       {
+               pblock_mountp = calloc(1, sizeof(block_dir));
+               if( pblock_mountp == NULL)
+               {
+                       return FALSE;
+               }
+               tmp_pblock = pblock_mountp;
+               tmp_pblock->next = NULL;
+               
+       }else
+       {
+               tmp_pblock->next = calloc(1, sizeof(block_dir));
+               if(tmp_pblock->next == NULL)
+               {
+                       return FALSE;
+               }
+               tmp_pblock = tmp_pblock->next;
+               tmp_pblock->next = NULL;
+               
+       }
+       
+
+       tmp_pblock->st_dev = stat_buf.st_dev;
+       tmp_pblock->dir_name = strdup(dir);
+       
+
+      return TRUE;
+               
+}
+
+
+/*
+ * Enter the key and data into the list
+ * 
+ */
+
+static BOOL enter_pblock_dir(char *dir)
+{
+       static struct block_dir *tmp_pblock;
+       
+
+       if(pblock_dir == NULL)
+       {
+               pblock_dir = calloc(1, sizeof(block_dir));
+               if( pblock_dir == NULL)
+               {
+                       return FALSE;
+               }
+               tmp_pblock = pblock_dir;
+               tmp_pblock->next = NULL;
+               
+       }else
+       {
+               tmp_pblock->next = calloc(1, sizeof(block_dir));
+               if(tmp_pblock->next == NULL)
+               {
+                       return FALSE;
+               }
+               tmp_pblock = tmp_pblock->next;
+               tmp_pblock->next = NULL;
+               
+       }
+       
+
+       tmp_pblock->dir_name = strdup(dir);
+       tmp_pblock->str_len = strlen(dir);
+       
+
+      return TRUE;
+               
+}
+
+
+
+
+/*
+ * Function callback for config section names 
+ */
+
+static BOOL get_section(char *sect)
+{
+       return TRUE;    
+}
+
+
+
+/* 
+ * Function callback for config parameter value pairs
+ *
+ */
+
+static BOOL get_parameter_value(char *param, char *value)
+{
+       int i = 0, maxargs = sizeof(params) / sizeof(char *);
+
+       
+       for( i= 0; i < maxargs; i++)
+       {
+               if (strcmp(param,params[i]) == 0)
+               {
+                       switch(i)
+                       {
+                       case MOUNT_POINT :                              
+                               enter_pblock_mount(value);                              
+                               break;
+                       case DIR_NAME :                         
+                               enter_pblock_dir(value);                                
+                               break;
+                       default :
+                               break;
+                       }
+               }
+       }
+                                       
+       return TRUE;
+       
+}
+
+
+
+
+/* VFS initialisation function.  Return initialised vfs_op_tuple array
+   back to SAMBA. */
+
+vfs_op_tuple *vfs_init(int *vfs_version, struct vfs_ops *def_vfs_ops,
+                       struct smb_vfs_handle_struct *vfs_handle)
+{
+       *vfs_version = SMB_VFS_INTERFACE_VERSION;
+       
+       memcpy(&default_vfs_ops, def_vfs_ops, sizeof(struct vfs_ops));
+       
+       block_handle = vfs_handle;
+
+       return block_vfs_ops;
+}
+
+
+/* VFS finalization function. */
+void vfs_done(connection_struct *conn)
+{
+}
+
+
+/*
+ * VFS connect and param file loading
+ */
+
+static int block_connect(connection_struct *conn, const char *service, const char *user)
+{
+       if((load_param()) == FALSE)
+       {
+
+               return -1;
+               
+       }       
+
+        DEBUG(0,("%s connecting \n",conn->user));
+       
+       return (default_vfs_ops.connect(conn, service,user));
+}
+
+/*
+ * Free allocated structures and disconnect
+ *
+ */
+
+
+static void block_disconnect(struct connection_struct *conn)
+{
+       
+       struct block_dir *tmp_pblock = (pblock_mountp == NULL ? pblock_dir : pblock_mountp);
+       struct block_dir *free_pblock = NULL;
+
+       while(tmp_pblock != NULL)
+       {
+               free(tmp_pblock->dir_name);             
+               free_pblock = tmp_pblock;               
+               tmp_pblock = tmp_pblock->next;
+               free(free_pblock);      
+
+               if(tmp_pblock == NULL && pblock_dir != NULL)
+               {
+                       tmp_pblock = (pblock_mountp == NULL ? pblock_dir : NULL);
+                       pblock_dir = NULL;
+                       
+               }
+               
+       }
+               
+       
+
+       default_vfs_ops.disconnect(conn);
+}
+
+/*
+ * VFS opendir
+ */
+
+static DIR *block_opendir(struct connection_struct *conn, char *fname)
+{
+
+       char *dir_name = NULL; 
+       struct stat stat_buf;
+
+       dir_name = alloca((strlen(conn->origpath) + strlen(fname) + 2) * sizeof(char));
+
+       pstrcpy(dir_name,conn->origpath);
+       pstrcat(dir_name, "/"); 
+       strncat(dir_name, fname, strcspn(fname,"/"));
+
+       if((lstat(dir_name,&stat_buf)) == 0)
+       {
+               if((S_ISLNK(stat_buf.st_mode)) == 1)
+               {
+                       stat(dir_name,&stat_buf);                       
+                       if((search(&stat_buf) || dir_search(dir_name, fname) ) == TRUE)                 
+                       {                       
+                               DEBUG(0,("%s used link to blocked dir: %s \n", conn->user, dir_name));                          
+                               errno = EACCES;                         
+                               return NULL;
+                       }
+               }
+       } 
+               
+       return (default_vfs_ops.opendir(conn, fname));  
+}
+
+
+/*
+ * Find mount point to block in list
+ */
+
+static BOOL search(struct stat *stat_buf)
+{
+       struct block_dir *tmp_pblock = pblock_mountp;
+
+       while(tmp_pblock != NULL)
+       {
+
+               if(tmp_pblock->st_dev == stat_buf->st_dev)
+               {
+                       return TRUE;
+               }
+               tmp_pblock = tmp_pblock->next;
+       }
+               
+       return FALSE;   
+       
+}
+
+/*
+ * Find dir in list to block id the starting point is link from a share
+ */
+
+static BOOL dir_search(char *link, char *dir)
+{
+       char buf[PATH_MAX +1], *ext_path;
+       int len = 0;
+       struct block_dir *tmp_pblock = pblock_dir;
+       
+       if((len = readlink(link,buf,sizeof(buf))) == -1)
+       {
+               return TRUE;
+
+       }else
+       {
+               buf[len] = '\0';
+       }
+       
+       
+        if((ext_path = strchr(dir,'/')) != NULL)
+       {
+               pstrcat(buf,&ext_path[1]);
+               len = strlen(buf);              
+       }
+       
+       while(tmp_pblock != NULL)
+       {
+               if(len < tmp_pblock->str_len)
+               {
+                       tmp_pblock = tmp_pblock->next;
+                       continue;
+               }
+               
+               if((strstr(buf,tmp_pblock->dir_name)) != NULL)
+               {
+                       return TRUE;
+               }
+               tmp_pblock = tmp_pblock->next;
+       }
+
+
+       return FALSE;
+       
+}
diff --git a/examples/VFS/block/samba-block.conf b/examples/VFS/block/samba-block.conf
new file mode 100644 (file)
index 0000000..7a13798
--- /dev/null
@@ -0,0 +1,6 @@
+[ blocked ]
+mount_point = /
+mount_point = /boot
+mount_point = /proc
+dir_name = /usr/local/src/samba
+dir_name = /usr/bin
diff --git a/examples/VFS/block/smb.conf b/examples/VFS/block/smb.conf
new file mode 100644 (file)
index 0000000..368155f
--- /dev/null
@@ -0,0 +1,13 @@
+[homes]
+   comment = Home Directories
+   vfs object = /usr/local/samba/lib/block.so 
+   browseable = yes
+   writable = yes
+
+
+
+
+
+
+
+
index a56619af311cc1fae175adb1091e424c9c5cb2c9..ed89e59abf3bb4444f78baefd8c06d8edd67dad6 100644 (file)
-/*
- * Recycle bin VFS module for Samba.
+/* 
+ * Auditing VFS module for samba.  Log selected file operations to syslog
+ * facility.
  *
  * Copyright (C) 2001, Brandon Stone, Amherst College, <bbstone@amherst.edu>.
  * Copyright (C) 2002, Jeremy Allison - modified to make a VFS module.
  * Copyright (C) 2002, Alexander Bokovoy - cascaded VFS adoption,
- * Copyright (C) 2002, Juergen Hasch - added some options.
- * Copyright (C) 2002, Simo Sorce
  *
  * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
-#include "includes.h"
-
-#define ALLOC_CHECK(ptr, label) do { if ((ptr) == NULL) { DEBUG(0, ("recycle.bin: out of memory!\n")); errno = ENOMEM; goto label; } } while(0)
-
-static int vfs_recycle_debug_level = DBGC_VFS;
-
-#undef DBGC_CLASS
-#define DBGC_CLASS vfs_recycle_debug_level
-
-static const char *delimiter = "|";            /* delimiter for options */
-
-/* One per connection */
-
-typedef struct recycle_bin_struct
-{
-       TALLOC_CTX *ctx;
-       char    *repository;            /* name of the recycle bin directory */
-       BOOL    keep_dir_tree;          /* keep directory structure of deleted file in recycle bin */
-       BOOL    versions;               /* create versions of deleted files with identical name */
-       BOOL    touch;                  /* touch access date of deleted file */
-       char    *exclude;               /* which files to exclude */
-       char    *exclude_dir;           /* which directories to exclude */
-       char    *noversions;            /* which files to exclude from versioning */
-       SMB_OFF_T maxsize;              /* maximum file size to be saved */
-} recycle_bin_struct;
-
+#include "config.h"
+#include <stdio.h>
+#include <sys/stat.h>
+#ifdef HAVE_UTIME_H
+#include <utime.h>
+#endif
+#ifdef HAVE_DIRENT_H
+#include <dirent.h>
+#endif
+#include <syslog.h>
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#include <errno.h>
+#include <string.h>
+#include <includes.h>
+#include <vfs.h>
 /* VFS operations */
-static struct vfs_ops default_vfs_ops;   /* For passthrough operation */
 
+static struct vfs_ops default_vfs_ops;   /* For passthrough operation */
+static struct smb_vfs_handle_struct *recycle_handle;
+static int recycle_unlink(connection_struct *, const char *);
 static int recycle_connect(struct connection_struct *conn, const char *service, const char *user);
 static void recycle_disconnect(struct connection_struct *conn);
-static int recycle_unlink(connection_struct *, const char *);
-
-#define VFS_OP(x) ((void *) x)
 
 static vfs_op_tuple recycle_ops[] = {
 
        /* Disk operations */
-       {VFS_OP(recycle_connect),       SMB_VFS_OP_CONNECT,     SMB_VFS_LAYER_TRANSPARENT},
-       {VFS_OP(recycle_disconnect),    SMB_VFS_OP_DISCONNECT,  SMB_VFS_LAYER_TRANSPARENT},
 
-       /* File operations */
-       {VFS_OP(recycle_unlink),        SMB_VFS_OP_UNLINK,      SMB_VFS_LAYER_TRANSPARENT},
+       {recycle_connect,       SMB_VFS_OP_CONNECT,     SMB_VFS_LAYER_OPAQUE},
+       {recycle_disconnect,    SMB_VFS_OP_DISCONNECT,  SMB_VFS_LAYER_OPAQUE},
 
-       {NULL,                          SMB_VFS_OP_NOOP,        SMB_VFS_LAYER_NOOP}
+       /* File operations */
+       
+       {recycle_unlink,        SMB_VFS_OP_UNLINK,      SMB_VFS_LAYER_OPAQUE},
+       
+       {NULL,                  SMB_VFS_OP_NOOP,        SMB_VFS_LAYER_NOOP}
 };
 
-static BOOL check_bool_param(const char *value)
-{
-       if (strwicmp(value, "yes") == 0 ||
-           strwicmp(value, "true") == 0 ||
-           strwicmp(value, "1") == 0)
-               return True;
-
-       return False;
-}
+/* VFS initialisation function.  Return initialised vfs_op_tuple array back to SAMBA. */
 
-/**
- * VFS initialisation function.
- *
- * @retval initialised vfs_op_tuple array
- **/
-vfs_op_tuple *vfs_init(int *vfs_version, struct vfs_ops *def_vfs_ops)
+vfs_op_tuple *vfs_init(int *vfs_version, struct vfs_ops *def_vfs_ops,
+                       struct smb_vfs_handle_struct *vfs_handle)
 {
-       DEBUG(10, ("Initializing VFS module recycle\n"));
        *vfs_version = SMB_VFS_INTERFACE_VERSION;
        memcpy(&default_vfs_ops, def_vfs_ops, sizeof(struct vfs_ops));
-       vfs_recycle_debug_level = debug_add_class("vfs_recycle_bin");
-       if (vfs_recycle_debug_level == -1) {
-               vfs_recycle_debug_level = DBGC_VFS;
-               DEBUG(0, ("vfs_recycle: Couldn't register custom debugging class!\n"));
-       } else {
-               DEBUG(0, ("vfs_recycle: Debug class number of 'vfs_recycle': %d\n", vfs_recycle_debug_level));
-       }
+       
+       /* Remember vfs_id for storing private information at connect */
+       recycle_handle = vfs_handle;
 
        return recycle_ops;
 }
 
-/**
- * VFS finalization function.
- *
- **/
+/* VFS finalization function. */
 void vfs_done(connection_struct *conn)
 {
-       DEBUG(10,("Called for connection %d\n", SNUM(conn)));
+       DEBUG(3,("vfs_done_recycle: called for connection %p\n",conn));
 }
 
 static int recycle_connect(struct connection_struct *conn, const char *service, const char *user)
 {
-       TALLOC_CTX *ctx = NULL;
-       recycle_bin_struct *recbin;
-       char *servicename;
-       char *tmp_str;
+       fstring recycle_bin;
 
-       DEBUG(10, ("Called for service %s (%d) as user %s\n", service, SNUM(conn), user));
+       DEBUG(3,("recycle_connect: called for service %s as user %s\n", service, user));
 
-       if (!(ctx = talloc_init_named("recycle bin"))) {
-               DEBUG(0, ("Failed to allocate memory in VFS module recycle_bin\n"));
-               return 0;
+       fstrcpy(recycle_bin, (const char *)lp_parm_string(lp_servicename(SNUM(conn)),"vfs","recycle bin"));
+       if (!*recycle_bin) {
+               DEBUG(3,("recycle_connect: No options listed (vfs:recycle bin).\n" ));
+               return 0; /* No options. */
        }
 
-       recbin = talloc(ctx,sizeof(recycle_bin_struct));
-       if ( recbin == NULL) {
-               DEBUG(0, ("Failed to allocate memory in VFS module recycle_bin\n"));
-               return -1;
-       }
-       recbin->ctx = ctx;
-
-       /* Set defaults */
-       recbin->repository = talloc_strdup(ctx, ".recycle");
-       ALLOC_CHECK(recbin->repository, error);
-       recbin->keep_dir_tree = False;
-       recbin->versions = False;
-       recbin->touch = False;
-       recbin->exclude = "";
-       recbin->exclude_dir = "";
-       recbin->noversions = "";
-       recbin->maxsize = 0;
-
-       /* parse configuration options */
-       servicename = talloc_strdup(recbin->ctx, lp_servicename(SNUM(conn)));
-       DEBUG(10, ("servicename = %s\n",servicename));
-       if ((tmp_str = lp_parm_string(servicename, "vfs_recycle_bin", "repository")) != NULL) {
-               recbin->repository = talloc_sub_conn(ctx, conn, tmp_str);
-               ALLOC_CHECK(recbin->repository, error);
-               trim_string(recbin->repository, "/", "/");
-               DEBUG(5, ("recycle.bin: repository = %s\n", recbin->repository));
-       }
-       if ((tmp_str = lp_parm_string(servicename, "vfs_recycle_bin", "keeptree")) != NULL) {
-               if (check_bool_param(tmp_str) == True)
-                       recbin->keep_dir_tree = True;
-               DEBUG(5, ("recycle.bin: keeptree = %s\n", tmp_str));
-       }
-       if ((tmp_str = lp_parm_string(servicename, "vfs_recycle_bin", "versions")) != NULL) {
-               if (check_bool_param(tmp_str) == True)
-                       recbin->versions = True;
-               DEBUG(5, ("recycle.bin: versions = %s\n", tmp_str));
-       }
-       if ((tmp_str = lp_parm_string(servicename, "vfs_recycle_bin", "touch")) != NULL) {
-               if (check_bool_param(tmp_str) == True)
-                       recbin->touch = True;
-               DEBUG(5, ("recycle.bin: touch = %s\n", tmp_str));
-       }
-       if ((tmp_str = lp_parm_string(servicename, "vfs_recycle_bin", "maxsize")) != NULL) {
-               recbin->maxsize = strtoul(tmp_str, NULL, 10);
-               if (recbin->maxsize == 0) {
-                       recbin->maxsize = -1;
-                       DEBUG(5, ("recycle.bin: maxsize = -infinite-\n"));
-               } else {
-                       DEBUG(5, ("recycle.bin: maxsize = %ld\n", (long int)recbin->maxsize));
-               }
-       }
-       if ((tmp_str = lp_parm_string(servicename, "vfs_recycle_bin", "exclude")) != NULL) {
-               recbin->exclude = talloc_strdup(ctx, tmp_str);
-               ALLOC_CHECK(recbin->exclude, error);
-               DEBUG(5, ("recycle.bin: exclude = %s\n", recbin->exclude));
-       }
-       if ((tmp_str = lp_parm_string(servicename,"vfs_recycle_bin", "exclude_dir")) != NULL) {
-               recbin->exclude_dir = talloc_strdup(ctx, tmp_str);
-               ALLOC_CHECK(recbin->exclude_dir, error);
-               DEBUG(5, ("recycle.bin: exclude_dir = %s\n", recbin->exclude_dir));
-       }
-       if ((tmp_str = lp_parm_string(servicename,"vfs_recycle_bin", "noversions")) != NULL) {
-               recbin->noversions = talloc_strdup(ctx, tmp_str);
-               ALLOC_CHECK(recbin->noversions, error);
-               DEBUG(5, ("recycle.bin: noversions = %s\n", recbin->noversions));
-       }
+       DEBUG(3,("recycle_connect: recycle name is %s\n", recycle_bin ));
 
-       conn->vfs_private = (void *)recbin;
-       return default_vfs_ops.connect(conn, service, user);
-
-error:
-       talloc_destroy(ctx);
-       return -1;
+       recycle_handle->data = (void *)strdup(recycle_bin);
+       return 0;
 }
 
 static void recycle_disconnect(struct connection_struct *conn)
 {
-       DEBUG(10, ("Disconnecting VFS module recycle bin\n"));
-       if (conn->vfs_private) {
-               talloc_destroy(((recycle_bin_struct *)conn->vfs_private)->ctx);
-               conn->vfs_private = NULL;
-       }
-       default_vfs_ops.disconnect(conn);
-}
-
-static BOOL recycle_directory_exist(connection_struct *conn, const char *dname)
-{
-       SMB_STRUCT_STAT st;
-
-       if (default_vfs_ops.stat(conn, dname, &st) == 0) {
-               if (S_ISDIR(st.st_mode)) {
-                       return True;
-               }
-       }
-
-       return False;
+       SAFE_FREE(recycle_handle->data);
 }
 
-static BOOL recycle_file_exist(connection_struct *conn, const char *fname)
+static BOOL recycle_XXX_exist(connection_struct *conn, const char *dname, BOOL isdir)
 {
        SMB_STRUCT_STAT st;
 
-       if (default_vfs_ops.stat(conn, fname, &st) == 0) {
-               if (S_ISREG(st.st_mode)) {
-                       return True;
-               }
-       }
+       if (default_vfs_ops.stat(conn,dname,&st) != 0)
+               return(False);
 
-       return False;
+       if (isdir)
+               return S_ISDIR(st.st_mode) ? True : False;
+       else
+               return S_ISREG(st.st_mode) ? True : False;
 }
 
-/**
- * Return file size
- * @param conn connection
- * @param fname file name
- * @return size in bytes
- **/
-static SMB_OFF_T recycle_get_file_size(connection_struct *conn, const char *fname)
-{
-       SMB_STRUCT_STAT st;
-       if (default_vfs_ops.stat(conn, fname, &st) != 0) {
-               DEBUG(0,("recycle.bin: stat for %s returned %s\n", fname, strerror(errno)));
-               return (SMB_OFF_T)0;
-       }
-       return(st.st_size);
-}
-
-/**
- * Create directory tree
- * @param conn connection
- * @param dname Directory tree to be created
- * @return Returns True for success
- **/
-static BOOL recycle_create_dir(connection_struct *conn, const char *dname)
+static BOOL recycle_directory_exist(connection_struct *conn, const char *dname)
 {
-       int len;
-       mode_t mode;
-       char *new_dir = NULL;
-       char *tmp_str = NULL;
-       char *token;
-       char *tok_str;
-       BOOL ret = False;
-
-       mode = S_IREAD | S_IWRITE | S_IEXEC;
-
-       tmp_str = strdup(dname);
-       ALLOC_CHECK(tmp_str, done);
-       tok_str = tmp_str;
-
-       len = strlen(dname);
-       new_dir = (char *)malloc(len + 1);
-       ALLOC_CHECK(new_dir, done);
-       *new_dir = '\0';
-
-       /* Create directory tree if neccessary */
-       for(token = strtok(tok_str, "/"); token; token = strtok(NULL, "/")) {
-               safe_strcat(new_dir, token, len);
-               if (recycle_directory_exist(conn, new_dir))
-                       DEBUG(10, ("recycle.bin: dir %s already exists\n", new_dir));
-               else {
-                       DEBUG(5, ("recycle.bin: creating new dir %s\n", new_dir));
-                       if (default_vfs_ops.mkdir(conn, new_dir, mode) != 0) {
-                               DEBUG(1,("recycle.bin: mkdir failed for %s with error: %s\n", new_dir, strerror(errno)));
-                               ret = False;
-                               goto done;
-                       }
-               }
-               safe_strcat(new_dir, "/", len);
-               }
-
-       ret = True;
-done:
-       SAFE_FREE(tmp_str);
-       SAFE_FREE(new_dir);
-       return ret;
+       return recycle_XXX_exist(conn, dname, True);
 }
 
-/**
- * Check if needle is contained exactly in haystack
- * @param haystack list of parameters separated by delimimiter character
- * @param needle string to be matched exactly to haystack
- * @return True if found
- **/
-static BOOL checkparam(const char *haystack, const char *needle)
+static BOOL recycle_file_exist(connection_struct *conn, const char *fname)
 {
-       char *token;
-       char *tok_str;
-       char *tmp_str;
-       BOOL ret = False;
-
-       if (haystack == NULL || strlen(haystack) == 0 || needle == NULL || strlen(needle) == 0) {
-               return False;
-       }
-
-       tmp_str = strdup(haystack);
-       ALLOC_CHECK(tmp_str, done);
-       token = tok_str = tmp_str;
-
-       for(token = strtok(tok_str, delimiter); token; token = strtok(NULL, delimiter)) {
-               if(strcmp(token, needle) == 0) {
-                       ret = True;
-                       goto done;
-               }
-       }
-done:
-       SAFE_FREE(tmp_str);
-       return ret;
+       return recycle_XXX_exist(conn, fname, False);
 }
 
-/**
- * Check if needle is contained in haystack, * and ? patterns are resolved
- * @param haystack list of parameters separated by delimimiter character
- * @param needle string to be matched exectly to haystack including pattern matching
- * @return True if found
- **/
-static BOOL matchparam(const char *haystack, const char *needle)
+static SMB_OFF_T recycle_get_file_size(connection_struct *conn, const char *fname)
 {
-       char *token;
-       char *tok_str;
-       char *tmp_str;
-       BOOL ret = False;
-
-       if (haystack == NULL || strlen(haystack) == 0 || needle == NULL || strlen(needle) == 0) {
-               return False;
-       }
+       SMB_STRUCT_STAT st;
 
-       tmp_str = strdup(haystack);
-       ALLOC_CHECK(tmp_str, done);
-       token = tok_str = tmp_str;
+       if (default_vfs_ops.stat(conn,fname,&st) != 0)
+               return (SMB_OFF_T)-1;
 
-       for(token = strtok(tok_str, delimiter); token; token = strtok(NULL, delimiter)) {
-               if (!unix_wild_match(token, needle)) {
-                       ret = True;
-                       goto done;
-               }
-       }
-done:
-       SAFE_FREE(tmp_str);
-       return ret;
+       return(st.st_size);
 }
 
-/**
- * Touch access date
- **/
-static void recycle_touch(connection_struct *conn, const char *fname)
-{
-       SMB_STRUCT_STAT st;
-       struct utimbuf tb;
-       time_t currtime;
-
-       if (default_vfs_ops.stat(conn, fname, &st) != 0) {
-               DEBUG(0,("recycle.bin: stat for %s returned %s\n", fname, strerror(errno)));
-               return;
-       }
-       currtime = time(&currtime);
-       tb.actime = currtime;
-       tb.modtime = st.st_mtime;
-
-       if (default_vfs_ops.utime(conn, fname, &tb) == -1 )
-               DEBUG(0, ("recycle.bin: touching %s failed, reason = %s\n", fname, strerror(errno)));
-       }
+/********************************************************************
+ Check if file should be recycled
+*********************************************************************/
 
-/**
- * Check if file should be recycled
- **/
 static int recycle_unlink(connection_struct *conn, const char *inname)
 {
-       recycle_bin_struct *recbin;
-       char *file_name = NULL;
-       char *path_name = NULL;
-               char *temp_name = NULL;
-       char *final_name = NULL;
-       char *base;
-       int i;
-       SMB_BIG_UINT dfree, dsize, bsize;
-       SMB_OFF_T file_size, space_avail;
-       BOOL exist;
-       int rc = -1;
-
-       file_name = strdup(inname);
-       ALLOC_CHECK(file_name, done);
-
-       if (conn->vfs_private)
-               recbin = (recycle_bin_struct *)conn->vfs_private;
-       else {
-               DEBUG(0, ("Recycle bin not initialized!\n"));
-               rc = default_vfs_ops.unlink(conn, file_name);
-               goto done;
-       }
+       fstring recycle_bin;
+       pstring fname;
+       char *base, *ext;
+       pstring bin;
+       int i=1, len, addlen;
+       int dir_mask=0770;
+       SMB_BIG_UINT dfree,dsize,bsize;
 
-       if(!recbin->repository || *(recbin->repository) == '\0') {
-               DEBUG(3, ("Recycle path not set, purging %s...\n", file_name));
-               rc = default_vfs_ops.unlink(conn, file_name);
-               goto done;
-       }
+       *recycle_bin = '\0';
+       pstrcpy(fname, inname);
 
-       /* we don't recycle the recycle bin... */
-       if (strncmp(file_name, recbin->repository, strlen(recbin->repository)) == 0) {
-               DEBUG(3, ("File is within recycling bin, unlinking ...\n"));
-               rc = default_vfs_ops.unlink(conn, file_name);
-               goto done;
-       }
+       if (recycle_handle->data)
+               fstrcpy(recycle_bin, (const char *)recycle_handle->data);
 
-       file_size = recycle_get_file_size(conn, file_name);
-       /* it is wrong to purge filenames only because they are empty imho
-        *   --- simo
-        *
-       if(fsize == 0) {
-               DEBUG(3, ("File %s is empty, purging...\n", file_name));
-               rc = default_vfs_ops.unlink(conn,file_name);
-               goto done;
-       }
-        */
-
-       /* FIXME: this is wrong, we should check the hole size of the recycle bin is
-        * not greater then maxsize, not the size of the single file, also it is better
-        * to remove older files
-        */
-       if(recbin->maxsize > 0 && file_size > recbin->maxsize) {
-               DEBUG(3, ("File %s exceeds maximum recycle size, purging... \n", file_name));
-               rc = default_vfs_ops.unlink(conn, file_name);
-               goto done;
+       if(!*recycle_bin) {
+               DEBUG(3, ("recycle bin: share parameter not set, purging %s...\n", fname));
+               return default_vfs_ops.unlink(conn,fname);
        }
 
-       /* FIXME: this is wrong: moving files with rename does not change the disk space
-        * allocation
-        *
-       space_avail = default_vfs_ops.disk_free(conn, ".", True, &bsize, &dfree, &dsize) * 1024L;
-       DEBUG(5, ("space_avail = %Lu, file_size = %Lu\n", space_avail, file_size));
-       if(space_avail < file_size) {
-               DEBUG(3, ("Not enough diskspace, purging file %s\n", file_name));
-               rc = default_vfs_ops.unlink(conn, file_name);
-               goto done;
-       }
-        */
-
-       /* extract filename and path */
-       path_name = (char *)malloc(PATH_MAX);
-       ALLOC_CHECK(path_name, done);
-       *path_name = '\0';
-       safe_strcpy(path_name, file_name, PATH_MAX);
-       base = strrchr(path_name, '/');
-       if (base == NULL) {
-               base = file_name;
-               safe_strcpy(path_name, "/", PATH_MAX);
-       }
-       else {
-               *base = '\0';
-               base++;
+       if(recycle_get_file_size(conn, fname) == 0) {
+               DEBUG(3, ("recycle bin: file %s is empty, purging...\n", fname));
+               return default_vfs_ops.unlink(conn,fname);
        }
 
-       DEBUG(10, ("recycle.bin: fname = %s\n", file_name));    /* original filename with path */
-       DEBUG(10, ("recycle.bin: fpath = %s\n", path_name));    /* original path */
-       DEBUG(10, ("recycle.bin: base = %s\n", base));          /* filename without path */
+       base = strrchr(fname, '/');
+       pstrcpy(bin, recycle_bin);
+       pstrcat(bin, "/");
 
-       if (matchparam(recbin->exclude, base)) {
-               DEBUG(3, ("recycle.bin: file %s is excluded \n", base));
-               rc = default_vfs_ops.unlink(conn, file_name);
-               goto done;
+       if(base == NULL) {
+               ext = strrchr(fname, '.');
+               pstrcat(bin, fname);
+       } else {
+               ext = strrchr(base, '.');
+               pstrcat(bin, base+1);
        }
+       DEBUG(3, ("recycle bin: base %s, ext %s, fname %s, bin %s\n", base, ext, fname, bin));
 
-       /* FIXME: this check will fail if we have more than one level of directories,
-        * we shoud check for every level 1, 1/2, 1/2/3, 1/2/3/4 .... 
-        *      ---simo
-        */
-       if (checkparam(recbin->exclude_dir, path_name)) {
-               DEBUG(3, ("recycle.bin: directory %s is excluded \n", path_name));
-               rc = default_vfs_ops.unlink(conn, file_name);
-               goto done;
+       if(strcmp(fname,bin) == 0) {
+               DEBUG(3, ("recycle bin: file %s exists, purging...\n", fname));
+               return default_vfs_ops.unlink(conn,fname);
        }
 
-       temp_name = (char *)malloc(PATH_MAX);
-       ALLOC_CHECK(temp_name, done);
-       safe_strcpy(temp_name, recbin->repository, PATH_MAX);
-
-       /* see if we need to recreate the original directory structure in the recycle bin */
-       if (recbin->keep_dir_tree == True) {
-               safe_strcat(temp_name, "/", PATH_MAX);
-               safe_strcat(temp_name, path_name, PATH_MAX);
-       }
+       len = strlen(bin);
+       if ( ext != NULL)
+               len = len - strlen(ext);
 
-       exist = recycle_directory_exist(conn, temp_name);
-       if (exist) {
-               DEBUG(10, ("recycle.bin: Directory already exists\n"));
-       } else {
-               DEBUG(10, ("recycle.bin: Creating directory %s\n", temp_name));
-               if (recycle_create_dir(conn, temp_name) == False) {
-                       DEBUG(3, ("Could not create directory, purging %s...\n", file_name));
-                       rc = default_vfs_ops.unlink(conn, file_name);
-                       goto done;
-               }
+       addlen = sizeof(pstring)-len-1;
+       while(recycle_file_exist(conn,bin)) {
+               slprintf(bin+len, addlen, " (Copy #%d)", i++);
+               pstrcat(bin, ext);
        }
 
-       final_name = (char *)malloc(PATH_MAX);
-       ALLOC_CHECK(final_name, done);
-       snprintf(final_name, PATH_MAX, "%s/%s", temp_name, base);
-       DEBUG(10, ("recycle.bin: recycled file name%s\n", temp_name));          /* new filename with path */
-
-       /* check if we should delete file from recycle bin */
-       if (recycle_file_exist(conn, final_name)) {
-               if (recbin->versions == False || matchparam(recbin->noversions, base) == True) {
-                       DEBUG(3, ("recycle.bin: Removing old file %s from recycle bin\n", final_name));
-                       if (default_vfs_ops.unlink(conn, final_name) != 0) {
-                               DEBUG(1, ("recycle.bin: Error deleting old file: %s\n", strerror(errno)));
+       DEBUG(3, ("recycle bin: moving source=%s to  dest=%s\n", fname, bin));
+       default_vfs_ops.disk_free(conn,".",True,&bsize,&dfree,&dsize);
+       if((unsigned int)dfree > 0) {
+               int ret;
+               if(!recycle_directory_exist(conn,recycle_bin)) {
+                       DEBUG(3, ("recycle bin: directory %s nonexistant, creating...\n", recycle_bin));
+                       if (default_vfs_ops.mkdir(conn,recycle_bin,dir_mask) == -1) {
+                               DEBUG(3, ("recycle bin: unable to create directory %s. Error was %s\n",
+                                       recycle_bin, strerror(errno) ));
                        }
                }
-       }
-
-       /* rename file we move to recycle bin */
-       i = 1;
-       while (recycle_file_exist(conn, final_name)) {
-               snprintf(final_name, PATH_MAX, "%s/Copy #%d of %s", temp_name, i++, base);
-       }
+               DEBUG(3, ("recycle bin: move %s -> %s\n", fname, bin));
 
-       DEBUG(10, ("recycle.bin: Moving %s to %s\n", file_name, final_name));
-       rc = default_vfs_ops.rename(conn, file_name, final_name);
-       if (rc != 0) {
-               DEBUG(3, ("recycle.bin: Move error %d (%s), purging file %s (%s)\n", errno, strerror(errno), file_name, final_name));
-               rc = default_vfs_ops.unlink(conn, file_name);
-               goto done;
+               ret = default_vfs_ops.rename(conn, fname, bin);
+               if (ret == -1) {
+                       DEBUG(3, ("recycle bin: move error %d (%s)\n", errno, strerror(errno) ));
+                       DEBUG(3, ("recycle bin: move failed, purging...\n"));
+                       return default_vfs_ops.unlink(conn,fname);
+               }
+               return ret;
+       } else { 
+               DEBUG(3, ("recycle bin: move failed, purging...\n"));
+               return default_vfs_ops.unlink(conn,fname);
        }
-
-       /* touch access date of moved file */
-       if (recbin->touch == True )
-               recycle_touch(conn, final_name);
-
-done:
-       SAFE_FREE(file_name);
-       SAFE_FREE(path_name);
-       SAFE_FREE(temp_name);
-       SAFE_FREE(final_name);
-       return rc;
 }
index 3ebecad7627cddb8df383c7d662a8025fa5d87c7..1da6ea789efb710ba49b195cd6442d3dea39578a 100644 (file)
@@ -2,6 +2,8 @@ PDB_OBJS        = pdb_mysql.so
 PDB_LDFLAGS    = -lmysqlclient
 MAKEFILE       = Makefile.pdb
 
+include        $(MAKEFILE)
+
 CC             = @CC@
 LIBTOOL                = libtool
 CFLAGS         = @CFLAGS@ $(PDB_CFLAGS)
index 0cc1de6aaf2d7282afb44344e445961b072fe3d8..c7e9e781c32dabb61e2aeee89ad3cc47fc2bd336 100644 (file)
@@ -80,6 +80,7 @@ typedef struct pdb_mysql_query {
        char *part1;
        char *part2;
 } pdb_mysql_query;
+
 #define SET_DATA(data,methods) { \
        if(!methods){ \
                DEBUG(0, ("invalid methods!\n")); \
@@ -91,8 +92,8 @@ typedef struct pdb_mysql_query {
                                return False; \
                } \
 }
-
-void pdb_mysql_int_field(struct pdb_methods *m,
+void
+pdb_mysql_int_field(struct pdb_methods *m,
                                        struct pdb_mysql_query *q, char *name, int value)
 {
        if (!name || strchr(name, '\''))
@@ -110,7 +111,8 @@ void pdb_mysql_int_field(struct pdb_methods *m,
        }
 }
 
-static BOOL pdb_mysql_string_field(struct pdb_methods *methods,
+static BOOL
+pdb_mysql_string_field(struct pdb_methods *methods,
                                           struct pdb_mysql_query *q,
                                           char *name, const char *value)
 {
@@ -143,7 +145,8 @@ static BOOL pdb_mysql_string_field(struct pdb_methods *methods,
        return True;
 }
 
-static char * config_value(pdb_mysql_data * data, char *name, char *default_value)
+static char *
+config_value(pdb_mysql_data * data, char *name, char *default_value)
 {
        if (lp_parm_string(NULL, data->location, name))
                return lp_parm_string(NULL, data->location, name);
@@ -151,7 +154,9 @@ static char * config_value(pdb_mysql_data * data, char *name, char *default_valu
        return default_value;
 }
 
-static char * config_value_write(pdb_mysql_data * data, char *name, char *default_value) {
+static char *
+config_value_write(pdb_mysql_data * data, char *name, char *default_value)
+{
        char *v = config_value(data, name, NULL);
        char *write;
 
@@ -174,7 +179,8 @@ static char * config_value_write(pdb_mysql_data * data, char *name, char *defaul
        return write;
 }
 
-static const char * config_value_read(pdb_mysql_data * data, char *name, char *default_value)
+static const char *
+config_value_read(pdb_mysql_data * data, char *name, char *default_value)
 {
        char *v = config_value(data, name, NULL);
        char *write;
@@ -200,7 +206,8 @@ static const char * config_value_read(pdb_mysql_data * data, char *name, char *d
 }
 
 /* Wrapper for atol that returns 0 if 'a' points to NULL */
-static long xatol(char *a)
+static long
+xatol(char *a)
 {
        long ret = 0;
 
@@ -210,7 +217,8 @@ static long xatol(char *a)
        return ret;
 }
 
-static BOOL row_to_sam_account(MYSQL_RES * r, SAM_ACCOUNT * u)
+static BOOL
+row_to_sam_account(MYSQL_RES * r, SAM_ACCOUNT * u)
 {
        MYSQL_ROW row;
        pstring temp;
@@ -272,7 +280,8 @@ static BOOL row_to_sam_account(MYSQL_RES * r, SAM_ACCOUNT * u)
        return True;
 }
 
-static BOOL mysqlsam_setsampwent(struct pdb_methods *methods, BOOL update)
+static BOOL
+mysqlsam_setsampwent(struct pdb_methods *methods, BOOL update)
 {
        struct pdb_mysql_data *data =
                (struct pdb_mysql_data *) methods->private_data;
@@ -377,7 +386,8 @@ static BOOL mysqlsam_setsampwent(struct pdb_methods *methods, BOOL update)
   End enumeration of the passwd list.
  ****************************************************************/
 
-static void mysqlsam_endsampwent(struct pdb_methods *methods)
+static void
+mysqlsam_endsampwent(struct pdb_methods *methods)
 {
        struct pdb_mysql_data *data =
                (struct pdb_mysql_data *) methods->private_data;
@@ -399,7 +409,8 @@ static void mysqlsam_endsampwent(struct pdb_methods *methods)
   Get one SAM_ACCOUNT from the list (next in line)
  *****************************************************************/
 
-static BOOL mysqlsam_getsampwent(struct pdb_methods *methods, SAM_ACCOUNT * user)
+static BOOL
+mysqlsam_getsampwent(struct pdb_methods *methods, SAM_ACCOUNT * user)
 {
        struct pdb_mysql_data *data;
 
@@ -413,7 +424,8 @@ static BOOL mysqlsam_getsampwent(struct pdb_methods *methods, SAM_ACCOUNT * user
        return row_to_sam_account(data->pwent, user);
 }
 
-BOOL mysqlsam_select_by_field(struct pdb_methods * methods, SAM_ACCOUNT * user,
+BOOL
+mysqlsam_select_by_field(struct pdb_methods * methods, SAM_ACCOUNT * user,
                                                 const char *field, const char *sname)
 {
        char *esc_sname;
@@ -539,7 +551,8 @@ BOOL mysqlsam_select_by_field(struct pdb_methods * methods, SAM_ACCOUNT * user,
   Lookup a name in the SAM database
  ******************************************************************/
 
-static BOOL mysqlsam_getsampwnam(struct pdb_methods *methods, SAM_ACCOUNT * user,
+static BOOL
+mysqlsam_getsampwnam(struct pdb_methods *methods, SAM_ACCOUNT * user,
                                         const char *sname)
 {
        struct pdb_mysql_data *data;
@@ -560,7 +573,8 @@ static BOOL mysqlsam_getsampwnam(struct pdb_methods *methods, SAM_ACCOUNT * user
   Search by sid
  **************************************************************************/
 
-static BOOL mysqlsam_getsampwsid(struct pdb_methods *methods, SAM_ACCOUNT * user,
+static BOOL
+mysqlsam_getsampwsid(struct pdb_methods *methods, SAM_ACCOUNT * user,
                                         const DOM_SID * sid)
 {
        BOOL ret = False;
@@ -583,7 +597,8 @@ static BOOL mysqlsam_getsampwsid(struct pdb_methods *methods, SAM_ACCOUNT * user
   Delete a SAM_ACCOUNT
  ****************************************************************************/
 
-static BOOL mysqlsam_delete_sam_account(struct pdb_methods *methods,
+static BOOL
+mysqlsam_delete_sam_account(struct pdb_methods *methods,
                                                        SAM_ACCOUNT * sam_pass)
 {
        const char *sname = pdb_get_username(sam_pass);
@@ -641,7 +656,8 @@ static BOOL mysqlsam_delete_sam_account(struct pdb_methods *methods,
        return True;
 }
 
-static BOOL mysqlsam_replace_sam_account(struct pdb_methods *methods,
+static BOOL
+mysqlsam_replace_sam_account(struct pdb_methods *methods,
                                                         const SAM_ACCOUNT * newpwd, char isupdate)
 {
        pstring temp;
@@ -873,18 +889,21 @@ static BOOL mysqlsam_replace_sam_account(struct pdb_methods *methods,
        return True;
 }
 
-static BOOL mysqlsam_add_sam_account(struct pdb_methods *methods, SAM_ACCOUNT * newpwd)
+static BOOL
+mysqlsam_add_sam_account(struct pdb_methods *methods, SAM_ACCOUNT * newpwd)
 {
        return mysqlsam_replace_sam_account(methods, newpwd, 0);
 }
 
-static BOOL mysqlsam_update_sam_account(struct pdb_methods *methods,
+static BOOL
+mysqlsam_update_sam_account(struct pdb_methods *methods,
                                                        SAM_ACCOUNT * newpwd)
 {
        return mysqlsam_replace_sam_account(methods, newpwd, 1);
 }
 
-NTSTATUS pdb_init(PDB_CONTEXT * pdb_context, PDB_METHODS ** pdb_method,
+NTSTATUS
+pdb_init(PDB_CONTEXT * pdb_context, PDB_METHODS ** pdb_method,
                 char *location)
 {
        NTSTATUS nt_status;
index 252641da6d3081df41e846e3d11d6a1ce1804824..87d4546972cc7316967bf95ac31c5a44c659e155 100644 (file)
@@ -2,6 +2,8 @@ PDB_OBJS        = pdb_xml.so
 PDB_CFLAGS     = `xml2-config --cflags`
 PDB_LDFLAGS    = `xml2-config --libs`
 
+include        $(MAKEFILE)
+
 CC             = @CC@
 LIBTOOL                = libtool
 CFLAGS         = @CFLAGS@ $(PDB_CFLAGS)
index 17261873cd48e06ee61515a3856c3d26c62757aa..f237a7da9d6174ef842e8fb82ce38ed3536cb2e4 100644 (file)
@@ -42,7 +42,8 @@ static char * iota(int a) {
        return tmp;
 }
 
-BOOL parsePass(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, SAM_ACCOUNT * u)
+BOOL
+parsePass(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, SAM_ACCOUNT * u)
 {
        pstring temp;
 
@@ -71,7 +72,8 @@ BOOL parsePass(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, SAM_ACCOUNT * u)
        return True;
 }
 
-BOOL parseUser(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, SAM_ACCOUNT * u)
+BOOL
+parseUser(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, SAM_ACCOUNT * u)
 {
        char *tmp;
        DOM_SID sid;
@@ -240,7 +242,8 @@ typedef struct pdb_xml {
        xmlNsPtr ns;
 } pdb_xml;
 
-xmlNodePtr parseSambaXMLFile(struct pdb_xml *data)
+xmlNodePtr
+parseSambaXMLFile(struct pdb_xml *data)
 {
        xmlNodePtr cur;
 
@@ -287,7 +290,8 @@ xmlNodePtr parseSambaXMLFile(struct pdb_xml *data)
        return cur;
 }
 
-static BOOL xmlsam_setsampwent(struct pdb_methods *methods, BOOL update)
+static BOOL
+xmlsam_setsampwent(struct pdb_methods *methods, BOOL update)
 {
        pdb_xml *data;
 
@@ -310,7 +314,8 @@ static BOOL xmlsam_setsampwent(struct pdb_methods *methods, BOOL update)
   End enumeration of the passwd list.
  ****************************************************************/
 
-static void xmlsam_endsampwent(struct pdb_methods *methods)
+static void
+xmlsam_endsampwent(struct pdb_methods *methods)
 {
        pdb_xml *data;
 
@@ -335,7 +340,8 @@ static void xmlsam_endsampwent(struct pdb_methods *methods)
   Get one SAM_ACCOUNT from the list (next in line)
  *****************************************************************/
 
-static BOOL xmlsam_getsampwent(struct pdb_methods *methods, SAM_ACCOUNT * user)
+static BOOL
+xmlsam_getsampwent(struct pdb_methods *methods, SAM_ACCOUNT * user)
 {
        pdb_xml *data;
 
@@ -367,7 +373,8 @@ static BOOL xmlsam_getsampwent(struct pdb_methods *methods, SAM_ACCOUNT * user)
   Adds an existing SAM_ACCOUNT
  ****************************************************************************/
 
-static BOOL xmlsam_add_sam_account(struct pdb_methods *methods, SAM_ACCOUNT * u)
+static BOOL
+xmlsam_add_sam_account(struct pdb_methods *methods, SAM_ACCOUNT * u)
 {
        pstring temp;
        fstring sid_str;
@@ -507,7 +514,8 @@ static BOOL xmlsam_add_sam_account(struct pdb_methods *methods, SAM_ACCOUNT * u)
        return True;
 }
 
-NTSTATUS pdb_init(PDB_CONTEXT * pdb_context, PDB_METHODS ** pdb_method,
+NTSTATUS
+pdb_init(PDB_CONTEXT * pdb_context, PDB_METHODS ** pdb_method,
                 const char *location)
 {
        NTSTATUS nt_status;
index 68bd66a13fe510f2213ada71a1611989f69e8f26..5a00a2a8aa870c4966092eca080dca3726463b70 100755 (executable)
 #
 #    -t  now causes translate to be used when sending files
 #
-# Further modifications by Alfred Perlstein to fix some problems and
-# improve the quality of the code (3-Dec-2001).
-#
-# More hacking by Richard Sharpe to improve portability. 9-Dec-2001.
-#
 # In order for this to work the /etc/printcap entry must include an 
 # accounting file (af=...):
 #
 #   service=CJET_371
 #   password=""
 
-#smbclient=/usr/pkg/bin/smbclient
-# Assume that smbclient will be in the same place as smbprint
+#
+# Debugging log file, change to /dev/null if you like.
+#
+logfile=/tmp/smb-print.log
+# logfile=/dev/null
 
-smbclient="`dirname $0`/smbclient"
 
 #
 # The last parameter to the filter is the accounting file name.
@@ -70,76 +67,29 @@ config_file=$spool_dir/.config
 #   server
 #   service
 #   password
-#   username (optional)
-#   IP (optional)
-#   debug (optional)
-#   debugsmb (optional)
-#   debugfile (optional)
-. $config_file
-
-if [ "x$password" = "x" ] ; then
-       password="-N"
-fi
+eval `cat $config_file`
 
-if [ "x$username" == "x" ] ; then
-       username="$server";
-fi
+while getopts t c; do
+  case $c in
+    t)
+       TRANS=1
+       ;;
 
-while test $# -gt 0; do
-       case "$1" in
-       -t)
-               TRANS=1
-               ;;
-
-        *)   # Bad Parameters, ignore them ...
-               ;;
-        esac
-        shift
+    '?')  # Bad parameters, ignore it ...
+       ;;
+  esac
 done
-
-command="print - ;"
-if [ $TRANS -eq 1 ]; then
-       command="translate;$command";
-fi
-
-debugfile="/tmp/smb-print.log"
-if [ "x$debug" = "x" ] ; then 
-               debugfile=/dev/null debugargs=
-else
-        if [ $debug -eq 0 ] ; then
-               debugfile=/dev/null debugargs=
-       else
-               set -x; exec >>$debugfile 2>&1
-               debugargs="$debugfile."
-               #[ "x$debugsmb" == "x" ] || debugargs="$debugargs -d $debugsmb"
-       fi
-fi
-
-if [ "x$smbconf" != "x" ]; then
-
-       smbconf="-s $smbconf"
-
-fi
-
-if [ "x$IP" != "x" ]; then
-
-       IP="-I $IP"
-
-fi
-
-if [ "x$debugargs" != "x" ]; then
-
-       debugargs="-l $debugargs"
-
-fi
-
-$smbclient \
-       "\\\\$server\\$service" \
-       $password \
-       $smbconf \
-       $IP \
-       $debugargs \
-       -U $username \
-       -P \
-       -c "$command"
 #
+# Some debugging help, change the >> to > if you want to same space.
+#
+echo "server $server, service $service" >> $logfile
+
+(
+# NOTE You may wish to add the line `echo translate' if you want automatic
+# CR/LF translation when printing.
+       if [ $TRANS -eq 1 ]; then
+          echo translate
+        fi
+       echo "print -"
+       cat
+) | /usr/local/samba/bin/smbclient "\\\\$server\\$service" $password -U $server -N -P >> $logfile
diff --git a/examples/printing/smbprint.old b/examples/printing/smbprint.old
deleted file mode 100755 (executable)
index 5a00a2a..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-#!/bin/sh 
-
-# This script is an input filter for printcap printing on a unix machine. It
-# uses the smbclient program to print the file to the specified smb-based 
-# server and service.
-# For example you could have a printcap entry like this
-#
-# smb:lp=/dev/null:sd=/usr/spool/smb:sh:if=/usr/local/samba/smbprint
-#
-# which would create a unix printer called "smb" that will print via this 
-# script. You will need to create the spool directory /usr/spool/smb with
-# appropriate permissions and ownerships for your system.
-
-# Set these to the server and service you wish to print to 
-# In this example I have a WfWg PC called "lapland" that has a printer 
-# exported called "printer" with no password.
-
-#
-# Script further altered by hamiltom@ecnz.co.nz (Michael Hamilton)
-# so that the server, service, and password can be read from 
-# a /usr/var/spool/lpd/PRINTNAME/.config file.
-#
-# Script further modified by Richard Sharpe to fix some things.
-# Get rid of the -x on the first line, and add parameters
-#
-#    -t  now causes translate to be used when sending files
-#
-# In order for this to work the /etc/printcap entry must include an 
-# accounting file (af=...):
-#
-#   cdcolour:\
-#      :cm=CD IBM Colorjet on 6th:\
-#      :sd=/var/spool/lpd/cdcolour:\
-#      :af=/var/spool/lpd/cdcolour/acct:\
-#      :if=/usr/local/etc/smbprint:\
-#      :mx=0:\
-#      :lp=/dev/null:
-#
-# The /usr/var/spool/lpd/PRINTNAME/.config file should contain:
-#   server=PC_SERVER
-#   service=PR_SHARENAME
-#   password="password"
-#
-# E.g.
-#   server=PAULS_PC
-#   service=CJET_371
-#   password=""
-
-#
-# Debugging log file, change to /dev/null if you like.
-#
-logfile=/tmp/smb-print.log
-# logfile=/dev/null
-
-
-#
-# The last parameter to the filter is the accounting file name.
-#   Extract the directory name from the file name.
-#   Concat this with /.config to get the config file.
-#
-TRANS=0
-eval acct_file=\${$#}
-spool_dir=`dirname $acct_file` 
-config_file=$spool_dir/.config
-
-# Should read the following variables set in the config file:
-#   server
-#   service
-#   password
-eval `cat $config_file`
-
-while getopts t c; do
-  case $c in
-    t)
-       TRANS=1
-       ;;
-
-    '?')  # Bad parameters, ignore it ...
-       ;;
-  esac
-done
-#
-# Some debugging help, change the >> to > if you want to same space.
-#
-echo "server $server, service $service" >> $logfile
-
-(
-# NOTE You may wish to add the line `echo translate' if you want automatic
-# CR/LF translation when printing.
-       if [ $TRANS -eq 1 ]; then
-          echo translate
-        fi
-       echo "print -"
-       cat
-) | /usr/local/samba/bin/smbclient "\\\\$server\\$service" $password -U $server -N -P >> $logfile
index 43e60a2ac09aff90f4c2c168bf02230bcb924f06..701dd350734556633797cd6392e66397b1d0eabb 100644 (file)
@@ -244,23 +244,25 @@ CFLAGS="$RPM_OPT_FLAGS" LDFLAGS="-s" ./configure \
        --with-netatalk \
        --with-smbwrapper \
        --with-libsmbclient \
-       --with-acl-support \
        --with-sambabook=$(DESTDIR)/usr/share/swat/using_samba
 
 # Temp disabled - add later - JHT
 #      --with-pam_smbpass \
 #      --with-nisplus-home \
+#      --with-acl-support \
 
 make all nsswitch/libnss_wins.so nsswitch/libnss_winbind.so torture nsswitch/pam_winbind.so everything
 (cd tdb; make tdbdump tdbtest tdbtorture tdbtool)
 
-cd ../examples/VFS
+#cd ../examples/VFS
 #CFLAGS="$RPM_OPT_FLAGS" LDFLAGS="-s" ./configure \
 #        --prefix='$(DESTDIR)/usr' \
 #        --localstatedir='$(DESTDIR)/var' \
 #        --libdir='$(DESTDIR)%{EtcSamba}' \
 #        --sbindir='$(DESTDIR)/usr/sbin'
-make
+#make
+#cd block
+#make
 
 %Install
 %{mkDESTDIR}
@@ -294,7 +296,7 @@ do
        install -m 755 source/bin/$i $DESTDIR/usr/bin
 done
 # Next install /usr/sbin progs
-for i in talloctort locktest locktest2 masktest msgtest smbtorture
+for i in talloctort samsync locktest locktest2 masktest msgtest smbtorture
 do
        install -m 755 source/bin/$i $DESTDIR/usr/sbin
 done
@@ -302,12 +304,11 @@ for i in tdbdump tdbtest tdbtorture tdbtool
 do
        install -m 755 source/tdb/$i $DESTDIR/usr/sbin
 done
-
 # Add VFS Modules
-for i in audit.so recycle.so netatalk.so skel.so
-do
-       install -m755 examples/VFS/$i $DESTDIR/lib/samba
-done
+#for i in audit.so recycle.so block/block.so
+#do
+#      install -m755 $i $DESTDIR/lib/samba
+#done
 
 #mv $DESTDIR/usr/bin/{make,add,conv}* $DESTDIR/usr/sbin
 
index deb4708c667286e22085c9865162de11b940a362..c63944a04d944eb690b4f4a0efe8f41c8e7bdd94 100644 (file)
@@ -1,7 +1,7 @@
 #! /bin/sh
 
 #
-# winbindd control
+# winbindd server control
 #
 
 IS_ON=/etc/chkconfig
@@ -21,7 +21,7 @@ fi
 
 case $1 in
 'start')
-       if $IS_ON winbind && test -x $WINBINDD; then
+       if $IS_ON winbindd && test -x $WINBINDD; then
            $KILLALL -15 winbindd
            $ECHO "winbindd:\c"
            $WINBINDD ; $ECHO " winbindd."
@@ -33,6 +33,6 @@ case $1 in
        exit 0
        ;;
 *)
-       echo "usage: /etc/init.d/winbind {start|stop}"
+       echo "usage: /etc/init.d/winbindd {start|stop}"
        ;;
 esac
index 5e99bc54caefe37fe3b3cd053593666581899ba8..e5f366ec7106ae2658a9f8472c63fdb322e0a11f 100644 (file)
@@ -29,7 +29,7 @@ programmers who have contributed.
 
 The indent utility can be used to format C files in the general 
 samba coding style. The arguments you should give to indent are:
--bad -bap -br -ce -cdw -nbc -brs -bbb -nbc -npsl -ut -i8
+-bad -bap -br -ce -cdw -nbc -brs -bbb -nbc -npsl
 
 Following are some considerations you should use when adding new code to
 Samba.  First and foremost remember that:
index f3d9b7ec09956774df5e15bd5b60c82cd03b0a15..2db6d550113c5d2feeaa0d0fc803ed0cadb689f8 100644 (file)
@@ -18,11 +18,9 @@ LDFLAGS=@LDFLAGS@
 LDSHFLAGS=@LDSHFLAGS@ @LDFLAGS@ @CFLAGS@
 AWK=@AWK@
 DYNEXP=@DYNEXP@
-PYTHON=@PYTHON@
 
 TERMLDFLAGS=@TERMLDFLAGS@
 TERMLIBS=@TERMLIBS@
-PRINTLIBS=@PRINTLIBS@
 
 LINK=$(CC) $(FLAGS) $(LDFLAGS)
 
@@ -108,7 +106,7 @@ LPROGS = $(WINBIND_PAM_PROGS) $(WINBIND_LPROGS)
 
 PROGS = $(PROGS1) $(PROGS2) $(MPROGS) bin/nmblookup bin/pdbedit bin/smbgroupedit
 TORTURE_PROGS = bin/smbtorture bin/msgtest bin/masktest bin/locktest \
-       bin/locktest2 bin/nsstest bin/vfstest
+       bin/locktest2 bin/nsstest
 SHLIBS = @LIBSMBCLIENT@
 
 SCRIPTS = $(srcdir)/script/smbtar $(srcdir)/script/addtosmbpass $(srcdir)/script/convert_smbpasswd \
@@ -126,7 +124,7 @@ TDB_OBJ = $(TDBBASE_OBJ) tdb/tdbutil.o
 LIB_OBJ = lib/charcnv.o lib/debug.o lib/fault.o \
           lib/getsmbpass.o lib/interface.o lib/md4.o \
           lib/interfaces.o lib/pidfile.o lib/replace.o \
-          lib/signal.o lib/system.o lib/sendfile.o lib/time.o \
+          lib/signal.o lib/system.o lib/time.o \
          lib/ufc.o lib/genrand.o lib/username.o \
          lib/util_getent.o lib/util_pw.o lib/access.o lib/smbrun.o \
          lib/bitmap.o lib/crc32.o lib/snprintf.o lib/dprintf.o \
@@ -136,11 +134,11 @@ LIB_OBJ = lib/charcnv.o lib/debug.o lib/fault.o \
          lib/util.o lib/util_sock.o lib/util_sec.o \
          lib/talloc.o lib/hash.o lib/substitute.o lib/fsusage.o \
          lib/ms_fnmatch.o lib/select.o lib/error.o lib/messages.o \
-         lib/tallocmsg.o lib/dmallocmsg.o \
+         lib/server_mutex.o lib/tallocmsg.o lib/dmallocmsg.o \
          lib/md5.o lib/hmacmd5.o lib/iconv.o lib/smbpasswd.o \
          nsswitch/wb_client.o nsswitch/wb_common.o \
          lib/pam_errors.o intl/lang_tdb.o lib/account_pol.o \
-         lib/adt_tree.o lib/popt_common.o lib/gencache.o $(TDB_OBJ) 
+         lib/adt_tree.o lib/popt_common.o $(TDB_OBJ) 
 
 LIB_SMBD_OBJ = lib/system_smbd.o lib/util_smbd.o
 
@@ -154,7 +152,7 @@ PARAM_OBJ = param/loadparm.o param/params.o dynconfig.o
 LIBADS_OBJ = libads/ldap.o libads/ldap_printer.o libads/sasl.o \
             libads/krb5_setpw.o libads/kerberos.o libads/ldap_user.o \
             libads/ads_struct.o libads/ads_status.o \
-             libads/disp_sec.o libads/ads_utils.o
+             libads/disp_sec.o
 
 LIBADS_SERVER_OBJ = libads/util.o libads/kerberos_verify.o
 
@@ -182,9 +180,8 @@ LIBMSRPC_SERVER_OBJ = libsmb/trust_passwd.o
 
 LIBMSRPC_PICOBJ = $(LIBMSRPC_OBJ:.o=.po)
 
-REGOBJS_OBJ = registry/reg_objects.o
 REGISTRY_OBJ = registry/reg_frontend.o registry/reg_cachehook.o registry/reg_printing.o \
-               registry/reg_db.o 
+               registry/reg_db.o
 
 RPC_SERVER_OBJ = rpc_server/srv_lsa.o rpc_server/srv_lsa_nt.o \
                  rpc_server/srv_lsa_hnd.o rpc_server/srv_netlog.o rpc_server/srv_netlog_nt.o \
@@ -193,7 +190,7 @@ RPC_SERVER_OBJ = rpc_server/srv_lsa.o rpc_server/srv_lsa_nt.o \
                 rpc_server/srv_srvsvc.o rpc_server/srv_srvsvc_nt.o \
                  rpc_server/srv_util.o rpc_server/srv_wkssvc.o rpc_server/srv_wkssvc_nt.o \
                  rpc_server/srv_pipe.o rpc_server/srv_dfs.o rpc_server/srv_dfs_nt.o \
-                 rpc_server/srv_spoolss.o rpc_server/srv_spoolss_nt.o 
+                 rpc_server/srv_spoolss.o rpc_server/srv_spoolss_nt.o $(REGISTRY_OBJ)
 
 # this includes only the low level parse code, not stuff
 # that requires knowledge of security contexts
@@ -204,8 +201,7 @@ RPC_PARSE_OBJ = rpc_parse/parse_lsa.o rpc_parse/parse_net.o \
                 rpc_parse/parse_reg.o rpc_parse/parse_rpc.o \
                 rpc_parse/parse_samr.o rpc_parse/parse_srv.o \
                 rpc_parse/parse_wks.o \
-               rpc_parse/parse_spoolss.o rpc_parse/parse_dfs.o \
-               $(REGOBJS_OBJ)
+               rpc_parse/parse_spoolss.o rpc_parse/parse_dfs.o
 
 
 RPC_CLIENT_OBJ = rpc_client/cli_pipe.o
@@ -217,15 +213,8 @@ PASSDB_GET_SET_OBJ = passdb/pdb_get_set.o
 PASSDB_OBJ = $(PASSDB_GET_SET_OBJ) passdb/passdb.o passdb/pdb_interface.o \
                passdb/machine_sid.o passdb/pdb_smbpasswd.o \
                passdb/pdb_tdb.o passdb/pdb_ldap.o passdb/pdb_plugin.o \
-               passdb/pdb_unix.o passdb/util_sam_sid.o \
-               passdb/pdb_compat.o passdb/pdb_nisplus.o
-
-SAM_STATIC_MODULES = sam/sam_plugin.o
-
-SAM_OBJ = sam/account.o sam/get_set_account.o sam/get_set_group.o \
-               sam/get_set_domain.o sam/interface.o sam/api.o $(SAM_STATIC_MODULES)
-
-SAMTEST_OBJ = torture/samtest.o torture/cmd_sam.o $(SAM_OBJ) $(LIB_OBJ) $(PARAM_OBJ) $(LIBSMB_OBJ) $(UBIQX_OBJ) $(READLINE_OBJ) lib/util_seaccess.o $(LIBADS_OBJ) $(PASSDB_OBJ) $(SECRETS_OBJ) $(GROUPDB_OBJ)
+               passdb/pdb_nisplus.o passdb/pdb_unix.o passdb/util_sam_sid.o \
+               passdb/pdb_compat.o
 
 GROUPDB_OBJ = groupdb/mapping.o
 
@@ -243,37 +232,25 @@ UNIGRP_OBJ = libsmb/netlogon_unigrp.o
 
 AUTH_OBJ = auth/auth.o auth/auth_sam.o auth/auth_server.o auth/auth_domain.o \
           auth/auth_rhosts.o auth/auth_unix.o auth/auth_util.o auth/auth_winbind.o \
-          auth/auth_builtin.o auth/auth_compat.o \
-          $(PLAINTEXT_AUTH_OBJ) $(UNIGRP_OBJ)
+          auth/auth_builtin.o auth/auth_compat.o $(PLAINTEXT_AUTH_OBJ) $(UNIGRP_OBJ)
 
 MANGLE_OBJ = smbd/mangle.o smbd/mangle_hash.o smbd/mangle_map.o smbd/mangle_hash2.o
 
-SMBD_OBJ_MAIN = smbd/server.o
-
-SMBD_OBJ_SRV = smbd/files.o smbd/chgpasswd.o smbd/connection.o \
-              smbd/utmp.o smbd/session.o \
-               smbd/dfree.o smbd/dir.o smbd/password.o smbd/conn.o smbd/fileio.o \
-               smbd/ipc.o smbd/lanman.o smbd/negprot.o \
-               smbd/message.o smbd/nttrans.o smbd/pipes.o \
-               smbd/reply.o smbd/sesssetup.o smbd/trans2.o smbd/uid.o \
-              smbd/dosmode.o smbd/filename.o smbd/open.o smbd/close.o \
-              smbd/blocking.o smbd/sec_ctx.o \
-              smbd/vfs.o smbd/vfs-wrap.o smbd/statcache.o \
-               smbd/posix_acls.o lib/sysacls.o lib/server_mutex.o \
-              smbd/process.o smbd/service.o smbd/error.o \
-              printing/printfsp.o lib/util_seaccess.o smbd/srvstr.o \
-               smbd/build_options.o \
-              smbd/change_trust_pw.o \
-              $(MANGLE_OBJ)
-
-SMBD_OBJ_BASE = $(SMBD_OBJ_SRV) $(MSDFS_OBJ) $(PARAM_OBJ) $(LIBSMB_OBJ) $(UBIQX_OBJ) \
-               $(RPC_SERVER_OBJ) $(RPC_PARSE_OBJ) $(SECRETS_OBJ) \
-               $(LOCKING_OBJ) $(PASSDB_OBJ) $(PRINTING_OBJ) $(PROFILE_OBJ) \
-               $(LIB_OBJ) $(PRINTBACKEND_OBJ) $(QUOTAOBJS) $(OPLOCK_OBJ) \
-               $(NOTIFY_OBJ) $(GROUPDB_OBJ) $(AUTH_OBJ) \
-               $(LIBMSRPC_OBJ) $(LIBMSRPC_SERVER_OBJ) \
-               $(LIBADS_OBJ) $(LIBADS_SERVER_OBJ) \
-               $(LIB_SMBD_OBJ) $(REGISTRY_OBJ)
+SMBD_OBJ1 = smbd/server.o smbd/files.o smbd/chgpasswd.o smbd/connection.o \
+           smbd/utmp.o smbd/session.o \
+            smbd/dfree.o smbd/dir.o smbd/password.o smbd/conn.o smbd/fileio.o \
+            smbd/ipc.o smbd/lanman.o smbd/negprot.o \
+            smbd/message.o smbd/nttrans.o smbd/pipes.o \
+            smbd/reply.o smbd/sesssetup.o smbd/trans2.o smbd/uid.o \
+           smbd/dosmode.o smbd/filename.o smbd/open.o smbd/close.o \
+           smbd/blocking.o smbd/sec_ctx.o \
+           smbd/vfs.o smbd/vfs-wrap.o smbd/statcache.o \
+            smbd/posix_acls.o lib/sysacls.o \
+           smbd/process.o smbd/service.o smbd/error.o \
+           printing/printfsp.o lib/util_seaccess.o smbd/srvstr.o \
+            smbd/build_options.o \
+           smbd/change_trust_pw.o \
+           $(MANGLE_OBJ)
 
 
 PRINTING_OBJ = printing/pcap.o printing/print_svid.o \
@@ -284,7 +261,15 @@ PRINTBACKEND_OBJ = printing/printing.o printing/nt_printing.o printing/notify.o
 
 MSDFS_OBJ = msdfs/msdfs.o 
 
-SMBD_OBJ = $(SMBD_OBJ_MAIN) $(SMBD_OBJ_BASE)
+SMBD_OBJ = $(SMBD_OBJ1) $(MSDFS_OBJ) $(PARAM_OBJ) $(LIBSMB_OBJ) $(UBIQX_OBJ) \
+           $(RPC_SERVER_OBJ) $(RPC_PARSE_OBJ) $(SECRETS_OBJ) \
+           $(LOCKING_OBJ) $(PASSDB_OBJ) $(PRINTING_OBJ) $(PROFILE_OBJ) \
+          $(LIB_OBJ) $(PRINTBACKEND_OBJ) $(QUOTAOBJS) $(OPLOCK_OBJ) \
+          $(NOTIFY_OBJ) $(GROUPDB_OBJ) $(AUTH_OBJ) \
+          $(LIBMSRPC_OBJ) $(LIBMSRPC_SERVER_OBJ) \
+          $(LIBADS_OBJ) $(LIBADS_SERVER_OBJ) \
+          $(LIB_SMBD_OBJ)
+
 
 NMBD_OBJ1 = nmbd/asyncdns.o nmbd/nmbd.o nmbd/nmbd_become_dmb.o \
             nmbd/nmbd_become_lmb.o nmbd/nmbd_browserdb.o \
@@ -358,6 +343,13 @@ RPCCLIENT_OBJ = $(RPCCLIENT_OBJ1) \
              $(READLINE_OBJ) $(GROUPDB_OBJ) \
             $(LIBADS_OBJ) $(SECRETS_OBJ)
 
+SAMSYNC_OBJ1 = rpcclient/samsync.o rpcclient/display_sec.o
+
+SAMSYNC_OBJ = $(SAMSYNC_OBJ1) \
+             $(PARAM_OBJ) $(LIBSMB_OBJ) $(UBIQX_OBJ) $(LIB_OBJ) \
+             $(RPC_PARSE_OBJ) $(PASSDB_OBJ) $(LIBMSRPC_OBJ) \
+             $(GROUPDB_OBJ) $(SECRETS_OBJ)
+
 PAM_WINBIND_OBJ = nsswitch/pam_winbind.po nsswitch/wb_common.po lib/snprintf.po
 
 SMBW_OBJ1 = smbwrapper/smbw.o \
@@ -381,13 +373,12 @@ CLIENT_OBJ1 = client/client.o client/clitar.o
 CLIENT_OBJ = $(CLIENT_OBJ1) $(PARAM_OBJ) $(LIBSMB_OBJ) $(UBIQX_OBJ) $(LIB_OBJ) \
              $(READLINE_OBJ) 
 
-NET_OBJ1 = utils/net.o utils/net_ads.o utils/net_ads_cldap.o utils/net_help.o \
-          utils/net_rap.o utils/net_rpc.o utils/net_rpc_samsync.o \
-          utils/net_rpc_join.o utils/net_time.o utils/net_lookup.o \
-          utils/net_cache.o
+NET_OBJ1 = utils/net.o utils/net_ads.o utils/net_help.o \
+          utils/net_rap.o utils/net_rpc.o \
+          utils/net_rpc_join.o utils/net_time.o utils/net_lookup.o
 
 NET_OBJ = $(NET_OBJ1) $(SECRETS_OBJ) $(LIBSMB_OBJ) \
-         $(RPC_PARSE_OBJ) $(PASSDB_OBJ) $(GROUPDB_OBJ) \
+         $(RPC_PARSE_OBJ) $(PASSDB_GET_SET_OBJ) \
          $(PARAM_OBJ) $(UBIQX_OBJ) $(LIB_OBJ) \
          $(LIBMSRPC_OBJ) $(LIBMSRPC_SERVER_OBJ) \
          $(LIBADS_OBJ) $(LIBADS_SERVER_OBJ)
@@ -423,8 +414,6 @@ LOCKTEST_OBJ = torture/locktest.o $(LOCKING_OBJ) $(LIBSMB_OBJ) $(PARAM_OBJ) \
 NSSTEST_OBJ = torture/nsstest.o $(LIBSMB_OBJ) $(PARAM_OBJ) \
                  $(UBIQX_OBJ) $(LIB_OBJ)
 
-VFSTEST_OBJ = torture/cmd_vfs.o torture/vfstest.o $(SMBD_OBJ_BASE) $(READLINE_OBJ)
-
 LOCKTEST2_OBJ = torture/locktest2.o $(LOCKING_OBJ) $(LIBSMB_OBJ) $(PARAM_OBJ) \
                  $(UBIQX_OBJ) $(LIB_OBJ)
 
@@ -449,16 +438,15 @@ DEBUG2HTML_OBJ = utils/debug2html.o ubiqx/debugparse.o
 SMBFILTER_OBJ = utils/smbfilter.o $(LIBSMB_OBJ) $(PARAM_OBJ) \
                  $(UBIQX_OBJ) $(LIB_OBJ)
 
-PROTO_OBJ = $(SMBD_OBJ_MAIN) \
-           $(SMBD_OBJ_SRV) $(NMBD_OBJ1) $(SWAT_OBJ1) $(LIB_OBJ) $(LIBSMB_OBJ) \
-           $(SMBW_OBJ1) $(SMBWRAPPER_OBJ1) $(SMBTORTURE_OBJ1) $(RPCCLIENT_OBJ1) \
+PROTO_OBJ = $(SMBD_OBJ1) $(NMBD_OBJ1) $(SWAT_OBJ1) $(LIB_OBJ) $(LIBSMB_OBJ) \
+           $(SMBWRAPPER_OBJ1) $(SMBTORTURE_OBJ1) $(RPCCLIENT_OBJ1) \
            $(LIBMSRPC_OBJ) $(LIBMSRPC_SERVER_OBJ) $(RPC_CLIENT_OBJ) \
            $(RPC_SERVER_OBJ) $(RPC_PARSE_OBJ) \
            $(AUTH_OBJ) $(PARAM_OBJ) $(LOCKING_OBJ) $(SECRETS_OBJ) \
            $(PRINTING_OBJ) $(PRINTBACKEND_OBJ) $(OPLOCK_OBJ) $(NOTIFY_OBJ) \
            $(QUOTAOBJS) $(PASSDB_OBJ) $(GROUPDB_OBJ) $(MSDFS_OBJ) \
            $(READLINE_OBJ) $(PROFILE_OBJ) $(LIBADS_OBJ) $(LIBADS_SERVER_OBJ) \
-           $(LIB_SMBD_OBJ) $(SAM_OBJ) $(REGISTRY_OBJ)
+           $(LIB_SMBD_OBJ) 
 
 NSS_OBJ_0 = nsswitch/wins.o $(PARAM_OBJ) $(UBIQX_OBJ) $(LIBSMB_OBJ) \
            $(LIB_OBJ) $(NSSWINS_OBJ)
@@ -498,7 +486,7 @@ WINBINDD_OBJ = \
                $(LIBNMB_OBJ) $(PARAM_OBJ) $(UBIQX_OBJ) $(LIB_OBJ) \
                $(LIBSMB_OBJ) $(LIBMSRPC_OBJ) $(RPC_PARSE_OBJ) \
                $(PROFILE_OBJ) $(UNIGRP_OBJ) \
-               $(SECRETS_OBJ) $(LIBADS_OBJ) 
+               $(SECRETS_OBJ) $(LIBADS_OBJ)
 
 WBINFO_OBJ = nsswitch/wbinfo.o libsmb/smbencrypt.o libsmb/smbdes.o
 
@@ -546,7 +534,7 @@ nsswitch : SHOWFLAGS $(WINBIND_PROGS) $(WINBIND_SPROGS) $(LPROGS)
 
 wins : SHOWFLAGS nsswitch/libnss_wins.so
 
-everything: all libsmbclient debug2html smbfilter talloctort bin/make_printerdef
+everything: all libsmbclient debug2html smbfilter talloctort bin/samsync bin/make_printerdef
 
 .SUFFIXES:
 .SUFFIXES: .c .o .po .po32 .lo
@@ -617,7 +605,7 @@ bin/.dummy:
 
 bin/smbd: $(SMBD_OBJ) bin/.dummy
        @echo Linking $@
-       @$(CC) $(FLAGS) -o $@ $(SMBD_OBJ) $(LDFLAGS) $(DYNEXP) $(PRINTLIBS) $(LIBS) 
+       @$(CC) $(FLAGS) -o $@ $(SMBD_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) 
 
 bin/nmbd: $(NMBD_OBJ) bin/.dummy
        @echo Linking $@
@@ -629,12 +617,16 @@ bin/wrepld: $(WREPL_OBJ) bin/.dummy
 
 bin/swat: $(SWAT_OBJ) bin/.dummy
        @echo Linking $@
-       @$(CC) $(FLAGS) -o $@ $(SWAT_OBJ) $(LDFLAGS) $(DYNEXP) $(PRINTLIBS) $(LIBS) 
+       @$(CC) $(FLAGS) -o $@ $(SWAT_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) 
 
 bin/rpcclient: $(RPCCLIENT_OBJ) @BUILD_POPT@ bin/.dummy
        @echo Linking $@
        @$(CC) $(FLAGS) -o $@ $(RPCCLIENT_OBJ) $(LDFLAGS) $(DYNEXP) $(TERMLDFLAGS) $(TERMLIBS) $(LIBS) @BUILD_POPT@
 
+bin/samsync: $(SAMSYNC_OBJ) bin/.dummy
+       @echo Linking $@
+       @$(CC) $(FLAGS) -o $@ $(SAMSYNC_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS)
+
 bin/smbclient: $(CLIENT_OBJ) bin/.dummy
        @echo Linking $@
        @$(CC) $(FLAGS) -o $@ $(CLIENT_OBJ) $(LDFLAGS) $(TERMLDFLAGS) $(TERMLIBS) $(LIBS)
@@ -665,7 +657,7 @@ bin/testparm: $(TESTPARM_OBJ) bin/.dummy
 
 bin/testprns: $(TESTPRNS_OBJ) bin/.dummy
        @echo Linking $@
-       @$(CC) $(FLAGS) -o $@ $(TESTPRNS_OBJ) $(LDFLAGS) $(PRINTLIBS) $(LIBS)
+       @$(CC) $(FLAGS) -o $@ $(TESTPRNS_OBJ) $(LDFLAGS) $(LIBS)
 
 bin/smbstatus: $(STATUS_OBJ) @BUILD_POPT@ bin/.dummy
        @echo Linking $@
@@ -687,10 +679,6 @@ bin/pdbedit: $(PDBEDIT_OBJ) bin/.dummy
        @echo Linking $@
        @$(CC) $(FLAGS) -o $@ $(PDBEDIT_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) @BUILD_POPT@
 
-bin/samtest: $(SAMTEST_OBJ) bin/.dummy
-       @echo Linking $@
-       @$(CC) $(FLAGS) -o $@ $(SAMTEST_OBJ) $(LDFLAGS) $(DYNEXP) $(TERMLDFLAGS) $(TERMLIBS) $(DYNEXP) $(LIBS) @BUILD_POPT@
-
 bin/smbgroupedit: $(SMBGROUPEDIT_OBJ) bin/.dummy
        @echo Linking $@
        @$(CC) $(FLAGS) -o $@ $(SMBGROUPEDIT_OBJ) $(LDFLAGS) $(LIBS)
@@ -731,10 +719,6 @@ bin/nsstest: $(NSSTEST_OBJ) bin/.dummy
        @echo Linking $@
        @$(CC) $(FLAGS) -o $@ $(NSSTEST_OBJ) $(LDFLAGS) $(LIBS)
 
-bin/vfstest: $(VFSTEST_OBJ) bin/.dummy
-       @echo Linking $@
-       @$(CC) $(FLAGS) -o $@ $(VFSTEST_OBJ) $(LDFLAGS) $(TERMLDFLAGS) $(TERMLIBS) $(DYNEXP) $(PRINTLIBS) $(LIBS) @BUILD_POPT@
-
 bin/locktest2: $(LOCKTEST2_OBJ) bin/.dummy
        @echo Linking $@
        @$(CC) $(FLAGS) -o $@ $(LOCKTEST2_OBJ) $(LDFLAGS) $(LIBS)
@@ -818,6 +802,10 @@ bin/pam_smbpass.@SHLIBEXT@: $(PAM_SMBPASS_PICOOBJ)
 bin/libmsrpc.a: $(LIBMSRPC_PICOBJ)
        -$(AR) -rc $@ $(LIBMSRPC_PICOBJ) 
 
+bin/spamsync: rpcclient/samsync.o bin/libmsrpc.a
+       @$(LINK) -o $@ rpcclient/samsync.o bin/libmsrpc.a \
+               $(UBIQX_OBJ) $(LIBS)
+
 bin/tdbbackup: $(TDBBACKUP_OBJ) bin/.dummy
        @echo Linking $@
        @$(CC) $(FLAGS) -o $@ $(TDBBACKUP_OBJ)
@@ -848,53 +836,6 @@ installclientlib:
        -$(INSTALLCMD) -d ${prefix}/include
        -$(INSTALLCMD) include/libsmbclient.h ${prefix}/include
 
-# Python extensions
-
-PYTHON_OBJS = $(LIB_OBJ) $(LIBSMB_OBJ) $(RPC_PARSE_OBJ) $(UBIQX_OBJ) \
-       $(PARAM_OBJ) $(LIBMSRPC_OBJ) $(PASSDB_OBJ) $(GROUPDB_OBJ) $(SECRETS_OBJ)
-
-PY_SPOOLSS_PROTO_OBJ = python/py_spoolss.o \
-               python/py_spoolss_printers.o python/py_spoolss_printers_conv.o\
-               python/py_spoolss_forms.o python/py_spoolss_forms_conv.o \
-               python/py_spoolss_ports.o python/py_spoolss_ports_conv.o \
-               python/py_spoolss_drivers.o python/py_spoolss_drivers_conv.o \
-               python/py_spoolss_jobs.o python/py_spoolss_jobs_conv.o \
-               python/py_spoolss_printerdata.o
-
-PY_LSA_PROTO_OBJ = python/py_lsa.o
-
-PY_COMMON_PROTO_OBJ = python/py_common.c python/py_ntsec.c
-
-python_proto: python_spoolss_proto python_lsa_proto python_common_proto
-
-python_spoolss_proto:
-       @cd $(srcdir) && $(SHELL) script/mkproto.sh $(AWK) \
-               -h _PY_SPOOLSS_PROTO_H python/py_spoolss_proto.h \
-               $(PY_SPOOLSS_PROTO_OBJ)
-
-python_lsa_proto:
-       @cd $(srcdir) && $(SHELL) script/mkproto.sh $(AWK) \
-               -h _PY_LSA_PROTO_H python/py_lsa_proto.h \
-               $(PY_LSA_PROTO_OBJ)
-
-python_common_proto:
-       @cd $(srcdir) && $(SHELL) script/mkproto.sh $(AWK) \
-               -h _PY_COMMON_PROTO_H python/py_common_proto.h \
-               $(PY_COMMON_PROTO_OBJ)
-
-python_ext: $(PYTHON_OBJS)
-       PYTHON_OBJS="$(PYTHON_OBJS)" PYTHON_CFLAGS="$(CFLAGS) $(CPPFLAGS) $(FLAGS)" \
-       LIBS="$(LIBS)" \
-               $(PYTHON) python/setup.py build
-
-python_install: $(PYTHON_OBJS)
-       PYTHON_OBJS="$(PYTHON_OBJS)" PYTHON_CFLAGS="$(CFLAGS) $(CPPFLAGS)" \
-       LIBS="$(LIBS)" \
-               $(PYTHON) python/setup.py install
-
-python_clean:
-       @if test -n "$(PYTHON)"; then $(PYTHON) python/setup.py clean; fi
-
 # revert to the previously installed version
 revert:
        @$(SHELL) $(srcdir)/script/revert.sh $(SBINDIR) $(SPROGS) 
@@ -930,9 +871,9 @@ uninstallscripts:
 # Toplevel clean files
 TOPFILES=dynconfig.o dynconfig.po
 
-clean: delheaders python_clean
+clean: delheaders
        -rm -f core */*~ *~ */*.o */*.po */*.po32 */*.@SHLIBEXT@ \
-               $(TOPFILES) $(PROGS) $(SPROGS) .headers.stamp
+       $(TOPFILES) $(PROGS) $(SPROGS) .headers.stamp
 
 # Making this target will just make sure that the prototype files
 # exist, not necessarily that they are up to date.  Since they're
@@ -1008,7 +949,7 @@ etags:
 ctags:
        ctags `find $(srcdir) -name "*.[ch]" | grep -v /CVS/`
 
-realclean: clean delheaders
+realclean: clean
        -rm -f config.log $(PROGS) $(SPROGS) bin/.dummy
        -rmdir bin
 
index 45d63669354d077e2cb8ba7a34ccfc16af7c8354..274bc4aaadd861e7c0e810c182bfdc9fd53b83db 100644 (file)
 #undef MMAP_BLACKLIST
 #undef HAVE_IMMEDIATE_STRUCTURES
 #undef HAVE_CUPS
-#undef WITH_SAM
 #undef WITH_LDAP_SAM
 #undef WITH_NISPLUS_SAM
 #undef WITH_TDB_SAM
 #undef HAVE_LDAP
 #undef HAVE_STAT_ST_BLOCKS
 #undef STAT_ST_BLOCKSIZE
-#undef HAVE_STAT_ST_BLKSIZE
 #undef HAVE_DEVICE_MAJOR_FN
 #undef HAVE_DEVICE_MINOR_FN
 #undef HAVE_PASSWD_PW_COMMENT
 #endif
 
 #undef LDAP_SET_REBIND_PROC_ARGS
-#undef HAVE_SENDFILE
-#undef HAVE_SENDFILE64
-#undef LINUX_SENDFILE_API
-#undef LINUX_BROKEN_SENDFILE_API
-#undef WITH_SENDFILE
-#undef FREEBSD_SENDFILE_API
-#undef HPUX_SENDFILE_API
-#undef WITH_ADS
+
index d54a8660b35d5e827f33bc62b0987b767ca95134..5ce7075ab9f9379a35a6bdc23242d711ad055f11 100644 (file)
@@ -41,8 +41,13 @@ static NTSTATUS check_guest_security(const struct auth_context *auth_context,
        NTSTATUS nt_status = NT_STATUS_LOGON_FAILURE;
 
        if (!(user_info->internal_username.str 
-             && *user_info->internal_username.str)) 
-               nt_status = make_server_info_guest(server_info);
+             && *user_info->internal_username.str)) { 
+               if (make_server_info_guest(server_info)) {
+                       nt_status = NT_STATUS_OK;
+               } else {
+                       nt_status = NT_STATUS_NO_SUCH_USER;
+               }
+       }
 
        return nt_status;
 }
@@ -189,7 +194,7 @@ NTSTATUS auth_init_plugin(struct auth_context *auth_context, const char *param,
        trim_string(plugin_name, " ", " ");
 
        DEBUG(5, ("Trying to load auth plugin %s\n", plugin_name));
-       dl_handle = sys_dlopen(plugin_name, RTLD_NOW );
+       dl_handle = sys_dlopen(plugin_name, RTLD_NOW | RTLD_GLOBAL );
        if (!dl_handle) {
                DEBUG(0, ("Failed to load auth plugin %s using sys_dlopen (%s)\n", plugin_name, sys_dlerror()));
                return NT_STATUS_UNSUCCESSFUL;
index 2e51a852816474dcdcd247bcc29b17ee984cec8f..d48cec5b2932444b7e102f90410bf7c7c6614501 100644 (file)
@@ -48,7 +48,7 @@ static NTSTATUS ads_resolve_dc(fstring remote_machine,
 
        DEBUG(4,("ads_resolve_dc: realm=%s\n", ads->config.realm));
 
-       ads->auth.flags |= ADS_AUTH_NO_BIND;
+       ads->auth.no_bind = 1;
 
 #ifdef HAVE_ADS
        /* a full ads_connect() is actually overkill, as we don't srictly need
@@ -131,7 +131,6 @@ static NTSTATUS connect_to_domain_password_server(struct cli_state **cli,
        struct in_addr dest_ip;
        fstring remote_machine;
         NTSTATUS result;
-       uint32 neg_flags = 0x000001ff;
 
        if (lp_security() == SEC_ADS) {
                result = ads_resolve_dc(remote_machine, &dest_ip);
@@ -207,7 +206,7 @@ machine %s. Error was : %s.\n", remote_machine, cli_errstr(*cli)));
                return NT_STATUS_NO_MEMORY;
        }
 
-       result = cli_nt_setup_creds(*cli, sec_chan, trust_passwd, &neg_flags, 2);
+       result = cli_nt_setup_creds(*cli, sec_chan, trust_passwd);
 
         if (!NT_STATUS_IS_OK(result)) {
                DEBUG(0,("connect_to_domain_password_server: unable to setup the PDC credentials to machine \
@@ -251,7 +250,7 @@ static NTSTATUS attempt_connect_to_dc(struct cli_state **cli,
 }
 
 /***********************************************************************
- We have been asked to dynamically determine the IP addresses of
+ We have been asked to dynamcially determine the IP addresses of
  the PDC and BDC's for DOMAIN, and query them in turn.
 ************************************************************************/
 static NTSTATUS find_connect_pdc(struct cli_state **cli, 
index bc98f46dc2f4676af5cec7e4f148256e96814ae9..155370546a5b3827f56f85ecbbd4b8c766c305e5 100644 (file)
@@ -106,10 +106,7 @@ static BOOL smb_pwd_check_ntlmv2(const DATA_BLOB ntv2_response,
        client_key_data = data_blob(ntv2_response.data+16, ntv2_response.length-16);
        memcpy(client_response, ntv2_response.data, sizeof(client_response));
 
-       if (!ntv2_owf_gen(part_passwd, user, domain, kr)) {
-               return False;
-       }
-
+       ntv2_owf_gen(part_passwd, user, domain, kr);
        SMBOWFencrypt_ntv2(kr, sec_blob, client_key_data, value_from_encryption);
        if (user_sess_key != NULL)
        {
@@ -236,17 +233,17 @@ static NTSTATUS sam_password_ok(const struct auth_context *auth_context,
                        return NT_STATUS_OK;
                } else {
                        if (lp_ntlm_auth()) {                           
-                               /* Apparently NT accepts NT responses in the LM field
-                                  - I think this is related to Win9X pass-though authentication
+                               /* Apparently NT accepts NT responses in the LM feild
+                                  - I think this is related to Win9X pass-though authenticaion
                                */
-                               DEBUG(4,("sam_password_ok: Checking NT MD4 password in LM field\n"));
+                               DEBUG(4,("sam_password_ok: Checking NT MD4 password in LM feild\n"));
                                if (smb_pwd_check_ntlmv1(user_info->lm_resp, 
                                                         nt_pw, auth_context->challenge,
                                                         user_sess_key)) 
                                {
                                        return NT_STATUS_OK;
                                } else {
-                                       DEBUG(3,("sam_password_ok: NT MD4 password in LM field failed for user %s\n",pdb_get_username(sampass)));
+                                       DEBUG(3,("sam_password_ok: NT MD4 password in LM feild failed for user %s\n",pdb_get_username(sampass)));
                                        return NT_STATUS_WRONG_PASSWORD;
                                }
                        }
@@ -406,9 +403,9 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context,
                return nt_status;
        }
 
-       if (!NT_STATUS_IS_OK(nt_status = make_server_info_sam(server_info, sampass))) {         
-               DEBUG(0,("check_sam_security: make_server_info_sam() failed with '%s'\n", nt_errstr(nt_status)));
-               return nt_status;
+       if (!make_server_info_sam(server_info, sampass)) {              
+               DEBUG(0,("failed to malloc memory for server_info\n"));
+               return NT_STATUS_NO_MEMORY;
        }
 
        lm_hash = pdb_get_lanman_passwd((*server_info)->sam_account);
index 0ed905e79c849f89048374a7920a25eb85ccad8d..23faedc0bac91bde554256783aa6306b8fa46971 100644 (file)
@@ -285,7 +285,7 @@ static NTSTATUS check_smbserver_security(const struct auth_context *auth_context
         * need to detect this as some versions of NT4.x are broken. JRA.
         */
 
-       /* I sure as hell hope that there aren't servers out there that take 
+       /* I sure as hell hope that there arn't servers out there that take 
         * NTLMv2 and have this bug, as we don't test for that... 
         *  - abartlet@samba.org
         */
@@ -375,7 +375,9 @@ use this machine as the password server.\n"));
        if NT_STATUS_IS_OK(nt_status) {
                struct passwd *pass = Get_Pwnam(user_info->internal_username.str);
                if (pass) {
-                       nt_status = make_server_info_pw(server_info, pass);
+                       if (!make_server_info_pw(server_info, pass)) { 
+                               nt_status = NT_STATUS_NO_MEMORY;
+                       }
                } else {
                        nt_status = NT_STATUS_NO_SUCH_USER;
                }
index ce5fd32337b0891217130c1083c1f5b31ed8f1b1..f914d918715dd7dfc3a7a1e14db91109ee546785 100644 (file)
@@ -4,7 +4,6 @@
    Copyright (C) Andrew Tridgell 1992-1998
    Copyright (C) Andrew Bartlett 2001
    Copyright (C) Jeremy Allison 2000-2001
-   Copyright (C) Rafal Szczesniak 2002
 
    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
 #define DBGC_CLASS DBGC_AUTH
 
 extern pstring global_myname;
-extern DOM_SID global_sid_World;
-extern DOM_SID global_sid_Network;
-extern DOM_SID global_sid_Builtin_Guests;
-extern DOM_SID global_sid_Authenticated_Users;
-
 
 /****************************************************************************
  Create a UNIX user on demand.
@@ -57,7 +51,7 @@ static int smb_create_user(const char *unix_user, const char *homedir)
  Add and Delete UNIX users on demand, based on NTSTATUS codes.
 ****************************************************************************/
 
-void smb_user_control(const auth_usersupplied_info *user_info, auth_serversupplied_info *server_info, NTSTATUS nt_status)
+void smb_user_control(const auth_usersupplied_info *user_info, auth_serversupplied_info *server_info, NTSTATUS nt_status) 
 {
        struct passwd *pwd=NULL;
 
@@ -82,15 +76,15 @@ void smb_user_control(const auth_usersupplied_info *user_info, auth_serversuppli
  Create an auth_usersupplied_data structure
 ****************************************************************************/
 
-static NTSTATUS make_user_info(auth_usersupplied_info **user_info, 
-                               const char *smb_name, 
-                               const char *internal_username,
-                               const char *client_domain, 
-                               const char *domain,
-                               const char *wksta_name, 
-                               DATA_BLOB lm_pwd, DATA_BLOB nt_pwd,
-                               DATA_BLOB plaintext, 
-                               uint32 auth_flags, BOOL encrypted)
+static BOOL make_user_info(auth_usersupplied_info **user_info, 
+                          const char *smb_name, 
+                          const char *internal_username,
+                          const char *client_domain, 
+                          const char *domain,
+                          const char *wksta_name, 
+                          DATA_BLOB lm_pwd, DATA_BLOB nt_pwd,
+                          DATA_BLOB plaintext, 
+                          uint32 auth_flags, BOOL encrypted)
 {
 
        DEBUG(5,("attempting to make a user_info for %s (%s)\n", internal_username, smb_name));
@@ -98,7 +92,7 @@ static NTSTATUS make_user_info(auth_usersupplied_info **user_info,
        *user_info = malloc(sizeof(**user_info));
        if (!user_info) {
                DEBUG(0,("malloc failed for user_info (size %d)\n", sizeof(*user_info)));
-               return NT_STATUS_NO_MEMORY;
+               return False;
        }
 
        ZERO_STRUCTP(*user_info);
@@ -110,7 +104,7 @@ static NTSTATUS make_user_info(auth_usersupplied_info **user_info,
                (*user_info)->smb_name.len = strlen(smb_name);
        } else {
                free_user_info(user_info);
-               return NT_STATUS_NO_MEMORY;
+               return False;
        }
        
        (*user_info)->internal_username.str = strdup(internal_username);
@@ -118,7 +112,7 @@ static NTSTATUS make_user_info(auth_usersupplied_info **user_info,
                (*user_info)->internal_username.len = strlen(internal_username);
        } else {
                free_user_info(user_info);
-               return NT_STATUS_NO_MEMORY;
+               return False;
        }
 
        (*user_info)->domain.str = strdup(domain);
@@ -126,7 +120,7 @@ static NTSTATUS make_user_info(auth_usersupplied_info **user_info,
                (*user_info)->domain.len = strlen(domain);
        } else {
                free_user_info(user_info);
-               return NT_STATUS_NO_MEMORY;
+               return False;
        }
 
        (*user_info)->client_domain.str = strdup(client_domain);
@@ -134,7 +128,7 @@ static NTSTATUS make_user_info(auth_usersupplied_info **user_info,
                (*user_info)->client_domain.len = strlen(client_domain);
        } else {
                free_user_info(user_info);
-               return NT_STATUS_NO_MEMORY;
+               return False;
        }
 
        (*user_info)->wksta_name.str = strdup(wksta_name);
@@ -142,7 +136,7 @@ static NTSTATUS make_user_info(auth_usersupplied_info **user_info,
                (*user_info)->wksta_name.len = strlen(wksta_name);
        } else {
                free_user_info(user_info);
-               return NT_STATUS_NO_MEMORY;
+               return False;
        }
 
        DEBUG(5,("making blobs for %s's user_info struct\n", internal_username));
@@ -156,26 +150,26 @@ static NTSTATUS make_user_info(auth_usersupplied_info **user_info,
 
        DEBUG(10,("made an %sencrypted user_info for %s (%s)\n", encrypted ? "":"un" , internal_username, smb_name));
 
-       return NT_STATUS_OK;
+       return True;
 }
 
 /****************************************************************************
  Create an auth_usersupplied_data structure after appropriate mapping.
 ****************************************************************************/
 
-NTSTATUS make_user_info_map(auth_usersupplied_info **user_info, 
-                           const char *smb_name, 
-                           const char *client_domain, 
-                           const char *wksta_name, 
-                           DATA_BLOB lm_pwd, DATA_BLOB nt_pwd,
-                           DATA_BLOB plaintext, 
-                           uint32 ntlmssp_flags, BOOL encrypted)
+BOOL make_user_info_map(auth_usersupplied_info **user_info, 
+                       const char *smb_name, 
+                       const char *client_domain, 
+                       const char *wksta_name, 
+                       DATA_BLOB lm_pwd, DATA_BLOB nt_pwd,
+                       DATA_BLOB plaintext, 
+                       uint32 ntlmssp_flags, BOOL encrypted)
 {
        const char *domain;
        fstring internal_username;
        fstrcpy(internal_username, smb_name);
        map_username(internal_username); 
-       
+
        DEBUG(5, ("make_user_info_map: Mapping user [%s]\\[%s] from workstation [%s]\n",
              client_domain, smb_name, wksta_name));
        
@@ -204,7 +198,7 @@ NTSTATUS make_user_info_map(auth_usersupplied_info **user_info,
                                 client_domain, lp_winbind_separator(), 
                                 smb_name) < 0) {
                                DEBUG(0, ("make_user_info_map: asprintf() failed!\n"));
-                               return NT_STATUS_NO_MEMORY;
+                               return False;
                        }
 
                        DEBUG(5, ("make_user_info_map: testing for user %s\n", user));
@@ -246,7 +240,6 @@ BOOL make_user_info_netlogon_network(auth_usersupplied_info **user_info,
                                     const uchar *nt_network_pwd, int nt_pwd_len)
 {
        BOOL ret;
-       NTSTATUS nt_status;
        DATA_BLOB lm_blob = data_blob(lm_network_pwd, lm_pwd_len);
        DATA_BLOB nt_blob = data_blob(nt_network_pwd, nt_pwd_len);
        DATA_BLOB plaintext_blob = data_blob(NULL, 0);
@@ -260,14 +253,12 @@ BOOL make_user_info_netlogon_network(auth_usersupplied_info **user_info,
                auth_flags |= AUTH_FLAG_NTLMv2_RESP; 
        }
 
-       nt_status = make_user_info_map(user_info,
-                                     smb_name, client_domain, 
-                                  wksta_name, 
-                                     lm_blob, nt_blob,
-                                     plaintext_blob, 
-                                     auth_flags, True);
-       
-       ret = NT_STATUS_IS_OK(nt_status) ? True : False;
+       ret = make_user_info_map(user_info, 
+                                smb_name, client_domain, 
+                                wksta_name, 
+                                lm_blob, nt_blob,
+                                plaintext_blob, 
+                                auth_flags, True);
                
        data_blob_free(&lm_blob);
        data_blob_free(&nt_blob);
@@ -333,7 +324,6 @@ BOOL make_user_info_netlogon_interactive(auth_usersupplied_info **user_info,
 
        {
                BOOL ret;
-               NTSTATUS nt_status;
                DATA_BLOB local_lm_blob = data_blob(local_lm_response, sizeof(local_lm_response));
                DATA_BLOB local_nt_blob = data_blob(local_nt_response, sizeof(local_nt_response));
                DATA_BLOB plaintext_blob = data_blob(NULL, 0);
@@ -343,15 +333,14 @@ BOOL make_user_info_netlogon_interactive(auth_usersupplied_info **user_info,
                if (nt_interactive_pwd)
                        auth_flags |= AUTH_FLAG_NTLM_RESP; 
 
-               nt_status = make_user_info_map(user_info, 
-                                              smb_name, client_domain, 
-                                              wksta_name, 
-                                              local_lm_blob,
-                                              local_nt_blob,
-                                              plaintext_blob, 
-                                              auth_flags, True);
+               ret = make_user_info_map(user_info, 
+                                        smb_name, client_domain, 
+                                        wksta_name, 
+                                        local_lm_blob,
+                                        local_nt_blob,
+                                        plaintext_blob, 
+                                        auth_flags, True);
                
-               ret = NT_STATUS_IS_OK(nt_status) ? True : False;
                data_blob_free(&local_lm_blob);
                data_blob_free(&local_nt_blob);
                return ret;
@@ -372,7 +361,7 @@ BOOL make_user_info_for_reply(auth_usersupplied_info **user_info,
 
        DATA_BLOB local_lm_blob;
        DATA_BLOB local_nt_blob;
-       NTSTATUS ret = NT_STATUS_UNSUCCESSFUL;
+       BOOL ret = False;
        uint32 auth_flags = AUTH_FLAG_NONE;
                        
        /*
@@ -403,25 +392,25 @@ BOOL make_user_info_for_reply(auth_usersupplied_info **user_info,
        }
        
        ret = make_user_info_map(user_info, smb_name,
-                                client_domain, 
-                                get_remote_machine_name(),
-                                local_lm_blob,
-                                local_nt_blob,
-                                plaintext_password, 
-                                auth_flags, False);
+                                client_domain, 
+                                get_remote_machine_name(),
+                                local_lm_blob,
+                                local_nt_blob,
+                                plaintext_password, 
+                                auth_flags, False);
        
        data_blob_free(&local_lm_blob);
-       return NT_STATUS_IS_OK(ret) ? True : False;
+       return ret;
 }
 
 /****************************************************************************
  Create an auth_usersupplied_data structure
 ****************************************************************************/
 
-NTSTATUS make_user_info_for_reply_enc(auth_usersupplied_info **user_info, 
-                                      const char *smb_name,
-                                      const char *client_domain, 
-                                      DATA_BLOB lm_resp, DATA_BLOB nt_resp)
+BOOL make_user_info_for_reply_enc(auth_usersupplied_info **user_info, 
+                                 const char *smb_name,
+                                 const char *client_domain, 
+                                 DATA_BLOB lm_resp, DATA_BLOB nt_resp)
 {
        uint32 auth_flags = AUTH_FLAG_NONE;
 
@@ -456,338 +445,47 @@ BOOL make_user_info_guest(auth_usersupplied_info **user_info)
        DATA_BLOB nt_blob = data_blob(NULL, 0);
        DATA_BLOB plaintext_blob = data_blob(NULL, 0);
        uint32 auth_flags = AUTH_FLAG_NONE;
-       NTSTATUS nt_status;
 
-       nt_status = make_user_info(user_info, 
+       return make_user_info(user_info, 
                              "","", 
                              "","", 
                              "", 
                              nt_blob, lm_blob,
                              plaintext_blob, 
                              auth_flags, True);
-                             
-       return NT_STATUS_IS_OK(nt_status) ? True : False;
-}
-
-/****************************************************************************
- prints a NT_USER_TOKEN to debug output.
-****************************************************************************/
-
-void debug_nt_user_token(int dbg_class, int dbg_lev, NT_USER_TOKEN *token)
-{
-       fstring sid_str;
-       int     i;
-       
-       if (!token) {
-               DEBUGC(dbg_class, dbg_lev, ("NT user token: (NULL)\n"));
-               return;
-       }
-       
-       DEBUGC(dbg_class, dbg_lev, ("NT user token of user %s\n",
-                                   sid_to_string(sid_str, &token->user_sids[0]) ));
-       DEBUGADDC(dbg_class, dbg_lev, ("contains %i SIDs\n", token->num_sids));
-       for (i = 0; i < token->num_sids; i++)
-               DEBUGADDC(dbg_class, dbg_lev, ("SID[%3i]: %s\n", i, 
-                                              sid_to_string(sid_str, &token->user_sids[i])));
-}
-
-/****************************************************************************
- prints a UNIX 'token' to debug output.
-****************************************************************************/
-
-void debug_unix_user_token(int dbg_class, int dbg_lev, uid_t uid, gid_t gid, int n_groups, gid_t *groups)
-{
-       int     i;
-       DEBUGC(dbg_class, dbg_lev, ("UNIX token of user %ld\n", (long int)uid));
-
-       DEBUGADDC(dbg_class, dbg_lev, ("Primary group is %ld and contains %i supplementary groups\n", (long int)gid, n_groups));
-       for (i = 0; i < n_groups; i++)
-               DEBUGADDC(dbg_class, dbg_lev, ("Group[%3i]: %ld\n", i, 
-                       (long int)groups[i]));
-}
-
-/****************************************************************************
- Create the SID list for this user.
-****************************************************************************/
-
-static NTSTATUS create_nt_user_token(const DOM_SID *user_sid, const DOM_SID *group_sid, 
-                                    int n_groupSIDs, DOM_SID *groupSIDs, 
-                                    BOOL is_guest, NT_USER_TOKEN **token)
-{
-       NTSTATUS       nt_status = NT_STATUS_OK;
-       NT_USER_TOKEN *ptoken;
-       int i;
-       int sid_ndx;
-       
-       if ((ptoken = malloc( sizeof(NT_USER_TOKEN) ) ) == NULL) {
-               DEBUG(0, ("create_nt_token: Out of memory allocating token\n"));
-               nt_status = NT_STATUS_NO_MEMORY;
-               return nt_status;
-       }
-
-       ZERO_STRUCTP(ptoken);
-
-       ptoken->num_sids = n_groupSIDs + 5;
-
-       if ((ptoken->user_sids = (DOM_SID *)malloc( sizeof(DOM_SID) * ptoken->num_sids )) == NULL) {
-               DEBUG(0, ("create_nt_token: Out of memory allocating SIDs\n"));
-               nt_status = NT_STATUS_NO_MEMORY;
-               return nt_status;
-       }
-       
-       memset((char*)ptoken->user_sids,0,sizeof(DOM_SID) * ptoken->num_sids);
-       
-       /*
-        * Note - user SID *MUST* be first in token !
-        * se_access_check depends on this.
-        *
-        * Primary group SID is second in token. Convention.
-        */
-
-       sid_copy(&ptoken->user_sids[PRIMARY_USER_SID_INDEX], user_sid);
-       if (group_sid)
-               sid_copy(&ptoken->user_sids[PRIMARY_GROUP_SID_INDEX], group_sid);
-
-       /*
-        * Finally add the "standard" SIDs.
-        * The only difference between guest and "anonymous" (which we
-        * don't really support) is the addition of Authenticated_Users.
-        */
-
-       sid_copy(&ptoken->user_sids[2], &global_sid_World);
-       sid_copy(&ptoken->user_sids[3], &global_sid_Network);
-
-       if (is_guest)
-               sid_copy(&ptoken->user_sids[4], &global_sid_Builtin_Guests);
-       else
-               sid_copy(&ptoken->user_sids[4], &global_sid_Authenticated_Users);
-       
-       sid_ndx = 5; /* next available spot */
-
-       for (i = 0; i < n_groupSIDs; i++) {
-               int check_sid_idx;
-               for (check_sid_idx = 1; check_sid_idx < ptoken->num_sids; check_sid_idx++) {
-                       if (sid_equal(&ptoken->user_sids[check_sid_idx], 
-                                     &groupSIDs[i])) {
-                               break;
-                       }
-               }
-               
-               if (check_sid_idx >= ptoken->num_sids) /* Not found already */ {
-                       sid_copy(&ptoken->user_sids[sid_ndx++], &groupSIDs[i]);
-               } else {
-                       ptoken->num_sids--;
-               }
-       }
-       
-       debug_nt_user_token(DBGC_AUTH, 10, ptoken);
-       
-       *token = ptoken;
-
-       return nt_status;
-}
-
-/****************************************************************************
- Create the SID list for this user.
-****************************************************************************/
-
-NT_USER_TOKEN *create_nt_token(uid_t uid, gid_t gid, int ngroups, gid_t *groups, BOOL is_guest)
-{
-       DOM_SID user_sid;
-       DOM_SID group_sid;
-       DOM_SID *group_sids;
-       NT_USER_TOKEN *token;
-       int i;
-
-       if (!uid_to_sid(&user_sid, uid)) {
-               return NULL;
-       }
-       if (!gid_to_sid(&group_sid, gid)) {
-               return NULL;
-       }
-
-       group_sids   = malloc(sizeof(DOM_SID) * ngroups);
-       if (!group_sids) {
-               DEBUG(0, ("create_nt_token: malloc() failed for DOM_SID list!\n"));
-               return NULL;
-       }
-
-       for (i = 0; i < ngroups; i++) {
-               if (!gid_to_sid(&(group_sids)[i], (groups)[i])) {
-                       DEBUG(1, ("create_nt_token: failed to convert gid %ld to a sid!\n", (long int)groups[i]));
-                       SAFE_FREE(group_sids);
-                       return NULL;
-               }
-       }
-
-       if (!NT_STATUS_IS_OK(create_nt_user_token(&user_sid, &group_sid, 
-                                                 ngroups, group_sids, is_guest, &token))) {
-               SAFE_FREE(group_sids);
-               return NULL;
-       }
-
-       SAFE_FREE(group_sids);
-
-       return token;
-}
-
-/******************************************************************************
- * this function returns the groups (SIDs) of the local SAM the user is in.
- * If this samba server is a DC of the domain the user belongs to, it returns 
- * both domain groups and local / builtin groups. If the user is in a trusted
- * domain, or samba is a member server of a domain, then this function returns
- * local and builtin groups the user is a member of. 
- *
- * currently this is a hack, as there is no sam implementation that is capable
- * of groups.
- ******************************************************************************/
-
-static NTSTATUS get_user_groups_from_local_sam(const DOM_SID *user_sid, 
-                                              int *n_groups, DOM_SID **groups, gid_t **unix_groups)
-{
-       uid_t             uid;
-       enum SID_NAME_USE snu;
-       fstring           str;
-       int               n_unix_groups;
-       int               i;
-       struct passwd    *usr;  
-       
-       *n_groups = 0;
-       *groups   = NULL;
-       
-       if (!sid_to_uid(user_sid,  &uid, &snu)) {
-               DEBUG(2, ("get_user_groups_from_local_sam: Failed to convert user SID %s to a uid!\n", 
-                         sid_to_string(str, user_sid)));
-               /* This might be a non-unix account */
-               return NT_STATUS_OK;
-       }
-
-       /*
-        * This is _essential_ to prevent occasional segfaults when
-        * winbind can't find uid -> username mapping
-        */
-       if (!(usr = getpwuid_alloc(uid))) {
-               DEBUG(0, ("Couldn't find passdb structure for UID = %d ! Aborting.\n", uid));
-               return NT_STATUS_NO_SUCH_USER;
-       };
-       
-       n_unix_groups = groups_max();
-       if ((*unix_groups = malloc( sizeof(gid_t) * groups_max() ) ) == NULL) {
-               DEBUG(0, ("get_user_groups_from_local_sam: Out of memory allocating unix group list\n"));
-               passwd_free(&usr);
-               return NT_STATUS_NO_MEMORY;
-       }
-       
-       if (sys_getgrouplist(usr->pw_name, usr->pw_gid, *unix_groups, &n_unix_groups) == -1) {
-               *unix_groups = Realloc(unix_groups, sizeof(gid_t) * n_unix_groups);
-               if (sys_getgrouplist(usr->pw_name, usr->pw_gid, *unix_groups, &n_unix_groups) == -1) {
-                       DEBUG(0, ("get_user_groups_from_local_sam: failed to get the unix group list\n"));
-                       SAFE_FREE(unix_groups);
-                       passwd_free(&usr);
-                       return NT_STATUS_NO_SUCH_USER; /* what should this return value be? */
-               }
-       }
-
-       debug_unix_user_token(DBGC_CLASS, 5, usr->pw_uid, usr->pw_gid, n_unix_groups, *unix_groups);
-
-       passwd_free(&usr);
-       
-       if (n_unix_groups > 0) {
-               *groups   = malloc(sizeof(DOM_SID) * n_unix_groups);
-               if (!*groups) {
-                       DEBUG(0, ("get_user_group_from_local_sam: malloc() failed for DOM_SID list!\n"));
-                       SAFE_FREE(unix_groups);
-                       return NT_STATUS_NO_MEMORY;
-               }
-       }
-
-       *n_groups = n_unix_groups;
-
-       for (i = 0; i < *n_groups; i++) {
-               if (!gid_to_sid(&(*groups)[i], (*unix_groups)[i])) {
-                       DEBUG(1, ("get_user_groups_from_local_sam: failed to convert gid %ld to a sid!\n", (long int)unix_groups[i+1]));
-                       SAFE_FREE(groups);
-                       SAFE_FREE(unix_groups);
-                       return NT_STATUS_NO_SUCH_USER;
-               }
-       }
-                    
-       return NT_STATUS_OK;
 }
 
 /***************************************************************************
  Make a user_info struct
 ***************************************************************************/
 
-static NTSTATUS make_server_info(auth_serversupplied_info **server_info, SAM_ACCOUNT *sampass)
+static BOOL make_server_info(auth_serversupplied_info **server_info) 
 {
        *server_info = malloc(sizeof(**server_info));
        if (!*server_info) {
                DEBUG(0,("make_server_info: malloc failed!\n"));
-               return NT_STATUS_NO_MEMORY;
+               return False;
        }
        ZERO_STRUCTP(*server_info);
-
-       (*server_info)->sam_fill_level = SAM_FILL_ALL;
-       (*server_info)->sam_account    = sampass;
-
-       return NT_STATUS_OK;
+       return True;
 }
 
 /***************************************************************************
  Make (and fill) a user_info struct from a SAM_ACCOUNT
 ***************************************************************************/
 
-NTSTATUS make_server_info_sam(auth_serversupplied_info **server_info, 
-                             SAM_ACCOUNT *sampass)
+BOOL make_server_info_sam(auth_serversupplied_info **server_info, SAM_ACCOUNT *sampass) 
 {
-       NTSTATUS nt_status = NT_STATUS_OK;
-       const DOM_SID *user_sid = pdb_get_user_sid(sampass);
-       const DOM_SID *group_sid = pdb_get_group_sid(sampass);
-       int       n_groupSIDs = 0;
-       DOM_SID  *groupSIDs   = NULL;
-       gid_t    *unix_groups = NULL;
-       NT_USER_TOKEN *token;
-       BOOL is_guest;
-       uint32 rid;
-
-       if (!NT_STATUS_IS_OK(nt_status = make_server_info(server_info, sampass))) {
-               return nt_status;
-       }
-       
-       if (!NT_STATUS_IS_OK(nt_status 
-                            = get_user_groups_from_local_sam(pdb_get_user_sid(sampass), 
-               &n_groupSIDs, &groupSIDs, &unix_groups)))
-       {
-               DEBUG(4,("get_user_groups_from_local_sam failed\n"));
-               free_server_info(server_info);
-               return nt_status;
-       }
-       
-       is_guest = (sid_peek_rid(user_sid, &rid) && rid == DOMAIN_USER_RID_GUEST);
-
-       if (!NT_STATUS_IS_OK(nt_status = create_nt_user_token(user_sid, group_sid,
-                                                             n_groupSIDs, groupSIDs, is_guest, 
-                                                             &token)))
-       {
-               DEBUG(4,("create_nt_user_token failed\n"));
-               SAFE_FREE(groupSIDs);
-               SAFE_FREE(unix_groups);
-               free_server_info(server_info);
-               return nt_status;
+       if (!make_server_info(server_info)) {
+               return False;
        }
-       
-       SAFE_FREE(groupSIDs);
 
-       (*server_info)->n_groups = n_groupSIDs;
-       (*server_info)->groups = unix_groups;
+       (*server_info)->sam_fill_level = SAM_FILL_ALL;
+       (*server_info)->sam_account = sampass;
 
-       (*server_info)->ptok = token;
-       
        DEBUG(5,("make_server_info_sam: made server info for user %s\n",
                 pdb_get_username((*server_info)->sam_account)));
-
-       return nt_status;
+       return True;
 }
 
 /***************************************************************************
@@ -795,42 +493,75 @@ NTSTATUS make_server_info_sam(auth_serversupplied_info **server_info,
  to a SAM_ACCOUNT
 ***************************************************************************/
 
-NTSTATUS make_server_info_pw(auth_serversupplied_info **server_info, const struct passwd *pwd)
+BOOL make_server_info_pw(auth_serversupplied_info **server_info, const struct passwd *pwd)
 {
-       NTSTATUS nt_status;
        SAM_ACCOUNT *sampass = NULL;
-       if (!NT_STATUS_IS_OK(nt_status = pdb_init_sam_pw(&sampass, pwd))) {             
-               return nt_status;
+       if (!NT_STATUS_IS_OK(pdb_init_sam_pw(&sampass, pwd))) {         
+               return False;
        }
        return make_server_info_sam(server_info, sampass);
 }
 
 /***************************************************************************
- Make (and fill) a user_info struct for a guest login.
+ Free a user_info struct
 ***************************************************************************/
 
-NTSTATUS make_server_info_guest(auth_serversupplied_info **server_info)
+void free_user_info(auth_usersupplied_info **user_info)
 {
-       NTSTATUS nt_status;
-       SAM_ACCOUNT *sampass = NULL;
-       DOM_SID guest_sid;
-
-       if (!NT_STATUS_IS_OK(nt_status = pdb_init_sam(&sampass))) {
-               return nt_status;
+       DEBUG(5,("attempting to free (and zero) a user_info structure\n"));
+       if (*user_info != NULL) {
+               if ((*user_info)->smb_name.str) {
+                       DEBUG(10,("structure was created for %s\n", (*user_info)->smb_name.str));
+               }
+               SAFE_FREE((*user_info)->smb_name.str);
+               SAFE_FREE((*user_info)->internal_username.str);
+               SAFE_FREE((*user_info)->client_domain.str);
+               SAFE_FREE((*user_info)->domain.str);
+               SAFE_FREE((*user_info)->wksta_name.str);
+               data_blob_free(&(*user_info)->lm_resp);
+               data_blob_free(&(*user_info)->nt_resp);
+               SAFE_FREE((*user_info)->interactive_password);
+               data_blob_clear_free(&(*user_info)->plaintext_password);
+               ZERO_STRUCT(**user_info);
        }
+       SAFE_FREE(*user_info);
+}
 
-       sid_copy(&guest_sid, get_global_sam_sid());
-       sid_append_rid(&guest_sid, DOMAIN_USER_RID_GUEST);
+/***************************************************************************
+ Clear out a server_info struct that has been allocated
+***************************************************************************/
 
-       if (!pdb_getsampwsid(sampass, &guest_sid)) {
-               return NT_STATUS_NO_SUCH_USER;
+void free_server_info(auth_serversupplied_info **server_info)
+{
+       if (*server_info != NULL) {
+               pdb_free_sam(&(*server_info)->sam_account);
+               
+               /* call pam_end here, unless we know we are keeping it */
+               delete_nt_token( &(*server_info)->ptok );
+               ZERO_STRUCT(**server_info);
        }
+       SAFE_FREE(*server_info);
+}
 
-       nt_status = make_server_info_sam(server_info, sampass);
-
-       (*server_info)->guest = True;
+/***************************************************************************
+ Make a server_info struct for a guest user 
+***************************************************************************/
 
-       return nt_status;
+BOOL make_server_info_guest(auth_serversupplied_info **server_info) 
+{
+       struct passwd *pass = getpwnam_alloc(lp_guestaccount());
+       
+       if (pass) {
+               if (!make_server_info_pw(server_info, pass)) {
+                       passwd_free(&pass);
+                       return False;
+               }
+               (*server_info)->guest = True;
+               passwd_free(&pass);
+               return True;
+       }
+       DEBUG(0,("make_server_info_guest: getpwnam_alloc() failed on guest account!\n")); 
+       return False;
 }
 
 /***************************************************************************
@@ -858,15 +589,6 @@ NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx,
        uid_t uid;
        gid_t gid;
 
-       int n_lgroupSIDs;
-       DOM_SID *lgroupSIDs   = NULL;
-
-       gid_t *unix_groups = NULL;
-       NT_USER_TOKEN *token;
-
-       DOM_SID *all_group_SIDs;
-       int i;
-
        /* 
           Here is where we should check the list of
           trusted domains, and verify that the SID 
@@ -976,126 +698,47 @@ NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx,
                return NT_STATUS_NO_MEMORY;
        }
 
-       if (!NT_STATUS_IS_OK(nt_status = make_server_info(server_info, sam_account))) {
-               DEBUG(4, ("make_server_info failed!\n"));
+       if (!make_server_info_sam(server_info, sam_account)) { 
+               DEBUG(0, ("make_server_info_info3: make_server_info_sam failed!\n"));
                pdb_free_sam(&sam_account);
-               return nt_status;
+               return NT_STATUS_NO_MEMORY;
        }
 
        /* Store the user group information in the server_info 
           returned to the caller. */
        
-       if (!NT_STATUS_IS_OK(nt_status 
-                            = get_user_groups_from_local_sam(&user_sid, 
-                                                             &n_lgroupSIDs, 
-                                                             &lgroupSIDs, 
-                                                             &unix_groups)))
-       {
-               DEBUG(4,("get_user_groups_from_local_sam failed\n"));
-               return nt_status;
-       }
-
-       (*server_info)->groups = unix_groups;
-       (*server_info)->n_groups = n_lgroupSIDs;
-       
-       /* Create a 'combined' list of all SIDs we might want in the SD */
-       all_group_SIDs   = malloc(sizeof(DOM_SID) * 
-                                 (n_lgroupSIDs + info3->num_groups2 +
-                                  info3->num_other_sids));
-       if (!all_group_SIDs) {
-               DEBUG(0, ("create_nt_token_info3: malloc() failed for DOM_SID list!\n"));
-               SAFE_FREE(lgroupSIDs);
-               return NT_STATUS_NO_MEMORY;
-       }
-
-       /* Copy the 'local' sids */
-       memcpy(all_group_SIDs, lgroupSIDs, sizeof(DOM_SID) * n_lgroupSIDs);
-       SAFE_FREE(lgroupSIDs);
-
-       /* and create (by appending rids) the 'domain' sids */
-       for (i = 0; i < info3->num_groups2; i++) {
-               sid_copy(&all_group_SIDs[i+n_lgroupSIDs], &(info3->dom_sid.sid));
-               if (!sid_append_rid(&all_group_SIDs[i+n_lgroupSIDs], info3->gids[i].g_rid)) {
-                       nt_status = NT_STATUS_INVALID_PARAMETER;
-                       DEBUG(3,("create_nt_token_info3: could not append additional group rid 0x%x\n",
-                               info3->gids[i].g_rid));                 
-                       SAFE_FREE(lgroupSIDs);
+       if (info3->num_groups2 != 0) {
+               int i;
+               NT_USER_TOKEN *ptok;
+               auth_serversupplied_info *pserver_info = *server_info;
+               
+               if ((pserver_info->ptok = malloc( sizeof(NT_USER_TOKEN) ) ) == NULL) {
+                       DEBUG(0, ("domain_client_validate: out of memory allocating rid group membership\n"));
+                       nt_status = NT_STATUS_NO_MEMORY;
+                       free_server_info(server_info);
                        return nt_status;
                }
-       }
-
-       /* Copy 'other' sids.  We need to do sid filtering here to
-          prevent possible elevation of privileges.  See:
-
-           http://www.microsoft.com/windows2000/techinfo/administration/security/sidfilter.asp
-         */
-
-       for (i = 0; i < info3->num_other_sids; i++) 
-               sid_copy(&all_group_SIDs[
-                                n_lgroupSIDs + info3->num_groups2 + i],
-                        &info3->other_sids[i].sid);
-       
-       /* Where are the 'global' sids... */
-
-       /* can the user be guest? if yes, where is it stored? */
-       if (!NT_STATUS_IS_OK(
-                   nt_status = create_nt_user_token(
-                           &user_sid, &group_sid,
-                           n_lgroupSIDs + info3->num_groups2 + info3->num_other_sids, 
-                           all_group_SIDs, False, &token))) {
-               DEBUG(4,("create_nt_user_token failed\n"));
-               SAFE_FREE(all_group_SIDs);
-               return nt_status;
-       }
-
-       (*server_info)->ptok = token; 
-
-       SAFE_FREE(all_group_SIDs);
-       
-       return NT_STATUS_OK;
-}
-
-/***************************************************************************
- Free a user_info struct
-***************************************************************************/
-
-void free_user_info(auth_usersupplied_info **user_info)
-{
-       DEBUG(5,("attempting to free (and zero) a user_info structure\n"));
-       if (*user_info != NULL) {
-               if ((*user_info)->smb_name.str) {
-                       DEBUG(10,("structure was created for %s\n", (*user_info)->smb_name.str));
+               
+               ptok = pserver_info->ptok;
+               ptok->num_sids = (size_t)info3->num_groups2;
+               
+               if ((ptok->user_sids = (DOM_SID *)malloc( sizeof(DOM_SID) * ptok->num_sids )) == NULL) {
+                       DEBUG(0, ("domain_client_validate: Out of memory allocating group SIDS\n"));
+                       nt_status = NT_STATUS_NO_MEMORY;
+                       free_server_info(server_info);
+                       return nt_status;
+               }
+               
+               for (i = 0; i < ptok->num_sids; i++) {
+                       sid_copy(&ptok->user_sids[i], &(info3->dom_sid.sid));
+                       if (!sid_append_rid(&ptok->user_sids[i], info3->gids[i].g_rid)) {
+                               nt_status = NT_STATUS_INVALID_PARAMETER;
+                               free_server_info(server_info);
+                               return nt_status;
+                       }
                }
-               SAFE_FREE((*user_info)->smb_name.str);
-               SAFE_FREE((*user_info)->internal_username.str);
-               SAFE_FREE((*user_info)->client_domain.str);
-               SAFE_FREE((*user_info)->domain.str);
-               SAFE_FREE((*user_info)->wksta_name.str);
-               data_blob_free(&(*user_info)->lm_resp);
-               data_blob_free(&(*user_info)->nt_resp);
-               SAFE_FREE((*user_info)->interactive_password);
-               data_blob_clear_free(&(*user_info)->plaintext_password);
-               ZERO_STRUCT(**user_info);
-       }
-       SAFE_FREE(*user_info);
-}
-
-/***************************************************************************
- Clear out a server_info struct that has been allocated
-***************************************************************************/
-
-void free_server_info(auth_serversupplied_info **server_info)
-{
-       DEBUG(5,("attempting to free (and zero) a server_info structure\n"));
-       if (*server_info != NULL) {
-               pdb_free_sam(&(*server_info)->sam_account);
-
-               /* call pam_end here, unless we know we are keeping it */
-               delete_nt_token( &(*server_info)->ptok );
-               SAFE_FREE((*server_info)->groups);
-               ZERO_STRUCT(**server_info);
        }
-       SAFE_FREE(*server_info);
+       return NT_STATUS_OK;
 }
 
 /***************************************************************************
index 10788721fdebec9893161765909ffbde349748d5..5bdccd39f3e88543689091e12ba3a5c2bea42881 100644 (file)
@@ -4,7 +4,7 @@
    Winbind authentication mechnism
 
    Copyright (C) Tim Potter 2000
-   Copyright (C) Andrew Bartlett 2001 - 2002
+   Copyright (C) Andrew Bartlett 2001
    
    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
index de6085d52614203a1b79037a52268faafda93817..c152d8918ab77f798974f9340882efa360aaedfc 100644 (file)
@@ -10,7 +10,6 @@ msgtest
 net
 nmbd
 nmblookup
-nsstest
 pdbedit
 rpcclient
 samsync
@@ -19,7 +18,6 @@ smbcacls
 smbclient
 smbcontrol
 smbd
-smbfilter
 smbgroupedit
 smbmnt
 smbmount
@@ -38,5 +36,3 @@ testprns
 wbinfo
 winbindd
 wrepld
-vfstest
-samtest
index eb6b57276089a6407f374bc08b734d15b908c6ba..a421f36d8092e9c309f422f095984a3e19f04ac0 100644 (file)
@@ -2,7 +2,7 @@
    Unix SMB/CIFS implementation.
    SMB client
    Copyright (C) Andrew Tridgell 1994-1998
-   Copyright (C) Simo Sorce 2001-2002
+   Copyright (C) Simo Sorce 2001
    
    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
@@ -307,7 +307,7 @@ static BOOL do_this_one(file_info *finfo)
 
        if (*fileselection && 
            !mask_match(finfo->name,fileselection,False)) {
-               DEBUG(3,("mask_match %s failed\n", finfo->name));
+               DEBUG(3,("match_match %s failed\n", finfo->name));
                return False;
        }
 
@@ -649,16 +649,15 @@ static int cmd_du(void)
 /****************************************************************************
   get a file from rname to lname
   ****************************************************************************/
-static int do_get(char *rname, char *lname, BOOL reget)
+static int do_get(char *rname,char *lname)
 {  
-       int handle = 0, fnum;
+       int handle=0,fnum;
        BOOL newhandle = False;
        char *data;
        struct timeval tp_start;
        int read_size = io_bufsize;
        uint16 attr;
        size_t size;
-       off_t start = 0;
        off_t nread = 0;
        int rc = 0;
 
@@ -678,18 +677,7 @@ static int do_get(char *rname, char *lname, BOOL reget)
        if(!strcmp(lname,"-")) {
                handle = fileno(stdout);
        } else {
-               if (reget) {
-                       handle = sys_open(lname, O_WRONLY|O_CREAT, 0644);
-                       if (handle >= 0) {
-                               start = sys_lseek(handle, 0, SEEK_END);
-                               if (start == -1) {
-                                       d_printf("Error seeking local file\n");
-                                       return 1;
-                               }
-                       }
-               } else {
-                       handle = sys_open(lname, O_WRONLY|O_CREAT|O_TRUNC, 0644);
-               }
+               handle = sys_open(lname,O_WRONLY|O_CREAT|O_TRUNC,0644);
                newhandle = True;
        }
        if (handle < 0) {
@@ -707,7 +695,7 @@ static int do_get(char *rname, char *lname, BOOL reget)
        }
 
        DEBUG(2,("getting file %s of size %.0f as %s ", 
-                rname, (double)size, lname));
+                lname, (double)size, lname));
 
        if(!(data = (char *)malloc(read_size))) { 
                d_printf("malloc fail for size %d\n", read_size);
@@ -716,7 +704,7 @@ static int do_get(char *rname, char *lname, BOOL reget)
        }
 
        while (1) {
-               int n = cli_read(cli, fnum, data, nread + start, read_size);
+               int n = cli_read(cli, fnum, data, nread, read_size);
 
                if (n <= 0) break;
  
@@ -729,7 +717,7 @@ static int do_get(char *rname, char *lname, BOOL reget)
                nread += n;
        }
 
-       if (nread + start < size) {
+       if (nread < size) {
                DEBUG (0, ("Short read when getting file %s. Only got %ld bytes.\n",
                            rname, (long)nread));
 
@@ -794,7 +782,7 @@ static int cmd_get(void)
        
        next_token_nr(NULL,lname,NULL,sizeof(lname));
        
-       return do_get(rname, lname, False);
+       return do_get(rname, lname);
 }
 
 
@@ -828,7 +816,7 @@ static void do_mget(file_info *finfo)
        if (!(finfo->mode & aDIR)) {
                pstrcpy(rname,cur_dir);
                pstrcat(rname,finfo->name);
-               do_get(rname, finfo->name, False);
+               do_get(rname,finfo->name);
                return;
        }
 
@@ -892,7 +880,7 @@ static int cmd_more(void)
        }
        dos_clean_name(rname);
 
-       rc = do_get(rname, lname, False);
+       rc = do_get(rname,lname);
 
        pager=getenv("PAGER");
 
@@ -1058,31 +1046,19 @@ static int cmd_altname(void)
 /****************************************************************************
   put a single file
   ****************************************************************************/
-static int do_put(char *rname, char *lname, BOOL reput)
+static int do_put(char *rname,char *lname)
 {
        int fnum;
        XFILE *f;
-       int start = 0;
-       int nread = 0;
-       char *buf = NULL;
-       int maxwrite = io_bufsize;
+       int nread=0;
+       char *buf=NULL;
+       int maxwrite=io_bufsize;
        int rc = 0;
        
        struct timeval tp_start;
        GetTimeOfDay(&tp_start);
 
-       if (reput) {
-               fnum = cli_open(cli, rname, O_RDWR|O_CREAT, DENY_NONE);
-               if (fnum >= 0) {
-                       if (!cli_qfileinfo(cli, fnum, NULL, &start, NULL, NULL, NULL, NULL, NULL) &&
-                           !cli_getattrE(cli, fnum, NULL, &start, NULL, NULL, NULL)) {
-                               d_printf("getattrib: %s\n",cli_errstr(cli));
-                               return 1;
-                       }
-               }
-       } else {
-               fnum = cli_open(cli, rname, O_RDWR|O_CREAT|O_TRUNC, DENY_NONE);
-       }
+       fnum = cli_open(cli, rname, O_RDWR|O_CREAT|O_TRUNC, DENY_NONE);
   
        if (fnum == -1) {
                d_printf("%s opening remote file %s\n",cli_errstr(cli),rname);
@@ -1099,12 +1075,6 @@ static int do_put(char *rname, char *lname, BOOL reput)
                /* size of file is not known */
        } else {
                f = x_fopen(lname,O_RDONLY, 0);
-               if (f && reput) {
-                       if (x_tseek(f, start, SEEK_SET) == -1) {
-                               d_printf("Error seeking local file\n");
-                               return 1;
-                       }
-               }
        }
 
        if (!f) {
@@ -1134,7 +1104,7 @@ static int do_put(char *rname, char *lname, BOOL reput)
                        break;
                }
 
-               ret = cli_write(cli, fnum, 0, buf, nread + start, n);
+               ret = cli_write(cli, fnum, 0, buf, nread, n);
 
                if (n != ret) {
                        d_printf("Error writing file: %s\n", cli_errstr(cli));
@@ -1222,7 +1192,7 @@ static int cmd_put(void)
                }
        }
 
-       return do_put(rname, lname, False);
+       return do_put(rname,lname);
 }
 
 /*************************************
@@ -1414,7 +1384,7 @@ static int cmd_mput(void)
 
                        dos_format(rname);
 
-                       do_put(rname, lname, False);
+                       do_put(rname, lname);
                }
                free_file_list(file_list);
                SAFE_FREE(quest);
@@ -1486,7 +1456,7 @@ static int cmd_print(void)
                slprintf(rname, sizeof(rname)-1, "stdin-%d", (int)sys_getpid());
        }
 
-       return do_put(rname, lname, False);
+       return do_put(rname, lname);
 }
 
 
@@ -1896,8 +1866,8 @@ static int cmd_printmode(void)
 }
 
 /****************************************************************************
- do the lcd command
- ****************************************************************************/
+do the lcd command
+****************************************************************************/
 static int cmd_lcd(void)
 {
        fstring buf;
@@ -1911,70 +1881,8 @@ static int cmd_lcd(void)
 }
 
 /****************************************************************************
- get a file restarting at end of local file
- ****************************************************************************/
-static int cmd_reget(void)
-{
-       pstring local_name;
-       pstring remote_name;
-       char *p;
-
-       pstrcpy(remote_name, cur_dir);
-       pstrcat(remote_name, "\\");
-       
-       p = remote_name + strlen(remote_name);
-       
-       if (!next_token_nr(NULL, p, NULL, sizeof(remote_name) - strlen(remote_name))) {
-               d_printf("reget <filename>\n");
-               return 1;
-       }
-       pstrcpy(local_name, p);
-       dos_clean_name(remote_name);
-       
-       next_token_nr(NULL, local_name, NULL, sizeof(local_name));
-       
-       return do_get(remote_name, local_name, True);
-}
-
-/****************************************************************************
- put a file restarting at end of local file
- ****************************************************************************/
-static int cmd_reput(void)
-{
-       pstring local_name;
-       pstring remote_name;
-       fstring buf;
-       char *p = buf;
-       SMB_STRUCT_STAT st;
-       
-       pstrcpy(remote_name, cur_dir);
-       pstrcat(remote_name, "\\");
-  
-       if (!next_token_nr(NULL, p, NULL, sizeof(buf))) {
-               d_printf("reput <filename>\n");
-               return 1;
-       }
-       pstrcpy(local_name, p);
-  
-       if (!file_exist(local_name, &st)) {
-               d_printf("%s does not exist\n", local_name);
-               return 1;
-       }
-
-       if (next_token_nr(NULL, p, NULL, sizeof(buf)))
-               pstrcat(remote_name, p);
-       else
-               pstrcat(remote_name, local_name);
-       
-       dos_clean_name(remote_name);
-
-       return do_put(remote_name, local_name, True);
-}
-
-
-/****************************************************************************
- list a share name
- ****************************************************************************/
+list a share name
+****************************************************************************/
 static void browse_fn(const char *name, uint32 m, 
                       const char *comment, void *state)
 {
@@ -2101,9 +2009,7 @@ static struct
   {"quit",cmd_quit,"logoff the server",{COMPL_NONE,COMPL_NONE}},
   {"rd",cmd_rmdir,"<directory> remove a directory",{COMPL_NONE,COMPL_NONE}},
   {"recurse",cmd_recurse,"toggle directory recursion for mget and mput",{COMPL_NONE,COMPL_NONE}},  
-  {"reget",cmd_reget,"<remote name> [local name] get a file restarting at end of local file",{COMPL_REMOTE,COMPL_LOCAL}},
   {"rename",cmd_rename,"<src> <dest> rename some files",{COMPL_REMOTE,COMPL_REMOTE}},
-  {"reput",cmd_reput,"<local name> [remote name] put a file restarting at end of remote file",{COMPL_LOCAL,COMPL_REMOTE}},
   {"rm",cmd_del,"<mask> delete all matching files",{COMPL_REMOTE,COMPL_NONE}},
   {"rmdir",cmd_rmdir,"<directory> remove a directory",{COMPL_NONE,COMPL_NONE}},
   {"setmode",cmd_setmode,"filename <setmode string> change modes of file",{COMPL_REMOTE,COMPL_NONE}},
@@ -2618,21 +2524,16 @@ static int do_message_op(void)
 {
        struct in_addr ip;
        struct nmb_name called, calling;
-       fstring server_name;
-       char name_type_hex[10];
+
+        zero_ip(&ip);
 
        make_nmb_name(&calling, global_myname, 0x0);
        make_nmb_name(&called , desthost, name_type);
 
-       safe_strcpy(server_name, desthost, sizeof(server_name));
-       snprintf(name_type_hex, sizeof(name_type_hex), "#%X", name_type);
-       safe_strcat(server_name, name_type_hex, sizeof(server_name));
-
         zero_ip(&ip);
        if (have_ip) ip = dest_ip;
 
-       if (!(cli=cli_initialise(NULL)) || (cli_set_port(cli, port) != port) ||
-           !cli_connect(cli, server_name, &ip)) {
+       if (!(cli=cli_initialise(NULL)) || (cli_set_port(cli, port) != port) || !cli_connect(cli, desthost, &ip)) {
                d_printf("Connection to %s failed\n", desthost);
                return 1;
        }
@@ -2758,6 +2659,7 @@ static void remember_query_host(const char *arg,
                        got_pass = True;
                        memset(strchr_m(getenv("USER"),'%')+1,'X',strlen(password));
                }
+               strupper(username);
        }
 
        /* modification to support PASSWD environmental var
@@ -2774,6 +2676,7 @@ static void remember_query_host(const char *arg,
 
        if (*username == 0 && getenv("LOGNAME")) {
                pstrcpy(username,getenv("LOGNAME"));
+               strupper(username);
        }
 
        if (*username == 0) {
index ce406179cfdd9d71f2e56f0a49f4e9616a52d17c..ba2b1e9435d722d0fd8ae3e361f6985b2e0adba5 100644 (file)
@@ -148,8 +148,8 @@ do_mount(char *share_name, unsigned int flags, struct smb_mount_data *data)
 
        uname(&uts);
        release = uts.release;
-       major = strtok(release, ".");
-       minor = strtok(NULL, ".");
+       major = strsep(&release, ".");
+       minor = strsep(&release, ".");
        if (major && minor && atoi(major) == 2 && atoi(minor) < 4) {
                /* < 2.4, assume struct */
                data1 = (char *) data;
index 538f44621c85a3fbbf283113136808825a33dd2e..06694c8e64a87c6c042a806bde5c704b2e26af9d 100755 (executable)
@@ -46,12 +46,8 @@ ac_help="$ac_help
   --with-afs              Include AFS clear-text auth support (default=no) "
 ac_help="$ac_help
   --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)"
-ac_help="$ac_help
-   --with-ads  Active Directory support (default yes)"
 ac_help="$ac_help
   --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)"
-ac_help="$ac_help
-   --with-ldap  LDAP support (default yes)"
 ac_help="$ac_help
   --with-automount        Include AUTOMOUNT support (default=no)"
 ac_help="$ac_help
@@ -60,8 +56,6 @@ ac_help="$ac_help
   --with-pam              Include PAM support (default=no)"
 ac_help="$ac_help
   --with-pam_smbpass      Build a PAM module to allow other applications to use our smbpasswd file (default=no)"
-ac_help="$ac_help
-  --with-sam              Build new (experimental) SAM database (default=no)"
 ac_help="$ac_help
   --with-tdbsam           Include experimental TDB SAM support (default=no)"
 ac_help="$ac_help
@@ -84,14 +78,10 @@ ac_help="$ac_help
   --with-spinlocks        Use spin locks instead of fcntl locks (default=no) "
 ac_help="$ac_help
   --with-acl-support      Include ACL support (default=no)"
-ac_help="$ac_help
-  --with-sendfile-support      Include sendfile support (default=no)"
 ac_help="$ac_help
   --with-winbind          Build winbind (default, if supported by OS)"
 ac_help="$ac_help
   --with-included-popt    use bundled popt library, not from system"
-ac_help="$ac_help
-  --with-python=PYTHONNAME  build Python libraries"
 
 # Initialize some variables set by options.
 # The variables have the same names as the options, with
@@ -768,7 +758,6 @@ fi
 
 
 
-
 
 
 # compile with optimization and without debugging by default
@@ -824,7 +813,7 @@ fi
 # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:828: checking for $ac_word" >&5
+echo "configure:817: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -854,7 +843,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:858: checking for $ac_word" >&5
+echo "configure:847: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -905,7 +894,7 @@ fi
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:909: checking for $ac_word" >&5
+echo "configure:898: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -937,7 +926,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:941: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:930: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -948,12 +937,12 @@ cross_compiling=$ac_cv_prog_cc_cross
 
 cat > conftest.$ac_ext << EOF
 
-#line 952 "configure"
+#line 941 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:957: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:946: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -979,12 +968,12 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:983: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:972: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:988: checking whether we are using GNU C" >&5
+echo "configure:977: checking whether we are using GNU C" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -993,7 +982,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:997: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:986: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -1012,7 +1001,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1016: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1005: checking whether ${CC-cc} accepts -g" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1074,7 +1063,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1078: checking for a BSD compatible install" >&5
+echo "configure:1067: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1131,7 +1120,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1135: checking for $ac_word" >&5
+echo "configure:1124: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1163,7 +1152,7 @@ done
 
 LD=ld
 echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6
-echo "configure:1167: checking if the linker ($LD) is GNU ld" >&5
+echo "configure:1156: checking if the linker ($LD) is GNU ld" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1179,7 +1168,7 @@ echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6
 
 
 echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:1183: checking for POSIXized ISC" >&5
+echo "configure:1172: checking for POSIXized ISC" >&5
 if test -d /etc/conf/kconfig.d &&
   grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
 then
@@ -1202,10 +1191,10 @@ fi
 
 if test "x$CC" != xcc; then
   echo $ac_n "checking whether $CC and cc understand -c and -o together""... $ac_c" 1>&6
-echo "configure:1206: checking whether $CC and cc understand -c and -o together" >&5
+echo "configure:1195: checking whether $CC and cc understand -c and -o together" >&5
 else
   echo $ac_n "checking whether cc understands -c and -o together""... $ac_c" 1>&6
-echo "configure:1209: checking whether cc understands -c and -o together" >&5
+echo "configure:1198: checking whether cc understands -c and -o together" >&5
 fi
 set dummy $CC; ac_cc="`echo $2 |
                       sed -e 's/[^a-zA-Z0-9_]/_/g' -e 's/^[0-9]/_/'`"
@@ -1217,16 +1206,16 @@ else
 # We do the test twice because some compilers refuse to overwrite an
 # existing .o file with -o, though they will create one.
 ac_try='${CC-cc} -c conftest.c -o conftest.o 1>&5'
-if { (eval echo configure:1221: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
-   test -f conftest.o && { (eval echo configure:1222: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
+if { (eval echo configure:1210: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
+   test -f conftest.o && { (eval echo configure:1211: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
 then
   eval ac_cv_prog_cc_${ac_cc}_c_o=yes
   if test "x$CC" != xcc; then
     # Test first that cc exists at all.
-    if { ac_try='cc -c conftest.c 1>&5'; { (eval echo configure:1227: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+    if { ac_try='cc -c conftest.c 1>&5'; { (eval echo configure:1216: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
       ac_try='cc -c conftest.c -o conftest.o 1>&5'
-      if { (eval echo configure:1229: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
-        test -f conftest.o && { (eval echo configure:1230: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
+      if { (eval echo configure:1218: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
+        test -f conftest.o && { (eval echo configure:1219: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
       then
         # cc works too.
         :
@@ -1260,20 +1249,20 @@ fi
 
 
 echo $ac_n "checking that the C compiler understands volatile""... $ac_c" 1>&6
-echo "configure:1264: checking that the C compiler understands volatile" >&5
+echo "configure:1253: checking that the C compiler understands volatile" >&5
 if eval "test \"`echo '$''{'samba_cv_volatile'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cat > conftest.$ac_ext <<EOF
-#line 1270 "configure"
+#line 1259 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int main() {
 volatile int i = 0
 ; return 0; }
 EOF
-if { (eval echo configure:1277: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1266: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_volatile=yes
 else
@@ -1322,7 +1311,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
 fi
 
 echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:1326: checking host system type" >&5
+echo "configure:1315: checking host system type" >&5
 
 host_alias=$host
 case "$host_alias" in
@@ -1343,7 +1332,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
 echo "$ac_t""$host" 1>&6
 
 echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:1347: checking target system type" >&5
+echo "configure:1336: checking target system type" >&5
 
 target_alias=$target
 case "$target_alias" in
@@ -1361,7 +1350,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
 echo "$ac_t""$target" 1>&6
 
 echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1365: checking build system type" >&5
+echo "configure:1354: checking build system type" >&5
 
 build_alias=$build
 case "$build_alias" in
@@ -1395,7 +1384,7 @@ esac
 
     
     echo $ac_n "checking config.cache system type""... $ac_c" 1>&6
-echo "configure:1399: checking config.cache system type" >&5
+echo "configure:1388: checking config.cache system type" >&5
     if { test x"${ac_cv_host_system_type+set}" = x"set" &&
          test x"$ac_cv_host_system_type" != x"$host"; } ||
        { test x"${ac_cv_build_system_type+set}" = x"set" &&
@@ -1423,7 +1412,7 @@ case "$host_os" in
     *hpux*)
     
       echo $ac_n "checking whether ${CC-cc} accepts -Ae""... $ac_c" 1>&6
-echo "configure:1427: checking whether ${CC-cc} accepts -Ae" >&5
+echo "configure:1416: checking whether ${CC-cc} accepts -Ae" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_cc_Ae'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1584,14 +1573,14 @@ EOF
     *sysv4*)
       if test $host = mips-sni-sysv4 ; then
         echo $ac_n "checking for LFS support""... $ac_c" 1>&6
-echo "configure:1588: checking for LFS support" >&5
+echo "configure:1577: checking for LFS support" >&5
         old_CPPFLAGS="$CPPFLAGS"
         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
         if test "$cross_compiling" = yes; then
   SINIX_LFS_SUPPORT=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 1595 "configure"
+#line 1584 "configure"
 #include "confdefs.h"
 
 #include <unistd.h>
@@ -1603,7 +1592,7 @@ exit(1);
 #endif
 }
 EOF
-if { (eval echo configure:1607: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1596: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   SINIX_LFS_SUPPORT=yes
 else
@@ -1634,14 +1623,14 @@ EOF
 #
     *linux*)
         echo $ac_n "checking for LFS support""... $ac_c" 1>&6
-echo "configure:1638: checking for LFS support" >&5
+echo "configure:1627: checking for LFS support" >&5
         old_CPPFLAGS="$CPPFLAGS"
         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
        if test "$cross_compiling" = yes; then
   LINUX_LFS_SUPPORT=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 1645 "configure"
+#line 1634 "configure"
 #include "confdefs.h"
 
 #include <unistd.h>
@@ -1679,7 +1668,7 @@ main() {
 }
 
 EOF
-if { (eval echo configure:1683: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1672: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   LINUX_LFS_SUPPORT=yes
 else
@@ -1712,14 +1701,14 @@ EOF
 
     *hurd*)
         echo $ac_n "checking for LFS support""... $ac_c" 1>&6
-echo "configure:1716: checking for LFS support" >&5
+echo "configure:1705: checking for LFS support" >&5
         old_CPPFLAGS="$CPPFLAGS"
         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
         if test "$cross_compiling" = yes; then
   GLIBC_LFS_SUPPORT=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 1723 "configure"
+#line 1712 "configure"
 #include "confdefs.h"
 
 #include <unistd.h>
@@ -1731,7 +1720,7 @@ exit(1);
 #endif
 }
 EOF
-if { (eval echo configure:1735: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1724: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   GLIBC_LFS_SUPPORT=yes
 else
@@ -1761,21 +1750,21 @@ EOF
 esac
 
 echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:1765: checking for inline" >&5
+echo "configure:1754: checking for inline" >&5
 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat > conftest.$ac_ext <<EOF
-#line 1772 "configure"
+#line 1761 "configure"
 #include "confdefs.h"
 
 int main() {
 } $ac_kw foo() {
 ; return 0; }
 EOF
-if { (eval echo configure:1779: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1768: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_inline=$ac_kw; break
 else
@@ -1801,7 +1790,7 @@ EOF
 esac
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1805: checking how to run the C preprocessor" >&5
+echo "configure:1794: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -1816,13 +1805,13 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 1820 "configure"
+#line 1809 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1826: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1815: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1833,13 +1822,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 1837 "configure"
+#line 1826 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1843: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1832: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1850,13 +1839,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 1854 "configure"
+#line 1843 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1860: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1849: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1881,12 +1870,12 @@ fi
 echo "$ac_t""$CPP" 1>&6
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1885: checking for ANSI C header files" >&5
+echo "configure:1874: checking for ANSI C header files" >&5
 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1890 "configure"
+#line 1879 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -1894,7 +1883,7 @@ else
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1898: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1887: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1911,7 +1900,7 @@ rm -f conftest*
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 1915 "configure"
+#line 1904 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -1929,7 +1918,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 1933 "configure"
+#line 1922 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -1950,7 +1939,7 @@ if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 1954 "configure"
+#line 1943 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -1961,7 +1950,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:1965: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1954: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -1989,12 +1978,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
-echo "configure:1993: checking for $ac_hdr that defines DIR" >&5
+echo "configure:1982: checking for $ac_hdr that defines DIR" >&5
 if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1998 "configure"
+#line 1987 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_hdr>
@@ -2002,7 +1991,7 @@ int main() {
 DIR *dirp = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:2006: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1995: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_header_dirent_$ac_safe=yes"
 else
@@ -2027,7 +2016,7 @@ done
 # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
 if test $ac_header_dirent = dirent.h; then
 echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
-echo "configure:2031: checking for opendir in -ldir" >&5
+echo "configure:2020: checking for opendir in -ldir" >&5
 ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2035,7 +2024,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldir  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2039 "configure"
+#line 2028 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2046,7 +2035,7 @@ int main() {
 opendir()
 ; return 0; }
 EOF
-if { (eval echo configure:2050: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2039: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2068,7 +2057,7 @@ fi
 
 else
 echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:2072: checking for opendir in -lx" >&5
+echo "configure:2061: checking for opendir in -lx" >&5
 ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2076,7 +2065,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lx  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2080 "configure"
+#line 2069 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2087,7 +2076,7 @@ int main() {
 opendir()
 ; return 0; }
 EOF
-if { (eval echo configure:2091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2080: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2110,12 +2099,12 @@ fi
 fi
 
 echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:2114: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:2103: checking whether time.h and sys/time.h may both be included" >&5
 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2119 "configure"
+#line 2108 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -2124,7 +2113,7 @@ int main() {
 struct tm *tp;
 ; return 0; }
 EOF
-if { (eval echo configure:2128: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2117: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_time=yes
 else
@@ -2145,12 +2134,12 @@ EOF
 fi
 
 echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:2149: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:2138: checking for sys/wait.h that is POSIX.1 compatible" >&5
 if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2154 "configure"
+#line 2143 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -2166,7 +2155,7 @@ wait (&s);
 s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
 ; return 0; }
 EOF
-if { (eval echo configure:2170: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2159: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_sys_wait_h=yes
 else
@@ -2190,17 +2179,17 @@ for ac_hdr in arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2194: checking for $ac_hdr" >&5
+echo "configure:2183: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2199 "configure"
+#line 2188 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2204: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2193: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2230,17 +2219,17 @@ for ac_hdr in unistd.h utime.h grp.h sys/id.h limits.h memory.h net/if.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2234: checking for $ac_hdr" >&5
+echo "configure:2223: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2239 "configure"
+#line 2228 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2244: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2233: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2270,17 +2259,17 @@ for ac_hdr in compat.h rpc/rpc.h rpcsvc/nis.h rpcsvc/yp_prot.h rpcsvc/ypclnt.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2274: checking for $ac_hdr" >&5
+echo "configure:2263: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2279 "configure"
+#line 2268 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2284: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2273: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2310,17 +2299,17 @@ for ac_hdr in sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2314: checking for $ac_hdr" >&5
+echo "configure:2303: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2319 "configure"
+#line 2308 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2324: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2313: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2350,17 +2339,17 @@ for ac_hdr in sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h std
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2354: checking for $ac_hdr" >&5
+echo "configure:2343: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2359 "configure"
+#line 2348 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2364: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2353: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2390,17 +2379,17 @@ for ac_hdr in sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h term
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2394: checking for $ac_hdr" >&5
+echo "configure:2383: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2399 "configure"
+#line 2388 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2404: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2393: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2430,17 +2419,17 @@ for ac_hdr in sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2434: checking for $ac_hdr" >&5
+echo "configure:2423: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2439 "configure"
+#line 2428 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2444: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2433: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2470,57 +2459,17 @@ for ac_hdr in security/pam_modules.h security/_pam_macros.h ldap.h lber.h dlfcn.
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2474: checking for $ac_hdr" >&5
+echo "configure:2463: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2479 "configure"
+#line 2468 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2484: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-for ac_hdr in sys/syslog.h syslog.h
-do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2514: checking for $ac_hdr" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2519 "configure"
-#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2524: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2473: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2554,14 +2503,14 @@ done
 case "$host_os" in
     *hpux*)
                cat > conftest.$ac_ext <<EOF
-#line 2558 "configure"
+#line 2507 "configure"
 #include "confdefs.h"
 #include <shadow.h>
 int main() {
 struct spwd testme
 ; return 0; }
 EOF
-if { (eval echo configure:2565: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2514: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_shadow_h=yes
 else
@@ -2583,17 +2532,17 @@ for ac_hdr in shadow.h netinet/ip.h netinet/tcp.h netinet/in_systm.h netinet/in_
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2587: checking for $ac_hdr" >&5
+echo "configure:2536: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2592 "configure"
+#line 2541 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2597: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2546: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2623,17 +2572,17 @@ for ac_hdr in nss.h nss_common.h ns_api.h sys/security.h security/pam_appl.h sec
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2627: checking for $ac_hdr" >&5
+echo "configure:2576: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2632 "configure"
+#line 2581 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2637: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2586: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2663,17 +2612,17 @@ for ac_hdr in stropts.h poll.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2667: checking for $ac_hdr" >&5
+echo "configure:2616: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2672 "configure"
+#line 2621 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2677: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2626: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2703,17 +2652,17 @@ for ac_hdr in sys/capability.h syscall.h sys/syscall.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2707: checking for $ac_hdr" >&5
+echo "configure:2656: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2712 "configure"
+#line 2661 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2717: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2666: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2743,17 +2692,17 @@ for ac_hdr in sys/acl.h sys/cdefs.h glob.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2747: checking for $ac_hdr" >&5
+echo "configure:2696: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2752 "configure"
+#line 2701 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2757: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2706: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2785,17 +2734,17 @@ for ac_hdr in utmp.h utmpx.h lastlog.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2789: checking for $ac_hdr" >&5
+echo "configure:2738: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2794 "configure"
+#line 2743 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2799: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2748: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2827,17 +2776,17 @@ for ac_hdr in sys/fs/vx_quota.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2831: checking for $ac_hdr" >&5
+echo "configure:2780: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2836 "configure"
+#line 2785 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2841: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2790: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2869,17 +2818,17 @@ for ac_hdr in linux/xqm.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2873: checking for $ac_hdr" >&5
+echo "configure:2822: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2878 "configure"
+#line 2827 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2883: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2832: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2907,7 +2856,7 @@ done
 
 
 echo $ac_n "checking size of int""... $ac_c" 1>&6
-echo "configure:2911: checking size of int" >&5
+echo "configure:2860: checking size of int" >&5
 if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2915,7 +2864,7 @@ else
   ac_cv_sizeof_int=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 2919 "configure"
+#line 2868 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int main()
@@ -2926,7 +2875,7 @@ int main()
   return(0);
 }
 EOF
-if { (eval echo configure:2930: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2879: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_sizeof_int=`cat conftestval`
 else
@@ -2946,7 +2895,7 @@ EOF
 
 
 echo $ac_n "checking size of long""... $ac_c" 1>&6
-echo "configure:2950: checking size of long" >&5
+echo "configure:2899: checking size of long" >&5
 if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2954,7 +2903,7 @@ else
   ac_cv_sizeof_long=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 2958 "configure"
+#line 2907 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int main()
@@ -2965,7 +2914,7 @@ int main()
   return(0);
 }
 EOF
-if { (eval echo configure:2969: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2918: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_sizeof_long=`cat conftestval`
 else
@@ -2985,7 +2934,7 @@ EOF
 
 
 echo $ac_n "checking size of short""... $ac_c" 1>&6
-echo "configure:2989: checking size of short" >&5
+echo "configure:2938: checking size of short" >&5
 if eval "test \"`echo '$''{'ac_cv_sizeof_short'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2993,7 +2942,7 @@ else
   ac_cv_sizeof_short=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 2997 "configure"
+#line 2946 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int main()
@@ -3004,7 +2953,7 @@ int main()
   return(0);
 }
 EOF
-if { (eval echo configure:3008: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2957: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_sizeof_short=`cat conftestval`
 else
@@ -3025,12 +2974,12 @@ EOF
 
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:3029: checking for working const" >&5
+echo "configure:2978: checking for working const" >&5
 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3034 "configure"
+#line 2983 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -3079,7 +3028,7 @@ ccp = (char const *const *) p;
 
 ; return 0; }
 EOF
-if { (eval echo configure:3083: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3032: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -3100,21 +3049,21 @@ EOF
 fi
 
 echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:3104: checking for inline" >&5
+echo "configure:3053: checking for inline" >&5
 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat > conftest.$ac_ext <<EOF
-#line 3111 "configure"
+#line 3060 "configure"
 #include "confdefs.h"
 
 int main() {
 } $ac_kw foo() {
 ; return 0; }
 EOF
-if { (eval echo configure:3118: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3067: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_inline=$ac_kw; break
 else
@@ -3140,14 +3089,14 @@ EOF
 esac
 
 echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:3144: checking whether byte ordering is bigendian" >&5
+echo "configure:3093: checking whether byte ordering is bigendian" >&5
 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_cv_c_bigendian=unknown
 # See if sys/param.h defines the BYTE_ORDER macro.
 cat > conftest.$ac_ext <<EOF
-#line 3151 "configure"
+#line 3100 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -3158,11 +3107,11 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:3162: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3111: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   # It does; now see whether it defined to BIG_ENDIAN or not.
 cat > conftest.$ac_ext <<EOF
-#line 3166 "configure"
+#line 3115 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -3173,7 +3122,7 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:3177: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3126: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_bigendian=yes
 else
@@ -3193,7 +3142,7 @@ if test "$cross_compiling" = yes; then
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 3197 "configure"
+#line 3146 "configure"
 #include "confdefs.h"
 main () {
   /* Are we little or big endian?  From Harbison&Steele.  */
@@ -3206,7 +3155,7 @@ main () {
   exit (u.c[sizeof (long) - 1] == 1);
 }
 EOF
-if { (eval echo configure:3210: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3159: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_c_bigendian=no
 else
@@ -3230,14 +3179,14 @@ EOF
 fi
 
 echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6
-echo "configure:3234: checking whether char is unsigned" >&5
+echo "configure:3183: checking whether char is unsigned" >&5
 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test "$GCC" = yes; then
   # GCC predefines this symbol on systems where it applies.
 cat > conftest.$ac_ext <<EOF
-#line 3241 "configure"
+#line 3190 "configure"
 #include "confdefs.h"
 #ifdef __CHAR_UNSIGNED__
   yes
@@ -3259,7 +3208,7 @@ if test "$cross_compiling" = yes; then
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 3263 "configure"
+#line 3212 "configure"
 #include "confdefs.h"
 /* volatile prevents gcc2 from optimizing the test away on sparcs.  */
 #if !defined(__STDC__) || __STDC__ != 1
@@ -3269,7 +3218,7 @@ main() {
   volatile char c = 255; exit(c < 0);
 }
 EOF
-if { (eval echo configure:3273: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3222: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_c_char_unsigned=yes
 else
@@ -3294,12 +3243,12 @@ fi
 
 
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3298: checking return type of signal handlers" >&5
+echo "configure:3247: checking return type of signal handlers" >&5
 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3303 "configure"
+#line 3252 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -3316,7 +3265,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:3320: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3269: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -3335,12 +3284,12 @@ EOF
 
 
 echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:3339: checking for uid_t in sys/types.h" >&5
+echo "configure:3288: checking for uid_t in sys/types.h" >&5
 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3344 "configure"
+#line 3293 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 EOF
@@ -3369,12 +3318,12 @@ EOF
 fi
 
 echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:3373: checking for mode_t" >&5
+echo "configure:3322: checking for mode_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3378 "configure"
+#line 3327 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3402,12 +3351,12 @@ EOF
 fi
 
 echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:3406: checking for off_t" >&5
+echo "configure:3355: checking for off_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3411 "configure"
+#line 3360 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3435,12 +3384,12 @@ EOF
 fi
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:3439: checking for size_t" >&5
+echo "configure:3388: checking for size_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3444 "configure"
+#line 3393 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3468,12 +3417,12 @@ EOF
 fi
 
 echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:3472: checking for pid_t" >&5
+echo "configure:3421: checking for pid_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3477 "configure"
+#line 3426 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3501,12 +3450,12 @@ EOF
 fi
 
 echo $ac_n "checking for st_rdev in struct stat""... $ac_c" 1>&6
-echo "configure:3505: checking for st_rdev in struct stat" >&5
+echo "configure:3454: checking for st_rdev in struct stat" >&5
 if eval "test \"`echo '$''{'ac_cv_struct_st_rdev'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3510 "configure"
+#line 3459 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -3514,7 +3463,7 @@ int main() {
 struct stat s; s.st_rdev;
 ; return 0; }
 EOF
-if { (eval echo configure:3518: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3467: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_st_rdev=yes
 else
@@ -3535,12 +3484,12 @@ EOF
 fi
 
 echo $ac_n "checking for d_off in dirent""... $ac_c" 1>&6
-echo "configure:3539: checking for d_off in dirent" >&5
+echo "configure:3488: checking for d_off in dirent" >&5
 if eval "test \"`echo '$''{'ac_cv_dirent_d_off'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3544 "configure"
+#line 3493 "configure"
 #include "confdefs.h"
 
 #include <unistd.h>
@@ -3550,7 +3499,7 @@ int main() {
 struct dirent d; d.d_off;
 ; return 0; }
 EOF
-if { (eval echo configure:3554: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3503: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_dirent_d_off=yes
 else
@@ -3571,12 +3520,12 @@ EOF
 fi
 
 echo $ac_n "checking for ino_t""... $ac_c" 1>&6
-echo "configure:3575: checking for ino_t" >&5
+echo "configure:3524: checking for ino_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_ino_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3580 "configure"
+#line 3529 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3604,12 +3553,12 @@ EOF
 fi
 
 echo $ac_n "checking for loff_t""... $ac_c" 1>&6
-echo "configure:3608: checking for loff_t" >&5
+echo "configure:3557: checking for loff_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_loff_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3613 "configure"
+#line 3562 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3637,12 +3586,12 @@ EOF
 fi
 
 echo $ac_n "checking for offset_t""... $ac_c" 1>&6
-echo "configure:3641: checking for offset_t" >&5
+echo "configure:3590: checking for offset_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_offset_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3646 "configure"
+#line 3595 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3670,12 +3619,12 @@ EOF
 fi
 
 echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
-echo "configure:3674: checking for ssize_t" >&5
+echo "configure:3623: checking for ssize_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_ssize_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3679 "configure"
+#line 3628 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3703,12 +3652,12 @@ EOF
 fi
 
 echo $ac_n "checking for wchar_t""... $ac_c" 1>&6
-echo "configure:3707: checking for wchar_t" >&5
+echo "configure:3656: checking for wchar_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_wchar_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3712 "configure"
+#line 3661 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3750,7 +3699,7 @@ if test x$enable_cups != xno; then
        # Extract the first word of "cups-config", so it can be a program name with args.
 set dummy cups-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3754: checking for $ac_word" >&5
+echo "configure:3703: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_CUPS_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3790,7 +3739,7 @@ EOF
 
                CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
                LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
-               PRINTLIBS="$PRINTLIBS `$CUPS_CONFIG --libs`"
+               LIBS="$LIBS `$CUPS_CONFIG --libs`"
         fi
 fi
 
@@ -3799,12 +3748,12 @@ fi
 for ac_func in dlopen
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3803: checking for $ac_func" >&5
+echo "configure:3752: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3808 "configure"
+#line 3757 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3827,7 +3776,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3831: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3780: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -3853,7 +3802,7 @@ done
 
 if test x"$ac_cv_func_dlopen" = x"no"; then
     echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:3857: checking for dlopen in -ldl" >&5
+echo "configure:3806: checking for dlopen in -ldl" >&5
 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3861,7 +3810,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3865 "configure"
+#line 3814 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3872,7 +3821,7 @@ int main() {
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:3876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3825: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3902,13 +3851,13 @@ fi
 ############################################
 # check if the compiler can do immediate structures
 echo $ac_n "checking for immediate structures""... $ac_c" 1>&6
-echo "configure:3906: checking for immediate structures" >&5
+echo "configure:3855: checking for immediate structures" >&5
 if eval "test \"`echo '$''{'samba_cv_immediate_structures'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cat > conftest.$ac_ext <<EOF
-#line 3912 "configure"
+#line 3861 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -3926,7 +3875,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3930: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3879: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_immediate_structures=yes
 else
@@ -3949,13 +3898,13 @@ fi
 ############################################
 # check for unix domain sockets
 echo $ac_n "checking for unix domain sockets""... $ac_c" 1>&6
-echo "configure:3953: checking for unix domain sockets" >&5
+echo "configure:3902: checking for unix domain sockets" >&5
 if eval "test \"`echo '$''{'samba_cv_unixsocket'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cat > conftest.$ac_ext <<EOF
-#line 3959 "configure"
+#line 3908 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -3970,7 +3919,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3974: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3923: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_unixsocket=yes
 else
@@ -3992,13 +3941,13 @@ fi
 
 
 echo $ac_n "checking for socklen_t type""... $ac_c" 1>&6
-echo "configure:3996: checking for socklen_t type" >&5
+echo "configure:3945: checking for socklen_t type" >&5
 if eval "test \"`echo '$''{'samba_cv_socklen_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cat > conftest.$ac_ext <<EOF
-#line 4002 "configure"
+#line 3951 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -4011,7 +3960,7 @@ int main() {
 socklen_t i = 0
 ; return 0; }
 EOF
-if { (eval echo configure:4015: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3964: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_socklen_t=yes
 else
@@ -4032,13 +3981,13 @@ EOF
 fi
 
 echo $ac_n "checking for sig_atomic_t type""... $ac_c" 1>&6
-echo "configure:4036: checking for sig_atomic_t type" >&5
+echo "configure:3985: checking for sig_atomic_t type" >&5
 if eval "test \"`echo '$''{'samba_cv_sig_atomic_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cat > conftest.$ac_ext <<EOF
-#line 4042 "configure"
+#line 3991 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -4051,7 +4000,7 @@ int main() {
 sig_atomic_t i = 0
 ; return 0; }
 EOF
-if { (eval echo configure:4055: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4004: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_sig_atomic_t=yes
 else
@@ -4074,20 +4023,20 @@ fi
 # stupid headers have the functions but no declaration. grrrr.
 
  echo $ac_n "checking for errno declaration""... $ac_c" 1>&6
-echo "configure:4078: checking for errno declaration" >&5
+echo "configure:4027: checking for errno declaration" >&5
 if eval "test \"`echo '$''{'ac_cv_have_errno_decl'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cat > conftest.$ac_ext <<EOF
-#line 4084 "configure"
+#line 4033 "configure"
 #include "confdefs.h"
 #include <errno.h>
 int main() {
 int i = (int)errno
 ; return 0; }
 EOF
-if { (eval echo configure:4091: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4040: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_have_errno_decl=yes
 else
@@ -4109,20 +4058,20 @@ EOF
 
 
  echo $ac_n "checking for setresuid declaration""... $ac_c" 1>&6
-echo "configure:4113: checking for setresuid declaration" >&5
+echo "configure:4062: checking for setresuid declaration" >&5
 if eval "test \"`echo '$''{'ac_cv_have_setresuid_decl'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cat > conftest.$ac_ext <<EOF
-#line 4119 "configure"
+#line 4068 "configure"
 #include "confdefs.h"
 #include <unistd.h>
 int main() {
 int i = (int)setresuid
 ; return 0; }
 EOF
-if { (eval echo configure:4126: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4075: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_have_setresuid_decl=yes
 else
@@ -4144,20 +4093,20 @@ EOF
 
 
  echo $ac_n "checking for setresgid declaration""... $ac_c" 1>&6
-echo "configure:4148: checking for setresgid declaration" >&5
+echo "configure:4097: checking for setresgid declaration" >&5
 if eval "test \"`echo '$''{'ac_cv_have_setresgid_decl'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cat > conftest.$ac_ext <<EOF
-#line 4154 "configure"
+#line 4103 "configure"
 #include "confdefs.h"
 #include <unistd.h>
 int main() {
 int i = (int)setresgid
 ; return 0; }
 EOF
-if { (eval echo configure:4161: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4110: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_have_setresgid_decl=yes
 else
@@ -4179,20 +4128,20 @@ EOF
 
 
  echo $ac_n "checking for asprintf declaration""... $ac_c" 1>&6
-echo "configure:4183: checking for asprintf declaration" >&5
+echo "configure:4132: checking for asprintf declaration" >&5
 if eval "test \"`echo '$''{'ac_cv_have_asprintf_decl'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cat > conftest.$ac_ext <<EOF
-#line 4189 "configure"
+#line 4138 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int main() {
 int i = (int)asprintf
 ; return 0; }
 EOF
-if { (eval echo configure:4196: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4145: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_have_asprintf_decl=yes
 else
@@ -4214,20 +4163,20 @@ EOF
 
 
  echo $ac_n "checking for vasprintf declaration""... $ac_c" 1>&6
-echo "configure:4218: checking for vasprintf declaration" >&5
+echo "configure:4167: checking for vasprintf declaration" >&5
 if eval "test \"`echo '$''{'ac_cv_have_vasprintf_decl'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cat > conftest.$ac_ext <<EOF
-#line 4224 "configure"
+#line 4173 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int main() {
 int i = (int)vasprintf
 ; return 0; }
 EOF
-if { (eval echo configure:4231: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4180: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_have_vasprintf_decl=yes
 else
@@ -4249,20 +4198,20 @@ EOF
 
 
  echo $ac_n "checking for vsnprintf declaration""... $ac_c" 1>&6
-echo "configure:4253: checking for vsnprintf declaration" >&5
+echo "configure:4202: checking for vsnprintf declaration" >&5
 if eval "test \"`echo '$''{'ac_cv_have_vsnprintf_decl'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cat > conftest.$ac_ext <<EOF
-#line 4259 "configure"
+#line 4208 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int main() {
 int i = (int)vsnprintf
 ; return 0; }
 EOF
-if { (eval echo configure:4266: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4215: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_have_vsnprintf_decl=yes
 else
@@ -4284,20 +4233,20 @@ EOF
 
 
  echo $ac_n "checking for snprintf declaration""... $ac_c" 1>&6
-echo "configure:4288: checking for snprintf declaration" >&5
+echo "configure:4237: checking for snprintf declaration" >&5
 if eval "test \"`echo '$''{'ac_cv_have_snprintf_decl'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cat > conftest.$ac_ext <<EOF
-#line 4294 "configure"
+#line 4243 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int main() {
 int i = (int)snprintf
 ; return 0; }
 EOF
-if { (eval echo configure:4301: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4250: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_have_snprintf_decl=yes
 else
@@ -4321,7 +4270,7 @@ EOF
 # and glibc has setresuid under linux but the function does
 # nothing until kernel 2.1.44! very dumb.
 echo $ac_n "checking for real setresuid""... $ac_c" 1>&6
-echo "configure:4325: checking for real setresuid" >&5
+echo "configure:4274: checking for real setresuid" >&5
 if eval "test \"`echo '$''{'samba_cv_have_setresuid'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4330,12 +4279,12 @@ else
   samba_cv_have_setresuid=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 4334 "configure"
+#line 4283 "configure"
 #include "confdefs.h"
 #include <errno.h>
 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}
 EOF
-if { (eval echo configure:4339: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_have_setresuid=yes
 else
@@ -4360,7 +4309,7 @@ fi
 # Do the same check for setresguid...
 #
 echo $ac_n "checking for real setresgid""... $ac_c" 1>&6
-echo "configure:4364: checking for real setresgid" >&5
+echo "configure:4313: checking for real setresgid" >&5
 if eval "test \"`echo '$''{'samba_cv_have_setresgid'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4369,13 +4318,13 @@ else
   samba_cv_have_setresgid=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 4373 "configure"
+#line 4322 "configure"
 #include "confdefs.h"
 #include <unistd.h>
 #include <errno.h>
 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}
 EOF
-if { (eval echo configure:4379: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4328: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_have_setresgid=yes
 else
@@ -4398,7 +4347,7 @@ EOF
 fi
 
 echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
-echo "configure:4402: checking for 8-bit clean memcmp" >&5
+echo "configure:4351: checking for 8-bit clean memcmp" >&5
 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4406,7 +4355,7 @@ else
   ac_cv_func_memcmp_clean=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 4410 "configure"
+#line 4359 "configure"
 #include "confdefs.h"
 
 main()
@@ -4416,7 +4365,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:4420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_memcmp_clean=yes
 else
@@ -4439,12 +4388,12 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}"
 for ac_func in crypt
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4443: checking for $ac_func" >&5
+echo "configure:4392: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4448 "configure"
+#line 4397 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -4467,7 +4416,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4471: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -4493,7 +4442,7 @@ done
 
 if test x"$ac_cv_func_crypt" = x"no"; then
     echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:4497: checking for crypt in -lcrypt" >&5
+echo "configure:4446: checking for crypt in -lcrypt" >&5
 ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4501,7 +4450,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lcrypt  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4505 "configure"
+#line 4454 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4512,7 +4461,7 @@ int main() {
 crypt()
 ; return 0; }
 EOF
-if { (eval echo configure:4516: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4465: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4545,7 +4494,7 @@ test "${with_readline+set}" != "set" && with_readline=yes
 
 # test for where we get readline() from
 echo $ac_n "checking whether to use readline""... $ac_c" 1>&6
-echo "configure:4549: checking whether to use readline" >&5
+echo "configure:4498: checking whether to use readline" >&5
 # Check whether --with-readline or --without-readline was given.
 if test "${with_readline+set}" = set; then
   withval="$with_readline"
@@ -4557,17 +4506,17 @@ if test "${with_readline+set}" = set; then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4561: checking for $ac_hdr" >&5
+echo "configure:4510: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4566 "configure"
+#line 4515 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4571: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4520: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4597,17 +4546,17 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4601: checking for $ac_hdr" >&5
+echo "configure:4550: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4606 "configure"
+#line 4555 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4611: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4560: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4638,17 +4587,17 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4642: checking for $ac_hdr" >&5
+echo "configure:4591: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4647 "configure"
+#line 4596 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4652: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4601: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4671,7 +4620,7 @@ EOF
  
       for termlib in ncurses curses termcap terminfo termlib; do
        echo $ac_n "checking for tgetent in -l${termlib}""... $ac_c" 1>&6
-echo "configure:4675: checking for tgetent in -l${termlib}" >&5
+echo "configure:4624: checking for tgetent in -l${termlib}" >&5
 ac_lib_var=`echo ${termlib}'_'tgetent | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4679,7 +4628,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-l${termlib}  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4683 "configure"
+#line 4632 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4690,7 +4639,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:4694: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4643: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4712,7 +4661,7 @@ fi
 
       done
       echo $ac_n "checking for rl_callback_handler_install in -lreadline""... $ac_c" 1>&6
-echo "configure:4716: checking for rl_callback_handler_install in -lreadline" >&5
+echo "configure:4665: checking for rl_callback_handler_install in -lreadline" >&5
 ac_lib_var=`echo readline'_'rl_callback_handler_install | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4720,7 +4669,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lreadline $TERMLIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4724 "configure"
+#line 4673 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4731,7 +4680,7 @@ int main() {
 rl_callback_handler_install()
 ; return 0; }
 EOF
-if { (eval echo configure:4735: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4684: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4782,17 +4731,17 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4786: checking for $ac_hdr" >&5
+echo "configure:4735: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4791 "configure"
+#line 4740 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4796: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4745: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4822,17 +4771,17 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4826: checking for $ac_hdr" >&5
+echo "configure:4775: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4831 "configure"
+#line 4780 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4836: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4785: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4863,17 +4812,17 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4867: checking for $ac_hdr" >&5
+echo "configure:4816: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4872 "configure"
+#line 4821 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4877: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4826: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4896,7 +4845,7 @@ EOF
  
       for termlib in ncurses curses termcap terminfo termlib; do
        echo $ac_n "checking for tgetent in -l${termlib}""... $ac_c" 1>&6
-echo "configure:4900: checking for tgetent in -l${termlib}" >&5
+echo "configure:4849: checking for tgetent in -l${termlib}" >&5
 ac_lib_var=`echo ${termlib}'_'tgetent | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4904,7 +4853,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-l${termlib}  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4908 "configure"
+#line 4857 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4915,7 +4864,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:4919: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4868: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4937,7 +4886,7 @@ fi
 
       done
       echo $ac_n "checking for rl_callback_handler_install in -lreadline""... $ac_c" 1>&6
-echo "configure:4941: checking for rl_callback_handler_install in -lreadline" >&5
+echo "configure:4890: checking for rl_callback_handler_install in -lreadline" >&5
 ac_lib_var=`echo readline'_'rl_callback_handler_install | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4945,7 +4894,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lreadline $TERMLIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4949 "configure"
+#line 4898 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4956,7 +4905,7 @@ int main() {
 rl_callback_handler_install()
 ; return 0; }
 EOF
-if { (eval echo configure:4960: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4909: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5006,7 +4955,7 @@ fi
 # code will generate warnings on one of them unless we have a few
 # special cases.
 echo $ac_n "checking for rl_completion_matches in -lreadline""... $ac_c" 1>&6
-echo "configure:5010: checking for rl_completion_matches in -lreadline" >&5
+echo "configure:4959: checking for rl_completion_matches in -lreadline" >&5
 ac_lib_var=`echo readline'_'rl_completion_matches | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5014,7 +4963,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lreadline $TERMLIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5018 "configure"
+#line 4967 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5025,7 +4974,7 @@ int main() {
 rl_completion_matches()
 ; return 0; }
 EOF
-if { (eval echo configure:5029: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5058,12 +5007,12 @@ fi
 for ac_func in connect
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5062: checking for $ac_func" >&5
+echo "configure:5011: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5067 "configure"
+#line 5016 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -5086,7 +5035,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5090: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5039: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -5114,7 +5063,7 @@ if test x"$ac_cv_func_connect" = x"no"; then
     case "$LIBS" in
     *-lnsl*) ;;
     *) echo $ac_n "checking for printf in -lnsl_s""... $ac_c" 1>&6
-echo "configure:5118: checking for printf in -lnsl_s" >&5
+echo "configure:5067: checking for printf in -lnsl_s" >&5
 ac_lib_var=`echo nsl_s'_'printf | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5122,7 +5071,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl_s  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5126 "configure"
+#line 5075 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5133,7 +5082,7 @@ int main() {
 printf()
 ; return 0; }
 EOF
-if { (eval echo configure:5137: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5086: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5164,7 +5113,7 @@ fi
     case "$LIBS" in
     *-lnsl*) ;;
     *) echo $ac_n "checking for printf in -lnsl""... $ac_c" 1>&6
-echo "configure:5168: checking for printf in -lnsl" >&5
+echo "configure:5117: checking for printf in -lnsl" >&5
 ac_lib_var=`echo nsl'_'printf | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5172,7 +5121,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5176 "configure"
+#line 5125 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5183,7 +5132,7 @@ int main() {
 printf()
 ; return 0; }
 EOF
-if { (eval echo configure:5187: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5136: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5214,7 +5163,7 @@ fi
     case "$LIBS" in
     *-lsocket*) ;;
     *) echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6
-echo "configure:5218: checking for connect in -lsocket" >&5
+echo "configure:5167: checking for connect in -lsocket" >&5
 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5222,7 +5171,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsocket  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5226 "configure"
+#line 5175 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5233,7 +5182,7 @@ int main() {
 connect()
 ; return 0; }
 EOF
-if { (eval echo configure:5237: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5264,7 +5213,7 @@ fi
     case "$LIBS" in
     *-linet*) ;;
     *) echo $ac_n "checking for connect in -linet""... $ac_c" 1>&6
-echo "configure:5268: checking for connect in -linet" >&5
+echo "configure:5217: checking for connect in -linet" >&5
 ac_lib_var=`echo inet'_'connect | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5272,7 +5221,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-linet  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5276 "configure"
+#line 5225 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5283,7 +5232,7 @@ int main() {
 connect()
 ; return 0; }
 EOF
-if { (eval echo configure:5287: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5327,12 +5276,12 @@ fi
 for ac_func in yp_get_default_domain
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5331: checking for $ac_func" >&5
+echo "configure:5280: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5336 "configure"
+#line 5285 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -5355,7 +5304,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5359: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5308: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -5381,7 +5330,7 @@ done
 
 if test x"$ac_cv_func_yp_get_default_domain" = x"no"; then
        echo $ac_n "checking for yp_get_default_domain in -lnsl""... $ac_c" 1>&6
-echo "configure:5385: checking for yp_get_default_domain in -lnsl" >&5
+echo "configure:5334: checking for yp_get_default_domain in -lnsl" >&5
 ac_lib_var=`echo nsl'_'yp_get_default_domain | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5389,7 +5338,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5393 "configure"
+#line 5342 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5400,7 +5349,7 @@ int main() {
 yp_get_default_domain()
 ; return 0; }
 EOF
-if { (eval echo configure:5404: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5353: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5430,12 +5379,12 @@ fi
 for ac_func in execl
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5434: checking for $ac_func" >&5
+echo "configure:5383: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5439 "configure"
+#line 5388 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -5458,7 +5407,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5462: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5411: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -5491,12 +5440,12 @@ fi
 for ac_func in dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link mknod mknod64
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5495: checking for $ac_func" >&5
+echo "configure:5444: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5500 "configure"
+#line 5449 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -5519,7 +5468,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5523: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5472: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -5546,12 +5495,12 @@ done
 for ac_func in fstat strchr utime utimes getrlimit fsync bzero memset strlcpy strlcat setpgid
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5550: checking for $ac_func" >&5
+echo "configure:5499: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5555 "configure"
+#line 5504 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -5574,7 +5523,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5578: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5527: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -5601,12 +5550,12 @@ done
 for ac_func in memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5605: checking for $ac_func" >&5
+echo "configure:5554: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5610 "configure"
+#line 5559 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -5629,7 +5578,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5633: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5582: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -5656,12 +5605,12 @@ done
 for ac_func in strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5660: checking for $ac_func" >&5
+echo "configure:5609: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5665 "configure"
+#line 5614 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -5684,7 +5633,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5688: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5637: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -5711,12 +5660,12 @@ done
 for ac_func in initgroups select poll rdchk getgrnam getgrent pathconf realpath
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5715: checking for $ac_func" >&5
+echo "configure:5664: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5720 "configure"
+#line 5669 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -5739,7 +5688,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5743: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5692: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -5766,12 +5715,12 @@ done
 for ac_func in setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate stat64 fstat64
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5770: checking for $ac_func" >&5
+echo "configure:5719: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5775 "configure"
+#line 5724 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -5794,7 +5743,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5798: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5747: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -5821,12 +5770,12 @@ done
 for ac_func in lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64 readdir64
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5825: checking for $ac_func" >&5
+echo "configure:5774: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5830 "configure"
+#line 5779 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -5849,7 +5798,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5853: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5802: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -5876,12 +5825,12 @@ done
 for ac_func in fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5880: checking for $ac_func" >&5
+echo "configure:5829: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5885 "configure"
+#line 5834 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -5904,7 +5853,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5908: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5857: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -5931,12 +5880,12 @@ done
 for ac_func in srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5935: checking for $ac_func" >&5
+echo "configure:5884: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5940 "configure"
+#line 5889 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -5959,7 +5908,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5963: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5912: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -5986,12 +5935,12 @@ done
 for ac_func in syslog vsyslog getgrouplist
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5990: checking for $ac_func" >&5
+echo "configure:5939: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5995 "configure"
+#line 5944 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6014,7 +5963,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6018: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6042,12 +5991,12 @@ done
 for ac_func in setbuffer
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6046: checking for $ac_func" >&5
+echo "configure:5995: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6051 "configure"
+#line 6000 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6070,7 +6019,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6074: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6023: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6099,12 +6048,12 @@ done
 for ac_func in syscall
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6103: checking for $ac_func" >&5
+echo "configure:6052: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6108 "configure"
+#line 6057 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6127,7 +6076,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6131: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6080: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6155,12 +6104,12 @@ done
 for ac_func in _dup _dup2 _opendir _readdir _seekdir _telldir _closedir
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6159: checking for $ac_func" >&5
+echo "configure:6108: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6164 "configure"
+#line 6113 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6183,7 +6132,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6187: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6136: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6210,12 +6159,12 @@ done
 for ac_func in __dup __dup2 __opendir __readdir __seekdir __telldir __closedir
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6214: checking for $ac_func" >&5
+echo "configure:6163: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6219 "configure"
+#line 6168 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6238,7 +6187,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6242: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6191: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6265,12 +6214,12 @@ done
 for ac_func in __getcwd _getcwd
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6269: checking for $ac_func" >&5
+echo "configure:6218: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6274 "configure"
+#line 6223 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6293,7 +6242,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6297: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6320,12 +6269,12 @@ done
 for ac_func in __xstat __fxstat __lxstat
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6324: checking for $ac_func" >&5
+echo "configure:6273: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6329 "configure"
+#line 6278 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6348,7 +6297,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6352: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6301: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6375,12 +6324,12 @@ done
 for ac_func in _stat _lstat _fstat __stat __lstat __fstat
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6379: checking for $ac_func" >&5
+echo "configure:6328: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6384 "configure"
+#line 6333 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6403,7 +6352,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6407: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6356: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6430,12 +6379,12 @@ done
 for ac_func in _acl __acl _facl __facl _open __open _chdir __chdir
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6434: checking for $ac_func" >&5
+echo "configure:6383: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6439 "configure"
+#line 6388 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6458,7 +6407,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6462: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6411: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6485,12 +6434,12 @@ done
 for ac_func in _close __close _fchdir __fchdir _fcntl __fcntl
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6489: checking for $ac_func" >&5
+echo "configure:6438: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6494 "configure"
+#line 6443 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6513,7 +6462,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6517: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6466: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6540,12 +6489,12 @@ done
 for ac_func in getdents _getdents __getdents _lseek __lseek _read __read
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6544: checking for $ac_func" >&5
+echo "configure:6493: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6549 "configure"
+#line 6498 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6568,7 +6517,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6572: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6595,12 +6544,12 @@ done
 for ac_func in _write __write _fork __fork
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6599: checking for $ac_func" >&5
+echo "configure:6548: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6604 "configure"
+#line 6553 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6623,7 +6572,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6627: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6576: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6650,12 +6599,12 @@ done
 for ac_func in _stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6654: checking for $ac_func" >&5
+echo "configure:6603: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6659 "configure"
+#line 6608 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6678,7 +6627,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6682: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6631: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6705,12 +6654,12 @@ done
 for ac_func in __sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6709: checking for $ac_func" >&5
+echo "configure:6658: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6714 "configure"
+#line 6663 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6733,7 +6682,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6737: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6686: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6760,12 +6709,12 @@ done
 for ac_func in pread _pread __pread pread64 _pread64 __pread64
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6764: checking for $ac_func" >&5
+echo "configure:6713: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6769 "configure"
+#line 6718 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6788,7 +6737,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6792: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6741: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6815,12 +6764,12 @@ done
 for ac_func in pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6819: checking for $ac_func" >&5
+echo "configure:6768: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6824 "configure"
+#line 6773 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6843,7 +6792,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6847: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6796: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6870,12 +6819,12 @@ done
 for ac_func in open64 _open64 __open64 creat64
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6874: checking for $ac_func" >&5
+echo "configure:6823: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6879 "configure"
+#line 6828 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6898,7 +6847,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6902: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6851: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6929,9 +6878,9 @@ done
 
 if test x$ac_cv_func_stat64 = xno ; then
   echo $ac_n "checking for stat64 in <sys/stat.h>""... $ac_c" 1>&6
-echo "configure:6933: checking for stat64 in <sys/stat.h>" >&5
+echo "configure:6882: checking for stat64 in <sys/stat.h>" >&5
   cat > conftest.$ac_ext <<EOF
-#line 6935 "configure"
+#line 6884 "configure"
 #include "confdefs.h"
 
 #if defined(HAVE_UNISTD_H)
@@ -6943,7 +6892,7 @@ int main() {
 struct stat64 st64; exit(stat64(".",&st64));
 ; return 0; }
 EOF
-if { (eval echo configure:6947: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6896: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_func_stat64=yes
 else
@@ -6962,9 +6911,9 @@ fi
 
 if test x$ac_cv_func_lstat64 = xno ; then
   echo $ac_n "checking for lstat64 in <sys/stat.h>""... $ac_c" 1>&6
-echo "configure:6966: checking for lstat64 in <sys/stat.h>" >&5
+echo "configure:6915: checking for lstat64 in <sys/stat.h>" >&5
   cat > conftest.$ac_ext <<EOF
-#line 6968 "configure"
+#line 6917 "configure"
 #include "confdefs.h"
 
 #if defined(HAVE_UNISTD_H)
@@ -6976,7 +6925,7 @@ int main() {
 struct stat64 st64; exit(lstat64(".",&st64));
 ; return 0; }
 EOF
-if { (eval echo configure:6980: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6929: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_func_lstat64=yes
 else
@@ -6995,9 +6944,9 @@ fi
 
 if test x$ac_cv_func_fstat64 = xno ; then
   echo $ac_n "checking for fstat64 in <sys/stat.h>""... $ac_c" 1>&6
-echo "configure:6999: checking for fstat64 in <sys/stat.h>" >&5
+echo "configure:6948: checking for fstat64 in <sys/stat.h>" >&5
   cat > conftest.$ac_ext <<EOF
-#line 7001 "configure"
+#line 6950 "configure"
 #include "confdefs.h"
 
 #if defined(HAVE_UNISTD_H)
@@ -7009,7 +6958,7 @@ int main() {
 struct stat64 st64; exit(fstat64(0,&st64));
 ; return 0; }
 EOF
-if { (eval echo configure:7013: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6962: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_func_fstat64=yes
 else
@@ -7029,7 +6978,7 @@ fi
 #####################################
 # we might need the resolv library on some systems
 echo $ac_n "checking for dn_expand in -lresolv""... $ac_c" 1>&6
-echo "configure:7033: checking for dn_expand in -lresolv" >&5
+echo "configure:6982: checking for dn_expand in -lresolv" >&5
 ac_lib_var=`echo resolv'_'dn_expand | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7037,7 +6986,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lresolv  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7041 "configure"
+#line 6990 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7048,7 +6997,7 @@ int main() {
 dn_expand()
 ; return 0; }
 EOF
-if { (eval echo configure:7052: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7001: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7086,12 +7035,12 @@ case "$LIBS" in
   *-lsecurity*) for ac_func in putprpwnam
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7090: checking for $ac_func" >&5
+echo "configure:7039: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7095 "configure"
+#line 7044 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -7114,7 +7063,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:7118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7067: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -7139,7 +7088,7 @@ fi
 done
  ;;
   *) echo $ac_n "checking for putprpwnam in -lsecurity""... $ac_c" 1>&6
-echo "configure:7143: checking for putprpwnam in -lsecurity" >&5
+echo "configure:7092: checking for putprpwnam in -lsecurity" >&5
 ac_lib_var=`echo security'_'putprpwnam | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7147,7 +7096,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsecurity  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7151 "configure"
+#line 7100 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7158,7 +7107,7 @@ int main() {
 putprpwnam()
 ; return 0; }
 EOF
-if { (eval echo configure:7162: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7111: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7188,12 +7137,12 @@ fi
      for ac_func in putprpwnam
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7192: checking for $ac_func" >&5
+echo "configure:7141: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7197 "configure"
+#line 7146 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -7216,7 +7165,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:7220: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7169: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -7247,12 +7196,12 @@ case "$LIBS" in
   *-lsec*) for ac_func in putprpwnam
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7251: checking for $ac_func" >&5
+echo "configure:7200: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7256 "configure"
+#line 7205 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -7275,7 +7224,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:7279: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7228: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -7300,7 +7249,7 @@ fi
 done
  ;;
   *) echo $ac_n "checking for putprpwnam in -lsec""... $ac_c" 1>&6
-echo "configure:7304: checking for putprpwnam in -lsec" >&5
+echo "configure:7253: checking for putprpwnam in -lsec" >&5
 ac_lib_var=`echo sec'_'putprpwnam | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7308,7 +7257,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsec  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7312 "configure"
+#line 7261 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7319,7 +7268,7 @@ int main() {
 putprpwnam()
 ; return 0; }
 EOF
-if { (eval echo configure:7323: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7272: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7349,12 +7298,12 @@ fi
      for ac_func in putprpwnam
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7353: checking for $ac_func" >&5
+echo "configure:7302: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7358 "configure"
+#line 7307 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -7377,7 +7326,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:7381: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -7409,12 +7358,12 @@ case "$LIBS" in
   *-lsecurity*) for ac_func in set_auth_parameters
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7413: checking for $ac_func" >&5
+echo "configure:7362: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7418 "configure"
+#line 7367 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -7437,7 +7386,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:7441: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7390: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -7462,7 +7411,7 @@ fi
 done
  ;;
   *) echo $ac_n "checking for set_auth_parameters in -lsecurity""... $ac_c" 1>&6
-echo "configure:7466: checking for set_auth_parameters in -lsecurity" >&5
+echo "configure:7415: checking for set_auth_parameters in -lsecurity" >&5
 ac_lib_var=`echo security'_'set_auth_parameters | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7470,7 +7419,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsecurity  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7474 "configure"
+#line 7423 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7481,7 +7430,7 @@ int main() {
 set_auth_parameters()
 ; return 0; }
 EOF
-if { (eval echo configure:7485: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7434: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7511,12 +7460,12 @@ fi
      for ac_func in set_auth_parameters
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7515: checking for $ac_func" >&5
+echo "configure:7464: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7520 "configure"
+#line 7469 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -7539,7 +7488,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:7543: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7492: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -7570,12 +7519,12 @@ case "$LIBS" in
   *-lsec*) for ac_func in set_auth_parameters
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7574: checking for $ac_func" >&5
+echo "configure:7523: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7579 "configure"
+#line 7528 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -7598,7 +7547,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:7602: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7551: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -7623,7 +7572,7 @@ fi
 done
  ;;
   *) echo $ac_n "checking for set_auth_parameters in -lsec""... $ac_c" 1>&6
-echo "configure:7627: checking for set_auth_parameters in -lsec" >&5
+echo "configure:7576: checking for set_auth_parameters in -lsec" >&5
 ac_lib_var=`echo sec'_'set_auth_parameters | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7631,7 +7580,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsec  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7635 "configure"
+#line 7584 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7642,7 +7591,7 @@ int main() {
 set_auth_parameters()
 ; return 0; }
 EOF
-if { (eval echo configure:7646: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7595: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7672,12 +7621,12 @@ fi
      for ac_func in set_auth_parameters
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7676: checking for $ac_func" >&5
+echo "configure:7625: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7681 "configure"
+#line 7630 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -7700,7 +7649,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:7704: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -7733,12 +7682,12 @@ case "$LIBS" in
   *-lgen*) for ac_func in getspnam
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7737: checking for $ac_func" >&5
+echo "configure:7686: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7742 "configure"
+#line 7691 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -7761,7 +7710,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:7765: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7714: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -7786,7 +7735,7 @@ fi
 done
  ;;
   *) echo $ac_n "checking for getspnam in -lgen""... $ac_c" 1>&6
-echo "configure:7790: checking for getspnam in -lgen" >&5
+echo "configure:7739: checking for getspnam in -lgen" >&5
 ac_lib_var=`echo gen'_'getspnam | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7794,7 +7743,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lgen  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7798 "configure"
+#line 7747 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7805,7 +7754,7 @@ int main() {
 getspnam()
 ; return 0; }
 EOF
-if { (eval echo configure:7809: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7758: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7835,12 +7784,12 @@ fi
      for ac_func in getspnam
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7839: checking for $ac_func" >&5
+echo "configure:7788: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7844 "configure"
+#line 7793 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -7863,7 +7812,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:7867: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7816: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -7895,12 +7844,12 @@ case "$LIBS" in
   *-lsecurity*) for ac_func in getspnam
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7899: checking for $ac_func" >&5
+echo "configure:7848: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7904 "configure"
+#line 7853 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -7923,7 +7872,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:7927: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -7948,7 +7897,7 @@ fi
 done
  ;;
   *) echo $ac_n "checking for getspnam in -lsecurity""... $ac_c" 1>&6
-echo "configure:7952: checking for getspnam in -lsecurity" >&5
+echo "configure:7901: checking for getspnam in -lsecurity" >&5
 ac_lib_var=`echo security'_'getspnam | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7956,7 +7905,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsecurity  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7960 "configure"
+#line 7909 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7967,7 +7916,7 @@ int main() {
 getspnam()
 ; return 0; }
 EOF
-if { (eval echo configure:7971: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7920: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7997,12 +7946,12 @@ fi
      for ac_func in getspnam
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8001: checking for $ac_func" >&5
+echo "configure:7950: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8006 "configure"
+#line 7955 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8025,7 +7974,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8029: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -8056,12 +8005,12 @@ case "$LIBS" in
   *-lsec*) for ac_func in getspnam
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8060: checking for $ac_func" >&5
+echo "configure:8009: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8065 "configure"
+#line 8014 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8084,7 +8033,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8088: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8037: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -8109,7 +8058,7 @@ fi
 done
  ;;
   *) echo $ac_n "checking for getspnam in -lsec""... $ac_c" 1>&6
-echo "configure:8113: checking for getspnam in -lsec" >&5
+echo "configure:8062: checking for getspnam in -lsec" >&5
 ac_lib_var=`echo sec'_'getspnam | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8117,7 +8066,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsec  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8121 "configure"
+#line 8070 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8128,7 +8077,7 @@ int main() {
 getspnam()
 ; return 0; }
 EOF
-if { (eval echo configure:8132: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8081: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8158,12 +8107,12 @@ fi
      for ac_func in getspnam
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8162: checking for $ac_func" >&5
+echo "configure:8111: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8167 "configure"
+#line 8116 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8186,7 +8135,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8190: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8139: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -8218,12 +8167,12 @@ case "$LIBS" in
   *-lsecurity*) for ac_func in bigcrypt
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8222: checking for $ac_func" >&5
+echo "configure:8171: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8227 "configure"
+#line 8176 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8246,7 +8195,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8199: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -8271,7 +8220,7 @@ fi
 done
  ;;
   *) echo $ac_n "checking for bigcrypt in -lsecurity""... $ac_c" 1>&6
-echo "configure:8275: checking for bigcrypt in -lsecurity" >&5
+echo "configure:8224: checking for bigcrypt in -lsecurity" >&5
 ac_lib_var=`echo security'_'bigcrypt | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8279,7 +8228,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsecurity  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8283 "configure"
+#line 8232 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8290,7 +8239,7 @@ int main() {
 bigcrypt()
 ; return 0; }
 EOF
-if { (eval echo configure:8294: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8243: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8320,12 +8269,12 @@ fi
      for ac_func in bigcrypt
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8324: checking for $ac_func" >&5
+echo "configure:8273: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8329 "configure"
+#line 8278 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8348,7 +8297,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8352: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8301: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -8379,12 +8328,12 @@ case "$LIBS" in
   *-lsec*) for ac_func in bigcrypt
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8383: checking for $ac_func" >&5
+echo "configure:8332: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8388 "configure"
+#line 8337 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8407,7 +8356,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8411: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8360: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -8432,7 +8381,7 @@ fi
 done
  ;;
   *) echo $ac_n "checking for bigcrypt in -lsec""... $ac_c" 1>&6
-echo "configure:8436: checking for bigcrypt in -lsec" >&5
+echo "configure:8385: checking for bigcrypt in -lsec" >&5
 ac_lib_var=`echo sec'_'bigcrypt | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8440,7 +8389,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsec  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8444 "configure"
+#line 8393 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8451,7 +8400,7 @@ int main() {
 bigcrypt()
 ; return 0; }
 EOF
-if { (eval echo configure:8455: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8404: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8481,12 +8430,12 @@ fi
      for ac_func in bigcrypt
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8485: checking for $ac_func" >&5
+echo "configure:8434: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8490 "configure"
+#line 8439 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8509,7 +8458,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8513: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8462: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -8541,12 +8490,12 @@ case "$LIBS" in
   *-lsecurity*) for ac_func in getprpwnam
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8545: checking for $ac_func" >&5
+echo "configure:8494: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8550 "configure"
+#line 8499 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8569,7 +8518,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8573: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -8594,7 +8543,7 @@ fi
 done
  ;;
   *) echo $ac_n "checking for getprpwnam in -lsecurity""... $ac_c" 1>&6
-echo "configure:8598: checking for getprpwnam in -lsecurity" >&5
+echo "configure:8547: checking for getprpwnam in -lsecurity" >&5
 ac_lib_var=`echo security'_'getprpwnam | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8602,7 +8551,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsecurity  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8606 "configure"
+#line 8555 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8613,7 +8562,7 @@ int main() {
 getprpwnam()
 ; return 0; }
 EOF
-if { (eval echo configure:8617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8566: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8643,12 +8592,12 @@ fi
      for ac_func in getprpwnam
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8647: checking for $ac_func" >&5
+echo "configure:8596: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8652 "configure"
+#line 8601 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8671,7 +8620,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8675: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8624: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -8702,12 +8651,12 @@ case "$LIBS" in
   *-lsec*) for ac_func in getprpwnam
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8706: checking for $ac_func" >&5
+echo "configure:8655: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8711 "configure"
+#line 8660 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8730,7 +8679,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8734: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8683: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -8755,7 +8704,7 @@ fi
 done
  ;;
   *) echo $ac_n "checking for getprpwnam in -lsec""... $ac_c" 1>&6
-echo "configure:8759: checking for getprpwnam in -lsec" >&5
+echo "configure:8708: checking for getprpwnam in -lsec" >&5
 ac_lib_var=`echo sec'_'getprpwnam | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8763,7 +8712,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsec  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8767 "configure"
+#line 8716 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8774,7 +8723,7 @@ int main() {
 getprpwnam()
 ; return 0; }
 EOF
-if { (eval echo configure:8778: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8727: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8804,12 +8753,12 @@ fi
      for ac_func in getprpwnam
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8808: checking for $ac_func" >&5
+echo "configure:8757: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8813 "configure"
+#line 8762 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8832,7 +8781,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8836: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8785: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -8876,7 +8825,7 @@ SHLIBEXT="so"
 # Assume non-shared by default and override below
 BLDSHARED="false"
 echo $ac_n "checking ability to build shared libraries""... $ac_c" 1>&6
-echo "configure:8880: checking ability to build shared libraries" >&5
+echo "configure:8829: checking ability to build shared libraries" >&5
 
 # and these are for particular systems
 case "$host_os" in
@@ -8928,17 +8877,7 @@ EOF
                        SONAMEFLAG="-Wl,-h,"
                        PICFLAG="-KPIC"   # Is this correct for SunOS
                ;;
-               *freebsd*)  BLDSHARED="true"
-                       LDSHFLAGS="-shared"
-                       DYNEXP="-Wl,--export-dynamic"
-                       SONAMEFLAG="-Wl,-soname,"
-                       PICFLAG="-fPIC -DPIC"
-                       cat >> confdefs.h <<\EOF
-#define STAT_ST_BLOCKSIZE 512
-EOF
-
-               ;;
-               *openbsd*)  BLDSHARED="true"
+               *bsd*)  BLDSHARED="true"
                        LDSHFLAGS="-shared"
                        DYNEXP="-Wl,-Bdynamic"
                        SONAMEFLAG="-Wl,-soname,"
@@ -8981,10 +8920,12 @@ EOF
                        BLDSHARED="true"
                        LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry"
                        DYNEXP="-Wl,-brtl,-bexpall"
-                       PICFLAG="-O2"
-                       if test "${GCC}" != "yes"; then
+                       if test "${GCC}" = "yes"; then
+                               PICFLAG="-O2"
+                       else
+                       PICFLAG="-O2 -qmaxmem=6000"
                                ## for funky AIX compiler using strncpy()
-                               CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
+                               CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT"
                        fi
 
                        cat >> confdefs.h <<\EOF
@@ -9044,7 +8985,7 @@ EOF
                *dgux*) # Extract the first word of "groff", so it can be a program name with args.
 set dummy groff; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:9048: checking for $ac_word" >&5
+echo "configure:8989: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_ROFF'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9101,17 +9042,17 @@ esac
 
 echo "$ac_t""$BLDSHARED" 1>&6
 echo $ac_n "checking linker flags for shared libraries""... $ac_c" 1>&6
-echo "configure:9105: checking linker flags for shared libraries" >&5
+echo "configure:9046: checking linker flags for shared libraries" >&5
 echo "$ac_t""$LDSHFLAGS" 1>&6
 echo $ac_n "checking compiler flags for position-independent code""... $ac_c" 1>&6
-echo "configure:9108: checking compiler flags for position-independent code" >&5
+echo "configure:9049: checking compiler flags for position-independent code" >&5
 echo "$ac_t""$PICFLAGS" 1>&6
 
 #######################################################
 # test whether building a shared library actually works
 if test $BLDSHARED = true; then
 echo $ac_n "checking whether building shared libraries actually works""... $ac_c" 1>&6
-echo "configure:9115: checking whether building shared libraries actually works" >&5
+echo "configure:9056: checking whether building shared libraries actually works" >&5
 if eval "test \"`echo '$''{'ac_cv_shlib_works'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9142,7 +9083,7 @@ fi
 ################
 
 echo $ac_n "checking for long long""... $ac_c" 1>&6
-echo "configure:9146: checking for long long" >&5
+echo "configure:9087: checking for long long" >&5
 if eval "test \"`echo '$''{'samba_cv_have_longlong'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9151,12 +9092,12 @@ if test "$cross_compiling" = yes; then
   samba_cv_have_longlong=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 9155 "configure"
+#line 9096 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }
 EOF
-if { (eval echo configure:9160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9101: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_have_longlong=yes
 else
@@ -9183,20 +9124,20 @@ fi
 # AIX needs this.
 
 echo $ac_n "checking for LL suffix on long long integers""... $ac_c" 1>&6
-echo "configure:9187: checking for LL suffix on long long integers" >&5
+echo "configure:9128: checking for LL suffix on long long integers" >&5
 if eval "test \"`echo '$''{'samba_cv_compiler_supports_ll'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cat > conftest.$ac_ext <<EOF
-#line 9193 "configure"
+#line 9134 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int main() {
 long long i = 0x8000000000LL
 ; return 0; }
 EOF
-if { (eval echo configure:9200: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9141: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_compiler_supports_ll=yes
 else
@@ -9218,7 +9159,7 @@ fi
 
   
 echo $ac_n "checking for 64 bit off_t""... $ac_c" 1>&6
-echo "configure:9222: checking for 64 bit off_t" >&5
+echo "configure:9163: checking for 64 bit off_t" >&5
 if eval "test \"`echo '$''{'samba_cv_SIZEOF_OFF_T'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9227,13 +9168,13 @@ if test "$cross_compiling" = yes; then
   samba_cv_SIZEOF_OFF_T=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 9231 "configure"
+#line 9172 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <sys/stat.h>
 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }
 EOF
-if { (eval echo configure:9237: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_SIZEOF_OFF_T=yes
 else
@@ -9256,7 +9197,7 @@ EOF
 fi
 
 echo $ac_n "checking for off64_t""... $ac_c" 1>&6
-echo "configure:9260: checking for off64_t" >&5
+echo "configure:9201: checking for off64_t" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_OFF64_T'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9265,7 +9206,7 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_OFF64_T=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 9269 "configure"
+#line 9210 "configure"
 #include "confdefs.h"
 
 #if defined(HAVE_UNISTD_H)
@@ -9275,7 +9216,7 @@ else
 #include <sys/stat.h>
 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }
 EOF
-if { (eval echo configure:9279: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9220: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_OFF64_T=yes
 else
@@ -9298,7 +9239,7 @@ EOF
 fi
 
 echo $ac_n "checking for 64 bit ino_t""... $ac_c" 1>&6
-echo "configure:9302: checking for 64 bit ino_t" >&5
+echo "configure:9243: checking for 64 bit ino_t" >&5
 if eval "test \"`echo '$''{'samba_cv_SIZEOF_INO_T'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9307,13 +9248,13 @@ if test "$cross_compiling" = yes; then
   samba_cv_SIZEOF_INO_T=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 9311 "configure"
+#line 9252 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <sys/stat.h>
 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }
 EOF
-if { (eval echo configure:9317: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9258: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_SIZEOF_INO_T=yes
 else
@@ -9336,7 +9277,7 @@ EOF
 fi
 
 echo $ac_n "checking for ino64_t""... $ac_c" 1>&6
-echo "configure:9340: checking for ino64_t" >&5
+echo "configure:9281: checking for ino64_t" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_INO64_T'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9345,7 +9286,7 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_INO64_T=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 9349 "configure"
+#line 9290 "configure"
 #include "confdefs.h"
 
 #if defined(HAVE_UNISTD_H)
@@ -9355,7 +9296,7 @@ else
 #include <sys/stat.h>
 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }
 EOF
-if { (eval echo configure:9359: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_INO64_T=yes
 else
@@ -9378,7 +9319,7 @@ EOF
 fi
 
 echo $ac_n "checking for dev64_t""... $ac_c" 1>&6
-echo "configure:9382: checking for dev64_t" >&5
+echo "configure:9323: checking for dev64_t" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_DEV64_T'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9387,7 +9328,7 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_DEV64_T=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 9391 "configure"
+#line 9332 "configure"
 #include "confdefs.h"
 
 #if defined(HAVE_UNISTD_H)
@@ -9397,7 +9338,7 @@ else
 #include <sys/stat.h>
 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }
 EOF
-if { (eval echo configure:9401: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9342: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_DEV64_T=yes
 else
@@ -9420,13 +9361,13 @@ EOF
 fi
 
 echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6
-echo "configure:9424: checking for struct dirent64" >&5
+echo "configure:9365: checking for struct dirent64" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_STRUCT_DIRENT64'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 9430 "configure"
+#line 9371 "configure"
 #include "confdefs.h"
 
 #if defined(HAVE_UNISTD_H)
@@ -9438,7 +9379,7 @@ int main() {
 struct dirent64 de;
 ; return 0; }
 EOF
-if { (eval echo configure:9442: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9383: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_HAVE_STRUCT_DIRENT64=yes
 else
@@ -9459,7 +9400,7 @@ EOF
 fi
 
 echo $ac_n "checking for major macro""... $ac_c" 1>&6
-echo "configure:9463: checking for major macro" >&5
+echo "configure:9404: checking for major macro" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_DEVICE_MAJOR_FN'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9468,7 +9409,7 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_DEVICE_MAJOR_FN=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 9472 "configure"
+#line 9413 "configure"
 #include "confdefs.h"
 
 #if defined(HAVE_UNISTD_H)
@@ -9477,7 +9418,7 @@ else
 #include <sys/types.h>
 main() { dev_t dev; int i = major(dev); return 0; }
 EOF
-if { (eval echo configure:9481: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9422: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_DEVICE_MAJOR_FN=yes
 else
@@ -9500,7 +9441,7 @@ EOF
 fi
 
 echo $ac_n "checking for minor macro""... $ac_c" 1>&6
-echo "configure:9504: checking for minor macro" >&5
+echo "configure:9445: checking for minor macro" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_DEVICE_MINOR_FN'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9509,7 +9450,7 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_DEVICE_MINOR_FN=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 9513 "configure"
+#line 9454 "configure"
 #include "confdefs.h"
 
 #if defined(HAVE_UNISTD_H)
@@ -9518,7 +9459,7 @@ else
 #include <sys/types.h>
 main() { dev_t dev; int i = minor(dev); return 0; }
 EOF
-if { (eval echo configure:9522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9463: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_DEVICE_MINOR_FN=yes
 else
@@ -9541,7 +9482,7 @@ EOF
 fi
 
 echo $ac_n "checking for unsigned char""... $ac_c" 1>&6
-echo "configure:9545: checking for unsigned char" >&5
+echo "configure:9486: checking for unsigned char" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_UNSIGNED_CHAR'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9550,12 +9491,12 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_UNSIGNED_CHAR=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 9554 "configure"
+#line 9495 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main() { char c; c=250; exit((c > 0)?0:1); }
 EOF
-if { (eval echo configure:9559: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9500: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_UNSIGNED_CHAR=yes
 else
@@ -9578,13 +9519,13 @@ EOF
 fi
 
 echo $ac_n "checking for sin_len in sock""... $ac_c" 1>&6
-echo "configure:9582: checking for sin_len in sock" >&5
+echo "configure:9523: checking for sin_len in sock" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_SOCK_SIN_LEN'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 9588 "configure"
+#line 9529 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -9593,7 +9534,7 @@ int main() {
 struct sockaddr_in sock; sock.sin_len = sizeof(sock);
 ; return 0; }
 EOF
-if { (eval echo configure:9597: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9538: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_HAVE_SOCK_SIN_LEN=yes
 else
@@ -9614,13 +9555,13 @@ EOF
 fi
 
 echo $ac_n "checking whether seekdir returns void""... $ac_c" 1>&6
-echo "configure:9618: checking whether seekdir returns void" >&5
+echo "configure:9559: checking whether seekdir returns void" >&5
 if eval "test \"`echo '$''{'samba_cv_SEEKDIR_RETURNS_VOID'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 9624 "configure"
+#line 9565 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <dirent.h>
@@ -9629,7 +9570,7 @@ int main() {
 return 0;
 ; return 0; }
 EOF
-if { (eval echo configure:9633: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9574: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_SEEKDIR_RETURNS_VOID=yes
 else
@@ -9650,20 +9591,20 @@ EOF
 fi
 
 echo $ac_n "checking for __FILE__ macro""... $ac_c" 1>&6
-echo "configure:9654: checking for __FILE__ macro" >&5
+echo "configure:9595: checking for __FILE__ macro" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_FILE_MACRO'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 9660 "configure"
+#line 9601 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int main() {
 printf("%s\n", __FILE__);
 ; return 0; }
 EOF
-if { (eval echo configure:9667: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9608: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_HAVE_FILE_MACRO=yes
 else
@@ -9684,20 +9625,20 @@ EOF
 fi
 
 echo $ac_n "checking for __FUNCTION__ macro""... $ac_c" 1>&6
-echo "configure:9688: checking for __FUNCTION__ macro" >&5
+echo "configure:9629: checking for __FUNCTION__ macro" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_FUNCTION_MACRO'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 9694 "configure"
+#line 9635 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int main() {
 printf("%s\n", __FUNCTION__);
 ; return 0; }
 EOF
-if { (eval echo configure:9701: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9642: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_HAVE_FUNCTION_MACRO=yes
 else
@@ -9718,7 +9659,7 @@ EOF
 fi
 
 echo $ac_n "checking if gettimeofday takes tz argument""... $ac_c" 1>&6
-echo "configure:9722: checking if gettimeofday takes tz argument" >&5
+echo "configure:9663: checking if gettimeofday takes tz argument" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_GETTIMEOFDAY_TZ'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9727,14 +9668,14 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_GETTIMEOFDAY_TZ=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 9731 "configure"
+#line 9672 "configure"
 #include "confdefs.h"
 
 #include <sys/time.h>
 #include <unistd.h>
 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}
 EOF
-if { (eval echo configure:9738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_GETTIMEOFDAY_TZ=yes
 else
@@ -9757,13 +9698,13 @@ EOF
 fi
 
 echo $ac_n "checking for __va_copy""... $ac_c" 1>&6
-echo "configure:9761: checking for __va_copy" >&5
+echo "configure:9702: checking for __va_copy" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_VA_COPY'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 9767 "configure"
+#line 9708 "configure"
 #include "confdefs.h"
 #include <stdarg.h>
 va_list ap1,ap2;
@@ -9771,7 +9712,7 @@ int main() {
 __va_copy(ap1,ap2);
 ; return 0; }
 EOF
-if { (eval echo configure:9775: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9716: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   samba_cv_HAVE_VA_COPY=yes
 else
@@ -9792,7 +9733,7 @@ EOF
 fi
 
 echo $ac_n "checking for C99 vsnprintf""... $ac_c" 1>&6
-echo "configure:9796: checking for C99 vsnprintf" >&5
+echo "configure:9737: checking for C99 vsnprintf" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_C99_VSNPRINTF'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9801,7 +9742,7 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_C99_VSNPRINTF=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 9805 "configure"
+#line 9746 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -9828,7 +9769,7 @@ void foo(const char *format, ...) {
 main() { foo("hello"); }
 
 EOF
-if { (eval echo configure:9832: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9773: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_C99_VSNPRINTF=yes
 else
@@ -9851,7 +9792,7 @@ EOF
 fi
 
 echo $ac_n "checking for broken readdir""... $ac_c" 1>&6
-echo "configure:9855: checking for broken readdir" >&5
+echo "configure:9796: checking for broken readdir" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_BROKEN_READDIR'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9860,7 +9801,7 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_BROKEN_READDIR=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 9864 "configure"
+#line 9805 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <dirent.h>
@@ -9868,7 +9809,7 @@ main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
 di->d_name[0] == 0) exit(0); exit(1);} 
 EOF
-if { (eval echo configure:9872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9813: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_BROKEN_READDIR=yes
 else
@@ -9891,13 +9832,13 @@ EOF
 fi
 
 echo $ac_n "checking for utimbuf""... $ac_c" 1>&6
-echo "configure:9895: checking for utimbuf" >&5
+echo "configure:9836: checking for utimbuf" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_UTIMBUF'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 9901 "configure"
+#line 9842 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <utime.h>
@@ -9905,7 +9846,7 @@ int main() {
 struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));
 ; return 0; }
 EOF
-if { (eval echo configure:9909: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9850: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_HAVE_UTIMBUF=yes
 else
@@ -9929,12 +9870,12 @@ fi
 for ac_func in pututline pututxline updwtmp updwtmpx getutmpx
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9933: checking for $ac_func" >&5
+echo "configure:9874: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 9938 "configure"
+#line 9879 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -9957,7 +9898,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:9961: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9902: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -9983,13 +9924,13 @@ done
 
 
 echo $ac_n "checking for ut_name in utmp""... $ac_c" 1>&6
-echo "configure:9987: checking for ut_name in utmp" >&5
+echo "configure:9928: checking for ut_name in utmp" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_NAME'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 9993 "configure"
+#line 9934 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <utmp.h>
@@ -9997,7 +9938,7 @@ int main() {
 struct utmp ut;  ut.ut_name[0] = 'a';
 ; return 0; }
 EOF
-if { (eval echo configure:10001: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9942: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_HAVE_UT_UT_NAME=yes
 else
@@ -10018,13 +9959,13 @@ EOF
 fi 
 
 echo $ac_n "checking for ut_user in utmp""... $ac_c" 1>&6
-echo "configure:10022: checking for ut_user in utmp" >&5
+echo "configure:9963: checking for ut_user in utmp" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_USER'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 10028 "configure"
+#line 9969 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <utmp.h>
@@ -10032,7 +9973,7 @@ int main() {
 struct utmp ut;  ut.ut_user[0] = 'a';
 ; return 0; }
 EOF
-if { (eval echo configure:10036: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9977: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_HAVE_UT_UT_USER=yes
 else
@@ -10053,13 +9994,13 @@ EOF
 fi 
 
 echo $ac_n "checking for ut_id in utmp""... $ac_c" 1>&6
-echo "configure:10057: checking for ut_id in utmp" >&5
+echo "configure:9998: checking for ut_id in utmp" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_ID'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 10063 "configure"
+#line 10004 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <utmp.h>
@@ -10067,7 +10008,7 @@ int main() {
 struct utmp ut;  ut.ut_id[0] = 'a';
 ; return 0; }
 EOF
-if { (eval echo configure:10071: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10012: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_HAVE_UT_UT_ID=yes
 else
@@ -10088,13 +10029,13 @@ EOF
 fi 
 
 echo $ac_n "checking for ut_host in utmp""... $ac_c" 1>&6
-echo "configure:10092: checking for ut_host in utmp" >&5
+echo "configure:10033: checking for ut_host in utmp" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_HOST'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 10098 "configure"
+#line 10039 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <utmp.h>
@@ -10102,7 +10043,7 @@ int main() {
 struct utmp ut;  ut.ut_host[0] = 'a';
 ; return 0; }
 EOF
-if { (eval echo configure:10106: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10047: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_HAVE_UT_UT_HOST=yes
 else
@@ -10123,13 +10064,13 @@ EOF
 fi 
 
 echo $ac_n "checking for ut_time in utmp""... $ac_c" 1>&6
-echo "configure:10127: checking for ut_time in utmp" >&5
+echo "configure:10068: checking for ut_time in utmp" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_TIME'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 10133 "configure"
+#line 10074 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <utmp.h>
@@ -10137,7 +10078,7 @@ int main() {
 struct utmp ut;  time_t t; ut.ut_time = t;
 ; return 0; }
 EOF
-if { (eval echo configure:10141: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10082: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_HAVE_UT_UT_TIME=yes
 else
@@ -10158,13 +10099,13 @@ EOF
 fi 
 
 echo $ac_n "checking for ut_tv in utmp""... $ac_c" 1>&6
-echo "configure:10162: checking for ut_tv in utmp" >&5
+echo "configure:10103: checking for ut_tv in utmp" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_TV'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 10168 "configure"
+#line 10109 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <utmp.h>
@@ -10172,7 +10113,7 @@ int main() {
 struct utmp ut;  struct timeval tv; ut.ut_tv = tv;
 ; return 0; }
 EOF
-if { (eval echo configure:10176: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10117: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_HAVE_UT_UT_TV=yes
 else
@@ -10193,13 +10134,13 @@ EOF
 fi 
 
 echo $ac_n "checking for ut_type in utmp""... $ac_c" 1>&6
-echo "configure:10197: checking for ut_type in utmp" >&5
+echo "configure:10138: checking for ut_type in utmp" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_TYPE'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 10203 "configure"
+#line 10144 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <utmp.h>
@@ -10207,7 +10148,7 @@ int main() {
 struct utmp ut;  ut.ut_type = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:10211: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10152: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_HAVE_UT_UT_TYPE=yes
 else
@@ -10228,13 +10169,13 @@ EOF
 fi 
 
 echo $ac_n "checking for ut_pid in utmp""... $ac_c" 1>&6
-echo "configure:10232: checking for ut_pid in utmp" >&5
+echo "configure:10173: checking for ut_pid in utmp" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_PID'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 10238 "configure"
+#line 10179 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <utmp.h>
@@ -10242,7 +10183,7 @@ int main() {
 struct utmp ut;  ut.ut_pid = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:10246: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10187: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_HAVE_UT_UT_PID=yes
 else
@@ -10263,13 +10204,13 @@ EOF
 fi 
 
 echo $ac_n "checking for ut_exit in utmp""... $ac_c" 1>&6
-echo "configure:10267: checking for ut_exit in utmp" >&5
+echo "configure:10208: checking for ut_exit in utmp" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_EXIT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 10273 "configure"
+#line 10214 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <utmp.h>
@@ -10277,7 +10218,7 @@ int main() {
 struct utmp ut;  ut.ut_exit.e_exit = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:10281: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10222: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_HAVE_UT_UT_EXIT=yes
 else
@@ -10298,13 +10239,13 @@ EOF
 fi 
 
 echo $ac_n "checking for ut_addr in utmp""... $ac_c" 1>&6
-echo "configure:10302: checking for ut_addr in utmp" >&5
+echo "configure:10243: checking for ut_addr in utmp" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_ADDR'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 10308 "configure"
+#line 10249 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <utmp.h>
@@ -10312,7 +10253,7 @@ int main() {
 struct utmp ut;  ut.ut_addr = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:10316: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10257: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_HAVE_UT_UT_ADDR=yes
 else
 
 if test x$ac_cv_func_pututline = xyes ; then
   echo $ac_n "checking whether pututline returns pointer""... $ac_c" 1>&6
-echo "configure:10338: checking whether pututline returns pointer" >&5
+echo "configure:10279: checking whether pututline returns pointer" >&5
 if eval "test \"`echo '$''{'samba_cv_PUTUTLINE_RETURNS_UTMP'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
   cat > conftest.$ac_ext <<EOF
-#line 10344 "configure"
+#line 10285 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <utmp.h>
@@ -10348,7 +10289,7 @@ int main() {
 struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);
 ; return 0; }
 EOF
-if { (eval echo configure:10352: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10293: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_PUTUTLINE_RETURNS_UTMP=yes
 else
@@ -10370,13 +10311,13 @@ EOF
 fi
 
 echo $ac_n "checking for ut_syslen in utmpx""... $ac_c" 1>&6
-echo "configure:10374: checking for ut_syslen in utmpx" >&5
+echo "configure:10315: checking for ut_syslen in utmpx" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_UX_UT_SYSLEN'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 10380 "configure"
+#line 10321 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <utmpx.h>
@@ -10384,7 +10325,7 @@ int main() {
 struct utmpx ux;  ux.ut_syslen = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:10388: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10329: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_HAVE_UX_UT_SYSLEN=yes
 else
@@ -10408,7 +10349,7 @@ fi
 #################################################
 # check for libiconv support
 echo $ac_n "checking whether to use libiconv""... $ac_c" 1>&6
-echo "configure:10412: checking whether to use libiconv" >&5
+echo "configure:10353: checking whether to use libiconv" >&5
 # Check whether --with-libiconv or --without-libiconv was given.
 if test "${with_libiconv+set}" = set; then
   withval="$with_libiconv"
@@ -10421,7 +10362,7 @@ if test "${with_libiconv+set}" = set; then
     CFLAGS="$CFLAGS -I$withval/include"
     LDFLAGS="$LDFLAGS -L$withval/lib"
     echo $ac_n "checking for iconv_open in -liconv""... $ac_c" 1>&6
-echo "configure:10425: checking for iconv_open in -liconv" >&5
+echo "configure:10366: checking for iconv_open in -liconv" >&5
 ac_lib_var=`echo iconv'_'iconv_open | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -10429,7 +10370,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-liconv  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10433 "configure"
+#line 10374 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10440,7 +10381,7 @@ int main() {
 iconv_open()
 ; return 0; }
 EOF
-if { (eval echo configure:10444: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10483,7 +10424,7 @@ fi
 ############
 # check for iconv in libc
 echo $ac_n "checking for working iconv""... $ac_c" 1>&6
-echo "configure:10487: checking for working iconv" >&5
+echo "configure:10428: checking for working iconv" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_NATIVE_ICONV'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -10492,7 +10433,7 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_NATIVE_ICONV=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 10496 "configure"
+#line 10437 "configure"
 #include "confdefs.h"
 
 #include <iconv.h>
@@ -10503,7 +10444,7 @@ main() {
 }
 
 EOF
-if { (eval echo configure:10507: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:10448: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_NATIVE_ICONV=yes
 else
@@ -10527,7 +10468,7 @@ fi
 
 
 echo $ac_n "checking for Linux kernel oplocks""... $ac_c" 1>&6
-echo "configure:10531: checking for Linux kernel oplocks" >&5
+echo "configure:10472: checking for Linux kernel oplocks" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_KERNEL_OPLOCKS_LINUX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -10536,7 +10477,7 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 10540 "configure"
+#line 10481 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -10550,7 +10491,7 @@ main() {
 }
 
 EOF
-if { (eval echo configure:10554: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:10495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes
 else
@@ -10573,7 +10514,7 @@ EOF
 fi
 
 echo $ac_n "checking for kernel change notify support""... $ac_c" 1>&6
-echo "configure:10577: checking for kernel change notify support" >&5
+echo "configure:10518: checking for kernel change notify support" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_KERNEL_CHANGE_NOTIFY'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -10582,7 +10523,7 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 10586 "configure"
+#line 10527 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -10596,7 +10537,7 @@ main() {
 }
 
 EOF
-if { (eval echo configure:10600: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:10541: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes
 else
@@ -10619,7 +10560,7 @@ EOF
 fi
 
 echo $ac_n "checking for kernel share modes""... $ac_c" 1>&6
-echo "configure:10623: checking for kernel share modes" >&5
+echo "configure:10564: checking for kernel share modes" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_KERNEL_SHARE_MODES'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -10628,7 +10569,7 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_KERNEL_SHARE_MODES=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 10632 "configure"
+#line 10573 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -10644,7 +10585,7 @@ main() {
 }
 
 EOF
-if { (eval echo configure:10648: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:10589: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_KERNEL_SHARE_MODES=yes
 else
 
 
 echo $ac_n "checking for IRIX kernel oplock type definitions""... $ac_c" 1>&6
-echo "configure:10674: checking for IRIX kernel oplock type definitions" >&5
+echo "configure:10615: checking for IRIX kernel oplock type definitions" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_KERNEL_OPLOCKS_IRIX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 10680 "configure"
+#line 10621 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <fcntl.h>
@@ -10684,7 +10625,7 @@ int main() {
 oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;
 ; return 0; }
 EOF
-if { (eval echo configure:10688: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10629: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes
 else
@@ -10705,7 +10646,7 @@ EOF
 fi
 
 echo $ac_n "checking for irix specific capabilities""... $ac_c" 1>&6
-echo "configure:10709: checking for irix specific capabilities" >&5
+echo "configure:10650: checking for irix specific capabilities" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -10714,7 +10655,7 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 10718 "configure"
+#line 10659 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/capability.h>
@@ -10729,7 +10670,7 @@ main() {
 }
 
 EOF
-if { (eval echo configure:10733: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:10674: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes
 else
 #
 
 echo $ac_n "checking for int16 typedef included by rpc/rpc.h""... $ac_c" 1>&6
-echo "configure:10761: checking for int16 typedef included by rpc/rpc.h" >&5
+echo "configure:10702: checking for int16 typedef included by rpc/rpc.h" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_INT16_FROM_RPC_RPC_H'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 10767 "configure"
+#line 10708 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if defined(HAVE_RPC_RPC_H)
@@ -10773,7 +10714,7 @@ int main() {
 int16 testvar;
 ; return 0; }
 EOF
-if { (eval echo configure:10777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10718: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes
 else
@@ -10794,13 +10735,13 @@ EOF
 fi
 
 echo $ac_n "checking for uint16 typedef included by rpc/rpc.h""... $ac_c" 1>&6
-echo "configure:10798: checking for uint16 typedef included by rpc/rpc.h" >&5
+echo "configure:10739: checking for uint16 typedef included by rpc/rpc.h" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_UINT16_FROM_RPC_RPC_H'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 10804 "configure"
+#line 10745 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if defined(HAVE_RPC_RPC_H)
@@ -10810,7 +10751,7 @@ int main() {
 uint16 testvar;
 ; return 0; }
 EOF
-if { (eval echo configure:10814: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10755: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes
 else
@@ -10831,13 +10772,13 @@ EOF
 fi
 
 echo $ac_n "checking for int32 typedef included by rpc/rpc.h""... $ac_c" 1>&6
-echo "configure:10835: checking for int32 typedef included by rpc/rpc.h" >&5
+echo "configure:10776: checking for int32 typedef included by rpc/rpc.h" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_INT32_FROM_RPC_RPC_H'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 10841 "configure"
+#line 10782 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if defined(HAVE_RPC_RPC_H)
@@ -10847,7 +10788,7 @@ int main() {
 int32 testvar;
 ; return 0; }
 EOF
-if { (eval echo configure:10851: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10792: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes
 else
@@ -10868,13 +10809,13 @@ EOF
 fi
 
 echo $ac_n "checking for uint32 typedef included by rpc/rpc.h""... $ac_c" 1>&6
-echo "configure:10872: checking for uint32 typedef included by rpc/rpc.h" >&5
+echo "configure:10813: checking for uint32 typedef included by rpc/rpc.h" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_UINT32_FROM_RPC_RPC_H'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 10878 "configure"
+#line 10819 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if defined(HAVE_RPC_RPC_H)
@@ -10884,7 +10825,7 @@ int main() {
 uint32 testvar;
 ; return 0; }
 EOF
-if { (eval echo configure:10888: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10829: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes
 else
 
 
 echo $ac_n "checking for conflicting AUTH_ERROR define in rpc/rpc.h""... $ac_c" 1>&6
-echo "configure:10910: checking for conflicting AUTH_ERROR define in rpc/rpc.h" >&5
+echo "configure:10851: checking for conflicting AUTH_ERROR define in rpc/rpc.h" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 10916 "configure"
+#line 10857 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #ifdef HAVE_SYS_SECURITY_H
@@ -10926,7 +10867,7 @@ int main() {
 int testvar;
 ; return 0; }
 EOF
-if { (eval echo configure:10930: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10871: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no
 else
@@ -10947,16 +10888,16 @@ EOF
 fi
 
 echo $ac_n "checking for test routines""... $ac_c" 1>&6
-echo "configure:10951: checking for test routines" >&5
+echo "configure:10892: checking for test routines" >&5
 if test "$cross_compiling" = yes; then
   echo "configure: warning: cannot run when cross-compiling" 1>&2
 else
   cat > conftest.$ac_ext <<EOF
-#line 10956 "configure"
+#line 10897 "configure"
 #include "confdefs.h"
 #include "${srcdir-.}/tests/trivial.c"
 EOF
-if { (eval echo configure:10960: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:10901: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   echo "$ac_t""yes" 1>&6
 else
@@ -10970,7 +10911,7 @@ fi
 
 
 echo $ac_n "checking for ftruncate extend""... $ac_c" 1>&6
-echo "configure:10974: checking for ftruncate extend" >&5
+echo "configure:10915: checking for ftruncate extend" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_FTRUNCATE_EXTEND'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -10979,11 +10920,11 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_FTRUNCATE_EXTEND=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 10983 "configure"
+#line 10924 "configure"
 #include "confdefs.h"
 #include "${srcdir-.}/tests/ftruncate.c"
 EOF
-if { (eval echo configure:10987: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:10928: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_FTRUNCATE_EXTEND=yes
 else
@@ -11006,7 +10947,7 @@ EOF
 fi
 
 echo $ac_n "checking for AF_LOCAL socket support""... $ac_c" 1>&6
-echo "configure:11010: checking for AF_LOCAL socket support" >&5
+echo "configure:10951: checking for AF_LOCAL socket support" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_WORKING_AF_LOCAL'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -11015,11 +10956,11 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_WORKING_AF_LOCAL=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 11019 "configure"
+#line 10960 "configure"
 #include "confdefs.h"
 #include "${srcdir-.}/tests/unixsock.c"
 EOF
-if { (eval echo configure:11023: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:10964: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_WORKING_AF_LOCAL=yes
 else
@@ -11043,7 +10984,7 @@ EOF
 fi
 
 echo $ac_n "checking for broken getgroups""... $ac_c" 1>&6
-echo "configure:11047: checking for broken getgroups" >&5
+echo "configure:10988: checking for broken getgroups" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_BROKEN_GETGROUPS'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -11052,11 +10993,11 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_BROKEN_GETGROUPS=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 11056 "configure"
+#line 10997 "configure"
 #include "confdefs.h"
 #include "${srcdir-.}/tests/getgroups.c"
 EOF
-if { (eval echo configure:11060: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11001: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_BROKEN_GETGROUPS=yes
 else
@@ -11079,7 +11020,7 @@ EOF
 fi
 
 echo $ac_n "checking whether getpass should be replaced""... $ac_c" 1>&6
-echo "configure:11083: checking whether getpass should be replaced" >&5
+echo "configure:11024: checking whether getpass should be replaced" >&5
 if eval "test \"`echo '$''{'samba_cv_REPLACE_GETPASS'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -11087,7 +11028,7 @@ else
 SAVE_CPPFLAGS="$CPPFLAGS"
 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper"
 cat > conftest.$ac_ext <<EOF
-#line 11091 "configure"
+#line 11032 "configure"
 #include "confdefs.h"
 
 #define REPLACE_GETPASS 1
@@ -11100,7 +11041,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:11104: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11045: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_REPLACE_GETPASS=yes
 else
@@ -11123,7 +11064,7 @@ EOF
 fi
 
 echo $ac_n "checking for broken inet_ntoa""... $ac_c" 1>&6
-echo "configure:11127: checking for broken inet_ntoa" >&5
+echo "configure:11068: checking for broken inet_ntoa" >&5
 if eval "test \"`echo '$''{'samba_cv_REPLACE_INET_NTOA'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -11132,7 +11073,7 @@ if test "$cross_compiling" = yes; then
   samba_cv_REPLACE_INET_NTOA=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 11136 "configure"
+#line 11077 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -11146,7 +11087,7 @@ if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
 exit(1);}
 EOF
-if { (eval echo configure:11150: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_REPLACE_INET_NTOA=yes
 else
@@ -11169,7 +11110,7 @@ EOF
 fi
 
 echo $ac_n "checking for secure mkstemp""... $ac_c" 1>&6
-echo "configure:11173: checking for secure mkstemp" >&5
+echo "configure:11114: checking for secure mkstemp" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_SECURE_MKSTEMP'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -11178,7 +11119,7 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_SECURE_MKSTEMP=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 11182 "configure"
+#line 11123 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <sys/types.h>
@@ -11195,7 +11136,7 @@ main() {
   exit(0);
 }
 EOF
-if { (eval echo configure:11199: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11140: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_SECURE_MKSTEMP=yes
 else
@@ -11218,7 +11159,7 @@ EOF
 fi
 
 echo $ac_n "checking for sysconf(_SC_NGROUPS_MAX)""... $ac_c" 1>&6
-echo "configure:11222: checking for sysconf(_SC_NGROUPS_MAX)" >&5
+echo "configure:11163: checking for sysconf(_SC_NGROUPS_MAX)" >&5
 if eval "test \"`echo '$''{'samba_cv_SYSCONF_SC_NGROUPS_MAX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -11227,12 +11168,12 @@ if test "$cross_compiling" = yes; then
   samba_cv_SYSCONF_SC_NGROUPS_MAX=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 11231 "configure"
+#line 11172 "configure"
 #include "confdefs.h"
 #include <unistd.h>
 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }
 EOF
-if { (eval echo configure:11236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11177: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_SYSCONF_SC_NGROUPS_MAX=yes
 else
@@ -11255,7 +11196,7 @@ EOF
 fi
 
 echo $ac_n "checking for root""... $ac_c" 1>&6
-echo "configure:11259: checking for root" >&5
+echo "configure:11200: checking for root" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_ROOT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -11264,11 +11205,11 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_ROOT=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 11268 "configure"
+#line 11209 "configure"
 #include "confdefs.h"
 main() { exit(getuid() != 0); }
 EOF
-if { (eval echo configure:11272: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11213: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_ROOT=yes
 else
@@ -11296,7 +11237,7 @@ fi
 # look for a method of finding the list of network interfaces
 iface=no;
 echo $ac_n "checking for iface AIX""... $ac_c" 1>&6
-echo "configure:11300: checking for iface AIX" >&5
+echo "configure:11241: checking for iface AIX" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_IFACE_AIX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -11305,7 +11246,7 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_IFACE_AIX=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 11309 "configure"
+#line 11250 "configure"
 #include "confdefs.h"
 
 #define HAVE_IFACE_AIX 1
@@ -11313,7 +11254,7 @@ else
 #include "confdefs.h"
 #include "${srcdir-.}/lib/interfaces.c"
 EOF
-if { (eval echo configure:11317: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11258: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_IFACE_AIX=yes
 else
@@ -11337,7 +11278,7 @@ fi
 
 if test $iface = no; then
 echo $ac_n "checking for iface ifconf""... $ac_c" 1>&6
-echo "configure:11341: checking for iface ifconf" >&5
+echo "configure:11282: checking for iface ifconf" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_IFACE_IFCONF'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -11346,7 +11287,7 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_IFACE_IFCONF=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 11350 "configure"
+#line 11291 "configure"
 #include "confdefs.h"
 
 #define HAVE_IFACE_IFCONF 1
@@ -11354,7 +11295,7 @@ else
 #include "confdefs.h"
 #include "${srcdir-.}/lib/interfaces.c"
 EOF
-if { (eval echo configure:11358: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11299: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_IFACE_IFCONF=yes
 else
@@ -11379,7 +11320,7 @@ fi
 
 if test $iface = no; then
 echo $ac_n "checking for iface ifreq""... $ac_c" 1>&6
-echo "configure:11383: checking for iface ifreq" >&5
+echo "configure:11324: checking for iface ifreq" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_IFACE_IFREQ'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -11388,7 +11329,7 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_IFACE_IFREQ=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 11392 "configure"
+#line 11333 "configure"
 #include "confdefs.h"
 
 #define HAVE_IFACE_IFREQ 1
@@ -11396,7 +11337,7 @@ else
 #include "confdefs.h"
 #include "${srcdir-.}/lib/interfaces.c"
 EOF
-if { (eval echo configure:11400: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11341: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_IFACE_IFREQ=yes
 else
@@ -11425,7 +11366,7 @@ fi
 seteuid=no;
 if test $seteuid = no; then
 echo $ac_n "checking for setresuid""... $ac_c" 1>&6
-echo "configure:11429: checking for setresuid" >&5
+echo "configure:11370: checking for setresuid" >&5
 if eval "test \"`echo '$''{'samba_cv_USE_SETRESUID'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -11434,7 +11375,7 @@ if test "$cross_compiling" = yes; then
   samba_cv_USE_SETRESUID=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 11438 "configure"
+#line 11379 "configure"
 #include "confdefs.h"
 
 #define AUTOCONF_TEST 1
@@ -11442,7 +11383,7 @@ else
 #include "confdefs.h"
 #include "${srcdir-.}/lib/util_sec.c"
 EOF
-if { (eval echo configure:11446: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11387: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_USE_SETRESUID=yes
 else
@@ -11468,7 +11409,7 @@ fi
 
 if test $seteuid = no; then
 echo $ac_n "checking for setreuid""... $ac_c" 1>&6
-echo "configure:11472: checking for setreuid" >&5
+echo "configure:11413: checking for setreuid" >&5
 if eval "test \"`echo '$''{'samba_cv_USE_SETREUID'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -11477,7 +11418,7 @@ if test "$cross_compiling" = yes; then
   samba_cv_USE_SETREUID=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 11481 "configure"
+#line 11422 "configure"
 #include "confdefs.h"
 
 #define AUTOCONF_TEST 1
@@ -11485,7 +11426,7 @@ else
 #include "confdefs.h"
 #include "${srcdir-.}/lib/util_sec.c"
 EOF
-if { (eval echo configure:11489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11430: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_USE_SETREUID=yes
 else
@@ -11510,7 +11451,7 @@ fi
 
 if test $seteuid = no; then
 echo $ac_n "checking for seteuid""... $ac_c" 1>&6
-echo "configure:11514: checking for seteuid" >&5
+echo "configure:11455: checking for seteuid" >&5
 if eval "test \"`echo '$''{'samba_cv_USE_SETEUID'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -11519,7 +11460,7 @@ if test "$cross_compiling" = yes; then
   samba_cv_USE_SETEUID=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 11523 "configure"
+#line 11464 "configure"
 #include "confdefs.h"
 
 #define AUTOCONF_TEST 1
@@ -11527,7 +11468,7 @@ else
 #include "confdefs.h"
 #include "${srcdir-.}/lib/util_sec.c"
 EOF
-if { (eval echo configure:11531: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11472: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_USE_SETEUID=yes
 else
@@ -11552,7 +11493,7 @@ fi
 
 if test $seteuid = no; then
 echo $ac_n "checking for setuidx""... $ac_c" 1>&6
-echo "configure:11556: checking for setuidx" >&5
+echo "configure:11497: checking for setuidx" >&5
 if eval "test \"`echo '$''{'samba_cv_USE_SETUIDX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -11561,7 +11502,7 @@ if test "$cross_compiling" = yes; then
   samba_cv_USE_SETUIDX=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 11565 "configure"
+#line 11506 "configure"
 #include "confdefs.h"
 
 #define AUTOCONF_TEST 1
@@ -11569,7 +11510,7 @@ else
 #include "confdefs.h"
 #include "${srcdir-.}/lib/util_sec.c"
 EOF
-if { (eval echo configure:11573: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_USE_SETUIDX=yes
 else
@@ -11594,7 +11535,7 @@ fi
 
 
 echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:11598: checking for working mmap" >&5
+echo "configure:11539: checking for working mmap" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_MMAP'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -11603,11 +11544,11 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_MMAP=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 11607 "configure"
+#line 11548 "configure"
 #include "confdefs.h"
 #include "${srcdir-.}/tests/shared_mmap.c"
 EOF
-if { (eval echo configure:11611: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11552: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_MMAP=yes
 else
@@ -11630,7 +11571,7 @@ EOF
 fi
 
 echo $ac_n "checking for ftruncate needs root""... $ac_c" 1>&6
-echo "configure:11634: checking for ftruncate needs root" >&5
+echo "configure:11575: checking for ftruncate needs root" >&5
 if eval "test \"`echo '$''{'samba_cv_FTRUNCATE_NEEDS_ROOT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -11639,11 +11580,11 @@ if test "$cross_compiling" = yes; then
   samba_cv_FTRUNCATE_NEEDS_ROOT=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 11643 "configure"
+#line 11584 "configure"
 #include "confdefs.h"
 #include "${srcdir-.}/tests/ftruncroot.c"
 EOF
-if { (eval echo configure:11647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11588: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_FTRUNCATE_NEEDS_ROOT=yes
 else
@@ -11666,7 +11607,7 @@ EOF
 fi
 
 echo $ac_n "checking for fcntl locking""... $ac_c" 1>&6
-echo "configure:11670: checking for fcntl locking" >&5
+echo "configure:11611: checking for fcntl locking" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_FCNTL_LOCK'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -11675,11 +11616,11 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_FCNTL_LOCK=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 11679 "configure"
+#line 11620 "configure"
 #include "confdefs.h"
 #include "${srcdir-.}/tests/fcntl_lock.c"
 EOF
-if { (eval echo configure:11683: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11624: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_FCNTL_LOCK=yes
 else
@@ -11702,7 +11643,7 @@ EOF
 fi
 
 echo $ac_n "checking for broken (glibc2.1/x86) 64 bit fcntl locking""... $ac_c" 1>&6
-echo "configure:11706: checking for broken (glibc2.1/x86) 64 bit fcntl locking" >&5
+echo "configure:11647: checking for broken (glibc2.1/x86) 64 bit fcntl locking" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_BROKEN_FCNTL64_LOCKS'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -11711,11 +11652,11 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 11715 "configure"
+#line 11656 "configure"
 #include "confdefs.h"
 #include "${srcdir-.}/tests/fcntl_lock64.c"
 EOF
-if { (eval echo configure:11719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11660: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes
 else
@@ -11740,7 +11681,7 @@ else
 
 
   echo $ac_n "checking for 64 bit fcntl locking""... $ac_c" 1>&6
-echo "configure:11744: checking for 64 bit fcntl locking" >&5
+echo "configure:11685: checking for 64 bit fcntl locking" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_STRUCT_FLOCK64'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -11749,7 +11690,7 @@ else
   samba_cv_HAVE_STRUCT_FLOCK64=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 11753 "configure"
+#line 11694 "configure"
 #include "confdefs.h"
 
 #if defined(HAVE_UNISTD_H)
@@ -11773,7 +11714,7 @@ exit(1);
 #endif
 }
 EOF
-if { (eval echo configure:11777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11718: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_STRUCT_FLOCK64=yes
 else
@@ -11798,13 +11739,13 @@ EOF
 fi
 
 echo $ac_n "checking for st_blocks in struct stat""... $ac_c" 1>&6
-echo "configure:11802: checking for st_blocks in struct stat" >&5
+echo "configure:11743: checking for st_blocks in struct stat" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_STAT_ST_BLOCKS'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 11808 "configure"
+#line 11749 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -11813,7 +11754,7 @@ int main() {
 struct stat st;  st.st_blocks = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:11817: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11758: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_HAVE_STAT_ST_BLOCKS=yes
 else
@@ -11833,52 +11774,16 @@ EOF
 
 fi 
 
-echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6
-echo "configure:11838: checking for st_blksize in struct stat" >&5
-if eval "test \"`echo '$''{'samba_cv_HAVE_STAT_ST_BLKSIZE'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-cat > conftest.$ac_ext <<EOF
-#line 11844 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-int main() {
-struct stat st;  st.st_blksize = 0;
-; return 0; }
-EOF
-if { (eval echo configure:11853: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  samba_cv_HAVE_STAT_ST_BLKSIZE=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  samba_cv_HAVE_STAT_ST_BLKSIZE=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$samba_cv_HAVE_STAT_ST_BLKSIZE" 1>&6
-if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
-    cat >> confdefs.h <<\EOF
-#define HAVE_STAT_ST_BLKSIZE 1
-EOF
-
-fi
-
 case "$host_os" in
 *linux*)
 echo $ac_n "checking for broken RedHat 7.2 system header files""... $ac_c" 1>&6
-echo "configure:11876: checking for broken RedHat 7.2 system header files" >&5
+echo "configure:11781: checking for broken RedHat 7.2 system header files" >&5
 if eval "test \"`echo '$''{'samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 11882 "configure"
+#line 11787 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_SYS_VFS_H
@@ -11892,7 +11797,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:11896: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11801: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no
 else
 esac
 
 echo $ac_n "checking for broken nisplus include files""... $ac_c" 1>&6
-echo "configure:11919: checking for broken nisplus include files" >&5
+echo "configure:11824: checking for broken nisplus include files" >&5
 if eval "test \"`echo '$''{'samba_cv_BROKEN_NISPLUS_INCLUDE_FILES'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 11925 "configure"
+#line 11830 "configure"
 #include "confdefs.h"
 #include <sys/acl.h>
 #if defined(HAVE_RPCSVC_NIS_H)
@@ -11931,7 +11836,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:11935: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11840: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no
 else
@@ -11955,7 +11860,7 @@ fi
 #################################################
 # check for smbwrapper support
 echo $ac_n "checking whether to use smbwrapper""... $ac_c" 1>&6
-echo "configure:11959: checking whether to use smbwrapper" >&5
+echo "configure:11864: checking whether to use smbwrapper" >&5
 # Check whether --with-smbwrapper or --without-smbwrapper was given.
 if test "${with_smbwrapper+set}" = set; then
   withval="$with_smbwrapper"
@@ -12002,7 +11907,7 @@ fi
 #################################################
 # check for AFS clear-text auth support
 echo $ac_n "checking whether to use AFS clear-text auth""... $ac_c" 1>&6
-echo "configure:12006: checking whether to use AFS clear-text auth" >&5
+echo "configure:11911: checking whether to use AFS clear-text auth" >&5
 # Check whether --with-afs or --without-afs was given.
 if test "${with_afs+set}" = set; then
   withval="$with_afs"
@@ -12028,7 +11933,7 @@ fi
 #################################################
 # check for the DFS clear-text auth system
 echo $ac_n "checking whether to use DFS clear-text auth""... $ac_c" 1>&6
-echo "configure:12032: checking whether to use DFS clear-text auth" >&5
+echo "configure:11937: checking whether to use DFS clear-text auth" >&5
 # Check whether --with-dfs or --without-dfs was given.
 if test "${with_dfs+set}" = set; then
   withval="$with_dfs"
@@ -12050,68 +11955,11 @@ else
 fi
 
 
-#################################################
-# active directory support
-
-with_ads_support=yes
-echo $ac_n "checking whether to use Active Directory""... $ac_c" 1>&6
-echo "configure:12059: checking whether to use Active Directory" >&5
-
-# Check whether --with-ads or --without-ads was given.
-if test "${with_ads+set}" = set; then
-  withval="$with_ads"
-   case "$withval" in
-    no)
-       with_ads_support=no
-       ;;
-  esac 
-fi
-
-
-if test x"$with_ads_support" = x"yes"; then
-   cat >> confdefs.h <<\EOF
-#define WITH_ADS 1
-EOF
-
-fi
-
-echo "$ac_t""$with_ads_support" 1>&6
-
-FOUND_KRB5=no
-if test x"$with_ads_support" = x"yes"; then
 
-  #################################################
-  # check for location of Kerberos 5 install
-  echo $ac_n "checking for kerberos 5 install path""... $ac_c" 1>&6
-echo "configure:12087: checking for kerberos 5 install path" >&5
-  # Check whether --with-krb5 or --without-krb5 was given.
-if test "${with_krb5+set}" = set; then
-  withval="$with_krb5"
-   case "$withval" in
-    no)
-      echo "$ac_t""no" 1>&6
-      ;;
-    *)
-      echo "$ac_t""yes" 1>&6
-      LIBS="$LIBS -lkrb5"
-      CFLAGS="$CFLAGS -I$withval/include"
-      CPPFLAGS="$CPPFLAGS -I$withval/include"
-      LDFLAGS="$LDFLAGS -L$withval/lib"
-      FOUND_KRB5=yes
-      ;;
-    esac 
-else
-  echo "$ac_t""no" 1>&6
-  
-fi
-
-
-
-if test x$FOUND_KRB5 = x"no"; then
 #################################################
 # see if this box has the RedHat location for kerberos
 echo $ac_n "checking for /usr/kerberos""... $ac_c" 1>&6
-echo "configure:12115: checking for /usr/kerberos" >&5
+echo "configure:11963: checking for /usr/kerberos" >&5
 if test -d /usr/kerberos; then
     LDFLAGS="$LDFLAGS -L/usr/kerberos/lib"
     CFLAGS="$CFLAGS -I/usr/kerberos/include"
@@ -12120,27 +11968,50 @@ if test -d /usr/kerberos; then
 else
     echo "$ac_t""no" 1>&6
 fi
+
+#################################################
+# check for location of Kerberos 5 install
+echo $ac_n "checking for kerberos 5 install path""... $ac_c" 1>&6
+echo "configure:11976: checking for kerberos 5 install path" >&5
+# Check whether --with-krb5 or --without-krb5 was given.
+if test "${with_krb5+set}" = set; then
+  withval="$with_krb5"
+   case "$withval" in
+  no)
+    echo "$ac_t""no" 1>&6
+    ;;
+  *)
+    echo "$ac_t""yes" 1>&6
+    LIBS="$LIBS -lkrb5"
+    CFLAGS="$CFLAGS -I$withval/include"
+    CPPFLAGS="$CPPFLAGS -I$withval/include"
+    LDFLAGS="$LDFLAGS -L$withval/lib"
+    ;;
+  esac 
+else
+  echo "$ac_t""no" 1>&6
+
 fi
 
 
-  # now check for krb5.h. Some systems have the libraries without the headers!
-  # note that this check is done here to allow for different kerberos
-  # include paths
-  for ac_hdr in krb5.h
+# now check for krb5.h. Some systems have the libraries without the headers!
+# note that this check is done here to allow for different kerberos
+# include paths
+for ac_hdr in krb5.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:12134: checking for $ac_hdr" >&5
+echo "configure:12005: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 12139 "configure"
+#line 12010 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12144: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12015: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 done
 
 
-  # now check for gssapi headers.  This is also done here to allow for
-  # different kerberos include paths
-  for ac_hdr in gssapi/gssapi_generic.h gssapi/gssapi.h
+# now check for gssapi headers.  This is also done here to allow for
+# different kerberos include paths
+for ac_hdr in gssapi/gssapi_generic.h gssapi/gssapi.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:12177: checking for $ac_hdr" >&5
+echo "configure:12048: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 12182 "configure"
+#line 12053 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12187: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12058: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 done
 
 
-  ##################################################################
-  # we might need the k5crypto and com_err libraries on some systems
-  echo $ac_n "checking for _et_list in -lcom_err""... $ac_c" 1>&6
-echo "configure:12217: checking for _et_list in -lcom_err" >&5
+##################################################################
+# we might need the k5crypto and com_err libraries on some systems
+echo $ac_n "checking for _et_list in -lcom_err""... $ac_c" 1>&6
+echo "configure:12088: checking for _et_list in -lcom_err" >&5
 ac_lib_var=`echo com_err'_'_et_list | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -12221,7 +12092,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lcom_err  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 12225 "configure"
+#line 12096 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -12232,7 +12103,7 @@ int main() {
 _et_list()
 ; return 0; }
 EOF
-if { (eval echo configure:12236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12252,8 +12123,8 @@ else
   echo "$ac_t""no" 1>&6
 fi
 
-  echo $ac_n "checking for krb5_encrypt_data in -lk5crypto""... $ac_c" 1>&6
-echo "configure:12257: checking for krb5_encrypt_data in -lk5crypto" >&5
+echo $ac_n "checking for krb5_encrypt_data in -lk5crypto""... $ac_c" 1>&6
+echo "configure:12128: checking for krb5_encrypt_data in -lk5crypto" >&5
 ac_lib_var=`echo k5crypto'_'krb5_encrypt_data | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -12261,7 +12132,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lk5crypto  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 12265 "configure"
+#line 12136 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -12272,7 +12143,7 @@ int main() {
 krb5_encrypt_data()
 ; return 0; }
 EOF
-if { (eval echo configure:12276: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12147: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12293,11 +12164,11 @@ else
 fi
 
 
-  ########################################################
-  # now see if we can find the krb5 libs in standard paths
-  # or as specified above
-  echo $ac_n "checking for krb5_mk_req_extended in -lkrb5""... $ac_c" 1>&6
-echo "configure:12301: checking for krb5_mk_req_extended in -lkrb5" >&5
+########################################################
+# now see if we can find the krb5 libs in standard paths
+# or as specified above
+echo $ac_n "checking for krb5_mk_req_extended in -lkrb5""... $ac_c" 1>&6
+echo "configure:12172: checking for krb5_mk_req_extended in -lkrb5" >&5
 ac_lib_var=`echo krb5'_'krb5_mk_req_extended | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -12305,7 +12176,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lkrb5  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 12309 "configure"
+#line 12180 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -12316,7 +12187,7 @@ int main() {
 krb5_mk_req_extended()
 ; return 0; }
 EOF
-if { (eval echo configure:12320: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12191: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12341,10 +12212,10 @@ else
 fi
 
 
-  ########################################################
-  # now see if we can find the gssapi libs in standard paths
-  echo $ac_n "checking for gss_display_status in -lgssapi_krb5""... $ac_c" 1>&6
-echo "configure:12348: checking for gss_display_status in -lgssapi_krb5" >&5
+########################################################
+# now see if we can find the gssapi libs in standard paths
+echo $ac_n "checking for gss_display_status in -lgssapi_krb5""... $ac_c" 1>&6
+echo "configure:12219: checking for gss_display_status in -lgssapi_krb5" >&5
 ac_lib_var=`echo gssapi_krb5'_'gss_display_status | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -12352,7 +12223,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lgssapi_krb5  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 12356 "configure"
+#line 12227 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -12363,7 +12234,7 @@ int main() {
 gss_display_status()
 ; return 0; }
 EOF
-if { (eval echo configure:12367: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12238: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12387,35 +12258,12 @@ else
   echo "$ac_t""no" 1>&6
 fi
 
-fi
-
-########################################################
-# Compile with LDAP support?
-
-with_ldap_support=yes
-echo $ac_n "checking whether to use LDAP""... $ac_c" 1>&6
-echo "configure:12398: checking whether to use LDAP" >&5
 
-# Check whether --with-ldap or --without-ldap was given.
-if test "${with_ldap+set}" = set; then
-  withval="$with_ldap"
-   case "$withval" in
-    no)
-       with_ldap_support=no
-       ;;
-  esac 
-fi
-
-
-echo "$ac_t""$with_ldap_support" 1>&6
-
-if test x"$with_ldap_support" = x"yes"; then
-
-  ##################################################################
-  # we might need the lber lib on some systems. To avoid link errors
-  # this test must be before the libldap test
-  echo $ac_n "checking for ber_scanf in -llber""... $ac_c" 1>&6
-echo "configure:12419: checking for ber_scanf in -llber" >&5
+##################################################################
+# we might need the lber lib on some systems. To avoid link errors
+# this test must be before the libldap test
+echo $ac_n "checking for ber_scanf in -llber""... $ac_c" 1>&6
+echo "configure:12267: checking for ber_scanf in -llber" >&5
 ac_lib_var=`echo lber'_'ber_scanf | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -12423,7 +12271,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-llber  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 12427 "configure"
+#line 12275 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -12434,7 +12282,7 @@ int main() {
 ber_scanf()
 ; return 0; }
 EOF
-if { (eval echo configure:12438: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12455,11 +12303,11 @@ else
 fi
 
 
-  ########################################################
-  # now see if we can find the ldap libs in standard paths
-  if test x$have_ldap != xyes; then
-  echo $ac_n "checking for ldap_domain2hostlist in -lldap""... $ac_c" 1>&6
-echo "configure:12463: checking for ldap_domain2hostlist in -lldap" >&5
+########################################################
+# now see if we can find the ldap libs in standard paths
+if test x$have_ldap != xyes; then
+echo $ac_n "checking for ldap_domain2hostlist in -lldap""... $ac_c" 1>&6
+echo "configure:12311: checking for ldap_domain2hostlist in -lldap" >&5
 ac_lib_var=`echo ldap'_'ldap_domain2hostlist | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -12467,7 +12315,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lldap  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 12471 "configure"
+#line 12319 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -12478,7 +12326,7 @@ int main() {
 ldap_domain2hostlist()
 ; return 0; }
 EOF
-if { (eval echo configure:12482: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
        for ac_func in ldap_set_rebind_proc
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12513: checking for $ac_func" >&5
+echo "configure:12361: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 12518 "configure"
+#line 12366 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -12537,7 +12385,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:12541: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12389: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
 done
 
        echo $ac_n "checking whether ldap_set_rebind_proc takes 3 arguments""... $ac_c" 1>&6
-echo "configure:12566: checking whether ldap_set_rebind_proc takes 3 arguments" >&5
+echo "configure:12414: checking whether ldap_set_rebind_proc takes 3 arguments" >&5
 if eval "test \"`echo '$''{'pam_ldap_cv_ldap_set_rebind_proc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 12572 "configure"
+#line 12420 "configure"
 #include "confdefs.h"
 
        #include <lber.h>
@@ -12577,7 +12425,7 @@ int main() {
 ldap_set_rebind_proc(0, 0, 0);
 ; return 0; }
 EOF
-if { (eval echo configure:12581: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12429: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   pam_ldap_cv_ldap_set_rebind_proc=3
 else
@@ -12594,13 +12442,12 @@ echo "$ac_t""$pam_ldap_cv_ldap_set_rebind_proc" 1>&6
 #define LDAP_SET_REBIND_PROC_ARGS $pam_ldap_cv_ldap_set_rebind_proc
 EOF
 
-  fi
 fi
 
 #################################################
 # check for automount support
 echo $ac_n "checking whether to use AUTOMOUNT""... $ac_c" 1>&6
-echo "configure:12604: checking whether to use AUTOMOUNT" >&5
+echo "configure:12451: checking whether to use AUTOMOUNT" >&5
 # Check whether --with-automount or --without-automount was given.
 if test "${with_automount+set}" = set; then
   withval="$with_automount"
@@ -12625,7 +12472,7 @@ fi
 #################################################
 # check for smbmount support
 echo $ac_n "checking whether to use SMBMOUNT""... $ac_c" 1>&6
-echo "configure:12629: checking whether to use SMBMOUNT" >&5
+echo "configure:12476: checking whether to use SMBMOUNT" >&5
 # Check whether --with-smbmount or --without-smbmount was given.
 if test "${with_smbmount+set}" = set; then
   withval="$with_smbmount"
@@ -12662,7 +12509,7 @@ fi
 # check for a PAM clear-text auth, accounts, password and session support
 with_pam_for_crypt=no
 echo $ac_n "checking whether to use PAM""... $ac_c" 1>&6
-echo "configure:12666: checking whether to use PAM" >&5
+echo "configure:12513: checking whether to use PAM" >&5
 # Check whether --with-pam or --without-pam was given.
 if test "${with_pam+set}" = set; then
   withval="$with_pam"
@@ -12688,7 +12535,7 @@ fi
 
 # we can't build a pam module if we don't have pam.
 echo $ac_n "checking for pam_get_data in -lpam""... $ac_c" 1>&6
-echo "configure:12692: checking for pam_get_data in -lpam" >&5
+echo "configure:12539: checking for pam_get_data in -lpam" >&5
 ac_lib_var=`echo pam'_'pam_get_data | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -12696,7 +12543,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lpam  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 12700 "configure"
+#line 12547 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -12707,7 +12554,7 @@ int main() {
 pam_get_data()
 ; return 0; }
 EOF
-if { (eval echo configure:12711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12734,7 +12581,7 @@ fi
 #################################################
 # check for pam_smbpass support
 echo $ac_n "checking whether to use pam_smbpass""... $ac_c" 1>&6
-echo "configure:12738: checking whether to use pam_smbpass" >&5
+echo "configure:12585: checking whether to use pam_smbpass" >&5
 # Check whether --with-pam_smbpass or --without-pam_smbpass was given.
 if test "${with_pam_smbpass+set}" = set; then
   withval="$with_pam_smbpass"
 ###############################################
 # test for where we get crypt() from, but only
 # if not using PAM
-if test x"$with_pam_for_crypt" = x"no"; then
+if test $with_pam_for_crypt = no; then
 for ac_func in crypt
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12776: checking for $ac_func" >&5
+echo "configure:12623: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 12781 "configure"
+#line 12628 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -12800,7 +12647,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:12804: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12651: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -12826,7 +12673,7 @@ done
 
 if test x"$ac_cv_func_crypt" = x"no"; then
     echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:12830: checking for crypt in -lcrypt" >&5
+echo "configure:12677: checking for crypt in -lcrypt" >&5
 ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -12834,7 +12681,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lcrypt  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 12838 "configure"
+#line 12685 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -12845,7 +12692,7 @@ int main() {
 crypt()
 ; return 0; }
 EOF
-if { (eval echo configure:12849: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12696: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12880,7 +12727,7 @@ fi
 ##
 if test $with_pam_for_crypt = no; then
 echo $ac_n "checking for a crypt that needs truncated salt""... $ac_c" 1>&6
-echo "configure:12884: checking for a crypt that needs truncated salt" >&5
+echo "configure:12731: checking for a crypt that needs truncated salt" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_TRUNCATED_SALT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -12889,11 +12736,11 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_TRUNCATED_SALT=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 12893 "configure"
+#line 12740 "configure"
 #include "confdefs.h"
 #include "${srcdir-.}/tests/crypttest.c"
 EOF
-if { (eval echo configure:12897: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:12744: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_TRUNCATED_SALT=no
 else
@@ -12916,30 +12763,6 @@ EOF
 fi
 fi
 
-# New experimental SAM system
-
-echo $ac_n "checking whether to build the new (experimental) SAM database""... $ac_c" 1>&6
-echo "configure:12923: checking whether to build the new (experimental) SAM database" >&5
-# Check whether --with-sam or --without-sam was given.
-if test "${with_sam+set}" = set; then
-  withval="$with_sam"
-   case "$withval" in
-  yes)
-    echo "$ac_t""yes" 1>&6
-    cat >> confdefs.h <<\EOF
-#define WITH_SAM 1
-EOF
-
-    ;;
-  *)
-    echo "$ac_t""no" 1>&6
-    ;;
-  esac 
-else
-  echo "$ac_t""no" 1>&6
-
-fi
-
 
 
 ########################################################################################
@@ -12951,7 +12774,7 @@ fi
 #################################################
 # check for a TDB password database
 echo $ac_n "checking whether to use TDB SAM database""... $ac_c" 1>&6
-echo "configure:12955: checking whether to use TDB SAM database" >&5
+echo "configure:12778: checking whether to use TDB SAM database" >&5
 # Check whether --with-tdbsam or --without-tdbsam was given.
 if test "${with_tdbsam+set}" = set; then
   withval="$with_tdbsam"
@@ -12976,7 +12799,7 @@ fi
 #################################################
 # check for a NISPLUS password database
 echo $ac_n "checking whether to use NISPLUS SAM database""... $ac_c" 1>&6
-echo "configure:12980: checking whether to use NISPLUS SAM database" >&5
+echo "configure:12803: checking whether to use NISPLUS SAM database" >&5
 # Check whether --with-nisplussam or --without-nisplussam was given.
 if test "${with_nisplussam+set}" = set; then
   withval="$with_nisplussam"
@@ -13007,7 +12830,7 @@ fi
 #################################################
 # check for a NISPLUS_HOME support 
 echo $ac_n "checking whether to use NISPLUS_HOME""... $ac_c" 1>&6
-echo "configure:13011: checking whether to use NISPLUS_HOME" >&5
+echo "configure:12834: checking whether to use NISPLUS_HOME" >&5
 # Check whether --with-nisplus-home or --without-nisplus-home was given.
 if test "${with_nisplus_home+set}" = set; then
   withval="$with_nisplus_home"
@@ -13032,7 +12855,7 @@ fi
 #################################################
 # check for syslog logging
 echo $ac_n "checking whether to use syslog logging""... $ac_c" 1>&6
-echo "configure:13036: checking whether to use syslog logging" >&5
+echo "configure:12859: checking whether to use syslog logging" >&5
 # Check whether --with-syslog or --without-syslog was given.
 if test "${with_syslog+set}" = set; then
   withval="$with_syslog"
@@ -13057,7 +12880,7 @@ fi
 #################################################
 # check for a shared memory profiling support
 echo $ac_n "checking whether to use profiling""... $ac_c" 1>&6
-echo "configure:13061: checking whether to use profiling" >&5
+echo "configure:12884: checking whether to use profiling" >&5
 # Check whether --with-profiling-data or --without-profiling-data was given.
 if test "${with_profiling_data+set}" = set; then
   withval="$with_profiling_data"
@@ -13085,7 +12908,7 @@ fi
 QUOTAOBJS=smbd/noquotas.o
 
 echo $ac_n "checking whether to support disk-quotas""... $ac_c" 1>&6
-echo "configure:13089: checking whether to support disk-quotas" >&5
+echo "configure:12912: checking whether to support disk-quotas" >&5
 # Check whether --with-quotas or --without-quotas was given.
 if test "${with_quotas+set}" = set; then
   withval="$with_quotas"
@@ -13096,13 +12919,13 @@ if test "${with_quotas+set}" = set; then
       *linux*)
         # Check for kernel 2.4.x quota braindamage...
         echo $ac_n "checking for linux 2.4.x quota braindamage..""... $ac_c" 1>&6
-echo "configure:13100: checking for linux 2.4.x quota braindamage.." >&5
+echo "configure:12923: checking for linux 2.4.x quota braindamage.." >&5
 if eval "test \"`echo '$''{'samba_cv_linux_2_4_quota_braindamage'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
         cat > conftest.$ac_ext <<EOF
-#line 13106 "configure"
+#line 12929 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <sys/types.h>
@@ -13114,7 +12937,7 @@ int main() {
 struct mem_dqblk D;
 ; return 0; }
 EOF
-if { (eval echo configure:13118: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12941: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_linux_2_4_quota_braindamage=yes
 else
@@ -13163,7 +12986,7 @@ fi
 # check for experimental utmp accounting
 
 echo $ac_n "checking whether to support utmp accounting""... $ac_c" 1>&6
-echo "configure:13167: checking whether to support utmp accounting" >&5
+echo "configure:12990: checking whether to support utmp accounting" >&5
 # Check whether --with-utmp or --without-utmp was given.
 if test "${with_utmp+set}" = set; then
   withval="$with_utmp"
@@ -13188,7 +13011,7 @@ fi
 #################################################
 # choose native language(s) of man pages
 echo $ac_n "checking chosen man pages' language(s)""... $ac_c" 1>&6
-echo "configure:13192: checking chosen man pages' language(s)" >&5
+echo "configure:13015: checking chosen man pages' language(s)" >&5
 # Check whether --with-manpages-langs or --without-manpages-langs was given.
 if test "${with_manpages_langs+set}" = set; then
   withval="$with_manpages_langs"
@@ -13219,7 +13042,7 @@ fi
 LIBSMBCLIENT_SHARED=
 LIBSMBCLIENT=
 echo $ac_n "checking whether to build the libsmbclient shared library""... $ac_c" 1>&6
-echo "configure:13223: checking whether to build the libsmbclient shared library" >&5
+echo "configure:13046: checking whether to build the libsmbclient shared library" >&5
 # Check whether --with-libsmbclient or --without-libsmbclient was given.
 if test "${with_libsmbclient+set}" = set; then
   withval="$with_libsmbclient"
 #################################################
 # these tests are taken from the GNU fileutils package
 echo "checking how to get filesystem space usage" 1>&6
-echo "configure:13251: checking how to get filesystem space usage" >&5
+echo "configure:13074: checking how to get filesystem space usage" >&5
 space=no
 
 # Test for statvfs64.
 if test $space = no; then
   # SVR4
   echo $ac_n "checking statvfs64 function (SVR4)""... $ac_c" 1>&6
-echo "configure:13258: checking statvfs64 function (SVR4)" >&5
+echo "configure:13081: checking statvfs64 function (SVR4)" >&5
 if eval "test \"`echo '$''{'fu_cv_sys_stat_statvfs64'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -13262,7 +13085,7 @@ else
   fu_cv_sys_stat_statvfs64=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 13266 "configure"
+#line 13089 "configure"
 #include "confdefs.h"
 
 #if defined(HAVE_UNISTD_H)
@@ -13276,7 +13099,7 @@ else
     exit (statvfs64 (".", &fsd));
   }
 EOF
-if { (eval echo configure:13280: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:13103: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   fu_cv_sys_stat_statvfs64=yes
 else
 if test $space = no; then
   # SVR4
   echo $ac_n "checking statvfs function (SVR4)""... $ac_c" 1>&6
-echo "configure:13313: checking statvfs function (SVR4)" >&5
+echo "configure:13136: checking statvfs function (SVR4)" >&5
 if eval "test \"`echo '$''{'fu_cv_sys_stat_statvfs'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 13318 "configure"
+#line 13141 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/statvfs.h>
@@ -13322,7 +13145,7 @@ int main() {
 struct statvfs fsd; statvfs (0, &fsd);
 ; return 0; }
 EOF
-if { (eval echo configure:13326: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   fu_cv_sys_stat_statvfs=yes
 else
@@ -13347,7 +13170,7 @@ fi
 if test $space = no; then
   # DEC Alpha running OSF/1
   echo $ac_n "checking for 3-argument statfs function (DEC OSF/1)""... $ac_c" 1>&6
-echo "configure:13351: checking for 3-argument statfs function (DEC OSF/1)" >&5
+echo "configure:13174: checking for 3-argument statfs function (DEC OSF/1)" >&5
   if eval "test \"`echo '$''{'fu_cv_sys_stat_statfs3_osf1'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -13355,7 +13178,7 @@ else
   fu_cv_sys_stat_statfs3_osf1=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 13359 "configure"
+#line 13182 "configure"
 #include "confdefs.h"
 
 #include <sys/param.h>
@@ -13368,7 +13191,7 @@ else
     exit (statfs (".", &fsd, sizeof (struct statfs)));
   }
 EOF
-if { (eval echo configure:13372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:13195: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   fu_cv_sys_stat_statfs3_osf1=yes
 else
@@ -13395,7 +13218,7 @@ fi
 if test $space = no; then
 # AIX
   echo $ac_n "checking for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)""... $ac_c" 1>&6
-echo "configure:13399: checking for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)" >&5
+echo "configure:13222: checking for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)" >&5
   if eval "test \"`echo '$''{'fu_cv_sys_stat_statfs2_bsize'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -13403,7 +13226,7 @@ else
   fu_cv_sys_stat_statfs2_bsize=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 13407 "configure"
+#line 13230 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_SYS_PARAM_H
@@ -13422,7 +13245,7 @@ else
   exit (statfs (".", &fsd));
   }
 EOF
-if { (eval echo configure:13426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:13249: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   fu_cv_sys_stat_statfs2_bsize=yes
 else
@@ -13449,7 +13272,7 @@ fi
 if test $space = no; then
 # SVR3
   echo $ac_n "checking for four-argument statfs (AIX-3.2.5, SVR3)""... $ac_c" 1>&6
-echo "configure:13453: checking for four-argument statfs (AIX-3.2.5, SVR3)" >&5
+echo "configure:13276: checking for four-argument statfs (AIX-3.2.5, SVR3)" >&5
   if eval "test \"`echo '$''{'fu_cv_sys_stat_statfs4'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -13457,7 +13280,7 @@ else
   fu_cv_sys_stat_statfs4=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 13461 "configure"
+#line 13284 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/statfs.h>
@@ -13467,7 +13290,7 @@ else
   exit (statfs (".", &fsd, sizeof fsd, 0));
   }
 EOF
-if { (eval echo configure:13471: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:13294: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   fu_cv_sys_stat_statfs4=yes
 else
@@ -13494,7 +13317,7 @@ fi
 if test $space = no; then
 # 4.4BSD and NetBSD
   echo $ac_n "checking for two-argument statfs with statfs.fsize member (4.4BSD and NetBSD)""... $ac_c" 1>&6
-echo "configure:13498: checking for two-argument statfs with statfs.fsize member (4.4BSD and NetBSD)" >&5
+echo "configure:13321: checking for two-argument statfs with statfs.fsize member (4.4BSD and NetBSD)" >&5
   if eval "test \"`echo '$''{'fu_cv_sys_stat_statfs2_fsize'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -13502,7 +13325,7 @@ else
   fu_cv_sys_stat_statfs2_fsize=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 13506 "configure"
+#line 13329 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #ifdef HAVE_SYS_PARAM_H
@@ -13518,7 +13341,7 @@ else
   exit (statfs (".", &fsd));
   }
 EOF
-if { (eval echo configure:13522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:13345: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   fu_cv_sys_stat_statfs2_fsize=yes
 else
@@ -13545,7 +13368,7 @@ fi
 if test $space = no; then
   # Ultrix
   echo $ac_n "checking for two-argument statfs with struct fs_data (Ultrix)""... $ac_c" 1>&6
-echo "configure:13549: checking for two-argument statfs with struct fs_data (Ultrix)" >&5
+echo "configure:13372: checking for two-argument statfs with struct fs_data (Ultrix)" >&5
   if eval "test \"`echo '$''{'fu_cv_sys_stat_fs_data'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -13553,7 +13376,7 @@ else
   fu_cv_sys_stat_fs_data=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 13557 "configure"
+#line 13380 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #ifdef HAVE_SYS_PARAM_H
@@ -13573,7 +13396,7 @@ else
   exit (statfs (".", &fsd) != 1);
   }
 EOF
-if { (eval echo configure:13577: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:13400: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   fu_cv_sys_stat_fs_data=yes
 else
@@ -13606,9 +13429,9 @@ fi
 # file support.
 #
 echo $ac_n "checking if large file support can be enabled""... $ac_c" 1>&6
-echo "configure:13610: checking if large file support can be enabled" >&5
+echo "configure:13433: checking if large file support can be enabled" >&5
 cat > conftest.$ac_ext <<EOF
-#line 13612 "configure"
+#line 13435 "configure"
 #include "confdefs.h"
 
 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
@@ -13621,7 +13444,7 @@ int main() {
 int i
 ; return 0; }
 EOF
-if { (eval echo configure:13625: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13448: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes
 else
@@ -13686,7 +13509,7 @@ fi
 # check for ACL support
 
 echo $ac_n "checking whether to support ACLs""... $ac_c" 1>&6
-echo "configure:13690: checking whether to support ACLs" >&5
+echo "configure:13513: checking whether to support ACLs" >&5
 # Check whether --with-acl-support or --without-acl-support was given.
 if test "${with_acl_support+set}" = set; then
   withval="$with_acl_support"
@@ -13739,7 +13562,7 @@ EOF
                ;;
         *)
                echo $ac_n "checking for acl_get_file in -lacl""... $ac_c" 1>&6
-echo "configure:13743: checking for acl_get_file in -lacl" >&5
+echo "configure:13566: checking for acl_get_file in -lacl" >&5
 ac_lib_var=`echo acl'_'acl_get_file | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -13747,7 +13570,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lacl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 13751 "configure"
+#line 13574 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13758,7 +13581,7 @@ int main() {
 acl_get_file()
 ; return 0; }
 EOF
-if { (eval echo configure:13762: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13585: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -13786,13 +13609,13 @@ else
 fi
 
                echo $ac_n "checking for ACL support""... $ac_c" 1>&6
-echo "configure:13790: checking for ACL support" >&5
+echo "configure:13613: checking for ACL support" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_POSIX_ACLS'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
                cat > conftest.$ac_ext <<EOF
-#line 13796 "configure"
+#line 13619 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/acl.h>
@@ -13800,7 +13623,7 @@ int main() {
  acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);
 ; return 0; }
 EOF
-if { (eval echo configure:13804: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13627: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   samba_cv_HAVE_POSIX_ACLS=yes
 else
@@ -13820,13 +13643,13 @@ echo "$ac_t""$samba_cv_HAVE_POSIX_ACLS" 1>&6
 EOF
 
                                echo $ac_n "checking for acl_get_perm_np""... $ac_c" 1>&6
-echo "configure:13824: checking for acl_get_perm_np" >&5
+echo "configure:13647: checking for acl_get_perm_np" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_ACL_GET_PERM_NP'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
                                cat > conftest.$ac_ext <<EOF
-#line 13830 "configure"
+#line 13653 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/acl.h>
@@ -13834,7 +13657,7 @@ int main() {
  acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);
 ; return 0; }
 EOF
-if { (eval echo configure:13838: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13661: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   samba_cv_HAVE_ACL_GET_PERM_NP=yes
 else
 fi
 
 
-#################################################
-# check for sendfile support
-
-echo $ac_n "checking whether to support sendfile""... $ac_c" 1>&6
-echo "configure:13883: checking whether to support sendfile" >&5
-# Check whether --with-sendfile-support or --without-sendfile-support was given.
-if test "${with_sendfile_support+set}" = set; then
-  withval="$with_sendfile_support"
-   case "$withval" in
-  yes)
-
-       case "$host_os" in
-       *linux*)
-               echo $ac_n "checking for linux sendfile64 support""... $ac_c" 1>&6
-echo "configure:13893: checking for linux sendfile64 support" >&5
-if eval "test \"`echo '$''{'samba_cv_HAVE_SENDFILE64'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-               cat > conftest.$ac_ext <<EOF
-#line 13899 "configure"
-#include "confdefs.h"
-#include <sys/sendfile.h>
-int main() {
-\
-int tofd, fromfd;
-off64_t offset;
-size_t total;
-ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
-
-; return 0; }
-EOF
-if { (eval echo configure:13911: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  samba_cv_HAVE_SENDFILE64=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  samba_cv_HAVE_SENDFILE64=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$samba_cv_HAVE_SENDFILE64" 1>&6
-
-               echo $ac_n "checking for linux sendfile support""... $ac_c" 1>&6
-echo "configure:13926: checking for linux sendfile support" >&5
-if eval "test \"`echo '$''{'samba_cv_HAVE_SENDFILE'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-               cat > conftest.$ac_ext <<EOF
-#line 13932 "configure"
-#include "confdefs.h"
-#include <sys/sendfile.h>
-int main() {
-\
-int tofd, fromfd;
-off_t offset;
-size_t total;
-ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
-
-; return 0; }
-EOF
-if { (eval echo configure:13944: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  samba_cv_HAVE_SENDFILE=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  samba_cv_HAVE_SENDFILE=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$samba_cv_HAVE_SENDFILE" 1>&6
-
-# Try and cope with broken Linux sendfile....
-               echo $ac_n "checking for broken linux sendfile support""... $ac_c" 1>&6
-echo "configure:13960: checking for broken linux sendfile support" >&5
-if eval "test \"`echo '$''{'samba_cv_HAVE_BROKEN_LINUX_SENDFILE'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-               cat > conftest.$ac_ext <<EOF
-#line 13966 "configure"
-#include "confdefs.h"
-\
-#if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
-#undef _FILE_OFFSET_BITS
-#endif
-#include <sys/sendfile.h>
-int main() {
-\
-int tofd, fromfd;
-off_t offset;
-size_t total;
-ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
-
-; return 0; }
-EOF
-if { (eval echo configure:13982: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" 1>&6
-
-       if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
-               cat >> confdefs.h <<\EOF
-#define HAVE_SENDFILE64 1
-EOF
-
-               cat >> confdefs.h <<\EOF
-#define LINUX_SENDFILE_API 1
-EOF
-
-               cat >> confdefs.h <<\EOF
-#define WITH_SENDFILE 1
-EOF
-
-       elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
-               cat >> confdefs.h <<\EOF
-#define HAVE_SENDFILE 1
-EOF
-
-               cat >> confdefs.h <<\EOF
-#define LINUX_SENDFILE_API 1
-EOF
-
-               cat >> confdefs.h <<\EOF
-#define WITH_SENDFILE 1
-EOF
-
-       elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
-               cat >> confdefs.h <<\EOF
-#define LINUX_BROKEN_SENDFILE_API 1
-EOF
-
-               cat >> confdefs.h <<\EOF
-#define WITH_SENDFILE 1
-EOF
-
-       else
-               echo "$ac_t""no" 1>&6;
-       fi
-
-       ;;
-       *freebsd*)
-               echo $ac_n "checking for freebsd sendfile support""... $ac_c" 1>&6
-echo "configure:14038: checking for freebsd sendfile support" >&5
-if eval "test \"`echo '$''{'samba_cv_HAVE_SENDFILE'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-               cat > conftest.$ac_ext <<EOF
-#line 14044 "configure"
-#include "confdefs.h"
-\
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/uio.h>
-int main() {
-\
-       int fromfd, tofd;
-       off_t offset, nwritten;
-       struct sf_hdtr hdr;
-       struct iovec hdtrl;
-       hdr->headers = &hdtrl;
-       hdr->hdr_cnt = 1;
-       hdr->trailers = NULL;
-       hdr->trl_cnt = 0;
-       hdtrl.iov_base = NULL;
-       hdtrl.iov_len = 0;
-       int ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
-
-; return 0; }
-EOF
-if { (eval echo configure:14066: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  samba_cv_HAVE_SENDFILE=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  samba_cv_HAVE_SENDFILE=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$samba_cv_HAVE_SENDFILE" 1>&6
-
-       if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
-               cat >> confdefs.h <<\EOF
-#define HAVE_SENDFILE 1
-EOF
-
-               cat >> confdefs.h <<\EOF
-#define FREEBSD_SENDFILE_API 1
-EOF
-
-               cat >> confdefs.h <<\EOF
-#define WITH_SENDFILE 1
-EOF
-
-       else
-               echo "$ac_t""no" 1>&6;
-       fi
-       ;;
-
-       *hpux*)
-               echo $ac_n "checking for hpux sendfile64 support""... $ac_c" 1>&6
-echo "configure:14100: checking for hpux sendfile64 support" >&5
-if eval "test \"`echo '$''{'samba_cv_HAVE_SENDFILE64'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-               cat > conftest.$ac_ext <<EOF
-#line 14106 "configure"
-#include "confdefs.h"
-\
-#include <sys/socket.h>
-#include <sys/uio.h>
-int main() {
-\
-       int fromfd, tofd;
-       size_t total=0;
-       struct iovec hdtrl[2];
-       ssize_t nwritten;
-       off64_t offset;
-
-       hdtrl[0].iov_base = 0;
-       hdtrl[0].iov_len = 0;
-
-       nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
-
-; return 0; }
-EOF
-if { (eval echo configure:14126: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  samba_cv_HAVE_SENDFILE64=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  samba_cv_HAVE_SENDFILE64=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$samba_cv_HAVE_SENDFILE64" 1>&6
-       if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
-               cat >> confdefs.h <<\EOF
-#define HAVE_SENDFILE64 1
-EOF
-
-               cat >> confdefs.h <<\EOF
-#define HPUX_SENDFILE_API 1
-EOF
-
-               cat >> confdefs.h <<\EOF
-#define WITH_SENDFILE 1
-EOF
-
-       else
-               echo "$ac_t""no" 1>&6;
-       fi
-
-               echo $ac_n "checking for hpux sendfile support""... $ac_c" 1>&6
-echo "configure:14157: checking for hpux sendfile support" >&5
-if eval "test \"`echo '$''{'samba_cv_HAVE_SENDFILE'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-               cat > conftest.$ac_ext <<EOF
-#line 14163 "configure"
-#include "confdefs.h"
-\
-#include <sys/socket.h>
-#include <sys/uio.h>
-int main() {
-\
-       int fromfd, tofd;
-       size_t total=0;
-       struct iovec hdtrl[2];
-       ssize_t nwritten;
-       off_t offset;
-
-       hdtrl[0].iov_base = 0;
-       hdtrl[0].iov_len = 0;
-
-       nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
-
-; return 0; }
-EOF
-if { (eval echo configure:14183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  samba_cv_HAVE_SENDFILE=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  samba_cv_HAVE_SENDFILE=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$samba_cv_HAVE_SENDFILE" 1>&6
-       if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
-               cat >> confdefs.h <<\EOF
-#define HAVE_SENDFILE 1
-EOF
-
-               cat >> confdefs.h <<\EOF
-#define HPUX_SENDFILE_API 1
-EOF
-
-               cat >> confdefs.h <<\EOF
-#define WITH_SENDFILE 1
-EOF
-
-       else
-               echo "$ac_t""no" 1>&6;
-       fi
-
-       ;;
-
-       *)
-       ;;
-        esac
-        ;;
-  *)
-    echo "$ac_t""no" 1>&6
-    ;;
-  esac 
-else
-  echo "$ac_t""no" 1>&6
-
-fi
-
-
-
 #################################################
 # Check whether winbind is supported on this platform.  If so we need to
 # build and install client programs (WINBIND_TARGETS), sbin programs
 # (WINBIND_STARGETS) and shared libraries (WINBIND_LTARGETS).
 
 echo $ac_n "checking whether to build winbind""... $ac_c" 1>&6
-echo "configure:14236: checking whether to build winbind" >&5
+echo "configure:13708: checking whether to build winbind" >&5
 
 # Initially, the value of $host_os decides whether winbind is supported
 
 #              [#include <pwd.h>])
 
 echo $ac_n "checking whether struct passwd has pw_comment""... $ac_c" 1>&6
-echo "configure:14332: checking whether struct passwd has pw_comment" >&5
+echo "configure:13804: checking whether struct passwd has pw_comment" >&5
 if eval "test \"`echo '$''{'samba_cv_passwd_pw_comment'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cat > conftest.$ac_ext <<EOF
-#line 14338 "configure"
+#line 13810 "configure"
 #include "confdefs.h"
 #include <pwd.h>
 int main() {
 struct passwd p; p.pw_comment;
 ; return 0; }
 EOF
-if { (eval echo configure:14345: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13817: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_passwd_pw_comment=yes
 else
 #              [#include <pwd.h>])
 
 echo $ac_n "checking whether struct passwd has pw_age""... $ac_c" 1>&6
-echo "configure:14370: checking whether struct passwd has pw_age" >&5
+echo "configure:13842: checking whether struct passwd has pw_age" >&5
 if eval "test \"`echo '$''{'samba_cv_passwd_pw_age'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cat > conftest.$ac_ext <<EOF
-#line 14376 "configure"
+#line 13848 "configure"
 #include "confdefs.h"
 #include <pwd.h>
 int main() {
 struct passwd p; p.pw_age;
 ; return 0; }
 EOF
-if { (eval echo configure:14383: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13855: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   samba_cv_passwd_pw_age=yes
 else
@@ -14418,7 +13890,7 @@ fi
 
 if test x"$INCLUDED_POPT" != x"yes"; then
     echo $ac_n "checking for poptGetContext in -lpopt""... $ac_c" 1>&6
-echo "configure:14422: checking for poptGetContext in -lpopt" >&5
+echo "configure:13894: checking for poptGetContext in -lpopt" >&5
 ac_lib_var=`echo popt'_'poptGetContext | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -14426,7 +13898,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lpopt  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 14430 "configure"
+#line 13902 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -14437,7 +13909,7 @@ int main() {
 poptGetContext()
 ; return 0; }
 EOF
-if { (eval echo configure:14441: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13913: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -14461,7 +13933,7 @@ fi
 fi
 
 echo $ac_n "checking whether to use included popt""... $ac_c" 1>&6
-echo "configure:14465: checking whether to use included popt" >&5
+echo "configure:13937: checking whether to use included popt" >&5
 if test x"$INCLUDED_POPT" = x"yes"; then
     echo "$ac_t""yes" 1>&6
     BUILD_POPT='$(POPT_OBJS)'
 
 
 
-#################################################
-# Check if the user wants Python
-
-# At the moment, you can use this to set which Python binary to link
-# against.  (Libraries built for Python2.2 can't be used by 2.1,
-# though they can coexist in different directories.)  In the future
-# this might make the Python stuff be built by default.
-
-# Check whether --with-python or --without-python was given.
-if test "${with_python+set}" = set; then
-  withval="$with_python"
-   case "${withval-python}" in
-  yes)
-       PYTHON=python
-       ;;
-  *)
-       PYTHON=${withval-python}
-       ;;
-  esac 
-fi
-
-
-
 #################################################
 # do extra things if we are running insure
 
 # final configure stuff
 
 echo $ac_n "checking configure summary""... $ac_c" 1>&6
-echo "configure:14511: checking configure summary" >&5
+echo "configure:13960: checking configure summary" >&5
 if test "$cross_compiling" = yes; then
   echo "configure: warning: cannot run when cross-compiling" 1>&2
 else
   cat > conftest.$ac_ext <<EOF
-#line 14516 "configure"
+#line 13965 "configure"
 #include "confdefs.h"
 #include "${srcdir-.}/tests/summary.c"
 EOF
-if { (eval echo configure:14520: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:13969: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   echo "$ac_t""yes" 1>&6
 else
@@ -14532,9 +13981,6 @@ fi
 builddir=`pwd`
 
 
-# I added make files that are outside /source directory.
-# I know this is not a good solution, will work out a better
-# solution soon.                       --simo
 trap '' 1 2 15
 cat > confcache <<\EOF
 # This file is a shell script that caches the results of configure
@@ -14636,7 +14082,7 @@ done
 ac_given_srcdir=$srcdir
 ac_given_INSTALL="$INSTALL"
 
-trap 'rm -fr `echo "include/stamp-h Makefile script/findsmb ../examples/VFS/Makefile ../examples/pdb/mysql/Makefile ../examples/pdb/xml/Makefile ../examples/sam/Makefile include/config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+trap 'rm -fr `echo "include/stamp-h Makefile script/findsmb ../examples/VFS/Makefile ../examples/VFS/block/Makefile include/config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
 EOF
 cat >> $CONFIG_STATUS <<EOF
 
@@ -14690,7 +14136,6 @@ s%@POBAD_CC@%$POBAD_CC%g
 s%@SHLIBEXT@%$SHLIBEXT%g
 s%@LIBSMBCLIENT_SHARED@%$LIBSMBCLIENT_SHARED%g
 s%@LIBSMBCLIENT@%$LIBSMBCLIENT%g
-s%@PRINTLIBS@%$PRINTLIBS%g
 s%@CC@%$CC%g
 s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
 s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
@@ -14729,7 +14174,6 @@ s%@WINBIND_NSS_EXTRA_OBJS@%$WINBIND_NSS_EXTRA_OBJS%g
 s%@WINBIND_NSS_EXTRA_LIBS@%$WINBIND_NSS_EXTRA_LIBS%g
 s%@BUILD_POPT@%$BUILD_POPT%g
 s%@FLAGS1@%$FLAGS1%g
-s%@PYTHON@%$PYTHON%g
 s%@builddir@%$builddir%g
 
 CEOF
@@ -14772,7 +14216,7 @@ EOF
 
 cat >> $CONFIG_STATUS <<EOF
 
-CONFIG_FILES=\${CONFIG_FILES-"include/stamp-h Makefile script/findsmb ../examples/VFS/Makefile ../examples/pdb/mysql/Makefile ../examples/pdb/xml/Makefile ../examples/sam/Makefile"}
+CONFIG_FILES=\${CONFIG_FILES-"include/stamp-h Makefile script/findsmb ../examples/VFS/Makefile ../examples/VFS/block/Makefile"}
 EOF
 cat >> $CONFIG_STATUS <<\EOF
 for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
index 5221b8ec2b4279ef91d5ed6f384d160ec9372e4f..db34c266c584a72442e06b518b066e1e8da48638 100644 (file)
@@ -147,7 +147,6 @@ AC_SUBST(POBAD_CC)
 AC_SUBST(SHLIBEXT)
 AC_SUBST(LIBSMBCLIENT_SHARED)
 AC_SUBST(LIBSMBCLIENT)
-AC_SUBST(PRINTLIBS)
 
 # compile with optimization and without debugging by default
 CFLAGS="-O ${CFLAGS}"
@@ -432,7 +431,6 @@ AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h
 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
 AC_CHECK_HEADERS(security/pam_modules.h security/_pam_macros.h ldap.h lber.h dlfcn.h)
-AC_CHECK_HEADERS(sys/syslog.h syslog.h)
 
 #
 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
@@ -498,7 +496,7 @@ if test x$enable_cups != xno; then
                         AC_DEFINE(HAVE_CUPS)
                CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
                LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
-               PRINTLIBS="$PRINTLIBS `$CUPS_CONFIG --libs`"
+               LIBS="$LIBS `$CUPS_CONFIG --libs`"
         fi
 fi
 
@@ -896,14 +894,7 @@ case "$host_os" in
                        SONAMEFLAG="-Wl,-h,"
                        PICFLAG="-KPIC"   # Is this correct for SunOS
                ;;
-               *freebsd*)  BLDSHARED="true"
-                       LDSHFLAGS="-shared"
-                       DYNEXP="-Wl,--export-dynamic"
-                       SONAMEFLAG="-Wl,-soname,"
-                       PICFLAG="-fPIC -DPIC"
-                       AC_DEFINE(STAT_ST_BLOCKSIZE,512)
-               ;;
-               *openbsd*)  BLDSHARED="true"
+               *bsd*)  BLDSHARED="true"
                        LDSHFLAGS="-shared"
                        DYNEXP="-Wl,-Bdynamic"
                        SONAMEFLAG="-Wl,-soname,"
@@ -931,10 +922,12 @@ case "$host_os" in
                        BLDSHARED="true"
                        LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry"
                        DYNEXP="-Wl,-brtl,-bexpall"
-                       PICFLAG="-O2"
-                       if test "${GCC}" != "yes"; then
+                       if test "${GCC}" = "yes"; then
+                               PICFLAG="-O2"
+                       else
+                       PICFLAG="-O2 -qmaxmem=6000"
                                ## for funky AIX compiler using strncpy()
-                               CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
+                               CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT"
                        fi
 
                        AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE)
@@ -1827,16 +1820,6 @@ if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
     AC_DEFINE(HAVE_STAT_ST_BLOCKS)
 fi 
 
-AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
-AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>],
-[struct stat st;  st.st_blksize = 0;],
-samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
-if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
-    AC_DEFINE(HAVE_STAT_ST_BLKSIZE)
-fi
-
 case "$host_os" in
 *linux*)
 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
@@ -1941,52 +1924,7 @@ AC_ARG_WITH(dfs,
   AC_MSG_RESULT(no)
 )
 
-#################################################
-# active directory support
-
-with_ads_support=yes
-AC_MSG_CHECKING([whether to use Active Directory])
 
-AC_ARG_WITH(ads,
-[   --with-ads  Active Directory support (default yes)],
-[ case "$withval" in
-    no)
-       with_ads_support=no
-       ;;
-  esac ])
-
-if test x"$with_ads_support" = x"yes"; then
-   AC_DEFINE(WITH_ADS)
-fi
-
-AC_MSG_RESULT($with_ads_support)
-
-FOUND_KRB5=no
-if test x"$with_ads_support" = x"yes"; then
-
-  #################################################
-  # check for location of Kerberos 5 install
-  AC_MSG_CHECKING(for kerberos 5 install path)
-  AC_ARG_WITH(krb5,
-  [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
-  [ case "$withval" in
-    no)
-      AC_MSG_RESULT(no)
-      ;;
-    *)
-      AC_MSG_RESULT(yes)
-      LIBS="$LIBS -lkrb5"
-      CFLAGS="$CFLAGS -I$withval/include"
-      CPPFLAGS="$CPPFLAGS -I$withval/include"
-      LDFLAGS="$LDFLAGS -L$withval/lib"
-      FOUND_KRB5=yes
-      ;;
-    esac ],
-    AC_MSG_RESULT(no)
-  )
-
-
-if test x$FOUND_KRB5 = x"no"; then
 #################################################
 # see if this box has the RedHat location for kerberos
 AC_MSG_CHECKING(for /usr/kerberos)
@@ -1998,62 +1936,61 @@ if test -d /usr/kerberos; then
 else
     AC_MSG_RESULT(no)
 fi
-fi
 
+#################################################
+# check for location of Kerberos 5 install
+AC_MSG_CHECKING(for kerberos 5 install path)
+AC_ARG_WITH(krb5,
+[  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
+[ case "$withval" in
+  no)
+    AC_MSG_RESULT(no)
+    ;;
+  *)
+    AC_MSG_RESULT(yes)
+    LIBS="$LIBS -lkrb5"
+    CFLAGS="$CFLAGS -I$withval/include"
+    CPPFLAGS="$CPPFLAGS -I$withval/include"
+    LDFLAGS="$LDFLAGS -L$withval/lib"
+    ;;
+  esac ],
+  AC_MSG_RESULT(no)
+)
 
-  # now check for krb5.h. Some systems have the libraries without the headers!
-  # note that this check is done here to allow for different kerberos
-  # include paths
-  AC_CHECK_HEADERS(krb5.h)
+# now check for krb5.h. Some systems have the libraries without the headers!
+# note that this check is done here to allow for different kerberos
+# include paths
+AC_CHECK_HEADERS(krb5.h)
 
-  # now check for gssapi headers.  This is also done here to allow for
-  # different kerberos include paths
-  AC_CHECK_HEADERS(gssapi/gssapi_generic.h gssapi/gssapi.h)
+# now check for gssapi headers.  This is also done here to allow for
+# different kerberos include paths
+AC_CHECK_HEADERS(gssapi/gssapi_generic.h gssapi/gssapi.h)
 
-  ##################################################################
-  # we might need the k5crypto and com_err libraries on some systems
-  AC_CHECK_LIB(com_err, _et_list, [LIBS="$LIBS -lcom_err"])
-  AC_CHECK_LIB(k5crypto, krb5_encrypt_data, [LIBS="$LIBS -lk5crypto"])
+##################################################################
+# we might need the k5crypto and com_err libraries on some systems
+AC_CHECK_LIB(com_err, _et_list, [LIBS="$LIBS -lcom_err"])
+AC_CHECK_LIB(k5crypto, krb5_encrypt_data, [LIBS="$LIBS -lk5crypto"])
 
-  ########################################################
-  # now see if we can find the krb5 libs in standard paths
-  # or as specified above
-  AC_CHECK_LIB(krb5, krb5_mk_req_extended, [LIBS="$LIBS -lkrb5";
+########################################################
+# now see if we can find the krb5 libs in standard paths
+# or as specified above
+AC_CHECK_LIB(krb5, krb5_mk_req_extended, [LIBS="$LIBS -lkrb5";
        AC_DEFINE(HAVE_KRB5)])
 
-  ########################################################
-  # now see if we can find the gssapi libs in standard paths
-  AC_CHECK_LIB(gssapi_krb5, gss_display_status, [LIBS="$LIBS -lgssapi_krb5";
-       AC_DEFINE(HAVE_GSSAPI)])
-fi
-
 ########################################################
-# Compile with LDAP support?
-
-with_ldap_support=yes
-AC_MSG_CHECKING([whether to use LDAP])
-
-AC_ARG_WITH(ldap,
-[   --with-ldap  LDAP support (default yes)],
-[ case "$withval" in
-    no)
-       with_ldap_support=no
-       ;;
-  esac ])
-
-AC_MSG_RESULT($with_ldap_support)
-
-if test x"$with_ldap_support" = x"yes"; then
+# now see if we can find the gssapi libs in standard paths
+AC_CHECK_LIB(gssapi_krb5, gss_display_status, [LIBS="$LIBS -lgssapi_krb5";
+       AC_DEFINE(HAVE_GSSAPI)])
 
-  ##################################################################
-  # we might need the lber lib on some systems. To avoid link errors
-  # this test must be before the libldap test
-  AC_CHECK_LIB(lber, ber_scanf, [LIBS="$LIBS -llber"])
+##################################################################
+# we might need the lber lib on some systems. To avoid link errors
+# this test must be before the libldap test
+AC_CHECK_LIB(lber, ber_scanf, [LIBS="$LIBS -llber"])
 
-  ########################################################
-  # now see if we can find the ldap libs in standard paths
-  if test x$have_ldap != xyes; then
-  AC_CHECK_LIB(ldap, ldap_domain2hostlist, [LIBS="$LIBS -lldap";
+########################################################
+# now see if we can find the ldap libs in standard paths
+if test x$have_ldap != xyes; then
+AC_CHECK_LIB(ldap, ldap_domain2hostlist, [LIBS="$LIBS -lldap";
        AC_DEFINE(HAVE_LDAP)])
 
        ########################################################
@@ -2065,7 +2002,6 @@ if test x"$with_ldap_support" = x"yes"; then
        #include <lber.h>
        #include <ldap.h>], [ldap_set_rebind_proc(0, 0, 0);], [pam_ldap_cv_ldap_set_rebind_proc=3], [pam_ldap_cv_ldap_set_rebind_proc=2]) ])
        AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $pam_ldap_cv_ldap_set_rebind_proc)
-  fi
 fi
 
 #################################################
@@ -2168,7 +2104,7 @@ AC_ARG_WITH(pam_smbpass,
 ###############################################
 # test for where we get crypt() from, but only
 # if not using PAM
-if test x"$with_pam_for_crypt" = x"no"; then
+if test $with_pam_for_crypt = no; then
 AC_CHECK_FUNCS(crypt)
 if test x"$ac_cv_func_crypt" = x"no"; then
     AC_CHECK_LIB(crypt, crypt, [LIBS="$LIBS -lcrypt";
@@ -2191,22 +2127,6 @@ if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
 fi
 fi
 
-# New experimental SAM system
-
-AC_MSG_CHECKING([whether to build the new (experimental) SAM database])
-AC_ARG_WITH(sam,
-[  --with-sam              Build new (experimental) SAM database (default=no)],
-[ case "$withval" in
-  yes)
-    AC_MSG_RESULT(yes)
-    AC_DEFINE(WITH_SAM)
-    ;;
-  *)
-    AC_MSG_RESULT(no)
-    ;;
-  esac ],
-  AC_MSG_RESULT(no)
-)
 
 
 ########################################################################################
@@ -2713,163 +2633,6 @@ samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)])
   AC_MSG_RESULT(no)
 )
 
-#################################################
-# check for sendfile support
-
-AC_MSG_CHECKING(whether to support sendfile)
-AC_ARG_WITH(sendfile-support,
-[  --with-sendfile-support      Include sendfile support (default=no)],
-[ case "$withval" in
-  yes)
-
-       case "$host_os" in
-       *linux*)
-               AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
-               AC_TRY_LINK([#include <sys/sendfile.h>],
-[\
-int tofd, fromfd;
-off64_t offset;
-size_t total;
-ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
-],
-samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
-
-               AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
-               AC_TRY_LINK([#include <sys/sendfile.h>],
-[\
-int tofd, fromfd;
-off_t offset;
-size_t total;
-ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
-],
-samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
-
-# Try and cope with broken Linux sendfile....
-               AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
-               AC_TRY_LINK([\
-#if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
-#undef _FILE_OFFSET_BITS
-#endif
-#include <sys/sendfile.h>],
-[\
-int tofd, fromfd;
-off_t offset;
-size_t total;
-ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
-],
-samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
-
-       if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
-               AC_DEFINE(HAVE_SENDFILE64)
-               AC_DEFINE(LINUX_SENDFILE_API)
-               AC_DEFINE(WITH_SENDFILE)
-       elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
-               AC_DEFINE(HAVE_SENDFILE)
-               AC_DEFINE(LINUX_SENDFILE_API)
-               AC_DEFINE(WITH_SENDFILE)
-       elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
-               AC_DEFINE(LINUX_BROKEN_SENDFILE_API)
-               AC_DEFINE(WITH_SENDFILE)
-       else
-               AC_MSG_RESULT(no);
-       fi
-
-       ;;
-       *freebsd*)
-               AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
-               AC_TRY_LINK([\
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/uio.h>],
-[\
-       int fromfd, tofd;
-       off_t offset, nwritten;
-       struct sf_hdtr hdr;
-       struct iovec hdtrl;
-       hdr->headers = &hdtrl;
-       hdr->hdr_cnt = 1;
-       hdr->trailers = NULL;
-       hdr->trl_cnt = 0;
-       hdtrl.iov_base = NULL;
-       hdtrl.iov_len = 0;
-       int ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
-],
-samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
-
-       if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
-               AC_DEFINE(HAVE_SENDFILE)
-               AC_DEFINE(FREEBSD_SENDFILE_API)
-               AC_DEFINE(WITH_SENDFILE)
-       else
-               AC_MSG_RESULT(no);
-       fi
-       ;;
-
-       *hpux*)
-               AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
-               AC_TRY_LINK([\
-#include <sys/socket.h>
-#include <sys/uio.h>],
-[\
-       int fromfd, tofd;
-       size_t total=0;
-       struct iovec hdtrl[2];
-       ssize_t nwritten;
-       off64_t offset;
-
-       hdtrl[0].iov_base = 0;
-       hdtrl[0].iov_len = 0;
-
-       nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
-],
-samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
-       if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
-               AC_DEFINE(HAVE_SENDFILE64)
-               AC_DEFINE(HPUX_SENDFILE_API)
-               AC_DEFINE(WITH_SENDFILE)
-       else
-               AC_MSG_RESULT(no);
-       fi
-
-               AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
-               AC_TRY_LINK([\
-#include <sys/socket.h>
-#include <sys/uio.h>],
-[\
-       int fromfd, tofd;
-       size_t total=0;
-       struct iovec hdtrl[2];
-       ssize_t nwritten;
-       off_t offset;
-
-       hdtrl[0].iov_base = 0;
-       hdtrl[0].iov_len = 0;
-
-       nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
-],
-samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
-       if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
-               AC_DEFINE(HAVE_SENDFILE)
-               AC_DEFINE(HPUX_SENDFILE_API)
-               AC_DEFINE(WITH_SENDFILE)
-       else
-               AC_MSG_RESULT(no);
-       fi
-
-       ;;
-
-       *)
-       ;;
-        esac
-        ;;
-  *)
-    AC_MSG_RESULT(no)
-    ;;
-  esac ],
-  AC_MSG_RESULT(no)
-)
-
-
 #################################################
 # Check whether winbind is supported on this platform.  If so we need to
 # build and install client programs (WINBIND_TARGETS), sbin programs
@@ -3015,26 +2778,6 @@ fi
 AC_SUBST(BUILD_POPT)
 AC_SUBST(FLAGS1)
 
-#################################################
-# Check if the user wants Python
-
-# At the moment, you can use this to set which Python binary to link
-# against.  (Libraries built for Python2.2 can't be used by 2.1,
-# though they can coexist in different directories.)  In the future
-# this might make the Python stuff be built by default.
-
-AC_ARG_WITH(python,
-[  --with-python=PYTHONNAME  build Python libraries],
-[ case "${withval-python}" in
-  yes)
-       PYTHON=python
-       ;;
-  *)
-       PYTHON=${withval-python}
-       ;;
-  esac ])
-AC_SUBST(PYTHON)
-
 #################################################
 # do extra things if we are running insure
 
@@ -3054,10 +2797,7 @@ AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
 builddir=`pwd`
 AC_SUBST(builddir)
 
-# I added make files that are outside /source directory.
-# I know this is not a good solution, will work out a better
-# solution soon.                       --simo
-AC_OUTPUT(include/stamp-h Makefile script/findsmb ../examples/VFS/Makefile ../examples/pdb/mysql/Makefile ../examples/pdb/xml/Makefile ../examples/sam/Makefile)
+AC_OUTPUT(include/stamp-h Makefile script/findsmb ../examples/VFS/Makefile ../examples/VFS/block/Makefile)
 
 #################################################
 # Print very concise instructions on building/use
index 05f584f980d592e563abe4c5ea46d5b861d1a24b..718bf1d7ce15259c938d1631ee86be0a9e50663b 100644 (file)
@@ -41,7 +41,9 @@ BOOL initialise_alias_db(void)
     return True;
   }
 
-#ifdef WITH_LDAP
+#ifdef WITH_NISPLUS
+  aldb_ops =  nisplus_initialise_alias_db();
+#elif defined(WITH_LDAP)
   aldb_ops = ldap_initialise_alias_db();
 #else 
   aldb_ops = file_initialise_alias_db();
index d50e4f7322dc5b4e7c7dcea5274c77d7bbae0ca8..c18463741d9230ccf331d0912a399ae89d9509df 100644 (file)
@@ -39,7 +39,9 @@ BOOL initialise_group_db(void)
     return True;
   }
 
-#ifdef WITH_LDAP
+#ifdef WITH_NISPLUS
+  gpdb_ops =  nisplus_initialise_group_db();
+#elif defined(WITH_LDAP)
   gpdb_ops = ldap_initialise_group_db();
 #else 
   gpdb_ops = file_initialise_group_db();
index 56414312465446b02e2e855e2b02bfa879dbdd4e..70d6317a77a70606b600d9100cadc1ac0496aa0b 100644 (file)
@@ -434,7 +434,7 @@ BOOL check_priv_in_privilege(PRIVILEGE_SET *priv_set, LUID_ATTR set)
 }
 
 /****************************************************************************
-remove a privilege from a privilege array
+remove a privilege to a privilege array
 ****************************************************************************/
 BOOL remove_privilege(PRIVILEGE_SET *priv_set, LUID_ATTR set)
 {
@@ -1156,42 +1156,16 @@ BOOL get_uid_list_of_group(gid_t gid, uid_t **uid, int *num_uids)
  Create a UNIX group on demand.
 ****************************************************************************/
 
-int smb_create_group(char *unix_group, gid_t *new_gid)
+int smb_create_group(char *unix_group)
 {
        pstring add_script;
        int ret;
-       int fd = 0;
 
        pstrcpy(add_script, lp_addgroup_script());
        if (! *add_script) return -1;
        pstring_sub(add_script, "%g", unix_group);
-       ret = smbrun(add_script, (new_gid!=NULL) ? &fd : NULL);
+       ret = smbrun(add_script,NULL);
        DEBUG(3,("smb_create_group: Running the command `%s' gave %d\n",add_script,ret));
-       if (ret != 0)
-               return ret;
-
-       if (fd != 0) {
-               fstring output;
-
-               *new_gid = 0;
-               if (read(fd, output, sizeof(output)) > 0) {
-                       *new_gid = (gid_t)strtoul(output, NULL, 10);
-               }
-               close(fd);
-
-               if (*new_gid == 0) {
-                       /* The output was garbage. We assume nobody
-                           will create group 0 via smbd. Now we try to
-                           get the group via getgrnam. */
-
-                       struct group *grp = getgrnam(unix_group);
-                       if (grp != NULL)
-                               *new_gid = grp->gr_gid;
-                       else
-                               return 1;
-               }
-       }
-
        return ret;
 }
 
@@ -1213,25 +1187,7 @@ int smb_delete_group(char *unix_group)
 }
 
 /****************************************************************************
- Set a user's primary UNIX group.
-****************************************************************************/
-int smb_set_primary_group(const char *unix_group, const char* unix_user)
-{
-       pstring add_script;
-       int ret;
-
-       pstrcpy(add_script, lp_setprimarygroup_script());
-       if (! *add_script) return -1;
-       all_string_sub(add_script, "%g", unix_group, sizeof(add_script));
-       all_string_sub(add_script, "%u", unix_user, sizeof(add_script));
-       ret = smbrun(add_script,NULL);
-       DEBUG(3,("smb_set_primary_group: "
-                "Running the command `%s' gave %d\n",add_script,ret));
-       return ret;
-}
-
-/****************************************************************************
- Add a user to a UNIX group.
+ Create a UNIX group on demand.
 ****************************************************************************/
 
 int smb_add_user_group(char *unix_group, char *unix_user)
@@ -1249,7 +1205,7 @@ int smb_add_user_group(char *unix_group, char *unix_user)
 }
 
 /****************************************************************************
- Delete a user from a UNIX group
+ Delete a UNIX group on demand.
 ****************************************************************************/
 
 int smb_delete_user_group(const char *unix_group, const char *unix_user)
index 0181ae535e02e4560f2c3a0a2083655a71b7211d..7504a369b4b9aab5d8803b81d34f53a904239e55 100644 (file)
@@ -24,8 +24,7 @@ typedef struct {
                char *password;
                char *user_name;
                char *kdc_server;
-               unsigned flags;
-               int time_offset;
+               int no_bind;
        } auth;
 
        /* info derived from the servers config */
@@ -33,7 +32,6 @@ typedef struct {
                char *realm;
                char *bind_path;
                char *ldap_server_name;
-               time_t current_time;
        } config;
 } ADS_STRUCT;
 
@@ -94,14 +92,11 @@ typedef struct {
 
 /* there are 4 possible types of errors the ads subsystem can produce */
 enum ads_error_type {ADS_ERROR_KRB5, ADS_ERROR_GSS, 
-                    ADS_ERROR_LDAP, ADS_ERROR_SYSTEM, ADS_ERROR_NT};
+                    ADS_ERROR_LDAP, ADS_ERROR_SYSTEM};
 
 typedef struct {
        enum ads_error_type error_type;
-       union err_state{                
-               int rc;
-               NTSTATUS nt_status;
-       } err;
+       int rc;
        /* For error_type = ADS_ERROR_GSS minor_status describe GSS API error */
        /* Where rc represents major_status of GSS API error */
        int minor_status;
@@ -114,14 +109,12 @@ typedef void **ADS_MODLIST;
 #endif
 
 /* macros to simplify error returning */
-#define ADS_ERROR(rc) ADS_ERROR_LDAP(rc)
-#define ADS_ERROR_LDAP(rc) ads_build_error(ADS_ERROR_LDAP, rc, 0)
+#define ADS_ERROR(rc) ads_build_error(ADS_ERROR_LDAP, rc, 0)
 #define ADS_ERROR_SYSTEM(rc) ads_build_error(ADS_ERROR_SYSTEM, rc?rc:EINVAL, 0)
 #define ADS_ERROR_KRB5(rc) ads_build_error(ADS_ERROR_KRB5, rc, 0)
 #define ADS_ERROR_GSS(rc, minor) ads_build_error(ADS_ERROR_GSS, rc, minor)
-#define ADS_ERROR_NT(rc) ads_build_nt_error(ADS_ERROR_NT,rc)
 
-#define ADS_ERR_OK(status) ((status.error_type == ADS_ERROR_NT) ? NT_STATUS_IS_OK(status.err.nt_status):(status.err.rc == 0))
+#define ADS_ERR_OK(status) ((status).rc == 0)
 #define ADS_SUCCESS ADS_ERROR(0)
 
 /* time between reconnect attempts */
@@ -134,102 +127,24 @@ typedef void **ADS_MODLIST;
 #define ADS_PAGE_CTL_OID "1.2.840.113556.1.4.319"
 #define ADS_NO_REFERRALS_OID "1.2.840.113556.1.4.1339"
 #define ADS_SERVER_SORT_OID "1.2.840.113556.1.4.473"
-#define ADS_PERMIT_MODIFY_OID "1.2.840.113556.1.4.1413"
 
-/* UserFlags for userAccountControl */
-#define UF_SCRIPT                              0x00000001
-#define UF_ACCOUNTDISABLE                      0x00000002
-#define UF_UNUSED_1                            0x00000004
-#define UF_HOMEDIR_REQUIRED                    0x00000008
+#define UF_DONT_EXPIRE_PASSWD           0x10000
+#define UF_MNS_LOGON_ACCOUNT            0x20000
+#define UF_SMARTCARD_REQUIRED           0x40000
+#define UF_TRUSTED_FOR_DELEGATION       0x80000
+#define UF_NOT_DELEGATED               0x100000
+#define UF_USE_DES_KEY_ONLY            0x200000
+#define UF_DONT_REQUIRE_PREAUTH        0x400000
 
-#define UF_LOCKOUT                             0x00000010
-#define UF_PASSWD_NOTREQD                      0x00000020
-#define UF_PASSWD_CANT_CHANGE                  0x00000040
-#define UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED     0x00000080
+#define UF_TEMP_DUPLICATE_ACCOUNT       0x0100
+#define UF_NORMAL_ACCOUNT               0x0200
+#define UF_INTERDOMAIN_TRUST_ACCOUNT    0x0800
+#define UF_WORKSTATION_TRUST_ACCOUNT    0x1000
+#define UF_SERVER_TRUST_ACCOUNT         0x2000
 
-#define UF_TEMP_DUPLICATE_ACCOUNT              0x00000100
-#define UF_NORMAL_ACCOUNT                      0x00000200
-#define UF_UNUSED_2                            0x00000400
-#define UF_INTERDOMAIN_TRUST_ACCOUNT           0x00000800
-
-#define UF_WORKSTATION_TRUST_ACCOUNT           0x00001000
-#define UF_SERVER_TRUST_ACCOUNT                0x00002000
-#define UF_UNUSED_3                            0x00004000
-#define UF_UNUSED_4                            0x00008000
-
-#define UF_DONT_EXPIRE_PASSWD                  0x00010000
-#define UF_MNS_LOGON_ACCOUNT                   0x00020000
-#define UF_SMARTCARD_REQUIRED                  0x00040000
-#define UF_TRUSTED_FOR_DELEGATION              0x00080000
-
-#define UF_NOT_DELEGATED                       0x00100000
-#define UF_USE_DES_KEY_ONLY                    0x00200000
-#define UF_DONT_REQUIRE_PREAUTH                        0x00400000
-#define UF_UNUSED_5                            0x00800000
-
-#define UF_UNUSED_6                            0x01000000
-#define UF_UNUSED_7                            0x02000000
-#define UF_UNUSED_8                            0x04000000
-#define UF_UNUSED_9                            0x08000000
-
-#define UF_UNUSED_10                           0x10000000
-#define UF_UNUSED_11                           0x20000000
-#define UF_UNUSED_12                           0x40000000
-#define UF_UNUSED_13                           0x80000000
-
-#define UF_MACHINE_ACCOUNT_MASK (\
-               UF_INTERDOMAIN_TRUST_ACCOUNT |\
-               UF_WORKSTATION_TRUST_ACCOUNT |\
-               UF_SERVER_TRUST_ACCOUNT \
-               )
-
-#define UF_ACCOUNT_TYPE_MASK (\
-               UF_TEMP_DUPLICATE_ACCOUNT |\
-               UF_NORMAL_ACCOUNT |\
-               UF_INTERDOMAIN_TRUST_ACCOUNT |\
-               UF_WORKSTATION_TRUST_ACCOUNT |\
-               UF_SERVER_TRUST_ACCOUNT \
-                )
-
-#define UF_SETTABLE_BITS (\
-               UF_SCRIPT |\
-               UF_ACCOUNTDISABLE |\
-               UF_HOMEDIR_REQUIRED  |\
-               UF_LOCKOUT |\
-               UF_PASSWD_NOTREQD |\
-               UF_PASSWD_CANT_CHANGE |\
-               UF_ACCOUNT_TYPE_MASK | \
-               UF_DONT_EXPIRE_PASSWD | \
-               UF_MNS_LOGON_ACCOUNT |\
-               UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED |\
-               UF_SMARTCARD_REQUIRED |\
-               UF_TRUSTED_FOR_DELEGATION |\
-               UF_NOT_DELEGATED |\
-               UF_USE_DES_KEY_ONLY  |\
-               UF_DONT_REQUIRE_PREAUTH \
-               )
-
-/* sAMAccountType */
-#define ATYPE_NORMAL_ACCOUNT                   0x30000000 /* 805306368 */
-#define ATYPE_WORKSTATION_TRUST                        0x30000001 /* 805306369 */
-#define ATYPE_INTERDOMAIN_TRUST                        0x30000002 /* 805306370 */ 
-#define ATYPE_SECURITY_GLOBAL_GROUP            0x10000000 /* 268435456 */
-#define ATYPE_DISTRIBUTION_GLOBAL_GROUP                0x10000001 /* 268435457 */
-#define ATYPE_DISTRIBUTION_UNIVERSAL_GROUP     ATYPE_DISTRIBUTION_GLOBAL_GROUP
-#define ATYPE_SECURITY_LOCAL_GROUP             0x20000000 /* 536870912 */
-#define ATYPE_DISTRIBUTION_LOCAL_GROUP         0x20000001 /* 536870913 */
-
-#define ATYPE_ACCOUNT          ATYPE_NORMAL_ACCOUNT            /* 0x30000000 805306368 */
-#define ATYPE_GLOBAL_GROUP     ATYPE_SECURITY_GLOBAL_GROUP     /* 0x10000000 268435456 */
-#define ATYPE_LOCAL_GROUP      ATYPE_SECURITY_LOCAL_GROUP      /* 0x20000000 536870912 */
-
-/* groupType */
-#define GTYPE_SECURITY_BUILTIN_LOCAL_GROUP     0x80000005      /* -2147483643 */
-#define GTYPE_SECURITY_DOMAIN_LOCAL_GROUP      0x80000004      /* -2147483644 */
-#define GTYPE_SECURITY_GLOBAL_GROUP            0x80000002      /* -2147483646 */
-#define GTYPE_DISTRIBUTION_GLOBAL_GROUP                0x00000002      /* 2 */
-#define GTYPE_DISTRIBUTION_DOMAIN_LOCAL_GROUP  0x00000004      /* 4 */
-#define GTYPE_DISTRIBUTION_UNIVERSAL_GROUP     0x00000008      /* 8 */
+/* account types */
+#define ATYPE_GROUP               0x10000000
+#define ATYPE_USER                0x30000000
 
 /* Mailslot or cldap getdcname response flags */
 #define ADS_PDC            0x00000001  /* DC is PDC */
@@ -252,8 +167,3 @@ typedef void **ADS_MODLIST;
 /* DomainCntrollerAddressType */
 #define ADS_INET_ADDRESS      0x00000001
 #define ADS_NETBIOS_ADDRESS   0x00000002
-
-
-/* ads auth control flags */
-#define ADS_AUTH_DISABLE_KERBEROS 1
-#define ADS_AUTH_NO_BIND 2
index 7783ab4c2f66dbe61ccff212fc059568e652726b..090c5459d1879290b0916128553d432e5586395b 100644 (file)
@@ -45,7 +45,6 @@ typedef struct {
 #define ASN1_BOOLEAN 0x1
 #define ASN1_INTEGER 0x2
 #define ASN1_ENUMERATED 0xa
-#define ASN1_SET 0x31
 
 #define ASN1_MAX_OIDS 20
 
index 1e8d1c3d2932f79f50ea8b6ffe87fefb3913f570..711ae1fd196d1d52f2bad78a020dda8946de48ed 100644 (file)
@@ -60,7 +60,6 @@ struct print_job_info
 typedef struct smb_sign_info {
        BOOL use_smb_signing;
        BOOL negotiated_smb_signing;
-       BOOL temp_smb_signing;
        size_t mac_key_len;
        uint8 mac_key[44];
        uint32 send_seq_num;
index 770af1a6b562e42ef4cb7aa592e47f4c324f6b98..4a138b6db6ad5d97c52e1f930b9d503f539b6cab 100644 (file)
 #undef MMAP_BLACKLIST
 #undef HAVE_IMMEDIATE_STRUCTURES
 #undef HAVE_CUPS
-#undef WITH_SAM
 #undef WITH_LDAP_SAM
 #undef WITH_NISPLUS_SAM
 #undef WITH_TDB_SAM
 #undef HAVE_LDAP
 #undef HAVE_STAT_ST_BLOCKS
 #undef STAT_ST_BLOCKSIZE
-#undef HAVE_STAT_ST_BLKSIZE
 #undef HAVE_DEVICE_MAJOR_FN
 #undef HAVE_DEVICE_MINOR_FN
 #undef HAVE_PASSWD_PW_COMMENT
 #endif
 
 #undef LDAP_SET_REBIND_PROC_ARGS
-#undef HAVE_SENDFILE
-#undef HAVE_SENDFILE64
-#undef LINUX_SENDFILE_API
-#undef LINUX_BROKEN_SENDFILE_API
-#undef WITH_SENDFILE
-#undef FREEBSD_SENDFILE_API
-#undef HPUX_SENDFILE_API
-#undef WITH_ADS
 
 /* The number of bytes in a int.  */
 #undef SIZEOF_INT
 /* Define if you have the <sys/syscall.h> header file.  */
 #undef HAVE_SYS_SYSCALL_H
 
-/* Define if you have the <sys/syslog.h> header file.  */
-#undef HAVE_SYS_SYSLOG_H
-
 /* Define if you have the <sys/termio.h> header file.  */
 #undef HAVE_SYS_TERMIO_H
 
 /* Define if you have the <syscall.h> header file.  */
 #undef HAVE_SYSCALL_H
 
-/* Define if you have the <syslog.h> header file.  */
-#undef HAVE_SYSLOG_H
-
 /* Define if you have the <termio.h> header file.  */
 #undef HAVE_TERMIO_H
 
index 4b0b4b1ac47770b639b84651491349062bbda92c..08858274337ca073b7421e06d444ec022b06c662 100644 (file)
@@ -89,10 +89,9 @@ extern int DEBUGLEVEL;
 #define DBGC_RPC_SRV           6
 #define DBGC_RPC_CLI           7
 #define DBGC_PASSDB            8
-#define DBGC_SAM               9
-#define DBGC_AUTH              10
-#define DBGC_WINBIND           11
-#define DBGC_VFS               12
+#define DBGC_AUTH              9
+#define DBGC_WINBIND           10
+
 
 /* So you can define DBGC_CLASS before including debug.h */
 #ifndef DBGC_CLASS
index 93936463e68fc517e5d03ceaaa0557d5ea554b8e..135d799596c2ce1c01c40709a90446020301e28d 100644 (file)
 /* these are win32 error codes. There are only a few places where
    these matter for Samba, primarily in the NT printing code */
 #define WERR_OK W_ERROR(0)
-#define WERR_BADFUNC W_ERROR(1)
 #define WERR_BADFILE W_ERROR(2)
 #define WERR_ACCESS_DENIED W_ERROR(5)
 #define WERR_BADFID W_ERROR(6)
-#define WERR_NOMEM W_ERROR(8)
-#define WERR_GENERAL_FAILURE W_ERROR(31)
-#define WERR_NOT_SUPPORTED W_ERROR(50)
-#define WERR_PRINTQ_FULL W_ERROR(61)
-#define WERR_NO_SPOOL_SPACE W_ERROR(62)
+#define WERR_BADFUNC W_ERROR(1)
+#define WERR_INSUFFICIENT_BUFFER W_ERROR(122)
 #define WERR_NO_SUCH_SHARE W_ERROR(67)
 #define WERR_ALREADY_EXISTS W_ERROR(80)
-#define WERR_BAD_PASSWORD W_ERROR(86)
 #define WERR_INVALID_PARAM W_ERROR(87)
-#define WERR_INSUFFICIENT_BUFFER W_ERROR(122)
+#define WERR_NOT_SUPPORTED W_ERROR(50)
+#define WERR_BAD_PASSWORD W_ERROR(86)
+#define WERR_NOMEM W_ERROR(8)
 #define WERR_INVALID_NAME W_ERROR(123)
 #define WERR_UNKNOWN_LEVEL W_ERROR(124)
 #define WERR_OBJECT_PATH_INVALID W_ERROR(161)
index 56b8357831268b454c332e907819ae219903c709..6084d583ed6aa5b5235f520f16a76ce39bc81188 100644 (file)
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <netdb.h>
-
-#ifdef HAVE_SYSLOG_H
 #include <syslog.h>
-#else
-#ifdef HAVE_SYS_SYSLOG_H
-#include <sys/syslog.h>
-#endif
-#endif
-
 #include <sys/file.h>
 
 #ifdef HAVE_NETINET_TCP_H
 
 #if HAVE_GSSAPI_GSSAPI_H
 #include <gssapi/gssapi.h>
+#else
+#undef HAVE_KRB5
 #endif
 
 #if HAVE_GSSAPI_GSSAPI_GENERIC_H
 #include <gssapi/gssapi_generic.h>
+#else
+#undef HAVE_KRB5
 #endif
 
-/* we support ADS if we want it and have krb5 and ldap libs */
-#if defined(WITH_ADS) && defined(HAVE_KRB5) && defined(HAVE_LDAP)
+/* we support ADS if we have krb5 and ldap libs */
+#if defined(HAVE_KRB5) && defined(HAVE_LDAP) && defined(HAVE_GSSAPI)
 #define HAVE_ADS
 #endif
 
@@ -706,7 +702,6 @@ extern int errno;
 #include "../tdb/spinlock.h"
 #include "../tdb/tdbutil.h"
 #include "talloc.h"
-#include "nt_status.h"
 #include "ads.h"
 #include "interfaces.h"
 #include "hash.h"
@@ -752,8 +747,6 @@ extern int errno;
 
 #include "passdb.h"
 
-#include "sam.h"
-
 #include "session.h"
 
 #include "asn_1.h"
@@ -762,8 +755,6 @@ extern int errno;
 
 #include "mangle.h"
 
-#include "nsswitch/winbind_client.h"
-
 /*
  * Type for wide character dirent structure.
  * Only d_name is defined by POSIX.
@@ -803,11 +794,6 @@ struct functable {
 
 #include "nsswitch/nss.h"
 
-/* forward declaration from printing.h to get around 
-   header file dependencies */
-
-struct printjob;
-
 /***** automatically generated prototypes *****/
 #include "proto.h"
 
@@ -909,6 +895,24 @@ struct printjob;
 #define ULTRIX_AUTH 1
 #endif
 
+#ifdef HAVE_LIBREADLINE
+#  ifdef HAVE_READLINE_READLINE_H
+#    include <readline/readline.h>
+#    ifdef HAVE_READLINE_HISTORY_H
+#      include <readline/history.h>
+#    endif
+#  else
+#    ifdef HAVE_READLINE_H
+#      include <readline.h>
+#      ifdef HAVE_HISTORY_H
+#        include <history.h>
+#      endif
+#    else
+#      undef HAVE_LIBREADLINE
+#    endif
+#  endif
+#endif
+
 #ifndef HAVE_STRDUP
 char *strdup(const char *s);
 #endif
index 2b45709a5e8583440d6b1f6477531d5b835f9b09..f26956399693f5e3df329ae0a3dc61b298cd0859 100644 (file)
@@ -333,7 +333,7 @@ typedef struct _SMBCCTX {
 
        /** Space to store private data of the server cache.
         */
-       struct smbc_server_cache * server_cache;
+       void * server_cache;
 
        /** INTERNAL functions
         * do _NOT_ touch these from your program !
index 5096e13fc3931230f64dbf445440d159315cd0f4..2538715c4122985046f1368e7478e3be99db7053 100644 (file)
 #define MAX_OPEN_FILES 10000
 #endif
  
+/* the max number of simultanous connections to the server by all clients */
+/* zero means no limit. */
+#define MAXSTATUS 0
+
 #define WORDMAX 0xFFFF
 
 /* the maximum password length before we declare a likely attack */
 #endif
 
 /* the size of the uid cache used to reduce valid user checks */
-#define VUID_CACHE_SIZE 32
+#define UID_CACHE_SIZE 4
 
 /* the following control timings of various actions. Don't change 
    them unless you know what you are doing. These are all in seconds */
 #define IDLE_CLOSED_TIMEOUT (60)
 #define DPTR_IDLE_TIMEOUT (120)
 #define SMBD_SELECT_TIMEOUT (60)
+#define SMBD_SELECT_TIMEOUT_WITH_PENDING_LOCKS (10)
 #define NMBD_SELECT_LOOP (10)
 #define BROWSE_INTERVAL (60)
 #define REGISTRATION_INTERVAL (10*60)
index 0e995039ff51ea97269c44eb5f694d16d421b12c..58e606b40fa453c0242319082edc501610e4a69a 100644 (file)
 #define MSG_SMB_SAM_SYNC     3003
 #define MSG_SMB_SAM_REPL     3004
 
-/* Flags to classify messages - used in message_send_all() */
-/* Sender will filter by flag. */
-
-#define FLAG_MSG_GENERAL       0x0001
-#define FLAG_MSG_SMBD          0x0002
-#define FLAG_MSG_NMBD          0x0004
-#define FLAG_MSG_PRINTING      0x0008
-
 #endif
index 57767fc3c6b883de72cb5bf71ad617b8c84ffaa9..5e2b8f7f64a35825eb5e729af363402c0fd770b7 100644 (file)
@@ -181,7 +181,6 @@ typedef struct nt_printer_driver_info_level
 #define SPOOL_DSDRIVER_KEY             "DsDriver"
 #define SPOOL_DSUSER_KEY               "DsUser"
 #define SPOOL_PNPDATA_KEY              "PnPData"
-#define SPOOL_OID_KEY                  "OID"
 
 /* container for a single registry key */
 
@@ -351,7 +350,7 @@ typedef struct _form
 
 #define SPOOLSS_NOTIFY_MSG_UNIX_JOBID 0x0001    /* Job id is unix  */
 
-typedef struct spoolss_notify_msg {
+struct spoolss_notify_msg {
        fstring printer;        /* Name of printer notified */
        uint32 type;            /* Printer or job notify */
        uint32 field;           /* Notify field changed */
@@ -362,18 +361,6 @@ typedef struct spoolss_notify_msg {
                uint32 value[2];
                char *data;
        } notify;
-} SPOOLSS_NOTIFY_MSG;
-
-typedef struct {
-       fstring                 printername;
-       uint32                  num_msgs;
-       SPOOLSS_NOTIFY_MSG      *msgs;
-} SPOOLSS_NOTIFY_MSG_GROUP;
-
-typedef struct {
-       TALLOC_CTX                      *ctx;
-       uint32                          num_groups;
-       SPOOLSS_NOTIFY_MSG_GROUP        *msg_groups;
-} SPOOLSS_NOTIFY_MSG_CTR;
+};
 
 #endif /* NT_PRINTING_H_ */
index 9774a6acd95d401c4195e910d2abed79cbcd5880..ecf603b8fcc9f35db321db98c6be88285f757a60 100644 (file)
@@ -43,7 +43,6 @@ struct printjob {
        fstring jobname; /* the job name given to us by the client */
        fstring user; /* the user who started the job */
        fstring queuename; /* service number of printer for this job */
-       NT_DEVICEMODE *nt_devmode;
 };
 
 /* Information for print interfaces */
diff --git a/source3/include/rpc_client_proto.h b/source3/include/rpc_client_proto.h
deleted file mode 100644 (file)
index 0ecb195..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-#ifndef _RPC_CLIENT_PROTO_H_
-#define _RPC_CLIENT_PROTO_H_
-/* This file is automatically generated with "make proto". DO NOT EDIT */
-
-
-/*The following definitions come from  lib/util_list.c  */
-
-BOOL copy_policy_hnd (POLICY_HND *dest, const POLICY_HND *src);
-BOOL compare_rpc_hnd_node(const RPC_HND_NODE *x, 
-                         const RPC_HND_NODE *y);
-BOOL RpcHndList_set_connection(const POLICY_HND *hnd, 
-                              struct cli_connection *con);
-BOOL RpcHndList_del_connection(const POLICY_HND *hnd);
-struct cli_connection* RpcHndList_get_connection(const POLICY_HND *hnd);
-
-/*The following definitions come from  rpc_client/cli_connect.c  */
-
-void init_connections(void);
-void free_connections(void);
-void cli_connection_free(struct cli_connection *con);
-void cli_connection_unlink(struct cli_connection *con);
-BOOL cli_connection_init(const char *srv_name, char *pipe_name,
-                         struct cli_connection **con);
-BOOL cli_connection_init_auth(const char *srv_name, char *pipe_name,
-                              struct cli_connection **con,
-                              cli_auth_fns * auth, void *auth_creds);
-struct _cli_auth_fns *cli_conn_get_authfns(struct cli_connection *con);
-void *cli_conn_get_auth_creds(struct cli_connection *con);
-BOOL rpc_hnd_pipe_req(const POLICY_HND * hnd, uint8 op_num,
-                      prs_struct * data, prs_struct * rdata);
-BOOL rpc_con_pipe_req(struct cli_connection *con, uint8 op_num,
-                      prs_struct * data, prs_struct * rdata);
-BOOL rpc_con_ok(struct cli_connection *con);
-
-/*The following definitions come from  rpc_client/cli_login.c  */
-
-BOOL cli_nt_setup_creds(struct cli_state *cli, unsigned char mach_pwd[16]);
-BOOL cli_nt_srv_pwset(struct cli_state *cli, unsigned char *new_hashof_mach_pwd);
-BOOL cli_nt_login_interactive(struct cli_state *cli, char *domain, char *username, 
-                              uint32 smb_userid_low, char *password,
-                              NET_ID_INFO_CTR *ctr, NET_USER_INFO_3 *user_info3);
-BOOL cli_nt_login_network(struct cli_state *cli, char *domain, char *username, 
-                          uint32 smb_userid_low, char lm_chal[8], 
-                         char *lm_chal_resp, char *nt_chal_resp,
-                          NET_ID_INFO_CTR *ctr, NET_USER_INFO_3 *user_info3);
-BOOL cli_nt_logoff(struct cli_state *cli, NET_ID_INFO_CTR *ctr);
-
-/*The following definitions come from  rpc_client/cli_lsarpc.c  */
-
-BOOL do_lsa_open_policy(struct cli_state *cli,
-                       char *system_name, POLICY_HND *hnd,
-                       BOOL sec_qos);
-BOOL do_lsa_query_info_pol(struct cli_state *cli,
-                       POLICY_HND *hnd, uint16 info_class,
-                       fstring domain_name, DOM_SID *domain_sid);
-BOOL do_lsa_close(struct cli_state *cli, POLICY_HND *hnd);
-BOOL cli_lsa_get_domain_sid(struct cli_state *cli, char *server);
-uint32 lsa_open_policy(const char *system_name, POLICY_HND *hnd,
-                      BOOL sec_qos, uint32 des_access);
-uint32 lsa_lookup_sids(POLICY_HND *hnd, int num_sids, DOM_SID *sids,
-                      char ***names, uint32 **types, int *num_names);
-uint32 lsa_lookup_names(POLICY_HND *hnd, int num_names, char **names,
-                       DOM_SID **sids, uint32 **types, int *num_sids);
-
-/*The following definitions come from  rpc_client/cli_netlogon.c  */
-
-BOOL cli_net_logon_ctrl2(struct cli_state *cli, uint32 status_level);
-BOOL cli_net_auth2(struct cli_state *cli, uint16 sec_chan, 
-                   uint32 neg_flags, DOM_CHAL *srv_chal);
-BOOL cli_net_req_chal(struct cli_state *cli, DOM_CHAL *clnt_chal, DOM_CHAL *srv_chal);
-BOOL cli_net_srv_pwset(struct cli_state *cli, uint8 hashed_mach_pwd[16]);
-BOOL cli_net_sam_logon(struct cli_state *cli, NET_ID_INFO_CTR *ctr, NET_USER_INFO_3 *user_info3);
-BOOL cli_net_sam_logoff(struct cli_state *cli, NET_ID_INFO_CTR *ctr);
-BOOL change_trust_account_password( char *domain, char *remote_machine_list);
-
-/*The following definitions come from  rpc_client/cli_pipe.c  */
-
-BOOL rpc_api_pipe_req(struct cli_state *cli, uint8 op_num,
-                      prs_struct *data, prs_struct *rdata);
-BOOL rpc_pipe_bind(struct cli_state *cli, char *pipe_name, char *my_name);
-void cli_nt_set_ntlmssp_flgs(struct cli_state *cli, uint32 ntlmssp_flgs);
-BOOL cli_nt_session_open(struct cli_state *cli, char *pipe_name);
-void cli_nt_session_close(struct cli_state *cli);
-
-/*The following definitions come from  rpc_client/cli_reg.c  */
-
-BOOL do_reg_connect(struct cli_state *cli, char *full_keyname, char *key_name,
-                               POLICY_HND *reg_hnd);
-BOOL do_reg_open_hklm(struct cli_state *cli, uint16 unknown_0, uint32 level,
-                               POLICY_HND *hnd);
-BOOL do_reg_open_hku(struct cli_state *cli, uint16 unknown_0, uint32 level,
-                               POLICY_HND *hnd);
-BOOL do_reg_flush_key(struct cli_state *cli, POLICY_HND *hnd);
-BOOL do_reg_query_key(struct cli_state *cli, POLICY_HND *hnd,
-                               char *class, uint32 *class_len,
-                               uint32 *num_subkeys, uint32 *max_subkeylen,
-                               uint32 *max_subkeysize, uint32 *num_values,
-                               uint32 *max_valnamelen, uint32 *max_valbufsize,
-                               uint32 *sec_desc, NTTIME *mod_time);
-BOOL do_reg_unknown_1a(struct cli_state *cli, POLICY_HND *hnd, uint32 *unk);
-BOOL do_reg_query_info(struct cli_state *cli, POLICY_HND *hnd,
-                               char *key_value, uint32* key_type);
-BOOL do_reg_set_key_sec(struct cli_state *cli, POLICY_HND *hnd, SEC_DESC_BUF *sec_desc_buf);
-BOOL do_reg_get_key_sec(struct cli_state *cli, POLICY_HND *hnd, uint32 *sec_buf_size, SEC_DESC_BUF **ppsec_desc_buf);
-BOOL do_reg_delete_val(struct cli_state *cli, POLICY_HND *hnd, char *val_name);
-BOOL do_reg_delete_key(struct cli_state *cli, POLICY_HND *hnd, char *key_name);
-BOOL do_reg_create_key(struct cli_state *cli, POLICY_HND *hnd,
-                               char *key_name, char *key_class,
-                               SEC_ACCESS *sam_access,
-                               POLICY_HND *key);
-BOOL do_reg_enum_key(struct cli_state *cli, POLICY_HND *hnd,
-                               int key_index, char *key_name,
-                               uint32 *unk_1, uint32 *unk_2,
-                               time_t *mod_time);
-BOOL do_reg_create_val(struct cli_state *cli, POLICY_HND *hnd,
-                               char *val_name, uint32 type, BUFFER3 *data);
-BOOL do_reg_enum_val(struct cli_state *cli, POLICY_HND *hnd,
-                               int val_index, int max_valnamelen, int max_valbufsize,
-                               fstring val_name,
-                               uint32 *val_type, BUFFER2 *value);
-BOOL do_reg_open_entry(struct cli_state *cli, POLICY_HND *hnd,
-                               char *key_name, uint32 unk_0,
-                               POLICY_HND *key_hnd);
-BOOL do_reg_close(struct cli_state *cli, POLICY_HND *hnd);
-
-/*The following definitions come from  rpc_client/cli_samr.c  */
-
-BOOL get_samr_query_usergroups(struct cli_state *cli, 
-                               POLICY_HND *pol_open_domain, uint32 user_rid,
-                               uint32 *num_groups, DOM_GID *gid);
-BOOL get_samr_query_userinfo(struct cli_state *cli, 
-                               POLICY_HND *pol_open_domain,
-                               uint32 info_level,
-                               uint32 user_rid, SAM_USER_INFO_21 *usr);
-BOOL do_samr_chgpasswd_user(struct cli_state *cli,
-               char *srv_name, char *user_name,
-               char nt_newpass[516], uchar nt_oldhash[16],
-               char lm_newpass[516], uchar lm_oldhash[16]);
-BOOL do_samr_unknown_38(struct cli_state *cli, char *srv_name);
-BOOL do_samr_query_dom_info(struct cli_state *cli, 
-                               POLICY_HND *domain_pol, uint16 switch_value);
-BOOL do_samr_enum_dom_users(struct cli_state *cli, 
-                               POLICY_HND *pol, uint16 num_entries, uint16 unk_0,
-                               uint16 acb_mask, uint16 unk_1, uint32 size,
-                               struct acct_info **sam,
-                               int *num_sam_users);
-BOOL do_samr_connect(struct cli_state *cli, 
-                               char *srv_name, uint32 unknown_0,
-                               POLICY_HND *connect_pol);
-BOOL do_samr_open_user(struct cli_state *cli, 
-                               POLICY_HND *pol, uint32 unk_0, uint32 rid, 
-                               POLICY_HND *user_pol);
-BOOL do_samr_open_domain(struct cli_state *cli, 
-                               POLICY_HND *connect_pol, uint32 rid, DOM_SID *sid,
-                               POLICY_HND *domain_pol);
-BOOL do_samr_query_unknown_12(struct cli_state *cli, 
-                               POLICY_HND *pol, uint32 rid, uint32 num_gids, uint32 *gids,
-                               uint32 *num_aliases,
-                               fstring als_names    [MAX_LOOKUP_SIDS],
-                               uint32  num_als_users[MAX_LOOKUP_SIDS]);
-BOOL do_samr_query_usergroups(struct cli_state *cli, 
-                               POLICY_HND *pol, uint32 *num_groups, DOM_GID *gid);
-BOOL do_samr_query_userinfo(struct cli_state *cli, 
-                               POLICY_HND *pol, uint16 switch_value, void* usr);
-BOOL do_samr_close(struct cli_state *cli, POLICY_HND *hnd);
-
-/*The following definitions come from  rpc_client/cli_spoolss_notify.c  */
-
-BOOL spoolss_disconnect_from_client( struct cli_state *cli);
-BOOL spoolss_connect_to_client( struct cli_state *cli, char *remote_machine);
-BOOL cli_spoolss_reply_open_printer(struct cli_state *cli, char *printer, uint32 localprinter, uint32 type, uint32 *status, POLICY_HND *handle);
-BOOL cli_spoolss_reply_rrpcn(struct cli_state *cli, POLICY_HND *handle, 
-                            uint32 change_low, uint32 change_high, uint32 *status);
-BOOL cli_spoolss_reply_close_printer(struct cli_state *cli, POLICY_HND *handle, uint32 *status);
-
-/*The following definitions come from  rpc_client/cli_srvsvc.c  */
-
-BOOL do_srv_net_srv_conn_enum(struct cli_state *cli,
-                       char *server_name, char *qual_name,
-                       uint32 switch_value, SRV_CONN_INFO_CTR *ctr,
-                       uint32 preferred_len,
-                       ENUM_HND *hnd);
-BOOL do_srv_net_srv_sess_enum(struct cli_state *cli,
-                       char *server_name, char *qual_name,
-                       uint32 switch_value, SRV_SESS_INFO_CTR *ctr,
-                       uint32 preferred_len,
-                       ENUM_HND *hnd);
-BOOL do_srv_net_srv_share_enum(struct cli_state *cli,
-                       char *server_name, 
-                       uint32 switch_value, SRV_R_NET_SHARE_ENUM *r_o,
-                       uint32 preferred_len, ENUM_HND *hnd);
-BOOL do_srv_net_srv_file_enum(struct cli_state *cli,
-                       char *server_name, char *qual_name,
-                       uint32 switch_value, SRV_FILE_INFO_CTR *ctr,
-                       uint32 preferred_len,
-                       ENUM_HND *hnd);
-BOOL do_srv_net_srv_get_info(struct cli_state *cli,
-                       char *server_name, uint32 switch_value, SRV_INFO_CTR *ctr);
-
-/*The following definitions come from  rpc_client/cli_use.c  */
-
-void init_cli_use(void);
-void free_cli_use(void);
-struct cli_state *cli_net_use_add(const char *srv_name,
-                                 const struct ntuser_creds *usr_creds,
-                                 BOOL reuse, BOOL *is_new);
-BOOL cli_net_use_del(const char *srv_name,
-                    const struct ntuser_creds *usr_creds,
-                    BOOL force_close, BOOL *connection_closed);
-void cli_net_use_enum(uint32 *num_cons, struct use_info ***use);
-void cli_use_wait_keyboard(void);
-
-/*The following definitions come from  rpc_client/cli_wkssvc.c  */
-
-BOOL do_wks_query_info(struct cli_state *cli, 
-                       char *server_name, uint32 switch_value,
-                       WKS_INFO_100 *wks100);
-
-/*The following definitions come from  rpc_client/ncacn_np_use.c  */
-
-BOOL ncacn_np_use_del(const char *srv_name, const char *pipe_name,
-                      const vuser_key * key,
-                      BOOL force_close, BOOL *connection_closed);
-struct ncacn_np *ncacn_np_initialise(struct ncacn_np *msrpc,
-                                     const vuser_key * key);
-struct ncacn_np *ncacn_np_use_add(const char *pipe_name,
-                                  const vuser_key * key,
-                                  const char *srv_name,
-                                  const struct ntuser_creds *ntc,
-                                  BOOL reuse, BOOL *is_new_connection);
-#endif /* _PROTO_H_ */
index fb849f82380600154408d72c247e5c581ad61e60..80b00fbaad4801a303322f5bd3bffbc3a6957ace 100644 (file)
@@ -4,7 +4,6 @@
    Copyright (C) Andrew Tridgell 1992-1997
    Copyright (C) Luke Kenneth Casson Leighton 1996-1997
    Copyright (C) Paul Ashton 1997
-   Copyright (C) Jean François Micouleau 2002
    
    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
 
 
 /* NETLOGON pipe */
-#define NET_SAMLOGON           0x02
-#define NET_SAMLOGOFF          0x03
-#define NET_REQCHAL            0x04
-#define NET_AUTH               0x05
-#define NET_SRVPWSET           0x06
-#define NET_SAM_DELTAS         0x07
-#define NET_LOGON_CTRL         0x0c
-#define NET_AUTH2              0x0f
-#define NET_LOGON_CTRL2                0x0e
-#define NET_SAM_SYNC           0x10
-#define NET_TRUST_DOM_LIST     0x13
-#define NET_AUTH3              0x1a
+#define NET_SAMLOGON           0x02
+#define NET_SAMLOGOFF          0x03
+#define NET_REQCHAL            0x04
+#define NET_AUTH               0x05
+#define NET_SRVPWSET           0x06
+#define NET_SAM_DELTAS         0x07
+#define NET_LOGON_CTRL         0x0c
+#define NET_AUTH2              0x0f
+#define NET_LOGON_CTRL2        0x0e
+#define NET_SAM_SYNC           0x10
+#define NET_TRUST_DOM_LIST     0x13
 
 /* Secure Channel types.  used in NetrServerAuthenticate negotiation */
 #define SEC_CHAN_WKSTA   2
 #define SEC_CHAN_BDC     6
 
 /* Returned delta types */
-#define SAM_DELTA_DOMAIN_INFO    0x01
-#define SAM_DELTA_GROUP_INFO     0x02
-#define SAM_DELTA_RENAME_GROUP   0x04
-#define SAM_DELTA_ACCOUNT_INFO   0x05
-#define SAM_DELTA_RENAME_USER    0x07
-#define SAM_DELTA_GROUP_MEM      0x08
-#define SAM_DELTA_ALIAS_INFO     0x09
-#define SAM_DELTA_RENAME_ALIAS   0x0b
-#define SAM_DELTA_ALIAS_MEM      0x0c
-#define SAM_DELTA_POLICY_INFO    0x0d
-#define SAM_DELTA_TRUST_DOMS     0x0e
-#define SAM_DELTA_PRIVS_INFO     0x10 /* DT_DELTA_ACCOUNTS */
-#define SAM_DELTA_SECRET_INFO    0x12
-#define SAM_DELTA_DELETE_GROUP   0x14
-#define SAM_DELTA_DELETE_USER    0x15
-#define SAM_DELTA_MODIFIED_COUNT 0x16
+#define SAM_DELTA_DOMAIN_INFO  0x01 /* Domain */
+#define SAM_DELTA_GROUP_INFO   0x02 /* Domain groups */
+#define SAM_DELTA_ACCOUNT_INFO 0x05 /* Users */
+#define SAM_DELTA_GROUP_MEM    0x08 /* Group membership */
+#define SAM_DELTA_ALIAS_INFO   0x09 /* Local groups */
+#define SAM_DELTA_ALIAS_MEM    0x0C /* Local group membership */
+#define SAM_DELTA_DOM_INFO     0x0D /* Privilige stuff */
+#define SAM_DELTA_UNK0E_INFO   0x0e /* Privilige stuff */
+#define SAM_DELTA_PRIVS_INFO   0x10 /* Privilige stuff */
+#define SAM_DELTA_UNK12_INFO   0x12 /* Privilige stuff */
+#define SAM_DELTA_SAM_STAMP    0x16 /* Some kind of journal record? */
 
 /* SAM database types */
 #define SAM_DATABASE_DOMAIN    0x00 /* Domain users and groups */
 #define SAM_DATABASE_BUILTIN   0x01 /* BUILTIN users and groups */
-#define SAM_DATABASE_PRIVS     0x02 /* Privileges */
+#define SAM_DATABASE_PRIVS     0x02 /* Priviliges? */
 
 #if 0
 /* I think this is correct - it's what gets parsed on the wire. JRA. */
@@ -164,8 +157,8 @@ typedef struct net_user_info_3
        uint32 buffer_dom_id; /* undocumented logon domain id pointer */
        uint8 padding[40];    /* unused padding bytes.  expansion room */
 
-       uint32 num_other_sids; /* number of foreign/trusted domain sids */
-       uint32 buffer_other_sids;
+       uint32 num_other_sids; /* 0 - num_sids */
+       uint32 buffer_other_sids; /* NULL - undocumented pointer to SIDs. */
        
        UNISTR2 uni_user_name;    /* username unicode string */
        UNISTR2 uni_full_name;    /* user's full name unicode string */
@@ -184,7 +177,7 @@ typedef struct net_user_info_3
 
        uint32 num_other_groups;        /* other groups */
        DOM_GID *other_gids; /* group info */
-       DOM_SID2 *other_sids; /* foreign/trusted domain SIDs */
+       DOM_SID2 *other_sids; /* undocumented - domain SIDs */
 
 } NET_USER_INFO_3;
 
@@ -377,23 +370,6 @@ typedef struct net_r_auth2_info
        NTSTATUS status; /* return code */
 } NET_R_AUTH_2;
 
-/* NET_Q_AUTH_3 */
-typedef struct net_q_auth3_info
-{
-    DOM_LOG_INFO clnt_id;      /* client identification info */
-    DOM_CHAL clnt_chal;                /* client-calculated credentials */
-    NEG_FLAGS clnt_flgs;       /* usually 0x6007 ffff */
-} NET_Q_AUTH_3;
-
-/* NET_R_AUTH_3 */
-typedef struct net_r_auth3_info
-{
-       DOM_CHAL srv_chal;      /* server-calculated credentials */
-       NEG_FLAGS srv_flgs;     /* usually 0x6007 ffff */
-       uint32 unknown;         /* 0x0000045b */
-       NTSTATUS status;        /* return code */
-} NET_R_AUTH_3;
-
 
 /* NET_Q_SRV_PWSET */
 typedef struct net_q_srv_pwset_info
@@ -716,37 +692,51 @@ typedef struct sam_alias_mem_info_info
 } SAM_ALIAS_MEM_INFO;
 
 
-/* SAM_DELTA_POLICY (0x0D) */
+/* SAM_DELTA_DOM (0x0D) */
 typedef struct
 {
-       uint32   max_log_size; /* 0x5000 */
-       UINT64_S audit_retention_period; /* 0 */
-       uint32   auditing_mode; /* 0 */
-       uint32   num_events;
-       uint32   ptr_events;
-       UNIHDR   hdr_dom_name;
-       uint32   sid_ptr;
-
-       uint32   paged_pool_limit; /* 0x02000000 */
-       uint32   non_paged_pool_limit; /* 0x00100000 */
-       uint32   min_workset_size; /* 0x00010000 */
-       uint32   max_workset_size; /* 0x0f000000 */
-       uint32   page_file_limit; /* 0 */
-       UINT64_S time_limit; /* 0 */
-       NTTIME   modify_time; /* 0x3c*/
-       NTTIME   create_time; /* a7080110 */
-       BUFHDR2  hdr_sec_desc;
-
-       uint32   num_event_audit_options;
-       uint32   event_audit_option;
-
-       UNISTR2  domain_name;
+       uint32 unknown1; /* 0x5000 */
+       uint32 unknown2; /* 0 */
+       uint32 unknown3; /* 0 */
+       uint32 unknown4; /* 0 */
+       uint32 count1;
+       uint32 ptr1;
+       uint16 count2;
+       uint16 count3;
+       uint32 ptr2;
+       uint32 ptr3;
+
+       uint32 unknown4b; /* 0x02000000 */
+       uint32 unknown5; /* 0x00100000 */
+       uint32 unknown6; /* 0x00010000 */
+       uint32 unknown7; /* 0x0f000000 */
+       uint32 unknown8; /* 0 */
+       uint32 unknown9; /* 0 */
+       uint32 unknown10; /* 0 */
+       uint32 unknown11; /* 0x3c*/
+       uint32 unknown12; /* 0*/
+
+       uint32 unknown13; /* a7080110 */
+       uint32 unknown14; /* 01bfb0dd */
+       uint32 unknown15; /* 0f */
+       uint32 unknown16; /* 68 */
+       uint32 unknown17; /* 00169000 */
+
+       uint32 count4;
+       uint32 unknown18; /* 0  times count4 */
+       
+       uint32 unknown19; /* 8 */
+
+       uint32 unknown20; /* 0x04 times count1 */
+       
+       uint32 ptr4;
+       
+       UNISTR2 domain_name;
        DOM_SID2 domain_sid;
 
-       BUFFER4  buf_sec_desc;
-} SAM_DELTA_POLICY;
+} SAM_DELTA_DOM;
 
-/* SAM_DELTA_TRUST_DOMS */
+/* SAM_DELTA_UNK0E (0x0e) */
 typedef struct
 {
        uint32 buf_size;
@@ -764,29 +754,34 @@ typedef struct
        uint32 unknown3;
        UNISTR2 domain;
 
-} SAM_DELTA_TRUSTDOMS;
+} SAM_DELTA_UNK0E;
 
 /* SAM_DELTA_PRIVS (0x10) */
 typedef struct
 {
+       uint32 buf_size;
+       SEC_DESC *sec_desc;
        DOM_SID2 sid;
 
        uint32 priv_count;
-       uint32 priv_control;
-
-       uint32 priv_attr_ptr;
-       uint32 priv_name_ptr;
-
-       uint32   paged_pool_limit; /* 0x02000000 */
-       uint32   non_paged_pool_limit; /* 0x00100000 */
-       uint32   min_workset_size; /* 0x00010000 */
-       uint32   max_workset_size; /* 0x0f000000 */
-       uint32   page_file_limit; /* 0 */
-       UINT64_S time_limit; /* 0 */
-       uint32   system_flags; /* 1 */
-       BUFHDR2  hdr_sec_desc;
+       uint32 reserved1; /* 0x0 */
+
+       uint32 ptr1;
+       uint32 ptr2;
+
+       uint32 unknown1;
+       uint32 unknown2;
+       uint32 unknown3;
+       uint32 unknown4;
+       uint32 unknown5;
+       uint32 unknown6;
+       uint32 unknown7;
+       uint32 unknown8;
+       uint32 unknown9;
        
        uint32 buf_size2;
+       uint32 ptr3;
+       uint32 unknown10; /* 48 bytes 0x0*/
        
        uint32 attribute_count;
        uint32 *attributes;
@@ -795,10 +790,10 @@ typedef struct
        UNIHDR *hdr_privslist;
        UNISTR2 *uni_privslist;
 
-       BUFFER4 buf_sec_desc;
+
 } SAM_DELTA_PRIVS;
 
-/* SAM_DELTA_SECRET */
+/* SAM_DELTA_UNK12 (0x12) */
 typedef struct
 {
        uint32 buf_size;
@@ -832,15 +827,15 @@ typedef struct
        uint32 buf_size3;
        SEC_DESC *sec_desc2;
 
-} SAM_DELTA_SECRET;
+} SAM_DELTA_UNK12;
 
-/* SAM_DELTA_MOD_COUNT (0x16) */
+/* SAM_DELTA_STAMP (0x16) */
 typedef struct
 {
         uint32 seqnum;
         uint32 dom_mod_count_ptr;
        UINT64_S dom_mod_count;  /* domain mod count at last sync */
-} SAM_DELTA_MOD_COUNT;
+} SAM_DELTA_STAMP;
 
 typedef union sam_delta_ctr_info
 {
@@ -850,11 +845,11 @@ typedef union sam_delta_ctr_info
        SAM_GROUP_MEM_INFO grp_mem_info;
        SAM_ALIAS_INFO     alias_info  ;
        SAM_ALIAS_MEM_INFO als_mem_info;
-       SAM_DELTA_POLICY   policy_info;
+       SAM_DELTA_DOM      dom_info;
        SAM_DELTA_PRIVS    privs_info;
-       SAM_DELTA_MOD_COUNT mod_count;
-       SAM_DELTA_TRUSTDOMS trustdoms_info;
-       SAM_DELTA_SECRET   secret_info;
+       SAM_DELTA_STAMP    stamp;
+       SAM_DELTA_UNK0E    unk0e_info;
+       SAM_DELTA_UNK12    unk12_info;
 } SAM_DELTA_CTR;
 
 /* NET_R_SAM_SYNC */
index 456825a5f5c645668a14d0813a6fbecb7f872e91..b7acf44c5de65e036591b499581a1e7829cbbe80 100755 (executable)
@@ -1240,8 +1240,8 @@ typedef struct job_info_ctr_info
 {
        union
        {
-               JOB_INFO_1 *job_info_1;
-               JOB_INFO_2 *job_info_2;
+               JOB_INFO_1 **job_info_1;
+               JOB_INFO_2 **job_info_2;
                void *info;
        } job;
 
diff --git a/source3/include/sids.h b/source3/include/sids.h
new file mode 100644 (file)
index 0000000..860d96b
--- /dev/null
@@ -0,0 +1,39 @@
+/* 
+   Unix SMB/CIFS implementation.
+   SMB parameters and setup
+   Copyright (C) Andrew Tridgell              1992-2000
+   Copyright (C) Luke Kenneth Casson Leighton 1996-2000
+   Copyright (C) Elrond                            2000
+   
+   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., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#ifndef _SIDS_H
+#define _SIDS_H 
+
+extern DOM_SID global_sam_sid;
+extern fstring global_sam_name;
+
+extern DOM_SID global_member_sid;
+
+extern DOM_SID global_sid_S_1_5_32; /* local well-known domain */
+extern DOM_SID global_sid_S_1_1;    /* Global Domain */
+extern DOM_SID global_sid_NULL;
+
+extern const DOM_SID *global_sid_everyone;
+extern const DOM_SID *global_sid_system;   /* SYSTEM */
+extern const DOM_SID *global_sid_builtin;
+
+#endif /* _SIDS_H */
index c39ebed950f1e97f5ab94ebfd862ee474a48c069..263dd67c548197e42fda5510a951dcedbe560d0c 100644 (file)
@@ -3,7 +3,7 @@
    SMB parameters and setup, plus a whole lot more.
    
    Copyright (C) Andrew Tridgell              1992-2000
-   Copyright (C) John H Terpstra              1996-2002
+   Copyright (C) John H Terpstra              1996-2000
    Copyright (C) Luke Kenneth Casson Leighton 1996-2000
    Copyright (C) Paul Ashton                  1998-2000
    Copyright (C) Simo Sorce                   2001-2002
@@ -193,6 +193,44 @@ typedef struct nttime_info
 } NTTIME;
 
 
+/* The Splint code analysis tool doesn't like immediate structures. */
+
+#ifdef _SPLINT_                      /* http://www.splint.org */
+#undef HAVE_IMMEDIATE_STRUCTURES
+#endif
+
+/* the following rather strange looking definitions of NTSTATUS and WERROR
+   and there in order to catch common coding errors where different error types
+   are mixed up. This is especially important as we slowly convert Samba
+   from using BOOL for internal functions 
+*/
+
+#if defined(HAVE_IMMEDIATE_STRUCTURES)
+typedef struct {uint32 v;} NTSTATUS;
+#define NT_STATUS(x) ((NTSTATUS) { x })
+#define NT_STATUS_V(x) ((x).v)
+#else
+typedef uint32 NTSTATUS;
+#define NT_STATUS(x) (x)
+#define NT_STATUS_V(x) (x)
+#endif
+
+#if defined(HAVE_IMMEDIATE_STRUCTURES)
+typedef struct {uint32 v;} WERROR;
+#define W_ERROR(x) ((WERROR) { x })
+#define W_ERROR_V(x) ((x).v)
+#else
+typedef uint32 WERROR;
+#define W_ERROR(x) (x)
+#define W_ERROR_V(x) (x)
+#endif
+
+#define NT_STATUS_IS_OK(x) (NT_STATUS_V(x) == 0)
+#define NT_STATUS_IS_ERR(x) ((NT_STATUS_V(x) & 0xc0000000) == 0xc0000000)
+#define NT_STATUS_EQUAL(x,y) (NT_STATUS_V(x) == NT_STATUS_V(y))
+#define W_ERROR_IS_OK(x) (W_ERROR_V(x) == 0)
+
+
 /* Allowable account control bits */
 #define ACB_DISABLED   0x0001  /* 1 = User account disabled */
 #define ACB_HOMDIRREQ  0x0002  /* 1 = Home directory required */
@@ -353,7 +391,6 @@ typedef struct files_struct
        BOOL delete_on_close;
        SMB_OFF_T pos;
        SMB_OFF_T size;
-       SMB_OFF_T initial_allocation_size; /* Faked up initial allocation on disk. */
        mode_t mode;
        uint16 vuid;
        write_bmpx_struct *wbmpx_ptr;
@@ -393,9 +430,9 @@ typedef struct
   time_t status_time;
 } dir_status_struct;
 
-struct vuid_cache {
-  unsigned int entries;
-  uint16 list[VUID_CACHE_SIZE];
+struct uid_cache {
+  int entries;
+  uid_t list[UID_CACHE_SIZE];
 };
 
 typedef struct
@@ -424,8 +461,7 @@ typedef struct connection_struct
        unsigned cnum; /* an index passed over the wire */
        int service;
        BOOL force_user;
-       BOOL force_group;
-       struct vuid_cache vuid_cache;
+       struct uid_cache uid_cache;
        void *dirptr;
        BOOL printer;
        BOOL ipc;
@@ -616,7 +652,7 @@ typedef struct sam_passwd
                
                DATA_BLOB lm_pw; /* .data is Null if no password */
                DATA_BLOB nt_pw; /* .data is Null if no password */
-               char* plaintext_pw; /* is Null if not available */
+               DATA_BLOB plaintext_pw; /* .data is Null if not available */
                
                uint16 acct_ctrl; /* account info (ACB_xxxx bit-mask) */
                uint32 unknown_3; /* 0x00ff ffff */
@@ -680,7 +716,6 @@ struct connections_data {
        char addr[24];
        char machine[FSTRING_LEN];
        time_t start;
-       uint32 bcast_msg_flags;
 };
 
 
@@ -753,16 +788,12 @@ struct bitmap {
        int n;
 };
 
-#define FLAG_BASIC     0x0001 /* fundamental options */
-#define FLAG_SHARE     0x0002 /* file sharing options */
-#define FLAG_PRINT     0x0004 /* printing options */
-#define FLAG_GLOBAL    0x0008 /* local options that should be globally settable in SWAT */
-#define FLAG_WIZARD    0x0010 /* Parameters that the wizard will operate on */
-#define FLAG_ADVANCED  0x0020 /* Parameters that the wizard will operate on */
-#define FLAG_DEVELOPER         0x0040 /* Parameters that the wizard will operate on */
-#define FLAG_DEPRECATED 0x1000 /* options that should no longer be used */
-#define FLAG_HIDE      0x2000 /* options that should be hidden in SWAT */
-#define FLAG_DOS_STRING 0x4000 /* convert from UNIX to DOS codepage when reading this string. */
+#define FLAG_BASIC     0x01 /* fundamental options */
+#define FLAG_SHARE     0x02 /* file sharing options */
+#define FLAG_PRINT     0x04 /* printing options */
+#define FLAG_GLOBAL    0x08 /* local options that should be globally settable in SWAT */
+#define FLAG_DEPRECATED 0x10 /* options that should no longer be used */
+#define FLAG_HIDE      0x20 /* options that should be hidden in SWAT */
 
 #ifndef LOCKING_VERSION
 #define LOCKING_VERSION 4
@@ -1116,17 +1147,17 @@ struct bitmap {
 #define FILE_SHARE_DELETE 4
 
 /* FileAttributesField */
-#define FILE_ATTRIBUTE_READONLY                0x001L
-#define FILE_ATTRIBUTE_HIDDEN          0x002L
-#define FILE_ATTRIBUTE_SYSTEM          0x004L
-#define FILE_ATTRIBUTE_DIRECTORY       0x010L
-#define FILE_ATTRIBUTE_ARCHIVE         0x020L
-#define FILE_ATTRIBUTE_NORMAL          0x080L
-#define FILE_ATTRIBUTE_TEMPORARY       0x100L
-#define FILE_ATTRIBUTE_SPARSE          0x200L
-#define FILE_ATTRIBUTE_COMPRESSED      0x800L
-#define FILE_ATTRIBUTE_NONINDEXED      0x2000L
-#define SAMBA_ATTRIBUTES_MASK          0x7F
+#define FILE_ATTRIBUTE_READONLY aRONLY
+#define FILE_ATTRIBUTE_HIDDEN aHIDDEN
+#define FILE_ATTRIBUTE_SYSTEM aSYSTEM
+#define FILE_ATTRIBUTE_DIRECTORY aDIR
+#define FILE_ATTRIBUTE_ARCHIVE aARCH
+#define FILE_ATTRIBUTE_NORMAL 0x80L
+#define FILE_ATTRIBUTE_TEMPORARY 0x100L
+#define FILE_ATTRIBUTE_SPARSE 0x200L
+#define FILE_ATTRIBUTE_COMPRESSED 0x800L
+#define FILE_ATTRIBUTE_NONINDEXED 0x2000L
+#define SAMBA_ATTRIBUTES_MASK 0x7F
 
 /* Flags - combined with attributes. */
 #define FILE_FLAG_WRITE_THROUGH    0x80000000L
@@ -1154,10 +1185,8 @@ struct bitmap {
 #define FILE_EIGHT_DOT_THREE_ONLY 0x0400
 #define FILE_RANDOM_ACCESS        0x0800
 #define FILE_DELETE_ON_CLOSE      0x1000
-#define FILE_OPEN_BY_FILE_ID     0x2000
 
 /* Responses when opening a file. */
-#define FILE_WAS_SUPERSEDED 0
 #define FILE_WAS_OPENED 1
 #define FILE_WAS_CREATED 2
 #define FILE_WAS_OVERWRITTEN 3
@@ -1270,7 +1299,7 @@ char *strdup(char *s);
  */
  
 #define DEFAULT_MAJOR_VERSION 0x04
-#define DEFAULT_MINOR_VERSION 0x09
+#define DEFAULT_MINOR_VERSION 0x05
 
 /* Browser Election Values */
 #define BROWSER_ELECTION_VERSION       0x010f
@@ -1346,9 +1375,6 @@ enum schema_types {SCHEMA_COMPAT, SCHEMA_AD, SCHEMA_SAMBA};
 /* LDAP SSL options */
 enum ldap_ssl_types {LDAP_SSL_ON, LDAP_SSL_OFF, LDAP_SSL_START_TLS};
 
-/* LDAP PASSWD SYNC methods */
-enum ldap_passwd_sync_types {LDAP_PASSWD_SYNC_ON, LDAP_PASSWD_SYNC_OFF, LDAP_PASSWD_SYNC_ONLY};
-
 /* Remote architectures we know about. */
 enum remote_arch_types {RA_UNKNOWN, RA_WFWG, RA_OS2, RA_WIN95, RA_WINNT, RA_WIN2K, RA_SAMBA};
 
@@ -1630,6 +1656,8 @@ struct unix_error_map {
 
 #define SAFE_NETBIOS_CHARS ". -_"
 
+#include "nsswitch/winbindd_nss.h"
+
 /* generic iconv conversion structure */
 typedef struct {
        size_t (*direct)(void *cd, char **inbuf, size_t *inbytesleft,
index e7edb62bde2ca23e97cbacd8fef3b011bdff3966..3ed670d38ba81c126cf704f8768e489cacdfae1d 100644 (file)
@@ -20,6 +20,9 @@
 
 #ifndef _SMB_ACLS_H
 #define _SMB_ACLS_H
+
+#include "includes.h"
+
 #if defined(HAVE_POSIX_ACLS)
 
 /* This is an identity mapping (just remove the SMB_). */
index 71d4bac795243a0a5e84ef631a35547bcc7084be..a2351c705eaede2d1e14f8f71e894540ea38fe8d 100644 (file)
 #define FNUM_OK(fsp,c) (OPEN_FSP(fsp) && (c)==(fsp)->conn)
 
 #define CHECK_FSP(fsp,conn) if (!FNUM_OK(fsp,conn)) \
-                               return(ERROR_DOS(ERRDOS,ERRbadfid)); \
-                       else if((fsp)->fd == -1) \
-                               return(ERROR_DOS(ERRDOS,ERRbadaccess))
+                               return(ERROR_DOS(ERRDOS,ERRbadfid)); \
+                            else if((fsp)->fd == -1) \
+                               return(ERROR_DOS(ERRDOS,ERRbadaccess))
 
 #define CHECK_READ(fsp) if (!(fsp)->can_read) \
-                               return(ERROR_DOS(ERRDOS,ERRbadaccess))
+                               return(ERROR_DOS(ERRDOS,ERRbadaccess))
 #define CHECK_WRITE(fsp) if (!(fsp)->can_write) \
-                               return(ERROR_DOS(ERRDOS,ERRbadaccess))
+                               return(ERROR_DOS(ERRDOS,ERRbadaccess))
 
 #define CHECK_ERROR(fsp) if (HAS_CACHED_ERROR(fsp)) \
-                               return(CACHED_ERROR(fsp))
-
-#define ERROR_WAS_LOCK_DENIED(status) (NT_STATUS_EQUAL((status), NT_STATUS_LOCK_NOT_GRANTED) || \
-                               NT_STATUS_EQUAL((status), NT_STATUS_FILE_LOCK_CONFLICT) )
+                                                               return(CACHED_ERROR(fsp))
 
 /* translates a connection number into a service number */
 #define SNUM(conn)         ((conn)?(conn)->service:-1)
 /* this is how errors are generated */
 #define UNIXERROR(defclass,deferror) unix_error_packet(outbuf,defclass,deferror,__LINE__,__FILE__)
 
-#define SMB_ROUNDUP(x,r) ( ((x)%(r)) ? ( (((x)+(r))/(r))*(r) ) : (x))
+#define SMB_ROUNDUP(x,g) (((x)+((g)-1))&~((g)-1))
+#define SMB_ROUNDUP_ALLOCATION(s) ((s) ? (SMB_ROUNDUP((SMB_OFF_T)((s)+1), ((SMB_OFF_T)SMB_ROUNDUP_ALLOCATION_SIZE))) : 0 )
 
 /* Extra macros added by Ying Chen at IBM - speed increase by inlining. */
 #define smb_buf(buf) (((char *)(buf)) + smb_size + CVAL(buf,smb_wct)*2)
index e501de8c0e2566a8127c0540b4415a35044c6912..82017cee85400be8173ef1c57328ba43e4a2bb65 100644 (file)
@@ -34,7 +34,7 @@ enum flush_reason_enum { SEEK_FLUSH, READ_FLUSH, WRITE_FLUSH, READRAW_FLUSH,
 
 #define PROF_SHMEM_KEY ((key_t)0x07021999)
 #define PROF_SHM_MAGIC 0x6349985
-#define PROF_SHM_VERSION 7
+#define PROF_SHM_VERSION 6
 
 /* time values in the following structure are in microseconds */
 
@@ -65,9 +65,6 @@ struct profile_stats {
        unsigned syscall_write_bytes;   /* bytes written with write syscall */
        unsigned syscall_lseek_count;
        unsigned syscall_lseek_time;
-       unsigned syscall_sendfile_count;
-       unsigned syscall_sendfile_time;
-       unsigned syscall_sendfile_bytes; /* bytes read with sendfile syscall */
        unsigned syscall_rename_count;
        unsigned syscall_rename_time;
        unsigned syscall_fsync_count;
index 3468d3b9950a1647629b4d713fe4ff129bcc84df..fb265fdb1a88d5a27a71543c9d06b0b67cad5de0 100644 (file)
@@ -193,19 +193,16 @@ Byte offset   Type     name                description
 } FSINFO;
 *************************************************************/
 
-#define SMB_INFO_STANDARD               1  /* FILESTATUS3 struct */
-#define SMB_INFO_SET_EA                 2  /* EAOP2 struct, only valid on set not query */
-#define SMB_INFO_QUERY_EA_SIZE          2  /* FILESTATUS4 struct, only valid on query not set */
-#define SMB_INFO_QUERY_EAS_FROM_LIST    3  /* only valid on query not set */
-#define SMB_INFO_QUERY_ALL_EAS          4  /* only valid on query not set */
+#define SMB_INFO_STANDARD               1
+#define SMB_INFO_QUERY_EA_SIZE          2
+#define SMB_INFO_QUERY_EAS_FROM_LIST    3
+#define SMB_INFO_QUERY_ALL_EAS          4
 #define SMB_INFO_IS_NAME_VALID          6
-#define SMB_INFO_STANDARD_LONG          11  /* similar to level 1, ie struct FileStatus3 */
-#define SMB_QUERY_EA_SIZE_LONG          12  /* similar to level 2, ie struct FileStatus4 */
-#define SMB_QUERY_FS_LABEL_INFO         0x101
-#define SMB_QUERY_FS_VOLUME_INFO        0x102
-#define SMB_QUERY_FS_SIZE_INFO          0x103
-#define SMB_QUERY_FS_DEVICE_INFO        0x104
-#define SMB_QUERY_FS_ATTRIBUTE_INFO     0x105
+#define SMB_QUERY_FS_LABEL_INFO                        0x101
+#define SMB_QUERY_FS_VOLUME_INFO               0x102
+#define SMB_QUERY_FS_SIZE_INFO                 0x103
+#define SMB_QUERY_FS_DEVICE_INFO               0x104
+#define SMB_QUERY_FS_ATTRIBUTE_INFO            0x105
 
 
 #define l2_vol_fdateCreation 0
index 87e3673a7f69656e853e7353dbdd926cdd6a8e65..74df1c99141c4c7adee3b3cf9fd809f87affddf0 100644 (file)
@@ -1 +1 @@
-#define VERSION "3.0-alpha19"
+#define VERSION "3.0-alpha18"
index 9a0676437138a45fc5d81188d1c525c1b2b2411e..1b1a13d7c125c43ee453812903a8403bb0354725 100644 (file)
 /* Changed to version 2 for CIFS UNIX extensions (mknod and link added). JRA. */
 /* Changed to version 3 for POSIX acl extensions. JRA. */
 /* Changed to version 4 for cascaded VFS interface. Alexander Bokovoy. */
-/* Changed to version 5 for sendfile addition. JRA. */
 #define SMB_VFS_INTERFACE_VERSION 5
 
 
 /* Version of supported cascaded interface backward copmatibility.
-   (version 5 corresponds to SMB_VFS_INTERFACE_VERSION 5)
+   (version 4 corresponds to SMB_VFS_INTERFACE_VERSION 4)
    It is used in vfs_init_custom() to detect VFS modules which conform to cascaded 
    VFS interface but implement elder version than current version of Samba uses.
    This allows to use old modules with new VFS interface as far as combined VFS operation
    set is coherent (will be in most cases). 
 */
-#define SMB_VFS_INTERFACE_CASCADED 5
+#define SMB_VFS_INTERFACE_CASCADED 4
 
 /*
     Each VFS module must provide following global functions:
@@ -117,7 +116,6 @@ struct vfs_ops {
        ssize_t (*read)(struct files_struct *fsp, int fd, void *data, size_t n);
        ssize_t (*write)(struct files_struct *fsp, int fd, const void *data, size_t n);
        SMB_OFF_T (*lseek)(struct files_struct *fsp, int filedes, SMB_OFF_T offset, int whence);
-       ssize_t (*sendfile)(int tofd, files_struct *fsp, int fromfd, const DATA_BLOB *header, SMB_OFF_T offset, size_t count);
        int (*rename)(struct connection_struct *conn, const char *old, const char *new);
        int (*fsync)(struct files_struct *fsp, int fd);
        int (*stat)(struct connection_struct *conn, const char *fname, SMB_STRUCT_STAT *sbuf);
@@ -212,7 +210,6 @@ typedef enum _vfs_op_type {
        SMB_VFS_OP_READ,
        SMB_VFS_OP_WRITE,
        SMB_VFS_OP_LSEEK,
-       SMB_VFS_OP_SENDFILE,
        SMB_VFS_OP_RENAME,
        SMB_VFS_OP_FSYNC,
        SMB_VFS_OP_STAT,
index b5f205c508687628aed45abade2f8eb6921a6d94..07b5e2ecfc649066ff90afbfd0b088a03d036fb1 100644 (file)
@@ -128,7 +128,7 @@ BOOL account_policy_get(int field, uint32 *value)
                return False;
        }
        if (!tdb_fetch_uint32(tdb, name, value)) {
-               DEBUG(1, ("account_policy_get: tdb_fetch_uint32 failed for efild %d (%s), returning 0", field, name));
+               DEBUG(1, ("account_policy_get: tdb_fetch_uint32 failed for feild %d (%s), returning 0", field, name));
                return False;
        }
        DEBUG(10,("account_policy_get: %s:%d\n", name, *value));
@@ -151,7 +151,7 @@ BOOL account_policy_set(int field, uint32 value)
        }
 
        if (!tdb_store_uint32(tdb, name, value)) {
-               DEBUG(1, ("tdb_store_uint32 failed for field %d (%s) on value %u", field, name, value));
+               DEBUG(1, ("tdb_store_uint32 failed for feild %d (%s) on value %u", field, name, value));
                return False;
        }
 
index cd8aa4fe55f75f823c6b1b2107e69156f95bc466..6e961366435b983e528b3a45181cbce10bec8e8e 100644 (file)
@@ -432,14 +432,13 @@ int push_ucs2(const void *base_ptr, void *dest, const char *src, int dest_len, i
  * @param dest always set at least to NULL 
  *
  * @retval The number of bytes occupied by the string in the destination
- *         or -1 in case of error.
  **/
-int push_ucs2_talloc(TALLOC_CTX *ctx, smb_ucs2_t **dest, const char *src)
+int push_ucs2_talloc(TALLOC_CTX *ctx, void **dest, const char *src)
 {
        int src_len = strlen(src)+1;
 
        *dest = NULL;
-       return convert_string_talloc(ctx, CH_UNIX, CH_UCS2, src, src_len, (void **)dest);
+       return convert_string_talloc(ctx, CH_UNIX, CH_UCS2, src, src_len, dest);
 }
 
 /**
@@ -448,14 +447,13 @@ int push_ucs2_talloc(TALLOC_CTX *ctx, smb_ucs2_t **dest, const char *src)
  * @param dest always set at least to NULL 
  *
  * @retval The number of bytes occupied by the string in the destination
- *         or -1 in case of error.
  **/
-int push_ucs2_allocate(smb_ucs2_t **dest, const char *src)
+int push_ucs2_allocate(void **dest, const char *src)
 {
        int src_len = strlen(src)+1;
 
        *dest = NULL;
-       return convert_string_allocate(CH_UNIX, CH_UCS2, src, src_len, (void **)dest);  
+       return convert_string_allocate(CH_UNIX, CH_UCS2, src, src_len, dest);   
 }
 
 /****************************************************************************
index f4f3ee2f9f94c9ac7f28d6b7385286d0a42f58ce..842d2dac1d62650b431de0ec459397c855c5006c 100644 (file)
@@ -153,10 +153,8 @@ static const char *default_classname_table[] = {
        "rpc_srv",           /* DBGC_RPC_SRV      */
        "rpc_cli",           /* DBGC_RPC_CLI      */
        "passdb",            /* DBGC_PASSDB       */
-       "sam",               /* DBGC_SAM          */
        "auth",              /* DBGC_AUTH         */
        "winbind",           /* DBGC_WINBIND      */
-       "vfs",               /* DBGC_VFS          */
        NULL
 };
 
@@ -352,7 +350,7 @@ int debug_lookup_classname(const char *classname)
 
 
 /****************************************************************************
-dump the current registered debug levels
+dump the current registered denug levels
 ****************************************************************************/
 static void debug_dump_status(int level)
 {
@@ -373,7 +371,8 @@ static void debug_dump_status(int level)
 parse the debug levels from smbcontrol. Example debug level parameter:
   printdrivers:7
 ****************************************************************************/
-static BOOL debug_parse_params(char **params)
+BOOL debug_parse_params(char **params, int *debuglevel_class,
+                       BOOL *debuglevel_class_isset)
 {
        int   i, ndx;
        char *class_name;
@@ -386,8 +385,8 @@ static BOOL debug_parse_params(char **params)
         * v.s. "all:10", this is the traditional way to set DEBUGLEVEL 
         */
        if (isdigit((int)params[0][0])) {
-               DEBUGLEVEL_CLASS[DBGC_ALL] = atoi(params[0]);
-               DEBUGLEVEL_CLASS_ISSET[DBGC_ALL] = True;
+               debuglevel_class[DBGC_ALL] = atoi(params[0]);
+               debuglevel_class_isset[DBGC_ALL] = True;
                i = 1; /* start processing at the next params */
        }
        else
@@ -398,8 +397,8 @@ static BOOL debug_parse_params(char **params)
                if ((class_name=strtok(params[i],":")) &&
                        (class_level=strtok(NULL, "\0")) &&
             ((ndx = debug_lookup_classname(class_name)) != -1)) {
-                               DEBUGLEVEL_CLASS[ndx] = atoi(class_level);
-                               DEBUGLEVEL_CLASS_ISSET[ndx] = True;
+                               debuglevel_class[ndx] = atoi(class_level);
+                               debuglevel_class_isset[ndx] = True;
                } else {
                        DEBUG(0,("debug_parse_params: unrecognized debug class name or format [%s]\n", params[i]));
                        return False;
@@ -426,7 +425,8 @@ BOOL debug_parse_levels(const char *params_str)
 
        params = str_list_make(params_str, NULL);
 
-       if (debug_parse_params(params))
+       if (debug_parse_params(params, DEBUGLEVEL_CLASS,
+                              DEBUGLEVEL_CLASS_ISSET))
        {
                debug_dump_status(5);
                str_list_free(&params);
diff --git a/source3/lib/domain_namemap.c b/source3/lib/domain_namemap.c
deleted file mode 100644 (file)
index 988f5e5..0000000
+++ /dev/null
@@ -1,1317 +0,0 @@
-/* 
-   Unix SMB/Netbios implementation.
-   Version 1.9.
-   Groupname handling
-   Copyright (C) Jeremy Allison 1998.
-   
-   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., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-/* 
- * UNIX gid and Local or Domain SID resolution.  This module resolves
- * only those entries in the map files, it is *NOT* responsible for
- * resolving UNIX groups not listed: that is an entirely different
- * matter, altogether...
- */
-
-/*
- *
- *
-
- format of the file is:
-
- unixname      NT Group name
- unixname      Domain Admins (well-known Domain Group)
- unixname      DOMAIN_NAME\NT Group name
- unixname      OTHER_DOMAIN_NAME\NT Group name
- unixname      DOMAIN_NAME\Domain Admins (well-known Domain Group)
- ....
-
- if the DOMAIN_NAME\ component is left off, then your own domain is assumed.
-
- *
- *
- */
-
-
-#include "includes.h"
-extern int DEBUGLEVEL;
-
-extern fstring global_myworkgroup;
-extern DOM_SID global_member_sid;
-extern fstring global_sam_name;
-extern DOM_SID global_sam_sid;
-extern DOM_SID global_sid_S_1_5_20;
-
-/*******************************************************************
- converts UNIX uid to an NT User RID. NOTE: IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uid_t pwdb_user_rid_to_uid(uint32 user_rid)
-{
-       return ((user_rid & (~RID_TYPE_USER))- 1000)/RID_MULTIPLIER;
-}
-
-/*******************************************************************
- converts NT Group RID to a UNIX uid. NOTE: IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uint32 pwdb_group_rid_to_gid(uint32 group_rid)
-{
-       return ((group_rid & (~RID_TYPE_GROUP))- 1000)/RID_MULTIPLIER;
-}
-
-/*******************************************************************
- converts NT Alias RID to a UNIX uid. NOTE: IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uint32 pwdb_alias_rid_to_gid(uint32 alias_rid)
-{
-       return ((alias_rid & (~RID_TYPE_ALIAS))- 1000)/RID_MULTIPLIER;
-}
-
-/*******************************************************************
- converts NT Group RID to a UNIX uid. NOTE: IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uint32 pwdb_gid_to_group_rid(uint32 gid)
-{
-       uint32 grp_rid = ((((gid)*RID_MULTIPLIER) + 1000) | RID_TYPE_GROUP);
-       return grp_rid;
-}
-
-/******************************************************************
- converts UNIX gid to an NT Alias RID. NOTE: IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uint32 pwdb_gid_to_alias_rid(uint32 gid)
-{
-       uint32 alias_rid = ((((gid)*RID_MULTIPLIER) + 1000) | RID_TYPE_ALIAS);
-       return alias_rid;
-}
-
-/*******************************************************************
- converts UNIX uid to an NT User RID. NOTE: IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uint32 pwdb_uid_to_user_rid(uint32 uid)
-{
-       uint32 user_rid = ((((uid)*RID_MULTIPLIER) + 1000) | RID_TYPE_USER);
-       return user_rid;
-}
-
-/******************************************************************
- converts SID + SID_NAME_USE type to a UNIX id.  the Domain SID is,
- and can only be, our own SID.
- ********************************************************************/
-static BOOL pwdb_sam_sid_to_unixid(DOM_SID *sid, uint8 type, uint32 *id)
-{
-       DOM_SID tmp_sid;
-       uint32 rid;
-
-       sid_copy(&tmp_sid, sid);
-       sid_split_rid(&tmp_sid, &rid);
-       if (!sid_equal(&global_sam_sid, &tmp_sid))
-       {
-               return False;
-       }
-
-       switch (type)
-       {
-               case SID_NAME_USER:
-               {
-                       *id = pwdb_user_rid_to_uid(rid);
-                       return True;
-               }
-               case SID_NAME_ALIAS:
-               {
-                       *id = pwdb_alias_rid_to_gid(rid);
-                       return True;
-               }
-               case SID_NAME_DOM_GRP:
-               case SID_NAME_WKN_GRP:
-               {
-                       *id = pwdb_group_rid_to_gid(rid);
-                       return True;
-               }
-       }
-       return False;
-}
-
-/******************************************************************
- converts UNIX gid + SID_NAME_USE type to a SID.  the Domain SID is,
- and can only be, our own SID.
- ********************************************************************/
-static BOOL pwdb_unixid_to_sam_sid(uint32 id, uint8 type, DOM_SID *sid)
-{
-       sid_copy(sid, &global_sam_sid);
-       switch (type)
-       {
-               case SID_NAME_USER:
-               {
-                       sid_append_rid(sid, pwdb_uid_to_user_rid(id));
-                       return True;
-               }
-               case SID_NAME_ALIAS:
-               {
-                       sid_append_rid(sid, pwdb_gid_to_alias_rid(id));
-                       return True;
-               }
-               case SID_NAME_DOM_GRP:
-               case SID_NAME_WKN_GRP:
-               {
-                       sid_append_rid(sid, pwdb_gid_to_group_rid(id));
-                       return True;
-               }
-       }
-       return False;
-}
-
-/*******************************************************************
- Decides if a RID is a well known RID.
- ********************************************************************/
-static BOOL pwdb_rid_is_well_known(uint32 rid)
-{
-       return (rid < 1000);
-}
-
-/*******************************************************************
- determines a rid's type.  NOTE: THIS IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uint32 pwdb_rid_type(uint32 rid)
-{
-       /* lkcl i understand that NT attaches an enumeration to a RID
-        * such that it can be identified as either a user, group etc
-        * type: SID_ENUM_TYPE.
-        */
-       if (pwdb_rid_is_well_known(rid))
-       {
-               /*
-                * The only well known user RIDs are DOMAIN_USER_RID_ADMIN
-                * and DOMAIN_USER_RID_GUEST.
-                */
-               if (rid == DOMAIN_USER_RID_ADMIN || rid == DOMAIN_USER_RID_GUEST)
-               {
-                       return RID_TYPE_USER;
-               }
-               if (DOMAIN_GROUP_RID_ADMINS <= rid && rid <= DOMAIN_GROUP_RID_GUESTS)
-               {
-                       return RID_TYPE_GROUP;
-               }
-               if (BUILTIN_ALIAS_RID_ADMINS <= rid && rid <= BUILTIN_ALIAS_RID_REPLICATOR)
-               {
-                       return RID_TYPE_ALIAS;
-               }
-       }
-       return (rid & RID_TYPE_MASK);
-}
-
-/*******************************************************************
- checks whether rid is a user rid.  NOTE: THIS IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-BOOL pwdb_rid_is_user(uint32 rid)
-{
-       return pwdb_rid_type(rid) == RID_TYPE_USER;
-}
-
-/**************************************************************************
- Groupname map functionality. The code loads a groupname map file and
- (currently) loads it into a linked list. This is slow and memory
- hungry, but can be changed into a more efficient storage format
- if the demands on it become excessive.
-***************************************************************************/
-
-typedef struct name_map
-{
-       ubi_slNode next;
-       DOM_NAME_MAP grp;
-
-} name_map_entry;
-
-static ubi_slList groupname_map_list;
-static ubi_slList aliasname_map_list;
-static ubi_slList ntusrname_map_list;
-
-static void delete_name_entry(name_map_entry *gmep)
-{
-       if (gmep->grp.nt_name)
-       {
-               free(gmep->grp.nt_name);
-       }
-       if (gmep->grp.nt_domain)
-       {
-               free(gmep->grp.nt_domain);
-       }
-       if (gmep->grp.unix_name)
-       {
-               free(gmep->grp.unix_name);
-       }
-       free((char*)gmep);
-}
-
-/**************************************************************************
- Delete all the entries in the name map list.
-***************************************************************************/
-
-static void delete_map_list(ubi_slList *map_list)
-{
-       name_map_entry *gmep;
-
-       while ((gmep = (name_map_entry *)ubi_slRemHead(map_list )) != NULL)
-       {
-               delete_name_entry(gmep);
-       }
-}
-
-
-/**************************************************************************
- makes a group sid out of a domain sid and a _unix_ gid.
-***************************************************************************/
-static BOOL make_mydomain_sid(DOM_NAME_MAP *grp, DOM_MAP_TYPE type)
-{
-       int ret = False;
-       fstring sid_str;
-
-       if (!map_domain_name_to_sid(&grp->sid, &(grp->nt_domain)))
-       {
-               DEBUG(0,("make_mydomain_sid: unknown domain %s\n",
-                         grp->nt_domain));
-               return False;
-       }
-
-       if (sid_equal(&grp->sid, &global_sid_S_1_5_20))
-       {
-               /*
-                * only builtin aliases are recognised in S-1-5-20
-                */
-               DEBUG(10,("make_mydomain_sid: group %s in builtin domain\n",
-                          grp->nt_name));
-
-               if (lookup_builtin_alias_name(grp->nt_name, "BUILTIN", &grp->sid, &grp->type) != 0x0)
-               {
-                       DEBUG(0,("unix group %s mapped to an unrecognised BUILTIN domain name %s\n",
-                                 grp->unix_name, grp->nt_name));
-                       return False;
-               }
-               ret = True;
-       }
-       else if (lookup_wk_user_name(grp->nt_name, grp->nt_domain, &grp->sid, &grp->type) == 0x0)
-       {
-               if (type != DOM_MAP_USER)
-               {
-                       DEBUG(0,("well-known NT user %s\\%s listed in wrong map file\n",
-                                 grp->nt_domain, grp->nt_name));
-                       return False;
-               }
-               ret = True;
-       }
-       else if (lookup_wk_group_name(grp->nt_name, grp->nt_domain, &grp->sid, &grp->type) == 0x0)
-       {
-               if (type != DOM_MAP_DOMAIN)
-               {
-                       DEBUG(0,("well-known NT group %s\\%s listed in wrong map file\n",
-                                 grp->nt_domain, grp->nt_name));
-                       return False;
-               }
-               ret = True;
-       }
-       else
-       {
-               switch (type)
-               {
-                       case DOM_MAP_USER:
-                       {
-                               grp->type = SID_NAME_USER;
-                               break;
-                       }
-                       case DOM_MAP_DOMAIN:
-                       {
-                               grp->type = SID_NAME_DOM_GRP;
-                               break;
-                       }
-                       case DOM_MAP_LOCAL:
-                       {
-                               grp->type = SID_NAME_ALIAS;
-                               break;
-                       }
-               }
-
-               ret = pwdb_unixid_to_sam_sid(grp->unix_id, grp->type, &grp->sid);
-       }
-
-       sid_to_string(sid_str, &grp->sid);
-       DEBUG(10,("nt name %s\\%s gid %d mapped to %s\n",
-                  grp->nt_domain, grp->nt_name, grp->unix_id, sid_str));
-       return ret;
-}
-
-/**************************************************************************
- makes a group sid out of an nt domain, nt group name or a unix group name.
-***************************************************************************/
-static BOOL unix_name_to_nt_name_info(DOM_NAME_MAP *map, DOM_MAP_TYPE type)
-{
-       /*
-        * Attempt to get the unix gid_t for this name.
-        */
-
-       DEBUG(5,("unix_name_to_nt_name_info: unix_name:%s\n", map->unix_name));
-
-       if (type == DOM_MAP_USER)
-       {
-               const struct passwd *pwptr = Get_Pwnam(map->unix_name, False);
-               if (pwptr == NULL)
-               {
-                       DEBUG(0,("unix_name_to_nt_name_info: Get_Pwnam for user %s\
-failed. Error was %s.\n", map->unix_name, strerror(errno) ));
-                       return False;
-               }
-
-               map->unix_id = (uint32)pwptr->pw_uid;
-       }
-       else
-       {
-               struct group *gptr = getgrnam(map->unix_name);
-               if (gptr == NULL)
-               {
-                       DEBUG(0,("unix_name_to_nt_name_info: getgrnam for group %s\
-failed. Error was %s.\n", map->unix_name, strerror(errno) ));
-                       return False;
-               }
-
-               map->unix_id = (uint32)gptr->gr_gid;
-       }
-
-       DEBUG(5,("unix_name_to_nt_name_info: unix gid:%d\n", map->unix_id));
-
-       /*
-        * Now map the name to an NT SID+RID.
-        */
-
-       if (map->nt_domain != NULL && !strequal(map->nt_domain, global_sam_name))
-       {
-               /* Must add client-call lookup code here, to 
-                * resolve remote domain's sid and the group's rid,
-                * in that domain.
-                *
-                * NOTE: it is _incorrect_ to put code here that assumes
-                * we are responsible for lookups for foriegn domains' RIDs.
-                *
-                * for foriegn domains for which we are *NOT* the PDC, all
-                * we can be responsible for is the unix gid_t to which
-                * the foriegn SID+rid maps to, on this _local_ machine.  
-                * we *CANNOT* make any short-cuts or assumptions about
-                * RIDs in a foriegn domain.
-                */
-
-               if (!map_domain_name_to_sid(&map->sid, &(map->nt_domain)))
-               {
-                       DEBUG(0,("unix_name_to_nt_name_info: no known sid for %s\n",
-                                 map->nt_domain));
-                       return False;
-               }
-       }
-
-       return make_mydomain_sid(map, type);
-}
-
-static BOOL make_name_entry(name_map_entry **new_ep,
-               char *nt_domain, char *nt_group, char *unix_group,
-               DOM_MAP_TYPE type)
-{
-       /*
-        * Create the list entry and add it onto the list.
-        */
-
-       DEBUG(5,("make_name_entry:%s,%s,%s\n", nt_domain, nt_group, unix_group));
-
-       (*new_ep) = (name_map_entry *)malloc(sizeof(name_map_entry));
-       if ((*new_ep) == NULL)
-       {
-               DEBUG(0,("make_name_entry: malloc fail for name_map_entry.\n"));
-               return False;
-       } 
-
-       ZERO_STRUCTP(*new_ep);
-
-       (*new_ep)->grp.nt_name   = strdup(nt_group  );
-       (*new_ep)->grp.nt_domain = strdup(nt_domain );
-       (*new_ep)->grp.unix_name = strdup(unix_group);
-
-       if ((*new_ep)->grp.nt_name   == NULL ||
-           (*new_ep)->grp.unix_name == NULL)
-       {
-               DEBUG(0,("make_name_entry: malloc fail for names in name_map_entry.\n"));
-               delete_name_entry((*new_ep));
-               return False;
-       }
-
-       /*
-        * look up the group names, make the Group-SID and unix gid
-        */
-       if (!unix_name_to_nt_name_info(&(*new_ep)->grp, type))
-       {
-               delete_name_entry((*new_ep));
-               return False;
-       }
-
-       return True;
-}
-
-/**************************************************************************
- Load a name map file. Sets last accessed timestamp.
-***************************************************************************/
-static ubi_slList *load_name_map(DOM_MAP_TYPE type)
-{
-       static time_t groupmap_file_last_modified = (time_t)0;
-       static time_t aliasmap_file_last_modified = (time_t)0;
-       static time_t ntusrmap_file_last_modified  = (time_t)0;
-       static BOOL initialised_group = False;
-       static BOOL initialised_alias = False;
-       static BOOL initialised_ntusr  = False;
-       char *groupname_map_file = lp_groupname_map();
-       char *aliasname_map_file = lp_aliasname_map();
-       char *ntusrname_map_file = lp_ntusrname_map();
-
-       FILE *fp;
-       char *s;
-       pstring buf;
-       name_map_entry *new_ep;
-
-       time_t *file_last_modified = NULL;
-       int    *initialised = NULL;
-       char   *map_file = NULL;
-       ubi_slList *map_list = NULL;
-
-       switch (type)
-       {
-               case DOM_MAP_DOMAIN:
-               {
-                       file_last_modified = &groupmap_file_last_modified;
-                       initialised        = &initialised_group;
-                       map_file           = groupname_map_file;
-                       map_list           = &groupname_map_list;
-
-                       break;
-               }
-               case DOM_MAP_LOCAL:
-               {
-                       file_last_modified = &aliasmap_file_last_modified;
-                       initialised        = &initialised_alias;
-                       map_file           = aliasname_map_file;
-                       map_list           = &aliasname_map_list;
-
-                       break;
-               }
-               case DOM_MAP_USER:
-               {
-                       file_last_modified = &ntusrmap_file_last_modified;
-                       initialised        = &initialised_ntusr;
-                       map_file           = ntusrname_map_file;
-                       map_list           = &ntusrname_map_list;
-
-                       break;
-               }
-       }
-
-       if (!(*initialised))
-       {
-               DEBUG(10,("initialising map %s\n", map_file));
-               ubi_slInitList(map_list);
-               (*initialised) = True;
-       }
-
-       if (!*map_file)
-       {
-               return map_list;
-       }
-
-       /*
-        * Load the file.
-        */
-
-       fp = open_file_if_modified(map_file, "r", file_last_modified);
-       if (!fp)
-       {
-               return map_list;
-       }
-
-       /*
-        * Throw away any previous list.
-        */
-       delete_map_list(map_list);
-
-       DEBUG(4,("load_name_map: Scanning name map %s\n",map_file));
-
-       while ((s = fgets_slash(buf, sizeof(buf), fp)) != NULL)
-       {
-               pstring unixname;
-               pstring nt_name;
-               fstring nt_domain;
-               fstring ntname;
-               char *p;
-
-               DEBUG(10,("Read line |%s|\n", s));
-
-               memset(nt_name, 0, sizeof(nt_name));
-
-               if (!*s || strchr("#;",*s))
-                       continue;
-
-               if (!next_token(&s,unixname, "\t\n\r=", sizeof(unixname)))
-                       continue;
-
-               if (!next_token(&s,nt_name, "\t\n\r=", sizeof(nt_name)))
-                       continue;
-
-               trim_string(unixname, " ", " ");
-               trim_string(nt_name, " ", " ");
-
-               if (!*nt_name)
-                       continue;
-
-               if (!*unixname)
-                       continue;
-
-               p = strchr(nt_name, '\\');
-
-               if (p == NULL)
-               {
-                       memset(nt_domain, 0, sizeof(nt_domain));
-                       fstrcpy(ntname, nt_name);
-               }
-               else
-               {
-                       *p = 0;
-                       p++;
-                       fstrcpy(nt_domain, nt_name);
-                       fstrcpy(ntname , p);
-               }
-
-               if (make_name_entry(&new_ep, nt_domain, ntname, unixname, type))
-               {
-                       ubi_slAddTail(map_list, (ubi_slNode *)new_ep);
-                       DEBUG(5,("unixname = %s, ntname = %s\\%s type = %d\n",
-                                 new_ep->grp.unix_name,
-                                 new_ep->grp.nt_domain,
-                                 new_ep->grp.nt_name,
-                                 new_ep->grp.type));
-               }
-       }
-
-       DEBUG(10,("load_name_map: Added %ld entries to name map.\n",
-                  ubi_slCount(map_list)));
-
-       fclose(fp);
-
-       return map_list;
-}
-
-static void copy_grp_map_entry(DOM_NAME_MAP *grp, const DOM_NAME_MAP *from)
-{
-       sid_copy(&grp->sid, &from->sid);
-       grp->unix_id   = from->unix_id;
-       grp->nt_name   = from->nt_name;
-       grp->nt_domain = from->nt_domain;
-       grp->unix_name = from->unix_name;
-       grp->type      = from->type;
-}
-
-#if 0
-/***********************************************************
- Lookup unix name.
-************************************************************/
-static BOOL map_unixname(DOM_MAP_TYPE type,
-               char *unixname, DOM_NAME_MAP *grp_info)
-{
-       name_map_entry *gmep;
-       ubi_slList *map_list;
-
-       /*
-        * Initialise and load if not already loaded.
-        */
-       map_list = load_name_map(type);
-
-       for (gmep = (name_map_entry *)ubi_slFirst(map_list);
-            gmep != NULL;
-            gmep = (name_map_entry *)ubi_slNext(gmep ))
-       {
-               if (strequal(gmep->grp.unix_name, unixname))
-               {
-                       copy_grp_map_entry(grp_info, &gmep->grp);
-                       DEBUG(7,("map_unixname: Mapping unix name %s to nt group %s.\n",
-                              gmep->grp.unix_name, gmep->grp.nt_name ));
-                       return True;
-               }
-       }
-
-       return False;
-}
-
-#endif
-
-/***********************************************************
- Lookup nt name.
-************************************************************/
-static BOOL map_ntname(DOM_MAP_TYPE type, char *ntname, char *ntdomain,
-                               DOM_NAME_MAP *grp_info)
-{
-       name_map_entry *gmep;
-       ubi_slList *map_list;
-
-       /*
-        * Initialise and load if not already loaded.
-        */
-       map_list = load_name_map(type);
-
-       for (gmep = (name_map_entry *)ubi_slFirst(map_list);
-            gmep != NULL;
-            gmep = (name_map_entry *)ubi_slNext(gmep ))
-       {
-               if (strequal(gmep->grp.nt_name  , ntname) &&
-                   strequal(gmep->grp.nt_domain, ntdomain))
-               {
-                       copy_grp_map_entry(grp_info, &gmep->grp);
-                       DEBUG(7,("map_ntname: Mapping unix name %s to nt name %s.\n",
-                              gmep->grp.unix_name, gmep->grp.nt_name ));
-                       return True;
-               }
-       }
-
-       return False;
-}
-
-
-/***********************************************************
- Lookup by SID
-************************************************************/
-static BOOL map_sid(DOM_MAP_TYPE type,
-               DOM_SID *psid, DOM_NAME_MAP *grp_info)
-{
-       name_map_entry *gmep;
-       ubi_slList *map_list;
-
-       /*
-        * Initialise and load if not already loaded.
-        */
-       map_list = load_name_map(type);
-
-       for (gmep = (name_map_entry *)ubi_slFirst(map_list);
-            gmep != NULL;
-            gmep = (name_map_entry *)ubi_slNext(gmep ))
-       {
-               if (sid_equal(&gmep->grp.sid, psid))
-               {
-                       copy_grp_map_entry(grp_info, &gmep->grp);
-                       DEBUG(7,("map_sid: Mapping unix name %s to nt name %s.\n",
-                              gmep->grp.unix_name, gmep->grp.nt_name ));
-                       return True;
-               }
-       }
-
-       return False;
-}
-
-/***********************************************************
- Lookup by gid_t.
-************************************************************/
-static BOOL map_unixid(DOM_MAP_TYPE type, uint32 unix_id, DOM_NAME_MAP *grp_info)
-{
-       name_map_entry *gmep;
-       ubi_slList *map_list;
-
-       /*
-        * Initialise and load if not already loaded.
-        */
-       map_list = load_name_map(type);
-
-       for (gmep = (name_map_entry *)ubi_slFirst(map_list);
-            gmep != NULL;
-            gmep = (name_map_entry *)ubi_slNext(gmep ))
-       {
-               fstring sid_str;
-               sid_to_string(sid_str, &gmep->grp.sid);
-               DEBUG(10,("map_unixid: enum entry unix group %s %d nt %s %s\n",
-                              gmep->grp.unix_name, gmep->grp.unix_id, gmep->grp.nt_name, sid_str));
-               if (gmep->grp.unix_id == unix_id)
-               {
-                       copy_grp_map_entry(grp_info, &gmep->grp);
-                       DEBUG(7,("map_unixid: Mapping unix name %s to nt name %s type %d\n",
-                              gmep->grp.unix_name, gmep->grp.nt_name, gmep->grp.type));
-                       return True;
-               }
-       }
-
-       return False;
-}
-
-/***********************************************************
- *
- * Call four functions to resolve unix group ids and either
- * local group SIDs or domain group SIDs listed in the local group
- * or domain group map files.
- *
- * Note that it is *NOT* the responsibility of these functions to
- * resolve entries that are not in the map files.
- *
- * Any SID can be in the map files (i.e from any Domain).
- *
- ***********************************************************/
-
-#if 0
-
-/***********************************************************
- Lookup a UNIX Group entry by name.
-************************************************************/
-BOOL map_unix_group_name(char *group_name, DOM_NAME_MAP *grp_info)
-{
-       return map_unixname(DOM_MAP_DOMAIN, group_name, grp_info);
-}
-
-/***********************************************************
- Lookup a UNIX Alias entry by name.
-************************************************************/
-BOOL map_unix_alias_name(char *alias_name, DOM_NAME_MAP *grp_info)
-{
-       return map_unixname(DOM_MAP_LOCAL, alias_name, grp_info);
-}
-
-/***********************************************************
- Lookup an Alias name entry 
-************************************************************/
-BOOL map_nt_alias_name(char *ntalias_name, char *nt_domain, DOM_NAME_MAP *grp_info)
-{
-       return map_ntname(DOM_MAP_LOCAL, ntalias_name, nt_domain, grp_info);
-}
-
-/***********************************************************
- Lookup a Group entry
-************************************************************/
-BOOL map_nt_group_name(char *ntgroup_name, char *nt_domain, DOM_NAME_MAP *grp_info)
-{
-       return map_ntname(DOM_MAP_DOMAIN, ntgroup_name, nt_domain, grp_info);
-}
-
-#endif
-
-/***********************************************************
- Lookup a Username entry by name.
-************************************************************/
-static BOOL map_nt_username(char *nt_name, char *nt_domain, DOM_NAME_MAP *grp_info)
-{
-       return map_ntname(DOM_MAP_USER, nt_name, nt_domain, grp_info);
-}
-
-/***********************************************************
- Lookup a Username entry by SID.
-************************************************************/
-static BOOL map_username_sid(DOM_SID *sid, DOM_NAME_MAP *grp_info)
-{
-       return map_sid(DOM_MAP_USER, sid, grp_info);
-}
-
-/***********************************************************
- Lookup a Username SID entry by uid.
-************************************************************/
-static BOOL map_username_uid(uid_t gid, DOM_NAME_MAP *grp_info)
-{
-       return map_unixid(DOM_MAP_USER, (uint32)gid, grp_info);
-}
-
-/***********************************************************
- Lookup an Alias SID entry by name.
-************************************************************/
-BOOL map_alias_sid(DOM_SID *psid, DOM_NAME_MAP *grp_info)
-{
-       return map_sid(DOM_MAP_LOCAL, psid, grp_info);
-}
-
-/***********************************************************
- Lookup a Group entry by sid.
-************************************************************/
-BOOL map_group_sid(DOM_SID *psid, DOM_NAME_MAP *grp_info)
-{
-       return map_sid(DOM_MAP_DOMAIN, psid, grp_info);
-}
-
-/***********************************************************
- Lookup an Alias SID entry by gid_t.
-************************************************************/
-static BOOL map_alias_gid(gid_t gid, DOM_NAME_MAP *grp_info)
-{
-       return map_unixid(DOM_MAP_LOCAL, (uint32)gid, grp_info);
-}
-
-/***********************************************************
- Lookup a Group SID entry by gid_t.
-************************************************************/
-static BOOL map_group_gid( gid_t gid, DOM_NAME_MAP *grp_info)
-{
-       return map_unixid(DOM_MAP_DOMAIN, (uint32)gid, grp_info);
-}
-
-
-/************************************************************************
- Routine to look up User details by UNIX name
-*************************************************************************/
-BOOL lookupsmbpwnam(const char *unix_usr_name, DOM_NAME_MAP *grp)
-{
-       uid_t uid;
-       DEBUG(10,("lookupsmbpwnam: unix user name %s\n", unix_usr_name));
-       if (nametouid(unix_usr_name, &uid))
-       {
-               return lookupsmbpwuid(uid, grp);
-       }
-       else
-       {
-               return False;
-       }
-}
-
-/************************************************************************
- Routine to look up a remote nt name
-*************************************************************************/
-static BOOL lookup_remote_ntname(const char *ntname, DOM_SID *sid, uint8 *type)
-{
-       struct cli_state cli;
-       POLICY_HND lsa_pol;
-       fstring srv_name;
-       extern struct ntuser_creds *usr_creds;
-       struct ntuser_creds usr;
-
-       BOOL res3 = True;
-       BOOL res4 = True;
-       uint32 num_sids;
-       DOM_SID *sids;
-       uint8 *types;
-       char *names[1];
-
-       usr_creds = &usr;
-
-       ZERO_STRUCT(usr);
-       pwd_set_nullpwd(&usr.pwd);
-
-       DEBUG(5,("lookup_remote_ntname: %s\n", ntname));
-
-       if (!cli_connect_serverlist(&cli, lp_passwordserver()))
-       {
-               return False;
-       }
-
-       names[0] = ntname;
-
-       fstrcpy(srv_name, "\\\\");
-       fstrcat(srv_name, cli.desthost);
-       strupper(srv_name);
-
-       /* lookup domain controller; receive a policy handle */
-       res3 = res3 ? lsa_open_policy( srv_name,
-                               &lsa_pol, True) : False;
-
-       /* send lsa lookup sids call */
-       res4 = res3 ? lsa_lookup_names( &lsa_pol,
-                                      1, names, 
-                                      &sids, &types, &num_sids) : False;
-
-       res3 = res3 ? lsa_close(&lsa_pol) : False;
-
-       if (res4 && res3 && sids != NULL && types != NULL)
-       {
-               sid_copy(sid, &sids[0]);
-               *type = types[0];
-       }
-       else
-       {
-               res3 = False;
-       }
-       if (types != NULL)
-       {
-               free(types);
-       }
-       
-       if (sids != NULL)
-       {
-               free(sids);
-       }
-       
-       return res3 && res4;
-}
-
-/************************************************************************
- Routine to look up a remote nt name
-*************************************************************************/
-static BOOL get_sid_and_type(const char *fullntname, uint8 expected_type,
-                               DOM_NAME_MAP *gmep)
-{
-       /*
-        * check with the PDC to see if it owns the name.  if so,
-        * the SID is resolved with the PDC database.
-        */
-
-       if (lp_server_role() == ROLE_DOMAIN_MEMBER)
-       {
-               if (lookup_remote_ntname(fullntname, &gmep->sid, &gmep->type))
-               {
-                       if (sid_front_equal(&gmep->sid, &global_member_sid) &&
-                           strequal(gmep->nt_domain, global_myworkgroup) &&
-                           gmep->type == expected_type)
-                       {
-                               return True;
-                       }
-                       return False;
-               }
-       }
-
-       /*
-        * ... otherwise, it's one of ours.  map the sid ourselves,
-        * which can only happen in our own SAM database.
-        */
-
-       if (!strequal(gmep->nt_domain, global_sam_name))
-       {
-               return False;
-       }
-       if (!pwdb_unixid_to_sam_sid(gmep->unix_id, gmep->type, &gmep->sid))
-       {
-               return False;
-       }
-
-       return True;
-}
-
-/*
- * used by lookup functions below
- */
-
-static fstring nt_name;
-static fstring unix_name;
-static fstring nt_domain;
-
-/*************************************************************************
- looks up a uid, returns User Information.  
-*************************************************************************/
-BOOL lookupsmbpwuid(uid_t uid, DOM_NAME_MAP *gmep)
-{
-       DEBUG(10,("lookupsmbpwuid: unix uid %d\n", uid));
-       if (map_username_uid(uid, gmep))
-       {
-               return True;
-       }
-#if 0
-       if (lp_server_role() != ROLE_DOMAIN_NONE)
-#endif
-       {
-               gmep->nt_name   = nt_name;
-               gmep->unix_name = unix_name;
-               gmep->nt_domain = nt_domain;
-
-               gmep->unix_id = (uint32)uid;
-
-               /*
-                * ok, assume it's one of ours.  then double-check it
-                * if we are a member of a domain
-                */
-
-               gmep->type = SID_NAME_USER;
-               fstrcpy(gmep->nt_name, uidtoname(uid));
-               fstrcpy(gmep->unix_name, gmep->nt_name);
-
-               /*
-                * here we should do a LsaLookupNames() call
-                * to check the status of the name with the PDC.
-                * if the PDC know nothing of the name, it's ours.
-                */
-
-               if (lp_server_role() == ROLE_DOMAIN_MEMBER)
-               {
-#if 0
-                       lsa_lookup_names(global_myworkgroup, gmep->nt_name, &gmep->sid...);
-#endif
-               }
-
-               /*
-                * ok, it's one of ours.
-                */
-
-               gmep->nt_domain = global_sam_name;
-               pwdb_unixid_to_sam_sid(gmep->unix_id, gmep->type, &gmep->sid);
-
-               return True;
-       }
-
-       /* oops. */
-
-       return False;
-}
-
-/*************************************************************************
- looks up by NT name, returns User Information.  
-*************************************************************************/
-BOOL lookupsmbpwntnam(const char *fullntname, DOM_NAME_MAP *gmep)
-{
-       DEBUG(10,("lookupsmbpwntnam: nt user name %s\n", fullntname));
-
-       if (!split_domain_name(fullntname, nt_domain, nt_name))
-       {
-               return False;
-       }
-
-       if (map_nt_username(nt_name, nt_domain, gmep))
-       {
-               return True;
-       }
-       if (lp_server_role() != ROLE_DOMAIN_NONE)
-       {
-               uid_t uid;
-               gmep->nt_name   = nt_name;
-               gmep->unix_name = unix_name;
-               gmep->nt_domain = nt_domain;
-
-               /*
-                * ok, it's one of ours.  we therefore "create" an nt user named
-                * after the unix user.  this is the point where "appliance mode"
-                * should get its teeth in, as unix users won't really exist,
-                * they will only be numbers...
-                */
-
-               gmep->type = SID_NAME_USER;
-               fstrcpy(gmep->unix_name, gmep->nt_name);
-               if (!nametouid(gmep->unix_name, &uid))
-               {
-                       return False;
-               }
-               gmep->unix_id = (uint32)uid;
-
-               return get_sid_and_type(fullntname, gmep->type, gmep);
-       }
-
-       /* oops. */
-
-       return False;
-}
-
-/*************************************************************************
- looks up by RID, returns User Information.  
-*************************************************************************/
-BOOL lookupsmbpwsid(DOM_SID *sid, DOM_NAME_MAP *gmep)
-{
-       fstring sid_str;
-       sid_to_string(sid_str, sid);
-       DEBUG(10,("lookupsmbpwsid: nt sid %s\n", sid_str));
-
-       if (map_username_sid(sid, gmep))
-       {
-               return True;
-       }
-       if (lp_server_role() != ROLE_DOMAIN_NONE)
-       {
-               gmep->nt_name   = nt_name;
-               gmep->unix_name = unix_name;
-               gmep->nt_domain = nt_domain;
-
-               /*
-                * here we should do a LsaLookupNames() call
-                * to check the status of the name with the PDC.
-                * if the PDC know nothing of the name, it's ours.
-                */
-
-               if (lp_server_role() == ROLE_DOMAIN_MEMBER)
-               {
-#if 0
-                       if (lookup_remote_sid(global_myworkgroup, gmep->sid, gmep->nt_name, gmep->nt_domain...);
-#endif
-               }
-
-               /*
-                * ok, it's one of ours.  we therefore "create" an nt user named
-                * after the unix user.  this is the point where "appliance mode"
-                * should get its teeth in, as unix users won't really exist,
-                * they will only be numbers...
-                */
-
-               gmep->type = SID_NAME_USER;
-               sid_copy(&gmep->sid, sid);
-               if (!pwdb_sam_sid_to_unixid(&gmep->sid, gmep->type, &gmep->unix_id))
-               {
-                       return False;
-               }
-               fstrcpy(gmep->nt_name, uidtoname((uid_t)gmep->unix_id));
-               fstrcpy(gmep->unix_name, gmep->nt_name);
-               gmep->nt_domain = global_sam_name;
-
-               return True;
-       }
-
-       /* oops. */
-
-       return False;
-}
-
-/************************************************************************
- Routine to look up group / alias / well-known group RID by UNIX name
-*************************************************************************/
-BOOL lookupsmbgrpnam(const char *unix_grp_name, DOM_NAME_MAP *grp)
-{
-       gid_t gid;
-       DEBUG(10,("lookupsmbgrpnam: unix user group %s\n", unix_grp_name));
-       if (nametogid(unix_grp_name, &gid))
-       {
-               return lookupsmbgrpgid(gid, grp);
-       }
-       else
-       {
-               return False;
-       }
-}
-
-/*************************************************************************
- looks up a SID, returns name map entry
-*************************************************************************/
-BOOL lookupsmbgrpsid(DOM_SID *sid, DOM_NAME_MAP *gmep)
-{
-       fstring sid_str;
-       sid_to_string(sid_str, sid);
-       DEBUG(10,("lookupsmbgrpsid: nt sid %s\n", sid_str));
-
-       if (map_alias_sid(sid, gmep))
-       {
-               return True;
-       }
-       if (map_group_sid(sid, gmep))
-       {
-               return True;
-       }
-       if (lp_server_role() != ROLE_DOMAIN_NONE)
-       {
-               gmep->nt_name   = nt_name;
-               gmep->unix_name = unix_name;
-               gmep->nt_domain = nt_domain;
-
-               /*
-                * here we should do a LsaLookupNames() call
-                * to check the status of the name with the PDC.
-                * if the PDC know nothing of the name, it's ours.
-                */
-
-               if (lp_server_role() == ROLE_DOMAIN_MEMBER)
-               {
-#if 0
-                       lsa_lookup_sids(global_myworkgroup, gmep->sid, gmep->nt_name, gmep->nt_domain...);
-#endif
-               }
-
-               /*
-                * ok, it's one of ours.  we therefore "create" an nt group or
-                * alias name named after the unix group.  this is the point
-                * where "appliance mode" should get its teeth in, as unix
-                * groups won't really exist, they will only be numbers...
-                */
-
-               /* name is not explicitly mapped
-                * with map files or the PDC
-                * so we are responsible for it...
-                */
-
-               if (lp_server_role() == ROLE_DOMAIN_MEMBER)
-               {
-                       /* ... as a LOCAL group. */
-                       gmep->type = SID_NAME_ALIAS;
-               }
-               else
-               {
-                       /* ... as a DOMAIN group. */
-                       gmep->type = SID_NAME_DOM_GRP;
-               }
-
-               sid_copy(&gmep->sid, sid);
-               if (!pwdb_sam_sid_to_unixid(&gmep->sid, gmep->type, &gmep->unix_id))
-               {
-                       return False;
-               }
-               fstrcpy(gmep->nt_name, gidtoname((gid_t)gmep->unix_id));
-               fstrcpy(gmep->unix_name, gmep->nt_name);
-               gmep->nt_domain = global_sam_name;
-
-               return True;
-       }
-
-       /* oops */
-       return False;
-}
-
-/*************************************************************************
- looks up a gid, returns RID and type local, domain or well-known domain group
-*************************************************************************/
-BOOL lookupsmbgrpgid(gid_t gid, DOM_NAME_MAP *gmep)
-{
-       DEBUG(10,("lookupsmbgrpgid: unix gid %d\n", (int)gid));
-       if (map_alias_gid(gid, gmep))
-       {
-               return True;
-       }
-       if (map_group_gid(gid, gmep))
-       {
-               return True;
-       }
-       if (lp_server_role() != ROLE_DOMAIN_NONE)
-       {
-               gmep->nt_name   = nt_name;
-               gmep->unix_name = unix_name;
-               gmep->nt_domain = nt_domain;
-
-               gmep->unix_id = (uint32)gid;
-
-               /*
-                * here we should do a LsaLookupNames() call
-                * to check the status of the name with the PDC.
-                * if the PDC know nothing of the name, it's ours.
-                */
-
-               if (lp_server_role() == ROLE_DOMAIN_MEMBER)
-               {
-#if 0
-                       if (lsa_lookup_names(global_myworkgroup, gmep->nt_name, &gmep->sid...);
-                       {
-                               return True;
-                       }
-#endif
-               }
-
-               /*
-                * ok, it's one of ours.  we therefore "create" an nt group or
-                * alias name named after the unix group.  this is the point
-                * where "appliance mode" should get its teeth in, as unix
-                * groups won't really exist, they will only be numbers...
-                */
-
-               /* name is not explicitly mapped
-                * with map files or the PDC
-                * so we are responsible for it...
-                */
-
-               if (lp_server_role() == ROLE_DOMAIN_MEMBER)
-               {
-                       /* ... as a LOCAL group. */
-                       gmep->type = SID_NAME_ALIAS;
-               }
-               else
-               {
-                       /* ... as a DOMAIN group. */
-                       gmep->type = SID_NAME_DOM_GRP;
-               }
-               fstrcpy(gmep->nt_name, gidtoname(gid));
-               fstrcpy(gmep->unix_name, gmep->nt_name);
-
-               return get_sid_and_type(gmep->nt_name, gmep->type, gmep);
-       }
-
-       /* oops */
-       return False;
-}
-
index af8cf960e8f2aee91f5776f6253b983bd03f02d5..608d2b89bad4ed951cdb9747eee4488b40ab3b9c 100644 (file)
@@ -45,9 +45,6 @@ const struct unix_error_map unix_dos_nt_errmap[] = {
 #endif
 #ifdef EROFS
        { EROFS, ERRHRD, ERRnowrite, NT_STATUS_ACCESS_DENIED },
-#endif
-#ifdef ENAMETOOLONG
-       { ENAMETOOLONG, ERRDOS, 206, NT_STATUS_OBJECT_NAME_INVALID },
 #endif
        { 0, 0, 0, NT_STATUS_OK }
 };
index d9886a54daf66d602ed849c09df20f49138cc4cc..e6d2de4a58bb26f51da7d03fe4da95d813d3b28d 100644 (file)
@@ -382,11 +382,10 @@ void message_deregister(int msg_type)
 
 struct msg_all {
        int msg_type;
-       uint32 msg_flag;
        const void *buf;
        size_t len;
        BOOL duplicates;
-       int n_sent;
+       int             n_sent;
 };
 
 /****************************************************************************
@@ -406,20 +405,13 @@ static int traverse_fn(TDB_CONTEXT *the_tdb, TDB_DATA kbuf, TDB_DATA dbuf, void
        if (crec.cnum != -1)
                return 0;
 
-       /* Don't send if the receiver hasn't registered an interest. */
-
-       if(!(crec.bcast_msg_flags & msg_all->msg_flag))
-               return 0;
-
-       /* If the msg send fails because the pid was not found (i.e. smbd died), 
+       /* if the msg send fails because the pid was not found (i.e. smbd died), 
         * the msg has already been deleted from the messages.tdb.*/
-
        if (!message_send_pid(crec.pid, msg_all->msg_type,
                              msg_all->buf, msg_all->len,
                              msg_all->duplicates)) {
                
-               /* If the pid was not found delete the entry from connections.tdb */
-
+               /* if the pid was not found delete the entry from connections.tdb */
                if (errno == ESRCH) {
                        DEBUG(2,("pid %u doesn't exist - deleting connections %d [%s]\n",
                                        (unsigned int)crec.pid, crec.cnum, crec.name));
@@ -450,17 +442,6 @@ BOOL message_send_all(TDB_CONTEXT *conn_tdb, int msg_type,
        struct msg_all msg_all;
 
        msg_all.msg_type = msg_type;
-       if (msg_type < 1000)
-               msg_all.msg_flag = FLAG_MSG_GENERAL;
-       else if (msg_type > 1000 && msg_type < 2000)
-               msg_all.msg_flag = FLAG_MSG_NMBD;
-       else if (msg_type > 2000 && msg_type < 3000)
-               msg_all.msg_flag = FLAG_MSG_PRINTING;
-       else if (msg_type > 3000 && msg_type < 4000)
-               msg_all.msg_flag = FLAG_MSG_SMBD;
-       else
-               return False;
-
        msg_all.buf = buf;
        msg_all.len = len;
        msg_all.duplicates = duplicates_allowed;
@@ -471,4 +452,73 @@ BOOL message_send_all(TDB_CONTEXT *conn_tdb, int msg_type,
                *n_sent = msg_all.n_sent;
        return True;
 }
+
+static SIG_ATOMIC_T gotalarm;
+
+/***************************************************************
+ Signal function to tell us we timed out.
+****************************************************************/
+
+static void gotalarm_sig(void)
+{
+       gotalarm = 1;
+}
+
+/**
+ * Lock the messaging tdb based on a string - this is used as a primitive
+ * form of mutex between smbd instances. 
+ *
+ * @param name A string identifying the name of the mutex.
+ */
+
+BOOL message_named_mutex(char *name, unsigned int timeout)
+{
+       TDB_DATA key;
+       int ret;
+       void (*oldsig_handler)(int) = NULL;
+
+       if (!message_init())
+               return False;
+
+       key.dptr = name;
+       key.dsize = strlen(name)+1;
+
+       if (timeout) {
+               gotalarm = 0;
+               oldsig_handler = CatchSignal(SIGALRM, SIGNAL_CAST gotalarm_sig);
+               alarm(timeout);
+       }
+
+       ret = tdb_chainlock(tdb, key);
+
+       if (timeout) {
+               alarm(0);
+               CatchSignal(SIGALRM, SIGNAL_CAST oldsig_handler);
+               if (gotalarm)
+                       return False;
+       }
+
+       if (ret == 0)
+               DEBUG(10,("message_named_mutex: got mutex for %s\n", name ));
+
+       return (ret == 0);
+}
+
+/**
+ * Unlock a named mutex.
+ *
+ * @param name A string identifying the name of the mutex.
+ */
+
+void message_named_mutex_release(char *name)
+{
+       TDB_DATA key;
+
+       key.dptr = name;
+       key.dsize = strlen(name)+1;
+
+       tdb_chainunlock(tdb, key);
+       DEBUG(10,("message_named_mutex: released mutex for %s\n", name ));
+}
+
 /** @} **/
index bbc17cb704de8520fac1be8ff5e4aad3cd572c84..a3d6af4fbc1a6a766690d0402adcf47cf89a2fb2 100644 (file)
@@ -33,7 +33,7 @@ static void debug_callback(poptContext con,
        switch(opt->val) {
        case 'd':
                if (arg) {
-                       debug_parse_levels(arg);
+                       DEBUGLEVEL = atoi(arg);
                        AllowDebugChange = False;
                }
 
@@ -43,7 +43,7 @@ static void debug_callback(poptContext con,
 
 struct poptOption popt_common_debug[] = {
        { NULL, 0, POPT_ARG_CALLBACK, debug_callback },
-       { "debuglevel", 'd', POPT_ARG_STRING, NULL, 'd', "Set debug level", 
+       { "debuglevel", 'd', POPT_ARG_INT, NULL, 'd', "Set debug level", 
          "DEBUGLEVEL" },
        { 0 }
 };
index 58c4ecf482dbb4c30f8690473501bff9371316d7..d80c571dd3bb8d1aabf2b1139b8059c0420b81da 100644 (file)
 
 #include "includes.h"
 
-#ifdef HAVE_LIBREADLINE
-#  ifdef HAVE_READLINE_READLINE_H
-#    include <readline/readline.h>
-#    ifdef HAVE_READLINE_HISTORY_H
-#      include <readline/history.h>
-#    endif
-#  else
-#    ifdef HAVE_READLINE_H
-#      include <readline.h>
-#      ifdef HAVE_HISTORY_H
-#        include <history.h>
-#      endif
-#    else
-#      undef HAVE_LIBREADLINE
-#    endif
-#  endif
-#endif
-
 #ifdef HAVE_NEW_LIBREADLINE
 #  define RL_COMPLETION_CAST (rl_completion_func_t *)
 #else
index 3e5512c734205d77720525cab9dc89af7af0972a..416d77564d76f00cf1e29d3fac906efa3c0e138a 100644 (file)
@@ -38,7 +38,7 @@ BOOL grab_server_mutex(const char *name)
                DEBUG(0,("grab_server_mutex: malloc failed for %s\n", name));
                return False;
        }
-       if (!secrets_named_mutex(mutex_server_name, 10)) {
+       if (!message_named_mutex(mutex_server_name, 20)) {
                DEBUG(10,("grab_server_mutex: failed for %s\n", name));
                SAFE_FREE(mutex_server_name);
                return False;
@@ -50,7 +50,8 @@ BOOL grab_server_mutex(const char *name)
 void release_server_mutex(void)
 {
        if (mutex_server_name) {
-               secrets_named_mutex_release(mutex_server_name);
+               message_named_mutex_release(mutex_server_name);
                SAFE_FREE(mutex_server_name);
        }
 }
+
index 2550d00d14c7318015433147a968d6862bb5afcb..026df0f67f1518ae2a76bced7e347f1db855cc9c 100644 (file)
@@ -297,13 +297,8 @@ void standard_sub_basic(const char *smb_name, char *str,size_t len)
                case 'L' : 
                        if (local_machine_name && *local_machine_name)
                                string_sub(p,"%L", local_machine_name,l); 
-                       else {
-                               pstring temp_name;
-
-                               pstrcpy(temp_name, global_myname);
-                               strlower(temp_name);
-                               string_sub(p,"%L", temp_name,l); 
-                       }
+                       else
+                               string_sub(p,"%L", global_myname,l); 
                        break;
                case 'M' :
                        string_sub(p,"%M", client_name(),l);
@@ -680,19 +675,6 @@ void standard_sub_conn(connection_struct *conn, char *str, size_t len)
                        conn->gid, current_user_info.smb_name, str, len);
 }
 
-char *talloc_sub_conn(TALLOC_CTX *mem_ctx, connection_struct *conn, char *str)
-{
-       return talloc_sub_advanced(mem_ctx, SNUM(conn), conn->user,
-                       conn->connectpath, conn->gid,
-                       current_user_info.smb_name, str);
-}
-
-char *alloc_sub_conn(connection_struct *conn, char *str)
-{
-       return alloc_sub_advanced(SNUM(conn), conn->user, conn->connectpath,
-                       conn->gid, current_user_info.smb_name, str);
-}
-
 /****************************************************************************
  Like standard_sub but by snum.
 ****************************************************************************/
index 873b8737d506399d7e36d46df7351329947275a7..edda54a78d2745f04c557becbf82982ec25ee7ca 100644 (file)
@@ -1233,23 +1233,26 @@ int sys_dup2(int oldfd, int newfd)
  Wrapper for Admin Logs.
 ****************************************************************************/
 
-void sys_adminlog(int priority, char *format_str, ...)
+void sys_adminlog(int priority, const char *format_str, ...)
 {
        va_list ap;
        int ret;
-       char *msgbuf = NULL;
+       char **msgbuf = NULL;
+
+       if (!lp_admin_log())
+               return;
 
        va_start( ap, format_str );
-       ret = vasprintf( &msgbuf, format_str, ap );
+       ret = vasprintf( msgbuf, format_str, ap );
        va_end( ap );
 
        if (ret == -1)
                return;
 
 #if defined(HAVE_SYSLOG)
-       syslog( priority, "%s", msgbuf );
+       syslog( priority, "%s", *msgbuf );
 #else
-       DEBUG(0,("%s", msgbuf ));
+       DEBUG(0,("%s", *msgbuf ));
 #endif
-       SAFE_FREE(msgbuf);
+       SAFE_FREE(*msgbuf);
 }
index 0cd308694533934c131df10b197a82276de8ab82..28ceaf393905ab58319bda46bbe632c89a0110a5 100644 (file)
@@ -41,11 +41,6 @@ static int getgrouplist_internals(const char *user, gid_t gid, gid_t *groups, in
        gid_t *gids_saved;
        int ret, ngrp_saved;
 
-       if (non_root_mode()) {
-               *grpcnt = 0;
-               return 0;
-       }
-
        /* work out how many groups we need to save */
        ngrp_saved = getgroups(0, NULL);
        if (ngrp_saved == -1) {
@@ -61,14 +56,13 @@ static int getgrouplist_internals(const char *user, gid_t gid, gid_t *groups, in
 
        ngrp_saved = getgroups(ngrp_saved, gids_saved);
        if (ngrp_saved == -1) {
-               SAFE_FREE(gids_saved);
+               free(gids_saved);
                /* very strange! */
                return -1;
        }
 
        if (initgroups(user, gid) != 0) {
-               DEBUG(0, ("getgrouplist_internals: initgroups() failed!\n"));
-               SAFE_FREE(gids_saved);
+               free(gids_saved);
                return -1;
        }
 
@@ -107,6 +101,5 @@ int sys_getgrouplist(const char *user, gid_t gid, gid_t *groups, int *grpcnt)
        become_root();
        retval = getgrouplist_internals(user, gid, groups, grpcnt);
        unbecome_root();
-       return retval;
 #endif
 }
index ef12dc15f3443bdbdaaa0ea050357d2497131200..9d87414aea058f01e612a64039754a936a792884 100644 (file)
@@ -40,12 +40,6 @@ int extra_time_offset = 0;
 #define TIME_T_MAX (~ (time_t) 0 - TIME_T_MIN)
 #endif
 
-void get_nttime_max(NTTIME *t)
-{
-       /* FIXME: This is incorrect */
-       unix_to_nt_time(t, get_time_t_max());
-}
-
 /*******************************************************************
  External access to time_t_min and time_t_max.
 ********************************************************************/
index ef11542ab194afa8bd51fa3c3fa774a45caa09e2..5db7f58b1e254dd42346b33270bc84e9f11ce00c 100644 (file)
@@ -273,6 +273,27 @@ done:
        return ret;
 }
 
+/****************************************************************************
+ Get_Pwnam wrapper for modification.
+  NOTE: This can potentially modify 'user'! 
+****************************************************************************/
+
+struct passwd *Get_Pwnam_Modify(fstring user)
+{
+       fstring user2;
+       struct passwd *ret;
+
+       fstrcpy(user2, user);
+
+       ret = Get_Pwnam_internals(user, user2);
+       
+       /* If caller wants the modified username, ensure they get it  */
+       fstrcpy(user,user2);
+
+       /* We can safely assume ret is NULL if none of the above succeed */
+       return(ret);  
+}
+
 /****************************************************************************
  Get_Pwnam wrapper without modification.
   NOTE: This with NOT modify 'user'! 
@@ -615,3 +636,39 @@ static struct passwd * uname_string_combinations(char *s,struct passwd * (*fn)(c
        return(NULL);
 }
 
+/****************************************************************************
+ These wrappers allow appliance mode to work. In appliance mode the username
+ takes the form DOMAIN/user.
+****************************************************************************/
+
+struct passwd *smb_getpwnam(char *user, BOOL allow_change)
+{
+       struct passwd *pw;
+       char *p;
+       char *sep;
+       extern pstring global_myname;
+
+       if (allow_change)
+               pw = Get_Pwnam_Modify(user);
+       else
+               pw = Get_Pwnam(user);
+
+       if (pw)
+               return pw;
+
+       /*
+        * If it is a domain qualified name and it isn't in our password
+        * database but the domain portion matches our local machine name then
+        * lookup just the username portion locally.
+        */
+
+       sep = lp_winbind_separator();
+       p = strchr_m(user,*sep);
+       if (p && strncasecmp(global_myname, user, strlen(global_myname))==0) {
+               if (allow_change)
+                       pw = Get_Pwnam_Modify(p+1);
+               else
+                       pw = Get_Pwnam(p+1);
+       }
+       return NULL;
+}
index 51b92568b4dffb7232ac9eeb6dac6a40e7b72f39..ae94b710b2cbabc2603294bab617c9678a5f4d40 100644 (file)
@@ -260,8 +260,8 @@ void show_msg(char *buf)
        int i;
        int bcc=0;
 
-       if (!DEBUGLVL(5)) return;
-       
+       if (DEBUGLEVEL < 5) return;
+
        DEBUG(5,("size=%d\nsmb_com=0x%x\nsmb_rcls=%d\nsmb_reh=%d\nsmb_err=%d\nsmb_flg=%d\nsmb_flg2=%d\n",
                        smb_len(buf),
                        (int)CVAL(buf,smb_com),
@@ -270,26 +270,31 @@ void show_msg(char *buf)
                        (int)SVAL(buf,smb_err),
                        (int)CVAL(buf,smb_flg),
                        (int)SVAL(buf,smb_flg2)));
-       DEBUGADD(5,("smb_tid=%d\nsmb_pid=%d\nsmb_uid=%d\nsmb_mid=%d\n",
+       DEBUG(5,("smb_tid=%d\nsmb_pid=%d\nsmb_uid=%d\nsmb_mid=%d\nsmt_wct=%d\n",
                        (int)SVAL(buf,smb_tid),
                        (int)SVAL(buf,smb_pid),
                        (int)SVAL(buf,smb_uid),
-                       (int)SVAL(buf,smb_mid)));
-       DEBUGADD(5,("smt_wct=%d\n",(int)CVAL(buf,smb_wct)));
+                       (int)SVAL(buf,smb_mid),
+                       (int)CVAL(buf,smb_wct)));
 
        for (i=0;i<(int)CVAL(buf,smb_wct);i++)
-               DEBUGADD(5,("smb_vwv[%2d]=%5d (0x%X)\n",i,
+       {
+               DEBUG(5,("smb_vwv[%d]=%d (0x%X)\n",i,
                        SVAL(buf,smb_vwv+2*i),SVAL(buf,smb_vwv+2*i)));
-       
+       }
+
        bcc = (int)SVAL(buf,smb_vwv+2*(CVAL(buf,smb_wct)));
 
-       DEBUGADD(5,("smb_bcc=%d\n",bcc));
+       DEBUG(5,("smb_bcc=%d\n",bcc));
 
        if (DEBUGLEVEL < 10) return;
 
-       if (DEBUGLEVEL < 50) bcc = MIN(bcc, 512);
+       if (DEBUGLEVEL < 50)
+       {
+               bcc = MIN(bcc, 512);
+       }
 
-       dump_data(10, smb_buf(buf), bcc);       
+       dump_data(10, smb_buf(buf), bcc);
 }
 
 /*******************************************************************
@@ -1135,18 +1140,8 @@ something really nasty happened - panic!
 void smb_panic(char *why)
 {
        char *cmd = lp_panic_action();
-       int result;
-
        if (cmd && *cmd) {
-               DEBUG(0, ("smb_panic(): calling panic action [%s]\n", cmd));
-               result = system(cmd);
-
-               if (result == -1)
-                       DEBUG(0, ("smb_panic(): fork failed in panic action: %s\n",
-                                 strerror(errno)));
-               else
-                       DEBUG(0, ("smb_panic(): action returned status %d\n",
-                                 WEXITSTATUS(result)));
+               system(cmd);
        }
        DEBUG(0,("PANIC: %s\n", why));
        dbgflush();
@@ -1569,35 +1564,35 @@ void print_asc(int level, const unsigned char *buf,int len)
 
 void dump_data(int level, const char *buf1,int len)
 {
-       const unsigned char *buf = (const unsigned char *)buf1;
-       int i=0;
-       if (len<=0) return;
-
-       if (!DEBUGLVL(level)) return;
-       
-       DEBUGADD(level,("[%03X] ",i));
-       for (i=0;i<len;) {
-               DEBUGADD(level,("%02X ",(int)buf[i]));
-               i++;
-               if (i%8 == 0) DEBUGADD(level,(" "));
-               if (i%16 == 0) {      
-                       print_asc(level,&buf[i-16],8); DEBUGADD(level,(" "));
-                       print_asc(level,&buf[i-8],8); DEBUGADD(level,("\n"));
-                       if (i<len) DEBUGADD(level,("[%03X] ",i));
-               }
-       }
-       if (i%16) {
-               int n;
-               n = 16 - (i%16);
-               DEBUGADD(level,(" "));
-               if (n>8) DEBUGADD(level,(" "));
-               while (n--) DEBUGADD(level,("   "));
-               n = MIN(8,i%16);
-               print_asc(level,&buf[i-(i%16)],n); DEBUGADD(level,( " " ));
-               n = (i%16) - n;
-               if (n>0) print_asc(level,&buf[i-n],n); 
-               DEBUGADD(level,("\n"));    
-       }       
+  const unsigned char *buf = (const unsigned char *)buf1;
+  int i=0;
+  if (len<=0) return;
+
+  DEBUG(level,("[%03X] ",i));
+  for (i=0;i<len;) {
+    DEBUG(level,("%02X ",(int)buf[i]));
+    i++;
+    if (i%8 == 0) DEBUG(level,(" "));
+    if (i%16 == 0) {      
+      print_asc(level,&buf[i-16],8); DEBUG(level,(" "));
+      print_asc(level,&buf[i-8],8); DEBUG(level,("\n"));
+      if (i<len) DEBUG(level,("[%03X] ",i));
+    }
+  }
+  if (i%16) {
+    int n;
+
+    n = 16 - (i%16);
+    DEBUG(level,(" "));
+    if (n>8) DEBUG(level,(" "));
+    while (n--) DEBUG(level,("   "));
+
+    n = MIN(8,i%16);
+    print_asc(level,&buf[i-(i%16)],n); DEBUG(level,(" "));
+    n = (i%16) - n;
+    if (n>0) print_asc(level,&buf[i-n],n); 
+    DEBUG(level,("\n"));    
+  }
 }
 
 char *tab_depth(int depth)
@@ -1824,17 +1819,6 @@ char *smb_xstrdup(const char *s)
        return s1;
 }
 
-/**
- strndup that aborts on malloc fail.
-**/
-char *smb_xstrndup(const char *s, size_t n)
-{
-       char *s1 = strndup(s, n);
-       if (!s1)
-               smb_panic("smb_xstrndup: malloc fail\n");
-       return s1;
-}
-
 /*
   vasprintf that aborts on malloc fail
 */
index b137023e55cfa5b83ae581d8b61109e12df1dd3b..9fdf03adfc8b13c0eb79ada6b9c86146628adfca 100644 (file)
@@ -21,8 +21,6 @@
 
 #include "includes.h"
 
-extern DOM_SID global_sid_Builtin;
-
 /**********************************************************************************
  Check if this ACE has a SID in common with the token.
 **********************************************************************************/
@@ -44,7 +42,7 @@ static BOOL token_sid_in_ace(const NT_USER_TOKEN *token, const SEC_ACE *ace)
  bits not yet granted. Zero means permission allowed (no more needed bits).
 **********************************************************************************/
 
-static uint32 check_ace(SEC_ACE *ace, const NT_USER_TOKEN *token, uint32 acc_desired, 
+static uint32 check_ace(SEC_ACE *ace, NT_USER_TOKEN *token, uint32 acc_desired, 
                        NTSTATUS *status)
 {
        uint32 mask = ace->info.mask;
@@ -104,7 +102,7 @@ static uint32 check_ace(SEC_ACE *ace, const NT_USER_TOKEN *token, uint32 acc_des
  include other bits requested.
 **********************************************************************************/ 
 
-static BOOL get_max_access( SEC_ACL *the_acl, const NT_USER_TOKEN *token, uint32 *granted, 
+static BOOL get_max_access( SEC_ACL *the_acl, NT_USER_TOKEN *token, uint32 *granted, 
                            uint32 desired, 
                            NTSTATUS *status)
 {
@@ -226,7 +224,7 @@ void se_map_standard(uint32 *access_mask, struct standard_mapping *mapping)
  "Access-Checking" document in MSDN.
 *****************************************************************************/ 
 
-BOOL se_access_check(SEC_DESC *sd, const NT_USER_TOKEN *token,
+BOOL se_access_check(SEC_DESC *sd, NT_USER_TOKEN *token,
                     uint32 acc_desired, uint32 *acc_granted, 
                     NTSTATUS *status)
 {
@@ -264,13 +262,12 @@ BOOL se_access_check(SEC_DESC *sd, const NT_USER_TOKEN *token,
        }
 
        /* The user sid is the first in the token */
-       if (DEBUGLVL(3)) {
-               DEBUG(3, ("se_access_check: user sid is %s\n", sid_to_string(sid_str, &token->user_sids[PRIMARY_USER_SID_INDEX]) ));
-               
-               for (i = 1; i < token->num_sids; i++) {
-                       DEBUGADD(3, ("se_access_check: also %s\n",
-                                 sid_to_string(sid_str, &token->user_sids[i])));
-               }
+
+       DEBUG(3, ("se_access_check: user sid is %s\n", sid_to_string(sid_str, &token->user_sids[PRIMARY_USER_SID_INDEX]) ));
+
+       for (i = 1; i < token->num_sids; i++) {
+               DEBUG(3, ("se_access_check: also %s\n",
+                         sid_to_string(sid_str, &token->user_sids[i])));
        }
 
        /* Is the token the owner of the SID ? */
@@ -300,7 +297,7 @@ BOOL se_access_check(SEC_DESC *sd, const NT_USER_TOKEN *token,
        for ( i = 0 ; i < the_acl->num_aces && tmp_acc_desired != 0; i++) {
                SEC_ACE *ace = &the_acl->ace[i];
 
-               DEBUGADD(10,("se_access_check: ACE %u: type %d, flags = 0x%02x, SID = %s mask = %x, current desired = %x\n",
+               DEBUG(10,("se_access_check: ACE %u: type %d, flags = 0x%02x, SID = %s mask = %x, current desired = %x\n",
                          (unsigned int)i, ace->type, ace->flags,
                          sid_to_string(sid_str, &ace->trustee),
                          (unsigned int) ace->info.mask, 
@@ -445,42 +442,3 @@ SEC_DESC_BUF *se_create_child_secdesc(TALLOC_CTX *ctx, SEC_DESC *parent_ctr,
 
        return sdb;
 }
-
-/*******************************************************************
- samr_make_sam_obj_sd
- ********************************************************************/
-
-NTSTATUS samr_make_sam_obj_sd(TALLOC_CTX *ctx, SEC_DESC **psd, size_t *sd_size)
-{
-       extern DOM_SID global_sid_World;
-       DOM_SID adm_sid;
-       DOM_SID act_sid;
-
-       SEC_ACE ace[3];
-       SEC_ACCESS mask;
-
-       SEC_ACL *psa = NULL;
-
-       sid_copy(&adm_sid, &global_sid_Builtin);
-       sid_append_rid(&adm_sid, BUILTIN_ALIAS_RID_ADMINS);
-
-       sid_copy(&act_sid, &global_sid_Builtin);
-       sid_append_rid(&act_sid, BUILTIN_ALIAS_RID_ACCOUNT_OPS);
-
-       /*basic access for every one*/
-       init_sec_access(&mask, SAMR_EXECUTE | SAMR_READ);
-       init_sec_ace(&ace[0], &global_sid_World, SEC_ACE_TYPE_ACCESS_ALLOWED, mask, 0);
-
-       /*full access for builtin aliases Administrators and Account Operators*/
-       init_sec_access(&mask, SAMR_ALL_ACCESS);
-       init_sec_ace(&ace[1], &adm_sid, SEC_ACE_TYPE_ACCESS_ALLOWED, mask, 0);
-       init_sec_ace(&ace[2], &act_sid, SEC_ACE_TYPE_ACCESS_ALLOWED, mask, 0);
-
-       if ((psa = make_sec_acl(ctx, NT4_ACL_REVISION, 3, ace)) == NULL)
-               return NT_STATUS_NO_MEMORY;
-
-       if ((*psd = make_sec_desc(ctx, SEC_DESC_REVISION, NULL, NULL, NULL, psa, sd_size)) == NULL)
-               return NT_STATUS_NO_MEMORY;
-
-       return NT_STATUS_OK;
-}
index e9635fc7f84b20dfb5af4a2563e34701cf912312..ad09f9123460d937250cf0f53c86d703768a4b25 100644 (file)
@@ -30,11 +30,13 @@ extern fstring global_myworkgroup;
  * Some useful sids
  */
 
+DOM_SID global_sid_Builtin;                            /* Local well-known domain */
 DOM_SID global_sid_World_Domain;               /* Everyone domain */
 DOM_SID global_sid_World;                              /* Everyone */
 DOM_SID global_sid_Creator_Owner_Domain;    /* Creator Owner domain */
 DOM_SID global_sid_NT_Authority;               /* NT Authority */
 DOM_SID global_sid_NULL;                       /* NULL sid */
+DOM_SID global_sid_Builtin_Guests;                     /* Builtin guest users */
 DOM_SID global_sid_Authenticated_Users;                /* All authenticated rids */
 DOM_SID global_sid_Network;                                    /* Network rids */
 
@@ -42,11 +44,6 @@ static DOM_SID global_sid_Creator_Owner;             /* Creator Owner */
 static DOM_SID global_sid_Creator_Group;              /* Creator Group */
 static DOM_SID global_sid_Anonymous;                           /* Anonymous login */
 
-DOM_SID global_sid_Builtin;                            /* Local well-known domain */
-DOM_SID global_sid_Builtin_Administrators;
-DOM_SID global_sid_Builtin_Users;
-DOM_SID global_sid_Builtin_Guests;                     /* Builtin guest users */
-
 /*
  * An NT compatible anonymous token.
  */
@@ -102,8 +99,6 @@ const char *sid_type_lookup(uint32 sid_type)
 void generate_wellknown_sids(void)
 {
        string_to_sid(&global_sid_Builtin, "S-1-5-32");
-       string_to_sid(&global_sid_Builtin_Administrators, "S-1-5-32-544");
-       string_to_sid(&global_sid_Builtin_Users, "S-1-5-32-545");
        string_to_sid(&global_sid_Builtin_Guests, "S-1-5-32-546");
        string_to_sid(&global_sid_World_Domain, "S-1-1");
        string_to_sid(&global_sid_World, "S-1-1-0");
@@ -530,18 +525,3 @@ char *sid_binstring(DOM_SID *sid)
        return s;
 }
 
-
-/*
-  print a GUID structure for debugging
-*/
-void print_guid(GUID *guid)
-{
-       int i;
-
-       d_printf("%08x-%04x-%04x", 
-                IVAL(guid->info, 0), SVAL(guid->info, 4), SVAL(guid->info, 6));
-       d_printf("-%02x%02x-", guid->info[8], guid->info[9]);
-       for (i=10;i<GUID_SIZE;i++)
-               d_printf("%02x", guid->info[i]);
-       d_printf("\n");
-}
index fc2abf976f45512b299c5a7152e000e3127ff9de..5e2b7c5ed97f1c2bfba6785502b174dc1864ee44 100644 (file)
@@ -871,7 +871,7 @@ static BOOL matchname(char *remotehost,struct in_addr  addr)
        
        /* Look up the host address in the address list we just got. */
        for (i = 0; hp->h_addr_list[i]; i++) {
-               if (memcmp(hp->h_addr_list[i], (char *) & addr, sizeof(addr)) == 0)
+               if (memcmp(hp->h_addr_list[i], (caddr_t) & addr, sizeof(addr)) == 0)
                        return True;
        }
        
@@ -976,7 +976,6 @@ int create_pipe_sock(const char *socket_dir,
                     const char *socket_name,
                     mode_t dir_perms)
 {
-#ifdef HAVE_UNIXSOCKET
         struct sockaddr_un sunaddr;
         struct stat st;
         int sock;
@@ -1065,10 +1064,6 @@ int create_pipe_sock(const char *socket_dir,
         /* Success! */
         
         return sock;
-#else
-        DEBUG(0, ("create_pipe_sock: No Unix sockets on this system\n"));
-        return -1;
-#endif /* HAVE_UNIXSOCKET */
 }
 
 /*******************************************************************
index eb47252413133928590182abdbaaceb22daa25e9..ba02819bdc6553264562a648cbb159c56a4b0d81 100644 (file)
@@ -218,16 +218,6 @@ void unistr2_to_ascii(char *dest, const UNISTR2 *str, size_t maxlen)
        pull_ucs2(NULL, dest, str->buffer, maxlen, str->uni_str_len*2, STR_NOALIGN);
 }
 
-/*******************************************************************
-give a static string for displaying a UNISTR2
-********************************************************************/
-const char *unistr2_static(const UNISTR2 *str)
-{
-       static pstring ret;
-       unistr2_to_ascii(ret, str, sizeof(ret));
-       return ret;
-}
-
 
 /*******************************************************************
  duplicate a UNISTR2 string into a null terminated char*
index 7621712e9ad31192f93d97917b7ec61b82de306b..b5710f3a39e15e648f349c21f379d11eaa87489b 100644 (file)
@@ -43,7 +43,6 @@ XFILE *x_stderr = &_x_stderr;
 
 #define X_FLAG_EOF 1
 #define X_FLAG_ERROR 2
-#define X_FLAG_EINVAL 3
 
 /* simulate setvbuf() */
 int x_setvbuf(XFILE *f, char *buf, int mode, size_t size)
@@ -342,36 +341,3 @@ char *x_fgets(char *s, int size, XFILE *stream)
        *s = 0;
        return s0;
 }
-
-/* trivial seek, works only for SEEK_SET and SEEK_END if SEEK_CUR is
- * set then an error is returned */
-off_t x_tseek(XFILE *f, off_t offset, int whence)
-{
-       if (f->flags & X_FLAG_ERROR)
-               return -1;
-
-       /* only SEEK_SET and SEEK_END are supported */
-       /* SEEK_CUR needs internal offset counter */
-       if (whence != SEEK_SET && whence != SEEK_END) {
-               f->flags |= X_FLAG_EINVAL;
-               errno = EINVAL;
-               return -1;
-       }
-
-       /* empty the buffer */
-       switch (f->open_flags & O_ACCMODE) {
-       case O_RDONLY:
-               f->bufused = 0;
-               break;
-       case O_WRONLY:
-               if (x_fflush(f) != 0)
-                       return -1;
-               break;
-       default:
-               errno = EINVAL;
-               return -1;
-       }
-
-       f->flags &= ~X_FLAG_EOF;
-       return (off_t)sys_lseek(f->fd, offset, whence);
-}
index d85f9c9b58a557e58eaa2281a0b54b0b93da8cde..2d1830435fef4202b5993ab002c656f39d155844 100644 (file)
@@ -30,49 +30,19 @@ ADS_STATUS ads_build_error(enum ads_error_type etype,
                           int rc, int minor_status)
 {
        ADS_STATUS ret;
-
-       if (etype == ADS_ERROR_NT) {
-               DEBUG(0,("don't use ads_build_error with ADS_ERROR_NT!\n"));
-               ret.err.rc = -1;
-               ret.error_type = ADS_ERROR_SYSTEM;
-               ret.minor_status = 0;
-               return ret;     
-       }       
-               
-       ret.err.rc = rc;
-       ret.error_type = etype;         
+       ret.error_type = etype;
+       ret.rc = rc;
        ret.minor_status = minor_status;
        return ret;
 }
 
-ADS_STATUS ads_build_nt_error(enum ads_error_type etype, 
-                          NTSTATUS nt_status)
-{
-       ADS_STATUS ret;
-
-       if (etype != ADS_ERROR_NT) {
-               DEBUG(0,("don't use ads_build_nt_error without ADS_ERROR_NT!\n"));
-               ret.err.rc = -1;
-               ret.error_type = ADS_ERROR_SYSTEM;
-               ret.minor_status = 0;
-               return ret;     
-       }
-       ret.err.nt_status = nt_status;
-       ret.error_type = etype;         
-       ret.minor_status = 0;
-       return ret;
-}
-
 /*
   do a rough conversion between ads error codes and NT status codes
   we'll need to fill this in more
 */
-NTSTATUS ads_ntstatus(ADS_STATUS status)
+NTSTATUS ads_ntstatus(ADS_STATUS rc)
 {
-       if (status.error_type == ADS_ERROR_NT){
-               return status.err.nt_status;    
-       }
-       if (ADS_ERR_OK(status)) return NT_STATUS_OK;
+       if (ADS_ERR_OK(rc)) return NT_STATUS_OK;
        return NT_STATUS_UNSUCCESSFUL;
 }
 
@@ -89,14 +59,14 @@ const char *ads_errstr(ADS_STATUS status)
 
        switch (status.error_type) {
        case ADS_ERROR_SYSTEM:
-               return strerror(status.err.rc);
+               return strerror(status.rc);
 #ifdef HAVE_LDAP
        case ADS_ERROR_LDAP:
-               return ldap_err2string(status.err.rc);
+               return ldap_err2string(status.rc);
 #endif
 #ifdef HAVE_KRB5
        case ADS_ERROR_KRB5: 
-               return error_message(status.err.rc);
+               return error_message(status.rc);
 #endif
 #ifdef HAVE_GSSAPI
        case ADS_ERROR_GSS:
@@ -106,7 +76,7 @@ const char *ads_errstr(ADS_STATUS status)
                gss_buffer_desc msg1, msg2;
                msg1.value = NULL;
                msg2.value = NULL;
-               gss_display_status(&minor, status.err.rc, GSS_C_GSS_CODE,
+               gss_display_status(&minor, status.rc, GSS_C_GSS_CODE,
                                   GSS_C_NULL_OID, &msg_ctx, &msg1);
                gss_display_status(&minor, status.minor_status, GSS_C_MECH_CODE,
                                   GSS_C_NULL_OID, &msg_ctx, &msg2);
@@ -116,8 +86,6 @@ const char *ads_errstr(ADS_STATUS status)
                return ret;
        }
 #endif
-       case ADS_ERROR_NT: 
-               return nt_errstr(ads_ntstatus(status));
        default:
                return "Unknown ADS error type!? (not compiled in?)";
        }
index a80837cf4df478a45247888171e3ad7606acbd06..9a486237c9fe9a65c198bd924f96aab0b8163a50 100644 (file)
@@ -50,7 +50,7 @@ kerb_prompter(krb5_context ctx, void *data,
   simulate a kinit, putting the tgt in the default cache location
   remus@snapserver.com
 */
-int kerberos_kinit_password(const char *principal, const char *password, int time_offset)
+int kerberos_kinit_password(const char *principal, const char *password)
 {
        krb5_context ctx;
        krb5_error_code code = 0;
@@ -60,10 +60,6 @@ int kerberos_kinit_password(const char *principal, const char *password, int tim
 
        if ((code = krb5_init_context(&ctx)))
                return code;
-
-       if (time_offset != 0) {
-               krb5_set_real_time(ctx, time(NULL) + time_offset, 0);
-       }
        
        if ((code = krb5_cc_default(ctx, &cc))) {
                krb5_free_context(ctx);
@@ -115,7 +111,7 @@ int ads_kinit_password(ADS_STRUCT *ads)
        int ret;
 
        asprintf(&s, "%s@%s", ads->auth.user_name, ads->auth.realm);
-       ret = kerberos_kinit_password(s, ads->auth.password, ads->auth.time_offset);
+       ret = kerberos_kinit_password(s, ads->auth.password);
 
        if (ret) {
                DEBUG(0,("kerberos_kinit_password %s failed: %s\n", 
index a49b6cbe3b0ee8a01ed6ec30286544d0e175921c..ec79a8658fe721e6accbf05ad64534738ea0a0b3 100644 (file)
@@ -248,8 +248,7 @@ static krb5_error_code parse_setpw_reply(krb5_context context,
        return 0;
 }
 
-ADS_STATUS krb5_set_password(const char *kdc_host, const char *princ, const char *newpw, 
-                            int time_offset)
+ADS_STATUS krb5_set_password(const char *kdc_host, const char *princ, const char *newpw)
 {
        krb5_context context;
        krb5_auth_context auth_context = NULL;
@@ -269,10 +268,6 @@ ADS_STATUS krb5_set_password(const char *kdc_host, const char *princ, const char
                return ADS_ERROR_KRB5(ret);
        }
        
-       if (time_offset != 0) {
-               krb5_set_real_time(context, time(NULL) + time_offset, 0);
-       }
-
        ret = krb5_cc_default(context, &ccache);
        if (ret) {
                krb5_free_context(context);
@@ -457,17 +452,16 @@ ADS_STATUS krb5_set_password(const char *kdc_host, const char *princ, const char
 
 ADS_STATUS kerberos_set_password(const char *kpasswd_server, 
                                 const char *auth_principal, const char *auth_password,
-                                const char *target_principal, const char *new_password,
-                                int time_offset)
+                                const char *target_principal, const char *new_password)
 {
     int ret;
 
-    if ((ret = kerberos_kinit_password(auth_principal, auth_password, time_offset))) {
+    if ((ret = kerberos_kinit_password(auth_principal, auth_password))) {
        DEBUG(1,("Failed kinit for principal %s (%s)\n", auth_principal, error_message(ret)));
        return ADS_ERROR_KRB5(ret);
     }
 
-    return krb5_set_password(kpasswd_server, target_principal, new_password, time_offset);
+    return krb5_set_password(kpasswd_server, target_principal, new_password);
 }
 
 
index 7a0afb1a8167d29d6920b6f70f60495facdfd76f..26724894829c2ffa2087f399904f081b0846fa40 100644 (file)
@@ -63,7 +63,6 @@ static BOOL ads_try_connect(ADS_STRUCT *ads, const char *server, unsigned port)
        ads->ldap_port = port;
        ads->ldap_ip = *interpret_addr2(srv);
        free(srv);
-
        return True;
 }
 
@@ -205,6 +204,7 @@ static BOOL ads_try_netbios(ADS_STRUCT *ads)
 ADS_STATUS ads_connect(ADS_STRUCT *ads)
 {
        int version = LDAP_VERSION3;
+       int code;
        ADS_STATUS status;
 
        ads->last_attempt = time(NULL);
@@ -226,7 +226,7 @@ ADS_STATUS ads_connect(ADS_STRUCT *ads)
        /* try via DNS */
        if (ads_try_dns(ads)) {
                goto got_connection;
-       }
+               }
 
        /* try via netbios lookups */
        if (!lp_disable_netbios() && ads_try_netbios(ads)) {
@@ -274,7 +274,12 @@ got_connection:
        }
 #endif
 
-       if (ads->auth.flags & ADS_AUTH_NO_BIND) {
+       if (ads->auth.password) {
+               if ((code = ads_kinit_password(ads)))
+                       return ADS_ERROR_KRB5(code);
+       }
+
+       if (ads->auth.no_bind) {
                return ADS_SUCCESS;
        }
 
@@ -608,17 +613,14 @@ ADS_STATUS ads_do_search(ADS_STRUCT *ads, const char *bind_path, int scope,
        char *utf8_exp, *utf8_path, **search_attrs = NULL;
        TALLOC_CTX *ctx;
 
-       if (!(ctx = talloc_init())) {
-               DEBUG(1,("ads_do_search: talloc_init() failed!"));
+       if (!(ctx = talloc_init()))
                return ADS_ERROR(LDAP_NO_MEMORY);
-       }
 
        /* 0 means the conversion worked but the result was empty 
           so we only fail if it's negative.  In any case, it always 
           at least nulls out the dest */
        if ((push_utf8_talloc(ctx, &utf8_exp, exp) < 0) ||
            (push_utf8_talloc(ctx, &utf8_path, bind_path) < 0)) {
-               DEBUG(1,("ads_do_search: push_utf8_talloc() failed!"));
                rc = LDAP_NO_MEMORY;
                goto done;
        }
@@ -630,7 +632,6 @@ ADS_STATUS ads_do_search(ADS_STRUCT *ads, const char *bind_path, int scope,
                /* if (!(search_attrs = ads_push_strvals(ctx, attrs)))  */
                if (!(str_list_copy(&search_attrs, attrs)))
                {
-                       DEBUG(1,("ads_do_search: str_list_copy() failed!"));
                        rc = LDAP_NO_MEMORY;
                        goto done;
                }
@@ -825,11 +826,7 @@ static ADS_STATUS ads_modlist_add(TALLOC_CTX *ctx, ADS_MODLIST *mods,
 ADS_STATUS ads_mod_str(TALLOC_CTX *ctx, ADS_MODLIST *mods, 
                       const char *name, const char *val)
 {
-       const char *values[2];
-
-       values[0] = val;
-       values[1] = NULL;
-
+       const char *values[2] = {val, NULL};
        if (!val)
                return ads_modlist_add(ctx, mods, LDAP_MOD_DELETE, name, NULL);
        return ads_modlist_add(ctx, mods, LDAP_MOD_REPLACE, name, 
@@ -864,10 +861,7 @@ ADS_STATUS ads_mod_strlist(TALLOC_CTX *ctx, ADS_MODLIST *mods,
 static ADS_STATUS ads_mod_ber(TALLOC_CTX *ctx, ADS_MODLIST *mods, 
                              const char *name, const struct berval *val)
 {
-       const struct berval *values[2];
-
-       values[0] = val;
-       values[1] = NULL;
+       const struct berval *values[2] = {val, NULL};
        if (!val)
                return ads_modlist_add(ctx, mods, LDAP_MOD_DELETE, name, NULL);
        return ads_modlist_add(ctx, mods, LDAP_MOD_REPLACE|LDAP_MOD_BVALUES,
@@ -890,7 +884,7 @@ ADS_STATUS ads_gen_mod(ADS_STRUCT *ads, const char *mod_dn, ADS_MODLIST mods)
           non-existent attribute (but allowable for the object) to run
        */
        LDAPControl PermitModify = {
-               ADS_PERMIT_MODIFY_OID,
+               "1.2.840.113556.1.4.1413",
                {0, NULL},
                (char) 1};
        LDAPControl *controls[2];
@@ -1416,7 +1410,7 @@ ADS_STATUS ads_set_machine_password(ADS_STRUCT *ads,
         */
        asprintf(&principal, "%s$@%s", host, ads->auth.realm);
        
-       status = krb5_set_password(ads->auth.kdc_server, principal, password, ads->auth.time_offset);
+       status = krb5_set_password(ads->auth.kdc_server, principal, password);
        
        free(host);
        free(principal);
@@ -1622,26 +1616,6 @@ ADS_STATUS ads_USN(ADS_STRUCT *ads, uint32 *usn)
        return ADS_SUCCESS;
 }
 
-/* parse a ADS timestring - typical string is
-   '20020917091222.0Z0' which means 09:12.22 17th September
-   2002, timezone 0 */
-static time_t ads_parse_time(const char *str)
-{
-       struct tm tm;
-
-       ZERO_STRUCT(tm);
-
-       if (sscanf(str, "%4d%2d%2d%2d%2d%2d", 
-                  &tm.tm_year, &tm.tm_mon, &tm.tm_mday, 
-                  &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 6) {
-               return 0;
-       }
-       tm.tm_year -= 1900;
-       tm.tm_mon -= 1;
-
-       return timegm(&tm);
-}
-
 
 /**
  * Find the servers name and realm - this can be done before authentication 
@@ -1652,37 +1626,22 @@ static time_t ads_parse_time(const char *str)
  **/
 ADS_STATUS ads_server_info(ADS_STRUCT *ads)
 {
-       const char *attrs[] = {"ldapServiceName", "currentTime", NULL};
+       const char *attrs[] = {"ldapServiceName", NULL};
        ADS_STATUS status;
        void *res;
-       char *value;
+       char **values;
        char *p;
-       char *timestr;
-       TALLOC_CTX *ctx;
-
-       if (!(ctx = talloc_init())) {
-               return ADS_ERROR(LDAP_NO_MEMORY);
-       }
 
        status = ads_do_search(ads, "", LDAP_SCOPE_BASE, "(objectclass=*)", attrs, &res);
        if (!ADS_ERR_OK(status)) return status;
 
-       value = ads_pull_string(ads, ctx, res, "ldapServiceName");
-       if (!value) {
-               return ADS_ERROR(LDAP_NO_RESULTS_RETURNED);
-       }
-
-       timestr = ads_pull_string(ads, ctx, res, "currentTime");
-       if (!timestr) {
-               return ADS_ERROR(LDAP_NO_RESULTS_RETURNED);
-       }
-
-       ldap_msgfree(res);
+       values = ldap_get_values(ads->ld, res, "ldapServiceName");
+       if (!values || !values[0]) return ADS_ERROR(LDAP_NO_RESULTS_RETURNED);
 
-       p = strchr(value, ':');
+       p = strchr(values[0], ':');
        if (!p) {
-               talloc_destroy(ctx);
-               DEBUG(1, ("ads_server_info: returned ldap server name did not contain a ':' so was deemed invalid\n"));
+               ldap_value_free(values);
+               ldap_msgfree(res);
                return ADS_ERROR(LDAP_DECODING_ERROR);
        }
 
@@ -1691,9 +1650,9 @@ ADS_STATUS ads_server_info(ADS_STRUCT *ads)
        ads->config.ldap_server_name = strdup(p+1);
        p = strchr(ads->config.ldap_server_name, '$');
        if (!p || p[1] != '@') {
-               talloc_destroy(ctx);
+               ldap_value_free(values);
+               ldap_msgfree(res);
                SAFE_FREE(ads->config.ldap_server_name);
-               DEBUG(1, ("ads_server_info: returned ldap server name did not contain '$@' so was deemed invalid\n"));
                return ADS_ERROR(LDAP_DECODING_ERROR);
        }
 
@@ -1708,15 +1667,6 @@ ADS_STATUS ads_server_info(ADS_STRUCT *ads)
        DEBUG(3,("got ldap server name %s@%s\n", 
                 ads->config.ldap_server_name, ads->config.realm));
 
-       ads->config.current_time = ads_parse_time(timestr);
-
-       if (ads->config.current_time != 0) {
-               ads->auth.time_offset = ads->config.current_time - time(NULL);
-               DEBUG(4,("time offset is %d seconds\n", ads->auth.time_offset));
-       }
-
-       talloc_destroy(ctx);
-
        return ADS_SUCCESS;
 }
 
index 66984477b815fce4bf56c0cd4d218f38b3cfc1dd..64ae8252c818c65b384d77f564704d92a43db712 100644 (file)
@@ -28,7 +28,7 @@
     results can be used.  It should be freed using ads_msgfree.
 */
 ADS_STATUS ads_find_printer_on_server(ADS_STRUCT *ads, void **res,
-                                     const char *printer, char *servername)
+                                     char *printer, char *servername)
 {
        ADS_STATUS status;
        char *srv_dn, **srv_cn, *exp;
index f7dd01084a2f9c1fc70ec685522200ac39dd97dd..81dedb0a81e7c257c2fd27bef5fcad5157c6c634 100644 (file)
 
 #ifdef HAVE_ADS
 
-/* 
-   perform a LDAP/SASL/SPNEGO/NTLMSSP bind (just how many layers can
-   we fit on one socket??)
+#if USE_CYRUS_SASL
+/*
+  this is a minimal interact function, just enough for SASL to talk
+  GSSAPI/kerberos to W2K
+  Error handling is a bit of a problem. I can't see how to get Cyrus-sasl
+  to give sensible errors
 */
-static ADS_STATUS ads_sasl_spnego_ntlmssp_bind(ADS_STRUCT *ads)
+static int sasl_interact(LDAP *ld,unsigned flags,void *defaults,void *in)
 {
-       const char *mechs[] = {OID_NTLMSSP, NULL};
-       DATA_BLOB msg1;
-       DATA_BLOB blob, chal1, chal2, auth;
-       uint8 challenge[8];
-       uint8 nthash[24], lmhash[24], sess_key[16];
-       uint32 neg_flags;
-       struct berval cred, *scred;
-       ADS_STATUS status;
-       extern pstring global_myname;
-       int rc;
+       sasl_interact_t *interact = in;
 
-       if (!ads->auth.password) {
-               /* No password, don't segfault below... */
-               return ADS_ERROR_NT(NT_STATUS_LOGON_FAILURE);
+       while (interact->id != SASL_CB_LIST_END) {
+               interact->result = strdup("");
+               interact->len = strlen(interact->result);
+               interact++;
        }
-
-       neg_flags = NTLMSSP_NEGOTIATE_UNICODE | 
-               NTLMSSP_NEGOTIATE_128 | 
-               NTLMSSP_NEGOTIATE_NTLM;
-
-       memset(sess_key, 0, 16);
-
-       /* generate the ntlmssp negotiate packet */
-       msrpc_gen(&blob, "CddB",
-                 "NTLMSSP",
-                 NTLMSSP_NEGOTIATE,
-                 neg_flags,
-                 sess_key, 16);
-
-       /* and wrap it in a SPNEGO wrapper */
-       msg1 = gen_negTokenTarg(mechs, blob);
-       data_blob_free(&blob);
-
-       cred.bv_val = msg1.data;
-       cred.bv_len = msg1.length;
-
-       rc = ldap_sasl_bind_s(ads->ld, NULL, "GSS-SPNEGO", &cred, NULL, NULL, &scred);
-       if (rc != LDAP_SASL_BIND_IN_PROGRESS) {
-               status = ADS_ERROR(rc);
-               goto failed;
-       }
-
-       blob = data_blob(scred->bv_val, scred->bv_len);
-
-       /* the server gives us back two challenges */
-       if (!spnego_parse_challenge(blob, &chal1, &chal2)) {
-               DEBUG(3,("Failed to parse challenges\n"));
-               status = ADS_ERROR(LDAP_OPERATIONS_ERROR);
-               goto failed;
-       }
-
-       data_blob_free(&blob);
-
-       /* encrypt the password with the challenge */
-       memcpy(challenge, chal1.data + 24, 8);
-       SMBencrypt(ads->auth.password, challenge,lmhash);
-       SMBNTencrypt(ads->auth.password, challenge,nthash);
-
-       data_blob_free(&chal1);
-       data_blob_free(&chal2);
-
-       /* this generates the actual auth packet */
-       msrpc_gen(&blob, "CdBBUUUBd", 
-                 "NTLMSSP", 
-                 NTLMSSP_AUTH, 
-                 lmhash, 24,
-                 nthash, 24,
-                 lp_workgroup(), 
-                 ads->auth.user_name, 
-                 global_myname,
-                 sess_key, 16,
-                 neg_flags);
-
-       /* wrap it in SPNEGO */
-       auth = spnego_gen_auth(blob);
-
-       data_blob_free(&blob);
-
-       /* now send the auth packet and we should be done */
-       cred.bv_val = auth.data;
-       cred.bv_len = auth.length;
-
-       rc = ldap_sasl_bind_s(ads->ld, NULL, "GSS-SPNEGO", &cred, NULL, NULL, &scred);
-
-       return ADS_ERROR(rc);
-
-failed:
-       return status;
+       
+       return LDAP_SUCCESS;
 }
-
-/* 
-   perform a LDAP/SASL/SPNEGO/KRB5 bind
-*/
-static ADS_STATUS ads_sasl_spnego_krb5_bind(ADS_STRUCT *ads, const char *principal)
-{
-       DATA_BLOB blob;
-       struct berval cred, *scred;
-       int rc;
-
-       blob = spnego_gen_negTokenTarg(principal, ads->auth.time_offset);
-
-       if (!blob.data) {
-               return ADS_ERROR(LDAP_OPERATIONS_ERROR);
-       }
-
-       /* now send the auth packet and we should be done */
-       cred.bv_val = blob.data;
-       cred.bv_len = blob.length;
-
-       rc = ldap_sasl_bind_s(ads->ld, NULL, "GSS-SPNEGO", &cred, NULL, NULL, &scred);
-
-       data_blob_free(&blob);
-
-       return ADS_ERROR(rc);
-}
-
-/* 
-   this performs a SASL/SPNEGO bind
-*/
-static ADS_STATUS ads_sasl_spnego_bind(ADS_STRUCT *ads)
-{
-       struct berval *scred=NULL;
-       int rc, i;
-       ADS_STATUS status;
-       DATA_BLOB blob;
-       char *principal;
-       char *OIDs[ASN1_MAX_OIDS];
-       BOOL got_kerberos_mechanism = False;
-
-       rc = ldap_sasl_bind_s(ads->ld, NULL, "GSS-SPNEGO", NULL, NULL, NULL, &scred);
-
-       if (rc != LDAP_SASL_BIND_IN_PROGRESS) {
-               status = ADS_ERROR(rc);
-               goto failed;
-       }
-
-       blob = data_blob(scred->bv_val, scred->bv_len);
-
-#if 0
-       file_save("sasl_spnego.dat", blob.data, blob.length);
 #endif
 
-       /* the server sent us the first part of the SPNEGO exchange in the negprot 
-          reply */
-       if (!spnego_parse_negTokenInit(blob, OIDs, &principal)) {
-               data_blob_free(&blob);
-               status = ADS_ERROR(LDAP_OPERATIONS_ERROR);
-               goto failed;
-       }
-       data_blob_free(&blob);
-
-       /* make sure the server understands kerberos */
-       for (i=0;OIDs[i];i++) {
-               DEBUG(3,("got OID=%s\n", OIDs[i]));
-               if (strcmp(OIDs[i], OID_KERBEROS5_OLD) == 0 ||
-                   strcmp(OIDs[i], OID_KERBEROS5) == 0) {
-                       got_kerberos_mechanism = True;
-               }
-               free(OIDs[i]);
-       }
-       DEBUG(3,("got principal=%s\n", principal));
 
-       if (!(ads->auth.flags & ADS_AUTH_DISABLE_KERBEROS) &&
-           got_kerberos_mechanism && ads_kinit_password(ads) == 0) {
-               return ads_sasl_spnego_krb5_bind(ads, principal);
-       }
-
-       /* lets do NTLMSSP ... this has the big advantage that we don't need
-          to sync clocks, and we don't rely on special versions of the krb5 
-          library for HMAC_MD4 encryption */
-       return ads_sasl_spnego_ntlmssp_bind(ads);
-
-failed:
-       return status;
-}
-
-#ifdef HAVE_GSSAPI
 #define MAX_GSS_PASSES 3
 
 /* this performs a SASL/gssapi bind
    we avoid using cyrus-sasl to make Samba more robust. cyrus-sasl
    is very dependent on correctly configured DNS whereas
    this routine is much less fragile
-   see RFC2078 and RFC2222 for details
+   see RFC2078 for details
 */
-static ADS_STATUS ads_sasl_gssapi_bind(ADS_STRUCT *ads)
+ADS_STATUS ads_sasl_gssapi_bind(ADS_STRUCT *ads)
 {
        int minor_status;
        gss_name_t serv_name;
@@ -229,7 +68,6 @@ static ADS_STATUS ads_sasl_gssapi_bind(ADS_STRUCT *ads)
        uint8 *p;
        uint32 max_msg_size;
        char *sname;
-       unsigned sec_layer;
        ADS_STATUS status;
        krb5_principal principal;
        krb5_context ctx;
@@ -321,25 +159,22 @@ static ADS_STATUS ads_sasl_gssapi_bind(ADS_STRUCT *ads)
 
        p = (uint8 *)output_token.value;
 
-       file_save("sasl_gssapi.dat", output_token.value, output_token.length);
-
        max_msg_size = (p[1]<<16) | (p[2]<<8) | p[3];
-       sec_layer = *p;
 
        gss_release_buffer(&minor_status, &output_token);
 
        output_token.value = malloc(strlen(ads->config.bind_path) + 8);
        p = output_token.value;
 
-       *p++ = 1; /* no sign & seal selection */
+       *p++ = 1; /* no sign or seal */
        /* choose the same size as the server gave us */
        *p++ = max_msg_size>>16;
        *p++ = max_msg_size>>8;
        *p++ = max_msg_size;
        snprintf(p, strlen(ads->config.bind_path)+4, "dn:%s", ads->config.bind_path);
-       p += strlen(p);
+       p += strlen(ads->config.bind_path);
 
-       output_token.length = PTR_DIFF(p, output_token.value);
+       output_token.length = strlen(ads->config.bind_path) + 8;
 
        gss_rc = gss_wrap(&minor_status, context_handle,0,GSS_C_QOP_DEFAULT,
                          &output_token, &conf_state,
@@ -363,51 +198,18 @@ static ADS_STATUS ads_sasl_gssapi_bind(ADS_STRUCT *ads)
 failed:
        return status;
 }
-#endif
-
-/* mapping between SASL mechanisms and functions */
-static struct {
-       const char *name;
-       ADS_STATUS (*fn)(ADS_STRUCT *);
-} sasl_mechanisms[] = {
-       {"GSS-SPNEGO", ads_sasl_spnego_bind},
-#ifdef HAVE_GSSAPI
-       {"GSSAPI", ads_sasl_gssapi_bind}, /* doesn't work with .NET RC1. No idea why */
-#endif
-       {NULL, NULL}
-};
 
 ADS_STATUS ads_sasl_bind(ADS_STRUCT *ads)
 {
-       const char *attrs[] = {"supportedSASLMechanisms", NULL};
-       char **values;
-       ADS_STATUS status;
-       int i, j;
-       void *res;
-
-       /* get a list of supported SASL mechanisms */
-       status = ads_do_search(ads, "", LDAP_SCOPE_BASE, "(objectclass=*)", attrs, &res);
-       if (!ADS_ERR_OK(status)) return status;
-
-       values = ldap_get_values(ads->ld, res, "supportedSASLMechanisms");
-
-       /* try our supported mechanisms in order */
-       for (i=0;sasl_mechanisms[i].name;i++) {
-               /* see if the server supports it */
-               for (j=0;values && values[j];j++) {
-                       if (strcmp(values[j], sasl_mechanisms[i].name) == 0) {
-                               DEBUG(4,("Found SASL mechanism %s\n", values[j]));
-                               status = sasl_mechanisms[i].fn(ads);
-                               ldap_value_free(values);
-                               ldap_msgfree(res);
-                               return status;
-                       }
-               }
-       }
-
-       ldap_value_free(values);
-       ldap_msgfree(res);
-       return ADS_ERROR(LDAP_AUTH_METHOD_NOT_SUPPORTED);
+#if USE_CYRUS_SASL
+       int rc;
+       rc = ldap_sasl_interactive_bind_s(ads->ld, NULL, NULL, NULL, NULL, 
+                                         LDAP_SASL_QUIET,
+                                         sasl_interact, NULL);
+       return ADS_ERROR(rc);
+#else
+       return ads_sasl_gssapi_bind(ads);
+#endif
 }
 
 #endif
index 021f2d93e4aad7039beb1d7524513e8645d19f47..b10b130a313bea604c90aca6cabea30d4b69f83f 100644 (file)
@@ -40,7 +40,7 @@ ADS_STATUS ads_change_trust_account_password(ADS_STRUCT *ads, char *host_princip
     asprintf(&service_principal, "HOST/%s", host_principal);
     
     ret = kerberos_set_password(ads->auth.kdc_server, host_principal, password, 
-                               service_principal, new_password, ads->auth.time_offset);
+                               service_principal, new_password);
 
     if (!secrets_store_machine_password(new_password)) {
            DEBUG(1,("Failed to save machine password\n"));
index b7cfca41fbf19facfeadde3688cf38a493d09e21..b4ad3ad0b8998467121a6bca669ae196acd8ade4 100644 (file)
@@ -174,16 +174,6 @@ BOOL asn1_write_BOOLEAN(ASN1_DATA *data, BOOL v)
        return !data->has_error;
 }
 
-/* write a BOOLEAN - hmm, I suspect this one is the correct one, and the 
-   above boolean is bogus. Need to check */
-BOOL asn1_write_BOOLEAN2(ASN1_DATA *data, BOOL v)
-{
-       asn1_push_tag(data, ASN1_BOOLEAN);
-       asn1_write_uint8(data, v);
-       asn1_pop_tag(data);
-       return !data->has_error;
-}
-
 /* check a BOOLEAN */
 BOOL asn1_check_BOOLEAN(ASN1_DATA *data, BOOL v)
 {
@@ -254,12 +244,15 @@ BOOL asn1_start_tag(ASN1_DATA *data, uint8 tag)
        asn1_read_uint8(data, &b);
        if (b & 0x80) {
                int n = b & 0x7f;
+               if (n > 2) {
+                       data->has_error = True;
+                       return False;
+               }
                asn1_read_uint8(data, &b);
                nesting->taglen = b;
-               while (n > 1) {
+               if (n == 2) {
                        asn1_read_uint8(data, &b);
                        nesting->taglen = (nesting->taglen << 8) | b;
-                       n--;
                }
        } else {
                nesting->taglen = b;
@@ -373,7 +366,6 @@ BOOL asn1_read_GeneralString(ASN1_DATA *data, char **s)
 BOOL asn1_read_OctetString(ASN1_DATA *data, DATA_BLOB *blob)
 {
        int len;
-       ZERO_STRUCTP(blob);
        if (!asn1_start_tag(data, ASN1_OCTET_STRING)) return False;
        len = asn1_tag_remaining(data);
        *blob = data_blob(NULL, len);
@@ -390,8 +382,7 @@ BOOL asn1_read_Integer(ASN1_DATA *data, int *i)
        
        if (!asn1_start_tag(data, ASN1_INTEGER)) return False;
        while (asn1_tag_remaining(data)>0) {
-               asn1_read_uint8(data, &b);
-               *i = (*i << 8) + b;
+               *i = (*i << 8) + asn1_read_uint8(data, &b);
        }
        return asn1_end_tag(data);      
        
diff --git a/source3/libsmb/cli_dfs.c b/source3/libsmb/cli_dfs.c
new file mode 100644 (file)
index 0000000..7fc27b9
--- /dev/null
@@ -0,0 +1,245 @@
+/* 
+   Unix SMB/CIFS implementation.
+   RPC pipe client
+   Copyright (C) Tim Potter                        2000-2001,
+   
+   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., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+
+/* Query DFS support */
+
+NTSTATUS cli_dfs_exist(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                       BOOL *dfs_exists)
+{
+       prs_struct qbuf, rbuf;
+       DFS_Q_DFS_EXIST q;
+       DFS_R_DFS_EXIST r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+        init_dfs_q_dfs_exist(&q);
+
+       if (!dfs_io_q_dfs_exist("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, DFS_EXIST, &qbuf, &rbuf)) {
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!dfs_io_r_dfs_exist("", &r, &rbuf, 0)) {
+               goto done;
+       }
+
+       /* Return result */
+
+       *dfs_exists = (r.status != 0);
+
+       result = NT_STATUS_OK;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+NTSTATUS cli_dfs_add(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                     char *entrypath, char *servername, char *sharename,
+                     char *comment, uint32 flags)
+{
+       prs_struct qbuf, rbuf;
+       DFS_Q_DFS_ADD q;
+       DFS_R_DFS_ADD r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+        init_dfs_q_dfs_add(&q, entrypath, servername, sharename, comment,
+                          flags);
+
+       if (!dfs_io_q_dfs_add("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, DFS_ADD, &qbuf, &rbuf)) {
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!dfs_io_r_dfs_add("", &r, &rbuf, 0)) {
+               goto done;
+       }
+
+       /* Return result */
+
+        result = werror_to_ntstatus(r.status);
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+NTSTATUS cli_dfs_remove(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                        char *entrypath, char *servername, char *sharename)
+{
+       prs_struct qbuf, rbuf;
+       DFS_Q_DFS_REMOVE q;
+       DFS_R_DFS_REMOVE r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+        init_dfs_q_dfs_remove(&q, entrypath, servername, sharename);
+
+       if (!dfs_io_q_dfs_remove("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, DFS_REMOVE, &qbuf, &rbuf)) {
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!dfs_io_r_dfs_remove("", &r, &rbuf, 0)) {
+               goto done;
+       }
+
+       /* Return result */
+
+       result = werror_to_ntstatus(r.status);
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+NTSTATUS cli_dfs_get_info(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                          char *entrypath, char *servername, char *sharename,
+                          uint32 info_level, DFS_INFO_CTR *ctr)
+
+{
+       prs_struct qbuf, rbuf;
+       DFS_Q_DFS_GET_INFO q;
+       DFS_R_DFS_GET_INFO r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+        init_dfs_q_dfs_get_info(&q, entrypath, servername, sharename,
+                               info_level);
+
+       if (!dfs_io_q_dfs_get_info("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, DFS_GET_INFO, &qbuf, &rbuf)) {
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!dfs_io_r_dfs_get_info("", &r, &rbuf, 0)) {
+               goto done;
+       }
+
+       /* Return result */
+
+       result = werror_to_ntstatus(r.status);
+       *ctr = r.ctr;
+       
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Enumerate dfs shares */
+
+NTSTATUS cli_dfs_enum(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                      uint32 info_level, DFS_INFO_CTR *ctr)
+{
+       prs_struct qbuf, rbuf;
+       DFS_Q_DFS_ENUM q;
+       DFS_R_DFS_ENUM r;
+        NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+        init_dfs_q_dfs_enum(&q, info_level, ctr);
+
+       if (!dfs_io_q_dfs_enum("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, DFS_ENUM, &qbuf, &rbuf)) {
+               goto done;
+       }
+
+       /* Unmarshall response */
+       
+       r.ctr = ctr;
+
+       if (!dfs_io_r_dfs_enum("", &r, &rbuf, 0)) {
+               goto done;
+       }
+
+       /* Return result */
+
+       result = werror_to_ntstatus(r.status);
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
diff --git a/source3/libsmb/cli_lsarpc.c b/source3/libsmb/cli_lsarpc.c
new file mode 100644 (file)
index 0000000..7dfee46
--- /dev/null
@@ -0,0 +1,1168 @@
+/* 
+   Unix SMB/CIFS implementation.
+   RPC pipe client
+   Copyright (C) Tim Potter                        2000-2001,
+   Copyright (C) Andrew Tridgell              1992-1997,2000,
+   Copyright (C) Luke Kenneth Casson Leighton 1996-1997,2000,
+   Copyright (C) Paul Ashton                       1997,2000,
+   Copyright (C) Elrond                                 2000,
+   Copyright (C) Rafal Szczesniak                       2002
+   
+   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., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+
+/** @defgroup lsa LSA - Local Security Architecture
+ *  @ingroup rpc_client
+ *
+ * @{
+ **/
+
+/**
+ * @file cli_lsarpc.c
+ *
+ * RPC client routines for the LSA RPC pipe.  LSA means "local
+ * security authority", which is half of a password database.
+ **/
+
+/** Open a LSA policy handle
+ *
+ * @param cli Handle on an initialised SMB connection */
+
+NTSTATUS cli_lsa_open_policy(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                             BOOL sec_qos, uint32 des_access, POLICY_HND *pol)
+{
+       prs_struct qbuf, rbuf;
+       LSA_Q_OPEN_POL q;
+       LSA_R_OPEN_POL r;
+       LSA_SEC_QOS qos;
+       NTSTATUS result;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+       if (sec_qos) {
+               init_lsa_sec_qos(&qos, 2, 1, 0);
+               init_q_open_pol(&q, '\\', 0, des_access, &qos);
+       } else {
+               init_q_open_pol(&q, '\\', 0, des_access, NULL);
+       }
+
+       /* Marshall data and send request */
+
+       if (!lsa_io_q_open_pol("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, LSA_OPENPOLICY, &qbuf, &rbuf)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!lsa_io_r_open_pol("", &r, &rbuf, 0)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Return output parameters */
+
+       if (NT_STATUS_IS_OK(result = r.status)) {
+               *pol = r.pol;
+#ifdef __INSURE__
+               pol->marker = malloc(1);
+#endif
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/** Open a LSA policy handle
+  *
+  * @param cli Handle on an initialised SMB connection 
+  */
+
+NTSTATUS cli_lsa_open_policy2(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                              BOOL sec_qos, uint32 des_access, POLICY_HND *pol)
+{
+       prs_struct qbuf, rbuf;
+       LSA_Q_OPEN_POL2 q;
+       LSA_R_OPEN_POL2 r;
+       LSA_SEC_QOS qos;
+       NTSTATUS result;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+       if (sec_qos) {
+               init_lsa_sec_qos(&qos, 2, 1, 0);
+               init_q_open_pol2(&q, cli->srv_name_slash, 0, des_access, 
+                                 &qos);
+       } else {
+               init_q_open_pol2(&q, cli->srv_name_slash, 0, des_access, 
+                                 NULL);
+       }
+
+       /* Marshall data and send request */
+
+       if (!lsa_io_q_open_pol2("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, LSA_OPENPOLICY2, &qbuf, &rbuf)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!lsa_io_r_open_pol2("", &r, &rbuf, 0)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Return output parameters */
+
+       if (NT_STATUS_IS_OK(result = r.status)) {
+               *pol = r.pol;
+#ifdef __INSURE__
+               pol->marker = (char *)malloc(1);
+#endif
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/** Close a LSA policy handle */
+
+NTSTATUS cli_lsa_close(struct cli_state *cli, TALLOC_CTX *mem_ctx, 
+                       POLICY_HND *pol)
+{
+       prs_struct qbuf, rbuf;
+       LSA_Q_CLOSE q;
+       LSA_R_CLOSE r;
+       NTSTATUS result;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_lsa_q_close(&q, pol);
+
+       if (!lsa_io_q_close("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, LSA_CLOSE, &qbuf, &rbuf)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!lsa_io_r_close("", &r, &rbuf, 0)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Return output parameters */
+
+       if (NT_STATUS_IS_OK(result = r.status)) {
+#ifdef __INSURE__
+               SAFE_FREE(pol->marker);
+#endif
+               *pol = r.pol;
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/** Lookup a list of sids */
+
+NTSTATUS cli_lsa_lookup_sids(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                             POLICY_HND *pol, int num_sids, DOM_SID *sids, 
+                             char ***domains, char ***names, uint32 **types)
+{
+       prs_struct qbuf, rbuf;
+       LSA_Q_LOOKUP_SIDS q;
+       LSA_R_LOOKUP_SIDS r;
+       DOM_R_REF ref;
+       LSA_TRANS_NAME_ENUM t_names;
+       NTSTATUS result;
+       int i;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_q_lookup_sids(mem_ctx, &q, pol, num_sids, sids, 1);
+
+       if (!lsa_io_q_lookup_sids("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, LSA_LOOKUPSIDS, &qbuf, &rbuf)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       ZERO_STRUCT(ref);
+       ZERO_STRUCT(t_names);
+
+       r.dom_ref = &ref;
+       r.names = &t_names;
+
+       if (!lsa_io_r_lookup_sids("", &r, &rbuf, 0)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       result = r.status;
+
+       if (!NT_STATUS_IS_OK(result) &&
+           NT_STATUS_V(result) != NT_STATUS_V(STATUS_SOME_UNMAPPED)) {
+         
+               /* An actual error occured */
+
+               goto done;
+       }
+
+       /* Return output parameters */
+
+       if (r.mapped_count == 0) {
+               result = NT_STATUS_NONE_MAPPED;
+               goto done;
+       }
+
+       if (!((*domains) = (char **)talloc(mem_ctx, sizeof(char *) *
+                                          num_sids))) {
+               DEBUG(0, ("cli_lsa_lookup_sids(): out of memory\n"));
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       if (!((*names) = (char **)talloc(mem_ctx, sizeof(char *) *
+                                        num_sids))) {
+               DEBUG(0, ("cli_lsa_lookup_sids(): out of memory\n"));
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       if (!((*types) = (uint32 *)talloc(mem_ctx, sizeof(uint32) *
+                                         num_sids))) {
+               DEBUG(0, ("cli_lsa_lookup_sids(): out of memory\n"));
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+               
+       for (i = 0; i < num_sids; i++) {
+               fstring name, dom_name;
+               uint32 dom_idx = t_names.name[i].domain_idx;
+
+               /* Translate optimised name through domain index array */
+
+               if (dom_idx != 0xffffffff) {
+
+                       rpcstr_pull_unistr2_fstring(
+                                dom_name, &ref.ref_dom[dom_idx].uni_dom_name);
+                       rpcstr_pull_unistr2_fstring(
+                                name, &t_names.uni_name[i]);
+
+                       (*names)[i] = talloc_strdup(mem_ctx, name);
+                       (*domains)[i] = talloc_strdup(mem_ctx, dom_name);
+                       (*types)[i] = t_names.name[i].sid_name_use;
+                       
+                       if (((*names)[i] == NULL) || ((*domains)[i] == NULL)) {
+                               DEBUG(0, ("cli_lsa_lookup_sids(): out of memory\n"));
+                               result = NT_STATUS_UNSUCCESSFUL;
+                               goto done;
+                       }
+
+               } else {
+                       (*names)[i] = NULL;
+                       (*types)[i] = SID_NAME_UNKNOWN;
+               }
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/** Lookup a list of names */
+
+NTSTATUS cli_lsa_lookup_names(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                              POLICY_HND *pol, int num_names, 
+                             const char **names, DOM_SID **sids, 
+                             uint32 **types)
+{
+       prs_struct qbuf, rbuf;
+       LSA_Q_LOOKUP_NAMES q;
+       LSA_R_LOOKUP_NAMES r;
+       DOM_R_REF ref;
+       NTSTATUS result;
+       int i;
+       
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_q_lookup_names(mem_ctx, &q, pol, num_names, names);
+
+       if (!lsa_io_q_lookup_names("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, LSA_LOOKUPNAMES, &qbuf, &rbuf)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+       
+       /* Unmarshall response */
+
+       ZERO_STRUCT(ref);
+       r.dom_ref = &ref;
+
+       if (!lsa_io_r_lookup_names("", &r, &rbuf, 0)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       result = r.status;
+
+       if (!NT_STATUS_IS_OK(result) && NT_STATUS_V(result) !=
+           NT_STATUS_V(STATUS_SOME_UNMAPPED)) {
+
+               /* An actual error occured */
+
+               goto done;
+       }
+
+       /* Return output parameters */
+
+       if (r.mapped_count == 0) {
+               result = NT_STATUS_NONE_MAPPED;
+               goto done;
+       }
+
+       if (!((*sids = (DOM_SID *)talloc(mem_ctx, sizeof(DOM_SID) *
+                                        num_names)))) {
+               DEBUG(0, ("cli_lsa_lookup_sids(): out of memory\n"));
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       if (!((*types = (uint32 *)talloc(mem_ctx, sizeof(uint32) *
+                                        num_names)))) {
+               DEBUG(0, ("cli_lsa_lookup_sids(): out of memory\n"));
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       for (i = 0; i < num_names; i++) {
+               DOM_RID2 *t_rids = r.dom_rid;
+               uint32 dom_idx = t_rids[i].rid_idx;
+               uint32 dom_rid = t_rids[i].rid;
+               DOM_SID *sid = &(*sids)[i];
+
+               /* Translate optimised sid through domain index array */
+
+               if (dom_idx != 0xffffffff) {
+
+                       sid_copy(sid, &ref.ref_dom[dom_idx].ref_dom.sid);
+
+                       if (dom_rid != 0xffffffff) {
+                               sid_append_rid(sid, dom_rid);
+                       }
+
+                       (*types)[i] = t_rids[i].type;
+               } else {
+                       ZERO_STRUCTP(sid);
+                       (*types)[i] = SID_NAME_UNKNOWN;
+               }
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/** Query info policy
+ *
+ *  @param domain_sid - returned remote server's domain sid */
+
+NTSTATUS cli_lsa_query_info_policy(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                   POLICY_HND *pol, uint16 info_class, 
+                                   fstring domain_name, DOM_SID *domain_sid)
+{
+       prs_struct qbuf, rbuf;
+       LSA_Q_QUERY_INFO q;
+       LSA_R_QUERY_INFO r;
+       NTSTATUS result;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_q_query(&q, pol, info_class);
+
+       if (!lsa_io_q_query("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, LSA_QUERYINFOPOLICY, &qbuf, &rbuf)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!lsa_io_r_query("", &r, &rbuf, 0)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       if (!NT_STATUS_IS_OK(result = r.status)) {
+               goto done;
+       }
+
+       /* Return output parameters */
+
+       ZERO_STRUCTP(domain_sid);
+       domain_name[0] = '\0';
+
+       switch (info_class) {
+
+       case 3:
+               if (r.dom.id3.buffer_dom_name != 0) {
+                       unistr2_to_ascii(domain_name,
+                                        &r.dom.id3.
+                                        uni_domain_name,
+                                        sizeof (fstring) - 1);
+               }
+
+               if (r.dom.id3.buffer_dom_sid != 0) {
+                       *domain_sid = r.dom.id3.dom_sid.sid;
+               }
+
+               break;
+
+       case 5:
+               
+               if (r.dom.id5.buffer_dom_name != 0) {
+                       unistr2_to_ascii(domain_name, &r.dom.id5.
+                                        uni_domain_name,
+                                        sizeof (fstring) - 1);
+               }
+                       
+               if (r.dom.id5.buffer_dom_sid != 0) {
+                       *domain_sid = r.dom.id5.dom_sid.sid;
+               }
+
+               break;
+               
+       default:
+               DEBUG(3, ("unknown info class %d\n", info_class));
+               break;                
+       }
+       
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/**
+ * Enumerate list of trusted domains
+ *
+ * @param cli client state (cli_state) structure of the connection
+ * @param mem_ctx memory context
+ * @param pol opened lsa policy handle
+ * @param enum_ctx enumeration context ie. index of first returned domain entry
+ * @param pref_num_domains preferred max number of entries returned in one response
+ * @param num_domains total number of trusted domains returned by response
+ * @param domain_names returned trusted domain names
+ * @param domain_sids returned trusted domain sids
+ *
+ * @return nt status code of response
+ **/
+
+NTSTATUS cli_lsa_enum_trust_dom(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                POLICY_HND *pol, uint32 *enum_ctx, 
+                                uint32 *pref_num_domains, uint32 *num_domains,
+                               char ***domain_names, DOM_SID **domain_sids)
+{
+       prs_struct qbuf, rbuf;
+       LSA_Q_ENUM_TRUST_DOM q;
+       LSA_R_ENUM_TRUST_DOM r;
+       NTSTATUS result;
+       int i;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+        init_q_enum_trust_dom(&q, pol, *enum_ctx, *pref_num_domains);
+
+       if (!lsa_io_q_enum_trust_dom("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, LSA_ENUMTRUSTDOM, &qbuf, &rbuf)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!lsa_io_r_enum_trust_dom("", &r, &rbuf, 0)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       result = r.status;
+
+       if (!NT_STATUS_IS_OK(result) &&
+           !NT_STATUS_EQUAL(result, NT_STATUS_NO_MORE_ENTRIES) &&
+           !NT_STATUS_EQUAL(result, STATUS_MORE_ENTRIES)) {
+
+               /* An actual error ocured */
+
+               goto done;
+       }
+
+       /* Return output parameters */
+
+       if (r.num_domains) {
+
+               /* Allocate memory for trusted domain names and sids */
+
+               *domain_names = (char **)talloc(mem_ctx, sizeof(char *) *
+                                               r.num_domains);
+
+               if (!*domain_names) {
+                       DEBUG(0, ("cli_lsa_enum_trust_dom(): out of memory\n"));
+                       result = NT_STATUS_UNSUCCESSFUL;
+                       goto done;
+               }
+
+               *domain_sids = (DOM_SID *)talloc(mem_ctx, sizeof(DOM_SID) *
+                                                r.num_domains);
+               if (!domain_sids) {
+                       DEBUG(0, ("cli_lsa_enum_trust_dom(): out of memory\n"));
+                       result = NT_STATUS_UNSUCCESSFUL;
+                       goto done;
+               }
+
+               /* Copy across names and sids */
+
+               for (i = 0; i < r.num_domains; i++) {
+                       fstring tmp;
+
+                       unistr2_to_ascii(tmp, &r.uni_domain_name[i], 
+                                        sizeof(tmp) - 1);
+                       (*domain_names)[i] = talloc_strdup(mem_ctx, tmp);
+                       sid_copy(&(*domain_sids)[i], &r.domain_sid[i].sid);
+               }
+       }
+
+       *num_domains = r.num_domains;
+       *enum_ctx = r.enum_context;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/** Enumerate privileges*/
+
+NTSTATUS cli_lsa_enum_privilege(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                POLICY_HND *pol, uint32 *enum_context, uint32 pref_max_length,
+                               uint32 *count, char ***privs_name, uint32 **privs_high, uint32 **privs_low)
+{
+       prs_struct qbuf, rbuf;
+       LSA_Q_ENUM_PRIVS q;
+       LSA_R_ENUM_PRIVS r;
+       NTSTATUS result;
+       int i;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_q_enum_privs(&q, pol, *enum_context, pref_max_length);
+
+       if (!lsa_io_q_enum_privs("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, LSA_ENUM_PRIVS, &qbuf, &rbuf)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!lsa_io_r_enum_privs("", &r, &rbuf, 0)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       if (!NT_STATUS_IS_OK(result = r.status)) {
+               goto done;
+       }
+
+       /* Return output parameters */
+
+       *enum_context = r.enum_context;
+       *count = r.count;
+
+       if (!((*privs_name = (char **)talloc(mem_ctx, sizeof(char *) * r.count)))) {
+               DEBUG(0, ("(cli_lsa_enum_privilege): out of memory\n"));
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       if (!((*privs_high = (uint32 *)talloc(mem_ctx, sizeof(uint32) * r.count)))) {
+               DEBUG(0, ("(cli_lsa_enum_privilege): out of memory\n"));
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       if (!((*privs_low = (uint32 *)talloc(mem_ctx, sizeof(uint32) * r.count)))) {
+               DEBUG(0, ("(cli_lsa_enum_privilege): out of memory\n"));
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       for (i = 0; i < r.count; i++) {
+               fstring name;
+
+               rpcstr_pull_unistr2_fstring( name, &r.privs[i].name);
+
+               (*privs_name)[i] = talloc_strdup(mem_ctx, name);
+
+               (*privs_high)[i] = r.privs[i].luid_high;
+               (*privs_low)[i] = r.privs[i].luid_low;
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/** Get privilege name */
+
+NTSTATUS cli_lsa_get_dispname(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                             POLICY_HND *pol, char *name, uint16 lang_id, uint16 lang_id_sys,
+                             fstring description, uint16 *lang_id_desc)
+{
+       prs_struct qbuf, rbuf;
+       LSA_Q_PRIV_GET_DISPNAME q;
+       LSA_R_PRIV_GET_DISPNAME r;
+       NTSTATUS result;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_lsa_priv_get_dispname(&q, pol, name, lang_id, lang_id_sys);
+
+       if (!lsa_io_q_priv_get_dispname("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, LSA_PRIV_GET_DISPNAME, &qbuf, &rbuf)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!lsa_io_r_priv_get_dispname("", &r, &rbuf, 0)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       if (!NT_STATUS_IS_OK(result = r.status)) {
+               goto done;
+       }
+
+       /* Return output parameters */
+       
+       rpcstr_pull_unistr2_fstring(description , &r.desc);
+       *lang_id_desc = r.lang_id;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/** Enumerate list of SIDs  */
+
+NTSTATUS cli_lsa_enum_sids(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                POLICY_HND *pol, uint32 *enum_ctx, uint32 pref_max_length, 
+                                uint32 *num_sids, DOM_SID **sids)
+{
+       prs_struct qbuf, rbuf;
+       LSA_Q_ENUM_ACCOUNTS q;
+       LSA_R_ENUM_ACCOUNTS r;
+       NTSTATUS result;
+       int i;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+        init_lsa_q_enum_accounts(&q, pol, *enum_ctx, pref_max_length);
+
+       if (!lsa_io_q_enum_accounts("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, LSA_ENUM_ACCOUNTS, &qbuf, &rbuf)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!lsa_io_r_enum_accounts("", &r, &rbuf, 0)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       result = r.status;
+
+       if (!NT_STATUS_IS_OK(result = r.status)) {
+               goto done;
+       }
+
+       if (r.sids.num_entries==0)
+               goto done;
+
+       /* Return output parameters */
+
+       *sids = (DOM_SID *)talloc(mem_ctx, sizeof(DOM_SID) * r.sids.num_entries);
+       if (!*sids) {
+               DEBUG(0, ("(cli_lsa_enum_sids): out of memory\n"));
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Copy across names and sids */
+
+       for (i = 0; i < r.sids.num_entries; i++) {
+               sid_copy(&(*sids)[i], &r.sids.sid[i].sid);
+       }
+
+       *num_sids= r.sids.num_entries;
+       *enum_ctx = r.enum_context;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/** Open a LSA user handle
+ *
+ * @param cli Handle on an initialised SMB connection */
+
+NTSTATUS cli_lsa_open_account(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                             POLICY_HND *dom_pol, DOM_SID *sid, uint32 des_access, 
+                            POLICY_HND *user_pol)
+{
+       prs_struct qbuf, rbuf;
+       LSA_Q_OPENACCOUNT q;
+       LSA_R_OPENACCOUNT r;
+       NTSTATUS result;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+       init_lsa_q_open_account(&q, dom_pol, sid, des_access);
+
+       /* Marshall data and send request */
+
+       if (!lsa_io_q_open_account("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, LSA_OPENACCOUNT, &qbuf, &rbuf)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!lsa_io_r_open_account("", &r, &rbuf, 0)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Return output parameters */
+
+       if (NT_STATUS_IS_OK(result = r.status)) {
+               *user_pol = r.pol;
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/** Enumerate user privileges
+ *
+ * @param cli Handle on an initialised SMB connection */
+
+NTSTATUS cli_lsa_enum_privsaccount(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                             POLICY_HND *pol, uint32 *count, LUID_ATTR **set)
+{
+       prs_struct qbuf, rbuf;
+       LSA_Q_ENUMPRIVSACCOUNT q;
+       LSA_R_ENUMPRIVSACCOUNT r;
+       NTSTATUS result;
+       int i;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+       init_lsa_q_enum_privsaccount(&q, pol);
+
+       /* Marshall data and send request */
+
+       if (!lsa_io_q_enum_privsaccount("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, LSA_ENUMPRIVSACCOUNT, &qbuf, &rbuf)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!lsa_io_r_enum_privsaccount("", &r, &rbuf, 0)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Return output parameters */
+
+       if (!NT_STATUS_IS_OK(result = r.status)) {
+               goto done;
+       }
+
+       if (r.count == 0)
+               goto done;
+
+       if (!((*set = (LUID_ATTR *)talloc(mem_ctx, sizeof(LUID_ATTR) * r.count)))) {
+               DEBUG(0, ("(cli_lsa_enum_privsaccount): out of memory\n"));
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       for (i=0; i<r.count; i++) {
+               (*set)[i].luid.low = r.set.set[i].luid.low;
+               (*set)[i].luid.high = r.set.set[i].luid.high;
+               (*set)[i].attr = r.set.set[i].attr;
+       }
+
+       *count=r.count;
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/** Get a privilege value given its name */
+
+NTSTATUS cli_lsa_lookupprivvalue(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                             POLICY_HND *pol, char *name, LUID *luid)
+{
+       prs_struct qbuf, rbuf;
+       LSA_Q_LOOKUPPRIVVALUE q;
+       LSA_R_LOOKUPPRIVVALUE r;
+       NTSTATUS result;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_lsa_q_lookupprivvalue(&q, pol, name);
+
+       if (!lsa_io_q_lookupprivvalue("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, LSA_LOOKUPPRIVVALUE, &qbuf, &rbuf)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!lsa_io_r_lookupprivvalue("", &r, &rbuf, 0)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       if (!NT_STATUS_IS_OK(result = r.status)) {
+               goto done;
+       }
+
+       /* Return output parameters */
+
+       (*luid).low=r.luid.low;
+       (*luid).high=r.luid.high;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/** Query LSA security object */
+
+NTSTATUS cli_lsa_query_secobj(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                             POLICY_HND *pol, uint32 sec_info, 
+                             SEC_DESC_BUF **psdb)
+{
+       prs_struct qbuf, rbuf;
+       LSA_Q_QUERY_SEC_OBJ q;
+       LSA_R_QUERY_SEC_OBJ r;
+       NTSTATUS result;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_q_query_sec_obj(&q, pol, sec_info);
+
+       if (!lsa_io_q_query_sec_obj("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, LSA_QUERYSECOBJ, &qbuf, &rbuf)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!lsa_io_r_query_sec_obj("", &r, &rbuf, 0)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       if (!NT_STATUS_IS_OK(result = r.status)) {
+               goto done;
+       }
+
+       /* Return output parameters */
+
+       if (psdb)
+               *psdb = r.buf;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+#if 0
+
+/** An example of how to use the routines in this file.  Fetch a DOMAIN
+    sid. Does complete cli setup / teardown anonymously. */
+
+BOOL fetch_domain_sid( char *domain, char *remote_machine, DOM_SID *psid)
+{
+       extern pstring global_myname;
+       struct cli_state cli;
+       NTSTATUS result;
+       POLICY_HND lsa_pol;
+       BOOL ret = False;
+       ZERO_STRUCT(cli);
+       if(cli_initialise(&cli) == False) {
+               DEBUG(0,("fetch_domain_sid: unable to initialize client connection.\n"));
+               return False;
+       }
+       if(!resolve_name( remote_machine, &cli.dest_ip, 0x20)) {
+               DEBUG(0,("fetch_domain_sid: Can't resolve address for %s\n", remote_machine));
+               goto done;
+       }
+       if (!cli_connect(&cli, remote_machine, &cli.dest_ip)) {
+               DEBUG(0,("fetch_domain_sid: unable to connect to SMB server on \
+machine %s. Error was : %s.\n", remote_machine, cli_errstr(&cli) ));
+               goto done;
+       }
+
+       if (!attempt_netbios_session_request(&cli, global_myname, remote_machine, &cli.dest_ip)) {
+               DEBUG(0,("fetch_domain_sid: machine %s rejected the NetBIOS session request.\n", 
+                       remote_machine));
+               goto done;
+       }
+       cli.protocol = PROTOCOL_NT1;
+       if (!cli_negprot(&cli)) {
+               DEBUG(0,("fetch_domain_sid: machine %s rejected the negotiate protocol. \
+Error was : %s.\n", remote_machine, cli_errstr(&cli) ));
+               goto done;
+       }
+       if (cli.protocol != PROTOCOL_NT1) {
+               DEBUG(0,("fetch_domain_sid: machine %s didn't negotiate NT protocol.\n",
+                       remote_machine));
+               goto done;
+       }
+       /*
+        * Do an anonymous session setup.
+        */
+       if (!cli_session_setup(&cli, "", "", 0, "", 0, "")) {
+               DEBUG(0,("fetch_domain_sid: machine %s rejected the session setup. \
+Error was : %s.\n", remote_machine, cli_errstr(&cli) ));
+               goto done;
+       }
+       if (!(cli.sec_mode & NEGOTIATE_SECURITY_USER_LEVEL)) {
+               DEBUG(0,("fetch_domain_sid: machine %s isn't in user level security mode\n",
+                       remote_machine));
+               goto done;
+       }
+
+       if (!cli_send_tconX(&cli, "IPC$", "IPC", "", 1)) {
+               DEBUG(0,("fetch_domain_sid: machine %s rejected the tconX on the IPC$ share. \
+Error was : %s.\n", remote_machine, cli_errstr(&cli) ));
+               goto done;
+       }
+
+       /* Fetch domain sid */
+       if (!cli_nt_session_open(&cli, PIPE_LSARPC)) {
+               DEBUG(0, ("fetch_domain_sid: Error connecting to SAM pipe\n"));
+               goto done;
+       }
+       result = cli_lsa_open_policy(&cli, cli.mem_ctx, True, SEC_RIGHTS_QUERY_VALUE, &lsa_pol);
+       if (!NT_STATUS_IS_OK(result)) {
+               DEBUG(0, ("fetch_domain_sid: Error opening lsa policy handle. %s\n",
+                       nt_errstr(result) ));
+               goto done;
+       }
+       result = cli_lsa_query_info_policy(&cli, cli.mem_ctx, &lsa_pol, 5, domain, psid);
+       if (!NT_STATUS_IS_OK(result)) {
+               DEBUG(0, ("fetch_domain_sid: Error querying lsa policy handle. %s\n",
+                       nt_errstr(result) ));
+               goto done;
+       }
+       ret = True;
+
+  done:
+
+       cli_shutdown(&cli);
+       return ret;
+}
+
+#endif
+
+/** @} **/
diff --git a/source3/libsmb/cli_netlogon.c b/source3/libsmb/cli_netlogon.c
new file mode 100644 (file)
index 0000000..d32e0e7
--- /dev/null
@@ -0,0 +1,664 @@
+/* 
+   Unix SMB/CIFS implementation.
+   NT Domain Authentication SMB / MSRPC client
+   Copyright (C) Andrew Tridgell 1992-2000
+   Copyright (C) Luke Kenneth Casson Leighton 1996-2000
+   Copyright (C) Tim Potter 2001
+   Copyright (C) Paul Ashton                       1997.
+   Copyright (C) Jeremy Allison                    1998.
+   Copyright (C) Andrew Bartlett                   2001.
+   
+   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., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+
+/* LSA Request Challenge. Sends our challenge to server, then gets
+   server response. These are used to generate the credentials. */
+
+NTSTATUS new_cli_net_req_chal(struct cli_state *cli, DOM_CHAL *clnt_chal, 
+                              DOM_CHAL *srv_chal)
+{
+        prs_struct qbuf, rbuf;
+        NET_Q_REQ_CHAL q;
+        NET_R_REQ_CHAL r;
+        NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+        extern pstring global_myname;
+
+        prs_init(&qbuf, MAX_PDU_FRAG_LEN, cli->mem_ctx, MARSHALL);
+        prs_init(&rbuf, 0, cli->mem_ctx, UNMARSHALL);
+        
+        /* create and send a MSRPC command with api NET_REQCHAL */
+
+        DEBUG(4,("new_cli_net_req_chal: LSA Request Challenge from %s to %s: %s\n",
+                 global_myname, cli->desthost, credstr(clnt_chal->data)));
+        
+        /* store the parameters */
+        init_q_req_chal(&q, cli->srv_name_slash, global_myname, clnt_chal);
+        
+        /* Marshall data and send request */
+
+        if (!net_io_q_req_chal("", &q,  &qbuf, 0) ||
+            !rpc_api_pipe_req(cli, NET_REQCHAL, &qbuf, &rbuf)) {
+                goto done;
+        }
+
+        /* Unmarhall response */
+
+        if (!net_io_r_req_chal("", &r, &rbuf, 0)) {
+                goto done;
+        }
+
+        result = r.status;
+
+        /* Return result */
+
+        if (NT_STATUS_IS_OK(result)) {
+                memcpy(srv_chal, r.srv_chal.data, sizeof(srv_chal->data));
+        }
+        
+ done:
+        prs_mem_free(&qbuf);
+        prs_mem_free(&rbuf);
+        
+        return result;
+}
+
+/****************************************************************************
+LSA Authenticate 2
+
+Send the client credential, receive back a server credential.
+Ensure that the server credential returned matches the session key 
+encrypt of the server challenge originally received. JRA.
+****************************************************************************/
+
+NTSTATUS new_cli_net_auth2(struct cli_state *cli, 
+                          uint16 sec_chan, 
+                           uint32 neg_flags, DOM_CHAL *srv_chal)
+{
+        prs_struct qbuf, rbuf;
+        NET_Q_AUTH_2 q;
+        NET_R_AUTH_2 r;
+        NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+       extern pstring global_myname;
+
+        prs_init(&qbuf, MAX_PDU_FRAG_LEN, cli->mem_ctx, MARSHALL);
+        prs_init(&rbuf, 0, cli->mem_ctx, UNMARSHALL);
+
+        /* create and send a MSRPC command with api NET_AUTH2 */
+
+        DEBUG(4,("new_cli_net_auth2: srv:%s acct:%s sc:%x mc: %s chal %s neg: %x\n",
+                 cli->srv_name_slash, cli->mach_acct, sec_chan, global_myname,
+                 credstr(cli->clnt_cred.challenge.data), neg_flags));
+
+        /* store the parameters */
+        init_q_auth_2(&q, cli->srv_name_slash, cli->mach_acct, 
+                      sec_chan, global_myname, &cli->clnt_cred.challenge, 
+                      neg_flags);
+
+        /* turn parameters into data stream */
+
+        if (!net_io_q_auth_2("", &q,  &qbuf, 0) ||
+            !rpc_api_pipe_req(cli, NET_AUTH2, &qbuf, &rbuf)) {
+                goto done;
+        }
+        
+        /* Unmarshall response */
+        
+        if (!net_io_r_auth_2("", &r, &rbuf, 0)) {
+                goto done;
+        }
+
+        result = r.status;
+
+        if (NT_STATUS_IS_OK(result)) {
+                UTIME zerotime;
+                
+                /*
+                 * Check the returned value using the initial
+                 * server received challenge.
+                 */
+
+                zerotime.time = 0;
+                if (cred_assert( &r.srv_chal, cli->sess_key, srv_chal, 
+                                 zerotime) == 0) {
+
+                        /*
+                         * Server replied with bad credential. Fail.
+                         */
+                        DEBUG(0,("new_cli_net_auth2: server %s replied with bad credential (bad machine \
+password ?).\n", cli->desthost ));
+                        result = NT_STATUS_ACCESS_DENIED;
+                        goto done;
+                }
+        }
+
+ done:
+        prs_mem_free(&qbuf);
+        prs_mem_free(&rbuf);
+        
+        return result;
+}
+
+/* Initialize domain session credentials */
+
+NTSTATUS new_cli_nt_setup_creds(struct cli_state *cli, 
+                               uint16 sec_chan,
+                                const unsigned char mach_pwd[16])
+{
+        DOM_CHAL clnt_chal;
+        DOM_CHAL srv_chal;
+        UTIME zerotime;
+        NTSTATUS result;
+
+        /******************* Request Challenge ********************/
+
+        generate_random_buffer(clnt_chal.data, 8, False);
+       
+        /* send a client challenge; receive a server challenge */
+        result = new_cli_net_req_chal(cli, &clnt_chal, &srv_chal);
+
+        if (!NT_STATUS_IS_OK(result)) {
+                DEBUG(0,("new_cli_nt_setup_creds: request challenge failed\n"));
+                return result;
+        }
+        
+        /**************** Long-term Session key **************/
+
+        /* calculate the session key */
+        cred_session_key(&clnt_chal, &srv_chal, mach_pwd, 
+                         cli->sess_key);
+        memset((char *)cli->sess_key+8, '\0', 8);
+
+        /******************* Authenticate 2 ********************/
+
+        /* calculate auth-2 credentials */
+        zerotime.time = 0;
+        cred_create(cli->sess_key, &clnt_chal, zerotime, 
+                    &cli->clnt_cred.challenge);
+
+        /*  
+         * Send client auth-2 challenge.
+         * Receive an auth-2 challenge response and check it.
+         */
+        
+       result = new_cli_net_auth2(cli, sec_chan, 0x000001ff, 
+                                  &srv_chal);
+       if (!NT_STATUS_IS_OK(result)) {
+                DEBUG(1,("cli_nt_setup_creds: auth2 challenge failed %s\n",
+                        nt_errstr(result)));
+        }
+
+        return result;
+}
+
+/* Logon Control 2 */
+
+NTSTATUS cli_netlogon_logon_ctrl2(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                  uint32 query_level)
+{
+       prs_struct qbuf, rbuf;
+       NET_Q_LOGON_CTRL2 q;
+       NET_R_LOGON_CTRL2 r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+       init_net_q_logon_ctrl2(&q, cli->srv_name_slash, query_level);
+
+       /* Marshall data and send request */
+
+       if (!net_io_q_logon_ctrl2("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, NET_LOGON_CTRL2, &qbuf, &rbuf)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!net_io_r_logon_ctrl2("", &r, &rbuf, 0)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       result = r.status;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/****************************************************************************
+Generate the next creds to use.  Yuck - this is a cut&paste from another
+file.  They should be combined at some stage.  )-:
+****************************************************************************/
+
+static void gen_next_creds( struct cli_state *cli, DOM_CRED *new_clnt_cred)
+{
+  /*
+   * Create the new client credentials.
+   */
+
+  cli->clnt_cred.timestamp.time = time(NULL);
+
+  memcpy(new_clnt_cred, &cli->clnt_cred, sizeof(*new_clnt_cred));
+
+  /* Calculate the new credentials. */
+  cred_create(cli->sess_key, &(cli->clnt_cred.challenge),
+              new_clnt_cred->timestamp, &(new_clnt_cred->challenge));
+
+}
+
+/* Sam synchronisation */
+
+NTSTATUS cli_netlogon_sam_sync(struct cli_state *cli, TALLOC_CTX *mem_ctx, DOM_CRED *ret_creds,
+                               uint32 database_id, uint32 *num_deltas,
+                               SAM_DELTA_HDR **hdr_deltas, 
+                               SAM_DELTA_CTR **deltas)
+{
+       prs_struct qbuf, rbuf;
+       NET_Q_SAM_SYNC q;
+       NET_R_SAM_SYNC r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+        DOM_CRED clnt_creds;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+        gen_next_creds(cli, &clnt_creds);
+
+       init_net_q_sam_sync(&q, cli->srv_name_slash, cli->clnt_name_slash + 2,
+                            &clnt_creds, ret_creds, database_id);
+
+       /* Marshall data and send request */
+
+       if (!net_io_q_sam_sync("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, NET_SAM_SYNC, &qbuf, &rbuf)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!net_io_r_sam_sync("", cli->sess_key, &r, &rbuf, 0)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+        /* Return results */
+
+       result = r.status;
+        *num_deltas = r.num_deltas2;
+        *hdr_deltas = r.hdr_deltas;
+        *deltas = r.deltas;
+
+       memcpy(ret_creds, &r.srv_creds, sizeof(*ret_creds));
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Sam synchronisation */
+
+NTSTATUS cli_netlogon_sam_deltas(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                 uint32 database_id, UINT64_S seqnum,
+                                 uint32 *num_deltas, 
+                                 SAM_DELTA_HDR **hdr_deltas, 
+                                 SAM_DELTA_CTR **deltas)
+{
+       prs_struct qbuf, rbuf;
+       NET_Q_SAM_DELTAS q;
+       NET_R_SAM_DELTAS r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+        DOM_CRED clnt_creds;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+        gen_next_creds(cli, &clnt_creds);
+
+       init_net_q_sam_deltas(&q, cli->srv_name_slash, 
+                              cli->clnt_name_slash + 2, &clnt_creds, 
+                              database_id, seqnum);
+
+       /* Marshall data and send request */
+
+       if (!net_io_q_sam_deltas("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, NET_SAM_DELTAS, &qbuf, &rbuf)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!net_io_r_sam_deltas("", cli->sess_key, &r, &rbuf, 0)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+        /* Return results */
+
+       result = r.status;
+        *num_deltas = r.num_deltas2;
+        *hdr_deltas = r.hdr_deltas;
+        *deltas = r.deltas;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Logon domain user */
+
+NTSTATUS cli_netlogon_sam_logon(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                char *username, char *password,
+                                int logon_type)
+{
+       prs_struct qbuf, rbuf;
+       NET_Q_SAM_LOGON q;
+       NET_R_SAM_LOGON r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+        DOM_CRED clnt_creds, dummy_rtn_creds;
+        extern pstring global_myname;
+        NET_ID_INFO_CTR ctr;
+        NET_USER_INFO_3 user;
+        int validation_level = 3;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+        /* Initialise input parameters */
+
+        gen_next_creds(cli, &clnt_creds);
+
+        q.validation_level = validation_level;
+
+       memset(&dummy_rtn_creds, '\0', sizeof(dummy_rtn_creds));
+       dummy_rtn_creds.timestamp.time = time(NULL);
+
+        ctr.switch_value = logon_type;
+
+        switch (logon_type) {
+        case INTERACTIVE_LOGON_TYPE: {
+                unsigned char lm_owf_user_pwd[16], nt_owf_user_pwd[16];
+
+                nt_lm_owf_gen(password, nt_owf_user_pwd, lm_owf_user_pwd);
+
+                init_id_info1(&ctr.auth.id1, lp_workgroup(), 
+                              0, /* param_ctrl */
+                              0xdead, 0xbeef, /* LUID? */
+                              username, cli->clnt_name_slash,
+                              cli->sess_key, lm_owf_user_pwd,
+                              nt_owf_user_pwd);
+
+                break;
+        }
+        case NET_LOGON_TYPE: {
+                uint8 chal[8];
+                unsigned char local_lm_response[24];
+                unsigned char local_nt_response[24];
+
+                generate_random_buffer(chal, 8, False);
+
+                SMBencrypt(password, chal, local_lm_response);
+                SMBNTencrypt(password, chal, local_nt_response);
+
+                init_id_info2(&ctr.auth.id2, lp_workgroup(), 
+                              0, /* param_ctrl */
+                              0xdead, 0xbeef, /* LUID? */
+                              username, cli->clnt_name_slash, chal,
+                              local_lm_response, 24, local_nt_response, 24);
+                break;
+        }
+        default:
+                DEBUG(0, ("switch value %d not supported\n", 
+                          ctr.switch_value));
+                goto done;
+        }
+
+        init_sam_info(&q.sam_id, cli->srv_name_slash, global_myname,
+                      &clnt_creds, &dummy_rtn_creds, logon_type,
+                      &ctr);
+
+        /* Marshall data and send request */
+
+       if (!net_io_q_sam_logon("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, NET_SAMLOGON, &qbuf, &rbuf)) {
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+        r.user = &user;
+
+       if (!net_io_r_sam_logon("", &r, &rbuf, 0)) {
+               goto done;
+       }
+
+        /* Return results */
+
+       result = r.status;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+        return result;
+}
+
+
+/** 
+ * Logon domain user with an 'network' SAM logon 
+ *
+ * @param info3 Pointer to a NET_USER_INFO_3 already allocated by the caller.
+ **/
+
+NTSTATUS cli_netlogon_sam_network_logon(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                       const char *username, const char *domain, const char *workstation, 
+                                       const uint8 chal[8],
+                                       DATA_BLOB lm_response, DATA_BLOB nt_response,
+                                       NET_USER_INFO_3 *info3)
+
+{
+       prs_struct qbuf, rbuf;
+       NET_Q_SAM_LOGON q;
+       NET_R_SAM_LOGON r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+        DOM_CRED clnt_creds, dummy_rtn_creds;
+       NET_ID_INFO_CTR ctr;
+       extern pstring global_myname;
+       int validation_level = 3;
+       char *workstation_name_slash;
+       
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       workstation_name_slash = talloc_asprintf(mem_ctx, "\\\\%s", workstation);
+       
+       if (!workstation_name_slash) {
+               DEBUG(0, ("talloc_asprintf failed!\n"));
+               return NT_STATUS_NO_MEMORY;
+       }
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+       gen_next_creds(cli, &clnt_creds);
+
+       q.validation_level = validation_level;
+
+       memset(&dummy_rtn_creds, '\0', sizeof(dummy_rtn_creds));
+       dummy_rtn_creds.timestamp.time = time(NULL);
+
+        ctr.switch_value = NET_LOGON_TYPE;
+
+       init_id_info2(&ctr.auth.id2, domain,
+                     0, /* param_ctrl */
+                     0xdead, 0xbeef, /* LUID? */
+                     username, workstation_name_slash, (const uchar*)chal,
+                     lm_response.data, lm_response.length, nt_response.data, nt_response.length);
+        init_sam_info(&q.sam_id, cli->srv_name_slash, global_myname,
+                      &clnt_creds, &dummy_rtn_creds, NET_LOGON_TYPE,
+                      &ctr);
+
+        /* Marshall data and send request */
+
+       if (!net_io_q_sam_logon("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, NET_SAMLOGON, &qbuf, &rbuf)) {
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+        r.user = info3;
+
+       if (!net_io_r_sam_logon("", &r, &rbuf, 0)) {
+               goto done;
+       }
+
+        /* Return results */
+
+       result = r.status;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+        return result;
+}
+
+/***************************************************************************
+LSA Server Password Set.
+****************************************************************************/
+
+NTSTATUS cli_net_srv_pwset(struct cli_state *cli, TALLOC_CTX *mem_ctx, 
+                          char* machine_name, uint8 hashed_mach_pwd[16])
+{
+       prs_struct rbuf;
+       prs_struct qbuf; 
+       DOM_CRED new_clnt_cred;
+       NET_Q_SRV_PWSET q_s;
+       uint16 sec_chan_type = 2;
+       NTSTATUS nt_status;
+       char *mach_acct;
+
+       gen_next_creds( cli, &new_clnt_cred);
+       
+       prs_init(&qbuf , 1024, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0,    mem_ctx, UNMARSHALL);
+       
+       /* create and send a MSRPC command with api NET_SRV_PWSET */
+       
+       mach_acct = talloc_asprintf(mem_ctx, "%s$", machine_name);
+       
+       if (!mach_acct) {
+               DEBUG(0,("talloc_asprintf failed!\n"));
+               nt_status = NT_STATUS_NO_MEMORY;
+               goto done;
+       }
+
+       DEBUG(4,("cli_net_srv_pwset: srv:%s acct:%s sc: %d mc: %s clnt %s %x\n",
+                cli->srv_name_slash, mach_acct, sec_chan_type, machine_name,
+                credstr(new_clnt_cred.challenge.data), new_clnt_cred.timestamp.time));
+       
+        /* store the parameters */
+       init_q_srv_pwset(&q_s, cli->srv_name_slash, cli->sess_key,
+                        mach_acct, sec_chan_type, machine_name, 
+                        &new_clnt_cred, (char *)hashed_mach_pwd);
+       
+       /* turn parameters into data stream */
+       if(!net_io_q_srv_pwset("", &q_s,  &qbuf, 0)) {
+               DEBUG(0,("cli_net_srv_pwset: Error : failed to marshall NET_Q_SRV_PWSET struct.\n"));
+               nt_status = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+       
+       /* send the data on \PIPE\ */
+       if (rpc_api_pipe_req(cli, NET_SRVPWSET, &qbuf, &rbuf))
+       {
+               NET_R_SRV_PWSET r_s;
+               
+               if (!net_io_r_srv_pwset("", &r_s, &rbuf, 0)) {
+                       nt_status =  NT_STATUS_UNSUCCESSFUL;
+                       goto done;
+               }
+               
+               nt_status = r_s.status;
+
+               if (!NT_STATUS_IS_OK(r_s.status))
+               {
+                       /* report error code */
+                       DEBUG(0,("cli_net_srv_pwset: %s\n", nt_errstr(nt_status)));
+                       goto done;
+               }
+
+               /* Update the credentials. */
+               if (!clnt_deal_with_creds(cli->sess_key, &(cli->clnt_cred), &(r_s.srv_cred)))
+               {
+                       /*
+                        * Server replied with bad credential. Fail.
+                        */
+                       DEBUG(0,("cli_net_srv_pwset: server %s replied with bad credential (bad machine \
+password ?).\n", cli->desthost ));
+                       nt_status = NT_STATUS_UNSUCCESSFUL;
+               }
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+       
+       return nt_status;
+}
+
diff --git a/source3/libsmb/cli_pipe_util.c b/source3/libsmb/cli_pipe_util.c
new file mode 100644 (file)
index 0000000..de1c832
--- /dev/null
@@ -0,0 +1,82 @@
+/* 
+   Unix SMB/CIFS implementation.
+   RPC pipe client utility functions
+   Copyright (C) Tim Potter                        2001,
+   
+   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., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+
+/** \defgroup rpc_client RPC Client routines
+ */
+
+/* Opens a SMB connection to a named pipe */
+
+struct cli_state *cli_pipe_initialise(struct cli_state *cli, char *system_name,
+                                     char *pipe_name, 
+                                      struct ntuser_creds *creds)
+{
+       struct in_addr dest_ip;
+       struct nmb_name calling, called;
+       fstring dest_host;
+       extern pstring global_myname;
+       struct ntuser_creds anon;
+
+       /* Initialise cli_state information */
+
+       if (!cli_initialise(cli)) {
+               return NULL;
+       }
+
+       if (!creds) {
+               ZERO_STRUCT(anon);
+               anon.pwd.null_pwd = 1;
+               creds = &anon;
+       }
+
+       cli_init_creds(cli, creds);
+
+       /* Establish a SMB connection */
+
+       if (!resolve_srv_name(system_name, dest_host, &dest_ip)) {
+               return NULL;
+       }
+
+       make_nmb_name(&called, dns_to_netbios_name(dest_host), 0x20);
+       make_nmb_name(&calling, dns_to_netbios_name(global_myname), 0);
+
+       if (!cli_establish_connection(cli, dest_host, &dest_ip, &calling, 
+                                     &called, "IPC$", "IPC", False, True)) {
+               return NULL;
+       }
+
+       /* Open a NT session thingy */
+
+       if (!cli_nt_session_open(cli, pipe_name)) {
+               cli_shutdown(cli);
+               return NULL;
+       }
+
+       return cli;
+}
+
+/* Shut down a SMB connection to the SAMR pipe */
+
+void cli_pipe_shutdown(struct cli_state *cli)
+{
+       if (cli->fd != -1) cli_ulogoff(cli);
+       cli_shutdown(cli);
+}
diff --git a/source3/libsmb/cli_reg.c b/source3/libsmb/cli_reg.c
new file mode 100644 (file)
index 0000000..aaf1888
--- /dev/null
@@ -0,0 +1,102 @@
+/* 
+   Unix SMB/CIFS implementation.
+   RPC Pipe client
+   Copyright (C) Andrew Tridgell              1992-1998,
+   Copyright (C) Luke Kenneth Casson Leighton 1996-1998,
+   Copyright (C) Paul Ashton                  1997-1998.
+   Copyright (C) Jeremy Allison                    1999.
+   Copyright (C) Simo Sorce                        2001
+   
+   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., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+
+/* Shutdown a server */
+
+NTSTATUS cli_reg_shutdown(struct cli_state * cli, TALLOC_CTX *mem_ctx,
+                          const char *msg, uint32 timeout, uint16 flags)
+{
+       prs_struct qbuf;
+       prs_struct rbuf; 
+       REG_Q_SHUTDOWN q_s;
+       REG_R_SHUTDOWN r_s;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+       if (msg == NULL) return NT_STATUS_INVALID_PARAMETER;
+
+       ZERO_STRUCT (q_s);
+       ZERO_STRUCT (r_s);
+
+       prs_init(&qbuf , MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_reg_q_shutdown(&q_s, msg, timeout, flags);
+
+       if (!reg_io_q_shutdown("", &q_s, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, REG_SHUTDOWN, &qbuf, &rbuf))
+               goto done;
+       
+       /* Unmarshall response */
+       
+       if(reg_io_r_shutdown("", &r_s, &rbuf, 0))
+               result = r_s.status;
+
+done:
+       prs_mem_free(&rbuf);
+       prs_mem_free(&qbuf);
+
+       return result;
+}
+
+
+/* Abort a server shutdown */
+
+NTSTATUS cli_reg_abort_shutdown(struct cli_state * cli, TALLOC_CTX *mem_ctx)
+{
+       prs_struct rbuf;
+       prs_struct qbuf; 
+       REG_Q_ABORT_SHUTDOWN q_s;
+       REG_R_ABORT_SHUTDOWN r_s;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+       ZERO_STRUCT (q_s);
+       ZERO_STRUCT (r_s);
+
+       prs_init(&qbuf , MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+       
+       /* Marshall data and send request */
+
+       init_reg_q_abort_shutdown(&q_s);
+
+       if (!reg_io_q_abort_shutdown("", &q_s, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, REG_ABORT_SHUTDOWN, &qbuf, &rbuf))
+               goto done;
+       
+               /* Unmarshall response */
+       
+       if (reg_io_r_abort_shutdown("", &r_s, &rbuf, 0))
+               result = r_s.status;
+
+done:
+       prs_mem_free(&rbuf);
+       prs_mem_free(&qbuf );
+
+       return result;
+}
diff --git a/source3/libsmb/cli_samr.c b/source3/libsmb/cli_samr.c
new file mode 100644 (file)
index 0000000..91577b3
--- /dev/null
@@ -0,0 +1,1294 @@
+/* 
+   Unix SMB/CIFS implementation.
+   RPC pipe client
+   Copyright (C) Tim Potter                        2000-2001,
+   Copyright (C) Andrew Tridgell              1992-1997,2000,
+   Copyright (C) Luke Kenneth Casson Leighton 1996-1997,2000,
+   Copyright (C) Paul Ashton                       1997,2000,
+   Copyright (C) Elrond                                 2000.
+   
+   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., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+
+/* Connect to SAMR database */
+
+NTSTATUS cli_samr_connect(struct cli_state *cli, TALLOC_CTX *mem_ctx, 
+                          uint32 access_mask, POLICY_HND *connect_pol)
+{
+       prs_struct qbuf, rbuf;
+       SAMR_Q_CONNECT q;
+       SAMR_R_CONNECT r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_samr_q_connect(&q, cli->desthost, access_mask);
+
+       if (!samr_io_q_connect("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SAMR_CONNECT, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!samr_io_r_connect("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       if (NT_STATUS_IS_OK(result = r.status)) {
+               *connect_pol = r.connect_pol;
+#ifdef __INSURE__
+               connect_pol->marker = malloc(1);
+#endif
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Close SAMR handle */
+
+NTSTATUS cli_samr_close(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                        POLICY_HND *connect_pol)
+{
+       prs_struct qbuf, rbuf;
+       SAMR_Q_CLOSE_HND q;
+       SAMR_R_CLOSE_HND r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_samr_q_close_hnd(&q, connect_pol);
+
+       if (!samr_io_q_close_hnd("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SAMR_CLOSE_HND, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!samr_io_r_close_hnd("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       if (NT_STATUS_IS_OK(result = r.status)) {
+#ifdef __INSURE__
+               SAFE_FREE(connect_pol->marker);
+#endif
+               *connect_pol = r.pol;
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Open handle on a domain */
+
+NTSTATUS cli_samr_open_domain(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                              POLICY_HND *connect_pol, uint32 access_mask, 
+                              const DOM_SID *domain_sid, POLICY_HND *domain_pol)
+{
+       prs_struct qbuf, rbuf;
+       SAMR_Q_OPEN_DOMAIN q;
+       SAMR_R_OPEN_DOMAIN r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_samr_q_open_domain(&q, connect_pol, access_mask, domain_sid);
+
+       if (!samr_io_q_open_domain("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SAMR_OPEN_DOMAIN, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!samr_io_r_open_domain("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       if (NT_STATUS_IS_OK(result = r.status)) {
+               *domain_pol = r.domain_pol;
+#ifdef __INSURE__
+               domain_pol->marker = malloc(1);
+#endif
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Open handle on a user */
+
+NTSTATUS cli_samr_open_user(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                            POLICY_HND *domain_pol, uint32 access_mask, 
+                            uint32 user_rid, POLICY_HND *user_pol)
+{
+       prs_struct qbuf, rbuf;
+       SAMR_Q_OPEN_USER q;
+       SAMR_R_OPEN_USER r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_samr_q_open_user(&q, domain_pol, access_mask, user_rid);
+
+       if (!samr_io_q_open_user("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SAMR_OPEN_USER, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!samr_io_r_open_user("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       if (NT_STATUS_IS_OK(result = r.status)) {
+               *user_pol = r.user_pol;
+#ifdef __INSURE__
+               user_pol->marker = malloc(1);
+#endif
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Open handle on a group */
+
+NTSTATUS cli_samr_open_group(struct cli_state *cli, TALLOC_CTX *mem_ctx, 
+                             POLICY_HND *domain_pol, uint32 access_mask, 
+                             uint32 group_rid, POLICY_HND *group_pol)
+{
+       prs_struct qbuf, rbuf;
+       SAMR_Q_OPEN_GROUP q;
+       SAMR_R_OPEN_GROUP r;
+       NTSTATUS result =  NT_STATUS_UNSUCCESSFUL;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_samr_q_open_group(&q, domain_pol, access_mask, group_rid);
+
+       if (!samr_io_q_open_group("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SAMR_OPEN_GROUP, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!samr_io_r_open_group("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       if (NT_STATUS_IS_OK(result = r.status)) {
+               *group_pol = r.pol;
+#ifdef __INSURE__
+               group_pol->marker = malloc(1);
+#endif
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Query user info */
+
+NTSTATUS cli_samr_query_userinfo(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                 POLICY_HND *user_pol, uint16 switch_value, 
+                                 SAM_USERINFO_CTR **ctr)
+{
+       prs_struct qbuf, rbuf;
+       SAMR_Q_QUERY_USERINFO q;
+       SAMR_R_QUERY_USERINFO r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_samr_q_query_userinfo(&q, user_pol, switch_value);
+
+       if (!samr_io_q_query_userinfo("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SAMR_QUERY_USERINFO, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!samr_io_r_query_userinfo("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       result = r.status;
+       *ctr = r.ctr;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Query group info */
+
+NTSTATUS cli_samr_query_groupinfo(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                  POLICY_HND *group_pol, uint32 info_level, 
+                                  GROUP_INFO_CTR *ctr)
+{
+       prs_struct qbuf, rbuf;
+       SAMR_Q_QUERY_GROUPINFO q;
+       SAMR_R_QUERY_GROUPINFO r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_samr_q_query_groupinfo(&q, group_pol, info_level);
+
+       if (!samr_io_q_query_groupinfo("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SAMR_QUERY_GROUPINFO, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       r.ctr = ctr;
+
+       if (!samr_io_r_query_groupinfo("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       result = r.status;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Query user groups */
+
+NTSTATUS cli_samr_query_usergroups(struct cli_state *cli, TALLOC_CTX *mem_ctx, 
+                                   POLICY_HND *user_pol, uint32 *num_groups, 
+                                   DOM_GID **gid)
+{
+       prs_struct qbuf, rbuf;
+       SAMR_Q_QUERY_USERGROUPS q;
+       SAMR_R_QUERY_USERGROUPS r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_samr_q_query_usergroups(&q, user_pol);
+
+       if (!samr_io_q_query_usergroups("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SAMR_QUERY_USERGROUPS, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!samr_io_r_query_usergroups("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       if (NT_STATUS_IS_OK(result = r.status)) {
+               *num_groups = r.num_entries;
+               *gid = r.gid;
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Query user aliases */
+
+NTSTATUS cli_samr_query_useraliases(struct cli_state *cli, TALLOC_CTX *mem_ctx, 
+                                   POLICY_HND *user_pol, uint32 num_sids, DOM_SID2 *sid,
+                                  uint32 *num_aliases, uint32 **als_rids)
+{
+       prs_struct qbuf, rbuf;
+       SAMR_Q_QUERY_USERALIASES q;
+       SAMR_R_QUERY_USERALIASES r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+       unsigned int ptr=1;
+       
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_samr_q_query_useraliases(&q, user_pol, num_sids, &ptr, sid);
+
+       if (!samr_io_q_query_useraliases("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SAMR_QUERY_USERALIASES, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!samr_io_r_query_useraliases("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       if (NT_STATUS_IS_OK(result = r.status)) {
+               *num_aliases = r.num_entries;
+               *als_rids = r.rid;
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Query user groups */
+
+NTSTATUS cli_samr_query_groupmem(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                 POLICY_HND *group_pol, uint32 *num_mem, 
+                                 uint32 **rid, uint32 **attr)
+{
+       prs_struct qbuf, rbuf;
+       SAMR_Q_QUERY_GROUPMEM q;
+       SAMR_R_QUERY_GROUPMEM r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_samr_q_query_groupmem(&q, group_pol);
+
+       if (!samr_io_q_query_groupmem("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SAMR_QUERY_GROUPMEM, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!samr_io_r_query_groupmem("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       if (NT_STATUS_IS_OK(result = r.status)) {
+               *num_mem = r.num_entries;
+               *rid = r.rid;
+               *attr = r.attr;
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Enumerate domain groups */
+
+NTSTATUS cli_samr_enum_dom_groups(struct cli_state *cli, TALLOC_CTX *mem_ctx, 
+                                  POLICY_HND *pol, uint32 *start_idx, 
+                                  uint32 size, struct acct_info **dom_groups,
+                                  uint32 *num_dom_groups)
+{
+       prs_struct qbuf, rbuf;
+       SAMR_Q_ENUM_DOM_GROUPS q;
+       SAMR_R_ENUM_DOM_GROUPS r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+       uint32 name_idx, i;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_samr_q_enum_dom_groups(&q, pol, *start_idx, size);
+
+       if (!samr_io_q_enum_dom_groups("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SAMR_ENUM_DOM_GROUPS, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!samr_io_r_enum_dom_groups("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       result = r.status;
+
+       if (!NT_STATUS_IS_OK(result) &&
+           NT_STATUS_V(result) != NT_STATUS_V(STATUS_MORE_ENTRIES))
+               goto done;
+
+       *num_dom_groups = r.num_entries2;
+
+       if (!((*dom_groups) = (struct acct_info *)
+             talloc(mem_ctx, sizeof(struct acct_info) * *num_dom_groups))) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       memset(*dom_groups, 0, sizeof(struct acct_info) * *num_dom_groups);
+
+       name_idx = 0;
+
+       for (i = 0; i < *num_dom_groups; i++) {
+
+               (*dom_groups)[i].rid = r.sam[i].rid;
+
+               if (r.sam[i].hdr_name.buffer) {
+                       unistr2_to_ascii((*dom_groups)[i].acct_name,
+                                        &r.uni_grp_name[name_idx],
+                                        sizeof(fstring) - 1);
+                       name_idx++;
+               }
+
+               *start_idx = r.next_idx;
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Enumerate domain groups */
+
+NTSTATUS cli_samr_enum_als_groups(struct cli_state *cli, TALLOC_CTX *mem_ctx, 
+                                  POLICY_HND *pol, uint32 *start_idx, 
+                                  uint32 size, struct acct_info **dom_groups,
+                                  uint32 *num_dom_groups)
+{
+       prs_struct qbuf, rbuf;
+       SAMR_Q_ENUM_DOM_ALIASES q;
+       SAMR_R_ENUM_DOM_ALIASES r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+       uint32 name_idx, i;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_samr_q_enum_dom_aliases(&q, pol, *start_idx, size);
+
+       if (!samr_io_q_enum_dom_aliases("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SAMR_ENUM_DOM_ALIASES, &qbuf, &rbuf)) {
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!samr_io_r_enum_dom_aliases("", &r, &rbuf, 0)) {
+               goto done;
+       }
+
+       /* Return output parameters */
+
+       result = r.status;
+
+       if (!NT_STATUS_IS_OK(result) &&
+           NT_STATUS_V(result) != NT_STATUS_V(STATUS_MORE_ENTRIES)) {
+               goto done;
+       }
+
+       *num_dom_groups = r.num_entries2;
+
+       if (!((*dom_groups) = (struct acct_info *)
+             talloc(mem_ctx, sizeof(struct acct_info) * *num_dom_groups))) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       memset(*dom_groups, 0, sizeof(struct acct_info) * *num_dom_groups);
+
+       name_idx = 0;
+
+       for (i = 0; i < *num_dom_groups; i++) {
+
+               (*dom_groups)[i].rid = r.sam[i].rid;
+
+               if (r.sam[i].hdr_name.buffer) {
+                       unistr2_to_ascii((*dom_groups)[i].acct_name,
+                                        &r.uni_grp_name[name_idx],
+                                        sizeof(fstring) - 1);
+                       name_idx++;
+               }
+
+               *start_idx = r.next_idx;
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Query alias members */
+
+NTSTATUS cli_samr_query_aliasmem(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                 POLICY_HND *alias_pol, uint32 *num_mem, 
+                                 DOM_SID **sids)
+{
+       prs_struct qbuf, rbuf;
+       SAMR_Q_QUERY_ALIASMEM q;
+       SAMR_R_QUERY_ALIASMEM r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+       uint32 i;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_samr_q_query_aliasmem(&q, alias_pol);
+
+       if (!samr_io_q_query_aliasmem("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SAMR_QUERY_ALIASMEM, &qbuf, &rbuf)) {
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!samr_io_r_query_aliasmem("", &r, &rbuf, 0)) {
+               goto done;
+       }
+
+       /* Return output parameters */
+
+       if (!NT_STATUS_IS_OK(result = r.status)) {
+               goto done;
+       }
+
+       *num_mem = r.num_sids;
+
+       if (!(*sids = talloc(mem_ctx, sizeof(DOM_SID) * *num_mem))) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       for (i = 0; i < *num_mem; i++) {
+               (*sids)[i] = r.sid[i].sid;
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Open handle on an alias */
+
+NTSTATUS cli_samr_open_alias(struct cli_state *cli, TALLOC_CTX *mem_ctx, 
+                             POLICY_HND *domain_pol, uint32 access_mask, 
+                             uint32 alias_rid, POLICY_HND *alias_pol)
+{
+       prs_struct qbuf, rbuf;
+       SAMR_Q_OPEN_ALIAS q;
+       SAMR_R_OPEN_ALIAS r;
+       NTSTATUS result;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_samr_q_open_alias(&q, domain_pol, access_mask, alias_rid);
+
+       if (!samr_io_q_open_alias("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SAMR_OPEN_ALIAS, &qbuf, &rbuf)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!samr_io_r_open_alias("", &r, &rbuf, 0)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Return output parameters */
+
+       if (NT_STATUS_IS_OK(result = r.status)) {
+               *alias_pol = r.pol;
+#ifdef __INSURE__
+               alias_pol->marker = malloc(1);
+#endif
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Query domain info */
+
+NTSTATUS cli_samr_query_dom_info(struct cli_state *cli, TALLOC_CTX *mem_ctx, 
+                                 POLICY_HND *domain_pol, uint16 switch_value,
+                                 SAM_UNK_CTR *ctr)
+{
+       prs_struct qbuf, rbuf;
+       SAMR_Q_QUERY_DOMAIN_INFO q;
+       SAMR_R_QUERY_DOMAIN_INFO r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_samr_q_query_dom_info(&q, domain_pol, switch_value);
+
+       if (!samr_io_q_query_dom_info("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SAMR_QUERY_DOMAIN_INFO, &qbuf, &rbuf)) {
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       r.ctr = ctr;
+
+       if (!samr_io_r_query_dom_info("", &r, &rbuf, 0)) {
+               goto done;
+       }
+
+       /* Return output parameters */
+
+       if (!NT_STATUS_IS_OK(result = r.status)) {
+               goto done;
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Query display info */
+
+NTSTATUS cli_samr_query_dispinfo(struct cli_state *cli, TALLOC_CTX *mem_ctx, 
+                                 POLICY_HND *domain_pol, uint32 *start_idx,
+                                 uint16 switch_value, uint32 *num_entries,
+                                 uint32 max_entries, SAM_DISPINFO_CTR *ctr)
+{
+       prs_struct qbuf, rbuf;
+       SAMR_Q_QUERY_DISPINFO q;
+       SAMR_R_QUERY_DISPINFO r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_samr_q_query_dispinfo(&q, domain_pol, switch_value,
+                                  *start_idx, max_entries);
+
+       if (!samr_io_q_query_dispinfo("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SAMR_QUERY_DISPINFO, &qbuf, &rbuf)) {
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       r.ctr = ctr;
+
+       if (!samr_io_r_query_dispinfo("", &r, &rbuf, 0)) {
+               goto done;
+       }
+
+       /* Return output parameters */
+
+        result = r.status;
+
+       if (!NT_STATUS_IS_OK(result) &&
+           NT_STATUS_V(result) != NT_STATUS_V(STATUS_MORE_ENTRIES)) {
+               goto done;
+       }
+
+       *num_entries = r.num_entries;
+       *start_idx += r.num_entries;  /* No next_idx in this structure! */
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Lookup rids.  Note that NT4 seems to crash if more than ~1000 rids are
+   looked up in one packet. */
+
+NTSTATUS cli_samr_lookup_rids(struct cli_state *cli, TALLOC_CTX *mem_ctx, 
+                              POLICY_HND *domain_pol, uint32 flags,
+                              uint32 num_rids, uint32 *rids, 
+                              uint32 *num_names, char ***names,
+                              uint32 **name_types)
+{
+       prs_struct qbuf, rbuf;
+       SAMR_Q_LOOKUP_RIDS q;
+       SAMR_R_LOOKUP_RIDS r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+       uint32 i;
+
+        if (num_rids > 1000) {
+                DEBUG(2, ("cli_samr_lookup_rids: warning: NT4 can crash if "
+                          "more than ~1000 rids are looked up at once.\n"));
+        }
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_samr_q_lookup_rids(mem_ctx, &q, domain_pol, flags,
+                               num_rids, rids);
+
+       if (!samr_io_q_lookup_rids("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SAMR_LOOKUP_RIDS, &qbuf, &rbuf)) {
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!samr_io_r_lookup_rids("", &r, &rbuf, 0)) {
+               goto done;
+       }
+
+       /* Return output parameters */
+
+       if (!NT_STATUS_IS_OK(result = r.status)) {
+               goto done;
+       }
+
+       if (r.num_names1 == 0) {
+               *num_names = 0;
+               *names = NULL;
+               goto done;
+       }
+
+       *num_names = r.num_names1;
+       *names = talloc(mem_ctx, sizeof(char *) * r.num_names1);
+       *name_types = talloc(mem_ctx, sizeof(uint32) * r.num_names1);
+
+       for (i = 0; i < r.num_names1; i++) {
+               fstring tmp;
+
+               unistr2_to_ascii(tmp, &r.uni_name[i], sizeof(tmp) - 1);
+               (*names)[i] = talloc_strdup(mem_ctx, tmp);
+               (*name_types)[i] = r.type[i];
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Lookup names */
+
+NTSTATUS cli_samr_lookup_names(struct cli_state *cli, TALLOC_CTX *mem_ctx, 
+                               POLICY_HND *domain_pol, uint32 flags,
+                               uint32 num_names, const char **names,
+                               uint32 *num_rids, uint32 **rids,
+                               uint32 **rid_types)
+{
+       prs_struct qbuf, rbuf;
+       SAMR_Q_LOOKUP_NAMES q;
+       SAMR_R_LOOKUP_NAMES r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+       uint32 i;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_samr_q_lookup_names(mem_ctx, &q, domain_pol, flags,
+                                num_names, names);
+
+       if (!samr_io_q_lookup_names("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SAMR_LOOKUP_NAMES, &qbuf, &rbuf)) {
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!samr_io_r_lookup_names("", &r, &rbuf, 0)) {
+               goto done;
+       }
+
+       /* Return output parameters */
+
+       if (!NT_STATUS_IS_OK(result = r.status)) {
+               goto done;
+       }
+
+       if (r.num_rids1 == 0) {
+               *num_rids = 0;
+               goto done;
+       }
+
+       *num_rids = r.num_rids1;
+       *rids = talloc(mem_ctx, sizeof(uint32) * r.num_rids1);
+       *rid_types = talloc(mem_ctx, sizeof(uint32) * r.num_rids1);
+
+       for (i = 0; i < r.num_rids1; i++) {
+               (*rids)[i] = r.rids[i];
+               (*rid_types)[i] = r.types[i];
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Create a domain user */
+
+NTSTATUS cli_samr_create_dom_user(struct cli_state *cli, TALLOC_CTX *mem_ctx, 
+                                  POLICY_HND *domain_pol, const char *acct_name,
+                                  uint32 acb_info, uint32 unknown, 
+                                  POLICY_HND *user_pol, uint32 *rid)
+{
+       prs_struct qbuf, rbuf;
+       SAMR_Q_CREATE_USER q;
+       SAMR_R_CREATE_USER r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_samr_q_create_user(&q, domain_pol, acct_name, acb_info, unknown);
+
+       if (!samr_io_q_create_user("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SAMR_CREATE_USER, &qbuf, &rbuf)) {
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!samr_io_r_create_user("", &r, &rbuf, 0)) {
+               goto done;
+       }
+
+       /* Return output parameters */
+
+       if (!NT_STATUS_IS_OK(result = r.status)) {
+               goto done;
+       }
+
+       if (user_pol)
+               *user_pol = r.user_pol;
+
+       if (rid)
+               *rid = r.user_rid;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Set userinfo */
+
+NTSTATUS cli_samr_set_userinfo(struct cli_state *cli, TALLOC_CTX *mem_ctx, 
+                               POLICY_HND *user_pol, uint16 switch_value,
+                               uchar sess_key[16], SAM_USERINFO_CTR *ctr)
+{
+       prs_struct qbuf, rbuf;
+       SAMR_Q_SET_USERINFO q;
+       SAMR_R_SET_USERINFO r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       q.ctr = ctr;
+
+       init_samr_q_set_userinfo(&q, user_pol, sess_key, switch_value, 
+                                ctr->info.id);
+
+       if (!samr_io_q_set_userinfo("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SAMR_SET_USERINFO, &qbuf, &rbuf)) {
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!samr_io_r_set_userinfo("", &r, &rbuf, 0)) {
+               goto done;
+       }
+
+       /* Return output parameters */
+
+       if (!NT_STATUS_IS_OK(result = r.status)) {
+               goto done;
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Set userinfo2 */
+
+NTSTATUS cli_samr_set_userinfo2(struct cli_state *cli, TALLOC_CTX *mem_ctx, 
+                                POLICY_HND *user_pol, uint16 switch_value,
+                                uchar sess_key[16], SAM_USERINFO_CTR *ctr)
+{
+       prs_struct qbuf, rbuf;
+       SAMR_Q_SET_USERINFO2 q;
+       SAMR_R_SET_USERINFO2 r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_samr_q_set_userinfo2(&q, user_pol, sess_key, switch_value, ctr);
+
+       if (!samr_io_q_set_userinfo2("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SAMR_SET_USERINFO2, &qbuf, &rbuf)) {
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!samr_io_r_set_userinfo2("", &r, &rbuf, 0)) {
+               goto done;
+       }
+
+       /* Return output parameters */
+
+       if (!NT_STATUS_IS_OK(result = r.status)) {
+               goto done;
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Delete domain user */
+
+NTSTATUS cli_samr_delete_dom_user(struct cli_state *cli, TALLOC_CTX *mem_ctx, 
+                                  POLICY_HND *user_pol)
+{
+       prs_struct qbuf, rbuf;
+       SAMR_Q_DELETE_DOM_USER q;
+       SAMR_R_DELETE_DOM_USER r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_samr_q_delete_dom_user(&q, user_pol);
+
+       if (!samr_io_q_delete_dom_user("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SAMR_DELETE_DOM_USER, &qbuf, &rbuf)) {
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!samr_io_r_delete_dom_user("", &r, &rbuf, 0)) {
+               goto done;
+       }
+
+       /* Return output parameters */
+
+       result = r.status;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Query user security object */
+
+NTSTATUS cli_samr_query_sec_obj(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                 POLICY_HND *user_pol, uint16 switch_value, 
+                                 TALLOC_CTX *ctx, SEC_DESC_BUF **sec_desc_buf)
+{
+       prs_struct qbuf, rbuf;
+       SAMR_Q_QUERY_SEC_OBJ q;
+       SAMR_R_QUERY_SEC_OBJ r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_samr_q_query_sec_obj(&q, user_pol, switch_value);
+
+       if (!samr_io_q_query_sec_obj("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SAMR_QUERY_SEC_OBJECT, &qbuf, &rbuf)) {
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       if (!samr_io_r_query_sec_obj("", &r, &rbuf, 0)) {
+               goto done;
+       }
+
+       /* Return output parameters */
+
+       result = r.status;
+       *sec_desc_buf=dup_sec_desc_buf(ctx, r.buf);
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Get domain password info */
+
+NTSTATUS cli_samr_get_dom_pwinfo(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                uint16 *unk_0, uint16 *unk_1, uint16 *unk_2)
+{
+       prs_struct qbuf, rbuf;
+       SAMR_Q_GET_DOM_PWINFO q;
+       SAMR_R_GET_DOM_PWINFO r;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Marshall data and send request */
+
+       init_samr_q_get_dom_pwinfo(&q, cli->desthost);
+
+       if (!samr_io_q_get_dom_pwinfo("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SAMR_GET_DOM_PWINFO, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!samr_io_r_get_dom_pwinfo("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       result = r.status;
+
+       if (NT_STATUS_IS_OK(result)) {
+               if (unk_0)
+                       *unk_0 = r.unk_0;
+               if (unk_1)
+                       *unk_1 = r.unk_1;
+               if (unk_2)
+                       *unk_2 = r.unk_2;
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
diff --git a/source3/libsmb/cli_spoolss.c b/source3/libsmb/cli_spoolss.c
new file mode 100644 (file)
index 0000000..18e1775
--- /dev/null
@@ -0,0 +1,2156 @@
+/*
+   Unix SMB/CIFS implementation.
+   RPC pipe client
+
+   Copyright (C) Gerald Carter                2001-2002,
+   Copyright (C) Tim Potter                   2000-2002,
+   Copyright (C) Andrew Tridgell              1994-2000,
+   Copyright (C) Luke Kenneth Casson Leighton 1996-2000,
+   Copyright (C) Jean-Francois Micouleau      1999-2000.
+
+   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., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+
+/** @defgroup spoolss SPOOLSS - NT printing routines
+ *  @ingroup rpc_client
+ *
+ * @{
+ **/
+
+/**********************************************************************
+ Initialize a new spoolss buff for use by a client rpc
+**********************************************************************/
+static void init_buffer(NEW_BUFFER *buffer, uint32 size, TALLOC_CTX *ctx)
+{
+       buffer->ptr = (size != 0);
+       buffer->size = size;
+       buffer->string_at_end = size;
+       prs_init(&buffer->prs, size, ctx, MARSHALL);
+       buffer->struct_start = prs_offset(&buffer->prs);
+}
+
+/*********************************************************************
+ Decode various spoolss rpc's and info levels
+ ********************************************************************/
+
+/**********************************************************************
+**********************************************************************/
+static void decode_printer_info_0(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer,
+                               uint32 returned, PRINTER_INFO_0 **info)
+{
+        uint32 i;
+        PRINTER_INFO_0  *inf;
+
+        inf=(PRINTER_INFO_0 *)talloc(mem_ctx, returned*sizeof(PRINTER_INFO_0));
+
+        buffer->prs.data_offset=0;
+
+        for (i=0; i<returned; i++) {
+                smb_io_printer_info_0("", buffer, &inf[i], 0);
+        }
+
+        *info=inf;
+}
+
+/**********************************************************************
+**********************************************************************/
+static void decode_printer_info_1(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer,
+                               uint32 returned, PRINTER_INFO_1 **info)
+{
+        uint32 i;
+        PRINTER_INFO_1  *inf;
+
+        inf=(PRINTER_INFO_1 *)talloc(mem_ctx, returned*sizeof(PRINTER_INFO_1));
+
+        buffer->prs.data_offset=0;
+
+        for (i=0; i<returned; i++) {
+                smb_io_printer_info_1("", buffer, &inf[i], 0);
+        }
+
+        *info=inf;
+}
+
+/**********************************************************************
+**********************************************************************/
+static void decode_printer_info_2(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, 
+                               uint32 returned, PRINTER_INFO_2 **info)
+{
+        uint32 i;
+        PRINTER_INFO_2  *inf;
+
+        inf=(PRINTER_INFO_2 *)talloc(mem_ctx, returned*sizeof(PRINTER_INFO_2));
+
+        buffer->prs.data_offset=0;
+
+        for (i=0; i<returned; i++) {
+               /* a little initialization as we go */
+               inf[i].secdesc = NULL;
+                smb_io_printer_info_2("", buffer, &inf[i], 0);
+        }
+
+        *info=inf;
+}
+
+/**********************************************************************
+**********************************************************************/
+static void decode_printer_info_3(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, 
+                               uint32 returned, PRINTER_INFO_3 **info)
+{
+        uint32 i;
+        PRINTER_INFO_3  *inf;
+
+        inf=(PRINTER_INFO_3 *)talloc(mem_ctx, returned*sizeof(PRINTER_INFO_3));
+
+        buffer->prs.data_offset=0;
+
+        for (i=0; i<returned; i++) {
+               inf[i].secdesc = NULL;
+                smb_io_printer_info_3("", buffer, &inf[i], 0);
+        }
+
+        *info=inf;
+}
+
+/**********************************************************************
+**********************************************************************/
+static void decode_port_info_1(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, 
+                       uint32 returned, PORT_INFO_1 **info)
+{
+        uint32 i;
+        PORT_INFO_1 *inf;
+
+        inf=(PORT_INFO_1*)talloc(mem_ctx, returned*sizeof(PORT_INFO_1));
+
+        prs_set_offset(&buffer->prs, 0);
+
+        for (i=0; i<returned; i++) {
+                smb_io_port_info_1("", buffer, &(inf[i]), 0);
+        }
+
+        *info=inf;
+}
+
+/**********************************************************************
+**********************************************************************/
+static void decode_port_info_2(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, 
+                       uint32 returned, PORT_INFO_2 **info)
+{
+        uint32 i;
+        PORT_INFO_2 *inf;
+
+        inf=(PORT_INFO_2*)talloc(mem_ctx, returned*sizeof(PORT_INFO_2));
+
+        prs_set_offset(&buffer->prs, 0);
+
+        for (i=0; i<returned; i++) {
+                smb_io_port_info_2("", buffer, &(inf[i]), 0);
+        }
+
+        *info=inf;
+}
+
+/**********************************************************************
+**********************************************************************/
+static void decode_printer_driver_1(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, 
+                       uint32 returned, DRIVER_INFO_1 **info)
+{
+        uint32 i;
+        DRIVER_INFO_1 *inf;
+
+        inf=(DRIVER_INFO_1 *)talloc(mem_ctx, returned*sizeof(DRIVER_INFO_1));
+
+        buffer->prs.data_offset=0;
+
+        for (i=0; i<returned; i++) {
+                smb_io_printer_driver_info_1("", buffer, &(inf[i]), 0);
+        }
+
+        *info=inf;
+}
+
+/**********************************************************************
+**********************************************************************/
+static void decode_printer_driver_2(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, 
+                       uint32 returned, DRIVER_INFO_2 **info)
+{
+        uint32 i;
+        DRIVER_INFO_2 *inf;
+
+        inf=(DRIVER_INFO_2 *)talloc(mem_ctx, returned*sizeof(DRIVER_INFO_2));
+
+        buffer->prs.data_offset=0;
+
+        for (i=0; i<returned; i++) {
+                smb_io_printer_driver_info_2("", buffer, &(inf[i]), 0);
+        }
+
+        *info=inf;
+}
+
+/**********************************************************************
+**********************************************************************/
+static void decode_printer_driver_3(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, 
+                       uint32 returned, DRIVER_INFO_3 **info)
+{
+        uint32 i;
+        DRIVER_INFO_3 *inf;
+
+        inf=(DRIVER_INFO_3 *)talloc(mem_ctx, returned*sizeof(DRIVER_INFO_3));
+
+        buffer->prs.data_offset=0;
+
+        for (i=0; i<returned; i++) {
+                smb_io_printer_driver_info_3("", buffer, &(inf[i]), 0);
+        }
+
+        *info=inf;
+}
+
+/**********************************************************************
+**********************************************************************/
+static void decode_printerdriverdir_1 (TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer,
+                       uint32 returned, DRIVER_DIRECTORY_1 **info
+)
+{
+       DRIVER_DIRECTORY_1 *inf;
+        inf=(DRIVER_DIRECTORY_1 *)talloc(mem_ctx, sizeof(DRIVER_DIRECTORY_1));
+
+        prs_set_offset(&buffer->prs, 0);
+
+        smb_io_driverdir_1("", buffer, inf, 0);
+       *info=inf;
+}
+
+/** Return a handle to the specified printer or print server.
+ *
+ * @param cli              Pointer to client state structure which is open
+ * on the SPOOLSS pipe.
+ *
+ * @param mem_ctx          Pointer to an initialised talloc context.
+ *
+ * @param printername      The name of the printer or print server to be
+ * opened in UNC format.
+ *
+ * @param datatype         Specifies the default data type for the printer.
+ *
+ * @param access_required  The access rights requested on the printer or
+ * print server.
+ *
+ * @param station          The UNC name of the requesting workstation.
+ *
+ * @param username         The name of the user requesting the open.
+ *
+ * @param pol              Returned policy handle.
+ */
+
+/*********************************************************************************
+ Win32 API - OpenPrinter()
+ ********************************************************************************/
+
+WERROR cli_spoolss_open_printer_ex(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                               char *printername, char *datatype, uint32 access_required,
+                               char *station, char *username, POLICY_HND *pol)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_OPEN_PRINTER_EX q;
+       SPOOL_R_OPEN_PRINTER_EX r;
+       WERROR result = W_ERROR(ERRgeneral);
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+        make_spoolss_q_open_printer_ex(&q, printername, datatype,
+                                       access_required, station, username);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_open_printer_ex("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SPOOLSS_OPENPRINTEREX, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_open_printer_ex("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       result = r.status;
+
+       if (W_ERROR_IS_OK(result))
+               *pol = r.handle;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/** Close a printer handle
+ *
+ * @param cli              Pointer to client state structure which is open
+ * on the SPOOLSS pipe.
+ *
+ * @param mem_ctx          Pointer to an initialised talloc context.
+ *
+ * @param pol              Policy handle of printer or print server to close.
+ */
+/*********************************************************************************
+ Win32 API - ClosePrinter()
+ ********************************************************************************/
+
+WERROR cli_spoolss_close_printer(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                POLICY_HND *pol)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_CLOSEPRINTER q;
+       SPOOL_R_CLOSEPRINTER r;
+       WERROR result = W_ERROR(ERRgeneral);
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+        make_spoolss_q_closeprinter(&q, pol);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_closeprinter("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SPOOLSS_CLOSEPRINTER, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_closeprinter("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       result = r.status;
+
+       if (W_ERROR_IS_OK(result))
+               *pol = r.handle;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/** Enumerate printers on a print server.
+ *
+ * @param cli              Pointer to client state structure which is open
+ *                         on the SPOOLSS pipe.
+ * @param mem_ctx          Pointer to an initialised talloc context.
+ *
+ * @param offered          Buffer size offered in the request.
+ * @param needed           Number of bytes needed to complete the request.
+ *                         may be NULL.
+ *
+ * @param flags            Selected from PRINTER_ENUM_* flags.
+ * @param level            Request information level.
+ *
+ * @param num_printers     Pointer to number of printers returned.  May be
+ *                         NULL.
+ * @param ctr              Return structure for printer information.  May
+ *                         be NULL.
+ */
+/*********************************************************************************
+ Win32 API - EnumPrinters()
+ ********************************************************************************/
+
+WERROR cli_spoolss_enum_printers(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                uint32 offered, uint32 *needed,
+                                uint32 flags, uint32 level,
+                                uint32 *num_printers, PRINTER_INFO_CTR *ctr)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_ENUMPRINTERS q;
+        SPOOL_R_ENUMPRINTERS r;
+       NEW_BUFFER buffer;
+       WERROR result = W_ERROR(ERRgeneral);
+       fstring server;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+        slprintf (server, sizeof(fstring)-1, "\\\\%s", cli->desthost);
+        strupper (server);
+       
+       /* Initialise input parameters */
+
+       init_buffer(&buffer, offered, mem_ctx);
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       make_spoolss_q_enumprinters(&q, flags, server, level, &buffer, 
+                                   offered);
+
+       /* Marshall data and send request */
+       
+       if (!spoolss_io_q_enumprinters("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SPOOLSS_ENUMPRINTERS, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (spoolss_io_r_enumprinters("", &r, &rbuf, 0)) {
+               if (needed)
+                       *needed = r.needed;
+       }
+       
+       result = r.status;
+
+       /* Return output parameters */
+
+       if (!W_ERROR_IS_OK(r.status))
+               goto done;
+
+       if (num_printers)
+               *num_printers = r.returned;
+
+       if (!ctr)
+               goto done;
+
+       switch (level) {
+       case 0:
+               decode_printer_info_0(mem_ctx, r.buffer, r.returned, 
+                                     &ctr->printers_0);
+               break;
+       case 1:
+               decode_printer_info_1(mem_ctx, r.buffer, r.returned, 
+                                     &ctr->printers_1);
+               break;
+       case 2:
+               decode_printer_info_2(mem_ctx, r.buffer, r.returned, 
+                                     &ctr->printers_2);
+               break;
+       case 3:
+               decode_printer_info_3(mem_ctx, r.buffer, r.returned, 
+                                     &ctr->printers_3);
+               break;
+       }                       
+       
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;  
+}
+
+/*********************************************************************************
+ Win32 API - EnumPorts()
+ ********************************************************************************/
+/** Enumerate printer ports on a print server.
+ *
+ * @param cli              Pointer to client state structure which is open
+ *                         on the SPOOLSS pipe.
+ * @param mem_ctx          Pointer to an initialised talloc context.
+ *
+ * @param offered          Buffer size offered in the request.
+ * @param needed           Number of bytes needed to complete the request.
+ *                         May be NULL.
+ *
+ * @param level            Requested information level.
+ *
+ * @param num_ports        Pointer to number of ports returned.  May be NULL.
+ * @param ctr              Pointer to structure holding port information.
+ *                         May be NULL.
+ */
+
+WERROR cli_spoolss_enum_ports(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                             uint32 offered, uint32 *needed,
+                             uint32 level, int *num_ports, PORT_INFO_CTR *ctr)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_ENUMPORTS q;
+        SPOOL_R_ENUMPORTS r;
+       NEW_BUFFER buffer;
+       WERROR result = W_ERROR(ERRgeneral);
+       fstring server;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+        slprintf (server, sizeof(fstring)-1, "\\\\%s", cli->desthost);
+        strupper (server);
+
+       /* Initialise input parameters */
+       
+       init_buffer(&buffer, offered, mem_ctx);
+       
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+       
+       make_spoolss_q_enumports(&q, server, level, &buffer, offered);
+       
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_enumports("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SPOOLSS_ENUMPORTS, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (spoolss_io_r_enumports("", &r, &rbuf, 0)) {
+               if (needed)
+                       *needed = r.needed;
+       }
+               
+       result = r.status;
+
+       /* Return output parameters */
+
+       if (!W_ERROR_IS_OK(result))
+               goto done;
+
+       if (num_ports)
+               *num_ports = r.returned;
+
+       if (!ctr)
+               goto done;
+       
+       switch (level) {
+       case 1:
+               decode_port_info_1(mem_ctx, r.buffer, r.returned, 
+                                  &ctr->port.info_1);
+               break;
+       case 2:
+               decode_port_info_2(mem_ctx, r.buffer, r.returned, 
+                                  &ctr->port.info_2);
+               break;
+       }                       
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+       
+       return result;  
+}
+
+/*********************************************************************************
+ Win32 API - GetPrinter()
+ ********************************************************************************/
+
+WERROR cli_spoolss_getprinter(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                             uint32 offered, uint32 *needed,
+                             POLICY_HND *pol, uint32 level, 
+                             PRINTER_INFO_CTR *ctr)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_GETPRINTER q;
+       SPOOL_R_GETPRINTER r;
+       NEW_BUFFER buffer;
+       WERROR result = W_ERROR(ERRgeneral);
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise input parameters */
+
+       init_buffer(&buffer, offered, mem_ctx);
+       
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       make_spoolss_q_getprinter(mem_ctx, &q, pol, level, &buffer, offered);
+       
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_getprinter("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SPOOLSS_GETPRINTER, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_getprinter("", &r, &rbuf, 0))
+               goto done;
+
+       if (needed)
+               *needed = r.needed;
+       
+       /* Return output parameters */
+
+       result = r.status;
+
+       if (W_ERROR_IS_OK(result)) {
+               switch (level) {
+               case 0:
+                       decode_printer_info_0(mem_ctx, r.buffer, 1, &ctr->printers_0);
+                       break;
+               case 1:
+                       decode_printer_info_1(mem_ctx, r.buffer, 1, &ctr->printers_1);
+                       break;
+               case 2:
+                       decode_printer_info_2(mem_ctx, r.buffer, 1, &ctr->printers_2);
+                       break;
+               case 3:
+                       decode_printer_info_3(mem_ctx, r.buffer, 1, &ctr->printers_3);
+                       break;
+               }                       
+       }
+       
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;  
+}
+
+/*********************************************************************************
+ Win32 API - SetPrinter()
+ ********************************************************************************/
+/** Set printer info 
+ *
+ * @param cli              Pointer to client state structure which is open
+ *                         on the SPOOLSS pipe.
+ * @param mem_ctx          Pointer to an initialised talloc context.
+ *
+ * @param pol              Policy handle on printer to set info.
+ * @param level            Information level to set.
+ * @param ctr              Pointer to structure holding printer information.
+ * @param command          Specifies the action performed.  See
+ * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/prntspol_13ua.asp 
+ * for details.
+ *
+ */
+
+WERROR cli_spoolss_setprinter(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                             POLICY_HND *pol, uint32 level, 
+                             PRINTER_INFO_CTR *ctr, uint32 command)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_SETPRINTER q;
+       SPOOL_R_SETPRINTER r;
+       WERROR result = W_ERROR(ERRgeneral);
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise input parameters */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+               
+       make_spoolss_q_setprinter(mem_ctx, &q, pol, level, ctr, command);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_setprinter("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SPOOLSS_SETPRINTER, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_setprinter("", &r, &rbuf, 0))
+               goto done;
+       
+       result = r.status;
+
+done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;  
+}
+
+/*********************************************************************************
+ Win32 API - GetPrinterDriver()
+ ********************************************************************************/
+/** Get installed printer drivers for a given printer
+ *
+ * @param cli              Pointer to client state structure which is open
+ * on the SPOOLSS pipe.
+ *
+ * @param mem_ctx          Pointer to an initialised talloc context.
+ *
+ * @param offered          Buffer size offered in the request.
+ * @param needed           Number of bytes needed to complete the request.
+ *                         may be NULL.
+ *
+ * @param pol              Pointer to an open policy handle for the printer
+ *                         opened with cli_spoolss_open_printer_ex().
+ * @param level            Requested information level.
+ * @param env              The print environment or archictecture.  This is
+ *                         "Windows NT x86" for NT4.
+ * @param ctr              Returned printer driver information.
+ */
+
+WERROR cli_spoolss_getprinterdriver(struct cli_state *cli, 
+                                   TALLOC_CTX *mem_ctx, 
+                                   uint32 offered, uint32 *needed,
+                                   POLICY_HND *pol, uint32 level, 
+                                   char *env, PRINTER_DRIVER_CTR *ctr)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_GETPRINTERDRIVER2 q;
+        SPOOL_R_GETPRINTERDRIVER2 r;
+       NEW_BUFFER buffer;
+       WERROR result = W_ERROR(ERRgeneral);
+       fstring server;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       fstrcpy (server, cli->desthost);
+       strupper (server);
+
+       /* Initialise input parameters */
+
+       init_buffer(&buffer, offered, mem_ctx);
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       make_spoolss_q_getprinterdriver2(&q, pol, env, level, 2, 2,
+                                        &buffer, offered);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_getprinterdriver2 ("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req (cli, SPOOLSS_GETPRINTERDRIVER2, &qbuf, &rbuf)) 
+               goto done;
+
+       /* Unmarshall response */
+
+       if (spoolss_io_r_getprinterdriver2 ("", &r, &rbuf, 0)) {
+               if (needed)
+                       *needed = r.needed;
+       }
+
+       result = r.status;
+
+       /* Return output parameters */
+
+       if (!W_ERROR_IS_OK(result))
+               goto done;
+
+       if (!ctr)
+               goto done;
+
+       switch (level) {
+       case 1:
+               decode_printer_driver_1(mem_ctx, r.buffer, 1, &ctr->info1);
+               break;
+       case 2:
+               decode_printer_driver_2(mem_ctx, r.buffer, 1, &ctr->info2);
+               break;
+       case 3:
+               decode_printer_driver_3(mem_ctx, r.buffer, 1, &ctr->info3);
+               break;
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+               
+       return result;  
+}
+
+/*********************************************************************************
+ Win32 API - EnumPrinterDrivers()
+ ********************************************************************************/
+/**********************************************************************
+ * Get installed printer drivers for a given printer
+ */
+WERROR cli_spoolss_enumprinterdrivers (struct cli_state *cli, 
+                                      TALLOC_CTX *mem_ctx,
+                                      uint32 offered, uint32 *needed,
+                                      uint32 level, char *env,
+                                      uint32 *num_drivers,
+                                      PRINTER_DRIVER_CTR *ctr)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_ENUMPRINTERDRIVERS q;
+        SPOOL_R_ENUMPRINTERDRIVERS r;
+       NEW_BUFFER buffer;
+       WERROR result = W_ERROR(ERRgeneral);
+       fstring server;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+        slprintf (server, sizeof(fstring)-1, "\\\\%s", cli->desthost);
+        strupper (server);
+
+       /* Initialise input parameters */
+
+       init_buffer(&buffer, offered, mem_ctx);
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Write the request */
+
+       make_spoolss_q_enumprinterdrivers(&q, server, env, level, &buffer, 
+                                         offered);
+       
+       /* Marshall data and send request */
+       
+       if (!spoolss_io_q_enumprinterdrivers ("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req (cli, SPOOLSS_ENUMPRINTERDRIVERS, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_enumprinterdrivers ("", &r, &rbuf, 0))
+               goto done;
+
+       if (needed)
+               *needed = r.needed;
+
+       if (num_drivers)
+               *num_drivers = r.returned;
+
+       result = r.status;
+
+       /* Return output parameters */
+
+       if (W_ERROR_IS_OK(result) && (r.returned != 0)) {
+               *num_drivers = r.returned;
+
+               switch (level) {
+               case 1:
+                       decode_printer_driver_1(mem_ctx, r.buffer, r.returned, &ctr->info1);
+                       break;
+               case 2:
+                       decode_printer_driver_2(mem_ctx, r.buffer, r.returned, &ctr->info2);
+                       break;
+               case 3:
+                       decode_printer_driver_3(mem_ctx, r.buffer, r.returned, &ctr->info3);
+                       break;
+               }
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+               
+       return result;
+}
+
+
+/*********************************************************************************
+ Win32 API - GetPrinterDriverDirectory()
+ ********************************************************************************/
+/**********************************************************************
+ * Get installed printer drivers for a given printer
+ */
+WERROR cli_spoolss_getprinterdriverdir (struct cli_state *cli, 
+                                       TALLOC_CTX *mem_ctx,
+                                       uint32 offered, uint32 *needed,
+                                       uint32 level, char *env,
+                                       DRIVER_DIRECTORY_CTR *ctr)
+{
+       prs_struct                      qbuf, rbuf;
+       SPOOL_Q_GETPRINTERDRIVERDIR     q;
+        SPOOL_R_GETPRINTERDRIVERDIR    r;
+       NEW_BUFFER                      buffer;
+       WERROR result = W_ERROR(ERRgeneral);
+       fstring                         server;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+        slprintf (server, sizeof(fstring)-1, "\\\\%s", cli->desthost);
+        strupper (server);
+
+       /* Initialise input parameters */
+
+       init_buffer(&buffer, offered, mem_ctx);
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Write the request */
+
+       make_spoolss_q_getprinterdriverdir(&q, server, env, level, &buffer, 
+                                          offered);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_getprinterdriverdir ("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req (cli, SPOOLSS_GETPRINTERDRIVERDIRECTORY,
+                              &qbuf, &rbuf)) 
+               goto done;
+
+       /* Unmarshall response */
+
+       if (spoolss_io_r_getprinterdriverdir ("", &r, &rbuf, 0)) {
+               if (needed)
+                       *needed = r.needed;
+       }
+               
+       /* Return output parameters */
+
+       result = r.status;
+
+       if (W_ERROR_IS_OK(result)) {
+               switch (level) {
+               case 1:
+                       decode_printerdriverdir_1(mem_ctx, r.buffer, 1, 
+                                                 &ctr->info1);
+                       break;
+               }                       
+       }
+               
+       done:
+               prs_mem_free(&qbuf);
+               prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/*********************************************************************************
+ Win32 API - AddPrinterDriver()
+ ********************************************************************************/
+/**********************************************************************
+ * Install a printer driver
+ */
+WERROR cli_spoolss_addprinterdriver (struct cli_state *cli, 
+                                    TALLOC_CTX *mem_ctx, uint32 level,
+                                    PRINTER_DRIVER_CTR *ctr)
+{
+       prs_struct                      qbuf, rbuf;
+       SPOOL_Q_ADDPRINTERDRIVER        q;
+        SPOOL_R_ADDPRINTERDRIVER       r;
+       WERROR result = W_ERROR(ERRgeneral);
+       fstring                         server;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+       
+        slprintf (server, sizeof(fstring)-1, "\\\\%s", cli->desthost);
+        strupper (server);
+
+       /* Initialise input parameters */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Write the request */
+
+       make_spoolss_q_addprinterdriver (mem_ctx, &q, server, level, ctr);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_addprinterdriver ("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req (cli, SPOOLSS_ADDPRINTERDRIVER, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_addprinterdriver ("", &r, &rbuf, 0))
+               goto done;
+               
+       /* Return output parameters */
+
+       result = r.status;
+
+done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+       
+       return result;  
+}
+
+/*********************************************************************************
+ Win32 API - AddPrinter()
+ ********************************************************************************/
+/**********************************************************************
+ * Install a printer
+ */
+WERROR cli_spoolss_addprinterex (struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                uint32 level, PRINTER_INFO_CTR*ctr)
+{
+       prs_struct                      qbuf, rbuf;
+       SPOOL_Q_ADDPRINTEREX            q;
+        SPOOL_R_ADDPRINTEREX           r;
+       WERROR result = W_ERROR(ERRgeneral);
+       fstring                         server,
+                                       client,
+                                       user;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+        slprintf (client, sizeof(fstring)-1, "\\\\%s", cli->desthost);
+        strupper (client);
+        slprintf (server, sizeof(fstring)-1, "\\\\%s", cli->desthost);
+        strupper (server);
+       fstrcpy  (user, cli->user_name);
+
+       /* Initialise input parameters */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Write the request */
+
+       make_spoolss_q_addprinterex (mem_ctx, &q, server, client, user,
+                                    level, ctr);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_addprinterex ("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req (cli, SPOOLSS_ADDPRINTEREX, &qbuf, &rbuf)) 
+               goto done;
+               
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_addprinterex ("", &r, &rbuf, 0))
+               goto done;
+               
+       /* Return output parameters */
+
+       result = r.status;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;  
+}
+
+/*********************************************************************************
+ Win32 API - DeltePrinterDriver()
+ ********************************************************************************/
+/**********************************************************************
+ * Delete a Printer Driver from the server (does not remove 
+ * the driver files
+ */
+WERROR cli_spoolss_deleteprinterdriver (struct cli_state *cli, 
+                                       TALLOC_CTX *mem_ctx, char *arch,
+                                       char *driver)
+{
+       prs_struct                      qbuf, rbuf;
+       SPOOL_Q_DELETEPRINTERDRIVER     q;
+        SPOOL_R_DELETEPRINTERDRIVER    r;
+       WERROR result = W_ERROR(ERRgeneral);
+       fstring                         server;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+
+       /* Initialise input parameters */
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+        slprintf (server, sizeof(fstring)-1, "\\\\%s", cli->desthost);
+        strupper (server);
+
+       /* Write the request */
+
+       make_spoolss_q_deleteprinterdriver(mem_ctx, &q, server, arch, driver);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_deleteprinterdriver ("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req (cli,SPOOLSS_DELETEPRINTERDRIVER , &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_deleteprinterdriver ("", &r, &rbuf, 0))
+               goto done;
+               
+       /* Return output parameters */
+
+       result = r.status;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;  
+}
+
+/*********************************************************************************
+ Win32 API - GetPrinterProcessorDirectory()
+ ********************************************************************************/
+
+WERROR cli_spoolss_getprintprocessordirectory(struct cli_state *cli,
+                                             TALLOC_CTX *mem_ctx,
+                                             uint32 offered, uint32 *needed,
+                                             char *name, char *environment,
+                                             fstring procdir)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_GETPRINTPROCESSORDIRECTORY q;
+       SPOOL_R_GETPRINTPROCESSORDIRECTORY r;
+       int level = 1;
+       WERROR result = W_ERROR(ERRgeneral);
+       NEW_BUFFER buffer;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+       init_buffer(&buffer, offered, mem_ctx);
+
+       make_spoolss_q_getprintprocessordirectory(
+               &q, name, environment, level, &buffer, offered);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_getprintprocessordirectory("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SPOOLSS_GETPRINTPROCESSORDIRECTORY,
+                             &qbuf, &rbuf))
+               goto done;
+               
+       /* Unmarshall response */
+               
+       if (!spoolss_io_r_getprintprocessordirectory("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+               
+       result = r.status;
+
+       if (needed)
+               *needed = r.needed;
+
+       if (W_ERROR_IS_OK(result))
+               fstrcpy(procdir, "Not implemented!");
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/** Add a form to a printer.
+ *
+ * @param cli              Pointer to client state structure which is open
+ *                         on the SPOOLSS pipe.
+ * @param mem_ctx          Pointer to an initialised talloc context.
+ *
+ * @param handle           Policy handle opened with cli_spoolss_open_printer_ex
+ *                         or cli_spoolss_addprinterex.
+ * @param level            Form info level to add - should always be 1.
+ * @param form             A pointer to the form to be added.
+ *
+ */
+
+WERROR cli_spoolss_addform(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                          POLICY_HND *handle, uint32 level, FORM *form)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_ADDFORM q;
+       SPOOL_R_ADDFORM r;
+       WERROR result = W_ERROR(ERRgeneral);
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+        make_spoolss_q_addform(&q, handle, level, form);
+       
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_addform("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SPOOLSS_ADDFORM, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_addform("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       result = r.status;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/** Set a form on a printer.
+ *
+ * @param cli              Pointer to client state structure which is open
+ *                         on the SPOOLSS pipe.
+ * @param mem_ctx          Pointer to an initialised talloc context.
+ *
+ * @param handle           Policy handle opened with cli_spoolss_open_printer_ex 
+ *                         or cli_spoolss_addprinterex.
+ * @param level            Form info level to set - should always be 1.
+ * @param form             A pointer to the form to be set.
+ *
+ */
+
+WERROR cli_spoolss_setform(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                          POLICY_HND *handle, uint32 level, char *form_name,
+                          FORM *form)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_SETFORM q;
+       SPOOL_R_SETFORM r;
+       WERROR result = W_ERROR(ERRgeneral);
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+        make_spoolss_q_setform(&q, handle, level, form_name, form);
+       
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_setform("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SPOOLSS_SETFORM, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_setform("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       result = r.status;
+
+       if (!W_ERROR_IS_OK(result))
+               goto done;
+
+
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/** Get a form on a printer.
+ *
+ * @param cli              Pointer to client state structure which is open
+ *                         on the SPOOLSS pipe.
+ * @param mem_ctx          Pointer to an initialised talloc context.
+ *
+ * @param handle           Policy handle opened with cli_spoolss_open_printer_ex 
+ *                         or cli_spoolss_addprinterex.
+ * @param formname         Name of the form to get
+ * @param level            Form info level to get - should always be 1.
+ *
+ */
+
+WERROR cli_spoolss_getform(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                          uint32 offered, uint32 *needed,
+                          POLICY_HND *handle, char *formname, uint32 level, 
+                          FORM_1 *form)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_GETFORM q;
+       SPOOL_R_GETFORM r;
+       WERROR result = W_ERROR(ERRgeneral);
+       NEW_BUFFER buffer;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       init_buffer(&buffer, offered, mem_ctx);
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+        make_spoolss_q_getform(&q, handle, formname, level, &buffer, offered);
+       
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_getform("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SPOOLSS_GETFORM, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_getform("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       result = r.status;
+
+       if (needed)
+               *needed = r.needed;
+
+       if (W_ERROR_IS_OK(result)) 
+               smb_io_form_1("", r.buffer, form, 0);
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/** Delete a form on a printer.
+ *
+ * @param cli              Pointer to client state structure which is open
+ *                         on the SPOOLSS pipe.
+ * @param mem_ctx          Pointer to an initialised talloc context.
+ *
+ * @param handle           Policy handle opened with cli_spoolss_open_printer_ex 
+ *                         or cli_spoolss_addprinterex.
+ * @param form             The name of the form to delete.
+ *
+ */
+
+WERROR cli_spoolss_deleteform(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                             POLICY_HND *handle, char *form_name)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_DELETEFORM q;
+       SPOOL_R_DELETEFORM r;
+       WERROR result = W_ERROR(ERRgeneral);
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+        make_spoolss_q_deleteform(&q, handle, form_name);
+       
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_deleteform("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SPOOLSS_DELETEFORM, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_deleteform("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       result = r.status;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+static void decode_forms_1(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, 
+                          uint32 num_forms, FORM_1 **forms)
+{
+       int i;
+
+       *forms = (FORM_1 *)talloc(mem_ctx, num_forms * sizeof(FORM_1));
+       buffer->prs.data_offset = 0;
+
+       for (i = 0; i < num_forms; i++)
+               smb_io_form_1("", buffer, &((*forms)[i]), 0);
+}
+
+/** Enumerate forms
+ *
+ * @param cli              Pointer to client state structure which is open
+ *                         on the SPOOLSS pipe.
+ * @param mem_ctx          Pointer to an initialised talloc context.
+ *
+ * @param offered          Buffer size offered in the request.
+ * @param needed           Number of bytes needed to complete the request.
+ *                         may be NULL.
+ *                         or cli_spoolss_addprinterex.
+ * @param level            Form info level to get - should always be 1.
+ * @param handle           Open policy handle
+ *
+ */
+
+WERROR cli_spoolss_enumforms(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                            uint32 offered, uint32 *needed,
+                            POLICY_HND *handle, int level, uint32 *num_forms,
+                            FORM_1 **forms)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_ENUMFORMS q;
+       SPOOL_R_ENUMFORMS r;
+       WERROR result = W_ERROR(ERRgeneral);
+       NEW_BUFFER buffer;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       init_buffer(&buffer, offered, mem_ctx);
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+        make_spoolss_q_enumforms(&q, handle, level, &buffer, offered);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_enumforms("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SPOOLSS_ENUMFORMS, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_enumforms("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       result = r.status;
+
+       if (needed)
+               *needed = r.needed;
+
+       if (num_forms)
+               *num_forms = r.numofforms;
+
+       decode_forms_1(mem_ctx, r.buffer, *num_forms, forms);
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+static void decode_jobs_1(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, 
+                         uint32 num_jobs, JOB_INFO_1 **jobs)
+{
+       uint32 i;
+
+       *jobs = (JOB_INFO_1 *)talloc(mem_ctx, num_jobs * sizeof(JOB_INFO_1));
+       buffer->prs.data_offset = 0;
+
+       for (i = 0; i < num_jobs; i++) 
+               smb_io_job_info_1("", buffer, &((*jobs)[i]), 0);
+}
+
+static void decode_jobs_2(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, 
+                         uint32 num_jobs, JOB_INFO_2 **jobs)
+{
+       uint32 i;
+
+       *jobs = (JOB_INFO_2 *)talloc(mem_ctx, num_jobs * sizeof(JOB_INFO_2));
+       buffer->prs.data_offset = 0;
+
+       for (i = 0; i < num_jobs; i++) 
+               smb_io_job_info_2("", buffer, &((*jobs)[i]), 0);
+}
+
+/* Enumerate jobs */
+
+WERROR cli_spoolss_enumjobs(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                           uint32 offered, uint32 *needed,
+                           POLICY_HND *hnd, uint32 level, uint32 firstjob, 
+                           uint32 num_jobs, uint32 *returned, JOB_INFO_CTR *ctr)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_ENUMJOBS q;
+       SPOOL_R_ENUMJOBS r;
+       WERROR result = W_ERROR(ERRgeneral);
+       NEW_BUFFER buffer;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       init_buffer(&buffer, offered, mem_ctx);
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+        make_spoolss_q_enumjobs(&q, hnd, firstjob, num_jobs, level, &buffer, 
+                               offered);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_enumjobs("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SPOOLSS_ENUMJOBS, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_enumjobs("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       result = r.status;
+
+       if (needed)
+               *needed = r.needed;
+
+       if (!W_ERROR_IS_OK(r.status))
+               goto done;
+
+       *returned = r.returned;
+
+       switch(level) {
+       case 1:
+               decode_jobs_1(mem_ctx, r.buffer, r.returned,
+                               ctr->job.job_info_1);
+               break;
+       case 2:
+               decode_jobs_2(mem_ctx, r.buffer, r.returned,
+                               ctr->job.job_info_2);
+               break;
+       default:
+               DEBUG(3, ("unsupported info level %d", level));
+               break;
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Set job */
+
+WERROR cli_spoolss_setjob(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                         POLICY_HND *hnd, uint32 jobid, uint32 level, 
+                         uint32 command)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_SETJOB q;
+       SPOOL_R_SETJOB r;
+       WERROR result = W_ERROR(ERRgeneral);
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+        make_spoolss_q_setjob(&q, hnd, jobid, level, command);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_setjob("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SPOOLSS_SETJOB, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_setjob("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       result = r.status;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Get job */
+
+WERROR cli_spoolss_getjob(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                         uint32 offered, uint32 *needed,
+                         POLICY_HND *hnd, uint32 jobid, uint32 level,
+                         JOB_INFO_CTR *ctr)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_GETJOB q;
+       SPOOL_R_GETJOB r;
+       WERROR result = W_ERROR(ERRgeneral);
+       NEW_BUFFER buffer;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       init_buffer(&buffer, offered, mem_ctx);
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+        make_spoolss_q_getjob(&q, hnd, jobid, level, &buffer, offered);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_getjob("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SPOOLSS_GETJOB, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_getjob("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       result = r.status;
+
+       if (needed)
+               *needed = r.needed;
+
+       if (!W_ERROR_IS_OK(r.status))
+               goto done;
+
+       switch(level) {
+       case 1:
+               decode_jobs_1(mem_ctx, r.buffer, 1, ctr->job.job_info_1);
+               break;
+       case 2:
+               decode_jobs_2(mem_ctx, r.buffer, 1, ctr->job.job_info_2);
+               break;
+       default:
+               DEBUG(3, ("unsupported info level %d", level));
+               break;
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Startpageprinter.  Sent to notify the spooler when a page is about to be
+   sent to a printer. */ 
+
+WERROR cli_spoolss_startpageprinter(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                   POLICY_HND *hnd)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_STARTPAGEPRINTER q;
+       SPOOL_R_STARTPAGEPRINTER r;
+       WERROR result = W_ERROR(ERRgeneral);
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+        make_spoolss_q_startpageprinter(&q, hnd);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_startpageprinter("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SPOOLSS_STARTPAGEPRINTER, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_startpageprinter("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       result = r.status;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Endpageprinter.  Sent to notify the spooler when a page has finished
+   being sent to a printer. */
+
+WERROR cli_spoolss_endpageprinter(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                 POLICY_HND *hnd)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_ENDPAGEPRINTER q;
+       SPOOL_R_ENDPAGEPRINTER r;
+       WERROR result = W_ERROR(ERRgeneral);
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+        make_spoolss_q_endpageprinter(&q, hnd);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_endpageprinter("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SPOOLSS_ENDPAGEPRINTER, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_endpageprinter("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       result = r.status;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Startdocprinter.  Sent to notify the spooler that a document is about
+   to be spooled for printing. */
+
+WERROR cli_spoolss_startdocprinter(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                  POLICY_HND *hnd, char *docname, 
+                                  char *outputfile, char *datatype, 
+                                  uint32 *jobid)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_STARTDOCPRINTER q;
+       SPOOL_R_STARTDOCPRINTER r;
+       WERROR result = W_ERROR(ERRgeneral);
+       uint32 level = 1;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+        make_spoolss_q_startdocprinter(&q, hnd, level, docname, outputfile, 
+                                      datatype);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_startdocprinter("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SPOOLSS_STARTDOCPRINTER, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_startdocprinter("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       result = r.status;
+       
+       if (W_ERROR_IS_OK(result))
+               *jobid = r.jobid;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Enddocprinter.  Sent to notify the spooler that a document has finished
+   being spooled. */
+
+WERROR cli_spoolss_enddocprinter(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                 POLICY_HND *hnd)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_ENDDOCPRINTER q;
+       SPOOL_R_ENDDOCPRINTER r;
+       WERROR result = W_ERROR(ERRgeneral);
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+        make_spoolss_q_enddocprinter(&q, hnd);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_enddocprinter("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SPOOLSS_ENDDOCPRINTER, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_enddocprinter("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       result = r.status;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Get printer data */
+
+WERROR cli_spoolss_getprinterdata(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                 uint32 offered, uint32 *needed,
+                                 POLICY_HND *hnd, char *valuename, 
+                                 uint32 *data_type, char **data, 
+                                 uint32 *data_size)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_GETPRINTERDATA q;
+       SPOOL_R_GETPRINTERDATA r;
+       WERROR result = W_ERROR(ERRgeneral);
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+        make_spoolss_q_getprinterdata(&q, hnd, valuename, offered);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_getprinterdata("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SPOOLSS_GETPRINTERDATA, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_getprinterdata("", &r, &rbuf, 0))
+               goto done;
+       
+       result = r.status;
+
+       if (needed)
+               *needed = r.needed;
+
+       if (!W_ERROR_IS_OK(r.status))
+               goto done;      
+
+       /* Return output parameters */
+
+       if (data_type)
+               *data_type = r.type;
+
+       if (data) {
+               *data = (char *)talloc(mem_ctx, r.needed);
+               memcpy(*data, r.data, r.needed);
+       }
+
+       if (data_size) 
+               *data_size = r.needed;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Set printer data */
+
+WERROR cli_spoolss_setprinterdata(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                 POLICY_HND *hnd, char *value, 
+                                 uint32 data_type, char *data, 
+                                 uint32 data_size)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_SETPRINTERDATA q;
+       SPOOL_R_SETPRINTERDATA r;
+       WERROR result = W_ERROR(ERRgeneral);
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+        make_spoolss_q_setprinterdata(&q, hnd, value, data, data_size);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_setprinterdata("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SPOOLSS_SETPRINTERDATA, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_setprinterdata("", &r, &rbuf, 0))
+               goto done;
+       
+       result = r.status;
+
+       if (!W_ERROR_IS_OK(r.status))
+               goto done;      
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Enum printer data */
+
+WERROR cli_spoolss_enumprinterdata(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                  POLICY_HND *hnd, uint32 ndx,
+                                  uint32 value_offered, uint32 data_offered,
+                                  uint32 *value_needed, uint32 *data_needed,
+                                  char **value, uint32 *data_type, char **data, 
+                                  uint32 *data_size)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_ENUMPRINTERDATA q;
+       SPOOL_R_ENUMPRINTERDATA r;
+       WERROR result = W_ERROR(ERRgeneral);
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+        make_spoolss_q_enumprinterdata(&q, hnd, ndx, value_offered, data_offered);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_enumprinterdata("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SPOOLSS_ENUMPRINTERDATA, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_enumprinterdata("", &r, &rbuf, 0))
+               goto done;
+       
+       result = r.status;
+
+       if (!W_ERROR_IS_OK(r.status))
+               goto done;
+
+       /* Return data */
+
+       if (value_needed)
+               *value_needed = r.realvaluesize;
+
+       if (data_needed)
+               *data_needed = r.realdatasize;
+
+       if (data_type) 
+               *data_type = r.type;
+
+       if (value) {
+               fstring the_value;
+
+               rpcstr_pull(the_value, r.value, sizeof(the_value), -1, 
+                           STR_TERMINATE);
+               
+               *value = talloc_strdup(mem_ctx, the_value);
+       }
+
+       if (data)
+               *data = talloc_memdup(mem_ctx, r.data, r.realdatasize);
+
+       if (data_size)
+               *data_size = r.realdatasize;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Write data to printer */
+
+WERROR cli_spoolss_writeprinter(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                               POLICY_HND *hnd, uint32 data_size, char *data,
+                               uint32 *num_written)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_WRITEPRINTER q;
+       SPOOL_R_WRITEPRINTER r;
+       WERROR result = W_ERROR(ERRgeneral);
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+        make_spoolss_q_writeprinter(&q, hnd, data_size, data);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_writeprinter("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SPOOLSS_WRITEPRINTER, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_writeprinter("", &r, &rbuf, 0))
+               goto done;
+       
+       result = r.status;
+
+       if (!W_ERROR_IS_OK(r.status))
+               goto done;      
+
+       if (num_written)
+               *num_written = r.buffer_written;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Delete printer data */
+
+WERROR cli_spoolss_deleteprinterdata(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                    POLICY_HND *hnd, char *valuename)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_DELETEPRINTERDATA q;
+       SPOOL_R_DELETEPRINTERDATA r;
+       WERROR result = W_ERROR(ERRgeneral);
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+        make_spoolss_q_deleteprinterdata(&q, hnd, valuename);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_deleteprinterdata("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SPOOLSS_DELETEPRINTERDATA, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!spoolss_io_r_deleteprinterdata("", &r, &rbuf, 0))
+               goto done;
+       
+       result = r.status;
+
+       if (!W_ERROR_IS_OK(r.status))
+               goto done;      
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/** @} **/
diff --git a/source3/libsmb/cli_spoolss_notify.c b/source3/libsmb/cli_spoolss_notify.c
new file mode 100644 (file)
index 0000000..922b0fb
--- /dev/null
@@ -0,0 +1,223 @@
+/* 
+   Unix SMB/CIFS implementation.
+   RPC pipe client
+
+   Copyright (C) Gerald Carter                2001-2002,
+   Copyright (C) Tim Potter                   2000-2002,
+   Copyright (C) Andrew Tridgell              1994-2000,
+   Copyright (C) Luke Kenneth Casson Leighton 1996-2000,
+   Copyright (C) Jean-Francois Micouleau      1999-2000.
+
+   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., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+
+/*
+ * SPOOLSS Client RPC's used by servers as the notification
+ * back channel.
+ */
+
+/* Send a ReplyOpenPrinter request.  This rpc is made by the printer
+   server to the printer client in response to a rffpcnex request.
+   The rrfpcnex request names a printer and a handle (the printerlocal
+   value) and this rpc establishes a back-channel over which printer
+   notifications are performed. */
+
+WERROR cli_spoolss_reply_open_printer(struct cli_state *cli, TALLOC_CTX *mem_ctx, 
+                                     char *printer, uint32 printerlocal, uint32 type, 
+                                     POLICY_HND *handle)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_REPLYOPENPRINTER q;
+       SPOOL_R_REPLYOPENPRINTER r;
+       WERROR result = W_ERROR(ERRgeneral);
+       
+       /* Initialise input parameters */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       make_spoolss_q_replyopenprinter(&q, printer, printerlocal, type);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_replyopenprinter("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req (cli, SPOOLSS_REPLYOPENPRINTER, &qbuf, &rbuf)) 
+               goto done;
+       
+       /* Unmarshall response */
+       
+       if (!spoolss_io_r_replyopenprinter("", &r, &rbuf, 0))
+               goto done;
+               
+       /* Return result */
+
+       memcpy(handle, &r.handle, sizeof(r.handle));
+       result = r.status;
+
+done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/* Close a back-channel notification connection */
+
+WERROR cli_spoolss_reply_close_printer(struct cli_state *cli, TALLOC_CTX *mem_ctx, 
+                                      POLICY_HND *handle)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_REPLYCLOSEPRINTER q;
+       SPOOL_R_REPLYCLOSEPRINTER r;
+       WERROR result = W_ERROR(ERRgeneral);
+
+       /* Initialise input parameters */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       make_spoolss_q_reply_closeprinter(&q, handle);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_replycloseprinter("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req (cli, SPOOLSS_REPLYCLOSEPRINTER, &qbuf, &rbuf)) 
+               goto done;
+       
+       /* Unmarshall response */
+       
+       if (!spoolss_io_r_replycloseprinter("", &r, &rbuf, 0))
+               goto done;
+               
+       /* Return result */
+
+       result = r.status;
+       
+done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+/*********************************************************************
+ This SPOOLSS_ROUTERREPLYPRINTER function is used to send a change 
+ notification event when the registration **did not** use 
+ SPOOL_NOTIFY_OPTION_TYPE structure to specify the events to monitor.
+ Also see cli_spolss_reply_rrpcn()
+ *********************************************************************/
+WERROR cli_spoolss_routerreplyprinter(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                     POLICY_HND *pol, uint32 condition, uint32 change_id)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_ROUTERREPLYPRINTER q;
+        SPOOL_R_ROUTERREPLYPRINTER r;
+       WERROR result = W_ERROR(ERRgeneral);
+
+       /* Initialise input parameters */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       make_spoolss_q_routerreplyprinter(&q, pol, condition, change_id);
+
+       /* Marshall data and send request */
+
+       if (!spoolss_io_q_routerreplyprinter("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req (cli, SPOOLSS_ROUTERREPLYPRINTER, &qbuf, &rbuf)) 
+               goto done;
+       
+       /* Unmarshall response */
+       
+       if (!spoolss_io_r_routerreplyprinter("", &r, &rbuf, 0))
+               goto done;
+
+       /* Return output parameters */
+
+       result = r.status;
+
+done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;  
+}
+
+/*********************************************************************
+ This SPOOLSS_REPLY_RRPCN function is used to send a change 
+ notification event when the registration **did** use 
+ SPOOL_NOTIFY_OPTION_TYPE structure to specify the events to monitor
+ Also see cli_spoolss_routereplyprinter()
+ *********************************************************************/
+
+WERROR cli_spoolss_rrpcn(struct cli_state *cli, TALLOC_CTX *mem_ctx, 
+                        POLICY_HND *pol, uint32 notify_data_len,
+                        SPOOL_NOTIFY_INFO_DATA *notify_data,
+                        uint32 change_low, uint32 change_high)
+{
+       prs_struct qbuf, rbuf;
+       SPOOL_Q_REPLY_RRPCN q;
+       SPOOL_R_REPLY_RRPCN r;
+       WERROR result = W_ERROR(ERRgeneral);
+       SPOOL_NOTIFY_INFO       notify_info;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       ZERO_STRUCT(notify_info);
+
+       /* Initialise input parameters */
+
+       notify_info.version = 0x2;
+       notify_info.flags   = 0x00020000;       /* ?? */
+       notify_info.count   = notify_data_len;
+       notify_info.data    = notify_data;
+
+       /* create and send a MSRPC command with api  */
+       /* store the parameters */
+
+       make_spoolss_q_reply_rrpcn(&q, pol, change_low, change_high, 
+                                  &notify_info);
+
+       /* Marshall data and send request */
+
+       if(!spoolss_io_q_reply_rrpcn("", &q,  &qbuf, 0) ||
+          !rpc_api_pipe_req(cli, SPOOLSS_RRPCN, &qbuf, &rbuf)) 
+               goto done;
+
+       /* Unmarshall response */
+       
+       if(!spoolss_io_r_reply_rrpcn("", &r, &rbuf, 0))
+               goto done;
+
+       if (r.unknown0 == 0x00080000)
+               DEBUG(8,("cli_spoolss_reply_rrpcn: I think the spooler resonded that the notification was ignored.\n"));
+       
+       result = r.status;
+
+done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
diff --git a/source3/libsmb/cli_srvsvc.c b/source3/libsmb/cli_srvsvc.c
new file mode 100644 (file)
index 0000000..2dc12d7
--- /dev/null
@@ -0,0 +1,442 @@
+/* 
+   Unix SMB/CIFS implementation.
+   NT Domain Authentication SMB / MSRPC client
+   Copyright (C) Andrew Tridgell 1994-2000
+   Copyright (C) Luke Kenneth Casson Leighton 1996-2000
+   Copyright (C) Tim Potter 2001
+   Copyright (C) Jim McDonough 2002
+   
+   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., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+
+NTSTATUS cli_srvsvc_net_srv_get_info(struct cli_state *cli, 
+                                     TALLOC_CTX *mem_ctx,
+                                     uint32 switch_value, SRV_INFO_CTR *ctr)
+{
+       prs_struct qbuf, rbuf;
+       SRV_Q_NET_SRV_GET_INFO q;
+       SRV_R_NET_SRV_GET_INFO r;
+       NTSTATUS result;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+       init_srv_q_net_srv_get_info(&q, cli->srv_name_slash, switch_value);
+
+       /* Marshall data and send request */
+
+       if (!srv_io_q_net_srv_get_info("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SRV_NET_SRV_GET_INFO, &qbuf, &rbuf)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       /* Unmarshall response */
+
+       r.ctr = ctr;
+
+       if (!srv_io_r_net_srv_get_info("", &r, &rbuf, 0)) {
+               result = NT_STATUS_UNSUCCESSFUL;
+               goto done;
+       }
+
+       result = werror_to_ntstatus(r.status);
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+WERROR cli_srvsvc_net_share_enum(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                uint32 info_level, SRV_SHARE_INFO_CTR *ctr,
+                                int preferred_len, ENUM_HND *hnd)
+{
+       prs_struct qbuf, rbuf;
+       SRV_Q_NET_SHARE_ENUM q;
+       SRV_R_NET_SHARE_ENUM r;
+       WERROR result = W_ERROR(ERRgeneral);
+       int i;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+       init_srv_q_net_share_enum(
+               &q, cli->srv_name_slash, info_level, preferred_len, hnd);
+
+       /* Marshall data and send request */
+
+       if (!srv_io_q_net_share_enum("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SRV_NET_SHARE_ENUM_ALL, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!srv_io_r_net_share_enum("", &r, &rbuf, 0))
+               goto done;
+
+       result = r.status;
+
+       if (!W_ERROR_IS_OK(result))
+               goto done;
+
+       /* Oh yuck yuck yuck - we have to copy all the info out of the
+          SRV_SHARE_INFO_CTR in the SRV_R_NET_SHARE_ENUM as when we do a
+          prs_mem_free() it will all be invalidated.  The various share
+          info structures suck badly too.  This really is gross. */
+
+       ZERO_STRUCTP(ctr);
+
+       ctr->info_level = info_level;
+       ctr->num_entries = r.ctr.num_entries;
+
+       switch(info_level) {
+       case 1:
+               ctr->share.info1 = (SRV_SHARE_INFO_1 *)talloc(
+                       mem_ctx, sizeof(SRV_SHARE_INFO_1) * ctr->num_entries);
+               
+               memset(ctr->share.info1, 0, sizeof(SRV_SHARE_INFO_1));
+
+               for (i = 0; i < ctr->num_entries; i++) {
+                       SRV_SHARE_INFO_1 *info1 = &ctr->share.info1[i];
+                       char *s;
+                       
+                       /* Copy pointer crap */
+
+                       memcpy(&info1->info_1, &r.ctr.share.info1[i].info_1, 
+                              sizeof(SH_INFO_1));
+
+                       /* Duplicate strings */
+
+                       s = unistr2_tdup(mem_ctx, &r.ctr.share.info1[i].info_1_str.uni_netname);
+                       if (s)
+                               init_unistr2(&info1->info_1_str.uni_netname, s, strlen(s) + 1);
+               
+                       s = unistr2_tdup(mem_ctx, &r.ctr.share.info1[i].info_1_str.uni_remark);
+                       if (s)
+                               init_unistr2(&info1->info_1_str.uni_remark, s, strlen(s) + 1);
+
+               }               
+
+               break;
+       case 2:
+               ctr->share.info2 = (SRV_SHARE_INFO_2 *)talloc(
+                       mem_ctx, sizeof(SRV_SHARE_INFO_2) * ctr->num_entries);
+               
+               memset(ctr->share.info2, 0, sizeof(SRV_SHARE_INFO_2));
+
+               for (i = 0; i < ctr->num_entries; i++) {
+                       SRV_SHARE_INFO_2 *info2 = &ctr->share.info2[i];
+                       char *s;
+                       
+                       /* Copy pointer crap */
+
+                       memcpy(&info2->info_2, &r.ctr.share.info2[i].info_2, 
+                              sizeof(SH_INFO_2));
+
+                       /* Duplicate strings */
+
+                       s = unistr2_tdup(mem_ctx, &r.ctr.share.info2[i].info_2_str.uni_netname);
+                       if (s)
+                               init_unistr2(&info2->info_2_str.uni_netname, s, strlen(s) + 1);
+
+                       s = unistr2_tdup(mem_ctx, &r.ctr.share.info2[i].info_2_str.uni_remark);
+                       if (s)
+                               init_unistr2(&info2->info_2_str.uni_remark, s, strlen(s) + 1);
+
+                       s = unistr2_tdup(mem_ctx, &r.ctr.share.info2[i].info_2_str.uni_path);
+                       if (s)
+                               init_unistr2(&info2->info_2_str.uni_path, s, strlen(s) + 1);
+
+                       s = unistr2_tdup(mem_ctx, &r.ctr.share.info2[i].info_2_str.uni_passwd);
+                       if (s)
+                               init_unistr2(&info2->info_2_str.uni_passwd, s, strlen(s) + 1);
+               }
+               break;
+       }
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+WERROR cli_srvsvc_net_share_del(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                               const char *sharename)
+{
+       prs_struct qbuf, rbuf;
+       SRV_Q_NET_SHARE_DEL q;
+       SRV_R_NET_SHARE_DEL r;
+       WERROR result = W_ERROR(ERRgeneral);
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+       init_srv_q_net_share_del(&q, cli->srv_name_slash, sharename);
+
+       /* Marshall data and send request */
+
+       if (!srv_io_q_net_share_del("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SRV_NET_SHARE_DEL, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!srv_io_r_net_share_del("", &r, &rbuf, 0))
+               goto done;
+
+       result = r.status;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+WERROR cli_srvsvc_net_share_add(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                               char *netname, uint32 type, char *remark, 
+                               uint32 perms, uint32 max_uses, uint32 num_uses,
+                               char *path, char *passwd)
+{
+       prs_struct qbuf, rbuf;
+       SRV_Q_NET_SHARE_ADD q;
+       SRV_R_NET_SHARE_ADD r;
+       WERROR result = W_ERROR(ERRgeneral);
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       init_srv_q_net_share_add(&q,cli->srv_name_slash, netname, type, remark,
+                                perms, max_uses, num_uses, path, passwd);
+
+       /* Marshall data and send request */
+
+       if (!srv_io_q_net_share_add("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SRV_NET_SHARE_ADD, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!srv_io_r_net_share_add("", &r, &rbuf, 0))
+               goto done;
+
+       result = r.status;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;  
+}
+
+WERROR cli_srvsvc_net_remote_tod(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                char *server, TIME_OF_DAY_INFO *tod)
+{
+       prs_struct qbuf, rbuf;
+       SRV_Q_NET_REMOTE_TOD q;
+       SRV_R_NET_REMOTE_TOD r;
+       WERROR result = W_ERROR(ERRgeneral);
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+       init_srv_q_net_remote_tod(&q, cli->srv_name_slash);
+
+       /* Marshall data and send request */
+
+       if (!srv_io_q_net_remote_tod("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SRV_NET_REMOTE_TOD, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       r.tod = tod;
+
+       if (!srv_io_r_net_remote_tod("", &r, &rbuf, 0))
+               goto done;
+
+       result = r.status;
+
+       if (!W_ERROR_IS_OK(result))
+               goto done;
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;  
+}
+
+WERROR cli_srvsvc_net_file_enum(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                               uint32 file_level, char *user_name,
+                               SRV_FILE_INFO_CTR *ctr, int preferred_len,
+                               ENUM_HND *hnd)
+{
+       prs_struct qbuf, rbuf;
+       SRV_Q_NET_FILE_ENUM q;
+       SRV_R_NET_FILE_ENUM r;
+       WERROR result = W_ERROR(ERRgeneral);
+       int i;
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+       init_srv_q_net_file_enum(&q, cli->srv_name_slash, NULL, user_name, 
+                                file_level, ctr, preferred_len, hnd);
+
+       /* Marshall data and send request */
+
+       if (!srv_io_q_net_file_enum("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SRV_NET_FILE_ENUM, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!srv_io_r_net_file_enum("", &r, &rbuf, 0))
+               goto done;
+
+       result = r.status;
+
+       if (!W_ERROR_IS_OK(result))
+               goto done;
+
+       /* copy the data over to the ctr */
+
+       ZERO_STRUCTP(ctr);
+
+       ctr->switch_value = file_level;
+
+       ctr->num_entries = ctr->num_entries2 = r.ctr.num_entries;
+       
+       switch(file_level) {
+       case 3:
+               ctr->file.info3 = (SRV_FILE_INFO_3 *)talloc(
+                       mem_ctx, sizeof(SRV_FILE_INFO_3) * ctr->num_entries);
+
+               memset(ctr->file.info3, 0, 
+                      sizeof(SRV_FILE_INFO_3) * ctr->num_entries);
+
+               for (i = 0; i < r.ctr.num_entries; i++) {
+                       SRV_FILE_INFO_3 *info3 = &ctr->file.info3[i];
+                       char *s;
+                       
+                       /* Copy pointer crap */
+
+                       memcpy(&info3->info_3, &r.ctr.file.info3[i].info_3, 
+                              sizeof(FILE_INFO_3));
+
+                       /* Duplicate strings */
+
+                       s = unistr2_tdup(mem_ctx, &r.ctr.file.info3[i].info_3_str.uni_path_name);
+                       if (s)
+                               init_unistr2(&info3->info_3_str.uni_path_name, s, strlen(s) + 1);
+               
+                       s = unistr2_tdup(mem_ctx, &r.ctr.file.info3[i].info_3_str.uni_user_name);
+                       if (s)
+                               init_unistr2(&info3->info_3_str.uni_user_name, s, strlen(s) + 1);
+
+               }               
+
+               break;
+       }
+
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+
+       return result;
+}
+
+WERROR cli_srvsvc_net_file_close(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                                uint32 file_id)
+{
+       prs_struct qbuf, rbuf;
+       SRV_Q_NET_FILE_CLOSE q;
+       SRV_R_NET_FILE_CLOSE r;
+       WERROR result = W_ERROR(ERRgeneral);
+
+       ZERO_STRUCT(q);
+       ZERO_STRUCT(r);
+
+       /* Initialise parse structures */
+
+       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       /* Initialise input parameters */
+
+       init_srv_q_net_file_close(&q, cli->srv_name_slash, file_id);
+
+       /* Marshall data and send request */
+
+       if (!srv_io_q_net_file_close("", &q, &qbuf, 0) ||
+           !rpc_api_pipe_req(cli, SRV_NET_FILE_CLOSE, &qbuf, &rbuf))
+               goto done;
+
+       /* Unmarshall response */
+
+       if (!srv_io_r_net_file_close("", &r, &rbuf, 0))
+               goto done;
+
+       result = r.status;
+ done:
+       prs_mem_free(&qbuf);
+       prs_mem_free(&rbuf);
+       return result;
+}
diff --git a/source3/libsmb/cli_wkssvc.c b/source3/libsmb/cli_wkssvc.c
new file mode 100644 (file)
index 0000000..97b948b
--- /dev/null
@@ -0,0 +1,93 @@
+/* 
+   Unix SMB/CIFS implementation.
+   NT Domain Authentication SMB / MSRPC client
+   Copyright (C) Andrew Tridgell 1994-2000
+   Copyright (C) Luke Kenneth Casson Leighton 1996-2000
+   Copyright (C) Tim Potter 2001
+   Copytight (C) Rafal Szczesniak 2002
+   
+   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., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+
+/**
+ * WksQueryInfo rpc call (like query for server's capabilities)
+ *
+ * @param initialised client structure with \PIPE\wkssvc opened
+ * @param mem_ctx memory context assigned to this rpc binding
+ * @param wks100 WksQueryInfo structure
+ *
+ * @return NTSTATUS of rpc call
+ */
+NTSTATUS cli_wks_query_info(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+                           WKS_INFO_100 *wks100)
+{
+       prs_struct buf;
+       prs_struct rbuf;
+       WKS_Q_QUERY_INFO q_o;
+       WKS_R_QUERY_INFO r_o;
+
+       if (cli == NULL || wks100 == NULL)
+               return NT_STATUS_UNSUCCESSFUL;
+
+       /* init rpc parse structures */
+       prs_init(&buf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+       DEBUG(4, ("WksQueryInfo\n"));
+       
+       /* init query structure with rpc call arguments */
+       init_wks_q_query_info(&q_o, cli->desthost, 100);
+       
+       /* marshall data */
+       if (!wks_io_q_query_info("", &q_o, &buf, 0)) {
+               prs_mem_free(&buf);
+               prs_mem_free(&rbuf);
+               return NT_STATUS_UNSUCCESSFUL;
+       }
+       
+       /* actual rpc call over \PIPE\wkssvc */
+       if (!rpc_api_pipe_req(cli, WKS_QUERY_INFO, &buf, &rbuf)) {
+               prs_mem_free(&buf);
+               prs_mem_free(&rbuf);
+               return NT_STATUS_UNSUCCESSFUL;
+       }
+       
+       prs_mem_free(&buf);
+
+       r_o.wks100 = wks100;
+
+       /* get call results from response buffer */
+       if (!wks_io_r_query_info("", &r_o, &rbuf, 0)) {
+               prs_mem_free(&rbuf);
+               return NT_STATUS_UNSUCCESSFUL;
+       }
+       
+       /* check returnet status code */
+       if (NT_STATUS_IS_ERR(r_o.status)) {
+               /* report the error */
+               DEBUG(0,("WKS_R_QUERY_INFO: %s\n", nt_errstr(r_o.status)));
+               prs_mem_free(&rbuf);
+               return r_o.status;
+       }
+       
+       /* do clean up */
+       prs_mem_free(&rbuf);
+       
+       return NT_STATUS_OK;
+}
+
index 62acccdfb772001e03d3b328eef4c6acc1011dbe..93cf3d95db71e11b3f1078c2e4514fdfa0bcd3a5 100644 (file)
@@ -50,12 +50,14 @@ static BOOL cli_session_setup_lanman2(struct cli_state *cli, char *user,
        fstring pword;
        char *p;
 
-       if (passlen > sizeof(pword)-1)
+       if (passlen > sizeof(pword)-1) {
                return False;
+       }
 
        /* if in share level security then don't send a password now */
-       if (!(cli->sec_mode & NEGOTIATE_SECURITY_USER_LEVEL))
+       if (!(cli->sec_mode & NEGOTIATE_SECURITY_USER_LEVEL)) {
                passlen = 0;
+       }
 
        if (passlen > 0 && (cli->sec_mode & NEGOTIATE_SECURITY_CHALLENGE_RESPONSE) && passlen != 24) {
                /* Encrypted mode needed, and non encrypted password supplied. */
@@ -97,8 +99,9 @@ static BOOL cli_session_setup_lanman2(struct cli_state *cli, char *user,
 
        show_msg(cli->inbuf);
 
-       if (cli_is_error(cli))
+       if (cli_is_error(cli)) {
                return False;
+       }
        
        /* use the returned vuid from now on */
        cli->vuid = SVAL(cli->inbuf,smb_uid);   
@@ -115,14 +118,17 @@ static uint32 cli_session_setup_capabilities(struct cli_state *cli)
 {
        uint32 capabilities = CAP_NT_SMBS;
 
-       if (!cli->force_dos_errors)
+       if (!cli->force_dos_errors) {
                capabilities |= CAP_STATUS32;
+       }
 
-       if (cli->use_level_II_oplocks)
+       if (cli->use_level_II_oplocks) {
                capabilities |= CAP_LEVEL_II_OPLOCKS;
+       }
 
-       if (cli->capabilities & CAP_UNICODE)
+       if (cli->capabilities & CAP_UNICODE) {
                capabilities |= CAP_UNICODE;
+       }
 
        return capabilities;
 }
@@ -161,8 +167,9 @@ static BOOL cli_session_setup_guest(struct cli_state *cli)
        
        show_msg(cli->inbuf);
        
-       if (cli_is_error(cli))
+       if (cli_is_error(cli)) {
                return False;
+       }
 
        cli->vuid = SVAL(cli->inbuf,smb_uid);
 
@@ -216,8 +223,9 @@ static BOOL cli_session_setup_plaintext(struct cli_state *cli, char *user,
        
        show_msg(cli->inbuf);
        
-       if (cli_is_error(cli))
+       if (cli_is_error(cli)) {
                return False;
+       }
 
        cli->vuid = SVAL(cli->inbuf,smb_uid);
        p = smb_buf(cli->inbuf);
@@ -229,41 +237,15 @@ static BOOL cli_session_setup_plaintext(struct cli_state *cli, char *user,
        return True;
 }
 
-static void set_signing_on_cli (struct cli_state *cli, char* pass, uint8 response[24]) 
-{
-       uint8 zero_sig[8];
-       ZERO_STRUCT(zero_sig);
-
-       DEBUG(5, ("Server returned security sig:\n"));
-       dump_data(5, &cli->inbuf[smb_ss_field], 8);
-
-       if (cli->sign_info.use_smb_signing) {
-               DEBUG(5, ("smb signing already active on connection\n"));
-       } else if (memcmp(&cli->inbuf[smb_ss_field], zero_sig, 8) != 0) {
-
-               DEBUG(3, ("smb signing enabled!\n"));
-               cli->sign_info.use_smb_signing = True;
-               cli_calculate_mac_key(cli, pass, response);
-       } else {
-               DEBUG(5, ("smb signing NOT enabled!\n"));
-       }
-}
-
-static void set_temp_signing_on_cli(struct cli_state *cli) 
-{
-       if (cli->sign_info.negotiated_smb_signing)
-               cli->sign_info.temp_smb_signing = True;
-}
-
 
-/****************************************************************************
+/**
    do a NT1 NTLM/LM encrypted session setup
    @param cli client state to create do session setup on
    @param user username
    @param pass *either* cleartext password (passlen !=24) or LM response.
    @param ntpass NT response, implies ntpasslen >=24, implies pass is not clear
    @param workgroup The user's domain.
-****************************************************************************/
+*/
 
 static BOOL cli_session_setup_nt1(struct cli_state *cli, char *user, 
                                  char *pass, int passlen,
@@ -274,10 +256,11 @@ static BOOL cli_session_setup_nt1(struct cli_state *cli, char *user,
        uchar pword[24];
        uchar ntpword[24];
        char *p;
-       BOOL have_plaintext = False;
+       BOOL tried_signing = False;
 
-       if (passlen > sizeof(pword) || ntpasslen > sizeof(ntpword))
+       if (passlen > sizeof(pword) || ntpasslen > sizeof(ntpword)) {
                return False;
+       }
 
        if (passlen != 24) {
                /* non encrypted password supplied. Ignore ntpass. */
@@ -285,18 +268,19 @@ static BOOL cli_session_setup_nt1(struct cli_state *cli, char *user,
                ntpasslen = 24;
                SMBencrypt(pass,cli->secblob.data,pword);
                SMBNTencrypt(pass,cli->secblob.data,ntpword);
-
-               have_plaintext = True;
-               set_temp_signing_on_cli(cli);
+               if (!cli->sign_info.use_smb_signing && cli->sign_info.negotiated_smb_signing) {
+                       cli_calculate_mac_key(cli, pass, ntpword);
+                       tried_signing = True;
+               }
        } else {
-               /* pre-encrypted password supplied.  Only used for 
-                  security=server, can't do
+               /* pre-encrypted password supplied.  Only used for security=server, can't do
                   signing becouse we don't have oringial key */
                memcpy(pword, pass, 24);
-               if (ntpasslen == 24)
+               if (ntpasslen == 24) {
                        memcpy(ntpword, ntpass, 24);
-               else
+               } else {
                        ZERO_STRUCT(ntpword);
+               }
        }
 
        /* send a session setup command */
@@ -317,22 +301,31 @@ static BOOL cli_session_setup_nt1(struct cli_state *cli, char *user,
        p = smb_buf(cli->outbuf);
        memcpy(p,pword,passlen); p += passlen;
        memcpy(p,ntpword,ntpasslen); p += ntpasslen;
-       p += clistr_push(cli, p, user, -1, STR_TERMINATE);
-       p += clistr_push(cli, p, workgroup, -1, STR_TERMINATE);
+       p += clistr_push(cli, p, user, -1, STR_TERMINATE|STR_UPPER);
+       p += clistr_push(cli, p, workgroup, -1, STR_TERMINATE|STR_UPPER);
        p += clistr_push(cli, p, "Unix", -1, STR_TERMINATE);
        p += clistr_push(cli, p, "Samba", -1, STR_TERMINATE);
        cli_setup_bcc(cli, p);
 
-       if (!cli_send_smb(cli))
-               return False;
-
-       if (!cli_receive_smb(cli))
+       cli_send_smb(cli);
+       if (!cli_receive_smb(cli)) {
+               if (tried_signing) {
+                       /* We only use it if we have a successful non-guest connect */
+                       cli->sign_info.use_smb_signing = False;
+               }
                return False;
+       }
 
        show_msg(cli->inbuf);
 
-       if (cli_is_error(cli))
+       if (tried_signing && (cli_is_error(cli) || SVAL(cli->inbuf,smb_vwv2) /* guest */)) {
+               /* We only use it if we have a successful non-guest connect */
+               cli->sign_info.use_smb_signing = False;
+       }
+
+       if (cli_is_error(cli)) {
                return False;
+       }
 
        /* use the returned vuid from now on */
        cli->vuid = SVAL(cli->inbuf,smb_uid);
@@ -344,11 +337,6 @@ static BOOL cli_session_setup_nt1(struct cli_state *cli, char *user,
 
        fstrcpy(cli->user_name, user);
 
-       if (have_plaintext) {
-               /* Have plaintext orginal */
-               set_signing_on_cli(cli, pass, ntpword);
-       }
-
        return True;
 }
 
@@ -372,9 +360,6 @@ static DATA_BLOB cli_session_setup_blob(struct cli_state *cli, DATA_BLOB blob)
 
        set_message(cli->outbuf,12,0,True);
        SCVAL(cli->outbuf,smb_com,SMBsesssetupX);
-
-       set_temp_signing_on_cli(cli);
-
        cli_setup_packet(cli);
                        
        SCVAL(cli->outbuf,smb_vwv0,0xFF);
@@ -390,8 +375,8 @@ static DATA_BLOB cli_session_setup_blob(struct cli_state *cli, DATA_BLOB blob)
        p += clistr_push(cli, p, "Unix", -1, STR_TERMINATE);
        p += clistr_push(cli, p, "Samba", -1, STR_TERMINATE);
        cli_setup_bcc(cli, p);
-       cli_send_smb(cli);
 
+       cli_send_smb(cli);
        if (!cli_receive_smb(cli))
                return blob2;
 
@@ -419,6 +404,7 @@ static DATA_BLOB cli_session_setup_blob(struct cli_state *cli, DATA_BLOB blob)
        return blob2;
 }
 
+
 #ifdef HAVE_KRB5
 /****************************************************************************
  Do a spnego/kerberos encrypted session setup.
@@ -431,7 +417,7 @@ static BOOL cli_session_setup_kerberos(struct cli_state *cli, char *principal, c
        DEBUG(2,("Doing kerberos session setup\n"));
 
        /* generate the encapsulated kerberos5 ticket */
-       negTokenTarg = spnego_gen_negTokenTarg(principal, 0);
+       negTokenTarg = spnego_gen_negTokenTarg(cli, principal);
 
        if (!negTokenTarg.data) return False;
 
@@ -457,32 +443,28 @@ static BOOL cli_session_setup_kerberos(struct cli_state *cli, char *principal, c
 static BOOL cli_session_setup_ntlmssp(struct cli_state *cli, char *user, 
                                      char *pass, char *workgroup)
 {
-       DATA_BLOB msg1, struct_blob;
-       DATA_BLOB blob, chal1, chal2, auth, challenge_blob;
+       const char *mechs[] = {OID_NTLMSSP, NULL};
+       DATA_BLOB msg1;
+       DATA_BLOB blob, chal1, chal2, auth;
        uint8 challenge[8];
        uint8 nthash[24], lmhash[24], sess_key[16];
-       uint32 neg_flags, chal_flags, ntlmssp_command, unkn1, unkn2;
-       pstring server_domain;  /* FIX THIS, SHOULD be UCS2-LE */
+       uint32 neg_flags;
 
        neg_flags = NTLMSSP_NEGOTIATE_UNICODE | 
-               NTLMSSP_NEGOTIATE_128 | 
+               NTLMSSP_NEGOTIATE_LM_KEY | 
                NTLMSSP_NEGOTIATE_NTLM;
 
        memset(sess_key, 0, 16);
 
-       DEBUG(10, ("sending NTLMSSP_NEGOTIATE\n"));
-
        /* generate the ntlmssp negotiate packet */
-       msrpc_gen(&blob, "CddAA",
+       msrpc_gen(&blob, "CddB",
                  "NTLMSSP",
                  NTLMSSP_NEGOTIATE,
                  neg_flags,
-                 workgroup, strlen(workgroup),
-                 cli->calling.name, strlen(cli->calling.name) + 1);
-       DEBUG(10, ("neg_flags: %0X, workgroup: %s, calling name %s\n",
-                 neg_flags, workgroup, cli->calling.name));
+                 sess_key, 16);
+
        /* and wrap it in a SPNEGO wrapper */
-       msg1 = gen_negTokenInit(OID_NTLMSSP, blob);
+       msg1 = gen_negTokenTarg(mechs, blob);
        data_blob_free(&blob);
 
        /* now send that blob on its way */
@@ -490,8 +472,9 @@ static BOOL cli_session_setup_ntlmssp(struct cli_state *cli, char *user,
 
        data_blob_free(&msg1);
 
-       if (!NT_STATUS_EQUAL(cli_nt_error(cli), NT_STATUS_MORE_PROCESSING_REQUIRED))
+       if (!NT_STATUS_EQUAL(cli_nt_error(cli), NT_STATUS_MORE_PROCESSING_REQUIRED)) {
                return False;
+       }
 
 #if 0
        file_save("chal.dat", blob.data, blob.length);
@@ -505,38 +488,10 @@ static BOOL cli_session_setup_ntlmssp(struct cli_state *cli, char *user,
 
        data_blob_free(&blob);
 
-       /*
-        * Ok, chal1 and chal2 are actually two identical copies of
-        * the NTLMSSP Challenge BLOB, and they contain, encoded in them
-        * the challenge to use.
-        */
-
-       if (!msrpc_parse(&chal1, "CdUdbddB",
-                        "NTLMSSP",
-                        &ntlmssp_command, 
-                        &server_domain,
-                        &chal_flags,
-                        &challenge_blob, 8,
-                        &unkn1, &unkn2,
-                        &struct_blob)) {
-         DEBUG(0, ("Failed to parse the NTLMSSP Challenge\n"));
-         return False;
-       }
-                       
-       if (ntlmssp_command != NTLMSSP_CHALLENGE) {
-               DEBUG(0, ("NTLMSSP Response != NTLMSSP_CHALLENGE. Got %0X\n", 
-                       ntlmssp_command));
-               return False;
-       }
-       DEBUG(10, ("Challenge:\n"));
-       dump_data(10, challenge_blob.data, 8);
-
-       /* encrypt the password with the challenge which is in the blob */
-       memcpy(challenge, challenge_blob.data, 8); 
+       /* encrypt the password with the challenge */
+       memcpy(challenge, chal1.data + 24, 8);
        SMBencrypt(pass, challenge,lmhash);
        SMBNTencrypt(pass, challenge,nthash);
-       data_blob_free(&challenge_blob);
 
 #if 0
        file_save("nthash.dat", nthash, 24);
@@ -556,7 +511,7 @@ static BOOL cli_session_setup_ntlmssp(struct cli_state *cli, char *user,
                  workgroup, 
                  user, 
                  cli->calling.name,
-                 sess_key, 0,
+                 sess_key, 16,
                  neg_flags);
 
        /* wrap it in SPNEGO */
@@ -570,12 +525,7 @@ static BOOL cli_session_setup_ntlmssp(struct cli_state *cli, char *user,
        data_blob_free(&auth);
        data_blob_free(&blob);
 
-       if (cli_is_error(cli))
-               return False;
-
-       set_signing_on_cli(cli, pass, nthash);
-
-       return True;
+       return !cli_is_error(cli);
 }
 
 /****************************************************************************
@@ -587,14 +537,17 @@ static BOOL cli_session_setup_spnego(struct cli_state *cli, char *user,
 {
        char *principal;
        char *OIDs[ASN1_MAX_OIDS];
+       uint8 guid[16];
        int i;
        BOOL got_kerberos_mechanism = False;
-       DATA_BLOB blob;
+
+       /* spnego security cannot use SMB signing (for now). */
+       cli->sign_info.use_smb_signing = False;
 
        DEBUG(2,("Doing spnego session setup (blob length=%d)\n", cli->secblob.length));
 
        /* the server might not even do spnego */
-       if (cli->secblob.length <= 16) {
+       if (cli->secblob.length == 16) {
                DEBUG(3,("server didn't supply a full spnego negprot\n"));
                goto ntlmssp;
        }
@@ -603,16 +556,11 @@ static BOOL cli_session_setup_spnego(struct cli_state *cli, char *user,
        file_save("negprot.dat", cli->secblob.data, cli->secblob.length);
 #endif
 
-       /* there is 16 bytes of GUID before the real spnego packet starts */
-       blob = data_blob(cli->secblob.data+16, cli->secblob.length-16);
-
        /* the server sent us the first part of the SPNEGO exchange in the negprot 
           reply */
-       if (!spnego_parse_negTokenInit(blob, OIDs, &principal)) {
-               data_blob_free(&blob);
+       if (!spnego_parse_negTokenInit(cli->secblob, guid, OIDs, &principal)) {
                return False;
        }
-       data_blob_free(&blob);
 
        /* make sure the server understands kerberos */
        for (i=0;OIDs[i];i++) {
@@ -672,38 +620,35 @@ BOOL cli_session_setup(struct cli_state *cli,
            flow a bit easier to understand (tridge) */
 
        /* if its an older server then we have to use the older request format */
-
-       if (cli->protocol < PROTOCOL_NT1)
+       if (cli->protocol < PROTOCOL_NT1) {
                return cli_session_setup_lanman2(cli, user, pass, passlen, workgroup);
+       }
 
        /* if no user is supplied then we have to do an anonymous connection.
           passwords are ignored */
-
-       if (!user || !*user)
+       if (!user || !*user) {
                return cli_session_setup_guest(cli);
+       }
 
        /* if the server is share level then send a plaintext null
            password at this point. The password is sent in the tree
            connect */
-
-       if ((cli->sec_mode & NEGOTIATE_SECURITY_USER_LEVEL) == 0)
+       if ((cli->sec_mode & NEGOTIATE_SECURITY_USER_LEVEL) == 0) {
                return cli_session_setup_plaintext(cli, user, "", workgroup);
+       }
 
        /* if the server doesn't support encryption then we have to use 
           plaintext. The second password is ignored */
-
-       if ((cli->sec_mode & NEGOTIATE_SECURITY_CHALLENGE_RESPONSE) == 0)
+       if ((cli->sec_mode & NEGOTIATE_SECURITY_CHALLENGE_RESPONSE) == 0) {
                return cli_session_setup_plaintext(cli, user, pass, workgroup);
+       }
 
-       /* Indidicate signing */
-       
        /* if the server supports extended security then use SPNEGO */
-
-       if (cli->capabilities & CAP_EXTENDED_SECURITY)
+       if (cli->capabilities & CAP_EXTENDED_SECURITY) {
                return cli_session_setup_spnego(cli, user, pass, workgroup);
+       }
 
        /* otherwise do a NT1 style session setup */
-
        return cli_session_setup_nt1(cli, user, 
                                     pass, passlen, ntpass, ntpasslen,
                                     workgroup);        
@@ -793,13 +738,15 @@ BOOL cli_send_tconX(struct cli_state *cli,
        if (!cli_receive_smb(cli))
                return False;
 
-       if (cli_is_error(cli))
+       if (cli_is_error(cli)) {
                return False;
+       }
 
        clistr_pull(cli, cli->dev, smb_buf(cli->inbuf), sizeof(fstring), -1, STR_TERMINATE|STR_ASCII);
 
-       if (strcasecmp(share,"IPC$")==0)
+       if (strcasecmp(share,"IPC$")==0) {
                fstrcpy(cli->dev, "IPC");
+       }
 
        if (cli->protocol >= PROTOCOL_NT1 &&
            smb_buflen(cli->inbuf) == 3) {
@@ -839,8 +786,9 @@ void cli_negprot_send(struct cli_state *cli)
        char *p;
        int numprots;
 
-       if (cli->protocol < PROTOCOL_NT1)
+       if (cli->protocol < PROTOCOL_NT1) {
                cli->use_spnego = False;
+       }
 
        memset(cli->outbuf,'\0',smb_size);
 
@@ -879,8 +827,9 @@ BOOL cli_negprot(struct cli_state *cli)
                return False;
        }
 
-       if (cli->protocol < PROTOCOL_NT1)
+       if (cli->protocol < PROTOCOL_NT1) {
                cli->use_spnego = False;
+       }
 
        memset(cli->outbuf,'\0',smb_size);
 
@@ -942,8 +891,12 @@ BOOL cli_negprot(struct cli_state *cli)
                                    smb_buflen(cli->inbuf)-8, STR_UNICODE|STR_NOALIGN);
                }
 
-               if ((cli->sec_mode & NEGOTIATE_SECURITY_SIGNATURES_ENABLED))
+               /* A way to attempt to force SMB signing */
+               if (getenv("CLI_FORCE_SMB_SIGNING"))
                        cli->sign_info.negotiated_smb_signing = True;
+                                   
+               if (cli->sign_info.negotiated_smb_signing && !(cli->sec_mode & NEGOTIATE_SECURITY_SIGNATURES_ENABLED))
+                       cli->sign_info.negotiated_smb_signing = False;
 
        } else if (cli->protocol >= PROTOCOL_LANMAN1) {
                cli->use_spnego = False;
@@ -967,8 +920,9 @@ BOOL cli_negprot(struct cli_state *cli)
        cli->max_xmit = MIN(cli->max_xmit, CLI_BUFFER_SIZE);
 
        /* a way to force ascii SMB */
-       if (getenv("CLI_FORCE_ASCII"))
+       if (getenv("CLI_FORCE_ASCII")) {
                cli->capabilities &= ~CAP_UNICODE;
+       }
 
        return True;
 }
@@ -984,6 +938,15 @@ BOOL cli_session_request(struct cli_state *cli,
        int len = 4;
        extern pstring user_socket_options;
 
+       /* 445 doesn't have session request */
+       if (cli->port == 445) return True;
+
+       if (cli->sign_info.use_smb_signing) {
+               DEBUG(0, ("Cannot send session resquest again, particularly after setting up SMB Signing\n"));
+               return False;
+       }
+
+       /* send a session request (RFC 1002) */
        memcpy(&(cli->calling), calling, sizeof(*calling));
        memcpy(&(cli->called ), called , sizeof(*called ));
   
@@ -997,16 +960,6 @@ BOOL cli_session_request(struct cli_state *cli,
        name_mangle(cli->calling.name, p, cli->calling.name_type);
        len += name_len(p);
 
-       /* 445 doesn't have session request */
-       if (cli->port == 445)
-               return True;
-
-       if (cli->sign_info.use_smb_signing) {
-               DEBUG(0, ("Cannot send session resquest again, particularly after setting up SMB Signing\n"));
-               return False;
-       }
-
-       /* send a session request (RFC 1002) */
        /* setup the packet length
          * Remove four bytes from the length count, since the length
          * field in the NBT Session Service header counts the number
@@ -1113,8 +1066,7 @@ BOOL cli_connect(struct cli_state *cli, const char *host, struct in_addr *ip)
                        cli->fd = open_socket_out(SOCK_STREAM, &cli->dest_ip, 
                                                  port, cli->timeout);
                }
-               if (cli->fd != -1)
-                       cli->port = port;
+               if (cli->fd != -1) cli->port = port;
        }
        if (cli->fd == -1) {
                DEBUG(1,("Error connecting to %s (%s)\n",
@@ -1189,10 +1141,11 @@ NTSTATUS cli_full_connection(struct cli_state **output_cli,
                return NT_STATUS_UNSUCCESSFUL;
        }
 
-       if (dest_ip)
+       if (dest_ip) {
                ip = *dest_ip;
-       else
+       } else {
                ZERO_STRUCT(ip);
+       }
 
 again:
 
@@ -1209,7 +1162,8 @@ again:
                char *p;
                DEBUG(1,("session request to %s failed (%s)\n", 
                         called.name, cli_errstr(cli)));
-               if ((p=strchr(called.name, '.')) && !is_ipaddress(called.name)) {
+               cli_shutdown(cli);
+               if ((p=strchr(called.name, '.'))) {
                        *p = 0;
                        goto again;
                }
@@ -1220,10 +1174,11 @@ again:
                return NT_STATUS_UNSUCCESSFUL;
        }
 
-       if (flags & CLI_FULL_CONNECTION_DONT_SPNEGO)
+       if (flags & CLI_FULL_CONNECTION_DONT_SPNEGO) {
                cli->use_spnego = False;
-       else if (flags & CLI_FULL_CONNECTION_USE_KERBEROS)
+       } else if (flags & CLI_FULL_CONNECTION_USE_KERBEROS) {
                cli->use_kerberos = True;
+       }
 
        if (!cli_negprot(cli)) {
                DEBUG(1,("failed negprot\n"));
@@ -1306,22 +1261,18 @@ BOOL attempt_netbios_session_request(struct cli_state *cli, char *srchost, char
 
                        DEBUG(0,("attempt_netbios_session_request: %s rejected the session for name *SMBSERVER \
 with error %s.\n", desthost, cli_errstr(cli) ));
+                       cli_shutdown(cli);
                        return False;
                }
 
-               /*
-                * We need to close the connection here but can't call cli_shutdown as
-                * will free an allocated cli struct. cli_close_connection was invented
-                * for this purpose. JRA. Based on work by "Kim R. Pedersen" <krp@filanet.dk>.
-                */
-
-               cli_close_connection(cli);
+               cli_shutdown(cli);
 
                if (!cli_initialise(cli) ||
                                !cli_connect(cli, desthost, pdest_ip) ||
                                !cli_session_request(cli, &calling, &smbservername)) {
                        DEBUG(0,("attempt_netbios_session_request: %s rejected the session for \
 name *SMBSERVER with error %s\n", desthost, cli_errstr(cli) ));
+                       cli_shutdown(cli);
                        return False;
                }
        }
index 793dd19644f2de91e8c22041bdddd4daa4f4c27a..c9500ead5d23c1a87de7443d60716acbc0872ac8 100644 (file)
@@ -32,48 +32,49 @@ int cli_set_port(struct cli_state *cli, int port)
 }
 
 /****************************************************************************
Read an smb from a fd ignoring all keepalive packets. Note that the buffer 
- *MUST* be of size BUFFER_SIZE+SAFETY_MARGIN.
- The timeout is in milliseconds
-
- This is exactly the same as receive_smb except that it never returns
- a session keepalive packet (just as receive_smb used to do).
- receive_smb was changed to return keepalives as the oplock processing means this call
- should never go into a blocking read.
 read an smb from a fd ignoring all keepalive packets. Note that the buffer 
 *MUST* be of size BUFFER_SIZE+SAFETY_MARGIN.
 The timeout is in milliseconds
+
 This is exactly the same as receive_smb except that it never returns
 a session keepalive packet (just as receive_smb used to do).
 receive_smb was changed to return keepalives as the oplock processing means this call
 should never go into a blocking read.
 ****************************************************************************/
 
 static BOOL client_receive_smb(int fd,char *buffer, unsigned int timeout)
 {
-       BOOL ret;
-
-       for(;;) {
-               ret = receive_smb(fd, buffer, timeout);
-
-               if (!ret) {
-                       DEBUG(10,("client_receive_smb failed\n"));
-                       show_msg(buffer);
-                       return ret;
-               }
-
-               /* Ignore session keepalive packets. */
-               if(CVAL(buffer,0) != SMBkeepalive)
-                       break;
-       }
-       show_msg(buffer);
-       return ret;
+  BOOL ret;
+
+  for(;;)
+  {
+    ret = receive_smb(fd, buffer, timeout);
+
+    if (!ret)
+    {
+      DEBUG(10,("client_receive_smb failed\n"));
+      show_msg(buffer);
+      return ret;
+    }
+
+    /* Ignore session keepalive packets. */
+    if(CVAL(buffer,0) != SMBkeepalive)
+      break;
+  }
+  show_msg(buffer);
+  return ret;
 }
 
+
 /****************************************************************************
- Recv an smb.
+recv an smb
 ****************************************************************************/
-
 BOOL cli_receive_smb(struct cli_state *cli)
 {
        BOOL ret;
 
        /* fd == -1 causes segfaults -- Tom (tom@ninja.nl) */
-       if (cli->fd == -1)
-               return False; 
+       if (cli->fd == -1) return False; 
 
  again:
        ret = client_receive_smb(cli->fd,cli->inbuf,cli->timeout);
@@ -150,32 +151,34 @@ void cli_setup_packet(struct cli_state *cli)
                uint16 flags2;
                SCVAL(cli->outbuf,smb_flg,0x8);
                flags2 = FLAGS2_LONG_PATH_COMPONENTS;
-               if (cli->capabilities & CAP_UNICODE)
+               if (cli->capabilities & CAP_UNICODE) {
                        flags2 |= FLAGS2_UNICODE_STRINGS;
-               if (cli->capabilities & CAP_STATUS32)
+               }
+               if (cli->capabilities & CAP_STATUS32) {
                        flags2 |= FLAGS2_32_BIT_ERROR_CODES;
-               if (cli->use_spnego)
+               }
+               if (cli->use_spnego) {
                        flags2 |= FLAGS2_EXTENDED_SECURITY;
-               if (cli->sign_info.use_smb_signing 
-                   || cli->sign_info.temp_smb_signing)
+               }
+               if (cli->sign_info.use_smb_signing)
                        flags2 |= FLAGS2_SMB_SECURITY_SIGNATURES;
                SSVAL(cli->outbuf,smb_flg2, flags2);
        }
 }
 
 /****************************************************************************
- Setup the bcc length of the packet from a pointer to the end of the data.
+setup the bcc length of the packet from a pointer to the end of the data
 ****************************************************************************/
-
 void cli_setup_bcc(struct cli_state *cli, void *p)
 {
        set_message_bcc(cli->outbuf, PTR_DIFF(p, smb_buf(cli->outbuf)));
 }
 
+
+
 /****************************************************************************
- Initialise credentials of a client structure.
+initialise credentials of a client structure
 ****************************************************************************/
-
 void cli_init_creds(struct cli_state *cli, const struct ntuser_creds *usr)
 {
         /* copy_nt_creds(&cli->usr, usr); */
@@ -190,10 +193,10 @@ void cli_init_creds(struct cli_state *cli, const struct ntuser_creds *usr)
                cli->ntlmssp_flags,cli->ntlmssp_cli_flgs));
 }
 
+
 /****************************************************************************
- Initialise a client structure.
+initialise a client structure
 ****************************************************************************/
-
 struct cli_state *cli_initialise(struct cli_state *cli)
 {
         BOOL alloced_cli = False;
@@ -212,8 +215,9 @@ struct cli_state *cli_initialise(struct cli_state *cli)
                 alloced_cli = True;
        }
 
-       if (cli->initialised)
-               cli_close_connection(cli);
+       if (cli->initialised) {
+               cli_shutdown(cli);
+       }
 
        ZERO_STRUCTP(cli);
 
@@ -230,9 +234,7 @@ struct cli_state *cli_initialise(struct cli_state *cli)
        cli->outbuf = (char *)malloc(cli->bufsize);
        cli->inbuf = (char *)malloc(cli->bufsize);
        cli->oplock_handler = cli_oplock_ack;
-       if (lp_use_spnego()) {
-               cli->use_spnego = True;
-       }
+       cli->use_spnego = True;
 
        /* Set the CLI_FORCE_DOSERR environment variable to test
           client routines using DOS errors instead of STATUS32
@@ -241,10 +243,6 @@ struct cli_state *cli_initialise(struct cli_state *cli)
                cli->force_dos_errors = True;
        }
 
-       /* A way to attempt to force SMB signing */
-       if (getenv("CLI_FORCE_SMB_SIGNING"))
-               cli->sign_info.negotiated_smb_signing = True;
-                                   
        if (!cli->outbuf || !cli->inbuf)
                 goto error;
 
@@ -275,75 +273,43 @@ struct cli_state *cli_initialise(struct cli_state *cli)
 }
 
 /****************************************************************************
- Close a client connection and free the memory without destroying cli itself.
+shutdown a client structure
 ****************************************************************************/
-
-void cli_close_connection(struct cli_state *cli)
+void cli_shutdown(struct cli_state *cli)
 {
+       BOOL allocated;
        SAFE_FREE(cli->outbuf);
        SAFE_FREE(cli->inbuf);
 
        data_blob_free(&cli->secblob);
 
-       if (cli->mem_ctx) {
+       if (cli->mem_ctx)
                talloc_destroy(cli->mem_ctx);
-               cli->mem_ctx = NULL;
-       }
 
        if (cli->fd != -1) 
                close(cli->fd);
-       cli->fd = -1;
-}
-
-/****************************************************************************
- Shutdown a client structure.
-****************************************************************************/
-
-void cli_shutdown(struct cli_state *cli)
-{
-       BOOL allocated = cli->allocated;
-       cli_close_connection(cli);
+       allocated = cli->allocated;
        ZERO_STRUCTP(cli);
        if (allocated) {
                free(cli);
        } 
 }
 
+
 /****************************************************************************
- Set socket options on a open connection.
+set socket options on a open connection
 ****************************************************************************/
-
 void cli_sockopt(struct cli_state *cli, char *options)
 {
        set_socket_options(cli->fd, options);
 }
 
 /****************************************************************************
- Set the PID to use for smb messages. Return the old pid.
+set the PID to use for smb messages. Return the old pid.
 ****************************************************************************/
-
 uint16 cli_setpid(struct cli_state *cli, uint16 pid)
 {
        uint16 ret = cli->pid;
        cli->pid = pid;
        return ret;
 }
-
-/****************************************************************************
-Send a keepalive packet to the server
-****************************************************************************/
-BOOL cli_send_keepalive(struct cli_state *cli)
-{
-        if (cli->fd == -1) {
-                DEBUG(3, ("cli_send_keepalive: fd == -1\n"));
-                return False;
-        }
-        if (!send_keepalive(cli->fd)) {
-                close(cli->fd);
-                cli->fd = -1;
-                DEBUG(0,("Error sending keepalive packet to client.\n"));
-                return False;
-        }
-        return True;
-}
-
index e1507c6048e6a4c0c2f9e1d26e855145781a59fb..591c04db22dd00dcd71c54c0a4eed2fea218b6d8 100644 (file)
@@ -156,7 +156,7 @@ void cli_dos_error(struct cli_state *cli, uint8 *eclass, uint32 *ecode)
 
 /* Return a UNIX errno from a dos error class, error number tuple */
 
-static int cli_errno_from_dos(uint8 eclass, uint32 num)
+int cli_errno_from_dos(uint8 eclass, uint32 num)
 {
        if (eclass == ERRDOS) {
                switch (num) {
@@ -205,7 +205,7 @@ static struct {
        {NT_STATUS(0), 0}
 };
 
-static int cli_errno_from_nt(NTSTATUS status)
+int cli_errno_from_nt(NTSTATUS status)
 {
        int i;
         DEBUG(10,("cli_errno_from_nt: 32 bit codes: code=%08x\n", NT_STATUS_V(status)));
index 07b1ff6b6f5dce750b5f2522da19f2900d24a878..a47c956a55541b2ed34fad5982fb4c9f867dba49 100644 (file)
@@ -94,7 +94,7 @@ uint32  unix_perms_to_wire(mode_t perms)
         ret |= ((perms & S_ISGID) ?  UNIX_SET_GID : 0);
 #endif
 #ifdef S_ISUID
-        ret |= ((perms & S_ISUID) ?  UNIX_SET_UID : 0);
+        ret |= ((perms & S_ISVTX) ?  UNIX_SET_UID : 0);
 #endif
         return ret;
 }
index e7143d065d71e41beaa5e93e52fbed223a736d10..685c4a25e0400a30b13b4b3fe7c172da120aad4b 100644 (file)
@@ -64,14 +64,6 @@ static krb5_error_code krb5_mk_req2(krb5_context context,
                goto cleanup_creds;
        }
 
-       /* cope with the ticket being in the future due to clock skew */
-       if ((unsigned)credsp->times.starttime > time(NULL)) {
-               time_t t = time(NULL);
-               int time_offset = (unsigned)credsp->times.starttime - t;
-               DEBUG(4,("Advancing clock by %d seconds to cope with clock skew\n", time_offset));
-               krb5_set_real_time(context, t + time_offset + 1, 0);
-       }
-
        in_data.length = 0;
        retval = krb5_mk_req_extended(context, auth_context, ap_req_options, 
                                      &in_data, credsp, outbuf);
@@ -94,7 +86,7 @@ cleanup_princ:
 /*
   get a kerberos5 ticket for the given service 
 */
-DATA_BLOB krb5_get_ticket(char *principal, time_t time_offset)
+DATA_BLOB krb5_get_ticket(char *principal)
 {
        krb5_error_code retval;
        krb5_data packet;
@@ -102,12 +94,7 @@ DATA_BLOB krb5_get_ticket(char *principal, time_t time_offset)
        krb5_context context;
        krb5_auth_context auth_context = NULL;
        DATA_BLOB ret;
-       krb5_enctype enc_types[] = {
-#ifdef ENCTYPE_ARCFOUR_HMAC
-               ENCTYPE_ARCFOUR_HMAC, 
-#endif
-                                   ENCTYPE_DES_CBC_MD5, 
-                                   ENCTYPE_NULL};
+       krb5_enctype enc_types[] = {ENCTYPE_DES_CBC_MD5, ENCTYPE_NULL};
 
        retval = krb5_init_context(&context);
        if (retval) {
@@ -116,10 +103,6 @@ DATA_BLOB krb5_get_ticket(char *principal, time_t time_offset)
                goto failed;
        }
 
-       if (time_offset != 0) {
-               krb5_set_real_time(context, time(NULL) + time_offset, 0);
-       }
-
        if ((retval = krb5_cc_default(context, &ccdef))) {
                DEBUG(1,("krb5_cc_default failed (%s)\n",
                         error_message(retval)));
@@ -154,7 +137,7 @@ failed:
 
 #else /* HAVE_KRB5 */
  /* this saves a few linking headaches */
- DATA_BLOB krb5_get_ticket(char *principal, time_t time_offset)
+ DATA_BLOB krb5_get_ticket(char *principal)
  {
         DEBUG(0,("NO KERBEROS SUPPORT\n"));
         return data_blob(NULL, 0);
index 3eacc25380aba4605378b308ac4641ac3059dead..17a759f9e39371455fdb39ea116e64425eddbfbb 100644 (file)
 
 #include "includes.h"
 
+
 /****************************************************************************
- Interpret a long filename structure - this is mostly guesses at the moment.
- The length of the structure is returned
- The structure of a long filename depends on the info level. 260 is used
- by NT and 2 is used by OS/2
+interpret a long filename structure - this is mostly guesses at the moment
+The length of the structure is returned
+The structure of a long filename depends on the info level. 260 is used
+by NT and 2 is used by OS/2
 ****************************************************************************/
-
 static int interpret_long_filename(struct cli_state *cli,
                                   int level,char *p,file_info *finfo)
 {
@@ -41,7 +41,8 @@ static int interpret_long_filename(struct cli_state *cli,
 
        memcpy(finfo,&def_finfo,sizeof(*finfo));
 
-       switch (level) {
+       switch (level)
+               {
                case 1: /* OS/2 understands this */
                        /* these dates are converted to GMT by
                            make_unix_date */
@@ -125,16 +126,16 @@ static int interpret_long_filename(struct cli_state *cli,
                                    namelen, 0);
                        return SVAL(base, 0);
                }
-       }
+               }
        
        DEBUG(1,("Unknown long filename format %d\n",level));
        return(SVAL(p,0));
 }
 
-/****************************************************************************
- Do a directory listing, calling fn on each file found.
-****************************************************************************/
 
+/****************************************************************************
+  do a directory listing, calling fn on each file found
+  ****************************************************************************/
 int cli_list_new(struct cli_state *cli,const char *Mask,uint16 attribute, 
                 void (*fn)(file_info *, const char *, void *), void *state)
 {
@@ -306,11 +307,12 @@ int cli_list_new(struct cli_state *cli,const char *Mask,uint16 attribute,
        return(total_received);
 }
 
+
+
 /****************************************************************************
- Interpret a short filename structure.
- The length of the structure is returned.
+interpret a short filename structure
+The length of the structure is returned
 ****************************************************************************/
-
 static int interpret_short_filename(struct cli_state *cli, char *p,file_info *finfo)
 {
        extern file_info def_finfo;
@@ -332,11 +334,10 @@ static int interpret_short_filename(struct cli_state *cli, char *p,file_info *fi
 
 
 /****************************************************************************
- Do a directory listing, calling fn on each file found.
- this uses the old SMBsearch interface. It is needed for testing Samba,
- but should otherwise not be used.
-****************************************************************************/
-
+  do a directory listing, calling fn on each file found
+  this uses the old SMBsearch interface. It is needed for testing Samba,
+  but should otherwise not be used
+  ****************************************************************************/
 int cli_list_old(struct cli_state *cli,const char *Mask,uint16 attribute, 
                 void (*fn)(file_info *, const char *, void *), void *state)
 {
@@ -452,15 +453,16 @@ int cli_list_old(struct cli_state *cli,const char *Mask,uint16 attribute,
        return(num_received);
 }
 
-/****************************************************************************
- Do a directory listing, calling fn on each file found.
- This auto-switches between old and new style.
-****************************************************************************/
 
+/****************************************************************************
+  do a directory listing, calling fn on each file found
+  this auto-switches between old and new style
+  ****************************************************************************/
 int cli_list(struct cli_state *cli,const char *Mask,uint16 attribute, 
             void (*fn)(file_info *, const char *, void *), void *state)
 {
-       if (cli->protocol <= PROTOCOL_LANMAN1)
+       if (cli->protocol <= PROTOCOL_LANMAN1) {
                return cli_list_old(cli, Mask, attribute, fn, state);
+       }
        return cli_list_new(cli, Mask, attribute, fn, state);
 }
index 875df11dca46387dd37557506cc0d072deea9c13..756a6cce2f9ef9bf10cdad11670ed470b69fccef 100644 (file)
@@ -127,7 +127,7 @@ ssize_t cli_read(struct cli_state *cli, int fnum, char *buf, off_t offset, size_
        return total;
 }
 
-#if 0  /* relies on client_receive_smb(), now a static in libsmb/clientgen.c */
+#if 0  /* relies on client_recieve_smb(), now a static in libsmb/clientgen.c */
 
 /* This call is INCOMPATIBLE with SMB signing.  If you remove the #if 0
    you must fix ensure you don't attempt to sign the packets - data
index 55f49c5987111af4c1e8f1f9eb1fda6691b1a2c0..16702c375b25d41c67b7ce7380ff15e8e3aca5bb 100644 (file)
@@ -73,56 +73,13 @@ DATA_BLOB spnego_gen_negTokenInit(uint8 guid[16],
        return ret;
 }
 
-/*
-  Generate a negTokenInit as used by the client side ... It has a mechType
-  (OID), and a mechToken (a security blob) ... 
-
-  Really, we need to break out the NTLMSSP stuff as well, because it could be
-  raw in the packets!
-*/
-DATA_BLOB gen_negTokenInit(const char *OID, DATA_BLOB blob)
-{
-       ASN1_DATA data;
-       DATA_BLOB ret;
-
-       memset(&data, 0, sizeof(data));
-
-       asn1_push_tag(&data, ASN1_APPLICATION(0));
-       asn1_write_OID(&data,OID_SPNEGO);
-       asn1_push_tag(&data, ASN1_CONTEXT(0));
-       asn1_push_tag(&data, ASN1_SEQUENCE(0));
-
-       asn1_push_tag(&data, ASN1_CONTEXT(0));
-       asn1_push_tag(&data, ASN1_SEQUENCE(0));
-       asn1_write_OID(&data, OID);
-       asn1_pop_tag(&data);
-       asn1_pop_tag(&data);
-
-       asn1_push_tag(&data, ASN1_CONTEXT(2));
-       asn1_write_OctetString(&data,blob.data,blob.length);
-       asn1_pop_tag(&data);
-
-       asn1_pop_tag(&data);
-       asn1_pop_tag(&data);
-
-       asn1_pop_tag(&data);
-
-       if (data.has_error) {
-               DEBUG(1,("Failed to build negTokenInit at offset %d\n", (int)data.ofs));
-               asn1_free(&data);
-       }
-
-       ret = data_blob(data.data, data.length);
-       asn1_free(&data);
-
-       return ret;
-}
 
 /*
   parse a negTokenInit packet giving a GUID, a list of supported
   OIDs (the mechanisms) and a principal name string 
 */
 BOOL spnego_parse_negTokenInit(DATA_BLOB blob,
+                              uint8 guid[16], 
                               char *OIDs[ASN1_MAX_OIDS], 
                               char **principal)
 {
@@ -132,6 +89,7 @@ BOOL spnego_parse_negTokenInit(DATA_BLOB blob,
 
        asn1_load(&data, blob);
 
+       asn1_read(&data, guid, 16);
        asn1_start_tag(&data,ASN1_APPLICATION(0));
        asn1_check_OID(&data,OID_SPNEGO);
        asn1_start_tag(&data,ASN1_CONTEXT(0));
@@ -321,13 +279,13 @@ BOOL spnego_parse_krb5_wrap(DATA_BLOB blob, DATA_BLOB *ticket)
    generate a SPNEGO negTokenTarg packet, ready for a EXTENDED_SECURITY
    kerberos session setup 
 */
-DATA_BLOB spnego_gen_negTokenTarg(const char *principal, int time_offset)
+DATA_BLOB spnego_gen_negTokenTarg(struct cli_state *cli, char *principal)
 {
        DATA_BLOB tkt, tkt_wrapped, targ;
        const char *krb_mechs[] = {OID_KERBEROS5_OLD, OID_NTLMSSP, NULL};
 
        /* get a kerberos ticket for the service */
-       tkt = krb5_get_ticket(principal, time_offset);
+       tkt = krb5_get_ticket(principal);
 
        /* wrap that up in a nice GSS-API wrapping */
        tkt_wrapped = spnego_gen_krb5_wrap(tkt);
@@ -515,10 +473,8 @@ DATA_BLOB spnego_gen_auth_response(void)
 
   U = unicode string (input is unix string)
   a = address (1 byte type, 1 byte length, unicode string, all inline)
-  A = ASCII string (pointer + length) Actually same as B
   B = data blob (pointer + length)
   b = data blob in header (pointer + length)
-  D
   d = word (4 bytes)
   C = constant ascii string
  */
@@ -546,7 +502,6 @@ BOOL msrpc_gen(DATA_BLOB *blob,
                        s = va_arg(ap, char *);
                        data_size += (str_charnum(s) * 2) + 4;
                        break;
-               case 'A':
                case 'B':
                        b = va_arg(ap, uint8 *);
                        head_size += 8;
@@ -598,8 +553,7 @@ BOOL msrpc_gen(DATA_BLOB *blob,
                        }
                        data_ofs += n*2;
                        break;
-
-               case 'A':
+                       
                case 'B':
                        b = va_arg(ap, uint8 *);
                        n = va_arg(ap, int);
@@ -734,39 +688,37 @@ BOOL msrpc_parse(DATA_BLOB *blob,
 
 void debug_ntlmssp_flags(uint32 neg_flags)
 {
-       DEBUG(3,("Got NTLMSSP neg_flags=0x%08x\n", neg_flags));
-       
        if (neg_flags & NTLMSSP_NEGOTIATE_UNICODE) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_UNICODE\n"));
+               DEBUG(4, ("  NTLMSSP_NEGOTIATE_UNICODE\n"));
        if (neg_flags & NTLMSSP_NEGOTIATE_OEM) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_OEM\n"));
+               DEBUG(4, ("  NTLMSSP_NEGOTIATE_OEM\n"));
        if (neg_flags & NTLMSSP_REQUEST_TARGET) 
-               DEBUGADD(4, ("  NTLMSSP_REQUEST_TARGET\n"));
+               DEBUG(4, ("  NTLMSSP_REQUEST_TARGET\n"));
+       if (neg_flags & NTLMSSP_NEGOTIATE_SIGN) 
+               DEBUG(4, ("  NTLMSSP_NEGOTIATE_SIGN\n"));
        if (neg_flags & NTLMSSP_NEGOTIATE_SIGN) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_SIGN\n"));
-       if (neg_flags & NTLMSSP_NEGOTIATE_SEAL) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_SEAL\n"));
+               DEBUG(4, ("  NTLMSSP_NEGOTIATE_SEAL\n"));
        if (neg_flags & NTLMSSP_NEGOTIATE_LM_KEY) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_LM_KEY\n"));
+               DEBUG(4, ("  NTLMSSP_NEGOTIATE_LM_KEY\n"));
        if (neg_flags & NTLMSSP_NEGOTIATE_NETWARE) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_NETWARE\n"));
+               DEBUG(4, ("  NTLMSSP_NEGOTIATE_NETWARE\n"));
        if (neg_flags & NTLMSSP_NEGOTIATE_NTLM) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_NTLM\n"));
+               DEBUG(4, ("  NTLMSSP_NEGOTIATE_NTLM\n"));
        if (neg_flags & NTLMSSP_NEGOTIATE_DOMAIN_SUPPLIED) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_DOMAIN_SUPPLIED\n"));
+               DEBUG(4, ("  NTLMSSP_NEGOTIATE_DOMAIN_SUPPLIED\n"));
        if (neg_flags & NTLMSSP_NEGOTIATE_WORKSTATION_SUPPLIED) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_WORKSTATION_SUPPLIED\n"));
+               DEBUG(4, ("  NTLMSSP_NEGOTIATE_WORKSTATION_SUPPLIED\n"));
        if (neg_flags & NTLMSSP_NEGOTIATE_THIS_IS_LOCAL_CALL) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_THIS_IS_LOCAL_CALL\n"));
+               DEBUG(4, ("  NTLMSSP_NEGOTIATE_THIS_IS_LOCAL_CALL\n"));
        if (neg_flags & NTLMSSP_NEGOTIATE_ALWAYS_SIGN) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_ALWAYS_SIGN\n"));
+               DEBUG(4, ("  NTLMSSP_NEGOTIATE_ALWAYS_SIGN\n"));
        if (neg_flags & NTLMSSP_NEGOTIATE_NTLM2) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_NTLM2\n"));
+               DEBUG(4, ("  NTLMSSP_NEGOTIATE_NTLM2\n"));
        if (neg_flags & NTLMSSP_CHAL_TARGET_INFO) 
-               DEBUGADD(4, ("  NTLMSSP_CHAL_TARGET_INFO\n"));
+               DEBUG(4, ("  NTLMSSP_CHAL_TARGET_INFO\n"));
        if (neg_flags & NTLMSSP_NEGOTIATE_128) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_128\n"));
+               DEBUG(4, ("  NTLMSSP_NEGOTIATE_128\n"));
        if (neg_flags & NTLMSSP_NEGOTIATE_KEY_EXCH) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_KEY_EXCH\n"));
+               DEBUG(4, ("  NTLMSSP_NEGOTIATE_KEY_EXCH\n"));
 }
 
index df02cf3718f464471c68929097a76136111821de..34b818ee7480c631f53d8264641d13e42f20a819 100644 (file)
@@ -89,7 +89,7 @@ static int smbc_add_cached_server(SMBCCTX * context, SMBCSRV * new,
                goto failed;
        }
 
-       DLIST_ADD((context->server_cache), srvcache);
+       DLIST_ADD(((struct smbc_server_cache *)context->server_cache), srvcache);
        return 0;
 
  failed:
@@ -139,7 +139,7 @@ static int smbc_remove_cached_server(SMBCCTX * context, SMBCSRV * server)
                if (server == srv->server) { 
 
                        /* remove this sucker */
-                       DLIST_REMOVE(context->server_cache, srv);
+                       DLIST_REMOVE(((struct smbc_server_cache *)context->server_cache), srv);
                        SAFE_FREE(srv->server_name);
                        SAFE_FREE(srv->share_name);
                        SAFE_FREE(srv->workgroup);
index 44cba611d2f147ad1f1b9c2a2cb78559b854e2cd..0ffc1c1378eed9cfbbb8902a02103d3f505e6d5e 100644 (file)
@@ -180,13 +180,14 @@ smbc_parse_path(SMBCCTX *context, const char *fname, char *server, char *share,
 
 static int smbc_errno(SMBCCTX *context, struct cli_state *c)
 {
-       int ret = cli_errno(c);
-       
+       int ret;
+
         if (cli_is_dos_error(c)) {
                 uint8 eclass;
                 uint32 ecode;
 
                 cli_dos_error(c, &eclass, &ecode);
+                ret = cli_errno_from_dos(eclass, ecode);
                 
                 DEBUG(3,("smbc_error %d %d (0x%x) -> %d\n", 
                          (int)eclass, (int)ecode, (int)ecode, ret));
@@ -194,9 +195,10 @@ static int smbc_errno(SMBCCTX *context, struct cli_state *c)
                 NTSTATUS status;
 
                 status = cli_nt_error(c);
+                ret = cli_errno_from_nt(status);
 
                 DEBUG(3,("smbc errno %s -> %d\n",
-                         nt_errstr(status), ret));
+                         get_nt_error_msg(status), ret));
         }
 
        return ret;
@@ -211,7 +213,7 @@ static int smbc_errno(SMBCCTX *context, struct cli_state *c)
  */
 int smbc_check_server(SMBCCTX * context, SMBCSRV * server) 
 {
-       if ( send_keepalive(server->cli.fd) == False )
+       if ( cli_send_keepalive(&server->cli) == False )
                return 1;
 
        /* connection is ok */
@@ -378,7 +380,7 @@ SMBCSRV *smbc_server(SMBCCTX *context,
                    fstring remote_name;
                    struct in_addr rem_ip;
 
-                   if ((rem_ip.s_addr=inet_addr(server)) == INADDR_NONE) {
+                   if (!inet_aton(server, &rem_ip)) {
                      DEBUG(4, ("Could not convert IP address %s to struct in_addr\n", server));
                      errno = ENOENT;
                      return NULL;
index 2252e8e59cebd58e68207e716bd7c7d00cf8b0ba..fc09d8eac2a0f264230214965c351876e7f02453 100644 (file)
@@ -29,24 +29,24 @@ static TDB_CONTEXT *namecache_tdb;
 struct nc_value {
        time_t expiry;               /* When entry expires */
        int count;                   /* Number of addresses */
-       struct in_addr ip_list[1];   /* Address list */
+       struct in_addr ip_list[0];   /* Address list */
 };
 
 /* Initialise namecache system */
 
-BOOL namecache_enable(void)
+void namecache_enable(void)
 {
        /* Check if we have been here before, or name caching disabled
            by setting the name cache timeout to zero. */ 
 
        if (done_namecache_init)
-               return False;
+               return;
 
        done_namecache_init = True;
 
        if (lp_name_cache_timeout() == 0) {
                DEBUG(5, ("namecache_init: disabling netbios name cache\n"));
-               return False;
+               return;
        }
 
        /* Open namecache tdb in read/write or readonly mode */
@@ -58,15 +58,13 @@ BOOL namecache_enable(void)
        if (!namecache_tdb) {
                DEBUG(5, ("namecache_init: could not open %s\n",
                          lock_path("namecache.tdb")));
-               return False;
+               return;
        }
 
        DEBUG(5, ("namecache_init: enabling netbios namecache, timeout %d "
                  "seconds\n", lp_name_cache_timeout()));
 
        enable_namecache = True;
-
-       return True;
 }
 
 /* Return a key for a name and name type.  The caller must free
@@ -93,20 +91,17 @@ static TDB_DATA namecache_value(struct in_addr *ip_list, int num_names,
 {
        TDB_DATA retval;
        struct nc_value *value;
-       int size = sizeof(struct nc_value);
+       int size;
 
-       if (num_names > 0)
-               size += sizeof(struct in_addr) * (num_names-1);
+       size = sizeof(struct nc_value) + sizeof(struct in_addr) *
+               num_names;
 
        value = (struct nc_value *)malloc(size);
-
-       memset(value, 0, size);
-
+               
        value->expiry = expiry;
        value->count = num_names;
 
-       if (ip_list)
-               memcpy(value->ip_list, ip_list, sizeof(struct in_addr) * num_names);
+       memcpy(value->ip_list, ip_list, num_names * sizeof(struct in_addr));
 
        retval.dptr = (char *)value;
        retval.dsize = size;
@@ -165,9 +160,6 @@ BOOL namecache_fetch(const char *name, int name_type, struct in_addr **ip_list,
        time_t now;
        int i;
 
-       *ip_list = NULL;
-       *num_names = 0;
-
        if (!enable_namecache)
                return False;
 
@@ -217,23 +209,20 @@ BOOL namecache_fetch(const char *name, int name_type, struct in_addr **ip_list,
 
        /* Extract and return namelist */
 
-       DEBUG(5, ("namecache_fetch: returning %d address%s for %s#%02x: ",
-                 data->count, data->count == 1 ? "" : "es", name, name_type));
+       *ip_list = (struct in_addr *)malloc(
+               sizeof(struct in_addr) * data->count);
+       
+       memcpy(*ip_list, data->ip_list, sizeof(struct in_addr) *
+              data->count);
 
-       if (data->count) {
+       *num_names = data->count;
 
-               *ip_list = (struct in_addr *)malloc(
-                       sizeof(struct in_addr) * data->count);
-               
-               memcpy(*ip_list, data->ip_list, sizeof(struct in_addr) * data->count);
-               
-               *num_names = data->count;
-               
-               for (i = 0; i < *num_names; i++)
-                       DEBUGADD(5, ("%s%s", inet_ntoa((*ip_list)[i]),
-                                    i == (*num_names - 1) ? "" : ", "));
+       DEBUG(5, ("namecache_fetch: returning %d address%s for %s#%02x: ",
+                 *num_names, *num_names == 1 ? "" : "es", name, name_type));
 
-       }
+       for (i = 0; i < *num_names; i++)
+               DEBUGADD(5, ("%s%s", inet_ntoa((*ip_list)[i]),
+                            i == (*num_names - 1) ? "" : ", "));
 
        DEBUGADD(5, ("\n"));
 
index 02fd53fc056a23c667aded3fe8da40d8b78a2602..e2da6318e1dbd906cad9ddd13005ace8cf5c872d 100644 (file)
@@ -28,7 +28,7 @@ typedef const struct
        NTSTATUS nt_errcode;
 } nt_err_code_struct;
 
-static nt_err_code_struct nt_errs[] =
+nt_err_code_struct nt_errs[] =
 {
        { "NT_STATUS_OK", NT_STATUS_OK },
        { "NT_STATUS_UNSUCCESSFUL", NT_STATUS_UNSUCCESSFUL },
index db265c4bf7c0f0688831ef94472ab40a46828f44..dfa355a7ec611f84a9c69a0a12718d3672d7dc17 100644 (file)
@@ -116,63 +116,39 @@ void nt_lm_owf_gen(const char *pwd, uchar nt_p16[16], uchar p16[16])
 }
 
 /* Does both the NTLMv2 owfs of a user's password */
-BOOL ntv2_owf_gen(const uchar owf[16],
-                 const char *user_in, const char *domain_in, uchar kr_buf[16])
+void ntv2_owf_gen(const uchar owf[16],
+                 const char *user_n, const char *domain_n, uchar kr_buf[16])
 {
-       smb_ucs2_t *user;
-       smb_ucs2_t *domain;
-       
-       int user_byte_len;
-       int domain_byte_len;
-
+       pstring user_u;
+       pstring dom_u;
        HMACMD5Context ctx;
 
-       user_byte_len = push_ucs2_allocate(&user, user_in);
-       if (user_byte_len < 0) {
-               DEBUG(0, ("push_uss2_allocate() for user returned %d (probably malloc() failure)\n", user_byte_len));
-               return False;
-       }
+       int user_l = strlen(user_n);
+       int domain_l = strlen(domain_n);
 
-       domain_byte_len = push_ucs2_allocate(&domain, domain_in);
-       if (domain_byte_len < 0) {
-               DEBUG(0, ("push_uss2_allocate() for domain returned %d (probably malloc() failure)\n", user_byte_len));
-               return False;
-       }
-
-       strupper_w(user);
-       strupper_w(domain);
-
-       /* We don't want null termination */
-       user_byte_len = user_byte_len - 2;
-       domain_byte_len = domain_byte_len - 2;
-       
-       SMB_ASSERT(user_byte_len >= 0);
-       SMB_ASSERT(domain_byte_len >= 0);
+       push_ucs2(NULL, user_u, user_n, (user_l+1)*2, STR_UNICODE|STR_NOALIGN|STR_TERMINATE|STR_UPPER);
+       push_ucs2(NULL, dom_u, domain_n, (domain_l+1)*2, STR_UNICODE|STR_NOALIGN|STR_TERMINATE|STR_UPPER);
 
        hmac_md5_init_limK_to_64(owf, 16, &ctx);
-       hmac_md5_update((const unsigned char *)user, user_byte_len, &ctx);
-       hmac_md5_update((const unsigned char *)domain, domain_byte_len, &ctx);
+       hmac_md5_update((const unsigned char *)user_u, user_l * 2, &ctx);
+       hmac_md5_update((const unsigned char *)dom_u, domain_l * 2, &ctx);
        hmac_md5_final(kr_buf, &ctx);
 
 #ifdef DEBUG_PASSWORD
        DEBUG(100, ("ntv2_owf_gen: user, domain, owfkey, kr\n"));
-       dump_data(100, (const char *)user, user_byte_len);
-       dump_data(100, (const char *)domain, domain_byte_len);
+       dump_data(100, user_u, user_l * 2);
+       dump_data(100, dom_u, domain_l * 2);
        dump_data(100, owf, 16);
        dump_data(100, kr_buf, 16);
 #endif
-
-       SAFE_FREE(user);
-       SAFE_FREE(domain);
-       return True;
 }
 
 /* Does the des encryption from the NT or LM MD4 hash. */
 void SMBOWFencrypt(const uchar passwd[16], const uchar *c8, uchar p24[24])
 {
        uchar p21[21];
-
-       ZERO_STRUCT(p21);
+       memset(p21,'\0',21);
  
        memcpy(p21, passwd, 16);    
        E_P24(p21, c8, p24);
@@ -386,12 +362,6 @@ void cli_caclulate_sign_mac(struct cli_state *cli)
        unsigned char calc_md5_mac[16];
        struct MD5Context md5_ctx;
 
-       if (cli->sign_info.temp_smb_signing) {
-               memcpy(&cli->outbuf[smb_ss_field], "SignRequest", 8);
-               cli->sign_info.temp_smb_signing = False;
-               return;
-       }
-
        if (!cli->sign_info.use_smb_signing) {
                return;
        }
@@ -410,8 +380,6 @@ void cli_caclulate_sign_mac(struct cli_state *cli)
        MD5Final(calc_md5_mac, &md5_ctx);
 
        memcpy(&cli->outbuf[smb_ss_field], calc_md5_mac, 8);
-/*     cli->outbuf[smb_ss_field+2]=0; 
-       Uncomment this to test if the remote server actually verifies signitures...*/
        cli->sign_info.send_seq_num++;
        cli->sign_info.reply_seq_num = cli->sign_info.send_seq_num;
        cli->sign_info.send_seq_num++;
index 4d7acd198889439de43dbadc8a50d2f2d4252f8c..fe6b673e39e9acbb2c57867a760f8ca3db5673f4 100644 (file)
@@ -35,9 +35,8 @@ static NTSTATUS just_change_the_password(struct cli_state *cli, TALLOC_CTX *mem_
                                         unsigned char new_trust_passwd_hash[16])
 {
        NTSTATUS result;
-       uint32 neg_flags = 0x000001ff;
-
-       result = cli_nt_setup_creds(cli, get_sec_chan(), orig_trust_passwd_hash, &neg_flags, 2);
+       result = cli_nt_setup_creds(cli, (lp_server_role() == ROLE_DOMAIN_MEMBER) ?
+                                  SEC_CHAN_WKSTA : SEC_CHAN_BDC, orig_trust_passwd_hash);
        
        if (!NT_STATUS_IS_OK(result)) {
                DEBUG(1,("just_change_the_password: unable to setup creds (%s)!\n",
index 3eb7ca478321415c047940cff6796fec3403e222..d42d041b79049c5ef42881e55490a1947269230c 100644 (file)
@@ -142,7 +142,7 @@ static NTSTATUS do_lock(files_struct *fsp,connection_struct *conn, uint16 lock_p
 }
 
 /****************************************************************************
- Utility function called by locking requests. This is *DISGUSTING*. It also
+ Utility function called by locking requests. This is *DISGISTING*. It also
  appears to be "What Windows Does" (tm). Andrew, ever wonder why Windows 2000
  is so slow on the locking tests...... ? This is the reason. Much though I hate
  it, we need this. JRA.
index b65cebe2035fbcf086a495b45c753d784456721e..d6605d08f56c92bcc8cd456ef7bc2ce34c217357 100644 (file)
@@ -334,8 +334,7 @@ reporting %s domain %s 0x%x ntversion=%x lm_nt token=%x lm_20 token=%x\n",
        /* Push domain components */
        dc = domain;
        q1 = q;
-       while ((component = strtok(dc, "."))) {
-         dc = NULL;
+       while ((component = strsep(&dc, "."))) {
          size = push_ascii(&q[1], component, -1, 0);
          SCVAL(q, 0, size);
          q += (size + 1);
index 24adf4e69f2a07e58e1af3d467df68cd867aed82..bf03d4d1cf279e335e53054e77d80fa6771f5233 100644 (file)
@@ -70,11 +70,7 @@ static void sync_child(char *name, int nm_type,
        uint32 local_type = local ? SV_TYPE_LOCAL_LIST_ONLY : 0;
        struct nmb_name called, calling;
 
-       /* W2K DMB's return empty browse lists on port 445. Use 139.
-        * Patch from Andy Levine andyl@epicrealm.com.
-        */
-
-       if (!cli_initialise(&cli) || !cli_set_port(&cli, 139) || !cli_connect(&cli, name, &ip)) {
+       if (!cli_initialise(&cli) || !cli_connect(&cli, name, &ip)) {
                return;
        }
 
index f95caefb4cd409fd63ba20666ff5f7ca06939f64..29ceca4e79ef877e2aede66a4a70af7ffef3fb01 100644 (file)
 
 #include "pam_winbind.h"
 
+/* prototypes from common.c */
+void init_request(struct winbindd_request *req,int rq_type);
+int write_sock(void *buffer, int count);
+int read_reply(struct winbindd_response *response);
+
 /* data tokens */
 
 #define MAX_PASSWD_TRIES       3
@@ -94,30 +99,24 @@ static int _make_remark(pam_handle_t * pamh, int type, const char *text)
        return retval;
 }
 
-static int pam_winbind_request(enum winbindd_cmd req_type,
-                              struct winbindd_request *request,
-                              struct winbindd_response *response)
+static int winbind_request(enum winbindd_cmd req_type,
+                           struct winbindd_request *request,
+                           struct winbindd_response *response)
 {
-
        /* Fill in request and send down pipe */
        init_request(request, req_type);
        
        if (write_sock(request, sizeof(*request)) == -1) {
                _pam_log(LOG_ERR, "write to socket failed!");
-               close_sock();
                return PAM_SERVICE_ERR;
        }
        
        /* Wait for reply */
        if (read_reply(response) == -1) {
                _pam_log(LOG_ERR, "read from socket failed!");
-               close_sock();
                return PAM_SERVICE_ERR;
        }
 
-       /* We are done with the socket - close it and avoid mischeif */
-       close_sock();
-
        /* Copy reply data from socket */
        if (response->result != WINBINDD_OK) {
                if (response->data.auth.pam_error != PAM_SUCCESS) {
@@ -149,7 +148,7 @@ static int winbind_auth_request(const char *user, const char *pass, int ctrl)
        strncpy(request.data.auth.pass, pass, 
                 sizeof(request.data.auth.pass)-1);
        
-        retval = pam_winbind_request(WINBINDD_PAM_AUTH, &request, &response);
+        retval = winbind_request(WINBINDD_PAM_AUTH, &request, &response);
 
        switch (retval) {
        case PAM_AUTH_ERR:
@@ -218,7 +217,7 @@ static int winbind_chauthtok_request(const char *user, const char *oldpass,
             request.data.chauthtok.newpass[0] = '\0';
         }
        
-        return pam_winbind_request(WINBINDD_PAM_CHAUTHTOK, &request, &response);
+        return winbind_request(WINBINDD_PAM_CHAUTHTOK, &request, &response);
 }
 
 /*
index fae635d8067fde692d967a415c1db1d4056cf08a..9897249e164101a19c78304785c87c4f045d8739 100644 (file)
@@ -90,4 +90,5 @@ do {                             \
 #define on(x, y) (x & y)
 #define off(x, y) (!(x & y))
 
-#include "winbind_client.h"
+#include "winbind_nss_config.h"
+#include "winbindd_nss.h"
index 51792f63fe2ef768b543032529bd75f81d1d4a74..9bc9faafb50e62794c6e71f8f43605e763843662 100644 (file)
@@ -5,8 +5,6 @@
 
    Copyright (C) Tim Potter 2000
    Copyright (C) Andrew Tridgell 2000
-   Copyright (C) Andrew Bartlett 2002
-   
    
    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
@@ -77,7 +75,7 @@ void init_response(struct winbindd_response *response)
 
 /* Close established socket */
 
-void close_sock(void)
+static void close_sock(void)
 {
        if (winbindd_fd != -1) {
                close(winbindd_fd);
@@ -85,75 +83,14 @@ void close_sock(void)
        }
 }
 
-/* Make sure socket handle isn't stdin, stdout or stderr */
-#define RECURSION_LIMIT 3
-
-static int make_nonstd_fd_internals(int fd, int limit /* Recursion limiter */) 
-{
-       int new_fd;
-       if (fd >= 0 && fd <= 2) {
-#ifdef F_DUPFD 
-               if ((new_fd = fcntl(fd, F_DUPFD, 3)) == -1) {
-                       return -1;
-               }
-               /* Parinoia */
-               if (new_fd < 3) {
-                       close(new_fd);
-                       return -1;
-               }
-               close(fd);
-               return new_fd;
-#else
-               if (limit <= 0)
-                       return -1;
-               
-               new_fd = dup(fd);
-               if (new_fd == -1) 
-                       return -1;
-
-               /* use the program stack to hold our list of FDs to close */
-               new_fd = make_nonstd_fd_internals(new_fd, limit - 1);
-               close(fd);
-               return new_fd;
-#endif
-       }
-       return fd;
-}
-
-static int make_safe_fd(int fd) 
-{
-       int result, flags;
-       int new_fd = make_nonstd_fd_internals(fd, RECURSION_LIMIT);
-       if (new_fd == -1) {
-               close(fd);
-               return -1;
-       }
-       /* Socket should be closed on exec() */
-       
-#ifdef FD_CLOEXEC
-       result = flags = fcntl(new_fd, F_GETFD, 0);
-       if (flags >= 0) {
-               flags |= FD_CLOEXEC;
-               result = fcntl( new_fd, F_SETFD, flags );
-       }
-       if (result < 0) {
-               close(new_fd);
-               return -1;
-       }
-#endif
-       return new_fd;
-}
-
 /* Connect to winbindd socket */
 
 int winbind_open_pipe_sock(void)
 {
-#ifdef HAVE_UNIXSOCKET
        struct sockaddr_un sunaddr;
        static pid_t our_pid;
        struct stat st;
        pstring path;
-       int fd;
        
        if (our_pid != getpid()) {
                close_sock();
@@ -207,13 +144,9 @@ int winbind_open_pipe_sock(void)
        
        /* Connect to socket */
        
-       if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) {
+       if ((winbindd_fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) {
                return -1;
        }
-
-       if ((winbindd_fd = make_safe_fd( fd)) == -1) {
-               return winbindd_fd;
-       }
        
        if (connect(winbindd_fd, (struct sockaddr *)&sunaddr, 
                    sizeof(sunaddr)) == -1) {
@@ -222,9 +155,6 @@ int winbind_open_pipe_sock(void)
        }
         
        return winbindd_fd;
-#else
-       return -1;
-#endif /* HAVE_UNIXSOCKET */
 }
 
 /* Write data to winbindd socket */
@@ -436,8 +366,8 @@ NSS_STATUS winbindd_get_response(struct winbindd_response *response)
 /* Handle simple types of requests */
 
 NSS_STATUS winbindd_request(int req_type, 
-                           struct winbindd_request *request,
-                           struct winbindd_response *response)
+                                struct winbindd_request *request,
+                                struct winbindd_response *response)
 {
        NSS_STATUS status;
 
index 875df231dca56694e5d98b2b702579c557213ca4..4d36acc51b3259ded314598b8c61a3bc842240d3 100644 (file)
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_WINBIND
 
-extern int winbindd_fd;
+/* Prototypes from common.h */
+
+NSS_STATUS winbindd_request(int req_type, 
+                           struct winbindd_request *request,
+                           struct winbindd_response *response);
 
 static char winbind_separator(void)
 {
@@ -446,10 +450,9 @@ static BOOL wbinfo_auth(char *username)
         d_printf("plaintext password authentication %s\n", 
                (result == NSS_STATUS_SUCCESS) ? "succeeded" : "failed");
 
-       if (response.data.auth.nt_status)
-               d_printf("error code was %s (0x%x)\n", 
-                        response.data.auth.nt_status_string, 
-                        response.data.auth.nt_status);
+       d_printf("error code was %s (0x%x)\n", 
+                response.data.auth.nt_status_string, 
+                response.data.auth.nt_status);
 
         return result == NSS_STATUS_SUCCESS;
 }
@@ -501,10 +504,9 @@ static BOOL wbinfo_auth_crap(char *username)
         d_printf("challenge/response password authentication %s\n", 
                (result == NSS_STATUS_SUCCESS) ? "succeeded" : "failed");
 
-       if (response.data.auth.nt_status)
-               d_printf("error code was %s (0x%x)\n", 
-                        response.data.auth.nt_status_string, 
-                        response.data.auth.nt_status);
+       d_printf("error code was %s (0x%x)\n", 
+              response.data.auth.nt_status_string, 
+              response.data.auth.nt_status);
 
         return result == NSS_STATUS_SUCCESS;
 }
@@ -606,17 +608,43 @@ static BOOL wbinfo_set_auth_user(char *username)
 static BOOL wbinfo_ping(void)
 {
         NSS_STATUS result;
-
+       
        result = winbindd_request(WINBINDD_PING, NULL, NULL);
 
        /* Display response */
 
-        d_printf("'ping' to winbindd %s on fd %d\n", 
-               (result == NSS_STATUS_SUCCESS) ? "succeeded" : "failed", winbindd_fd);
+        d_printf("'ping' to winbindd %s\n", 
+               (result == NSS_STATUS_SUCCESS) ? "succeeded" : "failed");
 
         return result == NSS_STATUS_SUCCESS;
 }
 
+/* Print program usage */
+
+static void usage(void)
+{
+       d_printf("Usage: wbinfo -ug | -n name | -sSY sid | -UG uid/gid | -tm "
+               "| -[aA] user%%password\n");
+       d_printf("\t-u\t\t\tlists all domain users\n");
+       d_printf("\t-g\t\t\tlists all domain groups\n");
+       d_printf("\t-n name\t\t\tconverts name to sid\n");
+       d_printf("\t-s sid\t\t\tconverts sid to name\n");
+       d_printf("\t-N name\t\t\tconverts NetBIOS name to IP (WINS)\n");
+       d_printf("\t-I name\t\t\tconverts IP address to NetBIOS name (WINS)\n");
+       d_printf("\t-U uid\t\t\tconverts uid to sid\n");
+       d_printf("\t-G gid\t\t\tconverts gid to sid\n");
+       d_printf("\t-S sid\t\t\tconverts sid to uid\n");
+       d_printf("\t-Y sid\t\t\tconverts sid to gid\n");
+       d_printf("\t-t\t\t\tcheck shared secret\n");
+       d_printf("\t-m\t\t\tlist trusted domains\n");
+       d_printf("\t-r user\t\t\tget user groups\n");
+       d_printf("\t-a user%%password\tauthenticate user\n");
+       d_printf("\t-A user%%password\tstore user and password used by winbindd (root only)\n");
+       d_printf("\t-p\t\t\t'ping' winbindd to see if it is alive\n");
+       d_printf("\t--sequence\t\tshow sequence numbers of all domains\n");
+       d_printf("\t--set-auth-user DOMAIN\\user%%password\tset password for restrict anonymous\n");
+}
+
 /* Main program */
 
 enum {
@@ -636,28 +664,28 @@ int main(int argc, char **argv)
        int result = 1;
 
        struct poptOption long_options[] = {
-               POPT_AUTOHELP
 
                /* longName, shortName, argInfo, argPtr, value, descrip, 
                   argDesc */
 
-               { "domain-users", 'u', POPT_ARG_NONE, 0, 'u', "Lists all domain users"},
-               { "domain-groups", 'g', POPT_ARG_NONE, 0, 'g', "Lists all domain groups" },
-               { "WINS-by-name", 'N', POPT_ARG_STRING, &string_arg, 'N', "Converts NetBIOS name to IP (WINS)" },
-               { "WINS-by-ip", 'I', POPT_ARG_STRING, &string_arg, 'I', "Converts IP address to NetBIOS name (WINS)" },
-               { "name-to-sid", 'n', POPT_ARG_STRING, &string_arg, 'n', "Converts name to sid" },
-               { "sid-to-name", 's', POPT_ARG_STRING, &string_arg, 's', "Converts sid to name" },
-               { "uid-to-sid", 'U', POPT_ARG_INT, &int_arg, 'U', "Converts uid to sid" },
-               { "gid-to-sid", 'G', POPT_ARG_INT, &int_arg, 'G', "Converts gid to sid" },
-               { "sid-to-uid", 'S', POPT_ARG_STRING, &string_arg, 'S', "Converts sid to uid" },
-               { "sid-to-gid", 'Y', POPT_ARG_STRING, &string_arg, 'Y', "Converts sid to gid" },
-               { "check-secret", 't', POPT_ARG_NONE, 0, 't', "Check shared secret" },
-               { "trusted-domains", 'm', POPT_ARG_NONE, 0, 'm', "List trusted domains" },
-               { "sequence", 0, POPT_ARG_NONE, 0, OPT_SEQUENCE, "show sequence numbers of all domains" },
-               { "user-groups", 'r', POPT_ARG_STRING, &string_arg, 'r', "Get user groups" },
-               { "authenticate", 'a', POPT_ARG_STRING, &string_arg, 'a', "authenticate user", "user%password" },
-               { "set-auth-user", 'A', POPT_ARG_STRING, &string_arg, OPT_SET_AUTH_USER, "Store user and password used by winbindd (root only)", "user%password" },
-               { "ping", 'p', POPT_ARG_NONE, 0, 'p', "'ping' winbindd to see if it is alive" },
+               { "help", 'h', POPT_ARG_NONE, 0, 'h' },
+               { "domain-users", 'u', POPT_ARG_NONE, 0, 'u' },
+               { "domain-groups", 'g', POPT_ARG_NONE, 0, 'g' },
+               { "WINS-by-name", 'N', POPT_ARG_STRING, &string_arg, 'N' },
+               { "WINS-by-ip", 'I', POPT_ARG_STRING, &string_arg, 'I' },
+               { "name-to-sid", 'n', POPT_ARG_STRING, &string_arg, 'n' },
+               { "sid-to-name", 's', POPT_ARG_STRING, &string_arg, 's' },
+               { "uid-to-sid", 'U', POPT_ARG_INT, &int_arg, 'U' },
+               { "gid-to-sid", 'G', POPT_ARG_INT, &int_arg, 'G' },
+               { "sid-to-uid", 'S', POPT_ARG_STRING, &string_arg, 'S' },
+               { "sid-to-gid", 'Y', POPT_ARG_STRING, &string_arg, 'Y' },
+               { "check-secret", 't', POPT_ARG_NONE, 0, 't' },
+               { "trusted-domains", 'm', POPT_ARG_NONE, 0, 'm' },
+               { "sequence", 0, POPT_ARG_NONE, 0, OPT_SEQUENCE },
+               { "user-groups", 'r', POPT_ARG_STRING, &string_arg, 'r' },
+               { "authenticate", 'a', POPT_ARG_STRING, &string_arg, 'a' },
+               { "set-auth-user", 'A', POPT_ARG_STRING, &string_arg, OPT_SET_AUTH_USER },
+               { "ping", 'p', POPT_ARG_NONE, 0, 'p' },
                { 0, 0, 0, 0 }
        };
 
@@ -680,17 +708,17 @@ int main(int argc, char **argv)
 
        load_interfaces();
 
-       /* Parse options */
-
-       pc = poptGetContext("wbinfo", argc, (const char **)argv, long_options, 0);
-
        /* Parse command line options */
 
        if (argc == 1) {
-               poptPrintHelp(pc, stderr, 0);
+               usage();
                return 1;
        }
 
+       /* Parse options */
+
+       pc = poptGetContext("wbinfo", argc, (const char **)argv, long_options, 0);
+
        while((opt = poptGetNextOpt(pc)) != -1) {
                if (got_command) {
                        d_fprintf(stderr, "No more than one command may be specified at once.\n");
@@ -706,6 +734,10 @@ int main(int argc, char **argv)
 
        while((opt = poptGetNextOpt(pc)) != -1) {
                switch (opt) {
+               case 'h':
+                       usage();
+                       result = 0;
+                       goto done;
                case 'u':
                        if (!print_domain_users()) {
                                d_printf("Error looking up domain users\n");
@@ -827,7 +859,7 @@ int main(int argc, char **argv)
                        break;
                default:
                        d_fprintf(stderr, "Invalid option\n");
-                       poptPrintHelp(pc, stderr, 0);
+                       usage();
                        goto done;
                }
        }
index 0b4c0ce1d087786d97dc4b6f6a7378ff1b29a544..594b5fbadb29fad20028def2850c033b6a7399ca 100644 (file)
@@ -21,7 +21,8 @@
    Boston, MA  02111-1307, USA.   
 */
 
-#include "winbind_client.h"
+#include "winbind_nss_config.h"
+#include "winbindd_nss.h"
 
 #ifdef HAVE_NS_API_H
 #undef VOLATILE
 
 extern int winbindd_fd;
 
+void init_request(struct winbindd_request *req,int rq_type);
+NSS_STATUS winbindd_send_request(int req_type,
+                                struct winbindd_request *request);
+NSS_STATUS winbindd_get_response(struct winbindd_response *response);
+NSS_STATUS winbindd_request(int req_type, 
+                                struct winbindd_request *request,
+                                struct winbindd_response *response);
+int winbind_open_pipe_sock(void);
+int write_sock(void *buffer, int count);
+int read_reply(struct winbindd_response *response);
+void free_response(struct winbindd_response *response);
 
 #ifdef HAVE_NS_API_H
 /* IRIX version */
index d9a9b8aaaefe07a250b89cc79070febc212940ef..b9c738211e174dfb56b604a751cee479c34d1392 100644 (file)
 #include <unistd.h>
 #endif
 
-#ifdef HAVE_SYS_SELECT_H
-#include <sys/select.h>
-#endif
-
 #ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
 #include <string.h>
 #endif
 
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#else
-#ifdef HAVE_SYS_FCNTL_H
-#include <sys/fcntl.h>
-#endif
-#endif
-
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <errno.h>
index bb4a1b78ec5509aec5fa40e0468b6e6e30c064a1..256c0203c0e2c2bb9dff2f139c55ac0e47b44fde 100644 (file)
@@ -628,8 +628,8 @@ static void process_loop(int accept_sock)
 
                                        if (state->read_buf_len >= sizeof(uint32)
                                            && *(uint32 *) &state->request != sizeof(state->request)) {
-                                               DEBUG(0,("process_loop: Invalid request size from pid %d: %d bytes sent, should be %d\n",
-                                                               state->request.pid, *(uint32 *) &state->request, sizeof(state->request)));
+                                               DEBUG(0,("process_loop: Invalid request size (%d) send, should be (%d)\n",
+                                                               *(uint32 *) &state->request, sizeof(state->request)));
 
                                                remove_client(state);
                                                break;
@@ -858,7 +858,6 @@ static void usage(void)
                pidfile_create("winbindd");
        }
 
-
 #if HAVE_SETPGID
        /*
         * If we're interactive we want to set our own process group for
index 4f91ed0f20c31c325b6e1a4a1672c10c22436d24..b0b70178a45ca9ea2e07cfbd5111fdc5ff1a3524 100644 (file)
@@ -143,7 +143,7 @@ static ADS_STRUCT *ads_cached_connection(struct winbindd_domain *domain)
                /* if we get ECONNREFUSED then it might be a NT4
                    server, fall back to MSRPC */
                if (status.error_type == ADS_ERROR_SYSTEM &&
-                   status.err.rc == ECONNREFUSED) {
+                   status.rc == ECONNREFUSED) {
                        DEBUG(1,("Trying MSRPC methods\n"));
                        domain->methods = &msrpc_methods;
                }
@@ -170,9 +170,9 @@ static void sid_from_rid(struct winbindd_domain *domain, uint32 rid, DOM_SID *si
 static enum SID_NAME_USE ads_atype_map(uint32 atype)
 {
        switch (atype & 0xF0000000) {
-       case ATYPE_GLOBAL_GROUP:
+       case ATYPE_GROUP:
                return SID_NAME_DOM_GRP;
-       case ATYPE_ACCOUNT:
+       case ATYPE_USER:
                return SID_NAME_USER;
        default:
                DEBUG(1,("hmm, need to map account type 0x%x\n", atype));
@@ -339,7 +339,7 @@ static NTSTATUS enum_dom_groups(struct winbindd_domain *domain,
 
                if (!ads_pull_uint32(ads, msg, "sAMAccountType", 
                                     &account_type) ||
-                   !(account_type & ATYPE_GLOBAL_GROUP)) continue;
+                   !(account_type & ATYPE_GROUP)) continue;
 
                name = pull_username(ads, mem_ctx, msg);
                gecos = ads_pull_string(ads, mem_ctx, msg, "name");
index 01f556988930463a2db301e2725f0ddd876c24e7..2dec9f0558606ca33fdc24fecac34679f28d2af4 100644 (file)
@@ -109,7 +109,7 @@ static BOOL cm_ads_find_dc(const char *domain, struct in_addr *dc_ip, fstring sr
        }
 
        /* we don't need to bind, just connect */
-       ads->auth.flags |= ADS_AUTH_NO_BIND;
+       ads->auth.no_bind = 1;
 
        DEBUG(4,("cm_ads_find_dc: domain=%s\n", domain));
 
@@ -145,16 +145,11 @@ static BOOL cm_rpc_find_dc(const char *domain, struct in_addr *dc_ip, fstring sr
 
        /* Lookup domain controller name. Try the real PDC first to avoid
           SAM sync delays */
-       if (get_dc_list(True, domain, &ip_list, &count) &&
-           name_status_find(domain, 0x1c, 0x20, ip_list[0], srv_name)) {
-               *dc_ip = ip_list[0];
-               SAFE_FREE(ip_list);
-               return True;
-       }
-
-       if (!get_dc_list(False, domain, &ip_list, &count)) {
-               DEBUG(3, ("Could not look up dc's for domain %s\n", domain));
-               return False;
+       if (!get_dc_list(True, domain, &ip_list, &count)) {
+               if (!get_dc_list(False, domain, &ip_list, &count)) {
+                       DEBUG(3, ("Could not look up dc's for domain %s\n", domain));
+                       return False;
+               }
        }
 
        /* Pick a nice close server */
@@ -382,6 +377,16 @@ static NTSTATUS cm_open_connection(const char *domain,const char *pipe_name,
        fstrcpy(new_conn->domain, domain);
        fstrcpy(new_conn->pipe_name, pipe_name);
        
+       /* Look for a domain controller for this domain.  Negative results
+          are cached so don't bother applying the caching for this
+          function just yet.  */
+
+       if (!cm_get_dc_name(domain, new_conn->controller, &dc_ip)) {
+               result = NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND;
+               add_failed_connection_entry(new_conn, result);
+               return result;
+       }
+               
        /* Return false if we have tried to look up this domain and netbios
           name before and failed. */
 
@@ -413,16 +418,6 @@ static NTSTATUS cm_open_connection(const char *domain,const char *pipe_name,
                return result;
        }
 
-       /* Look for a domain controller for this domain.  Negative results
-          are cached so don't bother applying the caching for this
-          function just yet.  */
-
-       if (!cm_get_dc_name(domain, new_conn->controller, &dc_ip)) {
-               result = NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND;
-               add_failed_connection_entry(new_conn, result);
-               return result;
-       }
-               
        /* Initialise SMB connection */
 
        cm_get_ipc_userpass(&ipc_username, &ipc_domain, &ipc_password);
@@ -864,7 +859,6 @@ NTSTATUS cm_get_netlogon_cli(char *domain, unsigned char *trust_passwd,
 {
        NTSTATUS result = NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND;
        struct winbindd_cm_conn *conn;
-       uint32 neg_flags = 0x000001ff;
 
        if (!cli) {
                return NT_STATUS_INVALID_PARAMETER;
@@ -876,7 +870,8 @@ NTSTATUS cm_get_netlogon_cli(char *domain, unsigned char *trust_passwd,
                return result;
        }
        
-       result = cli_nt_setup_creds(conn->cli, get_sec_chan(), trust_passwd, &neg_flags, 2);
+       result = cli_nt_setup_creds(conn->cli, (lp_server_role() == ROLE_DOMAIN_MEMBER) ?
+                                       SEC_CHAN_WKSTA : SEC_CHAN_BDC, trust_passwd);
 
        if (!NT_STATUS_IS_OK(result)) {
                DEBUG(0, ("error connecting to domain password server: %s\n",
@@ -889,7 +884,8 @@ NTSTATUS cm_get_netlogon_cli(char *domain, unsigned char *trust_passwd,
                        }
                        
                        /* Try again */
-                       result = cli_nt_setup_creds( conn->cli, get_sec_chan(),trust_passwd, &neg_flags, 2);
+                       result = cli_nt_setup_creds(conn->cli, (lp_server_role() == ROLE_DOMAIN_MEMBER) ?
+                                                       SEC_CHAN_WKSTA : SEC_CHAN_BDC, trust_passwd);
                }
                
                if (!NT_STATUS_IS_OK(result)) {
index 368bf10cea5b40770a71fdf973bffb9dfe0e15a2..9eea94e7c0d60cbeed27fe04eca6ad0d4c4a7c3d 100644 (file)
@@ -127,9 +127,6 @@ struct winbindd_request {
                uid_t uid;           /* getpwuid, uid_to_sid */
                gid_t gid;           /* getgrgid, gid_to_sid */
                struct {
-                       /* We deliberatedly don't split into domain/user to
-                           avoid having the client know what the separator
-                           character is. */    
                        fstring user;
                        fstring pass;
                } auth;              /* pam_winbind auth module */
index 3e7a8ad97139fada6e6423df24b476a09e67846f..a8b508a49c6b93ae4f374b460dc30a57fc0b247c 100644 (file)
@@ -147,7 +147,7 @@ done:
        fstrcpy(state->response.data.auth.error_string, nt_errstr(result));
        state->response.data.auth.pam_error = nt_status_to_pam(result);
 
-       DEBUG(NT_STATUS_IS_OK(result) ? 5 : 2, ("Plain-text authentication for user %s returned %s (PAM: %d)\n", 
+       DEBUG(NT_STATUS_IS_OK(result) ? 5 : 2, ("Plain-text authenticaion for user %s returned %s (PAM: %d)\n", 
              state->request.data.auth.user, 
              state->response.data.auth.nt_status_string,
              state->response.data.auth.pam_error));          
@@ -183,7 +183,7 @@ enum winbindd_result winbindd_pam_auth_crap(struct winbindd_cli_state *state)
        /* Ensure null termination */
        state->request.data.auth_crap.domain[sizeof(state->request.data.auth_crap.domain)-1]='\0';
 
-       if (!(mem_ctx = talloc_init_named("winbind pam auth crap for (utf8) %s", state->request.data.auth_crap.user))) {
+       if (!(mem_ctx = talloc_init_named("winbind pam auth crap for (utf8) %s", state->request.data.auth.user))) {
                DEBUG(0, ("winbindd_pam_auth_crap: could not talloc_init()!\n"));
                result = NT_STATUS_NO_MEMORY;
                goto done;
@@ -292,7 +292,7 @@ done:
        state->response.data.auth.pam_error = nt_status_to_pam(result);
 
        DEBUG(NT_STATUS_IS_OK(result) ? 5 : 2, 
-             ("NTLM CRAP authentication for user [%s]\\[%s] returned %s (PAM: %d)\n", 
+             ("NTLM CRAP authenticaion for user [%s]\\[%s] returned %s (PAM: %d)\n", 
               domain,
               user,
               state->response.data.auth.nt_status_string,
diff --git a/source3/nsswitch/winbindd_proto.h b/source3/nsswitch/winbindd_proto.h
new file mode 100644 (file)
index 0000000..ef44fb6
--- /dev/null
@@ -0,0 +1,142 @@
+#ifndef _WINBINDD_PROTO_H_
+#define _WINBINDD_PROTO_H_
+
+/* This file is automatically generated with "make proto". DO NOT EDIT */
+
+
+/* The following definitions come from nsswitch/winbindd.c  */
+
+void winbind_process_packet(struct winbindd_cli_state *state);
+void winbind_client_read(struct winbindd_cli_state *state);
+int winbind_setup_common(void);
+
+/* The following definitions come from nsswitch/winbindd_ads.c  */
+
+ADS_STATUS ads_do_search_retry(ADS_STRUCT *ads, const char *bind_path, int scope, 
+                              const char *exp,
+                              const char **attrs, void **res);
+ADS_STATUS ads_search_retry(ADS_STRUCT *ads, void **res, 
+                           const char *exp, 
+                           const char **attrs);
+ADS_STATUS ads_search_retry_dn(ADS_STRUCT *ads, void **res, 
+                              const char *dn, 
+                              const char **attrs);
+
+/* The following definitions come from nsswitch/winbindd_cache.c  */
+
+void wcache_flush_cache(void);
+void winbindd_check_cache_size(time_t t);
+struct cache_entry *centry_start(struct winbindd_domain *domain, NTSTATUS status);
+
+/* The following definitions come from nsswitch/winbindd_cm.c  */
+
+CLI_POLICY_HND *cm_get_lsa_handle(char *domain);
+CLI_POLICY_HND *cm_get_sam_handle(char *domain);
+CLI_POLICY_HND *cm_get_sam_dom_handle(char *domain, DOM_SID *domain_sid);
+CLI_POLICY_HND *cm_get_sam_user_handle(char *domain, DOM_SID *domain_sid,
+                                      uint32 user_rid);
+CLI_POLICY_HND *cm_get_sam_group_handle(char *domain, DOM_SID *domain_sid,
+                                       uint32 group_rid);
+NTSTATUS cm_get_netlogon_cli(char *domain, unsigned char *trust_passwd,
+                            struct cli_state **cli);
+void winbindd_cm_status(void);
+
+/* The following definitions come from nsswitch/winbindd_dual.c  */
+
+int dual_select_setup(fd_set *fds, int maxfd);
+void dual_select(fd_set *fds);
+void dual_send_request(struct winbindd_cli_state *state);
+void do_dual_daemon(void);
+
+/* The following definitions come from nsswitch/winbindd_group.c  */
+
+enum winbindd_result winbindd_getgrnam(struct winbindd_cli_state *state);
+enum winbindd_result winbindd_getgrgid(struct winbindd_cli_state *state);
+enum winbindd_result winbindd_setgrent(struct winbindd_cli_state *state);
+enum winbindd_result winbindd_endgrent(struct winbindd_cli_state *state);
+enum winbindd_result winbindd_getgrent(struct winbindd_cli_state *state);
+enum winbindd_result winbindd_list_groups(struct winbindd_cli_state *state);
+enum winbindd_result winbindd_getgroups(struct winbindd_cli_state *state);
+
+/* The following definitions come from nsswitch/winbindd_idmap.c  */
+
+BOOL winbindd_idmap_get_uid_from_sid(DOM_SID *sid, uid_t *uid);
+BOOL winbindd_idmap_get_gid_from_sid(DOM_SID *sid, gid_t *gid);
+BOOL winbindd_idmap_get_uid_from_rid(const char *dom_name, uint32 rid, uid_t *uid);
+BOOL winbindd_idmap_get_gid_from_rid(const char *dom_name, uint32 rid, gid_t *gid);
+BOOL get_sid_from_id(int id, DOM_SID *sid, BOOL isgroup);
+BOOL winbindd_idmap_get_sid_from_uid(uid_t uid, DOM_SID *sid);
+BOOL winbindd_idmap_get_sid_from_gid(gid_t gid, DOM_SID *sid);
+BOOL winbindd_idmap_get_rid_from_uid(uid_t uid, uint32 *user_rid,
+                                     struct winbindd_domain **domain);
+BOOL winbindd_idmap_get_rid_from_gid(gid_t gid, uint32 *group_rid, 
+                                     struct winbindd_domain **domain);
+BOOL winbindd_idmap_init(void);
+BOOL winbindd_idmap_close(void);
+void winbindd_idmap_status(void);
+
+/* The following definitions come from nsswitch/winbindd_misc.c  */
+
+enum winbindd_result winbindd_check_machine_acct(struct winbindd_cli_state *state);
+enum winbindd_result winbindd_list_trusted_domains(struct winbindd_cli_state
+                                                  *state);
+enum winbindd_result winbindd_show_sequence(struct winbindd_cli_state *state);
+enum winbindd_result winbindd_ping(struct winbindd_cli_state
+                                                  *state);
+enum winbindd_result winbindd_info(struct winbindd_cli_state *state);
+enum winbindd_result winbindd_interface_version(struct winbindd_cli_state *state);
+enum winbindd_result winbindd_domain_name(struct winbindd_cli_state *state);
+
+/* The following definitions come from nsswitch/winbindd_pam.c  */
+
+enum winbindd_result winbindd_pam_auth(struct winbindd_cli_state *state) ;
+enum winbindd_result winbindd_pam_auth_crap(struct winbindd_cli_state *state) ;
+enum winbindd_result winbindd_pam_chauthtok(struct winbindd_cli_state *state);
+
+/* The following definitions come from nsswitch/winbindd_rpc.c  */
+
+
+/* The following definitions come from nsswitch/winbindd_sid.c  */
+
+enum winbindd_result winbindd_lookupsid(struct winbindd_cli_state *state);
+enum winbindd_result winbindd_lookupname(struct winbindd_cli_state *state);
+enum winbindd_result winbindd_sid_to_uid(struct winbindd_cli_state *state);
+enum winbindd_result winbindd_sid_to_gid(struct winbindd_cli_state *state);
+enum winbindd_result winbindd_uid_to_sid(struct winbindd_cli_state *state);
+enum winbindd_result winbindd_gid_to_sid(struct winbindd_cli_state *state);
+
+/* The following definitions come from nsswitch/winbindd_user.c  */
+
+enum winbindd_result winbindd_getpwnam(struct winbindd_cli_state *state) ;
+enum winbindd_result winbindd_getpwuid(struct winbindd_cli_state *state);
+enum winbindd_result winbindd_setpwent(struct winbindd_cli_state *state);
+enum winbindd_result winbindd_endpwent(struct winbindd_cli_state *state);
+enum winbindd_result winbindd_getpwent(struct winbindd_cli_state *state);
+enum winbindd_result winbindd_list_users(struct winbindd_cli_state *state);
+
+/* The following definitions come from nsswitch/winbindd_util.c  */
+
+struct winbindd_domain *domain_list(void);
+void free_domain_list(void);
+BOOL init_domain_list(void);
+struct winbindd_domain *find_domain_from_name(const char *domain_name);
+struct winbindd_domain *find_domain_from_sid(DOM_SID *sid);
+BOOL winbindd_lookup_sid_by_name(struct winbindd_domain *domain, 
+                                const char *name, DOM_SID *sid, 
+                                enum SID_NAME_USE *type);
+BOOL winbindd_lookup_name_by_sid(DOM_SID *sid,
+                                fstring dom_name,
+                                fstring name,
+                                enum SID_NAME_USE *type);
+void free_getent_state(struct getent_state *state);
+BOOL winbindd_param_init(void);
+BOOL check_domain_env(char *domain_env, char *domain);
+BOOL parse_domain_user(const char *domuser, fstring domain, fstring user);
+void fill_domain_username(fstring name, const char *domain, const char *user);
+
+/* The following definitions come from nsswitch/winbindd_wins.c  */
+
+enum winbindd_result winbindd_wins_byip(struct winbindd_cli_state *state);
+enum winbindd_result winbindd_wins_byname(struct winbindd_cli_state *state);
+
+#endif /*  _WINBINDD_PROTO_H_  */
index 047280e21e48bc2c31a1c7a77dc4ea19e6192401..5ec34f663d8ee583020f28da821a279fa49402a5 100644 (file)
@@ -315,7 +315,6 @@ static NTSTATUS query_user(struct winbindd_domain *domain,
        cli_samr_close(hnd->cli, mem_ctx, &user_pol);
        got_user_pol = False;
 
-       user_info->user_rid = user_rid;
        user_info->group_rid = ctr->info.id21->group_rid;
        user_info->acct_name = unistr2_tdup(mem_ctx, 
                                            &ctr->info.id21->uni_user_name);
@@ -420,7 +419,7 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
         uint32 des_access = SEC_RIGHTS_MAXIMUM_ALLOWED;
         BOOL got_dom_pol = False, got_group_pol = False;
 
-       DEBUG(10,("rpc: lookup_groupmem %s rid=%u\n", domain->name, group_rid));
+       DEBUG(3,("rpc: lookup_groupmem rid=%u\n", group_rid));
 
        *num_names = 0;
 
@@ -524,7 +523,7 @@ static NTSTATUS sequence_number(struct winbindd_domain *domain, uint32 *seq)
        BOOL got_dom_pol = False;
        uint32 des_access = SEC_RIGHTS_MAXIMUM_ALLOWED;
 
-       DEBUG(10,("rpc: fetch sequence_number for %s\n", domain->name));
+       DEBUG(3,("rpc: sequence_number\n"));
 
        *seq = DOM_SEQUENCE_NONE;
 
index 2016c27881ddf369a229c0fd5ff8915ad23548e0..daa3abb3400529179ca1fdb3f21b462df6c15bea 100644 (file)
@@ -83,16 +83,10 @@ static struct winbindd_domain *add_trusted_domain(const char *domain_name, const
        /* We can't call domain_list() as this function is called from
           init_domain_list() and we'll get stuck in a loop. */
        for (domain = _domain_list; domain; domain = domain->next) {
-               if (strcasecmp(domain_name, domain->name) == 0 ||
-                   strcasecmp(domain_name, domain->alt_name) == 0) {
+               if (strcmp(domain_name, domain->name) == 0 ||
+                   strcmp(domain_name, domain->alt_name) == 0) {
                        return domain;
                }
-               if (alt_name && *alt_name) {
-                       if (strcasecmp(alt_name, domain->name) == 0 ||
-                           strcasecmp(alt_name, domain->alt_name) == 0) {
-                               return domain;
-                       }
-               }
        }
         
        /* Create new domain entry */
index 91eae3c7a1960712a8810a5e9b5394a6de47af5b..0f527552525c88515ecb8a715bb0f6e68c9d75ec 100644 (file)
@@ -96,8 +96,6 @@ int pam_sm_chauthtok(pam_handle_t *pamh, int flags,
     char *pass_old;
     char *pass_new;
 
-    NTSTATUS nt_status;
-
     /* Samba initialization. */
     setup_logging( "pam_smbpass", False );
     in_client = True;
@@ -126,11 +124,10 @@ int pam_sm_chauthtok(pam_handle_t *pamh, int flags,
     }
 
     /* obtain user record */
-    if (!NT_STATUS_IS_OK(nt_status = pdb_init_sam(&sampass))) {
-           return nt_status_to_pam(nt_status);
-    }
+    pdb_init_sam(&sampass);
+    pdb_getsampwnam(sampass,user);
 
-    if (!pdb_getsampwnam(sampass,user)) {
+    if (sampass == NULL) {
         _log_err( LOG_ALERT, "Failed to find entry for user %s.", user );
         return PAM_USER_UNKNOWN;
     }
index c484439837046a5a4626f2b327113942bbf61188..b16f4483f842547e56bcbe629386bb7ec10d6e3d 100644 (file)
@@ -112,7 +112,6 @@ typedef struct
        char *szSMBPasswdFile;
        char *szPrivateDir;
        char **szPassdbBackend;
-       char **szSamBackend;
        char *szPasswordServer;
        char *szSocketOptions;
        char *szWorkGroup;
@@ -140,7 +139,6 @@ typedef struct
        char *szDelGroupScript;
        char *szAddUserToGroupScript;
        char *szDelUserFromGroupScript;
-       char *szSetPrimaryGroupScript;
        char *szAddMachineScript;
        char *szShutdownScript;
        char *szAbortShutdownScript;
@@ -173,6 +171,7 @@ typedef struct
        int max_xmit;
        int max_mux;
        int max_open_files;
+       int max_packet;
        int pwordlevel;
        int unamelevel;
        int deadtime;
@@ -207,11 +206,11 @@ typedef struct
        int iLockSpinTime;
        char *szLdapMachineSuffix;
        char *szLdapUserSuffix;
+       int ldap_port;
        int ldap_ssl;
        char *szLdapSuffix;
        char *szLdapFilter;
        char *szLdapAdminDn;
-       int ldap_passwd_sync; 
        BOOL bMsAddPrinterWizard;
        BOOL bDNSproxy;
        BOOL bWINSsupport;
@@ -232,6 +231,7 @@ typedef struct
        BOOL bReadPrediction;
        BOOL bReadbmpx;
        BOOL bSyslogOnly;
+       BOOL bAdminLog;
        BOOL bBrowseList;
        BOOL bNISHomeMap;
        BOOL bTimeServer;
@@ -335,6 +335,7 @@ typedef struct
        int iOplockContentionLimit;
        int iCSCPolicy;
        int iBlock_size;
+       BOOL bAlternatePerm;
        BOOL bPreexecClose;
        BOOL bRootpreexecClose;
        BOOL bCaseSensitive;
@@ -342,7 +343,6 @@ typedef struct
        BOOL bShortCasePreserve;
        BOOL bCaseMangle;
        BOOL bHideDotFiles;
-       BOOL bHideSpecialFiles;
        BOOL bHideUnReadable;
        BOOL bHideUnWriteableFiles;
        BOOL bBrowseable;
@@ -385,10 +385,6 @@ typedef struct
        BOOL bUseClientDriver;
        BOOL bDefaultDevmode;
        BOOL bNTAclSupport;
-#ifdef WITH_SENDFILE
-       BOOL bUseSendfile;
-#endif
-       BOOL bProfileAcls;
 
        char dummy[3];          /* for alignment */
 }
@@ -459,6 +455,7 @@ static service sDefault = {
        2,                      /* iOplockContentionLimit */
        0,                      /* iCSCPolicy */
        1024,           /* iBlock_size */
+       False,                  /* bAlternatePerm */
        False,                  /* bPreexecClose */
        False,                  /* bRootpreexecClose */
        False,                  /* case sensitive */
@@ -466,7 +463,6 @@ static service sDefault = {
        True,                   /* short case preserve */
        False,                  /* case mangle */
        True,                   /* bHideDotFiles */
-       False,                  /* bHideSpecialFiles */
        False,                  /* bHideUnReadable */
        False,                  /* bHideUnWriteableFiles */
        True,                   /* bBrowseable */
@@ -509,10 +505,6 @@ static service sDefault = {
        False,                  /* bUseClientDriver */
        False,                  /* bDefaultDevmode */
        True,                   /* bNTAclSupport */
-#ifdef WITH_SENDFILE
-       False,                  /* bUseSendfile */
-#endif
-       False,                  /* bProfileAcls */
 
        ""                      /* dummy */
 };
@@ -600,22 +592,6 @@ static struct enum_list enum_ldap_ssl[] = {
        {-1, NULL}
 };
 
-static struct enum_list enum_ldap_passwd_sync[] = {
-       {LDAP_PASSWD_SYNC_ON, "Yes"},
-       {LDAP_PASSWD_SYNC_ON, "yes"},
-       {LDAP_PASSWD_SYNC_ON, "on"},
-       {LDAP_PASSWD_SYNC_ON, "On"},
-       {LDAP_PASSWD_SYNC_OFF, "no"},
-       {LDAP_PASSWD_SYNC_OFF, "No"},
-       {LDAP_PASSWD_SYNC_OFF, "off"},
-       {LDAP_PASSWD_SYNC_OFF, "Off"},
-#ifdef LDAP_EXOP_X_MODIFY_PASSWD       
-       {LDAP_PASSWD_SYNC_ONLY, "Only"},
-       {LDAP_PASSWD_SYNC_ONLY, "only"},
-#endif /* LDAP_EXOP_X_MODIFY_PASSWD */ 
-       {-1, NULL}
-};
-
 /* Types of machine we can announce as. */
 #define ANNOUNCE_AS_NT_SERVER 1
 #define ANNOUNCE_AS_WIN95 2
@@ -690,75 +666,66 @@ static struct enum_list enum_map_to_guest[] = {
        {-1, NULL}
 };
 
-/* Note: We do not initialise the defaults union - it is not allowed in ANSI C
- *
- * Note: We have a flag called FLAG_DEVELOPER but is not used at this time, it
- * is implied in current control logic. This may change at some later time. A
- * flag value of 0 means - show as development option only.
- *
- * The FLAG_HIDE is explicit. Paramters set this way do NOT appear in any edit
- * screen in SWAT. This is used to exclude parameters as well as to squash all
- * parameters that have been duplicated by pseudonyms.
- */
+/* note that we do not initialise the defaults union - it is not allowed in ANSI C */
 static struct parm_struct parm_table[] = {
        {"Base Options", P_SEP, P_SEPARATOR},
 
-       {"dos charset", P_STRING, P_GLOBAL, &Globals.dos_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"unix charset", P_STRING, P_GLOBAL, &Globals.unix_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"display charset", P_STRING, P_GLOBAL, &Globals.display_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"comment", P_STRING, P_LOCAL, &sDefault.comment, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER},
-       {"path", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER},
-       {"directory", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, FLAG_HIDE},
-       {"workgroup", P_USTRING, P_GLOBAL, &Globals.szWorkGroup, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER},
-       {"realm", P_USTRING, P_GLOBAL, &Globals.szRealm, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER},
-       {"ADS server", P_STRING, P_GLOBAL, &Globals.szADSserver, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER},
-       {"netbios name", P_UGSTRING, P_GLOBAL, global_myname, handle_netbios_name, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER},
-       {"netbios aliases", P_LIST, P_GLOBAL, &Globals.szNetbiosAliases, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER},
-       {"netbios scope", P_UGSTRING, P_GLOBAL, global_scope, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"server string", P_STRING, P_GLOBAL, &Globals.szServerString, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED  | FLAG_DEVELOPER},
-       {"interfaces", P_LIST, P_GLOBAL, &Globals.szInterfaces, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER},
-       {"bind interfaces only", P_BOOL, P_GLOBAL, &Globals.bBindInterfacesOnly, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER},
+       {"dos charset", P_STRING, P_GLOBAL, &Globals.dos_charset, NULL, NULL, 0},
+       {"unix charset", P_STRING, P_GLOBAL, &Globals.unix_charset, NULL, NULL, 0},
+       {"display charset", P_STRING, P_GLOBAL, &Globals.display_charset, NULL, NULL, 0},
+       {"comment", P_STRING, P_LOCAL, &sDefault.comment, NULL, NULL, FLAG_BASIC | FLAG_SHARE | FLAG_PRINT},
+       {"path", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, FLAG_BASIC | FLAG_SHARE | FLAG_PRINT},
+       {"directory", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, 0},
+       {"workgroup", P_USTRING, P_GLOBAL, &Globals.szWorkGroup, NULL, NULL, FLAG_BASIC},
+       {"realm", P_USTRING, P_GLOBAL, &Globals.szRealm, NULL, NULL, FLAG_BASIC},
+       {"ADS server", P_STRING, P_GLOBAL, &Globals.szADSserver, NULL, NULL, FLAG_BASIC},
+       {"netbios name", P_UGSTRING, P_GLOBAL, global_myname, handle_netbios_name, NULL, FLAG_BASIC},
+       {"netbios aliases", P_LIST, P_GLOBAL, &Globals.szNetbiosAliases, NULL, NULL, 0},
+       {"netbios scope", P_UGSTRING, P_GLOBAL, global_scope, NULL, NULL, 0},
+       {"server string", P_STRING, P_GLOBAL, &Globals.szServerString, NULL, NULL, FLAG_BASIC },
+       {"interfaces", P_LIST, P_GLOBAL, &Globals.szInterfaces, NULL, NULL, FLAG_BASIC},
+       {"bind interfaces only", P_BOOL, P_GLOBAL, &Globals.bBindInterfacesOnly, NULL, NULL, 0},
 
        {"Security Options", P_SEP, P_SEPARATOR},
        
-       {"security", P_ENUM, P_GLOBAL, &Globals.security, NULL, enum_security, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER},
-       {"auth methods", P_LIST, P_GLOBAL, &Globals.AuthMethods, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER},
-       {"encrypt passwords", P_BOOL, P_GLOBAL, &Globals.bEncryptPasswords, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER},
-       {"update encrypted", P_BOOL, P_GLOBAL, &Globals.bUpdateEncrypt, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"allow trusted domains", P_BOOL, P_GLOBAL, &Globals.bAllowTrustedDomains, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"hosts equiv", P_STRING, P_GLOBAL, &Globals.szHostsEquiv, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"min passwd length", P_INTEGER, P_GLOBAL, &Globals.min_passwd_length, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"min password length", P_INTEGER, P_GLOBAL, &Globals.min_passwd_length, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"map to guest", P_ENUM, P_GLOBAL, &Globals.map_to_guest, NULL, enum_map_to_guest, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"null passwords", P_BOOL, P_GLOBAL, &Globals.bNullPasswords, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"obey pam restrictions", P_BOOL, P_GLOBAL, &Globals.bObeyPamRestrictions, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"password server", P_STRING, P_GLOBAL, &Globals.szPasswordServer, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER},
-       {"smb passwd file", P_STRING, P_GLOBAL, &Globals.szSMBPasswdFile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"private dir", P_STRING, P_GLOBAL, &Globals.szPrivateDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"passdb backend", P_LIST, P_GLOBAL, &Globals.szPassdbBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"sam backend", P_LIST, P_GLOBAL, &Globals.szSamBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"non unix account range", P_STRING, P_GLOBAL, &Globals.szNonUnixAccountRange, handle_non_unix_account_range, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"algorithmic rid base", P_INTEGER, P_GLOBAL, &Globals.bAlgorithmicRidBase, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"root directory", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"root dir", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"root", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, FLAG_HIDE | FLAG_DEVELOPER},
-       {"guest account", P_STRING, P_GLOBAL, &Globals.szGuestaccount, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER},
+       {"security", P_ENUM, P_GLOBAL, &Globals.security, NULL, enum_security, FLAG_BASIC},
+       {"auth methods", P_LIST, P_GLOBAL, &Globals.AuthMethods, NULL, NULL, FLAG_BASIC},
+       {"encrypt passwords", P_BOOL, P_GLOBAL, &Globals.bEncryptPasswords, NULL, NULL, FLAG_BASIC},
+       {"update encrypted", P_BOOL, P_GLOBAL, &Globals.bUpdateEncrypt, NULL, NULL, FLAG_BASIC},
+       {"allow trusted domains", P_BOOL, P_GLOBAL, &Globals.bAllowTrustedDomains, NULL, NULL, 0},
+       {"alternate permissions", P_BOOL, P_LOCAL, &sDefault.bAlternatePerm, NULL, NULL, FLAG_GLOBAL | FLAG_DEPRECATED},
+       {"hosts equiv", P_STRING, P_GLOBAL, &Globals.szHostsEquiv, NULL, NULL, 0},
+       {"min passwd length", P_INTEGER, P_GLOBAL, &Globals.min_passwd_length, NULL, NULL, 0},
+       {"min password length", P_INTEGER, P_GLOBAL, &Globals.min_passwd_length, NULL, NULL, 0},
+       {"map to guest", P_ENUM, P_GLOBAL, &Globals.map_to_guest, NULL, enum_map_to_guest, 0},
+       {"null passwords", P_BOOL, P_GLOBAL, &Globals.bNullPasswords, NULL, NULL, 0},
+       {"obey pam restrictions", P_BOOL, P_GLOBAL, &Globals.bObeyPamRestrictions, NULL, NULL, 0},
+       {"password server", P_STRING, P_GLOBAL, &Globals.szPasswordServer, NULL, NULL, 0},
+       {"smb passwd file", P_STRING, P_GLOBAL, &Globals.szSMBPasswdFile, NULL, NULL, 0},
+       {"private dir", P_STRING, P_GLOBAL, &Globals.szPrivateDir, NULL, NULL, 0},
+       {"passdb backend", P_LIST, P_GLOBAL, &Globals.szPassdbBackend, NULL, NULL, 0},
+       {"non unix account range", P_STRING, P_GLOBAL, &Globals.szNonUnixAccountRange, handle_non_unix_account_range, NULL, 0},
+       {"algorithmic rid base", P_INTEGER, P_GLOBAL, &Globals.bAlgorithmicRidBase, NULL, NULL, 0},
+       {"root directory", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, 0},
+       {"root dir", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, 0},
+       {"root", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, 0},
+       {"guest account", P_STRING, P_GLOBAL, &Globals.szGuestaccount, NULL, NULL, FLAG_BASIC},
        
-       {"pam password change", P_BOOL, P_GLOBAL, &Globals.bPamPasswordChange, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"passwd program", P_STRING, P_GLOBAL, &Globals.szPasswdProgram, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"passwd chat", P_STRING, P_GLOBAL, &Globals.szPasswdChat, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"passwd chat debug", P_BOOL, P_GLOBAL, &Globals.bPasswdChatDebug, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"username map", P_STRING, P_GLOBAL, &Globals.szUsernameMap, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER | FLAG_DEVELOPER},
-       {"password level", P_INTEGER, P_GLOBAL, &Globals.pwordlevel, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"username level", P_INTEGER, P_GLOBAL, &Globals.unamelevel, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"unix password sync", P_BOOL, P_GLOBAL, &Globals.bUnixPasswdSync, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"restrict anonymous", P_INTEGER, P_GLOBAL, &Globals.restrict_anonymous, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"lanman auth", P_BOOL, P_GLOBAL, &Globals.bLanmanAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"ntlm auth", P_BOOL, P_GLOBAL, &Globals.bNTLMAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+       {"pam password change", P_BOOL, P_GLOBAL, &Globals.bPamPasswordChange, NULL, NULL, 0},
+       {"passwd program", P_STRING, P_GLOBAL, &Globals.szPasswdProgram, NULL, NULL, 0},
+       {"passwd chat", P_STRING, P_GLOBAL, &Globals.szPasswdChat, NULL, NULL, 0},
+       {"passwd chat debug", P_BOOL, P_GLOBAL, &Globals.bPasswdChatDebug, NULL, NULL, 0},
+       {"username map", P_STRING, P_GLOBAL, &Globals.szUsernameMap, NULL, NULL, 0},
+       {"password level", P_INTEGER, P_GLOBAL, &Globals.pwordlevel, NULL, NULL, 0},
+       {"username level", P_INTEGER, P_GLOBAL, &Globals.unamelevel, NULL, NULL, 0},
+       {"unix password sync", P_BOOL, P_GLOBAL, &Globals.bUnixPasswdSync, NULL, NULL, 0},
+       {"restrict anonymous", P_INTEGER, P_GLOBAL, &Globals.restrict_anonymous, NULL, NULL, 0},
+       {"lanman auth", P_BOOL, P_GLOBAL, &Globals.bLanmanAuth, NULL, NULL, 0},
+       {"ntlm auth", P_BOOL, P_GLOBAL, &Globals.bNTLMAuth, NULL, NULL, 0},
        
        {"username", P_STRING, P_LOCAL, &sDefault.szUsername, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE},
-       {"user", P_STRING, P_LOCAL, &sDefault.szUsername, NULL, NULL, FLAG_HIDE},
-       {"users", P_STRING, P_LOCAL, &sDefault.szUsername, NULL, NULL, FLAG_HIDE},
+       {"user", P_STRING, P_LOCAL, &sDefault.szUsername, NULL, NULL, 0},
+       {"users", P_STRING, P_LOCAL, &sDefault.szUsername, NULL, NULL, 0},
        
        {"invalid users", P_LIST, P_LOCAL, &sDefault.szInvalidUsers, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE},
        {"valid users", P_LIST, P_LOCAL, &sDefault.szValidUsers, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE},
@@ -768,12 +735,12 @@ static struct parm_struct parm_table[] = {
        {"printer admin", P_LIST, P_LOCAL, &sDefault.printer_admin, NULL, NULL, FLAG_GLOBAL | FLAG_PRINT},
        {"force user", P_STRING, P_LOCAL, &sDefault.force_user, NULL, NULL, FLAG_SHARE},
        {"force group", P_STRING, P_LOCAL, &sDefault.force_group, NULL, NULL, FLAG_SHARE},
-       {"group", P_STRING, P_LOCAL, &sDefault.force_group, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+       {"group", P_STRING, P_LOCAL, &sDefault.force_group, NULL, NULL, 0},
        
-       {"read only", P_BOOL, P_LOCAL, &sDefault.bRead_only, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE},
-       {"write ok", P_BOOLREV, P_LOCAL, &sDefault.bRead_only, NULL, NULL, FLAG_HIDE},
-       {"writeable", P_BOOLREV, P_LOCAL, &sDefault.bRead_only, NULL, NULL, FLAG_HIDE},
-       {"writable", P_BOOLREV, P_LOCAL, &sDefault.bRead_only, NULL, NULL, FLAG_HIDE},
+       {"read only", P_BOOL, P_LOCAL, &sDefault.bRead_only, NULL, NULL, FLAG_BASIC | FLAG_SHARE},
+       {"write ok", P_BOOLREV, P_LOCAL, &sDefault.bRead_only, NULL, NULL, 0},
+       {"writeable", P_BOOLREV, P_LOCAL, &sDefault.bRead_only, NULL, NULL, 0},
+       {"writable", P_BOOLREV, P_LOCAL, &sDefault.bRead_only, NULL, NULL, 0},
        
        {"create mask", P_OCTAL, P_LOCAL, &sDefault.iCreate_mask, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE},
        {"create mode", P_OCTAL, P_LOCAL, &sDefault.iCreate_mask, NULL, NULL, FLAG_GLOBAL},
@@ -788,103 +755,101 @@ static struct parm_struct parm_table[] = {
        {"inherit permissions", P_BOOL, P_LOCAL, &sDefault.bInheritPerms, NULL, NULL, FLAG_SHARE},
        {"inherit acls", P_BOOL, P_LOCAL, &sDefault.bInheritACLS, NULL, NULL, FLAG_SHARE},
        {"guest only", P_BOOL, P_LOCAL, &sDefault.bGuest_only, NULL, NULL, FLAG_SHARE},
-       {"only guest", P_BOOL, P_LOCAL, &sDefault.bGuest_only, NULL, NULL, FLAG_HIDE},
+       {"only guest", P_BOOL, P_LOCAL, &sDefault.bGuest_only, NULL, NULL, 0},
 
-       {"guest ok", P_BOOL, P_LOCAL, &sDefault.bGuest_ok, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER},
-       {"public", P_BOOL, P_LOCAL, &sDefault.bGuest_ok, NULL, NULL, FLAG_HIDE},
+       {"guest ok", P_BOOL, P_LOCAL, &sDefault.bGuest_ok, NULL, NULL, FLAG_BASIC | FLAG_SHARE | FLAG_PRINT},
+       {"public", P_BOOL, P_LOCAL, &sDefault.bGuest_ok, NULL, NULL, 0},
        
        {"only user", P_BOOL, P_LOCAL, &sDefault.bOnlyUser, NULL, NULL, FLAG_SHARE},
-       {"hosts allow", P_LIST, P_LOCAL, &sDefault.szHostsallow, NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER},
-       {"allow hosts", P_LIST, P_LOCAL, &sDefault.szHostsallow, NULL, NULL, FLAG_HIDE},
-       {"hosts deny", P_LIST, P_LOCAL, &sDefault.szHostsdeny, NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER},
-       {"deny hosts", P_LIST, P_LOCAL, &sDefault.szHostsdeny, NULL, NULL, FLAG_HIDE},
+       {"hosts allow", P_LIST, P_LOCAL, &sDefault.szHostsallow, NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_SHARE | FLAG_PRINT},
+       {"allow hosts", P_LIST, P_LOCAL, &sDefault.szHostsallow, NULL, NULL, 0},
+       {"hosts deny", P_LIST, P_LOCAL, &sDefault.szHostsdeny, NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_SHARE | FLAG_PRINT},
+       {"deny hosts", P_LIST, P_LOCAL, &sDefault.szHostsdeny, NULL, NULL, 0},
 
        {"Logging Options", P_SEP, P_SEPARATOR},
 
-       {"log level", P_STRING, P_GLOBAL, &Globals.szLogLevel, handle_debug_list, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"debuglevel", P_STRING, P_GLOBAL, &Globals.szLogLevel, handle_debug_list, NULL, FLAG_HIDE},
-       {"syslog", P_INTEGER, P_GLOBAL, &Globals.syslog, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"syslog only", P_BOOL, P_GLOBAL, &Globals.bSyslogOnly, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"log file", P_STRING, P_GLOBAL, &Globals.szLogFile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+       {"admin log", P_BOOL, P_GLOBAL, &Globals.bAdminLog, NULL, NULL, 0},
+       {"log level", P_STRING, P_GLOBAL, &Globals.szLogLevel, handle_debug_list, NULL, 0},
+       {"debuglevel", P_STRING, P_GLOBAL, &Globals.szLogLevel, handle_debug_list, NULL, 0},
+       {"syslog", P_INTEGER, P_GLOBAL, &Globals.syslog, NULL, NULL, 0},
+       {"syslog only", P_BOOL, P_GLOBAL, &Globals.bSyslogOnly, NULL, NULL, 0},
+       {"log file", P_STRING, P_GLOBAL, &Globals.szLogFile, NULL, NULL, 0},
        
-       {"max log size", P_INTEGER, P_GLOBAL, &Globals.max_log_size, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"timestamp logs", P_BOOL, P_GLOBAL, &Globals.bTimestampLogs, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"debug timestamp", P_BOOL, P_GLOBAL, &Globals.bTimestampLogs, NULL, NULL, FLAG_DEVELOPER},
-       {"debug hires timestamp", P_BOOL, P_GLOBAL, &Globals.bDebugHiresTimestamp, NULL, NULL, FLAG_DEVELOPER},
-       {"debug pid", P_BOOL, P_GLOBAL, &Globals.bDebugPid, NULL, NULL, FLAG_DEVELOPER},
-       {"debug uid", P_BOOL, P_GLOBAL, &Globals.bDebugUid, NULL, NULL, FLAG_DEVELOPER},
+       {"max log size", P_INTEGER, P_GLOBAL, &Globals.max_log_size, NULL, NULL, 0},
+       {"timestamp logs", P_BOOL, P_GLOBAL, &Globals.bTimestampLogs, NULL, NULL, 0},
+       {"debug timestamp", P_BOOL, P_GLOBAL, &Globals.bTimestampLogs, NULL, NULL, 0},
+       {"debug hires timestamp", P_BOOL, P_GLOBAL, &Globals.bDebugHiresTimestamp, NULL, NULL, 0},
+       {"debug pid", P_BOOL, P_GLOBAL, &Globals.bDebugPid, NULL, NULL, 0},
+       {"debug uid", P_BOOL, P_GLOBAL, &Globals.bDebugUid, NULL, NULL, 0},
        
        {"Protocol Options", P_SEP, P_SEPARATOR},
        
-       {"smb ports", P_STRING, P_GLOBAL, &Globals.smb_ports, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"protocol", P_ENUM, P_GLOBAL, &Globals.maxprotocol, NULL, enum_protocol, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"large readwrite", P_BOOL, P_GLOBAL, &Globals.bLargeReadwrite, NULL, NULL, FLAG_DEVELOPER},
-       {"max protocol", P_ENUM, P_GLOBAL, &Globals.maxprotocol, NULL, enum_protocol, FLAG_DEVELOPER},
-       {"min protocol", P_ENUM, P_GLOBAL, &Globals.minprotocol, NULL, enum_protocol, FLAG_DEVELOPER},
-       {"unicode", P_BOOL, P_GLOBAL, &Globals.bUnicode, NULL, NULL, FLAG_DEVELOPER},
-       {"read bmpx", P_BOOL, P_GLOBAL, &Globals.bReadbmpx, NULL, NULL, FLAG_DEVELOPER},
-       {"read raw", P_BOOL, P_GLOBAL, &Globals.bReadRaw, NULL, NULL, FLAG_DEVELOPER},
-       {"write raw", P_BOOL, P_GLOBAL, &Globals.bWriteRaw, NULL, NULL, FLAG_DEVELOPER},
-       {"disable netbios", P_BOOL, P_GLOBAL, &Globals.bDisableNetbios, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       
-       {"nt pipe support", P_BOOL, P_GLOBAL, &Globals.bNTPipeSupport, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"nt acl support", P_BOOL,  P_LOCAL, &sDefault.bNTAclSupport, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE  | FLAG_ADVANCED | FLAG_WIZARD},
-       {"nt status support", P_BOOL, P_GLOBAL, &Globals.bNTStatusSupport, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"profile acls", P_BOOL,  P_LOCAL, &sDefault.bProfileAcls, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE  | FLAG_ADVANCED | FLAG_WIZARD},
+       {"smb ports", P_STRING, P_GLOBAL, &Globals.smb_ports, NULL, NULL, 0},
+       {"protocol", P_ENUM, P_GLOBAL, &Globals.maxprotocol, NULL, enum_protocol, 0},
+       {"large readwrite", P_BOOL, P_GLOBAL, &Globals.bLargeReadwrite, NULL, NULL, 0},
+       {"max protocol", P_ENUM, P_GLOBAL, &Globals.maxprotocol, NULL, enum_protocol, 0},
+       {"min protocol", P_ENUM, P_GLOBAL, &Globals.minprotocol, NULL, enum_protocol, 0},
+       {"unicode", P_BOOL, P_GLOBAL, &Globals.bUnicode, NULL, NULL, 0},
+       {"read bmpx", P_BOOL, P_GLOBAL, &Globals.bReadbmpx, NULL, NULL, 0},
+       {"read raw", P_BOOL, P_GLOBAL, &Globals.bReadRaw, NULL, NULL, 0},
+       {"write raw", P_BOOL, P_GLOBAL, &Globals.bWriteRaw, NULL, NULL, 0},
+       {"disable netbios", P_BOOL, P_GLOBAL, &Globals.bDisableNetbios, NULL, NULL, 0},
        
-       {"announce version", P_STRING, P_GLOBAL, &Globals.szAnnounceVersion, NULL, NULL, FLAG_DEVELOPER},
-       {"announce as", P_ENUM, P_GLOBAL, &Globals.announce_as, NULL, enum_announce_as, FLAG_DEVELOPER},
-       {"max mux", P_INTEGER, P_GLOBAL, &Globals.max_mux, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"max xmit", P_INTEGER, P_GLOBAL, &Globals.max_xmit, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+       {"nt pipe support", P_BOOL, P_GLOBAL, &Globals.bNTPipeSupport, NULL, NULL, 0},
+       {"nt acl support", P_BOOL,  P_LOCAL, &sDefault.bNTAclSupport, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE },
+       {"nt status support", P_BOOL, P_GLOBAL, &Globals.bNTStatusSupport, NULL, NULL, 0},
+       {"announce version", P_STRING, P_GLOBAL, &Globals.szAnnounceVersion, NULL, NULL, 0},
+       {"announce as", P_ENUM, P_GLOBAL, &Globals.announce_as, NULL, enum_announce_as, 0},
+       {"max mux", P_INTEGER, P_GLOBAL, &Globals.max_mux, NULL, NULL, 0},
+       {"max xmit", P_INTEGER, P_GLOBAL, &Globals.max_xmit, NULL, NULL, 0},
        
-       {"name resolve order", P_STRING, P_GLOBAL, &Globals.szNameResolveOrder, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER},
-       {"max ttl", P_INTEGER, P_GLOBAL, &Globals.max_ttl, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, 
-       {"max wins ttl", P_INTEGER, P_GLOBAL, &Globals.max_wins_ttl, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"min wins ttl", P_INTEGER, P_GLOBAL, &Globals.min_wins_ttl, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"time server", P_BOOL, P_GLOBAL, &Globals.bTimeServer, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"unix extensions", P_BOOL, P_GLOBAL, &Globals.bUnixExtensions, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"use spnego", P_BOOL, P_GLOBAL, &Globals.bUseSpnego, NULL, NULL, FLAG_DEVELOPER},
+       {"name resolve order", P_STRING, P_GLOBAL, &Globals.szNameResolveOrder, NULL, NULL, 0},
+       {"max packet", P_INTEGER, P_GLOBAL, &Globals.max_packet, NULL, NULL, 0},
+       {"packet size", P_INTEGER, P_GLOBAL, &Globals.max_packet, NULL, NULL, 0},
+       {"max ttl", P_INTEGER, P_GLOBAL, &Globals.max_ttl, NULL, NULL, 0}, 
+       {"max wins ttl", P_INTEGER, P_GLOBAL, &Globals.max_wins_ttl, NULL, NULL, 0},
+       {"min wins ttl", P_INTEGER, P_GLOBAL, &Globals.min_wins_ttl, NULL, NULL, 0},
+       {"time server", P_BOOL, P_GLOBAL, &Globals.bTimeServer, NULL, NULL, 0},
+       {"unix extensions", P_BOOL, P_GLOBAL, &Globals.bUnixExtensions, NULL, NULL, 0},
+       {"use spnego", P_BOOL, P_GLOBAL, &Globals.bUseSpnego, NULL, NULL, 0},
 
        {"Tuning Options", P_SEP, P_SEPARATOR},
        
        {"block size", P_INTEGER, P_LOCAL, &sDefault.iBlock_size, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL},
-       {"change notify timeout", P_INTEGER, P_GLOBAL, &Globals.change_notify_timeout, NULL, NULL, FLAG_DEVELOPER},
-       {"deadtime", P_INTEGER, P_GLOBAL, &Globals.deadtime, NULL, NULL, FLAG_DEVELOPER},
-       {"getwd cache", P_BOOL, P_GLOBAL, &use_getwd_cache, NULL, NULL, FLAG_DEVELOPER},
-       {"keepalive", P_INTEGER, P_GLOBAL, &keepalive, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+       {"change notify timeout", P_INTEGER, P_GLOBAL, &Globals.change_notify_timeout, NULL, NULL, 0},
+       {"deadtime", P_INTEGER, P_GLOBAL, &Globals.deadtime, NULL, NULL, 0},
+       {"getwd cache", P_BOOL, P_GLOBAL, &use_getwd_cache, NULL, NULL, 0},
+       {"keepalive", P_INTEGER, P_GLOBAL, &keepalive, NULL, NULL, 0},
        
-       {"lpq cache time", P_INTEGER, P_GLOBAL, &Globals.lpqcachetime, NULL, NULL, FLAG_DEVELOPER},
-       {"max smbd processes", P_INTEGER, P_GLOBAL, &Globals.iMaxSmbdProcesses, NULL, NULL, FLAG_DEVELOPER},
+       {"lpq cache time", P_INTEGER, P_GLOBAL, &Globals.lpqcachetime, NULL, NULL, 0},
+       {"max smbd processes", P_INTEGER, P_GLOBAL, &Globals.iMaxSmbdProcesses, NULL, NULL, 0},
        {"max connections", P_INTEGER, P_LOCAL, &sDefault.iMaxConnections, NULL, NULL, FLAG_SHARE},
-       {"paranoid server security", P_BOOL, P_GLOBAL, &Globals.paranoid_server_security, NULL, NULL, FLAG_DEVELOPER},
-       {"max disk size", P_INTEGER, P_GLOBAL, &Globals.maxdisksize, NULL, NULL, FLAG_DEVELOPER},
-       {"max open files", P_INTEGER, P_GLOBAL, &Globals.max_open_files, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+       {"paranoid server security", P_BOOL, P_GLOBAL, &Globals.paranoid_server_security, NULL, NULL, 0},
+       {"max disk size", P_INTEGER, P_GLOBAL, &Globals.maxdisksize, NULL, NULL, 0},
+       {"max open files", P_INTEGER, P_GLOBAL, &Globals.max_open_files, NULL, NULL, 0},
        {"min print space", P_INTEGER, P_LOCAL, &sDefault.iMinPrintSpace, NULL, NULL, FLAG_PRINT},
-       {"read size", P_INTEGER, P_GLOBAL, &Globals.ReadSize, NULL, NULL, FLAG_DEVELOPER},
+       {"read size", P_INTEGER, P_GLOBAL, &Globals.ReadSize, NULL, NULL, 0},
        
-       {"socket options", P_GSTRING, P_GLOBAL, user_socket_options, NULL, NULL, FLAG_DEVELOPER},
-       {"stat cache size", P_INTEGER, P_GLOBAL, &Globals.stat_cache_size, NULL, NULL, FLAG_DEVELOPER},
+       {"socket options", P_GSTRING, P_GLOBAL, user_socket_options, NULL, NULL, 0},
+       {"stat cache size", P_INTEGER, P_GLOBAL, &Globals.stat_cache_size, NULL, NULL, 0},
        {"strict allocate", P_BOOL, P_LOCAL, &sDefault.bStrictAllocate, NULL, NULL, FLAG_SHARE},
        {"strict sync", P_BOOL, P_LOCAL, &sDefault.bStrictSync, NULL, NULL, FLAG_SHARE},
        {"sync always", P_BOOL, P_LOCAL, &sDefault.bSyncAlways, NULL, NULL, FLAG_SHARE},
-       {"use mmap", P_BOOL, P_GLOBAL, &Globals.bUseMmap, NULL, NULL, FLAG_DEVELOPER},
-#ifdef WITH_SENDFILE
-       {"use sendfile", P_BOOL, P_LOCAL, &sDefault.bUseSendfile, NULL, NULL, FLAG_SHARE},
-#endif
-       {"hostname lookups", P_BOOL, P_GLOBAL, &Globals.bHostnameLookups, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+       {"use mmap", P_BOOL, P_GLOBAL, &Globals.bUseMmap, NULL, NULL, 0},
+       {"hostname lookups", P_BOOL, P_GLOBAL, &Globals.bHostnameLookups, NULL, NULL, 0},
        {"write cache size", P_INTEGER, P_LOCAL, &sDefault.iWriteCacheSize, NULL, NULL, FLAG_SHARE},
 
-       {"name cache timeout", P_INTEGER, P_GLOBAL, &Globals.name_cache_timeout, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+       {"name cache timeout", P_INTEGER, P_GLOBAL, &Globals.name_cache_timeout, NULL, NULL, 0},
 
        {"Printing Options", P_SEP, P_SEPARATOR},
        
        {"total print jobs", P_INTEGER, P_GLOBAL, &Globals.iTotalPrintJobs, NULL, NULL, FLAG_PRINT},
        {"max print jobs", P_INTEGER, P_LOCAL, &sDefault.iMaxPrintJobs, NULL, NULL, FLAG_PRINT},
        {"load printers", P_BOOL, P_GLOBAL, &Globals.bLoadPrinters, NULL, NULL, FLAG_PRINT},
-       {"printcap name", P_STRING, P_GLOBAL, &Globals.szPrintcapname, NULL, NULL, FLAG_PRINT | FLAG_DEVELOPER},
-       {"printcap", P_STRING, P_GLOBAL, &Globals.szPrintcapname, NULL, NULL, FLAG_HIDE},
+       {"printcap name", P_STRING, P_GLOBAL, &Globals.szPrintcapname, NULL, NULL, FLAG_PRINT},
+       {"printcap", P_STRING, P_GLOBAL, &Globals.szPrintcapname, NULL, NULL, 0},
        {"printable", P_BOOL, P_LOCAL, &sDefault.bPrint_ok, NULL, NULL, FLAG_PRINT},
-       {"print ok", P_BOOL, P_LOCAL, &sDefault.bPrint_ok, NULL, NULL, FLAG_HIDE},
+       {"print ok", P_BOOL, P_LOCAL, &sDefault.bPrint_ok, NULL, NULL, 0},
        {"postscript", P_BOOL, P_LOCAL, &sDefault.bPostscript, NULL, NULL, FLAG_PRINT | FLAG_DEPRECATED},
        {"printing", P_ENUM, P_LOCAL, &sDefault.iPrinting, NULL, enum_printing, FLAG_PRINT | FLAG_GLOBAL},
        {"print command", P_STRING, P_LOCAL, &sDefault.szPrintcommand, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL},
@@ -896,14 +861,14 @@ static struct parm_struct parm_table[] = {
        {"queuepause command", P_STRING, P_LOCAL, &sDefault.szQueuepausecommand, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL},
        {"queueresume command", P_STRING, P_LOCAL, &sDefault.szQueueresumecommand, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL},
 
-       {"enumports command", P_STRING, P_GLOBAL, &Globals.szEnumPortsCommand, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"addprinter command", P_STRING, P_GLOBAL, &Globals.szAddPrinterCommand, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"deleteprinter command", P_STRING, P_GLOBAL, &Globals.szDeletePrinterCommand, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"show add printer wizard", P_BOOL, P_GLOBAL, &Globals.bMsAddPrinterWizard, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"os2 driver map", P_STRING, P_GLOBAL, &Globals.szOs2DriverMap, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+       {"enumports command", P_STRING, P_GLOBAL, &Globals.szEnumPortsCommand, NULL, NULL, 0},
+       {"addprinter command", P_STRING, P_GLOBAL, &Globals.szAddPrinterCommand, NULL, NULL, 0},
+       {"deleteprinter command", P_STRING, P_GLOBAL, &Globals.szDeletePrinterCommand, NULL, NULL, 0},
+       {"show add printer wizard", P_BOOL, P_GLOBAL, &Globals.bMsAddPrinterWizard, NULL, NULL, 0},
+       {"os2 driver map", P_STRING, P_GLOBAL, &Globals.szOs2DriverMap, NULL, NULL, 0},
        
        {"printer name", P_STRING, P_LOCAL, &sDefault.szPrintername, NULL, NULL, FLAG_PRINT},
-       {"printer", P_STRING, P_LOCAL, &sDefault.szPrintername, NULL, NULL, FLAG_HIDE},
+       {"printer", P_STRING, P_LOCAL, &sDefault.szPrintername, NULL, NULL, 0},
        {"use client driver", P_BOOL, P_LOCAL, &sDefault.bUseClientDriver, NULL, NULL, FLAG_PRINT},
        {"default devmode", P_BOOL, P_LOCAL, &sDefault.bDefaultDevmode, NULL, NULL, FLAG_PRINT},
        {"printer driver", P_STRING, P_LOCAL, &sDefault.szPrinterDriver, NULL, NULL, FLAG_PRINT | FLAG_DEPRECATED},
@@ -911,19 +876,18 @@ static struct parm_struct parm_table[] = {
        {"printer driver location", P_STRING, P_LOCAL, &sDefault.szPrinterDriverLocation, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL | FLAG_DEPRECATED},
 
        {"Filename Handling", P_SEP, P_SEPARATOR},
-       {"strip dot", P_BOOL, P_GLOBAL, &Globals.bStripDot, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"mangling method", P_STRING, P_GLOBAL, &Globals.szManglingMethod, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+       {"strip dot", P_BOOL, P_GLOBAL, &Globals.bStripDot, NULL, NULL, 0},
+       {"mangling method", P_STRING, P_GLOBAL, &Globals.szManglingMethod, NULL, NULL, 0},
        
-       {"mangled stack", P_INTEGER, P_GLOBAL, &Globals.mangled_stack, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+       {"mangled stack", P_INTEGER, P_GLOBAL, &Globals.mangled_stack, NULL, NULL, 0},
        {"default case", P_ENUM, P_LOCAL, &sDefault.iDefaultCase, NULL, enum_case, FLAG_SHARE},
        {"case sensitive", P_BOOL, P_LOCAL, &sDefault.bCaseSensitive, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL},
-       {"casesignames", P_BOOL, P_LOCAL, &sDefault.bCaseSensitive, NULL, NULL, FLAG_HIDE},
+       {"casesignames", P_BOOL, P_LOCAL, &sDefault.bCaseSensitive, NULL, NULL, 0},
        {"preserve case", P_BOOL, P_LOCAL, &sDefault.bCasePreserve, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL},
        {"short preserve case", P_BOOL, P_LOCAL, &sDefault.bShortCasePreserve, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL},
        {"mangle case", P_BOOL, P_LOCAL, &sDefault.bCaseMangle, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL},
        {"mangling char", P_CHAR, P_LOCAL, &sDefault.magic_char, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL},
        {"hide dot files", P_BOOL, P_LOCAL, &sDefault.bHideDotFiles, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL},
-       {"hide special files", P_BOOL, P_LOCAL, &sDefault.bHideSpecialFiles, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL},
        {"hide unreadable", P_BOOL, P_LOCAL, &sDefault.bHideUnReadable, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL},
        {"hide unwriteable files", P_BOOL, P_LOCAL, &sDefault.bHideUnWriteableFiles, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL},
        {"delete veto files", P_BOOL, P_LOCAL, &sDefault.bDeleteVetoFiles, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL},
@@ -935,53 +899,52 @@ static struct parm_struct parm_table[] = {
        {"map archive", P_BOOL, P_LOCAL, &sDefault.bMap_archive, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL},
        {"mangled names", P_BOOL, P_LOCAL, &sDefault.bMangledNames, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL},
        {"mangled map", P_STRING, P_LOCAL, &sDefault.szMangledMap, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL},
-       {"stat cache", P_BOOL, P_GLOBAL, &Globals.bStatCache, NULL, NULL, FLAG_DEVELOPER},
+       {"stat cache", P_BOOL, P_GLOBAL, &Globals.bStatCache, NULL, NULL, 0},
 
        {"Domain Options", P_SEP, P_SEPARATOR},
        
-       {"machine password timeout", P_INTEGER, P_GLOBAL, &Globals.machine_password_timeout, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER},
+       {"machine password timeout", P_INTEGER, P_GLOBAL, &Globals.machine_password_timeout, NULL, NULL, 0},
 
        {"Logon Options", P_SEP, P_SEPARATOR},
 
-       {"add user script", P_STRING, P_GLOBAL, &Globals.szAddUserScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"delete user script", P_STRING, P_GLOBAL, &Globals.szDelUserScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"add group script", P_STRING, P_GLOBAL, &Globals.szAddGroupScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"delete group script", P_STRING, P_GLOBAL, &Globals.szDelGroupScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"add user to group script", P_STRING, P_GLOBAL, &Globals.szAddUserToGroupScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"delete user from group script", P_STRING, P_GLOBAL, &Globals.szDelUserFromGroupScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"set primary group script", P_STRING, P_GLOBAL, &Globals.szSetPrimaryGroupScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"add machine script", P_STRING, P_GLOBAL, &Globals.szAddMachineScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"shutdown script", P_STRING, P_GLOBAL, &Globals.szShutdownScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"abort shutdown script", P_STRING, P_GLOBAL, &Globals.szAbortShutdownScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-
-       {"logon script", P_STRING, P_GLOBAL, &Globals.szLogonScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"logon path", P_STRING, P_GLOBAL, &Globals.szLogonPath, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"logon drive", P_STRING, P_GLOBAL, &Globals.szLogonDrive, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"logon home", P_STRING, P_GLOBAL, &Globals.szLogonHome, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"domain logons", P_BOOL, P_GLOBAL, &Globals.bDomainLogons, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+       {"add user script", P_STRING, P_GLOBAL, &Globals.szAddUserScript, NULL, NULL, 0},
+       {"delete user script", P_STRING, P_GLOBAL, &Globals.szDelUserScript, NULL, NULL, 0},
+       {"add group script", P_STRING, P_GLOBAL, &Globals.szAddGroupScript, NULL, NULL, 0},
+       {"delete group script", P_STRING, P_GLOBAL, &Globals.szDelGroupScript, NULL, NULL, 0},
+       {"add user to group script", P_STRING, P_GLOBAL, &Globals.szAddUserToGroupScript, NULL, NULL, 0},
+       {"delete user from group script", P_STRING, P_GLOBAL, &Globals.szDelUserFromGroupScript, NULL, NULL, 0},
+       {"add machine script", P_STRING, P_GLOBAL, &Globals.szAddMachineScript, NULL, NULL, 0},
+       {"shutdown script", P_STRING, P_GLOBAL, &Globals.szShutdownScript, NULL, NULL, 0},
+       {"abort shutdown script", P_STRING, P_GLOBAL, &Globals.szAbortShutdownScript, NULL, NULL, 0},
+
+       {"logon script", P_STRING, P_GLOBAL, &Globals.szLogonScript, NULL, NULL, 0},
+       {"logon path", P_STRING, P_GLOBAL, &Globals.szLogonPath, NULL, NULL, 0},
+       {"logon drive", P_STRING, P_GLOBAL, &Globals.szLogonDrive, NULL, NULL, 0},
+       {"logon home", P_STRING, P_GLOBAL, &Globals.szLogonHome, NULL, NULL, 0},
+       {"domain logons", P_BOOL, P_GLOBAL, &Globals.bDomainLogons, NULL, NULL, 0},
 
        {"Browse Options", P_SEP, P_SEPARATOR},
        
-       {"os level", P_INTEGER, P_GLOBAL, &Globals.os_level, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"lm announce", P_ENUM, P_GLOBAL, &Globals.lm_announce, NULL, enum_bool_auto, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"lm interval", P_INTEGER, P_GLOBAL, &Globals.lm_interval, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"preferred master", P_ENUM, P_GLOBAL, &Globals.bPreferredMaster, NULL, enum_bool_auto, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER},
+       {"os level", P_INTEGER, P_GLOBAL, &Globals.os_level, NULL, NULL, FLAG_BASIC},
+       {"lm announce", P_ENUM, P_GLOBAL, &Globals.lm_announce, NULL, enum_bool_auto, 0},
+       {"lm interval", P_INTEGER, P_GLOBAL, &Globals.lm_interval, NULL, NULL, 0},
+       {"preferred master", P_ENUM, P_GLOBAL, &Globals.bPreferredMaster, NULL, enum_bool_auto, FLAG_BASIC},
        {"prefered master", P_ENUM, P_GLOBAL, &Globals.bPreferredMaster, NULL, enum_bool_auto, FLAG_HIDE},
-       {"local master", P_BOOL, P_GLOBAL, &Globals.bLocalMaster, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"domain master", P_ENUM, P_GLOBAL, &Globals.bDomainMaster, NULL, enum_bool_auto, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"browse list", P_BOOL, P_GLOBAL, &Globals.bBrowseList, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"browseable", P_BOOL, P_LOCAL, &sDefault.bBrowseable, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER},
-       {"browsable", P_BOOL, P_LOCAL, &sDefault.bBrowseable, NULL, NULL, FLAG_HIDE},
-       {"enhanced browsing", P_BOOL, P_GLOBAL, &Globals.enhanced_browsing, NULL, NULL, FLAG_DEVELOPER | FLAG_ADVANCED},
+       {"local master", P_BOOL, P_GLOBAL, &Globals.bLocalMaster, NULL, NULL, FLAG_BASIC},
+       {"domain master", P_ENUM, P_GLOBAL, &Globals.bDomainMaster, NULL, enum_bool_auto, FLAG_BASIC},
+       {"browse list", P_BOOL, P_GLOBAL, &Globals.bBrowseList, NULL, NULL, 0},
+       {"browseable", P_BOOL, P_LOCAL, &sDefault.bBrowseable, NULL, NULL, FLAG_BASIC | FLAG_SHARE | FLAG_PRINT},
+       {"browsable", P_BOOL, P_LOCAL, &sDefault.bBrowseable, NULL, NULL, 0},
+       {"enhanced browsing", P_BOOL, P_GLOBAL, &Globals.enhanced_browsing, NULL, NULL},
 
        {"WINS Options", P_SEP, P_SEPARATOR},
-       {"dns proxy", P_BOOL, P_GLOBAL, &Globals.bDNSproxy, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"wins proxy", P_BOOL, P_GLOBAL, &Globals.bWINSproxy, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+       {"dns proxy", P_BOOL, P_GLOBAL, &Globals.bDNSproxy, NULL, NULL, 0},
+       {"wins proxy", P_BOOL, P_GLOBAL, &Globals.bWINSproxy, NULL, NULL, 0},
        
-       {"wins server", P_LIST, P_GLOBAL, &Globals.szWINSservers, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER},
-       {"wins support", P_BOOL, P_GLOBAL, &Globals.bWINSsupport, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER},
-       {"wins hook", P_STRING, P_GLOBAL, &Globals.szWINSHook, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"wins partners", P_STRING, P_GLOBAL, &Globals.szWINSPartners, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER},
+       {"wins server", P_LIST, P_GLOBAL, &Globals.szWINSservers, NULL, NULL, FLAG_BASIC},
+       {"wins support", P_BOOL, P_GLOBAL, &Globals.bWINSsupport, NULL, NULL, FLAG_BASIC},
+       {"wins hook", P_STRING, P_GLOBAL, &Globals.szWINSHook, NULL, NULL, 0},
+       {"wins partners", P_STRING, P_GLOBAL, &Globals.szWINSPartners, NULL, NULL, 0},
 
        {"Locking Options", P_SEP, P_SEPARATOR},
        
@@ -1003,58 +966,57 @@ static struct parm_struct parm_table[] = {
 
        {"Ldap Options", P_SEP, P_SEPARATOR},
        
-       {"ldap suffix", P_STRING, P_GLOBAL, &Globals.szLdapSuffix, handle_ldap_suffix, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"ldap machine suffix", P_STRING, P_GLOBAL, &Globals.szLdapMachineSuffix, handle_ldap_machine_suffix, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"ldap user suffix", P_STRING, P_GLOBAL, &Globals.szLdapUserSuffix, handle_ldap_user_suffix, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"ldap filter", P_STRING, P_GLOBAL, &Globals.szLdapFilter, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"ldap admin dn", P_STRING, P_GLOBAL, &Globals.szLdapAdminDn, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"ldap ssl", P_ENUM, P_GLOBAL, &Globals.ldap_ssl, NULL, enum_ldap_ssl, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"ldap passwd sync", P_ENUM, P_GLOBAL, &Globals.ldap_passwd_sync, NULL, enum_ldap_passwd_sync, FLAG_ADVANCED | FLAG_DEVELOPER},
+        {"ldap suffix", P_STRING, P_GLOBAL, &Globals.szLdapSuffix, handle_ldap_suffix, NULL, 0},
+        {"ldap machine suffix", P_STRING, P_GLOBAL, &Globals.szLdapMachineSuffix, handle_ldap_machine_suffix, NULL, 0},
+        {"ldap user suffix", P_STRING, P_GLOBAL, &Globals.szLdapUserSuffix, handle_ldap_user_suffix, NULL, 0},
+       {"ldap filter", P_STRING, P_GLOBAL, &Globals.szLdapFilter, NULL, NULL, 0},
+       {"ldap admin dn", P_STRING, P_GLOBAL, &Globals.szLdapAdminDn, NULL, NULL, 0},
+       {"ldap ssl", P_ENUM, P_GLOBAL, &Globals.ldap_ssl, NULL, enum_ldap_ssl, 0},
 
        {"Miscellaneous Options", P_SEP, P_SEPARATOR},
-       {"add share command", P_STRING, P_GLOBAL, &Globals.szAddShareCommand, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"change share command", P_STRING, P_GLOBAL, &Globals.szChangeShareCommand, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"delete share command", P_STRING, P_GLOBAL, &Globals.szDeleteShareCommand, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+       {"add share command", P_STRING, P_GLOBAL, &Globals.szAddShareCommand, NULL, NULL, 0},
+       {"change share command", P_STRING, P_GLOBAL, &Globals.szChangeShareCommand, NULL, NULL, 0},
+       {"delete share command", P_STRING, P_GLOBAL, &Globals.szDeleteShareCommand, NULL, NULL, 0},
        
        {"config file", P_STRING, P_GLOBAL, &Globals.szConfigFile, NULL, NULL, FLAG_HIDE},
-       {"preload", P_STRING, P_GLOBAL, &Globals.szAutoServices, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"auto services", P_STRING, P_GLOBAL, &Globals.szAutoServices, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"lock dir", P_STRING, P_GLOBAL, &Globals.szLockDir, NULL, NULL, FLAG_HIDE}, 
-       {"lock directory", P_STRING, P_GLOBAL, &Globals.szLockDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"pid directory", P_STRING, P_GLOBAL, &Globals.szPidDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, 
+       {"preload", P_STRING, P_GLOBAL, &Globals.szAutoServices, NULL, NULL, 0},
+       {"auto services", P_STRING, P_GLOBAL, &Globals.szAutoServices, NULL, NULL, 0},
+       {"lock dir", P_STRING, P_GLOBAL, &Globals.szLockDir, NULL, NULL, 0}, 
+       {"lock directory", P_STRING, P_GLOBAL, &Globals.szLockDir, NULL, NULL, 0},
+       {"pid directory", P_STRING, P_GLOBAL, &Globals.szPidDir, NULL, NULL, 0}, 
 #ifdef WITH_UTMP
-       {"utmp directory", P_STRING, P_GLOBAL, &Globals.szUtmpDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"wtmp directory", P_STRING, P_GLOBAL, &Globals.szWtmpDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"utmp",          P_BOOL, P_GLOBAL, &Globals.bUtmp, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+       {"utmp directory", P_STRING, P_GLOBAL, &Globals.szUtmpDir, NULL, NULL, 0},
+       {"wtmp directory", P_STRING, P_GLOBAL, &Globals.szWtmpDir, NULL, NULL, 0},
+       {"utmp",          P_BOOL, P_GLOBAL, &Globals.bUtmp, NULL, NULL, 0},
 #endif
        
-       {"default service", P_STRING, P_GLOBAL, &Globals.szDefaultService, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"default", P_STRING, P_GLOBAL, &Globals.szDefaultService, NULL, NULL,  FLAG_DEVELOPER},
-       {"message command", P_STRING, P_GLOBAL, &Globals.szMsgCommand, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"dfree command", P_STRING, P_GLOBAL, &Globals.szDfree, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"remote announce", P_STRING, P_GLOBAL, &Globals.szRemoteAnnounce, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"remote browse sync", P_STRING, P_GLOBAL, &Globals.szRemoteBrowseSync, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"socket address", P_STRING, P_GLOBAL, &Globals.szSocketAddress, NULL, NULL, FLAG_DEVELOPER},
-       {"homedir map", P_STRING, P_GLOBAL, &Globals.szNISHomeMapName, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"time offset", P_INTEGER, P_GLOBAL, &extra_time_offset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"NIS homedir", P_BOOL, P_GLOBAL, &Globals.bNISHomeMap, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+       {"default service", P_STRING, P_GLOBAL, &Globals.szDefaultService, NULL, NULL, 0},
+       {"default", P_STRING, P_GLOBAL, &Globals.szDefaultService, NULL, NULL, 0},
+       {"message command", P_STRING, P_GLOBAL, &Globals.szMsgCommand, NULL, NULL, 0},
+       {"dfree command", P_STRING, P_GLOBAL, &Globals.szDfree, NULL, NULL, 0},
+       {"remote announce", P_STRING, P_GLOBAL, &Globals.szRemoteAnnounce, NULL, NULL, 0},
+       {"remote browse sync", P_STRING, P_GLOBAL, &Globals.szRemoteBrowseSync, NULL, NULL, 0},
+       {"socket address", P_STRING, P_GLOBAL, &Globals.szSocketAddress, NULL, NULL, 0},
+       {"homedir map", P_STRING, P_GLOBAL, &Globals.szNISHomeMapName, NULL, NULL, 0},
+       {"time offset", P_INTEGER, P_GLOBAL, &extra_time_offset, NULL, NULL, 0},
+       {"NIS homedir", P_BOOL, P_GLOBAL, &Globals.bNISHomeMap, NULL, NULL, 0},
        {"-valid", P_BOOL, P_LOCAL, &sDefault.valid, NULL, NULL, FLAG_HIDE},
        
        {"copy", P_STRING, P_LOCAL, &sDefault.szCopy, handle_copy, NULL, FLAG_HIDE},
        {"include", P_STRING, P_LOCAL, &sDefault.szInclude, handle_include, NULL, FLAG_HIDE},
        {"exec", P_STRING, P_LOCAL, &sDefault.szPreExec, NULL, NULL, FLAG_SHARE | FLAG_PRINT},
-       {"preexec", P_STRING, P_LOCAL, &sDefault.szPreExec, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+       {"preexec", P_STRING, P_LOCAL, &sDefault.szPreExec, NULL, NULL, 0},
        
        {"preexec close", P_BOOL, P_LOCAL, &sDefault.bPreexecClose, NULL, NULL, FLAG_SHARE},
        {"postexec", P_STRING, P_LOCAL, &sDefault.szPostExec, NULL, NULL, FLAG_SHARE | FLAG_PRINT},
        {"root preexec", P_STRING, P_LOCAL, &sDefault.szRootPreExec, NULL, NULL, FLAG_SHARE | FLAG_PRINT},
        {"root preexec close", P_BOOL, P_LOCAL, &sDefault.bRootpreexecClose, NULL, NULL, FLAG_SHARE},
        {"root postexec", P_STRING, P_LOCAL, &sDefault.szRootPostExec, NULL, NULL, FLAG_SHARE | FLAG_PRINT},
-       {"available", P_BOOL, P_LOCAL, &sDefault.bAvailable, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT},
+       {"available", P_BOOL, P_LOCAL, &sDefault.bAvailable, NULL, NULL, FLAG_BASIC | FLAG_SHARE | FLAG_PRINT},
        {"volume", P_STRING, P_LOCAL, &sDefault.volume, NULL, NULL, FLAG_SHARE },
        {"fstype", P_STRING, P_LOCAL, &sDefault.fstype, NULL, NULL, FLAG_SHARE},
        {"set directory", P_BOOLREV, P_LOCAL, &sDefault.bNo_set_dir, NULL, NULL, FLAG_SHARE},
-       {"source environment", P_STRING, P_GLOBAL, &Globals.szSourceEnv, handle_source_env, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+       {"source environment", P_STRING, P_GLOBAL, &Globals.szSourceEnv, handle_source_env, NULL, 0},
        {"wide links", P_BOOL, P_LOCAL, &sDefault.bWidelinks, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL},
        {"follow symlinks", P_BOOL, P_LOCAL, &sDefault.bSymlinks, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL},
        {"dont descend", P_STRING, P_LOCAL, &sDefault.szDontdescend, NULL, NULL, FLAG_SHARE},
@@ -1066,8 +1028,9 @@ static struct parm_struct parm_table[] = {
        {"dos filetime resolution", P_BOOL, P_LOCAL, &sDefault.bDosFiletimeResolution, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL},
 
        {"fake directory create times", P_BOOL, P_LOCAL, &sDefault.bFakeDirCreateTimes, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL},
-       {"panic action", P_STRING, P_GLOBAL, &Globals.szPanicAction, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"hide local users", P_BOOL, P_GLOBAL, &Globals.bHideLocalUsers, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+       {"panic action", P_STRING, P_GLOBAL, &Globals.szPanicAction, NULL, NULL, 0},
+       {"hide local users", P_BOOL, P_GLOBAL, &Globals.bHideLocalUsers, NULL,
+        NULL, 0},
 
        {"VFS module options", P_SEP, P_SEPARATOR},
        
@@ -1077,19 +1040,19 @@ static struct parm_struct parm_table[] = {
 
        
        {"msdfs root", P_BOOL, P_LOCAL, &sDefault.bMSDfsRoot, NULL, NULL, FLAG_SHARE},
-       {"host msdfs", P_BOOL, P_GLOBAL, &Globals.bHostMSDfs, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+       {"host msdfs", P_BOOL, P_GLOBAL, &Globals.bHostMSDfs, NULL, NULL, 0},
 
        {"Winbind options", P_SEP, P_SEPARATOR},
 
-       {"winbind uid", P_STRING, P_GLOBAL, &Globals.szWinbindUID, handle_winbind_uid, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"winbind gid", P_STRING, P_GLOBAL, &Globals.szWinbindGID, handle_winbind_gid, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"template homedir", P_STRING, P_GLOBAL, &Globals.szTemplateHomedir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"template shell", P_STRING, P_GLOBAL, &Globals.szTemplateShell, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"winbind separator", P_STRING, P_GLOBAL, &Globals.szWinbindSeparator, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"winbind cache time", P_INTEGER, P_GLOBAL, &Globals.winbind_cache_time, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"winbind enum users", P_BOOL, P_GLOBAL, &Globals.bWinbindEnumUsers, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"winbind enum groups", P_BOOL, P_GLOBAL, &Globals.bWinbindEnumGroups, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-       {"winbind use default domain", P_BOOL, P_GLOBAL, &Globals.bWinbindUseDefaultDomain, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+       {"winbind uid", P_STRING, P_GLOBAL, &Globals.szWinbindUID, handle_winbind_uid, NULL, 0},
+       {"winbind gid", P_STRING, P_GLOBAL, &Globals.szWinbindGID, handle_winbind_gid, NULL, 0},
+       {"template homedir", P_STRING, P_GLOBAL, &Globals.szTemplateHomedir, NULL, NULL, 0},
+       {"template shell", P_STRING, P_GLOBAL, &Globals.szTemplateShell, NULL, NULL, 0},
+       {"winbind separator", P_STRING, P_GLOBAL, &Globals.szWinbindSeparator, NULL, NULL, 0},
+       {"winbind cache time", P_INTEGER, P_GLOBAL, &Globals.winbind_cache_time, NULL, NULL, 0},
+       {"winbind enum users", P_BOOL, P_GLOBAL, &Globals.bWinbindEnumUsers, NULL, NULL, 0},
+       {"winbind enum groups", P_BOOL, P_GLOBAL, &Globals.bWinbindEnumGroups, NULL, NULL, 0},
+       {"winbind use default domain", P_BOOL, P_GLOBAL, &Globals.bWinbindUseDefaultDomain, NULL, NULL, 0},
 
        {NULL, P_BOOL, P_NONE, NULL, NULL, NULL, 0}
 };
@@ -1287,6 +1250,7 @@ static void init_globals(void)
        Globals.bAlgorithmicRidBase = BASE_RID;
 
        Globals.bLoadPrinters = True;
+       Globals.max_packet = 65535;
        Globals.mangled_stack = 50;
        Globals.max_xmit = 65535;
        Globals.max_mux = 50;   /* This is *needed* for profile support. */
@@ -1315,6 +1279,7 @@ static void init_globals(void)
        Globals.bStripDot = False;
        Globals.syslog = 1;
        Globals.bSyslogOnly = False;
+       Globals.bAdminLog = False;
        Globals.bTimestampLogs = True;
        string_set(&Globals.szLogLevel, "0");
        Globals.bDebugHiresTimestamp = False;
@@ -1374,7 +1339,6 @@ static void init_globals(void)
        string_set(&Globals.szLdapFilter, "(&(uid=%u)(objectclass=sambaAccount))");
        string_set(&Globals.szLdapAdminDn, "");
        Globals.ldap_ssl = LDAP_SSL_ON;
-       Globals.ldap_passwd_sync = LDAP_PASSWD_SYNC_OFF;
 
 /* these parameters are set to defaults that are more appropriate
    for the increasing samba install base:
@@ -1557,7 +1521,6 @@ FN_GLOBAL_STRING(lp_nis_home_map_name, &Globals.szNISHomeMapName)
 static FN_GLOBAL_STRING(lp_announce_version, &Globals.szAnnounceVersion)
 FN_GLOBAL_LIST(lp_netbios_aliases, &Globals.szNetbiosAliases)
 FN_GLOBAL_LIST(lp_passdb_backend, &Globals.szPassdbBackend)
-FN_GLOBAL_LIST(lp_sam_backend, &Globals.szSamBackend)
 FN_GLOBAL_STRING(lp_panic_action, &Globals.szPanicAction)
 FN_GLOBAL_STRING(lp_adduser_script, &Globals.szAddUserScript)
 FN_GLOBAL_STRING(lp_deluser_script, &Globals.szDelUserScript)
@@ -1567,7 +1530,6 @@ FN_GLOBAL_STRING(lp_addgroup_script, &Globals.szAddGroupScript)
 FN_GLOBAL_STRING(lp_delgroup_script, &Globals.szDelGroupScript)
 FN_GLOBAL_STRING(lp_addusertogroup_script, &Globals.szAddUserToGroupScript)
 FN_GLOBAL_STRING(lp_deluserfromgroup_script, &Globals.szDelUserFromGroupScript)
-FN_GLOBAL_STRING(lp_setprimarygroup_script, &Globals.szSetPrimaryGroupScript)
 
 FN_GLOBAL_STRING(lp_addmachine_script, &Globals.szAddMachineScript)
 
@@ -1588,7 +1550,6 @@ FN_GLOBAL_STRING(lp_ldap_user_suffix, &Globals.szLdapUserSuffix)
 FN_GLOBAL_STRING(lp_ldap_filter, &Globals.szLdapFilter)
 FN_GLOBAL_STRING(lp_ldap_admin_dn, &Globals.szLdapAdminDn)
 FN_GLOBAL_INTEGER(lp_ldap_ssl, &Globals.ldap_ssl)
-FN_GLOBAL_INTEGER(lp_ldap_passwd_sync, &Globals.ldap_passwd_sync)
 FN_GLOBAL_STRING(lp_add_share_cmd, &Globals.szAddShareCommand)
 FN_GLOBAL_STRING(lp_change_share_cmd, &Globals.szChangeShareCommand)
 FN_GLOBAL_STRING(lp_delete_share_cmd, &Globals.szDeleteShareCommand)
@@ -1613,6 +1574,7 @@ FN_GLOBAL_BOOL(lp_strip_dot, &Globals.bStripDot)
 FN_GLOBAL_BOOL(lp_encrypted_passwords, &Globals.bEncryptPasswords)
 FN_GLOBAL_BOOL(lp_update_encrypted, &Globals.bUpdateEncrypt)
 FN_GLOBAL_BOOL(lp_syslog_only, &Globals.bSyslogOnly)
+FN_GLOBAL_BOOL(lp_admin_log, &Globals.bAdminLog)
 FN_GLOBAL_BOOL(lp_timestamp_logs, &Globals.bTimestampLogs)
 FN_GLOBAL_BOOL(lp_debug_hires_timestamp, &Globals.bDebugHiresTimestamp)
 FN_GLOBAL_BOOL(lp_debug_pid, &Globals.bDebugPid)
@@ -1724,7 +1686,6 @@ FN_LOCAL_BOOL(lp_preservecase, bCasePreserve)
 FN_LOCAL_BOOL(lp_shortpreservecase, bShortCasePreserve)
 FN_LOCAL_BOOL(lp_casemangle, bCaseMangle)
 FN_LOCAL_BOOL(lp_hide_dot_files, bHideDotFiles)
-FN_LOCAL_BOOL(lp_hide_special_files, bHideSpecialFiles)
 FN_LOCAL_BOOL(lp_hideunreadable, bHideUnReadable)
 FN_LOCAL_BOOL(lp_hideunwriteable_files, bHideUnWriteableFiles)
 FN_LOCAL_BOOL(lp_browseable, bBrowseable)
@@ -1763,10 +1724,6 @@ FN_LOCAL_BOOL(lp_inherit_acls, bInheritACLS)
 FN_LOCAL_BOOL(lp_use_client_driver, bUseClientDriver)
 FN_LOCAL_BOOL(lp_default_devmode, bDefaultDevmode)
 FN_LOCAL_BOOL(lp_nt_acl_support, bNTAclSupport)
-#ifdef WITH_SENDFILE
-FN_LOCAL_BOOL(lp_use_sendfile, bUseSendfile)
-#endif
-FN_LOCAL_BOOL(lp_profile_acls, bProfileAcls)
 FN_LOCAL_INTEGER(lp_create_mask, iCreate_mask)
 FN_LOCAL_INTEGER(lp_force_create_mode, iCreate_force_mode)
 FN_LOCAL_INTEGER(lp_security_mask, iSecurity_mask)
@@ -3550,46 +3507,32 @@ static void set_server_role(void)
                case SEC_SHARE:
                        if (lp_domain_logons())
                                DEBUG(0, ("Server's Role (logon server) conflicts with share-level security\n"));
+                       DEBUG(10,("set_server_role: ROLE_STANDALONE\n"));
                        break;
                case SEC_SERVER:
                case SEC_DOMAIN:
                case SEC_ADS:
                        if (lp_domain_logons()) {
                                server_role = ROLE_DOMAIN_PDC;
+                               DEBUG(10,("set_server_role:ROLE_DOMAIN_PDC\n"));
                                break;
                        }
                        server_role = ROLE_DOMAIN_MEMBER;
+                       DEBUG(10,("set_server_role: ROLE_DOMAIN_MEMBER\n"));
                        break;
                case SEC_USER:
                        if (lp_domain_logons()) {
-
-                               if (Globals.bDomainMaster) /* auto or yes */ 
-                                       server_role = ROLE_DOMAIN_PDC;
-                               else
-                                       server_role = ROLE_DOMAIN_BDC;
+                               server_role = ROLE_DOMAIN_PDC;
+                               DEBUG(10,("set_server_role: ROLE_DOMAIN_PDC\n"));
+                               break;
                        }
+                       DEBUG(10,("set_server_role: ROLE_STANDALONE\n"));
                        break;
                default:
                        DEBUG(0, ("Server's Role undefined due to unknown security mode\n"));
+                       DEBUG(10,("set_server_role: ROLE_STANDALONE\n"));
                        break;
        }
-
-       DEBUG(10, ("set_server_role: role = "));
-
-       switch(server_role) {
-       case ROLE_STANDALONE:
-               DEBUGADD(10, ("ROLE_STANDALONE\n"));
-               break;
-       case ROLE_DOMAIN_MEMBER:
-               DEBUGADD(10, ("ROLE_DOMAIN_MEMBER\n"));
-               break;
-       case ROLE_DOMAIN_BDC:
-               DEBUGADD(10, ("ROLE_DOMAIN_BDC\n"));
-               break;
-       case ROLE_DOMAIN_PDC:
-               DEBUGADD(10, ("ROLE_DOMAIN_PDC\n"));
-               break;
-       }
 }
 
 
@@ -3612,13 +3555,12 @@ BOOL lp_load(const char *pszFname, BOOL global_only, BOOL save_defaults,
 
        bRetval = False;
 
-       DEBUG(3, ("lp_load: refreshing parameters\n"));
+       DEBUG(3, ("lp_load: refreshing parmaters\n"));
        
        bInGlobalSection = True;
        bGlobalOnly = global_only;
 
        init_globals();
-       debug_init();
 
        if (save_defaults)
        {
index e1a1de83a6037a55c96b8af1119baf5b7bce0de3..e1f7dec2a9bfa46222aa6c090e2327a5ab7d6000 100644 (file)
@@ -80,6 +80,7 @@ static BOOL pdb_generate_sam_sid(void)
 {
        char *fname = NULL;
        extern pstring global_myname;
+       extern fstring global_myworkgroup;
        BOOL is_dc = False;
 
        if(global_sam_sid==NULL)
@@ -105,11 +106,11 @@ static BOOL pdb_generate_sam_sid(void)
                if (!is_dc)
                        return True;
 
-               if (!secrets_fetch_domain_sid(lp_workgroup(), &domain_sid)) {
+               if (!secrets_fetch_domain_sid(global_myworkgroup, &domain_sid)) {
 
                        /* No domain sid and we're a pdc/bdc. Store it */
 
-                       if (!secrets_store_domain_sid(lp_workgroup(), global_sam_sid)) {
+                       if (!secrets_store_domain_sid(global_myworkgroup, global_sam_sid)) {
                                DEBUG(0,("pdb_generate_sam_sid: Can't store domain SID as a pdc/bdc.\n"));
                                return False;
                        }
@@ -121,7 +122,7 @@ static BOOL pdb_generate_sam_sid(void)
                        /* Domain name sid doesn't match global sam sid. Re-store global sam sid as domain sid. */
 
                        DEBUG(0,("pdb_generate_sam_sid: Mismatched SIDs as a pdc/bdc.\n"));
-                       if (!secrets_store_domain_sid(lp_workgroup(), global_sam_sid)) {
+                       if (!secrets_store_domain_sid(global_myworkgroup, global_sam_sid)) {
                                DEBUG(0,("pdb_generate_sam_sid: Can't re-store domain SID as a pdc/bdc.\n"));
                                return False;
                        }
@@ -144,7 +145,7 @@ static BOOL pdb_generate_sam_sid(void)
                }
                unlink(fname);
                if (is_dc) {
-                       if (!secrets_store_domain_sid(lp_workgroup(), global_sam_sid)) {
+                       if (!secrets_store_domain_sid(global_myworkgroup, global_sam_sid)) {
                                DEBUG(0,("pdb_generate_sam_sid: Failed to store domain SID from file.\n"));
                                SAFE_FREE(fname);
                                return False;
@@ -167,7 +168,7 @@ static BOOL pdb_generate_sam_sid(void)
                return False;
        }
        if (is_dc) {
-               if (!secrets_store_domain_sid(lp_workgroup(), global_sam_sid)) {
+               if (!secrets_store_domain_sid(global_myworkgroup, global_sam_sid)) {
                        DEBUG(0,("pdb_generate_sam_sid: Failed to store generated domain SID.\n"));
                        return False;
                }
index b78f26a8e81704308a47032ae0be611f840211c9..a9c6f0729bd0e60627c5880b461c4de7e03c24bb 100644 (file)
@@ -75,19 +75,11 @@ static void pdb_fill_default_sam(SAM_ACCOUNT *user)
        user->private.workstations = "";
        user->private.unknown_str = "";
        user->private.munged_dial = "";
-
-       user->private.plaintext_pw = NULL;
-
 }      
 
 static void destroy_pdb_talloc(SAM_ACCOUNT **user) 
 {
        if (*user) {
-               data_blob_clear_free(&((*user)->private.lm_pw));
-               data_blob_clear_free(&((*user)->private.nt_pw));
-
-               if((*user)->private.plaintext_pw!=NULL)
-                       memset((*user)->private.plaintext_pw,'\0',strlen((*user)->private.plaintext_pw));
                talloc_destroy((*user)->mem_ctx);
                *user = NULL;
        }
@@ -259,15 +251,6 @@ NTSTATUS pdb_fill_sam_pw(SAM_ACCOUNT *sam_account, const struct passwd *pwd)
                                                            pwd->pw_name, global_myname, 
                                                            pwd->pw_uid, pwd->pw_gid), 
                                     False);
-               if (!pdb_set_acct_ctrl(sam_account, ACB_NORMAL)) {
-                       DEBUG(1, ("Failed to set 'normal account' flags for user %s.\n", pwd->pw_name));
-                       return NT_STATUS_UNSUCCESSFUL;
-               }
-       } else {
-               if (!pdb_set_acct_ctrl(sam_account, ACB_WSTRUST)) {
-                       DEBUG(1, ("Failed to set 'trusted workstation account' flags for user %s.\n", pwd->pw_name));
-                       return NT_STATUS_UNSUCCESSFUL;
-               }
        }
        return NT_STATUS_OK;
 }
@@ -318,8 +301,7 @@ static void pdb_free_sam_contents(SAM_ACCOUNT *user)
 
        data_blob_clear_free(&(user->private.lm_pw));
        data_blob_clear_free(&(user->private.nt_pw));
-       if (user->private.plaintext_pw!=NULL)
-               memset(user->private.plaintext_pw,'\0',strlen(user->private.plaintext_pw));
+       data_blob_clear_free(&(user->private.plaintext_pw));
 }
 
 
@@ -841,14 +823,11 @@ BOOL local_sid_to_uid(uid_t *puid, const DOM_SID *psid, enum SID_NAME_USE *name_
                return False;
        
        if (pdb_getsampwsid(sam_user, psid)) {
-               
-               if (!(pdb_get_init_flag(sam_user) & FLAG_SAM_UID)) { 
+               *puid = pdb_get_uid(sam_user);
+               if (*puid == -1) {
                        pdb_free_sam(&sam_user);
                        return False;
                }
-
-               *puid = pdb_get_uid(sam_user);
-                       
                DEBUG(10,("local_sid_to_uid: SID %s -> uid (%u) (%s).\n", sid_to_string( str, psid),
                          (unsigned int)*puid, pdb_get_username(sam_user)));
                pdb_free_sam(&sam_user);
@@ -1003,7 +982,6 @@ BOOL local_password_change(const char *user_name, int local_flags,
 {
        struct passwd  *pwd = NULL;
        SAM_ACCOUNT     *sam_pass=NULL;
-       uint16 other_acb;
 
        *err_str = '\0';
        *msg_str = '\0';
@@ -1043,33 +1021,31 @@ BOOL local_password_change(const char *user_name, int local_flags,
                                return False;
                        }
                }
+               if (local_flags & LOCAL_TRUST_ACCOUNT) {
+                       if (!pdb_set_acct_ctrl(sam_pass, ACB_WSTRUST)) {
+                               slprintf(err_str, err_str_len - 1, "Failed to set 'trusted workstation account' flags for user %s.\n", user_name);
+                               pdb_free_sam(&sam_pass);
+                               return False;
+                       }
+               } else if (local_flags & LOCAL_INTERDOM_ACCOUNT) {
+                       if (!pdb_set_acct_ctrl(sam_pass, ACB_DOMTRUST)) {
+                               slprintf(err_str, err_str_len - 1, "Failed to set 'domain trust account' flags for user %s.\n", user_name);
+                               pdb_free_sam(&sam_pass);
+                               return False;
+                       }
+               } else {
+                       if (!pdb_set_acct_ctrl(sam_pass, ACB_NORMAL)) {
+                               slprintf(err_str, err_str_len - 1, "Failed to set 'normal account' flags for user %s.\n", user_name);
+                               pdb_free_sam(&sam_pass);
+                               return False;
+                       }
+               }
+
        } else {
                /* the entry already existed */
                local_flags &= ~LOCAL_ADD_USER;
        }
 
-       /* the 'other' acb bits not being changed here */
-       other_acb =  (pdb_get_acct_ctrl(sam_pass) & (!(ACB_WSTRUST|ACB_DOMTRUST|ACB_SVRTRUST|ACB_NORMAL)));
-       if (local_flags & LOCAL_TRUST_ACCOUNT) {
-               if (!pdb_set_acct_ctrl(sam_pass, ACB_WSTRUST | other_acb) ) {
-                       slprintf(err_str, err_str_len - 1, "Failed to set 'trusted workstation account' flags for user %s.\n", user_name);
-                       pdb_free_sam(&sam_pass);
-                       return False;
-               }
-       } else if (local_flags & LOCAL_INTERDOM_ACCOUNT) {
-               if (!pdb_set_acct_ctrl(sam_pass, ACB_DOMTRUST | other_acb)) {
-                       slprintf(err_str, err_str_len - 1, "Failed to set 'domain trust account' flags for user %s.\n", user_name);
-                       pdb_free_sam(&sam_pass);
-                       return False;
-               }
-       } else {
-               if (!pdb_set_acct_ctrl(sam_pass, ACB_NORMAL | other_acb)) {
-                       slprintf(err_str, err_str_len - 1, "Failed to set 'normal account' flags for user %s.\n", user_name);
-                       pdb_free_sam(&sam_pass);
-                       return False;
-               }
-       }
-
        /*
         * We are root - just write the new password
         * and the valid last change time.
diff --git a/source3/passdb/passgrp.c b/source3/passdb/passgrp.c
new file mode 100644 (file)
index 0000000..f735917
--- /dev/null
@@ -0,0 +1,219 @@
+/* 
+   Unix SMB/CIFS implementation.
+   Password and authentication handling
+   Copyright (C) Jeremy Allison 1996-1998
+   Copyright (C) Luke Kenneth Casson Leighton 1996-1998
+      
+   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., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+
+#undef DBGC_CLASS
+#define DBGC_CLASS DBGC_PASSDB
+
+/*
+ * NOTE. All these functions are abstracted into a structure
+ * that points to the correct function for the selected database. JRA.
+ *
+ * the API does NOT fill in the gaps if you set an API function
+ * to NULL: it will deliberately attempt to call the NULL function.
+ *
+ */
+
+static struct passgrp_ops *pwgrp_ops;
+
+/***************************************************************
+ Initialise the passgrp operations.
+***************************************************************/
+
+BOOL initialise_passgrp_db(void)
+{
+  if (pwgrp_ops)
+  {
+    return True;
+  }
+
+#ifdef WITH_NISPLUS
+  pwgrp_ops =  nisplus_initialise_password_grp();
+#elif defined(WITH_LDAP)
+  pwgrp_ops = ldap_initialize_password_grp();
+#else 
+  pwgrp_ops = file_initialise_password_grp();
+#endif 
+
+  return (pwgrp_ops != NULL);
+}
+
+/*
+ * Functions that return/manipulate a struct smb_passwd.
+ */
+
+/************************************************************************
+ Utility function to search smb passwd by rid.  
+*************************************************************************/
+
+struct smb_passwd *iterate_getsmbgrprid(uint32 user_rid,
+               uint32 **grps, int *num_grps,
+               uint32 **alss, int *num_alss)
+{
+       return iterate_getsmbgrpuid(pwdb_user_rid_to_uid(user_rid),
+                                   grps, num_grps, alss, num_alss);
+}
+
+/************************************************************************
+ Utility function to search smb passwd by uid.  use this if your database
+ does not have search facilities.
+*************************************************************************/
+
+struct smb_passwd *iterate_getsmbgrpuid(uid_t smb_userid,
+               uint32 **grps, int *num_grps,
+               uint32 **alss, int *num_alss)
+{
+       struct smb_passwd *pwd = NULL;
+       void *fp = NULL;
+
+       DEBUG(10, ("search by smb_userid: %x\n", (int)smb_userid));
+
+       /* Open the smb password database - not for update. */
+       fp = startsmbgrpent(False);
+
+       if (fp == NULL)
+       {
+               DEBUG(0, ("unable to open smb passgrp database.\n"));
+               return NULL;
+       }
+
+       while ((pwd = getsmbgrpent(fp, grps, num_grps, alss, num_alss)) != NULL && pwd->smb_userid != smb_userid)
+      ;
+
+       if (pwd != NULL)
+       {
+               DEBUG(10, ("found by smb_userid: %x\n", (int)smb_userid));
+       }
+
+       endsmbgrpent(fp);
+       return pwd;
+}
+
+/************************************************************************
+ Utility function to search smb passwd by name.  use this if your database
+ does not have search facilities.
+*************************************************************************/
+
+struct smb_passwd *iterate_getsmbgrpnam(char *name,
+               uint32 **grps, int *num_grps,
+               uint32 **alss, int *num_alss)
+{
+       struct smb_passwd *pwd = NULL;
+       void *fp = NULL;
+
+       DEBUG(10, ("search by name: %s\n", name));
+
+       /* Open the passgrp file - not for update. */
+       fp = startsmbgrpent(False);
+
+       if (fp == NULL)
+       {
+               DEBUG(0, ("unable to open smb passgrp database.\n"));
+               return NULL;
+       }
+
+       while ((pwd = getsmbgrpent(fp, grps, num_grps, alss, num_alss)) != NULL && !strequal(pwd->smb_name, name))
+      ;
+
+       if (pwd != NULL)
+       {
+               DEBUG(10, ("found by name: %s\n", name));
+       }
+
+       endsmbgrpent(fp);
+       return pwd;
+}
+
+/***************************************************************
+ Start to enumerate the smb or sam passwd list. Returns a void pointer
+ to ensure no modification outside this module.
+
+ Note that currently it is being assumed that a pointer returned
+ from this function may be used to enumerate struct sam_passwd
+ entries as well as struct smb_passwd entries. This may need
+ to change. JRA.
+
+****************************************************************/
+
+void *startsmbgrpent(BOOL update)
+{
+  return pwgrp_ops->startsmbgrpent(update);
+}
+
+/***************************************************************
+ End enumeration of the smb or sam passwd list.
+
+ Note that currently it is being assumed that a pointer returned
+ from this function may be used to enumerate struct sam_passwd
+ entries as well as struct smb_passwd entries. This may need
+ to change. JRA.
+
+****************************************************************/
+
+void endsmbgrpent(void *vp)
+{
+  pwgrp_ops->endsmbgrpent(vp);
+}
+
+/*************************************************************************
+ Routine to return the next entry in the smb passwd list.
+ *************************************************************************/
+
+struct smb_passwd *getsmbgrpent(void *vp,
+               uint32 **grps, int *num_grps,
+               uint32 **alss, int *num_alss)
+{
+       return pwgrp_ops->getsmbgrpent(vp, grps, num_grps, alss, num_alss);
+}
+
+/************************************************************************
+ Routine to search smb passwd by name.
+*************************************************************************/
+
+struct smb_passwd *getsmbgrpnam(char *name,
+               uint32 **grps, int *num_grps,
+               uint32 **alss, int *num_alss)
+{
+       return pwgrp_ops->getsmbgrpnam(name, grps, num_grps, alss, num_alss);
+}
+
+/************************************************************************
+ Routine to search smb passwd by user rid.
+*************************************************************************/
+
+struct smb_passwd *getsmbgrprid(uint32 user_rid,
+               uint32 **grps, int *num_grps,
+               uint32 **alss, int *num_alss)
+{
+       return pwgrp_ops->getsmbgrprid(user_rid, grps, num_grps, alss, num_alss);
+}
+
+/************************************************************************
+ Routine to search smb passwd by uid.
+*************************************************************************/
+
+struct smb_passwd *getsmbgrpuid(uid_t smb_userid,
+               uint32 **grps, int *num_grps,
+               uint32 **alss, int *num_alss)
+{
+       return pwgrp_ops->getsmbgrpuid(smb_userid, grps, num_grps, alss, num_alss);
+}
index 0c338f317ecd665c2c01d41f174668f6b63a9449..2da6de7270113b9c9117eb20d12132815482c276 100644 (file)
@@ -151,7 +151,7 @@ const uint8* pdb_get_lanman_passwd (const SAM_ACCOUNT *sampass)
 const char* pdb_get_plaintext_passwd (const SAM_ACCOUNT *sampass)
 {
        if (sampass) {
-               return (sampass->private.plaintext_pw);
+               return ((char*)sampass->private.plaintext_pw.data);
        }
        else
                return (NULL);
@@ -956,24 +956,14 @@ BOOL pdb_set_lanman_passwd (SAM_ACCOUNT *sampass, const uint8 pwd[16])
  below)
  ********************************************************************/
 
-BOOL pdb_set_plaintext_pw_only (SAM_ACCOUNT *sampass, const char *password)
+BOOL pdb_set_plaintext_pw_only (SAM_ACCOUNT *sampass, const uint8 *password, size_t len)
 {
        if (!sampass)
                return False;
 
-       if (password) { 
-               if (sampass->private.plaintext_pw!=NULL) 
-                       memset(sampass->private.plaintext_pw,'\0',strlen(sampass->private.plaintext_pw)+1);
-               sampass->private.plaintext_pw = talloc_strdup(sampass->mem_ctx, password);
-               
-               if (!sampass->private.plaintext_pw) {
-                       DEBUG(0, ("pdb_set_unknown_str: talloc_strdup() failed!\n"));
-                       return False;
-               }
-
-       } else {
-               sampass->private.plaintext_pw = NULL;
-       }
+       data_blob_clear_free(&sampass->private.plaintext_pw);
+       
+       sampass->private.plaintext_pw = data_blob(password, len);
 
        return True;
 }
@@ -1072,10 +1062,7 @@ BOOL pdb_set_plaintext_passwd (SAM_ACCOUNT *sampass, const char *plaintext)
 
        if (!pdb_set_lanman_passwd (sampass, new_lanman_p16)) 
                return False;
-
-       if (!pdb_set_plaintext_pw_only (sampass, plaintext)) 
-               return False;
-
+       
        if (!pdb_set_pass_changed_now (sampass))
                return False;
 
index f965dd727cce7d7c912bc989466aa7c44e7cd89a..f311223d772c63c7bd8725a7112e79d0573d4d49 100644 (file)
@@ -34,14 +34,13 @@ const struct pdb_init_function_entry builtin_pdb_init_functions[] = {
        { "ldapsam", pdb_init_ldapsam },
        { "ldapsam_nua", pdb_init_ldapsam_nua },
        { "unixsam", pdb_init_unixsam },
-       { "nisplussam", pdb_init_nisplussam },
        { "plugin", pdb_init_plugin },
        { NULL, NULL}
 };
 
 static BOOL context_setsampwent(struct pdb_context *context, BOOL update)
 {
-       if (!context) {
+       if ((!context) || (!context->pdb_methods) || (!context->pdb_methods->setsampwent)) {
                DEBUG(0, ("invalid pdb_context specified!\n"));
                return False;
        }
@@ -53,7 +52,7 @@ static BOOL context_setsampwent(struct pdb_context *context, BOOL update)
                return True;
        }
 
-       while (!(context->pwent_methods->setsampwent) || !(context->pwent_methods->setsampwent(context->pwent_methods, update))) {
+       while (!(context->pwent_methods->setsampwent(context->pwent_methods, update))) {
                context->pwent_methods = context->pwent_methods->next;
                if (context->pwent_methods == NULL) 
                        return False;
index 71a8c256a3aae719bc3edd394bd875694b2c0125..f82cb4488fc59ff298a9c0520b0233409341f4f5 100644 (file)
@@ -1,11 +1,11 @@
 /* 
    Unix SMB/CIFS implementation.
    LDAP protocol helper functions for SAMBA
-   Copyright (C) Jean François Micouleau       1998
-   Copyright (C) Gerald Carter                 2001
-   Copyright (C) Shahms King                   2001
-   Copyright (C) Andrew Bartlett               2002
-   Copyright (C) Stefan (metze) Metzmacher     2002
+   Copyright (C) Jean François Micouleau       1998
+   Copyright (C) Gerald Carter                         2001
+   Copyright (C) Shahms King                   2001
+   Copyright (C) Andrew Bartlett               2002
+   Copyright (C) Stefan (metze) Metzmacher     2002
     
    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
@@ -273,8 +273,7 @@ static BOOL ldapsam_open_connection (struct ldapsam_privates *ldap_state, LDAP *
  a rebind function for authenticated referrals
  This version takes a void* that we can shove useful stuff in :-)
 ******************************************************************/
-#if defined(LDAP_API_FEATURE_X_OPENLDAP) && (LDAP_API_VERSION > 2000)
-#else
+
 static int rebindproc_with_state  (LDAP * ld, char **whop, char **credp, 
                                   int *methodp, int freeit, void *arg)
 {
@@ -305,14 +304,13 @@ static int rebindproc_with_state  (LDAP * ld, char **whop, char **credp,
        }
        return 0;
 }
-#endif /*defined(LDAP_API_FEATURE_X_OPENLDAP) && (LDAP_API_VERSION > 2000)*/
 
 /*******************************************************************
  a rebind function for authenticated referrals
  This version takes a void* that we can shove useful stuff in :-)
  and actually does the connection.
 ******************************************************************/
-#if defined(LDAP_API_FEATURE_X_OPENLDAP) && (LDAP_API_VERSION > 2000)
+
 static int rebindproc_connect_with_state (LDAP *ldap_struct, 
                                          LDAP_CONST char *url, 
                                          ber_tag_t request,
@@ -331,14 +329,11 @@ static int rebindproc_connect_with_state (LDAP *ldap_struct,
        
        return rc;
 }
-#endif /*defined(LDAP_API_FEATURE_X_OPENLDAP) && (LDAP_API_VERSION > 2000)*/
 
 /*******************************************************************
  Add a rebind function for authenticated referrals
 ******************************************************************/
-#if defined(LDAP_API_FEATURE_X_OPENLDAP) && (LDAP_API_VERSION > 2000)
-#else
-# if LDAP_SET_REBIND_PROC_ARGS == 2
+
 static int rebindproc (LDAP *ldap_struct, char **whop, char **credp,
                       int *method, int freeit )
 {
@@ -346,23 +341,19 @@ static int rebindproc (LDAP *ldap_struct, char **whop, char **credp,
                                   method, freeit, static_ldap_state);
        
 }
-# endif /*LDAP_SET_REBIND_PROC_ARGS == 2*/
-#endif /*defined(LDAP_API_FEATURE_X_OPENLDAP) && (LDAP_API_VERSION > 2000)*/
 
 /*******************************************************************
  a rebind function for authenticated referrals
  this also does the connection, but no void*.
 ******************************************************************/
-#if defined(LDAP_API_FEATURE_X_OPENLDAP) && (LDAP_API_VERSION > 2000)
-# if LDAP_SET_REBIND_PROC_ARGS == 2
+
 static int rebindproc_connect (LDAP * ld, LDAP_CONST char *url, int request,
                               ber_int_t msgid)
 {
        return rebindproc_connect_with_state(ld, url, (ber_tag_t)request, msgid, 
                                             static_ldap_state);
 }
-# endif /*LDAP_SET_REBIND_PROC_ARGS == 2*/
-#endif /*defined(LDAP_API_FEATURE_X_OPENLDAP) && (LDAP_API_VERSION > 2000)*/
+
 
 /*******************************************************************
  connect to the ldap server under system privilege.
@@ -400,18 +391,18 @@ static BOOL ldapsam_connect_system(struct ldapsam_privates *ldap_state, LDAP * l
 # if LDAP_SET_REBIND_PROC_ARGS == 3    
        ldap_set_rebind_proc(ldap_struct, &rebindproc_connect_with_state, (void *)ldap_state);  
 # endif
-#else /*defined(LDAP_API_FEATURE_X_OPENLDAP) && (LDAP_API_VERSION > 2000)*/
+#else
 # if LDAP_SET_REBIND_PROC_ARGS == 2    
        ldap_set_rebind_proc(ldap_struct, &rebindproc); 
 # endif
 # if LDAP_SET_REBIND_PROC_ARGS == 3    
        ldap_set_rebind_proc(ldap_struct, &rebindproc_with_state, (void *)ldap_state);  
 # endif
-#endif /*defined(LDAP_API_FEATURE_X_OPENLDAP) && (LDAP_API_VERSION > 2000)*/
-
+#endif
        rc = ldap_simple_bind_s(ldap_struct, ldap_dn, ldap_secret);
 
-       if (rc != LDAP_SUCCESS) {
+       if (rc != LDAP_SUCCESS)
+       {
                DEBUG(0, ("Bind failed: %s\n", ldap_err2string(rc)));
                return False;
        }
@@ -430,7 +421,7 @@ static int ldapsam_search_one_user (struct ldapsam_privates *ldap_state, LDAP *
 
        DEBUG(2, ("ldapsam_search_one_user: searching for:[%s]\n", filter));
 
-       rc = ldap_search_s(ldap_struct, lp_ldap_suffix (), scope, filter, (char **)attr, 0, result);
+       rc = ldap_search_s(ldap_struct, lp_ldap_suffix (), scope, filter, attr, 0, result);
 
        if (rc != LDAP_SUCCESS) {
                DEBUG(0,("ldapsam_search_one_user: Problem during the LDAP search: %s\n", 
@@ -953,6 +944,9 @@ static BOOL init_ldap_from_sam (struct ldapsam_privates *ldap_state,
        slprintf(temp, sizeof(temp) - 1, "%i", rid);
        make_a_mod(mods, ldap_op, "primaryGroupID", temp);
 
+       slprintf (temp, sizeof (temp) - 1, "%li", pdb_get_pass_last_set_time(sampass));
+       make_a_mod(mods, ldap_op, "pwdLastSet", temp);
+
        /* displayName, cn, and gecos should all be the same
           *  most easily accomplished by giving them the same OID
           *  gecos isn't set here b/c it should be handled by the 
@@ -995,7 +989,6 @@ static BOOL init_ldap_from_sam (struct ldapsam_privates *ldap_state,
                make_a_mod(mods, ldap_op, "kickoffTime", temp);
        }
 
-
        if (IS_SAM_SET(sampass, FLAG_SAM_CANCHANGETIME)) {
                slprintf (temp, sizeof (temp) - 1, "%li", pdb_get_pass_can_change_time(sampass));
                make_a_mod(mods, ldap_op, "pwdCanChange", temp);
@@ -1006,22 +999,13 @@ static BOOL init_ldap_from_sam (struct ldapsam_privates *ldap_state,
                make_a_mod(mods, ldap_op, "pwdMustChange", temp);
        }
 
-       if ((pdb_get_acct_ctrl(sampass)&(ACB_WSTRUST|ACB_SVRTRUST|ACB_DOMTRUST))||
-               (lp_ldap_passwd_sync()!=LDAP_PASSWD_SYNC_ONLY)) {
-
-               pdb_sethexpwd (temp, pdb_get_lanman_passwd(sampass), pdb_get_acct_ctrl(sampass));
-               make_a_mod (mods, ldap_op, "lmPassword", temp);
+       /* FIXME: Hours stuff goes in LDAP  */
+       pdb_sethexpwd (temp, pdb_get_lanman_passwd(sampass), pdb_get_acct_ctrl(sampass));
+       make_a_mod (mods, ldap_op, "lmPassword", temp);
        
-               pdb_sethexpwd (temp, pdb_get_nt_passwd(sampass), pdb_get_acct_ctrl(sampass));
-               make_a_mod (mods, ldap_op, "ntPassword", temp);
+       pdb_sethexpwd (temp, pdb_get_nt_passwd(sampass), pdb_get_acct_ctrl(sampass));
+       make_a_mod (mods, ldap_op, "ntPassword", temp);
        
-               slprintf (temp, sizeof (temp) - 1, "%li", pdb_get_pass_last_set_time(sampass));
-               make_a_mod(mods, ldap_op, "pwdLastSet", temp);
-
-       }
-
-       /* FIXME: Hours stuff goes in LDAP  */
-
        make_a_mod (mods, ldap_op, "acctFlags", pdb_encode_acct_ctrl (pdb_get_acct_ctrl(sampass),
                NEW_PW_FORMAT_SPACE_PADDED_LEN));
 
@@ -1046,18 +1030,18 @@ static uint32 check_nua_rid_is_avail(struct ldapsam_privates *ldap_state, uint32
 
        if (ldapsam_search_one_user_by_rid(ldap_state, ldap_struct, final_rid, &result) != LDAP_SUCCESS) {
                DEBUG(0, ("Cannot allocate NUA RID %d (0x%x), as the confirmation search failed!\n", final_rid, final_rid));
+               final_rid = 0;
                ldap_msgfree(result);
-               return 0;
        }
 
-       if (ldap_count_entries(ldap_struct, result) != 0) {
+       if (ldap_count_entries(ldap_struct, result) != 0)
+       {
                DEBUG(0, ("Cannot allocate NUA RID %d (0x%x), as the RID is already in use!!\n", final_rid, final_rid));
+               final_rid = 0;
                ldap_msgfree(result);
-               return 0;
        }
 
        DEBUG(5, ("NUA RID %d (0x%x), declared valid\n", final_rid, final_rid));
-       ldap_msgfree(result);
        return final_rid;
 }
 
@@ -1109,10 +1093,12 @@ static uint32 search_top_nua_rid(struct ldapsam_privates *ldap_state, LDAP *ldap
        DEBUG(2, ("ldapsam_get_next_available_nua_rid: searching for:[%s]\n", final_filter));
 
        rc = ldap_search_s(ldap_struct, lp_ldap_suffix(),
-                          LDAP_SCOPE_SUBTREE, final_filter, (char **)attr, 0,
+                          LDAP_SCOPE_SUBTREE, final_filter, attr, 0,
                           &result);
 
-       if (rc != LDAP_SUCCESS) {
+       if (rc != LDAP_SUCCESS)
+       {
+               
                DEBUG(3, ("LDAP search failed! cannot find base for NUA RIDs: %s\n", ldap_err2string(rc)));
                DEBUGADD(3, ("Query was: %s, %s\n", lp_ldap_suffix(), final_filter));
 
@@ -1163,10 +1149,12 @@ static uint32 ldapsam_get_next_available_nua_rid(struct ldapsam_privates *ldap_s
        uint32 next_nua_rid;
        uint32 top_nua_rid;
 
-       if (!ldapsam_open_connection(ldap_state, &ldap_struct)) {
+       if (!ldapsam_open_connection(ldap_state, &ldap_struct))
+       {
                return 0;
        }
-       if (!ldapsam_connect_system(ldap_state, ldap_struct)) {
+       if (!ldapsam_connect_system(ldap_state, ldap_struct))
+       {
                ldap_unbind(ldap_struct);
                return 0;
        }
@@ -1189,10 +1177,12 @@ static BOOL ldapsam_setsampwent(struct pdb_methods *my_methods, BOOL update)
        int rc;
        pstring filter;
 
-       if (!ldapsam_open_connection(ldap_state, &ldap_state->ldap_struct)) {
+       if (!ldapsam_open_connection(ldap_state, &ldap_state->ldap_struct))
+       {
                return False;
        }
-       if (!ldapsam_connect_system(ldap_state, ldap_state->ldap_struct)) {
+       if (!ldapsam_connect_system(ldap_state, ldap_state->ldap_struct))
+       {
                ldap_unbind(ldap_state->ldap_struct);
                return False;
        }
@@ -1201,10 +1191,11 @@ static BOOL ldapsam_setsampwent(struct pdb_methods *my_methods, BOOL update)
        all_string_sub(filter, "%u", "*", sizeof(pstring));
 
        rc = ldap_search_s(ldap_state->ldap_struct, lp_ldap_suffix(),
-                          LDAP_SCOPE_SUBTREE, filter, (char **)attr, 0,
+                          LDAP_SCOPE_SUBTREE, filter, attr, 0,
                           &ldap_state->result);
 
-       if (rc != LDAP_SUCCESS) {
+       if (rc != LDAP_SUCCESS)
+       {
                DEBUG(0, ("LDAP search failed: %s\n", ldap_err2string(rc)));
                DEBUG(3, ("Query was: %s, %s\n", lp_ldap_suffix(), filter));
                ldap_msgfree(ldap_state->result);
@@ -1231,7 +1222,8 @@ End enumeration of the LDAP password list
 static void ldapsam_endsampwent(struct pdb_methods *my_methods)
 {
        struct ldapsam_privates *ldap_state = (struct ldapsam_privates *)my_methods->private_data;
-       if (ldap_state->ldap_struct && ldap_state->result) {
+       if (ldap_state->ldap_struct && ldap_state->result)
+       {
                ldap_msgfree(ldap_state->result);
                ldap_unbind(ldap_state->ldap_struct);
                ldap_state->ldap_struct = NULL;
@@ -1242,7 +1234,7 @@ static void ldapsam_endsampwent(struct pdb_methods *my_methods)
 /**********************************************************************
 Get the next entry in the LDAP password database 
 *********************************************************************/
-static BOOL ldapsam_getsampwent(struct pdb_methods *my_methods, SAM_ACCOUNT *user)
+static BOOL ldapsam_getsampwent(struct pdb_methods *my_methods, SAM_ACCOUNT * user)
 {
        struct ldapsam_privates *ldap_state = (struct ldapsam_privates *)my_methods->private_data;
        BOOL ret = False;
@@ -1260,7 +1252,8 @@ static BOOL ldapsam_getsampwent(struct pdb_methods *my_methods, SAM_ACCOUNT *use
                                         ldap_state->entry);
                
                ldap_state->entry = ldap_next_entry(ldap_state->ldap_struct,
-                                           ldap_state->entry); 
+                                           ldap_state->entry);
+               
        }
 
        return True;
@@ -1269,7 +1262,7 @@ static BOOL ldapsam_getsampwent(struct pdb_methods *my_methods, SAM_ACCOUNT *use
 /**********************************************************************
 Get SAM_ACCOUNT entry from LDAP by username 
 *********************************************************************/
-static BOOL ldapsam_getsampwnam(struct pdb_methods *my_methods, SAM_ACCOUNT *user, const char *sname)
+static BOOL ldapsam_getsampwnam(struct pdb_methods *my_methods, SAM_ACCOUNT * user, const char *sname)
 {
        struct ldapsam_privates *ldap_state = (struct ldapsam_privates *)my_methods->private_data;
        LDAP *ldap_struct;
@@ -1278,15 +1271,18 @@ static BOOL ldapsam_getsampwnam(struct pdb_methods *my_methods, SAM_ACCOUNT *use
 
        if (!ldapsam_open_connection(ldap_state, &ldap_struct))
                return False;
-       if (!ldapsam_connect_system(ldap_state, ldap_struct)) {
+       if (!ldapsam_connect_system(ldap_state, ldap_struct))
+       {
                ldap_unbind(ldap_struct);
                return False;
        }
-       if (ldapsam_search_one_user_by_name(ldap_state, ldap_struct, sname, &result) != LDAP_SUCCESS) {
+       if (ldapsam_search_one_user_by_name(ldap_state, ldap_struct, sname, &result) != LDAP_SUCCESS)
+       {
                ldap_unbind(ldap_struct);
                return False;
        }
-       if (ldap_count_entries(ldap_struct, result) < 1) {
+       if (ldap_count_entries(ldap_struct, result) < 1)
+       {
                DEBUG(4,
                      ("We don't find this user [%s] count=%d\n", sname,
                       ldap_count_entries(ldap_struct, result)));
@@ -1294,7 +1290,8 @@ static BOOL ldapsam_getsampwnam(struct pdb_methods *my_methods, SAM_ACCOUNT *use
                return False;
        }
        entry = ldap_first_entry(ldap_struct, result);
-       if (entry) {
+       if (entry)
+       {
                if (!init_sam_from_ldap(ldap_state, user, ldap_struct, entry)) {
                        DEBUG(1,("ldapsam_getsampwnam: init_sam_from_ldap failed for user '%s'!\n", sname));
                        ldap_msgfree(result);
@@ -1304,7 +1301,9 @@ static BOOL ldapsam_getsampwnam(struct pdb_methods *my_methods, SAM_ACCOUNT *use
                ldap_msgfree(result);
                ldap_unbind(ldap_struct);
                return True;
-       } else {
+       }
+       else
+       {
                ldap_msgfree(result);
                ldap_unbind(ldap_struct);
                return False;
@@ -1314,7 +1313,7 @@ static BOOL ldapsam_getsampwnam(struct pdb_methods *my_methods, SAM_ACCOUNT *use
 /**********************************************************************
 Get SAM_ACCOUNT entry from LDAP by rid 
 *********************************************************************/
-static BOOL ldapsam_getsampwrid(struct pdb_methods *my_methods, SAM_ACCOUNT *user, uint32 rid)
+static BOOL ldapsam_getsampwrid(struct pdb_methods *my_methods, SAM_ACCOUNT * user, uint32 rid)
 {
        struct ldapsam_privates *ldap_state = (struct ldapsam_privates *)my_methods->private_data;
        LDAP *ldap_struct;
@@ -1324,17 +1323,20 @@ static BOOL ldapsam_getsampwrid(struct pdb_methods *my_methods, SAM_ACCOUNT *use
        if (!ldapsam_open_connection(ldap_state, &ldap_struct))
                return False;
 
-       if (!ldapsam_connect_system(ldap_state, ldap_struct)) {
+       if (!ldapsam_connect_system(ldap_state, ldap_struct))
+       {
                ldap_unbind(ldap_struct);
                return False;
        }
        if (ldapsam_search_one_user_by_rid(ldap_state, ldap_struct, rid, &result) !=
-           LDAP_SUCCESS) {
+           LDAP_SUCCESS)
+       {
                ldap_unbind(ldap_struct);
                return False;
        }
 
-       if (ldap_count_entries(ldap_struct, result) < 1) {
+       if (ldap_count_entries(ldap_struct, result) < 1)
+       {
                DEBUG(4,
                      ("We don't find this rid [%i] count=%d\n", rid,
                       ldap_count_entries(ldap_struct, result)));
@@ -1343,7 +1345,8 @@ static BOOL ldapsam_getsampwrid(struct pdb_methods *my_methods, SAM_ACCOUNT *use
        }
 
        entry = ldap_first_entry(ldap_struct, result);
-       if (entry) {
+       if (entry)
+       {
                if (!init_sam_from_ldap(ldap_state, user, ldap_struct, entry)) {
                        DEBUG(1,("ldapsam_getsampwrid: init_sam_from_ldap failed!\n"));
                        ldap_msgfree(result);
@@ -1353,7 +1356,9 @@ static BOOL ldapsam_getsampwrid(struct pdb_methods *my_methods, SAM_ACCOUNT *use
                ldap_msgfree(result);
                ldap_unbind(ldap_struct);
                return True;
-       } else {
+       }
+       else
+       {
                ldap_msgfree(result);
                ldap_unbind(ldap_struct);
                return False;
@@ -1368,95 +1373,6 @@ static BOOL ldapsam_getsampwsid(struct pdb_methods *my_methods, SAM_ACCOUNT * us
        return ldapsam_getsampwrid(my_methods, user, rid);
 }      
 
-static BOOL ldapsam_modify_entry(LDAP *ldap_struct,SAM_ACCOUNT *newpwd,char *dn,LDAPMod **mods,int ldap_op)
-{
-       int version;
-       int rc;
-       
-       switch(ldap_op)
-       {
-               case LDAP_MOD_ADD: 
-                               make_a_mod(&mods, LDAP_MOD_ADD, "objectclass", "account");
-                               if((rc = ldap_add_s(ldap_struct,dn,mods))!=LDAP_SUCCESS) {
-                                       char *ld_error;
-                                       ldap_get_option(ldap_struct, LDAP_OPT_ERROR_STRING,
-                                       &ld_error);
-                                       DEBUG(0,
-                                               ("failed to add user with uid = %s with: %s\n\t%s\n",
-                                               pdb_get_username(newpwd), ldap_err2string(rc),
-                                               ld_error));
-                                       free(ld_error);
-                                       return False;
-                               }  
-                               break;
-               case LDAP_MOD_REPLACE:  
-                               if((rc = ldap_modify_s(ldap_struct,dn,mods))!=LDAP_SUCCESS) {
-                                       char *ld_error;
-                                       ldap_get_option(ldap_struct, LDAP_OPT_ERROR_STRING,
-                                       &ld_error);
-                                       DEBUG(0,
-                                               ("failed to modify user with uid = %s with: %s\n\t%s\n",
-                                               pdb_get_username(newpwd), ldap_err2string(rc),
-                                               ld_error));
-                                       free(ld_error);
-                                       return False;
-                               }  
-                               break;
-               default:        
-                               DEBUG(0,("Wrong LDAP operation type: %d!\n",ldap_op));
-                               return False;
-       }
-       
-#ifdef LDAP_EXOP_X_MODIFY_PASSWD
-       if (!(pdb_get_acct_ctrl(newpwd)&(ACB_WSTRUST|ACB_SVRTRUST|ACB_DOMTRUST))&&
-               (lp_ldap_passwd_sync()!=LDAP_PASSWD_SYNC_OFF)&&
-               (pdb_get_plaintext_passwd(newpwd)!=NULL)) {
-               BerElement *ber;
-               struct berval *bv;
-               char *retoid;
-               struct berval *retdata;
-
-               if (ldap_get_option(ldap_struct, LDAP_OPT_PROTOCOL_VERSION, &version) == LDAP_OPT_SUCCESS) {
-                       if (version != LDAP_VERSION3) {
-                               version = LDAP_VERSION3;
-                               ldap_set_option (ldap_struct, LDAP_OPT_PROTOCOL_VERSION, &version);
-                       }
-               }
-
-               if ((ber = ber_alloc_t(LBER_USE_DER))==NULL) {
-                       DEBUG(0,("ber_alloc_t returns NULL\n"));
-                       return False;
-               }
-               ber_printf (ber, "{");
-               ber_printf (ber, "ts", LDAP_TAG_EXOP_X_MODIFY_PASSWD_ID,dn);
-               ber_printf (ber, "ts", LDAP_TAG_EXOP_X_MODIFY_PASSWD_NEW, pdb_get_plaintext_passwd(newpwd));
-               ber_printf (ber, "N}");
-
-               if ((rc = ber_flatten (ber, &bv))<0) {
-                       DEBUG(0,("ber_flatten returns a value <0\n"));
-                       return False;
-               }
-               
-               ber_free(ber,1);
-               
-               if ((rc = ldap_extended_operation_s(ldap_struct, LDAP_EXOP_X_MODIFY_PASSWD,
-                                                   bv, NULL, NULL, &retoid, &retdata))!=LDAP_SUCCESS) {
-                       DEBUG(0,("LDAP Password could not be changed for user %s: %s\n",
-                               pdb_get_username(newpwd),ldap_err2string(rc)));
-               } else {
-                       DEBUG(3,("LDAP Password changed for user %s\n",pdb_get_username(newpwd)));
-    
-                       ber_bvfree(retdata);
-                       ber_memfree(retoid);
-               }
-               ber_bvfree(bv);
-       }
-#else
-       DEBUG(10,("LDAP PASSWORD SYNC is not supported!\n"));
-#endif /* LDAP_EXOP_X_MODIFY_PASSWD */
-       return True;
-}
-
 /**********************************************************************
 Delete entry from LDAP for username 
 *********************************************************************/
@@ -1498,8 +1414,7 @@ static BOOL ldapsam_delete_sam_account(struct pdb_methods *my_methods, SAM_ACCOU
 
        entry = ldap_first_entry (ldap_struct, result);
        dn = ldap_get_dn (ldap_struct, entry);
-       ldap_msgfree(result);
-       
+
        rc = ldap_delete_s (ldap_struct, dn);
 
        ldap_memfree (dn);
@@ -1534,7 +1449,8 @@ static BOOL ldapsam_update_sam_account(struct pdb_methods *my_methods, SAM_ACCOU
        if (!ldapsam_open_connection(ldap_state, &ldap_struct)) /* open a connection to the server */
                return False;
 
-       if (!ldapsam_connect_system(ldap_state, ldap_struct)) { /* connect as system account */
+       if (!ldapsam_connect_system(ldap_state, ldap_struct))   /* connect as system account */
+       {
                ldap_unbind(ldap_struct);
                return False;
        }
@@ -1542,7 +1458,8 @@ static BOOL ldapsam_update_sam_account(struct pdb_methods *my_methods, SAM_ACCOU
        rc = ldapsam_search_one_user_by_name(ldap_state, ldap_struct,
                                             pdb_get_username(newpwd), &result);
 
-       if (ldap_count_entries(ldap_struct, result) == 0) {
+       if (ldap_count_entries(ldap_struct, result) == 0)
+       {
                DEBUG(0, ("No user to modify!\n"));
                ldap_msgfree(result);
                ldap_unbind(ldap_struct);
@@ -1558,17 +1475,23 @@ static BOOL ldapsam_update_sam_account(struct pdb_methods *my_methods, SAM_ACCOU
 
        entry = ldap_first_entry(ldap_struct, result);
        dn = ldap_get_dn(ldap_struct, entry);
-        ldap_msgfree(result);
-       
-       if (!ldapsam_modify_entry(ldap_struct,newpwd,dn,mods,LDAP_MOD_REPLACE)) {
-               DEBUG(0,("failed to modify user with uid = %s\n",
-                                       pdb_get_username(newpwd)));
-               ldap_mods_free(mods,1);
+
+       rc = ldap_modify_s(ldap_struct, dn, mods);
+
+       if (rc != LDAP_SUCCESS)
+       {
+               char *ld_error;
+               ldap_get_option(ldap_struct, LDAP_OPT_ERROR_STRING,
+                               &ld_error);
+               DEBUG(0,
+                     ("failed to modify user with uid = %s with: %s\n\t%s\n",
+                      pdb_get_username(newpwd), ldap_err2string(rc),
+                      ld_error));
+               free(ld_error);
                ldap_unbind(ldap_struct);
                return False;
        }
 
-
        DEBUG(2,
              ("successfully modified uid = %s in the LDAP database\n",
               pdb_get_username(newpwd)));
@@ -1591,7 +1514,7 @@ static BOOL ldapsam_add_sam_account(struct pdb_methods *my_methods, SAM_ACCOUNT
        LDAPMod **mods = NULL;
        int             ldap_op;
        uint32          num_result;
-       
+
        const char *username = pdb_get_username(newpwd);
        if (!username || !*username) {
                DEBUG(0, ("Cannot add user without a username!\n"));
@@ -1599,16 +1522,20 @@ static BOOL ldapsam_add_sam_account(struct pdb_methods *my_methods, SAM_ACCOUNT
        }
 
        if (!ldapsam_open_connection(ldap_state, &ldap_struct)) /* open a connection to the server */
+       {
                return False;
+       }
 
-       if (!ldapsam_connect_system(ldap_state, ldap_struct)) { /* connect as system account */
+       if (!ldapsam_connect_system(ldap_state, ldap_struct))   /* connect as system account */
+       {
                ldap_unbind(ldap_struct);
                return False;
        }
 
        rc = ldapsam_search_one_user_by_name (ldap_state, ldap_struct, username, &result);
 
-       if (ldap_count_entries(ldap_struct, result) != 0) {
+       if (ldap_count_entries(ldap_struct, result) != 0)
+       {
                DEBUG(0,("User already in the base, with samba properties\n"));
                ldap_msgfree(result);
                ldap_unbind(ldap_struct);
@@ -1637,7 +1564,8 @@ static BOOL ldapsam_add_sam_account(struct pdb_methods *my_methods, SAM_ACCOUNT
                tmp = ldap_get_dn (ldap_struct, entry);
                slprintf (dn, sizeof (dn) - 1, "%s", tmp);
                ldap_memfree (tmp);
-       } else {
+       }
+       else {
                /* Check if we need to add an entry */
                DEBUG(3,("Adding new user\n"));
                ldap_op = LDAP_MOD_ADD;
@@ -1658,14 +1586,26 @@ static BOOL ldapsam_add_sam_account(struct pdb_methods *my_methods, SAM_ACCOUNT
        }
        make_a_mod(&mods, LDAP_MOD_ADD, "objectclass", "sambaAccount");
 
-       if (!ldapsam_modify_entry(ldap_struct,newpwd,dn,mods,ldap_op)) {
-               DEBUG(0,("failed to modify/add user with uid = %s (dn = %s)\n",
-                                       pdb_get_username(newpwd),dn));
-               ldap_mods_free(mods,1);
+       if (ldap_op == LDAP_MOD_REPLACE) {
+               rc = ldap_modify_s(ldap_struct, dn, mods);
+       }
+       else {
+               rc = ldap_add_s(ldap_struct, dn, mods);
+       }
+
+       if (rc != LDAP_SUCCESS)
+       {
+               char *ld_error;
+
+               ldap_get_option (ldap_struct, LDAP_OPT_ERROR_STRING, &ld_error);
+               DEBUG(0,("failed to modify/add user with uid = %s (dn = %s) with: %s\n\t%s\n",
+                       pdb_get_username(newpwd), dn, ldap_err2string (rc), ld_error));
+               free(ld_error);
+               ldap_mods_free(mods, 1);
                ldap_unbind(ldap_struct);
                return False;
        }
-
+       
        DEBUG(2,("added: uid = %s in the LDAP database\n", pdb_get_username(newpwd)));
        ldap_mods_free(mods, 1);
        ldap_unbind(ldap_struct);
index 484e8986e42f57fa64ddd01fd04df6b3e8332014..2d37c3b8fbba5967e01d10cc4dbf582f153c6dc1 100644 (file)
@@ -1,11 +1,10 @@
-
 /*
- * NIS+ Passdb Backend
+ * Unix SMB/CIFS implementation.
+ * SMB parameters and setup
  * Copyright (C) Andrew Tridgell 1992-1998 Modified by Jeremy Allison 1995.
  * Copyright (C) Benny Holmgren 1998 <bigfoot@astrakan.hgs.se> 
  * Copyright (C) Luke Kenneth Casson Leighton 1996-1998.
  * Copyright (C) Toomas Soome <tsoome@ut.ee> 2001
- * Copyright (C) Jelmer Vernooij 2002
  * 
  * 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
@@ -36,7 +35,6 @@
  * an enum in /usr/include/rpcsvc/nis.h.
  */
 
-
 #if defined(GROUP)
 #undef GROUP
 #endif
 
 #include <rpcsvc/nis.h>
 
+extern int      DEBUGLEVEL;
+
+struct nisp_enum_info
+{
+       nis_result *result;
+       int enum_entry;
+};
+
+static struct nisp_enum_info global_nisp_ent;
+static SIG_ATOMIC_T gotalarm;
+
 /***************************************************************
 
  the fields for the NIS+ table, generated from mknissmbpwtbl.sh, are:
 
-               name=S,nogw=r 
-               uid=S,nogw=r 
+       name=S,nogw=r 
+       uid=S,nogw=r 
                user_rid=S,nogw=r
                smb_grpid=,nw+r
                group_rid=,nw+r
                acb=,nw+r
-
-               lmpwd=C,nw=,g=r,o=rm 
-               ntpwd=C,nw=,g=r,o=rm 
-
+                         
+       lmpwd=C,nw=,g=r,o=rm 
+       ntpwd=C,nw=,g=r,o=rm 
+                                    
                logon_t=,nw+r 
                logoff_t=,nw+r 
                kick_t=,nw+r 
 #define NPF_WORKSTATIONS  20
 #define NPF_HOURS         21
 
-struct nisplus_private_info {
-       nis_result *result;
-       int enum_entry;
-       char *location;
-};
-
-static char *make_nisname_from_user_rid (uint32 rid, char *pfile);
-static char *make_nisname_from_name (const char *user_name, char *pfile);
-static void get_single_attribute (const nis_object * new_obj, int col,
-                                 char *val, int len);;
-static BOOL make_sam_from_nisp_object (SAM_ACCOUNT * pw_buf,
-                                      const nis_object * obj);
-static BOOL make_sam_from_nisresult (SAM_ACCOUNT * pw_buf,
-                                    const nis_result * result);;
-static void set_single_attribute (nis_object * new_obj, int col,
-                                 const char *val, int len, int flags);
-static BOOL init_nisp_from_sam (nis_object * obj, const SAM_ACCOUNT * sampass,
-                               nis_object * old);
-static nis_result *nisp_get_nis_list (const char *nisname,
-                                     unsigned int flags);
-
-/***************************************************************
- Start enumeration of the passwd list.
-****************************************************************/
-
-static BOOL nisplussam_setsampwent (struct pdb_methods *methods, BOOL update)
-{
-       struct nisplus_private_info *private =
-               (struct nisplus_private_info *) methods->private_data;
-
-       char *sp;
-       pstring pfiletmp;
-
-       if ((sp = strrchr (private->location, '/')))
-               safe_strcpy (pfiletmp, sp + 1, sizeof (pfiletmp) - 1);
-       else
-               safe_strcpy (pfiletmp, p, sizeof (pfiletmp) - 1);
-       safe_strcat (pfiletmp, ".org_dir",
-                    sizeof (pfiletmp) - strlen (pfiletmp) - 1);
-
-       pdb_endsampwent ();     /* just in case */
-       global_nisp_ent->result = nisp_get_nis_list (pfiletmp, 0);
-       global_nisp_ent->enum_entry = 0;
-       return global_nisp_ent->result != NULL ? True : False;
-}
-
-/***************************************************************
- End enumeration of the passwd list.
-****************************************************************/
-
-static void nisplussam_endsampwent (struct pdb_methods *methods)
-{
-       struct nisplus_private_info *global_nisp_ent =
-               (struct nisplus_private_info *) methods->private_data;
-       if (global_nisp_ent->result)
-               nis_freeresult (global_nisp_ent->result);
-       global_nisp_ent->result = NULL;
-       global_nisp_ent->enum_entry = 0;
-}
-
-/*****************************************************************
- Get one SAM_ACCOUNT from the list (next in line)
-*****************************************************************/
-
-static BOOL nisplussam_getsampwent (struct pdb_methods *methods,
-                                   SAM_ACCOUNT * user)
-{
-
-       struct nisplus_private_info *global_nisp_ent =
-               (struct nisplus_private_info *) methods->private_data;
-       int enum_entry = (int) (global_nisp_ent->enum_entry);
-       nis_result *result = global_nisp_ent->result;
-
-       if (user == NULL) {
-               DEBUG (0, ("SAM_ACCOUNT is NULL.\n"));
-               return False;
-       }
-
-       if (result == NULL ||
-           enum_entry < 0 || enum_entry >= (NIS_RES_NUMOBJ (result) - 1)) {
-               return False;
-       }
-
-       if (!make_sam_from_nisp_object
-           (user, &NIS_RES_OBJECT (result)[enum_entry])) {
-               DEBUG (0, ("Bad SAM_ACCOUNT entry returned from NIS+!\n"));
-               return False;
-       }
-       (int) (global_nisp_ent->enum_entry)++;
-       return True;
-       DEBUG (10, ("nisplussam_getsampwent called\n"));
-       return False;
-}
 
-/******************************************************************
- Lookup a name in the SAM database
-******************************************************************/
+/*******************************************************************
+ Converts NT user RID to a UNIX uid.
+ ********************************************************************/
 
-static BOOL nisplussam_getsampwnam (struct pdb_methods *methods,
-                                   SAM_ACCOUNT * user, const char *sname)
+static uid_t pdb_user_rid_to_uid(uint32 user_rid)
 {
-       /* Static buffers we will return. */
-       nis_result *result = NULL;
-       pstring nisname;
-       BOOL ret;
-       struct nisplus_private_info *private =
-               (struct nisplus_private_info *) methods->private_data;
-
-       if (!private->location || !(*private->location)) {
-               DEBUG (0, ("No SMB password file set\n"));
-               return False;
-       }
-       if (strrchr (private->location, '/'))
-               private->location = strrchr (private->location, '/') + 1;
-
-       slprintf (nisname, sizeof (nisname) - 1, "[name=%s],%s.org_dir",
-                 sname, private->location);
-       DEBUG (10, ("search by nisname: %s\n", nisname));
-
-       /* Search the table. */
-
-       if (!(result = nisp_get_nis_list (nisname, 0))) {
-               return False;
-       }
-
-       ret = make_sam_from_nisresult (user, result);
-       nis_freeresult (result);
-
-       return ret;
-
-       DEBUG (10, ("nisplussam_getsampwnam called\n"));
-       return False;
-}
-
-/***************************************************************************
- Search by sid
- **************************************************************************/
-
-static BOOL nisplussam_getsampwrid (struct pdb_methods *methods,
-                                   SAM_ACCOUNT * user, uint32 rid)
-{
-       nis_result *result;
-       char *nisname;
-       BOOL ret;
-       char *sp;
-       pstring pfiletmp;
-       struct nisplus_private_info *private =
-               (struct nisplus_private_info *) methods->private_data;
-
-       if (!private->location || !(*private->location)) {
-               DEBUG (0, ("no SMB password file set\n"));
-               return False;
-       }
-
-       if ((sp = strrchr (private->location, '/')))
-               safe_strcpy (pfiletmp, sp + 1, sizeof (pfiletmp) - 1);
-       else
-               safe_strcpy (pfiletmp, private->location, sizeof (pfiletmp) - 1);
-       safe_strcat (pfiletmp, ".org_dir",
-                    sizeof (pfiletmp) - strlen (pfiletmp) - 1);
-
-       nisname = make_nisname_from_user_rid (rid, pfiletmp);
-
-       DEBUG (10, ("search by rid: %s\n", nisname));
-
-       /* Search the table. */
-
-       if (!(result = nisp_get_nis_list (nisname, 0))) {
-               return False;
-       }
-
-       ret = make_sam_from_nisresult (user, result);
-       nis_freeresult (result);
-
-       return ret;
-}
-
-static BOOL nisplussam_getsampwsid (struct pdb_methods *methods,
-                                   SAM_ACCOUNT * user, const DOM_SID * sid)
-{
-       uint32 rid;
-
-       if (!sid_peek_check_rid (get_global_sam_sid (), sid, &rid))
-               return False;
-       return nisplussam_getsampwrid (methods, user, rid);
+       return (uid_t)(((user_rid & (~USER_RID_TYPE))- 1000)/RID_MULTIPLIER);
 }
 
+/*******************************************************************
+ converts UNIX uid to an NT User RID.
+ ********************************************************************/
 
-
-/***************************************************************************
- Delete a SAM_ACCOUNT
-****************************************************************************/
-
-static BOOL nisplussam_delete_sam_account (struct pdb_methods *methods,
-                                          SAM_ACCOUNT * user)
+static uint32 pdb_uid_to_user_rid(uid_t uid)
 {
-       const char *sname;
-       pstring nisname;
-       nis_result *result, *delresult;
-       nis_object *obj;
-       struct nisplus_private_info *private =
-               (struct nisplus_private_info *) methods->private_data;
-
-       if (!user) {
-               DEBUG (0, ("no SAM_ACCOUNT specified!\n"));
-               return False;
-       }
-
-       sname = pdb_get_username (user);
-
-       if (!private->location || !(*private->location)) {
-               DEBUG (0, ("no SMB password file set\n"));
-               return False;
-       }
-
-       if (strrchr (private->location, '/'))
-               private->location = strrchr (private->location, '/') + 1;
-
-       slprintf (nisname, sizeof (nisname) - 1, "[name=%s],%s.org_dir",
-                 sname, private->location);
-
-       /* Search the table. */
-
-       if (!(result = nisp_get_nis_list (nisname,
-                                         MASTER_ONLY | FOLLOW_LINKS |
-                                         FOLLOW_PATH | EXPAND_NAME |
-                                         HARD_LOOKUP))) {
-               return False;
-       }
-
-       if (result->status != NIS_SUCCESS || NIS_RES_NUMOBJ (result) <= 0) {
-               /* User not found. */
-               DEBUG (0, ("user not found in NIS+\n"));
-               nis_freeresult (result);
-               return False;
-       }
-
-       obj = NIS_RES_OBJECT (result);
-       slprintf (nisname, sizeof (nisname) - 1, "[name=%s],%s.%s", sname,
-                 obj->zo_name, obj->zo_domain);
-
-       DEBUG (10, ("removing name: %s\n", nisname));
-       delresult = nis_remove_entry (nisname, obj,
-                                     MASTER_ONLY | REM_MULTIPLE | ALL_RESULTS
-                                     | FOLLOW_PATH | EXPAND_NAME |
-                                     HARD_LOOKUP);
-
-       nis_freeresult (result);
-
-       if (delresult->status != NIS_SUCCESS) {
-               DEBUG (0, ("NIS+ table update failed: %s %s\n",
-                          nisname, nis_sperrno (delresult->status)));
-               nis_freeresult (delresult);
-               return False;
-       }
-       nis_freeresult (delresult);
-       return True;
-       DEBUG (10, ("nisplussam_delete_sam_account called\n"));
-       return False;
+       return (((((uint32)uid)*RID_MULTIPLIER) + 1000) | USER_RID_TYPE);
 }
 
-/***************************************************************************
- Modifies an existing SAM_ACCOUNT
-****************************************************************************/
-
-static BOOL nisplussam_update_sam_account (struct pdb_methods *methods,
-                                          SAM_ACCOUNT * newpwd)
+/***************************************************************
+ Signal function to tell us we timed out.
+****************************************************************/
+static void gotalarm_sig(void)
 {
-       nis_result *result, *addresult;
-       nis_object *obj;
-       nis_object new_obj;
-       entry_col *ecol;
-       int ta_maxcol;
-       struct nisplus_private_info *private =
-               (struct nisplus_private_info *) methods->private_data;
-       pstring nisname;
-
-       if (!private->location || !(*private->location)) {
-               DEBUG (0, ("no SMB password file set\n"));
-               return False;
-       }
-       if (strrchr (private->location, '/'))
-               private->location = strrchr (private->location, '/') + 1;
-
-       slprintf (nisname, sizeof (nisname) - 1, "[name=%s],%s.org_dir",
-                 pdb_get_username (newpwd), private->location);
-
-       DEBUG (10, ("search by name: %s\n", nisname));
-
-       /* Search the table. */
-
-       if (!
-           (result =
-            nisp_get_nis_list (nisname,
-                               MASTER_ONLY | FOLLOW_LINKS | FOLLOW_PATH |
-                               EXPAND_NAME | HARD_LOOKUP))) {
-               return False;
-       }
-
-       if (result->status != NIS_SUCCESS || NIS_RES_NUMOBJ (result) <= 0) {
-               /* User not found. */
-               DEBUG (0, ("user not found in NIS+\n"));
-               nis_freeresult (result);
-               return False;
-       }
-
-       obj = NIS_RES_OBJECT (result);
-       DEBUG (6, ("entry found in %s\n", obj->zo_domain));
-
-       /* we must create new stub object with EN_MODIFIED flag.
-          this is because obj from result is going to be freed and
-          we do not want to break it or cause memory leaks or corruption.
-        */
-
-       memmove ((char *) &new_obj, obj, sizeof (new_obj));
-       ta_maxcol = obj->TA_data.ta_maxcol;
-
-       if (!(ecol = (entry_col *) malloc (ta_maxcol * sizeof (entry_col)))) {
-               DEBUG (0, ("memory allocation failure\n"));
-               nis_freeresult (result);
-               return False;
-       }
-
-       memmove ((char *) ecol, obj->EN_data.en_cols.en_cols_val,
-                ta_maxcol * sizeof (entry_col));
-       new_obj.EN_data.en_cols.en_cols_val = ecol;
-       new_obj.EN_data.en_cols.en_cols_len = ta_maxcol;
-
-       if (init_nisp_from_sam (&new_obj, newpwd, obj) == True) {
-               slprintf (nisname, sizeof (nisname) - 1, "[name=%s],%s.%s",
-                         pdb_get_username (newpwd), private->location, obj->zo_domain);
-
-               DEBUG (10, ("NIS+ table update: %s\n", nisname));
-               addresult =
-                       nis_modify_entry (nisname, &new_obj,
-                                         MOD_SAMEOBJ | FOLLOW_PATH |
-                                         EXPAND_NAME | HARD_LOOKUP);
-
-               if (addresult->status != NIS_SUCCESS) {
-                       DEBUG (0, ("NIS+ table update failed: %s %s\n",
-                                  nisname, nis_sperrno (addresult->status)));
-                       nis_freeresult (addresult);
-                       nis_freeresult (result);
-                       free (ecol);
-                       return False;
-               }
-
-               DEBUG (6, ("password changed\n"));
-               nis_freeresult (addresult);
-       } else {
-               DEBUG (6, ("nothing to change!\n"));
-       }
-
-       free (ecol);
-       nis_freeresult (result);
-
-       return True;
+  gotalarm = 1;
 }
 
-/***************************************************************************
- Adds an existing SAM_ACCOUNT
-****************************************************************************/
-
-static BOOL nisplussam_add_sam_account (struct pdb_methods *methods,
-                                       SAM_ACCOUNT * newpwd)
+/***************************************************************
+ make_nisname_from_user_rid
+ ****************************************************************/
+static char *make_nisname_from_user_rid(uint32 rid, char *pfile)
 {
-       int local_user = 0;
-       char *pfile;
-       pstring pfiletmp;
-       char *nisname;
-       nis_result *result = NULL, *tblresult = NULL;
-       nis_object new_obj;
-       entry_col *ecol;
-       int ta_maxcol;
-
-       /*
-        * 1. find user domain.
-        *   a. try nis search in passwd.org_dir - if found use domain from result.
-        *   b. try getpwnam. this may be needed if user is defined
-        *      in /etc/passwd file (or elsewere) and not in passwd.org_dir.
-        *      if found, use host default domain.
-        *   c. exit with False - no such user.
-        *
-        * 2. add user
-        *   a. find smbpasswd table
-        *      search pfile in user domain if not found, try host default
-        *      domain. 
-        *   b. smbpasswd domain is found, fill data and add entry.
-        *
-        * pfile should contain ONLY table name, org_dir will be concated.
-        * so, at first we will clear path prefix from pfile, and
-        * then we will use pfiletmp as playground to put together full
-        * nisname string.
-        * such approach will make it possible to specify samba private dir
-        * AND still use NIS+ table. as all domain related data is normally
-        * stored in org_dir.DOMAIN, this should be ok do do.
-        */
-
-       pfile = private->location;
-       if (strrchr (pfile, '/'))
-               pfile = strrchr (pfile, '/') + 1;
-
-       /*
-        * Check if user is already there.
-        */
-       safe_strcpy (pfiletmp, pfile, sizeof (pfiletmp) - 1);
-       safe_strcat (pfiletmp, ".org_dir",
-                    sizeof (pfiletmp) - strlen (pfiletmp) - 1);
-
-       if (pdb_get_username (newpwd) != NULL) {
-               nisname = make_nisname_from_name (pdb_get_username (newpwd),
-                                                 pfiletmp);
-       } else {
-               return False;
-       }
-
-       if (!
-           (result =
-            nisp_get_nis_list (nisname,
-                               MASTER_ONLY | FOLLOW_LINKS | FOLLOW_PATH |
-                               EXPAND_NAME | HARD_LOOKUP))) {
-               return False;
-       }
-       if (result->status != NIS_SUCCESS && result->status != NIS_NOTFOUND) {
-               DEBUG (3, ("nis_list failure: %s: %s\n",
-                          nisname, nis_sperrno (result->status)));
-               nis_freeresult (result);
-               return False;
-       }
-
-       if (result->status == NIS_SUCCESS && NIS_RES_NUMOBJ (result) > 0) {
-               DEBUG (3, ("User already exists in NIS+ password db: %s\n",
-                          pfile));
-               nis_freeresult (result);
-               return False;
-       }
-
-       nis_freeresult (result);        /* no such user, free results */
-
-       /*
-        * check for user in unix password database. we need this to get
-        * domain, where smbpasswd entry should be stored.
-        */
-
-       nisname = make_nisname_from_name (pdb_get_username (newpwd),
-                                         "passwd.org_dir");
-
-       result = nisp_get_nis_list (nisname,
-                                   MASTER_ONLY | FOLLOW_LINKS | FOLLOW_PATH |
-                                   EXPAND_NAME | HARD_LOOKUP);
-
-       if (result->status != NIS_SUCCESS || NIS_RES_NUMOBJ (result) <= 0) {
-               struct passwd *passwd;
-
-               DEBUG (3, ("nis_list failure: %s: %s\n",
-                          nisname, nis_sperrno (result->status)));
-               nis_freeresult (result);
-
-               if (!(passwd = getpwnam_alloc (pdb_get_username (newpwd)))) {
-                       /* no such user in system! */
-                       return False;
-               }
-               passwd_free (&passwd);
-
-               /* 
-                * user is defined, but not in passwd.org_dir.
-                */
-               local_user = 1;
-       } else {
-               safe_strcpy (pfiletmp, pfile, sizeof (pfiletmp) - 1);
-               safe_strcat (pfiletmp, ".",
-                            sizeof (pfiletmp) - strlen (pfiletmp) - 1);
-               safe_strcat (pfiletmp, NIS_RES_OBJECT (result)->zo_domain,
-                            sizeof (pfiletmp) - strlen (pfiletmp) - 1);
-               nis_freeresult (result);        /* not needed any more */
-
-               tblresult = nisp_get_nis_list (pfiletmp,
-                                              MASTER_ONLY | FOLLOW_LINKS |
-                                              FOLLOW_PATH | EXPAND_NAME |
-                                              HARD_LOOKUP);
-       }
-
-       if (local_user || tblresult->status != NIS_SUCCESS) {
-               /*
-                * no user domain or
-                * smbpasswd table not found in user domain, fallback to
-                * default domain.
-                */
-               if (!local_user)        /* free previous failed search result */
-                       nis_freeresult (tblresult);
-
-               safe_strcpy (pfiletmp, pfile, sizeof (pfiletmp) - 1);
-               safe_strcat (pfiletmp, ".org_dir",
-                            sizeof (pfiletmp) - strlen (pfiletmp) - 1);
-               tblresult = nis_lookup (pfiletmp, MASTER_ONLY | FOLLOW_LINKS |
-                                       FOLLOW_PATH | EXPAND_NAME |
-                                       HARD_LOOKUP);
-               if (tblresult->status != NIS_SUCCESS) {
-                       /* still nothing. bail out */
-                       nis_freeresult (tblresult);
-                       DEBUG (3, ("nis_lookup failure: %s\n",
-                                  nis_sperrno (tblresult->status)));
-                       return False;
-               }
-               /* we need full name for nis_add_entry() */
-               safe_strcpy (pfiletmp, pfile, sizeof (pfiletmp) - 1);
-               safe_strcat (pfiletmp, ".",
-                            sizeof (pfiletmp) - strlen (pfiletmp) - 1);
-               safe_strcat (pfiletmp, NIS_RES_OBJECT (tblresult)->zo_domain,
-                            sizeof (pfiletmp) - strlen (pfiletmp) - 1);
-       }
-
-       memset ((char *) &new_obj, 0, sizeof (new_obj));
-       /* fill entry headers */
-       /* we do not free these. */
-       new_obj.zo_name = NIS_RES_OBJECT (tblresult)->zo_name;
-       new_obj.zo_owner = NIS_RES_OBJECT (tblresult)->zo_owner;
-       new_obj.zo_group = NIS_RES_OBJECT (tblresult)->zo_group;
-       new_obj.zo_domain = NIS_RES_OBJECT (tblresult)->zo_domain;
-       /* uints */
-       new_obj.zo_access = NIS_RES_OBJECT (tblresult)->zo_access;
-       new_obj.zo_ttl = NIS_RES_OBJECT (tblresult)->zo_ttl;
-
-       new_obj.zo_data.zo_type = ENTRY_OBJ;
-       new_obj.EN_data.en_type = NIS_RES_OBJECT (tblresult)->TA_data.ta_type;
-
-       ta_maxcol = NIS_RES_OBJECT (tblresult)->TA_data.ta_maxcol;
-
-       if (!(ecol = (entry_col *) malloc (ta_maxcol * sizeof (entry_col)))) {
-               DEBUG (0, ("memory allocation failure\n"));
-               nis_freeresult (tblresult);
-               return False;
-       }
-
-       memset ((char *) ecol, 0, ta_maxcol * sizeof (entry_col));
-       new_obj.EN_data.en_cols.en_cols_val = ecol;
-       new_obj.EN_data.en_cols.en_cols_len = ta_maxcol;
-
-       init_nisp_from_sam (&new_obj, newpwd, NULL);
-
-       DEBUG (10, ("add NIS+ entry: %s\n", nisname));
-       result = nis_add_entry (pfiletmp, &new_obj, 0);
-
-       free (ecol);            /* free allocated entry space */
-
-       if (result->status != NIS_SUCCESS) {
-               DEBUG (3, ("NIS+ table update failed: %s,%s\n",
-                          nisname, nis_sperrno (result->status)));
-               nis_freeresult (tblresult);
-               nis_freeresult (result);
-               return False;
-       }
+       static pstring nisname;
 
-       nis_freeresult (tblresult);
-       nis_freeresult (result);
+       safe_strcpy(nisname, "[user_rid=", sizeof(nisname)-1);
+       slprintf(nisname, sizeof(nisname)-1, "%s%d", nisname, rid);
+       safe_strcat(nisname, "],", sizeof(nisname)-strlen(nisname)-1);
+       safe_strcat(nisname, pfile, sizeof(nisname)-strlen(nisname)-1);
 
-       return True;
+       return nisname;
 }
 
 /***************************************************************
- make_nisname_from_user_rid
+ make_nisname_from_uid
  ****************************************************************/
-static char *make_nisname_from_user_rid (uint32 rid, char *pfile)
+static char *make_nisname_from_uid(int uid, char *pfile)
 {
        static pstring nisname;
 
-       safe_strcpy (nisname, "[user_rid=", sizeof (nisname) - 1);
-       slprintf (nisname, sizeof (nisname) - 1, "%s%d", nisname, rid);
-       safe_strcat (nisname, "],", sizeof (nisname) - strlen (nisname) - 1);
-       safe_strcat (nisname, pfile, sizeof (nisname) - strlen (nisname) - 1);
+       safe_strcpy(nisname, "[uid=", sizeof(nisname)-1);
+       slprintf(nisname, sizeof(nisname)-1, "%s%d", nisname, uid);
+       safe_strcat(nisname, "],", sizeof(nisname)-strlen(nisname)-1);
+       safe_strcat(nisname, pfile, sizeof(nisname)-strlen(nisname)-1);
 
        return nisname;
 }
@@ -682,15 +174,14 @@ static char *make_nisname_from_user_rid (uint32 rid, char *pfile)
 /***************************************************************
  make_nisname_from_name
  ****************************************************************/
-static char *make_nisname_from_name (const char *user_name, char *pfile)
+static char *make_nisname_from_name(const char *user_name, char *pfile)
 {
        static pstring nisname;
 
-       safe_strcpy (nisname, "[name=", sizeof (nisname) - 1);
-       safe_strcat (nisname, user_name,
-                    sizeof (nisname) - strlen (nisname) - 1);
-       safe_strcat (nisname, "],", sizeof (nisname) - strlen (nisname) - 1);
-       safe_strcat (nisname, pfile, sizeof (nisname) - strlen (nisname) - 1);
+       safe_strcpy(nisname, "[name=", sizeof(nisname)-1);
+       safe_strcat(nisname, user_name, sizeof(nisname) - strlen(nisname) - 1);
+       safe_strcat(nisname, "],", sizeof(nisname)-strlen(nisname)-1);
+       safe_strcat(nisname, pfile, sizeof(nisname)-strlen(nisname)-1);
 
        return nisname;
 }
@@ -698,323 +189,297 @@ static char *make_nisname_from_name (const char *user_name, char *pfile)
 /*************************************************************************
  gets a NIS+ attribute
  *************************************************************************/
-static void get_single_attribute (const nis_object * new_obj, int col,
-                                 char *val, int len)
+static void get_single_attribute(const nis_object *new_obj, int col,
+                               char *val, int len)
 {
        int entry_len;
 
-       if (new_obj == NULL || val == NULL)
-               return;
-
-       entry_len = ENTRY_LEN (new_obj, col);
-       if (len > entry_len) {
+       if (new_obj == NULL || val == NULL) return;
+       
+       entry_len = ENTRY_LEN(new_obj, col);
+       if (len > entry_len)
+       {
                len = entry_len;
        }
 
-       safe_strcpy (val, ENTRY_VAL (new_obj, col), len - 1);
+       safe_strcpy(val, ENTRY_VAL(new_obj, col), len-1);
 }
 
 /************************************************************************
  makes a struct sam_passwd from a NIS+ object.
  ************************************************************************/
-static BOOL make_sam_from_nisp_object (SAM_ACCOUNT * pw_buf,
-                                      const nis_object * obj)
+static BOOL make_sam_from_nisp_object(SAM_ACCOUNT *pw_buf, const nis_object *obj)
 {
-       char *ptr;
-       pstring full_name;      /* this must be translated to dos code page */
-       pstring acct_desc;      /* this must be translated to dos code page */
-       pstring home_dir;       /* set default value from smb.conf for user */
-       pstring home_drive;     /* set default value from smb.conf for user */
-       pstring logon_script;   /* set default value from smb.conf for user */
-       pstring profile_path;   /* set default value from smb.conf for user */
-       pstring hours;
-       int hours_len;
-       unsigned char smbpwd[16];
-       unsigned char smbntpwd[16];
-
-
-       /*
-        * time values. note: this code assumes 32bit time_t!
-        */
-
-       /* Don't change these timestamp settings without a good reason.  They are
-          important for NT member server compatibility. */
-
-       pdb_set_logon_time (pw_buf, (time_t) 0, True);
-       ptr = (uchar *) ENTRY_VAL (obj, NPF_LOGON_T);
-       if (ptr && *ptr && (StrnCaseCmp (ptr, "LNT-", 4) == 0)) {
-               int i;
-
-               ptr += 4;
-               for (i = 0; i < 8; i++) {
-                       if (ptr[i] == '\0' || !isxdigit (ptr[i]))
-                               break;
-               }
-               if (i == 8) {
-                       pdb_set_logon_time (pw_buf,
-                                           (time_t) strtol (ptr, NULL, 16),
-                                           True);
-               }
-       }
-
-       pdb_set_logoff_time (pw_buf, get_time_t_max (), True);
-       ptr = (uchar *) ENTRY_VAL (obj, NPF_LOGOFF_T);
-       if (ptr && *ptr && (StrnCaseCmp (ptr, "LOT-", 4) == 0)) {
-               int i;
-
-               ptr += 4;
-               for (i = 0; i < 8; i++) {
-                       if (ptr[i] == '\0' || !isxdigit (ptr[i]))
-                               break;
-               }
-               if (i == 8) {
-                       pdb_set_logoff_time (pw_buf,
-                                            (time_t) strtol (ptr, NULL, 16),
-                                            True);
-               }
-       }
-
-       pdb_set_kickoff_time (pw_buf, get_time_t_max (), True);
-       ptr = (uchar *) ENTRY_VAL (obj, NPF_KICK_T);
-       if (ptr && *ptr && (StrnCaseCmp (ptr, "KOT-", 4) == 0)) {
-               int i;
-
-               ptr += 4;
-               for (i = 0; i < 8; i++) {
-                       if (ptr[i] == '\0' || !isxdigit (ptr[i]))
-                               break;
-               }
-               if (i == 8) {
-                       pdb_set_kickoff_time (pw_buf,
-                                             (time_t) strtol (ptr, NULL, 16),
-                                             True);
-               }
-       }
-
-       pdb_set_pass_last_set_time (pw_buf, (time_t) 0);
-       ptr = (uchar *) ENTRY_VAL (obj, NPF_PWDLSET_T);
-       if (ptr && *ptr && (StrnCaseCmp (ptr, "LCT-", 4) == 0)) {
-               int i;
-
-               ptr += 4;
-               for (i = 0; i < 8; i++) {
-                       if (ptr[i] == '\0' || !isxdigit (ptr[i]))
-                               break;
-               }
-               if (i == 8) {
-                       pdb_set_pass_last_set_time (pw_buf,
-                                                   (time_t) strtol (ptr,
-                                                                    NULL,
-                                                                    16));
-               }
-       }
-
-       pdb_set_pass_can_change_time (pw_buf, (time_t) 0, True);
-       ptr = (uchar *) ENTRY_VAL (obj, NPF_PWDCCHG_T);
-       if (ptr && *ptr && (StrnCaseCmp (ptr, "CCT-", 4) == 0)) {
-               int i;
-
-               ptr += 4;
-               for (i = 0; i < 8; i++) {
-                       if (ptr[i] == '\0' || !isxdigit (ptr[i]))
-                               break;
-               }
-               if (i == 8) {
-                       pdb_set_pass_can_change_time (pw_buf,
-                                                     (time_t) strtol (ptr,
-                                                                      NULL,
-                                                                      16),
-                                                     True);
-               }
-       }
-
-       pdb_set_pass_must_change_time (pw_buf, get_time_t_max (), True);        /* Password never expires. */
-       ptr = (uchar *) ENTRY_VAL (obj, NPF_PWDMCHG_T);
-       if (ptr && *ptr && (StrnCaseCmp (ptr, "MCT-", 4) == 0)) {
-               int i;
-
-               ptr += 4;
-               for (i = 0; i < 8; i++) {
-                       if (ptr[i] == '\0' || !isxdigit (ptr[i]))
-                               break;
-               }
-               if (i == 8) {
-                       pdb_set_pass_must_change_time (pw_buf,
-                                                      (time_t) strtol (ptr,
-                                                                       NULL,
-                                                                       16),
-                                                      True);
-               }
-       }
-
-       /* string values */
-       pdb_set_username (pw_buf, ENTRY_VAL (obj, NPF_NAME));
-       pdb_set_domain (pw_buf, lp_workgroup ());
-       /* pdb_set_nt_username() -- cant set it here... */
-
-       get_single_attribute (obj, NPF_FULL_NAME, full_name,
-                             sizeof (pstring));
+  char *ptr;
+  pstring full_name;    /* this must be translated to dos code page */
+  pstring acct_desc;    /* this must be translated to dos code page */
+  pstring home_dir;     /* set default value from smb.conf for user */
+  pstring home_drive;   /* set default value from smb.conf for user */
+  pstring logon_script; /* set default value from smb.conf for user */
+  pstring profile_path; /* set default value from smb.conf for user */
+  pstring hours;
+  int hours_len;
+  unsigned char smbpwd[16];
+  unsigned char smbntpwd[16];
+  
+
+  /*
+   * time values. note: this code assumes 32bit time_t!
+   */
+
+  /* Don't change these timestamp settings without a good reason.  They are
+     important for NT member server compatibility. */
+
+  pdb_set_logon_time(pw_buf, (time_t)0, True);
+  ptr = (uchar *)ENTRY_VAL(obj, NPF_LOGON_T);
+  if(ptr && *ptr && (StrnCaseCmp(ptr, "LNT-", 4)==0)) {
+    int i;
+    ptr += 4;
+    for(i = 0; i < 8; i++) {
+      if(ptr[i] == '\0' || !isxdigit(ptr[i]))
+       break;
+    }
+    if(i == 8) {
+      pdb_set_logon_time(pw_buf, (time_t)strtol(ptr, NULL, 16), True);
+    }
+  }
+
+  pdb_set_logoff_time(pw_buf, get_time_t_max(), True);
+  ptr = (uchar *)ENTRY_VAL(obj, NPF_LOGOFF_T);
+  if(ptr && *ptr && (StrnCaseCmp(ptr, "LOT-", 4)==0)) {
+    int i;
+    ptr += 4;
+    for(i = 0; i < 8; i++) {
+      if(ptr[i] == '\0' || !isxdigit(ptr[i]))
+       break;
+    }
+    if(i == 8) {
+      pdb_set_logoff_time(pw_buf, (time_t)strtol(ptr, NULL, 16), True);
+    }
+  }
+
+  pdb_set_kickoff_time(pw_buf, get_time_t_max(), True);
+  ptr = (uchar *)ENTRY_VAL(obj, NPF_KICK_T);
+  if(ptr && *ptr && (StrnCaseCmp(ptr, "KOT-", 4)==0)) {
+    int i;
+    ptr += 4;
+    for(i = 0; i < 8; i++) {
+      if(ptr[i] == '\0' || !isxdigit(ptr[i]))
+       break;
+    }
+    if(i == 8) {
+      pdb_set_kickoff_time(pw_buf, (time_t)strtol(ptr, NULL, 16), True);
+    }
+  }
+
+  pdb_set_pass_last_set_time(pw_buf, (time_t)0);
+  ptr = (uchar *)ENTRY_VAL(obj, NPF_PWDLSET_T);
+  if(ptr && *ptr && (StrnCaseCmp(ptr, "LCT-", 4)==0)) {
+    int i;
+    ptr += 4;
+    for(i = 0; i < 8; i++) {
+      if(ptr[i] == '\0' || !isxdigit(ptr[i]))
+       break;
+    }
+    if(i == 8) {
+      pdb_set_pass_last_set_time(pw_buf, (time_t)strtol(ptr, NULL, 16));
+    }
+  }
+  
+  pdb_set_pass_can_change_time(pw_buf, (time_t)0, True);
+  ptr = (uchar *)ENTRY_VAL(obj, NPF_PWDCCHG_T);
+  if(ptr && *ptr && (StrnCaseCmp(ptr, "CCT-", 4)==0)) {
+    int i;
+    ptr += 4;
+    for(i = 0; i < 8; i++) {
+      if(ptr[i] == '\0' || !isxdigit(ptr[i]))
+       break;
+    }
+    if(i == 8) {
+      pdb_set_pass_can_change_time(pw_buf, (time_t)strtol(ptr, NULL, 16), True);
+    }
+  }
+  
+  pdb_set_pass_must_change_time(pw_buf, get_time_t_max(), True); /* Password never expires. */
+  ptr = (uchar *)ENTRY_VAL(obj, NPF_PWDMCHG_T);
+  if(ptr && *ptr && (StrnCaseCmp(ptr, "MCT-", 4)==0)) {
+    int i;
+    ptr += 4;
+    for(i = 0; i < 8; i++) {
+      if(ptr[i] == '\0' || !isxdigit(ptr[i]))
+       break;
+    }
+    if(i == 8) {
+      pdb_set_pass_must_change_time(pw_buf, (time_t)strtol(ptr, NULL, 16), True);
+    }
+  }
+
+  /* string values */
+  pdb_set_username(pw_buf, ENTRY_VAL(obj, NPF_NAME));
+  pdb_set_domain(pw_buf, lp_workgroup());
+  /* pdb_set_nt_username() -- cant set it here... */
+
+  get_single_attribute(obj, NPF_FULL_NAME, full_name, sizeof(pstring));
 #if 0
-       unix_to_dos (full_name, True);
+  unix_to_dos(full_name, True);
 #endif
-       pdb_set_fullname (pw_buf, full_name);
+  pdb_set_fullname(pw_buf, full_name);
 
-       pdb_set_acct_ctrl (pw_buf, pdb_decode_acct_ctrl (ENTRY_VAL (obj,
-                                                                   NPF_ACB)));
+  pdb_set_acct_ctrl(pw_buf, pdb_decode_acct_ctrl(ENTRY_VAL(obj,
+                                                          NPF_ACB)));
 
-       get_single_attribute (obj, NPF_ACCT_DESC, acct_desc,
-                             sizeof (pstring));
+  get_single_attribute(obj, NPF_ACCT_DESC, acct_desc, sizeof(pstring));
 #if 0
-       unix_to_dos (acct_desc, True);
+  unix_to_dos(acct_desc, True);
 #endif
-       pdb_set_acct_desc (pw_buf, acct_desc);
-
-       pdb_set_workstations (pw_buf, ENTRY_VAL (obj, NPF_WORKSTATIONS));
-       pdb_set_munged_dial (pw_buf, NULL);
-
-       pdb_set_uid (pw_buf, atoi (ENTRY_VAL (obj, NPF_UID)));
-       pdb_set_gid (pw_buf, atoi (ENTRY_VAL (obj, NPF_SMB_GRPID)));
-       pdb_set_user_sid_from_rid (pw_buf,
-                                  atoi (ENTRY_VAL (obj, NPF_USER_RID)));
-       pdb_set_group_sid_from_rid (pw_buf,
-                                   atoi (ENTRY_VAL (obj, NPF_GROUP_RID)));
-
-       /* values, must exist for user */
-       if (!(pdb_get_acct_ctrl (pw_buf) & ACB_WSTRUST)) {
-
-               get_single_attribute (obj, NPF_HOME_DIR, home_dir,
-                                     sizeof (pstring));
-               if (!(home_dir && *home_dir)) {
-                       pstrcpy (home_dir, lp_logon_home ());
-                       pdb_set_homedir (pw_buf, home_dir, False);
-               } else
-                       pdb_set_homedir (pw_buf, home_dir, True);
-
-               get_single_attribute (obj, NPF_DIR_DRIVE, home_drive,
-                                     sizeof (pstring));
-               if (!(home_drive && *home_drive)) {
-                       pstrcpy (home_drive, lp_logon_drive ());
-                       pdb_set_dir_drive (pw_buf, home_drive, False);
-               } else
-                       pdb_set_dir_drive (pw_buf, home_drive, True);
-
-               get_single_attribute (obj, NPF_LOGON_SCRIPT, logon_script,
-                                     sizeof (pstring));
-               if (!(logon_script && *logon_script)) {
-                       pstrcpy (logon_script, lp_logon_script ());
-               } else
-                       pdb_set_logon_script (pw_buf, logon_script, True);
-
-               get_single_attribute (obj, NPF_PROFILE_PATH, profile_path,
-                                     sizeof (pstring));
-               if (!(profile_path && *profile_path)) {
-                       pstrcpy (profile_path, lp_logon_path ());
-                       pdb_set_profile_path (pw_buf, profile_path, False);
-               } else
-                       pdb_set_profile_path (pw_buf, profile_path, True);
-
-       } else {
-               /* lkclXXXX this is OBSERVED behaviour by NT PDCs, enforced here. */
-               pdb_set_group_sid_from_rid (pw_buf, DOMAIN_GROUP_RID_USERS);
-       }
+  pdb_set_acct_desc(pw_buf, acct_desc);
+
+  pdb_set_workstations(pw_buf, ENTRY_VAL(obj, NPF_WORKSTATIONS));
+  pdb_set_munged_dial(pw_buf, NULL);
+
+  pdb_set_uid(pw_buf, atoi(ENTRY_VAL(obj, NPF_UID)));
+  pdb_set_gid(pw_buf, atoi(ENTRY_VAL(obj, NPF_SMB_GRPID)));
+  pdb_set_user_sid_from_rid(pw_buf, atoi(ENTRY_VAL(obj, NPF_USER_RID)));
+  pdb_set_group_sid_from_rid(pw_buf, atoi(ENTRY_VAL(obj, NPF_GROUP_RID)));
+
+  /* values, must exist for user */
+  if( !(pdb_get_acct_ctrl(pw_buf) & ACB_WSTRUST) ) {
+    
+    get_single_attribute(obj, NPF_HOME_DIR, home_dir, sizeof(pstring));
+    if( !(home_dir && *home_dir) ) {
+      pstrcpy(home_dir, lp_logon_home());
+      pdb_set_homedir(pw_buf, home_dir, False);
+    }
+    else
+      pdb_set_homedir(pw_buf, home_dir, True);
+
+    get_single_attribute(obj, NPF_DIR_DRIVE, home_drive, sizeof(pstring));
+    if( !(home_drive && *home_drive) ) {
+      pstrcpy(home_drive, lp_logon_drive());
+      pdb_set_dir_drive(pw_buf, home_drive, False);
+    }
+    else
+      pdb_set_dir_drive(pw_buf, home_drive, True);
+
+    get_single_attribute(obj, NPF_LOGON_SCRIPT, logon_script,
+                        sizeof(pstring));
+    if( !(logon_script && *logon_script) ) {
+      pstrcpy(logon_script, lp_logon_script());
+    }
+    else
+      pdb_set_logon_script(pw_buf, logon_script, True);
+
+    get_single_attribute(obj, NPF_PROFILE_PATH, profile_path, sizeof(pstring));
+    if( !(profile_path && *profile_path) ) {
+      pstrcpy(profile_path, lp_logon_path());
+      pdb_set_profile_path(pw_buf, profile_path, False);
+    }
+    else
+      pdb_set_profile_path(pw_buf, profile_path, True);
+
+  } 
+  else 
+  {
+    /* lkclXXXX this is OBSERVED behaviour by NT PDCs, enforced here. */
+    pdb_set_group_sid_from_rid (pw_buf, DOMAIN_GROUP_RID_USERS); 
+  }
+
+  /* Check the lanman password column. */
+  ptr = (char *)ENTRY_VAL(obj, NPF_LMPWD);
+  if (!pdb_set_lanman_passwd(pw_buf, NULL))
+       return False;
 
-       /* Check the lanman password column. */
-       ptr = (char *) ENTRY_VAL (obj, NPF_LMPWD);
-       if (!pdb_set_lanman_passwd (pw_buf, NULL))
+  if (!strncasecmp(ptr, "NO PASSWORD", 11)) {
+    pdb_set_acct_ctrl(pw_buf, pdb_get_acct_ctrl(pw_buf) | ACB_PWNOTREQ);
+  } else {
+    if (strlen(ptr) != 32 || !pdb_gethexpwd(ptr, smbpwd)) {
+      DEBUG(0, ("malformed LM pwd entry: %s.\n",
+               pdb_get_username(pw_buf)));
+      return False;
+    } 
+    if (!pdb_set_lanman_passwd(pw_buf, smbpwd))
                return False;
-
-       if (!strncasecmp (ptr, "NO PASSWORD", 11)) {
-               pdb_set_acct_ctrl (pw_buf,
-                                  pdb_get_acct_ctrl (pw_buf) | ACB_PWNOTREQ);
-       } else {
-               if (strlen (ptr) != 32 || !pdb_gethexpwd (ptr, smbpwd)) {
-                       DEBUG (0, ("malformed LM pwd entry: %s.\n",
-                                  pdb_get_username (pw_buf)));
-                       return False;
-               }
-               if (!pdb_set_lanman_passwd (pw_buf, smbpwd))
-                       return False;
-       }
-
-       /* Check the NT password column. */
-       ptr = ENTRY_VAL (obj, NPF_NTPWD);
-       if (!pdb_set_nt_passwd (pw_buf, NULL))
+  }
+  
+  /* Check the NT password column. */
+  ptr = ENTRY_VAL(obj, NPF_NTPWD);
+  if (!pdb_set_nt_passwd(pw_buf, NULL))
+       return False;
+  
+  if (!(pdb_get_acct_ctrl(pw_buf) & ACB_PWNOTREQ) &&
+      strncasecmp(ptr, "NO PASSWORD", 11)) {
+    if (strlen(ptr) != 32 || !pdb_gethexpwd(ptr, smbntpwd)) {
+      DEBUG(0, ("malformed NT pwd entry:\
+ uid = %d.\n",
+               pdb_get_uid(pw_buf)));
+      return False;
+    }
+    if (!pdb_set_nt_passwd(pw_buf, smbntpwd))
                return False;
-
-       if (!(pdb_get_acct_ctrl (pw_buf) & ACB_PWNOTREQ) &&
-           strncasecmp (ptr, "NO PASSWORD", 11)) {
-               if (strlen (ptr) != 32 || !pdb_gethexpwd (ptr, smbntpwd)) {
-                       DEBUG (0, ("malformed NT pwd entry:\
- uid = %d.\n", pdb_get_uid (pw_buf)));
-                       return False;
-               }
-               if (!pdb_set_nt_passwd (pw_buf, smbntpwd))
-                       return False;
-       }
-
-       pdb_set_unknown_3 (pw_buf, 0xffffff);   /* don't know */
-       pdb_set_logon_divs (pw_buf, 168);       /* hours per week */
-
-       if ((hours_len = ENTRY_LEN (obj, NPF_HOURS)) == 21) {
-               memcpy (hours, ENTRY_VAL (obj, NPF_HOURS), hours_len);
-       } else {
-               hours_len = 21; /* 21 times 8 bits = 168 */
-               /* available at all hours */
-               memset (hours, 0xff, hours_len);
-       }
-       pdb_set_hours_len (pw_buf, hours_len);
-       pdb_set_hours (pw_buf, hours);
-
-       pdb_set_unknown_5 (pw_buf, 0x00020000); /* don't know */
-       pdb_set_unknown_6 (pw_buf, 0x000004ec); /* don't know */
-
-       return True;
+  }
+  
+  pdb_set_unknown_3(pw_buf, 0xffffff); /* don't know */
+  pdb_set_logon_divs(pw_buf, 168);     /* hours per week */
+                     
+                     if( (hours_len = ENTRY_LEN(obj, NPF_HOURS)) == 21 ) {
+    memcpy(hours, ENTRY_VAL(obj, NPF_HOURS), hours_len);
+  } else {
+    hours_len = 21; /* 21 times 8 bits = 168 */
+    /* available at all hours */
+    memset(hours, 0xff, hours_len);
+  }
+  pdb_set_hours_len(pw_buf, hours_len);
+  pdb_set_hours(pw_buf, hours);
+
+  pdb_set_unknown_5(pw_buf, 0x00020000); /* don't know */
+  pdb_set_unknown_6(pw_buf, 0x000004ec); /* don't know */
+
+  return True;
 }
 
 /************************************************************************
  makes a struct sam_passwd from a NIS+ result.
  ************************************************************************/
-static BOOL make_sam_from_nisresult (SAM_ACCOUNT * pw_buf,
-                                    const nis_result * result)
+static BOOL make_sam_from_nisresult(SAM_ACCOUNT *pw_buf, const nis_result *result)
 {
-       if (pw_buf == NULL || result == NULL)
-               return False;
+       if (pw_buf == NULL || result == NULL) return False;
 
-       if (result->status != NIS_SUCCESS && result->status != NIS_NOTFOUND) {
-               DEBUG (0, ("NIS+ lookup failure: %s\n",
-                          nis_sperrno (result->status)));
+       if (result->status != NIS_SUCCESS && result->status != NIS_NOTFOUND)
+       {
+               DEBUG(0, ("NIS+ lookup failure: %s\n",
+                          nis_sperrno(result->status)));
                return False;
        }
 
        /* User not found. */
-       if (NIS_RES_NUMOBJ (result) <= 0) {
-               DEBUG (10, ("user not found in NIS+\n"));
+       if (NIS_RES_NUMOBJ(result) <= 0)
+       {
+               DEBUG(10, ("user not found in NIS+\n"));
                return False;
        }
 
-       if (NIS_RES_NUMOBJ (result) > 1) {
-               DEBUG (10,
-                      ("WARNING: Multiple entries for user in NIS+ table!\n"));
+       if (NIS_RES_NUMOBJ(result) > 1)
+       {
+               DEBUG(10, ("WARNING: Multiple entries for user in NIS+ table!\n"));
        }
 
        /* Grab the first hit. */
-       return make_sam_from_nisp_object (pw_buf,
-                                         &NIS_RES_OBJECT (result)[0]);
+       return make_sam_from_nisp_object(pw_buf, &NIS_RES_OBJECT(result)[0]);
 }
 
 /*************************************************************************
  sets a NIS+ attribute
  *************************************************************************/
-static void set_single_attribute (nis_object * new_obj, int col,
-                                 const char *val, int len, int flags)
+static void set_single_attribute(nis_object *new_obj, int col,
+                               const char *val, int len, int flags)
 {
-       if (new_obj == NULL)
-               return;
+       if (new_obj == NULL) return;
 
-       ENTRY_VAL (new_obj, col) = val;
-       ENTRY_LEN (new_obj, col) = len + 1;
+       ENTRY_VAL(new_obj, col) = val;
+       ENTRY_LEN(new_obj, col) = len+1;
 
-       if (flags != 0) {
+       if (flags != 0)
+       {
                new_obj->EN_data.en_cols.en_cols_val[col].ec_flags = flags;
        }
 }
@@ -1023,523 +488,951 @@ static void set_single_attribute (nis_object * new_obj, int col,
  copy or modify nis object. this object is used to add or update
  nisplus table entry.
  ****************************************************************/
-static BOOL init_nisp_from_sam (nis_object * obj, const SAM_ACCOUNT * sampass,
-                               nis_object * old)
+static BOOL init_nisp_from_sam(nis_object *obj, const SAM_ACCOUNT *sampass,
+                              nis_object *old)
 {
-       /*
-        * Fill nis_object for entry add or update.
-        * if we are updateing, we have to find out differences and set
-        * EN_MODIFIED flag. also set need_to_modify to trigger
-        * nis_modify_entry() call in pdb_update_sam_account().
-        *
-        * TODO:
-        *   get data from SAM
-        *   if (modify) get data from nis_object, compare and store if
-        *               different + set EN_MODIFIED and need_to_modify
-        *   else
-        *               store
-        */
-       BOOL need_to_modify = False;
-       const char *name = pdb_get_username (sampass);  /* from SAM */
-
-       /* these must be static or allocate and free entry columns! */
-       static fstring uid;     /* from SAM */
-       static fstring user_rid;        /* from SAM */
-       static fstring gid;     /* from SAM */
-       static fstring group_rid;       /* from SAM */
-       char *acb;              /* from SAM */
-       static fstring smb_passwd;      /* from SAM */
-       static fstring smb_nt_passwd;   /* from SAM */
-       static fstring logon_t; /* from SAM */
-       static fstring logoff_t;        /* from SAM */
-       static fstring kickoff_t;       /* from SAM */
-       static fstring pwdlset_t;       /* from SAM */
-       static fstring pwdlchg_t;       /* from SAM */
-       static fstring pwdmchg_t;       /* from SAM */
-       static fstring full_name;       /* from SAM */
-       static fstring acct_desc;       /* from SAM */
-       static char empty[1];   /* just an empty string */
-
-       slprintf (uid, sizeof (uid) - 1, "%u", pdb_get_uid (sampass));
-       slprintf (user_rid, sizeof (user_rid) - 1, "%u",
-                 pdb_get_user_rid (sampass) ? pdb_get_user_rid (sampass) :
-                 fallback_pdb_uid_to_user_rid (pdb_get_uid (sampass)));
-       slprintf (gid, sizeof (gid) - 1, "%u", pdb_get_gid (sampass));
+  /*
+   * Fill nis_object for entry add or update.
+   * if we are updateing, we have to find out differences and set
+   * EN_MODIFIED flag. also set need_to_modify to trigger
+   * nis_modify_entry() call in pdb_update_sam_account().
+   *
+   * TODO:
+   *   get data from SAM
+   *   if (modify) get data from nis_object, compare and store if
+   *               different + set EN_MODIFIED and need_to_modify
+   *   else
+   *               store
+   */
+  BOOL need_to_modify = False;
+  const char *name = pdb_get_username(sampass);       /* from SAM */
+  /* these must be static or allocate and free entry columns! */
+  static fstring uid;                     /* from SAM */
+  static fstring user_rid;                /* from SAM */
+  static fstring gid;                     /* from SAM */
+  static fstring group_rid;               /* from SAM */
+  char *acb;                       /* from SAM */
+  static fstring smb_passwd;              /* from SAM */
+  static fstring smb_nt_passwd;           /* from SAM */
+  static fstring logon_t;                 /* from SAM */
+  static fstring logoff_t;                /* from SAM */
+  static fstring kickoff_t;               /* from SAM */
+  static fstring pwdlset_t;               /* from SAM */
+  static fstring pwdlchg_t;               /* from SAM */
+  static fstring pwdmchg_t;               /* from SAM */
+  static fstring full_name;               /* from SAM */
+  static fstring acct_desc;               /* from SAM */
+  static char empty[1];                   /* just an empty string */
+
+  slprintf(uid, sizeof(uid)-1, "%u", pdb_get_uid(sampass));
+  slprintf(user_rid, sizeof(user_rid)-1, "%u",
+          pdb_get_user_rid(sampass)? pdb_get_user_rid(sampass):
+          pdb_uid_to_user_rid(pdb_get_uid(sampass))); 
+  slprintf(gid, sizeof(gid)-1, "%u", pdb_get_gid(sampass));
 
        {
                uint32 rid;
                GROUP_MAP map;
+       
+               rid=pdb_get_group_rid(sampass);
 
-               rid = pdb_get_group_rid (sampass);
-
-               if (rid == 0) {
-                       if (get_group_map_from_gid
-                           (pdb_get_gid (sampass), &map,
-                            MAPPING_WITHOUT_PRIV)) {
-                               if (!sid_peek_check_rid
-                                   (get_global_sam_sid (), &map.sid, &rid))
+               if (rid==0) {
+                       if (get_group_map_from_gid(pdb_get_gid(sampass), &map, MAPPING_WITHOUT_PRIV)) {
+                               if (!sid_peek_check_rid(get_global_sam_sid(), &map.sid, &rid))
                                        return False;
-                       } else
-                               rid = pdb_gid_to_group_rid (pdb_get_gid
-                                                           (sampass));
+                       } else 
+                               rid=pdb_gid_to_group_rid(pdb_get_gid(sampass));
                }
 
-               slprintf (group_rid, sizeof (group_rid) - 1, "%u", rid);
+               slprintf(group_rid, sizeof(group_rid)-1, "%u", rid);
        }
-
-       acb = pdb_encode_acct_ctrl (pdb_get_acct_ctrl (sampass),
-                                   NEW_PW_FORMAT_SPACE_PADDED_LEN);
-       pdb_sethexpwd (smb_passwd, pdb_get_lanman_passwd (sampass),
-                      pdb_get_acct_ctrl (sampass));
-       pdb_sethexpwd (smb_nt_passwd, pdb_get_nt_passwd (sampass),
-                      pdb_get_acct_ctrl (sampass));
-       slprintf (logon_t, 13, "LNT-%08X",
-                 (uint32) pdb_get_logon_time (sampass));
-       slprintf (logoff_t, 13, "LOT-%08X",
-                 (uint32) pdb_get_logoff_time (sampass));
-       slprintf (kickoff_t, 13, "KOT-%08X",
-                 (uint32) pdb_get_kickoff_time (sampass));
-       slprintf (pwdlset_t, 13, "LCT-%08X",
-                 (uint32) pdb_get_pass_last_set_time (sampass));
-       slprintf (pwdlchg_t, 13, "CCT-%08X",
-                 (uint32) pdb_get_pass_can_change_time (sampass));
-       slprintf (pwdmchg_t, 13, "MCT-%08X",
-                 (uint32) pdb_get_pass_must_change_time (sampass));
-       safe_strcpy (full_name, pdb_get_fullname (sampass),
-                    sizeof (full_name) - 1);
-       safe_strcpy (acct_desc, pdb_get_acct_desc (sampass),
-                    sizeof (acct_desc) - 1);
+        
+  acb = pdb_encode_acct_ctrl(pdb_get_acct_ctrl(sampass),
+                            NEW_PW_FORMAT_SPACE_PADDED_LEN);
+  pdb_sethexpwd (smb_passwd, pdb_get_lanman_passwd(sampass),
+                pdb_get_acct_ctrl(sampass));
+  pdb_sethexpwd (smb_nt_passwd, pdb_get_nt_passwd(sampass),
+                pdb_get_acct_ctrl(sampass));
+  slprintf(logon_t, 13, "LNT-%08X",
+          (uint32)pdb_get_logon_time(sampass));
+  slprintf(logoff_t, 13, "LOT-%08X",
+          (uint32)pdb_get_logoff_time(sampass));
+  slprintf(kickoff_t, 13, "KOT-%08X",
+          (uint32)pdb_get_kickoff_time(sampass));
+  slprintf(pwdlset_t, 13, "LCT-%08X",
+          (uint32)pdb_get_pass_last_set_time(sampass));
+  slprintf(pwdlchg_t, 13, "CCT-%08X",
+          (uint32)pdb_get_pass_can_change_time(sampass));
+  slprintf(pwdmchg_t, 13, "MCT-%08X",
+          (uint32)pdb_get_pass_must_change_time(sampass));
+  safe_strcpy(full_name, pdb_get_fullname(sampass), sizeof(full_name)-1);
+  safe_strcpy(acct_desc, pdb_get_acct_desc(sampass), sizeof(acct_desc)-1);
 
 #if 0
 
-       /* Not sure what to do with these guys. -tpot */
+  /* Not sure what to do with these guys. -tpot */
 
-       dos_to_unix (full_name, True);
-       dos_to_unix (acct_desc, True);
+  dos_to_unix(full_name, True);
+  dos_to_unix(acct_desc, True);
 
 #endif
 
-       if (old) {
-               /* name */
-               if (strcmp (ENTRY_VAL (old, NPF_NAME), name)) {
-                       need_to_modify = True;
-                       set_single_attribute (obj, NPF_NAME, name,
-                                             strlen (name), EN_MODIFIED);
-               }
-
+  if( old ) {
+    /* name */
+    if(strcmp(ENTRY_VAL(old, NPF_NAME), name))
+      {
+       need_to_modify = True;
+       set_single_attribute(obj, NPF_NAME, name, strlen(name),
+                            EN_MODIFIED);
+      }
 
-               /* uid */
-               if (pdb_get_uid (sampass) != -1) {
-                       if (!ENTRY_VAL (old, NPF_UID)
-                           || strcmp (ENTRY_VAL (old, NPF_UID), uid)) {
-                               need_to_modify = True;
-                               set_single_attribute (obj, NPF_UID, uid,
-                                                     strlen (uid),
-                                                     EN_MODIFIED);
-                       }
-               }
-
-               /* user_rid */
-               if (pdb_get_user_rid (sampass)) {
-                       if (!ENTRY_VAL (old, NPF_USER_RID) ||
-                           strcmp (ENTRY_VAL (old, NPF_USER_RID),
-                                   user_rid)) {
-                               need_to_modify = True;
-                               set_single_attribute (obj, NPF_USER_RID,
-                                                     user_rid,
-                                                     strlen (user_rid),
-                                                     EN_MODIFIED);
-                       }
-               }
-
-               /* smb_grpid */
-               if (pdb_get_gid (sampass) != -1) {
-                       if (!ENTRY_VAL (old, NPF_SMB_GRPID) ||
-                           strcmp (ENTRY_VAL (old, NPF_SMB_GRPID), gid)) {
-                               need_to_modify = True;
-                               set_single_attribute (obj, NPF_SMB_GRPID, gid,
-                                                     strlen (gid),
-                                                     EN_MODIFIED);
-                       }
-               }
 
-               /* group_rid */
-               if (pdb_get_group_rid (sampass)) {
-                       if (!ENTRY_VAL (old, NPF_GROUP_RID) ||
-                           strcmp (ENTRY_VAL (old, NPF_GROUP_RID),
-                                   group_rid)) {
-                               need_to_modify = True;
-                               set_single_attribute (obj, NPF_GROUP_RID,
-                                                     group_rid,
-                                                     strlen (group_rid),
-                                                     EN_MODIFIED);
-                       }
-               }
+    /* uid */
+    if(pdb_get_uid(sampass) != -1) {
+      if(!ENTRY_VAL(old, NPF_UID) || strcmp(ENTRY_VAL(old, NPF_UID), uid)) 
+       {
+         need_to_modify = True;
+         set_single_attribute(obj, NPF_UID, uid,
+                              strlen(uid), EN_MODIFIED);
+       }
+    }
+      
+    /* user_rid */
+    if (pdb_get_user_rid(sampass)) {
+      if(!ENTRY_VAL(old, NPF_USER_RID) ||
+        strcmp(ENTRY_VAL(old, NPF_USER_RID), user_rid) ) {
+       need_to_modify = True;
+       set_single_attribute(obj, NPF_USER_RID, user_rid,
+                            strlen(user_rid), EN_MODIFIED);
+      }
+    }
+    
+    /* smb_grpid */
+    if (pdb_get_gid(sampass) != -1) {
+      if(!ENTRY_VAL(old, NPF_SMB_GRPID) ||
+        strcmp(ENTRY_VAL(old, NPF_SMB_GRPID), gid) ) {
+       need_to_modify = True;
+       set_single_attribute(obj, NPF_SMB_GRPID, gid,
+                            strlen(gid), EN_MODIFIED);
+      }
+    }
+
+    /* group_rid */
+    if (pdb_get_group_rid(sampass)) {
+      if(!ENTRY_VAL(old, NPF_GROUP_RID) ||
+        strcmp(ENTRY_VAL(old, NPF_GROUP_RID), group_rid) ) {
+       need_to_modify = True;
+       set_single_attribute(obj, NPF_GROUP_RID, group_rid,
+                            strlen(group_rid), EN_MODIFIED);
+      }
+    }
+
+    /* acb */
+    if (!ENTRY_VAL(old, NPF_ACB) || 
+       strcmp(ENTRY_VAL(old, NPF_ACB), acb)) {
+      need_to_modify = True;
+      set_single_attribute(obj, NPF_ACB, acb, strlen(acb), EN_MODIFIED);
+    }
+    
+    /* lmpwd */
+    if(!ENTRY_VAL(old, NPF_LMPWD) || 
+       strcmp(ENTRY_VAL(old, NPF_LMPWD), smb_passwd) ) {
+      need_to_modify = True;
+      set_single_attribute(obj, NPF_LMPWD, smb_passwd,
+                          strlen(smb_passwd), EN_CRYPT|EN_MODIFIED);
+    }
+
+    /* ntpwd */
+    if(!ENTRY_VAL(old, NPF_NTPWD) ||
+       strcmp(ENTRY_VAL(old, NPF_NTPWD), smb_nt_passwd) ) {
+      need_to_modify = True;
+      set_single_attribute(obj, NPF_NTPWD, smb_nt_passwd,
+                          strlen(smb_nt_passwd), EN_CRYPT|EN_MODIFIED);
+    }
+
+    /* logon_t */
+    if( pdb_get_logon_time(sampass) && 
+       (!ENTRY_VAL(old, NPF_LOGON_T) ||
+        strcmp(ENTRY_VAL(old, NPF_LOGON_T), logon_t ))) {
+      need_to_modify = True;
+      set_single_attribute(obj, NPF_LOGON_T, logon_t,
+                          strlen(logon_t), EN_MODIFIED);
+    }
+
+    /* logoff_t */
+    if( pdb_get_logoff_time(sampass) && 
+       (!ENTRY_VAL(old, NPF_LOGOFF_T) ||
+        strcmp(ENTRY_VAL(old, NPF_LOGOFF_T), logoff_t))) {
+      need_to_modify = True;
+      set_single_attribute(obj, NPF_LOGOFF_T, logoff_t,
+                          strlen(logoff_t), EN_MODIFIED);
+    }
+
+    /* kick_t */
+    if( pdb_get_kickoff_time(sampass) &&
+       (!ENTRY_VAL(old, NPF_KICK_T) ||
+        strcmp(ENTRY_VAL(old, NPF_KICK_T), kickoff_t))) {
+      need_to_modify = True;
+      set_single_attribute(obj, NPF_KICK_T, kickoff_t,
+                          strlen(kickoff_t), EN_MODIFIED);
+    }
+    
+    /* pwdlset_t */
+    if( pdb_get_pass_last_set_time(sampass) &&
+       (!ENTRY_VAL(old, NPF_PWDLSET_T) ||
+        strcmp(ENTRY_VAL(old, NPF_PWDLSET_T), pwdlset_t))) {
+      need_to_modify = True;
+      set_single_attribute(obj, NPF_PWDLSET_T, pwdlset_t,
+                          strlen(pwdlset_t), EN_MODIFIED);
+    }
+
+    /* pwdlchg_t */
+    if( pdb_get_pass_can_change_time(sampass) &&
+       (!ENTRY_VAL(old, NPF_PWDCCHG_T) ||
+        strcmp(ENTRY_VAL(old, NPF_PWDCCHG_T), pwdlchg_t))) {
+      need_to_modify = True;
+      set_single_attribute(obj, NPF_PWDCCHG_T, pwdlchg_t,
+                          strlen(pwdlchg_t), EN_MODIFIED);
+    }
+
+    /* pwdmchg_t */
+    if( pdb_get_pass_must_change_time(sampass) &&
+       (!ENTRY_VAL(old, NPF_PWDMCHG_T) ||
+        strcmp(ENTRY_VAL(old, NPF_PWDMCHG_T), pwdmchg_t))) {
+      need_to_modify = True;
+      set_single_attribute(obj, NPF_PWDMCHG_T, pwdmchg_t,
+                          strlen(pwdmchg_t), EN_MODIFIED);
+    }
+    
+    /* full_name */
+    /* must support set, unset and change */
+    if ( (pdb_get_fullname(sampass) &&
+         !ENTRY_VAL(old, NPF_FULL_NAME)) ||
+        (ENTRY_VAL(old, NPF_FULL_NAME) &&
+         !pdb_get_fullname(sampass))  ||
+        (ENTRY_VAL(old, NPF_FULL_NAME) &&
+         pdb_get_fullname(sampass) && 
+         strcmp( ENTRY_VAL(old, NPF_FULL_NAME), full_name ))) {
+      need_to_modify = True;
+      set_single_attribute(obj, NPF_FULL_NAME, full_name,
+                          strlen(full_name), EN_MODIFIED);
+    }
+    
+    /* home_dir */
+    /* must support set, unset and change */
+    if( (pdb_get_homedir(sampass) && 
+        !ENTRY_VAL(old, NPF_HOME_DIR)) ||
+       (ENTRY_VAL(old, NPF_HOME_DIR) && 
+        !pdb_get_homedir(sampass)) ||
+       (ENTRY_VAL(old, NPF_HOME_DIR) && 
+        pdb_get_homedir(sampass) &&
+        strcmp( ENTRY_VAL(old, NPF_HOME_DIR),
+                pdb_get_homedir(sampass)))) {
+      need_to_modify = True;
+      set_single_attribute(obj, NPF_HOME_DIR, pdb_get_homedir(sampass),
+                          strlen(pdb_get_homedir(sampass)), EN_MODIFIED);
+    }
+    
+    /* dir_drive */
+    /* must support set, unset and change */
+    if( (pdb_get_dir_drive(sampass) && 
+        !ENTRY_VAL(old, NPF_DIR_DRIVE)) ||
+       (ENTRY_VAL(old, NPF_DIR_DRIVE) && 
+        !pdb_get_dir_drive(sampass)) ||
+       (ENTRY_VAL(old, NPF_DIR_DRIVE) && 
+        pdb_get_dir_drive(sampass) &&
+        strcmp( ENTRY_VAL(old, NPF_DIR_DRIVE),
+                pdb_get_dir_drive(sampass)))) {
+      need_to_modify = True;
+      set_single_attribute(obj, NPF_DIR_DRIVE, pdb_get_dir_drive(sampass),
+                          strlen(pdb_get_dir_drive(sampass)), EN_MODIFIED);
+    }
+    
+    /* logon_script */
+    /* must support set, unset and change */
+    if( (pdb_get_logon_script(sampass) && 
+        !ENTRY_VAL(old, NPF_LOGON_SCRIPT) ||
+        (ENTRY_VAL(old, NPF_LOGON_SCRIPT) &&
+         !pdb_get_logon_script(sampass)) ||
+        ( ENTRY_VAL(old, NPF_LOGON_SCRIPT) &&
+          pdb_get_logon_script(sampass) &&
+          strcmp( ENTRY_VAL(old, NPF_LOGON_SCRIPT),
+                  pdb_get_logon_script(sampass))))) {
+      need_to_modify = True;
+      set_single_attribute(obj, NPF_LOGON_SCRIPT,
+                          pdb_get_logon_script(sampass),
+                          strlen(pdb_get_logon_script(sampass)),
+                          EN_MODIFIED);
+    }
+    
+    /* profile_path */
+    /* must support set, unset and change */
+    if( (pdb_get_profile_path(sampass) && 
+        !ENTRY_VAL(old, NPF_PROFILE_PATH)) || 
+       (ENTRY_VAL(old, NPF_PROFILE_PATH) &&
+        !pdb_get_profile_path(sampass)) ||
+       (ENTRY_VAL(old, NPF_PROFILE_PATH) &&
+        pdb_get_profile_path(sampass) &&
+        strcmp( ENTRY_VAL(old, NPF_PROFILE_PATH),
+                pdb_get_profile_path(sampass) ) )) {
+      need_to_modify = True;
+      set_single_attribute(obj, NPF_PROFILE_PATH,
+                          pdb_get_profile_path(sampass),
+                          strlen(pdb_get_profile_path(sampass)),
+                          EN_MODIFIED);
+    }
+    
+    /* acct_desc */
+    /* must support set, unset and change */
+    if( (pdb_get_acct_desc(sampass) &&
+        !ENTRY_VAL(old, NPF_ACCT_DESC)) || 
+       (ENTRY_VAL(old, NPF_ACCT_DESC) && 
+        !pdb_get_acct_desc(sampass)) ||
+       (ENTRY_VAL(old, NPF_ACCT_DESC) && 
+        pdb_get_acct_desc(sampass) &&
+        strcmp( ENTRY_VAL(old, NPF_ACCT_DESC), acct_desc ) )) {
+      need_to_modify = True;
+      set_single_attribute(obj, NPF_ACCT_DESC, acct_desc,
+                          strlen(acct_desc), EN_MODIFIED);
+    }
+
+    /* workstations */
+    /* must support set, unset and change */
+    if ( (pdb_get_workstations(sampass) &&
+         !ENTRY_VAL(old, NPF_WORKSTATIONS) ) ||
+        (ENTRY_VAL(old, NPF_WORKSTATIONS) &&
+         !pdb_get_workstations(sampass)) ||
+        (ENTRY_VAL(old, NPF_WORKSTATIONS) &&
+         pdb_get_workstations(sampass)) &&
+        strcmp( ENTRY_VAL(old, NPF_WORKSTATIONS), 
+                pdb_get_workstations(sampass))) {
+      need_to_modify = True;
+      set_single_attribute(obj, NPF_WORKSTATIONS,
+                          pdb_get_workstations(sampass),
+                          strlen(pdb_get_workstations(sampass)),
+                          EN_MODIFIED);
+    }
+    
+    /* hours */
+    if ((pdb_get_hours_len(sampass) != ENTRY_LEN(old, NPF_HOURS)) ||
+       memcmp(pdb_get_hours(sampass), ENTRY_VAL(old, NPF_HOURS),
+              ENTRY_LEN(old, NPF_HOURS))) {
+      need_to_modify = True;
+      /* set_single_attribute will add 1 for len ... */
+      set_single_attribute(obj, NPF_HOURS, pdb_get_hours(sampass), 
+                          pdb_get_hours_len(sampass)-1, EN_MODIFIED);
+    }  
+  } else {
+    const char *homedir, *dirdrive, *logon_script, *profile_path, *workstations;
+
+    *empty = '\0'; /* empty string */
+
+    set_single_attribute(obj, NPF_NAME, name, strlen(name), 0);
+    set_single_attribute(obj, NPF_UID, uid, strlen(uid), 0);
+    set_single_attribute(obj, NPF_USER_RID, user_rid,
+                        strlen(user_rid), 0);
+    set_single_attribute(obj, NPF_SMB_GRPID, gid, strlen(gid), 0);
+    set_single_attribute(obj, NPF_GROUP_RID, group_rid,
+                        strlen(group_rid), 0);
+    set_single_attribute(obj, NPF_ACB, acb, strlen(acb), 0);
+    set_single_attribute(obj, NPF_LMPWD, smb_passwd,
+                        strlen(smb_passwd), EN_CRYPT);
+    set_single_attribute(obj, NPF_NTPWD, smb_nt_passwd,
+                        strlen(smb_nt_passwd), EN_CRYPT);
+    set_single_attribute(obj, NPF_LOGON_T, logon_t,
+                        strlen(logon_t), 0);
+    set_single_attribute(obj, NPF_LOGOFF_T, logoff_t,
+                        strlen(logoff_t), 0);
+    set_single_attribute(obj, NPF_KICK_T, kickoff_t,
+                        strlen(kickoff_t),0);
+    set_single_attribute(obj, NPF_PWDLSET_T, pwdlset_t, 
+                        strlen(pwdlset_t), 0);
+    set_single_attribute(obj, NPF_PWDCCHG_T, pwdlchg_t,
+                        strlen(pwdlchg_t), 0);
+    set_single_attribute(obj, NPF_PWDMCHG_T, pwdmchg_t,
+                        strlen(pwdmchg_t), 0);
+    set_single_attribute(obj, NPF_FULL_NAME     , 
+                        full_name, strlen(full_name), 0);
+
+    if(!(homedir = pdb_get_homedir(sampass)))
+      homedir = empty;
+
+    set_single_attribute(obj, NPF_HOME_DIR,
+                        homedir, strlen(homedir), 0);
+    
+    if(!(dirdrive = pdb_get_dir_drive(sampass)))
+       dirdrive = empty;
+       
+    set_single_attribute(obj, NPF_DIR_DRIVE,
+                        dirdrive, strlen(dirdrive), 0);
+    
+    if(!(logon_script = pdb_get_logon_script(sampass)))
+       logon_script = empty;
+    
+    set_single_attribute(obj, NPF_LOGON_SCRIPT,
+                        logon_script, strlen(logon_script), 0);
+    
+    if(!(profile_path = pdb_get_profile_path(sampass)))
+      profile_path = empty;
+
+    set_single_attribute(obj, NPF_PROFILE_PATH,
+                        profile_path, strlen(profile_path), 0);
+    
+    set_single_attribute(obj, NPF_ACCT_DESC,
+                        acct_desc, strlen(acct_desc), 0);
+    
+    if(!(workstations = pdb_get_workstations(sampass)))
+      workstations = empty;
+    
+    set_single_attribute(obj, NPF_WORKSTATIONS,        
+                        workstations, strlen(workstations), 0);
+    
+    /* set_single_attribute will add 1 for len ... */
+    set_single_attribute(obj, NPF_HOURS,
+                        pdb_get_hours(sampass),
+                        pdb_get_hours_len(sampass)-1, 0);
+  }
+  
+  return need_to_modify;
+}
 
-               /* acb */
-               if (!ENTRY_VAL (old, NPF_ACB) ||
-                   strcmp (ENTRY_VAL (old, NPF_ACB), acb)) {
-                       need_to_modify = True;
-                       set_single_attribute (obj, NPF_ACB, acb, strlen (acb),
-                                             EN_MODIFIED);
-               }
+/***************************************************************
+ calls nis_list, returns results.
+ ****************************************************************/
+static nis_result *nisp_get_nis_list(const char *nis_name, unsigned int flags)
+{
+       nis_result *result;
+       int i;
 
-               /* lmpwd */
-               if (!ENTRY_VAL (old, NPF_LMPWD) ||
-                   strcmp (ENTRY_VAL (old, NPF_LMPWD), smb_passwd)) {
-                       need_to_modify = True;
-                       set_single_attribute (obj, NPF_LMPWD, smb_passwd,
-                                             strlen (smb_passwd),
-                                             EN_CRYPT | EN_MODIFIED);
-               }
+       if( ! flags)
+         flags = FOLLOW_LINKS|FOLLOW_PATH|EXPAND_NAME|HARD_LOOKUP;
+
+       for(i = 0; i<2;i++ ) {
+         alarm(60);            /* hopefully ok for long searches */
+         result = nis_list(nis_name, flags,NULL,NULL);
+
+         alarm(0);
+         CatchSignal(SIGALRM, SIGNAL_CAST SIG_DFL);
+
+         if (gotalarm)
+         {
+               DEBUG(0,("NIS+ lookup time out\n"));
+               nis_freeresult(result);
+               return NULL;
+         }
+         if( !(flags & MASTER_ONLY) && NIS_RES_NUMOBJ(result) <= 0 ) {
+           /* nis replicas are not in sync perhaps?
+             * this can happen, if account was just added.
+             */
+           DEBUG(10,("will try master only\n"));
+            nis_freeresult(result);
+            flags |= MASTER_ONLY;
+          } else
+            break;
+       }
+       return result;
+}
 
-               /* ntpwd */
-               if (!ENTRY_VAL (old, NPF_NTPWD) ||
-                   strcmp (ENTRY_VAL (old, NPF_NTPWD), smb_nt_passwd)) {
-                       need_to_modify = True;
-                       set_single_attribute (obj, NPF_NTPWD, smb_nt_passwd,
-                                             strlen (smb_nt_passwd),
-                                             EN_CRYPT | EN_MODIFIED);
-               }
+/***************************************************************
+ Start to enumerate the nisplus passwd list.
+ ****************************************************************/
+BOOL pdb_setsampwent(BOOL update)
+{
+       char *sp, * p = lp_smb_passwd_file();
+       pstring pfiletmp;
 
-               /* logon_t */
-               if (pdb_get_logon_time (sampass) &&
-                   (!ENTRY_VAL (old, NPF_LOGON_T) ||
-                    strcmp (ENTRY_VAL (old, NPF_LOGON_T), logon_t))) {
-                       need_to_modify = True;
-                       set_single_attribute (obj, NPF_LOGON_T, logon_t,
-                                             strlen (logon_t), EN_MODIFIED);
-               }
+       if( (sp = strrchr( p, '/' )) )
+         safe_strcpy(pfiletmp, sp+1, sizeof(pfiletmp)-1);
+       else
+         safe_strcpy(pfiletmp, p, sizeof(pfiletmp)-1);
+       safe_strcat(pfiletmp, ".org_dir", sizeof(pfiletmp)-strlen(pfiletmp)-1);
 
-               /* logoff_t */
-               if (pdb_get_logoff_time (sampass) &&
-                   (!ENTRY_VAL (old, NPF_LOGOFF_T) ||
-                    strcmp (ENTRY_VAL (old, NPF_LOGOFF_T), logoff_t))) {
-                       need_to_modify = True;
-                       set_single_attribute (obj, NPF_LOGOFF_T, logoff_t,
-                                             strlen (logoff_t), EN_MODIFIED);
-               }
+       pdb_endsampwent();      /* just in case */
+       global_nisp_ent.result = nisp_get_nis_list( pfiletmp, 0 );
+       global_nisp_ent.enum_entry = 0;
+       return global_nisp_ent.result != NULL ? True : False;
+}
 
-               /* kick_t */
-               if (pdb_get_kickoff_time (sampass) &&
-                   (!ENTRY_VAL (old, NPF_KICK_T) ||
-                    strcmp (ENTRY_VAL (old, NPF_KICK_T), kickoff_t))) {
-                       need_to_modify = True;
-                       set_single_attribute (obj, NPF_KICK_T, kickoff_t,
-                                             strlen (kickoff_t),
-                                             EN_MODIFIED);
-               }
+/***************************************************************
+ End enumeration of the nisplus passwd list.
+****************************************************************/
+void pdb_endsampwent(void)
+{
+  if( global_nisp_ent.result )
+    nis_freeresult(global_nisp_ent.result);
+  global_nisp_ent.result = NULL;
+  global_nisp_ent.enum_entry = 0;
+}
 
-               /* pwdlset_t */
-               if (pdb_get_pass_last_set_time (sampass) &&
-                   (!ENTRY_VAL (old, NPF_PWDLSET_T) ||
-                    strcmp (ENTRY_VAL (old, NPF_PWDLSET_T), pwdlset_t))) {
-                       need_to_modify = True;
-                       set_single_attribute (obj, NPF_PWDLSET_T, pwdlset_t,
-                                             strlen (pwdlset_t),
-                                             EN_MODIFIED);
-               }
+/*************************************************************************
+ Routine to return the next entry in the nisplus passwd list.
+ *************************************************************************/
+BOOL pdb_getsampwent(SAM_ACCOUNT *user)
+{
+  int enum_entry = (int)(global_nisp_ent.enum_entry);
+  nis_result *result = global_nisp_ent.result;
+  
+  if (user==NULL) {
+       DEBUG(0,("SAM_ACCOUNT is NULL.\n"));
+       return False;
+  }
 
-               /* pwdlchg_t */
-               if (pdb_get_pass_can_change_time (sampass) &&
-                   (!ENTRY_VAL (old, NPF_PWDCCHG_T) ||
-                    strcmp (ENTRY_VAL (old, NPF_PWDCCHG_T), pwdlchg_t))) {
-                       need_to_modify = True;
-                       set_single_attribute (obj, NPF_PWDCCHG_T, pwdlchg_t,
-                                             strlen (pwdlchg_t),
-                                             EN_MODIFIED);
-               }
+  if (result == NULL ||
+      enum_entry < 0 || enum_entry >= (NIS_RES_NUMOBJ(result) - 1))
+  {
+       return False;
+  } 
 
-               /* pwdmchg_t */
-               if (pdb_get_pass_must_change_time (sampass) &&
-                   (!ENTRY_VAL (old, NPF_PWDMCHG_T) ||
-                    strcmp (ENTRY_VAL (old, NPF_PWDMCHG_T), pwdmchg_t))) {
-                       need_to_modify = True;
-                       set_single_attribute (obj, NPF_PWDMCHG_T, pwdmchg_t,
-                                             strlen (pwdmchg_t),
-                                             EN_MODIFIED);
-               }
+  if(!make_sam_from_nisp_object(user, &NIS_RES_OBJECT(result)[enum_entry]) )
+  {
+    DEBUG(0,("Bad SAM_ACCOUNT entry returned from NIS+!\n"));
+       return False;
+  }
+  (int)(global_nisp_ent.enum_entry)++;
+  return True;
+}
 
-               /* full_name */
-               /* must support set, unset and change */
-               if ((pdb_get_fullname (sampass) &&
-                    !ENTRY_VAL (old, NPF_FULL_NAME)) ||
-                   (ENTRY_VAL (old, NPF_FULL_NAME) &&
-                    !pdb_get_fullname (sampass)) ||
-                   (ENTRY_VAL (old, NPF_FULL_NAME) &&
-                    pdb_get_fullname (sampass) &&
-                    strcmp (ENTRY_VAL (old, NPF_FULL_NAME), full_name))) {
-                       need_to_modify = True;
-                       set_single_attribute (obj, NPF_FULL_NAME, full_name,
-                                             strlen (full_name),
-                                             EN_MODIFIED);
-               }
+/*************************************************************************
+ Routine to search the nisplus passwd file for an entry matching the username
+ *************************************************************************/
+BOOL pdb_getsampwnam(SAM_ACCOUNT * user, const char *sname)
+{
+       /* Static buffers we will return. */
+       nis_result *result = NULL;
+       pstring nisname;
+       BOOL ret;
+       char *pfile = lp_smb_passwd_file();
+        int i;
 
-               /* home_dir */
-               /* must support set, unset and change */
-               if ((pdb_get_homedir (sampass) &&
-                    !ENTRY_VAL (old, NPF_HOME_DIR)) ||
-                   (ENTRY_VAL (old, NPF_HOME_DIR) &&
-                    !pdb_get_homedir (sampass)) ||
-                   (ENTRY_VAL (old, NPF_HOME_DIR) &&
-                    pdb_get_homedir (sampass) &&
-                    strcmp (ENTRY_VAL (old, NPF_HOME_DIR),
-                            pdb_get_homedir (sampass)))) {
-                       need_to_modify = True;
-                       set_single_attribute (obj, NPF_HOME_DIR,
-                                             pdb_get_homedir (sampass),
-                                             strlen (pdb_get_homedir
-                                                     (sampass)),
-                                             EN_MODIFIED);
-               }
+       if (!*pfile)
+       {
+               DEBUG(0, ("No SMB password file set\n"));
+               return False;
+       }
+       if( strrchr( pfile, '/') )
+                pfile = strrchr( pfile, '/') + 1;
 
-               /* dir_drive */
-               /* must support set, unset and change */
-               if ((pdb_get_dir_drive (sampass) &&
-                    !ENTRY_VAL (old, NPF_DIR_DRIVE)) ||
-                   (ENTRY_VAL (old, NPF_DIR_DRIVE) &&
-                    !pdb_get_dir_drive (sampass)) ||
-                   (ENTRY_VAL (old, NPF_DIR_DRIVE) &&
-                    pdb_get_dir_drive (sampass) &&
-                    strcmp (ENTRY_VAL (old, NPF_DIR_DRIVE),
-                            pdb_get_dir_drive (sampass)))) {
-                       need_to_modify = True;
-                       set_single_attribute (obj, NPF_DIR_DRIVE,
-                                             pdb_get_dir_drive (sampass),
-                                             strlen (pdb_get_dir_drive
-                                                     (sampass)),
-                                             EN_MODIFIED);
-               }
+       slprintf(nisname, sizeof(nisname)-1, "[name=%s],%s.org_dir", sname, pfile);
+       DEBUG(10, ("search by nisname: %s\n", nisname));
 
-               /* logon_script */
-               /* must support set, unset and change */
-               if (((pdb_get_logon_script (sampass) &&
-                     !ENTRY_VAL (old, NPF_LOGON_SCRIPT)) ||
-                    ((ENTRY_VAL (old, NPF_LOGON_SCRIPT) &&
-                      (!pdb_get_logon_script (sampass)))) ||
-                    ((ENTRY_VAL (old, NPF_LOGON_SCRIPT) &&
-                      pdb_get_logon_script (sampass) &&
-                      strcmp (ENTRY_VAL (old, NPF_LOGON_SCRIPT),
-                              pdb_get_logon_script (sampass)))))) {
-                       need_to_modify = True;
-                       set_single_attribute (obj, NPF_LOGON_SCRIPT,
-                                             pdb_get_logon_script (sampass),
-                                             strlen (pdb_get_logon_script
-                                                     (sampass)),
-                                             EN_MODIFIED);
-               }
+       /* Search the table. */
 
-               /* profile_path */
-               /* must support set, unset and change */
-               if ((pdb_get_profile_path (sampass) &&
-                    !ENTRY_VAL (old, NPF_PROFILE_PATH)) ||
-                   (ENTRY_VAL (old, NPF_PROFILE_PATH) &&
-                    !pdb_get_profile_path (sampass)) ||
-                   (ENTRY_VAL (old, NPF_PROFILE_PATH) &&
-                    pdb_get_profile_path (sampass) &&
-                    strcmp (ENTRY_VAL (old, NPF_PROFILE_PATH),
-                            pdb_get_profile_path (sampass)))) {
-                       need_to_modify = True;
-                       set_single_attribute (obj, NPF_PROFILE_PATH,
-                                             pdb_get_profile_path (sampass),
-                                             strlen (pdb_get_profile_path
-                                                     (sampass)),
-                                             EN_MODIFIED);
-               }
+       if(!(result = nisp_get_nis_list(nisname, 0)))
+       {
+               return False;
+       }
 
-               /* acct_desc */
-               /* must support set, unset and change */
-               if ((pdb_get_acct_desc (sampass) &&
-                    !ENTRY_VAL (old, NPF_ACCT_DESC)) ||
-                   (ENTRY_VAL (old, NPF_ACCT_DESC) &&
-                    !pdb_get_acct_desc (sampass)) ||
-                   (ENTRY_VAL (old, NPF_ACCT_DESC) &&
-                    pdb_get_acct_desc (sampass) &&
-                    strcmp (ENTRY_VAL (old, NPF_ACCT_DESC), acct_desc))) {
-                       need_to_modify = True;
-                       set_single_attribute (obj, NPF_ACCT_DESC, acct_desc,
-                                             strlen (acct_desc),
-                                             EN_MODIFIED);
-               }
+       ret = make_sam_from_nisresult(user, result);
+       nis_freeresult(result);
 
-               /* workstations */
-               /* must support set, unset and change */
-               if ((pdb_get_workstations (sampass) &&
-                    !ENTRY_VAL (old, NPF_WORKSTATIONS)) ||
-                   (ENTRY_VAL (old, NPF_WORKSTATIONS) &&
-                    !pdb_get_workstations (sampass)) ||
-                   (ENTRY_VAL (old, NPF_WORKSTATIONS) &&
-                    (pdb_get_workstations (sampass)) &&
-                    strcmp (ENTRY_VAL (old, NPF_WORKSTATIONS),
-                            pdb_get_workstations (sampass)))) {
-                       need_to_modify = True;
-                       set_single_attribute (obj, NPF_WORKSTATIONS,
-                                             pdb_get_workstations (sampass),
-                                             strlen (pdb_get_workstations
-                                                     (sampass)),
-                                             EN_MODIFIED);
-               }
+       return ret;
+}
 
-               /* hours */
-               if ((pdb_get_hours_len (sampass) !=
-                    ENTRY_LEN (old, NPF_HOURS))
-                   || memcmp (pdb_get_hours (sampass),
-                              ENTRY_VAL (old, NPF_HOURS), ENTRY_LEN (old,
-                                                                     NPF_HOURS)))
-               {
-                       need_to_modify = True;
-                       /* set_single_attribute will add 1 for len ... */
-                       set_single_attribute (obj, NPF_HOURS,
-                                             pdb_get_hours (sampass),
-                                             pdb_get_hours_len (sampass) - 1,
-                                             EN_MODIFIED);
-               }
-       } else {
-               const char *homedir, *dirdrive, *logon_script, *profile_path,
-                       *workstations;
-
-               *empty = '\0';  /* empty string */
-
-               set_single_attribute (obj, NPF_NAME, name, strlen (name), 0);
-               set_single_attribute (obj, NPF_UID, uid, strlen (uid), 0);
-               set_single_attribute (obj, NPF_USER_RID, user_rid,
-                                     strlen (user_rid), 0);
-               set_single_attribute (obj, NPF_SMB_GRPID, gid, strlen (gid),
-                                     0);
-               set_single_attribute (obj, NPF_GROUP_RID, group_rid,
-                                     strlen (group_rid), 0);
-               set_single_attribute (obj, NPF_ACB, acb, strlen (acb), 0);
-               set_single_attribute (obj, NPF_LMPWD, smb_passwd,
-                                     strlen (smb_passwd), EN_CRYPT);
-               set_single_attribute (obj, NPF_NTPWD, smb_nt_passwd,
-                                     strlen (smb_nt_passwd), EN_CRYPT);
-               set_single_attribute (obj, NPF_LOGON_T, logon_t,
-                                     strlen (logon_t), 0);
-               set_single_attribute (obj, NPF_LOGOFF_T, logoff_t,
-                                     strlen (logoff_t), 0);
-               set_single_attribute (obj, NPF_KICK_T, kickoff_t,
-                                     strlen (kickoff_t), 0);
-               set_single_attribute (obj, NPF_PWDLSET_T, pwdlset_t,
-                                     strlen (pwdlset_t), 0);
-               set_single_attribute (obj, NPF_PWDCCHG_T, pwdlchg_t,
-                                     strlen (pwdlchg_t), 0);
-               set_single_attribute (obj, NPF_PWDMCHG_T, pwdmchg_t,
-                                     strlen (pwdmchg_t), 0);
-               set_single_attribute (obj, NPF_FULL_NAME,
-                                     full_name, strlen (full_name), 0);
-
-               if (!(homedir = pdb_get_homedir (sampass)))
-                       homedir = empty;
-
-               set_single_attribute (obj, NPF_HOME_DIR,
-                                     homedir, strlen (homedir), 0);
-
-               if (!(dirdrive = pdb_get_dir_drive (sampass)))
-                       dirdrive = empty;
-
-               set_single_attribute (obj, NPF_DIR_DRIVE,
-                                     dirdrive, strlen (dirdrive), 0);
-
-               if (!(logon_script = pdb_get_logon_script (sampass)))
-                       logon_script = empty;
-
-               set_single_attribute (obj, NPF_LOGON_SCRIPT,
-                                     logon_script, strlen (logon_script), 0);
-
-               if (!(profile_path = pdb_get_profile_path (sampass)))
-                       profile_path = empty;
-
-               set_single_attribute (obj, NPF_PROFILE_PATH,
-                                     profile_path, strlen (profile_path), 0);
-
-               set_single_attribute (obj, NPF_ACCT_DESC,
-                                     acct_desc, strlen (acct_desc), 0);
-
-               if (!(workstations = pdb_get_workstations (sampass)))
-                       workstations = empty;
-
-               set_single_attribute (obj, NPF_WORKSTATIONS,
-                                     workstations, strlen (workstations), 0);
-
-               /* set_single_attribute will add 1 for len ... */
-               set_single_attribute (obj, NPF_HOURS,
-                                     pdb_get_hours (sampass),
-                                     pdb_get_hours_len (sampass) - 1, 0);
-       }
+/*************************************************************************
+ Routine to search the nisplus passwd file for an entry matching the username
+ *************************************************************************/
 
-       return need_to_modify;
+BOOL pdb_getsampwsid(SAM_ACCOUNT * user, const DOM_SID *sid)
+{
+       uint32 rid;
+       if (!sid_peek_check_rid(get_global_sam_sid(), sid, &rid))
+               return False;
+       return pdb_getsampwrid(user, rid);
 }
 
-/***************************************************************
- calls nis_list, returns results.
- ****************************************************************/
-static nis_result *nisp_get_nis_list (const char *nisname, unsigned int flags)
+static BOOL pdb_getsampwrid(SAM_ACCOUNT * user, uint32 rid)
 {
        nis_result *result;
-       int i;
+       char *nisname;
+       BOOL ret;
+       char *sp, *p = lp_smb_passwd_file();
+       pstring pfiletmp;
 
-       if (!flags)
-               flags = FOLLOW_LINKS | FOLLOW_PATH | EXPAND_NAME |
-                       HARD_LOOKUP;
-
-       for (i = 0; i < 2; i++) {
-               alarm (60);     /* hopefully ok for long searches */
-               result = nis_list (nisname, flags, NULL, NULL);
-
-               alarm (0);
-               CatchSignal (SIGALRM, SIGNAL_CAST SIG_DFL);
-
-               if (!(flags & MASTER_ONLY) && NIS_RES_NUMOBJ (result) <= 0) {
-                       /* nis replicas are not in sync perhaps?
-                        * this can happen, if account was just added.
-                        */
-                       DEBUG (10, ("will try master only\n"));
-                       nis_freeresult (result);
-                       flags |= MASTER_ONLY;
-               } else
-                       break;
+       if (!*p)
+       {
+               DEBUG(0, ("no SMB password file set\n"));
+               return False;
        }
-       return result;
-}
 
-NTSTATUS pdb_init_nisplussam (PDB_CONTEXT * pdb_context,
-                             PDB_METHODS ** pdb_method, const char *location)
-{
-       NTSTATUS nt_status;
-       struct nisplus_private_info *private = malloc (sizeof (struct nisplus_private_info));
+       if( (sp = strrchr( p, '/' )) )
+          safe_strcpy(pfiletmp, sp+1, sizeof(pfiletmp)-1);
+        else
+          safe_strcpy(pfiletmp, p, sizeof(pfiletmp)-1);
+        safe_strcat(pfiletmp, ".org_dir", sizeof(pfiletmp)-strlen(pfiletmp)-1);
+
+       nisname = make_nisname_from_user_rid(rid, pfiletmp);
+
+       DEBUG(10, ("search by rid: %s\n", nisname));
 
-       ZERO_STRUCT(private);
-       p->location = talloc_strdup(pdb_context->mem_ctx, location);
+       /* Search the table. */
 
-       if (!NT_STATUS_IS_OK
-           (nt_status =
-            make_pdb_methods (pdb_context->mem_ctx, pdb_method))) {
-               return nt_status;
+       if(!(result = nisp_get_nis_list(nisname, 0)))
+       {
+               return False;
        }
 
-       (*pdb_method)->name = "nisplussam";
+       ret = make_sam_from_nisresult(user, result);
+       nis_freeresult(result);
 
-       /* Functions your pdb module doesn't provide should be set 
-        * to NULL */
+       return ret;
+}
+
+/*************************************************************************
+ Routine to remove entry from the nisplus smbpasswd table
+ *************************************************************************/
+BOOL pdb_delete_sam_account(SAM_ACCOUNT * user)
+{
+  const char *sname;
+  char *pfile = lp_smb_passwd_file();
+  pstring nisname;
+  nis_result *result, *delresult;
+  nis_object *obj;
+  int i;
+  if (!user) {
+         DEBUG(0, ("no SAM_ACCOUNT specified!\n"));
+         return False;
+  }
+
+  sname = pdb_get_username(user);
+
+  if (!*pfile)
+    {
+      DEBUG(0, ("no SMB password file set\n"));
+      return False;
+    }
+  if( strrchr( pfile, '/') )
+         pfile = strrchr( pfile, '/') + 1;
+  
+  slprintf(nisname, sizeof(nisname)-1, "[name=%s],%s.org_dir", sname, pfile);
+  
+  /* Search the table. */
+  
+  if( !(result = nisp_get_nis_list(nisname,
+                                  MASTER_ONLY|FOLLOW_LINKS|FOLLOW_PATH|\
+                                  EXPAND_NAME|HARD_LOOKUP))) {
+    return False;
+  }
+  
+  if(result->status != NIS_SUCCESS || NIS_RES_NUMOBJ(result) <= 0) {
+    /* User not found. */
+    DEBUG(0,("user not found in NIS+\n"));
+    nis_freeresult(result);
+    return False;
+  }
+
+  obj = NIS_RES_OBJECT(result);
+  slprintf(nisname, sizeof(nisname)-1, "[name=%s],%s.%s", sname, obj->zo_name,
+          obj->zo_domain);
+
+  DEBUG(10, ("removing name: %s\n", nisname));
+  delresult = nis_remove_entry(nisname, obj, 
+    MASTER_ONLY|REM_MULTIPLE|ALL_RESULTS|FOLLOW_PATH|EXPAND_NAME|HARD_LOOKUP);
+  
+  nis_freeresult(result);
+
+  if(delresult->status != NIS_SUCCESS) {
+    DEBUG(0, ("NIS+ table update failed: %s %s\n",
+          nisname, nis_sperrno(delresult->status)));
+    nis_freeresult(delresult);
+    return False;
+  }
+  nis_freeresult(delresult);
+  return True;
+}
 
-       (*pdb_method)->setsampwent = nisplussam_setsampwent;
-       (*pdb_method)->endsampwent = nisplussam_endsampwent;
-       (*pdb_method)->getsampwent = nisplussam_getsampwent;
-       (*pdb_method)->getsampwnam = nisplussam_getsampwnam;
-       (*pdb_method)->getsampwsid = nisplussam_getsampwsid;
-       (*pdb_method)->add_sam_account = nisplussam_add_sam_account;
-       (*pdb_method)->update_sam_account = nisplussam_update_sam_account;
-       (*pdb_method)->delete_sam_account = nisplussam_delete_sam_account;
-       (*pdb_method)->private_data = private;
+/************************************************************************
+ Routine to add an entry to the nisplus passwd file.
+*************************************************************************/
+BOOL pdb_add_sam_account(SAM_ACCOUNT * newpwd)
+{
+  int local_user = 0;
+  char           *pfile;
+  pstring        pfiletmp;
+  char           *nisname;
+  nis_result     *result = NULL,
+    *tblresult = NULL;
+  nis_object new_obj;
+  entry_col *ecol;
+  int ta_maxcol;
+  
+  /*
+   * 1. find user domain.
+   *   a. try nis search in passwd.org_dir - if found use domain from result.
+   *   b. try getpwnam. this may be needed if user is defined
+   *      in /etc/passwd file (or elsewere) and not in passwd.org_dir.
+   *      if found, use host default domain.
+   *   c. exit with False - no such user.
+   *
+   * 2. add user
+   *   a. find smbpasswd table
+   *      search pfile in user domain if not found, try host default
+   *      domain. 
+   *   b. smbpasswd domain is found, fill data and add entry.
+   *
+   * pfile should contain ONLY table name, org_dir will be concated.
+   * so, at first we will clear path prefix from pfile, and
+   * then we will use pfiletmp as playground to put together full
+   * nisname string.
+   * such approach will make it possible to specify samba private dir
+   * AND still use NIS+ table. as all domain related data is normally
+   * stored in org_dir.DOMAIN, this should be ok do do.
+   */
+
+  pfile = lp_smb_passwd_file();
+  if( strrchr( pfile, '/') )
+    pfile = strrchr( pfile, '/') + 1;
+
+  /*
+   * Check if user is already there.
+   */
+  safe_strcpy(pfiletmp, pfile, sizeof(pfiletmp)-1);
+  safe_strcat(pfiletmp, ".org_dir",
+             sizeof(pfiletmp)-strlen(pfiletmp)-1);
+
+  if(pdb_get_username(newpwd) != NULL) {
+    nisname = make_nisname_from_name(pdb_get_username(newpwd),
+                                    pfiletmp);
+  } else {
+    return False;
+  }
+
+  if(!(result = nisp_get_nis_list(nisname, MASTER_ONLY|FOLLOW_LINKS|\
+                                 FOLLOW_PATH|EXPAND_NAME|HARD_LOOKUP))) {
+    return False;
+  }
+  if (result->status != NIS_SUCCESS && 
+      result->status != NIS_NOTFOUND) {
+    DEBUG(3, ( "nis_list failure: %s: %s\n",
+              nisname,  nis_sperrno(result->status)));
+    nis_freeresult(result);
+    return False;
+  }   
+
+  if (result->status == NIS_SUCCESS && NIS_RES_NUMOBJ(result) > 0)
+    {
+      DEBUG(3, ("User already exists in NIS+ password db: %s\n",
+               pfile));
+      nis_freeresult(result);
+      return False;
+    }
+
+  nis_freeresult(result); /* no such user, free results */
+
+  /*
+   * check for user in unix password database. we need this to get
+   * domain, where smbpasswd entry should be stored.
+   */
+
+  nisname = make_nisname_from_name(pdb_get_username(newpwd),
+                                    "passwd.org_dir");
+  
+  result = nisp_get_nis_list(nisname,
+                            MASTER_ONLY|FOLLOW_LINKS|FOLLOW_PATH|\
+                            EXPAND_NAME|HARD_LOOKUP);
+  
+  if (result->status != NIS_SUCCESS || NIS_RES_NUMOBJ(result) <= 0)
+    {
+      struct passwd *passwd;
+      DEBUG(3, ("nis_list failure: %s: %s\n", 
+               nisname,  nis_sperrno(result->status)));
+      nis_freeresult(result);
+
+      if (!(passwd = getpwnam_alloc(pdb_get_username(newpwd)))) {
+       /* no such user in system! */
+       return False;
+      }
+      passwd_free(&passwd);
 
-       return NT_STATUS_OK;
+       /* 
+        * user is defined, but not in passwd.org_dir.
+        */
+      local_user = 1;
+    } else {
+      safe_strcpy(pfiletmp, pfile, sizeof(pfiletmp)-1);
+      safe_strcat(pfiletmp, ".", sizeof(pfiletmp)-strlen(pfiletmp)-1);
+      safe_strcat(pfiletmp, NIS_RES_OBJECT(result)->zo_domain,
+                 sizeof(pfiletmp)-strlen(pfiletmp)-1);
+      nis_freeresult(result); /* not needed any more */
+
+      tblresult = nisp_get_nis_list(pfiletmp,
+                                   MASTER_ONLY|FOLLOW_LINKS|\
+                                   FOLLOW_PATH|EXPAND_NAME|HARD_LOOKUP); 
+    }
+
+  if (local_user || tblresult->status != NIS_SUCCESS)
+    {
+      /*
+       * no user domain or
+       * smbpasswd table not found in user domain, fallback to
+       * default domain.
+       */
+      if (!local_user) /* free previous failed search result */
+       nis_freeresult(tblresult);
+      
+      safe_strcpy(pfiletmp, pfile, sizeof(pfiletmp)-1);
+      safe_strcat(pfiletmp, ".org_dir",
+                 sizeof(pfiletmp)-strlen(pfiletmp)-1);
+      tblresult = nis_lookup(pfiletmp, MASTER_ONLY|FOLLOW_LINKS|\
+                            FOLLOW_PATH|EXPAND_NAME|HARD_LOOKUP);
+      if (tblresult->status != NIS_SUCCESS)
+       {
+           /* still nothing. bail out */
+         nis_freeresult(tblresult);
+         DEBUG(3, ( "nis_lookup failure: %s\n",
+                    nis_sperrno(tblresult->status)));
+         return False;
+       }
+      /* we need full name for nis_add_entry() */
+      safe_strcpy(pfiletmp, pfile, sizeof(pfiletmp)-1);
+      safe_strcat(pfiletmp, ".", sizeof(pfiletmp)-strlen(pfiletmp)-1);
+      safe_strcat(pfiletmp, NIS_RES_OBJECT(tblresult)->zo_domain,
+                 sizeof(pfiletmp)-strlen(pfiletmp)-1);
+    }
+
+  memset((char *)&new_obj, 0, sizeof (new_obj));
+  /* fill entry headers */
+  /* we do not free these. */
+  new_obj.zo_name   = NIS_RES_OBJECT(tblresult)->zo_name;
+  new_obj.zo_owner  = NIS_RES_OBJECT(tblresult)->zo_owner;
+  new_obj.zo_group  = NIS_RES_OBJECT(tblresult)->zo_group;
+  new_obj.zo_domain = NIS_RES_OBJECT(tblresult)->zo_domain;
+  /* uints */
+  new_obj.zo_access = NIS_RES_OBJECT(tblresult)->zo_access;
+  new_obj.zo_ttl    = NIS_RES_OBJECT(tblresult)->zo_ttl;
+
+  new_obj.zo_data.zo_type = ENTRY_OBJ;
+  new_obj.EN_data.en_type =
+    NIS_RES_OBJECT(tblresult)->TA_data.ta_type;
+
+  ta_maxcol = NIS_RES_OBJECT(tblresult)->TA_data.ta_maxcol;
+  
+  if(!(ecol = (entry_col*)malloc(ta_maxcol*sizeof(entry_col)))) {
+    DEBUG(0, ("memory allocation failure\n"));
+    nis_freeresult(tblresult);
+    return False;
+  }
+  
+  memset((char *)ecol, 0, ta_maxcol*sizeof (entry_col));
+  new_obj.EN_data.en_cols.en_cols_val = ecol;
+  new_obj.EN_data.en_cols.en_cols_len = ta_maxcol;
+  
+  init_nisp_from_sam(&new_obj, newpwd, NULL);
+  
+  DEBUG(10, ( "add NIS+ entry: %s\n", nisname));
+  result = nis_add_entry(pfiletmp, &new_obj, 0);
+
+  free(ecol); /* free allocated entry space */
+  
+  if (result->status != NIS_SUCCESS)
+    {
+      DEBUG(3, ( "NIS+ table update failed: %s\n",
+                nisname, nis_sperrno(result->status)));
+      nis_freeresult(tblresult);
+      nis_freeresult(result);
+      return False;
+    }
+  
+  nis_freeresult(tblresult);
+  nis_freeresult(result);
+  
+  return True;
 }
 
-#else
-NTSTATUS pdb_init_nisplussam (PDB_CONTEXT * c, PDB_METHODS ** m,
-                             const char *l)
+/************************************************************************
+ Routine to modify the nisplus passwd entry.
+************************************************************************/
+BOOL pdb_update_sam_account(SAM_ACCOUNT * newpwd)
 {
-       DEBUG (0, ("nisplus sam not compiled in!\n"));
-       return NT_STATUS_UNSUCCESSFUL;
+  nis_result *result, *addresult;
+  nis_object *obj;
+  nis_object new_obj;
+  entry_col *ecol;
+  int ta_maxcol;
+  char *pfile = lp_smb_passwd_file();
+  pstring nisname;
+  int i;
+
+  if (!*pfile)
+    {
+      DEBUG(0, ("no SMB password file set\n"));
+      return False;
+    }
+  if( strrchr( pfile, '/') )
+         pfile = strrchr( pfile, '/') + 1;
+  
+  slprintf(nisname, sizeof(nisname)-1, "[name=%s],%s.org_dir",
+          pdb_get_username(newpwd), pfile);
+  
+  DEBUG(10, ("search by name: %s\n", nisname));
+  
+  /* Search the table. */
+  
+  if( !(result = nisp_get_nis_list(nisname, MASTER_ONLY|FOLLOW_LINKS|\
+                                  FOLLOW_PATH|EXPAND_NAME|HARD_LOOKUP))) {
+    return False;
+  }
+  
+  if(result->status != NIS_SUCCESS || NIS_RES_NUMOBJ(result) <= 0) {
+    /* User not found. */
+    DEBUG(0,("user not found in NIS+\n"));
+    nis_freeresult(result);
+    return False;
+  }
+
+  obj = NIS_RES_OBJECT(result);
+  DEBUG(6,("entry found in %s\n", obj->zo_domain));
+
+  /* we must create new stub object with EN_MODIFIED flag.
+     this is because obj from result is going to be freed and
+     we do not want to break it or cause memory leaks or corruption.
+  */
+  
+  memmove((char *)&new_obj, obj, sizeof (new_obj));
+  ta_maxcol = obj->TA_data.ta_maxcol;
+  
+  if(!(ecol = (entry_col*)malloc(ta_maxcol*sizeof(entry_col)))) {
+    DEBUG(0, ("memory allocation failure\n"));
+    nis_freeresult(result);
+    return False;
+  }
+
+  memmove((char *)ecol, obj->EN_data.en_cols.en_cols_val,
+         ta_maxcol*sizeof (entry_col));
+  new_obj.EN_data.en_cols.en_cols_val = ecol;
+  new_obj.EN_data.en_cols.en_cols_len = ta_maxcol;
+
+  if ( init_nisp_from_sam(&new_obj, newpwd, obj) == True ) {
+    slprintf(nisname, sizeof(nisname)-1, "[name=%s],%s.%s",
+          pdb_get_username(newpwd), pfile, obj->zo_domain);
+
+    DEBUG(10, ("NIS+ table update: %s\n", nisname));
+    addresult =
+      nis_modify_entry(nisname, &new_obj, 
+                 MOD_SAMEOBJ | FOLLOW_PATH | EXPAND_NAME | HARD_LOOKUP);
+  
+    if(addresult->status != NIS_SUCCESS) {
+      DEBUG(0, ("NIS+ table update failed: %s %s\n",
+               nisname, nis_sperrno(addresult->status)));
+      nis_freeresult(addresult);
+      nis_freeresult(result);
+      free(ecol);
+      return False;
+    }
+    
+    DEBUG(6,("password changed\n"));
+    nis_freeresult(addresult);
+  } else {
+    DEBUG(6,("nothing to change!\n"));
+  }
+
+  free(ecol);
+  nis_freeresult(result);
+  
+  return True;
 }
-#endif /* WITH_NISPLUS_SAM */
+#else
+ void nisplus_dummy_function(void);
+ void nisplus_dummy_function(void) { } /* stop some compilers complaining */
+#endif /* WITH_NISPLUSSAM */
index ea67da23a552a04de4a76a6dab9dc7bc69991e04..1a246631fe73f95be018b75e2ca682a12829e9f5 100644 (file)
@@ -46,7 +46,7 @@ NTSTATUS pdb_init_plugin(PDB_CONTEXT *pdb_context, PDB_METHODS **pdb_method, con
        trim_string(plugin_name, " ", " ");
 
        DEBUG(5, ("Trying to load sam plugin %s\n", plugin_name));
-       dl_handle = sys_dlopen(plugin_name, RTLD_NOW );
+       dl_handle = sys_dlopen(plugin_name, RTLD_NOW | RTLD_GLOBAL );
        if (!dl_handle) {
                DEBUG(0, ("Failed to load sam plugin %s using sys_dlopen (%s)\n", plugin_name, sys_dlerror()));
                return NT_STATUS_UNSUCCESSFUL;
@@ -59,7 +59,7 @@ NTSTATUS pdb_init_plugin(PDB_CONTEXT *pdb_context, PDB_METHODS **pdb_method, con
                return NT_STATUS_UNSUCCESSFUL;
        }
 
-       if (plugin_version() != PASSDB_INTERFACE_VERSION) {
+       if (plugin_version()!=PASSDB_INTERFACE_VERSION) {
                sys_dlclose(dl_handle);
                DEBUG(0, ("Wrong PASSDB_INTERFACE_VERSION! sam plugin has version %d and version %d is needed! Please update!\n",
                            plugin_version(),PASSDB_INTERFACE_VERSION));
index 04c0d333e43527f13b9461b57b9d2788198e02c3..d40ea03511cd2aaef81e78fe0ef27c45e7b6b659 100644 (file)
@@ -1327,8 +1327,7 @@ static BOOL smbpasswd_getsampwent(struct pdb_methods *my_methods, SAM_ACCOUNT *u
  call getpwnam() for unix account information until we have found
  the correct entry
  ***************************************************************/
-static BOOL smbpasswd_getsampwnam(struct pdb_methods *my_methods, 
-                                 SAM_ACCOUNT *sam_acct, const char *username)
+static BOOL smbpasswd_getsampwnam(struct pdb_methods *my_methods, SAM_ACCOUNT *sam_acct, const char *username)
 {
        struct smbpasswd_privates *smbpasswd_state = (struct smbpasswd_privates*)my_methods->private_data;
        struct smb_passwd *smb_pw;
@@ -1382,16 +1381,6 @@ static BOOL smbpasswd_getsampwrid(struct pdb_methods *my_methods, SAM_ACCOUNT *s
 
        DEBUG(10, ("pdb_getsampwrid: search by rid: %d\n", rid));
 
-       /* More special case 'guest account' hacks... */
-       if (rid == DOMAIN_USER_RID_GUEST) {
-               const char *guest_account = lp_guestaccount();
-               if (!(guest_account && *guest_account)) {
-                       DEBUG(1, ("Guest account not specfied!\n"));
-                       return False;
-               }
-               return smbpasswd_getsampwnam(my_methods, sam_acct, guest_account);
-       }
-
        /* Open the sam password file - not for update. */
        fp = startsmbfilepwent(smbpasswd_state->smbpasswd_file, PWF_READ, &(smbpasswd_state->pw_file_lock_depth));
 
index 08a0e9c9acfa9a7b1d704498744e4f1f1cd0fa4b..ec67b74390030dbf63560932b23892d5681bfa39 100644 (file)
@@ -68,7 +68,7 @@ void *secrets_fetch(const char *key, size_t *size)
 
 /* store a secrets entry 
  */
-BOOL secrets_store(const char *key, const void *data, size_t size)
+BOOL secrets_store(const char *key, void *data, size_t size)
 {
        TDB_DATA kbuf, dbuf;
        secrets_init();
@@ -95,7 +95,7 @@ BOOL secrets_delete(const char *key)
        return tdb_delete(tdb, kbuf) == 0;
 }
 
-BOOL secrets_store_domain_sid(char *domain, const DOM_SID *sid)
+BOOL secrets_store_domain_sid(char *domain, DOM_SID *sid)
 {
        fstring key;
 
@@ -148,7 +148,7 @@ BOOL secrets_fetch_domain_guid(char *domain, GUID *guid)
        strupper(key);
        dyn_guid = (GUID *)secrets_fetch(key, &size);
 
-       DEBUG(6,("key is %s, size is %d\n", key, (int)size));
+       DEBUG(6,("key is %s, guid is at %x, size is %d\n", key, dyn_guid, size));
 
        if ((NULL == dyn_guid) && (ROLE_DOMAIN_PDC == lp_server_role())) {
                uuid_generate_random(&new_guid);
@@ -206,27 +206,8 @@ char *trustdom_keystr(const char *domain)
 }
 
 /************************************************************************
Lock the trust password entry.
Routine to get the machine trust account password for a domain.
 ************************************************************************/
-
-BOOL secrets_lock_trust_account_password(char *domain, BOOL dolock)
-{
-       if (!tdb)
-               return False;
-
-       if (dolock)
-               return (tdb_lock_bystring(tdb, trust_keystr(domain)) == 0);
-       else
-               tdb_unlock_bystring(tdb, trust_keystr(domain));
-       return True;
-}
-
-/************************************************************************
- Routine to get the trust account password for a domain.
- The user of this function must have locked the trust password file using
- the above call.
-************************************************************************/
-
 BOOL secrets_fetch_trust_account_password(char *domain, uint8 ret_pwd[16],
                                          time_t *pass_last_set_time)
 {
@@ -262,7 +243,6 @@ BOOL secrets_fetch_trust_account_password(char *domain, uint8 ret_pwd[16],
 /************************************************************************
  Routine to get account password to trusted domain
 ************************************************************************/
-
 BOOL secrets_fetch_trusted_domain_password(char *domain, char** pwd,
                                           DOM_SID *sid, time_t *pass_last_set_time)
 {
@@ -579,69 +559,3 @@ NTSTATUS secrets_get_trusted_domains(TALLOC_CTX* ctx, int* enum_ctx, int max_num
        return status;
 }
 
-static SIG_ATOMIC_T gotalarm;
-
-/***************************************************************
- Signal function to tell us we timed out.
-****************************************************************/
-
-static void gotalarm_sig(void)
-{
-       gotalarm = 1;
-}
-
-/*
-  lock the secrets tdb based on a string - this is used as a primitive form of mutex
-  between smbd instances. 
-*/
-BOOL secrets_named_mutex(const char *name, unsigned int timeout)
-{
-       TDB_DATA key;
-       int ret;
-
-       if (!message_init())
-               return False;
-
-       key.dptr = (char *)name;
-       key.dsize = strlen(name)+1;
-
-       /* Allow tdb_chainlock to be interrupted by an alarm. */
-       gotalarm = 0;
-       tdb_set_lock_alarm(&gotalarm);
-
-       if (timeout) {
-               CatchSignal(SIGALRM, SIGNAL_CAST gotalarm_sig);
-               alarm(timeout);
-       }
-
-       ret = tdb_chainlock(tdb, key);
-
-       /* Prevent tdb_chainlock from being interrupted by an alarm. */
-       tdb_set_lock_alarm(NULL);
-
-       if (timeout) {
-               alarm(0);
-               CatchSignal(SIGALRM, SIGNAL_CAST SIG_IGN);
-               if (gotalarm)
-                       return False;
-       }
-
-       if (ret == 0)
-               DEBUG(10,("secrets_named_mutex: got mutex for %s\n", name ));
-
-       return (ret == 0);
-}
-
-/*
-  unlock a named mutex
-*/
-void secrets_named_mutex_release(char *name)
-{
-       TDB_DATA key;
-
-       key.dptr = name;
-       key.dsize = strlen(name)+1;
-
-       tdb_chainunlock(tdb, key);
-       DEBUG(10,("secrets_named_mutex: released mutex for %s\n", name ));
-}
index 003718ed72499c2221e4a607ad1654fe32c1a63e..925d49a21d6abaf4db43ae3fbff36f673cad341f 100644 (file)
 
 #include "printing.h"
 
-static TALLOC_CTX *send_ctx;
-
-static struct notify_queue {
-       struct notify_queue *next, *prev;
-       void *buf;
-       size_t buflen;
-} *notify_queue_head = NULL;
-
-/*******************************************************************
- Used to decide if we need a short select timeout.
-*******************************************************************/
-
-BOOL print_notify_messages_pending(void)
-{
-       return (notify_queue_head != NULL);
-}
-
-/*******************************************************************
- Actually send the batched messages.
-*******************************************************************/
-
-void print_notify_send_messages(void)
-{
-       TDB_CONTEXT *tdb;
-       char *buf;
-       struct notify_queue *pq;
-       size_t msg_count = 0, offset = 0;
-
-       if (!print_notify_messages_pending())
-               return;
-
-       if (!send_ctx)
-               return;
-
-       tdb = conn_tdb_ctx();
-
-       if (!tdb) {
-               DEBUG(3, ("Failed to open connections database in send_spoolss_notify2_msg\n"));
-               return;
-       }
-       
-       /* Count the space needed to send the messages. */
-       for (pq = notify_queue_head; pq; pq = pq->next, msg_count++)
-               offset += (pq->buflen + 4);
-               
-       offset += 4; /* For count. */
-
-       buf = talloc(send_ctx, offset);
-       if (!buf) {
-               DEBUG(0,("print_notify_send_messages: Out of memory\n"));
-               talloc_destroy_pool(send_ctx);
-               return;
-       }
-
-       offset = 0;
-       SIVAL(buf,offset,msg_count);
-       offset += 4;
-       for (pq = notify_queue_head; pq; pq = pq->next) {
-               SIVAL(buf,offset,pq->buflen);
-               offset += 4;
-               memcpy(buf + offset, pq->buf, pq->buflen);
-               offset += pq->buflen;
-       }
-
-       DEBUG(5, ("print_notify_send_messages: sending %d print notify message%s\n", 
-                 msg_count, msg_count != 1 ? "s" : ""));
-
-       message_send_all(tdb, MSG_PRINTER_NOTIFY2, buf, offset, False, NULL);
-       talloc_destroy_pool(send_ctx);
-       notify_queue_head = NULL;
-}
-
-/*******************************************************************
- Batch up print notify messages.
-*******************************************************************/
+/*
+ * Print notification routines
+ */
 
 static void send_spoolss_notify2_msg(struct spoolss_notify_msg *msg)
 {
        char *buf = NULL;
-       size_t buflen = 0, len;
-       struct notify_queue *pnqueue, *tmp_ptr;
+       int buflen = 0, len;
+       TDB_CONTEXT *tdb;
 
        /* Let's not waste any time with this */
 
        if (lp_disable_spoolss())
                return;
 
-       if (!send_ctx)
-               send_ctx = talloc_init_named("print notify queue");
-
-       if (!send_ctx)
-               goto fail;
-
        /* Flatten data into a message */
 
 again:
@@ -137,34 +59,24 @@ again:
                                msg->len, msg->notify.data);
 
        if (buflen != len) {
-               buf = talloc_realloc(send_ctx, buf, len);
-               if (!buf)
-                       goto fail;
+               buf = Realloc(buf, len);
                buflen = len;
                goto again;
        }
 
-       /* Store the message on the pending queue. */
-
-       pnqueue = talloc(send_ctx, sizeof(*pnqueue));
-       if (!pnqueue)
-               goto fail;
-
-       pnqueue->buf = buf;
-       pnqueue->buflen = buflen;
-
-       DEBUG(5, ("send_spoolss_notify2_msg: appending message 0x%02x/0x%02x to notify_queue_head\n", msg->type, msg->field));
-                 
-       /* Note we add to the end of the list to ensure
-        * the messages are sent in the order they were received. JRA.
-        */
-       DLIST_ADD_END(notify_queue_head, pnqueue, tmp_ptr);
+       /* Send message */
 
-       return;
+       tdb = conn_tdb_ctx();
 
-  fail:
+       if (!tdb) {
+               DEBUG(3, ("Failed to open connections database in send_spoolss_notify2_msg\n"));
+               goto done;
+       }
+       
+       message_send_all(tdb, MSG_PRINTER_NOTIFY2, buf, buflen, False, NULL);
 
-       DEBUG(0,("send_spoolss_notify2_msg: Out of memory.\n"));
+done:
+       SAFE_FREE(buf);
 }
 
 static void send_notify_field_values(const char *printer_name, uint32 type,
index 58eba9d87e8cd4ef014965b54c20c85222d4583b..3b85fce0200beba4cdf70d5f0ed767c28ff8dea9 100644 (file)
@@ -1745,7 +1745,7 @@ static WERROR get_a_printer_driver_3(NT_PRINTER_DRIVER_INFO_LEVEL_3 **info_ptr,
        
        dbuf = tdb_fetch(tdb_drivers, kbuf);
        if (!dbuf.dptr) 
-               return WERR_UNKNOWN_PRINTER_DRIVER;
+               return WERR_ACCESS_DENIED;
 
        len += tdb_unpack(dbuf.dptr, dbuf.dsize, "dffffffff",
                          &driver.cversion,
@@ -1864,7 +1864,7 @@ static uint32 dump_a_printer_driver(NT_PRINTER_DRIVER_INFO_LEVEL driver, uint32
        NT_PRINTER_DRIVER_INFO_LEVEL_3 *info3;
        int i;
        
-       DEBUG(20,("Dumping printer driver at level [%d]\n", level));
+       DEBUG(106,("Dumping printer driver at level [%d]\n", level));
        
        switch (level)
        {
@@ -1905,7 +1905,7 @@ static uint32 dump_a_printer_driver(NT_PRINTER_DRIVER_INFO_LEVEL driver, uint32
 
 /****************************************************************************
 ****************************************************************************/
-int pack_devicemode(NT_DEVICEMODE *nt_devmode, char *buf, int buflen)
+static int pack_devicemode(NT_DEVICEMODE *nt_devmode, char *buf, int buflen)
 {
        int len = 0;
 
@@ -2282,7 +2282,7 @@ static void free_nt_printer_info_level_2(NT_PRINTER_INFO_LEVEL_2 **info_ptr)
 
 /****************************************************************************
 ****************************************************************************/
-int unpack_devicemode(NT_DEVICEMODE **nt_devmode, char *buf, int buflen)
+static int unpack_devicemode(NT_DEVICEMODE **nt_devmode, char *buf, int buflen)
 {
        int len = 0;
        int extra_len = 0;
@@ -2407,7 +2407,7 @@ int lookup_printerkey( NT_PRINTER_DATA *data, char *name )
        
        for ( i=0; i<data->num_keys; i++ ) 
        {
-               if ( strequal(data->keys[i].name, name) ) {
+               if ( strcmp(data->keys[i].name, name) == 0 ) {
                        DEBUG(12,("lookup_printerkey: Found [%s]!\n", name));
                        key_index = i;
                        break;
@@ -2420,169 +2420,32 @@ int lookup_printerkey( NT_PRINTER_DATA *data, char *name )
 
 /****************************************************************************
  ***************************************************************************/
-
-uint32 get_printer_subkeys( NT_PRINTER_DATA *data, char* key, fstring **subkeys )
-{
-       int     i, j;
-       int     key_len;
-       int     num_subkeys = 0;
-       char    *p;
-       fstring *ptr, *subkeys_ptr = NULL;
-       fstring subkeyname;
-       
-       if ( !data )
-               return 0;
-               
-       for ( i=0; i<data->num_keys; i++ ) 
-       {
-               if ( StrnCaseCmp(data->keys[i].name, key, strlen(key)) == 0 )
-               {
-                       /* match sure it is a subkey and not the key itself */
-                       
-                       key_len = strlen( key );
-                       if ( strlen(data->keys[i].name) == key_len )
-                               continue;
-                       
-                       /* get subkey path */
-
-                       p = data->keys[i].name + key_len;
-                       if ( *p == '\\' )
-                               p++;
-                       fstrcpy( subkeyname, p );
-                       if ( (p = strchr( subkeyname, '\\' )) )
-                               *p = '\0';
-                       
-                       /* don't add a key more than once */
-                       
-                       for ( j=0; j<num_subkeys; j++ ) {
-                               if ( strequal( subkeys_ptr[j], subkeyname ) )
-                                       break;
-                       }
-                       
-                       if ( j != num_subkeys )
-                               continue;
-
-                       /* found a match, so allocate space and copy the name */
-                       
-                       if ( !(ptr = Realloc( subkeys_ptr, (num_subkeys+2)*sizeof(fstring))) ) {
-                               DEBUG(0,("get_printer_subkeys: Realloc failed for [%d] entries!\n", 
-                                       num_subkeys+1));
-                               SAFE_FREE( subkeys );
-                               return 0;
-                       }
-                       
-                       subkeys_ptr = ptr;
-                       fstrcpy( subkeys_ptr[num_subkeys], subkeyname );
-                       num_subkeys++;
-               }
-               
-       }
-       
-       /* tag of the end */
-       
-       fstrcpy( subkeys_ptr[num_subkeys], "" );
-       
-       *subkeys = subkeys_ptr;
-
-       return num_subkeys;
-}
  
-/****************************************************************************
- ***************************************************************************/
-WERROR delete_all_printer_data( NT_PRINTER_INFO_LEVEL_2 *p2, char *key )
+WERROR delete_all_printer_data( NT_PRINTER_INFO_LEVEL_2 *p2 )
 {
+       WERROR          result = WERR_OK;
        NT_PRINTER_DATA *data;
        int             i;
-       int             removed_keys = 0;
-       int             empty_slot;
        
        data = &p2->data;
-       empty_slot = data->num_keys;
-
-       if ( !key )
-               return WERR_INVALID_PARAM;
-       
-       /* remove all keys */
-
-       if ( !strlen(key) ) 
-       {
-               for ( i=0; i<data->num_keys; i++ ) 
-               {
-                       DEBUG(8,("delete_all_printer_data: Removed all Printer Data from key [%s]\n",
-                               data->keys[i].name));
-               
-                       SAFE_FREE( data->keys[i].name );
-                       regval_ctr_destroy( &data->keys[i].values );
-               }
-       
-               DEBUG(8,("delete_all_printer_data: Removed all Printer Data from printer [%s]\n",
-                       p2->printername ));
-       
-               SAFE_FREE( data->keys );
-               ZERO_STRUCTP( data );
-
-               return WERR_OK;
-       }
-
-       /* remove a specific key (and all subkeys) */
        
        for ( i=0; i<data->num_keys; i++ ) 
        {
-               if ( StrnCaseCmp( data->keys[i].name, key, strlen(key)) == 0 )
-               {
-                       DEBUG(8,("delete_all_printer_data: Removed all Printer Data from key [%s]\n",
-                               data->keys[i].name));
+               DEBUG(8,("delete_all_printer_data: Removed all Printer Data from key [%s]\n",
+                       data->keys[i].name));
                
-                       SAFE_FREE( data->keys[i].name );
-                       regval_ctr_destroy( &data->keys[i].values );
-               
-                       /* mark the slot as empty */
-
-                       ZERO_STRUCTP( &data->keys[i] );
-               }
-       }
-
-       /* find the first empty slot */
-
-       for ( i=0; i<data->num_keys; i++ ) {
-               if ( !data->keys[i].name ) {
-                       empty_slot = i;
-                       removed_keys++;
-                       break;
-               }
+               SAFE_FREE( data->keys[i].name );
+               regval_ctr_destroy( &data->keys[i].values );
        }
-
-       if ( i == data->num_keys )
-               /* nothing was removed */
-               return WERR_INVALID_PARAM;
-
-       /* move everything down */
        
-       for ( i=empty_slot+1; i<data->num_keys; i++ ) {
-               if ( data->keys[i].name ) {
-                       memcpy( &data->keys[empty_slot], &data->keys[i], sizeof(NT_PRINTER_KEY) ); 
-                       ZERO_STRUCTP( &data->keys[i] );
-                       empty_slot++;
-                       removed_keys++;
-               }
-       }
-
-       /* update count */
-               
-       data->num_keys -= removed_keys;
-
-       /* sanity check to see if anything is left */
-
-       if ( !data->num_keys )
-       {
-               DEBUG(8,("delete_all_printer_data: No keys left for printer [%s]\n", p2->printername ));
-
-               SAFE_FREE( data->keys );
-               ZERO_STRUCTP( data );
-       }
+       SAFE_FREE( data->keys );
 
-       return WERR_OK;
+       DEBUG(8,("delete_all_printer_data: Removed all Printer Data from printer [%s]\n",
+               p2->printername ));
+       
+       ZERO_STRUCTP( data );
+       
+       return result;
 }
 
 /****************************************************************************
@@ -2602,8 +2465,11 @@ WERROR delete_printer_data( NT_PRINTER_INFO_LEVEL_2 *p2, char *key, char *value
 
        key_index = lookup_printerkey( &p2->data, key );
        if ( key_index == -1 )
-               return WERR_OK;
+               key_index = add_new_printer_key( &p2->data, key );
                
+       if ( key_index == -1 )
+               return WERR_NOMEM;
+       
        regval_ctr_delvalue( &p2->data.keys[key_index].values, value );
        
        DEBUG(8,("delete_printer_data: Removed key => [%s], value => [%s]\n",
@@ -2638,8 +2504,8 @@ WERROR add_printer_data( NT_PRINTER_INFO_LEVEL_2 *p2, char *key, char *value,
        regval_ctr_addvalue( &p2->data.keys[key_index].values, value,
                type, data, real_len );
        
-       DEBUG(8,("add_printer_data: Added key => [%s], value => [%s], type=> [%d], size => [%d]\n",
-               key, value, type, real_len  ));
+       DEBUG(8,("add_printer_data: Added key => [%s], value => [%s], size => [%d]\n",
+               key, value, real_len ));
        
        return result;
 }
@@ -2703,7 +2569,7 @@ static int unpack_values(NT_PRINTER_DATA *printer_data, char *buf, int buflen)
                 * Should only be one '\' in the string returned.
                 */     
                 
-               str = strrchr( string, '\\');
+               str = strchr( string, '\\');
                
                /* Put in "PrinterDriverData" is no key specified */
                
@@ -2732,7 +2598,7 @@ static int unpack_values(NT_PRINTER_DATA *printer_data, char *buf, int buflen)
                
                regval_ctr_addvalue( &printer_data->keys[key_index].values, valuename, type, data_p, size );
 
-               DEBUG(8,("specific: [%s:%s], len: %d\n", keyname, valuename, size));
+               DEBUG(8,("specific: [%s\\%s], len: %d\n", keyname, valuename, size));
        }
 
        return len;
@@ -3180,7 +3046,7 @@ static BOOL set_driver_init_2( NT_PRINTER_INFO_LEVEL_2 *info_ptr )
         * should not be any (if there are delete them).
         */
         
-       delete_all_printer_data( info_ptr, "" );
+       delete_all_printer_data( info_ptr );
        
        slprintf(key, sizeof(key)-1, "%s%s", DRIVER_INIT_PREFIX, info_ptr->drivername);
 
@@ -3208,17 +3074,16 @@ static BOOL set_driver_init_2( NT_PRINTER_INFO_LEVEL_2 *info_ptr )
         * the initialization save. Change it to reflect the new printer.
         */
         
-       if ( info.devmode ) {
        ZERO_STRUCT(info.devmode->devicename);
        fstrcpy(info.devmode->devicename, info_ptr->printername);
-       }
+
 
        /*
         * NT/2k does not change out the entire DeviceMode of a printer
         * when changing the driver.  Only the driverextra, private, & 
         * driverversion fields.   --jerry  (Thu Mar 14 08:58:43 CST 2002)
         *
-        * Later examination revealed that Windows NT/2k does reset the
+        * Later e4xamination revealed that Windows NT/2k does reset the
         * the printer's device mode, bit **only** when you change a 
         * property of the device mode such as the page orientation.
         * --jerry
@@ -3230,8 +3095,9 @@ static BOOL set_driver_init_2( NT_PRINTER_INFO_LEVEL_2 *info_ptr )
        free_nt_devicemode(&info_ptr->devmode);
        info_ptr->devmode = info.devmode;
 
-       DEBUG(10,("set_driver_init_2: Set printer [%s] init %s DEVMODE for driver [%s]\n",
-               info_ptr->printername, info_ptr->devmode?"VALID":"NULL", info_ptr->drivername));
+
+       DEBUG(10,("set_driver_init_2: Set printer [%s] init DEVMODE for driver [%s]\n",
+                       info_ptr->printername, info_ptr->drivername));
 
        /* Add the printer data 'values' to the new printer */
         
@@ -3366,162 +3232,17 @@ uint32 update_driver_init(NT_PRINTER_INFO_LEVEL printer, uint32 level)
        {
                case 2:
                {
-                       result = update_driver_init_2(printer.info_2);
+                       result=update_driver_init_2(printer.info_2);
                        break;
                }
                default:
-                       result = 1;
+                       result=1;
                        break;
        }
        
        return result;
 }
 
-/****************************************************************************
- Convert the printer data value, a REG_BINARY array, into an initialization 
- DEVMODE. Note: the array must be parsed as if it was a DEVMODE in an rpc...
- got to keep the endians happy :).
-****************************************************************************/
-
-static BOOL convert_driver_init( TALLOC_CTX *ctx, NT_DEVICEMODE *nt_devmode, uint8 *data, uint32 data_len )
-{
-       BOOL       result = False;
-       prs_struct ps;
-       DEVICEMODE devmode;
-
-       ZERO_STRUCT(devmode);
-
-       prs_init(&ps, 0, ctx, UNMARSHALL);
-       ps.data_p      = (char *)data;
-       ps.buffer_size = data_len;
-
-       if (spoolss_io_devmode("phantom DEVMODE", &ps, 0, &devmode))
-               result = convert_devicemode("", &devmode, &nt_devmode);
-       else
-               DEBUG(10,("convert_driver_init: error parsing DEVMODE\n"));
-
-       return result;
-}
-
-/****************************************************************************
- Set the DRIVER_INIT info in the tdb. Requires Win32 client code that:
-
- 1. Use the driver's config DLL to this UNC printername and:
-    a. Call DrvPrintEvent with PRINTER_EVENT_INITIALIZE
-    b. Call DrvConvertDevMode with CDM_DRIVER_DEFAULT to get default DEVMODE
- 2. Call SetPrinterData with the 'magic' key and the DEVMODE as data.
-
- The last step triggers saving the "driver initialization" information for
- this printer into the tdb. Later, new printers that use this driver will
- have this initialization information bound to them. This simulates the
- driver initialization, as if it had run on the Samba server (as it would
- have done on NT).
-
- The Win32 client side code requirement sucks! But until we can run arbitrary
- Win32 printer driver code on any Unix that Samba runs on, we are stuck with it.
- It would have been easier to use SetPrinter because all the UNMARSHALLING of
- the DEVMODE is done there, but 2K/XP clients do not set the DEVMODE... think
- about it and you will realize why.  JRR 010720
-****************************************************************************/
-
-static WERROR save_driver_init_2(NT_PRINTER_INFO_LEVEL *printer, uint8 *data, uint32 data_len )
-{
-       WERROR        status       = WERR_OK;
-       TALLOC_CTX    *ctx         = NULL;
-       NT_DEVICEMODE *nt_devmode  = NULL;
-       NT_DEVICEMODE *tmp_devmode = printer->info_2->devmode;
-       
-       /*
-        * When the DEVMODE is already set on the printer, don't try to unpack it.
-        */
-       DEBUG(8,("save_driver_init_2: Enter...\n"));
-       
-       if ( !printer->info_2->devmode && data_len ) 
-       {
-               /*
-                * Set devmode on printer info, so entire printer initialization can be
-                * saved to tdb.
-                */
-
-               if ((ctx = talloc_init()) == NULL)
-                       return WERR_NOMEM;
-
-               if ((nt_devmode = (NT_DEVICEMODE*)malloc(sizeof(NT_DEVICEMODE))) == NULL) {
-                       status = WERR_NOMEM;
-                       goto done;
-               }
-       
-               ZERO_STRUCTP(nt_devmode);
-
-               /*
-                * The DEVMODE is held in the 'data' component of the param in raw binary.
-                * Convert it to to a devmode structure
-                */
-               if ( !convert_driver_init( ctx, nt_devmode, data, data_len )) {
-                       DEBUG(10,("save_driver_init_2: error converting DEVMODE\n"));
-                       status = WERR_INVALID_PARAM;
-                       goto done;
-               }
-
-               printer->info_2->devmode = nt_devmode;
-       }
-
-       /*
-        * Pack up and add (or update) the DEVMODE and any current printer data to
-        * a 'driver init' element in the tdb
-        * 
-        */
-
-       if ( update_driver_init(*printer, 2) != 0 ) {
-               DEBUG(10,("save_driver_init_2: error updating DEVMODE\n"));
-               status = WERR_NOMEM;
-               goto done;
-       }
-       
-       /*
-        * If driver initialization info was successfully saved, set the current 
-        * printer to match it. This allows initialization of the current printer 
-        * as well as the driver.
-        */
-       status = mod_a_printer(*printer, 2);
-       if (!W_ERROR_IS_OK(status)) {
-               DEBUG(10,("save_driver_init_2: error setting DEVMODE on printer [%s]\n",
-                                 printer->info_2->printername));
-       }
-       
-  done:
-       talloc_destroy(ctx);
-       free_nt_devicemode( &nt_devmode );
-       
-       printer->info_2->devmode = tmp_devmode;
-
-       return status;
-}
-
-/****************************************************************************
- Update the driver init info (DEVMODE and specifics) for a printer
-****************************************************************************/
-
-WERROR save_driver_init(NT_PRINTER_INFO_LEVEL *printer, uint32 level, uint8 *data, uint32 data_len)
-{
-       WERROR status = WERR_OK;
-       
-       switch (level)
-       {
-               case 2:
-               {
-                       status = save_driver_init_2( printer, data, data_len );
-                       break;
-               }
-               default:
-                       status = WERR_UNKNOWN_LEVEL;
-                       break;
-       }
-       
-       return status;
-}
-
 /****************************************************************************
  Get a NT_PRINTER_INFO_LEVEL struct. It returns malloced memory.
 ****************************************************************************/
@@ -3724,13 +3445,13 @@ uint32 free_a_printer_driver(NT_PRINTER_DRIVER_INFO_LEVEL driver, uint32 level)
   to a printer
 ****************************************************************************/
 
-BOOL printer_driver_in_use ( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3 )
+BOOL printer_driver_in_use ( NT_PRINTER_DRIVER_INFO_LEVEL_3 *i )
 {
        int snum;
        int n_services = lp_numservices();
        NT_PRINTER_INFO_LEVEL *printer = NULL;
 
-       if ( !info_3 ) 
+       if ( !i ) 
                return False;
 
        DEBUG(5,("printer_driver_in_use: Beginning search through ntprinters.tdb...\n"));
@@ -3745,7 +3466,7 @@ BOOL printer_driver_in_use ( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3 )
                if ( !W_ERROR_IS_OK(get_a_printer(&printer, 2, lp_servicename(snum))) )
                        continue;
                
-               if ( !StrCaseCmp(info_3->name, printer->info_2->drivername) ) {
+               if ( !StrCaseCmp(i->name, printer->info_2->drivername) ) {
                        free_a_printer( &printer, 2 );
                        return True;
                }
@@ -3767,7 +3488,7 @@ BOOL printer_driver_in_use ( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3 )
  
 static BOOL drv_file_in_use( char* file, NT_PRINTER_DRIVER_INFO_LEVEL_3 *info )
 {
-       int i = 0;
+       char *s;
        
        if ( !info )
                return False;
@@ -3783,18 +3504,16 @@ static BOOL drv_file_in_use( char* file, NT_PRINTER_DRIVER_INFO_LEVEL_3 *info )
 
        if ( strequal(file, info->helpfile) )
                return True;
+               
+       s = (char*) info->dependentfiles;
        
-       /* see of there are any dependent files to examine */
-       
-       if ( !info->dependentfiles )
-               return False;
-       
-       while ( *info->dependentfiles[i] ) 
-       {
-               if ( strequal(file, info->dependentfiles[i]) )
-                       return True;
-                       
-               i++;
+       if ( s ) {
+               while ( *s )
+               {
+                       if ( strequal(file, s) )
+                               return True;
+                       s += strlen(s) + 1;
+               }
        }
        
        return False;
@@ -3806,20 +3525,27 @@ static BOOL drv_file_in_use( char* file, NT_PRINTER_DRIVER_INFO_LEVEL_3 *info )
  input parameter from the list 
  *********************************************************************/
 
-static void trim_dependent_file( fstring files[], int idx )
+static void trim_dependent_file( char* s )
 {
+       char *p;
        
-       /* bump everything down a slot */
-
-       while( *files[idx+1] ) 
+       /* set p to the next character string in the list */
+       
+       p = s + strlen( s ) + 1;
+       
+       /* check to see that we have another string to copy back */
+       
+       if ( *p == '\0' ) 
        {
-               fstrcpy( files[idx], files[idx+1] );
-               idx++;
+               /* loop over s copying characters from p to s */
+               while ( *p!='\0' && *(p+1)!='\0' )
+                       *s++ = *p++;
        }
        
-       *files[idx] = '\0';
-
-       return; 
+       /* add the two trailing NULL's */
+       
+       *s      = '\0';
+       *(s+1)  = '\0';
 }
 
 /**********************************************************************
@@ -3829,8 +3555,8 @@ static void trim_dependent_file( fstring files[], int idx )
 static BOOL trim_overlap_drv_files( NT_PRINTER_DRIVER_INFO_LEVEL_3 *src, 
                                       NT_PRINTER_DRIVER_INFO_LEVEL_3 *drv )
 {
-       BOOL    in_use = False;
-       int     i = 0;
+       BOOL in_use = False;
+       char *s;
        
        if ( !src || !drv )
                return False;
@@ -3839,43 +3565,33 @@ static BOOL trim_overlap_drv_files( NT_PRINTER_DRIVER_INFO_LEVEL_3 *src,
        
        if ( drv_file_in_use(src->driverpath, drv) ) {
                in_use = True;
-               DEBUG(10,("Removing driverfile [%s] from list\n", src->driverpath));
                fstrcpy( src->driverpath, "" );
        }
                
        if ( drv_file_in_use(src->datafile, drv) ) {
                in_use = True;
-               DEBUG(10,("Removing datafile [%s] from list\n", src->datafile));
                fstrcpy( src->datafile, "" );
        }
                
        if ( drv_file_in_use(src->configfile, drv) ) {
                in_use = True;
-               DEBUG(10,("Removing configfile [%s] from list\n", src->configfile));
                fstrcpy( src->configfile, "" );
        }
                
-       if ( drv_file_in_use(src->helpfile, drv) ) {
-               in_use = True;
-               DEBUG(10,("Removing helpfile [%s] from list\n", src->helpfile));
-               fstrcpy( src->helpfile, "" );
-       }
+       s = (char*)src->dependentfiles;
        
-       /* are there any dependentfiles to examine? */
-       
-       if ( !src->dependentfiles )
-               return in_use;
+       if ( s ) {
+               while ( *s ) 
+               {
+                       if ( drv_file_in_use(s, drv) ) {
+                               in_use = True;
+                               trim_dependent_file( s );
+                       }
+                       else
+                               s += strlen(s) + 1;     
+               } 
+       }
                
-       while ( *src->dependentfiles[i] ) 
-       {
-               if ( drv_file_in_use(src->dependentfiles[i], drv) ) {
-                       in_use = True;
-                       DEBUG(10,("Removing [%s] from dependent file list\n", src->dependentfiles[i]));
-                       trim_dependent_file( src->dependentfiles, i );
-               }
-               else
-                       i++;
-       }               
                
        return in_use;
 }
@@ -3899,62 +3615,59 @@ BOOL printer_driver_files_in_use ( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info )
        fstring                         *list = NULL;
        NT_PRINTER_DRIVER_INFO_LEVEL    driver;
        
-       if ( !info )
-               return False;
-       
-       version = info->cversion;
-       
        /* loop over all driver versions */
        
        DEBUG(5,("printer_driver_files_in_use: Beginning search through ntdrivers.tdb...\n"));
        
-       /* get the list of drivers */
+       for ( version=0; version<DRIVER_MAX_VERSION; version++ )
+       {
+               /* get the list of drivers */
                
-       list = NULL;
-       ndrivers = get_ntdrivers(&list, info->environment, version);
+               list = NULL;
+               ndrivers = get_ntdrivers(&list, info->environment, version);
                
-       DEBUGADD(4,("we have:[%d] drivers in environment [%s] and version [%d]\n", 
-               ndrivers, info->environment, version));
+               DEBUGADD(4,("we have:[%d] drivers in environment [%s] and version [%d]\n", 
+                       ndrivers, info->environment, version));
 
-       /* check each driver for overlap in files */
-               
-       for (i=0; i<ndrivers; i++) 
-       {
-               DEBUGADD(5,("\tdriver: [%s]\n", list[i]));
-                       
-               ZERO_STRUCT(driver);
+               if (ndrivers == -1)
+                       continue;
                        
-               if ( !W_ERROR_IS_OK(get_a_printer_driver(&driver, 3, list[i], 
-                       info->environment, version)) )
+               /* check each driver for overlap in files */
+               
+               for (i=0; i<ndrivers; i++) 
                {
-                       SAFE_FREE(list);
-                       return True;
-               }
+                       DEBUGADD(5,("\tdriver: [%s]\n", list[i]));
                        
-               /* check if d2 uses any files from d1 */
-               /* only if this is a different driver than the one being deleted */
+                       ZERO_STRUCT(driver);
                        
-               if ( !strequal(info->name, driver.info_3->name) )
-               {
-                       if ( trim_overlap_drv_files(info, driver.info_3) ) {
-                               free_a_printer_driver(driver, 3);
-                               SAFE_FREE( list );
+                       if ( !W_ERROR_IS_OK(get_a_printer_driver(&driver, 3, list[i], 
+                               info->environment, version)) )
+                       {
+                               SAFE_FREE(list);
                                return True;
                        }
-               }
-       
-               free_a_printer_driver(driver, 3);
-       }       
+                       
+                       /* check if d2 uses any files from d1 */
+                       /* only if this is a different driver than the one being deleted */
+                       
+                       if ( !strequal(info->name, driver.info_3->name) 
+                               || (info->cversion != driver.info_3->cversion) )
+                       {
+                               if ( trim_overlap_drv_files(info, driver.info_3) ) {
+                                       free_a_printer_driver(driver, 3);
+                                       SAFE_FREE( list );
+                                       return True;
+                               }
+                       }
        
-       SAFE_FREE(list);
+                       free_a_printer_driver(driver, 3);
+               }       
+               
+               SAFE_FREE(list);
+       }
        
        DEBUG(5,("printer_driver_files_in_use: Completed search through ntdrivers.tdb...\n"));
        
-       driver.info_3 = info;
-       
-       if ( DEBUGLEVEL >= 20 )
-               dump_a_printer_driver( driver, 3 );
-       
        return False;
 }
 
@@ -3964,18 +3677,17 @@ BOOL printer_driver_files_in_use ( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info )
   this.
 ****************************************************************************/
 
-static BOOL delete_driver_files( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3, struct current_user *user )
+static BOOL delete_driver_files( NT_PRINTER_DRIVER_INFO_LEVEL_3 *i, struct current_user *user )
 {
-       int i = 0;
        char *s;
        connection_struct *conn;
        DATA_BLOB null_pw;
        NTSTATUS nt_status;
        
-       if ( !info_3 )
+       if ( !i )
                return False;
                
-       DEBUG(6,("delete_driver_files: deleting driver [%s] - version [%d]\n", info_3->name, info_3->cversion));
+       DEBUG(6,("delete_driver_files: deleting driver [%s] - version [%d]\n", i->name, i->cversion));
        
        /*
         * Connect to the print$ share under the same account as the 
@@ -4003,55 +3715,49 @@ static BOOL delete_driver_files( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3, struct
        /* now delete the files; must strip the '\print$' string from 
           fron of path                                                */
        
-       if ( *info_3->driverpath ) {
-               if ( (s = strchr( &info_3->driverpath[1], '\\' )) != NULL ) {
+       if ( *i->driverpath ) {
+               if ( (s = strchr( &i->driverpath[1], '\\' )) != NULL ) {
                        DEBUG(10,("deleting driverfile [%s]\n", s));
                        unlink_internals(conn, 0, s);
                }
        }
                
-       if ( *info_3->configfile ) {
-               if ( (s = strchr( &info_3->configfile[1], '\\' )) != NULL ) {
+       if ( *i->configfile ) {
+               if ( (s = strchr( &i->configfile[1], '\\' )) != NULL ) {
                        DEBUG(10,("deleting configfile [%s]\n", s));
                        unlink_internals(conn, 0, s);
                }
        }
        
-       if ( *info_3->datafile ) {
-               if ( (s = strchr( &info_3->datafile[1], '\\' )) != NULL ) {
+       if ( *i->datafile ) {
+               if ( (s = strchr( &i->datafile[1], '\\' )) != NULL ) {
                        DEBUG(10,("deleting datafile [%s]\n", s));
                        unlink_internals(conn, 0, s);
                }
        }
        
-       if ( *info_3->helpfile ) {
-               if ( (s = strchr( &info_3->helpfile[1], '\\' )) != NULL ) {
+       if ( *i->helpfile ) {
+               if ( (s = strchr( &i->helpfile[1], '\\' )) != NULL ) {
                        DEBUG(10,("deleting helpfile [%s]\n", s));
                        unlink_internals(conn, 0, s);
                }
        }
        
-       /* check if we are done removing files */
+       s = (char*)i->dependentfiles;
        
-       if ( info_3->dependentfiles )
-       {
-               while ( *info_3->dependentfiles[i] ) {
-                       char *file;
+       while ( s && *s ) {
+               char *file;
 
-                       /* bypass the "\print$" portion of the path */
-                       
-                       if ( (file = strchr( info_3->dependentfiles[i]+1, '\\' )) != NULL )
-                       {
-                               DEBUG(10,("deleting dependent file [%s]\n", file));
-                               unlink_internals(conn, 0, file );
-                       }
-                       
-                       i++;
+               if ( (file = strchr( s+1, '\\' )) != NULL )
+               {
+                       DEBUG(10,("deleting dependent file [%s]\n", file));
+                       unlink_internals(conn, 0, file );
+                       file += strlen( file ) + 1;
                }
+
+               s = file;
        }
 
-       unbecome_user();
-       
        return True;
 }
 
@@ -4060,7 +3766,7 @@ static BOOL delete_driver_files( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3, struct
  previously looked up.
  ***************************************************************************/
 
-WERROR delete_printer_driver( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3, struct current_user *user,
+static WERROR delete_printer_driver_internal( NT_PRINTER_DRIVER_INFO_LEVEL_3 *i, struct current_user *user,
                               uint32 version, BOOL delete_files )
 {
        pstring         key;
@@ -4070,14 +3776,14 @@ WERROR delete_printer_driver( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3, struct cur
 
        /* delete the tdb data first */
 
-       get_short_archi(arch, info_3->environment);
+       get_short_archi(arch, i->environment);
        slprintf(key, sizeof(key)-1, "%s%s/%d/%s", DRIVERS_PREFIX,
-               arch, version, info_3->name);
+               arch, version, i->name);
 
        DEBUG(5,("delete_printer_driver: key = [%s] delete_files = %s\n",
                key, delete_files ? "TRUE" : "FALSE" ));
 
-       ctr.info_3 = info_3;
+       ctr.info_3 = i;
        dump_a_printer_driver( ctr, 3 );
 
        kbuf.dptr=key;
@@ -4087,7 +3793,7 @@ WERROR delete_printer_driver( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3, struct cur
        
        dbuf = tdb_fetch( tdb_drivers, kbuf );
        if ( !dbuf.dptr ) {
-               DEBUG(8,("delete_printer_driver: Driver unknown [%s]\n", key));
+               DEBUG(8,("delete_printer_driver_internal: Driver unknown [%s]\n", key));
                return WERR_UNKNOWN_PRINTER_DRIVER;
        }
                
@@ -4096,7 +3802,7 @@ WERROR delete_printer_driver( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3, struct cur
        /* ok... the driver exists so the delete should return success */
                
        if (tdb_delete(tdb_drivers, kbuf) == -1) {
-               DEBUG (0,("delete_printer_driver: fail to delete %s!\n", key));
+               DEBUG (0,("delete_printer_driver_internal: fail to delete %s!\n", key));
                return WERR_ACCESS_DENIED;
        }
 
@@ -4107,14 +3813,51 @@ WERROR delete_printer_driver( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3, struct cur
         */
 
        if ( delete_files )
-               delete_driver_files( info_3, user );
+               delete_driver_files( i, user );
+
+
+       DEBUG(5,("delete_printer_driver_internal: driver delete successful [%s]\n", key));
+
+       return WERR_OK;
+}
+
+/****************************************************************************
+ Remove a printer driver from the TDB.  This assumes that the the driver was
+ previously looked up.
+ ***************************************************************************/
+
+WERROR delete_printer_driver( NT_PRINTER_DRIVER_INFO_LEVEL_3 *i, struct current_user *user,
+                              uint32 version, BOOL delete_files )
+{
+       WERROR err;
+
+       /*
+        * see if we should delete all versions of this driver 
+        * (DRIVER_ANY_VERSION uis only set for "Windows NT x86")
+        */
+
+       if ( version == DRIVER_ANY_VERSION ) 
+       {
+               /* Windows NT 4.0 */
+               
+               err = delete_printer_driver_internal(i, user, 2, delete_files );
+               if ( !W_ERROR_IS_OK(err) && (W_ERROR_V(err) != ERRunknownprinterdriver ) )
+                       return err;
                        
+               /* Windows 2000/XP  */
                
-       DEBUG(5,("delete_printer_driver: driver delete successful [%s]\n", key));
+               err = delete_printer_driver_internal(i, user, 3, delete_files );
+               if ( !W_ERROR_IS_OK(err) && (W_ERROR_V(err) != ERRunknownprinterdriver ) )
+                               return err;
 
        return WERR_OK;
        }
        
+       /* just delete what they asked for */
+       
+       return delete_printer_driver_internal(i, user, version, delete_files );
+}
+
 /****************************************************************************
  Store a security desc for a printer.
 ****************************************************************************/
index 2df846aa5798c8f2d1e8ffede2adfc30eb865dd4..51ebb739a33afda78ff8b3cf4f316e037e65c700 100644 (file)
@@ -73,9 +73,9 @@ cups_passwd_cb(const char *prompt)    /* I - Prompt */
  *                       system.
  */
 
-void cups_printer_fn(void (*fn)(char *, char *))
+void
+cups_printer_fn(void (*fn)(char *, char *))    /* I - Function to call */
 {
-       /* I - Function to call */
        http_t          *http;          /* HTTP connection to server */
        ipp_t           *request,       /* IPP Request */
                        *response;      /* IPP Response */
@@ -665,10 +665,6 @@ cups_job_submit(int snum, struct printjob *pjob)
 
        httpClose(http);
 
-       if ( ret == 0 )
-               unlink(pjob->filename);
-       /* else print_job_end will do it for us */
-
        return (ret);
 }
 
index 8a4e7ea073b0cda26b10d6df9c7574d25da72290..ff50ac47c492e18d6e939935e55ccc6705c49bd2 100644 (file)
@@ -46,7 +46,7 @@ files_struct *print_fsp_open(connection_struct *conn, char *fname)
                fstrcat(name, p);
        }
 
-       jobid = print_job_start(&current_user, SNUM(conn), name, NULL);
+       jobid = print_job_start(&current_user, SNUM(conn), name);
        if (jobid == -1) {
                file_free(fsp);
                return NULL;
index 6474c92c692c5a16cd6a64fc0bcb01bc94a3985a..cb689c05d6636bec15f554424db2c55f67009fe9 100644 (file)
@@ -132,13 +132,11 @@ static pid_t local_pid;
 
 static int get_queue_status(int, print_status_struct *);
 
-/* There can be this many printing tdb's open, plus any locked ones. */
 #define MAX_PRINT_DBS_OPEN 1
 
 struct tdb_print_db {
        struct tdb_print_db *next, *prev;
        TDB_CONTEXT *tdb;
-       int ref_count;
        fstring printer_name;
 };
 
@@ -151,45 +149,32 @@ static struct tdb_print_db *print_db_head;
 
 static struct tdb_print_db *get_print_db_byname(const char *printername)
 {
-       struct tdb_print_db *p = NULL, *last_entry = NULL;
+       struct tdb_print_db *p, *last_entry;
        int num_open = 0;
        pstring printdb_path;
 
        for (p = print_db_head, last_entry = print_db_head; p; p = p->next) {
                if (p->tdb && strequal(p->printer_name, printername)) {
                        DLIST_PROMOTE(print_db_head, p);
-                       p->ref_count++;
                        return p;
                }
                num_open++;
                last_entry = p;
        }
-
        /* Not found. */
        if (num_open >= MAX_PRINT_DBS_OPEN) {
-               /* Try and recycle the last entry. */
+               /* Recycle the last entry. */
                DLIST_PROMOTE(print_db_head, last_entry);
-
-               for (p = print_db_head; p; p = p->next) {
-                       if (p->ref_count)
-                               continue;
-                       if (p->tdb) {
-                               if (tdb_close(print_db_head->tdb)) {
-                                       DEBUG(0,("get_print_db: Failed to close tdb for printer %s\n",
-                                                               print_db_head->printer_name ));
-                                       return NULL;
-                               }
+               if (print_db_head->tdb) {
+                       if (tdb_close(print_db_head->tdb)) {
+                               DEBUG(0,("get_print_db: Failed to close tdb for printer %s\n",
+                                                       print_db_head->printer_name ));
+                               return NULL;
                        }
-                       ZERO_STRUCTP(p);
-                       break;
                }
-               if (p) {
-                       DLIST_PROMOTE(print_db_head, p);
-                       p = print_db_head;
-               }
-       }
-       
-       if (!p) {
+               p = print_db_head;
+               ZERO_STRUCTP(p);
+       } else {
                /* Create one. */
                p = (struct tdb_print_db *)malloc(sizeof(struct tdb_print_db));
                if (!p) {
@@ -216,16 +201,9 @@ static struct tdb_print_db *get_print_db_byname(const char *printername)
                return NULL;
        }
        fstrcpy(p->printer_name, printername);
-       p->ref_count++;
        return p;
 }
 
-static void release_print_db( struct tdb_print_db *pdb)
-{
-       pdb->ref_count--;
-       SMB_ASSERT(pdb->ref_count >= 0);
-}
-
 /****************************************************************************
  Initialise the printing backend. Called once at startup. 
  Does not survive a fork
@@ -257,10 +235,7 @@ BOOL print_backend_init(void)
                pdb = get_print_db_byname(lp_const_servicename(snum));
                if (!pdb)
                        continue;
-               if (tdb_lock_bystring(pdb->tdb, sversion) == -1) {
-                       DEBUG(0,("print_backend_init: Failed to open printer %s database\n", lp_const_servicename(snum) ));
-                       return False;
-               }
+               tdb_lock_bystring(pdb->tdb, sversion);
                if (tdb_fetch_int32(pdb->tdb, sversion) != PRINT_DATABASE_VERSION) {
                        tdb_traverse(pdb->tdb, tdb_traverse_delete_fn, NULL);
                        tdb_store_int32(pdb->tdb, sversion, PRINT_DATABASE_VERSION);
@@ -311,74 +286,25 @@ static TDB_DATA print_key(uint32 jobid)
        return ret;
 }
 
-/***********************************************************************
- unpack a pjob from a tdb buffer 
-***********************************************************************/
-int unpack_pjob( char* buf, int buflen, struct printjob *pjob )
-{
-       int     len = 0;
-       int     used;
-       
-       if ( !buf || !pjob )
-               return -1;
-               
-       len += tdb_unpack(buf+len, buflen-len, "dddddddddffff",
-                               &pjob->pid,
-                               &pjob->sysjob,
-                               &pjob->fd,
-                               &pjob->starttime,
-                               &pjob->status,
-                               &pjob->size,
-                               &pjob->page_count,
-                               &pjob->spooled,
-                               &pjob->smbjob,
-                               pjob->filename,
-                               pjob->jobname,
-                               pjob->user,
-                               pjob->queuename);
-                               
-       if ( len == -1 )
-               return -1;
-               
-       if ( (used = unpack_devicemode(&pjob->nt_devmode, buf+len, buflen-len)) == -1 )
-               return -1;
-       
-       len += used;
-       
-       return len;
-
-}
-
 /****************************************************************************
  Useful function to find a print job in the database.
 ****************************************************************************/
 
 static struct printjob *print_job_find(int snum, uint32 jobid)
 {
-       static struct printjob  pjob;
-       TDB_DATA                ret;
-       struct tdb_print_db     *pdb = get_print_db_byname(lp_const_servicename(snum));
-       
+       static struct printjob pjob;
+       TDB_DATA ret;
+       struct tdb_print_db *pdb = get_print_db_byname(lp_const_servicename(snum));
 
        if (!pdb)
                return NULL;
 
        ret = tdb_fetch(pdb->tdb, print_key(jobid));
-       release_print_db(pdb);
-
-       if (!ret.dptr)
-               return NULL;
-       
-       if ( pjob.nt_devmode )
-               free_nt_devicemode( &pjob.nt_devmode );
-               
-       ZERO_STRUCT( pjob );
-       
-       if ( unpack_pjob( ret.dptr, ret.dsize, &pjob ) == -1 )
+       if (!ret.dptr || ret.dsize != sizeof(pjob))
                return NULL;
-       
-       SAFE_FREE(ret.dptr);    
+
+       memcpy(&pjob, ret.dptr, sizeof(pjob));
+       SAFE_FREE(ret.dptr);
        return &pjob;
 }
 
@@ -389,13 +315,9 @@ static uint32 sysjob_to_jobid_value;
 static int unixjob_traverse_fn(TDB_CONTEXT *the_tdb, TDB_DATA key,
                               TDB_DATA data, void *state)
 {
-       struct printjob *pjob;
+       struct printjob *pjob = (struct printjob *)data.dptr;
        int *sysjob = (int *)state;
 
-       if (!data.dptr || data.dsize == 0)
-               return 0;
-
-       pjob = (struct printjob *)data.dptr;
        if (key.dsize != sizeof(uint32))
                return 0;
 
@@ -428,7 +350,6 @@ uint32 sysjob_to_jobid(int unix_jobid)
                pdb = get_print_db_byname(lp_const_servicename(snum));
                if (pdb)
                        tdb_traverse(pdb->tdb, unixjob_traverse_fn, &unix_jobid);
-               release_print_db(pdb);
                if (sysjob_to_jobid_value != (uint32)-1)
                        return sysjob_to_jobid_value;
        }
@@ -513,12 +434,9 @@ static void pjob_store_notify(int snum, uint32 jobid, struct printjob *old_data,
 
 static BOOL pjob_store(int snum, uint32 jobid, struct printjob *pjob)
 {
-       TDB_DATA                old_data, new_data;
-       BOOL                    ret = False;
-       struct tdb_print_db     *pdb = get_print_db_byname(lp_const_servicename(snum));
-       char                    *buf = NULL;
-       int                     len, newlen, buflen;
-       
+       TDB_DATA old_data, new_data;
+       BOOL ret;
+       struct tdb_print_db *pdb = get_print_db_byname(lp_const_servicename(snum));
 
        if (!pdb)
                return False;
@@ -527,63 +445,20 @@ static BOOL pjob_store(int snum, uint32 jobid, struct printjob *pjob)
 
        old_data = tdb_fetch(pdb->tdb, print_key(jobid));
 
-       /* Doh!  Now we have to pack/unpack data since the NT_DEVICEMODE was added */
-
-       newlen = 0;
-       
-       do {
-               len = 0;
-               buflen = newlen;
-               len += tdb_pack(buf+len, buflen-len, "dddddddddffff",
-                               pjob->pid,
-                               pjob->sysjob,
-                               pjob->fd,
-                               pjob->starttime,
-                               pjob->status,
-                               pjob->size,
-                               pjob->page_count,
-                               pjob->spooled,
-                               pjob->smbjob,
-                               pjob->filename,
-                               pjob->jobname,
-                               pjob->user,
-                               pjob->queuename);
-
-               len += pack_devicemode(pjob->nt_devmode, buf+len, buflen-len);
-       
-               if (buflen != len) 
-               {
-                       char *tb;
-
-                       tb = (char *)Realloc(buf, len);
-                       if (!tb) {
-                               DEBUG(0,("pjob_store: failed to enlarge buffer!\n"));
-                               goto done;
-                       }
-                       else 
-                               buf = tb;
-                       newlen = len;
-               }
-       }
-       while ( buflen != len );
-               
-       
        /* Store new data */
 
-       new_data.dptr = buf;
-       new_data.dsize = len;
+       new_data.dptr = (void *)pjob;
+       new_data.dsize = sizeof(*pjob);
        ret = (tdb_store(pdb->tdb, print_key(jobid), new_data, TDB_REPLACE) == 0);
 
-       release_print_db(pdb);
-
        /* Send notify updates for what has changed */
 
-       if ( ret && (old_data.dsize == 0 || old_data.dsize == sizeof(*pjob)) )
-               pjob_store_notify( snum, jobid, (struct printjob *)old_data.dptr, pjob );
-
-done:
-       SAFE_FREE( old_data.dptr );
-       SAFE_FREE( buf );
+       if (ret && (old_data.dsize == 0 || old_data.dsize == sizeof(*pjob))) {
+               pjob_store_notify(
+                       snum, jobid, (struct printjob *)old_data.dptr,
+                       (struct printjob *)new_data.dptr);
+               free(old_data.dptr);
+       }
 
        return ret;
 }
@@ -604,7 +479,6 @@ static void pjob_delete(int snum, uint32 jobid)
        if (!pjob) {
                DEBUG(5, ("pjob_delete(): we were asked to delete nonexistent job %u\n",
                                        (unsigned int)jobid));
-               release_print_db(pdb);
                return;
        }
 
@@ -625,7 +499,6 @@ static void pjob_delete(int snum, uint32 jobid)
        /* Remove from printing.tdb */
 
        tdb_delete(pdb->tdb, print_key(jobid));
-       release_print_db(pdb);
        rap_jobid_delete(snum, jobid);
 }
 
@@ -696,14 +569,10 @@ static int traverse_fn_delete(TDB_CONTEXT *t, TDB_DATA key, TDB_DATA data, void
        uint32 jobid;
        int i;
 
-       if (  key.dsize != sizeof(jobid) )
+       if (data.dsize != sizeof(pjob) || key.dsize != sizeof(jobid))
                return 0;
-               
        memcpy(&jobid, key.dptr, sizeof(jobid));
-       if ( unpack_pjob( data.dptr, data.dsize, &pjob ) == -1 )
-               return 0;
-       free_nt_devicemode( &pjob.nt_devmode );
-
+       memcpy(&pjob,  data.dptr, sizeof(pjob));
 
        if (ts->snum != lp_servicenumber(pjob.queuename)) {
                /* this isn't for the queue we are looking at - this cannot happen with the split tdb's. JRA */
@@ -782,7 +651,6 @@ static void print_cache_flush(int snum)
                return;
        slprintf(key, sizeof(key)-1, "CACHE/%s", printername);
        tdb_store_int32(pdb->tdb, key, -1);
-       release_print_db(pdb);
 }
 
 /****************************************************************************
@@ -803,7 +671,6 @@ static pid_t get_updating_pid(fstring printer_name)
        key.dsize = strlen(keystr);
 
        data = tdb_fetch(pdb->tdb, key);
-       release_print_db(pdb);
        if (!data.dptr || data.dsize != sizeof(pid_t))
                return (pid_t)-1;
 
@@ -838,7 +705,6 @@ static void set_updating_pid(const fstring printer_name, BOOL delete)
 
        if (delete) {
                tdb_delete(pdb->tdb, key);
-               release_print_db(pdb);
                return;
        }
        
@@ -846,7 +712,6 @@ static void set_updating_pid(const fstring printer_name, BOOL delete)
        data.dsize = sizeof(pid_t);
 
        tdb_store(pdb->tdb, key, data, TDB_REPLACE);    
-       release_print_db(pdb);
 }
 
 /****************************************************************************
@@ -875,19 +740,13 @@ static void print_queue_update(int snum)
         * This is essentially a mutex on the update.
         */
 
-       if (get_updating_pid(printer_name) != -1) {
-               release_print_db(pdb);
+       if (get_updating_pid(printer_name) != -1)
                return;
-       }
 
        /* Lock the queue for the database update */
 
        slprintf(keystr, sizeof(keystr) - 1, "LOCK/%s", printer_name);
-       if (tdb_lock_bystring(pdb->tdb, keystr) == -1) {
-               DEBUG(0,("print_queue_update: Failed to lock printer %s database\n", printer_name));
-               release_print_db(pdb);
-               return;
-       }
+       tdb_lock_bystring(pdb->tdb, keystr);
 
        /*
         * Ensure that no one else got in here.
@@ -900,7 +759,6 @@ static void print_queue_update(int snum)
                 * Someone else is doing the update, exit.
                 */
                tdb_unlock_bystring(pdb->tdb, keystr);
-               release_print_db(pdb);
                return;
        }
 
@@ -1007,7 +865,6 @@ static void print_queue_update(int snum)
 
        /* Delete our pid from the db. */
        set_updating_pid(printer_name, True);
-       release_print_db(pdb);
 }
 
 /****************************************************************************
@@ -1017,13 +874,9 @@ static void print_queue_update(int snum)
 BOOL print_job_exists(int snum, uint32 jobid)
 {
        struct tdb_print_db *pdb = get_print_db_byname(lp_const_servicename(snum));
-       BOOL ret;
-
        if (!pdb)
                return False;
-       ret = tdb_exists(pdb->tdb, print_key(jobid));
-       release_print_db(pdb);
-       return ret;
+       return tdb_exists(pdb->tdb, print_key(jobid));
 }
 
 /****************************************************************************
@@ -1055,23 +908,6 @@ char *print_job_fname(int snum, uint32 jobid)
        return pjob->filename;
 }
 
-
-/****************************************************************************
- Give the filename used for a jobid.
- Only valid for the process doing the spooling and when the job
- has not been spooled.
-****************************************************************************/
-
-NT_DEVICEMODE *print_job_devmode(int snum, uint32 jobid)
-{
-       struct printjob *pjob = print_job_find(snum, jobid);
-       
-       if ( !pjob )
-               return NULL;
-               
-       return pjob->nt_devmode;
-}
-
 /****************************************************************************
  Set the place in the queue for a job.
 ****************************************************************************/
@@ -1164,11 +1000,8 @@ static BOOL is_owner(struct current_user *user, int snum, uint32 jobid)
 
 BOOL print_job_delete(struct current_user *user, int snum, uint32 jobid, WERROR *errcode)
 {
-       BOOL    owner, deleted;
-       char    *fname;
+       BOOL owner;
 
-       *errcode = WERR_OK;
-               
        owner = is_owner(user, snum, jobid);
        
        /* Check access against security descriptor or whether the user
@@ -1181,40 +1014,15 @@ BOOL print_job_delete(struct current_user *user, int snum, uint32 jobid, WERROR
                return False;
        }
 
-       /* 
-        * get the spooled filename of the print job
-        * if this works, then the file has not been spooled
-        * to the underlying print system.  Just delete the 
-        * spool file & return.
-        */
-        
-       if ( (fname = print_job_fname( snum, jobid )) != NULL )
-       {
-               /* remove the spool file */
-               DEBUG(10,("print_job_delete: Removing spool file [%s]\n", fname ));
-               if ( unlink( fname ) == -1 ) {
-                       *errcode = map_werror_from_unix(errno);
-                       return False;
-               }
-               
-               return True;
-       }
-       
-       if (!print_job_delete1(snum, jobid)) {
-               *errcode = WERR_ACCESS_DENIED;
+       if (!print_job_delete1(snum, jobid)) 
                return False;
-       }
 
        /* force update the database and say the delete failed if the
            job still exists */
 
        print_queue_update(snum);
-       
-       deleted = !print_job_exists(snum, jobid);
-       if ( !deleted )
-               *errcode = WERR_ACCESS_DENIED;
 
-       return deleted;
+       return !print_job_exists(snum, jobid);
 }
 
 /****************************************************************************
@@ -1353,10 +1161,8 @@ static BOOL print_cache_expired(int snum)
                DEBUG(3, ("print cache expired for queue %s \
 (last_qscan_time = %d, time now = %d, qcachetime = %d)\n", printername,
                        (int)last_qscan_time, (int)time_now, (int)lp_lpqcachetime() ));
-               release_print_db(pdb);
                return True;
        }
-       release_print_db(pdb);
        return False;
 }
 
@@ -1378,7 +1184,6 @@ static int get_queue_status(int snum, print_status_struct *status)
        key.dptr = keystr;
        key.dsize = strlen(keystr);
        data = tdb_fetch(pdb->tdb, key);
-       release_print_db(pdb);
        if (data.dptr) {
                if (data.dsize == sizeof(print_status_struct)) {
                        memcpy(status, data.dptr, sizeof(print_status_struct));
@@ -1409,11 +1214,44 @@ int print_queue_length(int snum, print_status_struct *pstatus)
        return len;
 }
 
+/****************************************************************************
+ Determine the number of jobs in all queues. This is very expensive. Don't
+ call ! JRA.
+****************************************************************************/
+
+static int get_total_jobs(void)
+{
+       int total_jobs = 0;
+       int snum;
+       int services = lp_numservices();
+
+       for (snum = 0; snum < services; snum++) {
+               struct tdb_print_db *pdb;
+               int jobs;
+
+               if (!lp_print_ok(snum))
+                       continue;
+
+               pdb = get_print_db_byname(lp_const_servicename(snum));
+               if (!pdb)
+                       continue;
+
+               /* make sure the database is up to date */
+               if (print_cache_expired(snum))
+                       print_queue_update(snum);
+
+               jobs = tdb_fetch_int32(pdb->tdb, "INFO/total_jobs");
+               if (jobs > 0)
+                       total_jobs += jobs;
+       }
+       return total_jobs;
+}
+
 /***************************************************************************
  Start spooling a job - return the jobid.
 ***************************************************************************/
 
-uint32 print_job_start(struct current_user *user, int snum, char *jobname, NT_DEVICEMODE *nt_devmode )
+uint32 print_job_start(struct current_user *user, int snum, char *jobname)
 {
        uint32 jobid;
        char *path;
@@ -1423,7 +1261,6 @@ uint32 print_job_start(struct current_user *user, int snum, char *jobname, NT_DE
        int njobs = 0;
        const char *printername = lp_const_servicename(snum);
        struct tdb_print_db *pdb = get_print_db_byname(printername);
-       BOOL pdb_locked = False;
 
        errno = 0;
 
@@ -1432,13 +1269,11 @@ uint32 print_job_start(struct current_user *user, int snum, char *jobname, NT_DE
 
        if (!print_access_check(user, snum, PRINTER_ACCESS_USE)) {
                DEBUG(3, ("print_job_start: job start denied by security descriptor\n"));
-               release_print_db(pdb);
                return (uint32)-1;
        }
 
        if (!print_time_access_check(snum)) {
                DEBUG(3, ("print_job_start: job start denied by time check\n"));
-               release_print_db(pdb);
                return (uint32)-1;
        }
 
@@ -1450,7 +1285,6 @@ uint32 print_job_start(struct current_user *user, int snum, char *jobname, NT_DE
                if (sys_fsusage(path, &dspace, &dsize) == 0 &&
                    dspace < 2*(SMB_BIG_UINT)lp_minprintspace(snum)) {
                        DEBUG(3, ("print_job_start: disk space check failed.\n"));
-                       release_print_db(pdb);
                        errno = ENOSPC;
                        return (uint32)-1;
                }
@@ -1459,7 +1293,6 @@ uint32 print_job_start(struct current_user *user, int snum, char *jobname, NT_DE
        /* for autoloaded printers, check that the printcap entry still exists */
        if (lp_autoloaded(snum) && !pcap_printername_ok(lp_const_servicename(snum), NULL)) {
                DEBUG(3, ("print_job_start: printer name %s check failed.\n", lp_const_servicename(snum) ));
-               release_print_db(pdb);
                errno = ENOENT;
                return (uint32)-1;
        }
@@ -1468,63 +1301,20 @@ uint32 print_job_start(struct current_user *user, int snum, char *jobname, NT_DE
        if (lp_maxprintjobs(snum) && (njobs = print_queue_length(snum,NULL)) > lp_maxprintjobs(snum)) {
                DEBUG(3, ("print_job_start: number of jobs (%d) larger than max printjobs per queue (%d).\n",
                        njobs, lp_maxprintjobs(snum) ));
-               release_print_db(pdb);
                errno = ENOSPC;
                return (uint32)-1;
        }
 
-       /* Lock the database */
-       if (tdb_lock_bystring(pdb->tdb, "INFO/nextjob") == -1) {
-               DEBUG(0,("print_job_start: failed to lock printing database %s\n", printername ));
-               release_print_db(pdb);
+       /* Insure the maximum print jobs in the system is not violated */
+       if (lp_totalprintjobs() && get_total_jobs() > lp_totalprintjobs()) {
+               DEBUG(3, ("print_job_start: number of jobs (%d) larger than max printjobs per system (%d).\n",
+                       njobs, lp_totalprintjobs() ));
+               errno = ENOSPC;
                return (uint32)-1;
        }
 
-       pdb_locked = True;
-
-       next_jobid = tdb_fetch_int32(pdb->tdb, "INFO/nextjob");
-       if (next_jobid == -1)
-               next_jobid = 1;
-
-       for (jobid = NEXT_JOBID(next_jobid); jobid != next_jobid; jobid = NEXT_JOBID(jobid)) {
-               if (!print_job_exists(snum, jobid))
-                       break;
-       }
-                               
-       if (jobid == next_jobid) {
-               DEBUG(3, ("print_job_start: jobid (%d)==next_jobid(%d).\n",
-                               jobid, next_jobid ));
-               jobid = -1;
-               goto fail;
-       }
-
-       /* Store a dummy placeholder. This must be quick as we have the lock. */
-       {
-               TDB_DATA dum;
-               dum.dptr = NULL;
-               dum.dsize = 0;
-               if (tdb_store(pdb->tdb, print_key(jobid), dum, TDB_INSERT) == -1) {
-                       DEBUG(3, ("print_job_start: jobid (%d) failed to store placeholder.\n",
-                               jobid ));
-                       jobid = -1;
-                       goto fail;
-               }
-       }
-
-       if (tdb_store_int32(pdb->tdb, "INFO/nextjob", jobid)==-1) {
-               DEBUG(3, ("print_job_start: failed to store INFO/nextjob.\n"));
-               jobid = -1;
-               goto fail;
-       }
-
-       /* We've finished with the INFO/nextjob lock. */
-       tdb_unlock_bystring(pdb->tdb, "INFO/nextjob");
-       pdb_locked = False;
-
        /* create the database entry */
-       
        ZERO_STRUCT(pjob);
-       
        pjob.pid = local_pid;
        pjob.sysjob = -1;
        pjob.fd = -1;
@@ -1533,8 +1323,7 @@ uint32 print_job_start(struct current_user *user, int snum, char *jobname, NT_DE
        pjob.size = 0;
        pjob.spooled = False;
        pjob.smbjob = True;
-       pjob.nt_devmode = nt_devmode;
-       
+
        fstrcpy(pjob.jobname, jobname);
 
        if ((vuser = get_valid_user_struct(user->vuid)) != NULL) {
@@ -1545,6 +1334,30 @@ uint32 print_job_start(struct current_user *user, int snum, char *jobname, NT_DE
 
        fstrcpy(pjob.queuename, lp_const_servicename(snum));
 
+       /* lock the database */
+       tdb_lock_bystring(pdb->tdb, "INFO/nextjob");
+
+       next_jobid = tdb_fetch_int32(pdb->tdb, "INFO/nextjob");
+       if (next_jobid == -1)
+               next_jobid = 1;
+
+       for (jobid = NEXT_JOBID(next_jobid); jobid != next_jobid; jobid = NEXT_JOBID(jobid)) {
+               if (!print_job_exists(snum, jobid))
+                       break;
+       }
+       if (jobid == next_jobid || !pjob_store(snum, jobid, &pjob)) {
+               DEBUG(3, ("print_job_start: either jobid (%d)==next_jobid(%d) or pjob_store failed.\n",
+                               jobid, next_jobid ));
+               jobid = -1;
+               goto fail;
+       }
+
+       if (tdb_store_int32(pdb->tdb, "INFO/nextjob", jobid)==-1) {
+               DEBUG(3, ("print_job_start: failed to store INFO/nextjob.\n"));
+               jobid = -1;
+               goto fail;
+       }
+
        /* we have a job entry - now create the spool file */
        slprintf(pjob.filename, sizeof(pjob.filename)-1, "%s/%s%.8u.XXXXXX", 
                 path, PRINT_SPOOL_PREFIX, (unsigned int)jobid);
@@ -1565,7 +1378,7 @@ to open spool file %s.\n", pjob.filename));
 
        pjob_store(snum, jobid, &pjob);
 
-       release_print_db(pdb);
+       tdb_unlock_bystring(pdb->tdb, "INFO/nextjob");
 
        /*
         * If the printer is marked as postscript output a leading
@@ -1584,9 +1397,7 @@ to open spool file %s.\n", pjob.filename));
        if (jobid != -1)
                pjob_delete(snum, jobid);
 
-       if (pdb_locked)
-               tdb_unlock_bystring(pdb->tdb, "INFO/nextjob");
-       release_print_db(pdb);
+       tdb_unlock_bystring(pdb->tdb, "INFO/nextjob");
 
        DEBUG(3, ("print_job_start: returning fail. Error = %s\n", strerror(errno) ));
        return -1;
@@ -1692,16 +1503,10 @@ static int traverse_fn_queue(TDB_CONTEXT *t, TDB_DATA key, TDB_DATA data, void *
        int i;
        uint32 jobid;
 
-       /* sanity checks */
-       
-       if ( key.dsize != sizeof(jobid) )
+       if (data.dsize != sizeof(pjob) || key.dsize != sizeof(int))
                return 0;
-               
        memcpy(&jobid, key.dptr, sizeof(jobid));
-       
-       if ( unpack_pjob( data.dptr, data.dsize, &pjob ) == -1 )
-               return 0;
-       free_nt_devicemode( &pjob.nt_devmode );
+       memcpy(&pjob,  data.dptr, sizeof(pjob));
 
        /* maybe it isn't for this queue */
        if (ts->snum != lp_servicenumber(pjob.queuename))
@@ -1740,17 +1545,10 @@ static int traverse_count_fn_queue(TDB_CONTEXT *t, TDB_DATA key, TDB_DATA data,
        struct printjob pjob;
        uint32 jobid;
 
-       /* sanity checks */
-       
-       if (  key.dsize != sizeof(jobid) )
+       if (data.dsize != sizeof(pjob) || key.dsize != sizeof(int))
                return 0;
-               
        memcpy(&jobid, key.dptr, sizeof(jobid));
-       
-       if ( unpack_pjob( data.dptr, data.dsize, &pjob ) == -1 )
-               return 0;
-               
-       free_nt_devicemode( &pjob.nt_devmode );
+       memcpy(&pjob,  data.dptr, sizeof(pjob));
 
        /* maybe it isn't for this queue - this cannot happen with the tdb/printer code. JRA */
        if (ts->snum != lp_servicenumber(pjob.queuename))
@@ -1832,17 +1630,13 @@ int print_queue_status(int snum,
        
        tdb_traverse(pdb->tdb, traverse_count_fn_queue, (void *)&tsc);
 
-       if (tsc.count == 0) {
-               release_print_db(pdb);
+       if (tsc.count == 0)
                return 0;
-       }
 
        /* Allocate the queue size. */
        if ((tstruct.queue = (print_queue_struct *)
-            malloc(sizeof(print_queue_struct)*tsc.count)) == NULL) {
-               release_print_db(pdb);
+            malloc(sizeof(print_queue_struct)*tsc.count)) == NULL)
                return 0;
-       }
 
        /*
         * Fill in the queue.
@@ -1854,7 +1648,6 @@ int print_queue_status(int snum,
        tstruct.snum = snum;
 
        tdb_traverse(pdb->tdb, traverse_fn_queue, (void *)&tstruct);
-       release_print_db(pdb);
 
        /* Sort the queue by submission time otherwise they are displayed
           in hash order. */
index 689f67da997d558208da04afabe3011440c535d5..595593c6f0d554eae4b0363df9299d99b0530337 100644 (file)
 
 #include "includes.h"
 
-#ifdef WITH_PROFILE
 #define IPC_PERMS ((SHM_R | SHM_W) | (SHM_R>>3) | (SHM_R>>6))
-#endif /* WITH_PROFILE */
 
-#ifdef WITH_PROFILE
 static int shm_id;
 static BOOL read_only;
-#endif
 
 struct profile_header *profile_h;
 struct profile_stats *profile_p;
@@ -49,7 +45,6 @@ void profile_message(int msg_type, pid_t src, void *buf, size_t len)
         int level;
 
        memcpy(&level, buf, sizeof(int));
-#ifdef WITH_PROFILE
        switch (level) {
        case 0:         /* turn off profiling */
                do_profile_flag = False;
@@ -71,9 +66,6 @@ void profile_message(int msg_type, pid_t src, void *buf, size_t len)
                DEBUG(1,("INFO: Profiling values cleared from pid %d\n", (int)src));
                break;
        }
-#else /* WITH_PROFILE */
-       DEBUG(1,("INFO: Profiling support unavailable in this build.\n"));
-#endif /* WITH_PROFILE */
 }
 
 /****************************************************************************
@@ -95,7 +87,6 @@ void reqprofile_message(int msg_type, pid_t src, void *buf, size_t len)
 /*******************************************************************
   open the profiling shared memory area
   ******************************************************************/
-#ifdef WITH_PROFILE
 BOOL profile_setup(BOOL rdonly)
 {
        struct shmid_ds shm_ds;
@@ -163,4 +154,3 @@ BOOL profile_setup(BOOL rdonly)
        message_register(MSG_REQ_PROFILELEVEL, reqprofile_message);
        return True;
 }
-#endif /* WITH_PROFILE */
index a9dfb52f011b36250f129b075ed0871632df6b3c..45c1f24001070d10e1eab1db0606613eccff0260 100644 (file)
@@ -37,6 +37,321 @@ REGISTRY_HOOK reg_hooks[] = {
 };
 
 
+/*
+ * Utility functions for REGSUBKEY_CTR
+ */
+
+/***********************************************************************
+ Init the talloc context held by a REGSUBKEY_CTR structure
+ **********************************************************************/
+
+void regsubkey_ctr_init( REGSUBKEY_CTR *ctr )
+{
+       if ( !ctr->ctx )
+               ctr->ctx = talloc_init();
+}
+
+/***********************************************************************
+ Add a new key to the array
+ **********************************************************************/
+
+int regsubkey_ctr_addkey( REGSUBKEY_CTR *ctr, char *keyname )
+{
+       uint32 len;
+       char **pp;
+       
+       if ( keyname )
+       {
+               len = strlen( keyname );
+
+               /* allocate a space for the char* in the array */
+               
+               if (  ctr->subkeys == 0 )
+                       ctr->subkeys = talloc( ctr->ctx, sizeof(char*) );
+               else {
+                       pp = talloc_realloc( ctr->ctx, ctr->subkeys, sizeof(char*)*(ctr->num_subkeys+1) );
+                       if ( pp )
+                               ctr->subkeys = pp;
+               }
+
+               /* allocate the string and save it in the array */
+               
+               ctr->subkeys[ctr->num_subkeys] = talloc( ctr->ctx, len+1 );
+               strncpy( ctr->subkeys[ctr->num_subkeys], keyname, len+1 );
+               ctr->num_subkeys++;
+       }
+       
+       return ctr->num_subkeys;
+}
+/***********************************************************************
+ How many keys does the container hold ?
+ **********************************************************************/
+
+int regsubkey_ctr_numkeys( REGSUBKEY_CTR *ctr )
+{
+       return ctr->num_subkeys;
+}
+
+/***********************************************************************
+ Retreive a specific key string
+ **********************************************************************/
+
+char* regsubkey_ctr_specific_key( REGSUBKEY_CTR *ctr, uint32 key_index )
+{
+       if ( ! (key_index < ctr->num_subkeys) )
+               return NULL;
+               
+       return ctr->subkeys[key_index];
+}
+
+/***********************************************************************
+ free memory held by a REGSUBKEY_CTR structure
+ **********************************************************************/
+
+void regsubkey_ctr_destroy( REGSUBKEY_CTR *ctr )
+{
+       if ( ctr ) {
+               talloc_destroy( ctr->ctx );     
+               ZERO_STRUCTP( ctr );
+       }
+}
+
+
+/*
+ * Utility functions for REGVAL_CTR
+ */
+
+/***********************************************************************
+ Init the talloc context held by a REGSUBKEY_CTR structure
+ **********************************************************************/
+
+void regval_ctr_init( REGVAL_CTR *ctr )
+{
+       if ( !ctr->ctx )
+               ctr->ctx = talloc_init();
+}
+
+/***********************************************************************
+ How many keys does the container hold ?
+ **********************************************************************/
+
+int regval_ctr_numvals( REGVAL_CTR *ctr )
+{
+       return ctr->num_values;
+}
+
+/***********************************************************************
+ allocate memory for and duplicate a REGISTRY_VALUE.
+ This is malloc'd memory so the caller should free it when done
+ **********************************************************************/
+
+REGISTRY_VALUE* dup_registry_value( REGISTRY_VALUE *val )
+{
+       REGISTRY_VALUE  *copy = NULL;
+       
+       if ( !val )
+               return NULL;
+       
+       if ( !(copy = malloc( sizeof(REGISTRY_VALUE) )) ) {
+               DEBUG(0,("dup_registry_value: malloc() failed!\n"));
+               return NULL;
+       }
+       
+       /* copy all the non-pointer initial data */
+       
+       memcpy( copy, val, sizeof(REGISTRY_VALUE) );
+       if ( val->data_p ) 
+       {
+               if ( !(copy->data_p = memdup( val->data_p, val->size )) ) {
+                       DEBUG(0,("dup_registry_value: memdup() failed for [%d] bytes!\n",
+                               val->size));
+                       SAFE_FREE( copy );
+               }
+       }
+       
+       return copy;    
+}
+
+/**********************************************************************
+ free the memory allocated to a REGISTRY_VALUE 
+ *********************************************************************/
+void free_registry_value( REGISTRY_VALUE *val )
+{
+       if ( !val )
+               return;
+               
+       SAFE_FREE( val->data_p );
+       SAFE_FREE( val );
+       
+       return;
+}
+
+/**********************************************************************
+ *********************************************************************/
+
+uint8* regval_data_p( REGISTRY_VALUE *val )
+{
+       return val->data_p;
+}
+
+/**********************************************************************
+ *********************************************************************/
+
+int regval_size( REGISTRY_VALUE *val )
+{
+       return val->size;
+}
+
+/**********************************************************************
+ *********************************************************************/
+
+char* regval_name( REGISTRY_VALUE *val )
+{
+       return val->valuename;
+}
+
+/**********************************************************************
+ *********************************************************************/
+
+uint32 regval_type( REGISTRY_VALUE *val )
+{
+       return val->type;
+}
+
+/***********************************************************************
+ Retreive a pointer to a specific value.  Caller shoud dup the structure
+ since this memory may go away with a regval_ctr_destroy()
+ **********************************************************************/
+
+REGISTRY_VALUE* regval_ctr_specific_value( REGVAL_CTR *ctr, uint32 idx )
+{
+       if ( !(idx < ctr->num_values) )
+               return NULL;
+               
+       return ctr->values[idx];
+}
+
+/***********************************************************************
+ Retrive the TALLOC_CTX associated with a REGISTRY_VALUE 
+ **********************************************************************/
+
+TALLOC_CTX* regval_ctr_getctx( REGVAL_CTR *val )
+{
+       if ( !val )
+               return NULL;
+
+       return val->ctx;
+}
+
+/***********************************************************************
+ Add a new registry value to the array
+ **********************************************************************/
+
+int regval_ctr_addvalue( REGVAL_CTR *ctr, char *name, uint16 type, 
+                         char *data_p, size_t size )
+{
+       REGISTRY_VALUE **ppreg;
+       uint16 len;
+       
+       if ( name )
+       {
+               len = strlen( name );
+
+               /* allocate a slot in the array of pointers */
+               
+               if (  ctr->num_values == 0 )
+                       ctr->values = talloc( ctr->ctx, sizeof(REGISTRY_VALUE*) );
+               else {
+                       ppreg = talloc_realloc( ctr->ctx, ctr->values, sizeof(REGISTRY_VALUE*)*(ctr->num_values+1) );
+                       if ( ppreg )
+                               ctr->values = ppreg;
+               }
+
+               /* allocate a new value and store the pointer in the arrya */
+               
+               ctr->values[ctr->num_values] = talloc( ctr->ctx, sizeof(REGISTRY_VALUE) );
+
+               /* init the value */
+       
+               fstrcpy( ctr->values[ctr->num_values]->valuename, name );
+               ctr->values[ctr->num_values]->type = type;
+               ctr->values[ctr->num_values]->data_p = talloc_memdup( ctr->ctx, data_p, size );
+               ctr->values[ctr->num_values]->size = size;
+               ctr->num_values++;
+       }
+
+       return ctr->num_values;
+}
+
+/***********************************************************************
+ Delete a single value from the registry container.
+ No need to free memory since it is talloc'd.
+ **********************************************************************/
+
+int regval_ctr_delvalue( REGVAL_CTR *ctr, char *name )
+{
+       int     i;
+       
+       /* search for the value */
+       
+       for ( i=0; i<ctr->num_values; i++ ) {
+               if ( strcmp( ctr->values[i]->valuename, name ) == 0)
+                       break;
+       }
+       
+       /* just return if we don't find it */
+       
+       if ( i == ctr->num_values )
+               return ctr->num_values;
+       
+       /* just shift everything down one */
+       
+       for ( /* use previous i */; i<(ctr->num_values-1); i++ )
+               memcpy( ctr->values[i], ctr->values[i+1], sizeof(REGISTRY_VALUE) );
+               
+       /* paranoia */
+       
+       ZERO_STRUCTP( ctr->values[i] );
+       
+       ctr->num_values--;
+       
+       return ctr->num_values;
+}
+
+/***********************************************************************
+ Delete a single value from the registry container.
+ No need to free memory since it is talloc'd.
+ **********************************************************************/
+
+REGISTRY_VALUE* regval_ctr_getvalue( REGVAL_CTR *ctr, char *name )
+{
+       int     i;
+       
+       /* search for the value */
+       
+       for ( i=0; i<ctr->num_values; i++ ) {
+               if ( strcmp( ctr->values[i]->valuename, name ) == 0)
+                       return ctr->values[i];
+               
+       }
+       
+       return NULL;
+}
+
+/***********************************************************************
+ free memory held by a REGVAL_CTR structure
+ **********************************************************************/
+
+void regval_ctr_destroy( REGVAL_CTR *ctr )
+{
+       if ( ctr ) {
+               talloc_destroy( ctr->ctx );
+               ZERO_STRUCTP( ctr );
+       }
+}
+
 /***********************************************************************
  Open the registry database and initialize the REGISTRY_HOOK cache
  ***********************************************************************/
index a58a91a0a8979c3fd98a60881bd4e9b53b6d93d7..8f53fe9ea5c3834601f902ed03ca973a8e033e11 100644 (file)
@@ -240,7 +240,6 @@ static int print_subpath_values_environments( char *key, REGVAL_CTR *val )
        int             buffer_size = 0;
        int             i, length;
        char            *filename;
-       UNISTR2         data;;
        
        DEBUG(8,("print_subpath_values_environments: Enter key => [%s]\n", key ? key : "NULL"));
        
@@ -288,23 +287,15 @@ static int print_subpath_values_environments( char *key, REGVAL_CTR *val )
        info3 = driver_ctr.info_3;
        
        filename = dos_basename( info3->driverpath );
-       init_unistr2( &data, filename, strlen(filename)+1 ); 
-       regval_ctr_addvalue( val, "Driver",             REG_SZ,       (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
-       
+       regval_ctr_addvalue( val, "Driver",             REG_SZ,       filename, strlen(filename)+1 );
        filename = dos_basename( info3->configfile );
-       init_unistr2( &data, filename, strlen(filename)+1 );
-       regval_ctr_addvalue( val, "Configuration File", REG_SZ,       (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
-       
+       regval_ctr_addvalue( val, "Configuration File", REG_SZ,       filename, strlen(filename)+1 );
        filename = dos_basename( info3->datafile );
-       init_unistr2( &data, filename, strlen(filename)+1 );
-       regval_ctr_addvalue( val, "Data File",          REG_SZ,       (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
-       
+       regval_ctr_addvalue( val, "Data File",          REG_SZ,       filename, strlen(filename)+1 );
        filename = dos_basename( info3->helpfile );
-       init_unistr2( &data, filename, strlen(filename)+1 );
-       regval_ctr_addvalue( val, "Help File",          REG_SZ,       (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
-       
-       init_unistr2( &data, info3->defaultdatatype, strlen(info3->defaultdatatype)+1 );
-       regval_ctr_addvalue( val, "Data Type",          REG_SZ,       (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
+       regval_ctr_addvalue( val, "Help File",          REG_SZ,       filename, strlen(filename)+1 );
+               
+       regval_ctr_addvalue( val, "Data Type",          REG_SZ,       info3->defaultdatatype, strlen(info3->defaultdatatype)+1 );
        
        regval_ctr_addvalue( val, "Version",            REG_DWORD,    (char*)&info3->cversion, sizeof(info3->cversion) );
        
@@ -322,20 +313,19 @@ static int print_subpath_values_environments( char *key, REGVAL_CTR *val )
                        
                        length = strlen(filename);
                
-                       buffer2 = Realloc( buffer, buffer_size + (length + 1)*sizeof(uint16) );
+                       buffer2 = Realloc( buffer, buffer_size + length + 1 );
                        if ( !buffer2 )
                                break;
                        buffer = buffer2;
-                       
-                       init_unistr2( &data, filename, length+1 );
-                       memcpy( buffer+buffer_size, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
                
-                       buffer_size += (length + 1)*sizeof(uint16);
+                       memcpy( buffer+buffer_size, filename, length+1 );
+               
+                       buffer_size += length + 1;
                }
                
                /* terminated by double NULL.  Add the final one here */
                
-               buffer2 = Realloc( buffer, buffer_size + 2 );
+               buffer2 = Realloc( buffer, buffer_size + 1 );
                if ( !buffer2 ) {
                        SAFE_FREE( buffer );
                        buffer_size = 0;
@@ -343,14 +333,12 @@ static int print_subpath_values_environments( char *key, REGVAL_CTR *val )
                else {
                        buffer = buffer2;
                        buffer[buffer_size++] = '\0';
-                       buffer[buffer_size++] = '\0';
                }
        }
        
        regval_ctr_addvalue( val, "Dependent Files",    REG_MULTI_SZ, buffer, buffer_size );
        
        free_a_printer_driver( driver_ctr, 3 );
-       
        SAFE_FREE( key2 );
        SAFE_FREE( buffer );
                
@@ -465,12 +453,11 @@ static int print_subpath_printers( char *key, REGSUBKEY_CTR *subkeys )
        int n_services = lp_numservices();      
        int snum;
        fstring sname;
-       int i;
        int num_subkeys = 0;
        char *keystr, *key2 = NULL;
        char *base, *new_path;
        NT_PRINTER_INFO_LEVEL *printer = NULL;
-       fstring *subkey_names = NULL;
+       
        
        DEBUG(10,("print_subpath_printers: key=>[%s]\n", key ? key : "NULL" ));
        
@@ -496,23 +483,22 @@ static int print_subpath_printers( char *key, REGSUBKEY_CTR *subkeys )
        key2 = strdup( key );
        keystr = key2;
        reg_split_path( keystr, &base, &new_path );
-
-       if ( !W_ERROR_IS_OK( get_a_printer(&printer, 2, base) ) )
-               goto done;
-
-       num_subkeys = get_printer_subkeys( &printer->info_2->data, new_path?new_path:"", &subkey_names );
        
-       for ( i=0; i<num_subkeys; i++ )
-               regsubkey_ctr_addkey( subkeys, subkey_names[i] );
        
-       free_a_printer( &printer, 2 );
-                       
+       if ( !new_path ) {
+               /* sanity check on the printer name */
+               if ( !W_ERROR_IS_OK( get_a_printer(&printer, 2, base) ) )
+                       goto done;
+               
+               free_a_printer( &printer, 2 );
+               
+               regsubkey_ctr_addkey( subkeys, SPOOL_PRINTERDATA_KEY );
+       }
+       
        /* no other subkeys below here */
 
 done:  
        SAFE_FREE( key2 );
-       SAFE_FREE( subkey_names );
-       
        return num_subkeys;
 }
 
@@ -531,13 +517,14 @@ static int print_subpath_values_printers( char *key, REGVAL_CTR *val )
        prs_struct      prs;
        uint32          offset;
        int             snum;
-       fstring         printername; 
-       NT_PRINTER_DATA *p_data;
-       int             i, key_index;
-       UNISTR2         data;
+       int             i;
+       fstring         valuename;
+       uint8           *data;
+       uint32          type, data_len;
+       fstring         printername;
        
        /* 
-        * Theres are tw cases to deal with here
+        * There are tw cases to deal with here
         * (1) enumeration of printer_info_2 values
         * (2) enumeration of the PrinterDriverData subney
         */
@@ -572,27 +559,17 @@ static int print_subpath_values_printers( char *key, REGVAL_CTR *val )
                regval_ctr_addvalue( val, "UntilTime",        REG_DWORD, (char*)&info2->untiltime,        sizeof(info2->untiltime) );
                regval_ctr_addvalue( val, "cjobs",            REG_DWORD, (char*)&info2->cjobs,            sizeof(info2->cjobs) );
                regval_ctr_addvalue( val, "AveragePPM",       REG_DWORD, (char*)&info2->averageppm,       sizeof(info2->averageppm) );
-
-               init_unistr2( &data, info2->printername, strlen(info2->printername)+1 );
-               regval_ctr_addvalue( val, "Name",             REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
-               init_unistr2( &data, info2->location, strlen(info2->location)+1 );
-               regval_ctr_addvalue( val, "Location",         REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
-               init_unistr2( &data, info2->comment, strlen(info2->comment)+1 );
-               regval_ctr_addvalue( val, "Comment",          REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
-               init_unistr2( &data, info2->parameters, strlen(info2->parameters)+1 );
-               regval_ctr_addvalue( val, "Parameters",       REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
-               init_unistr2( &data, info2->portname, strlen(info2->portname)+1 );
-               regval_ctr_addvalue( val, "Port",             REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
-               init_unistr2( &data, info2->servername, strlen(info2->servername)+1 );
-               regval_ctr_addvalue( val, "Server",           REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
-               init_unistr2( &data, info2->sharename, strlen(info2->sharename)+1 );
-               regval_ctr_addvalue( val, "Share",            REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
-               init_unistr2( &data, info2->drivername, strlen(info2->drivername)+1 );
-               regval_ctr_addvalue( val, "Driver",           REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
-               init_unistr2( &data, info2->sepfile, strlen(info2->sepfile)+1 );
-               regval_ctr_addvalue( val, "Separator File",   REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
-               init_unistr2( &data, "winprint", strlen("winprint")+1 );
-               regval_ctr_addvalue( val, "Print Processor",  REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
+               
+               regval_ctr_addvalue( val, "Name",             REG_SZ, info2->printername,     sizeof(info2->printername)+1 );
+               regval_ctr_addvalue( val, "Location",         REG_SZ, info2->location,        sizeof(info2->location)+1 );
+               regval_ctr_addvalue( val, "Comment",          REG_SZ, info2->comment,         sizeof(info2->comment)+1 );
+               regval_ctr_addvalue( val, "Parameters",       REG_SZ, info2->parameters,      sizeof(info2->parameters)+1 );
+               regval_ctr_addvalue( val, "Port",             REG_SZ, info2->portname,        sizeof(info2->portname)+1 );
+               regval_ctr_addvalue( val, "Server",           REG_SZ, info2->servername,      sizeof(info2->servername)+1 );
+               regval_ctr_addvalue( val, "Share",            REG_SZ, info2->sharename,       sizeof(info2->sharename)+1 );
+               regval_ctr_addvalue( val, "Driver",           REG_SZ, info2->drivername,      sizeof(info2->drivername)+1 );
+               regval_ctr_addvalue( val, "Separator File",   REG_SZ, info2->sepfile,         sizeof(info2->sepfile)+1 );
+               regval_ctr_addvalue( val, "Print Processor",  REG_SZ, "winprint",             sizeof("winprint")+1 );
                
                
                /* use a prs_struct for converting the devmode and security 
@@ -630,36 +607,43 @@ static int print_subpath_values_printers( char *key, REGVAL_CTR *val )
 
                                
                prs_mem_free( &prs );
+               free_a_printer( &printer, 2 );  
                
                num_values = regval_ctr_numvals( val ); 
-               
                goto done;
                
        }
-               
-       /* now enumerate the key */
        
+       
+       keystr = new_path;
+       reg_split_path( keystr, &base, &new_path );
+       
+       /* here should be no more path components here */
+       
+       if ( new_path || strcmp(base, SPOOL_PRINTERDATA_KEY) )
+               goto done;
+               
+       /* now enumerate the PrinterDriverData key */
        if ( !W_ERROR_IS_OK( get_a_printer(&printer, 2, printername) ) )
                goto done;
+
+       info2 = printer->info_2;
+               
        
        /* iterate over all printer data and fill the regval container */
        
-       p_data = &printer->info_2->data;
-       if ( (key_index = lookup_printerkey( p_data, new_path )) == -1  ) {
-               DEBUG(10,("print_subpath_values_printer: Unknown keyname [%s]\n", new_path));
-               goto done;
+#if 0  /* JERRY */
+       for ( i=0; get_specific_param_by_index(*printer, 2, i, valuename, &data, &type, &data_len); i++ )
+       {
+               regval_ctr_addvalue( val, valuename, type, data, data_len );
        }
-       
-       num_values = regval_ctr_numvals( &p_data->keys[key_index].values );
-       
-       for ( i=0; i<num_values; i++ )
-               regval_ctr_copyvalue( val, regval_ctr_specific_value(&p_data->keys[key_index].values, i) );
-                       
+#endif
+               
+       free_a_printer( &printer, 2 );
 
+       num_values = regval_ctr_numvals( val );
+       
 done:
-       if ( printer )
-               free_a_printer( &printer, 2 );
-               
        SAFE_FREE( key2 ); 
        
        return num_values;
diff --git a/source3/rpc_client/cli_login.c b/source3/rpc_client/cli_login.c
new file mode 100644 (file)
index 0000000..7b5bf90
--- /dev/null
@@ -0,0 +1,173 @@
+/* 
+   Unix SMB/CIFS implementation.
+   NT Domain Authentication SMB / MSRPC client
+   Copyright (C) Andrew Tridgell 1994-1997
+   Copyright (C) Luke Kenneth Casson Leighton 1996-1997
+   Copyright (C) Jeremy Allison  1999.
+   
+   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., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+
+extern fstring global_myworkgroup;
+extern pstring global_myname;
+
+/****************************************************************************
+Initialize domain session credentials.
+****************************************************************************/
+
+NTSTATUS cli_nt_setup_creds(struct cli_state *cli, unsigned char mach_pwd[16])
+{
+  NTSTATUS result;
+  DOM_CHAL clnt_chal;
+  DOM_CHAL srv_chal;
+
+  UTIME zerotime;
+
+  /******************* Request Challenge ********************/
+
+  generate_random_buffer( clnt_chal.data, 8, False);
+       
+  /* send a client challenge; receive a server challenge */
+  if (!cli_net_req_chal(cli, &clnt_chal, &srv_chal))
+  {
+    DEBUG(0,("cli_nt_setup_creds: request challenge failed\n"));
+    return NT_STATUS_UNSUCCESSFUL;
+  }
+
+  /**************** Long-term Session key **************/
+
+  /* calculate the session key */
+  cred_session_key(&clnt_chal, &srv_chal, (char *)mach_pwd, cli->sess_key);
+  memset((char *)cli->sess_key+8, '\0', 8);
+
+  /******************* Authenticate 2 ********************/
+
+  /* calculate auth-2 credentials */
+  zerotime.time = 0;
+  cred_create(cli->sess_key, &clnt_chal, zerotime, &(cli->clnt_cred.challenge));
+
+  /*  
+   * Send client auth-2 challenge.
+   * Receive an auth-2 challenge response and check it.
+   */
+
+  result = cli_net_auth2(cli, (lp_server_role() == ROLE_DOMAIN_MEMBER) ?
+                         SEC_CHAN_WKSTA : SEC_CHAN_BDC, 0x000001ff, &srv_chal);
+  
+  if (!NT_STATUS_IS_OK(result))
+  {
+    DEBUG(0,("cli_nt_setup_creds: auth2 challenge failed\n"));
+    return result;
+  }
+
+  return NT_STATUS_OK;
+}
+
+/****************************************************************************
+NT login - interactive.
+*NEVER* use this code. This method of doing a logon (sending the cleartext
+password equivalents, protected by the session key) is inherently insecure
+given the current design of the NT Domain system. JRA.
+ ****************************************************************************/
+NTSTATUS cli_nt_login_interactive(struct cli_state *cli, char *domain, char *username, 
+                              uint32 smb_userid_low, char *password,
+                              NET_ID_INFO_CTR *ctr, NET_USER_INFO_3 *user_info3)
+{
+  uchar lm_owf_user_pwd[16];
+  uchar nt_owf_user_pwd[16];
+  NTSTATUS ret;
+
+  DEBUG(5,("cli_nt_login_interactive: %d\n", __LINE__));
+
+  nt_lm_owf_gen(password, nt_owf_user_pwd, lm_owf_user_pwd);
+
+#ifdef DEBUG_PASSWORD
+
+  DEBUG(100,("nt owf of user password: "));
+  dump_data(100, (char *)lm_owf_user_pwd, 16);
+
+  DEBUG(100,("nt owf of user password: "));
+  dump_data(100, (char *)nt_owf_user_pwd, 16);
+
+#endif
+
+  DEBUG(5,("cli_nt_login_interactive: %d\n", __LINE__));
+
+  /* indicate an "interactive" login */
+  ctr->switch_value = INTERACTIVE_LOGON_TYPE;
+
+  /* Create the structure needed for SAM logon. */
+  init_id_info1(&ctr->auth.id1, domain, 0, 
+                smb_userid_low, 0,
+                username, cli->clnt_name_slash,
+                (char *)cli->sess_key, lm_owf_user_pwd, nt_owf_user_pwd);
+
+  /* Ensure we overwrite all the plaintext password
+     equivalents. */
+  memset(lm_owf_user_pwd, '\0', sizeof(lm_owf_user_pwd));
+  memset(nt_owf_user_pwd, '\0', sizeof(nt_owf_user_pwd));
+
+  /* Send client sam-logon request - update credentials on success. */
+  ret = cli_net_sam_logon(cli, ctr, user_info3);
+
+  memset(ctr->auth.id1.lm_owf.data, '\0', sizeof(lm_owf_user_pwd));
+  memset(ctr->auth.id1.nt_owf.data, '\0', sizeof(nt_owf_user_pwd));
+
+  return ret;
+}
+
+/****************************************************************************
+NT login - network.
+*ALWAYS* use this call to validate a user as it does not expose plaintext
+password equivalents over the network. JRA.
+****************************************************************************/
+
+NTSTATUS cli_nt_login_network(struct cli_state *cli, 
+                             const auth_usersupplied_info *user_info, 
+                             uchar chal[8],
+                             uint32 smb_userid_low, NET_ID_INFO_CTR *ctr, 
+                             NET_USER_INFO_3 *user_info3)
+{
+  DEBUG(5,("cli_nt_login_network: %d\n", __LINE__));
+  /* indicate a "network" login */
+  ctr->switch_value = NET_LOGON_TYPE;
+
+  /* Create the structure needed for SAM logon. */
+  init_id_info2(&ctr->auth.id2, user_info->domain.str, 0, smb_userid_low, 0,
+                user_info->smb_name.str, 
+               /* Send our cleint's workstaion name if we have it, otherwise ours */
+               ((user_info->wksta_name.len > 0) ?
+                user_info->wksta_name.str :
+                cli->clnt_name_slash),
+               chal, 
+               user_info->lm_resp.data, user_info->lm_resp.length,
+               user_info->nt_resp.data, user_info->nt_resp.length);
+
+  /* Send client sam-logon request - update credentials on success. */
+  return cli_net_sam_logon(cli, ctr, user_info3);
+}
+
+/****************************************************************************
+NT Logoff.
+****************************************************************************/
+BOOL cli_nt_logoff(struct cli_state *cli, NET_ID_INFO_CTR *ctr)
+{
+  DEBUG(5,("cli_nt_logoff: %d\n", __LINE__));
+
+  /* Send client sam-logoff request - update credentials on success. */
+  return cli_net_sam_logoff(cli, ctr);
+}
index eaee3c26e7c829fb00ac789c6ef3ff034e3a7d03..acc913554283148ebac67bbd32a9d33cda4f6bd3 100644 (file)
@@ -152,106 +152,11 @@ password ?).\n", cli->desthost ));
         return result;
 }
 
-/****************************************************************************
-LSA Authenticate 3
-
-Send the client credential, receive back a server credential.
-Ensure that the server credential returned matches the session key 
-encrypt of the server challenge originally received. JRA.
-****************************************************************************/
-
-NTSTATUS cli_net_auth3(struct cli_state *cli, 
-                      uint16 sec_chan, 
-                      uint32 *neg_flags, DOM_CHAL *srv_chal)
-{
-        prs_struct qbuf, rbuf;
-        NET_Q_AUTH_3 q;
-        NET_R_AUTH_3 r;
-        NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
-       extern pstring global_myname;
-
-        prs_init(&qbuf, MAX_PDU_FRAG_LEN, cli->mem_ctx, MARSHALL);
-        prs_init(&rbuf, 0, cli->mem_ctx, UNMARSHALL);
-
-        /* create and send a MSRPC command with api NET_AUTH2 */
-
-        DEBUG(4,("cli_net_auth3: srv:%s acct:%s sc:%x mc: %s chal %s neg: %x\n",
-                 cli->srv_name_slash, cli->mach_acct, sec_chan, global_myname,
-                 credstr(cli->clnt_cred.challenge.data), *neg_flags));
-
-        /* store the parameters */
-        init_q_auth_3(&q, cli->srv_name_slash, cli->mach_acct, 
-                      sec_chan, global_myname, &cli->clnt_cred.challenge, 
-                      *neg_flags);
-
-        /* turn parameters into data stream */
-
-        if (!net_io_q_auth_3("", &q,  &qbuf, 0) ||
-            !rpc_api_pipe_req(cli, NET_AUTH3, &qbuf, &rbuf)) {
-                goto done;
-        }
-        
-        /* Unmarshall response */
-        
-        if (!net_io_r_auth_3("", &r, &rbuf, 0)) {
-                goto done;
-        }
-
-        result = r.status;
-       *neg_flags = r.srv_flgs.neg_flags;
-
-        if (NT_STATUS_IS_OK(result)) {
-                UTIME zerotime;
-                
-                /*
-                 * Check the returned value using the initial
-                 * server received challenge.
-                 */
-
-                zerotime.time = 0;
-                if (cred_assert( &r.srv_chal, cli->sess_key, srv_chal, 
-                                 zerotime) == 0) {
-
-                        /*
-                         * Server replied with bad credential. Fail.
-                         */
-                        DEBUG(0,("cli_net_auth3: server %s replied with bad credential (bad machine \
-password ?).\n", cli->desthost ));
-                        result = NT_STATUS_ACCESS_DENIED;
-                        goto done;
-                }
-        }
-
- done:
-        prs_mem_free(&qbuf);
-        prs_mem_free(&rbuf);
-        
-        return result;
-}
-
-/* Return the secure channel type depending on the server role. */
-
-uint16 get_sec_chan(void)
-{
-       uint16 sec_chan = SEC_CHAN_WKSTA;
-
-       switch (lp_server_role()) {
-       case ROLE_DOMAIN_PDC:
-               sec_chan = SEC_CHAN_DOMAIN;
-               break;
-       case ROLE_DOMAIN_BDC:
-               sec_chan = SEC_CHAN_BDC;
-               break;
-       }
-
-       return sec_chan;
-}
-
 /* Initialize domain session credentials */
 
 NTSTATUS cli_nt_setup_creds(struct cli_state *cli, 
                            uint16 sec_chan,
-                           const unsigned char mach_pwd[16], uint32 *neg_flags, int level)
+                           const unsigned char mach_pwd[16])
 {
         DOM_CHAL clnt_chal;
         DOM_CHAL srv_chal;
@@ -277,30 +182,24 @@ NTSTATUS cli_nt_setup_creds(struct cli_state *cli,
                          cli->sess_key);
         memset((char *)cli->sess_key+8, '\0', 8);
 
-        /******************* Authenticate 2/3 ********************/
+        /******************* Authenticate 2 ********************/
 
-        /* calculate auth-2/3 credentials */
+        /* calculate auth-2 credentials */
         zerotime.time = 0;
-        cred_create(cli->sess_key, &clnt_chal, zerotime, &cli->clnt_cred.challenge);
+        cred_create(cli->sess_key, &clnt_chal, zerotime, 
+                    &cli->clnt_cred.challenge);
 
         /*  
-         * Send client auth-2/3 challenge.
-         * Receive an auth-2/3 challenge response and check it.
+         * Send client auth-2 challenge.
+         * Receive an auth-2 challenge response and check it.
          */
-        switch (level) {
-               case 2:
-                       result = cli_net_auth2(cli, sec_chan, *neg_flags, &srv_chal);
-                       break;
-               case 3:
-                       result = cli_net_auth3(cli, sec_chan, neg_flags, &srv_chal);
-                       break;
-               default:
-                       DEBUG(1,("cli_nt_setup_creds: unsupported auth level: %d\n", level));
-                       break;
-       }
+        
+       result = cli_net_auth2(cli, sec_chan, 0x000001ff, &srv_chal);
 
-       if (!NT_STATUS_IS_OK(result))
-                DEBUG(1,("cli_nt_setup_creds: auth%d challenge failed %s\n", level, nt_errstr(result)));
+       if (!NT_STATUS_IS_OK(result)) {
+                DEBUG(1,("cli_nt_setup_creds: auth2 challenge failed %s\n",
+                        nt_errstr(result)));
+        }
 
         return result;
 }
@@ -358,23 +257,24 @@ file.  They should be combined at some stage.  )-:
 
 static void gen_next_creds( struct cli_state *cli, DOM_CRED *new_clnt_cred)
 {
-       /*
-        * Create the new client credentials.
-        */
-       
-       cli->clnt_cred.timestamp.time = time(NULL);
-       
-       memcpy(new_clnt_cred, &cli->clnt_cred, sizeof(*new_clnt_cred));
+  /*
+   * Create the new client credentials.
+   */
+
+  cli->clnt_cred.timestamp.time = time(NULL);
+
+  memcpy(new_clnt_cred, &cli->clnt_cred, sizeof(*new_clnt_cred));
+
+  /* Calculate the new credentials. */
+  cred_create(cli->sess_key, &(cli->clnt_cred.challenge),
+              new_clnt_cred->timestamp, &(new_clnt_cred->challenge));
 
-       /* Calculate the new credentials. */
-       cred_create(cli->sess_key, &(cli->clnt_cred.challenge),
-                   new_clnt_cred->timestamp, &(new_clnt_cred->challenge));
 }
 
 /* Sam synchronisation */
 
 NTSTATUS cli_netlogon_sam_sync(struct cli_state *cli, TALLOC_CTX *mem_ctx, DOM_CRED *ret_creds,
-                               uint32 database_id, uint32 next_rid, uint32 *num_deltas,
+                               uint32 database_id, uint32 *num_deltas,
                                SAM_DELTA_HDR **hdr_deltas, 
                                SAM_DELTA_CTR **deltas)
 {
@@ -397,7 +297,7 @@ NTSTATUS cli_netlogon_sam_sync(struct cli_state *cli, TALLOC_CTX *mem_ctx, DOM_C
         gen_next_creds(cli, &clnt_creds);
 
        init_net_q_sam_sync(&q, cli->srv_name_slash, cli->clnt_name_slash + 2,
-                            &clnt_creds, ret_creds, database_id, next_rid);
+                            &clnt_creds, ret_creds, database_id);
 
        /* Marshall data and send request */
 
index 0416ed3b9ba44480559f382f0c28fe8cdb20563e..eae6be512825ef37c7d675fdcfd81511e0343f58 100644 (file)
@@ -354,7 +354,7 @@ static BOOL rpc_api_pipe(struct cli_state *cli, uint16 cmd, prs_struct *data, pr
        if (!cli_api_pipe(cli, "\\PIPE\\",
                  setup, 2, 0,                     /* Setup, length, max */
                  NULL, 0, 0,                      /* Params, length, max */
-                 pdata, data_len, 1024,           /* data, length, max */                  
+                 pdata, data_len, data_len,       /* data, length, max */                  
                  &rparam, &rparam_len,            /* return params, len */
                  &prdata, &rdata_len))            /* return data, len */
        {
index ca24d95e33628bdeaf6511c96d7aeea17ece24b2..18e17758d6d9c963e9477f562f7625bb62424f2c 100644 (file)
@@ -393,7 +393,7 @@ WERROR cli_spoolss_close_printer(struct cli_state *cli, TALLOC_CTX *mem_ctx,
 
 WERROR cli_spoolss_enum_printers(struct cli_state *cli, TALLOC_CTX *mem_ctx,
                                 uint32 offered, uint32 *needed,
-                                char *name, uint32 flags, uint32 level,
+                                uint32 flags, uint32 level,
                                 uint32 *num_printers, PRINTER_INFO_CTR *ctr)
 {
        prs_struct qbuf, rbuf;
@@ -401,10 +401,14 @@ WERROR cli_spoolss_enum_printers(struct cli_state *cli, TALLOC_CTX *mem_ctx,
         SPOOL_R_ENUMPRINTERS r;
        NEW_BUFFER buffer;
        WERROR result = W_ERROR(ERRgeneral);
+       fstring server;
 
        ZERO_STRUCT(q);
        ZERO_STRUCT(r);
 
+        slprintf (server, sizeof(fstring)-1, "\\\\%s", cli->desthost);
+        strupper (server);
+       
        /* Initialise input parameters */
 
        init_buffer(&buffer, offered, mem_ctx);
@@ -412,7 +416,7 @@ WERROR cli_spoolss_enum_printers(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
        prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
 
-       make_spoolss_q_enumprinters(&q, flags, name, level, &buffer, 
+       make_spoolss_q_enumprinters(&q, flags, server, level, &buffer, 
                                    offered);
 
        /* Marshall data and send request */
@@ -661,8 +665,7 @@ WERROR cli_spoolss_setprinter(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
        prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
                
-       if (!make_spoolss_q_setprinter(mem_ctx, &q, pol, level, ctr, command))
-               goto done;
+       make_spoolss_q_setprinter(mem_ctx, &q, pol, level, ctr, command);
 
        /* Marshall data and send request */
 
@@ -768,9 +771,6 @@ WERROR cli_spoolss_getprinterdriver(struct cli_state *cli,
        case 3:
                decode_printer_driver_3(mem_ctx, r.buffer, 1, &ctr->info3);
                break;
-       default:
-               DEBUG(10, ("cli_spoolss_getprinterdriver: unknown info level %d", level));
-               return WERR_UNKNOWN_LEVEL;
        }
 
  done:
@@ -852,10 +852,6 @@ WERROR cli_spoolss_enumprinterdrivers (struct cli_state *cli,
                case 3:
                        decode_printer_driver_3(mem_ctx, r.buffer, r.returned, &ctr->info3);
                        break;
-               default:
-                       DEBUG(10, ("cli_spoolss_enumprinterdrivers: unknown info level %d\n",
-                                  level));
-                       return WERR_UNKNOWN_LEVEL;
                }
        }
 
@@ -1336,16 +1332,8 @@ WERROR cli_spoolss_getform(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        if (needed)
                *needed = r.needed;
 
-       if (W_ERROR_IS_OK(result)) {
-               switch(level) {
-               case 1:
-                       smb_io_form_1("", r.buffer, form, 0);
-                       break;
-               default:
-                       DEBUG(10, ("cli_spoolss_getform: unknown info level %d", level));
-                       return WERR_UNKNOWN_LEVEL;
-               }
-       }
+       if (W_ERROR_IS_OK(result)) 
+               smb_io_form_1("", r.buffer, form, 0);
 
  done:
        prs_mem_free(&qbuf);
@@ -1568,11 +1556,11 @@ WERROR cli_spoolss_enumjobs(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        switch(level) {
        case 1:
                decode_jobs_1(mem_ctx, r.buffer, r.returned,
-                             &ctr->job.job_info_1);
+                               ctr->job.job_info_1);
                break;
        case 2:
                decode_jobs_2(mem_ctx, r.buffer, r.returned,
-                             &ctr->job.job_info_2);
+                               ctr->job.job_info_2);
                break;
        default:
                DEBUG(3, ("unsupported info level %d", level));
@@ -1681,10 +1669,10 @@ WERROR cli_spoolss_getjob(struct cli_state *cli, TALLOC_CTX *mem_ctx,
 
        switch(level) {
        case 1:
-               decode_jobs_1(mem_ctx, r.buffer, 1, &ctr->job.job_info_1);
+               decode_jobs_1(mem_ctx, r.buffer, 1, ctr->job.job_info_1);
                break;
        case 2:
-               decode_jobs_2(mem_ctx, r.buffer, 1, &ctr->job.job_info_2);
+               decode_jobs_2(mem_ctx, r.buffer, 1, ctr->job.job_info_2);
                break;
        default:
                DEBUG(3, ("unsupported info level %d", level));
@@ -1890,7 +1878,8 @@ WERROR cli_spoolss_enddocprinter(struct cli_state *cli, TALLOC_CTX *mem_ctx,
 WERROR cli_spoolss_getprinterdata(struct cli_state *cli, TALLOC_CTX *mem_ctx,
                                  uint32 offered, uint32 *needed,
                                  POLICY_HND *hnd, char *valuename, 
-                                 REGISTRY_VALUE *value)
+                                 uint32 *data_type, char **data, 
+                                 uint32 *data_size)
 {
        prs_struct qbuf, rbuf;
        SPOOL_Q_GETPRINTERDATA q;
@@ -1930,63 +1919,16 @@ WERROR cli_spoolss_getprinterdata(struct cli_state *cli, TALLOC_CTX *mem_ctx,
 
        /* Return output parameters */
 
-       value->data_p = talloc_memdup(mem_ctx, r.data, r.needed);
-       value->type = r.type;
-       value->size = r.size;
-
- done:
-       prs_mem_free(&qbuf);
-       prs_mem_free(&rbuf);
-
-       return result;
-}
-
-WERROR cli_spoolss_getprinterdataex(struct cli_state *cli, TALLOC_CTX *mem_ctx,
-                                   uint32 offered, uint32 *needed,
-                                   POLICY_HND *hnd, char *keyname, 
-                                   char *valuename, REGISTRY_VALUE *value)
-{
-       prs_struct qbuf, rbuf;
-       SPOOL_Q_GETPRINTERDATAEX q;
-       SPOOL_R_GETPRINTERDATAEX r;
-       WERROR result = W_ERROR(ERRgeneral);
-
-       ZERO_STRUCT(q);
-       ZERO_STRUCT(r);
-
-       /* Initialise parse structures */
-
-       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
-       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
-
-       /* Initialise input parameters */
-
-        make_spoolss_q_getprinterdataex(&q, hnd, keyname, valuename, offered);
-
-       /* Marshall data and send request */
-
-       if (!spoolss_io_q_getprinterdataex("", &q, &qbuf, 0) ||
-           !rpc_api_pipe_req(cli, SPOOLSS_GETPRINTERDATAEX, &qbuf, &rbuf))
-               goto done;
-
-       /* Unmarshall response */
-
-       if (!spoolss_io_r_getprinterdataex("", &r, &rbuf, 0))
-               goto done;
-       
-       result = r.status;
-
-       if (needed)
-               *needed = r.needed;
+       if (data_type)
+               *data_type = r.type;
 
-       if (!W_ERROR_IS_OK(r.status))
-               goto done;      
-
-       /* Return output parameters */
+       if (data) {
+               *data = (char *)talloc(mem_ctx, r.needed);
+               memcpy(*data, r.data, r.needed);
+       }
 
-       value->data_p = talloc_memdup(mem_ctx, r.data, r.needed);
-       value->type = r.type;
-       value->size = r.needed;
+       if (data_size) 
+               *data_size = r.needed;
 
  done:
        prs_mem_free(&qbuf);
@@ -1998,7 +1940,9 @@ WERROR cli_spoolss_getprinterdataex(struct cli_state *cli, TALLOC_CTX *mem_ctx,
 /* Set printer data */
 
 WERROR cli_spoolss_setprinterdata(struct cli_state *cli, TALLOC_CTX *mem_ctx,
-                                 POLICY_HND *hnd, REGISTRY_VALUE *value)
+                                 POLICY_HND *hnd, char *value, 
+                                 uint32 data_type, char *data, 
+                                 uint32 data_size)
 {
        prs_struct qbuf, rbuf;
        SPOOL_Q_SETPRINTERDATA q;
@@ -2015,8 +1959,7 @@ WERROR cli_spoolss_setprinterdata(struct cli_state *cli, TALLOC_CTX *mem_ctx,
 
        /* Initialise input parameters */
 
-        make_spoolss_q_setprinterdata(
-               &q, hnd, value->valuename, value->type, value->data_p, value->size);
+        make_spoolss_q_setprinterdata(&q, hnd, value, data, data_size);
 
        /* Marshall data and send request */
 
@@ -2041,59 +1984,14 @@ WERROR cli_spoolss_setprinterdata(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        return result;
 }
 
-WERROR cli_spoolss_setprinterdataex(struct cli_state *cli, TALLOC_CTX *mem_ctx,
-                                   POLICY_HND *hnd, char *keyname, 
-                                   REGISTRY_VALUE *value)
-{
-       prs_struct qbuf, rbuf;
-       SPOOL_Q_SETPRINTERDATAEX q;
-       SPOOL_R_SETPRINTERDATAEX r;
-       WERROR result = W_ERROR(ERRgeneral);
-
-       ZERO_STRUCT(q);
-       ZERO_STRUCT(r);
-
-       /* Initialise parse structures */
-
-       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
-       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
-
-       /* Initialise input parameters */
-
-        make_spoolss_q_setprinterdataex(
-               &q, hnd, keyname, value->valuename, value->type, value->data_p, 
-               value->size);
-
-       /* Marshall data and send request */
-
-       if (!spoolss_io_q_setprinterdataex("", &q, &qbuf, 0) ||
-           !rpc_api_pipe_req(cli, SPOOLSS_SETPRINTERDATAEX, &qbuf, &rbuf))
-               goto done;
-
-       /* Unmarshall response */
-
-       if (!spoolss_io_r_setprinterdataex("", &r, &rbuf, 0))
-               goto done;
-       
-       result = r.status;
-
-       if (!W_ERROR_IS_OK(r.status))
-               goto done;      
-
- done:
-       prs_mem_free(&qbuf);
-       prs_mem_free(&rbuf);
-
-       return result;
-}
-
 /* Enum printer data */
 
 WERROR cli_spoolss_enumprinterdata(struct cli_state *cli, TALLOC_CTX *mem_ctx,
                                   POLICY_HND *hnd, uint32 ndx,
                                   uint32 value_offered, uint32 data_offered,
                                   uint32 *value_needed, uint32 *data_needed,
-                                  REGISTRY_VALUE *value)
+                                  char **value, uint32 *data_type, char **data, 
+                                  uint32 *data_size)
 {
        prs_struct qbuf, rbuf;
        SPOOL_Q_ENUMPRINTERDATA q;
@@ -2129,83 +2027,30 @@ WERROR cli_spoolss_enumprinterdata(struct cli_state *cli, TALLOC_CTX *mem_ctx,
                goto done;
 
        /* Return data */
-       
+
        if (value_needed)
                *value_needed = r.realvaluesize;
 
        if (data_needed)
                *data_needed = r.realdatasize;
 
+       if (data_type) 
+               *data_type = r.type;
+
        if (value) {
-               rpcstr_pull(value->valuename, r.value, sizeof(value->valuename), -1,
+               fstring the_value;
+
+               rpcstr_pull(the_value, r.value, sizeof(the_value), -1, 
                            STR_TERMINATE);
-               value->data_p = talloc_memdup(mem_ctx, r.data, r.realdatasize);
-               value->type = r.type;
-               value->size = r.realdatasize;
+               
+               *value = talloc_strdup(mem_ctx, the_value);
        }
 
- done:
-       prs_mem_free(&qbuf);
-       prs_mem_free(&rbuf);
-
-       return result;
-}
-
-WERROR cli_spoolss_enumprinterdataex(struct cli_state *cli, TALLOC_CTX *mem_ctx,
-                                    uint32 offered, uint32 *needed,
-                                    POLICY_HND *hnd, char *keyname, 
-                                    REGVAL_CTR *ctr)
-{
-       prs_struct qbuf, rbuf;
-       SPOOL_Q_ENUMPRINTERDATAEX q;
-       SPOOL_R_ENUMPRINTERDATAEX r;
-       WERROR result = W_ERROR(ERRgeneral);
-       int i;
-
-       ZERO_STRUCT(q);
-       ZERO_STRUCT(r);
-
-       /* Initialise parse structures */
+       if (data)
+               *data = talloc_memdup(mem_ctx, r.data, r.realdatasize);
 
-       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
-       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
-
-       /* Initialise input parameters */
-
-        make_spoolss_q_enumprinterdataex(&q, hnd, keyname, offered);
-
-       /* Marshall data and send request */
-
-       if (!spoolss_io_q_enumprinterdataex("", &q, &qbuf, 0) ||
-           !rpc_api_pipe_req(cli, SPOOLSS_ENUMPRINTERDATAEX, &qbuf, &rbuf))
-               goto done;
-
-       /* Unmarshall response */
-
-       if (!spoolss_io_r_enumprinterdataex("", &r, &rbuf, 0))
-               goto done;
-       
-       result = r.status;
-       
-       if (needed)
-               *needed = r.needed;
-       
-       if (!W_ERROR_IS_OK(r.status))
-               goto done;
-
-       /* Return data */
-
-       ZERO_STRUCTP(ctr);
-       regval_ctr_init(ctr);
-
-       for (i = 0; i < r.returned; i++) {
-               PRINTER_ENUM_VALUES *v = &r.ctr.values[i];
-               fstring name;
-
-               rpcstr_pull(name, v->valuename.buffer, sizeof(name), -1, 
-                           STR_TERMINATE);
-               regval_ctr_addvalue(ctr, name, v->type, v->data, v->data_len);
-       }
+       if (data_size)
+               *data_size = r.realdatasize;
 
  done:
        prs_mem_free(&qbuf);
@@ -2308,48 +2153,4 @@ WERROR cli_spoolss_deleteprinterdata(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        return result;
 }
 
-WERROR cli_spoolss_deleteprinterdataex(struct cli_state *cli, TALLOC_CTX *mem_ctx,
-                                      POLICY_HND *hnd, char *keyname, 
-                                      char *valuename)
-{
-       prs_struct qbuf, rbuf;
-       SPOOL_Q_DELETEPRINTERDATAEX q;
-       SPOOL_R_DELETEPRINTERDATAEX r;
-       WERROR result = W_ERROR(ERRgeneral);
-
-       ZERO_STRUCT(q);
-       ZERO_STRUCT(r);
-
-       /* Initialise parse structures */
-
-       prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
-       prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
-
-       /* Initialise input parameters */
-
-        make_spoolss_q_deleteprinterdataex(&q, hnd, keyname, valuename);
-
-       /* Marshall data and send request */
-
-       if (!spoolss_io_q_deleteprinterdataex("", &q, &qbuf, 0) ||
-           !rpc_api_pipe_req(cli, SPOOLSS_DELETEPRINTERDATAEX, &qbuf, &rbuf))
-               goto done;
-
-       /* Unmarshall response */
-
-       if (!spoolss_io_r_deleteprinterdataex("", &r, &rbuf, 0))
-               goto done;
-       
-       result = r.status;
-
-       if (!W_ERROR_IS_OK(r.status))
-               goto done;      
-
- done:
-       prs_mem_free(&qbuf);
-       prs_mem_free(&rbuf);
-
-       return result;
-}
-
 /** @} **/
index d07ace8e0cd4b7042882cd4b6d646d270738cfb0..f03046558ee5a15ef5190928ac7c76f9736fd2bd 100644 (file)
@@ -222,9 +222,6 @@ done:
        return result;
 }
 
-/*********************************************************************
- *********************************************************************/
 WERROR cli_spoolss_rffpcnex(struct cli_state *cli, TALLOC_CTX *mem_ctx,
                            POLICY_HND *pol, uint32 flags, uint32 options,
                            char *localmachine, uint32 printerlocal,
diff --git a/source3/rpc_client/msrpc_spoolss.c b/source3/rpc_client/msrpc_spoolss.c
new file mode 100644 (file)
index 0000000..56c7073
--- /dev/null
@@ -0,0 +1,812 @@
+/* 
+   Unix SMB/CIFS implementation.
+   NT Domain Authentication SMB / MSRPC client
+   Copyright (C) Andrew Tridgell              1994-2000
+   Copyright (C) Luke Kenneth Casson Leighton 1996-2000
+   Copyright (C) Jean-Francois Micouleau      1999-2000
+   
+   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., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+#include "nterr.h"
+#include "rpc_parse.h"
+#include "rpcclient.h"
+
+#undef DBGC_CLASS
+#define DBGC_CLASS DBGC_RPC_CLI
+
+#define DEBUG_TESTING
+
+extern FILE* out_hnd;
+
+extern struct user_creds *usr_creds;
+
+/********************************************************************
+initialize a spoolss NEW_BUFFER.
+********************************************************************/
+void init_buffer(NEW_BUFFER *buffer, uint32 size, TALLOC_CTX *ctx)
+{
+       buffer->ptr = (size!=0)? 1:0;
+       buffer->size=size;
+       buffer->string_at_end=size;
+       prs_init(&buffer->prs, size, ctx, MARSHALL);
+       buffer->struct_start = prs_offset(&buffer->prs);
+}
+
+static void decode_printer_info_0(NEW_BUFFER *buffer, uint32 returned, 
+                                 PRINTER_INFO_0 **info)
+{
+        uint32 i;
+        PRINTER_INFO_0  *inf;
+
+        inf=(PRINTER_INFO_0 *)malloc(returned*sizeof(PRINTER_INFO_0));
+
+        buffer->prs.data_offset=0;
+
+        for (i=0; i<returned; i++) {
+                new_smb_io_printer_info_0("", buffer, &(inf[i]), 0);
+        }
+
+        *info=inf;
+}
+
+static void decode_printer_info_1(NEW_BUFFER *buffer, uint32 returned, 
+                                 PRINTER_INFO_1 **info)
+{
+        uint32 i;
+        PRINTER_INFO_1  *inf;
+
+        inf=(PRINTER_INFO_1 *)malloc(returned*sizeof(PRINTER_INFO_1));
+
+        buffer->prs.data_offset=0;
+
+        for (i=0; i<returned; i++) {
+                new_smb_io_printer_info_1("", buffer, &(inf[i]), 0);
+        }
+
+        *info=inf;
+}
+
+static void decode_printer_info_2(NEW_BUFFER *buffer, uint32 returned, 
+                                 PRINTER_INFO_2 **info)
+{
+        uint32 i;
+        PRINTER_INFO_2  *inf;
+
+        inf=(PRINTER_INFO_2 *)malloc(returned*sizeof(PRINTER_INFO_2));
+
+        buffer->prs.data_offset=0;
+
+        for (i=0; i<returned; i++) {
+               /* a little initialization as we go */
+               inf[i].secdesc = NULL;
+                new_smb_io_printer_info_2("", buffer, &(inf[i]), 0);
+        }
+
+        *info=inf;
+}
+
+static void decode_printer_info_3(NEW_BUFFER *buffer, uint32 returned, 
+                                 PRINTER_INFO_3 **info)
+{
+        uint32 i;
+        PRINTER_INFO_3  *inf;
+
+        inf=(PRINTER_INFO_3 *)malloc(returned*sizeof(PRINTER_INFO_3));
+
+        buffer->prs.data_offset=0;
+
+        for (i=0; i<returned; i++) {
+                new_smb_io_printer_info_3("", buffer, &(inf[i]), 0);
+        }
+
+        *info=inf;
+}
+
+static void decode_printer_driver_1(NEW_BUFFER *buffer, uint32 returned, 
+                                   DRIVER_INFO_1 **info)
+{
+        uint32 i;
+        DRIVER_INFO_1 *inf;
+
+        inf=(DRIVER_INFO_1 *)malloc(returned*sizeof(DRIVER_INFO_1));
+
+        buffer->prs.data_offset=0;
+
+        for (i=0; i<returned; i++) {
+                new_smb_io_printer_driver_info_1("", buffer, &(inf[i]), 0);
+        }
+
+        *info=inf;
+}
+
+static void decode_printer_driver_2(NEW_BUFFER *buffer, uint32 returned, 
+                                   DRIVER_INFO_2 **info)
+{
+        uint32 i;
+        DRIVER_INFO_2 *inf;
+
+        inf=(DRIVER_INFO_2 *)malloc(returned*sizeof(DRIVER_INFO_2));
+
+        buffer->prs.data_offset=0;
+
+        for (i=0; i<returned; i++) {
+                new_smb_io_printer_driver_info_2("", buffer, &(inf[i]), 0);
+        }
+
+        *info=inf;
+}
+
+static void decode_printer_driver_3(NEW_BUFFER *buffer, uint32 returned, 
+                                   DRIVER_INFO_3 **info)
+{
+        uint32 i;
+        DRIVER_INFO_3 *inf;
+
+        inf=(DRIVER_INFO_3 *)malloc(returned*sizeof(DRIVER_INFO_3));
+
+        buffer->prs.data_offset=0;
+
+        for (i=0; i<returned; i++) {
+                new_smb_io_printer_driver_info_3("", buffer, &(inf[i]), 0);
+        }
+
+        *info=inf;
+}
+
+static void decode_printerdriverdir_info_1(NEW_BUFFER *buffer, DRIVER_DIRECTORY_1 *info)
+{
+/*      DRIVER_DIRECTORY_1 *inf;
+
+        inf=(DRIVER_DIRECTORY_1 *)malloc(returned*sizeof(DRIVER_DIRECTORY_1));
+*/
+        prs_set_offset(&buffer->prs, 0);
+
+        new_smb_io_driverdir_1("", buffer, info, 0);
+
+/*      *info=inf;*/
+}
+
+/**********************************************************************
+ Decode a PORT_INFO_1 struct from a NEW_BUFFER 
+**********************************************************************/
+void decode_port_info_1(NEW_BUFFER *buffer, uint32 returned, 
+                       PORT_INFO_1 **info)
+{
+        uint32 i;
+        PORT_INFO_1 *inf;
+
+        inf=(PORT_INFO_1*)malloc(returned*sizeof(PORT_INFO_1));
+
+        prs_set_offset(&buffer->prs, 0);
+
+        for (i=0; i<returned; i++) {
+                new_smb_io_port_info_1("", buffer, &(inf[i]), 0);
+        }
+
+        *info=inf;
+}
+
+/**********************************************************************
+ Decode a PORT_INFO_2 struct from a NEW_BUFFER 
+**********************************************************************/
+void decode_port_info_2(NEW_BUFFER *buffer, uint32 returned, 
+                       PORT_INFO_2 **info)
+{
+        uint32 i;
+        PORT_INFO_2 *inf;
+
+        inf=(PORT_INFO_2*)malloc(returned*sizeof(PORT_INFO_2));
+
+        prs_set_offset(&buffer->prs, 0);
+
+        for (i=0; i<returned; i++) {
+                new_smb_io_port_info_2("", buffer, &(inf[i]), 0);
+        }
+
+        *info=inf;
+}
+
+
+/****************************************************************************
+nt spoolss query
+****************************************************************************/
+BOOL msrpc_spoolss_enum_printers(char* srv_name, uint32 flags, 
+                                uint32 level, PRINTER_INFO_CTR ctr)
+{
+       NTSTATUS status;
+       NEW_BUFFER buffer;
+       uint32 needed;
+       uint32 returned;
+       TALLOC_CTX *mem_ctx = NULL;
+       
+       if ((mem_ctx=talloc_init()) == NULL)
+       {
+               DEBUG(0,("msrpc_spoolss_enum_printers: talloc_init failed!\n"));
+               return False;
+       }
+       init_buffer(&buffer, 0, mem_ctx);
+       
+       /* send a NULL buffer first */
+       status=spoolss_enum_printers(flags, srv_name, level, &buffer, 0, 
+                                    &needed, &returned);
+       
+       if (status==ERROR_INSUFFICIENT_BUFFER) {
+               init_buffer(&buffer, needed, mem_ctx);
+               status=spoolss_enum_printers(flags, srv_name, level, &buffer, 
+                                            needed, &needed, &returned);
+       }
+       
+       if (status!=NT_STATUS_OK)
+       {
+               DEBUG(0,("spoolss_enum_printers: %s\n", nt_errstr(status)));
+               if (mem_ctx)
+                       talloc_destroy(mem_ctx);
+               return False;
+       }
+               
+       /* is there anything to process? */
+       if (returned != 0)
+       {
+               switch (level) {
+               case 1:
+                       decode_printer_info_1(&buffer, returned, &(ctr.printers_1));
+                       break;
+               case 2:
+                       decode_printer_info_2(&buffer, returned, &(ctr.printers_2));
+                       break;
+               case 3:
+                       decode_printer_info_3(&buffer, returned, &(ctr.printers_3));
+                       break;
+               }               
+
+               display_printer_info_ctr(out_hnd, ACTION_HEADER   , level, returned, ctr);
+               display_printer_info_ctr(out_hnd, ACTION_ENUMERATE, level, returned, ctr);
+               display_printer_info_ctr(out_hnd, ACTION_FOOTER   , level, returned, ctr);
+       }
+
+       if (mem_ctx)
+               talloc_destroy(mem_ctx);
+               
+       return True;
+}
+
+/****************************************************************************
+nt spoolss query
+****************************************************************************/
+BOOL msrpc_spoolss_enum_ports(char* srv_name, 
+                                uint32 level, PORT_INFO_CTR *ctr)
+{
+       NTSTATUS status;
+       NEW_BUFFER buffer;
+       uint32 needed;
+       uint32 returned;
+       TALLOC_CTX *mem_ctx = NULL;
+       
+       if ((mem_ctx=talloc_init()) == NULL)
+       {
+               DEBUG(0,("msrpc_spoolss_enum_ports: talloc_init failed!\n"));
+               return False;
+       }
+       
+       init_buffer(&buffer, 0, mem_ctx);
+       
+       /* send a NULL buffer first */
+       status=spoolss_enum_ports(srv_name, level, &buffer, 0, 
+                                    &needed, &returned);
+       
+       if (status==ERROR_INSUFFICIENT_BUFFER) {
+               init_buffer(&buffer, needed, mem_ctx);
+               status=spoolss_enum_ports(srv_name, level, &buffer, 
+                                         needed, &needed, &returned);
+       }
+       
+       report(out_hnd, "\tstatus:[%d (%x)]\n", status, status);
+       
+       if (status!=NT_STATUS_OK)
+       {
+               if (mem_ctx)
+                       talloc_destroy(mem_ctx);
+               return False;
+       }
+               
+       /* is there anything to process? */
+       if (returned != 0)
+       {
+               switch (level) {
+               case 1:
+                       decode_port_info_1(&buffer, returned, &ctr->port.info_1);
+                       break;
+               case 2:
+                       decode_port_info_2(&buffer, returned, &ctr->port.info_2);
+                       break;
+               default:
+                       DEBUG(0,("Unable to decode unknown PORT_INFO_%d\n", level));
+                       break;
+               }               
+
+               display_port_info_ctr(out_hnd, ACTION_HEADER   , level, returned, ctr);
+               display_port_info_ctr(out_hnd, ACTION_ENUMERATE, level, returned, ctr);
+               display_port_info_ctr(out_hnd, ACTION_FOOTER   , level, returned, ctr);
+       }
+       if (mem_ctx)
+               talloc_destroy(mem_ctx);
+
+
+
+       return True;
+}
+
+/****************************************************************************
+nt spoolss query
+****************************************************************************/
+uint32 msrpc_spoolss_getprinterdata( const char* printer_name,
+                                const char* station,
+                                const char* user_name,
+                                const char* value_name,
+                                uint32 *type,
+                                NEW_BUFFER *buffer,
+                                void *fn)
+{
+        POLICY_HND hnd;
+        NTSTATUS status;
+        uint32 needed;
+        uint32 size;
+        char *data;
+        UNISTR2 uni_val_name;
+       TALLOC_CTX *mem_ctx = NULL;
+       
+        DEBUG(4,("spoolgetdata - printer: %s server: %s user: %s value: %s\n",
+                printer_name, station, user_name, value_name));
+
+        if(!spoolss_open_printer_ex( printer_name, 0, 0, station, user_name,
+                                &hnd))
+        {
+                return NT_STATUS_ACCESS_DENIED;
+        }
+
+        init_unistr2(&uni_val_name, value_name, 0);
+        size = 0;
+        data = NULL;
+
+       if ((mem_ctx=talloc_init()) == NULL)
+       {
+               DEBUG(0,("msrpc_spoolss_getprinterdata: talloc_init failed!\n"));
+               return False;
+       }
+        init_buffer(buffer, size, mem_ctx);
+
+        status = spoolss_getprinterdata(&hnd, &uni_val_name, size, type, &size,
+                        (unsigned char *)data, &needed);
+
+        if (status == ERROR_INSUFFICIENT_BUFFER)
+        {
+                size = needed;
+                init_buffer(buffer, size, mem_ctx);
+                data = prs_data_p(&buffer->prs);
+                status = spoolss_getprinterdata(&hnd, &uni_val_name,
+                                size, type, &size,
+                                (unsigned char *)data, &needed);
+        }
+       
+       if (mem_ctx)
+               talloc_destroy(mem_ctx);
+
+        if (status != NT_STATUS_OK) 
+       {
+                if (!spoolss_closeprinter(&hnd))
+                        return NT_STATUS_ACCESS_DENIED;
+                return status;
+        }
+
+#if  0
+        if (fn != NULL)
+                fn(printer_name, station, level, returned, *ctr);
+#endif
+
+        return status;
+}
+
+/****************************************************************************
+nt spoolss query
+****************************************************************************/
+BOOL msrpc_spoolss_enum_jobs( const char* printer_name,
+                                const char* station, const char* user_name,
+                                uint32 level,
+                                void ***ctr, JOB_INFO_FN(fn))
+{
+        POLICY_HND hnd;
+        NTSTATUS status;
+        NEW_BUFFER buffer;
+        uint32 needed;
+        uint32 returned;
+        uint32 firstjob=0;
+        uint32 numofjobs=0xffff;
+       TALLOC_CTX *mem_ctx = NULL;
+       
+        DEBUG(4,("spoolopen - printer: %s server: %s user: %s\n",
+                printer_name, station, user_name));
+
+        if(!spoolss_open_printer_ex( printer_name, 0, 0, station, user_name, &hnd))
+                return False;
+
+       if ((mem_ctx=talloc_init()) == NULL)
+       {
+               DEBUG(0,("msrpc_spoolss_enum_jobs: talloc_init failed!\n"));
+               return False;
+       }
+        init_buffer(&buffer, 0, mem_ctx);
+        status = spoolss_enum_jobs(&hnd, firstjob, numofjobs, level, 
+                                  &buffer, 0, &needed, &returned);
+
+        if (status == ERROR_INSUFFICIENT_BUFFER)
+        {
+                init_buffer(&buffer, needed, mem_ctx);
+                status = spoolss_enum_jobs( &hnd, firstjob, numofjobs, level, 
+                                           &buffer, needed, &needed, &returned);
+        }
+
+       if (mem_ctx)
+               talloc_destroy(mem_ctx);
+               
+        if (status!=NT_STATUS_OK) {
+                if (!spoolss_closeprinter(&hnd))
+                        return False;
+                return False;
+        }
+
+        if (fn != NULL)
+                fn(printer_name, station, level, returned, *ctr);
+
+        return True;
+}
+
+
+/****************************************************************************
+nt spoolss query
+****************************************************************************/
+BOOL msrpc_spoolss_enum_printerdata( const char* printer_name, 
+               const char* station, const char* user_name )
+{
+       POLICY_HND hnd;
+       NTSTATUS status;
+       uint32 idx;
+       uint32 valuelen;
+       uint16 *value;
+       uint32 rvaluelen;
+       uint32 type;
+       uint32 datalen;
+       uint8  *data;
+       uint32 rdatalen;
+       uint32 maxvaluelen;
+       uint32 maxdatalen;
+       
+       DEBUG(4,("msrpc_spoolss_enum_printerdata - printer: %s\n", printer_name));
+
+       if(!spoolss_open_printer_ex( printer_name, 0, 0, station, user_name, &hnd))
+               return False;
+
+       
+       idx=0;
+       valuelen=0;
+       rvaluelen=0;
+       type=0;
+       datalen=0;
+       rdatalen=0;
+       
+       status = spoolss_enum_printerdata(&hnd, idx, &valuelen, value, 
+                                         &rvaluelen, &type, &datalen, 
+                                         data, &rdatalen);
+
+       DEBUG(4,("spoolenum_printerdata - got size: biggest value:[%d], biggest data:[%d]\n", rvaluelen, rdatalen));
+
+       maxvaluelen=valuelen=rvaluelen;
+       maxdatalen=datalen=rdatalen;
+
+       value=(uint16 *)malloc(valuelen*sizeof(uint16));
+       data=(uint8 *)malloc(datalen*sizeof(uint8));
+
+       display_printer_enumdata(out_hnd, ACTION_HEADER, idx, valuelen, 
+                                value, rvaluelen, type, datalen, data, rdatalen);
+       
+       do {
+               valuelen=maxvaluelen;
+               datalen=maxdatalen;
+
+               status = spoolss_enum_printerdata(&hnd, idx, &valuelen, 
+                                                 value, &rvaluelen, &type, 
+                                                 &datalen, data, &rdatalen);
+               display_printer_enumdata(out_hnd, ACTION_ENUMERATE, idx, 
+                                        valuelen, value, rvaluelen, type, 
+                                        datalen, data, rdatalen);
+               idx++;
+
+       } while (status != 0x0103); /* NO_MORE_ITEMS */
+
+       display_printer_enumdata(out_hnd, ACTION_FOOTER, idx, valuelen, 
+                                value, rvaluelen, type, datalen, data, rdatalen);
+
+       
+       if (status!=NT_STATUS_OK) {
+               /* 
+                * the check on this if statement is redundant
+                * since is the status is bad we're going to 
+                * return False anyways.  The caller will be 
+                * unable to determine if there really was a problem
+                * with the spoolss_closeprinter() call  --jerry
+                */
+               spoolss_closeprinter(&hnd);
+               return False;
+       }
+       
+       return True;
+}
+
+/****************************************************************************
+nt spoolss query
+****************************************************************************/
+BOOL msrpc_spoolss_getprinter( const char* printer_name, const uint32 level,
+                const char* station, const char* user_name,
+                PRINTER_INFO_CTR ctr)
+{
+        POLICY_HND hnd;
+        NTSTATUS status=0;
+        NEW_BUFFER buffer;
+        uint32 needed=1000;
+       TALLOC_CTX *mem_ctx = NULL;
+       
+        DEBUG(4,("spoolenum_getprinter - printer: %s\n", printer_name));
+
+        if(!spoolss_open_printer_ex( printer_name, "", PRINTER_ALL_ACCESS, station, user_name, &hnd))
+                return False;
+
+       if ((mem_ctx=talloc_init()) == NULL)
+       {
+               DEBUG(0,("msrpc_spoolss_getprinter: talloc_init failed!\n"));
+               return False;
+       }
+        init_buffer(&buffer, needed, mem_ctx);
+
+        status = spoolss_getprinter(&hnd, level, &buffer, needed, &needed);
+
+        if (status==ERROR_INSUFFICIENT_BUFFER) {
+                init_buffer(&buffer, needed, mem_ctx);
+                status = spoolss_getprinter(&hnd, level, &buffer, needed, &needed);
+        }
+
+        report(out_hnd, "\tstatus:[%d (%x)]\n", status, status);
+
+        if (status!=NT_STATUS_OK)
+       {
+               if (mem_ctx)
+                       talloc_destroy(mem_ctx);
+                return False;
+       }
+
+        switch (level) {
+        case 0:
+                decode_printer_info_0(&buffer, 1, &(ctr.printers_0));
+                break;
+        case 1:
+                decode_printer_info_1(&buffer, 1, &(ctr.printers_1));
+                break;
+        case 2:
+                decode_printer_info_2(&buffer, 1, &(ctr.printers_2));
+                break;
+        case 3:
+                decode_printer_info_3(&buffer, 1, &(ctr.printers_3));
+                break;
+        }
+
+        display_printer_info_ctr(out_hnd, ACTION_HEADER   , level, 1, ctr);
+        display_printer_info_ctr(out_hnd, ACTION_ENUMERATE, level, 1, ctr);
+        display_printer_info_ctr(out_hnd, ACTION_FOOTER   , level, 1, ctr);
+
+       if (mem_ctx)
+               talloc_destroy(mem_ctx);
+
+        if (status!=NT_STATUS_OK) {
+                if (!spoolss_closeprinter(&hnd))
+                        return False;
+                return False;
+        }
+
+        return True;
+}
+
+/****************************************************************************
+nt spoolss query
+****************************************************************************/
+BOOL msrpc_spoolss_getprinterdriver( const char* printer_name,
+                const char *environment, const uint32 level,
+                const char* station, const char* user_name,
+                PRINTER_DRIVER_CTR ctr)
+{
+        POLICY_HND hnd;
+        NTSTATUS status=0;
+        NEW_BUFFER buffer;
+        uint32 needed;
+       TALLOC_CTX *mem_ctx = NULL;
+       
+        DEBUG(4,("msrpc_spoolss_enum_getprinterdriver - printer: %s\n", printer_name));
+
+        if(!spoolss_open_printer_ex( printer_name, "", PRINTER_ALL_ACCESS, station, user_name, &hnd))
+                return False;
+
+       if ((mem_ctx=talloc_init()) == NULL)
+       {
+               DEBUG(0,("msrpc_spoolss_getprinterdriver: talloc_init failed!\n"));
+               return False;
+       }
+        init_buffer(&buffer, 0, mem_ctx);
+
+        status = spoolss_getprinterdriver(&hnd, environment, level, &buffer, 0, &needed);
+
+        if (status==ERROR_INSUFFICIENT_BUFFER) {
+                init_buffer(&buffer, needed, mem_ctx);
+                status = spoolss_getprinterdriver(&hnd, environment, level, &buffer, needed, &needed);
+        }
+
+        /* report(out_hnd, "\tstatus:[%d (%x)]\n", status, status); */
+
+        if (status!=NT_STATUS_OK)
+       {
+               if (mem_ctx)
+                       talloc_destroy(mem_ctx);
+                return False;
+       }
+
+        switch (level) {
+               case 1:
+                       decode_printer_driver_1(&buffer, 1, &(ctr.info1));
+                       break;
+               case 2:
+                       decode_printer_driver_2(&buffer, 1, &(ctr.info2));
+                       break;
+               case 3:
+                       decode_printer_driver_3(&buffer, 1, &(ctr.info3));
+                       break;
+        }
+
+        display_printer_driver_ctr(out_hnd, ACTION_HEADER   , level, 1, ctr);
+        display_printer_driver_ctr(out_hnd, ACTION_ENUMERATE, level, 1, ctr);
+        display_printer_driver_ctr(out_hnd, ACTION_FOOTER   , level, 1, ctr);
+
+       if (mem_ctx)
+               talloc_destroy(mem_ctx);
+               
+        if (status!=NT_STATUS_OK) {
+                if (!spoolss_closeprinter(&hnd))
+                        return False;
+                return False;
+        }
+
+        return True;
+}
+
+/****************************************************************************
+nt spoolss query
+****************************************************************************/
+BOOL msrpc_spoolss_enumprinterdrivers( const char* srv_name,
+                const char *environment, const uint32 level,
+                PRINTER_DRIVER_CTR ctr)
+{
+        NTSTATUS status=0;
+        NEW_BUFFER buffer;
+        uint32 needed;
+        uint32 returned;
+       TALLOC_CTX *mem_ctx = NULL;
+       
+        DEBUG(4,("msrpc_spoolss_enum_enumprinterdrivers - server: %s\n", srv_name));
+
+       if ((mem_ctx=talloc_init()) == NULL)
+       {
+               DEBUG(0,("msrpc_spoolss_enumprinterdrivers: talloc_init failed!\n"));
+               return False;
+       }
+        init_buffer(&buffer, 0, mem_ctx);
+
+        status = spoolss_enum_printerdrivers(srv_name, environment,
+                                level, &buffer, 0, &needed, &returned);
+
+        if (status == ERROR_INSUFFICIENT_BUFFER)
+        {
+                init_buffer(&buffer, needed, mem_ctx);
+                status = spoolss_enum_printerdrivers( srv_name, environment,
+                                level, &buffer, needed, &needed, &returned);
+        }
+
+        report(out_hnd, "\tstatus:[%d (%x)]\n", status, status);
+
+        if (status!=NT_STATUS_OK)
+       {
+               if (mem_ctx)
+                       talloc_destroy(mem_ctx);
+                return False;
+       }
+
+        switch (level)
+        {
+                case 1:
+                        decode_printer_driver_1(&buffer, returned, &(ctr.info1));
+                        break;
+                case 2:
+                        decode_printer_driver_2(&buffer, returned, &(ctr.info2));
+                        break;
+                case 3:
+                        decode_printer_driver_3(&buffer, returned, &(ctr.info3));
+                        break;
+        }
+
+        display_printer_driver_ctr(out_hnd, ACTION_HEADER   , level, returned, ctr);
+        display_printer_driver_ctr(out_hnd, ACTION_ENUMERATE, level, returned, ctr);
+        display_printer_driver_ctr(out_hnd, ACTION_FOOTER   , level, returned, ctr);
+
+       if (mem_ctx)
+               talloc_destroy(mem_ctx);
+               
+        return True;
+}
+
+/****************************************************************************
+nt spoolss query
+****************************************************************************/
+BOOL msrpc_spoolss_getprinterdriverdir(char* srv_name, char* env_name, uint32 level, DRIVER_DIRECTORY_CTR ctr)
+{
+        NTSTATUS status;
+        NEW_BUFFER buffer;
+        uint32 needed;
+       TALLOC_CTX *mem_ctx = NULL;
+       
+       if ((mem_ctx=talloc_init()) == NULL)
+       {
+               DEBUG(0,("msrpc_spoolss_getprinterdriverdir: talloc_init failed!\n"));
+               return False;
+       }
+        init_buffer(&buffer, 0, mem_ctx);
+
+        /* send a NULL buffer first */
+        status=spoolss_getprinterdriverdir(srv_name, env_name, level, &buffer, 0, &needed);
+
+        if (status==ERROR_INSUFFICIENT_BUFFER) {
+                init_buffer(&buffer, needed, mem_ctx);
+                status=spoolss_getprinterdriverdir(srv_name, env_name, level, &buffer, needed, &needed);
+        }
+
+        report(out_hnd, "\tstatus:[%d (%x)]\n", status, status);
+
+        if (status!=NT_STATUS_OK)
+       {
+               if (mem_ctx)
+                       talloc_destroy(mem_ctx);
+                return False;
+       }
+
+        switch (level) {
+        case 1:
+                decode_printerdriverdir_info_1(&buffer, &(ctr.driver.info_1));
+                break;
+        }
+
+        display_printerdriverdir_info_ctr(out_hnd, ACTION_HEADER   , level, ctr);
+        display_printerdriverdir_info_ctr(out_hnd, ACTION_ENUMERATE, level, ctr);
+        display_printerdriverdir_info_ctr(out_hnd, ACTION_FOOTER   , level, ctr);
+       
+       if (mem_ctx)
+               talloc_destroy(mem_ctx);
+
+        return True;
+}
diff --git a/source3/rpc_client/ntclienttrust.c b/source3/rpc_client/ntclienttrust.c
new file mode 100644 (file)
index 0000000..284fd49
--- /dev/null
@@ -0,0 +1,157 @@
+/* 
+   Unix SMB/CIFS implementation.
+   NT Domain Authentication SMB / MSRPC client
+   Copyright (C) Andrew Tridgell 1994-1997
+   Copyright (C) Luke Kenneth Casson Leighton 1996-1997
+   
+   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., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+
+
+/************************************************************************
+ check workstation trust account status
+ ************************************************************************/
+BOOL trust_account_check(struct in_addr dest_ip, char *dest_host,
+                               char *hostname, char *domain, fstring mach_acct,
+                               fstring new_mach_pwd)
+{
+       pstring tmp;
+       fstring mach_pwd;
+       struct cli_state cli_trust;
+       uchar lm_owf_mach_pwd[16];
+       uchar nt_owf_mach_pwd[16];
+       uchar lm_sess_pwd[24];
+       uchar nt_sess_pwd[24];
+
+       BOOL right_error_code = False;
+       uint8 err_cls;
+       uint32 err_num;
+
+       char *start_mach_pwd;
+       char *change_mach_pwd;
+
+       /* initial machine password */
+       fstrcpy(mach_pwd, hostname);
+       strlower(mach_pwd);
+
+       slprintf(tmp, sizeof(tmp) - 1,"Enter Workstation Trust Account password for [%s].\nDefault is [%s].\nPassword:",
+                               mach_acct, mach_pwd);
+
+       start_mach_pwd = (char*)getpass(tmp);
+
+       if (start_mach_pwd[0] != 0)
+       {
+               fstrcpy(mach_pwd, start_mach_pwd);
+       }
+
+       slprintf(tmp, sizeof(tmp)-1, "Enter new Workstation Trust Account password for [%s]\nPress Return to leave at old value.\nNew Password:",
+                               mach_acct);
+
+       change_mach_pwd = (char*)getpass(tmp);
+
+       if (change_mach_pwd[0] != 0)
+       {
+               fstrcpy(new_mach_pwd, change_mach_pwd);
+       }
+       else
+       {
+               DEBUG(1,("trust_account_check: password change not requested\n"));
+               change_mach_pwd[0] = 0;
+       }
+
+       DEBUG(1,("initialise cli_trust connection\n"));
+
+       if (!cli_initialise(&cli_trust))
+       {
+               DEBUG(1,("cli_initialise failed for cli_trust\n"));
+               return False;
+       }
+
+       DEBUG(1,("server connect for cli_trust\n"));
+
+       if (!server_connect_init(&cli_trust, hostname, dest_ip, dest_host))
+       {
+               cli_error(&cli_trust, &err_cls, &err_num, NULL);
+               DEBUG(1,("server_connect_init failed (%s)\n", cli_errstr(&cli_trust)));
+
+               cli_shutdown(&cli_trust);
+               return False;
+       }
+
+       DEBUG(1,("server connect cli_trust succeeded\n"));
+
+       nt_lm_owf_gen(mach_pwd, nt_owf_mach_pwd, lm_owf_mach_pwd);
+
+       DEBUG(5,("generating nt owf from initial machine pwd: %s\n", mach_pwd));
+
+#ifdef DEBUG_PASSWORD
+       DEBUG(100,("client cryptkey: "));
+       dump_data(100, cli_trust.cryptkey, sizeof(cli_trust.cryptkey));
+#endif
+
+       SMBencrypt(nt_owf_mach_pwd, cli_trust.cryptkey, nt_sess_pwd);
+
+#ifdef DEBUG_PASSWORD
+       DEBUG(100,("nt_owf_mach_pwd: "));
+       dump_data(100, nt_owf_mach_pwd, sizeof(lm_owf_mach_pwd));
+       DEBUG(100,("nt_sess_pwd: "));
+       dump_data(100, nt_sess_pwd, sizeof(nt_sess_pwd));
+#endif
+
+       SMBencrypt(lm_owf_mach_pwd, cli_trust.cryptkey, lm_sess_pwd);
+
+#ifdef DEBUG_PASSWORD
+       DEBUG(100,("lm_owf_mach_pwd: "));
+       dump_data(100, lm_owf_mach_pwd, sizeof(lm_owf_mach_pwd));
+       DEBUG(100,("lm_sess_pwd: "));
+       dump_data(100, lm_sess_pwd, sizeof(lm_sess_pwd));
+#endif
+
+       right_error_code = False;
+
+       if (cli_session_setup(&cli_trust, mach_acct, 
+                       nt_owf_mach_pwd, sizeof(nt_owf_mach_pwd),
+                       nt_owf_mach_pwd, sizeof(nt_owf_mach_pwd), domain))
+       {
+               DEBUG(0,("cli_session_setup: NO ERROR! AAAGH! BUG IN SERVER DETECTED!!!\n"));
+               cli_shutdown(&cli_trust);
+       
+               return False;
+       }
+
+       cli_error(&cli_trust, &err_cls, &err_num, NULL);
+
+       if (err_num == (0xC0000000 | NT_STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT))
+       {
+               DEBUG(1,("cli_send_tconX: valid workstation trust account exists\n"));
+               right_error_code = True;
+       }
+
+       if (err_num == (0xC0000000 | NT_STATUS_NO_SUCH_USER))
+       {
+               DEBUG(1,("cli_send_tconX: workstation trust account does not exist\n"));
+               right_error_code = False;
+       }
+
+       if (!right_error_code)
+       {
+               DEBUG(1,("server_validate failed (%s)\n", cli_errstr(&cli_trust)));
+       }
+
+       cli_shutdown(&cli_trust);
+       return right_error_code;
+}
index 3dd9c3bc2a3be3c4fdc9612f6ef44ac102054eef..01d76981736f5bb9e7c610b3b35b2a21de99c29a 100644 (file)
@@ -1255,6 +1255,9 @@ BOOL smb_io_chal(char *desc, DOM_CHAL *chal, prs_struct *ps, int depth)
 
        prs_debug(ps, depth, desc, "smb_io_chal");
        depth++;
+
+       if(!prs_align(ps))
+               return False;
        
        if(!prs_uint8s (False, "data", ps, depth, chal->data, 8))
                return False;
index e0f710b2d75362857ba11630185f0beb396c86e7..da49a6531d057d715e1bb5fd4822c95c952269d5 100644 (file)
@@ -4,8 +4,7 @@
  *  Copyright (C) Andrew Tridgell              1992-1997,
  *  Copyright (C) Luke Kenneth Casson Leighton 1996-1997,
  *  Copyright (C) Paul Ashton                       1997.
- *  Copyright (C) Jean François Micouleau           2002.
- *
+ *  
  *  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
@@ -553,6 +552,8 @@ void init_q_req_chal(NET_Q_REQ_CHAL *q_c,
 
 BOOL net_io_q_req_chal(char *desc,  NET_Q_REQ_CHAL *q_c, prs_struct *ps, int depth)
 {
+       int old_align;
+
        if (q_c == NULL)
                return False;
 
@@ -570,8 +571,15 @@ BOOL net_io_q_req_chal(char *desc,  NET_Q_REQ_CHAL *q_c, prs_struct *ps, int dep
        if(!smb_io_unistr2("", &q_c->uni_logon_clnt, True, ps, depth)) /* logon client unicode string */
                return False;
 
-       if(!smb_io_chal("", &q_c->clnt_chal, ps, depth))
+       old_align = ps->align;
+       ps->align = 0;
+       /* client challenge is _not_ aligned after the unicode strings */
+       if(!smb_io_chal("", &q_c->clnt_chal, ps, depth)) {
+               /* client challenge */
+               ps->align = old_align;
                return False;
+       }
+       ps->align = old_align;
 
        return True;
 }
@@ -607,6 +615,7 @@ BOOL net_io_r_req_chal(char *desc, NET_R_REQ_CHAL *r_c, prs_struct *ps, int dept
 
 BOOL net_io_q_auth(char *desc, NET_Q_AUTH *q_a, prs_struct *ps, int depth)
 {
+       int old_align;
        if (q_a == NULL)
                return False;
 
@@ -618,8 +627,15 @@ BOOL net_io_q_auth(char *desc, NET_Q_AUTH *q_a, prs_struct *ps, int depth)
     
        if(!smb_io_log_info ("", &q_a->clnt_id, ps, depth)) /* client identification info */
                return False;
-       if(!smb_io_chal("", &q_a->clnt_chal, ps, depth))
+       /* client challenge is _not_ aligned */
+       old_align = ps->align;
+       ps->align = 0;
+       if(!smb_io_chal("", &q_a->clnt_chal, ps, depth)) {
+               /* client-calculated credentials */
+               ps->align = old_align;
                return False;
+       }
+       ps->align = old_align;
 
        return True;
 }
@@ -671,6 +687,7 @@ void init_q_auth_2(NET_Q_AUTH_2 *q_a,
 
 BOOL net_io_q_auth_2(char *desc, NET_Q_AUTH_2 *q_a, prs_struct *ps, int depth)
 {
+       int old_align;
        if (q_a == NULL)
                return False;
 
@@ -682,8 +699,15 @@ BOOL net_io_q_auth_2(char *desc, NET_Q_AUTH_2 *q_a, prs_struct *ps, int depth)
     
        if(!smb_io_log_info ("", &q_a->clnt_id, ps, depth)) /* client identification info */
                return False;
-       if(!smb_io_chal("", &q_a->clnt_chal, ps, depth))
+       /* client challenge is _not_ aligned */
+       old_align = ps->align;
+       ps->align = 0;
+       if(!smb_io_chal("", &q_a->clnt_chal, ps, depth)) {
+               /* client-calculated credentials */
+               ps->align = old_align;
                return False;
+       }
+       ps->align = old_align;
        if(!net_io_neg_flags("", &q_a->clnt_flgs, ps, depth))
                return False;
 
@@ -716,76 +740,6 @@ BOOL net_io_r_auth_2(char *desc, NET_R_AUTH_2 *r_a, prs_struct *ps, int depth)
        return True;
 }
 
-/*******************************************************************
- Inits a NET_Q_AUTH_3 struct.
-********************************************************************/
-
-void init_q_auth_3(NET_Q_AUTH_3 *q_a,
-               const char *logon_srv, const char *acct_name, uint16 sec_chan, const char *comp_name,
-               DOM_CHAL *clnt_chal, uint32 clnt_flgs)
-{
-       DEBUG(5,("init_q_auth_3: %d\n", __LINE__));
-
-       init_log_info(&q_a->clnt_id, logon_srv, acct_name, sec_chan, comp_name);
-       memcpy(q_a->clnt_chal.data, clnt_chal->data, sizeof(clnt_chal->data));
-       q_a->clnt_flgs.neg_flags = clnt_flgs;
-
-       DEBUG(5,("init_q_auth_3: %d\n", __LINE__));
-}
-
-/*******************************************************************
- Reads or writes a structure.
-********************************************************************/
-
-BOOL net_io_q_auth_3(char *desc, NET_Q_AUTH_3 *q_a, prs_struct *ps, int depth)
-{
-       if (q_a == NULL)
-               return False;
-
-       prs_debug(ps, depth, desc, "net_io_q_auth_3");
-       depth++;
-
-       if(!prs_align(ps))
-               return False;
-    
-       if(!smb_io_log_info ("", &q_a->clnt_id, ps, depth)) /* client identification info */
-               return False;
-       if(!smb_io_chal("", &q_a->clnt_chal, ps, depth))
-               return False;
-       if(!net_io_neg_flags("", &q_a->clnt_flgs, ps, depth))
-               return False;
-
-       return True;
-}
-
-/*******************************************************************
- Reads or writes a structure.
-********************************************************************/
-
-BOOL net_io_r_auth_3(char *desc, NET_R_AUTH_3 *r_a, prs_struct *ps, int depth)
-{
-       if (r_a == NULL)
-               return False;
-
-       prs_debug(ps, depth, desc, "net_io_r_auth_3");
-       depth++;
-
-       if(!prs_align(ps))
-               return False;
-    
-       if(!smb_io_chal("srv_chal", &r_a->srv_chal, ps, depth)) /* server challenge */
-               return False;
-       if(!net_io_neg_flags("srv_flgs", &r_a->srv_flgs, ps, depth))
-               return False;
-       if (!prs_uint32("unknown", ps, depth, &r_a->unknown))
-               return False;
-
-       if(!prs_ntstatus("status", ps, depth, &r_a->status))
-               return False;
-
-       return True;
-}
-
 
 /*******************************************************************
  Inits a NET_Q_SRV_PWSET.
@@ -1657,8 +1611,7 @@ makes a NET_Q_SAM_SYNC structure.
 ********************************************************************/
 BOOL init_net_q_sam_sync(NET_Q_SAM_SYNC * q_s, const char *srv_name,
                          const char *cli_name, DOM_CRED *cli_creds, 
-                         DOM_CRED *ret_creds, uint32 database_id, 
-                        uint32 next_rid)
+                         DOM_CRED *ret_creds, uint32 database_id)
 {
        DEBUG(5, ("init_q_sam_sync\n"));
 
@@ -1675,7 +1628,7 @@ BOOL init_net_q_sam_sync(NET_Q_SAM_SYNC * q_s, const char *srv_name,
 
        q_s->database_id = database_id;
        q_s->restart_state = 0;
-       q_s->sync_context = next_rid;
+       q_s->sync_context = 0;
        q_s->max_size = 0xffff;
 
        return True;
@@ -1746,7 +1699,7 @@ static BOOL net_io_sam_delta_hdr(char *desc, SAM_DELTA_HDR * delta,
 /*******************************************************************
 reads or writes a structure.
 ********************************************************************/
-static BOOL net_io_sam_delta_mod_count(char *desc, SAM_DELTA_MOD_COUNT *info,
+static BOOL net_io_sam_delta_stamp(char *desc, SAM_DELTA_STAMP *info,
                                    prs_struct *ps, int depth)
 {
        prs_debug(ps, depth, desc, "net_io_sam_delta_stamp");
@@ -2353,74 +2306,83 @@ static BOOL net_io_sam_alias_mem_info(char *desc, SAM_ALIAS_MEM_INFO * info,
 /*******************************************************************
 reads or writes a structure.
 ********************************************************************/
-static BOOL net_io_sam_policy_info(char *desc, SAM_DELTA_POLICY *info,
+static BOOL net_io_sam_dom_info(char *desc, SAM_DELTA_DOM *info,
                                      prs_struct *ps, int depth)
 {
        int i;
-       prs_debug(ps, depth, desc, "net_io_sam_policy_info");
+
+       prs_debug(ps, depth, desc, "net_io_sam_dom_info");
        depth++;
 
        if(!prs_align(ps))
                return False;
 
-       if (!prs_uint32("max_log_size", ps, depth, &info->max_log_size))
+       if (!prs_uint32("unknown1", ps, depth, &info->unknown1))
+                return False;
+       if (!prs_uint32("unknown2", ps, depth, &info->unknown2))
                 return False;
-       if (!prs_uint64("audit_retention_period", ps, depth,
-                       &info->audit_retention_period))
+       if (!prs_uint32("unknown3", ps, depth, &info->unknown3))
                 return False;
-       if (!prs_uint32("auditing_mode", ps, depth, &info->auditing_mode))
+       if (!prs_uint32("unknown4", ps, depth, &info->unknown4))
                 return False;
-       if (!prs_uint32("num_events", ps, depth, &info->num_events))
+       if (!prs_uint32("count1", ps, depth, &info->count1))
                 return False;
-       if (!prs_uint32("ptr_events", ps, depth, &info->ptr_events))
+       if (!prs_uint32("ptr1", ps, depth, &info->ptr1))
                 return False;
 
-       if (!smb_io_unihdr("hdr_dom_name", &info->hdr_dom_name, ps, depth))
-               return False;
+       if (!prs_uint16("count2", ps, depth, &info->count2))
+                return False;
+       if (!prs_uint16("count3", ps, depth, &info->count3))
+                return False;
 
-       if (!prs_uint32("sid_ptr", ps, depth, &info->sid_ptr))
+       if (!prs_uint32("ptr2", ps, depth, &info->ptr2))
+                return False;
+       if (!prs_uint32("ptr3", ps, depth, &info->ptr3))
                 return False;
 
-       if (!prs_uint32("paged_pool_limit", ps, depth, &info->paged_pool_limit))
+       if (!prs_uint32("unknown4b", ps, depth, &info->unknown4b))
                 return False;
-       if (!prs_uint32("non_paged_pool_limit", ps, depth,
-                       &info->non_paged_pool_limit))
+       if (!prs_uint32("unknown5", ps, depth, &info->unknown5))
                 return False;
-       if (!prs_uint32("min_workset_size", ps, depth, &info->min_workset_size))
+       if (!prs_uint32("unknown6", ps, depth, &info->unknown6))
                 return False;
-       if (!prs_uint32("max_workset_size", ps, depth, &info->max_workset_size))
+       if (!prs_uint32("unknown7", ps, depth, &info->unknown7))
                 return False;
-       if (!prs_uint32("page_file_limit", ps, depth, &info->page_file_limit))
+       if (!prs_uint32("unknown8", ps, depth, &info->unknown8))
                 return False;
-       if (!prs_uint64("time_limit", ps, depth, &info->time_limit))
+       if (!prs_uint32("unknown9", ps, depth, &info->unknown9))
                 return False;
-       if (!smb_io_time("modify_time", &info->modify_time, ps, depth))
+       if (!prs_uint32("unknown10", ps, depth, &info->unknown10))
                 return False;
-       if (!smb_io_time("create_time", &info->create_time, ps, depth))
+       if (!prs_uint32("unknown11", ps, depth, &info->unknown11))
                 return False;
-       if (!smb_io_bufhdr2("hdr_sec_desc", &info->hdr_sec_desc, ps, depth))
+       if (!prs_uint32("unknown12", ps, depth, &info->unknown12))
                 return False;
 
-       for (i=0; i<4; i++) {
-               UNIHDR dummy;
-               if (!smb_io_unihdr("dummy", &dummy, ps, depth))
-                       return False;
-       }
+       if (!prs_uint32("unknown13", ps, depth, &info->unknown13))
+                return False;
+       if (!prs_uint32("unknown14", ps, depth, &info->unknown14))
+                return False;
+       if (!prs_uint32("unknown15", ps, depth, &info->unknown15))
+                return False;
+       if (!prs_uint32("unknown16", ps, depth, &info->unknown16))
+                return False;
+       if (!prs_uint32("unknown17", ps, depth, &info->unknown17))
+                return False;
 
-       for (i=0; i<4; i++) {
-               uint32 reserved;
-               if (!prs_uint32("reserved", ps, depth, &reserved))
-                       return False;
-       }
+       for (i=0; i<info->count2; i++)
+               if (!prs_uint32("unknown18", ps, depth, &info->unknown18))
+                       return False;
 
-       if (!prs_uint32("num_event_audit_options", ps, depth,
-                       &info->num_event_audit_options))
+       if (!prs_uint32("unknown19", ps, depth, &info->unknown19))
                 return False;
 
-       for (i=0; i<info->num_event_audit_options; i++)
-               if (!prs_uint32("event_audit_option", ps, depth,
-                               &info->event_audit_option))
-                       return False;
+       for (i=0; i<info->count1; i++)
+               if (!prs_uint32("unknown20", ps, depth, &info->unknown20))
+                       return False;
+
+       if (!prs_uint32("ptr4", ps, depth, &info->ptr4))
+                return False;
 
        if (!smb_io_unistr2("domain_name", &info->domain_name, True, ps, depth))
                 return False;
@@ -2428,23 +2390,18 @@ static BOOL net_io_sam_policy_info(char *desc, SAM_DELTA_POLICY *info,
        if(!smb_io_dom_sid2("domain_sid", &info->domain_sid, ps, depth))
                return False;
 
-       if (!smb_io_buffer4("buf_sec_desc", &info->buf_sec_desc,
-                            info->hdr_sec_desc.buffer, ps, depth))
-
-               return False;
-
        return True;
 }
 
 /*******************************************************************
 reads or writes a structure.
 ********************************************************************/
-static BOOL net_io_sam_trustdoms_info(char *desc, SAM_DELTA_TRUSTDOMS *info,
+static BOOL net_io_sam_unk0e_info(char *desc, SAM_DELTA_UNK0E *info,
                                      prs_struct *ps, int depth)
 {
        int i;
 
-       prs_debug(ps, depth, desc, "net_io_sam_trustdoms_info");
+       prs_debug(ps, depth, desc, "net_io_sam_unk0e_info");
        depth++;
 
        if(!prs_align(ps))
@@ -2487,12 +2444,12 @@ static BOOL net_io_sam_trustdoms_info(char *desc, SAM_DELTA_TRUSTDOMS *info,
 /*******************************************************************
 reads or writes a structure.
 ********************************************************************/
-static BOOL net_io_sam_secret_info(char *desc, SAM_DELTA_SECRET *info,
-                                  prs_struct *ps, int depth)
+static BOOL net_io_sam_unk12_info(char *desc, SAM_DELTA_UNK12 *info,
+                                     prs_struct *ps, int depth)
 {
        int i;
 
-       prs_debug(ps, depth, desc, "net_io_sam_secret_info");
+       prs_debug(ps, depth, desc, "net_io_sam_unk12_info");
        depth++;
 
        if(!prs_align(ps))
@@ -2585,48 +2542,52 @@ static BOOL net_io_sam_privs_info(char *desc, SAM_DELTA_PRIVS *info,
        if(!prs_align(ps))
                return False;
 
+       if(!prs_uint32("buf_size", ps, depth, &info->buf_size))
+                return False;
+
+       if(!sec_io_desc("sec_desc", &info->sec_desc, ps, depth))
+               return False;
+
        if(!smb_io_dom_sid2("sid", &info->sid, ps, depth))
                return False;
 
        if(!prs_uint32("priv_count", ps, depth, &info->priv_count))
                 return False;
-       if(!prs_uint32("priv_control", ps, depth, &info->priv_control))
+       if(!prs_uint32("reserved1", ps, depth, &info->reserved1))
                 return False;
 
-       if(!prs_uint32("priv_attr_ptr", ps, depth, &info->priv_attr_ptr))
+       if(!prs_uint32("ptr1", ps, depth, &info->ptr1))
                 return False;
-       if(!prs_uint32("priv_name_ptr", ps, depth, &info->priv_name_ptr))
+       if(!prs_uint32("ptr2", ps, depth, &info->ptr2))
                 return False;
 
-       if (!prs_uint32("paged_pool_limit", ps, depth, &info->paged_pool_limit))
+       if(!prs_uint32("unknown1", ps, depth, &info->unknown1))
                 return False;
-       if (!prs_uint32("non_paged_pool_limit", ps, depth,
-                       &info->non_paged_pool_limit))
+       if(!prs_uint32("unknown2", ps, depth, &info->unknown2))
                 return False;
-       if (!prs_uint32("min_workset_size", ps, depth, &info->min_workset_size))
+       if(!prs_uint32("unknown3", ps, depth, &info->unknown3))
                 return False;
-       if (!prs_uint32("max_workset_size", ps, depth, &info->max_workset_size))
+       if(!prs_uint32("unknown4", ps, depth, &info->unknown4))
                 return False;
-       if (!prs_uint32("page_file_limit", ps, depth, &info->page_file_limit))
+       if(!prs_uint32("unknown5", ps, depth, &info->unknown5))
                 return False;
-       if (!prs_uint64("time_limit", ps, depth, &info->time_limit))
+       if(!prs_uint32("unknown6", ps, depth, &info->unknown6))
                 return False;
-       if (!prs_uint32("system_flags", ps, depth, &info->system_flags))
+       if(!prs_uint32("unknown7", ps, depth, &info->unknown7))
                 return False;
-       if (!smb_io_bufhdr2("hdr_sec_desc", &info->hdr_sec_desc, ps, depth))
+       if(!prs_uint32("unknown8", ps, depth, &info->unknown8))
+                return False;
+       if(!prs_uint32("unknown9", ps, depth, &info->unknown9))
                 return False;
 
-       for (i=0; i<4; i++) {
-               UNIHDR dummy;
-               if (!smb_io_unihdr("dummy", &dummy, ps, depth))
-                       return False;
-       }
+       if(!prs_uint32("buf_size2", ps, depth, &info->buf_size2))
+                return False;
+       if(!prs_uint32("ptr3", ps, depth, &info->ptr3))
+                return False;
 
-       for (i=0; i<4; i++) {
-               uint32 reserved;
-               if (!prs_uint32("reserved", ps, depth, &reserved))
-                       return False;
-       }
+       for (i=0; i<12; i++)
+               if(!prs_uint32("unknown10", ps, depth, &info->unknown10))
+                       return False;
 
        if(!prs_uint32("attribute_count", ps, depth, &info->attribute_count))
                 return False;
@@ -2651,10 +2612,6 @@ static BOOL net_io_sam_privs_info(char *desc, SAM_DELTA_PRIVS *info,
                if (!smb_io_unistr2("uni_privslist", &info->uni_privslist[i], True, ps, depth))
                        return False;
 
-       if (!smb_io_buffer4("buf_sec_desc", &info->buf_sec_desc,
-                            info->hdr_sec_desc.buffer, ps, depth))
-                return False;
-
        return True;
 }
 
@@ -2670,8 +2627,8 @@ static BOOL net_io_sam_delta_ctr(char *desc, uint8 sess_key[16],
 
        switch (type) {
                 /* Seen in sam deltas */
-                case SAM_DELTA_MODIFIED_COUNT:
-                        if (!net_io_sam_delta_mod_count("", &delta->mod_count, ps, depth))
+                case SAM_DELTA_SAM_STAMP:
+                        if (!net_io_sam_delta_stamp("", &delta->stamp, ps, depth))
                                 return False;
                         break;
 
@@ -2700,8 +2657,8 @@ static BOOL net_io_sam_delta_ctr(char *desc, uint8 sess_key[16],
                                 return False;
                        break;
 
-               case SAM_DELTA_POLICY_INFO:
-                        if (!net_io_sam_policy_info("", &delta->policy_info, ps, depth))
+               case SAM_DELTA_DOM_INFO:
+                        if (!net_io_sam_dom_info("", &delta->dom_info, ps, depth))
                                 return False;
                        break;
 
@@ -2715,23 +2672,16 @@ static BOOL net_io_sam_delta_ctr(char *desc, uint8 sess_key[16],
                                 return False;
                        break;
 
-               case SAM_DELTA_TRUST_DOMS:
-                       if (!net_io_sam_trustdoms_info("", &delta->trustdoms_info, ps, depth))
+               case SAM_DELTA_UNK0E_INFO:
+                       if (!net_io_sam_unk0e_info("", &delta->unk0e_info, ps, depth))
                                 return False;
                        break;
 
-               case SAM_DELTA_SECRET_INFO:
-                       if (!net_io_sam_secret_info("", &delta->secret_info, ps, depth))
+               case SAM_DELTA_UNK12_INFO:
+                       if (!net_io_sam_unk12_info("", &delta->unk12_info, ps, depth))
                                 return False;
                        break;
 
-                       /* These guys are not implemented yet */
-
-               case SAM_DELTA_RENAME_GROUP:
-               case SAM_DELTA_RENAME_USER:
-               case SAM_DELTA_RENAME_ALIAS:
-               case SAM_DELTA_DELETE_GROUP:
-               case SAM_DELTA_DELETE_USER:
                default:
                        DEBUG(0, ("Replication error: Unknown delta type 0x%x\n", type));
                        break;
index 843be331877a78eaca3f76065c3bc4609a6b9b4a..4de6b88e9ccae430cc5752c620e328086cde7a14 100644 (file)
@@ -1061,9 +1061,7 @@ BOOL prs_unistr(char *name, prs_struct *ps, int depth, UNISTR *str)
 
                len++;
 
-               DEBUG(5,("%s%04x %s: ", tab_depth(depth), ps->data_offset, name));
-               print_asc(5, (unsigned char*)start, 2*len);     
-               DEBUG(5, ("\n"));
+               dump_data(5+depth, (char *)start, len * 2);
        }
        else { /* unmarshalling */
        
@@ -1116,10 +1114,6 @@ BOOL prs_unistr(char *name, prs_struct *ps, int depth, UNISTR *str)
                        /* NULL terminate the UNISTR */
                        str->buffer[len++] = '\0';
                }
-
-               DEBUG(5,("%s%04x %s: ", tab_depth(depth), ps->data_offset, name));
-               print_asc(5, (unsigned char*)str->buffer, 2*len);       
-               DEBUG(5, ("\n"));
        }
 
        /* set the offset in the prs_struct; 'len' points to the
index 2698e8244076a50ebf748293f4ea269ec2af39c2..365ad2dc70be13817448b51498cddd6e34826559 100644 (file)
 
 static uint32 reg_init_buffer2( BUFFER2 *buf2, REGISTRY_VALUE *val )
 {
+       UNISTR2         unistr;
        uint32          real_size = 0;
+       char            *string;
+       char            *list = NULL;
+       char            *list2 = NULL;
        
        if ( !buf2 || !val )
                return 0;
                
-       real_size = regval_size(val);
-       init_buffer2( buf2, (char*)regval_data_p(val), real_size );
+       real_size = val->size;
+               
+       switch (val->type )
+       {
+               case REG_SZ:
+                       string = (char*)val->data_p;
+                       DEBUG(10,("reg_init_buffer2: REG_SZ string => [%s]\n", string));
+                       
+                       init_unistr2( &unistr, (char*)val->data_p, strlen((char*)val->data_p)+1 );
+                       init_buffer2( buf2, (char*)unistr.buffer, unistr.uni_str_len*2 );
+                       real_size = unistr.uni_str_len*2;
+                       break;
+                       
+               case REG_MULTI_SZ:
+                       string = (char*)val->data_p;
+                       real_size = 0;
+                       while ( string && *string )
+                       {
+                               DEBUG(10,("reg_init_buffer2: REG_MULTI_SZ string => [%s], size => [%d]\n", string, real_size ));
+                               
+                               init_unistr2( &unistr, string, strlen(string)+1 );
+                               
+                               list2 = Realloc( list, real_size + unistr.uni_str_len*2 );
+                               if ( !list2 )
+                                       break;
+                               list = list2;
+                               
+                               memcpy( list+real_size, unistr.buffer, unistr.uni_str_len*2 );
+                               
+                               real_size += unistr.uni_str_len*2;
+                               
+                               string += strlen(string)+1;
+                       }
+                       
+                       list2 = Realloc( list, real_size + 2 );
+                       if ( !list2 )
+                               break;
+                       list = list2;
+                       list[real_size++] = 0x0;
+                       list[real_size++] = 0x0;
+                       
+                       init_buffer2( buf2, (char*)list, real_size );
+                       
+                       DEBUG(10,("reg_init_buffer2: REG_MULTI_SZ size => [%d]\n", real_size ));
+                       
+                       break;
+                       
+               case REG_BINARY:
+                       DEBUG(10,("reg_init_buffer2: REG_BINARY size => [%d]\n", val->size ));
+                       
+                       init_buffer2( buf2, val->data_p, val->size );
+                       break;
+                       
+               case REG_DWORD: 
+                       DEBUG(10,("reg_init_buffer2: REG_DWORD value => [%d]\n", *(uint32*)val->data_p));
+                       init_buffer2( buf2, val->data_p, val->size );
+                       break;
+                       
+               default:
+                       DEBUG(0,("reg_init_buffer2: Unsupported registry data type [%d]\n", val->type));
+                       break;
+       }
+       
+       SAFE_FREE( list );
 
        return real_size;
 }
@@ -1701,11 +1767,7 @@ BOOL reg_io_q_open_entry(char *desc,  REG_Q_OPEN_ENTRY *r_q, prs_struct *ps, int
 void init_reg_r_open_entry(REG_R_OPEN_ENTRY *r_r,
                           POLICY_HND *pol, NTSTATUS status)
 {
-       if (NT_STATUS_IS_OK(status)) {
-               memcpy(&r_r->pol, pol, sizeof(r_r->pol));
-       } else {
-               ZERO_STRUCT(r_r->pol);
-       }
+       memcpy(&r_r->pol, pol, sizeof(r_r->pol));
        r_r->status = status;
 }
 
index 36b00ff55db76adaffaa5a1f4f7f7ba0010934c7..3a7f4b57ae61c04c8f27f8de88d8a0444a87bb00 100644 (file)
@@ -659,7 +659,7 @@ BOOL spoolss_io_devmode(char *desc, prs_struct *ps, int depth, DEVICEMODE *devmo
                { "panningheight",      NULL }
        };
 
-       /* assign at run time to keep non-gcc compilers happy */
+       /* assign at run time to keep non-gcc vompilers happy */
 
        opt_fields[0].field = &devmode->icmmethod;
        opt_fields[1].field = &devmode->icmintent;
@@ -1211,26 +1211,6 @@ BOOL make_spoolss_q_getprinterdata(SPOOL_Q_GETPRINTERDATA *q_u,
         return True;
 }
 
-/*******************************************************************
- * make a structure.
- ********************************************************************/
-
-BOOL make_spoolss_q_getprinterdataex(SPOOL_Q_GETPRINTERDATAEX *q_u,
-                                    const POLICY_HND *handle,
-                                    char *keyname, char *valuename, uint32 size)
-{
-        if (q_u == NULL) return False;
-
-        DEBUG(5,("make_spoolss_q_getprinterdataex\n"));
-
-        q_u->handle = *handle;
-       init_unistr2(&q_u->valuename, valuename, strlen(valuename) + 1);
-       init_unistr2(&q_u->keyname, keyname, strlen(keyname) + 1);
-        q_u->size = size;
-
-        return True;
-}
-
 /*******************************************************************
  * read a structure.
  * called from spoolss_q_getprinterdata (srv_spoolss.c)
@@ -1364,7 +1344,7 @@ BOOL spoolss_io_r_getprinterdata(char *desc, SPOOL_R_GETPRINTERDATA *r_u, prs_st
        
        if (UNMARSHALLING(ps) && r_u->size) {
                r_u->data = prs_alloc_mem(ps, r_u->size);
-               if(!r_u->data)
+               if(r_u->data)
                        return False;
        }
 
@@ -3366,9 +3346,7 @@ uint32 spoolss_size_printer_info_2(PRINTER_INFO_2 *info)
         * it is easier to maintain the calculation here and
         * not place the burden on the caller to remember.   --jerry
         */
-       if ((size % 4) != 0) {
-               size += 4 - (size % 4);
-       }
+       size += size % 4;
        
        return size;
 }
@@ -3700,7 +3678,7 @@ uint32 spoolss_size_printer_enum_values(PRINTER_ENUM_VALUES *p)
        
        /* uint32(offset) + uint32(length) + length) */
        size += (size_of_uint32(&p->value_len)*2) + p->value_len;
-       size += (size_of_uint32(&p->data_len)*2) + p->data_len + (p->data_len%2) ;
+       size += (size_of_uint32(&p->data_len)*2) + p->data_len;
        
        size += size_of_uint32(&p->type);
                       
@@ -6087,52 +6065,20 @@ BOOL make_spoolss_q_enumprinterdata(SPOOL_Q_ENUMPRINTERDATA *q_u,
        return True;
 }
 
-/*******************************************************************
-********************************************************************/  
-
-BOOL make_spoolss_q_enumprinterdataex(SPOOL_Q_ENUMPRINTERDATAEX *q_u,
-                                     const POLICY_HND *hnd, char *key,
-                                     uint32 size)
-{
-       memcpy(&q_u->handle, hnd, sizeof(q_u->handle));
-       init_unistr2(&q_u->key, key, strlen(key)+1);
-       q_u->size = size;
-
-       return True;
-}
-
 /*******************************************************************
 ********************************************************************/  
 BOOL make_spoolss_q_setprinterdata(SPOOL_Q_SETPRINTERDATA *q_u, const POLICY_HND *hnd,
-                                  char* value, uint32 data_type, char* data, uint32 data_size)
-{
-       memcpy(&q_u->handle, hnd, sizeof(q_u->handle));
-       q_u->type = data_type;
-       init_unistr2(&q_u->value, value, strlen(value)+1);
-
-       q_u->max_len = q_u->real_len = data_size;
-       q_u->data = data;
-       
-       return True;
-}
-
-/*******************************************************************
-********************************************************************/  
-BOOL make_spoolss_q_setprinterdataex(SPOOL_Q_SETPRINTERDATAEX *q_u, const POLICY_HND *hnd,
-                                    char *key, char* value, uint32 data_type, char* data, 
-                                    uint32 data_size)
+                                  char* value, char* data, uint32 data_size)
 {
        memcpy(&q_u->handle, hnd, sizeof(q_u->handle));
-       q_u->type = data_type;
+       q_u->type = REG_SZ;
        init_unistr2(&q_u->value, value, strlen(value)+1);
-       init_unistr2(&q_u->key, key, strlen(key)+1);
 
        q_u->max_len = q_u->real_len = data_size;
        q_u->data = data;
        
        return True;
 }
-
 /*******************************************************************
 ********************************************************************/  
 
@@ -6917,12 +6863,6 @@ BOOL spoolss_io_r_getprinterdataex(char *desc, SPOOL_R_GETPRINTERDATAEX *r_u, pr
        if (!prs_uint32("size", ps, depth, &r_u->size))
                return False;
        
-       if (UNMARSHALLING(ps) && r_u->size) {
-               r_u->data = prs_alloc_mem(ps, r_u->size);
-               if(!r_u->data)
-                       return False;
-       }
-
        if (!prs_uint8s(False,"data", ps, depth, r_u->data, r_u->size))
                return False;
                
@@ -7143,22 +7083,16 @@ static BOOL spoolss_io_printer_enum_values_ctr(char *desc, prs_struct *ps,
        prs_debug(ps, depth, desc, "spoolss_io_printer_enum_values_ctr");
        depth++;        
        
-       /* 
-        * offset data begins at 20 bytes per structure * size_of_array.
-        * Don't forget the uint32 at the beginning 
-        * */
+       if (!prs_uint32("size", ps, depth, &ctr->size))
+               return False;
+       
+       /* offset data begins at 20 bytes per structure * size_of_array.
+          Don't forget the uint32 at the beginning */
        
        current_offset = basic_unit * ctr->size_of_array;
        
        /* first loop to write basic enum_value information */
        
-       if (UNMARSHALLING(ps)) {
-               ctr->values = (PRINTER_ENUM_VALUES *)prs_alloc_mem(
-                       ps, ctr->size_of_array * sizeof(PRINTER_ENUM_VALUES));
-               if (!ctr->values)
-                       return False;
-       }
-
        for (i=0; i<ctr->size_of_array; i++) 
        {
                valuename_offset = current_offset;
@@ -7172,22 +7106,18 @@ static BOOL spoolss_io_printer_enum_values_ctr(char *desc, prs_struct *ps,
                        return False;
        
                data_offset = ctr->values[i].value_len + valuename_offset;
-               
                if (!prs_uint32("data_offset", ps, depth, &data_offset))
                        return False;
 
                if (!prs_uint32("data_len", ps, depth, &ctr->values[i].data_len))
                        return False;
                        
-               current_offset  = data_offset + ctr->values[i].data_len - basic_unit;
-               /* account for 2 byte alignment */
-               current_offset += (current_offset % 2);
+               current_offset = data_offset + ctr->values[i].data_len - basic_unit;
        }
 
-       /* 
-        * loop #2 for writing the dynamically size objects; pay 
-        * attention to 2-byte alignment here....
-        */
+       /* loop #2 for writing the dynamically size objects
+          while viewing conversations between Win2k -> Win2k,
+          4-byte alignment does not seem to matter here   --jerry */
        
        for (i=0; i<ctr->size_of_array; i++) 
        {
@@ -7195,20 +7125,12 @@ static BOOL spoolss_io_printer_enum_values_ctr(char *desc, prs_struct *ps,
                if (!prs_unistr("valuename", ps, depth, &ctr->values[i].valuename))
                        return False;
                
-               if (UNMARSHALLING(ps)) {
-                       ctr->values[i].data = (uint8 *)prs_alloc_mem(
-                               ps, ctr->values[i].data_len);
-                       if (!ctr->values[i].data)
-                               return False;
-               }
-
                if (!prs_uint8s(False, "data", ps, depth, ctr->values[i].data, ctr->values[i].data_len))
                        return False;
-                       
-               if ( !prs_align_uint16(ps) )
-                       return False;
        }
 
+               
+
        return True;    
 }
 
@@ -7219,21 +7141,15 @@ static BOOL spoolss_io_printer_enum_values_ctr(char *desc, prs_struct *ps,
 
 BOOL spoolss_io_r_enumprinterdataex(char *desc, SPOOL_R_ENUMPRINTERDATAEX *r_u, prs_struct *ps, int depth)
 {
-       int data_offset, end_offset;
        prs_debug(ps, depth, desc, "spoolss_io_r_enumprinterdataex");
        depth++;
 
        if(!prs_align(ps))
                return False;
                
-       if (!prs_uint32("size", ps, depth, &r_u->ctr.size))
+       if (!spoolss_io_printer_enum_values_ctr("", ps, &r_u->ctr, depth ))
                return False;
        
-       data_offset = prs_offset(ps);
-
-       if (!prs_set_offset(ps, data_offset + r_u->ctr.size))
-               return False;
-
        if(!prs_align(ps))
                return False;
 
@@ -7246,20 +7162,6 @@ BOOL spoolss_io_r_enumprinterdataex(char *desc, SPOOL_R_ENUMPRINTERDATAEX *r_u,
        if(!prs_werror("status",     ps, depth, &r_u->status))
                return False;
 
-       r_u->ctr.size_of_array = r_u->returned;
-
-       end_offset = prs_offset(ps);
-
-       if (!prs_set_offset(ps, data_offset))
-               return False;
-
-       if (r_u->ctr.size)
-               if (!spoolss_io_printer_enum_values_ctr("", ps, &r_u->ctr, depth ))
-                       return False;
-
-       if (!prs_set_offset(ps, end_offset))
-               return False;
-       
        return True;
 }
 
@@ -7608,21 +7510,6 @@ BOOL make_spoolss_q_deleteprinterdata(SPOOL_Q_DELETEPRINTERDATA *q_u,
        return True;
 }
 
-/*******************************************************************
- * init a structure.
- ********************************************************************/
-
-BOOL make_spoolss_q_deleteprinterdataex(SPOOL_Q_DELETEPRINTERDATAEX *q_u, 
-                                       POLICY_HND *handle, char *key,
-                                       char *value)
-{
-        memcpy(&q_u->handle, handle, sizeof(POLICY_HND));
-       init_unistr2(&q_u->valuename, value, strlen(value) + 1);
-       init_unistr2(&q_u->keyname, key, strlen(key) + 1);
-
-       return True;
-}
-
 /*******************************************************************
  * init a structure.
  ********************************************************************/
index 672db36a288f5bdbebe93515c74f5954ec3505af..531267c308c822ab82815be311a409cb66e6275d 100644 (file)
@@ -1119,8 +1119,10 @@ BOOL srv_io_r_net_share_enum(char *desc, SRV_R_NET_SHARE_ENUM *r_n, prs_struct *
        if(!prs_uint32("total_entries", ps, depth, &r_n->total_entries))
                return False;
 
-       if(!smb_io_enum_hnd("enum_hnd", &r_n->enum_hnd, ps, depth))
-               return False;
+       if(r_n->total_entries != 0) {
+               if(!smb_io_enum_hnd("enum_hnd", &r_n->enum_hnd, ps, depth))
+                       return False;
+       }
 
        if(!prs_werror("status", ps, depth, &r_n->status))
                return False;
index e187e1556eff510d79226f56e147ad5ee0f366aa..f28441886a53cd7ba3e778c2b7a0c2752c4bd326 100644 (file)
@@ -473,8 +473,6 @@ NTSTATUS _lsa_enum_trust_dom(pipes_struct *p, LSA_Q_ENUM_TRUST_DOM *q_u, LSA_R_E
        /*
         * preferred length is set to 5 as a "our" preferred length
         * nt sets this parameter to 2
-        * update (20.08.2002): it's not preferred length, but preferred size!
-        * it needs further investigation how to optimally choose this value
         */
        uint32 max_num_domains = q_u->preferred_len < 5 ? q_u->preferred_len : 10;
        TRUSTDOM **trust_doms;
index 4478729e4d96c95b43e6d1654a74e7947d493a32..8f6011826aa3cb3bd0b9477339beacc55d7d2482 100644 (file)
@@ -712,8 +712,8 @@ NTSTATUS _net_sam_logon(pipes_struct *p, NET_Q_SAM_LOGON *q_u, NET_R_SAM_LOGON *
                                    pdb_get_logon_script(sampw),
                                    pdb_get_profile_path(sampw),
                                    pdb_get_logon_time(sampw),
-                                   get_time_t_max(),
-                                   get_time_t_max(),
+                                   pdb_get_logoff_time(sampw),
+                                   pdb_get_kickoff_time(sampw),
                                    pdb_get_pass_last_set_time(sampw),
                                    pdb_get_pass_can_change_time(sampw),
                                    pdb_get_pass_must_change_time(sampw),
index 1947d5514e5d500f625482a5cc8f93c006cdcaf4..b7be415abcd01cfd676858c27d8535b2ade75a5a 100644 (file)
@@ -276,6 +276,9 @@ static BOOL api_pipe_ntlmssp_verify(pipes_struct *p, RPC_AUTH_NTLMSSP_RESP *ntlm
        auth_usersupplied_info *user_info = NULL;
        auth_serversupplied_info *server_info = NULL;
 
+       uid_t uid;
+       uid_t gid;
+
        DEBUG(5,("api_pipe_ntlmssp_verify: checking user details\n"));
 
        memset(p->user_name, '\0', sizeof(p->user_name));
@@ -424,30 +427,27 @@ failed authentication on named pipe %s.\n", domain, user_name, wks, p->name ));
        
        memcpy(p->session_key, server_info->session_key, sizeof(p->session_key));
 
-       p->pipe_user.uid = pdb_get_uid(server_info->sam_account);
-       p->pipe_user.gid = pdb_get_gid(server_info->sam_account);
-       
-       p->pipe_user.ngroups = server_info->n_groups;
-       if (p->pipe_user.ngroups) {
-               if (!(p->pipe_user.groups = memdup(server_info->groups, sizeof(gid_t) * p->pipe_user.ngroups))) {
-                       DEBUG(0,("failed to memdup group list to p->pipe_user.groups\n"));
-                       free_server_info(&server_info);
-                       return False;
-               }
-       }
+       uid = pdb_get_uid(server_info->sam_account);
+       gid = pdb_get_gid(server_info->sam_account);
+
+       p->pipe_user.uid = uid;
+       p->pipe_user.gid = gid;
+
+       /* Set up pipe user group membership. */
+       initialise_groups(p->pipe_user_name, p->pipe_user.uid, p->pipe_user.gid);
+       get_current_groups(p->pipe_user.gid, &p->pipe_user.ngroups, &p->pipe_user.groups);
 
        if (server_info->ptok)
-               p->pipe_user.nt_user_token = dup_nt_token(server_info->ptok);
-       else {
-               DEBUG(1,("Error: Authmodule failed to provide nt_user_token\n"));
-               p->pipe_user.nt_user_token = NULL;
-               free_server_info(&server_info);
-               return False;
-       }
+               add_supplementary_nt_login_groups(&p->pipe_user.ngroups, &p->pipe_user.groups, &server_info->ptok);
+
+       /* Create an NT_USER_TOKEN struct for this user. */
+       p->pipe_user.nt_user_token = create_nt_token(p->pipe_user.uid,p->pipe_user.gid,
+                                                    p->pipe_user.ngroups, p->pipe_user.groups,
+                                                    server_info->guest, server_info->ptok);
 
        p->ntlmssp_auth_validated = True;
 
-       free_server_info(&server_info);
+       pdb_free_sam(&server_info->sam_account);
        return True;
 }
 
index f96de7e5339c894fa421e54008bdf3804df2b84b..cd9596d2a7280df2b0e473afbeb901d31bec4d97 100644 (file)
@@ -342,9 +342,6 @@ NTSTATUS _reg_info(pipes_struct *p, REG_Q_INFO *q_u, REG_R_INFO *r_u)
 {
        NTSTATUS                status = NT_STATUS_NO_SUCH_FILE;
        fstring                 name;
-       char                    *value_ascii = "";
-       fstring                 value;
-       int                     value_length;
        REGISTRY_KEY            *regkey = find_regkey_index_by_hnd( p, &q_u->pol );
        REGISTRY_VALUE          *val = NULL;
        REGISTRY_VALUE          emptyval;
@@ -383,20 +380,15 @@ NTSTATUS _reg_info(pipes_struct *p, REG_Q_INFO *q_u, REG_R_INFO *r_u)
                switch (lp_server_role()) {
                        case ROLE_DOMAIN_PDC:
                        case ROLE_DOMAIN_BDC:
-                               value_ascii = REG_PT_LANMANNT;
+                               regval_ctr_addvalue( &regvals, REGSTR_PRODUCTTYPE, REG_SZ, REG_PT_LANMANNT, strlen(REG_PT_LANMANNT)+1 );
                                break;
                        case ROLE_STANDALONE:
-                               value_ascii = REG_PT_SERVERNT;
+                               regval_ctr_addvalue( &regvals, REGSTR_PRODUCTTYPE, REG_SZ, REG_PT_SERVERNT, strlen(REG_PT_SERVERNT)+1 );
                                break;
                        case ROLE_DOMAIN_MEMBER:
-                               value_ascii = REG_PT_WINNT;
+                               regval_ctr_addvalue( &regvals, REGSTR_PRODUCTTYPE, REG_SZ, REG_PT_WINNT, strlen(REG_PT_WINNT)+1 );
                                break;
                }
-               value_length = push_ucs2(value, value, value_ascii,
-                                        sizeof(value),
-                                        STR_TERMINATE|STR_NOALIGN);
-               regval_ctr_addvalue(&regvals, REGSTR_PRODUCTTYPE, REG_SZ,
-                                   value, value_length);
                
                val = dup_registry_value( regval_ctr_specific_value( &regvals, 0 ) );
                
index ea631838dab30f729764f040aee388c53a960cb3..a30622c600823786cf45c0b960ad80626466ff09 100644 (file)
@@ -57,8 +57,6 @@ struct samr_info {
        DOM_SID sid;
        uint32 status; /* some sort of flag.  best to record it.  comes from opnum 0x39 */
        uint32 acc_granted;
-       uint16 acb_mask;
-       BOOL all_machines;
        DISP_INFO disp_info;
 
        TALLOC_CTX *mem_ctx;
@@ -70,7 +68,8 @@ struct generic_mapping usr_generic_mapping = {USER_READ, USER_WRITE, USER_EXECUT
 struct generic_mapping grp_generic_mapping = {GROUP_READ, GROUP_WRITE, GROUP_EXECUTE, GROUP_ALL_ACCESS};
 struct generic_mapping ali_generic_mapping = {ALIAS_READ, ALIAS_WRITE, ALIAS_EXECUTE, ALIAS_ALL_ACCESS};
 
-static NTSTATUS samr_make_dom_obj_sd(TALLOC_CTX *ctx, SEC_DESC **psd, size_t *sd_size);
+static NTSTATUS samr_make_dom_obj_sd(TALLOC_CTX *ctx, SEC_DESC **psd, size_t *d_size);
+
 
 /*******************************************************************
  Checks if access to an object should be granted, and returns that
@@ -152,36 +151,26 @@ static struct samr_info *get_samr_info_by_sid(DOM_SID *psid)
        return info;
 }
 
-
 /*******************************************************************
  Function to free the per handle data.
  ********************************************************************/
-static void free_samr_users(struct samr_info *info) 
+static void free_samr_db(struct samr_info *info)
 {
        int i;
 
+       /* Groups are talloced */
+
        if (info->disp_info.user_dbloaded){
                for (i=0; i<info->disp_info.num_user_account; i++) {
                        /* Not really a free, actually a 'clear' */
                        pdb_free_sam(&info->disp_info.disp_user_info[i].sam);
                }
        }
-       info->disp_info.user_dbloaded=False;
-       info->disp_info.num_user_account=0;
-}
-
-
-/*******************************************************************
- Function to free the per handle data.
- ********************************************************************/
-static void free_samr_db(struct samr_info *info)
-{
-       /* Groups are talloced */
-
-       free_samr_users(info);
 
+       info->disp_info.user_dbloaded=False;
        info->disp_info.group_dbloaded=False;
        info->disp_info.num_group_account=0;
+       info->disp_info.num_user_account=0;
 }
 
 
@@ -210,7 +199,7 @@ static void samr_clear_sam_passwd(SAM_ACCOUNT *sam_pass)
 }
 
 
-static NTSTATUS load_sampwd_entries(struct samr_info *info, uint16 acb_mask, BOOL all_machines)
+static NTSTATUS load_sampwd_entries(struct samr_info *info, uint16 acb_mask)
 {
        SAM_ACCOUNT *pwd = NULL;
        DISP_USER_INFO *pwd_array = NULL;
@@ -220,15 +209,11 @@ static NTSTATUS load_sampwd_entries(struct samr_info *info, uint16 acb_mask, BOO
        DEBUG(10,("load_sampwd_entries\n"));
 
        /* if the snapshoot is already loaded, return */
-       if ((info->disp_info.user_dbloaded==True) 
-           && (info->acb_mask == acb_mask) 
-           && (info->all_machines == all_machines)) {
+       if (info->disp_info.user_dbloaded==True) {
                DEBUG(10,("load_sampwd_entries: already in memory\n"));
                return NT_STATUS_OK;
        }
 
-       free_samr_users(info);
-
        if (!pdb_setsampwent(False)) {
                DEBUG(0, ("load_sampwd_entries: Unable to open passdb.\n"));
                return NT_STATUS_ACCESS_DENIED;
@@ -237,19 +222,10 @@ static NTSTATUS load_sampwd_entries(struct samr_info *info, uint16 acb_mask, BOO
        for (; (NT_STATUS_IS_OK(nt_status = pdb_init_sam_talloc(mem_ctx, &pwd))) 
                     && pdb_getsampwent(pwd) == True; pwd=NULL) {
                
-               if (all_machines) {
-                       if (!((pdb_get_acct_ctrl(pwd) & ACB_WSTRUST) 
-                             || (pdb_get_acct_ctrl(pwd) & ACB_SVRTRUST))) {
-                               DEBUG(5,("load_sampwd_entries: '%s' is not a machine account - ACB: %x - skipping\n", pdb_get_username(pwd), acb_mask));
-                               pdb_free_sam(&pwd);
-                               continue;
-                       }
-               } else {
-                       if (acb_mask != 0 && !(pdb_get_acct_ctrl(pwd) & acb_mask)) {
-                               pdb_free_sam(&pwd);
-                               DEBUG(5,(" acb_mask %x reject\n", acb_mask));
-                               continue;
-                       }
+               if (acb_mask != 0 && !(pdb_get_acct_ctrl(pwd) & acb_mask)) {
+                       pdb_free_sam(&pwd);
+                       DEBUG(5,(" acb_mask %x reject\n", acb_mask));
+                       continue;
                }
 
                /* Realloc some memory for the array of ptr to the SAM_ACCOUNT structs */
@@ -277,8 +253,6 @@ static NTSTATUS load_sampwd_entries(struct samr_info *info, uint16 acb_mask, BOO
 
        /* the snapshoot is in memory, we're ready to enumerate fast */
 
-       info->acb_mask = acb_mask;
-       info->all_machines = all_machines;
        info->disp_info.user_dbloaded=True;
 
        DEBUG(12,("load_sampwd_entries: done\n"));
@@ -432,6 +406,46 @@ NTSTATUS _samr_get_usrdom_pwinfo(pipes_struct *p, SAMR_Q_GET_USRDOM_PWINFO *q_u,
        return r_u->status;
 }
 
+
+/*******************************************************************
+ samr_make_sam_obj_sd
+ ********************************************************************/
+
+static NTSTATUS samr_make_sam_obj_sd(TALLOC_CTX *ctx, SEC_DESC **psd, size_t *sd_size)
+{
+       extern DOM_SID global_sid_World;
+       DOM_SID adm_sid;
+       DOM_SID act_sid;
+
+       SEC_ACE ace[3];
+       SEC_ACCESS mask;
+
+       SEC_ACL *psa = NULL;
+
+       sid_copy(&adm_sid, &global_sid_Builtin);
+       sid_append_rid(&adm_sid, BUILTIN_ALIAS_RID_ADMINS);
+
+       sid_copy(&act_sid, &global_sid_Builtin);
+       sid_append_rid(&act_sid, BUILTIN_ALIAS_RID_ACCOUNT_OPS);
+
+       /*basic access for every one*/
+       init_sec_access(&mask, SAMR_EXECUTE | SAMR_READ);
+       init_sec_ace(&ace[0], &global_sid_World, SEC_ACE_TYPE_ACCESS_ALLOWED, mask, 0);
+
+       /*full access for builtin aliases Administrators and Account Operators*/
+       init_sec_access(&mask, SAMR_ALL_ACCESS);
+       init_sec_ace(&ace[1], &adm_sid, SEC_ACE_TYPE_ACCESS_ALLOWED, mask, 0);
+       init_sec_ace(&ace[2], &act_sid, SEC_ACE_TYPE_ACCESS_ALLOWED, mask, 0);
+
+       if ((psa = make_sec_acl(ctx, NT4_ACL_REVISION, 3, ace)) == NULL)
+               return NT_STATUS_NO_MEMORY;
+
+       if ((*psd = make_sec_desc(ctx, SEC_DESC_REVISION, NULL, NULL, NULL, psa, sd_size)) == NULL)
+               return NT_STATUS_NO_MEMORY;
+
+       return NT_STATUS_OK;
+}
+
 /*******************************************************************
  samr_make_dom_obj_sd
  ********************************************************************/
@@ -773,7 +787,7 @@ NTSTATUS _samr_enum_dom_users(pipes_struct *p, SAMR_Q_ENUM_DOM_USERS *q_u,
        DEBUG(5,("_samr_enum_dom_users: %d\n", __LINE__));
 
        become_root();
-       r_u->status=load_sampwd_entries(info, q_u->acb_mask, False);
+       r_u->status=load_sampwd_entries(info, q_u->acb_mask);
        unbecome_root();
        
        if (!NT_STATUS_IS_OK(r_u->status))
@@ -1044,6 +1058,8 @@ static NTSTATUS get_group_domain_entries(TALLOC_CTX *ctx, DOMAIN_GRP **d_grp, DO
 
 /*******************************************************************
  samr_reply_enum_dom_groups
+ Only reply with one group - domain admins. This must be fixed for
+ a real PDC. JRA.
  ********************************************************************/
 
 NTSTATUS _samr_enum_dom_groups(pipes_struct *p, SAMR_Q_ENUM_DOM_GROUPS *q_u, SAMR_R_ENUM_DOM_GROUPS *r_u)
@@ -1127,6 +1143,7 @@ NTSTATUS _samr_query_dispinfo(pipes_struct *p, SAMR_Q_QUERY_DISPINFO *q_u,
 {
        struct samr_info *info = NULL;
        uint32 struct_size=0x20; /* W2K always reply that, client doesn't care */
+       uint16 acb_mask;
        
        uint32 max_entries=q_u->max_entries;
        uint32 enum_context=q_u->start_idx;
@@ -1177,14 +1194,20 @@ NTSTATUS _samr_query_dispinfo(pipes_struct *p, SAMR_Q_QUERY_DISPINFO *q_u,
         * JFM, 12/20/2001
         */
 
+       /* Get what we need from the password database */
+
+       if (q_u->switch_level==2)
+               acb_mask = ACB_WSTRUST;
+       else
+               acb_mask = ACB_NORMAL;
+
        /* Get what we need from the password database */
        switch (q_u->switch_level) {
                case 0x1:
                case 0x2:
                case 0x4:
                        become_root();          
-                       /* Level 2 is for all machines, otherwise only 'normal' users */
-                       r_u->status=load_sampwd_entries(info, ACB_NORMAL, q_u->switch_level==2);
+                       r_u->status=load_sampwd_entries(info, acb_mask);
                        unbecome_root();
                        if (!NT_STATUS_IS_OK(r_u->status)) {
                                DEBUG(5, ("_samr_query_dispinfo: load_sampwd_entries failed\n"));
@@ -2103,7 +2126,7 @@ NTSTATUS _samr_query_dom_info(pipes_struct *p, SAMR_Q_QUERY_DOMAIN_INFO *q_u, SA
                        break;
                case 0x02:
                        become_root();          
-                       r_u->status=load_sampwd_entries(info, ACB_NORMAL, False);
+                       r_u->status=load_sampwd_entries(info, ACB_NORMAL);
                        unbecome_root();
                        if (!NT_STATUS_IS_OK(r_u->status)) {
                                DEBUG(5, ("_samr_query_dispinfo: load_sampwd_entries failed\n"));
@@ -3857,7 +3880,6 @@ NTSTATUS _samr_create_dom_group(pipes_struct *p, SAMR_Q_CREATE_DOM_GROUP *q_u, S
        struct samr_info *info;
        PRIVILEGE_SET priv_set;
        uint32 acc_granted;
-       gid_t gid;
 
        init_privilege(&priv_set);
 
@@ -3881,11 +3903,10 @@ NTSTATUS _samr_create_dom_group(pipes_struct *p, SAMR_Q_CREATE_DOM_GROUP *q_u, S
                return NT_STATUS_GROUP_EXISTS;
 
        /* we can create the UNIX group */
-       if (smb_create_group(name, &gid) != 0)
-               return NT_STATUS_ACCESS_DENIED;
+       smb_create_group(name);
 
        /* check if the group has been successfully created */
-       if ((grp=getgrgid(gid)) == NULL)
+       if ((grp=getgrnam(name)) == NULL)
                return NT_STATUS_ACCESS_DENIED;
 
        r_u->rid=pdb_gid_to_group_rid(grp->gr_gid);
@@ -3922,7 +3943,6 @@ NTSTATUS _samr_create_dom_alias(pipes_struct *p, SAMR_Q_CREATE_DOM_ALIAS *q_u, S
        struct samr_info *info;
        PRIVILEGE_SET priv_set;
        uint32 acc_granted;
-       gid_t gid;
 
        init_privilege(&priv_set);
 
@@ -3946,11 +3966,10 @@ NTSTATUS _samr_create_dom_alias(pipes_struct *p, SAMR_Q_CREATE_DOM_ALIAS *q_u, S
                return NT_STATUS_GROUP_EXISTS;
 
        /* we can create the UNIX group */
-       if (smb_create_group(name, &gid) != 0)
-               return NT_STATUS_ACCESS_DENIED;
+       smb_create_group(name);
 
        /* check if the group has been successfully created */
-       if ((grp=getgrgid(gid)) == NULL)
+       if ((grp=getgrnam(name)) == NULL)
                return NT_STATUS_ACCESS_DENIED;
 
        r_u->rid=pdb_gid_to_group_rid(grp->gr_gid);
@@ -4076,9 +4095,9 @@ NTSTATUS _samr_set_groupinfo(pipes_struct *p, SAMR_Q_SET_GROUPINFO *q_u, SAMR_R_
 }
 
 /*********************************************************************
- _samr_set_aliasinfo
+ _samr_set_groupinfo
  
- update an alias's comment.
+ update a domain group's comment.
 *********************************************************************/
 
 NTSTATUS _samr_set_aliasinfo(pipes_struct *p, SAMR_Q_SET_ALIASINFO *q_u, SAMR_R_SET_ALIASINFO *r_u)
@@ -4271,10 +4290,10 @@ NTSTATUS _samr_unknown_2e(pipes_struct *p, SAMR_Q_UNKNOWN_2E *q_u, SAMR_R_UNKNOW
                        break;
                case 0x02:
                        become_root();          
-                       r_u->status=load_sampwd_entries(info, ACB_NORMAL, False);
+                       r_u->status=load_sampwd_entries(info, ACB_NORMAL);
                        unbecome_root();
                        if (!NT_STATUS_IS_OK(r_u->status)) {
-                               DEBUG(5, ("_samr_unknown_2e: load_sampwd_entries failed\n"));
+                               DEBUG(5, ("_samr_query_dispinfo: load_sampwd_entries failed\n"));
                                return r_u->status;
                        }
                        num_users=info->disp_info.num_user_account;
@@ -4282,7 +4301,7 @@ NTSTATUS _samr_unknown_2e(pipes_struct *p, SAMR_Q_UNKNOWN_2E *q_u, SAMR_R_UNKNOW
                        
                        r_u->status=load_group_domain_entries(info, get_global_sam_sid());
                        if (NT_STATUS_IS_ERR(r_u->status)) {
-                               DEBUG(5, ("_samr_unknown_2e: load_group_domain_entries failed\n"));
+                               DEBUG(5, ("_samr_query_dispinfo: load_group_domain_entries failed\n"));
                                return r_u->status;
                        }
                        num_groups=info->disp_info.num_group_account;
index 2190215107af553f5e11072aa88b3a8260af3732..7aceaa548f29000bb4b1d5e9d55887ecb6b4cb2c 100644 (file)
@@ -4,7 +4,7 @@
  *  Copyright (C) Andrew Tridgell              1992-2000,
  *  Copyright (C) Luke Kenneth Casson Leighton 1996-2000,
  *  Copyright (C) Jean François Micouleau      1998-2000,
- *  Copyright (C) Jeremy Allison               2001-2002,
+ *  Copyright (C) Jeremy Allison                   2001,
  *  Copyright (C) Gerald Carter                       2000-2002,
  *  Copyright (C) Tim Potter                   2001-2002.
  *
@@ -87,10 +87,6 @@ typedef struct _Printer{
                fstring machine;
                fstring user;
        } client;
-       
-       /* devmode sent in the OpenPrinter() call */
-       NT_DEVICEMODE   *nt_devmode;
-       
 } Printer_entry;
 
 static Printer_entry *printers_list;
@@ -200,11 +196,6 @@ static void srv_spoolss_replycloseprinter(POLICY_HND *handle)
                cli_ulogoff(&notify_cli);
                cli_shutdown(&notify_cli);
                message_deregister(MSG_PRINTER_NOTIFY2);
-
-               /* Tell the connections db we're no longer interested in
-                * printer notify messages. */
-
-               register_message_flags( False, FLAG_MSG_PRINTING );
        }
 
        smb_connections--;
@@ -228,8 +219,6 @@ static void free_printer_entry(void *ptr)
        free_spool_notify_option(&Printer->notify.option);
        Printer->notify.option=NULL;
        Printer->notify.client_connected=False;
-       
-       free_nt_devicemode( &Printer->nt_devmode );
 
        /* Remove from the internal list. */
        DLIST_REMOVE(printers_list, Printer);
@@ -577,14 +566,7 @@ static BOOL is_monitoring_event(Printer_entry *p, uint16 notify_type,
 {
        SPOOL_NOTIFY_OPTION *option = p->notify.option;
        uint32 i, j;
-
-       /* 
-        * Flags should always be zero when the change notify
-        * is registered by the cliebnt's spooler.  A user Win32 app
-        * might use the flags though instead of the NOTIFY_OPTION_INFO 
-        * --jerry
-        */
-        
+       
        if (p->notify.flags)
                return is_monitoring_event_flags(
                        p->notify.flags, notify_type, notify_field);
@@ -734,177 +716,26 @@ static struct notify2_message_table job_notify_table[] = {
        /* 0x17 */ { "JOB_NOTIFY_BYTES_PRINTED", NULL },
 };
 
-
-/***********************************************************************
- Allocate talloc context for container object
- **********************************************************************/
-static void notify_msg_ctr_init( SPOOLSS_NOTIFY_MSG_CTR *ctr )
-{
-       if ( !ctr )
-               return;
-
-       ctr->ctx = talloc_init();
-               
-       return;
-}
-
-/***********************************************************************
- release all allocated memory and zero out structure
- **********************************************************************/
-static void notify_msg_ctr_destroy( SPOOLSS_NOTIFY_MSG_CTR *ctr )
-{
-       if ( !ctr )
-               return;
-
-       if ( ctr->ctx )
-               talloc_destroy(ctr->ctx);
-               
-       ZERO_STRUCTP(ctr);
-               
-       return;
-}
-
-/***********************************************************************
- **********************************************************************/
-static TALLOC_CTX* notify_ctr_getctx( SPOOLSS_NOTIFY_MSG_CTR *ctr )
-{
-       if ( !ctr )
-               return NULL;
-               
-       return ctr->ctx;
-}
-
-/***********************************************************************
- **********************************************************************/
-static SPOOLSS_NOTIFY_MSG_GROUP* notify_ctr_getgroup( SPOOLSS_NOTIFY_MSG_CTR *ctr, uint32 idx )
-{
-       if ( !ctr || !ctr->msg_groups )
-               return NULL;
-       
-       if ( idx >= ctr->num_groups )
-               return NULL;
-               
-       return &ctr->msg_groups[idx];
-
-}
-
-/***********************************************************************
- How many groups of change messages do we have ?
- **********************************************************************/
-static int notify_msg_ctr_numgroups( SPOOLSS_NOTIFY_MSG_CTR *ctr )
-{
-       if ( !ctr )
-               return 0;
-               
-       return ctr->num_groups;
-}
-
-/***********************************************************************
- Add a SPOOLSS_NOTIFY_MSG_CTR to the correct group
- **********************************************************************/
-static int notify_msg_ctr_addmsg( SPOOLSS_NOTIFY_MSG_CTR *ctr, SPOOLSS_NOTIFY_MSG *msg )
-{
-       SPOOLSS_NOTIFY_MSG_GROUP        *groups = NULL;
-       SPOOLSS_NOTIFY_MSG_GROUP        *msg_grp = NULL;
-       SPOOLSS_NOTIFY_MSG              *msg_list = NULL;
-       int                             i, new_slot;
-       
-       if ( !ctr || !msg )
-               return 0;
-       
-       /* loop over all groups looking for a matching printer name */
-       
-       for ( i=0; i<ctr->num_groups; i++ ) {
-               if ( strcmp(ctr->msg_groups[i].printername, msg->printer) == 0 )
-                       break;
-       }
-       
-       /* add a new group? */
-       
-       if ( i == ctr->num_groups )
-       {
-               ctr->num_groups++;
-
-               if ( !(groups = talloc_realloc( ctr->ctx, ctr->msg_groups, sizeof(SPOOLSS_NOTIFY_MSG_GROUP)*ctr->num_groups)) ) {
-                       DEBUG(0,("notify_msg_ctr_addmsg: talloc_realloc() failed!\n"));
-                       return 0;
-               }
-               ctr->msg_groups = groups;
-
-               /* clear the new entry and set the printer name */
-               
-               ZERO_STRUCT( ctr->msg_groups[ctr->num_groups-1] );
-               fstrcpy( ctr->msg_groups[ctr->num_groups-1].printername, msg->printer );
-       }
-       
-       /* add the change messages; 'i' is the correct index now regardless */
-       
-       msg_grp = &ctr->msg_groups[i];
-       
-       msg_grp->num_msgs++;
-       
-       if ( !(msg_list =  talloc_realloc( ctr->ctx, msg_grp->msgs, sizeof(SPOOLSS_NOTIFY_MSG)*msg_grp->num_msgs )) ) {
-               DEBUG(0,("notify_msg_ctr_addmsg: talloc_realloc() failed for new message [%d]!\n", msg_grp->num_msgs));
-               return 0;
-       }
-       msg_grp->msgs = msg_list;
-       
-       new_slot = msg_grp->num_msgs-1;
-       memcpy( &msg_grp->msgs[new_slot], msg, sizeof(SPOOLSS_NOTIFY_MSG) );
-       
-       /* need to allocate own copy of data */
-       
-       if ( msg->len != 0 ) 
-               msg_grp->msgs[new_slot].notify.data = talloc_memdup( ctr->ctx, msg->notify.data, msg->len );
-       
-       return ctr->num_groups;
-}
-
 /***********************************************************************
  Send a change notication message on all handles which have a call 
  back registered
  **********************************************************************/
 
-static void send_notify2_changes( SPOOLSS_NOTIFY_MSG_CTR *ctr, uint32 idx )
+static void process_notify2_message(struct spoolss_notify_msg *msg, 
+                                   TALLOC_CTX *mem_ctx)
 {
-       Printer_entry            *p;
-       TALLOC_CTX               *mem_ctx = notify_ctr_getctx( ctr );
-       SPOOLSS_NOTIFY_MSG_GROUP *msg_group = notify_ctr_getgroup( ctr, idx );
-       SPOOLSS_NOTIFY_MSG       *messages;
-       
-       
-       if ( !msg_group ) {
-               DEBUG(5,("send_notify2_changes() called with no msg group!\n"));
-               return;
-       }
-       
-       messages = msg_group->msgs;
-       
-       if ( !messages ) {
-               DEBUG(5,("send_notify2_changes() called with no messages!\n"));
-               return;
-       }
-       
-       DEBUG(8,("send_notify2_changes: Enter...[%s]\n", msg_group->printername));
-       
-       /* loop over all printers */
+       Printer_entry *p;
+
+       DEBUG(8,("process_notify2_message: Enter...[%s]\n", msg->printer));
        
-       for (p = printers_list; p; p = p->next) 
-       {
+       for (p = printers_list; p; p = p->next) {
                SPOOL_NOTIFY_INFO_DATA *data;
-               uint32  data_len = 0;
-               uint32  id;
-               int     i;
+               uint32 data_len = 1;
+               uint32 id;
 
                /* Is there notification on this handle? */
 
-               if ( !p->notify.client_connected )
+               if (!p->notify.client_connected)
                        continue;
 
                DEBUG(10,("Client connected! [%s]\n", p->dev.handlename));
@@ -913,31 +744,25 @@ static void send_notify2_changes( SPOOLSS_NOTIFY_MSG_CTR *ctr, uint32 idx )
                    notifications. */
 
                if ( ( p->printer_type == PRINTER_HANDLE_IS_PRINTER )  &&
-                   ( !strequal(msg_group->printername, p->dev.handlename) ) )
+                   ( !strequal(msg->printer, p->dev.handlename) ) )
                        continue;
 
                DEBUG(10,("Our printer\n"));
                
-               /* allocate the max entries possible */
-               
-               data = talloc( mem_ctx, msg_group->num_msgs*sizeof(SPOOL_NOTIFY_INFO_DATA) );
-               ZERO_STRUCTP(data);
-               
-               /* build the array of change notifications */
-               
-               for ( i=0; i<msg_group->num_msgs; i++ )
-               {
-                       SPOOLSS_NOTIFY_MSG      *msg = &messages[i];
-                       
                /* Are we monitoring this event? */
 
                if (!is_monitoring_event(p, msg->type, msg->field))
                        continue;
 
-                       
                DEBUG(10,("process_notify2_message: Sending message type [%x] field [%x] for printer [%s]\n",
                        msg->type, msg->field, p->dev.handlename));
 
+               /* OK - send the event to the client */
+
+               data = talloc(mem_ctx, sizeof(SPOOL_NOTIFY_INFO_DATA));
+
+               ZERO_STRUCTP(data);
+
                /* 
                 * if the is a printer notification handle and not a job notification 
                 * type, then set the id to 0.  Other wise just use what was specified
@@ -959,8 +784,8 @@ static void send_notify2_changes( SPOOLSS_NOTIFY_MSG_CTR *ctr, uint32 idx )
 
                /* Convert unix jobid to smb jobid */
 
-                       if (msg->flags & SPOOLSS_NOTIFY_MSG_UNIX_JOBID) 
-                       {
+               if (msg->flags & SPOOLSS_NOTIFY_MSG_UNIX_JOBID) {
+
                        id = sysjob_to_jobid(msg->id);
 
                        if (id == -1) {
@@ -969,20 +794,22 @@ static void send_notify2_changes( SPOOLSS_NOTIFY_MSG_CTR *ctr, uint32 idx )
                        }
                }
 
-                       construct_info_data( &data[data_len], msg->type, msg->field, id );
+               construct_info_data(data, msg->type, msg->field, id);
 
                switch(msg->type) {
                case PRINTER_NOTIFY_TYPE:
                                if ( !printer_notify_table[msg->field].fn )
                                goto done;
-                                       printer_notify_table[msg->field].fn(msg, &data[data_len], mem_ctx);
+                                       
+                               printer_notify_table[msg->field].fn(msg, data, mem_ctx);
                                
                        break;
                        
                case JOB_NOTIFY_TYPE:
                                if ( !job_notify_table[msg->field].fn )
                                goto done;
-                                       job_notify_table[msg->field].fn(msg, &data[data_len], mem_ctx);
+
+                               job_notify_table[msg->field].fn(msg, data, mem_ctx);
 
                                break;
 
@@ -991,139 +818,59 @@ static void send_notify2_changes( SPOOLSS_NOTIFY_MSG_CTR *ctr, uint32 idx )
                                goto done;
                        }
 
-                       data_len++;
-               }
-
                cli_spoolss_rrpcn( &notify_cli, mem_ctx, &p->notify.client_hnd, 
                                data_len, data, p->notify.change, 0 );
        }
-       
 done:
-       DEBUG(8,("send_notify2_changes: Exit...\n"));
+       DEBUG(8,("process_notify2_message: Exit...\n"));
        return;
 }
 
-/***********************************************************************
- **********************************************************************/
+/* Receive a notify2 message */
 
-static BOOL notify2_unpack_msg( SPOOLSS_NOTIFY_MSG *msg, void *buf, size_t len )
+static void receive_notify2_message(int msg_type, pid_t src, void *buf, 
+                                   size_t len)
 {
-
+       struct spoolss_notify_msg msg;
        int offset = 0;
+       TALLOC_CTX *mem_ctx = talloc_init();
 
        /* Unpack message */
 
+       ZERO_STRUCT(msg);
+
        offset += tdb_unpack((char *)buf + offset, len - offset, "f",
-                            msg->printer);
+                            msg.printer);
        
        offset += tdb_unpack((char *)buf + offset, len - offset, "ddddd",
-                            &msg->type, &msg->field, &msg->id, &msg->len, &msg->flags);
+                            &msg.type, &msg.field, &msg.id, &msg.len, &msg.flags);
 
-       if (msg->len == 0)
+       if (msg.len == 0)
                tdb_unpack((char *)buf + offset, len - offset, "dd",
-                          &msg->notify.value[0], &msg->notify.value[1]);
+                          &msg.notify.value[0], &msg.notify.value[1]);
        else
                tdb_unpack((char *)buf + offset, len - offset, "B", 
-                          &msg->len, &msg->notify.data);
+                          &msg.len, &msg.notify.data);
 
-       DEBUG(3, ("notify2_unpack_msg: got NOTIFY2 message, type %d, field 0x%02x, flags 0x%04x\n",
-                 msg->type, msg->field, msg->flags));
+       DEBUG(3, ("got NOTIFY2 message, type %d, field 0x%02x, flags 0x%04x\n",
+                 msg.type, msg.field, msg.flags));
 
-       if (msg->len == 0)
-               DEBUG(3, ("notify2_unpack_msg: value1 = %d, value2 = %d\n", msg->notify.value[0],
-                         msg->notify.value[1]));
+       if (msg.len == 0)
+               DEBUG(3, ("value1 = %d, value2 = %d\n", msg.notify.value[0],
+                         msg.notify.value[1]));
        else
-               dump_data(3, msg->notify.data, msg->len);
-
-       return True;
-}
-
-/********************************************************************
- Receive a notify2 message list
- ********************************************************************/
-
-static void receive_notify2_message_list(int msg_type, pid_t src, void *msg, size_t len)
-{
-       size_t                  msg_count, i;
-       char                    *buf = (char *)msg;
-       char                    *msg_ptr;
-       size_t                  msg_len;
-       SPOOLSS_NOTIFY_MSG      notify;
-       SPOOLSS_NOTIFY_MSG_CTR  messages;
-       int                     num_groups;
-
-       if (len < 4) {
-               DEBUG(0,("receive_notify2_message_list: bad message format (len < 4)!\n"));
-               return;
-       }
-       
-       msg_count = IVAL(buf, 0);
-       msg_ptr = buf + 4;
+               dump_data(3, msg.notify.data, msg.len);
 
-       DEBUG(5, ("receive_notify2_message_list: got %d messages in list\n", msg_count));
+       /* Process message */
 
-       if (msg_count == 0) {
-               DEBUG(0,("receive_notify2_message_list: bad message format (msg_count == 0) !\n"));
-               return;
-       }
+       process_notify2_message(&msg, mem_ctx);
 
-       /* initialize the container */
-       
-       ZERO_STRUCT( messages );
-       notify_msg_ctr_init( &messages );
-       
-       /* 
-        * build message groups for each printer identified
-        * in a change_notify msg.  Remember that a PCN message
-        * includes the handle returned for the srv_spoolss_replyopenprinter()
-        * call.  Therefore messages are grouped according to printer handle.
-        */
-        
-       for ( i=0; i<msg_count; i++ ) 
-       {
-               if (msg_ptr + 4 - buf > len) {
-                       DEBUG(0,("receive_notify2_message_list: bad message format (len > buf_size) !\n"));
-                       return;
-               }
+       /* Free message */
 
-               msg_len = IVAL(msg_ptr,0);
-               msg_ptr += 4;
+       if (msg.len > 0)
+               free(msg.notify.data);
 
-               if (msg_ptr + msg_len - buf > len) {
-                       DEBUG(0,("receive_notify2_message_list: bad message format (bad len) !\n"));
-                       return;
-               }
-               
-               /* unpack messages */
-               
-               ZERO_STRUCT( notify );
-               notify2_unpack_msg( &notify, msg_ptr, msg_len );
-               msg_ptr += msg_len;
-               
-               /* add to correct list in container */
-               
-               notify_msg_ctr_addmsg( &messages, &notify );
-               
-               /* free memory that might have been allocated by notify2_unpack_msg() */
-               
-               if ( notify.len != 0 )
-                       SAFE_FREE( notify.notify.data );
-       }
-       
-       /* process each group of messages */
-       
-       num_groups = notify_msg_ctr_numgroups( &messages );
-       for ( i=0; i<num_groups; i++ )
-               send_notify2_changes( &messages, i );
-       
-       
-       /* cleanup */
-               
-       DEBUG(10,("receive_notify2_message_list: processed %u messages\n", (uint32)msg_count ));
-               
-       notify_msg_ctr_destroy( &messages );
-       
-       return;
+       talloc_destroy(mem_ctx);
 }
 
 /********************************************************************
@@ -1396,65 +1143,14 @@ WERROR _spoolss_open_printer(pipes_struct *p, SPOOL_Q_OPEN_PRINTER *q_u, SPOOL_R
 /********************************************************************
  * spoolss_open_printer
  *
- * If the openprinterex rpc call contains a devmode,
- * it's a per-user one. This per-user devmode is derivated
- * from the global devmode. Openprinterex() contains a per-user 
- * devmode for when you do EMF printing and spooling.
- * In the EMF case, the NT workstation is only doing half the job
- * of rendering the page. The other half is done by running the printer
- * driver on the server.
- * The EMF file doesn't contain the page description (paper size, orientation, ...).
- * The EMF file only contains what is to be printed on the page.
- * So in order for the server to know how to print, the NT client sends
- * a devicemode attached to the openprinterex call.
- * But this devicemode is short lived, it's only valid for the current print job.
- *
- * If Samba would have supported EMF spooling, this devicemode would
- * have been attached to the handle, to sent it to the driver to correctly
- * rasterize the EMF file.
- *
- * As Samba only supports RAW spooling, we only receive a ready-to-print file,
- * we just act as a pass-thru between windows and the printer.
- *
- * In order to know that Samba supports only RAW spooling, NT has to call
- * getprinter() at level 2 (attribute field) or NT has to call startdoc()
- * and until NT sends a RAW job, we refuse it.
- *
- * But to call getprinter() or startdoc(), you first need a valid handle,
- * and to get an handle you have to call openprintex(). Hence why you have
- * a devicemode in the openprinterex() call.
- *
- *
- * Differences between NT4 and NT 2000.
- * NT4:
- * ---
- * On NT4, you only have a global devicemode. This global devicemode can be changed
- * by the administrator (or by a user with enough privs). Everytime a user
- * wants to print, the devicemode is resetted to the default. In Word, everytime
- * you print, the printer's characteristics are always reset to the global devicemode.
- *
- * NT 2000:
- * -------
- * In W2K, there is the notion of per-user devicemode. The first time you use
- * a printer, a per-user devicemode is build from the global devicemode.
- * If you change your per-user devicemode, it is saved in the registry, under the
- * H_KEY_CURRENT_KEY sub_tree. So that everytime you print, you have your default
- * printer preferences available.
- *
- * To change the per-user devicemode: it's the "Printing Preferences ..." button
- * on the General Tab of the printer properties windows.
- *
- * To change the global devicemode: it's the "Printing Defaults..." button
- * on the Advanced Tab of the printer properties window.
- *
- * JFM.
+ * called from the spoolss dispatcher
  ********************************************************************/
 
 WERROR _spoolss_open_printer_ex( pipes_struct *p, SPOOL_Q_OPEN_PRINTER_EX *q_u, SPOOL_R_OPEN_PRINTER_EX *r_u)
 {
-       UNISTR2                 *printername = NULL;
-       PRINTER_DEFAULT         *printer_default = &q_u->printer_default;
-       POLICY_HND              *handle = &r_u->handle;
+       UNISTR2 *printername = NULL;
+       PRINTER_DEFAULT *printer_default = &q_u->printer_default;
+       POLICY_HND *handle = &r_u->handle;
 
        fstring name;
        int snum;
@@ -1484,36 +1180,39 @@ Can't find printer handle we created for printer %s\n", name ));
                return WERR_INVALID_PRINTER_NAME;
        }
 
+       /*
+          First case: the user is opening the print server:
+
+          Disallow MS AddPrinterWizard if parameter disables it. A Win2k
+          client 1st tries an OpenPrinterEx with access==0, MUST be allowed.
+
+          Then both Win2k and WinNT clients try an OpenPrinterEx with
+          SERVER_ALL_ACCESS, which we allow only if the user is root (uid=0)
+          or if the user is listed in the smb.conf printer admin parameter.
+
+          Then they try OpenPrinterEx with SERVER_READ which we allow. This lets the
+          client view printer folder, but does not show the MSAPW.
+
+          Note: this test needs code to check access rights here too. Jeremy
+          could you look at this?
+          
+          
+          Second case: the user is opening a printer:
+          NT doesn't let us connect to a printer if the connecting user
+          doesn't have print permission.
+
+       */
+
        get_current_user(&user, p);
 
-       /*
-        * First case: the user is opening the print server:
-        *
-        * Disallow MS AddPrinterWizard if parameter disables it. A Win2k
-        * client 1st tries an OpenPrinterEx with access==0, MUST be allowed.
-        *
-        * Then both Win2k and WinNT clients try an OpenPrinterEx with
-        * SERVER_ALL_ACCESS, which we allow only if the user is root (uid=0)
-        * or if the user is listed in the smb.conf printer admin parameter.
-        *
-        * Then they try OpenPrinterEx with SERVER_READ which we allow. This lets the
-        * client view printer folder, but does not show the MSAPW.
-        *
-        * Note: this test needs code to check access rights here too. Jeremy
-        * could you look at this?
-        * 
-        * Second case: the user is opening a printer:
-        * NT doesn't let us connect to a printer if the connecting user
-        * doesn't have print permission.
-        */
+       if (Printer->printer_type == PRINTER_HANDLE_IS_PRINTSERVER) {
 
-       if (Printer->printer_type == PRINTER_HANDLE_IS_PRINTSERVER) 
-       {
                /* Printserver handles use global struct... */
 
                snum = -1;
 
-               /* Map standard access rights to object specific access rights */
+               /* Map standard access rights to object specific access
+                  rights */
                
                se_map_standard(&printer_default->access_required, 
                                &printserver_std_mapping);
@@ -1532,32 +1231,23 @@ Can't find printer handle we created for printer %s\n", name ));
 
                /* Allow admin access */
 
-               if ( printer_default->access_required & SERVER_ACCESS_ADMINISTER ) 
-               {
+               if (printer_default->access_required & 
+                   SERVER_ACCESS_ADMINISTER) {
+
                        if (!lp_ms_add_printer_wizard()) {
                                close_printer_handle(p, handle);
                                return WERR_ACCESS_DENIED;
                        }
 
-                       /* if the user is not root and not a printer admin, then fail */
-                       
-                       if ( user.uid != 0
-                            && !user_in_list(uidtoname(user.uid), lp_printer_admin(snum)) )
-                       {
-                               close_printer_handle(p, handle);
-                               return WERR_ACCESS_DENIED;
-                       }
+                       if (user.uid == 0 || 
+                           user_in_list(uidtoname(user.uid),
+                                        lp_printer_admin(snum)))
+                               return WERR_OK;
                        
-                       printer_default->access_required = SERVER_ACCESS_ADMINISTER;
-               }
-               else
-               {
-                       printer_default->access_required = SERVER_ACCESS_ENUMERATE;
+                       close_printer_handle(p, handle);
+                       return WERR_ACCESS_DENIED;
                }
 
-               DEBUG(4,("Setting print server access = %s\n", (printer_default->access_required == SERVER_ACCESS_ADMINISTER) 
-                       ? "SERVER_ACCESS_ADMINISTER" : "SERVER_ACCESS_ENUMERATE" ));
-                       
                /* We fall through to return WERR_OK */
                
        }
@@ -1606,24 +1296,84 @@ Can't find printer handle we created for printer %s\n", name ));
                else
                        printer_default->access_required = PRINTER_ACCESS_USE;
 
-               DEBUG(4,("Setting printer access = %s\n", (printer_default->access_required == PRINTER_ACCESS_ADMINISTER) 
-                       ? "PRINTER_ACCESS_ADMINISTER" : "PRINTER_ACCESS_USE" ));
+               DEBUG(4,("Setting printer access=%x\n", printer_default->access_required));
+               Printer->access_granted = printer_default->access_required;
+
+               /*
+                * If we have a default device pointer in the
+                * printer_default struct, then we need to get
+                * the printer info from the tdb and if there is
+                * no default devicemode there then we do a *SET*
+                * here ! This is insanity.... JRA.
+                */
+
+               /*
+                * If the openprinterex rpc call contains a devmode,
+                * it's a per-user one. This per-user devmode is derivated
+                * from the global devmode. Openprinterex() contains a per-user 
+                * devmode for when you do EMF printing and spooling.
+                * In the EMF case, the NT workstation is only doing half the job
+                * of rendering the page. The other half is done by running the printer
+                * driver on the server.
+                * The EMF file doesn't contain the page description (paper size, orientation, ...).
+                * The EMF file only contains what is to be printed on the page.
+                * So in order for the server to know how to print, the NT client sends
+                * a devicemode attached to the openprinterex call.
+                * But this devicemode is short lived, it's only valid for the current print job.
+                *
+                * If Samba would have supported EMF spooling, this devicemode would
+                * have been attached to the handle, to sent it to the driver to correctly
+                * rasterize the EMF file.
+                *
+                * As Samba only supports RAW spooling, we only receive a ready-to-print file,
+                * we just act as a pass-thru between windows and the printer.
+                *
+                * In order to know that Samba supports only RAW spooling, NT has to call
+                * getprinter() at level 2 (attribute field) or NT has to call startdoc()
+                * and until NT sends a RAW job, we refuse it.
+                *
+                * But to call getprinter() or startdoc(), you first need a valid handle,
+                * and to get an handle you have to call openprintex(). Hence why you have
+                * a devicemode in the openprinterex() call.
+                *
+                *
+                * Differences between NT4 and NT 2000.
+                * NT4:
+                * ---
+                * On NT4, you only have a global devicemode. This global devicemode can be changed
+                * by the administrator (or by a user with enough privs). Everytime a user
+                * wants to print, the devicemode is resetted to the default. In Word, everytime
+                * you print, the printer's characteristics are always reset to the global devicemode.
+                *
+                * NT 2000:
+                * -------
+                * In W2K, there is the notion of per-user devicemode. The first time you use
+                * a printer, a per-user devicemode is build from the global devicemode.
+                * If you change your per-user devicemode, it is saved in the registry, under the
+                * H_KEY_CURRENT_KEY sub_tree. So that everytime you print, you have your default
+                * printer preferences available.
+                *
+                * To change the per-user devicemode: it's the "Printing Preferences ..." button
+                * on the General Tab of the printer properties windows.
+                *
+                * To change the global devicemode: it's the "Printing Defaults..." button
+                * on the Advanced Tab of the printer properties window.
+                *
+                * JFM.
+                */
 
+
+
+#if 0
+               if (printer_default->devmode_cont.devmode != NULL) {
+                       result = printer_write_default_dev( snum, printer_default);
+                       if (result != 0) {
+                               close_printer_handle(p, handle);
+                               return result;
+                       }
+               }
+#endif
        }
-       
-       Printer->access_granted = printer_default->access_required;
-       
-       /* 
-        * If the client sent a devmode in the OpenPrinter() call, then
-        * save it here in case we get a job submission on this handle
-        */
-       
-        if ( (Printer->printer_type != PRINTER_HANDLE_IS_PRINTSERVER)
-               && q_u->printer_default.devmode_cont.devmode_ptr )
-        { 
-               convert_devicemode( Printer->dev.handlename, q_u->printer_default.devmode_cont.devmode,
-                       &Printer->nt_devmode );
-        }
 
        return WERR_OK;
 }
@@ -1849,11 +1599,8 @@ WERROR _spoolss_deleteprinterdriver(pipes_struct *p, SPOOL_Q_DELETEPRINTERDRIVER
        fstring                         driver;
        fstring                         arch;
        NT_PRINTER_DRIVER_INFO_LEVEL    info;
-       NT_PRINTER_DRIVER_INFO_LEVEL    info_win2k;
        int                             version;
        struct current_user             user;
-       WERROR                          status;
-       WERROR                          status_win2k = WERR_ACCESS_DENIED;
        
        get_current_user(&user, p);
         
@@ -1861,58 +1608,25 @@ WERROR _spoolss_deleteprinterdriver(pipes_struct *p, SPOOL_Q_DELETEPRINTERDRIVER
        unistr2_to_ascii(arch,   &q_u->arch,   sizeof(arch)-1   );
        
        /* check that we have a valid driver name first */
-       
-       if ((version=get_version_id(arch)) == -1) 
+       if ((version=get_version_id(arch)) == -1) {
+               /* this is what NT returns */
                return WERR_INVALID_ENVIRONMENT;
-                               
-       ZERO_STRUCT(info);
-       ZERO_STRUCT(info_win2k);
-       
-       if (!W_ERROR_IS_OK(get_a_printer_driver(&info, 3, driver, arch, version))) 
-       {
-               /* try for Win2k driver if "Windows NT x86" */
-               
-               if ( version == 2 ) {
-                       version = 3;
-                       if (!W_ERROR_IS_OK(get_a_printer_driver(&info, 3, driver, arch, version))) {
-                               status = WERR_UNKNOWN_PRINTER_DRIVER;
-                               goto done;
-                       }
-               }
        }
        
-       if (printer_driver_in_use(info.info_3)) {
-               status = WERR_PRINTER_DRIVER_IN_USE;
-               goto done;
-       }
+       /* if they said "Windows NT x86", then try for version 2 & 3 */
        
        if ( version == 2 )
-       {               
-               if (W_ERROR_IS_OK(get_a_printer_driver(&info_win2k, 3, driver, arch, 3)))
-               {
-                       /* if we get to here, we now have 2 driver info structures to remove */
-                       /* remove the Win2k driver first*/
-               
-                       status_win2k = delete_printer_driver(info_win2k.info_3, &user, 3, False );
-                       free_a_printer_driver( info_win2k, 3 );
+               version = DRIVER_ANY_VERSION;
                
-                       /* this should not have failed---if it did, report to client */
-                       if ( !W_ERROR_IS_OK(status_win2k) )
-                               goto done;
-               }
-       }
-       
-       status = delete_printer_driver(info.info_3, &user, version, False);
-       
-       /* if at least one of the deletes succeeded return OK */
+       ZERO_STRUCT(info);
        
-       if ( W_ERROR_IS_OK(status) || W_ERROR_IS_OK(status_win2k) )
-               status = WERR_OK;
+       if (!W_ERROR_IS_OK(get_a_printer_driver(&info, 3, driver, arch, version)))
+               return WERR_UNKNOWN_PRINTER_DRIVER;
        
-done:
-       free_a_printer_driver( info, 3 );
+       if (printer_driver_in_use(info.info_3))
+               return WERR_PRINTER_DRIVER_IN_USE;
 
-       return status;
+       return delete_printer_driver(info.info_3, &user, DRIVER_ANY_VERSION, False);
 }
 
 /********************************************************************
@@ -1924,13 +1638,10 @@ WERROR _spoolss_deleteprinterdriverex(pipes_struct *p, SPOOL_Q_DELETEPRINTERDRIV
        fstring                         driver;
        fstring                         arch;
        NT_PRINTER_DRIVER_INFO_LEVEL    info;
-       NT_PRINTER_DRIVER_INFO_LEVEL    info_win2k;
        int                             version;
        uint32                          flags = q_u->delete_flags;
        BOOL                            delete_files;
        struct current_user             user;
-       WERROR                          status;
-       WERROR                          status_win2k = WERR_ACCESS_DENIED;
        
        get_current_user(&user, p);
        
@@ -1945,36 +1656,17 @@ WERROR _spoolss_deleteprinterdriverex(pipes_struct *p, SPOOL_Q_DELETEPRINTERDRIV
        
        if ( flags & DPD_DELETE_SPECIFIC_VERSION )
                version = q_u->version;
+       else if ( version == 2 )
+               /* if they said "Windows NT x86", then try for version 2 & 3 */
+               version = DRIVER_ANY_VERSION;
                
        ZERO_STRUCT(info);
-       ZERO_STRUCT(info_win2k);
-               
-       status = get_a_printer_driver(&info, 3, driver, arch, version);
        
-       if ( !W_ERROR_IS_OK(status) ) 
-       {
-               /* 
-                * if the client asked for a specific version, 
-                * or this is something other than Windows NT x86,
-                * then we've failed 
-                */
-               
-               if ( (flags&DPD_DELETE_SPECIFIC_VERSION) || (version !=2) )
-                       goto done;
-                       
-               /* try for Win2k driver if "Windows NT x86" */
-               
-               version = 3;
-               if (!W_ERROR_IS_OK(get_a_printer_driver(&info, 3, driver, arch, version))) {
-                       status = WERR_UNKNOWN_PRINTER_DRIVER;
-                       goto done;
-               }
-       }
+       if (!W_ERROR_IS_OK(get_a_printer_driver(&info, 3, driver, arch, version))) 
+               return WERR_UNKNOWN_PRINTER_DRIVER;
                
-       if ( printer_driver_in_use(info.info_3) ) {
-               status = WERR_PRINTER_DRIVER_IN_USE;
-               goto done;
-       }
+       if ( printer_driver_in_use(info.info_3) )
+               return WERR_PRINTER_DRIVER_IN_USE;
        
        /* 
         * we have a couple of cases to consider. 
@@ -1990,119 +1682,24 @@ WERROR _spoolss_deleteprinterdriverex(pipes_struct *p, SPOOL_Q_DELETEPRINTERDRIV
        
        delete_files = flags & (DPD_DELETE_ALL_FILES|DPD_DELETE_UNUSED_FILES);
        
-       /* fail if any files are in use and DPD_DELETE_ALL_FILES is set */
-               
-       if ( delete_files && printer_driver_files_in_use(info.info_3) & (flags&DPD_DELETE_ALL_FILES) ) {
-               /* no idea of the correct error here */
-               status = WERR_ACCESS_DENIED;    
-               goto done;
-       }
-
-                       
-       /* also check for W32X86/3 if necessary; maybe we already have? */
-               
-       if ( (version == 2) && ((flags&DPD_DELETE_SPECIFIC_VERSION) != DPD_DELETE_SPECIFIC_VERSION)  ) {
-               if (W_ERROR_IS_OK(get_a_printer_driver(&info_win2k, 3, driver, arch, 3))) 
-               {
-                       
-                       if ( delete_files && printer_driver_files_in_use(info_win2k.info_3) & (flags&DPD_DELETE_ALL_FILES) ) {
-                               /* no idea of the correct error here */
-                               free_a_printer_driver( info_win2k, 3 );
-                               status = WERR_ACCESS_DENIED;    
-                               goto done;
-                       }
-               
-                       /* if we get to here, we now have 2 driver info structures to remove */
-                       /* remove the Win2k driver first*/
+       if ( delete_files ) 
+       {
+               /* fail if any files are in use and DPD_DELETE_ALL_FILES is set */
                
-                       status_win2k = delete_printer_driver(info_win2k.info_3, &user, 3, delete_files);
-                       free_a_printer_driver( info_win2k, 3 );
-                               
-                       /* this should not have failed---if it did, report to client */
-                               
-                       if ( !W_ERROR_IS_OK(status_win2k) )
-                               goto done;
-               }
+               if ( printer_driver_files_in_use(info.info_3) & (flags&DPD_DELETE_ALL_FILES) )
+                       /* no idea of the correct error here */
+                       return WERR_ACCESS_DENIED;      
        }
 
-       status = delete_printer_driver(info.info_3, &user, version, delete_files);
-
-       if ( W_ERROR_IS_OK(status) || W_ERROR_IS_OK(status_win2k) )
-               status = WERR_OK;
-done:
-       free_a_printer_driver( info, 3 );
-       
-       return status;
-}
-
-
-/****************************************************************************
- Internal routine for retreiving printerdata
- ***************************************************************************/
-
-static WERROR get_printer_dataex( TALLOC_CTX *ctx, NT_PRINTER_INFO_LEVEL *printer, 
-                                  char *key, char *value, uint32 *type, uint8 **data, 
-                                 uint32 *needed, uint32 in_size  )
-{
-       REGISTRY_VALUE          *val;
-       int                     size, data_len;
-       
-       if ( !(val = get_printer_data( printer->info_2, key, value)) )
-               return WERR_BADFILE;
-       
-       *type = regval_type( val );
-
-       DEBUG(5,("get_printer_dataex: allocating %d\n", in_size));
-
-       size = regval_size( val );
-       
-       /* copy the min(in_size, len) */
-       
-       if ( in_size ) {
-               data_len = (size > in_size) ? in_size : size*sizeof(uint8);
-               if ( (*data  = (uint8 *)talloc_memdup(ctx, regval_data_p(val), data_len)) == NULL )
-                       return WERR_NOMEM;
-       }
-       else
-               *data = NULL;
-
-       *needed = size;
-       
-       DEBUG(5,("get_printer_dataex: copy done\n"));
-
-       return WERR_OK;
-}
-
-/****************************************************************************
- Internal routine for removing printerdata
- ***************************************************************************/
-
-static WERROR delete_printer_dataex( NT_PRINTER_INFO_LEVEL *printer, char *key, char *value )
-{
-       delete_printer_data( printer->info_2, key, value );
-       
-       return mod_a_printer(*printer, 2);
+       return delete_printer_driver(info.info_3, &user, version, delete_files);
 }
 
-/****************************************************************************
- Internal routine for storing printerdata
- ***************************************************************************/
-
-static WERROR set_printer_dataex( NT_PRINTER_INFO_LEVEL *printer, char *key, char *value, 
-                                  uint32 type, uint8 *data, int real_len  )
-{
-       delete_printer_data( printer->info_2, key, value );
-       
-       add_printer_data( printer->info_2, key, value, type, data, real_len );
-       
-       return mod_a_printer(*printer, 2);
-}
 
 /********************************************************************
  GetPrinterData on a printer server Handle.
 ********************************************************************/
 
-static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint32 *type, uint8 **data, uint32 *needed, uint32 in_size)
+static BOOL getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint32 *type, uint8 **data, uint32 *needed, uint32 in_size)
 {              
        int i;
        
@@ -2111,50 +1708,50 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
        if (!strcmp(value, "W3SvcInstalled")) {
                *type = 0x4;
                if((*data = (uint8 *)talloc_zero(ctx, 4*sizeof(uint8) )) == NULL)
-                       return WERR_NOMEM;
-               *needed = 0x4;
-               return WERR_OK;
+                       return False;
+               *needed = 0x4;                  
+               return True;
        }
 
        if (!strcmp(value, "BeepEnabled")) {
                *type = 0x4;
                if((*data = (uint8 *)talloc(ctx, 4*sizeof(uint8) )) == NULL)
-                       return WERR_NOMEM;
+                       return False;
                SIVAL(*data, 0, 0x00);
                *needed = 0x4;                  
-               return WERR_OK;
+               return True;
        }
 
        if (!strcmp(value, "EventLog")) {
                *type = 0x4;
                if((*data = (uint8 *)talloc(ctx, 4*sizeof(uint8) )) == NULL)
-                       return WERR_NOMEM;
+                       return False;
                /* formally was 0x1b */
                SIVAL(*data, 0, 0x0);
                *needed = 0x4;                  
-               return WERR_OK;
+               return True;
        }
 
        if (!strcmp(value, "NetPopup")) {
                *type = 0x4;
                if((*data = (uint8 *)talloc(ctx, 4*sizeof(uint8) )) == NULL)
-                       return WERR_NOMEM;
+                       return False;
                SIVAL(*data, 0, 0x00);
                *needed = 0x4;
-               return WERR_OK;
+               return True;
        }
 
        if (!strcmp(value, "MajorVersion")) {
                *type = 0x4;
                if((*data = (uint8 *)talloc(ctx, 4*sizeof(uint8) )) == NULL)
-                       return WERR_NOMEM;
+                       return False;
 #ifndef EMULATE_WIN2K_HACK /* JERRY */
                SIVAL(*data, 0, 2);
 #else
                SIVAL(*data, 0, 3);
 #endif
                *needed = 0x4;
-               return WERR_OK;
+               return True;
        }
 
        if (!strcmp(value, "DefaultSpoolDirectory")) {
@@ -2164,7 +1761,7 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
                *type = 0x1;                    
                *needed = 2*(strlen(string)+1);         
                if((*data  = (uint8 *)talloc(ctx, ((*needed > in_size) ? *needed:in_size) *sizeof(uint8))) == NULL)
-                       return WERR_NOMEM;
+                       return False;
                memset(*data, 0, (*needed > in_size) ? *needed:in_size);
                
                /* it's done by hand ready to go on the wire */
@@ -2172,7 +1769,7 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
                        (*data)[2*i]=string[i];
                        (*data)[2*i+1]='\0';
                }                       
-               return WERR_OK;
+               return True;
        }
 
        if (!strcmp(value, "Architecture")) {                   
@@ -2180,36 +1777,97 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
                *type = 0x1;                    
                *needed = 2*(strlen(string)+1); 
                if((*data  = (uint8 *)talloc(ctx, ((*needed > in_size) ? *needed:in_size) *sizeof(uint8))) == NULL)
-                       return WERR_NOMEM;
+                       return False;
                memset(*data, 0, (*needed > in_size) ? *needed:in_size);
                for (i=0; i<strlen(string); i++) {
                        (*data)[2*i]=string[i];
                        (*data)[2*i+1]='\0';
                }                       
-               return WERR_OK;
+               return True;
        }
        
-       return WERR_INVALID_PARAM;
+       return False;
 }
 
+/********************************************************************
+ GetPrinterData on a printer Handle.
+********************************************************************/
+
+static BOOL getprinterdata_printer(pipes_struct *p, TALLOC_CTX *ctx, POLICY_HND *handle,
+                               fstring value, uint32 *type,
+                               uint8 **data, uint32 *needed, uint32 in_size )
+{
+       NT_PRINTER_INFO_LEVEL *printer = NULL;
+       int             snum=0; 
+       Printer_entry   *Printer = find_printer_index_by_hnd(p, handle);
+       REGISTRY_VALUE  *val;
+       int             size = 0;
+       
+       DEBUG(5,("getprinterdata_printer\n"));
+
+       if ( !Printer ) {
+               DEBUG(2,("getprinterdata_printer: Invalid handle (%s:%u:%u).\n", OUR_HANDLE(handle)));
+               return False;
+       }
+
+       if ( !get_printer_snum(p, handle, &snum) )
+               return False;
+
+       if ( !W_ERROR_IS_OK(get_a_printer(&printer, 2, lp_servicename(snum))) )
+               return False;
+
+       if ( !(val = get_printer_data( printer->info_2, SPOOL_PRINTERDATA_KEY, value)) )
+       {
+               free_a_printer(&printer, 2);
+               return False;
+       }
+       
+       *type = regval_type( val );
+
+
+       DEBUG(5,("getprinterdata_printer:allocating %d\n", in_size));
+
+       if (in_size) 
+       {
+               if ( (*data  = (uint8 *)talloc(ctx, in_size * sizeof(uint8))) == NULL )
+                       return False;
+
+               memset( *data, 0, in_size *sizeof(uint8) );
+               
+               /* copy the min(in_size, len) */
+               
+               size = regval_size( val );
+               memcpy( *data, regval_data_p(val), (size > in_size) ? in_size : size*sizeof(uint8) );
+       }
+       else
+               *data = NULL;
+
+       *needed = size;
+       
+       DEBUG(5,("getprinterdata_printer:copy done\n"));
+                       
+       
+       free_a_printer(&printer, 2);
+       return True;
+}      
+
 /********************************************************************
  * spoolss_getprinterdata
  ********************************************************************/
 
 WERROR _spoolss_getprinterdata(pipes_struct *p, SPOOL_Q_GETPRINTERDATA *q_u, SPOOL_R_GETPRINTERDATA *r_u)
 {
-       POLICY_HND      *handle = &q_u->handle;
-       UNISTR2         *valuename = &q_u->valuename;
-       uint32          in_size = q_u->size;
-       uint32          *type = &r_u->type;
-       uint32          *out_size = &r_u->size;
-       uint8           **data = &r_u->data;
-       uint32          *needed = &r_u->needed;
-       WERROR          status;
-       fstring         value;
-       Printer_entry   *Printer = find_printer_index_by_hnd(p, handle);
-       NT_PRINTER_INFO_LEVEL   *printer = NULL;
-       int             snum = 0;
+       POLICY_HND *handle = &q_u->handle;
+       UNISTR2 *valuename = &q_u->valuename;
+       uint32 in_size = q_u->size;
+       uint32 *type = &r_u->type;
+       uint32 *out_size = &r_u->size;
+       uint8 **data = &r_u->data;
+       uint32 *needed = &r_u->needed;
+
+       fstring value;
+       BOOL found=False;
+       Printer_entry *Printer = find_printer_index_by_hnd(p, handle);
        
        /*
         * Reminder: when it's a string, the length is in BYTES
@@ -2227,58 +1885,45 @@ WERROR _spoolss_getprinterdata(pipes_struct *p, SPOOL_Q_GETPRINTERDATA *q_u, SPO
        
        DEBUG(4,("_spoolss_getprinterdata\n"));
        
-       if ( !Printer ) {
+       if (!Printer) {
+               if((*data=(uint8 *)talloc_zero(p->mem_ctx, 4*sizeof(uint8))) == NULL)
+                       return WERR_NOMEM;
                DEBUG(2,("_spoolss_getprinterdata: Invalid handle (%s:%u:%u).\n", OUR_HANDLE(handle)));
-               status = WERR_BADFID;
-               goto done;
+               return WERR_BADFID;
        }
        
        unistr2_to_ascii(value, valuename, sizeof(value)-1);
        
-       if ( Printer->printer_type == PRINTER_HANDLE_IS_PRINTSERVER )
-               status = getprinterdata_printer_server( p->mem_ctx, value, type, data, needed, *out_size );
+       if (Printer->printer_type == PRINTER_HANDLE_IS_PRINTSERVER)
+               found = getprinterdata_printer_server(p->mem_ctx, value, type, data, needed, *out_size);
        else
-       {
-               if ( !get_printer_snum(p,handle, &snum) ) {
-                       status = WERR_BADFID;
-                       goto done;
-               }
-
-               status = get_a_printer(&printer, 2, lp_servicename(snum));
-               if ( !W_ERROR_IS_OK(status) )
-                       goto done;
-                       
-               status = get_printer_dataex( p->mem_ctx, printer, SPOOL_PRINTERDATA_KEY, value, type, data, needed, *out_size );
-       }
+               found = getprinterdata_printer(p, p->mem_ctx, handle, value, type, data, needed, *out_size);
 
-       if (*needed > *out_size)
-               status = WERR_MORE_DATA;
-       
-done:
-       if ( !W_ERROR_IS_OK(status) ) 
+       if ( !found ) 
        {
-               DEBUG(5, ("error: allocating %d\n", *out_size));
+               DEBUG(5, ("value not found, allocating %d\n", *out_size));
                
                /* reply this param doesn't exist */
                
-               if ( *out_size ) {
-                       if((*data=(uint8 *)talloc_zero(p->mem_ctx, *out_size*sizeof(uint8))) == NULL) {
-                               if ( printer ) 
-                                       free_a_printer( &printer, 2 );
+               if (*out_size) {
+                       if((*data=(uint8 *)talloc_zero(p->mem_ctx, *out_size*sizeof(uint8))) == NULL)
                                return WERR_NOMEM;
-               } 
-               } 
-               else {
+               } else {
                        *data = NULL;
                }
-       }
-       
-       /* cleanup & exit */
 
-       if ( printer )
-               free_a_printer( &printer, 2 );
+               /* error depends on handle type */
+
+               if (Printer->printer_type == PRINTER_HANDLE_IS_PRINTSERVER)
+                       return WERR_INVALID_PARAM;
+               else 
+                       return WERR_BADFILE;
+       }
        
-       return status;
+       if (*needed > *out_size)
+               return WERR_MORE_DATA;
+       else 
+               return WERR_OK;
 }
 
 /*********************************************************
@@ -2316,7 +1961,6 @@ static BOOL spoolss_connect_to_client(struct cli_state *the_cli, char *remote_ma
        if (!attempt_netbios_session_request(the_cli, global_myname, remote_machine, &the_cli->dest_ip)) {
                DEBUG(0,("connect_to_client: machine %s rejected the NetBIOS session request.\n", 
                        remote_machine));
-               cli_shutdown(the_cli);
                return False;
        }
 
@@ -2392,10 +2036,7 @@ static BOOL srv_spoolss_replyopenprinter(char *printer, uint32 localprinter, uin
                if(!spoolss_connect_to_client(&notify_cli, unix_printer))
                        return False;
                        
-               message_register(MSG_PRINTER_NOTIFY2, receive_notify2_message_list);
-               /* Tell the connections db we're now interested in printer
-                * notify messages. */
-               register_message_flags( True, FLAG_MSG_PRINTING );
+               message_register(MSG_PRINTER_NOTIFY2, receive_notify2_message);
        }
 
        smb_connections++;
@@ -2795,8 +2436,8 @@ static void spoolss_notify_security_desc(int snum,
                                         NT_PRINTER_INFO_LEVEL *printer,
                                         TALLOC_CTX *mem_ctx)
 {
-       data->notify_data.sd.size = printer->info_2->secdesc_buf->len;
-       data->notify_data.sd.desc = dup_sec_desc( mem_ctx, printer->info_2->secdesc_buf->sec ) ;
+       data->notify_data.data.length=0;
+       data->notify_data.data.string = NULL;
 }
 
 /*******************************************************************
@@ -3802,20 +3443,47 @@ static void free_dev_mode(DEVICEMODE *dev)
        SAFE_FREE(dev); 
 }
 
-
 /****************************************************************************
- Convert an NT_DEVICEMODE to a DEVICEMODE structure.  Both pointers 
- should be valid upon entry
+ Create a DEVMODE struct. Returns malloced memory.
 ****************************************************************************/
 
-static BOOL convert_nt_devicemode( DEVICEMODE *devmode, NT_DEVICEMODE *ntdevmode )
+DEVICEMODE *construct_dev_mode(int snum)
 {
-       if ( !devmode || !ntdevmode )
-               return False;
-               
-       init_unistr(&devmode->devicename, ntdevmode->devicename);
+       char adevice[32];
+       char aform[32];
+       NT_PRINTER_INFO_LEVEL *printer = NULL;
+       NT_DEVICEMODE *ntdevmode = NULL;
+       DEVICEMODE *devmode = NULL;
 
-       init_unistr(&devmode->formname, ntdevmode->formname);
+       DEBUG(7,("construct_dev_mode\n"));
+       
+       DEBUGADD(8,("getting printer characteristics\n"));
+
+       if ((devmode = (DEVICEMODE *)malloc(sizeof(DEVICEMODE))) == NULL) {
+               DEBUG(2,("construct_dev_mode: malloc fail.\n"));
+               return NULL;
+       }
+
+       ZERO_STRUCTP(devmode);  
+
+       if (!W_ERROR_IS_OK(get_a_printer(&printer, 2, lp_servicename(snum))))
+               goto fail;
+
+       if (printer->info_2->devmode)
+               ntdevmode = dup_nt_devicemode(printer->info_2->devmode);
+
+       if (ntdevmode == NULL) {
+               DEBUG(5, ("BONG! There was no device mode!\n"));
+               goto fail;
+       }
+
+       DEBUGADD(8,("loading DEVICEMODE\n"));
+
+       slprintf(adevice, sizeof(adevice)-1, printer->info_2->printername);
+       init_unistr(&devmode->devicename, adevice);
+
+       slprintf(aform, sizeof(aform)-1, ntdevmode->formname);
+       init_unistr(&devmode->formname, aform);
 
        devmode->specversion      = ntdevmode->specversion;
        devmode->driverversion    = ntdevmode->driverversion;
@@ -3843,51 +3511,23 @@ static BOOL convert_nt_devicemode( DEVICEMODE *devmode, NT_DEVICEMODE *ntdevmode
 
        if (ntdevmode->private != NULL) {
                if ((devmode->private=(uint8 *)memdup(ntdevmode->private, ntdevmode->driverextra)) == NULL)
-                       return False;
-       }
-       
-       return True;
-}
-
-/****************************************************************************
- Create a DEVMODE struct. Returns malloced memory.
-****************************************************************************/
-
-DEVICEMODE *construct_dev_mode(int snum)
-{
-       NT_PRINTER_INFO_LEVEL   *printer = NULL;
-       DEVICEMODE              *devmode = NULL;
-       
-       DEBUG(7,("construct_dev_mode\n"));
-       
-       DEBUGADD(8,("getting printer characteristics\n"));
-
-       if (!W_ERROR_IS_OK(get_a_printer(&printer, 2, lp_servicename(snum)))) 
-               return NULL;
-
-       if ( !printer->info_2->devmode ) {
-               DEBUG(5, ("BONG! There was no device mode!\n"));
-               goto done;
+                       goto fail;
        }
 
-       if ((devmode = (DEVICEMODE *)malloc(sizeof(DEVICEMODE))) == NULL) {
-               DEBUG(2,("construct_dev_mode: malloc fail.\n"));
-               goto done;
-       }
+       free_nt_devicemode(&ntdevmode);
+       free_a_printer(&printer,2);
 
-       ZERO_STRUCTP(devmode);  
-       
-       DEBUGADD(8,("loading DEVICEMODE\n"));
+       return devmode;
 
-       if ( !convert_nt_devicemode( devmode, printer->info_2->devmode ) ) {
-               free_dev_mode( devmode );
-               devmode = NULL;
-       }
+  fail:
 
-done:
-       free_a_printer(&printer,2);
+       if (ntdevmode)
+               free_nt_devicemode(&ntdevmode);
+       if (printer)
+               free_a_printer(&printer,2);
+       free_dev_mode(devmode);
 
-       return devmode;
+       return NULL;
 }
 
 /********************************************************************
@@ -4744,7 +4384,7 @@ static WERROR construct_printer_driver_info_2(DRIVER_INFO_2 *info, int snum, fst
  * convert an array of ascii string to a UNICODE string
  ********************************************************************/
 
-static uint32 init_unistr_array(uint16 **uni_array, fstring *char_array, char *servername)
+static void init_unistr_array(uint16 **uni_array, fstring *char_array, char *servername)
 {
        int i=0;
        int j=0;
@@ -4757,34 +4397,26 @@ static uint32 init_unistr_array(uint16 **uni_array, fstring *char_array, char *s
 
        while (True) 
        {
-               if ( !char_array )
+               if (char_array == NULL)
                        v = "";
-               else 
-               {
+               else {
                        v = char_array[i];
-                       if (!v) 
-                               v = ""; /* hack to handle null lists */
+                       if (!v) v = ""; /* hack to handle null lists */
                }
                
-               /* hack to allow this to be used in places other than when generating 
-                  the list of dependent files */
-                  
-               if ( servername )
-                       slprintf( line, sizeof(line)-1, "\\\\%s%s", servername, v );
-               else
-                       pstrcpy( line, v );
+               if ( !strlen(v) ) 
+                       break;
                        
+               slprintf(line, sizeof(line)-1, "\\\\%s%s", servername, v);
+               
                DEBUGADD(6,("%d:%s:%d\n", i, line, strlen(line)));
                
-               if ( (tuary=Realloc(*uni_array, (j+strlen(line)+2)*sizeof(uint16))) == NULL ) {
+               if((tuary=Realloc(*uni_array, (j+strlen(line)+2)*sizeof(uint16))) == NULL) {
                        DEBUG(2,("init_unistr_array: Realloc error\n" ));
-                       return 0;
+                       return;
                } else
                        *uni_array = tuary;
                        
-               if ( !strlen(v) ) 
-                       break;
-               
                j += (rpcstr_push((*uni_array+j), line, sizeof(uint16)*strlen(line)+2, STR_TERMINATE) / sizeof(uint16));
                i++;
        }
@@ -4794,10 +4426,6 @@ static uint32 init_unistr_array(uint16 **uni_array, fstring *char_array, char *s
        }
        
        DEBUGADD(6,("last one:done\n"));
-
-       /* return size of array in uint16's */
-               
-       return j+1;
 }
 
 /********************************************************************
@@ -4816,29 +4444,29 @@ static void fill_printer_driver_info_3(DRIVER_INFO_3 *info, NT_PRINTER_DRIVER_IN
        init_unistr( &info->name, driver.info_3->name );        
        init_unistr( &info->architecture, driver.info_3->environment );
 
-       if (strlen(driver.info_3->driverpath)) {
-               slprintf(temp, sizeof(temp)-1, "\\\\%s%s", servername, driver.info_3->driverpath);              
-               init_unistr( &info->driverpath, temp );
-       } else
-               init_unistr( &info->driverpath, "" );
+    if (strlen(driver.info_3->driverpath)) {
+        slprintf(temp, sizeof(temp)-1, "\\\\%s%s", servername, driver.info_3->driverpath);             
+        init_unistr( &info->driverpath, temp );
+    } else
+        init_unistr( &info->driverpath, "" );
     
-       if (strlen(driver.info_3->datafile)) {
-               slprintf(temp, sizeof(temp)-1, "\\\\%s%s", servername, driver.info_3->datafile);
-               init_unistr( &info->datafile, temp );
-       } else
-               init_unistr( &info->datafile, "" );
+    if (strlen(driver.info_3->datafile)) {
+        slprintf(temp, sizeof(temp)-1, "\\\\%s%s", servername, driver.info_3->datafile);
+        init_unistr( &info->datafile, temp );
+    } else
+        init_unistr( &info->datafile, "" );
 
-       if (strlen(driver.info_3->configfile)) {
-               slprintf(temp, sizeof(temp)-1, "\\\\%s%s", servername, driver.info_3->configfile);
-               init_unistr( &info->configfile, temp ); 
-       } else
-               init_unistr( &info->configfile, "" );
+    if (strlen(driver.info_3->configfile)) {
+        slprintf(temp, sizeof(temp)-1, "\\\\%s%s", servername, driver.info_3->configfile);
+        init_unistr( &info->configfile, temp );        
+    } else
+        init_unistr( &info->configfile, "" );
 
-       if (strlen(driver.info_3->helpfile)) {
-               slprintf(temp, sizeof(temp)-1, "\\\\%s%s", servername, driver.info_3->helpfile);
-               init_unistr( &info->helpfile, temp );
-       } else
-               init_unistr( &info->helpfile, "" );
+    if (strlen(driver.info_3->helpfile)) {
+        slprintf(temp, sizeof(temp)-1, "\\\\%s%s", servername, driver.info_3->helpfile);
+        init_unistr( &info->helpfile, temp );
+    } else
+        init_unistr( &info->helpfile, "" );
 
        init_unistr( &info->monitorname, driver.info_3->monitorname );
        init_unistr( &info->defaultdatatype, driver.info_3->defaultdatatype );
@@ -5305,6 +4933,10 @@ WERROR _spoolss_startdocprinter(pipes_struct *p, SPOOL_Q_STARTDOCPRINTER *q_u, S
         * in EMF format.
         *
         * So I add checks like in NT Server ...
+        *
+        * lkclXXXX jean-francois, i love this kind of thing.  oh, well,
+        * there's a bug in NT client-side code, so we'll fix it in the
+        * server-side code. *nnnnnggggh!*
         */
        
        if (info_1->p_datatype != 0) {
@@ -5322,7 +4954,7 @@ WERROR _spoolss_startdocprinter(pipes_struct *p, SPOOL_Q_STARTDOCPRINTER *q_u, S
 
        unistr2_to_ascii(jobname, &info_1->docname, sizeof(jobname));
        
-       Printer->jobid = print_job_start(&user, snum, jobname, Printer->nt_devmode);
+       Printer->jobid = print_job_start(&user, snum, jobname);
 
        /* An error occured in print_job_start() so return an appropriate
           NT error code. */
@@ -5372,13 +5004,6 @@ WERROR _spoolss_writeprinter(pipes_struct *p, SPOOL_Q_WRITEPRINTER *q_u, SPOOL_R
                return WERR_BADFID;
 
        (*buffer_written) = print_job_write(snum, Printer->jobid, (char *)buffer, buffer_size);
-       if (*buffer_written == -1) {
-               r_u->buffer_written = 0;
-               if (errno == ENOSPC)
-                       return WERR_NO_SPOOL_SPACE;
-               else
-                       return WERR_ACCESS_DENIED;
-       }
 
        r_u->buffer_written = q_u->buffer_size2;
 
@@ -5421,13 +5046,11 @@ static WERROR control_printer(POLICY_HND *handle, uint32 command,
                        errcode = WERR_OK;
                }
                break;
-#if 0  /* JERRY - Never called */
        case PRINTER_CONTROL_PURGE:
                if (print_queue_purge(&user, snum, &errcode)) {
                        errcode = WERR_OK;
                }
                break;
-#endif
        default:
                return WERR_UNKNOWN_LEVEL;
        }
@@ -5437,31 +5060,13 @@ static WERROR control_printer(POLICY_HND *handle, uint32 command,
 
 /********************************************************************
  * api_spoolss_abortprinter
- * From MSDN: "Deletes printer's spool file if printer is configured
- * for spooling"
  ********************************************************************/
 
 WERROR _spoolss_abortprinter(pipes_struct *p, SPOOL_Q_ABORTPRINTER *q_u, SPOOL_R_ABORTPRINTER *r_u)
 {
-       POLICY_HND      *handle = &q_u->handle;
-       Printer_entry   *Printer = find_printer_index_by_hnd(p, handle);
-       int             snum;
-       struct          current_user user;
-       WERROR          errcode = WERR_OK;
-       
-       if (!Printer) {
-               DEBUG(2,("_spoolss_abortprinter: Invalid handle (%s:%u:%u)\n",OUR_HANDLE(handle)));
-               return WERR_BADFID;
-       }
-       
-       if (!get_printer_snum(p, handle, &snum))
-               return WERR_BADFID;
-       
-       get_current_user( &user, p );   
-       
-       print_job_delete( &user, snum, Printer->jobid, &errcode );      
-       
-       return errcode;
+       POLICY_HND *handle = &q_u->handle;
+
+       return control_printer(handle, PRINTER_CONTROL_PURGE, p);
 }
 
 /********************************************************************
@@ -5710,6 +5315,22 @@ static WERROR update_printer(pipes_struct *p, POLICY_HND *handle, uint32 level,
                goto done;
        }
 
+#if 0  /* JERRY */
+       
+       /*
+        * Another one of those historical misunderstandings...
+        * This is reminisent of a similar call we had in _spoolss_setprinterdata()
+        * I'm leaving it here as a reminder.  --jerry
+        */
+
+       if (nt_printer_info_level_equal(printer, old_printer)) {
+               DEBUG(3, ("update_printer: printer info has not changed\n"));
+               result = WERR_OK;
+               goto done;
+       }
+
+#endif
+
        /* Check calling user has permission to update printer description */
 
        if (Printer->access_granted != PRINTER_ACCESS_ADMINISTER) {
@@ -5728,22 +5349,49 @@ static WERROR update_printer(pipes_struct *p, POLICY_HND *handle, uint32 level,
        }
        
        /*
-        * When a *new* driver is bound to a printer, the drivername is used to
-        * lookup previously saved driver initialization info, which is then
-        * bound to the printer, simulating what happens in the Windows arch.
+        * Set the DRIVER_INIT info in the tdb; trigger on magic value for the
+        * DEVMODE.displayfrequency, which is not used for printer drivers. This
+        * requires Win32 client code (see other notes elsewhere in the code).
         */
-       if (!strequal(printer->info_2->drivername, old_printer->info_2->drivername))
+       if (printer->info_2->devmode &&
+               printer->info_2->devmode->displayfrequency == MAGIC_DISPLAY_FREQUENCY) 
        {
-               if (!set_driver_init(printer, 2)) 
-               {
-                       DEBUG(5,("update_printer: Error restoring driver initialization data for driver [%s]!\n",
-                               printer->info_2->drivername));
+               DEBUG(10,("update_printer: Save printer driver init data\n"));
+               printer->info_2->devmode->displayfrequency = 0;
+               if (update_driver_init(*printer, 2)!=0) {
+                       DEBUG(10,("update_printer: error updating printer driver init DEVMODE\n"));
+                       result = WERR_ACCESS_DENIED;
+                       goto done;
                }
                
-               DEBUG(10,("update_printer: changing driver [%s]!  Sending event!\n",
-                       printer->info_2->drivername));
+               /* we need to reset all driver init data for all printers 
+                  bound to this driver */
+               
+               srv_spoolss_reset_printerdata( printer->info_2->drivername );
+               
+       } 
+       else 
+       {
+               /*
+                * When a *new* driver is bound to a printer, the drivername is used to
+                * lookup previously saved driver initialization info, which is then
+                * bound to the printer, simulating what happens in the Windows arch.
+                */
+               if (!strequal(printer->info_2->drivername, old_printer->info_2->drivername))
+               {
+                       if (!set_driver_init(printer, 2)) 
+                       {
+                               DEBUG(5,("update_printer: Error restoring driver initialization data for driver [%s]!\n",
+                                       printer->info_2->drivername));
+                       }
                        
-               notify_printer_driver(snum, printer->info_2->drivername);
+                       DEBUG(10,("update_printer: changing driver [%s]!  Sending event!\n",
+                               printer->info_2->drivername));
+                               
+                       notify_printer_driver(snum, printer->info_2->drivername);
+               }
        }
 
        /* Update printer info */
@@ -6946,11 +6594,8 @@ static WERROR spoolss_addprinterex_level_2( pipes_struct *p, const UNISTR2 *uni_
         */
 
        if (!devmode)
-       {
                set_driver_init(printer, 2);
-       }
-       else 
-       {
+       else {
                /* A valid devmode was included, convert and link it
                */
                DEBUGADD(10, ("spoolss_addprinterex_level_2: devmode included, converting\n"));
@@ -6960,6 +6605,8 @@ static WERROR spoolss_addprinterex_level_2( pipes_struct *p, const UNISTR2 *uni_
                        return  WERR_NOMEM;
        }
 
+       set_driver_init(printer, 2);
+       
        /* write the ASCII on disk */
        err = mod_a_printer(*printer, 2);
        if (!W_ERROR_IS_OK(err)) {
@@ -7258,7 +6905,7 @@ WERROR _spoolss_enumprinterdata(pipes_struct *p, SPOOL_Q_ENUMPRINTERDATA *q_u, S
        uint32 idx               = q_u->index;
        uint32 in_value_len      = q_u->valuesize;
        uint32 in_data_len       = q_u->datasize;
-       uint32 *out_max_value_len = &r_u->valuesize;
+       uint32 *out_max_value_len= &r_u->valuesize;
        uint16 **out_value       = &r_u->value;
        uint32 *out_value_len    = &r_u->realvaluesize;
        uint32 *out_type         = &r_u->type;
@@ -7465,8 +7112,7 @@ WERROR _spoolss_setprinterdata( pipes_struct *p, SPOOL_Q_SETPRINTERDATA *q_u, SP
         * when connecting to a printer  --jerry
         */
 
-       if (Printer->access_granted != PRINTER_ACCESS_ADMINISTER) 
-       {
+       if (Printer->access_granted != PRINTER_ACCESS_ADMINISTER) {
                DEBUG(3, ("_spoolss_setprinterdata: change denied by handle access permissions\n"));
                status = WERR_ACCESS_DENIED;
                goto done;
@@ -7476,27 +7122,15 @@ WERROR _spoolss_setprinterdata( pipes_struct *p, SPOOL_Q_SETPRINTERDATA *q_u, SP
        if (!W_ERROR_IS_OK(status))
                return status;
 
-       unistr2_to_ascii( valuename, value, sizeof(valuename)-1 );
+       /* save the registry data */
        
-       /*
-        * When client side code sets a magic printer data key, detect it and save
-        * the current printer data and the magic key's data (its the DEVMODE) for
-        * future printer/driver initializations.
-        */
-       if ( (type == REG_BINARY) && strequal( valuename, PHANTOM_DEVMODE_KEY)) 
-       {
-               /* Set devmode and printer initialization info */
-               status = save_driver_init( printer, 2, data, real_len );
+       unistr2_to_ascii( valuename, value, sizeof(valuename)-1 );
+       delete_printer_data( printer->info_2, SPOOL_PRINTERDATA_KEY, valuename );
+       add_printer_data( printer->info_2, SPOOL_PRINTERDATA_KEY, valuename, type, data, real_len );
+
+       /* write the **entire** printer out to disk.... :-( */  
        
-               srv_spoolss_reset_printerdata( printer->info_2->drivername );
-       }
-       else 
-       {
-       status = set_printer_dataex( printer, SPOOL_PRINTERDATA_KEY, valuename, 
-                                       type, data, real_len );
-               if ( W_ERROR_IS_OK(status) )
-                       status = mod_a_printer(*printer, 2);
-       }
+       status = mod_a_printer(*printer, 2);
 
 done:
        free_a_printer(&printer, 2);
@@ -7570,7 +7204,9 @@ WERROR _spoolss_deleteprinterdata(pipes_struct *p, SPOOL_Q_DELETEPRINTERDATA *q_
 
        unistr2_to_ascii( valuename, value, sizeof(valuename)-1 );
 
-       status = delete_printer_dataex( printer, SPOOL_PRINTERDATA_KEY, valuename );
+       status = delete_printer_data( printer->info_2, SPOOL_PRINTERDATA_KEY, valuename );
+       if ( NT_STATUS_IS_OK(status) )
+               status = mod_a_printer(*printer, 2);
 
        free_a_printer(&printer, 2);
 
@@ -7599,52 +7235,40 @@ WERROR _spoolss_addform( pipes_struct *p, SPOOL_Q_ADDFORM *q_u, SPOOL_R_ADDFORM
                DEBUG(2,("_spoolss_addform: Invalid handle (%s:%u:%u).\n", OUR_HANDLE(handle)));
                return WERR_BADFID;
        }
-       
-       
-       /* forms can be added on printer of on the print server handle */
-       
-       if ( Printer->printer_type == PRINTER_HANDLE_IS_PRINTER )
-       {
-               if (!get_printer_snum(p,handle, &snum))
-                       return WERR_BADFID;
-        
-               status = get_a_printer(&printer, 2, lp_servicename(snum));
-               if (!W_ERROR_IS_OK(status))
-                       goto done;
-       }
 
-       if ( !(Printer->access_granted & (PRINTER_ACCESS_ADMINISTER|SERVER_ACCESS_ADMINISTER)) ) {
+       if (!get_printer_snum(p,handle, &snum))
+                return WERR_BADFID;
+
+       if (Printer->access_granted != PRINTER_ACCESS_ADMINISTER) {
                DEBUG(2,("_spoolss_addform: denied by handle permissions.\n"));
                status = WERR_ACCESS_DENIED;
                goto done;
        }
-       
+               
        /* can't add if builtin */
-       
        if (get_a_builtin_ntform(&form->name,&tmpForm)) {
-               status = WERR_ALREADY_EXISTS;
-               goto done;
+               return WERR_ALREADY_EXISTS;
        }
 
-       count = get_ntforms(&list);
-       
-       if(!add_a_form(&list, form, &count)) {
-               status =  WERR_NOMEM;
-               goto done;
-       }
-       
+       count=get_ntforms(&list);
+       if(!add_a_form(&list, form, &count))
+               return WERR_NOMEM;
        write_ntforms(&list, count);
        
        /*
-        * ChangeID must always be set if this is a printer
+        * ChangeID must always be set
         */
         
-       if ( Printer->printer_type == PRINTER_HANDLE_IS_PRINTER )
-               status = mod_a_printer(*printer, 2);
+       status = get_a_printer(&printer, 2, lp_servicename(snum));
+        if (!W_ERROR_IS_OK(status))
+               goto done;
+       
+       status = mod_a_printer(*printer, 2);
+        if (!W_ERROR_IS_OK(status))
+               goto done;
        
 done:
-       if ( printer )
-               free_a_printer(&printer, 2);
+       free_a_printer(&printer, 2);
        SAFE_FREE(list);
 
        return status;
@@ -7659,6 +7283,7 @@ WERROR _spoolss_deleteform( pipes_struct *p, SPOOL_Q_DELETEFORM *q_u, SPOOL_R_DE
        UNISTR2 *form_name = &q_u->name;
        nt_forms_struct tmpForm;
        int count=0;
+       WERROR ret = WERR_OK;
        nt_forms_struct *list=NULL;
        Printer_entry *Printer = find_printer_index_by_hnd(p, handle);
        int snum;
@@ -7672,49 +7297,40 @@ WERROR _spoolss_deleteform( pipes_struct *p, SPOOL_Q_DELETEFORM *q_u, SPOOL_R_DE
                return WERR_BADFID;
        }
 
-       /* forms can be deleted on printer of on the print server handle */
-       
-       if ( Printer->printer_type == PRINTER_HANDLE_IS_PRINTER )
-       {
-               if (!get_printer_snum(p,handle, &snum))
-                       return WERR_BADFID;
-        
-               status = get_a_printer(&printer, 2, lp_servicename(snum));
-               if (!W_ERROR_IS_OK(status))
-                       goto done;
-       }
+       if (!get_printer_snum(p, handle, &snum))
+               return WERR_BADFID;
 
-       if ( !(Printer->access_granted & (PRINTER_ACCESS_ADMINISTER|SERVER_ACCESS_ADMINISTER)) ) {
-               DEBUG(2,("_spoolss_deleteform: denied by handle permissions.\n"));
-               status = WERR_ACCESS_DENIED;
-               goto done;
+       if (Printer->access_granted != PRINTER_ACCESS_ADMINISTER) {
+               DEBUG(2,("_spoolss_deleteform: denied by handle permissions\n"));
+               return WERR_ACCESS_DENIED;
        }
 
        /* can't delete if builtin */
-       
        if (get_a_builtin_ntform(form_name,&tmpForm)) {
-               status = WERR_INVALID_PARAM;
-               goto done;
+               return WERR_INVALID_PARAM;
        }
 
        count = get_ntforms(&list);
-       
-       if ( !delete_a_form(&list, form_name, &count, &status ))
-               goto done;
+       if(!delete_a_form(&list, form_name, &count, &ret))
+               return WERR_INVALID_PARAM;
 
        /*
-        * ChangeID must always be set if this is a printer
+        * ChangeID must always be set
         */
         
-       if ( Printer->printer_type == PRINTER_HANDLE_IS_PRINTER )
-               status = mod_a_printer(*printer, 2);
+       status = get_a_printer(&printer, 2, lp_servicename(snum));
+        if (!W_ERROR_IS_OK(status))
+               goto done;
+       
+       status = mod_a_printer(*printer, 2);
+        if (!W_ERROR_IS_OK(status))
+               goto done;
        
 done:
-       if ( printer )
-               free_a_printer(&printer, 2);
+       free_a_printer(&printer, 2);
        SAFE_FREE(list);
 
-       return status;
+       return ret;
 }
 
 /****************************************************************************
@@ -7740,48 +7356,40 @@ WERROR _spoolss_setform(pipes_struct *p, SPOOL_Q_SETFORM *q_u, SPOOL_R_SETFORM *
                return WERR_BADFID;
        }
 
-       /* forms can be modified on printer of on the print server handle */
-       
-       if ( Printer->printer_type == PRINTER_HANDLE_IS_PRINTER )
-       {
-               if (!get_printer_snum(p,handle, &snum))
-                       return WERR_BADFID;
-        
-               status = get_a_printer(&printer, 2, lp_servicename(snum));
-               if (!W_ERROR_IS_OK(status))
-                       goto done;
-       }
+       if (!get_printer_snum(p, handle, &snum))
+               return WERR_BADFID;
 
-       if ( !(Printer->access_granted & (PRINTER_ACCESS_ADMINISTER|SERVER_ACCESS_ADMINISTER)) ) {
+       if (Printer->access_granted != PRINTER_ACCESS_ADMINISTER) {
                DEBUG(2,("_spoolss_setform: denied by handle permissions\n"));
-               status = WERR_ACCESS_DENIED;
-               goto done;
+               return WERR_ACCESS_DENIED;
        }
 
        /* can't set if builtin */
        if (get_a_builtin_ntform(&form->name,&tmpForm)) {
-               status = WERR_INVALID_PARAM;
-               goto done;
+               return WERR_INVALID_PARAM;
        }
 
-       count = get_ntforms(&list);
+       count=get_ntforms(&list);
        update_a_form(&list, form, count);
        write_ntforms(&list, count);
 
        /*
-        * ChangeID must always be set if this is a printer
+        * ChangeID must always be set
         */
         
-       if ( Printer->printer_type == PRINTER_HANDLE_IS_PRINTER )
-               status = mod_a_printer(*printer, 2);
+       status = get_a_printer(&printer, 2, lp_servicename(snum));
+        if (!W_ERROR_IS_OK(status))
+               goto done;
        
+       status = mod_a_printer(*printer, 2);
+        if (!W_ERROR_IS_OK(status))
+               goto done;
        
 done:
-       if ( printer )
-               free_a_printer(&printer, 2);
+       free_a_printer(&printer, 2);
        SAFE_FREE(list);
 
-       return status;
+       return WERR_OK;
 }
 
 /****************************************************************************
@@ -8030,7 +7638,7 @@ static WERROR getjob_level_1(print_queue_struct *queue, int count, int snum, uin
                return WERR_NOMEM;
        }
                
-       for (i=0; i<count && found==False; i++) { 
+       for (i=0; i<count && found==False; i++) {
                if (queue[i].job==(int)jobid)
                        found=True;
        }
@@ -8044,6 +7652,8 @@ static WERROR getjob_level_1(print_queue_struct *queue, int count, int snum, uin
        
        fill_job_info_1(info_1, &(queue[i-1]), i, snum);
        
+       SAFE_FREE(queue);
+       
        *needed += spoolss_size_job_info_1(info_1);
 
        if (!alloc_buffer_size(buffer, *needed)) {
@@ -8066,13 +7676,12 @@ static WERROR getjob_level_1(print_queue_struct *queue, int count, int snum, uin
 
 static WERROR getjob_level_2(print_queue_struct *queue, int count, int snum, uint32 jobid, NEW_BUFFER *buffer, uint32 offered, uint32 *needed)
 {
-       int             i = 0;
-       BOOL            found = False;
-       JOB_INFO_2      *info_2;
+       int i=0;
+       BOOL found=False;
+       JOB_INFO_2 *info_2;
        NT_PRINTER_INFO_LEVEL *ntprinter = NULL;
-       WERROR          ret;
-       DEVICEMODE      *devmode = NULL;
-       NT_DEVICEMODE   *nt_devmode = NULL;
+       WERROR ret;
+       DEVICEMODE *devmode = NULL;
 
        info_2=(JOB_INFO_2 *)malloc(sizeof(JOB_INFO_2));
 
@@ -8083,14 +7692,12 @@ static WERROR getjob_level_2(print_queue_struct *queue, int count, int snum, uin
                goto done;
        }
 
-       for ( i=0; i<count && found==False; i++ ) 
-       {
-               if (queue[i].job == (int)jobid)
-                       found = True;
+       for (i=0; i<count && found==False; i++) {
+               if (queue[i].job==(int)jobid)
+                       found=True;
        }
        
-       if ( !found ) 
-       {
+       if (found==False) {
                /* NT treats not found as bad param... yet another bad
                   choice */
                ret = WERR_INVALID_PARAM;
@@ -8100,22 +7707,7 @@ static WERROR getjob_level_2(print_queue_struct *queue, int count, int snum, uin
        ret = get_a_printer(&ntprinter, 2, lp_servicename(snum));
        if (!W_ERROR_IS_OK(ret))
                goto done;
-       
-       /* 
-        * if the print job does not have a DEVMODE associated with it, 
-        * just use the one for the printer 
-        */
-        
-       if ( !(nt_devmode=print_job_devmode( snum, jobid )) )
-               devmode = construct_dev_mode(snum);
-       else {
-               if ((devmode = (DEVICEMODE *)malloc(sizeof(DEVICEMODE))) != NULL) {
-                       ZERO_STRUCTP( devmode );
-                       convert_nt_devicemode( devmode, nt_devmode );
-               }
-       }
-       
-       if ( !devmode ) {
+       if (construct_dev_mode(snum) == NULL) {
                ret = WERR_NOMEM;
                goto done;
        }
@@ -8141,6 +7733,7 @@ static WERROR getjob_level_2(print_queue_struct *queue, int count, int snum, uin
  done:
        /* Cleanup allocated memory */
 
+       SAFE_FREE(queue);
        free_job_info_2(info_2);        /* Also frees devmode */
        SAFE_FREE(info_2);
        free_a_printer(&ntprinter, 2);
@@ -8159,11 +7752,10 @@ WERROR _spoolss_getjob( pipes_struct *p, SPOOL_Q_GETJOB *q_u, SPOOL_R_GETJOB *r_
        NEW_BUFFER *buffer = NULL;
        uint32 offered = q_u->offered;
        uint32 *needed = &r_u->needed;
-       WERROR          wstatus = WERR_OK;
 
        int snum;
        int count;
-       print_queue_struct      *queue = NULL;
+       print_queue_struct *queue=NULL;
        print_status_struct prt_status;
 
        /* that's an [in out] buffer */
@@ -8172,7 +7764,7 @@ WERROR _spoolss_getjob( pipes_struct *p, SPOOL_Q_GETJOB *q_u, SPOOL_R_GETJOB *r_
 
        DEBUG(5,("spoolss_getjob\n"));
        
-       *needed = 0;
+       *needed=0;
        
        if (!get_printer_snum(p, handle, &snum))
                return WERR_BADFID;
@@ -8182,29 +7774,19 @@ WERROR _spoolss_getjob( pipes_struct *p, SPOOL_Q_GETJOB *q_u, SPOOL_R_GETJOB *r_
        DEBUGADD(4,("count:[%d], prt_status:[%d], [%s]\n",
                     count, prt_status.status, prt_status.message));
                
-       switch ( level ) {
+       switch (level) {
        case 1:
-                       wstatus = getjob_level_1(queue, count, snum, jobid, 
-                               buffer, offered, needed);
-                       break;
+               return getjob_level_1(queue, count, snum, jobid, buffer, offered, needed);
        case 2:
-                       wstatus = getjob_level_2(queue, count, snum, jobid, 
-                               buffer, offered, needed);
-                       break;
+               return getjob_level_2(queue, count, snum, jobid, buffer, offered, needed);
        default:
-                       wstatus = WERR_UNKNOWN_LEVEL;
-                       break;
+               SAFE_FREE(queue);
+               return WERR_UNKNOWN_LEVEL;
        }
-       
-       SAFE_FREE(queue);
-       return wstatus;
 }
 
 /********************************************************************
- spoolss_getprinterdataex
- From MSDN documentation of GetPrinterDataEx: pass request
- to GetPrinterData if key is "PrinterDriverData".
+ * spoolss_getprinterdataex
  ********************************************************************/
 
 WERROR _spoolss_getprinterdataex(pipes_struct *p, SPOOL_Q_GETPRINTERDATAEX *q_u, SPOOL_R_GETPRINTERDATAEX *r_u)
@@ -8215,181 +7797,112 @@ WERROR _spoolss_getprinterdataex(pipes_struct *p, SPOOL_Q_GETPRINTERDATAEX *q_u,
        uint32          *out_size = &r_u->size;
        uint8           **data = &r_u->data;
        uint32          *needed = &r_u->needed;
-       fstring         keyname, valuename;
-       
+
+       fstring         key, value;
        Printer_entry   *Printer = find_printer_index_by_hnd(p, handle);
-       
-       NT_PRINTER_INFO_LEVEL   *printer = NULL;
-       int                     snum = 0;
-       WERROR                  status = WERR_OK;
+       BOOL            found = False;
 
        DEBUG(4,("_spoolss_getprinterdataex\n"));
 
-        unistr2_to_ascii(keyname, &q_u->keyname, sizeof(keyname) - 1);
-        unistr2_to_ascii(valuename, &q_u->valuename, sizeof(valuename) - 1);
-       
-       DEBUG(10, ("_spoolss_getprinterdataex: key => [%s], value => [%s]\n", 
-               keyname, valuename));
+        unistr2_to_ascii(key, &q_u->keyname, sizeof(key) - 1);
+        unistr2_to_ascii(value, &q_u->valuename, sizeof(value) - 1);
 
        /* in case of problem, return some default values */
-       
-       *needed   = 0;
-       *type     = 0;
-       *out_size = in_size;
+       *needed=0;
+       *type=0;
+       *out_size=0;
 
+               
        if (!Printer) {
-               DEBUG(2,("_spoolss_getprinterdataex: Invalid handle (%s:%u:%u).\n", OUR_HANDLE(handle)));
-               status = WERR_BADFID;
-               goto done;
+               if((*data=(uint8 *)talloc_zero(p->mem_ctx, 4*sizeof(uint8))) == NULL)
+                       return WERR_NOMEM;
+               DEBUG(2,("_spoolss_getprinterdata: Invalid handle (%s:%u:%u).\n", OUR_HANDLE(handle)));
+               return WERR_BADFID;
        }
 
+               
        /* Is the handle to a printer or to the server? */
 
-       if (Printer->printer_type == PRINTER_HANDLE_IS_PRINTSERVER) {
+       if (Printer->printer_type == PRINTER_HANDLE_IS_PRINTSERVER)
+       {
                DEBUG(10,("_spoolss_getprinterdatex: Not implemented for server handles yet\n"));
-               status = WERR_INVALID_PARAM;
-               goto done;
+               return WERR_INVALID_PARAM;
        }
-       
-       if ( !get_printer_snum(p,handle, &snum) )
-               return WERR_BADFID;
-
-       status = get_a_printer(&printer, 2, lp_servicename(snum));
-       if ( !W_ERROR_IS_OK(status) )
-               goto done;
+       else
+       {
+               /* 
+                * From MSDN documentation of GetPrinterDataEx: pass request
+                * to GetPrinterData if key is "PrinterDriverData". This is 
+                * the only key we really support. Other keys to implement:
+                * (a) DsDriver
+                * (b) DsSpooler
+                * (c) PnPData
+                * (d) DsUser
+                */
+          
+               if (strcmp(key, SPOOL_PRINTERDATA_KEY) != 0)
+                       return WERR_BADFILE;
 
-       /* check to see if the keyname is valid */
-       if ( !strlen(keyname) ) {
-               status = WERR_INVALID_PARAM;
-               goto done;
-       }
-       
-       if ( lookup_printerkey( &printer->info_2->data, keyname ) == -1 ) {
-               DEBUG(4,("_spoolss_getprinterdataex: Invalid keyname [%s]\n", keyname ));
-               free_a_printer( &printer, 2 );
-               status = WERR_BADFILE;
-               goto done;
+               DEBUG(10, ("_spoolss_getprinterdataex: pass me to getprinterdata\n"));
+               found = getprinterdata_printer(p, p->mem_ctx, handle, value, 
+                       type, data, needed, in_size);
+               
        }
-       
-       /* When given a new keyname, we should just create it */
-
-       status = get_printer_dataex( p->mem_ctx, printer, keyname, valuename, type, data, needed, in_size );
-       
-       if (*needed > *out_size)
-               status = WERR_MORE_DATA;
-
-done:
-       if ( !W_ERROR_IS_OK(status) ) 
-       {
-               DEBUG(5, ("error: allocating %d\n", *out_size));
+        
+       if (!found) {
+               DEBUG(5, ("value not found, allocating %d\n", *out_size));
                
                /* reply this param doesn't exist */
-               
-               if ( *out_size ) 
-               {
-                       if( (*data=(uint8 *)talloc_zero(p->mem_ctx, *out_size*sizeof(uint8))) == NULL ) {
-                               status = WERR_NOMEM;
-                               goto done;
-                       }
-               } 
-               else {
+               if (*out_size) {
+                       if((*data=(uint8 *)talloc_zero(p->mem_ctx, *out_size*sizeof(uint8))) == NULL)
+                               return WERR_NOMEM;
+               } else {
                        *data = NULL;
-       }
+               }
+
+               return WERR_INVALID_PARAM;
        }
        
-       if ( printer )
-       free_a_printer( &printer, 2 );
-       
-       return status;
+       if (*needed > *out_size)
+               return WERR_MORE_DATA;
+       else
+               return WERR_OK;
 }
 
 /********************************************************************
- * spoolss_setprinterdataex
+ * spoolss_setprinterdata
  ********************************************************************/
 
 WERROR _spoolss_setprinterdataex(pipes_struct *p, SPOOL_Q_SETPRINTERDATAEX *q_u, SPOOL_R_SETPRINTERDATAEX *r_u)
 {
-       POLICY_HND              *handle = &q_u->handle; 
-       uint32                  type = q_u->type;
-       uint8                   *data = q_u->data;
-       uint32                  real_len = q_u->real_len;
+       SPOOL_Q_SETPRINTERDATA q_u_local;
+       SPOOL_R_SETPRINTERDATA r_u_local;
+        fstring key;
 
-       NT_PRINTER_INFO_LEVEL   *printer = NULL;
-       int                     snum = 0;
-       WERROR                  status = WERR_OK;
-       Printer_entry           *Printer = find_printer_index_by_hnd(p, handle);
-       fstring                 valuename;
-       fstring                 keyname;
-       char                    *oid_string;
-       
        DEBUG(4,("_spoolss_setprinterdataex\n"));
 
         /* From MSDN documentation of SetPrinterDataEx: pass request to
            SetPrinterData if key is "PrinterDriverData" */
 
-       if (!Printer) {
-               DEBUG(2,("_spoolss_setprinterdata: Invalid handle (%s:%u:%u).\n", OUR_HANDLE(handle)));
-               return WERR_BADFID;
-       }
-
-       if ( !get_printer_snum(p,handle, &snum) )
-               return WERR_BADFID;
-
-       /* 
-        * Access check : NT returns "access denied" if you make a 
-        * SetPrinterData call without the necessary privildge.
-        * we were originally returning OK if nothing changed
-        * which made Win2k issue **a lot** of SetPrinterData
-        * when connecting to a printer  --jerry
-        */
-
-       if (Printer->access_granted != PRINTER_ACCESS_ADMINISTER) 
-       {
-               DEBUG(3, ("_spoolss_setprinterdataex: change denied by handle access permissions\n"));
-               return WERR_ACCESS_DENIED;
-       }
+        unistr2_to_ascii(key, &q_u->key, sizeof(key) - 1);
 
-       status = get_a_printer(&printer, 2, lp_servicename(snum));
-       if (!W_ERROR_IS_OK(status))
-               return status;
-
-        unistr2_to_ascii( valuename, &q_u->value, sizeof(valuename) - 1);
-        unistr2_to_ascii( keyname, &q_u->key, sizeof(keyname) - 1);
-       
-       /* check for OID in valuename */
-       
-       if ( (oid_string = strchr( valuename, ',' )) != NULL )
-       {
-               *oid_string = '\0';
-               oid_string++;
-       }
-
-       /* save the registry data */
-       
-       status = set_printer_dataex( printer, keyname, valuename, type, data, real_len ); 
-       
-       /* save the OID if one was specified and the previous set call succeeded */
-       
-       if ( W_ERROR_IS_OK(status) && oid_string )
-       {
-
-               fstrcat( keyname, "\\" );
-               fstrcat( keyname, SPOOL_OID_KEY );
+        if (strcmp(key, SPOOL_PRINTERDATA_KEY) != 0)
+               return WERR_INVALID_PARAM;
                
-               /* 
-                * I'm not checking the status here on purpose.  Don't know 
-                * if this is right, but I'm returning the status from the 
-                * previous set_printer_dataex() call.  I have no idea if 
-                * this is right.    --jerry
-                */
-                
-               set_printer_dataex( printer, keyname, valuename, 
-                                   REG_SZ, (void*)oid_string, strlen(oid_string)+1 );          
-       }
-       
-       free_a_printer(&printer, 2);
-
-       return status;
+       ZERO_STRUCT(q_u_local); 
+       ZERO_STRUCT(r_u_local); 
+       
+       /* make a copy to call _spoolss_setprinterdata() */
+
+       memcpy(&q_u_local.handle, &q_u->handle, sizeof(POLICY_HND));
+       copy_unistr2(&q_u_local.value, &q_u->value);
+       q_u_local.type = q_u->type;
+       q_u_local.max_len = q_u->max_len;
+       q_u_local.data = q_u->data;
+       q_u_local.real_len = q_u->real_len;
+       q_u_local.numeric_data = q_u->numeric_data;
+               
+       return _spoolss_setprinterdata(p, &q_u_local, &r_u_local);
 }
 
 
@@ -8399,44 +7912,26 @@ WERROR _spoolss_setprinterdataex(pipes_struct *p, SPOOL_Q_SETPRINTERDATAEX *q_u,
 
 WERROR _spoolss_deleteprinterdataex(pipes_struct *p, SPOOL_Q_DELETEPRINTERDATAEX *q_u, SPOOL_R_DELETEPRINTERDATAEX *r_u)
 {
-       POLICY_HND      *handle = &q_u->handle;
-       UNISTR2         *value = &q_u->valuename;
-       UNISTR2         *key = &q_u->keyname;
-
-       NT_PRINTER_INFO_LEVEL   *printer = NULL;
-       int             snum=0;
-       WERROR          status = WERR_OK;
-       Printer_entry   *Printer=find_printer_index_by_hnd(p, handle);
-       pstring         valuename, keyname;
-       
-       DEBUG(5,("spoolss_deleteprinterdataex\n"));
+       SPOOL_Q_DELETEPRINTERDATA q_u_local;
+       SPOOL_R_DELETEPRINTERDATA r_u_local;
+       fstring key;
        
-       if (!Printer) {
-               DEBUG(2,("_spoolss_deleteprinterdata: Invalid handle (%s:%u:%u).\n", OUR_HANDLE(handle)));
-               return WERR_BADFID;
-       }
-
-       if (!get_printer_snum(p, handle, &snum))
-               return WERR_BADFID;
-
-       if (Printer->access_granted != PRINTER_ACCESS_ADMINISTER) {
-               DEBUG(3, ("_spoolss_deleteprinterdataex: printer properties change denied by handle\n"));
-               return WERR_ACCESS_DENIED;
-       }
+        /* From MSDN documentation of SetPrinterDataEx: pass request to
+           SetPrinterData if key is "PrinterDriverData" */
 
-       status = get_a_printer(&printer, 2, lp_servicename(snum));
-       if (!W_ERROR_IS_OK(status))
-               return status;
+        unistr2_to_ascii(key, &q_u->keyname, sizeof(key) - 1);
 
-       unistr2_to_ascii( valuename, value, sizeof(valuename)-1 );
-       unistr2_to_ascii( keyname, key, sizeof(keyname)-1 );
+        if (strcmp(key, SPOOL_PRINTERDATA_KEY) != 0)
+               return WERR_INVALID_PARAM;
+       
+       memcpy(&q_u_local.handle, &q_u->handle, sizeof(POLICY_HND));
+       copy_unistr2(&q_u_local.valuename, &q_u->valuename);
+       
+       return _spoolss_deleteprinterdata( p, &q_u_local, &r_u_local );
+}
 
-       status = delete_printer_dataex( printer, keyname, valuename );
 
-       free_a_printer(&printer, 2);
 
-       return status;
-}
 
 /********************************************************************
  * spoolss_enumprinterkey
@@ -8445,69 +7940,73 @@ WERROR _spoolss_deleteprinterdataex(pipes_struct *p, SPOOL_Q_DELETEPRINTERDATAEX
 
 WERROR _spoolss_enumprinterkey(pipes_struct *p, SPOOL_Q_ENUMPRINTERKEY *q_u, SPOOL_R_ENUMPRINTERKEY *r_u)
 {
-       fstring         key;
-       fstring         *keynames = NULL;
-       uint16          *enumkeys = NULL;
-       int             num_keys;
-       int             printerkey_len;
-       POLICY_HND      *handle = &q_u->handle;
-       Printer_entry   *Printer = find_printer_index_by_hnd(p, handle);
-       NT_PRINTER_DATA *data;
-       NT_PRINTER_INFO_LEVEL   *printer = NULL;
-       int             snum = 0;
-       WERROR          status = WERR_BADFILE;
-       
-       
+       fstring key;
+       uint16  *enumkeys = NULL;
+       char*   ptr = NULL;
+       int     i;
+       int     printerkey_len = strlen(SPOOL_PRINTERDATA_KEY)+1;       
+
        DEBUG(4,("_spoolss_enumprinterkey\n"));
 
-       if (!Printer) {
-               DEBUG(2,("_spoolss_enumprinterkey: Invalid handle (%s:%u:%u).\n", OUR_HANDLE(handle)));
-               return WERR_BADFID;
-       }
+       unistr2_to_ascii( key, &q_u->key, sizeof(key)-1 );
 
-       if ( !get_printer_snum(p,handle, &snum) )
-               return WERR_BADFID;
+       /* 
+        * we only support enumating all keys (key == "")
+        * Of course, the only key we support is the "PrinterDriverData" 
+        * key
+        */
 
-       status = get_a_printer(&printer, 2, lp_servicename(snum));
-       if (!W_ERROR_IS_OK(status))
-               return status;
+       if ( !strlen( key ) )
+       {
+               r_u->needed = printerkey_len*2;
                
-       /* get the list of subkey names */
+               if ( q_u->size < r_u->needed )
+                       return WERR_MORE_DATA;
        
-       unistr2_to_ascii( key, &q_u->key, sizeof(key)-1 );
-       data = &printer->info_2->data;
-
-       num_keys = get_printer_subkeys( data, key, &keynames );
-
-       if ( num_keys == -1 ) {
-               status = WERR_BADFILE;
-               goto done;
-       }
-
-       printerkey_len = init_unistr_array( &enumkeys,  keynames, NULL );
-
-       r_u->needed = printerkey_len*2;
-
-       if ( q_u->size < r_u->needed ) {
-               status = WERR_MORE_DATA;
-               goto done;
-       }
+               if ( !(enumkeys = talloc( p->mem_ctx, printerkey_len*2 )) ) {
+                       DEBUG(0,("_spoolss_enumprinterkey: talloc() failed for [%d] bytes!\n",
+                               printerkey_len));
+                       return WERR_NOMEM;
+               }
+               
+               ptr = SPOOL_PRINTERDATA_KEY;
+               for ( i=0; i<(printerkey_len-1); i++ )
+               {
+                       enumkeys[i] = (uint16)(*ptr);
+                       ptr++;
+               }
 
-       if (!make_spoolss_buffer5(p->mem_ctx, &r_u->keys, printerkey_len, enumkeys)) {
-               status = WERR_NOMEM;
-               goto done;
+               /* tag of '\0's */
+               
+               enumkeys[i] = 0x0;
+       
+               if (!make_spoolss_buffer5(p->mem_ctx, &r_u->keys, printerkey_len, enumkeys))
+                       return WERR_BADFILE;
+                       
+               return WERR_OK;
        }
+       
+       /* The "PrinterDriverData" key should have no subkeys */
+       if ( strcmp(key, SPOOL_PRINTERDATA_KEY) == 0 )
+       {
+               uint16  dummy_key = 0;
+               
+               r_u->needed = 2;
+               
+               if (q_u->size < r_u->needed)
+                       return WERR_MORE_DATA;
                        
-       status = WERR_OK;
-
-       if ( q_u->size < r_u->needed ) 
-               status = WERR_MORE_DATA;
-
-done:
-       free_a_printer( &printer, 2 );
-       SAFE_FREE( keynames );
+               if ( !make_spoolss_buffer5(p->mem_ctx, &r_u->keys, 1, &dummy_key ) )
+                       return WERR_BADFILE;
+                       
+               return WERR_OK;
+       }
        
-        return status;
+
+       /* The return value for an unknown key is documented in MSDN
+          EnumPrinterKey description */
+          
+        return WERR_BADFILE;
 }
 
 /********************************************************************
@@ -8516,49 +8015,25 @@ done:
 
 WERROR _spoolss_deleteprinterkey(pipes_struct *p, SPOOL_Q_DELETEPRINTERKEY *q_u, SPOOL_R_DELETEPRINTERKEY *r_u)
 {
-       POLICY_HND              *handle = &q_u->handle;
-       Printer_entry           *Printer = find_printer_index_by_hnd(p, &q_u->handle);
-       fstring                 key;
-       NT_PRINTER_INFO_LEVEL   *printer = NULL;
-       int                     snum=0;
-       WERROR                  status;
-       
-       DEBUG(5,("spoolss_deleteprinterkey\n"));
+       Printer_entry   *Printer = find_printer_index_by_hnd(p, &q_u->handle);
+       fstring key;
        
        if (!Printer) {
-               DEBUG(2,("_spoolss_deleteprinterkey: Invalid handle (%s:%u:%u).\n", OUR_HANDLE(handle)));
+               DEBUG(2,("_spoolss_deleteprinterkey: Invalid handle (%s:%u:%u).\n", OUR_HANDLE(&q_u->handle)));
                return WERR_BADFID;
        }
-
-       /* if keyname == NULL, return error */
-       
-       if ( !q_u->keyname.buffer )
-               return WERR_INVALID_PARAM;
-               
-       if (!get_printer_snum(p, handle, &snum))
-               return WERR_BADFID;
-
-       if (Printer->access_granted != PRINTER_ACCESS_ADMINISTER) {
-               DEBUG(3, ("_spoolss_deleteprinterkey: printer properties change denied by handle\n"));
-               return WERR_ACCESS_DENIED;
-       }
-
-       status = get_a_printer(&printer, 2, lp_servicename(snum));
-       if (!W_ERROR_IS_OK(status))
-               return status;
-       
-       /* delete the key and all subneys */
        
         unistr2_to_ascii(key, &q_u->keyname, sizeof(key) - 1);
-       status = delete_all_printer_data( printer->info_2, key );       
 
-       if ( W_ERROR_IS_OK(status) )
-               status = mod_a_printer(*printer, 2);
-       
-       free_a_printer( &printer, 2 );
-       
-       return status;
+        if (strcmp(key, SPOOL_PRINTERDATA_KEY) != 0)
+               return WERR_INVALID_PARAM;
+               
+       /* 
+        * this is what 2k returns when you try to delete the "PrinterDriverData"
+        * key
+        */
+        
+       return WERR_ACCESS_DENIED;      
 }
 
 
@@ -8593,6 +8068,7 @@ WERROR _spoolss_enumprinterdataex(pipes_struct *p, SPOOL_Q_ENUMPRINTERDATAEX *q_
                return WERR_BADFID;
        }
 
+               
        /* first get the printer off of disk */
        
        if (!get_printer_snum(p,handle, &snum))
index 69945b50b8485b6823c7d63975349f094be3ffa6..5c1038949b522a4c78641d59ef8b095d2d0a07c6 100644 (file)
@@ -338,10 +338,10 @@ BOOL share_access_check(connection_struct *conn, int snum, user_struct *vuser, u
        if (!psd)
                goto out;
 
-       if (conn->nt_user_token)
-               token = conn->nt_user_token;
-       else 
+       if (vuser)
                token = vuser->nt_user_token;
+       else
+               token = conn->nt_user_token;
 
        ret = se_access_check(psd, token, desired_access, &granted, &status);
 
index ed6816065883542c5c61e41520eb84f85fc9a008..194e4981224d92ac97ccde78c69d59222f917613 100644 (file)
@@ -86,8 +86,15 @@ static NTSTATUS cmd_lsa_query_info_policy(struct cli_state *cli,
                printf("forest name is %s\n", forest_name);
 
        if (info_class == 12) {
-               printf("domain GUID is ");
-               print_guid(&dom_guid);
+               int i;
+               uint32 *data1 = (uint32 *) dom_guid.info;
+               uint16 *data2 = (uint16 *) &dom_guid.info[4];
+               uint16 *data3 = (uint16 *) &dom_guid.info[6];
+               printf("domain GUID is %08x-%04x-%04x", *data1,*data2,*data3);
+               printf("-%02x%02x-", dom_guid.info[8], dom_guid.info[9]);
+               for (i=10;i<GUID_SIZE;i++)
+                       printf("%02x", dom_guid.info[i]);
+               printf("\n");
        }
  done:
        return result;
index 98ba92e5a3f528d5170f19f7693d5b9dfbe2ce08..c3bc9e5e130524b7bfa3974b43903897c884cf09 100644 (file)
@@ -125,10 +125,11 @@ static void display_sam_sync(uint32 num_deltas, SAM_DELTA_HDR *hdr_deltas,
                                           group->rids[j], group->attribs[j]);
                         break;
                 }
-                case SAM_DELTA_MODIFIED_COUNT: {
-                        SAM_DELTA_MOD_COUNT *mc = &deltas[i].mod_count;
+                case SAM_DELTA_SAM_STAMP: {
+                        SAM_DELTA_STAMP *stamp = &deltas[i].stamp;
 
-                        printf("sam sequence update: 0x%04x\n", mc->seqnum);
+                        printf("sam sequence update: 0x%04x\n",
+                                  stamp->seqnum);
                         break;
                 }                                  
                 default:
@@ -151,7 +152,6 @@ static NTSTATUS cmd_netlogon_sam_sync(struct cli_state *cli,
         SAM_DELTA_HDR *hdr_deltas;
         SAM_DELTA_CTR *deltas;
        DOM_CRED ret_creds;
-       uint32 neg_flags = 0x000001ff;
 
         if (argc > 2) {
                 fprintf(stderr, "Usage: %s [database_id]\n", argv[0]);
@@ -174,7 +174,8 @@ static NTSTATUS cmd_netlogon_sam_sync(struct cli_state *cli,
                goto done;
        }        
 
-        result = cli_nt_setup_creds(cli, get_sec_chan(), trust_passwd, &neg_flags, 2);
+        result = cli_nt_setup_creds(cli, (lp_server_role() == ROLE_DOMAIN_MEMBER) ?
+                                       SEC_CHAN_WKSTA : SEC_CHAN_BDC, trust_passwd);
 
         if (!NT_STATUS_IS_OK(result)) {
                 fprintf(stderr, "Error initialising session creds\n");
@@ -187,7 +188,7 @@ static NTSTATUS cmd_netlogon_sam_sync(struct cli_state *cli,
         /* Synchronise sam database */
 
        result = cli_netlogon_sam_sync(cli, mem_ctx, &ret_creds, database_id,
-                                      0, &num_deltas, &hdr_deltas, &deltas);
+                                      &num_deltas, &hdr_deltas, &deltas);
 
        if (!NT_STATUS_IS_OK(result))
                goto done;
@@ -212,7 +213,6 @@ static NTSTATUS cmd_netlogon_sam_deltas(struct cli_state *cli,
         SAM_DELTA_HDR *hdr_deltas;
         SAM_DELTA_CTR *deltas;
         UINT64_S seqnum;
-       uint32 neg_flags = 0x000001ff;
 
         if (argc != 3) {
                 fprintf(stderr, "Usage: %s database_id seqnum\n", argv[0]);
@@ -238,7 +238,8 @@ static NTSTATUS cmd_netlogon_sam_deltas(struct cli_state *cli,
                goto done;
        }        
 
-        result = cli_nt_setup_creds(cli, get_sec_chan(), trust_passwd, &neg_flags, 2);
+        result = cli_nt_setup_creds(cli, (lp_server_role() == ROLE_DOMAIN_MEMBER) ?
+                                       SEC_CHAN_WKSTA : SEC_CHAN_BDC, trust_passwd);
 
         if (!NT_STATUS_IS_OK(result)) {
                 fprintf(stderr, "Error initialising session creds\n");
@@ -272,15 +273,12 @@ static NTSTATUS cmd_netlogon_sam_logon(struct cli_state *cli,
         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
         int logon_type = NET_LOGON_TYPE;
         char *username, *password;
-       uint32 neg_flags = 0x000001ff;
-       int auth_level = 2;
 
         /* Check arguments */
 
-        if (argc < 3 || argc > 6) {
+        if (argc < 3 || argc > 4) {
                 fprintf(stderr, "Usage: samlogon <username> <password> "
-                        "[logon_type] [neg flags] [auth level (2 or 3)]\n"
-                       "neg flags being 0x000001ff or 0x6007ffff\n");
+                        "[logon_type]\n");
                 return NT_STATUS_OK;
         }
 
@@ -290,12 +288,6 @@ static NTSTATUS cmd_netlogon_sam_logon(struct cli_state *cli,
         if (argc == 4)
                 sscanf(argv[3], "%i", &logon_type);
 
-       if (argc == 5)
-                sscanf(argv[4], "%i", &neg_flags);
-
-       if (argc == 6)
-                sscanf(argv[5], "%i", &auth_level);
-
         /* Authenticate ourselves with the domain controller */
 
         if (!secrets_init()) {
@@ -303,12 +295,14 @@ static NTSTATUS cmd_netlogon_sam_logon(struct cli_state *cli,
                 return result;
         }
 
-       if (!secrets_fetch_trust_account_password(lp_workgroup(), trust_passwd, NULL)) {
+       if (!secrets_fetch_trust_account_password(lp_workgroup(), trust_passwd,
+                                                  NULL)) {
                fprintf(stderr, "could not fetch trust account password\n");
                goto done;
        }        
 
-        result = cli_nt_setup_creds(cli, get_sec_chan(), trust_passwd, &neg_flags, auth_level);
+        result = cli_nt_setup_creds(cli, (lp_server_role() == ROLE_DOMAIN_MEMBER) ?
+                                       SEC_CHAN_WKSTA : SEC_CHAN_BDC, trust_passwd);
 
         if (!NT_STATUS_IS_OK(result)) {
                 fprintf(stderr, "Error initialising session creds\n");
@@ -317,7 +311,8 @@ static NTSTATUS cmd_netlogon_sam_logon(struct cli_state *cli,
 
         /* Perform the sam logon */
 
-        result = cli_netlogon_sam_logon(cli, mem_ctx, username, password, logon_type);
+        result = cli_netlogon_sam_logon(cli, mem_ctx, username, password,
+                                        logon_type);
 
        if (!NT_STATUS_IS_OK(result))
                goto done;
index 15648e4d1b5026310ad0f88d1ecf81d2e5616328..22e2db41f313e156e57355eeeeecddb6c2bca9b1 100644 (file)
@@ -313,22 +313,15 @@ static NTSTATUS cmd_spoolss_enum_printers(struct cli_state *cli,
        uint32                  info_level = 1;
        PRINTER_INFO_CTR        ctr;
        uint32                  i = 0, num_printers, needed;
-       fstring name;
 
-       if (argc > 3
+       if (argc > 2
        {
-               printf("Usage: %s [level] [name]\n", argv[0]);
+               printf("Usage: %s [level]\n", argv[0]);
                return NT_STATUS_OK;
        }
 
-       if (argc == 2)
+       if (argc == 2) {
                info_level = atoi(argv[1]);
-
-       if (argc == 3)
-               fstrcpy(name, argv[2]);
-       else {
-               slprintf(name, sizeof(name)-1, "\\\\%s", cli->desthost);
-               strupper(name);
        }
 
        /* Enumerate printers  -- Should we enumerate types other 
@@ -337,12 +330,12 @@ static NTSTATUS cmd_spoolss_enum_printers(struct cli_state *cli,
        ZERO_STRUCT(ctr);
 
        result = cli_spoolss_enum_printers(
-               cli, mem_ctx, 0, &needed, name, PRINTER_ENUM_LOCAL, 
+               cli, mem_ctx, 0, &needed, PRINTER_ENUM_LOCAL, 
                info_level, &num_printers, &ctr);
 
        if (W_ERROR_V(result) == ERRinsufficientbuffer)
                result = cli_spoolss_enum_printers(
-                       cli, mem_ctx, needed, NULL, name, PRINTER_ENUM_LOCAL, 
+                       cli, mem_ctx, needed, NULL, PRINTER_ENUM_LOCAL, 
                        info_level, &num_printers, &ctr);
 
        if (W_ERROR_IS_OK(result)) {
@@ -1620,8 +1613,7 @@ static NTSTATUS cmd_spoolss_setprinterdata(struct cli_state *cli,
        POLICY_HND pol;
        BOOL opened_hnd = False;
        PRINTER_INFO_CTR ctr;
-       PRINTER_INFO_0 info;
-       REGISTRY_VALUE value;
+       PRINTER_INFO_0 *info = NULL;
 
        /* parse the command arguements */
        if (argc != 4) {
@@ -1643,8 +1635,6 @@ static NTSTATUS cmd_spoolss_setprinterdata(struct cli_state *cli,
 
        opened_hnd = True;
 
-       ctr.printers_0 = &info;
-
         result = cli_spoolss_getprinter(cli, mem_ctx, 0, &needed,
                                         &pol, 0, &ctr);
 
@@ -1655,16 +1645,13 @@ static NTSTATUS cmd_spoolss_setprinterdata(struct cli_state *cli,
                 goto done;
                
        printf("%s\n", timestring(True));
-       printf("\tchange_id (before set)\t:[0x%x]\n", info.change_id);
+       printf("\tchange_id (before set)\t:[0x%x]\n", info->change_id);
 
        /* Set the printer data */
        
-       fstrcpy(value.valuename, argv[2]);
-       value.type = REG_SZ;
-       value.size = strlen(argv[3]) + 1;
-       value.data_p = talloc_memdup(mem_ctx, argv[3], value.size);
-
-       result = cli_spoolss_setprinterdata(cli, mem_ctx, &pol, &value);
+       result = cli_spoolss_setprinterdata(
+               cli, mem_ctx, &pol, argv[2], REG_SZ, argv[3], 
+               strlen(argv[3]) + 1);
                
        if (!W_ERROR_IS_OK(result)) {
                printf ("Unable to set [%s=%s]!\n", argv[2], argv[3]);
@@ -1681,7 +1668,7 @@ static NTSTATUS cmd_spoolss_setprinterdata(struct cli_state *cli,
                 goto done;
                
        printf("%s\n", timestring(True));
-       printf("\tchange_id (after set)\t:[0x%x]\n", info.change_id);
+       printf("\tchange_id (after set)\t:[0x%x]\n", info->change_id);
 
 done:
        /* cleanup */
@@ -1791,10 +1778,10 @@ static NTSTATUS cmd_spoolss_enum_jobs(struct cli_state *cli,
        for (i = 0; i < num_jobs; i++) {
                switch(level) {
                case 1:
-                       display_job_info_1(&ctr.job.job_info_1[i]);
+                       display_job_info_1(ctr.job.job_info_1[i]);
                        break;
                case 2:
-                       display_job_info_2(&ctr.job.job_info_2[i]);
+                       display_job_info_2(ctr.job.job_info_2[i]);
                        break;
                default:
                        d_printf("unknown info level %d\n", level);
index 880fdc599a8b2e4ca9c4e488ea76e271d4d8635c..2d86fb1d3d0668ba90999cf8c76db0d65e6906d4 100644 (file)
@@ -573,6 +573,24 @@ static NTSTATUS process_cmd(struct cli_state *cli, char *cmd)
 }
 
 
+/* Print usage information */
+static void usage(void)
+{
+       printf("Usage: rpcclient [options] server\n");
+
+       printf("\t-A or --authfile authfile          File containing user credentials\n");
+       printf("\t-c or --command \"command string\"   Execute semicolon separated cmds\n");
+       printf("\t-d or --debug debuglevel           Set the debuglevel\n");
+       printf("\t-l or --logfile logfile            Logfile to use instead of stdout\n");
+       printf("\t-h or --help                       Print this help message.\n");
+       printf("\t-N or --nopass                     Don't ask for a password\n");
+       printf("\t-s or --conf configfile            Specify an alternative config file\n");
+       printf("\t-U or --user username              Set the network username\n");
+       printf("\t-W or --workgroup domain           Set the domain name for user account\n");
+       printf("\t-I or --dest-ip ip                 Specify destination IP address\n");
+       printf("\n");
+}
+
 /* Main function */
 
  int main(int argc, char *argv[])
@@ -581,6 +599,7 @@ static NTSTATUS process_cmd(struct cli_state *cli, char *cmd)
        static int              got_pass = 0;
        BOOL                    interactive = True;
        int                     opt;
+       int                     olddebug;
        static char             *cmdstr = "";
        const char *server;
        struct cli_state        *cli;
@@ -597,36 +616,41 @@ static NTSTATUS process_cmd(struct cli_state *cli, char *cmd)
        struct cmd_set          **cmd_set;
        struct in_addr          server_ip;
        NTSTATUS                nt_status;
+       extern BOOL             AllowDebugChange;
 
        /* make sure the vars that get altered (4th field) are in
           a fixed location or certain compilers complain */
        poptContext pc;
        struct poptOption long_options[] = {
-               POPT_AUTOHELP
-               {"authfile",    'A', POPT_ARG_STRING,   &opt_authfile, 'A', "File containing user credentials"},
-               {"conf",        's', POPT_ARG_STRING,   &opt_configfile, 's', "Specify an alternative config file"},
-               {"nopass",      'N', POPT_ARG_NONE,     &got_pass, 'N', "Don't ask for a password"},
-               {"user",        'U', POPT_ARG_STRING,   &opt_username, 'U', "Set the network username"},
-               {"workgroup",   'W', POPT_ARG_STRING,   &opt_domain, 'W', "Set the domain name for user account"},
-               {"command",     'c', POPT_ARG_STRING,   &cmdstr, 'c', "Execute semicolon separated cmds"},
-               {"logfile",     'l', POPT_ARG_STRING,   &opt_logfile, 'l', "Logfile to use instead of stdout"},
-               {"dest-ip",     'I', POPT_ARG_STRING,   &opt_ipaddr, 'I', "Specify destination IP address"},
+               {"authfile",    'A', POPT_ARG_STRING,   &opt_authfile, 'A'},
+               {"conf",        's', POPT_ARG_STRING,   &opt_configfile, 's'},
+               {"nopass",      'N', POPT_ARG_NONE,     &got_pass},
+               {"user",        'U', POPT_ARG_STRING,   &opt_username, 'U'},
+               {"workgroup",   'W', POPT_ARG_STRING,   &opt_domain, 'W'},
+               {"command",     'c', POPT_ARG_STRING,   &cmdstr},
+               {"logfile",     'l', POPT_ARG_STRING,   &opt_logfile, 'l'},
+               {"help",        'h', POPT_ARG_NONE,     0, 'h'},
+               {"dest-ip",     'I', POPT_ARG_STRING,   &opt_ipaddr, 'I'},
                { NULL, 0, POPT_ARG_INCLUDE_TABLE, popt_common_debug },
                { NULL }
        };
 
+
        setlinebuf(stdout);
 
-       /* Parse options */
+       DEBUGLEVEL = 1;
+       AllowDebugChange = False;
 
-       pc = poptGetContext("rpcclient", argc, (const char **) argv,
-                           long_options, 0);
+       /* Parse options */
 
        if (argc == 1) {
-               poptPrintHelp(pc, stderr, 0);
+               usage();
                return 0;
        }
        
+       pc = poptGetContext("rpcclient", argc, (const char **) argv,
+                           long_options, 0);
+       
        while((opt = poptGetNextOpt(pc)) != -1) {
                switch (opt) {
                case 'A':
@@ -662,7 +686,7 @@ static NTSTATUS process_cmd(struct cli_state *cli, char *cmd)
                        break;
                }
                case 'I':
-                       if ( (server_ip.s_addr=inet_addr(opt_ipaddr)) == INADDR_NONE ) {
+                       if (!inet_aton(opt_ipaddr, &server_ip)) {
                                fprintf(stderr, "%s not a valid IP address\n",
                                        opt_ipaddr);
                                return 1;
@@ -670,6 +694,11 @@ static NTSTATUS process_cmd(struct cli_state *cli, char *cmd)
                case 'W':
                        pstrcpy(domain, opt_domain);
                        break;
+                       
+               case 'h':
+               default:
+                       usage();
+                       exit(1);
                }
        }
 
@@ -679,7 +708,7 @@ static NTSTATUS process_cmd(struct cli_state *cli, char *cmd)
        server = poptGetArg(pc);
        
        if (!server || poptGetArg(pc)) {
-               poptPrintHelp(pc, stderr, 0);
+               usage();
                return 1;
        }
 
@@ -692,9 +721,12 @@ static NTSTATUS process_cmd(struct cli_state *cli, char *cmd)
                reopen_logs();
        
        /* Load smb.conf file */
-
-       if (!lp_load(dyn_CONFIGFILE,True,False,False))
+       /* FIXME!  How to get this DEBUGLEVEL to last over lp_load()? */
+       olddebug = DEBUGLEVEL;
+       if (!lp_load(dyn_CONFIGFILE,True,False,False)) {
                fprintf(stderr, "Can't load %s\n", dyn_CONFIGFILE);
+       }
+       DEBUGLEVEL = olddebug;
 
        load_interfaces();
 
index 7124f9416ad4ff1fdf08b080f3d39b419411fd9d..3694eb47dfa9c95a766dd67e3b922f20a35f0642 100644 (file)
@@ -217,8 +217,8 @@ static void decode_sam_deltas(uint32 num_deltas, SAM_DELTA_HDR *hdr_deltas, SAM_
                                decode_sam_als_mem_info(a);
                                break;
                        }
-                       case SAM_DELTA_POLICY_INFO: {
-                               SAM_DELTA_POLICY *a;
+                       case SAM_DELTA_DOM_INFO: {
+                               SAM_DELTA_DOM *a;
                                a = &deltas[i].dom_info;
                                decode_sam_dom_info(a);
                                break;
@@ -324,15 +324,15 @@ static void sam_account_from_delta(SAM_ACCOUNT *account,
 
 static void apply_account_info(SAM_ACCOUNT_INFO *sam_acct_delta)
 {
-       SAM_ACCOUNT *sam_acct;
+       SAM_ACCOUNT sam_acct;
        BOOL result;
 
-       if (!NT_STATUS_IS_OK(pdb_init_sam(&sam_acct))) {
-               return;
-       }
+       ZERO_STRUCT(sam_acct);
+
+       pdb_init_sam(&sam_acct);
 
-       sam_account_from_delta(sam_acct, sam_acct_delta);
-       result = pdb_add_sam_account(sam_acct);
+       sam_account_from_delta(&sam_acct, sam_acct_delta);
+       result = pdb_add_sam_account(&sam_acct);
 }
 
 /* Apply an array of deltas to the SAM database */
@@ -362,7 +362,6 @@ static NTSTATUS sam_sync(struct cli_state *cli, unsigned char trust_passwd[16],
         uint32 num_deltas_0, num_deltas_2;
         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
        struct pdb_context *in;
-       uint32 neg_flags = 0x000001ff;
 
        DOM_CRED ret_creds;
 
@@ -385,7 +384,7 @@ static NTSTATUS sam_sync(struct cli_state *cli, unsigned char trust_passwd[16],
 
         /* Request a challenge */
 
-        if (!NT_STATUS_IS_OK(cli_nt_setup_creds(cli, SEC_CHAN_BDC, trust_passwd, &neg_flags, 2))) {
+        if (!NT_STATUS_IS_OK(cli_nt_setup_creds(cli, SEC_CHAN_BDC, trust_passwd))) {
                 DEBUG(0, ("Error initialising session creds\n"));
                 goto done;
         }
@@ -395,16 +394,13 @@ static NTSTATUS sam_sync(struct cli_state *cli, unsigned char trust_passwd[16],
 
         /* Do sam synchronisation on the SAM database*/
 
-       result = cli_netlogon_sam_sync(cli, mem_ctx, &ret_creds, 0, 0,
+       result = cli_netlogon_sam_sync(cli, mem_ctx, &ret_creds, 0, 
                                       &num_deltas_0, &hdr_deltas_0, 
                                       &deltas_0);
         
         if (!NT_STATUS_IS_OK(result))
                goto done;
 
-       
-        /* Update sam */
-
        apply_deltas(num_deltas_0, hdr_deltas_0, deltas_0);
 
 
@@ -416,7 +412,7 @@ static NTSTATUS sam_sync(struct cli_state *cli, unsigned char trust_passwd[16],
 #if 1
         /* Do sam synchronisation on the LSA database */
 
-       result = cli_netlogon_sam_sync(cli, mem_ctx, &ret_creds, 2, 0, &num_deltas_2, &hdr_deltas_2, &deltas_2);
+       result = cli_netlogon_sam_sync(cli, mem_ctx, &ret_creds, 2, &num_deltas_2, &hdr_deltas_2, &deltas_2);
         
         if (!NT_STATUS_IS_OK(result))
                goto done;
@@ -470,6 +466,8 @@ static NTSTATUS sam_sync(struct cli_state *cli, unsigned char trust_passwd[16],
                 goto done;
         }
 
+        /* Update sam tdb */
+
  done:
        cli_nt_session_close(cli);
        talloc_destroy(mem_ctx);
@@ -545,7 +543,7 @@ static void user_callback(poptContext con,
                          const struct poptOption *opt,
                          const char *arg, const void *data)
 {
-       const char *p, *ch;
+       char *p, *ch;
 
        if (!arg)
                return;
index 9d411711cb95532b8df59e27263e4287843c9cca..6623c6df646cc561bf20359deee44ef7bbf77c95 100644 (file)
@@ -531,33 +531,13 @@ file %s fnum = %d\n", blr->com_type, fsp->fsp_name, fsp->fnum ));
 }
 
 /****************************************************************************
- Return the number of seconds to the next blocking locks timeout, or default_timeout
+ Return True if the blocking lock queue has entries.
 *****************************************************************************/
-unsigned blocking_locks_timeout(unsigned default_timeout)
-{
-       unsigned timeout = default_timeout;
-       time_t t;
-       blocking_lock_record *blr = (blocking_lock_record *)ubi_slFirst(&blocking_lock_queue);
-
-       /* note that we avoid the time() syscall if there are no blocking locks */
-       if (!blr) {
-               return timeout;
-       }
-
-       t = time(NULL);
-
-       while (blr) {
-               if (timeout > (blr->expire_time - t)) {
-                       timeout = blr->expire_time - t;
-               }
-               blr = (blocking_lock_record *)ubi_slNext(blr);
-       }
-
-       if (timeout < 1) {
-               timeout = 1;
-       }
 
-       return timeout;
+BOOL blocking_locks_pending(void)
+{
+  blocking_lock_record *blr = (blocking_lock_record *)ubi_slFirst( &blocking_lock_queue );
+  return (blr == NULL ? False : True);
 }
 
 /****************************************************************************
@@ -596,7 +576,7 @@ void process_blocking_lock_queue(time_t t)
     DEBUG(5,("process_blocking_lock_queue: examining pending lock fnum = %d for file %s\n",
           fsp->fnum, fsp->fsp_name ));
 
-    if((blr->expire_time != -1) && (blr->expire_time <= t)) {
+    if((blr->expire_time != -1) && (blr->expire_time > t)) {
       /*
        * Lock expired - throw away all previously
        * obtained locks and return lock error.
@@ -604,7 +584,7 @@ void process_blocking_lock_queue(time_t t)
       DEBUG(5,("process_blocking_lock_queue: pending lock fnum = %d for file %s timed out.\n",
           fsp->fnum, fsp->fsp_name ));
 
-      blocking_lock_reply_error(blr,NT_STATUS_FILE_LOCK_CONFLICT);
+      blocking_lock_reply_error(blr,NT_STATUS_ACCESS_DENIED);
       free_blocking_lock_record((blocking_lock_record *)ubi_slRemNext( &blocking_lock_queue, prev));
       blr = (blocking_lock_record *)(prev ? ubi_slNext(prev) : ubi_slFirst(&blocking_lock_queue));
       continue;
index 22407348e821777d6a8d9440af25140ddc7ea219..d70e50f89957624c47c1ebd81a8fa185464f152b 100644 (file)
@@ -131,7 +131,7 @@ void conn_close_all(void)
        connection_struct *conn, *next;
        for (conn=Connections;conn;conn=next) {
                next=conn->next;
-               close_cnum(conn, conn->vuid);
+               close_cnum(conn, (uint16)-1);
        }
 }
 
@@ -157,27 +157,6 @@ BOOL conn_idle_all(time_t t, int deadtime)
        return allidle;
 }
 
-/****************************************************************************
-clear a vuid out of the validity cache, and as the 'owner' of a connection.
-****************************************************************************/
-void conn_clear_vuid_cache(uint16 vuid)
-{
-       connection_struct *conn;
-       int i;
-
-       for (conn=Connections;conn;conn=conn->next) {
-               if (conn->vuid == vuid) {
-                       conn->vuid = UID_FIELD_INVALID;
-               }
-
-               for (i=0;i<conn->vuid_cache.entries && i< VUID_CACHE_SIZE;i++) {
-                       if (conn->vuid_cache.list[i] == vuid) {
-                               conn->vuid_cache.list[i] = UID_FIELD_INVALID;
-                       }
-               }
-       }
-}
-
 /****************************************************************************
  Free a conn structure.
 ****************************************************************************/
@@ -212,6 +191,7 @@ void conn_free(connection_struct *conn)
                conn->ngroups = 0;
        }
 
+       delete_nt_token(&conn->nt_user_token);
        free_namearray(conn->veto_list);
        free_namearray(conn->hide_list);
        free_namearray(conn->veto_oplock_list);
index ad394a01ca0fd99362dc42fbd714092a22027fd3..5609c2963d80ce6976f0e378bef9b8cb38f77862 100644 (file)
@@ -28,24 +28,14 @@ static TDB_CONTEXT *tdb;
 
 TDB_CONTEXT *conn_tdb_ctx(void)
 {
-       if (!tdb)
+       if (!tdb) {
                tdb = tdb_open_log(lock_path("connections.tdb"), 0, TDB_CLEAR_IF_FIRST|TDB_DEFAULT, 
                               O_RDWR | O_CREAT, 0644);
+       }
 
        return tdb;
 }
 
-static void make_conn_key(connection_struct *conn,char *name, TDB_DATA *pkbuf, struct connections_key *pkey)
-{
-       ZERO_STRUCTP(pkey);
-       pkey->pid = sys_getpid();
-       pkey->cnum = conn?conn->cnum:-1;
-       fstrcpy(pkey->name, name);
-
-       pkbuf->dptr = (char *)pkey;
-       pkbuf->dsize = sizeof(*pkey);
-}
-
 /****************************************************************************
  Delete a connection record.
 ****************************************************************************/
@@ -55,12 +45,17 @@ BOOL yield_connection(connection_struct *conn,char *name)
        struct connections_key key;
        TDB_DATA kbuf;
 
-       if (!tdb)
-               return False;
+       if (!tdb) return False;
 
        DEBUG(3,("Yielding connection to %s\n",name));
 
-       make_conn_key(conn, name, &kbuf, &key);
+       ZERO_STRUCT(key);
+       key.pid = sys_getpid();
+       key.cnum = conn?conn->cnum:-1;
+       fstrcpy(key.name, name);
+
+       kbuf.dptr = (char *)&key;
+       kbuf.dsize = sizeof(key);
 
        if (tdb_delete(tdb, kbuf) != 0) {
                int dbg_lvl = (!conn && (tdb_error(tdb) == TDB_ERR_NOEXIST)) ? 3 : 0;
@@ -93,7 +88,7 @@ static int count_fn( TDB_CONTEXT *the_tdb, TDB_DATA kbuf, TDB_DATA dbuf, void *u
 
        memcpy(&crec, dbuf.dptr, sizeof(crec));
  
-       if (crec.cnum == -1)
+    if (crec.cnum == -1)
                return 0;
 
        /* If the pid was not found delete the entry from connections.tdb */
@@ -116,16 +111,16 @@ static int count_fn( TDB_CONTEXT *the_tdb, TDB_DATA kbuf, TDB_DATA dbuf, void *u
  Claim an entry in the connections database.
 ****************************************************************************/
 
-BOOL claim_connection(connection_struct *conn,char *name,int max_connections,BOOL Clear, uint32 msg_flags)
+BOOL claim_connection(connection_struct *conn,char *name,int max_connections,BOOL Clear)
 {
        struct connections_key key;
        struct connections_data crec;
        TDB_DATA kbuf, dbuf;
 
-       if (!tdb)
+       if (!tdb) {
                tdb = tdb_open_log(lock_path("connections.tdb"), 0, TDB_CLEAR_IF_FIRST|TDB_DEFAULT, 
                               O_RDWR | O_CREAT, 0644);
-
+       }
        if (!tdb)
                return False;
 
@@ -161,7 +156,13 @@ BOOL claim_connection(connection_struct *conn,char *name,int max_connections,BOO
 
        DEBUG(5,("claiming %s %d\n",name,max_connections));
 
-       make_conn_key(conn, name, &kbuf, &key);
+       ZERO_STRUCT(key);
+       key.pid = sys_getpid();
+       key.cnum = conn?conn->cnum:-1;
+       fstrcpy(key.name, name);
+
+       kbuf.dptr = (char *)&key;
+       kbuf.dsize = sizeof(key);
 
        /* fill in the crec */
        ZERO_STRUCT(crec);
@@ -175,7 +176,6 @@ BOOL claim_connection(connection_struct *conn,char *name,int max_connections,BOO
                        lp_servicename(SNUM(conn)),sizeof(crec.name)-1);
        }
        crec.start = time(NULL);
-       crec.bcast_msg_flags = msg_flags;
        
        StrnCpy(crec.machine,get_remote_machine_name(),sizeof(crec.machine)-1);
        StrnCpy(crec.addr,conn?conn->client_address:client_addr(),sizeof(crec.addr)-1);
@@ -191,45 +191,3 @@ BOOL claim_connection(connection_struct *conn,char *name,int max_connections,BOO
 
        return True;
 }
-
-BOOL register_message_flags(BOOL doreg, uint32 msg_flags)
-{
-       struct connections_key key;
-       struct connections_data *pcrec;
-       TDB_DATA kbuf, dbuf;
-
-       if (!tdb)
-               return False;
-
-       DEBUG(10,("register_message_flags: %s flags 0x%x\n",
-               doreg ? "adding" : "removing",
-               (unsigned int)msg_flags ));
-
-       make_conn_key(NULL, "", &kbuf, &key);
-
-        dbuf = tdb_fetch(tdb, kbuf);
-        if (!dbuf.dptr) {
-               DEBUG(0,("register_message_flags: tdb_fetch failed\n"));
-               return False;
-       }
-
-       pcrec = (struct connections_data *)dbuf.dptr;
-       pcrec->bcast_msg_flags = msg_flags;
-       if (doreg)
-               pcrec->bcast_msg_flags |= msg_flags;
-       else
-               pcrec->bcast_msg_flags &= ~msg_flags;
-
-       if (tdb_store(tdb, kbuf, dbuf, TDB_REPLACE) != 0) {
-               DEBUG(0,("register_message_flags: tdb_store failed with error %s.\n",
-                       tdb_errorstr(tdb) ));
-               SAFE_FREE(dbuf.dptr);
-               return False;
-       }
-
-       DEBUG(10,("register_message_flags: new flags 0x%x\n",
-               (unsigned int)pcrec->bcast_msg_flags ));
-
-       SAFE_FREE(dbuf.dptr);
-       return True;
-}
index 396ecd98c495e8f856edf090e96d54fa19b66a80..1a18476b75b179f425970133979688363d66e3fe 100644 (file)
@@ -553,24 +553,9 @@ void *dptr_fetch_lanman2(int dptr_num)
 
 BOOL dir_check_ftype(connection_struct *conn,int mode,SMB_STRUCT_STAT *st,int dirtype)
 {
-       int mask;
-
-       /* Check the "may have" search bits. */
-       if (((mode & ~dirtype) & (aHIDDEN | aSYSTEM | aDIR)) != 0)
-               return False;
-
-       /* Check the "must have" bits, which are the may have bits shifted eight */
-       /* If must have bit is set, the file/dir can not be returned in search unless the matching
-               file attribute is set */
-       mask = ((dirtype >> 8) & (aDIR|aARCH|aRONLY|aHIDDEN|aSYSTEM)); /* & 0x37 */
-       if(mask) {
-               if((mask & (mode & (aDIR|aARCH|aRONLY|aHIDDEN|aSYSTEM))) == mask)   /* check if matching attribute present */
-                       return True;
-               else
-                       return False;
-       }
-
-       return True;
+  if (((mode & ~dirtype) & (aHIDDEN | aSYSTEM | aDIR)) != 0)
+    return False;
+  return True;
 }
 
 static BOOL mangle_mask_match(connection_struct *conn, char *filename, char *mask)
@@ -678,15 +663,18 @@ typedef struct
   char *current;
 } Dir;
 
+
+
 /*******************************************************************
- Check to see if a user can read a file. This is only approximate,
- it is used as part of the "hide unreadable" option. Don't
- use it for anything security sensitive.
+check to see if a user can read a file. This is only approximate,
+it is used as part of the "hide unreadable" option. Don't
+use it for anything security sensitive
 ********************************************************************/
 
-static BOOL user_can_read_file(connection_struct *conn, char *name, SMB_STRUCT_STAT *pst)
+static BOOL user_can_read_file(connection_struct *conn, char *name)
 {
        extern struct current_user current_user;
+       SMB_STRUCT_STAT ste;
        SEC_DESC *psd = NULL;
        size_t sd_size;
        files_struct *fsp;
@@ -695,6 +683,8 @@ static BOOL user_can_read_file(connection_struct *conn, char *name, SMB_STRUCT_S
        NTSTATUS status;
        uint32 access_granted;
 
+       ZERO_STRUCT(ste);
+
        /*
         * If user is a member of the Admin group
         * we never hide files from them.
@@ -704,16 +694,16 @@ static BOOL user_can_read_file(connection_struct *conn, char *name, SMB_STRUCT_S
                return True;
 
        /* If we can't stat it does not show it */
-       if (!VALID_STAT(*pst) && (vfs_stat(conn, name, pst) != 0))
+       if (vfs_stat(conn, name, &ste) != 0)
                return False;
 
        /* Pseudo-open the file (note - no fd's created). */
 
-       if(S_ISDIR(pst->st_mode))       
-                fsp = open_directory(conn, name, pst, 0, SET_DENY_MODE(DENY_NONE), (FILE_FAIL_IF_NOT_EXIST|FILE_EXISTS_OPEN),
+       if(S_ISDIR(ste.st_mode))        
+                fsp = open_directory(conn, name, &ste, 0, SET_DENY_MODE(DENY_NONE), (FILE_FAIL_IF_NOT_EXIST|FILE_EXISTS_OPEN),
                        unix_mode(conn,aRONLY|aDIR, name), &smb_action);
        else
-               fsp = open_file_shared1(conn, name, pst, FILE_READ_ATTRIBUTES, SET_DENY_MODE(DENY_NONE),
+               fsp = open_file_shared1(conn, name, &ste, FILE_READ_ATTRIBUTES, SET_DENY_MODE(DENY_NONE),
                        (FILE_FAIL_IF_NOT_EXIST|FILE_EXISTS_OPEN), 0, 0, &access_mode, &smb_action);
 
        if (!fsp)
@@ -732,15 +722,16 @@ static BOOL user_can_read_file(connection_struct *conn, char *name, SMB_STRUCT_S
 }
 
 /*******************************************************************
- Check to see if a user can write a file (and only files, we do not
- check dirs on this one). This is only approximate,
- it is used as part of the "hide unwriteable" option. Don't
- use it for anything security sensitive.
+check to see if a user can write a file (and only files, we do not
+check dirs on this one). This is only approximate,
+it is used as part of the "hide unwriteable" option. Don't
+use it for anything security sensitive
 ********************************************************************/
 
-static BOOL user_can_write_file(connection_struct *conn, char *name, SMB_STRUCT_STAT *pst)
+static BOOL user_can_write_file(connection_struct *conn, char *name)
 {
        extern struct current_user current_user;
+       SMB_STRUCT_STAT ste;
        SEC_DESC *psd = NULL;
        size_t sd_size;
        files_struct *fsp;
@@ -749,6 +740,8 @@ static BOOL user_can_write_file(connection_struct *conn, char *name, SMB_STRUCT_
        NTSTATUS status;
        uint32 access_granted;
 
+       ZERO_STRUCT(ste);
+
        /*
         * If user is a member of the Admin group
         * we never hide files from them.
@@ -758,15 +751,15 @@ static BOOL user_can_write_file(connection_struct *conn, char *name, SMB_STRUCT_
                return True;
 
        /* If we can't stat it does not show it */
-       if (!VALID_STAT(*pst) && (vfs_stat(conn, name, pst) != 0))
+       if (vfs_stat(conn, name, &ste) != 0)
                return False;
 
        /* Pseudo-open the file (note - no fd's created). */
 
-       if(S_ISDIR(pst->st_mode))       
+       if(S_ISDIR(ste.st_mode))        
                return True;
        else
-               fsp = open_file_shared1(conn, name, pst, FILE_WRITE_ATTRIBUTES, SET_DENY_MODE(DENY_NONE),
+               fsp = open_file_shared1(conn, name, &ste, FILE_WRITE_ATTRIBUTES, SET_DENY_MODE(DENY_NONE),
                        (FILE_FAIL_IF_NOT_EXIST|FILE_EXISTS_OPEN), 0, 0, &access_mode, &smb_action);
 
        if (!fsp)
@@ -784,30 +777,6 @@ static BOOL user_can_write_file(connection_struct *conn, char *name, SMB_STRUCT_
                                  &access_granted, &status);
 }
 
-/*******************************************************************
-  Is a file a "special" type ?
-********************************************************************/
-
-static BOOL file_is_special(connection_struct *conn, char *name, SMB_STRUCT_STAT *pst)
-{
-       /*
-        * If user is a member of the Admin group
-        * we never hide files from them.
-        */
-
-       if (conn->admin_user)
-               return True;
-
-       /* If we can't stat it does not show it */
-       if (!VALID_STAT(*pst) && (vfs_stat(conn, name, pst) != 0))
-               return True;
-
-       if (S_ISREG(pst->st_mode) || S_ISDIR(pst->st_mode) || S_ISLNK(pst->st_mode))
-               return False;
-
-       return True;
-}
-
 /*******************************************************************
  Open a directory.
 ********************************************************************/
@@ -833,8 +802,6 @@ void *OpenDir(connection_struct *conn, char *name, BOOL use_veto)
        while (True) {
                int l;
                BOOL normal_entry = True;
-               SMB_STRUCT_STAT st;
-               char *entry = NULL;
 
                if (used == 0) {
                        n = ".";
@@ -851,7 +818,6 @@ void *OpenDir(connection_struct *conn, char *name, BOOL use_veto)
                        normal_entry = True;
                }
 
-               ZERO_STRUCT(st);
                l = strlen(n)+1;
 
                /* If it's a vetoed file, pretend it doesn't even exist */
@@ -860,45 +826,30 @@ void *OpenDir(connection_struct *conn, char *name, BOOL use_veto)
 
                /* Honour _hide unreadable_ option */
                if (normal_entry && conn && lp_hideunreadable(SNUM(conn))) {
+                       char *entry;
                        int ret=0;
       
-                       if (entry || asprintf(&entry, "%s/%s/%s", conn->origpath, name, n) > 0) {
-                               ret = user_can_read_file(conn, entry, &st);
-                       }
-                       if (!ret) {
+                       if (asprintf(&entry, "%s/%s/%s", conn->origpath, name, n) > 0) {
+                               ret = user_can_read_file(conn, entry);
                                SAFE_FREE(entry);
-                               continue;
                        }
+                       if (!ret)
+                               continue;
                }
 
                /* Honour _hide unwriteable_ option */
                if (normal_entry && conn && lp_hideunwriteable_files(SNUM(conn))) {
+                       char *entry;
                        int ret=0;
       
-                       if (entry || asprintf(&entry, "%s/%s/%s", conn->origpath, name, n) > 0) {
-                               ret = user_can_write_file(conn, entry, &st);
-                       }
-                       if (!ret) {
+                       if (asprintf(&entry, "%s/%s/%s", conn->origpath, name, n) > 0) {
+                               ret = user_can_write_file(conn, entry);
                                SAFE_FREE(entry);
-                               continue;
-                       }
-               }
-
-               /* Honour _hide_special_ option */
-               if (normal_entry && conn && lp_hide_special_files(SNUM(conn))) {
-                       int ret=0;
-      
-                       if (entry || asprintf(&entry, "%s/%s/%s", conn->origpath, name, n) > 0) {
-                               ret = file_is_special(conn, entry, &st);
                        }
-                       if (ret) {
-                               SAFE_FREE(entry);
+                       if (!ret)
                                continue;
-                       }
                }
 
-               SAFE_FREE(entry);
-
                if (used + l > dirp->mallocsize) {
                        int s = MAX(used+l,used+2000);
                        char *r;
index d343db26f6b6d57cb7acd65fe642ef37e2918ac9..ce98af4ace5fcc65b8ee552640e34e0082692ce6 100644 (file)
@@ -168,7 +168,7 @@ BOOL unix_convert(pstring name,connection_struct *conn,char *saved_last_componen
 
        pstrcpy(orig_path, name);
 
-       if(!case_sensitive && stat_cache_lookup(conn, name, dirpath, &start, &st)) {
+       if(stat_cache_lookup(conn, name, dirpath, &start, &st)) {
                *pst = st;
                return True;
        }
index 0446a953ff5a4111b5c82de2522756e85ccd7084..1d4697474cef3ab4d1d0fa0c0e06ebdd1e9affcb 100644 (file)
@@ -730,7 +730,7 @@ static void name_map(char *OutName, BOOL need83, BOOL cache83)
        DEBUG(5,("name_map( %s, need83 = %s, cache83 = %s)\n", OutName,
                 need83 ? "True" : "False", cache83 ? "True" : "False"));
        
-       if (push_ucs2_allocate(&OutName_ucs2, OutName) < 0) {
+       if (push_ucs2_allocate((void **)&OutName_ucs2, OutName) < 0) {
                DEBUG(0, ("push_ucs2_allocate failed!\n"));
                return;
        }
index a0a3d51139d61aaaaf2d3fbd4145ad31e64163c5..6b53cc72aa454626308088aff91e9cec2d3bf5a6 100644 (file)
@@ -200,7 +200,7 @@ static BOOL is_mangled_component(const char *name)
 {
        int len, i;
 
-       M_DEBUG(10,("is_mangled_component %s ?\n", name));
+       M_DEBUG(0,("is_mangled_component %s ?\n", name));
 
        /* check the length */
        len = strlen(name);
@@ -234,7 +234,7 @@ static BOOL is_mangled_component(const char *name)
                }
        }
 
-       M_DEBUG(10,("is_mangled %s -> yes\n", name));
+       M_DEBUG(0,("is_mangled %s -> yes\n", name));
 
        return True;
 }
@@ -257,7 +257,7 @@ static BOOL is_mangled(const char *name)
        const char *p;
        const char *s;
 
-       M_DEBUG(10,("is_mangled %s ?\n", name));
+       M_DEBUG(0,("is_mangled %s ?\n", name));
 
        for (s=name; (p=strchr(s, '/')); s=p+1) {
                char *component = strndup(s, PTR_DIFF(p, s));
@@ -367,7 +367,7 @@ static BOOL check_cache(char *name)
 
        /* make sure that this is a mangled name from this cache */
        if (!is_mangled(name)) {
-               M_DEBUG(10,("check_cache: %s -> not mangled\n", name));
+               M_DEBUG(0,("check_cache: %s -> not mangled\n", name));
                return False;
        }
 
@@ -382,7 +382,7 @@ static BOOL check_cache(char *name)
        /* now look in the prefix cache for that hash */
        prefix = cache_lookup(hash);
        if (!prefix) {
-               M_DEBUG(10,("check_cache: %s -> %08X -> not found\n", name, hash));
+               M_DEBUG(0,("check_cache: %s -> %08X -> not found\n", name, hash));
                return False;
        }
 
@@ -395,10 +395,10 @@ static BOOL check_cache(char *name)
        }
 
        if (extension[0]) {
-               M_DEBUG(10,("check_cache: %s -> %s.%s\n", name, prefix, extension));
+               M_DEBUG(0,("check_cache: %s -> %s.%s\n", name, prefix, extension));
                slprintf(name, sizeof(fstring), "%s.%s", prefix, extension);
        } else {
-               M_DEBUG(10,("check_cache: %s -> %s\n", name, prefix));
+               M_DEBUG(0,("check_cache: %s -> %s\n", name, prefix));
                fstrcpy(name, prefix);
        }
 
@@ -573,7 +573,7 @@ static void name_map(char *name, BOOL need83, BOOL cache83)
                cache_insert(name, prefix_len, hash);
        }
 
-       M_DEBUG(10,("name_map: %s -> %08X -> %s (cache=%d)\n", 
+       M_DEBUG(0,("name_map: %s -> %08X -> %s (cache=%d)\n", 
                   name, hash, new_name, cache83));
 
        /* and overwrite the old name */
index 16427b00d705ee101a89babde07090764c2df415..2be04fd686058f553412aa6cc13efa0d2e190b2e 100644 (file)
@@ -170,9 +170,9 @@ static int negprot_spnego(char *p)
        DATA_BLOB blob;
        extern pstring global_myname;
        uint8 guid[16];
-       const char *OIDs_krb5[] = {OID_KERBEROS5,
+       const char *OIDs_krb5[] = {OID_NTLMSSP,
+                                  OID_KERBEROS5,
                                   OID_KERBEROS5_OLD,
-                                  OID_NTLMSSP,
                                   NULL};
        const char *OIDs_plain[] = {OID_NTLMSSP, NULL};
        char *principal;
@@ -199,7 +199,9 @@ static int negprot_spnego(char *p)
        if (lp_security() != SEC_ADS) {
                blob = spnego_gen_negTokenInit(guid, OIDs_plain, "NONE");
        } else {
-               asprintf(&principal, "%s$@%s", guid, lp_realm());
+               /* win2000 uses host$@REALM, which we will probably use eventually,
+                  but for now this works */
+               asprintf(&principal, "HOST/%s@%s", guid, lp_realm());
                blob = spnego_gen_negTokenInit(guid, OIDs_krb5, principal);
                free(principal);
        }
@@ -237,11 +239,7 @@ static int reply_nt1(char *inbuf, char *outbuf)
                capabilities |= CAP_EXTENDED_SECURITY;
        }
        
-       capabilities |= CAP_NT_SMBS|CAP_RPC_REMOTE_APIS;
-
-       if (lp_unix_extensions()) {
-               capabilities |= CAP_UNIX;
-       }
+       capabilities |= CAP_NT_SMBS|CAP_RPC_REMOTE_APIS|CAP_UNIX;
        
        if (lp_large_readwrite() && (SMB_OFF_T_BITS == 64))
                capabilities |= CAP_LARGE_READX|CAP_LARGE_WRITEX|CAP_W2K_SMBS;
index 1f3bbd488e577446f429f72a03be7db992ba1d93..cf69dfddb049fa6044c56634d47a19ddaeb278dc 100644 (file)
@@ -371,7 +371,7 @@ static int map_share_mode( char *fname, uint32 create_options,
 
        if (smb_open_mode == -1) {
 
-               if(*desired_access & (DELETE_ACCESS|WRITE_DAC_ACCESS|WRITE_OWNER_ACCESS|SYNCHRONIZE_ACCESS|
+               if(*desired_access & (DELETE_ACCESS|WRITE_DAC_ACCESS|WRITE_OWNER_ACCESS|
                                        FILE_EXECUTE|FILE_READ_ATTRIBUTES|
                                        FILE_READ_EA|FILE_WRITE_EA|SYSTEM_SECURITY_ACCESS|
                                        FILE_WRITE_ATTRIBUTES|READ_CONTROL_ACCESS)) {
@@ -548,7 +548,6 @@ int reply_ntcreate_and_X(connection_struct *conn,
        uint32 create_disposition = IVAL(inbuf,smb_ntcreate_CreateDisposition);
        uint32 create_options = IVAL(inbuf,smb_ntcreate_CreateOptions);
        uint16 root_dir_fid = (uint16)IVAL(inbuf,smb_ntcreate_RootDirectoryFid);
-       SMB_OFF_T allocation_size = 0;
        int smb_ofun;
        int smb_open_mode;
        int smb_attr = (file_attributes & SAMBA_ATTRIBUTES_MASK);
@@ -564,16 +563,8 @@ int reply_ntcreate_and_X(connection_struct *conn,
        files_struct *fsp=NULL;
        char *p = NULL;
        time_t c_time;
-       BOOL extended_oplock_granted = False;
-
        START_PROFILE(SMBntcreateX);
 
-       DEBUG(10,("reply_ntcreateX: flags = 0x%x, desired_access = 0x%x \
-file_attributes = 0x%x, share_access = 0x%x, create_disposition = 0x%x \
-create_options = 0x%x root_dir_fid = 0x%x\n", flags, desired_access, file_attributes,
-                       share_access, create_disposition,
-                       create_options, root_dir_fid ));
-
        /* If it's an IPC, use the pipe handler. */
 
        if (IS_IPC(conn)) {
@@ -582,14 +573,10 @@ create_options = 0x%x root_dir_fid = 0x%x\n", flags, desired_access, file_attrib
                        return do_ntcreate_pipe_open(conn,inbuf,outbuf,length,bufsize);
                } else {
                        END_PROFILE(SMBntcreateX);
-                       return(ERROR_DOS(ERRDOS,ERRnoaccess));
+                       return(ERROR_DOS(ERRDOS,ERRbadaccess));
                }
        }
                        
-       if (create_options & FILE_OPEN_BY_FILE_ID) {
-               END_PROFILE(SMBntcreateX);
-               return ERROR_NT(NT_STATUS_NOT_SUPPORTED);
-       }
 
        /* 
         * We need to construct the open_and_X ofun value from the
@@ -598,7 +585,7 @@ create_options = 0x%x root_dir_fid = 0x%x\n", flags, desired_access, file_attrib
        
        if((smb_ofun = map_create_disposition( create_disposition )) == -1) {
                END_PROFILE(SMBntcreateX);
-               return(ERROR_DOS(ERRDOS,ERRnoaccess));
+               return(ERROR_DOS(ERRDOS,ERRbadaccess));
        }
 
        /*
@@ -673,7 +660,7 @@ create_options = 0x%x root_dir_fid = 0x%x\n", flags, desired_access, file_attrib
                                           share_access, 
                                           file_attributes)) == -1) {
                END_PROFILE(SMBntcreateX);
-               return ERROR_DOS(ERRDOS,ERRnoaccess);
+               return ERROR_DOS(ERRDOS,ERRbadaccess);
        }
 
        oplock_request = (flags & REQUEST_OPLOCK) ? EXCLUSIVE_OPLOCK : 0;
@@ -702,12 +689,6 @@ create_options = 0x%x root_dir_fid = 0x%x\n", flags, desired_access, file_attrib
        if(create_options & FILE_DIRECTORY_FILE) {
                oplock_request = 0;
                
-               /* Can't open a temp directory. IFS kit test. */
-               if (file_attributes & FILE_ATTRIBUTE_TEMPORARY) {
-                       END_PROFILE(SMBntcreateX);
-                       return ERROR_NT(NT_STATUS_INVALID_PARAMETER);
-               }
-
                fsp = open_directory(conn, fname, &sbuf, desired_access, smb_open_mode, smb_ofun, unixmode, &smb_action);
                        
                restore_case_semantics(file_attributes);
@@ -806,22 +787,6 @@ create_options = 0x%x root_dir_fid = 0x%x\n", flags, desired_access, file_attrib
                return ERROR_DOS(ERRDOS,ERRnoaccess);
        } 
        
-       /* Save the requested allocation size. */
-       allocation_size = IVAL(inbuf,smb_ntcreate_AllocationSize);
-#ifdef LARGE_SMB_OFF_T
-       allocation_size |= (((SMB_OFF_T)IVAL(inbuf,smb_ntcreate_AllocationSize + 4)) << 32);
-#endif
-       if (allocation_size && (allocation_size > file_len)) {
-               fsp->initial_allocation_size = SMB_ROUNDUP(allocation_size,SMB_ROUNDUP_ALLOCATION_SIZE);
-               if (vfs_allocate_file_space(fsp, fsp->initial_allocation_size) == -1) {
-                       close_file(fsp,False);
-                       END_PROFILE(SMBntcreateX);
-                       return ERROR_NT(NT_STATUS_DISK_FULL);
-               }
-       } else {
-               fsp->initial_allocation_size = SMB_ROUNDUP(file_len,SMB_ROUNDUP_ALLOCATION_SIZE);
-       }
-
        /* 
         * If the caller set the extended oplock request bit
         * and we granted one (by whatever means) - set the
@@ -829,10 +794,10 @@ create_options = 0x%x root_dir_fid = 0x%x\n", flags, desired_access, file_attrib
         */
        
        if (oplock_request && lp_fake_oplocks(SNUM(conn)))
-               extended_oplock_granted = True;
+               smb_action |= EXTENDED_OPLOCK_GRANTED;
        
        if(oplock_request && EXCLUSIVE_OPLOCK_TYPE(fsp->oplock_type))
-               extended_oplock_granted = True;
+               smb_action |= EXTENDED_OPLOCK_GRANTED;
 
 #if 0
        /* W2K sends back 42 words here ! If we do the same it breaks offline sync. Go figure... ? JRA. */
@@ -848,7 +813,7 @@ create_options = 0x%x root_dir_fid = 0x%x\n", flags, desired_access, file_attrib
         * exclusive & batch here.
         */
 
-       if (extended_oplock_granted) {
+       if (smb_action & EXTENDED_OPLOCK_GRANTED) {
                if (flags & REQUEST_BATCH_OPLOCK) {
                        SCVAL(p,0, BATCH_OPLOCK_RETURN);
                } else {
@@ -863,10 +828,7 @@ create_options = 0x%x root_dir_fid = 0x%x\n", flags, desired_access, file_attrib
        p++;
        SSVAL(p,0,fsp->fnum);
        p += 2;
-       if ((create_disposition == FILE_SUPERSEDE) && (smb_action == FILE_WAS_OVERWRITTEN))
-               SIVAL(p,0,FILE_WAS_SUPERSEDED);
-       else
-               SIVAL(p,0,smb_action);
+       SIVAL(p,0,smb_action);
        p += 4;
        
        /* Create time. */  
@@ -889,7 +851,7 @@ create_options = 0x%x root_dir_fid = 0x%x\n", flags, desired_access, file_attrib
        p += 8;
        SIVAL(p,0,fmode); /* File Attributes. */
        p += 4;
-       SOFF_T(p, 0, get_allocation_size(fsp,&sbuf));
+       SOFF_T(p, 0, get_allocation_size(&sbuf));
        p += 8;
        SOFF_T(p,0,file_len);
        p += 12;
@@ -924,7 +886,7 @@ static int do_nt_transact_create_pipe( connection_struct *conn,
 
        if(total_parameter_count < 54) {
                DEBUG(0,("do_nt_transact_create_pipe - insufficient parameters (%u)\n", (unsigned int)total_parameter_count));
-               return ERROR_DOS(ERRDOS,ERRnoaccess);
+               return ERROR_DOS(ERRDOS,ERRbadaccess);
        }
 
        srvstr_pull(inbuf, fname, params+53, sizeof(fname), total_parameter_count-53, STR_TERMINATE);
@@ -1056,7 +1018,6 @@ static int call_nt_transact_create(connection_struct *conn,
        BOOL bad_path = False;
        files_struct *fsp = NULL;
        char *p = NULL;
-       BOOL extended_oplock_granted = False;
        uint32 flags;
        uint32 desired_access;
        uint32 file_attributes;
@@ -1065,7 +1026,6 @@ static int call_nt_transact_create(connection_struct *conn,
        uint32 create_options;
        uint32 sd_len;
        uint16 root_dir_fid;
-       SMB_OFF_T allocation_size = 0;
        int smb_ofun;
        int smb_open_mode;
        int smb_attr;
@@ -1083,7 +1043,7 @@ static int call_nt_transact_create(connection_struct *conn,
                        return do_nt_transact_create_pipe(conn, inbuf, outbuf, length, 
                                        bufsize, ppsetup, ppparams, ppdata);
                else
-                       return ERROR_DOS(ERRDOS,ERRnoaccess);
+                       return ERROR_DOS(ERRDOS,ERRbadaccess);
        }
 
        /*
@@ -1092,7 +1052,7 @@ static int call_nt_transact_create(connection_struct *conn,
 
        if(total_parameter_count < 54) {
                DEBUG(0,("call_nt_transact_create - insufficient parameters (%u)\n", (unsigned int)total_parameter_count));
-               return ERROR_DOS(ERRDOS,ERRnoaccess);
+               return ERROR_DOS(ERRDOS,ERRbadaccess);
        }
 
        flags = IVAL(params,0);
@@ -1105,11 +1065,6 @@ static int call_nt_transact_create(connection_struct *conn,
        root_dir_fid = (uint16)IVAL(params,4);
        smb_attr = (file_attributes & SAMBA_ATTRIBUTES_MASK);
 
-       if (create_options & FILE_OPEN_BY_FILE_ID) {
-               END_PROFILE(SMBntcreateX);
-               return ERROR_NT(NT_STATUS_NOT_SUPPORTED);
-       }
-
        /* 
         * We need to construct the open_and_X ofun value from the
         * NT values, as that's what our code is structured to accept.
@@ -1183,7 +1138,7 @@ static int call_nt_transact_create(connection_struct *conn,
 
        if((smb_open_mode = map_share_mode( fname, create_options, &desired_access,
                                                share_access, file_attributes)) == -1)
-               return ERROR_DOS(ERRDOS,ERRnoaccess);
+               return ERROR_DOS(ERRDOS,ERRbadaccess);
 
        oplock_request = (flags & REQUEST_OPLOCK) ? EXCLUSIVE_OPLOCK : 0;
        oplock_request |= (flags & REQUEST_BATCH_OPLOCK) ? BATCH_OPLOCK : 0;
@@ -1206,12 +1161,6 @@ static int call_nt_transact_create(connection_struct *conn,
 
        if(create_options & FILE_DIRECTORY_FILE) {
 
-               /* Can't open a temp directory. IFS kit test. */
-               if (file_attributes & FILE_ATTRIBUTE_TEMPORARY) {
-                       END_PROFILE(SMBntcreateX);
-                       return ERROR_NT(NT_STATUS_INVALID_PARAMETER);
-               }
-
                oplock_request = 0;
 
                /*
@@ -1285,10 +1234,10 @@ static int call_nt_transact_create(connection_struct *conn,
                 */
     
                if (oplock_request && lp_fake_oplocks(SNUM(conn)))
-                       extended_oplock_granted = True;
+                       smb_action |= EXTENDED_OPLOCK_GRANTED;
   
                if(oplock_request && EXCLUSIVE_OPLOCK_TYPE(fsp->oplock_type))
-                       extended_oplock_granted = True;
+                       smb_action |= EXTENDED_OPLOCK_GRANTED;
        }
 
        /*
@@ -1303,22 +1252,6 @@ static int call_nt_transact_create(connection_struct *conn,
        
        restore_case_semantics(file_attributes);
 
-       /* Save the requested allocation size. */
-       allocation_size = IVAL(params,12);
-#ifdef LARGE_SMB_OFF_T
-       allocation_size |= (((SMB_OFF_T)IVAL(params,16)) << 32);
-#endif
-       if (allocation_size && (allocation_size > file_len)) {
-               fsp->initial_allocation_size = SMB_ROUNDUP(allocation_size,SMB_ROUNDUP_ALLOCATION_SIZE);
-               if (vfs_allocate_file_space(fsp, fsp->initial_allocation_size) == -1) {
-                       close_file(fsp,False);
-                       END_PROFILE(SMBntcreateX);
-                       return ERROR_NT(NT_STATUS_DISK_FULL);
-               }
-       } else {
-               fsp->initial_allocation_size = SMB_ROUNDUP(file_len,SMB_ROUNDUP_ALLOCATION_SIZE);
-       }
-
        /* Realloc the size of parameters and data we will return */
        params = Realloc(*ppparams, 69);
        if(params == NULL)
@@ -1329,7 +1262,7 @@ static int call_nt_transact_create(connection_struct *conn,
        memset((char *)params,'\0',69);
 
        p = params;
-       if (extended_oplock_granted)
+       if (smb_action & EXTENDED_OPLOCK_GRANTED)       
                SCVAL(p,0, BATCH_OPLOCK_RETURN);
        else if (LEVEL_II_OPLOCK_TYPE(fsp->oplock_type))
                SCVAL(p,0, LEVEL_II_OPLOCK_RETURN);
@@ -1339,10 +1272,7 @@ static int call_nt_transact_create(connection_struct *conn,
        p += 2;
        SSVAL(p,0,fsp->fnum);
        p += 2;
-       if ((create_disposition == FILE_SUPERSEDE) && (smb_action == FILE_WAS_OVERWRITTEN))
-               SIVAL(p,0,FILE_WAS_SUPERSEDED);
-       else
-               SIVAL(p,0,smb_action);
+       SIVAL(p,0,smb_action);
        p += 8;
 
        /* Create time. */
@@ -1365,7 +1295,7 @@ static int call_nt_transact_create(connection_struct *conn,
        p += 8;
        SIVAL(p,0,fmode); /* File Attributes. */
        p += 4;
-       SOFF_T(p, 0, get_allocation_size(fsp,&sbuf));
+       SOFF_T(p, 0, get_allocation_size(&sbuf));
        p += 8;
        SOFF_T(p,0,file_len);
 
@@ -1652,7 +1582,7 @@ static int call_nt_transact_set_security_desc(connection_struct *conn,
                (unsigned int)security_info_sent ));
 
        if (total_data_count == 0)
-               return ERROR_DOS(ERRDOS, ERRnoaccess);
+               return ERROR_DOS(ERRDOS, ERRbadaccess);
 
        if (!NT_STATUS_IS_OK(nt_status = set_sd( fsp, data, total_data_count, security_info_sent)))
                return ERROR_NT(nt_status);
index a95793a0505a9cb221d3a9c38f36ffc533ca8307..8c6e8ed805c3641f85e649d3b800ea0cb304cf7a 100644 (file)
@@ -139,31 +139,18 @@ static BOOL open_file(files_struct *fsp,connection_struct *conn,
         * as we always opened files read-write in that release. JRA.
         */
 
-       if ((accmode == O_RDONLY) && ((flags & O_TRUNC) == O_TRUNC)) {
-               DEBUG(10,("open_file: truncate requested on read-only open for file %s\n",fname ));
+       if ((accmode == O_RDONLY) && ((flags & O_TRUNC) == O_TRUNC))
                local_flags = (flags & ~O_ACCMODE)|O_RDWR;
-       }
-
-       if ((desired_access & (FILE_READ_DATA|FILE_WRITE_DATA|FILE_APPEND_DATA|FILE_EXECUTE)) ||
-                       (local_flags & O_CREAT) || ((local_flags & O_TRUNC) == O_TRUNC) ) {
-
-               /*
-                * We can't actually truncate here as the file may be locked.
-                * open_file_shared will take care of the truncate later. JRA.
-                */
 
-               local_flags &= ~O_TRUNC;
+       /*
+        * We can't actually truncate here as the file may be locked.
+        * open_file_shared will take care of the truncate later. JRA.
+        */
 
-#if defined(O_NONBLOCK) && defined(S_ISFIFO)
-               /*
-                * We would block on opening a FIFO with no one else on the
-                * other end. Do what we used to do and add O_NONBLOCK to the
-                * open flags. JRA.
-                */
+       local_flags &= ~O_TRUNC;
 
-               if (VALID_STAT(*psbuf) && S_ISFIFO(psbuf->st_mode))
-                       local_flags |= O_NONBLOCK;
-#endif
+       if ((desired_access & (FILE_READ_DATA|FILE_WRITE_DATA|FILE_APPEND_DATA|FILE_EXECUTE)) ||
+                       (local_flags & O_CREAT)) {
 
                /* actually do the open */
                fsp->fd = fd_open(conn, fname, local_flags, mode);
@@ -692,31 +679,6 @@ static void kernel_flock(files_struct *fsp, int deny_mode)
 }
 
 
-static BOOL open_match_attributes(connection_struct *conn, char *path, mode_t existing_mode, mode_t new_mode)
-{
-       uint32 old_dos_mode, new_dos_mode;
-       SMB_STRUCT_STAT sbuf;
-
-       ZERO_STRUCT(sbuf);
-
-       sbuf.st_mode = existing_mode;
-       old_dos_mode = dos_mode(conn, path, &sbuf);
-
-       sbuf.st_mode = new_mode;
-       new_dos_mode = dos_mode(conn, path, &sbuf);
-
-       /* If we're mapping SYSTEM and HIDDEN ensure they match. */
-       if (lp_map_system(SNUM(conn))) {
-               if ((old_dos_mode & FILE_ATTRIBUTE_SYSTEM) != (new_dos_mode & FILE_ATTRIBUTE_SYSTEM))
-                       return False;
-       }
-       if (lp_map_hidden(SNUM(conn))) {
-               if ((old_dos_mode & FILE_ATTRIBUTE_HIDDEN) != (new_dos_mode & FILE_ATTRIBUTE_HIDDEN))
-                       return False;
-       }
-       return True;
-}
-
 /****************************************************************************
  Open a file with a share mode. On output from this open we are guarenteeing
  that 
@@ -811,17 +773,6 @@ files_struct *open_file_shared1(connection_struct *conn,char *fname, SMB_STRUCT_
        if (CAN_WRITE(conn) && (GET_FILE_OPEN_DISPOSITION(ofun) == FILE_EXISTS_TRUNCATE))
                flags2 |= O_TRUNC;
 
-       /* We only care about matching attributes on file exists and truncate. */
-       if (file_existed && (GET_FILE_OPEN_DISPOSITION(ofun) == FILE_EXISTS_TRUNCATE)) {
-               if (!open_match_attributes(conn, fname, psbuf->st_mode, mode)) {
-                       DEBUG(5,("open_file_shared: attributes missmatch for file %s (0%o, 0%o)\n",
-                                               fname, psbuf->st_mode, mode ));
-                       file_free(fsp);
-                       errno = EACCES;
-                       return NULL;
-               }
-       }
-
        if (GET_FILE_OPEN_DISPOSITION(ofun) == FILE_EXISTS_FAIL)
                flags2 |= O_EXCL;
 
index f2956237dd202bd100e71975378427f491fa09ee..cfac7cf695f1e8ae6d56071277ee5eab3a7aba34 100644 (file)
@@ -69,10 +69,6 @@ void invalidate_vuid(uint16 vuid)
 
        DLIST_REMOVE(validated_users, vuser);
 
-       /* clear the vuid from the 'cache' on each connection, and
-          from the vuid 'owner' of connections */
-       conn_clear_vuid_cache(vuid);
-
        SAFE_FREE(vuser->groups);
        delete_nt_token(&vuser->nt_user_token);
        SAFE_FREE(vuser);
@@ -93,6 +89,95 @@ void invalidate_all_vuids(void)
        }
 }
 
+/****************************************************************************
+ Create the SID list for this user.
+****************************************************************************/
+
+NT_USER_TOKEN *create_nt_token(uid_t uid, gid_t gid, int ngroups, gid_t *groups, BOOL is_guest, NT_USER_TOKEN *sup_tok)
+{
+       extern DOM_SID global_sid_World;
+       extern DOM_SID global_sid_Network;
+       extern DOM_SID global_sid_Builtin_Guests;
+       extern DOM_SID global_sid_Authenticated_Users;
+       NT_USER_TOKEN *token;
+       DOM_SID *psids;
+       int i, psid_ndx = 0;
+       size_t num_sids = 0;
+       fstring sid_str;
+
+       if ((token = (NT_USER_TOKEN *)malloc( sizeof(NT_USER_TOKEN) ) ) == NULL)
+               return NULL;
+
+       ZERO_STRUCTP(token);
+
+       /* We always have uid/gid plus World and Network and Authenticated Users or Guest SIDs. */
+       num_sids = 5 + ngroups;
+
+       if (sup_tok && sup_tok->num_sids)
+               num_sids += sup_tok->num_sids;
+
+       if ((token->user_sids = (DOM_SID *)malloc( num_sids*sizeof(DOM_SID))) == NULL) {
+               SAFE_FREE(token);
+               return NULL;
+       }
+
+       psids = token->user_sids;
+
+       /*
+        * Note - user SID *MUST* be first in token !
+        * se_access_check depends on this.
+        */
+
+       uid_to_sid( &psids[PRIMARY_USER_SID_INDEX], uid);
+       psid_ndx++;
+
+       /*
+        * Primary group SID is second in token. Convention.
+        */
+
+       gid_to_sid( &psids[PRIMARY_GROUP_SID_INDEX], gid);
+       psid_ndx++;
+
+       /* Now add the group SIDs. */
+
+       for (i = 0; i < ngroups; i++) {
+               if (groups[i] != gid) {
+                       gid_to_sid( &psids[psid_ndx++], groups[i]);
+               }
+       }
+
+       if (sup_tok) {
+               /* Now add the additional SIDs from the supplimentary token. */
+               for (i = 0; i < sup_tok->num_sids; i++)
+                       sid_copy( &psids[psid_ndx++], &sup_tok->user_sids[i] );
+       }
+
+       /*
+        * Finally add the "standard" SIDs.
+        * The only difference between guest and "anonymous" (which we
+        * don't really support) is the addition of Authenticated_Users.
+        */
+
+       sid_copy( &psids[psid_ndx++], &global_sid_World);
+       sid_copy( &psids[psid_ndx++], &global_sid_Network);
+
+       if (is_guest)
+               sid_copy( &psids[psid_ndx++], &global_sid_Builtin_Guests);
+       else
+               sid_copy( &psids[psid_ndx++], &global_sid_Authenticated_Users);
+
+       token->num_sids = psid_ndx;
+
+       /* Dump list of sids in token */
+
+       for (i = 0; i < token->num_sids; i++) {
+               DEBUG(5, ("user token sid %s\n", 
+                         sid_to_string(sid_str, &token->user_sids[i])));
+       }
+
+       return token;
+}
+
 /****************************************************************************
 register a uid/name pair as being valid and that a valid password
 has been given. vuid is biased by an offset. This allows us to
@@ -102,6 +187,8 @@ tell random client vuid's (normally zero) from valid vuids.
 int register_vuid(auth_serversupplied_info *server_info, const char *smb_name)
 {
        user_struct *vuser = NULL;
+       uid_t uid;
+       gid_t gid;
 
        /* Ensure no vuid gets registered in share level security. */
        if(lp_security() == SEC_SHARE)
@@ -118,6 +205,15 @@ int register_vuid(auth_serversupplied_info *server_info, const char *smb_name)
 
        ZERO_STRUCTP(vuser);
 
+       if (!IS_SAM_UNIX_USER(server_info->sam_account)) {
+               DEBUG(0,("Attempted session setup with invalid user.  No uid/gid in SAM_ACCOUNT (flags:%x)\n", pdb_get_init_flag(server_info->sam_account)));
+               free(vuser);
+               return UID_FIELD_INVALID;
+       }
+
+       uid = pdb_get_uid(server_info->sam_account);
+       gid = pdb_get_gid(server_info->sam_account);
+
        /* Allocate a free vuid. Yes this is a linear search... :-) */
        while( get_valid_user_struct(next_vuid) != NULL ) {
                next_vuid++;
@@ -129,38 +225,18 @@ int register_vuid(auth_serversupplied_info *server_info, const char *smb_name)
        DEBUG(10,("register_vuid: allocated vuid = %u\n", (unsigned int)next_vuid ));
 
        vuser->vuid = next_vuid;
-
-       /* the next functions should be done by a SID mapping system (SMS) as
-        * the new real sam db won't have reference to unix uids or gids
-        */
-       if (!IS_SAM_UNIX_USER(server_info->sam_account)) {
-               DEBUG(0,("Attempted session setup with invalid user.  No uid/gid in SAM_ACCOUNT (flags:%x)\n", pdb_get_init_flag(server_info->sam_account)));
-               free(vuser);
-               return UID_FIELD_INVALID;
-       }
-       
-       vuser->uid = pdb_get_uid(server_info->sam_account);
-       vuser->gid = pdb_get_gid(server_info->sam_account);
-       
-       vuser->n_groups = server_info->n_groups;
-       if (vuser->n_groups) {
-               if (!(vuser->groups = memdup(server_info->groups, sizeof(gid_t) * vuser->n_groups))) {
-                       DEBUG(0,("register_vuid: failed to memdup vuser->groups\n"));
-                       free(vuser);
-                       return UID_FIELD_INVALID;
-               }
-       }
-
+       vuser->uid = uid;
+       vuser->gid = gid;
        vuser->guest = server_info->guest;
-       fstrcpy(vuser->user.unix_name, pdb_get_username(server_info->sam_account)); 
-       fstrcpy(vuser->user.smb_name, smb_name); 
+       fstrcpy(vuser->user.unix_name, pdb_get_username(server_info->sam_account));
+       fstrcpy(vuser->user.smb_name, smb_name);
        fstrcpy(vuser->user.domain, pdb_get_domain(server_info->sam_account));
        fstrcpy(vuser->user.full_name, pdb_get_fullname(server_info->sam_account));
 
        {
                /* Keep the homedir handy */
                const char *homedir = pdb_get_homedir(server_info->sam_account);
-               const char *unix_homedir = pdb_get_unix_homedir(server_info->sam_account); /* should be optained by SMS */
+               const char *unix_homedir = pdb_get_unix_homedir(server_info->sam_account);
                const char *logon_script = pdb_get_logon_script(server_info->sam_account);
                if (homedir) {
                        vuser->homedir = smb_xstrdup(homedir);
@@ -184,13 +260,19 @@ int register_vuid(auth_serversupplied_info *server_info, const char *smb_name)
 
        DEBUG(3, ("User name: %s\tReal name: %s\n",vuser->user.unix_name,vuser->user.full_name));       
 
-       if (server_info->ptok) {
-               vuser->nt_user_token = dup_nt_token(server_info->ptok);
-       } else {
-               DEBUG(1, ("server_info does not contain a user_token - cannot continue\n"));
-               free(vuser);
-               return UID_FIELD_INVALID;
-       }
+       vuser->n_groups = 0;
+       vuser->groups  = NULL;
+
+       /* Find all the groups this uid is in and store them. 
+               Used by change_to_user() */
+       initialise_groups(vuser->user.unix_name, vuser->uid, vuser->gid);
+       get_current_groups(vuser->gid, &vuser->n_groups, &vuser->groups);
+
+       if (server_info->ptok)
+               add_supplementary_nt_login_groups(&vuser->n_groups, &vuser->groups, &server_info->ptok);
+
+       /* Create an NT_USER_TOKEN struct for this user. */
+       vuser->nt_user_token = create_nt_token(vuser->uid, vuser->gid, vuser->n_groups, vuser->groups, vuser->guest, server_info->ptok);
 
        DEBUG(3,("UNIX uid %d is UNIX user %s, and will be vuid %u\n",(int)vuser->uid,vuser->user.unix_name, vuser->vuid));
 
@@ -224,11 +306,9 @@ add a name to the session users list
 void add_session_user(const char *user)
 {
   fstring suser;
-  struct passwd *passwd;
-
-  if (!(passwd = Get_Pwnam(user))) return;
+  StrnCpy(suser,user,sizeof(suser)-1);
 
-  StrnCpy(suser,passwd->pw_name,sizeof(suser)-1);
+  if (!Get_Pwnam_Modify(suser)) return;
 
   if (suser && *suser && !in_list(suser,session_users,False))
     {
@@ -371,7 +451,7 @@ static char *validate_group(char *group, DATA_BLOB password,int snum)
  Note this is *NOT* used when logging on using sessionsetup_and_X.
 ****************************************************************************/
 
-BOOL authorise_login(int snum, fstring user, DATA_BLOB password, 
+BOOL authorise_login(int snum,char *user, DATA_BLOB password, 
                     BOOL *guest)
 {
        BOOL ok = False;
index e6ae1c7d7997dab5ca72a78ba8d64600c9fdb4b5..043e33e83675ca9267345bbffecbb078365b611e 100644 (file)
@@ -1881,8 +1881,6 @@ static int nt_ace_comp( SEC_ACE *a1, SEC_ACE *a2)
 
 size_t get_nt_acl(files_struct *fsp, SEC_DESC **ppdesc)
 {
-       extern DOM_SID global_sid_Builtin_Administrators;
-       extern DOM_SID global_sid_Builtin_Users;
        connection_struct *conn = fsp->conn;
        SMB_STRUCT_STAT sbuf;
        SEC_ACE *nt_ace_list = NULL;
@@ -1897,7 +1895,6 @@ size_t get_nt_acl(files_struct *fsp, SEC_DESC **ppdesc)
        SMB_ACL_T dir_acl = NULL;
        canon_ace *file_ace = NULL;
        canon_ace *dir_ace = NULL;
-       size_t num_profile_acls = 0;
  
        *ppdesc = NULL;
 
@@ -1942,14 +1939,7 @@ size_t get_nt_acl(files_struct *fsp, SEC_DESC **ppdesc)
         * Get the owner, group and world SIDs.
         */
 
-       if (lp_profile_acls(SNUM(fsp->conn))) {
-               /* For WXP SP1 the owner must be administrators. */
-               sid_copy(&owner_sid, &global_sid_Builtin_Administrators);
-               sid_copy(&group_sid, &global_sid_Builtin_Users);
-               num_profile_acls = 2;
-       } else {
-               create_file_sids(&sbuf, &owner_sid, &group_sid);
-       }
+       create_file_sids(&sbuf, &owner_sid, &group_sid);
 
        /* Create the canon_ace lists. */
        file_ace = canonicalise_acl( fsp, posix_acl, &sbuf,  &owner_sid, &group_sid);
@@ -1973,7 +1963,7 @@ size_t get_nt_acl(files_struct *fsp, SEC_DESC **ppdesc)
        }
 
        /* Allocate the ace list. */
-       if ((nt_ace_list = (SEC_ACE *)malloc((num_acls + num_profile_acls + num_dir_acls)* sizeof(SEC_ACE))) == NULL) {
+       if ((nt_ace_list = (SEC_ACE *)malloc((num_acls + num_dir_acls)* sizeof(SEC_ACE))) == NULL) {
                DEBUG(0,("get_nt_acl: Unable to malloc space for nt_ace_list.\n"));
                goto done;
        }
@@ -1996,13 +1986,6 @@ size_t get_nt_acl(files_struct *fsp, SEC_DESC **ppdesc)
                        init_sec_ace(&nt_ace_list[num_aces++], &ace->trustee, nt_acl_type, acc, 0);
                }
 
-               /* The User must have access to a profile share - even if we can't map the SID. */
-               if (lp_profile_acls(SNUM(fsp->conn))) {
-                       SEC_ACCESS acc;
-                       init_sec_access(&acc,FILE_GENERIC_ALL);
-                       init_sec_ace(&nt_ace_list[num_aces++], &global_sid_Builtin_Users, SEC_ACE_TYPE_ACCESS_ALLOWED, acc, 0);
-               }
-
                ace = dir_ace;
 
                for (i = 0; i < num_dir_acls; i++, ace = ace->next) {
@@ -2011,15 +1994,6 @@ size_t get_nt_acl(files_struct *fsp, SEC_DESC **ppdesc)
                                        SEC_ACE_FLAG_OBJECT_INHERIT|SEC_ACE_FLAG_CONTAINER_INHERIT|SEC_ACE_FLAG_INHERIT_ONLY);
                }
 
-               /* The User must have access to a profile share - even if we can't map the SID. */
-               if (lp_profile_acls(SNUM(fsp->conn))) {
-                       SEC_ACCESS acc;
-                       init_sec_access(&acc,FILE_GENERIC_ALL);
-                       init_sec_ace(&nt_ace_list[num_aces++], &global_sid_Builtin_Users, SEC_ACE_TYPE_ACCESS_ALLOWED, acc,
-                                       SEC_ACE_FLAG_OBJECT_INHERIT|SEC_ACE_FLAG_CONTAINER_INHERIT|
-                                       SEC_ACE_FLAG_INHERIT_ONLY);
-               }
-
                /*
                 * Sort to force deny entries to the front.
                 */
index 0f7cfd0e9cb0e78ba0a19d2f7b228f8c9e1ec09e..55234ec896e422b7b14899401bea15fddce9facc 100644 (file)
@@ -42,8 +42,8 @@ extern int last_message;
 extern int global_oplock_break;
 extern userdom_struct current_user_info;
 extern int smb_read_error;
-SIG_ATOMIC_T reload_after_sighup = 0;
-SIG_ATOMIC_T got_sig_term = 0;
+SIG_ATOMIC_T reload_after_sighup;
+SIG_ATOMIC_T got_sig_term;
 extern BOOL global_machine_password_needs_changing;
 extern fstring global_myworkgroup;
 extern pstring global_myname;
@@ -609,9 +609,8 @@ const static struct smb_message_struct
 };
 
 /*******************************************************************
- Dump a packet to a file.
-********************************************************************/
-
+dump a prs to a file
+ ********************************************************************/
 static void smb_dump(const char *name, int type, char *data, ssize_t len)
 {
        int fd, i;
@@ -636,171 +635,178 @@ static void smb_dump(const char *name, int type, char *data, ssize_t len)
 
 
 /****************************************************************************
- Do a switch on the message type, and return the response size
+do a switch on the message type, and return the response size
 ****************************************************************************/
-
 static int switch_message(int type,char *inbuf,char *outbuf,int size,int bufsize)
 {
-       static pid_t pid= (pid_t)-1;
-       int outsize = 0;
-       extern uint16 global_smbpid;
+  static pid_t pid= (pid_t)-1;
+  int outsize = 0;
+  extern uint16 global_smbpid;
 
-       type &= 0xff;
+  type &= 0xff;
 
-       if (pid == (pid_t)-1)
-               pid = sys_getpid();
+  if (pid == (pid_t)-1)
+    pid = sys_getpid();
 
-       errno = 0;
-       last_message = type;
+  errno = 0;
+  last_message = type;
 
-       /* Make sure this is an SMB packet. smb_size contains NetBIOS header so subtract 4 from it. */
-       if ((strncmp(smb_base(inbuf),"\377SMB",4) != 0) || (size < (smb_size - 4))) {
-               DEBUG(2,("Non-SMB packet of length %d. Terminating server\n",smb_len(inbuf)));
-               exit_server("Non-SMB packet");
-               return(-1);
-       }
+  /* make sure this is an SMB packet */
+  if (strncmp(smb_base(inbuf),"\377SMB",4) != 0)
+  {
+    DEBUG(2,("Non-SMB packet of length %d\n",smb_len(inbuf)));
+    return(-1);
+  }
 
-       /* yuck! this is an interim measure before we get rid of our
-               current inbuf/outbuf system */
-       global_smbpid = SVAL(inbuf,smb_pid);
-
-       if (smb_messages[type].fn == NULL) {
-               DEBUG(0,("Unknown message type %d!\n",type));
-               smb_dump("Unknown", 1, inbuf, size);
-               outsize = reply_unknown(inbuf,outbuf);
-       } else {
-               int flags = smb_messages[type].flags;
-               static uint16 last_session_tag = UID_FIELD_INVALID;
-               /* In share mode security we must ignore the vuid. */
-               uint16 session_tag = (lp_security() == SEC_SHARE) ? UID_FIELD_INVALID : SVAL(inbuf,smb_uid);
-               connection_struct *conn = conn_find(SVAL(inbuf,smb_tid));
-
-               DEBUG(3,("switch message %s (pid %d)\n",smb_fn_name(type),(int)pid));
-
-               smb_dump(smb_fn_name(type), 1, inbuf, size);
-               if(global_oplock_break) {
-                       if(flags & QUEUE_IN_OPLOCK) {
-                               /* 
-                                * Queue this message as we are the process of an oplock break.
-                                */
-
-                               DEBUG( 2, ( "switch_message: queueing message due to being in " ) );
-                               DEBUGADD( 2, ( "oplock break state.\n" ) );
-
-                               push_oplock_pending_smb_message( inbuf, size );
-                               return -1;
-                       }
-               }
+  /* yuck! this is an interim measure before we get rid of our
+     current inbuf/outbuf system */
+  global_smbpid = SVAL(inbuf,smb_pid);
 
-               /* Ensure this value is replaced in the incoming packet. */
-               SSVAL(inbuf,smb_uid,session_tag);
+  if (smb_messages[type].fn == NULL)
+  {
+    DEBUG(0,("Unknown message type %d!\n",type));
+    smb_dump("Unknown", 1, inbuf, size);
+    outsize = reply_unknown(inbuf,outbuf);
+  }
+  else
+  {
+    int flags = smb_messages[type].flags;
+    static uint16 last_session_tag = UID_FIELD_INVALID;
+    /* In share mode security we must ignore the vuid. */
+    uint16 session_tag = (lp_security() == SEC_SHARE) ? UID_FIELD_INVALID : SVAL(inbuf,smb_uid);
+    connection_struct *conn = conn_find(SVAL(inbuf,smb_tid));
 
-               /*
-                * Ensure the correct username is in current_user_info.
-                * This is a really ugly bugfix for problems with
-                * multiple session_setup_and_X's being done and
-                * allowing %U and %G substitutions to work correctly.
-                * There is a reason this code is done here, don't
-                * move it unless you know what you're doing... :-).
-                * JRA.
-                */
+    DEBUG(3,("switch message %s (pid %d)\n",smb_fn_name(type),(int)pid));
 
-               if (session_tag != last_session_tag) {
-                       user_struct *vuser = NULL;
+    smb_dump(smb_fn_name(type), 1, inbuf, size);
+    if(global_oplock_break)
+    {
+      if(flags & QUEUE_IN_OPLOCK)
+      {
+        /* 
+         * Queue this message as we are the process of an oplock break.
+         */
+
+        DEBUG( 2, ( "switch_message: queueing message due to being in " ) );
+        DEBUGADD( 2, ( "oplock break state.\n" ) );
+
+        push_oplock_pending_smb_message( inbuf, size );
+        return -1;
+      }          
+    }
 
-                       last_session_tag = session_tag;
-                       if(session_tag != UID_FIELD_INVALID)
-                               vuser = get_valid_user_struct(session_tag);           
-                       if(vuser != NULL)
-                               current_user_info = vuser->user;
-               }
+    /* Ensure this value is replaced in the incoming packet. */
+    SSVAL(inbuf,smb_uid,session_tag);
 
-               /* does this protocol need to be run as root? */
-               if (!(flags & AS_USER))
-                       change_to_root_user();
+    /*
+     * Ensure the correct username is in current_user_info.
+     * This is a really ugly bugfix for problems with
+     * multiple session_setup_and_X's being done and
+     * allowing %U and %G substitutions to work correctly.
+     * There is a reason this code is done here, don't
+     * move it unless you know what you're doing... :-).
+     * JRA.
+     */
 
-               /* does this protocol need a valid tree connection? */
-               if ((flags & AS_USER) && !conn)
-                       return ERROR_DOS(ERRSRV, ERRinvnid);
+    if (session_tag != last_session_tag) {
+      user_struct *vuser = NULL;
 
+      last_session_tag = session_tag;
+      if(session_tag != UID_FIELD_INVALID)
+        vuser = get_valid_user_struct(session_tag);           
+      if(vuser != NULL)
+        current_user_info = vuser->user;
+    }
 
-               /* does this protocol need to be run as the connected user? */
-               if ((flags & AS_USER) && !change_to_user(conn,session_tag)) {
-                       if (flags & AS_GUEST) 
-                               flags &= ~AS_USER;
-                       else
-                               return(ERROR_DOS(ERRSRV,ERRaccess));
-               }
+    /* does this protocol need to be run as root? */
+    if (!(flags & AS_USER))
+      change_to_root_user();
 
-               /* this code is to work around a bug is MS client 3 without
-                       introducing a security hole - it needs to be able to do
-                       print queue checks as guest if it isn't logged in properly */
-               if (flags & AS_USER)
-                       flags &= ~AS_GUEST;
+    /* does this protocol need a valid tree connection? */
+    if ((flags & AS_USER) && !conn) {
+           return ERROR_DOS(ERRSRV, ERRinvnid);
+    }
 
-               /* does it need write permission? */
-               if ((flags & NEED_WRITE) && !CAN_WRITE(conn))
-                       return(ERROR_DOS(ERRSRV,ERRaccess));
 
-               /* ipc services are limited */
-               if (IS_IPC(conn) && (flags & AS_USER) && !(flags & CAN_IPC))
-                       return(ERROR_DOS(ERRSRV,ERRaccess));        
+    /* does this protocol need to be run as the connected user? */
+    if ((flags & AS_USER) && !change_to_user(conn,session_tag)) {
+      if (flags & AS_GUEST) 
+        flags &= ~AS_USER;
+      else
+        return(ERROR_DOS(ERRSRV,ERRaccess));
+    }
 
-               /* load service specific parameters */
-               if (conn && !set_current_service(conn,(flags & AS_USER)?True:False))
-                       return(ERROR_DOS(ERRSRV,ERRaccess));
+    /* this code is to work around a bug is MS client 3 without
+       introducing a security hole - it needs to be able to do
+       print queue checks as guest if it isn't logged in properly */
+    if (flags & AS_USER)
+      flags &= ~AS_GUEST;
 
-               /* does this protocol need to be run as guest? */
-               if ((flags & AS_GUEST) && (!change_to_guest() || 
-                               !check_access(smbd_server_fd(), lp_hostsallow(-1), lp_hostsdeny(-1))))
-                       return(ERROR_DOS(ERRSRV,ERRaccess));
+    /* does it need write permission? */
+    if ((flags & NEED_WRITE) && !CAN_WRITE(conn))
+      return(ERROR_DOS(ERRSRV,ERRaccess));
 
-               last_inbuf = inbuf;
+    /* ipc services are limited */
+    if (IS_IPC(conn) && (flags & AS_USER) && !(flags & CAN_IPC)) {
+      return(ERROR_DOS(ERRSRV,ERRaccess));         
+    }
 
-               outsize = smb_messages[type].fn(conn, inbuf,outbuf,size,bufsize);
-       }
+    /* load service specific parameters */
+    if (conn && !set_current_service(conn,(flags & AS_USER)?True:False)) {
+      return(ERROR_DOS(ERRSRV,ERRaccess));
+    }
 
-       smb_dump(smb_fn_name(type), 0, outbuf, outsize);
+    /* does this protocol need to be run as guest? */
+    if ((flags & AS_GUEST) && 
+                (!change_to_guest() || 
+               !check_access(smbd_server_fd(), lp_hostsallow(-1), lp_hostsdeny(-1)))) {
+      return(ERROR_DOS(ERRSRV,ERRaccess));
+    }
+
+    last_inbuf = inbuf;
 
-       return(outsize);
+    outsize = smb_messages[type].fn(conn, inbuf,outbuf,size,bufsize);
+  }
+
+  smb_dump(smb_fn_name(type), 0, outbuf, outsize);
+
+  return(outsize);
 }
 
 
 /****************************************************************************
- Construct a reply to the incoming packet.
+  construct a reply to the incoming packet
 ****************************************************************************/
-
 static int construct_reply(char *inbuf,char *outbuf,int size,int bufsize)
 {
-       int type = CVAL(inbuf,smb_com);
-       int outsize = 0;
-       int msg_type = CVAL(inbuf,0);
+  int type = CVAL(inbuf,smb_com);
+  int outsize = 0;
+  int msg_type = CVAL(inbuf,0);
 
-       GetTimeOfDay(&smb_last_time);
+  GetTimeOfDay(&smb_last_time);
 
-       chain_size = 0;
-       file_chain_reset();
-       reset_chain_p();
+  chain_size = 0;
+  file_chain_reset();
+  reset_chain_p();
 
-       if (msg_type != 0)
-               return(reply_special(inbuf,outbuf));  
+  if (msg_type != 0)
+    return(reply_special(inbuf,outbuf));  
 
-       construct_reply_common(inbuf, outbuf);
+  construct_reply_common(inbuf, outbuf);
 
-       outsize = switch_message(type,inbuf,outbuf,size,bufsize);
+  outsize = switch_message(type,inbuf,outbuf,size,bufsize);
 
-       outsize += chain_size;
+  outsize += chain_size;
 
-       if(outsize > 4)
-               smb_setlen(outbuf,outsize - 4);
-       return(outsize);
+  if(outsize > 4)
+    smb_setlen(outbuf,outsize - 4);
+  return(outsize);
 }
 
 /****************************************************************************
- Keep track of the number of running smbd's. This functionality is used to
- 'hard' limit Samba overhead on resource constrained systems. 
 Keep track of the number of running smbd's. This functionality is used to
 'hard' limit Samba overhead on resource constrained systems. 
 ****************************************************************************/
-
 static BOOL smbd_process_limit(void)
 {
        int32  total_smbds;
@@ -1026,15 +1032,16 @@ static int setup_select_timeout(void)
        int select_timeout;
        int t;
 
-       select_timeout = blocking_locks_timeout(SMBD_SELECT_TIMEOUT);
-       select_timeout *= 1000;
+       /*
+        * Increase the select timeout back to SMBD_SELECT_TIMEOUT if we
+        * have removed any blocking locks. JRA.
+        */
 
-       t = change_notify_timeout();
-       if (t != -1)
-               select_timeout = MIN(select_timeout, t*1000);
+       select_timeout = blocking_locks_pending() ? SMBD_SELECT_TIMEOUT_WITH_PENDING_LOCKS*1000 :
+               SMBD_SELECT_TIMEOUT*1000;
 
-       if (print_notify_messages_pending())
-               select_timeout = MIN(select_timeout, 1000);
+       t = change_notify_timeout();
+       if (t != -1) select_timeout = MIN(select_timeout, t*1000);
 
        return select_timeout;
 }
@@ -1154,16 +1161,9 @@ static BOOL timeout_processing(int deadtime, int *select_timeout, time_t *last_t
      * First, open the machine password file with an exclusive lock.
      */
 
-    if (secrets_lock_trust_account_password(global_myworkgroup, True) == False) {
-      DEBUG(0,("process: unable to lock the machine account password for \
-machine %s in domain %s.\n", global_myname, global_myworkgroup ));
-      return True;
-    }
-
     if(!secrets_fetch_trust_account_password(global_myworkgroup, trust_passwd_hash, &lct)) {
       DEBUG(0,("process: unable to read the machine account password for \
 machine %s in domain %s.\n", global_myname, global_myworkgroup ));
-      secrets_lock_trust_account_password(global_myworkgroup, False);
       return True;
     }
 
@@ -1173,7 +1173,6 @@ machine %s in domain %s.\n", global_myname, global_myworkgroup ));
 
     if(t < lct + lp_machine_password_timeout()) {
       global_machine_password_needs_changing = False;
-      secrets_lock_trust_account_password(global_myworkgroup, False);
       return True;
     }
 
@@ -1181,7 +1180,6 @@ machine %s in domain %s.\n", global_myname, global_myworkgroup ));
 
     change_trust_account_password( global_myworkgroup, remote_machine_list);
     global_machine_password_needs_changing = False;
-    secrets_lock_trust_account_password(global_myworkgroup, False);
   }
 
   /*
@@ -1203,10 +1201,6 @@ machine %s in domain %s.\n", global_myname, global_myworkgroup ));
   force_check_log_size();
   check_log_size();
 
-  /* Send any queued printer notify message to interested smbd's. */
-
-  print_notify_send_messages();
-
   /*
    * Modify the select timeout depending upon
    * what we have remaining in our queues.
index a881e135c08c1cecb4ae19f73a66e982984bed72..c6a082d7d892a7616aed49159f2bed10eda337b6 100644 (file)
@@ -23,6 +23,7 @@
    makes to handle specific protocols
 */
 
+
 #include "includes.h"
 
 /* look in server.c for some explanation of these variables */
@@ -39,8 +40,9 @@ unsigned int smb_echo_count = 0;
 
 extern BOOL global_encrypted_passwords_negotiated;
 
+
 /****************************************************************************
- Reply to an special message.
+  reply to an special message 
 ****************************************************************************/
 
 int reply_special(char *inbuf,char *outbuf)
@@ -111,7 +113,7 @@ int reply_special(char *inbuf,char *outbuf)
                reload_services(True);
                reopen_logs();
 
-               claim_connection(NULL,"",0,True,FLAG_MSG_GENERAL|FLAG_MSG_SMBD);
+               claim_connection(NULL,"",MAXSTATUS,True);
 
                already_got_session = True;
                break;
@@ -139,6 +141,7 @@ int reply_special(char *inbuf,char *outbuf)
        return(outsize);
 }
 
+
 /****************************************************************************
  Reply to a tcon.
 ****************************************************************************/
@@ -304,10 +307,10 @@ int reply_tcon_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt
        return chain_reply(inbuf,outbuf,length,bufsize);
 }
 
+
 /****************************************************************************
- Reply to an unknown type.
+  reply to an unknown type
 ****************************************************************************/
-
 int reply_unknown(char *inbuf,char *outbuf)
 {
        int type;
@@ -319,10 +322,10 @@ int reply_unknown(char *inbuf,char *outbuf)
        return(ERROR_DOS(ERRSRV,ERRunknownsmb));
 }
 
+
 /****************************************************************************
- Reply to an ioctl.
+  reply to an ioctl
 ****************************************************************************/
-
 int reply_ioctl(connection_struct *conn,
                char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
 {
@@ -336,7 +339,8 @@ int reply_ioctl(connection_struct *conn,
 
        DEBUG(4, ("Received IOCTL (code 0x%x)\n", ioctl_code));
 
-       switch (ioctl_code) {
+       switch (ioctl_code)
+       {
            case IOCTL_QUERY_JOB_INFO:
                replysize = 32;
                break;
@@ -351,15 +355,16 @@ int reply_ioctl(connection_struct *conn,
        SSVAL(outbuf,smb_vwv6,52);        /* Offset to data */
        p = smb_buf(outbuf) + 1;          /* Allow for alignment */
 
-       switch (ioctl_code) {
-               case IOCTL_QUERY_JOB_INFO:                  
-               {
-                       uint16 rap_jobid = pjobid_to_rap(SNUM(fsp->conn), fsp->print_jobid);
-                       SSVAL(p,0,rap_jobid);             /* Job number */
-                       srvstr_push(outbuf, p+2, global_myname, 15, STR_TERMINATE|STR_ASCII);
-                       srvstr_push(outbuf, p+18, lp_servicename(SNUM(conn)), 13, STR_TERMINATE|STR_ASCII);
-                       break;
-               }
+       switch (ioctl_code)
+       {
+           case IOCTL_QUERY_JOB_INFO:              
+          {
+               uint16 rap_jobid = pjobid_to_rap(SNUM(fsp->conn), fsp->print_jobid);
+               SSVAL(p,0,rap_jobid);             /* Job number */
+               srvstr_push(outbuf, p+2, global_myname, 15, STR_TERMINATE|STR_ASCII);
+               srvstr_push(outbuf, p+18, lp_servicename(SNUM(conn)), 13, STR_TERMINATE|STR_ASCII);
+               break;
+          }
        }
 
        END_PROFILE(SMBioctl);
@@ -367,56 +372,56 @@ int reply_ioctl(connection_struct *conn,
 }
 
 /****************************************************************************
- Reply to a chkpth.
+  reply to a chkpth
 ****************************************************************************/
-
 int reply_chkpth(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
 {
-       int outsize = 0;
-       int mode;
-       pstring name;
-       BOOL ok = False;
-       BOOL bad_path = False;
-       SMB_STRUCT_STAT sbuf;
-       START_PROFILE(SMBchkpth);
+  int outsize = 0;
+  int mode;
+  pstring name;
+  BOOL ok = False;
+  BOOL bad_path = False;
+  SMB_STRUCT_STAT sbuf;
+  START_PROFILE(SMBchkpth);
 
-       srvstr_pull_buf(inbuf, name, smb_buf(inbuf) + 1, sizeof(name), STR_TERMINATE);
+  srvstr_pull_buf(inbuf, name, smb_buf(inbuf) + 1, sizeof(name), STR_TERMINATE);
 
-       RESOLVE_DFSPATH(name, conn, inbuf, outbuf);
+  RESOLVE_DFSPATH(name, conn, inbuf, outbuf);
 
-       unix_convert(name,conn,0,&bad_path,&sbuf);
+  unix_convert(name,conn,0,&bad_path,&sbuf);
 
-       mode = SVAL(inbuf,smb_vwv0);
+  mode = SVAL(inbuf,smb_vwv0);
 
-       if (check_name(name,conn)) {
-               if (VALID_STAT(sbuf) || vfs_stat(conn,name,&sbuf) == 0)
-                       ok = S_ISDIR(sbuf.st_mode);
-       }
+  if (check_name(name,conn)) {
+    if (VALID_STAT(sbuf) || vfs_stat(conn,name,&sbuf) == 0)
+      ok = S_ISDIR(sbuf.st_mode);
+  }
 
-       if (!ok) {
-               /* We special case this - as when a Windows machine
-                       is parsing a path is steps through the components
-                       one at a time - if a component fails it expects
-                       ERRbadpath, not ERRbadfile.
-               */
-               if(errno == ENOENT)
-                       return ERROR_NT(NT_STATUS_OBJECT_PATH_NOT_FOUND);
+  if (!ok) {
+    /* We special case this - as when a Windows machine
+       is parsing a path is steps through the components
+       one at a time - if a component fails it expects
+       ERRbadpath, not ERRbadfile.
+     */
+    if(errno == ENOENT) {
+           return ERROR_NT(NT_STATUS_OBJECT_PATH_NOT_FOUND);
+    }
 
-               return(UNIXERROR(ERRDOS,ERRbadpath));
-       }
+    return(UNIXERROR(ERRDOS,ERRbadpath));
+  }
 
-       outsize = set_message(outbuf,0,0,True);
+  outsize = set_message(outbuf,0,0,True);
 
-       DEBUG(3,("chkpth %s mode=%d\n", name, mode));
+  DEBUG(3,("chkpth %s mode=%d\n", name, mode));
 
-       END_PROFILE(SMBchkpth);
-       return(outsize);
+  END_PROFILE(SMBchkpth);
+  return(outsize);
 }
 
+
 /****************************************************************************
- Reply to a getatr.
+  reply to a getatr
 ****************************************************************************/
-
 int reply_getatr(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
 {
   pstring fname;
@@ -489,10 +494,10 @@ int reply_getatr(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
   return(outsize);
 }
 
+
 /****************************************************************************
- Reply to a setatr.
+  reply to a setatr
 ****************************************************************************/
-
 int reply_setatr(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
 {
   pstring fname;
@@ -538,10 +543,10 @@ int reply_setatr(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
   return(outsize);
 }
 
+
 /****************************************************************************
- Reply to a dskattr.
+  reply to a dskattr
 ****************************************************************************/
-
 int reply_dskattr(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
 {
        int outsize = 0;
@@ -586,11 +591,11 @@ int reply_dskattr(connection_struct *conn, char *inbuf,char *outbuf, int dum_siz
        return(outsize);
 }
 
+
 /****************************************************************************
- Reply to a search.
- Can be called from SMBsearch, SMBffirst or SMBfunique.
+  reply to a search
 Can be called from SMBsearch, SMBffirst or SMBfunique.
 ****************************************************************************/
-
 int reply_search(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
 {
   pstring mask;
@@ -668,16 +673,12 @@ int reply_search(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
     if (strlen(directory) == 0)
       pstrcpy(directory,"./");
     memset((char *)status,'\0',21);
-    SCVAL(status,0,(dirtype & 0x1F));
+    SCVAL(status,0,dirtype);
   }
   else
   {
-    int status_dirtype;
     memcpy(status,p,21);
-    status_dirtype = CVAL(status,0) & 0x1F;
-    if (status_dirtype != (dirtype & 0x1F))
-      dirtype = status_dirtype;
-
+    dirtype = CVAL(status,0) & 0x1F;
     conn->dirptr = dptr_fetch(status+12,&dptr_num);      
     if (!conn->dirptr)
       goto SearchEmpty;
@@ -795,10 +796,10 @@ int reply_search(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
   return(outsize);
 }
 
+
 /****************************************************************************
- Reply to a fclose (stop directory search).
+  reply to a fclose (stop directory search)
 ****************************************************************************/
-
 int reply_fclose(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
 {
   int outsize = 0;
@@ -837,8 +838,9 @@ int reply_fclose(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
   return(outsize);
 }
 
+
 /****************************************************************************
- Reply to an open.
+  reply to an open
 ****************************************************************************/
 
 int reply_open(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
@@ -908,10 +910,10 @@ int reply_open(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
   return(outsize);
 }
 
+
 /****************************************************************************
- Reply to an open and X.
+  reply to an open and X
 ****************************************************************************/
-
 int reply_open_and_X(connection_struct *conn, char *inbuf,char *outbuf,int length,int bufsize)
 {
   pstring fname;
@@ -1017,10 +1019,10 @@ int reply_open_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt
   return chain_reply(inbuf,outbuf,length,bufsize);
 }
 
+
 /****************************************************************************
- Reply to a SMBulogoffX.
+  reply to a SMBulogoffX
 ****************************************************************************/
-
 int reply_ulogoffX(connection_struct *conn, char *inbuf,char *outbuf,int length,int bufsize)
 {
   uint16 vuid = SVAL(inbuf,smb_uid);
@@ -1047,10 +1049,10 @@ int reply_ulogoffX(connection_struct *conn, char *inbuf,char *outbuf,int length,
   return chain_reply(inbuf,outbuf,length,bufsize);
 }
 
+
 /****************************************************************************
- Reply to a mknew or a create.
+  reply to a mknew or a create
 ****************************************************************************/
-
 int reply_mknew(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
 {
   pstring fname;
@@ -1120,10 +1122,10 @@ int reply_mknew(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
   return(outsize);
 }
 
+
 /****************************************************************************
- Reply to a create temporary file.
+  reply to a create temporary file
 ****************************************************************************/
-
 int reply_ctemp(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
 {
   pstring fname;
@@ -1431,59 +1433,6 @@ void fail_readraw(void)
        exit_server(errstr);
 }
 
-/****************************************************************************
- Use sendfile in readbraw.
-****************************************************************************/
-
-void send_file_readbraw(connection_struct *conn, files_struct *fsp, SMB_OFF_T startpos, size_t nread,
-               ssize_t mincount, char *outbuf)
-{
-       ssize_t ret=0;
-
-#if defined(WITH_SENDFILE)
-       /*
-        * We can only use sendfile on a non-chained packet and on a file
-        * that is exclusively oplocked. reply_readbraw has already checked the length.
-        */
-
-       if ((nread > 0) && (lp_write_cache_size(SNUM(conn)) == 0) &&
-                       EXCLUSIVE_OPLOCK_TYPE(fsp->oplock_type) && lp_use_sendfile(SNUM(conn)) ) {
-               DATA_BLOB header;
-
-               _smb_setlen(outbuf,nread);
-               header.data = outbuf;
-               header.length = 4;
-               header.free = NULL;
-
-               if ( conn->vfs_ops.sendfile( smbd_server_fd(), fsp, fsp->fd, &header, startpos, nread) == -1) {
-                       /*
-                        * Special hack for broken Linux with no 64 bit clean sendfile. If we
-                        * return ENOSYS then pretend we just got a normal read.
-                        */
-                       if (errno == ENOSYS)
-                               goto normal_read;
-
-                       DEBUG(0,("send_file_readbraw: sendfile failed for file %s (%s). Terminating\n",
-                               fsp->fsp_name, strerror(errno) ));
-                       exit_server("send_file_readbraw sendfile failed");
-               }
-
-       }
-
-  normal_read:
-#endif
-
-       if (nread > 0) {
-               ret = read_file(fsp,outbuf+4,startpos,nread);
-               if (ret < mincount)
-                       ret = 0;
-       }
-
-       _smb_setlen(outbuf,ret);
-       if (write_data(smbd_server_fd(),outbuf,4+ret) != 4+ret)
-               fail_readraw();
-}
-
 /****************************************************************************
  Reply to a readbraw (core+ protocol).
 ****************************************************************************/
@@ -1494,6 +1443,7 @@ int reply_readbraw(connection_struct *conn, char *inbuf, char *outbuf, int dum_s
        size_t nread = 0;
        SMB_OFF_T startpos;
        char *header = outbuf;
+       ssize_t ret=0;
        files_struct *fsp;
        START_PROFILE(SMBreadbraw);
 
@@ -1597,7 +1547,15 @@ int reply_readbraw(connection_struct *conn, char *inbuf, char *outbuf, int dum_s
        DEBUG( 3, ( "readbraw fnum=%d start=%.0f max=%d min=%d nread=%d\n", fsp->fnum, (double)startpos,
                                (int)maxcount, (int)mincount, (int)nread ) );
   
-       send_file_readbraw(conn, fsp, startpos, nread, mincount, outbuf);
+       if (nread > 0) {
+               ret = read_file(fsp,header+4,startpos,nread);
+               if (ret < mincount)
+                       ret = 0;
+       }
+
+       _smb_setlen(header,ret);
+       if (write_data(smbd_server_fd(),header,4+ret) != 4+ret)
+               fail_readraw();
 
        DEBUG(5,("readbraw finished\n"));
        END_PROFILE(SMBreadbraw);
@@ -1605,9 +1563,8 @@ int reply_readbraw(connection_struct *conn, char *inbuf, char *outbuf, int dum_s
 }
 
 /****************************************************************************
- Reply to a lockread (core+ protocol).
+  reply to a lockread (core+ protocol)
 ****************************************************************************/
-
 int reply_lockread(connection_struct *conn, char *inbuf,char *outbuf, int length, int dum_buffsiz)
 {
        ssize_t nread = -1;
@@ -1642,16 +1599,15 @@ int reply_lockread(connection_struct *conn, char *inbuf,char *outbuf, int length
                         (SMB_BIG_UINT)numtoread, (SMB_BIG_UINT)startpos, WRITE_LOCK);
 
        if (NT_STATUS_V(status)) {
-               if (lp_blocking_locks(SNUM(conn)) && ERROR_WAS_LOCK_DENIED(status)) {
+               if (lp_blocking_locks(SNUM(conn))) {
                        /*
                         * A blocking lock was requested. Package up
                         * this smb into a queued request and push it
                         * onto the blocking lock queue.
                         */
-                       if(push_blocking_lock_request(inbuf, length, -1, 0)) {
+                       if(push_blocking_lock_request(inbuf, length, -1, 0))
                                END_PROFILE(SMBlockread);
-                               return -1;
-                       }
+                       return -1;
                }
                END_PROFILE(SMBlockread);
                return ERROR_NT(status);
@@ -1676,209 +1632,132 @@ int reply_lockread(connection_struct *conn, char *inbuf,char *outbuf, int length
        return(outsize);
 }
 
+
 /****************************************************************************
- Reply to a read.
+  reply to a read
 ****************************************************************************/
 
 int reply_read(connection_struct *conn, char *inbuf,char *outbuf, int size, int dum_buffsize)
 {
-       size_t numtoread;
-       ssize_t nread = 0;
-       char *data;
-       SMB_OFF_T startpos;
-       int outsize = 0;
-       files_struct *fsp = file_fsp(inbuf,smb_vwv0);
-       START_PROFILE(SMBread);
-
-       CHECK_FSP(fsp,conn);
-       CHECK_READ(fsp);
+  size_t numtoread;
+  ssize_t nread = 0;
+  char *data;
+  SMB_OFF_T startpos;
+  int outsize = 0;
+  files_struct *fsp = file_fsp(inbuf,smb_vwv0);
+  START_PROFILE(SMBread);
 
-       numtoread = SVAL(inbuf,smb_vwv1);
-       startpos = IVAL(inbuf,smb_vwv2);
+  CHECK_FSP(fsp,conn);
+  CHECK_READ(fsp);
 
-       outsize = set_message(outbuf,5,3,True);
-       numtoread = MIN(BUFFER_SIZE-outsize,numtoread);
-       data = smb_buf(outbuf) + 3;
-  
-       if (is_locked(fsp,conn,(SMB_BIG_UINT)numtoread,(SMB_BIG_UINT)startpos, READ_LOCK,False)) {
-               END_PROFILE(SMBread);
-               return ERROR_DOS(ERRDOS,ERRlock);
-       }
+  numtoread = SVAL(inbuf,smb_vwv1);
+  startpos = IVAL(inbuf,smb_vwv2);
 
-       if (numtoread > 0)
-               nread = read_file(fsp,data,startpos,numtoread);
 
-       if (nread < 0) {
-               END_PROFILE(SMBread);
-               return(UNIXERROR(ERRDOS,ERRnoaccess));
-       }
-  
-       outsize += nread;
-       SSVAL(outbuf,smb_vwv0,nread);
-       SSVAL(outbuf,smb_vwv5,nread+3);
-       SCVAL(smb_buf(outbuf),0,1);
-       SSVAL(smb_buf(outbuf),1,nread);
+  outsize = set_message(outbuf,5,3,True);
+  numtoread = MIN(BUFFER_SIZE-outsize,numtoread);
+  data = smb_buf(outbuf) + 3;
   
-       DEBUG( 3, ( "read fnum=%d num=%d nread=%d\n",
-               fsp->fnum, (int)numtoread, (int)nread ) );
-
-       END_PROFILE(SMBread);
-       return(outsize);
-}
-
-/****************************************************************************
- Reply to a read and X - possibly using sendfile.
-****************************************************************************/
-
-int send_file_readX(connection_struct *conn, char *inbuf,char *outbuf,int length, 
-               files_struct *fsp, SMB_OFF_T startpos, size_t smb_maxcnt)
-{
-       ssize_t nread = -1;
-       char *data = smb_buf(outbuf);
-
-#if defined(WITH_SENDFILE)
-       /*
-        * We can only use sendfile on a non-chained packet and on a file
-        * that is exclusively oplocked.
-        */
-
-       if ((CVAL(inbuf,smb_vwv0) == 0xFF) && EXCLUSIVE_OPLOCK_TYPE(fsp->oplock_type) &&
-                       lp_use_sendfile(SNUM(conn)) && (lp_write_cache_size(SNUM(conn)) == 0) ) {
-               SMB_STRUCT_STAT sbuf;
-               DATA_BLOB header;
-
-               if(vfs_fstat(fsp,fsp->fd, &sbuf) == -1)
-                       return(UNIXERROR(ERRDOS,ERRnoaccess));
-
-               if (startpos > sbuf.st_size)
-                       goto normal_read;
-
-               if (smb_maxcnt > (sbuf.st_size - startpos))
-                       smb_maxcnt = (sbuf.st_size - startpos);
-
-               if (smb_maxcnt == 0)
-                       goto normal_read;
-
-               /* 
-                * Set up the packet header before send. We
-                * assume here the sendfile will work (get the
-                * correct amount of data).
-                */
-
-               SSVAL(outbuf,smb_vwv5,smb_maxcnt);
-               SSVAL(outbuf,smb_vwv6,smb_offset(data,outbuf));
-               SSVAL(smb_buf(outbuf),-2,smb_maxcnt);
-               SCVAL(outbuf,smb_vwv0,0xFF);
-               set_message(outbuf,12,smb_maxcnt,False);
-               header.data = outbuf;
-               header.length = data - outbuf;
-               header.free = NULL;
-
-               if ( conn->vfs_ops.sendfile( smbd_server_fd(), fsp, fsp->fd, &header, startpos, smb_maxcnt) == -1) {
-                       /*
-                        * Special hack for broken Linux with no 64 bit clean sendfile. If we
-                        * return ENOSYS then pretend we just got a normal read.
-                        */
-                       if (errno == ENOSYS)
-                               goto normal_read;
-
-                       DEBUG(0,("send_file_readX: sendfile failed for file %s (%s). Terminating\n",
-                               fsp->fsp_name, strerror(errno) ));
-                       exit_server("send_file_readX sendfile failed");
-               }
-
-               DEBUG( 3, ( "send_file_readX: sendfile fnum=%d max=%d nread=%d\n",
-                       fsp->fnum, (int)smb_maxcnt, (int)nread ) );
-               return -1;
-       }
-
-  normal_read:
+  if (is_locked(fsp,conn,(SMB_BIG_UINT)numtoread,(SMB_BIG_UINT)startpos, READ_LOCK,False)) {
+    END_PROFILE(SMBread);
+    return ERROR_DOS(ERRDOS,ERRlock);
+  }
 
-#endif
+  if (numtoread > 0)
+    nread = read_file(fsp,data,startpos,numtoread);
 
-       nread = read_file(fsp,data,startpos,smb_maxcnt);
+  if (nread < 0) {
+    END_PROFILE(SMBread);
+    return(UNIXERROR(ERRDOS,ERRnoaccess));
+  }
   
-       if (nread < 0) {
-               END_PROFILE(SMBreadX);
-               return(UNIXERROR(ERRDOS,ERRnoaccess));
-       }
-
-       SSVAL(outbuf,smb_vwv5,nread);
-       SSVAL(outbuf,smb_vwv6,smb_offset(data,outbuf));
-       SSVAL(smb_buf(outbuf),-2,nread);
+  outsize += nread;
+  SSVAL(outbuf,smb_vwv0,nread);
+  SSVAL(outbuf,smb_vwv5,nread+3);
+  SCVAL(smb_buf(outbuf),0,1);
+  SSVAL(smb_buf(outbuf),1,nread);
   
-       DEBUG( 3, ( "send_file_readX fnum=%d max=%d nread=%d\n",
-               fsp->fnum, (int)smb_maxcnt, (int)nread ) );
+  DEBUG( 3, ( "read fnum=%d num=%d nread=%d\n",
+            fsp->fnum, (int)numtoread, (int)nread ) );
 
-       return nread;
+  END_PROFILE(SMBread);
+  return(outsize);
 }
 
+
 /****************************************************************************
- Reply to a read and X.
+  reply to a read and X
 ****************************************************************************/
-
 int reply_read_and_X(connection_struct *conn, char *inbuf,char *outbuf,int length,int bufsize)
 {
-       files_struct *fsp = file_fsp(inbuf,smb_vwv2);
-       SMB_OFF_T startpos = IVAL(inbuf,smb_vwv3);
-       ssize_t nread = -1;
-       size_t smb_maxcnt = SVAL(inbuf,smb_vwv5);
-#if 0
-       size_t smb_mincnt = SVAL(inbuf,smb_vwv6);
-#endif
-
-       START_PROFILE(SMBreadX);
+  files_struct *fsp = file_fsp(inbuf,smb_vwv2);
+  SMB_OFF_T startpos = IVAL(inbuf,smb_vwv3);
+  size_t smb_maxcnt = SVAL(inbuf,smb_vwv5);
+  size_t smb_mincnt = SVAL(inbuf,smb_vwv6);
+  ssize_t nread = -1;
+  char *data;
+  START_PROFILE(SMBreadX);
 
-       /* If it's an IPC, pass off the pipe handler. */
-       if (IS_IPC(conn)) {
-               END_PROFILE(SMBreadX);
-               return reply_pipe_read_and_X(inbuf,outbuf,length,bufsize);
-       }
+  /* If it's an IPC, pass off the pipe handler. */
+  if (IS_IPC(conn)) {
+    END_PROFILE(SMBreadX);
+    return reply_pipe_read_and_X(inbuf,outbuf,length,bufsize);
+  }
 
-       CHECK_FSP(fsp,conn);
-       CHECK_READ(fsp);
+  CHECK_FSP(fsp,conn);
+  CHECK_READ(fsp);
 
-       set_message(outbuf,12,0,True);
+  set_message(outbuf,12,0,True);
+  data = smb_buf(outbuf);
 
-       if(CVAL(inbuf,smb_wct) == 12) {
+  if(CVAL(inbuf,smb_wct) == 12) {
 #ifdef LARGE_SMB_OFF_T
-               /*
-                * This is a large offset (64 bit) read.
-                */
-               startpos |= (((SMB_OFF_T)IVAL(inbuf,smb_vwv10)) << 32);
+    /*
+     * This is a large offset (64 bit) read.
+     */
+    startpos |= (((SMB_OFF_T)IVAL(inbuf,smb_vwv10)) << 32);
 
 #else /* !LARGE_SMB_OFF_T */
 
-               /*
-                * Ensure we haven't been sent a >32 bit offset.
-                */
+    /*
+     * Ensure we haven't been sent a >32 bit offset.
+     */
 
-               if(IVAL(inbuf,smb_vwv10) != 0) {
-                       DEBUG(0,("reply_read_and_X - large offset (%x << 32) used and we don't support \
+    if(IVAL(inbuf,smb_vwv10) != 0) {
+      DEBUG(0,("reply_read_and_X - large offset (%x << 32) used and we don't support \
 64 bit offsets.\n", (unsigned int)IVAL(inbuf,smb_vwv10) ));
-                       END_PROFILE(SMBreadX);
-                       return ERROR_DOS(ERRDOS,ERRbadaccess);
-               }
+      END_PROFILE(SMBreadX);
+      return ERROR_DOS(ERRDOS,ERRbadaccess);
+    }
 
 #endif /* LARGE_SMB_OFF_T */
 
-       }
+  }
 
-       if (is_locked(fsp,conn,(SMB_BIG_UINT)smb_maxcnt,(SMB_BIG_UINT)startpos, READ_LOCK,False)) {
-               END_PROFILE(SMBreadX);
-               return ERROR_DOS(ERRDOS,ERRlock);
-       }
+  if (is_locked(fsp,conn,(SMB_BIG_UINT)smb_maxcnt,(SMB_BIG_UINT)startpos, READ_LOCK,False)) {
+    END_PROFILE(SMBreadX);
+    return ERROR_DOS(ERRDOS,ERRlock);
+  }
+  nread = read_file(fsp,data,startpos,smb_maxcnt);
 
-       nread = send_file_readX(conn, inbuf, outbuf, length, fsp, startpos, smb_maxcnt);
-       if (nread != -1)
-               nread = chain_reply(inbuf,outbuf,length,bufsize);
+  if (nread < 0) {
+    END_PROFILE(SMBreadX);
+    return(UNIXERROR(ERRDOS,ERRnoaccess));
+  }
+  
+  SSVAL(outbuf,smb_vwv5,nread);
+  SSVAL(outbuf,smb_vwv6,smb_offset(data,outbuf));
+  SSVAL(smb_buf(outbuf),-2,nread);
+  
+  DEBUG( 3, ( "readX fnum=%d min=%d max=%d nread=%d\n",
+             fsp->fnum, (int)smb_mincnt, (int)smb_maxcnt, (int)nread ) );
 
-       END_PROFILE(SMBreadX);
-       return nread;
+  END_PROFILE(SMBreadX);
+  return chain_reply(inbuf,outbuf,length,bufsize);
 }
 
 /****************************************************************************
- Reply to a writebraw (core+ or LANMAN1.0 protocol).
+  reply to a writebraw (core+ or LANMAN1.0 protocol)
 ****************************************************************************/
 
 int reply_writebraw(connection_struct *conn, char *inbuf,char *outbuf, int size, int dum_buffsize)
@@ -2009,7 +1888,7 @@ int reply_writebraw(connection_struct *conn, char *inbuf,char *outbuf, int size,
 }
 
 /****************************************************************************
- Reply to a writeunlock (core+).
+  reply to a writeunlock (core+)
 ****************************************************************************/
 
 int reply_writeunlock(connection_struct *conn, char *inbuf,char *outbuf, 
@@ -2071,6 +1950,7 @@ int reply_writeunlock(connection_struct *conn, char *inbuf,char *outbuf,
        return outsize;
 }
 
+
 /****************************************************************************
  Reply to a write.
 ****************************************************************************/
@@ -2149,10 +2029,10 @@ int reply_write(connection_struct *conn, char *inbuf,char *outbuf,int size,int d
        return(outsize);
 }
 
+
 /****************************************************************************
- Reply to a write and X.
+  reply to a write and X
 ****************************************************************************/
-
 int reply_write_and_X(connection_struct *conn, char *inbuf,char *outbuf,int length,int bufsize)
 {
   files_struct *fsp = file_fsp(inbuf,smb_vwv2);
@@ -2249,8 +2129,9 @@ int reply_write_and_X(connection_struct *conn, char *inbuf,char *outbuf,int leng
   return chain_reply(inbuf,outbuf,length,bufsize);
 }
 
+
 /****************************************************************************
- Reply to a lseek.
+  reply to a lseek
 ****************************************************************************/
 
 int reply_lseek(connection_struct *conn, char *inbuf,char *outbuf, int size, int dum_buffsize)
@@ -2331,7 +2212,7 @@ int reply_lseek(connection_struct *conn, char *inbuf,char *outbuf, int size, int
 }
 
 /****************************************************************************
- Reply to a flush.
+  reply to a flush
 ****************************************************************************/
 
 int reply_flush(connection_struct *conn, char *inbuf,char *outbuf, int size, int dum_buffsize)
@@ -2353,10 +2234,10 @@ int reply_flush(connection_struct *conn, char *inbuf,char *outbuf, int size, int
        return(outsize);
 }
 
+
 /****************************************************************************
- Reply to a exit.
+  reply to a exit
 ****************************************************************************/
-
 int reply_exit(connection_struct *conn, 
               char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
 {
@@ -2370,10 +2251,10 @@ int reply_exit(connection_struct *conn,
        return(outsize);
 }
 
+
 /****************************************************************************
  Reply to a close - has to deal with closing a directory opened by NT SMB's.
 ****************************************************************************/
-
 int reply_close(connection_struct *conn, char *inbuf,char *outbuf, int size,
                 int dum_buffsize)
 {
@@ -2455,8 +2336,9 @@ int reply_close(connection_struct *conn, char *inbuf,char *outbuf, int size,
        return(outsize);
 }
 
+
 /****************************************************************************
- Reply to a writeclose (Core+ protocol).
+  reply to a writeclose (Core+ protocol)
 ****************************************************************************/
 
 int reply_writeclose(connection_struct *conn,
@@ -2513,10 +2395,10 @@ int reply_writeclose(connection_struct *conn,
        return(outsize);
 }
 
+
 /****************************************************************************
- Reply to a lock.
+  reply to a lock
 ****************************************************************************/
-
 int reply_lock(connection_struct *conn,
               char *inbuf,char *outbuf, int length, int dum_buffsize)
 {
@@ -2538,7 +2420,7 @@ int reply_lock(connection_struct *conn,
 
        status = do_lock_spin(fsp, conn, SVAL(inbuf,smb_pid), count, offset, WRITE_LOCK);
        if (NT_STATUS_V(status)) {
-               if (lp_blocking_locks(SNUM(conn)) && ERROR_WAS_LOCK_DENIED(status)) {
+               if (lp_blocking_locks(SNUM(conn))) {
                        /*
                         * A blocking lock was requested. Package up
                         * this smb into a queued request and push it
@@ -2557,10 +2439,10 @@ int reply_lock(connection_struct *conn,
        return(outsize);
 }
 
+
 /****************************************************************************
- Reply to a unlock.
+  reply to a unlock
 ****************************************************************************/
-
 int reply_unlock(connection_struct *conn, char *inbuf,char *outbuf, int size, 
                 int dum_buffsize)
 {
@@ -2588,10 +2470,10 @@ int reply_unlock(connection_struct *conn, char *inbuf,char *outbuf, int size,
        return(outsize);
 }
 
+
 /****************************************************************************
- Reply to a tdis.
+  reply to a tdis
 ****************************************************************************/
-
 int reply_tdis(connection_struct *conn, 
               char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
 {
@@ -2615,10 +2497,11 @@ int reply_tdis(connection_struct *conn,
        return outsize;
 }
 
+
+
 /****************************************************************************
- Reply to a echo.
+  reply to a echo
 ****************************************************************************/
-
 int reply_echo(connection_struct *conn,
               char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
 {
@@ -2656,10 +2539,10 @@ int reply_echo(connection_struct *conn,
        return -1;
 }
 
+
 /****************************************************************************
- Reply to a printopen.
+  reply to a printopen
 ****************************************************************************/
-
 int reply_printopen(connection_struct *conn, 
                    char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
 {
@@ -2690,8 +2573,9 @@ int reply_printopen(connection_struct *conn,
        return(outsize);
 }
 
+
 /****************************************************************************
- Reply to a printclose.
+  reply to a printclose
 ****************************************************************************/
 int reply_printclose(connection_struct *conn,
                     char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
@@ -2723,10 +2607,10 @@ int reply_printclose(connection_struct *conn,
        return(outsize);
 }
 
+
 /****************************************************************************
- Reply to a printqueue.
+  reply to a printqueue
 ****************************************************************************/
-
 int reply_printqueue(connection_struct *conn,
                     char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
 {
@@ -2794,10 +2678,10 @@ int reply_printqueue(connection_struct *conn,
        return(outsize);
 }
 
+
 /****************************************************************************
- Reply to a printwrite.
+  reply to a printwrite
 ****************************************************************************/
-
 int reply_printwrite(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
 {
   int numtowrite;
@@ -2828,11 +2712,11 @@ int reply_printwrite(connection_struct *conn, char *inbuf,char *outbuf, int dum_
   return(outsize);
 }
 
+
 /****************************************************************************
  The guts of the mkdir command, split out so it may be called by the NT SMB
  code. 
 ****************************************************************************/
-
 NTSTATUS mkdir_internal(connection_struct *conn, pstring directory)
 {
        BOOL bad_path = False;
@@ -3055,10 +2939,10 @@ int reply_rmdir(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
   return(outsize);
 }
 
+
 /*******************************************************************
- Resolve wildcards in a filename rename.
+resolve wildcards in a filename rename
 ********************************************************************/
-
 static BOOL resolve_wildcards(char *name1,char *name2)
 {
   fstring root1,root2;
@@ -3494,9 +3378,8 @@ static BOOL copy_file(char *src,char *dest1,connection_struct *conn, int ofun,
 }
 
 /****************************************************************************
- Reply to a file copy.
-****************************************************************************/
-
+  reply to a file copy.
+  ****************************************************************************/
 int reply_copy(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
 {
   int outsize = 0;
@@ -3659,9 +3542,8 @@ int reply_copy(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
 }
 
 /****************************************************************************
- Reply to a setdir.
+  reply to a setdir
 ****************************************************************************/
-
 int reply_setdir(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
 {
   int snum;
@@ -3755,7 +3637,6 @@ SMB_BIG_UINT get_lock_count( char *data, int data_offset, BOOL large_file_format
 /****************************************************************************
  Pathetically try and map a 64 bit lock offset into 31 bits. I hate Windows :-).
 ****************************************************************************/
-
 static uint32 map_lock_offset(uint32 high, uint32 low)
 {
        unsigned int i;
@@ -3835,7 +3716,7 @@ SMB_BIG_UINT get_lock_offset( char *data, int data_offset, BOOL large_file_forma
 }
 
 /****************************************************************************
- Reply to a lockingX request.
+  reply to a lockingX request
 ****************************************************************************/
 
 int reply_lockingX(connection_struct *conn, char *inbuf,char *outbuf,int length,int bufsize)
@@ -3946,7 +3827,7 @@ no oplock granted on this file (%s).\n", fsp->fnum, fsp->fsp_name));
 
        /* Setup the timeout in seconds. */
 
-       lock_timeout = ((lock_timeout == -1) ? -1 : (lock_timeout+999)/1000);
+       lock_timeout = ((lock_timeout == -1) ? -1 : lock_timeout/1000);
        
        /* Now do any requested locks */
        data += ((large_file_format ? 20 : 10)*num_ulocks);
@@ -3974,7 +3855,7 @@ no oplock granted on this file (%s).\n", fsp->fnum, fsp->fsp_name));
                status = do_lock_spin(fsp,conn,lock_pid, count,offset, 
                                 ((locktype & 1) ? READ_LOCK : WRITE_LOCK));
                if (NT_STATUS_V(status)) {
-                       if ((lock_timeout != 0) && lp_blocking_locks(SNUM(conn)) && ERROR_WAS_LOCK_DENIED(status)) {
+                       if ((lock_timeout != 0) && lp_blocking_locks(SNUM(conn))) {
                                /*
                                 * A blocking lock was requested. Package up
                                 * this smb into a queued request and push it
index 411ece52495c5f80b615147ad7fba289c0a1829b..bdcdce6e14509225d4625774d1c46a83d053b18c 100644 (file)
@@ -287,8 +287,17 @@ void set_sec_ctx(uid_t uid, gid_t gid, int ngroups, gid_t *groups, NT_USER_TOKEN
        DEBUG(3, ("setting sec ctx (%u, %u) - sec_ctx_stack_ndx = %d\n", 
                (unsigned int)uid, (unsigned int)gid, sec_ctx_stack_ndx));
 
-       debug_nt_user_token(DBGC_CLASS, 5, token);
-       debug_unix_user_token(DBGC_CLASS, 5, uid, gid, ngroups, groups);
+       if (ngroups) {
+               int i;
+
+               DEBUG(3, ("%d user groups: \n", ngroups));
+               for (i = 0; i < ngroups; i++) {
+                       DEBUGADD(3, ("%u ", (unsigned int)groups[i]));
+               }
+
+               DEBUG(3, ("\n"));
+       }
+       
 
        gain_root();
 
index 39d5e3bcd3f75922aab515e50b06574a31d69405..b2b905cec3542fd8f59f83b62433309b149bffcb 100644 (file)
@@ -33,8 +33,6 @@ int last_message = -1;
 #define LAST_MESSAGE() smb_fn_name(last_message)
 
 extern pstring user_socket_options;
-extern SIG_ATOMIC_T got_sig_term;
-extern SIG_ATOMIC_T reload_after_sighup;
 
 #ifdef WITH_DFS
 extern int dcelogin_atmost_once;
@@ -63,6 +61,8 @@ static void smbd_set_server_fd(int fd)
  Terminate signal.
 ****************************************************************************/
 
+SIG_ATOMIC_T got_sig_term = 0;
+
 static void sig_term(void)
 {
        got_sig_term = 1;
@@ -73,6 +73,8 @@ static void sig_term(void)
  Catch a sighup.
 ****************************************************************************/
 
+SIG_ATOMIC_T reload_after_sighup = 0;
+
 static void sig_hup(int sig)
 {
        reload_after_sighup = 1;
@@ -540,8 +542,6 @@ void exit_server(char *reason)
 
        invalidate_all_vuids();
 
-       print_notify_send_messages();   
-
        /* delete our entry in the connections database. */
        yield_connection(NULL,"");
 
@@ -860,7 +860,7 @@ static void usage(char *pname)
        register_dmalloc_msgs();
 
        /* Setup the main smbd so that we can get messages. */
-       claim_connection(NULL,"",0,True,FLAG_MSG_GENERAL|FLAG_MSG_SMBD);
+       claim_connection(NULL,"",0,True);
 
        /* 
           DO NOT ENABLE THIS TILL YOU COPE WITH KILLING THESE TASKS AND INETD
index a8a590da804404f597d65b5eefd042b6d35b8e1e..6f83a2d3b75ce22d5302ddd2c33d795057921280 100644 (file)
@@ -305,7 +305,6 @@ static void set_admin_user(connection_struct *conn)
 #endif
            ) {
                conn->admin_user = True;
-               conn->force_user = True;  /* Admin users are effectivly 'forced' */
                DEBUG(0,("%s logged in as admin user (root privileges)\n",conn->user));
        } else {
                conn->admin_user = False;
@@ -330,6 +329,7 @@ static connection_struct *make_connection_snum(int snum, user_struct *vuser,
 {
        struct passwd *pass = NULL;
        BOOL guest = False;
+       BOOL force = False;
        connection_struct *conn;
        struct stat st;
        fstring user;
@@ -349,6 +349,7 @@ static connection_struct *make_connection_snum(int snum, user_struct *vuser,
        if (lp_guest_only(snum)) {
                const char *guestname = lp_guestaccount();
                guest = True;
+               force = True;
                pass = getpwnam_alloc(guestname);
                if (!pass) {
                        DEBUG(0,("authorise_login: Invalid guest account %s??\n",guestname));
@@ -396,7 +397,7 @@ static connection_struct *make_connection_snum(int snum, user_struct *vuser,
                        return NULL;
                }
                pass = Get_Pwnam(user);
-               conn->force_user = True;
+               conn->force_user = force;
                conn->uid = pass->pw_uid;
                conn->gid = pass->pw_gid;
                string_set(&conn->user, pass->pw_name);
@@ -433,7 +434,7 @@ static connection_struct *make_connection_snum(int snum, user_struct *vuser,
 
        /*
         * If force user is true, then store the
-        * given userid and also the groups
+        * given userid and also the primary groupid
         * of the user we're forcing.
         */
        
@@ -491,7 +492,6 @@ static connection_struct *make_connection_snum(int snum, user_struct *vuser,
                gid = nametogid(gname);
                
                if (gid != (gid_t)-1) {
-
                        /*
                         * If the user has been forced and the forced group starts
                         * with a '+', then we only set the group to be the forced
@@ -507,7 +507,6 @@ static connection_struct *make_connection_snum(int snum, user_struct *vuser,
                                conn->gid = gid;
                                DEBUG(3,("Forced group %s\n",gname));
                        }
-                       conn->force_group = True;
                } else {
                        DEBUG(1,("Couldn't find group %s\n",gname));
                        conn_free(conn);
@@ -525,27 +524,23 @@ static connection_struct *make_connection_snum(int snum, user_struct *vuser,
                DEBUG(3,("Connect path is '%s' for service [%s]\n",s, lp_servicename(snum)));
        }
 
-       if (conn->force_user || conn->force_group) {
-
-               /* groups stuff added by ih */
-               conn->ngroups = 0;
-               conn->groups = NULL;
-               
-               /* Find all the groups this uid is in and
-                  store them. Used by change_to_user() */
-               initialise_groups(conn->user, conn->uid, conn->gid); 
-               get_current_groups(conn->gid, &conn->ngroups,&conn->groups);
+       /* groups stuff added by ih */
+       conn->ngroups = 0;
+       conn->groups = NULL;
+       
+       /* Find all the groups this uid is in and
+          store them. Used by change_to_user() */
+       initialise_groups(conn->user, conn->uid, conn->gid); 
+       get_current_groups(conn->gid, &conn->ngroups,&conn->groups);
                
-               conn->nt_user_token = create_nt_token(conn->uid, conn->gid, 
-                                                     conn->ngroups, conn->groups,
-                                                     guest);
-       }
+       conn->nt_user_token = create_nt_token(conn->uid, conn->gid, 
+                                             conn->ngroups, conn->groups,
+                                             guest, NULL);
 
        /*
         * New code to check if there's a share security descripter
         * added from NT server manager. This is done after the
         * smb.conf checks are done as we need a uid and token. JRA.
-        *
         */
 
        {
@@ -578,7 +573,7 @@ static connection_struct *make_connection_snum(int snum, user_struct *vuser,
        if (!claim_connection(conn,
                              lp_servicename(SNUM(conn)),
                              lp_max_connections(SNUM(conn)),
-                             False,0)) {
+                             False)) {
                DEBUG(1,("too many connections - rejected\n"));
                conn_free(conn);
                *status = NT_STATUS_INSUFFICIENT_RESOURCES;
@@ -808,7 +803,7 @@ connection_struct *make_connection(const char *service_in, DATA_BLOB password,
        } else if ((lp_security() != SEC_SHARE) && (vuser->homes_snum != -1)
                   && strequal(service_in, lp_servicename(vuser->homes_snum))) {
                DATA_BLOB no_pw = data_blob(NULL, 0);
-               DEBUG(5, ("making a connection to 'homes' service [%s] created at session setup time\n", service_in));
+               DEBUG(5, ("making a connection to 'homes' service [%s] created at session setup time\n", service));
                return make_connection_snum(vuser->homes_snum,
                                            vuser, no_pw, 
                                            dev, status);
index b9af7200089aba2c103afc15e505b769be9bb696..77f93812dd545f36260136de0fa28423303f610a 100644 (file)
@@ -160,12 +160,12 @@ static int reply_spnego_kerberos(connection_struct *conn,
        ads_destroy(&ads);
 
        /* the password is good - let them in */
-       pw = Get_Pwnam(user);
+       pw = smb_getpwnam(user,False);
        if (!pw && !strstr(user, lp_winbind_separator())) {
                char *user2;
                /* try it with a winbind domain prefix */
                asprintf(&user2, "%s%s%s", lp_workgroup(), lp_winbind_separator(), user);
-               pw = Get_Pwnam(user2);
+               pw = smb_getpwnam(user2,False);
                if (pw) {
                        free(user);
                        user = user2;
@@ -177,9 +177,9 @@ static int reply_spnego_kerberos(connection_struct *conn,
                return ERROR_NT(NT_STATUS_NO_SUCH_USER);
        }
 
-       if (!NT_STATUS_IS_OK(ret = make_server_info_pw(&server_info,pw))) {
+       if (!make_server_info_pw(&server_info,pw)) {
                DEBUG(1,("make_server_info_from_pw failed!\n"));
-               return ERROR_NT(ret);
+               return ERROR_NT(NT_STATUS_NO_MEMORY);
        }
        
        sess_vuid = register_vuid(server_info, user);
@@ -294,6 +294,8 @@ static int reply_spnego_negotiate(connection_struct *conn,
                return ERROR_NT(NT_STATUS_LOGON_FAILURE);
        }
 
+       DEBUG(3,("Got neg_flags=0x%08x\n", neg_flags));
+
        debug_ntlmssp_flags(neg_flags);
 
        if (ntlmssp_auth_context) {
@@ -322,12 +324,12 @@ static int reply_spnego_negotiate(connection_struct *conn,
                          "U",
                          lp_workgroup());
 
-               fstrcpy(dnsdomname, (SEC_ADS == lp_security())?lp_realm():"");
+               fstrcpy(dnsdomname, lp_realm());
                strlower(dnsdomname);
 
                fstrcpy(dnsname, global_myname);
                fstrcat(dnsname, ".");
-               fstrcat(dnsname, dnsdomname);
+               fstrcat(dnsname, lp_realm());
                strlower(dnsname);
 
                msrpc_gen(&struct_blob, "aaaaa",
@@ -439,14 +441,14 @@ static int reply_spnego_auth(connection_struct *conn, char *inbuf, char *outbuf,
                auth_flags |= AUTH_FLAG_NTLM_RESP;
        } else if (nthash.length > 24) {
                auth_flags |= AUTH_FLAG_NTLMv2_RESP;
-       };
-
-       nt_status = make_user_info_map(&user_info, user, workgroup, machine, 
-                                      lmhash, nthash, plaintext_password, 
-                                      auth_flags, True);
+       }
 
-       /* it looks a bit weird, but this function returns int type... */
-       if (!NT_STATUS_IS_OK(nt_status)) {
+       if (!make_user_info_map(&user_info, 
+                               user, workgroup, 
+                               machine, 
+                               lmhash, nthash,
+                               plaintext_password, 
+                               auth_flags, True)) {
                return ERROR_NT(NT_STATUS_NO_MEMORY);
        }
 
@@ -621,7 +623,7 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,
        NTSTATUS nt_status;
 
        BOOL doencrypt = global_encrypted_passwords_negotiated;
-       
+
        START_PROFILE(SMBsesssetupX);
 
        ZERO_STRUCT(lm_resp);
@@ -734,7 +736,7 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,
        
        /* don't allow for weird usernames or domains */
        alpha_strcpy(user, user, ". _-$", sizeof(user));
-       alpha_strcpy(domain, domain, ". _-@", sizeof(domain));
+       alpha_strcpy(domain, domain, ". _-", sizeof(domain));
        if (strstr(user, "..") || strstr(domain,"..")) {
                return ERROR_NT(NT_STATUS_LOGON_FAILURE);
        }
@@ -776,9 +778,11 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,
                nt_status = check_guest_password(&server_info);
 
        } else if (doencrypt) {
-               nt_status = make_user_info_for_reply_enc(&user_info, user, domain,
-                                                        lm_resp, nt_resp);
-               if (NT_STATUS_IS_OK(nt_status)) {
+               if (!make_user_info_for_reply_enc(&user_info, 
+                                                 user, domain, 
+                                                 lm_resp, nt_resp)) {
+                       nt_status = NT_STATUS_NO_MEMORY;
+               } else {
                        nt_status = negprot_global_auth_context->check_ntlm_password(negprot_global_auth_context, 
                                                                                     user_info, 
                                                                                     &server_info);
diff --git a/source3/smbd/ssl.c b/source3/smbd/ssl.c
new file mode 100644 (file)
index 0000000..7fcb48a
--- /dev/null
@@ -0,0 +1,286 @@
+/* 
+   Unix SMB/CIFS implementation.
+   SSLeay utility functions
+   Copyright (C) Christian Starkjohann <cs@obdev.at> 1998
+   
+   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., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+/* 
+ * since includes.h pulls in config.h which is were WITH_SSL will be 
+ * defined, we want to include includes.h before testing for WITH_SSL
+ * RJS 26-Jan-1999
+ */
+
+#include "includes.h"
+
+#ifdef WITH_SSL  /* should always be defined if this module is compiled */
+
+#include <openssl/ssl.h>
+#include <openssl/err.h>
+
+BOOL            sslEnabled;
+SSL             *ssl = NULL;
+int             sslFd = -1;
+static SSL_CTX  *sslContext = NULL;
+extern int      DEBUGLEVEL;
+
+static int  ssl_verify_cb(int ok, X509_STORE_CTX *ctx)
+{
+char    buffer[256];
+
+    X509_NAME_oneline(X509_get_issuer_name(ctx->current_cert),
+            buffer, sizeof(buffer));
+    if(ok){
+        DEBUG(0, ("SSL: Certificate OK: %s\n", buffer));
+    }else{
+        switch (ctx->error){
+        case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT:
+            DEBUG(0, ("SSL: Cert error: CA not known: %s\n", buffer));
+            break;
+        case X509_V_ERR_CERT_NOT_YET_VALID:
+            DEBUG(0, ("SSL: Cert error: Cert not yet valid: %s\n", buffer));
+            break;
+        case X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD:
+            DEBUG(0, ("SSL: Cert error: illegal \'not before\' field: %s\n",
+                    buffer));
+            break;
+        case X509_V_ERR_CERT_HAS_EXPIRED:
+            DEBUG(0, ("SSL: Cert error: Cert expired: %s\n", buffer));
+            break;
+        case X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD:
+            DEBUG(0, ("SSL: Cert error: invalid \'not after\' field: %s\n",
+                    buffer));
+            break;
+        default:
+            DEBUG(0, ("SSL: Cert error: unknown error %d in %s\n", ctx->error,
+                    buffer));
+            break;
+        }
+    }
+    return ok;
+}
+
+static RSA  *ssl_temp_rsa_cb(SSL *ssl, int is_export, int keylength)
+{
+static RSA  *rsa = NULL;
+    
+    if(rsa == NULL)
+        rsa = RSA_generate_key(keylength, RSA_F4, NULL, NULL);
+    return rsa;
+}
+
+/* This is called before we fork. It should ask the user for the pass phrase
+ * if necessary. Error output can still go to stderr because the process
+ * has a terminal.
+ */
+int sslutil_init(int isServer)
+{
+int     err, entropybytes;
+char    *certfile, *keyfile, *ciphers, *cacertDir, *cacertFile;
+char   *egdsocket, *entropyfile;
+
+    SSL_load_error_strings();
+    SSLeay_add_ssl_algorithms();
+    egdsocket = lp_ssl_egdsocket();
+    if (egdsocket != NULL && *egdsocket != 0)
+       RAND_egd(egdsocket);
+    entropyfile = lp_ssl_entropyfile();
+    entropybytes = lp_ssl_entropybytes();
+    if (entropyfile != NULL && *entropyfile != 0)
+       RAND_load_file(entropyfile, entropybytes);
+    switch(lp_ssl_version()){
+        case SMB_SSL_V2:    sslContext = SSL_CTX_new(SSLv2_method());   break;
+        case SMB_SSL_V3:    sslContext = SSL_CTX_new(SSLv3_method());   break;
+        default:
+        case SMB_SSL_V23:   sslContext = SSL_CTX_new(SSLv23_method());  break;
+        case SMB_SSL_TLS1:  sslContext = SSL_CTX_new(TLSv1_method());   break;
+    }
+    if(sslContext == NULL){
+        err = ERR_get_error();
+        fprintf(stderr, "SSL: Error allocating context: %s\n",
+                ERR_error_string(err, NULL));
+        exit(1);
+    }
+    if(lp_ssl_compatibility()){
+        SSL_CTX_set_options(sslContext, SSL_OP_ALL);
+    }
+    certfile = isServer ? lp_ssl_server_cert() : lp_ssl_client_cert();
+    if((certfile == NULL || *certfile == 0) && isServer){
+        fprintf(stderr, "SSL: No cert file specified in config file!\n");
+        fprintf(stderr, "The server MUST have a certificate!\n");
+        exit(1);
+    }
+    keyfile = isServer ? lp_ssl_server_privkey() : lp_ssl_client_privkey();
+    if(keyfile == NULL || *keyfile == 0)
+        keyfile = certfile;
+    if(certfile != NULL && *certfile != 0){
+        if(!SSL_CTX_use_certificate_chain_file(sslContext, certfile)){
+            err = ERR_get_error();
+            fprintf(stderr, "SSL: error reading certificate from file %s: %s\n",
+                    certfile, ERR_error_string(err, NULL));
+            exit(1);
+        }
+        if(!SSL_CTX_use_PrivateKey_file(sslContext, keyfile, SSL_FILETYPE_PEM)){
+            err = ERR_get_error();
+            fprintf(stderr, "SSL: error reading private key from file %s: %s\n",
+                    keyfile, ERR_error_string(err, NULL));
+            exit(1);
+        }
+        if(!SSL_CTX_check_private_key(sslContext)){
+            err = ERR_get_error();
+            fprintf(stderr, "SSL: Private key does not match public key in cert!\n");
+            exit(1);
+        }
+    }
+    cacertDir = lp_ssl_cacertdir();
+    cacertFile = lp_ssl_cacertfile();
+    if(cacertDir != NULL && *cacertDir == 0)
+        cacertDir = NULL;
+    if(cacertFile != NULL && *cacertFile == 0)
+        cacertFile = NULL;
+    if(!SSL_CTX_load_verify_locations(sslContext, cacertFile, cacertDir)){
+        err = ERR_get_error();
+       if (cacertFile || cacertDir) {
+                   fprintf(stderr, "SSL: Error error setting CA cert locations: %s\n",
+               ERR_error_string(err, NULL));
+            fprintf(stderr, "trying default locations.\n");
+       }
+        cacertFile = cacertDir = NULL;
+        if(!SSL_CTX_set_default_verify_paths(sslContext)){
+            err = ERR_get_error();
+            fprintf(stderr, "SSL: Error error setting default CA cert location: %s\n",
+                    ERR_error_string(err, NULL));
+            exit(1);
+        }
+    }
+    SSL_CTX_set_tmp_rsa_callback(sslContext, ssl_temp_rsa_cb);
+    if((ciphers = lp_ssl_ciphers()) != NULL && *ciphers != 0)
+        SSL_CTX_set_cipher_list(sslContext, ciphers);
+    if((isServer && lp_ssl_reqClientCert()) || (!isServer && lp_ssl_reqServerCert())){
+        SSL_CTX_set_verify(sslContext,
+            SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, ssl_verify_cb);
+    }else{
+        SSL_CTX_set_verify(sslContext, SSL_VERIFY_NONE, ssl_verify_cb);
+    }
+#if 1 /* don't know what this is good for, but s_server in SSLeay does it, too */
+    if(isServer){
+        SSL_CTX_set_client_CA_list(sslContext, SSL_load_client_CA_file(certfile));
+    }
+#endif
+    return 0;
+}
+
+int sslutil_accept(int fd)
+{
+int     err;
+
+    if(ssl != NULL){
+        DEBUG(0, ("SSL: internal error: more than one SSL connection (server)\n"));
+        return -1;
+    }
+    if((ssl = SSL_new(sslContext)) == NULL){
+        err = ERR_get_error();
+        DEBUG(0, ("SSL: Error allocating handle: %s\n",
+            ERR_error_string(err, NULL)));
+        return -1;
+    }
+    SSL_set_fd(ssl, fd);
+    sslFd = fd;
+    if(SSL_accept(ssl) <= 0){
+        err = ERR_get_error();
+        DEBUG(0, ("SSL: Error accepting on socket: %s\n",
+            ERR_error_string(err, NULL)));
+        return -1;
+    }
+    DEBUG(0, ("SSL: negotiated cipher: %s\n", SSL_get_cipher(ssl)));
+    return 0;
+}
+
+int sslutil_fd_is_ssl(int fd)
+{
+    return fd == sslFd;
+}
+
+int sslutil_connect(int fd)
+{
+int     err;
+
+    if(ssl != NULL){
+        DEBUG(0, ("SSL: internal error: more than one SSL connection (client)\n"));
+        return -1;
+    }
+    if((ssl = SSL_new(sslContext)) == NULL){
+        err = ERR_get_error();
+        DEBUG(0, ("SSL: Error allocating handle: %s\n",
+            ERR_error_string(err, NULL)));
+        return -1;
+    }
+    SSL_set_fd(ssl, fd);
+    sslFd = fd;
+    if(SSL_connect(ssl) <= 0){
+        err = ERR_get_error();
+        DEBUG(0, ("SSL: Error conencting socket: %s\n",
+            ERR_error_string(err, NULL)));
+        return -1;
+    }
+    DEBUG(0, ("SSL: negotiated cipher: %s\n", SSL_get_cipher(ssl)));
+    return 0;
+}
+
+int sslutil_disconnect(int fd)
+{
+    if(fd == sslFd && ssl != NULL){
+        SSL_free(ssl);
+        ssl = NULL;
+        sslFd = -1;
+    }
+    return 0;
+}
+
+int sslutil_negotiate_ssl(int fd, int msg_type)
+{
+unsigned char   buf[5] = {0x83, 0, 0, 1, 0x81};
+char            *reqHosts, *resignHosts;
+
+    reqHosts = lp_ssl_hosts();
+    resignHosts = lp_ssl_hosts_resign();
+    if(!allow_access(resignHosts, reqHosts, get_socket_name(fd), get_socket_addr(fd))){
+        sslEnabled = False;
+        return 0;
+    }
+    if(msg_type != 0x81){ /* first packet must be a session request */
+        DEBUG( 0, ( "Client %s did not use session setup; access denied\n",
+                     client_addr() ) );
+        if (!send_smb(fd, (char *)buf))
+          DEBUG(0, ("sslutil_negotiate_ssl: send_smb failed.\n"));
+        return -1;
+    }
+    buf[4] = 0x8e;  /* negative session response: use SSL */
+    if (!send_smb(fd, (char *)buf)) {
+        DEBUG(0,("sslutil_negotiate_ssl: send_smb failed.\n"));
+        return -1;
+    }
+    if(sslutil_accept(fd) != 0){
+        DEBUG( 0, ( "Client %s failed SSL negotiation!\n", client_addr() ) );
+        return -1;
+    }
+    return 1;
+}
+
+#else /* WITH_SSL */
+ void ssl_dummy(void);
+ void ssl_dummy(void) {;} /* So some compilers don't complain. */
+#endif  /* WITH_SSL */
index de65cda2d09b21d958a0a4359fef8efde3c0a294..a66c029286338e83ced354241ca853fd2ecf51a8 100644 (file)
@@ -30,26 +30,19 @@ extern int global_oplock_break;
 extern uint32 global_client_caps;
 extern pstring global_myname;
 
-#define get_file_size(sbuf) (sbuf.st_size)
-
 /* given a stat buffer return the allocated size on disk, taking into
    account sparse files */
-SMB_OFF_T get_allocation_size(files_struct *fsp, SMB_STRUCT_STAT *sbuf)
+SMB_OFF_T get_allocation_size(SMB_STRUCT_STAT *sbuf)
 {
        SMB_OFF_T ret;
-#if defined(HAVE_STAT_ST_BLKSIZE) && defined(HAVE_STAT_ST_BLOCKS)
        ret = sbuf->st_blksize * (SMB_OFF_T)sbuf->st_blocks;
-#elif defined(HAVE_STAT_ST_BLOCKS) && defined(STAT_ST_BLOCKSIZE)
-       ret = (SMB_OFF_T)STAT_ST_BLOCKSIZE * (SMB_OFF_T)sbuf->st_blocks;
-#else
-       ret = get_file_size(*sbuf);
-#endif
-       if (!ret && fsp && fsp->initial_allocation_size)
-               ret = fsp->initial_allocation_size;
-       ret = SMB_ROUNDUP(ret,SMB_ROUNDUP_ALLOCATION_SIZE);
+       ret = SMB_ROUNDUP_ALLOCATION(ret);
        return ret;
 }
 
+#define get_file_size(sbuf) (sbuf.st_size)
+
+
 /****************************************************************************
   Send the required number of replies back.
   We assume all fields other than the data fields are
@@ -586,7 +579,7 @@ static BOOL get_lanman2_dir_entry(connection_struct *conn,
                        }
 
                        file_size = get_file_size(sbuf);
-                       allocation_size = get_allocation_size(NULL,&sbuf);
+                       allocation_size = get_allocation_size(&sbuf);
                        mdate = sbuf.st_mtime;
                        adate = sbuf.st_atime;
                        cdate = get_create_time(&sbuf,lp_fake_dir_create_times(SNUM(conn)));
@@ -667,11 +660,6 @@ static BOOL get_lanman2_dir_entry(connection_struct *conn,
                        SIVAL(p,0,nt_extmode); p += 4;
                        q = p; p += 4;
                        SIVAL(p,0,0); p += 4;
-                       /* Clear the short name buffer. This is
-                        * IMPORTANT as not doing so will trigger
-                        * a Win2k client bug. JRA.
-                        */
-                       memset(p,'\0',26);
                        if (!was_8_3) {
                                pstring mangled_name;
                                pstrcpy(mangled_name, fname);
@@ -763,7 +751,12 @@ static BOOL get_lanman2_dir_entry(connection_struct *conn,
                        SOFF_T(p,0,get_file_size(sbuf));             /* File size 64 Bit */
                        p+= 8;
 
-                       SOFF_T(p,0,get_allocation_size(NULL,&sbuf)); /* Number of bytes used on disk - 64 Bit */
+#if defined(HAVE_STAT_ST_BLOCKS) && defined(STAT_ST_BLOCKSIZE)
+                       SOFF_T(p,0,sbuf.st_blocks*STAT_ST_BLOCKSIZE); /* Number of bytes used on disk - 64 Bit */
+#else
+                       /* Can't get the value - fake it using size. */
+                       SOFF_T(p,0,get_file_size(sbuf));             /* Number of bytes used on disk - 64 Bit */
+#endif
                        p+= 8;
 
                        put_long_date(p,sbuf.st_ctime);       /* Creation Time 64 Bit */
@@ -906,11 +899,7 @@ close_if_end = %d requires_resume_key = %d level = %d, max_data_bytes = %d\n",
 
        p = strrchr_m(directory,'/');
        if(p == NULL) {
-               /* Windows and OS/2 systems treat search on the root '\' as if it were '\*' */
-               if((directory[0] == '.') && (directory[1] == '\0'))
-                       pstrcpy(mask,"*");
-               else
-                       pstrcpy(mask,directory);
+               pstrcpy(mask,directory);
                pstrcpy(directory,"./");
        } else {
                pstrcpy(mask,p+1);
@@ -1565,16 +1554,12 @@ static int call_trans2qfilepathinfo(connection_struct *conn,
        BOOL delete_pending = False;
        int len;
        time_t c_time;
-       files_struct *fsp = NULL;
 
        if (!params)
                return ERROR_NT(NT_STATUS_INVALID_PARAMETER);
 
        if (tran_call == TRANSACT2_QFILEINFO) {
-               if (total_params < 4)
-                       return(ERROR_DOS(ERRDOS,ERRinvalidparam));
-
-               fsp = file_fsp(params,0);
+               files_struct *fsp = file_fsp(params,0);
                info_level = SVAL(params,2);
 
                DEBUG(3,("call_trans2qfilepathinfo: TRANSACT2_QFILEINFO: level = %d\n", info_level));
@@ -1672,7 +1657,7 @@ static int call_trans2qfilepathinfo(connection_struct *conn,
        mode = dos_mode(conn,fname,&sbuf);
        fullpathname = fname;
        file_size = get_file_size(sbuf);
-       allocation_size = get_allocation_size(fsp,&sbuf);
+       allocation_size = get_allocation_size(&sbuf);
        if (mode & aDIR)
                file_size = 0;
 
@@ -1857,12 +1842,7 @@ static int call_trans2qfilepathinfo(connection_struct *conn,
                        break;
 
                case SMB_FILE_INTERNAL_INFORMATION:
-                       /* This should be an index number - looks like
-                          dev/ino to me :-) 
-
-                          I think this causes us to fail the IFSKIT
-                          BasicFileInformationTest. -tpot */
-
+                       /* This should be an index number - looks like dev/ino to me :-) */
                        SIVAL(pdata,0,sbuf.st_dev);
                        SIVAL(pdata,4,sbuf.st_ino);
                        data_size = 8;
@@ -1992,7 +1972,12 @@ static int call_trans2qfilepathinfo(connection_struct *conn,
                        SOFF_T(pdata,0,get_file_size(sbuf));             /* File size 64 Bit */
                        pdata += 8;
 
-                       SOFF_T(pdata,0,get_allocation_size(fsp,&sbuf)); /* Number of bytes used on disk - 64 Bit */
+#if defined(HAVE_STAT_ST_BLOCKS) && defined(STAT_ST_BLOCKSIZE)
+                       SOFF_T(pdata,0,sbuf.st_blocks*STAT_ST_BLOCKSIZE); /* Number of bytes used on disk - 64 Bit */
+#else
+                       /* Can't get the value - fake it using size. */
+                       SOFF_T(pdata,0,get_file_size(sbuf));             /* Number of bytes used on disk - 64 Bit */
+#endif
                        pdata += 8;
 
                        put_long_date(pdata,sbuf.st_ctime);       /* Creation Time 64 Bit */
@@ -2349,6 +2334,7 @@ static int call_trans2setfilepathinfo(connection_struct *conn,
 
        switch (info_level) {
                case SMB_INFO_STANDARD:
+               case SMB_INFO_QUERY_EA_SIZE:
                {
                        if (total_data < l1_cbFile+4)
                                return(ERROR_DOS(ERRDOS,ERRinvalidparam));
@@ -2365,9 +2351,6 @@ static int call_trans2setfilepathinfo(connection_struct *conn,
                        break;
                }
 
-               case SMB_INFO_SET_EA:
-                       return(ERROR_DOS(ERRDOS,ERReasnotsupported));
-
                /* XXXX um, i don't think this is right.
                        it's also not in the cifs6.txt spec.
                */
@@ -2429,12 +2412,11 @@ static int call_trans2setfilepathinfo(connection_struct *conn,
                case SMB_SET_FILE_ALLOCATION_INFO:
                {
                        int ret = -1;
-                       SMB_OFF_T allocation_size;
+                       SMB_OFF_T allocation_size = IVAL(pdata,0);
 
                        if (total_data < 8)
                                return(ERROR_DOS(ERRDOS,ERRinvalidparam));
 
-                       allocation_size = IVAL(pdata,0);
 #ifdef LARGE_SMB_OFF_T
                        allocation_size |= (((SMB_OFF_T)IVAL(pdata,4)) << 32);
 #else /* LARGE_SMB_OFF_T */
@@ -2444,9 +2426,6 @@ static int call_trans2setfilepathinfo(connection_struct *conn,
                        DEBUG(10,("call_trans2setfilepathinfo: Set file allocation info for file %s to %.0f\n",
                                        fname, (double)allocation_size ));
 
-                       if (allocation_size)
-                               allocation_size = SMB_ROUNDUP(allocation_size,SMB_ROUNDUP_ALLOCATION_SIZE);
-
                        if(allocation_size != get_file_size(sbuf)) {
                                SMB_STRUCT_STAT new_sbuf;
  
index 2bda26aa510807babafd0a87d1920fc1a1ca1d48..c0bacf8f9105cd753dbe274120d473a6c51cf35f 100644 (file)
@@ -59,26 +59,18 @@ BOOL change_to_guest(void)
 static BOOL check_user_ok(connection_struct *conn, user_struct *vuser,int snum)
 {
        int i;
-       for (i=0;i<conn->vuid_cache.entries && i< VUID_CACHE_SIZE;i++)
-               if (conn->vuid_cache.list[i] == vuser->vuid)
+       for (i=0;i<conn->uid_cache.entries;i++)
+               if (conn->uid_cache.list[i] == vuser->uid)
                        return(True);
 
-       if ((conn->force_user || conn->force_group) 
-           && (conn->vuid != vuser->vuid)) {
-               return False;
-       }
-       
        if (!user_ok(vuser->user.unix_name,snum))
                return(False);
 
-       if (!share_access_check(conn, snum, vuser, conn->read_only ? FILE_READ_DATA : FILE_WRITE_DATA)) {
-               return False;
-       }
-
-       i = conn->vuid_cache.entries % VUID_CACHE_SIZE;
-       conn->vuid_cache.list[i] = vuser->vuid;
+       i = conn->uid_cache.entries % UID_CACHE_SIZE;
+       conn->uid_cache.list[i] = vuser->uid;
 
-       conn->vuid_cache.entries++;
+       if (conn->uid_cache.entries < UID_CACHE_SIZE)
+               conn->uid_cache.entries++;
 
        return(True);
 }
@@ -123,21 +115,27 @@ BOOL change_to_user(connection_struct *conn, uint16 vuid)
 
        snum = SNUM(conn);
 
-       if (conn->force_user) /* security = share sets this too */ {
+       if((vuser != NULL) && !check_user_ok(conn, vuser, snum))
+               return False;
+
+       if (conn->force_user || 
+               conn->admin_user ||
+           (lp_security() == SEC_SHARE)) {
                uid = conn->uid;
                gid = conn->gid;
                current_user.groups = conn->groups;
                current_user.ngroups = conn->ngroups;
                token = conn->nt_user_token;
-       } else if ((vuser) && check_user_ok(conn, vuser, snum)) {
+       } else {
+               if (!vuser) {
+                       DEBUG(2,("change_to_user: Invalid vuid used %d\n",vuid));
+                       return(False);
+               }
                uid = vuser->uid;
                gid = vuser->gid;
                current_user.ngroups = vuser->n_groups;
                current_user.groups  = vuser->groups;
                token = vuser->nt_user_token;
-       } else {
-               DEBUG(2,("change_to_user: Invalid vuid used %d or vuid not permitted access to share.\n",vuid));
-               return False;
        }
 
        /*
@@ -177,11 +175,7 @@ BOOL change_to_user(connection_struct *conn, uint16 vuid)
                if (vuser && vuser->guest)
                        is_guest = True;
 
-               token = create_nt_token(uid, gid, current_user.ngroups, current_user.groups, is_guest);
-               if (!token) {
-                       DEBUG(1, ("change_to_user: create_nt_token failed!\n"));
-                       return False;
-               }
+               token = create_nt_token(uid, gid, current_user.ngroups, current_user.groups, is_guest, NULL);
                must_free_token = True;
        }
        
index bae304096cefcf88be82e1b8500eb8c161665e20..394086dc075502adf57e9c9a4f72946589501d6c 100644 (file)
 
 #include "includes.h"
 
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_VFS
-
-
 /* Check for NULL pointer parameters in vfswrap_* functions */
 
 /* We don't want to have NULL function pointers lying around.  Someone
@@ -192,17 +188,6 @@ SMB_OFF_T vfswrap_lseek(files_struct *fsp, int filedes, SMB_OFF_T offset, int wh
        return result;
 }
 
-ssize_t vfswrap_sendfile(int tofd, struct files_struct *fsp, int fromfd, const DATA_BLOB *hdr,
-                       SMB_OFF_T offset, size_t n)
-{
-       ssize_t result;
-
-       START_PROFILE_BYTES(syscall_sendfile, n);
-       result = sys_sendfile(tofd, fromfd, hdr, offset, n);
-       END_PROFILE(syscall_sendfile);
-       return result;
-}
-
 int vfswrap_rename(connection_struct *conn, const char *old, const char *new)
 {
     int result;
index a0a7b920b8bb47813167b40f63a63e2a95a2c463..a2291eba08f9f20ea68370442482dfbc6ca39037 100644 (file)
 
 #include "includes.h"
 
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_VFS
-
-
 /* Some structures to help us initialise the vfs operations table */
 
 struct vfs_syminfo {
@@ -68,7 +64,6 @@ static struct vfs_ops default_vfs_ops = {
        vfswrap_read,
        vfswrap_write,
        vfswrap_lseek,
-       vfswrap_sendfile,
        vfswrap_rename,
        vfswrap_fsync,
        vfswrap_stat,
@@ -143,7 +138,7 @@ static void vfs_init_default(connection_struct *conn)
   initialise custom vfs hooks
 ****************************************************************************/
 
-BOOL vfs_init_custom(connection_struct *conn, const char *vfs_object)
+static BOOL vfs_init_custom(connection_struct *conn, const char *vfs_object)
 {
        int vfs_version = -1;
        vfs_op_tuple *ops, *(*init_fptr)(int *, const struct vfs_ops *, struct smb_vfs_handle_struct *);
@@ -264,7 +259,6 @@ BOOL smbd_vfs_init(connection_struct *conn)
 /*******************************************************************
  Create vfs_ops reflecting current vfs_opaque_ops
 *******************************************************************/
-
 struct vfs_ops *smb_vfs_get_opaque_ops(void)
 {
   int i;
@@ -303,7 +297,6 @@ BOOL vfs_directory_exist(connection_struct *conn, const char *dname, SMB_STRUCT_
 /*******************************************************************
  vfs getwd wrapper 
 ********************************************************************/
-
 static char *vfs_getwd(connection_struct *conn, char *path)
 {
        return conn->vfs_ops.getwd(conn,path);
index 2370ce3bdd93286d8c86e3f7c410a3e0ad1e37a4..74472854cf21c90a781c32e604ea8053f69c4ba0 100644 (file)
@@ -30,7 +30,6 @@
 #include <errno.h>
 #include <sys/stat.h>
 #include <time.h>
-#include <signal.h>
 #include "tdb.h"
 #include "spinlock.h"
 
index 5bb75ffe07792cd6eb547f0fa78805859588de64..ed75a55e3e9739370c46f091d13481b2443c2989 100644 (file)
@@ -34,7 +34,6 @@
 #include <errno.h>
 #include <sys/mman.h>
 #include <sys/stat.h>
-#include <signal.h>
 #include "tdb.h"
 #include "spinlock.h"
 #else
@@ -161,18 +160,6 @@ struct list_struct {
        */
 };
 
-/***************************************************************
- Allow a caller to set a "alarm" flag that tdb can check to abort
- a blocking lock on SIGALRM.
-***************************************************************/
-
-static sig_atomic_t *palarm_fired;
-
-void tdb_set_lock_alarm(sig_atomic_t *palarm)
-{
-       palarm_fired = palarm;
-}
-
 /* a byte range locking function - return 0 on success
    this functions locks/unlocks 1 byte at the specified offset.
 
@@ -199,8 +186,6 @@ static int tdb_brlock(TDB_CONTEXT *tdb, tdb_off offset,
 
        do {
                ret = fcntl(tdb->fd,lck_type,&fl);
-               if (ret == -1 && errno == EINTR && palarm_fired && *palarm_fired)
-                       break;
        } while (ret == -1 && errno == EINTR);
 
        if (ret == -1) {
@@ -532,20 +517,17 @@ int tdb_printfreelist(TDB_CONTEXT *tdb)
 
        /* read in the freelist top */
        if (ofs_read(tdb, offset, &rec_ptr) == -1) {
-               tdb_unlock(tdb, -1, F_WRLCK);
                return 0;
        }
 
        printf("freelist top=[0x%08x]\n", rec_ptr );
        while (rec_ptr) {
                if (tdb_read(tdb, rec_ptr, (char *)&rec, sizeof(rec), DOCONV()) == -1) {
-                       tdb_unlock(tdb, -1, F_WRLCK);
                        return -1;
                }
 
                if (rec.magic != TDB_FREE_MAGIC) {
                        printf("bad magic 0x%08x in free list\n", rec.magic);
-                       tdb_unlock(tdb, -1, F_WRLCK);
                        return -1;
                }
 
index 42b88aeb161e36f3002782f19031e70e4596d28a..8cc908703f8209f4da251f8f8086c4c920b388d5 100644 (file)
@@ -126,7 +126,6 @@ int tdb_lockall(TDB_CONTEXT *tdb);
 void tdb_unlockall(TDB_CONTEXT *tdb);
 
 /* Low level locking functions: use with care */
-void tdb_set_lock_alarm(sig_atomic_t *palarm);
 int tdb_chainlock(TDB_CONTEXT *tdb, TDB_DATA key);
 int tdb_chainunlock(TDB_CONTEXT *tdb, TDB_DATA key);
 
index 36ba7db918824e31784f834bfec0e55e0bd0d4af..f59f98a90f52306bfe1149bef43a8742ac463413 100644 (file)
@@ -53,7 +53,6 @@
 #include <sys/stat.h>
 #include <sys/time.h>
 #include <ctype.h>
-#include <signal.h>
 #include "tdb.h"
 
 static int failed;
index 9c1dc2761b67d9bb6af9879d798e4d6df89eb662..66642132093c85a10782578f65a20df8377cbc2d 100644 (file)
@@ -30,7 +30,6 @@
 #include <sys/stat.h>
 #include <sys/time.h>
 #include <ctype.h>
-#include <signal.h>
 #include "tdb.h"
 
 static void print_data(TDB_DATA d)
index 89295a3291f6a15d3c34be61f067fbc801dcb153..0741073ce116ffbb49c620e5edb8f6b794e764c6 100644 (file)
@@ -8,7 +8,6 @@
 #include <sys/mman.h>
 #include <sys/stat.h>
 #include <sys/time.h>
-#include <signal.h>
 #include "tdb.h"
 #include <gdbm.h>
 
index f529c6e6eebe51107a8c2965e6024619a86d58ef..ba0fb48957d78cd25cda5f38c1bc89c2e0250a78 100644 (file)
@@ -33,7 +33,6 @@
 #include <sys/stat.h>
 #include <sys/time.h>
 #include <ctype.h>
-#include <signal.h>
 #include "tdb.h"
 
 /* a tdb tool for manipulating a tdb database */
index fb62b13657fe5d380fbef035355fa905d95338b4..101f4071cbb5149f33766c69a7d80a69598514ab 100644 (file)
@@ -785,7 +785,6 @@ static BOOL run_locktest1(int dummy)
        char *fname = "\\lockt1.lck";
        int fnum1, fnum2, fnum3;
        time_t t1, t2;
-       unsigned lock_timeout;
 
        if (!torture_open_connection(&cli1) || !torture_open_connection(&cli2)) {
                return False;
@@ -828,10 +827,9 @@ static BOOL run_locktest1(int dummy)
        }
 
 
-       lock_timeout = (1 + (random() % 20));
-       printf("Testing lock timeout with timeout=%u\n", lock_timeout);
+       printf("Testing lock timeouts\n");
        t1 = time(NULL);
-       if (cli_lock(&cli2, fnum3, 0, 4, lock_timeout * 1000, WRITE_LOCK)) {
+       if (cli_lock(&cli2, fnum3, 0, 4, 10*1000, WRITE_LOCK)) {
                printf("lock3 succeeded! This is a locking bug\n");
                return False;
        } else {
@@ -843,8 +841,6 @@ static BOOL run_locktest1(int dummy)
        if (t2 - t1 < 5) {
                printf("error: This server appears not to support timed lock requests\n");
        }
-       printf("server slept for %u seconds for a %u second timeout\n",
-              (unsigned int)(t2-t1), lock_timeout);
 
        if (!cli_close(&cli1, fnum2)) {
                printf("close1 failed (%s)\n", cli_errstr(&cli1));
@@ -3417,52 +3413,6 @@ static BOOL run_opentest(int dummy)
 
        cli_unlink(&cli1, fname);
 
-       /* Test 8 - attributes test test... */
-       fnum1 = cli_nt_create_full(&cli1, fname,FILE_WRITE_DATA, FILE_ATTRIBUTE_HIDDEN,
-                                  FILE_SHARE_NONE, FILE_OVERWRITE_IF, 0);
-
-       if (fnum1 == -1) {
-               printf("test 8 open 1 of %s failed (%s)\n", fname, cli_errstr(&cli1));
-               return False;
-       }
-
-       if (!cli_close(&cli1, fnum1)) {
-               printf("test 8 close 1 of %s failed (%s)\n", fname, cli_errstr(&cli1));
-               return False;
-       }
-
-       /* FILE_SUPERSEDE && FILE_OVERWRITE_IF have the same effect here. */
-       fnum1 = cli_nt_create_full(&cli1, fname,FILE_READ_DATA, FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL,
-                                  FILE_SHARE_NONE, FILE_OVERWRITE_IF, 0);
-
-       if (fnum1 == -1) {
-               printf("test 8 open 2 of %s failed (%s)\n", fname, cli_errstr(&cli1));
-               return False;
-       }
-
-       if (!cli_close(&cli1, fnum1)) {
-               printf("test 8 close 2 of %s failed (%s)\n", fname, cli_errstr(&cli1));
-               return False;
-       }
-
-       /* This open should fail with ACCESS_DENIED for FILE_SUPERSEDE, FILE_OVERWRITE and FILE_OVERWRITE_IF. */
-       fnum1 = cli_nt_create_full(&cli1, fname,FILE_READ_DATA, FILE_ATTRIBUTE_NORMAL,
-                                  FILE_SHARE_NONE, FILE_OVERWRITE, 0);
-
-       if (fnum1 != -1) {
-               printf("test 8 open 3 of %s succeeded - should have failed with (NT_STATUS_ACCESS_DENIED)\n", fname);
-               correct = False;
-               cli_close(&cli1, fnum1);
-       } else {
-               if (check_error(__LINE__, &cli1, ERRDOS, ERRnoaccess, NT_STATUS_ACCESS_DENIED)) {
-                       printf("correct error code NT_STATUS_ACCESS_DENIED/ERRDOS:ERRnoaccess returned\n");
-               }
-       }
-
-       printf("Attribute open test #8 %s.\n", correct ? "passed" : "failed");
-
-       cli_unlink(&cli1, fname);
-
        if (!torture_close_connection(&cli1)) {
                correct = False;
        }
@@ -3533,105 +3483,6 @@ static BOOL run_dirtest(int dummy)
        return correct;
 }
 
-static void del_fn(file_info *finfo, const char *mask, void *state)
-{
-       struct cli_state *pcli = (struct cli_state *)state;
-       fstring fname;
-       slprintf(fname, sizeof(fname), "\\LISTDIR\\%s", finfo->name);
-
-       if (strcmp(finfo->name, ".") == 0 || strcmp(finfo->name, "..") == 0)
-               return;
-
-       if (finfo->mode & aDIR) {
-               if (!cli_rmdir(pcli, fname))
-                       printf("del_fn: failed to rmdir %s\n,", fname );
-       } else {
-               if (!cli_unlink(pcli, fname))
-                       printf("del_fn: failed to unlink %s\n,", fname );
-       }
-}
-
-static BOOL run_dirtest1(int dummy)
-{
-       int i;
-       static struct cli_state cli;
-       int fnum, num_seen;
-       BOOL correct = True;
-
-       printf("starting directory test\n");
-
-       if (!torture_open_connection(&cli)) {
-               return False;
-       }
-
-       cli_sockopt(&cli, sockops);
-
-       cli_list(&cli, "\\LISTDIR\\*", 0, del_fn, &cli);
-       cli_list(&cli, "\\LISTDIR\\*", aDIR, del_fn, &cli);
-       cli_rmdir(&cli, "\\LISTDIR");
-       cli_mkdir(&cli, "\\LISTDIR");
-
-       /* Create 1000 files and 1000 directories. */
-       for (i=0;i<1000;i++) {
-               fstring fname;
-               slprintf(fname, sizeof(fname), "\\LISTDIR\\f%d", i);
-               fnum = cli_nt_create_full(&cli, fname, GENERIC_ALL_ACCESS, FILE_ATTRIBUTE_ARCHIVE,
-                                  FILE_SHARE_READ|FILE_SHARE_WRITE, FILE_OVERWRITE_IF, 0);
-               if (fnum == -1) {
-                       fprintf(stderr,"Failed to open %s\n", fname);
-                       return False;
-               }
-               cli_close(&cli, fnum);
-       }
-       for (i=0;i<1000;i++) {
-               fstring fname;
-               slprintf(fname, sizeof(fname), "\\LISTDIR\\d%d", i);
-               if (!cli_mkdir(&cli, fname)) {
-                       fprintf(stderr,"Failed to open %s\n", fname);
-                       return False;
-               }
-       }
-
-       /* Now ensure that doing an old list sees both files and directories. */
-       num_seen = cli_list_old(&cli, "\\LISTDIR\\*", aDIR, list_fn, NULL);
-       printf("num_seen = %d\n", num_seen );
-       /* We should see 100 files + 1000 directories + . and .. */
-       if (num_seen != 2002)
-               correct = False;
-
-       /* Ensure if we have the "must have" bits we only see the
-        * relevent entries.
-        */
-       num_seen = cli_list_old(&cli, "\\LISTDIR\\*", (aDIR<<8)|aDIR, list_fn, NULL);
-       printf("num_seen = %d\n", num_seen );
-       if (num_seen != 1002)
-               correct = False;
-
-       num_seen = cli_list_old(&cli, "\\LISTDIR\\*", (aARCH<<8)|aDIR, list_fn, NULL);
-       printf("num_seen = %d\n", num_seen );
-       if (num_seen != 1000)
-               correct = False;
-
-       /* Delete everything. */
-       cli_list(&cli, "\\LISTDIR\\*", 0, del_fn, &cli);
-       cli_list(&cli, "\\LISTDIR\\*", aDIR, del_fn, &cli);
-       cli_rmdir(&cli, "\\LISTDIR");
-
-#if 0
-       printf("Matched %d\n", cli_list(&cli, "a*.*", 0, list_fn, NULL));
-       printf("Matched %d\n", cli_list(&cli, "b*.*", 0, list_fn, NULL));
-       printf("Matched %d\n", cli_list(&cli, "xyzabc", 0, list_fn, NULL));
-#endif
-
-       if (!torture_close_connection(&cli)) {
-               correct = False;
-       }
-
-       printf("finished dirtest1\n");
-
-       return correct;
-}
-
 static BOOL run_error_map_extract(int dummy) {
        
        static struct cli_state c_dos;
@@ -3860,7 +3711,6 @@ static struct {
        {"OPLOCK2",  run_oplock2, 0},
        {"OPLOCK3",  run_oplock3, 0},
        {"DIR",  run_dirtest, 0},
-       {"DIR1",  run_dirtest1, 0},
        {"DENY1",  torture_denytest1, 0},
        {"DENY2",  torture_denytest2, 0},
        {"TCON",  run_tcon_test, 0},
@@ -4013,7 +3863,6 @@ static void usage(void)
        argc--;
        argv++;
 
-       srandom(time(NULL));
 
        fstrcpy(workgroup, lp_workgroup());
 
index 800aeded0a607bb4ee8693fa7af964105d215e34..fc7094bcf770a873f4d09c8839f38178dd45c874 100644 (file)
@@ -329,74 +329,6 @@ static int net_file(int argc, const char **argv)
        return net_rap_file(argc, argv);
 }
 
-/*
- Retrieve our local SID or the SID for the specified name
- */
-static int net_getlocalsid(int argc, const char **argv)
-{
-        DOM_SID sid;
-       const char *name;
-       fstring sid_str;
-
-       if (argc >= 1) {
-               name = argv[0];
-        }
-       else {
-               name = global_myname;
-       }
-
-       if (!secrets_fetch_domain_sid(name, &sid)) {
-               DEBUG(0, ("Can't fetch domain SID for name: %s\n", name));      
-               return 1;
-       }
-       sid_to_string(sid_str, &sid);
-       d_printf("SID for domain %s is: %s\n", name, sid_str);
-       return 0;
-}
-
-static int net_setlocalsid(int argc, const char **argv)
-{
-       DOM_SID sid;
-
-       if ( (argc != 1)
-            || (strncmp(argv[0], "S-1-5-21-", strlen("S-1-5-21-")) != 0)
-            || (!string_to_sid(&sid, argv[0]))
-            || (sid.num_auths != 4)) {
-               d_printf("usage: net setlocalsid S-1-5-21-x-y-z\n");
-               return 1;
-       }
-
-       if (!secrets_store_domain_sid(global_myname, &sid)) {
-               DEBUG(0,("Can't store domain SID as a pdc/bdc.\n"));
-               return 1;
-       }
-
-       return 0;
-}
-
-static int net_getdomainsid(int argc, const char **argv)
-{
-       DOM_SID domain_sid;
-       fstring sid_str;
-
-       if (!secrets_fetch_domain_sid(global_myname, &domain_sid)) {
-               d_printf("Could not fetch local SID\n");
-               return 1;
-       }
-       sid_to_string(sid_str, &domain_sid);
-       d_printf("SID for domain %s is: %s\n", global_myname, sid_str);
-
-       if (!secrets_fetch_domain_sid(lp_workgroup(), &domain_sid)) {
-               d_printf("Could not fetch domain SID\n");
-               return 1;
-       }
-
-       sid_to_string(sid_str, &domain_sid);
-       d_printf("SID for domain %s is: %s\n", lp_workgroup(), sid_str);
-
-       return 0;
-}
-
 /* main function table */
 static struct functable net_func[] = {
        {"RPC", net_rpc},
@@ -420,10 +352,6 @@ static struct functable net_func[] = {
        {"TIME", net_time},
        {"LOOKUP", net_lookup},
        {"JOIN", net_join},
-       {"CACHE", net_cache},
-       {"GETLOCALSID", net_getlocalsid},
-       {"SETLOCALSID", net_setlocalsid},
-       {"GETDOMAINSID", net_getdomainsid},
 
        {"HELP", net_help},
        {NULL, NULL}
@@ -463,7 +391,7 @@ static struct functable net_func[] = {
                {"force",       'f', POPT_ARG_NONE,   &opt_force},
                {"timeout",     't', POPT_ARG_INT,    &opt_timeout},
                {"machine-pass",'P', POPT_ARG_NONE,   &opt_machine_pass},
-               {"debuglevel",  'D', POPT_ARG_STRING, &debuglevel},
+               { NULL, 0, POPT_ARG_INCLUDE_TABLE, popt_common_debug },
                { 0, 0, 0, 0}
        };
 
@@ -541,7 +469,7 @@ static struct functable net_func[] = {
        if (!*global_myname) {
                char *p2;
 
-               pstrcpy(global_myname, myhostname());
+               fstrcpy(global_myname, myhostname());
                p2 = strchr_m(global_myname, '.');
                if (p2) 
                         *p2 = 0;
index af290ce83c6bc239a60310d8ac8709a3664d28a5..ad405fe68c32fb46063fcabe0ca7c51db498a399 100644 (file)
@@ -56,31 +56,6 @@ int net_ads_usage(int argc, const char **argv)
 }
 
 
-/*
-  this implements the CLDAP based netlogon lookup requests
-  for finding the domain controller of a ADS domain
-*/
-static int net_ads_lookup(int argc, const char **argv)
-{
-       ADS_STRUCT *ads;
-
-       ads = ads_init(NULL, NULL, opt_host);
-       if (ads) {
-               ads->auth.flags |= ADS_AUTH_NO_BIND;
-       }
-
-       ads_connect(ads);
-
-       if (!ads || !ads->config.realm) {
-               d_printf("Didn't find the cldap server!\n");
-               return -1;
-       }
-
-       return ads_cldap_netlogon(ads);
-}
-
-
-
 static int net_ads_info(int argc, const char **argv)
 {
        ADS_STRUCT *ads;
@@ -88,7 +63,7 @@ static int net_ads_info(int argc, const char **argv)
        ads = ads_init(NULL, NULL, opt_host);
 
        if (ads) {
-               ads->auth.flags |= ADS_AUTH_NO_BIND;
+               ads->auth.no_bind = 1;
        }
 
        ads_connect(ads);
@@ -103,7 +78,6 @@ static int net_ads_info(int argc, const char **argv)
        d_printf("Realm: %s\n", ads->config.realm);
        d_printf("Bind Path: %s\n", ads->config.bind_path);
        d_printf("LDAP port: %d\n", ads->ldap_port);
-       d_printf("Server time: %s\n", http_timestring(ads->config.current_time));
 
        return 0;
 }
@@ -200,7 +174,7 @@ static int net_ads_workgroup(int argc, const char **argv)
 
 
 
-static BOOL usergrp_display(char *field, void **values, void *data_area)
+static void usergrp_display(char *field, void **values, void *data_area)
 {
        char **disp_fields = (char **) data_area;
 
@@ -214,16 +188,15 @@ static BOOL usergrp_display(char *field, void **values, void *data_area)
                }
                SAFE_FREE(disp_fields[0]);
                SAFE_FREE(disp_fields[1]);
-               return True;
+               return;
        }
        if (!values) /* must be new field, indicate string field */
-               return True;
+               return;
        if (StrCaseCmp(field, "sAMAccountName") == 0) {
                disp_fields[0] = strdup((char *) values[0]);
        }
        if (StrCaseCmp(field, "description") == 0)
                disp_fields[1] = strdup((char *) values[0]);
-       return True;
 }
 
 static int net_ads_user_usage(int argc, const char **argv)
@@ -272,7 +245,7 @@ static int ads_user_add(int argc, const char **argv)
 
        /* try setting the password */
        asprintf(&upn, "%s@%s", argv[0], ads->config.realm);
-       status = krb5_set_password(ads->auth.kdc_server, upn, argv[1], ads->auth.time_offset);
+       status = krb5_set_password(ads->auth.kdc_server, upn, argv[1]);
        safe_free(upn);
        if (ADS_ERR_OK(status)) {
                d_printf("User %s added\n", argv[0]);
@@ -637,7 +610,7 @@ int net_ads_join(int argc, const char **argv)
        rc = ads_search_dn(ads, &res, dn, NULL);
        ads_msgfree(ads, res);
 
-       if (rc.error_type == ADS_ERROR_LDAP && rc.err.rc == LDAP_NO_SUCH_OBJECT) {
+       if (rc.error_type == ADS_ERROR_LDAP && rc.rc == LDAP_NO_SUCH_OBJECT) {
                d_printf("ads_join_realm: organizational unit %s does not exist (dn:%s)\n", 
                         org_unit, dn);
                return -1;
@@ -655,15 +628,15 @@ int net_ads_join(int argc, const char **argv)
                return -1;
        }
 
-       rc = ads_domain_sid(ads, &dom_sid);
+       rc = ads_set_machine_password(ads, global_myname, password);
        if (!ADS_ERR_OK(rc)) {
-               d_printf("ads_domain_sid: %s\n", ads_errstr(rc));
+               d_printf("ads_set_machine_password: %s\n", ads_errstr(rc));
                return -1;
        }
 
-       rc = ads_set_machine_password(ads, global_myname, password);
+       rc = ads_domain_sid(ads, &dom_sid);
        if (!ADS_ERR_OK(rc)) {
-               d_printf("ads_set_machine_password: %s\n", ads_errstr(rc));
+               d_printf("ads_domain_sid: %s\n", ads_errstr(rc));
                return -1;
        }
 
@@ -883,7 +856,7 @@ static int net_ads_password(int argc, const char **argv)
     new_password = getpass(prompt);
 
     ret = kerberos_set_password(ads->auth.kdc_server, auth_principal, 
-                               auth_password, argv[0], new_password, ads->auth.time_offset);
+                               auth_password, argv[0], new_password);
     if (!ADS_ERR_OK(ret)) {
        d_printf("Password change failed :-( ...\n");
        ads_destroy(&ads);
@@ -1036,7 +1009,6 @@ int net_ads(int argc, const char **argv)
                {"PRINTER", net_ads_printer},
                {"SEARCH", net_ads_search},
                {"WORKGROUP", net_ads_workgroup},
-               {"LOOKUP", net_ads_lookup},
                {"HELP", net_ads_help},
                {NULL, NULL}
        };
index 262670cb2a3b2d4b7df45a27b3c3054943886039..ab3eac4b434775bf8cc79d80df0f5862cf48f854 100644 (file)
@@ -58,7 +58,7 @@ static int help_usage(int argc, const char **argv)
 "\n"\
 "Valid functions are:\n"\
 "  RPC RAP ADS FILE SHARE SESSION SERVER DOMAIN PRINTQ USER GROUP VALIDATE\n"\
-"  GROUPMEMBER ADMIN SERVICE PASSWORD TIME LOOKUP GETLOCALSID SETLOCALSID\n");
+"  GROUPMEMBER ADMIN SERVICE PASSWORD TIME LOOKUP\n");
        return -1;
 }
 
@@ -135,9 +135,6 @@ static int net_usage(int argc, const char **argv)
                 "  net user\t\tto manage users\n"\
                 "  net group\t\tto manage groups\n"\
                 "  net join\t\tto join a domain\n"\
-                "  net cache\t\tto operate on cache tdb file\n"\
-                "  net getlocalsid [NAME]\tto get the SID for local name\n"\
-                "  net setlocalsid SID\tto set the local domain SID\n"\
                 "\n"\
                 "  net ads <command>\tto run ADS commands\n"\
                 "  net rap <command>\tto run RAP (pre-RPC) commands\n"\
index 8b8278b053e616b162cd95fd667f3ced8b3ac9ae..55e8a497ccae1978b5642ac68bc2744d2d96dbc5 100644 (file)
@@ -178,7 +178,7 @@ static int run_rpc_command(struct cli_state *cli_arg, const char *pipe_name, int
 /** 
  * Force a change of the trust acccount password.
  *
- * All parameters are provided by the run_rpc_command function, except for
+ * All paramaters are provided by the run_rpc_command funcion, except for
  * argc, argv which are passes through. 
  *
  * @param domain_sid The domain sid aquired from the remote server
@@ -224,7 +224,7 @@ static int rpc_changetrustpw(int argc, const char **argv)
  *
  * The password should be created with 'server manager' or eqiv first.
  *
- * All parameters are provided by the run_rpc_command function, except for
+ * All paramaters are provided by the run_rpc_command funcion, except for
  * argc, argv which are passes through. 
  *
  * @param domain_sid The domain sid aquired from the remote server
@@ -243,7 +243,6 @@ static NTSTATUS rpc_join_oldstyle_internals(const DOM_SID *domain_sid, struct cl
        extern pstring global_myname;
        fstring trust_passwd;
        unsigned char orig_trust_passwd_hash[16];
-       NTSTATUS result;
 
        fstrcpy(trust_passwd, global_myname);
        strlower(trust_passwd);
@@ -257,12 +256,7 @@ static NTSTATUS rpc_join_oldstyle_internals(const DOM_SID *domain_sid, struct cl
 
        E_md4hash(trust_passwd, orig_trust_passwd_hash);
 
-       result = trust_pw_change_and_store_it(cli, mem_ctx, orig_trust_passwd_hash);
-
-       if (NT_STATUS_IS_OK(result))
-               printf("Joined domain %s.\n",lp_workgroup());
-
-       return result;
+       return trust_pw_change_and_store_it(cli, mem_ctx, orig_trust_passwd_hash);
 }
 
 /** 
@@ -325,7 +319,7 @@ int net_rpc_join(int argc, const char **argv)
 /** 
  * display info about a rpc domain
  *
- * All parameters are provided by the run_rpc_command function, except for
+ * All paramaters are provided by the run_rpc_command function, except for
  * argc, argv which are passes through. 
  *
  * @param domain_sid The domain sid acquired from the remote server
@@ -345,9 +339,6 @@ rpc_info_internals(const DOM_SID *domain_sid, struct cli_state *cli,
        POLICY_HND connect_pol, domain_pol;
        NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
        SAM_UNK_CTR ctr;
-       fstring sid_str;
-
-       sid_to_string(sid_str, domain_sid);
 
        /* Get sam policy handle */     
        result = cli_samr_connect(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS, 
@@ -370,7 +361,6 @@ rpc_info_internals(const DOM_SID *domain_sid, struct cli_state *cli,
        if (NT_STATUS_IS_OK(result)) {
                TALLOC_CTX *ctx = talloc_init();
                d_printf("Domain Name: %s\n", unistr2_tdup(ctx, &ctr.info.inf2.uni_domain));
-               d_printf("Domain SID: %s\n", sid_str);
                d_printf("Sequence number: %u\n", ctr.info.inf2.seq_num);
                d_printf("Num users: %u\n", ctr.info.inf2.num_domain_usrs);
                d_printf("Num domain groups: %u\n", ctr.info.inf2.num_domain_grps);
@@ -397,53 +387,6 @@ int net_rpc_info(int argc, const char **argv)
 }
 
 
-/** 
- * Fetch domain SID into the local secrets.tdb
- *
- * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passes through. 
- *
- * @param domain_sid The domain sid acquired from the remote server
- * @param cli A cli_state connected to the server.
- * @param mem_ctx Talloc context, destoyed on completion of the function.
- * @param argc  Standard main() style argc
- * @param argv  Standard main() style argv.  Initial components are already
- *              stripped
- *
- * @return Normal NTSTATUS return.
- **/
-
-static NTSTATUS 
-rpc_getsid_internals(const DOM_SID *domain_sid, struct cli_state *cli,
-                  TALLOC_CTX *mem_ctx, int argc, const char **argv)
-{
-       fstring sid_str;
-
-       sid_to_string(sid_str, domain_sid);
-       d_printf("Storing SID %s for Domain %s in secrets.tdb\n",
-                sid_str, lp_workgroup());
-
-       if (!secrets_store_domain_sid(global_myname, domain_sid)) {
-               DEBUG(0,("Can't store domain SID\n"));
-               return NT_STATUS_UNSUCCESSFUL;
-       }
-
-       return NT_STATUS_OK;
-}
-
-
-/** 
- * 'net rpc getsid' entrypoint.
- * @param argc  Standard main() style argc
- * @param argc  Standard main() style argv.  Initial components are already
- *              stripped
- **/
-int net_rpc_getsid(int argc, const char **argv) 
-{
-       return run_rpc_command(NULL, PIPE_SAMR, NET_FLAGS_ANONYMOUS | NET_FLAGS_PDC, 
-                              rpc_getsid_internals,
-                              argc, argv);
-}
 
 
 /****************************************************************************/
@@ -463,7 +406,7 @@ static int rpc_user_usage(int argc, const char **argv)
 /** 
  * Add a new user to a remote RPC server
  *
- * All parameters are provided by the run_rpc_command function, except for
+ * All paramaters are provided by the run_rpc_command funcion, except for
  * argc, argv which are passes through. 
  *
  * @param domain_sid The domain sid acquired from the remote server
@@ -551,7 +494,7 @@ static int rpc_user_add(int argc, const char **argv)
 /** 
  * Delete a user from a remote RPC server
  *
- * All parameters are provided by the run_rpc_command function, except for
+ * All paramaters are provided by the run_rpc_command funcion, except for
  * argc, argv which are passes through. 
  *
  * @param domain_sid The domain sid acquired from the remote server
@@ -652,7 +595,7 @@ static int rpc_user_delete(int argc, const char **argv)
 /** 
  * List user's groups on a remote RPC server
  *
- * All parameters are provided by the run_rpc_command function, except for
+ * All paramaters are provided by the run_rpc_command funcion, except for
  * argc, argv which are passes through. 
  *
  * @param domain_sid The domain sid acquired from the remote server
@@ -754,7 +697,7 @@ static int rpc_user_info(int argc, const char **argv)
 /** 
  * List users on a remote RPC server
  *
- * All parameters are provided by the run_rpc_command function, except for
+ * All paramaters are provided by the run_rpc_command function, except for
  * argc, argv which are passes through. 
  *
  * @param domain_sid The domain sid acquired from the remote server
@@ -868,7 +811,7 @@ static int rpc_group_usage(int argc, const char **argv)
 /** 
  * List groups on a remote RPC server
  *
- * All parameters are provided by the run_rpc_command function, except for
+ * All paramaters are provided by the run_rpc_command funcion, except for
  * argc, argv which are passes through. 
  *
  * @param domain_sid The domain sid acquired from the remote server
@@ -1011,7 +954,7 @@ static int rpc_share_usage(int argc, const char **argv)
 /** 
  * Add a share on a remote RPC server
  *
- * All parameters are provided by the run_rpc_command function, except for
+ * All paramaters are provided by the run_rpc_command function, except for
  * argc, argv which are passes through. 
  *
  * @param domain_sid The domain sid acquired from the remote server
@@ -1059,7 +1002,7 @@ static int rpc_share_add(int argc, const char **argv)
 /** 
  * Delete a share on a remote RPC server
  *
- * All parameters are provided by the run_rpc_command function, except for
+ * All paramaters are provided by the run_rpc_command function, except for
  * argc, argv which are passes through. 
  *
  * @param domain_sid The domain sid acquired from the remote server
@@ -1127,7 +1070,7 @@ static void display_share_info_1(SRV_SHARE_INFO_1 *info1)
 /** 
  * List shares on a remote RPC server
  *
- * All parameters are provided by the run_rpc_command function, except for
+ * All paramaters are provided by the run_rpc_command function, except for
  * argc, argv which are passes through. 
  *
  * @param domain_sid The domain sid acquired from the remote server
@@ -1204,7 +1147,7 @@ static int rpc_file_usage(int argc, const char **argv)
 /** 
  * Close a file on a remote RPC server
  *
- * All parameters are provided by the run_rpc_command function, except for
+ * All paramaters are provided by the run_rpc_command function, except for
  * argc, argv which are passes through. 
  *
  * @param domain_sid The domain sid acquired from the remote server
@@ -1267,7 +1210,7 @@ static void display_file_info_3(FILE_INFO_3 *info3, FILE_INFO_3_STR *str3)
 /** 
  * List open files on a remote RPC server
  *
- * All parameters are provided by the run_rpc_command function, except for
+ * All paramaters are provided by the run_rpc_command funcion, except for
  * argc, argv which are passes through. 
  *
  * @param domain_sid The domain sid acquired from the remote server
@@ -1371,7 +1314,7 @@ int net_rpc_file(int argc, const char **argv)
 /** 
  * ABORT the shutdown of a remote RPC Server
  *
- * All parameters are provided by the run_rpc_command function, except for
+ * All paramaters are provided by the run_rpc_command function, except for
  * argc, argv which are passed through. 
  *
  * @param domain_sid The domain sid aquired from the remote server
@@ -1419,7 +1362,7 @@ static int rpc_shutdown_abort(int argc, const char **argv)
 /** 
  * Shut down a remote RPC Server
  *
- * All parameters are provided by the run_rpc_command function, except for
+ * All paramaters are provided by the run_rpc_command funcion, except for
  * argc, argv which are passes through. 
  *
  * @param domain_sid The domain sid aquired from the remote server
@@ -1971,12 +1914,6 @@ static int rpc_trustdom_list(int argc, const char **argv)
                        
                        d_printf("%s%s%s\n", trusted_dom_names[i], padding, ascii_sid);
                };
-               
-               /*
-                * in case of no trusted domains say something rather
-                * than just display blank line
-                */
-               if (!num_domains) d_printf("none\n");
 
        } while (NT_STATUS_EQUAL(nt_status, STATUS_MORE_ENTRIES));
 
@@ -2081,8 +2018,6 @@ static int rpc_trustdom_list(int argc, const char **argv)
                        };
                };
                
-               if (!num_domains) d_printf("none\n");
-               
        } while (NT_STATUS_EQUAL(nt_status, STATUS_MORE_ENTRIES));
 
        /* close opened samr and domain policy handles */
@@ -2148,7 +2083,7 @@ BOOL net_rpc_check(unsigned flags)
 
        /* flags (i.e. server type) may depend on command */
        if (!net_find_server(flags, &server_ip, &server_name))
-               return False;
+               goto done;
 
        ZERO_STRUCT(cli);
        if (cli_initialise(&cli) == False)
@@ -2185,13 +2120,12 @@ int net_rpc_usage(int argc, const char **argv)
 {
        d_printf("  net rpc info \t\t\tshow basic info about a domain \n");
        d_printf("  net rpc join \t\t\tto join a domain \n");
-       d_printf("  net rpc testjoin \t\ttests that a join is valid\n");
+       d_printf("  net rpc testjoin \t\t\ttests that a join is valid\n");
        d_printf("  net rpc user \t\t\tto add, delete and list users\n");
        d_printf("  net rpc group \t\tto list groups\n");
        d_printf("  net rpc share \t\tto add, delete, and list shares\n");
        d_printf("  net rpc file \t\t\tto list open files\n");
        d_printf("  net rpc changetrustpw \tto change the trust account password\n");
-       d_printf("  net rpc getsid \t\tfetch the domain sid into the local secrets.tdb\n");
        d_printf("  net rpc trustdom \t\tto create trusting domain's account\n"
                 "\t\t\t\t\tor establish trust\n");
        d_printf("  net rpc abortshutdown \tto abort the shutdown of a remote server\n");
@@ -2258,9 +2192,6 @@ int net_rpc(int argc, const char **argv)
                {"trustdom", rpc_trustdom},
                {"abortshutdown", rpc_shutdown_abort},
                {"shutdown", rpc_shutdown},
-               {"samdump", rpc_samdump},
-               {"vampire", rpc_vampire},
-               {"getsid", net_rpc_getsid},
                {"help", net_rpc_help},
                {NULL, NULL}
        };
index b08095f1ccb67dcbb4a65dd3d4a13569a70a0732..c8be93c39cc5131ee605489118f267ae5131a83e 100644 (file)
@@ -49,7 +49,6 @@ int net_rpc_join_ok(const char *domain)
        int retval = 1;
        uint32 channel;
        NTSTATUS result;
-       uint32 neg_flags = 0x000001ff;
 
        /* Connect to remote machine */
        if (!(cli = net_make_ipc_connection(NET_FLAGS_ANONYMOUS | NET_FLAGS_PDC))) {
@@ -76,7 +75,7 @@ int net_rpc_join_ok(const char *domain)
 
        CHECK_RPC_ERR(cli_nt_setup_creds(cli, 
                                         channel,
-                                        stored_md4_trust_password, &neg_flags, 2),
+                                        stored_md4_trust_password),
                          "error in domain join verification");
        
        retval = 0;             /* Success! */
index 7c61e6d8be453e3d81c77ace79b9caabcef9785a..51dbbb98c06feab2c21995b77ec4a2b5a79e94c0 100644 (file)
@@ -508,17 +508,6 @@ int main (int argc, char **argv)
                exit(1);
        }
 
-       if (!*global_myname) {
-               char *p2;
-
-               pstrcpy(global_myname, myhostname());
-               p2 = strchr_m(global_myname, '.');
-               if (p2) 
-                        *p2 = 0;
-       }
-       
-       strupper(global_myname);
-
        setparms =      (config_file ? BIT_CONFIGFILE : 0) +
                        (new_debuglevel ? BIT_DEBUGLEVEL : 0) +
                        (backend ? BIT_BACKEND : 0) +
@@ -555,7 +544,7 @@ int main (int argc, char **argv)
        /* the lowest bit options are always accepted */
        checkparms = setparms & ~MASK_ALWAYS_GOOD;
 
-       /* accounpolicy operations */
+       /* accoun tpolicy operations */
        if ((checkparms & BIT_ACCPOLICY) && !(checkparms & ~(BIT_ACCPOLICY + BIT_ACCPOLVAL))) {
                uint32 value;
                int field = account_policy_name_to_fieldnum(account_policy);
index 5401755376df7e4569d00b59e2d00369f8226739..2d78b21dcc8a8be234250d1756f825a91d7429e3 100644 (file)
@@ -42,7 +42,6 @@ static struct {
        {"dmalloc-mark", MSG_REQ_DMALLOC_MARK },
        {"dmalloc-log-changed", MSG_REQ_DMALLOC_LOG_CHANGED },
        {"shutdown", MSG_SHUTDOWN },
-       {"change_id", MSG_PRINTER_DRVUPGRADE},
        {NULL, -1}
 };
 
@@ -554,10 +553,6 @@ static BOOL do_command(char *dest, char *msg_name, int iparams, char **params)
                if (!send_message(dest, MSG_SHUTDOWN, NULL, 0, False))
                        return False;
                break;
-       case MSG_PRINTER_DRVUPGRADE:
-               if (!send_message(dest, MSG_PRINTER_DRVUPGRADE, params[0], 0, False))
-                       return False;
-               break;
        }
 
        return (True);
index 75a4319cb965797c7fea04b0d87444442bdf44a2..98993676c98637fe3a90535c8fbbe116d9f05d44 100644 (file)
@@ -217,23 +217,23 @@ static int process_options(int argc, char **argv, int local_flags)
 *************************************************************/
 static char *stdin_new_passwd(void)
 {
-       static fstring new_pw;
+       static fstring new_passwd;
        size_t len;
 
-       ZERO_ARRAY(new_pw);
+       ZERO_ARRAY(new_passwd);
 
        /*
         * if no error is reported from fgets() and string at least contains
         * the newline that ends the password, then replace the newline with
         * a null terminator.
         */
-       if ( fgets(new_pw, sizeof(new_pw), stdin) != NULL) {
-               if ((len = strlen(new_pw)) > 0) {
-                       if(new_pw[len-1] == '\n')
-                               new_pw[len - 1] = 0; 
+       if ( fgets(new_passwd, sizeof(new_passwd), stdin) != NULL) {
+               if ((len = strlen(new_passwd)) > 0) {
+                       if(new_passwd[len-1] == '\n')
+                               new_passwd[len - 1] = 0; 
                }
        }
-       return(new_pw);
+       return(new_passwd);
 }
 
 
@@ -259,20 +259,20 @@ static char *get_pass( char *prompt, BOOL stdin_get)
 static char *prompt_for_new_password(BOOL stdin_get)
 {
        char *p;
-       fstring new_pw;
+       fstring new_passwd;
 
-       ZERO_ARRAY(new_pw);
+       ZERO_ARRAY(new_passwd);
  
        p = get_pass("New SMB password:", stdin_get);
 
-       fstrcpy(new_pw, p);
+       fstrcpy(new_passwd, p);
        SAFE_FREE(p);
 
        p = get_pass("Retype new SMB password:", stdin_get);
 
-       if (strcmp(p, new_pw)) {
+       if (strcmp(p, new_passwd)) {
                fprintf(stderr, "Mismatch - password unchanged.\n");
-               ZERO_ARRAY(new_pw);
+               ZERO_ARRAY(new_passwd);
                SAFE_FREE(p);
                return NULL;
        }
@@ -285,27 +285,27 @@ static char *prompt_for_new_password(BOOL stdin_get)
  Change a password either locally or remotely.
 *************************************************************/
 
-static BOOL password_change(const char *remote_mach, char *username, 
-                           char *old_passwd, char *new_pw, int local_flags)
+static BOOL password_change(const char *remote_machine, char *user_name, 
+                           char *old_passwd, char *new_passwd, int local_flags)
 {
        BOOL ret;
        pstring err_str;
        pstring msg_str;
 
-       if (remote_mach != NULL) {
+       if (remote_machine != NULL) {
                if (local_flags & (LOCAL_ADD_USER|LOCAL_DELETE_USER|LOCAL_DISABLE_USER|LOCAL_ENABLE_USER|
                                                        LOCAL_TRUST_ACCOUNT|LOCAL_SET_NO_PASSWORD)) {
                        /* these things can't be done remotely yet */
                        return False;
                }
-               ret = remote_password_change(remote_mach, username, 
-                                            old_passwd, new_pw, err_str, sizeof(err_str));
+               ret = remote_password_change(remote_machine, user_name, 
+                                            old_passwd, new_passwd, err_str, sizeof(err_str));
                if(*err_str)
                        fprintf(stderr, err_str);
                return ret;
        }
        
-       ret = local_password_change(username, local_flags, new_pw
+       ret = local_password_change(user_name, local_flags, new_passwd
                                     err_str, sizeof(err_str), msg_str, sizeof(msg_str));
 
        if(*msg_str)
index d87497f2fa333576065d1c65d3dea1cbc43c7eff..0b0c591cb16a13a531210bb16d4371a58dc480fa 100644 (file)
@@ -146,7 +146,6 @@ static void print_brl(SMB_DEV_T dev, SMB_INO_T ino, int pid,
   ******************************************************************/
 static int profile_dump(void)
 {
-#ifdef WITH_PROFILE
        if (!profile_setup(True)) {
                fprintf(stderr,"Failed to initialise profile memory\n");
                return -1;
@@ -483,9 +482,6 @@ static int profile_dump(void)
        d_printf("run_elections_time:             %u\n", profile_p->run_elections_time);
        d_printf("election_count:                 %u\n", profile_p->election_count);
        d_printf("election_time:                  %u\n", profile_p->election_time);
-#else /* WITH_PROFILE */
-       fprintf(stderr, "Profile data unavailable\n");
-#endif /* WITH_PROFILE */
 
        return 0;
 }
@@ -553,9 +549,7 @@ static int traverse_sessionid(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf, vo
                {"conf",        's', POPT_ARG_STRING,   0, 's'},
                {"user",        'u', POPT_ARG_STRING,   0, 'u'},
                {"brief",       'b', POPT_ARG_NONE,     &brief},
-#ifdef WITH_PROFILE
                {"profile",     'P', POPT_ARG_NONE,     &profile_only},
-#endif /* WITH_PROFILE */
                {"byterange",   'B', POPT_ARG_NONE,     &show_brl},
                { NULL, 0, POPT_ARG_INCLUDE_TABLE, popt_common_debug },
                { 0, 0, 0, 0}
index d48cecba47b4ebc2467bf6821b05f321f947584d..3086019467de3277cd4f8b5010d76a34bf7d2300 100644 (file)
@@ -48,7 +48,7 @@ static int do_global_checks(void)
        SMB_STRUCT_STAT st;
 
        if (lp_security() >= SEC_DOMAIN && !lp_encrypted_passwords()) {
-               printf("ERROR: in 'security=domain' mode the 'encrypt passwords' parameter must always be set to 'true'.\n");
+               printf("ERROR: in 'security=domain' mode the 'encrypt passwords' parameter must also be set to 'true'.\n");
                ret = 1;
        }
 
@@ -171,7 +171,7 @@ via the %%o substitution. With encrypted passwords this is not possible.\n", lp_
        return ret;
 }   
 
-int main(int argc, const char *argv[])
+int main(int argc, char *argv[])
 {
        extern char *optarg;
        extern int optind;
@@ -185,19 +185,17 @@ int main(int argc, const char *argv[])
        static char *new_local_machine = NULL;
        const char *cname;
        const char *caddr;
-       static int show_defaults;
 
        struct poptOption long_options[] = {
                POPT_AUTOHELP
                {"suppress-prompt", 's', POPT_ARG_VAL, &silent_mode, 1, "Suppress prompt for enter"},
-               {"verbose", 'v', POPT_ARG_NONE, &show_defaults, 1, "Show default options too"},
                {"server", 'L',POPT_ARG_STRING, &new_local_machine, 0, "Set %%L macro to servername\n"},
                {"encoding", 't', POPT_ARG_STRING, &term_code, 0, "Print parameters with encoding"},
                {0,0,0,0}
        };
 
-       pc = poptGetContext(NULL, argc, argv, long_options, 
-                           POPT_CONTEXT_KEEP_FIRST);
+       pc = poptGetContext(NULL, argc, (const char **) argv, long_options, 
+                                               POPT_CONTEXT_KEEP_FIRST);
 
        while((opt = poptGetNextOpt(pc)) != -1);
 
@@ -278,7 +276,7 @@ int main(int argc, const char *argv[])
                        fflush(stdout);
                        getc(stdin);
                }
-               lp_dump(stdout, show_defaults, lp_numservices());
+               lp_dump(stdout,True, lp_numservices());
        }
 
        if(cname && caddr){
index af6fa82ffe565c52b02cf1b2ee664e94cbbc1767..80d3232d2bffedb6912b8f05047b507d790bb708 100644 (file)
@@ -1,9 +1,7 @@
 /* 
    Unix SMB/CIFS implementation.
    Samba Web Administration Tool
-   Version 3.0.0
-   Copyright (C) Andrew Tridgell 1997-2002
-   Copyright (C) John H Terpstra 2002
+   Copyright (C) Andrew Tridgell 1997-1998
    
    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
@@ -299,7 +297,7 @@ static void show_parameter(int snum, struct parm_struct *parm)
 /****************************************************************************
   display a set of parameters for a service 
 ****************************************************************************/
-static void show_parameters(int snum, int allparameters, unsigned int parm_filter, int printers)
+static void show_parameters(int snum, int allparameters, int advanced, int printers)
 {
        int i = 0;
        struct parm_struct *parm;
@@ -318,7 +316,7 @@ static void show_parameters(int snum, int allparameters, unsigned int parm_filte
                        if (printers & !(parm->flags & FLAG_PRINT)) continue;
                        if (!printers & !(parm->flags & FLAG_SHARE)) continue;
                }
-               if (parm_filter == FLAG_BASIC) {
+               if (!advanced) {
                        if (!(parm->flags & FLAG_BASIC)) {
                                void *ptr = parm->ptr;
 
@@ -365,12 +363,6 @@ static void show_parameters(int snum, int allparameters, unsigned int parm_filte
                        }
                        if (printers && !(parm->flags & FLAG_PRINT)) continue;
                }
-               if (parm_filter == FLAG_WIZARD) {
-                       if (!((parm->flags & FLAG_WIZARD))) continue;
-               }
-               if (parm_filter == FLAG_ADVANCED) {
-                       if (!((parm->flags & FLAG_ADVANCED))) continue;
-               }
                if (heading && heading != last_heading) {
                        d_printf("<tr><td></td></tr><tr><td><b><u>%s</u></b></td></tr>\n", _(heading));
                        last_heading = heading;
@@ -401,7 +393,7 @@ static void write_config(FILE *f, BOOL show_defaults)
 }
 
 /****************************************************************************
-  save and reload the smb.conf config file 
+  save and reoad the smb.conf config file 
 ****************************************************************************/
 static int save_reload(int snum)
 {
@@ -505,7 +497,6 @@ static void show_main_buttons(void)
                image_link(_("Globals"), "globals", "images/globals.gif");
                image_link(_("Shares"), "shares", "images/shares.gif");
                image_link(_("Printers"), "printers", "images/printers.gif");
-               image_link(_("Wizard"), "wizard", "images/wizard.gif");
        }
        if (have_read_access) {
                image_link(_("Status"), "status", "images/status.gif");
@@ -516,18 +507,6 @@ static void show_main_buttons(void)
        d_printf("<HR>\n");
 }
 
-/****************************************************************************
- * Handle Display/Edit Mode CGI
- ****************************************************************************/
-static void ViewModeBoxes(int mode)
-{
-       d_printf("<p>%s\n", _("Configuration View:&nbsp"));
-       d_printf("<input type=radio name=\"ViewMode\" value=0 %s>Basic\n", (mode == 0) ? "checked" : "");
-       d_printf("<input type=radio name=\"ViewMode\" value=1 %s>Advanced\n", (mode == 1) ? "checked" : "");
-       d_printf("<input type=radio name=\"ViewMode\" value=2 %s>Developer\n", (mode == 2) ? "checked" : "");
-       d_printf("</p><br>\n");
-}
-
 /****************************************************************************
   display a welcome page  
 ****************************************************************************/
@@ -562,240 +541,25 @@ static void viewconfig_page(void)
        d_printf("</form>\n");
 }
 
-/****************************************************************************
-  second screen of the wizard ... Fetch Configuration Parameters
-****************************************************************************/
-static void wizard_params_page(void)
-{
-       unsigned int parm_filter = FLAG_WIZARD;
-
-       /* Here we first set and commit all the parameters that were selected
-          in the previous screen. */
-
-       d_printf("<H2>Wizard Parameter Edit Page</H2>\n");
-
-       if (cgi_variable("Commit")) {
-               commit_parameters(GLOBALS_SNUM);
-               save_reload(0);
-       }
-
-       d_printf("<form name=\"swatform\" method=post action=wizard_params>\n");
-
-       if (have_write_access) {
-               d_printf("<input type=submit name=\"Commit\" value=\"Commit Changes\">\n");
-       }
-
-       d_printf("<input type=reset name=\"Reset Values\" value=\"Reset\">\n");
-       d_printf("<p>\n");
-       
-       d_printf("<table>\n");
-       show_parameters(GLOBALS_SNUM, 1, parm_filter, 0);
-       d_printf("</table>\n");
-       d_printf("</form>\n");
-}
-
-/****************************************************************************
-  Utility to just rewrite the smb.conf file - effectively just cleans it up
-****************************************************************************/
-static void rewritecfg_file(void)
-{
-       commit_parameters(GLOBALS_SNUM);
-       save_reload(0);
-       d_printf("<H2>Note: smb.conf %s</H2>\n", _("file has been read and rewritten"));
-}
-
-/****************************************************************************
-  wizard to create/modify the smb.conf file
-****************************************************************************/
-static void wizard_page(void)
-{
-       /* Set some variables to collect data from smb.conf */
-       int role = 0;
-       int winstype = 0;
-       int have_home = -1;
-       int HomeExpo = 0;
-       int SerType = 0;
-
-       if (cgi_variable("Rewrite")) {
-               (void) rewritecfg_file();
-               return;
-       }
-
-       if (cgi_variable("GetWizardParams")){
-               (void) wizard_params_page();
-               return;
-       }
-
-       if (cgi_variable("Commit")){
-               SerType = atoi(cgi_variable("ServerType"));
-               winstype = atoi(cgi_variable("WINSType"));
-               have_home = lp_servicenumber(HOMES_NAME);
-               HomeExpo = atoi(cgi_variable("HomeExpo"));
-
-               /* Plain text passwords are too badly broken - use encrypted passwords only */
-               lp_do_parameter( GLOBALS_SNUM, "encrypt passwords", "Yes");
-               
-               switch ( SerType ){
-                       case 0:
-                               /* Stand-alone Server */
-                               lp_do_parameter( GLOBALS_SNUM, "security", "USER" );
-                               lp_do_parameter( GLOBALS_SNUM, "domain logons", "No" );
-                               break;
-                       case 1:
-                               /* Domain Member */
-                               lp_do_parameter( GLOBALS_SNUM, "security", "DOMAIN" );
-                               lp_do_parameter( GLOBALS_SNUM, "domain logons", "No" );
-                               break;
-                       case 2:
-                               /* Domain Controller */
-                               lp_do_parameter( GLOBALS_SNUM, "security", "USER" );
-                               lp_do_parameter( GLOBALS_SNUM, "domain logons", "Yes" );
-                               break;
-               }
-               switch ( winstype ) {
-                       case 0:
-                               lp_do_parameter( GLOBALS_SNUM, "wins support", "No" );
-                               lp_do_parameter( GLOBALS_SNUM, "wins server", "" );
-                               break;
-                       case 1:
-                               lp_do_parameter( GLOBALS_SNUM, "wins support", "Yes" );
-                               lp_do_parameter( GLOBALS_SNUM, "wins server", "" );
-                               break;
-                       case 2:
-                               lp_do_parameter( GLOBALS_SNUM, "wins support", "No" );
-                               lp_do_parameter( GLOBALS_SNUM, "wins server", cgi_variable("WINSAddr"));
-                               break;
-               }
-
-               /* Have to create Homes share? */
-               if ((HomeExpo == 1) && (have_home == -1)) {
-                       pstring unix_share;
-                       
-                       pstrcpy(unix_share,HOMES_NAME);
-                       load_config(False);
-                       lp_copy_service(GLOBALS_SNUM, unix_share);
-                       iNumNonAutoPrintServices = lp_numservices();
-                       have_home = lp_servicenumber(HOMES_NAME);
-                       lp_do_parameter( have_home, "read only", "No");
-                       lp_do_parameter( have_home, "valid users", "%S");
-                       lp_do_parameter( have_home, "browseable", "No");
-                       commit_parameters(have_home);
-               }
-
-               /* Need to Delete Homes share? */
-               if ((HomeExpo == 0) && (have_home != -1)) {
-                       lp_remove_service(have_home);
-                       have_home = -1;
-               }
-
-               commit_parameters(GLOBALS_SNUM);
-               save_reload(0);
-       }
-       else
-       {
-               /* Now determine smb.conf WINS settings */
-               if (lp_wins_support())
-                       winstype = 1;
-/*             if (strlen(lp_wins_server_list()) != 0 )
- *             winstype = 2;
- */            
-
-               /* Do we have a homes share? */
-               have_home = lp_servicenumber(HOMES_NAME);
-       }
-       if ((winstype == 2) && lp_wins_support())
-               winstype = 3;
-
-       role = lp_server_role();
-       
-       /* Here we go ... */
-       d_printf("<H2>Samba Configuration Wizard</H2>\n");
-       d_printf("<form method=post action=wizard>\n");
-
-       if (have_write_access) {
-               d_printf(_("The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments.\n"));
-               d_printf(_("The same will happen if you press the commit button."));
-               d_printf("<br><br>");
-               d_printf("<center>");
-               d_printf("<input type=submit name=\"Rewrite\" value=%s> &nbsp;&nbsp;",_("Rewrite smb.conf file"));
-               d_printf("<input type=submit name=\"Commit\" value=%s> &nbsp;&nbsp;",_("Commit"));
-               d_printf("<input type=submit name=\"GetWizardParams\" value=%s>", _("Edit Parameter Values"));
-               d_printf("</center>");
-       }
-
-       d_printf("<hr>");
-       d_printf("<center><table border=0>");
-       d_printf("<tr><td><b>%s</b></td>\n", "Server Type:&nbsp;");
-       d_printf("<td><input type=radio name=\"ServerType\" value=0 %s> Stand Alone&nbsp;</td>", (role == ROLE_STANDALONE) ? "checked" : "");
-       d_printf("<td><input type=radio name=\"ServerType\" value=1 %s> Domain Member&nbsp;</td>", (role == ROLE_DOMAIN_MEMBER) ? "checked" : ""); 
-       d_printf("<td><input type=radio name=\"ServerType\" value=2 %s> Domain Controller&nbsp;</td>", (role == ROLE_DOMAIN_PDC) ? "checked" : "");
-       d_printf("</tr>");
-       if (role == ROLE_DOMAIN_BDC) {
-               d_printf("<tr><td></td><td colspan=3><font color=\"#ff0000\">Unusual Type in smb.conf - Please Select New Mode</font></td></tr>");
-       }
-       d_printf("<tr><td><b>%s</b></td>\n", "Configure WINS As:&nbsp;");
-       d_printf("<td><input type=radio name=\"WINSType\" value=0 %s> Not Used&nbsp;</td>", (winstype == 0) ? "checked" : "");
-       d_printf("<td><input type=radio name=\"WINSType\" value=1 %s> Server for client use&nbsp;</td>", (winstype == 1) ? "checked" : "");
-       d_printf("<td><input type=radio name=\"WINSType\" value=2 %s> Client of another WINS server&nbsp;</td>", (winstype == 2) ? "checked" : "");
-       d_printf("<tr><td></td><td></td><td></td><td>Remote WINS Server&nbsp;<input type=text size=\"16\" name=\"WINSAddr\" value=\"%s\"></td></tr>",lp_wins_server_list());
-       if (winstype == 3) {
-               d_printf("<tr><td></td><td colspan=3><font color=\"#ff0000\">Error: WINS Server Mode and WINS Support both set in smb.conf</font></td></tr>");
-               d_printf("<tr><td></td><td colspan=3><font color=\"#ff0000\">Please Select desired WINS mode above.</font></td></tr>");
-       }
-       d_printf("</tr>");
-       d_printf("<tr><td><b>%s</b></td>\n","Expose Home Directories:&nbsp;");
-       d_printf("<td><input type=radio name=\"HomeExpo\" value=1 %s> Yes</td>", (have_home == -1) ? "" : "checked ");
-       d_printf("<td><input type=radio name=\"HomeExpo\" value=0 %s> No</td>", (have_home == -1 ) ? "checked" : "");
-       d_printf("<td></td></tr>");
-       
-       /* Enable this when we are ready ....
-        * d_printf("<tr><td><b>%s</b></td>\n","Is Print Server:&nbsp;");
-        * d_printf("<td><input type=radio name=\"PtrSvr\" value=1 %s> Yes</td>");
-        * d_printf("<td><input type=radio name=\"PtrSvr\" value=0 %s> No</td>");
-        * d_printf("<td></td></tr>");
-        */
-       
-       d_printf("</table></center>");
-       d_printf("<hr>");
-
-       d_printf(_("The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment.\n"));
-       d_printf("</form>\n");
-}
-
-
 /****************************************************************************
   display a globals editing page  
 ****************************************************************************/
 static void globals_page(void)
 {
-       unsigned int parm_filter = FLAG_BASIC;
-       int mode = 0;
+       int advanced = 0;
 
        d_printf("<H2>%s</H2>\n", _("Global Variables"));
 
+       if (cgi_variable("Advanced") && !cgi_variable("Basic"))
+               advanced = 1;
+
        if (cgi_variable("Commit")) {
                commit_parameters(GLOBALS_SNUM);
                save_reload(0);
        }
 
-       if ( cgi_variable("ViewMode") )
-               mode = atoi(cgi_variable("ViewMode"));
-
-       d_printf("<form name=\"swatform\" method=post action=globals>\n");
-
-       ViewModeBoxes( mode );
-       switch ( mode ) {
-               case 0:
-                       parm_filter = FLAG_BASIC;
-                       break;
-               case 1:
-                       parm_filter = FLAG_ADVANCED;
-                       break;
-               case 2:
-                       parm_filter = FLAG_DEVELOPER;
-                       break;
-       }
-       d_printf("<br>\n");
+       d_printf("<FORM name=\"swatform\" method=post>\n");
+
        if (have_write_access) {
                d_printf("<input type=submit name=\"Commit\" value=\"%s\">\n",
                        _("Commit Changes"));
@@ -803,12 +567,22 @@ static void globals_page(void)
 
        d_printf("<input type=reset name=\"Reset Values\" value=\"%s\">\n", 
                 _("Reset Values"));
-
+       if (advanced == 0) {
+               d_printf("<input type=submit name=\"Advanced\" value=\"%s\">\n", _("Advanced View"));
+       } else {
+               d_printf("<input type=submit name=\"Basic\" value=\"%s\">\n", _("Basic View"));
+       }
        d_printf("<p>\n");
+       
        d_printf("<table>\n");
-       show_parameters(GLOBALS_SNUM, 1, parm_filter, 0);
+       show_parameters(GLOBALS_SNUM, 1, advanced, 0);
        d_printf("</table>\n");
-       d_printf("</form>\n");
+
+       if (advanced) {
+               d_printf("<input type=hidden name=\"Advanced\" value=1>\n");
+       }
+
+       d_printf("</FORM>\n");
 }
 
 /****************************************************************************
@@ -821,14 +595,16 @@ static void shares_page(void)
        char *s;
        int snum = -1;
        int i;
-       int mode = 0;
-       unsigned int parm_filter = FLAG_BASIC;
+       int advanced = 0;
 
        if (share)
                snum = lp_servicenumber(share);
 
        d_printf("<H2>%s</H2>\n", _("Share Parameters"));
 
+       if (cgi_variable("Advanced") && !cgi_variable("Basic"))
+               advanced = 1;
+
        if (cgi_variable("Commit") && snum >= 0) {
                commit_parameters(snum);
                save_reload(0);
@@ -852,21 +628,7 @@ static void shares_page(void)
        d_printf("<FORM name=\"swatform\" method=post>\n");
 
        d_printf("<table>\n");
-       if ( cgi_variable("ViewMode") )
-               mode = atoi(cgi_variable("ViewMode"));
-       ViewModeBoxes( mode );
-       switch ( mode ) {
-               case 0:
-                       parm_filter = FLAG_BASIC;
-                       break;
-               case 1:
-                       parm_filter = FLAG_ADVANCED;
-                       break;
-               case 2:
-                       parm_filter = FLAG_DEVELOPER;
-                       break;
-       }
-       d_printf("<br><tr>\n");
+       d_printf("<tr>\n");
        d_printf("<td><input type=submit name=selectshare value=\"%s\"></td>\n", _("Choose Share"));
        d_printf("<td><select name=share>\n");
        if (snum < 0)
@@ -900,15 +662,24 @@ static void shares_page(void)
                }
 
                d_printf("<input type=reset name=\"Reset Values\" value=\"%s\">\n", _("Reset Values"));
+               if (advanced == 0) {
+                       d_printf("<input type=submit name=\"Advanced\" value=\"%s\">\n", _("Advanced View"));
+               } else {
+                       d_printf("<input type=submit name=\"Basic\" value=\"%s\">\n", _("Basic View"));
+               }
                d_printf("<p>\n");
        }
 
        if (snum >= 0) {
                d_printf("<table>\n");
-               show_parameters(snum, 1, parm_filter, 0);
+               show_parameters(snum, 1, advanced, 0);
                d_printf("</table>\n");
        }
 
+       if (advanced) {
+               d_printf("<input type=hidden name=\"Advanced\" value=1>\n");
+       }
+
        d_printf("</FORM>\n");
 }
 
@@ -1151,8 +922,7 @@ static void printers_page(void)
        char *s;
        int snum=-1;
        int i;
-       int mode = 0;
-       unsigned int parm_filter = FLAG_BASIC;
+       int advanced = 0;
 
        if (share)
                snum = lp_servicenumber(share);
@@ -1165,6 +935,9 @@ static void printers_page(void)
         d_printf("<A HREF=\"/swat/help/smb.conf.5.html#printcapname\" target=\"docs\">%s</A>\n", _("Printcap Name"));
         d_printf(_("Attempting to delete these printers from SWAT will have no effect.\n"));
 
+       if (cgi_variable("Advanced") && !cgi_variable("Basic"))
+               advanced = 1;
+
        if (cgi_variable("Commit") && snum >= 0) {
                commit_parameters(snum);
                if (snum >= iNumNonAutoPrintServices)
@@ -1192,20 +965,6 @@ static void printers_page(void)
 
        d_printf("<FORM name=\"swatform\" method=post>\n");
 
-       if ( cgi_variable("ViewMode") )
-               mode = atoi(cgi_variable("ViewMode"));
-       ViewModeBoxes( mode );
-       switch ( mode ) {
-               case 0:
-                       parm_filter = FLAG_BASIC;
-                       break;
-               case 1:
-                       parm_filter = FLAG_ADVANCED;
-                       break;
-               case 2:
-                       parm_filter = FLAG_DEVELOPER;
-                       break;
-       }
        d_printf("<table>\n");
        d_printf("<tr><td><input type=submit name=selectshare value=\"%s\"></td>\n", _("Choose Printer"));
        d_printf("<td><select name=share>\n");
@@ -1244,14 +1003,24 @@ static void printers_page(void)
                        d_printf("<input type=submit name=\"Commit\" value=\"%s\">\n", _("Commit Changes"));
                }
                d_printf("<input type=reset name=\"Reset Values\" value=\"%s\">\n", _("Reset Values"));
+               if (advanced == 0) {
+                       d_printf("<input type=submit name=\"Advanced\" value=\"%s\">\n", _("Advanced View"));
+               } else {
+                       d_printf("<input type=submit name=\"Basic\" value=\"%s\">\n", _("Basic View"));
+               }
                d_printf("<p>\n");
        }
 
        if (snum >= 0) {
                d_printf("<table>\n");
-               show_parameters(snum, 1, parm_filter, 1);
+               show_parameters(snum, 1, advanced, 1);
                d_printf("</table>\n");
        }
+
+       if (advanced) {
+               d_printf("<input type=hidden name=\"Advanced\" value=1>\n");
+       }
+
        d_printf("</FORM>\n");
 }
 
@@ -1340,12 +1109,6 @@ static void printers_page(void)
                viewconfig_page();
        } else if (strcmp(page,"passwd")==0) {
                passwd_page();
-       } else if (have_read_access && strcmp(page,"wizard")==0) {
-               wizard_page();
-       } else if (have_read_access && strcmp(page,"wizard_params")==0) {
-               wizard_params_page();
-       } else if (have_read_access && strcmp(page,"rewritecfg")==0) {
-               rewritecfg_file();
        } else {
                welcome_page();
        }
index 188e985658d35523b2d89789c09af78391252b01..87c3e475525497b96cd0a8e9611fb342f39a93dc 100644 (file)
@@ -12,10 +12,7 @@ test_sharelist() {
        return 0
 }
 
-# Need guest account
-password=samba
-security=USER
-(test_smb_conf_setup && test_smbpasswd $password ) || exit 1
+(test_smb_conf_setup) || exit 1
 
 test_sharelist || exit 1
 
index 9b8483db1627a87a9d25f918c81b344702bc9f49..64cdbaa5e56210ce1926ecce0aa172a8217cf3ad 100644 (file)
 
     add machine script = useradd %u -d /dev/null -s /bin/false
 
-    panic action = /bin/sh BUILD_FARM/samba/testsuite/build_farm/backtrace %d
+    panic action = echo bt | gdb PREFIX/sbin/smbd %d
 
     passdb backend = smbpasswd_nua
 
     non unix account range = 10000-200000
-    map hidden = yes
-    create mask = 0777
 
 [test]
     path = PREFIX/testdir