From 5cd7ab9f06321da49b1b99dec340052dec617c3c Mon Sep 17 00:00:00 2001 From: Bram Matthys Date: Fri, 19 Dec 2008 16:17:04 +0000 Subject: [PATCH] - Upgraded c-ares on windows to 1.6.0 as well. --- Changes | 4 +- include/win32/ares/ares.h | 115 ++++++-- include/win32/ares/ares_version.h | 4 +- include/win32/ares/config-win32.h | 471 ++++++++++++++++++------------ include/win32/ares/setup.h | 72 ++--- include/win32/ares/setup_once.h | 175 ++++++++++- src/win32/areslib.lib | Bin 84470 -> 97166 bytes 7 files changed, 578 insertions(+), 263 deletions(-) diff --git a/Changes b/Changes index c279d8030..830cb35d6 100644 --- a/Changes +++ b/Changes @@ -1677,6 +1677,6 @@ If you get a "undefined reference to `clock_gettime'" error, then you might consider installing 'pkg-config' on your system, and then simply re-run ./Config and make, should fix things. + TODO: testing! testing! i'd like to be sure this c-ares is stable! - Win32 compile fixes. -__TODO__: win32 c-ares upgrade to 1.6.0 (and copy & fix header files). -__TODO__: testing! testing! i'd like to be sure this c-ares is stable! +- Upgraded c-ares on windows to 1.6.0 as well. diff --git a/include/win32/ares/ares.h b/include/win32/ares/ares.h index 63384b34e..bbd862833 100644 --- a/include/win32/ares/ares.h +++ b/include/win32/ares/ares.h @@ -1,6 +1,7 @@ /* $Id$ */ /* Copyright 1998 by the Massachusetts Institute of Technology. + * Copyright (C) 2007-2008 by Daniel Stenberg * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without @@ -18,25 +19,44 @@ #ifndef ARES__H #define ARES__H +/* + * Define WIN32 when build target is Win32 API + */ + +#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32) +#define WIN32 +#endif + #include -#if defined(_AIX) || defined(NETWARE) +#include +#include + /* HP-UX systems version 9, 10 and 11 lack sys/select.h and so does oldish libc5-based Linux systems. Only include it on system that are known to require it! */ +#if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \ + defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) #include #endif +#if (defined(NETWARE) && !defined(__NOVELL_LIBC__)) +#include +#endif #if defined(WATT32) #include #include #include #elif defined(WIN32) - #include - #include +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +# endif +# include +# include +//# include #else - #include #include + #include #endif #ifdef __cplusplus @@ -95,6 +115,10 @@ extern "C" { #define ARES_OPT_LOOKUPS (1 << 8) #define ARES_OPT_SOCK_STATE_CB (1 << 9) #define ARES_OPT_SORTLIST (1 << 10) +#define ARES_OPT_SOCK_SNDBUF (1 << 11) +#define ARES_OPT_SOCK_RCVBUF (1 << 12) +#define ARES_OPT_TIMEOUTMS (1 << 13) +#define ARES_OPT_ROTATE (1 << 14) /* Nameinfo flag values */ #define ARES_NI_NOFQDN (1 << 0) @@ -153,27 +177,39 @@ typedef int ares_socket_t; #define ares_socket_typedef #endif /* ares_socket_typedef */ -#ifdef WIN32 typedef void (*ares_sock_state_cb)(void *data, - SOCKET socket, + ares_socket_t socket_fd, int readable, int writable); -#else -typedef void (*ares_sock_state_cb)(void *data, - int socket, - int readable, - int writable); -#endif struct apattern; +/* NOTE about the ares_options struct to users and developers. + + This struct will remain looking like this. It will not be extended nor + shrunk in future releases, but all new options will be set by ares_set_*() + options instead of with the ares_init_options() function. + + Eventually (in a galaxy far far away), all options will be settable by + ares_set_*() options and the ares_init_options() function will become + deprecated. + + When new options are added to c-ares, they are not added to this + struct. And they are not "saved" with the ares_save_options() function but + instead we encourage the use of the ares_dup() function. Needless to say, + if you add config options to c-ares you need to make sure ares_dup() + duplicates this new option. + + */ struct ares_options { int flags; - int timeout; + int timeout; /* in seconds or milliseconds, depending on options */ int tries; int ndots; unsigned short udp_port; unsigned short tcp_port; + int socket_send_buffer_size; + int socket_receive_buffer_size; struct in_addr *servers; int nservers; char **domains; @@ -197,20 +233,27 @@ struct timeval; struct sockaddr; struct ares_channeldata; typedef struct ares_channeldata *ares_channel; -typedef void (*ares_callback)(void *arg, int status, unsigned char *abuf, - int alen); -typedef void (*ares_host_callback)(void *arg, int status, +typedef void (*ares_callback)(void *arg, int status, int timeouts, + unsigned char *abuf, int alen); +typedef void (*ares_host_callback)(void *arg, int status, int timeouts, struct hostent *hostent); -typedef void (*ares_nameinfo_callback)(void *arg, int status, +typedef void (*ares_nameinfo_callback)(void *arg, int status, int timeouts, char *node, char *service); +typedef int (*ares_sock_create_callback)(ares_socket_t socket_fd, + int type, void *data); int ares_init(ares_channel *channelptr); int ares_init_options(ares_channel *channelptr, struct ares_options *options, int optmask); -int ares_save_options(ares_channel channel, struct ares_options *options, int *optmask); +int ares_save_options(ares_channel channel, struct ares_options *options, + int *optmask); void ares_destroy_options(struct ares_options *options); +int ares_dup(ares_channel *dest, ares_channel src); void ares_destroy(ares_channel channel); void ares_cancel(ares_channel channel); +void ares_set_socket_callback(ares_channel channel, + ares_sock_create_callback callback, + void *user_data); void ares_send(ares_channel channel, const unsigned char *qbuf, int qlen, ares_callback callback, void *arg); void ares_query(ares_channel channel, const char *name, int dnsclass, @@ -219,6 +262,8 @@ void ares_search(ares_channel channel, const char *name, int dnsclass, int type, ares_callback callback, void *arg); void ares_gethostbyname(ares_channel channel, const char *name, int family, ares_host_callback callback, void *arg); +int ares_gethostbyname_file(ares_channel channel, const char *name, + int family, struct hostent **host); void ares_gethostbyaddr(ares_channel channel, const void *addr, int addrlen, int family, ares_host_callback callback, void *arg); void ares_getnameinfo(ares_channel channel, const struct sockaddr *sa, @@ -239,10 +284,38 @@ int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf, int alen, char **s, long *enclen); int ares_expand_string(const unsigned char *encoded, const unsigned char *abuf, int alen, unsigned char **s, long *enclen); + +#if !defined(HAVE_STRUCT_IN6_ADDR) && !defined(s6_addr) +struct in6_addr { + union { + unsigned char _S6_u8[16]; + } _S6_un; +}; +#define s6_addr _S6_un._S6_u8 +#endif + +struct addrttl { + struct in_addr ipaddr; + int ttl; +}; +struct addr6ttl { + struct in6_addr ip6addr; + int ttl; +}; + +/* +** Parse the buffer, starting at *abuf and of length alen bytes, previously +** obtained from an ares_search call. Put the results in *host, if nonnull. +** Also, if addrttls is nonnull, put up to *naddrttls IPv4 addresses along with +** their TTLs in that array, and set *naddrttls to the number of addresses +** so written. +*/ int ares_parse_a_reply(const unsigned char *abuf, int alen, - struct hostent **host); + struct hostent **host, + struct addrttl *addrttls, int *naddrttls); int ares_parse_aaaa_reply(const unsigned char *abuf, int alen, - struct hostent **host); + struct hostent **host, + struct addr6ttl *addrttls, int *naddrttls); int ares_parse_ptr_reply(const unsigned char *abuf, int alen, const void *addr, int addrlen, int family, struct hostent **host); int ares_parse_ns_reply(const unsigned char *abuf, int alen, @@ -250,7 +323,9 @@ int ares_parse_ns_reply(const unsigned char *abuf, int alen, void ares_free_string(void *str); void ares_free_hostent(struct hostent *host); const char *ares_strerror(int code); + int ares_get_config(struct ares_config_info *d, ares_channel c); + #ifdef __cplusplus } #endif diff --git a/include/win32/ares/ares_version.h b/include/win32/ares/ares_version.h index e7167f7a8..7b70de772 100644 --- a/include/win32/ares/ares_version.h +++ b/include/win32/ares/ares_version.h @@ -4,12 +4,12 @@ #define ARES__VERSION_H #define ARES_VERSION_MAJOR 1 -#define ARES_VERSION_MINOR 4 +#define ARES_VERSION_MINOR 6 #define ARES_VERSION_PATCH 0 #define ARES_VERSION ((ARES_VERSION_MAJOR<<16)|\ (ARES_VERSION_MINOR<<8)|\ (ARES_VERSION_PATCH)) -#define ARES_VERSION_STR "1.4.0" +#define ARES_VERSION_STR "1.6.0" #ifdef __cplusplus extern "C" { diff --git a/include/win32/ares/config-win32.h b/include/win32/ares/config-win32.h index 271d5c34c..b7a0cd4be 100755 --- a/include/win32/ares/config-win32.h +++ b/include/win32/ares/config-win32.h @@ -1,187 +1,284 @@ -#ifndef __ARES_CONFIG_WIN32_H -#define __ARES_CONFIG_WIN32_H - -/* $Id$ */ - -/* Copyright (C) 2004 - 2006 by Daniel Stenberg et al - * - * Permission to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of M.I.T. not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. M.I.T. makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - */ - -/* ================================================================ */ -/* ares/config-win32.h - Hand crafted config file for Windows */ -/* ================================================================ */ - -/* ---------------------------------------------------------------- */ -/* HEADER FILES */ -/* ---------------------------------------------------------------- */ - -/* Define if you have the header file. */ -#if defined(__MINGW32__) -#define HAVE_GETOPT_H 1 -#endif - -/* Define if you have the header file. */ -#define HAVE_SIGNAL_H 1 - -/* Define if you have the header file */ -/* #define HAVE_SYS_TIME_H 1 */ - -/* Define if you have the header file. */ -#define HAVE_TIME_H 1 - -/* Define if you have the header file. */ -#define HAVE_PROCESS_H 1 - -/* Define if you have the header file. */ -#if defined(__MINGW32__) || defined(__WATCOMC__) || defined(__LCC__) || \ - defined(__POCC__) -#define HAVE_UNISTD_H 1 -#endif - -/* Define if you have the header file. */ -#define HAVE_WINDOWS_H 1 - -/* Define if you have the header file. */ -#define HAVE_WINSOCK_H 1 - -/* Define if you have the header file. */ -// #define HAVE_WINSOCK2_H 1 - -/* Define if you have the header file. */ -// #define HAVE_WS2TCPIP_H 1 - -/* ---------------------------------------------------------------- */ -/* OTHER HEADER INFO */ -/* ---------------------------------------------------------------- */ - -/* Define if sig_atomic_t is an available typedef. */ -#define HAVE_SIG_ATOMIC_T 1 - -/* Define if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* Define if you can safely include both and . */ -/* #define TIME_WITH_SYS_TIME 1 */ - -/* ---------------------------------------------------------------- */ -/* FUNCTIONS */ -/* ---------------------------------------------------------------- */ - -/* Define if you have the ioctlsocket function. */ -#define HAVE_IOCTLSOCKET 1 - -/* Define if you have the recv function. */ -#define HAVE_RECV 1 - -/* Define to the type of arg 1 for recv. */ -#define RECV_TYPE_ARG1 SOCKET - -/* Define to the type of arg 2 for recv. */ -#define RECV_TYPE_ARG2 char * - -/* Define to the type of arg 3 for recv. */ -#define RECV_TYPE_ARG3 int - -/* Define to the type of arg 4 for recv. */ -#define RECV_TYPE_ARG4 int - -/* Define to the function return type for recv. */ -#define RECV_TYPE_RETV int - -/* Define if you have the send function. */ -#define HAVE_SEND 1 - -/* Define to the type of arg 1 for send. */ -#define SEND_TYPE_ARG1 SOCKET - -/* Define to the type qualifier of arg 2 for send. */ -#define SEND_QUAL_ARG2 const - -/* Define to the type of arg 2 for send. */ -#define SEND_TYPE_ARG2 char * - -/* Define to the type of arg 3 for send. */ -#define SEND_TYPE_ARG3 int - -/* Define to the type of arg 4 for send. */ -#define SEND_TYPE_ARG4 int - -/* Define to the function return type for send. */ -#define SEND_TYPE_RETV int - -/* Specifics for the Watt-32 tcp/ip stack */ -#ifdef WATT32 - #define SOCKET int - #define NS_INADDRSZ 4 - #define HAVE_ARPA_NAMESER_H 1 - #undef HAVE_WINSOCK_H - #undef HAVE_WINSOCK2_H - #undef HAVE_WS2TCPIP_H -#endif - -/* ---------------------------------------------------------------- */ -/* TYPEDEF REPLACEMENTS */ -/* ---------------------------------------------------------------- */ - -/* Define this if in_addr_t is not an available 'typedefed' type */ -#define in_addr_t unsigned long - -/* Define as the return type of signal handlers (int or void). */ -#define RETSIGTYPE void - -/* Define ssize_t if it is not an available 'typedefed' type */ -#if (defined(__WATCOMC__) && (__WATCOMC__ >= 1240)) || defined(__POCC__) -#elif defined(_WIN64) -#define ssize_t __int64 -#else -#define ssize_t int -#endif - -/* Define to 'int' if socklen_t is not an available 'typedefed' type */ -#ifndef HAVE_WS2TCPIP_H -#define socklen_t int -#endif - -/* ---------------------------------------------------------------- */ -/* STRUCT RELATED */ -/* ---------------------------------------------------------------- */ - -/* Define this if you have struct addrinfo */ -#define HAVE_STRUCT_ADDRINFO 1 - -/* Define this if you have struct sockaddr_storage */ -#define HAVE_STRUCT_SOCKADDR_STORAGE 1 - -/* Define this if you have struct timeval */ -#define HAVE_STRUCT_TIMEVAL 1 - -/* ---------------------------------------------------------------- */ -/* IPV6 COMPATIBILITY */ -/* ---------------------------------------------------------------- */ - -/* Define this if you have address family AF_INET6 */ -#define HAVE_AF_INET6 1 - -/* Define this if you have protocol family PF_INET6 */ -#define HAVE_PF_INET6 1 - -/* Define this if you have struct in6_addr */ -#define HAVE_STRUCT_IN6_ADDR 1 - -/* Define this if you have struct sockaddr_in6 */ -#define HAVE_STRUCT_SOCKADDR_IN6 1 - -/* Define this if you have sockaddr_in6 with scopeid */ -#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1 - - -#endif /* __ARES_CONFIG_WIN32_H */ +#ifndef __ARES_CONFIG_WIN32_H +#define __ARES_CONFIG_WIN32_H + +/* $Id$ */ + +/* Copyright (C) 2004 - 2008 by Daniel Stenberg et al + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, provided + * that the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of M.I.T. not be used in advertising or + * publicity pertaining to distribution of the software without specific, + * written prior permission. M.I.T. makes no representations about the + * suitability of this software for any purpose. It is provided "as is" + * without express or implied warranty. + */ + +/* ================================================================ */ +/* ares/config-win32.h - Hand crafted config file for Windows */ +/* ================================================================ */ + +/* ---------------------------------------------------------------- */ +/* HEADER FILES */ +/* ---------------------------------------------------------------- */ + +/* Define if you have the header file. */ +#if defined(__MINGW32__) +#define HAVE_GETOPT_H 1 +#endif + +/* Define if you have the header file. */ +#define HAVE_SIGNAL_H 1 + +/* Define if you have the header file */ +/* #define HAVE_SYS_TIME_H 1 */ + +/* Define if you have the header file. */ +#define HAVE_TIME_H 1 + +/* Define if you have the header file. */ +#define HAVE_PROCESS_H 1 + +/* Define if you have the header file. */ +#if defined(__MINGW32__) || defined(__WATCOMC__) || defined(__LCC__) || \ + defined(__POCC__) +#define HAVE_UNISTD_H 1 +#endif + +/* Define if you have the header file. */ +#define HAVE_WINDOWS_H 1 + +/* Define if you have the header file. */ +#define HAVE_WINSOCK_H 1 + +/* Define if you have the header file. */ +//#define HAVE_WINSOCK2_H 1 + +/* Define if you have the header file. */ +//#define HAVE_WS2TCPIP_H 1 + +/* ---------------------------------------------------------------- */ +/* OTHER HEADER INFO */ +/* ---------------------------------------------------------------- */ + +/* Define if sig_atomic_t is an available typedef. */ +#define HAVE_SIG_ATOMIC_T 1 + +/* Define if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define if you can safely include both and . */ +/* #define TIME_WITH_SYS_TIME 1 */ + +/* ---------------------------------------------------------------- */ +/* FUNCTIONS */ +/* ---------------------------------------------------------------- */ + +/* Define if you have the ioctlsocket function. */ +#define HAVE_IOCTLSOCKET 1 + +/* Define if you have a working ioctlsocket FIONBIO function. */ +#define HAVE_IOCTLSOCKET_FIONBIO 1 + +/* Define if you have the strcasecmp function. */ +/* #define HAVE_STRCASECMP 1 */ + +/* Define if you have the strdup function. */ +#define HAVE_STRDUP 1 + +/* Define if you have the stricmp function. */ +#define HAVE_STRICMP 1 + +/* Define if you have the strncasecmp function. */ +/* #define HAVE_STRNCASECMP 1 */ + +/* Define if you have the strnicmp function. */ +#define HAVE_STRNICMP 1 + +/* Define if you have the gethostname function. */ +#define HAVE_GETHOSTNAME 1 + +/* Define if you have the recv function. */ +#define HAVE_RECV 1 + +/* Define to the type of arg 1 for recv. */ +#define RECV_TYPE_ARG1 SOCKET + +/* Define to the type of arg 2 for recv. */ +#define RECV_TYPE_ARG2 char * + +/* Define to the type of arg 3 for recv. */ +#define RECV_TYPE_ARG3 int + +/* Define to the type of arg 4 for recv. */ +#define RECV_TYPE_ARG4 int + +/* Define to the function return type for recv. */ +#define RECV_TYPE_RETV int + +/* Define if you have the recvfrom function. */ +#define HAVE_RECVFROM 1 + +/* Define to the type of arg 1 for recvfrom. */ +#define RECVFROM_TYPE_ARG1 SOCKET + +/* Define to the type pointed by arg 2 for recvfrom. */ +#define RECVFROM_TYPE_ARG2 char + +/* Define to the type of arg 3 for recvfrom. */ +#define RECVFROM_TYPE_ARG3 int + +/* Define to the type of arg 4 for recvfrom. */ +#define RECVFROM_TYPE_ARG4 int + +/* Define to the type pointed by arg 5 for recvfrom. */ +#define RECVFROM_TYPE_ARG5 struct sockaddr + +/* Define to the type pointed by arg 6 for recvfrom. */ +#define RECVFROM_TYPE_ARG6 int + +/* Define to the function return type for recvfrom. */ +#define RECVFROM_TYPE_RETV int + +/* Define if you have the send function. */ +#define HAVE_SEND 1 + +/* Define to the type of arg 1 for send. */ +#define SEND_TYPE_ARG1 SOCKET + +/* Define to the type qualifier of arg 2 for send. */ +#define SEND_QUAL_ARG2 const + +/* Define to the type of arg 2 for send. */ +#define SEND_TYPE_ARG2 char * + +/* Define to the type of arg 3 for send. */ +#define SEND_TYPE_ARG3 int + +/* Define to the type of arg 4 for send. */ +#define SEND_TYPE_ARG4 int + +/* Define to the function return type for send. */ +#define SEND_TYPE_RETV int + +/* Specifics for the Watt-32 tcp/ip stack */ +#ifdef WATT32 + #define SOCKET int + #define NS_INADDRSZ 4 + #define HAVE_ARPA_NAMESER_H 1 + #define HAVE_ARPA_INET_H 1 + #define HAVE_NETDB_H 1 + #define HAVE_NETINET_IN_H 1 + #define HAVE_SYS_SOCKET_H 1 + #define HAVE_NETINET_TCP_H 1 + #define HAVE_AF_INET6 1 + #define HAVE_PF_INET6 1 + #define HAVE_STRUCT_IN6_ADDR 1 + #define HAVE_STRUCT_SOCKADDR_IN6 1 + #undef HAVE_WINSOCK_H + #undef HAVE_WINSOCK2_H + #undef HAVE_WS2TCPIP_H +#endif + +/* ---------------------------------------------------------------- */ +/* TYPEDEF REPLACEMENTS */ +/* ---------------------------------------------------------------- */ + +/* Define this if in_addr_t is not an available 'typedefed' type */ +#define in_addr_t unsigned long + +/* Define as the return type of signal handlers (int or void). */ +#define RETSIGTYPE void + +/* Define ssize_t if it is not an available 'typedefed' type */ +#if (defined(__WATCOMC__) && (__WATCOMC__ >= 1240)) || defined(__POCC__) +#elif defined(_WIN64) +#define ssize_t __int64 +#else +#define ssize_t int +#endif + +/* ---------------------------------------------------------------- */ +/* STRUCT RELATED */ +/* ---------------------------------------------------------------- */ + +/* Define this if you have struct addrinfo */ +#define HAVE_STRUCT_ADDRINFO 1 + +/* Define this if you have struct sockaddr_storage */ +#define HAVE_STRUCT_SOCKADDR_STORAGE 1 + +/* Define this if you have struct timeval */ +#define HAVE_STRUCT_TIMEVAL 1 + +/* ---------------------------------------------------------------- */ +/* COMPILER SPECIFIC */ +/* ---------------------------------------------------------------- */ + +/* Define to avoid VS2005 complaining about portable C functions */ +#if defined(_MSC_VER) && (_MSC_VER >= 1400) +#define _CRT_SECURE_NO_DEPRECATE 1 +#define _CRT_NONSTDC_NO_DEPRECATE 1 +#endif + +/* VS2008 does not support Windows build targets prior to WinXP, */ +/* so, if no build target has been defined we will target WinXP. */ +#if defined(_MSC_VER) && (_MSC_VER >= 1500) +# ifndef _WIN32_WINNT +# define _WIN32_WINNT 0x0501 +# endif +# ifndef WINVER +# define WINVER 0x0501 +# endif +# if (_WIN32_WINNT < 0x0501) || (WINVER < 0x0501) +# error VS2008 does not support Windows build targets prior to WinXP +# endif +#endif + +/* Availability of freeaddrinfo, getaddrinfo and getnameinfo functions is quite */ +/* convoluted, compiler dependant and in some cases even build target dependat. */ +#if defined(HAVE_WS2TCPIP_H) +# if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501) +# define HAVE_FREEADDRINFO 1 +# define HAVE_GETADDRINFO 1 +# define HAVE_GETNAMEINFO 1 +# elif defined(_MSC_VER) && (_MSC_VER >= 1200) +# define HAVE_FREEADDRINFO 1 +# define HAVE_GETADDRINFO 1 +# define HAVE_GETNAMEINFO 1 +# endif +#endif + +/* ---------------------------------------------------------------- */ +/* IPV6 COMPATIBILITY */ +/* ---------------------------------------------------------------- */ + +/* Define this if you have address family AF_INET6 */ +#ifdef HAVE_WINSOCK2_H +#define HAVE_AF_INET6 1 +#endif + +/* Define this if you have protocol family PF_INET6 */ +#ifdef HAVE_WINSOCK2_H +#define HAVE_PF_INET6 1 +#endif + +/* Define this if you have struct in6_addr */ +#ifdef HAVE_WS2TCPIP_H +#define HAVE_STRUCT_IN6_ADDR 1 +#endif + +/* Define this if you have struct sockaddr_in6 */ +#ifdef HAVE_WS2TCPIP_H +#define HAVE_STRUCT_SOCKADDR_IN6 1 +#endif + +/* Define this if you have sockaddr_in6 with scopeid */ +#ifdef HAVE_WS2TCPIP_H +#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1 +#endif + + +#endif /* __ARES_CONFIG_WIN32_H */ diff --git a/include/win32/ares/setup.h b/include/win32/ares/setup.h index 0d678f81b..585d504f6 100644 --- a/include/win32/ares/setup.h +++ b/include/win32/ares/setup.h @@ -3,7 +3,7 @@ /* $Id$ */ -/* Copyright (C) 2004 - 2007 by Daniel Stenberg et al +/* Copyright (C) 2004 - 2008 by Daniel Stenberg et al * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided @@ -16,13 +16,11 @@ * without express or implied warranty. */ -#if !defined(WIN32) && defined(__WIN32__) -/* Borland fix */ -#define WIN32 -#endif +/* + * Define WIN32 when build target is Win32 API + */ -#if !defined(WIN32) && defined(_WIN32) -/* VS2005 on x64 fix */ +#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32) #define WIN32 #endif @@ -41,6 +39,18 @@ #endif /* HAVE_CONFIG_H */ +/* + * Tru64 needs _REENTRANT set for a few function prototypes and + * things to appear in the system header files. Unixware needs it + * to build proper reentrant code. Others may also need it. + */ + +#ifdef NEED_REENTRANT +# ifndef _REENTRANT +# define _REENTRANT +# endif +#endif + /* * Include header files for windows builds before redefining anything. * Use this preproessor block only to include or exclude windows.h, @@ -97,8 +107,16 @@ #define ssize_t int #endif -#ifndef HAVE_WS2TCPIP_H -#define socklen_t int +#if !defined(HAVE_SYS_TIME_H) && !defined(_MSC_VER) && !defined(__WATCOMC__) +#define HAVE_SYS_TIME_H +#endif + +#if !defined(HAVE_UNISTD_H) && !defined(_MSC_VER) +#define HAVE_UNISTD_H 1 +#endif + +#if !defined(HAVE_SYS_UIO_H) && !defined(WIN32) && !defined(MSDOS) +#define HAVE_SYS_UIO_H #endif #endif /* HAVE_CONFIG_H */ @@ -117,40 +135,6 @@ #undef VERSION #undef PACKAGE -/* - * Assume a few thing unless they're set by configure - */ - -#if !defined(HAVE_SYS_TIME_H) && !defined(_MSC_VER) && !defined(__WATCOMC__) -#define HAVE_SYS_TIME_H -#endif - -#if !defined(HAVE_UNISTD_H) && !defined(_MSC_VER) -#define HAVE_UNISTD_H 1 -#endif - -#if !defined(HAVE_SYS_UIO_H) && !defined(WIN32) && !defined(MSDOS) -#define HAVE_SYS_UIO_H -#endif - -#if (defined(WIN32) || defined(WATT32)) && \ - !(defined(__MINGW32__) || defined(NETWARE) || defined(__DJGPP__)) -/* protos for the functions we provide in windows_port.c */ -int ares_strncasecmp(const char *s1, const char *s2, int n); -int ares_strcasecmp(const char *s1, const char *s2); - -/* use this define magic to prevent us from adding symbol names to the library - that is a high-risk to collide with another libraries' attempts to do the - same */ -#define strncasecmp(a,b,c) ares_strncasecmp(a,b,c) -#define strcasecmp(a,b) ares_strcasecmp(a,b) -#ifdef _MSC_VER -# if _MSC_VER >= 1400 -# define strdup(a) _strdup(a) -# endif -#endif -#endif - /* IPv6 compatibility */ #if !defined(HAVE_AF_INET6) #if defined(HAVE_PF_INET6) @@ -168,6 +152,4 @@ int ares_strcasecmp(const char *s1, const char *s2); #include "setup_once.h" #endif -#include - #endif /* __ARES_SETUP_H */ diff --git a/include/win32/ares/setup_once.h b/include/win32/ares/setup_once.h index 4f7ed59bb..965761336 100755 --- a/include/win32/ares/setup_once.h +++ b/include/win32/ares/setup_once.h @@ -3,7 +3,7 @@ /* $Id$ */ -/* Copyright (C) 2004 - 2007 by Daniel Stenberg et al +/* Copyright (C) 2004 - 2008 by Daniel Stenberg et al * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided @@ -88,9 +88,33 @@ struct timeval { #define SEND_4TH_ARG MSG_NOSIGNAL #else #define SEND_4TH_ARG 0 -#endif +#endif +/* + * Windows build targets have socklen_t definition in + * ws2tcpip.h but some versions of ws2tcpip.h do not + * have the definition. It seems that when the socklen_t + * definition is missing from ws2tcpip.h the definition + * for INET_ADDRSTRLEN is also missing, and that when one + * definition is present the other one also is available. + */ + +#if defined(WIN32) && !defined(HAVE_CONFIG_H) +# if ( defined(_MSC_VER) && !defined(INET_ADDRSTRLEN) ) || \ + (!defined(_MSC_VER) && !defined(HAVE_WS2TCPIP_H) ) +# define socklen_t int +# endif +#endif + + +#if defined(__minix) +/* Minix doesn't support recv on TCP sockets */ +#define sread(x,y,z) (ssize_t)read((RECV_TYPE_ARG1)(x), \ + (RECV_TYPE_ARG2)(y), \ + (RECV_TYPE_ARG3)(z)) + +#elif defined(HAVE_RECV) /* * The definitions for the return type and arguments types * of functions recv() and send() belong and come from the @@ -113,7 +137,6 @@ struct timeval { * SEND_TYPE_RETV must also be defined. */ -#ifdef HAVE_RECV #if !defined(RECV_TYPE_ARG1) || \ !defined(RECV_TYPE_ARG2) || \ !defined(RECV_TYPE_ARG3) || \ @@ -136,7 +159,14 @@ struct timeval { #endif #endif /* HAVE_RECV */ -#ifdef HAVE_SEND + +#if defined(__minix) +/* Minix doesn't support send on TCP sockets */ +#define swrite(x,y,z) (ssize_t)write((SEND_TYPE_ARG1)(x), \ + (SEND_TYPE_ARG2)(y), \ + (SEND_TYPE_ARG3)(z)) + +#elif defined(HAVE_SEND) #if !defined(SEND_TYPE_ARG1) || \ !defined(SEND_QUAL_ARG2) || \ !defined(SEND_TYPE_ARG2) || \ @@ -161,8 +191,48 @@ struct timeval { #endif /* HAVE_SEND */ +#if 0 +#if defined(HAVE_RECVFROM) /* - * Uppercase macro versions of ANSI/ISO is*() functions/macros which + * Currently recvfrom is only used on udp sockets. + */ +#if !defined(RECVFROM_TYPE_ARG1) || \ + !defined(RECVFROM_TYPE_ARG2) || \ + !defined(RECVFROM_TYPE_ARG3) || \ + !defined(RECVFROM_TYPE_ARG4) || \ + !defined(RECVFROM_TYPE_ARG5) || \ + !defined(RECVFROM_TYPE_ARG6) || \ + !defined(RECVFROM_TYPE_RETV) + /* */ + Error Missing_definition_of_return_and_arguments_types_of_recvfrom + /* */ +#else +#define sreadfrom(s,b,bl,f,fl) (ssize_t)recvfrom((RECVFROM_TYPE_ARG1) (s), \ + (RECVFROM_TYPE_ARG2 *)(b), \ + (RECVFROM_TYPE_ARG3) (bl), \ + (RECVFROM_TYPE_ARG4) (0), \ + (RECVFROM_TYPE_ARG5 *)(f), \ + (RECVFROM_TYPE_ARG6 *)(fl)) +#endif +#else /* HAVE_RECVFROM */ +#ifndef sreadfrom + /* */ + Error Missing_definition_of_macro_sreadfrom + /* */ +#endif +#endif /* HAVE_RECVFROM */ + + +#ifdef RECVFROM_TYPE_ARG6_IS_VOID +# define RECVFROM_ARG6_T int +#else +# define RECVFROM_ARG6_T RECVFROM_TYPE_ARG6 +#endif +#endif /* if 0 */ + + +/* + * Uppercase macro versions of ANSI/ISO is*() functions/macros which * avoid negative number inputs with argument byte codes > 127. */ @@ -273,13 +343,13 @@ typedef int sig_atomic_t; * (or equivalent) on this platform to hide platform details to code using it. */ -#ifdef WIN32 +/*UNREALUNREALUNREALEDIT#ifdef WIN32 #define ERRNO ((int)GetLastError()) #define SET_ERRNO(x) (SetLastError((DWORD)(x))) #else #define ERRNO (errno) #define SET_ERRNO(x) (errno = (x)) -#endif +#endif*/ /* @@ -358,5 +428,96 @@ typedef int sig_atomic_t; #endif +/* + * We use this ZERO_NULL to avoid picky compiler warnings, + * when assigning a NULL pointer to a function pointer var. + */ + +#define ZERO_NULL 0 + + +#if defined (__LP64__) && defined(__hpux) && !defined(_XOPEN_SOURCE_EXTENDED) +#include +/* HP-UX has this oddity where it features a few functions that don't work + with socklen_t so we need to convert to ints + + This is due to socklen_t being a 64bit int under 64bit ABI, but the + pre-xopen (default) interfaces require an int, which is 32bits. + + Therefore, Anytime socklen_t is passed by pointer, the libc function + truncates the 64bit socklen_t value by treating it as a 32bit value. + + + Note that some socket calls are allowed to have a NULL pointer for + the socklen arg. +*/ + +inline static int Curl_hp_getsockname(int s, struct sockaddr *name, + socklen_t *namelen) +{ + int rc; + if(namelen) { + int len = *namelen; + rc = getsockname(s, name, &len); + *namelen = len; + } + else + rc = getsockname(s, name, 0); + return rc; +} + +inline static int Curl_hp_getsockopt(int s, int level, int optname, + void *optval, socklen_t *optlen) +{ + int rc; + if(optlen) { + int len = *optlen; + rc = getsockopt(s, level, optname, optval, &len); + *optlen = len; + } + else + rc = getsockopt(s, level, optname, optval, 0); + return rc; +} + +inline static int Curl_hp_accept(int sockfd, struct sockaddr *addr, + socklen_t *addrlen) +{ + int rc; + if(addrlen) { + int len = *addrlen; + rc = accept(sockfd, addr, &len); + *addrlen = len; + } + else + rc = accept(sockfd, addr, 0); + return rc; +} + + +inline static ssize_t Curl_hp_recvfrom(int s, void *buf, size_t len, int flags, + struct sockaddr *from, + socklen_t *fromlen) +{ + ssize_t rc; + if(fromlen) { + int fromlen32 = *fromlen; + rc = recvfrom(s, buf, len, flags, from, &fromlen32); + *fromlen = fromlen32; + } + else { + rc = recvfrom(s, buf, len, flags, from, 0); + } + return rc; +} + +#define getsockname(a,b,c) Curl_hp_getsockname((a),(b),(c)) +#define getsockopt(a,b,c,d,e) Curl_hp_getsockopt((a),(b),(c),(d),(e)) +#define accept(a,b,c) Curl_hp_accept((a),(b),(c)) +#define recvfrom(a,b,c,d,e,f) Curl_hp_recvfrom((a),(b),(c),(d),(e),(f)) + +#endif /* HPUX work-around */ + + #endif /* __SETUP_ONCE_H */ diff --git a/src/win32/areslib.lib b/src/win32/areslib.lib index d4e673e5b3479a4c9cda41aaae010eff57b8686a..6e7c8a390c4a5d954217b431f30dee125e7baa60 100644 GIT binary patch literal 97166 zcmeFa4}6?el{fxOW*VktASnzGpvnL(6kGbgr6rY4CYdxzGfmQVkkw*H(+N$RCN-Jq zA0&k`joaxEg%w;`*A-n?K~d4=h3X=}>d+vSy zOfo5HEAIY2@B6g#lxo<0lQ{kNk68{$ay4Z6N!% zvGhO6mW!_~aOaBZzJTs!u!SW#aZte>~A zrnVwdT~l5jTrs`0yk+N#=_MsWqrRa%)=}Tw8jIJr#@n`KeZy^Aysg#g=J?*w9B*yh zYKGX+-W-o@H*{KyBNb(}H6f%mf5oCDD;CXjCbm7+-qCDD8*knkYfHq=5g>a{BteUxHtgc+OGF)CAjJ9?pwry)`mu6_#xDlNX*=uUp+B~{6)xp)3t0Se6%Bo=L zriRwm7)sL&+zl~l?Ts-sV%x6KC8`OQ*REV$R$W^aT-m%mhDO}f))7|?$U}dnfbY-NxDm-qA4XqtJ*ql3>l;|w%TJ>$VjlNdR1*% z_3G+i7-Mg7TN9dM^cb%Rt}dxwxw5RPJXn)Jcp`0$ZEZ6LlOk{EDlt+EP08@t*w7KP zi5DDNN4dmWH=6Z5e^ps&ZSBg6aIihA0g=JlaBV3mYDLZ3btTo6C2PZL6^c$b#u-%WZpkW1b8BB`liNNKoIX2XsZdWO=)TT&XXh^#IzsSdWc#T(+;^U9J{ zD=`qt%S(f;8{0r27G_1fq_(uWWOZaUdP^*hZkX-6boJ_z(vqrD@x)*oKgZSr%TUhWuKYBUsiYIbz(_-n^CZjg1JstFjDpKv_*#XL`kg(nNbZ zC`BpgTzgx~+E{$W0!H85XcG=(ysBb#No7e%B)G1v4FsW~71`w^pk}KM^x4Jh+ED=w zaZpN&;*^yI%OhoFk*dtf~T1*{Wc5O=(GWSxuy*a&;EU>R>2T zx~d{nS{-cOwy9-X!?xxXi#E2jj6$jc-CDJ}ye3#uc56v(<-!Fk7L`?3XCc)FL)B#! zHKi-dgJqiLsg2YG%NpVh8!%PWHefoG#!!Vpd~3@!&o;S?4b3j2YOBlGzr)2Py>Y%V)wme{@{D}EFA>-)Z@PM|e!-4Ji}%#?>K|==HUW9n>10MayMNSm-f7o5 zIz#UyW7BBw!jdtY)z<6CvGTIqE6ZHGyDfS8!^)#9$sVL+qgD{(%Bsc)`5e+KUDPub z`(-U=viE1Q7CjSLCD{w}v8$|HYq2J4r6vuOy=WS{)*G|hx0ck7C8Fi#Sm9;4sb#jc z#*{U_`cgYuSiL!Rta9#hW%-{@;E*laR3g-zlG5A))G^Z5(~D@GV$__X4u@o!@?yP$ zg$Q^Y5lAkf_b8$GC>gj&l`SE2_O6}Y?wc}q)MoNK?IkZ;G+*y3-!Wy*`ZckZ7^Exf zcQiwix}&3>8$)y2Hf%O*FRRURy6g5G<)?f8C|B9&RQb;3qsy1eOIJiLFVw13;y8YK zQz54>8ZEawTQ--EbctLZTE3stD_hb(K8h{&KMjuB1IUG-2S+Zi7Rvu~d5{?Aa>oeg zKpw}-ma&}{fm9?Hf`bx`>#b>5PXCP^xty~I;%N{_$8vdVf}G1s5$;?*vhB0Ip(UrE zH4o+VMHQQ3t(^W@6R%)QnQN+p=<#cg^o2{cgXunR-jXFt0)d6g@RH|_Db=n#<0~^N zD--yYMS22@6jjpm2>cS@l#XJc$b;?C)7O{aYT9x^}l-=I+#LQ-?f z!sR8=>UGtXp_{M4t2DB%?3!%Xn(DIEC6VyjYXTmG{SAJ1<9CbUn#!meZ(hGKwtao$ zjiePf&Y!bn&b;;88`txzrFp~nhh?6-K#L!B>%3DtE?6*6>jkkL&y#li{UigjIrTX6Mi=I6HZ$pb z#%ag(qwv^{bJ{mT=xzu00X#VdZ(eXtJhn4#qZv`a1HcQj@Oa$#1qy5L7>(Bs_eS9S zMB}kP=ED0p{HG$4&!Mb*CgUe~qw>c(eN*EQk5900Uhr)DBSgGL@tO6<>^bsWIwR7a zk(gutH=^nOx^&o^3J)hchx6iIyf2FvWoD-%{!EaRJt#bB3K!xH4Nj!wi^p)JUSh+oQ>*l~_qdWX*t5$l#!$34L zlaXffkSm3E=Wtdyd^=?M?1KW3t6xPva$eBREr%){N?pEeSK zWar>Wq97d|PDKY1h-o2<;UU2u%3M$X_|?hI{*kyh9T_T)4D9x$ql2kvKaf)40iA5- zuLSXm@e#%6f@J4FUgvo_%iWO!smMci#YBgb&%081cMf|Cx_^YMNTAs$Z*jQ)?&;}B zzdJIpEHd1AIWk-v?MKGL54~XAoQ^ysRr*lo?-16AqdX72kasgYr5F#vF+XuTA~O;n zKo0Wb1$a+NtlHE01PN^-gb2E$2WGu=U=9+UbqL+$A@;N6^FFgX`MM4!&Rck}?~_14 zyk@g{+~J2(;fFHF+i-ea_ovrvg1-~Nrx5zCLgPqju27{&zUgJPXJr$qzTh(8DAn)~ zl0gm4IyAN;M-Mm$96R!d(~(m-d-4^?&XxH2jh~@y)oA+-AiDdF$slc)1IjlpB9Rlf zjet}?PXJQ={9}MrKcCUE^N%`FIVS-Ua<_|l9RP73t9 z;epTnr(v+0^LdZ@gU|tNB=NaXyYNq5Ry?HaZWkvFP85-?d;08nO5wt165??i+?s6M zM)J*vG1qrMx1lxOWV;ZmQJ?Zwsc*1c7|K}+rs;NZD&q7rcjMQgXls_DQ-{iz)SWd( zisp8ib@TLJ^~`6f)RWSGiNhSm+goC-+D-Bd?J4RJsfR9K0=S}SYdpAO{)!dWRI?}; zTozoWSDlutQC|;buKIfDWmGqG#6?9D%E7jNDd75g=#V6!F1icb{cT&CV@A;Fv?*1l%W~e(%DMj~Uba>@+Okyn~Gf5E~7)*h;>&1e-j{~dV>F}wn$Q}~M$SISr^K=~~18~Zmxjl>sVPs|&UN3pr zD`Z~Sp+O@7#%4Gb8OngM89Ma3=X^3lL+S9K6mk%ZOPk~V^?0N;6oyy=5-~Q;(zNyHrREQ6)Zp8EPo}0+aEXChB@kxE;F2;6{ z(J4&o`xfx}-iPYROzQg*V9g3Lwt}uNBh%7f^0Hd^0Xj!~;5`dIwpXL*{-JveVu3rt zo>C0h=w?ob`?nmNk_z_=^M%IlAE%G8QnLD2;;T~JNqui3elTzWRO){Th)S5$_is#9 zvX+?C_fv&3Qqc7&I!6Zzp3Zwe+3~w4BZC0|nN?{N;_0b--s&}-y>wob4#U~I=gotr za}k~2qvN>ObR{>IA^XfwNOx9b;LvOCWs&|)^j+Vq=m1s;V9k+FZ{iX&&R*aq7>ESf zLR%K?-+k?<-kFD`Th#YL9y_*b>&!o(>M~bu&Qr@MkdDlSo0eX0uH!T*S%ZklM*5A< zS z3bDt6z5_^w{T?6{w#RZCvG6WJZ75QAjRnafZr$gRvMf3KZ|x4BNQDnq@qW9!mJE*`lIR(I|sgA#dzQX zj$bNZDsnI#J!lcyu2%~7?m)5iS}7elh~>$!N#U?8e=6Del##f?^ba4z5@y)Uu<0LP zoQ@s^flEb?ro&Io3J;$jKAH+2MVAy3G=N2s2i^N7WEUAlaz|Db>I-pH7bqgo^$Nzre;^9@B@gBmho9Zf)zcevi5xxD=iT!f zDHLjQ-xNUs$vFU@T+UXd>DrRI>wEQWE~pO9Ni0XxBoBFtBhT)b-yMAwE29G_{1LP8 zSh(#*v!KOL?gLg_gDhU=I>azHacOt>RRr;xLA(f(mzmNx2RMB#lFnfxzCt3&D~>+9 zeNx}WQnaIoPI+fYIU)!4xx^oBe;^$`n!`2O`RWLV;j8zu;Ne%32MZoazFy#d{?HJn zsN>1bym_v6ed@LP3Rvazdo|i$4$7;JHC(sA&^)c{IODC{G?H{#5 zy$adpngxPV{QSlj@dp10w{PODhAzho`N@3aWy|eHDCl+g@*9vQ8`lc77<|Ng1PTMv zJd6c30t$$)4DrHj@d$?5e(%1>8wJlr-*61M_=bY#B5x?c(kTRnYzrfaqr`}pVE92S zAw+T*bLkW|O~SMAV5ZD59S`jJHN&~tTAY;c#m8IRxhd%w0%7E7%3%)vhSpoI1~$sXbLP8L^WWIIA{+c97H}_UYP7@(58(Yi{PN#Lk<0yvKl^bC5HM~aK)78aeEJp1 zqW)sN@DUt=Zou20jSfZL%RI71v=P9@2528M?fr%t%OC3n(GbZ8STaay#Tx+$j=1Pck^(%;U+C4Q=+oKJ4w}Unr}+sC{=TdRE^U$r!+pf zq-tYmQ4XovUW9#CVz6H#RU5Sn_zb**=r3eB`S1^=QD-Y<+JW%P&P>YW)IK>U`I2H< zuvl}jV-QdbVaD-spTb-SfEnQC3HWkMN13}Z54pobSXZVZ1DF-ThG0R8SsU}zp4Twu z)eh5831uIX!3c_UgVU9<`xY!7XWWY-rz3-VUL#O^D1I51qkCTGNBlgQR5O=zLFfnW z%e^8X8hrV+RAeyow`zay8enp```^Xsi`^mnagr#RQe5l`Z2q5p{Bu9Bi4BPsAGbkb zBV-je4AeuHivX%oYUzu*}5zS~mnA@0|K?h%3 z94YKv_8stz_sk*_3s%>+Y~3Nx_R$ew4g<3b-X7fepu75*hyD3!ix>Wkcn_Kb4huKo zo)Z^r_Sq7WU0{-hEguH9bH^7EV+GZ@P^F(n`dFVBz8}dkJX_ zWuB!3Vi04!A9&tcm6i;-esk68!7${yfjfI@#q=QyN&_Nep#(I__jP=e8}=LLql=I% z=Np#+dbdX`J8$+gcEqydva^2j-tw*Ej#w&iSrM5G16gSE(W5$hCvGdwgSItl6f;!7 z41<#uB{M$k)n^dM}IGmBIO(Uvq73fjVR>)VvdQShB>NQAr&YW{e`LRAlwJ#Y(@$s|;_*2by_UNX{tWf3go-%z zGS7vKa5nAq8gbAEZx4FC%Q(Oy-Tr;py$e zaxT^A<94yJ_)Pv@UW$ELJ)Fz<5GPNxTU7rxRe81I{y3)+(X$sX(rn+v<~|j< z`hJDtonpOWrwh{mo^UVbxe>^I_8cNUW-y3v(jiPFC#imPGF=Bz=*e{WWN~;f9uWr! zr%$BACz3lo1~zs6IUP9xk!oGHy&GjpzNox2z_gN`y;KPb4-|)cJM$q!PDOe%Ul7-8 z(&64mzI_VJ*BftQ@^XANzd~10@j>Xh$xfdU_jgB!FsWJkW01baFOluGp%gZqhEpY& z*$Ok0GHy=FnBXWIQIpwpKxzu341rUa-(Y3@Png2k2iflyyxtleZ}`Gn*i8OK57oo< z8ujUL(Tiz^OGy?E!p4Ic${GGngAZt{p1Aj7~fYWfVTj6qHBu3=98;l*nfXF zf%t?9vQs;rT=Cri|G5*un+d$zCVN7bKW>d&j{&vEtVg!W@sY*5=0$9m%oYJr(auI?o3qkS^8x?rZ6^QzZ43%$i!eMvHHy}5cy|{ci zvT?1rZNWPrP&?l55oj0QT$$z@_u|c*=EuW;NU+o%pyI~0{YOLF zG7N|{zJM6x3t09H4YBeU;E5fctqC-D1YmwIpe_7aVMm8@8dMCRC(#Ctwlc^l#KvGi zAIgbsG+r|1cBEnlY9ZO$QQ5;@&#azFQ5%j8Dc6> zvZ@iXe6zC0V9HFJ!+2tV=bK>REuc&%8d)Kf^~Qi4n#}TGRO(=%ofpI{mK(=<&_bVN z(X!76Tm*-G9+Vc_9I&1RGoH#?rlcm=Vk*@+YL3>wk3* zhOJAZd-Pu=hIH~E^l`hq+P}7>`&;&cj&n61;$Sbwv0^9l<92bt^J#S5|2sR>eB}r= z<`*L`+r@#;XG4DB zc01Hhl%r?~WrrexbGtaV^ZCJ^KY70$DoUAjMWQX!eD8Biu%IkuDgIOE*>rnK~4#hRG+eNa>C;uCBlXj?Y z>QKbV4#g7L?e*k$r-34yX;D9l4{@?X6~M*qBJt(3=F}B%Fhfn(0CBQIalK{N{ADi| zwA!JfIuvoTLy?@ju?kSn2mWK)hwV`NbtvLwhq_2YnK^uX`qWR`p}wm_5hptoTgp!B z@ozu&c{|j9=upJT4#ghmb}hi0&!N9u_KY3s8n<#KPIjnE;No_19P|0<=34>kB#iYs z6mhac5#Q~a&LDVxzq_T;4%Mwg5hpto>%r~fM9b&ptBc;SL%pCw5hpto$D`XdlR@xI z{>(iO*`b7Bz?C@Jq1aM(xn4*<@}?c?W=*7slV>#JORY9d&dXHDKfM7d+Mzj1!@6f{ z%J<9-A)k?@=(Dm+JV7HGp))aNH6aVRXKgK*4R>~yjYDT_Wa_LeM4yHA>N7UNeHK=w z%Ff#GPUuW+ke|H?>9e-y4AZD*X+s*Nn~=fuDRURhGq*@4BzL}P;bJYOws%yhaBj~3 zxg=0efu?0W<4B-RW+53yE(sLr{x+mHW=Ca|ZUX5jcT^t3j}QNxi+uVXgfBUZeOW3p zDf8EIvj3dc&R989i0f3Nz5V-ScgU29P93DUV-yyYG?)C%yQw5_KjP1R#&YLuJGR3c zi$=hp>V`3=OH)aJ3q%?VmnXm()X}n>Bo!CJ&L>%`PLt%wK&#{cV`JeNjg9$B7R*zF!`_qm8L~{yjZdzzF{a*fjE#K=E20pIMZI#3 z4XS%_Po|93gok|Qx%By62!DpBGo<AL06!wnZ|ZFu<( zxokQxkPa=!=>RjUP5M)K)sQL3&MUOmBe zk~*EdX&SgSQYE)h`*~NPD>2P-guXT$A9-UJqW7jAAfBx)Vk$oq8z;^~!A=-5K%Up* ztH<-anSlB(dtOQoz4?eYJvI5dD{&Ef0jldB9`+%!9MnMys1)SAKUHyu)YC?;93{`2 zh=nAe)-jN@kD7B+4TKVhGK$P*!U?kh?2!#54^B5L3y0Qpzp$neL zn=x`8RKCuuxWE`183}GVi0bxsKjhkkEULKeEja0}&=iB(dbg;ZFm+3*S$5&(BJUi- zegg|T4RK6zuJs#Vu-pz>ZbvOBf+Q8qUxy0w!QF4%X+hj6R&L!E^f!Q5Z+_#a7W8vK zYR~U?fYdY-{3F^>angP+#@sH_IM&IY!>7Jy(|%3x^c(_j!Qo#;`}y~3zT`3IhdHK$ zVY-xMx#Z9T9-|ObKStT*gNQ@VGoXVS#4+qK*GxEVVK=uzSUL7S2J1!#xw~QRf+eQ1 z+k|+vg-dU8%tz|fbqAW*TltT0%6aPAF;g>+o6%<$;n%90hy7NxUq<15 z3TeItoCoxd7kgYTyfEAcfwPPPFFc4kC*EJfJp!BojYnBruJ}HR2(AH5{VWs2LrH|- zIb?lwXF4$s4abvf_lG0u&K!7Xth2I~^ijljHoAZvaudoQgx`dDnC|c(NabiHSan9{ zay6eRYB~+GY!T<lFsZ-zR)+QJHE zG#m-;dNGdEGJx`uLvs?)3>lIGGeenwlqqniIOMwGL%^8MeI z@7sV>%mo;#3cAvQWWN#33iTSOWe=utydL^8gXxOtZXP%vOjS*Xl8h^U1K#fVwRn5t z@3A|r4;^^W>_&xsL8OIPlDh)bZlj*7FBQT`O`j`)<9>rZB{PA5c7exGx@uZ+#ms{4 z2jJ3;v!s$LIHe)Bjc*?shblv6+|VrdAs!=sDQi`YIBRqiW~vcdw=hdlHw}ki;gqVK zhEH{ZPU2%Pfwvc_@wn8G*=`tX)@fD`71sxoJBvmVOC-~(%V98XLRQiDP&*v($eve4 zM=e@QceV&;u~-E~o&=6h4<_%L2^Ayh3e1sNp2Ca_UCB*RRwc5Blp`HVnH3+S+7=VK zcKanD)dyTwD_>x>G7pU^-)hUZ9gvDIZ9%eL_M-qiGsXb{Q0Q1XL|1RRu5jcP5G?eK z><(^e`+IKx{ybzwb*beRBwdQEpjlQb5HoI@cnzbvQDxoLg?W}MRvszx>dB=z^>=_J z$gE=vA#<>x(>Ps+bEDolY&W&+FHD2lA<8_L15u}fqp=9`g2$x|e=*CH zTl-}kDu_i<QtgG&63<5wO` z_WlNkZu_ps=wq#VldlB}y8a0*vKi&DND=hU3c5({rMuacb|Tq%!hj75(+BEuW({-n za!x7OyAHnHkzQ!dQK!x7ZWul%lbt7xf-b6s!K?+Um1EcHwKOkvDe9C3d3vfv!r+>h z`3CUZ(Cm}*nc2Q^=mKaR_sr{18i#!j9u@y0>do}P?9eaH@%MsO;xLHWJRU@TKIo;K zSMSdphwm(j%q$gVELD5Sn~gZ?p5Ex0!^k^Y)5O9mqJI|E)pZLyMm4ChMI)%gmo^-& z@Ok91?`0gW9xnjviw9XwW_D$6vK8LL1NyM^-8gf5+>L|Ud6}YxFD8Z;zLG$9E9^nM z&;uhomkH{{Spbt8Y?kbtX(X<3js#>{`n)q^ne$QX9<-8arOxiG?4oKyhyj|3pWjH} zeLa5p#$9-G`t=*1!24Qp!|s(4z|U`d8*l6f0{R)=+@AFt19($A!f&uwD2PiV1+@ZF z1L7e-YCwDgkQ(oQ2Z*z>-{`g6`YpFSba8H#<{LGDRG!-n$K7=A;#T-Rq?`SWT_}Aubhm^HNQTtU5SJI;DlwYb-Q*O9S?i1ZSm~~ zm&MSj&3L|~!w?7YpvJNf<-Q1abE)evk*&>Xt7VAeb}%l1JG3WmgR57nGl&-&K`k-s zGw0z*OL9BPZnnb)ywC z_c6FXtZ|6PCl}rz+^@u#EI^&`G1Enzoz+U1gn#*2?7m26JNJdKHk5iRX1M+P4AlF+ z$lGAr_TT3s9OgLyoc~<-N)whA8DA5ai6)3ao4^zne2)e_3k$lRLkS9=j=l|6V9)C# z2Bd`Esy#2kXo-4|*0nZMh@zLibBz{RN3v?s<`km(V81_k?-XiN7KF@VFKp zW8T5(?ely4Zcv9E_DA2|_aMv9iinKt+sE>MnC!eTkHScU<@3JrPglMu>)b(Fi|rPk zh9~R11Aj$XMd>8vFIxEIyw5F~&N@;0SHWt+XH z;GuQ_hRl_BKk`iG+v4;6&Wy3#%aB?j zetu&e-el?h21T@70Q-&ocykW6&jk97WB9%TzkK60yw&pd-vKFME$Xq3eAK~mE7Ryk z!v)U>PiU=6z(6OCqn`~k4=N6(ay8;ntiH5IVZk$DpSf4C51sLuh)-Gn*%x`U;2GFU zd0phy(i0)D4sCgb>*VhH3n{RMID=~#o@p86nHDT6ai#_9+QH)RFgRUVWu~}QFi`Le zS~faV{89qUCh!r;Khz5u4WPR7&VQaOd7N62jh;z6U=C(rWO_HsZY+GII68<`2<`CtGP8QZ zK2oyGH2_EfGnWG(`O3gNjgLG7HxPUzQty~C$4bJ(T1S|i&sMmy9h5a4)gw;eJ0Nbo zc#}uXm*a!vQS;?o5jmrLqaSZ_ocY4HD(>>XSKNLzIs%_bUH<`gMSqOivUT!JtX#K? z(+){~IP$dz>`<%=KIHxshrtr6$8@>QbP$}0a-&PLLOJupHiiKWyqRL>?bA!`{FLiZ zim&9y2ek`ZE1Roj7je5jrv1NtWHN*SW^H^#yDCo8nY!X4IT^Ax{?}72-?Bp`btuI} zPOo0g{b{k!#8CMLTtsi~Gx)Mx782*roGvVyk#f2$rpvuf7jWP>vg34_&xqJ7C5NIL zt{ALw?#*^wdcx%ZIYDZ1t1#AGE!NdQiPmP!y!O4b;6Qn|y5l<9CR{?IZr!fmuuBj> zV%;J;W$wcHXLJ^F{`@8L)x`+p#;%Z4QD3;mX0UT{W79`*F}bYE?n4Ew8-l($ zcsQtX#Wxjrp9jvjrV5&nt6X?r0p8DmvzN0qp7H91%e$w6bG~2D3=aHU@jV3hOMvsZ z#v3m_lKp?yI4Z{6@x1`gH-Y!POBB|4_4f&Q{1`YJiWDBJCs+Qc>zsGFVf-!m4?JWX za^WT5J`1$@QB9vYb>_mm8t%^l=U+A6c=fUx9(};MNw5DY7|0dhe3auez&Xkp63=*e zv{5uKU>ILz2Jnnm&-cLZUx2gz8bK3c$8-Z{xeB=((VWexdgqlv=b{p$nL~)z(uK3I zjUk3;c56E^?;+>hNy~Q^gW)1ht!Gvpz9FsrtlR~G;9%#?Q^Vkx-C%mX5Z>C3>hLha zyK5nu^pYEndiUJr35E)cyRTxrv<3^e6iiA|XuhY9UUaBJQnC)fDhd3%H$89G{O13| zv&dp*!<(-1%&PFD51Hw^U-+9&}H)XVirmG0=C*bN>8F-bL z*y7;5M+G>Gv3mD@8woY`QxGq@Gy#feu zKh%rk|@?k*?x3N9ZTj_6Bo6dazR4*D#F9~IEEjBjX>EP zfG{5$SG2!4nE53{=dk5#b|)-zWIPq@J%IeaQ#?0t`NJKalW8O6dCC3?dQz|_W2bV2 z0(!1Nxx~S)oOB%A;6g*mj+H6xLw3$qB6w@%hib)wlZ)kS-Jre&BGc#UG}|N7Dyalu zdI0?ndBe6X%g>u!Bz059e~K2DbEg;P))>{E?7a3p|9k8qz-IFpkH_I5>wmH$O5(l@ z#F=#7Z+schG=ZK5#5uxm`~Z+z{r(Wp)#CPVfR+n13~0JQ*P&lxrUFZ|7?2843`m7o z3rK}%0i;4`;;35j{5Vv_h8JQyqbFW?0MVicsy}&-r75=Xe2%V<_QwV1A3qFiS@{My z8YmVhEUxnu+_#tRbSVTOgROCCfAq7$R8;^l2TcM-D!s`An;rye{90^@LKkjWZN_@j z`&!`4icQ}~gpp&(!-d#Y`Fn)5vy(YUtA07vNkX{J;OlXzAFzLepGA0+|SkwvIp995HK_5t} z@G+Dw+v6z?kv`yaDr~4Niw=N3Xm3cseCc(c@}}19K~3pcKp!+N+Bj7x^x?(CgF@U2 z^9uI<6p3<-41F5~GiFtA!a;^vpWW+R7I`xVjF5(V7GRDYNnD(3n2JmzON+wS_Y{Yz z#Omh8;!vsteFns}FfS2B$`En*4!s6a3@CKL`Jfa-sVd0O(53v=4k8^xMR3G!yFBxKu)XvQz8(If(%qavCh* zBOTE|U}s2|Oe+rg6CWhWLdO@nCuNaTsRU$AahO3+4@KMqEVu<#G@;o-m5`^i#X-^YGBN%-N-_x%Vj~bJ`*GNg(7JQXWpZ;|?jU zFOoH+JdPn%u$RQAr|T%HiaCS1aDh4X3&3&lFnuw^8kC=Nlz9?W=EzwlXdSa`Byn&K zx9q4hKQM!ugD$!7#e%Lj5F>CQY|L)VSlwO6kb3QAV-vTpy1RSvrMjsnt7ncRE*mq_ z;+{-xW;I#ed$5^IknUNM|WFQYCaVD457a3c@Cq9Hs z_C+ybM_JM4BIHK=@{Nz;t@<35nrDmKoq$xo*$U`txM6P^km@&7aZvrH7tkE>Rcso$ z=Y6$sMo1o=y1G2h9EXDz|c?_ zE0Z3ydpt(G4Al#x?ugTp)YEhjZt8%d(?%{IfshVuk~|NlN;V<4K+YzEnLqEF!P!U( zf}EuGNVy+mp*cmx5Dmpqeq$TnlzFMGe6K*i#yc#KRNOS42I!pBM|eElS4iYyF7IfUJ7>9Yo(k&sY}&(li>R>7d=6K5B&L$kQ=gM z2|3?@(Xe}YvJ-S3T3Mp!UnTtHQbRa$w1$MpI?j}RtU5a84n4R1f*K@bAZ_T=Az0zCtzya zuo_^{u`bv-2i*!fG5!*TE#}WcCI|G0$G=P3lr$8p3IT z+1R(~y7}X=ikDZ@fvfV7;9mlw3zQf#+l2CBy7xUw{ z2=sou`STkcc&qCAQ$W@LAa}Vl=-ORKI?GcMg*Y{VT7+dilo2~ezI4SpS)uzJ*uJay-EV)fatUjgTOV!>c@!fXl^?ZbJ*DfcSz*!9}`Vy5KxFLnG zKDqpPBXJX=Vwc1^kh!=`Qbk^d)739y88?#}uPk+zzN#-1=(`M(x?$k{n0mD>)zmXC&ZS1spASJ^1odjo1fvg;j5gh}Kbec79YW%zk2qhs=v zE1!Ku7>1i&oBg^ksJ*KpBXOl@IO5tPwz4%={C$*43X4K|i17g43$3sm5)ustAsbP! z=oy1qQ)~^F4AYJHg+h?00|TnYndOMvUO>1ex_|%;PlWDCYe(45q9?Vy+>7obA^4pNNeUEBZhMt2SLx1|;qn>S_Fp ztNyc6fmD5DjX|;2ld59JWiJk{lQTu2Wota?BR_tfDJBnE+Ow2+IZpF1I5IM0#I4Wc z3}>CkX^`_c2w!9_wpIA)4hjH0?%664$AKUW+?$Ze)%f|1wRo#RdM6+?NOuBSCBA=- zx9Y$o+P90_-GEex2LP!M{|k^>>i)>`eckdUJ4*4n-)U|ZhI{^A$HS0 z4}alG2e}G0FBej)lT_KPt(uB6l)ywvqXb%k=qR9Pk*d(4o%oS>p< zCl(*Wx~oFdG}DZ3mi)F_y9Zcnnv{&Ua6g8!K>HpEk`+Ofq$)65VRc`D3Qz<#wTCdv zOn#4Ws%j<#5Rt)A_p~SulM5eqs(j%ZZw2HxR^q)z+&1G~C(tg-?c;!I@$(zc<6VPa zzVY{XE1s0xjtV;;Nh^rTwH7DJ+ObHP41rzKjNR97=I}{AKW)t>7f976wh{5{mYGDO zoD{8p#^H9IZm zd*@(ypV?_o?&&-!owf*obXv?Ej**q=M6Qwt#`ajKh*Mmc-D7)`oxP)aY;OkgkTdSF zh#Yj4eQ@Y3`rvw0lj?5|08;(!Gk{co`wk%0%Z4qe+}Yof{Y$Y%_T3HM)9>r#%{P9~ zEz|>ebdPZIfI^ebKaz?Z!<+*~-Xn)%0aZ*o|7Bi@%o~#W;|xl*a#rC%4Ctdh;gd*G zkc2sZA!0Na~Q6{GD)5vj5%ZDu>suO<&GYgySt8JZb9w3 zaq--t?H8wU>6OVF0+$Aga08XO`T)SyM=Ejx@pADYc?MMBW}bTyEmlzyZK32AYV}9V z+#ZqK9!W=!pj-vrufv^eXSc{;{g{BLD09l0+tIms89~5z%5_1ffD5y-U~Jq`fALG( zAtZa%?9V9AfEf=uK;I(_7lkr>p6J#9sB=-b1`G_~iaco#Kp{8F28NI^%N>W5I$P0F z7YU1#6UC7s=+{Skv8GIbr?HPwXQnz6?wc%&LAyTF;UloGTAwTTKIl;c}iUR!H#%rRJ_( z0JunpPylD7r3pLD46t=bTB zp%Y_M` zhNOvHrGX0!wqSiduBh0WXi;fNThOIFw$*lV*5QQ`Gxdeoqh5LZlfSTICQamXp~UPA zRRCAFD~dN!(!&ceIcQ|L6#|Y>8D@T*p$g&Zc0GhQ)4Kn=H{EZC+NXmTN+@{C8Cm{S zy@h`tGm`+0s>A29T%2i51-@_liT%8 z#KHcz=)TAQ-A?O99giQO)L6d7irHYyIq!O_&B9@tu`w>Rs$o9a`MCtn_Kj?B{q(QO z?EIv4s7oY2&Qe?|p{~Xo1u>opHV@gMKC44rYL(*aP2vMyQq`JP!HVyzE9bqexgGaS*icRO5JQP-rlXA(XGQp91d3@KkVUud2P?v z?3lf(Ngxq1Tjyf!qT7AU-F(hGb6$44?!lXLz~gI!=paZ&o|!tHD-d&@aWlTO$}0`} zkG9|si@#3qwx*_zSX{ekbuP=_VaG#z)i)uuTx?SxZ`@Wd=5ljiaPxt+C8KVEQ<<`E z#i<8Id0A!0+E_fe)TocQ@2YROv!S^asc+og(ApT26in+PiI|}dM2$|iJ=VBg?$x0s z<@&_NZS^>hwk3vp2X(%P(A3_xHMn5WnO<&Z7Fu77fGABDWj5IU-q7B*CDvLGE6lC2 zM%pt5?xu#;jX3-jYj1CBH>hwZ61gW?F8ISrVmt9{l01qR-bk$5fVm$Nmm;(9_?T!%fxuv*A+vO97d$L^1Eu}A?G#3?7u zwU$2>K9cM_VsMl5NMBk)9mf_Zlxd)pgG&;9#mBZ|%ifZ^cvRjRh#5VOol%%dfOO$x zPxu(~4?)7A*KI3p`t&~p4B?~J>P$>1^j(D*dcwkia<3Lb3aIx%WOu4K`f5S<)tH5p z^yjcc`g77;)mhn|q%Ka6o)iHPcXpEpVbDVhfFK|^B31bcIuc54%1i(#naK$Ruw*8H zl+5H=Q~)r%A`hbfWXgjMB7)@exak=xiO;$Uy3R+OkVivW;9~43U^;Tx%pjyI1zmlp zknZSl>__%<>5hVU(FT@u-BE}I64x;!4q3r5GY*J@`cu(k+%lGGf_0s4Ul*#)a9|8T zUXb!Uh@DT0B9=d3Bv@#&uzml+_P`#n85pu{Ea&@?1qMp{_n4gkQVdIpYXHg#cP~UU zzWh2xVBy|Fy;MWA_E@p6b|Be#09)TWnanQSx-N2*XI+UEsE|pCWvb=4`>gh!P@iTl ztU~9(1_An{nK_ga;y_0YqV#CggR))Eez+`ray!#xduAr}y##d-cH9Iu&5y~Z`4QA1 z8svyk&_&*UbD_i-GZeg`%SR&!(7W&@mjUJ9 zSfSB@ZjYR$bz+M7B1Gf?))T~{;@Gj2*Y4oaQ({fx6ohoe;epP}Bzg=nO8(M`!L;w= zDc^lCH6a^u5WMwx_8}f5H;nUwMK~l0F+aelzbRD*C2q=sxVMLGJ71Oo5<2t**-6m$ z(||xzOV)NcWQq1jhAi z;LHmfZghutc8DXQqRMLE%0p?Fuw(m;U*gTRo!|H`yp`Juw4cK31;jO_-=LzHa+?lF z;Vl8g)rH?E2c%-@u-s@@Pwm@r>x+HOZ@dXe#Zn0FQ^i6n=nCS^)GC(yEa>wV^g|1} z6>UOEfZx~wNQF&W&}S^@D;D&$1^v!~+?W+r*h?(vY72VzWK<6z=h=^we@7v~zjMas zENvX?`=QOhBkS@g8C4G3d|++udnd``^O#zzb&E!7(J!|wXO
1Juy$}VVL0)2(-H?uH39nr3l}JSo2PmmJQe#7pR?tuD0O&N zVz6I9qcG%bBlKCE^LrFXpHnmwC!37^u)PwrT=EK&Z))dF(ksTLu zT$8xtf+?3gS-!Ocb{=Xr^4OCxe{Y^msRDOM}Ekwd+fk_GhP zaE=?gFks}4ShQTRVI)SFheyw8`rrkP0@)$3TVW?pD%7_Op)(h1Yg2kJuP1z%HK>*L zdcr68MeXzxU_h{kFMCc$3%V)3Q8n`HX=`MX+H8y*cVkA4V1_&nF3jRh!R;Ir7VkgN zZm0%WffBY20PXRnqOT$V7(2CD2B^->rh76SCWcZ&r2k|#-BS_)H!q8n|D;2&71F3L zaoNl!d>&&ypt2&B{v;T}Lnvpm^VMkuUC#*gRAE6EL?mb*Hu7a~KL#W4fE_3fAJ`4Wlmk5518(eDGmGGjj=RH8!K9U9=a)r}lmC;( z2LJap;r|W_|94pUzk?jO976?ND*?)Y-hkp2M^ANPb#pisel&xGPNgD`rlXIhqK}Q! zH6QDoo{pZ_@(NTG{psq$!s5sv6!$C_u-kCV{17%K)8WTbc~VI@B7rULlRcjO$ODqb zd6d1+OU0Y)q{W1O5zffXSWX`M`>0)Ld0{(oJK4kN5xM0Pm7l8ce23CNcsHeLz27D` zLe4N%HD#Pa90rFOJ)ydd;$SiU*np@_^0ml8kLNx_gE51`flI^*M34>J=mx5qLtKh? zvz-dBKgB}r1Y*a=cPAds#uzJi zKGkz3eAR3-kik$?jCJx=_FO*^#%k`O`I=8s+|oPCs^%{n%~u`&1MpSkdMCnHJ&C%e ztZG=xs?L?K;=n9Bd%o%q##Fs~Jk@H{*xB+_7cuM^^Hj9-FfpF$Tf`iPr?QMYo{p#b z2qQRao@yaN|397zjI4vF0(Yf(D$j&@DqDVO@rc4xVM-F73cAtN6~*1^kEX+qros-MDvMEgtP>_y!6^9C>ki@6+u-gC z^e5~%!v%^(SfoWBOL;XnMf2X^rbO!S&fHYwaJRo3qsG>80+VCQ_P|Y19Csu|)iA^h zJxbAQRveUdGxTz8cHx)f0Y%v7HCyK-5rpWRPb$j+}{wZ>TO{e5_Xh3jNT3!cM zemDi4Ssv=P6tp2Y%gIe;r9y6sshmuE_M4rG+>|XmMenc{0qEXGEUf?0+|-|;f)x)% z%BrAJ&~U{~-EBepE$CAg^aTrg_qeHv$hJ7cb5{TD=8J)jp&$=?4xjO4TlC|8yn4=r zo4UaaB-~UnzOuL}HN#JYm6|el(W1qQH<}nPHGk2u#3XJxDMZiGJ@D>2%P z)*ohH5bLsl+6aX3UP+=L(PDQ4vxL)K6r)(0uF9r$90wSAWkK@I^*Hv&I}1WCsCYt@ zH7qMNtRrz46lW?2GvBAYN-j6JL?Mpgb^~H++Zua12cbM??4EMKi$8tTxRJmhX#tun z2&8TM+q_u;CoQHWZ#EKBlql)<$R{>3DQp|s?Bf|ji&*(!($H_3G{ll{p9_aMsgci; zg@tbH9i>fYo&;?!&M}71gVWB&X>c;jED-ZJqD;f7f zES9R{y%4B*u`8Z@i#1RG3KtNZVFrZ{7|a~Nq0JR$z5axGjSTIN4(`L=%#ffAji2BO zJHbWom>}XA-amC8T1>~A`ML_z^$P5zLzbg@kGJnPVvA(x1sAJOiU|F2#|>3zB50#$ zw~+79n_gvz5@GgLVQb8%@2?u#SK?L%Ivzve)OHA&B(=omz8i^szQJX@T8hv4Z?>~d zGDGTd;oqdbIxaz{^xwSG&LH`AT5@J++miF_$>(8aL!|Oh)s7Ewa;c_`RUw@POhw{N zyL_fy*YcNAVOiXK2jV$jnOp-}Wu_X%AM|Jh~@YTR6S^WYbm03NH9dcn>oSA5HX@Yn?K zo(JAZ;C+b#7CdZR#&@Ni{LmawHe3{>&$CgrV4cbp9l4vOfSX zi#- znIXCCrRm|5%n$CL;O6{EI8$ERtI9{~6bNXao?t-Mc0X%-AVouMgL3k40M3jI0%Wn= zhKd3u(L|JcoQj-&01z9-Z;)SA(7VSI??W2d&sYg#KqG7~+gULl33Y~21e2qj&nJzS z|J4pMM3A({;Qv38Vmg-gxlQ$L&yI<%sD>NV};Nc{k3$GjQe+GW!Dsm@yNX~QNeIK;` z{lqCGmeNhmh4&C5C)|H(8-P(7X@q_Lb>orO;!cyYd^X0u7Y<>z{Vkz3y+$+tpWPlPcA&R?>zw61cf5baE0X*g> zGXXrtH<$}=R6W-L@4tXo{XPJAQ2d;St8#AI`Jf>;8mLP+`o+){EfV(t z7ga)<(DzU10jKy0)hAvl0n1h{Xj{QX7_PJQ2*g`By#mqfmCy1mw0!-Ruez;MuEMl@ z1D0=4Ao|Xmr z&4E5dqX81}A=+*1Rd}Ex{RqNkSwV~Tk2+ed6`?4l)8dysSU-5N480NppDiz9lc~RZ z?-VL7SZkBakL^(AHKPoL-iJ`pA-UY6pOKw?m2C4sAxhWHYQ4^gFIT!MaJJNMK6`3PR=9 z(g~&KZ7&&EF;Gz#?0t+?3oP0xhMkT6bZEJiQE`W*rBb_sY*AG|DilVmsOEw|)A5z| z@3RV#`3bUwt3sVgC-0gqhAZJdJKKGc>AuM6ZbgO_Uf<893-t3)eO??ZU0hWQdtOjO zL#GR}i`aQI8<80ch&aDh$+ zmLuJ7+=RDUcT%r`Gq~Tl*MevmSh?|F1=%OR@f$$oMEnM=G;kX78*>3|5s0RL|4g7Q zfF2d-F97)j;<-cx{nCQowxCNvc9bu*t~DMYl>^aHsIVwiH}s9VqX*=yi|*1G5a{Pv zj^mb_;mmF5DjLHQ5D=p~a=>bR8~c4CD8Q0l*&#|jKuUqc(x^6H`aY71)E>T71+pr* zP2?8^7)56z_-4fl#jV>MBt^Eg>mk$jCU>C&EWUhL+ASf~c6^U(ZeWel_{By%+Pq7xnn{7GCOs9X9cwa z>xDBrVesa3_+LU+GGEqpRWTDrq@<$I z-1DWPob(2@G+SzEwpmL+)3tP;DiZpK5#J&q=WTg$W_A^0WTT3gLKRXb>r95eM?)u9{s3=Pd`}R7sI+sF2;}o}FnfkVbe^+2*D8aCDiUi&Da)sO)$V z2%C0Da~iXYQO3UKrxE9H;S5SBbWsD2q85pTa}+gLus6xPE6S3%3xSinU;!*9bsB() z9JA3qlGEjq60At-{&xZ;x4V-)PEe^BCjpF7*6cKVrEwH3GOWx!rq?V_d8Y8pkIHQz zRU2e(??qM$_WrF@rck(ot}pR}V{;}9xyt}%gfkDl=DdX&^6BYP1bYCNW@XIo=cpm{ za}HqE?Qp7YrsNRgpE-0E)-ixVNJbCfe?z`FfTe5d0nE;cWMv2^cP=s#95?B@**3qx z##ST|zPbt@VF}q(;Oh$Z-peock$EGD9nuKPG5(zSN|nr(MgTR?1NwvGx4?24(9SW8 zf^K;Qg@#p7D`Oncx~nZumCO^k5G;Wj*$<&iYMgT4S3!FKsZsoo7IZmgUgf(DkTsr@ z{k}~olw%E{=G^P0#b%DMn`c>j1(zs?5;!XlWtNNzEM}Q_FLRbr;_NW`N&qfb(J-%*BaF|r6tv6HIb6a)m%Ek zN;qod^FUMf7&U{})76WeQ$9UirvTBvr|VS{Qu`e}T_?4Jlpd2gO_kN5zBaMzbaxNH z+a%vO53qYq_rr8r(=BmA@5|C0@}(rfpEEQ@%tFv!^atR)8!y7 zv?z^d6Oit;u)01#tgfTLs@*(UqolhTN}Ge^Z7UKm-9=ZkBl@67fbAFXOAoWGawX&` z#!qXEk}rB{7f;_$;q!-y>Hh4PBR z-N)|h=D0O$y7e_4ESd1R&I9t^046r#i(e_NMex*X19nhx+0QrE-6a{mgpu8`L^Qr|N z>U10=NPbra1D1E)1g!3omJXD;MM7|HL!eY>Imwdrwp3lv3|fR?q(Y}ENEXvF;8LM^ zAYEBDIj0~iJkpmhHpnUf`Hj7J?+}QCnMRd{b$c#|=@ReYBNBCX3euCpMXtGZF#Dgmi-kRGUX6M!JoLkO~CijY$mLixUG z`St@+xwjW$7lMGP)WU#N4sN%gCjs3eC0e_yBOcqjzBJL^9&3%4wzbCF+ge}=W&K(h z`Dkv8b*#U2XW9D5+I6M1M%kvuZL4Aaf?lxy;Q%XJ8n-oXTVLDI zj;IiFylTXgA4{PhYhi5*oNK+%^Z^wf-jQg zR3Y`9Aiv1esOxbHp%SHpY|6BPIn2P<;%*mv`GF9;>B|LH73XbiH7dAIk~JKc-&Z56 zs%M1KN3rw+uXcn^&=AG3LRD~39UT4UK`rQt zf=qZd<%j;TX#X5}zZ?B44!aZ*gVdOdfsR1~*)-(}(wmog9Bd3C;1R}QlLBD@eVAij z(~8c+MqJ--c3$6h%#|FcqwSWeampSO#xGw41**5+hwl>n{30??J&pua^)4y%a;wZo z4^*J5o`ScLiXD+6K11ZvPCXlRS$9xsX;`e@-28UZ?Us39CeQ=CnK zBNS?NQeO>Flby$n_zLnolAr`j9tQI~xaSb5SY5Vrba2n}T$8Ao+rkbHPNJ*TbGr_1 zUnfz})i(c(glK8?)$OnguR}=mP(e0Hw9kz*V^G_Uo|r}Id~y~JPM$_If;jC7LGpkRPe47QIP&WDt1cYwW8U06 z!K9_4u==B_Jo>X8gRTT$UmTrI>ramNYoM@EW#ei-Tw<62!20&2>L8;?9@%<2>wE}GfR4cweuzY`N`TncrOI!Ih z65>68RBDR>Rf}6Spj85K?XG-jAwdnlb!}~dtqrZa0<=SW9L;EiH-!R3P(J|X7TfH`*D1XPzQ%t;V z?af<(1(dS3t+1ID;G}RfqL^Y-v~|QCpRmETIu_s2*1kn3e}~b$ZBxs(hHcGrHny~= zDZpV-mtO5lQrfydE8lf&!YB!L|k} zk|HLjY(OGsK*$89ZeFbDNWnA5kYK77dj0T$JYb9uMC9-ZjwC{xgSsPnNSnY1aj}ji zI1Zf*b1LZjbEL|hgL_om2$-&0PWvPfO|Uble9s&y=$ei%*cS@YjTTd90zk=a)4qD% zv*RvC2wMBaeuEyIicpOtR;yesy)J%%Kzo*6hZ%;KNesM<(SPZ5e$Ra z43<4xqjIK88##=-ujn$Z0tExmQj8%*kIGe}XF+zRK1D^C0uI{hh#ILN}SZjOg zw=q&7_gi&~@ftWbjaeRuqL2*sF{X+8bZ`)HP#?%ir#lz{6G;WmwuOsq=tvh?k&0p( z_-w2ENJfTLy-FIt+)jgkb#ynM-mp0l8zTF@yAYTBR&FxU;utK`3M zVVY8gXD=$)JAgDyb#3as=b__ZNjD4=09G|Y4;;3qsJfkeb2hG#G$qWLzgMo%*M^L4 z_=P;igc6YKi=KC4s)Y+o_FkO)8PYR}>g2qsvmNsc34=r#VRGlpk@yF4?Mz`d$IcXY&)8L`<16jE&z$x>*geC1AF}Sx;27*F znT`ZBJwZlrGuV(gKo^v)gDRfd^-7$QWThwnUeq7#ZJEQu~5=fNT znU)R>Bq52AXtHBLr4j-yAVwvL0kxv79_2GWSIG(3tr^0>+-z-4HoPW1p%^34`eq?7h zzDr|53<1-K0|Jc+F^;i~X?pjdEUo~-#POiK^dZ?0zKGxVs<6U_ppcE+HISbfV!JpQJYJNo*KRd3EgKVcJk1` zlR$~6&RT4{gSWq4{L-E4@cbY6#bim}ExsLiehI&Hhh3?@vMbfspTW0NzCLHa{?UFN zhObM$22es3m%8Uvm$$bi>Jkl3djr&!E|ovf1iI8|t#3=3W~o)@^4;o~#{Fk}Q!Y zvC>ry?v4eLuVSr5c`XeX6DRy^7b9?ydv*sK$a%Kp2!8Kj(P5g*p$a+dM-CX@O!WiF zp*^y<1f=w#$lh2$XA#*O3Itz{?5%n)_=@DceQUU)>lY3tY2ohL_ZS&lz@Cig?y6*D zF9W1xy`6)5VrQd#Nbxc)W<}tD zkuwvszef@Sw5*{SJ-da{&wFpQN9g=oupooxW<2A@(hftAhvRk*DkT;u?wR5TZ5l%h z1fuvg_E5{QhBZw0g0I1l9Qaz|+se?0Lih$9jD&A{ELYux4bd)pn1{ohTb$gosZqTP zhWRix3jUK?T)2`ex@{4BYLwgt-~ITdJ9prjiC^p^7Rq8jaN2#R>rxbsKDvnh)z3Gr&G8iDY`E>XWO#3wOt^p0*p#Lgag%sNJAfi^^$#Wl_ zDs#hT=pj}C4CXCsidtvBf~X&+BIGZ5~k^T1!8Y<1Jw zuj3HL->TeQf&ucrn=Ew2}1DETM(;uCVWz5tf zrV}KL3M2a8IDa~)A~+Z@qjKB%=VDbe>3mMdB8)%QX%dTdq09W|>wzRPvA(Ed5yl^j zxda0yR_Kxsa@|<>>sW+QDN%cpasG6o2o46g{L+W!_$8iqnScFmOkQiZ{@{*El zobtwPNEXZN;pjabfWg2+cyeAH*t`ILOu;^*W1a3~jTxCT?*oq@21jPey>n1g6KkW6 zb%w;kXXgtxcb3_k`9&Y#4Ae5buSp;8Jn)BIQ))@Ly0F9N*L0GX35k`g8PMFTQk`8Ap-F461^QMUden%aPFe;tfZ8}*9@s7ILfC&aD_rOu| z+1$Ur4v6u`01EC6i1BJwn`oTt!)ZK zVCa3(mf56zXk5rUz7TJ{&PNKt0Oc=O%F%UykHL!<2SOS1C-C;Uh>eYdq3%>bEZz`0!hakD@$TsiwxOAn`_R;B4KjBK*!2bu{?9vS$r>9oTD0$`MrbUZzXLkZI1jzD+T+i!Sg_X|25!ub0F3mIaWxjZL! z8=Bkn#b0$S!uZQfl58-*wng=whhF@Lzq(~Um(_r~OlnHsVjZG;(9?$V@HH6VY^BSt zo(3;dq`O+jnkVUaM>tO-!NAY(4B_{0&;8+>Zmdt~SeM(}n{4i^#VvSKa;20r@pxe^ z!)tzG0twZG$7~7@o+_z&n67AV+d3wRjyjm*u&Ih{>v|823Bbv(xxKA*Gk66Yt@NNO zUR+vLRa#P78TYVgDfI^yWcA7l02Qx{dpNfgh$=hs0tu>Z(@kQj!x-bZreR}EXG8ne z>*_XjHk52Bpyd>uBy=p47q6-+DqdX@SGUULi^nlBEMKg-7~-B3i#D}&G^}jc8ntRXR>fD6na=p|ia?u@#Njc71b$6ZZx+ zHEg(Ee?ZlFjAxUtLq}RaPAi&?LxOFYOIkZO>oRAfO5f)(&)GW1Fo?QM{sT zRY7?{K~)^|$K|;sKrYYqP#~cjBiE%t+O8>WZ)m7&Uf&LKqT4lS%Cf4`vWn{BqWJP$ z{cmnjX$QP>i^?sTQeI2z5mvE0&(|s0MJrYnRuz?$$MF&I7Wz7*xfOLG{nL|Wb-c2= zqHslV$;vorp38GJ(Q|n=QXXFfO#w}jb75h;s=TnUps=DkuBfBSb2)O55DSm8_)A(H zFD+ZKqNK7Cbq4Kp0$^?123=p>-nOAYk#1qPNY4voTD-EnY-Q2vf;eD&Bv)U}E8FVo zb#oWEm0uMvEG$}CR#;RSH$A*O2LxIZRrZEDS|3{9ux?Qv&IGg?gxOo)&{)^G3C50e zITjaI7FAc2m#&OAt~ZgzC=Uit6KcotfKuz)G$qzb|A zruGeJJY|`P%_SC<#GKoDn55EQIEz*Lnr4^D(3)tgL(|V#kh^#hsr<$n%>y~vCPe*R zv~XcwUS3vKer}Hbp!DVc=%Vs+-qCp5r%R=|=F94n`oF@87d z0|C5Kk_f#O@lQm@7@C#sJ!PR#!2!>?BpEF!iNOgzwuMa3mRdIMV->3a?-L3d*`()R>>fKWm^!Ro8TG|ZrrC;&o|G?_%c zaNtC5oi;!;B-n~T`XLk1H6h6KC|_$Dr(|R%RIAWHinR}xpU&Ru@rJ9kCnd7tq!Ssy+u3>%W#<|y; zAY4HlvYdKdsu}q%0B*%~qgB_R2lQ03+(0xq-v!Lw`UKA#S}M3+wC7>KwCO7xab~ID zSkT`AW?>i}INo?t!RsD|C58cTsbuR}o}5X*5oFmU;IaV+ijL2v(#3%5k#h^+ZX~i2j#rXY^}QS6 z4+3T-(UWi!waW~As0GYAq95VdEveG0NBEBbbEZZ@ne;G#Pe`VJ2huwc&D{EgvVJSi zC{td?MR!*X6yrh$4$oPMvxLbPk~EpsM`~l;&qN2FM?qoD1mrGbjNYoSiVDN&{Qzj0 z-H)dd`4_rUr%DKt*qPvGm4vnffMhaItVqx@v@_7Rpkf!iYFK@vJ%v%cVs&>Q=Hqe& zhon>yw^YeIS?gmxH6W`Y$;_TIijZ+1Da)bw9L1N35Oi8dBsYZSFqh*zgc7F~6G0x% z)0l|(a011g@8GEx>p#KAL8fWRQQ6qQ+yNGiSZWQLk)4kM9{KGF@2(o!zHMlIVkVxA ziS+~D<_F;!LKzJoUvyR{`Oy^HZOiNy=%+;aL!>Oa9N(Eqm`({Rj@_03V8|B|^798} zCa>!g)(4a=N?J5i(LG{#8Nj|Iyb3-!sEj1!VxiD-cwhncE0QDqpV?k@C_1-kZ9Z%wLW6pnCpPU%TO9UDtHgNLxf(dIB-CwAG)_h(>lx9{fgwO%-8FxL49?GaLhrDa|9xAPU0NYvA1v`T4#iUbe^uy z7}&`ad2~Rt-y$grpFt*oW2UiGiWz~&HHB->A>p)aA-WRfxg1%zOeq}K1G!rN@c^M){J7Y>7+?On6uUS~%1XzXAa`}%rH{)3#zVG6Brucv})7||m z_*B=DqrY6f&Vo;MEp>6KVX+221xFS?^>sUZcJgRuj@}yfo`^TVa0t8@rr{&6V3DC_ zZpix7Mopc_>gXB6Wsa&)_gx^^CBiKLh>kiUsg$1dU+<1S=grf&~!TZoxlB&JnQJNd)L|B{%Rs zNn~I0$KBiZ1rtzUD7hxVEpB8Vpe!(ZU-z~*jzqq;4@~jNIVjSs&hz?U(}qATv&_WJ ze!hDo5V>nVjHJLCqLMH8I!eqcbe{ew4=!L=dAF|w?6V`uvm}{_m~;VG$-8~9`a;$a z%a;P`zS5>KORuIF_D5=?Xnr{>CqJpDV_)sz9_ZIVPk~is2x<^uP^Yi9UrVRNurDwU z?BAHt8`5X(gJT%niF8kQuEFzs{9+E*Kq4s9ou}}eEn#P%1=YfPJ$$MIx51YsU(uD= zoWf2g7T?$b1VMoetDOXQW(=*xwa(RmpoAu9i>oT8d9oE(#wCcNRwg9aHJFcSbq~|Z z{y7#S#c=}B$t`^%GFLsJ@LlJc1G`>;wV)8n*Vjj14J737N18_FXs=2_rP-taDe!0j z)dwF`@(eGWj>*z#QAs@-6xWy*>oj5Lcj0O@+@vBcs^#1Io}*!-$N5aV^(^HHejzP6 zLt1d)FzXM^E7YI@mRQwZk8sMW9bdOC7E;sAV+2UsI9M^Wp}@i}MUX&+a^PAOS_9>m zM$fe3@EQgGG?!?`8+F%D6)TO*qNC(#PD?^x5YjanhXz`CnQ|GsLt03%Q_Br~TEIHKFup|}qllY}Oyq;YxzAN!uD!#RNE)icdo;)$6J3H{q72j9z%n{$c zc=F^5Avio2i|-*kxkAN6IB>p%J%=YT^ono#G6~DWF#3dq{XKk_itj7d_ape!8n+KV zj^LOx0$-N++MTt;Q*}7Sb&0z5uq#+ymuS)qOh*%!OD)}&sabxo2;!1UX&ZIS!FCM` zoIAiF&AHbioJeE|f|1c3kN~rc_6Q=kUWP9Wtj&zxkJS3Py7qSu&@M0a1l{^+q{U+l zc$E672cypwDWKK_%J*=g1g1kK+hOn&qfYp)};Rc$SE-*M@z^hOyfe+#juvYm#0m*f?Ufcy1rNVLdQzgXrwz7ud%yNFTq@z3m0|F;!VeAHSgb_;p)uw~yU0 z)5kAMA4mIYU$=ey!q`5J_F?yNQy<^Q<75QYq%TJUsQ&yce3keq#&;F=eH-?wg&VTI zG&}i@IszaJ=NSRB#*F|@6b^`>=7Q`;29$!Au1rh*Sob5(XsRDio@!pAO8m}C8YE&O z7(`oQ|+yfU5<|@ZBYI zu6I-3gb=!PoAMSFfalnBrXwsEAaaMkdu|V62f&Lsu0V8(ZH~Tg@FC8WkYm(15cQio z>YF!$_$to8JZ1p!SJmq!8#1;$VSEV&&`eT_*Oxr@H@7@*=~!gQ^SARU5{rrR9x*d* zJ@!vi3*HszPC+aX{u?)tqN#!;9eRbUUBXP6FEr6DOpXm8#i35JrV<_mz-I-aRhl zC*wjW`e2+t_Y4HP3vx?rFlPegS7=i7NVy0LzyV<~pP zm+)pW-8^0?B%1^B)t1D%O`uv^HU&fDBh*;Zm9qal&Q75YHU@VZTI<&}-AMicoo6E` z%98u3k|Fil&cvm{(d>Qe0G71giOBCe)#+hBmEF zHG??$`Hte|_J$3Kw)U+BE-@BN3LYK_O_D9yas$YjB`*8NwFxjcZtN(CF9Jt^zb-~Kj1=Urn?Xt`(5u||9i6H#Q`Nv+@}qR3p1 z-SvE)2H^N76(&A_d0dK*E4bUkaWO~*_hW?L378dJz2FF*3Xb*L3Yf<=9IKQHE(;%C z0n9th5RNxUflEO_d73+<$4x{*`S~Q^xKzI|2{_(Ef1L`>v!t^~)Toz%-7t%L37l=e zG4;$0CG(e-dyX1Ke*?za)c zCzQfOL!Cfb$7Xes+!D3qma5r6#R>4Y(Mm0s_T%ZLrktTscD1uXO(9(J^SmgKlp-n5 z;)R-bLtIDQ>tXUN+UpkmD&0?61S&3fh#3mh~&I5QV-=E;)n3XGN*Wf?Gdk=o<7Akn%tkf2wX#yC3J%>73pBH3D7JE1`rnfEmfN2A1Iy z`o)W!rqIfOUW}|1wLuLn(*qf_5Nb(nGEfSo)GT?U^=*Ss)$mU1yAM7) zWE7%-g3uVxnp!Yh;Q}%zrWTm;g%o*!i%kql(+v_$5Wfqt^0`CNi}Kc1J0?;$)d!cQTF=StXfcwQ)BzriyL zzjP-bJw$v}%xQ*CjbtK*6&2-Y*7uVA`UZTs@*)Nm@~E}qLq-v!_1K-8MFQ0*UIP6A zbk6<#nH0%|-X<(cBl`!S^;TYKh-zg2TVW+JEo@#R8W8wp3eXN>S`T4a)f7%H+h&Ct zpk6y>x{q`#;E7?vF}(i+l3w90gZlIc5`eexl>H+lhZEqG?n4m`Fk}DwB%~8yM)w;L z4KUM9VWyixhMPi$o5HDX3a7d$oaUx*nwvtzO(DV*n$R4iESd>hCgnTb#`P3G;6@F& znWwp#r@5I2Z31OMH}jC2LdZ>Fnw!EjH-&UJg>*NC>23#H{Xyqzpnj;I_J1z z0ob{ye!l(R+UZwtmCoH{CvBHamJ-Q9bbY0UgEgIKltleKXFs$YE7pwuj6r+ z((*q0orGp>m1AqrJ*{5lc`TeI`(z@V<*#)*ggF+@@)SvjwWIUnEZ-qz!IIwpYD6{i>3}3KRO-4_%XN& zV`}Ejb^H3@)xZw*rP2|Ged?7{%^H)A!kBXBr)&CYEsh-~onL7WVU#yBC}8pczb@X! zU@^JKrNUxr^rKe}=h&h-Oe{6Z^M*vb7rR+^6zt|WEaU%2DnfqDB2GUPi7V-jb`ei8 z2-)I__{x&i#pRIk5P_pDv;*Cq;3oGI!5OgUi zFH{0k^$K9zpXS!(OE^xK=WuKH;c+2B(nMjN1$m2%NC*&6Sy{*8SI^BgrY>Cxk_}i{ zxVX`!!j67feR7{E_|*yXmMWF+otCAYp-e8)BqL}d6!+6ODE9lQ^uX)Qtmk;tLA}B{%-|q?sJ9}%GF8;#08mJ`;ie5 zx88A0lqt_HYGmhHU#azd%K93uuig4S+M5Z71BbxKB|rG{GF`+5p`*5tT?Dsvd>Gr>ihysF*aea~EnxWb+mX z=H03_dNT>w?E~8%FhM{L4=zjVfZ&{Z8SSmy6Ixal0tZ`K^54z(&WnIx>RuA>fLsDL z2VkH_d&@&TmA8|=A<9wly(a(!=C?RQX)u1c9c+N3V2d}Li$H;gk3@F9g%W9_lqg7T zzla+4OPc-5!YBx3`Xqxjw}+P1gmpm}gzqQ_%m^)IL5O~mEMVMyO&6xNN5v}GXTQa@ zV=E*B8#Jdmb2}`#9VQSeUopPTy5++Yzvayty}I9ABy22NPCA-?y_(7E;2 zgqPK_+H3)S1c&y(Dq?`anu*0GikhG7ZPZ-Gk(G8{)PveaIeR!`?rMGlMWT<+zl}14 zS0d%Ojn08rFCFzA+BZhnaK?fw7n)6SQtQZ-RxsFIM~HpmvP^fPr?<)OsozH)+*ALe z8-W+MsjMSA5dTD^#~OrD;=?+>$)4Ihh{XX4{-aAu!mv@rbLzkzJg^}`cmgco9Hmv^ zzBK`eHxX{x%QsCIuq2dVs?iI1FdFQ0cTbQfG2&yik)bu;E`A*8XGbnT~69@teIz19Mqe^XIHA=)yBj#+!^JGsB4hz2Ei2LoI9_~_DRDZbFa-_qURLnNJ#iU>M&V}=AcV8M@Z7}xe0DK zhkZcUQ=Mp`w@LW<%a|KC;5W)vf#V;}k+EHJWPHXJ2W=24WkJ?jVH{cQ8kp|YF4L~}@t8d zBL!0Jp@sXR<)Fvye*<6eRuh={R8W)wBol}e*^5ku)I^t6VF)7s!Y@7qG14NH0EDPS zDK)b0{$On7a z1!Rhhg$3y@OS=ijli_CzjyOpiX4o!jsW=DKAsR6zCZ5z%A^igj5TgjUn!xR<7w&%U z$iT&_AyM*OuSRx~ml;PbRJ!ZUeeid^&u8aG^eM`17Q%LkIfyT6wd^`14R{DEDx#JJ zX1+q}*tNsUYNNLb=zfAS-{Bs%zdfIg0OAV*@f|=Uzo4?lu>g_b@2iYrXk>s{VA(I) zr=hgTTM#PkhExdD{TB2v3`2=M)>)RC5^fM|gEy^vWG&^`hS<&24m-q&i5?DC4auls zg?ehk$-TBK28MAK5qU^a#ZI}8LAEh;H{(n<$Ro<_lE_muXWQQ9)M19th>h<&w>GLEX23h0sp))(c~<+GVi!>QH!z{YR*1) zrKWyTqJ-&Abfw;nxRY6_y8yQdRexJopCq4DD>Ze%Ux0RQ(yKL>uBn`QZbkeP(R!kl zihUS2D8V3<&9)o}t|XA0U}RzA@~16|D;54eTfej@4%t?(MR8ap$rsDv2+y}kWA;&W z*kTkgYq%__1&QQUr)Gt$WTrj$U%P~bGiQ+4k8HYVTBl8Rx*mIPvK^m zvl`+(q72xOVPQLSz?Olq!fKqkhI(r%kG$Ib3|3Ir3QY0|9^`0wy-IIkyaHL(-CU@s ziTXma0~|_62}GOAAZ~)7(AzyOocyJ<%vIhNpsg0K-F65(Qa%kzsd2^|p=sq=syXrI zHOPuqCPHS6`4h3*&TwnWl!zMIUL9u^1>wG?{|7WF?70n4}-zCSz z`+Q~Il5sfKAc{WK`yu;cGI*vR0InEq`Dgs-*lJT*DQ`jit4{#Ww4ttbL&K&iFOV(ar*yyI6Jd-Brgu65$L5%QW$AFyY~%tGIldX&p|!!jlL# zZhbSn8@~S+CMO322f$~)^zNDNr1DQre0F%%R?bYbi%oz`s(ieuNu|1V^0Oy@(Q#pE z^A;J^PcC+a3~N)x(())bnc2g>W0;diLQDQzdcXIMaNW7D&95?8P98*#a7=Sa=15LIiDnokbIxYRurnSVd|>nB zMlwhKC5WNM?K-U_)(Qr#Y2I*sQCnwg0zyU$@{fs0hoC-c4Bi4PqE6=(P1{kje*AUU?HIRL~vlo`I<-#%VNG5}OP5t6|z*6KKKG4_pewgTf`8i&Cny zA_;pL_$l2GIhEWo#&Iq z_1}U9B(DDesitrj;y0Dus0;B=gnsU2shawUPVY#?_pnM-ob$3);|Zb{k0wTWP|0tr z`^5gIz1IPEd60H?BfAO#h?yx0l;$LW!-E&L7D0G>t_3Q*hRnqe;titLCIOt$h~O)S z>%DZ`7?jNTZPgtbHUSogNaj&v^StJ;UjJ>*fi1SLQ*YEgm}X{NAt6eO{2CZ{U+u1ZljkNwtw(J5WF*C=l5FQ5d^c zslu28F$#mPV%oCC6zfh|o0RyifMnP1n<3dWZGbE=P&Q&#V#Wo-1ue6J z2nv!hVcx{F!*bjg`WiF!f+`JzFwjddYHigm2t8aFm}fJduUxN_UM2doj@|@ns6}@E zoHeT*5k0Z&Hegbrz!2T*?GD24HA4{Qc*oQo zYzs1gb!4kLli{{@sPO?58OqIw!A%BxOAf-=xJQm~I)ZT(#Ce`tOwPbBCI-TJ15~!{ zxlqM~|C~vrJO2w$g|0deV_SXwwDmn;eZRH753KKe%rtdqp#g7oXyKt%h3&S!pIF~v z_|%c+Z}6$ymf%vN^My~vy%Rol;Cae^%|@rIur=1#37pX%T zOXChpN4_lO49ug;Uws4 zx|oD+3jyJ=Q(ar2(cyTENi0~hFeNr4+aN8nlry^Gm*klb>iqZsG*iE>2RN&9vd@p# zVIuPU_&wxFhcPpy^J6#Smz>Bw(T8Q7`Uw(uMWEj@M2Y$`-kWN&1ZkmG|EQ8U@7|Ij zxOi?5p7qfcD^5O!sMdybM)%E`vM|HAWu|9g#$H0c2<#;pP@^h7#=1&;;OnCH_g110 zA8EP+VTm~;bV!+a0S))=-h^OmWZ~W&1UT|CMDAf<{zYB}3&Z*(DFq2*&x8mn0C~5^ zp%7Qno-Xj`w)2q{aCRzgVS;SuXmk!I)xJ7Y3!u4|E8>dFyiv%j$65#g#KZ7~k AApigX literal 84470 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 z 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