[MERGE] SourceLayout: squid compat library

From: Amos Jeffries <squid3_at_treenet.co.nz>
Date: Mon, 09 Feb 2009 21:57:29 +1300

Adjust to meet most of Alex's requests.

-- 
Please be using
   Current Stable Squid 2.7.STABLE6 or 3.0.STABLE13
   Current Beta Squid 3.1.0.5

# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: squid3_at_treenet.co.nz-20090209085349-2ddmkuqft1q5e7cv
# target_branch: file:///src/squid/bzr/trunk/
# testament_sha1: e46df338e4f2e09ac6d13f48a7af37225df73235
# timestamp: 2009-02-09 21:54:29 +1300
# base_revision_id: squid3_at_treenet.co.nz-20090209053318-\
# c87m5tqj677sm1l9
#
# Begin patch
=== modified file 'Makefile.am'
--- Makefile.am 2009-01-09 13:12:24 +0000
+++ Makefile.am 2009-02-08 11:52:11 +0000
@@ -2,8 +2,8 @@
 #
 
 AUTOMAKE_OPTIONS = dist-bzip2 subdir-objects 1.5 foreign
-DIST_SUBDIRS = lib snmplib scripts src icons errors contrib doc helpers test-suite tools
-SUBDIRS = lib @makesnmplib@ scripts src/ip src icons errors doc helpers test-suite tools
+DIST_SUBDIRS = squid-compat lib snmplib scripts src icons errors contrib doc helpers test-suite tools
+SUBDIRS = squid-compat lib @makesnmplib@ scripts src/ip src icons errors doc helpers test-suite tools
 
 DISTCLEANFILES = include/stamp-h include/stamp-h[0-9]*
 DEFAULT_PINGER = $(libexecdir)/`echo pinger | sed '$(transform);s/$$/$(EXEEXT)/'`

=== modified file 'configure.in'
--- configure.in 2009-02-07 11:34:55 +0000
+++ configure.in 2009-02-09 08:53:49 +0000
@@ -87,7 +87,7 @@
 
 CRYPTLIB=''
 REGEXLIB='' # -lregex
-LIBREGEX='' # libregex.a
+# LIBREGEX='' # libregex.a
 
 dnl find out the exe extension for this platform. If it's not empty, use it for CGI's as well.
 AC_EXEEXT
@@ -284,15 +284,6 @@
     fi
 fi
 
-AC_ARG_ENABLE(gnuregex,
- AC_HELP_STRING([--enable-gnuregex],
- [Compile GNUregex. Unless you have reason to use
- this option, you should not enable it.
- This library file is usually only required on Windows and
- very old Unix boxes which do not have their own regex
- library built in.]),
-[USE_GNUREGEX=$enableval])
-
 SquidInline="yes"
 
 AC_ARG_ENABLE(optimizations,
@@ -3202,6 +3193,14 @@
     fi
 fi
 
+AC_ARG_ENABLE(gnuregex,
+ AC_HELP_STRING([--enable-gnuregex],
+ [Compile GNUregex. Unless you have reason to use
+ this option, you should not enable it.
+ This library file is usually only required on Windows and
+ very old Unix boxes which do not have their own regex
+ library built in.]),
+[USE_GNUREGEX=$enableval])
 if test -z "$USE_GNUREGEX" ; then
     case "$host" in
     *-sun-solaris2.[[0-4]])
@@ -3225,12 +3224,12 @@
 fi
 AC_MSG_RESULT($USE_GNUREGEX)
 if test "$USE_GNUREGEX" = "yes"; then
- REGEXLIB="-lregex"
- LIBREGEX="libregex.a"
+ # override system regex with ours. Not good. But what was asked for.
+ REGEXLIB=""
         AC_DEFINE(USE_GNUREGEX,1,[Define if we should use GNU regex])
 fi
 AC_SUBST(REGEXLIB)
-AC_SUBST(LIBREGEX)
+#AC_SUBST(LIBREGEX)
 
 dnl Not cached since people are likely to tune this
 AC_MSG_CHECKING(Default FD_SETSIZE value)
@@ -3791,6 +3790,7 @@
 
 AC_CONFIG_FILES([\
         Makefile \
+ squid-compat/Makefile \
         lib/Makefile \
         scripts/Makefile \
         scripts/RunCache \

=== modified file 'helpers/basic_auth/LDAP/Makefile.am'
--- helpers/basic_auth/LDAP/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/basic_auth/LDAP/Makefile.am 2009-02-08 11:52:11 +0000
@@ -11,5 +11,13 @@
 EXTRA_DIST = squid_ldap_auth.8
 squid_ldap_auth_SOURCES = squid_ldap_auth.c
 
-LDADD = -L$(top_builddir)/lib -lmiscutil $(LIB_LDAP) $(LIB_LBER) $(XTRA_LIBS)
-INCLUDES = -I$(top_srcdir)/include
+LDADD = \
+ -L$(top_builddir)/squid-compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(LIB_LDAP) \
+ $(LIB_LBER) \
+ $(XTRA_LIBS)
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include

=== modified file 'helpers/basic_auth/MSNT/Makefile.am'
--- helpers/basic_auth/MSNT/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/basic_auth/MSNT/Makefile.am 2009-02-08 11:52:11 +0000
@@ -27,9 +27,12 @@
 sysconf_DATA = \
         msntauth.conf.default
 
-LDADD = -L$(top_builddir)/lib -lmiscutil $(XTRA_LIBS)
+LDADD = -L$(top_builddir)/lib -lmiscutil $(XTRA_LIBS) -L$(top_builddir)/squid-compat/libcompat.la
 
-INCLUDES = -I$(top_srcdir)/include
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/src
 
 confload.o: confload.c
         $(COMPILE) -DSYSCONFDIR=\"$(sysconfdir)\" -c $(srcdir)/confload.c -o $@
@@ -41,5 +44,3 @@
                 echo "$(INSTALL_DATA) $(srcdir)/msntauth.conf.default $(DESTDIR)$(sysconfdir)/msntauth.conf" ; \
                 $(INSTALL_DATA) $(srcdir)/msntauth.conf.default $(DESTDIR)$(sysconfdir)/msntauth.conf ; \
         fi
-
-

=== modified file 'helpers/basic_auth/NCSA/Makefile.am'
--- helpers/basic_auth/NCSA/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/basic_auth/NCSA/Makefile.am 2009-02-08 11:52:11 +0000
@@ -10,5 +10,14 @@
 ncsa_auth_SOURCES = ncsa_auth.c crypt_md5.c crypt_md5.h
 man_MANS = ncsa_auth.8
 EXTRA_DIST = ncsa_auth.8
-LDADD = -L$(top_builddir)/lib -lmiscutil $(CRYPTLIB) $(XTRA_LIBS) $(SSLLIB)
-INCLUDES = -I$(top_srcdir)/include
+LDADD = \
+ -L$(top_builddir)/squid-compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(CRYPTLIB) \
+ $(XTRA_LIBS) \
+ $(SSLLIB)
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/src

=== modified file 'helpers/basic_auth/PAM/Makefile.am'
--- helpers/basic_auth/PAM/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/basic_auth/PAM/Makefile.am 2009-02-08 11:52:11 +0000
@@ -6,9 +6,16 @@
 # Uncomment and customize the following to suit your needs:
 #
 
-INCLUDES = -I$(top_srcdir)/include
-
 man_MANS = pam_auth.8
 EXTRA_DIST = pam_auth.8
 libexec_PROGRAMS = pam_auth
-LDADD = -L$(top_builddir)/lib -lmiscutil -lpam $(XTRA_LIBS)
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include
+
+LDADD = \
+ -L$(top_builddir)/squid-compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ -lpam \
+ $(XTRA_LIBS)

=== modified file 'helpers/basic_auth/SASL/Makefile.am'
--- helpers/basic_auth/SASL/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/basic_auth/SASL/Makefile.am 2009-02-08 11:52:11 +0000
@@ -6,8 +6,16 @@
 # Uncomment and customize the following to suit your needs:
 #
 
-INCLUDES = -I$(top_srcdir)/include
-
 libexec_PROGRAMS = sasl_auth
-LDADD = -L$(top_builddir)/lib -lmiscutil $(LIBSASL) $(XTRA_LIBS)
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include
+
+LDADD = \
+ -L$(top_builddir)/squid-compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(LIBSASL) \
+ $(XTRA_LIBS)
+
 EXTRA_DIST = squid_sasl_auth squid_sasl_auth.conf

=== modified file 'helpers/basic_auth/SMB/Makefile.am'
--- helpers/basic_auth/SMB/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/basic_auth/SMB/Makefile.am 2009-02-08 11:52:11 +0000
@@ -22,6 +22,11 @@
 smb_auth_CFLAGS = -DSAMBAPREFIX=\"$(SAMBAPREFIX)\" -DHELPERSCRIPT=\"$(SMB_AUTH_HELPER_PATH)\"
 EXTRA_DIST = smb_auth.sh COPYING-2.0
 
-LDADD = -L$(top_builddir)/lib -lmiscutil $(XTRA_LIBS)
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include
 
-INCLUDES = -I$(top_srcdir)/include
+LDADD = \
+ -L$(top_builddir)/squid-compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(XTRA_LIBS)

=== modified file 'helpers/basic_auth/YP/Makefile.am'
--- helpers/basic_auth/YP/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/basic_auth/YP/Makefile.am 2009-02-08 11:52:11 +0000
@@ -7,5 +7,13 @@
 
 libexec_PROGRAMS = yp_auth
 yp_auth_SOURCES = yp_auth.c nis_support.h nis_support.c
-LDADD = -L$(top_builddir)/lib -lmiscutil $(CRYPTLIB) $(XTRA_LIBS)
-INCLUDES = -I$(top_srcdir)/include
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include
+
+LDADD = \
+ -L$(top_builddir)/squid-compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(CRYPTLIB) \
+ $(XTRA_LIBS)

=== modified file 'helpers/basic_auth/getpwnam/Makefile.am'
--- helpers/basic_auth/getpwnam/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/basic_auth/getpwnam/Makefile.am 2009-02-08 11:52:11 +0000
@@ -11,5 +11,13 @@
 
 getpwname_auth_SOURCES = getpwnam_auth.c
 
-INCLUDES = -I$(top_srcdir)/include
-LDADD = -L$(top_builddir)/lib -lmiscutil $(CRYPTLIB) $(XTRA_LIBS)
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/src
+
+LDADD = \
+ -L$(top_builddir)/squid-compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(CRYPTLIB) \
+ $(XTRA_LIBS)

=== modified file 'helpers/basic_auth/mswin_sspi/Makefile.am'
--- helpers/basic_auth/mswin_sspi/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/basic_auth/mswin_sspi/Makefile.am 2009-02-08 11:52:11 +0000
@@ -11,9 +11,15 @@
 
 mswin_auth_SOURCES = mswin_auth.c valid.c valid.h
 
-LDADD = -L$(top_builddir)/lib -lnetapi32 -ladvapi32 -lsspwin32 \
- -lmiscutil $(XTRA_LIBS)
+LDADD = \
+ -L$(top_builddir)/squid-compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ -lnetapi32 -ladvapi32 -lsspwin32 \
+ $(XTRA_LIBS)
 
-INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include -I$(top_srcdir)/src
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
 
 EXTRA_DIST = readme.txt

=== modified file 'helpers/basic_auth/squid_radius_auth/Makefile.am'
--- helpers/basic_auth/squid_radius_auth/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/basic_auth/squid_radius_auth/Makefile.am 2009-02-08 11:52:11 +0000
@@ -15,5 +15,12 @@
                         radius-util.c \
                         radius-util.h
 
-LDADD = -L$(top_builddir)/lib -lmiscutil $(SSLLIB) $(XTRA_LIBS)
-INCLUDES = -I$(top_srcdir)/include
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include
+
+LDADD = \
+ -L$(top_builddir)/squid-compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(SSLLIB) \
+ $(XTRA_LIBS)

=== modified file 'helpers/digest_auth/eDirectory/Makefile.am'
--- helpers/digest_auth/eDirectory/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/digest_auth/eDirectory/Makefile.am 2009-02-08 11:52:11 +0000
@@ -13,7 +13,18 @@
         ldap_backend.h \
         edir_ldapext.c \
         edir_ldapext.h
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include \
- -I$(top_srcdir)/src/
-
-LDADD = -L$(top_builddir)/lib -lmiscutil $(LIB_LDAP) $(LIB_LBER) $(CRYPTLIB) $(XTRA_LIBS) $(SSLLIB)
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
+
+LDADD = \
+ -L$(top_builddir)/squid-compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(LIB_LDAP) \
+ $(LIB_LBER) \
+ $(CRYPTLIB) \
+ $(XTRA_LIBS) \
+ $(SSLLIB)

=== modified file 'helpers/digest_auth/ldap/Makefile.am'
--- helpers/digest_auth/ldap/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/digest_auth/ldap/Makefile.am 2009-02-08 11:52:11 +0000
@@ -11,7 +11,18 @@
         digest_common.h \
         ldap_backend.c \
         ldap_backend.h
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include \
- -I$(top_srcdir)/src/
-
-LDADD = -L$(top_builddir)/lib -lmiscutil $(LIB_LDAP) $(LIB_LBER) $(CRYPTLIB) $(XTRA_LIBS) $(SSLLIB)
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
+
+LDADD = \
+ -L$(top_builddir)/squid-compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(LIB_LDAP) \
+ $(LIB_LBER) \
+ $(CRYPTLIB) \
+ $(XTRA_LIBS) \
+ $(SSLLIB)

=== modified file 'helpers/digest_auth/password/Makefile.am'
--- helpers/digest_auth/password/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/digest_auth/password/Makefile.am 2009-02-08 11:52:11 +0000
@@ -11,7 +11,16 @@
         digest_common.h \
         text_backend.c \
         text_backend.h
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include \
- -I$(top_srcdir)/src/
-
-LDADD = -L$(top_builddir)/lib -lmiscutil $(CRYPTLIB) $(XTRA_LIBS) $(SSLLIB)
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
+
+LDADD = \
+ -L$(top_builddir)/squid-compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(CRYPTLIB) \
+ $(XTRA_LIBS) \
+ $(SSLLIB)

=== modified file 'helpers/external_acl/ip_user/Makefile.am'
--- helpers/external_acl/ip_user/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/external_acl/ip_user/Makefile.am 2009-02-08 11:52:11 +0000
@@ -15,7 +15,6 @@
         main.c \
         match.c
 
-
 EXTRA_DIST = \
         example.conf \
         example-deny_all_but.conf \
@@ -24,5 +23,13 @@
 
 # sysconf_DATA =
 
-LDADD = -L$(top_builddir)/lib -lmiscutil @XTRA_LIBS@
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
+
+LDADD = \
+ -L$(top_builddir)/squid-compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ @XTRA_LIBS@

=== modified file 'helpers/external_acl/ldap_group/Makefile.am'
--- helpers/external_acl/ldap_group/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/external_acl/ldap_group/Makefile.am 2009-02-08 11:52:11 +0000
@@ -11,5 +11,15 @@
 EXTRA_DIST = squid_ldap_group.8
 squid_ldap_group_SOURCES = squid_ldap_group.c
 
-LDADD = -L$(top_builddir)/lib -lmiscutil $(LIB_LDAP) $(LIB_LBER) @XTRA_LIBS@
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
+
+LDADD = \
+ -L$(top_builddir)/squid-compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(LIB_LDAP) \
+ $(LIB_LBER) \
+ @XTRA_LIBS@

=== modified file 'helpers/external_acl/mswin_ad_group/Makefile.am'
--- helpers/external_acl/mswin_ad_group/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/external_acl/mswin_ad_group/Makefile.am 2009-02-08 11:52:11 +0000
@@ -11,9 +11,16 @@
 
 mswin_check_ad_group_SOURCES = mswin_check_ad_group.c mswin_check_ad_group.h
 
-INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/src
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include
 
-LDADD = -L$(top_builddir)/lib -lmiscutil -lnetapi32 -ladvapi32 \
- -lntdll $(XTRA_LIBS)
+LDADD = \
+ -L$(top_builddir)/squid-compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ -lnetapi32 \
+ -ladvapi32 \
+ -lntdll \
+ $(XTRA_LIBS)
 
 EXTRA_DIST = readme.txt

=== modified file 'helpers/external_acl/mswin_lm_group/Makefile.am'
--- helpers/external_acl/mswin_lm_group/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/external_acl/mswin_lm_group/Makefile.am 2009-02-08 11:52:11 +0000
@@ -11,9 +11,17 @@
 
 mswin_check_lm_group_SOURCES = win32_check_group.c win32_check_group.h
 
-INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include -I$(top_srcdir)/src
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
 
-LDADD = -L$(top_builddir)/lib -lmiscutil -lnetapi32 -ladvapi32 \
- -lntdll $(XTRA_LIBS)
+LDADD = \
+ -L$(top_builddir)/squid-compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ -lnetapi32 \
+ -ladvapi32 \
+ -lntdll \
+ $(XTRA_LIBS)
 
 EXTRA_DIST = readme.txt

=== modified file 'helpers/external_acl/session/Makefile.am'
--- helpers/external_acl/session/Makefile.am 2009-01-26 13:37:30 +0000
+++ helpers/external_acl/session/Makefile.am 2009-02-09 08:53:49 +0000
@@ -11,6 +11,12 @@
 EXTRA_DIST = squid_session.8
 squid_session_SOURCES = squid_session.c
 
-LDADD = @LIB_DB@
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
 
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include
+LDADD = \
+ -L$(top_builddir)/squid-compat/libcompat.la \
+ @LIB_DB@

=== modified file 'helpers/external_acl/unix_group/Makefile.am'
--- helpers/external_acl/unix_group/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/external_acl/unix_group/Makefile.am 2009-02-08 11:52:11 +0000
@@ -11,5 +11,13 @@
 EXTRA_DIST = squid_unix_group.8
 squid_unix_group_SOURCES = check_group.c
 
-LDADD = -L$(top_builddir)/lib -lmiscutil @XTRA_LIBS@
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
+
+LDADD = \
+ -L$(top_builddir)/squid-compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ @XTRA_LIBS@

=== modified file 'helpers/ntlm_auth/fakeauth/Makefile.am'
--- helpers/ntlm_auth/fakeauth/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/ntlm_auth/fakeauth/Makefile.am 2009-02-08 11:52:11 +0000
@@ -8,6 +8,15 @@
 
 libexec_PROGRAMS = fakeauth_auth
 fakeauth_auth_SOURCES = fakeauth_auth.c ntlm.h
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include \
- -I$(top_srcdir)/src/
-LDADD = -L$(top_builddir)/lib -lmiscutil $(CRYPTLIB) $(XTRA_LIBS)
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
+
+LDADD = \
+ -L$(top_builddir)/squid-compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(CRYPTLIB) \
+ $(XTRA_LIBS)

=== modified file 'helpers/ntlm_auth/mswin_sspi/Makefile.am'
--- helpers/ntlm_auth/mswin_sspi/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/ntlm_auth/mswin_sspi/Makefile.am 2009-02-08 11:52:11 +0000
@@ -8,9 +8,18 @@
 
 mswin_ntlm_auth_SOURCES = libntlmssp.c ntlm_auth.c ntlm.h
 
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include -I$(top_srcdir)/src
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
 
-LDADD = -L$(top_builddir)/lib -lntlmauth -lsspwin32 -lnetapi32 \
- -ladvapi32 -lmiscutil $(XTRA_LIBS)
+LDADD = \
+ -L$(top_builddir)/squid-compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil -lntlmauth \
+ -lsspwin32 \
+ -lnetapi32 \
+ -ladvapi32 \
+ $(XTRA_LIBS)
 
 EXTRA_DIST = readme.txt

=== modified file 'helpers/ntlm_auth/smb_lm/Makefile.am'
--- helpers/ntlm_auth/smb_lm/Makefile.am 2008-10-26 14:49:41 +0000
+++ helpers/ntlm_auth/smb_lm/Makefile.am 2009-02-08 11:52:11 +0000
@@ -6,7 +6,18 @@
 
 libexec_PROGRAMS = ntlm_smb_lm_auth
 ntlm_smb_lm_auth_SOURCES = libntlmssp.c ntlm_smb_lm_auth.c ntlm_smb_lm_auth.h
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include \
- -I$(top_srcdir)/src/ -I$(srcdir)/smbval
-LDADD = smbval/libsmbvalid.a -L$(top_builddir)/lib -lntlmauth \
- -lmiscutil $(CRYPTLIB) $(XTRA_LIBS)
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/src \
+ -I$(srcdir)/smbval
+
+LDADD = \
+ -L$(top_builddir)/squid-compat/libcompat.la \
+ -L$(top_builddir)/lib -lntlmauth -lmiscutil \
+ smbval/libsmbvalid.a \
+ $(CRYPTLIB) \
+ $(XTRA_LIBS)

=== modified file 'helpers/ntlm_auth/smb_lm/smbval/Makefile.am'
--- helpers/ntlm_auth/smb_lm/smbval/Makefile.am 2001-08-31 17:19:04 +0000
+++ helpers/ntlm_auth/smb_lm/smbval/Makefile.am 2009-02-07 03:14:20 +0000
@@ -1,9 +1,13 @@
 # makefile for smblib
 
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include \
- -I$(top_srcdir)/src/
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
 
 noinst_LIBRARIES = libsmbvalid.a
+
 libsmbvalid_a_SOURCES = valid.c session.c rfcnb-util.c rfcnb-io.c \
         smblib-util.c smblib.c smbencrypt.c smbdes.c md4.c byteorder.h \
         rfcnb-error.h rfcnb-util.h smbencrypt.h smblib.h valid.h \

=== modified file 'include/config.h'
--- include/config.h 2009-01-21 03:47:47 +0000
+++ include/config.h 2009-02-08 11:52:11 +0000
@@ -55,156 +55,17 @@
  *--------------------------------------------------------------------------*
  ****************************************************************************/
 
+#include "squid-compat/compat.h"
+
 #ifdef USE_POSIX_REGEX
 #ifndef USE_RE_SYNTAX
 #define USE_RE_SYNTAX REG_EXTENDED /* default Syntax */
 #endif
 #endif
 
-/* define the _SQUID_TYPE_ based on a guess of the OS */
-#if defined(__sun__) || defined(__sun) /* SUN */
-#define _SQUID_SUN_
-#if defined(__SVR4) /* SOLARIS */
-#define _SQUID_SOLARIS_
-#else /* SUNOS */
-#define _SQUID_SUNOS_
-#endif
-
-#elif defined(__hpux) /* HP-UX - SysV-like? */
-#define _SQUID_HPUX_
-#define _SQUID_SYSV_
-
-#elif defined(__osf__) /* OSF/1 */
-#define _SQUID_OSF_
-
-#elif defined(__ultrix) /* Ultrix */
-#define _SQUID_ULTRIX_
-
-#elif defined(_AIX) /* AIX */
-#define _SQUID_AIX_
-
-#elif defined(__linux__) /* Linux */
-#define _SQUID_LINUX_
-#if USE_ASYNC_IO
-#define _SQUID_LINUX_THREADS_
-#endif
-
-#elif defined(__FreeBSD__) /* FreeBSD */
-#define _SQUID_FREEBSD_
-#if USE_ASYNC_IO && defined(LINUXTHREADS)
-#define _SQUID_LINUX_THREADS_
-#endif
-
-#elif defined(__sgi__) || defined(sgi) || defined(__sgi) /* SGI */
-#define _SQUID_SGI_
-#if !defined(_SVR4_SOURCE)
-#define _SVR4_SOURCE /* for tempnam(3) */
-#endif
-#if USE_ASYNC_IO
-#define _ABI_SOURCE
-#endif /* USE_ASYNC_IO */
-
-#elif defined(__NeXT__)
-#define _SQUID_NEXT_
-
-#elif defined(__bsdi__)
-#define _SQUID_BSDI_ /* BSD/OS */
-
-#elif defined(__NetBSD__)
-#define _SQUID_NETBSD_
-
-#elif defined(__OpenBSD__)
-#define _SQUID_OPENBSD_
-
-#elif defined(__DragonFly__)
-#define _SQUID_DRAGONFLY_
-
-#elif defined(__CYGWIN32__) || defined(__CYGWIN__)
-#define _SQUID_CYGWIN_
-#define _SQUID_WIN32_
-
-#elif defined(WIN32) || defined(WINNT) || defined(__WIN32__) || defined(__WIN32)
-#define _SQUID_MSWIN_
-#define _SQUID_WIN32_
-#include "squid_mswin.h"
-
-#elif defined(__APPLE__)
-#define _SQUID_APPLE_
-
-#elif defined(sony_news) && defined(__svr4)
-#define _SQUID_NEWSOS6_
-
-#elif defined(__EMX__) || defined(OS2) || defined(__OS2__)
-#define _SQUID_OS2_
-/*
-* FIXME: the os2 port of bash seems to have problems checking
-* the return codes of programs in if statements. These options
-* need to be overridden.
-*/
-#endif
-
-/* FD_SETSIZE must be redefined before including sys/types.h */
-
-/*
- * On some systems, FD_SETSIZE is set to something lower than the
- * actual number of files which can be opened. IRIX is one case,
- * NetBSD is another. So here we increase FD_SETSIZE to our
- * configure-discovered maximum *before* any system includes.
- */
-#define CHANGE_FD_SETSIZE 1
-
-/*
- * Cannot increase FD_SETSIZE on Linux, but we can increase __FD_SETSIZE
- * with glibc 2.2 (or later? remains to be seen). We do this by including
- * bits/types.h which defines __FD_SETSIZE first, then we redefine
- * __FD_SETSIZE. Ofcourse a user program may NEVER include bits/whatever.h
- * directly, so this is a dirty hack!
- */
-#if defined(_SQUID_LINUX_)
-#undef CHANGE_FD_SETSIZE
-#define CHANGE_FD_SETSIZE 0
-#include <features.h>
-#if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
-#if SQUID_MAXFD > DEFAULT_FD_SETSIZE
-#include <bits/types.h>
-#undef __FD_SETSIZE
-#define __FD_SETSIZE SQUID_MAXFD
-#endif
-#endif
-#endif
-
-/*
- * Cannot increase FD_SETSIZE on FreeBSD before 2.2.0, causes select(2)
- * to return EINVAL.
- * --Marian Durkovic <marian_at_svf.stuba.sk>
- * --Peter Wemm <peter_at_spinner.DIALix.COM>
- */
-#if defined(_SQUID_FREEBSD_)
-#include <osreldate.h>
-#if __FreeBSD_version < 220000
-#undef CHANGE_FD_SETSIZE
-#define CHANGE_FD_SETSIZE 0
-#endif
-#endif
-
-/*
- * Trying to redefine CHANGE_FD_SETSIZE causes a slew of warnings
- * on Mac OS X Server.
- */
-#if defined(_SQUID_APPLE_)
-#undef CHANGE_FD_SETSIZE
-#define CHANGE_FD_SETSIZE 0
-#endif
-
-/* Increase FD_SETSIZE if SQUID_MAXFD is bigger */
-#if CHANGE_FD_SETSIZE && SQUID_MAXFD > DEFAULT_FD_SETSIZE
-#define FD_SETSIZE SQUID_MAXFD
-#endif
 
 /* Typedefs for missing entries on a system */
 
-#include "squid_types.h"
-
 /* int8_t */
 #ifndef HAVE_INT8_T
 #if HAVE_CHAR && SIZEOF_CHAR == 1
@@ -318,40 +179,6 @@
 typedef long mtyp_t;
 #endif
 
-/*
- * On Solaris 9 x86, gcc may includes a "fixed" set of old system include files
- * that is incompatible with the updated Solaris header files.
- */
-#if defined(_SQUID_SOLARIS_) && (defined(i386) || defined(__i386))
-#ifndef HAVE_PAD128_T
-typedef union {
- long double _q;
- int32_t _l[4];
-} pad128_t;
-#endif
-#ifndef HAVE_UPAD128_T
-typedef union {
- long double _q;
- uint32_t _l[4];
-} upad128_t;
-#endif
-#endif
-
-/*
- * Don't allow inclusion of malloc.h on FreeBSD, Next and OpenBSD
- */
-#if defined(HAVE_MALLOC_H) && (defined(_SQUID_FREEBSD_) || defined(_SQUID_NEXT_) || defined(_SQUID_OPENBSD_) || defined(_SQUID_DRAGONFLY_))
-#undef HAVE_MALLOC_H
-#endif
-
-/*
- * res_init() is just a macro re-definition of __res_init on Linux (Debian/Ubuntu)
- */
-#if !defined(HAVE_RES_INIT) && defined(HAVE___RES_INIT) && !defined(res_init)
-#define res_init __res_init
-#define HAVE_RES_INIT HAVE___RES_INIT
-#endif
-
 #if !defined(CACHEMGR_HOSTNAME)
 #define CACHEMGR_HOSTNAME ""
 #else
@@ -435,33 +262,6 @@
 #define LEAK_CHECK_MODE 1
 #endif
 
-/*
- * valgrind debug support
- */
-#if WITH_VALGRIND
-#include <valgrind/memcheck.h>
-/* A little glue for older valgrind version prior to 3.2.0 */
-#ifndef VALGRIND_MAKE_MEM_NOACCESS
-#define VALGRIND_MAKE_MEM_NOACCESS VALGRIND_MAKE_NOACCESS
-#define VALGRIND_MAKE_MEM_UNDEFINED VALGRIND_MAKE_WRITABLE
-#define VALGRIND_MAKE_MEM_DEFINED VALGRIND_MAKE_READABLE
-#define VALGRIND_CHECK_MEM_IS_ADDRESSABLE VALGRIND_CHECK_WRITABLE
-#else
-#undef VALGRIND_MAKE_NOACCESS
-#undef VALGRIND_MAKE_WRITABLE
-#undef VALGRIND_MAKE_READABLE
-#endif
-#else
-#define VALGRIND_MAKE_MEM_NOACCESS(a,b) (0)
-#define VALGRIND_MAKE_MEM_UNDEFINED(a,b) (0)
-#define VALGRIND_MAKE_MEM_DEFINED(a,b) (0)
-#define VALGRIND_CHECK_MEM_IS_ADDRESSABLE(a,b) (0)
-#define VALGRIND_CHECK_MEM_IS_DEFINED(a,b) (0)
-#define VALGRIND_MALLOCLIKE_BLOCK(a,b,c,d)
-#define VALGRIND_FREELIKE_BLOCK(a,b)
-#define RUNNING_ON_VALGRIND 0
-#endif /* WITH_VALGRIND */
-
 
 /*
  * strnstr() is needed. The OS may not provide a working copy.

=== modified file 'lib/Makefile.am'
--- lib/Makefile.am 2009-01-21 03:47:47 +0000
+++ lib/Makefile.am 2009-02-07 11:28:44 +0000
@@ -47,13 +47,12 @@
 endif
 
 EXTRA_LIBRARIES = \
- libregex.a \
         libsspwin32.a
 noinst_LIBRARIES = \
         libmiscutil.a \
         libntlmauth.a \
- $(LIBSSPWIN32) \
- @LIBREGEX@
+ $(LIBSSPWIN32)
+
 #
 # dirent.c, encrypt.c and getopt.c are needed for native Windows support.
 #
@@ -99,8 +98,6 @@
         libTrie/src/TrieNode.o \
         @LIBOBJS@
 # $(top_srcdir)/include/version.h should be a dependency
-libregex_a_SOURCES = \
- GNUregex.c
 libntlmauth_a_SOURCES = \
         ntlmauth.c
 libntlmauth_a_LIBADD = \
@@ -108,7 +105,11 @@
 libsspwin32_a_SOURCES = \
         sspwin32.c
 
-INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include @SQUID_CPPUNIT_INC@
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include \
+ @SQUID_CPPUNIT_INC@
 ##FIXME - set these in configure.in and reuse
 
 check_PROGRAMS= \

=== modified file 'snmplib/Makefile.am'
--- snmplib/Makefile.am 2003-08-16 06:19:55 +0000
+++ snmplib/Makefile.am 2009-02-07 11:28:44 +0000
@@ -10,7 +10,11 @@
         mib.c snmp_api_error.c \
         snmp_msg.c \
         snmp_pdu.c snmplib_debug.c
-INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
 
 VERSION = 3.4
 DEFS = -DSQUID_SNMP=1

=== added directory 'squid-compat'
=== renamed file 'lib/GNUregex.c' => 'squid-compat/GnuRegex.c'
--- lib/GNUregex.c 2009-01-21 03:47:47 +0000
+++ squid-compat/GnuRegex.c 2009-01-21 08:13:42 +0000
@@ -34,6 +34,8 @@
 
 #include "config.h"
 
+#if USE_GNUREGEX /* only if squid needs it. Usually not */
+
 #if !HAVE_ALLOCA
 #define REGEX_MALLOC 1
 #endif
@@ -104,7 +106,7 @@
 
 
 /* Get the interface, including the syntax bits. */
-#include "GNUregex.h"
+#include "GnuRegex.h"
 
 /* Compile a fastmap for the compiled pattern in BUFFER; used to
  * accelerate searches. Return 0 if successful and -2 if was an
@@ -2362,10 +2364,14 @@
  * the pattern buffer.
  *
  * Returns 0 if we succeed, -2 if an internal error. */
-
+#ifdef STDC_HEADERS
+int
+re_compile_fastmap(struct re_pattern_buffer *bufp)
+#else
 int
 re_compile_fastmap(bufp)
 struct re_pattern_buffer *bufp;
+#endif
 {
     int j, k;
     fail_stack_type fail_stack;
@@ -4401,6 +4407,7 @@
         free(preg->translate);
     preg->translate = NULL;
 }
+#endif /* USE_GNUREGEX */
 
 /*
  * Local variables:

=== renamed file 'include/GNUregex.h' => 'squid-compat/GnuRegex.h'
--- include/GNUregex.h 2009-01-21 03:47:47 +0000
+++ squid-compat/GnuRegex.h 2009-01-21 08:13:42 +0000
@@ -1,10 +1,31 @@
 /*
  * $Id$
  */
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
 #ifndef SQUID_REGEXP_LIBRARY_H
 #define SQUID_REGEXP_LIBRARY_H
 
-#include "config.h"
+#if !USE_GNUREGEX /* try the system one by default */
+
+/* POSIX says that <sys/types.h> must be included (by the caller) before
+ * <regex.h>. */
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if HAVE_REGEX_H
+#include <regex.h>
+#endif
+
+
+#else /* USE_GNUREGEX */
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
 
 /* Definitions for data structures and routines for the regular
  * expression library, version 0.12.
@@ -405,6 +426,11 @@
               size_t errbuf_size));
 extern void regfree _RE_ARGS((regex_t * preg));
 
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* USE_GNUREGEX */
 #endif /* SQUID_REGEXP_LIBRARY_H */
 
 /*

=== added file 'squid-compat/Makefile.am'
--- squid-compat/Makefile.am 1970-01-01 00:00:00 +0000
+++ squid-compat/Makefile.am 2009-02-09 08:49:31 +0000
@@ -0,0 +1,65 @@
+#
+# Makefile for the Squid Portability Library
+#
+
+# Housekeeping, shared by all Squid Makefiles.
+# TODO: make this set by configure?
+AM_CFLAGS = @SQUID_CFLAGS@
+AM_CXXFLAGS = @SQUID_CXXFLAGS@
+DEFS = @DEFS@
+CLEANFILES =
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/src \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/lib \
+ @SQUID_CPPUNIT_INC@
+
+$(OBJS): $(top_srcdir)/include/version.h $(top_srcdir)/include/autoconf.h
+
+# Ideally this would be 100% inline functions and macro wrappers.
+
+# Port Specific Configurations
+
+noinst_LTLIBRARIES = libcompat.la
+
+libcompat_la_SOURCES = \
+ compat.h \
+ osdetect.h \
+ compat_shared.h \
+ fdsetsize.h \
+ gnuregex.h \
+ stdvarargs.h \
+ valgrind.h \
+ \
+ os/aix.h \
+ os/freebsd.h \
+ os/hpux.h \
+ os/linux.h \
+ os/mswin.h \
+ os/next.h \
+ os/openbsd.h \
+ os/qnx.h \
+ os/sgi.h \
+ os/solaris.h \
+ os/sunos.h \
+ os/windows.h \
+ \
+ compat.cc \
+ GnuRegex.c
+
+
+check_PROGRAMS= testHeaders
+TESTS= $(check_PROGRAMS)
+
+## Special Universal .h dependency test script
+## aborts if error encountered
+testHeaders: $(top_srcdir)/squid-compat/*.h $(top_srcdir)/squid-compat/os/*.h
+ $(SHELL) $(top_srcdir)/test-suite/testheaders.sh "$(CXXCOMPILE)" "$(top_srcdir)/squid-compat/" || exit 1
+ $(SHELL) $(top_srcdir)/test-suite/testheaders.sh "$(CXXCOMPILE)" "$(top_srcdir)/squid-compat/os/" || exit 1
+
+## No such file...
+testHeaders.c:
+ touch testHeaders.c
+CLEANFILES += testHeaders.c

=== added file 'squid-compat/assert.h'
--- squid-compat/assert.h 1970-01-01 00:00:00 +0000
+++ squid-compat/assert.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,56 @@
+/*
+ * $Id$
+ *
+ * AUTHOR: Duane Wessels
+ *
+ * SQUID Web Proxy Cache http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ * Squid is the result of efforts by numerous individuals from
+ * the Internet community; see the CONTRIBUTORS file for full
+ * details. Many organizations have provided support for Squid's
+ * development; see the SPONSORS file for full details. Squid is
+ * Copyrighted (C) 2001 by the Regents of the University of
+ * California; see the COPYRIGHT file for full details. Squid
+ * incorporates software developed and/or copyrighted by other
+ * sources; see the CREDITS file for full details.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_ASSERT_H
+#define SQUID_ASSERT_H
+
+#if defined(NODEBUG)
+#define assert(EX) ((void)0)
+#elif STDC_HEADERS
+#define assert(EX) ((EX)?((void)0):xassert( # EX , __FILE__, __LINE__))
+#else
+#define assert(EX) ((EX)?((void)0):xassert("EX", __FILE__, __LINE__))
+#endif
+
+#ifdef __cplusplus
+extern "C" void
+#else
+extern void
+#endif
+xassert(const char *, const char *, int);
+
+#endif /* SQUID_ASSERT_H */

=== added file 'squid-compat/compat.cc'
=== added file 'squid-compat/compat.h'
--- squid-compat/compat.h 1970-01-01 00:00:00 +0000
+++ squid-compat/compat.h 2009-02-08 11:52:11 +0000
@@ -0,0 +1,95 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef _SQUID_COMPAT_H
+#define _SQUID_COMPAT_H
+
+/*
+ * From discussions it was chosen to push compat code as far down as possible.
+ * That means we can have a seperate squid-compat for most
+ * compatability and portability hacks and resolutions.
+ *
+ * This file is meant to collate all those hacks files together and
+ * provide a simple include for them in the core squid headers
+ * (presently squid.h and config.h)
+ *
+ * It should not be included directly in any of the squid sources.
+ * If your code requires any symbols from here you should be importing
+ * config.h/squid.h at the top line of your .cc or .h file.
+ */
+
+
+/******************************************************/
+/* Define the _SQUID_TYPE_ based on a guess of the OS */
+/* NP: this MUST come first within compat.h */
+/******************************************************/
+#include "squid-compat/osdetect.h"
+
+
+/*****************************************************/
+/* FDSETSIZE is messy and needs to be done before */
+/* sys/types.h are defined. */
+/*****************************************************/
+#include "squid-compat/fdsetsize.h"
+
+
+/*****************************************************/
+/* Global type re-definitions */
+/* this also takes care of the basic system includes */
+/*****************************************************/
+
+/** On linux this must be defined to get PRId64 and friends */
+#define __STDC_FORMAT_MACROS
+
+#include "squid_types.h"
+
+/*****************************************************/
+/* per-OS hacks. One file per OS. */
+/* OS-macro wrapping should be done inside the OS .h */
+/*****************************************************/
+
+#include "squid-compat/os/aix.h"
+#include "squid-compat/os/dragonfly.h"
+#include "squid-compat/os/freebsd.h"
+#include "squid-compat/os/hpux.h"
+#include "squid-compat/os/linux.h"
+#include "squid-compat/os/mswin.h"
+#include "squid-compat/os/next.h"
+#include "squid-compat/os/openbsd.h"
+#include "squid-compat/os/os2.h"
+#include "squid-compat/os/qnx.h"
+#include "squid-compat/os/sgi.h"
+#include "squid-compat/os/solaris.h"
+#include "squid-compat/os/sunos.h"
+#include "squid-compat/os/windows.h"
+
+
+/*****************************************************/
+/* portabilities shared between all platforms and */
+/* components as found to be needed */
+/*****************************************************/
+
+#include "squid-compat/compat_shared.h"
+#include "squid-compat/stdvarargs.h"
+#include "squid-compat/assert.h"
+
+/*****************************************************/
+/* component-specific portabilities */
+/*****************************************************/
+
+/* Valgrind API macros changed between two versions squid supports */
+#include "squid-compat/valgrind.h"
+
+/* Endian functions are usualy handled by the OS but not always. */
+#include "squid_endian.h"
+
+/**
+ * A Regular Expression library is bundled with Squid.
+ * Default is to use a system provided one, but the bundle
+ * may be used instead with explicit configuration.
+ */
+#include "squid-compat/GnuRegex.h"
+
+
+#endif /* _SQUID_COMPAT_H */

=== added file 'squid-compat/compat_shared.h'
--- squid-compat/compat_shared.h 1970-01-01 00:00:00 +0000
+++ squid-compat/compat_shared.h 2009-01-21 08:05:22 +0000
@@ -0,0 +1,211 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef _SQUID_COMPAT_SHARED_H
+#define _SQUID_COMPAT_SHARED_H
+
+/*
+ * This file contains all the compatibility and portability hacks
+ * Which are general-case and shared between all OS and support programs.
+ *
+ * If an OS-specific hack is needed there are per-OS files for that in
+ * the os/ sub-directory here.
+ *
+ * These hacks should be platform and location agnostic.
+ * A quick look-over of the code already here should give you an idea
+ * of the requirements for wrapping your hack for safe portability.
+ */
+
+
+/*
+ * sys/resource.h and sys/time.h are apparently order-dependant.
+ */
+#if HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#if HAVE_SYS_RESOURCE_H
+#include <sys/resource.h> /* needs sys/time.h above it */
+#endif
+
+/*
+ * DIRENT functionality can apparently come from many places.
+ * I believe these should really be done by OS-specific compat
+ * files, but for now its left here.
+ */
+#if HAVE_DIRENT_H
+#include <dirent.h>
+#define NAMLEN(dirent) strlen((dirent)->d_name)
+
+#else /* if not HAVE_DIRENT_H */
+#define dirent direct
+#define NAMLEN(dirent) (dirent)->d_namlen
+#if HAVE_SYS_NDIR_H
+#include <sys/ndir.h>
+#endif /* HAVE_SYS_NDIR_H */
+#if HAVE_SYS_DIR_H
+#include <sys/dir.h>
+#endif /* HAVE_SYS_DIR_H */
+#if HAVE_NDIR_H
+#include <ndir.h>
+#endif /* HAVE_NDIR_H */
+#endif /* HAVE_DIRENT_H */
+
+
+/*
+ * Filedescriptor limits in the different select loops
+ *
+ * NP: FreeBSD 7 defines FD_SETSIZE as unsigned but Squid needs
+ * it to be signed to compare it with signed values.
+ * Linux and others including FreeBSD <7, define it as signed.
+ * If this causes any issues please contact squid-dev_at_squid-cache.org
+ */
+#if defined(USE_SELECT) || defined(USE_SELECT_WIN32)
+/* Limited by design */
+# define SQUID_MAXFD_LIMIT ((signed int)FD_SETSIZE)
+
+#elif defined(USE_POLL)
+/* Limited due to delay pools */
+# define SQUID_MAXFD_LIMIT ((signed int)FD_SETSIZE)
+
+#elif defined(USE_KQUEUE) || defined(USE_EPOLL)
+# define SQUID_FDSET_NOUSE 1
+
+#else
+# error Unknown select loop model!
+#endif
+
+
+
+#if !HAVE_STRUCT_RUSAGE
+/**
+ * If we don't have getrusage() then we create a fake structure
+ * with only the fields Squid cares about. This just makes the
+ * source code cleaner, so we don't need lots of #ifdefs in other
+ * places
+ */
+struct rusage
+{
+ struct timeval ru_stime;
+ struct timeval ru_utime;
+ int ru_maxrss;
+ int ru_majflt;
+};
+#endif /* !HAVE_STRUCT_RUSAGE */
+
+
+/* templates require C++ */
+#ifdef __cplusplus
+
+#ifndef min
+/**
+ * min() comparison may not always be provided.
+ * Squid bundles this template for when its needed.
+ * May be used on any type which provides operator '<'
+ */
+template<class A>
+inline A const &
+min(A const & lhs, A const & rhs)
+{
+ if (rhs < lhs)
+ return rhs;
+ return lhs;
+}
+#endif
+#define XMIN(x,y) (min (x,y))
+
+#ifndef max
+/**
+ * max() comparison may not always be provided.
+ * Squid bundles this template for when its needed.
+ * May be used on any type which provides operator '>'
+ */
+template<class A>
+inline A const &
+max(A const & lhs, A const & rhs)
+{
+ if (rhs > lhs)
+ return rhs;
+ return lhs;
+}
+#endif
+#define XMAX(a,b) (max (a,b))
+
+#endif /* __cplusplus */
+
+/**
+ * tempnam() not provided by all systems
+ * TODO: detect WHICH systems and move to their OS-specific compat files
+ */
+#if !HAVE_TEMPNAM
+#include "tempnam.h"
+#endif
+
+/**
+ * strsep() not provided by all systems
+ * TODO: detect WHICH systems and move to their OS-specific compat files
+ */
+#if !HAVE_STRSEP
+#include "strsep.h"
+#endif
+
+/**
+ * strtoll() not provided by all systems
+ * TODO: detect WHICH systems and move to their OS-specific compat files
+ */
+#if !HAVE_STRTOLL
+#include "strtoll.h"
+#endif
+
+/**
+ * Common shared definition of what whitespace consists of for string tests
+ */
+#define w_space " \t\n\r"
+
+/**
+ * initgroups() not provided by all systems
+ * TODO: detect WHICH systems and move to their OS-specific compat files
+ */
+#if !HAVE_INITGROUPS
+#include "initgroups.h"
+#endif
+
+
+/* REQUIRED for the below logics. If they move this needs to as well */
+#if HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#if defined(O_NONBLOCK)
+/**
+ * We used to assume O_NONBLOCK was broken on Solaris, but evidence
+ * now indicates that its fine on Solaris 8, and in fact required for
+ * properly detecting EOF on FIFOs. So now we assume that if
+ * its defined, it works correctly on all operating systems.
+ */
+#define SQUID_NONBLOCK O_NONBLOCK
+#else
+/** O_NDELAY is our fallback. */
+#define SQUID_NONBLOCK O_NDELAY
+#endif
+
+
+/**
+ * Signalling flags are apparently not always provided.
+ * TODO find out if these can be moved into specific OS portability files.
+ */
+#ifndef SA_RESTART
+#define SA_RESTART 0
+#endif
+#ifndef SA_NODEFER
+#define SA_NODEFER 0
+#endif
+#ifndef SA_RESETHAND
+#define SA_RESETHAND 0
+#endif
+#if SA_RESETHAND == 0 && defined(SA_ONESHOT)
+#undef SA_RESETHAND
+#define SA_RESETHAND SA_ONESHOT
+#endif
+
+
+#endif /* _SQUID_COMPAT_SHARED_H */

=== added file 'squid-compat/fdsetsize.h'
--- squid-compat/fdsetsize.h 1970-01-01 00:00:00 +0000
+++ squid-compat/fdsetsize.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,90 @@
+#ifndef SQUID_FDSETSIZE_H
+#define SQUID_FDSETSIZE_H
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+/* FD_SETSIZE must be redefined before including sys/types.h */
+#if 0
+/* AYJ: would dearly like to use this to enforce include order
+ but at present some helpers don't follow the squid include methodology.
+ that will need fixing later.
+*/
+#ifdef _SYS_TYPES_H
+#error squid_fdsetsize.h for FDSETSIZE must be included before sys/types.h
+#error Make sure that squid.h or config.h is the first file included by your .cc
+#endif
+#endif /* 0 */
+/*
+ * On some systems, FD_SETSIZE is set to something lower than the
+ * actual number of files which can be opened. IRIX is one case,
+ * NetBSD is another. So here we increase FD_SETSIZE to our
+ * configure-discovered maximum *before* any system includes.
+ */
+#define CHANGE_FD_SETSIZE 1
+
+/*
+ * Cannot increase FD_SETSIZE on Linux, but we can increase __FD_SETSIZE
+ * with glibc 2.2 (or later? remains to be seen). We do this by including
+ * bits/types.h which defines __FD_SETSIZE first, then we redefine
+ * __FD_SETSIZE. Ofcourse a user program may NEVER include bits/whatever.h
+ * directly, so this is a dirty hack!
+ */
+#if defined(_SQUID_LINUX_)
+#undef CHANGE_FD_SETSIZE
+#define CHANGE_FD_SETSIZE 0
+#include <features.h>
+#if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
+#if SQUID_MAXFD > DEFAULT_FD_SETSIZE
+#include <bits/types.h>
+#undef __FD_SETSIZE
+#define __FD_SETSIZE SQUID_MAXFD
+#endif
+#endif
+#endif
+
+/*
+ * Cannot increase FD_SETSIZE on FreeBSD before 2.2.0, causes select(2)
+ * to return EINVAL.
+ * --Marian Durkovic <marian_at_svf.stuba.sk>
+ * --Peter Wemm <peter_at_spinner.DIALix.COM>
+ */
+#if defined(_SQUID_FREEBSD_)
+#include <osreldate.h>
+#if __FreeBSD_version < 220000
+#undef CHANGE_FD_SETSIZE
+#define CHANGE_FD_SETSIZE 0
+#endif
+#endif
+
+/*
+ * Trying to redefine CHANGE_FD_SETSIZE causes a slew of warnings
+ * on Mac OS X Server.
+ */
+#if defined(_SQUID_APPLE_)
+#undef CHANGE_FD_SETSIZE
+#define CHANGE_FD_SETSIZE 0
+#endif
+
+/* Increase FD_SETSIZE if SQUID_MAXFD is bigger */
+#if CHANGE_FD_SETSIZE && SQUID_MAXFD > DEFAULT_FD_SETSIZE
+#define FD_SETSIZE SQUID_MAXFD
+#endif
+
+
+/*
+ * Trap unintentional use of fd_set. Must not be used outside the
+ * select code as it only supports FD_SETSIZE number of filedescriptors
+ * and Squid may be running with a lot more..
+ * But only for code linked into Squid, not the helpers.. (unlinkd, pinger)
+ */
+#ifdef SQUID_FDSET_NOUSE
+# ifndef SQUID_HELPER
+# define fd_set ERROR_FD_SET_USED
+# endif
+#endif
+
+#endif /* SQUID_FDSETSIZE_H */

=== added directory 'squid-compat/os'
=== added file 'squid-compat/os/aix.h'
--- squid-compat/os/aix.h 1970-01-01 00:00:00 +0000
+++ squid-compat/os/aix.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,27 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_AIX_H
+#define SQUID_OS_AIX_H
+
+#ifdef _SQUID_AIX_
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+
+/*
+ * Syslog facility on AIX requires some portability wrappers
+ */
+#ifdef HAVE_SYSLOG_H
+#define _XOPEN_EXTENDED_SOURCE
+#define _XOPEN_SOURCE_EXTENDED 1
+#endif
+
+
+#endif /* _SQUID_AIX_ */
+#endif /* SQUID_OS_AIX_H */

=== added file 'squid-compat/os/dragonfly.h'
--- squid-compat/os/dragonfly.h 1970-01-01 00:00:00 +0000
+++ squid-compat/os/dragonfly.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,25 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_DRAGONFLY_H
+#define SQUID_OS_DRAGONFLY_H
+
+#ifdef _SQUID_DRAGONFLY_
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+/*
+ * Don't allow inclusion of malloc.h
+ */
+#if defined(HAVE_MALLOC_H)
+#undef HAVE_MALLOC_H
+#endif
+
+
+#endif /* _SQUID_DRAGONFLY_ */
+#endif /* SQUID_OS_DRAGONFLY_H */

=== added file 'squid-compat/os/freebsd.h'
--- squid-compat/os/freebsd.h 1970-01-01 00:00:00 +0000
+++ squid-compat/os/freebsd.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,31 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_FREEBSD_H
+#define SQUID_OS_FREEBSD_H
+
+#ifdef _SQUID_FREEBSD_
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+
+#if USE_ASYNC_IO && defined(LINUXTHREADS)
+#define _SQUID_LINUX_THREADS_
+#endif
+
+/*
+ * Don't allow inclusion of malloc.h
+ */
+#if defined(HAVE_MALLOC_H)
+#undef HAVE_MALLOC_H
+#endif
+
+#define _etext etext
+
+#endif /* _SQUID_FREEBSD_ */
+#endif /* SQUID_OS_FREEBSD_H */

=== added file 'squid-compat/os/hpux.h'
--- squid-compat/os/hpux.h 1970-01-01 00:00:00 +0000
+++ squid-compat/os/hpux.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,32 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_HPUX_H
+#define SQUID_OS_PHUX_H
+
+#ifdef _SQUID_HPUX_
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+
+#if !defined(HAVE_GETPAGESIZE)
+#define HAVE_GETPAGESIZE
+#define getpagesize( ) sysconf(_SC_PAGE_SIZE)
+#endif
+
+/*
+ * getrusage(...) not available on some HPUX
+ */
+#if !HAVE_GETRUSAGE
+#define HAVE_GETRUSAGE 1
+#define getrusage(a, b) syscall(SYS_GETRUSAGE, a, b)
+#endif
+
+
+#endif /* _SQUID_HPUX_ */
+#endif /* SQUID_OS_HPUX_H */

=== added file 'squid-compat/os/linux.h'
--- squid-compat/os/linux.h 1970-01-01 00:00:00 +0000
+++ squid-compat/os/linux.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,31 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_LINUX_H
+#define SQUID_OS_LINUX_H
+
+#ifdef _SQUID_LINUX_
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+
+#if USE_ASYNC_IO
+#define _SQUID_LINUX_THREADS_
+#endif
+
+/*
+ * res_init() is just a macro re-definition of __res_init on Linux (Debian/Ubuntu)
+ */
+#if !defined(HAVE_RES_INIT) && defined(HAVE___RES_INIT) && !defined(res_init)
+#define res_init __res_init
+#define HAVE_RES_INIT HAVE___RES_INIT
+#endif
+
+
+#endif /* _SQUID_LINUX_ */
+#endif /* SQUID_OS_LINUX_H */

=== added file 'squid-compat/os/mswin.h'
--- squid-compat/os/mswin.h 1970-01-01 00:00:00 +0000
+++ squid-compat/os/mswin.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,768 @@
+/*
+ * $Id$
+ *
+ * AUTHOR: Andrey Shorin <tolsty_at_tushino.com>
+ * AUTHOR: Guido Serassio <serassio_at_squid-cache.org>
+ *
+ * SQUID Web Proxy Cache http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ * Squid is the result of efforts by numerous individuals from
+ * the Internet community; see the CONTRIBUTORS file for full
+ * details. Many organizations have provided support for Squid's
+ * development; see the SPONSORS file for full details. Squid is
+ * Copyrighted (C) 2001 by the Regents of the University of
+ * California; see the COPYRIGHT file for full details. Squid
+ * incorporates software developed and/or copyrighted by other
+ * sources; see the CREDITS file for full details.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_MSWIN_H
+#define SQUID_OS_MSWIN_H
+
+#ifdef _SQUID_WIN32_
+
+#define ACL WindowsACL
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+#if _MSC_VER == 1400
+#define _CRT_SECURE_NO_DEPRECATE
+#pragma warning( disable : 4290 )
+#pragma warning( disable : 4996 )
+#endif
+#endif
+
+#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64
+# define __USE_FILE_OFFSET64 1
+#endif
+
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+
+typedef unsigned char uint8_t;
+typedef unsigned short uint16_t;
+typedef unsigned int uint32_t;
+typedef unsigned __int64 uint64_t;
+
+typedef long pid_t;
+
+#if defined __USE_FILE_OFFSET64
+typedef int64_t off_t;
+typedef uint64_t ino_t;
+
+#else
+typedef long off_t;
+typedef unsigned long ino_t;
+
+#endif
+
+#define INT64_MAX _I64_MAX
+#define INT64_MIN _I64_MIN
+
+#include "default_config_file.h"
+/* Some tricks for MS Compilers */
+#define __STDC__ 1
+#define THREADLOCAL __declspec(thread)
+
+#elif defined(__GNUC__) /* gcc environment */
+
+#define THREADLOCAL __attribute__((section(".tls")))
+
+#endif
+
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+#define alloca _alloca
+#endif
+#define chdir _chdir
+#define dup _dup
+#define dup2 _dup2
+#define fdopen _fdopen
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+#define fileno _fileno
+#define fstat _fstati64
+#endif
+#define ftruncate WIN32_ftruncate
+#define getcwd _getcwd
+#define getpid _getpid
+#define getrusage WIN32_getrusage
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+#define lseek _lseeki64
+#define memccpy _memccpy
+#define mkdir(p) _mkdir(p)
+#define mktemp _mktemp
+#endif
+#define pclose _pclose
+#define pipe WIN32_pipe
+#define popen _popen
+#define putenv _putenv
+#define setmode _setmode
+#define sleep(t) Sleep((t)*1000)
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+#define snprintf _snprintf
+#define stat _stati64
+#define strcasecmp _stricmp
+#define strdup _strdup
+#define strlwr _strlwr
+#define strncasecmp _strnicmp
+#define tempnam _tempnam
+#endif
+#define truncate WIN32_truncate
+#define umask _umask
+#define unlink _unlink
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+#define vsnprintf _vsnprintf
+#endif
+
+#define O_RDONLY _O_RDONLY
+#define O_WRONLY _O_WRONLY
+#define O_RDWR _O_RDWR
+#define O_APPEND _O_APPEND
+
+#define O_CREAT _O_CREAT
+#define O_TRUNC _O_TRUNC
+#define O_EXCL _O_EXCL
+
+#define O_TEXT _O_TEXT
+#define O_BINARY _O_BINARY
+#define O_RAW _O_BINARY
+#define O_TEMPORARY _O_TEMPORARY
+#define O_NOINHERIT _O_NOINHERIT
+#define O_SEQUENTIAL _O_SEQUENTIAL
+#define O_RANDOM _O_RANDOM
+#define O_NDELAY 0
+
+#define S_IFMT _S_IFMT
+#define S_IFDIR _S_IFDIR
+#define S_IFCHR _S_IFCHR
+#define S_IFREG _S_IFREG
+#define S_IREAD _S_IREAD
+#define S_IWRITE _S_IWRITE
+#define S_IEXEC _S_IEXEC
+
+#define S_IRWXO 007
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+#define S_ISDIR(m) (((m) & _S_IFDIR) == _S_IFDIR)
+#endif
+
+#define SIGHUP 1 /* hangup */
+#define SIGKILL 9 /* kill (cannot be caught or ignored) */
+#define SIGBUS 10 /* bus error */
+#define SIGPIPE 13 /* write on a pipe with no one to read it */
+#define SIGCHLD 20 /* to parent on child stop or exit */
+#define SIGUSR1 30 /* user defined signal 1 */
+#define SIGUSR2 31 /* user defined signal 2 */
+
+typedef unsigned short int ushort;
+typedef int uid_t;
+typedef int gid_t;
+
+struct passwd {
+ char *pw_name; /* user name */
+ char *pw_passwd; /* user password */
+ uid_t pw_uid; /* user id */
+ gid_t pw_gid; /* group id */
+ char *pw_gecos; /* real name */
+ char *pw_dir; /* home directory */
+ char *pw_shell; /* shell program */
+};
+
+struct group {
+ char *gr_name; /* group name */
+ char *gr_passwd; /* group password */
+ gid_t gr_gid; /* group id */
+ char **gr_mem; /* group members */
+};
+
+struct statfs {
+ long f_type; /* type of filesystem (see below) */
+ long f_bsize; /* optimal transfer block size */
+ long f_blocks; /* total data blocks in file system */
+ long f_bfree; /* free blocks in fs */
+ long f_bavail; /* free blocks avail to non-superuser */
+ long f_files; /* total file nodes in file system */
+ long f_ffree; /* free file nodes in fs */
+ long f_fsid; /* file system id */
+ long f_namelen; /* maximum length of filenames */
+ long f_spare[6]; /* spare for later */
+};
+
+#ifndef HAVE_GETTIMEOFDAY
+struct timezone {
+ int tz_minuteswest; /* minutes west of Greenwich */
+ int tz_dsttime; /* type of dst correction */
+};
+#endif
+
+#define CHANGE_FD_SETSIZE 1
+#if CHANGE_FD_SETSIZE && SQUID_MAXFD > DEFAULT_FD_SETSIZE
+#define FD_SETSIZE SQUID_MAXFD
+#endif
+
+#include <stddef.h>
+#include <process.h>
+#include <errno.h>
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+#include <winsock2.h>
+#endif
+#include <ws2tcpip.h>
+#if (EAI_NODATA == EAI_NONAME)
+#undef EAI_NODATA
+#define EAI_NODATA WSANO_DATA
+#endif
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+/* Hack to suppress compiler warnings on FD_SET() & FD_CLR() */
+#pragma warning (push)
+#pragma warning (disable:4142)
+#endif
+/* prevent inclusion of wingdi.h */
+#define NOGDI
+#include <ws2spi.h>
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+#pragma warning (pop)
+#endif
+#include <io.h>
+#include <stdlib.h>
+
+typedef char * caddr_t;
+
+#undef FD_CLOSE
+#undef FD_OPEN
+#undef FD_READ
+#undef FD_WRITE
+#define EISCONN WSAEISCONN
+#define EINPROGRESS WSAEINPROGRESS
+#define EWOULDBLOCK WSAEWOULDBLOCK
+#define EALREADY WSAEALREADY
+#define ETIMEDOUT WSAETIMEDOUT
+#define ECONNREFUSED WSAECONNREFUSED
+#define ECONNRESET WSAECONNRESET
+#define ENOTCONN WSAENOTCONN
+#define ERESTART WSATRY_AGAIN
+#define EAFNOSUPPORT WSAEAFNOSUPPORT
+
+#undef h_errno
+#define h_errno errno /* we'll set it ourselves */
+
+#undef FD_CLR
+#define FD_CLR(fd, set) do { \
+ u_int __i; \
+ SOCKET __sock = _get_osfhandle(fd); \
+ for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count ; __i++) { \
+ if (((fd_set FAR *)(set))->fd_array[__i] == __sock) { \
+ while (__i < ((fd_set FAR *)(set))->fd_count-1) { \
+ ((fd_set FAR *)(set))->fd_array[__i] = \
+ ((fd_set FAR *)(set))->fd_array[__i+1]; \
+ __i++; \
+ } \
+ ((fd_set FAR *)(set))->fd_count--; \
+ break; \
+ } \
+ } \
+} while(0)
+
+#undef FD_SET
+#define FD_SET(fd, set) do { \
+ u_int __i; \
+ SOCKET __sock = _get_osfhandle(fd); \
+ for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count; __i++) { \
+ if (((fd_set FAR *)(set))->fd_array[__i] == (__sock)) { \
+ break; \
+ } \
+ } \
+ if (__i == ((fd_set FAR *)(set))->fd_count) { \
+ if (((fd_set FAR *)(set))->fd_count < FD_SETSIZE) { \
+ ((fd_set FAR *)(set))->fd_array[__i] = (__sock); \
+ ((fd_set FAR *)(set))->fd_count++; \
+ } \
+ } \
+} while(0)
+
+#undef FD_ISSET
+#define FD_ISSET(fd, set) Win32__WSAFDIsSet(fd, (fd_set FAR *)(set))
+
+/* internal to Microsoft CRTLIB */
+typedef struct {
+ long osfhnd; /* underlying OS file HANDLE */
+ char osfile; /* attributes of file (e.g., open in text mode?) */
+ char pipech; /* one char buffer for handles opened on pipes */
+#ifdef _MT
+ int lockinitflag;
+ CRITICAL_SECTION lock;
+#endif /* _MT */
+} ioinfo;
+#define IOINFO_L2E 5
+#define IOINFO_ARRAY_ELTS (1 << IOINFO_L2E)
+#define _pioinfo(i) ( __pioinfo[(i) >> IOINFO_L2E] + ((i) & (IOINFO_ARRAY_ELTS - 1)) )
+#define _osfile(i) ( _pioinfo(i)->osfile )
+#define _osfhnd(i) ( _pioinfo(i)->osfhnd )
+#define FOPEN 0x01 /* file handle open */
+
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+
+SQUIDCEXTERN _CRTIMP ioinfo * __pioinfo[];
+SQUIDCEXTERN int __cdecl _free_osfhnd(int);
+
+#elif defined(__MINGW32__) /* MinGW environment */
+
+__MINGW_IMPORT ioinfo * __pioinfo[];
+SQUIDCEXTERN int _free_osfhnd(int);
+
+#endif
+
+SQUIDCEXTERN THREADLOCAL int ws32_result;
+
+#define strerror(e) WIN32_strerror(e)
+
+#ifdef __cplusplus
+
+inline
+int close(int fd)
+{
+ char l_so_type[sizeof(int)];
+ int l_so_type_siz = sizeof(l_so_type);
+ SOCKET sock = _get_osfhandle(fd);
+
+ if (::getsockopt(sock, SOL_SOCKET, SO_TYPE, l_so_type, &l_so_type_siz) == 0) {
+ int result = 0;
+ if (closesocket(sock) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ result = 1;
+ }
+ _free_osfhnd(fd);
+ _osfile(fd) = 0;
+ return result;
+ } else
+ return _close(fd);
+}
+
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+
+#ifndef _S_IREAD
+#define _S_IREAD 0x0100
+#endif
+
+#ifndef _S_IWRITE
+#define _S_IWRITE 0x0080
+#endif
+
+inline
+int open(const char *filename, int oflag, int pmode = 0)
+{
+ return _open(filename, oflag, pmode & (_S_IREAD | _S_IWRITE));
+}
+#endif
+
+inline
+int read(int fd, void * buf, size_t siz)
+{
+ char l_so_type[sizeof(int)];
+ int l_so_type_siz = sizeof(l_so_type);
+ SOCKET sock = _get_osfhandle(fd);
+
+ if (::getsockopt(sock, SOL_SOCKET, SO_TYPE, l_so_type, &l_so_type_siz) == 0)
+ return ::recv(sock, (char FAR *) buf, (int)siz, 0);
+ else
+ return _read(fd, buf, (unsigned int)siz);
+}
+
+inline
+int write(int fd, const void * buf, size_t siz)
+{
+ char l_so_type[sizeof(int)];
+ int l_so_type_siz = sizeof(l_so_type);
+ SOCKET sock = _get_osfhandle(fd);
+
+ if (::getsockopt(sock, SOL_SOCKET, SO_TYPE, l_so_type, &l_so_type_siz) == 0)
+ return ::send(sock, (char FAR *) buf, siz, 0);
+ else
+ return _write(fd, buf, siz);
+}
+
+inline
+char *index(const char *s, int c)
+{
+ return (char *)strchr(s,c);
+}
+
+/** \cond AUTODOCS-IGNORE */
+namespace Squid
+{
+/** \endcond */
+
+inline
+int accept(int s, struct sockaddr * a, size_t * l)
+{
+ SOCKET result;
+ if ((result = ::accept(_get_osfhandle(s), a, (int *)l)) == INVALID_SOCKET) {
+ if (WSAEMFILE == (errno = WSAGetLastError()))
+ errno = EMFILE;
+ return -1;
+ } else
+ return _open_osfhandle(result, 0);
+}
+
+inline
+int bind(int s, struct sockaddr * n, int l)
+{
+ if (::bind(_get_osfhandle(s),n,l) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
+}
+
+inline
+int connect(int s, const struct sockaddr * n, int l)
+{
+ if (::connect(_get_osfhandle(s),n,l) == SOCKET_ERROR) {
+ if (WSAEMFILE == (errno = WSAGetLastError()))
+ errno = EMFILE;
+ return -1;
+ } else
+ return 0;
+}
+
+inline
+struct hostent * gethostbyname (const char *n) {
+ HOSTENT FAR * result;
+ if ((result = ::gethostbyname(n)) == NULL)
+ errno = WSAGetLastError();
+ return result;
+}
+#define gethostbyname(n) Squid::gethostbyname(n)
+
+inline
+SERVENT FAR* getservbyname (const char * n, const char * p)
+{
+ SERVENT FAR * result;
+ if ((result = ::getservbyname(n, p)) == NULL)
+ errno = WSAGetLastError();
+ return result;
+}
+#define getservbyname(n,p) Squid::getservbyname(n,p)
+
+inline
+HOSTENT FAR * gethostbyaddr(const char * a, int l, int t)
+{
+ HOSTENT FAR * result;
+ if ((result = ::gethostbyaddr(a, l, t)) == NULL)
+ errno = WSAGetLastError();
+ return result;
+}
+#define gethostbyaddr(a,l,t) Squid::gethostbyaddr(a,l,t)
+
+inline
+int getsockname(int s, struct sockaddr * n, size_t * l)
+{
+ if ((::getsockname(_get_osfhandle(s), n, (int *)l)) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
+}
+
+inline
+int gethostname(char * n, size_t l)
+{
+ if ((::gethostname(n, l)) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
+}
+#define gethostname(n,l) Squid::gethostname(n,l)
+
+inline
+int getsockopt(int s, int l, int o, void * v, int * n)
+{
+ Sleep(1);
+ if ((::getsockopt(_get_osfhandle(s), l, o,(char *) v, n)) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
+}
+
+/* Simple ioctl() emulation */
+inline
+int ioctl(int s, int c, void * a)
+{
+ if ((::ioctlsocket(_get_osfhandle(s), c, (u_long FAR *)a)) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
+}
+
+inline
+int ioctlsocket(int s, long c, u_long FAR * a)
+{
+ if ((::ioctlsocket(_get_osfhandle(s), c, a)) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
+}
+
+inline
+int listen(int s, int b)
+{
+ if (::listen(_get_osfhandle(s), b) == SOCKET_ERROR) {
+ if (WSAEMFILE == (errno = WSAGetLastError()))
+ errno = EMFILE;
+ return -1;
+ } else
+ return 0;
+}
+#define listen(s,b) Squid::listen(s,b)
+
+inline
+int recv(int s, void * b, size_t l, int f)
+{
+ int result;
+ if ((result = ::recv(_get_osfhandle(s), (char *)b, l, f)) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return result;
+}
+
+inline
+int recvfrom(int s, void * b, size_t l, int f, struct sockaddr * fr, size_t * fl)
+{
+ int result;
+ if ((result = ::recvfrom(_get_osfhandle(s), (char *)b, l, f, fr, (int *)fl)) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return result;
+}
+
+inline
+int select(int n, fd_set * r, fd_set * w, fd_set * e, struct timeval * t)
+{
+ int result;
+ if ((result = ::select(n,r,w,e,t)) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return result;
+}
+#define select(n,r,w,e,t) Squid::select(n,r,w,e,t)
+
+inline
+int send(int s, const void * b, size_t l, int f)
+{
+ int result;
+ if ((result = ::send(_get_osfhandle(s), (char *)b, l, f)) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return result;
+}
+
+inline
+int sendto(int s, const void * b, size_t l, int f, const struct sockaddr * t, int tl)
+{
+ int result;
+ if ((result = ::sendto(_get_osfhandle(s), (char *)b, l, f, t, tl)) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return result;
+}
+
+inline
+int setsockopt(SOCKET s, int l, int o, const char * v, int n)
+{
+ SOCKET socket;
+
+ socket = ((s == INVALID_SOCKET) ? s : (SOCKET)_get_osfhandle((int)s));
+
+ if (::setsockopt(socket, l, o, v, n) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
+}
+#define setsockopt(s,l,o,v,n) Squid::setsockopt(s,l,o,v,n)
+
+inline
+int shutdown(int s, int h)
+{
+ if (::shutdown(_get_osfhandle(s),h) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
+}
+
+inline
+int socket(int f, int t, int p)
+{
+ SOCKET result;
+ if ((result = ::socket(f, t, p)) == INVALID_SOCKET) {
+ if (WSAEMFILE == (errno = WSAGetLastError()))
+ errno = EMFILE;
+ return -1;
+ } else
+ return _open_osfhandle(result, 0);
+}
+#define socket(f,t,p) Squid::socket(f,t,p)
+
+inline
+int WSAAsyncSelect(int s, HWND h, unsigned int w, long e)
+{
+ if (::WSAAsyncSelect(_get_osfhandle(s), h, w, e) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
+}
+
+#undef WSADuplicateSocket
+inline
+int WSADuplicateSocket(int s, DWORD n, LPWSAPROTOCOL_INFO l)
+{
+#ifdef UNICODE
+ if (::WSADuplicateSocketW(_get_osfhandle(s), n, l) == SOCKET_ERROR) {
+#else
+ if (::WSADuplicateSocketA(_get_osfhandle(s), n, l) == SOCKET_ERROR) {
+#endif
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
+}
+
+#undef WSASocket
+inline
+int WSASocket(int a, int t, int p, LPWSAPROTOCOL_INFO i, GROUP g, DWORD f) {
+ SOCKET result;
+#ifdef UNICODE
+ if ((result = ::WSASocketW(a, t, p, i, g, f)) == INVALID_SOCKET) {
+#else
+ if ((result = ::WSASocketA(a, t, p, i, g, f)) == INVALID_SOCKET) {
+#endif
+ if (WSAEMFILE == (errno = WSAGetLastError()))
+ errno = EMFILE;
+ return -1;
+ } else
+ return _open_osfhandle(result, 0);
+}
+
+} /* namespace Squid */
+
+#else /* #ifdef __cplusplus */
+#define connect(s,n,l) \
+ (SOCKET_ERROR == connect(_get_osfhandle(s),n,l) ? \
+ (WSAEMFILE == (errno = WSAGetLastError()) ? errno = EMFILE : -1, -1) : 0)
+#define gethostbyname(n) \
+ (NULL == ((HOSTENT FAR*)(ws32_result = (int)gethostbyname(n))) ? \
+ (errno = WSAGetLastError()), (HOSTENT FAR*)NULL : (HOSTENT FAR*)ws32_result)
+#define gethostname(n,l) \
+ (SOCKET_ERROR == gethostname(n,l) ? \
+ (errno = WSAGetLastError()), -1 : 0)
+#define recv(s,b,l,f) \
+ (SOCKET_ERROR == (ws32_result = recv(_get_osfhandle(s),b,l,f)) ? \
+ (errno = WSAGetLastError()), -1 : ws32_result)
+#define sendto(s,b,l,f,t,tl) \
+ (SOCKET_ERROR == (ws32_result = sendto(_get_osfhandle(s),b,l,f,t,tl)) ? \
+ (errno = WSAGetLastError()), -1 : ws32_result)
+#define select(n,r,w,e,t) \
+ (SOCKET_ERROR == (ws32_result = select(n,r,w,e,t)) ? \
+ (errno = WSAGetLastError()), -1 : ws32_result)
+#define socket(f,t,p) \
+ (INVALID_SOCKET == ((SOCKET)(ws32_result = (int)socket(f,t,p))) ? \
+ ((WSAEMFILE == (errno = WSAGetLastError()) ? errno = EMFILE : -1), -1) : \
+ (SOCKET)_open_osfhandle(ws32_result,0))
+#define write _write /* Needed in util.c */
+#define open _open /* Needed in win32lib.c */
+#endif /* #ifdef __cplusplus */
+
+#define RUSAGE_SELF 0 /* calling process */
+#define RUSAGE_CHILDREN -1 /* terminated child processes */
+
+struct rusage {
+ struct timeval ru_utime; /* user time used */
+ struct timeval ru_stime; /* system time used */
+ long ru_maxrss; /* integral max resident set size */
+ long ru_ixrss; /* integral shared text memory size */
+ long ru_idrss; /* integral unshared data size */
+ long ru_isrss; /* integral unshared stack size */
+ long ru_minflt; /* page reclaims */
+ long ru_majflt; /* page faults */
+ long ru_nswap; /* swaps */
+ long ru_inblock; /* block input operations */
+ long ru_oublock; /* block output operations */
+ long ru_msgsnd; /* messages sent */
+ long ru_msgrcv; /* messages received */
+ long ru_nsignals; /* signals received */
+ long ru_nvcsw; /* voluntary context switches */
+ long ru_nivcsw; /* involuntary context switches */
+};
+
+#undef ACL
+
+
+/** \cond AUTODOCS-IGNORE */
+using namespace Squid;
+/** \endcond */
+
+
+/* win32lib.c */
+SQUIDCEXTERN int chroot (const char *);
+SQUIDCEXTERN int ftruncate(int, off_t);
+#ifndef HAVE_GETTIMEOFDAY
+SQUIDCEXTERN int gettimeofday(struct timeval * ,void *);
+#endif
+SQUIDCEXTERN int kill(pid_t, int);
+SQUIDCEXTERN int statfs(const char *, struct statfs *);
+SQUIDCEXTERN int truncate(const char *, off_t);
+SQUIDCEXTERN const char * wsastrerror(int);
+SQUIDCEXTERN struct passwd *getpwnam(char *);
+SQUIDCEXTERN struct group *getgrnam(char *);
+SQUIDCEXTERN uid_t geteuid(void);
+SQUIDCEXTERN uid_t getuid(void);
+SQUIDCEXTERN int setuid(uid_t);
+SQUIDCEXTERN int seteuid(uid_t);
+SQUIDCEXTERN gid_t getgid(void);
+SQUIDCEXTERN gid_t getegid(void);
+SQUIDCEXTERN int setgid(gid_t);
+SQUIDCEXTERN int setegid(gid_t);
+SQUIDCEXTERN const char *WIN32_strerror(int);
+SQUIDCEXTERN void WIN32_maperror(unsigned long);
+
+// Moved in from squid.h and other duplicates.
+// BUT was already included up the top there with a wrapped conditional.
+// that may need checking....
+//#include <io.h>
+
+/* Windows may lack getpagesize() prototype */
+// Moved in from squid.h
+// NP: there may be a header include needed before this to prevent duplicate-definitions
+// if that is true it will need including here as part of the hack.
+// if not then this comment can be dropped.
+#if !defined(getpagesize)
+SQUIDCEXTERN size_t getpagesize(void);
+#endif
+
+
+#endif /* _SQUID_WIN32_ */
+#endif /* SQUID_OS_MSWIN_H */

=== added file 'squid-compat/os/next.h'
--- squid-compat/os/next.h 1970-01-01 00:00:00 +0000
+++ squid-compat/os/next.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,53 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_NEXT_H
+#define SQUID_OS_NEXT_H
+
+#ifdef _SQUID_NEXT_
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+
+/*
+ * Don't allow inclusion of malloc.h
+ */
+#if defined(HAVE_MALLOC_H)
+#undef HAVE_MALLOC_H
+#endif
+
+/*
+ * S_ISDIR() may not be defined on Next
+ */
+#if HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#if !defined(S_ISDIR)
+#define S_ISDIR(mode) (((mode) & (_S_IFMT)) == (_S_IFDIR))
+#endif
+
+/*
+ * WAS: lots of special wrappers labeled only 'protect NEXTSTEP'
+ * I'm assuming its an incomplete definition problem on that OS.
+ * Or a missing safety wrapper by the looks of the _SQUID_NETDB_H_
+ *
+ * Anyway, this file is included before all general non-type headers.
+ * doing the include here for Next and undefining HAVE_NETDB_H will
+ * save us from including it again in general.
+ */
+// All the hacks included this first without safety wrapping, then netdb.h.
+#include <netinet/in_systm.h>
+#if HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#undef HAVE_NETDB_H
+#define HAVE_NETDB_H 0
+
+
+#endif /* _SQUID_NEXT_ */
+#endif /* SQUID_OS_NEXT_H */

=== added file 'squid-compat/os/openbsd.h'
--- squid-compat/os/openbsd.h 1970-01-01 00:00:00 +0000
+++ squid-compat/os/openbsd.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,25 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_OPENBSD_H
+#define SQUID_OS_OPENBSD_H
+
+#ifdef _SQUID_OPENBSD_
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+/*
+ * Don't allow inclusion of malloc.h
+ */
+#ifdef HAVE_MALLOC_H
+#undef HAVE_MALLOC_H
+#endif
+
+
+#endif /* _SQUID_OPENBSD_ */
+#endif /* SQUID_OS_OPENBSD_H */

=== added file 'squid-compat/os/os2.h'
--- squid-compat/os/os2.h 1970-01-01 00:00:00 +0000
+++ squid-compat/os/os2.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,24 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_OS2_H
+#define SQUID_OS_OS2_H
+
+#ifdef _SQUID_OS2_
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+/*
+* FIXME: the os2 port of bash seems to have problems checking
+* the return codes of programs in if statements. These options
+* need to be overridden.
+*/
+
+
+#endif /* _SQUID_OS2_ */
+#endif /* SQUID_OS_OS2_H */

=== added file 'squid-compat/os/qnx.h'
--- squid-compat/os/qnx.h 1970-01-01 00:00:00 +0000
+++ squid-compat/os/qnx.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,23 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_QNX_H
+#define SQUID_OS_QNX_H
+
+#ifdef _SQUID_QNX_
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+/*
+ * Requires unix.h header file
+ */
+#include <unix.h>
+
+
+#endif /* _SQUID_QNX_ */
+#endif /* SQUID_OS_QNX_H */

=== added file 'squid-compat/os/sgi.h'
--- squid-compat/os/sgi.h 1970-01-01 00:00:00 +0000
+++ squid-compat/os/sgi.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,26 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_SGI_H
+#define SQUID_OS_SGI_H
+
+#if _SQUID_SGI_
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+#if !defined(_SVR4_SOURCE)
+#define _SVR4_SOURCE /* for tempnam(3) */
+#endif
+
+#if USE_ASYNC_IO
+#define _ABI_SOURCE
+#endif /* USE_ASYNC_IO */
+
+
+#endif /* _SQUID_SGI_ */
+#endif /* SQUID_OS_SGI_H */

=== added file 'squid-compat/os/solaris.h'
--- squid-compat/os/solaris.h 1970-01-01 00:00:00 +0000
+++ squid-compat/os/solaris.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,49 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_SOLARIS_H
+#define SQUID_OS_SOLARIS_H
+
+#ifdef _SQUID_SOLARIS_
+
+/*
+ * On Solaris 9 x86, gcc may includes a "fixed" set of old system
+ * include files that is incompatible with the updated Solaris
+ * header files.
+ */
+#if defined(i386) || defined(__i386)
+#ifndef HAVE_PAD128_T
+typedef union {
+ long double _q;
+ int32_t _l[4];
+} pad128_t;
+#endif
+#ifndef HAVE_UPAD128_T
+typedef union {
+ long double _q;
+ uint32_t _l[4];
+} upad128_t;
+#endif
+#endif
+
+/**
+ * prototypes for system function missing from system includes
+ */
+SQUIDCEXTERN int getrusage(int, struct rusage *);
+
+
+/**
+ * prototypes for system function missing from system includes
+ * on some Solaris systems.
+ */
+SQUIDCEXTERN int getpagesize(void);
+#if !defined(_XPG4_2) && !(defined(__EXTENSIONS__) || \
+ (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)))
+SQUIDCEXTERN int gethostname(char *, int);
+#endif
+
+
+
+#endif /* _SQUID_SOLARIS_ */
+#endif /* SQUID_OS_SOALRIS_H */

=== added file 'squid-compat/os/sunos.h'
--- squid-compat/os/sunos.h 1970-01-01 00:00:00 +0000
+++ squid-compat/os/sunos.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,25 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_SUNOS_H
+#define SQUID_OS_SUNOS_H
+
+#ifdef _SQUID_SUNOS_
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+
+/*
+ * We assume O_NONBLOCK is broken, or does not exist, on SunOS.
+ */
+#define SQUID_NONBLOCK O_NDELAY
+
+
+
+#endif /* _SQUID_SUNOS_ */
+#endif /* SQUID_OS_SUNOS_H */

=== added file 'squid-compat/os/windows.h'
--- squid-compat/os/windows.h 1970-01-01 00:00:00 +0000
+++ squid-compat/os/windows.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,53 @@
+/*
+ * $Id$
+ *
+ * AUTHOR: Guido Serassio <serassio_at_squid-cache.org>
+ *
+ * SQUID Web Proxy Cache http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ * Squid is the result of efforts by numerous individuals from
+ * the Internet community; see the CONTRIBUTORS file for full
+ * details. Many organizations have provided support for Squid's
+ * development; see the SPONSORS file for full details. Squid is
+ * Copyrighted (C) 2001 by the Regents of the University of
+ * California; see the COPYRIGHT file for full details. Squid
+ * incorporates software developed and/or copyrighted by other
+ * sources; see the CREDITS file for full details.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_WINDOWS_H
+#define SQUID_OS_WINDOWS_H
+
+#ifdef _SQUID_WIN32_
+
+#ifndef ACL
+#define ACL WindowsACL
+#define _MSWIN_ACL_WAS_NOT_DEFINED 1
+#endif
+#include <windows.h>
+#if _MSWIN_ACL_WAS_NOT_DEFINED
+#undef ACL
+#undef _MSWIN_ACL_WAS_NOT_DEFINED
+#endif
+
+#endif /* _SQUID_WIN32_ */
+#endif /* SQUID_OS_WINDOWS_H */

=== added file 'squid-compat/osdetect.h'
--- squid-compat/osdetect.h 1970-01-01 00:00:00 +0000
+++ squid-compat/osdetect.h 2009-01-21 09:46:54 +0000
@@ -0,0 +1,87 @@
+#ifndef SQUID_COMPAT_OSDETECT_H
+#define SQUID_COMPAT_OSDETECT_H
+
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+/*
+ * Define the _SQUID_TYPE_ based on a guess of the OS.
+ *
+ * NP: This MUST come first in compat.h with no OS-specific includes
+ * or other definitions within this if-else structure.
+ */
+
+#if defined(__sun__) || defined(__sun) /* SUN */
+# define _SQUID_SUN_
+# if defined(__SVR4) /* SOLARIS */
+# define _SQUID_SOLARIS_
+# else /* SUNOS */
+# define _SQUID_SUNOS_
+# endif
+
+#elif defined(__hpux) /* HP-UX - SysV-like? */
+#define _SQUID_HPUX_
+#define _SQUID_SYSV_
+
+#elif defined(__osf__) /* OSF/1 */
+#define _SQUID_OSF_
+
+#elif defined(__ultrix) /* Ultrix */
+#define _SQUID_ULTRIX_
+
+#elif defined(_AIX) /* AIX */
+#define _SQUID_AIX_
+
+#elif defined(__linux__) /* Linux */
+#define _SQUID_LINUX_
+
+#elif defined(__FreeBSD__) /* FreeBSD */
+#define _SQUID_FREEBSD_
+
+#elif defined(__sgi__) || defined(sgi) || defined(__sgi) /* SGI */
+#define _SQUID_SGI_
+
+#elif defined(__NeXT__)
+#define _SQUID_NEXT_
+
+#elif defined(__bsdi__)
+#define _SQUID_BSDI_ /* BSD/OS */
+
+#elif defined(__NetBSD__)
+#define _SQUID_NETBSD_
+
+#elif defined(__OpenBSD__)
+#define _SQUID_OPENBSD_
+
+#elif defined(__DragonFly__)
+#define _SQUID_DRAGONFLY_
+
+#elif defined(__CYGWIN32__) || defined(__CYGWIN__)
+#define _SQUID_CYGWIN_
+#define _SQUID_WIN32_
+
+#elif defined(WIN32) || defined(WINNT) || defined(__WIN32__) || defined(__WIN32)
+#define _SQUID_MSWIN_
+#define _SQUID_WIN32_
+
+#elif defined(__APPLE__)
+#define _SQUID_APPLE_
+
+#elif defined(sony_news) && defined(__svr4)
+#define _SQUID_NEWSOS6_
+
+#elif defined(__QNX__)
+#define _SQUID_QNX_
+
+#elif defined(__EMX__) || defined(OS2) || defined(__OS2__)
+#define _SQUID_OS2_
+
+#endif /* OS automatic detection */
+
+
+
+#endif /* SQUID_COMPAT_OSDETECT_H */

=== added file 'squid-compat/stdvarargs.h'
--- squid-compat/stdvarargs.h 1970-01-01 00:00:00 +0000
+++ squid-compat/stdvarargs.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,38 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef _SQUID_STDVARARGS_H
+#define _SQUID_STDVARARGS_H
+
+/*
+ * va_* variables come from various places on different platforms.
+ * We provide a clean set of wrappers for the variosu operations
+ * Depending on what is available and needed.
+ */
+#if defined(HAVE_STDARG_H)
+#include <stdarg.h>
+#define HAVE_STDARGS /* let's hope that works everywhere (mj) */
+#define VA_LOCAL_DECL va_list ap;
+#define VA_START(f) va_start(ap, f)
+#define VA_SHIFT(v,t) ; /* no-op for ANSI */
+#define VA_END va_end(ap)
+#else
+#if defined(HAVE_VARARGS_H)
+#include <varargs.h>
+#undef HAVE_STDARGS
+#define VA_LOCAL_DECL va_list ap;
+#define VA_START(f) va_start(ap) /* f is ignored! */
+#define VA_SHIFT(v,t) v = va_arg(ap,t)
+#define VA_END va_end(ap)
+#else
+#error XX **NO VARARGS ** XX
+#endif
+#endif
+
+/* Make sure syslog goes after stdarg/varargs */
+#ifdef HAVE_SYSLOG_H
+#include <syslog.h>
+#endif
+
+#endif /* _SQUID_STDVARARGS_H */

=== added file 'squid-compat/valgrind.h'
--- squid-compat/valgrind.h 1970-01-01 00:00:00 +0000
+++ squid-compat/valgrind.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,41 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_VALGRIND_H
+#define SQUID_VALGRIND_H
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+/*
+ * valgrind debug support
+ */
+#if WITH_VALGRIND
+# include <valgrind/memcheck.h>
+/* A little glue for older valgrind version prior to 3.2.0 */
+# ifndef VALGRIND_MAKE_MEM_NOACCESS
+# define VALGRIND_MAKE_MEM_NOACCESS VALGRIND_MAKE_NOACCESS
+# define VALGRIND_MAKE_MEM_UNDEFINED VALGRIND_MAKE_WRITABLE
+# define VALGRIND_MAKE_MEM_DEFINED VALGRIND_MAKE_READABLE
+# define VALGRIND_CHECK_MEM_IS_ADDRESSABLE VALGRIND_CHECK_WRITABLE
+# else
+# undef VALGRIND_MAKE_NOACCESS
+# undef VALGRIND_MAKE_WRITABLE
+# undef VALGRIND_MAKE_READABLE
+# endif
+#else
+# define VALGRIND_MAKE_MEM_NOACCESS(a,b) (0)
+# define VALGRIND_MAKE_MEM_UNDEFINED(a,b) (0)
+# define VALGRIND_MAKE_MEM_DEFINED(a,b) (0)
+# define VALGRIND_CHECK_MEM_IS_ADDRESSABLE(a,b) (0)
+# define VALGRIND_CHECK_MEM_IS_DEFINED(a,b) (0)
+# define VALGRIND_MALLOCLIKE_BLOCK(a,b,c,d)
+# define VALGRIND_FREELIKE_BLOCK(a,b)
+# define RUNNING_ON_VALGRIND 0
+#endif /* WITH_VALGRIND */
+
+#endif /* SQUID_CONFIG_H */

=== modified file 'src/ICAP/Makefile.am'
--- src/ICAP/Makefile.am 2008-12-10 20:19:50 +0000
+++ src/ICAP/Makefile.am 2009-02-07 03:14:20 +0000
@@ -3,6 +3,7 @@
 CLEANFILES =
 
 INCLUDES = \
+ -I$(top_srcdir) \
         -I$(top_builddir)/include \
         -I$(top_srcdir)/include \
         -I$(top_srcdir)/src

=== modified file 'src/Makefile.am'
--- src/Makefile.am 2009-02-02 12:33:27 +0000
+++ src/Makefile.am 2009-02-09 08:53:49 +0000
@@ -210,9 +210,15 @@
 noinst_LIBRARIES = @DISK_LIBS@
 noinst_LTLIBRARIES = libsquid.la libauth.la
 
-INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/include -I$(top_srcdir)/include -I$(top_srcdir)/lib/libTrie/include
-INCLUDES += -I$(top_builddir)/lib -I$(top_srcdir)/lib
-INCLUDES += @SQUID_CPPUNIT_INC@
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/src \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/lib/libTrie/include \
+ -I$(top_builddir)/lib \
+ -I$(top_srcdir)/lib \
+ @SQUID_CPPUNIT_INC@
 
 EXTRA_PROGRAMS = \
         DiskIO/DiskDaemon/diskd \

=== modified file 'src/adaptation/Makefile.am'
--- src/adaptation/Makefile.am 2008-12-10 20:19:50 +0000
+++ src/adaptation/Makefile.am 2009-02-07 03:14:20 +0000
@@ -3,6 +3,7 @@
 CLEANFILES =
 
 INCLUDES = \
+ -I$(top_srcdir) \
         -I$(top_builddir)/include \
         -I$(top_srcdir)/include \
         -I$(top_srcdir)/src

=== modified file 'src/auth/Makefile.am'
--- src/auth/Makefile.am 2009-01-21 03:47:47 +0000
+++ src/auth/Makefile.am 2009-02-07 03:14:20 +0000
@@ -15,7 +15,11 @@
 libntlm_a_SOURCES = ntlm/auth_ntlm.cc ntlm/auth_ntlm.h
 libnegotiate_a_SOURCES = negotiate/auth_negotiate.cc negotiate/auth_negotiate.h negotiate/negotiateScheme.cc negotiate/negotiateScheme.h
 
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include \
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include \
         -I$(top_srcdir)/src
 
 check_PROGRAMS= testHeaders

=== modified file 'src/eCAP/Makefile.am'
--- src/eCAP/Makefile.am 2008-05-08 21:02:24 +0000
+++ src/eCAP/Makefile.am 2009-02-07 03:14:20 +0000
@@ -22,5 +22,9 @@
         \
         Registry.h
 
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include \
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include \
         -I$(top_srcdir)/src

=== modified file 'src/fs/Makefile.am'
--- src/fs/Makefile.am 2009-01-21 03:47:47 +0000
+++ src/fs/Makefile.am 2009-02-07 03:14:20 +0000
@@ -28,7 +28,11 @@
         coss/StoreFScoss.h \
         ufs/StoreFSufs.h
 
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include \
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include \
         -I$(top_srcdir)/src
 
 check_PROGRAMS=testHeaders

=== modified file 'src/globals.h'
--- src/globals.h 2009-01-21 03:47:47 +0000
+++ src/globals.h 2009-01-21 08:13:42 +0000
@@ -70,7 +70,6 @@
     extern const char *const version_string; /* VERSION */
 //MOVED:versions.h:APP_FULLNAME extern const char *const full_appname_string; /* PACKAGE "/" VERSION */
     extern const char *const appname_string; /* PACKAGE */
- extern const char *const w_space; /* " \t\n\r" */
     extern char const * visible_appname_string; /* NULL */
     extern const char *fdTypeStr[];
     extern const char *hier_strings[];

=== modified file 'src/icmp/Makefile.am'
--- src/icmp/Makefile.am 2009-01-10 03:04:47 +0000
+++ src/icmp/Makefile.am 2009-02-07 03:14:20 +0000
@@ -9,7 +9,13 @@
 DEFS = @DEFS@
 CLEANFILES =
 
-INCLUDES = -I$(top_srcdir)/src @SQUID_CPPUNIT_INC@ -I$(top_srcdir)/include -I$(top_builddir)/lib
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/src \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/lib \
+ @SQUID_CPPUNIT_INC@
+
 $(OBJS): $(top_srcdir)/include/version.h $(top_srcdir)/include/autoconf.h
 
 # TODO: get rid of this when config filename is no longer a global constant.

=== modified file 'src/ip/Makefile.am'
--- src/ip/Makefile.am 2009-01-09 13:12:24 +0000
+++ src/ip/Makefile.am 2009-02-08 11:52:11 +0000
@@ -9,7 +9,13 @@
 DEFS = @DEFS@
 CLEANFILES =
 
-INCLUDES = -I$(top_srcdir)/src @SQUID_CPPUNIT_INC@ -I$(top_srcdir)/include -I$(top_builddir)/lib
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/lib \
+ -I$(top_srcdir)/src \
+ @SQUID_CPPUNIT_INC@
+
 $(OBJS): $(top_srcdir)/include/version.h $(top_srcdir)/include/autoconf.h
 
 
@@ -46,6 +52,7 @@
 nodist_testIpAddress_SOURCES= \
         ../tests/testMain.cc
 testIpAddress_LDADD= \
+ $(top_builddir)/squid-compat/libcompat.la \
         libip.la \
         -L$(top_builddir)/lib -lmiscutil \
         @SQUID_CPPUNIT_LA@ \

=== modified file 'src/repl/Makefile.am'
--- src/repl/Makefile.am 2009-01-21 03:47:47 +0000
+++ src/repl/Makefile.am 2009-02-07 03:14:20 +0000
@@ -16,7 +16,11 @@
 liblru_a_SOURCES = lru/store_repl_lru.cc
 libheap_a_SOURCES = heap/store_heap_replacement.h heap/store_heap_replacement.cc heap/store_repl_heap.cc
 
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include \
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include \
         -I$(top_srcdir)/src
 
 check_PROGRAMS= testHeaders

=== modified file 'src/squid.h'
--- src/squid.h 2009-01-07 11:24:40 +0000
+++ src/squid.h 2009-01-21 08:05:22 +0000
@@ -32,11 +32,6 @@
 #ifndef SQUID_H
 #define SQUID_H
 
-/*
- * On linux this must be defined to get PRId64 and friends
- */
-#define __STDC_FORMAT_MACROS
-
 #include "config.h"
 
 #ifdef _SQUID_MSWIN_
@@ -191,26 +186,6 @@
 #endif /* HAVE_POLL_H */
 #endif /* USE_POLL */
 
-/*
- * Filedescriptor limits in the different select loops
- *
- * NP: FreeBSD 7 defines FD_SETSIZE as unsigned but Squid needs
- * it to be signed to compare it with signed values.
- * Linux and others including FreeBSD <7, define it as signed.
- * If this causes any issues please contact squid-dev_at_squid-cache.org
- */
-#if defined(USE_SELECT) || defined(USE_SELECT_WIN32)
-/* Limited by design */
-# define SQUID_MAXFD_LIMIT ((signed int)FD_SETSIZE)
-#elif defined(USE_POLL)
-/* Limited due to delay pools */
-# define SQUID_MAXFD_LIMIT ((signed int)FD_SETSIZE)
-#elif defined(USE_KQUEUE) || defined(USE_EPOLL)
-# define SQUID_FDSET_NOUSE 1
-#else
-# error Unknown select loop model!
-#endif
-
 
 /*
  * Trap unintentional use of fd_set. Must not be used outside the
@@ -224,35 +199,6 @@
 # endif
 #endif
 
-#if defined(HAVE_STDARG_H)
-#include <stdarg.h>
-#define HAVE_STDARGS /* let's hope that works everywhere (mj) */
-#define VA_LOCAL_DECL va_list ap;
-#define VA_START(f) va_start(ap, f)
-#define VA_SHIFT(v,t) ; /* no-op for ANSI */
-#define VA_END va_end(ap)
-#else
-#if defined(HAVE_VARARGS_H)
-#include <varargs.h>
-#undef HAVE_STDARGS
-#define VA_LOCAL_DECL va_list ap;
-#define VA_START(f) va_start(ap) /* f is ignored! */
-#define VA_SHIFT(v,t) v = va_arg(ap,t)
-#define VA_END va_end(ap)
-#else
-#error XX **NO VARARGS ** XX
-#endif
-#endif
-
-/* Make sure syslog goes after stdarg/varargs */
-#ifdef HAVE_SYSLOG_H
-#ifdef _SQUID_AIX_
-#define _XOPEN_EXTENDED_SOURCE
-#define _XOPEN_SOURCE_EXTENDED 1
-#endif
-#include <syslog.h>
-#endif
-
 #if HAVE_MATH_H
 #include <math.h>
 #endif
@@ -266,13 +212,6 @@
 #define MAXPATHLEN SQUID_MAXPATHLEN
 #endif
 
-#if !HAVE_GETRUSAGE
-#if defined(_SQUID_HPUX_)
-#define HAVE_GETRUSAGE 1
-#define getrusage(a, b) syscall(SYS_GETRUSAGE, a, b)
-#endif
-#endif
-
 #if !HAVE_STRUCT_RUSAGE
 /*
  * If we don't have getrusage() then we create a fake structure
@@ -329,20 +268,6 @@
 #define S_ISDIR(mode) (((mode) & (_S_IFMT)) == (_S_IFDIR))
 #endif
 
-#ifdef USE_GNUREGEX
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-#include "GNUregex.h"
-#ifdef __cplusplus
-}
-
-#endif
-#elif HAVE_REGEX_H
-#include <regex.h>
-#endif
-
 #include "md5.h"
 
 #if USE_SSL
@@ -392,36 +317,6 @@
 #include "initgroups.h"
 #endif
 
-#ifndef min
-
-template<class A>
-inline A const &
-min(A const & lhs, A const & rhs)
-{
- if (rhs < lhs)
- return rhs;
-
- return lhs;
-}
-
-#endif
-
-#define XMIN(x,y) (min (x,y))
-#ifndef max
-template<class A>
-inline A const &
-max(A const & lhs, A const & rhs)
-{
- if (rhs > lhs)
- return rhs;
-
- return lhs;
-}
-
-#endif
-
-#define XMAX(a,b) (max (a,b))
-
 #include "structs.h"
 #include "protos.h"
 #include "globals.h"

=== modified file 'test-suite/Makefile.am'
--- test-suite/Makefile.am 2009-01-21 03:47:47 +0000
+++ test-suite/Makefile.am 2009-02-08 11:52:11 +0000
@@ -9,9 +9,21 @@
 AM_CFLAGS = @SQUID_CFLAGS@
 AM_CXXFLAGS = @SQUID_CXXFLAGS@
 
-INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/include -I$(top_srcdir)/include -I$(top_srcdir)/src
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/src
+
+LDADD = \
+ -L$(top_builddir)/squid-compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(top_builddir)/src/globals.o \
+ $(top_builddir)/src/time.o
 
 EXTRA_PROGRAMS = mem_node_test membanger splay tcp-banger2 rfc1738
+
 EXTRA_DIST = testheaders.sh
 
 ESI_ALL_TESTS = \
@@ -50,7 +62,6 @@
                 VirtualDeleteOperator
 
 
-LDADD =$(top_builddir)/src/globals.o $(top_builddir)/src/time.o -L$(top_builddir)/lib -lmiscutil
 tcp_banger2_LDADD = -L$(top_builddir)/lib -lmiscutil
 DEBUG_SOURCE = test_tools.cc
 debug_SOURCES = debug.cc $(DEBUG_SOURCE)

=== modified file 'tools/Makefile.am'
--- tools/Makefile.am 2009-01-09 13:12:24 +0000
+++ tools/Makefile.am 2009-02-07 11:28:44 +0000
@@ -7,8 +7,15 @@
 
 AUTOMAKE_OPTIONS = subdir-objects
 
-INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/include -I$(top_srcdir)/include -I$(top_srcdir)/lib/libTrie/include -I$(top_srcdir)/src
-INCLUDES += @SQUID_CPPUNIT_INC@
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/src \
+ @SQUID_CPPUNIT_INC@
+# -I$(top_srcdir)/lib/libTrie/include
+# -I$(srcdir)
 
 TESTS=$(check_PROGRAMS)
 #check_PROGRAMS= testHeaders

# Begin bundle
IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWY6MurYAzz//gH/3RQB/////
/////r////5gtl72tbzb3G8rnVedV3hoHTa3Hl7y3dMVeekTyGMC27wC2aFUWw7wts5baa6c3sHL
12xrQsY3YNAVz2uTyqgPB7x6rXrPIGl4BYK9e8fe+yrqlar18+6O0+693C7Ou5LYfElPtqAClAAT
w9WdszezowNgo6ANABece+99JXQyAAAAfHfeecmIoGgADe8OelAAB6AAuB25bAAAAAZztwAAAAC7
m4ADrQABe70u8AAAAB94+9PAGgAA6G7b3LNQpJA6oB7a7d7e+wA+7EgoFKZ7t2XQDm+733bg+n3t
u+fe72bbQdbYvoAANUCvYNAQAAAL0MAAABNIhC17AAaAS4bIL7de6h9x86C6LAOlV97uFQo92aA8
XvoAAAYAoOhQCqBr3NUjopoUJDowqLoYUFGxgZAGgtlAoyokAFz4509NAIkEKevvreShQUUAK9ZD
6DR3s9FGGIgIBAAmmgENTTJk0YqenpHoAT1Ieo9TQ2jUepkND1BkAIhBIQ1PRPQp+ig9QAAaABoA
AAAAASmmhBSaSZCNMkyNBoaNAA0yaAA0aaaDQAGTQ0EmkkIJNNMjImCNENGSYKBnqJtPVPU9Q09Q
AaeoeoAABEkQIAjImCAAmTETCA0mmCMmmgieU2KZMhtJgKlCAAEREATI0j1MiaBMmoep6mJk0AAw
J6gANPN5dgdIpYYiCHwU8P5xKL/fxQtPVP2v/bzawgGff8cCBFAIKSQHc6qqLOqc2HwIWoBKDKDP
73ye76fLhm9nzuBVJLInIIj/IAIPpcYBpkARME70P0/5YCwP9ngq0kGIAwJAWKAQgAwUgpBSKSCf
Mn/R2TR6n/4a1AmNbd/u325gf2f3+TPzoe11/O1BSCQVNchD6vm61pzVk84D/SwhbNeiM6V7EOZY
5vqlC/nNxHHNqLUHa+G8aUpYUHyKIlK5pyfBOT+C6E4Iyf3O6ykQCV/df0V9C8Hh0+1fqrF5lefR
1VNFG4et0OuV9vTRvva2bG+TUeUizkvX6vn/ZnbXD58h4oDAcszAlIhx3dEAYlAQ6au9U1tkTWqJ
RD/l6+Bz+wSO+a5buPsZp5p4iWaFZ2ZSxdZhQENTEiLUSGtONUauLMMi4Y2MvMwu5gmZVSRggS2o
u/Zc2p43N28XOUt74oxaikbQir0VCqbRxBkIaOc0TK5W9bnL5ir4iBxKAG3T3Z46JAQ/FHeda/m8
psKUHQ5c0pECBCCJLRO2Nhg4XKQsM/1p9cG24D9UJZbQTfFz7inO1Jky+Trxbpu15SwUmHZZ6syo
A6qcBDFHXZiXCNv5KB8SgC8RoM8YmSIEkXRcIBOMGojCKkILIhCHGA8Dt7+7v78MQDv2xYgJza57
tfKGarqgiLcoruGLKv/qIqiOUXXtuWS0yaRrptrsU+lXPW8b1ubYpekdYZIDprU6712lXXdTwW1n
Jquri1WakpdNlJXNijMpmZJGVrTZn+yBUCr/1tX3pwjja29JUosQuq19+lU7kmdvtbXJvlVk6S5Q
7VN/IV4EV08muiEjWahlqRe5tseMSaqXtHm8xcMS2Zji5F6zWtjfNHifhfdfYmCewtFFnp17jd9j
Ta/onuGWJpYoxKYUwxPh9mEMzKe+K7pu7vupKLIUQWFJhaxbAtGkSZ1scNsRwWV0oQ6BNhJWFPPm
4GQ2zA+n931zL6pqB6XCujoKD6J1xufieDT/HiNmgadj7ve4v/V/8taSz/zPr8jrN/ZO30du2Jj3
5SAu6S/drMUt7kxIQlYLgy0DVbF3PP5uvbvXrPuXUvn2cKO+6ffmL3A7+Zh0RYE/ACUCcgEjd+aA
m+ZLOWgtfuaEJPQKxCA2B/NyJ4eDs1kE+rQPQOQ/K2EJiawyDigYCxDs8lewL13O/ksuG5rnQSPr
aRdvV+/8fLfCbt+rTqgIjQF049F/T4/JGOa22n6v446VBRTM2M84hUYlFEnKMKN/BqUvjxqL4exs
61r3n5T+Hzejbc7hLHZJVMT2qZhdFCIwiWuve6A9/+vrf5Yz9Iolb5hphNU6vBR7LB5YCaHyNCTQ
lTDMslCn9aigmCQvWGk57s0DsXDz9ero32M0uH7OpShZhO5td1maF9LSQOiUZVse4PJ5pClc8bmC
Hx7dnp577q+LRn+XSYrxxcUyiGgtzDXaonQAwJvalWAA+PjtmR5YtY1vwXCItRaTdTMVjQ9sBJ0g
wFzSdj8qpGnV4qitTyqxHDHneBBQR8qgraGL40abas3m06Hoq/LVZfha+mtWouQV6NKL3B8QFfC2
M1zdZGpMJQpFJBKCg5BZKQBmzyf6Nfm402rDSw5tcXa13Jt6Yzf8m5QgLW6vV6brI/Wg5n6mjC9C
7BlPbMaIN9Hs9ny6h29fr+HOQ8kk7dZio+caM9yUU9DVm7s//fx2Huj7PbmlkkV38bVLeO3dh7ut
APT6/dZ9ZEIQJCP4mFCBBGtUVNrCjCRSTGSoFEhEAC0kIg7fy7JTXfRV4d8Ktc8DNQTKcZ3Uctxw
zecQ725+agiakp7Wd26zLV8NbN9ky9d7uuOdXzj7fWzelriqd6dF3Pb6u8rQ2nnJMS2r5hzlTL0j
Yutqd9WurTvik1ukIU+oqEquQi1Fpu8dCdrOraDa0WF7UNWTpk+SpEbaKxAq3W70+6S7W+AB9fQY
N8ewdonHWq4Fw15Lnzd1QZZqGg3G8oGotG1lkhxHxD1zjR9fhcbxK6jZP15qKO6I7SNYFbYJvgep
gGmQXzps5lJN9XdMdtUqQ3dZvkmzw7sO59DySAoQ9QwkrIqkOTN+N8iWjlHPClXK1BjCQzypETVG
QR0igkRxEGOQKREd7ckpvmn27cJSh81lXNtSiccELijLWK15ckggDkLuCIUHbFUJKSdmdEHLGdku
aa5E0x7MNsAN4QGIkgEoOEZ0dzBpwZHGDLE3IxcdwEwKMGHDhsXbqtixYsybNi7dWd6ekKQJFzBQ
ERaEjNcK2QXrdXFJJuSJs0tzKDKcxkIHkHIFAoMIJg3qGUOKK4armuDykpVJWbAcFQUM5I4LgmCo
FA3yTdbgZDRFDEIHFsKpbxqquCRCjFirRFGrl8idIFtzlFDlVZoZzc4qF2OqMRXDLxlglThROplZ
erSHo6RsBVIjVwbQD9IIT6ICfUPq7AA4iaJUbh/qKM6raMUSoVUkNbDmkKeWWwZ6vSHxhOgk+3cS
DLsasiQdyM6MPaHIb6AAQCOP5d11lv0BkioJvPz4Y0urogG4X6Yr8BIALjcFgrsyDiBiufvpjA+W
vwoRJAIhb8/kx+eF58nw/0sPgQIGzi3UyhgGNnZ7ENPxkEoDjuM8uuFivkCbZsaxLklmMGR59Jf9
nZuxXNYOEZEhHdVAWbe3cl4NQnUPqHvOhV/CACf65mfq/ezT+JCEk2DibkWO8saoUEfIdvyt+/51
9j5FPoP3X2nQ0RKGYf7JD8oAF4kiLkjsPka3VwTkUcfo+rANEUsNm20DghOuxYeRrSZAJLyxENkt
6qPpr2qw3YWW+vfy8JIAneyBD+k5fi8jRgKWh6lurkEY5CgpK5GTfVm1psl2FhOu2fBNIbx+fgk/
bklAJx6fnfrtatqshDw1a1ealFYQQ7xFIw5nxCXbfrgO6nCcWzwkopBM1zh0khmDZKkfrphmuj0P
xX01+zTr9vbWeYeiGYYrcw9qGGGUI/SCYg59Dc8Qw8KsRItS8bHrWyDRGEWzXSlwxYb+LH829Gen
JT6gTCCHLoY/1x6PGzMR3j8jWCe8Ok/QQKqqquyydj7f6lTsh5LcHfaj4mqJmLWyyhRPJGQQl7V+
To/Javj9wKIen4eQnk+VW28+30CKPqFH4EUEkUagtRGQgLFgsJSCJIsUQEUBkZBBgMgkBIwIsIID
AGAyKgMIghGAwEBIIiDBkQYggMGRESKgoSIMZGLD9dArESKoxiiogAiMYxYMEUYCjBUCCkARCCyC
gRBikJIQAwPAh406vR/BuWBhs2+9/8CKSxCkBHjeDpMiAQT9XRlioAh2h9f0/UZgGWhL65xD+uFe
bscs1teOkO36vGByDokaCwARkQYKAiFE/1k5ocIwHG2vABSDr6VEoO2ltHxXwqkKeL2LDUmOaHJl
zPihG3RHDNA7UFqBLaEho8OTYr527uHoJiOqIUamTdHNW6vj5vITxkIMqDdDfZ3RfX2KrkkHZ0FP
twFh7/gPCranPF1S1cwmp2ni7FmvGEO3A4JFASQTKRybqShKZ4mSTb2OnxJ06Xh1ujFfJ0KFO2PU
2PYyEFSKOTHMnFiSDSjFFOSJhRvhOlwRc6cRxyhQsnSHjO7sgu983cQiYUdcqLUR1ECSARLvx0gb
0KVaUaV0uTF7iTrF12UA0AfUX/Z8d5xABq6SfgjO1mJO3zFYwEHzicIKbTGwQ+v7TN3BZRJ7fHJZ
0c2u7J2jSDIoJgpQ8VsJmbUWsyYPcPMKN5MFQKEpS0augrTwraycF6pb0zIyaqYVqK6y9M6oSCit
L6fM05vocS6VFQfQ1PhBHVOElbrtBag52bUF5PdqeKlaqFHrCOAoKn0ZJzj7XGpm0vE68SE6zA1W
ZFLwi1WYNQtne8mcHjsKOOc2dBIOdqYsDSJiCECUEbnEUpEfN323LIF3OndXVnSEOYpGtMZEaWVc
gZm4AwDeg5oEi+bDe4PAVekdfKo45qLOszJ4ikOmDMcsvONKSHIhTFqUQGUpSpCKPcWOVFpxMd1y
+S753kyhJBOg5YamZ0PNwkTBah5MbC5duHGaiQqFGxMMmPfbewmYM3McEFekZVZCjXe7qMDw6osH
IbTFxxMY2NCJmREKsgo1gSFqggX5LZ9GDUFTTLqSoIl1vgG3Vu7plTd4yU6JedKHFnVh0UFrTiYZ
qaWYaNo7vVBuFYaoHe8UfoLF2pOKNKKHN7k8Pt0NCQqXYuoujbja4uTJW+ZNLxGuUWWQTQI4vGqd
K+eHNTi2jSH2his2yUGkb3d+L0ySVQhrLnSHufFSfpu4DVZoDMcxO1FIPwzmDU0ToTtQHnQ6NwYg
UVYB77fOFOpvbbtKRwcxQigYikcv60pwf8H+fT7dWvTkvtdl2vVs9fVgo54mOThWCnWdR0lfNzeq
55yjQ9zc+m/Z8+gXk/ZgEJ/D20Vsa+zvR2fkF3JStv6He5P9SPd1Xfi4K7CAbunXsnXAtKWfrm5D
66a46gGEiC7gQhUfVRkjY0ghtV9Hc+ac6nIR90bcOAn3vOnRFwvH3oCu7Ll+yWIBonkkpRtJEzq2
dcIWOKQ3dGWOPXDNmTOKmFzq5oYmQzJRLAmp0VEYPDci5J8C3i+wXaGiIrMUbbcasQZjH4Zvpg90
gK3zvhJyP7wzMiRa5S7CpcjE4Z/nndA42hyvrz6aVVxPCQKeRMljq21CDbWv0T4lMAdW22rbbbbb
bbaW20ZkmZmZixYlIbToHr1xHXESBy2BlHPpkYjOojhcc8fE7fz7ANOh2/fsufrpN/42g3HnopYc
jUxoF7+c9Hdx7tE8hJyED6qvzKquH8aB1+uPkGC5ak5nFmXgnVrNIbp5ySeVaxsyQsOe98NzeMYx
Dy0z/B4hzEtCggp+i2H8hSg/H9uHuYUn4vQBnhVxmIdoeMNiixEFiuxaKyfhdCsSxjV7A2gbUTAU
2OyQhPPkZzQvpK2OECYzUDkKMUUQUOLYLbYC3MiEBRTKVFUxjcOXwQz9oPr/ZFH8sw4XLVXnu9Pv
p2cHiH39vzvy+37dfRNni22W22lttbW2yW21tS22tK2tKkqNLfbLZsXh3M2dFl71PCIUYRN3TskD
NPqAgI/dIXz7Rjs6uz6OWL9fNiKkYj5PL0W1AsAzhv7E+a2QxXgtEZ7qXlmcLr72qgtF/KPmQtL8
7LqnOj27kkKZQfFEsYen23wgzU/r895I1xX3VDv9kZ4KGB7D4XlQ4Sw9FVREDow6d8YAMr4zFLZi
GCQgB8g0CuGMzcz4KBaCQewQjAItwOVPJQD7sQTAObKYQQ1NyWqQtzhTE7/TjWlwmtxsGCDmSIwZ
pgID9huaMha1lFa760BvNtXG57FPYiTGSgGGxoaYskFgk0Rs6hhQQJETHUPey4MBaIzGt66Bjgmu
V/U8x5wdA8SCRDiQsGg2mBy1fm7Jx85O1iqoiPTxOOg2H1j+NtsVZAWRQRFFWpXrr7/Lszl6tebt
m080pP1BrZExOxs9ux3WnwjdmOEd4c+YZ7IgmCI5CDar2N8I7aZPvfkidxt00s+Ln/KvsOGGvgWT
QOqqNXePLhxwPbQMkFortrZqmZlr0It3SQPWUbqQHNz1FwliXBiUCCAUKEAgaFqgGLjvW6f8uaKf
D0F+NN+DzVwd0DsgWCfTtxNcvyqma6x+tTUphyzCnKP0wz6RkGLBC/AAsMeka3l994vWyMeZrSpB
Bh3sdDhjBMzMB4gs+EModymQuYLZjtpp6droI8U0LG0CzQNp97OYZ6ZQFovIWdXfoCbt722SN78t
AtI5xnszz5dNl3ccJiokJnR+VI9LVZCBBaDyi8hXIjX6HOjHCikKb1laXShN5XAXRpwLiLxibf+Z
a+elurnCKQCI4syAYkCVbKfbgFN9SUelSs8jz+jjk7/PjPy8+Y7dePubjo9PyP2YGgna7bEBjHIs
xcak8dMd28REIdoJZkh11JYlA85YyvdGxn1U/X+z4ReLAduXePDbLtiYl8cPCKSjY3o2dkNmoQxC
40kO+Hw7Ywh6YyoBuXvb5qFXfv20zjrYvqo8xB7XExhASnrBZHZcBGzm6RO3Ue1nQcIW57vaqKbV
IAjh1WwM/Objc73Oq4+gvgeGmrlHXzXTJuoA8UBmu8+nHB4xEUHbdINIUbOkZngBFMlD+cUBiY4n
3WHkaC+UWe2Lr+ntSced8bYtiisV69vKQ3mRTWvjBprbz8HDi+5WRR+0PqOm+TJ4AQ99OczYjK+2
sOSsHXTKWASD+iAt5iCCALpjKek2mma1+Us0rM8q2wq0Y8Bqp8GgRFaZpXCIxnfQHBHgLK8UKoOB
vciW0I3vzjspCFGT3wmEB2xZKSyAt9fopPXMe+bMtmN36cGyVrkA2YHeqoHSQhCQkJBRRRREPyGx
5Q5KgeQcZO5A6MnlvezFvjH6j6ADuFs756lAbGSZ+RWWecocixmktcIRnZEZds6sapmiJPfK4yFo
7N8IPA++icjWWgNAazQFwmsLnMIO2/DHnLcIULKavEK8cyo7b6DrNGN1looZwgW6GFg0DMBNJCkR
7cdtpGTxFlRBr5RnDMHghgFmHXV9apvA9wD23XyzMGYDGAeSvTG2BGkb7MtnMCBQNWVtLW52a50m
EtENrzcRjAttqNOdgYJsoPnqXrCEYg3yy8gnQ2jxvK02DfnfEDFtuqe9tWNl1U+Vr56UaHZTArOE
MtOWbWSM5KJCveNL0iohrLIOhxhL3s0cqbIWY8okymyQAkKs6nkIyQlQY84mdPsz27zokbdtBjMk
3h3QuRp3yG0KbMCKkclbZDNwiLmbn8g+IQEM+LV1wMEcOa64YBBLWLLHaD5EaLLT1y9C6dJa+mNr
q6QeUpglrRHnVBsEetEVssw56NWNkG6avMtLuLFuvR0C7joGeFt+s22FP7c0sDgSWpME1vO+z0Hc
eTXpqxrAB4EXxwfLB8B8/PVgD+eJ2D1wgCaABI+ioP2do933O6+H5k3M3ze4Uf3VgwpSrNKrzalF
w9Rj0sZkY1Q0XYiquKppt7a2mayUm3Z2FVTiKjFVXpqvFxcQQoaRgmqCTbVl1NqbFLDRzWpJ2Xir
RZzmVm7LWXsXKWXO6mlaCNFN4NCHurL9OI4/X6JDArGzGAxvODrupjjAZCtJLIo3h4JcJaMVFrZa
otdNFSylo8LDJ3GIao6/s/+fWpoprdoUR2KWTYmjqSwF1daQNiQSJglk2miXTA0YlDolwuYtAXEK
BmQbijQTGRkGQyHAjhZhRQYYbNiiiQ2cHBsTOHDhw4cNaOEiOEzmYYYYfnh9M9YFZ54wrYkrBQVC
RAQkiSEYSH05kxtUIdOI3ngdTzUUkiBWpREo+FyjkhPlReVHnzJcdWdovuzEd2edqcPTKuMnS3VN
zDXKnNmhRnJNI0g4tvjWpiOInc4oSwu3tUk5SSg4uQiAxCKIiIzQ8nheV4ZUq8r1bWtY3MmkSjql
GeJOLFmie7SaS2ko+cvfXlfpqqPh+L5ZJMj9U/JQ2q+KhoVmDHVzmIllmEp20mlbkTUusuWkkLMb
mih4phJTDY5ePHMpWXVE4TNjcsmUmpE3LsUTVNtyNqZuSrpFkjsd2TlY7lTWThmGVeVZhUsJTLmF
gpi4bE5RZUk+/LKs08E7tuWqHImyiQ9Q/I9p7fPlv09qXvr3ttg+LyJC8Kw3x6MNn4GtOFD+Rvqh
qQlkbD4dChgztJ563jhwLlX0zo3OxdNc8dsrJDzAzlbuQ12g4kMI7Cecft24rU9ly+3Q66uOtxAZ
OOBoRYXQ7CBodc5ysTOxy0zIocHtlQ+hYXrRh44rRWzzvRqjCINFIMs9nrietHecIGUBx3vyPPp6
vA2+OKV+d8Uz8fiB9HUAeb09kASCSb78sdGhtEdDbiR3FNSm42U0RQBkRFkEgwYCQQZBRkQSRFgp
AUAgsJFRggQARIRECQGEUYQkVP7gRrP5lVgT94yQkh/UgAqkFkJDURETpiK9wgYAe0cKUvAGmBP1
iv5UIgyQxkgskGUkgYMkDaqKLQtVIgmrbR+DAjIkV5KQX/P9/7f3Z4Hp11rBOR7+BKlE7R/GMYAn
O/9Pz/44CSThGxwxB/t4D1v9Z+z+3Z+r83C/u0v9u4/Mqx2KYZ4WTexhHXrp/2FhjFnywEz4VfsU
QWVMwiMzLIqDzgF1cFhB/pgr98C7EIRGBEhA+ibf0690Dh/h/ZnjjnkJ6KU+0fN+1fuQZMvixiKC
0WjqiRd9WYOQ6GlUQmIcM0N/4/uG+AqEAN5HMLSLQMkWZn51KgBukdanDd/8g9HQkMoCPfzI5ePd
6mHYfKdcIKCMW7MVVyDhDyNqboAyWCqSBsb4vDNftkHGD0ygJ7B7/upL5IAEkAVkELNIkcBEC4SL
6247u35gzD+Glur2q624JfGF6okfikUFnYD8cegbMFu5vqaFpvHYMCM3nxrOYzo7MI9EBFG/p1ga
b23ICy0Lx1rpZgMzOyGGDzpG2Cn9lv9w+6jisD0U0eP7LufNjwXAewboD6RNhr0cRwhazd21pX7O
odAt3agYYdvft4bxonGdtoI0Lw7vh+/d+nuzdp6yDqH2n7hhW7oKJzLmR5l0oh9H2sL9kXSRG64U
hz1hB7XqPnAzg8f0peBln6M9b7wyiAY4tf3HiMiP/KJUltDGZgAZDtZkF/IT7NOvf28RGjh28e94
g4gmNd/Xc5GNMU99NevOK6HUPEFFJRoGd9Q0/axGeyxyJAHwxbzWwAgbqVuWB5mfaAq+d8fM8VnL
N/NPM4mze5QA2vJsWpRotr9v1cKdNHp/IcHJnsKSogn+H8oRlspX+okZLhYxrWFWCiphJ9RJqYkD
9zAgpBsoRRVBVCCkYqyMFZwSNEkRizeqUWMYQREASKg2CQKoHotgiKxgxFQZ89JURIqKqKkYgxYo
kUiKxURVRQiHz2oiwDEiwGySpJEk2AIP3sgGAPJAFJFf23P+//e8n+//ehDQTlFWgSZFESHvfg6B
pQcfNHr9niOq5FEbxw6+/t7+pTA7F1jOeg+Adh7mGtWnxIDI9hzm86+/tGfN3+rUH2DEW7oDRl7e
gT3IV/D1a9o4gPZxrvHmxqPmvNgCqENEIDRzjB7pQzFZrD5wHvlsN+fARNbhS3BuTG90hLFFYjRj
IZAQHnjTKCF1t8LArZ1W/07WtGLwicXaNhBSKzJLIVGgjACNQBECQyOkwbYmOkjErhzytYqHEcTa
ePkncUnMF/6BAEkAS4+jmAHHn9oIDE+D8PVwn1Z/CIwi+pTnspOUhn73HupU7d3nsDUGHDYcjRrh
HBRLF0psDtRI8W5rH07Bvv3151ZXX2z+X9mFym1GwwgIil999bo3XUHCAb3Ecc6vddcQ1cV1zGKC
ObtuM5vWttsNvNazjrz65x1b4nRMJ4h653hLijGHiqxYIKrFgh7AtViwQVWLBkFViwQVWLBDzQtV
iwQ+gPkAfMQ8wH2JKRdLk+UjcjeR22P5dZ+e+sfVOsMbr8sssMcNKq1q6u6vBZmXeJMkDRJUGQXA
4EYmSWMzUml5AkSBsY730J4k0TilJSUXtowj6P4x6xSIXEwiqMo4iklSRfD9VKPEWIuiiKSURZ8J
UlcjhY/SQL7ig9aQS2KUJRmUG9gaETy3ShfKq0sUqWvi4XRKyRMUgskog3CK7BFgOCoCwSCOEERT
eL2RWLBBCetJPmkh/q8NnyFVGsKShxDER8QmagHIbb9TCQmVJGkxS4wSESGvftbRttttCwsLDYDR
BMTK/U2CxZuPlShF+CqGoKG6XHcKAFhsuftAIC+o8wQUhEVgwQjEGQgiiRYB/MWUkFJBSQUkM9A/
r6gjrfIhr6ApBB2PodLeS3p0FEOIrAzgWQeo/jH8ufp9t5liyjiSYa3X/Ka9y29LoxHlycwBf/Nk
GwwkmtyBTq71M1fP6tfABtJBO0IsaZyeE/XBd5Gt1FUJMS/NB2xrjdXAzDIRMVaFBunw7PV5+vdu
bDvf90sPcn6vw27hBSGmGlxGhF1O3E/bUP8bx8UTvVuf8a+bndDX889V/786xmcr1YIGSvF9dcZl
ACv13V6IcTy5+D8k6fjykw06tzasQASScnW7uDgB9fVRncMfGQEASCQefrs858Kw3gWDGt0gPJG9
WSwohR3ealFU3WBVSVOJzIiZNQ6+Orylarc2XhAYyFROmPskqbFFpDIgKIQgHn8LzAnKUbxtP50U
0jMbuydVJmPVa0UemCLJKFUCZMwiiYoR6CQXaN3rJLspQy7trnEYaERYaLNGihCQt4QwYMIoJIYF
RCiILit1stlyXBEuAXSDoOiaJ06tOny3e4VdZ2yvQ9p7pXHZvUy9JCdKSeSQQMTCBQAIo3xiEH5f
N1fZ1P7wkIpIngSllSRADkxAHptS1RTJCCP6l1Tc01+oV7QnnVBaFoLSRY1GUgKUQtqyB9Vgz7T+
5VsVH3R1965DSPtuYVf941RkcJpNKt03WU588w23rCQ6h2BYH8J/TuEhA0H8O2Zc+zV+tubw8e+A
mXnOMZESEnUhWUBCD/LYZhGUc8qtLtVjj9YJrgkioZsED2lwB91gQkCFBBHI53wvHoxtsbbG2xts
bbG2xtscyTKcsbqZ9G5VzUuZmZkmbG2xtsbbG0myZkbbG2xjbG2yqSpJKqG2xNJJyxkpSTXlnpr6
R9yIOkEkP0iALEddsEAukUjsjEX777Nv08UAqqRW2wgW0ltIBbQtoQtsCW0kltmZDRXrjnviaott
jbY22NtjbY23NyU6Y22NtJjbqZopvoQVgokhaI/RmPVExFYuB0HzE7+vs8++Hn/tIkI/J8vxNJmp
WcGKRSaAslF6UGfJOL63aWwnkqZgwUaiCIBUBeWU6sNWSGmnTQqo4QHVFNUDQjnBCzFsk2Zm1IGM
J0QhNkxJ0SbGqTqmJXrvRSQ4jyYYkDqwhwMCYyJNrskhIguMMoOBDOCOmNLmkEkwiukQNGCaRELt
UJaZQLxS0vEXPOhxgNITllOGbMAtd+mpJgJMSTgEJsM582yDBBHEQSgJUQG965qeLW+aZ2NbEWj6
XUZGeS00hgB8dWcLHMp6beaduvdq1VuDEM2Yg/ecSCQ7LUf8bFJm8uPFexiZjrS6XBNYkBdzgrmF
QIiDfTbgvPPCWrkrKwGlaWGS+YyOTcu4RQZABTKzQKEni56WukpRSFIxOGCyBhMmq0zfL9rELtJO
LSQ+i3+ilpA9OVlhEg8yLLFy+Pqwj0vbnjte9GXeO/laZ50VnGKm1rRMt1kFzXRsoNlRCggOstaw
GVBgkAVTCAKpFkHpx3S5aUW3UcNLZYa8s+GmmOOtuTmTFpHK+KMHSuys9etJi7dK88KmyycrhWO2
DlY6k3UcKrO3SqsaJbbVu2moxwE1YqyKxEGAhAQAp6WwtMWN+7Q3eNy/kkUoo5acyTmSZ3+TxaMj
Fqqwl0i6N7rrmatpLmc5ixseRi5IDjuFFhQ4ca8742+ibCHXI4l3JgWAgXgGBhRcV0SK555og5CG
ZxNBtqKbsEsbNJJks0xlBF07Vbtm7vvpcvcuWjZxNpxKNeuxxNRGFGm7KTdIYSR40oBsUGkkQxMt
UwX0wvXYmEbKrJTNJKbbbOpqw4VK/G7RR4/0ki+TlRc5OnkaKMl6VduHEXNI0z028zvpWZrTyrdV
R5PHppMJfEjRoiq5SDKSuzSKhkrUCUOmE2lkJMFmRMk22sxbr2DZco4cL20emzRnOlGLF0zXTAxM
2ijYz5rS7Skri6jJM4kvZKjEuQYY5SSwL5NjOQly+Z9lzdgs5KrpovUisVbNoucNTRw/Pzyijx32
6y1FZad3NGskJilEFAeFLR2MZfBeY1kCtxVn4OpMYYJ3G6VL1Yzdxw2Ysl0brJoyV0YTbDiysRlB
CkVSWSlBpXUIYAKFC2QJLl+Op4vkiGZnspCikTQ1MGKzVmZGDFosbGLdW9eyYRgvd94Gr8k5YM9U
1Lt4YKtngUZJBXfxbZoqqWiiKcylIjSSZRlgeLO1iWWjVhdINkgNmhqwswYNWLlfFVnK20vVbMi0
XqZpIjihJGnyFNFOW5sqctIuN3BVrLo5bPPOW7g1YlxouiqdLmrOZsT1LpmxGazhZQssuZx/mipi
1jJRlHLJ2YqHLhw3XqJ6VasWcrFXjLLxkxXuI6cvHRcs8bTRm3WYxc6NIssXFztq2bKtXPPTLnnu
LM1LXYzFxMTNuUHLqZOlDR2vSjNZwdRq1VZGTRRq6ZtHTMybu2bGKsjFudx+wi//QszdrsTE3WaK
/X/xUfx8MGTue2x2XTBwdmRszeL56f6u27d8Mz0ZNlFzZsWYt3CUjOXtVzdRspGC5cyMFxo4j8f9
w+n7Q6Jb/tiSR/w2RBzM9qYqGhqhYUQ1dKv5jf1q6KweCg8O3yfwm5fpH4Ig9hb368QAfDv6ttV3
R2xErO/bMgcmLuIcjoVkWbNYVJUhUu3NPHbnwEh1Q1sWBCRNlL1t5O2Ztrq22GILsvJcx2pOeTjT
DUk911ObJwczfEigoMYHJPtQODbntoJXTOOIXZhm9DmppGI4pUBaIzJM88DiIKqaz7PM3kenguzm
6jaFrzejuwetmTammBycHtD7d5y8295NT6NnGIxemXqyLi45ABIoETBIRB4QpIqSIsikiZ9nXc6O
rbgY5zDQ2WxzzLbNbvm+a0EMENQrulb/zCctDMiBnHZDaRnltda0xF7Hvqs8qTRaSU2o3U0n7X1W
LTWSuvpz08VEBD2xNV47B6ndBvcHYJqFKIpHA1opVwEgcBXSlmZstubJWAZCC4WzvkZ3LuTBs5Fw
89kVTBQaoAWlRGTKKVC0g4e6tGa9y7fkfJ06J98QnXESLRWE70rWjWtdrxxdOEgvttPUkzlrgYCI
yJilYD9Aok7FkE4OAPcIAL4mvPllDxk+Hld9Va8XACEbI8hiOgFEQCB6ihEeYCSRVILpq2auGwrJ
EL5eVjtZdF6Poo1n83TtgwOyzNk6dmxgbNU4vIDVZDjE2R1wcokm3B22JJtMNEKE2QXPMsWYwdsG
97aTaMxGcoERRFRpktntVcX3l4Uas2Ul3ZjJL6jQ4af3b3uGl8k9r1fb0XpjcpQP8q98sYHeXFhv
JPjgjpu3VN65687dvUr7vPTzzUi3mPVUZO+dcZzc1NJMcr1cbvrida4lkV1jmqdNjqtX1O6bjjnn
qvM3Wnho7LfHTZW+OOetjN9plUu+VteHZuq4lU7DpuzRUDjql3yrYj1lbebqG653ctq25VbyqDVn
K9a65pXh1Qa44rt1rLnsnKBo3GduOb64RoeeeeclOB11PMdp5zfFrrpRWtySEHA2JFCA4gj4e3zp
yOsDZrwCQKlQNkHbHhJDPlhi5oaaXHoPi0MV/SpdgaV+tdCRRg6i9kTh8YUiyqqjkJKXs9slrp7K
N1LZRge5A1fK9elGnjRy7c7UpjfHS9VofCsfL5SCjpRHwTRJOaN/itaKUl0Oc2Hwe8eyEaxn3rnF
vbdEDHCX7U2xYsK5njct7ziE0WhiQ4uo0uobcRxSMvhkbDYmHQYgVv1VJCK4LuqS7Se1ce11Fmql
yEUzVUMpo5bMpOWUy8GFoGeJWKFIt2vhj5cubNF5jokBzVVCSk4zvs6phTxikFFFclA5FGHwCjEW
EegphB4EhBxaokAmvd0t8NVXjhuu9qYlnc2R5zSqYqFBxeUjRg4mDz61l7V4ti9zOWZHw9y0ujJW
KPKzsxV9KTjxWxnu2j0XzdSzONdS5wp4/u5TKaqvmOI8arn5pAfA1Tihx8qlpSnx1xxWmUKDDIwk
mpRDs9XzCSIXsy2GMVeFGRlX49zhol3pTBRNMpWbZKs5wusq9LlpG6vDp6ZnYzy0oG1EY0Uo7wSU
+dptPa5k66aNL8VmpTC5BflHKyrH6e2Tpne8nbwxNXtaPahRzHKjoqvGz9MnU2B0G0NAhhzA1GuL
JeC3jhGF8cUMB3MiFx7Qr9WZV5c0lx8NWSM3tm4NERp3HDTbNSptL3M5QMlnqdM1lVDaMlXp5aGc
N6QN8SEP+e90oejVs9qFF708YtmUcKPDAuj4+djh9Z6j2yN3wdrGx9HCrFZ26mDuM48crjlguXso
3WX3Kbls9VK2ePPM3bdk1ZNHTBu+1iweF5m6WZtS9i7Mm0dsmTZe3VVavHhccHjUvYsSrAvbNGzz
zByuctTI5XztRRi0N3az+V/1zZOWbVRRk1eNV5e3cM3Zmlj8Ug1e2irQtFo0Ks2jYwe17owFizZc
mjRKMnL7JHX90fvJKT94D8cxBPw+zzg5iHBOsdoguwkD6TX9AgbgEm3yngnlZ2+PXD19kK82VzLF
xguIVxlQFILnqzx/L168rDbuuci62ZQ1ypOqGvGlD9KjVpKaIpzRNENE3LS/HVFndc3ewkRzVQNV
lUGp2ENVLSBhiK6bl/l6yFQLRZMhvzVrchZgo0HLrcrrmNI45FhsawBzo/SK1IXW01vYlxFLVO8T
z2AAohCOQEABYIIQAm6SQSUTzyWZrDbxULTxe+WEad6uzN/VVfr+oyIR6QeMEDa6ACwTpRVLF51l
tFPiR+f9X9PqMCZNPK2Rn7KVVKPeGGMMOWb0QZYcmKKOgEAUhBALMFFUOsMD4Y+06E5pnFpOwOw3
FsNhimcS6tcF66Ql3DTJyZXyTFsViSJeuqJC86faosJVZswOY3bNW6fyWmpZisxZaYcXovuZEN0R
2QMt+sy1ugQoVvmaA2gI0pIRHLJIP3MJ3RGdmCN2DewzVztWZknqB58vXSuvgbPInkAkQHPPVaCA
PR6K0bUafv6XKMHdLHijd46cGDA4YNmS5ZouPbpyxN/c7Ftqw3KKTnL04yKxJIvuxc3ZWlrvaii7
p7JGxI2dxutlF65UwTHx5t7Vj1PLt2YXs2ek7ZsHDhVVxGJ6legDpA1ZQCRzhtgVDDBDkuqXyXab
DhbAEOC5BvS8Epp3EV2MzJSsGK+mTz+UkpoSKbPHE+HOtsGjXAzmrhw+FFU0nhczVfsUym+5pR73
pWNaqylflQ6jf2FGiWnLmNsnjQtjGCbRclu40sYM1MjxlG7pU3aqqNYui3uN1cztVZjq+DyJnSYL
+7SW3sYHnmSZ1yykbmDJjW6KB9yEa5eKuymHKtk8zYFHS31+TEelMPbO2vuSb4FHq9rc2auI1dMn
tX2MqTCj1RSvxdaYOF8Xkv457aFxwvkm217N90fLpk5Mu3pycrtsTxyuzcsmTFws+D2uUaPTOe9F
I44NKNs7XXItfHrCWuZVMTRgwpTdV45uaybt7385LpVg6bGy+vwyZmx7WKrL07dzmihnSeromuFM
03UrbhiXKSeNo5OGTtjByZHN7xqXPZs43bO2TNsmMwcxc5PbTgyhRTyp1zppopUkVQi12OijHcMG
LCXOdFa7xcuMmTFs3YTA3kl2jS5zGbNSruYYY69s1Csbxy4KNlzqGsySAskQf8c5PzUpShSE5elT
Y+HDRwbnqPUvUZvbR22ZKRsYJdg1KK6LO4ZO5qybMzJ25MTZiuXr27AyNDFRg9PqxdOpmovv1ZRy
7UWctY0O2efbKOYwMVC5s4YRu1bnM0du22SmTg4cxqxOFTRy0XLGikwUdKuXZc0VaR07XHTtZ2VY
/JOVnTQzbRyq883WZMTKNlTeP9PpubSdGis4jpo0WeG4xWbr1mMcPT03kwZunDBzG7kxOVFU3XsI
xclzBZsukwkn8f6RCdv6p87xtiL3+d2fi8nxkAOO59XJ9U8cMz07S9nblttLW1paVqDe15Z7y2l6
XRpoUHpS4KyXkbmBjrHZnG2wakNFcWgBg4w8TpZNbWO3OBgWLWUIdKEVkTdRkwGFqopBISbczlGm
e0zLxhqaVTlXHjN5o7uXlsnfeUaxzdZBQSmtMkglBQVjCSE5dWrIo11r647HZ7Os2jvCZkNaKcDh
A4QkA27JnRv2Wc2toaaJ3d2DHeTBM7tXtNsZJrGTjhWTbX7VLJNXpZGMlVy9o1KsZP63OD2cu4oy
XNWa4q2fVgsjv9ZJ8VV9BwRVsynzz6r3gI8Ak4BtSJmr5GEkEDyRoYCALsDCTG6WHXcQ9t48e/XA
tlEJmxbRusxN2St5dHDCZEc3PDeKNl7NjPfxwwbGcdBJ9TeH9y3wU8uLC/kjIYhhx/4BqHiMEzUH
rHmdWGRnOjN6jdic6KYRaBTm6NhvrCdZ1mGV9CTQCjcWNphs2bA2Fy+0eksuavBf8pygeNSHyZwO
g2m5m5fYWPbh8R9jh6d/L182kUK0bUmdpPi045g5YzGVl2SxY6dlGdzkw+xio37cRfrLzJqpF0YK
rRctHJwzlvrOs1F/SraiSOvxZO1XJsrhnc3nDt4FzWY4lijWkEFpko7jRis+DI4i91aTJhOopeo5
EaRaLXS98KZk8TdszcP23SDKSep65pNaKU0umj4dR0cxQybsMKUu1p7VJFYwaNe0ei8vIkzbM/eV
mlHTSTOQOly9ZqYHC8vVcLlXU0nFFOKWnXTA1VbNGSi40YvG3p55gnjZhpGbJU7XbvHbdRc1arKr
RQ8ou31IXuBpRqPwHPQSU4HILihYsfWfZJ4E26cNlXXnl7s+jViyf6Cj2+kcW2gu3r6Vj1o5vMlG
BSL1fUZfMaOWejp0wbnX4qZRl503cr2kuYs3XLJc5j8o0na80drKZ1pFWOd12s18j6daLn2LtHth
R0+dnS/7OcVzq/OjIwXUKxpG0kTZSRLnK4WZrNGh8rnLFZeoiJE4VbRqtZsXM1nLVmmcuWeG7JUz
nPxsYRmzYzZw6YvhRdHCy0+k7xUucs3J21YxjHapdH4+haNo5dHaevWr1HZ00dJcuVNpgcqsFxRZ
03XKOHD/Jsyauzw7XMoq3VauWsfMgcpAWi5ovYs3J8GB05n8Y4KsV7E5cmxWLNIudMihc3NnJzJq
zNzxRgyfbzOGKiQaqWpSzV2vYsGDNgbHLBgjWbGTRqVXLnKq4bGasvcuVnEXs3SxyvYWi5XJR8Ph
2/xkJ8J+yOI/p+Xs+DDePUe5O8fgOiv1PQmKgHd27OO+F+RdtN9bypVUNtRVXWwfQb7C28vG4HrX
ffN2Bdudwp8eyiCqVRk0iDwiSHptFyzdd7x7yn2QRMX3gdfBZMZZlkrUztrXdYFRKnu9X3hHULdq
zaiCOnabu6ii92E6WXa3XOlHY0TED6umjkTKc97mRLxHY1HiDsGRIEgoN9reow2sy2V+5r97/F9n
SGBjGkgbFEQlS4LRdzJKwlELWu/jbqeXkI5x5uztZa8pZSwaUVQHuiwHca4I4BAW4EGRQNUD6LYP
SrT79Ky9j+Deqmkl96uSIH4tGyrRniolz2ZtvFz5cH5yE3z5Mdcmz3KT6Zaul7sHHhOJeYhmWI22
o8+m4ocDw47eXGCmnuAoYeRThmbrRqWmL7oaPDBdFWbty0cTYze2heXV08tjbLB8xjcElIhPbE7w
zezxjR06Z4HU8dp72wMGnEk6cOU7aGGmE8dzSMFU1ko5dtY6VnZZOHC1ua0phacdO+FFHdpewuCS
5w6V7m5wuaRp7p5HSuazY7bLr6nPjBW/lSalV6MdfJOjZks5V0OK0rQ6WQ8CnzrX1wyeLo3aPUtV
RgpGW6zo7mphhczWsqxMjQ9cNlUkywkencymThUpKtfVn7h9567a1ep7xpr55aUoVrSi3fzHl6QH
xJNtpKYMy6KEw91aK5JZVkqVYsYuwKxjJ28T0vvX6Ji4l72+ki6NZk6cLPlsXKNnpHfk3YesB1S7
e9cwl+Hk74Tc44X4/Rut1MFbLQld2Feq2Ly9qvtHtRcocscpFG8amh49M2xcanB+kdOj4mTp7bvE
nqd0l3BW1q2M+6esOqiPXbtyma6ymKxVxGb4OkgOBHTVnkxOq5YxoWOHbh0wjN0WPykCxI1ibCm8
w6KmTxwTZrNhpaJjK3VcVhay1DgcS5cyeN3arVUxb5SyntmrwVelWSjkt2zO96qKX6UJnwth0bs7
mjFCNF2sKr2zo47xysZsE3W6ijNwVo60OGK49PzyXMI4niZbIgf87/32PyUnreho8VsnjZ8Lpi4l
yzBWePwYujBg6ZvbVVpMmL0s8VWaNFByvXLM1GDRy0cs1jVgXxaaHy1WZPtklfqwVyL28bmTlkXu
DVVYuXpeXL2JdGTAs5Lll7NquUH2dGZmYqmpzFxZo3UL3axxG6aOGrJZRMDlZqwaqbbXOV66S+l+
TKNFlWbGxs0WYroq5axWNWpZ2bMVZu1csVWZzGCrNwyUaFzAwXNWa5o5WctzFjKN1XK9o3bLqFOX
9v8uMQ/1H8Uk2+4ka/oZ5REelfKJqDL1cU0TsV5eTreyRQxmnijja9i5rxleW0hS3DQ0NzKJQvmZ
4799aC5kzcwxKkTy2QTpMfxonIiD0ggEKJNFBIXvZQA2SSIgtQb9JaK1rZYwnjN1xS/A4iMt9u0n
WbukaSe1zK1mwwJ5WsUamdQ4ksmDotl0Ckch3bmzmBgML3ld7vDdFW9VRri1zmE6OCKpFH4UQeTI
KCYOQiBghWlzTs6O6oiu4VUVWsF0InfgfHobVmG53O9CgBQ4pZIFlYlvMTbvxjhZvGxa9sQYxm+6
M+GkjDePosbsmCjNR/tlvy0warnpxN3L5xNZPwLmlrpEDtyyPxWmijVo+EMU3HPVzMc87w6k2m+/
Es8iIpYQWHAqgmO48OewB4FUQB6WO3stmRlmrm/AXlgeQGVEW18VmcYy+LWknpYK2x0ZrcvrkrF7
Jw0eMF7ZshHe+C9nfie6HkW+nl1HdUad9Kr15ivXJByvyyvaxJIy/Yb9sFXVnUdapxZgrGy/bax2
tdcxKJR4hOZ/NSlJEpQrIJ1/CsklaEPSjefJq+Xw4O2XS0eu0w8pV29/JIv9yktoxmD0rhKPrFxK
umC9CSqzvlkovel/ikxLmPTRCKmMbpivWMy0ny4OY6l2i61aUPLQ1hLtdTdm2YsGWjZ2ct9mLIuV
xpJmckzYMTZcmkZ3LjPGOmy9yWUZu1nTBc5aMHbtZTnvhStDGildu59Y6rcYd6zEr78XjHZFJkqb
aQzaFWN2mBe93XYu2j0xbMccHpvdPTiMHLB7Ue2iPRRc3N3Pji+uFMbtl8eIScPOvBuo5Xqr8Zkm
Taxm5UyNXeL23bK5MXajOfvozbPbA9OGz5vXsW6eJ2xatDmdTL2nD3WjO2KUknjNk87WVej4ZMeC
lV/hRmstHkYL5spMHiv0yPRw4eNXpw4cLmSzX59zTra0pSKUptd69tc/bMyXVXVlHRZgs2XM3S7h
sylF654xYKsHwPx+JqaMnR6cuos9tly5dz6pMpKlLTOO1JAydsJKrmxq8VKrMPT5VS5qq6e2zSZZ
athl22YuWikKpJw9s+WLKOFmAjCR+iNGBMzlg/x9souKszRgUXzZdHfd7UvkzNXp7ZunbKjJcwXT
ZivYPHDaaOzF+8kvdrJk4aMXJguXuWrJswmT4ZMhexJ+Mk61ZTZb09MTRRm7YLNlI5dNXRsxTxTL
o0el12roobsJQso2VWjwqqmbCN5Zg1d92iSRZmdNm/6p0weu48YZNtuWzdMHT0OYupSlnpnnc0H9
hNjxNmzKZO3pc9quGsXb6R2q5U7mLJ6NXDAzaMjxZiwMWqzRq8LO5sxNXLVizQ9HUdYbvMIXT3oO
XYnSJ60853twU1h1GKgHvDaZiYja/NTmdcNnCxtDqx5Wte1yWva68px87V44txPxVImF7t3w0Bda
m2hJqCCpJjF47Q/E6RzXHaA3he6Na2YoFNEaNDwQrnH1itF3lrN1qme6iomBTIaOFtgSYOBZNA59
mzUmrxRums+QZprsmQIuyee9cAp1X62k4XLXZsRySKsThXKKMjO/WExMn3NXDNgjQlzRsZMPx/HO
Lm4z/afr+U+XUoyZKqPzdPFHiXe5huphTrJmX5yXylsvfqr38+cRyui9N817CWbScZtj3x8KWQXt
1eXLReo3WaHL62Xr3otgxpfvqrHa0rNujqS/hdJJwUDN6xNnHanLbaTY0kcLqWYsI7i8qs8jSNWL
Bkbr4tN22uNKr6vqYNo9xfFsBxETzeScuFFp9GMcqN3pqbLpqpTlWtWh42cnowMmDJkyf+frv8ZS
1OVLq3/bllfXpStKqJ6npiyf4BJw+jl49N31ntv8TX5duHoarixuqmqr7f+b5pT5nTxRi+rsqqqd
r08bPTHuPXk+2+r2UKRlti1zWlzdc+nDd7lmbZlCfCyitmbBi3+HRgjT6ZHBRg3ZScbt31ZLO5L3
B2/X1dpp1TK4oZKas3thV6jiLZxQ4mnBo29qSXL2y+azSZpqxj2s4jxM27hxMOMqN7m/2pEM1Xx8
cGkYqL3CrZ0w1m69yucDlg6auHGrQt4qxNFn5St8+V7s6MV+7A2YNzKF520ZlXTVl8d52pW7DnyS
tn3t9p1MZF7QyX4UyYf2dpvtMKDXkuxvaLphO18atiplnep79lZVV9Gz5YOnt0wizbi/3nVk4LnT
Zsmh2zaOZvGr0vXycLMZ4svYmc2bsI/X69LSIG/9/+fXRvMXZWcql6d/HxFzJk2myix9jt5GsuPD
F6fDOTVe0VYNlEo1aM2ZeYOOMRu5ZN27Jus+Wr9pzFWDt4dPF7lyxXNWzhlH84/VbRiyW9tlI3Vk
9+7Hi5U6elDpfFjKNTx0q7X5KRcUYy8zMVmjdM16VOFbozaM2q81OON10ZPaj0amxmxXMG7ZspNH
E33pTQ7Ll7li4bM864MU2cFWztm1bS9wo0bNmThgxnLOUctWczcM2ziYsmyhuWdRgwWjVVRgydt0
xZM2CvN6PEiGxQ+v9yUv/tP3QHr6hQA9vmTIfJ0douquU67GhIwhJnWHTRnB8M8GCUTJ8e6gNZNT
eYR8VTcZBouWqFEi6sbWdw0AahplFZWWLhirMRp6rIuKfBLUBqaqy4sCgLazL1VAWYlglJqo1N3m
KkUza3szzdeOiRdjCCjnyOtMMtd/FiYPY7d36dgFkQWoSjiIw0arhHTkvpfWsl36ZPtPuax3PwrJ
Ktm0l01tEJy1aMiyj+MXrl7UsIfJSLJY3ZnJiYRtJQcrRk9tFHuMzWO2Uo8NqPbBfN7qL9aL2sbs
GyxboKRFI9LsNfLpa67m199+mWMpIFHC6MW8NJVs6dLpIhns6f5WzB20VYn2pbaeU3opTGrqwuYs
zhXA6VnJ2esYs7KfB7bKzZeucOsbm7meoujxZie17xoo5nGD0dbaKqcqLoxb4Rm7eRutRTJNsaSh
dFHKhhJ9Eg7cHai5MVmbU2dRq7cKvZ42YJ4/wjtxnrXGZeNizqXVZXLSs3LMVmM2SAqmZiuq3b4C
LzAwds3WjFXiXKNWaUcSMGy9SOFW3qFKSN7KECEFBlxHgUMXIPaCgw4V0GkvcHtBrtZixjRgcsyr
Jedr3bGcqU105VXuVbjF3ruu3KcThQE1rr2BGnLawwCjUeZcys3z/DAxaPFTBY6dHTk5XKqVY9Tq
uWtuZSknHF6enMemTdpF7NZqdHTFL6z3OHLZg8Wbr18anDVgyWYr1Vp7Ipv5opYrmykuixdu4T0X
VUlzZX1uwVlU5WMDMwyXtWLa5QxOmbZ4xeLGDRZq+P8seMe+Nei2uq5j6Wt/PMq+FVc3o0eiq5Zz
49Pg+PmzVm+WrJ8xEF20cLlty+Xul0ycO2syNVWijY44zjZRqydP6jjd0rs113TZ0wNXaaM0uVcu
HLkzXSaMWTKLlDh7YMWZvG7Zu3jnnhqnDeOGy9ZZm1XLyi0Ujhe5YLmahgkos5Yv8EJOSrZc8ZOm
EmzRozbuDKOuuYlzAo4jhcaOFOm6y35eNtvbtq8MmXqn14ePFWRVU3HjQ2bHjKNymh08PFFWz0o4
ZvXq57dtWqrVqm7kxbt2TKPzxn3xMEiGkfq+Pl9yan5CC9aq+8UQgYhg0CnZDhMoxEU6WxSHppdZ
rbw8PO1JeWs3+F4zB5GcnabiU4Kkd17RZuwHBkCEBsUHwKKs5lUiCrk3kB0i7qI3CkaxIcPkDLec
VwNSs3Frky1UKQoO2HaNRLjCuqtR3mqpIs265G+I0apWpjRkR4BEhaJckzMtykmXU/HlDjY9szxZ
26c19QQhwXPRXXPPNMFA0bKqSEggamik2lJgYappY6zIeouoXLNdyYhe2spJISqgkxfZNI1Fi4wY
NW7BRofEk576NsKTm1NKMNMMecZq3opHChffXyKEJ0okGZRJnFVesNtsLZZ363b48Y6tQkodGC0y
OJL5yzVcNm/LFo4bMmLs4apyyL1P4IY2ud0OS3O17mVxi6Z3ySd4OI6byZYoOGrBbRowjZnHbVu3
TOOmz7/uJGDF0zclDsvXRs9KmzT76v7Ix6zrPOdJ6NGmjv8/UkQxcMmbtk1ja9o2+H8MWLN1PT24
fLTy50+UgLly9eXvbTrsstS1iy7DfMoVauGBwyyDtYz+XsrlPL9nDQ1jNQ4bxryUelIdLnHerFew
ZMjXdxCbZ0cL629uWMwUe43ei5d1e4J9yEXSV0VYlD0swVnbZJPRZq7KKl54wdNddZhP0pi1aMH0
1elGjk+SzZ7cOj25jdes3WXr2JnPfzuqqxNFHDg2YmbdfOHpixWjzPDGilZjV7UV5asWZtHF7csx
XS96YMjAsZR23ZOnzsaNlJff03cqnbt44XSeNjV2vYPGBm4nrTGlNLYVVrrbLFX+Pkcr2r28eLGD
Rg7aqL01cqs2bFizL07dMijLLNics2DJfff1bdXe1tUbvJvvu9axwtHuZNS5451YKPbNZ6ZGD0cu
i9euddYvwTaRxDTk/p8L182L3iYvbQxcLpPRkuVVcqHbBmsbMXbJ6XNmZcxMHqMBc5KNt9L610aq
RgmrJRuvWaOI2aFHD09KumKXS5kZNF6jeOI4YOXR04aMW22S53OGbFZZ26bnKXxkyjd01jJ2ar2j
B3O1ZZiZODtaN1F7OOW6qjVmuMIovYGrFswZlWZZw0fvqbvHjxy3NmrlynazxyxHLOXqNDRkbsnT
ZiuLNiijFe0dsGUlyjxsyXqH8IhPhICn5oRl+sfkfU+71t+tYwjtP1iE/X9D6ABPVb6cLt9w17t0
eG+bDYgLw4Z1KsLGpXpQmhYGcNQppxWmafbNMEoNAlCYLifJKIlQTdSZzl8PGutbyiDEFXI1FHA2
FZCuMqMbmwtXgVhUPW1fTWpO2d7Ty/g8N3uD0EITOSg7KIjGKIjFVYkVYrIyOqqOk8lu8x7rYyUJ
tBMwYIbCDdNQUgQ87kOFVVVVVVVVVVVVVVVXuNOu45cs6cdDUs0JJJJCuXsOwukRIz2asH4LvytI
F8kQsYTtquLphkshgkUwYsZC8ucI6bNY4XTheWZMFJkyPu142pgqKfi4kmiq+XMnbCNu97Vuuz85
p5uyKMdN547bGhpM2ZmczBe3kuYNDd0xaLMMy+i1bcq3ZmBi/hdgx3W5ZKd0WbumCL7EvTFg5MXX
6U8/hq+Hpc0QjZino5cLNjmL1GLNiXsHiyhyw38hhd54571duCmsOM2dm7lzJxaKzpGruNGLv2uX
tWUUN54YG7gwcrKMFSrhm9tFxt01jtNI3qYECO83bDRLhqYrZLiYBTWEozct1yQGyslFVVV5U4ct
GZxGjM42vRF1rK21bXvmK3Ri3enpkw6MJi4jk8UNuKX8r221RmxarOmxwo8bMYomCpcWYuHJidmr
ffh/Ld6R+sgfGu9J3zUJzLKOlWuh4uXPbFc2YJVOecXa15ewi6VePXv5nAo2jhSO6S2LpZeyjFmX
LmzNcXN3LV3HatGODyrOOmzw7Xr26ro7ZLnjHzi8Uyryqt2aMzmRxLzBexdLmrPvbxwwNjWMyzJ5
XBoqvNXBZe1tNXjWMnS4vfDRrNF594SctqYU9fRWEuyrIlamrgs59qlbjdVm0cKWmYT2rUmCzho0
i9MTtlQiO3ccsHLccrt6ImsZtW6yZF7CMBm+I0UZsmZtFGypQzcKt4qvar2hsxXqum8xfvJKqs2b
JyubrjBy2MW5ZyUXrlmEcNCnEp3HJ+RcwmDVJMuZyaRV2XuC9qxfL6LLmzmKPG69qo6cztvJms0e
N99m4w0egcJGCamfBveEk8gKPaYCPIgR07ZqRZ07XtivDhkdsY2y+/ZmulSi+XyVpF9CVpM4qyaG
Kxk7YTjZ4dHnmLeTSMIyYYdMlyiaxumThm2XOmQvWYrjdu0ZtWC9eucp5tH2yT+yS2nP67J9Mfgz
vpI7gE7a/D0h3AfiP5Qlf9Q+c/iXP//B9b0IL0xeuQkh902iPrG2tAbFBpb8YaCLIDQKXw8kfVdJ
JPrIviWrC9FiyIDzoiBTZTwpKL42LiIBHzgqAZczUBt77+8Z4c4lDQfKKkOEggvzCbyJ3S6HBYEf
eack1L6QmyBngge1VjC5fzecp14L25ce5DsEJkjzjEKDVpVWnYaNdk3/Tdsj9OeRDxxPGMtFnaLh
j7U3keOQytqcT4T7xvMj/M5ywJFCPun/O/9Zh1c9Om/VWIpgpFNHMoaCAghGKQIpCKf3qUUAxU+B
/zahIsI/eHVhMioK7tkiyMhEJIbf3nDIIm4rG2Nvv0fKCxGPkUoCoyBCAEYMgAoxAUgsgkFYKMRS
IKgisBYsFhCJ5yQoVgsIiAsRiIwiRIxBIIMQjIIgyLFiRWIJAYokUQUQPPIWSQShdxEoCkKFpSCE
oEYxiRGMSJGDCyQRCjCUWDCMGFGCUBGAwZCDGEhBGBERgwFgwAhBYQWJA8SiRkiKxioRixggRgRg
oRiDGCsCQQSiCxEEQRBEEQRBEFiMBEEQRBEGMEZIghERIn/I0FHpPxif1ipUQAKipXqOff/vcRwU
8FOxSkFM1NilkbQCTap/xMtgdkrumKljNDzAENSkLIdM85b/I8Xa0wIm387l3yDAhI80KfhrnuN8
On8wCKPV+s8TNAkPuIHkOLR/CjB/s9VMIywfw/OJkbyOTr9tv+v1j+ggaxHIO6wmxEhakwIT8B3p
ZV/jqMWYmwj/yPxn/RISyLnd0v8Nnb/oSrFWE32U3aQOITamB/gicGBvTNyM0yqnED+bd8x6l/Cl
L9cJKypuzOrZM6eUTicpxITe8u51EwubyKkNSkD5jf1qQ9JydIp6gAOaESIyIgkCASMkRiiQBWQV
YgxiECrQP902Bi80nXFcesJC4TIVzDv14Yc+sqSEkkxx8tZ7ce3VdNaQC9kmhKR4HjauJvTHHeJz
U7RNQLRxMQ0QbNkNnYalF1AavlAkKOZcyDaomDlrMD+vFDQYidnVJrDcNxY/z12tOgDUYpyJsZcc
Ey6MgIVvDybcb0Lhc1a0P5wQ7dNhDQ9zQ5cpdUSxnYCKuFUHrF/C6d0zVkXJpGSSdznmjRVcujUk
oYSSYS9o2lloskhJy//bBbE4KJtdfV1bi4R2ZvSmqoSbDi5ZX37TJJwLPGSswTfwyzko7mjNZqPE
aAcBQkOSEw0dbRpTA2Ik0EjCFgIxUIjeIlXDloBsmgTr8v/o2E3ppT7EfBNC1Q5l3Rf79kv2jjMm
1cB/uRExJchDFGlG6nbbEF5UuNhnQTItBHWEAMcRmQZREBpXj1+BfQC5nnJns3tU9ZjErOhjtI3i
EBUSZZKUsYTZoPhewkpGstmRn02XVFBAqlA+kIa9QQ0YwcTnLCq+IaJPtAw66GwCdgNtZrSJuIKH
U9j1i0b16SxVmRswqEXVwKDR7JBIxSGI6NJ07NSWVCEMQGPTljjWLUPJPEkOBvK3FneC5rft48Sb
g3hhzbZ1ZSxQwe0vzq94BiLBgcswte4U0ZlAlgvrIWOPnVZbv+YLpdB7npOjvXIsnXiYJBwCLSsJ
IRfmSiZGQVtROgWGA4I3Tpz7arEdbrKMQzpL0hDM8Aoo24/i9VAGRMDPw7Neo4UmAsM1yEqykMA1
rMGGiFLLjbIOkFL93Y4pAxNur87L6YAklWM0MlWfV5H7YQgWdqJ/wFgCnUEJSTthrQSd0sPo/62L
CxgKNCkFq4rxelWz+hZcyP2/dlL10zZxisn6n1vvuV5gJ488rZeZEEqCGZmZdog9TBLesOJT4Kil
xiDg5A+SGRtLsNRHBEyDCkNgxH2Pq1piE1ejvh1qGTcTrUTcF2AJpEzXvxi7J2sujG7+D2yRX62i
+GBW1Jx538Qwj4qYUi1E4aLJZYqlDjdWtVFSTYlb3iZO9xBzToym6ZlqbRgiZdQ2DT/sIGO5/0ie
mSPaOlejOlO9HULBU9AUI7N9wOMbwqVKIUw8BVNV1OGGIcU6ntA6wuHh3oNJgTdwE2UhSRTcZnYW
O0gSFtoKd3AIEgerw5Nmue4Bp98AzHQ2mA3ianruKME+IyR5MXkTpF7XHdSsymM0uUbqJ4IHUOJw
2lRwexV1IHdMMJCnXBYCHfDnFMKOgsCQwZuFsXjYMCZK4NY3MBTYSWMLkBK1Q9LPSAiQO+HjIIY6
jiUdG+xLxQ3RcCwJO2+RdpbjkWRHxhbcWqFSHlsGAcQLuAC5HNuOkkG5dEwINAUgwcTYUlA3RIQK
9OKPdDKiPwX4vhSTFJswjWmRi1Lr9SkLXLpZ4sGzZ1iezbo2HMSRf/S5IG2xI5xhoVy26MgWDxi9
u+uJEoTv3+AhQqQ5GBQGD6Ulw4mxb6mDaLMxj9Wa00VDDAZrInIdWJN6NwNHOnJ3Qd7ZyS7FDzhk
eI2GG53ODlhO+javcRT2zlvXSPTqcLUbh0GyDGAFKAdRnaU5QmHftEN+XnKVdi3IhUOtoqqqrxLS
Lry9T8r7A69A5b+BamhA18TvAGcI6HA20voDuoWxjmLiAWk3xoRiNxM773bBhuNCYTxNuXUp9b4N
ZNn8sQiU39d9PTG9sIa6xYWXfShYRQ1IF0HB7guHYPM2HJyT0OJe54lTkjscDAIbCow4Th8vd9Zt
Psh9FGscUp/br3mfOS5PF5V1Qz1h3KT6zEkWsOsXyTrfDv1gSVMHuDlY1Gx1pkg6khoOqXJJEzLX
aoOBNxDMIikyJgCNIAqh/AgrkFga3IBhLaDg+Ls9oWGuSGV6oOrApBL92Y4txYZuDGm514wHqi/3
8TFE6NerWaZhfZN7zNoREpYIGETi+OLxOrULiO5uFKGdpHApj0Q1P0e7fa9SpvLJQDykiEbEKzQN
DbZDcMMju7EwKxOlDCIMxpOWxO4ub01wKSmMTUiUMdTysDquOceALdKZ7o0xiJSNBSQJEIpFjFgi
RUhB3mKhseRrTlgTBxXIgcB4Ul8zW2cWIYkDhzXYFk2STluq+BagxOCkbe7xzMzsNa1opx1VUFHc
KVE9L0yV2JzGdYkKkWMZ4bT/OEfQgNaHnoEEkwBB3Z9eJ7NE5SvhiEYyi6lOhwAsqqmT5h+JGVQF
q2SfIemxwfN3PUWRCgZsCOI6DfAppItnCNna7XBYC9ljDBNpWczC9ZopxMX2r7cU/EfwmWU5apsx
pNW0kUesQDgQez7RAIckgUgY0aJcuNlAAaPO77Lb2kpdVwIvQosuY6VWvSCPwKI+qfQnxAbTRXaR
Gn9s/hSCJtOWEdczTRY1eEsukOvPGxQuY6ZOvR0XEz6y4eFig+f2XDzHcZpq4DHZ7t5UhDjCiPv2
gVPLW8LCQgLQz1NqA6CuqI7FB5phXD5EsGDA2UdEG8unxlN75rLpv2GshkvjSH88WEHRY2gAayFy
Zcnfrur5eHlMnZLwwwu2qqEwGFlKKvcn19gagBx5gh+OZJ+Dg+AHPx5VG2pWiW0rG1i0J3bTp4Hl
ks0UrggXv6R1NdYWXIDqbI5tsCna7BE/Lx/icfX7MD8qXc0FX4RSQIJA5eZtn7QLfX+/4j4h94/w
+zT7B2L4uTiDS54eqHmzV5SEZs/O3WfSw/FpEgqeZI9uXvQ/oh0/jkiNPTgPsI4+La6g2+bU2fgU
Z+yxZ2BTwKC3tiFQVLmsQeaWEfOO4VMzalGwsKgI1vC9/wiVQAaBspNUls2K2Sqfjp5zDu3DsiYb
BiUEnHi+jt4UMvsaxwkQqX5cLNwtQ1uMwvCL34AVQCH89ucUcwlVbjKRBwzNui9JznMPs8Cn4I2i
FQ/YKk/rkjlY1yKoyekrF3kx0P8lCnuSLZHIgZsLnqcLAugHWUpQfmGCWMzbw8SOVnWJ2hyxdUGF
nnwUQ8Z2m5XeM3nmOOogJjQJgSKKMZFyQR/Ifj+X8fbAN7HaEKXZ7Wz/aLjBx4LbFOCYQwtJvM+y
rOZmgmbdzMLXHFgUc66a2eTyvaV4g3QWQZEU2GrY7zY/ZYN5suG8Tc5c+DTJiwxUFD/WZ6A+RysE
4ntDa2wdgxEhG8E6TKcQWqZDikoWiOGKVh6fN/Cnv/Basvhw4T2c4bOi1vr1BvHgshGE+2J0FiiE
McC1oQVWJ/4/RmFBowRiTlD8shnxsOfxh6pZj/UoAWy+8mXi+FLgh/nS/7Ymwt/MtnLA7P8LV9FF
1LVy1fjsnQoQv/dhxTyp0H+Ca06IpEDpOAxjEBgpBSAwBIAiQAIwUYEASHJQIIlJEGCv8TqSGELi
iB+Bg5KYdRmmRwhwhwtXXRRmDfjyt5oxef/PE+bkN+E3lJCnWFH0rnvvfcZTmrtqBWpHAwU6OzEQ
xwpSbV4RQJBJFSSQgpCKACigCgKCyQh16ksJBh/tkmEYyMPPrCQ3R8MsEdq8qTNcpMblnYxk+VJI
aiyeInTMPpKwy/RV9fHDQcIhlw25HBN5gj6r0p/0rpT+j/mV0/ywwuKBbhcQtVPkSZHKIr1n+J/b
e3+0P+WJkeaPqhJATyppgpJx0+x6W+4ubKzFs3jhRiXPudKlX+9q/iFBcHSTyYI8h04GhGza6Ez4
KD7f2GeRRzTOrTmuV+B/vR/JEDdVdHDJgqqWVbrxRZlH6RQ4nDUhDB2UUXXYJ1l4zZLrrO2zpuwT
xVZkwLFnZvvUydMjJu2MGmxTlVknM4NHccxmsvf6O4uZRuO+805ejeNTx41cORxLN17govUXu1zJ
NF6azVNW7Vs1WNDxeXmTBgvxZSYlxc4OIo0YKTZc9yC5kyemDBk3crnM6aNFJkxKs2U6fsSpowbR
VY4k7l5muqlNYvcevVcy9oUOFHEcS8sUXs2BV5Grcqoszjt5qwaL3LExXrRZpHRecHpo3eiqq90m
izFtGqix55wZuHL80iGGF5g/33XenRhOWbVus7iqzUvXODFeweMpYvT20ijCdNGRi8WXvx4jrrpi
5h7nE1as5RcanBgswfSf9PEpJs83ZqWparpsui5LLy4s1YRcaKvl4ZM2K5R6ly8uL5Ve5NGqYKn9
MXTNms2M5o2avFDVk4XlY4MXv3uzYKTGPZu2FjUZELOtMzWQ0OJ0wfKh3lvdJXXXkf0do9Zw0fUs
5PY+q47izJZctHbNRRiswfOz5Jc9idDka0p1G4h9zvQ5+fTKur9FGkH1hlhN/2MNvVpy/ExfdKfe
css8/wPb7D4WbPsPsijF+P26sTaR+8dsGLJ9i40eM2LXU7cP9yfsa5vb4iNy5/fH3lzpzF7GKslF
x8sH0YqtHDJ/NE88uZKNlFD3H1cHuaxRgq+C0k+FHTs5dKJ9SYqRs8ZqsGyVlzdgO+8H63r1V9/a
cNX2JAfb8vqpXMuUkT6pBAhSb2yXgOHqOhgd6tvN5/Jef3+WSQ6SLyi59XrJasVJEVCIplU1nf8X
MP5VwM9V4ZgNKnS4ecQ4dh+5EkeAvHUSOfFQVgGaJF+1lJTjtWW1wL22+KqX4AIlBZIlACJLMH88
AQTw6FO8DB46uCVCiBu9t3nipiq3ADdjR2vcALp1GWLnPVTZOx66C1fBMEzIkPniWTDj1kYXc0Mc
TcCG2PbA9cPtV0QMh0Y9tTbRZtioQEBC/frNiBnw5q4iMneqM4t0zUUXG8jCNqUn3xqu+Yw1nAuw
8vlhBhCEDWtw2qf0KvPVquGvkUgHAiNIQYGchKiB1NIKXgCjgKRXmTWpxDThULNOFigrwzLrg4Gr
iXcHRhDVlfLRxL0wPiwy57tv+Cg7DVxCO06XFM05aHOEDiLyzT7IB2EHl0+LpSOU+j+PlFeDAdvt
5e99Hx06/MY21f9HqYpIfYFBQ7V5IdJ67FSQ16z5ld/t+J8j5nSdJzMB+a8w1hicg3hmdZ1lWbFq
Ojds+lb3auTfTLWtbsueebaY3XuVzdVRq1aNWTUyYmypsZOHLNdGKs2ZM3DNwxN2q5yyYNyrBuwX
mpi4bsXBq0bs7NVFopamSZlX7sDliYNG6irFcvcOlW0bOGLk0aMIwlnDZkuupyqs1Tg0YRZZgwN1
7N48dS4yRqZs3LVsYxQxXyTha6taXllnhe6WNGCz9cUs440ZtTd/HdfG7xu4YrmTlgwWbmpo4i5S
Mnpcs0VcuXB24VjR6kqxUdM1WzkxYLTdWct9771MTdsbGikcKG646XMm6iqXx0sejpo6UmDRNzSN
i+MW66NVTZuvN3DVZwvKm52d97L1F7Zoo5fCXKqJw1jYuZPg8auYvmUdO3o5KvSyzocsGUYlTzzZ
NT/JVk8Mz1Gv05LzA+HJhaLz4dvg1ZGbh2xKtWrU0e2zIyen58OGb9B98fy/Q41UxZNXwss6XOHD
pZRSOjQ0a5M3k0YKOlnh9i5fGiaNjB82WfEYMnKhRdFV05VUMna9tjFzteyOmpi4Ym8kTXOk1Urw
3VlzhqqzaOm77J9jqaRgvVbxRZ26lnZc3Xup8AreyKqqXsGK80ixkwMW69hGCrfeq0nZgxctV6WT
qOSzgwYyq52zduncn/t3rB+M+siszuU5PlwrOWxRyvUevWMeNC9mzXGayr0e1WCPb0+t6SW61n0o
nFvOXr/6mXp7F8DRMpJ1sLA5Pvqnbh2KCYt/u8oB7JDoH/Mdjv7FVVFUYDJ1NECB9kDMOSuQ4Tx5
0WUAIn/CJ+aJoB40/EKAHFNvaDcwV8qWVyVPqh9Qe2DH0fb7RncWKD9QCqnr2YkE75Q4lDJ4JZKs
wzpzY1lvs7vbXuh22tkdnH6YENabVNB6FIG7m8AwI0p+rVTh+kUfu/tPTyPSj0vfZH7sH7sZe1Kq
slo+rBVZ/a4hYsXp9nwxpnS+nNeGKxRgq3VcL2JzGxWVbL1Wjhc/b9/Hi90VLMbHEaLUVbunbBg5
XLFncctnLqMWiqzuNYqoxNYwlGJktzHkYrl5Vo1bTpu3WVkwKxo2YumTdgrFyq9ZoyUbM18eeaOG
7xymx/r5aMW705k5aOHDc5ZvThR4VXR0+Gss3Xs1muvEzeMjhsxx3emzZaaRyUVeGi6M87njyZnL
iNpMGWWbVc4dquzVuollmDVicRqauF7s0YuaxSzpRmscqOlGMqza66G0l7Ns1dxwuUjk1MWcWUKt
nSSZtVzJV/WXvGLxk7jVPFCi9cvazZcvjNkwatFWSZmizF550wbMo7Zr5Onh8o9OY7dNFzFs6njA
s4bs2TeN1FlGzNc+Iw3kn3fY+xs+C84auF5e7enLtZeUYu2CXMUpFXjVNI8VmRsq+kKvw2VXqr39
18T+H4OFmdPr7i+iknu43mKm707Nzt0+6TE+DNie30jFqxNGTN7M1Vyz6R+qg3l16yKWpS25ScR9
T7/v3VrWbvtcHa0mLp1G7V953m0PGMZyZly53+rg9xebrHB33us7cOnKrd25eozZLP2wOWLx9siQ
/P7ty1KVrKt2pk9vo+Hw2Vdt2Skxhi6dumrhqxKxiXx+fDU4fPzys3ZrR95NGs8Pvnb0uOHcWZso
2NVHK6ely5VkxLn1e2TMYF7Q5GhsKMDMMwyDgnKE5qard/9oEfJGSLAkD0wolkndNwNHgYY4PoOa
U0p2V8tgOrZh8g9sNRdUsshYGxglBGQjEJRlqKZY+JkfA31uw4iqvoOnwUA7tpiQ8nR6QEUfFsEx
DtAq5BTpZBAnbVDCvsoLH00yUIT8gys1jkwjBhrZYkghILExjlC2ikkCoLCSopM8HfY2BGbnfvan
U//F+v13ghHkSkvJLDIML+FnfCL1kYwhIxQ1sOOa26dfSh928A6hQAtSKpkB1GKnJ0TXYDuDcrdP
gbl7GEcIhIJSrckeSUgXLn1CGYj6QMEgXC/lud/UKdBrUF9EDcz6KcpYpJSEinJMC61NGr+nMmrS
YDJRkihpy2UtjQwzGSsBJ25kXLBHRkCxSiUMcZmOYFQUUNa2zH4X6vs9qZ9ht9tNrQ/cQDpOckA6
w5XDLlCi4TPzHLTqIJItV8rBvSygjeRDxUeILaFkjAbFoFFlJSVFkqKpLRUfVuauJywfJ/hO1n4n
lCjkZPmSjEwI5Hp7tDUFzcWYbR+RsMD2FQzQWUVaPp+z3hUUL2Gxnyj2R4lsfSuXq62w2XxfGLoo
ZRxFS6TQo7Zr2Kq5RmhJv/wdb/xKVuevXjljGDhU0O3B4WcqLL3MwWeO3E4WfM5T0YOHDlyjcvYR
g114MzNgZRRVwq2ESJrKuGSjeNkvVXnDxxxZqyOlnDGZNnco5L1mRkxdKKMBm0Mk5csXJQ3UOy+N
V6UaKuDExaJu66xbr25oorKsZs1cuLo5cxmsXeNHbVuyfdmuamc0VjVcvM1lzuPmRApL1I5ZrMHR
uyULsb9XTpdff6jFVu9PSxm1fMRBjOFz26Ue1m5hOVL+2osoWuLLOXLNlFFGjBjNWryRV2xeKvTd
o4KtDTZuxWzNF7gq2jQ4MVUudryrdY6LNHp6YnTY5ijJhhSnRiFrdA8wJO+pQY7VKUBQySRYq0qQ
P+lSJFkKSEeHkduzabRZw1LlzFcpHT0ZPDFis4UXzdmma5kXvZnniejFjGDz8ZJs/N/Fb++9Od2D
w8bN2BQ+q89Ny5U9PS57fZHsyNXtqyPbNNCziOGThdJxGLZw4bxu2dfFzdq4ZN42YOGef2NGEwdK
Lo2flJLI0lGChU1jFsxdr3LBVVcee2IXxJI7KslGDIxZtTWS5Rk3YLmDZoaGRpeXOuvf1enLhi61
ADUDdT+Q+pE80VRkVCQBJoxqRJCSU76LCdZbi7E4HJLGBc6A5G08OJk+1e6fa9Mm59FDt5i/L8PT
sru5b/2YfEpoVUoNEsboPcEPUxEJFAGMgiMBQYyarBEh36Ont7D+AG7IoSGkgwYSKqqqqqqsgCir
CLCKAKQBKh+9igLCCxjD7WSFVHT30QmvprYbsZjfzcnB8drWiBxTQMytpmCeuSUaUTL6PT7Hv+Hb
9Hih+BlOz6MyjF+CdM2a5gszbM1mcfkaslTNV9xqwEfM/ZPq59IKh7z1iIB1Ha9gYTM9xyBXpCLB
SCxViCQAYsAYCQg4fGebQPrHwroSeYL01etuDTl2JGwgf0B62wIfQ/J7TgDxQQ/HAX0mwSortg4k
czREufbqDUJ7508iesiWHPVt429lBobkDHxoaefMNHfj2Y5WpWpzp90T8j6nuSWn8PtuXhwPHpD8
6KQPR+YqVho7qHaZA4T7bMwxMKIQCipWRhegALp9RMpnZ+tNeIGWkfHpZ0MBA2BeDrQgBwDkwJsZ
DohhGIJKMDImRIxUDsG+0vLlMFdNuyrOsUNGkDGKwgHhRCVF+nvwyzzeVu7himKj+z4OtezSJYss
G2gmOtt2eIvhxmDjSAvmcOCaFAOOeyi+l2QRAC9a8HbCF5j4HnqLOi4b3MqA8I2u2k/ep8QHmAvd
gya7acDfJbqYfYTc7SUZBoLQTjlJk3KpUirLCIpWTPbwPCGBHDAd27Rvh1IYKRvlmA8FxA7OD81I
IHcznemK9GU0ZQgIhkdHNV4jgyBKkbO4FAlGnqB0B3Q1NBfPYKnd9OvjgfAPftOgd0R4NwlNeUzO
3TvyV4YamQ1uBuQZMzqDI3FMCV67ePQlup56qet6tC7l+JPMHu8XXUlQ2gcUvaRCG20OBIRiCq7+
Bt3ykvBKxvirbuQ1egzVVcht5+1xTsKtIe9IHedp3nbl6Ys39E0YNFy5WKxiXZtID+ii0Un4uFGr
8jFeqxXl7+Kps4auI/kkQ6qZAnAUN0JHYR1Omaupl4iFjsy1eVfdfo+f3o/t+C/L8O1Gr4elnB5L
Knartk7WVaszxnFV7CVXvlb03ZlGTWKR7bMXywWatFXCzFm1fz/rxLM3LV06UZZcrGC67Rk6YRqc
NjtsXLyzBi6WizE2VMnDF/KMMVKGkvaO1TVrMIsbN1Tc55pTNeonxv8/fxXml7fH8X2QPXL9rcOi
QMZu+bylUZgrKZWx0d0n6MRJSftnwe+ja1vW6wNk1s7MMGZIMHd2eLzdmTu0mz+lTddY6eNBYT56
WE74HYJIWHtusp3l1969ZPzax983FC+Zu/Z8nbXV7Xy+cJrhxI9sr2eZpMFIkPDslYiM0UJRZ8I8
JK2PcwVlv5qn56EPW2b7T+ZD8IoXwmLsw48doHAchkAHHAa2vIZqhDkNwyHE7AKD2qsfCjBg1Zr2
jWFzF11yuLhxGq5pG72vVdpZwss+Shs20YOGCowduzB0xctZ2qfYih2KR27UZuFl7QzLMVWiq5Vl
Gx2wUbMV8XuSeNpe1XmDWXOmslXTdw5brmUbsG7ZmxXHnljY8zZNHJy2NnTgp1E1V7PFxg1llWrB
mYvGa4qmjEqYTZqyNDBZuuNFDSMSw0bfH2xTR9v7XP1nX5L4iH2yKEC9BEO4Ux9uXEBDVEAdIrGE
CSEIkhVKn/hw1lq7AhmkQYS16ayM+nDsxXLny+9Pte2EYx9X1jFU+qpnLFHpz5R9Q/0yMGBRrO4y
O4uHHqOwKslpaa+xPoceoUoZqPhVg0Pl48PbMudM172uZqFlT9mIBl2Q8SGAeBqXM2lzynlozMT2
itjDCjQ6YO2bF08XFIwfV8xe4lzqJ9sOsKfzdj4698PdD6BFg2AZuwJxkc+Q5tMnSbYm4ttFnAoD
Fj43uRDO3y+/YgyJ4wipUPapACzqtYL3ZC2BctPQ44/G4KFQwHZRYHq7ub2HU97vtemD8pKmDe8v
fbF6zIMH2vyTBoOg5nizh1F00QXRVPdE/8sqT8m05PwdrrqU/A+31H5PyYvgdqFTKTNmoyUe2xR8
lzpxSFz6RwyXB9iXqP5KHtSO2LR6HsZogij4nnvEVsjBOM6DoIW8XdyOBc2vlyye18YvuPl6UYi9
e4aPrFf0p9jJVwqGwzPpf9FPo6kVVzQFdRAQdgE6/E+IQP7WJAgxCIeka2j5U3q+pN73p0YJqrZ6
ttbfViHokicPbPtVPPvNY3AKXHB3gH6CDQkhvvyXEgb4GvcRIUfR136rr/axHI5FP+Bx+99EvU2N
PJXi+rDPFSXY/L+9BhhGnf/Z4vGABljNn2EL/oJbmgBiQGRBC3biFH+SH1PABFHLW9Ah4A9PiNU4
cyPG9Bf41TERAxjfFAMMNjDBREL4ms2cxxrSE1HmptU3C8EnzEvwRCsrECmF/izEHQ8oPIOJiDsu
QzsK98Fkouc0nqkjYrKuWfiCC4B+cWRZAsgHDPafuMcdWKGgx5ub29b+xPvB/iIVf8+Hjkk8QbbL
tKnLrsdMW8iO0Xio4KXRSg5XMDIC384BhLPZWbaQ0b/Wzdd1ApCWthfBh2cI2Ni5tm1rNrV44Z6j
VZw2DlD6hQL4vDWqYpmcEo3ktuTc77ubt1W3GxWi0DAB9lrZDfyZgyK0pEbqD66z1GTILrnSxL3X
nEsAS6FRBFGn7j1KtGSDwVwCiGdkTK/+PVa3b4Ws8CIGlilSIEJCEZJOCi9z5z6eg26Du7bDtdCY
woAVMNZ2pt2mcVfqzQ05ETEAiKoH9Lr02g7QEO8YOMJFQqMJD6yIgWlkVViRBSERkixBAUVQiwFk
uH66ZoISgslDraIJkLLCNlaEHRkDKwfDw7f69P1PHn5Dqf0e4pK85TAlpAsZJtyz9X17PxFzxF7/
cXIaD+b9n+lksosouVf6o9xoo/1KMmp8t5em6pMGjRwXdb38qo9RDMjQ8BTAxnqfU+pw9Y945aqt
Wi9mpN2yreOSrpeUbFHR/sbsFSkcHZhLmDBcwOWrc0ZNWarkycKycmKq0d93ti8oaS+/pkvl6xZZ
kaqs2kuUcrnDtttqwXqMjpSVUUcs3a0XL1zR/TleUNF7FksuN1x5FXjJUodGr8hGa83KqMGMkkjZ
338tHLRvDvVTpqe3bB2335aGadGhoubtWzF03ct264vmjBzMMNVnKYOXLRmoWXPTpcs4Ymj2o4jU
0M4ss2YKZVitZeyZuzNZiWZqzBi3aGzJi3YNYzdNlZm7ZMos77slmTVVkcMxmqxYi5ZRw6irCKrz
dosoxirtgvMmTR+v/DDMpozePHhnGarpu6cLHCYHLV0q1N1GrVMWRZdPPPuf14fzvv/SO3wZujTG
KP7Pcrj8cla8vSycrFTFezcMEswfDw+E6Wn1drqjVm4Lrr3bJRnOXMWbM3zJRuyMnTpuZNThu6ZN
H+P/s609fwkUpKYLrsozfYmxgXumD4VNxQuUVZMz/iJqbRKen8aHyZMXx8fikn1eMTt+z7d6f8dH
+5SaqJvNE4Xb6K18br0/X7lX4MmWWjNi+r6Egff8Pai41YLNVWKr7lhb9KTV3l9+/2RQvX1vv2Xu
1E3jBmav6xJIyfgfkauYo6Ynv3lHZkYL77zdw3YHA7xEA4nI9pY3hiYvZAepQMBO/2IrC0uzsQUC
A1FLEaAVXH3qqt7gAh+/zUYRHGqKEUZEVdgUPKd0/q6RQA8R57+vhIpxeaQBaBue0gKVtAysAwwe
ttu0CgO+/B9EkkOJFwuDBfoNVGujF7lcsJwFx/WD0XwMAcGlfGpE+hOroe8BPf+w2HUC64yAvVBL
3YLIJIRgsJRhNTuKNol2AP77K60EvqjnpJFAgV7FB+neazf50QbJ7lAPr1fk3CC+z7slZq2nDJWt
OkgPTHVpmf5gyjJRPN6UpQUpKUEIjQKIeLLU83VbBb4CMD1bewsyE9NFEX1Y1j4Jaw4EkkjDWgHP
mc+6D6xDbJj5Caj1Go3EOY8Wt56CErtum3wCClZ4mT8qKDv9erIGW87XW8A6Ben4qnLFeQpR28tl
UAZeP/dS/x0NluahmaldvpH1C7BifGODBAhCVHGuUrREFphakwIQmdL+qnMMFwAgBEiKBipDcPrF
AD5v0j59odJAM9NEA1ltoqIFCXnwRYXkRS6hcM4v7GUQiuAv1/WORgMYKJEPUmD7I3G6GjSQstGb
AwQ/1Q+oVspeYCgCx4HrGwfzAH5/aT+XlDcZvOzlYKsSMGIW7RNA4dfV2ch6BNLpwT8+1vugl4th
IFlP1D5vbJJD2kX34YrPMeohCEPb883RjQ/5Ow+xJiP3CqLtHH5JIUHB+0Dt+MkYH5xJkAV0fcg+
qwGmrG/gJ7nhoWFENfoTadnkEE6KAF7Nw7ePs+l7sd0owPZXeoEIgecYiuMnb/KwohgBxV/H6boQ
co5V5C465oD6/iOu/dwUsTM8ifrF5Yvk+JUQmAQq1IFRuQhCkIiI6QB8zEBUeGBXiWEIDCBCiqqv
BaQnYeEdzpgSpoypwPD6gNbzvzikVJbmAhriAfqR/W/kCS2DamAEwA1tSAiiAMhbYLJR/nBkLlxW
AoB4CeVsq3isgGLg6xE8eseh98QMzBQ4B+X4D9aIOaHLYUh0oPukes8hFADXUO2CihRBVVKiqgf6
RaVivEDnDzfREmiumvWInoNvI580z5FciaToimEQqH2pgQSr7hD7IeiAnz6s/Nuuid6qMAgDqg0A
lAeoCikOH1p9FCPokQf67zlxBRjD4SSkkVJBCEVF69/z9iGw1+XGva1avbNXSXNXb23vg3J66L7b
ZIIOCbszwGW/aRLTsiDiRpBJhXMxqFb2S/gOL+eWXzDmVYjKsaxGIk1K3GYxn4tSakmTUVEgtEER
gofR9ycOoQOM6Qhj4jzvGRA/BTWpiD9YdoXI2PtGeqLPmmgUIxBR8wgUiMUIxIKJACENr5Xm9gZe
OkpMAPD4hJFAQ9wPqGAMSM+syGds3nvKsGMQYsVEVVSDaUEY2AZPsTygTxnIAkh9eJ24OmJ586CD
y5mGEgxPotR9MEohzNZxYESEU1nDFwV6GDW0jtjo5R5tKYAbmODik+WiUFnD8W2/OvH6S8Fg3OX5
NBA0BwaJBG2//AjNFCOcTaPEcCsgjehHyh9ibNO7WdQX+xEG+o+zwUHuMQgdhinYN+ZgnZa1lXo6
SSFHugcAU6noVtonTiAL79o9YGLzNpu5IXAnoS+0/OiDwzDEiZ4/PN0SSSYcKxrEfX56L4x+X3pE
GJf9YUbkMBdvwgAt0PtDht9CYoYNiJthSE6Rc0H0BsB9KKp0eUN7KJVNRCSgaGByswYCsREiCsji
Tv8tC/d3w+jVsQjUPwLXuedsLgBcQQ1uhySyAcoSQgAlnZr1W2flV8g6Cm1WIivaHoccX8A1a+81
/F6EPwfxoob8W+R+t5NvUHIPFQAvLxoljfkGQwMOi+Nk1EGSV9KuFlAC1es91wonKMrJAgexwVmI
6oW2MFkhakEVU7EGqQBDYYZA4yXPymW3x6Pm8+mYYwA4RMZqkIB51Zhsw16IqnaqYD8lGMTEp6Ap
/Ma8CzDyYtEgqT8R9n+tm6IRNJQjV4FKDEC2G1DMDXHiA04dk4ySJ3lKp09yqdRA6RP62y+kWdEj
7ZTsw7zJqBlGx1/xsP8j73e7OEjvIWHvDrBOKD8IB+/xLyHfxSEDua2fkE1luwjaQXa0m8fKlNC6
gklfQG6y17fkg5nnRVNrjGzJ00c1bAXQTVvti7dhnzBNID6SIk9qlcFP7qPEmiCr17NR5QLpAK/F
xwD5+s5ejd03eUGhB2CTpBmzEjQf19JnID1gH4MThcitPewp2SGJIsuONVYKOyGNqbiIkhPkeCth
RQtEQ40h1nNPO/cuTf7eYKff3dR+N7HwzUA48Hf2JgnnNkxPOV8H4MSJEiRIkSJEYMGDBgwYIIIj
BgiIIMYxjGMYxjBgwYMGDBgiMGDBgwYMGDBgkSIiIiMGDBgiIiIwYIiCDIyX9k9lh5b/y+07lTdu
Mu6HyhmQTuQzN+YgnbdLB28kwxGpESvnMCCH3/lbDAkIHQO+9mL6R+o823wY6bXRM1OamjgpuqhD
uTz+YPDYOPXOvs6N967EGnY9Cmf5nHCTyg9PLoAJq795NRmmuBj81NLNoPEogWU1Kqp9QiARAuBv
l9YFmQwp6TcDQZ4UmFlltPQfGHsqqqpJQi0YOJufcI17n6Q+Ug+WWcpTeXjPlTQQzVCZEa+fLJX9
rM2QUoVdqbfiZdhkNDlkVjNiiaNa3oaZHLNpvvINyb7XKTcFxu9MxOVghAoGYPDFPm9f8ndLXif0
XTvdRYkzGmXaIoHmDmQujjJRUNkFmsQLKcLp13MRAuecQTfbJFEM6rPd/ZKTG6gUmAUjSlOsq92z
4BxvEr1nFzPw3EulSBDtuQwERCUeaxbYXAN/9TkbN44Y4qQERxgqWqg70wTXBAk/IHE+vvOSYVhF
Jw3hTYbS0IWGCiBqH3YYYjCeyAwiSRkESIRIQlQMf87VBFD3ejXdx1qskKRPZklCgl4KOCRfLACo
IEgw7x9MRKU8YXO+RCZ0USSIoSV1oGBpjcH8o4nS/ghcBFG30BpxO3okkh2EXaquUUgOaFIIIggg
sFRSRAYxYB8BBZujetj9KkC5voObYDvg06vsSlzb1CQtYAX9KDVxbqsdgHeB10F75O3WAnRVV3oT
G1uJYuft8rR50O01gEsvTBhENqF8k5M/zyQ4Q5F1CUylViVuXeqo2xkIhn67N0GbFhKxEgKQFiyE
WLIsN2SmJSBUTlDDTqBqgSAcFPmNQr4zRQ2/NuUMGAGi0gSBu8P6EdycBcQHA20gFEkD4AGSOnn8
gCKPqV3V6uZCevUUKFT0lYWpGR/TG9WsHhB/hOuLjVPurAuXNTDkH0mhsIhJNoCKPo9Kvt+pX8QU
mHm+oPxog7tWuFNEIcVe3ygdIvj5JZbOCUwSMHrIBJIECqUgc9Sd3tDgsJDYUU17cTUm827fynYg
vlXNKHlJ0lE6lEgNcrapKcE+UjuF8k5nfwEmSqaxqG02a+9MU/xov3ZaQZUhS77SCXOFwp2Sgf8Y
IAMkRkj+Piu9WQIpJgRCoddNpY/tDg0uxiHSRFUOuKDqTAyZPvkU+ZdFNsQMlOsUMR6C4aCRIsED
bjj3JNqaoUZnksdUMGAqByDFtv2nsq1iyfVJJD5kWwGtFMmau9C68HoY/gIWfDeQzsURlQIStjLS
yMn34YNgP3TGIdUaBCTAUQODsC/sXUdiFg7mbiNWPchg9WRiK5Jq1jr/ZHKBCFQDF89YqGyIsUy6
3jEF3AG2y/rgSEhIRFFBRRR0Kqqqiqqq0UseKiXIm7C7dIQPEb4eOqyFf7IGlUVs2C/j32c1N0X/
F6++6PxjtiHSa9g2mNnAwfkCf7MV8pwv7e7eyL2/0j2gbFXdrCQPWtXl3o/xrRvPCjy9don8ievV
i45gHMXrgQhFYc8LUqasH5D9+uQjJDsohJJODK+6vm1PtPd4rmO4rBwwriPI7opYeUOkAsBh1Ng7
4HZS6Pb2LB/rOfv9P86RDw/vj6H+Os6nUj/WnEgLJEFDgnjTn0TwU6RQAo1Js9yZbJgKIHrfoU9q
n9KIgYmD6yGaWEVSmFu5KW4uRA5vpQ6KK0Dav+etKQum68KifpgJ4MNWELNl5X4wiSWBTZr0E4a1
MwOg8uzegbDbLZcB5SwUiqYNOKRgyIbV/JTkBiB+/g9Y5mKYiCwrZzNlvQ7goxqlqmuAaoBuQ8fp
+79KZbdOix7AidUAPBShSKftsobt249CfuO/DthIPQGRS3XMN/du6r9iB+0qM9HcZD+HjNjvFYPa
AdfkRVOR5fmntJtGcn9qHj+uWyHX8G8Q2oPikPuJaD0Aaz9HJ/BPeX2v3igebjJIewi9GCaJrNp7
fY4q9/0CeJgEYEUEZAABYhBVTxAen2cvNfag/qFA5lu9jvlenyeoCwT1ySMFIG2JVDeZLGTITcGg
t3+zRs7boWOWmWUJWrkoSrHJl3ulwUFjISVQFP7Yq5hAwNlVhEQkAVfl0y31pz+Xp55jlzKpa5QY
wptDQRnNhznxKenmoPP0AeoQviKIdSvHRNWpHtC/jS4ogZp/RdTFDGRhBfap3fJ/n3oc0DAMl96k
djO8iZpYPH2IJ5RNlKKGWEG22y9MkTpGBo7Jd3q+GpUwbGfxEmXTpxGzYaSYy/A1i5ZJqL+zY8X3
/kPAw80FSdfBVX67MJt1pepRtIDcfxj5wIMUOICKP7N6P3CBidH7eFA/aTxYFbvwJu4FJSgCHxcR
3Ba7ltwk+7zlHzK84zAv/diDZswKYUCfw/tECpUSiikjAxOKnjUwVUDUpFAsjq+4BO3fGRkToPtG
yB9JvNAthDpE4Q8b7TwR/GPyELbfYqZck1HoAip9AFzxp6kVT5eGouhh9CKpDo0mCDJGQxEWSGzC
kLtYLxETY+xTcOHUFC+g5B7IDgh5z2+LJFPDYgOxWwcFXg7rAH63i8QIYKD/WqwWpIxIp0xWG8pH
yG3qrimSGkMUogpSEU64KVmRcLCngCfghsECqKhj/FLDlwgkBt0wk9+eb0+6X4XKN598xmvOBi8d
k70BriwoGtCuMIIkcHZJgpWxejU1YWWW0ohC4aOHUrBKegkTFsAyN+l5dOUUBojMdoq5n6AjIXNL
vBDvx3GW5YDxsiLgrKrZp4g+QLs+uYGYibHriI2uFN68MIpfCAKE2qIgTZ6CnfiJQoN8MrEDwpbu
hcJTqB1hHUnojJLAhcxttIXkzq7Vgq21XfxdvO3SHR/LmoWOrdNe2g/RBMQOB2imt2m4Remh18db
V6qEhd+9J6j1fPx5IePJfV4eZfYZqOJ5aNtNbQusG0oo2DcaW63XEmWFjHMcVNcFkUhAAkdlDJJK
daH5MhQPYXR9ggmwX9A/dq+JJ/mwP9jWL44Ozqn4HPHVZJ2kUJ0/26ZHmTBMetOp8bghiA7s/xJr
xMrk+xS2siWEfpADerOIj42BaJtielLW22wdKpvheo41httLT5alEL0CbjMBh9iL3dOWtIh0NFOK
N35EyUekJdz6B+lAzQ2I1TJ6kCaSTYZb4qGOXzqSQ0IB6j9w7OgmwRAMAQQ2OuSUDyarCiQTCePh
n5ejVxMmh4EShyNUA5BtUqyWoYFkQUqsI+G5yIz3EHUmtA8WCCgXU/zY9WzzBxOU3xNQp9KsVVcz
wf0vYh2w/fw92Rd6Ho+F54J5bF1Yw7oxO2w/fgeQsdstqyt0KdgtD7RQA19BJDeRc8B7Tr1WuQMK
Cq10eUDsE7v7PKB6hBbn9uHBNg+MT2kgYir3JCehS09zRFcqiIqKqqiKiIqKqIqQii1VVVVVVVVV
VXUMTCSkP/CniFqNihUiAUgFRUKKQAiK0isKESIhSrChINIQpEEgFCRLIhQSwIIQoJQkYEshEsAE
klhUpQaJSIaSjENrUQ31mREERiCIxBEYgiMQRGIIjEFRiIxgIjEERiGMogiMYVCxgiMQ8iUkullJ
ReNM6egFWRF6/kmiHX1dZET0pEWlGY3bLZeZmJ4jDBXDF7xywIFAHr0LGJdLGEsDkqxW7fdZTUeu
2+Ja2sT2XhfjMSHQQdXpEdYaaxmBfZYTXzFECeTGrteRHBR9EC9Vf4xfFqyNv0Blnm5JOO7q3fn6
zM8fmTvSDqUGwcHqkIcSLhkvKPTn+Anky+B2ZbAy9QIWLLQS+sv/I8CoQkYWppTQANegDpDCg9Vg
xKTdUuGNopUwqDtjCKCYIvOyGKGuiYXUPOLQuOmFtfZcI5uCAQIeJO/rBwL9ajBavSKhJT1QwBGu
Ko1Vqll2ArACIBzRUzHJQIhCJWwtNw9Umc3QzTDC15QO0IERJCOG2Hocs9PGMXg8QvCXi9syqqPj
axtIbc9gXuyARiuWuhPnNRrxGw80u52lnLnuO8muryTq5HnHjORSxTQ3QwDhnHBtqzuNGVMDAKpl
bBG0P6J58Y9Jpf0QykLVKvYoG913jBcXFthfZdqq3OOY4fYkgkTIDcqMozU11vvbBCgEYR7e4pXu
sssyJhgiUUwEGRJSFhyoEHCKC/sG3MGOgROgPlvNuldAxSEmyJSGQYqUprAcQyRSKsh+um+KIgYO
CDuQUCgYgoGFGjIlYYKzp6S6lwhcgmwgmKnEzUrqQ+OZiQTkdxZJwcoMNk1ExQFFgiT8NPNIQL47
MkTU4Z01WLc0DJXA+03HtJ0x9OIBloZ6c6D1qS2GYb3CwZYpJtxH1jHanwP2m+YLhN6abTVDA1kE
FA61KC5sg4NHmVyqRe2LgWRmaO2IqdAxTmGkMmWZGi1KfziFSIFg6R8uOheOdHaKaxHu1HQGPVsW
6hJ2cfDoqp0j0mRSd+tZpcKYMvT+1C5p5pM9f6go+nFqSQm43HlfzfyLrrMooyA+cN3qLdJ7b5N0
8ZCp4gVA5nVcUQJwXYpAIKYnie7bzeldsHi+5LoOewPgAijA6jNMdU+cYaQIZ9X0tFOhOt249R7+
dlLaHDCXehIWu0KYaBpECyIgRTwHFMVOVXt63oQcDoz5zPMsYUovTr4g2fP0fjEF2DuThCKR2syk
gWU29G/ROQB6wC55wtHr+0e05KDwMlDXEpBILj2JYE/PtOgTuV0PmFxBe5EHlzR5H4iHPx0AbRRD
ecTzM/dLdJ/Sh5ms0MsbFlHeHNBV+8AlsdYGV/A+AHrCHV5kz6/zgvX0EoVRA8kRBOvrOslkH9xs
FALeOBcD970AHMPS+NXl9/aDcR55KEgAThMCtfjMGMNc7RzTRfqBMpJIMTgEdTPf70zLC7JytrAP
oELrdU6ye8evtO/KMNmSFKcqfIGwNH6QnxKJkRfDAtUAOYtrZxRcHWBr12D6E3oWJLsxORGw9YrD
vsIOivl2AL7JjAiJQS91odw7aQ+RdcCcjersQdOBuuauU6/enw/oDYnv2hukkVVVVEZEDc4+cPdA
lO427nDEVFFhgfqPgcv51FCbG4iewCH6/foGdsCat9PrG+gKcRQA0DHl8N4HoPEGVxjLnb9E+sj6
yAewyx2BjFb2fkeAcg9nb0u8O+PRJBONJWOx8gnlsmD8slNSAS2uqDDc9EDjLP346tfWaK3hi8Nh
cAVOxQfd5g5W7w3CeaHmQmnxxzv9tkj3j/AuJ/mIk9JHlIL5vFmE4j8w1q/FIc9X4vnwPWO2UeIG
wunYHnNh60056SPn4czbsB6U7du9v1TV7tvUoBMcEDyR6Yn9ce+DoAbiigTuykIdRF9WE9riWRPc
DwTQduC4B9KdBQmqBJkcogazzJ/Rg1NeBWsQXrV8YdT1qAdL5OYeUOPt499TGQqrUSrVXAq0EcOL
S5jBwy0tpcC5lWtEomEsaFstWO93dQeVQCk2qDQfBN/Rnr1J8Ff0mHzwORp+Xke3VxXxc/pT6OFj
GgPcHx705BzKVw/f16lYqG8BNeuYgKIfoG25wV9SGYCbTafg6ehtR44SwmxHPERogKO8XCDMS7MS
GLDY7E3dfPai+aiCmhLIZHIzTyHFwsdoZ+ZcDl6lzFvj8TGsU82NXUinFEHpECzrFfiPcnxBTQeN
lfJrV2Jpv2qfIHgGh3ifLmA/E/T8wkuhNTT4qfh+UJ+SG26KP6ISeCvqUT6UpDmgPSiqdw9SZozY
n3WZEW4BA3p18eIPWOwBPIeNgqYqUh6j5kgkbIqI80wQDtsrgOCIPqFA9Vf7JAxLD1pP2pIlwfbQ
nNLRCH5IBB8J8x3XAF5m8BPWDbyCge4YavMHlKDxdagHSoPtATFB4eY+iRkIQWRIRipIQiH/kkEI
j9kGyh/CC/mp+2lRkH/4u5IpwoSEdGXVsA==
Received on Mon Feb 09 2009 - 08:57:31 MST

This archive was generated by hypermail 2.2.0 : Fri Feb 13 2009 - 12:00:03 MST