pax_global_header00006660000000000000000000000064134752202640014517gustar00rootroot0000000000000052 comment=ea59ee7a32cb7c7222599b87ab36aedfe745f5d1 kore-3.3.1/000077500000000000000000000000001347522026400124635ustar00rootroot00000000000000kore-3.3.1/.gitignore000066400000000000000000000001361347522026400144530ustar00rootroot00000000000000kore *.o *.swp *.swo *.module *.DSYM cert obj .lvimrc kodev/kodev kore.features src/version.c kore-3.3.1/LICENSE000066400000000000000000000014301347522026400134660ustar00rootroot00000000000000/* * Copyright (c) 2013-2018 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ kore-3.3.1/Makefile000066400000000000000000000117561347522026400141350ustar00rootroot00000000000000# Kore Makefile CC?=cc PREFIX?=/usr/local OBJDIR?=obj KORE=kore KODEV=kodev/kodev KORE_CRYPTO?=crypto INSTALL_DIR=$(PREFIX)/bin MAN_DIR=$(PREFIX)/share/man SHARE_DIR=$(PREFIX)/share/kore INCLUDE_DIR=$(PREFIX)/include/kore VERSION=src/version.c S_SRC= src/kore.c src/buf.c src/config.c src/connection.c \ src/domain.c src/filemap.c src/fileref.c src/mem.c src/msg.c \ src/module.c src/net.c src/pool.c src/runtime.c src/timer.c \ src/utils.c src/worker.c src/keymgr.c $(VERSION) FEATURES= FEATURES_INC= CFLAGS+=-Wall -Werror -Wstrict-prototypes -Wmissing-prototypes CFLAGS+=-Wmissing-declarations -Wshadow -Wpointer-arith -Wcast-qual CFLAGS+=-Wsign-compare -Iinclude/kore -std=c99 -pedantic CFLAGS+=-DPREFIX='"$(PREFIX)"' -fstack-protector-all ifneq ("$(OPENSSL_PATH)", "") CFLAGS+=-I$(OPENSSL_PATH)/include LDFLAGS=-rdynamic -L$(OPENSSL_PATH) -lssl -l$(KORE_CRYPTO) else LDFLAGS=-rdynamic -lssl -l$(KORE_CRYPTO) endif ifneq ("$(KORE_SINGLE_BINARY)", "") CFLAGS+=-DKORE_SINGLE_BINARY FEATURES+=-DKORE_SINGLE_BINARY endif ifneq ("$(DEBUG)", "") CFLAGS+=-DKORE_DEBUG -g FEATURES+=-DKORE_DEBUG NOOPT=1 endif ifneq ("$(NOOPT)", "") CFLAGS+=-O0 else CFLAGS+=-O2 endif ifneq ("$(NOSENDFILE)", "") CFLAGS+=-DKORE_NO_SENDFILE endif ifneq ("$(NOHTTP)", "") CFLAGS+=-DKORE_NO_HTTP FEATURES+=-DKORE_NO_HTTP else S_SRC+= src/auth.c src/accesslog.c src/http.c \ src/validator.c src/websocket.c endif ifneq ("$(NOTLS)", "") CFLAGS+=-DKORE_NO_TLS FEATURES+=-DKORE_NO_TLS ifneq ("$(NOHTTP)", "") LDFLAGS=-rdynamic else LDFLAGS=-rdynamic -l$(KORE_CRYPTO) endif endif ifneq ("$(PGSQL)", "") S_SRC+=src/pgsql.c LDFLAGS+=-L$(shell pg_config --libdir) -lpq CFLAGS+=-I$(shell pg_config --includedir) -DKORE_USE_PGSQL \ -DPGSQL_INCLUDE_PATH="\"$(shell pg_config --includedir)\"" FEATURES+=-DKORE_USE_PGSQL FEATURES_INC+=-I$(shell pg_config --includedir) endif ifneq ("$(TASKS)", "") S_SRC+=src/tasks.c LDFLAGS+=-lpthread CFLAGS+=-DKORE_USE_TASKS FEATURES+=-DKORE_USE_TASKS endif ifneq ("$(JSONRPC)", "") S_SRC+=src/jsonrpc.c LDFLAGS+=-lyajl CFLAGS+=-DKORE_USE_JSONRPC FEATURES+=-DKORE_USE_JSONRPC endif ifneq ("$(PYTHON)", "") S_SRC+=src/python.c KORE_PYTHON_LIB?=$(shell python3-config --ldflags) KORE_PYTHON_INC?=$(shell python3-config --includes) LDFLAGS+=$(KORE_PYTHON_LIB) CFLAGS+=$(KORE_PYTHON_INC) -DKORE_USE_PYTHON FEATURES+=-DKORE_USE_PYTHON FEATURES_INC+=$(KORE_PYTHON_INC) endif OSNAME=$(shell uname -s | sed -e 's/[-_].*//g' | tr A-Z a-z) ifeq ("$(OSNAME)", "freebsd") KORE_CURL_LIB=-L/usr/local/lib -lcurl KORE_CURL_INC=-I/usr/local/include endif ifneq ("$(CURL)", "") S_SRC+=src/curl.c KORE_CURL_LIB?=$(shell pkg-config --libs libcurl) KORE_CURL_INC?=$(shell pkg-config --cflags libcurl) LDFLAGS+=$(KORE_CURL_LIB) CFLAGS+=$(KORE_CURL_INC) -DKORE_USE_CURL FEATURES+=-DKORE_USE_CURL FEATURES_INC+=$(KORE_CURL_INC) endif ifneq ("$(SANITIZE)", "") CFLAGS+=-fsanitize=$(SANITIZE) LDFLAGS+=-fsanitize=$(SANITIZE) endif ifeq ("$(OSNAME)", "darwin") CFLAGS+=-I/opt/local/include/ -I/usr/local/opt/openssl/include LDFLAGS+=-L/opt/local/lib -L/usr/local/opt/openssl/lib S_SRC+=src/bsd.c else ifeq ("$(OSNAME)", "linux") CFLAGS+=-D_GNU_SOURCE=1 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 LDFLAGS+=-ldl S_SRC+=src/linux.c else S_SRC+=src/bsd.c ifneq ("$(JSONRPC)", "") CFLAGS+=-I/usr/local/include LDFLAGS+=-L/usr/local/lib endif endif S_OBJS= $(S_SRC:src/%.c=$(OBJDIR)/%.o) all: $(VERSION) $(KORE) $(KODEV) $(VERSION): force @if [ -d .git ]; then \ GIT_REVISION=`git rev-parse --short=8 HEAD`; \ GIT_BRANCH=`git rev-parse --abbrev-ref HEAD`; \ rm -f $(VERSION); \ printf "const char *kore_version = \"%s-%s\";\n" \ $$GIT_BRANCH $$GIT_REVISION > $(VERSION); \ elif [ -f RELEASE ]; then \ printf "const char *kore_version = \"%s\";\n" \ `cat RELEASE` > $(VERSION); \ else \ echo "No version information found (no .git or RELEASE)"; \ exit 1; \ fi $(KODEV): $(MAKE) -C kodev $(KORE): $(OBJDIR) $(S_OBJS) $(CC) $(S_OBJS) $(LDFLAGS) -o $(KORE) @echo $(FEATURES) $(FEATURES_INC) > kore.features objects: $(OBJDIR) $(S_OBJS) @echo $(LDFLAGS) > $(OBJDIR)/ldflags @echo "$(FEATURES) $(FEATURES_INC)" > $(OBJDIR)/features $(OBJDIR): @mkdir -p $(OBJDIR) install: mkdir -p $(SHARE_DIR) mkdir -p $(INCLUDE_DIR) mkdir -p $(INSTALL_DIR) mkdir -p $(MAN_DIR)/man1 install -m 644 share/man/kodev.1 $(MAN_DIR)/man1/kodev.1 install -m 555 $(KORE) $(INSTALL_DIR)/$(KORE) install -m 644 kore.features $(SHARE_DIR)/features install -m 644 include/kore/*.h $(INCLUDE_DIR) $(MAKE) -C kodev install uninstall: rm -f $(INSTALL_DIR)/$(KORE) rm -rf $(INCLUDE_DIR) rm -rf $(SHARE_DIR) $(MAKE) -C kodev uninstall $(OBJDIR)/%.o: src/%.c $(CC) $(CFLAGS) -c $< -o $@ clean: rm -f $(VERSION) find . -type f -name \*.o -exec rm {} \; rm -rf $(KORE) $(OBJDIR) kore.features $(MAKE) -C kodev clean releng-build-examples: rm -rf /tmp/kore_releng $(MAKE) clean $(MAKE) PYTHON=1 PGSQL=1 TASKS=1 PREFIX=/tmp/kore_releng $(MAKE) install PREFIX=/tmp/kore_releng $(MAKE) -C examples .PHONY: all clean force kore-3.3.1/README.md000066400000000000000000000062231347522026400137450ustar00rootroot00000000000000About ----- Kore (https://kore.io) is an easy to use web application platform for writing scalable web APIs in C. Its main goals are security, scalability and allowing rapid development and deployment of such APIs. Because of this Kore is an ideal candidate for building robust, scalable and secure web things. Key Features ------------ * Supports SNI * Supports HTTP/1.1 * Websocket support * Privseps by default * TLS enabled by default * Optional background tasks * Built-in parameter validation * Optional asynchronous PostgreSQL support * Optional support for page handlers in Python * Reload private keys and certificates on-the-fly * Private keys isolated in separate process (RSA and ECDSA) * Default sane TLS ciphersuites (PFS in all major browsers) * Modules can be reloaded on-the-fly, even while serving content * Event driven (epoll/kqueue) architecture with per CPU worker processes * Build your web application as a precompiled dynamic library or single binary And loads more. License ------- * Kore is licensed under the ISC license Documentation -------------- [Read the documentation](https://docs.kore.io/3.2.0/) Performance ----------- Read the [benchmarks](https://blog.kore.io/posts/benchmarks) blog post. Platforms supported ------------------- * Linux * OpenBSD * FreeBSD * MacOS Building Kore ------------- Clone this repository or get the latest release at [https://kore.io/releases/3.2.0](https://kore.io/releases/3.2.0). Requirements * openssl (1.0.2, 1.1.0 or 1.1.1) (note: this requirement drops away when building with NOTLS=1 NOHTTP=1) (note: libressl works as a replacement) Requirement for asynchronous curl (optional) * libcurl Requirements for background tasks (optional) * pthreads Requirements for pgsql (optional) * libpq Requirements for python (optional) * Python 3.6+ Normal compilation and installation: ``` $ cd kore $ make # make install ``` If you would like to build a specific flavor, you can enable those by setting a shell environment variable before running **_make_**. * CURL=1 (compiles in asynchronous curl support) * TASKS=1 (compiles in task support) * PGSQL=1 (compiles in pgsql support) * DEBUG=1 (enables use of -d for debug) * NOTLS=1 (compiles Kore without TLS) * NOHTTP=1 (compiles Kore without HTTP support) * NOOPT=1 (disable compiler optimizations) * JSONRPC=1 (compiles in JSONRPC support) * PYTHON=1 (compiles in the Python support) Note that certain build flavors cannot be mixed together and you will just be met with compilation errors. Example applications ----------------- You can find example applications under **_examples/_**. The examples contain a README file with instructions on how to build or use them. Mailing lists ------------- **patches@kore.io** - Send patches here, preferably inline. **users@kore.io** - Questions regarding kore. If you want to signup to those mailing lists send an empty email to listname+subscribe@kore.io Other mailboxes (these are **not** mailing lists): **security@kore.io** - Mail this email if you think you found a security problem. **sponsor@kore.io** - If your company would like to sponsor part of Kore development. More information can be found on https://kore.io/ kore-3.3.1/RELEASE000066400000000000000000000000161347522026400134630ustar00rootroot000000000000003.3.1-release kore-3.3.1/conf/000077500000000000000000000000001347522026400134105ustar00rootroot00000000000000kore-3.3.1/conf/kore.conf.example000066400000000000000000000300301347522026400166450ustar00rootroot00000000000000# Example Kore configuration # Below you will find all available configuration # options for Kore. Options which have a default value # and can be left out of the configuration are commented # out with their default value specified. # Maximum length to queue pending connections (see listen(2)) # MUST be set before any bind directive. #socket_backlog 5000 # Server configuration. bind 127.0.0.1 443 #bind_unix /var/run/kore.sock # The worker process root directory. If chrooting was not disabled # at startup the worker processes will chroot into this directory. # # If this configuration option is not set, Kore will take the current # working directory as the root. root /home/joris/src/kore # Worker processes will run as the specified user. If this option is # missing Kore will run as the current user. runas joris # How many worker processes Kore will spawn. If the directive # worker_set_affinity is set to 1 (the default) Kore will automatically # pin these worker processes to different CPU cores in your system. # NOTE: If you set this to the maximum number of cores you have # in your system (or more) you might consider turning off affinity # if you are running CPU heavy services on the same machine. workers 4 # The number of active connections each worker can handle. # You might have to tweak this number based on your hardware. #worker_max_connections 512 # Limit of maximum open files per worker. #worker_rlimit_nofiles 768 # Limit the number of new connections a worker can accept # in a single event loop. By default Kore will accept as # many new connections it can up to worker_max_connections. # # NOTE: If you are running benchmark tools that throw all # connections at Kore at the same time (when they are less # then worker_max_connections) or you have an actual reason # to not spend too much time in the accept loop this setting # will make a HUGE positive difference. # Number of accept() calls a worker will do at most in one go # before releasing the lock to others. #worker_accept_threshold 16 # What should the Kore parent process do if a worker # process unexpectedly exits. The default policy is that # the worker process is automatically restarted. # # If you want the kore server to exit if a worker dies # you can swap the policy to "terminate". #worker_death_policy restart # Workers bind themselves to a single CPU by default. # Turn this off by setting this option to 0 #worker_set_affinity 1 # Store the pid of the main process in this file. #pidfile kore.pid # If TLS is enabled you can specify a file where Kore will read # initial entropy from and save entropy towards when exiting. # # Note that if you enable this you must provide the first iteration # of this file by generating 1024 cryptographically safe random bytes # and writing them to the file specified. # # Kore will refuse to start if the specified file does not exist, # is of the wrong size or cannot be opened in anyway. # # NOTE: This file location must be inside your chrooted environment. #rand_file random.data # Key manager specific options. # If TLS is enabled you will need to specify paths to the domain # certificate and key that Kore will load. This loading is done # from the keymgr (separate process) and all paths must be relative # to the keymgr_root configuration option. # # keymgr_root The root path the keymgr will chdir into. # If chroot was not disable at startup time # the keymgr process will chroot into here. # # keymgr_runas The user to run the keymgr as. # # If privsep and chrooting is enabled at startup time but these # configuration options were not set, they will take over the # values from the 'root' and 'runas' configuration options. # #keymgr_root #keymgr_runas # Filemap settings # filemap_index Name of the file to be used as the directory # index for a filemap. #filemap_index index.html # HTTP specific settings. # http_header_max Maximum size of HTTP headers (in bytes). # # http_header_timeout Timeout in seconds for receiving the # HTTP headers before the connection is closed. # # http_body_max Maximum size of an HTTP body (in bytes). # If set to 0 disallows requests with a body # all together. # # http_body_timeout Timeout in seconds for receiving the # HTTP body in full before the connection # is closed with an 408. # # http_body_disk_offload Number of bytes after which Kore will use # a temporary file to hold the HTTP body # instead of holding it in memory. If set to # 0 no disk offloading will be done. This is # turned off by default. # # http_body_disk_path Path where Kore will store any temporary # HTTP body files. # # http_keepalive_time Maximum seconds an HTTP connection can be # kept alive by the browser. # (Set to 0 to disable keepalive completely). # # http_hsts_enable Send Strict Transport Security header in # all responses. Parameter is the age. # (Set to 0 to disable sending this header). # # http_request_limit Limit the number of HTTP requests workers # can queue up. # # http_request_ms The number of milliseconds workers can max # spend inside the HTTP processing loop. # #http_header_max 4096 #http_header_timeout 10 #http_body_max 1024000 #http_body_timeout 60 #http_keepalive_time 0 #http_hsts_enable 31536000 #http_request_limit 1000 #http_request_ms 10 #http_body_disk_offload 0 #http_body_disk_path tmp_files # Websocket specific settings. # websocket_maxframe Specifies the maximum frame size we can receive # websocket_timeout Specifies the time in seconds before a websocket # connection would be closed due to inactivity. #websocket_maxframe 16384 #websocket_timeout 120 # Configure the number of available threads for background tasks. #task_threads 2 # Load modules (you can load multiple at the same time). # An additional parameter can be specified as the "onload" function # which Kore will call when the module is loaded/reloaded. load contrib/examples/generic/example.module example_load # Load a python file (if built with PYTHON=1) #python_import src/index.py example_load # Validators # validator name type regex|function # validator v_example function v_example_func validator v_regex regex ^/test/[a-z]*$ validator v_number regex ^[0-9]*$ validator v_session function v_session_validate # Specify what TLS version to be used. Default is TLSv1.2 # Allowed values: # 1.2 for TLSv1.2 (default) # 1.0 for TLSv1.0 # both for TLSv1.0 and TLSv1.2 #tls_version 1.2 # Specify the TLS ciphers that will be used. #tls_cipher ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!kRSA:!kDSA # Required DH parameters for TLS. #tls_dhparam dh2048.pem # OpenBSD specific settings. # Add more pledges if your application requires more privileges. # All worker processes call pledge(2) after dropping privileges # (even if -rn was specified). # By default Kore will use the following promises: "stdio rpath inet error" #pledge dns wpath # Authentication configuration # # Using authentication blocks you can define a standard way for # Kore to validate your users. In the example below we create # a authentication block called auth_example, which requires # a cookie (session_id) to be set. # # If no cookie is present or the cookie is not valid according # to the set validator, Kore will redirect the browser to the # URI set in authentication_uri. # # Page handlers can be bound to authentication by specifying # authentication block at the end of the page directive (see below). authentication auth_example { # The authentication type denotes the way the user should # be authenticated. # # Allow values: # - cookie (checks for the cookie presence + pass to validator) # - header (checks for header presence + pass to validator) # - request (passes the http_request to the validator) # # Use cases for request could for example be IP based ACLs or # any other criteria that can be extracted from a http_request. # # The request type does not need an authentication_validator. # authentication_type cookie # The name of whatever we are looking for. authentication_value session_id # The validator that will be called to verify the cookie. # Note this is YOUR validator, Kore does not have built-in # session support. You must add this manually using your # preferred method (Storing it in postgres, redis, ...) authentication_validator v_session # The URI Kore will redirect to if a authentication fails. # If this is not set, Kore will return a simple 403. authentication_uri /private } # Domain configuration # # Each domain configuration starts with listing what domain # the directives that follow are to be applied upon. # # Additionally you can specify the following in a domain configuration: # # accesslog # - File where all requests are logged. # # NOTE: due to current limitations the client_verify CA path # MUST be in the 'root' of the Kore workers, not the keymgr. # # client_verify [CA] [optional CRL] # - Turns on client verification, requiring the client to # send a certificate that will be verified by the given CA. # client_verify_depth [depth] # - Configure the depth for x509 chain validation. # By default 1. # # Handlers # # Handlers are either static (for fixed paths) or dynamic. # Dynamic handlers take a POSIX regular expression as its path. # # Syntax: # handler path module_callback [auth block] # # Note that the auth block is optional and if set will force Kore to # authenticate the user according to the authentication block its settings # before allowing access to the page. # Example domain that responds to localhost. domain localhost { certfile cert/server.crt certkey cert/server.key accesslog /var/log/kore_access.log # Page handlers with no authentication required. static /css/style.css serve_style_css static / serve_index static /intro.jpg serve_intro static /b64test serve_b64test static /upload serve_file_upload static /lock-test serve_lock_test static /validator serve_validator static /params-test serve_params_test static /private serve_private # Restrict some URIs to certain methods restrict /private post restrict /validator post get head # Page handlers with authentication. static /private/test serve_private_test auth_example # Allow access to files from the directory static_files via # the /files/ URI. # # Note the directory given must be relative to the root configuration # option. filemap /files/ static_files # Configure /params-test POST to only accept the following parameters. # They are automatically tested against the validator listed. # If the validator would fail Kore will automatically remove the # failing parameter, indicating something was wrong with it. # Any parameters not present in the params block are also filtered out. params post /params-test { validate test1 v_example validate test2 v_regex } # Configure a GET parameter that /params-test can received. As before # this is validated against the validator and removed if validation # fails. All extra parameters in the GET query are filtered out. params get /params-test { validate arg1 v_example validate id v_number } # Configure a params block for allowed parameters in the # querystring when performing a POST against /params-test. # You do this by prefixing the method with the qs: marker. # In the param blocks below we allow the parameter "post_id" # in the querystring validated by v_number when a POST is # done against the supplied URL. params qs:post /params-test { validate post_id v_number } } #domain domain.com { # certfile cert/other/server.crt # certkey cert/other/server.key # accesslog /var/log/other_kore_access.log # client_verify /other/ca.crt # client_verify_depth 1 # static /css/style.css serve_style_css # static / serve_index # dynamic ^/[a-z0-9_]*$ serve_profile #} kore-3.3.1/examples/000077500000000000000000000000001347522026400143015ustar00rootroot00000000000000kore-3.3.1/examples/Makefile000066400000000000000000000015571347522026400157510ustar00rootroot00000000000000# # Build all relevant examples. # This only exists to quickly test building all examples. # # Kore must be built with PGSQL=1 TASKS=1 PYTHON=1 to get all # of the below examples to build correctly. # # Don't run this directly, run it from the top level as # $ make releng-build-examples # CURDIR= $(shell pwd) KODEV= /tmp/kore_releng/bin/kodev EXAMPLES= async-curl \ cookies \ cpp \ generic \ headers \ integers \ memtag \ messaging \ nohttp \ parameters \ pgsql \ pgsql-sync \ pipe_task \ python-async \ python-echo \ python-pgsql \ sse \ tasks \ tls-proxy \ upload \ video_stream \ websocket \ all: @for example in $(EXAMPLES); do \ cd $$example; \ $(KODEV) clean && $(KODEV) build || exit 1; \ cd $(CURDIR); \ done clean: @for example in $(EXAMPLES); do \ cd $$example; \ $(KODEV) clean; \ cd $(CURDIR); \ done kore-3.3.1/examples/async-curl/000077500000000000000000000000001347522026400163615ustar00rootroot00000000000000kore-3.3.1/examples/async-curl/.gitignore000066400000000000000000000000461347522026400203510ustar00rootroot00000000000000*.o .flavor .objs ht.so assets.h cert kore-3.3.1/examples/async-curl/README.md000066400000000000000000000004771347522026400176500ustar00rootroot00000000000000Kore asynchronous libcurl integration example. This example demonstrates how you can use the asynchronous libcurl api from Kore to perform HTTP client requests, or FTP requests, or send emails all in an asynchronous fashion. Run: ``` $ kodev run $ curl https://127.0.0.1:8888 $ curl https://127.0.0.1:8888/ftp ``` kore-3.3.1/examples/async-curl/conf/000077500000000000000000000000001347522026400173065ustar00rootroot00000000000000kore-3.3.1/examples/async-curl/conf/async-curl.conf000066400000000000000000000002711347522026400222350ustar00rootroot00000000000000# ht configuration bind 127.0.0.1 8888 workers 1 tls_dhparam dh2048.pem pledge dns domain * { certfile cert/server.pem certkey cert/key.pem static / http static /ftp ftp } kore-3.3.1/examples/async-curl/conf/build.conf000066400000000000000000000017251347522026400212610ustar00rootroot00000000000000# ht build config # You can switch flavors using: kodev flavor [newflavor] # Set to yes if you wish to produce a single binary instead # of a dynamic library. If you set this to yes you must also # set kore_source together with kore_flavor. single_binary=yes kore_source=../../ kore_flavor=CURL=1 # The flags below are shared between flavors cflags=-Wall -Wmissing-declarations -Wshadow cflags=-Wstrict-prototypes -Wmissing-prototypes cflags=-Wpointer-arith -Wcast-qual -Wsign-compare cxxflags=-Wall -Wmissing-declarations -Wshadow cxxflags=-Wpointer-arith -Wcast-qual -Wsign-compare # Mime types for assets served via the builtin asset_serve_* #mime_add=txt:text/plain; charset=utf-8 #mime_add=png:image/png #mime_add=html:text/html; charset=utf-8 dev { # These flags are added to the shared ones when # you build the "dev" flavor. cflags=-g cxxflags=-g } #prod { # You can specify additional flags here which are only # included if you build with the "prod" flavor. #} kore-3.3.1/examples/async-curl/src/000077500000000000000000000000001347522026400171505ustar00rootroot00000000000000kore-3.3.1/examples/async-curl/src/ftp.c000066400000000000000000000040771347522026400201150ustar00rootroot00000000000000/* * Copyright (c) 2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * This example is the same as the HTTP one (see src/http.c) except * we fetch an FTP URL. */ #include #include #include int ftp(struct http_request *); static int state_setup(struct http_request *); static int state_result(struct http_request *); static struct http_state states[] = { KORE_HTTP_STATE(state_setup), KORE_HTTP_STATE(state_result) }; int ftp(struct http_request *req) { return (http_state_run(states, 2, req)); } static int state_setup(struct http_request *req) { struct kore_curl *client; client = http_state_create(req, sizeof(*client), NULL); if (!kore_curl_init(client, "http://ftp.eu.openbsd.org/pub/OpenBSD/README")) { http_response(req, 500, NULL, 0); return (HTTP_STATE_COMPLETE); } kore_curl_bind_request(client, req); kore_curl_run(client); req->fsm_state = 1; return (HTTP_STATE_RETRY); } static int state_result(struct http_request *req) { size_t len; const u_int8_t *body; struct kore_curl *client; client = http_state_get(req); if (!kore_curl_success(client)) { kore_curl_logerror(client); http_response(req, 500, NULL, 0); } else { kore_curl_response_as_bytes(client, &body, &len); http_response(req, HTTP_STATUS_OK, body, len); } kore_curl_cleanup(client); return (HTTP_STATE_COMPLETE); } kore-3.3.1/examples/async-curl/src/http.c000066400000000000000000000076051347522026400203030ustar00rootroot00000000000000/* * Copyright (c) 2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * This example demonstrates how easy it is to perform asynchronous * HTTP client requests using the integrated libcurl support. * * In this example we setup 2 states for an HTTP request: * 1) setup * We initialize the HTTP request and fire it off. * This will put our HTTP request to sleep and it be woken up * by Kore when a response is available or something went wrong. * * 2) result * After we have woken up we have access to the result. */ #include #include #include int http(struct http_request *); static int state_setup(struct http_request *); static int state_result(struct http_request *); /* Our states. */ static struct http_state states[] = { KORE_HTTP_STATE(state_setup), KORE_HTTP_STATE(state_result) }; /* Transcend into the HTTP state machine for a request. */ int http(struct http_request *req) { return (http_state_run(states, 2, req)); } /* * Setup the HTTP client request using the integrated curl API and the easy * to use HTTP client api. */ static int state_setup(struct http_request *req) { struct kore_curl *client; client = http_state_create(req, sizeof(*client), NULL); /* Initialize curl. */ if (!kore_curl_init(client, "https://kore.io")) { http_response(req, 500, NULL, 0); return (HTTP_STATE_COMPLETE); } /* Setup our HTTP client request. */ kore_curl_http_setup(client, HTTP_METHOD_GET, NULL, 0); /* Add some headers. */ kore_curl_http_set_header(client, "x-source", "from-example"); /* We could opt to override some settings ourselves if we wanted. */ /* curl_easy_setopt(client->handle, CURLOPT_SSL_VERIFYHOST, 0); */ /* curl_easy_setopt(client->handle, CURLOPT_SSL_VERIFYPEER, 0); */ /* * Bind the HTTP client request to our HTTP request so we get woken * up once a response is available. * * This will put us to sleep. */ kore_curl_bind_request(client, req); /* * Now fire off the request onto the event loop. */ kore_curl_run(client); /* Make sure we go onto the next state once woken up. */ req->fsm_state = 1; /* Tell Kore we can't complete this immediately. */ return (HTTP_STATE_RETRY); } /* * This state is called when a result for the HTTP request call is * available to us. */ static int state_result(struct http_request *req) { size_t len; const u_int8_t *body; const char *header; struct kore_curl *client; /* Get the state attached to the HTTP request. */ client = http_state_get(req); /* Check if we were succesfull, if not log an error. */ if (!kore_curl_success(client)) { kore_curl_logerror(client); http_response(req, 500, NULL, 0); } else { /* * Success! We now have the body available to us. */ kore_curl_response_as_bytes(client, &body, &len); /* We could check the existance of a header: */ if (kore_curl_http_get_header(client, "server", &header)) printf("got server header: '%s'\n", header); /* * Respond to our client with the status and body from * the HTTP client request we did. */ http_response(req, client->http.status, body, len); } /* Cleanup. */ kore_curl_cleanup(client); /* State is now finished. */ return (HTTP_STATE_COMPLETE); } kore-3.3.1/examples/cookies/000077500000000000000000000000001347522026400157355ustar00rootroot00000000000000kore-3.3.1/examples/cookies/README.md000066400000000000000000000002551347522026400172160ustar00rootroot00000000000000This example shows cookies API usage * Simple key value cookie * Complex cookie with RFC 6265 features * Mix with cookie formatted in the header Run: ``` # kodev run ``` kore-3.3.1/examples/cookies/conf/000077500000000000000000000000001347522026400166625ustar00rootroot00000000000000kore-3.3.1/examples/cookies/conf/build.conf000066400000000000000000000007471347522026400206400ustar00rootroot00000000000000# generic build config # You can switch flavors using: kodev flavor [newflavor] # The cflags below are shared between flavors cflags=-Wall -Wmissing-declarations -Wshadow cflags=-Wstrict-prototypes -Wmissing-prototypes cflags=-Wpointer-arith -Wcast-qual -Wsign-compare dev { # These cflags are added to the shared ones when # you build the "dev" flavor. cflags=-g } #prod { # You can specify additional CFLAGS here which are only # included if you build with the "prod" flavor. #} kore-3.3.1/examples/cookies/conf/cookies.conf000066400000000000000000000003661347522026400211720ustar00rootroot00000000000000# Placeholder configuration bind 127.0.0.1 8888 load ./cookies.so tls_dhparam dh2048.pem domain * { certfile cert/server.pem certkey cert/key.pem static / serve_cookies static /secure serve_cookies static /vault serve_cookies } kore-3.3.1/examples/cookies/src/000077500000000000000000000000001347522026400165245ustar00rootroot00000000000000kore-3.3.1/examples/cookies/src/cookies.c000066400000000000000000000037771347522026400203420ustar00rootroot00000000000000/* * Copyright (c) 2017 Stanislav Yudin * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include static char *html = "

Reload this page

"; int serve_cookies(struct http_request *); int serve_cookies(struct http_request *req) { char *value; struct http_cookie *cookie; http_populate_cookies(req); if (http_request_cookie(req, "Simple", &value)) kore_log(LOG_DEBUG, "Got simple: %s", value); if (http_request_cookie(req, "Complex", &value)) kore_log(LOG_DEBUG, "Got complex: %s", value); if (http_request_cookie(req, "Formatted", &value)) kore_log(LOG_DEBUG, "Got formatted: %s", value); /* no expire, no maxage for current path. */ http_response_cookie(req, "Simple", "Hello World!", req->path, 0, 0, NULL); /* expire, no maxage, for /secure. */ http_response_cookie(req, "Complex", "Secure Value!", "/secure", time(NULL) + (1 * 60 * 60), 0, NULL); /* maxage, no httponly, for current path. */ http_response_cookie(req, "key", "value", req->path, 0, 60, &cookie); cookie->flags &= ~HTTP_COOKIE_HTTPONLY; /* set formatted cookie via header directly. */ http_response_header(req, "set-cookie", "Formatted=TheValue; Path=/vault; HttpOnly"); http_response(req, 200, html, strlen(html)); return (KORE_RESULT_OK); } kore-3.3.1/examples/cpp/000077500000000000000000000000001347522026400150635ustar00rootroot00000000000000kore-3.3.1/examples/cpp/.gitignore000066400000000000000000000000371347522026400170530ustar00rootroot00000000000000*.o .objs cpp.so assets.h cert kore-3.3.1/examples/cpp/README.md000066400000000000000000000012021347522026400163350ustar00rootroot00000000000000Kore example showing how to use C++ support! All functions accessible to kore must have their prototypes wrapped with the extern keyword like so: ``` extern ā€œCā€ { int pageA(struct http_request *); int pageB(struct http_request *); int validatorA(struct http_request *, char *); } ``` In order to run this example with the default C++ settings (default compiler dialect, libstdc++): ``` # kodev run ``` In order to run with a specific dialect and C++ runtime: ``` # env CXXSTD=c++11 CXXLIB=c++ kodev run ``` You can also supply your own compiler combined with the above: ``` # env CC=clang++ CXXSTD=c++11 CXXLIB=c++ kodev run ``` kore-3.3.1/examples/cpp/conf/000077500000000000000000000000001347522026400160105ustar00rootroot00000000000000kore-3.3.1/examples/cpp/conf/build.conf000066400000000000000000000011241347522026400177540ustar00rootroot00000000000000# cpp build config # You can switch flavors using: kodev flavor [newflavor] # The cflags below are shared between flavors cflags=-Wall -Wmissing-declarations -Wshadow cflags=-Wstrict-prototypes -Wmissing-prototypes cflags=-Wpointer-arith -Wcast-qual -Wsign-compare cxxflags=-Wall -Wmissing-declarations -Wshadow cxxflags=-Wpointer-arith -Wcast-qual -Wsign-compare dev { # These cflags are added to the shared ones when # you build the "dev" flavor. cflags=-g cxxflags=-g } #prod { # You can specify additional CFLAGS here which are only # included if you build with the "prod" flavor. #} kore-3.3.1/examples/cpp/conf/cpp.conf000077500000000000000000000002461347522026400174460ustar00rootroot00000000000000# Placeholder configuration bind 127.0.0.1 8888 load ./cpp.so tls_dhparam dh2048.pem domain * { certfile cert/server.pem certkey cert/key.pem static / page } kore-3.3.1/examples/cpp/dh2048.pem000077500000000000000000000006471347522026400165110ustar00rootroot00000000000000-----BEGIN DH PARAMETERS----- MIIBCAKCAQEAn4f4Qn5SudFjEYPWTbUaOTLUH85YWmmPFW1+b5bRa9ygr+1wfamv VKVT7jO8c4msSNikUf6eEfoH0H4VTCaj+Habwu+Sj+I416r3mliMD4SjNsUJrBrY Y0QV3ZUgZz4A8ARk/WwQcRl8+ZXJz34IaLwAcpyNhoV46iHVxW0ty8ND0U4DIku/ PNayKimu4BXWXk4RfwNVP59t8DQKqjshZ4fDnbotskmSZ+e+FHrd+Kvrq/WButvV Bzy9fYgnUlJ82g/bziCI83R2xAdtH014fR63MpElkqdNeChb94pPbEdFlNUvYIBN xx2vTUQMqRbB4UdG2zuzzr5j98HDdblQ+wIBAg== -----END DH PARAMETERS-----kore-3.3.1/examples/cpp/src/000077500000000000000000000000001347522026400156525ustar00rootroot00000000000000kore-3.3.1/examples/cpp/src/cpp.cpp000077500000000000000000000021541347522026400171450ustar00rootroot00000000000000/* * Copyright (c) 2015 Jonathan Goodman * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include "example_class.h" extern "C" { int page(struct http_request *); } int page(struct http_request *req) { example_class example; const char *str = example.a(); http_response(req, 200, static_cast(const_cast(str)), strlen(str)); return (KORE_RESULT_OK); } kore-3.3.1/examples/cpp/src/example_class.cpp000066400000000000000000000016741347522026400212060ustar00rootroot00000000000000/* * Copyright (c) 2015 Jonathan Goodman * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include "example_class.h" example_class::example_class() { } example_class::~example_class() { } const char * example_class::a() { return "Hello world!"; } kore-3.3.1/examples/cpp/src/example_class.h000066400000000000000000000017551347522026400206530ustar00rootroot00000000000000/* * Copyright (c) 2015 Jonathan Goodman * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #ifndef ____example_class__ #define ____example_class__ #include class example_class { public: example_class(); ~example_class(); const char *a(); }; #endif /* defined(____example_class__) */ kore-3.3.1/examples/generic/000077500000000000000000000000001347522026400157155ustar00rootroot00000000000000kore-3.3.1/examples/generic/README.md000066400000000000000000000003341347522026400171740ustar00rootroot00000000000000Generic Kore application that shows off a few things: * File uploads (/upload) * Authentication blocks (/private) * base64 encoding tests (/b64test) * Parameter validator tests (/params-test) Run: ``` # kodev run ``` kore-3.3.1/examples/generic/assets/000077500000000000000000000000001347522026400172175ustar00rootroot00000000000000kore-3.3.1/examples/generic/assets/index.html000066400000000000000000000003471347522026400212200ustar00rootroot00000000000000 Your KORE module worked!

Your first Kore module worked.

kore-3.3.1/examples/generic/assets/intro.jpg000066400000000000000000031430361347522026400210660ustar00rootroot00000000000000’Ų’ąJFIFHH’ā XICC_PROFILE HLinomntrRGB XYZ Ī 1acspMSFTIEC sRGBöÖÓ-HP cprtP3desc„lwtptšbkptrXYZgXYZ,bXYZ@dmndTpdmddĈvuedL†viewŌ$lumiųmeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQĢXYZ XYZ o¢8õXYZ b™·…ŚXYZ $ „¶ĻdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view¤ž_.ĻķĢ \žXYZ L VPWēmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ĮĘĖŠÕŪąåėšöū %+28>ELRY`gnu|ƒ‹’𔩱¹ĮÉŃŁįéņś &/8AKT]gqz„Ž˜¢¬¶ĮĖÕąėõ !-8COZfr~Š–¢®ŗĒÓąģł -;HUcq~ŒšØ¶ÄÓįšž +:IXgw†–¦µÅÕåö'7HYj{ŒÆĄŃćõ+=Oat†™¬æŅåų 2FZn‚–Ŗ¾Ņēū  % : O d y  ¤ ŗ Ļ å ū  ' = T j  ˜ ® Å Ü ó " 9 Q i € ˜ ° Č į ł  * C \ u Ž § Ą Ł ó & @ Z t Ž © Ć Ž ų.Id›¶Ņī %A^z–³Ļģ &Ca~›¹×õ1OmŒŖÉč&Ed„£Ćć#Ccƒ¤Åå'Ij‹­Īš4Vx›½ą&Il²ÖśAe‰®Ņ÷@eŠÆÕś Ek‘·Ż*QwžÅģ;cвŚ*R{£ĢõGp™Ćģ@j”¾é>i”æź  A l ˜ Ä š!!H!u!”!Ī!ū"'"U"‚"Æ"Ż# #8#f#”#Ā#š$$M$|$«$Ś% %8%h%—%Ē%÷&'&W&‡&·&č''I'z'«'Ü( (?(q(¢(Ō))8)k))Š**5*h*›*Ļ++6+i++Ń,,9,n,¢,×- -A-v-«-į..L.‚.·.ī/$/Z/‘/Ē/ž050l0¤0Ū11J1‚1ŗ1ņ2*2c2›2Ō3 3F33ø3ń4+4e4ž4Ų55M5‡5Ā5ż676r6®6é7$7`7œ7×88P8Œ8Č99B99¼9ł:6:t:²:ļ;-;k;Ŗ;č<' >`> >ą?!?a?¢?ā@#@d@¦@ēA)AjA¬AīB0BrBµB÷C:C}CĄDDGDŠDĪEEUEšEŽF"FgF«FšG5G{GĄHHKH‘H×IIcI©IšJ7J}JÄK KSKšKāL*LrLŗMMJM“MÜN%NnN·OOIO“OŻP'PqP»QQPQ›QęR1R|RĒSS_SŖSöTBTTŪU(UuUĀVV\V©V÷WDW’WąX/X}XĖYYiYøZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`Ŗ`üaOa¢aõbIbœbšcCc—cėd@d”dée=e’eēf=f’fčg=g“géh?h–hģiCišińjHjŸj÷kOk§k’lWlÆmm`m¹nnknÄooxoŃp+p†pąq:q•qšrKr¦ss]søttptĢu(u…uįv>v›vųwVw³xxnxĢy*y‰yēzFz„{{c{Ā|!||į}A}”~~b~Ā#„å€G€Ø kĶ‚0‚’‚ōƒWƒŗ„„€„ć…G…«††r†×‡;‡ŸˆˆiˆĪ‰3‰™‰žŠdŠŹ‹0‹–‹üŒcŒŹ1˜’ŽfŽĪ6žnÖ‘?‘Ø’’z’ć“M“¶” ”Š”ō•_•É–4–Ÿ— —u—ą˜L˜ø™$™™üšhšÕ›B›Æœœ‰œ÷dŅž@ž®ŸŸ‹Ÿś i Ų”G”¶¢&¢–££v£ę¤V¤Ē„8„©¦¦‹¦ż§n§ąØRØÄ©7©©ŖŖ««u«é¬\¬Š­D­ø®-®”ÆƋ°°u°ź±`±Ö²K²Ā³8³®“%“œµµŠ¶¶y¶š·h·ąøYøŃ¹J¹Āŗ;ŗµ».»§¼!¼›½½¾ ¾„¾’æzæõĄpĄģĮgĮćĀ_ĀŪĆXĆŌÄQÄĪÅKÅČĘFĘĆĒAĒæČ=ȼÉ:ɹŹ8Ź·Ė6˶Ģ5̵Ķ5͵Ī6ζĻ7ĻøŠ9ŠŗŃ<ѾŅ?ŅĮÓDÓĘŌIŌĖÕNÕŃÖUÖŲ×\׹ŲdŲčŁlŁńŚvŚūŪ€Ü܊ŻŻ–ŽŽ¢ß)߯ą6ą½įDįĢāSāŪćcćėäsäüå„ę ę–ēē©č2č¼éF銟[źåėpėūģ†ķķœī(ī“ļ@ļĢšXšåńrń’ņŒóó§ō4ōĀõPõŽömöū÷ŠųųØł8łĒśWśēūwüü˜ż)żŗžKžÜ’m’’’į˜ExifMM*V^(‡ifHH    ˜’ŪC        ’ŪC  ’Ą˜ "’Ä ’ĵ}!1AQa"q2‘”#B±ĮRŃš$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤„¦§Ø©Ŗ²³“µ¶·ø¹ŗĀĆÄÅĘĒČÉŹŅÓŌÕÖ×ŲŁŚįāćäåęēčéźńņóōõö÷ųłś’Ä ’ĵw!1AQaq"2B‘”±Į #3RšbrŃ $4į%ń&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤„¦§Ø©Ŗ²³“µ¶·ø¹ŗĀĆÄÅĘĒČÉŹŅÓŌÕÖ×ŲŁŚāćäåęēčéźņóōõö÷ųłś’Ś ?ņĖn2sŌUȆ~øŖŃ”ĻØ­Ūćjƒé_vÉ_RxW ެG÷† éP¼ńҬGĄ¢f2'S€=jxEAĪ1Ö§Œ }*®+2xĻż³N‹=8v¦Eź8ĶKē8½ å%^ŻjHĄź éMQķÓŽž3ĄiŠÄØbjXńŸAPĘpzœŌČsJE\zš1’I©£Ī03Ņ¢N LœyéJā°š:éRÄpæAŠbšQ•õ„r­”4}±Ą=ićŽØÓ<•*‘Ś€‡ ō©¢ØØŌ8Ķ>>9PKD |Ąz x8Ī=é±ń޹©;»ŠĆŌ£Æ5"~4€įxĻēOQ…÷ v2Į©u¦Gż*_Ļ&X‘͊–<`gwÖ¢SĘ:•~ąĮÅ×ańc֞sž“ÕŪ½=G>¹¢ą“%ˆ`uśT‘ƒŠx^=?:–1•ł@śšžb–£”|øéRć8tŒÓŽ9ąv§xŸJ9”į{@<Ō‘šz­2>X`ŌØ31Ņō"Ć¢7׎„ū¼ b óœSĘ3œgŠ9†Ń"‘‘Ļ8©…śŌhGćŠW$.9¤õ2>ø§ĘsŸ„gKpT}: ³kp®1œ0ŌÜ|®×.Ę8ėŠ’EEg8㊚0=čøģL˜$`ÓÓīņNj$©sŽF)\$“£vČėO>ŌĄ>N¼‘NŒœ ńÅ&Ä£;° H@ēšjCėOŚ9äRę-DT^3õ©Ó'ŸZ`cśŌ€ Œxcžć޾ōńžĒ§J…HŒäŽjPGP .4®Jۃפ-óc=©3ĒįUånźwb±ŖķÆķ-M]5Ą8ĻVÄ øĆÅsI‚9ęµģ®@ÉäuÆ2uĻV1V²6 ń`ž TšĻķ5fŅRWÆ’^ÆÄ¹ßÖŗ)Ķ=Œ§ nsķjüÕI£(ųĮČļ]kĄ1ĒėYzŌ1+Ēŗ”£©ĒR”ZŠÅPvŽpE#0w©oc1@Xžy®rźūkž¹ķ]šgéI;LĄ<Š­<ĆÆ_NkęöNŻ_\Ó”ŠrIÜ+^d‘1ƒwL‹Tzt¬Łdģ:Ōŗ£åńœĪ2c½LŃµ(µ”h(É<Ņ»|£'§„Cš=‡īų¬·:-d+IāĒæ­5%#€Ēš†CŠqĒ™ĮĪH¤ŹÜ¹įšXō¦¼¤r Z«¼`抍Ÿ‚2x¦—Q7іd”ą`äT,łĘ8öØw€=é s€XU+t%¢|甂„¾ć±d0ČēµH€*Ŗ°ąt5(>žÕ›z^…˜ˆķœŌ±¶U[åć"¤°ēŸZÅ_”mgøśŌ”½ńŠ«~‡šŁTf78|§ƒ@ÉĄĻNµ*dż*!÷ø©S­g&8¤MŒńW­ó·¦*”yĘ}jķ£ ŌUAkئō-D0ę§^^•xČē ēš™qŽøćŠčv1Ż\\ü£õ§FH>‚›œ(ĘG‹Ó=1O˜ q7#œqR㊨­‚99Ē­+¶:µJD“JĶ–ėLwĒz…Ÿ ļPK'ˌóŠ|āh–GäūUy¦ąĘ*¼³ńUfž‡sh&[pIļO‰łē€+9§®jq!ć56+1N?¬ŁJ ¾ÄzV rq×ń«0Ė“ą1śÖŠØ‘” ŁŅFŹyījå° 3\ķ…Š†8ō«āļÕÕ ŠĘ. é­€ŁŽ¹Øē’:„ŃņéļMk² '’•mķU‰”Yo„ÆaM†c¼n<÷Ø`Ÿ<āšßƒMŌÓAF6ÜӎEĄĒåSƵŸŠĖ€’8Čć­N³¬+—b=)ʧq8$1”Œzּȷ[Ø«zeņ:}ģ:×7āI¶ź,ń¶s[TŖ¹.ŒŌ]ģi@r1śŅ]œtĶRÓÆUÓyŸw2ČcYF¢h¹DB¬y5v$IVJ6A?ZŠ“^NhŒµ“.ž¼qQ]}Ž&œĶŒ~UĆøjAIA,yąqVąĒŅ«¶>Õb·®zVH·±'|sļJSŽ;w¢6ē“ō©0 ükDīOA›0F OƒŚ£?—ćO>ø¦œcÆz“u0zt&‡8ē'8ā©16öŖ×ƒŒā<„jœŽ u5†•Ābr@85]Ÿ·?ZsµD/ßĻ&ٲDšHäÕµ øö¦iŹ3Č āÆJ>_„\#uvLˆķ¤$ążjÜ_sŠ¢~Y3ÖÆBxⵃ!Ž …ėQO*Æę›vN PŸ~ī3‘W)X’ÅĆäg5FF!ø'šRĢœņin\ņ¬„+–‘nĶŗpjź>xÖmŗ•ć=jżÆIČļUM“L·'‹vI♪ql}qV£/ź;Ō ±Ått3¹ÄŽ7ļų"„Ō­Łg`sŒÕ}‡…y“æ1Õ X““mqV`½eīG”õ¬±Ēsšz‘Œr©Shn77āŌ3ēÓ5< Ŗp}q\ģoŽꬥ’0ĘįÅȯM÷/øžŲŖrHsŽx§Y8a‚FئR$ć„jää‰å³°õlōéSCŌ`ŸĪ”īc94ų ĘsҤe·`ØóǓޢrsųŠ”ϹŖę'”pūÜœŅš:ŅcžžŲ”÷¢ģ,!ĮM!8挐Ÿ—ę8¦Rš %Q@­£­ōć„cŠv1ų÷ }ŃĻ4ŚrtĒ  ž9ėB‚3Ž3@J(¢€ \ŸZJ(sĘ3IEQEQEć§ņ¤¢Š\’*Olš(„ĮĮ ńüiHēøā“ŖēŅ”õÅš{P8üE@Å&xļ@ Ļ=ixĘ=)½=iXŽßēüis޹ę˜N©ā¢wę€%séQ†8źj2ō›†­JƒŽž§?Zƒ9ļNŠŁązROJj“N?\P—ńü)H:téAĪŽø Ż}h’€Ńß׊u;pŒ§}*X”ŅʘĘ3œTŠ.ĻńĶ’dp9ĶM~ŌķŠ•pėķU6J£¦P{tؐxėV"œqS ćŌTJēR”Ž” ½©ä‘ÅN:ż*łT`äTьŸ§„>‚D‹Š„TØ1éÅ22Nµ&}:ā†Źåc£ĪFO5:žUc CR!ķČÅ"I‘łu©' ¦ƒĮÓūZ.=Ią –>‡°Øc”9©”{ņ)\ćœdńS)㠜Œx=ŗÓמüEĮ¢XóœēT©S’2jėSF3ÓĄ‘qÓ'¦ŒqļQ‚µH©7 "¦Aņ€:Ō(yėҦVōēŠWH£ ©GECć0ć¦O҆Āäˆ2? ‘qӜb¢N~čÅ?ŻżŖDJ: g4ōą`zS©§”9=ØøÉ׌sڜæ{†Į£Cņńœć„=÷Ånū’”ćÅ=>“ŠAÓTˆĒ$ā‹ˆrŒq×ėRĖéLļĒN“ģg”ühl:tóŽÕ®v°'šYŽÕ$žpyŖ’¹9É RjÅŅ3°nó֝ĆšÄj³žēŚ„s‘Ž08®OhīzŖ„yloA6<Ԑ\#6ќā²`l®ŅzsNRU²2 jŖœ “wgE ć®*pIēž+/N”ŗ€~žõ£ łG_J¤Ó9ŖRqܙ3·Šš•pG„D¼cߚxĄdņ;šfkaéĒ~MJ¹ :}ED¹č:c*t÷§qÜrsėœTČ8¾=j$żqR&ńĒZńĄ©öź*!øėĒėR)<ŠŠ–HŸ.1ž•"`Ž8ØĒŻĆSÓ;G¦)Ü qӌūӆ3ԃėM_ŗ1ųR޾ų¤˜ģÉKcō¦§Oœ™¢«˜-ŠrcÓśtėQÆŽĒ„H2HĒJw遟N)ėŸ~i±tėzq?/9©LmйŪÅIŽœœsLc“ҤŽæPX8÷§ōīi0 §&w8¢żÖCż9ĒŖ>S‘ŠLpģ)ē;ˆ @·pĻ„?°9ۊjšĆ±¤CÓ­+–9@ĘrF{Ņ’§/A׎†œ¼µWOåOPyź1H8<ńJ¹ŻĘx¢ācĒOzxĻO֙œ‘ƒÓ­Hæ^Żi śXpĒćA‚3Hƒ#š§ŒĮ#ŒŠ4*ä ©;qœÓWŪ½;·^i‚`Ī §%"ąøĻJxȢ㰨H8©y Eģ}éć§|ūR&ć—“õĮ={~5päSԁ‘ČŖ¶€Ēēå㠚pĪ9źGZEéNĒéJćč=9AJ>ų¤ø4©Ó€:R9yN8§ĒœŸjjŽ8'Šrõōć½8qÓśS×ŲöĄ¦ćŒ÷”z÷éց’(>˜āŸŠõķQ©;AéšzŽē4 ÷Ÿ\qJy#‘Ąõ¦½Ōćī‰é@×˜åąšh”ɐzōāœ8zŠĀæÅ<~TÜdzS—źF)ō}ǃŅ—”Ąō¤€ŅŽ:qĒZEXP?µ74[X•¤õśŌR?•L1Čäԁˆw”Ęį&ZfćÆ8„VĮĒåĶUĻ=iĮøŸ­4‰w,–ĻÓ½80 uŖŪ±ŌŅēŸLÓ hY' ų7ćžE@¬'=ØV'$:jäK¹`?4ō~x$vŖ¹;x8§'¶p)śJÅÅ?/ņĶ;wĪ1×][Ÿ ©»ō4y”ĖQqėOSĮäŌ0ŽG8«1J†ģR$qžjÄG§Óµ@ĄĮǽIAąŸ­UÓD»—"~k—VNG=ŖHē;±’>µž¬w{TØyõ«Uq7ģļœD=*ߞŁ®~ŒN8«°·Npqڵ]•;›6ó|ĆŒsZvķ•Īz×;įē5mnJ/~+xNĘmXŽ€‘žzŌ«£ĀTŸ˜9¬9/ōb=hŠą³Œ±­e±Ÿ+.A3E@sļUdŽåĶĻz˜(#ÆŽęŸ(Ļ ō*ÅH÷¢śjy•ˆ=zŌŽ¹8S£…‡šö”_ Y=ÉķruĄ­-;€8™l6IųV»mŒ„ÖōßC)­ ĒŚ£eń×Ųd$séOvŠö®¤ÓF6£äpEI"®sžŻj-ĶŪzp,Ō‘EĀŚ “ׁORIĄĄĄFįģ)ńē>‚šhB÷ļšxōŠ9ĻJ|Dü0£Ō‘M”|½Ķ ĄtĻ=é¬Üc8¦YĮõę«ģéėŒÕ¹9Ļ5Œ.:VF‘zˆĮĄ'š–(ž Ó‘=zż*ČA“c®)(å” *Ą2*ä|Æ4‘®ÕzTńŽ+XĄ‡+””9ĶJ‹Ē½9ÉÅ=8^¼Ö©r7_Ā¢xĘŽ`ŒńŌ UńUk‰2ƒ[åæ |VŪ@ĘM] :āž£łRTйŠĖ3ųT©Žõ.zŅÕØ”\DįE+—ėEżiˆŹ×-ó *¹9¬'…•>ķv”‡Ö³ļķÕ¢!F+ “īk ŲåeĘO'§ZhČQŌbµ/-6r:£:ģlĀøg·7ŒÅūĆ×Ö§‡Æ­A=ENƒ Ī”JlŠÓæžsŸcU-ÉĮĮ&㜜s]•‘”•Ł*ĶO`r:śŌvĆq~(ĘёŒUE\OBnē­F8#«…yĒåQģ­HøĢu"ž ōō„ ? RGJ,!Ŗ£æ‡M;#ŁL‘@d°ŪÅ[“łÕTlĻZsɆ=E4Ą“ŪĮØ&”©Ōaņzž”מ’Zn@L'%z’~µVęBsА.ŃPJ>j—'mFGžäņ8„ČĪzŒńėĶśŸĪ³½‹,#bęõT°ž•9äóUĢ.Rńq“v¦†ąōŖ^o»Ó£rx„ķĖ”£'?­Nc„T·o—ŽÕ.ģ’JÖ/Bbe<šzPķ“u<śT%³ß½$Ķņœw§q0OR ī Rrq֝sŌę£Ś\vŅę€!sĶ2L.EDņõØäs»æJ¾m,ŽōŌl‘ׄDāޜ½\Ö\Å[Aūøźj"Nī¤R·4m=h½Ä&ī !$t§“śS\õõ4µ`ĻĶžų§)õüĶF£ ö©"挩ŚÄČ:TČȇaŚ­B»¹VŃD½…N=źÄ9“±”÷©‘G¾kx«ܖ?¹Å=€)±Œ y\޵@;y$v„÷Ķ5F :€Žr)sƒŠ€}é:zżć֞Š1ųÓŌŠnNi”é~÷Ņ™Ÿ—4“RéŌŠ:cŅ€ŠRŸoJJ8õćӊ^i3€hżh„R’zB>“ ņµ.>¼ (Ļ8¢€ (4PEPEPEPE)éI@ėéJ;óŠJp?-7·z~xĶ!#¤Œf€Ÿ|zS­;?)ē4Ö Ś€ i`¦HųœT‰H  ]²:♂=qŚ„?+ōž“€dw”ØķÅ <éN F:w§ØązЃėR'Ż÷ ŒõńŸĘ Qր1ŽzŅüØėõ”qž:GŌøō/ÆZ\Šžy—§ ’.§$ūTQ0sš–>¦¾>ö:w$r28©W’>j(Ę0O„OĄś’*i…‰W·P©­ś…㚚<ŌÓę\Ąøē§Z™qž=:Õ]I£*J8ć8©—ć5 7ŠzqĪjT?ōؗ8ō2°œL$\‘×T‘:’1ĶD ;Ō‰ĮČō„v†ÕÉ£pp*A÷†j¹‘pØD‡ĪČcRåb”MĖDjĆÓ¾jDŚ:Õ[VvĄč+NĘŌĖģ=+šX˜ĒVĪø`jODB¼Æ”õł@čš&‰±Ļź)$:ā“…u%”…J†Œ›vŽJX¤ł†&³¦”’9õ–Ģ õÅǩćMīͰŲ8jD9Ļ­R‰ŽŃĻ U‹sŌäRrm>čǧ5$kĘF=ˆØÓµMAŽø„q"PHéœŌ‰ŒŽ1ÅB:ć¹"r1ϵ;čKDėėOAÅ2>=ŗÓĮĒLōźi\ih=›qŽ™$ʊ9=*µÓƒēÕBY³ÉéFˆØEĖBģÓ)©eĮ=ź§AÜāž„œ ?JŹrlė§MGbE\ćÆJz!ĻfÕ3Üä TļĻśŌXŪŪ[BpN1éV–Ē€zSķ!Įg„_…č1MDŹ„T3N‹d|ę®ÄŲŒTqš@čj]£©&®:ӝɓ¾IĪ)ĄŒŽžŌĮŠĘy©…ĒOńŖR1h•Ar0)CtäŠD,TČŠć°>“īČWךC7|•ĶBąīļšz.GįĶ} !sžøÅ]†s“šĪˆHć„[€ĻJWŌ»Ż‡×ŸzU‚˜3€:>֋‰’ Ž:qNQŸ­Fr9Ļ© Ƶ4Å},=~µ'N=Fj0Gv5';x8 PŠ{ĘŪÖ¤Œį‡©ØŌńœõéN€1Ö«q"@8õœ£Ķ7wĶČķJ¼:.2AÓßå(Į9¦ ćƒOL€3łŃp$_CNR00>”ÕĒÆ4©× óėL.;'§ZzżM5ԃ9ナbB ćiė×”¦ĘOæÖ¤ō©øÖ£¢äõįiƧ'ÜSŹš1ļNzóŽ˜é@ś\‘yPzf—·z`üŃĶ Šö pz9ߎœ„cåp{Ņ\Ņ/¦zR‘ŽœŠŲŅæwŒō§©Ē#ҚĖĮĮĒ­(č' P˜Xp6Z;æZq‘“J9Å0BŸÆJބ◽#r EvoŸžqQ]m1d`p)÷*AĻNµ )ž£} c+”ĖóĮĄæ­KŒppq֘±¶3Ļ4ŠÓ+žz3ŗžÖ-Ū°Ś Č5r:ō¬ŲŪ©©ćo˜sҹfŽ•ŲŃBOCŪ­I•`GR*¼sަ¦S“éŠĘż R/[Ļ“`± E^‚äc%¦Mbē*1Šr¹©€åܵāf͟kŒ»į ļšč5g&n<•ĪßdƒÅwįŽšœU7»*ßĖNRĘß!ē'Yœ)l1L.m¼źčcÓA/Ć÷æÕBŪ›9éO¹|óĒJŒēž†®Ś 7ø©Ó©SNČļĒ­&yćŠL‚3ŽŽš—klnČąRŸéMĻ?J^ ź}©\VbzžōĄp\§Æ O$P^£8Īp}i; œ—/RØØŪ€0;w„pnĀ}zÓ½ ž1ޚ>¢ (=;S†2NOćQēQĒŒŌč (ĘiŹ1õ4¼ōŅH›ŒuČœ€ØśÓ©ĶĒą)…Å)1óuć™~¼Ņ;µMŠĢ‘})GOOzjž„u"ŸŠ}j‘"žŸÖ”TeˆR9„CĄ” w>“võ4ųć<Ҍv @p}h#'®)h'š śr}*9×½H„`v4ÉĮ)ß½¹—Ŗķ#ųGzĄŗĮ˜ŸĆšŚÖĪÓ…ļŽ°å<×fmLHĘ$³Ņ®ĄńT“ƒÖ¬Ū¶1ڹS±»EĘP>ķ4.O=iŪžQėREĖdšq[īB,ŚG·×š¾ĘēTą•"[ž:óUČŲ®TźhĮĒCŅÆG§©ßg­6'#>EōŖŅ§Lvā¶ ¹Īhkeī8¦é6Ę#'óMTü+aįj Vr„b”ĢÉSŸJo”O|Vƒ*€9=)DcÆCŠfW9ž!?„(·j¾©×µ@o|QģƝ@§h©WéN#€y j’¶„·q¤‘IżL'ō”Sæ|Såb*•'€§5mSއėJ‘sŠ\rš ” zÕČćą xŽ“P{ ™ķ±„ņH÷Ķhy|zRģ{ ę3|³»„?aėWö­/–=1MR1šSŠO/Žāµ@qŒŅˆ@ķOŁ˜Ė’£­=a8ō­hāQŠu§ł\c(öH\Ędqć×ėVm×mZņ}æZpˆē”éWXM@JŌ±Ž>$ĄöķJĆҬAߊ}5OcOĻJ—>”ĘńJ½;Ę€"pE*ūœSœdR÷ /'ƒN`qֈĒ)\ü”Ž8¦ŃķEQJ™ÉĒ\P3Ū4„ćޜÜšzŠŃH?JZ(h¢€˜S»qłÓXō¤ē±Å<“ŠS֚>ļ„*śzP“Š(¢€ (¢€ (¢€ (¢€ (¢€ ;}(ż){P pž”Ś(Ø''ާØęŸĀ€+1Ąźx¦€iĢ9=čč:ā€O8§äćŠaČö)õ4(?/„*dōü 0~\T‘ƒÅH‚ž(Å*ž=(ZZA֗óĶ Ö†ōéH:ŠE+cšēøē#šj“Ę §®?Ai‚÷ĒJ‘}³QØ“Š8§¦ĮĻ­4ǾĀĘyźM;ć­5?‡ƒĶJ‡ėI±Ų8Ż˜Ņž½°y¦¼'S»ąv„q[°õįqž})s€1œjž¾ōäė@%aąezŅŒēƒŠqBä~=)Bž£>ō ŽĀ”ēŽM;?7¦ ćƒÅ=æ#ЇĻzQŪĶśŠ1ۊć†GćN'¾xÅ!Ī0:ā•Ś§\[c…\@ wąŅõ?J.W@SŪ<õ ēø¦éĆÆRsNāÕī éœę‘Ó¦G“sß„+ČlƒŽN)6qĘzu©Wń”}朊TtŲŖ"ąćTSAœÕ ƒƒėI³ŸCQ(šF£3Dx\Š`dtÅk2 §õ¬ė°UżńÅa8huRÆ®¢ĀĄ(99Ē5^@Љ>†‘ „5ĪĄö§’ šMFy^¼Ō§ÜNā(ēæ>”õīx ÓøļOģ½…S“zĖ Ń‘‚843ėļN+čqM#žŽŌ\–“Ÿ“ĄÓūœć֙· בBƒžłļCJ8Ęw śTŠ00?3Qc$3O<J”Ånؑ2§Æn)sƒėšhé×8ż(ĄĪG„%ĪOZx<`dw¦Fx÷ÅŒS*Ź×&Ž ąp=3Ž¢SĪ2Ų©SĄ•;™§}Iž§Š•>īGj…=y"p=1JL¦­©(Ęў¦„SŒr*DZš~üCR®7$I·,zżjX×L~µ^7>¼÷©‘š£$ŠnéXIܕHķŠR±ōĄōĶ@_9ć=h.1ÜSKMImX² Żči;rjÜzž4żąwąōõŖZõ$V‡Z½øO”ō¬¶|ž:Ӗ\&ܐiI\„$E¹Śų ŒŽ¹©…׏l“X„ĮuśP$ĘGœP¹ō4ī&’k²j¼² 1éTšBOZ\ąpj”DŪ±a_=(ÜÕ][94+qĮ«å%ĪŹÅ­żĮąŠp|Žj²œnƜ§ÉI#;»X±æāŸy$Ō z:z’3ĻŽā©Hv$oǚE=‰ĮķBgœŽ“ Üäg‘M14=µHūTD; ·oĘI"•ŽĄöŠ…š2x©£8P!@¾ŌĀæ-]‰O±,dąĶLķqW 9§©jŌ„ā˜®~niČ0¼g‘Ö”(ģOg…^½L¹l>,=ørŁAĮõA[uśŌ±Jry¦™Om »IUAśÕاOėXI'yõ«Ė…ė‚EošhdÕõ7žŌ<¤ā« W8'éY‘;15©„Ŗ‘É=kURźÄņY\ѵ°G„dÓ­ ͆v{Oaå2*[µVBy'× qkC ThŖó*°UĮ3R‘ėŠ§ar+ITķąõļUr$“øÅģiŹøg„.0qŽ”žŽõ±˜Ķ¼ćE.pā9„rhǶiHĒC֗‡šrńŌņj’Øšv)¬Fņ3Ķ8;Š qӊ^€Å78ØĶWŌ&ņą”» īåcm¹ę„°“zgœcÖ¹»›Ņ’3V­/•($ĆŚźW.—:<ńš­4¤ Q7ŖĖĆUnnŌcē„[Ø­ ’4V ⤁ݹĪkAl“ɳ¦7ɁÓŲŚŠ½ ;iōÄ t4¤§½t'”“EFw`‘ךI($„;”˜TrLĄĻÖØÉzØŲ<}*ŗV”N1S*©h5_ĢP€ēZŠYĄ8™Ŗ-(<īżj¬Ó©ąœTŗš)²_^•0u+Ō{V^€”p~¦›-ÖÕČ~:RUł [¤F“$Ę°µˆĄ˜•Ē'Š’Kœ !Žā9Ŗw3ļIĒZĘ„H“\bȆǧJž3ĮĮŖ»²ŌšŲś 低…±z&ŹēV!cī+>& }jĢ,8ēœUĘBå/#Ó­K½³UżiłĘāµR3q.¤²„(ēӚ­LzUˆFy­T®CVD»2“ФĀ­[®V¤1€0+^[‘{¢\CV"P¦iU1ėS ö«ŒDä:Ū¦X}ę™掕jéé[%bŒzt§ķĒJxéE0!qŽ”Āõ÷«÷j¼¤h æ*„?ßÅ\‘øĒ5™Ø6Öąā¢nČiÄn„v÷ķU<ŽÉĶ#KŠW?9„™g<};Š}½*ؓ¶O¾fsK˜,XSĻ4’qUć“ß­?8^ōŌ„Z‹žČ©‘?J« t«±WÆ5¬z ° JBœwéZŁŽōŒqŒÓKÜQt‹ėIMŻĒ©„V¢č „9~õF*E8Ą}=FÖ¢ Ķ.įļ@Ž“ō<:€ļOVę€,ŗ>”§ńüwÅ5œœę€%-i…²9ėQ—ę“uMœRü*1‚)Ń®xō  œŠ”·Ž£Œu§ņ>¦€?.=©LŠA÷”@č8dć½4±üiĒņ¦H9ćŠcr¹ļBž9Ķ#źi II‘žøØÉĄĄ'4Żć±  Yøīh ?:ŪŽ“€ąšs@A– Œäńž•=Ēlt4²0*&ć<š óĒ5$$ć½E·$d@1ķFžĆŅ„ ŗćŠ3ϵ:AŠAųŠzūŃéšFąē<Š:ć½)¢Š(¢Š(¢Š(¢Š(¤$zŅž”€ }{Šn¤cĻøėF(^i6żjb1ōÖ_Ī€ TyĮėŚ¬08Ød?ZTæJ9‰å)»įšiŹäž§5!ƒ,qĮ<“RA ąPäkdIXźaqŲԐ ćb§DčxöØø\KXLxäUȉńQÜzq߯J”Æ ēl™ĶA$ §Jx?68Ŗ’sŌŠTWqķp»±Č v©#¹_|b©8ĄČļLS†ąĀ“hŚ0FÄr œwÅ\Ž\÷Åb@[w銼›¶‚)Xr§Vx÷ĒZ³3Y1üjX¤u9ÉŖr3t’ŠŲŒҤ­R±°ĻsüŖäG'§J\ĘR‰;Š–1‚Gzsśu§®p:żjn+)Ą•Høź3ĶF889§)ē­4ĀŚ ĒZ~yĄĪqQ!#¦zSӌņFiÜL•pŒÓĒNž;TQ“בÅIŃ{ꋍ&@ōāž¾¼äÓ8Ļõ§Ē>“ī&‰TóĒOZ:tØ× iŹN};…‰b?Ź„ zpy4äįzœš. P0:äS‡ø¦g¤_@M5!Šžµ(nF«ĄĒ"€;š|Ą¢=F0yõüy÷¦vz\ķ4Ó‰ł@isOJ‡Ķł†Ž•,d–b{Ņr¶ƒŒnL§ŽøćÖ¦å>¹ €9< |¾½)să“Oē8ķQ”š{u©g=(Oø ōÉ=©ąŸŹ€xĪy4˜Įü*®'¤±żĢēƒJ8ōÕČćŽ/q×\vŠz{qėN_bG.3žGå `sK˜\£‡ldq֜ģ2*"Ź$ńN øÉȝŅÜ«7¢%‘Œśā„‚};T1[9ą*E Ļ©©rM‹ź<Œēµ9qœóMBJŒĄ«')ø‚;ŅēKsENRųQü‘8» i]¼c•x8ēšjI­”m£88Šz}Ń×"š H?~BJĀē 3NķÅ0gšzśt¤ŅŽ^?.)ć‘õōØĮĮĒ„(ėĘ9„q¹zóŅ•HéÜÓOzŠQųóŅ„&;8dō§®;śP˜Ąäę”{~tŪ ŪŽĀœ£ÆŅ›3Źœø?ZC“č)I psĒZLóżh\€}čøŲįŹ‚M8˜øĘ„8śsŅ•Į!ŻøćŠS€£ŌÓGr{ “?ŪģJPpqótź(cógƃé&S]‡ēč;R'ā2)3Ž2y„ŪŵŠp’j–¢œUŅBÆ&Ŗj¢<NGnŠŽ†CŒsR&A'š‹Øš’2ĘøŖ+µ6šE˜Ū ךŽå²8ōėJ “Å5Šē‚]ĖjčϽ¼A§FŖcŚ@śÕ¹b~D Ö3%.†Eķ¹īJ ń;ć+„– ĖėP5‰ČŻVIY“ČöFÄF8<Ž*TæŗAJŁn:„M £cīóPė®…ŖzXÅŽŲ•Ē9©…Ŗ©­Ći€2 gŠc[œO5*£aģģe,(§`Qå.0Zæ, Œ`ēŋhĮėŠj¢[2ul¢öĄ =ńß½S–·#žµ¶>ÜTR[ē%”“ŲūU*¶%ĆK# HńŽÕŽŻė 6yč;c­Bmd•¹£®ę8=+Ÿ·ÉśÖ¶“.ŁG'8ė[S–ŗ™Ihuöq PO„6üŒ`gŸJ©mr6œ–F·3`cŠõ#5m)EÜ­DĪ5£Ē=*ŒÓ 9 Ī)ŠČIć’’NąÓhøż±‘BŒ;Ōh܌“S ޼V·¹›CŠ3ޘp=jĒzÕy9ā­­*š>ń z`o“æÖ£ørĘsB`)!_ ÓÖLzōŖ”Į$äT¹ƒŠTóvĶķČPvē„`j·„×5&”8XۜV줱ĮÉ5ĶV³±¬!v<Ź|ϽŽ)|܃Ī*‹9= 4IĪsĪ+‰Ōīu(#VŽ}©Éēčk‚@źIļšĖi1ĪOJT|/¹£ŚXN™¹g/ļséÅl[^ģĄ^O½r–ņōĖb®¤ø¬*ö"tĪ·ķŖbÜH ‚MDWŌd×3ö­¹ā –ą“Įė[ź¹“Žø 6{Õó!X°§ßš“püqÖ«nśżiwsNā&fł½8¤Ž T[¹§ w@IJ¹ķޘ)ĆÆq@§Ž©ąę B7wö5\ƒBŽ=)ĆӞ)h±ŽŌŖ3R"枆€ ŠvE :gQ@ ē4Ń霊ăÅ&p1Ž€ĄF)IėL9ķ֛ŽœņhMĆš]Õ RN9#Aü(R}8£w4Ą9ÉėK@h t¢€ ('šĢ:ĻŠj¶M(ėéŠZa霿)ÄsJė@¹ü…&9É„<)„N( T.€‘V_•ć©ØŹąć§§iź tėJ½1“NķŽ€CŠ0sŒÓØ ķ÷„ŪKEbÖ”zō¤=hN1Ž’ƒœq֛– ē”ż)żzv cŌČ\ā¾.ēržsM’3Ę?:œp:Ԋ28éėN㽊ŠĒнmŠwØćQžÕ*Øķ×¾hĖPŸNGj”0j¼xĻ>ł©AÉ#‘Ša—­J™õØ£ō84gåćҋ裀3R 8ī>”ČĘ`ö9©§¦5±-²QĀšy©#ļsŠdtrsR”õ#"•ʵ%@BŽjÄxöTŸ—8©S€sEĘJ>ē\}iéĒ| TkÓ#<Ō™äō®;.s×µH@ļłš„)ąā>ø¢āaž Č©`g<Õ+‰‚œHėH’–ž"*dŅEĮ;č_ųōÅXµ—£Ž*‚ąÆ|Š‘ 9ė\“iž„%(źkĒ'ŹH«PH1Ō燬}ŖĢ2d\ī‘ŌŖ£rČ&„ 0@ĻJɆm¤r~µeeąuõ5„é4l¦­”xž8ØŪ©ėķP €8Éœ¬I늨«ĖR{tōąÕ„pHčh³#o\ńÖ“į”ČĄ&Æė<¦/ ;³5ŽųÅ5I+ĘkUćM§ &Ŗ¶HHåMk ]÷2ž—bé’~”ų×Ҧņr2¤0Z,BfrĮŁh:.׎„AƒŪ‘LPB€7)I ŒQZŖ‰œņ Ö„ź1ĻØ©eqŅ«†ģ9ķS&3€r=sV¤sø“ÉW„ǵ.ļ»Ēn“Äwé֌ŻN)óŠ’rI$ŠĄķNœąpi±·Ģy=(ę4KKņÉéœTŃۃZzgĒ}ź|ńלv¬ŪlŁĪČb¦Ž½źx“ qPóŌš1SŪ¹ĄP3ĒZwd¹Xm5bä8ķŠ9ąT¶ļĒ£éAå˜P:=r=*<ō”ŲńŽž“- ߙeē„Kqœ©aŠ‘šž,™ühø8ŁW8Ąąv§ć©Ķ23Å9O֋Ų-qż:œRFÜõĮ4§‘FĶ«Į9¹…Ź9I ž˜ā§SņņHĻZ„gßŌ⤋¦Ą÷Ŗ¹M$L§jąķJœœÓ;qKßŪG16'ŒńĮ§ń·Ŗąą{T©ļĒ&CĪ@Č5,L6/\õØĮģ3O™„ĒÅŗ‘a)ԌTˆIē¦GZ1Į5$lAć„)dp:Œšd ąŒš}(õ }ļ§ÆZ¤Į¢8—ēģ8« (ĒzbżŚqĒsCīŠ•OĶß5 ōT(įĻ©F{pM%!12sĒt©cbėĶ0»Œƒ×Šrš;äžtļp½‰Ė(Ooü½ź>©Ļ§Ę_Z.TI‘‰ćń§ pJˆŖ1ši~{ņ( –³Ē9ZīR£ ŌŽ¦›<æ&j©'ĪG&Ŗ=Łl³lūä {u>õØČ¢1Ī+/ݾF}Ŗś\–Ś9Ķrb›÷OR‚\–/Ą‡ U„C»¦ gŪŻlsžx­[w‘ĮĶ*Ó‰Ń <$‹zl”g8n tvViåN™¬ż4 ˆyĒZŻÓ¤_$ ņEyõ«ŹR=tćŚ'5ā_*\ØzÖPõ®ÆÄJ¬œžœW-p„\…ąWnµ•›<œMgt4sėNäw<ŽÕœ ¢FĄ8ÆF3¹ēø5”0<õö§‡NµP9éĶ46Ͻ_2%Seń‚x$S׎9"«Ū°Ū×#Ö¦4® X‘HĒ_ §&GLōéMSĄēšr÷9ā„Ąrc֜3œ÷¦÷ć°ėJøśsEī+QĪzSæ„ š~ļÓ½>‹€įĆcąR恌š:óÜS‡n“\ćƒ)$H¤ǴOčN)ÜvHĶ9H÷¤SĻqļJ§ŽM "—šh p:ҜŽēž”¼ŹHRN Ā 5Ćā=ŪŽG5qr»~õ“fŻ‘rņä ØlU—-ŌJ„4łcN¢ yX¾ā¦o¢;)Į-Ķ$l6ĶO ē‘Y0ČG®jĀɎzĀG\¬F:Rļś ĢYŽF}éLĒ<7ėX“R¹~Fąv¦©‰Ę* “ u"„ˆży”+"ą¬ī_µĮœUūtˆąĶeBpœgš½lÄ19#’ÕXLŚ-Œ+ŲtļLŲ£?J|N|ÆĀŖĪä—#5ŒUĀR±$€ąņCµvö搿iÉžī3ZģŌd± Œw¤’Ü2šĶXˆķVQGø©u-dRŠfdvxą~µb;!»Ū­£¦jä1“¹›XÅ)`§<„)FۜĮFŚAÜ0xÅ@箉“ķø_$v¦¦œsŠńėG½ŲØ»ŚģĄüŻśRģĄČ9®ƒū=‚ōĶG- ĀžFhwģ7(w0Ą>ż)UFßCZ’`b£ŒŅ¦žŪ}>“õ°¤ōÜČ ļÖ¤Śqß„j}€#š„[V÷Ȭś”s&¬gʘN„ņĄč;U’³ŗōČ’ y”zX©“ąS£?[HOM¼āœ±)‰"׏z³y#’*K{r«ĀT ŽÕqO IŁjŹ88ķVøóME攩cCŲž•²‹[™6˜ !1ü4ä\š3ķR*zńÅIüß)ĒhNÅv^qķÖ£h­L u”Š•Ą$ «Ģd:1Ž uĆęµ.! {•Uā$qÉœtečGN*ž3šŃ0Žj#lx8"”¦ZH¦€Ž9?Z•3ß8«bŁ»žō4 ;;ŅŌ­W,9äę‘"5b(Ą=j“"MšZ` ŽsZ6ń„ÉĻ5GLw­(ՈėĶuSŲĘo°#Ęr Iį#ō棖'ōČØV#ęt8ÅkĢÖĘI&hFwcœš»oņćŠÕ d<{u«JĪ2jŚ©k7b­C‚:ćŽ+&Įøā“ķ8Ažāŗ”+˜ÉhYĒzTSp:R±Į¦»qQZ™†ćŠlƒ ŠP1Ņ‘ø““JąSbGZĻŌ'(¤w«×={JĢŌ‘ZĘm„”q]Ģ›é‹œ÷³¤lō犻{ īī8Ŗķnū@Į†ø*7Ō릒EC:‘MƒŒšø-_¦1ŠSlŪ‡\ölÕXØ=9ü(?Ī­}¶š?G°=håcЁÅM…zҘŃßtƒėG–Ųh»Ad8¹9źEš:Ӗ#ÓSĀœfŸ3aʐĮ8łsJOŹ9?HŽ™8¤ŚŽ„QwŠz ^ėJ­ƒķŒsOŲGæ½8'§jzõ%ŪØ‰ģx4õ'=xÅ"©ĮōåŗzSøÅ ä҆!¹=½i¤Ł…I<ŸJ|Ģ—ł;zõ„ģ{b˜ē'ŠzB)Ü: 8“Ó­9xĻ4Š0x݊zżM1;SīsŠr`g¦Ø$ŽGJN¹§a#ņ=‡j³ōŖJOn•$g 9<ŠØĖ š¹ ²uǽ>8Ī욦_Œf•_y<ō­ˆå5!“°=jĢ2dõäqY1Jp;Tė6\VŹd8›ÉŌg„Y‰€#±-§č3нøäšé…C D؈äj]Ʊ¬•ŗP8aKö±Œ éUWS>Vj†ē©„ßļYKv%¹¦Š2=?k”ŹĶwqz‰ÜtĻ5‘öŅ_†ęŸö”ާ'½O¶ˆł&ØvyĒ‹t Ī23ZSĶŗ<ųÕ&ąq×kž³ę4††yŹ ę”}ьņ9©®Œ}* 8÷®W”ŗz\éϵ8gŌÓG‚œ½sŅ€mĒŌÓӎœTižÕ<#‘ź*“%“Ūƒžµj1óu5Z!üŖxr¾¢·†Ę2/Ą6Ž¼āŸŸ—І/»ÉéRŽy®„±“Ž{ńUåĘ:ž5<‡uÉØŁp¾ō¤4Ažq“ҐtĶ=—ŸĀ›Ž=8¬ģPäĄ>žž”óĒsĶF:OĮ?*¤³ŽsJæZhĒc„ćø:c=*Dč9ķÅD¤ōėŠ•ǽTDö?”õ?-2ž¹Ą«LsļJ§ž“Ż£4‡Æ^}źīˆĶX…p? §ē­XVÅXū§œÓŗ÷ØńļNVǵ9ĒčÖ˜XĘi sĒZ°õ¦MÓ׊‹×4דƒĶC1÷ØĀńCŸ˜ā“q ĒÖ¤\f Ryē*d­>CŠ’.™äUlšµm÷EKGaEQEčÉĘ=*\ńčj$#§zv{Pzõ¦Ÿ”ńŽ•Ī֛“@§lR{ҜĘ’€ )„sJ}hē„Ē“õō¹õėŽ€ō4£„!OJ©"yĪ1Q;ć§©t“4{õ4RaęėVb›śūV*ɓʝźōnĪGLóZ¶qøŲY=3Óµ9cϦiTēæåSDø„ÅÆA؁F9öÅ=Pd ą‘ĪiÉŪ$ńRĘGē@7qĘ*X#tĮ4Ŗ#i<jUĘ=ńKŠ{1č֕‘œR t.8¤˜zSĄėÓ­Kł¶žxā¢^銕29ēšwVCš=?–,öąTjr:Ō‹÷ø8ć­+‚V&č0;SĆ|¦”\ąsŠPp08÷¢ć,Fp=8§Œv ghęœ šw Xš2ćŒu©©ĒSĪjč99§”=æA<Ģ•xĘzśÓńL‘ž)Ć9źi^ćH“oĪ3OQī}3L€9ćŠw ęš`¢JHÜ4ž~ķDƒ©œœÜ•W&1N“€*%ąqRšW±:½ĒĘ@=ĘE9x8¦)ĄĒJrœ&y§tU‰zcŲSԹΠD§Ęy©“§Z9…ź*ńõ©įGAQŽ ęœ9ĶUĀŻI޽J00G§ dēžø§£!xōć„!P¤uŖńÜr1ĮśÖUv:hĖØ÷fY³Īzó[MŃAcX²H\ŒžGz’*ĒZ嚺Ōķ§+3“Óīp ÉNÕµesņ€Œņk„²ølŒœąV֝rAė^}Jv;a;eįV„gXW†‘‚ՁtÜŲć^)yąŽxėQOB&µ+¼;WøōŖ¬AņÖ #'=ŗŌl˜ÅvRÄ5”ĖRŠ–ĘpLsÅ=Œ æshUALj ¬8!«²5Ōŗœ3£8»X‰F8ē„N€Ö˜£œdR(ĄäVŖf2OØåĒҤ^›})‰ŽÓNµw!!ŻąƒN_¼zš)¼ä})ˁŒPŲXU'įŲsšóÓ­(é‘R¤&…QĒā”š=čNƒ©OÉäóO™1¾ˆEćבNų4ŠA>‚—ōĻ4s å}Gž\`R‚Ó žR“€3œN÷ ‡Ž¹¦¹ŲŌRJø?­QÕ&"3†ėO]…äGŖÜØn=? Ē–R~éźsŅ ¼“‡,HĒZ‰[°$Ž‰ŹŹČé£NŹģ²[rżīiłHœTĆqÉ=źEg9éX¹qW'·8P9$ ˜>ŖÜøĄśÓŽćĄ'ß‹w4KK"Ś0Æ,9n‡µVˆ8$qŲÕø@1Ē„g)hj¢>!ĻÅXŒaóI ć½N ׀+W”j)+²Ģ =éū‚°ĒēUՎ8ąb†bF2qŚ„ź;»Vr4œÕ$äƒß½LxϵMģ¹0äē'š•>éØ#ąõ9ÅL‡?Eņ–`<žƒb1éU`ĪĪõi·zÉŹåc ×5aŅ«D@ĄĪ*@Ų''ń­"ō"{ž^ā‚ēoSųUGsž84=‰§“f6pw;zUVéŽœķ•Ą'#½Gž”ɱ­Žr3Ņ / xhé4r…Ń×µ *Axā—i<ņ+E±k‘0Čć­"© =ź`§š©8Õ²‹ŲĖ›¹QüÜš:U ˜Ē#Š–(Ą޵ \.=Jč§Lę©S¢!@TäŠR;`ņ;t«xĄ= ø^sĒJčQhĀRŗ+„s€ ~”Ę‹Įǵ]TĻįFĢ‘‚EW³r’G†ćҜČ=󊷰 qĶXļĘy¦į )£6hšzŸj`ƒź}=ėYaĒoJxˆ~¦”ŃøÜŅ3mķp=žµb8¶qÓ½\HĄśŌʘZ=‚Eūwk|…Ś8©#A>ÕgŽ“Ļ\V°£c9T Ł™©|£5(zӀ­ć"øŒzŃgެ…Jx^•|¤s»¬`cӄ|š9©±Ś€9ē«åBæR0€/šc8Š˜gÆlqA1śS²ČLKčE!‰įqļV}sK·Ž ‰…ßR£Ā½—µ3ģć#š½Œ~“ģłu£‘=ŗ™ĀŲnąā¤ū2c”>™«»xļB—śŃģ{Fg=¢‘ĄöؾŌą× ķšP½;N’ŖŃ‰-—Ī2żiÆeņóšŽ BńÅ5Ó+Īht)VkDsėl —č*Ä6 Ž=ėI­¹'4qķłØö§[M˜¶ŹŽ:ę,J'#5ØĮxčN*µŅe°0FkOd’ŠĻŚ6Q‰[wN1Rŗ۟Zŗ‘b<śŠ­0+×"—&—/Ÿ[żÓ×­KćŽõY$`ÕØ#nŻ}k&kŠH׎üŠ”Fr=1Vaƒ§Ņ„–,/h¢ģ'#=¢S¢“Vć ÅXp;šÕ(®¢ę+ =@ē½ eŽ™­h~ī\TŖƒZŁQŒeU˜ßbP˜ćŚ {E>ʶ¤Q“J‘‚9ćŠnŒmd%6a}ƒņ=©£O!¾\ščÖ5©|±ž˜„õtĖö¦=…™R Č"“ā‡zUˆćČō©aEk IŹ«bC ”óĶ8Ū&s€)ŃńųŌ…½Ķn¢¬bŪ ņPp1L*¾ø©$lĪ*¼²ć€M&’vKJЌį®+2ٱޭ$ø^æJph$™bBĘNj6nēŠŸŒ й zVŽDrSĒ©N0=i«ĮśÓń•ŖLL£ĖR=²°éÉ« 9Ļj..Tčd\X~¦®ž`[@~T;Rt£Ų„6¶1ZČ6ē4‚ÅzįAéĶlķėŒR…„'F=ƒŚHĆ}<j6ÓĄÉĒ8ė[å@äSXøÆzNŒGķ$sŲįO"«›0:ėÖŗ·PSҳ®¢Ś@ī{Ö3ĆÅ+šF«ŲĖ[EćÆŌT‚Čpy«f&ĒŸZ•ŖČć½B„ا6Q]<ąā’[DQž3ŠŠbį8ćŠŖŪ‰ć8<ā›§Š\ņŲɒ,9Å:rĖĄĒ„_0Ļ©«vvēŒĖŁÜӚĖS$[dć”ĒzSjBńžjčÜäšGi’e;@dF3Ūó g=rjsĘ9ąR"qÓØāŽRo ‰ĄźsN q×>ōl>ū©éķśSHmčČBšsR‰œ‘"<ބӒ#Ņ­'Š‹ 31Hõ”%n£zzĄŲē4¢Ż€ą’M;HWCL§häāšd$ԟg=0A)ŗzu§iŠÄsž§"¤IXw$P‘ńČÅ=c8éM&B›<{ę—Ģ=»ÓÖŒt4ä·;±Ó\²"脹>“ŸNÕemŪ°$T±ŪCšjbęE ¤óėNDĄĒ9kK츐hū?#ā©R¹ŃEÓ5< ŽyĶYĪ)ĖеM”9‰zš™śQvŖtæ+žø”1ļI°œu&¦\Øć\’JF@<ą{Q»Ž™#NJi恞”)ozBüu5nxĻJkPä“`ā˜XśņE0ŽQHČźµ7`<ŸLō¤Ī:fžƒō”Ó®(sžō“”PŸĘ’Š(”ŗŠ2?*\pJNޘļKü=qļIųŅõ#ŠF8Ī28¦ćž“÷ńM ė@ ńĒZ‡ųæ ±Ž1Q‘éÅ"zŌ©Ą¦č)łJV'š†SŒsڜļųUY›ŸJ~īqÜw§)÷ę«ēø÷§ō8  $8””dB§_­HĪ7zÕ6b±’=)¶Ņezó@änF:Ō°ĖĶgČ’7$2ćæZ½,`©Ŗ.ÓŌÕĝvņj…ō«øóրN)7¬ŅdśRī4üņ@äż*ÖC õÅc¬Ą sķS[ÜĘģ+óVžēÖŹKby†?Ƴõ[‡Xp¤®;ę­¼ŠÜ+;SRFsÅuQž¶gzwZfźMĆēlŌš^“}ņ}ĶPŗdć„F­žõźGTyö±ŌŚ_ƒ€qœdք!— ņk›pĮ<֝Œ¤*€Ų¬§InŽˆT¾ēUe0c&·ģåŹ ½+†³‘‹‘’;WS¢>cPO v¬$­Ŗ)¤ÕŃ·'‘ųŌ¼ĮäūUxĻĘ¦LńĻn)óģ™xPsȱČcæsQēóĶWL¬„™«)#V-»sĻ=ź+€3ĄØQ›Žæ…9AJÉŌHÖ[FĮ#гjäŖ¶H_JžŲtĘkž¤Ó;éRhŗ„ž KˆĮīTRB­³½$§nFy®hĖ]™CMJ„O¤·^¦Č:{¹«vh Yq]±zjyÕ¶"” £=i¶Ķ“jžXŸ¶rEWņŪ=®‹Żh`™„i&d ńZhAQŒā°`;r~µ±l’¹\œdV2V*V±4‹“Toā;r+Ec­U»|nę­>†>†Hr¬F1ųŌźüpzT78-‘Ę*4b3‚zQ(T妄­ģSNó}1š®=v„QƒŠœŌYÜ» ätü*õ¬ē äÖRtąā¬BŲ#qėJI3XÉŪS¢“ŸäŌ¾hƒŅ°¢”ØĘćSG1c׳W;§ŌÕŌv±µĒ:˜N9śÖToĒ\Xf!¹£"œģ1čŲ­TĢ'jÖul G­^Vłx9"¹˜œ©5£etwm$óĶ[Ōē”Õhp; r1 ×I% •cę•ĢK«Ų’3R©Ļz©5f mėŒŅ&ä¦)łĀżķ“ŲNįR½¹ I¬eUGFuRĆ9«”P„ēš‘pļ‘ÖŖ|ČŲž±¼gQš{N“Žå€:õŖNy$ŌiéšpłO={UÜÉ­ Ō’0ZzņŲ=‡ZˆzŒęž¹Čō4Æ}¬KžĆ­*ŸĪ˜\Sć>‡­ é`±$~œńOit4ÅõÉéORG|dSREÕH¢j3å»U·œ®;ÕI¦ĖāŸ’98ā¢mŠ*±~&ł®jģ9Ś1ŽyŖĪ8ÉĻ”«qIޤkšLģ‰r†8$qšŠ·n3Ÿ”¬‘ ńžā¬ŚN¹ĄqÓ×<ÓfŠ”V—7£˜ĄÉéSĘÄ dŒsY–ÆČ9ŠÕōÅ×ę¹äŚŠéåŅč³ ÉēœŅ¼™<UC~„v;Fsšz˜·”±e?īĀ7©īB”+ŸÖ°bœ†ėŪ:ĪĄaOZ®FÄåtYu÷„U-ÜśÕxå$óV l VŽÕ¤G°‹Üš(Kt8ā–xŒjI÷©-ČąēšĪō Sķ䄹°q²EĪ:`ŌŹœuź)ŅD01MŒ²¶ oõ‹£į-¹œgŠXÓwRqRŖĀśV°‚"Ul¬0/Ź9ėĶ ølš}źPø=sĒ4ķ£ÆnÕŗŠ0rø!}Ŗa÷sĶ0—Ź¤`vŒ0+x«IÜEōōō„ć?QKŒŽ¹½ļWęgkˆ ą÷ōž”‹Éö©>越»ƒLjŒc;oOҁ‘Ē=)ĖÓ ŖDŪ Š?:pÓ…ļĻzP0=sTŠ˜ćŠc­"ĪžGg é@XAļN_ÄQŒsžŌ ÜÕ]$+1„9Ԍ?ZSG0¹t$SÖāŌ„8t÷«Mā(ć ēži$aĒ') Ž:Œō£š9§Ģ 6$lÓĘG^“ȐŽ™©‘AėĘ) ’ģ śā„Ī)įy§Ƕ “ŒČ—§õ \qÓ½^i¤!˜ēÆjpśžiĮsłS‚‘ÓŅ‡b,aGQÖžƒŌŅ>Š*„ŌŽ_CWHŚ ĒÕ±ęü§4¦ģ®8«“˜Õ˜ł§©Äƒp=}+=8<õ<ŌĄ…xķ\~ѳ©ÓHøÓ\ŸZ§$„›žµ’)ŃąćM9Uv°£M^äö d™V¢• ōŖV g„hŪd’ZP4–ˆµ$uĒTؼsÅ5@ŪŽž¹Śéė]‘ŲēlQu<R°wJ8sL-ĪŃéZ(£;½ˆāv;ŌĢ~@;Ņ.1ŽŌ7 ķL–7`'9>Õ2.WŽ*4# ėбʌgI oA؇ŽŌēxĪ3ާa…ōŖW –ąµmYvō&@:qšmĆģō–ŸĀrG ¤!#æ Ń}ī,Sgœēœó(ėŠÄ’bƒŽ’K‚Ćō¬}µ“4öwF…ŻĘ_ rØ<ĢØõŖhĄćÆ5*œ Yŗ—-Bȹ ½H«Pä >µB3КӓŚW q‘ĶkOR'°‘«gĘ*Ģw„4įŽE(Ą9Å])$`õ$Š@Hfœ¦¼{քAü©ź¼ńšdCåsSǧŠ 94=éż=F)?‹ĪEXz¹ķIŒzęŽ7pO½)#f3ųŅø nœv¦°äÅ?¦&‚Ny©ÜĀń×£™^•go„TŌhĘzóCZ łNøėN(„tĘ{ÕXž÷ך”/ćX©Ń#D»x8ØŅÜҤRqŒšž5śäЧf+µŌHmTöĒzĪĶG8¦[öĪqZ Ś8™ŹljŪ ķI,# ³H{ŸjčåDܤPtļPȀ b®ÉķP8Ļz‰D.VX×?Z ÷ĶJž‘ō¤ÜŠÓE¹G5 Ū)`“Zy }E7 ‹™™Of ĘNō†Č{V¶ŃšB½jW;2Ō(Ē?…G-øĮć§­müø¦¼kéœŅt“Ų9ŁĻsŠ tvøč9Ån‡”į÷Įķ]Œ²°š’;cŽ•¶#łG¢1ŽœŠj‚“f*Ū¶F2ļVa¶8čkDF3œsOPoĪ©QBse$¶ļOć5l tāŽƒŽ+Of…ĢŹOl½zš…ķyčkH}#‘œę“‚°)31mIĘ{TÉl8Ę@«yA¦±Ś~µ*šCē#Xq×ÜŌ© ŽŌŃ ŻĒJ‘œš¤¢MŲäŒm„(aJ×­6I=~•¦€ ƒ?…2P¤yv\Õy?QRŚ 0‚Oc@įAĶ7®Ļ|Ӕ¼ŠŹå žjXŪÓ5\óČ„EečO4Š™8oNµ(äTƒ‘ĶYˆr=kdČ ¹üŖHć§&1žõ4`äzÓ)Z>>µ:)’·Nt؊~5fj8ō  xōåh/˜Ē8 |ŗFˆgš©č ‘#ÜSö§§­1ĀŽ¦„ Ræź $ĮĀń@ ¹¦+1Ņ«‡ēņ)čsŽ€-”ČėĶ?æZ­ꦎ8ę€E÷éJœšJU4ģśqAō9 ćŸåJŸĀķE4‚Aę€£ŽE&~““PcÜŠzRÓO'ӊ\~x¤#­ $-! ŽG §v¤ČКk}(r7§Zlæt”ŽädŒPĄģĘOŒ}j'=9ā¦uļŽšSz‡§µ(­M³åę(0ćRFŸ^iŲ©!č”8ö”‡)#>ō@ØĮ©ĄśRē>ÜPŁZœø1žHŖ‹N Å;œwĶ5ų;~x„YqPČZfO­NņxɝéĻAÖ“¬Ōģ ŽµziŲœ`žQ]NŽ08 Ńjِö©H2%±e9éS9““:)Į3ZsĮā®BƒēšĶ³“ęžµ© £œ×ŸV£=:0KF=hB½3J[Æ?JŠny©Œļ”«V-%ĄQĪj9d xĻJ Īp6š–ÓóĮé[B ÷1©PŸćzŠķN*¼cō5 <ącŠźHóŖT¾…ŠŹF0)ļ˜Ę8Ąā ƒ'z⬂Tw÷Ŗ½ŒYBxŁ{Ō–ĢųœÕ¹P2÷Ī)ÖšÉĪqMÉXø½”b¤n'éO$žµ$‘óžœS•~R9¦„ҵёpN˜ļUĄŚ223޵/S=GWfģ(ē½i'”t]݈ā õ5"““`Ÿj‘`*2¹Ķ ó××5ƒij!Č 8§©=‰Ī)cązu§„ēŅ¦åŁ¤"“ļœT‘1 ß$S£U>ÄS™9æ­±=¼ø œōąÓŲ‚z÷Å2˜z”.cZ‹ qģI #€N+FėĮątõ¬ŲA 9­m;qĒ53Ų֚×RĄO—&¢”ćüjŌ̾Wó¬ēaęc‘YÓw ŗh‰c`NATÜ×t]ŃęJ™a8ījDaœŸJ‰ėžqR)ĮN*Æ”‰^=)ėŠsƒQgåČćŅ”°žżóGKŠäńŸ—®ińńō5Q„ ½qųÓcŗ^9¢ĢJę€ėOŁUh['957<ąŅL¾Vµ%^@ō§ĘqĒJ1»šäԈFÓĪ*”„Ē‚G<Ԋ}ĘD8ē֜&ŸAŪB@8śS—ėP«Ųņ«©eČ©r°B »!PöPqėO]ĄsōyD) ‘Mœ`äTʬY¬čJ+RT$Žōģš:暹õäiH!Aē\č…N] õźiČFzqLŽn“õėœóŠjiģ&š$SŒriĮ¹ļQČńNSŠzw«0ćźh-ņ€1õ5p1Ódwü +ŠĆ÷dŒ’ZC2 Ļ§½gźw\x{Ö-ÅĮ+’ĶĒSė[(]]³5w+#¦qcļ³ é»W· sV`¹qшœ,l¬ō:½BLŪżī•s.Œ÷Øa™ŻĪ*9NįšJVF‘ƒDLŲ|z÷©V\ĻJ‚AƒĒ™Ŗ²’Æœö©·1rjŚšÜюkFŅ`S;¹ś×0ŽĆŒUŲ%烃īiJ’z ڜ¬#XUKK†W'y÷؞\®¦!Ą=Ŗ”MEjCŽęķüĒĢߝt–‚ˆ=MqV€‘ō£nHÆJę«J,ė„VIhuK}o•<֔h“Bx5ĢiÉ,£Šó]]¬N¶¼rÕē×協Y×J Į¹:€K€pHÅŅgÓ5Æę,§xĮ^+ƒķ[-bs§+›0œ äÕØNy>•jć`ÉĪE^µnœńYIō:£©zÉŖä žē"«[}ß «‘ü b¹„>†œ¢²…ēŪ­C+Œ~<’pZ¦Bć$ŒUA÷3–RĢ Ę ēŽ¬ByĻC޹ėY’]"£ƒėH/ĀtĶ_³“ŌJ¤o”ŠA EäqUÆ®ĢŚN{Ö$÷ŽĒ ķĄØāw“&š§Õ²e)Ič^ŗŚI*sž•Co\ÅNŁQŒ¢™ĆĪkzR±…XÉ<{ę™-°÷Ķ^Uą`ā„XžldąžUŌ§Šći­Œ)-p žu’UO?Źŗ'‡ÖØ_Dœ"Æ±PŖÓ³1ü¾œqNņšO ŚAōÅFsP×s©Jć£NG°©Õ}sQÄxjxXwėۚŹLŻ= a@zU˜PśŌP3Ū½^·Ū“¦¹å- Z« HϾ)įOjœ ŠńM''ÓŚ³½Öƒ²Ų@§Žy©8õ"Ÿō:(ćĒZ–ģZDj„SOņĪ:=jŌ*{TńÆ„MõŠ¢¶šqۊ°–üUčb¦1łUņ÷!“Š l~™«0Z„^T ¹ć4 €{ŠŚ4—S7S¢)µŖõ¦˜‘8Ŗć2‘éT.œ‡ėŅÆ’)óĖa²cj-Ą)²>SœT;¹ąõ¬÷Ń‘8lg'›†QÅEÜóNé“ZF臩'Bp)źy=†*4?/&• JŻM™8®¤ ^‚ˆ‡ĢNqLRĄāœNxj”»“nŅĄx=*E=*¢žœœÓŠįq“ĶoŠĒ<©6ZnW(Œ{qP#ńŒŌ‘¾9­UX’é4‰āR}Ŗ_Ö£GČłsRƒõ­£$gŹÄ`jAĒćN'#š¤aĘA§)QĘ1H¬Įøą W÷4€ąŌóy•Źžå„9={TŠFŽ3PCÜqšxb:Ņ;“*}‰•qŅ“c­5[©œķ©ŗ’0qhcœ7)FJūÓW“ųUˆ“#>ÕO”¬c„ŲĮŒu< ‘=FqC/<ķJ½%q“5ņ:Ļzqn)ü¼qBżįŽ3Tˆh™GŹ:昣“ŠTźr?­&ߛŽŻkuŲĘö©ņzr'ōģc‘Å8ņ:ńėWby˜F8§Ž“Õą¢ž8éß½ZD½EP3‘œŅØō8¤ģ1ŌґǽR¢ĖĘsNt֚¼Ā—?)ē§J€ŲļOćiĶGŠޟM0`/į֕0E4œS±ļŒÕ§p1×„*·9¤QĻ\QŒqž‚Ą­~„ĆĘxę¹ė§żįĪk¦ŗĻ’@lq\ÕōE%9¾õ…}i=l6"ü)ģß( Õ\zR’Gį^1ŻbQœ{šš »ņ3Ņ«Ę2FIć§Ņ¬ŪŽzŠž”bå¹éNkF׊ÕUäVœ 1]4ŃŒŻ‰—„H¤tļU·c‚zRļłŗ×Zf ø_hć·z®ķóži„Ī;Ó?S––D- Ć٧»g qQØ8ǵ=1ėT›<ć9ꬤ3ļP“µEUø“ŒÕW°·ŠŠžq·±U|Ģō#ŽõŸęAŒŌ±œ‘‚zsPė\„ ļČēėO½r g¤øQ^Ķū¼ąSö–Bp*^į˜ćµ@žÜb’izćw4ĄÄœrk–r»7в&SŪ”źE8Ī*¾pFI⧇‘÷M(±“K£ŒÖ–žNĪ=*„qēÕ~ÉJ`sŠŽ¹”Ž…čĮŪžAµ*Œt¢6]£­&ń]Čåo”*ŒzSĒNµp?fńæ½W5‘6-&zę¤œtŖźĄ8Ķ*¹Ēz¤ś4ŒĘrj2Ć=~•^āC»hĻNµ7$ņ=iJhi¦NSŽ?J‰[ Ԋ7ƒŠõ£™ Ĺ>¹ā”ÉėPĒqMyhę 2vp?õFū’;āœŅąwꔐäg85œ¦¬\bśŒT±G½Cœž9«6ųćÖ²LŃģ]²PF:ńVŹæQU­ĪÓ×hÆń]Tֆ†^jÄ$ŌƒUŠįźPŽę¶‹%–U‡Æ8¦ļ÷ā”.{Q3šjÜō'•–s“L~½‰[õ©Ü88„Ķph]ĄżE&xĪqHŸQNčĒ\ÓŖ09Å.ģqT¤‰ĮĒsM8÷Ķ0°Ī3ȧd`sŠø_ŗ)h­ŽŌŠ Ž=©q^””ā8ü)€˜ąQü=éĖČŌ“yŃE7ZAÓ½ö\;ā£mÄsÓµN„U*y@¦Ä©¦JĒ »$c˜ØŌ8“W1X– ߏJ3ĪqRē”ÖQƒPPՐńóR9 /gó /jnś€4ääšDĒn*8ō¦˜ĄJk7#ÆN“Æųē„1lž)”P:ŠĒ·jG=© 4”R®s‘IJ¾(Ż@©iŖy„ŻųŠ7# T]¹ūńTß®=(«ĒäTП΢©cėļŠ”`/„¾jŒ›54KŸc@5"ō‘¦:“ö…'šūґǾ)Æ\S˜`Ōdzóõ£¶äS{śRöĄüčxŒńžiGNhČ€r)i™ńš\ćJž”Ž“ŁXę„üx S±ĘsBw§ØĄś÷ ē­.Ģśō§Ÿ¦qC‘ž“–3ĘsJČ=0jBĄ8¦łš)¦IŒw©Ž:zT}š;PL>QķI“ŅÉ×qN `Š7g‚EH!ā€õ©”^µ4`Ē~hĢ)›EIŽ0iqÅGL‘xā§ŒSN‡4UÓ Œā¢qĻJøącŽ˜Ø   „qœŌnHĻ\Õé ‚Tō  ŒN1œbб" qQćŪō„fó!ĮqS+sךHį5(ˆ†SĒ­|˚=§Ü1ŲSóĄ#9””qĮąšL|æ.A”;˜²HH.IČąÕØŸß„SE'”ę¦E#=śōI+Eų¤÷8ö«‘\²®ŠztÅeGĆQV#9śŌ٠ڶ¼q˜“ŠŃ²¹bżHō®r!Gz֞›&ќšŹqV.'g¤I¼ŻEj@ī8ėė\®Ÿwµq‚9­[;Ęf„s5cG©¾tc&•P¢ŽHõØm&ĀŻ{U„‘_ŪŅ¢Z‚›ˆDŲ‚~µ~ĄšĢ·5$Rķ É®Z”Īś5nUrzf£ĻcŠŖ³ ŒS^CĪ Į汌,k) !ł±“Ē„Og ķōŖdå‰ź=iąķõé])hsÉ_sb)·£<“čŲoäžu’$Ś»A+‘ŠjĢł1­£Ŗ±Źé«Üź­ŲÅYN™Ļ8ⱓY·ØÉÉŖ¬1ļŠž¤N.$Ė÷xā„Žõ^,=ūŌĄćÆō6ÄL#æN“=3M¹Ęqš—¢œœQrnU¼Q“ż8ÅA}0֬͒ūTäć4ų…ē9Å*µ-· M½Fłć8¦śē<ģU{ōØ÷œ ž;Ö“g\‘&ztƒ ĮĪ;Ņn$ü½.yĒ„Rl–ˆœĘpE";xŌ®AŽõ99<Ž•jĶŽÅøeĄėō©ƒcžjš=*UČ sĄ¢ÅøĮĻ­[‚@½fDq“ĻJ³'ž*čh‹Ę_”üŽõ`·¶*0>^3œRĘ8'E5rĢXšĒu«±(W^HāŖŚåGqWČ\qžõW1šv±1`N3ĶX“V$łŌPE¹Ę:Žø­+pńéRŁĀ…L•Ū‚=jĶÆćLA錤Ø4Œ‹rzā„*1Ę;ŌŽxĶIéĶ'Ŗ*“\·]ĖŽ¤ņ)—(BńV“ŌVMĒ=1Eź|¹äb¼łT\Ö=—JйF“‚:Tš¶Š2ĒQX¬øģjŌgrn„vBG—Z,“­”ł› לU{r}OćI<Ŗ.OZÕjsI[aEĄæ‘Oy2¹čz­]ĒéÅE;ē€pEhCˆū¹Ē€ł#§4ŪāL6jĖĻZӎ<Ø#ļ{S”¬#NŽó4m@ƒėVP€ «fNĪø©Z@£ŸJē¹r¹`tć4åĻ–§ēPC aL¬qééJä%bQ§±ėUīŲ”łO8§™'Ž*„Ä«œt9­"ō.Źä¶­†ĪrqśÖ­‹^{޵‰ŒškA_1Īk’„ĻF¹Kó]*¦ę« •8ĻJ©(<œÕf$sž)B¾ęä&ģ3c=­O꧑Ēkœco͚{\d‘Éā“•6ö!É-ŁeŒt`ü؎pX}3ÅsĘCźE;ķ">¤ƒŠÖŚ9ź;üGHž§ó§\šqŠēü“|U˜®·GœņiŖÜƖėCwpĄÉ梸”Ļ&±Ńn„š:žõ ÅÉ*py’ėV‘3å“$Ō.ʌsYS1ĮķÅ>GĖdpHØÜń‚y­9‡[V@ēdńNŽR1‚*)HLŒ’*»H3€ÜV«T7kšÜ@'ƽLnĄ½³Xf‘ī)ńɓߎōœÜåŠ×–vsĮ(FłFO$v¬Čä;ūŠ· Œąć§QRÕ“)+źĖJ0^”ņqŒwTKŗN)<Ļ~irŽéģ_YĮ’sRDŲąŠĻ‰ń_\Ոߎ¼ŠŻ‘iŚi^2~ZÕ]F;ó\µ¬Ä`qZÖӳ؞•ĶVÕÓØķĖcÆŃå‰cSÓ¹iv›\ "ź;V¦ŸtTŽH“\0÷՝°­+Y&¤‚lœŽ{ÕµP:ŒĘMSkē,B“ƒÓ«päI؍9$jś"ŠMNāÆZ©Łj•Ÿ$’jņ8DäĶ¢ģ‹ÖϓүBćʌćdTźÅPąõ¬ZE]īYøŸiĄĘOQT®f$œtØęĪąAØī8N Ī+X+Źķ]‘¹Ü‹4Ø0:ņ*5o˜śŌŠr:ćŽ+YKK *ȑz`u«śj©ns‘Yńž}*ō Rzv¬§{XÖ.Ś—ęŒćŒÕ7]¬xüŖS/Ėןz‚F%³Ņ84cSQCŒtėVóZ®€õĻQO#·9­uEœÓv%•ĘμÖN”tˆŲżMXŌ$Dy ā¹{é Ÿ;Ž uSŽ—gmŹČæ4ŹsŲŌjēγ‘łūŁÅO|¹Ÿ‘Ū»į#·SSĒėŽØĘŲž.Ż=Ŗhä猌×4ÓčĶ(IŻĮąU˜Ÿ‘Ō`V|OĄõõ«11ǹäĶb“/‰>^¼ŌØŻyŖ*Ą*dc·ƒĶdŲö/FN:՘yčsYńø'ƒŚ¬Ć&8Ī*4LŠ„‘­YG ßFéÅO»ž¤T&ŠJĻBĢo–ę­ĀĆ'ŒV^ģVb›ėŒw­#2.~8ā •øĪj›ĮėUe—vpÄVžŠĖٲs1RFzІI29ėŒTŽń“ĮéD‡ß§j‹¶>T$ļ­DĶ‚8 šIŲn*?7BkX£6ķ”cĻJr8Ļj®:÷©œV×VŌ”‰ć8čz*PAä`UxĪö§ƒ“ĮśT9X®[“®8<ńJ[Ÿ—óØI9ćó„禦™N:“ķŁö"¢ē­óŠ„24'Żß-Rƒņü¤ņ8ŖčFqӊ‚1Åi 5”jĻ$ć§h)+éÅW·ąpMY ńÅuĮ˜É+v® ēɘ`sI!AR ØŽ{ę­ČŹĶŽn¹\Ӂǭ^:RƒĻp+x§cÜr~TōūŽ•ząš_ÄÕ¦A'ńcߎiŁķéQ!ąsN?tõąā©0&Œę“<ē8Čž½9éŒw¦˜_”"ń׊\ą  Œ¶>“±O<”ī„8œśō§鞔ÜqžAÅĒ~i“aĄńך~ļ—śÕp’0#5&ćӑŠw‡ī R$Ÿ6 Åø&‘ß4\Våš§žÕzĮÉĒaSźR6J•BWżßR3XԟBį•ÜąšphGø¦Hw‘Ž=źH¹\sšį›ÖČļŠŠ‘W#ėSĄO®1ÅB«ĘX¶\¼‘ėI ædT7Nƒ­\Gō銄įF*RqßÕ „µ,»śóH½qš…yõ’ ’!Ąźxė[-LY0éƐ0 ×&”ĪsF9ēElˆh³eiūĄQĶW„8⢒Lt'Šnabk™>^5FY°O4—/ø`gÖ«2Ż3õ¬gQŪBįc(Ļƒ6;Õ|ž Sv·<ńŠĒ™šr¢uŸ’3ČØ¦—<ēšhGč4ųā$„>fĀÄń“××µ9xl{u©Ģ€ē¢€4¬Ē¦Į’xĪjõ“<€}?KHˆaž0?Z¼ø :×E:wÜŹroėV‚õź8Ø£}¢§WLsÖ» ¢“9¤ŲĒĄN3Q£öē‘R\G…C1ĒoĘŖLĎą¼ŅĖuÅ4«g‘Å 7*\˜ŅŠ“Ģ qMiŽÜ8¤`Gݤ7~(ęad>6;¹©IĀ?Z£#µH?¤5˜ūŒŠU<`dR€AĒ#Zx§p¾ƒ·`uĻ­G'8Į8„`Æ=*)Ęho@ˆŽH>”×cÓ<šGb}O©³¹iE9Ļ54$ƒéMPN1ĪLƒåć­8ŠäČĒÅYś`“ÅT@võ©#Č^½kx¶Œ™ownqڜ­Ó®j¼gÖŸœ3Ņµę ³:w¦œg©ČØwƒH=źĀ½:RŖOŚćT¢Ä؈~“įĄ“*ß­­R `ņy„äó@ćŪ­5ˆdš`8{g„#7”¦;…5Gęg„&ŅYŌ[½Ķ2Vü ėŌę„Či94čóׄ5~ķH>ØZˆQG9 ć·J*ĄG'ŌŌ2gü*Vė@nj^ U#ŽüSXž™«d ēŚ¢u9ō³q+˜ÆŽ8¦£éV‚ūfšńLT“Uȧ½H½;ō©R1śSŅ!MDM•›8g„7w9éW|±HcćJ|Œ9‘U1ŒŌŠ8éR¬]1NAćšXs!Ø8§©ęœŽ4`ō…]ˆ‡ō©”÷Øc/j°ۜ ķĶ&ßZP1@ ½h#Ó„%(cS–ØŹ„|B“>ŽI2„¶ē»ā³1;‡Øø(ó©ŃŽŁõ«ö­"}š2”µ'¶8«qY±Ē\V„ŗ€1=kJĪ1©–!¤\h¦`Ʀ9ēžEZµŅHČük£„ĮĒ)*WcĢń3{ū£tšŖ8'ŅĄė×5­9c8ÅBpń«Y3A"[ dŚ1EiŪB؃՝nū_ÆćZ9ĄėĻz§&Ģerāqׄ?$Ž T¹ļu„߆'š†ō4ƒ¾å­ųĄÉ4öqŚ©nłĒ4ų›,FzTٳnd¶.Å&1É«p挾5ŸÆZÓÓxlw"¢FšŌ‘aĻLō¦•Ś tĶ_ŒcŠzÆwĄģyśÖ*§B„ +•HćæŲĮźzā‡~03Z6Ė" Õæ“QWg:§Ģō„e\sÅnDs9ĪzÖ! ć8«6·XłyU©©jeV66"n1ČÅLÜ=+.;¤–É«qÜ)⛋¶‡=®\Œ sĒzz°#ƒŚ©“«³ š?Tšä—\RåvŠq޶fŌ®r=*c·Øģ8¬«Y‰Q†9«Źł­rT»zžÅ%hŁ ¹ĄĶ@H€ji nƒń5„ކ1NČC•īzQ=’Fa“`š7aG8ǽ‘—BU³ž()•'Ņ¢'šzTń°(9ā•˜$|OJ‘Ŗ“Ÿ„&FŽ Ķ(=»‘Ö„Šę,[F:óœu«Öń®xĻNµVѹĮ«ŠŸNŻ«9)Ļ„)ūĄ0jÄV™‹$`ö©cQęĻJ·Å£ U]ŻBŒg541ąuĘju ƒĀ˜ą«Œ1āŖśŗ’ Ś8'8«uzU[r®MYˆćŅ„½½÷,zą(ØĆŽŁÅ8LŒŌܙ"aĮćƒJs¼H Ø€? ’7ē"‡- (E¹&9öǁKzĄØē*µ“įzóŽ£æ›óƒ^s¾{3Ÿ¹fDć'åź*kpj½»ŒšzõęÆŪsƒŹŽõ֕>ŖŗvÄ(+Į›w!9łŗÖ­ŲO,÷5@Cę1Čéé[Ā¢¶§$iŻŲÆo,‡€XŌÕč”īĪqŒŌö¶Ø”éVŅ%PłO­)VģmQCbM m$v©¢PåļJ›C|½…L0T7ØõļY:ŒNŸp„axlÓ.C0ķO€ō©0 Č4)>¢å[D ĪŠGėSo`¼g=)@ÉĄśŌSL±øUūÕiÜNįöäädUI WĪ Ēk˜"«Ü©Ū×µ_“[MjаøėŒ{ÕČ$<‚~˜¬„l`Ņ®[|Ź $õD¬o÷™Ž7rj Ų$ē8©žN 2aœc“Žõ„ebå,Ri®9čCNjcÓĒSéLćq×Jجb©ī_,ž˜¬żBa¤Ēj’faž•—tåĻ#ŸZ飻˜Õ} ābzÖ­Bļ$c­P¶lpIąV­ˆr „FDc”=©Ū <ūŌ—ąš}ź4ĘÉō§9łG'ŠĖ™QZXMŸ/„V»`¹#%…O!ÄxÉ'¹¬ķA†xĪj”«&LÆw)ągØĶU$Œć9#“Oó‚iOÖ“DØč&āå²=ŗŌ‘ÜƒĶ4/8éŃ/<‹QVŌ‘X™TčĒn9ØćLœ÷=ÅJ# ä•Č9G+@&ž™Ī9ķLv®^¤ŌńFŪAēėRęR€ųĻ#«1LäTpĀO\ŒōÆYĄr8c)¢”Ų’Ö"Ģ1šŁ³·ŻĒ ŖØ÷«ŃKŒ×4ꌊé5Xż€tĪqOŒœōqœŅ‚0qŌT'Ü&„ądгnŲ㚤‡å<гAĪ>•Œ¤mdj[˜ąóж®0zVt©°ŸBÕ8¤aĄĮĪzÕØĘŃļW™T”~µVäĮ^ ZĢ„¢3Ķ.GbF;TLŲÉćńØÄ„·SōÓsT} ŠŖņNM8°ż+=ä` ņ*„ÕӁņ“]0…ĪYÉ­.¾Ł€€ŲĄ®bb:?Zоœŗ›ŸJ˘ó׊čZ+38E·t,yݐjŹ1ĻBT½=*ÄdnĒ9"±›:ą¬YCó}zTńž‡8aUb댐jt$?Nq×Ö±‘ŗZcl óVbpGF*’6¤€<ĻZÅ¢Óeąß/\ńėR£|¼Ļ=jš0Ś·zX9ĘGjĪQVвäMņžF}ŖäG‚;Öl/¶<ՈeVm2”8_ >•*8Ū׬Ųęō©`ēš…惿~‡Ö“Ķ=2}sYķ+‡­4Č}zõķWÉ”.]'n4ĶųčO<Õ4“QG™ŠķT£ŲŽnå‚üóž=é ‡$ńU9ś÷§zt­”LŪ&g’Z@rZddf¦‰:žjģŠ>ᩁĒqLŚAć#ŽžæĮ!䌎{Sׯ^‚£õ$@“ŒļSŹ č!84Ŗß§J›Ź%AtėQĻ^™«HŽaA!xĪM9y#“O̌óOH°ø9õ„ŹĮ4Ē@‡pį†*Īą u¦Gņާ§ Ž|ĮČÅkdDōEŸ0挏ZWr@Į5Y[ž“õ8õśÕs±(w,£ą`ž“»øœŠ‰~ęA„Ļ AÅRØ.DĒK TéõØ£ĄõešjWI!WééR®@ć‚ip£¶iĖ‘źke”‹l±oŲéÅY >µQ[¾je“Žē½o XŹE‰ĒJ‚i>^x¦»tĮ<Ō¶OZŃĻC; Ī=?:žząSc##=…KŪÓō¢,™"XČ ÓžśqU÷`ńA$”ā·ŒĢÜ[,)ōücčj(§äķĻzÕJęmwČ\óõ§/źi¹Įī3Mi0æQNā&8Æ5"pæZ؏Ą ŌØÜu?Z„!X˜pF3Ę)xĒøā¢V9㨄Īź®&‡‘Œry§Ž)‘“·'­<Jþ”Ēįp)ćņ&™0Ąõ|ŚLüR†_^”…ėÖ¢›€qSpeĄzćó*¦j”u>ÌćÖ©\ܒ8c‚*]Tƒ}üᜐ/Z ņ’p3QČrr:DČ5ÅR­ĪŹt쉂pjÄg”qU†GŻļS§ ŽsŠĀęü„˜‡w«VąnĻOJ«^:Å[Œ€x­bČ}‹q³ƒĪ9„Ļ~µQNQóŽHÅtĒS #(ĒįO p;DYĄžu(_˜}į]QŲēm‘æ Jb±÷©f\dóĶBŹv÷éNZ.ć‹óĻZ›ŽōŽųÉȍQY¹?Ō¢—ééIEÓ±©¦ēŠ\A Ē>ĀšÄ šPx>¦™(ü3@³r9¦±8ć½H=Ķ9—Ž€+»}ź-ä·=qR\&[J®ł\c9¤Ū”’qKą{Ōc%³Ś§AłT-Fū żąõ5l(ż8ŖĄä~u27¹ĶZ4}ÅH­€B‡¹ėJī1L øėŠhnz‘Qƒųf”~“`7½<0Ē'š{zśŌ q×1ÉĒ4„|“×ėųR©×éJ>¦šćžų”IĪ(NO­&}č\;Pēž = ĄÅ0ućŅž½;ŠóļFxźEü©’*c·=N)3čzSņi›½?:•ĻM @_z‰›Óó¦oĄäŠ’›Ó›Žšß­-K3V#ōŖØ~µļõ©8Šw6оŁŖŌNҰ·3†ąTöņ¹P‘š—śˆÜj@NsĒ"ØX Œć„^ˆr:ÖоK"hĻ$w« žGAPF0p8÷©ćP1‚zQpPq“Š{1yā›¼g„Vŗ”łAķBwObʶ[¾•j½}«.&Ą ēń©LÄ( œcW=Fވō)ÅE~h@A8$qĶRŗ›-Ԛ§%Į©ĶF% ŲS§mXå4Ķ{#œsŽ3ĶY–`Ø>jĒóĢyĘŖÜ\9čMtF•ĪZ•5²6ąV –#ō«V7IŸ¼}ė–ó[9Üqõ©””×µk*)¢‘×%ź£axÕ,W "ąęģŸrœŠŚ±R±‚&¹å‘²†—e¢Ųl‚}é—7{HPǁҫßHĀN?ɧG\óN—a:I»š:p;Ī:óVåŲ"ĮĪ@¬hę*Ć®@āŸę³ŒN;Örƒnę­ŻY3Įćµ[·ł@ėT#čFyÅ\€:Ń=¬8ĀÅĶß/æ½I$’RWĆ Vapēµ`Ց“YeĄ ļU'w^µ#Ɂ׷­T–L±\ß4įrj4·*‚6ž¾µR{`IŚ2jĖc=x¤ÉÜpGJķ„š9d“ÜÆ ”ņų8©ķÕ£~½EH €v‘LŻóg'&“ę}Lķ©0nłŪšnx<÷ØĮĄqC>8ĻZÖ$$õĻQU®źx©ĆrG qQ»9Ļ„Tea8\ĢKryšZ؁ZQŒłŅƒ×ŻVj¢‘N;&ĮĮē,VAqĮ$ŽyļW`pX@ć½Lp•DŖČŌ© Ŗ€G*iZŪųpžM8ڧ™°k¹Q"‡©éō«F4Ō#vģūUˆxÕnBž=)öcĻqWŃFĮޣҹ„TčQI\¬GØÅ@ąMO2(= A!ĆõĒ”ō£}Ä݌õ©¢µ|ØĮ=(VvćŒWtič`ęIĆƒŠjƒž)būøéš•vū“Ó­lŒ%"„ŲcVL‹(#®=k”dĪxķŠbŪĒ“ [*–V0i7sš6Į sЮйŁ®„­Óž1śS$µ@='WK+ŗDpr6ńR¢œt=+bku$b„·³éRļmY“-k£1ƒžjxĘՐsWžß‘’zS–ŻqĄ&£™l’ŠØ¹{ŌŠēóVbwtĮÅJ±(<ŒŠĪW ¢ļÖ„E!G°©R1ŒzŌčƒ3ÅK •Į#ׄHƒóČ©¼±·9ē4Ętü*–”Ķ  ōśŌØ8<Ó`qÖ­.6š0;żjģe~¬ŒĄĻ"”©,qš•3Å;o1š,J›±08Ļ×֐vĖu©YBŸAŠA‚Üžµ>]_F>%õĻÖ¬F£“ųŌqcužue>ķD“7KB&P°jHøŗc4²ćéQ†ąóBw#BnŸˆ„AÅWߥäūTжļZ5@—AŻК’ŲóІWŹąTq>‚pkEŖ#ČŅ “g&”y~2( ¹ÉsU[*ÜZ-Œ¹u³4mdP9ō«4Kߐ:V@bŽ<Š֒ŠÖŹÖEÉfēŽ†™ø†«)•I²R ēžsļSGĮĒzhqׄ8t“Y”™ lōć4挂3ŸZ‰N8ö§†uę¶LĶ’ēŽ4 ą{ŌJųēŽ”×oÆÖ“¾†mw$pŲ¦ēšf¹§(Ć õÅUÅŹOm÷Īy5d—#5UFßj•ÄHÅiÉ+Y vĮąÓ”Œwā˜sŽ:Ń»ē½ZdŪBHX‡$qÅXžŒ‚j¼GŒōēėS)F+XHĪqģ8t÷ĒZ©y6Ž:ńÖ¬;§mPŗF,HdUŹVZØ»ŽŠF89ć”lAA“YvČĄŠŃ‰HQĻJŹzšŹ şNJzž:Uuf'Šrdó]*f¬°‡#ąĆ BsŽœS÷r1œā­2ZčKøuÉ œ÷5H\ö 6@ź*®M‰ü w"©ß1åÓhœAżM@ŒK“‘ąąšŖbo»ƒŹŗ Ž ˆĀ”³’A®yR¹¼j%ŠÅŠ8äw4’!»ÅlˆwϵJ"z‘P°å:ŚhbÅlĮOŌ°[æ¹8ęµ– 85"  ß„ZĆ”:īĘ|VÄ( ’}jĀ@vŒē„ZUĒą8ėĶjØEŗ¬bĀŽĘ¤XńŽjQõĄ’šķZ*ięČć\ł«1œĀ”éNåśŒV±ŠĶ±×8+ž*œ®ĖžqV.@ćµeĢıĒ©©%b ™+?\L$–ć9Ŗėž¹É5<'ź8®_is£”r›ū¼UˆGn”ŌĻJ± š>•QZ‹d:0=jD§ćHq‘ō„äĒ&·H†9Fz<¾¾ō±ż*CŅ“D\ˆ©śSv Ć9Č)<“‹÷ذ‡Äæ(ķRgŒżj0xԌФģK%ߚT5\7<Õ,M‘É>Õq‘-ŃøėN؇Sԟ­l™˜öč:óLǾ¹¦ł›AėšmŽÄČ’7§Žrq×óžøĶ87§u¤¤IĻž*%#ń"„‹AļҚbœsJǧó¤<±ę—½Zd1Łē= 9H1zsĶ5œEō 3b–6łF*²tļOS“żz9‡bŲØ„Ž~~µ_wˊN§¾*¹»Y|śR8š‰ÜOj•AĒSĶ;¶į8āL®ŃéPĀ£~})ŠNyėŠ|c Ēz†īÆ3Gµ83žjŖ‘Œēš˜1Ē\{Õ)‰½ńH'‚O½GœJ3ėUp,GĀõę›· ķH¼ Rr*“ \†hØ„OcKž}é…Ę…┨§ŗ>”P!tĄ>¦˜ŖF=…Y4`~”š"\š•Žōåž”ļOJj ŻČ™:ć Ń õć)<žp=zSå †ī)źZˆ:gƒĶ9ߚ¤śzŒÓæŒw£wi€ńŒ÷ŠR÷ćĒqŒg\NI*æCŚ­66žqU¹ąsŠŹeD‘ēR®3Œņ*²ėSFyėĶ$ĘŃj3S/§„W¾½*TjŁJF>“™#ŠBž”ė@ 1ž½©WćŒS÷„Ͻ;šqLJŒ{Ņī֚Ē&€ž“ĀóN½éHO ꍧךu9@Ū@qÜę¤ Ē|Ó@¢€æv–˜3ļG$M.īi:šU^(ī3R/w”~ķ7™éBń@¢ƒŅuü:Š÷¦·Žr@=éA×4§Žę¢ąu9„pjݚBÜpjµĆAīEYuĒOĪ –29Ķ'µ€[©ŃĘĻz®čsŠŅķnė$Ś)¤HŅqÅ,rĻ5 Vō9śŅnąžT]ī;"ų|/ĄŽMTß©źĒō«S%¢p} K§aŽ«FqėĶJ¤ØÅZweHsNU7\Jā€,3s@až3U÷}iéŪÆ"€'?•( õ~“ģŌó@'ėÅø÷ØĖPIÆZ74ŖĒ5xć)aÉ9ėYøŃP8ʁõ­Ks€9ēĻC)ŒqéV’é¶ä8¬%ĶcU-Ķ©§u< Pøœ±ąž;ÕøcŠžGZŒ¾q“õ«§DĘ„Fˆ\“Ķ'žqÕŖ™ÉąT‘©9ēź+„AjN“NIĘ8ÅO’˜ J­œż8f4#”JČ"™2HŪ8ļNW%AĪ ż(†.GSėķSˆ~CIĶ®ĆbŸ®N*Ź·½F‘žŌT©X Ē"„“ʓ'· ągۊՓ]¼žćƒTķcsō­5ć“Ó„fä[ZĘ»”xnĪ<žXˆÜąš*ō*…ąV2˜’²¹=øŪžÕd3UcąćiäĆž‚²ßP–Ø·Ą§^žąUHŲqÜՀŁ^1I”¶'NT}*­Ō|ē„N²Ž{T7S.'"ˆ6L¬WańÓ#4š8éź*“ĻóG½š$Zr_Ke;Ž BįsŽ)‰ć­FŹÄōüMia&Ł!|lSæZz.Bp=)$óW{!(²#ŃqĮėRB;ūu¦•mäöéVmć$Ļ4s '±=‘*ĄŒÖ͌Ģ#’Åf[.Gj»#Ō V3³FŠö4Pļ'µ2ā,r6ć½Aąr Į§3Hö¬Ņ3zl3pÉې=é qĆ4ĀĒwÖ£—äņ{ÕŲøÉ„ļ‡#Üõ§<Ē“Ȭó!ŚpjHß$g9Ē­W³ī+ßbņ?9ł¹"æĢ:ćŌU(˜dŒœR~o”ńŠžR¹¬jBćwō«(䁂sXŠĪ£“ĶX¢“ÅL Ķ¹ÕhäZ³š¬®JČ0FzņkNĘéH'<ž•„ąŃP”YnVē#<śT,O'CPĶ(|­ÅFŅŽH<ZØGC9ĖR|Œœ3HCuĒįQ©uĮØŲą`°ē޵¶–D–7dŒt¦äc§5ķ¬'éNv÷†©$‰‘æéJH `⫆ēÜ øąÕŲĪŚ–ŠńÜāœ%ĀśÕ ų€yā›ņĪ}éņŁlh‡ĀqÖ£‘žn¤Uc#m>µ±Ü Ķ(«‰¾ÅųߚšH$‚Ø«cך{·Ģy<Óh®m ”8ā¤/ÓéÅfĘÄ.½H’ŒÕ .…&ŽåÕl ’V§†O—9ÅQų篭KéƒQ-JŒQ±i0Čēń­iścƽsš±Čõ5uÕÜ×4āW6ĢŲw\pŲćšØĮx÷ŖBSĮÉÅ>“ҳå°Ó-ĘījeQӞ*¬o€Éā§G%»Svh—rĶøłŽ:ā­[v=3Ś©ÄŽēŠ¹n{N*dīZRōĮ~ŪõćBݾ\zUødgNkžFń±„lp21ėWķ˜ĻzĢ‚L3Ó½Oħ>µ„“4rŠÖŽņ~• Ņ `wDĖ•9$ūš‰¦ēšėD g&Mvä”°ėT›vqK<›°2 ˆøēŸ¦+²Ē4•É3‘Ē„@Č<śÕ]’Ź~V zęŗ£#)DøœgŠz·ĶŒōŖ‚LóŸ”÷©ĮĀŽ:ՙ8“g,pM)<šN*¹Ŗśd’æz åeĀĆ=MC+g#==*Ķ·ƒŽ)®ųrH¢å(j=±·N 0sÉØ7øĻn(VĆ`śqCz(¾…®O^Ō±œŌįA©Q‰ T&R¹`võ§*äqšŽHńV8UąÖMŲŅŹ×c!}źu` Ō€pjBžõ^¤¹Jįxž5 æ¾µ4gåœq޳ÕČlŒŌŖĒ#žŌŚn„󹦆ōü)…šzŸjBąt¦™:\·L#HÜdš®Œ©'Š‚{SøÜo©(n€jT8& ^:dTńą T¹h\oԐī*hq°pIØćS“{ō©ćĄčH¬œ į.2*xø^øā«Ävń’x§—ģ Ŗ‹‰Ēc*HĻ¹éŚŖæ­M¼„h¤dZ\gÆ u4»¾QÉ]¤é‚i ø<óZ)v"HšI; ‚}頑üX5ZF!ø§£{ćŅ­K¹™iO=zt„fĻ7ļS†IĶiĢK‰4g·ķK20*$ ‘dšjHM=‹jÜO$m<Õ“åļŅ“ĶbŲµiķ.%–lɤݓP>½iː}1G5Ɣ}sƒNCĄ=ź"Ä£ä?Sšiˆ‘CĪźz’1ļÖ”ē>ōų”īÅbŲo’Œ½ź8éMÜvē&Ƙ‹nĮśśSO ĶF­ƒŒąÓ™†1žMv£åą~N½j1œc4ōśąŠč"E8…Iē¾=iˆ¹ļRž‘éZD—°ņvńŠUč;ē½1sźsO^樑ŲČėJUćŌŅg™ĀšH­y#æóØfۜž 8Ś0܊«'8ēėS) ļ\ńڜ{Õxųb;v©Ō=ź9˜4??6)ąižŁ#€Ž=iˆx<ūŌŹf @p=jeć©ėU¹Ēą2OéMRz¦¤AŸĖ­h‰b€GNøėKß<Ósņ✸ĒDŠ(‹ŽŌ cŠ\cń£µõėŠ\ńךŠųĒ4£>“!>’ZqõäP Ē9ŖxźE1ŗšLš?HĶŌdÓw™¦©§šrŸ—¾jEū¢’1R¢Š/¢—æ¶)įM €1“Å4Ń@£°ė@Q@ ųŠ;ŅR©Į ±ž)Ąi+JRpŽŌ¾ōi?LŅŠEPžō˜õ§w¢€#`8=*)ŹzՆ=qMeķĪh’©ĻÅ9"čMZ Ļõ§  Ž_é6sVš(Ś=č‘ša_N1WJPT~4M#'×ėRˆ½X Ž)ŲĄćŠ,o/zX­LēĻzÕ<28ŖJß.sŠ’÷ĶW(”ĶĖŽ{V¬,øĪyÅsv’…ĘIÆĆ9Ļ­rÕ¦ŽĒ\'”­+¦3Ó­Q¹ļą‘Q¼ĒnéUäcƒššpks)ȳ„SFēžžµF&ļĻJ•ęć­oc6ĖźĄŒąŽ“ųŪŽ©Ŗq±ļR$€N*lK5!”dŽx⧊PIDzā”SRG!lŒõÉ©”Mc- Ø„ō=zR™0½H>µ˜’mÉĮ§¬§=š8ØTŠs/y½ŸZUn˜9Ŗjł8©ūžœ¦¬fĖˆÜ ūU„lƒĪ*€“Œz ™ :ōĪEPl¼Ź~õ2*žœš£ GlóĶXVėR2ŅcgS”ŲōŖāC“€ö§«ašhe„<ē52œcš© Ćc5"ɧ`NŰüć$f¤V;¹=±UłiĮ²qČęŽQs²ģls֞OlńUcnĮˆ©¹ĘH8ėNÅŽč·繫P’J£ Įļõ«PæĖéĒZ†ŹŠ-Ę0Žõr!€5J?»ÜՈŸ²wfšHŗœÉ2ž:āŖFÜšN©£8k?"ŚE„°ēšµēŪÖ©Ąß8ėVPŒqÓ֓lV,« ø§C&×ėTž\¤}ž“Ņ3“6R傍‡ėZ×`€Xą\är“ÅMŲ'®znZ™Ó„Ņ}iāåw g§ję„åH*qÅMĪē­G±ģ6“ŠčćøłTÆ9Ļ^„bYL¤g §\Ģ mõ„ģÉnŻMVŗĄŪœµĪĻÜŪéYhł=jķ©P¼äqTՁG«&ޜSƒ'‘GF21M­A±$'ĒZ½~*Œ8ĄģkBŠĄ ƒėC}Ih± m@ć½=`R¼šrš}éźWgQPäÄā1 ]ƒ4®”Tē婃axźi“‘°ŠI·ø¬2ܝŲqWÕW;²qY±±WśŽ)&™ąó޵Q¾ˆ±¦ņ©UĮ¦oėÓ„dńŽ~µ÷L>Pp)ŖMčˆ”ķ¹¾åu#5JīpTĮ#Ö²~ŲH#qZ‹Ļ$€·¤hŪrG-ĖÉ/Qš±a5•üŁŻŅ¬Ē!Ę3U$i v-4‡vĮ¤ób9ōŖ†L7&”·§§•ƒ‘qēƒŅœ$łŗš¢­ĒœS÷ dē֋̬^2Ƶf ˜ dƒYJܑҬDüezJQM¹Ø³ äƒSłx<’J¢…ā¤/Ē­fū4[į3šppG^zÕ2ƦqJ(čM‹Š’/Ė×֞­‘ש†ŹpH§£“zzŅq čYc9ŅĄüź-Ćv7sŽ(ߒOsMBPOsŌRŒgĮĒZiķƒŪµH€č3ŽōŪpĮ`œ¦¤ŪÓhÉ÷§©rN“äĄ9sż*nĖqCV2 ‘OۃŽNEJƒUxć"­[·Č:äńšÆž½YŒ`u 4XŽB“Éj :zÖ؃¤CŽ:PŃQ“4£Ÿł³S ‚€ńÖ³sާ«sÉē<ˆ\÷fø!G4Ļ8ó×ėTwõśSŌš;ę“PBr¹p¹gŹy4äĻP͜z֛#4‹ŹĆ=iU°:õŖšdžIśÓĻNæKeņhK$£¢ōõ¦żīżF›Ź9©`Lrzšw²)Sź4;öėJ«ŠóŽœŌĪQŠrŽzZ‡-u}Dæ'zVéšpaŠ;SeoĻ֐ݬK ųā§Ż‘{qT3…rjh_Œtž”4Ķ$~v¦““Ö‘ÜgÆØŁ‚œäÕ¤ČnäȾ„ūTń(Īj¬n00GįéWcū¼ņŖ»%²`Ūp=)³Kņ…~5dćļQJ1“ĶUŒŪī,‡=śpjlƒTƒzposœPźŁ— „½ŖĶœ£ s“Ķdł„ŒvU½;;Ę ōŖW{榦ŗ‘€;ŅīĘ}MEŸ—H9#Ø5Ų„”ĢŃ2“Ē&¤SĪ3PƒŽĀž¼šdtėŠPxĶF8P3J8cĻZ»ŠńĮśŅÓWēNČ9Å4ď~U½#oŠ[™@ČĪj„’“× žU3ž–)+‚šr>¦¤CļĶ@׀)ŹÜńĄÅs\ŽŚ•ˆē$Ō©!N3Uccō©Ó‘לUň¶ÆÓŲPĢsœāŖī š{R«ńÜәŚÄ²ĄbWøÅ;'¶jønóJ$Ąāš‘$ć$}zŅ’@ąš‰$\󞔢D9ÅW0 Bõ4”›hǧ­BHõĪ*·Nhø¬‰:ŸOʑTīéҟČ隞 ¾œÕ%p År”ą‡ 8żjĖ‚)9Ējµs˜Ų)č>”ķĄtĪE&ńŒƒNĀędˆ£žĘ„TǵCÆö¢Y° ^õi¢Y)8¦“šÆö— œā’kČBAG2&̲"„VćƒYI&Ołā¦ŽR=E/h†āiī=ØŻĻ\U™·v©ą“±ļĶh¦™<¬±ŸÓ„'B;SA½$Ļ‚>•MŠÄėÓÆ5 śÖœ`sŠl³œ(ēH\¦²6;ō§™^sŸZÅK–ļg„)¹f’fšŖ„įÜŪļśÓ‹ӓXŃÜ0īqڜ.I={Vвƒ4š@9ØføźĮ"³Śb{ŅśŌ:£PīYŽKē•©\Ž8ÅDÖłzRU{龅Tv €H”ąXœNµr+Lōj;ūądc“­Ŗ «²”I†äž•v܅ė°ć”lyϧŃĶs'ŲŅVSœ~“ĶųÅW…ˆPńżjhł\ƒKaؒ”81¬E!Vąć­WéÜńNŒä÷¤¬[5`Ÿr)ĶN®1ĻZĢ€#•0lddē.$KDZypæz’)‰]¤f Œ–ldņ3S@›x4¬×qļ‚:ćšŖ×S‚ič~QÉ'Ö£‹Ņ„\p:Öf¼¤Šž3“É«0»ĻŖÄ8g„X‡$óž*eŲØčhā8¤ć ćŽõ ’#=ÆĶ€3Åc±²A)äAõ¦ēē§zžh›~~`*SžēūU)'°š°”Ē®}(VlŒœ ˆ© ×õ$c÷bØŹ÷,Fpr3Ņ„R1Œć<І<ć­Iü ō©±§B@@<z¶8ēźNӎ ;8$äā’- Q?ĖĪGōlØŖŃ¶G<}jhŪå qCī‹1¶:ńĶLc“UTœńqšpbzdŸ_Z—®£jĖBڐOõüŖ¬l1RĘĒ=Å@µdłĆwü*Ä,ļŅŖĘO®@©W‘‘éQ.Ģø¢Üd ņjĢ$õ<ńTTƒõ”łĶŠ™äō8Ą¤IOņ=MV$ćŒŅĻįZ(Ym–L¹õ?­9$„TNz)÷§ä.f[ߜŅnƐ3œg5nہõ©Š‚{Žōh&ķ”,ū UŠĄ/US„8ō”%Ź“ųÓDŻ=‹‚P<ž;SԁĪ=*²øĻ|PÄžōšEtS×Ÿ\Ņ+85<śę›Š÷½&ī8’³`zBŲźHĶDĶĄķJ˜é’*’Šb`Ązņ)źĄ.q×½B£µIøÅ&6®N„&ŸĒ©ę™Ē<ēÖ¤Ś3ļPŲZۈxļŅ”” sNEĻÆjµ°†ÆŻźGåĒ^‡Ķ;fΘĄƒŽ9§`L’&Ē殞‡ ŌŌ+’#µI"“@Éć¼S¶cJ|Čt"鏦)üõīiQr½ņ*M£8?īdly=©ń1ĻSĻõsĒ_ZšżqėEļ ļÕ±"ćśŌšœSŲäS”`¹"œSDŽć£ÉQ“V¢`ź*ĒLąÓĆ0ć< Ś;JDĮ†Ž¼Šr¹ŪĒ\Ÿ›‚~“n* cõ|Ę|·Ü™¤#<óļBæ¹ŖīłśSw qOœ|…ß3·b*A&9ĒCyĒZkČ|£“ąz= 4ģOup7`ÕY&bÜc§­W˜‘ėžł¤SŒc4NĄ”rߚ}p1RA'=N*Œg“éš• Žœ~”•Bł,^g㠚ilrCvŒµ"uĻ"“ē3q³’FzT©÷~8>µgo^“ōČć8ĻJ9ƒ ą:T¢1@ćØ0=±Rv÷¬ l‰“ęė@ˆśš°£ēä抖49Ī8­S3”ŹńĄ޼ÕŪ ”€Ąō©#õ¤ROC9Jś"f'°7€8Ķ8`N(ųĶt\ĒŠp{xūøäqM_ø9śRHĄ Rd±Ū‚ƒŪŠzÉéTdgŻĒOZ–9\ dQķ5Rďµ{ćŖęą`‚H=ˆŖ—rœ`לUFÜyäŌŹ­‡mźYžLōź=j-ǵDÄēœō¤CĻzĘS¹² 8=MMĒ~µRxZr†u.Ő@P3ƒV!`ńU#FŽjÄŻ#“[3’īLĄžzS[åg„eĀņzUv9lÖ½ ¬)cŒūSwœńéH:“ń#‚sRZ#ÜŁć®:šUlƒÖ§Hqźlj†1ĄÅ;1]t6ĄĘy"¹ĻéL°9ē‘šr” čM`ńD’ŽÕ[knć„(FéĪj¹™6ę“ÓҤLägŒŽ”ÅN;bž8?ćM\,‰0Bć'„C#yČć­Iž:Ōnø]h‰ŲēķQŽ1ÉŌŪ8ĻCN ƒŹ¢ģ¤F3ž śÓć-Ś”§Ķš/(WAќēÖ¤V9ėׄ4/œS£qēÖŖö%“+0 ØffŻŌńO(r1ĘiÆ=ĪjŻķ”D Ų?֘ģϦ­4…ąžt©nqœ*yd;¢¦yē<J|g¶1V«g”꜖ĻŲqėG+ ¢Üš8õ§õ«"Ō÷Ļįmņńüź¹d.dTóĻ~1Ob1œÕ‘l{TCƒī*”œ–Ä) Œš±u„l pqƒĄü+T¬ˆ½ĖQ7ęœ2{Õu|~U2’h™›DŸÄ2y©`ŽzŌqŒ€sŽÕl/Ź3Īkrެ+ ¾•]H»‡½j„ÕĒLx'Ŗ³8Ę?*.&Ś1Ž©HŻśTNcHœ÷÷Ŗ·-‚9ę‘å#¹üźv÷9¬%5cEąēhVĒ=i…¾ ŅØĮć­bŻĶ ļėKĻ@Oϵ,|`óW} {?7¾:Ņ1 ŽiŁźyꛁŽ)Ż‹A3ۜśÓ×8św¦…ąH£<Š`C‘ƒéOF ćž:SvńĒ„UōČŖŲE„n€S!³łUT\~"§LćƒÖµ‹d1÷5 _{<Ž*B 0½»SbĘ:óLqž”Ö'…ąąf-*Ö~_z£ŽhiNģ}«HĪČMW®M9śUH¤łFiķ Ļ“SŠMSwóÖ£œõĪi‡?•fä4‰‹œu¤#¾*4óÖ¤_Nx¢ć%NÕ4yŚ3P.qЊ•CWZ'N©€8čjŖŸ­H‡Ž¼Ö·$“ ēĻ5 æ=iÅøō  Y²;Ó ėŚš[ß„ńր^)ĄŌ;±Ēq@~ žŠŒsRPwiGZqÅ2Sō  ½j6n*2Ł4å9£>ų=(iAąÓ†;P3ō§sIEćń¤Ļ8ꖓ>ōįõ õėH:ҟ© SłśŌŠ^ŲØGZœĶ$Ÿ.9¦÷Ķ:B "@CĘ9Ķ;ž“Šüiēī~ŅGćŠhėß„/z(ļšFZu!č(Ŗ8„ bœ: ½&@Ķš*HĒŠø†¤?•3œu `ß4§ņ t½(bž>īGZhą÷ €É 3ƒJ֛Ē|ҜPŅ ķ÷¤SųRēš^ōP(:ę€ ?‡”Q@wö¢€ (¢€ŅQÓ?[[Œqœc޹&åŠŻYĖk ^€ž’Z”{k? ēĻB*“ŅśžżéŅROVcQ¦“)<\ńŠtĒ>µ#’2„ųčCb»“vŠåålŒz~5/ŁŪ×Ö„ƒ·^•4N1Ž€qG3ī=·+„˜Ļ=źĀYą ĻqÅXWqœzŌš²„Ą84œžČ.ŠæcU^qOŠŁ©„rp3Ņž­ņńĮ”Iƒµˆ£¶ælU”¶ŗżiQ‡ć޵,mĻøœ„Üq]Ę%Ŗģō„6ŹŖMKē ąu¦¼™?…4åŌ$ŠŌ6ƒ‚8ķNŚžćLgm  ŠrFA9­-Ō̚5P™ĘG=jL/gšd#*2p@©Qpɧt7Ŗ #©4ųÓ„ł»óS(©łŅl#؜ėV!AžÉśŌjr=qRĀp3ŽJl¤»–cA·„X r2@ąfŖyœ(™©£n„68©4ęV'P0©W!@ƒÖ«”c94ųŲ}Ӛ–ģYCéSFxĪ3ÅANõ2 ¼Š›•©$g©f¦¦sī*ĻQĻ21qšl D7©BąŒzS##ƒŠ“>ż(H°*ż—QŽ+:ó¹e&ĒĻ5œÖ†“Ż™®®.OzEĻžõFö`·sG#>µœiÜŅUU΂ݐ ꮬĖäõ<óŠęcŸ ėVįń€zōĶg*7*5ō±6­óI•ć­W‡ńėI,Œ@ČÉĒ™F:ÖšM+Ķk”eÆ©•±Š8ÅQRćæ&„CņŽĄŠŃqŪRÖóž£ėRÄß0ķéT—;U9©ä{śŌĢxĪhFå×D]ˆåEøąųT‹pF:UÄŚ:cš|A@✪hkŠ­ LyģjH­Īśø •«77оRšĄĖŠgŅ„H[M[{€qķS¢ƒŽ™ÅO7p²Z”Ņ»ŒTÉĘ*²øQ€1VTe$Ō¹šĒb¬p‘:c­Y³…GPy©ŪŌa5=¾y=G­g)»hTbJÖ±€;’?*’ŚŲ*äfŸ-Ęjż¢€lŅōiUŗRŠwŠ`ˆóœäŅłgŽüb„×$Ī„SžZ«+3ŲØČŁļҘPć¶­hČsŠiĪрļš9:‹œĶ•š2(H[`€h3ĄĒjDĘÜ÷żĆŚŲ£±"AŒd|ÕpąōŖqķV©®¢ut+¬G¦qéšxˆz’;ŌĄsžzS—Ņ“PF|ģ„Dp)ā.@Ļ"„ōĶ('?)ķT©”9±éRF¤Žų¤R=yŖŲć<•¢ŠD91ų϶*EćóØC ć<ÓĆc”ĘjԌŻÉW€zĘ‘Č=©€ü¹µśÕi¢Iī>ƒ½qŪā;ō FIĮiˆ”¶;šĄŲągZ9Ķ;'ń€iö ·ńzӐ։x­ O€y£?+!ŻņēłÓLIڟ‘ž¼ā“#¦@&žv Jz¢€>”‘±ĒŅ;`{ŠZŁ'HõęŸĘ=ÅVV>½ŖXÜcßJZŗ’¹ķš« Œt§³eqĶ3®(rø™Z±Ē©Ø4ųŽz”>…¤8§’9ØćäśSØōė[Gbd“ęĘ8©<±Bėȧ9ŒsZ%” ŒxĒZB€r:Ņ—ķĶ ŅŖČ†Ųõqbhҵéżji Z” ·žOŽ=\×Bž†MĪ; F|µq·©Ķ1˜žų£œ,Ę\ĶōØX6{ŠŸ#ZC‚9¬Ž„&AŽ‘—ŲóVpü¤óOP”G<š\·1@FÜdt§ˆų÷5m€ĻųŠ:ćš9aĢEj~iZ2©×ŽŗT‰éŽqÖÆ‘ĢŹH4ŒøļWŻ:Ó]ļ­'R) ēæ"©Īyę­Ō}iā5ĄķMS1QPõ©óV‚ Ņķ…Z7+"ŸŅ„PGÆ5*JrǵRBééF)ē 7֚ģ”ų$ńTōÄņĮķMņĘ;Š–ę¦ķŠ"¢Ā1Į"œ°óŠąUš)ņ”s2ģHČ„ņG\š”qĻJxč*”S3 ŁĘ)Ė\T¤{ŠNzūbŸ(]ņĘ­Ꝓ8£õ§d Ž™ę—üꔭiYˆ@qJXŅć’×L)‘Šz€»’»Nõ¦…ł1Ó‡Š.ģŒüqHXƒ×ئ)?żTs"œŸz|}~‚¢NSOޚ`L•0č*==)į½é+`tŖņņiĢÜžÅČśŠOć„2ŸŽ=ØA§ŽvĶ0RēŒPóĪ:ńE0cšUĘ{ŠØi3ßµ-ŖyėQ±ĻCÅśq@3sޚHɦ}֖€rO\TŖ01Q'Jvx ēœS»uØ©AĒNōśNžäR¤ē9 cŽzśŃžsĪ 5į÷}(b=zÓXōĮéK‘·ęP—š‘”ŹB}3@“ĻZc}i™=óķKž=hh t¢€qķGoz( ¤¢Š_„*“·ōŃGozp#8ōō§EGNCŚ€M'Ū4æē4Ńׯ4£ ķĒZ?‡ƒšąõüh(Ī- <ӊądJ(¤s@ī֙æĻ5™ß‘ži§>ō.žqžŌ+b¢ĄÅ< zó@« RĻ­F28ļJ¹/Ļ„Kž1éE›ƒļ@ĢBżį¶¬ĘOŖ¹üŖÄ 1ųWĘɟH„t_VĮö54GА1ĶP-’*hŸj–®‰¹©£Žz ± ‡=Md¤™5ÜÄdSüĀz¦Ÿ|sRFNE6ˆæräG-ÜUˆ=ź”M×ļgڬ#œŽ½(čkZĒ8ēŠr“³*r8Ī@§£1ģEN„5Ō± ąžÕ4ē?ZŖ1×µOĀäjMŃv2@źsR‚vƒUćœšxbø·zŽQó„tü)ŹH>õ sĻ=)ł$µ”2.E&^1ėOŽ{u5KpJž‘×PŠ]ŲµĪqV`“†#Ū5@×µµjÜtĒ^µQŲõG;æ„Mm½O~œóRB~qÉRÄdćƒĪ:ŌŖBŽsŸ_Z­+ĘjLē‚H¤RlµG`zb¤2ąĒZ§ øĪ1RČķžsSnå]–•øšš7Ē~µOw8^…zÓ”bq‚phhZšq0Ą$óR‡ĒJω±Ž„VłµfŃ¢¹yu9éV`lOQšĻĄ=*xŸ”öĒZĪQŠŚ&“Ąź ]·o—®+ĮļҬFēw®YĘ汚6<Ō»4Ė „p3ƒÖØ£äZ˜É˜ńž•š„Ų‰;Kä€2Å …q޾”špsž¢—q 95²”–†J) HPgŠzE<­‰ąqź)T½MZ»Z•&䕳F{E¶s֟×֞­µFŅi½øÄ¶ōČśSĢ;`äöÅHŲ}sOO½Č”7Ō«v#H[ę•a|ć§„\ƒō5/qŽ8ėYŹobłlµ),XąĄ§"tżjŃŚS­0ąNhRd]&5#ćøļV A»ƒėL·AŠš ‘ō”ĖA¹y’² ü¢•_\R«;Šq Ÿo\ÖJįqČÄ(Ą9<ęę8źpķėMˆœTĖ“Žō­Øłš’>pXŌāGńM] p±§Žž”ōģW0ü’sČā˜ČŲéŌTŹG\ō©3ĮÉéQ°­r¤ Ż9éV"=óR1žäSćƒTõvBÄH@=*X—GLņi‰ŒpMN¬FEMŠøä`tļš‘©źpG~˜8­+ÉĻNO„+\Ė1ĶĘ =*W|äsŠU(ĻB8õ©ĮĪG:ŅäQõ$ßņšM)cžćPž§“Ö¤‰±Ąć5VЉ‚Qõ«p„VĪĒqš’6! >–Ķ;g^ō\ŗœ šj‚Čv‘=(.ÜN=źIĖK"ĻŻ^isŽ•ćĪ)ŹēĻ=+R-”.ģŽ½=)Tgއ –ēµ>ƒųS{h$Æ”)^x5üŌćÖ¢qƒŠ#&÷ EtHōõnœŌ+ŽNH œc©Ø[ƒŻxÅ;xŲ Ōš= ĄÆ½]‹ 汩Uł‘Uš:ńRÆb:Ņe$YcR©ē<œŒŌ@摐E8ż2*.Sv'¹÷śŌĮl ¦¦AśŌńœw<ō©h äuØÜsž”¼šĮÖĄõ§Y‹» uųśä“õ؇'‚Ÿ§ÆŪHOҟ€žõCœ};S•ĘyĪi¦Jk©6pN3ƒŽ•zMFĄäJx9^¹"šŌd©×©&ŸßŠj|w§Ēō¢żÓÜŽŽ”zƒLn€֚£ ‚O„P7”:Ÿ~M+ŸÖ¢ž*D>¤Ž(L`Œ żjAŠgŒqKŒuėCRø(¤9qžüTƒīńLˆ ū‘R¦1Įüj L^AĒ<ž)äœ{Ņdc"ĀżE Po õcŽĄTˆĄŽ1Ž åö§©Ę1łÕß”›W&ß”™Ē#"£Ī~éÅ.xā“R!­Žēä?7éœāžĄĖõ¢śÉQ±ĒqJHŪ’pO šéĶ?¼ū։é©#‹Ÿ/NŌƒÓžheéqŽōj ÷&„½LŸ+u<ŠÆŌŌÅøĒ"©0”K1?_ZWé“U#ŒöėRĘŻ0kXŹęvšy§vĒ# Ćtā™*ąć5~„1›¹ąž)Q’:c`{‹±¢Ģ$Œā•”Øö5/9©$sŒžõ¢–šŅF}ńNéųŠ€±ŻĒJr¶š‘6Š”‘ėĪ8¤-ĄėŽŌÓĄy”r3ŚØV —įOV8éĒJv@äf˜™"69?Jʧ۵Uœc94nA#µW0œIÆ|SīsƒŅ¤€+/5øŽ {֗І¬ •Ąž4¼vĪM3ŲSŌ|£Ō‚ĆÕ¹ąóHO>†‘ųļƒėH§©ā©H†ēv3Rnąö5ĘģŽ=iėŽ¹Ą”1č"ć=óŠq&zRG^“ģē‘ži”ß@£§‘×µīńĒĄ¦MÄBŽ¢ž~t›°)w QO@m½*21œšMŸ9#"”dž3H`ričŠ(QƒŚœˆ01šn@„Üą•Å4Š®=zńŚž¤ö8Øws‘ļO݁ן­RdėbuįF „Ī{œÕQ.[Œš‘dŗ}j¹…b`xĒ ā€rŲ' ¤)×éH½:š“Éå%N¾”ńųŌ[€aĻ8„$cŖ„Ń lø?Zp8Ļl€=©Ąś®aīOZp8Ą·n{ŠU8ī+޼­ߟJl_<ć֘4™ēŌĶącØāIĻÆŅÉ±”¹ē­/÷¦!)ĄŽ›œU#9Ļ4184ä#·\R'O­5‡ėEĄx#4µ88 ē"Ÿ0‚GŠ:ÓĄ„ަĄwćKŠdžŌ™S'šcpxĻ4ģc„#Ó„&@É„Ī8©@ć=)@ąR·@#==éŹx0ńM"¤ ~ąĒÖ£PvéŽž:rj“`8Ÿzw~¼S­“'ėĶ õÅFOjU>ōć×­(¦ 1Ķ?‚{żhķ֛ž88Ķé@éy ‘×֛K“Š\÷Ī=h=IĶ'ƽüØ@Ē=čėÓŅ“< g"žzó@Ī=qA„P© ÷äSóޘ:sNCŠpéM-ĻŠ})WJ@N„>ŒQ@ £<})( oÆj\ŽĒµ6Š|gō©äūTJxœw ~¦˜G<Č”‰Ļ±€š=ØTb‘”gš§·O„ ū½hø”RöźhĮ  ph`iø#„HꟓLŒ9ļN åī,ŒqŒŠž=ĄqĄ4(ŌČAüėäō+A£w9,8ķS© {ÓH§z’<äóJćhtdõä{T±³zcŽ›$SŠüŻjX®JƒÖ„F*88Ø ōć5,}0ŠVīNņŒgžõ4DdēŒT0ü¼µ#tō©iňóóuąt©0Ō·onµ"`óĻj,ćīńRDŪTdŌ I“ĶÜg9ō 7pyÅ2[,”w5";U@ży©õ#¾zQa)X°§ ŠŽjÄDv8Š£÷éRBÄ zŃŠiš10ĘėҦNNzsėTā`ŽĮ?ʧ…łü+&Ķj AąąÕØøĪ8ÅS‰øę¦GĮźFj5„ć=)źü÷©£ü½ł§ļĀ T8¢ļ”wĪŚ§œŽ“žf“{ÕrW‚ o™“‚OÖŖ03r} ŽalH„G*ŁŻÅUŻĄćüü¹Ķ>[} ©/^ÜT}[®r* Žü✯€9ēIX‡+’oJ”·ŠÆøćŒę¦ˆäuķNįŹXŽC“sĪ) Ąć5Œ =HĻųš.W!"Æ:qR`gõ¦ĘNŅs„HO@9ļI²Ņ°čQq’{SŚŪņśS2AĄzŌØŲ1Pī$…ŽņäR4{x!‰>µ2H÷"†u9õ’l¶’±€£ :S¶€? p9HĘ)Iī‘O˜‘Q>Qׄ??1Q—1ÉꞄŹŖģNCŌ`ēŒā„UöĒź5l¼v©7g掄”ša‘ߊ±Ī}…Bā¦†8ĶKl»“Ęp¼š±;ōŖČŲ½źE'v‹CRl°®Iü*E8=~µ])ń·=éX¶[BN}h9ē‘QĘųcOŽ”8{ŅDHv@l秦sĄćÖ F•,l2õ5VBw& Ļ|zØüE7~0sŒqN099=«?yBÄ)•’–4ČüźŗJ1ĘqRłƒoQ‚*_1¢'ČŻ‘Åų'žÕ[Ģ9į†1J1żā¤“!¶LĻĻZnsŠƒpć'œSć'±5v ō'\~•0aŽ*²Ÿ›8§©ĄĒ"‹äL`E;' tؕˆQüY§ƒŌƒNČnĖBtr?‹J9é“U”ū°µ*cœēŽ¢A'¦…”b7O ą8ķU÷ɧĘÄy(K"NĄśūTČ’7_„TČź8ķĶ=¦ĆŪRīA$Š’6ł RVłq“’Ö©¾Q‚}©4QmXƒœž4šłSTĮĄī 9_°&•ˆMĮĄėž;SĮĮ8āŖ« p{TˆŁ={PŃwŗ,ĘĆb¤ ĒÕ@ŲN"œ­ĄēÆz,/"Ļ™“Į"¦‰±ŌŸ­TSņŌ±¶:qC,—<óŚ”?=–«“‘łŅöÜsš„°QĪG'А7Ģ9Ŗ`žÄsOSӞÜRqu¶iwuǽTVĀ÷n䞔ŌA½ Ŗ}*X˜ ÕŸŽ­R!p)Ź=“ģh€8ÜAÓL€®AĒqT•Ę ääR«dvJ•UŪܵ‘ÉÖĪļ~•'Ō‘OSųqMZcę§õ8HŠxēó„ķŸj9‚+¹7õĪE>6ā««sĒaNńšƵµ,īļ‘NÆz®§ŒzӃ`c©X,Fܑ۵H­ŒvĄÅVVé’Õ"ć9ä 4BŚæLւüqłÕu$/Ś—qø¤’M ԜńĮ=iźNįėŠ€väēņĆvVL‡”6~L“©ÉĻ< …_¦8„óĻ<ŌŲ,+FiŹpøĪ U…ąÓƁłp*’°Ærź:ŻéNœUO0pw‘NW'€w%·±d±#ä8œžÕW?/\*Do™y=)Ž)u. `sŠ^£’ÆUÕž£=)ūĻLšŸB™(n1Ļ”·”ķP’:r7~µ] ՒÄ*T<£Š‚3ĄōģiŹp8&¤«“#pMłąž• 0Ļ x#ńŽ)¢[m’)בO pĶB>^zRƒéĒŠ=v'SƒĒ×֞¤zō؁łzŠsĻåI°Š°„Ē֜Ī6Œńš®=)ONōÓ¶į%”6xĪzŅĒŌrj<ÓԐ:žµ\Ä„bĮ8ćøō”y8ļPĒs“O zēI²lN Uü)Łł\>N3Ą§n÷4ł‰±;}Ń׳S”?8äōØqÜzSŃĘ_0¬Ė¾śŠ•Žå8Ŗ%Ę@œS–lqśŠŚ2!¢YN~“Ÿn*?0`ąō¤ŻĄĘOéÜIo9§/ćķP–;}ńN‰³Ęz .,(ĒŌÓĒQ×5ą䑊#qœŽøŖRŠ–‹cqL zcÆzŸ8Å4¾3ŒB*¹īM»–8č:NRĘqÅSąd`T‹'#“ŒzÓē‹- sIø^j¾üńœ~4”ųĒ5jbQ-Å! H'‘Ķ.šNA ā©™>\{RłŒtģiŖÄø\‘Į÷§,€2ŲśÖ{;mĄ9Įõ§#”Į§ķ å.¼€€I 1ĻįUsó¹=iŁ9ćŒU)ƒa›sĶ&Nz‘ŸZ‡$zę€ß1ķÅ71r“ļ;‡8ĄÅK ^¼¦¤ć4”¾SÉö¦¤.RŲ› Ń»ēWyō#Š]Ċ|āä-ŽpH§ņ’jžģwē„?ĢŪĘyŖRRĖ6ĘyŖqČĶWV9ńRowĶ5"yI½(ÉĒZ®ĢĒqN zäÕs‰37#„,0F{vØwĚrœōĶ B°šß1Ęzw§©Į5õČĶ9XԃUp±`>½(“åžµ'õ„mĄėŠ®bZ,«t>ŌķŁ8“‘ÉéR!ē¾qT„ œt&F¢”·”ėPīŚ1śšBN8Ļ5|ÄX°­Ļ^*D ō&Ŗg°ĻõcŽŽp¶…ō>†š[šŖ®zsN.Ēā“SBq!ĖqųSrF„9ąż)@$ūÓAsĒĖĘiU°ĄūSOŹŲé3óu¤•“¼Še==Ŗ²tź@3ĒqUĢÄćŌ“9=H"ž™ʌdSŠ`śœuŖø4“]‡)*õ<ż)ź@ź$/żhŻĒ®i¦+±Čć­ >½qMLvlKß½4ī"DbSŅ„VׄU-ƒ×šr6G½RąŌ×½ŗŌQ¹łÅ;~F \ȶśö¦äzšG98ō¤­&Ąvģ½ŒŠׄ0=(;Ni\ C{ö§©÷éPg¾q‘Öœ­ƒÜÓRŚ޼ā†oCU·śQøē“WĢ+äīėŚ…?7~•nŁéNϾ(øģOÜuąR±ćŒŌ ŲčxÅ)aؚ®bldžĻNø„ĻuÅE’?pĮi&£”ü½qJO`j>łĻįN_ŗĪiÜM^2E.N}jaĄäbŽßÅUqn£u0śŅƒEĄv[Ø£9šMÜ|“¹ėŠi€‡ÆJA֔šł¤ĄrŒķKH:ćŅ”õŖVIéNŠe÷¦‡­*œS8Ķš99  sĒ*<ńÅ r}čF#Ķ&~“Ó@  8ķŠŃLœšp9=hŁćØ=é™ę—>ōö=©”sښO½:Š½^)hō u¢œøŚ1œP{Ņķ…©4ģ QÅ5HϽ:€ńųŅQAõ Šnī)IĒրŠN‹Ęri p:ūPئn9 ± ~“åč)Ŗ)AĒå@ Œ )„½(Ļ=zŠØi““%!śši?.G¾q@4‡§>”Ö9ö¤ /ėNØč  Z\ńļLRqI“ė@ĻoZ3Žiƒ§āŽ}čsĻSOSčj<ū~4£#æZp©*0~QJ[ӏJs7 Āń爓 ųnM_\½OÓį`Æ,=?Jņ’žŠ’¼=„}¦÷ĒZD™ˆŹ±Ąåن: t¬ŖW§iJĢ×=±›Ž“>’Īæ+hßŪūQ‘oōæhPZE.R-Ji HØSÅ|Ė/ķiń¬ŹÄųóPRI8 ø„qĖ3¤‘¤(Ōšę‚Šł¶#ĻZ³ ŲœU8N Iœr2+Ʊķs=‹ŹŁĪÜūЬwc'«#cȩѸėK”«é©eݜö§)ē#Ž*įFޤu©S;3Čō©±&ÉńżjXČÜpHØS;2zö§©Ęj¹e˜[Ÿj˜˜rj“\§aEõ$ˆüø©½"¦‚sNŒa1œWAŖCԜTŠśę SŒ`ņ:ŠœøŌļ –¤±ż:TˆÜƒĻOZ… ō#5*٤±ŌfŃ,MĄźMJŒqPĘxśS÷?Æ­$Nńl/µJŒ8ę«Ę2HĮÅI\ąEī]„€82>sš¦IäTŹNAųÖmsQ°ųĪ8©ĘzóZ¢ŒwuĒTŹŲ=¹ę§–英ĖĒń ԁĪįƒĮŖĎ$L}sG"č5&[ AĄĶ=~•P:š‘XŽ Į§måĒpĮżiįĪ1‘‘UĮ#·Zss܊ie…aīiė÷Aę«#3ŸZ™ ĮÅ$Śä±¹ėłŌčųf«č9§‚OŻ<{ŌbŠ~@śÓÕ¾ ėUƒƒėSĀ÷qAW,‡ķķÅ=cœ?Ŗ§“Éö©ü½Njl7&ZŽAć4»Īp ÷Ø£œńųŅ©Āąēó”$&ō'rGaNœrzUuĪ2O*AĄć°ć֝…«-FŲP3ÉiTŻq‘ׄ@§·?żzv‡ėSbļbŹē99“ØpŲÉĪ*œ`8©ü¤:S±;“†ł:Ž*DlŸĆ½URzr­J¤ŒcØéI«"‘e[ž3R£lĻÖ«)Įō©#$ƒƒŠ–W5‹qžx©7y<UTœpičŪG®}ė;Qi[€rsR«¹RAUOĶŌōÅ<±ģO4rŽå„cž§ SÕņ8'5P6Ņ{b„V;}żź—rrĆØ&¤VڽqÅVL ϵH¤ē‚i±\±ņ:š:SŃłĻ8ĒėU·cæäb *žPęe ųĘ;Šr9łŖ„’1ß­H‡®2)·bČr)蹁üÅUŗ`ūSĒ õ –Ėa€8Ļ_Zz·Ź9"«r;ńĮ§öąõŕ~F*U`“Uc<ŽŁ÷©sėRÕĀ×Ō³sÜ “9ķ€{ÕT gž¢„ ׌T°i–caŒgŽ•[ĮgŒƒĘ;SĮüMKZ œ{óŽž Śjœ(N\ē” °§ Óš§;ŗÕuČ\dõ©œ’.TUō&BqŸAĘjDnƒwā««‘‘’*Dl%;h%fMøēśŅ«0j•?QėO +ŸbŹ0ĒS·œóĒj'”ĪM<Ÿ“©88¤ŃI“!„HĒ\T攟;S—oZ,¬'u¹eOĢ2j@Łcœā««`cž)Į±ČČā‹ H°Žø§nĻsŅ«īćÆZy Į§dUūĘNsšv’Ž *$8ÆNōńĮėĪ(b±0c—ƒ@#h9łŖ8ń»Æ t§ƒ4lŅđ·ńR/ĻJ€tČĒžåėŒž“tø“$ Ļ~jDlqČ÷ØG ćŽ)ąńŠ}høÉQ°yī)į°8É5o\gśSĮł{Š2U~;ÓÕŹ¦3Ēj€r?:RA|nē„kƒvWeŲééėNN¤öØ3ŽqNCœóŠv “«g•OüŖŲäSÕųĻzA} zAŠx|&yØŗó€ėN,8ź(jįŠ²`v8„$šŖ­“ŌŠ”¶|ŃĖ`¾„łĒ×ŖsÓ¦?‚21Ž’Zz¶8õ¦7Ŗ&É ōćæZ‰X’HŸ¶‘'A? yźi™%r3Ņ•Iéß捻²Q֞™ČūĒ<ńLĻĖŽAœ§Ž2“t‰sŒSŠóÉč*£1J­óqTµB–…FĢzP¬AóŽMAæ>ÜŅ£a±Ÿ’]gfe Ćż)QŗuŖźÜē'9©7~tģīXĪ8„R=j¾ģt f‚ĮN7NĄäZVą`Š |Ł&«£ƒŅž’JŖ,+ŁåsŽ X68S‰Į‹rҾœŠNGż*¾pG=ŗfž[ėš,7±a[ Įā†b8ÉžE.sōķKŌ/”*æ8ĪqNßļš€9śÓĘ0HÅ]‰,”8<Ó¢nŖŖĆØ©įx<Ņz„Š™ŗž>”»æ•B[Ž˜4²s“Å5qMgåÅÄ޵~Nž“9ćÆZw%X²ƒŠz“Œ‡šOÓ9©Āš3šjLrK”(<¢€vŽ9ōÅCøö84›¾£ŚÆ˜‹a³žqŅ•$ĀžqU‹~P­ņ÷ł…dĖ>a)ŽH§FĒōŖĮ²qĻ֔w#œ |Ā劳’OąS¾„ƒŽµn:œśŅ‡ĻƵW0¬Jzpp{Ņ‚=Ļyąš]ĆėM1X—pķրrqĪ}j=Ć„/ ē§ł®+1źżtšj?.GZ‘sŠgФÅn„ƒlŠUĪ:ÓĒiĮˆ„Rbõ$Rpzē8§©ē#9ØŌœdžhĻØ«ęÕēµ8cU|‘Ą4ąÄ­R‘6%Όc‘ĒĄłē4ķĒw½W2bŌzØc­-3wō)ČļU¦Ā©Į§l8ć9¦!qŌÓóó{P‰jĆŠ`~£§¦dēå9ē=ø­.‰³ŲĒ䓊==)26ņhVźhø[BUhwéŠ`8=O"ČM2lHzqÅ(ś‘ŠbŸŸŽüšx<õ«VčHåM8qĻ“ ÷?…÷4ĄxöüéńžĆ‘Q>߅=ߊ“аqސć”Ķüć<ć4ˆ=x5WDīH0?Ɯ„* N<”ąĆoō&+ ę—6*4n? PÜć&®āh•OĖ֜­Ž9┨4Ęqœžõ\±3šŠ_š]ĆoZw `ĒJpą?:Œ1ķJźqEÄÉU¹ćRėČØ7wö„Wć‚Gzµ"KČļC$T!†8ĪM4Ō‚ÅŒžtgÉĶE»čĪ;õéT¤O)!8éžiC~b¢ķėJ¬GåO˜v&•ü£®j Ąū)sśŃĢKV&SļKßæ£JPF89Ŗø‰Aļ“KZƒ?™÷§däóMH sƒŽœR©ĄćƒQ’Ö Ōs1X›qļ‘švī:T ųō§üŗÕs“&C1Ó½(?.j<õ§©Ē<ńÅ5"lHĖĘE8ž0J…O§—?/“O˜2ŸuČŖsP†é֕OĖO˜D¹žTāyźj4'Ōō§uē5IÜV¼ōåūæZŽ§½9OĖŽ“DˆNq“Ņž^yØ3ņć8Å.N „"lJNREā£ēh'š|ĀO<Bœw<)½ŗžh®8Ķ (õéNƽF§·JPNx9÷¦±Ē^;R÷ö¦}M.}:Óølć­=If£v$ZPF¦˜nć® .xお<šzóėT….{óÅ7<榀øē­ńIŸzSÓS=©ÄóÉ4ƒ8ę”c§„;“%Ō3é‘éOˆÅGō§zSL- ’„›üG®G ķŖń@ėųsMĶ('„Š!ĆļqžE/AŒóMž:āŒńŌäU&‰;śŅd})æ4¤įG©ļG0ėKžŁ¦>“āxśsM0”uėƒIE0ząv„æze.{zPč¦dśšLŸZ“ļFzsQōqš\ūšćJ~½Ŗ>‚œO.s@Ī?*\ę™ÖŠvźPŌĀ{s@ g®sKžÜńL4gœŠ™ōĶ.N:ōØĮ#ŠR}8 čh=Ķ7#Æz3„ Pi qK“ė@ E 8Z<ē½=y„¢Š)GZJ(@éJ@“™žX£<`ƒŠ\c×ėN4ŠGqFG=FhÜvéE&@ééĶśPŃH?ZZ Q@ RūM¤ŻĻzp£#hēO`ŠGf,gč+ĢÆšÓ§¶¦“(TŖ×"ÓæCļŸų//‹Gų3į½Öš$ŚÜ“M ČwlQĮ5ųæÆßJ× K¼œ’Mu_ž,xĖĒZļö‡Š5éõ{Ņ0;ä >ƒ å÷×]ČIœ”šMyµ¤ŖKŚ>§m(ʚ“žØŲ–iœ±ĘūĻPÄē†.īqĻ™žō–÷¾Jx¤\»LāŖ½šŽzõ„ !»·{3ŅӀĒJ•:dńÅ0}Ń“ŚœAڲ:Ū&‹sš‘OSP)ē=*hÉĪzŠØ!xzT±ŒpH隅pœz•ł³Y¢U`HēƒŽ¦EŹqÉœ—µM£éPŃqdńu2mĒ©ŖčN0}*h3É’"””N„01ėĶ?†ŒóŅ«‡éłTŖ@P2xėÅ udŹ£ Š|xŻŽ¢Ž§Äqž¹÷¢,•Üž3Ž*PF>_Ā”ü³J§©¦īƘ³ü=8§§ēÆ59ĄēÅN£Ż©ēƒŸJ'“œU~2GCŠ’3Ó$JBčYBSĄ©Qøć5]ŻĮĶKž2:Sø&Lx9åĪGQQČ=©į‰ćڐH°¾§Į<Ž3Q©ł1N_ŗZb&ĘvČ©yļĒæZ…OÆõ2½6Uō$LļRÅé“P“č >#…Īhč+“) {ūT™éĒÖ««dēT™ĄėĶ&Qcå?Ņ”cpŌ¾`횘1ĄėĻST„É¢ėŠ‘3J=jhĻ̼ŠÕʤL2·­H¼LŌ!ŗŠu©7 DŃōązc<~5 m_­JŽųā‹ ”géOŻņõę”VśÓĒ O=)Ų OšqА5WÜ2yķR.•=‰Į9§¦0j~^)Ąōō°īZ“Ūޜūņ:Ō*v0qŲS‘†ŃŸ„4 “©ēńOCĮ‚”w„VļĻ„)1(,0zSո2N@Į#­LŠgµHÓ& xėҜ$ķPĘƧCNS€pxļKp“-FGRqRŒćš©ĮźqŠ•XązⓉ7ģYFšqśŌ œ`c>µQ[ Ō ē‘ĮōŗŃ8éœÓ×·<ŌJäv?…ų8śT)“‘“ō©U³‘šOa“!8ƒõ©T€ŲƒėP/œzԁˆć9üjl±:uĮćō įø5L z° 0yėK”VīN1;b¤]½}*ø?.;ꤋ…ĘI5÷ X˜:ꜛ±Ū ŌiģMK€:µ%„u įӌӕøąžj68Fy” Ą©ҹ-”=9ȧ–üźĘzbŸœä`äó@µdąƒ„;ßņؔć¦~“õnÅ+ ĒBXˆ zԃ…ē·J€Ąü©źyĘy¤ü„Y·aN_•01P’ӕ¹ī”j;ō&FĪĄėRä™8ØČąö©€ß)=)1ō&ȧA֕šˆ“ߎž0¤–L#œb¤Ļæ"”ĪėĻ5&z~T •[Ž“õ=½E@ž5"æaœc=8 w¶ä«œšOJ•GMD¤Œö„zš‹„IĮÉĘqÅ;ųæƒv'§«€OAF£Óbp@ĻėKœ(Ē#½BaŌ zćg„?QŪBbA^)ń±õŖźH91ĶH™ŪĒ­ +‘2:ÓŠœ–°ØąwjO\g…¢±DŹĄ/§"6µ\„;<œQ`L±œµ =8Ī{ÕPpzōā„Gćø©’±H[·„(lgš„‘’9¹łsėT•Ń2'S•8÷©ń×ZŖóO-Čēõ”ģ˜œ‘Œš8©ņ}qUóŽę)ĢŲ\Žøę¤~e” wäÓĆr„VG=yĪ)KĄ?Ži“ E•aøńņӆ~õ][Žž­Ž§ƒļEŲ;2pxÅ(bOįQČ9÷„Üzēš¤±aO½9yŅ”Œńü©U¹ąńФōŃ`8ȧ“ĘxŖźŽ‡ņ„oéyō,n“Øyģ1PėĶ;vtIaX/9§+µÅWČ-Ōp;S²:GX Gšš}jHŪėģjŖ‘’2zSć‘ō””^ŐĒvsŸ­=_ėU²@źyļNmG”¤‰•®YČźłĀ“„@Xc®MńšYV9ąšpn;ƒUĒ Ī)čAčy"¬’pݳJę;Õu;sŽ3֟1ƒÖ–Å^ŹÄčŲldóR+‘ß„VĪ3JÜąŅNįźXWė֜ļœf«”@čE<7čæB'SīÅ<1ģqUՉéĮÅ.ļ—­2ļdXÜG ә¾\ƒĶWS… )źy¶(b% r9ĮÅ<;掕8ÕĻlӇņ PļtM»åāc§5nx<õ§);»ē„-Ć”.rp HcŒśŌõ#§­†ńŠ~@®X' ņ)W“ŌäŌYłxĶ<`ģ(n¤€ąuĒ„83Ś c‚qޜŒ89#4Č'$śœżhĪ;‘šˆ7Ɂ֜8ļķųŅaĶ8«8Ø·cæā)ŹŲć4tęH ƒŠU<įOJvAiI=l ¤ū‰®ÄŖÜcž;ӁćĀ¢nŚxą`w§ĢgŽ S”’õAžśõ&yēƒT„”6$½°)ģ@ “P‚÷§@ōĶ5"lJԚU=‡„BCNSŻjī…bS럄!l(’fą?\ąxāÄIĪIÉ :ō¦NϦ@§pŒBŠx,…EŠpM9ąā©H¹ 8^8õ§p{ę£<7šQųėNā±.qŒg„.xØŌūńOwŖ¹6™ŪֆΠ¦īĒ­*uėĘ)ó|gŽąāž”ķQč@ć­*ö’Uō‰3~(Żłbš Š<ē„R‘,œcžŌīqjˆuĘxšOLÕ\ƒy>Ż©ŹNާ„D;õžޚb“śRœēø¤vĒ«ÓėT”ž€Rä©ōȦĖ֕x9É\DŠsõõ§vōµ@>¾ōįĒJ¤Ä=z3ŸZĀąu¦©ōϽĄ=iŻ ÄƒīuĮ ©=)£°ÉéKœsLCĻ^¼ŠR}3Qƒ€zU$ géW“‘ŌS =½)Aēø5Iƒ“šQ‘Ņ˜įJ8ē?Zw"Ċ~Q×§ZPp½O4̟ZPN= UĀĆĻŻćŠPxćŽ*<ž})ĄÓLCĮ?Zp#ÆjfN"Œš1éUpžĆJ:õÅ1Ož{QéŌ愉 ļŪ֚O¹ ’@ēŌę€ŪÆjrœ¼cŠhązf‚i§bl?' ÷„łę˜‡ž ńNĻJ«ˆpś‘õ„Æ4ĮļN_cĶ0žE87÷{Ty÷É„Žō&ī0:Š]ßPqQ©÷§¾¦­0“×µ('SĒN”¹ĒC‘Lžx£<ćҚ8õ§)ļß ŸĀœśsLč{ņ(½()?(ŚzP95ä?Z\ķčj¹€~@=ł§gŒŌcŠä҃ĒZ|°åūž” š=)ŠxéNĪ)ŠĀóåJF?*NœQģց Ū4“ƒŽ9Å(ėō /zŠÆzn{҃ĒҚ`;·i{f›ŸĖµ yī8§Ģ‡AIŲāŒóŽ“< fŖą8QŚ“8=č'ģńAüqIEą}Ķ7½ģžp)“PŌš9„?\S"ŒóšqėŁM$šAõÅIށ֣ĻēJõ ž“£Æ\S2;g4¹“½śŃœzLs×­ <õ4šO©Ķ(n8ėLĪzRŠ·}hŻÅ4Q@'>“g=)ŠyļKžs@'SłzŠčōS>½©sÓ·µ:Œö¦ēß&€sZwćŠ;Ņn梺•!·’iGH]™ŗ47m@šōś×ˆžŃæ¼)įś×‰“½gIÕolG— ŖÜ)fœ`®sÓ?•~[üwż“ž,ėŪ ³Õ"Ьņp,Š#Ū&¼źłm+ݚBJšA\żyųēń7ĮŸ¼9>£ājÖČD»„ į„sč×Ā’ą ŗlWV^šĮ+ķåʦB’C_˜_~!kŽ.ÕćYÕīõ äĪ÷–BĚóŁn%7sq‘^}lŹrŅ(N׬ķč}łŖžŪ_n®ž;-~Ā3 ±’£ė^=ūB|tųć›/+ľ'¾ŌųaĪČŌŗ¼W‚ųJKQ,Ÿ#wsUoe-4» 9C‚[¦+…ԨݤݾGLpTš×ļ’†/źŚ‹ÜC"»Ŗ°RwäuIü–HŁ›$ö5®_oø+:žTžĘ©Å4«Äy6įÖŖQŲŖµn¹VŽD2Hf™˜³cĮ­m ꎯs$[÷3Ұ/®J»U[³Å2ŅźIfQ¼(ī;Vü«˜ss{Øé5[›B ¬Jʼģ'\ūjn8ƒ­,±» 9uRq‘ŠŠÅvŒ±Ī(TŃŃ)I¤®zčr>µ"—©ŖńžG\ՅÉ^ø¬Ž‚čH»ÅN¤&«§#ÅJŒ Ą=ŖXŅ&QĒ=ūŌ‘“Žõ ČĒJ™HĄZĢobhŲ ĪEH§ŒäŌ ”ÆTŖøóĒėRĮ\å88©cl/Sš¬>ē˚–#ÉķNŚbtüzTŖpĪ?‰Ią ŒŠ‘s÷GØ®Oļš””cé“U“+Ššj`:g H«YdÕ¹„ä3Jbē'ž ķŠdøÜŸÆBxųĪ@«p*8½ŗbžƒåĒZBHŹ|u©rćźqŽ22sS ł‹—©*ąŒō½=MB½zēŚ¤L…ēŠ} ± Īļ”ž•&ģtėŠ`öā”a@ę‹é`'ˆ®O„=Xątؗ ēÓł 1ÅRz):暖mä€MB9ķOåśŠƒbRyĒP:T‘؁š…=ŖDėųJ®O9ĒćOOĪ¢CĻR3éRƒĒ_Τ”ąŽ£ń©¾•éׁéN^ŽāŖą¢JøĘ3Č©#ąpséļQF>Q“ŌTˆ}Ī)¶Q4|~5*;Ō õ¹õ]3{zg„L¤nźh’ÓCH"U?žŗp>‡µ1IĮĒCĶ=pŽĮ©)ł!ĄóŠyʤēŽIÅ@œ§„H„öéõ„Š} » ņO\RĘLĻ8=~“Ŗ~^8=iō,)ćƒÖœ:|§ėĶB§€Aä÷Ķ=N1Ī ¤Š]ģ‰O^  'o­@¬0yéR©Ļ?­Ї·‡¦*Lš9ę¢üiŹNßāŗBe$ļOLØ5 |w<ÓĆs֑K±6’”Œ¶}źTlcœdUvn#’8§d…÷ .N^“”²qžµoŗ{ā”ńĻsOb,ī}ž“õ#œb«©Zv~aĶ2ļ”eqČĶ?wåŚ ågėJ¤īöØ`ŸRxĻ=sOČƒŠ„7n“ąą/9ō¢ģ.¬N9­:6 µ °čn)ąńŌŃŖ11=zęœrAź:T(ĆŌgޜ§øćŽŌ;²ŗFxć·z\ņ9“ģ.bŹ’ON“ åø'„B™ŲyÅH‡:śśŅ}ŠDŠĒ±ū¼RƒÓ®=Ŗ H$ō&œ§ƒĶ0o±0lp;ÓĒIöĶB¤ĄĻ֞8$’GZZ †žtØĒ*¹?7ZtgœgÓ¶ƒlœy©#>¤Ž:T)ŠqFr3ŠH,ÉՀlēoåb[Ō1ž§Æ·Jdė{ÆćŠp Æ\TŲĘOJw g$Š)"Tl1ÉķR!c#5'Ó·Ztd{äPģ;’īŚœäžœSć'Ƨ­DĶĒēNŻĒµ7Ŗ™2ž:õ§-A“œ‚séR÷©HĢzŅ©ē½G’1šUąń×4ī'Ŗ&ē$œāœ ^™ØÕ¾aéŠ cÓµrfn¾½zӔµ—‘ŚŸ‘“cš¤Ń+̘žxŗŃ‘’ר•OoZv3Ži„a·rlćׄ;Ŗu& čŻ’„= ļŽ”2S$ąāž­“× •)œäšPHč;w¦;¾„Ą‘ŅœO¾3QF{cœS‰‡ÓšH-ÖäœtĻÓ5 aĻ5rxĻJ‘H+Ķ/Q;Ų—p=8§~}*Ō`°żiއ'"•»ķčÉ3Ēż)ĢIĄōćęƒÖ•qŠbW%‹Žy§ƒĻ§ćPóuꞧž3ŸŅ'ŹK 8ż)ßJ¤ÅqŁł{ÓŠqŅ¢ģI3ƒĄŖLCԜć=;Ó· Š#Ę={ÓĘ3Žāšd¶;Ū?8ĄÓ ķ“NvÕi“aяN§½;ŠqšgCŽsŠrŸ˜ŒqUryXģćė@ČĒZ:®'—9ć”Å4ĀĆĻŻ'<ć­ éĮėM&”õéČŖ¾‚hx$q–§)ķŽ•=FiŽ”ī"EĄ_𠗩ȦœtS”ńéV&(äÜSĒN=)€ńÉÅ8ńցy<ć”õĻ­4ō„ÉŚ|U¦&‡©¹„uļMB1‘Ö”pzÓøtO‘ŅĘFj`ūĄŖyĘ1ėT¤!źx&ŸĻP;ŌC§Zzž0*“&Ćū{Ņ‚@ī8¦–ķĶ!'·zw$x<šzӏ©ØóŒÓŌāŖą)śāœ8ėQ«qųÓŗÅ0$_»Ęy„ķQÆAK“ėŠw \”uzQÓ½ ?(ēšN$ÓR"Ƈ^ų„wĘzS;õź)ć§ŹqMpėÅ.ļ^“ĮĮĒ­-01ǽ.qLĻé{šsÅ;€ģžüzRŸlÓG^½©H<Óęėśb”Ž”Ž{:\ēõW$pė×õą}j5=9āŸ®}Ø$róōķNģķQ®qōõ§szi€įŪõ„ž)ŠHĒŅ”dśŠ«€ńĒŠ]Ą`g„4qģ@£Œ `=xH§“ėL£¾“ī&‡ž8§ĄėųŌ;¹ėŌSƒdūcÓ$“·­(ąŸ^•<õĘ)Łķž”ī!ĆӚZn~“½9éL‚?J3Ļ·z`Å(#=iÜ© [N_»žpj,ūö„Šj@J==©F: ž(ĻēNąIœ~ą@ē„D éŲSą:`?'֗?™i™Ś‚}čø1éß4¹ćƒQœā”ONiÜ ĀŽŲ£#XĘ6‚„|sū`~Ö_|qŁī5Ń4ŃČ“±%²zšųūž)ƒ¼ļ+I1?3³e‰÷ƘNJŌևU<+—Äķłš7:ę¢/.®$ŗ’Vœ’Iv$Ÿ”5“¬\Čö{ß;‰ŻĻJä§¾žęģȲcÅuÉ9&üĮėĄåJ źz«÷iidGį«wŗ”Ÿš8ż}OµtŚdInͰbpYųÅR¼—ĖøW…—ŹgŲŖ8ÆŽ—qlü£'ƒŌŠ“ˆSm]ō#Ž;]:"Ҽr³é\–·Ø“³Ź-ĖÅõ©o.~Ó!‚…ė“ķ\ę£4+|c #Ö“Q×ĢækĶ)ŚŁ,=0*œņnŁ‹ĒuFŃ7Ś·™~^ĄSĄbqņöę¶F .”œT©ĖgŌuØJCšNMLĖߚŖ$žjxĪ ĘqŠV “ÅŒpO2Ž:b«)ē©Tš9Å+h¹,lAē5˜ØA=ŗÓĪqĮ9Å…ÉŠć…ź*U9ę«#p*E?/֋hRo”b3čG*XńĻ­UŒą`‘ĻJ”6 9#ėI®ĆRīXΧ„9=‰ĶCø‘R&=ét*äƒīž¹©œAļQę¤V郌“zd©Œgpϵ=Ļj…@ƒÓµ.F3ß·D–ü£łŌŖFW\dć·Z“w#oó©č=,XLžĘīš…_sNÉ#=鶕~ÄČyéÓ½Iß9#Ž¢ sŒw§œõčj[ÉćĪē¦iŹA䎠ĻĶĒzpĪ܆ R‹eH÷Ī)cäc<Õu`p Ę*PFp5L\Ś–Ē~jU>ųČŖ€ńž;ÓÕ¹ąžEČ“iČ~~OZ®sŒē±”IZH„±qXtµ?>œUPß(9µ*£8ż(co±0ĪąG„H§€sZ¬ļ½*A½óķI‚-!ĖAāžOŹ=ŖŖ±Ę3Čõ§#0QŒTŪ śņséNBr9ćłÕu?6@ĄÅ8Ųbwxćšz° c Õe~zćŠzńŽ8Å ¾…Ü iū°AĪ=*øa×šrœŽł¤=:°īzTøź3U‘°ĻZ‘[ :zūŅb±`qœżiČÜjNzJ Ü9$˜=‹I"F3ĻėUó†'(nwōš%có|¹§”;r  ńÓ©¤ÖäYR¼zŠr_Ā«FÜqҤ Ž¬$NIķŌŽōå'°Ļ\’H?äSшž.„k”ŁaN ā–> ꨨ”ąœēž†•N:pM.N§§8÷5&į“叵@ ŁŌē óĮ“ī –`sŅž¬?ƒ“åē§P—P»oBpÜ`gv8§”ł²1ŸėUŠ½HĶ*‚iŲ“mąóHĻ€Ōj@ŠŽ“ £µR]½ z ÷Ķ8Ņ” ?N“„½8=? K°ķŌXć ӕņ UĮļÜšiźĆ6y©HiīĮ#¦)ŹO\gŠ®ę<õéN'åĘīqVĮ­ ½8„ÄóPn;AŻŚŸĮĒ#;Xl° Ś9§g,=»ƞ3“O Ē\ńRö}‹€¼šQĒBHļUÕżĻNō”ż ē­$Nŕ“älc®zŃa]­ ügėJ¼uČ÷õØ eøązŅ“Čœ ®ƒQ,!ēŒwö§ņ€j¾įŒgŸCOFćŽ*l'm‰A;Ó÷¼T @éį¾|P?"QŌ})ŹŻ{ …OĢyśS‰łGcéJčd ąąšpb”ėNĮdō§ä “«nÉRh ŒsPŽøv@čNE~¤łĄśÓ³Ął±ōØžó©SÉėĶ Ō—<ƒœR“ƒ×µDēŽ3œPĄ?…!\›pÜ1łÓ†1ļPÆ^[§OzvģztėļM ÷% ō„ĶGŠwÉėJ=rE Ü/ܕ֜«{Tł† qOĮ+œŒŠ;­‰G×’­OB?Nµpgó g¶śŌ”…bV#hŠUĻ® F§ śÓŠóÜSø[¹"œĻQJ1œ÷ÅF#°”°~µ\ĀdŖŲéNF2Io­9[”Ī3éV™/bU8^8ėNĻ”#"¢Ż /#¹äSLVDŻ»ŃрÉéQ‚F{ÓĆ`÷Åiqgåµ"œ~]j¹‰åž8„öĪ8¦‚ćŒŅļŒSø‰±ž”šHQ1×ń„SŒƒT™6%üis#’›°”[$bŸ0=‰²6ć¹ļH2‚pi šH%qFpƒ¾j“‘2ć§S@äēÓ„FÄöĘqŚ•9Ę:Š„!˜éŠ\åF ÷¦śŅ©€y§q掯éČ}ūTjzv§)ąÕ\§§4ģń‘Q3ÜÓ²{u§ĢI"ē׹@<œqQƒ÷y„äuķUqVĀżiA•1:ŁéJ8'“T¤‹ŽJvGOJ‰Oéąż@”Ó¹;ŽzœNč zŌ{¹ćó§éŠU\M$ūŠpĄNMF§ž})Iąc§Zi…‰ćéF~jjŸ~i3ópM;ˆ—<ŸjĒ~ŌĀp( ĒNŻiÜV% ; QžzõĄF\Š^ćUĢ+󦓌ńŸĘ˜I)A#Žōī+’](ē„Gž= (>üÓ!$9 ŸsųS3ŽüR§ ¢ąHnxvņF F‡œ §½zU) ĘŠyœ¾E»1ųR”§tM‰7{t§1ŽD ķÅ(oåM0å$޹„'øØóÖÜfÅba÷F:ŃžĒŠŒ0{ō ž¹§Ģ"\ć½.HéÖ£Ī֕OĖėŠwLœę•Iēš‰X’….F9<Óø¬J3Ś—<ć5b¹čh^O^@§v.RbÜŌßõؔü¼)A4Ó‰³ž†”{ŌG§½ņ8ķĶ;ˆ—8QķK’ך‹?–(SócҘƒĪsĶ.ćźj2qĒ9”ĀĄx?(Š\ćŌŌ`š1Ÿ­9OŹ:ŃpIĻø§‚Ø‹qļF~S֟0‚>“¹ĶF śSęąš3łÓ³ļŠˆœPߨ¢ąI×½ķ“Ņ˜=OJ7sźiÜ „ž!ģ*6>”¹ĄĒµ<°ĻnØĮł½)A3NąIœy ŌŌ`š94¹¢ģ p"€zŒō¦dā“<ūEÅbPxļFįÓ'ŠŒ“™Å>aX”/½(< TJOw„ćŽaŲ“#׊ ėÅFOjóĘGs Śę—'TEøźsJĖׄ;”4?>ų4«ÓŌŌ[‡­©]‰hSĻNx掓»°y= Š3Ē^*0Ą/֗puī$ŠMĘ£/͹ō£˜,KŸ×„9ę¢,pyķLžh∼²$h8$·”ŹĖV,ōąŅ©¾jpŹx==iIĒ8-ÖōĶ G—PÕļķtėHę–įĀ×­~E’Į\ž1x;Ǿ5Ó…µ;«ć£G%“Žb•Č+\xĢ_$†ę“)Ŗ“PnĒwń{öķÕµ? jzfįč“k‰Ę!½[œŗ/~„p_’nßxSĮW:~±eˆī“ous)VP}@ė_Ÿ^$Ō›‰šć&\€3÷~•Čź7ļ6ŌÜÜw'õÆž„F§QģwĆ N7‹“?c~ žŻ:ļģgØÜZ̐x’P/h¶ØīŌń»=:WåÄźz­żĶķŻżÄ²Ü1v !É>µĮOs7Ł‚ ‚A4Ū(~Ū~±‚ų-†aé[>iFŅw&łgĶ]CZ–bĶ+™Ay'"™¤[Ļ(b—YzżkJļƖŠÅ¼Ü1Ür{U›‚ŁT$€ķóC»”ƼŸ4·/čŚLK§h’96īf?Ź ‰ŒDGČN„ŸåK6”#9…KaĪKž1Q˘˜aצG=h„m0©%$„#VŹŻ®"V2¶x9ę«üB¾ht&—EnxžŌC5½ōjŠÉņøõ®Ƴ!Ö¦JL!° qSŽ[Ę0q[œŌw€”šFĘ3ÉŖĶ(7dœ±Ē<ÕĶWʚņņ§ę ÓlQ-ĢĘ]Č+Ŗ:³ÉÄm«Ić©ķPĻØ¤jT0­Y’ɦ€ł\/­s:½œ–³‘ f÷=čŒSÜw›^ė7ģu{µģ“zĘZŗ»“µ¶ŅĮ{ę4‹ĢcŖ×š[.žprEki9ŽMĪ҆Q•Éā”­±rHė®åv…c‹ 枕_ȹķåc·5HjĒ®ĪĆ'c4ßķoö%’¾…La/² ¼’ÕžÖĢ0O¤ P+\ԊŲžµĖc±hX‘ŌSĆqÅ@§(9éR'ʽÅ!©"aŠõÅ>3‚ā Pq‘‘ĘjXĪvēėR×Q7rĀĆ<ŠxmŖ:ōķQ+ ޟ8ž:Ņ)- *sČČĄ©c?'gZ3‘ÜT«Œc'#½&"pIąvjhóŒg qPFŻ=ÅH8³ldź~QŽ•,mĒ\UhŲg>µ*ž:Ō{–aļėSC¼gŽ«! Æøę„R@Ą&”Š{œĶ:#€>•Ą©źŲn;ŽŌ+ŒœĪAÅL¤œÄœUx˜zā„SĪAĘ(mŠäčŲr$dFsŠ®­–ē#ÜԊŲ'“K \°§?0ȧÄß/µ@: ÷꜇¦{R]‚ŻĖóō©äõėP”Čö5"`ō$ńÅH0äqRŒć鎫”ĆuēšyūÄzR&Lć©©dpqQGZrē'‚ āc‘ĶJŒ;qŽžµ^6Ąu5 aŠ E„8ęź)ĖĀżī¢«« ĻÖ„SóJéhXƒŽzT‹ĒsŠŠ2Øč›#š ܖ FOj“<ńĒlō'§Ņž‡ēźsŠb±2“€sҤ„‚sėPī`朌0:Óåe• śŌŠŲ^8 VqĶ.sŒ~“/1īY€qĪjD?(뚬Ž*E}§ØkBZ,)ćĪž‡ž "««eŽąŠ—vŃśRAbe9 gŽŌņp˜éÅV éŅ„B6ŒUa“ĄĮŚA©ƒO"«gŠ÷§+tēõ,–¬[ŒćźiŹNć“U‘¹Ē#ßÖ¤½ųŅ)C ŌÓԜwĶVGĄ÷äcøuę†Ž…“aĒŅž:ē§T·ĢE= ßš©Ōiłx5"pĄŽµV6Źąv©”Ī ;ŚhX =pjE æ1]V’:M 2ŅN3ß„Hz¤ßZ‘v$wꕄī[ ŒŽ”är1×ėPFp9Ķ<"—BģXŽ2zTŠä9Ŗ¶ą1ƒÅ=ĶķJĮbĘpĆ$ԊćYXŗ3‘ŒŌ€ĘsӌRkBļ”a_åėR#z;ÕPx8ĻN§­H„ pH©h®Z= K:ż*Ŗ6^=sN,zēŸZEßBÖńۊvį°O=*Øcßó©[ōčh$°„c4ųĻ`qÅVFÓå=HĻį@®ZĪ@ēō8' 3UCræ{µ2¶ZV±I«īĒ<żiį†HĪßzÆ» ŽX҆ēŒŅBeß/Zz0ŪļŠÕUo—ڤFą}(cL“§åÕ&ą©ČŖĄ£žŻ©Q¹ć¦;Ō¤[Ō“‘ĘGiń±=łZ6Éļų ‘XgœƒŚ”h‰÷üÜiįˆ9Ŗ”¾c‚*‘cžT¶,«üæįN N>õWĪ1ļRnsƒKqXœ¶=@õbHģ1U;Ž)č~cŠ« :wqԊxp;ÕPē;AŪR&Bg<ō©cęl°§'ƒŽ)ń7ēėėPƒß=iTš9¢ąÕµ,īĮ³OĻaĄŖŠĆ8Ī=*Db1Īx©h{–ƒqĮąŠxbéUųč*MžœŃŹ –‡Ž'šs0õéUCaFr=éźĆĻåIÄ.XS…ąÓщĮ8éUƒq×4ōa“ą‘JĀŠ² bœ¬AĄ8ŖŖäŠjr¾:Ž”Xw-©!ųcŅ…|ć®MWŻĒSćo”“ėHw,‡Ę@5 `G„T݃‘éN ĮÅźMīZ/ČĘGõp šŖӑKē8ā©+č\ ļĘ:Ó£8uĻCš¦ FćĒ„JØ„Ź.„•až?vļ—ŠŖÆŽqŠPÄÉSJÅ^ŕ ŸCRČć Ŗčr»²3źiŪ®1A6,ėĻ4åbØéŚ«‡łŗōŠ®©'½; ¶­õäu)āķĒ­V ŒŲ8„ Ļņ”"Æ”h?ĖĒRļčĒT6qŒÓĮĒj« »±mNM9›Ž:Š­»ŒŒā—9={zŌ²yŗUøž{Ó÷į0 ē®jŗ‘øzŠõąpqHiŁh[Vą`‘ō§㠐TG§—ąö mܲ=xąŁ^*Ŗ?·>ōā’/”õŖÖ¹l·r)źücžź¢7#riÄć'„ ov8ē„9_ :œōŖ‰ ŪčqĶ8Ź02*Xśj[/‚{ę• j§›ī@=éŃøėšjāV-īłzö§#sŒśUPžż}éČąRÕ ¦[ĪŃĮ"øń‚xTI•#ž)ĮĘ3ŠSOø]€8Å.rńUCæ9ĘjPÜćۊm0Óbʱ$śāøgƒƒŽõT7Ķ“‘Šx|ćž“;‚e€ÜpH§ĘŁ^¼ē[pĒ_֝¼+u=? Cz–»gŠPAnćéUÖLńÓŽžqNͬXSīzSžYdOJrČ„qœ¼Rø“Ł“ä€9§ē'Ž«‡žžō»šq“ĻJ»;Ųµ»ž§8§FGn•Y„IFir» •øēš„ϹäUmćŌT†E`J€ŗDčŲ\qÅ;wĢ9ꫳƒ<0ēŅ5qÉĻZvcærڐz¼Ó²8ĻN™Ŗžj…wė@•Oń)ض'bīFąA4ķŲ3ōŖb@ öńŽ98*ĆÓ­>F.t]RqžŲüiĖČü;Õ?“F«ž±GnM>9ć(Ip=óŠ—b¹”ܲ@ż*Eū¢©‰Ó|łĶ?ķē&ExR³ģ qݲŠo—Å8ÜÕ/>1ß&O=GųŅ-ÜŪē&Ž%'ЇVY|6^½)Č}Ļ@]B£żrßc5#ÜĄ1‰“‘żįO•öR/©w$ž“ķŲśVp½ˆcGžŸx śŻOĻÄūj}$`ÜbŸŸØśVOöš©ī’ÆųŅ [Oéö«q“ūĮž4Ż9ö/ŪÓ·Äl?Ć4ŠOOjÉ]gM'+ymĻLH?ʑµ½1[o¶łč?ƚ„.Äŗō­ńQ ŒžœS‰Ī޵€ž ŅD˜ū}Ø>ņ wü$G9Ōmśj*½œÖč^֝“g@Į¹÷®tx‹EŲIÕ,Wå¦QQx|’‰­—Ołź?J®J›Ų^ŚµgR¼p?:U=pMr_š˜ų{ž‚¶ ‘ŠH8ØßĘŽķVמūŌ*?²É–&’ŽGf¤ź)ūņ8ć<׎6šŅ¦WUµĘ3Į؏|2Ŗ?āg 3•5JNˆ—ЧüĒsøŌō„ŻŽęø1ńĀį9Õ-ĒłÅ$?¼,Ä,z¤LqžTÕ{:–Ö,…‰¤Ž’;ŠÄŒŠpn} p|)ŽŌŃ}~Rj“Ÿ<(ŠŪĪOż3=*Õ*­iX¢¹µ=-On”„{ךŠPø¾~zåā„‹āw…’ćō¦©&œiԶļU-œH }ąA<ŸzóY>'ųUr>ŽÜÓ3P·Å_ ń‹™›ŠˆĶW³©Ń2V&Ÿsԁēõ„æ­ySüWšĀ’¾|Ū±ŁH¦/ÅĻ «móg\Ž>\Õ{*–Ł–±ä“g¬ēśÓ”óč+Éæįmxd§\‘Š”ńoĆj>ōēŽ0”ł'؟k ¶õÅ80ćæŅ¼t|`šś’6\Ž8ųĒ ’q ĖÆb1łUŖU;żbŸsŚyėK‘€zWŒ/Ę- \bEübŃ8†ć#ŽH£ŁŌ}ցķõä’Jr·‘Šń6ųƤć嵕ļŗ’ ‹Ič-¤Čžėš|³] u£cŚ‹ĆŽž„v<šń#ńIć“’=[ųɦ䒔LHėóÕ%>Āöж‡øēœdŒS•†:׆Œśnܵ…ĄĻrćśTmńŸOm°—Ÿśi’ÖŖäŸa{X¾ē»ēåĒ—wpkĀāųÉją’ĵŌöĢ•[ž4õėœyŸįBRŚĆēņgæäć©’ėS”ō9ąŽµąr|dO!¶é§p.j³|iŲ™m9rŪ#š«“BŖž–gŠĄōŸĪœXgƒÖ¾zŒ“yjWNŒ+ ņēҚ>3Jq:/—‚w‘E„ŗCsGŠå¾nO>“”†z×Ī’|c÷*ZĄ‡±.M4|^Ō *--›Į4ļ+młšgŃū°}*‘Čó’ü_ŌHĒŲ­©bi[āö¢?d“*I§Ī×AJvvhś9Xē u„fąsÖ¾q/ŹĒ Ļ;‹œŌßõ5ˆłvńź “łÓS`ÓŽĒŅ»±Ąüéźć±ā¾`²ų³®ŹĄŸ-TŽ„r)ÓüVׄ|{(ök &ÖĒӅĄ<“ō~qšłp|U×÷ ·1óü;ž~+x€eKD2r%Õ®‚å—cźĆg§§4ķą‘Čé_0/Å/¬[ĆĀG”QĶ,_õꈂ#F# ²äÓöžCöRkcéŻćŌS·ńĮĮƖűĮ¹Œ? ^Õ)ų•ā@”žÕ°cŗėMVņ'’Lś\@uĘ2?:ł}¾%x…† ęŽ3÷@ŖMń7Äåo[@ X·Aū)ZēÕĮ±ŒwļN0~aŸØÆ“’įaų’FjS&ze§Kćß ķ)AõSśĆč…ģåŲś»xĪ7Š]ėżąO„|šŸ|M mžŠøb}TQqńIJHŖ5YAōĄ¦«ÜN śĻxéüéw qĮÅ|‰’ ļˆĖ¶5k€Grj+Ÿˆ#‡źrž3ŒÓöż*mŸ` ØüéĮ×ūŻ= |z>"ėåQ—Q˜)彍:?ų‰ŪNēk“¾²ś!*rŚĒמbŒs€}iŽh^yQŠc½|7Œ|A·sj—œżÜš€ųßÄ>OĶŖ]1»4¾¶×B½„¬}Œ&S›éNóTwĘ+āÖńž¾']×·”sŸõ„Uøüg®°cż„xæöŠÓśŪģJ¤Łö9•AūįA”¦Pq¼Wʉć?1ŲuĀ}ų”üW®Hƒż>äćÖCMbŸTW±gŁ2tÜ:zŃē§Mėł×ōć n)Lm{u¼Œ 94°ų§ZÜŲŌ®Ćc-ó‘BÅÉ­>Åī}¦&ˆōqļIöˆF3"©ńQń.“ČfR»aÜ B|S­·Ģ×RŒe¤9”bēü¢öN×¹öļŸä:}Ō Ø9ĢŃåŪšŌž.Րo®—'8xń6¢ń·8<ŸœÓxŖ‹^QŖWŠū…/ ?vxÉ?ķń„k»uS™£ułĒų×Ā“x¢óķh‹wq“Ō‡<ž-rų³ /glš?xiĒS¬It»3īu7$%Ģ$ŽĪ?ʞ·ÖĜO ćļńƇU½ņÉófFAW šŠĒļE$¹ž'óĶ?­O°*nĒŻI}hFÄ;‡\H)Eķ°'7qžŚ’|5«{å1[©Kg³Ÿń©—VŌvn7 ńøŃõ¹ö-a[WLū{ķöæóńÆśÅ’SØZ ¤Ćóp?x?ƾ#:„éw›9~ć&«®§© šrŒƒ¹²)żn}„č.ēÜM©Ųķ'ķÓż`’S²›Ø_1z~ušÕÖ³4g÷’J3ĪķǚHµ[ƹ ·R/ sŒQõŖP£‡‹ūGÜĆU°1ī¶ä×AQ¾¹„' ØZ©÷WÄéØ_;ŒĪ}HRjO“ŻČĢä zžj^6ilWÕsķ%×ōŽ‹©Zēžŗ EńøćRµĻA_„ÅŹ”ȧÜIā ’īE@Ū„gn2õ§eW²%įā·gŪĖ®éE2/ķ8Ϙ)‡Ä:>żæŚvż<Į_ŻŻĻ{šFäķjÆ=ėķWŽų~ł95_\Ŗ–Āö¶ēÜ?š‘čŠūN©d¼¢œ|C¢ģŻż„iĘD«_›ĒóJČķŽ)~Ń8cé܆§õŗ¶Ł_0öµī}¶Ž&ŠĮ’§·ļG?ŠōČ ŖŪgœųž+É„Ŗ«ü£“@žā&ˆ zMLquÆkÕÕÆsķUń~³+ØĮõ݊•|W ˜· JÓhŽÆ‹%¹x‚³¾KpI=*¤·“”.’H«øĻšÄ×ėb¾¬¹n™öŗxĖƇ•Ōį$vœ¾1šéjp9Ɗ{¶OÜüœņIĒjšĘęķXĘųūņj^*²ZXQĆEīϳ$ńæ‡#'ž&Qžńφ‰Źj(ĒÆn\,y’FR8ĄėY×z”Ńmpx9b1BÅb<Š‚[Ÿk·ü6©»ūE†˜ž=šŹ€N¤œŽ |n×S[żžÕńź\Ļ‘µ1ŠóĪ*źŻĪmyŪ»×=j~µˆī7‡¦–§Öėń'Ć%…ĢÜ żŹˆ|NšŃ¤ņ±čG—ŒWĒ÷sŽ%ĮXä‰ńėPÉ}p—H“ŗ.įŪ°?:ŃWĽ.‰té-n}“’ 7Ć!XµÓØQ’véPEń[ĀÆŅźRHžēĘæ:¾"|hš·‡5i,.u hīX×~qé^W揦FŽTŃ“ņūć%SÓ߯6%|M#žōßĀ›ō?Xnž.xR+\I“źO­ax—ć÷Ć­}GYŠÜ/\‘“ųfæüańKÅ:梳\jóŚ•#“~•ĮųÄzē˜×RܶģoÜy¬^&­ķČÓźó_—Ž~Ī|iż±¾iž ^6µ¬glPČ_rƾųūūOüGńĪØŠK®>Ź?œZZ‹Ēøä×ČZ|ę2M+ocž½*–­ØŸ“łJē’FkÕgQZę±ĆĘu5ņ?Yæa’Ū#D°ųtš'ęī–öĆ+ ź!1{+¹Ē­ežÓ·Äzoˆf¶š™mØŁł%÷ŠŃø“x óŠü¤kéņd3»ķœUI®_1˜³ōÉę°Į¹Ń‹‚nÅā(ʤÆī~9üAųy4ž"ń&”=³1eµYH}€ōƽ™ītČ“ųÖåā}Ø~šÆ*=jKfi"fX62O„nł¦ł›FœW,QW]u[,eÉ',N s÷ņłW Ü•ŪĄĶnks£Ū4e”q‘Žk—»— >įøńW“6Ō}Ō.”sp’§ļŒžzWEšżqd÷‚½Ōž+‡e2ß ÅOV»»l¹Qž9ÅiV %fRœ„ī±Ś•Ék¦1³”ž GgšUĘFćIu-“yHźž7u­O Émf“.ņŒ”^ƒÖ²nVÜI¤¬‘f+k{tv'ŖRs&ę(éŽÕcUhP 4‡<œōü+ęģ‰YSrļśŌĀ©uŖĒd‹—wĄFįX‚N¬‹ł¢MāEÉ<ƒŽõČ¬ÆĄöĶT¹-"nxw/br+TÆ”„u\Ń1µū–Ž1ä1ėéTt›Ö;ÜÆ##¶+bņ(§‚HšUÉŹ€sXńé³,Ä;&ŗ`ŅŠš“¤ÕΚĪį^&e›‚Üi·‹‚…;Gpj–—¤[*Ī}jŻē˜–D”dS+_A%%6ņą¶5 ŽĶȒŠFĆs‘ėX×·-:©aĻ' «Ś&•{Ø_m y\®N*ZŠÖDūIMŲzeę£ŖVµ˜±;'5¦Ś5ž™p°\Ć$LzŽ¶ćšž¬Ń«-¬…XŽÕIõ:9^ܗ=%qĻj‘J†õUO<ŠTl‘ĶsŲŁ¾…±“ĮéS)9$*Ŗ·#©žU"69©h-Õ׎™SÕóÓŅ«!=3OøĒqR4Ņ.'O^Ōņ@ź¢1Ī3Ņž\mĘ["•‡Ī‹häµ20ĘyĶR •'Ö¦‰š™^‡Ø¢Ā½Ė±“źFjP}źœ,1÷€ĻJ˜:€zu¬š4Mćq•źIø’„p>µU\Ž“šųQJEó"ÖI ē§„Ks×µSILōéRĒ Ś4X—2ąn*ņÜf«#š0iūĘļ½JÅ9h[^8Ę©bnZ¦$Ś£žœÓŅL€3ɦeĢ[ óńĒ„JŒqßėTb“É%ŗf§¾Q‚y“¬Ršč\ŒüĆīēÖ„R÷Ŗ(įxź}śõ,n”ŗć5. Łv>:“ŅžƒõR)œūSĆÆ\€1ėPī8²ā¶9Ęiķ’8āŖ$Ŗ;掓į(ŪŌCš¤Äå­‹ŃžÉȧ‚sŒōE&]€Ė |s`õžiŁ”ąńœāž¤ēšėT¼õ'ļ@õ©€–Ē“š}HsEÄ?‰©`uŖBUĄäc±§y©Ÿ¾?:q‹Ńp7¹©bn:Ÿj¢²Œ`0Ą÷§G:†+øtĻZ» Mw4QøĄ'$w§ c޼Õ8åQŃ»R‰Šž$Š›v5ęVܾ¬3Ÿn*E §8Ŗ pƒų€ėR­Ģ{FzzŠ“!U†×.ƒČł=ź]ÜńŸSYėsĄ.ަÄa?Ö/×4Y²¹ā–Œ¾J‘qĻJĻ`bEēŽž.­ĒISėŗ«•‚œ{šQ°Üpzt§Æ=:ō¬Æ¶Į¾tc=·u©õŗŽe@ćļM¬=¬SO8\uÅ>6ėĪ9¬æ·Ūž¾1éȧ­żæ_>,wł… 2źńkFkn8ėNF  v¬…Ō­wmūDyōŽ*Tæ¶Ēśų’ļ±IĮ‡“VkŹŽ¢œ¬pGėYK©Zęę ߃V²øGÕÅ 2R“fĄo˜ćž½źT8Pr}« jŚzōŗ‹žų£ūgNž?móīā©Åö#ŪĮis FæJ~qķ\įń”§-l>²ń¦?‰tp™7ö’÷šRöSkD7‰¦·‘Ó‡ēøõ©Q¾Q‚k’_čyūFÜ7» ų«E&ž}Š~Ī[X>±Mż£«ß†Īz•XŌēŽøŌńŽƒĄ:…ø'żŖlž5Šc<ßÅĒūb›”;lIkĢv¤ņ9ķRx’ąÓĒzoSۜ xćAž? Ļ¹9Øś¼ö±JŪŅ8€Č?Zz1ŲJįbńĪ€§Ä¹ā¦oh ¹7ŃūdńOźÕ{×i%¹Ū†Ś3RBĄ† ćÖ¼’ž‡CcķŃžš’¼<§?kā­aŖ=9JXźVÖG¢‡8Į<œÓÕŽŃłW™’ĀŹščl}ØōėO?<>‹‡ Œš)<%_卧ÜōŠß(ǹ§†ŚAč}ėĢ?įex|¾t€vłqCüKŠ€Ą–VĒL)4¾„WłIxŹK©źɁŒ·Ö¦V@É⼉ž(čˆN Ē=°jH~(če9iTĪW¾„Y«ŲaJūž¶ŒŒT‰.F0F­y*üRŠq”iüÓdų§¢…;cn [łGõś=Ļ^ÜūӒL”÷Æ’…Ƥ„ÉŠuśRÆÅ$&9†yäbšĖė>„¼Ā–Ģö…|÷oĀž®~}ėÅÓ⾚ßv Ē×½#|Z°VĒŁß>µ?Q­{X„„k#Ū€÷śS÷ Fq^æķ1ņ[8’õ§’Ā×·<‹R8ćęĶRĖėv)cé¤{lmĻOq€zWƒKńY6å-vvĘicų­ū±åŚņÜrŌ<¾­¶3Žc žņ²Sϵ/™ņŠšh>,”b­lUĒ'™qńfBŁŽÕAĒw¤²śŻŠ–gK{3ßÕž\A§ xźAö5óŲųÆr?å„yĒcŠDų³vOџÓ_ٵLå™A­>ŠI: ÜāœÜé_<ÆÅ«‘’-£ Žę¢?ƇüŗÄ?_Ł•†³8uGŃāAŒēpiÉ(Śö5óų­Ø÷ xĘG4Óń_Qbę’Ė*ūF=™ō “ÅŪ„=dā¾k’…©©•¬@{Ó&ų—«0łY{v§ż—Qõ³HƲ}3ęœŽié(#†ėŪ5ņŹüF֔ü³·§<ŠY>&ke€ąŽ UėOū*„µķ5o„ś$łqœ{ęž³ Ąōā¾Y“ā6¶Ź6JŹžĆŠˆ|E×r×rdö :Ńż•>č?“ļöO«UØSNŽe ĄWŹŃ|A× 7$ `*9> ė„d^øćŅžŹØ 1ģæė2ć,@oBjA8čIƒ_ā¶0 ć©Ē\ŅAć­tœ Ö'®AŖYLś±¼Ę]#ųŸ[“ė½Fą1NYUN )Ö¾L7×v“öé?Œx÷[+Ę äz_ŁSī2čŃõĄ˜rØ5,3Ø^\Œ_!’Āo®īæøü 4ųŪYn·÷9÷~(žÉ—qĆśDś÷ķPļĮqłŅż®NHõņxÆXf,oī=Ę)ƒÅš±Čk»£‘×=)¬­9ŒåŽžö>ÄKČ35sQNKŲA’]ĒšųŻüG© ¼øb8įĶ9|Aؐ3s?й”åūCśōķ{#ģOķUtńóī)bÕ-3<_7« ųćūfł¤$M6s×y©$Öo•æ×HŽåĶ5•+Zä<Ā­õHū!5 bß$ń’=Pu LćĻ„düćükćÖļ1ņ;i²ė·ū€óf|vŽi¬”0žcRZXūÉ:֙øfņÜmß6»„ōūtłč+ć6Ō® Ą™eޤć5(¾ø •‘ˆ’hŅžČ]dıó·CģØuĶ7ūt‘ĒĢ)_Ä:Zš×°×ļ×ĘMx ņlźiōĻ/,ż8äō¦²ˆ÷dĖUmcģWń^æ‹č‰ī7Ž?t~(щāś’ ųč^Č<Ā éƒA¾›8ÜOµ[Ź”m1óöPńFø’ÄĀÜ0õ=©­āĶI“źŒē}||.åĻ.ü…©É4Ē$9ÆžSÆq¬}K^æŒ4_łĮ׳ÓĘŚńöä$śā¾FYå?Å&Tv©£’L¹³Ž¢„eP{¶ [¹õ”Ž9šü@n½Œf ˆ>ŽvŽghėŠłL;ķźĮńdóLyp;‡SWż“NŻAāź÷>­’…įõ}”¹ē;iæš±ō'cōņż“įøRæ5#É!ˆõėT²ŖijJĘTé#źtų‘įÜn$_lTgāo‡w`Nģ{pkåVi  F}ĶY€8ŒēvJÆģŹH.£ź}H>&xœO ś­D~'hKwĻ#寘Žv68ĒNi±““&I©ym+hŠXŖķLÆÅ] S 殝Å- ‘ˆę¾a_2#ĪtU=żjĆ;¤sļUż›I쉖2¦ÜĒŅĆā¦Ž[&ǵE/ÅM,?Ź’ć·Ɯb…‹nÜü ¦ŲŁ9Ē„.¢¶Dżb«ūGŃ ńWO›i‚cØ4é>+éźĆe­Éć‚N+ē"xĮ'> Ńę1½·”泩_bž±+|GŃ ńfÓ-›±÷|R'śpNū6wƒ_?Ćo7”2ą1÷©! ’ģ<‚9”åŌ^ȟ¬Ļ›Yh{üæmÖÉjä{šŖ>.+©e‰=åā¼2dł0$ąö5 °AĆzu§ŗščÄ?ęg¾ÅńfMĒ6Q†õŽzÓĒŦ`u&Nõóō Ņ:7o9ūÕjéB  .qĒ Š§€„Ų&¢W»=Ęo‹Ó$‡eŒaG÷¤Ļņ¤o‹³ȳE g&@xRˆŃ°ĪŽŻédŽ1“'ßŠØąilā¬ŸŚg¹‹·@qg gØŽM6o‹÷ĝ–6ąćžMxxt<÷ĶA(emѾW©œp4Æš’ńJ×g¶Ż|[Õ$Agū œTGāę²WīĄ¤1šńŪiw€Y\€p3Å^ŲĀ2$Ü;Óx*="d§Qż¦z™ų«®CÓØSH’uŠ£÷‘ų ylŠNÜt¦1E_Žø\t õ¦šTśDÕT·Äz²üVÖŅ0”[Ø8"“ž¶æ‚D{żŚń÷e$€äÆb5%›F«–2{Óś•5öH•Dõmž°ßµķį¼åF’rńKÄ/Ąž5Ļr£­y=ŻÅ·–0Km¦ŪKʾ\€ć҇„¦śŖ_¹ė+ńOÄc)ö•cžøZŠ%Žßé}y±eŠA¹øĻ\Ց%³ĀBøÉē9ęšĀÓZŲn¤^‰œæp>Ö…†HK­ŁĀuāY3·TøŽ~lSWĒ' u)°?Ś5Ä4‘³m ·ń§ tž4 ×9¦č-’µjĶčv‡Ęž!wµ Ųū«&FŽ6ń$DŸķ;€§¶ó\µ½Ģ,Ų…¾ø©®¤…UCIć֏`¶h©ŌŒ½äīt'Ē!dŪż«v¤ō>g±xĒ]Ļļ5+–'ż³ŠćåŚ’“ęÄTǤL”Ņ`Øy ֊„mc?hö±ÕOāķXĢJj™Ī NÄŗ«üߌY’|×:f±Präc!ø¤‚{mųĘ„{柰‡Di±‹³:oųIuB£ż6č•=ĶX—Äš§ŁĪūū±¹z5ČČąHpüžxļEÅŃņ—*x—/ ‰u9¶:ń¦š/.śvÕ95żK”¼¹Āóž°ō¬…™<°ą²īģÕĪ»p†öŖTl'ki¹¼5{Éqs9o÷ĻJ’m^ź4ÜĪ7’µXzl»™æˆcŻBtXŌ–ÉéĻj~ȇU%Ŗ:85 ¹qø”dd|ēŸÖ¢ŸS¼Y¹˜Æūē?…PÓēįŒ.į·Æ”§źW®r :‘Q ^õ†ź®_"ĖjĪ7Lcø’Zµ½œDĀ9e›Ļ5…i:J ¦½øćгq Š ź9ääUūČö©č‹²źW`<҃°sIos{&|¹Ųv9¬¶Ö¢5QœWwE¹ˆČ6–Ćv Į¦é$®Õ»²Dęīī6*ĪÄ “NInˆL›TõĶWŌn™ī lŠ’Z¦×,~Do/ ōśŌż]½ĒJk•#^Y/r¦,6­,’LørŲŻĮÉŖ6÷‹ßԃRGuĢÆŽĄUū.ʞŻ"ģ†ēahŒŽ1ÕOJdwr…Įg÷$ūRĮ2*nePć'&¢p­#očGoJf­ØŻ^Ą.®3óŪŲŽā¤K¹rÅ õ$ō¬x¼ß·Øę"zõ³o $¦ŪéųÕ{8½”j=Ó%[™$@»ŹąrjKs1•@‘Ł}rj¼š³LÜqņœ0"®É!·“ĘÖ½i*+bfµ¬¤3²“īi‚ŁŽv"WVĒõMī’fc)·¾SĻēZÖćĻ„IcļTū;;2ż½×™“&åVr½·SĢ—*“*qŌ+ŖČ7·C޼SfhՕ•¶`Å7‰ö‰ī6Ņ EÓÆ›Ę:§Ię%Ļ ^2Nj;R²\m9ńIuöˆĮT„mĻAŸĪ§•l5QßCNyŲ$Š8#½J–ßæĻŚq‚ŻEC,W“Yƶ-˜zØj/-·7 ĮHą•5œ`™„Z³ZXŌž4gg##݊ˆ@ŃæČä€:f²ćó.Dm ’£½Z³·&räĄīÕ¢§£#ŚĖK2̽3½”~Õni!‚Ž)$$“Ó'Ō jŃü²¼yūŌę>z0ī 0 QČŗ›¾Ru„Ü@Ļo)Œ}ā Ō2nŠ@ŖĆqē4Ćox¤4qJƒ”¤6²JĄÅņŹūĒ”ØTā„ź?“‹ņ€;#$ŸZ–ÕP” ”ć§­E­Ģv‡ķ=ńŌ †)#óŠv#Žø¤ š5u×Båŗ#ŹC3 {Qp± Ąi9ĶZÓ­¤MņĘ9ČÅ6ŚFū\‹#UéR©”:’m]™ęV$–P ņäšŌ²éłØHž%©lķŚF, \tÜ* · ²s“¬Ÿŗ‡õ— cøš˜!gŠyżą0@¬ØŁ§xv ł ·sŗIÕA‰Pœžz×C¦ZBхT [œśS“Œ¬œš»f>]#\+`©²©krŽY yĻjŪ¹°øóø?»QŠ‘ĻįUõ;iRČŽZīõ©Œ[ŌÕÖj>F^žd+²XŽIį…I?Ū"l[Ć:e»Ōś[¬ƒŹ]Ū“¦G&Ÿsoqø—’} ć„G. ź'䊺eÉ“3+ß`ą՝’÷${Ī?5¬­#“fVuwxŠˆBńžéŻ‘×½‚©Óņ'µIdR$AéRĒ‘ ēÕj«$qKä¤Ü8čĶXµKu‹qyՔcŒÖn  {UÜkäåŹŽæ@qT. Ć!{sĒ=ŖõĶāQ™?¾)@““*1GcME%©Ÿ¶m¶ŁŸjó%āÄŠķČą“ĶjÉ/“jFĀIćżkO†į¦[ƒ60ČŻėnĪKKŁÄJ1¹˜¦“œcŌ®{‘ŪźPF”Ee›ķRų Cu#–VĪ*åŹW1,˜ćž*½:Ś9¶Ą‡bŒÉżjՑ)½®A¢*Ż.ņĒx9ęÆ\‰CaŒ…Wž¦”0­Ŗ©Ž%ˆõČ=ŖW¹Šą!X¤e ®v‘Ķ-_”£¬Óä‰ZņõHŁečHČÅUGI!ó–uR(?Z³v-”y~^' ąÓŹheJCÄ*ē&š„Z°åV[¶øy”-ײœā¬­ÉŠÉ'šŽ W–4eā’:Sļ“ņ…]›Aģ8>Õ<ŠöböĪ:5ŪNY¢ÜģMBC‹ÅžMŲ#/J·'Ųģ“Ķ›|^c·v*ż•µ½Óī-`äf©«-49Å·Õ£>ńc6į—##œu¤·“Ež#9ĢN½[©üjåż³Ū]/’ŒūŽ6œ*[Łw[¬RŖĘHž*žT“Aķś“e\BvÉnʱ/§CQ„ōŃ]¬>SČ©Į!kSK³µYˇqœļķMž†|pH錊„ ģ…ķ’Z±ŻKpåB° ĻN“ĄQ&ŅѐŁoZ³iØm‘”ū<„ć‘kGģ$B²“®ŪŒę›Ž¶°½ŖO{£.Dš6óFģrėK+ašŪŃJŅ1K,Ūy›9SœŠXŚKbĘŁŅD=ČŪOŁYlTkv)ĪŃG2ūwŒ€ĒŖžw™tʲ}ŽĖČ«:ÆŚķŃ'°‘X«ņž5oLŃn—qĀ‹ŠsKŁĒ©*¬œµ3DbK•cså°ćāŖ+yry‡|`ą —Z¶EÕæÓ,KĒÜ«cčiģĄŚGt‘°ž.Ÿ?g³Ķ8čfųt• &˜åū7jž_.79ŗéĪ*õ¦žĶ¶āU,ƀqQÜčaõ!*į^”šŽżDŖ;%”FŚiÄŖB£œjuHÕ¤ 2$ƒ¹Ę o\ŁÅ•°Ę©c;¬ūQŃ06Įćnw2ąšŽX““.O•ŁWoVTŹ‘ŹŽōūÅhmŁVĪ3Vn-Y„ņćŁm\ŖęŸsm$1¤s¢ņ§ēZ(_FO:ū%Ńjꛤs(+œY·pH&Ž!PwŚ­ZK"‚›R28o˜õ -Ō€¹Ė[.IžµQZj7Zę|+$׏“ɍ*Ų’ķŹbU’5ą’˜ŖĀó+Zš3†RH5æ–tęŁ:nī¹Å ½UŻ·*EĢYü¬ØųłĪģ”o$vŹÉ ĀOL6qB¢ūń1½œ‹z” äČ»—ļg½AhÆ!lÉįĄĶ% ¹IŽE?#>•„‚]\ŖÅ<9aV“…¶-VM_b•äGt‘Įqž5 “³„ā,³8f<Ö¬šmņÜq&Wž Š4éÓt’F”>ßj›“ĢŲņ%{Yqߌ}j¤v›@Żz„·!sŠŌfīkk’³¦ęR¹Z]|Ģp8&“m‘.c(ó>ģnf«[i~‹‚Wµ[µ·ŽŻÕägB ÓäO᫦¬„ R­Ź¼³@~ecĘ=kDOh'e†xåSÓ#]m"¾€ČT‘ĻS¢Ń-„x[‡ÜGŽČȦŅjŻEķ…ńM8˜ŠŒćv9¤hįŠåž>^y–¶ Ņ.¦”Ž0Ļ‘QŽŪȗį¦l.3ĖqSŽ„nä7NģĆżYĮö©­d±ž?•¶ŒbŖjVŖo¾Ö’:’@eĻsū=fˆL³yyē(”WP{iqfkYSoCO‚+kˆ^ł”óĻZ§yh’k d%8Ē4‚Āź6bŒĪĻŠ+ Ó¶š žļBH ³µp *ŸL ā› ½ÕŹfš=ƒęĘMcĻo¬Aؖž kŹīa‘Z–Å„"MåC’JZn™R«>TžÅ«Ci ,·2Ģžčėõ¤"Ęgm ¬D|¤÷ŖéžIVūĒ˜ÕK:Ök”Ž ¹#›9lšµQKrY[W”8•cgX\Ŗ)ĄĮ«Ń72ø˜‚OćF©£Ć ¢—™dbGÜ|ŠÆ%³Ghc[*69Č4łRÜ=«J÷4®į“k}Å<ĘĘy5VźUŠĢ,ėĒLb›“Ł` EUó÷›Å2Ä ™öFĖ8Œ`¶)Ę/{ė7£e}3P…žD™X1$ōÅiĶ©Y¢DB“ŽGĪf©]ŲŁ[JęRŁ<ą*“ŃiŅ@kržnyPiŪ›[ Ö²³‘~9`¹¹ ł±†ł×=…?PšŚ)‚FŤeŹ·lÕ7²ŽKbėwO³s|ż«ēļŚ#ā҅!–3%ę„ķ*[ļW ŚōLl!ī®§Šozń×BŚŌeœøžuņæķ¹ńzŚÖc¢hw!œ£$’ÄĄžµó×Ä‹ž,ÖÆ./ FłŚ±’£ZóIŚęVyœ¼Īę$žµ5*S„šźŹäUy{±üMK­bK–s;»O.If9żk:K× ®Š01œÖ=ź_-H,9Ȧ]\™#iĘ:fŖ7¾£SRÖZ‹ØŻ pØųÉł=*8¢FøŽŸéY÷w!Ž`:RÅy¬r2éYŹ/[œķüK¢hŠųL^[źŹ÷¬¹źæ„p²<g;oSĄĒ޹¢öė²`ķ"³‘ˆ½ŲoĘŖ0“F«s;5ų qŃ.Į_JšĘē1ńŒtĶX²1+ƜūTņ}kY–)u<[“‹6:äšØĘś3*’åÕ1~؊¬Ēs¾ »T7ҽķØU‰Žsš«‡bZį—ć,)¶Š¦Į€ÉķN-tD©éļųWHw™fŹeyĮą}kbå\¹c‡éņž1U.ÆĶ“pŪ¬dž„»ŅŽÜ³Ea£9ėP„}dĶ)øŁ“bjךÉ*øXŗЊéō$ÜGĖ”ėPĒ!†ÕW`f95{ĄäjZĢØķF484å.hźiGIrÅīRÕä’Ke`pI z Ė‘ķ1qŻ«¢ń, Ņȉ2%Į©÷®?ÄwNŠF؅P·SUy.„ŹŹżĒŻÉČRwwõq©Ln<’[Ė ŽÕ£) `[nsĄ5‡4f;¢O*sĪj¢’fwv6"1¼‘•ļI,éęävŻžµ—tŒ±$zóU®¦rp¹ z½i„ĢģMäĶ”‘Žī_õ­æéžøšm»•S’rÜū×hŒĶzĮŸGį’ ĮLūH]ަŠ×Q÷M£«WŲĘń‡ŽŸāi­åĪčOZķ¾j¶V:Ģq“+uŲ\֗‚mÄæ./µ;wkICJBe{~هöZę«5Κėg§Āvp9WEqŌ«ePք]šŒ¬żŖĘßDŌ5[_“ŪGtåwFżF~¢ŗµ·“U !ĄQŅ¼{^Š/X‹ˆo¤ą`LĒäUų·j¶;€ĮĮ=jŚ{ŃM"Ŗā„ s;æ#ĪWĒŚ~:H "ųöČ•%o|WŠ)ł±Ļ=9©p#kb¾—ź4ĻėźĻj_ˆ6H~hŲj›ž,R6{zW‰ą‘É„…[ĢąąRžĻ„Ō\žÉžŅ~ Ū )é_ā%Øé‚kĘfĀ÷ąÓ:Ø š_JŪÕć*T/#ń©`ŅģśO ½¼ķ¹ģƒāDFŲ›#Œb•¾$Ŗą-»~xƉO÷©×‡łĄéOū>a}f¢Ń3ŲāX ²~¼Ō©ń(…·9ś×Œ1šMˆšŁōšŲ&¦×g“‰ƒ‹lcŌŌš²®Uø¶]§¶My |°OÕ9o—½Oö}Š©WŸó°~%]ņ[Ŗ‘éšQń.ōˆ#&ß·+*Os^L‹‚‘ äoĘ;U}B‡ņ“*Ó¶¬õŲž%ß’U4§ā}ł8X¢ÆZņD=ņy„łLĖŽJ_Q£ŲŸk.ē­‰ŗ rpāüMÕOHć\zóšóŒƒ×%¹Ķ:a" łr)< öGķęō¹éƒān®OĖåžUæ5§,…Õę#19p*ĄĪĶ5‚£ü¢•I-=?ˆzęÜ}£~TĻųO5ŅŲŽ?,WÉ/Ž©=i`YA'?jæ©ŅéGµovz~;ׇ&ńˆÕcžF·µcYPŸ÷+†7ہŒć­C"²Ėąf—Ōé=āW¶’Z3æ’……āį¹Śsž•0ų…ƈĮD·~yü(%['¹©#įwĪj–—ņŖ¾ē}’ _Ćķd† Æ/ŽuķĒ7Œ¬Ż+ˆøŹ|ĀLėOVˆ—Éž“ž«Mt“o©ŪĮć?oåéėN›Ę¾ cƒØL1čEqöŖĮó»#µI:0\³(=1š>­OłPłŪźuKćuS+Ø\zå©į3ń ćūFćńa\¤JJœœ0ō4åd ±#®wu„õzʆŖ%Ō뇋õ¼3RIć;Ŗ6ńV¶’wQ¹>ūė”1¬„ c§5bXpGn9§<Ѧ­¹øž+Ö]ÆtH’¦†¬Ēā-]NįpÜu梷B[wĖSAj>I w«t ÖČĪ3}Όx—Z “pO¼†£jŅ`럔zĮ(–g`©-ü 1¹†Ž¤Š—B+diŠĘÆöޤ j˜züēÖėä÷3pēłÖ4ÓEē}ńOW]¼>•~Ķ=…Ļ}Ķa­_¤»EĢƏłčsüźuÖ5§ż.ćéøÖ#2r®}öՓ L.ÖĘ:ŅöHnmŚś€pĢć=÷š“ŗÖ¤‘ōÉÉ’|Ö,+ °ÜģæJšå#į%Ļ>Ę/ :ÖV4SX»vÉŗēy”µ+Āx¹Œ’xÖno»y N*Y–5L!Ļ”Ķ öBēVŌøś…Ń7“E$Z„ÜfGf÷bj½³Å°‰7)†›'—ņ˜Ł¹õķTą2š¼“bߝ8ŻŹ02Ąu<š©ć'”ļš‘$Š6!YH’jš‚hždž„³4¬Ć–8ü)g»”CG樒įG ©$~”†UcŠīÅ>[Ģ®L'—»³duĶ5åeq‚Ų#Ÿ­6Öå#“kĄśÕų䀾ąøaӞ1Q(¦T„e”39 ķŽ•$M.īYĮĻ4¾jļ;'©™¹Ū$ćŪ­.Ek ­źZYŲ&L‡'ŠÜcį{óTń>ļ5ĄōĶXW śb’‡@œś¢tf#‡`)»™W‡9śÓ@09;Ē·ƒœM¦÷,C3*īc|R—iCĻqȁķĻ5ee·7 eA’M?gaĘ|Ū¢xŁ„\7=:ÓĢ“a@f\öéUf¹·BwĄŲÕH5ÅĒĖ“ß$ĶĆ« M- -~}ų§`£ņ(mNŲŪŖ²=ˆRīįDÓ‘ŌŒņiƚhŹUm”;JÜ0sŪ5nßĀ͌zšĶKŲ$XÄČŻ•£”h"#1#4r&hźY&…»2¢”Ev=é֒ļp `}źÖ"T>LńTlƶJĄŽIČ$PčŻlfē%¹·s,’v4Āć’E6×ĪHžbē<䊯 ūĘIõ¢źöMƒj…īséB¢™J½•¬_YpłK.=ifVņ÷G“ź3T-ļŚ’YWõjĘę6„įłėŠ—Nۊ59–ˆ³ffĄ ŒŸ\ę?ć!ˆ¬ė{łR+Ó=ŖŌ·¬!ŚŹ O*٦āÉ"¶Hd ƒwū]jÄ13—zEWŠg1| Œ\f©Ė},’”æ ÓpBroCKÉp `zqL‰ņ૸ē''šŖé~ī£Ė…ļM7/æ½O/<‚GģŗĻ5ŗ5²:ņÜō>Õ8‘Œ¾G ¬Ū]H‹§ øź®Ü¹–0c¾Äb£–(Śī×e™g…@T,žäć5ē4ɐćh“&‹"#'Ü»k“Ą@˜^•ó} N ÅT1ŗ3ly=ÅŪ±9=Ć/5M+ŖIjĶ ”” \µEUĖČ (īsY6öóČ»T•ēƒœ˜ŁÜ€ē=óYņܤåk³PM”nž›$ūełFän„·5™.—»Ät#§ćR5£åˆĻ4Ōl WFœņD#VS‹*²X¢cź}+!,\6ĶL֍„¼ŪFPīŒzRiļmÉÖčž­‡L-9głņĮzó‚*dÓę(XĘqŠČ½†O7`‰·tĶ;©Īā“,¼Čd;f^;3Vl.#1lŽ2:ēÖbŪĒƒ&å~˜ŪV”‚&\„Ę1ӂiŁ I½M)ÆUS*0?J©öˆ„„ón”ČąŽåZ7¦¬½ž"vŒć©¤īōH[¶Tøš'!” *Ȋ¼lµcɌDC õ¤ŠŁVfĮŌŅäkqĘ¢z! ‘ä‚ävĪ8«-wA·+ČÅ1¢ŻrļŽ›,Q±!A†)“­v o”,W*į€<“RIp°±!݃vÅ5-ń€dĀĒÆJÆyū±ÉČžń§2]]yy‹q]ŽÖ#³]Cˆę«ivņ³ź­ž…O§>›’(ĘäwĪ)+¦[›j蔿”eJ¬Ž[¾įÓš«‰vXī”wėUΈU°'9õ= «pĄ±.Ē$`rV§™ĖB%5qźńøČ"«¼Ņ+²’̽vmŻ7FÅW§'« I“’G^ 'aŖŹåHfU#Ę= _‹ģķć{tŖ3ŪE$ūŌ`æsėWn4ÖX•°ź1œƒÅ>UbŌō»bĢĮFЧ¾qUĆ»ü¤Ø ÜU¹ŚŒe˜‘Ž†–Vó’ætCŠ”ć-S#¶–TŒåY³×·ćQŹņc©ē§5„,1Ä”‚īßµUŁ$³o‡a^œ?ŽQ«½ZÖo-šĒ§lŌ¾af%RżA5§mh²q]C6¬«XČfī1ĶE* rO”Ī+^ŠYŁÅ³Ź]Œ2HlsQ^Ko#Ą¾ę³…Ł„IÅ虍¼!_)Ź÷ē5cģaveH¼Ö½«I Œq’}jX.c’]ū˜7Ø"ƔŹé+'s ¬Ü03;n>ē9«ÖŗS“ęŻ3’׫ņƙ/Ļ H!‰ćń§Ü[\0- Ļgõ¦ōl””UģfĶ Œ”*QQAf\†Č÷­{}&_%åvcĒ;Ŗ†Š‘„ģ»ī™6Õø4I¦½ÓE7ՐMg%NTĮ&ŠVRv’žµcͶ{Ā]|ūը–ŠŹ6=ŠćīŅž¶± £kWdeIl›€Ä„±Ęą¤UÄӒEņŒ„ߚ֊AnƝĮŗ« :® :m8ā¦,—.›œ½ęœšHWgīĄå‡qRiÖ $aü¦Dõ#®¤L$Rdˆ4DsŠæ ÖQZ®7"c”NwŃ $ļ'ņ9GI…āżŪm˜Ø4ķ!ąBŅ[†oļpk£×/­¼‘“ĀØ+÷Ŗ+S[·KffČž#M§Ėiķ[ŃĘĄ:dďS޲.ō›ĀŅK`(=I®ÓZ [·«żź‘Ōb]41M…½Fj–‰XĪRK}Īf|”.ņīĘ0$š\Cp%a·µl\ź6£å܈…ėU¤š"æŪPÄŻFpE&“³•µDZ„Syž=¼qš”ŌI•ą锾µdqČ1ÉéUõUҦLCQn=ĒzqKf)Ź[£ža‰‚†<6ŚøŚSŗ(%ēēn*+„HŽ8”dźIĶni×ŃAx™Ż€Ę;RœśNIū¬©…-½³LĀĀ•­ÓÉɕ¤Oć^āŗE¾‹ģāy~ļ]Ŗ+4Oesē˜LI°C§ņ©“V²)¶ōŠ)é:N#¾įF2Č­Ž­_ZX$–ŃĖ“7ńž3\ö§=Ŗ—k{‹“›”U8sĀWĢńęY$)žŃäŅ“å\×3ŒÜ½×§”¹¦Ép¾zŹ«Žv ’:³(³†o.ڼ±üEUæÖ!ˆ ±>1ÉUéN‡Äpy÷7mäÕĘś;*Ļ•¤ßÜejš#_3‰$ņżøÅ2=3zy‘ī9ėI¬jšĢ„-ķ’rYŸż*ʍ|<ÄR³.zØĪ­§+-Y•>fōOęXŅ­ķbV†t!‹ Åi\ŁX˜pŪ÷¶óV˜ŪÉi“Ę6}*¢jVö£ŠLś’sØÆ‰2ØŽ’-ŲĮ¦æt„ gyĒ4ŗĮ²Ś®ķĆ$1Tķē³’9ZHÉĮwdVUž”(M„¤Ū|ĄōŖŒUū™V«+Y7÷öéÄŽ;utp‚k.ę(·€wpÕ‹Ŗi×QČĶ`öW rŽiƧj¢Ž!ņä‘$Ó`ø„Ģ9§dŃÉ«7¼ækucöƒ+:°ćœcš­-: '•\Ę\Ē\~“¢ų†ŁĢŗ}¼ ƒ(v|ߝk[x‚Ś6Y,-Ģ®Ü>rIh]7k9ÜŲ0Aįöcž…˜Tīc nB€w¢ēÄÉ,>UāG€¬æķķ-åņM»±ÉŅ‚¾¶JŚŚęŽöEŒ“Ēa=Ct«‘„±”J€4Xą ęĘåļCŒ+vā¹ų–öŁü™ƒHēW"­Ć©Ļūć¶Ņq\ś“tkæł,ŠŪƖ3’HŚAÅfˆ­ß;·Œ’ā‹}J0¼1æĖŁłĶUŠs"¶ÅD=ylB”mg”–®i§ųU¶’ŪĖ…¶īä«pj{{kH`2y ,„ć ņkŒ‘īb‹tĄ~įSÉ„[ɍŖ¬o,O×ø¤ć”³œļĢŽŖāŦ›ķĄłJ–ēšHōøęf”’ Ę3šĘÓšNēŪĘH/Ö“o/.ŅŪ0øóA!?+·+6;µdæR¶µKé7Ā9ä:–±I•— Ū9¬ųī@ZiÕņYXL–g®Įu!G7w±qrµ“FŻÕÜßeÅŗÄäšI8ā¤ÓģÆ$“ó„r0Šā5Y®įŠ@· œ(Ę8«ži戇¹`ĶĻߢ_ ˆŒ¬õüv:±ŁĄøv±ąV|Õ „ҜJ»•ŠńŸĀ¹-rf’%…„øčUæ_„ié“[Ci2ÜJ\ļŅ„’Zjy¤miö6žI2H2}zU‰#Pc’Ż’‘ŠęD…óT$HŒL“¬Š$ ±##>ÕIŁZį)ßE×¹~īÄŪĢ|‰įxäź7dTA¹8ö¶įĪŚÉo(!ŽÖ巑ĮĪ?%ŒšÕ“_;Ū¾:y…'ŖŌĪ:>W±±m¤H;™±É*{Uļ é–b,.RLœļGÖ°®|C)Zµ‡Ī˜Ż"¶ė[ŗ%ÕԐ«Ēo„Ø%· ¬ŸSzzl“%Ō[ģēŹņ³ƒ»uS}PE)Gr‹Ų*^õcP’K‹‘–EP:Ьņā ­Ł‘O)b©NBä]ĖKt7£/‘0rpqZ7š¢%ŗ˜cUĄąm®wQŹ¼WŒ•Ąć«ŚL3"4“m`Ć€ĒŠ—R7,µI–.nEŹĘę4,z’ ąÕ˜Æģ`ƒĖv‘‡9\ Ö±ØX¬¾SČ-öŸį+>źņÖódq^“¤UŚīģĻŚ%„Ī‘n!;”ŽwO0ē ZIķ’kaL_±ŻÅrécHĪo®7g8®§EO&¼Äćļ?2zŁ$–ä…ŗµ¢@šłĢ£-ø÷«:R}–-įx²AŚ™«Yܙ‹&”jć žu]­ļJ2ĆØÄB ± ŸĘ„Ż­AIƄ·=įø|4å 7?ZŠ€Z]DV\”$s\%ŻŽ 4w0(s‡Ģ‡wįOŃ¢š)W÷¬ĪĆY’•i$łoqS”›“¬vóEj²ŪT•IqTļV4³"ާqaX—KŌ"]§8ėTµ&źŃ­žŲŅįˆ'łŅŒÕµ &iéw¬Ś™PÖåTšqŒŠ×¼»¶1±Œ¬ÓƒŃ\‘^gįŻ6Õµj7‘–?Ż5ŅF­”ß ×;Ö\,­%f쌠Ücvō:8õ‰ķK[ÉnēŸÖ™>­a%čG•¶Ź9+Ś£v{›q-̬źŹJŠVN§†`-®nŒWŠ‹»{¦·V½Ī•.>ĶĒż¤¦r üŌ·z‡•’Lģź§Ŗ×/aomr|˜¦ŗ ·)‘Óń©ŚĻU„ķ7Ūķ’”č÷i¾†µÅ՝ä{üÅmĆī³c“`Nū™U¶Œm ķYŠiŗ\ŗa!Zby5•,M½½’An@å™öŠōc|Ź6l·{-Ŗæ›r…$Øn>ļU²H÷ !”‘ņÜÖ©k©-Œ“+Csłd9éųÓ<'¦Erˆ—vŖ2 æT”ęlĖŁŌnČŁŅµ[™ęe–Ų4]CŚŗ1uoö?žÜFؼĄVUĶŽmmä[ĘŃ»`nĻ”„ŽG§!üĄėČŻšŽdĖQqV‹!›]·Mlæeb¹# Éüi¶śŃghü³ČæwęĪGŌ×9§iÓG©™Į3˲|µ»ēGm+1¶„Æ÷IĘj„u”1„+{ļī/\=¬˜lÉē¶2W”5Ƨ]Įo`»ČĖ #ĘÅ®ÄĮķŠ[†oø”ź{éī¾ĢžtŃę<‡’m;I‚ŽŸ»Dś¦©^ĢÉ"ōÜ:Õk«”‚ČÜ\ÜĢTüŲB*Ėq”]iÄĻ;Ł]’ŽOŠUŚ\A"yT¬˜ĶBŚžHq^€Õ;ŪķBYćŠęÖDóE\~“ĖŻZKU! ŅL Ökė:¬³£ÜÅt‰ßgjŅ0ŗ½Ģ½Ūņ¤[· e ŽŅ<цĮÜÕ–©k5Ńd†īMĒPš*;Él/"‚ņhš_æēG€ GØŻŻč–‘Eoq¦]†8_19ź)Ł·n¢—-µ[ŗ“-zQlļ5+`ČRø«aKĻ=Ģó!Ü7Ÿ½YŚ.ƬKl%[=&.›ŒnĆv}ŗT:½Ī„4R4©o Ērū-’=ę¶—}Ąkv·•]A?2ńłŌq.¦ˆn‰x­cČłH9õĢiھ”\¦³÷䔆“/uX¦“E2±s† ÓåšŠĻ– ®}N“@½±ŽZ{ō- į@ˆ«Z›Ą”e‰œ ą•źk’„~ķ“ķVĘ$1|Ų#>üó]Ÿ%öŸa½äīĘT')ĻēS$ÓŠ¾T–¶±ŠŁO‘åu1ć ČyØ%»Qģ÷Ś@ƒ_Œż+*7ŒéŽń©øø\–錱üAq"¢³ŻąĄ“OŁ®„sG–蟦XäҦHēU“oŹA×5=°µæ„yņn˜ņNj߆šF”¬Į±…$ æl§—=ū%Ā#yc‚†¦žW)E7vģT²ŗEr²JHQüU¢×°f–ū;8S‚qšĢŌō¶–ō·ibaü]Oo¤*@Į/ń–E'śRę¾ć”īV‘HCĆg‘ĪåņŖŚ÷Ÿä«XB¶äńˆĘ3õØa“”ł‘Ś] ‚Fż§>•sNŗ&o-„XšrAēńŖÕ-|±Żčeéo4sؽIaĻĻɦųĀ÷LѼ?wØKŪŪĮ‘™°qōŖž&ńo…“Ķ} ¹Õķ”Ō‚ī_6Tņ’<×É’·ßĒ5? ŽxcO–Uē·ĘŅ<Ö“£AÉŽZUÄҌya«9O®/7Zųvā[RģwČ8z šWP¹Õ/īņifžQ–‘Ž~jćēžIw¹ž«ĒZ~›xė ‰]ĘIĒ„c^¬¦łbģŽŗ8hE^”_¹6öĮ‘ ®§×Ÿq#Bn%—8Ļ5Fi„Č_2} żĖ\\‹XC( ¶³]Ž–ŸmMf)õ)C tÅjĆ>!(‘6ī§Ž°¬ōĻ&ż\•Į9$u5¬nQ$#;õⳓæĀ%O]ĒŲ+“…äR‹ėŅ–žp±± ¬Wå掫ܟqc v g ńT^{f’Y± õ4¢“øŚiņ¢K–ÉUQĒéUÆ,ŖrŁĘ0 P–õHŪæc ‚9”ķĘīęÆ—ØŚkcJIēō¤ūB,aŸ sŌzVZ³Ū¹‰Ÿz§q|RƜf…MĻDR¾ģ»ŖK-ĢØCUéƒTk7ŸöMAuž#FīeĻqHX1Ž:ä÷­U6—+ŠwhėlnbXŅ'faÓ-ėZ±ƒ&'ĪxrD¹‰˜åXżų®’@ӄļy”r›‰=MsŹŃz›Ę𱓨Ą^xŲsėZ:J‡™L›HéóU½jÕVč,ŒP`Ž™vŽdiåmŽ(½O½ ¦¬…|ÆVRńZgrĄĻĻĖҲ ’m:Ėåm“1ČaŌSµ]gaņć*[ķXW×FGw‘¹“ž(·nTEK#NOŹņ‹¼ŻŻ»šŹ¹žI™„c“œv¬²Ą+ŪҜŅā&;†^•;9f˜v;k3T¼HČXžf?{" ŗ™øqŒā¢¶ƒ.dsÉ÷­#īŲŻ6ž2 ©^}ƀ ėWg”6Ā1ņ ¼UiańķœŅĄŹ›S>aōĶSJ[ ŹČ»V‡8zŌš³ĪĮØePä,P"±ŌzTsX§Üķ>xš]7ő˜›V‡ČbßtjöÅéc¢ÜÅ”!Żęäp]Zł~B±ŗŖ±$fŗ-7P»m9 $ģ|ž¢¹ėEJÖN Żntæ5Ó~²Å瓦gʃ\ [®Į–ēń[÷1Ū‹Ø× ·,}MXkBX‘ „AŚkZu9U“2tē{³Å.¤s*²m抑KƒŌę•b@>pČqŠS£Œ6ɕ¢¾ šÆ„‹æīłėD{Ć ¤õļFÄXÉ  –Ō+ņbxķUVŽ%‡t®Kv©ĀĄ" ®Źq×֋2AĪ ééNŒØnO>õ&ŸbYÉóI~cV.!"ĮĒÅ5q9"›Éø²®įÖ’ŻŸpņCŽ›+Ŗ(XņֈcšDĆŌPĘŖFŽå ·§—q`['8ļIo1üŗĪ›:ø`½©-µ3r×BE¤Xµ>Ī@BjƐŁ`ųõÅJ|C/™žŻhcŒŗ2źĢ•'ƒĶ5P9, ŸzT’Ųǟ-üĆŽ¤ĀĒ­Ļ­ ĆRÓbĘā0sõ©BąqņƒQ”˼7&§ ‚žŲn)ČÓr/Ž!ćyśTń<¬OĢGĶ: ‚¦2?‘„l>F(OjI\NV#ьf¤…²Żp½CĪFī dŌi­ĘdŽÆ£Ø‹ŒŠ›t5öŗ\ƒv޹ėG™‘€;TņĪcU2ßJ†©üÜ4ž-ø¤żŻĢœī.ÖĘTķę` śÕ“…œp”½)ŅŲ¤I»Ģ9#8„¹JVݐÉžIŚ6ņMEkp›XFŪŲ/Z»$ʐ,*–Ä*+PŠ’r4'ū U_K2yŗĒa!2¼`2d‘ėŠ6Č#ƒč=*ņ±qĄĘ* ŻHėI2¹ŗ·HÓaŽŌķÆö•Ēw)÷Tõ¦"˜åRŠł4Ž€„}é7Ŗå`æĢ¹ µjy `²°Ąõ„·aä¹9†ŖhŪ*pČ&¦”ēqąŠåT°#Æ\ŒU»PJƒÓ°Ŗ’IJ«’»"ŗ»óMEĻ˜t5fy[; :āE 9ļR£}KģGČ0ōē!·’5°sŪ5`®ĘTēsR¤sł‚9ę”-l7Y%”\¬qƖ;KU ŌI/ČvŒV„悬<²ČØį“gE1ķsĪ9«Ń#g'q¶V»P¶[œuō©§Œ£d:å…öŅłc‘·t95.Ę2ˆ„<śŅærÜßr²D|Īæ€5bŚ ņHĮ€či%Ao/Ź Ē'®ZÜ+ĮĄaŪ”Å9E[Rmt5ß(¶ŒŒdŒf¤–Ź5ĪĀźG`x©–Ż$]Įš}MY·…5_“ŻėRą™J»źe˜1.ģåHē>µ,~Z:®ü“žÉА.$pŸėQZZ²ČD‡yQŒŠN@¦»•®¤…_OŌS–źĶ[@¬K“žƒ"¢ÉčÄ«(»'cV-6Č”0³#b¬iśL~Nę¹f–«č÷¬y<äVŠ<%|Į.Ą1šŹNŚ6ōøč“ĄžłĀH5^m#Ź“Ą¹ę žÓŠ)ĪŁÕ©jt×ā@ ĻøįØM-ĒŹ)4N-6( q- Cóķ™EdI©}FTIž˜ā„²ÕÖp:ś0éųŅZjŃ>ÕĻDKöGó™•BEķČ­+[ŗČĢ®1ėŌÖlśY7Ę3ŠØŗ’„*‡Ėćµ7g©nvZ3vķaDČ` ǽVÓ§ŒĶµ—AU=>ķ™›'ĪO’^®G©Z )u\ó:žUk"TžģærŒü”/ō8Ø~e¹—bŒz©sÆX«ŹĆN Vkä»raŽ#^Mh¢šŌĶŌ—ŁGKj˜žš8<äŠŌˆEö|!\ÉÅpŃ]³su Č9ėSnTP­rØ:H¬·zŗœ°“ü $e9RN7zŌRZ¤R6żqX2k62ÆpƒĪĢ’1S%ʞń“=Ś60 5N£źŒT[[m‚+@HD`STõ6m…bx®RŪWhf $iA­˜µ8ü Ž[}j#%{4of£rĶ£\‰ķ#šÓÓöTČ^±N¢®æ(ŁŪ攟QdœnlW.[Zä§)=ަHÓų|’Ź:’…Da’D,v`ę°æ“TA½9ąć­ImŖ<ѹ“o`¹¢+MYŖM+#f)€Œv±tؙāYy Éc޹ūĖ’’å¤;?tóHfvBĮœŪ§&·D%=ät·0£ x§ą»ž•nĀ8ÄA™”c"øŲ/.ā—ÆČE[‚śb’;°#ņ¬¹“ܒåŲĆ1U$Éé²»±ł¦pG9®~ŹįüÆĻ­;U¼ņ£y„öĄ5pŸ2±+™/xŽ1”!‹+’5G<–ńīģõąW!=ńJ9wwČȬūŲČ3É npMUŁ<÷vLķż¬³¬v÷ 7÷w ÜҌ‘Ęd—vCė^af¶ńŹ· GWUo{9²E‚7O›„s¹9;#­ĘJ;Üėī/c ‚̬}[ŠĢ¹¾·ŒņĀŻ²\ ęoĀĖ“#».2HȬMCMÓå@ķnp{Öܼ«Dai_Tw¶·R”+4nē²¾qE¾§,Š85ÅhÖ±[±,«Ę:sZ°“ēl µˆźĆśÖjmŻ4l£§*gUs«[“xEŲ[Šw¬«ĶJ ?{+"ŌĶg쌫üž€Óāž¢5“ŠœńZ).Øēq}$2=VÕ[(®ųä1ĶhĒ«.“lU†7`ІŹ¬„įR:`œ MRŅI”}ž€“»9¬Ū“gE=¦ƒź1Ķo·cśg=Ŗ¬÷,ˆ”]Šć56’>Ļ2vQ銱qrÓ§–±"Œg#½R”šŌšń“w2ZęW˜č3Ś­@±?Ī’É•ć Ö>»`Ņ]ŒČ§ć¦i–O5ŗ]ķŽøSJo—c1{³©Žõćm™ļ⛩ ‘Œ×÷Ē?„eŁ=ÅÉ$’F>aż*¾©¤Ž:äJ<·AJčÖi„­éµ]ŖgŻĒN¹Ø ך@s $qĄäŠ”„čó“`ćB«Ž2)n“'Łifō,GŖ)ĄĆ¦xā›5čL‘,”1žGņ§yW™@>ōė8P¹KGėV¤Ņ3T ōEüG§‚ĪĄÆpÕōńMæ63H£¹[R°¶“iHc^zćÆćDv–Ź«“ |g5.’dŁĀ-Z{}^+¹š¢@[ž*儊†EdkŒg’~ķGi¦ĘgłP(Ē\õ«ė–[CÆP¢„¶ō(īĖ–ŗ’2ip¾™ź+:ēY[yń å Ś‹ø–6@aeR~¤SćŽ!äć­RvVcw½Š¶zķĖ3,m płźjͦ§~Ļ€Saē=ÅP˜Ē±Š…鑎¦„Ó® p`Ęė‘×ņ¤ł–„%§cn×V6‹¹†ę#ū¼f¤]žnv"œv5ĪIu1 ’’*–9vAņ ėŠwźŹ\’W¶ĒBšäéQ©īźF+>ēY•®]÷v) ©f,‡z‚ņī“dvŃČąrŲÅ(¦Ö†ŒU”·-®£3Ė“¹\öaÅ@÷÷‘3bÜįHlT ®žw–©ŅÜ»»¤cdQŸP¼T\ŁĘ‡ż¤ķKęÉ> ÄCóqŠ‘īœ±ŻåHq×v*hŚmČā @뵫IY- Œ4ŗ)½Œæhßą²óSé¶z„n‰2NkN;ģƒžŽp;ži‚ż¼Ļ-b™ØŠÉŁźjäŌ,ˆ/a¤Ż4rŒŒ…ķU°#<_÷XŠÓt–hĒļH<ÄTuŁīäśÖŖČÅĮŚÖ-X]³Įåą}ѓW¬­‰’W#<Ö$ q ±ƒIēzŁÆ¤Ü`Œ|½ĪFi=5a=’-źsĶ [F_·-ƒY«y1`ęI¢œ,œÕ—†īY3p8ā—ū-–PĄnÜ)«=łdÕŁvŚśylrĒŲ峚ˊ'– įŻÉ'<ąš}Ī—2Ī0Ź7›ŗT×ÖĢb–|§EĘERŒŸŗ‰Q‹“¤\T[TÜ3Ū<ŌR5̳3Ctcć‘šĘ¶æ¹˜ķš5W_ļq[ŚXŪ'Ź3u;H"§įŃn7{=ˆģ#ŗG>līĢŻ cбuÅ‘ęŽxąf§[äßåJØuękp!$Ē}½©Ć›¹3ŚŃc-f¹ō²ŁēĮ5gQ‘e3ĘŹ>P Į¦Ł$ÓĮž®(”č…ó\lΊ0Jō ŚW@éEŚ,žŅ̼>b’Ņćīœę’ ŗ32:±é“÷«·"Hķ7DūäAӟēYqĒxYŒ;X„ąS½ÕŪ-­yl+Ü•Y®¦Bƕ«HĄĀrBž w¢oōm’!VN3ŸĘ ‰‘nU<Ÿ5ąsÅ4Ż“”ī »µšYĘĄŽYqēV?³ćXÉ}™QĒJчPo/ģėCŒŒb°§[ĻķFgEėÓ ÓM•ģÜt‰{K†RåīzÕę±S.AĒbzTķążü®Ūæø½ź ›8¬‘ß\Įt4–žó&“e5ū³6[Kd¾rŅ6ćĪCą ÕÓm·*rcœ·9üigŃ$Ž(ĖŻ 8`¤žtė+IÖcœ öķYĶó*v÷zš’8XpóFĄ ¼S,ÖśoŹ“7Żlņh–ČC§2É*±źÜķ\ŽÆ¢]½ņOo/Æ-ü«hĘ*7l–Ŗ_–ĒKŖŁłPļ˜Å¹»“=ĄØ“Łtųb /s śÕH4¹ü… <ہĆ+7“aŃćū?—æNģÖ<Ń’Ł–©Ī-¦Ņ Õõ &‡ąüÕWBdŸęŠé¤bfŃ!(±Iœa†jm7M[xćy.P3µWÆzŚNŃV0…łÆrŻÅ͵“j%·Bć’võ©“FĪW’TѦrNõ œ\~åā,½™†3ų՛»xķ,•ü€¹.I¬Ś¬‘„å'Ķ'”W\ŗó® +7’N8ćµ?Kµ±{BŠÄ†ä†9ØŅīx‘ĘBžYrs@Ó®”·/µį“ÅUÓVDƲ+kĄZAū¦”(ć+Ś£Ņ,®u YŽ+ŎH—8v䊣quNńĢn&Lē^@®ŸD‚mŗÜ œbœä¢’Z ļyĖ_S¶1źĮÉżå=kr;XŽåØ Ć„KŖƒö¢©g^z┃[·‰<ƒkt³ŒSŅœÓŅĀ…¹9†j\@Č#„…#9a[:MĢŁLh'ō ķ֠е)īg(č%….¤bwöšč¼[hQČ9ā²’]76‚•“’²/¶ŸęÄX©‘”qĒzĒM5šč–‚mąē¦uZMÕÕĆø0L\«Å[–ĘśiHćV=Oj˜M5«*„I4Œ+h±lSkŒĆ& ¾Žåc}»ÄR¼Óµū FÖnn$$TÆoJęm×Ćł“t·±Ą>góŖäåÖęs”¦ķc©šż„7Sļkyxž#‘[Ķm5˜,Žģž…Ķq0Ļā 9B%³;6‡#…vkß]X’„”€Œn⹦Üf›fԢ欕¬g]Än'łcMĻĮ皵Œ–¶e£Œ–ĄĻ?Ņ »²”]4¶ĢFīSš‚+=V-C"ö`Ģ8Rüż+]Ö£IŽÉ~%«8®<Ń0r •''‹īĆŚ" ^,ŽOP [yēHDS ó@ä9¬Ø-õ»¢Éhe…N>vņ¢?ĢŁ›§ī¤VšĘšĘ÷Ī]Ee–ڤcėšéę¹µ€!_žHńÉj~—¦Ķ >mœGŒƒ‘“ÕiķÖ@öē$mĘ?É7&Ū-«$“± ׊Ök”j`o”›œĘ«_\3m—z~})%²dł­Ķ¹+Ł›ƒRA¾Ks¤ į `‘T“^éœSæ¼ī[ÓŻVXQ¾N:żjK>pC¹cŠ*€H5•c{$vģ­n„”UļL·¾•µ4A4Rr8īM7Óq5j.×7‚5µ›oS•98äÖ|ڌģäIøÆ {UaļķĄ7Vķoā*pj"‚XÕ£’Ūq^3Ę?˜+-ɗ×Ȧ$iŁdóęUČÉ$ńō­ūkW» ĆØHĆnf¤²¶ó£X_ģňÉ- z}%­LCpÉĆä~•7×SeN1M£śŽK&═ēē4²\ČBv«Ķ¦]Ė“Ó ņ|³Ą£EÓg2˜ā˜•nW̧*©jL)¾«R“Wuģ­nņ2Č®ģsTtk{Æ_ķ†įU²1[:ž‡)2µ[Ē:ŒaxØl½¬;n.Q§ ČdžU0ę’Ńč'()%/Ķ~BÜ5‹HJ(ą7P*äöŅJŹ× Ē«^!õƒI‚Q˜ć"²Æ,x Ѷӻ%qŸĘ‹„īź6¹µčTZµ“eŽuYćrž•­”k2N² xŒQc®süÅSÓ šęéUmmåb V¾½kØĀ‹C—į¶ėNnéGbc %ĶÆ”{@½ßrSŹv`3ņŒSĻv²M.ó${*Ć„ei+c kŸ.<Œ+ƒK<@7Ūī“P”¹Ą0ņ9Øj:ņ²ŪŃEļżv飐7– Źą0W?ys©XņÖyÓ9*»/ ŁX]»“°ėŲ?.ō‘tˆ#Õ /2NŻć8üč[0xy^ļüŽvMfYm†uĮ ~–śŸ““\2Āü°œé] ē….g˜É é{™Ås^$ŠolnĢד‘ÓbF@5T䝢Ÿą)«FöüKź—öŠ>'!_‘#ć'š­֚;%†y§.¬Č\¼÷Ö¢H­īD*œöö©tĶRīCm6€'aŌ:ąžtIi¦įmn“ōf÷öݬ—1­Ąw…NCž3Z‡‰“HüøÄļ†łBē8¬;Xõ;‹£Ć"”g&ń¬{»¶œ3hO)É1°8üéB1nņŌu\ģ¹/ų:ÅõåÓd$g¦ĢQį{ķ2Ņåćø”Cq ĢyN E„ŪŚ]^5ŗĘ«0åH4ū½n”ćp^2äQR čÅ»'ĄŅŠīe¹v/‘“€r5„©ß;¶Į;±ÜÖĄÓ#x¾{Y@åx­;Ć^‚ņķ¾Ėoqē®ķĄTs+]²•Ż“Šd±\40µÄÓ«€ŪÓõC\ø›Ļ& ™-ʌ3”ĪkŅ“żņ 3 4ĖÓĢPxžuŸ¬iw1YÉēĮ # lXČ54ŖÅ½wjNQ÷t<ŹÖ{YēŁ-ĢŅŹŻYQ†kQQ-5™šVB3“µkIįė'¾ŠH’µlcSó8ļ~=«cR±°ˆŖ›ØnPŒ?)¬›ēåčM4¢µ)\^Śła±īĘą§*¶“©ŲZ³ģ£Q!ŚU’“¬¬lbŗŪHŅ øŻņ Uń“öYŠ9ĪT™ {v¬U8ÉY›6ÖĻBž¾Śl"htגVЧV~„?Śģ|ųķ] żŌuļZņŪųŠīąģ ¶„&Üą‚k{Ā:dĘŒņŃ|čĪ~n⩨Į&­s% OI^Ē•ßŪų“Q·_&ń,•8 A­/GÆŁČśą\©ĄĢˆōÆW¶Ž9Ž a*š7Ź@5‹ā”ÖVįÉŃģ@_»¶ź«™æuŁ/ėČRĆÓOš _ėĢå“g[M¢¹• lē#åĻҶ>Ä$›h¾™āĻ!ńÓė\åćė®Ā·U¼Č»T“Ė»ō®‘<;qŸzĶ•HR²ńśS’QwLµĢŃną kq $ ¼ÕŠi·¶Z€‚ mcg÷Š ø« „»W8ėŪwø)s=ōVĄēj6w½6ćU±Ó ŪŹŅH8_S^§ ®™<&9ļb:lPA¬ßxgBŒG2D3œŒéXÅ6īŃs¦łl¤p—š„¢ZĒsyˆŒ©$ŸÆ¤.¬o,–+wŗł†xVōėZ–ŗLmŖ&éĆĽf?ZڿѢ‚ņ)VTXŠä ļD„Ń¢•ū˜:,wš4J­,cœ±'5šńj7š“o PrA~>µŚ\„ĮŒ r‘(īW­KgbņXłŽW<ŒÉŖ„ģµ¢š¹ēϤč²\™8"ŗC‚ūX“F[­jZ}žÆĮ®§ū&ĶgĢŖĢO8*1Z6šœÖP˜l¬­€ĘHŚqTÕ“A¤½ķĪūL{hŻ®bb~ *IĪ;M&Ś×ģģÅ~ųÜĒÖŗæß\jZ\K>•pzłDaæ*ÆįK}>-!Zm2ā;¢æ>ÜńųŃĢłoøœ5ŗŗ žĻitĀŠ9ŽP>P‘Ø™Yīįy€±¶»˜d³ū8Xųȃ;Y#ń«eå»Źéwaµy£ ćóI¶ć©>Ķ?yEā¾œZŚ2ś&Œcę·8üźē„¼d÷+ūĻ™Œ3ˆž•č·÷™­ō ˈšOļ—9’]g”:>[fĪ0 ~5M¾]·©0¢Óę“‘Č<Ļw« –+€Ē’6šŠü7w¢¼¶Nö³°#,p+ŌltĖ7™\Źw†R1ĶM8·²2†’"6üØÄb³ē|×HŪŁE+Üł’Ā:Š4ł‹Üźép§åņw[R’nKrŖ³ŪĘÖ#ņĶt𦑪ųˆŻDb¶“Dį½t:o†m–ĄŗŹ¾{¼ŠÕԌ_™‡±ot’<éc»]aŚxģŻ¤åbAć8.žĒ °*ó’ø}køÕ|e=ąø›U»µ‘HĒ:Õū ŚKsöéŗ†%įndž5jjÆČµI½üO?Ńģ¬m“„˜‰:ƒ”n¦“Nž{a"²µ’%QɛĆŲV§Ä°Ņō”ū-³9Q–ņI$·°¬?ėrČP#SóČ?<®@ķž½)E%v’ÆAEI»-}źmźz&„Ų¹”yā^ héV“Ļbä ó Ų${S$Ō5«Āå`Ø2,Ģjö“ØŪĮjUtū„aŌłxĻӚQ^īŽćI-ՌĶsKĪ–ń­µ²°9 ó­rŗĒ„µy,AKĖ7ÉĻŹŹp+е–°žĖ7v×2$ƒŠ8>õ…¦hZ?›¾ÜŻonWqą~9”ÉÅ]/șFö»üĢ=*;Ż2Ķ"»²ŽA÷wÄr õ5½ku©ZÓ/£¶•ó˜Ż€?€®õ|9Ŗ2ˆ’Āäć?sšö‹ØZ§>€ĀC’%YNJˆVŒtźTčJJöŗ<Ś’Įzžž±Ļ<2E#µßöā»’ųfĪ=9\ڬ-€ŪÓ$„7Ć6ŗÕŽ«²hSģŁ#®āGo„z¬%,tų¢ŒA\²¬|Ó«QĖwp„†q3V<›Pѵ{D­”_»ŚwāŖ^h¾(¶Ō"yQļ žµé§XŽŅI Į,%æŠDہ\æē:ψ¬ē½~8”žUTå.ŗ"*R…Æk³BŠ5Øõawżµ±|ę9.üė”Ō-Æ£¼Ž •^ÆÜć\儽­½y|!xÓĒŠż£#ėĶv~×ngŅ– o *ķp÷;MŖ–­•N…öēže=Ń2KFew d{Ōŗ^„ŠNę$żõ|ƒś×7ńėĒW šMÖ£«xv; (7ŚrИƋ5?ŚoĒj÷qŪĶ C!a Ūó(ōȧģӇ“m$ĢgY©{8«³ōcJе ™Õ¤ŲdÖ¹}vĮ­īŽžäZ…92“‘_IūXųŗćį²iÖövvš„|=ünĀLb¾ńßÅ_j×r5’ˆu ³9ēĢrF=*ØØm9•?k+F0ūϰž;üfšĻ‚ÆäƒNŗŸR½ Źė‚vł½+åψßµ{<ŅŻ\NÓX–œW7$Æ4Č­—*7.rkZśŌ™„*Žc7\t>õ†ŽāģG÷×3›–©k¢“—”i¾@2 ŸqŽØŽoł÷œg8jėīe˜³t÷ [;[™[ītÉķDV±FG+±y*)RD„2UŸ©ĶOw+hß9É;ønÕBe;‚3Č„%mM[sŽ„¶œ$y I=8Ŗ’L\œ±Ļz°Sq@ĢG—6ŁÜSØłģjow©›„¢īŠ 2v–ČĘj®¹)ŽÓl$+Ī*ĢČ«.K b£Ō Y‘5eväśāŖ,™--—“ød$i|µliI<ˆX )č=+CFŃ>}Ļ€ äšč>İZȰ‚c €Ž”źVÓDoN’Œw×±‘$  ņ Ō kdĻņ#1#ļ_­lG ’Yyr8Ą÷Į¦-µŖO ä‚Ärʱ…CISZ6Ģłō»±;łJ­Œ½O½q£Iš]g¬Šļ>Õés2«¼jsžõ½¼“L ļc€;āµö¼»‘Ź•Ł‘oa Z"уŽõŠX_xVDEłzÆ|U »‹kE—d›g]ČHėTd2}–5 üß{œVRj]M_ŗī÷4õ½Zc,Ē!9äÖWö®m$óli÷@źMeßF¢bŹŲžõœP1ł~ö1T©ĘÖ2©;»Ä–t’źwø Ī@Ŗ—(Y¹“¤zV¤GȳNy?ĆXZ¾Zżä°p:UÅt¹2ōęB…’6 »æ­D„ŁČ9ē“ƒķNT8ē;…^²Œ ŽGĢĆ4|;šS…Č£„ås‚ē4āasÓ= ]`Q ;¶‘ŒÕd1o<|µ1MīT¬µįĆ Ś@źxŖVѶyŒHcÆ1ä;ķī*Ō,ą’§šÕ++™]±X0bŪI8§ŁO†Ć=2­_·Ül„f<üX­M Ā·śäy±‹r©ź1XĪŖŠ÷a'hīR·Šū˜1‘ŽŗXĶØk‘CH€Œģ?%¾ƒØéڤV7ѕy°öėŠö’… :f“q}5Žœ sĶqÕ«ĒSÆŁN֑ØčśU­åŒKg›©d•¹ śėŠM׆#>[ŁŚ‡åaå÷ć’uѼŅXO$ŒĄƒ$Gҹ–ŌÆŻ‹™r[’sYĆuy,W#µ7§Čšū€¤ ņi¶ė8čOZɒy·ŸÆz” š=łČõµ÷ ų­MŲ”R1»ōųį·V;ŸՏms*G–Ļ4S3&ŚzsM2dŸrļœ‹!Ćš‘ÉlÖ<¬é)łxõ¦‘<’e ֓cI÷:(šO•ńķR[ØeĪąøēėXÅ·œƒV­Aœ³`ōł©&>ekĪÅ„Ć~•<‹Q…Éļ\õÉø0·sšu“—<.;óTåŠ"ø®n)Š{\Ācł·:öŖš‚ ČI<ę«Ij~f2»ŌµdJJś2IÅ»¶A`OqWb.H›vGzŹ“€¬Ąū{Õćˆ ÄĆ>†’mīZI!I£ž’ēµXŽį’LŗnpE6r>bF{‘R•›!™²9Sd©=‡-Īē@ҜŅ7nAō¦I īČQ,u&œ²¹ö„}¬Zšą£X›8ūŽ“’_60r£ 5¬ī~ń·8āÆ[ŁÅ$#{„>¦¤råµ®Tµœƒø²ŒśÕõ;¹īėÅAqk.Čžš–ÕYĮU;qźjģѕļ„ĘÜ4¾lĘ•Iq“č żīVd“@$&=3Ķ&Š]ˆžx’0¤±śV–snmŌæ˜éY×)>A­C/ĶŌbćֆ•µļŖ6羉f_(°®zTĪńM %‚šĮ…–0Ŗģ}jŅG_0NAōĪ)&6•¬jłVžI1¹sø÷ŖpĖ#.7ØļųŃ!‰¢ ¹ŠŽĻģŹ™'$tÉ«ęŠĶÅ=Ų±\Ä­—…×>†5Ķ£Ėēż£V,"Y\ķP^i.ą"C‚€}(Nį~]XĖ{ČT…EaŽ1ŒTѯȬ\(eS=ŖžßŽa±ŒqR$Ó+_ĄUt³µłµ4×S‰Ų³'üµ,ś”H…’Õ€ĒįYńŽ>@xņþ*äwČA «Œw­gŃu]ć}Lk­r_·©ŽJŲ‹[˜ÆĻkĆ®j)£°!=AÅY‚HĄŚ!ąw©”]%Ėfˆå½™“÷CŁ¢ ŪĘKłičcPÆŅ§3C‚ržŻū…£mŠSNÄP}*]=Ÿw”:šX¤Ł6@,=jйr"ē=sŽiŁ÷&é-OQžā”'ōŖ-õėœ+°#Ū§wØĆ`>>•FmZ)F'—NÖµÅ7©-‹źL’0VČõÅm[Ēx;€#Ÿ›5—róåļSŹ·HwļøĶd£­®k7eh¢¼÷ ™õ4Y’ńåw²·N3QŽĪY6øRz«mꤠ[ܔąÖŽĘ“rd~Qƒėž)m„øó ŠP½€õŖ²,ÅĪł7zÓ%TYÄۈćm.RÕE±jžM@ø) ­>ŹkµQø)'„-‚» LūUbXH©b-öc½µhµ ÜIĢ„«Łń}%¹ŚrO|“Åeƒb ²sޜ?1”sĄ8¤—q»IY"Åö§;‘䝼¼Æy*2IųTW 38ņĀ汫vŃ\0ŚĻ°ćµZl—N6÷QJ+»Č¾U–LÄÕė ®fŽ3«ž„ō¦żˆ’éżÓS9UćwjͤĶ-Ė–dIQW|ŲČź*Kx§R’‚æZ¢±Žł(>§z–É/՗i@zĮ¢r÷l:qoVt·QŖģcĄģFjō²!ŽŅ’ĖĪ3Lhåp<Ēe>„Tńičɝü’½BZY(ė{‹e©3ĀĪ(qÉĪ3O‚kƒsŗ‰ĄĪwS#ŅavŪžH뚮<9Żeg• =2i5m٤mŗ4o&ŗ9/3#=GJĒk›‘s€ķĒNkr=!į‹-+ŖćųŽsUļlķÕԃ 'œśÓMģ`Üø¶rÜ“wv'§“ńĶę$HPóŌU½J÷ģģ®ĀßżŽ8§ɔž–3ę‚€‘0ģOZf›öHī2‘0>£½=µo¦]ʊO©ąÖŠĆc˜)±īPœŅؒ²&ұ4Ø²ĘŁHĒÅßEuūķµCn, Ī+©'DݐšŸJ’i#<É79aó`R{r„ais=Š8[6)ž…EY‚Õ æ+īÕ»]NÄęyŹøĘP v”-»¢“¾MƧ½§ŅęŅ«„ŃƒØ˜īŹI靼UߥV7ŲŁSƒÓČēŌ~דĢć żk_"8 6żÄd椓v¹0nŃhüĘL”;W ĻV=Že=ŽZ)TōČ:īŖäW×qɾ]Nkh œÜ®h8«ŚŒM¹LĄÉ`G5vKg‡%®‹Žøc׊µg“BĒQŹÉm5Ņ ķX·ūģĒėN‡Օ#‚1šŠ÷z[“¶@šEA¤=ĀJ_÷Ž:Q+„ )Gy+‹nc=ČJ”«iŃķ h·†Ī+OO»Yd؊ŹĒ»õqžh˜fuĘ~čM菩(­NJĪŚ[™£–6ī Yņ–x²Lm“÷I­«»Ėep]dwZĻ{ĖGøŲžfOūUFŸ.­”Ŗs+to P%† ŲĒĖ‘Vä±°øJʙōÜj5¶b…¢łˆäÅ6+FņŪ!ĘAĶ%ģD¤•‘?Ųķmš j@#€*k§“)åÄ1žŽŸ…g“—rOęH¬s…«vöņ]Ɉ·FHźŻhQŠÕÜ­i2)#*…SpĪ6äS--3*± IēÅM.Ÿ©[¶Õ“-źMK W1°ófł‡'mTµDĀļ©fĘÕb—yŒҧ”F[¢±ŌS­±$AĄģ>lu§‹ł¤™»sJ*ŪVÕ²¬šÅ48ķe@ėųŅi„ŪM(ą©­%ø·€®юGCOøžĖœ|÷‘Ś·QæŠwm{ČϚĻr›ŪPh†ząš–ŪQc`8(ƒK(\Åp½2øĶ\²µÓ »4jŪŌg”“v4ę²²f-Õśą¢Ā§wpj+|Õ„ ß5fImw“r9„’ ĘES]9.ubŌåČ6`QR6[„5v±¢Öe¢b’Iæ¦F*® ŠĆį[µ-tkø$nälŒĄbŸ;Ē &čŪĄŚp(JRZ Q‚wlùY(ė“Œ†ļOŽŚY#ŻēȫӫUļ¬&UXŲ(<޵ ņ·7’šy幫µ÷$’屟æŁåŪ>¦Æ“ģ–ą°ŻŸSŠ”­ŁO.'Žf]ƒ8SŠn•$BP·‰u"žć„)$µEĮŻņɓĢŅ“ŗ8؃ļNŽIŠ”Ux‰9o„^–ļL… q%Įb8†ńī.lĒŁ-¶:ōg$T«Čn*/B{7•¢):£”Ŗŗ®@ž ƒoaŚŖE½ę+@s×­«In"€‰RČĘŠAžt=õ*X^;DP¦Ą£ļ×ń¦¬²\ [ŗł‰žõ¬« ‘ņ čqI§ŚŁC1Ų.朇9żiFÖ.¤mfŁ‹„ órér?Ž“”³łĖ-Ó<[śV¼‘i|y²Ü?Żā«źhvV­,PÜI!g–£•·tGµ…¬Œß±Od„äóŠ·ac ‹ØöÅd’iÅpqočųčćü*ݤ×onc0Jp2XÅ)$ś›E¶¶4¢ą‰0ÅU¾Ś.Š”B¤`j“—Q—l\ēļ U‹w·Y2ÖÓ`üŪ±ŠŃ%c'{‹kl«&fi™ˆž÷§K!ę fĢrXŅ„äe•£c8£¤ŌµŹ6Ž3ÉeZ…ō{ O^bĖm®Į4Ą7déT“@ŗ3‡‡PŁĒ ėV¼?s`±É2r7/¶®uįLIäŹ;ćÕr_ݹ|ю¶2­ »€•ø–'ą†ėK*³!•aЃL¹Öōš¬@aĘO­P_FźUcMæ^hö|«c7S›ŌS4›ć«zÕµ¶F“ļ#¢«8Ø-õ(ēG 늵§<‚ėjŖ>Fģ§ZĪU"ś–”­ŖŌĪŌ­™nM±9ߑV­ZQ 7›Üą… ÖŹĒĢVE\Ž@sŠE¶“Ł“Į8ī29ŖµķZ—*¼‹I “ Ą²¼äQkņn`«Z;Gså4­ž@*mZFŽ@н׳p;Ҍ~Ė–œŃԚ[»ØĀ…Š2O^©ī!¼¼€‚5=W*Tū5ņZyŅĮ9@8&©_ų„¢¼ÕŒ”ʱN1rÖ!&©«ĻsNĀŽź+· Ŗž:Vü*”™„Ŗ8ČŚ+Š·Õ¬®0³8‘Ē÷2s[eÄ.m£Ÿžv抗¤TāŚ&Õלd‰ÕI“ƒY’Ż_Z²ł™‘\õ *}nēUŲ[[@ ^ŒqĶeµČŹ5ļ”±Ńk¦Q-Æ©ĶNSZ4uEÜ>[nļ½j{łcY!ŠįĻ'j„eŁŻŁČ‹K$nĆÅhé×d„•O]¹mß-2Mzݳ 1ķP27qŠć,īµF[ż¦Q ė¹ę­Ć§ÜŚ:»MøHI€sRÜb¬÷.TęŻāō;(fn®Ģ›±œäÓu=fk[VčŹĒ©J£ ­ķĪbXl„» ±«§Ų¢(m,¤¹ģ óS $ÕĢźiIŁŗtCPŗó <.½TqŸĘŗIwTÆgäĪ“ž%·L’[L•ć…t$ö7‘&WdL•ĒõØ©$żętF”Č“g;ć(õ`¢[O-!Ęģ ē޹oķ-Fy6]ÜK'3ą^œĪ‹óĒ5°Dź»yŖwvŗ]ծ밅³Q}+UQrŲĆźźņ‘ĒXj· ¬qIu/)FąÖėōŗ{łR¼r“ŒŸĪŗRšķŗŪµ°y€Ź£5~{½­ŚQŠyNXSIhćcI*RVRló5Õ.šaksŗ3œŒńD×7öZ€Kh䙈ącpü뾉|:ź²ČHĒ@?­dxĖTˆ[ˆ4å‚ŻäłV]Ćq¦Ÿ4¶3“,®ī’®ęn•cu|åļ‘ā.>āžžõuō>·=åÓ2ƒņ«ę²bƒXZėR’`F8ųR\K-„fhgŽä«dł•šOGsiޤæV¼»‹GŁ-u „8#*j„ÆÄKhļĢ2éwvѱūņ?ҽ Į·’źp¤—±ŲŖØą#`žµÕ]éŚ<Ń$«iƎŠ”NMCŖ¢łeK§ 9¹™Ći>*†ņk)š Ćųēō­»[ė³m'ļžvaņńŒVÕĆiėoå 'ģ²cķŖš»łZr›&ŽŒćę ˜©uWNWÜą®µn×Yņ®”óa”ü¢Aҵ.X–ÖŲ!q‘²NkKKkė‹Ä Ć)ä²Ö’ˆ584äĪ°¼eQȂĄÓ•Iŗ–„Ҷ§ŸÜjĢ2«I¦\O7ū-[V^&¹k1mw§\ŪÉ ęI!8ĒÖ“ōé÷·e"²6”OüµvɈāć NŻ4Ö#HķķŸÖžļ”R© qv¾½ŹY¼€Igqrõ(p3ō¦Śé7‘Ż}¢E–ēŻŪGĀZŒp܁sau.īHĒē]ʙŖé/6eŽįceįdƒQ>mž„R’ZŲżÜQsjbĻLž“ėyĢ„[ÅtaVĄē’*ļŠītkŲ6YZjŽz£÷x³|;göLIr÷Ȥäķõš/»øłłŻ§¢©hŗ¬ŒĒOÖ^\.ĢÉük"ĒHń[Ü4)x§# 1Ś»¹5Ė{h|øcĻgĒ'>µ“yāŪ9·“Qm~†ęœ%W–Ęu-™£ųzö&f¾o/g#ęėF§¦*މc·•†Ü†‘[pė÷s'›’Ž1†wU5ń6±3‹Xlm£l¤ŗéQvß3fŗ%Ź“"Óc˜Ųģ™$aŽ?„]øŃÄvž|`dp æ#>õ jŗ¼ŖŻ¼—࢕#õ­xuՂ<)Üą³?­Lł•¬5M(ŽKń(\鶅ęšc{©Š/BŅēłÕ+ ń›kŻC€,ä ź§ńm¬0¢ŻŪ0$ą(‡ƒKö­*žÖI{#jÕTö‰n;AŹé&pZž‰-½ļ•5āȬ7ŠaÅnx'KŗŽm†õ®boļ8$”®DlnD« ų’Z8­M&3$JŃjZ}³‘’Ą¦®±Ż“¾$•ѳÆIöKg„A{3ŅĖ\_Ūļį½e³Óõ@Ė’|ČČ?z™®_ŁŁł_ږҐ1¹Xtž“l_ŻĖęŚ\ƒ!gņ‡ó¬iŹj<­}ćiIŻ·ņ<ī÷^Õ?*ļCžWo¼ė ĻēYšV›m|“\ŲŻŪ0'²+Ł$×ntż5¤»HnXżÕŚ95“æ{ŖnŠŪưnn|Ō czŃŌ|»Y 4 šJķ˜ įyŌĶųLq“ŠŅŠ#Ž$0ŽIŒƒ Š”©Oā‹kÆ*=>Y-‰Y 0\É:Ī4ˆ`—©x?Ji®Vh”;Ż$‘ŃĢtČĢRķŲ3ƒ‡–Ü\ßĻ#Ś!8POZƒO·zvÉ“øĢ¤ząŠ§^is¬6Qß Ē£*=ØRŽŃc•9hŁ.§åÄÄź²DŒ?„¶ \šÄQN¾]ަ‘ŪÉ÷“q*kFŠ[ĶdĆRÓZģ±å¤§­fÜčJ#ŁöļfåJLyJĻŚE莦¾ÉĒT޲6+qź–±†ž÷AųÖi°ń껓VÓgƒ‘‚½¾µN×KŗJ1ͲĖ·9«Š¶ÖvćŹYD…~VQG?H6Œ›¼ātu”–J]® f\™Ą¬^Õ5 {˂âōF}{Y·„­½ŖO¬rM,zž Śnł­sČßt”)ŪvO³m/wB]aµŠAåČŅ/Ę@¬=gT”]Ė¹TsĄŗ[{k™"²°œÕ7[sp@Ó庐œeS#5¤jŦŅ"q–‰½3YÕ5¹ .‘hģXżé€+bĒVÖž°ßiƒĻO•¼ 0GÆ5ŚĆ„]›PšYĖŅ8Īk*m;Q·œČŠ^‡'čGō¬ŻXÉ‘Ŗ £ļjAįµ±µ_““C·vJv”ūéŒÖÆs’ ®·B¶½›O—ρdĀżŠ˜5•,„e4X” įq»ėS ŠīH§ŅJę}§ö‚ˆÆ ‹”I¬ßŚ\č–ķ&—qqlĖ–łeĻõ®ŅŹŠ\ĀQnÅ~`Ö‹tų¦„$ķŸ»ē"Ŗ 9Ż™ā”m·©ęĆÅ8žŌI¬e’HĖ8Ļ×?wšW‰µė« ×V+/^2ćVl|% vŽlSŪ+œ¬¹Ļך•ī6Et#S›r•픢 ­{×õö]+lRS€T¦īkEŌgŗ·"ćNƒĖ— ŠÖę—{nźb”ĄŅō ŖĪØ\Üļ·†6Pįx¢;rŚĆš|ÜÉÜŠšģÖP\‰„öSÅ]×/¬nŽ?³ß-³Ęy+Õ jM¦ŽEŒć•LdÖ Ē‡5ArÉ ÅÅ»AČ\ž„ĻNJķ Ę£“^ĒI+]Ā ­Ŗ"ĘĆ*Ņ6ēQCā;é&[).`™~RŠ3śStÜÜifŌu“¼pż)[įÄ0:ÜÅ:˳£#…R)<<ßeó#æ¼W“hŹ>3’ø¦X^)ø÷ńĪź~įjčn|5p¶ˆVŁęmHĪ?Ö,: „¼ļ-Ä39Ē!S½_4ŗÜĻ–¤]Æd]ÖęÓ/ļQ&ÓPH©·rņ+?ģ0ŹĀ9-Ü@~é–x­] öĮ®Å“¶ ĒĖ#®Ó®k`j:\vņ[ˆĆ·g >•2RvŠjjŚČ妚ž–Dv Nrzā„ÓģE•ńeŃ-ē]¹‡'ó®žĒQµ¶F1o•n”šē/¼ooöā±Śjn”±ˆćę­^KČ©Nš²OP™žEi?³„ÓŃzl‹mYŅtózĀt»›*¼¬€ ŽŠ¼Ei+¢Ō/ģf„Ļlņ‰š¤eqķXśÅĢ?ٲKŲ¤3`ƒłV°nöźDڶ›ō˜n¦VņݲOŸ_Ÿ0€j–āmŪNeHc»¶'ļ*pJ©āMFŽņŁg³·1C' ’Łü»UĘ=lTšµ¢ŻĪ–; Œ¾eä/æ€Ä޵Ŗ’÷… ĢccŁų5Źh¶pĮö‹‹«k„ —-ęžGµV“׬aŌŁWLŌļ#ōnŸ˜£Ł«hÉöĖķočĪ™ę“Ó`k†žŠū©Č¬ŻKX„Ąś‡Ų.¢ņ¹żģ'³.|C-żōPŚZŽŁ[“Ļ˜˜=}듾ŌŃō·ke™Pe›gQG/*J×.O_ĄŹ±ŌåÕōr!I-}ķŠWŠÅŽŽaq,pŻj-‚Bē×a¦jŅĻ”¬–V‘Ąć‘‚É»–ķ!2@é Ć$Œ )ó_S:¶¶Šž§6¶ķ9‹KõŸ<¼‡šnŸ$Z}ųKé5ŲtSų֞›®ėæŚ‹ fIŪoü“J|ā¶cÖ,^ém5»?µŹSƒż*äåµīDylœ×äf^ė?hƒŹÓą–9ŅĆĮ­­ļlcūtE \°l'å‘Uµ+¤¶‰„s€sŌŒ}iŚt×s>āl®c< Ķ»¢P»~&±«m.cjŗ•ꛬ²Śi–×VŖŪw“Ūr=}ė –āŅkq-Ķ“vß»Ü~~Ŗšž•uwE¼ qÅ`x‡AÖnf;x~ķAėģj•4¬å#)9kk$3iķŽ¹ć•§IqHLvžxĻ ’Æ?·ÄZdĘ9¬ńly4ĪŃķV-ę–yZ)ĶÅ“’ōaéWģāõL9ź(«¦v6~7Ž žĖ:”ul|²Åt/¬¶„hØ&+ä u废…­­Ž;¶–IX¶wKMh肯ä’/ä„ōUó0*ž(Ւoœīnµ8,hāŽįŠóµļҹéhĆH9ĶAs -„@É,*„®äÅ8īĢū"Ń«9cŒ|¤vŖ‘I7Ūž?030ÜMhOoré÷‘©ŅĆjPĄHĮn”ŅKsf›F>©ŸinsŒä’ͼ©rĶ#0Rqžlj,qǜļ<Ōļ³ĘŃąvõ=+’ičtF QŗŠĒmI·ķ…JƒÉ$ę­iŚ„ņŪ›|b59-ļW¢ŅŪ<­-ŗ ¦‹(ćxa=ĪŽ€Rēo ćMEļ©I"OŅ:ąą+üM,‰€ūѾlvŻGeåYłˆBõΉ|½Q•Š‚Ü{ Ø'ö…e{½Ź±Ī¾fĮŲē&’Idfó9P:zzUķR8dQ¶’Z”@°F l`œõ3ŠH)k”o]Õīo`°Ó™Ź%Ŗć"³fŸ€YˆŁ“hÕuZ"(ŃJr\W=Øģea!ó†>ø«;­ œ¬½Ń5mI]LI»hųŒč^|’REłS=żkÉ5 EÕń€ŌUKĶfVP‘n%GZž<¬ÉŌ×[£čŻĘˆl­mć·¾ŠM¤–ź=«Š"ń­„ÆĆ«,)ŠHā1łŸŽr8Ƈ~ßx/ć™fĆ«gŠõż"ęźóO·2–?.ęÜ0 ¢¶šŠV*8Ź­8&^hdæø$³FØ7uĘj@€ g§ūT¶ßńģ͇RĢ{b«ł„ņšŁ®y9_Fl£d“<.ćbr®1ÅhŚĄ¢İQŌUč­LjL˜$ūU†±&ČĄ)ķ_[ź|ß2µŒr£vUŽcR@‡w${ք" ]«ø{Ó"ˆOp;fmźP½‰ŌīłéP n€$g­iĖp„J€2¼g½>Ž=ńü Žō™Pz¼²°üĻ·"¢ŒĆ©ö'šÓŠ2X,Š»jķ¾Ÿl1‰A=č¶„¦“Õ”ōōHßóŚr gpēœ ÖšÅn‡v\Ńp"TĆĄM"e$̃,ĪŲG”˜—8ˁVĆÅ»÷E\JÆ{rńĪJ,8“ŗm£a“žėJŅŪ1ƒ•×'q4’ķYv‚0F1VcœĄ~{ƒĪ:·j4Ų%&•ŁŠ]yi€r ī)®Čån}ė6; ądeõ'5„`诹‘\Ž’ņ ŻjF'1¦w§ņj7¼™¤żŠŹ°ĪV§Õ ­Į -•1Ֆ©xb_ŻNTśPN1•ˆ%Üg½E(;Ą2r³"šå³R”„ ø##“ŗ‡ęTRčF‘n›rČqӞ•zD\qRŁIjb'$œu"§ˆŚϜŠŲ”& ¤2V9ł‰֛p造|ĆÆ5#¼YĄ‘ŽĀ«»[UŪxŖkBc®÷4vśw”„ MŽšIļT`™Š„(ź`…,ņ±>†’E^ėRģśz°YīØ'³ŽBAf0jeŗE„Ŗ AŲ¬ōŗ”ĪLq—#šŖĘJMhU—L”1ņ„eĻØĶKkcęrä“$‚:ń«°Źē 䲌ōaš‡ŹĶTd‘^)dˆ`åN1Ą5r).$ŒoE–1Üö„šź%’ÄóNŠīŻ£ŚØĆŽO8§¢V@“}ÜĄ;—pØŖ[ÄźAŹóÜv®›Ćz½½„¼‰$÷!ŗņ cź77 pĶ FŖĒ€3Åg¹;I¢Tģāļq†)XÜć°ŖīpųPw †āćR EĮõŖKż¬ó1ęnNÅąÖ–ŅĘœå-Ķė3'|ĄĒ?wV#Ś£ęČ8¬ķ4ź‘Ƴ2źÅtz]æŚ€YŃm¤Ē®EJ•“gD”+\Ķf@²ŹĒŲSJ͜ŠcÅ[3ŚÜZŹ”d£”­A©ĖØ͵«’¾˜ĮśUņ˜)ŻhRŽŚó!ÄM“ŽÕj(ä8VR9éPé×:ŪČV{iOLU÷¶¼-.G;—ÕĶdÜc±Zk%ćÜG<śU6“‰ē`ŖG «/ĮQ@Ęź-Ā¢ćĢ]ägļVœŖĘQ“oW Ų¬Ö7%ŲM[ŠŅvćĪ,½šitŪYå›żzm<ć5«s§ŻĆnZ=£ž g~‡C‡»ĢRxmۊHÓ#®xØķ,“ĖgBA㚟0€ŻJŠ&»y€0ŖD8'8”ņŪRSŸMŹWrē½iÅxĪ«žŠļU/|ģB2–čELuVYø»"­Ü08å•Oū#]ķēA˜ƒ:ć ėWc6ŹrĀV"ÆĀå“ PyļC}Ō­±‘f[p¦=jk“Ž`@'Š’īxBŹŹĄuķTšŲŻĪŚčĒ“‚W8©~ī”*ŽŅE?M(„gŠåTō94ædŽÕĮĢ„Fźėt)5 mVŚąG4J8b~oϽYøŃ#+½”Ü…/ҳ¤Ü¾4oŠ—+Jķ¤>j‚“‘žO/‡ģA­‹}I[l1:ƒĘLƒC[šmģ &7;<`’­÷9dŅŽŗݜH °_sSO$ū"qųÓbŠļ$Œ"N%Ē*ʛ¢=¤ūīż 5ƒ›źmģŅV“#³i'R­.ŅFŃCfL>Īx8Ķk^=œVĆjˆŲu9?įL³ņē·;Q=O žµi¦¬ĢŻŚ÷J®Šl%£ņūgŖ”±Ł …—kvĖqWõ{ ‰Žß'øRõ ¶›mKŲŚ7?ĦՐ­&ģV‚ÖŚgĖÉ#ŠdT‰kk–V$t…#5«{¤ŚZŲ ģę213ĶfÅ5ĪÜ1,AĮ8Öķ”&›§"ɼd>ż+^+Xf+F‘—’@Ŗś=ÅųČHVeĻńZщ\†ņپÖÅ.gsYN-$ö) Ę£Ä#p5sOŲ·˜ ŽÕ³ m0~čäŒÕ­-±ö•…żj»;\Ī2‚vź6äHŃüąŲ“Yŗ©ŪńŲf“/'6ųA-ÄĖŽ §«;Ø0¦mĒų™H#ó¤’[“Q¶“)i1[µŃ3I"(95zYl-Ų* ъ×;u§ÜĒwµšV9ĪTÖ„“w1Ū ļ»ż®iJ„Į'6iŠfR’Ē‚>é<Õķ>T“}¦&įԌÕ-7L,Įä%Xż uözEœV(ęą1#ęĮę±sodj¢•Õö1.ī”®–%÷q…i¶ż¬l^<öā¶.|”¹+6Ļ\jq ¼Ÿ¹ŽuI1Ż€5£Š¶‡<*oc8Aē¦ÄWY1‘YwvE&ÅŁĪī2c­ėČ/l+–SІŖŗ•Ā5ÆśIČȹ¦āö“KXZZZÉ Dސ0wb„Jž+‚ć˜ĻERk?KIédŒ’@+Æ]›E‚1É$cŠĒW.DnźrÚĘ£ ¶[Ș`c f¬é+Ų€ĮśüĀ4-,¬ņNUlńłU6Īķ\<p8ŚĖåWV›KF*U"÷@4‰pq `¦*½Õ“[.Dr1=TŠÜŗŽżs9Ćą­ &,y©»ż¦Ó…–å8&ū#“±€æĶå(Ōb“ma€Ķ²A€G@k¢ŸJ@pą ä5:žĻS ŌČĒ9œŅåm]ę¢ŅHŃ]1 ČxŒ½0z Ս]²|˜čvēŠĪ¶7RZģū©?ŻL~µĪki­Z]ä é£<#sJ4łµźMZŅŽ9ŽÉ³¾Glœš)ĀÓO-»Ītģڹ‹¦p^t92MO„ŻŽµĮX¢wŒt-C²Ü„9JÉ#” m„ßżŠ†hXKø<Üō-"Ą`ž õ§O$ĜaŽ:ƒŒU'Ʊm C4›V}¤Z—ģR K7{°Ŗm‹24ĢŹĮ<֌SKŪlg®k&ŪvCr{62}Kˆ0·Ā,Žp f³F—-“…>Ś Ē˜ ѹŌ!BĆĶmŲē Īk:c҇x.uÅlćxźd§­–†Ž‡ ąłrH]1œ†©õ;°“WŒ?‡j}6[±‚hŠõ,1EÅ凔•„nĮzŠĶEŽćsQVZ™qGu hÉ=rx«&I yT%ˆéŗŸøĖĢs”8ÅVK˜ā'ҁӔ8üėEö«}ŠU½¹‹‰`nc겆ł­O—’\ńZŅ®ėčp)D2Č qż”œņZ^i4¶/šIs";}JŠēdG¦3W£¶vfR½Gj­i¦_ooŻP:+3ķVc‰ćŒÅ-¼Øq×p¬¢ķŠJļWøŪe„’®xÕĒ{©·,'6ūBś“𯋛xwł¹ääUłģ„QBHĒ8 ¤Ó|©ß*»dV—hł²=‡JY®a•°‘ØĒ·Z§m ‰K8W÷øØäø¶¶øĖ2ž‰Ē4łmr#QZ̶­˜Ąm•=£M±¶ŅF2œUIµ{_”“1§#օ‡ˆ,]üµ698©kK›{D×*!–(dœ›€äõ ]GOÓ„…føøķ÷œŸ»°ę©Ż%č›-«ž„H5j)õ3ē•“Fq³“Œ ˜Ģg?+UūF¹’&[GŒ2õÜqĶŚ|Ļ"˜łbæĀphÓōĖØ³ 7–ļBQ[«Z²­Źźįՙ-H±ĘM,—ś¼@*[Z'9.[śÖµÄ)ldłqŒéŠĶĀĢ68Ē'µ).¶3ŒÆx§©cūZžHBˇĒ.ÅU†śV”G*ou9ädTöZDü“>°cS›Še)ģŽ ńG2µ“ ӼȮšĒ•’G`VtöSLŪö\DOA¼cō­»ūYöUf8錑Tü©Įä\  qM&£t;®mPĖm-į‡7ŻĘFÖ5nŌZ€‘š¾qV­ ĖÖw `|Õ`ŚiņÆ-æ˜ÜœśŅŃÆxŃ{² é° «ĄdeėFĆV†XŅ(„jĖČĖb³SE“9"X_„WžĀ·-½]‘‡÷J]J¶–lÓŌēó«ˆĖuį±L·KB1`1Ē­Ee§< āćėŚ“’H‰CóÆ]ĆŅ“op‡*‹åköxĘ€‘łÕų-­e ł»ņI#uĖHd‰HSŁjƒ\^ ĮنźĶš‡k§””—3Z%ݼ*Œ"żųÜVBK ϶XŹ(ī 5vI’ĪŠ0b™ä€ ¬ĖBŅ”nF?ģ‘ĶiNWÖÄÉŁ„»vĻ%į£ll0 Tövś­£yČw©źXŌKĶį*ˆĻLÕķõ.|»ĶŃÆ;všr‹’*ßę¶”©\¢öŠČǦjׇµO”­Ķ¢ģ#’¼b Štļ6ĒĢø£lgjÕ½”nū<ŻŖ9ÜĆ­fā­©¬dś4Łrņī߁ DGeaŅ«ŪźG!ßiœõ*8¦_ZÅØY•½ńŠ’0K s;`ōęŖŽķģ¼›JAzś|øHƒĄ°k.{½6(÷Y—©Ć]†nÖį%ˆJrSæšžœøŲĘqĘą(ƒM“]NrßT°Iš¢9ž¬£„mھ•qaKŸ¼WTŃhVd«G ś‘VÆtx?³ü˜ÓiīŒsSdŹ\źśéŲ£Ø Gdš« D9·žĢ˜9«z_†fG$NĘ9^•#hÓŪgĖ+!ĻSE¤ć+ĶŽ“žer$“iAć$ę·mSKhøņe#”sUte¼Š/žŽŚAŽ»¹…ié÷–¢.ęĘ&lõeėX“×¼9UoŻFN§c`¬&K’ģ, ⦒ēN’ŁDS–tg“[śÕ¤vE”Køp|¾q\śĀ“ŒĒ¶Ēuć5“e+’źĶ.[čSøÕfX6µė¢ōŪ×5It}:ż|Ū“óDƒ'ø5»e¦&|Ļ9]—’1Ö¶įHž–Ą0čUpjy›ųU‘¢ŒR¼ŻĪćE³³–&¶I"QĄĒ«ŠčŒ±hŖ62IĒó®æZÓ,d³¤lɰEsrxOJož;‚™9ĘćT¬õ±ŒŖ9;Ač>J<ƒ”»,q×9­32jJ7Ćä« €ĆMōHģDr Žtč2sV|¹ęš5<¾sÓŽTŅ{y•×{’Mf°†”FÕ~jæ¦Fėj±Ķ$Qąc‘Uīm/eŲävŒf6ėR$p£ęāź}ÄmäRåOØÜŚÕ»üIn|¦"PÄVEģś®˜¦-AD` ī|×Iq¼Č6gR:Ģ’ČÉ'“-“O=wbœd–ęr—;å9K›ū©Vk³6įR&ĘPĶ’9˜u šģ.b*ŻÕ՝±ņ!Šbzž)ŹķŁ ¹F7(½·—åŖ™‚õł?­hÄ© ŗĶä{OĖŽ3Qźz¾­oeņoQOކüOz§cÆ\_Mµ­X0Éžtķ4ī唜d­mé> Žh ¢ųK“sœõśŅź~‚Žõ·#–@qYk{wi+eÆā¹Ā! ².īī"ŽKyZhóó,ćYß_y•9I«Å ƒCø»‘VŅ+©€Øu ĖęDx§QĮp+”°Ōµė[•6öö-lGĻŹA­»yno“uެLż·QĢć+7 łSŠQZłœ&•gt±d»Ž=]W‡¼?¢½”[Øcy˜n-“‚~•«§é ,¬‚ŻcYüŽ¢ŗ[ 'L··YnS®NFkžrmŁŅ|æ<Õ|3eöŃ&žńĘĘŠŲ©ō[ VŽM°Ū¼ŖN2£Šģ®ģ4{‰Ēp±> įø©[xķ¼£t@ĘA œ}*§ģDjÓW”ŸÜgŁé7o&éķīŗäZZ„£ZGŚ,m^1‘“üė›ń‰ŽŹÅÖqtźyU5ĪYųŽÜ,fßQ„æŽgč*”‡kć‰ęŅ”M’ė0ŲŽB¶6\Ž[1ą:é¢ńךńŪ$ÄsŠbøżxŚYXƒ!ūI}ā0Ź>µ‘m¤›e†YŒąIÓėC§ļ%c5QøøÉ$,³y’Į¦ČƆ?Wŗņ$eŠH¬ą@rv·zÆ|ÖPiåŽR¹ „g5_ĆńZ]KūõFå|Ž)½¹„¢¹”Ųģō}NÖqn°Z¾Ńņ‚j¼öq34ĻĮ“øl ČŌ`³Žäm·LČĒNŸXÓīšf ²O čAn•“¦ā®“7U'®ę唺}¾žņL× @?:ō5›5†„ś4¬Óv\ä譌ČGČBüė·5•k5娓ģ¾—jCżŸ“YC™«ĒsJ;s6bj¶×ņŒŁAg‘F ü* =!$¼XoŻDEOļ Ī» x’āśģŪŽi±Ę‹ė \~b“|Qf·1ŒŁa}ģ…ŖR“—'_!NIG/¼į×ĆV‘kmaš1ĘÉ&Ą5y>Ėcfv®›=Č88ĻēXŚōd˜Įk žpkRl¼Ł-^7N `“ųVŅ‚z=ĢįQØóßCŃt[Øī–7»Ńl”U_õÄ›³üŖĘ„ØxmmŹŗŚÅøćpˆ’į\n•«3éń ŗ/Š£ĄTgėVu˜5=JĪ4‰ žY£‹ükI'vģlėK–ŃGA.Ÿ¢Ż2HnüŲ¶šŽ[)üj·¤Yxz" µhŌå˜.Ž}+$ZßéśT[‹]²®~nśÕ]<Üj[£š >ÜgžYĘsųŅæ2¼Ē$Ō­oė–7R+,ŠĖn:¶GZ”6™£ĘŖą‡L¢ƒŸzĒø²ŗµŸŹKpC¤Ś‡š­›KĖŪc ¼śU¬ČĒ ŃŹ fŖrQWZ‰6•Ł!RLR5G憦ō«—–¦ĆŹFņI\īUē5gYšåž§²‹›)ˆČ1?ĖPčžŌ“õ}’­Šź<ÓĶG4ęā\©ŌÖļAŽ›F$Z„žqaĆČ9rŚ×òź³¼™%SĮ,U?:ĢK[F»"ł ‡IŽ“a’Ö;3kmhd^ƒkõüér»ūæˆłŪJļīGL4ūń„“ŗ±œ…Ü„®TŒūäהųŠūĘQźūF•¢“LŲóPߏ£Ō[YƒY•“żńĄēę^+wF½Õ^Ų5ē‡$VĒ%cĘ}ņ*ī ­¹’Œ§ļJ/ń%ҵĶV+Ū[)xžU×ųoR¼›OmĀ8¹ąŒ~µŹŁźš{\,2h—ÉŽYА+vŅ÷IŽ ‚2z ¤V)t±·:[~„/kėØ, sAēå’ėUż3YÕą;4Ł—ü+‘ń{Ć6Ėi$»Ēņ®b{u·-åžÆ+ū“ˆńł×[„²zœ°­$ݶłžĖ½¬µ±E6Qo<¬Jżk3QæÖrnŌ!<2yJ?\Wb÷iāT’ź Ė…V=j¾§%ÕՓGęŹAåŽīk|,Ņud“åŌī<0‘[J’,ņɓ» ‚3]_ˆą¾ŌQ~Ȱ²ōżkČ<74ö–xŪ;l;‰VæŚµ/³ Yn`2Œ£'"¹åĶĶ}KUo5”×jvŗ¤6ŽXYUIĆżk:-ęŽI¤½ÉĖÅF}EIąŪ{¦MŚŽ­}+ž‹#œU½M°s¾Y唎‹ø‘FÆF]ķļ"ܚŒ¶lc×.RUłB<„f™iāYT„›Py^Ųõüė’ńu„¼¶Y·±óeA€ĶŸ–¢šĘš.t濦<³ŌyjC-\yTjęNu§&—ßm½|ApU–Žį"Üv“»­UMBā2O!™œŠ­§ŁéöīX&•W¹L“õ¤³ńM©}tۃ~š„ŸĪšNĪŪ&•µ»łš–>*H›Źv…‡<ā³õ©4›¹Ži ØeĮłų&„žźĢŽ0ŸDš4ŗž^3S½†šlĮr6zeH?wn¾`Ō§æäsZ„–PIµĢn½€ü1PG«Ļ±­–ßĪ‰ĄĻ5”®Ā‘ŪH,“r_ G“łÕ HrĀy-ļ-nPīc·šŃņ(«ļ÷™F÷Ńi÷tŪtš1#Ą±Ŗ›ķL–6×HœeƒśŠŽÓuÕånkIO@čŽWs3KŹQåIÆS«šåĶĪ›„HĆPŌ%ާ*ķ•ڹ…Öõ‹FHŁ=ÜHĢkb Z®V@Ź1ŒÕ „{udr3ļV—2nĀ’z(½XY$÷jŗæœżœ1k£šÖŸ§Åø“ƒśóX·¬Ćw+³™W’>•&“m2ŁģŪvĪ Åg$šŌØIĒ©­onÉs(žé>ĪĒ?»B3ķK †œ—.tųī0ć’GSķU”†I3ęÜ]&:F*;Éf·‹}µŹ2“ĒŠ;j>~ŸšęՄ÷nR ^DHūڱ|o,÷,¶šĻ0 ć**¼Ņk1-«­Óœt¬Ć®_Ū³„ęœ •F7$‡9«Q¾ĢŹu/¤–„Ö «ŚHŖŒŅvĖÆ_ά jõ$2É|ü¬øĒ„O„M-õģ7 ҳg%dB+nä_E:É ¼ņļ8 6ßĀ„ĪIīT`¦Æfy¶„į]}|Ā#…‚žr /„ķüC ŁŽčLŃ'4ż{×¢k^Āľ•Ø[ݳp?PWŗDåø¶f<;ÄkI>hÜU)+ésGH‡X‹Fiķ¢ŗR ^źE`_ųžėMeyŅśY7|ŗ%}ėØ!»°Ņ¼“¹ŠP œŒ’jöÄŗå™’Cv1śā”?¼7Ņ-ܦž,k½V9c3J®£-"c{RŌ¬5^)Õ®‚#ƒōØ#Š(!Ȋx@Å#hö^C\Ļ4‘īŒć—,o·”wq[³CM“ŽŚČĐX #?!ȔåvO4äõŠÄÖ|S©^ܤK$ijF|µL6=ū×Qį{>x¢†O“,ŲĀä`f ]?LKuk FķĮWäĘµķ­MµŚ\,/Ź1Į©”å%e”œ#Ė+óöœKēŹn€<Ā²~#Ų¤z’dÜ^Å$ß,1ƒé]½Ü·e>ŠŽ‘ķ䃐 A=½“ŒL“²œ“Į©Så³gDÆ%n‡šųG¾1µģ5;+ˆ„Ćå#éĶnėŚ?ˆÅ¢5äiąR+vf |‹g[…äH“ō©ī§½ra}Fęhß³ņ>”Ōęµ{“*Tä­cŽŅ“żD\mØ]Ē$œĆ9­÷‡ °--«ŻØÜ^UŚk”¹³ŻÄc¾6Œœūžž[kÖÄҤūŗ>9üjć9Žż f©ņŲę|'uw$ĶŗŅ®ŠœyS8RG„méģ—o+Ćgö3me÷/ēX>*Ó®į¹Oģ‹K–ē=ŠÄŽßĒV·`Ēh-”~XĆ)ćš­šOVÅ}˜£Šµ·Ōā³Ce9ūŁ5ā/-ŅAk§²l\»–ĮŚÆųkZœ^Åm©^ŪBp÷AōĻ­Zų«®ŚųgĄ×zēi³#,™pwąĻ5”/'d· ’¦¢łßārśēˆ•¼”W»9käŒ)B¤—5(éē'ł ’“÷Ękß%„ĀÅs:ǽ ŠużXŽ™Æ>2~Ńæ5ŪłŽ•x¾“°RHõ$׀j:µĘ”9¹ŗšig“,ĢģIĶeź6$Œ’ķ’pT«(ū“ĖXKūÕŪw魏_ųmńgǚ7ˆ›VOß}«±‘ņš¬‰^2ń‹üTڦ½ØK}w+aAč+Ļa’^]Ē8ā¦k©ķ.VGaæŖćŌ×œŪŗ–ēj”„x­ Zżāż¬$®„˜’‘V#½Š;q/˜„Ÿ€˜é\ŻĀ«ļ=™fĪ Ål^é­ QŹß3‘µTPļļ‘„̜ķJśs]åUČĒÆjÓÓ”‡ģD:wś«„ŲHӃ0pŖUU RGµeg-m ¤¬:Ś(”Rr‡#4]Ž©ƒų«›‹–\cŖö’³¾GĒZŅÜÜīqµœąŠŚuū:wŒķ‘S85¹K™źÄŌŚ$‰Čp Ÿzå5KĘŻ§9¤ŽIe”–bĪp:ō©äµ‘C;ą“ĒZø®]$eĢÜ®ŁKI‘ Œ$õŗ‘!…v0Ļ_—µeÅnȄ(ŚZ¬Ą³Ęū!X`c4MslRŗW,ė1¼p&ęɵB –Į˜ņjõźĢbV–=95‘Ø>ĮŽCuČŖcō4ękH•/ŽIe`Ł<`öØIłøÉ=)&sAlśŽōŃ*ž›‹z čŒ4±Ļ$ł‹pTćņ­M>0pO^¢ŖZŃOÅhŪ.ÅPĘ+:K»Z–0T|’tō Ü[c$gžžÕfŃX¾ÕSóՖ‰Å¶ `9ąšå\ȵ-49{«|³ ž½ė.ńs¼×ash…ac(ā«Ė¤‹Ž$}„š0q[F«[ĪŅVG/§é÷7·#B”»“Åz’ƒ¬––>Ł9ø‘PÕO‰¬Å-­Ā ¤c5Ōh35™q *[<öØ©VRV¹1§ŠžIAˆ URO#¦EgI!ĆĖ“ƒŠ·iĶ@ū™Ū«hŲA““Ķs¤·g]8»Yž4óąnĄķQŁÜMѐ"ūf°ģĢrY™¹śÖ“‘Żø^HėœW×_”ņQ‹µŹśń,7G6ĀzŠ‹EYEĘć! ZI“ū–C#9ūŻ+cĆ» “*ēėD˜”ģĶŗ&+®ņ߯«1LĖH õ±u£“~YõĻJH$?, Æø”$õżŪ\ęoWQßŗ6r:Óa¼Ōa’Z®÷é]ŒYó¹Sé֟p!–?—#Ž)¶‰ŒZ[“W³8Ą,µnŽŽyćÜäW<æ.@Ę=ż‡zŃ €–‹ĖŃų¤SZhd C‚zRÉo;GˆĘIZ·c[7 77aœā§X@ČĪWµ>d‡k«…Ę—Ŗ}ōD=³P3XĄ ą{ƒ]ߣ&@øƏ–­Em0‡sd7^„QtŠ’åŌāc³–(@“haü54s²Œ…Īźź5YQVXSwcŠ„4K"‚ļ'¦>[#56ŻŚ2ČŽ@Ž^H«cD3BɱČõ«éņ‰U„L¼cŚ“äiąŒ$Z›6[”TNf]ž6[d}jŲÓ¦ņ@‘\6;)ėWÜźpéå’“¹©l/%3€¬ŪŚ5M$®Ē ÉčgAhźĮIu\wjĢšXD™y-ŪŽŗ™.¤ū…HĻąX·1ł“ĮwĄ PŚäÉŻŁt3aš"ŸØ5fYW+“cÖµ¢ŅŹDĖLԐ*õ’ZŪ•Ģ11Ēńs@JŻY‹ŗcĘj–;(ŒÅŹÄvŃ\ )Š|”H‡5Y£[c¾ÜČY‡zi§”›MjeŽD¦-¤2ŽŸv“Oµ¶ Īę-ŽŖė²ßÜĶ„ĪŃŌdUķ¤ŠY”/ń3SQŚÉS^ė“-Įem˜c85n+hF WĻ^ D5;HĮ­č¹[ĮjĮÓĢšHŲzµQō蔖yd8ŸåRŅÜ„9%Ė"ćŚ\mRŠX‡Õ ²Ž'1Ļ,L}$Ų)RŃąWYīĒ`ETŪ“’ėÓ Ī8ØŽėREżįrቦ–i>i¤l~“µZ ĮĖŽ˜ÕøŠ)÷Kﻚ¹§^[<ĆrœŲāagk23 X·pČkV†ŻŃ× Šžj5ō.1‚^ó*ß%”Ŗsfģ:åF+Ó-® Ky cŻŽ®ę+öHÜIr9µ1ķ ņˆø‚ ˆčjį$×)Ļ/v\Љ‰g«†lQĮ鹛Õ«½Zä:Cå(byÜ i^i‘3o¶“GÉžéUĶ.Į#eß0ćØšN<†ń—?ÄQš®¬ČŪŚś6ĒT-ҵõ;=Ff2DÜ` ēšč4‰“«krMĢjŁēpĒ5‘ā3¦ß?ī.ȔsµsƒJ”·”Œ±|·JšüŁĻé×÷Qß`©‹Ź<ķ9Ķt±źÖĢė źā©é)š‘öGœ`¶+RkgO8ŚEFyĘk7äo*žźQÖÅ}bHīmÕm‚\±äp?ĀŖŚG‰š yfĒŗ כ\‚SŸ².įü[)­©,єCuŅ…ŻäkĪ”-©œņŹʤ=…,‘ŁyŹd“2?ńœžuZŻēiŲł„véŠÓŽŽļÉwŽMŲwČĢ$ģʤyoå, ņŻMLcgĢe'Ėf:÷ĆL÷ŒeŸļœ€£¶Ńķ-œü÷^bõƵt›|ƲMĖÉĶA©Jcaī_Ēń ŚJ)(æėęSÖnŠAĒq20V– ]*x†ė‹°ģ9É#ņÅ6Ūęi^3»”Ž3S[KL$f'ųp:żj*^Ś›IėŌŅŅķ¬ąUņneu=™«@ŹX•‚F :a«:k©LC6‘ŽøĮiL Ć*Č$ćµBi+£g6Ż‘„g äŽwÜINś%µĮ2 [|ĶQĖw!ł”@@ėQ`¹õĻ„5&ö1÷~ŃC]ÓJ(£aŽxĪ+>+;ęf]¢ qķ[×wrŪ `†unŠsU­õ y%Ąū\nsņ² ÖNN;ū8)ŁģŹ:f"LĀie,ÜÜ Ū]4[C¾7‚2yę øbī|z”²Ž\ŖŖ"ĮĒV9TļfĶSŠ P‘į6 Ü'ߨķ>Ȳ35ÄźŲĻ#5Øcy”esÜQ=§ī¶e[Ž}j®žˆ9ķČĪ[[s(dfr܌ńšŚÓ­’CF1čJ”¤@s&3œūVĮ¶ŠeŻm7 :ī¬äś2ÆīŻš­¢± įų=ź­“7%”½+Ņŗ» ŚHĮšźW#ž½*žæ¦Cj|Č®·B3MrĖK¹N:¶Š7„Q“²ƒÓo„WóQŗI*æcŒÓŲ3Ä>eQŒ‚ĒūxŲĮ†‘c8åӚ¹>U ©Ļ™Ż’[£fÖ„:i+(œp{h¬B½“a€@ā²ģ¬¢}@>^,öę»iŹŗ§••õōŖpÜđåįqĪ2TŃĖhr÷!8¹sC<¶v‰ˆŒ½Bsйg©ŪĖĢ× œaYr?:« 4R_Vķٶ˜'˜Ō-O*JČźŠ¾¦Ę–Ör¹+#a†AmV ²`ö$\Ɖ Ģ^Pµ…—¾ąÖLJg™,ńslä°Ļ=EfćŹG“rm7dX½Y€dWFpGX:¶ä‚\uU­„,%·0ąf¤’ '`·<y­9ݬL"·µŌq®Ę¶]ąsµEu2‡ĄŽćp„MÖU‘%™Ėu Ų«1é³3g.ŸI£šŪ.gń³˜ÕļeŒm…O}żæ*n›=ŻÄ|¬dŽsšė汄’&ņ˜M'£E­”ö¶ÄOn#*zRź)Y!ʔUå9-$Ķģą8÷¬Ų4å’ķŻ *ŻĻl×cżÆd„F” Ž9õ¬éeŽ?ŹčńƒŽkDžĻC Å5esŸ+$S‰vŲÉS[vhęņąĮ+V&ŽŃa+$ņn lÕŻĪĪęÄÆŚęVIrŁ­hņ“õŌ§spŠR+‡Ś9(¼U&„Ž9Ą1`ņ Į­Ćllœl¹óÕæŁÉ§¤"lHÅ•.Z­¬eåµDē ėœŌ°Iö‡lI¹‡Æ„\¹µ³ ędlļ„ŁŪž2!eHö¦ÆŹg™%¼!­ži"ČģZ©µ“Ÿh9ˆū`Šeę•)1¤œƒŠ’jhrteiŒ€M–ć§õzdәŃ|’Œ? ĪkICŹžbdķ]×" 8+$DŸĢZv…µķϘöķo»‚Īx­³kȗ‘"ćļ$˜Č¬łÓ÷M£Ķ/ø„{g°Xī’?AŽ*'³µ‹——=¹Żš£Ø—PEµŻ¹­&M`jחPH‘ŪĶ ²ŸNŸii«Š™TwŃkčtözÜJć):D:‘ž½Ž…©Ą ©R~ćn rz~™¬][$ĻĀņų`x®…ķ­ąŅDæfŒ\–#Ö±r»N“ŠQµB¶¢ĘŅļdi5Ņžs°¾ō°C$ūę6Ļ#ęéUVāōǽR8ŃGsZks:¤ž[‡Ē-‚«œßR"—C5u«kWņf‡qĪ2͌×GįÖ“ŌČÖŠyÜóGēX7¶–Ńjr¾§b&ū¼ć¤&’/Łā}Ē”N@©©+/tØMlÉüS¢^G!–Ņ?&"w.ęQ‘ųÕ+u·C".3ól!«£:…µ»m¹ŗ-ņńĘHšÕÜOlÆi6ąąīŽ#‚)'9¤)5·æŽTG·°PĘźxĘp#Ŗ—VörĘ×Fė{78īŠsVttˆ¤ŠDFĖZ6śL6ņ$’XŌüÅLc„R×KkÅkx]ņ1•ĄQš–„{/fž&üŽÄäŽVŽŁ·ƒĆ¤GšÆ¦źŚ‚FėżŸpÓ‚Ī»k¢†WBĖ nŒąu®r{ĶPė„›~±ž§Ėź+iŚQh˜G’KG©æąfyŸŹ– b“?ßĶnė÷‘6ÜI/Ś:‘U|?%”=µÄ ’1b»H®ž(=ļ%Ō›‡Źät®%¬õzņ”TRHä˜īʊę'Ą,»¶ēó§GlĘf‘ń‘øäķ[›Ā+•®ž(É©-¤žDas V‘‰q޵”ŚZĒUxœtV%Öł<ØŁ¹\­tśi’P‘b€`lŻSĆņßłlŗ Ež"ą~UjĒMM2^żcäējĶŌęw[ŠSЇ-w”·gv-ÕčD:/¶[rĀźå¤Ž>č9«š–Ŗ“_4(/oBжćU>bŖ0j£ū„;¹^F^³„µŸ$— i×˶į‚ĘĄdȽ>ÕÆc ¶×¬ Äėå@«kʖH&‘^ Ż'śQ©±Ō„d¬ōł‡ƒ-ń$$†ņ{ę`>VŒJŃO ]Ā큕äĪ†õ(﹓##>`éR§ČÆq:N^‡'¢x¾ŠŚÅ ,Œ°du*qłWS#hwÖŹ#’_8 CZ‘xuœ&ß!×±ŁĶC­č–śu«Üąąą€9¬—¾ōzääōł ­Ü©q™ķbNŒœn­ˆ,Æ7EöÓÄąr² ;æóKÆźĘėŹÓ–įŚ3џĘŗ]T×µMöFŃ —’q“łV“N>ėfTź©ßŻ:©ĆY“ö‹˜ęDSڹ»ŸŁĮ{‹døVä³Å[}B‰£æ‘#vu0I?Z’].ŹM5¦·>d޹ ŌŹŠrµZ„ēĶŖ#,źĻxŽ\¾eÄsó!Ü+cĆŚTĶčlGMĆ­r­¬O¦Iöoģ« ĆžZ” V†•ÆMyvW¬«ü 0ćQVµŗNqZõó:=r+Ƶ¬Ųt3u¬ĶWZ¼±³ņ£$åx`cć>™üźGI¼Ļ6ąG 'ę11äU¤±¶xKF‚@ć$“QA[KŠ¢©8’Ą9]A®źVż­ē’1]Ų²Ō4ķ1ÖŁ!¹sĻ›‘žkJ°°]iĀElTdÜ-dŽfįȬųōŽN*Ö‹¤žvõČļéY м’2Ęķ!<]Ē5–Ž8ŸĶŠy–`żĘÕ5œmg/Ģs敽ĻČŌÕ“(u8|ĮzÉ(ū¼c&³“VÓuO2I®^QÅSŒųŽĮį·¼y"‡Ģ¬ ?^+·ææcH÷K°©4TžŖ)Ž*זĶ)¢ap’(Ü1‡AĶr¾8[—S,KåNŠ$Ÿ­gxėUńLz[Ggm"ǟ•„®“ļj—ż¢źHmÉ øŌVj ž¤Œj¹Ī\“ąžóŠ|=­IinŃjsE#'ŻYTGn•„®XKo꓊qĄ \ęįķFļӒgɅĘfÉ$Õ]WN–źģ˜ā%\F£iüūS…„ŖŲ®Y+Fśö5,üCl%Ć#§?yFk¢"ņ’Hq¦\Ū%zC€+™Ō-/ī4o² }§f ·U©čÖ¬¢O5ÜPIŠ“ ~h“Vіį>Śzšņiڤ6FĖ­:[Œą2Hy¬ŻGĆ:ķ唍upųę¶4½ [¹NŁä2Ć3ēuu°ųrķmTfį·›oZ—UĮ®RVI{ŃüO?ŃtčšµLĘŻ}qĻZ‡WŌmå‘VPd¹Ī 1²ķüOZķµŸ ė–ŽÆnóK œģ.xØ£š{ŽJ Ż“±¶2Y SxüRw/źõ>«4›Ém­“öhTp­ SĘ“­%ŌļcóāI">RČėRÜü5²–}āk³!Ē/ĻėRé›L½(’É čŌūXŪBžÆ;®k~#ä½Ōcµ "_"~ł9üčkę» ¶Z„Ø££‘ŠŚ†ĘīIŗiÖ%O Ļ"½"ŹČ½Įµ°œ#åŻƒÅ”£'„Š„ĪrLęaŃOöX9ŒĪō—„sž"ŠnŠ$ŸŪzĢ£)œķü=«¹‡I–ĻW3¾¢ŅÉłEMŖ7‡ļ%Žyӆäl`ž?҈ն‘©{¾ņG-§YźpŁ ·Ōo.cTĄŽxüź —ń›ŪÉ ¶éĪC‚Gć]žŠ‹2[jŗŗH2"RÄWOšćH‡Lµžs+A9ė*äę“«Ź® ’–’z|Ńå6w~,·¾‹ķ6‘°å!ŌWicq=”iÕD chló]F”¢i-{½Ś¼„·ydā©xŖśĒJ`–p\ŻĪĒę†$<ҟ Pßó<ūÄ ø» œœ1 ½ Åk >dŽź„m›§ēZuü2j!µ :kX„~|ŅØśX?“ēŽ¼9šóĄ-Ŗ^$70Ü)X\æÓš­'9(#oNrl‚źśufņõ%²%–¾`ż§¾?Oį ööžxņ²–•M|ĻńćFµ®xĀćQ³ōč\•!ćøÆ ń³5ęµ+ČĘG·Čē¹®¹N+ÅjĪhR©U)KŻā{Oĉ^0ń½öu=bxaVcšā+˜ńGµdÓæ³$Õõ ą·vÉ1#wē^iq$ØĀ&1Ŗœg=j=lD± ™SšóŻZ²~ółĢ0xx¤ŌRüŹżĶÕÜĻ •ņÜćqĘk6Óķ€7Nē5<Ņ1a8/×=LU~Ī®dVaĘĶ_µkF‰ė “,¾RFHĒ8©ć‰³‘æ= ‰„ ![=Ŗ7YŃĄf\d0*9®k­“F›\$pŪ/®{ÖEüždŸ½ß$~•bĖNŻīŽäüUæa§$[Ūh%ųĖUBi= ”u÷Ł‘”A$ó©RDKĪJ÷®ŗ$Ž4ܬX°Įē„U…­ķģŁģbŁävØ®.£NÖVbFx§ŹŪ».U¹]¢iĮ E|rĶܜ⠺aēa#9=ė.kņ—cA'Ž«k—¦HB,1‘Q'®‚Œ£kÜn©z e9+ĪjœwGÉg=9ŖQ’A`r1‚(.Į(6&Hēšžu±\Ś{ØŃŠńćÉi"„¶¹™Ųm;Ž9Ļ„féiē$§nzéZń„vŒvči¹ßby–„›n]I9žB£½xÄųB:sŒŌ ę,yfĘzÅR…Œ}£ßŠ¦ī‰Š³±a¤lš}$hŚLmŌÕX’0¾kKœwĻ4ē‘6€’{ņ*ćf -»‰x‰2 åGl63MXD%W€)!“k nąÖŠD¬«±ƒ)肤,®dMj ^H9┕ ó'dŠŻš1°¦ `8ŖÓŚ\¢³˜Ł£#’;RZjJƒŃ™öIå‘ĶŸZՃbŁŖØ#§z؋œ®AnjyŅSīéy ä*EV[¶¶7.KUk—&"Ü`œ}j+`$_••OJŅ1\ŗ”¬ćؗT»¾6ņOØÅdĻvĒ ‡,sõ§k`H<¬>z–SÅXš›  Ģ»”00®˜4•Čv½‘°øøhfŚŠŽ¹ĻZӆßÉĖoܲ†Ņ“56p»J’ŹO ŲUIĻś0ŲÜw®iI½‡¦ģaKf¢å3×õF2`(?Ī“#BdŚ@\ō9ÅjY‹t‘C"ČĶ׎jŪŠŅ4“wfE¤#*ø·^õ mchē<W¤EFm‘•\ä5#)X†rćw-•%²[’*3²²ŽF9¬VŅ#62+¤Da6ēRSæÓ½E|lŚR$u’)Ā÷ŗ rźsa‘\¤v­+ Ć:³$ІW„[¶±QtŻyĶ,¤C6ČFŽ;V®„ög*•ŻŠ×ž±ó€“nHćéQ[iĪšƒę½1]/“=Z]Į‡{Tj6Ū: @ē„dź\źWŒUŹQ)؉HVąć½Nc3”×įH8©lŃćv@3šµmV2aFF=©ZĖC)Y#&xb“ŗeTg+ŌØĻ5>—¹ {·`/®koÉ·LlĪüī= R»»öČÖčźr½B“–ƒ•H„tG|©g žéėV,Æ.d…b†0«'Æj„£›­C[^©ņŹäÕŠj—)g‚ÖŻ(Ęür?vū+rčՌęģ…“…Ģūˆ)°n'·Ņ„ū{pÖ:“‰(‘¤'›,kāõMß1¹cüTŌ"· ÕmžY¦ŚySS>Ś­–Yß ­ ¾+iLqČ£óĶ:|×

k鯭Ņ>i^É2YHč~f÷ŻLµŅ„Ü6™2PÕÕ¶D_ź±žųÅTóĢGk3Ņ“nAn_3$Śe³0Ś9É«6Ŗ7c §Č²2#b9Å_±#PƾF(z 7źeĖb? *U5zŹÖ@JG)aźWŠ µX<Ų¢ŽŲĪ ¬ŪŪŁ-U=HėBŌ°č“»’™:śÕwµ).bØwS ś–s,ŽĶZZzĻ9 Ē G;±NNĮN<ڳ ZBיAƒŽJ µöIŒ€E+ų—Šż €æ™ÓJǼՔŠcV-żįéB…ÕÅ*±‹Q‰vĀ-QaZ,„õ¦\& f"I2z÷«mė}“rJ„j‚ęå‰!‰ĻØ„ˆ«'Ų­w żœ–@Ļėŗ³-¦–#ĀŗqĒ5jāUi1ŠzžŠFcnß­U픋ܵ§Ž4ˆŲńÓ#nßPĘ6…\äSDpģ ę*qUļ ØL4ďāā˜K–×±fQlϽāPO#œ~‚źŪ>Ļ ūŒVh³“˜äM+‘čõģĆ żó‰45wĶ][–ZœĶ¾—r#ˌÜ’…Sæ³hŁ•Āpzć­uŅ_Ų”ĪĻ”>”\>›4Ac}īF)«[ĢNI=ĆŗCĶūČ]Q…nŻiڇ“ÅĄ]£½MX³µ*ŁN0LÕ“ŠšČøŚ:«Vjėsiµ%¢9Ńiz )ŗ`Ągžō–Ky½w°śžõŅÜÄé6$ Ž£­-·ß†VõŖ{jDd¶D°™#jp95jŻQ{cµ\Ó­Õ²hĄ&Ip¼dÉZvŗ«H»K¶1Кd·Ÿ2żŁzÕdÓßqx£LzŠ®ķīĄ^ø<ā²īQn¶¼či_BŗfŽb„õäRio­#ūĶĶK«+y 4D‡ĒcWtż>ļNÜ÷Ļz˱Ńu1qÅó£ #¦­:oęn`9$j3Ń”į¦kÜU°µIĮIĻ÷V•æ—€ Ā'¾j¢¢‚ ¦ž˜§\YK8Ģ `yÅS‚źfÜķĖrÖ„ ·•¾\7dę.„†7>RI’zÅt0ĮwA%–Ē«Uk›Øā|H±ĢĆÓUßK*rR+銌” g|ŪŗUéo4­¬óDźG?-Hę¶?ŻnźŖ’čš}ĢŪ~Ń1vģFÉ]±ÉIĖ–ÅMRļLøRbiFXÓ4Ųą~Ī‘±Ē&µāš¦hūŻÜīēžYµ¶ÓķI0æĻź9üé;½TéSv¾¤ŚźfŪ"Ś<ž0\Ć©,?;4{F6ƒOžŠ‘n¶“²?tV•˜žä ##uē5-[q)s.h™:|“,Ū–DG;z¹ku#]į¹ jų„DX5“L]ŲØn48dÄš7”Xgņ3FģNj×E[ż^;rP3ĒźČ"¢ŃvŽŻī3ʏ%ɬiZ3IrĶ+ä';®܋8@Š–ć®)ɽ¢*„UęīŁ„>d"Ü.cÜGš¶k{,\°39=?­hŁ[Ś»„„cŪq­;«lBŖźķއ8ØR¾ŒÖICކ‡-up¶ģ«—všĶÓonŽpĖż8®ÆģÉ11:±F;qš§qį„3fŽęhW=’*§n[s5;–l­ĶÄe„šƒīŒU}Gģń©Ž5.2¼fžŚ$–ī]»m1֖kyŠąŽę¦ •Rzs c,°™#hˆļĶQŽėM ģś×}§ĄØīŒķž•$֖A ’E£t”JźĢ¾^Y'ŠÉ°±±’Į0£8ĪTŖŽ„3Ļ-žki'ŽĀ3$>D§ŲЁ5™'mŃсū͜RZ+:‰»§ņŅ+rD‘«±ķób“$mØ7,Ą}qQX]C$ć}³ŪźA¾“i›FēÉ#­Nś•Ū1Ś{p¼īŽ7ėKŌQ\)Ī?‹­kėZ)µX£!„#¦9¬Hģ-9“ȏžIŖQV3½św,—/"ķ©«ā0±É4 {(ĮØō;Čm8•‘Ļmż:½©][ŻCĀIJc ÅJv–Ę“’tķwsÖį˜¤— ķŻŽyć@;©‘Ē=rµ.žÖւC3® ć‘R¶Æl» •=W8Ŗ“·bŸ-”Q¦źWfóĖ»—nƀpFk¦žÓĘ”šI8ģk:kČ$*eĄć¬jN+OK–,æu$@ūŽjÕJ㦣kEźgŻėcķ JNØ>öA"·4kMž†YĻp‡4įa˜<ĻÜś¶ g4²C)ņģՂq¹@©šswF°Ÿ#¶ģčDčöŪ"¹’"NąŲ ‘Qģ%=ōÓ?Œä~µĪŽxŒDž\Š“Nkū\–o™ćµm r¶§=JńģĪŖĻĶN«ŠCę?ī‘×óńY8){½M]YAóŪC³Õļe[ƒrł‡¦IĪš ?P\0^0µĄųrxŻĮŗ»pzļŲG5Žčŗ°HB&«•ŚG'²ŪåŠ:#(ØŽ[ō-ŽĻØ|¶“qQĘNJĘCØG¹īg“i>l eõüóŻ1[ˆY²“śńUnŚč£H×sQœ ~uŖ¦£h¦a&å)G_3JŹÖŽī2Ā(¦aŁ“š,®ė÷I4j:E'…5Ļ""‘ʏV`3V®üEwóęHŠŽ‡ŌFīN;›:œ–e-n&ņc·-VŖéöš¹+™”p>īž+JĖV{ČYA0sƒV4ėHb»(—ē%ØØ¬¹:ŹNź&nµif-‡Ś.ęÜ;!#5KNÓt™ĻśŁ¤=ŠÆ5Õų‹O jJŪI!QüĶečÖ1©VWž'ī¬0hæīōdӝ¦ōE½&ĖK…× ŃHsüŖę®ś|Ź!xŠ{fjW•ĪŪLŠ[wÓų6EfĻPx5œ½ī¦ŖnwMčféņĮiĒ '×5>—~āBV7ŽW HöĶt–æŲ³[’‚8Ū“YzĢ“‘ZĮ4/ŻŹ€)Ø'«'Ś4Ówd­Øk)cźøERŠk›²Võn0xĪžu«jh­^dĪÜÅ4E}pXŻ‡\ž3N[= «%Ń\I¾Ķi¹’;™qŁi/õ=6Xā&Śā9T%psE”2“ŪZńcŒqjKĶ"I™¼­Z>œn#J«FöaÉ.å[jVī‘ŁŚŚŻFF0M]³Ō-īcoķ=-C! gń®wRšę d—ć*sņš¹‹yöp//ŽU^§©IA[‘‹–OšMėęĶ­-Źń[ŸØ9“ō­->ÖĶ.ʵ•’ĒÓsžk‘±šķ”w‚E¾@ßxŽs] µ“łŪmåūVpÄqIŽöŻĀs²|Ś®Ęčž gā>Š ©ģuXĪD„I³Ųʹˆ,ī&ŗ|ŲE‘ņįXĘ“-ōֆŪo4NćŻņŌ' ņš^oRö£«Xģe6ĢŅ“ņ€:ŅM©ĢÖf?²ż™8Ēļ9®~}¤ŸyRUéóō©ć²æ6ūdŗ‰Ōt`Ų5¤ā£nS™óT^óPC<”T$˜å·ę®hŃŪ¦į± ŪżĘžµcģO-ØHِc;ĄĶx›ĆęxvĆØMlīßĮ7zp‚šŌÅŌ%Ź·:袻kIšÅĆæ@ÅŌ:ɳ’öŽs÷ ä§ “ųWźžÕ-ɗY»’99gń'†t›½:šLo/\±ūĢxL©(ÄŖs•Õ’ÆŠīĪ–ēU[™£¹ŪžÖ»-: ŏīõ7XśįÜq\·‡5½I¦0½ŻāƽHPĆņ>ÕsXkVpŗuwćvĢųW?,¤ļ'©Żķ9iūŗÆ6iyØn/į¹ČĄÅexŚŃf¶mB@Ąd·˜V±šŌĘ%ūt<ņOCQ· Ōg1ė‚£¦Ék¢§vs?k5ŗ)ĒØ,B哽 ĶoxFžÕ2'ž7~£/÷j;?†&ܲ\Ģł^|ӜӔš[X\nš7‘˜ MHĘJŃeR»7ÓS·“”",½YĘjk«ųø/0ĄĮĄąUX¬-#€#Ap Œ֕ž£\ÄQ„¹WĘ@•³ŠåŻ>y]&dź:…ĒŁ?Šķćpzķ\œU}.(ÆRHÆąČSÅ\ńślbāŚī38 1Ŗ0Åqqu‘J¾oPwc"“ž‰t1£Óm³'XҚĪ÷6·JˆG1ķéP­å øKyÆŃv ²`ƒ]‰­®…„†`žjcóÆ>½šĮ¾›ĶE‘S±rs[Z‡5õ0n\īœRg_nx’×Sŗ”·AĪ‹{ŻE/‚OŹĘ3‘ų×? ųvā&­Ä‹žŒNÜ~U_ľ"²¹żĆ“ź ĻĶeWīé3yŽ-;]3ғّQŲZEcę(„V>Æ”¾¤äŚGx¹ł·c ųVG€u_Ńϧß9pFąĄłÖärų‚Ų“ÓŁHFģžT˜ük'UŗŗŅ,¾Ó{$ÓMŒ †2r~˜®Tń_‰/.d$ń«šŖŹA„ \ŃÕ«[Ė+(¶{—3¬A'ū\² Ų|šśf°õ›-N}Ķm· >R¤ćņ®{Įšµō&KżZāŁÓŗŚ3ś×}į›k²Ž–Wo6ĪXĪÜVr«ČķuӃšN™å—z~½c©–˜[^ÄĒ,­Įż+¤šĶ³G!ø¶ÓňåÜ3ųWS05K»‹c3p3U£°¹–ć6÷vń[“ÕeėEYs|Z Ÿŗ­L=jO]\łv×Iä×fџ­hx|ų‚ÖĄ±R’uć”dŸzŌIˆŽźāęPÜn Jž•ųea”=Œ„ųćq<žtE(Łl¼®ż_Øķ:-SķŪŁb” +[Éyi e¤’*œMU²Šõ‰SbµŹĆyJqKqį™måm¶tĄdł¤©ĻćX¶¤īŲłf—*VDńÜĒØ££Z[É‚It$V/‰a†ÖĮ¦µ¾\c•TÅtŗ-½ŪŚłRYżŸ#o?­g^h÷)q$N§Čn@cŒÓT޽„šß¹—ąŪūmA–0¶qJøżŁX×I®ŚC[üµ:°Å`ŲZhirRY%Šu;rÆŠżj]X@ µ‡SO,™ŻóĒֈĀóµ“/Ū.DÓ×øAukx©€Ųm…ćā“VšÜ>gŚģÆ$]ܑ'’ ‡ĆÖz}„Œ¦śŻĢŸu„€Z·āQl,–]Ė*ŒœŃrē“U§Z·nģµį”ÓVšœ^o8óš~µSTšĘuuęŪH†~QÜU+]ighŸÉŽÖ&åQ“VāÖlZńć†ņĪ2N=EW³kTLqIĘÓa„éśF—(ڲHXżÜ·ų×QaØĖ:yVź¶ńŽrÄ~9¬XYÅČyVJźČx5±µ§-§ļ§¶ČĘŽ„ŸĪ°•%{Ā+ŌÖ½ņ.Ų[$Ndø¼Bägljp>••āW¾œ,Z½ŗ!ĪŠmĖ0ØouĖ8Ź”’ŁĮąå±QCāˆī†ĻO3c~yĒįZEN:£:µ)É„ųX”iįĶ9 żØĖ{+g$€ƒź1Tķģ“ė=OdRĖĪ<½Ē5¹Ŗ,Ī‚7³·™ł Éż*ʕdķuę½Ķ©b3Ē52Šq¼˜įYÉŚ ÉÆtŻĘ&ŗ³yqÉo0­E„]hPź ŲĮ%¤J6°f-Ÿ|“RųŠŚÖęēģ’ź.béĄūµį]> E”ėw·±ČŲSJSöjž»—R÷MXźlŸIÕKŪ$¢ge<{sYZǁįIÕᄹn~L‚?*·a¤Ć§]¼ŻČс_Öŗ=3]O³ąÅ¹‡ lV>śųv:o»œÕ携}¬j%+€ŁŗgėY·P_Lūm%²„žT£ē·yŽ rĆÖ|IåEņŲjVȠ䅱žµŠčÖZ¹»u©T8/“€N=MZ¾šī©z~it’%éøƚš—+ć)+ßO‘ĮéśÄū£77jŲĪp*āZŽY[5Ż“Ņ\»"l¶>‚§×¼!©¾’!ÕAłK­Ą{ Ƥx:ćMUeŌ®£vå•ns’×¢N)hļņżL¹$÷Vł…†±§Ä]BŅśŽą.IžÜąŸ­\ŗńU¤ö";aĮūĶʶ^ĀakåI4“˜>aχMkYEÓPē(GĢ>•0TÓ½ŠqØōŒ“łü9Æiwa#7R\0VP7 ŌgѤ¼čgļÉņ’*ĶÓģl<ćq.…¶V9ŽĢߎ¦×“ūž#5ŗöłsĒ֗,e+lŠę”U™Ó\Ćl¶ų†]źH Āą‘łÕ[˜6̲Mż²…9>\C õ&¹ÆYDó“0½ŻŌ;‚£5©ØM¬xl„GŁ÷LŒĒ­JŠRäLŅSm]źŹŚŖ“÷ĒģÖ7m·’Ó&sųÕeŠWø,-oŲž½_œų•tƒå)ī‡Šąīā×m sqssq>ķĘ<ō“ ·¹ŒÜ¢ļfvZtmwq5­ÅõɅ9]Ą€?ÜÓ4˜R-Ļ~J(Ā©— Ÿ„aų7ÅĘ “ŌtéJڹLqŪ'½bėŚŻę§²ÓOH@nxĆugģęŪŖ5n[ŻłŽt©.¬¼ØņzL~µÅé^ń&—Ŗ­Ģ7¬beĮ.Wé^•įmBök-‘iņ–QÓĢā߯źŅZZĀĖܕ)ÅT*^<­¤Š““pwfe±ńbŻ”ŽĪŹņ,ņlüˆ®ĖA±’y »“¶YX·—ŸZål&×ō‡ķnęĘŲcéõ>•¬ŚĪ­œ—Yι-(#ŠÅ·=“eģÖüp÷¶š„æŲ¬ķ-įS“†äž§z§«jZćĀ&±æx\|”D@’:DzÕuū«äx“„øĄīŹ×qÖ¶t²÷:%œØłqQZÉØŚ:Ķy4̽GńķæŚnõ»Ó&2cß·?@)/'×ķba§Ē}rńšw°ZÕē׿²ÄŅB°ĒŌ4d€?§¤ßxˆĀ„Qå·?(ÉjI6›ø{ŗ%øÖŃõ ėŻ5Ü×V—¬&³n®µø/·E©HŠć$G?YÕ5­NŅ4ušµĶÖž䌟qV“iõ;ė6ēH–Ķ@$DŹ8ü«(IÅYģi(Żi”„Ž$Ö ˆÆ%e‹i0œÓ5»į/j75µ„Ä */ c *Ö“¹ ’Ęā5QŚ A«]٤.bÓŽ2?‰£Ūš%6Õ¹Péņ[Y?‘ĪųĘó^ø³Ś¼÷¼¬ś~5Ē}‹VŠ4Ęx?ŪĻOÄרĒw Ū(y¹gɮʊ>¬jŅ^\żōĪ ­į+­v0«e±AcŽž?³]Iö˜%Y9üź;ż/G’×ģ²Ć}%²UTķ®«įĻ…-`Ńx.Ńפ˜Į#ń­OųF¢7™ūmĖ) Ų5½;ٚż^J7ÓSĖō߆¾ŗæYķŚXńČ%ˆ9ük½Ņ¼1oi -Üėö|.õäż*÷ˆ4–¶·żŻŅZ źķ2Ęß&¹=Nź×L°ūCų¾ .7īøW‹ŹoFĢHĮYÅ~MāD{ ]ė-ŃļŸĪ²üė$¦kdž/ŗ& 2=ėęÆŚCöÓü9t,ōfŪÄs*–•…P{ łĖÄ?µVæ5Š{mŹÜØūĶ+Ÿ Ōč¾KJVg•#F„XŒ©=k5„H mä;ƒėVõ]GiS+&ö0’DQŲ™Ww=Ļzä„{ž¢³Óbk9ܱ(HB3Ϭ^]“’,k·`Į÷ükę;ƒ"ģ|sŒgØ®³ĆzPX£–ć8n6ާėNrKC9»¾[˜š`Ź«6@vŚ4yXaˆ$1]VŪmÜ2ģeūŸJĢūJ•ÜŠT¹ļK‘½Mc8ÅZ×*>Ż’\šI恘'Š[™\÷*Ž VvĀ’äńš#K•h©)ī_W³Ōćå5<—N-2ŪBƒ€{ⱤcåÕŲžć½Cu;qøp*ćŌē›¶ū—/]äĆ!'¾ā;TL¹-“““uŖo+!*Ģ cŽ ŗæ"Ċ rKUܘŁõ/ČĮ`„3j„ģ™R@€0ŽØ5ą ŠēŖwÓūøĄż*9.­q„Ģ\Ōī’ŽenXąąŌ²±ĖŻLÕāiĄ‘ĮLsZö5µc†Ü«ĪzY“’7ŠåŻ–mwĄ¹9c×9ż+oĶ TĘNsҰl® ¼nœŽµriRŅÄ+–-ž­(&žĆSMYš÷!®–5Ę@ł·VV§:>BœsL„›„†ļ³,6¦i›nN™«å»Š¾xņóX®›ņ¬„Tō ՝5ćƒóĪ7™~S€ĒīÓ­®?ÓLmņ¦Ž8ļE„k¹Ūā/»(rĄšOėO†vYn•AęłšFązS]łC0ĻØŖWµ„õjęœ÷“.w&ŠŽ„¶¾¹6’ėŲFzŒóŠČ‰Č]…¾_z°¤$D’9č7v§w±<É;½‹&IXščø9ŻŽ ¾–Eˆ2HXČėUž`¦ā7wĪ+'W™›ä]Ģ ꇫW.6µĖ“KŒ²|²żŠk5šQpū·eĪćT’śXÜü”ųćpéW`føUżąódNÜŗ½ˆ^ūŃI#’©[œ°«0ZŹYĀč3“Š×·Ó"F%±ĒĶ·¹§ł6”Nȝ95>Ń=£\Ŗņft?¼¾mĆæ­m[Ū<«° ĖÖ¢ļ¢ĄžWī%X`ņÉ,HĶD¤ŽĄ¤Śåčcß+,’ųł±Ž²'ż°…PŁ‘] ”msqˆš¼óš‚öŅ@ŲglœÆ­8Ķ­Ā0IźP6ķä4ģ`:Š‹,P“›ƒy|©õ©5[kÉ«Œ`äļWtķ9Ņ…Ü;1ĪøŸ5ĮFj÷Ų„×SŪ•bøąŠŅ™”F®äŗšÜö©ßM0^ķó²Ąd‘Č©­4ł¤$Ż#wĘ8”¤\d“å‘Rō²ä+€yéÜVu¼ ņ’ū݉9<ščÆtVŠ.łóNIS=5tØćœŹwö„Lj-› ĒO"…ā¤6Į ŲNĒ„-­„“radÜdZ¾öJĮrUŌóóuĶm‚Ęs޲o³ÅIYnR•Œr.W*w~• ĮˆŹpNŅr8­[cnĄHĢüōŸqs ±ą4İąŽ+XmbZ¶–&·³žę@!‘įyÓ>Ō·I$[ 19$œ“ZQ]¼’»E=ÅhXŚĒy|<ۈąEß#ćõ©ÖƄ`šÓS:H¤Qģ FøõÉ=馅Ŗ²,"$Č^ƓZ7–ŠŪź3”ŗóar²' ż+"öxŚQ&öPÄsе ŽsäՉ3‹[\ŗ¼¾=Ķbė”LK³”'+G]ø¶KP%|–ū¹5Č_y¾įąg9ķNTZiœņ›“ŗŲÆŖ_Ļ Ś%;Œõ›ó’yj÷‘qsø[[yw™Ŗ_fÕ’ēŻļ‘Z©Ei&4›ŌIn-So™ ō%½Ü&LA:īĒZ-¬ Ć|ź›qŽÆ[ŚŪ[]Ō¹ÆyŹś#ē֊ņ"žöäp³¶1éU."{— nŽą3ŌV­Åž˜±JœīÕ µ]-œDõ S‰œm{…›ŽG Dœ²ž7)×ń\»ķfgś ¦ŗźŗ'aö­?_ƒĶĢ»TéS)$U9s-Pė ;ĄU¼ÖŒzVŗAŒ‚³A‚j¼Ž%²Ę﷊5øĆ b_b9©³z•ķ ŪHæi,H„-‘ĆtlÕ­5 3ąFń·©Nµ‡/‰-’]¾R·½/ü$[‰ņmO›aS’{ ś#’d!Ļ8¬›H Ą óČ •^óÄ7ÓG²ŻR"$®x©tŻ^WeĄb@唚®gg위rĮ·Š6żŪǵ^Ao.d-ĘJUä¹ÓŲ«<’dc Š·5ę›äü”XĘj“CšåźT–[‹`ńÅ“žNW„V‚Ėķ'Ž„ńVm5P³0ät8¤Ō5˜D<Ē“żhJŚNjŚ]dÓfbĢfĻb1MŽ®Æ“„ wZ§¦µŒm¹X#6­i ūq +ę3vĄ£•\noŖłé÷×2ē+©½é5ÅB®±ļ>õRĘęStIC°ž ­gø·‘DwåŒf®2³³ ‘n<ɃĄ)]Фš1[\ j€‡RĄdćSµl &D™‚žV³£Ö“Ø”²–õ óD¢É§V/ŌźģÆ,¤·Ż0%׌…ėN“S“ Ø·ZäSU“‘³ń§ ­=ū;’¬BqM%mČ©)¶’Šź„Õķ Ų2JŲņÉ­ BŻŁU”L>ī+†Ó%øŽC*Xś1Ķ_:ŃA›•‚1× Tø·±“%­w= 'µXš°€ĶĪCV6®­ēīöžøŻ\ķ—ˆ-¤"1qO#œVķƒ ć, g#ūŌ””tl‰Sö’æA¶ó\‰ĀB9Ī3[ö×3Ē.P8ČĶ`J#„‚óFLTĆT³B“”±Óš.īQQå.¾Æ«ƒ”Ī~źõ5HjŠćåvB;yØ_U“c‡’uzŅ››K˜Ģ|Ą}@”Ł =‘4W0ܒ%żį=Č«bÜDC*)‰‡p+xĢk‘;QƒµzŌ[£Ē3'p(i–¹S¼t7nd”Ņ[+wĻ„O¢Ž]G8ó^ēæJòWd;=ņʤDL<¢X”©n¬\×+½Īī=VŁUµ‘ä#ļD ™ŖL„ĖDÓÄ瓼t®J-eķ¾M²U±kī\dæķ ø©-Čē¶ēI¦],w ņʲƒ]…“ØņüøĮźwkĻēæóPyDģ0sXśŒ×Ćī<¤öĄÅG+¾¬ŻÉøž°Ś¦™ ņosßi8¦ż³Mó‹ĘU—åq^)ö‹Čēß$r†źI­Ķ;U–qämš<Œ ĖIé-v"ŚÕźzrjŗtRœG8ėÅdkZœfäŖē®iõ•ņ€&y3Ē 1Pź:‚-²“hLžŒüŠ’oPēå[hvš'¼Ē$#€y¬”p–·l²5ז8N+ŒWՃ%£‰qÉ'‹¦ŪHY.|Ļ÷dęÆ-õ„­žÕ Æ%ˆņ„y9«Ōq+JZ’N"żį‘ †0•ö«xļ¶,˜ąš§¹ÕŒÉåĮpF +b²e“Žs.a-œŻ«ké£0…ÖÆbmB[µ+¤ƒ9"Eą~5«”6›$[Piń³ž2Zę Ńš×I×å ÜÖŽįhģ×s“īŁÉč+“Ž×:iFĖŽŲé%ŅäHą‚ĖhSó”k—¹ø¼¶¼ŲóŸ{hŽŗ 9͚mWĘO]ĄT—“X8ŽŠM÷„m,#Æ:g%'ˆ6ź$Ł-µ1Šź“ßĀń,m$¬`LSWū&K{}ļ/­U½æÓ|üYĄ}|ŗsƒz…9ĒįZü‹z޽Ļ1†”÷«Śf¦¢ BÉĒ`j½„ŻÆ8–9Įć½6ćPŸŹ%D`惶Ü“3²‚vNįöŪ‰L\”' Į¬ĘOGwó;’½š©6”veŚe IĒŹø®ŸĆöŅ]@»īHČĪKóDåĖī²éÅIsÆĢ†Šź›P½Źčµįw{lH‹¼É&›5“‹äH'†igóŃń2ɹ"”oŗ*SVļų Mė«Ī¦*„’Ü$¤(Œ+s…j|Ó3ēĖt =OZ«sq{£ø±2œ8qW¾†M7ļĖbśc›q3FĒæÅ9oįŽćd÷ŸB٬=#QžńöŽB’{„Kwē’žKOՋɎk%˱¬¹•›ŃŅ\,„eŪž™¬ŻY®”^u8ÜuņÄxǵ!ˆK ˜$·8ĒÜ|X×ģ¶Ó7˜™`sŌó[F:hsT«Ė+=>E»ka©(]Ņ« (©­4x“ė£"^\;ØĮėpy$Eh‡~jm{\’ƒ½¤`7=9¬=Ł;I¬af8īd’0cĒWZ©Ŗ‘"įRAŌ ÅsÖ¾%ie!Ģ6ąœ)#ü+fŅę+• ö›vcĮ ⯚1|¤É¹ūĖ@†’SŽ)Yfˆp7*Ɵqpҁ'”CpB¶¬­vĮa5o/žB`Ö~’,ķÆƒ›««‰ėTāŅŠˆŌR•ęĪāÓI³–c,«ĖuĆ:Ńm¤JdUSŽz×'s©·/­č~ֹ̫­SÄzś¶nR>˜xŖU9?zDŗĪü”‘čš•Ż¬3¤f'ņēšIš½Œ2ᄘ°čIŖvåŗÜt’HŌ½æ * b(ĢK(–iåH/60±V°#XwE$­Ē?0ž•F;cŁT2B)§tš¢żÖīĶ8ķę‡÷#Ź>ń8"µšŚÖ+MŽj˜b²—MŌü­éŪu@:S!Ó®DŖ&FĒūOX»n™Ō”¹KŪA/šqŌŽÕŸ$ lēĢU*F}뤵ÓļE²:ņ9 š³$r"Œé¦gĒŽ< „QKAr5¶ē?mŖ¬(6ėŪ?+蓽NŚāß÷‹IŽŽj£$"‰lB{«b«y —»¤Ż“:jŽī ;LߖģFƒļl©ģ/aŲ@˜&īÄāŖX^iėÓ+Ė‘ÓgJšžĆN½‹q‰²Gš> f•ݶ “kX|AkipŽŅĀwø¶P{•¦k£…s™å~‡hĻĆqb³sĀöŗUr¤¹–„ŗ¼śŽ³ņGŁoćV#’ŠŃŃō„Žßß |+cš¬]ŁOteXņ7IŃuņBĆ*N@ū»±XJ£•‘“"¢Æ-„šŻ—˜®“f9flf°e‹ģ5±÷ȁ­„ŻLe9i,ōųĆī’<äńĘ8Ŗvµ›…ŻŹByünS³³H4š„œ·²ƒ¤Üg '"ŗ LUbPæ.g5ĻciĘÕ^N2‡‘N ­E.D­{³A°øŠų,‰ĪF$ąÖķō:«Āåm‰¹rsŠŠÓ®,®ĪF0f¶» ½¾Å Ł GW;”¹ōW6÷\=ćĪķ¬Æ"”a¶fć4ė–æŽ"Mõ¼ƒÓ?…ių»T72ŚĄŲóĢóU“cͱy!HĘŪ“ŠérŒR•ĪuĒ–Śvåd›h™Rf8×K‡q%±żģ%ŲnSŽ*ži§!qnŖ20ŁĒÕi°ŪNŲīr$†ĻÖ³©S[£Xъ…·ō8ø¼7¬bÉmĻ*Ż*]OL—³ZNŸŻĘF+ÆÕ!½†ėsĒ+Ę£#bg5No“ŻI”ÓÄĄŒø {Ń{üOBZw„uūĪC[³žŅāŽß ŌĀų"„Ńt׳ęFČŸė]†›¦]ĶvĮ­’É@ą¶6ÕØl.ķ„sö»eī®3„CØåŖ óŅå a©CpŻŌ.1‚rE\žk«ŌŽ CcUā²uķX[KäÉź"±ŻŪŽyŸÜqśÖŠ“› 6Ų1ńn”g?öL »išA\­’е»Ä\iRŪŏłg/J§NrjņŠŹ…¤uł>#Ņōų#kyģ˜)ą6öČüĄų›F[Tiš\ÜĪ3•ük°‹Ä‹mf’ŽŁĪJrKv­ĻxóĀ×Sn¼ūdMĄ cłkg7N)ØčBŒj6„-#Ļ>¶ø.Ņ#ep,sÓń5霬Zt:zµÕ»4­Ée‡'>õŅM«xFh<ŲÆL ’ŻFŖ:†„¦C0K.،0T8^+‘FR|ņ:ÆĒŁEßĢ£§Į£¾˜¬ĶČwĖÅcjĻ»-Ē•ĪY{×Woy¦]X¤#N½‰×–Ćó\żżžuxbhµ"wnŪ”üØ„5·r+Óęk”ŸĆ–‹e-Żż šå9W+ž:M?\ŅÆ51jӛyĒŹqŠŁÓ¢“ƒL0Ēmrź:.ģę—G³Š®'i/ōK›wĘ7“`®Edå›źjć6Ņ[z“ļ±E1XēŠg\ņĒq4Æ©\.¢©¬o’mÓę­M7JšƒDŅŪAåČæy„‡-łÖµŸü#v¹(÷v³ ,{>ę±si=>óuM&“ŸągMuŪīEpΤ0š<`ūÖd^!³¤µ’ŽF8 fŗ;™“ŠĘāęīśd锵'ó©-$šŻā§‘b笐ķ9śb©N:ź=]ģģĻ?ńnÆhtćäYÜłėŁ3ƒX?‰äĖ„ź†6'qÆj»¶°°ŒJ#‚CżŅ•Yu[‰£—ģŚ5”ÅxłŻü‡"¶öŽPå„~fŠ‹»“<ēHÜOó­ĶŗæßYßęüĶtvšF,_čžxēūßäÕmRmZņń¶čžµē‚ćw?ZŲŃ<;ÆĶfd3Y@sÖēųV5-•õ:(FVŪO’%Óü=r®ÉÆT7ŽóńōØ.<8¶×eķõ6;ˆ“+OXÓõ[8aūUžå”myÖd>æ»g>kĖō—„J”R¼„b7ĶīE\Å“HņĪ@z•`¬j¾©¢Śj–É$rĮx®Iš•”6u®é€ĘęlÖ&±§ŽŪŻy1Cx°°Ą0’:)øŚé²kĘwå²w0›E‚ V®Ō?pWƒųÖ¦‰įĖYtæ6=Uķž1‚Tćõ­3į‹ƒ\F·WäH+÷D׹ŠAŽÖ”qę”f„¢vFPÕĘ冂(ķܼ÷QÉņ³™2~¹„¶šÕ¼Ͱ¼BŲ˘ƒĻ½r·öž2°ˆ@ÖB5vȒxüéö6¾#IüŁ ¹“#–2 ŸĀ“åVų“"•õĪ†ņ;ż*äM>k:¹Ļ›äŹ·t­sB¹ˆ%Ż¢FćŒē$~U‹„X[˜„;#~ŅZ6z +南Ģ3¹WŸĪ³n6»f°NowDmÅ&ƒrŠžx‡O3ņjĒ×’³ī,„‚Žõ·©ūńOµæJč“Ķ6Ö+tKg)Q’-Wš·{¢éf5ž2-Äu…qšĪ3ŠÕ(Mū®HņŪ=PŠÖY­5_1ĘJ™‹ö­ßEy+?Ū¢ŌcŁšN§Ž».Öņ0É Ig¢’*ŅY^µīn<½Œ8e˜śUN­Õ™”Źģև6’Xt\HTüĮ” Ī©Gdq%Õ“:„»s˜Ų·Y ńóĄO]Ćr±2ČėĮ-€* „k­….VŅkSPŌ¼e©'Ł4ć“8ŚŅŗ¶G­o ÆÜiqHÖÖŠĖŒ° ĄÖĘ mo4'šśH‹ÆŹGć\·†ÓI±gŸĶži[!¼ćœūÕÉ6¹”vbģßāŹw×’]y·vĶ:ƒ€«/Ż®æĀ:’On±j÷ żŠ[ ~5Ęxžļ^‚¤ŅwīrWrćč{×Cį?Cmc:Ī €9‰ĮćÓ•hŹÉĆQњ»r¹ŁO7‡ZŠĄ"x ®>f=+;OŌtČę6¶ˆ&ōŽÄTŸŪ:V©"<Ÿ.9 yüØAb§|Z|‘Ģ­ĪG֒…–ĘĪ£oGc[Gó%ŽSĪ&Ŗ°µ¶ŗ‘®įœ’ĖO/ƒųU>PĻ»ķKhĻŠ‰®ńłÖ†&”;·„|V.ZŚFŠ7Z6ńč×Ń7—°9ąU4!“²ŪLšZU暬?čŚÕ…ļŸ¤Jb`rv'šØ“?jžq“Ō-ŪĪ^ Ź‚k^V•āō1ęw³Ze͜:e“Möä†CĒŹłW©ųŗĻNšiN½¹‰’KX÷:XŖé]DŁąļkßļg–čWŗŌöN”kwö„Ė,›ņqļŠ“GÕµį{,1µŲ@qĢ,@ś“]毷a%Ō—1ž(”äʱļ5M`żÕī¢Ó“ó”ĻįŠXض÷3t•ķ­Ž^ś V;+¢uĖČ~ÖQJąé‘År¹Ō“ŻWȹń’!?é ƒģkŁ!³Šµ –ćO¹¹SŌ¼Å?LVO‹4YŲĖ2[xĀw7÷7,÷@ĀŖU‰śł{ć7Ēļ Xė—Z=§‡lĄµŸcIo»,A=ÉÆœ?j/‹Vž-Ó-l,,žĪ~f,Ł,k®–0—ļ3–UŖÕW„·ĢÕų÷ńŪĒž2Õ.e—]ŗ¶±O»n„(Ē„xļˆükā“Õ“:ŹŪ»x¼Ćƒ\Ō—cŹa#8ŻÓ޳ę;Ų—×ҲœŪŁŲ°tā­o¼Ö–éŻ @aÉ9ęŖ^OåF9Ьw±C”ĒšžµNģN[nÉWÆ­DµÕ𤔤K¶­%ćķ‘‚‚sQ^϶%Ģ|dÖeĶŁ…öƒ'˜HŽ‚¬Zł ?ļZS挏Zj);–źéŹ·,³:²3—Ē*½%⣜Ź2[½J©Ź’š¤ÕI䏯§œTJwŠVv³ mńÅPįHéŠMVQ$MdECs,`›ÓŽ?:…—wU(Ā„ČNœŸR˜ÕHOSS _3b£ezži‚%™‹•.›n#f3w€¶0iĘZ²Ū²²eŸ éźŖÓĢW§“ˆĮŖ€®=ź2énv9T#‘Tļ¤e•œqéM]²d”¢]‘_É<ī>üT\”sīn™ć„T2Źd;§dŒf«Ė9ó‚ĀźŁźOųÕŲĘkKź7@Gņn NJŠĢ¼¬ ‚ŲźAķLXešõ"U2³’…u+¦i£XŁw67‰J1WfІ†]–²og\!?.Mné:DqC–M˜ Żž”łBĄŃŒ™y!Ozč³*;Ķ€ĆīēīÖNm­M[åz!öFæ]¹ žōš ˆÜMä*•Ī2O9õ÷ØQŹBń¶GcĶQ-›YYœ÷=*ZFr|īģžIc%UĮXĘzQ£9ݟnzŠ©ęnrxēJ©Ż“XXŗŽŃd%LGåŗę“-<ö¶0<ķ°ņŪ{¹KMEmn?Īavm•ɈsĒsU”y˜ŗ*†•$ö«I Xa)Ź©éųŌ–Oc‹ln@!7ŹĒµe”¼¤łn‡āŚŪOÉf( %øJĄ“SāB Įäk_Z²Ö¬‘L«åš}k'MŅ”ŽG‘×`ķ÷XV‰®¦Rmśōé Š0D6KԚ{Ł-½·›4ŹĪU«-ō†Ń[n®+;YC-ŠÜ²”^ø<CjžCNI«®#0Ą², ¤œ`°Øf”Ėu†ÉQ€3Ņ’źĪQ`ņ¦Yc_™˜ć³ōńsqt³Ā&ʐź=Ķke&¹­Õ:ßD¶Ą>p©× Vy-®t˜ęóQ¤g'`źæ…TŌł¬¼øāWf#s9Ę*ŒšSX…3JX°Ż“p*ć(ģÉqœ•˜ŗŒ s„ŽĶĄĶOw¢Ļģ•bŠ9^ē֒;ÉPb dm8ėųŌŚ­ÕåäˆŅJšqŠ–ŚŌŃ%oxŠāņŚĀŽ;8cržŽ¾“}²ŪŗÉŸĀ™4l|a%£ćÖdš¬‚Fb„ąć%y¬Ÿ¾ī•ʇ2VLäīžö'ķŽf“w9%¦‘³V,¤’ē#zŃ“FŒ*/>’ć_QuŠł;7£9»ˆ@ėędpO5Z[H¹rć󮰙ƒéßjuÅÄI0G(ną’F¦BŹ rdŠÕÖŅ8©mµYrČUqŁjŻÅā7ĉ1S·CW$ֆŻ‹” ¬ĄĮZ;ҌĻ"žĄÖåę±p-ö­¢ēū޵V-YŲāH£G#Œ­\ž—fQ“ŚĮmh‚?–įX÷­ yŗļPÅ4ó „„`u ƒR ł"Wœ JĶh_;JŅ'¹ó"\łA€ēļT6—>l»B”üsU~޲> rßJ•óDĄĮ\Q]Y¬Ģx'Ŗ+c&ķÅ_¦«!–G! ńĶ2IÆ#łGO^ÕI_D);nžLf3“ž›zŅZÄÆes»Ž—Iß"įŃK{ »4S*ü±1Ō%}/ŻWdV‘Ć’¬ųōŪW›ģŃE§'œ‘Y±‰cŸqŹõ&­4čĒhFĻzM%¹iŻY’›÷‰vcöŻV,ķv°/$2(ÜęŖ\5ø‹8'8Åg\F²ĘBĒ*ƒžÕRd­:Ü’.ZxÆ UŚŪO^·pēąŠē,“€Ņ~ń’x“ZŃi–Aqå“Äqד•ōŃnXeī'…½9¶ó܇ĆŪ‰t!Ŗ¤öpBIŠLÄŅYJѾŗü$Ņi­Ē H×µ’G”mµöėRĪX“\”'‘ÓšĢ“Bvŗcqš§žĄbpO«RW{SQŅFµźĘš¤ī*8Z4Ūę;HzüĒśÖu“»,­Žõ=Ğt[B€:ü£kĢÉÆå*ėŗ™&=²xĄ9VrHNv)ć,k¦k;&„3ŽG<ÓSLµ$aw‚*œ“²ŲĶ%Mõ¹€l­ČNÖ’hõzŅV<²ŲźI«ÓéN Bsž§§Ņ¤Ó"¹’y0ÅEŽ—6Ö¬ĆÕ ¾†·E ŽÕ^įēhĀ\ŪON+»·ył@SŽ‚¢ŗ·e”e¢É¦ÉŗZŚē%¦ClaD‘Č8¦kBiu+h’rŖ#>£¼‘ø|BqżjäĶh¶į$øƒpAķéP•ž¬N\Ńŗ8ɦ–v&ełś 7J UI?|Į@ģ9®Š×J¶¾›1]Ä­ž¶*ūųQĻ$$ƒCqU&Ædɧh­L=.ęTVū<>jĒ*)uK…qēŚČ˜źĄb· Ó¾Ē @g½ZÖAŪ s’]3QŖ5匕Ó9øõ«Q•ĮĘpŹkCJŌ ”lsåœ5oPÓ", vܞ§„Sž%“É_ÄU8č¬Čö±źZĒļ)ƒU›`³FYgEr×:Ä ;Ŗ2ų‰”\B²(=·b©7Ō‰>e±ŠjqķŸ°@ļOŽ!4!|€Hs\½§ˆ”šm·ŗó÷·źtJÖHJÅ,kĮ&¢„[;"©Ņ¼n]±Š+d>aHš:c5„¢9øŽm¢y8ĪUs\V·¼„¾Ś`xW£Ć÷‹²\ȼvjšŖ|滵ŹĆū9NÕn—‘æ­£­łIё±ŠŒU‹9lįU®¤N*Õ'˜fī%y1óIŒšž 7–MÆčÉIsJ+Ÿqh„īljŪ_f=°’»ø8ļLU–K†ł”½XŃ潄ąEi2¹Ķné—q—"{™:ąeqU;XR “¼Ž>ēM&m¶× żįҦ]"åāU7qÜ ļ"›L(ßč~_?ćY—rŲ$§Č=x­<єešµĢMšČ“%ÄS§M¤T—vėqrDK³ėRŻŽĘ7£Ī’īŽ+›Õ5Kų®6ŪŲJƒ±piʝµėsŪCmōŪÕłXžŖS4į”ķPÓ,jĶÉŚqĻҲt­oTˆ+fĘĻ×qć&·m/ļµųłÓž1깬e6mN›¶ØŠÖŅī÷Gqå…é–ŠiW/&"øņīzVlś„ä*Ęwµ#‚ 2Ēƶš]fßUmĄc*„Pćutj­~Vt²‡Ļ—Ś 'ŠqN*ŹCĪ&rĆ©=j¬–—ę$TÖ‚LUŲ-ļbOłNķŒ›.k5īŹ×v2Śl[;I%l’ā²5Ųu$łģb„ĪŅx­fŗÕ’~/UG^™żjå£]<Ć̓ϑ°r*¢ŚŌ›'»¹Ź $‡jĖ4.ƧAPiZĀßŸß±ČĄ;øÆ_Ót©.bBаŸ/"µ¬“ėKyžXdnß&+ÕVåGD)¤ļ#Ķ4­6öÕ@’9™s€ėĻjŚ|’͹fBqŠõżBīĀŽŠŽc 8Æ:ń]õŗŹę8|ķ\w«ĆĮ½drā++ūšŲĄÓęK;•YY_A<šµ«ŻX“G ?™ŁvÖÓOØ $ŒF ņĖ]LšUµĢ#Ė™ĮŌœ’Ÿ*4š½56õģŽZĮ¦’ął…#Œ„€kV?²²œÜĘÆŠ*¦æįéĀ…c•‰ūĮˆā³“Ļ ź0],léžå«Y'Ės(IJ|²Ńw: m=™·3M°Ž a[m„*Ą·fŪĪęę³b·˜ Ey QŁkcFB‘2ø'§8Ļšm+³{G•Å= +›dF))Ÿ š£W+;Ŗ®ŲĪvķlb»?ģ›k™>īßV,jcį8¤„½ĘMŻ©¹£Ó¾Ē;“éfū„#wbFj”z<7R†“Qš<ņžµŁæ‡’,lÜ‘ŽXqYڇ†äß¹f`8Į…1:-»£+ģÖöO‰/• p0:«©ĻjŪBßĒ"ާ5±’²ÜA™!“ĶžótĶ6ŪĮ×t£ĖĶŚšåJčÕQŖå­Š~”§ŪMĒ:¶:šģ­ļģg ‹×° ü å5‹R$ˆ‡Lt-żi4M1¢FÖĪ wWõØp·¾\k)>Fö=(”Ę  c’:ÕMCG¹ø”–5V䒡b²āÓe ŗ11Gļ4óe{0`ČJŒdČis1N1Ż”|S¤ClŖ.5 N?…"±śĘŠ’K’OvN+F÷O&b.sŽz*Ķž…Ā 7;OPwf““ŒV§5(Īrn/Oø«į]KN’č}¢įĄŻ‘¹O5×-„­Ö^ŚdT9ĘXŒÖ/ü#”nø£ŒÕųt¹”‘"ŗ2kš|Ń;łT£Ėq÷3=Š¼rEiÅi­¶9>¼ÕŻ9@µ'΄ȂN®V·ÕńDWb%ėø9ÅZ“÷9ŖĻŁK’%kBņŚä}ž/˜g/5[UŸÄ:ƒŒŹ¤rŒjčš\Ē?śn ®zqÅh^łq2)÷cž€Ņmæ…³§µG#'DŠ5ĒĆE|drüs]—a¬ĄD7«e,}öu¬¹üPŠķŽ5™F7±Wķu;ۘ•ƒŒ78e Ö\®÷›7SV“ƒ|RÖŻA—Ę0¢°”k)Ó7ZT›ń÷Õ+”ŗ’b8„ļė’)4Ņ%ܲM,g¾:~U³~éŹį;꒐YDw¶Žd(z ⦸Ž9#t>nīKyø?„vPéŗB‚g}åŗ³“²XčjĒģöåN0[?Ņ£™½‹Œ_*÷µž»•|!iįŁm‚­įµ”Œ!ļSŽxv9.0óŲ” M[ 0ÅCē”Ūżj•ž³ka&ՖxÕxP°¬•9tz9Ā-J[łoč<ł°JsßJ³e”idy»ńĄĖžj„:“Ä8¼¹…@čŹ@&µ4{ėf•QåĻÕM?wfīR›ėŌžćFKƒ‘aq×pž”ė}ŚŁ =“ °ą®Mn½²Ģ…Ī*kKˆ.°"yјUó»k±ŖŒR¼V¦]¤I --Ōc$æ4ųŽ;÷ĘĒqä`Ų6>p*yćšĻŌ|;ę“!¼Š6P„få=Y,/§°ør0JŒŠ5-*Į­9žX™ū†éYvZUąœ,7A½ jµ©Zk6Ų&ä8ć<ӆFMgĶm4(ĒįūF‰šęźy£SüL1OÓ“? ¤æ»*%'·«^jÓ[G²}6sŌ*īŒ†ę14v6éžp_„*ŗ«ČŖ1|ÉFÖ^GG¤čzpÅ(ܼüU“Ń®¢•ŒÖ\žy²āV.Ū)\`€ż­mé0Xˆ˜s¹«žWй̬҄Łatu–57ŗtØÆ¼=¦pĀU!FX/Zæ3b,).Ł5ÆĪc“,ŒRLĄĶę›µīŒŖN0Oø²Ē£Z(Db†*µŻ®‘:)Šćc±’Z段VY Ė ŒGr+ØšÖ”¤ÜŪʓÜyrc”ĄÅm(Ŗ{&E)¹{ĪĘę™ ¬VĆ}ľZŒ—œRµ¦™?1ĶtŹ?Ųē4÷oŲĢi2°=ĮėY×W‘ZĒå£Ä€rīk8ŧtUIĘN×s§Bäˆ.ÆŠ(źFQ“Io,oÕo>äVŽ›Øłˆ[ĻWLe°21Z‘ɧĻfķ&é:ŒÖ‘Øök@”®÷8[Ķ&÷syZź“c¦ę‰¦Ūi÷0ąK©Į(aŠäēń­ZM&Ų֏ļņēšŚšŻĻ…V²Ę ōø"Ŗ“¤“³"’ƒ[«ŚuŒŹĖūˆ¤ž3ƒ[ŁŽHłŠÉ"`æyI5ÓŪŽhŃŚę {˜Ęä^?:ŽM^цĖxn[Zǚrč_4›™h×ҧļfõ ąÖu’‚ā¹,MÄīĒÖAŠé¢žÖāŲ™Öt“ŲØ­ęµ²‹Ķß~‰³U4÷ (I„(œ½·V`”rWœšUŠ-­c?j$Ŗē>ZęŗyµŠńüīW'mɄI!7~oóč“>įp²sŽ &Ņ\ÉXP§Ģķ)"öc!pńŹņ rń]1M»Y ŻŌUeÕ“K$Ų<ž½zÕ}RśFŪ6n±`rIÅb ŪNf“­xÓÕö&Œéń\’„8y9SPź7^Ž@®”K^ ÷®:¹µÕK$D1źZµ®Fs­ĶōżūÕŹ<²»3Œœ£w””<”WµYeVä,JÅY²†!25ĻŪbP?ˆU[+ +[Q5¶°˜ł‹'Ńūž'7µ×ŽNއw¤Ųx}cY!×FÖp!lž5cQŠģo!T¼0ūĮöšóĻ źó˜‹Ķ§Ū+‚±į@JÖ·ńmÄsŖ}Š õĻėPć$ŪüĀr‹²üąˆF_ķ·„OJxü niś40éF8ußĘŅķóW+ć[Øcņ ±DfźĘNįUæØČė/Ł „młŽź=œšęr+Ū·.HEŲļ­“‹V‹uÅɞAü%»żhbŖĀ1bņÆ@ k›šļŠ•—ņÉ)Ę+aü[uō+é#ū»ŒƲq–ņ6””’Ic±Š%Ÿż2Ģ@łĻšæś}“¦("2Ą8 䜊ā¼IŖ_\‰%‹K{|żÕ‘psō¬/ jŗŪjĀ;Ū9–$9ĻēZNtłå©•*µ%?gk§‹%Ń%b³hšzóĶ ēėY¾_ =×ļ”šķŗŽå€kŃ£Eżœs6¶Š4Ddż szę‘įŪ{vø—O3DŻ]mó·ėYĀŖ©M'Ī.…OOėČÆÆiŗEīœ#҉faóĒŒćŚ·|5ą]Ø28ĪLŖ>½kĻÅ>±øū=£A·|Ē’Zŗ™ę±¼Ó#øµÕb¶ņ`$Q8ņ„tTg£’IŽ‡į½GNWS$b2»AY2CXŚß…a’f{ŻNHņ>óóŠ”į;©!Œ‘©ÉöóFśšŽ¶»Ö.I’²µ |ą\¶+(Ք[w°ź^V\·ēž#Ńc°FKMzIчŻņ*†ąėk›o“^܉9ǚV½"×ĀÖ:ė3BcNp@ UeżöÓōõ1©+Y›Ę){ÉP^i+%µ¦³§Jæ{tŒü)~ŲfĪל ą3`’:‡UŌ.Śo'ū!-Šōs;=d\5ś\’¢ F›rbTqŠ†ĪœåRŹWe« ū’ū””’O1rE7VšŚA”}6ź@£“ [}wĘö6ūWAÓåŪČ1ÉĮ©ōų¹·ż£G1…ė°‚éŠ|ĪüŅw^”(Āܐ‹1nnōkE³}.āĘ3qĖł÷ŖĖ Ćt†M2 1ž3ž? Ōń5Öµ¬$7 ²B€¹¹x4Z\—FŠh¤mĶyśU;%ī~G:SoŽ‹·ČšĖĆ客Ņjéזgœ”VĪ£¢ŚFc{}6tŽ»€‰p§Ū4ė+ŗ¶ŁdéņžqłÖ6·į_‰0å\Odp‹1š§N¬^ņWž»8UŒR„45ō r-MZ 5ķ-Ųrł,Oē]厓ņ‰\ó‹­yu”’lm=҈Ę‘wŒ{V†ŸŖųåcjSĖ*ؑœšĘ¤å~oøÖyU¹_«g£O “*н“Āä}õ|sSiwK£,ścÉŒ˜5yĶę¾\“¶³čO–‰­[ĶgK²Š–u×ī.N>ĪdÜŁōŪC”t¢®T±-'#fMwĆܘī`K}ü0€?֓PÖü9$iÓI ŪĮxŻF}Ž+3įųÓu]AeņgŠN”ž3üĻ­w²ż’ŁÄ?h€”mŹ•åR劸G™ĮJsµŹž¹·Õ,T+\G ¼ź*ĶՌ¶×{–0«żņŻŖ­ö¹£X[°Y:”[sPé:ʓ}§Ėö»Ķ^©?9aūÄõŃzsĀÖo^ķ™>:Ōu€¾U–œš€R$a‚+m7ÄóĢÓ&ˆ4č\ ¼3ńś×K¦ų‡Ć–ŚÉ†µIH'’ük³S„jvB85[ˆK|Ų)ŒVó©8{­Yzœ%mļęyļ…ÖęĆQQyĢ‹ łŒ‡w?\W£é÷66ŒĘS#®ģk:ļA–+rķÆ"ø’:Čū&Æu&Ż]„å•W?¬'/yČŅq÷"Æä™4½JGc-ŻÉNvų@kOŌqłUū«ŽµČmÉ$„oCƒš’lne>bĒ–*0ū§ņ®éf'BūL° Ū Óģ¼-”̦D[xęcĄ‘U®tØ ŸÉ†ą|½@AS©³IE½Ģȝõ Ÿ,ē#y|`Ō­±ˆŗeś\ĻĖ.įQki¶X†åÕŻŽ>ķ&ŸÆiVVĢČÆ }ÕƎjåĢöZFTÓÜŽ“Ń|QØÅ¾óQ‚4õr;ķy7ǼjÜ©iTĀ²Õ«IßČčųlұĢxŽ}"ėUó-¾ÕØH§īY1śŌņŽZirĖo#:µœ!zv杍_ |FųwØk/Ÿ²Ń”ŽKŠĒŪµOÅ?Ņ%Ս¬·-¹ą2¾Ól×͚÷ÄÆ…–śæŁ­®-„ŗnĘ»O×½{Į  xćßi?b½Šv?#ėW]S¢ł„§—S,3ųā\ßÜj’Ėqr RŸU=±]÷Į?ŚsĘž ¹…RśęśĶx²¾čĄ=±\5äć/r7āzøzNKŽv‘ś¹¤ų²Y£*īm—?ˆ­tœ\Ū“\¾Ž&fQ_ŸOķ{ŖŸ[¾¹£é7zMĪAC̈wéÖ½»įķ?šÆÅ^+]ļO¹Ņ<×ŪÜH@CŪžĀ¢XØ„u ,<ł¬õ>…ÕŚĪĖOb·ZĶį'9'xż+™ńÅ xOEūFÆk4Ql%ž\&G~k'ā‡Å/‡~Ņ„¼“X±¼}„ÅnÆ»qĒą×ē‡ķ­ń¾ēāķµœ–:m…œŒP[“ūĄzdśW^—“4×»ųœėM7NŒ½ļMĢś‹āßķmą«_ ŻŪx>ŅKżNe*­6ćܜvÆĻæŠ_|[ŖxźćQŌuĖ”%Ęp-ę ĻJóżV{{ļ"#Uf°õė“6Ā7oāǶ©7Éd5…åj¬ääüöF޹©Éq4‡|ŽŅ他䞹&ØÄé“–ŽGČŖöшąf‘ńœ:ā’Oݰ!˜†ū¾˜Øēosx5ŠŠŌ䁂0‚øą}* Ü%ŗČ3†ō5Ü„ŌuéZ„wvžHG µzRŽ„ZMčjCx€©Ć`}ćß5 ģŒ×EÓpM¹ü*–Ÿ0pŪŖĆƚ6±ŪĒ›·AĮßFgźŪ».”Å\³»‹Ķù#Ø^)ńXÄB–@Cw­«+ŽŲ";Ļ$/j‰ĻK©_mŹI§Ķq.Mˆ>`7rMX›HŠ;bۘæÖ®Ūló3ónīOƵ6ęē*˹Uļn<ӄ_p\±V‘Ÿe¦‰¾T8ÜIŖ#‚KgÜ ŲÜzÖ”¾ åapˆ3œqš†ćP”1Ķ“ 9ēŠÓ•\RwZ&ei—% ĪBŌqNū[—mĢ̌xĒÓŪ¾r1, łj?»Ü+øa±ŠJɑŗ¶ęĪ’į§aŖĆŒšž-:C ŅÄČXäõ?…aµŹ¤;·ĖҧiĖąyĪÆ×åć4õz£Ė¹õ„ŽĘ3gج–3–véPŻjĖĒ»ń¬÷f™]ēbŸį5\½Ų§Ķ} =JżžÖZhĮ$g?^j¾”u¹cPłČÉ'®j8¤óh!™s“ķéTP¼·Ē·n¬{ĘHµij%bd“ä~1ŅŖĻÉĪÅ8‚*ä_,Ā=­Ó¹ÅZ¼IŻv2o¦9¦¤6­ Ū\ĆnŲłœ’;Õ=Nžo7*X cŅ“Ęās$žS|ŖK`tō‰onÖĆ/óću„&¾&[M#.ÖņSIJ“P–IY>w^0O­BØ”¤f}ŖrjµjŃĖå±Å[’FQŠ$ÓULŪöŽ3ļZE– ŖĪ0ry¬;Ød+‘»péŽ ^]óYùČtē<œVoSW¦Å‹¹ŪÉ ü¾•µe1·ŃćS•b¹üMsóŪ]J‰6ŃåFŪCt­M™ÓIfŽ3ڳēŠah½õ2.dÜ“’Ć9'©ŖLļ "F_aZZˆ&"27ŸĀ±e‘~p„äw5*m».ъh‘īfXÖ6Ī’ JŻrK+q“U1•A8Ļzæec=ĢŪ`BģG8õśÖ‰ņÆy™ßŸBģw#÷²Ō¶Öļ<±L8E~yĒJ£Øi:” nˆ§•šÕŅ^źyb¶·CF>pżi¹Ē–÷ĮŽŃD÷ŗc$žlA>ńP3‘QhÖ+{©4§•Åz?‡na²µ_śłCYšŌŽ÷ī„#BFwĒÖ±§)YŻŠÆ³R¼Y“§Amx„ œ»×ˆe$+A'Ū©¤øCnė2—a½ÅgI ;ęGŻĘME“WL·;ü[ Ź÷©ŅC}ćŅ­• U±€ =i‘Ā. šzśŠKłdVłbP„õ¤tŲƦ…;Œę —ĘAØ«Ę÷å|)#©ėD}›$įÉćÓ© ż£åfŚ TŹO©µ“Z²½¹%#Č{€8•Z ²ķ™Ap :khįĆnŒ{ÕØ„€ĄFõAS̚Špž¦5Ģ  §a;¹\ŒŠ‡U•ĢÄ.ŗd.*ŻÅöN>”®Žö…ä{Œ~>Õ¤n…4ŗ˜†š!‰JóžzÕėXbŚą3Ž™ėSZڲY»8+×Ö ½H£Ć‚ŪĻlÕŻ[BŠ•-®.­’~øɓճg¶_ķĪćvÜńų×>·×Ko“H«1“T±Ž“ƒi Ž*m.„ʤ"½ĆO[Ō8įO(I¹€P8Ø„¶‹ĪŽLFRćļź½sŻŌ¬į!-ŗ3Ś“O¾–ÕspZRyŌFś’¤ļļlvFiglrŽ ģŪŽÆZ@°ŚŪŹćsڰt[ˆå‡;öąĻj¹ŖßGš R‡ŁŪp©”$“¹-Å|%ėé,āa䗂BœąŠ„¤²\j>WĶ;ÉÓh®HŻ}¦ļ÷„ŌÜō«VÓIm3ēxÕ:2ö­=ŗ‚©)Š|.Ł”ŗ‹Ėó†'„fčSBÖĘ+):ŽÕĶź—óź–€Kpó̧?1ä­C¦±·“b0‰ŹäD)$¬÷¬žŹ;2÷1L¼·F#¶ l^hv7‘@ßhwžB7GϹ ‹Ł–„ŲÄCĮČ#5ÆżŖn­āøBöó(Ś6ńYT„+¦™~ÓO{CwÅŽ·Ó4ØēŠņ%8ÜіĘwG~µ>„5ÕŪŽI#‘É|šOģÕ(³\86ÜŒ’õ«XÓ“m'©<Ķ«“Sycd’C*.FPŚ;³šŲŗū8fXwõ+Å(µplRåK©Tę0¶·ž,p)Ņ ˜ē g5³­XA(X„ŽT摚Ŗš½”Ļ… ?¦8Æ©–ĒČSš“²-\4„lĆ=Å2ŽĖĶ$4ór:ęœbŠä2ńĄäW·€ģó¦jw.ÉnGżˆ¢Mßl—yĮ5­i†ŻQ„ ĒSŠČ³–Yf"T„\ūŸęłŠsS$ŁQzY1ś…¼ˆ Ć*į)öPÅ“yņ@[Õ±Į¦ ¼«s($qYWZ ‹'ś× w"“åŠÉIsjjźÓ$÷EÓ?)¬fæ¶R~Š ’v®iśJŒ‚īÄU‰4H_ŖŸcFå4÷lµ„3ī†$lc S¶½ ’Ė^3š³yį¤a¹w(ė3žš®ß達Ä/n„ėmM܁T°«śf¤”æxˆŁ¬«=güµ$ūV•¶Ÿ™·­E‹ę]ĪLŌmJŒB”÷Z¶HåQ±ĄČīq\ŕ†#Ź8śÕƒlTÆė‘N1}mXé§[QI&ÉĘ8#šÅ¾Šo‘ŠĘsY²¤ė ņīmĻß5”a¦Ż]D|cÜõnI-LģŪŗd1\C,eee0Ōķ[°d¼eēŠ–ćĀw¬Ūw”Ÿ½U—Ā’!å†G¾)ZčI¤õ5õ/éŃŚœ.YxS5•kāĖE“Oaß5Ī‹*¦/0ަ”ƒJŚA’ū*hi%denkßBĪ”ā8ī?ÕFąu=ė5'’fßŌzŠÕ5‘š)InĄt©F‘ńI€4ļīŲÕSIܗBÕ-a€Ć5¹‘ó‚ĆØ­o. Ęčd•A TŅtˆ£•cøPGń.k«²¶‰`Śsź:V½ģމ4ÕäīĢ?ģļ.<åŸ#ņ©4¦Œ1Idw+Ž“ļ¬eo&^O@MeI¦ź±¶H±­š9yšfÄU™¢¶Ćb”7ö¢`Ŗ RF0£ŻĪč–óŃ °Į&¶­ü5 ˆgš lT§˜ZnW¾…Cz©”²1“YÆ$Ļø}ėZöŅ D,¶œĶsņ݄Ψc‰%@2IĘ3T®–¤9Fr²ÜlĀōÉž“ ’`ÓRÕžöęąČNynµkTš+XŌ…:‘ٽN*? Dņ2~‹Vķ|3¹%Ė.ў•ŌCÆé’Ė”·hŪØ!³šŃ„¬ź ŁÜ?Č^µ<ŹöeIµuGö&žĪ¹i 7<)«‘éÖVäćĢ C]lri…Km’N ­U’’rŸ&ŻeU9 Wr'©’­or*Ģåą‰ZlSļŠģ4›Ä„cˆēz³'70&Īr+Mkhģ¶ŲFvŒšM딵łi¶Ł=•²»”"^* ­oĆķTŽE<I0j­½åÆŪ÷­ž™#ŠlÉ$ņ’šŸ–;*śU3–׳cÆ4aw„dt, f’gė §÷»=rEh­†§ä“„#Ēžy*­Ķ¶ŖP.&uĻĢÅÅ.vŃq„ˤHķÖż]SĶ,ųč¼ę“/‚—œ.Ą1—ŌŚLOܾŁ@Ļ^]Wķ®Bų¹¦›·‘O„¬ŁŠųzÖÖ{pĖwfŒŹÉŠmÓ%½Ė¤—0:Ē–k–“B@ół­ YגĄz­Lc­ĀRvI—.-ZéY”ø¶?Ś<ŌÖŗL+k—Ō”ŽV29¬;ķ&į2ÖäøüźGZ*ę递X6r ^(š¶ģtŪ”9`]›F¾[²šß ń“fŗ;Ś=;lņ4ŒncŒŃ čėiŖÉ/˜yĆ1Åo ™<Ēf$ »PŻĒ95 6`Ūé¶Ņ‚ī…ˆÉsLŗ»ŠĖxŽ6ČčźŲÅn%­›« g¶85öm‹ĀTO°’hąUŻnŒ_3ZŚ^µ+į®nŌĀļ8­øę»Ÿ÷žbš:“š„ØéʇŲõ k†#€Œ³ķŪPYvÜĒ"üAp*9"õ. W±·<»v‹‰”#ż§ĮŖó>žóŅĄIķ»U«+K9ķĆLV9ĶV»‡C†Q„V¼ŗżė6hŁ[čņįGŚ^įyZ¹'‡”l:^•>™" ŃKa¶+ō…ˆäZŸTÓ®ē]֚“łj?„ŠĪ›nś—9ZĪĆ×@L®ķH&:ŁÅgų†°ŚÆ¬«!åGJŽ-6育ŽHåOZ³wį縁0ņH£®įšØŁ;ČŹ“9—»c*Ęī,š]E+Š’ž•­¦Ś_]ŗ“7ŠĪĄ9ŖŃh‰į>Tö sZÖzz@B€0„W™ģiI%bV±Ō­“ŽxžėQ }ņ£MŖHēŠŅk›åډ‡’ąŅŻß²B¾eœĪēŠUB+–Ęu%wĢ‚ŽŻUrŽN8ŽjģQķ@ŅŹČčXkw}3†@ž%­=*9¢4Ņ),=qPä–ˆÖ I]č=®eŠL fčwö§=ĀɆĖ'Ø5.©äĻ”wVõ^*ĖG AFö!yó;ž"”½ī:™YźT¹ša.ß.9ŠēnN1WtøŻ‡Ļ€{)Į¬i¤Ōšb ū™„Ņ4›ŲYüĖ,öbp Pš•Č·š¶`ncżk¦K›”"•7s/bĒ5„ł¾oNœ½rå¶§ålŻ \`lqPčśEŌR4›B±äłĶv6V“ĪŠÓZäõł‡jŠø±ņ¢+t\ŒäSöŠQ±J“ŠęŌęķŽö0¾taTwŸp ™KbäŌķ8ĻįWī"ŗWłŁQ¢Št—[Ŷyäc`^æ•O›Ch¹}żWR½{ɄÜœØę³¬üF/o4„Įž*čī®ģ%CvņOWOj„—m¼Ļвc8ņė„“¾мŻå+£į$’üy$€œŒ.k®šÖ“tbY#ČVźŒU;U¾I•€Øė…®–ĖS’(³)(Ŗ9Ü:×%URNĖSŖœ ķ¢2õuū4ÄHÉČĄēUöĀź N¢QĪąŲę¶åń™+„h†óĘJ‚*x/läeڶģ?tV’RJĶJPżć ®Œ/ļ‘ŸŅÆ]-ąµV¼‚&>«ŌÖµåżŗ‘䄏¢÷­¾³øK'œØÅf›Z“\Ō]ŌN>ģ®-Č#§ĖY:„V{¶[Ɲń·šļµ‹”lŲ=±Š„9¶+”±ÉčIĮ­\»™ÅÉ+ÜįnoD0š]ÓČ+ž‹Yu¼v—N»hɼƜW³ié€.ČÉÅgxŽ bBµĄFŠ*”=9mc9Ó³RrmüŽ/KÖ —ĆlŠFĖČ99ż*ü·QClͼ@€rÜš*ĘÆx¶1žāKY˜`€ŲŖKØjWq˜Ģ\ĀOįlw©P’|Ģ›¦ķĘh—:EŌ§märŸUČĻēW§Óm|Šį#*yÉj„si?’±[é¶pČFK#ćŸcY—:f¬³*]I,Hz|¼~u§6īįi]$¶źuiv\c…ŪĀ“lü3­ÄE¼–ÖS[ó:JæČŠņ ųĖQ²ŌVĘŪv½ŚC"Ī9h®$aüĶbÅćaohßl²häeĪ÷V©āøe‹ķ+¦,ƒųdXĒć[ū-ĪgZ0ŗ›g¦é‘ξMŽ›ģ’ĮĖdžn[E™÷2x‘.Žkķģ'n~ęė]w†“Ļßié> Ö“ĘżY% O®Es:V‹āŁŻ ¹{‰ nt ĄÕ#ńv—®­„¾«$qD~ė·ī’SnzE«¢)Eŧ8čöŌśHŅRŹŹĶ=¼„g )eØZéūŹ–ęŻÜ’yH®/ĄZljÕŽ^ZO¢1ż2+?Å>+¼‡ZuUµ·PÜ;9äv®z0”®“»:+ĶA«ž«ż©‚u+ŗBœn·µģ*DęÕ±Œ€+Ϭ¼i,ÖanÆ4ˆŌŽĪ~•«§k:tƒ{M§_2 Ū¢”?*—Nióu%VRßo2·‰tmUP˦Ž\JŃ ģ\tŖŗ^­|‹åj[ÓgŹ ʵę×`HŚt%AŲ×+ńY}CF+ļ”ņę»)®t”™…JܚĮ\éÓQhS͊ż^­iÉdĘĒP†ĀīC’nśąō¦Ķ]8š_\3žOξXśW<”ͬ®ŽˆŌqҚæĢöĒ՞ “†ĪAg²‘Z·Ņ²O“\I<åO5ć=ĢŗbG3j/©ĀW C#qÜqRė76zĢ‘“7vŒ’{÷Ūp~„ŌBĻ­‡:Ė–Ś6uŚ®££ŚŻ”øŌuBŽÜWłŌHŗmé-bāmĖĒåČśW'¦Ų>†Ö©Ŗy—Ā–Īįś×Żų_ÅVwh³Ö݊Ÿ»Ąž•æ"’ŃŲēU$„Ź¬ŃźŗÄ–EÖ{;8Tƒó¼“ųÖ7‡ķ“ŪIŁ£’Ūy=VŻsĘ°ķķül4ŠéŖ1d.cWEą”~Ёā,df詜NJšņ+~°R½åśi}#G³NķŠ‡eOéT/­5¦‰åžČŽqrZē5zH“ĖKõ’ßĪ Ę’ŸŠOx—F³ŃŚ%¹ņd š?8*’“`ŒēģciĖ_Q¾Óõ+ˆ„—zĮŒ‡Ž`Hü…ij)¦} žĻq ÜXā¼®?ˆė`Æų<.IU–>8Õ®µ-ʶڔDnuŽoš‡„«^lOE„\ė”ŅōfgĶŻµ¬«Ō3ķ"·“K2!åėqJĻĪß8q\\)š£L’mŠ.­o:»Oó#~5•māmu¹–ā[k+^ŖšÅ“87Ŗ/ŪĘ6Mž£m Z^Fļu¬]Ū ?/”ü|w­[8[KJI@źwć^waāĻ 4"Ž-}nTņK©Œ¦koþ.Š¢Šhįø†I0B»œēéXĖŚI5#EV’Ł£§{R Ia†{H™ČĪņ„u—“j£MAå­Ć‘bl/ė^ž"Qā†žėNŽu\•e˜ŒēéZöŸ!’v“¹IōȀ*¬$'łÖ_Wļ‘_Y„aiu:ĶEuƒ6É­VyßēÅsž#žŻBcZŽŽ6ćd€®9®ƒĮŽ+·»o²A}ļŻęŒķ?‰­Mcd°·ŚIxśžī:tÜ£&˜½É.hģqVŠé6;ndK›™ŚŹG5½jd¼“7;dEQʪ󚩮 ā-‡ P`˜Ęąjöƒ¦h–6ßk°Öµ(Ęčä›#ņ«œ“÷SøéøŽóeM;R–ĀįŹEó?F`A&§ØG¹gu $aĖE†[Äŗ^ł°[x–ŽĘLRĘ ҳ|2ڤSīņ »yܬ ¶ŌŸiĢģžŸyŌųcPÓ'YøŌmęä"¼'=:ō®'RŌ/ōŸMsŗžå ą“ķĶt3xŹk K?ŁSĒŻ`«»vOŲß@<ķĶ…æ¤*P£4ŚšŃł•QEŚQoO#ž—\·Ōī¢fÓņXaĖCŅ”Öü+ux«-¬Šߐõ®ėKÕ<; 0ŲŪ¬‘Ö®¾·įęP„€tėåēoņ¦§(?uh6©Ź6›æąyd¾ ńÜKšv¤‚’–xĄtśU戛Mū7ˆt·ĀzM’ĆŽŗķ'Ę>Y^ ‹Ų£:|ܟғ£ńg†ö·æ›k܊ŹUj=-©¢ČüKį=!¢/g5īqœÆĶßŅø]sĀZśJdƒTæø Źķoņ+é;+Ÿ j~oåČĄnÜąb¦³MHEnL|(RµX©«&®Ģ–“Õ4’āšĻ‹PĆØNĄīĆ&F~µčøń-‚ˆ.<)4Ÿ(QHA^Õ«jŁŽ‚§ŹĻOņ«ŚY¹•k{ˆO˜s‡ ó؝iÉ]¢éįéFüŒńGO—[až•©ÄĖ8€ ž5‘ąŪGót½S]Ów7+  ū׽̺Ū|æń+Ų9·TÖ+­IQ“Tņ#‡#š&“ÅK—•½ !„§½ĪGĆz^µoj‹Ø\Ix6a[ĖĆMńEŗ.œĖö}P6zˆńś÷®“^ĪˆĆw®ĶjämŻŹkĒOŸM½óÄŗ³Ž|ęY;Q„IsӍ‘ƒw٘}ŹÄäćšĻ»UßęFŶqĒj)~Ó|""B»ÜÕkTŽ ff&óĻ#­Z“ §ļ=ŒĖIoNć&ó Մ/i‰¼éĒ<A¤²šŚāhŪĢ ƒ“Śŗ}^=9ōA2Ē,²`©Č8śā¢Q³ v’mž»¬^\ü\O)#«¹?Ö°ēøø*­$Ä9¼V–§v‘MĘP9ĻJĮ†FšwUČ9Ķ^ÆfTģ¬i»„Ōe^P`>qšl… Ć…ą ąÕKŸ1, lc‘†Ō¹o#p£ęčjÕҳ2v] ·’aĊĖÓęÅG”øĀdØõēŠ’łSČrÜ|ßZĻĢŅϵADĪG­J}•ķ±böI|ĄUr›°Z³mw ιÜ>SŽj”‰"Ę#RQ•KsÅCd„®Ö[‚`ĄŖŠ}jVÜß²»³‚>-ĮfLÖc¾fgČQœ€S¹IsņŠFpN1ō§ź0łZ`,ģ$vžöi'}’ŗęDÉØ`4m»U‰µĢ +ĖŁĪŚē!dP˜]³É§±žk°%v*¼(CŠ…–ųJŗµŁÖhL~ČҼ„ϧ­Væøß+¤j Ū“YńīŠ%PģˆGOń©aņćbVF.ED[‹÷ĀqŗLeĆL±ØŻƒĘ@Ŗ3”'$“ƒŽkNBøÉąõę³ļYU€Éą‘éVżį)=¢YD‚'CœdsĶM}{nńy' ŻJŽ=똹–_4Ēø‚ ==蓉ä3L§iĮĮ„ģÕµ“ކłŽÖčL„22Y ŌWŸgł]0Œ"łr d<Š’Š+Ī ĄŁŌJ.ĘÉ&µ9fȑa#18•7‡”«,Ycøłķ]tę̰xO'¾* F+(įŹ"LņsŽ>“,GٱJkvČlŅ‹HÉæ£wŖŚĢ±ņ#ˆrxąšÅ!’ł>уrĒ5cĘ b÷h-£HÓēÓ֜Y2i+\œe·«®įŠZVʐÄņL¼ 8ßß’ÕYRĮ†i#uŪŌ ńSéž\ŖNNY³ĻåMm£¶ŠēIsy–²O”Ćķć5‹„ˆķµ Ŗń0ōę¬O ¶ĄĖ1T1öŖ½Ķ°bbĻŽ„zjmķRi¦ŲnbĆrö’8Ŗ†ÖßĶ&&ņŠzÕIß÷ēÉį_œŠvŠ c©ē'ŒÕÅ{¦ošOČÓ“lXŲj³+$A¶°ŻÅ%¬²€7>@ćŠT±Ļūü“¬•'¦ŒŹR’z2Hē’=7É\ģŻœu꤯-݋à Uy-R®‡(Vóv‚–ü¹ūŲļPüŽŸvQ÷Ģö“¹%…øėĮ5fūòA/"‰œ•bŽ9Ċ²!Įł”ūÓ5öŗvXŁd‘ˆĪsÅCRv³5“J6±ĶŻA1¼h“,1œūWQąœŁŁcs”’O§ćYÖöÓ¤årT°ė[ž…ö²v^rOõnK—StµŠŌGrD²å·@yÉõØī.-į³ivƚNŽ3FJX˜B’8Ļjž•EĪ×$sP¢˜?yr¢ü:¬ĘF–5 åÆ Š‚ū\žbFƇ©Ūżj‹K·;{U]uäkeH†]ČĶœdæBsÓ5Ši1eŠĢ8%» ĘWN×4N.:"ŗy!ĢÉĆmęo+H\¦·äK[K"€†uĶs·Č­ –P*ÖÖ!F){ÆQuQ oŽ/#ŠƒOšåfa™aƒĻ›`¤LŪU¤’ĘÆéO5ēČUTó’1Pڱ½:Sč‰ēŅÆ.ms'•>Vę›}|ĶÖb€· §„lƱ„–¶-Ėkņ_ł8>½j°“ŽYrÕĻŽ•r.YRCoūÜšJU)¦®fī•·3“Ķ+Ķx1€3’)ÓéķøfO)°Ķh_޲ŹŃ ģqųV$wRKvŪüŻ¹ā„^OCER_ GS č¶ƒGšķŒJʤ`÷śVŸYhŁPˆéVīg–k5… B™É÷Øt»HÅÓJŅ3>6óR¦£-Y»Ņ76ƞĖģĀXP`aĒā+&.fth„mK¢Õ’6U8Ėu£DÓ6ČĻ)górøsUĶ}nbš’ęźgŁČćį~óRźS•4PņqZ—ÖŃZ‚Qź3ĶSi"…Ÿb‚O ūSę²ŌÉ$R‚Öį™  o’d«ĄØ+Čā‘/ ÜlÉU$Sµ¼[ŽY³ŸZĶ3¢éü'¶¹c!Ē­ZÓō›T • N*(ķ®d}ķ+ óŲ©īęø†‹$gךś§+č|„.ƌŃ"Ū…ˆō9¦īĢ?»tōĶ`­åĢSdŖ°<‘ŒŠŅ“ÕwuķŠ: ė«.D.±“ø$zVį}Aq±Ō1Ȭ÷ŌĀ…‡wsNŠłä”}ń‘Ś“@œ™«Õꩺ-źĖ×ńŖ÷——±‘øB3č3Q5Ģ‚*žf³n­Žį÷;ø>€šqvܖ›5£½Ļ ń#žø§Ķ©< © ÷®ut䏎18õęµm-Ūłd’}ĶšZŽøŅĘR0qÓv+>öģ!%‹Ōā’})Ņ]ŹFŅ¼› žTśÕjŗ’ „²ŌŠ+čƒ$Ē#ŌZ²BJF.”ī罂);”öėR&kęšd^:Ō¶j¢Ķ[Vh ĀīMgßĒu,Ū„±ļV„•š LÄc½iGe±ł•Ž=)ŵ”œ ›»g- ½ņŪLu9ķ[ś>£s Āź=Yp*ņ[NŹZ¶piŽ.‘ É#8ó-Isq±«m«ł«±fņņøÉ¦Ći74ĪłäŻė P͹¾PkJĘ-€IYHž,f§U¢.×՛Öī-Ē nŪMH×N<¤_F±„šA•y #¾ĪԘøm¦7b‡¹8§n ¦ķĖsJm€‘%Ė!ģб§$9ŹÜ–8č@Åd›pć31śÓķmÖ vĻO¾•Z“Füś³[،E€ńæÖ ū{J»Ö(#«Vz@Ī1¼w4Įm8JnSČÅ .†nņW‘ —J®Ę9āŽ*­ŪĖ0.×.ø\~uUķ!Ü Ć0=>QLŗŅ÷ ыµ_@qšz¤ÕŚ44«“L¤Źž‡u_³øy†K¤§ļ2kŒø“š6Ā­Č…¹§Ł<±cē•pyš—е8·iėc¹T B–vē'5 Śz“¹•_Ó¹¬­>źIī„|ōł”ŠšIä·`Ķ#+“ŒŠql—^éP–ĶĀ~óūŪŖĘ“kA„LŽā K‡uŻ#¹ZLĖ)u‘±čĖĶ9“Ö¢„eŖ¾ćŪHš[”)ņs‘žqZŚl.¤ĘȁTqƒQ‹šs0CJ«ļ0²Ż¼™żjy®®.Ufił‘Eq±²ē Sn/#UÄP“½¾ī*œŅ363óė‘P[•;%n~VŖŻ:›V¾}Ā—|—CÕ2ZI*`3īīsŠŠĀKXäżÉ¹8ģĶÅ]šäłŹUˆ\&¦2lŚ„7kE—pÜ©Łšąuꛧ\jVd”±wČĘMkҦV' Üąę„¶…ĘeĒ–Üąę†ÕŒbåšČåõ'Id/s‰PMSK;‰ćļta‘]µĘŠ%%ćD ā5Nk&}šµ©^ŹOJno—qSŠråQ0l4x cånbƎ+WOÓ®]‚—hż>jéWĆś’X %’ŲłfEd‹-N¬µĘšæŽ5š\ŹåNR¦łWę5ty2Y¼Ąg&LRZŪI¼F²GŽą5NænžsÄ%$pzU{?XY@ŠÕćō f“VK]Į9Zķ ip09U‡Š§ŖiĘQƒē©õV¬\ų¦ŲāpGmĶÖ²įŌ|\™’F#Ōc4åk‘NN_ :=?GłĻÄŻiÓŚŲF9ˆ ½Ōžk/MÕu§QÖa_Ō)­jÅ3r õEDZz2„ ‹X†•qܲ“G8Č­Ó{"¬qLģźēćŅõ;™ 2\FƓómüjī’²ŚŽ,o+3“ŒžŽńOz<’•Œū­XŚßHd¶ø`rsŠ„©ųĪ(N!Óщžń’ ōÓ¦Yź6į%dŽxśÖF”į}Ł•¦ä9ćjā©TSש‹\ŗ7dr^ń?Ś.‡›„FžgqzŽæžw„=µœĮHtÅlčŚ-Ÿ›[p ÕŲhŗ”2UHVéXŗ¼ÆSÆź±p\·æ™ę~Ōö‡—uöø‡ž@ÆA°ŌlQB%ŌnG÷‡?ʮϧhń\°k€&ĒLg5ÉųŠAĆ$o)œJø.}Ny×J<‘ü“Ī[—#lÆq޳õ§x™p.Ļū* Šę Ō5#ˆĢRč’ėV}ĢXœn¼Ģ÷ĶlųzßĖūU”7JGīŸĘ®Z¼óŻ?MUbq€Ł¹Ś&k™Łśe“B=Ņ¢!ny­K[Č-Ē•¼"±ČĮ<֑ÓъHÖxŪÉ_0ŸŅ”ŗ±³¹`Ÿc™\œ|Żö§ՑUIYE¹Ōmmm<֝;+|ŌĖmhNÄŪĒ+Æļin|#jŃ E) Ī9«Ś^€¶…–^:³qMĖOt¹PI7QčC j—ׂ:uć"¤Ōķõ›h^LķčĪ95oHkČe2E.Įž½_¼–K„&G!ĮėŒēÖ¢U$ž» 0¦”h­N{Ćŗ®© „.””ńó75ŠŪ<·"Ąu ž+CIŃįšņH=Ābµf³“‚Üq/|ŒdźŻū¦®0Š^ŃŲę©<$?Ä͊³o„Āßėn ŒŽ…›š“[æŅ Œ¤’—p>č9jÉšę©¢MzŃ5½ģl?‰Ē‰&•Ć8Ō•–æy«&ŽĶ&SQˆŁĶ,ö[ŗnc ĄĮ$VŒgL łwŻ#ėÅW¹½°¶]²KpĆJŖmÉh¹i¾Åū8,ŽÜcEoö”T…®˜ŖA•õEr·Šlį¹1%­ģČOŅ›‰<13ž R)Ī ZM8ZęJ£­šéņ'ńEŸŚ”ņ¬.%‰HĮb‡&° š¶¤XēR½‘Tg äųW_„xƒĆ›?v·1Ø–S“S>·£Ģų“i‰śQķ$×bÕ*qó~†O‡4ē¶ĢwĶ,xĘāÄóZ“’QqmoĪ×Vē}½¶Ž‡8ĶgĖį]ä}ķŠ7$1Åu¶vń5¾ōŗ²*:ķ'&£¾›J*±³ĢÆžĀœƳ…I-¬ ”“kSŸ¶Ņ/4õʈå\`ķqž5|« Hē½Ie¢X]ĪĢ·Źs‘ɳk†œė•™‡wlńNźźĖQTåjÓg©iM)šŁ ÉČéU"šĘŖģnežf¼ō½Fņ÷Ga¶K™UŗUx§ŠŌ|³HX¼ĢNE*•ēmˆ†‹z#ĪlfÕ,äh¤Óļ¤ Ń”Œ’ś«FŁÆīŚxŪÆĢW8ÆAµøšč\‰Č|`‚95‡Æj]“ Ćn×ļSI¹iŠU” ½÷r­†‹zŪYd\žHeÅM{„7÷ĘaĒĢqPZÜ»ĶĀYķ”Ž »sk< Lnf‘ÉÜF+HŻ;6qäMĘȗI°°·@Y‰é¾$kuˆģ1äņ;×āÕÖ„Ÿ:mõ Fž?͊ŪÄØ˜ž÷K‘˜ó¼EW³PjMݜ²«ZŖqމ~” ˜ä²pĆ&»­…Ć…†Xc#«ryn™­Įd’Õ—żžkN[Q#ŪH¤5•HóČė§YӅ¢Æč{Šł1‚·°:cŒj…ž©§AlVāLžĮę¼zßPÕ-īD·—pĒ=Éą{ÖĘæ¦ŻŖ§Śķę6½Į­Ł›ÄsFķėŲéu]JŚR~Ēåz’ĄŠĶŗ›t{¤ņ\|»FH¬©õ8¢‡rŪ“…FU8õļ0ķ[RAĘ]z×T#+jŒ½Ŗ^ī¬ĘÕoõ[}@²[¼ˆń“Šč<® Įõ;I¢£Ŗs®\em#ӐŽvø5_P·ń%űY €Č’–-Ķ`§k» NH»]ž”ėZ¾a(Ē!Č­ŸGž#‰!#Š‘šłćTŃoįmŅ\\@ä䅓^ŽŽī }/¼¦”įTuŒ®:xŁTvjާŠYiO&<¤SŪ÷d~“—z]„q—VDĄĻŹĒ5Äų÷Y¶Š#,šKnqĖ’N+°Ōu‹ ²DFąģę„9'®Ęó\±|Æ_CK­"Žb¦kĢ{ZŚvÅ>O #xŗy>aµ¹?ĀzRŪźZ%¢]K1^ •ucͳ0§V1ž%ītWZ}ŪÄ~Ē$rIŽ ę²mķüYo)2C§ŗt»ż+Mjv¹Ā™Ä}†ā?•VÕeÖēęŸkœńBŒmfŠ9Ķ®x&ĪČ_Ž[Ē›č<±(5ŹxĆT†E2Ē-äÓĖä~¦®ųvÓ\hĘepæķ/·ZŅā+BfŽŒżāH؅XÅģk:U\O,²×.čY43,yį䏚ķ“{»;ˆL§\[Įņć­X,–RŠŽ!Žvæ5dY¼6’øø‘’µĘ(›Œ§x»/–Ŗė÷ĪÆ©Ū[Ź¢ÕībĻBb9”“Pŗ½Ė–žšĒžŹd*ékē`‹WEOV5£e4{]X¬.:¢“•H­·3„ž'”ĻZ_\Ł[¬vI=ŃĘ?z0 üjž…«ų‹Ģ ŚGfCi»Gƒ”TČČ Õõ ŃG°2tfØ·>…óøµ­ŁwTÖu¢YĢ͐?ZÄ»ų…{jĮ…»ݿƵ,®ÄÅbŗ‰TózŅk~Š#f{7U23Då’2© ĶsBVņ0n¼YØ]]$‰e§•n©»»įū³r7K¢„8Ļīg5—ż™c,{–Tēń­_ 46ņ4>XNĆjĻ­Miix³Z0¶æ™ˆļ5Ėiö‹¤Ž:åį%ń½Ž%eĄ9'%«Óe€¬fI<ö‰‡¦EbźF—vŪe†5¹„*°å¼‘Ju9ō—źpž*ńD×6¤<6žh䄃ł×7c«·‘™Kė„čZ§„!Yv—”AĪ_„ įKXįn`Įžū Ź“•}-ŒÜq:n„s4 D‘HæŻ’:ي f„€"µ“Ń8ŅXųmNd·’)ŽH$ŗĪw*#œµ*].mģšŻŹZkˤ7PžIĪÖÅVZžY¢7–Ķ·?+?Zܚā’O‹cŲŻmé÷x£NÖf¹o!mKõŽpiĖH˜Ę šŚŻœUÄāɓs1V<œóśUķ>ÉŁ3s-Ö{ü箲’KŌf“&+yTžźĄÖ zn” 3L—Žƒ°lš™TN(Ö$ä¬=laĀmyXŽAÜFkFī"RL²ÄĪ“Ubµšę%X­ļ ŪĘ挌Öö•§źÖ°+#€é½zPę”t4IŻŽĘJ[ßĖqęĒ,ķßśÕ¢—Z¢6¶Ēh’–©üČ®æAūT¶ēĪ9ź,¶Æ,€=ŖČų„˜ž•Œjs|f“„ģß*mÜä¬u[ø“‘é.Ągnćš×Ҽ^Į¶=¤1²ōhÉZÅ: Ŗ°³łmļEb%†ĻÉ*IŗŒyŖ(És")Ԝ¤w:>¹w4,äŹ@Ś$­ ]WNøā¾¶» ī€ƒÅq>ÓßĶ&ŻÆa>ć"»M&Āła3,¶ē°,9Ķ`äāō:eus~?šN?ÄöśAŸĢņ¦Šy+#š®_]»Š7l±Ōn •z–„’Jōķ^ęź Rö+Yb<)šĻŠĒĆóFŅÉø`2Qh®©N\¼Ķ;ž$UżŲÉXą“›MBń×næzŠ(Č9Ųz†$›M€g]’\q“°cI£iojb±°“Y_­fĻpfĮkk'؏ĖĖ7ńžW=(ĒŻ[õ:¹ŌOī&mĶß8®‡ĆZEā¶ĘÕ$‰É’õ«‚ŠõŅīRA yG¢³ŸÖ¶õæFń ŽŚ8vžNź'N¬żŌ“Õ„OŽ{ž‡że±DŚ‹؃šĪ×mę±·o³j¦8Ū‚q^n|i¤±’L½»· ńj†µā½&Y‡Ų.%•Ēū$qSJŒÆļW¤ö»q©ĆxģŗÕęņ„°+ U×Ä7j“„ōürc\äԃ_y\Ó ÄõvķY³ß^KpŽe¤ńm9 œWuŗž§%ÜŻ¬’–©©%ÄĄ¦…{"3rĢø$V׆t _ {›)lg’üƒN[ē1ķ^䁞°Ļ·ŸΤfفI8ć¦q”£{šĀ1§-·;ļčŚT×f+&…£CĪ1ŠÕÖō‹mŲ äī9žu‘ą}7Puó UsĪåłA®ŽŹŃŚÖģĶߎæpŖ­MؽŚ”ī—1ĒŚŻ%ÉņK&ŃĪĄv×A§x­$·ņü©]±÷”qÄV¬šUæŁ’uڹ<–É–sY²žĀ9Jä1a“U'ö¹’*å¹ĢkŗŒsČBĆ©DGRcėō#µgj3²¤įFÜŁ5?ˆ‰Ÿq·–Śh”#a»5™¢§Šī.7 ŽpĄ?*蓌a{œōįRrå³ü ż[DÕē]ö:Ż¼Źr 1ńgI‹ĒpĘ«q"jvąck±V®ĆLµÕBÓĢ»'hēšā·4ŲīöīhõćœW<ń¬mN‡,›z~Gš]XŻJĪ$ŅīmœŒĄ‘ϽgKỜ™Œ "uĮbżUģW·6ؤ%ÅÄīWčk˜ÖęÕnm„ņ|ˆb'%¹"µ„RMjģgZ”|Ŗļš8½#E{{ʲ“Ł(źė]|𭨵[}WĆ÷›Ļh?Ž?åõI¦[˜į“¾ø¹^>Xž_Īŗ_ ų»PÖ,£‚m&čgø QYB-9’Į7ĆՔ ć’BĶķæ…®4ß-a¾‡#¬ˆqķ§‡4ęg†KØä’¦)^”wajö?=¼Q;’yČ#ņ¬=/L·]U£0Ćwƒ<®@ükJU-˜VƒœŅ–Ÿ#άī/’A>Ÿ©M·®Ē8©.u-jYLņŚMqčé9ü+Õ¤žĒÓPĘś9'=R*ĶÖ|]§ŁŠŪFŸ`ėņVŠSoDDœ ®ŪkŠóHõ_E!žŪKŚ:nxб¤{’j·ū"2$ĄtU ƒķ]čńU¤ē`ŽHĒ »~ukI»X5(ēĪū²¼«ƒéҦRq]. •9;»ŲóČ,<{ąwžü…ꬅæz„Ž"ŗŅ„:½ŗłQļ|ߏ5٤WwēĪO-²»æw.AśšK;[©Õ“ģĖ+rāfÉü ri7Ķ}NŲSP‡"[˜oØÉohÖIcˆ.Y¹ĶdÉ«_M8ū“ivd-]6æ ÜČøņć Ćę̇$VV…”ŁŪ\™'ŽHŻNķŽi5æ»^:œŖ”ķ'bŒŗ„Įc/ˆĮˆ2±€ vV–“ÆxF[6XuY£ć@ć?Jחģ÷ņ}^Ł‘¾_SRé~Ń!¹RךlŒ•޹żEa' ęõģm ŹÖŠ÷{œ†«u咰y—vÓ«˜įZšv†/¬ćū>”mäglēšĶu>&ŠÅb2<ėņ‘øśV¼/gÓŽEøe eXÄGźMI&™t¬ŪOSŸ±Š|Og:Õ4˜”'X~UŲGoØÅ G$t‘²ó aƒUµųā|Ņ——Ą5­ ź1]ŚŖŪ‹e 9ózVu#¢øéā#¬ęfßéPŪi·‘é1_3.v*†ēŚø’ „żÜń^h·v‘”gü+ҵ«ųķ !n¬Ww$ z×=©Ķ¤]°ūD×ŃæŽ>Læ)­"ÜaŹś’×½u-N‡9-»é¹°X!'£I-SŃõ­I®^«G ·\Īp?*ļ4Ćį’ģö‰ldŗ Ī%|’=ė i¾Ōµņ4-˜]å"¦..-µ°œgĪ”e¼4yu+‡1ŪxŽśĀįŸ5X˜ŪŪŖ7ÖŗŒ÷ż§ā¤wĻ åĻā+©øŅl­•½µÜ@ 1,Gå[Zw†“ąK“@ņĖFķ¹³Xʵ’·_#µPRZ½ŽRĪßģš”MU.1ČÄĆ$z⓵ųl’į–&Öę䕆ģÖµŻö›d¾M¦—ķĮ ƒ'ō¬ūkKVó&Ӟ#Īåh°V‹Ł)Ź1iŲņ—·{ācŌ“1l ĀÉŒ~U›%ž¦\µÄ1]+DrŖē·Jõ-F’AR×°µĘTä~•…%īŸu{ˆō+ä…ĘYˆÜ¦ŗ”S™>cĘJŹ;’]N+Jų‘Öį“Ō4«ØģĻČŅDū·/Ló^¦—> ¹±YĀóļ\ü¼0śŠĢĮśN§ ŗ‚æĆߍS¹šöŸ`D¶śV£Š0$„0Éüė–P„„ĶM5åŠģ§V„88Õ=ٹ©xr9Œi,Ŗ­œ¤*Ž•oĮ·z ŒRIwupø,¢nŅ©‰-ęøQ~·P§¼$ŸĖŚéÉ”M„G1ŲÜĘ9į6ŸĒŠŗŁFFTœēżĘ&“}ą­RGóm£™’ø>üŌ+o ßiK§é±É§#&LŠŪŠ ^•·Ń¬"ø^|ĖY1Š[&ā’”kCš Z9ķ+ÆŌ¾IJ¼Ļ_E’ó»Æ \hzqŗ²ŌšĮ;U²æéY'Å/,>UęœńɶRI?{ž‡¢‹=4łĖ=O—œgæ4šŸ©F¾S[¬øäĒ4•go}XD—,ó՞»a» ĶĶ®Æ(~öӑé]֟ć$ŗzY¹¹“ī²Ī˜ÆJ“Ā6K•qög{{Lųs£4K4+·^*kU§%vµ*–q·½±ƒ|Pŗå—•=£Į ƒ­[Öķ'±K?å¢ÕŅčZ†›WtSŠ0jޤÖvÖķåÜBė·…k†$”©×(ƕ6õ×g“Kš’K[ē eré·%Ą „I¤|.°ŌgZMsAĘļZõYõ(.a1ŻCu Ā #óÅWšŌÆģ‰d ¾xŽł'ņ4{īé1ŒTŅ™ÉčŸK`eÕ£‘qŒ+”Öü¦Żé*’eŽkµ_¾ą}Ē5±«éXŻ^Éspn8· į\ž©ŖŁŲ![UÖįLē Ø­‹mrźĶg;.V’F‡nģ\[Je pånk¤µŠdµ@ćQŗ·ČēĻĊYāķ2;}×Ū2Éü,ĄłÖM’‰ĶõÖ-µ9R2xŗĀŖTź7vō2•HÅZ*ę¤:mäRĖw<Öw‘r3»Œ_j—LÓ-ļoČAŠ2©yāoéś;Cm>ššøūė’Õęž ŌukĖÖל„7yēdL~µP¦ęÆ)*ܒQŒ.zž«ąūX¤ ĢÄ˜Į«¶V—–Q+ŚčÓr8uøjŸĮż[Åi k^adtÉǾk°Ō/¼_§[‰a²Ņü¶8‰žUĶ)J^ė:ćĘ7¶±WJ·Ö®äņ&ŽĘŲH8ó&^J蓟C2\åaÉƂ žĀėž©"gP‚ŹŅA’-åjńŚ"Ź÷1Mb~ėYŗSzE¶8׌5–ž§¦&‘¢ŹOś¤Å:”lʛØxoMiwŪۈö€ #džUę6 w* •·“‡hć'?\ó-f•®“IĆ#;#Ö“ŽkIh/®ĀKš£ ń—¦A©£EšŒ>ó\!&£ū.—}g2A,Ī™ š(Ÿjć5›]J|­J[ ß(%Tž¦³ķ“_i¬$)±ø—<£ŖŸżœéصmY r—Ä“õEżGĆž${·YŚK»łaų„Š?:É’„‚Ę$e²Ō@Vps\†±i¬FC„%ŪŠ€­|ķūG|eŅ<—ŚtÖ¶ÖśŚFq‹HėšŚŽŌµŒ1ŸbÆ-Ϥ¼}Æé^‘ż«}ā-.Ą!Ü|ӜūWČ’ækŁōRīĒĆŗEšˆ•KĀp?*ų{āÄųŽęc©jR[n,™ÕŹCr˜Ņ'­o'J’åZ³ž+U“¦łQīß>9xóĘŽ­ŖķŽ €Q\E×Äźv `Śķį°VŹÄdąW-Š{Pæ4cīäēW<9iÜnó÷TdV3¬Ūę“ō=JH%Ź–Kž0…ö§˜ĪĘEĢrJ««/Ł pšĪŽ;²Et~6¹ÓßB+zVę06Į“ŸĖµy–£v.'`7 aĪ}jR•H©2ē8Ó¼)= z„ÄrK0‰X)ū¼ō¬č˜;Ą,8ąß78^õZIŲĖ•§tnjŚ’łŪcV+'ć·j¹¦Z„ęšÄyI±N9Į5ĒG$¾b•/F ŚµÅŻ½½°$|ĒqļžOM·6QOāe× ˆ#ą×¢ÕŠßå9B9ļśÖtŗƒ3ē ŖFOŖļ/›ųaŚ„ó7s7sC*öƒ^zÓ"”,cdr ļķL±pC&ĒBj½å¼G›#īĻZ“w|¬SMč˜ėėłēvT2pōØ"Žä0ąƒĻ4Č¢t”¬y śœńļV 9 }GzŁķdkIE/yj[„,³©iy<Š­®_ål®~_„0¹x$ÆNqR4ŻĻD½ŃR¶*érĪdU݊½2Gvœš[ڪ܉"”Äo@}źEÉF%†cļD›z³*’Ššé­¼æ,Ä œśŃ°īM§Ė(½OųÖTŪ¾Ö›ģ78śQ< —*8”būš[M£{r’`,ŠŲėU®ɵ†å`0HŖ6ļŠįq“ƒõ­łŒŽMT¬…µ¹›¾ Źäœåŗā„µ±†y[`aŽX©©®mÖ7f2‘ĄŲĖ7*ąäõ¹ÆŖerFÖe‹KK{9 I1“xʵMu:¢ ŠU{°ģ* eÆóHHü=ź™sčĢdr{ę‹9s(»j—Ó[ŪłŖ¦L©ē?Ī£ÓīŽxĆŖ1<‚ÜfŸn‚hJoSĄ>õ›£és3JåŃ3Ą ż)Łré¹µäŻŗ6›ŽžøąŸZ«p$•‹\§­8xō„XNpESÓ¦u ]Ll8qG6ŗ”įŹģXˆRĢ„šA= HvØh•°Üm*0®jq{€ĪįĖĪjœ¦BTsܟJm6c(»–ļ–Ża ėšÄuŻ&ĄKō­F•UAŚÄŽ2J”*9hņŒÜŃ [F.[°8ćń«Ń\#ŪÄĄqėY°g;¾lwéĶIŌ <÷Ļjm_Fj¤¢·4L€œU ?  °Č÷»Ė™ć­K{QŒ»šWh"ÆÄāŽĀ=Äl'9j:YūėJĪ€)`÷=VŚL! ¹ü«>×YŽK”MĄ68ļZ¢xB3µ•øĻ„D¦ćī›Ę7VHדV|ƒœŗO\T‘Ū“Ņ­ŒqŸZ§„\3F2y'åĒ„j\–·T*ü?§­a=ō-¤Ö£[Mh ŹīŽK>•­źQĮ"ŪDY]ˆÉ*ēˆ5£±xARÓ yązW;inĶ/’pFćMFń湊Gh[C^ ä6i‡bXO½W¼XŻń&ÜōŖŅJš—sč+:K©ę»,€o½ž•jod(ҳ½Ķ”A +†ö>µ%²ĘnCķć‚jqpŠĘ‘…fć-éO•žiyŽpź=ź”ŽĮ­›læňېµ$H£Ü¤±#Ž«i°ķāhß&c“ƒŅ­ĪÉl|†rÅ߬›Ö×.)%s>īy¦œ‡vCNŽ@–­¹ĖvÕ^ęb²ŹØ7nē&—JdøS(r‰ÉėU8·„•½ÓBĪA¬-(Üd8ćŅ·t!Æ)Œ‹n˜§ŸµT™āįcX“di¹OƵCk'ßR6c‚Fj"®¬›¼·,Kŗk²-€XVB9<ā¢×¢®õ">VšY-¢ „œ Į>Ōķfшh¤rV1»p=či„äņwžäŚ;«ŲS™¹ķYzŌīĀEH#ŒzT:<Ģ·Ž@Ł·§ZŽķ]d_6N ›]ŲŻµ¢%øłū„PŽY09n«qĮū²Ģř1U.‹.ü:…?˜­"­¢&rīȤŒ3#Gj±§Ū[±cī~sQC>ėN6+CCĮXØ ‚I„&ŅŌ6i žĪµ[A4‹™Tš ÕmŽn¦°©żŅ&篭.©pĶ9QĀē­:Ūj§šŹU”cź•F¢a8ßV_øŽ%;.: SēÕR;G‰JFź¼+ŸÕļK§–Œū½}>µټæ4’ĄM;+¶*voVI¦¬—FW~½=ė ¶°L,’ŗƒŌk9¼øl挹®©ķ¼éåŒä”_z—'.¦ź)+#NŽpHøAŒt«pŁy{oŌz\2*»&ŲĮy7BnÉĘģÖoˆķÆuÓģsM€©|5mw¦€n"óČē­W:kAR„”®ō:­G™—aB:YŚū<÷Em­p«Z5}jy-Lk ¤}ņŲ®]Z{ ’5U­żdŠpŒ­tµ"­{ĶE½ĀĀĻWµ˜ČŒbpā»?I|Öeę ½U0+Ģeń%Żå²°ć8梗ž#²µ k*¢Ą)ŸĀ¦T¦ģ㹫Ä(A§±źĒĶ’Ll?÷Ļ5_R·t9Ātē䯒…‰āµøę‚5Ļ$Ø>£ācSŒTD[ŗøjéŚLęזšßŌõ;w *©PĖß*Š›t¬‘¬±œšJ WˆZ\ė°\nµÖ¼Ą:0žuŁų_ÅzĀŪyW‘ZĶ·‚ēƒYIÉ?u\č§(ŽnĢčµ9Ü»ŪĘ=pƒmrw‘iö÷ ņ-ģ˜ūĢÕ¾|A<ŖV!l½ČžUBö-I”Iu؉ł±éļ[Fkį{œŅŒ×½§qŗ>½„A²Ś\<Ćż’3ZĒÄ7w1h,W£g5gØx~Ź\Éwj²‘Œ '¶“ļ鬛-‡šķĄ#5”•™jjqµŪgIŌu;©R$ŃĒb•ÖǧėRZ€u ·]§øMN[ł·OŸgdaÅd·ˆ¼AfįN£qüdŅörnšf±«qäšüOJ:MĀ9E,Üs!QĶ2=ܳ7Ū#€æ?9ÅpZo§7b+­L2gh$éī¼O¤]ڃ¶3&1¼©”e;ņ=œ!ĖķÓ²5Ÿqb¤ŪĖcuøpŽmPšśõ $ŅÅó(`°fŌnŒ…m Lz7JŃŅ^āā Éof¤ ÆŌv­ģŅÕÜÉÅÉYģTÕuˆ­g op“»sņ Ą©ōļĒgėĖrąw JM…Œ„Ż}…śe€¬ų£ĆŠŪ÷ĀN ĘĄiū>~šĘS•8ĀŠÜ/_ķ–M:”–ótµrŠŚj1_˜īµ1šRź:ŽŒo3,9ØWÅ:K Čyw‘°ī$5¤āā’HŠ.=ēoŠÓ··Ń­¤ stw÷ŹžkK½ŠæćāŁŽ2®nŹ’ĆB%ņĢīĄ}ŁI©&ŌōV…•mĶ# sYņ9¼hĘÉżČéµ-VÖ;fū1µqå€I®Z[»«Ö*ĖåÆbP’Z”o{1ŗW·³ˆč5±&§|ö¬›-mY»œ“VÆĶĻĻļTæ£'Ó“K«±ū«øĮĘ8‹’­SŻŁjzJķ&ÖQŒ‚`É5‡k©ŻYDŅK«mŒ įpኩˆ/õ-EcÓļ’P椭–©“„')½‹„gOwó5ć“Õ/. Ę[Xƒt_$ ķ¼³_2źŹŹg‚c5ÉŁ-īį ä„?RTŒU‹Āöēl7‰zHų¬źŃöŠĘŌė*;[Sµń”jńfŽÕ#sĮŲŻ+2ĪYÖxēxx'’+—›Q¼·“!Ž3Į;Õk5Ū9ĄW»‘d=NqŠØĮF6¾‡<„.vÓ×՝®Ø÷÷ØKąŸļ¢¹ė‹ “v]ī혯Pš‚Ó÷ē‹™®cĘU˜ģ-ĪpCÅkš²zø$łš×ĢŌ±Õ$µŒF¦Ł{żk_OÖPCūɲųČŁē^qŖųvźI‹E{<1“Óv@¦Zčŗ“«"ź2;7B=ė“b—ŗmFµFżęzŌ#)ü{I0#9V?е©ī żŻ¬ ~bPšé‘aS!Éė‚9­ˆŒr#D™ķ¼š2qÖÖ*¼HźīĪYuMD…BF¹ĘO$×IcŖŚE„łs šgē5SV°ÕI?cøƒaą†Qšv¢źs·[œåH­+Y®tNJüØŽ“%·„£c®V³Æõ;{æžŹy³Īŗ}?KšŁ•~ÜńØt·[İib5ūUÕŗ±ž&85:œŚKš{^ŠfŽ'Ž`l„“ ŠīØ­µd’}Æ«JŒÜ ÄS/mtIjĻo.īįĪj¼ŗ.˜S#Ė'¶OZŻ(£?z[‰©Ctó³ŚėˆČO'hÅUŽImßuåŹN‡ų–<Ս:ŚŹŲ°ņc*OQ'’^ŗKӚÓzAcåĒQ)wFŠ 1½Ģ[mcI…ÖH®āHhVī“āfdŽki#“œ„Į¬żF’F“@f²€ūćgĆŚę‡7˦ĀėČóÄV"£fiN2v‹ū‹%ŗÓž.įROŖ ä#Ćė;X#˜ƒ€5č3ˆ53,ÖAćfó¬©l“xnG˜–lGRÄV”ź5Tsū+ĶŹö¹Ć/iēóĘ=+gD¼ŃŪ™“ŁWčqZ)&“f1oÓ8¹ßź‰ķ`ˆæ¢ō­ ¹żŻˆ”½¾›d¾"·ŠonČWø€z4Åj”VZ}—ļmgmėĄ-19żk‘¶×kńēŁ²’xšßk˜ē“ĻOyXāZĻ™srČ|ÓtłÖž[•uŻ~[Y?,r©ģ~cŠ„uā2kuĀVF䝢‘Eģ÷EfŃĄs“ƒšŚD°»·_ō!ńŹ·üknx§Ź‘Œ©TkŻęrņėŹģ°Å%ĀöFY¼»ÕMŗ“7÷†]"ųJ€e†@:å_9„}3ŹP‰§?9ę„īÄčŁY½N.ćĚü ±…ĖœgļäÜšĪ»ŖÜm2"Ē)š~·§Ī±“Y®ÓTōˆ®­ę8µēŒœ’:u`£u‘IĪU9dŁčŚ&ŖT+Ki+ķ€ƒŠŁ¾ńšŽN:2w®{®킣r9RõŠŖļB“X[\ [ĪøćkŻž¼äÜyS ƒÄŠ VŪ­ŪEĪ+ž×}̐H¾QŪx>ÕäÄw»ßŻĮćń­)8Aja‰£R¤¹y¶<ūQńˆdOŽIq&W‘Yv:ž¬&•¶ē'9žµźW~H¬LŒŽ¤*Š.ŲĀ ÷£n)s©G]‰$ÆÆõŌÅŅüIؤBāŒg#$ßšž©Ø ­ŅĀīĻŹqXWž½I‰‡‘“‘ž+[ĆŃė–ó"ÅŖGtv)ž•›IGCŖrŌÕ»»¹’BĘĪQ^ZĹ{K{‘q#J®Šrk½Š"mŠŽ”fĘp5JóO±øGV€&xĻ—żj©Ķ5oņćŹīž«ęačž*Ņb‰]AX÷RkKJÕ“{›­Ķqs{HŲż+>ßI²‚šŖi÷“Č#łÖŹhÖ2ùōĀłhĄ~µQ‹²9JJņwłØŠ½€kYc”˜qŅØ_k/gÉįŸļĄŖVzX…H…ķŠ$äSu=²)†ęōĘU-łfŖ5ZŠ*ה½Ų=ImüM”»ē’XX üŒsTu Hl5yH?xē ƒĆ¶Ot$„É9<’Ė]&•”ÄÆŹ®Ńż×5œåOšėQŅö'-Ģ|C±”K{‡ u•O­W‡VKvYܽAÉŚjš™· “AŸœW)ØŪÜZ‰¬§Œžp­kIóGB&ł[wwØxÖG( {\’'&±eŗŌårbŗ»"C’ś×S”Cgx™™lā#ż¾k^ēJ²[sä^Z'ÉŌŹ3ųRU#šÅX‡IĖߛ8ˆģuøžyfSŽņć4ķ?H’9¶ÉpȧØóĘ®_C2]ÜL9ū’t¦"w%Üé’]9ā›r¶¬ŗ\ņ«\ӇĆÉ,[bŗ’^ų ū/%Ēœė»ż¼Æ$jö“HfAĮByüŖżĘ”āw³PˆźŹ>R#ĶgO›łf”±Bėü9€ÄL——ƒŒņ?­gŻx/Lµåõ)€ü¬󩓍OĘań+ŅDÅE«k“IäŻY_“Ēų£QŠ˜¹¶Ó–5¢j?-~[- _4+8”>e&“tɧŪĖ,F>čūūļ°,mq¦Ż•oāh³ŸŹ“¬õķ Ś«[é“ …źy­e{i±eŻÖ«Ėņ: HYįFщ;óĶlŁxjāŽq%ĢšÉžéäW/įķsSIåi(±’ĻNĀ“|Cā]Mœ[nņš¾b`V*o–/CZµ"­+kŲŃń~‘`śyņ„t#ż+ĀsŪŲÜnm ’0F$p2+:Éu(nžÓöÆ5ą„NŅ­kŃÜ_Z“vŚœä}öąf›IÆe-»™Ŗ²„•H+¾ŻęĪīŹd0ŪH‘9ܬ8÷Õ]rk}N’Y5g™ŹČ5ęšV“ÆŲĶøŪȼq°`~u„…ÄŃ“š¤*Aä—`H”IY»¢q2›<Ró?Ē©ĪmžŃ 8cs“U[Ēegßå\…ū§ĢÜOėKeį’ \\3-å¤N¼ķm#ńĶ\Ö4 5T}ļN™Ąåo›5«v›ŠŃū„);ĖČŹÓ|B–³°øŠ[U×gį­gMŗ+#kk<'ŸŹ¹­ß̹ū&£¦Ž6’ģÜłwró ©Ņ»’iÖf˜RßƉĻüµHÉÅsŽž×µ¾ypšĮ"äFWiö’>ōź|.jއ=8F3QnZugSįź«j>ߤ—tģr+^/Ś\¬–ė :|ĖĮY"UŻų×$oŻŲ‰“­A³ĘäCüÅe¼:\—Ķ/‘qcón8 ūę•:IĒMŃ:+3Rɦ÷Ć#)Ā“W-µ‘Ŗi²Ļ<ÖHĄ‘płW7©jZe¶-„‰.ļį.ƒÜTZ¦›©ŽłQYÉnĢxeœŸ§j©¾]_äaNœeīĘ\ß3CHÖļķ5)Ä ,›så€ĄÓµŸxŸĖ1¬wčWŒ–?*¹‚'Žģ‘©Mė‚Ą/ē[0hv–ą„ݽĄ#-·“Šn¼U¤µÕ\”ŹŻ½ąž<ø×ī7]E{©«sø0=?*ä4{Ķoķ¬ĶØźjĄp#õ;¤R^ k±&Ąø?ŗĄžUz_ h›Sk±»qōķUā²īü§Ż\śNČĻķå'čk¦5éE>es’¶­KrŹß#Ļü/ń‡Z³”5ʛōc®įó~’:ļ¼3ń»L’cż£”ß§˜0SheĻćV->éf`#˜FŸŻi9®‡Oųqko‘[8Č®JžĀRŗŠė£J¼cg;“hž7š²źŅXÉg,‡p@żk¦‚ĒB÷Y†a Č &?:ÄÓ4 >Āä$±éŖĻżō’ķ—ą™"»ŹźrĖĻ;€Ķv–ŗLv¶Ź›ī Q÷¶šk‡ń%ž„§Įöˆ¦K–6ķ§„bŲx’_–óɒ+&b~PØćó„59ENOAF¤bżšG ų‚xŃm{*’ ( £›„Ž@ła—ŠK–'éPéŚÄ¢-׌]¬†A“¶P?„Hž#Ómņ¼7<ņŸŻsĘ¦I5hį;Ļņ¹ŃųvŹęŽŪ?kŗ»ˆŒl‘ø„»²µŌĖ–ŹžIä×Ä{T¼ÓxoP‹ĀK]$>"Ń5¦‹x’Ōɵ©Nœ¢üĶ)ÖSWŽŽyį˜ŽŪÉ[+ #ŒšČOh !7cC"ŒoŠ"I­XÖźY‘­aÕm¢c÷„”‡éZ:ė@ ZŒ„ĄēpÖ\ī:“ģš3­<”KnZ8&oyTŠĻÕ4k[²ŻbN{©ćéWZėÄV6ł‘//¢^‚%OåšēµŻbźóū'UŽe9ę.+J.Rw–Ę5§m-¬·öŽĢ­&x“SŽk‘T]½ÜGŽ#·ó¬»HµK‰co· ~PłJōŸZ^6‘ĒfOŻÜNw Ŗµb“AJ{ž‡7¦ĆiynĢ^Öę:¬€ŹńGĆm Q‡|ęŲĖ×ČØż:Wo{§Įo&Łō™gĻ9¶e#ō5„£O HGŲo L`yˆ@d«N;2§Fœ•¤|ł®xm ąMg«Å dČĪ {ѤHĢ^š—BrCc_F_ź:|VŒ^ęŹQĻ(Zš/Š“(R{čt$÷2ķŹ½ā(ā7Œ’:š×ū6M`¤ž¼¶•ųf‰ņÆ/¶ųįac-m£‘P±lż3Z¶_mšxœŁŠS9ł¬ż•yjփxÜ4Q“¹ķVzmŸ”ZŚP:­Ó·óØõ] MxI’+f;I!C^;ćˆŗ~§nnģ¬ķnFÜķšģ®=ėŹĮAÆĖŸŒ_ü{āoKuo®^é–.ÅRÖĪÕŸJņÆź×zĻuróˌ3¼„šŖ“éĀKžWō5‰«Nš“/ßV}ūB~Ö~)½æžĖĮSµ…*.Yw;QžE|ćjŽ"ńʧ¬\Ļ}Ø\ŒÉ<æÄkžµžBL’ļP%Ėģ¤źF}j§ŠęVвģkK/§M^oš]’­ H—qk‚ķź Uøø„ČĀ(V<7ĖĒ^ĖÓlÉ \ē#łS'“fķ˜$Œó\m]źvņŁ\ŲK6óĒj³¤kO‡ČFCžķÉ&±£¹U†c #v汬ūvY!ÉÉcČē“PŒ£fƒŚI5flk‹I3Źźb­aŻ\“²‚@Ć66œT³ĘĢŗŌV°ŗ’w“éZEZ6DŹ=Q×ų%4õ“¶3‡ v``TZÕĀĒś1aĻ'"¹Ė«™7åĘhšwD øäõ¬cžęŽŃŪ• u8y†_-œœÖæ™k ¢³Ć ķć5ÉCN䟘u­˜]ŽČ+Č„;ł«œŅVčLcŹ,sbWprx9ĘhČģŪŲńÅQūJĒ0d,§ܳøÄSģĮN7–Ķ Ür’µ–ćcvH>  ķQ²Jc.K gž•š×$‘„“Œü Vžq² ]—~WhČĪ3KĢTiŹz™×9ó6§®A"q±‘īqQ…ÅW½ęŌćh…ęĄ8¦ŽHį›yņŠž0sšKFŹqičO©“ hU7·_QYpHó/\cևŸk1B+ŌÕ¹Ż6Į«²fSJ×$‘äį†{]Ē Ēv8ÉØ]²ē“ü |L®ß)ĮėŽ”ÓeEhkéÓm7”géĘzżieÄ·J£!ļĶ%Œé‘óŽTŗg±§ŚFØ^q*Čde¹©vźå~ó,ĆlĮ y½AķŒŅĢ#Uˆ&w…5„®%ߗ†ł—pļšŅŃ5(ĖȜ+~÷zē ³ĪW;OPjjØIG;œü¼Ö‘·Vg%„Ķ=Iši£®zvŖĮ±½YvœdSVZ 6C7US–‘œœŽ€¦„ŹåY„©Ņ»lmÅvö^¦£·‚BĢ_pSĪN'%±±†8ϵVŗ¹ev ē¦(WŲN.*čŠÓa‰ļ<ødóÉ čiŚæFŠŹN~aڱ“K¤ŽļdnFž.kT¬uƒ(c ĪķŁ¢W‹×ch.xźM±”šO˜r0zU ·ˆÕĻLvØ.Æ w ŻAąŌ;žńU²įŁāŪGUįĖ++›0×…rp8®{ʂ;}@Gm@¼zä}jkIć“€4€K»œ eüāādu@#ꯚŅ:jÓŻEm<Ź–›Bķ$ēÕ8ø‚‰6®?¢·ĮõŽ,~ėøéUę™eŌ–7ĪHĻ=)$žŒKCJ+ō•B¬r*ī+Ēó©ćPTŒl’NqUä öBźĄyg'sI4«å†9F\>µšI½ åqWdÓ ‹k+o Ņ³ī„…ĘśśR<ņ4!8 9 ŽŌŲ-ę–ŲŗīĘqйZ;²"ŪeieĢDoäE12Ź~bsR½»G>$u^;śQęŪ}“ßµĶŽę•ķŖ Y¶®c u'üjͬeNārĮÉ«PÜfĮ6‚õŖĶ4ΤeA*”µ#—ŻYŽFź6ghŖ•­±.õ‰r­H’8`ŚŹ7cvsU/ˆ’÷°~čéĘvz)6e[[ŖEęÄĢXŽ1Vn£–kp²Üsō©Q ;8(Ć 5 F¬ņ0Üõ2WwF®ĶY2÷®%,"ø‘NÊŽÕnÜĢb„|ž1\ÜaaÓ£e!ŗäņkVŹB4ÄfݶSĆ ÅƗRŽŗ½‡ßĘóA—eÉĄōØ®Ć„ŪvŒķSCr³]˜öĄdg#GĒväfšnÖ"SmY㵐ےxČŻœž©Oņ4ļ=ł@ĻZžĪąęDĄŚF5 “1¹Tv%:('Švŗ6¤ćy–ģ£ŒÅø€£€{֍¤–Wķ@ä +ī}±l‰øčA­5ƒLšvR $óÜÖRVWe9]Ł ŗT†!“ķ\`€Ė\Kę_:Ę\!ä`u­ŁϜ±E~ø=*—Ł£Šį#RÄīĮŁüź ’ÖęMé-ˆ4ųI¹øē&¶ĢÆżš` i\30ź„L°`yvŁŪŽKu5=”0E>é#.ą}Öõ¤ęäČ»†Å3pё‰<µeĮĻž‘ aóæø8ؼHc’deT@œ‘ļéXÖ÷­ē3†e@Ż+hӕ®8MIZ?ī/&‘ŁNÜē”5>½t>ĘSĢ °äēµsšÅĖĖ#ˆ®ļ½Ļ'ŠšŚ««LŹÅxĄv”Ż$RkąDŽHŁƒ“’§­_æø·“· )gQĻ_j†£²€Žvuģ+Ä®'…æx¬sœ)či+6)]-ÉdÕ§•\ʁ3ĘsŅ©3ŲüŪzšĻҾÖ"rQOB:×Y ŁĒ RO2ńŖœī™…•ަø—#ˆŻĻCZ©3G–x•ļWõgŽHÕD@ŽŲ²&‡hgy=ĮÓŠÖ2OØŪS$“īQņŽē­O©ÜŃ¢vbÄqZÖšżƒ-‘žE##qć5ŪFŚ‹FYd'ų‡z—$“ \Œ)C\£Ņ“|»›Én[Č^dr:{V“ŗ\ˆŹŹœgƒZzM°†„„HČ!—"£ubtlīr·67 >P,Šyjč£-„‚ķsWuBÖÓL(ˆ6ž@īMr— ,$‘Iį{JīZ5”„’Wźk\^ļSHqÓ+Ķ@ӗcą ĒŸ„k”*p@ŪZŲ,‘[0Ł“½±ŽŖČŽVÄ7*Šƒ®Gõ«ŠH× yJćióŪ½rPLó^…Ž[§„tV×FŅ}±¼aŖ%Ub“‹Õ:Ü­½æÉQ…^[Ż\~櫼®É…#’*õÕŽū L„(ŚqłW$č$ Ēp=ˆ5µ5”œ«9=‹Öq‰’CeøĪ§„m D€ŲėĀ8Ö\°9ČjŅŻēcœ÷œš½‹N=NzÖ)›™r2}1ZV1«©smżÖ8ŖW··2Bv*…ĒQްī甹Śzē5ō ö²>jU=ė[C§Õtć·pŌ"yĄ'„ś™ŠįāYQŠšJ ę²ē™QĖr¤vė*ęź8dĢ“×89­Rv՜ŖKšĖc“²w˜‚|Óߕ¶ķ­`–".$ņ +€ŃÆgX#±e•3Ž1S(¶µµQэ‘ d,°— b©Kõ`¶sģsšÜŠöhÓä·F_\Šķe¤VgŽßµim.G2ŗ»9¹,īC-ęa銿§Ą®Įn4÷Ś'ÖļŪ"\ļ¼Ōg5=ž£dÄ–ėp=vØØŻÆsx8ü+c94:ķ7 {ˆHźqI†ģ`“‹‰FzīS[wש,[a‘—<ŒQ„ī/“nĒBÄŌ¦¬$ŻĢč“»d`"Õ.”'ŗę·t}+P1o¬M.īŪN‘–Ż‹×v3ƒi‹®Č£ŗ žĄØœŲ=¤v¹”¤jĀ3¾V™¶öÅQ·Ōīl›Éœ]ü£x«vŚü&i"ž3ź&°u»»‰‹%ÕŸFŒƒU©GŽŠÉ՜] ®u~»ŽG,«&īæ6)ŗÄŅ302ķ'OJįmļÅ¬Ä ‡)źbćPK©1ęÌ`Š„mI„ŖÓī/#żt ŖU[bņ+Ļō}„ƒ÷‘;ÖeÅÕ¬`\E×=EhGdq”KfźNī)%Õ"ŪjÜĢč“Oj ÄŅÉ cʘZŪ¹ÕŃ­·ķ°čGJē4‰¶’ŗŗ° óóœÕ]BŅźIY×Uµ‰OSåĒēYĀ*÷4®ļ µ1¼[­jÉØf٧Œ'zēµkūū”9³fļ;bŗ£ ¶p%¾I—¾ęŸtö-lJKϱŗļŖčpʇ-īyģė«•zŁj[7×&›k¤£Ōµt{PN^'YŚjj»¢WŌ Ō“:¹Ėh„`=¹üėŲĢvé +qœĘ‚™j–²Į&Ėgiģ)r'¹­ćöUŃå6v:Ұ–Ü]+ē%A&ŗm;ÄōVĀ ŪK™ād9®†ćūf6ŰņŠš0@8«zu¾Ø ڈŒŽ”ʚßq_K-¼ŁĪŁXŪ_Čdm0ĻĪ1ĻÖ¶tż&ŚŌļy#ˆćūÕjī=A¢.o¢ĶFn#˜z†łsY9©hÖ„S„:j÷Šó4o4ŒGgs¶¶ģ“HŒJn.P±ģk©Ō¼=™²ĒLøÕ_½SÓ“Ao›MŌ’!Ļ$PÜmøć9ŚŃĢČøÓl-Ō1–Fn€RZ²§ ȧ¶Iׯh–Oó”’w-ĶO é°‰™m­®TüĢŹBš'8Ø«“KŽ-żČįÆ5«»(Ż#“ 3“āØYź÷3»¤†\·@21^«¬[¢G¹“į/Ø^¢³ŅĪĻ`s¦Ü@ē”ä¦ß*å0-łµgŸ y§‰°däw8”c淏ÉvćääzW{}§Ģ4jŽLŠ kõ$–@‚“oK½HŠęvZĶs LuéXŗµåŅŪ²6i:«)­a)É]ģsV8é©ĒC”kå#‡SłAȍć?ĪŗoųGµo3BķŽB޵/„ćׄŸylĘ?†PF+¬Ō†®Öa“…œćĻįX¹?idѳŒ»«1tmōwµŒmė‚k^īZŽM2Üg‚Ē•f|PØ“Ų¾ąŽkF+-t©yeŒ±ēŒT“ł­sI]Gk"ž›£X$bQ-Ń—ÆéR¾™ņŠĒ `zW7¬6¦”„—@IŒG¦i7ń&–~@Ķ[Œ£«w­Ģģ•‘µØĮsåį%·^Ų8®zś×QFŹŽƒ„nX_BÓ,ģåGŒ1]ZéóØ$ĀČĒ„'[—āCö\ē Ö·m 1¶ó#ē;©m§–äļ6— ĆŖ²×m©™­­Š!‰SoTČ®ZöžįŲ&MŪø:ÓU%%r-7³d—7²Ł3C§,*W?=aĆs©i²{8Z"yܬnĆ}ÆÄ<ÉPĒ Ky­Ż“_=šyēėZĘņZģCŃóÅ»‘é—6wĒ"ŅP9Ś›@§Ü\,>ŃżÖē5—«\MxŖ-ĢAO'`ü«§½ !$ń@ rIZS³6„(čy†»«ŁÅrźŠŻL˜åYI¬dń‡}³č÷GŽ(2•z ėĮ4žU¼ņ±’b«jP\ł$šü(HåĢ{IükyÕVåŪęyōč;Ż»üŒ+MWĀņ¦m-õ¾^?‡Ō|>¹·}ģ#¹•W3šĻÓ4Qfә ×S¤YZŚĘd†Śņ&ĘŪ\u=ÕdĻB›—Å- uK‰XāŁÜČ>\šm„–¤T3Ž6©=GåN7ÖŽfÉķ$•‡+½«I&ģ‹Ce,EG9~õkD’ŠÉŹ)9=LęIÕJG v;ĮĪ>µ^Ņé.Ū\[4€ć!ņ gkWŗ‹d[­¼J½X6Z¹Ū­^öČ˜™łŹā¶ ŪF`ńōŪ»[|T³‡T…GŪM‰Oö\ēW®®„Q©‡ģĄÉ׈[ź—ņKŗk›‰Wю®›A½»;6Ż@ū­"Ÿē\Ī+÷ŽøVęJڐ“Éw*ÜärXØō­-bśTÓÖ1M ąm8Æ1»×nķe Ēm(ģQ‡õ§Zx‚y]Yąeē Å/`ļĢי8DæÆĶÆŻ+¬zm©Rz™’®±tŻ#Z¹œoū¶ÓŃYż+«²Ōl/äXd¼’ĶŪ©S5;#œ5)@?ÄZӟr£)RP—4µł•.t+ł ). cUī‡šÅ”ßéČéćLóœščōż0–%õu'Ļ×ńŖž Ó­b†O,\»“ĻĢÅU?å’ŗ"«vęŗD:3Ž\Ū+,Ė>3¼8ŌiöŖ3$>SŸāU8¬OŚG ¬Öhī1÷Y†3Z±ź$HŒS®žź™Ą=ó\óꞋcŗ“Tā“We[O½yÖ·Q4}½#U­µ4¶'ŗ‹Ķ{$ «¬ßݽ™yb–,uX”ä$ŗÓ%»żė_+¼Lu½:MĆSŽubŖr·æsÓ"Õ­n£& –ŅvaƒYz…–Ŗģė¹$ƃ–„cņ®rĪūNIQ`Y2Śd«·š÷ˆ%k6‰4ĖLō ŽOćYµ$“:£Ikæ”Ī[ŲŻ›°³Ż39=R}¶; Ņ“{™ŚŸ†ü2w [v< ĻéTō’xrY|Ūin@źYĄ®śÕ ’ÜK&œų#–Ü*ÉōüģfTVŪµņ“Ńƒp‚³Õœ³x_N¶‹‹½Ć ·V.®ll@Cj$ŪтōQ ‚YoˆÄ¼gq|×ŖJój^PÕ4ų¢é‚™żkzo§Cš„Fä£ʶ7Š›Ų[Ā—8õ`jö‡©xŠĻt#¶”Gęk/Ä¢KI­„7LF ">µƒy«Mwlbŗšcē„[¤äµZ2]x§tõłŲōy|Imq G)ÓVe\oŒÕHķŪR+·QŠ=§å>jŠņ“Ń“»™–Ŗ źŪ5ū`·»‘”ŗą֜iØæqŪŌrØäŌ„Ģļ¼iį-^ėL=[rćv)ņ5Źh~»Óī7\Ž ć'vqTt»{ūyń¢Ō¤®+ÆŅšż¢¬)rļ|ÖRœ¹y$ī‡ qSēŠŌeÖ£aaS{±żŁ&ØĆż«ö‹łc'§˜H­Ū62ŚĘŚĢ\b †M:ņĢzTƒYĘ+XGŻ“–’÷ŻČ,Żt˜‚iņyįł.Ņäķ].“iŖŻĮÉr…\ņóŠĒÓmō›Ė€c†Ņ6^3‡š®†ŚG“Ą²øŒą†œ×W¹z7™°Šāgš˜¶aiĖAĶG ®·ģ6‹$KĀ™0 üŖ]'u+#Oi+rņŻ›zµ­ÜJ~Ļā½KÆś¶"PE295‹x„ŃĻ<Į‰“`4ū5Xć,ń›QŒŒ'żzÖŃué¼Č ZŹSųž"~•2|Ģ…I(ņ„f3Ć^!·¼ŗ[}B*š$ž>’Zß¾—O*)³Sž ¹ük>āĒQ‘VT6±ćŒĘƒśÖ>æmy¾n$DŒŚ /fžĢ„RQ\²čwVfXmK[ķp9Śpk;_ÕoM™e·HŸ¢uż+ŒµÖ†•§,jŽilF‡„v¾Õ®5ML·ŃŹądüJͧNĪeÉóŻBē›jŽ#¼]OÉŗebĘ0¤ ٳń$=—K)¦Ł[+PųęŲ® Ęk;&šN’§«i¾æ“²G,>óJ+¶“éØ¦ŻŽ+7(½|Ģßźž·„OšŹćļ,nʱ¬|Kį{ėr¶Ś$°Ž/%Ł ?‘®ĆXÓ,m-ü¹mžŅĢ2vÆõ¬ ]Ž)ĢńEØ[nā ķօ%(^ßy.äęÓņ2“ÆE§^5°–ęŌ3`”]ø®ūNńcOjeØ­ĖŒøüEsńiPÉ:%õ‹)Įy-°q[×>Óį‚ ¬n|µĄ<Ź²Øā–‡M%%i»‰«ėŻĄE“¼Ō!'–%*~œTštśō÷H.bk“QĒ™Uż6Įä"jq2/ó­ ÆZAmIŃŪ°ŗäŸēYŖ©h÷²Äž,ŗ‚Ś“2,#uĆā=k“›ĮĶwrҶ£ É!ē|E­kź>֟ęƒRyį"k€xüM[EÓč¦ĪFø±¹ģčµJrZGcOg6Ö¾g¬|0šģĶŗąŪĀŅdĀ:Ć^ Ņ|?Ŗ†ööX¶åJ>ąĘ­źŗ‰,œŸ“ZNˆyóƒųÖæ…|CyerƒRŅ,Ś(Ę7ŪH0 ŖīOEvcB‹ęi#ŖŃķ4ė‹!ūė­§ųŻqŠšeÓ- dyšBFF:_x±.gŁŸĖžœ W@ŃZܰø’É£ŻŌ”~x®d䝧sŖŠ’¼ŚźŽ-Ež-JźŻ@éĮGÅ^1Š“šœīG@aČ'ėŠī›FÓe‘Ł/|€rJ4`žµUü=įi¢v¾…&7ĖČĻįZŖ±½ŚfSƶ­o]O5’„ėH‹-ÅŚ/C¹ųėN¹’-ļq<¼²^焼bKF…»ŖcŸŹ¤‹Įz;:²Cž»™FM8W§»~&2ĀŌ~ģ„§’±ćžń:ZÉ­Ž·§/¢©•Ez„Lj4«­-.'y/ŒŠ”<{[:‡…ķ­ÕK@ünŲøčt+Ėł¼Eų.Lk’:畤ż§S²*J<‡æąńØļšĮc™Aģ<;­Ś]Ģ>Ź^gž?Z­ØŪųa.Č»°Žy:—pϵr>&d7Gū%°S»»Vņ¦¦Æf½Nxā\ļč{ßi„E¦$’ō-Ö«ė·i Ä6äaMpž¹ńB9žŚŌĘA*Ė‚õµāŸXKŲn®ü»¢0JŒ~µ„"Ó²W±½j‘Q¼ž£”ńʦ;½=n˜‘¤“ŻśŠ[Ļߣ[†‹FqÖ;SÅSŃ|A£iöā)Æb~1‘!Č®‡O¹Ń5{M֗W2HGU`VŖRW¼£”<׍£=N6ėÄ:¦µ!ņķķ Psūč™Mtž»ŗKo"Ac!··ŠŠę¼D×v‹Ek*n'å†#ń¬ xnSibŌ5;Wsó2€ÕŌ¦š»Ó±ēgĖß©éWrÜɘ„ø¹¶'£ ĮĒåV4½"ūvėTšžSČónŠƒ\LÖī&:³]£pL×9ŪłTwzWŠī'ūF“ŖÉnIĒī›Ī”¤­t’2ćĻ{س֓w×­Ē“u¦Įj„dYKV‰¤»7[cG™PĄ×ĻÄ 5MPIįČb}«GĆ_lg»1Ż\ŪŪ4y Īårqé\éJšŪšŹ¤$ŅwL쬒)ō_"}"WĄäo`žµc௠ß3Ės„ĻŠIĪ1Ę¦øų‡¢Ū÷RĻäģÜ$Š"A¬=Sādž|ā¶«©ŗ‘ĪŲŽ?Zj•GE“õŠ;õ1üs…ō–x­/5”ä,d1]ųu6bAń£cīČŲż+×¾&x~{„Š+f‘ĮēĶ‹ż+•ń7­}ēE€6r’aĒį]Ws‡*HāXŹpŸ4›ū“>’kiOöW„9_”nć5ĀH|I5Ó¦”qh¤äyq‘ų•ę:ÅĖŪXĀĘė”ĄP ~5čžųæ¦_ŲĒÓ0³å޾ēµs{“×+_qګЮԓ64żFž 9-­ŅK·ƒå‘Xę³Ŗ[„ž—~pĪn0­|EÕ"’dŚé7ü·š9DZ¦i¾6“»+ż±föŽ%e §č mģš\Üæ©œk§+]éņ: [éwŠG<ś3ŪNq¹ć`Ų®Å,ģĢdA—J@x†į^qk­čā#.›uz rĀC…?G§x¤›Ö6š—Ł„n™¹]'½īv,TT{—š|p˜e€Ę†_/mĒįČ®žĢŸ)ē9āøūmR’ĖjÜź0ČrĘ$ ĆéŽ+ZĆ\šÓĘRÜjKŠż±vŒżqQi^éšFotģΚćWšÓŻ^Ü*c¶€?:Ąń&„£;é ›€éėZšXĻqūč­¦ī†7ćčkfūFŅäO2Xī`Nā6^h„©ĀVKü‚tźN7“³õ±ā"ßX»×ŚśóT–B¼Ŗ,N•£„OįIĪĒ‚ W=VC“cņ«÷~š®®‘,Ɍ·¼ēņ¬”£{µ ä„š¦p׌…Ä(f·“ԘćƁśW®ė>.™¼Ÿµk[7÷\ł÷ÆQ×|'y¦Śė\øtĒ)2o™¬ė-+Ä/3ŻÄN:…į[ŖŠZ¦a:NR³WÕ¼|ĢIK•ˆōmÕõ˜Ņģ…æ¹·ŽN§÷cš»®AbšXóY,L6±ŹŒžuŃOR-(£ ™}.iÉ/#įżCĮó,„£Ėū3Åqž0¼Ń“.õ£ Ź)%¹õoķ āx[į&§¬½ü7SĄ†4HK>Õł9ń [»Öšę£V28“=ūU·u (Ėc³Š® kŅĘX<šĻń5Ŭ·,–Ą+žIqF“rßae“1źk.īDA+ÕōfÕSä²!IJ،æĶÓš«sķ]<}āǾ*Œ£v$@»Ę9õ©Ć:ٵ•ŖŪJ²ķBy?żjz\3.F¦Hģ{Õ©$Ycf¢ć=óõ¤ŖJ/AĶ)+&`ĆE9`ģ{õ®šŠEœ² y„ üÜÖUśˆ9#2r23Uc–`įC8ėŽµ²\čƜõåFó+Ģ’)#QEĆ·ŁŪ œē½QøF1§ßĻ\R"¹mØN6üĒłÕ8%ŌÖ°ķąL²`8u㚪ņĢ.J9mŒrH„€y.Ėl_©Ėv"¬Ū€Øžłē–„I¦īWÓ„²y0ÉźĄŠŠM=šYųcļŽ*Ōd.ķąÕæ¶°„c,{ŸQE„m ŗK–¬’"ƗĘ3ĮĻēYŗõĀ4ŹbM±“ūÖ¦ƒ·Vņɳä\ī&­jŠévÖåL¾lŽa{V-¤Ķ/īØČå$VQ€IŒ~+Jņv‚Ę4‘Üē³ļ·å mn™„I™mćVłœpĆÓ҉'"\œ}Ö6 LCĮėĶ ··ūwœ²2Ū 4é®c ¹T c½Cf8\œ«]X˜ŲŠø’&! 2žŪ[™ »S÷ƒåĄŖlS~T¶ź{ÓŽe|*†Ī ĪGJ-„†¦·e™%WV#œ Ż;RȞ\Š*Œ†PÄē ŖZU°[¦o1Ėrī•qL†šF”‰N ö§nˆ|·z™Y¹%TuŻļÅ[±²GܲøĮϱ Ɍoäśā­4ŽÖŽTLс÷‰ėJR•¬‰‹KV3X·żąy<¾N„H¶Įļ@¹vØ-Ź€wī!rGSV-n1;į‡éō¤–š›?†éܧOŠŃ ālóZHc$'Ē„A¦ŻĒ5äˆA¾PGsO€>ĀĄŒŌ·c=ьæņķķ·pzc½QŽķ]wą‚yŠÕ·d”:‘ø(ąžę±¼Ńö׍"ĖgŖvŠ(“‹JŠb–BTFŪ¾¾µ×ėW°Oo ŃōPOć\“³ĆT1ØŚ>l޵{BKpԝŻséž”żķMgv=KE•DŽ^mĮż*ę‡mWheC‰z³el¬¼ w0¢ęF\(m œb±Š}¢žœ¬šWK+ēk_˜2Ć VbjżÆē‘ŪœŠ¹wøC·8dVcZžģĢ  ?Ēźj£+hɝ4Ž„A,Ž$ŽĖ–ČQӚĒ@–öķę31ąvÅt7& ”^p Ć'’}*ˆ·{²K+"‘÷øÅtFi+ŲĮ“—"Z”ōĀ›¼Ć 9Ę:żjÄ÷3–&1·pР³kl‘Šź’ķ{Ōw…­l†?‰Nū G}ʦŽīx°Ņō_ZŽßM$b]”w­Ÿ闗еÄlpĶŽ»½Ćś`ЉžW’ł¹V_į‹”žĘœ•ķ$y½¶—“›£t¤`—9Åj^(a»åęŗČ<7$jÓ „‘”¼yöā±oō+Łī6øUś•éō”»õ%£R±Ķ\ÜF±!U'ėĘ*+Kųb¹o61*·@[ԟ<¬nö–S·95‘ćŸźŚ …®—\PžsųÓRŠÜŃQŗęMž ÖIµ†p±`jׁ!{»Ł$s“ØÜ?ĻćXķ£^g÷q9¦Euž“žÖĶT·Ģ@«•[č§eļ= »{uŠyꎬsĆVf½ØCå¶BĪx!ˆązÕ{æ4Č|Äś¾õVźÅ¤—å ¼Ž¤ZR‡[šFOį†Ÿ#.šłŅƒ'8ägµG,3Ļd”ż WŽņÉ]vG'āk~}ݟ†]Ā¢}Ó¾j½Yœ7ŅāŪx’8`ņ“OŠEĒ\ā žÜF|żˆī÷ÕĖ=.Ē£:‚cšæi„Ų»įHl 䎔£”£‡[™kķ°l“eĒ}Õ=ŽærNĮ!Löašé,“«±\zõxhöĮG¦N*o} ²Jϩ͕7lŖ3uąSžĒp2œqÅuq[%»m‚w"¦šōŪØ?øfĒ*GJ®gb$]Ž9ōŻYī㜐÷p+gI†īÅÕŚ©=ėj-BYc,D*¾‹œÖuĶž–$a4R3×f+6”‘jn/•§³ólYŲ³s¹+.= ¹’ę`Žäš½kÆipØX÷Œcn1VWS²r]eVÜ2w«OK2*];¢ˆÓV0—”ć®üU¤·x­ĀĀļš· ÜØQ ‰‘×uY“iŚģ󌰢ĖtrjĢĢ…ä H[a—ŠxH¦™–KHß¶@ŗ‰¦żČ&lk*śY-ń$vxȊ"Łję%ՌpŃYõädÕY“½a'–š>89Ēå]W0bń¢QÖµģPI“‹“ŪnhrwŌØSŗÜąćšŽ”ā9®}:֍¶…xĪ%@9Ė!ÜŪܽ”ÄsŁźW5$ڽÓ|®Žjžū©mōF²Q²Hå!³‰!Ū²FaÉ(Ŗšœ“ĆjĖ„’–ęc]³¬„šļHŻ»ŖÖēˆ..ē*-%ŚWqŃ\Ā£RV34›RYǦEdå}Q³k’ĻsĢŁoÓbĢb«öņßy(9‚SŅj¾Õgø.“o_į!öŌ)įŸA ÜdŸį܇Ė{¦gnh4Վjā=Ft!‡r½MŪź1[öYŠž2£­i]i:Å©&YJ7_•Oō©ō‹V9Õ|Ł„A×來®Rm{”J”^ū™¶j"0Cš–ėĶY8·VR3ó ķahä·XB¹9ĪĄ ji¶E”g¤Ē°¤Ŗ.Å8tźy5ŻŗĪŪe¶sĻ«PhĖ#Gf²Č$×£ź-lŠō¦‘ĒW\f£‚i+M¼`;mJ£Żl*q³ŃjpśÅõ„‚¤v9ī3År——·³Ü•kxŽĮ1Š÷ -¾ČÖÓ«‘÷HĻIöE»mŚD­“õ bœ'] äæyyjpśWrĄ” ;½@5g\Ó5“]ŠÄĘNMzE…ķ„ckŚ„Ŗ‘œ°ĄĘÕ4Eøe7#'Ń2?:Μ¬Ķ12Œßŗ­ó<…ķµWP·’©Vü?¢\½Ó,v÷AÜt šķ¼Q*ŻØŠĀļhĪxOŅØųjŪÄw¾`¹;G#|µu›µÓ# (ŽÓV ¶š®¢²žņՁÅmŪųnꁊād`s†"ŗ/Y»)²ķ€’iHäU­CS²H•ŚGä ؄¤Õ™­fćvÖ8ż W.$—ŲJ?¹mcO¼³'ķ؀>÷éw¾'‚ŃĆk<½÷°Å`ź:ŸŪ.™hĻÜdń[-¼s¦ä×)ÅŚŽ]EŪeŗ xÉÉ5"jzš‰öė„ÆHš“öhŽé¼gœ€*ωÜĀF˜Öwš gNWvаėK‘)T»ō’€y^5)ßs%įČź «ŽÕļ™žīSŒą¶+{ūKĶe„Ze¼‰žpæеńžÆmÉ“ča8뷜TŌu/cZ~ÅĒTs¶~ ×!ɒźé:‚E\Ņ|1|ņ°’įĪ;ŗvś×[ ųæV–ķw†6ž"ŗłµ°Šąiń’W­·'éYJmhŹR‹\Ī?#͛Ànieaƒņķ¢‹H·i¼±q.{ę½. jĮ¢+sip‡< Ŗ:¬ÖÆ 1éŅ“€L{ZÖqµĢgRŅNŚśG‡­#ŚęxŸ™V2ųRėVrå\M  ģōx¬_JÄŖćØŽx¬Ė­.ĮĖc, ŸĪŖ”RW‘8–ܬ™¦č°4šķ¦Vģ@5³6‰¦ĆjYlĖHFCp*h„Ņl°©3‘ҋˋ{»Vj¢Ł±‘ó m6ÕÅķŒĒÆlÜ5Ŗ‡„l[źŗ”Į!‰ŠIžĪ+œ]ælŁ.”ē8“[:R\łĮtņŅKŁJ'µLØÕęIMšĢ~%ŠŁ]%øŚ~öпΔ°’_$¶ š“0Vņ‹LÖ`ńtq7™”Õ$ Šā5Ūæ[³…»†0{±©äŗóņ­nšyŲõOĻ#Ī«Śbś?5ÓÜ*\Ś,RĶ*dcqłMx_…uė©t··¹<|ü×s¤^Éöp//w†’žĪ+Å©hõ:«N2†›3rėĆ60Ģnާ#ķēi~*ŚxŖÖŽ3o§Ė\F½kö³¶Īęgi ۚ½įƽ¤Yž,‡©lq[N0zĶŻœt'7 k–?×Sb]rk†p!µU?6dÅsŚ–·p³„·š'aÕT V¶¹„H-XŪŪĖ!n0:~uĻi>¾fOb#^pW­]¢—5Ģ"ēĪįk$h\kĢ–kö˜FqžśÕ•õ¶“ŪŚm2³õ«6^ņ„ŻrĢØxĮSZ&ĆĆó‚÷°DącēĶLœ­hEB>żY^…+ yšp$¹‚@ž‰œÖę“¢iāS-ͼŽ¤)¬Śj:<, Ė]€q·°šĶ˜¶Ā\#ö@cXFoVt}bW[śoń꣦ņ4ū{ˆJœ+(5[Ć0]]X:H“ī|ĢI»kłaø”ĶåLXyGJ֚ıX(SÓi½YrÅr-Ž|4yäåQ¶’Ļ¢šµāńÉ"^jī•kØéņ0Žé†:œ+Ö¦ŠŚ[2˜³ĻØĆ¤Xēpa&’AĶdźsĘģŁŽ2ŃhyķčńŖ%†ųģö\fÆh²źilVīå\7f­z%…„»mŪåńÜdÆÆŚļVÄh#ģį)^2ѓVRƒ÷ļ÷”„µóꯔY3ĖĆ•K”čv÷”ē0ĘNkæšœ6¶±@m’ŽąŌŽ!šĶ“ä+Ž5¤Ŗ{‰YB„y›»9ͶŚ°y ß’k[Õ“ÕUOµČē=dbŗk-zÖh%ÓÅŪ…nʝuuhŠ–:U¬ ŁĄĶiFńV&»ŒŚ“z~“N3,°Č²>r×k%ŅĻo²XÄ` “޲¼1&—}såż†ĒS+©ø‹K°qx÷vRĄ×<—ļ6ŌéŃSNOŻ1£ŅōÉ?ŚēFv«śV]Ō—‘\²ićDI5Ųi÷ZS«;$ ØĪ­Q¾Öt8łš¦z˜ŠŽoF®dźAI.eč`čóxļµéņ[ūńƒĘŗQ¦Ē4gξ—Ģ#¦0 V·Ö¼0ȶećļdā°u=_Igm¢U±F š…IŽö°źb`’‹³ł¾šč”Uó·Œć5GÄ gg ‹©šnźAż+ͼKāŪ ¬Ž¬¬8+–°ōéĻ0ö—’“ŃĢ€ŸÖµtÜ5Īu‰Sv§æ™é՝Ŗę×.:É«ŗOŠ!?묄#ļV…­xwP¶2CæpŚĶ†ØoēŃCfh ä3ÅG$j- gĖ6u—ž ±’TÓ%øČĮ9ÅE”źZ|Ra“9ī» ®sF抣¼MMOšīčk“ūN‰%¢¼lÓ&8*ĄTŌ²“ŠUb¢Śh[JΆ”z2?:TÖÉPm“«)I?ŀj¼z†Šˆ|ū|®r H(¶Ōü-#c—ß‘Q8ŪYE³(×»åŒŅüŹRų—UŽI#—I“hłvÉN“Ö!•G›¦d=JɊč”M$Ū±nŽ8p1ŠÅœéšŽóĖ® ÖŠŅŅ±¢šRJLßŅ/l¾s みVļļŒ6Œmf·•Ē pM3L“Mø² &ŲPM$֚s)Ē”Héøö®jz»³Z·æ,YĶźÖøŽe€ y ü©ÖZ޽t»§0•#8ē5zTŠŽ}š[¬„ϐjݭ葿}PfĮ®©ł#FŽLu•„ĶŅnakc0j;čļ-‘£ŁĶŽ0+VĻWŅŠyfVRĒųˆ­'E¾“;.>yw#c°Uyei”Ō¦åŻČó;X5™®ö­žÄĻ-tqY_E eÉŒā­’c¼2–·Ō/”Ę5h%ķ¾ąoŚq×÷•¬Ś”Æ–å–ž§©jZ“7,‹Ėg=Ų Ō—ŗ’“mnTö݃łŅmĖdRŠ‚Zßśīr¾A–÷kŚ3øV¤lұF¾–D<ŠÕ[™k±ęFm¹ģą×I”iwW…‹U‰W²2ƍg;SW: œō[z˜×: “•™n|™źm:->$| FīuĘGļ ®¾m "Œ}²āŚ\Žw’^Ŗ.“§,™­‹Ž%Į،ŌÕŁR§³G1$z”ŗ fKcœT³i~"žąI£s ó.ŌKasm™ie ĻžZ×=&”āīŒckQ×98üźļĢ“i"=Å$§y1·ZDńĄ ŻóG/ØNµ—ukkęb]vš'ń/’JŌÖÄņF’\߯Ć&:!~"ņ>Ā@5kKŅ<0`WQp\ ćq¬g$–ŗ“ļ'xŁĖqŗC\cĮ°jj²²¾—%Ŗgåżé?TŌļōż2ŁŽŅi1Īā ü+ćĒwÖŹc“ŅåLżÖ ēUļJ‚Kęa9ņϚ„ßČō˜cq¼bŁf\ck’*¼: 昼V·Q>:,‡my&µńÅ>C"Ū:€ŸĪįŸxŠ÷+MæaĄĶg*SŒ=שtń0œ×2g®ÉįĶBŻÄČŅÄØ;ŒŅł²p$•_g$k“š÷5ˆßC4ˆxuv× $b_.)<Įœ: Ö)[Inv{Ņw†Ž{–/%žKEū)RĒ‚NÅ&—¢^ūKEdłł‰R¹!Ž ’å‘Čč×Åj”F›!Ēńō¢u%k&*pIŽKRŅhÓHd“$óµ8ĄŖé×¶×'ģŅ„,xSĄ®†ČŻĆn¾j!”ŽTøÅžĄVsm U:ŽŽFs„­Ó9ł ńŠOˆÅ³'ēšYYEżŒDØĘä$fµōvĘ=Ac7(ä“ā®kµ“‘·— Ģ1A „'{lPŒoŠÅŃķe;i`?+ ±]6Ÿ¦,Ѥ#…’5ĮßxĀņÖu4†xŌćęcž»”xŖ[€7Y}Oa(¬ŖBPiÜҌŌ×ŗŽŅĆE°WĮwƒ#Žiń鰊ÜÉ!_ļ=cY_„Űf˜Ž£Øk·Å eCöqŻ™qĶesØ÷ ÖTthīSÓ#ƒģĶ&Ā£ ÖŪxrK–q‘C\ ¶§Śø¼Žp{t®ŽŹŽĪįWģā3ę ąŽ”łŁŖ~Õ)«~¦ž·¤C5©^Äc=ć“VŠķ!@­ŚGL–5£s§Kn„jźFF"±oÆŚŲŚdē$£ŠøsIZę2p„®–§e”iˆ¶+PŪĀ t'œÕ÷šõ†Ü"ŹĢ9ŠńėŹ×¾M­–¤p8%Ž­XµßDŠŹfF 5JĆM;)!K¹ÜYŽjŚN•mlZFóFB ęć0Åv±ĖАY‡ō¬-SĘśÜå'ƒpĘIa޲¬|OØ_21§4Č8ŒœŚ0š…¤dźĘrMkä{–™¶ć‚Ü:޽+U°h/†Ł¦…r2©ņćńÆ>Oė¼ĒŪi”`Ē ¼ń?‹Š“4BPP«*pž±”µ7ž&źńއ·čÖ6sŲm•Ś|ŒåŪw4_xS@š/2H¢ Gs^kć½zŲ²}Ž&.9‚)·7Ճe”ŗ‰›Œ8ØXj—³–Ÿ×a¼]7Ō/ņ>ˆÓ¼7”[[œ"Ø“€k_NÓ“dµg*8łŲWĪ/Š5©dSöy§ÉʉÆ@ӮƵ 9Wɚ͈źłÖ5(ŁŁ³¦¤”Ģ£c¼ÕÆ“˜f knd†"žž&‚ŹŲ$v—±čŠs^_uį’%ɒÖöGRs“ Æ©[ų°Db·Dą…kģ)»+čcEk9uģu>9ńγik(Óte‘Ų~£’­\g†ž(x±nM½’‡,„ Ą)ĮĪk+āĖdiäĪsЇJ»Ö]Įi"cœ&+Ŗxz~ĪÉ}µ%VķæC©×ü]ā–•nl‘-į¶H™5Ÿ§xļĒj!^{iPlX€Ķ2Ö×[Ō·m\żÓcō®“ĆžŌ"ļ"æ|ė>jJ<—W:Ŗ\Ķ;y³^ßÄ^+šĒ|6lvćąÖ3k2³›Ķ6Ö*ē"2qōÆEš¾©ł'Ķqåcåc®¾‘~\Ÿv Č1XBQŗ‘Õ:Oć¹äĒŽ¼DU–źCæ_—ü…qŚž¹Æ]¹‘®’5Ļ]„³_JƆŽ|ż®ÖÕO\ķūÕ}KĀ1 uņ`„ē³/…tGéŽ:˜iI^w±ó®‹¬_‰e‘³ŽI» "čĶ·:’ĄĶČŁ&?Jōkß Į/›¤dš2ø©4ß Ś’^H­ŃGu@EMZ±Ż—J‹’äčyóŚjĶ&ū$jq)\ÄÖׇµO[ƐŽ)Ņ.`>@•vŅx7@»]…ƒ;±ø¬Ęųs”Z]ok„=ēQ*”ę¬÷ō6Žtöjާ?ŖkzˆøęĪķĄäż”5kNŸU¼Ś|»XbT\éZ“ü=šżĪę7R’{DGōŖö “æµgs¬<ˆs†O¦)ó«hõ&8wvßęŹ^'ø»ę5ƒxØYY²+Ÿ±ńE­‚¼/£źr–ąüģ«ł×«čši²ŽÖāw Ÿ­\ø‹CŽļ7PčįĻTŻ“łTJŗå“”˜ć‡|×öŠńķ1ÓPÕD­mwbÆ÷J˜īmbÓ­Q?“`»˜ž±b'\žk½kĖ łz]øŒŒ†O—õ«zu…²Ć“,OŻ Iō¬%[Ś>c²(ĆE÷œDŗÆ‡%¶1ĻīÅ4hCTcĆŚ“ā +~2ÜĢq^ƒ,W‚±ŪŪłcŸ™WŸÄŠ·ļ)]9&õćš¢ī?ęDeNZHētß2ĄŚćDNG™pO{įo \ڼW2Ēĉpg§­u·ŽūNGžÖ(qüĶf‰+)lW[žXØØ§RR\ŅfŽ”SäŠGœź_ ō&}ŸˆõuĻ%''śę®h^»²·1Śx¶žśÕ$·įÉ®ŪTµÓmĘś0…[ųš^ƒß‘ā _GŠģ–įžŚ4n»% Gą+Kó.ę`®ō!žÄ¾„yβąįCõ«~“ńm•³,K¢Üļ< ü×-/ÄŻHŠ*ÜŹ£Dh>4ŅÆ¬“©Åb0w#śÕ8æ†Kļ3Xˆr¹Į“ųĖPń›©oŌo¼; mØÓ ė\ö„ń*[éW@椞µ™āKŸźvްCäˆyvOÆĘĻolØė‹m¼t<ŠļT ćfy²ÄŌSÓšŌõ'ātō6U gĄĒ'Ž·5]GS†ąÄöžZ¹ǵ[ńƙµ›‹ė[Øę·Ń£“ųĆ$×Yį?‰ŚĪ›,k}i6”ÅprŠö®jøYÓw§Ŗ:ØbcUZ„ļčzƒ¬§RYęŠIA?6š? Ѿ‰¤ĆCbŅc¼6¬­Ę¹żādžå@²hWv“¹łŒr š®Ó@ų£2†Ad K)ż+:F޵q|©ÜĒŽÖ9Ų­Šń,9UŒZ_Ų,eⵚy‰ė{“‘łWq¤ųĀ–IJ‚hĻIń©@¬įZMņ—(F*ésŖxjśīٱ£éŠøłY_ ƒĆZIŃ cæÉŗžäę»;ßé6öYh/®øeEÉ?Jįõ]zĮ®K UĄĻ7ĄŹŗå MhrĶ.{S½ždš]ßIy(’+„r2®`ž5].õµ4· Źyo˜1śU’ų®i%0]i˜1Ž®1łŠ³©^A —#ĆŅ“YĪūX‰#üŠ•U·(īTąŅެčü%fóÉäK²Ļw lĀŗ«M.K7xg‰Ķ“£+$.?—jćōŻZŹłH„ŖøĮŽu*ŹE_ŸĒ©„ŗCž€ū8ƓĄ>µÅĖV£|æqéĘ„jó3¼įøēžšŽ»ØĪkĘ? ņ[Ā’j:öm.,¦cĪłPÆņƦ-µŻUŅUŅ]|Š7Ƙę³m¼9įłdyR'YHÉ{V5tńn1³NęO M>žG‰ ų X˜„v³D£#ĖU#JŌ!±Ū{¢Ųļ9}² 5ģ7–mnŠ4żZź.6°|5RµÓ.įžkóžö ¦ƒ žé²Ž&QäݼĶ]8Z6lłēFšM„Äg}§–Ģx®3ZQx+G“%&XDWhćóÆCń?…¼Wl-…Ō÷QFÖ£źčZ KK’ńŽs½ °>ÄVņ›’ŗwF~Ē—KYżåĀķ$ARŹVį\Øu? ź6×#V“Dzz¦ oi6—AŁ –śÅ‡ü±yIZÜŅįÕ$p.,ŽD#‰ ĪR’딤)&®×Žp×^ Ō®tģ3ŪŚĀAįAēń5ÉÜx6ŽŻü˹®^1üPøČÆ£ü= ģvŪfŚš·Ee«?ŁÖ2>Ó§+)Č9PE%ˆ¹d\©S½ŅżOŸōü?¦ØH|YØ[ó¤ēóÆCš«é‰Ž$×Zõ²Ccó®Qм9%ę.ōؗaą¤ŌŃåŠl›m­“Āž›§åYUšåJ%R²÷„ų#?WŅdŲ§O3FĖĘFÕŅt}Aķ”Üź¬øĪ3kZ%·»< „gę85‘¬ųKķ÷ęh®™Yys\éč£sk·ļ%÷Œ¾šõÓńĖlŁm›a'óŖ6:m’öo*ż™¹?½ £éYśÆ„u„™šŪUø…—€Źć­P°Ń¼km~$‡Å7±0õEpJÖI(čÅ{źæ½ŗšĀŻém —ŗ«·VBÄĒšŪV‹TwƒÅWpB¼žńsĒŌ×a¦\ė" š–­<ŅĖ%¾3ųнc,ŅDāyßi\"ŸĘ³„źF-tłéĀRęi]š†‰qiaµė‹½ƒŸ”ßZŪ¼Ō¬­ē),wģ¼W}muÓ/`RÜ0ŚĆłÖ֕„É%нģŃNärqQ*i{Ļ©¤jŹz]+k·Ś=Ćģ+§ÜcœeH®zhą…Y“’éŅ“üjäŸĆŚeiQ*¬įU#9 Ž­Ciieķ6D ó¢2Ka:MźqŗЬģ Ūź:}回2cbŸtŸŪVltłm¼ÓŠ9Įüˆ­Sw6»®¼©¶Ÿ”éMŽ-*(ó%œnOL)jžź5Pv÷›ī>†0X°ĘEAgĘV€‡’6÷«9ä1€ńƒWM JŽ` Ģ£šŚ¾„i†Č;Ž8ÕRŌt “ĮŹÕזpĒ2œzŌ¶0(v˜3u„wamŻŹb"&ł—nG­B’#a~į8«—ĢÉr”˜ąsU'*®JG@zSNåF*č*$`®ēoj‘äˆĄX1łAĄõ5—reą•P0qÅO!ģ™Œ6ķ¼’jź\[Ł™¶WNoä29ĄaĮnŽÕŅj|¶Ŗ«¹X®r+•›O‘”.ŒRBÜ{V–”aożō]¤ŠnҶ”.^[h>#-²7įøUł7lEW3ė±2Öś™––īś}ĆŚU0¼ćšŸK·™mĄ.©!9=x¢īI!ŪōļQFe’,ēczŠīށeØū©Q$ł[,£ E½Łe+µT÷z˹7üĄƒ=)a¹?b]ý7Nčs’Ńm¹ƒ6v©ą`Ó*Ȥēź*½½Ąe ĄĮ©QŠĢA8 ÉĶKÓBÆ·ÜÓŃmծف ‹Ī[‚MZŲ@Ąü¬IĄė3xd)+ĻsĶ=m ą“ž”›–†/ŻŁZƒq%ņ~nµ.–Ń=Öč|°X[¹5‘Øß«[(bl~œRčŗ_c€…a“7õ¦Æk$R©v‘ŌźöI%œeĀHīܕķNÓ-–SĆ•ŪƒéKk4M³³SķZŌH¬AQ‚Aē5ĻĪֆé&®ĶXå1[–+"6ńҳånCó#ēČę«ÜŻ2Ā[ēq.0ėRhqos€ĢK”vœ.•Ł“³fµ»¼#s¶@Č8ėXž#¹tf³‹rķLšpMtZ«}–‹!WčAźröÖ/y­É0‘²IēŠŅ6Jģ\ĪZ&Eįż9åŁ-Éfęė[7l‹ĢfŚ:1SK+'˰ėQŚ»\X·ČC™š“nåIŹÖ1®Ÿ|å"Ź–kwþ¹Ō$ÜņŒ`Ē’}*Ö;wó§*ePO'йaØĖČŃLÅs»øĶ9NĪÄŖoā¹ŚĒ Ž…¦ŖĢß4@’‹Ē8ē5Éźzē›)źŠ§\ ž=k;TŌ$¹ø3Ić'Ž•›vmøQü$’õėg5e 59»·”µ¦ė2“ŽeuT^>zK[»‡ŌGwd•Śx5É_ČßkŠ2‡k7VčEhC$ ¬FG*Ȟµ›’f‹•;ZŸŠīģ$xmįT| Ļ­khZåžµ„¤zœĘYałT9ČQų×i„^Żjʲyf9ąž+Fć6Čė†ooj˚)Z ŁJ+™^ĒMŖE*6KƗ ©kbHM“J¤†@{×7”16Žf‘¤ŚCžžõzžņāxŌ Ģ1Ēņ½+õ½Īš*:Ż2ŻņZĘd•œµ‚³¬īü‹„–DŽŽ@ķœV ÜÓN^›Ųgj“­åŪ.$ ć#Öŗ9Ӎ™ŒīŸ‘Šk>!±Š0Ė“›¶…ČéļXė®K%ĆŖ;(aąjē/­2īčį›Ž”Œœe‚ąg$ć5P‚JɄŖ©»¹Ŗ¬Odé†Ś3NÓuŽĢb5݌WšęŽIg,dfVéĶ]±±¼†}Š»#nķŌÖźI+_S9ҜŸ1ŅZÜ™RUŗē)#½™™Š;¼’ f’Ś7dRO®r)›ŻUÄ$¾F*/.Œ•‡lŁÆ!Üä…Q‚I늫ØÜG4eD«–8ĄōŖqAs*$j¼8ł‰8ÅY:Y‚J¶ÅCŠÕBČÆ {bTsŪ¹4ßķ8ĮüėZźÕ3$GŻŲģjŠ0Äl€ąć­g*¾f±…Ńāź5—-;|ÜżźÖ²36ÕwĻćŠšŽž%øĮ°ŽOLšŌ[ØF Ł,`ō ÕõÜĻdŃ"•Äߎ)‘hę=ĖrŖ§ØŻĶ]’o2O–ßʌwĪM1$·\—ŗhĪxS÷žÄ^ YƇJ&Vp{}źrx~ģåŻ*/©8ÅGqÆCeTš`Ž*;/Ȝ¬ø#£S’’Wc§V2vFÅ·‡o)ūbJ£Ó³Óē ļ1?ģšē.|iq!#ÓŠgxŸ~¤“½‡!©žń~ØÖɏv9­ÖŻß÷¶[½~“£)=×+¼w1£x£^&P{Žõ!Ō, ƒ b•›®Tꮯ]Ł“łįj”×l¼}–rOO–¶V#ž]H,dÓī%?č±>y8®‚Ī8ķÉ[SŖ®MPŅbӐēģw9öZčķuŅ1V>ŁzŹM¶i).[]£–ŗ–Ķg,o. Įū¢?åP\jÅ Å{t­Óę=k³ m>EŬCž1P_Yčü«÷_Ziö3—»ń=F VtÉŗ–^?…ĻZ‚9¦ŽąŖ} §ūlMu×¶ö‘@D1D‡k*Żī…Ī +(õnWfŗęå[h÷1“€ĖČDZģ+²ÓĶ!WhsČĄ8®L_EÖŁšÄmõ×Ic¬Ū‹T(¶Ņ.8ŚEg7k&uÓåån,ՏYŅ!}²@žūH5~K»+›`¶±ø`… s·:šO(ņā“R9 T3k7р¶±Y« AŚ”"ļtgQĮYJę¬Ö°Śb‘HüŖÖ›nķž­ƒgļnŸy®]Źź&,3×jqRGuoņ±łć95«M­LćdõF„­“A ņ8Ē”ØŸ»ī"øœžÅ›Š—LՒÜfbz`š±­yurc–2‘œšŽT–¦‘«);E›ŗ,?u¦ģĮbē&·HYmdͼl}1ŗ¹§[’K ‘ó֞uef–źIŽFzÖ­5(–įĘÓßļ9¼‰xE¾–Y—ŒģžµsC‡ķn¹³ø±×įR뚪›ąžFš:g­E&½s,ĀXZ6#©5Õ>f‘ĖAr«=CQŅmq‚{„“2j(ō›³čµKˆ€ź ©ĖZ“/ę  ×a" K9–Aö¢I’iźT“Eū6’SOG±æyÄcS¹Rµ®“ū«H¼Ļķ ‡sĄäVVisŪ­ĀĘ ³‘ZZ“—ŠĮ‰f€€3“0?•Db¹µŲڵKA(čĘiwśÅĄµDŽbŽqĶtņ›k]$4émēē$ óu~&Żl%ž!ŠÕ±]BHƒO'Ģ{žqNQIŁ.w męiŹ'¼Ÿ0¬Hž„R²Ļk~üŒ+"ņŲĘ^ņįĒ÷GĖQ®«ö8J¼2z3Z(6`äā½ÓZĆV³€“pv8'Šf§ā6‰ Ų\¢3’ģžuĘjŗāĶ1_±MĻ$ Ģ– ¹d2Ae6=TóUģą·3U'U„Ŗ:Ė[Żbī÷|— '9ĀÆŗ=(8e- ³?÷AÅpŗ ž!·SåX¹9­­:’ZkēŁ`ŽėŽ+7mĪĪD’„M½Ü—%€Ē1‚+2; )”$}ä®ŽŹŽēQµWdŖ’Ŗ’$¶Ņła@cĒ#śŃ ŖkC)RöIčriB¦Ü¼‡¶žÕC:µ“¬M²Ļą€3šæ~ŗ†Ę1hŪ=XēŠEŌoķ'{Z¶š¶ i(ū·Üš5S÷Q_ÅÄ n±b\Ē0ą ©„_4ŖM>L›rßĮ«ĘšÄAŠÕG×“ĢŁ‰{īņš1ųŠŽk­4DĘQ§+4Ū1“—ÓšLI§^įø%"“ītøv-QSøśŌ:Ī»§[²­J~ńU?„gź_4hlŚ(Éø `bˆĮŽļ©1QQn›Õt Ł^"EÓ28)ĶgXż„ßĢŽ+)U#½qzŸmnÆ\É dämU­ZŅMāø1ŽKp*«„d,,å5Ķ=žKĶXŁbŽĘłūŻ«WŽźi—’EļŠK«×uŪirĢ†āxŖ“–"²» ֈ|&“‚rēµżN§Ć·Š¤;gŽåÕ‰@®†ŚņG“btłØē+Ź-mäBZŅāEeō5µg«źöńq6Ķø8kM§”·4g Ksøµū%Ü,²;A"ó€üŠĻÖ Ō&_.ßQßuÜąā®58ŚbĻ,ŽĢ9<štR¬ņŒJźĢ5²VWz˜jŅŁ%źv:-ĶՐ"āMńŽ7Ī+FßR±øģ¾ņū®ņĆĶx¶š•šŽāuo—å¬[›ø·7٬ ¹n„š÷2öš¤ć”ģńIlę<±æć'ō¬K’čå™·Ż£ś«€® L»Öāį&+‘ŠšŠ·¹Õ¼åóYžA"œy¶eĪ*Zŗu-;N“łæ“n˜śĻēŽ„Šõ›K+…(÷›‡;Œ˜« Üa.åŽzž²uÆŪ1o<²ŗ¤ÖŠ1’±—<”½ęu^0æ•sį¹łsœā¹Ÿėķū•šHŽ3ČPHÅV±Ņ%ˆ2ĶĒ£5bēJ óK`Ē|ŽiEr»;YIjSÓ-uźŃ‚§®TŠŚYõ8ÓĖ–?5@c%ŗBŁ:„¬@Č(*t»XĻŪ'$c—Å·:eU(›Z~·w¦¾čŸfīB…8nYų§Yœ«5ĮT<ąDk†“Rø„Sä*õ ńM7ŗ‡–B\d€`~.šé¹Œ*Él“=‡NńF”$"w$„c; bj7~0žŅi#*ŽA^8®ÓÄwöń€Ź ĖīéAńEó¶ Ćq’k£.V%=}¢Zž‰ż«­½“­ū…ą€WŠóĻŁÉ=ūHŅ G\°ØdÕµ9fł®§Ų¼r*圳̬ŅBӅ%i SVG'#“ē{™V֌ 4CŪ‘[zGö„ æf9?ÄAÜ?d\Ći4Ä~ö,u OJӚ2ŅżsŽ•”ŅŁ“å+^GQw}©IfØJƒŽ6ę² Õ5›)•–IÓՋygDŪ3…#Ł¤žŃn“wÜz=Z^ē+9ß?2fö›ć½TY˜¤¶yųõķW-|i{MÅ­ģ/žŅ¹5­€móg¾ >;«F;.f¹#ų£Ī?`šŲŃWšÖūŻ$Ż€·J™ćœÖü>/¶–ÜokÄ,9Ź×—iچ“~Õ)Œ˜ĻO­tÖZ懒×wö‹3(ÉQžu’æcxŌ|¾óūĪŠų‡LŠĖĢ’ķ]=5“Œō7“Č’B~ėdą×4šĪ…p¤,2ĶžŽµw5©ŸtZT€FjÕ(„¦ē6į_Ę©¾›§ŸŸĢg^Ź®9«^éw–Äy[f#¦qYwÖĪó-¼Ģõ8Ŗ­k”äÓŗFŽ‘öx.BĆap ń¹OĘ·¦ŃšņŠęŪßkr+–‚ļWŽ%ˆ+«ĪįƒRĮ«ź(@*ƒŽ˜¬Õ4ć źK™.}MšÅÜOęt›æ A­M&׏P²AxŒ{ N+ėš€õ³Ćß#š·c}ƲŸ³jM.ī@•sŅ‰Ę2רB¤’åqŠģŸJ·¹µ$–"WķYsxneŪäŒÖRM­4ŸéQ™ßņĻÖ¬E6­1%ō®9©M„ŹĘ©Āüö±©m&±„ $ņÄxĀ’qWä^ĘžŽ\c2A¬‹]_Yg[9%SĘJkÆŃõū27ösÄŹ9&³“äWHčŒ]M“üLŪm?V‘IŽźU?Ā )’Zx†0÷G`źBuük§“Ä ½ai ž* Né`>Pó•ņqŠŅ“3äP×·S/J¼¼¶MrĄōšÆH’^Ž.įg^»š°ļäŽKŖ{wŗ“Zö“éq§īÄ”Čäl<ŌŌ÷5‰­+ŌMÉ#BßBøtVómĄõV Ńu(›0ŹŹŻFēQ,ҘÕm§‚&qǜ Rŗ¶×ās$sZIŸāŚ¢jĶ•9Ę2½™ŁéēXŠŌ ÉaŒe95KR7³†—‹b¹K{ĻC)†‘HČŚÕ`ų«Q±‘wi8żMƒĀŠ©R ^n×4hŹķęO'b“Jŗ|ÜÅs…=LD՝Ę6·`-ī›unÄń°qPųžK[Ėv¶×Ą°Ą>_¢3‹•¤µ"¢š‡»Ŗ,CØč™]¾jž¼HElhw–ĢwyR4#„ÅyįķE5C'Ś.¼¶<īN+Ó4‹;ˆt°­šGF ¬ŖüVLŚ“©ÉĶQ[Čč¢žĶ°`ĪNrH=Īm ;¤T#ī‡Įēś¦™v×lÜDĄösZVv}€yÓŹķԜu«pœmØ”%(øŪoRž±£EdĶ+_HGaēdcó¬)®“(§ó./¤–WȧÜA¦…Åė*ßBó§éšN…(ݹ\’¶kNWĖi޾éOPÖ ’-šNµ{*Ž@E ~“¶ZųMŅ^jd‘ė‘śÖ³i¶č|‡ˆ:Ę9…gĶazć6³¬Ē²ĖņąRQ-’ę½ć«5“o@©¶ōŻ\’=#ĶYŌüYgfĖOČG.*ža©D€O @•ÉĮȫьĘŅn’V^§=«H©jkV¤¹9S¤kv7š}e4SĶ€µOZŌ„ˆāŅĢC”ŪZ^fŒ’,±³ŽˆŹ?SÕī@LXYÉ6įĒ(­įīü[y˜b’\Æī Ņ5;‰­ÅµæÓ­kYßģł×J‹Ž*0kĪ=BöB·:}“ ŒóśU“b–0MUäĒŻVā„o¦¦É8ĘūבŹKIPuĮųUlēmĆTkY‰Ś6ÄHŖ¼÷RZ“_g»¶Ü1øÆ5•œĻn#2ÉžųŹ‘Zó+jsĮĻd®th5‹uŻo©i÷Šē;%‹Ī©, „ż­†1ņ˜Ž+*ßĆŃpś~،½JIĪ·%·‰įøHn“«K”żb€r+Ź*ķ3yB¤’ŗ4”Ómn‘^+6bĆź+B=Ź,oÉéŗ—ŠaMÖ֑DƒœgZŽI¼E,“G;óš˜ĪOKšJšKTÅŅbŃćµs%£>B1Å!½åū5±(žĪ=)·W„į! ·u#oL*·cbńķŲĄq¹&ĒoJ«E+“Bs—»r OŁŲNDÖRÅ"ü£wCS\ų¾óRSöY’0F0V_Œ<1„ƒ.ūRyĪą?Z©£xxFū-O~į÷Xä~“„ÅsĄPud¹jō/\\G2_ÜŁÉŚA¤±‹Jæ»%/ŠeäVGˆ¼9ā[R|»xnēŒż)|?Z`ź:\1œd•|sō¢KŻŗeŅ«}%¦Ōdšõ„@Ou%ĘĮŒ"Õ­ľHŌŚ[M¹W¤±“Um¬ķu³m§a³ŠŖ|#-Į`Œ7œäTņS”o&%:‘“‚[‘xĆƹ^nł9géŠ<7āˆn!ņī4=’<Ä@@śÕ¼²éRE˜³ó»5Æcąė‹AęB—ģ¬9(zҬéY$ŹĆƲM½¾gką^ŹZGtĖ  Z(½³–ÜČŚL÷Qž„ė\ŒA2o uä’q['ĮQZ+AŖŻ6įÄo1#ł×*QSęoS®Pœ”©—o¢LĘT°½¶#“‘łZŃ%¬GŁ®vveLT:‡n£R³ßC›„#5©{„^[Ä?āc&8Ł'>Óß³™r„£M2Ķ“šUŌ!ęķ\ ķeĶbźV×É3}”¶Īͳ­Z·‚ŅŌ$—W²©ļūĮš¹k.•xÅbŌ%lń†lŸ2{Ź*Vīs6z·7E啣cŻT-iÉ ÉY–é„ĀąÅ\Õ¼5§]mhÆÆ!=2&"©&ŅĄ){NįS•‰«•YM{¬ĶĀM5ś™š=Éc¶ĪKȱČXƒUįĶ®žŅe乀]lZ„¤ ©lŚ­°õhš·lµĶ‘d5ÕŠÅĘ?‰~SJWнõ圜yY-Ļ„£vófŽŽĶĻ!ˆT?šˆŪ\/’5}2i1·.*ҽ·ÖgøW :ØūĮČ#?įJn§² ŗ¦“„ӌē%£ŌIĀN:}åæxTéöŖ$‚;„‚˜\Ō÷óŻŚČ#ƒĀ³]ƒüAĪ1XŠuK›­–JÄæß;IśU[Ÿų¦Čy–šłŖGD“ ŌFGńn?­$¶|æ#Ø·mķ Ńčoføéēd*é,Sh³7—n r§~5äö’|[$%Ó ^˜Ś*ŚÄŗü+št–’ÉĘFMK”WķXæ¬EĘŠƒg[ā+½Ń:–Q‘X“[xk1±KŁŌ’R=+WÖ¬āép\Ż8žādf—LÕlnęŒ,QAŒ2ŖŠćĻ‹ü }˜õ„‰Éū·ќśf·4MCF6ĄŁŽŪ°nFĘ'ŽõŠQ²_‰“.곝žGCyy§¬n–̶®8 75Éė²jĄ D–Ś’Žˆ8?JīTšąīāŁÉŌż9«6óxN0.7Ќå".åY*¼ŖÖeN‚ŸŚ±ĀųsėŹVŚėĀ—°«Ėx1Ēį]꘷“*Ķi$°‡Ū4X#=øŖš—Œ¼5j Ū½ÜŹ%`#łÖ¾=ÓZą[RXČĮSSSĪOŻCu “nļī:^Ī]BÜŪ]lY?¾‚k˜»š5²Ię6©{l ˜Õ±ōĒ?RŌ¼Yµ­¶¤ł2ăC×­…ĻŚ5(õ|ć,…Ÿ?‘VŽü#¦ŻŒÆ JŅŽ½É„¶Ņķߏ“^ׄunņšæ†*i4Ė?³‰ēńĘ„aoŠ"øSÓŌք'šō’··»d‰AŅÆŚß覌aĮeAĻŻ •)ŚļDiØ­,Ł‘¤ŲųnęŚEŠźļUdį¤žčœćæĖÅs>/ńŽ‹įB-¢·•¤VĮDĻ^s^£i„čč7ŚY¢oü»+7^šĶ•ÜĻ–Śta†H2äēėZÓöMŽjčμ*“•9Yü Õ~+} Jš­ĢŖĄķIh|6ńī ŗ –Kw†=Ą€’•éZ÷Ćļ [¢Ėqw“‡Ø[€?CQi_ ō‹ØĆiŗéŒŌ*·ó­jŌ§*|½ (Q© ¼Ź_‰{QחU°šhķŻŲ)>Yó^UØźŚt÷›.“ĖŪw27)ł×°i¾·ÓC/lƓ÷&Š0C]įŻ’kŪ Ę~wžuĻOé.[3YįcQós/¼ša„Ś<>v˜« ~v Z§§Kø2vNķ“śūDŃįV6ŅX£Ž»p?•dĖØųo岛U[;Ö8_Ż’?>•qÄ6ł™2§Oįg‰XYŪYʲŚéW.ģz¤bŗ++ö™ć‰ü;Ø+ŽØ Ēē^™l|7ey³Y×Xߣšś]/†¬üع6•ÓÆ ¢PzńYÕÅEjćó6„†»ŅZv8?G³¼]×:j \’8ŻQ^h: ƒi—…’§bsųׄj^•'fµSŽÅ}?ŌūŹéĀ2dö€7t?f± üß©«”'{eįm(<„X]/9Vū6«6VÖVŁA o08Q%¹Čż1^”š^ZL7G$įū«`Īµ ŽŁa,±]łģ¼™PU*÷{Ŗ7՞#ć_ÄöVMŸ„΁+4QŒ*óKOųņ×XiŪķr†ąę<óōÅ}R–÷w7-ł‘ĘF9Ę?*ŽmpL7JbŗV-:~ĶÄęxDź{W'÷žmš×Z“VcÕō‘oq–S BOņ®ņēL’Hóov p0]-•ŒIhŃ®cr0>N*#S6ĻåŲiש“ņK#tõÅŪę½FM5ÉyÖ„„x¹­Ż!¹Ņ<œHųGS^kāŻSĒ5āīø™•N‹ „~ī×>²æµ1Ž@t¹ūŃܖ­sZÆĆƒ {=jY#^˜z마‚Šį«ƒœ¤¤æ3ÄīUĆŚ9äg½z7ƒ%Õm£6zĀ3€!œ!¦ė \įaŌdć°&£Ņ¾KŪ$¦Už1!ń¬ŖTŒ£vV›RŃ/¼éī5K›Ä&ņ&‡>räÕ;Y.Žf’-fśŁ1Ī#ޤ{ŠÓšē„d¶œ Ō&µAŃ–š®śŹŻ,m%Іžš‡$žUĪåŹ­u„ń3†ŠÆ4•ŗ×4ł$^¹€ĘĆÖ“?·¼'ę+}mÖv8Ą§§ZčēÓ4C{Üh*[¼æg ?:Ā›Ā:SLĀŽĆMx»PM„-yæÄ¤ä­Źōō-ZÜY VH¼@”Ųnn6ēZ‘Ī“N®o¢g+€ę@Ćó®NėĀöŹ M”,wŁ«žŃ4“˜C$V€'Rd`yüht£Ėx½CڶõŲµāK=mÉ6zƜ«Ž¤-r’?Œ”¹Q&³£Īå±]v££ųsęk‹k]ˆ>ó\mĪ«[A «„[iłbēłÕ¤”}ćņJVL½įÉ5;ˆ•./ķŽMøP ÖÄv·©1yZQÓ qśULŸģā¶Ś-ĆĢįąS€kšŠµ?ŚjgÓµyĀÄHĒjĻ—™6ŸČčNŅP·Ģļ- Ų¢{µ”°äąVµ„Ģm{m"’ü*ˆ×KŁ~ž ģ|ģV׋“ü˜ĖŁFŁĮ‘°¹śšĘ4œ•ķ©¤źrū·ŠŅøžŹK½­«k[Óū–|Ņŗ0ķPŃÜßܦ?Š%žUĀA­.ÆpŠ[ų‚ĪŌ#'5u: ü–qŖÜźŻ®>ś0żiW•’IźU8§ÆC~Xm4’C©)=øĄ©”‰6hdĻy‰ƒTķµ;‰nĒŁmķī-Ū®eÖ”ń>«„k5ŌWVќ’«Rߏ¢2”•™RŃ]YMq=ü‰$v€©8mø'ń«7Vsšf†Fģ95ÅAć [  ™ŁŪžzLž•³Š$¶eo³ŁĶqø]r?)Ź2øÕx8ź Ķ7NŠ@ßc‘ ž%õØī4.ģžYg„xb0}x¤½ń:I§ČŹÖŪRŁæ•1maϾj=?ž8!’+¹’ķ9Į–0słpÖ:+šo¤Äš¢x±¢vuM¢ÆųÓĆöÖ²HśÅ”"$.C7a×šÆ£ŲŽŽÄź--¾¹Ś1ų×É_šUwTšĆ…nm4Ū‹²BÅPΧļcҶĀP§Z¢ƒ1Ēb'‡„ĶžGŠ~ ų£aā›;ūīŁķōĒ++@JųÆž aū@č¾1ųY?‚“ŠāńgO:U`T…ąŒ×Å_>(x»Ćzv©e¤źOok«[ĆvAąžœWŖjl×fYŻÜ¹Ė2õ5ÕCŁŠœ„ÓŠę«FX…/†ŚźT¹łåa÷I$“޽ʬL¦+L„Vd°¬½G|ÓŗŪ–Tp6pjy„ņl‚9'žk*µ5»Üķ…;C– É4¢Ė#3DǵSń»ī€Y[oéUŽą±P£vŖzģRȊ»ŹÉjˆė+¶T­(ŲѲ»†šå䐌`:„«\«Ü‚ėQi°Ć 9ÜÅśÖ«rĘrcąc·§gb*7Ńčo+ļ‰Ęp«X7lnY#˜Æ8!h‚āCĮąŸĀ³®l¤mAšĆqĪjće9JŽź6ģē]’ WŽzš.'e‘Ldą‚µW·µž; 1ŽģyĒ„d]Ū]›æÜHÄwö47}ޅͶö; ĢpF’Ū³³c,n*ē„d†KY„ø ”X€Ę¹ō[hįĖė]¶Ū£,1ƒŒn$Ę¢»±¼_'Ä_æøÓ¾Ä ¼—ĒĶéY²q†ažj…§ü|0ŽARqļZ2źø$=iOEaB’Ԋ7ČŻøƒõ™q™$ßóIĻZ֎5… 09ĒZ[± ·1Ag£dt÷©ę×BÜßS2(‘¶09sŌgšÖ‚56av” 229Ŗ–ĆؐåČČŪN‚ōķ1ä ·jŹ¢—MJm0¹T ņFj[cķ…wĮ?ŅØė×(#!°ķŌśÖljņ?&Kā©'k^ÄóŁŸf—ķ T7##oJt6ģ±}ą„€žUSKÕ%ņ7\pXś}jźüȤ9*Ãұ|ėB““3®®˜/–łźzŅX(d!Ął²*Kä\®[·<ꛧXßĶ&‚{šŽŗ”^ƒęd ÅAĒ`*„wŒw¢#$£‚Ć9©~҉+&ŠrIϽA`²I$ͶįÉśÖ±²G;•¤“4¬ļQm_ĪV܃‚9&’é÷[deKćŖg)r­ĻZŠIŲ¾į°žin\ļŃ+Ā–BHć;ŖģRćžĻ'­gŪL…ؐE-Óģ!™Ā“ČZ©[fJ“Jčv­q’3T-ܲ7–HlņOz­•åvÉĪ1š³b…ƒ•ÉŚ{TĶt6ž·CŹ”É#ļOv½xķK{$Q1‡ĪĆ&™e<m ŹŽ§½;i©Æ:Łv3aUĄĘjx×tf Y ąÕ)& :²¶3ÓbāU) re”qżME…ķÖɔ¾ĪģÅ#%Œ‡½T†Łaæ\³ ¹.= ]óYčÉV#Ödķ0”ȏĶóZØ»«ݵ6t'yõ—ØJoö«śƒ©¹ČUצ;ÖF•pĮü½å¾bć5‰ÆBM)ĮéĻzĪÖÜŪ™rö4īŻ0ģŻ‡÷¬Æ1®s™Õ8=žź9e-ĆŅk7¶‹y};ÕÉYj…é~†,–ģX¢īSߊ’Ś ST•g5¤d|¦AĘ ©‚rsó{ŃĢķfe«ÜÆ“J²l=żj9ćŒÜ0Ta“ddq]Ä0\^Ś$2¢ÄĖ™=…^ń&—§ŚCĮtdy>śnĪÖ„EGG»5ŅOM—sXݑٖ#ōcI“1]ż¦S‡ €3Z^T'pQŒĻZ»§YĒ<Ÿ3‘ć$w©©-4Ōӕ¢t’_Ž7ē‚kBPV"WŚZĻÖ.ŠbŽŹÄ˃ŸÄŌv“Źcl‚ķŪnzR…6Ö¤ŌÕ‹©hĀ=Ū÷į'Īˆ ¹Śą³D¬8!€Ø-n ¾²!Š©ā;ō,²ŸZ»=‚±zły#žNwqL&4ŒĘ¬K’r@+ ×RøQ·;HčsSŁž?;x-žAE4¤Ż™.m>cJś8’f}ƒ{Öeüū *I銖źā3„rõÅfjq¢.±=GҜ®“4„Ō–„ ¦w9'å„XÓ”6řP’OņŖn_xsšd‚Xį’EĀp=jŅm晲¶Ą6UĘ{`SR&RKžÖŖ‰”“‡n|sS<Į•w7š9¢I¤Dj]»–ķęėņķ¹5nHŅ[DĒõÅR²ŁæĖĆ »`ØrˆFīĆubŚ6ŒU¬aźyņłc!ķ“|;o^dŹ?YŲæ?) }ś’śėU,Õ~gżŪc8NIDØI'k„† ^ ŲCō5¢¶­Ž# p熨,¬ŲD„:mf’_HY # SŌf¹®“°ßĆī½Åµ·óY”|ŽWzŅŗeÓķ•ćłeĘā}ė#M†ah6Lū?‰³ŌÓ5+čĀ“D4Ņ¢óžŸ>ŗÅĖyz„ō÷·FI ‚6<•ļõ®›Ć0¼±E AیœVؚźņ4X„q’7Ą»ń¦™j-­m\Ķ·iš3ėCmč¶5“ŒcęŚ5Õ½ś4ŖŅ–^{Ōw.m-Ł ć#¦9²õ_ź2¦#mø:V[j2ŻÅ¹Žł{šŃYnĢ«JQ²Œ^„ūöay˜ąŽ™¬ˆ„ę-Ā@<ĘŽK—p-Ų’ī#ެHÅJń„ńŌ».[£X=5D’¶ł6³m 1×\GŹæ*{õ$Õw™n&• «ß¹­åDŖø\dsžõœ§mŲ:nŚ­‰īŠB¬¢5Ķ\Ѭ5ż¤ƒpåńŠŠ³Ō-c™ 0GFÅOŖėé˜É ā<ćpźMKwµ‹;Ęņ&»–óKÓ¼Ÿ=%–uĖ:Ÿ„a݇œ`’d:“Uģ®.ļ( "ó¹śÓ/ļ„r”ß±ū·|ŠÓيŅkĞ+‰ćo(²Ē·†ā™qŖnŲ“*åHĘ3Y+s#JIf$œēj(\ʼgŒ³ŒĶ–©Į[SAYLeÕČ-Į­éŽ—ņĀ«µžčĒzĶĒ“å!9ĆzóW¬ć1/œ¬RI'š#d®ŹŒŪø®aŽOćV-‚¤“²Ō”øE?投=.˜ē¹Yœ²éW[>d•2r8«ŗ^‚·Ÿ(õ$WQ7ŪęG5–Õ<ÕØ“¢š‡ū,€\ŌĪ®›šR¦ÓųL› Z«€.Uķ’׫—ž±‰F$RŲčjÜńŻF…mķćŽrk:ā=m°Ę0ō©ŠoVĶ'[N[ µ²†ŽOŻÄŸā«om4™U] óņ* !pd+*Õ%źźHäB`QćSš».¦NMlE~·VŠmĢ tąÕ}6{öˆģ…rF2ąU›dÕd_šK`$y«p$‘ę8u!r*ݬgi7s’ß\žū™¦zŠ°ŃŻYÜsrĢ9Źņ+„Ic9c‚9Āö©“ė­"[–I¦““ÉļS&­vЇ3i&Šš^»¬sE":˜śŌłŽź@c³ˆńԌ¹zŚ|L (ĆJƈ,-&Š(vR“WŠœ­&VÕ,ļVbŠŻõ²ēµÕÄ< }ø­żÅ%֞9e‰Ē¢W ŖjvÓČR=JtPx܇­ŠQ¹ĖVŹ|¶æ™õ…ÅÄ̳ÅlõČŖ2i¢Ż—ќć–8«b]14·RK!ī *jZTq…‘%äęŖR¾EhõņĘĘöVŪ ŠfnŁĶkŸėĮ$±Ž…±YÖZŽŽ²āåGģV¶ķ5åņˆŽeƒX·m"kuvŠ©„jŃG¾k˜Uæŗ®M ¢É±f õ©gÖ"Ü Ń±Ļ݊“LÕlwäę,~5oŻWfpnNĖbց£źLĖ)O«kBöĪę Īżø8Į©"Ö¬ņ¢)qüM‚*oķ ńü±ļ\ŌÅßvk{;r’é]JLÓŗć³¹k¬ ­•Ėß’ÆXwz•ŚG‹{Y#o\`U5×õtłVcžK7zj ¾°Ū=ŠŚ«ļ62ŖcŸ3«gö”f[u±UĒ?…y<¾ ÖfRÆ LqüOT®5IS,ŠŪ©žé„ģ¤ĢÕEkÉ~'®Ix"vEbƒź=+-…ÓJf†ąģAĶpś>±'—‰% rĒ­]OŪćaIw’²8üźŌm£ڧvt©>·5זā2øśqQj‘ Ž0ėĻ­` ב·Aē†>„š|ŸŚķč™ńßp¤µ`Ō­t‰cń Ų3*i¢FĘŒżEMuWL  zdėXאēķ2DTvqŠ–ĆZ…„TfÉą€sÅ7N)óXnNQå“5.uķVož ’¤š”yyāŸ¾„éŒ~µŅY„“ÖāLaČéŽ*· ‚ d Ļ iĀWųHtTtw8 ū V{³ęLĄOĶ[%µÕŗ}ZHF8Śż’:ÕצrĶŁ<¬Œs‘šÅƒEI°K…fł°3Šu"¹˜RęŠ|±:¶ø’ŻJųŽsžŖ¤ƒR-“öźßĖ)Ē]õĢ]i7Ŗ„DŅ‚xUht½aH*ū{d“IĀĖRÕNgī­N²ćÄś„’”‚f*·zʽų…«G”•Žä‘‚1Ņ©;Rh™dņB’{Ö«Łévńɉ䀑ßŅ„Uć))ĪV«!5j*Įb Iź}+2ß]Õ·‡qĪzWWi„鎼MļÅ_“ÓtŲX+c”SęŗŌQ„Čä$×õ×P ȟAŠ"¾ŌeC›©±żźļn4m1āŹJ¤ĪŖi @[÷ČæFķI­7$\“G sgq9Ż"Čģ{’ičó7ŽBæzEžˆcCę»·§#„L–‘‡ š;üCŠvęEF XątĶ :Ļ5¦ÖQ¦97uŹ ė.ķģ”÷q\#ļæ•fÜNŹ CģpK)ėBŠ:šŁ~FvŸfDy¶K¾:m5zŌb 4%æŽ^i°ź·–ī™š8Äqā–ļÄ牄¹‹ø@5@źßK›=³I0•”ÄG'å­›å”Ą m'¬ŖAÅrŗōNß»¼U8ćx­ =uĮžÉp§‚E ÉÜ%)rŪ”n@ʧu”j@ė4ŗz<ģw¤±Ę£¾XžŃŅ'‹Ū¼.{£+6ę+,a¼•A8Ć!|ə/i{3XŲۘ6ÉzŃ÷Ą9śÖMż¦žµÆåaŲ„"«OHĒŁēWfqā³žM^2@1“Ž8ĶZ’čKŒÓWnh-\ ö ¦‘į¶A»ķrJGQėOŠę½2m»·‚Dn eĮ­bŅÉ"-[d~¾Z“YĀjRå5’•8]³^Ż&»‡rŻ«©ŠuKŲķĄ¶³W£“É®IģŽC„`HąŽ•5„•ś0<Ź;`Ņ©M'aS”œlÖēg.ƬI•04gÆcŠ­sżĢ ¼–Ēź›HØōOķ˜€BģėŽ­kÅe¬ŹŹßeVQīF:JM|NÅĘ1K݉Ė\éwģq° ń“Q½†¢‰‚d郎•ŌŻĆ©$»Ž˜Å—ÜJæ”ÜĶ"qg* <·~µmö3“ę’‡<ź[k²ŪH•óš[{+GŹĄƒÜׯIig.J,*ąi֚cHß$PąŽ€ŠM·ŌtäāµGšĆe<) Żj½ö‘.šĻa6ņ:¦kÕī4Ól»Å¾sÜb¤ŠāŁ#ž×GMÅ6źJėCĖ,“¦lmūd źČHĶu>Ņ.”_2Øßˆ"ŗšĪŹ +ŠKg½I™b¢<}ńĘi;ZČŚ59uf%ü’ą%֕låsU-Ɵ$ f\ÄŁūń½uė„ĪKD±éĶJštqĮūø°1Ō¶i+ŚĢĘrIóD˓Ьīąą’= VŌ¼ŻŠO2ČĒ)éłWM£Ų)•D®ń†ąfB8­-FM3IF‘īcf€eęˆĖ^V*я'>ß×cƒ¶šÕŻŗwžOs!n-}Į]Ģ _4® Ēm¹£6i/ücn Ü,āfžpj„læ2aV÷ŻžCbš¤²2°†BŸQZöž¶PLÄŲ^āØxkĒš=ā‡Ł‘²ZŽ&½¹Ō`fÓÆP^DrŠĘ2n|²v7«NńČ š¾œT“¶ŲČz×J]ū||¹-Šåōł5ke -ĶĜ÷lŅ_CØĪĆeĪ£īNŽ•IūŚ•)._sS[ZŠ/b™ę““a€8ŖzZ‡+xY¶œīE7F‡U¶”³];ƒ’=N?lż¦x•XˆY˜šQ‡ųӟ4“hĪÓw+ŽYźlwA<ĶŽC/\T:u¶§q# »Łc€XcłVÄ:ž®é›SŠ`™­=>óRh ¼²†q܀©|Ū%%yœ~ÆįņѶėՑHū¹ēō¬‹-ĪĪė"āX¤Īsøšļ®®4ÉO˶ņ“ĄŚHūG·†Q ų—ƒłÓ“ŗålt#%8¶š\7vØDšĢqŽFåU5o Śł’̃ׄv–ŠÉ,Y¶³„Ó ©į‹R…ye¹O}¹Ø§RP5­†§%};¶š“x·‹qV\Uė_ Ū[«:DĮ\Ėßé^‡mLūb¬$.)÷PŪķV÷ćN£“ÕØØis„‡H°)ūį"“čjõƆl. ¹eėŸZč ½±ĮŽĶ¤'ų‹UØ-ķĮP –&õÅ­•‘Q”}9CĮÖ±)&Y"P3ĖbŖĮ§č¶n j‡pšōiģˆ|Ņ°ĒŻ'5‹u§&ć·Ićų°9„—Ż…J|‹ÜG:÷ŚT·Ł¦ Ǧī*„ŗŹ}՝ōÉlWPtØÉĆۈó‚ Ö¦‘į]>g Ķhr?爄:ъ&%7{œ§‡ī~Ó(ž`'ųŠō=GŽęŲ¶e·SĮÜsڬŲxfŚŚTx§ćj ®’ŽŒQr:œäWŖĶ½6;—³Š³8«ß Zn½¾€Ó¬“H퉔_±P9ElxŖł¬­XąCŽNęĻxzžjGóåX@ķ8®™_ŁóMčrÅEĖ’šW(ų¤ĮqĒöåUXüŖŸ†a·I–$Ōü¢8+$}«Š“č%|Ě3³œ“XŽ.·šĶĻöx³ĮĮŒkķ“KiMq~ r6f«izę·)*é̇ŖØŠ[¹DĢ TsÉÉ'üŠp„āœdS«>h/ĄÜ…<6Ń©:ģHG ö«h~¼^ūöpĮp3ō®y ‘£-²×cœš½£Ž )ˆ˜z)Åe(¶½ĶĶa$ēkz„:%“v˜“–ŽLłh>lśŌš64—nĢJƒŗœdW6¾āä!d'Øä֕¦»<`'ŗ\ńó ćņ¬„J|¼„B½;óæųi©XKD†?‹“ŠĻyo–?/ɃĢĒØ“æéF³_MÄu+€kĬ’Üī³ÕlóŃA<ÕR¦ö’·©¤Ó½ļ~ĘüqźG‰¬ @Fw›5ģ™0ĆnHĉ‘\-ę£ā"ą&”lŖ=ēėV-u/,D%ż żģbµä}ī';ģ¬MÆ>”orEÅ­°żŌˆó[¾Ó§µT›K…eS5Ęx„kWhYī'ČąĘ+™oˆZš«^\ȇīīćõ­§I8œ°«8K‘«ÜõŻ]mķćgXl-Šó–”u¬»=nĀ+ß]Y½6°ęø”ąŪ»˜žY›¾<ĆÖ¶toCŻ$e’Ž\Ɀ»k›Ār¾ß‰ŻCØéq ÷āÜ0į’E¬ķV 4ŽŚ„Õϱ|ÖDś‘޲yŒ|€ŅYŦĀ|“Ņn÷Ž3³#Fœ—] —½/wFlč¶~7Āv°ī«b >)v‹œ(é•Ęk2 iÜD8EŠf«¤ż¢Üm©’dqE‘NSŽĒKgmb|7aXŽp9ŖšŖHB’¦Ļµzb<ó\%֑Ø@ķ£æB=I5™£ā[CŌŃ捡ąž5Q”(«ŻŖ©[•;z‹owałWoq6GĘ@ĻćWķķķ䄿@ Ü?Q\U‡‰¤yWķ Į`FJ’A®ŪAžŪS åŪ\X;vq8¬IEźm J¤}>Cb‰-ĪJøżE ®ŪŪÄ0¹Ī>ž1]A²1DDƒĪPk:ēNÓ.˜«@‘°ÉAMNųŠJS“dPµÕ–WŚędr>ė:‘Rjŗä°Dk9nP˜®3Jś-¼Q‰Hą6ÜT;¤³m‹›<`®ETaj‰«=9:ś\4oh‘ŹV{MBŲ7Vµ¹į†—+q$ŠĒ«ÄGéU­¬„¼CYSŌģĄ­ /MÓ…Ļ’mķüī8>µ”ڶīęōT¶‘­dŚŌ»ņ›Ž2øžtčl좸WŠécńµ€³|Gl¶Vī|ˆÓ üŖŲÄ\jqGåž |ŖXā¢åĖu# T“³=}'ÓŹ÷QJŻ3»=«S·°ŗøŚ‰jF7oŁœ×iz΃{§»ŌL‡“˜H£?ˆt÷‰~Ć%ÕĮQČŁŚ—/+µĶ„ŗkWżyf„nZ³Å tcĀ°Šźæj öBSf­ųwÅZlęāĖQWž÷••üjĖx€^Ž¢M CŲU…O?$yZÓĢΦ›l­=Ž£"ÅŗmŹ.vļ_ė]'†"»q›lXą ŠŽŹÖk®n-Ń@ÜP±ēń=kŖŅć²ŽĻhdW=rA®yŌ••ĪČBZ¶ŹB'ß¹eŽÄpXē4ŌMQnl ©8āµ¾Ńl0ÄšHĖ£z ›[ȋބMķaĘ1ŠŠ·ö60ĘgX‹ÄÖ4ée$sĄ!' ĻÕįńÜįę‘ČMĖĶr:Ö©āT]ŸŁ-&8%„¶§K_ˆĀ­NešŲģ,ģ4Ų¬÷HOŻŻ“[0Cl€X"±Õcė^Akq­I1‘47ē%„ø"µ4ŪĖ0YRęĶsŚ\žTēO¼ŒÕY[ŻVūŽ÷\³æ™¬?ŻąŅiŗ*ŚÅęIzÄó“ɐ? ‹Āö·ÅüĘŗŗ“?¼¦ų•õĘb¶ž{Ä ÅJr~źz;E_©oVø- fįNVVfŖG•šóJņqČóyÅs×ÕÆåßrd~rUŽ( ČĖX-ŌžņN?*ŁĀ’®DeU>głž‡¢jŠå.cgf?ÖÆ3Āßź. ¦=1\/‡4“r’ż˜ ąŠčd·¼†ōVˆŠy®5NņѝsعnŃ6ŖmĀ‘&Øöē5ƒ¬]ÅklĢ·ļåĻ5—ć95˜#ó$Ņ`ø$c( ®"āļViŪγeØAĘ+Š„BŹģņŖā$åŹ‘×Éā[…„Ó-o#';1ƒ­XŃué.å‘SD¶µa·08®ĆŚĪ• wk-¬‡ų™K ŌŗšŅō’ ÜĪ1”f‡ŹŻ¾y~!/.5SzRŅk(°r7FO4ļµų¶)rŚĢjųĪŲįLžµ‹Ŗč:Ć;“%˜Ł,Er—‡R;uL`įø«wRZ£÷ 1Õ ’’¾ŗ§$š9+ĶD2­æ‡ĄN›„|WI`X¦ZÉ̘É ŖšŽÆib˜H®ī[8ČM-…ķŽ„"µø‰Ē@;ŃQ4ł­b”+®]YjpU3u’+~Qżk ī †÷ʆPOŽ’JŪ¶Ņõ ¤+qmŠČä ž56£awŗƒo„Ÿ¦KS„•ģÕɚš[ŁzšŅīęß÷w« ,ETŅt[˜Æ]īo<Ązģrx­=:āę7›{TpŪNj z]d°·K'ļ łmĀŹV¹Æį‹ JŪt‘³”ą3å.¼/g ŽI»žŻŒ$ĶŅŗ;MY-ć1Ķ{;K葑š£y=åĄĀŁ$‘LHÅix|nČē©SiÓWō8ķkį­”ssÉyœ¼­ÓóØģ<¬G(c;¤¾/ކY“Ø"AĘT’3]Gƒļeh@¼’ŃŸĘ ŸŹŠµ§Ż®dčBRÓO#7B·²Eil¾jŒoĮó«ZēƒōfŁ¢-H9GŠ\8ük­·°±»gņ.X;®žÕƒ«i:¾œ$’Äéӌć.‡5ĶM¦ī„fvJń§Ļ1o\Zꆫ^5¾ć˜ēÄ¢Øx“FžĘ`ŚlM0ä4hђ ļ¢Ņ|cwqē˜l‘1Żń5³‰ÆM ĀU¢“…%1ŸÆ5³«Ė£9½Œ¦¶kÓC€šĻŽ7¬Ģ zæƒĘ¦Š“{øHŽīāyų·+©XCi ģ?æē\“pnńV;!ļ¶Ī~mrŚ%dŗ°»Ü?»ż*õ –;Mb5–V$~µ««Üź) Ū¢éąŒ¼§?^+:Åī¢O2{{[xˆŻ–˜b«—Ŗ3S׎b[Ćd\½“Z„ŅĻ™)ü+IVņP+5¾p*µ‡‰t8C½³ió‚¾`¦ZėńKs²?.=Ż6š–ö\$ģĪŖŽ3ŽüIc$0[‘ÓnM]š„nj.E*^«5o]/‰dBś~©a$mĪp՛6“āɓĢm^xORŖŠ©5$®ŠS‹„­ŹžléL--¢­ŌJd{ ę³5 {[@ŅÅČ}R65‘gµot‰qØßČ£’|Æš®ŸĆwI3'žõŗœ²cłÖ1ƒŽÆTlē϶†VŖ[Ė?—=šˆc¬‰ŒÕ‹OAޤ‚2¼V¾”¦é7P¶ųī%~œ…ŖözO‡4ŠÆ4 Ģßt8„~°E7m±ž£N˜&å×wOœóWdŃļ¾ĖŗŽį6ć äęoRŠžE‚ā·uł ‚?:¹„Ļ›©<š°ĄóFįCęI?Š!É+’™Źźžń5Śm“Ֆ܎vģēó¬™4/ićy½øŗ”p— õÆXūuŠ#¾µb» ĶV¹žČ¼!e¼Wŗ$ĄŖX™5ŖÓЇ‡§uėźyµ½§Ž.mŽ;™ģa¶$ŹĆĀÆh–QépÆŚµ°Ņ÷!lŠōtÄņöÅ,f1ü"U?Ö šŹŲNŖÖVrŗ ¤ėó.V­č *Ó=NćR #„ŽYw +³·ėŠå5żQŌ.Ho…žNv‚kÜ[LµHĢ‘År‘€¬œV¤ś¶Y-­ü:Ä/»;æiO$ļ:˜j{Twgč> ¾žėmŽ1)Ą#ńÆEšo„ō½,«Fń(“Ö^„/‰§¹1ghķ“œĆ Słę»Ż^Śéā=NŅŻ /\{xĒ­gZMüZ›Pä‡Ć§ČŃK•ŁoG`$ ‹ÄēČ-ēŹ«·%•5Ÿ¤wšŗ²KrŠŁČW#mtÉk$bSq27÷ZēsŒeŹ·:“4=¹„ß“[=ü-É,Ēugk>Ńõ+cåG©Xšz?ükŌõK[+@²LdɳĒåIcp—QbŚpńÆŒÓxŠ«X°téĖIjx%×ĀkIŪ­_A&r6Ę˜©|=ąMZŹäy:õōŃēī±Ą?zĘOˆ~𠱛ėÉiBvwƽ|ń§öĮ½ÜŚųZ+htÄm±\ȼ²ś×jyƞoO?Šąö”]EF”nüŗzųGĀ—Āö9¤™ƒ/9Jō3bņŪyL z0žUń'ģķūSxBoŪĖāŻbKkŲ’tÉÜ_ß¾°ųqćŸx³EMOEÕ성~®óŁ?ŽšņeWžĪZzžæ³t¢āÉõÆA<Že¶£$9ä”PĄÖEļƒ!øa ¼Žf歇™æq±sœü(Ó§šRÅ»žÕWx.”w‚Nx©a°©õ²kC¾’wŃå,”üßĆõ¬Ø”øv2M+0nyõ­U!’bŹ;Óo£+č؈ĄČéĶDWB¦–ģ©å¢±#¶ö4]¤ĻmĖ09§BSqĆ6O?ŪŅÓå`R³ŅvFw’Źrۃ0äĻBFf#-œzWJąĪ†Uēqҳ®ˆYŻėƒĪ;šøÉō"¤z¬ķQ 09É«qY¹‹x;GsÓ4B|ÉQ2Ą½MNäł`Hņ"©ĮŸŹÆ¹2VD6ĘŌäĢ1ӁH‰l& Ŗn‚;Óc·ISco( SxęY7øŚ9ĮĻҾ‚„åXĢ­)<*š=éšs\%Ł#8 ō銛ĆöFTXe½{×CQŪÄĢSęAĪ1ÅetŸ,M•嬙Čjēi-Ÿ›'µJī±[™:¾ōż^é®u Gp=é +X ųV^µSŗ^óÉIh‚7%ā8aĘy횷*Ha‘ÉŻŒÕ¦”LbٹN9&­jN¦Ō,æ(ƾõƒŗhŅKKœó’äķ=xĪjĶ”E&%ŽPŒHĄ^Å[B¾HbB¹PšL¤‘€kļR–xŹĶ“Ž? Ė•¦ĒĢr:ē5rŽø-’qŠŁÅEY “©=¶ł›Žy9­M2åmĮ\3ėUÄŌS»vsЉ™X$ZS3r³²-^Ž<‡h c#8¤·8Gwn:zU&į `sڤ@†,30ķE”Uƒ™²{H ¾ńĄ=3Å.©2¼€((<šŽ)™UDr3ųŅO½Õ¤`ܜ)8Å>YK[…ŽĶnæ½ŚĮHĪ :)Śc<Š«=ÅŅґ„{xQLdņœAćm7ę )kFIs¾E±Ži·@m|§B ¦ę`M6Søü½Ī*'-,j•Ž„h›Ė H[Žr:Uw¾Š$o5ÉV'hō÷§źĄłw ƒX3üØqžŖr3©Ź“F“å ! œ}*Ā\”³+)b?вt„œ« ‚*¦±r"ˆĘ¬ŒŠ““vB¾žńŅi’Kö}ć›­7T²¹»’?c² źkŒƒQøˆ©IÜw­«mxI ?*·Q q—ŗzb¶vģĻ*JG'ÅAsqö‹Įeü¼uķU|Uįó–Uxeä‡9É­yš(.K¤`nķŲVÉČ锝­Š‚Ź9 4jŖĮnõk‰uFŽp†28¬ŻNäČrÅN¼ÖkjIo1Qņąd7­'יœ$īuZõME 2ā'#<Óµ°«nŠĮ–ŗ ĶŠ ēō]MļīM“rnÉī8Åt¶åRBB‡–!ÉĪEO7*³'›¹‹ ¼P$2Č¢CĖŲV­©-˜Ā8Ēz”<(×ĪļµŪœUA!„0 ²ēŒŠć}KMEhkjĖn–ŹÉ&āćĻO­SŽécŚ£ „%€Ķ‰–(puÅcÜIž’ČøĆķIEEr—Łs4mėWvę °ļ±ĒS\ģƒ÷¤ī'qČ=jc T rÜńš‚m¬ŁÜ9ēÖņ± ŽDrD` äuoZ’;’mųfł)0eUŖć$ ŸŹ¢ĄqǦi]-J”}҉•›’̤óœÖ„ę@6 ģœrjČ ‹c)n˜<÷Ŗ·sH&Õ(Žpw¤ķ-…uY§ó–ęBT “ĄĻ²yņĀ”¶žFGp).¤Ūœ·_—nyŖ°ßHÓģ|øäœÖ4&nĪę”ŒAČ\j[(\ĖB>LžzU[8ܰ B‡#œš+fŚ$V‘Uš§©’ ĪMķpi­JŃƒĶw;wČõö©ü8CźEß;cR÷'ޔٛ˔Ž<°SĶnčŚ4ėnąLƒ=qŌTÉĘ1ŌøFwæC ļĆźM\;wV÷†ćžvc+±P8,kJĆĆvP”‘ŻžFł¹Ö®Ś[E¹eŻ“šwzęsRŃ-Øi̱äĆjžB»¼ē±Ŗ:b#™¼Åg/ȵE ø7i"3Ū5”°„žĮ–r9ĒZ$ŽĘ‘rvEkŁŅ(cDįĮPøŖnŃŹą[ØR.ŻéĻm‚ 1ažEM§ˆāœˆ•TēŻM8®½MMr²µ¹0ŪĖ+ČX“VmķāĶ;!3µÉ©5{–“Z0OFć8®wXøw²sœœóCm½Q”,ådh\H“JÉ+=ižcCm²1‚ŻHō¬ż9‚;dpq[šH‰D˜@ÉTĖWc”J+r]ˉ¤RK}Šʙ«;©hXķbÜ`ńŠ×ń%ĢgIˆZÆĻ €Tw®išYeFĎ­Tcmd9ŚOŻ”R96`œą±­M*R–Ŗīę08ÅU“€=ĮF|(@wåSx†4[ ØC7ēµDŻ™1‹QnįŖ=¼Ź<·É’MgI»pFl”ä šMS…$Ž6`8$t£Õēf±(£k©Į=śS„R|©‰ĪR²zvśœ jmāeiŹÅOJŠõ`XœtĪy&²<+«1–27t#ŠžāPš«rHQ[8„¤HŒšk˜Æņl¦šAļZZLīר©Ļ€1éPˆäøø ˆGČÉmõxČbą×;Kfk²mźtš[āåŻĒ#¾zQvEĖ2‚rļR>§ŅŒb>sĮh’iÓĄ%Ė0ČķSf•Ń.+ Z¼‚H˜• N tJ$Z1ņĻAŠÄ¶M‘æ˜2¦=kbÉf GC1ÜćŲRŲ“W÷Q„qufņy@ œu?Zʼnd¹•#vXcŸĀØYÜŃŚņŲŽ—R“Y‹„Õă³(<ÓcŌ„²|’±oRÄVh¼Ó#]Ėģ£5„„»Ū‰£pĒØsZ(®ä§ŗ–WY»¶6 :śļÅA/ŠēFłģ1Nj½ö ,ČżŁ“Ž™@ų†Õ˜«iᇫ>ht’Ō‡Y¾¦Œ¾*ÄWÉŁž8ā³Ņ[idß±÷g9ĶRŗ½“vĢp¤^ʝõŖĘw)9ć"©ķdɌc{½Ķ+Ėō}ŠĆ§5™ļ4[Ō`TŃ>|ŗÉ“ć„ Ŗ±’KpqÓ9t²*Éjī6I!FĆ;U[–Mß»ŪZ’ż†5ƃ#qĪ)m¤°a÷SńZ~¦\­čŒ¦ŽŚeQ,o‘Żzš³ge§É3MĀ“¤[9P灃ƒGöt[AĢ‹øg‡ØŃ—eƒ Óķ•·F£yf4“†`ÓsŌ§ŪŁ¢.QåČžńĶ]‚Ż2æ+1ö«IuC•K+\Žę÷JEłmŻøēpŖßŚZxpĪ3ž™®’ŽŹ$f͜žsŠT°¶;÷Ą¢źĀQ“wLÉÓ®įš\&œ£=Į­lĪTy6Å8ć Z–°¬vā GØfM>łUZ7B€ufĶJ}nT”mg£õ9;Ł5…b¢ ™}jœpꮤˆ]3Ō•ÆA‚ŪāUŽżČlTWZBŸ¾F%xĀČI”¹Ż6p §j3Ėåłī¹ć­<-tŃ©–å¶žzęŗ u]6Vh­f yÜīk?EöĆŹį3ŒØŖ|ü·±œjÓräZžGEį?Į’Æ0'%»ÖĶ֝„Ś[f{„°W!}ā->E o4±7rF+6āöāā"¢ö)“° TGG«4©)Ź6‚µŽŚĪk&ó Ċ9ĖҟÄV“[”y­”#Ī+Ģbŗ¹…2‚¾Ŗ1R³YI™øną­W»{æČži8ņ§÷F­}fwÜärTŠĄŠ{u¼Yš”Iźk)ī“…›åYƒgøā®ŪĻœBģ8ō"ŖU;™Sv~×S”‹\nVŽ4€•r““ųƒ\"żœē”Q“Ö÷Y±×-¾© Ź \q…4F !:’n×-ߎxŠąoYąw梶Ō|E€„ߊ³Æi啌H­B).õ40“ömķŠ3CŠz䢬^MKĒŖį ÄS—QÕSž>-•‚ó•lVw/Č¾YöbsWķęvČҜõꝭ¢mkkĘĖuć‘NŽ %)ytŽ{°Ęi–W–šČ<ĄÆ‚¬i׌žœTłqÄÓ4&öK-QbŚßLŽ?Žź1Ęš’3C F*ŽNG?żu‰q}„ńŗÜ1=NA©ōū«3mmÓ¤¢ŗ‰Tœ¶Eļ³iķ)UžVprV¬ŪĢ,ćqo&vÆB٬ƙdYĮ=ŠfØÜY,īKˆūŲ"’³”’|ØŃø×5—wŁc£š·e⛆Rd°°ž zV8Ņęa“]–Ē÷—š½¦é—(ą ®1žsI«źŹ„)8r“¶„w;ļ‚bOAӊ%—V• ¼Ņ`v ?>+fß@ó# Ģ‘1Ą5LŃ$…Ę˲¹ēÓrob”N1V“±Č¤®Ź­„ćÅOw£ŻyGuƚ§§5ßZŁC‚·7$c”SĶ[··‚5!f’QŪu6īe.[XńĖsÖ3GŪ֟„h»®°ę<Jö—šŪĖņŒ{Ÿn21ŒÕ-c—÷°Ę3õõ„9i±tØ„fö<’CšĶфuہ)ÅhK”ŽDUĖrŻ6dń^/Ł„_»„ó×mP»¶bŪ£’x~4B1µŲēRiŚ+COšżĢQoßädļ4ł4{†‹|PA9ķŽ3]5ŒwÄV•ĮKu­SbĻiņ¾\¬3š˜ŌiŁ=c{žqi¦j‚v'KG^į\V•¶vó"kpƁ‘Åuii%””ć¹yŲō žUyoīXm{'b7(Ēó¦ļÜĪ2MY«³‡}ÖVv—Ģnćf?Z|k Ć3@‹ÓŽ»‰^u‹rEÉź¼f‘%·Ų –RG'©N &ćnę©JÖlĆ?³ hfŠGģž QæÕüCµ¼£®všė†é#żŌ*sź”±ŪĻįłOP£šQ“w9źBR•Óv8ŪOź\G%…®ü`䑳V’źitžEꚀI˜>+vāÓ ˜ Į=Łó¬«ķ2īYaĄć§–śÜŃrĘVÉ“½.D;pXŠÕCU’ėKMŚ}’Ē,z}+f MBŅ PąwĘŚ.µ ”$ŅĢńž¬ŖOŗø;ÉY;#kŽv×±·)ӎµ££j–——oąx p02?±©Oeæä·n{¼'śÕh˜Ķ*ÆŚ-1ž6Žj¤½Ó5Ź„ļ#®Ģvöń.’ÖB½ŸŠĆŗÕµ’?gŲądéņĶEŖXJÖ [ߤn:ÄÖEŖųа[PE ÓŠ}Ū½IRœ§kčt uŖÜl%CŒü €Ķ­\”ēZ€:l«ö7’¦ĖBU8ūŹ;ŌWPouõԃ¦YńYĘWњT§Ė”‰©EŖØi§œĘ :w¼•g‰ˆä³õė^ßJ7 L&ń™xi£G¾’M¢;ģŽĖÅ^›\ÉQoŌĄmN‚ńSķĶ‚Üż««Óō+ÉżĶѹĻn¼zU3ĮóĖó\;y!” étÆ ŪŲÆ˜Ÿh ńņ Ö3“nš;)„Ś£8{&Āƒ¾ÖDąf>*ž•;"‰Õ½Tm®’N6ÄłSĮ{&2öügėZ1xoL»‘&F~øČŖuRVh!‡”½äīqšv–³®å»‘XpÜążkVŅĪņĪ/¼%»]F™ąx!—ĢŽkžy±­Ėma‰„ŠLķg5Ķ‘u¤½®D(03÷¹55"Ųk÷žū‘J($0’ dŽę³n-oŻŹ¼p„õ®„ė=¶CĪW5FūZšüĻņŻø`0G–iB¤¶hQ·ÅJ–zt‘Ų‰óŖx­+]:ąG·Ū¬Ń©[¬dŚĆ5Ī~ī8ĶfżÆYŗ»Ś¶W0ßĢĘ*¹šVø8]ūŖžGTö’®åˆ‚@ćuEeiu4ģ²Ķ AG@¹Ķd®Ÿ{,yø¹ø·Œ¬Ų5%¶™a}Vų<8‘š¹tdCŸŸŽŠÓ{HՊ™ūóR6”Ä+E½IĄ1‘Wō9tß$„½Ś\8łŗÕ÷¹Ć.Õ ŽøĪē-ŽÆgµ·ädC„ʱ”ųš²¦Ņ.ÅĖIö©Ē!^ŗ»é.'@!€¦9$8¬«£©ˆš5ņˆ?Ż8­!Q¢j%½Ž7Ė;mŪĶŽKŽ=kĻõūĶnٌVdVŃ’{9lz׫ßCl\KvŒF6ƒ€~ø©4ļ Gp¢E…ĪzĶuŗńг<å…r|×hņæ ėµ³ī¼ūQF$ ‚kŖ[»MF1¹Ž)čÜō+?Źą F1ź3OŌ<#h-Ūu¼¹!8ss'©ŪR”œRjėī<Ł<3 ®6Ģa=™\óSÜxfżp#ŌŽ?ß®ĒIŃ yQ$ƒbHÅ_žĄ¹7xY„gØ5·Ö,ģŁ›„ī„cƒ¶Š|C_³ź;“9"DĶtQųQīō×·F)ېbl]¶›„ꈁ7@ėŲÕétŪĒR Ā¬FŅ+¬Żó'cW†§ø8Üš/|:ÕYOÕf*rÄ1ē>ŌžšÆŠķæy.”;Øą,‡#é^Źś^”ēšČēpĘ±Æ”Qš0ʶ­‰ö‘Qfpj›ŗ8Ė]"o·œ:ąˆćšŽ/ éŅLM¹¼'×I\sŅ“mm„Śsb-ŒŸŽv¬½ŗ^ź:c­#Ó<;k žöI@ē&“a³Ņ’aL„É%jÖ±¤$ŲžhŽ9&CNŅ<6–ä<“mĒ«®xÅ]‘Kž^H¹„ %GJ§vŚu¤D».įČĖ ×Qi5¢Ä°I%¹Eć¹&²µ=DščŹÓĘFs“ÄqQ «ķRw…ŒM3S¶žb‘FČ”āµ2ąĮ|¶łG&­'öU° Q0Q‘µvĘ¬X_[Éqˆ­a½Cf”œŅÓc:\’–¢é:F¤$qŖ“Ńć•xTd~=ʘe!Ū61ÅMā&¼ŸO mtm²¤ É®&÷HՍ»ķŌ§–P2 T҃zɕV|®Š‹±ŪiņN®ĄłJøč©j3A9wÕ<żŻœWžjZwŒ!„ģź óY1hš®£r©}wvĒw$ęŗcMFüĻī1ē•Fœc÷žĶ¤ź\ā3u¼rĻ“V‰‹KgŚ’dvŠk€š×ƒķ-£S%į,Fyęŗ8t "뱘2ń˜˜×¤ÆdģzJ<‘Eßéšxµ,‹ · …k‹‡T»²øtXføEo€õÜIb¶š²;pß5`Žźŗ•¦äĘTä`ńŸŅŗ)„Ėg©É95+§oC•×|Uā·e•¤6čƝą“X^ńāɖȝ€NµŚÜßj³e—O€ś„WŌ äķ °9ź Ķo(“s8É7;»œõ—‹¼TĖšĀŚ@rŲā“m5Ÿ_ŚĖj91¾ėY÷¶×OŚ2æR+TE?čā5žZ)2OųU:QKC8Ō¼½äzę“’ 晶唄ķąÄŲ®ZīŪ[“ŌZhÄw'8 ±¬-UŌōžL³øĘsÅoi~:µ·`·¶7]yŹ£4œynŽ©J•ŌļfkčŽ"¾‹żI@Ā”#©6¹¢ÜĮ¶] Ć.:InGėTW]šę«ņƚŅfē†ż*&Óб[Öø\äō½=-£ł—ķ&ōN’qŖŗķœßg}ŽXˆ0ĒJžĆ\Šķ ĢZlP9ļ³&¹‰”ŁņŖ±$u$óLHui5¬ §\ž½\Ø$®Ų}fnZ\ß×5iõsƒ“ Ć¢ łV.„jöSo*ņrXZŠÓfÖ`Œ4ŚsŁ‚ V­µŽ³q* „wtĶ&ę£Ė²)®~k·/Q¤ė*Ąy3” Ó` U­śõn‡™jąÆb Wl×ThÕ®TsÜb„·‚9f1ĪõźÜÖ/į³Ō٦šhÖ]F9”Ł=ŒŹ}QEU·‰Åā†īńųžuN]*āÆÜ^Ø.~éb9­m:ĻPUŁq=”WźwóQŁhĖG-zÜŁÉ4*ēÄÓY É*ņ)ńĆn±ƒ&°×™ ŒU[Æ é³]–ø’9ōĀäTšųVÉc"<„­Lœcev9FZ»!—k˜Č(1Ķ`Żų”Q¶6›+63»µēšźqj¦ŻGšHIżj)|ŖZćQŽOt—łÖĪtŅJG4i;dō °Ö`’1ē\5Øa»œńZ¶ž!Ņķ- &¦—OŒ _ŠÕ]'Įšx[ݬ³ƒŒK15³ią™9,¤`€¹¬„:IƳVZyœÕĒ3¬²ČqĮBE¤ųČ#mø·’)ä;njW[?‚“Čcł-•fĻ8ā¬Xų2Īā"^I!lc A514-¢°SĀÕRIɲ¦©Ix‚F6Ó+t ©_Gŗß$” žėęü uV ²€m’ńŌ.+FZÅå{+%ŠM®XWŗ’3“Óõ8o%Õų€ŅBx>•„mi§Lī¢äÜ t1ćkQ³±Š@²żœ©ć÷ƃš½¤Yé‰ųŽ%$rc:r¬’ŗ¹*’’³±Ī\iŚT.H¶[‚8 Ø&™z^]ęŪ’?:ź5I“ų°†6‘‰ź«ŸŌU{+?9ókØÉn:˜ÉķUķ#kŹęq§7/rÖō9»ėKkØ|øÖę0xÉ5M<34lŻēbę&½&+[$Uó$ypN:ż*=F{8įŚ“XYœž²ž ĄūŁ6tĆHsŠ«i¾ÅKŚ€ćå8}Ł®Zł,VāNGF݃S}Žš 6z”įU Z:‘zlM:Ow©„ÖWw1·§B„uĻ\Ö^””_OnĮBį•ń]zŚųˆ¹E– €}ę#5Ƭłl’][8ķ„éłŃ Š2ÜSĆŻY/ÄįōM'X±¤ZĖ “·Ķ$U«’ ėļ½ļ'¶zVōńMn„„»”•äŒc4¶š¼Ęā唌įO¶•Y7ĶČĪ4S\•?3‡Õü9®iįeµŲEėŠf¶¼/>„ƘśĢ”Ī@]«ż)Ÿ#ŽžļŖ^EņĘB×6™p·Õ'pFąŠ%T‚mźróĪ „Ö4ūVįQäŽ; ŸÄÜf”Ō.m#P€ŪdõŠ"Ćó®+ĀSjZdjļ©2Ū0Īén6^—”_Ūjv‚ŽMJ× |åN:ę—57åås¶D—_‘{Āóé¦=ÖĖēnē%„uq}–X—|Q(Ēek/EŅ,¢"tw^čĆś Ł‚D†"°ÄŽNźä•äķ½rĀ:œĻ‰žĮk™]ÄJæ1(›åXŚ“9'6šźG*w’ŁÓ5Ü=Ō2gH€ļ€ Qžę"†9:īŚµŖ’jŅNę1…Ō“0®nn§¼חr[p‹Ēņ­„{Įˆ®'2ŹŹĆ®=«_K’ŠĢ°¬‘Iņē–*}Kū2Ż !óq‘–łŌĪr‘RŒTuŲĄLGĢ;9Ą5jÖ×̌§™'#Æ5L{iÉpšmŗ1Ā–‘ʧ7Zlm¶X)ĪYCYūil8Ę6²µŽ;\šÕńs=©R1üJ*(īuĖ=0DŗU”u#?…z4wŅŲü·6Ą€L sł×+ā=rĀĢ„7bb¼0³ŠÖ'QņĪ72©ÉM{²²<ėYń°ŚŁu nmĻ$Ēji÷śpia«ZOš4ƒœÕóćO %Ī×ūe“łĮ’h¾AVõ^Ź[dŸOÖl&qČ ")­›n|ÆO#øĘÉÜg„¬­®ÆZe}q&ź|ČHŃJ—I#CWq½‰Ķy¶æāo£ū=žš#c·łś’ \š’ˆīģnś”³–N„Ņf8ü©NO‰Y—N­'¦©#Ō“Qęõ"F8«÷šŹS}“ĘĎ>~ yÕ÷mo"ņķ.ōÆ7bsōę°5Ox½ģŻķ,£–0q›`1X¬-I.i?‘£ĘĆįŠgÆiöwŅD~Ü ŽVąl“4Ė­6[hĢ›ī¢;³_?Ü|Dń‚ā’HÕ:°Ž+sĀō{Ų<·æÕ,.㠁śUKRžÆaC i³=/PæĖ>Ņģ*ń’øĶg^jZYŒ„Ο{,MĮUQĶdmõ4ó?“nn£ž—ō4²Ķ¤[[āīK€‹Ć;V‰FÉĒ_B]gŖ“FdžŁźŸ ¢ŽeŽl0+ĻīöŒŅÆé&É”'&łŅ45?A[–wŃĀŹ92Hj³é’\ā;=f(.ƒśÖžµ§i²[Éöm>ŚYŁx%?śõ‡įŻś+Ö7Z|Q[· Ū‚i'Üjņ•Ÿüŧ‡^4_x’źfĒ܌T«a£Ēv²{‹¦^ąäĒ5nēG†K”\«ÄvɍnŁiؑĒäÉåŖń, ĪSO{›(µ«±‡Ø]éQFŠŗDžifl.k>övøX£—I™-œ’_ķY8śWgØi1KVīäĘC6Žæx‡ķ?ń'Eų[į’ķėŻ+¶Ä··uižŪsWF“jÖ¦5ń¦½„FzΈ4>1ŹėĘvł™4—śļ‡&œ Õ5k…č±)?Īæ2ž*žŲŗ‡öø“ĮZzŪĮеģc'šÆ4ńoķKńś %“¶»™pdŒ=Ą5¢ĄĀĪwdG^¬o nŽz®·¦Õ“łīdÖüŲ!FvIŲ“ ž+ćļ_¶†¼/ę“į­īēT‡r}¤Č5nAś×ē~µńCĒ7śĶĶ’‰õbņFĮ“Ļ`0zōśōÆ.ń ÷w&Gør[““Ö¶¦”©+ö’†j‰Y_—ŗė÷ž³ūDüOמ!ųĪćY×/džy ?,cŲWš+‰%!™€ĒZČÓŚCę:–xÓ¹©­.a7 ²+õ„Mjõ*ntį0ōčĒ– R÷˜ö÷"Kgq ·qW­|Sātx­õFŚ7ä¬s2ƒõÖ[8Y™cobOj†äa9šŽ£Ģ÷Wģ÷Ģē’ī䓳š«vsrĢ2§?2WŲ…³³<öĶ2 ¼ń“€BŒ†ļ[jõ2„c ±­¤LĀ Xü š*]zž5Qætź3‘T¬„ŁnT®6ó“Ö¹’L~ӀÄēę9=ź#Nņ¹½J׎…™uĄ¤eXśÖŽ–f«–&2:śšČŠī­į?æC ĒoZŠžÓ §—ōbFļ¢ )4¹™»|ā /å'{åĖśVA/)XŲƊĒ%»Ó›W‰G“°čMAĄ%ä©^£Ś„6•šDžØŠÓķķ£Ō’Ņ„cŽz“W±_)†Så?MŻ+4]ŹźT"€9¬ā’Ķppß'©”;üC‹åĪ¶Ö4’ĢlŲŹ28ŖŚ„ChTvlvōŖs‹xDß3 ąŌāą“±ÉŻĻZĪķ!ʬ_ŗ'–Qp!sķU>ķ±rćéRŽÄ&uĖŗ²sœŌ2ą Œ̧šŖ‹3WęŠrܲ@\Æ$šKr’M‚@väŌ7¬Ķ€"؍Ęć)Į5¢»VEĶŻÜŪ‹usžõ‡8=Ŗ„W<¤ČHŽ©éņ3ŻH9܇z֜m³4›Ī8éšnMhcļ]låŚ¤”QņņMRžä•ŽKƒĘÕ„Õ$DµżŠ`dõā“Ć|÷7©/(ł,iEŁ]” äłN—Kx¢¶‹`ėČk7342A ći S\¬!° Ą ėKmle˜#6Ön*œM§~SNÓ§vVw >ńē­>OŻM*7 ńœtō­­u…¼R*žvžsŗ“lIĪy$“łgkČ„h®XnZŃĢkŽŁ3/ JŽK#J‚"I8wØ­āT·cČv’hō­)1Z.ĶØŲĪą{Ön:܉·¤[0%†éīv$N œU˜-÷0I[n9mŻŖķ„Ģ’H^6;“©īk7_y`ŚĶ÷†qBO`KÜŠŽéƒ]NŌC„ķš³g r§ŹŲlėT'\Ē÷§BUbÜHÜ@õŖŃµ%Ō f‡*ä(ĪģœžUyj—†‘qļZR–’»¶€ õ5ƒ=ŪG!_sņūP®Mķ-IVĢD6³yōĶOlĄæČ ĒĪ3U’)_2oÉ#ę©";kŒ} UÓå+Y±g‘üĘ óÓ®)ŹŃ˜ŠĮĄü1UeC,”ŽF:Ō¢3"aFx§”œ$īM“ ’½Q]DźRü3š%ŹF+ µ[Ģ‘$ĖqŸ^ÕVMhW3D©!U*OĶėŠXF ķĒvŖlķ;و'¶x«PąÜ ŪqžMF®Ö„˜‘ž%źUyÜĒ­RÕē™-b|³6=\—nU˜ķ Mā- Č”[vt„f؜’"ŠIĢ`¶8ī:mÅŅļā®éVs<`7Ÿā)·öŖf2ŹÕ©š:œŗ"„s,„BnĮ??9Ø5KG03“sÉ­«kd@¾\AH’9«’Ył]™ĒjM““&1»Õ÷‡“¶šPĢĘ5°Ķiź¾·Cł™Ļbq‘]Ś -XŒäQlŅ;ó·`£ƒI9|W-Īå±Ć^xfƒ0Hį†@qYś>ƒvoĒ›,ķܦ½$ Cœ÷^•5ÓŪ%–Ōß¹NxčkE9=.L9S)Ce •˜¶·Rߞ~µ”p«h#PYŽcėWleµhŁ®Ž]øłQN9Ŗ7ŽJ’±”O<“Ÿ„BJ(š³Ō®ö’Ij’;$JēOƒ ®ęVļŽa®“øŃpjk &;d~ˆŽ)ĘLØĖ•n$0[ŚŁ‡“ūŻĒz³„Ē}2b Ŋ’ųéNžH ÄqŖK¦ ƒY6»¼€CH œdƒNĶčÉr_d“䏯“–ÅY’ȾcešG'½W·Ō2ļŒņ8÷ŖÖÉ+Žq†Ą=*y\veKk²õÅŌ­…ĪvŒ}iö°n‡ĶĻ=ÅF"Ū ĪI÷ķRŻÆī£*BXT_”PPH|·ąąJ©zU©Üz}j)Xć=[Š÷5Jå„nOŹAä։2$Ņeˆ§h¤;˜/¶+NĘEtbÄ®Fk>čUq’9Ļ­Y/˜€V#ŠSWčW<­ļø™ZsóåECwp’ʱgb/#os@‰Nņ½3Ö¢»¶fĄE9ĻQNÉh»Ųc[¼Œ?>†„ņGŒĘr}JŲÓģ§XŌ—v8Ü očŚNžnwG»Ž¢U£tćÜåķmäxCF:uõ®—NŅ$hPÜó®p¼“]5¦Ÿkmmå@ØĪsŒÕø!+_¼ėÜŹroį:¹ć±Ÿ ii>_Ėņõa‚GLV嵤jB‚ˆĻĪķPŲŪŹ±¤¹Usœńš§-ņh”ŠpTŸÖ³ŗ~ź2”å&“²6¦¶XņŅJƒŒ}ģqXŗœ¶īBÅó“w؞y®o˜°b«ß§]ŚHbłHE0sšøĖ[X"żŪĀźd8Ž#Īx«©p–ņį‘~qø62ƲnmļwB‘ts‚ŁĘEl[n²“f}“LFŠO8›ŃźĢ¤•ļ ķ=¦øŌœČ|Ø‰ą“ŒÕ«ų…½Ć…*ū×)ąV$‹,Z›fY_ęÉķųŌęuXäw>ńéŽj$­- Q“äĢ‘_R›Ź!FƒļY²Ć /ĢNösK/qs#""¦āNϵW»UŽqĮsTÓŠ„£ŃŚå­¶”‘(iUÕø»µ*»•$g8ö©“ų’ŚŁnY°3°Ńgq0ŗidˆ¬'•CéķJ)Žč„e$Čō±7ƒH犯e$ńŻŹ’rŹŲ ŌT7:ŒpĮ3G)wŽ¢§ÓXä–¢wµĶ»±&‡,ƒU>cIAŽ€Õ­}]-v#«’Üąö©tėlĪLc²}hŗ„yćrņē¬m¦¦źKdP±‘ą²u\åŲV=ÅÖ‘—s×ÖŗOŪŪA§2‡HÜ s’b¤ŒFū‹ą“žŌBĖVĢ£w&ŅŌ½dģÖåĄŚxb*¼—1Ē6J33œŌ—CdaL†ĄœVcÅ,Än}=kØš…ÄaoČSž½k*KhįŒęFÄ£‚:V¦™­¦› ĘŤ,K)8&…5{ ŁÉüCJĘ+›“3īܱ¶åƒ5„}czĻÄ ä†wČb+ ×Ph!d!|“Šź¼9āy.gx—ŹŠßʉTgęģiB÷µĘļ²Nē3©iz„•ņK<3|Ū€ć?‰õˆk{o7"4Eu>$¼¹¹³†BÓ[¦XƒŚ¼Ó^¶š[ՕAM­½É5)ĮµĪĖ…jœÜ­hwŚ]†ØY$W²„«16īMaµ¶‘¦ź×6öėēÉ7īÕĖvĻPkLi"ŽŅéŠ)9Į«>•WUIJ™›?8>”r¾÷EĪ«åI”u›FµœF\œ äā«™€<žjæŠ5)ÆµĘŠ(Ł»Ž)>ĢļŖ"ŚÜU “gš?™ { Š©}&’’¹,ś<×!F ‘–ćęę“&²Ó”³ó ŚĪą!WŚ*°½®|O+äsg7sŖB–› v:žµKL×¾Ė6ńnHĘ9­˜tÉęyÓ@ŗ\ciIżŖŅQŒ”&īMkāøĖ‚ Ādz*ūj¢öŗtPF0­Öؤ:<Ž>LԜUÖÓ4‰"ŲŽŠĒølT%g¹“ģćtµ)¼vˆÄ³Ļ“Ü*¤‹§–!Ÿ'ŻŖk$łw‡iąÕ:"-ŠI&F9ėŗ“•‘0ē–—±,k§”UŚ{ƒWķn“ōįr}žUpiŗu„žZ@Üc“X’M„Gt7…j"ļ¹5+åLŠ™įŗŹM!+#F@5µ£‹YĖ&9+ZšZG3ćĢĘ:–¬*é`œHć“9Žų8©mtˆ7aeeĻ@y®é4ū0›LéÓūÕ]ōŲ?‚č ņ*9£Ü͹'”‘¤ųyqø8*zńŠÕ‡ĆÖ§ įx©ķ£Óaaŗń¤aĘ ¦Žjz|_,sŲz÷©‰¬ė(Ēp}ĶĪ%¾jómŚF=+ŸŌ|I$w;"6wė7G‘v#ū§R‘œ*ó;ŚēlŚ=„$0}MXm:Ł”™Ccųˆ® Fź‘;ČOrŁ©āÕo^O9luĘL[Z—;ĖDwVz\H܈åō9­Dµ‰0́ĖҼĪIõ¹ŠˆÕ#Ļp{UĖ+½vĶČÜ­Ū‚iµÕ JOI„fX$ĖŚÆ¦śŽmQ_!lNØ5ĄĖŖjlĢY$V <DŌuŸ,ƒ҇n›™JrŚoO#¶¹žil“™tąT¶Ņ: Wܘ烚ądÕ®„yŁXt;ˆØ›\¹R s#“ĻĪsĶEŸsNhøŚĒe«Ü¦Ņ¹ļ\Ž£qrĶū„`1ŌÕā+„?¾Ž S€)fÖ­%’ŁŠ’³ŅµSI:OšĻR)ćŌ&;nątŖ2iĪŅ|ēgŠÕ‰/”$n$Vžė*Ō&ĮŽ<Å=łŌÓVM' čtĘ`Čź;žµ§k¤[²ad’"; Ēy£1‚›ŅR9B·—‘>RwQõĶG”ŗi«3­æg€Å,ĀTĘAŁ‚+ęL€+H¹ėžōĖ-JśXNēó½°:T7P“ēzČPŽ£ćkÜłµŲµoklX 'sżćƒZ1ŚA†FÉĒUzÉ·“VŒ ²HV­l’ؘƱ’Vmč‚+»5ā#?sLhķN6ĘP惓PZŲj1ĖņøpyėZš}»ČŲ•3ĒŽ­S¶†n“—S0Ū)}Ėqö'šÕŅm¤doī Õįį«„HnmŠįlf®éö–öŒĢąHG$*%¾†°wŽ»üŒfÓTH’ąžŒ+bĘŹ8T²¹črm[Ė”¼žZ^‰$ōČ5$ė r(Yįv9Ŗö‰č‰2W3“E”żœē,­^ŠĻKۃnŪß® Eyq \§•l3Į/Važņ~Ż–ōžŗœui¤X2™#Oń±]YĢßź¼•AżŽjʛ.ž/w;ĘźFXVeŠ3/™eØ$(ē%xČ„Īī.K­Ģ›(Ś €&E$ō Ķt0˜Äy–Čm‚éƒOÓ4릗?Ś‹1ĘB:Ór’M“i7/ž8 ǚŽ{ŹĘ’¤ć ŽĒ+ā}zŅÉH‚Ō$˜ć&±“ļźhwKmĪpr+£øŃ­ZcžŠž‡'łTFx{R žwŪņ­ÜU­±Ļmä܌›½OUø‡·hę«ŲMāˆeŽVÖp:™šŲ_ i2\×ø9ĘĀ+£Ņtt…}¦fÕxÅe9¦¬–†ŌØ{Žū9˜oõę’Z’!=*õ¶æ{ 5ĢR/£FN×½u÷šU¬Ńć ĆŠĄ»Ó)<°[źE(®e I8JÄV~!rNaW÷TĒ~ß\X‡Ÿ5¤Ī„v]l eŚÓ²ńĄŸéW­4éEcøBMäŠ9b“øå)Ūc>Oé©;!µŗˆQYŚēŒ™˜Q dekBžĒ ›˜-䥳9­t½:H•‹eĘTā­rŜź2ؚ¹Įkp’±ŚE0ķøšxĻQøŸM6ĶŽø$WdŽ„Ź_ģRmĪĶ“[fm+öF逧8-a¹„,:k–£8 Bāé³Į$pŌ—ŗŁłķՊtČb z~›£Ū®XŪB˜ōÖŖŲŪĒŚūxĻ+5ZĪļSO«'už_įųõĒB²Ūīķó®sNŌ|7=Ć ŒqŹz•;s^—8H”µ"ń×5Ÿ,ŃŻ)o挞…øžuj³ŻlĘ1²kSŠÓ¼74l»—ÜWS¦ZCmQ@ź@«/¢«Ā\j›JÉŅ°u}į‰ÄŅ*uĮĮ®m$÷ŠŁ¹ĒD¬żMĘÕō(ŲD|– qW»Ō“2!ŗV~¢ZĒ8Yõ)'ćļm5ÖYųvÉĪ`’C‘×q«N=є©T–¼×ō’†9Xµ¹-ƀ·µŠ8@‰Ļć]„Ģ‹½Ž;t+øø5Æeįėh¦٤ć©­]ŗŠ­fˆfM āZ™TŒ„Ģk:Räå½ŁĪÉ'łaŌ-‚äīSYW£W™cR·Ž,äąžuŽiz-¹ČˆIĒ`S56!v†ŽŁXubęœ+GaOšMīs¾ø»±ž×¼X×S¤j3\7ĶģŠÖElešSąZnØā}–öÆ“pX.?ĀqRÖ'DgŌ*ŹŅy9żņ68Ļ”« EāĀĒLœäTz¾”xķåÅŖ?¼Ųę±ā¹¹ŠģµĶŁEōU“…/vķóFS÷YŚŪ…’ ģ£#﫨˄¬970ÄT˜®Rźyn›kÉU3¼*”:k\HL“ĘŪ{Č4FŠ{²ŖÖ©h„c±°X®Tł7żå“5!Ņ"’@nB¹ū»ø®sJš;1“Öč{m!kf×^‚=¢KŲĘF@5Ø“‰oŲčŁz}ÖŚŁšŻXÉĀõ®B÷Iń×Ģ-®&L×ocÆY°Č¹Üb˜¤Ōuč@Åŗł„Œņ¼QJs‹²2©I©Ičsšg…uee{›óqĘvü¼Ā“å°–Ń›k+®9+Š}ž©Ø¾ļ"Ī69īqIq«jń)ó­¢DosJÕ9“‰r«M-¬1³ęĀ=¬éĒV dÖ¦Ÿ£iRFbĘqŽ@k×5©ķŠ[ĆIŪ9GGµ×]’ćÜĄÉ!³WR‹µÜ¬*5—5¹nzMµ„ĪŽHYlóWļÄJ‘K l zįōk]f+…gP±ƒ’C×P#{„^3€ĢE`ć®ęīPqwD1Y\Ī夼²*§¹ÅU““·7­¹³.st®†;¬JÜdnźMf®› } ÉŠ®z¦„īž¢j)®T­ų–ķt•“Ī·ŠŻŸŌž*Ž”{ ”^ĪŌ(ļ5£ega!żĢĪXsĮ8żjbŪPŌŚ,.£œ³b•96ķ"*M&¤ž‡DuĖJŖĆ$+b±µ-,&JAŲń…zÕµ{łŲ-ĢQäõņß­;-&ŲÜÆĻ"1ćŖć£a jZ£’Ó4œNÆp5\š Č®“PµŁĄAq*”nēÅt?Ł$)ņ§b§ūĘ”øŅ®Ģ’,lź3œb„T‹i¶\£;(µ”Ƶļ‰ķ¾Ķ4eG?0Ü*މ®źs¹MB;BXķ­ģ|“Łöv'¾Gõ”ōA4`¼Q§ć¶”źS{+3XӔ^÷FŻõœj$ŗÜz˜JĆÖu©7‘ ŗšńŒł?Ö»FŅķą–źŚpjg‚ ÄyĒD\ŠŖu#Ģ„E·«<”µĶ@KĘ„u“öhˆę·t[żYž{}FW‘‡MƒŪĮ„Å<‡żŹ?¼W½hŁų}S›£cü*5kÓé”­,<£ĪMkÅ;Ög’LEké/Ø]6뇔°ĘŠ3]Q±–ܐ¤źĶŸēV­’G_ŽE¶=¬Żk­¢’vzś£ÕõI4µU©#7ń4„*͹ń­œhńDžŠI­Oč77lĻ ¾FäWm¢XĮ!3ģĒļ3`WU8BQꯜŅu%.Fģ¼Ķüg”3×qĄŽŃ“JՆž$³ÓÕTi—®xĆš?•Mpž"h_]Čŗ€ƒV}īuKĀ;ŒZS”d­PŹJ§3pÓät6~1³’ÉLvEœŒmiH5v?Ļ0=4ĀÄrH,k‘ODb+ń¼£½Q“³ń=…ęŪOp0żj>®¤¹Æ÷—*óMEėł£§]jB'›į†V6@1Vtėˉ¤ÅŻ¬^éƒś× k©ųŽ£¶ŗųWśVĶ–·­K'ҬŅ\rUš®yQ—ü1Ņ«F[- OŽ][¶,—N™ū+Ž ĮŅ®µ¹¦‘¤ŠD9Ī >‚“F©Ø†Ólżć×ń¦.»dŪ£Ó”[”­œ&£ĖsAÓS¼äK¼œįı¾0N­‹'ū ŠE3dp[“\ż÷е¾Š—p|ź² o¬Żi/‰,:¶äs7މ†ŽžłĶsZǃīT“h©ęž‚½ iŅł`Žā = X:sĒž¼NÜwlSX«nĢ'ƒmŽ(šūŻ ^€•š3W5Z #̘-Ē““õ=Å{°°·’<įXĀ¶sX×KĖum' ĒC] šŠŸ«.kIy„ųŽš†P™9ܝk«Šü {ol|½ZįÓŗībŗæģ«ÄÓü±»ĒīųŖÉ£fMŠ×q?“¤s\¾Ž¤®ŪüČR§Mé4}ģī#`euJ’oYŪ,M“®< U=:Ęk" ĻpsĒĪą’:Ō‰D’,ÄĮ½dä÷l·ō*źz€…>hru™©m–Ż+D£ų}먓KŒĄŃXŽjK]&Ł£ßäF€¼foM-DčNöG'ˆģŠ[ké_ Ų¼}®Æ<³K"ˆŒ–@¤~½}¢Ē:–·8>Ą¬-OHŠ‹ąX˜rx«ƒ„5kźgQN1¼ŗŗ¦Ž²Įę“8qN²Õ¬DŌ3Ŗg5—¤i+!t‡ķĒē]©Ņ”‡ęÄmŽ cš™ņÅ$›&Œg-nŒķk\“6ŹVŚåsŻbĮŖPÜŁH€“xĢÜćyŗ}0Ł\JTĖ8łĄ¤æ[($ɒ{cŸÖ³r¹7Ö+šRüŽWµŅīžB÷šJgOŅŖ’f“KˆÆ£…lę½{+øĒÉ’¶µ0ŠķžŒ9 ŃbZI2aAŽėÆČņ‡P\mIZVć‘ŸØ­k[ļ5£$UłC]żæ‡t×udŪJ‘ĶXø…4ų ¼¶mĄœDńvJ7ĆYk-<(}_Å’ī*Ņ6ŗEi[x·Ä³Bm*R½7«•®ņŚŅśķ”°uŒ[“Z[Åh›ā @łˆZŌ÷PWå¼äģy’†|Aq¹•õ8ÉźwĆÜXų¤µO.l–8;ć"„²KbĒŹ†&`:3Uu)‘Ėx¢€õ;ėX]MŻ££•B“ź1¦¢™eƒxåkä\ZĖ“,J›ø+ Ķ*źwŚ„XĄĮżSZ(­“ŖŅ €J×T9„ī¤sT•8.g£4ōŃs*Ž0żłP+RŅ„]ĘŁ7¤šį“ė¶ófęŅˆ7pV#»«²Ó¼[Ķ彬¶ĢxłøĶsՅh}“²”čøŻŹĘø‰L ˜ČldVn«¤Ir›ć•#cżó‘Š»’ šœœś°§i­ņI$¹aYĒŚ­yG)Q’³‘ƒ¤h,““3»ø¼~ŃE ­¼'r6ą`S£Õōĉ–ŽHŲć¢ž+ZÕ„bOĢŖæŻńNœå­Č©Zįh„@žśqˆģ%*OŽ1“[:MÄWņ>é\Wžė^,’Ö‚f”Ÿē^q®ųėĦūfœ¦ y”’…w}JrŽš1Ģ#NIYæ‘ōŽ£ø‡l“ˆAę±§[[uŻ£ĀśžÕó¾­®xź’OĖźsA|§e¹ėõ®r?xŖņU“ūWS—qź žUĀY{Ó±UqÓr“)ŸGų·ÄVŠŪ­¤WĒ5Ä'Š`ŽRóÜ!cĒ— æOƼĪÓĄzū\īūeŁ”ž‡wõ®·Mš>»± §uą5­©ArsEb&ż¤“,ųŽā-b×{ؐ޼-rZG‡„YģŗŻĘńĪÖĮżkÕSĀ< åŸļb‹ʅZ(Ln½ZĆ”yzšŸžŚœk]ϦéĀKNū|xĪćŹ*Ź·ń…”}ÓiĶbÄšŃćšÆ`·šö¶¶`E{ŒpRDĻŸ«ųz7¶¶2J:Ÿ$ ÕĘp’²_ˆåJ¢wr<öĖ\°–ńM×õ[P…Ēń®ÓMńżšł’j77qcnK ¦‹}Ņ8CGį±t½s…"ŗ-ĪŹkUOģ}GO|cWӒ7§Nj>ćŌēļQĮŌódn+¬1ĻZ~žL©“źj[ŲĀHI^Ō6īiUk™Ö±æšN@d֍¹P į1Ļ=ź?,dĀ“Ōšp Ņæ7—ЁœŠÆŌ§g"IÜ2؏r/|šM•U½élČYĢįś€;Ņ^H ƒoź*$ģ(ĒNQ¬ē@aÅIhó[¶š…ˆļinX¬jć9ČśS&ŗ&ÜäOÕŚ%mI76|ÖៜÕ4 Ł * c޵€<y„&Ķ:uˆ2Gņ¼Ś­„¹NWVC%‚SnąP9wjvЬb:Ąp5©5ŗ„‚<®Ė¼pzÆg%ø»É;6¦Ó‚9©wq±ģФ:‡-cæ LęT=ź{©‹>ī½Fiśdf؊Cc*EN‘ZšB,D…&Ą,¢CŲśWO”<Ö&O¼9¬Ÿ°żšMĪ œŒuĪ3W¾–ŚÉH…˜† pis' Ž—•Ķ[U·Šč»ŒF9Č®ÅzÖĶ@‹F*õŖZ–£s{ ,cĖēoZŽ *VŠ9XqźzóZóC¾¤ØŹé- 6vš?6BXæ;©÷¼Ź ˜äšµ„D‘A±ŽqŲ*ÕŌŽavŠ`Š†äŸ.ĻrŠi¾dq³Ģćwč4+­Ģå®±*‹ÉRö$Ą`xē„X¾M÷›ŠeŸĘ¢øŒ"“‡qE¬īWĖfX`nķTģփŽšÜ  jī*“Į*¢”vĮ`“ެG4kŗ&p MSø‹ƒļBCI½Ę]ŖĄl7b:Ń0 Ī`Zµk¼K¾U’IųAĄ«š„éq2D°1…5J/c6Ōv2D’ˆ›Ķ\Œujż­“w0o,±*Œóō«Ž†9XļĄŚ{šÓ¾µ†8§<ö5׊ŅZ«“r“ʦFPT•抔™B"Ē·pćč1ø€ŒQŻś’*YšddĪīŲ­®’ŌĪŚh(‚U„ē<ŅŹHŽIb0\ø¶½n»÷mą5N,%Š’a‘Œī ߎ”Ī-n8Fś²„‚N–½$Ä: K2©?*zrkKP¼·{h­Ōš0py>õ‰,ægÄYłxÉ52Z¹Si#¤³ČT"*‚9&©ŻČ‹1Š2.@ õ®rFā?1°§8śUG»žgŻŹ ņZ¦īŹö·VŠŌŻk¤k‘ö%x>•Vņą ¼+0Św;ÕkVQo˜óÕRkø”yp{Ó\»\j3¶„ėE„l\±ļŒņjk ‘,%I p}Ŗ°WU;É&”Õ/$1[¢o ŒöI6ƹZŌ³5ńY°…ÕTöā‘ī÷n.łŻŅ³-ĖģƐÄõ«Āķr»J•¦ķŌjšJčÕXHäŽĒėMƒRKrė»HŽųĄ£Äi"D ()禄Ā,ģĖĶL¤k©<3(÷ČBqõØåœIå²øpANsūŅ@Ś[žzŌū–fĖķ$p(JėPŗźĶCP9ģ*ŒwJį7žķr;EdŁ¢¼ŒŅ)wŽpؼQså•Ń}lsÉu‹ZåäŃĒ+»äą[¹Ŗ‚PFDƒŅ­ėokfb“.ĪOŻä“Y±ĮO–yTå¦Ć©$ž§€’fOä1'½hŚé·†?¼į{s]®s#˜qŚŗM#JŗU^ēļ_fģ·>.*ńŠį Ó[¼’P{`Wmō@’Hø’²kÓtŻ.C&Š0}MY};oeŪŽ§\#—¼yÕ¦n +<ŒŽ¬ X’)a?¹t¶Gjīå¶µ‰ä9ō U&ŽŪ%–ŚI}€Ŗn,‡QÄę,EįĆ}®§”¶GŒHŻŪukYŪ ‡Ś¶ ŽÅqšK<¤ło>BK¾”&ݬŒ«»id·,vVmʓ/—½"Rzd WTžņXbå×#ūõ­„čņłXG.;äŅēKpTꎈą,mÆceTG=kQ ½ó8‰{–é]ķ®ŠŖ@ĘXsĘjóčū”šsŠÉՍļråNVÕjy꓉ˆø¼µŪŽHėZ–ŗl–ćĖŌ‘Xś5t‡†4Ģ™£‰›ÕŗŌ6¾ŅęC²E~Ł žj½¼©ž^ŵfŽi4ØJŒßƃü[‡5)šĶ¬Ų1ĪŽŽŖk|xŌ¶c‚į‡LƒŠ½i ¶œ6[ZHŲē;Ķfė«é©½<:Q÷Ž" Ą—c¾EImįķ9\ Ū³Ųw®VÓī'”‰cēœTŗL–V*ą0#Œć5·6šź·Š«k„éšŪ…07ūµZóO‰ŽbB‹Œ ]F›ā]5&0ĘA`x޵r]H]6Å“‹§ĢPā¢%}‰©u»<ŚåüæØĄ©“«ƒĮ½„·”BZķf±†yÕ[Ølgkyć· z€£„i9ÅģE(N+W”…oÜ.į岰ꦪźEąˆµ¬Äd”Œ×eįS¤¬ĢC*¦xR@­Ū«Ķ&ĪD;eĮĶ(V—5¬]Zt£ £Ä®ģ5 Ģ·vĀehR~ö§Eįėę‹iF{…­7ĀzŒ­  ĒVkŲt›§¹‹nav\Z‘[ŹU¼„“w|€k9Iķ±¾‰]ĒOSŹtÆ_ Aia·ī =EjOąż­ūŪĖhųė»­w’é·.Łyåj)¬­£ēyćų–’»1œ•–Ēeį­=2&Õ­Ń1Ō&ļ֭ȞӢė_l*æĄ®ŸģŚDœ;[ƝüV^·„ų`‘¶ęćå"1UN*žódνKrŤ¼‘ƒ梓›tŪ@’ž‰œŌ’ėRBDŸŲš2uܱÖĪ£č‘Č Ü@‹Ų¶+£°Ņ“2üL¢9Ū¼Ń*‘Ž’FЅ㤛~gcć jYĮ ĻIyā=RgżŻ¼W€× Eįķ>yó\€8#·4’iؘš(”b3Ÿj˜b µA<;”SØö<ŠÓXր;m—ŸīUu«ĶråHņē5źŗ½¬6¬ß`“Of^?yÖ¬h–3ŻBŹķÕw¢98IZ+M»mīvˆ­ĶWW@jšķīĶXŌ•KltĀ”mŻ–ķōš°Ųēž•ZļI‹;‹ć<ąš»ą‘š&‰9č ;R”¢ętļYBR¾Œš–弑Œ¶öš)9ėĒj±­µĪįJÄIź=kœń‚mŪ$œœūFk›ÓÓ^“øw±øFÜręć§JėöM.kźqÓ­yņņéÜļo4«YViZ :PI”Ć-ļ$‰®aŗ—+ęĒnŒWćō­XöĀÜż®tl{ńPÜ®•Ķ&廣F :åœ8™äĻ^OO„Mu3B›"’4˜ õŹź^%æ ŁOn ńŹ’ Ķ]Ō™·Żł7šŃݜĖn¶ó=?ƉØĖnŠ šTćń­«K”ž®āžÄ ńŪÜĆHŠ(Np²)žµVÓāN” ‰-exĒ\`Ÿ­sĻR? ŁõŖ3÷R±ėž‰qt»d{ ēļü%l“®›yÜ1X¶^:7®”$šŻ» Pćō­Ųõ¹¤¶ŲĖm6ńŽXŒžć*Ÿ ɔck“fOį“ĖMrh· €$…[Ń|qęfmhMžņqõŖ­ŌĶ2˜ōõFR>eŖ7WŽ"9ćfOĖĮ­eN£Ž’1Œ©ÅórŻż§‡ōøĘYĒ] ŌV¤6ś=œaŒĪ¤’¬?­xŻéń“ųŽĻ‘ČVKč¾,ó7¶ÆwÉĻĻ’ēYżQ[Ž‘KUiŸB®µ¢ÅŌ»ˆē'ś×ć/YFųŠāE^˜Ry5Ąé^ń<ą1æÜ= b¶“ßjRJēRø4U*r*¼kĪŁ—tß0ŗR|恺ī5ŪiŽ$Ņ.mWęø„Æ]¤u¬=7ĀPF”_Ķ,÷š+rĻĀrė ŒØäĶMNI;ģmN5aVīhŚkŗ6B›¹GżtZŲ“Ō49! z§Ͷ“¤Bę9.ćIššßK°ĒÉ}l@ėéYøC{³olģm]^č„ĘĒ š„ØG”ŻÅ³ēŒ‘Ź;Õ+/MEFyWÖ5žµwG±Ņs³&ŃÓSsе®$“ÜČ=Œ|ĮspŪ¹ūœU«-8¢…Čtnrˊéā›Jˆ,k6XźI©¤½³XæÕM"ūh•gµ‚ŃJń×äsŅi1>\V®Äw\VtŚ;1ŚŠŚ¦Nr  ŽŌ5‹!D@Y åõŸŚZ‚’h“|uT95„/kŠāÄT”zŒŅ¶Ń- ˆ“²2ÆzÓ³Mæy+3ć£7×'ÄŻtū5Ü7q1•ˆć4ķ7WŠu ģ·³!nv0+š™&’ŠģkN­Śö*čõ5m~ĻŗŁ"UDZĶKö»Q•7”ķŌäWßjm§Ū£F³N tćPŸh— ©r—¶²¼|¬ÖjŒ·éäm:ŃrµõģĻA¼6Ä®¶±÷؍Ä?f²-ŗp qhŽ˜ł§T»>įÅhéö¶ WģŚƒČž˜Č¦¢—QY½5"氒ēŹ7Ļ#ö°+F3’,«ÜHj‚i°:Æ °vrjm&ŪĖܬ]żČŖi=nU'ʬ÷:}2kxķA*Xg>j»kkĄDrG½ĖІķ" !€ƒÜŒāµPŁČ …UĻ#åĶr95+ÄŁØĶY£%­/m ›{ĀQzĆškj7LžŚ‚ōglŠ»OÜŗŲā±õ{=V@R5“9čFsV½é]³ ¹AZ(š=ndŪö8Fć+'"¶“}^ó2¼nGV`EyŻ×…µfœ\K4‘/~A„gŁ`ņļoQŌjåF›^ć¹TėJ:ŌŠō«ąčYdÜ3Šu޲bó•Tp}«Ēļ¼JŚ|ķ¦›u:vs!ŗ_ ųĶ„ÓvĖ¢uą‘Ö°žQ³q¹­f–Yæ½»ŠĶū1–_1”ŠĒPÕÓÉI«Ų˜*›&OeāKÉdŪqkVžęiŗĄ±’=–ćY3N]")HŁŖ“}ö« ŌW—‘iшgyfŒ°5’_.¬­-Ź6‘ø”gX„/¢®ÓVµ„¾kžĪ½D*?»“V4ż?LÕ]¾V'ŅÆYhŚ\‡j”9'$柵§{­ĢŽ„¹^ˆåtĻG(YīVEĘZÖ/Ģ øźIąÕķrG•JBG÷ńTģ“÷ƒö¦lŒ•W<嬄ņŠ_±-¦§8“d‘Å?ķQ­K<ń(ŽPøźŹŻ½ŖĪœĶ.ļ5Q€źÄ+/Q”Ū¹Y/¢(É ¼šŗt äœw1«9rźG«J‘€<Łęvš~ŸŖYŪĄ–ļļ15Īj.‚ŅąĘ,Æ ˆ C'‰¬Æ6”·pƃĪÓ]®—FŽHՌuƒž¾g¢Xų’ŲƈŃIŌÕ ĶKQšä½¼¶ŃF{df¹›+Ż.HŌo•%=CąŒT:Ć[›V{;‹!(éęņ*iŠ5ŅūĖÆ7eĢō]‡ųŗMhn’;Ż@©=0T…giiā)²kń±’¦]«.Ź÷_MDF5h³’Pbŗ[+żL³j0Jƒ<Œcō¤Ż—+Ję4’ųƧÜ`ų‚?A2ł:­ė#œc5wBÕü[;‰¤’@8Ż]†¤†0 ˜ć³SµI"øƒ€ź:‡É+)A£5ļFW9ū_Ę ī„E±Ÿ½Ķf[ź^)ž_.ęÉpŻŌrk¶šō±ŪžcóˆHļZ3µüŁxķ"9[„Ī+E[¢Ś\ķæ#Žæ¶Ö_N É ˜ä=bHž'·Œ#yås‚½2[¹¢e/nøÅ[“æ¶ū9P~Վ¬Ń¦ń $š¹Q„ł£”äāĖQøLĖŹŻĘ ŸŅ™§ZźÖ·%ÕļrT3d~µėņ_hØTO"Ć(ƵMgsįł§Ē(voÆųVokŽ&‘ĆĘnŹZœ^‹Øėjbt HįŠ“X^%¹ńÕ¬’čSCå°ą”9Æf–]:]ģ›}Ęh‚}:I0±>՚ÄÅ+øhUL2•—9ćŽŌüi*ŸģŠG\äf¶n„ń "™­Rmē9«Öž+Xķ7EjˆĪćõGeѧ_į{ć`¢{ėčEzQV‡31“{Ÿ¢Š •HĘ“E׉äxę‡$*Õ¦±öL-_k ᳚”­ų¶ö7;k` `‰Q¹ü©ņJ£Ń"':0II抒źĘźh‚ŹņÄ1‚G&¼ūÅvv0źwjŽHūń«ævńŌBhģ!”q˜ĖZ­{ćż6;PdšÕÜs†ĒųV”}¤½V;s)ičsśFŸC©kš D®k©Ņü;Ȧ]VīqüY…ŠĒ‹Ēšmō…EÜ6øaO§¶ń,H»“Y 3Ÿ•„T”QŻ-ĀjO^[£„“Āökłśą rLrŸ^“—> ¶»ƒlžÆ ­ŽBØXxīRÆ©@Ʀé[©ĒÄ[(Üģ¹·™‡+ƒSÉUs”x½/`…vė.źx€ż*’„§Ģ’Ż„ŅććUī~&Ū¹+$SHŖ1„"©ĮńOy65•ā©ćī(Tė­9Šū(ŻŅ­ÖʐŪŸ½±ć֝~$2nŽ=NĒ9aŒÕ(<]ht0ØVƎ•;ų©ī-¼¤m9ƒC)$RŒfģL„Æzļśņ(źšäÖ ó[Ėu\cnāMsŗŒļdR¶~T$`Ė"Œ×`æŪ ž £'O‘õØn,õš”^Ī-£ų³ŸŠ ÕN-Ģ ¶¾¶8½7]Öķci>̐gk7ʰ©“ßx.AJA8W¶/.µ yŹ=«¾8żĶ¶ļ֕õKš€CksṏØ?•SŒ-ŖÜŹ’wMŁ]OCšVؗśj½ü†Īćo$·zčX\É/Շiö÷ÆŠ¢Ö.µ$™®#Į9*0F+Ótųē{’FKā‰q^dčŖrŃÜö”7R«rĮåŸŽŽ “¹ßŚ’ĘžĶ³{nŁŚ$ü:VtøĖݱŖ³Š5#OhĆ:FŒG Öь_»&Dܗ½ «ŻB³|—1ģė‚MW†ēF¹µhn%‚Mބ渹ōŌi E,HGŽtąT'LŪ0XŅŻYX”ķ5Ļ'õ­å5ŹŃĶH^JHž=fęōµ¼ŗ:L¹Ā¾ģʱüCį›õ&ēA;śļ–ż+zĆÄ‚ö=KNy’|üēéS\x†ÉŁAžÕÉä`“YSrƒŗŠč’§5fīĻ.¼š%ij?Ł­,¢BóĶf§Ć —Ō2ctaƒ˜ä,+ŅGi_š5¦„5xŚä¶’Ē=ćķÖ,®p~P¬ż iKš‡å ĘŻ#Ч‡šėżjįYó_”…jIFŚIqįć[(ڌĒ'%žu'ō« ąOYÜ“å//sĪÄqų֞«ā/蚈i÷Į°Ļ°ó¦ź;ų ¶ūMłšAĀłz3©U»“łN 1¦”jvæą_šÜś6—­“¶‡īßÖ§Õoåøm±źÅsóK°ž5§^ZZH×Zf•Øź1‘ņØŚśƒT|I®ų˜Z‹O¼(øĆ*/#ß5Œy½ßÄŅ£Ÿ*RWō:yü?„ꐅøÖ®C¹É1]“’ÖŖÆąO*łRnŌóĘłŸŸŅ²<ā VāC.„”Ž!ĘH“śWE/ŠĘPŠé’Ėyˆ+'RÆ3й¤U$“j߉_Oųiįū\M ƒī<ŒÅuz‚ńČ¢=+N–5TJJœśÓtψéĮu':H#–‘Ą_~½+å?ڳö¶Oųé4æ &™­[E&&¹$¾”pyžUzŠM-»’Į)×”Nq‚–ūĮ>Ą»¼Ö“µņęšō}׳pÄ„s:¶«ØÉxZÖNĒ+TŽ7ēčkó[öÅųéÆüH×nlmļ.bŠLĆp WŒ|Zń’‹öåą”m.9'§įTõŁfƒŹUņäń5vźKt bd’Ż++S‘bÄ*ćø®8Ė™ŽHõ””v đE†Į.9ö5M„óguw¼õ«нĊ‘… Œąµ=ŌZŻ&ȝøÉćšN×6•=5F=А0#hÉĻzŽŚåøßI8ėŠÓŌķ$+Ģ\õ&³.¢hHēēqZBĘ iK•š¶ņīĘĪųŠžźE“Ŗ•`8ĄĘk"ŚI²1ņÕʝäī+މ­u7qI "Ø$u{JŽ?+ęq‘š‚Įm[’ģļœć «‰bs)ōĻ4›ÓPI%£»ŻH|¬ķN¹Ī*F%вgxū˜éWōk™māxćó'Ž!j–¢s{‰‚ƒĪG_„EŻü‡¤RI–4lµ¹]ŖHźŪø«‹xĢ:qQĀ‘CøņCMT¾q-ĄĮć­CŻĒNwŲIBŹ–+Ē^•^X•lšQ¹¹ĘqW&‰p>`w«<¤[łC€rvćø¢³ øµdU³™‘ø\ŠśŌw÷$œ³ķ'„7›'€:’qUµ¹<ÖT‰@ Ęs[rõg-K½ų„\üģÄ•­įēq3y1ņóæµsöūŚrĄĒ5£o•fU%p9¤Ž–F“ŸRõĆ/Ś3ø3“ÉF6ŒČ3øf©[°[Ÿ™ŗõŻĪł°_€0=Ŗ[MŲQ”āģhŻxOLœqTĘ#–ł‚ń׊s\ĒøØ9Ś U[wiTŒÆ'š!{»Xæ¦\¬³l Ąõ­m-ą{¤Qvƒ“ķY:t%gź¦£ó„Žõ›`8„tōA[s¬“¹Š+õ[ˆVHś”u瓨ys^H`C†$š9Ÿ`Ó][Ø%ĖÅ]µ…‘>m¤ž›qšĪövfŹ3qņ2ć·P¤±*1Ķ?O¾†Öų±9P0=qQźńN7J ČĶgZĄo fR»$ž>X™]§©Ūi·ztŗš½ć¹…†wF~lՏ-„Õ°†Õü»pŪ²żH÷®pi«öO9dD :g“Tī¦>P)øóƒėN0V®“OS¢³²°€o¬¤ŽzÕ[§™£q‚«Œm«7B“tū[cŽµ­ŁĶÉ`cŽUr1BQ^ź&JQŌ”#m·Ź.0õ©|#/śQY¢ŽDVģę³õ‰ŅAŽšŒ*“T »tcåČTžŽõN-#hµ-S=_šŌČL$P‘Ē<Šćuxcš5G—ń’zÕ9.%9WŪޤóU®®"«JY@ĒĢiFLęŠ÷ŪdĪÅHŚä(µViU‹1ōāš.c.KHķLŌ0ö¤®ŅGBOµ¢“4wjĢ4©V?4:+‚i-ÖG•Š1łGST,Jåy ŽqZÉndÅUÓ'żz‰%{KC:īąĆ!GżęiKI”€É-SGl ,NÖÜ8õÅ6Ś'{œubHģ¢CN[ &däŒŌĀ-„3¹5±ö ‹;i]„RŖ7N+[“,Ŗø ŒsI¹IhiwAڜ[¬w&ģ† ÷õŖöq°€Y±ÜVœr;iå! °uf…æŁnatHŪ$uö¤¹­ łÓz‘YȌK/szÕV-<Į°qĶfŲ”Ā3dĪ8«ös[4Å@łTnĪ8¬§ī­Õ„×B¶±2Ƕ(ī|ĖéUŅŽ@w|’/#Ńj³A-Øņ6ģ@ •G[ŸĪ„UM=ˆ·¦ćJK#q Śzī8«6S:Z“ź;Õx$0ö«o’MÉ»+ÅW“É=É·§E‘¼Ą0G„f…Ūr<ĪOq‰wwuéTŌ¬ŒÅFqĘiEv)Ė›DĖ77’)TŒ0 `RZÄĢģģĆšļRŪʄĒiQZFWf:jÆ}:źZ±0 «– Y’M­–6ķaĻ|Õo$*ėówĻųŌööא Vb v±ŠŠŻAöPYŁöŽrjÆŁ’ß“w·­kO ĢU2ŁÉčsL%xP¦LwźWMĢ®Ÿŗ‘BŅ!"–ŚBēŚœƒnF<ŠÓŽ# <)äćÖØNČŒ`“ĆéQvĒ¢ź%Č+·CŲūTŖÉ惒?5;P0L‘„b˜÷5NʱBK|ǟjvŠ\Żoe-x[8_AŅo’`` M*!ČĘ@j’†¢…„łŪ…ČķYIŁh>Nm M¬%ÕnQŻĒÖµ!YYZ(!PIėœU»„Œģ°'8ķUćæsh®»Øe=is;]ģT“HŌ†/%ŁŻŠĒ_½L—Q€øE{Ž9¬;Ūē‘€ÆL Æ Źfēplā„—QM&żętö×~e¬Š$eŻÓž•4ņC•ó&$2OSY¶SEöC.ū޵ %/–T”=}*o®£ŠC¢ŽX­Ü d“Ę*¶©Ķp *…6ē¶źƒHøŽ;°«µ™š>j¹¬¼lél· ˜mīTõ5¢ŠčOvå}-%¶•žG@– jµüŠ™$!›=*]AB&KämĻ·½WŅōÓ$™ÜBuÅfÓŻµ—ō©TQH €H5„«æ‘c·ĶD/żļJ‚G¶Óķö½Ļ¦+–×.āóęrĄš0x§»_byõÕ]‚É=ĢÆę3ĒĢZ~·'ÉNēłÕE¹‹IŃPĀs,ė»ę¬[“¼¤–bw¶hör·;"Mķp»šyµ%ņŻĀ'9ė”·¹™“FŠHٟ°ĶeiåŹ9^éZs\¢‰$ŠĪS“iX»Aū²fC¾ą ĀĖŚ¬ŪŽ*Ŗ„¹cž§"²oeóīG ģµbĀ5Faź0j„.åEBƽ¼³yL™ÓµPÕf¹¶„“ Yœ`¶yÅV“Ōc‰¤l–,I«Ė~ņÉøasĘ=iӓ.N)h;I‰’šLó‡•×–=y­ūięPį‰^v®b+‘n¬ä0Šsj²ą.Ę}E[mģcNkS­µKiIn%edN›©¬-cX¶‰€·Pķœ–sŸŹ±µ­Uī­ƒ&Ž[޵‡‚ĆžŽ“E7¹”¶åFķž­ŝāV$åsŠqÅP]Aœˆ÷°^¤Vs‚×#½Da]ZӗAūĖsjŽ` ł¾œóVĆ'–…\‚ŻO½bŚŹ€† 2Üf§3 å+A›-“6 Ęó4lĄ0ÉļÅ mŁC’ŽõˆVFŸpĪ1ŠŠ³W.ģ®GQY8y„¶lÖ“ŠCP©śÕ‹`dŻ>ŌėųÓtņĀŻĪ}évI·.Åŗ€:Vn÷jēTōFʁæŚöę,žŪžµė>ŌcÓåž9Ł_ĪC*yÖ¼æĆ0°»O2X×I n ™‹<‡wS}hźłc¹éˆ  K3`‚k āŅK-JIće–yäܧµe Nź;e ! éėP&«3ŗŻęŒžÕŸS«Łó.I-KWÓO9¹’YœćhĻJå±ÜJnAŒ–ć8®£Pµŗµc5ęWĢ\Æ£ZÖŅꎶ8Q¢‚Ž,p1»ėYūe­ž‡J¦ÓähĪš½”—Ė ±\|„»UæC&““2ł²£ćvx$ń‹Kāš\äŖåöį\׋®„Æ(2HŹy9Ē\uⓤ•īö1÷cx½Ģ»ėé®n?xrķÜWa®kŠ\ųZŚŲŪȗpĢ‹Ęźį4„r<ģtąf¶J²[e€ŁŒ–¢SK@jŹš1‚Ķ3yĮx$Ö¼3žå2ˆNjµĘLiäÆßl})Ėķ”gæĶU¾Ęqę±Ė ĄŃ)ŒdUż#RšQ3<‹ėĒJʼ±6Ņ»„=Ŗ–q€`p÷Tףø¦µ>!NKc¶žŸå€ģɎ¹ę¦±×4“.<ō śšąį³ŗšå8Ü.s‡Śm9@–ÖaĻ A¬¹VČ·ĶnfvMŖiR&#–OøØAi[6ņB«ŽŖµĮź<Č”­£PsųTvw^"ÓŠ¬d4~˜ę®4d–šŖĮæzē¢Ų"łų’šīĻ@+£XlÄCuĄć€+Ē­użE˜ -™žXµ½k=ķŌ#aøSź+)Į½/chNŚ„sŠ™­#\yKĄźj¤·1¤LŠ:’ r×v©ö=ńO#1!ł¬ Dxš&>RĆņŽ~^“ᇿQĖāģŃź:qE9ó†źĘ§¼02m[¬9ł¹Æ$ŅoeńĶĘÖZoxņŹĖqqmØØī4½*ę&óīątVĮ4ū‰ō©ƒ,r:Č{ł5RĘ +{ļ2[«§ļ$Ÿå[%„ֆZ5cžŌ¼9¤[d„ŗš£'„”åį‡*GU'šõ­* 6īāĒrėŒÕ¤³µŽ]©_elSŽ)%b] ^÷•mŁŌI!#!W‘\µ„ģwŖÆ¦ČʜdGŠōU¹XŠM+lõb*ü”&@e$š6®sBÄUQå’æ™1 ½§4Œ­;F±–Ż$–ŚdŒrvćš­4Ų"‹lHĄģŻjŁav6#ŗnī2h²Ō‹»²O8R1XĘm/y“»ųcdS³Ó|Łiš EjŌm2ĄĆūÕ2ެiāÖ[t ŖĢqŌžM\µEņq Įn Ön¤Ūܙrør¤rz„ž‰ćyˆ·P¾f)–ę%5œ*šLl t¾•¦Č3äÄĶŽI•ikn»R|ü,®Ÿj¹t9hӒm7cžÕęŌÄAąy°3üŖ;Fä!7\”źvćŠķ–D@Tlćē"Øźvk6J˜ 7Q‘SĪ„ń2Ō\'Tń"[£ą^N‚NÜćµļź-‘kg}·2פŻčŗk170¹|c÷kĘ+Ÿ×“MLj”™d2?Jź£:wµŽ*Üö×o#Īań¶ŗ—y|‰’<ĮZŚO‰ŗšŚćĘy­’hVæjÄšaGįüėØO ųjā3ęD€žæ>9¢¤ąž¦”é7 GcĢnüw,€ŖŚŹŠG]¼Öeē‰īe_’ŹU~›÷b½€ųCĆČYb*ź\š’Ź×Ć6ćĖKFø#‘¶1śŃķo²ĆQJīNē’čśę§;ļ¬rå]w:­Ō*wģßķ6+¶’H#čš#Ē“˜®?ax¶[ˤeūKŁäsŒ SŒ.Ģ«ŌJ:œĘ±%ż–K‹xT’ ²sš§ak·M·ö‘IF#ņ¬}kF®æ}}=ļ9,r•:ßģŚNÉ-meĒ9Ę+ZŠ„­Os 5)7ĻQiŁ_ó-ź§·¾_#S[|Žk¬š·ĆŪ÷MßŪž:Rgéž<²k.ūDg c$ŅEāOµÖųćø³ĻULŠę”ŖÉZNĻŠļ„E»FėŌī4ß ½Ģב0N„¦I5·¦ĒO“¼H5¶µ„ĖlgQ·ČČܹ¬Éµ+SĮ×£”©ž8ˆēéSNƒ¶äV®āÕÖĒ x‚÷]†a›äHO”Z—ĆÓųµĘ.ma”’OÖøŪ}e©e淕”|¤&ŽiŸš˜Žļż”! ß~k*Sq²dCNUvĻYŠ}m#UžĘČz’ąUĖ3ÅŗIm­Õxǘ1\ń4ņF OČaü/Žj–«®DP¤¶Ņ0=ćóSFŚāÄW{Å~g³ų'P²6ź”Ņy9åO³y~‘”&tļ_6[jΊVŅkˆž ķoåRŚėś %^óQŒ„6k9am+§”б³œR¶§½Ż\Ē6LR=6¤ŗø±z Nč‹~µę¼œ·˜ŚĶó7R’¦ēŽ»+[uæ¶ßöį‘Œ¶9¬żšæ,փu%¼75ģõø%ŗ&K«¹ĪL`:æs¬Ųy;D¶2ĒČqļį[©XæŚ­ę¤ jxRć?ėmӌš jčÅ»¦LkÕå嵎ŹYŪEµ"i§JėĒ–°«G÷Ž9†1•©™¦Ēp§ģˆ«Ē9ÅwÖ:%µ¬gj/=”Óua‡ļZI*c‚ ÅUR~Gb¤įf·1SRŠąµņ„¶vP1‘“T™¼3u.Y_gåęÆŻ_čŃ£Gqcp3ĀÕ+[Ćžnϳ]NīkEīFńL‹Āu=ö®nx{GÓdŒžź)Tž5µ6›1؎8ķĄą`E¾ŃRÜ$krÜćrīėGeĢ×hĄtėÉūĒ]XéĖP’ī 0ĢQ„’tQe­Ł\ČŠ¤wŠČGŽ ÅM$ŚOĖå\ ČČ&¬Ē}am‘XĢ}0sZIé¢Ō˜EoQčO„ŪČ"I¤VģēśU©”½Œį$1©ą Ź›[°‘²ĆQ‹hč‘ńT¦ńVŸæ+j׀Z"+Ā{³NhŪDu0A~čĢd$}ģR®ŸØDĮ⹑Čč0®6mrźšƒ ³/~A’ Šā é˜cTŌ-†~B@F›z9!{Gü¬īÆ-ļfŒ *īą’ĄUŃ,3ŗs"œcs05‹aiØÅYuKĖ“ĒW'"£¹Ómn$-s{v‡§ĢB3Z)S•»ŪSV’FŃäEXļ#SÓļVt­Ī+pc¹Š\ó·x®~×BŲ»­§IP7œV¢i»cČU-×+)Z§9=9‰¦“W¶§Ekfč‰yĒz­«iל“PZäŽÆƒĶfĮuse6ĘčÆ`ū³[VZ«I6śqKߏ½¹N*K•=NKZ‡Ä–™0éös+¼œā²ģnüc‚ĪŽ%Į“WŖiš†ųŽėIā‚̹ŖzĆ[ąāićī©­#ˆS÷\ldč:~õīrŚްņ*J°Ū¹8ćŠė^ĖQšČł—^]Xēó®GUy#—żMŗ‘Ōē{¹?Ź©CÄó~ź&6Š}#9üĶL黎6°F­įnWsu<;}4ßŗÕÆńžA—<~5£‚üĢyš„ņrŽ`Ås–ÖŽ*H›uä¬O!™™ā؁j×L}Ķ™Ør›ÕHҜS\¼§aoįŪk9@[›Ėœ05ŖŗEœ¶ĄŹr’|\>›gāŪęßNz¦ś×Wam8 /r‘÷ VSs²I›Ę -G\ģ±aöt±$šj{-VŃ·y×vś•P*3N–2Ļå;G,r}«.öĪĘŪ½œ_ķ?%«u0ö²§ń;›Z¾Æj e}pciśŒ2Čģ³HÅcjE*4Fę\ņt®nīŹd” Y]GŖFk®ž¶OSšXŠĪW¶‡y{āķÜ'٦‘‡t?­Kŗ·{D’Ļl¾†,s^ssż¶‰ņ›‰×Ė"®ik×*•@ÉŻsųŃ<:åŻJ“Ü“=ZĪņ RnCŒd"ŖųŠāI`-m$žwķÉÆ?¼Ņµ™aĒ,@źS4ńV'Ź‹:»†žµĆrūɦ[«ķ_,“GKż½cĆ"EĒń-aŽxÆQ7¤ †PܖB„_}jyGüL“dn0Lcüi¶óxX¦ZĘźŁĻuˆõ­¢é„wMÜÉĘ„ģ¦XŅ5K‹”óŽßqžóóZńźŗØ -¤"1ņ75§h7$Kė„ |ŖČV·l“Ų ›twA O„½•õÜź—;оĘTö²jr¤Įw÷–|V–…įķ:Śq$3]#$4Ēüźō̋ШÜ1•¬łtŻJ@^Śź¬só!T;ÉZOAPŠƒ¼{Y¶¹’TŽ;ócœ@Ŗ¶š|+#4—ó—åNEf_X_Ē(3ŻZƒź™» ä}¹‰~0©T©ū¼½= „Q'īīžfåÄ飏¶Ŗ½XŠÅ³˜€ėr&sĄŹÖ³ąó?ļÄŪĘwmŽGõØt­&ņŅą*E8ĖbØźZ‹[˵ōĖ•0X7_Ƶt‘Zj18%Ć/l §āhĆŪķvŽ6?Ž;kzuo+Xāœ%Üęļ.ķ3 ­źŹzłˆ?-Œ¦GŠĢ®xĀ„A ĒŲnpg·‘{ā]ß„>[G|Įc 'LŽ2{]SVVµĢ©ŹZėŪž·}„]ĪCFÓĽpŁX蚀ĄIī"ÉĪCVŗė:“ÖŪįÓā‘:2LU&źśķHŗŅ”Œė;ZÅוŗN„ŃŲĒ·Ņõe¢j×vŁ#’kI,uėxI}zŚxz‘8÷­Kø¬‚ńȶ$ąV\z*]ĢÅQzŸēYJjJļDę~źŌæ¤ŚM:ƒ8óž(”Ė5.„įķ2ö"²-Į“ĪO”Y„¦c[ÉUŌ`dńY^%‡Vi ^6Ø9!ݚšS•ōv*¬ ¬„«3ļ>i³ĘĀųa»åČ®YųIj0öé(^ HÄÖę¬ėk0¶:œ—…N2cĒJģ­”ø–’{Łā$}Šx?…T±“÷Ÿą Jq¼‡‘ĀžŲ’ėžĢyżjŁš÷’‹$Jb\teźrĒ6ģÅ.g%r8Īk›ŌāŅå¹.ö:‹>:€ mN¼¤ŃĻV\Øäd²ŠM‹&§äy‡¦bʰDžüutUfz%qłÖ拵›K[čį}*" ćsrq]„Æ4&„;ŚŚ~‘k®u8õŌʕ?hÜÆ±ĻŚųJĆR{€;+‚kFˆI-od3僑ķ]¤shÖó­ĀYŚŚ:Ø Y›_·ßū”jĄwi qŗ•ZJŚ}Ē\©RV|Ē9§čZ *eÓućŽT~•Üx7ĆŚśÅ³hńŚP3\¾„ć ˜¬«`ć÷nO?…S?4čk²žy •żq\õ)V”uæŽoCB²·ÜzyŠ8n VŠmŒsœ SŒń”Jт8łzšāōoé:œcģóaŗmŽ3śV­­ŌOt []0+ž|¶źk:—[%å²*žA"øéĀ[·c,@É\®ņĘkIGö‰#~ĄŒ£yįūi/<ć4»œē­taźØ/}œŲŗ¹6<ćL“KYqšmŻć·#µo¬Ēg"Ēsy,Ÿłč†»VӚ’ŃUĒĘ1YIÄl÷÷¶IeXžtźU„µ¶„Ņ„8®Nb¼Zχ$EwŌOB±š«öWŗ ƒßĢ®ßōĶæØ©dŸH/b!sųÕ]GVŅÖŌł÷Ś}¶: ¬”ē+(Ż.XŽīåłL€ŚŠĢ Į  :ē|y„ųu4Ēŗ[D»~øUĪø6›wve¶Õķ]æŗe+ų`S4T¼Ž6+,å „ÉŪrƒRsłlyÓ®ŖEÅĘĒ+Ŗjŗ”R•Ņ,–Å‘¹¤,GįGö÷‰å“ņäŌX°ē1ŒžµlųĆY·ÓĀēMžāFå¶ĘyśšÉŠüa¤ˆLWZ-ŌR»daIżk¾j6R¶§$æ"oüż XõĻŲŻyėy5ŠŻ’Æ(ąVľ,›VӍµł»³”ü„”rsžŁé¬ię H¼Ņ¹ [Wœų²×_Ń®ž;]>7Bsó!ĻēQIS«ySiI ·5£Q6Ÿ‘•Æim°Ķc­_ œČµa[YėZ”Œ—3”P@b‡8®IńžÆ§Ü2^xvŽåĮŚH5ÜųGĒśS©Yt ‹'n¤( ~tŖTŖŸĆÆr”Bµzv^?žŗæ„źŚµõ³\]F؋ĄSįšeŪŻZZ±éń–\s4‡¬‹ļkĄyo Š(櫚•ā‘»ÆÆ,›:/ķ¶‚Õœ¦6āQĶaĒć{ō»ŽŻ$$€æĢÖ}ņj•¹Y¶ĆŸ-Oz‚ĒĮ–Ģžl¶ĪĢ~ńg#šµJõ~¤{ZŹJĻC„Õ<[jĻŪc[°pZÅæń¾o¾Ķ§=“Yī–P1łŌRx^ÓĶĖy1"ō™ćQź^šäŁx žcŌlėųšØP£ÜŖµ*Ė[Łsk{ō°ou+I ćż\£ŸÖ²īukMŠØ’6ļ}Epńé–+ā É¢Ķö`xņŪõĮ®¢OģØį_/AÕ®&Uį¼Āä)ÅF.É_ņ3Œ§Qsķä^’ęY­Œ#D‚hœēq“ߟƩ]Śé% OįūGb3ņ[”lżEp¾*ų…ā­QcŠ®b·‹ųBMI¤ülūKćUÓŹ|c÷°’…iR5 ”œtņb§‰ƒŃ7óGY„į»Q•ØĮ2 ¬ėłf®j~3’;m¦‹y*m#÷÷@’!Y«ńSĄ‘Ł u½OI²#`§ņjĻ×>-ų {A%†æ Ķ œ‘#(oβR2mTmÅ®oø ~(Żé÷Ecšd÷lHä¹+ų WGą’‰7Ē™ և&˜ä£Ł’˜ļ’+™¹ń÷„īįŽkKMˆ°ź²Ļē^!ūZ~ŃŚW…¼w„h:²_k³ø…0#ņzWJĆB»¼U¼īpĖRŠiÉĖŹßš?ž }ńŖÄŁMą½ŽŅŽž6’Iŗ‹ł ś×Įś#Éq~¢ņO0±$³cõ›ć jėVń=Ž©©O%ÅĶŪ™d‘›œšę/uV:šÅ[«Ī*ńuÜāØRųQחa}ŒzŚĪ_ŪųęKw}–lбü¬w ę¹…ˆµ³ļiœžHśŌlÄ'Ģ»čÄóš}ķüQڰū³ö®HMrؤz2Z¹·©JāįąrØYō y˜×ÅUv(=ĪjŒŅ4Ą»¹Ė}œ`į‰A䚩„ØSœ­vkGte@źÅO½üĒsŸā9ÅTŽm®Ā<Üdб ²@ÅXŽ6’zŌs3¢)[™”–wŸbŌ„ŃŒł|ōČ4ŗ†Ŗ×ŗƒK! ²08JĽ”­ÉįGlŃēā2ƒų¦éÅ»õ0œ¤ōGRšžfŌ›Ģ {U&ę¹óIŌV^”ķ½sņŸē]F…q² Āäć+P’w¶å%Ŗ¾¬­gc7šV4ŽsYģS%ŃŽ„vpZź®ļBnņHć|c9ķXšģŸi˜š@5¤›NDŗ‹¢)é;‘'*ElŚēåįXŒ’Ž•—`éöū¶eĒ_š­{ėĖhģ^Ż'Ģ7Oj§ä6żŃ¶—m ÅóĀŽĒ­#_G'™$£sŗįFzVv*Ų?/N“ł÷`†¬ä¢ÉŃ­M ›¢hvÉąS<š˜ÜÄ~5RŅ6©|=2iūK¬Čč}ŖŌ®&Śi'sKNgg;‡‰=E>TR„€ ƒŌœmž@!Ž>cC‚g#smQÉ÷¬%>ēRJÉ"¼­q„ĘXœ‚MV¾xĀ(*@䚷,!™p½Ó.ķ<ĢsžyÅTfž„I+Ų­6’ū³üBÆY±ČąŽ0IķPÉmeAb'9ę¬ĶäŬn<’: Sqµˆp²m³6ąķ$¹žUŸ9“¦yē¦Ōef™ņ|U[+Ćxx’yž¹ķ[Gm Ōŗ³@Ū¶7 'oę¬éQĒēĒ»"0$“U-ļ]ŲķŽŠżjH@óK1Ēqžō_ݱ£ŗiŪC§ūU“6FˆÖ Č š$…R1ÖŖj ¾"č[#ž•œÆ“™ ć¹4¢½ŻHœå'sVk‘ Ū²¦OLńV4ķXĮÄ„Ż[½b¦Ł&o˜č¹m£å!±éRŌZŲp©%”ŁĒ©YI2 Ūŗ+gЁn”dxD~J‘ĪßҹW•®P+ėRņåS59nk6•¬W3¾„»‰Œr6Ņ~īMT·wl’Įć҉`łwn'­:Ī?,˜ŲĢ3ļŠåCų“D×S„ˆ,d±Ē^ōė+™# ‚70äµ*D-€P2F2µEŲ$`0l‚}j՚±Ų†’Ķ’ć'nμd®±’#¹*Ćį€#<Uõ!+“HĮ­VµČzō ø(~fbŗ{Ō"5i2æ6i¹2Ī=½*Ō±ķU1Ʊ§d–¢ę’("Į; ėWš4ŽŪī©ć€})ŗj¬‘‘•P#'­X½ŲöĮPż¹ėéYčy›E:X¼Ćˆ|¹F ]ŗē] `2­'“vŖ›×ĶaPˆdČ;•x&•Ƚ‡iū„˜#œäąw­M%lģ5F’ä]øŠ×9,/”\:‚J–ķähAuß+|ʼn¤ćßc[„­Ēų²üŻß¶¤ūŖHĻŌU+TŹ÷īj±†gŸ (SŌµkEnĀĶ™*1JR舄]ŻŁ^?2+݁D’6q“Ō±Ē4׈…NNj­¬ę+”f2õ5~ėSib‰ņdl3{zf”nŻ™-$EČC·óō„–P…¢@U€ķޤ9•lHéN…N^^®s܊R’6„R8žK<!ŗœV<Ұ yĪx«R޾•v©‡ĖņÖTņrŪJ‚qÅTbķvf•åvHņĘpzÓīQK#(Ų~½Ŗ;BK09«Uā*ĢĆ=1Sź\›{×Q˜į‰ļŸj.`_³V…„P,Ė’Ą÷9ėV¤µG™›ć®*œ¬g+½Ž\Dc,„€jü2‰vœ:Š·wožCO„Gp™Ā”;ļubSoN„s§˜%‹mėėIonVՕr_ÆL`Õ²±‡š9­F÷&l7^Ž“]­ ²Š­cż”™¹Ü*ōŖDźä|µZÖölģĒrsRO6YYdŚ¹Ķ ÷Ō›VEÅ;ßē,IqłU‹2i$ŽąĀåq€Ų8¬k»“]ź€äŒj>v*Uɻ֎)5¢-ŪĶ)˜¤•ĄūĚÓ2ĀÅLe°¼œ÷¬”ˬIn:Sdøņn8b¦ćŒä·6hšÅ‹)J”pž`ŽŽ ŗ`VmäĪöź’9#½W°¼‘e*bb;`Uǹ2““Ų¹vXD7Ę)ŗ9œĢ¬åŻO@N8«€Ė$*6ŖØžõh]ĂÉMøĢŹ9=gķŅʱ‚Ż”¦I|hB1\g°­=OkM9¤ŽņŒī'Ł™lŅYC†nHбŚÅ;É&Å܊23ž5ŸzŽIEHĄÅf–ššIč¬Wæpdi#Ūøž@ÖmĢņ /‘»ķ«WA­gȲ Ō1X¼ÄÉ»lL“bB•ļsGĆ·[q&üd`-kŗMövĀņĖ‘ķY:}“6Ī¢-ģ¹Ļ^õÖ,–&ܲ®©ósŽk9;»»Ķrއfa“2njć5NąLuC±^¹ĒZIÆŽYJ±eE?tWI”Oo;h€&ĪiIØ"cūĒvAh%r”÷nĄĀ®¬NŖå_;F SZ)n‚Įfe`ē®}+ K©!ŗ >séY9ŹHÕ5»3µb坎sß­GceöTēŒńš»ØD²Ÿ1]WŽNx4’ڹ”Ė+<ŠTēƒDfŗ“æ½KØéQß[F<Ē„Ā0×ך¬KŃöƒR3|Ņc>•ÕźFImŲƶ(‘,Ē5ē^"•–l,¹aĮ9ė]qzZĀmI{Į}tŃŹ@f 9µT“S›ęC°ąœ5P¹™ŻŌĮéamĆ«w§Ź­ļ¼ščjĒ38~Ē+Ė)„&r[©ŖV¤¹8ĪW­^Ša[i'ŽøÅsŌ;¢ō°Ū[v#Ćޚ˶BĮ Vå¢Ė țåąŲ¬}B-ļŻHe$KW©§*zŽ?=¶7ž“ä²%Żzmō„·LʤdĪEhü¤ ×ę$Ör“LOcŸx'ŪŽ*Ģŗ~ŲVMł,yĒJŁ@*bOT¶ Ļt‘ÅWØ4łä£s5tŁ›¬Ą°B¼¹sT&DkpNrFqķ]N»d]”üĄqķ\żłTs~e dwśŖrŗ*¤Ūb¼!“ÆAŽ 1„Ż+'=9«q‚į‚&r6ē=*ƒd[Č;ĻÆzŃkø¹]ł®Olķ…<ēėZ°I½Ō°$X–®VEĪp}zVż“$N«Į°­§B —SBʐ3Čķ]/…txõ-ņ<‹,npV.š’Jķ¬¦ū5”T`±ØĘ1É5Ķ7+uU”¢Ō]{OšŹx÷*ƌA4Ķ™·o8ŚIŌW“Ü_Ī…‹yQ®1ķ[žµo!ēŽ5ś‘iOHŪ©ĻNY“ŖŹšĖ@yĘyö¬Ł.ö“;Y†r:fµõ“—ŒīyĒz÷¬ĖĖd żāk(ü-3”KF‘×xæU…®–”Ž )÷Xć“T,®\i’M cTsIŚdF0Ź8%Ž+SĆŁóZ$2»Ę…žsŽXVPI/uX¶īķĶ÷”ōāVn_€r¤g­s¬f½‘±ĪŪėėg ä‚Ū&Ō1Ų[ŗö®I–CŖÉ7†'Ųf»)Żn`éŽWŽä WWE@ _=x®Šö5’7·uŲPm$ƒRųj „dRĄŒūśÖ}Ƶ·ļ²ņw56RwčjåkqšņŚiBĶ`_1ND€r„d‹›¬p©ŠÖŠŅŚ’Å mvĢ#”œsŲfŖÜé³Gs$bźßÅG~†·ŠLž~UoŠ”ŖKe Ģw†=ރ5B)ą WķO&⢻Ń#¶bŽeĘGnµ0!•Q!™ä>Õõ½ˆ¦”ž…čI’@#ŗ–":q[šeµŪ Żp²śœ`šĢÓ4«éDF?ßÕčśDé ™$‘}Ž+V=×ģ„Ėļ›Oa%ü²^ՙ~±B¤5ŚG@µÖ\Gn‡ĖyĻØŖri6.ą’»Ö­U¶­œņ\Ś#Ļf,·?%ŁĄ9Į^•æ£ ędŪ©Fvņ «:¾m–RŲCG²FøżŪ8*qšŅqRÓ 3åv±ŻZK:Z…l?qÖ«ŻKu’ńŽ UHmļćteÜcĶЄϩC.H·TĘę¬×»pš±s„ź¹Kf#ż¦Ķgjŗf¶÷"vƒĖĻÉ!”¢ŻŽ[!Č>QĻ™)¢S’WEÓQ©~c2’B×Üfå{TŚfƒā™SfųžAó½«sPÖŁm•¢Ēel’:毼i{m+k±Ūå µR“֑9ײ¦ģōõ5­“­~ŃϘD¤ö ’iµōuU†ā1Óå|ƒXš±nš?-->qՉž•—7‹5łX¼AcRz„TAΟM=PŠ!Õ&eóćIxÅu¶vćŚņ±mæyڼ2ĆÅźØĢuĮ"ÆėNŪ¼ŪÅ`mĘoCiĶ%{Į.˜°¬p{¬•Jö;{8XĢO\¶HÆ6“ń¤„3I~Ųė¼qü«Tx˜ĶĖ«IeœƒŠ±z‘).] ¹oté%Š ƦW“ ’ŅHy…r¼ü£Ć\ßéR>ō±øI1€w‚ęņå†-’ę%ĒaščPmčcķck\ļ%–Ī(ŁćµqĒ_0bØ&”qtRĀ89'*Ļ^u}&µČ[ļ)OL©É«Ō5{ ”“|Wzīē–ŠåQ¦›»zĻį{kµ;ÆlÜ3¹dČĶl^^bŲ‘²cž™ēČxĘŚ‡ŁĀI§Äē”$¹uÆ^\¹1Ū|}Ņk‚9Ź^ś±Ó‰œTW.ƹ¼øhK¬Ņ` LĢ›[»I ­ŠīŽ*×5hFOP=wŠĪ½ń^¤£ÖŲó“ęż+uA®‡+›Ó‘®ƒŖČTr=3ž m›ē‘i¢ĒūGåÖŚķå̘[+D-Ō¦kB mVvó*)ēqYū扛ĪS²;‡¹‹Ģ#ĢF#ƒƒÅEØ]$pŽę8’ ågŽkk\Ü]Ŗ{F;W!āVŠøPoŻ—”.gš­éоØē©UCKžµ„ė@|²ĶøŽ„/<óCu¹Įˆ¶;œW†i~+OĪ,š|’zc[±|K+X4»]Ä`‚ŁØt$žˆ×ž2‡3g¤Ü™å"3qemĄÜ’…U‹C…g25ߘIĒīŪ¼ņ\j?½µ‚܍„qV.¤ŌcF’Žé•1ĪjŅw²v!iµó=[Ńk9=ėZö³A*ŽY źzW‚_ź~#Ü 2ƍ¬ĄāŸ¤j$›–aŲJqU:SKFę›÷‘ō2j@„‡‰ŃĄéĮØĪ—#ń ³vkÅą»ńŌėę[\?‹#&» h˜ĒŚ'X łkŠĘTÜ#{³ZQu$ŌŅGdŅi²­c?^IÕ_/O†RŃŚ4xēę—łŅi—03ģ[”pżŹ»'‡,o·I8‘I¹¬Ō—Śz:m|m׉mlNÓIĻšāųO­D"ŗĒJ±ż‰mfž]°·˜…ĪZ·p…EŻŖķė²<žµ¤”VW3Œ¤Õł¬yƊ|aŖ¼ēČŌdHŪ AŠē¤ńV­‚æk搓Ė%{=Ģ^d;m“>­sšī›d’5„¤ :ü ]1©NZ(Ūäqŗ§£•īyķ­ę«y2‘«"·ūYę¶lō[ū”ĄÕīQæŚČ$Öõ½Ń¶CYlvąpj…ż®©5Ȓ7–%ģC-i~„JI4’üJŅųGÄ+—ūf`¤uwdz”iēN…MļˆvČ9Ģ«zV›©I5ęÆņuĆ7}Iyk¦BO˜°Ü–ä@ėXÉ*ŠĶS>«^ēA¤_iŲPŚ“°äšµ«-½Ō Ō’#®ąMch įå^Čg©/?Z¹s©x~ŁŹG~qēn8¬įYUFQ\ļó2īōhYs/ˆdž~qNŃtM*Œ­ŖŻĻ·ž["y«ŹÅ~ˤéī3ÕśÕ?Y¾Ī?³tÕĻ$+`ÕŌēh¼;ŠŌ­ā+÷‹?`·šUQŽ!"¹ _Ē:¶’æ.“Ļń W¦Śź:Œģčš°ÕóK{”Ē«ĀVöČBǜ :q­N6DeS _ć„+ß¹āWuY"’ ­0*tVŒā¹]kÄ:Ž®„būDE†@ØÆxŌ>軉’";“*ŗxWD²¼½]Ąż+xՊž9„ƒM§[sē3Äī­œ}I­ż÷_™<¹ą’U#ŖõÆw±šģrĶņƒč+gOŃm-ćĆYD$ ‰É7¦ēm:qгŪĢšė_ĖØ)&imõ’­RĆįE·ĀÜ^$˜ćsö]KA“¹!¶4DqņœqYwž³ŗmÉwx‡Š‚EUćo}˜Ī59“„“м3o¹ ÖĮˆū¹ŠĒį« „ŻCĮ,`ĢV΁ąqm81Ż\R»K ­Õ^[¢Ģ1“`×,«(»Œ©¹F÷Wó<¢ćJ²LżžĢFf‡9¬›ż6VlEaŒ:e1_@YŪG,L‹ĢGā”›H|Ē”'>«ŠÖ8ČuGŌdögĪŠiŚøs°€.xEu^Ņ5†P”tčóÉ æ7ҽ‚ĻJŽ'Ż&šžéŒVŽŸ¦[™‰[Y#'éXO±ÓK—Äy­æ‡o<Ųå-ĻśešÓ]6ŌŹEµ`98Š»ūĶ*ČĒūŪ‰Šć€ÆXZ‡tÉ&Ž·»¶ą6ņ*cYIZL%JJ^āFm¾•§Ģf_Ė5©c¤éĶ„Xןā&¤·š“(€‹ė®{3V…¾•5ŗ|Ž%ć-Ķ'Q5nbł*'{,ōm>A įŸ5¦œ(ßPĘŖA«Éa7—-§˜&ŸuāC=ŠÆ¾ģŹ1•õL„V-^é„­ŗ+5½¹‘Ąćsš§u”$d*Õš{óZšv³ Č ­Ø—ŒįHĶIØ7–wEqn¬0HJ˜ŌjZ#Z”ÓŠm˜š}ü®éö÷;”~•ŌiśDb ܼQœs“cĶ}9āĢ— œc$kCm”#ęf^ĵc:®R²4…%źWµ“°ƒ{•ŹśōÅ`k^+°°ÅäÜü§–2EtwWz\*wŹP ÅŌ5_ £fyŃŚlbµ¦ŪŻ6sŌŖŪJ3Iv§ų‚ĪžŠż–œ‘œ“ejī“xźq*J?Ž#Ėė#Ó£Rš}ޘ3Ótøøoų›QóXø·ņóś×E<$¤­s*˜ŲS•ڹė^.ƒMšļ<±9p?>k‡K¶i£ŗµ•#l•āŗĶćjRŠYĒ9.9Øt_źś%čWf€qóŒŒ}kyҜiŚńĶB½:•9¦¹WĢ÷¶šÖ‘pźŅÜK¼ó“JV“ąš•¬1µĶūĢĘøüUŃ͊ŦĘń½85Žhž8šµÄAb¼ņŪÆ9ŌŖō”_Ģõ=&æw%ņ$m>öŽū.›ąusŠ#ƒYž%ŽKKXFyĒ&“¤Ō¬ęµSoŖīŻŃCT¤Ō 1–I1ŠŖŒ„-RDŹ0ZĶ’.—=°ÜfRĶÉ ½*ޟ¤™[Īū[.:‚€×9Øk§ Ūī# ēęN*=+[’W1„Ōp†īüf­ĀŖW2XŌ¢ŽŅģŲŪŪ÷CpļŅÆx{T°ū昁žs-aöėeP³’€?5%ށ40—KüØąį5“„mĶ©KŚĘMÉ$t“x‚ČJc ŪŻŽ?„:×QŽR¢$“mÜē5Åź[mŽ>Ռæ2ƒX†IMŲj'Pi,<\4c£Uµk\õ9EĒĻ*döQĒņ¬ė¶ż ĮīóG#č+žm%o,É:ĶĘq–ĮÅbŻų7Oø$¾„Ų¤•(Sz9ŌE~To[ųóMlsŪLzĻҵt$’Ų=Jäמ·€l"_0ė1"¹ę€*Żš§†“_(,ZÄ~g\ łÕ֍“TY5Ķæ©éöšŌ’[yˆŠÉ…ĪÕP+2ó^»kŽ44›Œn暋IŅķķš‹!”Œ|Ć„^Ō,^&°0ÅrrSčääŚoaŗ~­uø¤–Ś“Ó÷€ńō¦Ķ ÕŻÖU z“u&Ū€^ęéŹń€®‡CŌ\[©_“ōŚ ā›N¼ąć?‹uęA{§źžN!ŗk~1•?­fa›dŗķā(ą…®Šk»ē9aœmQĶ`ų†īź7-5•Äcæ«£ķgQØ{ʎ›„“,u;¶aĪę’«Kr–ģ!iÆå«EeŪxŖŹŚ/-ģ/¾¬§„TæńÜŲ[k”Ō*øÓ’—¼ŒźNöQŌčm/“՜%ęćÓ÷G©–ĪŽžL²īą»+7J¹µaūØ£bGGÉ­«9lĖ«OćäéśTÉŁŽ74I;FNÄŚ^’`˜Ō©śšéą²hĮĄĘk'Nń.‹ęܘłI"“5 zĆŹÄNĶĘx®zŽnJ.&źt•6ć"»Ū-·y Ļ@™¬Ļķˆ\‘o¦ĪAü˜ĻćYž3ń]†§“’ÜĄøļ^s§|TVhšÉŚ,ąmmµŌØKŁó¤p¬e7US¹ėV­qpÆ·M0nž&l“Y÷Z.„#ł”jž„ ēn>$Ęm± ­Čb2?wœV§ć-Zį D·{s’TN”+?$]J“ļ³ŗ=Uņ¬Ā4‚IjČ{ÄG(mŒ@šYS5ę–¾+½<ŚÉ;Ž0ć5Öi^9Ōb€£i €¼3sŠŅPœ4J’2aYIó¹?øļ¼=ejĖę¤ß¼eĪš«ré·ÓŹ|¹ķ€‚§+Ģ/ģś$›ę¦Ö¦™{is ‚-vōH8Ė–cœ}*uŠõˆ:j2Ž!<īĪkF’B’įŪ:¦ī€q\}ŹkžŌ ėq|öąē8#¢7šš0sQ³ØŽĶ ÓŅŁRžĶ¦tćIØ/aÓ¤m4]«Ī$LW=ō&Ż _Ąņ”ąˆb,•[øų”ął4ó,_iI%P‡’ÆDUEŗf²­JQŅJÄWLr]™#Ń죐|ĆjÆ_zŗ—:¬Ŗ™"ĘՅN=«­ÕźĻg¦Ź¶Ģ>šŗ Z³ńÚm¦fŽī9Ōdī×?QZJņiY¶s9ÓV”„c]fÕīC+&SĄŻ™qįĖū†vh¢„·CcōÅsWŸ-—žAzlwjĄ–(AśTžų‚śę¦mįÕ-ō©É?»:ŸAVē:~óV)*5Œ5-Ėį=v¤’Ū]¼‡d+]N”ėN‘›żF9“1qócŽØź> Ō4‡ņĒP¼ņ$··łHśÓ­üoęm‰ą{G~@˜?a9Jv•¾eƒ –÷ž¼Ķ™ü)dÄÉ ØdĒ;¢Ī©j¾³KL4qłŽyat>»½»‡{Dņ±`üźżģwĪ ”ULšė ©i'¹ŠčÅĒcĻō²_¬Éq(ćż^܊ō:ÄĆ ĒpĢTsø šŸM·‘†źŚPFB¹9üĒZ³wk1Œˆ¦ņ[y-XŹ·<ļ&kģ•8%že “ØDM%’×@śfŖ“ŗŲĄŽÅ¢oEž>*®”§ėrĻäĒ6ŖČFķģ~ZĘń¬Ē<½ø圲Ę·JŹŃ’¹ĻRķ]¦v2źļ)72„~ų'łTšøŃ®'ū=֛qxG¶ f³¼'ˆmō÷VPLČæ,«p?Py¬ĶcÅ~'·ø+…›ä|¤J¤ƒYAVr”S8¤—āu~‹„YžžÓG€ĪQš”®ė×¶³m 6ž½…AĶr-ā’K‘=Յ¬Ņ”NŸ(’ Ššõ©Ōį)®i­<ņ–źÖ|§×ÆzžHĒß©©£œŖū“¶:/xˆŻ^˜.ńųĪęŪż(ńf£Ś!ŗø·lšH8ė\^·ą+Õ½f°¾Õm£'å*Ēń©tżÅöb{ū©ķą™NńŠē¤ōģĢ”%R<µa©ŃųoEńD+ĀH‚Ū²l=É®ŅĀź•¢½½“–Ež%č>ø®[KŠõ(ą$M4Øy"&Ī? NŅm¤Ō<»Ū BOm)łšēoŚ^VūŽČĘT­ĢŁ×¶ńv£„éą¶§ ¼›W¤ tükćŸų)ĻÅĆ`‹ĆV±ĆÆ]:“n| M|›ū@žÓ~=ń÷‡VĻSø°Ó-ŠcżbGėßØÆ™u_^H~Ū5ÕȈmŒĖ!llšėĆŹ )I^KuŠŹ®¾&¼Ör’ÅėŽ,×>ßŖÜ—•P8Q„s+«_ TŠ{…ł{ U–ćķS™ ūÜUĶ0Ŗ©Ś£põ銊Õē7vĻJ•%(„cgĆŗŽ”"I/®±é¼Š}żĮšģ»9f<’NjœŽ³ž*¾©(‚5e,99湤ōfņ”t²*kÓę6UÉRp~µ›„Gœ_ęV5Į™¤Ā³ »„!W› ßjÜ­!E6īhĖ.ųŠ)ŚJäXWĖ*ĢĢģyé¶“u9Ņ8Ų”8k6Āē̺˵Gńu4E“®µõdŠ1H·0$u«hĘPʃÉéO†į.#aåØ+Ē•%£¤rćĖŽxTsóhŹę](h©¾Ü¦×Č*:q‘Ļ֖ą gŻ“¢ŠTsiŅ•{j'vŒŻŃ¢ ŒHŁźjĆČ㠈rGŽ5(¶"Ž@lńĪ8§¤`o I8掕*]‹’^ՋnPCcÆÖc‘;įW ;ōØ2®ųA>˜§É2†ü£×­ #cn-’z@r7uĆTL؊UYœU€ęoø­/ņ­ Ķåk‚ēv*›¶ŒQ§Ģō2-ƒG‰ ėÜö­ex9ĪüzV…śA¶‰×gŖG2f9 Åd¤˜ģÓåbZįPķ#v9Ējl®Ęo7x;xÓm@€8Ė–l’MM{¢Z¬ˆĪdo¼£¦*ā•÷Võ"{ͱp]I9 ŒŌQ]$ņī89É s@V)ŽĘ°õ2)¼¤/•¢Œv3r’ÜčEģnĄGŽ8$T„­š»ŽąÜ~5ĶX‚å]ŗ“]*CĻ'Ü>•œōf°•ÕŲؚŻ\• ĄĶU¹‘¢,|Ģ+zŅ£–Ł£rBœ2=+'U„–”żÜ÷­"ƱoŖ6m 8łŗē5b²¹iw šęōi†@ó\œWZŠĘ­&Pŗ¦iGqs¦ö"ŽŽM†hĖ*ĒÉēœÕy/§ŠēbBJĖĮv5¾…$„" Ea†ĶcźęŽEߗģj‹ō5”n®ÉQ£ē 2j؈—ė“v$õ¤ūC,9Ś@#ó„d”ÄY—fyRO5q»V2Lx;B“Žžõ&ł“†Żō=Ŗ™¹h”'w?1õ§=ĖI ī;œsÖ„é¹ Ķ_åLNī~•[H ¾KyÕö²½¼·2!…QNs“YšĶ°ufš@łzSKM j'~åƒ|ė;ģŪ“qČļMkŁn³ĘåĘ1ŚŖĘÜŒ‘œzŌ‚O%Llłr1ń„v¶5U- Óbg¹ĆĄēŠ5ĄvEŻ×8ķ.āX”ćĒ>•RłåóŒ™cœgėTīŽ¤§±4Vņ.ùža=ؽyc)„÷ĻLT–—+)\‘ņtÉ©„$¹Ļ|šĶ¶™Ńķff]Ü턺a˜ōō«ŚfÆ2ŁćŒŚĄöØdņdeŲ&3ĶS»Œ.dŒž U§}Ńé=zęōȞY’ש..·]¾Zķ½k [Ī‘äĪĢsSY#į‹BśśVœX£i"ū•s¼3nÅ2m­·8ȉ7—l«“ĪxÅE5éI#i-Ėgä/<®OBōµ‘*[pŲĄałŅ¼ Ī7^Ć„+\yūŹ…zżjxDr`€ąqSi&KZhPŌŌ"6ęۃųō¦K"ģˆŽ‡8„˜£ĪHxźMVøņŅuĖąø­bšVfičh #Œy›Žõč;V]ĶĖ™ÉUmĪ{zŌ®’\ɈŹxĻ­[‚Écä³n5ĢnŪÜ©ȱŸ1Šäc„iŁĒøĮ:ÕØę_oŹ”'§…`ä±QėI½R»/Ū¹iHĄ;[ ŪҶt–ĹĄäŒt®oF“¬ŖŽXž•ŅiöW bÉc†‹ŗŠÖKmM+·i]•Ü„ŪǧįY…†č3r Ą©ī]—1’r§Š„r¬ä"|ŪŽr;S‚I{Ć»JŃ-6§,“H–ä`2N>µ3ypŪ™ežŁY‡@NkŸ’-“4hÅ\õ`qųÕ+ėyM;XŌqžriĘ׊ÉĪŪn‰5īķé&įž hEpĮęH@^œž+ĆÖå“Ģ“ēīńGˆÖydвĒÕ±W}l†õĶ›5¶‘TĒ ŻŒÕŻ3MIÄ„ŹŠē>µ“§,pZ* RHĘGzßŃćŒĮ ŽcʁķYŹČøs5btøĢ®TåŒ{×Eį-0ČFČūŏ„fź²åĮ'wZnŖJmŪ/²=øqPļĖ”\·’RŠŅ×n[dØ$o.2@= ®RāįžF=Qzzš³%Ś=“·žOsŠŠŹ8ä·,?»Ę²–‹QÉ6ō-xF»ÕĶĀŁ(ŲA8'Ž+oÄŚ„ir–PĀŠ |@ĘGzÕšĶ…œši»“LVFPzzS>,[ŪM®Aönā6¤w­‡ƒĶ™J„¤÷©õ(%Ź2‘·½T&£¢Dʔµw2 >B¹Čü*Ž„pC“ćšƒ0‘йqTe‘‰˜±ÕusĶe.NF8®ŸĀ°ob>A•Č®Fd[¤ØŚ"ŗżćmķŖƒĒµrā$ҵŽŖ*-źĶ- ×L7nzśѓĢh0BŪ÷Ći‹Žˆcłū5£Ø;„¤*¤ī~ ×$ Ö§T¤­n§O¤Ä&„ElĪŐ č+£×® :<jŠŒŹ#vSŠŹų|ööÖĘ9ƇbFxōėš£ZĢnY\ƒ“Ž“^ņL‹ÉŻ”„ń°¦*[ˆČĶA)ĢŽCČŖ„¾V&¶|c©E,`Yˆ#Xć*łõõ®wĮö­ØF„“Ų`K*¤ÓŁ•ł_¼iGn„M’ʬAmܜU’ ĮöGøDm×pfxķR_Ü*G&— ķ)$Œö4ĶnĖū6 :3ʃ…=8¬-)+#Xø;I³źeģ¹q¼õ­› '}²ŚĒĢŻ;W)tž{Åb0æ)9ģk²ŃdžĻŃ HŅ6ó—ačk¢Žķ“åRŚåkŅ_0ćj>½æ­aƖŗP¤€Fs]~¾·&`„¼õśŌ:—öLq²>mŽ0HGī}E*q{#'QNWqĘé7k!ŹĘ[ę-Ę+] ·,H”œœÖUÕͶ$ *lvČ5Ž2%\œ×Dya”„ē}‘”£K«\ωģ čsšŪ†Öxåˤ* ęø Å®. J†4Ī@ĪMo?Šģęrۘā½īIģ‘óņ©ÆĪ® ›XŸęšŻ[‚ETÕ/žX]mö“Ł–° –rČ&@˜"¦:“1[ķø øS¶ĘU&¦µŠĖhÆ^į¼×v$ÕµžęŅ?ÜŪČp9Ėu«2^Äv• źwt„KūBGļa$ŽĶ]2QŽHĀ<ńVŸy®ČŃ„°‘8ė¾įŻF3u“hcSüYĘjŻÄŠĒF%ć u¬[ĶaĖ–1  4r'DŖuwg”Aubč¹t$uČ TšŁŁ]Có^#Ø6o–KR)| „ÄĆqrO„\·š~Š–įš‹·œ5ičß^n.ą+ŽX75.££ŚBĢĘśpOĢq’?*j­ō¾¦Ź‹Žföw‡-¦żč¶UrŲ­ż’Ƨ—–½>č=k/Ņ£G–2ēę U›Æ")Ś$x±® ę±Ą–72ķežŁ’¼:V±P”w1ę©ņ£OSń•¶øŽīR0kä–ē¾i rvElh mÖ@ķ¬0Ą 0kæš÷‡4Ū5U3 Šp^µ„±1ŗŽˆįnłå#Ķ“«+»ID¶ĪĢųĪTŌ:ƈն _G½^(l ˆ ž¹ĄéSĒki8ŻöT\ņ7(¬V"»ˆźįŪÄż-Óu]ee-qcm"2:ŸŹµ®$Ā%¼‘Jz…½ŪMŠ>U!\õłEYh¬ķĪēū>ģuŚ9bcöPF‚P“š±åW‡]#[Cė×kŒUūk›–¶ßé>^z²ė]n­ØZĀß»1cČ\Õk-nÖf+ö˜‰T„iά¬¬MÕ¹Q-®’cÜb8ž"McĶ£Å4Ų¶¼·RyĖŽĖs„2Ÿ?쀵Ķ"’e™Ā`!‡š°ŖööV"#tŽŽ§/†ļd€GöĖe\pRVØķ|)­C(1H“Øé™ z^.•»XH9$Ž+Z+ėP”cNpqšĖėsŠŅ?k Nüķž§¢čz®ą·6q¢ćŖÉŌÖ“>Ÿ÷éOpŸÖ·ļ5@’HÉĻCŅ–-V £ĢŹć‚H¬=„Tł‘«#_ ińŖ²™‰<QWō½M[rĒ« VˆÖ¢IS”\ŌĒVƒ +‚Oū=*gV§fiN7³"±ÓlĒĖAķTõŻ.ŻSēŌ/bĻ÷eę“ÅÉu,–N=wć5Zųyńōbƒ×~M:u%}LkŃ÷NRßB±šš„ÕļåC)ĶlŁųNĄØÜ]ß=d9ęŖĀ–Öŗ€ ēė’āŗ‹ ”tĢxB¾¤Ņ“ęžŒ0ō”ŹV‡G‚ÕvĀv”"HäĆO| й<ņĪ bz „„"Ƀi+gū€QKt”cÜ“ņؘ€"%uģĄ*[8ŖS#ū„c5•©KœĶ§I“õ=ź•Ö—ćģśdŪ’ŁSNJźźäĘŖr“™×Āc2<Ā;ć„KåŪ;vžzV\:¬Å6„ƒ¢‘ŽO5KS[‡ šÄŹž…ńśÖQŻž†•]•ҹŌĮ%„²ˆŠz* GU‹nŲĘ}xā¹{yµU K\»¤$Ö͜Ā{_.UHeŻÅ9RQw`Ü„>įÓė6ń)24qćēŠĖŌücm {a2H:nQš«ā_ŁOóÜI5Į<÷"«Yh6‹Ųį–0ÜšŗU:I&póW•ā݇Ćā})¢ß5ŪÅ!?ņŠcnŪÅ:q [ÜÅ+Ž>ų¬]WĆšą®Ų™;ļ5JĖšr‰$·ŗŸ/'5¤”M-ȃØßdmėŽ-¹‚'1Ū@}Izäfń~¹%ÓySĒ “”OOĘ»ōż"æs§Ü6Lń©“Čąąh”02Ē1œ#b'BrœŪG5§jóÜöé' yŻČ=Ģvs¼%Ļ÷d ×DÉyö„_°ŚyĻź+r6Āk_3ģ‰7mTŖÜ›-ĪÆaĢÆ¦‡1§Écin›ā½N1¾1šÜÓŚŽö0"¹½tžė?JÕÓmd‹ˆ›ĶŻ*ĢĖ a¶'GĪī ¬Žé FQåcm4ņ,Ā­'ēłÖVæz¶yŻ„\;÷ÄøŲŁźĒlhšącS]ņÅÓŗWhāXv–‰yÜņ˽@Ōšö‚FGPTҬŚx4EwęFćŖ0kŃ’±ō«.¶°L@ĘP…TŌ5«KIØū±FI©j“ųYR§Fm~šŻx U¹ i;C'R6åMxFžH‚\ŪĆ2©Ąe85wÄ^;¾7Ÿč:uÉE=\Ķ^мEā ŲĘķ:VÉąÖõg:vr9(ņTN0ONūü;Rw‹y';U«BŪĮ–ėĘ·ø·Į!«¹°ŠņX‘„›ģūŗ…lT~!ÓSĖĢ“_OŅ#€Eg¼ś3¢qtćt‘Ģhš­ŲźŅŃ·j±Č®’MÓ­ * ōó0^Lז^K¦Ų]±1\F𳜚×ŅüMiŒCg{&G-[b)Źé¢čb#8ŚOSÖl“k'„“ŽwŌ7~²–@‚ÅTw95Ėiz¤7‘(iu«öĻć]ŽźB…Kł¦f$W'5E£gt)§ŗ²ćĀš[7œ›ŌįŻU.1kp­NdoąÅo^éĻw _¶Ėj1ČU$×)®x^xɘjwģsĮ~•¬–“zœu§8æ‡CjŽžé’ÖZZ“mĘ­KH¢b6i֑¹w!žµć:õ¤‘Čė6­Ŗü¹ä“ŠÄdئ{}Ržf!D„ō­%‚“ZJĘ_³Ńiė©ō.­o(“häµMŒ0v°ž•ĮxAšłŽÓ¬ńŹ>l,ÖøÆ ų£_°ŌV1mØÜD>šÆMÓ|_„Mśu¼¶’•ėåqXF5i¾Y­<‹æ·4%§™ē·ńYƔµŠB1É|äĘ„Ņ÷DB'oõÖų‡ū3Sˆ=†„ ±nĄ"ø}oHŌp5MĖ—a½ jœÕŽ>z”ކͧˆ®lÜ©{é³ŻG„ŌuRłģŗ­Å™=|ĘÆ?63[Ü›QŸäy¹É®›Ćž·æ «JIŁøT:0„¹Ś“•Xņ§ų’‘`C­Mwμ“‘×lk¾šõȃNDŗ»‘\ Vć5ÅÉąėkr ĶtĒäw«Ś=­„³žYvć ŠšŌ”­#¦…UøÉXéS[¼Žō‹qSŅF«šßˆŻ óbl †Œ†ĶcŚišÄŻ6ē«Zģ|9 čPÄ6Ģcųf"¹ė(ĒŽHŅ”%%g'c•“ÄšŌWķ2īˆ`ĄžUxųēCµŒ ·¦<ƒ]¼Ś-£ŚķIR@y°5ēž6šlģč±’NNV®‚£Uė”z•©hæ#>÷Ēž[‚Š ¤psņĘ@¦ÅńONšdĢ3÷ŠÖ=Ļ‚ff †<7%UNi–¾.ų,łļŒÖ³”G¹‚©_ģ²ī­ćĖYŪ}µ¢E!ēÆćUķ¼Y­HT[¼~V2AN+”Š| o odČs[É  q¶Ī'yĄ1œmĖo¼Ņ4¦—4Ū9›xgÕb r¬¹ĪI­5|)“n‰•»SҶ›nNūå@ŻGJb3©‰Ū+Õ²?k$­åŽčĢ‹Į Å”’t?ŽRA¬ėæ­“ū“.yĒ?‰ÆWšÅ®čT™ŃüÅźeĪ+JćO³#ŽŽS9¬c‹W“µ:'‡qJIŲńhōė]’¹¹pź2Iķō­)WŹņ„ņ® ’+ŅŽ™„+ö;dĒ@(_ŲF<ÄUیü½Ø–"›^aŹ:½QÄG¤Ģa k§ō䷛ŸēZzM“ snbÜ1ø8"·–õ-XǼ»/&®K©Z„¦éōėĢž~XĮØu§mWä:~ĪMµ·Ģē²lĶŲCuoFz•£‡l$·*ÓĒ!ź žGćMųyŲÄÖ×PĮfŠ“ģ×LžßĶ·ćŠqXK$łdټiĀ×V±‡'…PœEØÜFO@Ķ‘Š`š}Ź>įs€÷8Ķu6֚|˜ó$™Øb9©ī!ÓaLĒuŽ0wHE?¬Ź:/Č#JS‘‹Ć×q11ÜB‡×8ĶQ}/RūQ>RÜ ą•Įęŗū‰ō˜ķ°óD īśę °æÓmccK n„[5¬q-ż“)FšiŹG?s§I-“E5ģ,XČÅaGį›ÜŸ)ļӌ‚z;^é—`~õąbsūĘŖwŻA16ś…±‡ū»O?ˆŖŽ"MZĀtió\ä!šŻüJ²¬·20"NEZ±Óu ;4×pńĒ”q]\7–rE‰µ/"cĮĘqT5+׌ż“QYTŽ  cš¬įY'`«IņŻZ}ĢöWJ³OØN£³Ø#ń­ė›Ķą,R zą+Ÿ“Ćž '|:ˆ„7¬yĶ2/j.āKNƂ@ęŖŖ¦ÕÕī]U®FŃæey¦³ ŪNŹzlb ×b‚ö-‘ΰF;y‹ĒēI‘2k„_jچÆvĖ$VÄó†$\9žĆ¼‹|ļ©I>: FŃVü7q„C/•ļłé)š­*ӂ‡*Z÷ft«TēR©-;ļ§Ł\_i"O¶Ļ^pń矯z”}£xµ\¶›«YI!Ś~•ĆŪ6¶ö,¶W·«ž$—p©ōtńM‰uAcĒŽ<ąW4iĖ–ŹW:åˆ\×Q±ÕčŚw®u ē—$kÉ0>ŚŲń‡uh-ąY䗮$— ōĶdč˜#,ŚüŽIä0+šµyāh”$½(žżiĀyÆWtżŸ$·īr—š‡‰4ė§é„nĮįŽ+cH¾‚ęßž&+–n¦Ü© ’‰ü6d-yjd g)ƒŠuŸ< ĒŁę@sæ§OʶÆ%tš9šóPų¤ŽūĮvš"Źģ"Œć?½@«ś¼ś ¼#t.Lqƒšą`ńĻĆł¢ח–ģ~īyžU ßųnķ‹CŖ·–OĢ<žĒ k›Ž“GeLdyU™Ņż§ĮĶuæn» )ÜNÜŹ®Ykžµfb×P%<žµēŗ•ę›+ …G ¶OĖk:ī—v}L¹ĄgłWRĮs;Żżē³IAZÉ|NńĻÄG¶‹ž$śe‰R§ +'šĒį?|eā»ūöo:-4ÓŗąšŃ·ń&‡råUˆ7e1‘LÕn“%ŒI„»cՔ×mtćī„©Į‹œē9KOė±ĘŁųÆÄ¶ń1]Nņw£ƒRŪųėĘo2,ÜÄw)ĆV„Ī«¢D­¶Ōōą†ę³†«¦;f0é+ōŖt!vŚ1uź4”$Ī·Bń‡Š.~Ķ©\ĘG‘šļ“OxæŹū5ķµµäL»NyÆ]ST†6’FßóÄäŠģ>x«}Ѷ¾£yŹXaś×›ˆ¢¢ÆdŅģz˜o®Ewójr V VĀ'SĮ ¤é—ĖŗÄ%«–݆‡ē]•d¤“”u1§•į=;>ų¬iÖ±ŪĮØż®Éø1\‚Ģ£Óqę½KBŗŅ^>µÉiž(·Ōģ…Ę„—2±*²–śb©Ÿjhļ ö›ŖE°żćsłW”jćužujĒX± uKårxĖ0•C„%¬Y£­„š=NmE‰e¤gĄĻ™’*knœß`»ŠĖ€SŹøm?Ä"o£œļĘ“”ń;³+E%«r¦”S«kÜŃW„–Åų|#«­±¹‹ÅšÆœævĖ!?ZŸM»ų‹ū9øÓ1¾H?˜«ZoЬēQöŃy…p6»(ĶI¬x¶ŚĀݳ°ī©ŽēRį9»J7f®­8.e+#{Ą2ė¢įʧw`Kæjźµo³•Ž@Y‡ó^GońLÜ,e2’±jėVī|}nbó£Ł˜’W"oåXTĆTs»Mżr¦¬īv¶q“7GĻcqž?ÕüØńn±§čś$—×­ccoĖÉ+…?ZóŌųŠa—ĶžX±—“ĶcńšĒü7ć·ˆ ƒĀŗÖĖ`ĘK—†MŁĒE®Œ6 ԟļ—Vpcs'Jš%y>‡²ĮC~<čŗĀFOėšmĪ·vįŁ$VhĘy9łkńsā'‹¼]0žŚÖÆo‚d¤rIņÆ>Ÿ…dÜM ÕīewDūÜ©{§7œæs±ö®…‹Œ`©AZŻz²éeQ”ŻjŗßīF}“³H„¦%ˆąjtїRH;O¶jāGµJØ㯯֔]ø29ĄēžõŹåvŁģŗi-Œūˆpcm£#€*ž•µĄLņŲĘi·“6«#†=źM ™µnły©Jü·2ėbö” [ĢęE#ŠÉ—÷¤ž9śÕŸj÷ā#–ŻĒĖéV­¼›{5” gq÷Z’‹åM“¹“3'¶^P"0<Ō7ζ±åĪÆ<óoø“…?Ā*·ˆvĶu)?0ć„RNéRkŻ2ēøbQ؟;¶9ĶS„üÄ ‚Üqō«÷šuĀ£2r‹üU&•g¾<Œ<ÕĪ„“¹P„ž¬GóRR0vž;ÖŻ’l3ļžh²Ė‰wćyx –(¼ŁÕ7ϵbކVvFĘ-ąÓ7Vw?z¢²•Ž™5ŗ³)‘²¬½æĪk@hr‹XĮ”0nƒŃņNēĒõśŌ–—J†•×1š@¬½Xmø0Ū«zž55¾`l·œU;[R"ś%­õ«F²„V$pjćŻÜ:ÄIB¾€vś×;¢ŲJ]Œ4C¢õÅkŲĒr²«ŽsŠVM®m e+3JS…r ‚2qYwv‘Üź "€—æsZ7*‹“±-Ēsż)t‹Ē]e?vvķąķõ§ĢÖØ§õE/ģ÷¶\ł`lņqU5 $‘ĘŅŖGŗo™n% ¬œõĮŖóX5„ 4» °ąć4„&õAÉ}.eXŠ dæ®3X™Ģ‹å<*9ýš“/°Ž9Ą¦Żē#`fžuQŠŻŠż,|ö1ÉėWāR`TPUˆćĶ&ŠHVY…#8©µA©~[ååN)IXæc Ēi»vqR\܈“if\dV 𬯠Fø'ŌÕY%f‡xfé€EG³Kā&3»Ü»÷d,d=»Õ[ł‡Ź§åŲ0zÓ&»ņō×PƒsŽkžæøv¶ æCĶ\bŽäĪi莚ܦHŖÅ˜<’GZ°—±Ā ”sŒś×-£ÉPædsŽ“-šˆŚC½śŃ%­™Qi­ B7–Ų¹$dqS[ĘĮĄš9«‹l¦ĶvI’Šr+8ĖČŚ[Ž85›•Ż‘¤cmI/-ƒļ,3ÜwØ£]ˆ–ŚZ³q9Ų2ķĄē’ÆU'|½ŠrŲĶiJÄŹŪ“~ļic&ÓŠN7³@G۟”ŸjȹvóIäcŠĘ ÉRiµØ*bh,dNņJX޹4ž–/ää#ü¹Fi>ŠĀ1–=y¤ÉĪsÅU•6ĘJ‚ ēŽµø(ižLä`t5f-”¾Vūø5œŁ†8½5K“ŹQŽĢsZ‰+‚ģtÖ:©sŪążģZ„h#MŅĶ’öīj™_*Ų…lԚŠņŠžfq‚iFNÖA*q/ĪĮ˜€>€öŖ÷q)¶ß$ˆ¹§$ŠŒĮŻAŠŠx£žŗL/×®īck+iymź‡8ąœŃz¬INOzæ¤ŁÅk6ä™%Vcž1ŚŖ-½ĒĢÜS‰Y"BBĘŻ8ł»U‹;9g†UĄŁń…\ŽŲĘcób`@Śß/&¬3y1ą õ-ĘößSļN nY °ĒU²71|Ī͓ޮšę~Z8ŸiaĄ¦Šm<Ł@¹-ƒĀžŁ¦¦Ģ„s‹œ»¹M­‚1š½įķ,82ÜŁŚ»RcR¢ŽTģȱ«ŽŠę¾•]€Šķ<ž”§Vѹ²V’Mjs¤Co,kóc+PO „¾aę œ×u«é66“H †P½Īx¬ū–“›a™š5Ś w¬©Ė«ARJö[œ«4FG’Ɔć„Kaff—~Ƶps޵b]3Ķŗ.%0®wm뢲µt²‚OUĶ­Ģ©ÅōC4->Ł”Œe•œRݚø¹hŒ‹‰6ŚČ ģXö¬Ø’yŠmćqļ]F®°½©U›ęqø‚k›·9‘Ō“…89=ūR‹L‰S}ī[¶±Afdrßαueo<*”O5±ewöy°ń¬Gń՝«Ź²ČdXv)ēŖ+]A«$6#Ÿ‘=NGSQ2y»²Ջ‘åłFꦕRKr„UN{tŖŲ%;ģ7B³iG˜euQĪ ®³@HžŹĢ£.ŸĪ¹Ż>e܀€xŖ®„=„Ūł-*Ū¹9„ģœ†Ŗņ½Šųœ–‘šXõĒjǼ$Z•CJěR•ī|ÕU9ąõ©ā¼ibs!ĘīqéO’Ś1F§3ŠÖ°– £“wt×Ņ“¬ƒ$˦ō=«œŃURä±nq»šé,äó/­ā¶Rģ±Ś¹ŖĮŽČč„Ņў‰ÆérŽXi÷öĒ"UdŁźs~0¹6Ļo.#œ×[$÷2č’Ł«µ75ö:j󟈲/öŗĀ ;T.GJĀ‹i¤ŠVäp÷wf6®E̦”ł£ū×=qgóī:šź4Ųa2¬aņ‹Ē=*ΧogŲÓ,ī~`: ģ…F–‡<`ķkÜÄšž–&S.𨼜žkwT†įÜŪn ē•Jž{‹»²Ó3mžqPų‚÷Ķfø”ķy¤ĻĖŠ}*χB-é¹14å“qž}jŻ;")¹6\žŅAjžJ6нIę»O‡:|“Z,Rؐ3‡lŽ•«ŚŽ •–@ŒGxéųW]š’’fžY^[ŽGAXTŒ”SGDf“.ė\:`I˜DÄnk˾8_ŪZKVč%™Ļsė^‰ń Rįs{Ø9"GR x‹oŽūT{­å»aGlVŲjO–ó0ÄøFznA§ÜM=¼ŒŃ•,ŁĪ1Młæēąj]Jī¬Ö4 ²19>‚ GŽ„ū×dT^¶0Œ—SzßLÓ&@ %‰ō<Ō3ų^f›t-*Æ”ķ^•c„ŁF *‡ŌŃØ%Äj6OōĘ1^ģ1W~éó¾ÉrßTp:n‚š¶Łn.S<ńė[0hčœ}®cč}ėRŚMPĶņ­“‘ē©<×G¦Ŗ¼_¼Šnųjr«aSƒ{œ”Ńä’5 tĪē#„e^hsE6L‹Č#ҽįbY6‚ė‘’EOm ¬‘2œć¾)GĢ„Fóŗ8 >Āaīę8=Ms¦Jń‚b.ŲĄ5Ü6›d9Kœ6jD°›åøn=4}e-[ü •7Šó{}@rāDź8=źEµ–6ł¬Ć»^Šl-·–%Ū©8©dŠÖĮG÷Éž¹Š^Į¤®Ļ;µÓÄź<Ų$ÜG®)÷>S lŠrĄqÉÅw–ļL2‘°I?įW÷@TÓ£&”±Ję±”hŲń=CFš °ÖĢÄō©“ży8č žš½zą[³š#0½*;;6)B›` ē=…Ł2©PģŁä—:>”Ÿ%­œ‹œ Æ5£¤é7Ytūqž2¤ƒ^µu}¤Ēn7°Ęk8kĢąCn£ouÅO֜–N1m9\ęt’ۜ4ń<$0üVĀxCO0ó禺õ(Śß*“Ļ̵F÷Q†5*Ó( ÜqP§Vl†ą½Ū”ō_ iĄ1rĮ»tK¢i0Ā‚Aū­ÅdŚkz\ »īXwŪĻŪ1żČ§»V/ŚŹVnĘóÆA(+›&Ņ6HĶŽ…³šĖ¹™7"ȅĒSXZ޹`É3¦žŸxšĢoiØŲČÓŠė§ %©ÄꄬŽ§’HĢo(·MøĘdĒ2ZL^)~ŠĖźŁ®sWń\ņb“‰ć aÜx†f%ÅŖ)ĒjŚ źĘmkx­ÓPÕ®œ“Q‰:‚x¬+w]¶“qŽwr§ VnŸÆO*„ū,`ōŻĶiXjSœł–„ń”«VJĶ(IjŠŸš–ŽĶ.ŁÖEĮĻ̘­‹-ri#F’©ä0AQgpG˜ZÜŗÕ«]>ŠČ<‹ėrŽ„c”¼™­%ef$³«“˜Ō±ķ÷it ‰e?WļZhĖ ©&Ž9>™Q ©“× MS•¾"yzE˜vŗŖIņ5Źž¹ĶZ2Ķ4Lm—d˜ž48ŚZéM/ü¹ķ$p[½lézD¶ńeR8OOš”֊عPŚÓęyē‡ ÕÅā<Ö0Ź ūŹ0:ī#Žį8ŹXr›²E_•%A¶Iā õ*zUyl"dܚ›#Ūø¬d“—=ĒķogE·¶¹rLR¤īžµ”ēėÖȬ3 `3QiśqŒ«­Ō…śäž3]­¼Ö„I4†b=ؕX¢•µx˜QŻkøVŠ8÷ /ū‹ kÉf[ŲHĪ7ć“į•]¤ŠņhĮĒ !#ņ«-ga¹KŪę,F U4:Ńŗ±‡±s^ņ±Ą_¤‰9KQ ﵋bŖ'Lš@^žå”Œ‚Ø@®“č¾iKÅs ē8żMj[E„C£‘2Ei*ÖZ"éøÅ+½NKN6ŗTæč†YČ™ ³g¬ÜJłš+dO]Ų&Ÿ®źL Ÿ±ŹąpBkMjĀYųŅ$XśwUrFQ½¬bźĪOGs°:ö™gĶ^cvL³ń^š²īłćčyR•sv÷:KĢ„ZĀ0q†`3ł×Rš^‹=ŖMå²3…VR…8īΈŖÆŽ¾Ÿ$-ψŚõŹŲĖ0cŠēY7ĘsI<ą°Ķdk~/Šl`;™¤‘*˜?­rö’4³zXJ±ž…¤ęŸ,åh¦ŒiTƒ—#w=4›‰NVRŽUkBćĢ÷L€c«ńns›c2ä)ėśVŽ§gK'qÓÄ5Rņi#ٵ-B(¾ärHź1XZ޽iGĶ‘mūošē¬üW”4KĆŽ)Äa5„i’¶§'Ė}« :)ņAZqhsfļ™Ļk >s}X„1Īń®cRń/‹”—*~Óž5čŗ„¼1qóF øčSšµ¦ųJĪ4_$J©®‡R›[/Čē… ¼÷ę™Éx{Ē~!Ž0·:#:€2Hä×Ioć{—#ž%R©>±’å[ö¾…0L„ĄÉā­IeojCI4Iļ“ åµY#­Ź¦ņ–†n™ā īć*ŚvÜņ”äTZĄ×›mcfĖü ±Ķl®µ§ĄŪche`:–³µÆ\,$[ŪĀ@čŻsō­iŽöŒLėŹ Žl“Co“[d±(qÉGž•µ„ē“™ʶ3·Ž+Ļ®üYưœnjˆńϊ£łdÓīw!ĄĶLØT¾–«MµSg¢Ż%ŹĖņ‘‘ŁĪi/-ui¬ AØŪŚpēÉéž%¼»Dk‹ ų¦n8Šé4«ēh[6× HĮ?•'¢Ūš*Tä—,ö1#¶ńT7W]W q“.Śźü?„ų”įźū̐Ī0@śÓ|é?å˜hŪ·Ź*ĶĪ§‚×ļ³ū„Es×ę’÷luałb¬ĖįżA\³ß‚’Č«śÜy,HūĄSŚj»Œ¬²P•—ځ˜Ēƒ2g†sŒÖpöjP@øšŽŠé‡…O;øcY·šG‡¬ ˘[ż‚sSkš¦§ojā;eóBąsÅyŠuæC~dŽŪ*zį2+ŖŽ­EĢäqUĘBœ•8ĒCŃŽE’mšzźĘ£ˆ* $ńßC“¼o·¾īs\_†|}ā8‚Gu¦Fń÷*˜?vÄ·×ö@Co ?÷dR8ŖU*'Ė(čiWŁņóFM•/n.[";hŹśłY8„µæø“@RĀņb{$T6^&†ō“` ܔ Oµ¹ā |fĘ Ł¹ Öm좾ó(¶•Ü­ņ+-䚄JH¼@\Z égn“»t=*k}W\¹ņćłU'Š­Ā-„žfzŖc5QäµģdćWnc&’Äń:Ÿ=‹dg÷głVEψ¬&Ąņ-HĘFÖ1ę»Č4{#o‘2’9*š¶žó‘öwł»”®…(ņ˜ŗsę²97ÄP[ɾ8„B½1&į]~‡ā|”® ·Ē(üjX¼csU·AžŅńQĶšõ­c?gŌ嵜kšR§%dģĶķZ.ŅŲæw.„aĄÓ#G=Z3ŠĶ{=:b<±pŸöҶ¼9įk© ÕÖP££"Ÿå]†™įČŃž#Ž7l²–*4ß-ŪgG°÷y­ó8{_iļ/ld 8Éɦ?†ģį `€Ęߘ‘^„,­-bm°³zÆ$VuÖ„°lnG÷ԊpÄĪOm hį£8T±½Ž6` ć‰kŁųqf ęÜȎz‚sŠ×‡SrĢcÓó‘Ą«§ź3»/™”e±œ¬”§]ļŠøŅMrĖSŽÕtX¬Ų(žīEĻü³QWt«[Q“ļI©_ė]ȕfN11ģEU¹’x1åÅvłŸ”֔ŃQІŒ„a§Ąź¾T·pƒīEméś0ŻöŪ²‹ĘÖ9Ŗöŗ±·P÷wZ| vĪMKØųĒCŠŌ’ÄĪŲćµĖ)UæŗŽ˜Ō”ŽNģŠM="ĖJ}ĄØ`·…å*Qž>š®^č·3˜“ćBxŽÕ¶‡FøQ8ŌSss„p2hjKI½L£V2÷ ®‘»{c:Z%@Ē®kXß žęuP:*Tö—‰i)žl€r ČH5z zV“LLOsĶ TŠīTē+¦rWցÆ73Lw.3MŌ–Ūģ Ā‘;*Œ‚¼ŸjīŚģNæ¼µt©TĪj+[dy[čį¹;—“U׌A,3i¤y½Ö·©Ū[0³šś9årŲż+—Ō|]ā„•¼Ķ*5Įćl¼ ÷ WAŠāøhA^ ×+Ŗų&9b-öɕŽwJč§Z‹ßCšt±¶y̵Ėm¾n‰ ē©ó³šßҾ!ĒbA«–zEŸŸ½īö(‚sY}^–ńе‰Ä?vzž ž,†FfŠŽģŗr ń,ć"KO0Ęõjć“‹{;YC ®$\šėt9myFÅäĻ9–œ©Ēf®tsŌåmNĢĻæų„|]¼­?¾× UX¼s®]äWM߯&ŗyō_žDŽ‹Ž)öZu‚FRŽ3*ÆūC5¢Œ-ū³š97ĖRNž§/iāōœł«$ GŽi?…jGāĶ>ŃѤˆ^\0ÉŚ+nÓK‚K€‚ĮIõeŻUµ$˜ŚīČ#"³X8EŻŲŁb«8ņŁüĪļSæ°¾‰ŚóRŌōŠ×ā{æā}Fä©ēē :æ‡/Y4s&G9ÉÓ¤šķ„­®ūĆiÜÅtSQ9ź9Yj‘ĶZx§JTa…ęī˜2‘š„y0æø ‘`{'ŁZiŽŁū²2³£Ķ§ÄĀhįĪ0rI¬„S—ąxÕd•Fß”ęöśUŚÜęeXąa’š”Æ&Ÿ'@ć®åäõ­cL¹ŗ o…O§A\·‹¼2ŃŪ³æ‘8Į$Øē>õµ'¾§5zu#šŻz˜ž¾Ō¬ķö“ČŠć °ē…uŚˆõk‹UŽBŲūŹNÅč~f™|Z/šłęyÕ®›eØ[‹»mÜgqv3\S„r÷“üŽś5„VN’™[Sפ‰ŪlņG.Q‘\Õ’ˆ/™ŪĢ0ĶøpŪqŠėīc¶{P—V›1Ų5Ėkz\Ü)ƒ|®IČ5ŁJŖoŽG js²Šw9ŻSQŗ’?ŗń‚9aŠÖ<—r <ĢĪ·ÆmŚŚ\;¤ą“«ge:’ĒĒ”ēŌUŹ+£9"ä„u¹‚.ˆ>Ӓ:ÕzĪSē ’ĖĒv+B=åƒy “m`ÅBl®a”ļ…”¤ō¬œ[ŲӚKćLs\j€™ZeØjl/<ņ±ņA$v­­-Ž Š$Ļ;‡Z±}”ĢČĢŽÉßåĻ掩Tv²*TžńgØŚ!Ē©²ī†=EMö•Šh¼õ™@żā÷«v6šyʤ©”5£6… ĘY y;j¹”š°PŖ½ųžÕq)“¾™\óŽ ~5éŽńeÜĒģ—wR<@u'?­x\6CŠ_-Ōš½lh×7ö²‚°;‘Րõ®Z˜H4ՏF†6q’Sw>–_ x_^‹s˜ŒÅy}Üę±ī¼ö)ŲZÜ!\üŠĖżkĪ4mTŻŃæ|¦ŗĶ/Ē1ŲI¶į§p½Éø”N¼t½×™éūJ\Ö±«ØZŪÅgäjV[Ī8uśÖĪ£^[)E“߯Æė[Ķ㯠ŻBQ„ˆOüōN3YņI¢Ž0™RŹpz"JP­tAŚ6–†u4½ŻQ›>‰®ŪHVŽhī\(qœV·żæm(ŗMĮ‹¼@]ŗrļŅ}JÅĄćl…—ÆÖ®iŃxˆ Eא¶q;ŁTKWcPŠVW_qēR^Y“Ūd·Ō"ÉĒtZe†® ½ōŃr“ėžŅIoØż“Éuk„jEN2r?*§ā ;ŲJMįß²;tx¤Č4{DŚål‰ÅĘ:¤gXZųv;’"»ÓĮχ„Ÿ Ąwܝ+Qn€(Ą®U¼ ×s„¶²™?ˆĒ?žŖŲÓ>܂¬žjv æ’^®r„tl)F­MR’€kiŽ šŲ˜Ęšm„ˆ††B§5ŪxK]ŠRå™pHźä6+Ć’ ,"ˆKpQ½¹āŗ§šÕŽšDV-¼łiżkĻ«:R|«C¾œkÓ÷§©Ń%ē‡nó(–ČłŠPZ¶‡xģ‘.…pŽkˆ›@“R³{x¤™Ļ$ä`wꝤųOÓT³k c!¼s€sųŌr¤š‹×ŠŅg{É+‰ooįĖ(Ō=ŗ7_Ż!«rĮ£_ĄRä‰Ųcå\ŠWuݰ‡—Åņ^'V óI?ļc5±£|Xšuō@¾»†GR7XŌUbī×Ļ”ŗ«Bw§'ÆctųgN·€ÜJH™FrŹšō¬‰m¬ä™„z­“±č²*Ÿ©­ =/T_>ßXŠhÜlõ«gNšž“6<éVAŒgrš•‹KFĮafģ–Ž§ŸkRkśd…,“żń Īį"CNŃańN¢æ¼šöœĆ®čīvųW 7„ü/ą.xĘ?Zé,ō{1„Ķ ‹Œ…KĘ@8"›ÅÓIr x9j޾GēÆüCā šW‡¦šģĪ”11Ģ®#^‡8ļßšÆĢéuIfŌžygy$‘‰fcÜ×ÜæšSĻ€ŗ·‡uMCĘV“ŻźZdģZf²c'ßńƃ$Ófk¼‚JžžĀ½¼tł0ńTž×Ģó²:ju§RŖ^Ńt×O¼ŲņŚāUuŚxėW£Y…©Y°: [VØó³½X–t04|ä×Īs¹+$}„b֗!·Ž=Į‰Ś1É5>›f¢åŻŁvsėU >b.]UG\ÓZćl›wķBx"¢Ņčµl~·‡‘·–Tč  K[TIcV*ƞy§„¼——HĻ!TB;ø®†$ ¢Gó½sÅhäķds¾X§'¹Ēx‚Šå[žZ“ėY&[—Ü…sō­Oy–ڬpĶĒ"±¦½cp"Œ„ņGcšģIrčrŖń—ŗ‹vۚ“ر«:hG/É›«¦ŖD ÄJ¹ Ņ7c„‘Ģ|6:ē9¬„ŖŠŚ:wévm /n8¬}.3‘zzUŪymĪö;Ļ5»”ł‚Ż¢‚÷“œ‘\Ķ4¬Ī„ł¬c¬B?‘€,ĆUŻ/E¼øweXŁšGVö—„ióĄĻ<ņ‹±– }Śf±©5“Öƒ °ć5p„¬˜¦Ōcg¹™©]Md@̜’Z©¢3^jX*±ŹćØ5ĻźÅšrU±sĶGm<Ö÷(č]]HäÕ¬ ’“œ5÷¤Īė_†h!PĶEąŽk*Śõī,ŚÓļT_SŠņp'g‰ąÕ}Jź8퉄·ŒŅŠé"'U§dŒŪ»o.ķć.ŖO;©öjHŁŹ¾•ŖÉqó Ē>Õµ”[Ū‹_1ēXÖCÓø5¤žõ-h’¤1)éČĄ«nˁ2z¶y¬}FD! £žµ_O’śŻę(ƒ/f©ŪVSŖ­dĶĘi[s:p~Pr*ÆŚe{ÜDæ/@6Õ}.[Ó¬ā@‡ļąpMiqäø)ŁŚsVąŚŠJnŚ›2Ä-öOpCHĆ*j†µ©ĀŹŁHĒ;W ¢źģĢīdpŅž»Ve­ŒĪęU,VL’GJšjŹ÷©ĪķcJÉą¹· !Į “šźĘic¤Årņ)¹q™Ī+˜ŃaÓfDæŗ56¹væ*7ss‚)8ūÖ[Łå[–o^Ś1'±šOœ0žUĢź7&äģÉUÓÆ»¹©„aņ¹ÜYxŖV]Čć£e8”h»9ńœõ©’‡ēłO¾9¢š³ĄÖU^œóTüÜĶå’@QŲÕņ–¢÷,¬«æl˜*«“žj•ņĀ"Ū³¹ĶOP2\}Ię™q¶EčQN(Ÿ4T†H Øp€ąy5oI…ŽlŒ³u« ’Ļp)Śv讂Üd(¬œĮG«/.õI6³)eäē…VÓSęmż1Ü÷«ßf‘²ą° 䜤K”mÄ’Ē‘Œb²N꒕¶$»•d…ćC†#©Ŗq±*HWs žēfŅP`Ž³“'{m=¾•¬v±“×fX½V’FŚģsĮ¦[ʶHćšX܅~$ÖχŅÖXßy³Ę:Ņ•K"éĆ”Ÿ ˆsõ ch‘z±§–£Œ‚:ĘÆj:z*¤‚U£ō©ˊ" £k+¦®kźgł0ĮFé½ū9ķTī\’[ž=ėrŹ5ø‘‘ŹØaęŖ_éę+Ā«&ųÉėN6DM\«„hdóēš«1I•AŚė·ŽŌ±Ś¼Nȧ~žxģ(FŁ’{ÕŪ[’ ŽåK™Š©’ HŖ"9› ¼äw'5¤"«gn€T7Öėó«®~R7w”OqŹ6ÖĆL ,`¦Y€äēLk%HƒŗüǜšžÖwAū°Ą/^3O¹™¤A c$ā­6·&QęZąE’p»?żu4¶rF’lŖ°ēŽ¢Ė|”aĻަ{«›ĮūŻčw{ B;³4£grø„$ŚAĒ^µró-m~n¤Žā©K&Ų„{ŪsŅ¬+·”,9ó0lŒšµåł‰€<’éXö72…$ü™ī*әŚ#­'½˜¢åŠ/ķŪk ƒĆ½R·‰ŅPz“ž5§³l Ąū‘I#&ć€@9¦ķbÓ{2˜ƒÅ“ Żk6źÕĖ&ÅPCd“é]—P˜Kø$Æj§d‚ģT7`)GŻW¤ļbŒŃŖĒ¾@Ēj]R7m0²#¤l0=źįDŖÜ:œÖźĮ öķ)ÉSŅ„Ļ]Gs¦ŽWF7)UA݃ĻZڲ†9!g•Źs…­ūˆ“ŲōŃ"/šō‘<„ ”€[+Dōøļk˜z“~UŽčƒķ^¾õgOøßQ‘‘Č\ H§9bzŌ6Hmв«6NG“^ńCXG Yš•7tm œ~5<°jÓĀ«[w#åčOõźk/BÖn“Q®lē’)Ś2¹ Fć­1$2¬’ļ ‘’xÉ’<Ö1Š^ó5œ›K”Šŗ»žį×,JÆAŽ•ZńŻ.£ŪĮ‚*•“¬’ä’IzSį eJśdÓVč$š÷‰īžŌlć‘XeĮē<“TgÓ湉•„xC槚łā‹jĘ<±Ā÷ėKa4·ŪßĖdZĒ›©’wŲŪZĘńČ ³ŗäēŒT²GsŹPɌœŽj'7Źåv“–ėBŹ9®,ƒA&eSĪO8¬ē&£JśäŽ aW™VXūŽMP›SžŽ56Ļ!ĒĖŽj•ŅÜ<¾[d2|¹cšQ Ž2!R~ī;Õr¦µfræ5†\Ķw2Ė‘Ć|Äē©£Gk…øs}į…“ōĖV));¶cØģjΟ¦Ė -28ć*Ųü©9$µŲøS÷‰įŠÖ$iQœHdRß\4,Ķ ed?x”ČtIĘžOĢyÅUŌ®L£B­Ī8ę±»hŃĒMHuA£ˆ‰8Ī9ĒҰ®5€$x÷*’x 2EO©„‰b˜c® S•†§)åßéé]Tį}*Õ5÷N¶Öķg598Ļ’ZŸnž\’>šRCĪCXL¢(Ö% ¼qŽŗ-;-ją•\p„»ś×<īāŪI2šE1½ÜĶņē }ŖkĀ›: GÜi·QĻo°Vu<ī„GÄ«4Q4„—Ķ WMģhčR+F\«(RĆåĻßĒ?o<Ń=x'Y‡Zę„ TĘ¹­T%²ÅŒ·ūU$‘¢wW¹¾Ó\Ł•Œ²Ę­Pšõ™ŽDÉŁ&1¹»V“R؎BÜ`cō±ÜĘA1= ^ŌŪ²²DšNć5Xm„•ŪūŹq“Xw$„–6ėŒŒfŗŽFåLŪ ĖװӍŖ°IķSÅI3žŽ&€[8Ō×%Ė©vn3MŪņX©SĘ5grł;X ·95³“FvwøķU[Ø÷1ąó]­sˆį˜`ū×1'zģÉ s‘گƦO˜|½+*–zšĮŚ%»3rq“0LąąU{¼“”Ulž½ėSKžH•>eqŠÕ[–Żq» §„nŽÅó'­ŹrDŽQVą÷Ē­Cöt[l&IĻJ“ģZBX‘ō¤Ŗō댊»;ܵŹCck BÅ÷†'нné Śxę©Nį@nFFrj(3oÜŁķŠŃÅøŲrŗŲÜĘ%ÜĮZŪŅmšx7Ŗīڼ\ž—#É*†Żp ō®ćÌ`ӍĆēā/ŲҜ5».xT%²•³Ćė]&–öæj7‘«os€­Š äq#ŖŒ9$V߇fkv”8łDGnOSŠŠq“n·*£5ū“öėņ:AQŠĮ²œGs°HH#“޽Ć^Ō¼I¤¾„h‚H¬—3Ø8aųzW+ā]"8µņ ,‘Ų=éҜu»3Æ)7khd^™<±† 2ķćłŌöæ–Õ5;ł) ÷ežSƒĒÖ²onēFŚ,‡œśšŅ6{ V²÷¶:Cij|+ĢŁ»Wł:—Į· ci¢#$©ƒ¹ŗV5¬Č–.$h‹q“Õżi>ĘąķĒš‚1ŸJ¶¤įc7n{ŝeʵy©Ū˜J"GęļW5Ļėwš«]G 9Į=sŠg§µFڃéĢfDÜ ‰¦KŖ ‰‘į)+|Ū{XÉĪĒLawŗ!ń\Å¢øØü³PĖ•ė[~.½ūjżœ‚­ĒLpk -żAü¶Ųz;t&µ§kZĒ5U$¬ß”™{ ›¬ŒćÆ=ŖEµ˜Ø pjōéę™Ÿ•äÅfL)Ś$\ZīŒtŠć¹ŪirjĮ‰.¶zÖ¬rk ”Ģ•śVÓź¶š‹,8äÕ%uĄ¶‘}ėŃēŹyĪZ^ćto5#ĻŁŹ·LZ°Ļ".J¤}NŚļżć!= +$ÓsøČ1ŲVoWا²². ˜"YĪ3ņō¬[ėɒą‹[)Ųz‘нd$“ޱ/­Śö‘lʆš³õ<*Ņ-GįW3’‹Ń»ckł…­Ī:š±e¾›z{w÷Ŗ—‹4šŒ°%b1“œW2ž%¹Žbę(LcZÕBr[*”į;Dō ūd’ Ķ©NˆŗqY‚9É<óۘó\”ńa˜ģky‘ß„KmŖ‡™Nsڜ(JĮ,TQ×Į}gd€ wbz󎦹Ö|Ą†0g›®v9`” »½r9Ø.¹Ź³…ž•kźOÖõŌģ!Ųbo#ܑÅaų‡ķFBlå ž÷¬ż0iˆÅ®'vł^øŗ“HOŲn-—#«1Ķ(^2°«4ć{Ųf…§jSfK‚Ģza±ŠŁƒO••£ˆˆœšJÅqĢŚŪϾ-QšGx”eqyośD®ķŽX¹©ßBa$Ö»=®‘yA½.Į {ÕSĆfņO¦ņ$Ęj¾fĪ śœ‘’rTÉ]¶›ŖhńB6ެ§ŽKY9Ź/WØēB\ …J7›?'Ÿ›8­ė?é„vÉē>:=wL*H‹ś¬ūæŪ,ÜŖ³c8Mf„RoAŗ±ŒyR0õ B·˜F-®0;Ŗ“Ko§h¾Y2YLƧĶ?Z³}ā™Ł±o¦–ć9#9Ŗ_š–^+ķŸFgCžĶiĖQ+[ń&5"Ž¬ÖŠtć%mŹ©ģ­h^xODŽ2Mŗ(#‚HŖŗN»op©åŲÜ@Ķü*œ ÓŌ<ۘ€L‚{ŒV1SęŽĘÕäœ`¬`¶™įūwTŪ'ÓµkZčś<ˆ<‚ØOæ–ślŃɖšĪ<÷'šŲ°ņÅŗ"ĶPq[ŌrMY˜Ó\š÷™•Ŗųmä»Ā›m£¦Ā–}ŽŲø·¶Ą|k[WycĆQü<ÖÆØĮ2¬r‹ŃŽNŲH­/)ŲĒŚ(FČd·~Œ™īr£žYƒÅ>=GD¶µi-.n£'³Õ[vÓ|¢M„Ń»GSŪR#–)”Ē,’:n ­ŲsŹŽīå‹ZEhVīāN‚ćD5[JL,“F§ų[5bŪJѲĘÖVŸ=‰«¶Ę=9~]8IŽū±DiÅ|œāŚö›˜z„®¤š˜ŃL‘‘‚Uˆ5Ÿ¤ŻĆ`Ę)–@ć»kjūÅļopU“PPtžiŅųƒĆן}6ā N2GJ¹YE)FÄŃrMøŚßse؏04w-żH­ŪOÉ žÕĄ„yĒćŠv‰m ÜƾUÜ6ł&aWßLÓÖC¶ūNm£ƒøV2Q³|ŠŃ¹œ¾#O3t÷’\!?uWóÆé·2yaÆĪz©Ę*Yģ-2GŪtӑ“€ M§ivJ7<¦bG—­;A- …JŻv(_Ži1[?—gs$ŒæĀßγtB(ī†œ#CŒĶz–-mŠķµŹ·`3V?Ń9HģƒźXu¤šjÖcI©^÷9ķ;w_–Ż”$cv ]3Hl†Ö9ĘÜtļ]$\‹w ch”śn=E§XźN0‘Ś…`1§(ﱄéJOfyķÜŅyæ¾³ŠĀG“ų“Vtū¶gĆvń“ŃL|WkØéw©Č‚&sźŁ›ż«yĀE²±9īŁr•7¶ö‰ņ4O„É©Ån ĢÆÜÅ uŖNĒ;[tĻdĪŗŹń4š—)c#³:lŚE¬é‰®-ŗżEqÓ©²:k&ŚHånõ˜¬$̚²0嵓Gx8ļm°£©łr*-[ƞņČcücvńüė>ÓĀŗXd’Ō¶3“ ĒčkZ§8Žśłœō*Ԍ­5§‘ÜŪßĘÖ¤ „P{Wćhū³<Åś.ŁJ‚jx|ż:Ō‹C„ģNw3ēśŌž![«*VÓwž2‘õ«§g½Gˆq­+AŲęmĘ„ŠöÓŻF£Že&ŗ5‹ėK"Ņ_j.ąōTČĻÖŗ 7R¶,ŽżČų¤Ö%ÓŁs&¦°ńĘV‰AJZ så‚äÕ|ā‹Ę‰DŠßĖ‘ĮuĄ»& —£Ė6Ó”'©^+Ģnum&8ŻÄ3±!ż Å:5Œį„»¾¹?ļē5ŒšĶ]ĒrÖ.²–Ē„¤7PÆīĖŖ}qšmݧŚaĖ8#&°āńv—Ø[…³’q(+õ¢ĆT×åDpEåē·8„JöŗŻzµōdæšŽŚ¬¤®œÆīW5Z÷Jū7Ģ4[Y3Ѷó]•…ći›Ź‡źõnęX’"Cī`3•Ńb_ŚFuhrÆvG˜ĻØÅfūN‡zdģa‡Š©?ˆ™$.¬ĒŒW”_J²mÅĒ•¼|”£ŖāČI2^[²ö@­]HuDAŌåÜ䓟£Ī‘²I<"ė"ŗŌ.ķw[Ļfń°ĻĻX·Šģ$Śė=Ŗ·PX Ö“VšGķ–ĻŽŹÕÉ:‘RN‰Õϧ¹ĒĶ„ęå„ӐŸHłĒå[z.”²Ś‡¹x$b>ź®+BėO—ļĮqżķÕĻk‰āub–VöšĒŃXʵmĻiX›FœmÉs¦“K±ņŌxųTK [O`ͼƒ¹<~UĒiŚ7„Ÿ2ėæg½PdVĻü#śŹåˆ$iÉ8„gķ]“/•[šH½«ŚŹĖ ±M˜`RÜÅā?' oö.k"ŪĆZ£]n›[ŌõłIQśź“«K«p“ÜÜlŽj„%£ŅāQ|–oC ŪOŌĶĄim‘qĻśĢVż„Ŗ“j³Y >§ Z6„̃ͱv_Rų©.tų&]Ū&B{ 8¬åˆMŁ•ģŸ)‹wįū9ƒ1ECčÖV©¦ŪZ ±Ł¬¾åk¦—JˆG·ķ3ۜuYˆžu‹y§ZĘͳvķÓož+¢‹«IœĪ‚Mréó+č\Ć( kov&ŗėK¹ŹüÜįʶ‘fń†žŌ»?ģ‰iĮ“Ū.Ųŗ²15\ś­MŻof­6ŃŚKĖ2UöõŖWZ-ŅµK8Ą’ž˜År£Äń/ {jˆG> akw·ŗŒĆČŌdŲy%­M:5ŽĘu+ÓI4¹@žĆŠģ”暎čĢ+Ÿ×‡‡ąŒyĀˁ\źXŲ*næĖc’d-Tīģü Ćlš» '%B’EoĖüF̧'$•$ŽŠĀ’I¶ČŠ)éĆnĶ>ė[Ó"“|–wqŌ(żk@Ń<4™—OŌZēø•ż tpŪi¦ ’YÜĪ:e9ØżŻī“ūΊœé'ĢÆč2×Ē^·ET¶föĒ"«ÜxžĘi·µxĮędļSĒ¦č›Ą[“9Č-«ŃčŚsņ,dōŹTØSZ«üČn“×ļÜEįŻ~;¢¾k¹SĒ ßé¤yJāę-ųĄ k…øŃāŽå SŽ™85.ƒcy2Å oPƲ«C™]3|>%'ŹÕMÓŚ¬bš6ŗT5=[O·“Ü ~Łā©hņ(b¬1(KS_Śi„<ÉRŁŁFr[5„)$ķ;›Öœ’¼^žf6„«ZNß»‘š=;Ö§=ˆ¶Ńʇœ=jjś¶bhmī¤8²/j×ty’Ņ'šżœŸ2ctX5 ōCžrFx­„(Ą›r§ķJÄŅüK)¹ĀÅ$…PąÖģ·WW–§ %¹# *yӖ¦Ö|‹B•ó²H\—GĒń*ع¾š#Œž¾f;Qqį«ė–AŠć'pžt‹įÉ MļØ!#ųPdšŻT‚ŠÅŅ—Ē"š0ǁžHlž&·­īļE’ÆŪ¦G^…F+Īėk²ĀÉ¢Ļ÷GJģ`¶†öĄ0†źÖm¼^+ ъk˜Śœå*w†¤z]Ī¢Å|żNCä‰Tr+nŪĢ'xß"ŽėĶsW—ŲņŸeä~›9­įė5µUxĮ·b0UÉ®yĀŽōMiŌr^ł°u23@vƒ““Ōpź& “ź°n)÷oĆNÖ»HĮŚNk.y“vmĀS—Żd"’¦™Sœ”’:Ķ:öŒ)ŽlüBµb[F@Ā8õ®/iÖ±l[„ø=5>•ā?¶^lDt"B?żu„usH֌„ŹtšĆG°żžŚÕ™¾1\Šu-zĶŲƧY8Įķ]³źš¢³Ēę1ʾk”ńfŖ“/'«µ®׳Ń†6-k£ćŸ[nģ¶°>šqY?š°ļUŚnWwB:VĪ©<—,B·›‚õŹźŃĶ,ū®|=eŒņU¹Ēå^œiQŽ(ņ=½Vż÷±ŠhŸ®ć!-‚ł˜Ę@Ö¬~>ńTœ l”é„Ēņ®ÓRŠ,%¾’‘9ƒæv+¼šN«Ś ·³†]¼ē­NÖQ= 5gQZ3ū­ÅŗĶŹāKW‰ńĖs]N¬ŻÕ¤;ČžZŅŠ x¬ÄæbĆń÷¹9Å.„{yl›ć°Žē÷`ם9iuFž²%:“­'J2 }ä9'šØ#Ö­‘Õd“½¶/Ł—„WÄ“ö<ĀOC€*•żķ“óļ¹” ‡„\i„ŗdT©ļ's­T·6ĄAkzī:±CЉwۃŪ8r8ł®bmJĄaaŌeW£KŠŠŃē±uWŸTug+/ZĻŁøźÕZsvJčšo Ś\\~ś‘ŠøžuZūĮŚ6åŠKUŸÜ’õėF7Ów7•{u(<ņŁŖZÕż„“﹐ƒ÷Pj”:“|©³*‘£M]+~$šoƒ|5kĻŲāBNpvńųÖģz6 øH­"Ū× ž•ęZ–­fó“TĻ¢nYTĻ8'€kŠōߌD‡—.:õÅNŚ—mhžn¼æėYJræ-V%ĢärXb#"+Ó­M9ukgܶńē<üÄWdI±|žeźpMC§4ŽĖ‰ņĻV, 4Æ"įģÓ“[¹mŖjB}²Śå ł°Ż«bĒTTbZŽO}Ų­Ż2ĀÖłFń, ·ę!©ļ|8c#ģ×±…Ū‚²EŸÖ³ē÷:œ*E]jSÓo,ÆdŪøD}J·ya£ē2Ķldć›’ŻūĘ»$· į]µ‘ŖųcRˆłŽŃķŒ> h¬ōŒˆ“•Æ8Ƽč4ė]£!®įˆg9­Ķ:ĖEg ՛¼f@yE®žņź?f"& )ŗĮ=Qčķ,ī {ięĄć”ŪŅ³u{OypÄŪ׌I"­hķż£ī¦[w<ŠTšs抻veī­_‘r]?ɀ;ßŌõ-JĀńFi:1pnF8uQČ­™oÆķeū,„083®A«ś[ ä`²`ņ«UN«Šę“'Ł)éÓĢóxlō‰ó é“cNRÕfŃa³cje2CŠō­ĆÖ÷1–1€Gü³qŠįõ »Ų.w/P[ŃJ­9{÷¹Ļˆ„Õ ¬7ÕużZ ‰.ü¾ŪŪ#£į“ćÉŌ”M²pżuŌ I Æ)I!Ī>GĪ*m[ĄV÷QyÖLĢŲĪŃĒ5S•7eµĢ©Ā“/?‰vex|1„_Cö«y‚«õÅ-Ē…“ąŠź~\¹čĶŽ?ĀØ[č:öœĄŪ„ĄEą”§yw²Ē'›jģźrpJJ3ūnę×§xFĘī„4Aa¹6×p±Ęõ“‘PkށÜKk0ˆõĘģŠäī® 8Eyķ8$W4ūżM%gŌ#—mvėYøN2ŗźR’Õ]“j~†āŻ–FŚÜįĒ5Čj>))܂G?zīīüMäFöĶŻ¢aÅUµÕtĶBb‘·–ēœIĘkJueŽKC’„(É„O#€:F»c6cOŻć9 Ö§Qžź#ļ0ė^ˆ°Ü„)1W,l@Ūćf'Œ•VĆt:Pš÷gųž}kö;©Ō%†y ~UÖ閩ÉjσŒJč¢šŻ¢¢ÉöXXć$œšÓ‡DˆGū«8œ‘”žu‹}.tR¤ģīpZ®ƒ#Äd 9ūø®W^еeBaŲąńĒZöØ,īU}˜¢Žżź4µbYŸŹlńZB³Z3ž¶į¹ą°ųsXŸ£łg°bMM/…|C łi7·L׽ń€ÄyļԚÆr‰C°@?ŪĄ§:­»(э;u< i÷°ö>ķ6÷…ėoBQ寕yäL†åq^½Y“’®øėŒŅZišmÓ®ŪW™ļDē“*{-ī,¼“ZY±ö KĮž ߕZ±½ˆ—zUżŸt˜ŲŽk×ašż°Ēg<<żåR*ĢZ Į Ģ[®åØē‹Zčh”ążŻ}QēDvĪßčņJ ŲĶkŪü‘¹ŗ¶”ĘxÜšd~uév^¶}®Š"?o” ֝‡&VżŌą&9 Œ}+ՎķÜź„‡«×cĘVĖĆ·W>[^ŪZJĒ«0P)o¼3wiqęéWö·ŖzÜłWµjÓd·gšÓN™ČźšĘŠ|9”Įؒ×vģ½#3}©,MāŻōō%į½ė=żNN]}!ņīläŪÓrõ­ļ Ū†—7V·±¶qÄW£ÜŪh¶Ž|·Ė·l`*åī ‚Ś"$ņ@÷§į^!7ğiÖÅ4«mEœõyåćō®||LŌn/ŽÉ0Œq°¹}iSĮCY5·s:ŁŹ²Šß’I÷„ų£]•˜\¼6ē²ÅsŽ:¹µ™²QNÓ¼7£jÖĶ&‹« ™G>S6ÖżzÖݦ„-u Cqn£ēxņ8¬[+żĻPSöMFĪwē(Å@ōēҵq›Ö›żNx֌]Ŗ+/¹ž'ÆxZēRŠ€µ¹Ņ/§R0¬ óŠ’Ā[mo(󬯭&³°Ķy•āÉįŌcdŌ.„‰;JŁÆQ}gĆ~#ŃŃ5™f “Mń®*”Ņē ÷·üӆ!ø~īz®’š³Ań•ŖŪ%Ö®4ˇįf æaų£Äž.šI’é5õ 3ėÄ )ōčkēoŚ;Å:“ĚŪQŽžYŽb‡q ”ņ'Å’ŒŽ%Ö XGØ\[iņœ#•#Ž“xJPW›¼{•!ŠÆ_ų7Muéó=Óž ń³Ä~0ŅŪ@g‰tüā9÷nĮļ_Ą_Ļ.I^¼cйż“n {bs–Õ+¹¢;ž6ĄåÅā”ā©ĮZ+c×Ėš~ĮŹR•ä÷eØēg]¹ĄōĻZ©Ø¬¬p…=¦é‘™ļP*īĶt‚¬6ķ; ’gÖ¼Õ(ÅņžÄdÜnĢ[;yc·-’Ģ ö¦\Ę$Lī(GJø·šła[ļ?÷z~5,é¾0Ź0£š¾nV>W%°ŗcʐ‰0>µÓG¶ßK2|¤Č29®XÉŽ(UÆŅ”ń ĬR=īŲÓT¹Ų¤ķ–ęGÆ^ņłņŽŠ¼dÖ 1HFI8Ē\b¶oIrxSŒē­gĶ8`W;3[Żmš1Q›¹^ieŽ3µ˜)ģ{Ԛ“·‹»sœŽ½«åä’-Y‚õā¶|;±8į†E9·Ė`„{Żž¦CµĢäo#ļō®ÓR·¶°“[ŻŠķ)Ā)źkĢu ]B$O÷Š}įėQź:ŗŒÆœēü\ Ɯ^’fõdšk©æāEbŚÜ HĘåąW9=õÅĶĘłX+céTZPˆÅŽęf©Oq““Ą£€zŚķč‘ EÆĘŅ3ņž½{T&`-Īģ’iŗ|Ķ{0iCĘ`d`ā­jv;e{ŌlģĖmø¢-=`3ćåäՋĖō³·dH ŖM}v!2»ĪieXď2£­Wv¹ÕhŹĶ})‰`Šq·h©āD6ĘUUóc*ÉėEthĶŹHdgµTŖņč‘qWV‘5ńƱ±āŗ]D·Ó¶b3)īĆ8Ŗ’ÜķšŻŁžAó7įM²¶°'sp*'v®Ń£Qµ¢=^e e‚æ\wę³ü‰ ŗ,T²nėé[ś„2ĆĄē#Ø­aŽ_,[»‘œ{ҦŪZ9kŹL‰„ę'Ӛ޲yķķ,įO•,-öČõę‰u)]Ė( õįGš%Å-^¦ŻÓ²˜ĘśöĶbė2Ē`s&ĢqIä²£‡;@=ėžvūc©bŹ&ˆQoReSžŃ/Ųn{sF{Ōo*F0ǜšŠĘU»˜ÅH“«9až1ėPŌÆcFŅŠbƎŲõ«–j³dĘŻj¤ģ {N„ü¹bFzóIė ŅRøžd@ŒĒŸ¼iöo;ef8ŪNĖ4ŹōØĮ’H;ŠįĘkKū¶d©(»¤i[LJ÷ły=©~Ņ|Ępp1‘ĪiŗpÜ cpāŖŹe’šD«ÉĶ+öA¦é~Ł6T‘· sĶZŁpoiŽq÷)Ö6fiJÆŹÉÉ©®-JZm?+Žų¬¹„&[ŗ“˜ŗeõ“P<Œ£ +"Y<÷2¾[vZ­Č±}šF•ˆaŖę”2"ŪlÜwėšŃEܙ^NŃzD «ą€T”,ˆĻ”«,Ņ}‘ķlw5Pܽ±ymĒu­Rģe$āģRšįVJ»žĀ‹+„}Ž`Łčņ¦ĢM¹åsĒCP<Æ/Ģc t§föcEIA1ŗQŠŽµM„(ū `“TRī_4B«ņŸāźĶˈ¢›ÆsM&“bR4ķŦŅ$}‡.y©ķÉņ‚"‡9Ą=8®p;I!*¬Ų#žÕm®d‰Ėb†‰9"Tījø>§#šŽHPēj³‚ÖiĢfSŸ‚wRXĢ~c¶į×?įXņČŁ[įB˜I^“F+R%’A(ó=O­P¾s‘#n<‚UkbŅHļ,’6dƒŠŒu­{2ķ­ŒČlüĖÖą‚__Zڶ„ģ;q„ćŠĻ²øŠ#)E€#TÓļg’ķ•˜¢ä?ZšŠŚ¶eĢķÖ«!óDx=G'”-]ÜzÓ5P†63øECÄŪ`’ ėNQ|·FŽ¢½ˆ ļ+8(>\Ō(²¤D³#oj‚ńÕ·˜źaėW­fd#ܬķÅvV+čV»Flŗążź®&Ų„mĒ‚A«r²4gwČ9śV\³+* RŚĢq“6mV<¹$ö«öˆ²JŖ¹eõ=jžœVHÕy«öĢŠąą£ü-Y7­‘sVܖK{fm»„Sž„ŖŹą` yečOz«ē*\~č=M%ąŽI•Ė1ĻqŚ©=,Ģłnī‘bķ¢ywÄ»T®OÖ Ńo~ÉØ,’³y`żÅć5$[&*zp*Å±šq/!J’ éšJ,·>Nƒ\Ōąšßu¼fį²{ž[Ā÷i¾11Üź \ąt¬¬x÷.ž8Å]Ņ”‡ūB9vģ uĪ9«’N$F.üŅŌģg1=@G'x¬«­JżćņT²ĆŪ8éųT,®…›÷‡€M]¹hm­@•YG\×m3Ŗ ڱ›w“Ź2Fß¼ÜW3ę¬īäzšŅÖ5HšÕ¢¶ó³Ÿ¼•bNq§ä‚Ło~ÕÓš9]KīPÖ.dó²Ÿ:Č6“ڱŌĶ;JdŚQzõŅ Qå,\c®ER×­E¼*˜ ņŒqZĘZŽē;³—sĢó&u$§ElZJļgnņ–C»*+u",0:Z-$/ f]Ø«×mDŻĶƾ‘?ļJ¹łqœzśÕ­WȊß(±£7̬m;ĖvyVFTĪŠR+WUŽ7‚%Œņ«’Ma(źuŅmĘ×"šEM,ˆŲ»ŹpsėU““Ś2Ē{Šš)±A"“¹ŌągÕ«yœ[:BŁĪćŌU¦’2“ÜÉńe¼ "ÓÓ͆\q÷SØ®ßRøy­6H·Eö®V÷Gøuʹ9ž \*§££Öęeó1<ņŁš¶™-ÕĘā…ćž•„ą Ü]ź %ÜemŃņÄ’ōĶwz‚YŚ£AaBŹH„ė¤ł`kõvćĶ"$’ĆMŃcŽįTž9¬dšŽįŽ[Ęy¤#Œ7J”$ī3żĶSA:²øĖ ӌRÕó6ł4:KIc¶ˆE"EŹī¬KĒg»Ž6 ĆŠ«=Ōņ±€E”%Ō›6É®̉ łj‹““>UŠÆEÅhKóätØįR®pE in:qmž<ŚXīš]9Lާ`ŌöČ>a'=½*\Ŗ/ĖĄķT9·gc_K@YT.Š:ć„tQę(•C\gVĆĶļUøņ”W*H,ųČQė]Ö§¢G§[ˆ„•^48/ ’ó*Ԍ„kć>^kwS,Z,R¹ü…dŽŻĖ Ė±”©\\VŌ:d“E$ŅJ¢Ņ"|µcóÅÖķ&ŠÅ 㢶‹ø’“Z«#ŠžxóSšĘ•}ŠŪ“7ÉµĖż1\+^ĻuØOpҬfRHĄē5FVhōõˆæ94õ²—ģŃÜ0e@xķZS¢£y#žu£{¹r±łXŽĒŠō¦F‰o{¦sŠīļ]†ōŲ^ŅY'tVfGvlVļö›Gmµ­Ś2GšüՉ¦”ÜÓJÉ×^M[¹ŗmvēgėŸ.²äŒŁÆµ”#ØŪŁįņ]׿¾8¬·K`N-” 늳·’d„§\V…½‚ĆJ®ŒGØ­Ō£ .sk%{[ŌēnmQ—å‰rGaTŽēÉčkŗ“µ„Ųw`ŒdÓõ[=6(˜4Ø?‡‚9­~°¶3t-ļ6yō–¬»į‰ ĒēSŪéŚyĮ{ČsčŅc…tsčV×8LBœu5 šd÷4¼7”Ŗ•X숄JW÷¶*Zč–R§ś=āī?Ż“ŠmʅØEž®ö tĪMjŲéZu“„™‡VĮŽ[q(©…ź:Öq«$Ί”—/ŗĪ^ü€%a =zV…æ‡į”`©Üzm©ÖĮ£mĶs*3÷§d׊žāęåßŌӜßF£Q›eįY’}É%Ä+ÓļāŗŻ;K³Ka—k‘‚ŠĆ·ø»yń<—Ž č¾µwģÓ‹[—_Bpk)MßĢyckhX¹šīpH`‘ž™« č±õźžŪ±SÉö¦Qåiιäõ‡¬ĆÆJBÅf‘ żć֜e)häG//šÖ¦¼^“vŅā\‘ÉF~×±ĄįäžvqżüUoé:Ś:“—K³]¾—Ū:RH\­ŠĆŚK›‘3¢„5ĶŌƟN½Š\Ū“@ĮĻ5ZņĒV‘q,”רP?­[ŅSSøČ‚ņUĒn X“DÕ]ɗQxČēå?J×žĻ•³šTžŽÄ:$Ų?t8ē9Åt2_éŃŪ—Ęä ķ-YĖ”^I”Ōeéœ0‡šÄéęmüvØNķqŌ•^_{b Żb՛+l³€29„Ņ5h‹s§ūĄToēŸMWKķćw–yŖ–~)“Iqsi4]ˆXė¢Q÷v2§%Ļkž‡smwĀ<ø-šz|Ě£Ŗ»ć÷1²·¢/™kā[)!Ūgi3¾:°Ådßxµķ' $Æn^¦šoįB«tõ4µՄAaśæF?ķ•RJŸP*Ī›āwŌĪOČ:”óWĶŻŪ)h”ŹĘ@ā®5u°åO‘)4a] Z8GoeŖ±źš„œdQ1<€GéNńFÆx"ņ–I|åVÓPžēĻ7RćŃdįvs*ŅuŅŻĪī-rīႾŽ™čXé¼5§A2Ūy¹¼÷NÕµ‹•<æ“8µ~ßĘ”śaL’ÓJå”*ŪŻüĪĻŻZŪžsį­=#ݘzdU)l4xļLŲļ%p÷ž-žź&I4łAn„Ė€+Q‘īՏW<į¤5¤a)/}œóNÉhzĶ¬O‡··ŅÖŃü$ˆ…”ŗu,;0ėE֓ir/%žsŸŅŗq¦ZJDX‘±‡ĪkÄ©w|ēģ¶²Ļ?8ŗ`®ö9źŌ»^ĖVké"äŪ‘u=–ÅįĪOēX~#Õ4‹9rĘfaÓÉcɬóį{ūˆ·I$‘‚:-Ą£Oš “9?hœ÷Ė>k8F+yh*꬟ø¬žņ§ü&ŚnY Z†Ą:æoƲ|Aā[Y£ŅfŲ‚ē5ŚZü7äĪųny«ń|>ÓķHš™XsĀu«UaīŽXyI]¶‘ä©ā+ˆŠĘņ^\F+KĮ:•×ö°xŅ安ēóÆJ›Ćö.LMn‘ķąb—NšÕ¬āQ3š ĶTy]ś•‡VØ„użt6|/ā¤ŽÜÅyuög+Ą Šŗ5„ †©±ƒw8ŖoŸ4*²Ä¬ĘZ?oZ¢<=įŁ&Üw)€¹̰šŒlމb*JjVŲźįÕ-/#.!,:®y5[ķ0Ū\˜0Lē8®zÓK³†ńM“ó*ŽpMvzpÓE‡śC3°ļYņ*zosG.oŽ'k~$‹āM.;bD˜ć8!æ­aź~9†7Ņ33vŹ‘ZŪZÜÄĖkõÅ%¦Š‘|ÓY+qü**įQßS)N¬żūņ£žŻiŽHƒoš’愹ńG‰g“;±ž„–Jžņ [k½ŽMĒżń‘\ߌõżI&˜’®Fņ›łVšĆAÉr+zœÕńJ4żöß”C\>4Ō["al o9cDš¾ø°‰®ļ%faŸŻäÖŸāOŚŻ2&¼^ĖåcÜx?Åz„ńņļ,f“^¹ŻłX‰TŽiå’¬.”¢œ~'Ż’™BHµė_ŻZ[Lłß!Ågź^ń5Ų T1šźüW¬Ī‹‹Q8—ĖÜ+…Ö5_"™£’&Süm8ü+j1ØÕąsW•+ZwfŽ—”x›åŠ[}*U^„澕-÷„µ“+4’wŁÓ5Īi¾3ÕŌģ¹°¼w~ķj[ė—ņ¾įaØ®į‘øóQ)N2×Ch{7Åiżv4×Ā:“Åå½ėM‘Œ®kKĆ~ x\‰ĪüÖOöެŠ0ŻĄųī Yń„‹ˆ¤ĀcŗsśŅ•:{¬Öz\×åg¢é¾Ž0 ¢)īP ؚĄŚ[ HĢUė^qįĶCÅQ(i/bLą(®žMīś1»ƒå©9®w ·ŌŽU©8¤Ÿ©6£sŖÄ>Xßf?ˆ…ŖŠj×ó8ˆŪķ$c&OåW-56õʬ’ČßõĖõ©ļ<ŲāY-Ń`Ļ8JIč·…—½Ŗ+.›}#ļ7sFq“ó }:VĪ›aCž‘{ócŒŸjĮžŲԊysG§Ę¤d“7ZšĀ5š3#KeŁČ59­ļ²“‚_»VFŗŪF³ķK½į‡cн>‰ÖDµōŹ„r"ø]BWKĄ‰y§}żk”šœ°ÄI~īØir*jŹtŅiėč*1…Tł’Ó¹“Ŗé>KĶ—S&>ń£”ųĀĢU¢X]‡LØ­ZńlZ\ŃļĆ,‡ÜW3«¤ižŹō€>š9QZOž„5(6Ł F”Ügd»ģvrYčöÄ(Šß#qž åŻ”Pę?³£ 6k—øń/†o²@ø®qT¾ĻįĖšŹ’^Į#ŒĢH„J ķUg= ΆŪÄ:‘”ĒVOŽ‹Ī)ņź·ģ Įkbī…˜Ž+;Ć^6š3X_;1±©×rė (l·:š_ÉžF®*2“åH–ēM$äījÅØĖY4“o ž8å%MfźŗÆˆmnRŽf±óśžÖ*K4Ąč"­Ew« jÓ$aÜŖäŃŹ’j׳•UĶŁ¶ŃCL½Ö®åĀIz’gqŹ÷®žÖĖÄrŚdČ‘ŸŽ•^ fhFaŅn‡0ՔŌ5›·Q,W6öųÉQ\ņŒŸK"×#ŽæČv›£jM&.<ёŌIĒéSź: źæź¢e9cV^;/-HŌī`“o;ß„s—ŚuŻŻŁX¼Fć‚Ģ:US½ļ{z„šååµß© ͤP¾'ƦĮW47²KŸōxz$óYóų'Y‘AMqYHź\~¼ŌśO‚õ[iU„Õdeu§RtšŃŻ›SUļKC°“–³üÄ+ūœVfÆ{0Vжo”ćyĻåM¼Ņm¶”ŗb£–Å`ŽXĶ̐ݹ1Ņ锍yźÄ–[ŲXłŗˆ‰zœ8ō©ķ/ō2ų¼™®ūć$Ö=ʍØJ3i"(dz½gąĪ˜Š'KÖĻ“ķK_#:q©{«—Ģ—UŃü9ØĘĘ ­!iü“ĒCIµ¶Ńd;ĖE8 %Óu=ĆśmŠūeŁfÕøĶ\·µš­ĶØ0C=Ėt%4ź6ā£7t*nœ$Ż+sy–ƒāi#Z0<iElK©ŽŻEÄH½ö.s^qia”C0"Īåį$Šā³üFž$·Ÿ"ŅR½»ŚJUš3š+Ų+“v2HĆN/ £Ļž sM«9¹)&~€œ¦xkQו‚5£)nģx®žņ飳ywiožŖ'5*¤£īČŚkšÕ¶īT–SŲįād Ł×‘X+š­…čc óC'\”Ęjž»āĶĮŸ/yu1ž¬Ķ/ā Är°“ŃLØÜļĶimMs/Ää­,5Y(K"k\B@:•ĮP¼ŻkŖŠtÓK—±Į x¬˜<_ŖL”ŸĆh_ŁĻJŃÓu›ė¶ĮÓ%·õ…d䎲Zq‹…”64n’įvy"…;–p+%ēšÜ’%Ż®üw“½?XŠ—T;žIQHä0‡uą}: qØG=÷ųÖéEĘńzœ“©R2÷¢¬uVv:=Ę<‰m§8č5a¼?f­ę‘I°ÅqÖ/ą"cڄą:²6F{ō­;æųVŹ–R“¹\±Ķc(Ö½–¦ņ­‡äę›:FŗŅōųwʅX:’Œ#e“Hd~ƒxā¼ļĒ~/ÓļÉcŲ.ŚómX{™>V‘BōĆõ®ØQ‚W“<ŗųŹ—“oo#ŁÓÄ&¾™ˆ6QĒ·P€ėRIu¬\X2Ļ{fø;søWƒXźW‘JYg}§±jél|Bv’ž3Ža9¾{$RÄӔ-m|ĻJ²v”ĶĪ ¾`铁Qk^2ŗŠHಊ?³ Įbw\,:ż²1V²‰ūąÆZŃŅõ­ä5«Į냚©r7yj(WrЧoČõ‡Ÿ¤·‰":\28 ÷I®ż|wĶŗ­Žˆč² ¾z#K•L–’Ļ Č©šoŠ/ō«żÆ'Ś-1÷r+ަIóĆÄõØę‘QäÆłh{?Š<»“ēZ\ ß{®SXÖµ«säEvóģŁČśÕO k¶¼­åܽ­ĮFÜ©=źYg¶MCmŌEIćzœWEę”d®×ŽsՂ¦ī„£óøė^Gd öm £įzž5NĖĒzµ„Œö²m=‰Ščmeµ…7·°Ą¹Ŗ—šh·j{Ak““²®šPwRŽ„ĖŪ^ōåb½Å™§)ŖAēnޘŗĻxĀŠ xc–ā>ńī…ršhÓ”6Ļ0äNÓ|+*Ü,‘‹×(pj'FaŪČҜė%iƙéQųƒĆw27ŚtÉHĪ$ĪsųTšŽY†Q Ō3Ās Šä„x­lü«Ķ:K“ۃłŌVVž¾*ƒĪӘuė GY^ĘŹ¢““wž»ō7vĄ(ن—Ī? ŁÓ&ŠÉK„Č;¹ĮW§x{Hƒ.®WøAĶiź ,6Į,c·Ō9ln§ĖĻ”Æ¶öi¹o÷Ī—«Å4€4I×īj-rkÜ~ĘC0'pC^Y­ØŚ^fkx­šrrŒ?śÕnūĘģØ#ūDJåO3U 4ć= Ŗbį*z½NƒT²Ń5ˆšŒ7F qz§ƒ҉“JFኩwā Ėєգˆį+ŒŌz~­¬Ćr-cN|tSųė¼ŅŽē$-&¹•¼Ķ[Č ¾˜É5­†tč£ ØŠćøkÚ¦­µe‚ŅVīB?•hźzšŁ Y¬®ßžLQgssIč‘Ū9F éüĢŻ&Āa&Ģ#é[V¶±ĀWhÜH'šēµŚ•mµ“p£³ÓÅpٟ2-&ęäœųü鬜ŽĘTń ķżūž‰”2ÅĢL8äę£]>ÜĢ 9‰“©õÆ2×~ ŽĶŗ84øķ#<ę×ŖųŹé]Śq.2@Ū!Ŗ… –×ī1ž:—5¢Ÿ©ōsypÄ©#«är?_j“-üėV$SĻ8Ķ|æ’ Öžń,7ū—ų–F˜ļZŗWÄ#+öu‘tgcœÖ2£Q-ŸĢŗxĢ:—¾}t;–^c]¤ēµ%’‡$ū4°,jw3‘^5§|@Õ.[dSłšn£āėOö¦¤į=ÕB…[¦ßÜ:˜š Eó:{’&ĆVX-f“Ūęó$ü«~ćT°¶Ó‹Ķ{Ļł`xę¼”üGįfĆŻÉ1?6G_Ʋø³nø°2Fz•ā®ż‘.£óŽx¤¢æō§ģc“•ım:m§ēsŌüIńw]bŚŚénƒžĶS_ŒzŌ–ķ֙l«Œ~čc'ė^hś=Ó°%Œćųų«^—Ėgø¼ ½dhxZ³FOŠrŗlō)ž Kw`A‚EóG*ēé\ģ×Z,ÄĖu¦²ć®yżk ū8Ą˜Œ\LĖĄ 㚭sm)ĀdōÉq¢¢¬“DUÄĶĘéŻæ‡ŸFø ĶFÅTšÓ¹?Ģ×_i²?2ßÄ:|Ø£ų†x„ś„*œM;ątĶaźŸŚšc“B ˜ĒĢ? #A½æ#9f°÷ā}ś\äiéæyŒēۊɾńZ\†1“(n7(ܾ‚öēķ>txē9"ŗm7PŁ7“Ąņfy¢JĪĻ_"hcŻDō·™½ńUŌļ"&Öx£·Ļ ŖžUę×zlņČņ5³ć,;šō›-SK–ÜFöx, ēš5wob÷ÄCp»zį€éųWDk]{;³’¶›š¬ŻĻ4’ŅEūѾ Ą©­ō¶fŽ”•‡LW­ézt7­ÄNA»Ÿs”ı–[{†ć?& aŗO³¹ä‹}¬é̽ÜéĻš“ÅuńīµkPiƒ g\±÷É­»čōh@W“&č|ĻZČŌZʾ[6e<–ėNXXĻɑ µhOā¼~’Ģģ¼)ń(ڶ&šŻŗĘĆqü«FóÄŚ>Ŗķ ³²Y®ø8öÆ(¹“M.Li$.FFT¹–@¹@́ĮPk8ąē^27y²”Tj#ҵ÷¶ŠĶē[[Kuy2!ĮÆ!ńgĒ4š¬“Ćig„ŻŹ€Ød~u­Øėz½Ē†n4ŠĢxĢ[œtČģM|ńĒĆZĪ—xĘeyb9"@1šŚQ—³w^ńxJ”+×KĘ?™G旎Æ|eć[­Zī(­¼ül†„O„pŲ-Č,ŁźÜs©ŚnnsW4ąģ˜ ‚;ב‰©9k'{w€ĆS„MF’еšĒC»Ģ<ŅīėĖ`Žž“©b™d%˜ŒŠ’Ź2B0p8®N—:ZŌŠš»œøHāµ|BĪöŒ‘³|¢«hžD€cå&¶dŒ}•Žk‘ŹŅ¹³^ē¼rZ-ē©o˜±ėļ]™¶-3a¶ē¦3YśL1E(–b),AéVī'33BX†č:Vu§*ŒŚ”-Õċt]w…Ūó¬bśrČ®r£®5Ōk»Ö¤Č5f=ŸŚShņóŲc“ų×U'„™•Jqƒ=Č0ƒÆzΚ9¤¹åa@<Ž•««Śy2ä&ąiŃŗ“*Ŗrµ²[=v"Óķ‘ē]郎6÷­ "’$Sq[^ŸĖ=i/Z!ęU¶/ óY)¦Ś/f“G17–ҹsņŽséTZā$Ȅ—ÉōÅnŻĮĻĖÜa’jׇt››z '#Ž›Ø’ŌŅ4ܝ®s±E,ä/85nhRĖĖiJIėšŲÖ C½mcTõÅsw;åbY‰#ŌӄļŌ™4·5!–Žņså$ōŖśÄ$ņ’Č̽H=j„“l¹ŁŒ0ϽOģ<äqĶ6Ņ~č¹®µ&¶œĮ ˆŪ‡'=jY¢38rźœvīj%·’N{št„#]¬Äl!F:RÕģŽāCj«*²üĎ„«GPo+OFŠBœÖo›Üyć­VšfŲź2W< ¾V÷&ė”ny§ÜĢKmē­očŽT ®ņŻr3łW1eøĒņń‘ųÓīZę&įŻ@ž,ÖRJNĢÖJČėµŪé¢q2•eŪב\ÕēĶU NrIźjI¤2F…É/€7XŠaģœēėUš®X™KWy٬±±`œ•ćŒńL™ZVø­–M²®>Irj­±)0nN:ÖrmFū…Ŗ„mæĪÆ[ĢX˜€{ŌSašŪ@-׌ˆ¤XI8É# ÷54÷kp%É|’ĄŗUKĖ“mw«d7ćŠuõÄb>¤œc­dKó ܱ' šŗqoā 5²:=3ģÓjĻ9rP㚿ŖEkÜ~D ĘK6+Ž„“xš{žŁåmijdw'­9AļraRŚ<.ņ1Ū“ķē5KPŁ»ĘzÕ¶2Ū`’:šÅ—Q’L;²qĻzpWA'}"¾fŽŠģW°āƒĀ ŒGSP5Ēś1‘GzūU_ķ).!ņĪÕ|žų¦ÆŠŗ±÷H…Ąå#ŒÕFo˜¾r{T—¶Ņ¬j&āĒæ§Ńģ&˜oŻ‚yę¶ēJ&4čóKB ŲĆØźė ĢāÕ6–ó„MØ@‘jŅGlŽd*p­ėWĀ Ł#“š»§Ai·‘“c ƒ“Y9«J ;VŠ’¤Ŗg«cmt×g!™‘pqƒĒÖµf–Ż!ŖsŌüź„ÅįŠŌ ē5œTžĘņ—,lŠšĀiöJ+Ž ÷Ŗö*×0‰Ü…s÷”v ŹføY$ijŹD,P+I½,sĮ6ļ#U$KtÜ€œsޚ·±—$6KqYÓĘ]}Ć8ĶMcj ¾ŻŲą“ŒT«u4P»Šµqvbw˜Qq‚Gz©ż£)‰¼²Īvąn4é-7ąJ٠Аj›Ē±ČMĆҟ5¶&Wz"Łó$“ÜŁŽqėŽµ_Lqøœ»Ņ“QC٦é<²9Īp cܐ“œœ÷娌ū‰8Æuīå— +"uUŲo„6‚ŌĖ īMbOr…•‚¦)nĘ”ćl·PŁ„ĢU’Zźķ3N^]±‚yĒŖ=ģp .Īž˜¤»yžLLŘsķYŅF)X×¼c}Ģ%¹Š[½«ĘŅs·ؤ—YŹ£#ęŖóĘ#ņŠŗ0>ZŌŅ‚M€v‘Œr(’².×Z@īūŒ8Ćr;UˆķŻ¢%£$ö5­d‰XŪB}oĶ·6°P}+.ubāŅFī:fšpI>„K’ĒåŚŁõ5-ŖŖ§q<šŃxą‘F Th6*N8­#®„%}øPF žø5Ü=ĘŲÉUįŗUż.,£s`NjÕłH~X™HĪ1ÜÖ3©gʑ֢¹lAFi7G@kźaF)k¹ń­9O]ķÄZ¤k¹¢ŸiøČØxh½ŃұŚ›q«»<°™čCŠĖ¹†{ÉĆ%ĖĒĒ'„pÆrįÉĮäęµ4½nXŃGī±ź*–CX™ŗ±›÷ō6nąæ·'¬ū{HŖŅĆ©H»‚BĆ®H š«}Ʊf1ö¬c]æeG _UzŚ0ņ1©(õgq¤­į*$e‹ä>+¢W†}Ņß’Ą|ĮššĻķ‹’3żc¢ž¹&®éś”DµLųļ€O”é]īh«.T¢‘ė–ś®Īė:cī ń§ˆü- n#ŌņŪ?h° Tidä‘Z «éW¬÷¬e‡ƒwrgTqUcX¤ĪŽēĘ^w„‚:e8ųēGü‘3žŽZ× }.Ÿös¾2IąŠēn®,ć›1Esņœö­›W9æ“&„ŹŃéxõBm“«‡9źĆ,>6ŗŗ9l.#øķ^yaāD¶ąZLėœäՙ|ip[÷y~„Æ4ž§²"X«čõ=K@Õ`sqyĆ!Ń\kĘÆ6Ę1^7Œ®š2²“ ōŹŽ•™& n$,×WavjO ;õˆš\©iź{–·āU²@Rš‚G¦kš½ń«¼Ū]Lłž#é^_2ݘ÷$ŅŹ¾¹¬É®/"|‚ąÖń£ lrŗÕ9µg»ų;Ő֚xŠœĮ£©ųŽĮ\Ÿ0ČOLšłāfņ%ŚĮwÜ+J×SŠtż[c׊ÉPŠ—4‘ŃSRqQ‹ŲōķWā$ā\[ Ś÷S“āÅōįEŖĢqüOšņ]Jīā$"J‡”Iu ·äõÅ\šōå«FTń2Šå‹=^‹š¼’4ūu›jŻ·ÄH& ÓéöŽiå¾P9Æ%ŠźŁń˜Ž3Ž6“NI‰Ū¼żj^Äq«(źĻhoĮ?Ė ¹ŪŹsšĘŌõ+Ē“ĢA1aĮŪ^n†C¶]“ōøŗŒcĢ»ćŒō­!hŒÜ›—>æ”čŚG‰µ^ U1·šŲµń•ąR²E`óņžµåź’ĘT“3ćūĖž+M×"™Bµ£7zRtį½UG=/sÓ“ĶfĘķÕŪfüruüknÕt»Ģ#ų•ń^o£-½č ĻĒn•­ż‰å¶ŽätąŃĖĶ“®H§(µÖ‰i冂I™G9 8¬›‹tfVøŚŻ˜ø®fI5‹L†|ŌqO‚žéćHīYĻŻ&µå’VfMEĒŻl»ŖčS“ą’9TŒadĮĶ,zeģ){YI#t£¶š•Ā”ŁjīIÉŹąÕæ>āę,,7c‘ŠÆ£&0pVNāYŪj¹-ŚJŅ·µ×Ü“ärsFƒa©£ŽłįĻP&ŗ‹[IXšņīLuÉŚ+–„V™ÕČŌ79³‰TóRōĪ*„ĶŽŖīāä ŒōķłWiy{gn›SČ@ĘFOėXŗ¤ėv¤„¾O—€ž•„97«2VŁ+²ļ‚Ķ„ ¦{ø¼Ģt(+²µÕä‰6ŪĶo°^µęŚF›§¼ĆķS_F d†ęŗ±ŚŪZgN™fŻČóPę±”båfuŹucÓń7ļŹĶ.Ŗ˜s° Šč½=𧈺÷c”ź6z7‡įˆŲ pÅŖ–§gįē˜¾ @ū«/„y-Üŗ­­ŗĘd¼øõ$€*WApĶxHĮėĮ­#‡œurg4ńP›QŠG¦jéP…ĻęƒĪgśÕX†ŃHKY1ŽIā¹?ųK|=i·iŽ]‡zl¾/ŅoāʰŪsĢj”“’vµ”4%wŲō'ńD+hvŪ§™Ž8Ķq~#×5˹™ o³©ĪcĖźéŅ™"×,•;YńŠ©³*¶³§>F>V9„:įŖŌŹ„zµæĢ³©é:åä¾d—÷rŽøFĻĘ®i÷ÖLžŁn8ć4–1ĖnŁ“¾g咶4Rž6hø•8šr+YIŹŚ\Š4żŅv5“ĶI ¶øVĒ"HĪj¶”āvćĖIō>Yž•±o­i~@Iī­ĖČmµGSŌ4®^faÓtAH©‚OIDŖ®\Ė–h„iā5.]¢ģDćRĶć«[{|²y8Ķg]_ióīmļˆĄVUŌ6ś_Ÿž§Iˆ0wH*•(nĒRu²µ¼‰ÓāXI’udŲėĮ S?Å ¶‹y£#Ձ§[ųVŠØ76‘£ŽøaS¦— Śżė5‘‡œčĮ«¤œŅål®¾:¾œ~ā2ĢO±[š?ˆÆ.a w¦I)Ē.ŠE@’éšÄ ¾“qĘpø=·‰£³\%…”$Ž.MDØū¶HŅ`¾9Z}՜“A,dćZжKYXn·vūØEsw~4”¶ ]>7Ē9_éV4’ź‚ēO~2Ux¢J­¶*¤ś5օerĮ¼»•0²Un|j#&!:“żē'4Ė_j(ņōŲd#Ÿ–JĪ×¼Gā¹#Ŧ“dń–t؃Ŗō Ņ„īŽx]”9.H'‘Љm®¬ī%•ćńÄŠ‹G×|^%Ū<%bŲ"¶ęÖļÜE—Ēš“ŠŁ©^ŅW!“¢¹cJūI‰|Ū6īWA§ŁŚŹ»|™#cĒĢ1\Œ¾4{HŒBыœć<ÕųOpq%µädwHĒ5œ©U¶ĘļA+&wچ‹hšĮøäę¹ĶGN³³FyfĖ…$ Ē>6óŻcuՔ0ėåō¬_é¶Ā—{‹Ę/Š2°Ŗ‹åŅ«±ĖVRæ=ßŌµØkśj\ˆķŽŅ" ł‚§ˆß^FM¾«ØĆ8Ž@ŲÅÜų" o¶žé_ņ*}+HÖ-PĒ …/µnéßXI ]¹*'rÖ½¤źØŽbÉs.?»Ņ \ŽG9K˜''³1Ę*W¶ńĄ^’ŹEaź»éś“ĢՔ’1ĘI5SćfcĖĖ'ĖŖ.kŗV­t éÓB ó·v qģ^-ƒå–yoP¬:Wea§kpŹß;/LŖV‹ŚD>{§‘ö Ł(h§-,ÕĀPåi©[Ōó /Rń£)+;ķ9äg"ŗū]ˆ¼CN†DaĢ01[³jś$,™rO/œVU’Š|(wE-¬§o¬YØxx7Ģ“CśĆqpROäe]x—Hyˆ[ x½Õŗ×]ąĻčg -ƘķÓ÷ cóÆ9Ö5/ É9k[ ˜ņs†V—…õM6?–=9˜‘Õ€ØÄĮ8¤Ķ0u„iił×cÆŁQ§ÄČųä+ƒE޳«3eZš+ŃÅax'Wµ!véÖ±¾Ž®ĄWao«Y¼L$K$Nåu®XÉGGѕ(Ō|Üęt:ē‰ŃŽåŽNG˜£šŅÓ|Aā”Ÿl¶ÖrĈ­[Ó%ÓnČ(]ˆćļ TڜöVŃūD)įgØn č%Ķœ™·¦Žź¶Ć0[Ū¶9*++Ä^ÆKøo¤LpA*kĻßĒŗj Ym%aŠvÅA7‹ōˈȌIF2?ƹÕ.gyču,]8.ZzžŃe}•c.Æ[zīĀŌāēLš×kėP9 óęW_ÜCpį’I‰ąOJ͚īH¾@8ąÕC –„|×±ļó¶“vźp?lļ¬mN]|żHmī±ÄIÆ¹ŌšHņ.”¶0»±ŸŅ³ÓQ¾ŠV-r:uŒ ŁSVÕźqĻ$Ҷ‡¬kŅx¹§Ū ];NŻžŌ +ĻcŌKæRœ³vV¢c¹ŽĘvÜ;µLc}õ"x=Ż.v·>,ÖĘ|Øma‘“óYÆāżhĶņ‚d<’«\Ü—,üN±’8ŻéWSMŌ";¾×nł^qWɤūJœ·OBäŽ#ń=É|]Ļ ćŪXz¼„ŠŻ=ŻĆ–^_ž½i]¶§» €8nwf²w¼­™ ÄźpAĶ;(ģsJļT݊cGŗXÉrĢŠŌözŠpw0Ļ@Ä՛Bkd*f®:wØŪYø”®ÖņšqšŽNey ŚS‹Ōæż”žK ×F߯ƒÖ©]i0¬,Cz7Z–ŽņčK½¤Ü^•¢uTŽ<}ŸĶ?ŽcDm¹£?$`dJ˜ €sÖ®ŚŚ„ŗ«‘SÜj’»!bPjÆöŒ®ƒp@P:UøÓzŲē©$“ޣ呂cM¦«Ü"žģ…?‘­+XźŲbTŒē”i·:T©I d8õØŗz#Dš\Ģ£cu=» ¬Ć{×W¤źV71,wpmn”W"Kee9Ē\ŸĪ’ßĪ“ņc§½LØ8ꋆ+e-QßÓ-åņHXp6Ö¢k|VL•w5ē–w96HJgŒęµ–'< ¹zīVŖVųŗ—ķ[\ŠÜ§Uk«BīK™ Į×IaŖéĀŲ*ŽGpæÄŒ§'óÆ(øŲļ,īESeĖ#6O£b”£}b\1s¦łf{Óčsϟ.śÖF&2ꋕŌ-Ō6›ØÉ,dp$ŠņX5‹Čv!bJŽsĶjŲx³QH~EQŽĶS.{Ż•]5¹ŲÉ©ė¾i3žķ{n¦SŹ;ĖÉ+Žp1\~£ā{¹ˆņ1‘Yk©Hņ’Ÿ!<ŠŽŠ’¹Ę±J/WsŌķu+[åĶ–ߎ'½¢B«Ū^ÜŚ²ņI‘Šń/¶];¹Ų‘Ī+NŹīõqå\É1“YN×*;ię ėcÜuVśHŅ+­FĪāļ"ąÖmDF,­®Ųu(Ję¼ĪĻX»Hœ4¾a‘WW²LĆŹSĻÉÅT"¢¹l\«¦łÕ®u7ŗ¾žr« Õø,%äR[Įiī"šßż§?ĢŅäŃoeL\L™ļ¾ŗ›-;KXH7ó•#+łŠēmÓSÕXĒ·³K"AÖ@!³ņäŸŅŗ=$Ż=¦ųµ‰®R„·ņŖ¶ŗ'‡Ń·Éså‚sž·–­+K7OléĘIˆč¹ĶD£|+SzräVØžćń&µØ[Iå,WR`;/Ėj³k×ßw͉§w>'ń.„q&ʱ…~PķĢ+œŗńā±UXĆścŠź³ŒSITœ\šrv9Ė]/We·IŽI'­užŠ~ÓÅė*‚>īFs\żę³­K&RDHĻPƒ­U‹RŌóę8#æjŹtŪÖęŃ«„®¼Ī³XŃ4‹[•YŁ6“Œ•Ķ6; q[[«9ØR ŸÖ°#šöąķæ?˜¦¦Œ²Ī“ ž§=jšJäӃŻ-MŻQꂐy…žįĪkŽ×žśbĄ|œ‚k„“Ó^;o£Ćó[–PYĆ@­žI Ž*Š+QVĀŗ“ÕŲņ»;mA䈾ćĪ®«GÕĪÜȼ¢¼Ć„u«q§„)3…ųT ϼÓō›ĒĢ«0ŻźŁØŸ$™tØN+÷R¹6›āŻ=”Ł0CžaZśTŗĖ3M4pąd|VDÓYs¹Čć‘J|5aęge ĘTšžVßŗĪ—R¤,„«õ; H4ö‘"Šõ¦W(**?x{V‰„Ö6Š\#œƒŅ°ōė;8]~ĖŖH$…ņĶnŚĀEö…hut ` ‰6ŸCY'8+Žē!©éZėĢŪķfśb3ŅØ ė‚MҼI’śĆj«f’\ ŻĒ%dꮟ:,WkūųŒ||Ą=f«„¤ž 6½ŁóTšŻŁFK“ņ¼ē?…Y³ÖRā1 ݜÆ@ŲźkŻgšnŠyU˜» ņĄÕ Ć€D`3ZūZo؞Q³Ž«±å‹¢As²Kk&žųéZ~AņĖon‹Ū<^‹k§5„Ū¢ß=Ct«’;¤FK­8ķĒT$zŌ)É»IÜÆŖÅ>u¢ģy¤¾Ń<Æō™|„Ē>[šĻ:'†r"ŗ» Jō»OATešĘ훣ęīāŃõÆ)c¼šŪJŸåMŌKY,2ir¤`[C ŚŹobäĪ­Yėpi·fH¬pÜpŁČ®žYˆD±O<ŖzgœÕ» -GåÄŹ9;ן„e*“¦ÆråJ¬5曽]?]‡Ģ[;e•ŗÆ!æZ£gį;YĘ X*ć"½&m2/%e†ŚŽ3ŒnQƒL³‚ųNBĘäY¬©ĒM‹«‡„RIKsĢoži“Jž\²#÷x5ŸuątÓ§ežWPŻ /ķ^ń”å„£1÷«Ļž&|bš_ƒ|@ŗ‹ōłf\¤å8÷ŖŽ2¤“i6–䬿EJɽ®yźéŚU”€Ģńø#ŒĘć^ūkųĀ:wZÅ,žmJčb#æį_Jkž%ų7Øč+Ŗ.¹Œ2¾ Œ“ķ_žÖڦ•¬|Ji½ę•eŸ*Vć&ŗ0źN“ekw9q9mom:…“qāw9’FŹ…#”n? e¤q†^›³Ķ]Ō$V›*6ƒU „‹‚ĖĀ·?xÕ*sÉŹ]O¶ĆŅöI%±zEf„€3Ž™Ø|£GžIĶ_µÉ„¹§źI¶0ǘĶsß”ÓĖÆØõÕm­­pÅŌ~b=RKėtDDE’ĒeÉ`“W%p»°jå’,VŲCóĻZĘvģmkv…epXax5H†²ßo+y e“ĶaßnŒq“Ķ]ņ¢ŽÄ7˜IoJq§ÜU‘_SøóoĶp6š}үټärqżŽ1Y:„2-Žåݰō#4¦Kˆ£ĢJījŚPIYŃrź:k˜ć“ "óTģ£ó&aJ”uö†vgR­×°śÕŸČRé]žd­T¹™ŠZ~ģof&H×wįéYšõū\ŹĖ*¤üÕ¶ķ³mC°H01Xڵ“–īįĮī+*ręčmRšW§ŖlłIŖÖŸ|9܃‘œō÷ŖöØęŽ69äcžÕ2E›µ‹)ĒoZMu Aīgź—QÉ#A-żńPż†į ó ET’ļV.JZŻHd…‡P)t™„ŗżŻĮ‘ÉūŖ§„jīŃŠWkR „ØŲ#œUWŽFˆ2gq8ėĪ+jīߢD²FKsŽā§’Ś·]¬Žf9ō©^D6›1cwS† ZVh FŌ#ƽ[hȔƒĪ{⠟(»F1żkHīg¹›xž\ŹęB8§@؟9ąõ¢FgøŚFōö¦˜Ā#,+ŌV“•–¦”¢Ń· ŗĀŁŚ ĪXgŻ3Œąg<ńÅOaŪé69sČĖsT²!vä‘ĶrĒWtk)“¬W™—åNFŽsžµ"ÆŹ®„{b«O—“r½ˆĶY“Å ž Œ“[Mv&M{ʦ™sq1LŒŻ„;V½·‰Wlc{U-]ĖŽ3UÆc/~C)'Ö”Y»16ć" oåy č:SŅė~ā§¼°XķĊAČĻ«1Ū“ÉĻ„l¹m`»µ™jå‰G=*°Šåy§¬ÆÖXZræœĻĮB9棄‰×b+fmųr0sŅ“ģąf;UA8Éō¦Y"żŻ‡qć5Ōč6”cĆ®Y¾jʬŅFŌą®“1¢°—~ Ž:śRG¢Y“†;ŲA]ź¤VīYĀ. ĀÖulšŽĪ&$pόžµ0“–ÅŹj(¢ŽLrłj *“ÅO”$ó (ek?K·ŗ–ćą+„»²Ž !†ĆēqüėZ’QŠq‹”nŹ–0HR7Inr*Ö£4;6EGޤj9-ģ…¶õ‘†qŽõœź]՝Bąqš˜[”­-ĶOĢ’±AąõĪ)žq†)NKuēł¢õŅ a½— :VžŸg$4Ź1LŸJ©¬i±É8ŚĢU*­4»ŠqåŃnaĖ#–SÅZŃāžāsµøx&®%‡ŹŪŪd{I¾ksĀ—ÖŚgŁŠF$#—'©K G›”ĢKbV/#°$ķš UÕt‰ēVxayą×c#YłĶ!TūÅóžj¬·"Ž]¶Ļņ7V^õ¤e-ьT¬yķŤ°.ÖūĖÖµtgF“(P–UÜXō«Ž*)$āL˜•ģk3G¬…VŲm'­ći-Kœšve]MPī‘dBOUĻN*Ÿ>J°$wj2F·…œœüŪ½}ŖĶ’$›UņHéš²¹œ’č6ŻĀ˜†ī1Ēē[*ĆĘDUĖ/>ę³$µ)&[¦jĪ›!q==©OŽVEF:\»ā £KGĆ”’ ōÅQ“•äaø6Ī¢›}uƘ$$c𱦆ņ7æŽĒōÅD—,lĢć«ęf–š©“ńŪ½(ó#“j8Śü*KnÖm‚VLēÆ^rɹ7”ČČ!ŗV ]Ī^Å“š)ĮČĄ<öŖWķĢĪŽ ¶^*«G(@ĀTUžzŌ6wö÷Ģ×-ŹĘŠÜUČk4iŪ*Čū•W>Ŗ©ć™”HĪZ¹Ļķ ’H 8UžV »ó¾E›$ć Qģ䞻mcfŽd™\ƒėU¤fįF­;1ĒŚxĒsLÓX1We!·M+Ź Žé—©éņMr³··5%²4g‘Ś·Ź. ž2s†=k™×/ä’óšÉ»vśÕ&å ćīGRåšy”'˜ČŲ“ZF ef 8ҬéG}¦ Ū‘Ī{UŲ#yF«ŒŠqw‚ję¤>fĖ0Źą6:})–ŃŸģĄźłe89ź}ė£ń‘,vŠ™ŲĘ'äu5‡słpälĪ8Ķ J[1åŲ[kwtYhźjĢH|Ģ«•ćš4ÜćcHīz禇%{ ¦Ń…ŒKĀą×ĶZ¢ķ‘ŁpO j9YĮ,.™q+pw7ŹsĒ­ ¦‘µ Lę.TęYYU_+Ōžł¬ū+Ÿō“’žyõ­a"²‘•}ćĄĻµ]ķ³0’æBhŠ%%s‘ڧ0;FÕ^?Ф“½ &ՌHŲĒ<~4ælaWć8Ķg$ڹQm »OjūI5XCŪŖüĶ2ŸZÖ“""™Uü zŅŲ[B/Fę<õĮØM›(5‘XłœŖ²Ž½U7RĢ0ņn!p§Ņ©ėPĖӈŪåf8ĮØ¬× <ĘnµUÕµ0~ėøūQ*ŹĶrņ8^žō’\¼ĢzŖGü#Š}ęÉ%łzŌw¦ĄcW;NY†1ß5\Æpę¾‚Ū dZ©bż€ź*¾£cFCŠAĪ3ŠŪѤU›b*īćÓŽ²üC~T) #hĮ ŅMßCI(ū;ɘ±L!ĻźĢRBŽÅÉÜŠŖģ«Ÿ1°¼œŠdń©a"Iø`w”ŻŪKMŠūB˜Z±Ąj‰°’V-fF””„ø9 ÕĶłwєFi7 8¦‡ĢÖĒ©Xižl2Ęe1Ē ™Ž1ĒJ ×–YK³Ė&6”ĒŽ›§jgū ś9Š4ģÜ{ŒT“;-ēŹ§ÜzWKŽ:Z+źB„˜L›QœtrŚf«”Ą'Øō§Ėqkc)ņĄ–Ų sŽ“¶×z]Ķ‘rvHĒn3ŠVŠI MģAŖ[›wE@Üd¶3^}­Ś›+׍xĒ5Żh(¼X­Y™TņM5°“»±ļ uŒż~µtēgfg(Å­ē¶—\–Ąš‘&”JŹŠ“ĮĒcIäˤb H䓦¬”"DŻ€Ąēš®™i””dļ”bݘwt`Ó¾vœ2Äć® Å1eIäłJšqS,­mó>ozÉhtF\ĪįimUš@õ«jŒÄ#†QõęįČÅŃ:.S[76«8?{±©«$·6ån6G?©DDj‘õ9©Y>Ķ$Øn…\b·S`³utœĘk*k …ĶÜ “ĄĻ5„¬÷&œ%²cm,C;19pŽõ“ā4dp 8ā¶RYcÓī ņ¢°ķ‚Ü«Ķ:’§8śÓŒZw{9%t‹NŒŹą³½t6ā%³vV;³€1šĒe¶Ž%13™^µ,S˜P±É2Ž„|ś /‘\ŗ6“ŠCå›åČꤖ("}ĄžBœ†Xį ­ŽzŠ©|\^łddu§Źžļk¢ÅņÅ ÉDvŁ'ŻĪ>µ©ąŻ;ĪŗK©Š˜ŠåG÷ųW=k,mģ²Éō®ć@=•Ā!ZĪŖ•¬čź“ÜŲŗ‰īYĖXśķč„mhW¶V ±oĘŠŻ½aCq4b4”šNqZņ&'UĪS†Ļb}+ŠK”mŹüÉnŒŸkÄ ¶3Ł›£gs"•VT%{“K#–ŌJ$ Ā­k»£Eo0“Š@Śx­)čģČmKFõ2ō£żžĀ_1ŲlV­ŌY øVŲźĮ¤ĒB+ÄR¤zż“„øXbŖ{×A£·R4»ü›ņ•*«NbiŖ—µī_µ,Ž&¶½‡zŖØD x>õ߯ĶkojÆvŃČv™\ĘyÕÅč÷±Üj‘Į!†U ­o[Iab’»ä»,p1ҳ挾3hsGH•SKČd•d`±¹(ŽĆÆj_h¦ŪƱźNøžč0({_„`Y,62ż¦ń•]‡Č£·½_äŚō‰’„·¶ŹēŠŹ~ī±ŲŚ’—«WŲä^·£ Gɟʻo…ś=…»¾ņŚźuzs]q»Jē XŌu-c:Xm ­ĀØ)µņ:f¢Ō.āŽŻ”+™¹U^€śš›ĘsĮs©\5–#‚1°7@Ozēō;i&ĶĮgĄz°ūŽŌ•£×Sz±¼,ŃkPø·µŃ7G„ĘPz{W .±pecŗ’†ŗ±•d;Šä)8ķŚ¼ņm¾keyÉčk² É]œŃPZ;k{‚ŸėsĻ Óc·¾G;†\wĻ5ÖYB×PüĻ‘čEiŁh‰Ć4ńäŽFÆ«r¬ĻŽPū]sHžž5IšE5Š[ŻZMŒ¹ŽP=ŗÖ‹iv¢>Z£¹8”4kU`Ѥmß!ė>dµ½†įĶ„ŠńhņK‡KøŲ‘’i‡IŁ5¼MĻŽ ƒ[(‹ AIŽ<óōæh²™w1ŻŗÓöHpŠjĢČMÄ1>T£ŲIQĶ„Z.('>½źÅÖ±e 2G42(ćźń–Ÿ[^-¤ō(ÕJdŽ;„ZTĆŪHŅ–}L*¶X÷ÅW·ńv,Ć÷’F u#5»ˆ“¦·\_Œ‘Œ`Ń*Ī/@Q÷oc“Ā–ķ„ Ž*4š­·®9qĒ5Æ&«™•2Χ‚@éPM,rrўG®+DŪWfļ iśŠ0ón±ŠnĶ_“G°ĄŚg”4¶Q[łjUŹō&„ŗeXö¬ŃĘqĘXTģlä­y2„śnڐǂ:’(>fˆxĮ#ŠqL™ęA¹/,ŪŪxĶX°×ZļjŽæ?ņ¢U$•‘*”½Īs[šŻŌNU^&ĄėŠĘƒ@ŗV'qbONk¾æÖ¬¤PŅ£©=ŃÅe‹Ķ=„$]Ļ'€Fjå(Ź&0„£/u™ŗ}…Ü †‚Vø«Ś$ÖäeĪņńIL˜XŪĀ7¬c»f¼£Tń]䛖9„Ūž¤u¬K掓“+ŸbkUF}dcõ‡Ņ'“Kā"ŁĶ(«Ą"#ĶMgāHGČæ_,^’ $¬»eµGż’jĶ–­#¢łQ"ŸB1Kźéģģ[®“ęhś*ĆYѶīČ^ž•bē^±eū6:ąWĶWóź,ŔŖg¦ÓT|Ķ`åU{dŅX7»w3©ˆM{ŗBx›ÄÅ"+6>P^2ĆŹ¹»/_#ü²éˆƒż‚kǦ†u]Ļrŏ÷EA1ePArܒEt8{¶Hä…Gs)j{Ÿü&7eø’Ń1Ֆ:†ėÅjŅ*ĶØĄ Ɓ^óŽ ɃĪØ%ūTŅ īéĮ5 ·¹¬ź¹+=Oy°½‚iüŲļf|üŲG· ńdÖHY%~™’@?łĀÖßPCū¦eĻ÷XÕø­µRŸ4×'žhtł¤8Ō䍠}'Šļī•I·· × -E¬ÜIK‹[g'”óō5ą6ŗ #lóØ÷sŠéōÕæ‚ŁY·Ü¹ŻÉ0¤įš¢ß-HŽlļdŠ5 Žu„„©Ē`x®Ā·Ž'¶+ö]³ ėó•Åpŗ‰n-±·–QĪé ĶnGā}jESgµ˜ņC°éųÓ©=_‰tjŖkŻw_#Ł4-Võ-ĆOe 9õ~%ž“‹)ó£@ō5ćĶÆų‘ĻĻm €?ąi’n^¶é! Ž /J꧅Qw™U±3—Ą‘źW¾$°yqĄŒ8ļY*ń,Ķk›Y%ĒšžZāŚćf×2§Æ „Øé·DŠyX÷G5Ó 1Lā«RS…„ł’Ż_j·—Ć~ƒ#ī¼ųĶF–ž'ĮeÕäb±–" ©į¦µoCĢ­Ņ;Xx¹Žro$ÕĻ\Zći*÷b?ϽzŻÖcÜøĒØę°µh“če 5‚æTUŅ­¢9«ĮÅŻ³Ėäń†ØdČRž»…Y°ńUĮl5žł ö®¶ź_ ±`-dF^ĶEG§ĻįŲę$ŌeO„:’VŲŹ×YÖŚŽ»{iöa ²‘Wm4mvé<dGՓ9«SxĒHÓžXmŒuŪÅD~"ŁøĒŁd<0šU-tbč=nŁ”‡®ü”ö±`qŻVŖßųwMEŽóIžį©`ń=­ģŒNy8ÅPŌeŗ”ŖĆ×&Ŗś\Šœ½ČN‘§OņĻvē¹Ö·ü&µƒęi™ĄäĶq×3Ļ ĒšsXŚ½¼jÓ¤B}b'õ”į`ŻŪ®UIF(ļ×Å~½”ī¹ū1žČs[š^«¤MjVŅ‚8 ŪkÄŚÜ2ü(»)ų¬fU˶ĮŒŅßŗÉX†£g”īņŁ™Ą1Em(# †žµ“«é÷j˜Š8O|uś×–és^[Ļ˜ÅŠĄź’~®·Fׯb„,Öw·°å™ ©µHōŗ-ŗuÆf/ā;IŁ”²‚QŠĆšŅŠüE©dCØi"n7«U»YļkÅFXtĮZ¹żšź„$©÷ę‰8Év5“KWuę,š…ģ0™­¢Žp8+ž@ŖpxµŹŽŲĖnę“ÖŹN:†Ē4Ł%H”ņ›Nk‚G,Ņ Š"“VdĪ.?Ó¶’‰XźŚ]č;$ zįø4°Ä¼ĖUuž”ŲŅę–ˆI<ć­M#H°F8ē§„*²ŠŠtpžÓ[ Žāį¢ĆFxõ"¬Ę·2ņdŒŁ}“1©Ł"ąę©ßļóBŁŁ‰IīņćŖŚŲŚtyeg© č–÷Ä(¼u*+3Ušn…†īAZźģķ®’Ü4ńĀ«·8W$ę«_$‰.'·=>D&®g}ŖQ¦Õ­©ÄŪxĶ®Ā}øėųÖ­§ĆėełwuĆéR>­¦éÅ®5[¶QЦ+#Tų˜wģŽĀUQĄbÄSŸ·“ŗZ¶FŅ»gCoš’N 6¼č\±#ó­;?čqbBežB9Ėę¼ĖYń¦«snVÓP6Į¹ŚrqXZĪØŒŽ~±p­œń!¬ēBmjĶ!Š¢„īşDéšYi0y)n3×pØõ;żm‰Ų†į³““ń[MnŪ+ēj—¾9[›S·ž «t÷ŚŪM*xx]6ģńӔZI§iāNīB'e :Ģמ/xrJG®¤pCf¼ƒV³Ńd}ҼģĶé&ģÖ=õ–‚‘~ļ|l;±Īki`č½UĪJy•t¹’ģ‘źŗ·Ä-2ö&1Ås†q‘\äŗõÜąˆZ;unō8®µŒÜH;åMi[Ü“Vc3ŪÜEßhēõ¢qVdŹ¢—¼Ż‹Śµ™½łī/×'Æļ3X—ŗe·C~Ä/Zl«¤\]e–ņ'n„_*+Div©o¾ @8Ū¾j«}“ž1_Ci/|×o|žjG’+q°Ā’œsÅ3U"AŖ?ZĶ–łQ>BX繤ā“ŌøK›fh‹Č™ˆĒtåy¬=`\yĮć 8õÅ{—ū«“éR-óĘāŸ=“é6ģ™ZŹęHŽ$Ļ&“์ØŽK[‚7īSRe "/o:Č£ ółVW»Šš‰ØźX6Ö·<Å2‡aœRKm=“dŗŒę±žĻ=½ć$ėZvęłZB‡äӕ×Ĉ ś¦O4 <”ųėŽ°õ„GŁ“ē×=kVē϶}į‰QĒ,WV×K€ŽøćJŻJnļŻ0 QøøĶX@vŒž¾•Š=•¶Å*ł$t^•ŪAęmł‹Ų¦āžÄ:¼®ĘZ.HPM^²@dmŻß””²’‹稫ÖÖ6PĀ«=Ćč+)]-M©ĻK°Óę’Üvģ Åh¦©Ä€IlžŲ5MƒK0*ĮtńČF9$ æmk«€¶wń·ūŁ„®¢ręj×±mixY@‚U9ž%®šŪOo)MͼaG qYŚ“ž ‡ 3Ļ&:²­cīÕ'®ė•-ۜšŁŅŗM™Ŗ±‹iGS±K-$FK°ēœyœŌsA¢Į’‚PHģx®^+=ZĢ–ó±?t“Įµv8ī2RFrFiNėdWÖdÖ£īÆ4ՓŻ=$š©wqg$ #‰Q¾š+Ž“,­­%_ߌ1ļŽ•„‰§%fĻ)¦å„Œ}NE.Æć ĄĢqVķµkā”'U‘Ow®Ž]"[!Ū$cōŖ7Öl¼ Nõš„wĢS†„keź«AåļĘvŽ*¦”£^Ę !Č#¦3RF—0ČYGQZšvÆt#U˜¬‹»xöõ„)½šøE_MŽE¬/S¶SŒńÅ_ˆjQĮŠtĮ®£X{[ؕ“1·pzŹ0˜äŹ™cž{Š”®˜{Ö³1„Ō/ƒl‘9Ē$b”‹Ppąn`ź{šÜt‰Ōn#±Ŗ’Ų@Ł+÷Ļp:UZź×3NkSGIńm°Č€0X ꮏšÜ,óׁ\Ü6¾K|pA®‡C[7‰D„ŏ½ŠŹ>ęˆéR•] O£ŚĢŸhuSßėY·š-¢– 9'{WI»ökĄIč2inō›°„š-ŁŁMl‡S īŻ£„ŗÓe"7Üp܊Æ3\Ā„88łĒJō]YW,®øüÕ:hq<€Čć8Į óM“r¼ćėfyö™%«°3ƒŒ \“O†Aę[IŒ’ 7Óź^‰0L›śķSYŁŽŲHŚČą˜Īk>VāĖöJ1Q’1äK›c€KƒÓ5sGÕeµ$Ėdćć»§møuWą,1’3Wļ<>ķ“'-ŲāŸ*ŲÆgR>ņŁ Ńļ“żBŲż”#Is“Ž(ŗŅģ÷IJœŒ©CkŸŗŠõ[w,b%p¼ššÅõvķŽ „«t„¶µ„•ę‹GNˆ|®•=jɱ–=7|jŹ ń‘ŚŸŻó’[aĻ·5µįŻNxG‘qj$ŽNē”ł­Ŗ;0ōc%ī»›\8r’"’SXĮ"7˜­ö#„w·:=•šĀbż¾•‹®ų~ņؕ„$Ó^ė1‰øÉąÓ’XK„ÉčcTļt÷µ`$ć9ZŌ–ĀO3^6^‚§·“½UŚ@qŒŽ¹üj¹/©ÉÉ'¤V„“Pžt2ĖŌu­ƒHŪ½d!˜pbœšuĖ`WśćŠš źY0°H¹č1š[ltÓĆMFŅW¶‹€cņ˜F +%ÄO–€°#°ČĶni~Ō—ęFŚ@ć"“ōū-VŌyr[,Ģ?*®fT0+³‰*Ÿ.)3ī“ZĮ4źY gö#šōż5n^@$ŃąaŠ•Zė¼;§¤æ+٤>£n+9TQŃ£jYtäÆ7§”āVśeō|›IaSč;Tó錓 “Œ1€ ōō„e¢ĘŪ°$c*k:ļĆ6Æ9*Ų³zŌSÄCyņö“¦|įsm«ČÄŸ”?ćRŲYėöå^ž6īwc5ō„Ÿ…-Z  Üć5%’†`Š?•C?„g4ˆńü·qr8 (&”3 KFŸÜgS/„5Œ•żO“Ā÷6‘ŖŪŻ$9īPk=ü1ÆĘĘHī¢+Ÿ¼#ėŠ=¤“V\u|V¢ZXÜZnJēlmMāłHŽ 4ä’ą+¦hz“’ķŸTEsŪČĮ®·Jš×īšHå s¾,UŸźŗn‘vuxó/vĻŠÖ\.WF2žÅÜ® UŌö’Õ-IįūźuzN§ŪE¼ ä}ķ€T×V» “–ń¢’{„yÖµć=BįՅ›Y®ræ&ēXzĻ‹5I -ÅŚ4 gabŖyhīe<\]Ņ[|H–÷O°”ż™£š\ō„qNŗÅŹgV—N ĮażkČ“?iö—Ł˜ī”ō ҽĆß“čYUō«IųūĢy©Ø§¢.2§Rʤæą Š 6Źļ­ŽÜū¾KØĻēLŌu=2<¦ «“‡'óAć-*īÕ49F:<#8ü6_iĢ *2Œa’xyĻųW,[“÷Ńß%ÆrF3xŸN’į±o<„ōąĪ–ėÄ©@–VI$L0E­dÕ|;ųŁį}GĀ.›F»G „ł2ĆÆ­qƒ¬VMę¶Šx⾚ż­nF«f/µ(a‚āŁJņÉlžkå}NG¼Žq³ ¤Śø3,/,”¢­sßČó^””ŚźŃ—¦I ²¶ģ…ģsWāEi > V›ŖJČ:ƒŠz×C£ēĖRĆšóźĒ—Sß„y"õŠ2)8cƒŠūÓu¾z°å€Ę3ŠÕ÷(åO©ßĀ‚&‘ˆł¬£6ŁK{¶rś¼ņŪźM,r„t-Ņ®xVYuVE6ŒóšŹæ‚K‹Ķ ņEtZ™imeęĢ”f•O„iR¤yT^äĘm77±rī/:é™@`ŁéZŗf$–€łyĒ={S4XZ6V1­ĄnF:]e¶­jŗa…m>m¤fĮZēswåčmĪ£„s•–==.ș·¤KʃœšŹ–ę . „¤#‘“ó­kjZÉ#I“ ĻPp P›OFl S’±šŻN+D̤¦’oB¬vöϹq–aĻųVUęŸ(ܰ»Ņ»K» h­h¼ÅvPÄ0ā¹^ōC~0Ģ=GėSOŽzQź®fZĖ$LRF;ƒg­mĒ*Jķ¤`tĶVÖ£‚ūO3ڲ¬ųä ¬[T˜# ĖŪ›8ü+YĒM7“oŽ[mł°A‰Ģģ¹œ |ö-ÖF]€Œ†5‘„KolĮć4ŻoSø–!˜|±ŲV<­3XŌRV“ ÖŁUĆü¤sėV|6Ö²6Ce<ķY—WJŚqFTČ8ŽzÓ“R„ŹŖB䎭«GAEkbī” ¢żŹŹŽ3ėLņ¦@ uŚN0zŌWŪĮĪÕÅø ž±±ŸĀ®1÷ne(ĶjĖqŖ“ ķ?Śķµwrx ®Ē8*~aŠÖŗ*Ķhw¶TsĮĮĪ)9r”Ø&µ8Ė™JI#66Ÿ—šŅš¼K3Ę҇š§¬D³]ŃNĀŲõ«śz‹X°€gÖ®mJ:=Õä^ÖdIå®īĘr9¬U‘¤}‡qPJ—U“Ģ›vqõ5^Q rO"’V3‹MŻ¹a ĀuĻ?JzؑīŚIéTT¼“ī'“ģ×.–ēļbœ¬ģ1ƒķWŚ~ļxN`cņĬē;QI= Œ‰;g®)—øXƒQō¬y—C[«j2śāO#`lœēŠ œČIČĄĒ֟ )ĻjŸPS˜U1œrkMvbäI^(”pTŹH9ć&Æi6ķ-Šq@2Ūj—•‰9äŽz×EįŪ£io!dęAÅ)ĶØŁN)=HÅ» ½ėņ§}Åur±·' Īsڹ«Ż@4xkdr;Uė ÖžĶd ĢŅæ7„c8·2ąā®īPńŻŌr0Xę,G ā E³vw\攬żj?(C–ĪqUmHlś°ŻČ5¾ŠFō“¹čŚDp„Ā4P’®¤dų€ŖŽI$zn•6£¬m ™G|ÓJK%Ė4Ł3¹®Etīu·{$UMĖ…äqӚY6ŖąäsSj†ąĒݐ/ĖĻ$Öuæ˜bs m䓌ְŌĀQqjÅūiµ*‹ŪśŅyūr\/wĶ)6Lą°&³u·Š8€ß°«gŠ»6R½¹š.»®ŃęDddb¢ŠéZs„ućvŖvŗ„rKå†#ó©`g7-ĀļQd‘2©}„ģ鐛⺠ا‰¼Ę‚.:7Vh¶t· ĘÖąā«•Vbg؊‰Y¢ćĢ“gW§ź6+flŲĘĄƒ»²n' zņ]‘FŽ•ƒq ™;#a는w<±Ī°’1ڇvɊ¤µŗÜģ5 ø’ŁåDó7®µfŪ}žźÄ²®$Q‚@ko$Š=”X®yęÆh×ĪX°–6=ĮļU¹HŒõ±wP²‘#ß äwÅRŻ"C†#q8<՛—G™VŽw›#¢ø‰#m…‹ŅŖVŌ™M­ŠV)!˜ēęĪ Gv$YŌĘ:ć&µ4‰7ļ\z÷ØuUjzlģ“›|ĘĶ^7+j:S][~ķœ}ģąŌV]՚Ž ļ“W&ŗ–1œ…#‚ƝjhR°¶g?ˆ.Iö¦źJ1±”i9JģĒ’+£Ä±?O½U.Q¢W 2]Np{½«\É,¬ØåĮč*¬šČ ŒŽļT¶FOWg±OH·m¼Év„CŒT·s ‚»‚ØćÄÓ e@ōē5ZC°eŽ7ևviem ^¶eeĘńŒ“ްn®e,A”•>üU½F9^ŲȒ+q‚y¬¹š1‚G5¤)­ĢKčĶ k¦(›œ1ĶE~|Ē-°*1Œā©YoŚW,x­› ;̶%K3ē' Tķ KŒ“±BĘ=Ą–ÜĢ;õĶmčvķ /*=ÅO£Yˆ˜†\;Ö¬Q³Dᔨ^F+ĶŽÅØYsu&"hpåĆc€xصb"kQ·ĖćķKŚ]”RI]¹'„eĖ3@ĀåÉē½jRęŠ9·5Æ.Q˜Ŗ˜¬€^³lÆB)±Ż±1Žż‡jžŸ}lŠ»yd'ØķCŗ[ Y»½ Zl §ßaøŽsšŁŅŽXg•U6‰W%Ϧ:U-}Ģ ‰²`WE³Š(7y²Ž¤7zÖR©m 9dćvō*x›PššĘ’ˆAQ¶¹Ėė©r‰Ū9'­u~#Š94šöʉ(fĒZį% ³8l—Żœ§O­iM«{¤Ł¦īYŠķćĮĻ9éO’łŻ‹) Žę³ž %Ÿ†g=±UÄwv$¦k~[”{MŸN¹W;…ž;żjyą·ø„ģ;G·jĀ“†hŪ{³0#µZÓļDsŗŪ5‹]…+Ł–FŸ„.×;‰ŻƒSd“/ŻSYL$V£,ĆŽ×Ģ…ˆ`sœ,ģ>UkĖą–ź–öȲQŸüj’…„h’Å4K$’ņ¬ŻŖ¤×v‘Ś&ßQõ¬óqq%ҵ¼r:ŽASEœ•„±2›čŽ–ĀŅ寱2lHĻ : ·®On,öǟ1OŹĄk"Śīy!XäBxlšv«mĄ •Ō®iē5›¹¤o¦F¶’©Iƒ>Ņ3œ`Yff9ČĒ>õbāWk},„F@ōš “œÆ»VF5$„ŗoręV^‡ų{T–ņ:Ż 9äņ=čņŌ®Į'ÆćVtŲ>wä¦xĶ\¶° ¢;Bē#ŠČÕs-Ć»“éWd$ūƒv£»VhK¦>•œ¬¢¤ŒÉWl ŲźjFW<ŌUéįE‚p{ńT†wķ'?…jšz jŚ¢ę›jÓÉņœmł³]W‡,Õ9L˜ĮŻéķLšU±øµeŽ&—€[Õ„nŹbf8=>cśVm·¢ŅW,æŁ˜>t‡-“uR;XŅFˆ<ØĒ¤ö­} 5kƒtQxĘ3ŠzÓ5x̊ČĖ g5Ė“VNĘ»c7‘“H٬Č-vFŒ_ :āŗ{Ō}ą3cĘMfŽ¢BįO,Fkh7kIÅ»¢+R@ĆåP7&§ž{vŚL›™‡;zc޲õÉ&h¶Ä¬2p+,Ep”_k.FEE•µ6ŒŪń75Ž3© (ՍxŽā®œsЊ»ŻĻŁ|¹HqŽ8„³ 2sņ7زŃjĪy>Y^Å!Sć­E:²ĒžBśšŻø³ERĮĻ Į—Ø,BŻ×Ģ;ųǽhƒŚøģS41e ĆØķ[6ŚĖ.š Ź3c’ƹˆŠ1MŒõ«šAv€·ßÉļXUŒ:šÓ­"Õ¶¢Ūȓ€8ąTچŖmā ‚Ā^‚ē‰)_œää}j¦ešå‹ZĶRMÜ'&Ė·7’>T³(~¹ā©ŽČße*¤Ø#ŒqĶNŃ«Ü`»o$÷¦E<ĘWØŚŗŅGa§ŗLL‡‚k·š”Ś2G# œ÷隄iĢdąŽ¤qZŗA[E8EćnHĶsĪ£zO]InüČ7J”xć>Õ\^›R4IaŒdńšŅń “Q³'—0,@Šēįi !”Œŗgęły؊M6––:ķH’“xRwgžā¤ńp²—Pž­Īą0õŖ:d°rī”n 擦©kw!ī`Š(Ųļ>æZˆS\×2ug~ZksÅ2M6Ƙö…Ū„ļš·į뛫­9Ń]ŲC… æ…CåĒŗä–aO˜œŌš2Ä.eåĻĢĶŅ«׳²*j|ĶčkhWSYF$X€~™n UÉ|SÓ„ˆĆ¾ō7īŻ‰ĄśVŸŒĘ]>!h«ūˆĀ;…į×½q3Ē˜u]¹öĒ5ĒŸ½$uIĘö‹Ō©}=ŻĪØŅ\O¾#œńŽ(y_GöFu øĒLš>žÄF¬Ē ƒÓėRKQĢŁ÷<³~µ¤ž%"!³¢Óąß,RL¾dˆ7c§o§ßL^xVUi%KT>ø†Vr§-åõŪĄ­K›«“"JJķėŠĻšW÷t:¹U­5‘ƒ{g46Ø•|€3Z‘Ėo†J ’Łqœaj5¶™¦†XIŹšOJĢŌō‰”Ięę4ēpä{VWzœu!-ą™Ģų‚ź;{ʆD˜:f¹conI;äęµüK$B#øi³ómäÖBܰPž­zT ŅŌóå&ޤ2¬ CGę)ösAŌ.-×÷HĢĖźÕ³5‡•“++żEG4®@¶½×­}s÷ž§Ę©YhĪnū[ÕYqÄxöĶW‡[ÕŃ’×øśq[·ēq jŹ=HØžĄYr Ķ'NźĮÖØ­¹zčŽļĒRj)®^rUŌ{UåӏÜČ8ķWģ4£Õ­ÜcŽiE8ģ\ š¹ŹĶj¹Ļ˜[4ŲģąsŅ)ś×c=„ ŸÜ±śzŌ)gž"‘G~*š1ŠæŗŽYō™vƒŒĖüéŸb¹ˆ‚³ė]ż¤vųŅ=F8«§II#Ż Ń×Ķ/q—(Ō‚<öŽ[ø°>qī lZÜ]>Ś™xļ]Ɵyå!—®qÖ”Ž  ą}€å½Ŗe͹Eaŗ”ótT‘Å5ō«·#ż(9’x×Y¤érĘ Ū:ߌŠÖ“ŠPg{Ė{k£5xYZēŸG”^“’~‡&“¬“Ś€=kŠ“CŠ+}’l—¦~õAow¦Ū¹I'VŪźĄš=“ZŠ„BĪŅv9» Ż[ꇜ~U¹e£YykŸ³ÆÄ9­Øļ“Óą äq‘ŒÖV£©Ąū’)HxžiĀN{YŖ{;–¬“Ėx‰Ėlžé­“Ւ=ļ"’F>T× s=ĒŸ¶,xąŠu¦µqnJżŗāFėņ­)ʧŁdµ6½åśĄŅ%Z8„ q’“ū…ņ,Ź›dzģĄ®*ćÅZ O.9.vœg°uMgP™‰{‹”Ļmē­„Qæ}…LBK–Ņń׿ڌZšĆąw6Ą~öõ¤uˆĶfYĶs('™ [š˜iRLŁdžąā¶ßc–1iY“F+is ¢Čzī2f“-|IDRkHvžz󚣇džócÆZ¹m 0’–LI¤ąj¹­e±"ŽYĪ?wq³qĶVÕm<ŌĀy<Ž‚®>ˆGfb@ź²b³/4©brŪ.“čMm÷2jŚ’č×[ŪjnķK„éL“fBёÓ,+^;©jMuĖ5A>…38g¼f#ÜÖr÷“eS„”¬Q½„ZC±A¼SŽ 6 Z4ˆƒ§ŗ;}Į®a4+”Ģ2HĶõéZ6:^£ņ$¤2t;©F<„ÉJ£¹jūUŅ"łR!'¦{ŠĶøÖt֘h”=…_æš°™wA&$ō¬+ ßĘäć°­«C5;K‘šo¢¼_¹RŒ:ę³åÕmR‹¶PqV-4;„EĢOӞ*ä~i|¢£ÆJˆ·k2źSW¼Lioüߕ\Ž2j ć»uR0ģAé]T™Š2²ÆėBĒĀ×Ė™v׎©ó1{«G”Ą$wą–lüF¶m;‚‹*6ļTė]ÉŃlq$lAé‘Zz~¤C˜psYh¶ÜØÅ}­Ž*=ˆŻ0Ļb;}j_ģ›”n g÷Ž‹‹0źˆ=߯­e³O)Yf ¬:6[vÖDTI«DóØ4ĖēP#ˆ&Ń×"¬ŪiW9ł®~lņ+Ńōūe‡·QŠ™lpZÓ'¹Č QzäÄYčWÓ ¾r…ģwb­ĆįĖį yÆ”9Ķz…Œ~PÜD.9}hYi±y›Ņ…'<Š‡Z(č§kŁž{mį™YĪŁĮ÷ę“,|.6ŸµI“v!«Ōķ­“Šƒ|‘®w+ZPC”ĖƚŻŲŒaˆØ–)ZÅŖ.žéä2Zčŗs`ŻĪĻĪø«ų…V¶ösN½‡™Œ×Ø’chīqVlĶßh©”Š,QAū<<įā”ā!m „‡Ŗ›s•’#ʦÕgż÷‡§ÜżOšMZÓn­‰Ł‘4l8°ÉÆ]]*ÉEŗ©Õi`Ó¼ŒĒAÖ©ācn¦Ń„e¹ć²’i6HѕĮäo;ø«śIc%¼?Öm£Šō;½.Ōņ;»M‡LScøŻŽ…°*eˆ‹[„põo±Å.ĘéVFÓ<‚y`Kvļó`ÕŲ5+V·%§ńtŖn¤uM£4éJķ$r:ρmQA·»Uö<šÅo "NŽ“s^’ś¦– Ś·6[±ŽHÓVćM•· ģ ×z欓½ć%†‹—ø’#аšu«)14KŽ™Ķmi~ ób_]¤ŠčWS³6£Zö”ÆųÓ`Õ G?é±(#»/ųÖ2Ŗ÷Z›Ę4¶żJ§ĆŠ¢a¤,Ǝ9•ØYĆnŲH'”ē¢Ēk®žŠ¶ž0 ½²/ßsdž”Ģł?<—šNJƽŖ£ˆÓō2•4Ž«Nē±@ņ}"óß1w čśA—siņ‡=¼½ø®čjVJ9h˜æ85FēWŃ|ݲLØŲ$µj¼ś!ū+{z&bc4õAž¬µ“tHL`Hóīj“Ž›4†;iVN’{~U+=ŗÉ™'88I;VjSoCY(rņßBŎ—u #ØAĘEkĖ`«߇nøō®/Uń®¦7–«xķœˆO=ź‰ńĶŻŚ2Zéę8±ŅŽßҜ•VõŠĶV¢£ŹĪÓS¶Ņ–Õ¾Ö¢6Yc Õ«ŚĢ•(©hrĪÄ7)ĄH Oō®†[mßĀ#>”ŲČOŒśŠŅ&R³¹€€. tō­2yįc°ø-ÉÅlŪhĶ*}š‡°=źĢz%ŌjW‘Ļ\«b]K+²“’Ė V“;øĖ-XkŲTĖźqZÖ—"RĘŁXć©ZٵÓn¦Sš2¶ŗŲ«„jŗ¼-ū‹¹%VĻ žu«o®jČ~{Xœāaбa ģ_rĶŁĮĒÜęŗ=ͧŲ×vl @Į¬Ö›£­)I{Æļ9äń5Ņ€’ŚBGØķRI«Ł\D|ŲgV#Œ ō=>ĒD†Ų¬¶źĪØYh >Ų”DN:~tćõh%NMŻ4Ī5¹“÷QÄŲą9¤’ÓU·;»óÖ>†»9ü?c# mīpź00§³ļ“ŻB3ž~½:dkUi+F—³»Ī}mõ d˜öäXŒŠ’g}ž„ÖŌVŚä{Nʓ×ꮞĢ4ökŽ›œŽIQšŹo—réŅu_»§©ēĢć;gF8ĪIš¬öRÉ÷ه`®ś’Ćś1—z›‹faŹöØ­4k„]’ĶŲIė¢b–ßČóÉ­.įqŗ U}Ē«2Ē€;Ź­ķšõ{;9 D$baźFj­Ī—Čöj­Ü€1MF%{&‘Ę[˦LķqéƒS;M—>KŖƒŠėZŚÆ… ’Mš›MÜTzw‡%¶“åČśŅžŽī„Bļt`ŻhĢ™1ąŽ9¬ėĖY-²Ī¬¹čX]‘6GŽ£m.éć>dvņƒŻi[{ČŹt%'īɜŪ1cņöާ®+§šŻõšuEŗŒ2Öī“„Ä“6Uć-nƧ"Ŗ˜R8Ē^F+)ØÉ4iU„­ČćD’Ģ)b’ĪŃY—6²«Ėv× 5Š„‘ņĆ\“’1Š|–ąÆĶĪŚąROK\č«õ9‰¬äVÜ»£-ܵ4qµX¼§q[,ƒsF„p =k[K6v\˜łč@ĒėQ)Ūį&œakHę­-ŃFR_Kcåc®E>lĢwDžX2`Uķ6{ØdņŻć\r9jī[挘ž`Ć<iĘvwL'Bž—W9Ė’ [<@Į żo­Ek£\Ū•`”‚Oz޵™—*ęEĻ\§z×±‘„E²1Ų4JoķÓ£¬Nr=1‰RaŲ}AÅK:y+å˜Ć(¹®™m/_?»sY·:uך™QOšš•R/vgR“OT`ǦĮpūŁv1čLy£ū>Ł$ «±Ē»=6Ė|ARā=ĄcI«PXI‡.³qžV§Ū·”»ĆÅ%ŹŽ"ÕŖĮ!ė¶“ģšÕpŪP:Ž2+sQ¶·…YīĄü¤ā¹Ūł4ķŁ…¬äļI'©7%±1¼-Ķ{=A*© :šŌÓķ§ŗ™1å ?ÄEq··ŗ‚F¢Īmŗž9Ŗvwž(…‰Ŗäń€0+6¦µLØÖ…ķ©ėŸŁ9I”‘öÕ-6Āź+—vRĒ?3` ēü/ā+˜ī=SU±*G,?LŠŌÖ¼Sį˜ć /äQĄ/ŌżEcķ*kŌ蟳Ņw:‹¤•ŃxGU?tU‹ˆ–­2Ī}X©#ōÆ-Öž#Ü[¦ķ'J‚R©ĀBJĮøųÆā9bžŠ$g 0EWŖÕķ§Ø””u_ꏠ,'·ū9Xi~jŒé3O1ap"b99ÉÆœnuŁļåiS»“w9ŚsĶIiw«ĘŪ£×‡£9¬ć„jü²)āį/āD÷ oDūk¤„÷ ‹ĘšŖEå¼\ c$/ø†2?±ä@斎!P_xŸI‰¶"߃Œ£õŖńųĆNŒü–EyčXÓTāŅiCMÅȞ]J}RLŖH ŽH°éUåš¼—ØŅķ•Ū±8ÅM/-åjnOŽ*”ŗĢÓÖ៾zdUÅĻdg9QZZå+ƇĀūę¾BO'iȦŲé`Ÿm”’V†aņšÆqā­f $°ĢCīåzÕåńuŌK–‚Öb1Į"ŖW·¼ŽzU©©>Wo#§šüśŻ˜ öhÄgū¤ čķ5čd‹Ėc3ćućóÆ7…ūäĢYG?zÆĒ­jQaLv’ØHĮ5ƒ„¬NøWmrĻcµæ²¼¾ĻŲ¢‰ t1 qŽ"š‡‹^賕\qūĻz¹õ‹VTL²^8qČ×A„x÷W“bKohĖīøÅOµ©ė½ ®ŹZž{ā+GŁsĈæx³+SOŅtė”_µLm¦Į<‚kŅ“”—š1ó)#ō¬mON¾šL§öKļ Nœ Õ֌9%ÕŃBćĄkhĀ3ķ "’ƒŠįļü¦ŚŻ¼±ż§+Šq^­įM&ī+¬ ^Ī3żĆ)öжƒzģMl㜎 %‰iņÉči_ķ-8+;4ז7›WMó}Žā+©Ń¼U}¤Ų×O]«ŗ½rmX ­l.Hcč cų®]CC²’ėR6VvŃÆĢĢÅRöu-ĖŸŁĪ‚÷å§Č]¬u},yšOe6Ļæå•ÅyGďųOƶ÷A¼Ocpaʼ g§aĻzā~;žŠ6š͆‹–’®LĄ|Ųč+œ·²ŹńTĄēž)«r—'ļ$Šń߄“©#ŽŌß:Y[÷d"“Z¹ż–©sóœõŌEh›€*ø9ĻQO™t@Ó_nܲī\±’*ĀÅ?Ų™Ć2(äóP\˜ģķQ–EpFN C§^ĖxåFą p=©FāŠę}ĖÖr:»‘ĒcQĶ‹0ķźkfIdڱø`Fp§„/Šķm ÓÓȐQ—ÉļY©ėd+%©Ėj°‡‡÷Y-Ü «c f‰ 8­­ĀčYß`O#­cė2ļøŁ(ćƒUv݌Ń2fņUČŽ1KåpːAĘjµ¤'fč:Տ,±ü4Y0Q»Ō¾×”­Õ_$Ļ5Ręä<…BģŪĒ=čhĢoÜdÕ[ƒ“‘ļDcčhāH9l†ĮŸ„\·åš@āŖO$7r3×ķ>_.åpyķŽ”×bŌś"ćD·sU5›¶‡jć¶8­;¶Ų7ķ,Xvõ®wPwœżÜ?ÅQN<Ę5'&¬‰üń"ؐrŽõ·¤Č¦5Ėæ½`ZG‚¹$VīŒ›īćCÓ¤ž[¢`¹Rp aN‹nģÖu š³Õ›WRĒ“ā½ŻźI½M»•ņĖŹ:ŒVuÜM6e ē…=Ŗh®%iw Ø#Ø©m‚‡Ģ¬Ū“Y=5){ŚPĮ"ČĘS·Ž5ś¶”1ČÆxa\•ū½=ė:śēŹ #+ó ž™­"ļ±›N:2}. –€ŸŗĄcš±$\A÷œ,7O¾hšpX0ūŲÅX¾½‹É »—ąÅO<“±»„wl£"ĒdŽKŌv7—ˁƒĶGql¬7!ė×½]ŃtÅbiŲ”=j›IźJi­ ڰūN„˜Y¶Ė”ö«Vņ K²mfiŌ單jomh»¢ q‘U,Ž9DŒJ«‘T“äԘ«z”ēS ¹]£æ ŹĢųĪįÖØŹ „³Ø'½RóŁC yĄÅZÆ7‘~H×Č$€­éYz—ŹĢp¼`ūŌ¶ņŸµƒ¹˜c‘ž*ė„‘°Ą{ŸJ¶ Ņz3\¬Ū”gŽ£½NmćšŌĖ'ČIäf­]YŹš4$/ ĶVy!²Røā“ēObjSKFGodńįŪ”ēš­æ ÜKotR ¬rC ÕB)e½ƒ‘Ę}+WE”äo—B*\®SŒtŠŚŽŻ)tD<”\U»ė‹8¬^Só€Cžµ’÷I šŗ³HļĒ'„dź·M4ƒ8Į9¬e-ĶćV:ÄŌi‹·–¬¬mBeYŁ0~^ ;NŗŁ’Ųrsō¬{ėų®.XQ‰' ×D ÓÜĮØ"Ōn’¹E` ą€kFŌGg§øZWąŪŽ©hP[…2y‡o]ǽ-õĀ}­€ÉUĒCÉÜo •‘­§\łV«ę8WĒnõZāģ“ķ,rŸ”üŻk2ċ+²ü©÷h|¶#‚Ć8éĶG*ø„i$ĶWŌ$ū#”l¶öŖQ¬‚/vlzRX#Lā=æ60sRß²,1)ü§®i·mҽ“ĪXŅPc“ļQ­ōkxČ ø#ļ(ļQĶm,pŁž@5„„ ¬‹¼÷äöŖ[]‘;shkÜ^‹Ø”Āóõ¬Ļ!Õ 9Cø“žę¦1K “.žIoZ­}pĻ'– å;ƒÖ³»č]­©WķBå©*ŁĻkLøšįÜČ_Ž'µW&Ł0f@īÜōĪ>[…)ūÆŻGŽH«KhdäÓ³5ā6ģ„0ķćŗ=öĄZŲģ’5ĪÕļ\½ĒśA 7FøĮźģšÉy”ˆß5¶Ż›Ę£KC¬½ŗ“}LIœGšć­f^ßķ)šFē€GJäå{ÜÉĪ{qI,ϘԾ8ā­Į7r#9ŪĢ×Ō\’y_ž9¬ĖįĮƒŲŽ“ZĢØv;3•9nFS-•ļSv‡%utId ‘ęU@˜ćus˜SŸ—WMīŲÉ Ü{öØÆ¹’(ĄŚ äÓO]HZč\²s*ˆńø–9ēŌ]„“)å.YTēœzå4P±ź›rYƒ“[zœįŲ“Dį{cÖ6[Ż1#ˆŗ—äw?JžŹŽŌl&0$-’OAUm„"–;±Ķt^ÓŅęɧs’“)5Ķ)Jū›$µeėYāĒ–cqŹķØ/lĢä ČĒ©'śV{Ū5õ23+ØxżjÕŌŁ¤ŽE ™ö„)Ūįd«ŌÖH4ąlO˜Ņ('­fOy#źŪŅA·z ečgbKqŒUkx–5$ °5pnڽG+·n†åŻŅf0Ē—<ńÅ6ī5šŲü›ŗœż+(\ņ£hąā“l$, Ź•$śUĀoc>[ģeÉp™Ü0¼cėŚ©Ū^F,„/›ŖÆ—Øæ”ÅQO=iޔԹwZŃĆ©0ēŁ’źóuņci<QĖ+ ; ]Ć?Wø»ņa9^ĖQCz² Ü@ā©mbåĖnVnĮxķ¦Ļ’ÆzĻ“÷Ó¶ Ī ę³õ'e·3~šq“ÕŻŁæ²žmŀĪģÕŽŃ¹Ÿ*[ŠŃme;°GnŌćrKŖ`…éĒJą°rŌvĮŃŌHcœē­+]Ķ}  “–]¼`w©ā‰Ō€=NzŌo>Ē?.r1ެ-Ē™¶= n8uÅKVZ®Čtń„Ė#In˜lóĒńg½E­Ė$`lå€Ē®-Ɯö£«Ļpz“6Ń)ĒĶjhścOʬŖ÷»ŌZ®ū掆X€Ü8źkŖÓ]×lF$SéÖ³Øä¬¢k.UøÕ¬4³å撮~b½sT¢š?³Ź³;OŽ&¦Õ¬®f™R?0Dä1Ö­Ūč3M9Y$ k÷}k;«j Č,$…“’.ŻX¼§vžŲč?­iiöm4“{ä€qW<9§ZĮy"ģgŒ€÷­ VźĒLÓ+Gf‰vŹńJĀWnŃ6ę÷ym·Sšiē¹ipŲ@Üķķ[žŅvŪ,†åsęmucČĶUšŅÅ–i^%ŽU!AēęķV¦Ōį¼’į"e ²$t«ÖÖ¹*+Ŗ¹[S‚/åo5^FbŖŖz ĻÕ.ŻŅą¹ ~@ÅSń‹¼z§–¬QTßźMd¤‘Ā;³ņ9&µŒo£9FQŸ™ ĢEų`Ē.rH­ż>!<Ék?śgÖ±-ÓkmPvõ,}+­šp܈©‘·ä0ģ+ß Ń«’kUsGÅ’gč¶ŗU¼h|ĘĖ!ź1ĒZĢÖ ņā†d#d©»ƒÖ»­[@¶¹ƒ|ר³ŗä.sŽ$·6ŃĆhͽ#RPFĆļ\꞉*5ękO3…¾…!·Ž±å%ˆ'KRøEŽU-!ƒœV߈t¹ƒ‰„vq:ļ Ü}k:Ūòj14²‰!9ŪŁJQ{³ŠåŅ’q©”jŃZŖÄ˜iX€Õ±ā›ÉHić%Žą+Ļ®V¾!HĀČR"? īōhć¾šō“3mŪń†ō„Q(ģ(Tv²EÆM2hĘńžV‰V"–}DĮŲĪä6r6š“ĀÖLl–%‘@k¦ļĢÕū‹H’MØŽhĮĪx¤šoQÉJ+Ec‰:td2*<’¹‡QDzU·–æčó+ø–ŅŻģ˜/—$źw?„{×6ņއ BŒUūHEY?ė½’_J;rWŸ÷±QMa*D Aϫֵ„¶‰ēŽy=jg6qøŚŅ?®M}ZÅ;ņ£āž)jĢ$°“ĖżāŖż9„[Hü¾Ļø”y­YĮ•H›>õFoŖŒA{EĻzµ:’ŅÄ7F:HdqJ‹°cmYO³¬œ˜ČžšÅaź:ö¶¹d…qžč5Ÿ±wq¹o,‹†øÅhœ×Äf§NkÜüN˜:VĒŚ é7Uk«[Xܘś‘ŲõŖšLaMķi:øź1WeŖfŚÖV'°ĻOz®fŻ„ćī鹬äVH—¤Öݵ Ų\óõ¬Ż:āģM¬©ėŠŪŽü4J«mr[Ō„'w¢.ŒnG[H<šžœńK©źZP„ˆT3īUmJ“Œ¼3n'ų–³eÓ”bQę–z'õ”An̪͵ʈē×®"!Œē¶[V.”āMD·ÆlÖĢZv™ ™y¦—¶5y4ż<¦čƐ{cżĒŠ?{d®yž§ÆjÓĘQ¦‘Ž€c5‚ZāYņ<āÄg<׫jv–(ƒ÷1š8õ¬Ą¶»€H›>Ėš×–)hcĢłµŌåtk=FrŖ%”÷Ķtéį¹Ä*ņL<šŅ‡N­wĮˆĻbüU«VWŚo£Ś½¬Ō{3¢r¼lāY‹Dӕšv«0§/ü#ö€Ÿµ<…ząUK-ł3\ĘģŽżjŌzKFrl<Č×ųU4ŽĘjMčŚzTŒ8&`GŽÅ}•¾ķ»`śÕ›mƒķū<‰ļ®­H,žBL!HµRv%Å÷ŠĢŅ­ŠäGRzfƬ)t*[¦1б­ÄO“p±ąt+ŚÆF’²€J•#­''ptŪŒķ B)0ŃÄŲĶ[¶Õd,<Ėp9 āŸ©ŚŻO!Uš2rµ™-¾¤ņĖĒ ŠmE«‘tłloĮØ[I>^qN—Z²ņšG˜@ģ+×F»‘Žę—žĖ[™BIēę©vKFn©J},H÷š|±(DTfēµWk%aON¼VŻ·†­ÖEū@@zµ1šå¢JL7Æ9ĘiFn×1åĪxé÷Q|ŃE `óš©;jQä 7>źµßéŗz@ĮYÉOļf“–ŹĘļ9Ww«Rö«ķŪŚ-Ųņy“Qr“,|w$Qckؙ?y4ØŌׯG ©L<ńŌ—ÕYģm¤› é·¶Ņ*^";(Ź÷µĪKI“¹HĘŁ ¼däÖ·ŽåNZŚ#ī+ŖŅōČ^?”€ĖŲ7ZƒQ³³¶'ķ7?ŁßIV‹÷Q­NhūÓŲ©§B<¬7qŠP†”V ē]°Ō4X¼©|×ĒQ'ųÕ cYŚCŪ$<’|DjJęrŒ^±2fŅ-7—šÅŌŒN*tķhSuå¹Įn•CĘzž¤aż¢É†0§‘\ߛ=Į)t^CĪ{VŹ’»0Uā„ĖmrҼ-dśrÉ ā6īŸ0&©Cįō웫™ŃH?Ƽ²Ę=m ­ŪŲ+ćõ­"×WƒIp™źLõŖ(“Ś:ż×QUZ%Ü÷=2.Åb†ĢIīĻĶTŌōö•I›żŠ«^U&§{mÖŌgˆē©“5‹«ėZŒį•Ƥ–<ÖŠ4ÜtŲĆ^2×vt>?h4۲˭Īd?Įęg€®euÉd_—W”z|ĒłW5©łe÷KŒO;‰¬Ł„†9Xp§„uÉFHóh¹ĆćŌõ/j·K’+åŸoPŻkJ×ÅR=ĘĒBąćs®+Ėō;ŪUĢlĢ€ńŲ5cPpŹ\—NŪ5Œi§s²¦"7O§cÜ4 oT2†µ»ÓęQÉŲrk~O\Y·@88C_3é²É Āķ¹’.r6šé¬/¦¹Ź%ųr¼“æć\ī‚½ęŽ·UŗŗoŠö½GāBŹ»b“v$uR+–Ō|Yv×fl:£ĢņÆ7¼™aŸēyžIGČ©ķ5[6F§`z(qšŁRŒ›J|ļßz£½ÜĶC«Ė=V#Rųk_š;õ)Ŗź äćs6Ey¤Ś„ØŁ£µcŌ`w¦Zźś²¶ä"=ßÄ  §F2“&•w sF’yōŌļn“ü§}ĆpkÖ–ž $xįø‘Č?0s^Qæ«Å eŌ'ObkRĻÄzԹߪŃÕ_üjiŅpVV±5fŖKšĪē}¦j^ tżŒØÅ/Öņ\Ż%°ūfÄ'޼ŠkWQĮŸ¶¤¬GPłŖ÷~1Õ<Ÿ)lć&ŽG{ÄsŖ¹RkS× “†ž"c‘NÜdöžU 嘳‡a62ŽxfĮƹńN»$f5ŗøU'ī©Ūż+?ķ„Ėn-4¤w,jŅ–ņz9Į„ģ•™īšk6°Ćä›köte“­XŽžźź,YÜF®Fp„[ł×‚¢ź[A+ ō<š’;‹ŲyŽęH˜{‘YŹ`\gāžÖcńp›)-¼ź?Š ~”Ŗx¢Ś?ŸLHŌq˜f¼zĒXÖ˜]FQžži­õ~ūNBÖBjŻ6ž%›Ŗ_H?ĄīäńÜné¤SÓĘ?JÕµńõäCģŚ‹ĒøtVŅø½7Äö·*k0Ćr;¾Ąé[śTŽ ¹G–=žµQŽźĻŠ\““ł¦&Æa©Ķ1w®7s­üź“všēXdł;±üśWMg} iåZ+¹å 2d~µbóĒ‘-ķ–Cź\tŖų·ˆsS§BWłKxuīe܉­głŌų?SY0rˆF~g ŸÖŗ{’\s²ŻAĻGjĢ^Ģłkžł5¤“¶¶±„dœ½Ū”ĮZ ˆ1šć tHžuM|-Ø©!¢æuŻÕsž5Ń[ėŗ“ūD1$[ŗ3jŚjš„ŗ¹ŌŅ0z*ŠQŠjÖ.U7ĢŽ†f›į½`L¾Dš„XĮ®¢ÓBŌ¼ō½bérGųÖļnį;#½•ˆ8ŒÖ=ߋćtĢ÷7fV=rf©j®jė§Ė©Ü,vvŒ¾ÓrĆųŽ@50}xyßģć^_ńÆ-æń1˜įe—#½śW1~­{6łn˜Œž¬MnéSkFs¬MDīć÷’Ą=ž?ųGKBc–&™G9Ü~µĪų“ā­¶ÖM?M&Lc{ńŠņ4¶…T)!±Ó=źP–Ŗ74Ń©ĒAYĀ· ֜žÖžF½×5Ė›²å0¤ēgõ­M;Å:³żéUp0{W&o E*<ĢułV¢ĢŲ@Į±ėƒWV īĢéJō†§”^k¢āĢĒskŒn*3śW7wh.²RAb²ķ.šŽ o <äՋ{č¤9[yWžjbµ r9s-Ī©aLhŅÆØlŌQiw›¾h$žõ©¦`9É’xÓęńŠFĄO¹Ŗ²jĹ=Ö„«-2Ī+t7B@ĒÆ#­;H|<œ“s³÷ĄW-s­,æ1…Ę:ēMõ Š’{4riøēQŪcøø›EˆlĻƒČ ø’õŌ¶×Z ]£rqÕÖøEÖ/t+ßåØnļžpÕ^x8ŅŌµ?tō›‹K;‹ö—ÖģÄą.ÜÉ{&LÉ$e”cåÅp†[•lÅ)SדV­®®Č¤%±œzÕsōg;i;&uŲ2.ą/¾*œÓ]ŪHv«2žœńY]MŽXÕėi‘¹ÉŽ¢2*WjɖbŌagŪsćÓ”©‹é¹ß Ķg=xØf“¶™Gϱ‰žķV“N”«ˆ˜0ūÕø¹-Ji;3zÜŲĪ‹˜Éģ\R¾Č 6‘\Ä{Šäfµ™;d ½ĶYҵBŪ÷jīAČĆÖmN+T9Is^2:Ų?±.bŚń9}[¦k?WŃeŽ/:ŁÖxČĻš]:öK¾d1¹QŒķĮ­Ū&1+…ĀEi !J)=4g $N¶ed8ÅI\Eņåv_C]µÄFē>|køēK“mČŽē½1{ ŚĻŖūŽFŚa'śšTŽā­BŠ—>T’Ūutóų\̓Ļ$ Ŗžš"ŪTåN’E©mésLńŒ¹:uéI’ņšHFGCZ˦Ży…ŽF÷®[i(°ākyбźS‹G2Øå¢G.š…ā6|½ŪNliŽ"øˆ2ŹéŠŻ‡H“ĄY\­Jš ‘o‘擣e:wŁ—N¤“³EM/ÄÖŪČx™=ė]>—ØZOī®ž'# ŠĄøŠ0¹KulõŚj;m ĢćjIē £’]ĶyŅwHķŅå†1#IŲsœšõϟkqU¬}H¾Š]Ńː½8®£D±É‰Źģ>Żź£+-J‡<śy£.ėQҤuP’£/f\b¬­„„å®äe%‡2*YŻL$uUp=qSéśdą!)ļJS²VeƜ„u8č`Åįł°īƞ„Ž@„ŸN6r@‘1ŚŗųŚŽ7ņüŲ÷ŒäUˆŠ7*ˆsüXĶW“oā!aiŪŻ9`²( Ū–8éŒU°’€<ˆ%1ĄÉ®¢Ńżą½qĀjÅżÄveäĄč6T]ßC¢pЧ{Ųē,ķgŲ ’Iåb9­(“ć*(ógw?++oŲĒrTĆ?>‰]7†u­>č ²ye†0ÜĪ„NGy!ŠQ”orģ o=RKĖÉ3É\ń[vڇ”ŖaÜGry«?g»›wŃ*CtڼGwŚ AYŹNKFtA-l¬Io„YŪĘJÄäęŖī²i?y ¶G°«č׊ \y{{ķōŖ—:uŒą’’׏GOˆ$ō-ļ³ū0HÖ>Ø£‘Te¹Š)gŚ‘NÓ4äŽ\Gõ&·ÖŹŃ£‹-^ .i- 6×7S™hģē;ÜJ}”šßOEåa‘‡ ©ŃÉ„ZœŪ =ņ*4“µó1Ą\Uó“fć­Ģ+;Ż›’œēŒ*ÄVļ,{°ĄXu­{˜¬ķmßi‚#†qłW«G7šfŽóĢē)E¹j“3rQŻ_ō:‹}5)>kcœ –eHäP¶“n!™Ms¾ÕÆ­ˆS¹ŌIZź'ńoe†H÷œ³5›ö‰ūŃŠėS‡%ąßÜ1Leł· dńO–(¦‡IExø½Tƒüė„Ńu}Xqż£Rć«ā¾e‚;•”·“$y8<ŗ±ĘćwšńøąüÕƒŁ²”qVµĻ„ī.A„-Ž»fXń†‹Øüé±¶¤#Ä÷:]Ź ń·×ĪBßV‰•­.™Šr0x«Vŗßˆ!˜£ēŽē5œ°ŅµÖ§E“s;mµÓīm²0ƒR§uvĖĶŹµņG96ƒ3°hīā€Ę÷¬GĆwE$‘fŽēÆł9śõ“IaŽą7Fݵ…TŸĀ÷vÄ4QŅńEH¼¦øcrŽx$0¬mu”Kū¶‘0r9ķZ‚fhÖ1Č©ėŠ©«Ä_h2{š!~}LdڇŗQ3ŁģpŁnk'e”į±ķVµ6Śā,2€?Zر‚F,Ev­V¤FM»%…Ō3éé®V\äg§įUīe‘C&Įį‡Ö*«+«*Wž“ų|łī€ŗØ;†)ØŪ[ŽI»2-zä3ķQ·i÷Ø,ēFĘņU³×ŚŗŅVīR|äC鞵ƒ«Įö;ÉS*V3÷ŖÓŒ–ęsLŠÕ5ąŅœC)feĪGCX½LYĻr@Ŗ—yŃmVŽ“Z¢Ŗd)ÜGįZ5„‘Ķņ˚ēd÷04*ū€'Ö³u;•(Ūłõ¬K™ŠŪœäÜÓbø $–ćÖ¦0VŌ·&ō&•ZHńž{WKšūģÉ “ų Œ ×,%id Üg­hhW"+“®’˜Q5ucŖœÜNÆiŽÉ_yRĄīŖ·”ŚŁŲ1Ž“…柔¤øb@ū š+-aŗ;•™" ēµró)2fžÉ‘&å·ܙTµBŅvČ<žõÆ}j±ZnvŻÜm5›©9ĪÓ[_K£(ÉÆt{aC'šŚš„œ78ÜńLƒ<žµx!ĖEhčI,š“K0óÓY·udĪ•Ŗ±=źÖuĘP+R‘K ’ÕßkFåŃBHq‚ON+˜“MI§pW Ž(„×Q$ļb;X] —!]AžÕÅ;€ĶĄćšßxņžšĶgŪ[¬·,Ŗva(ė”%„į£0ČĒČ5^žœ‚ ‘Å^6šÅ…WŪŽµ„yojśił°ųŹ‘ō¬ÓÖ錎'6”¶®2NJé¼’Ét”#s’ÅzVV‹ ąŹū£’3É®·ĮŽ5—E½ņ¬ģ,|–9a,[‰SJ¬e%dŽŠ.~ū,xÓLk[uwŖN6ĀO?Jąķ äd• ņ}kØų‡ÆĻÆjlŸ»…NQ7p£Š{W5e•ē““šØÓ“-}NiT”Ŗ=44ļ„‹e"€KĮ&±ģ ņĮČŽ•eļX?Ɋ͚čΟ"¹ƒéNœVeÉ$ÓEė¹”·E5ł3YZĪ rsŠ—É’IŌJ»£# wŖ÷ŗ,Ļ~¢%ģĆ„\!Čr•īixZź ÷äŗķ b®ŻF‘ķ)Āē9=ŖŽ•¦v ąņAā¬ČĶ4nŖÜg‚x8„;t6rm"suQŹĻŠ….£‘ćE·@;RŻ ø“ UEƆ²“ż–×CĖ%¶óĻ„JJŚĢŪŌ±ā:eņŪŠō¬ĖydcūÉCš@?…/‰LŅ܉YČW=)ŗBĀ÷*³guµS“ R|×f夒;s‚:śV„ƒ—U U›¹~•ˆĮ°ė …PqżE&m6ā«;Ø^Fpkõ:"Ō]ĶŻoģ–ÖŪ›,ķ×oLWu4Ff#*[…Ķt~ cŃČiT³Žģ ®)Ņi'*•©­©ĆK²'[™ŁW‡mŚFł·¶åĻ'„Zdd”"äsĪj–›vŃĆå.FWՉXäuP$śšĀW¹¤§h¦XˆŗP>b8>Õl؝€ŁG/­dŪÜV’lž•µįņ››ŃڦM­IŠŗ#Ō-×bG“#ļÕ³)<’ŹÉ±G˓㚷¬L"Vc)gģ c­ĆH<·fädšøóX­–×2µ dūg—•ŻÉrŅ™ˆpĄż+pĒåŽ B“€j;‰Q'&DJÕJŹČ\Ž÷¹—›¼|Üu>•£lÜ«*øéŲSKĮqlĮX,Šp6ńZ6ĘŠīĖ @ŠĪSīi„¹tÉ!ÓKAĘ2‡9¬”g“ł…VSĒ$u­HcÄ0ƞ*āŁy&_#9ĻJŽm4†–3¬l}īDY\Ži²ÉņIe!ńSė9øNq ®sXץлļŖŽ»˜ÉŪH‘,’ŲĮ†GŅ{‚Īß+vŌ6wń5šU;ųĆZ¶ŃµÜĆɈ(Œ|Ū«”ߢ"3ŅĢęõø*Éøś~TßYʓ3Žgpū£9®žś(įNŸ¼ļ\¼’±¼bˆXƒĮĪ3II½ÖĪåķIs(X˜l# ķPŚ[³;<‡é-·€\ī ĒŅÆĶŖ£Źž˜¤Ż•®S|Ū"孃]ف •U{¦j֗¦<O9ZB˜+JŌ¬lōAA’‡o× ßæŁ0Ü~\ż9®~vō5JŃŗÜĖ»¶)¹ «/*AĄ÷¬ÕŌä:°¢’ƒ€:ŅxĆRŗ  ‘Ļ ŠĢ±Yę<‘[CįŌęm'ynt·Ä\yrØ*Ģ9ØķĢ©™ƒš®²¼`8P8ĪsK¦9iCv`ēš‡ lćnR÷›Ūbä/ĶźqĶcÜ-˜»aå2ą`2õ?Z¹©D‡ Ē#Ŗ‚j„NvSļöü*©«ĪĻ]Ģ­k)0TB޵NGf<²®zVž¢w)9 犤TĪ1ŒūęµRDF>ķŁL€Gę‘@nƒĶZŌ\•ŻÉĻJĢ·8eǧz½ Ps“śŅrźĖoK„BHĪĪzóYšŌĮ$ó09®ž{EOŻ]»)|a<× «$‡ ƒĻ5tģõ&wZ1öAī#ĄÉnz÷®šÜ¼ńmķėXšd ä¢ķŪé]_‡dŒy…×q €?­c^ilЅҳ(¼^Tx/€z`ā«ŻĀhļWµTŽ4HļžH œÖ\wa‰€Ŗ:Ō&Śŗ4åHÕфVöģĢF’SŽq8$y{A#“Ņ±į¼ˆ±!I`1V­īƆCøśTIÉī5{£“h*yϽ_Óīv„»²6rvžÕ‚[ąõ§ų{UKoB²®SŽÄŅ”^餢įļ6wŲ$Kw=Óy҃ŒvćŒŅKxŅŚī|—zēµPń%Äķk$±ØŚæ2‚:f£š]äƒO™§ŹnØŻŲVJ/—™ K=ę…•Ķ™µ™Š‘†U½ė>ņņ4RĢĄ°ģ W†Ģ™Ż"›bķÜsڹży&³¹8u•$ē;ó[Bž»‘Vm«›M©[Ē“ –=;՘u;·Lj°©qÜW!+Č HP‘Šøó“qŖ‰šĒknDešźĶéö޹hŌ&óĮĻ”šHRB~^žµ™„źB8(¶9<óZžgŚc ’¬ß1ÉķCN:)YŽ&6³i1Ÿ!M’6W°¬ėk žė õ®³­ē’²åxõŖkhžO=H(q·¦jć'ŠR³z’‹X£3¹ėzbµ7˜¢ņć~į×>ŌYÉУ„G¦h¹&W2ŒŠRwdėkšį’$ó|ĄśSl.ęĮŽæZ›_‘%³Ą%sߎk 7{}ØØA<šŚ6屛ŗÜč%hĮŚæ1ZHeB” ŽØZ|ČO,8éVōä–kµėĪź+&—sXĘęĶź¢Ł«¦7–«ž…ēŗe±ˆ SVōū829Bć-žÕŅŪŽŲŚŁżšKŒgn}kŠUl¬•ŁÕ }[+KdŖŖĖ”ń‚Üęµe6°,įK&ߛ€­gY:‰Éf<䞢ØßŻ%åéY2cąܚ…+»īg-ķV)ä3a¼Ą"“5Ł&ŠŅ+–݆\œ?J­įx¼˜å•Ѽ°AųUJńī5į•]Wž4¦–āum+XžÉļ¼õ ’Ē ¤±ėĻćY3ļ՘»:mŹ•bA5ŃZO#«[ĒČä1÷÷®cRóęŌfbŁ;KvUÆ$Dłžę¤¬{cĄQļĻJvš¦»r.yÉźj„ŒLмlūJń½Ž3V,R0DrH\ƒĪÓÅcU“¬uŅqнõ%Ōąk«ØÜnɱŖ·}婙Z!åĘAgr{Vī”u*‰%dEĪņkj ‘/…•¤Uc#ąēÆ §,lh”e.f­ęrÖVRÉi¼2(ełƒ5w>’Ž×Oµ†ŃUä~eć§‘/Ł!M¤ńÓ8Ø4żF-6Ņiž/›Q±ƒš&¹–†ԜļŠėģ.ē‹Åupа§00sõ®Ę:…ÄßhšŽĘTÉE””cT>Ż6«0u¢ŗ Ø#?Zæ©_ʞM&fmūŽN˜5ĻļsR”m†n5 č¼­„ÜÆT’½gjZ‘²†[Ko3Ģ\+ī•ś ‚JĶ™Fn÷LčįŌ®œķ¹Œ6ī284ų’Ä\+øŸÆĄ­I‘εtż^ÖÖ\Īc'¦6v®¢ZøÜĘA‘œf”¼Ń­`— n’äulf¹ž¹Eū§L°ÕbłˆbÖtŁÓ÷Iå:Ž IŃ® ūIŒA[]’GĢF;ԗ馬Chw× “od`’»(-ݤ+žµ§'½T¹¾óR8€'ŗóZ6’ŁŹłs`t,9§Ou„D„€CށqZ*·vI˜Ķ+]“cʏƒ}#Ķ_ƒG–į2®č=Óž!±ż\n‡°+AńT&Ņ€¢ĘMT„W¤B’‡RI|>‘É–&Sޫ˦Nž‹oēĶU$ń„“Q•ŽĪņFķ¹qYž0Ō¤›}¾Ÿ* cęĮ¢>Öś¢*8_FuFŌ¤…|É#Ū袪j>m…ĶįRyĄ¬Ż/ĘZŽm=w-Z3xŖgJĒŽÜQUŒ¬\ż”•Ł{ĀŽ²­4āY9&»ģRm‰°ÕēĖā{u_õØžāóZ^#yŠ~õŲv%pjjFw»e+N<±:)ōķ÷īShč6õ©¬ķ-S•ˆĒ'¬ .5Ipmd$°Ļ̵IäńH“FA灊ŅÖ½Īn^GŹĪĀHlAż÷—Ÿ~*9n4”šÜ1ć yZę¶krÄćN.Ż™ZŖŻéŗ‹Ÿ—MÉ?.[S·3µŲ=5čvÖ+„ĶĢrĘF:nÅV½ūGaˆ/rMr^Ōå|Śö“·iįmlF1:śžšę—+OYó&¹£”rļ[Ó-·m Ģ£ ImāĶ1”|Åéū³Uf𾵜;[öEx~ŽŃķŖ\ĪĮÅ[„MĒs(T•ģģjŪėŚ|„/ČU¹'©§ —żŪ!=ņŻ«›³µŅ÷ķģ%½X`VõŒö–1|ÖöŃ v<ę±vZ+š{;.i%Ńķ’ņJŪŗćō¬ķcĆČöąE<įsĪāio|Q§Ę?ćīČč¬qćgł%žP>B§=ģ`Ś›åŪę2--īD“»²(ĪwióėU Co¹ĮūűšĪÖµ+ŻMJĒ$ńƦÜVmŸ‡~Ń6ł¦—?B+t©½eøÓÄ„n†äž »Ų|‰¬m”¼X“ŠĄŌfŠöbnubž¤?*ŪĆś-¬eģƎpĪsQOö˲ŹĒϘ GĮ¢ 'x‘ZŅZ’™•£G¤ĀKNóČąķ85 śĪ™€AheAŁĪŽjŽ©}­ÉĶ–ŸQć V1¶×ī$ÜÉkNpĄšŪ–;³%RRŠV²FĪÆ}„L…ŪMˆ9C“\ģŚ„¤O˜tč3Ū&Æ%½Ōyū\«»ŃPT.öŖĮ¾ĻqŻZjNܬn1Nńˆ$Ų :|jćø5^ļÄWfBcO`*Šq'ĖqŒü*„峓¹¢ėÓ U$¬aĻ7ÓOR#©„ĆØcŽĀ«–qūź)ĘŽxń“cæ¬Bīp­'A’*n֌ÓB8r“f8é·­T¼øV]²[ śćšŁ³"9`u}¦Ó$M³ĘČO?(Å\eŠ™F6Üåtė[K†H…³Ń…oC”¶ŹÜDłķ»šæŽŒĢ’Aßęžmt}¤,ŅƒÓ jļ”TłyuG>ŽœLŪ]żźd{Bēkį½uŗN“Ą+ TĪyü馏†Ģmņ\Jx칫²–—n—C&Ęö K68ÉqVA³–3 Œ`õƎµLJoI5Čēęāµt łY!p Ęw~u5 “5¤£=.s:Žge¼~›…U¶X€·Ł鷊õŪ YĻ3&öėÖØźÓZm°Į"·riĀi­ į¤(Fém”ŸVj9tė#’·ŖI莓ŌāöeĶŪCČŅ)•÷-†óžŠ«vķ~žįmļué7Q%”,ų2żÕµ`^ėŹd(-®6·LEŒÕØ©s«4ŅŽ¦Ÿ„Ü^9Å쐟ö”бsįÓ-s‚:*ģ³-ź(MŌķ«v³É`7 lØåpjdµŠÖ÷o-?” ¼lw‹ž+RĒL‘CnN2ŹNk¢±ńC¼€Ü[¾øŅ£ŗń,QČĢÆŲ®j“»³VSƒŗz?# ū@µ1¼lŻ@^3UD²…7ƒ3ēĶnŸ1›Źū s¦?ÖW!Õģ'ŒłśyĮG5NvVB»‰Ģ:Śł[T\Ęēx ‚HǙ̫Ē@s]JŸĶ/ļa–ŒüÆž5©Ÿƒ¤±&—Ķ’mˆ“”b\Tšæc‘³øÓmŃZU–i=pHŚā,ų‚Ķ1‘‘žk^öŪK³Äéü8nk6mF8I[{X\ŽŸ-k²ŗŌęOŻÜ„{¬jÅ%©aH^k iµ $żņČrsóg5æ{®ėN›b²p c;9ØmµXG¹ć#wUdēłPäłABi~f`¶»–Lånž#ž•)šś2ę[ŌVćvx®‚MA%· qnń¾6ü©ŠĒæ“”hŒĆ<ņ)AE­^£©Rwµ“ ‡JŅķłø¹–Lņ6š.?³cR°$züÄŌPŁČor£Üjķœ¾ćZVk`kK·”J¢vĮ. r0jS„Ę‹žĒŃŪĮ§G±|ōf“3&õ‹ŗ<9ōé<Ó¶'8鶃c!L˜e_z÷ƒįŪD e©#°¦¾rlH„£†ž’ĻĖcĀRŹR˃ņöČ ÕŲ“ąä)e]£<œW°ŻiØ$ł,"bÊdŗ$;M`ˆøēię‡÷s³‘åIįå•ńĀr26óV†/Ó+7×W¦Ūéš|XŁdźXqŠŚ°Ņ ’%xÖT'““Jm%fM:3Ø®y5—†ī0VśūÖĶ†&p2ŠśtĘkŌĪ4ˆØ ņó„TVė“ćVĻ9=j,­rŌZ—+8{_ “œ3oļČ«Ö^’Ž`ŖY³Ī6×”XZ#Œ£€}F*ylŹ1̃Ž©TMY—ģwG q¢³Ä|ėeaģ9¬Õšå³\e`f$ąü§W Élå€[ƒµŗ|ÜR‹ Õų›Žū["«ŚYX˜PIŻ#‘ƒĀŹ€Ž8ęµ4ż.;óįųĻ=룷ŠTP˜ē¶AØo(ŽåX˜V-ßs”®]Wł™æč§*>G`)ŚÉŌ”†"Žę§Y“¹ ƒ QĪĘĘjKōßżcD÷6Z­¢&1S~óHÆih0ØS·S/¢Ł§ŸŅ“„Ō“f_.Ü$­½Ņ©AäÉq†pœōSMM-ɜŗ†Å(‘†ēĄõ׎VĖü̟ķzVģÖqÄ»į‚ę~3ĀŽk>÷Rٹd¶– §ī3Z]Ėcv*Ķ”ÖĶ~eŚOsP¶œčÄ¢å‡#oz“ūvĘ8·y3–īŒV…ŠY™c‹L”†x ©“’Õ"éFœżŌõ$Ņ4ŁäŒn7Õv A>ē'„k隔”¢żąćœ®+JIAƒ&Hļœb”UŌč٘ŠZ•?"‚@äćօœ¦,aBõ‡­X³’Žß$Ļg±ę¬Żj–¦"ØvÓŠŹN\ĒB”=žå!dä*żāō\ZJˆ \†é·š„Ŗŗ\2v#öÜV–ŅŚķv”ŌäŪčp«•ś3J2\Š6ö¶±Æ›,M»ÆŻę¬Zϧ˜Į>|J=Z‰'wĪrĄsROn«l*m«—J.ļR¢µ‘9ŠęB¤p]zRJtū„ņåv™ŗsŗ|¦yzŸÜ ŅŅīōµr.'z‘”Ż+ÜÖ1‹ßo3"÷CŠüæ1ć1ÉČĶA¦'‡#rQXžś•ŗ‹ŻGƎ C“÷ó3Ч¾Š÷ Ė©Y³@Ę(ēR¼f”5+AčjéŗøVT¦ŃV—Rµė’h}I\Õ(“NYÕ%ŲÉŌŠåVµ ÜŪa®%€ōɐŠĮF)Ūcy¹rŽäŃjŚq8Žhܞę3Ov ņ]ĒžAXˆĶaŪųkD÷źó(³Õ·°¶„·ŌžCŌā©źķe‰ļø·sĒf~i^bO„T>"hÉcŪ’\Ījs­;˜ą³)Ŗ%Ģ„‹²ōžVŽ:j“%ÉŽńv+ź2‰s†9wiZØŽ$†ā±ņݰ2‡&­ßiŚäj&ĄĮ|UĮŃÉóZk1źqłŃJŪŲ皯+½ĢŻB8g•¤ņī·STgKÄĀĄ\dn¦Õ¼-¬[Ü0‹SyØägŁ|SkQ¢¹Dé¹EtÉ;.§:’WŽ6+Fu–p#mˆ~šSŠ‘­Æ^\\ErćŌÕiüO}jūnōč~Q– b®é>(Ńļc™f³ō>gń¬fÜ_¾¬]*“¦­ \öFۈfcŒ“Å6[æ Fƒu“Ł_^?Zēī¼)©‹ŒÅtXsČ'Æ„ų:ējÉsu 2ō6ā–ŒØŹ«\¾Ķ 5ž†ŹV BŁé֓O»XOī÷*ƒšŁµšµ‡˜1©Ā…=[­mCį‹}Ÿ-õ¬Œyy©u_Ā:XgńHĪŃÆ"yšŲĢ™5”a¢MwFy$qštžæH÷",€q•|~•5†‡|ńØyV0NvØmĒ©ÓČ„eŹg\išRĘĘQc£ųÓ­tė©6˜Œ†ćÆzé暤_ņŽx\Ń ihśV›fŹ£#q*qYŹ®žīįõdß¼ō8³¤ź19o²«‘Č*_ʘś†·fŹb¶ŸÜvÆV‚ėGŒÆtHī„kŪc!ŪÉ.za2MיZH„EĆ[œ®jóÉž•e*ĒŽ”k„Óµø@ ~Õ‚J’Zčķd=׆4aŸŸ„LńésEūømœž/Ī¹„eŗgF²Ņ ·°9;/˜óŹ²Ö‡Ų¬Æ” T»?FP+fŽK;ßŲ‰!=Šē5%¾±o‰”ŻEŽ TÖkk›BšjŅ·Üs- ܈mī]‰ćLU][ĀwŪ«É,–ź’ÜĮĻå]üP »pŹņ@#ĪlY×zUčW1\Zņ>š›«w½Č«BźÖ8K/Ņ2ÅPuɧS'īÅ "¹¦žóŸƒĆö H. × 8.ŹØdѵµR Ō “xą(ŅZėś}ŹyVÆjĶø„n¤ÜŹų†Vé™`Š˜Ö’ŅʓĆĘ÷_ē×ŗ<ńŻ›Wži1Ȓl ŌŗŚ,œ•øūFzbŁüė¶—N}āyŅČząqUÆo-BÉSŲ[ø\d2ŸŹ“uł’V¹Ėõf›r³0t«R[Æß<6öĄó½°HīkVY­Uµ+؃ y‘‚@®r°ÉzD÷ÓLPt€OÖ­ŁĆ~ēÉ“± aƉņqō5[ŗŠtī”k\ŌŽ k6ų†īfĘBÉ7_Ā­ŚųŒOx š02ķó ēé\Σੵ 7¬ĻŻJ³œʳ5k|жt"CšøĘœÖ²×ŅÄ)W†®/—µīvž$Ń ŗ·ßoØjŽĆ%wüæ—jćļü;ŖC7™kŖÉøc$ČWśÕĻ ¾±¤žļQ7SĘ!£,žu¹w’Ž”nĖ$³Å$GĢøśdP„:~ķE§Ž9ŅEĻMŁöŲ۶ń}½¹K{č&cĄ/"‘Ī¬­ē!iĪSØdĪ¢Oˆ—KÖ£„®zŠŚŠ|!©DĖö­N7ĒńDܚU-ՋĆÓ«ĖetQ·ńoŠķ\ Ż6Ķ×”!O?ZŲ>4XķQ§°Š"zį˜Šß‹I‚ß;^Έ9 Ī:uŗé.Ū?³]³’?*?•fż›ĆoCxŖ±ŃIżæŠ,n§łO…ö’ĖGĒó­ČåÕ/lȲ›O™ĄV#ü:U]OOŠ#¹3½«±ģØ8«:ˆ·`‘­“)ŌŖąTI„¬6ō);§ ½L[ė]~bŠ›]->X žµņOķūšæB³š%ļˆ.-eÓõR¤÷ČÆ³-o“Ū›¦ŽĪåg“®wÆĻOų*ŸŽµKļĒį8Śhģ¬ŌHėæ;³ßōÆK)9K›įKTyøŹi8*Mó7£>(ń$k·÷™8ē ā¹MVćbp2C]æˆQž r@ļ\ĀZ²9ČōÆU`äåöpþU©Ķ20n‡œ«·…ĪOJßø‚5Ug ĆÖ”X3*¶Ælw¦źŻ\~Ļ—DYšĀ²( ѹ8®»HMר¢U@É%±šÉÓć͉ڄp ŖśmÜ«uåĢA x5ĶR.JčŪ$Ÿ#75øķģ`o3ėWnķŹŲ—†ŚN=Ŗ&\‡TSøcž†µĢómxö±LķQN©“šŹĒ rŽS±U)Z[Yv#*J‘Ōš}ü{$ø0`ē„lhQ§‡Õ`Čxb1[NViŲĪ4ÕģyÖ„‚ļ2}įAėM!XpĄö­ĶR̵ćÜÜ|Ü Ź¹·–+–ŒõNą×\e”ÉizĄææPķņõ"“VŸQ@¬V1ŌśÕæ¾8źF*kxoĮ°9"”“ś—Ö„4pɶ݈üõ®sQCs•“#¶+”¾ˆÉlŲrŽA®nōˆÜ!įæJŗJĖC¼²w± :gƒ~Å 2ųQqnYSg’8ÅI«Lķ {Hłx©lä$jp śœŁÉõ1wŁ M*iŌĒ”NŻÄÓŪBxƒ gwŌčóA š$›²x«Ć9•¦Ė$œ`Մ«K©ŅéŚ7g¬ékrр  ł¹EmFeĒ› 8«ė4÷K³Čz穪PĆ?ŪÕX>ÕõéZĘZY³MéswĄZ•ĢĪmøDRsøõ­-RŚD¾)/Üķóu[N†x|ÅĘņŁ÷«z„ĶsŒJa0@žµŹäœ“ŠėŒ4ZjdkĮ¾Ķ²1ģCՆ ē+£ÕĖ,$ćvńjēåo#kdc<óÖµŒ›Ž¬ĘqQ~e«M§*TóŠęĖW*½Aļō¬+½B_¶„<Õµ‘ī0Ż{š9ZWa –jĒiiwēŪ7Ł’Ö8äē4ČmīB²².~c’׬pÖ‡]Ääޤ×]įEļ-—ϱ黩®7Mc±Ö„¶ć¹—,M¦"†1št±Ś EhĆy˜ĖēŠß–(Cy²8ĪpŠĶÖTJ„Ć–½„mNWhę|Ŗ78ug–ąSŽ iéśDĻ:Ü<‚RLóYūH„vĶŻ'Ŗh⯘ ĘĒ Ėk»¦™†Ż£cÖ»_iϽgSµ—ļ×Ļ=—ž»Ōž+HĪ2WF <®×2ƒI"dõ=GJ槃 ń’ō«¶6p¤¤$2śT×SŪķ*¼*ž¤w„fTß/]BŽuYAa…#5bśā ‚UMģGQéX²\BŅÜzżj°22y‹!!;f—.ŗŠh³s;ʐFžŌėĘņ›Œp85ž%v =sW-"ߤ45mĒ)$¬CH—¤‚v0MItŖ¬Z<†ałTd(E=ńVķ i%*]2:¶¬wŌĪŅĖ嬲…$ä3*]n;{ke†IĘKޭߤ›\r£ 6ē „pGPŲŌ)/“UEĶ¢#²±øžÉ3<‚%Ī=ĶImŗŽŪ+°cÉĶ3PVHü–•¶ž~öj½Ć$Ķnƒ=ź”oŖ3PčjCl.HYJØĻ'šĻ½LN#"riŽaņCģąņ;TZt %ód•É øŃµ/“kmbtu$õ__–˜()€1žŌ fu ¶HSĒ5”cµ3+ĪO56ęÜ«½5‘ŌŻGcŠŠŠn‚#czÉ÷NZ§¢€÷H sҵ58йX SĻjĪZhĮFJķlgk ŽĢż[€*=uĒUQ·ų‰ÅV¹…äŗo7%EI§“łaŚ8ĄĶT£īī87}߯łWFŠvō9§ł&ńG– 0źøę¦šŚŌ3ĢŁ,zõ5£ Ż, ¢FŪ×½dҶ†œĻve 5b¹ åmv'„ ciģ ¤’y>ÜyäņkMv­¾óŌÖ5F’ŻlHB‘>ŻęELēęĘOLõŖhŪä,Ē»śUĖ(ˆ$`œ÷õŖ’²³&ūĢ–?•~^Õ”Ļ9늪TPOZš`~RsķXKTu);X½—nsž:Öę—£ŁŁßż¢éCŹ2FNqXö.©:ŗJĒ=ė£Õ§k­“œeĒ t…õ±S»‰­-ÄĄœI€1œÖ%—ļ"‘`Œ/•׌U·†FŠ‘6bśb³4V’¤å”· BJÖF1“{^™ÅŁŚXąžŲŖzžŻ€0RŒę®[}E‘› ōäb±üNJڳGŒÆö­£+čK•–¦méBwDŁo\U!)WĘ_'Ó֝`$P®ļsųUČ­Śs»!@äWBŠĪ2¾¤š,oøø@Hä‘[w,ķF+ÜQ¤%][ łÖoˆé˜dÕ”żéjšVµ‰4æ5īĤŸ1{ē?žŗf·+Ér-’* =¤¬¼ņz½y Ź©g_™¾ń4ž†\²jč›O–H"īT^¹'2Ź/++£5U$VņĮŪ¹8Į¦Oūٶ®·'ŚøāžčÆØŻł—ŖGšūTņ<\äg§"šl0CsœRYZIq1Ž%,ząvŖ“mbõKQ¶ņ*«ėÅz„ōa‚oßåžsŗ5?Żéšęt?ˆīk TD2­u÷—ó‹C§•o·j}+‹9mj<«YE…Ä@“3ž§®}Ŗ…£ĢībŲp3SY:ż©ężļ'ԊŪÕlÖ[HĮf‰@Ī:śšåWZ>¦ÕW>Ģ© ””‘Åvä’:»”iŠŲ %™Ä„ƒĖtJ”e©Cg±KyøĻ'°ō­8]iR²® d|ÕÕĖĖsӔ®ā‹wŚ…¤6-&Ķßxc5ēQźS›Łd`Ć%sÅoų†Õm-Ո*̓\¦§3½ĘŖÆŻĶiuÜēwŽ’6—V¼ŒĘ<ÅŪ7ĢÄc8÷©ÓVŒ;«¦#ļµA$×s1RTd±8É«VFRąĒŒg„7kjm^õīt Ķ2’ˆ˜åpŲ掵4iD:ŒEšøSœŠåšsÕÜAīļ]„ mQ$ >LzÖU/k#X©'īžŁ¤ųR;MPؑBČ8>•ĶkM"E5½“h‹*‡üšģ“Ē6Öį$؃ŌzWćµ6śęų³!˜‚@éžõēĮū֨ުѼ}ÖsšuŲ‚O.vźÜ†8ē½YŌÖ+čc† 8f;†>č®OāDöėØÅ’Čć–QĮ©¼'¬C,rĆ q:GSŠģöIĮ8īaIĖž^ļl£²ŌY2Š¢1IĒVÆ)—V½{pTM“ąf™y­]A õFM4WVoRä ß3éYš¼WÓĆøŻ»ŸzӒ[©uG8i‚’øhypK8”¢Ģ "ĘŻó\ĶjœM9līö2%żŠ‰ä$‹øCP›†Ļ Žj׈bóÉŚŖ£•^;!±x=iF)źŁ²D½Õ”Ė"³O圎ŁÅmiš_FūB|Ì/5ŹjؙÉH3Ł„_χä'§&¾ęz­łÕ%¬‘évR‚Óv "]‡ä›Ÿļ\v“¬j„ĒŹ˜’i…tz~©©’TǾ€×#ŒŽĻi®hƦ_G!ņp ą*f²×‘ĮūTHO”V6£s¬\GņK%øƒÅg}«Ä± U›Ļ_ö—4:UDJÆ“;[)µ^g»ŻķŠ§ā-ZB¼ĢcćØ× Ŗ]묘”Ė=+:Ōę~~Ó!«†+Ž’"xŗ“÷bĪŖßÄńĆuūł$™SŒŒÖĢ^)Ņe5¬G¾KWŗ=ć2ŪJ¹—U»O K8]A# 5£” ļc8ÕØ×#ĪŃ®“[¶ ńG#*¤ÖŗBɕøŽ5ō*MdZxZņŠ©ó—oB ‘ŠčģltČ w3³’²†£›“­Ńj{hÄÓWAČ É$ƒ”ÖÅ­•³&a“čƲāšĀ+Ą–¶ŅøoņČĶjČŗ‹üÖēb‘Ą‡ŠÖ¶°šģJVę{Flt~ 6Ż.…™C*Ÿ\akRŅ®%•¦khqž¤n&²÷ź+9Xč”ćOŻJęŻÄž²·B[ÕS"˜œļīņb¹ ü²CłƒV@3QĶ1”MĻmć”F-ŻN¶žó:+ĻėŽIvvöćxMgÅÆx|³Ž£ųqŠČK‰mäĢbéē8’ækØŪ¾įwygĘ~G§(Ę:I){šžĒM¦xŅX” ÕIOr Š[Æérœ=“£'®īÕēž#ŌtˆwyZ‰›žv­s3jŗK>é ņĆīŠ~Ā ]”źśæ‰“Įki6HFfÅpzĪ©{w#¤w"Dc·5‘mÆhŃ&>Ć»ž§šæoāŻ> ˆ§°®+—DD¹zĖB’‡4ł¦˜ m݁ē=«¦0ŁXķ.%Ü:ÅqOćÉ|Ā"·½;Ve÷‰>ŅŲ;ć,zī§7« Õj6„W©é·~%²“@JŒ‚ø®kľ7æh‚ŲŹŹ¾£®Rݬē„Ÿq<y5 ńišĖøļr9ĘkHØ[Ż0ØŖOųŒ“ž.Ö5’Cė ©"ń¦¢Ÿv8#Ø\£ęŲĶVˆØģsPͤĮ$a㐠Ē=i8)u)J¤ŗ³xĖW–0¾qQŪEõĶAœ–¹sÜÖ=Ō°±É;{Ž‹Xܶ0M JÖ&-7ęo&ÆrPµ08ĻZŽćPæåäHŻóTćÓ&”‘¾}©¤]!ĪÖöėJ+±rR{’żŗmü®*å¶©p› TօnB[éW­įčBą‘Ęi7'øÆee"X/ēŻøÉ·ŽķV ¾bč£|ŽĆš[[RTˆĆ¾=jĒŲ¤ ˆāĶČ5i_@»Š¾ås|°‘ŗ6\ōĘjĢwö³®$E$~rŹŽį­ĀOkęś¶t›#sŪ”Ļli¤­Ō\­īŒ„k7)rčO f®Į*FŪ‹,¹гż“lķ•>X#śUė/  Āā4_÷¹¦Ž—Ÿ*ekmFĪ6RÖ̘źQtz_ˆō„P¢k€Ś)–^MŹLā@:ö­«/ip”–K4aß꬯¤kĪ£³%Ä0Iś;g‘N7×s`¬!¹č U;›ĶŹ_“N“héO¹ń„…¤{m4Ļ™}±G,:Š–·7쮵YĘÕ²tŒīō©ŅßUyֆ/f9®.Ojs9[¤ Ć?v²ļÆõ›ē-ļ”O`Ų¦•®)9;4®AŌlu•“ Ņ’%äˆIčAØŅYŠĘCŽōŪ‹ŲĪÓūKļ;k mźG3$‡Œ”įm6nZī8ūżģWt‹Ä•Z=ąŸ”“ü«BŠė1y“×?Ε甓 „ĒFh\xJäZŹóŒpQ¢-*{ł¢»ņĆ’:Ō^}ćdŠś£•5§¤ oŚ.omTžÆ #õ”JėŽD¤ć­’"ՔŚMĄČéæōÕ1ZĀ y³]ېćŽ1Vm“» 6śŻŒ³z8[žĢń4jMÕ›)8¬ÓoE/¼¶ŅkÜg;ąBaöØųčsPAį}NŁæsSļ±āŗXķü]¼ „·u÷Ļó®‹Lµ™¬Źź ocŸ-ŽEiĻei+˜ū)Kį•‘ĘéŚ.²īe¶LvÜzV¬zU¼‰Įg?ŻlZWVš|RŖ„Åó“Ł[Š’(m¢rc“ŗ™‡«b„¢śĪĶYZęCX¦umć?ÅņŌ±iźZM%QO%•ø“&Ög³Ü°hĶ#cŌ TVŚŽ±pĮ_IeF³ż*dåm†“T$ł[¹f×OÓ¤C›D+žŚ÷§É éģ}’›¾9£„@6×Ų;—„Zø·hĮo<Ęøį¶sSĻsiŃ“uŲå5 é¢\cLõć5«ųs-”Uć!ŗWb$ó.–4¹’VčO—[+„ČmĖ}” #£Z*ÖŻ}QI{‡“Ūč7ĘåYęu Ęŗ[M&Pż.EĒaÅwXĄ# <‘?ø@©£²³ĖsÓÖ±•E'µ‹„O–·9ż>Ń£‡—goSÖ®Gxń±Aõµµ­²6<ćžįŽ8¤VktJÉ&O',p)9 Ö†E¤2'-aŽ¢“¢Ž)-ĘĖn§„OØ<¦3¹HĘAąÕhā„üčŪO\T«½Xāā½ÕØŪ»`œmn~čĶd$V¦ą‘q.ü… Ų¼¹”‚#T$½éŚ[\¹‰[Ōc5Æ=‘³¼·2-"\ˆ$8ćq&“%“‰”Ļ—=ņNkYZ00¬{ŌWÖ0Mjy˜±ē pqKšīģÕSkDeÅol0Z8ՓsZvw£ŪufŃĘQašCŽ›ūQecr°Œ·'§ĢT£uØ£9EŁ w%©žæ'õŖsZYŽb›©$W3¬[^Ā_ŹÖQKvféų×=Ž«ö‘öĢy=Z…NV÷ESnJ‹SŅM±ĘŪSmź~n¢’{iRŪ÷“@LĶs–W×In¢{«K€ƒ¢ąš„}®Ū«Ÿō nīā®v3©R Ż³Ø‚)ŸŻy¾ąŠž`F’²J†2Ozät’Ē…]:E°ÜInĮā«i¢`‘й©mõ4„©ļ©kRF†!?¢Œš” /Ļq%é'ØaIØėš‚[»ŪDń‚W9“/ˆ¼Jßwk)ƒü*ą“ŠĘU!){Ķ›«enŹŃ¤‘ĀqĘōēŸØxv9’åöŌ1ŽE`\jŗ“sq ŖĒŪ°źS‚ ŠlÕ†j­$“1Œé·f®‡Ķį™”—0\·ū§­[Z_ļ#LHī™"¬iŗ¼ŽĮ<ŪXŽ®¤f“ƔކÜ$Œ?L³b¬IŖé¶Q‘^qJ‘ĶrŚ­³Ģ„Ć;ĮZ§aģRcģ#ܞ•2¦š»ŌÖź/v‰ŌĶć Š”Ś47ŠuIČCbʰQI¦ikq —ŠXݹ\ÕäšĮWāöčēnĀi^ mŹT+5y;™“ÜÜĢAhŒDžĆ­X²¹¼‹ī»÷”ž•µ— ā –|ŗšš+nĪĻXI’21’<…g)/“uR£5»9ÅŌ® ƒ%°‘Įė呚ßŃo<ĘYʹvō?į[Ök©·b±‘ Ձ¤Ź R¹īøұ–Ö:éĀ+[™w¶×ÓĒņ1‡· “X÷Zd±£Nä dØŪŚX^±ēb:µhCap%S!’hęœ*Å+6LعKCĖåÕą³‡m¤wČæÅ&qY2jŗµę¤ųć Ų€{žŸo${a²„…čH泓I"BĮ,”^hö‘³² ”œę¹äŻŽjĻĶžŃ{}.cŠä`šzųrŽgiŖ[Ød—WJl#ĮŽŌøēu:Öém\( æķ ļSÉFŃ4Tį~g”…ѦUYī­$ Ścü«VĒĆĻS-ćÜ'÷]r+nĖXŃā€łŪ<ĆüDu§“ŗeŁĢWņG‘Ŗ@¬cSł“5³Ś:”2Ž"²8±żžõRžóĀQĄĀīx>n•ÖÆjZ Ż¾ÉFŻÜšāMåü :d*®™įłžrŠź¬ÉŸŗĻėXIy{xŸ5ė’yĆY4‹Él•›w9 šWŅ×7ši«ĒOS±ŗšäY ·Ū¼]Ö؜Jź‡uh›]9! ½‡CÓéG:zH„FŚ©iŲóK æÜĢiاÓm_}3T™3w D€“»››8N ÕV7žč\U „mś„¼äöcŅ—"‹¹£’’²ž¾ćšū›lĻ$Œź>ąnj֗­ŲA„†É”Ō’Mo5ŒĮ·Aairż2Gõ«Vŗv«#˜×E³/Œ€ēņ5 &®’1AŹü©ž|WW7Ź|‹•€c!\Tŗ^…©\ Ņ][²–ģĒ8­9“æG“Ź$łęÆiÖ»ÄĀ]1WŁŠR›KChØ·©VŪĆłäŗSź“V„“$Ž0wIœÕ›]SŽ éfP›ēŸ?„Cs{¬YL6ŚŚ*œČ1šĖŽ~eÉĒ—Žv5VßNŽŲn·bŲźrj ®…°Ķ„” ē:’EPÜÄłœiåTr«?•A7Ÿ eo³®āøćéG,ķŖ'ŪAū±‘C]Եˋ–Rbéµ^Ź}QdmXägzÆJģ4OZ\ 0Ų Ī0[oŠX]‹øŒmĀ„cq\qIātµ‡*ZĘZ³…³×5ki†ŁīwČ©iŖj“Ņ§š§“…(H®ĀĆ@Ó|ĶįÕøĖžjy¬ōčŽw0žź–Ķ`ėSæŗŽŖTę£ļ½NvŹčL<©Eåŗc»ŒÕŃ£Å,>kH]3ĪуłÖÜ–ööĮā·īā°ÓPžiČIžĖ$Č”ĪźėBy“j2: Ę5!m¢øVÄ_5„pdˆ<Ňn:Vfu"øŪ;L rÜ é¬īģä@÷?q·&øż£RÕЇ2÷Ī,Ä\C¢j+§Önœ­šŖŒrJk Ō¦³ł{˜d¤““©{{¶ŽŒNqżkoh­wų˜ūåĖwcϵ #WšéŃ„ž,ŽJ1ÕSįYJ•æ¼r9Ć+Ó­ķĢ]Ēß5§fˆœ QĘsZ<[IlÅ 5³±ć:„>%¶;B\øĶT#ÄR(kÉlĄķœWŗŹĄ® īϵQ6vļ!uµ‡>øž·¶±ŠĖŚ~ōÆųq£h÷’nu‹™øŗ;]%Œ4[Lćųę5ӋeXĪŌŲǦŃM¶“U—Ģ’iöø®_kÕžĮ-:™v:~®6•’ŚÕ@«Ež®ŗZuv”g#ÖµŌr¹&9ßgLœT1Ęm@{(ę”q½ŌSR‹w׎KN*Ńzłźr×~5iTż‡O»øļø*õ’Ż.#Ó¤·źķƒ[Ń\_)1E§[,yź0µ„ PĘŻrzŁN¬a¢źgģŻHŻÉžGT’ą„“1ė™H_Ņ©xšÓT’ŃÖ8`XČč¹sł×{2]Ŗ-(ĀɊ|³“j’ZģLō 1ŠÕbZm<#”9S< 7ÄV×ā{fóæŚŻh­ā»«4ŽśŃCwŪ×óÆP³±_7äPFqVītŪ²įD¹Īńpœ“¶æ3ZX:Ō×ŧcάōĖČŪ]¬ś,„0ĻÓ5·i”™bzÖW‹ŚHÓØõ¤Õlō8ēcs¦]HPrv75”£jZgŁÄv¶ń”õBėQ6ž(•JjÓbŁhś|J g#Ž­$ņĘž\PCn2(8ü+L_ŚCb\ Ę@=qXsėZl—;#‹œc'?•(7fä\’Ł3VĒķr8ćÉū¤č¬ĪųÕ[ęoļqĶe聄‰XG 3€1Åi~ē;@łˆĪ`ŠåFŁÕFv± r†%b=«ā+`}®}‚ó[–÷šy›kČ&³5) kĢ=ā$† ĶoNN֑Jqo™V«ŪņŃéśĀ§Ŗ ¢µō)ü±<·Ń! #ņ+v'›pŲŹųﺟssz\FŃĀč{ZJ­ģ¶"49Qœ'ņ¼«yfū՟©i:Œ×;ŪQ`ƒŖ(֔—p ńYĢü gG©j’Üś\Ń©ć<~µ›m&ŠJå$„¹JīŅśŻ‡Łģ¤–CŃŁ‡5É|UƒS¶š„ī£āĒ ,žL‘ōÆYs#iįžEF€ŻjĮ/fŃM$2łvžÕ¶ŹŌšŠĆ„S‹Œef~]ų«öŠń>™®]ŲčśU­“q»*Ė)a'å^ćæßų“Å7®­qēÜ]œ»7ōÆæž>ųoį7„uŸjž.’ŅÖ]n"°A²u„~qüLƒKOŻĖ¢]»é;Č·iFÆ©ӏ:”é¾UŪøņéR‡%9ūŅ]{ gYrøe Ž}+&öąCsŗL#µIŖjK(˜™ńŒž•F{˜Īō?3sŽÕā*|«Ž>’FՑ2Ŗ]ĤČvڐ)NÄqš±lmtŪ} åŹpO­b,Æ-Ū|Ķ“œā¢Īśl_5ō[›wS}©BD|µQČ隔{®ĘQŹńĒz·¤¶Čåg€øµJīVżŁ=(R¹jo}M [–Ā,u®J¾óW®ī23é\”™At9qHę%SeķŌV2¦›:\łV¦žŖ®nd<äqQéҐ" ķ8Ę=*Ŗ\Čāģ$é“õ­M H7K,ųmą7sU>d¬Ā¶÷L=Jį »‘„ÉfR ĮY˜³rr{šéµø¢žč³Ŗ¦ć‘X:•°WĢd;Šź§SŻIœuotZŃįV_1˜©ę·ģ-H?t7ƒÉ®wFPĄī$ćžk¤Šfwó I| ‹Õ•HŻŲÕ©[SRIÖéü½ƒo¹­FÓĶ»łä‘]Ĩʼn#~ó‚}jž“ˆ-š (Q»5­–vG=ZWW9KĖX£€ ^ʰµ&X•¶9ć'#ҵu÷ß]Ć ČĒJēä;PŽNźļŒ›lā½Ż‘Ż|?•n4ÆŽ’®¤`šŁÖÄ„C ?xūW›é’\Į职7t®ĖĆŅ\Z“sLÆRzšā­NJM­EUSЇR(¹uø*Źų9ĒsQŽ—”åC!<ƒ[¶Öe”Ū»=ĮķU&‹l„!ļY{e±›¢āĢż5¶FAČ5«i LģK”Ąā±'cć‘ĶMevÖhŌ Ć©ĒJrƒjč¾wk2ē‰Ņvy„ŗv®>ą†8óśUūHe—ĶŽ_žzb³äįŒē¾+¦-YE‰źUŽ5]G ĘźŲ†Ń™7Ē“ŽEI§ŪĒ-ʹ胄nhŪYŻBmŲ§³©TŚžž¦XµĖF ygwÖŗ}.±ØW%Čł@ąę£†EŽI2¤śŚ³-f–ćÄQY¢ ą)&²r”‘“¼«©ŲźVWéjéƒ62C”α7,_°é]kŚNĶ˜åā ó2śÖUÓĄ„†/;X޵„'cZ“ā„i61”˜¾gēJIŃ܂°²“ĒŻĒfYWx1± ֆH^Ō2²–^ę“ē³ęhĪŃ·»¹BÖīŻ­>Ķpž[(į±Į§ĮxdE %GcY>'iEĘӝÕVŪdq©Įó:Ÿ„U“Õ!ŹM»3BīųĢņI  ę±/ €8qŌu©.Kq½±ŗ:Vn£Ļ)Ģ\zt­¢sņņ¢ä‘Ūļc—qĘNkiœ¬åwö§ėŃ\Åw—RSĪvÜŪ¹$»[ÅXÅÉ·vKrģåĪG•47.-ÕCuźj¼éĻĢpČŲW;HÜ֗]DŁu˜€pqŸj‡ķ“``1Ąę®Ėo“Wi¶’8½S‚ūJ®TóII-FćŌ–'›FŻĒó­ĘŹģuĻ#¬½fāÖC’0ŃNzֆœŽeØĘqQ9]\ŚŽŖĆõ“ĖņŪo#9ėśÖ@óa`p9ĘzÖĢńŸ64`FqZĆ×%’ćvõ5õeIrꊷņ4²-ĪzĄ©dž$R6ߎI5‘ĄõäƒM¹^wr9ŠŻ¾‚U4».é+5ĶšŒt<ŸzÜŗUK&ŒĘ¼»³ŠĘšĢŃCtŲ‚ĄēkX¼—Ģ"5Ź?žõŒÆ}“Q»Å”W–ĒcSY”iIePĢxłøÅe@Ŗ“yūżjŽŪäķ š””'vnĶkå˧q“Ļj–]ĖTį½ūÕXī?v_qvzQ$žTrFŖÜk7w£&i­ˆāILķžCīj°@'$ØaŒŽ„Ō‘9X՘XgŠÉ×u˜”n=ćŠj-õ)K”¼D &āĮŌœŽŚčÉ+ł!—kw¬ėu•!W'+ܞ“ZĪĖrDCqaŲÕ({K荛;i™ŚVgĮ994—7“}£lr@qƒŅ²õæ’Xä’5źFļŅÆ[Į,p X݉#vG©kAK–Śŗ}ü›B¶TAŪßėZÓÉåĄ7oɬ»Xqƒ°Uūp¾né‰(¾•Ī÷7§4ćb;@ģ䥞ów«Ž#ŃÖKf…ŃŻøl6HؼEqmš s¶Y†IöŖš%üvŅ”Y9ł•\£$”‘7R|¦6„mäqbŪ$œW`øiä$Hv±ĪJōmrH'½vŒ’3Ļ*ž,įdŠœe€8Ē”®Š5Z[T¢Ōµw8¹Žėģ"$ó‚kOAÅ¹,\MĄē[±Ķm%Ę÷ˆGē4ĖØÖK§h¤) /óJ©TčL!“›ØyZ:ą/šĢĆ©—{«‰”ŲD™+€sÅV¼„uЧęØDķŖ@b€Ō„Պ\­–41žFӃøÕ‰ęw·Ū½ˆ8ō¦yFTu#€éU™š(ŻHĀ’J:Jö°4čHLnģEh[°1"Ŗ…+"ĶUļC‚ćšŅ£Ū“†ĄéM«os~ÖŻV2 ĄĒā³õ‘_ ‚q’}蓞{˜öŒ f§³(8Ü:į…evž§JwVfT1“‘÷GÆZ†žaį7rO5”|@*ĄöĒéXͧK5ū|Ų‘“ZĘĻā&wHhĖ&Įņ“ŠŽµ<Ŗ±Ā¬¤īĘ «V¶mÖŚ¬Œt&¬\Śż§nšc@9QĮ¦Śčgͦ§<®¾smgÉė“Q^m?"32~µ½s¦ŪĀžf]»užt£Ҥ»ŠdRƒ!V­=¤‰¾–ޤZ/üƒŹg€¼PL² •ŽqĀÆZDČJŖd`ŌĮf Ł#Eg'i2¢®V°}¬Å˜Ŗķ9Ås:£'Ść'“ŒŠź|Ai$–nŠ+FņS\ĄŒ Į<ē'>µ­9[QŌRŁˆ€'$ž‚·`‰c·.ŁŽö5”ØŒgҵģņéÉ`8¬ź¶Ķ)Ē£#…$ūKʜjČyėSŚ/™x,|Ü`×Qi ŹŹ„PŻŽÕĻ*‰#”A%s™·Œ°$\ æ„Īe&,‘±NOæjėōĖ :Ų½Ģ"ą±ąž1Xw‘næ&%ĀrO*c+źg;[rk;+±˶ßĖuż8fį8_+Ł­ä&O I*ȑÜ'Ȁń‘\ōˆÖVålŒń“ēü÷Ŗœn·%ŽźČ§āP°źBHŁź*ĢK2ČĶ•ķҧÕ%YÖ<jhܱ¼öØQåܕw«3R–Ü @ON:V¬v鏗 \ KxN¬Iąt=ėJxEʝätŻ×kfƕŚĘśļ›åĻ88ĪsYWń…‰-ęĄ=Ån_isٲŹ|ÉŒ„V¼UŹ’q„4ģ·ŠjėFŹžO:„u=«”ÕaŹ•ÉĻnk ŃV(Ć(*ąõ•³`d3ańÉõؔµ½Č³µŒ+ė6ūVåÜ3Ū8¢(Jå±Į·u(ć ņn,™sžX۬ޠdšøĖĢnČpU6‰ŽgÆlÖ÷…£†=-īT(”6žĆڰķ÷a» TT·7YińDOĖ8'Ž’äVuSjɖ›ęLķtČb»<ʆXaĪīµĆĢć-Jtn›¾¦ ź-4÷t…dœ7˟½jƦ_\\n- ;c6ŠéüIo0Ėv”¼²~QŒę¹;ē[ł<øœy½ńÅkßCNK|ld¢k½®^{ó[ČcW[X£;wÆGN„!iHmĪŲlÖęŸhҦw,}ћŒŅ44‘ÉüBs#Å÷i\|¤ōŪé\ˆ-šŁaåCēŌW¢xØŲÉ:Å&ØŚ®zęµ»6¹·XŪq 3ō5„'¢ŠęÄEKus1bą‚µ,Łe£ˆ†*>š5™$oY%r‚= ­M*8”Ź|ŒĒĻZÖIt"’Z”;K‰Xē½u~·žY£pńøÉö®rę6óюcČö®“ĆvóC¹ŚK*śRæFi¾ØõOÜ-²Ī’“$Ø6)ö–DnHč«Zž¼ÅƘ¬L@~ĒŚ°~!j‘\krAk, pHėųÖ޶Hŗ“TތāüK·ģnchĈ1óœfÆųĮķ –ę锻ŽkO‚ŻKyS}Ł˃ֺˆģ’ļ Tnj†ć’UܱQHWZ;œ‡ˆLpÆžŅ¹aŠg„[šJK. ÷2±’5…ĘEdų{Œc“œŠŁšē°•c-…Ą]¤ņ}+F­Ó»’]‡Å—’M„G:Ę~Bu®3żhŚC…9ßčk¾¼ tø-v–˜üUĖė6šĆ#ŖGœ)ćėK[T\Žņ1¤–¹y(v€­ZÓęx§ā-xÜk#S$*ˆƒ©ćq"¤²fņv«döąÕĻc(/i¢gØxzņ;eø'͘üć«É*Üj/vĀFiŽ@ģ sś¬!ĪųXĒžŲ«÷Ś„6ÖaÕĄÜ2¬zW mJÖ;dš#‰°ć}²$µ³ĄZŃ j£o–‡oÅrŚ~„m&›öƒ:–cžEb\j(gr&\&“t˜é֕5h²„:,ę!ŹFMŻkGLšäŒĢƒčk·‘AgrG\T3éāŻqŗEŪļ_hŖĘNɟžĪĪ7hȷК8štę®išQźHĒxÉÅU½ŗķ™eł 黵YÓ|Q¦Ä<³8^qКšŖIZĮFQ–©›ŠŚĻ<¬=ęž!ŌŲõ³ƒ¢«ZÖxA:øĒU8¬ķBź?¼¼ƒÜ¾1Q̊öœÆŽ4µd’ö‹ŌĻ}‚ŖŪ=…Čø•ČīM`^\č.éuBĒŠ6ģÖ«ā-.&’GŽ[ŒĀ®4ī¬ŁLKŽŚ®„ƳK[ygĀšĢ0+ž›Äz¬re·“ ō\ę¹é#,3vĄcū¢Ÿ?Œ5‰¤VgŒ’:‘\¤ˆŖ£ ŖqLw· ø§QZ‘ķdōÜźŪÄŗƒER} .µ«0Ź\KŒvcŠää3`|›O­9.ē°ĢĄU>ȅ)'vt’Św³ ²Ż0oRqTo㼐ެƒ·ĶY±\JķÜgø­:٤†=0š“dū-Q‘%µĘā[ߞõ41Ļ#ļg”9®„XKČɧnÖÖ8Gļ‚œõn1kbį' .ch÷7 ˆÕäēµ¢L“Ó!<9沂F_³ēž”±NƒXŅT¶ųgV=>lÖjŗ”¹Ŗš_i°ók§o@٬ ŪIR"†SŽżėƇZҶį-ŁN9mäęˆu›%ę&lõ¢œRŌÅÅ£‡xäL "qž™ĶÕ_Ø+]»źŗc’^)’tTfēLƒ2.G ©s@後āŪN}„”fjeq•Ā0šōLŁ· ć<żŚÆ$֜lŒäQ£čĶ%¹Č[iÓe­h®”æ(“å'¹­Ų¦'åO=±K4l3ä¶Ģu"…“E$­~…¼:€+-ÜJ#Ægį—dĻŚįlŒä‘łU+›p©“–Lņ0*³ļ‹'8>•n.ĀMwŠÕøŠbˆa儜 é%Pxœ+:?>GĘHõ«ÖIq $$ö©si±<‰õ%ŠĘO3ÅĄļŚ„žŅŹ0O–Ł9éZ–—ĘHDlŲ8Ē5;iĻsP+äcƒĶ’ź›Ż¶’Z#·;ćmj%ä+Ś¢AŲ÷Ø„šė–†Pv]¬`‰ń‹…Ś; nb k–Ņeć5»Ø&ÜēżŚ±z|‰ó Vų¬½¤ŒĒē:sSCi4„nŹägšJVŻĮ5ī¢į|$6×p?Ū⬒mXŖŖµŖ£ØzÆ™€*€„ńēšŠēƓ“ˆłģę«•>¤Ź„H­“5-õŻ( Āøną Ҳ×-Xżå®B_ źXżŚcŽøÅ5<7©«Ŗ—xóŪ4„ÜqØŽ’Guqv³F6ˆO_” ¢ŚŒ1Ģ vś UM7ĀŚ…[ķŌ3V„^<+]¢ää–ę„[f4œuLÉŌY3QuS Xŗcŗ1Å\²ńCŪd-’æłƒ5“£i^"V!ÜG]ÕÜhz^­*ęīŽĢ)`Č2iT’Ł«Ņm+ÅÜ̇ĘN€$G#ŖPŽŻÜŽØA§¤ŖFA Šļl|9jŠȳ|īŽ miÖ«ڰCØĄ)X©ŪH³oc¬·<ēƖ/žÉŲÄc!?„v:l:™·żŁ c WYdĪH_.7ĄļZ‚(|®wp*%VŪ‡°qW[•ž¤ÜÄ{ä֔:]Ō°‚ņ¤lxį:ÓµQmnV?!Ųõ%{Uk’é–q/›rŃ1ĮMŌ„ĪÕŅ'J)¹±n<;4ĶņÜ(uqU[Ć·I÷®É?t ‰>"h±DNłd#īį@ĻįXšĻÅU€“€“ßxéI:²÷lL–Ÿ¼Ūłv›„,.Ękwžjģś…½ U[)7c ą Wž'Åp©=ŗƒŒeNŅjIüu¦Ģæ5­É’u³N1æĘ‹«9ņ§JHļ¬õH§<ā,ś°_\Ōģąo™ācŽAaŠó«Ķ[Ćz“4_ĀŻ1øT-§é’¶‚łŲōÜĒ„ipęќõgW–Ķ+żē^|Y”ĄÄ°IŪĖPECŽ4Y IÓÄéŒ×#/…„ Ųķ'ūƳ®¼3vą‰eŪōļZūÉ{¬!^¬U§Šģ5iL Ƈ+Ó f[ųŃ”$„ŗ±= jįµ ŽBŪ—qć ÆTVz¦U[s¢ž‚›£īŁ+£“ŪĪU;3ŠĘ2ʜÅlyŻßóØGŒN7ļn˜#ŠåģōāūX—o@kF=ę<QOBŻŖuå7”ÆļšskÓ]Ø $)“ŌńĘ£‹PÕ”Ÿ)Ø  š"©’aBĢ _DŒĒ³V"Ó|œ'šĻƒ‚zēŽ“³ų]ŽW£ē[6‘ÆæWœÆ8ó©ę½Žź?½$8<ĶsM„Ü8& ļĄ ÖØŻŲź1ņEŌCÄ)F•ŸŗĪŠ•e5ļ/ĄģČ_ ćŅb–+½vÖ@įą–>˜u®SJ³øøĀŹ­†ćpSšŪ·šūFĮ—Pø\Œķ`OįS9GµĒMVi„{zį|¹ķd`°nsV"Ņc»ŅöH7Œį¤'giŗ“h7Š īPƒ[xL 5M ~n+>km§ātF3·¾ÆoGį׋,u.; “łÖ}žf¬CŲ«8ć!1łā¦@ŗ—ŹÕ`ē#sqWæ³ļpn"‘½KÓS’ėpöiźćł¬ŗ4fMŃ@@>Œj[8į²9xé“Ö·o,µ%‹trDøō’³ÖĘāV?k”3?ZÕ4ō9ꓚĘņĀY 5ŗ)sĮj’mÖķ÷+<^Œ¬)#Ń“µ>d³4>¤7z»ae£.LZ¤ē=³ŠœUĒõhTk›r<7HӕĻoZӔƨH3ČO\æVņx"sB9<'?•h„'© ”S»% dG’hŽJ†©§Ü]Ė0Śyȹ属ļ÷–Éėøž>•Ōé†Īŗ*øéŽ+*œ×Hč¢Ō ä¶6£,`ł~yĻ·f J‡Œ¦³īµ’O.&X#Ę3»‘UO³¹łŽę{†éĄ=*cÖÆRēļŽŠÓZÜūc‚Ćæ˜h-Óq$ŪcF|ąŠć-ōė;w&% ņK0±k§Lw]ė^ZtŲ&V~É)jģ »µģ›:½_Zµ…—njģZ6­<#v¢bä*ü©Ņj6¶öŁX¤ųFyŖÄrcĖ“¼²£h4¹ŖI^(# iŁ]²Åχ®āLi18ē®qT`Ņ%YOŚwN¾„šKķOU1ęIwģŲ§h“ė“©i£·@ĪCeŅI^LT„Ź–„óiŗRĘ7iČuČÉ'éQ6™¦0!,90?•O-ŻāĪGٌŒ‹uK§[K;»>W8y”U’[•qmirmŃm”Ś#WŌ¢“ŽŻj<²cTĄļ·MąOø'lI«¶6«®Ö•”&?e=¢Ģu ›ĘȲ»„Ė0ę­[ߋ{¤Œ šłŽ8®®+h£ ±&[Š’E@‘Ž ¹Š<JÖ5“ßbĆ]ŲųuŚņå”żč‰5vÕ£lƒ#ŒŽN1Y·a£LᔓŠ/JŽ' ZįI9ū¦±i3¦Ņ½šf½ÄPB„šęXųļ%e6£gČöVōĆ éIx„§k†*x ŲØāŠģķäÜŃÄŖzŒäÓN9]‘*Uo{$‹k©Z,/žÄóRDmīc޲n3’* `°¶ˆI Pœd Č©gŗ¶ūś,/qŽØ«ƒšĶ%eb›Ņņb\i4žm²™H3?JV“Y‰¼æģŲ†8Üóu¬›P@bV”m1¹=ź…ķž¢bg†ęõX „’.Oć[{5v‰X•²¹ÖŁ-óœN–qŠIżjÄ÷āĶ6IŪqÕ#ČĶyå¾³¬ —Ķœ”öāŗ’ėrģKYnGBį©9ĒWśŖĘKŻ–„Ÿķ­>@@ŸcŽĻņćóŖśüķlE“3Ż’½G"·V;č·żšÜ±ģɊ–ŅŲŪ¾bŽŽ5žīqłRƒ‚wü§RK]=CAø×‘’wkFē«] kq[[ƒ|ŃÅ ą•$ŠÓ–;’å–ULó€+8Zv|ÕF-Ō2ę+G rnC‹© '©›qā›7ŖLdC‘Ÿ ’…>Oi fT— Ó;ųUū‡·€Æś,jņ@«ö ¦\ÄCĒõł3š—hŚč9*;ņĖS‹x­µQŗ ˜÷uŻ–® ŌtļŻĆo`ģ1’-­ķgOÓŌ~āŻĒ”ZāõSW[r›ŠėŒ”×/C‰ÅS}S:¶ųŖt oi/OݰŖĘ-N)D—Ö:‰—“u‡åš_–(ÆĆØą¦vžu©/ŠDĶåŽO‚Eˆ’§;+¹8„'vY[Ļ6^-B9{f>jžqs¦9į9ģßÖ¹«MFņŠ–K››ÓĶ]• NJG¾Eyt¬ų“øø‡®‡ ŠĻ¼šäJ$Hļ AĪʈŸŌW™ų{ĺƃ°-¾”4 }ƓŠōmĒ‘ŽŚ!6’E!2I¹ŖBtž8Żyń:Ŗš–ŻĢżs\™&D[9d†ÄdäÖGŒ|Mż‘į;ŻP£Ł-“,łš0O^õ·ćˆZįė«Ķ_żcg%Šõ•łcūXüońŽž5ūĶėYSQĮŪ:÷Ķi]>lĻĢG‘5ĪģŽoIp“2Ŗäźk“³±ŃJ ­LŁābć séX^!œ#l䑩ÖĪ­#‹”˜9#Ö¹½w%ŻĘ ž;zÖō’ŗg4¤ģāĪoX;Ų€øŻTß?7^Ā“n¤Ż'S‘QnłČéĒÖ»TŽHÓMŻ mł ©ükRĀŅT˜įńžā“Ɓ¤g|žwsZŗ¬N„L`ņ}x®yÕÖŃ;#Ihj‹‡·³eW\`rk*×PO“–u-Ž0ŻźKU2.Y˜(ėÖÆiÖ(÷*Z?“®k‰ņ«¶uņÉŚÄz„±ŗd·Œ!aŚØ[Ų˜Ü–Ā~cŅ“µėńĄ‚ ĘØ~ņ÷¬m@É#W‘•ŗÖŌäłNWrūXo…ŁgCpEqś½¹‚ų¢ø8n¾•Ń.¢ŃCäÄĆ8Ę6Õ·OŚ$p‰­axźĢēN/XŪ¤†±¶²õ©a¼{s°9ó©õż1I Ŗ c’EOäÅ8ĘĒ$ŠWWŌŅ4“2īīn¤vŲ'š³¢VVfPżzóVa“ˆ]łd»dv§IlRīP0©Ī6H•‡”^‡Øč²2ųN'wbĪ„`×#«ł³k&6Ę­Ōū×e„•—IUÄLzÖ~ÆfžC°‚9#ØēŠ®£+3·BZ8lrÓķµÜ¬ą•ÉąÓ,5b#SĮ=G„`ų¦śXµFGRzqY&źv“~݃¶+Óś½ćĢ÷<ˆVw±ÜI7𬪰q“ްuł®į¹AUĻ š_ ܋±į— žõ¹udGśõ`Ŗ>VÅJ’‹å™¤£}HÅŅ/'Ž@.‡#ę“f»/ĖĢl§5R+’G&FpOšt±}ž=®ˆ5RQZ£H)5Ŗ!Ō|«»6…”+ƒ€Mq—ÖĶŁLƒ·”®ŹŚ6Wy@ū¾‚™­[ZKnÆ“ļq‚WÖŖ.ĖDDįÕ=ó·–`ķØ¢Ā—©©µTņī ܃š09ēg½mŠĒmKÅĄ_˜ąb”›*¹SČāš]l†ĒSŽQå €üƒG4(YŸ6…kmÅ·6ry®’ ×[ĘÕ@£oSļXŃ®@ĒZ»o˜Č9=ńéS6ž…CŻ'K¹üĄģH#­VžVøŗgldšqC#¤d¢>ʛ ŗÅJŸzžĮwÜGH¹ĢŠā”Ōāf³Ä'œõ”ćlķ2Čø`NNkjŅŚ3 ī)sŁźO"jķœ•­„ɔ”®zc=+ ²‰šßir1É=jĶĢ!PĘ;óU-In»×§5¤¦ä“-5kt$w <˜ČP{–¬»¦ xцoŒ•éšŃń*ZF.Ż Ģŗ]„ŪęÖ¢)ģ·Ų½”2KøČTÕčī<ķŪ²Ŗæ*ę³ō ż¦‚RĖuŪŲUMc}]ü‰F>ļ5œŪnĶ5x®B]cĪk/ÜxĒ­bhq¬—r,įՉćė]^š­p¤ķäžõemįm,h…ÉÉ5š«Ėx„iZ\Ģ…ģ"ŁP]Bs†¤KKX™@*ŒĆ9ō©->HǬNMUø‘^Gēw<}*c&Õ®ihܽ5²“Óǐ‰Ė…/ņ-g]Nń[ćyܤ{T1]Ž2˜Ü…Aßn ]®ˆŠģn»ˆ`s,Ŗ3ļƒP\j¶°č¦#y/ē€+—¾Ō%iHV3œöü* KřĄEgvāŖv»DAŚķ³HÜܼ™/n•«a#-£°Uަ²V_(ģqµ‡Ó./d71ƊBøŖÕģ\ö4XŃFŹ\żģÕc|e·0łIœą¶+:ųI7;¤lūŠ“Mņą·uÉf>½©ņ­ÅÉ«2ÜŽfp¹ŪŒÕ¦xžÄ@›®s\ž­,²…Db››nIÅ4±H¶’I–cœśŠ\½LÆwŹÉī]¤f É?xÆzŠŚŹmžb6;œśU›W0+m3IRkż“…N~V Ž„ŪųM%‘zIŒ[P;)äֳƝ„ÜŅm@ē€)¶R•øle‹ņ}jóŪ³`2õ§n]ɍ;īP³·fO”œF2MiŲķŪ“Œ1ÉėM¹ RˆH$ņj]=w¬§”©sŠŅTŌ—*%ŗo"6)즛5Ō­"yj6ƏZ¬ĢL˜-€8«0®–uŪÖ§K\tą”l[sø»zƒV¬¼²Kžˆ¬Ødž[½±E‘œg«3”ó2Ģ0V®ÖZ™Ļ™«DŁW·’Ł&vE ņ©Øüć:‚6¢ņ&‘l‡EøŻ’•-…•ŁÓA“„¾ī’*t’Ü˜Ż«$dŻÅŗ`ƒę÷G'bɅčséZwV¦+¶ū@h¤Ečxł»Õ[%É|0Vźr:Õ-|Ԋõw‘å¶ŠŌv¾Zʤ¶ą£ę5zų,‡<2œ cš£bbXdt$Õ+XÉł·SÅ5ŗ u˜øź1ŌVˆķ`(axäźIÓųZīŚĘv.–S‚jĘ¢Ö7–Œ›‡šĒ9fš§MY\nQix”QŌOŅ®DłmŠN[ŠŃ“GQu/ĪUqņą÷«:—!ÕaŽA·9'õ¢mÓmčČ4%U d ž5ßCŖI•<ÄläŒńޟį-.Õ•ZY%Ū»9Ą5ĘŲMŌFŸhŁXādˆŁĖV-^VŽåTmĀ׳fŅüyOwÅĮ%N1ķXqµ§ö€Ž9A pYQ\օ‘Č2`°ä–Ęj…ų6śƒ*¹$· [5 s;3+¹%tt*½WæA ņŌēh8Ø5)s„Ä%-–9ėĄ¬Ķ6{õ. ,zµiĮm%ĢÅI&(ÉSķJŹ)$nÆvS‚™®åź+]-|„ ®¤Éõ«V‹ Ę`Ž"qŸėOžŻQRÄć’is¶Įʟ鋦Ą“IŠē{«Z¬c įƒ–?ĀjXɲŽ@¦3Q^4r¼l¹fĘn)J«zģö³+Üjģ¦ŒIę¤dTķUžŅb–ÜmÜJ²¾Ę“ͰM…—5¼ÕSOr¢xw/8Čćҳ᳆²Į<ŒWM§Żé’Łb7’]ēŒ_zŚ’Čd¦­©‰ »Ć“3‚Ģ9QPxØ*Ś ‘v•ū¤õ­+Ų”ó3¾a#.k7\u6!Kµ¹µ&’w ¹-Xß 彍a;Qy`{Šō+1}ö¢AE@ ƒŅøļ“Ō£i(ąŽŁ®ĆW) ט“6e_”ąŠóėJõ-ŠéVQ³C|Exd·4ß¼Ą #5BŹĶÖ8Ą}ĢćŸc’ꨭ$Š[ŻŅ YĄ8ė[ČpŖ¾d‡ śQnUt\ٽ [Å‚ņHŖ%VP:Ć“½¹šī9Rc…Lb0~\UψsĪ¢ŽÉX34hŪ‡Æ„ghS[ʞT„—-Č^¹­!&•ŽäTšnČĢŗ·’ßW!÷lÜJŽĀŗżÖ¶2M†3ƒ»½sž#µĒ̱±ÜLV–›-åĶšqåÅ <(ėŠŽrMY3.GĘ?ċq*Äb,1ø.5ČŗˆēUrHŹ»’ŗŽ_$1Ė+–\õ¬RŁ-ŁĘCČFFJ„½Ö\ć}VĘe¤&źī;xCÜ{’õ«oS³ŽŅāŚK‹–¾ö£ĮÉ*ź–²DFä`2: õ«>'šKO\ł»f8'œséQ'yrŠ:k5cXN–z *9y ©ģ+““ó. ’¼l¤7śÖ–dII—o–Üå©5Ÿ+J’Kd®vē’zÖp™SNzßC3OvKŲg›2FŸ0Ų9“Q¹Œ,†+r¼ś~?Jćmīš1••ß¹^ƒŅ“t-^/³EĘĄżĀ¹«žŠčt×3ä“+ėń}ŽžåQslFŹÜb­ųķ¼8¢Ķ r”ÜŲę³õÕ(DUCIæž*•öč$;d,„d9¬›Ń\sMI«vśÜƒ .ö‘†2„ {ēŻõbOēšČ¶bźņ>Ēd®Ņ‘bĒ©N:źmG]§FŠĀņ ɍĆ'ėõ¢ēL²µ·ūNō2°ĀóŠÕm!Œ’ģwÆU4—d$ΧēF= ¬ł¤ŽēLčB×cZ?;I?ŽéšÉÕn¢::Ś»JvĶTŌžH“hw1œē®+Y ”u õ­į½Īj“ŠZæŌžĀžh;H=3Xkŗ<ł²sĻZŚXMÓģE żˆm|9zT‹ČĶvFQKS“ٹjųüaÆ7 |ŽŌ“ėŗÕĒßŗ,¬=@®É)'’æJ]ņmÆ}B d|3©.[IEūK!ĢŅŹIėóÖs¼ä9éɬ—.—aŸzj©ąå³õ­yŽWkčjż®u@"ø‘@< Õ{»«–RWlóÖ¢‹%p95*«’u²(±jżJ›Ÿw%‰© päu©°£Ŗć>“Ęņóč{Pö7BxŚ<(R*ō,Įqø05>÷Ž=*hÜ'ėI>‚‘­ CŒ€ [†8ˆʹļšÅŒIœdƒėRżÉüźŪ3Z3fKpņäĪ?½Tä2Fäą{ÕB̤m$RłĪG,wŽ—L™z•8Ød/ ¹>Ā£Ėoł¹ČķR¢Œó wІ¬'žäa‹ķRÄQ掄‚Ķä?)&“4żMłaÖ§M$ÕŁžĀ@Ÿ&N{ŠŒˆŪp.„zWW’Ą>ą?ļRÜŪÄќ! ŽĒ5¢†š™IŪfrŃ^ŽŸ“Jsֆ½¹‘±$„äē­^½³mĒ €=j ±˜ō. Ęj¤žŒ}¼¤ńøžuj+y$ł”ätŖbĪą0*ųU»Ayž!J–ŸC¢œ—SJĘŌ#łÅiŪXC)Ūę ČūŁÅfZM#¾ū֌)ĪĘy<āˆź9Żj‹- Bq¶ź#žrŸågȹY[سĶ1¬<Å]…Ā‘Œę–pᢹuĻ=Å]Œy¤ž į[Ųš“B%‰zž)ålžL˜¤OLšAa©¤d ׿zHģī·0^ļ”§.–¹ve"Ų&󎳮“T‘Į (QÓ­O-‘ d•#Šõ©aó£]­$q×5Vv%4ōe'²»+óĻl¶j¼Ö²Ę‡u¼ī+f%¤ÜH?ÕČ4ł„’Sr͟\šJJ;‰C™Z'*‘ÜoĀ" #«UŪ:RŚį裮‚oj&0FŸ|ˆh·©2[ɑÜsTću£É'ØĖ;A]²n8ä‘Zv’ÜF6£§Ŗ0yš©>S qĶ\³¹Ī”rzT88謅Kģh[“Žß<¤zœÕč§²·Uóž7 ÷³Ö«iļa’-e^ V½¼:LŲņ£ŽFaüFŸ2ź7äA!Ń&ą:ĘHąƒŠž >ĮĄņå2q×Ķ§Æ‡­ī›å ‘ü'4—Ž8•<¤öĘo„ĢÆĖļ5a·±Ć–ŠÄ g9Øž×ØGŪÄO©ŖšhŚœ‡Ź‘˜öÉĶkéń^ĪV+«yĘ7Š%¦›r\Ńwõ9ŪŻ_UC—?:ŖŗŻńū:”õ®Éü=6āńŻ0 Ųž•$~»+ņŻĮŁ”sIĖK0—ÄĪėÄĀ=Ąw Q§Š5-£Ķ‡óÅwoįķH‚TY²öĮėRÅįY® żüF@ĘGJ|ŹŚū£_ʇ&§=V·,<[tšb†T ¤`ā­źžœ üŸJ·£xU•JH¬§„{šŠ©ķn­±Ÿ’ “˜-§K=ŌäRÅyiq?ü{œ{® z&Ÿį»h-BMnŽųź)­ Z€|ذäń“Õӗf)ØĒKLq!Fņ­0:t4ǵ 1öf# k¾µÓŒ'$?§5­o˜ČćÜŚźe'}bŸŽy½œå>KVLś”«0é3ƒ†Ø#Ī½!įxn Z_°yøX%Ćc 9£ $õ9Ćk1ßq4PÆ¢ÆJ؋övó'[X›Õœ ÆŖųW–VĻ)9čI„ų[Ub7¼dcIĶCn:Ü“äžĻßsELµOō}g=öµ2-sCŽL-äģ”Š»kąČBī™-ÉĒšŽ*Hü-¦+aķācž˜ĄØŒ¢ś„ć.k“>×VÓ.Ō¤Nķļē[:tq!|Œ|ĶČŖ¶ŗ.g)Lœ. ©¦[x 2ģ»pæĀƒ&—3½‘§,¼÷"Õ¬Cœ¢˜Čē(Ų&”‚ĀO,„ŽåŪłä84E«5Ī+ȕ8ó“§ …ŖÉq6ĀyÆ?‘”¹=,:N–²rÓ¹6ouX•cNz.r+F„›“Ņø/xś$”„¼`ށ˜k›»ńĘ c*'X÷thT$ž-x˜}‹³×ļ.,#•U„ø±ÕH©\jz4p0“QøBr8zš½KÄ“6^v,Oj‚ÖFŗm­+·<©'¢”Ō•Šœ•­”ꚵęžµ¶Øósšäõɦ‘Ūl‘J§°LŸĪ±`Ó܌Ä1“Š}½³†;·/Ҷƒ¶—8źÅKb&CĄxÜ`Qq¦Ć"·(­żĆ޵”µ·)ģĒŠwöt’EŽ“ä–įé±Ķ=˜ū¬ŠBń•Ø#³E8GŚ=ó]SųReȑP÷ꘜ$Q©7m٤#{R¹ļK–Ū«›zEܹ'‹„‚ćņH殉§^«A'ūéҲ„‚ĪEó-–‘œæ•2Żm±¶āPŽŒ1ƒYøÅģ_“›VmüĶų|y}*įķą8ĮAśT×õµŻ°ŹÜ[ĖŲ ćė\ķĪ› {y@$}Ņ9ŖŃ‡†EF1NĪ:řJ|ė’¦¬Ō»Õ EtģŲćvA56ŸāUiū<éŽÆZ¦Æa"ŸÜ`ćų›ŠE€¶Ś8¶tąbœ£+±ŃRŽ Øuūy²×Z}ŗ>1ŗ!ŒS—Vxß̳fŒc£&*=DŽķ6É4Q?«6?J–÷ĆSŪäĆt’:ā³N+ŻęūĶeJv絑rĆÅwŠøf’Ŗ’ZÓ’„²īę=†+ičyĪ+”H®-]•ķŚ_— fÖ`QZyg,FkOf–¶Ö%(ņßC”ŸX˜a’‡±Wā©Żx“V¾I€\ō Ö§Ó4&éĪŌL$ö ].‘įB w’h$ą)==źeV {ʱĆՒ\Cö£?\óżŠ3P¼³“¬āņåČäuėų×§IįM>Ż8;qW4ų“K8€ks#ü`ŸhÜnµEĆ«ē™ēš.µ{{ĄWŪĒνkjŪ\’eŪ-°Ü~lÄÄVī««ŲE…‹F‰×=vÅ]Ńn4ū…+öXķÜóĄēéS+-Z4£+ŚW·‘™a×°łČ«žĢHŖš¤RŪČD“Ś)Ē6k ¼Ó5 ģlŻU#'š·e„©‹v¤2zzRöÜŗŽž‚ö<ńŃY®ē—jŗ‹Ć1|īąPÅĢń†)éӊō-oHšÖģ‹rd#w#^ŚćF“Ś‘ŪŹÄØ­Fćī£XeĪå)ķŲęü?¤^Hį^`SÉ5ŚXivń!˜Ķ)ĒDCŠÓŠu‹fP±Ś?Ž`+VņqpƒĖfˆA\Ņrz3Ѥ”{«WŌ«¦jzUŒŽD#¦GZ“PńŸ 9&CŽŖ“‘Z$‹‰€xT‹įŪ ĪčĮĄā¦ō﹤ŻF¬Ģ¦×YeRłƒÕĘ)šź÷ó\å-ĄČźµĆ©nnWšĻ¼±ÕR6Že1žK!Å]£-QŹ¢Ö÷ō-ÉØßGļ6`öT0ŽKtĮ>Ēx[¦ü¦²“JŌĮY<¹ÜóV’āqˆŅ`ņø¦£mQŖ«'ń#zn BŖ/C ¦¦–Éryū¢°‰Ō[ K‚Ē©ķ`ÕAg,æSI]lõf•ć©ŠÅ£Ł¢‚Ń0=rj¶¦ …q™}pĄtہU­,.„˜žUĒQ¼ā“āŃēOŸķ3×;ĶGõŌi—7“±ŹlTć8V9¬j)E\Ž›„‘ś“;٦ܹä*ńMѾi!Õ nÅh>›%ŹąÄ9źVSĶOo£¼HŪD‡¦ć!9¤ęœ7ŌףÉj‘rŚŽł•ńŸ›šę|^u†sö?&ŻW„t•š“ņķÄQ·Æ85ĢųŠ×[·“?h‚;„;£ĶkF)µ{3ݜUŃOHø×ŃŌĻ,F½vc5Æqāk[&Q~’śmā¼Śśīź&- E&{3~Užµ«Ū4 8?¼]Ćé]3ĮĘNķ¬m•Ó׊õķ;Ęŗ¤ ™šÄcżYĻē[0jŗmŌ¬[q=qŠń ¾¤„ZĀ+w<-H©­|+Æą+ólĶ““žMrĻ «FVõ5†2riJ ö˜n§QŃĀįNEV¾¼ h5 c#‚žµĀų7GńŒŽn¦Z1Ī 5ŽiŚ ¹€5є91VĒ>µƒŒc¬™Ś„9FŃüF5ÓŪÄ&fIO½S“ÄvębÓ;N‹“ZćA³²U•®dXמz6sBjµ }§Ī”¹Z•8éi\'Z1o•¤ĶĶ3_²¹“ŹŒ,7[ƒY^1ń&£¦ŸŲ²Ž”+#åOŃ/|9«ĀG–©.8vX~U»£iÖŃDT\4±Ÿ»¹³šŽj1—č͵© ķę7²ńž«))‡äķīŅ’*ŲŅü]©«»Ń[}ųå?Ż®¦ćAÓüāŅŖĒ'š­w iņ€°^G:—“­„Ö:Ӟ"+RKOh—ƒ}/Łå#…eĄėZŗE֕pĆģsG>ž•„“ĄŁŗ’9ĄZ£ų•ę=6ŚŌt u¬$×-6kӋ½D—”·Æk·¶ķåŪé³N«Įb  LŌmļ‰ŚŪĒqŽT§Jʳń=ā²Ēsb®¹ĮaŠŽ²“M»Q)F‰Ļ?+qJ¤RV³LŖRrīšū‡Ī׍jŃĮ ¦gĖ\æ«ö©>Óq­[ ąl'šō«I­ķÜłwKÉčZƽŅH^`z±"ŽĶ;«•WķZ|ÖhłÆĘ#Uµ“Ī„ß܌dOé\–£ā;ö*· ?Æ­o,ō×F&Ū5ĶŽiZhŗ*Śt2£wņĮ®ųcéJ:£Ģ©—VSŗ‘ó֍āKؘ"žĄćÕŲi^$ŌdŒ²Ķ&zˆäÉÆOŌ¼įÉ­LVłėŒ{ēµ|mūc|RŅ<«6‘ąéRėRˆęID›•?*Ś”i×NQŅĘ5jU”%Nzߦģ÷_xåō“Żqcspӝ€ž}kʼuūRhŚ–ŲĆüŠ)8?Zų{ā_Ä_xŖäk\¾¹P6ˆ·mUĄW =•Ōš3ŁųÉfbs\ó©F֊Ōōh`1•źJ˲;ŚÆāö·ń^šfó,¬sūØOē^?§”.ł0sÖ·,lb}ÅĪĶ«ĶVÖķbŽ5xČPG, ĮĶ_ēīIģzX\¾zbؘŽU ~Ląš¹tŃFĢ!Ü¢²ōÄąµ\æ]®Ą sÖ¼ŁjģUR\·f[+JģįøĻ5b8J¶īTv§Y¬ģöõ©µ[„tŽF6Œ “wŲi8ģcė)²lrÄąśÕ[=Ń0r1Ś·b‰/ķPt‘9 v؅œvņ2³É”ŽŠjzr½Ģ”n™“O;üß.ś¹5ŖŪZ*)Q#rHnÕNiĖŽå2Ø3Z(¾aS»p=ĶKŗ²fŠ‚’3£…a“vģ1õ<֕­³4BMÅW­3U³”*¼`‘ķKfĪm¼²[ŽzŃĶĶ¢T¹te}Bͽ ąrBŅ`I;–®‚Į6.yĪj;hAąf¢>f«EdE|bm0æĢnžÕ›ū4`s‚sƒ]æéŲ‡sJb,EćPć8 éZӕ£äe8{Ö.é×8“pČ 1ƒZMĮ{rØlqY6hĮpē>•9”‘¶1€;ƒQ;=‹SåŲź5Čam'|g9ē­pŗėm·;rXńķ[÷—ˆLnÜšsÖ¹éąHĪzžiį©É+ō2ŖÓ—ŗŠLæ/§ÓBķ*y«-†QļIœżŅ8®·.†i;ł—t{6Œśī®†b–ÕvrqX:ŗ¼ Ī29aZŃ„„Ļ–¤»œę¼ś’»iqšŃo-Żaa Ÿ›©ō­Å+[yLĆxĖwXĖ#€ØOø­- 'žbxŒ ĮĻJĀs|¶fń÷2ē²SĪ̹Œž¦²µX‹éĮ!bŽŻĮĒ×kqģ²d øæ\W;6åP…I8ąŽ•t¦ä®Cå“åG$–ķ Įžq×'5}£V¶Äˆ0zõ¬¶ DīęoZͽ%Ǝ9®Ļk}Ļģœ7*ŪĘÖņ¹UaŒŌl]$c» 9ČļRßɲD¢™},Ok¶5ÉaÉ“⯫äÖ©’ZL¦ä±,‡nĶY‡våLėYÖŹe*¹'<Öõ’@É…ŻĄäŠŠŽŪ ½MĶ?U{sJB‰ t­ŲnV{IcS‚ĆšāŠ)trHĒ k{HŗE”Ŗ’§!³Ū½pN•ß4N….uŹqž#ÓĆß3“„3gh’ėÖ@…—FćŒ×]āvęB¬’ĒŠ‚(a{”Ī£ ś×£ ņåW8gI^Ē&—Kmz€`H¼ {WC©ėWil¤žZɛM’āšČĄ9ÕĖĖfŖ˜Ü@Ļ'“”gk“>VžĘ¬0łöāHäe$gąU+ēeF…sœfč[¹WS 9«·Į&s.ÖQ'$zV|ŚŁģ[²Ņ$6%!VŽN Ŗš„Āāć’3Ó Æw†(°÷L,ńHŅ+^:žõ“Uµ1’¾—)ėVa-wg­s*É1Œƒ‘]Ģl°–Ų3Åcź–ķq)|*9ŖćSø„MZżL{X”ģs“€ C "ąē©ŽŽ, ąš’"‚Wįœć4ł›2æB֛§³&ę”)š©fµ1Äq''°ļQZ_U~ź“Ōšv§2ø8lä N/fl£īū£HTĒZŖ–a%Šæ×­Fr¶ĘR}ūUE2†cŒķ5*Ÿ™ Łjk…ó>H€  -«ÜB% Łą.sĶ%œ”` 9'ŒÓ øßć9¦šŲ§$‘KPūBHW;J«c,¬ŪŲ’9Ķ[ÕŪĢŌŽBß,œŽiņė“aBąö­ŠĘv—Q“M°¬@ņz Ž[9¤(Yš1ŒSmAk¢ī܃ӌ¶­DK:ł„‘"§ŽŖöZµÜ£m ʄØČĶYÕ`Łc©×#~}jÕ³nø1„S°ä°¬żuäHŪił8ĪS\ķ]Ėę[؆ P£­oŁÉ®‚UŠ“ņqŒņ+ŒŽęDµEBÉęõv՟f÷”p3Q8>£UԚāi$•ć$®N=(/¶ÜyļŠńsƒœnļT`»‘ŻŠīčM8ĘźČÅŌ²4ZQå…;¤,#I«LĻbżöĶeĻxń\„»·r)—M;øuUé+ofģ[––EI<Čā+ĪqŌµiųEQ®0ŚĖĪ@ē5Fö協‘‚n¹«>R%.ČŁŁ•ōĶT“åhĀ£©@—7"ČALž=iöA’sƒ³©÷ÅbŽ=Čf øOĖéõ¤ÓµW†ĪX™ ŠĒ Iɦ4Ū®m*±r÷—,×§wŹOqV“tYÄĶ`C÷j©i§\]ßĒ#1 ß­u7šTv¶eHÕ$\¾)Nq‰Pm]ÕŚż”ÕP• Ą"¬I“’HŻŁŽĪI­½;(įD‘[ćÖÆź–$…XpQ”tėŠ‰VŠ÷KT$öÜęķgGP|—Œrµ[Qˆ :ĘAÅu3ż’ÖÉį*Zfø5—t^};Ȑs÷ƒsō«Œćŗ ‘|¶zœęšnCŖ°j؃RU–0A,‡$c9§ŚiČ $°ĄsTŽK8&l(vĒŽ§6ž†p‹ŠŠŠÓ·ŽjģŹŖ°æl}ŚčćÓ;F ĮžlóŪÅĮ|ųe‰Xgó®®Ęųˤ)RŽlci=«’“d­Ųź£(?‹VgŁŲˆä›Ļe/Ģ>•Q‰•Ėķ+ž‚„×ož•\®Ö\’G&«ŲÜyÖĢP}pMTT­vœS“MEŠ}v8*q[Z>•l$ŗøŒ™*O TZq‰l’8ćd\‚[Ö­˜<ę%ņżŃėõ„'¦ŒĮŻ5ę&±ś(‚ÜŖŪļ$ąõükcĆz¼z>Ÿ ‡%IŽĖޱuČī­¼­Š6Ā«ėsÅ2ŚCæ/ž3På&’čƅŲn±wqwØĶ+"LŒIÜ+1!|³0e„kĒh¦Öi„,Ø$*æzĻŅę‘Cš[œg²ØŸŗ‡eŗ3uXg#ÄŁb1“ö÷«1‰a·S*£łƒ=;Ö¤0‰‰v;qĻ&²Æ®g1˜ĪS…dżŠ•=ngj,³2åœd75Ŗ4»’Yƒ ēž*ߑ¶'RC3䊩š$Ęü­Š%%;rJ©WŠ“"×q–/ٌ²™OŹ3UŸQ;§‡„tzżšŪ¼Ń@s,cĮĪEq—™[²qĘ2qō¬ŅēwF¶ÜQ~MLĘZLāR2~µ”{=É&I³õŻÉĻÖ¢…V5Žd\ćœ5&ŖŻAę†d“9ąā©+;²ļļé±y˜;YzJAŲ}ü·'ÖŖZHTóܚҲٿ;bxꔩ'{čjßSGĆvę{š€Żż8­»ųŚŚ³Ū*¹fä÷¬ŠĢHfBA=*ģZŒ‘iźÕ˜/śĀ9ØwdÅ_VU½øhī#ŚJc?Z± ¬öÄK.Ģ6ą¾µaūĀ_s“źjń‡÷Šäž‚¢oC¢RÜ]FICŖQ]8ŻÅ1#x­įwl$7åSź¼MŲpŖ/1œÆD c8ɬł“ŠÕĮ„©²n£’Żpßs®īƲ5½]"œł–<x+?\2Éj6Čѧū3\ģÅĢ” 3mīZ“§M?xä«[ģŲҼŗ¹ŗ›t²p <ćŅŗĻźv±ZIku2ŽŽż«‹°Œ™FzUūl†s ŒVӖ–2Šå|Ń7¼H°łˆńH@'+Tģn¢KōՊŸ›9Ŗč”­Źīn9 }·ŽgµJōFŽŅѝ^¶m’Ī $e%Ąėķ\„Ģ÷M#³8/•āµ5é]-Ōpż =q[ZbĄš\'; +ó8ŖkjÄéĒr›ŲŲG£Ēr²3]…ŚĄ¶W~ćWł K ¤gžzā©ėšä°Ćqnø"BHl“į—5ķō—7.E“|€ˆŅ_“.rę}ŽÆ]x­“hgå]Ó;}ūV·Ć鄺Óę’īOŻ lsWŒ^«¬P,‚)B¹éVī-m湓ż’+㔯GÆćXūM 'øŻę«©łrK<‘³\9 н3YPȶÖ2\œä÷ö¬ėXīššĆ9”ć;³“õ«Ņļ¶ņ·°ŲrŲ­l£”Ȕ·lѰƒķ¹™¤ŚHŽĆŌUļ¼÷WoĮWØØ|k3Å`dŪ’ÄWWį«x4ŃspܑłŒA’=؊nź%ØóY&§ēi7әcß"rŪū𤓽ÜR\2!9g“5 dÕu³3—93Ī;V%Ćy䅆ϗt­T,ÆŌ|ÆkčtV-öx<õĮb£h=½)ž"A#[É0Åԃ{gø­KˆhK,‘Ŗ#“PėóĮs~²ŗqRšź;*§Å=1aµ³kiJü”œ1äV’Z*mĘ÷ł Ńį„ŁD%ł€,k/U±š;£qnvĬ6ŸėK£_Ŗ*Å$r¹=ūzėõ©,Ć  „•Ö¦r喻N<Ń·SšÕ¢fž7w31$žkPܶPŲļŚ“.Ét?/<ōSUPÖ`§“ž“A9¶½ęc^Ü“v,„9ģ8«^½ŗŒ„ĘķąŒŸēP\D„A!‰Ę>•jĮ;ˆĢ`‘žŲ®‰[•¢i»I4ĪG‹:©fvŽĒ•·y¦…Üå‚ćęäžµCA'ķ›° æ³]ŗ£ū<4…Ÿ„y×÷’;ŌŚ‹hēćÓ>Ó«pLaXqšĀŌ4BN>•Ó6Ø7Č!Qx'¦+2ÓW{©£ŽŁ$śWBr‹Óc Ōą£y=F|<Š.…ŪJŠŹ~eœŸZļ’³!_•äŒŗšß7z«įó{¬÷F68*ø]ŽĘ¹©¤ŌL¬~ĶsÉ'„)UęÖēMūOĘœwčšĀ'cåRīeżå„ŹsŒ)āŗ ŒW*ĄĪģUy<Ū9óķB}“„)n®&Ÿk®6ĘŃddäÕłōĖp€†Ü䆨Ū10 żę5>’Ze1;y +6ŚŲ9(ż†Ą@$öĶC>dņĖE°ntńéÖ· C†õĪ*ÜvĘpˆQԜŠmmŠäę^ńĢŁųzŌ®B†Ē¶+N×N¶„b(N@äīā“.BĘøIcÖ©ÜźPĆ&ĘÜĢ:•^3Zs©"y¹tZˆŹĀcŒõ¤dyʊHė“Š›K¾²™q#2ŸöŽ*ĖMdØžTÉ'uXIU³°œ:ČɞĢ2ĒOQ€k8iį$żŽ–ĶĒ$ ꬟:™‚ą°²™“ŌĶ\ѼIb¾MĢ;†jēRV3§-bcȳƄ.“&@žą¬Ė†ÕQѬv“ČŹtÆE–śÉķĖyĒył±ŠŹmCM{Ŷf¦54ŌZzœ…»x§åŪo.ČŚø«āh¢ %ĆØēŠź—ÄZM³ģū{œ9žU«¦ų£KøjÜēŒOZ™TŠÕ­ TåQ^cĪmu;×p²Ć<ŻŠé“!RuH—#‘'ų×_ę‹!RÉ€ž¤ŠÆ©\xp8 o õ8”Īų§R¤¤M„©ž ė4R÷[Š·uld‰v•‰€ēžµNĻXŅ!P‘H‘ū€1Vg¾±‘7‹ˆxī^…+-GRi­ kŪk¤— +žĆsI 7 pe½b#Ģ«“jzb0o€øźr(֕nó ŸUĶ[Õhd¤“»żF;ŽĀĖy@ĘY¹«Ś=ŻjĄzĢiIņÅ)ūʒóÅØēżF~õ'«4jźJ ėS­†ņåČNÜśØ¦Ž™£ŚöżĪ•ĄKā+ł‰Dœ&xEdj6:¦£!-!OBߏˆÓKfdń{£Öl'FNnVcŒš1‘LŌ5M6Ū-3¤dzœWši.„ją-üѶ9ĖńZĆD2×W)&z’*#{o"ē;„ģŚæ™Šæˆ“W ‰£'·$ÕėilXHZåÓĀ1KėH܅ē!5<>ŌąŚb¶ßĒ_,UJ’kIkrŚ6Ōīˆ“É!_.čŽr„T7#·Aˆ&b8Ļ­sšhZŪƊ(ŽÅ_°š®£"āęśĒ¢Ø4 £fĮūYj†ÜxÅ CęGÜąüšÅÕ¼qpĮmaüC-]#ųgH·K›…™”ņ09«6sxj  Ku ó3T¹© óĻIHćįńÆ2ƙ&ą;l„¹ńؐ:¢Ü1 ć‚vŚÖmž¦0Ts•U¬[ļi¶­ b{”œ`Æ{;KŻMŒ·ž¤æ<ņBž„‘UēŅ.Ō{“/¼s]÷‰mŸ>RĮģXUńDiž³ģAW$·C‹Š\¶·āc¤Y643c©!jż„v*Ū®-܁иÅZøń„¢®Ź>›qXŚ·‰mÆb ؈Xwך§Īŗ™Yƅ]šĘūF•¬CvČōŖŅ6”ŹM²I>‹X)©Ą"ĘJÆ^ÕeļģŲy>trŸ\bŽtŗ‚‹ž©mēcNŹį£•|¹¦zƒZŸŚ󰓹®}BEr1’GzŖuŅdĘĄwĻųŠödß»±é6~ ³†oųņŻ‘ŌÕ“ń–ŁJŽ9ÜÜ ņØb•#©Ķ2KŁ\ĒŽ zT8'«7U¦—+G·[ų½&m20ńS OAŗƒmŌn§?­xm„ģ‹0ķyÅoŁjŠ1 Šźß^*9¬ģÆņ4³”odżNēRŅ|>Īd·—ŹĻAĻZ tK¤%WlwžµoveįšėVmķµGqöes»œŠŁT•·8c‡jnź×-ŻųV@ā,ƒėÅ%¶‘y įdŒŌ5lh «ŪŹ<ō¹pH®”ayą Ź„ńüKŠ•Q?ˆźś“¢½ßÄęl4ĖiP$ņylGŽ %ׂC©ho÷÷rŁ®49ep|°øčOOĀÆA¢NARä`żåb*\ķ³6ö2œoĖcĶ®ü'«ÄHCj~į-nY~såĒģŲ5ź1é7`ü·3†ūõ+é× q|éČĮČ4M,‡O g©ĄŁų*L†øŌšpK6kjĆB³“|.Øe ’ė!ŅYŠ™®’>ԃDµ’L \;)ėY󮦎ÉĒH£)|˜Bįa~1ŠPĘŧÄßīœWAkįҤyweIõJŅÓtv…Éi£—œr¢’­³.Xyµļwsk§4”–Ö(Į=*ķµÄ¶qce“ģ1^˜ŗe«6Ś"矸*ż¦9G•ć JXøµŖ"IFvR²<ĆIÕ5K‚bžĢʧ».*å熧½Uu»xÉŚ é^GīĘß³>aUž2 'ŠĪ‡}46ž8ūŚž[qąĶZ9“eӔ햭ŻFø“LĻv»”÷"ŗf–åf$BņBŲ¦I{4dyŗTÆ»@ŠŚsęV"(ĆŽ[ł‘ŚĢ§å&I1Ōą “Q±µ½·Ūŗhl5K¢eāÖxż¤ĶW—Lšź}Ń\ŪĘ6‘XFVz»;µn[˜^ó&VūSžqV¢Ņl-"ÄņgoV¬Ś-ž6‹Łé÷j¤¾’Vg}FV'Ÿ˜b­ÕRŻ‘ S†‘‰Z Ų¼‘’>š\Yļō÷ -56FąĖÖ“lü>öČĶ Ŗ£9=źüz ¾87Šć4X­UŹöK±ÅßO¬’’eæ'*GOĘŖŪj>,Žä÷™q^€dŅąø“•šz¢ńT5YąĢ±Ÿ™qU nŽyB¬āīżū@ænšXŽ»ÅlN.Œy·æ‚rG-y¶”at×<”ĒĶĶkč~ØŲ[Ė;ļ=*^CŽ‹ūĶ£‰•EĖ%oC¤jŹYH }ÓÉīf_õ± lsÖ­Yč× {ēLŒą·z°–— vJŠĶzņ:Ļ^źß/ų'D£Ķ¾fE¦±›ĖxZCž¹­Če{ˆ· žįŠ$³²‰U’+e+ŌķŖ7śŻ„’_§#Š®e-c¹<«–c.lüMųŠhZ#Ųc&®„†¤ö¹žīXį²+>ĖĘP®V+a*c¬rŪŅuĮs:ćL•Y²+µīŃTh&œ`ĢIt}Ni6„ų—š:«wįmQŪ-3GŽįN z4 ŻŃķF~p*I—Qd2Ø=[‘WSģKĀ+īyœ~ń$0Ÿ³ßJGb §iś‰d”ĒqŖ»©ž#ė^Ÿ§Ēq“\£)äńT5-RĪŽįħ²•>ŚOh—*‚W•×co ĶnŹf¹3•¬Xé±+āI$“=¶Ś›Q²¹`#ødĄĘõ­]6 C!„ŒĆ£SÆhūڱң;ßdeŁé4é²kX‹wb94Ė’h¬|Ų”ņ°3Õ³z 3”ŠU;ŻAķS“$„ˆŁ¬ćR£~ćHӒ³ ivĮf`ļĮ„{£iw1“‹'øšČ·ń “Ӂqiqüµ.$kØ×ģ7Ŗ°äż)§%.̵u9+‹N6#m“6ēŃ\ā““¶%†ūH•€žŖš~ØČēķQqšžĻM»I—7iŸaSRK£ŌŚ2žm»u+O¹AēZÄIēīƒYŠųGHWó>Ī­ž~^+§²‡bāw_fĮ©/žŅ7 3|æxVqÆQ$›!фetŒ]?JÓ-ˆ1C°ćƒÉÅh]$žWś;€O#p∤޸ĘÕĻ$Ōóˆ’$ņÜē8>”[=MZrŽģȓO»¹CŌ¶ūIĻś¼š„uą­Ubš+MŒƒļ[ĪėĢf €{õ©`›Ģ+ŲĪsT±3Ž©™TĀŅ–’F&‰įĖM1AŒŗŠ+b· p™÷qõŖÆ!c†“0ŽÅW!Ļ_J‰O™ó=Ķ}œ”m{”÷z¼7NÅ•MmwiuĢĒøéULVsd)øw`)ŠĮ !"¹1ĪP VŅ÷`ķļÄQÆ 3õŖļåCž7IŸŗzSĪ”ņŖžłøźÆŽj†£”j+ėev•‡/$½ź£g£fvåÕ£LHŻ·į$Km$Ö«6”fŅŻ§bq’OĢßxCÄWٹԄU¢IŅ»Ÿ ųr=6ŃLš¤ĘLrKęEVwNćŒ}„äļŚmī¬#cx¾T]ĄNõ,ó½ÄJØü7#å5{XG¼J\g±Øl5»;h•^Žöćoń,Dgß„[·Å©›I½ÓtøĪZ[A3rÉZ?Ųó\!Ž&ŚÜmݜVdž4·[†T²Ō;lznkˆDįŽŅ8Y CuVčØŹ…¬™kMš~Ÿm!{”ruĀU’ģ 5×ĶĆ(ĒŹKŽk"KƜ.y¦b8 øń¦^[ė—±4hėg  †éIĘoW+2½ČĘŃWōyaaÉYš/(U±P5ꃧ˜@ Ž (?ʲ›Ć:»Ė™Bą÷g,M>=N‰Z;Ū{ ėĘS„h©_y7č`ėJß ½M‹oč?-ZݤĒń.*{-zŅņ„™“å;Yuü+˜—Ć:4ē™2ŁÖ߃ü5a³E{u×;wēō©«%£æ‘ŃN¤äöµ‹3ų¾i@[H§ŻqRCā FSū›b;×®·°ŚČPŲ<”8Üюh?Ł÷¬JĒöfĘpŹ@¬łiģāmĶ>[©ÜͶmVuf+1=\ķ]‡Åė+G-¬”;™ĮÉ¢ŪB¶ž% $jǟ–R3Uļ<5vŲ/ī`ēŖKĪ•IBJÉŲΟ“…Ü£sFēJŠY™d†Ż÷ šG,^¶Śv£Ś:€ `ź±J<½TÉėęčü/k{Y摏pMe*ŅKܑµ q–š³°Ÿš9tŻŹ®}™V00„ ѕ.Prć{«¼Š©ČmŽ™¬Ui_Vi:vŅÖ+éč#“f'Ø+€+II+8Ø pvžŒżź|·1';·żŃšR|ĪʐJ×VÖ³ZmŸĖqżÓĪ c·‡ō“‡ŠŻYŽ$ņ*Ž©®\ ²ƒNŗ(8nÓ\³Km²"’NpČsšv«hŽĄ„J£¼‘§6j± V‘…“NėNÓbq“ÜoĒ$ēf NĶ@-p€špĒr]jŹ5I" ܂ /kQ-5 Qö9ū›oŽ*éķŠvņóŸzVÓ§ŗ‹hŸĻCĒ)¶·WT°”’#©öĶZšž!ÕĪzN+Eˆ•¶ŌĶa)=ŁĢ[čņ[:‹{(U×£»ž £¬Ėā K†™WzØā5^? ķ–Q! 2›ŗät4·W±Ä…Ó”aŒU¬§/y\ŠŌRŠq“G›Zxšż¦ŁØé2ˆĒ;Аkv×Q[†FÓnķ­ÉūĖrNįW.[@½›ż"å£懡§'†|;+ī·›p<‚&Ŗj’ųt~šEVš÷ģŠė»MutĒ–'Óõœр?+‰Ö×]Œ*ŅÖÄ䓄ėųšõ}ģš|+bBƒÄ³Ø’gMł|¶ßžĻ4Ø×pmN7øńNtœ%oė¹į\k¢&ö·1IĀg5u-§–Z].kf?ĈE{üvŗp”yqFåNŚ“-­¼ ßg„äįŗ~¹„™Čņłæ‰£ęV·Ö ݦIscI#ó®ĖĮZī½b#Šöo20$tÆaø³µ`‘>ĄUe¶Š­×7i Žē“YV‘“£©X|=J2÷g”ƒm®Ērc¾Xē#ī˜ÉżjĆGq$,KÅ?“jA5”ksįäō5€¶zcV°ŌlĢAZ¦9ČaÖ¹ćS—įüNéĮOY³—²’ņ&UM6ż‡vķ[Wó%°Ż¤ŹHJõ·šņٹ!ghł•Øü@Ué—=>Rb&¶qœ­.]=L”įĖÉjOk©éÓMåÜé·ßiĄ­5‹L, sł*ze±X:g‹EÖō©0GRĻį]¼Zf£ßi»ų©žśŻ~%F-ĘŪ²ŌK¦Åó=Ż« pYĮ5äŚt®Dz…²ćœžØŻčZwŚ>Ž.8ŪŅ–=Ō @‘*ÖH…Œ:Kš+žÆ.‘-%Õ¬ ó^ŪwŽr}Ŗµī»f‹˜Ÿ{ćŅ‡įøn6Ą/÷Wjo h¢ŻĢØĒåÉ*ÄTJU•õ)U®ćĶecĘkoˆqųį&§:Jķāh£PpIa_”~*¾3j“ÜĖ3“ó>ērrI=}=’Õ~,O éóĪl¬˜^¾`ńqO¦*BŽeę-Šā½ sQ”ŗ³)„*õ%Œ©k­žĶ*YĒŽ„»’H­ŁC‘ŸCYV²¶Šķ*OJйu"Ÿ” xr“ųYõ4ŽĢ§ęV ļĒ\Tń ™Õ€}ŖøĮP Œg"£icN1¶7׌’v|Čs‡»©É¬Ė: nzqŽŗoĒ\a—Œ”bz¢²ēcw­Ųü„ó°9ėĻ™—įŃwS6ėhLm’¹=s\”ÓĘB±Ļ5µkp’Z3 ½+*ź4˜)ąóĄ„A8čöT›N)Žć1*Ø1äՋ"ń…øŹˆß=j›Eåį@łV„¹Ź„*óžÕ¤’[©Łj ¹—q?ė)žTHŽkćå꧋Ė0eŲe±†>•RUJĮCHŹp>•LŃ“•Ņ3ułćWi!XķR;š,œ¢.8,0I¦źp– Œejš@øōźÕzZČ"ķvÉõčŠčóągė\`Ąą÷ėšė5…ø“ĆÅwćõČ*įsµÓCDŃĄÕź>]‹P•’»Ö„Š"dĘŸ­B«¶ß õ5£`Ū³’AŽ)ĶčŚ5Ņ4ō±€Ŗ2Øæ­1Œķ©ČAŪ“m ķMĄø‚2HV#5Ōź°Ē’’!°yĮÖÖÜčŻ\©¦#)W'.Ćw­•œ¤N©EzšētūöčŌ)Ž«šŌKÖ·µ•Ś-ĂEaR½ž¦Ń›ļa÷Wę{¤UP‘ÆvėX·®§SĀna·’N@§=ÓLYö.>čÅ:˜”VšyÅkŲĮ&Ņ`YQH$ē= eėī£Į^ Oq'Vryé…ķYŁ/ņź j£­ÅVw÷S1õ‰Ėķ œē®i–Ū‹įpX“Ö’āońsœ÷«–¶¾d«AŁīؘɾ¦–”‹•³ófÆM…dą!8?5bEū‹wł˜ķÉ=MC§źW x;TūÖ*.[F¢µ¤méØČR@85~f0Ä8ĶfYL²FĢIßŲŽ”ż^Rć†\f‡ źfß.‚kļöˆSqrŲ*)|-?–²«¦ån銯c{…!·×5»¦iąÜ+®0NG”¤ŚJĢŖ wę%µżÜ™XųĘp;~5NH xäy˜«ä ×A§ĀgycņŚ- œśŠåµvņ5PłœķėŒŃ ĶźMņŻ-BŚ"·9Nē½iˆBa±śŌ×I²Ż%!˜ņ3œU-j © Ź®jŽ­³+r¢«ņĻ\óM€@  žµj5˜Œ©V#ļ_zČe¹Šš†`c+HIÉæ4M3*Äє'®*C>\«ާĘÖWPĎ„S»”$Ļ€«“učŠī%˱S_·x•pøź+ ę=ķČd`:׿ŌYTmÄņAśU9nŅ`\0“[ŻQ”&•ĘŲ†p3š†Ycջؙ°Ąd0ćšl ’.ќbµŗ±›³)ŪHčēsĒ­*]mݵČ-ך[ā¾cžŽµJłöć§9«V{“bŪÜŹĆbōĻZž6&.O_ĪŖÄBžp§»`¤ąśT“–ĆÓbķ‡Ž')Ž®]7ɂ1žsŗ³“Ē Ħ9«7²o#Č8QĒĶPÖ„ Źłæ) ‘éV A-š¤óć•WĖ,ųR}«CČ[/ówĮę”­Ė‘~łėŚŗˆ¹¹ņmäf‰A'"° ²āBтzęŗ£Čć{Zp–Œ|£’åĮUĻ­M+PžčŖEs!aĘ3ÖØ\"Ļ "{·z£mÖ®$ˆ”xĪF8ę””µCö“NķŻąŽR³¶& õ¬[›¹ąŸ4²ōē½RŌž[©¤yKyŽr9«RHöā0ŲåM¦¢®7'&:[ÖT;KG51®rFMM}`¦Pw°lt-‰‰ t8ĒųÓ¼l ū d”Ÿń«:k\ YCø r}+^ŽŽ„;a7ƒøŠT¾µ[ɒ¹ĘA®z•4Ųč&¶0ƒlÄ9+µ@ļW5›xEō+ naĖfŸxLKkņ’FqŅ…?rČn.×6,gQYdņÕÉ»½[†ļ÷8F,OV^•Īk¬ā[hH7w®“ĆÖöļjvB¼6ž+ E'ĢM({K“n¾Æo6†`kuó£\‡#ÆĖŪo$ !)€MtBÉĆÓȧ$æJēR'˜äå8JXÉrÜu(“īÄŃ-ęŸQf-”SŻø®›Qm>ĻK!|ĶŁĘxĶq÷Q\B“6ó’  eŹdlƒ!'ŒrzÖ±I½ō"[XŠÕµĶĒīrĪzŲŌZ|35Ąv#ēŽØĘ‰ö¢GŽ”®ƒB ä`ž9ļDķt8s=HC)ŗa ;y#jąq )¹\sśÖ›B¢čnb‹ŽNq[š4wŗJƒqŽP¼wĪź&½āēG›K[Ķöjž[1 “zƒTķ~Ć ŲāÉł³]?ƒ4R5ņb5SŽzb¬OįūKÆĪ”0B>¹ōØURNÅB.JĒ>˜n`–xЬ@8®Zćj\¼|æ)ÆeŃ­Dis`\ˆćżŁV8É®;Ę>Hõ5ņ£(OCÕæĪ*ØWw“‡‰„h©GSĪļ®ķŖUAĄę§ŅTø‰¾rŠ›SŅī`lÉņ;[4¶čÜGÜßŅ»äŅŁĶ}®“Ņö=éś„ļ“¦Ēˆ1É<ÓōÖKčÆžHaڱ‰%Ģ0ČX1]ątā­é4āŻ;– F;ŌOß×°Büܱ3¼1ąĮ}hņ]4¼#Xłüė­ Ó4ę“°Työ®ŠÕFƒįŅU~ŃpģYńü>ÕĖųŠņ{»Y%bc 0õō5Ÿ“nɱĶ6ł^­,IµÓ呧†2WqbõĀų“[‘žO³³©sƒ&qøVø¤ŠK§S€ąÕM?L‰tµJSqĄj֛Œn)&Õ§±_ĀšĶ3$Šå¶0-Ļjžł<ć!!¤n£¦+GKø·Y„ūT•䎳Ø~„_Ā­”܎*„ÅæŁeóŠ»oĻjŖ.īŲnŚ>nz×xčM[¶Ō„+ó($ūŅr—PŠŠŁ›—óĒ“•;O½fOrC §?Z’d8?góŖŹ}˜żėIļZ'rlļ”Ó#ę«¶ÓŻŖ ŠH«–ĀŲ²¼žu ö“`ćéBH·)%b„•Ę W€ÜU¤øŗ²æŅ„±Š(ķ™ĄĘ0[5#^[‡Śe]Ž””^ģr•Õ‘w7dƗŌ¬5IT• 9ļW¬nā'P¼qZJĢ>Cœ÷8ØŗnƔZއ;ö]Ū9AōĶ8éŗ°źČž•µtĢ­4ƒķDRGøŅ“ėøÓÕe$`=†ŗ>ī1ӆß#XS‚Ąō&ŗˆ‘ZNwśāžĖn™ ’Ż1W”N:#›·]WK’zšYŽ×QÜ['żŖÕi/ØŽŻ¶’xU”Ž]„ŸpšZ-‰å“z”ķ4ŁHV, >ł­Ū;Uū€œv^Śi‚O« «w> eĢ—ÖŃ.z!ē7oB’KbżĆ¤`«8éV4ūØŻö²!ņµ›㌠spGBW5f3ŖH „»„=Z\®ÅFĶūŗcN0‚lܓĮ!*xōų'‚„Ō­`ĀņŪ”k©™yĘj;ŪjŒĄ‡)NŽéGėŌźm“րØY¶äs‘W£EóĄŲ¬qÖ¼Ī÷ĒB20ƒ¢¹żWĒ:‹‚"•ć=8ėT”&µŠĮā"£¦§øŻĖgĻ$0ŁjĘæń.—mXc zš-KWŌo\4³HēՍ0¼Žœ’29¬ż’¾®āUd֚»ØüD°†°Ū“§×8¬MCā²Ū²Åk³#—żkĪ–Ł›£`R qżńéU죽„źIčĶ{Ÿj ūŒŒ3ŲÆ?ˆoĪ6Ģć>õŸ4JS ōŖ„009$V­ichć³4ä×upn'ŌÕ«]Zą¶LĢ­Ó ×<±6FŽ3ĶIćœ~5…FŖGg½~‘€]1Īįš”ėbXö0–ĒUnµĢXJĆ cļ[pÄ^=Ę/”qh§»­xźMu4ļhåy8žńÅeÜKv­÷]{ę®y1«nV+ģ Z·™Šcz2öÜ3[&Öē3å 1Öārż‡źĢ2Üoūģ¹h±³c‡¶8©#²‡Ėßąƒü4ōµĢŪģŹ!ī‰ł&q’5~ÓQ½·cžę›öiŃ8…Źžw @0;Ž9©’osHNK©bmJńŠåŲHĮŖr^Ż•!åē½ZŠ$e#ž¦“쬭de Ę: ,’²v0ķČĆę'śV®“g<˜¶iXśn5ŌéZ““3LTŽ@5¹ éŗyĶŗ¬’cäóY¶ŽˆŽKI~$š²XyLAźI«öśا![ c]%Ēˆī  GhĒØ֘Ž1¾D!b;€i®klgxóX‡GŠuf“>^øĘ?čWLū4 öĖĖxżīs\Ģ>2Õ ®Hn*iCāµ"­Õ”S6;š—~Ę©6­b4²óGüN"yĄ\ó[זŇ¹ŽrĒ®®BHmÆ4:\Øć¦Ę8«vZ]Ųu-i/—ÜĶ[Š·™—<—»ŹwŚN§a%å¼{ł *-SU™bb—°ćłXW(šY”•]2UųŠć"›/‡$1d)ˆ›ŌĘŠŻ—W']‰5?jɑ•ˆ?x(éXĻāmNG"W”·N„*ŠM:ź#±f[©ę­4Ø¢DŽAŽH=ėGœšœćIÜē/5]ZpB;ü݁¬{”ŌFwī¾źķÕŒ,H,w–ģėŸ–£bē”b 6ŌI‡½±ēOÉLI#(횯.pėņH„żkÕ.t¤L˜[7+dUqį….<—ŚqŠ‚)ūHŪsE ’.§ŽŲŻ)ł¼ŠG½F¶ŅŖf`z ń^ܾ•ćĖ*GSTuF%ćņ $į%”œ•h;ÉK „U7.yõ­xą“¼‡j#BĄg95ŪŚųEXĖøīÕøü1J3ęF3ÓŅ¢ÖŲÖŹkŽg–Üé×11*|ČĄąóUP8b¤ā½–_ŪćtĀAŽŒjō *F$ā3Ž~lf“p„–ŗ3š<ŃvZžQlmš)ÅXƒž+Öćš¶›É&]‡b1L_Ū *aG3œŌ¤×R¦ÕłR<Œ@ķŒqžõbŽĪYa—žFN+×l¼5dOĶŽ™©dšī˜¤,{‘Ļ””¤8·{3ÉZĀpŁsÓ55¾Ø±"“$vÆXĆ𤽗§ĶWmtūd“bč7RnČÖ óZ÷łg¢ézģ't6Ó:ƽušJėĒl®clu Ez‡…¬˜[’@ĒššÕ¹“œ!Į'f¹ŌžšŠ¤ā®ŁÉųI5Š åŗVĒ+'j颒=Ŗ\= ć9©-tÉå?0<ŒäµRŌRĖN®%|ē \ѦĒ9Ł{Śńł>I*ģĒŌ‘Š!¹“C±ÕĖćØčk›“Äš|kū˜nŽ9\ Ͻń5Ą%”Ž8»€I«ŽFSĘA%gÄļ"’ WzžĆš®īŖ„HŁŽę¼öćÅž!PrčÜņ£„S}U»yC'$ēTʔ“Ō¹W‹āzd7pBs)bJ51ȌN~ękĖ®ę½ćąžƒ еö–A²ęą60>nõr ž·3X٧ʖ§¤>®%R±Ü£0=Ԍ ©ss|zjVĖÜ.Ā?:āķōd†hÆLJ?ˆ¶ ZKkøcāųLWØ<óõ¬ż›éfi퓼ī¾fåLj/­_ē¾·įä泯¼et­¶+¦e#‘žõJSj䏰“’c²GėŽ³¤ŃZ|“VņFOb+xЦ՚±Į,EU'ŹīŽ‹Mń„Ä=nāĖq†­Ķ?Ęź˜2¦üŽ Ķy¬žœ†8.Ž™ÅK¦č7qąč£źkžx8·tvŃĢŖŪ•Äõ½;Ę1NŪRÕŒīŻZ‹¬+ĘÉnG!Ey~„Ż*‰@$uĮæ¢YźpĻ‘=Z‰a×C¶i8ŽHķVnB#F⣷œ±ŻęØ'®ąEcĮĢHŗ‚źGJµa¤Ż“™gŗTŚ=ĖŌӖīŻó2żCTSÄ:Ož#{ŁWŠH L@œ(ėUęšö›»2–löŚ3M{;Y°”k&[“XŅö—UĘ & ‹PŃe“æ¹Å:=šXŲäµrĖA³Q–ŠƒDx¬ß"[‰JSvčOĄĆEćŒĶ\…L2'Nź*+K;d“ EŽų«»`—n;ƒÖ²ę¶ĘĶ+r™“Ē lY Œ·Š µhÓ±]‘ćŒ5­‹!‘‡Lš†{‰ƒmŠ'Œē½W=ČT”]™zžĪįął$1É8ĶP0݈|³0<õۃWļJ.ēqž”±E<£ ĄąŌ)“µ*TÆī§c>6 Ió/¦]§•ĶXK+†ćž<Å­²ˆEø’rZ²u{Ų-īU#W”õ;G®2œŠå„ŹOŸd²īK+x³ĪvVWtKµUJśb³æ¶‘HY-¦Ž1ÉÉÅ8ė:<ĒĖ/*Č%ؗ“_v8Ėܦє‘¤Źä·lV šį ĄbՍbfÕŌ4ģ1Ą2iöp—ä\nøH57L· +¶jÜLīFłq‘ŪiāĮe‰X€OsŠ­Ź“QŻ~ ±†# eœōÅ'ż'¤¬O5¬)ĀĆoR‚©K;¦mŪÄ^%BcąsĘy©%ø6£bĮ@čGėXə€X|ųß=cäU}Y/m×t³łjæÅ'zq”'Ԛ•bµF¼·EäŻ(DE䢖ĆR²yvÅ,¹`äÄvQ7—pšĶžxÉ­}8h·ž$…\Œžģr?*Īp²“Ż™tßX«®§_ ŁHÄjʹ·’®š% K»šę仓÷mx‹Ü+pjö˜ŗUĀąĶóÕš¦ŅŌ®h·dmZ‹¢Ä™“Ųv¤›ĢLąaŌÕgŠŚ[]Ö:…Ä,xsY1č> µŗfmp21čć?­JÖ’+Ÿ–Vš:9Œ†qGvÅ$’ģˆ"¹qӂ bÜ[IĒŚē†]ƒļ*‘D6ŚkF».ƖNæ!Ą­#MµveR§cb5ŠCŗ_1€ÅkX¶Ÿ6\ ’jØčö2‹|Åyqµæē¦*ßŲ ’Éę÷@ż+*Ž)ٳ”9({¶¹$z®–¤*Ü/ŠU³qÖēa=HЧ½°+š&›×Ė­+$‚H‰žķš1µ€ā³“Žźö*)Ź<²’"­¼p»’‹=³Ž®Z[J¹`°Gž8§Įä&D 3éV–!'śŽm©ö©ģ5+I·:d«dż{žŞAĆ e$c ¦®‰!UHóŽłŖ—SŹ2°†ßŽćII7c'tÆ}•ZYwµ¼Ń©8ĆUč푾WDÆ­d«ė1ČO±ÉtĪģŌ·Wļ ¹yäXČ""œŌŗ5)Øū߉ÆåŁŚą¬q«tČgĶY˜ī9;F?•p‘ųæNŽb&ąb¶tŸé†=±Ł9Ę;TĪ5¢¶Õ”'w%cv]6/Ķ6č¬yłV³u‹m68ƒ\Ū‚@ʆZÉńĆ„¹Fžō+ŠŌu+»éij^†oīqųW] uZę›±ĒZ½;ښ’#·–śĘ(Ą Ą*ƒ&°õoŚŚ9°J®œx¬żūP’ėĖhķŽdFMt–:^“r…ļ-b źĶn”M?Ģ—)É^OøĀ‡Ē³ĪŸø@ĒÆļsS[ų²łēżż„åv­­>ĖA·¹e‚ß;øū‚¶†Ÿnц6‡ać>Q52…(æ„jU§)]F©yotāDšę) åCasV“+N)G’Ru=ęŗåŅōĻ0*ŲI# @­ĶĀĘņ¶¦?@EMJńå³W5”‡q•āķł~&=•ÓÉ‹9Œ˜ź­Ö“ģ!Žā_ŸNhƒ¼ÄUčę…gf1ˆU=Ą¬ķWSiU“O™ Œ’ė\É«CC”ʜē«©éVdƒö¦¶ŪŲ6+ā}&ÖRÆŖ,…½/‡ā M~įÉøy’¬1§[ŪČĻpŹOu]tč¾[NWgń‰JńV_3Ņō{­"q˜\Lqżüę­^^ŧۙQ$Į* šó+YŃćŸÉžÜćļ•«·6é~3«pOšģ“„cõt„i3uˆ”įxīk_ųÜhŽĒR|æ%`Eāņn0Ž ź ¼Õؼ7ØÉ3}šwŒĄFćrļUÕPŽĖĢ ÷Hjē5OjŚ{9¹ŠnĒ?~ÆŚb%¤u3¶_y×éZ|° I4ŅF=+U¬ķŠ1«du&¼÷Ā"½­Żœ–-ßqąWai­Ś\§ī„†UķŒžUÅRuT­%c¶¦ćĶMGVX×l1²ćŌsTõ%žV[˜GTéM¼føˆ4sĻmĘ>^*ƒiÓrēQŗvĪrē9­éĘś¶aZŖZZäégø{¦uĘ~O­=l4ć…(ÄśäÖu÷īŃAø™?x.ER„vŅ2śgķž¬ÖžĪ¦ńfj„9hāt’iz~Ģy€{ć­bjŚ˜wylČ摆®{\ńLq1H¢•’ŽóŖ:>§w{24q¢±npJŠÕB¬cĶs V£RJ)e—‡0 %̱ƒžŃ­ŻI‚ĒłäŽrĄšnŸ-ĖéŲž“Ž|¾ø¬[ė}>k³ē}¦Ž@pK‚¼żk:’Mɝ RŒ¬‘Ö-šĮ6ē€8¦ĖmlØ|Æ/ĢĒń°®/V·-ŹŁ}¦äcIĒįĶyēŠīU A¼oėS4£ĪiōSYznäĢ’«Ž Ģ²ß”•ūĄÖ~ĖØēQ„fī^ńÕ­½¬j§Ķv죄`]oš7+€Xwõ­ ˆ“~ącæj’ĆģęĪ@ēsšŃŹ*:-Lįކ-‰kwE™ IŗÓÅ:„U!Ą¬K™ŌÜ>΃E±œŒ!*1TŻÕŽ…ĮFړꮑDbˆ)Ļ\Vlg+”0{ńZ6ø®Fk2VÜätCViče7ź‹6[V]͐tćµO*$¤ÅqŠzUFVGϵ_@W IŃ%gs8;½ ’¬†VD µ#[:;Cmnd•‘A^ ķTŻāE,dŽk›ńUƈ¢…H#aOLŌ8¹»lk,LéFÉ-„“W—Fc)Ś[#ÅS× ’Śå gzœēįBXLøą ÖżŠ.ŠēŠ~u§+„’oAJ\Ė™gwū9FfŚy®wQ„.3žœqZڵ،€łĻ$šĪŻø؊ŅkVe9¦ÕŠŹHŒ v­}*<ŚŖüŹ’EU‰āb¶ōˆ[ŹQČÉõ⦭KS_hoŲ%1²œķūµ±©Ż`°Čw3ZdRÆöˆ‰F8äŽüVGЧņÆ ĘģŒQOŽ’Dāć¢Š›N™!œ“ż 5~ųJń’Œ» ōÄ£\³īebN8ÖéūÖÄ»¹F8ąÓ­hŚLTc)+Ć"Amŗl©č*‘…ĪZv„’8ŲÜēÆJÅÖņ&XćÉĒ÷zTĮ'©S«m=ܹ  šO&Ø@“ŹLZFŽO˜7Żö§l ¬Ų<`+„Y1)ójLc挐jÄmF=šj­ø,CāR•¼ĶŻéYͧ”6dW(†ÕŪ“‘łÕ[ mčJĄćŸaZ[d)»£ĪkOĆ(ęĪVXĘ\ҧŚrč“Õ1+(Ų7 śÕÕO5~gŲ2Oz۟LshģÅQ±ÉĘk'B3E~<ĢŖ#}ļQZ7etg)Y4Ųć10ĪōÅmye¬epņ&ÅŹ¬Ķ~Xa½CnĒõ9¦]jM9eąuĘkI¤Ī¹ÕŒcŹ‘§xšĖ*ÜČx?+“ĶFᄹ@NŁKeŖŻŒŠ2Ė<‘*ē‚Wج;ÉUļ]Ą;z ×G/ta)Ės£‚ź(#ȀŽŁėW4ćo乕ՎÜĶyōӲρą“W‘ŲĘĶ ‘Ó4åOK£9Ԝ—-Ī—ln„“ž¹ķXŗ¬‡ŹŚSžøķT®ÆŁb1«9ź½?ÆždęĖ…Ÿ„8­nĀ2ir²kĒŪ($e«īPdūĒŽ0jžŖšWkī#ŠÅņŁ_!‰ Ł9ė[(®S9o”Š 2īžB ŠÉ“ćŪ<ÜŹv’OJ±q ~Pp˜c§¢Ń‘źW”ģR7ŸĪ”Ž`$ÜyĒӇŚzW„ČZBĪ쯀2®jĪIŃaU Ī·4m*T·œ2JłR:t©Ÿ,£ļ3o…ūØg‰Ūu^GfŌ×#ŖG(¾i*¤ ć5Ōɐʖū‹n ƒč}ź‡4ō“¶[ƒ6ł„8UĻQ (½X£RS½ĢkUvuŚHĻŽQÜ֕ü[é ²Ä|Ӓ1ŌV,WRł„"M®øł»žuw‹sæ™!'śV·]LļmI,o!—ŻŃAąõź_Æ-mü&￉˜ē5ā” “õōÆRųi²ļBžĶŹ ˜Žy4«it!&õ¹Ńźśŗ\F±†Ų€3×µ^‚ŽÜĄ‡äåEswv¤R2Å2÷³UN”õe-‰ ŒĆŲWn–ÖĖĄI=2jŵ³nĢQĘ qĶ~‹”łRRnĢįąÓīn#ažĒµL4‹­Ēåē„wŃĆ0?3DµZµDQŠž"©(±I5¢8 -"ōżäÕ©m”HɆsśWg!  J©{,܍KbӊZ£ ŪI–ņĢxķWāI#lć©ĶAt÷EŽ<åĒuØcnĒKœt<Óµ7(ŲøņĘzUvˆĄ$¼Ō°ŁŻó7 ĪIzÖÉCaˆlŽĒ4s•%©t’L€}ŻÜf™søČP×®ŹŹÖŅ8†õ Ž:S¦[oą‰øīŌ)ßB%µ9Ū-$±łn¤Ī9;qšé¬4¦KaūÅqŠ©öĖH÷³¢ p©"×lāa•Xūō¬äT”k\™­ü£óØ ~“¶¶s<ÅĀLqļXz·ˆ®YcD9ȬÆ^“…‘Ō÷ł±VÓkCŸŚņ»3ŠžĶ8 Œ§„sś„Åõ­ó,ZvN1»$ę¹ķ;\¾Äņ«Ü“ÖļĢyib ö+ÉØRÖĶŌķĶĆ{®9PØbŒfµķ” _“ĶŽ0@¬ķ»¦;ä'ŒV­[X¹R¢&…O;±ŠrIFS–Śšū` Ō„ g֬м`„¬iłč§Š„„i—»”Ķ{*–ß²šżō«ū«ö#ż®*9Ņz³GMĖWsīźKw ī­fźž·"G•b?ŻĄÓÜč:œ@ęHHÄ@žuö-ÄpngŽNųZÕ4rĪ7[žm|×läČfgĪy8Ŗw:KķŌצŽ"[ĘU“ņēŌ­e]=³9Łä?+V—Ta«V‹¹ĀMūčžPČ:qP„ŠmūĆ'¹®ŚęŁ&B‰måĄHŖ«į÷+æĶ)ߚVOØż“ģs¶V\Øć¾+oOŃć”d±NĆ«c¤˜ĮĢ…±ķWćD€d+aFsėQcN[/xåµ(Ä0¬ÄūŠĻR1ĄÜ=s]^©Ŗ[P©ĒZKK›- ł€±ż*„$–ØŹœŻŗŗésJ‚WÓ§Lī]£•¦§2ĘŌāŖńك§Ėf¶<īŽøQóc­?ūä…pR zm…–’¾Nx« ݶ/$FĒ'•<Ś‚„-¶§’I¦L’ņ=é)#Įc„z¼ÖöGvųTņ‚iŗ~‘§Üepō«rFnœŪ²G™G5§Võ­ 9ĆŽE»Žµč?šX3sĒõ§§‡mQ€ˆ6=i]Z÷c$ģŃÄEm©Äj‡®@Å ¤Ü9Ģ[óź+Ņ-t[hFYAć \ę“m!Dr±[9ĘĀōØęfŖ:Y#Ī“ķTb>iܞµ»kįė…‰^y‚Ē^k«0źī# ŪĄ=3L·ŠÆīeāą =@c)5 Ū%)ģŽrK;Kełē›ŲČŖy“YĘĻ›œ®3^§gį;1n ¹wĘ&ÆŚxGMł]‰~sĶG¶ŠZ<<ŗźy­“iO*ī·R;žł®‹J6ŅE±Ų}ń]Ģz„„‡°‡AӚBb"AĪrk/måJ„—C’itČWtqÜØ=”QˆģmOÉĆŌ;cŁĒ¤éź6;!ć¦j ’iEKÓaą‚ŌćVœ•¤£ļ-Œ˜l×W§iŠEłJ˜ĒAڳöŹ›²ŌŃį][Ičy”Ņõ©cā+ėŒTšg†õ9dĞ\@rG­zšÄČĘŠyėÅ–,6cp?[–Ćś•4īŽJ϶b%70,˜§Æ†4D}ÉbˆĆœęŗYaŌq”‰H>­ÅQ»{ō“ tqPŖJ÷ęüM½„uH,4ŪXāŁ*‹Ó5 åŖ‰ĮBØ˒׫†P<‰FG95`X¼£¦ŗ‘Ś®3qw¹œ åŗ2.­"`÷‘ØaٱU"Ņ­dż¤É’m+¢oŁĢæ¼y‰÷LĮ;iūf(R…ģsś–ˆĮĄŒ¦O÷Ę)śn…˜ ŠC(čv×W§Fę3ē!8ēŪėLšĘ=ĒŹ’ę6cĄSÅ/lä¹n?`£+„r‹é6~NŲķU8źqXwŗ<±Ģ|ø¼ĮŸį®¾-2ģašį¶ĘóSÅP‚¬ūŸ®Ny¢8§tu0jNės˜Ņ-Dām4“ŻŽ*ÕŹé>^ēX”=÷ØĶoE•ŗć<ćwŪ:BĻ/ŽFMW“O[²T¬ŃĢKö£Ä eĻM‹X÷ś]¤V³§9ߌW§‹x¤ĀŪł#±sW&x׫8Čīhx‰Eģ7…§%sŹķō}F>#øQĶmŲhš«Śƒ&„°g<×_,–lĎxädŅ­»°Ś·äuUėJX‹ģµ&Ū[ēö5źØ/®˜—Š7&¤km:āęk¦QÉe'5«.Ÿ'˜w¬ĒP*ŎšI÷mc½55»fœÆ—”åÆ"Ń®T*擻„ ā³äšę”[tWQ µzXŖ6Õ[ž7-F֒‚vĮi'² k-›2ś¼wŠŌć-ōh×j‘£±Y _O YHŅGėÉ®”,n‹†żŌc”Āā®&•ó÷0ļQķŽČÖ8e{ŪSžŅü=§ł„‹ˆ¤8žÕ]Ę<Žüu­7ÓtäQå#}2*Õ„¼€Iß½c*ļ£7PVÕ'H‚E9-»ÜāŖæ†­ü̬iīwgō®žąM©õ«6¾n܁HėŠ•‰šŁčBZŲē,ü:€ąb<6S>oe™™zä ܝČmĆ9ķ‘Ņ£vŽ(˜JöRÄIčʰź×čcÅ£+ `ē8ėW`Óķå­ĒgµEżæ™å†mƧĶҦKcpw¤’(ļŽjg6Žę“£½ŻQ64čĘc‰Wšu£$ŅāmæĪ£xmć\8i~­eI ٧˰“»Ń“ł*#ĒŻĶ2ćɈźČõķWc”O÷P&ī+#X²2ĶęI}@įā’ZūĢue8ģ$÷öŠ *1čZ¤µŗk“‹s’Ą±Yéi„łćĪø79ĶlipŲĘĖöhŅ<²y¢|«N¢„ ^ņzˆź>pGn?­S»–(ś4˜Ē÷Mu1–xĄ!1ėœRČ"EŃ$Ąć* Lj.ØŃÓW“Yśé£ĻŁķē˜ć©\֛fu»Ł9„ZFOPÕŁ©‚^‰“ż1SCŗ3³l[S•]4Z‡²W÷ŁĆjV·vī<Ėū»ŸDQżkwD7"ŁB[2æzF­é’5MÅT‘ÓRhķ6‰!ĄČā—µsI4RJ7åW2® –órĶv‘'÷Tć5Eķ!““(’ĶĘ7/5ŃŪxjĒ;ŚF—ŽA—’‡.e‹mœ‚ģĮ¹­#V)ٳ:‘n ÉÜåµ'¼,p²Œ`—5·†Īłn£„‘ŃˆÅmĖį[č̚īYĪ:k>}:öfņ–Žóć*?:źöĘі‡,i+Ż«æėØäŠ’Ō/“¦Žä»`ÕVuŽå‘õh‚©éJKæ_\ó<ņ@ČĖ䊿aą-6Ī4y®evQ“†Ē?fēMm;ü‹Šķ$’ów)Mż“ę\™]ŗ \ā©]|ŒDR$Qކ%»};KŅBłXµ üńDžŅgcūćgŸ‘ŗÕB¼“aRŒ„gĢ/.“Șīī\ƒė‘š!ńĪLM(ķ•8ÆM°šF‘ę³ Čsœ°Ķ]›ĀvØ”mcćå"›ÆI»Ęźyœ^.ÓdVĻū@暩ŃüM½LwŖ³+’|WS/…ģK–{»tģFģŽ? ųvIBÉqŽ:…z&čŪv(ŗ›;żÖ™į­L†|Ē#v€®‡ĆZ•Ŗ”³yQüF“,ü+£ŪĪ §ĢŻyå]›„Ėł#uSŪ5J×VęÓĢtā“rJĢ«>™gŅĖŽ8—Ø¢ kHĄ&ņrŲĻ\ŠčŽcęļq½~•~ÖŽŹÜmHbÜ}MD±1V&'ﳘKŪhŠāŃ®;r½jĘ»co&Fø³y\ īdū2¦p«c§•Ŗ"ɟŻE"śmŖhÉūÉżāÆBkXæĄÄµńEŒ‰å­¬ŠĄš3VUF`Ķmv1Ó ZŗEŽ0^4…NšnØVŽćH¶lŌ7k-M"ęÖ„«YÖę× ņDHĪYpjƒhčķŗKĖ©Xr?„8j¶‘Ę#ÜņģØx­;[øŚ 镳ˆb±Rœ~ p„ŚĆOµ‰U¼¹·r^Æ»ĆęmNĆ=j‚ŻŚÉ!_83æPŽ [‚ %ڇŽĒ5œ¤ś›Å7 Ætåp#ĒBIŠķ!ŒżćĻ9-Ņ“^Ä:1ˆĻ£P“·cŒq»v1Rźvi«{÷ł ­Äöß½‘KüŒtˆŒŒÆÖIūŪø®ä“†eˆN2=OZ–,ĒŽĆŌt­”ZI]‘“£ō9„šŽ˜Ėó*JĒ֞žÓBīÉsŠŽÕŅĒh>ĻęBŠO^IĶB_$.Ńøg`)åąi +J[ø³smŻ»—ĶXčŹ7÷:ؐ­¢ŁœīŻK”«9ņM’Ø'—r+jÖÖ7Œ9gŽ@#йBŚ6*„ōÜ3MÕ¦õåW¤ķiI“qŚž‘y;2±¶ś„’“H»ÅĖ[>€āŗjśö+r"³IØŚ1šÅUÖå]?cz²q]”źVpŅĒ:tyŗž&_ü":±RU‘st^ž†?j~ćźõŪx®xˆ·x ܧī©Ļė\¦­§ųÄO–ŗrŁč½ iN2ŽMU®‰»%–‘ČRēK„°<3V†§Dw–²wlē\¶›ŠārdŠCĆ+äk„µ’„ŖK=¢źDČētj<Ō{I­/§ØįJÕ¦™b yuć=iŠōHŽt8<ZĮÕü3®^±ó®F\`ž•B‡hŹŽmÓī<Ÿ›Š¹Ó„(«ŹĘq­ˆƒäŒ.¼Ī¤x÷@ŒąJ}xéHž=Šn” ŲäeJåģžŁ JĪW ķšÜÓ<¢ŁēĶwƲ•*QŚWfšÅג¼’H“ž+hIśdŒÉĮĄõü%š|ÄyØŠÜ¹ę“Śt„Cig£§ĶŠÄÖ|:÷G‹_²9ē%²kN”/y;OU«A\­Øx‚4øße|ѱć HŖ’Ū“Ź Ü][Ģ}ŌUKĻźęšK »_óĶV‹ĀŠČ<öXŪŌ¶Öŗd•·Lä^Õ;4ׯõcbMjÕ!ÄŚU½×`Qk^Ö xĻŁ-®ģÜßҶtŻ.źŲķI­¦aŲ7jč4ĖC@¼0©ö’:ˆ>]PÜg7k’_#É]Ö²J‹Š’jż¦±ØÉÅĶī}±^Åcekp~t¶ģŹjņxoIq¹ķ÷rqҦ¦&ŽÖŌŽžm%txÄųˆ^¬‡S¹hń‘‰ ×uįŻwTįn·Üv ”9w:g‡ģ`qå[ ōŻŚ·¬ģ•1Ū[·¹QĶrN„=łNź8Z­[üζpŸéŚ\ćpēż.O Ū01Ś]£©ź„Ž z"ŪFķ‹‹ezg“Ųéįńqтk:˜˜Ź6“f“š“ƒŗµ½[IŌģžĢH¤eUąHøēń¬_źzŌs©“³T÷.3]"X[IlUĖ&ASŠĘ›ĀÖ2_!&įŲ ‚ĻXS©F75­J“š°ż'Y•£A©Zł@¾«‘śUū™,&„›XķīēqŸĪÆéz|6±…ĘųĒ@I5%Ž·aprqÖ³X§utm*s”yNByv¹C §£ķSĻįYĶsŖAvßOÓŚ,š" z™m*¬Ljõ؝ķd !B;1<šßėqµ¬Ģži¦„©OEŌ[ßZy/üB'©ī§°xLw—RƒžĪNjķµ‰’"ČŠ€9 qš·§Į8u*Ćų³Į¬cU#YS›ŃžG Ŗi:|÷[­®5 Ų(8&¬Y颦#¹Žę#Ąód×Sz×1H|Øc•sÜāšmÆēmŃÜ}—#;WšŃ×včgõdö¹É_ųfIĪ.4ż8ńŒņ§ō©ōŻŪLD¶Ÿ(ä†N+Ŗ·‚ö)LVćdp“Z·škrÖņˆßю*Ž*NіÄ,eSš41;ō}Ļ%–)J… “É5jԈ^6ü@©õų’~JČĮq‘Ū5ä“ OznĶySW‰ķŃØ„x¢bń$r«pHéUģrÄna”{Z°BęH™YAēiļREj©¦cĪ8õÅdćtŚ\ד‘bāŽ$°]Ž$Œ“ž cŻ©kfE'Ŗ}>xѤ‰f\ žŌĖfĢlśā¦qՉµŹcM…G$œrOzYne[rW~¼ŃzŽŅ”ÉŚåO¶·_ļ(8­šM{Ę~ŃÅhCupėnFņæįU¢bń‘»Øā¬\ZKɌ9ųŖ¶…²W óĮ­a /RRÜ]5 Ž žyė[Vą“!œ{vŖ6ŠHeąćŒż*Ś»Ć!$cóØØłŽøĖMJZ•©i]wøČ Ö³lŃŹY˜k ø¼żć žÕ—®K•é§_jX"*ń‘Ž”gt[Wv14ó“Ųą/Ž>µŠC N":ś֙”G¦¬÷‘Ķør»3Oµ¹Į/¹Ą’LŲB6v‘¹…¶Ś®£„UŠķ>Ń“s»¾i×­ēĪIŹ`ńVģ˜ĄĢSp+Š‹ņĀŃ6‚ÖļbmvŹŽ/-wüč3ÅG„2»bNƀ*‰e™ęˆ”o²H­X£¶e”)v\VrmCVOŽ•VĪˆnuČ=½ 9,^öäĻ–*tŲåĖ©Ÿę;¾UIQV ¼1€6ŽżkJ]*k|į•zŒUhü涟1CķҚqk@WOB{;U¾€ Āć$‘гg¤ÅåGŚ#}jĢ!Ė”†8«ŖĒRćÖ°ęvÓDRZŲĶÓŅAvĖžTdQZ§4Ų•˜GĒEčiĖ•8”0ÉÕæ„Ź­>fF+M-MұĪŪŪE%ÄQ™ j§ę÷­=FĪĪ+2bWWŻĮõ§I)ŖbGŹnŻ…Å7\¹i.ÄQģTĻQަUՙŃŽŲeÄ$&A•T㊣y:µŹÄP…ķĻŗ Ķ9naMĮVcµg^X|±ĀŖŹ?‹Ž”jĘHÅŃä,Ū̶žLrü€ŹOqTµ+›wø’(6öČ=ėFM6y®byŲ*ǁו6ŚŅÓķr»bNėITW4p|·ŁšÓXٌpw`mģ*šk2Ė 'µOqÅIć ‹0Z2Xɟ»žµĪ¦ŅĆ ĖĒsŪŚŗćøŻ£‘ÉŽŃfʰvŚnąŽ{Ö2ƁŌÕŪ‡-j łGėQZ©2·åĘ8=j•’c„ZVdSZe€ŽqZ^±ßz”$‚®Ėi °+ĀY3€rj’‚•-/›Īe+Éć­dź'{5“™©0h”X<¾|Ų®‹EKAd±Ķ46ņņīõŖ-=“Į™e_“œĶsŽ żī²¬9\®>U(ņģkM8ūÉÜō‹7†f2ŗ“ņ« ąż+ž¼Ł.ĄŚˆyĪGµAįõøH ‰ŌŖ’ ±čjݵü—ŗŠUņ"Ū·±»Ž²Œy6w.U%±Ėź×ģŚÓ żŠ ė‚jŹNnBSżĶeųŌ[j\“Nw£ A¤I Śķó13µtr4“±ĻīģMā[/ ‘.T–8Č÷ÅTӑÖPc8p9Čė]ķÓµŗÄ„•DŪĒ\ÖK[•·fVŚÉŒžŌŌł•˜¹9u(źŅIē/$°ąJŠž0pĄœ•ēŽ‚ŒfŻ»'š³×fWb6=)7e %s%7y»W!S[VČC$ķĄ*¶Ż1\–?…mh¬©Š +ÉaŠÖu*^:ӏs6ę6GŹćŠ–,.O#‚;Óõ–ÜīŻ³Ž}j‘,ЌgüiE¶µ*WjČ~¢dISiŪ»4Åd2„/ó2äŅ\‘[‚ąNinBøJ® RwU9_C5¢³(x9Ē֜Å$х,™89öķUu)L’„F€Ų«Q$y[‰a‘õ«Ž‹S9]›Zµ“q‚ÓąČ>e”©5½CČ·e…Aņ•bsX¦ŅāŽa#E#HÜō5kZ…®ī"ƒęˆČģRŽ÷oB“–ĦžŠÖ„N¾Wå”` ō-WÉÖ _øĖ•[Ą}„­¦Ųšę3”ō&—[±¾øÕZMĮW¬€µcYĀRŃŲź¦§ŽL³ i=ŠŹ™b;ēµ2’śŽHŌžĪ­hųjŠtIJ¤ sŪ5i.9naŽ4;Ɇ:ˆIī‡4¤µŠĖ‚4‰nՊH@ާŒVī Ŗ)ŠŻ£*‹œžę©kש°J¬±ŒĘI>ƒŚ²žņG€,ŗY$ŚnmJkMkYŽ&–¹y-ʗ%¤.Øüä°ĮōĘk³š+ ĢW#œgĻZģ–Ę ¼§i˜…™³Å`źŗ}©bųi ­„v5„)Ø®Y- ¤Ś*j6ńĀ­jˆ|ĮÉ#œÕ½"{i4øć}¦C‚O”ŖŚ.•ö‘6Ō9V*½x÷¬ak,z“C3•Į ķžu“”$­}J‚ļcc_Š;ķF!D»A^˜ĻZ|Vvšæ–Ģņ26FHĆS|Ēzęuļ?ūnęx™³HUvōڳSw¼‰qŠį÷ü>!ŠĘóO]Ÿgę2¶v\ߎ.ąµµŪo:0˜…=²)ŗ„į¶Gó…fO÷ˆ¬EU”²”QœŅ“W›½ČęqZ­L»• A÷€ķZŚ›q,;K…‹nósšæąūŗ™ŚQ¶"ĮOńWconöū\łĖ‹‘ŌćŠĪ¤łw5„U®ŽCD“˜\ł(›œø*Hč+ӛBœhJŠČ“J# Źė7ąµĘ£āfU†ÆNĘŗĻŹt?KŖ­ö“»jõ é\“œe;7±Ż…“Iømęyƒ[Bśł’FŖnŪžõм‰4ł7œa3Ē_JÜ×-”ųŖYķ,Æ%ŗšĶ×­ –X]›pWXĪ+tć+IURׄĻ,¼G‚v‘Ē5T]¦3‚ÜįŗWMń%[äXc*ī:ś’Jåd UCdśõŻsFŪ‘Jä!Cņk·ųuäA©G,³Ķ 1õ’õWslLˆc ī=ėsĆ~g#™ŠõVIĀČt„­Ž÷ĘņÉ6ælm„i"rżłę¶Ī•fĶŃósPü5šģ÷š}¶vtŠ"K7S]šmŹ; bBœ+„¢¹g)6Ѭī!Čō©ÕJ”ŁśÖdp_+døĄ+[MSlœqœ×Ż7cóHĘśnRóļ(LSŠ­%ÅģKȈż 5ѽœ’ 7éćN*9żj½¤mb]ßC ūaDaf„š?‡Ö¢žŃµl*Ē&OÖŗb˜āĻ÷©©d« Q ō¤§ŒÓٹZ菷@ß0ŻŽŁĶZ³ERH5}­G@Ųõ$õŖėhÜ;Ē&”j&“‡+ŠG‹{ |¤ ³aĒ Ģn”¢kx ė“čj»Ü»1ŪīhęoF] w² ”+9¬ĖČļīP¬Ŗ½x5vÕ”0ÄyĮ­Ż&ĢH ‰ø1ĒE Ēģ}¢³gŸ7‡n䐙 '©Ø¤šģč3R1ö5ėqZD«†•÷%Ŗ­ģöVėó]Ā}®*>·Š_UåėdyhŠoĖ Źńƹ« į ~ię>ż«“ŗÖ4’åC“¬PjµµÕ”·•‚3†jÓŚ¶Æaū86“f ‡†ŠŒØÆū"·t’ Ū³Ģɑ™…jIz±F6Ø düÖ±zķ)’KĪW8ŒńR£9vC”éÅZ×6“I‡OPbŽ9uɤ—WX±‘ģ^ƒmp÷z¬ČŽYŽń5UžŁœĘ`ēŽ¶öV^łĘėI| CÕō­WK,ńĀųž*°Ž!ŃķŲm¼.Ż>^•ć—OÉ;˜”9¤·µ’"9ÕŌõ°•ÜÕb„{„cÜ ×ō»ØöłŹĒÄ*QyenĆr8!«Č4Ē[|¬ˆÕÓi0Ė( Ī;f„G—DĶł”µ±ŁÉy¦ŗ ĀB}9VY,1Dā³!PŠ2¢ę"?ŚĘjĢ?kŚ7„»:†ė[{ČÉŖmhZŽö܀ ¤c§5ZčĀ_÷{ $ŃÄĄ`łŗšĀ¢nœŻ8ž÷qvŌCf…ŹīD>ŸvŖĖerŲŽmµ£åŽĢ¤CßVmo4¶m|ŹHźē4„4·¤Śŗ1F‹hŹMʨ㨪ćNŅ ģBü ŗ[Č,nHQ0éž+>}J ³±ĮźėB©­s‘äßBµ¾— Q~ēĖ+õ”ķĀ`™’d֍¬qš²t&›-¼l2ŠŪž $ūŽ7 )ŚĀ„žš©Ē­Xh-±Ō)œT‚ĘĶŠ©–xßĶSŸK‚6ĻŪäägƒVµW%ĶŽÖ/ŲŪF_),ƒŽ„jĮ¦5äEL§k ī+\Ō0ćżÕ˱Ļ`j֔u¹Ś“JÉżŅH¬åu©¢I®Vm?†mĄŚ.pŲõāŸk Ķm$ķČ<ŌŠą»eHГЗĒŠ$1E2ŲöŚŲÅGµŗŌ^ĶĒH˜ZeŠFĄL ™ļėWÄ«~ęŲu= lŲ-#÷%Ŗś5€Lm9>†”Ō*0WŌĄ“³y£!ƒF¾ƒŠ±mi»¶UŸžÕØķÄpp£ž“Čķįxƒ •Vī*]GŌ“Š­ŅAT žFMK!²± RFx¢žĘó FBFsL³±Nū›†?īœUs+Œ›µ‡ŚŁÜČē%ĮĒcZv–ļ #)…¹«z`“Ž<ÄpźOJ±,öūĄUŽåšēu.ōG\ ’JāÄŃ²Ä ÅG}2ƽ[i©KBč7/ ō5bŻ`XĆ:ō4¹ķø83X&ŸĢ2³„HĘ*Ģ¢XĮH¼½½·U«ėåˆb?,p6Ö”­Ć§Ķ qœķčkxĘR0œ”m{D˜8yš" gäT· itV0.˜ē9€kŸ“ńF›'Ź÷L‡¦D' ž(°E ń¾a\Ÿz›JūÓön.īčŚÓōK@ūĮ™9ūŻkb+QÄ72/ė\(ń]Ė’ŖŠ­žÉĶ>Vīģd΁žĻéYĪFõeʤ6¦AS¶,.ŻÉÅ:øŃ€}Ē5ēzŒ7­f7r+r6“T­-oä— ey:9sŠo „łŒį‰wųYė’jv )!ߓ€ė^uga®Čćd· ŽŽenYZėQ@CČū˚ĒŲ[Ŗ:•X¾čéēøAÜ±ķŚ­Ł¤„pœwćšäšk˜š²I¼ö6Õ˼›vß3ęŌTŌ¤ś»M§¶§E?Ł#\y’3zꩯ\,ØG•{޲.,ÆŽM­äŒŽŖÜ‘T¦Šõ›…ÜįGERNÖµ…($½ćž­Iź¬ģY’+1wŗX„g©jäs[[åͧŌašē.t«±!eć’1¼M?Ć7R˽Ó/œÉČZŚqN:³ •ķ‚ź "Ļ‘Īc IewĢG•°ö©4mź8¶+qš±&‹#Ė:DÄv®xū4·;%ŽėRģv˰?“c=jµŻõ“+Ź0{śÕ(ō[æ4«ź8Lr*Ģzœ©ž•$’Ą°*v¾'r§^:z–¬§†rž_ĪėĒ5bęՁ̋ņõjƒK±Ņ-ø†\Š “–ą>Ņ1×5‹©iYJœy/Ōƚ(2  bz|Ż*UÓÖįT³ßÖ„ņįYĆ+r=+NŹ{lķ*ūĄü*§RWŠP‡4LVÓV šó܌Ր±Ć€]7t ½w*¬‡ĒTm1h¶ˆÕ;ż)s;^NäĘĖDQ™“w˜Ūz`f–ĪQ’T6WŽ”ćo  ¬¹lō ā®iš\P¶č *‘ŒiŹjÌ5Ų­+ČOń© Fa–">8&“֑°“ęA‘«m¤ŌtE†)|¬\ž¤ŌVÓFĖ÷XcŌⱤ•¼»[i_#ļ3œU³ń;4SŚÄ¤ō$ęµT|Ģż£Nķ6vm5Ɩ9śuŖūķ„ć÷’‚?¼ÕĶfźņķ_,cQsĶK…˶ł5[§ltĘ(TŌway=£”ŅĖe†÷g;Ī+&kČc˜ŖōĘśžĆOk8öGsq&įŸ„Y¹Ńį¹€oņVB3½j¢ćöÉ©Ļ$½“ł fl `¤›[$æõ«?č)ó9ķĪk-ō CŽiŽ@ćŖ7†¬Ä¹æ•LqK’+į™q•GJ&³j:T36b]ąuیÓ?¶,¤p#ÅžŁĄŖ–zsE„k²QNeėW“6 Æ= š~ēQAIĘĢŽįŚTUÅŖ¼ČsŠ®±Ģ™ļćoŌŁ“Ńōų„Vh„‘Xgę"­ßé¶BLDw—µWå[z єW7_SœiāDÉUf#NAq:Ÿ²”Fō+ŒWQm„C äDeĒ#5Ø ‹ČQä|vŖuį µ„)-N-]™C½ ŗZ±ƒ© „ī”ē‚98Ö¤ ­Ģ¦08©XF¹Qq»šÅsĻvk ķŒm?MŽQø–#£%ŽäøxĘ:§Z¶ßgd屎œŌĻ:•(ąt“Y:­»—Ź’å(G¦Ēå|—·®x4ęŠx! LŽćœÕøēXĮČ#cČć5Z}@)ū’H u5¬%)t¹œ×*ŽĮÅŹ®fŽęœD— ,¤ȽÖ-Ćxä@8ĮØ­5ė8bį"|d+7µp•®£c.u{ɛ×6ś¢Ŗ¬QF\¾słU˜>×·śN öV=lj®ć‹1 k¤ŠóŠÄ½ń„ǘCZ:‘ĻlQueŁ:“öRūξ% '2ļ6‡E?‰.ubŠāį8¬‰ķoD‹(½pO9WzŠ/ččq †[§P•aW ¢ī uRŶ¹ÕżNéüCŖ“si#ķ'Š–×ÄŗEĻ0Ćx¤ŒøĶszgŒō©£}ŽĒ<=+rß]ŅęˆŲžę¹%KNV™ŻMŹ*óšhµż³‰°¶s…ĒĖņži×”1åōŪ“ŸNj½ķī¤ZĀŽ)†:Ž*};Y›hŗk!ž"­Ą«pi&£ųŠ5ŌÆkz”°ß#J°øBĆ©’ ³upc€Iōšl÷ŚKŸšąĆö±W4łōéāŁk{Ēżģā”źE;IMĘń‘Čźš•ÕĖ ’d$ń”ÅfA£ė—3–7R2ē?) žµčą<#%VEĻ÷Øīµ+8×ēv·=9Pt*ŗZŠćt’wœõūŒ}3BÕÕ_H¬v±Š|¾¹“+4§ĖW.ļ¢§ÜĆ3Ó85šž*Ō-„僕ļÆ"¢ŅĆŌ·*iŚ„×äx*ć~VöP3„lŲxzh”K$…zFām>õDbsŲåI­'iC[Żor ©ug-%”ҩҌybŒ‹Æ ł‡Rø„°Ī ČØ„šżÜi“Ģ·OJݚāt„f)$*y!jŒśāŒ¤4YĶW=GµŽYÓ “Ō«k @ĆtŃ@wQZVŚ%ˆ@ŲRGlę²g֣Ë„‹I×ńŖĖā;x”yKu9õĪ)J8†µŠŽœšń^銯i–¹>\(Ž)¶p•Qę`ø¬ų5[›˜F-„ŒqX>(’„āĶØ–;ŗœR§NrŃæ¼Ī­xS\Ź-žÆuk§Z“³L0 żęøkÅēø‚%(÷˜āø+æų‹SŌs}Ø\ĒĢ8RÜéŗvœi%›”`ŁŪ R“µgLĪ«|Ń÷Wnēh>'#Nb]=§Ē}Ä Yńõą·o³Z rGR Ēē^~±ˆnA ĶčUN vž–ź{Žką‚?x€V3Ć҃RåŠøc+UNZ˜š°µe™ZR% ĘŅMt–åkedłĘÜ«U—šŌwQ–žČ>gčUøų4„0 nH^j½ŽNķؚu1‰Y\еńĢ×J¾TrGõ5,ž Õgl¬į†x©[x:ŚŽ+ćVEĄ“‚@\ą~uĮSž°V6§Ž(ڤ®{¤ĘöźŲˆÆ$ķ³­gY&»kv}BŁć'KņćńƓŭ¼LlKFźMixsǚ¼RƄ7P’’-eS(ĘŅWFōńš›ęƒiłģ{æöœæf Ą²FąƒłV6„ØŻno³Ė`8W=ė”Óõż2į°Döņ0ÉC·ņ®ŽŚņĆR“Ł-·”żPńĄ¢ ķŠėu֏Q«ābßoŚlÖUžōdjCS½»ˆ<ŻZ±ēČüė?TŅõų]¤Ó•n#QĘĘō5‹syć8åŪ6›.ß\Œ×thĘüгłÆČć•yµÉ+›0¾¹¼·Č㹐€j¦­o­ĖŁ<ĢæõŲcłÕ;x5HhĢ2Jš‚o x…‹™“?wØ­©Ŗn^õ“0—=­fŃzĀ_ZÄĮ”(õaĒėQj~!0ɛĖW¬’é\õ’|\Ģ<»–éó2¹Ę+<ųÄR0ßscÆ^•沄{é÷™{lE¹R3®²ńv–÷ ]^Ć! .ö ń/Ū3įÜ~6ŃĪ”k,w7Š&UŌ`šō˜¾jēåBz°­}ĮzŚłfō’°n¼ ˜äD 3ŽõłėńēĄŗĻ„u§±Ōģ^#ś©ZĻƒU#ķpėÕv=<·Æģ±:>£<ūE¶’įdˆ&xÜqėYŚń{`ńWgV ŗh£ĢLa'‚PćŠĒ¾š7bŅČdcŌ“’kijnĢ÷&¶hų399#Œö« s 9gVš1Ņ«ßĪ Į<ˆöć©ĪŠ”ėv›[¦Ń!›7Č##<Óć‘98`ù¦Ę‚vE«†õÆm¦Ķ$,ą–wečŖ[œl’4R{½‰4Y$ł„$32ōŖ…øl.ŗąV߅mīlgw½‰£mø—łVwˆnāIŹGLÅ³ÉØäå“MNqVqdMˆ@ l`©:Hė¼1Įā§F3)$Œć湫Śm8›Ņ„£ĶŪčćGlņ$É\ ÖF±Ib$ \ĶŒs[KåĖjK±,n՟©˜D*?{”l籬c'{1:iC”Ėi#Aå3ć=śÖ–™"łA‘üC5‰}l^čŹŲ@Ż3é[.Ų`gVVłq]‚åܚ2jå{Ł-՛0n‘:œt5­į…`i6.ē\Œ ̼“½˜±Š-ń9ūÕŒ—p]‹e/Nz~ÉøčĀ-s7ckQ‚7‘YŅB\r+˜×ķ1ņʁ0sÉķ]\%åŗMąœyüė7Ę”|½å@łxėłÖøfāģsV„[8KŽėĘÓ„g\Ŗē*ėZ÷vo˜É(‹=hXÕ¢Ä@0?z»'4µDF)«­ĪWQvBVažµŅ.ül)ĒQZ÷°ČźĄ¦ĘķŽ˜¬é#a>й#Ž•“j&ˆŗe½ĪIŌ²”e^Y»Š»y·ģ±l8Ź|܀M3O[…; ,¤õzīŁ…-µ9 šĪs]KåŅčĶWUuU|ņs“V¢¼·[aė¹X°ę²fUY /P2Nj•Ä›ˆ<¶xā©+ź†Ņ5īēŠ˜÷(݁ō¦C(ŪåÆ āk* łcœžõ„g<ŠÜčMLŚŻ“ŁYz4)+2±*Ąuņ%bļ Ž2zŠ‘yH_%XµA‹ÜNq»ęļŽ±»½ŃŃeb)į3Ź©Tzõ­km2TP]Č$gĻ ĆPFGԚīo­-RĻxwܽ³Ž²©]E¤ĶÕŃÉ:$0d¶Õõ«(–Ō1ˆOsRk1Ē4h«$`䚖w·KhFˆįy*{Õ«3wvhię4²1D¤Ē¬ĶQ&ņ‡Ķó““t«v.ʾfīŽ•s²łJ 9vĶLSRŠæk.b}.ÖīfDf [¦ę©µ OWvbjøbPŒ ąõ¬»§“qĪ:+©ńDŚ–WĮuĮĄ®Wģū·®sŠę·„4Ö¤r“¬RXā3‚įˆ4ł“ų†éŹøąZf”oqē|Ÿ,j3Å30FŽRģĮ­—x³)A6>¼ƒŠUķ: bøDld÷Ż4ŹFÕē&¶­ö.Ŗ”³µOĶĒņ¬*Uč+•µ’ā`–Ļ'5…11L|ÅbJńĒ×I¬*&®óE¼Dq€i/ĘL6ƀæ6[½•‘|—c&‹uƒęRFy§[ŹÜKæ¾M3Uk$²†ߌÕ+VU—>[{ń[$š%I¦nĘŪ£ 'œš¶†Ap™Ėųk:Śļ|²OVĀÖŽf „ć×ҹ§-mcUŽŚMl“j‰*å~`=*öŸiö›Fį—p"3Yz;ÜÉrÅŠ…~œāŗ;H¼©ƒ2¾÷z}+9¹%kšF7E[øŽ€‘“„cĘH¤† ’åæČ g“é[¶qȱ…‡#q>Õ]Ä+pŖ[w±<Ö1ؒó阺•ū5Ė[gÕÉžĮ,°VŒu"µu%…‹².ńPÄŃ\hr@Ž|ݤ­)&ō"Iėsε8ŲÜ 3Hē,N*Ud˜dÕøóC~б]™#pźj«ń3~µéø]nqŖˆ¹q*Ė&ݧZ}¼žRĒZ­„ŽåV@@n21Z÷Vš1ĀĆżāy5„¹V…ó;\ŠÖä”P䁜ć¶)Į'iŚe“‚2qXڌ….ŒAņS5wO½}¢4a¹¹ ŽŌ„JŹčq“z\é4ZjĢĀ·zÆcx1B.x54E[J+&|ĄśUHZ4™LJJ±ļŪéX«j™Óeät²Éo¹—qž¢­é²©ŗŽŅ€gžµ•9`īŒU˜·® XHWk21\·=« άs+fM^I·G#g'µhxb4źŃ(|õ$b¶m¬ i‘c3Ÿ˜°žµµ4¶Ś|±BRK©¬ėG•DĪ0K^†bÅÜŖī$U!øĪMUž9Å£F‡"c‚qéTįyc•ˆgxĄcŠÖŽwl-˜L ¹ū›zQĖet(ÅŹZh`µ»+²œ†N¹Ŗ”öĶĆzõ­]L•ä Įk&āŻ‹‰ą “QīŽĘŠ6Zš0ˆŻ”±mĢ?:æ!&2¤µ™bģ§¹Ž8­a(‚Ž7Ėž ÖŗfŖ^éRQ›Tƒ“Ļ^*åHŁJ¶ö½Xf;·ŗķbj†XüÅ_,s޵ŠW3m)Y˜š£ .SexČļW®Œ‘ŚĘŅ(ˆcSG‘Q3ÜåwČ:[”–āÜI#ŖÄƒŒž¢µ“MYµ݊ŗt+$œq¹KÅnZDP«ĀpBą’?•Sє¤BXĒɍ¬<ÖĶ’Ē+–ݳޕ3jÅĘ/”Øoå.ńĘV]«š‰‘_+\²ł¤mąõ©Āc—ī Ń1d½RšĻP–ņŚkƒ“»€~£“UN0µĢ£&ŻŽ—Liōł.ČGõŌč ,×;Ai1ó8c€}«kD†e˜3"e‚·­,ŚŁUć¤lÜrü×4­=)šŸ$m%©§ćķB(a0")' v¬ß]FŒĘõšĄdžEa»I$ķ*Źž¹5bg1č 8Č­U‘ĆUŹR¹Õj‘Fé.e†<`7Õæ*9¶ĮAšrėYžš9āHÄĄ \:ūÖō4¾‘ķĖ$gĖĮ¬äåkĘ)-t ėxÖ1c–æ2Ę£Ōa°–Ź(¤ÄEyRśŌwlŽds(Īą™=j¶³m óB¦ąČØIu‰¹ę’’ZI‘웼¢Éõ ­2ĖNŁlDo‘†Rį5+ČgÕUaWĖ.7¹īkKĘR[ K{T’0Nc’OLÓNˆńF’"įȳ]Qå¶ä¦žļcsk­“‘„Ņ$w4ūĶaMäq$…\1i zzVF„-ݾ”bnUlŒW&÷­6«+Ę 6~| f٤„É]]¦·­ŗx`vhŪŒÕ‹kȍšBdVbTgƒ\“hv)BŶ’?Ɯ¹{Æ66oA–⣒š±+Yk{3±ÕtėMFĀD”Ÿ“ØÄ|ąW–k­sk©OhäČŖHØÅiųÆSÕ!“ūD²(łNOSV~ ][k>#Kmv0ö’īĄ‚:Ņ’iZHęÆŽR§†õKČÓ÷ Ęq³*:­zUѹ¹ųzžl›ÄL¹PsĶgO„ZYėmö2ŪnŹŽĘ» ²M;Ī‚1Ź„™œO­*Š Æ#OgČ“šÕ® ÓYmąœ|ź{šĒÕÆ®Ž©{6§ēO;6"'?§µhh:Ø“Xd„øLļ ÷qY¾,¹øŌÆöy~j„Cœ žø®WńZÅøŽ)«˜všĮ†ŽXn7Ģ#·±«¶ŗ•“‰3Ŗ1ø# ‘ŌW6tėˆņ²HYŻĀ“שėKw‚Y#Żø ź_zŽQ‹Õ“Ķ4¼¼ĢŸ$N.$™äóTķąg’­\üNĘ<ā¶5«—ŗO,ƒ€ ©a\ˬšJwœ!nļ]1Š·2&NKCn(™ļ|½ĆŽā»}#HKm1nīb%%o”ÆS\’Ć+hļuHäY6(į·3^™œ×“‘ŃÉ³ą œʹŖÕJ\¦°¢äŠz'ĆĀwZrF»f}Ą ÅPO\²!‰ažõ{ÄśTh"XŅ9­ä*Z1ßē5£mąfkxŲN0TĖ’‰£u“V…d³XĄŽC‚3ND„‰i“]Č©†ōśÖt÷JC`Ž>^µõÉÉ­YšS”VĒQkn$*“či÷¤j3ęō®I5 KįDē•~¶ņŌĖ‘Ēń6+9A­Ķ”(ɰ¶É€HK;ԒƬĮ¶…$V\•“Sn` 9Ęź±sÆŚÅÅø#œJ\ĖDRQj÷-]BĀ×?yot\¬Q õuõĖ6ŽÜ¼ƒėY·Śük @Ņ uŻ]„'¢G-XĮ{×3.ģ5F'kś-E‘y’-%r}ż+I|G ćģøĄéŠÓ%ń «[¼yāµR{4s5āČQ~ȀˆAqĘXԃ_øˆmóé„5F}BIepO\Õ —†NyćÖ¶å‹F ¬Ö†¤ŚšLø3\Ėž¼ńLxÄŠd3ķĘFkĢ(?ÖcŒā„±Ō&P¬Hļ“Y·m‚Üī̱5øL˜ß'æ<Ō ½qźOB+~ĮķÆ‘µĻ~™©$µtPUxēœÖ‘’’ŠR§8=v9—IŹ;6:–Ų\€Ģ÷āŗ⁤&hŠqÕN9«QéŠJ£ŹPć”9žTŚI+ź`%­Ł]Ćē$gŠAas‚Z§¶9­Ł,.ā’Té"ōsšE7P°Ü²~'4'”/]Y€–’Ž Œ{w©#µaŽy5Ó[ŗÉņø$ēŗóR‹?2.3ĘsIŚåkkœÄ°NåCüŖ ꜩ‘1Ųu‡M¾cņ!aŠdšN¤ZĘ3š¶£±Õ:ŌWzˆl4²ąūš›ķ·Č¹óeĘ:kXé×;ńäL¤óĄ«vZ-Ō·k©<ņµ•¢‡Ė&·9Į¬^#€d”cŠŌ±j÷R`}”ō5ÓÆ‡/BøXÕˆė‘ŠŒųkQn–ƒź1WŹŗ-ŪŽg>Ė{"—GžzÖ|’ŚJäłmŒu»k=P°`pqÖµ,­īQ Ļl­ž2Sš\©§2²³<Å'¼ˆļ"žÜ‘VmõkøŪ܏S“^™.›av6É +ØĘvāŸƒ’WĢQ†ČĶ/q莤5V÷’Šóøµ‹’~q’;ć„§ėWĄ‡>ĆuwiąˆĄjČ䎕f×ĮG«9śTū©ni&ģ‘ƒ¦ź¦įQ\ųéŒVŽø– D2`÷S].›į­*Ę!ņ+8Äjȅ-Ō‹|ż+U'sY(ü-jrk čvĄ·»ü T‰o«²ŒéŲ– Wik²B»€9ąb®ZéÓJ¤ķ;qŪµž¶2ö.×¹Ć5†¬Qۜp­“W“ĶõČ{‹Ė©ēąW[k„H'>[>­Ś“b±U ē^.G`*[­ ä{³+J†8UBĘXō9ęµ®±%°EżŻĖÅhŚCŚ"tČM[r‘C™vąw&°RwŠŽ\®>f“§BFÖ,Y’¾üU›­X$ĘØp Ŗzö» ŸśˆŃŪ<’ŻEcĶć0œĮźIčk”B„Óčr·Čõ6u ö³‡rHć'š”aā÷Y9žļZęõ˜[PŒ¼$ ņīkž½±Ö-ŪrĘÄćsÅt{(OHźaJ¼įüEf{-śČ Œ±Ē9Ą©×Q†ŽĻrćšń+Kh†p{€qZPŪ\ÜąKęFÄpu¬~Ŗ—Äk,SkÜGŖŽŽŲMļęņws˜Ÿž§EV;u+ĆĒMÄę¹}?@ RYTށ¹«vś=ȓ÷6Wäq’?f­k”¹’»GUl4ŒgølrrÕ­c§ų~ę=ر痒ä"ŅęBMĮ‘>^†„šīĖM…@iälgŽ/fßĆ&LńJӍĪę=AUł TćÖ žÓ°D^U‡ Ļ-^_®k×3”[yZ,’{?Īøķcķr¹ßvķ»ß95¤pŅz¹˜,Rµ”-ź{dŚß„"ʉ¢AžÉŖ ®ųK’o$OO-yÆžŽE“ŽsÅ,pL0!†1×4ż‹Ž©—BÓŻ>†±ńw‡­äU†öybų‰ė]&ć āųüX’Ų=ėå¤,3ŗ8ćZ·iķ“SgŌf¹Ŗ`Üõ¹ŁĮ%f¦Ē‹<=×@uķTµOč¢!»V*¼pyÆÓ¢uĒž“€}s]&™£i—‹Ė“N܂Õk ¬™Ė,]Y«Dź5ω̱2Z[Fē;w¬„ų“«4{ZPz”‹ąS*“Ŗ¹čIķD½‰æćęQŲńZŗTš÷R2§V“¤ßÜKk㋳ o>X³čs[śGļ]‡ļŚ@Gń(¬Ø¼+y°‰xä!ļW“ż!#”yzUÓŠ©Øś½9/xŽzŠŅ'Maā¶øRŒ³ޠ⬦ŗš€ćķķŪåj˵„@>mį@źŪŖņ^B‰ƒió]žT.–'Łė\żåŹ4Ÿ)({dk>āĢÜrŅž¤UF„7DKSijžćvmgUwüL lcéYھ·©Ļ ŃaO$6*Šxr6’÷iōsRGį©K ]#/¶ES§M;ŻJUڵ­ó¹ė3B˜ ūĢrwā¶“ŻÅjø…äņzTžhĻŹ‘ĢßīšŪŅōK¼ō8Āw85ZtšŌҌė§k抚Ėő>Õkå猩9­» [K™8–āśŅ[iQ(Ó£—’GCWķ4ȕÕ³0GJä”a›=(¶ōš_‘gL•$»ä³Z"Ń®Ą#©ŚlŪÄC@ŃMhŚĖ)żŪ ~W4źuGDcemĢ•ŅQIJyįM n÷®>§µOØČ’xę²/5(cŹ»GĒ÷æĘœ/= ŖN+­Iļ!0ŖŹ[§­Ph­ęlĘßŖ FŻŌ•d$£§Żkw#©Ŗ’qZ ‹Ż‘¼iŠHUĖdV€·ńzšeė[+ßq•$ō¬=fń˜œ\¹QŁ*”IĢʦ"Ś#Nżü“>dȫ둑LÓ¤µ-ĶÓŽNīµÅŽ^?šV;‡ Įrz՝7J¹¾‹ˆ¦qėŠé•Å{ĢĀ•Y7¢¹čQ½¦Ń‰³ĒKBFD$ƹ=+Ā€CŗK‹×ećų­«;;łŪkc«½r4–‰Üė„yõz½†g‘‚/ ßuP“LXŌ»ŹłĘ~ł­Ķ7V²mŃį8ūĀÆMżž±y’ÜBAŽŹ„b¹_+7xFģßęrÉugm2³1Ē”9¤‹Q/"›K%#Õņ+§I“)$ ›TA‚ŃQŻź:“D¤Ź_ Ś£j¼–m‘*N.ķ™1Žėe²-¢Uš•/5ĶŲū&ąlt©bń%‚c!~£Šœų³KŒ…Yc7p1I¶·<‘’“dZŅūM±‹żįN¼æDœŒK»s€)ńj^Ś‚³;“ĪØjVņ]gĖK…Ēv^)B–źÄŌsM$[‚óKŸ>Iې9­8’šžąrFrģEqÓiWČ6Ä˹½ˆØąŠ5g}Ļ#ąöŻNx8½TІ+ģŲļ"·ˆF6##œÓ„·™Šl‡kĆÖ7–ų¾:näV’ö„“i™8éÅr5Čō:}œd“05­"ņF%®”P{€AśW7w j/+yz€BG±5ßO«ZÉ6ÓŲd`Ņ\ŽYÜ'ī-Ćś°#šź„‹’Ž& ¦ā’Ķ.tMr4 ^Üš”sįén¦h$óźk×4™ķ#›.›r1€kR[:<&2ƀχ‰²ę¶„C äłz¶z¤åJÜDńõĆ­iXčM¾cŖdäf“åŌ^3“F##a&¹’ßs(ŗW<ń»Z£“{ ¶Ø±‰=½*͜ Ü®Ŗš‡3m`ĆĀG, 1o™ŒuĻ5ĻĻ+XŚE£ Y!FóܑޑV$'* É4ąõÅA3U„I9Y ·ęę³RoFjįbś¤r(1¤yėÅ"yŹø‚GqŌUKČ& ĘŠƒ§Nj¬-vÄūˆėĶ„6ŗšØŅ±#kńĶ=¤\éԚ„m%ź”.qĒ=jͬģӝ¼risK”1„ÉĪ#HĒsĘ*Eh@Ź;y<Ō.Kɀw`qČ4‘Äū3å°ĮūÄu”JV4äŠč6ķ`‘ŒōÅRŁ$ ēj劐ā21ž˜ÕeE˜Ėņž«U)ZĒ4éÓæ2dKpźv \‘“ŸJ}•ē¼³žŸv™yugyįLŽĒÆåYrxG‚o/Ļp{§£„ķx£8ԧͤ‘Ń4ŅĪFÅUČąjÄk!`eRĒėŠēķõż)œ2jźTtn I©x“ŹƒtEĄ<ž•”hĪmE:ѧ³«üµ½UōĄĪ*½Ģ›É&Y0¾†øk=¹_6ŔĄÜ6Ēā6›<Ę»):UĻ R ņC†.œżÕ$Ÿ™Ūmń†`Ē3Ķė6ńDŃ¢8ĘXb±tżCE¾‹}¼†×5i§ŃL³ĪXĘ½:PŒ×S:õvV+j“É,ĘKv.ē£8N[ķMd_2kRƒ‚ s­L𗆣ø 'r}ŗZ\x~bØ²ĒøņIė]2«­„ĮĘ<ёxŗeĢ›¤IF3 ĮĶIf¶öćl c¤ĻćVõH4ėrd_2ę#ĻĖXŚĖčsGū˜Ł&ć©ÅtGTœv9%+ÉĘKRk‹»hī0Öä‚>ņæ„J—Ip  u™Ą ¼×$o¾Ē3'”=M_Ńõ=?Ķ EÄMķŅ“©Ģ•ģE'b_Ō¬ō٤ĆĆ ¹õ#Ö,Ę; ȉŅHŲz×[ęč—Qؘ·NK °ś'‡%€l¹‰Y±Į85ÄEé3Ia„ńRHā˜Ś\Ŗo.B3œwŖŚœĒ$±ŻĘkŖ¾šÕ˜;­.IēWt»+Ū|#[Gt€`䊷UEhī`©¶żēfy|²mcž·wØ§Ū¼ŒGśģķž5ķVz]„ą 4Ÿ-ńŌØćń¢ćĀ6³®AXTžk?¬B^^¦ÆQBēŽĮ0SµW,3É:ÉØŗā>PV½Iüh¼G!>įE8x:ĢF<ˇć(śĶ;Ł2~«QhĻ,“Lø½˜gĪ ҟ‡¾ĢźZ@͜¦½sNšĘ™o4JŅnčzUū] Ń£Ś/@ꇊsx`¤µŒO)°µ”vć‚phZÜKł#†0Ga^‚Ž“‡ø`Xäg“įŪ(īŠVĪ;‘Ö—Ö)7”…VŅ’0ģüCŖBĮmŁ”9n}W[¼՜’³Ž·ō? 1 "ŻÅ0øĮ­Ė*HHės\æX£{Ēsŗ8JĶrɳʮ’ģ\7Ū␃Į*5cL{Hęc• qĒĪHÆi6z|šmšß·^+>ėšLźY+õōę©āØĖā"}jNŃ_3•Ҧ×eDT» ¢ŒÕūæ ĶvŤ–pģ2rÜV¬z,ÖX[yŅ$ĒR9§Ik?µ¤ čĄb²uR֛HŃPŒ—ļ(éžŗ“(ѳHs[v¶©³eÄ^üŠ’Ęń’1¾õI8ȬIŖXĻ]"0 5‹­9ntʌU’wņ*K§é±É G‘œŽˆ%‚ŽN&ǧJ£{ Ü1ņ.Ćīę°uøuU–ņ…ö~¼aξ#™ÕTŻłlvrėÖVͶKø‰ō=k.hėqµ£3GŠ•^+ĶÆå–į¶É”°󤓅ć_Ż"9Ē@2M7€‚ÖW¹Ś%Ń[ļ=8k~øĮ¤E‡ń «ÖŃé2(x’6ąæ­y%Ģ÷ń‚Ÿ }ęÖlŚ•Ü?9i¢œSŽ]$ıńŽKCŲõ,·üóĖ…`Ā„½µŠ‰s+ 5ćiāk”·t`ŽŸ? ÕøüCo4+"vēp$ Ö²ĆJÉĢĒėiĪŠzؗ“Œ·5…Ŗ¦“ „—Fó$īĻ&+Ɩk~že¶³:«©’ģģ4qåbęXīųäÆzˆŌ?u?ÄŚ„'4Ÿ-™ĪZėöÖĒdZ78±õ«eroćó—O™¶Ō׌TQ)šy$ō+޲ītk‰Q˜ć;b“’ł¢Ģ ŻšØ“F¤³„©Ģš›O“tY²Ŗā–ķ >źj¬˃wŠ:†Ę+B ;C²ū²M,ĒųHüźfįÕ\µ ū²²·:˦ų Y”Ņ_Zj—±‚aø·b:ƒšŠ¶ūhMÖĪm¢7j]O_–ĘG…nżēy?„8¹éȁB“¤×©Ź6—āH.¾YüČĒ8,3śWU Y_óA–ńJ8W®įŠćüEą›ˆK¼wb@s€„z~‘Ø©dA FūÄVŠBźC*7V”ńS¦łLėąéŌö>t“I»·lO$ōü*ģ«`¾ŠŒōžµ+£„“*T½ägéŒV5Ž]†pĀ“ÓģĢī˜ąā°õgO· K*õ¬Č|Q§™6©‘ćpR+)9µt™~ļĆ6޲{{y!;°Azóš÷мu„Ļgm÷HvÜ2|Ź}sé]Õ¦£§Ü[–ŠķCž Öf­¼Ą›»\ž…äĮÅm…«RRRÕųˆBQö|·?4~$žŹæ-uk³lĄt”.¾źįī?eļŠ†ņE}—EÉ)pøüėõ’;[1ƒsØ3©ūŖ‡ƒW!kUˆĒk†nģ+jÕ”9óIk唄zPQ½ŃłkšćöEńŽ«0“]k=ĝē|¾? ō)d_ZŻ…ŸÅڌݘ„ø>Ē„~‚Įbe9–Üɑ‚§łV_ˆ-Ö’EŅ-ŸóŁ›ü(ĆØE¶ÉÅÕ«4’²GĖż˜~ [E¹žŅŌ$P7™”~•ķß¾|=šĶ¹O Įįčeo»ęĮ¾@=2kzėRŌā…¢>BŒ?咕żjŽ—^JÉ&‹}lOü“VĶi(6½ļó0ž&£|©é×[5ūOü_.ķ6+o.Ļ[3łWé’±ęæpŅ5ꤰŗƒ°$9ĻԚżŅ“ė‹RÆ„{jużkư½e“’G™o¤4ėāg(Ę3ģZq§Ķ(Iėџß“wģł­|<šāźWśtŠē“ż+ꋀĘģ  •‡ė_Ææ·§Āļ|TÓ¬!ÓŲ›V!ŃŪ ē§Üׄų?ö+Ō@śĪ½Q…Ė hIcķ“O?³Œ”ńu/[)MÕųVŽgē[ä¬qČĢ*ćZŽ­ŽŠ¤3 €:×čĮÆŁž?‹ĪŗōnžG,%VŚņ ÷ōā¾ÄšĮ_‚~š–—stŖ–s½©ēŠóŖMĀ«„kłō=šu)NŠ«)oÓ©ų|ŗ]ŅZ«Ļ‘¹ogó¬;­:uø8³Ļūććļ† üI§¬wޱhā\ Œš?ą5å6ųEš2ĘŌĆoą‹C0L¬īó®ŗIM% Üą­Š§7UiÓSńvK óĢMųT¶ŗeĆB[ĖuU=kö³Ą>Żé‚9¼aó 3;9$ÖĪ©ū7|ŗ‰|ŸGG"9Ų {ЉTŠŃčż…;$ā“?mōłZ&ڬ‡j¹„ÅŸ3'œö5ū ńCöVųM¤IŠī‘O–é1#Ū ×͚×ģo¬™®%¶ń&…%¹$*»ĒßÓśÕū(ó©|¶3Ž1988ņłŸi’€żAƒZWŹĪāryę¾ŖÖ’e_é–Nā÷M»tlpī$ž5å>4ųAć 3%ʗvØĒ‚>`©ÅD°5¶.ž:…ÕŖ#Ī“Ō1•fā`Œ€0bp9®gt5…ä¬GÆJ8UĄŖśqs2ÄŖO8Ēj±®•UB¹;‡>ĘÆųy“`!@|šŗ~#*isr³®ŠdyĒšgöe·šL›F:°ėLIÖŹÜ8%Ǝ¾ōš|’ŻČHĀ©=ĶaeļVŒodBÕ/8ĮĘ2=k›ń%¬¤‘ČÜ÷āŗ]R8mŚY«¹†ü*¶¬Ķ.…##ˆ†Č銮 'vrÉ9j™ēw„J:2»'ÖØ"T,YĻOJÓŅ“1,‡ 5„ ŚJ¬Å”8ļė[6–ˆj6Źn‡`—½c’‹øaƒę“ēŗ'Ė øš¬«Ģ¤ĮńóN}j ģ¬Dą‘£lX›<(ę³õ›‡™²_ ž=…5ī£yUY7`«Š-®¤ŹķhFp2Fi `œg“Ó·r³… f“‘#8BŖF1VźXj lb,“ŽøĶl閭ö”}õĪ;Š˜A°®œžUfĻzŽ€Ø>µœ„}a;±²[³Z¤gzē“ŸZ-ķÄQ•`w‘Šæ$†Y²ÅˆÆJlY‰ē”ĶeĪŚ±¬¬“3ōE¹mPm,q]EÄxG#¶W”隣£“PŹdoź­)®Õķ¦™Õ?JērnI"Õ%k§ņ(@ģī]AłKnnƒń®jĀG[ĒuĊN~cĄ®¢ÅÖ}5Ō+“’£‘ҹ[æÜŪz–l€; ėƒŃÜʬišw†I”Dp1‚ e[^•y¶b…·|ŲVōč&ļ&bėTŅ;;­V)‚:ŌćAĪjöŸ>Ū–R>FP7 ótˆĀ®Ģ äĻ"ŗ=śy-Śłą÷Ą¢„ /tNÆ6²-ų­Ä—Œķ»Ė€mAėYPjWډK;t"5ąŸj_Hģc€K._×5­į+3o …S¹‡ĢG_Ę©%^Jä&äłblZG$\[’€JŌž!ör/ņńÖ¬épD- ²NŒź>ESU5‹Ķ؄03’µŹżķŽ«Ø/}޶2ŪŗģTXĄ™ŗš×x•Q<2ī9 :Šą/5 øfĢ…ä9t®ÆC泚Ś3Ėi*r°ą¢k-Öé̼šĀńƒS¼!¢p¢?½œ(jĮ¶‘Kf\—*Ø8÷®³Oń ®“¢Ģ—2TnUR$zÕJ£r±­8{·“×Ģó½KLžĆŌēŪ1Gņ¶Ņ&½7ö]…õ/.¤“÷fCøõĒSłW”x–äė7Ā( D'o»ž:×¹xwKo |7–$u·šęĻF$t«Ä5R¶0‡»?%ęEÆEg£r¶OēK6é‹g {W,|QwŁ—ł>^`ÜkĀ($“5܀§˜½Øb·‹Ź]× »<÷¬#J1ѶkiOX;#BėO‹‚ĻŚ¢•¾ĻUxĒ3ĶrovWhøb1ėQ%Äå¾wĻ÷Qó?7›Vћ:•äł*—Xć "²īfø8Ż30>ō‘ÜZ‘ūųŪ'ŗš†ę]4·Č'= õ°„/#9aļMŚO@A¦²@ÜĘYr;õ§[A2¶c—v=M6ŗ›±,0\;pÜ{֌:eŪĆ=;®†ä[iĒ„JśÅÜ8(9åhpŠjZh_·ŃļHČߟzK­"õ9Čl{Õxu{‹ˆŠĢŅ)'ųN)•bĖtčIčÄŠœv s.¢*ųŒģ$u°é7…NT§źÕ¾„t„*Ż)žUv ū‡P”ažŅ`Ń~‚ęVÜƟE—$»¢ć©Ø?³S#”8ķ[×±«Ÿ66ŻÓ†Īj}:GĮfCŠ¶ÕŒćeŪŁ\ĘŪ£•qŪµ¬5Ūrń'Ä?­$fŒb9Czž)¬•O˜Yū#„gĖhēQ+&Nuet;ķ“9ē B]Y²īņ卛ū¦›ΐ&jüčÓ[~źGC‚~lSę¶—ƒų¬6ÖöŽ5R&Ÿhć­iŚźvc„Ė6yłŌĒžĶ˜āePzóÖ£b”%_ہMĮōcUeÖ']k9–0ÖšŚĖž§h¬=Į…WβŒżÖ®VĪ #UÉknĀŅęź=’)錚‹5ńŽ.7‰£æcnä5»ĒŽp§9­=;Äślé·lŠŲĄÜ1XĆĀ· £n=÷SĒ„n”‚ö9¤ā¾ĢŒŌ›^ņŠŁIå–_Ż,N‡¦5£ :ƒ 1DW°Ą²tĻ źh8gAėšč4Ė]VÄ Nøē„“ŗ¢¾DfŪSU]ģP‘Īą*kx.÷."Ö®Ļsq€eČqÉéK Ģn+Ę”ŌźĘØö"†ŚtmĶäJ;œ‘Oh70>^7z¾|…·\9,ŻEWłTiJØćŌ,DXåJ[4E 0Ėģ>”sš±l· Ģm#c§ĖŠŠÓ °”+n`O|VüZFCvā¹§‹}˜a4Üę.ŪJ£k|ÜēŅ^Nł#‹ŽõŅ]Ų›ˆæćįaŒšėXZφšh’u#ĪēY«JUŻ›±hŗ1¼QĖ_źā×235Į€¬äńšYŒRYĘńĄē󮁼+vØĮŽÜõĶrž!š”Žqh„‹8äīöŖGFyĖRœīö-Ɖ#qęĮ#'ūT©ćmJŌ-HŪ§5ĶYčw‘>ß)ż+vÓBŌäIŁq‘š«„īŌŌź§‰Œ•éżĆuŻmĀ[$9īFqRh>,yļŒn[”n N|;q=“ ćœU‹o¤€XĘćźqMӊ^ė°•Wz76“ļĘ»wĘätł95rmwK‘yęÓt¬½?ĀZ¬'÷IŒuĮžu¢ŚT°@ļOY1É;zšÉŅWњΫ徟2xµMEŚŠ»žÜTh©bē=Ļj-aÓŁČ[3AÜqWķō¹gQäČŹO ­Ō¤–ŒĀ1„ž(ź[š’†,Cy‘2&ńœ N?*ģ,4ˆ–O”X Eq‹§ź6ģŚä2ÄVž…&¢Ģ«,JG-¼œŠį®ęµlī”s\©~&„ŗ@–^b„®1ĄÅIk ŲĆ'ś”ē®qšÖµb"Ę@Čõ4·) ·8ėŒ×3­7¢f±£ōkeo(F˜āŸub³BUeŲpFjŒSŸz»=F+R ÷`‘“cµ+Ī:”ć «3›¾šŒR«µ~n>’5?€ą“;¦eĖņk¼½M RÄ ƒŠ©g§ŖÉ3“œćwjÖ8ʉj’ŸźT¼§ ’‘ÉŻtąĄg?2[BŲ ,Œ;°ÆKŽāHŪ†2i..7ąŸJŚ8ŹLž§“Ōó¹<bń‘$ GåY·~ ŅŃvŅEßĶz² ļ3>Ōé`ūC€#łźk¢8¶–¦3Ą„²<āĆĀ‘(ÄH²¤žµ;čŠ ÖöJøėī+Ņķ“č,ąt­ie&ĄYzÖrǤm ½Ź7æäxō6:‘”nÜ «6šxŽlÜėĶ{vŃØ2;ąT‘ZY“»Ė‹pž"*~¾ž‰,”¬šū5²øAņD%Ų£®Ņ _ŒŁ0ė«zf½mģĻŻē¾ėT®­tŅĶęˆÉķŅ£ėq{hkõiGā×Ōä “OŽC‰yšŗ·š*Ž}*żåŽ“!ČH•Z .ĆˆŌžƒš=¬÷dĀ”āģR½²ÅęFó0#-g K¹Ų”ŽCƒŌŠļģå·1*¤esėVeT ‘)ŒšKm,lšQŽLąlōięŁXōÉ­;_<˜ó-›¶œWL·JŻ'”lÕKDĖŽė,/¤0Ŗł{@īXW–ŸŁĖ #>¼y©ō_i­7śDŽ˜ą=+†Ŗ”•÷;ØV¤ß*—Žz-õčB~hÕÉČ$vØF”ooÉ,ńī#<5s£]ÓīHū-Ō.ĶĘdŖ:•žš²‘xa“Œü¦ŠTō"¤åöõ&Ö|SLĖ>WøĶk~!¼•XylpxÅM}Ŗč*Œ †fb2J©³ī5+)£ƒŽ•źS„½ęŌ«)+9–ÓŻÉ6öŠhŁŽ$ā·“RīČ2Ø-»¾j„—'`Ąg¶i²jrĘøŽŌƒÓ'¬ „¹4+:zEU–ø²:›Ø&ć*ŲČ­ū=cLĮżä遥•³Šņé5mA’¼ƒÓ8čļ®\JēԊå–=Nˆāōhō˽j'Œ*<$9Ŗ ®…r'lJ/zćģ¤'i”“ŌVՍŚc1L£¦CVŽ”m°”RKW#BóZ½”ƒ O‘Š4xĒćRŚź~'+›{UŽ…—Ų/`¬všI#tĖvŖ·—:Ųb!GD#óR覬¢¾d¼D“÷džFĢ>!ń-»•¼Ņą9^j­’ˆ.o£1K,ÖNNŅU±æŌ£ĮøĒ¾õ­{–™’Ōƞ£ä“„Ŗ™“g79_óü š0Õ øß„4Ƕóž+¦¶Ōo `÷׈A抏N²½‘³q®įŌńšæ‰t\-üćӓÅc(Įźģt©Tq²*Żų²Ś `BXćņĶeæ‰ŚŽóG· „%«ŖO¤ēĒø?ŻØ5?Zy>`øŻžp{RRĆ%aN«s>‡Øx¦žä“ŗ1ļ0 Ÿ­šĪ±r«ŒÖ¤Ž o?1ŹÓ?Ī“4?1“ÜļP3…Ķi5B+[XƜ1>¦Bų’į—I!aŠ„Bڤ—˜_2ž0Pqšō(ü§ĒlLQüųźGzƒūĘvĀ rµėP·ŗŹ©NŖ•¤sśTņŪĘ Ü]ćlÓ5}0nī$jŲ“ĆśĮ!ęX·’^³o¼ Ż,³£ć UĀ÷Ł…IbZ÷·™Ī_x¢öīLĒu4|ä|Ų5“©_ėČq=ĹIČ®ĪĆĄ8]ŃÉöĒ’Ŗ­M įo6cųqšÕJŠŅč„KĖg±åb}Hɉg‘GeŌääfO5Ųž+Õ†-¢ĮømÄõ8«¶^³`;ä’Ē"”«Ek(Š–Ŗv<Š;9ƒEo+3w Et>‹¬Ü±I-ŗ‘ĄaŠõĶSG²TÄ^Yې6EAoā}y‰„ŠqŒÖsÄ>±7£‡KHĖń<ßTšæˆkČb8äf«Į¦Ż[”76.™?{Æć^½Ä3J$2²t'5%Ą°™žTIø#ŖśŚk•£%ƒš—5’Ģō«gŻĄ`)$U›į=²–ÓxŚīoą#ĄÓå_ö“б`št‘"Éo:m>`ČØöŖ:³hќ—-ģĻ!¹°k©?pķžv³~•šf­k1p%Ś ¼ƒ^½ØhZL€¼qJcĒ5@i·PĮ¶Öe‘šČke^2Ū_] •ļÆŽyž‘ØäFgĻb#łÖ©·¹?7–ūŗē®jī·”Ļ Ģ֛yūšńT Ó5[iAu0R7piøYsS+›™žö÷cøŪƒmæų5ŚHģ?rc÷5ŃŁŽ]Tø·ŠB8,¼ZHņJ›’Ź@÷Fk'VV³V+Ų¤®ĪkNŅ/Ź—Œ@1ĆV® ß¹#pG9n3[`˜Ä_2Dė·‘łRAtör„+y*…ĘpqP›kŻ6QŒZLµa”°ˆ —nxÉ~•­§éfĆC336ī$b©&·nB©Y#ćū§5~ĖVŲlm˜õłA¬o.Ę÷OK–÷߬˜ µG½iÓ]„!g2³±Ó5jĪī[ˆöˆ¢|t!³š¹ f/¾«ÅĶu:9ŚäZuÄʇMüeԊČńö€v‹QÆ®źčŽ;Y‘D’£ļU®-tˆ˜ļt_lŽjcUAŻ^ć©GY½6ĆEæŒkŖĖ)ėĮ#ō«ö¶Ōrmk‡—#9'Ō¹Ō¬-y@tjbų†ŠšņϦjåĻ%~SŹ)ņ*Amō›™Oļīī®xŖ÷>†g$1Į,zŌ±kęŸ$ \īź)ó^Ė. Ģöū¹ĄjQEä:®“Jé¶Ekįčaˆ,wSĒīHA­;kX”€(½¼,½Ś\ŠÉ{{†bńŽLéŽډtĖŁ~dø’#ßwJoäµkīk“ģ“ū΁ ĘążŖG±ßķo*L,Su qU“˜ĶÓ.|ąM2óTÓČFsĒ Õ+}+Ūøč™~ē\1µ2Ųž!Yšgˆ.gÕ<¹¬‹ `)lõ;)dŲ–¼ā+šŅGÓĀęY•=±ƒC§¹yAÕØŻļ”„&Ÿav­ ’F88Ø?įŅä˜H!dqІÅQ7V±Ök4Ē×8žŗōØß½²øE† EeURŃšŽ„ō{’]M»8Whw*yäņ)ntøOƒÜ½;OŌ¢ø…Z”žźråV"ŌcóŹK…?ķĶNWµĪ‡|¼§7­h>ć DFÜņy®>’L½¶ƒnP¬ÅzŽ-_ęV’dąSŅ+7R”’¼ÕŪ w"“‘ēĻ.ēwƒ±āÓi·L§dódŽC5e\č:£1!Zdõ½émōx˜īņ7č)·WśmŗW@„ż„­£ЦXš÷¤xEž‹3 æbi õ$ЃĆNįmóuĮÆXŠāĶē2E4LXsEÜɀUcĄć'ŠŅ8ĘŽ†OM+7©ę6>¼iH‰DŸ3ŠZ%{¢H§Ö-a+sj’ķ8ĢCüh}Bńø‚'‰ńČužµwM›X…‚M-“ z3ł×Elcš!ę¤[±ÕMg)ņµxżĪåŖ|ėāżmw^I BĶ™1÷€ÅóÄ1’£GóØĪ׹Wu6—m"°ąžpj8t©måó!’5P­IėmLŻ ©ūĻCĪ®Æü_ ĮdÓdŚz²Š· ėņ¦ōYQˆčOJōxEˆłäšAŖW÷QD6ł`©b’’“ųu³qÕĶ“pC≮kŠ=Åh®Ÿ¬Åś•ĶĆ7@ł±ż£d‚?Ż&¶4ŪčZ B–Ēp *%¼KTܖ’9+{}x¹)rŃ¢qó·5~ŅĻTŗŒÅ5ŹmīĮĪMt“Ė™MWžźŅĢUcÓmD«)+F"T¹4n’3šŌ<3¦ÆĻ4“3­»­f‹m"+æ/ģo2(žłęŗĖŸ°Ź’½»ūĆ8'XÅ£ĘFŠ’H:a5¤j4­-Iö1ę÷lŒ+LŅŻ÷&›rˆF{Öµ¾dĶū‹FČģĪAżjÅŻŁ…‹yw1ŖŽ/j„'ˆ™%ޜņ’?ˆMMŖŚę‰ÓٲMGCVA²)ńÕ¤ć5^ÓĆ®Ņe®ęLs…$~µ§®ėn Ūi2¦‰°Ę³%¾ńCŹ Į1ØJÕlĢ’t§}NļMˆŚŗ¢¬­€sĶkŽĻg©yŃ #ÆŅøµš€Ėm2‚9ĖāŸ}.„&ѵć;+™Q”·v:%¤ŅGK͵ųĶøU Ō„¶ŗ·ŠēŹ0üē»Šä —T“˜ĄO„r©J:\ė•:mj®`ŽxtĮpe·óē“ÜņTī5{ż<šŚaÕ‘]ŌW=TšWņˆ±‘ĘN1Z,N¾ś¹Wå^ä¬y„ljģę%.£¹Gn˜N1T'Ņ,µP^ÓPņr0C”ā½:žĆO¹Ēšš8 uØćŠōŠ6%øŚĆ’§QÅF:ĆC/«JKŽWō<^ļĮw¢BŃė¶±Æ÷žrU—Āq¤{ļõ[IÜ ¾xÆhŌü3¤Č˜X~ščX×ā_”“0+0<'®Čc#7«ü:øW³g?”x>Śk6Źš×jœT—vžœ¤y7lŒķÜ+oĆś6­¤N;mŃt+æ5ׄžīR-œVLXμ£/zĶB„\Sƒiö<‚kˆšQöØ.Ē\`ŌšÜ¶cmµžz(8ükŠn4/µßĮjĦ:ŠÓĆV>c+iėĒU*еÆaS„>k„sćĀŗ6”a[Œ×Ž™ōOŽŁ–&žŃ“Ė‘TCP’Ķ4ĶŖ có5,ŚkōäĢXd0—}ev ÄOå擃W[ŚęUR’³²Ū}žX@H;‰äj¬č71‰ŽŅxŖÓC"2…ŻĄĪ ih0£#I+sĄĻ£Ijg ½V9 rŃ“‡=ā­²#Ź’*mXŗ‘Ź¢Ē^:Sˆ2BʃóŽ”®¶6ŒåĖfI¬ ęH‡”®9Ē­dihļv„Ū8ījy^W„FĢYA©įĒe#”ŚźFŃź;Ö*-6jåeĢŠx™÷Ŗ ķ}3Pč|ź›Ž{Rk2yˆ£héŒ~›—™CA éTżĖu9Õ^fz “ =¹’W9ō¢A&Ÿ§·Kȧ ~µ'‡ęót“$€\~5©cmĒ0sµYrI=kŽ3kŻlčœtę±ĪŹ¢{Qę†0Ü1Uu?l@¹1„øźk^ŹŲ}ÆtaŒ py©n%€¶@ägŠ®{B"ģ­ś„l"Ō ØčØNJœg5Ļųø;Ďė’{]_4ū†œĶ2:®p}ė;tBh„Reķšķ…]9·9ēŖhäUˆ±Č+‚1TÆä]ün$Œ~5£,NÓmbō5›ØÅ½Ė.LŠ9Ż]*7fN¢VLmšn#pqžõn”g HݐzS4éc•¶Œ†Ł­TĘOµaQŲÖ:čĢ»5읕pŲć8­f2Ä ģ9&–KQ+¬L 2e©ś­˜ŠĄ2’<óYŹQµ™QMģBó'å•vĮ•Ęą~AĪO¬HŚC‚GzÓь‘ļŽ–ĖśŃ-“4Q¾¬Ō‚žrqŒš{Õ °ńÜł[Ōō© »xPŸ™„O«_[Č##ŠŹ+•©ī–†²’äßQ° :y &ėM³ś4±ēGĶÓ wŃģŁåcĄ©l$e¼(ß0|Ę“Š’č(ĖCGĆÖ³%ŗؐ`ƒŲ×5ÆłiØøf ū‰Ś½«³Šē0Hbǚ̄@=sŚī”`¾7“ʉøēō¢•FäŌ‡:vŠ—CPÓĢ賦Äoī÷"³åY=¬»W”Ē„u0*;7” 8łsRżŽŅK5ä›%' Ēé]<źÖ9%)YÅ“H¶¼tq׌©GÅp&vŪ é]u¼ziÄpČęNźzT~ ±‚[#oÜ絬ewc)^6ĮwpßÄš“ķŁŽ¤øX,ä’&#Ī$ŒV'‡ģŽŚč3ĀńÄz×[>¤ G“y{‹ų¬j%뱓=¤ćĢ™£ŲķåŻ»x=O"®čQF¤Ē4L@?+€+6ÖvKĻ$”pĆÖµę˜gĄnk·±“b÷Fw‰o8öŗg'&¹««p*ݱW5`ĘŻŸ$€sšĒ»å”†$dÖ“āžŒšK’²Ló«ņ㨫KlžG!½sUķo¼‹?+fdݜ·„EūłŁf''īö”©^Éh$ū–…ŃŃ ķūĒ„iŚK,Ņ«HĮ‚¹£]G5ą‡!$Īā3ŚŗShL"ĘŅąŽµĻ9$ģŃŠ¢Ö¬nŖĪŹ‘łl2s»Ś–4Ł-ŠžŽ•#æŁĒ $ Ų¬Mf3· ”dƒB•Õ‘i÷f³±øµÄ †N n„Vl¢NSƒœōJ¹£E,`•ŅNrM-ńŠ9ņĒ œQEŠI¶hŁ\ˆ`_fóéUn¢¶Ś@ 9`µ [Ż0ņŲ’¢®E²[V‰[”żkģ\#w{‘h—ńĒŒ"“j¶#šÉń…ď4e”«žzv«Ö ²³pG9éoäź"Œ¦^°é’Ö«ŠJIŲ\——BφāŌ.ģÕmĄ¼j=cM¹Y÷Č’ŗ-·Ö½EÓRßBAo02‡+śšę“KՏTø†š‚ “–ļUƉ"\¢ōٜ}ߙM"g`čÜńÅ4½Ģ–|ķČy'Óń®ŪW‚Źę`¶Ź Ÿ©®^öĀUžx`M°Ē+Tā㔌£=Rf­am>œdH‹ÉܚóbԤ䪨Lœę½ÄKmg".ļ3NŽĆŽø­Ip 0Üõ®ŚMĪI­9,cEV ķĻoJ»kF% ƒ==ć6ŃłV‡‡ķž÷SŽ%RäūŠÖSЈ¦ōclģ$–į³Ļ"» /NE¶ÉVŽzÅjXh¦iŠī† cŸ%ßŲÆ/,¹^¼š+Š„nmŽ·š¢iØnLBwĪ­oß[D`o$ŖEuĻ,k+Ā÷"eBźßĆž{V¤µ£IĖg`ĻéYJ­µ„ĢõŲå|M¾5DEéÉĒ>•ĆHćvgäĪlx†w·D]ŽbåĻ„ZŃ®&·øhį‡p‰°ĢdśŃĶxŁ!Ņq»Œ‘Źų’åķ·@xpp~µ¹šŪNŸģ’ÜLå$ŗOŻē”ŠßhŠk^t²Ą!”Õ±Ž·tč¢]ĪT[€„g·­E^EXŠ“×±ĀźpČÓ?›ņ”8=Ŗ”’8…”ŽJr®—\‹Ļ杲bÜŲÅbė)ziņ,œ1Ę9؏*čG4œNjīā+ ŹU™³ņśTqŽ››VĀ᱌ÆJĖׄxÆP»ī1·Ņ“<(Wn ž3ŚŗZ\¼ĢĶI·Č„‚Õö' »'Ö”Öø‘QĒ`+Z’);²s‚xę²ī†ķDną'Ö”T½}Ÿ»©UbXķ¾Ń0R²8ČŖV·Ķ.®³}ÓŻ 01[×ņņģķć23”@źk+XŅ/4żf8&”iČō®šqŗnH䜒{–äI„ŌEԊ ’ć­†øhÆå mßÉĒ„aźķ"ÜĒE°§–nœW@ös>ž“3&0ė\Õ4ZcÖ#Śrђ¬P÷Ē˲‰ gp9¬ūįäDė÷‹¾ƒŚ“MŻ"pz ŒÉBŚō"­ŪŌ°š—ć ŚØéžxŌįĮlnćœUÕøh‘ōėŠŪµ°³Ż¦Ü ™¦Ÿē•qņ§µoģ É­ =`“ˆJģūå?0CĻćOæD•£vƓĮ=?šį­āÖŅ8Ł R 1ĒCMŗP·NĮĀ[ąķµĖktĶķīŻnPžQ1FQ„yhä{Öę…m¦Åd®É3HÜą ą÷«ŠåŗÓåŌ%P"…I\’Óš«šwŲ¤;ö…U(:Ÿj%%²5ƒš\Ļo3cĆSm‹m²ģf9¹eöč™"‘Įł™™Ī7qY¤›Õ‘)$“9Éu[y™aAĮÉ8<šģ¼7ÆB—P`‘FŸ8$Ųõęše’Ē4r66ŁĪ*Ģ!÷n čI­ēF<¶*®7iźuŽ-×į—V@€ł@sŒeqO³m.čī;­NÓü_ŎµµūEų¢žüGmƑ“}ÅłVø­+VkOm»Iš$s…ķ]F¹ØÅ«xbēÉ·Žǹן­\[R\ęPŒ"žG¤Łż£Nićw3ĘŲ'8ŖĶpŹÄFGzŸ i×­au"Ė*,dīĘj1¦^‡Ÿzép[¶gN£QåH£,sGĆļzЬųG„zgŁ"l‰mчØ,:6›*€bŚ}kėł”cóæc7¢<āŻUČ}jüZtN¹Y q]¼¾µg%%ŲqĮwHšŅ*ó+IéÖ„Ō‚WLŗt&ß+G o¢;(t•HÅ\‹DŸ8ÆFžĆxŠ„(ĒéÅ[’ˆĆØČ©U¢öctd“gö ȾUMŻł§gŻ–¶8#Ņ»IŚŽŲåž<žŁŖ«ØDͱ…ķ`ÓŚ>Ę*1Z\ćå“eąĄG¾)ŸgȦöÆF°ņäŒ2꓎Æ“eõ¶Ūv>„:ī Ą,ńōć *ģ:¶;†ĒLā¾w³·½ˆ¶F8īk[J‡Q–įvG0÷äQ<+µŠ§Š×Ž>„·ńH?Ž<ĘÆGtV1žo±ĘxīįżrįĮpSżę"ŗ½'Į— <©ž¹sŠĶSŠVm^ōŸ»s§ŌļbI–éęÜś”œ×-«ßى÷Cm{¼õnÕŃŪų@ -ü‘ćŽZ«}ą›ČÉ"ķŹ· ī9­©Ō£ŽJ°ŖåĄē[_Ž$Į·ŸŽų]üo,GjBʃ¹…n^;ö…lņrNj[Ÿ‡»ģIw@1޶NŚdrÖ³”t1bń«F~Ö¬ø;H«¾4ŃaĘÉ®ü+Xųw“åÄvŪXsųWžHŲ(źvž~•~Ā-{¬Ź8Éģćfzm!aäłŅgŽjÜmę_ß!AÓ-ŠįtÆ]8Pćøäk£µš#y EŲ}óĶsJ”—:łźŹĪ¦«±Śéž%Ч“ öØ7‘’:UÆķŻ=½@; WĆĆ$¤Ē3ć Ą«išīxW繐*#B)üw.S|·P±ŲI«é²²\ż‰oš«zN­¦Ą9½‰Ž8Į5Źi>¶26ęvŪÓŠźt’ éÖVū–ŚY߯/NÆ-¬Ė£RKdmŚk×6^! :ķÅPÕu½67)-Ā1ʱõ+ ¶—eµŸŒ8ÅAmąė‹€^R±ČyäŌʍ%¬¤e*Õäķ—åń.šNŲŪ t5fßÅZr¾s/lķ5‰7‚nA)#¾x©ģ¼3H„īŒdŽœÖŽ+|DB½W¢‰¹’ ”\Åv›±÷[½W›Ä³(ĢQ#:‰1št³‰wM4m޼š˜ųkBeøXżv·ZĪ0£öµ4”±6÷,PµńŒ(qs!< kZų§GuÉŗ@ŲļŚ«Gį] Œ#$¹čwSGƒ44‡pē†$VN&ōm*ųˆÅEĒRšń „¤y2EŌē­mč×¾y ćb³tĻ YĮĢJŒüɚÜÓl^3…—GPg>E¤YŪC›—ßEąÓ!Ģj¤Ÿ_Z³göĘ8/ƒßÄŹ©Ģ™ĄėGŚ#T>d„ƹ¼'d®‹rÅ:ƃ"¶{ЦC§?>{ÖV„ŖFŽ\r=Z—M™®£_ōµĮžEj ā®ĢOiš—ü–‘Xö LhAäFĶīZ„@ƒq•]æŽVG‰Æ.ርµ»¾GŽCZӏ3²2©SŁ«³VAüqš;SϤcdH¾ę¼¦ūTÖ fhŒźż0ōĖx’,oŒIŽpTóō®‰į*®·0§§SGuņ=ļdČņ&*§’«Ö‹½Q¤…VäB{75Źéž.æywcƒ£Ņi Ų -»ćבQĮ?~6eKŚM{²¹™{}o”¶= S“Åŗ©\[1P=s]„®— šRį‡$Æ&›qįūƒ„óC/ŻÅiĻAé8œó„‰JōäpÆńö6!ķŌā¢?g“ż]ŗF:d ~•ŚĀ#hŅašĄö T’ųG–݇īÑΣż•l]8āķw©ÉXųśģ²`aŠÓ‹ĘRĢ Fį ­+‡&FSŪŚµ š=”D3=V2xtΘ¬CVfN­_Č3åĒ"ēĶnĮ­Mäū:‚:ó­;Ų@›‰bĒ£ńVžĖa„ |ÓŌg³©R“v±ŪITJ×1 Ōo¤|øžī*ŃԚ>mŗŹGP¹­˜¢µaņĀ Ļ8¦­•¢īa±oö³QĻMō3œjÅY3ųš!€mŃ|Äb§¶ńSGµ`·ßƒZŚĶWĪ&-ėRĆmi°”³Š?B(n‡b)¬D–¬¢nšį—ɳŽ.3×­_·Šä¢–ōbĀ8”œŖ;Ō’ÜBŒčÓøŪŗ„É="'[l²” "„_\Ó§³¶Ł’ņ‚xn*¬³@æ1ø Ē9”õ‹£Y”€8jžZį Ņå÷Ś%µøŚ\|š–śź;xT¼ לV$Ś„Ä„CŖć _ėP^ hžW2Īģē5Q¦Æļ2*Vn)GTmii+i&»nŖž$“‰G”¬ųąޱI³a²U‘ƒŗšŗ>˜ė»dÜr 1Į®ˆįéŪŽ¹“ÄUi(­uOŻŪŹYmUÆĢI5ĖėŽ5Ōīņ ;¢ćŠļ“ż+Hhö2ÉČĒļ}i×Ó„`Ė7^ŹĀ·¦šš~ņ³9jÓÄMZ2Šń«ŻkYbŚę’¾ńÅSŸX՝†ė‰™G`N {QšfšNpŁĮf¬Ųų3M,G¹8­åˆ •ĪXą±mۚčš+‹ėŁ«¬§=Xę« 6źė…Y6±ė_GĶąŪE¤+/÷p*ƒh0Z¦Ż×æµÆMÆu“,›÷īxUž‰Ø[Ź £ZՊ |Ą&…Įš÷ M&?+”vćø¦\ŪŚ*(kT-œd qY¬[ŲŁąłc£<æAÓ Ü‡†äĒ‘¹5ŲŚhļ"«NŠäqøV¤öö( HÓUI®ĢG ĖQZµ}QŃMF1“˜ōŃm3‡&Gj±o ŚČv«³Ļ"£µ»žAņG/#%ŖÜIxĶ‘+!ĒV2œ»“*jZÅh>? ĄĢ øŲ@éZ6:jŲU(äžõU4ĶB`6Ī€č kMŅõŲ›>LĪ3Ę$ā°I8źŃ„<:¾‰——H¶ ž“mP8!@©”Ņ“m£6ˆ§Ō·«§Y\”N·ž¼ćÕė‹[h¢ÜćĢĄĻl×7Öz&žGBĆA.f—Ģϲšī—×Ć0Z’|ž:£š¹¾$£Vā³/µ˜fFX&øbAė öŪV½¼¹&ŚO½+HĘ„OŠF$ ­hu燹[Ÿ²ÄųģŖ‡_ŅR/ōSƒ§ŹĀj^ÕäH!RŸŽŪNѼ)~÷!J±<óNXHĘ<ʉ1%'NVvńųŽŲĢc•{åG±māq7z05“„x*å¢exńÜѶšW•(g¹ƒĒĶž5Ķ5BŽōŽśr¬“·č6ėY’Rv\ĀĄżÜŒqW-52č‹#!,9 œUµšå…“`pjX4kr§lkœc5Ųf¬µ ß.·"š(rē¶Ž•-®§eS"cŽ?©§’b’tŖzW,ō‹v‡kF¤ƒŌÖr• ni]ėb–£ØŪ›2Ös’Ż2uü+“»ń©otŪķ”&xaœž:×Yqįū6™YÄEhA£Į !YŅpž¢µ„čB:«œ²…yæv\æŠ<ŹćÄ…Én¤‹żŚµcq¬Kƒ4³KŽĻ„X£n+Ÿnõ:Mm¬f ĒqVėSµ”Ó§5w)kųĪ–‰3·’ŪČ:ä+\iņIŸų™!ĘćėZžEœćäņ ŸĪ³5 ę%"ˆ*öÅfšžĪŽ„78.Wś ‹C·óń%ģņ3÷² śVĢ‚BĒOZēF›7£F@źžą( -ÖŃŌīĶiģęöœéĘ:ÄÜ_is±2Ųć‚_ śVuχt(¤Éņų=E@*RYw{ė[šr ‚‡ƒÜR½Xļ!ņĮ„Ė!“ė׿̇ il­X>įź95ŌG¦Z“Äl§§Z•t•ĪRįÓ²j~±­YTčÕnå &•p„Ę;ŽÕ£ŁgM²Ą¹ĒjeĶ­ĢQā;ƒ“Ē#4Ķ5.”yÅ$ĀøēV2Ö,ō)ŅkćD­g ąŪ‚«Š‚j&Ó`‘‹m*ĒѱW„‘ Td‚HĒJ±¼€+Ö„Ō©Ün•=¬dŧ”\/–Źxœš‚ļORĄIóéZ²†ĒŹŌäÕVicrģ¤ŲĶj«JŪźe(E;4Ae”Ū©±Īy­k[hT2ˆ@8ĄŖp_łå¬ģ­×ĘjÜK3 —rGLŌ¹Õ*0§R%h Š*¼Č‡ ‡=ńZ e˜ēėP²”Põ¬”ž¬ŚJ lTµ“°ĪÜ{ķ椸±ÓNÜ[”=xJŽHļVMŹŠ…=:Š—2.ÄI®üfŗ9j%īæÄęNõEČV(”#ņ½ČĘj¶”„‚Ir{š.uKx£eņČåĄØ›V¶{|Å<$‘Ęę¬ćķ–®!7FJĪE BĀāRDrł#±Uę²×Ā’ĖqęIyqĻ<𱩪øóÆ/@‡›iā{+fĖM,€’Ā»#*ź;\˜[ŻÉ—bšå¤QÅå`9-Q’cĮ>]Ø#żŃš­t™$ł™×'ęµ­|I„; O“ųŌżf¤tqf±ĀĀ^üdŠŁŻŹĮoJ:’pj’GÆļ.Y™\=uo«iÆ„›‡<šēµ»ÉmxĶžĪ­Ø×ęVi˜Ō£ģß4d¾e{]fÉdĢFVoī–£Wń,š*•¶cƒ×5B,Ė²C³#õ£ĻkĻö9"_įqšŚQWŗ#ŚŹJĪV“.»4ś2Ÿ0cĖŁÅU“Vh±öm¼ė݊ąęŗ5ż:Cū½: ėĒ\}…gźž ˜Ż…‹M±UH‹&”WM~$“ćnY~=©j—œµŗ-žxČ5œou…nfūBžNŅ:WU«YÜźVŽlbĄĪÕ®QąžĘrŹŪJœ•Ķm J7[œórŒ­P‘|A«Ć.ŌS{֜ēˆ4&rŹĆ< Š©§%ŌJ²ZFźx ³š±—øņą1«s‚)ICķ-K„ēĶtō»æ’rĘęD ńĒ?…mč~&ŌlȎ껋¹Ū–üéŗt„‘I¶Až>ķoX/OÜĘ9;EcR”%ńD鄪Ehž]§ˆą¹6^m¬Ä`¤€ŌGÄZµ³:G<``į3[¦ÅeKąrCāµ-dŃ󞩐÷ r+/uhÕĶ¢ŖKXŹß‘Į^ų æÜ²;røž—Āē&dž2;vÆQžĖC»!V(•˜rHÅ]³š¾™°‡’=Ož*œV—D}J“ß¼īyB2¼#Źøpż$Tń[źžjŗŻÄčFOų×­Ć”ińqöDn?»S®™h l·‰N8ČÅgż”Od®l²é’56Ņ$ŌŃÕ%K9—8Ē•“õÉ®ˆĘn¢ŚŃČˆ€ÕMoojļqĘ·£ā(ęę§ė}ao«}™Čó oAŽ`ā;Ę$œ™Ms2x2ņI?v|¼õRM{Ō’Fē- +z­$Qڹ÷5ÓOŅÕ“ĖÕō’#Ä-t+›)Y^™SĶu¶Sū”RWS^ˆöĘZb×Ļėš~«Ņū¢­W„Õ££'Ų:KUr];F·0~ž˜āQɬĖķMK¦ß¤ÜMžŒ•gE‹V‰—ĪYGlµuŚh»xĄĢyų»Ö/(=ΘįŻX§Čät­3KY£'I»@:eˆ®ŗ K£R‹Ž›·ćVnEŠ.ÅČėT'±y‰ónģqĒjā•Ngy3²0卒'Ś“»!ŗ‡pźŖĄŌ Ģ éõ–²ŪD™FūY!FĘ2Ɏj՚ŽZ6ŁćYšŻ^“Ivw/ö•‰¦„;r`ć±Ęk6ź+““÷^L#·Ļ[°īsYÉģH©'²ŽŠmśRtž„T¢ä®dé)Ŗ‡żé£ĒP+£‚qäĢ7c;V\Ö·¦åˆĘ1ėRE¦ĀĐćźE喬qŗ·/3C°’äžµVāņŲ&Ć'ÅXžĻUå‘ĘGÖØ’bDÄ“×{g0Œ7lrē²P_yÉj÷yC'‡ō­ h”hö¢cp*œZm„ŸĖlõÜNkJŌąÜŒæ5³WW.-„ŠĻ¼Š`dII=1Y&Ųßm[ e'ūÜWR|‰p¬ĶŠ_-A€1Ą Õʬbģī`鹤Īwū8H»¾Ź°ž™Ķ4i©ĢĒwēšŽ¼±3šd•;?Zmž˜±ņ%”ćūĢM7‰óĀ);Ų§i£ß4yšł‚sŽ•tƒoóŁĻ÷‰ļZū#Ś’W ķNHcxČV}™ĮĘkZwŗeJŒ-±BŅŽX”¬RŪ“ÅZµ‰†D޽©’¤V ±‘‡ØcYžæam?Ž”°=dUZl•8„g£:ŠEč‘ŌlĀ7ĆDœõ!sPiw"śš0!†~cŠÓŠŅV‡ēĘGR•1kf9)=Ÿ,ö.6µ®}Ä|}jÕ©Ó"“bˆ›ńÜ ‚’GiČĶaœę Ó4 ®gøiQ‡FķW(Āß4§+ŁĒšs©* + ģ*‡öœ{Ė ‚=kq“Ū% V;u¦&•`NZ,óŸj˜Ź¶/–W¹™ŖłŖU9ē9«ęI?šÕ›<ć]ēfaø;‡LÆZå¼O¢ųÜķc*1ćNĖNkR¬£Ŗąu÷7.÷^Tƒ”łÅ\ÓŁ¤‡ ā;…pZ…Æwī»y ĻPŗ›­tńåwō<šU!¹S._“ŃŠ2…PV\äzԃfV`Ņ:+6'Guhe‘Wļ­kQ!„d©AĻ$ŽĒDdŠ2=»#FšCæ‡zņæŠæ>ųÄÉ.©¢B²Ļ÷š}śW±\” m Ķźj"nōś ŅyÓž±œčF¢½CąļŒ’°ß‡5'Żį Uōœ™n²ć>ÕĒéšOŁv¤“ųņ”]ĻĢ×čüÆvb*‘ydw~•a&±ńó¦µ1žøĪk¢xŖ²¼–„R£|-Ÿx—ö ¤īҼe ·cī¬ö`)ö&¼Ē?±ĻÅ=3Oø’m+U…œ[I‡o ÆÖŁ/¢UHŖ@Ęj£źQ9Ų_ŸPæįYS¬’÷ ŸęmĻR-ØĻøü'ńŸģūń/JµQ{ąc÷ͱ|ø·łW|BšÖ§įmAōķ^ŹēO»C–†tŚĖõż!Y¤39aóqĢ½>™Æ‚’ą±’¬µŸIćŻ3÷wśz*]"®<ĮżļŅ»š.zžÉū¬äĒc1Zj¤•×_Cńõd1ŽļÆ?…k]Nh‘ĘÆę‘U5:h§u’§½Mı(vP 'zÖÕhø¾WŠŅž&3\ŃŁ€!Į H«ń[.܀:äsT®g7W­q·Ė8ķŽ““ØŚkW~brkަ›*.KŽ35l¾p„Yxć½F¬2“ņąV”öģ‰.TŒŒ“ļXž[¤ŽĢĶĒNkTļ#$ł]£±čžÜ<摊ģ:VŽēwe,9„ržŗch¤³^Ķt ­-¾šĒ…$cŅø®Ó:Ö»½ °³—€bpTö÷­« u]$Hrҟ™‰ėŠē®UŚń L9ō«Zf¹öe[Ybvp”yS“r5RQ›!ń_“6ģ±-Į®W\µ w*ķŻŚ»m#žE*?śf°¼Sé™NąyŅD‘Ļ(8­YĀż‚[ƒ*.ąĄ sz}ćĖ*ķĪÖ õÆFµ{y¹Cå6Óe¶T›rį—'=ė­b^£•:m&y֕gv“* ø=Oz»nļo­G5ųt Ł*j됹\ĄźI§“6×w,’$LĢ>ńōśŃƒ¦¢—0BMF裮Ų[=Ęc¹ ½qĒ5¶Ÿ šlģW ł@¬I¤o08ź995v×U6¶n«ņ淚qа”$õf5æ™ū,…ƒ!Č«g;<üdsÉ÷¬‹†y¦i ;˜ä𿤒Ŗ‘“ļķ„;; -7: oųœĀ\°N„Ö÷Œæ²oģ'G˜/ِ²Įc\Ŗ¬FĶeø—ĖŁŲ·&”ƒN{ī"”*cw#­s:KJöhŅRnÉ+™Ž7ĄøN=)u‹{‹JP‡tqß©«óŚĶ§Ś;æ*£ Ö=­ĆŖHŹäłłČ5֝ŻĢ\l¬Õ‹:–³FH$ąŠßĀĘī锯‘ŸĆĖčr?œėĮbp„ojķ*iqņę¦M¦.[Fļ©‰Ø–{Ü©% ążŅk¦štļiw 3ø#i5ƒdŹ—® œ€½źō‘\%ņŻēĖUäóŽ)W’’³ qw¹ÆćKWMr+“ h‰ p ¬/ķL‰cȐć+Š ]STžöń‘OÉėTš`£”Ž äV—"RGBIl÷/ßĆŚ2ØĀ°ćĻŽG J~ųlc#¹Åm}½fTQӂķYW =ŪFsÉĄētÄ)]ō0®JåŽXŒ uBFe\®r8Ļ|Öö„c²9YNH냚Äģ‡ƒĻzī‡+9Ó±oĀ%†“'u ·Ō׬\ȗvŅ[ʱK䨫͓(Õv€Ūy&·­._cG1 õʼn“§tuӏ»~¦žÆ¶õp²ą Ėõ¬©ĖĒl¦"X/4Ż9fDø²y““«W‹Fó§Ż“·#œÖnÉhZvŌ47™×‰¶ąōØī$I®^%`é÷sžõ¦¦Ž=7ĪTŚ®3É®wL"I$ø[§_„ 7W°ēZJÉE²ĀŅ*€˜_¼{ż*XµūF­“¶2AąV\w3ŖĘŁ®‚×0Ū¦cRĒ·rj¶¬Ł6Ņh¶×V6—Š‹”æ~WrµkD‘\ݼ±C¢5Żrž"·{.źūaT€łŠ£×„_ųi©°š6RB‡®j%MÅs”Ā»”½œļ ßMÜŽŹ¢<ę4CĄōéXZߘš¤²ŻŖ pNģšk²Ōą“½Õ•$ŪøpŹ5™ć8ķ$G€(ž?/``~验į;ē4ćRM­ģb|;ūUēŚ§Š3ä+mRN3ī+PŲ]ĖrUÅ|–'·ćZ>>^€lÓŹˆ'Fۊg‹5Y¬aņć@ĢĆh;{Rnķ¤hӂJOSÕchEĀĖ”"ņĄpMyƌ-ھTlr}ėÖ廒KaņŖn]­‘Ō×%ć+C)įw»²¼WvŖJĒ-JRk™p»°‘Éžąz×£ü7Ņä¶³RīŽG)ō¬ß Ų±æ]ŖŪŸ#Žŗ›ū•¶‘#MŁUƒzÓÆW¢";{Ó(ÜM"j2JÓČŅČ>µBįžk­Ģd<ż+ [®ŠIŃÉ'®}éŗu¤Fåć'iSĮĻjĘM8½¶EżĪ)Yr§#±­8!.ź| :õ—®_Åe1Ą™ =:ƹÕdóLžc€Čā¹eMļŠķS{#Ŗ¶žŽ{³*ĘW?"äv­; 8Mū`²‚=kœžŠ¶EIƒf.:gŽ _LdŻ+*®Ü‡77ŹLj>mĪņ!ņ¼²å»c½:hBéóM¹ŌpRk?Ls4ĘHäU]KXF"RŁń×½a«fī¤cī¦dZ¬²NŅČļ†Č ōĶ`ų®BŚ\ā ą6Xb­jśĮŪ+@AŚRk™¾ŌžX q—ĆńŸzėTŪi³ŪI»#G³iļD“3IĮjģ­māŠÕīīŚ¼/lŠånœÅ]¶ćŒ{Õ?ķ™–ĶāŽGŚĄąJŚq©Q{®ĆR…5ļ-K·z“)’UC½ņN{U4ø‘ö°?99éU¬ŃÜn}ēpĪ{Uū8ć rOnŸÖ“iAXĖŚI«¶jxNž[?Y^¼å·™d+·®;WGń/T]OPø½ø ÕČ"1ĄŚ; ”įh•d3mܱÜŽ3Iā!–ø™łŚ sūV„”„īŻ#/M‰„²€6į!į˜ńšėŻSDņX3K+~īø™/õHa)“å†+­ūYóbF‘÷Ęæ/°©Æ¬Ó S¢*]Ł,n#”>Ņ0ĒŽ„ŽŹc«1…SĮص‡Įv/!fĄēõ©ķ­žY’sŽ=j•·7N Z™÷–ēĮÉē“4é!:s"«¤Ž…×–Ų›VŒĒ īŻ1Y:‘ū>Ӆ˱P¦ÖĮĶckĄ·Vļ«p¼ąČ½ėsÄE©xŽ8ą°Ä…N0 Ÿjąµ ?ŃĒäõ’:o‡ļo"æe .q‚ ¬åE·Ķ{3zsŒ!Źģ{kzwĆ÷±@Zä¹ Ž„WasńHŠ‚Æģj’‡¬­Æ`+3¼×N0@=EV¾ŠF¤É,Lās!%9ĪŚPInĀ¬ēŹ“Š‹Jøŗ•0®q‘ެZ]…k”Ć«[©Īj¦‡sp·.Ż‹ŌƒZ¾"H|‰–ŪļL2Ģ?ZNI»ŒyT£ųžs¬}„®ä• ę|Ø#ŠŌ·–1h«Ė2Œ}kBś5—N…JŖ9ł{š»į­>+½jŻ0‹‘ø?Žŗy¢£fĢ;»Ųäo¦ĪÆū¢ŽKFTóß¶*ŻŅ%Y•—ŹĆ’ŻĮėV|Al£ĘqĀU#‚rƒŠT¼Gtd™ķKdž>^¦­ŪK˜Źž—¹Ōxv k½(²„e1­­±‰„`DEFÜö’ėW;šŖ9¬ć–)‰;šĆ=Bö­_]žņKpdb§#gµqN)ŹĶųoŠÆÆĢ÷Ÿ½bp ż)öi éīņ䔳ĆįĒlÕęYՄŒĀU\…=:Sm58®4{»ˆīłŽõ~¦®ŹŃA)Ż$ō2Ʀ[«w »nN 5˜±¼å‚U_ŒžõM†U€Č±°Eą:Ō:†õŗ@ż†y­ŌÉŒTSŹSęœķBYóg$®?vĻĒ>•6¾Īż¼²¼ć¹¬[ķÆÕf ĪėųV‰_QĶ'­š°šžŪĢ\ā#‚Ąõõ­ķ3Q†Īł®d…esū„±Åy瀵V†Y-C,¹čMiéWķ>¦ė*čŁVu(»Ū”4ä”t=SÅ"ĻQŃm…”css€|ØŻ‡å\Ļü#²Å#5Į6ņ©œg…5«yu9RédµERV@p7 ÕøŌ!7³,ņĪC dsĶr¤×ChrNķī.§ ĆEå|Ų‰YĘišb+6’I–Q É^‡zS«ĶXć-qņ›=+‚·“W÷/m¹·¹ĄĪsN’rŗf•ÜcMZēCćļŠ9mĢC,Kc‚Ŗ=i±_HŚkDČŲ*Gg*/ŲO.°$o€r]ĒÓUc™Éz=‹Š ‘Ƶ>qžZŖŒ>ŁÓ¹OńPč›ęšt˜± °1P%õ¼ˆ$C ƏZĒŽ+Ÿ—Fģt“KzŻSܑP¬įN^ź5 v5-ī…šväōɦŁųn9u_L×ŲsÓåæ1łō#9l‡6¦‘ ņ‹HzÓ]½B<åśUŌšņĘp&LÜÕĶ6Įb—.Ń` ŸmE®ęŽdĪ~ėUÖī~Eø‘qč*›Į©LIyn >껳¤°Š,²ŲūĀ”ŠxČRzpÆM-#a{)7vīr6:ņ0ÜԎ®Õ§„ęb?Ņsßuu¶ķ6ÕĘā*YŃ|潂½;TO¶‰§°]Q‰oį ˆd±QŸ½ĶoŲé-øö_\Õx^5ˆ«ĖcĪCR›˜-¢]Ų’g5Ė:²}§–){ØŌHķa_š@ĒĆK ĢHÅ\ü¤W:÷ń  ņō!qHŗ‹;ģKrłž÷žµ7v®ĢŻ+ģĪ–;›GF§?Ź¢ø‚ÖiŹĒ늩^y*Ā(`ć¦3Uįk֕£I•I8ĪÜfˆTe™Ļ ŚKRūiÖØs½ƒĄ Wōמ>TyQ߬)4ŻIß&hÉüÖ÷‡,5 ˜”»+ żźĘ“äÕå$ΊQŠVi¢WžiXy»—>œšÕ°²„ŖČĶ9ČćqŖM§Hn~y!õÅ_‚ąOݾ÷Ēń?Zēår^éæµŒu‘vKqå ŠJ÷Ą¬ĶF+|b±RŲ©ßQ¾‰<±hŅĒŌģ4‰5¼Ē2ŁN®}W"Ŗ§©ĻR“ešœõģ–IµīUøźyØ®5KKt>LŽł—ń®©“ķ2c—…ć¢Ō4Ų• ¶ū7ĀŹ+¾”©§©Į^Sq±ēšõ¼Ķ’$e÷®sX¶Š`J|ŸīśW¤ß[_«‚Śe›§Ŗ€3Y÷ØŹßņ *Żš8ÆBģr:Qqµ¾óĖ„²ÜŽsŒUŪDdł­ƒÜ®+®»7E—h#ŒŠ‚ MJFÉŚćœV×ŗ0^뵑Šŗu®Ń¶ŻĒŅ­Ųéq‰Tažkr+Ȉ>G=źsw=æ "×7•āć‘F(!†&( 8ĀóTī®bLV>ģō«wįó–’Fn€&1QĆi%ԘņäTõ#•¢KRz½ ļķWžUAE­Ē@£ĘO]ŲķVģt‹Tb&É=†įZÖŚFœW%J cYÕ“·.”ł:•eńÕņ…[{` ć'„9|aƹNĢz-]km>Ż~K9ē#”Å:ŁZäģƒKœ÷H•((ģ?jļī”äńO‰‰”m>  ½¦ų“Ss¶źiŗ5jižžąęHŚyšÜÓ¼Œ¼ŪĻq·œŻ›EU—ÅŖ9¤¼ŗ’_2ZHÉč„mč³k;¤Rē¦sVu GĪ‹Žā³’²ļķÜ3H½†Ž”ß³œtŌēu\šhŪ»Ōµx±!I[ČZ¤|G}œ}”ŒdŠlCTDڰļźA§Ē6ŖøÅ†ęīvb…N6Õ"½³}_Ü(ń%ŅšlŁĀŽĆ§§#ˆŸMu÷ĪjÕ­äŁÅՈ¹ ֛{q£”8Ņ®œž¤%d㣋ūĶ’x—4d‰ÅVr 1ī@F@#³ų®/+kFļōŖ\脁&•:/©~8“ ؁Ž#<|ł8SZ4ȝJļU%b!ā‹użšPėŠ‰üap‚D'ŌQØųnŅg Į3š ž‘Ÿ›­ĆŠ7ŗnaķ+·°ŻKÅŚ‚ &2z6ÜäUDńn¦p Lćœdfŗ ] ą\%ĄĘXf„:{Ę >'o÷zŌņŅOD9:²ŅRg>ž/Ōö Øõ­"ųŸSføu=:fŗX"”‹oĻ}¼Õn­Ćč”=ŃqCtö·ä\)Ī×Oó2ōæjć|čÜrEl¦ ’EūÖ“$÷R8„·Ó s»ū:U>¦„M]—f™ŒœåŖmK”JulāG”$m “ńĆv«–ŚäQ±ŽŪ1Ö«?†u YŠE=±“Ņ•ü;ąĶ(ĘyĮ4¦č5g"éūkZ1·©.„ćKH²‘™N˜ź­·Œoe˜-µ„¬|õ¢O YŪKøŪÜNÜ©ā¬ZXN’”±…9³IS£m*­xŹ×/Śėŗć`2M§×ükzŅāI` u‡#“šÉ²‚’aŅF½Fz¹ …Äč3q0é\ī4Ó;Ŗ5®¤:µ–„Ņo–G-Ž„ōŖ‹.ƒdąĒ,„ū‚k`h1‰$ć©j‰¼3e#“*ŗzaŖż„6¬äĢ+AŽW+¦»¢†ж;ŠÖ³Õt¢ām¹‚jš¦’ņ33c©j±‡ģ¢ĘÅޤf²~Ϥ™ÓSķÅÖŚT˘cY†?„Õ«M>ĖĢŚlSļšĘu†Īp±yģƏ”qW¤æh­weĒ<Ō¹Ohɲć+tiŽi¶Ā…OqÅQk(!°ps•¬čüEjŁŽ[ÅL ąšš OOcŗć‚:TŽ¢ŃÜn4ä×-‹‘A@†žY3Ķ[ÓēKp|“$»bż‹S•ƒŚ]ĀČ{×=ā{OüĀ9®zGĪ®4}¦œČĘx—E]ÅÆ‘č t$œ‘C©”ˆFÄ“‡ŸFÆ>'µyĮ¤ŁŻ…YÅ—ń—ϜņThśXæ/ śķ9+¶®züÓ"0"ģ§°j§yŖ['jœøė“‘^{k¬Ł]Å„€ś>M_³žÖW`“Bģ:Ę“(§©.¼Śŗü†m^D}äc÷8Ŗ÷>)€~ģ*ÄƧk£½s8;ņ›¹-Ś&k{W%ĪŲÉqRAū¹WxŖć 0dR}¤…ü¾O¦ø§Ė„˜iöv-©Ē×ę^¤tŖ:„ĮE n<1S—ü¬98Ķ\Ž4™Uyē5¬+rkc RrųYĒj¤ža Ą69•yu{)eŗ;W{Øh–ņĀNϜēęĖj޾NmUXtÅwŅ­NZŽŽ§™^•e£Wō8ėŲp7\_큓Y—·/ ’£–cźĆÕK„^G6'Aüj䓘ībb9ć5ŲźÅ%ĢrʃwåÜó›NpĶPĒŅŖ\ß“ĢTlN9\ó]ęæįˆĆÆAĪEcI„ZÄ~ļĢ;皻EĘńg3‹ę“‘ÅŻ¤éŒy9ÉŖqŻŽĆ);Ł=Įėõ®öāĪ£ Eg]i0H„ĪӚ‹VcTÜuLĖҵ»Ļ0ąć”5ŠĆ©ź!£,‡ÆZę.­VŚRу€ˆf®hš” ķ «ÉČŒ©5ÆCzuo¤™­y¬ŻĶ&×vˆž8­-Īņį•ÄūĒ\6jœPĮqc`:śUEīm ę}½€4즽ÖR”iKŽGØiœD}EiŁ[é0*Ę×jģxł—‘^]c®^Ę”YZAļęÆɼ!“UŚ8b3YøOfk)Ņčzݶ„’!{KµRFxŖ×Žžh󾓹#®3CńEĄeŁ:D:ēWsį“²:e—Óś×3•J~ńÕ 4ŖÅ$žó:ĖĀ,ą?īĄžķlŪųU‰NŹ:#5ÓŚMŁu›ŲÕ=FémŲ³5ŽOB£ŠĻė5&ōGL0”įKTgGįIć]˦ xS+‚9Ü*Ū\Ā­—vŒ«ÖNĢßźŌ^ØČ“C2Å“N£<ńÖ ƒĆā6Üņ9õ­Ę¼“ó:Ž3ļųŌė5»FņōĆT<]hécE‚£-os.?/żZ;7ŠSĻöŖ#¢ Ē֏ŚYbuR„pj8',0d#x¤ėJ[”ū-#+ōŪ½@ŹŠQœÆ­8®6>nµĢ Ž7zO·ņĀeœģsu½¬mĖērōP¬=j„ŪĘį˜ˆ<1\š¶ķĄdć¹ā¤‚Fwqß„\[Z’āž¤q,ć%īKOZ]Éó+ØõÕ©Ų*žõXīņ•KŒćÆ­Mc„Ē9 ƒŚ§ščqZģL .Чź*Ut'p5 i†Ą<ž}j¢¾ļŗ”©‹} Ń|EÄrp2q×4ŪĀR"L:Õx|„ž`Ö¤! nR޹„fŹŅjČt,O˽› sO‰Ļ SaCĆäķ"‚ ¾fõ2I-4dš<Ē"„œÆ”Ų$äUbJŽ&–1‘ņ¾ÓާQņŔ¤{”8+n¬Œ8$óK,³$xgŽvš¼~čüäpqIN –ņŪŽĒ§?ȏfķ½Ģį"l>fQ³ź*å¼Įv‡>äÖv§3-ŗŸ0ŒœÅgÉ”$ó Ē5Ƴę_”j5„Ž­/!ļŽ˜Å=oŽ·­qÜܙĄ6Ģ@[¹«÷źŪØŠ&ˆCƒRčŪFh«¶“:Ėb&nG#г*ŖaTć=}k–ÓaÕķ Ż¼3юMhi7īk "lcŠĘtļŖf‘©ł4„“ƒ¬Ą>yÕ) ±ßŚ1ƒåę’kėH\ ePs޽ėBĪņŚr Ÿz^Õ„­Ēģ£5”Ÿ*–B"ŪQŠ-Q—Pø„ģó¦baŚŗĄØ;ÓM¼A~źĒ<ÕG¤„ØJ/Żg3-ܳ™.Fz 2k‹ųąÄqČ} WOåĘØB|¾µVO.I įŪšÆ’"TeŽĒ*.5“;Œ–ńz)ē5nCW–UŒĒ ŗ”®Ž+HŹä é隓«0äķUĒp(uāՔG <¢µ‘ĶŻ%½Ģ;..<¦īāØ,:E»`C5ĖzøĶtRŽXļ!cWcÜ`’*·dŃŹŪ¶H뷊„W•u3t“÷“9ƚn¦E²ŁzÓ¬¼D""¬Æåe¶Ī? źV%vÜcU=>eØīı”[#R(•e= QpWŲĒ·Õõ Ū÷³G’-+^ĀēQ(¢t\z©éYQėž¦kXŌžMY±{ų£żüpųķ€*%ō9é«: k‰ŌŸŻ†ģ YŠi £Ģ@‹ŽµĻ,—%.åcŪ=ŖC6«" ĮļPįs”UQѝ˜¤ąmēŌf’aN $lĒżšē-bÕ<ż×Ā’°EhOfņØa%Ąõ±Yr“ģĒĪ­xīMŖ^Z¢‚Ņ¢żįŠKBaå\DßWVKHŹ…’Ł_oC'&™żnų>Uµ»āQ‚kUN.;³(Ķ·v»¹Ē”£ĢPOB¼TpƛŅ˜ »­P·µE*¦ép£Ž*Üp[žReϹÅc¶‰+ŽZ¢ĀĮ4q×’³P5Ҭ›¼Ņ7rF>āŚĢŁʽS·µkpĘ v·{šŃY£ŸDü‹Įą*<Ȓ3õ=™³'äIH\֍z®Yķ”Uō³Uż:ų.Ō– œ…Å I+›%;šM=»Jo—ŠĀų“¢Zk޽Ņļ`y­Æb(čŹ9Č­°#†QøśõŖ³Yßłßńł Œ ŖL'Ė%8½P«SR¦į%tĻĀĻŪ‡įtžųĆ©iqÄĶh\É€œ×ĻW6©0eĮ'©ļ_ї‹<į]nidÖ|=§kN6¼—P‚Ż1€kāų(O죔ĻįI|Cąm.=.h3-ͼC†r¦+Ž–2–.JŽģæ3Ę„Jx:v–±_ł3q Ē (H#“J»įXŻŃˆ$ōō­/i+§ßĶnŃDŪ9ļUmO“XɵyxˆĪ-§¹ļŅ”*EN:•¼Kpm¹†¹ėŪĆ*ØPŖHęµüD ¶§6ć–&¹Ā„#B ,¤ŒūVŌ5ަ6³³7|,‰;!rū× Ł3}™CĄōĮķ^Sk#Gfq;Ż;hR“É;Ę{zÖ¼F;DC·õ'†“Ąå„•™X/NœÖ¹%ÅĘ“oEˆį}źœ¶6NÖhŚŌPK<[”¬}@'©®—Ć2Eč”t=+Š2Äw?™š¤Ö²šy$/Åa4šå6„6„ĶküQ5Ģ-a¼Ńœ¹}_KH!F†`Œķ‘ųU¹VŚ2#¼–ĆJ—Q¼ŽXŃĮ!ĄäÖŌčø„g””ń7oœŹGx.²³dq]“möksus½±ņ©5Éß˵ŖŹņœņOJ·¦I"Ū¬Ó—-ŒŒv­ź&×ŗe¦“Vl|§«­ü‹§µ¹]ÄtcÖ±.n‰æŠSŒO5©¬Ŗ\Ł,ąĘ¤ SÉõƒŠVęEҟf'†Pn8ܽ1FØÜlpČĢŁŌmßŲ„ó@†¦Õn’“ HB«©ķėY5y]ģt;Uf@JGx“ø’ģ*-JįE”ō9#)Œ¼ĖŽ_Ę:Öˆ%hņ6ąĒԊøźŅF.¤¢¹Yr+ė‰ŃB0˜c§JØQāø*ü79ć¦ŃĢø@†\­;ÄŁMQLŽO½i¢—* _“™ŽM®Bs€9ķ]š…t‰KŖć+ė\ķ¼$ĘÅO$u5Æįł 韾|•b°Ø®“5¤ģ®Acy=«A*y*x®ĆŗĒŚU␨AŪҰ.Tͽ—±ĀÓü%hļ|S%YÉRO@*eM8ėøÕIs$t>3EJH>XvżsŚ: £ˆ©,Ī{VÄ;;øį[3)tCÕ[ƒYŗlo*BeĪIļZӇø“f’rr;“ƒRX¾e*y8ė]¾ˆQ¶rŪŗ{חėŠĶoxfmؐē>õŌhZ‘³šÖU[s©Ījql—)t+½T˚ĶÄ«suj“(‚,üØx#ޱž]2źēk²Å»’ŠĶŅ/#’ńÖဒ=ėbĪĮ4¢Ó¤ĀTŸęӔmYu&”}õ;Üõż6ÕnžŻ¢‘e@»I'šµa”ĪŗÄė““ĘqĻZ«5kĪ×nęwŠ¢š÷K‰‘DOņŹzÕ 7My-k‰?v«ŠwØ­®d7,›ä*ަ·“h&¹ßœÄG­k:FĢ)ÅnŒ Å’J‰!ĀÄ£ó®ŗĘHæ±F!;ńĮ< ĘæµŠY 7v1œcėZqßXŪ鰫ʆE]æ1ąŸJē­gkƙE“ĖzIu(µi|‹y[y$(¬Żbö·\ŚØi7Ś­ŒqSézšMpŪv.FÜtā±õę– éžżąSŽ3Wk¦sĶÅ„}ĪoÅÅeŲŪW¦3ҳ-%Ś6ńÅ3U’B’½’XŁ'œVyĻÜ7ņ09⻩ӓlr98­źwāEÜäąŌ6Qƒ&Ž~cÅ ū²žµ©§Ū3l©U1[;B!äĖöäĀUB’«Žz ·¢Įęg*~~ųķPĒŚzžüV–ƒ4IrØÜć'Šą©'gc„4½ÓĆQ£FŖČ±’ŁķXš” āfcūČć F~µŌ Óƒ}io°$£€äž5Āh¶āMQ؜Iø°9ÅEE¦ę¹Õ’: nVżn ‚1ēćŒQØ«R9”Md>žø«7®0£Œ°R¼v§ŚG…iŁ™@\`÷śTFMµq5e”i%Ė2³…±ĮĒŠŪ[«}š‘œW5¢jŽCyh}pk»šZ ©ĆFŲ”÷æ•Mi8«³¦’S“zšM§¼Ī±”"<|ĒŚ¹ĶwM³:›ŪG*ŗÄxēžõ×xīśīĻĆWGr,›vü½yōÆ3Ņīć‚7%˜–-ڳ”Ķ(6UIB3Q’ūÉnn–)dƒĖłq…5_I·/qęńŸ¼}Å\ŠķżŪ~Šsø‘éYzŸo«ÉkåPdg¹­ßk˜ĪZ^ĘĖ·ZdŹ6­w:“ÜŽiŃLb<&c8®Į6蚘‘™‹.xĻs]n‘ŖŻŚE"EŗMłr\ņ@=>•Ļ9¤ģéÆiŪ²*xŅÖ+x,\LD“G¹¶šĄÓõ¤»–=Ģ£•÷ĻŻĻ=āĻ‚”ņ©cµ ”B9@čĖ·=żkF)`µŅ$ äg§J¹[”Ϥ¬Ė«/Śڹe‘2äzćÖ«FXƶ)7\0*Ğ‚¢—RœŁĒ0€YĮfUķŽÆčV~jNŪ„[ĮłĮĮ2WަžÖŹėr¾±böžŠa* %p$|ņ9Ķi’Ā$ūüīõx¶i¼č¬’įÜoĻ-‘ŽōŲGśB.ŠUSļzÖ°‹Q³dM®››V÷ÄY„,P‘Š£ØÄņB.Օ÷”GZ•a†}¢6U,0UOzǽ[‹{µ„±UNƒ„5e¢&54µ‹Zāyb÷eŠdØ®q¤YuDˆ‘³mb*ź“ a;āLƒŌ\³š„ ¬¹$żŃebqšŅÖC“÷mĢėķ Ś;5œū„ƒż°“ü©Č"-ņgŽÕ„`¤qd1{×Ņģ“>")62ĪŽfœqN’$ę®4īc1‰ĒåTĄ™ä8š/˜ÖKSGt=,ĖAæĢQž9j­qi2:ˆ„lžŲ®‡B“V øó d5oŚŲD#/å恓YĻŹ\i6q–vz’¦ļ˜Ÿ„ZŠŹW Ļ#jź#ŽąÉ±÷"ŽFqŠšk{nœ›‡^•‹¬ŗž‰Yė±ŹK§BėSŚŁÄ¬ÄĪ=+ZłX£6^*&yö¹ūĀ©TfrI kk„+ģ™Ū„_H, AŠ }Žj—Łžw]ēw^*Ķm$Ū‚ĪG79„xõ9Żh‡Ž¬qŸ‘Ūo~+6mBŽŽąaKžū+}U%Üą…ė“ŒŌ“Ż˜d[%`?ŒÆ"ŗ”Nś^ē,ź5«#ŸWfł ·ÆZ‚]~õA&ßcV Ō-%sęŠœ °į%\Å$ źEkpZM'7¬YDk‚YFūk†QĖ|õÆeØé„ƒŻń÷Y‰4–ÖמX?čņ§°`Z.ћt }Pćƒu_-Ś-.«lͳÜō«ŗTé)%fßĒ9¬Æģ哨‘ųQsŲE½\ĶPबž¦q«¬‘½tÖń®Z.Aõ5ŖėÖ6źUmóĘqްī¼[$C`¶cT‰DĢso'¶ÜVĀÉ|kC×RŅ“5`ń6šŅģhęŒ·Ø«Ńjšd¹ŁtĮ@+ ­ī§ģÖĢHēŽkf×N‡nčģ#lw [ņ(ģÉę|¾ś,ʰܕ Ÿ\Uć§¢Ū‘åĻ_Z”£5€-3źNsRĆā¤Ī$p;g¢~ŚŚ- J“ZīČĖ*Äą`W1ØM¼ü·*ƒ¶M¤ŽsŒ~œi)jŁ®łl£bö¹®Ü[±Ū$cŒ€šĄ›ÅŗŖ¶FTēSVäµ±—%¦vĒ}ŌÓ¦éÄ|·{[ż£]1§I¤¬rEÕNéčG‰ÆY³-¼ Ov¶,…ńYo§X. ŌĄļPI ¼cÜ@äœåŽ8¦šōö±·ÖŖ[ŽGI?ˆoĀ.Ņßuó+>ēÄŚØ$Ea~œką¼yŌõ*üÕŪ;;ōex€īHę«ÓźŒ–*µ½×”mxąƒOóˆ”(|‚;ć­VKxbUY‚Ž„śŌÖawå¶éžkī‡kn>śõ¢‹å™±Ž+>;ĶIųX†ßZ՛섀ÄgŽ©t·¶FĀēoÖ©M%š‹—čŁ˜†÷žZ TĢBÆĢÄV„ś¤ˆv¾ÓŲJęõM1‰%Zy½Zŗ(µ8ė”ĖQĪ/XčjZĶhŠ7ĢIn1š|Ś’mėœ÷lW&4­Jaūµć#9ėPĖį«×ĆMqÜŽ+G‡¦ß½?‘ W•rĘĒm ²#,r/_Z­|2ŪžFn=kžŅ“ķ2Ē&āźrŁä–ąV·ö‡āį.7ŸF5’ƒ‹÷S6©R.*ķ\Ž’Z†ÄmņžF#Œ ŹńÜPɶK;¼ćųWŠŌ¼Õ“¤`Én’ŸFŖSė:DĒŹžĮcVćå Wd)Sjī,䔪ļ‹Ń˜7ß°X[Ų?ķšēu^ÜŹUĘÅnvń®ÆXÓt Ęm"bĒż”Ēć\Ķör”vg‘ė]tiRzĄņń«EµS_C˜ŌļüÓ½AV÷jŠĆ^¾“9ŽB¼c„ijšŌCxŒ²žćҰuG\†B§ÆJÖPmXƬӽ™ŁxwĒ·Š W27® uzGÄa³ ¹=Üó^?em˜°_­oéšM“„*\Jó„„Šzžœ1•mÜöM?ĘŚ<åÜAG}‚Æ^_ųjž0°ø‹=¼š _H ŪČfĻ÷kKOš¾¹Ż·sĆõPĆŪįŸāÄ&­:ŲŽxbĀbe¶ŗäƒ€­Ņ°u źJł·2Čź9­#CÖÖ%;dū¹­x­^µanfTĮ†œņ0sQ½ė¬DIuk FmŻ2Hj±iŖ^DžLŹBŽMDš­ÆwTZÄĘöŲķžI„‘Ę{ćZīŅeo•œ©īy®y5Wd'kĒŽ0qT®õĖ؈ņ݈ō4C Q|,™×‹V’:°Å#ęBąÆelfÆŪYŪŖa^\ć¦āk‰³ń%ę|HF{‚*źx–UĘÜtR£^ölØN”cĶ}¦K@&{”ģ2ÕV÷LV‡>lņ“Óę¬ųüB®”e(Ąqŗ­Ūkö ˜2ī#żœ~µµbģ9B”Õщ«č³Ė$›iĒJę5=QI—o)ŲĻč³kŚtŒIÉ7«¦ŻŁ5Øß4›žMlńµ ½čœĄ'+ĘGŠ\i7ź„^Žänō*€šōĶ#3‰ŗckčE–ŌČ{RøēSoŸMn{tÉĘ2+Hę>A,¹5w©ą#ó•C ĒßųFõ 3?ŽÆtŗÓōÉ£,’FxnMVžĒµä§šp8Ćb“Ž6 ʦk{Ųń«M+R¶äžŲ­+%¹Ü©5” Žšō›Ż6é0Ū³‚8ÉĶg[hśŌ÷x–5<š1Z{JoVķó"§š¤ķęŽn-:Śp0ĻŸļµa¢^Ę’¹¹Źē¦k­¶š­ĪļŽ¹ēæµmiž·„‡7¤‹čx¬g‹ƒŁÜź§„“g'a§_«"9ź¶ķ4IfS°|ć±ŗ=‘Ū+)œ0ėœfƒxQ‰ŃxćœV¼åpÕS…ķ# ĻCæŠļ-½:ā·”ŅćddS‘Ōœš¬×“*ó`·£fŖ\ź°Ē7L\psž••YktZ¢”f•Ņmƒ‘ÄOL3VāÓ,Ź•xÕN;W’ Iµ˜dpGŌ‰ćØHŹ“ĘsYT†%źŽƒ”,-“ÜėßAӛ?»Ó‰”éń“¶#€;×?kćy€1Æ^µ©ˆ­œ ŪpGnµŠUū2…®żB H"ÄvŖķŽ ē/®īö2Epq”s[ƬYĻ8M²yĻj¶æŁl¾hšr1Ž•¼kø+N''՜߻5cĢ5]2öå·+žę©Åįɋ/›o3jõė+­27Śd‰›Ż»Õ‹NĪ$ČXĪ8ąsZ’hɤ”YŁŹ>ó‘ęZn…$8"ї®kvŅ=R(űżk­“Õ,¤^wč£Öuø­įÄQ+.88Ķ%‰©'ĖŹk(B¼„”‘ā¼w»ƒZšv‹e{r³Č⹫’Lß*ĄƒŠ¶kVÖ/÷“x„mģź5fĪu^Łhzi¢ ÆõĄ=¾•­eToøfć« ń{/kX ™¹ČÜs[V%Ō”!’@TņyĻRW¤ĪØ×§’zž§¤Gqr|¹¤Rs’¬j’éĻfą‰ī299ÉŖŒaG"Ub}xę·!ńŸxFć³wšē“©i+ÆCXʝExJĻŌ©u«Å ÄŃłƒGwEÖģdEXŚHŪ® «ńXé÷–„€Yš5ĻkŽFt2œzø:5_*vdŹUØüJčė Ō­äłCķn WEŅ, €Ē× ÅydZV§ Ę ĘåƒČ­}1Æ! Ė`vcU<*Z—C§¤NŻwJCĘ;ęØŽé0¶Xē5I.n|’b˜/eė’Ö©-oµQø,™źqü«>YGXŽń““÷#øŃ˜”Ğ`=Zēõ \³–„‘‘Īk³I¦—åT(ݳAšī'"HŒƒ±Zҧsž¦ßCĘõ­+Sµ“&3Ą÷¬Ā—!öĖž¼×½įnbĆ!t"©¶ įČ@O0®„‹½äs¬śjx¼–rJ„*)t#5Ÿ.ˆģåŒ%r:Ņ½ÆPжČÕ ŻVēHPŲR3×ęŖ†*+fg<#Ż£Č-“©”u#pŪĻzŽÓ#mž(Č©ZķfŃg}ŖAō¬Ū­>óĻ]©\UJ¼d…ģź-$®C§h6÷EZ+‹xš3Œ »6k ?½kWĻSÅX²ŅļŒ{L-?Ż8?^³ŃǜӟöXńY,Eŗ›¬,Z²Lå.“{£FxéYīægp!vL¢½B Éqū„Ϲ«č:l’ä€'>µ_]§kHĶeõĄĻ9Š5ū‹IvęC’Ģ×£^ßŖČu”øøāŗ%ŃtŲĒĖJ?ŻĶ8„¬Dp•Ś1Šć©V›|Š=BqIUe[hoķ­vŽynAeē…E+jgn`‡źsVį½¹i6ĆŠ8äV„ÅĘŻ³F™÷ZĘrk[#UO›E&Œœœ‹«uĻŖõÅ_†Ś"€E+Āøē?Ņ“®‚Čs¶8’Ż Æa—Ąōā¢X‹-¬U<+æ5’ķ­Ū)N§oRƓPŚżŖŽ@f&Lį”ŗ9]«·AėQŹīĻ„^HĪjV+¦ę‹ ķĢ‡[Ż?™†VE<ąÕ¶ŸäXōä{U+IaI?xX·O›µYF‚S…‘TÉjN2zؗ¦­qé -’{~•jóJ†ļU<ė8_98ĪzÓ£ŗ‰†xóŲę±Jo”£åީܳ2Å·ż®ę§€¢§Źzw–†]Œxv“ĘF+;Q¾’ø…ĒAŒVńĆ·¢2x˜­Ī¦i”€‡>•b·rG¾zW§jóFžeĢ[bč3в|Q¤Ép‘1’qĀńQ<5E®¶5†&“²Šīߕę¢™Ān!#łøéYöšŽœa źąŒu¦Éw°mś±Pcœ—SDŽ%bĒ4&>a9AģµU/Dx"€Fr N²¤é„ ƒčE8¹EūŪįĶš’ĮpƒlÆÆz–f‰Ü~ļTY!C–CГ̷Œ0:ę­É=…Č֌réŃ3o °~zÓ’ŁąSäDG953ß[ĒĆgŽĘ¤¶»LŠžµ.¬‹T¢“ŲĻy5d'[„'€I§E$Ą…xÉnøLÖ©‘¤,„œüø§0ądlČļSŻ,TØ»^śm̧p°ćŽi·,Ńu*v&Æ¢ømÉå…sSKoØģĻCšŅ5RÜĪT„%”Ēź—šƒÜÆŁŗżA9­[§ˆ­ŅŪōĆ8ę¬OgjeŚ`椏O·ŽA·#'Š•©=‘4©ÕMŁ„vń«n݌ńj¶Š#&ąˆéQ[¬Q·Øš–Yœ¢Būō5Ÿ1ŗ‹D-oøecƦœCÅ!€ö«o4Š„n‘ü#ŠÆq,¾^Ķ’.3š#.„8ŁŻ1÷! wÉĶDč³.H+J‰ē·¬ŽÄqLŽžŻ¹•IJś!]m&Hš\,„ĢGõ5bĶb\؀ĀTu+Š`ÕāDķŽŌZźöņK†Ōž™Z_½—ÄŠŠ¦­Č]BTĢI#Õ~ÜFŠqŒņsķL¶1¼aÖ5`G„EvÖź«Žpk;tfŗĘģf” |¹ŌJÄki‹×m»B„Œ·8Ģ®©Õ֎Ņ,0f;x$¶jŌćäaČęGg` ‚×w„޹rhC¦ŪČ73;ū“‡Yļ­ćo™äŪģÆq­ŪDqRŗūzÖ¾ō¶B|«sf $„†8—Ō…§=¹¹žBląW9'ˆYFRŚb1Ą=EU]’JŚ¤ŌŹW¹q«NĒkn¹œļS!PJ’XyÖ£ā-T©1D6‘×®rūÄś¼säĄä Q«¢>¹Nö‘ėzˆv‘Ó ­ķ'U!•ĮzŌsÅv$!@ pq[Pß[°Łęb;Ւ"c»ļŅx«|qĀĖ£LānVā ®š{ąę¤†śé€P“īė vN@rV‡qQ”‘±|ö«uiÉlG³švG=Ügs‰yĘ*eæŽ3±ą‘ˆxžµÆ-¼®4‹ƒéTŪKĖšż±Ö”kĮlÅ*sjĶ£Õ­€ŚŠ0 ū €źśZČŽ`’6ķž•vm²cp­dė:¬[’=‡•JŅÕ°mĮh›{»ią" “8ČcµT½žŅ‰ĪŁó^ sčś®CĀæfŒgŸĪˆģµČ˜“6:œsZB›ŽĪč‰TMuOļ6eŌīa ¹8ĻŻėU¤ńLq$NĖžåfIuq ˜¹“{{VV¤ŠĶø²Ü0ĘBŒUFoTO<÷Lč"ńͼoóŪČず’oˆĀŪäŽWż+¹·YīmeORŻEgOhbŹ€åŗąÕ¬4_ĀOÖf·=+JńÄ7Ncž į^€Æ5?ƟŁi_õŻRWGŠŚĘFżąĮĪÜś×’}”ķ€|•` ł§ž !ń®M'į÷‚¢}ά»$pæu{óO‚r¬ŸDc_IĆ«ŃŸ>=ø[Æ_ÜäJg•ä'’­rį÷/ń0 %õĮóŚ9Ėsßüj;(Ņ8ˆÉv~yj¼\”źJOcŃĀ^抂tĢ.2BŽ>µumóęž×R€ĘŒøVĪzóŠ¢Ń؝Ė6÷«*5t7ÆIÉ]»#E8F tž¾×%į¹ėYڜ>}ŠņAbxĶ2É|­Aŗ£t®™ÅNg6³¦ķ#ÓŚź+„‰BŠ7 µgµó#R £·JćŽęF¶St(zś×E ėkäys·i+^t©J+MOB3‡3°±—øĖ sžk#Åös}• e°skVŻ·3yC;‰ ֖­°iB&Į•ńĒzŖnŅNŚ „š¼µ<—Psä:#…4ię3ą)żkØńōUڐBgšäõ,ˆŽ īs]šŽ—8=­åŖ4tIŠŖ ?+ŽMo÷Y¶× ćJāt‹”Ŗ88=ėøÓhBīŪ¼W-Xµ#®œļ‰§Ż“V¬yTćģ×,µ!sB^ķō6¼eqm=Ä®Ņlv ž½kĶnC”óT”¹sŠŃ×o.‚EnŅ0c‚Ąš*’ƒ­EŻÄž{&ß,€§ŒÖ“’„waJ¤źĻ•š>˜‹”FJĄŸ68ā¹łęKżyŻĬĒŽŸtÖsA¦XŻĒV‡+żÓ\ī“5ø2+|’~\«Ż¹#N^TYpö׊#˜öąÖī“2„£É,˜ĄŽr+ MīŻ)Č­;˜Śyš+Č÷GQ޹›č‹Q“…ś2µõŹŻ\F‚=‘“ĘJČÖːœ|„§¾kcD1$Ÿ2—+ŠS¼GCūϐ”b±Uyd¢+]ZŚœß†ēˆj ·/ G5ŁŻ[M6Õ"Įlć5ĪčV¶ÖØnD§`\V÷‡u „’xČ žķ1ÅuTIūŃMū’1/-‚ź£ģģc‚0eŗšŲŌ,’ęĘ $dHĒ$œšŻ²ŠķŽŚKķF=‘±łTā«—ZLSiGģ”—`ÉPŲx5n„ż]Å[trż™–%XŃT€qÖ²įk‹+)®7¶Ų×*§¹ÆDµŃbHåĆlœgŒ‘\'ÅyŚ!‡liķ`‡ÆįE:ŖrQDJ ¶qé?›'™&ģ¾H’?hZ±6ܞ{ÖK9iĘŻÅF6Žõ©ØļKEo,¦š:u®žGcŠé­F­ÓܛT©ČÅ>śi'eiON+q2ʽƒzžÕ2ͲųXäRtī½Ņœ•ģt¶3“s:¹W'Ž*ĶŽ®ÉdÜķ+F‡9ZĻ‚[dµWŗv [’4Xģīµ-$i|åJĶ]hŃP\Ķ4žF—‡a]¤®ŒūČ$‘Sź6öāėjüĢXį鎵ŅĶĮŖńĄcŌŅź5%®2I=’ ®[/yūG“J‚Ź>Ķo"’@“®ĘOŽMpWšo“­»JīĪĄÉ­ļ ŽĢóIļ$ŠØŲWr±|wvF¬`ČTĪ÷®*s«4ŁÓ(ҲqVf†ėy ”e‰ŽĄwŸzŁŃ IµAØ^3ĖsĪ;šĮѐĖ<¬……Ėw5čqEi¦õ^ÖĖT€niīdvęµtmCTI|¤†Rv£ŚWŽŅDŖXi;YÜ£’}Ü1ŻKž€ōĶ įĶ`®>Ųųō&»+©vŸ4`‘ÓŠ“—jØ3Ē«Œšų’fė¶M£ƒƒĆŗ˜åÉ+ZŗVµÉ•äLŽ5ŠMt>HĆz¶8¬]g\ŠŲą· 3„§õŠóŅ(Nž–³e””Ūl+$÷ 75]“°³“E—%xĖ1Ķrkā˜YĘČē,}k{M×R[uÅ»‚ŻĖµJU’åįÓF­¹©›°0@wSP]ŽūU¢AŽēMī­µ–īÜVuüVÄąOr½D)ŻŚęukY^ʧŚ'ń*°Ē;FjÄ7²Ŗš„PµĒ\¬Š±ŁtT2¹ŖwWņĘB›óӀŖkY`ÓÖęKŃŽ_^)ƒę,08W5­ųš[uhķ­$g^¬Ć¹•¼žy±÷b+kMŅon°Å$ärq‘[ʍ*kŽ2Jõ4†‡/ØkŽ"šé¶»Ä‡²-jų~ėZ›jKs*“ĘIÅv:w‡%eŪ$›uā›&…§BŁ–ż‰pŲ¦åEčéŅ­ļźŸs+ū+Y‘KGp šķX:—.ÕG•j˕囨¦ØĶź¢eRµ?†R:ė+¹>f‘7ē„e_x* 9Št Ē%³\œž2ŌŹŒžXÅ2ja¾źØµŗśÄv9āš’ųŽŗ/¶1öĻÄdŅĀǁrSŠĢŃüg;82;)>1]V—ā™2]OR e,N".ĒOÕ0Ņ\×2Įs@p’ŗć¾ćN›Ć•,Ģr8®¾Ē\·ø@ :Č:ƒW^s€A øw„d“Õj7€I_”ĆĮ£ŽŪŒy ©ć‘œÓµ-«mo‡ķņ×om4²"|zńR“RøĒʃŌz֋%ŖZ˜ŌĖłķ}~G‘_xd,ɏNõž|woŸ,Õī‹` `<¬§ćŠžŚĄ/ dĒU<Éæ‰\‡–ņécĆ!ҼCg–ućŒV¦›’ ŒWpńtÆ\»·Eb7ćŪ1l$™8ć>”¾³JKX£JxjėE'cаÖc>øā½HN)_šē—ŹŪåå±BžÖi". 3ņ‘ҹ˷ņ$(|ęć9µŻA¤^#ę&-šŠ“ÓK ^Ł”ĻSŲ֐ÅF;„šĻjoļ<¾;ĖrŪNąjŌW);X0ōµz‡ü#ŗ\ĻÄ+ĒAŽEWøš„˜s°¦;J—‰¢÷eF…E£GĒØiŪ‚µ¼ŖĆøč*Ŭ"ō‘o8Œś3Wlžf Ø¬Ē®F*KŸ`o…Ń;½E%ˆ‚ė Õ 5Oå”Ȧ‹ØBD‰vāĄ‘A°ŌšbĢŅGL×i£xnxe$Ü;g’2k¤ƒOņŌ-˜ć“XwažÅvÓŲĪĢ2€“ÜTcMˆʉŸR“ć:“T•fļĢyŻēŒµ…|¤P=©"ń–°F6‡Ōs^’ŗvœĄnņ;ē ϼŅ4V$KŪU9įŽœ”Ö[;œ„zµÅŚŸi#œTŒē2géĒ5џé¹&•łÓį¶vÄs#(ĻjøW‚V¹•JzŲĄŽę%ĄŽßLóK,Öpą±jé šz7Ķ$…H=AĒj»‹§XƒęFn[ RxškDĮad—4æ„{K'ŒģFPĆØØąŅ@$Eņ>ń½ßģĘA³M ¦Æ.„e lxö c••ÅTŁE²”BšJNZžixÅ|øŪoµhŲh:©#÷exź}+¶‡Y±f>K,gŽ™©kWŪ"ˆK‘Į9iž&®ŠęrqĪ.‹{üķĒZźĪ8Šł“ø=ĒLU«zņå°mŠc©›5§Ūdc-ĖE»¦[­kMJŽö‡ē)|% ««[b”ē$Óm¼U%¾VxXrĆ4ĶSA0¦<ŻėŒšsY7+•ąŽrk~DÖƍV›; ;Äķq5U?Ż»§µģyźOc^ao†/#u­+Ł”Ę× ūē'¼Æ“ƒ~śŠļ5 -Ź.,ćøéTJ¹Ü×īÖ^Æ_Dą‡%{äf»k_ij±ć8⟓œW¼® „$żÉnÆ£]F„˜J3ұf‹gŽÉa‘ÉÆtµŁ>Dˆ„U¹Šl¦bķqWõČ%ļŠX)½(%•FÉO9 SI ȁw¶@ē¹\ꣷ$R'›ĖĮõéUĖüdŽÕMĖīÉ/õTwFu™L(ĢģkeĢDœ-fhĘ ²mł€ėÖ¬5¤GČ7{Öm”§%vøć$ā‹Ė‰ęńÓę²”źsY*qµŁi“ę2p*KxƓܞxŖV—ŒŃƒ$'>ø«‘Ü0c¶=§f“稖¤„LµX‹gŽęš#Œ€ ķnß5T’ęē'nÕ©¦‹¬ą¹Oœ§.åƜ^åé= §<ŅŸėc×­gĘ󻷖¹Ļ#m9!ø~±6j£7ŌŹtµ±4Ž…K4ƎĄõØÖUgĮRŹy¢+IĢ€)ō5zŚŚ4Lœ’xā©6ö*ŗW+ļ^€)e 2ū¾­Ņ§–×<ÆĖŸSŠu¤q±,¹cųŅiõcmsY"K:ń‚½5e@ ®Ē5„k qąÓnāQŸ(¶Hīk97ätFŹ6Žå;tM€ŗäÓeV>XŪ ŠÕøe*|ųā§»g1(d^9O9­!>W”Œœwf;ÄJī1óӊĪŌd‚xģ3]_*üĖ2ēŸj†]ŠłP[šÉ®źX„žØć«‡rZ3•Ÿd€m¶łsčj‰„†?ōk,1čNN+«y”ØÄ;Iõ⛐D!ļŅ·X»éoÄĒź—ėųµ¦­r7Č]}ģUč“mEHpĆÆ\~uÕYŻ"1Å€00ŌæjŽGŪ˜ģ+/­Nś¤TpъI3}žxFR ½A$ŌÖ¾…Ų4±®ę®„^4C\·Ņ„‹R TŁ­sO[ģQĮPzu1FƒāB„ŽXö¦Zxv)—šPWŸ½ŒŠéId$äaÉ42©łC|ŁķY}r®ĢSŠ|Ėsčv>^Ņņž:‡4Ū$n^.u9­[Ė)¤R‘¹Cżą1Š’Ī‚3ōźM\fŚÓņ‚ZŚĆ,`0į^]łćę5”äFќ:š1ĮŖ²Å ™z“UVŻRbńĶ&zżź·M>¶hÖč·«üĒó5<‚Ś$ Ź2;“U vÆz}ư#³qJTōԘM-b_ÓēISvƒS‰m£#š¬QuqDŖlšGŗ™ ,r©é+9a„kÄŽ8˜·ļ3bF*ęć¤kĄŠ2¬H³§2ÜG›i±ŸļÕyżTō§;kqOÓѲK ƒär~õX·P!'•”ō¬E’łNՎ&ć³V–ž'upĄ=vžMZ3Ik”tēMźÖ„£łX9ėÅۃN}jÜP Œ&Üqɦ*"· ŸJ‹½™M+čÉ­Ń „‚=éӈĖžqž”ūuœF} X1«€8éYó«ŁŽ„×”•5Š”\š śn·qĒŚcƒ® z ·ČāB ē%«žŅg| ܎ÅxżkŖ–&2ÓCšxw±šž°¤ķ9qŌ®ž?*ßÓķÆ­“÷“«ķ–µŸ“š~ė/ŁĘŚ¢(ōm>Ź[D–˜Éc €}’}ėļSŁ^Ä z§·‘{.REņnŅ”WŗWZƒ=ķRŁ cRŃ>ą8ē­FÖQČ $‹]ŌčlŒm•¹*1Ń^¢n-Y²”|V4l&vp%ł*Y ‹ #Ėe=ĶaŽŻ‹‘|ē5×-ˆĄ—,8ÅO³VŌÆi'±Ņ‚X|»@‹ņ¾:u¬Ė}bÅ,†é9÷«ś]żŒ£ :ļĒMÜVjQNÖ5qvWzł"(±Œć­L ćjÕ;ņņ”€N;t5˜×Zó+qZS3œ£³5ę@T¶>Ć„@°«ˆŁ©,õ[ š•b:Z2±qœg#­hźYr™ŖZówÖvģ˜{P÷+ŠĻ} X¾b8ōü+®™Ž„÷äÕ7V‰¾E8žU7č™oMZ¹ęž ŠfĖłQŗ€:)ĪMrŚ–‹Ø$ūV)ŽÜX×¶Ÿ0«nR¹Bž g’ONs]źÉ+Õ)FZ£Å$Ņd|¤öņóķĶ|5’n¶ŅlSE‚;!Ō¤Vv˜Æ æ^õśm©ƒ ¤“`“×#łŃ’°žŅk_ *ÆśOļsČĪ=ėÖŹ«)Vjż#2¢ćÉ+źĶ­Cqo0 ”Ž@}Į}0qV5a¶ wasұ®ЬŃ·ÆĶ^uVå&–ĒŠŅ²JVŠÖV ļ3œ`iš@ ~cUĻ^9®~é¤h#ˆ äķ©-õ2[īaƒŽkJV÷YŠ«k”Š„Æ»^½Å@Ślfš8mΤē9­=/Ź1#!aŲęŸenŌ²±#s9ā°iG©u!hѦ ¢1ć"¤H1p»ĒČOE<żkZeČ,˜>µ^Éā1rŁž¦jÕE$(ÓäwÜ϶ž[HĘŅCʁ֦¾»2ܳ±<§^[†óX ĄąžµLŖ‰6m9īõiĘÄIÉŪ›s;Ä"ķϚ„Ü‚{WØÄ[Č®Ćā 4zTmo'…jįŚQęŗœp3]tåxœ·½āUšWYW¹õ®›ĆR3ǜ;#zW?tŒpcÉćVĒ„$x&tsą€O„gY&(»=N®ŁRä‚v†čjMM¤²µ2zc°Ŗŗl¤˜9®§S²·¹Ó`ž1ę°źEq9%%„Råꊩāć"āR·*¶ü«U.#’ŃŸ!XcÆCō­nŻa¹/!)ģj¶ŖD­TŸMŽ{ó+3ŸGi°įøķŚ‘¢ņ 1Lņ=Ķ\вj1³.!ŻĪ=+_U°·ŗœy[‰į»VŽŃ-: rLēÆ'W‡k/l}jõœJbƤ‘”鞆®O„€ń4‹ņ”ē¶µ˜¢žÉUcҦSQ·(å+»7±ĪĶi4sGć#½u–²,q#Ā6’£“ڳßĪRN2­töČ4¼ °*q\Õ*]£t—+¹•Ø šĄüĒ“ŽõBeŁÄęl`žµkT”[Zä`ėYV:Œr9#å ø®+«š>‡m.™Ū0 äf>pŅKāČĆ(%’sóf±…æŚ/ Ž"%lŒdšō)¦£sĻr»“v éĢ-Ō1\‚ĢzVä:HK˜å·s¼°åuś-¼6Ö `QAuÉÉ'Ž“ü=`¶ŅOrę5‰ƒŅ¼ś˜Ÿ#ŗuvjZ[;h°Ęņ1S?{’kīi ‘‘²ÆĻ¢µ£»óŻåYQg©"BÖŅÜɹ¤é\P’–Ś**÷‘Ļ·ŚRI‹ķņ T÷rCmŻ<äK4„’zQGq$÷‚5@ŖĆ®9Ŗž*¶xt4ŒA§Ø5ŗŒ®®ŃE÷'ńĘ­ śTcόįqŒŸ­qóͶe2ČćoQUu;—H3ĆpņNĢóœ ”kAdZ^[„tFšŠÜå«YÕ|Ö*<Ķ,»8s‚OZŲ³Z„@œ`œā³4Ū)d¹/[’Õ£ѽÖɖD–3õ­ōkb#u©^ÜÆŚęóBīķ‘S^Ŗ­ˆJ?˜3Œō5S\˜™¶ĆŠ‚"Pļe-×ҜWQøßQ>ĘĀŖ…ćVŽnńłhIV|ćéUm>Ó9V‡,É×E¦ÅęBFqµ3ŲӜ¤÷!„¤ToU¶łœ»ÆµléZBJ<Ę2Ā$\…ćšĢĢpx‚3r95æ>« Ūä«'DSÓ>µ.żéÓQęF>¹§}¼‘fQœĪ? zƒ>€×7ļöķōĄÅA”jwsų‚rÉŽU*Ažz³ŖH‡H–4‘pFŻŽµ3›ŒlsŅwzl`i°üŒ±łōõŖŚä±Ējęo3å8Ą=źk)§·m–Ē ĆkZ«ā8¾‰Ś/5˜6 äŅßVo-"gX°Ųœv?ZٳłgÜp1ÅciŅÅ ńļŒbŗ‹Lņ)ł’€Ģ8ŻZVi+1R­cBŒ~ģœH'=*?ȦycqŸNÕ>§·ģm°a"ÆŹŹ*Ł˜ŁG#³µÉ‘Täöļ\.]Žļu™°iķ&¤% YHłż+YĀA  aę恎¦·Æ"&H–8¶Ė³åķė\Ž”osŃyPo©暫}$.XĒX”š­ģk1ĪaŸ¼ĮĒłĶoų7OY-„;]# n€× Ŗ+yč“¶3ÓŽ½7Ājž(«ƒĻN1USįV"”¢ß™ŻśŁŲĪŖ‹¹ną:zͶ¶ó|»‹‰ ŽnP)Ē5^źŽā“ø S“É"Ŗxv;ˉNc³DämĻCU­t(I¶Źž · عŻü£–ē8ük¢šģbKD™7ą.gæ½cH¦ēS™–(žėz‘ZrζZY“‡vņ¼mķS^2qIn)Ę ó˜Zģ—PO:Lą<„ć'ƒUlīŒ0~Xņp;Ņx‘'kا¹²”ĀķŖvVóÜ^”ˆddek”GÜI™Jox‡‡üé£V ”ŲnŻķ]cZ¬śg–ˆŹ=M`xye$|!W]›ŽŁYŽ2łī{ž’JąœŸ5¢kN/“VyΦŅ[jLĆDv:qD׆ąĘŅØŒ"ąc½3ÅŃÜ]ųÜxķä ’dĻ3CŹ'pCׄmģāŅ—QFWn7±©öļ._–<€2&‡ŖĶoā§ yąŽįZ𠄵ţ>2{ŌžŃ¢–öYī6‹HłÜzdtā¹ÕJkā:ł*Zń:ĻŽ„õ²Ķg½”E(8÷&¬hÓŽ\Y ¢Hń•ĪÖ”ƒN…ü9 °™™‚=:šē5mfk{cgĪ–ź„/5‰éøÕy'ĢŅEx’AftėD‡“<“\ļ‹„·›Ā‘[«„—ż1ĪkV’(ŚrŁÜß.:ž5Œ‚I °żė²ĘĶÓÄ7»L4Ųa!߀ v©B4īĀGłć;@Ļjžāé¼³nTÄ1ø0ļU!¾³7 ŗ°^ r;×Zœ›½ŽK®A“ZʤbÄ/˃W<#¦¾­Ø4P*ł°Ę\Ęź©uv'˜¹,ü }*÷…o'³ŌknpčpqCsKcT£{=ŠŽ!³ŸĶxv ~`{ō’Ēwp¬Ćˌ8ßZĻq.Æ,҆v›-œäU{čžŃqY ¹ ĘŽ{«”[¶Ž‚xā²Õ~Ńi4C&MWšīęęHĶć>ęL0j-Y™tׅņΤrĒ?•]Ńa[97’¬ˆ–VjåWŻŌĒ•KbĘÆ¤ąµ0&Qę.=+[L±˜…ņ„)l±Ļ>‚–ŃīoĀ+F“Œ®ęź@Ŗö«pĮäŽP«“…<vžµŒŖčh¢¢Ķ6ŚęŅĢ "InFügœżj¦bš†„+LY^/ļ óéśV·…¤ņoŃ„|ˆ3Š ĻøšY|Iy!O%łƒo ˆÅĖVT¤’oÆN„ —Ž×RŪ8u’<²€pjŚźébĖqrŅČģr p*W~£}k(ü‡k m|S†Š|/ņćH¾×¹@üEg(¦ŌXć Ā<čźt«‘«čö÷±C˜ČŚB÷¬¹uM%dk!¹ ęļYµČl¼5$7‡ńØ+ŸÖŖŽM§Ėw,«9Ū#–»ģM%IAņɲ•j’^ģNėLkYŗ@Ʊ54…bÉ 7=I® dp^3žĖčģ4ł&·_.ķŪ”澟‘­Ž‡ÄŗŹKŻF›^•\+ĻBMRŗŌš6!¦‘Ļ·J†m:ä|§yēūÓąŃē˜ą¶ÓŽ­Zʝ4bŖÕjé\¾ V'h—±HØVøŻó\ŹŽy­šżÉl ¢'ŠjųnķĻŽ}x«Q„ŅĘN¼“1īõ9 ó;©¬Ė‹”!ęV žUŌ\ųh~S»ŌĢŗŃVÜį–F÷ŖŠµ‘Ģī™Ļ°ī¬EZ°- «‰qčjĢŃŪ+”ć½G%«ū¼œŌNškRįUÅŽ'Earf€“°osDĶ8O'# jòŠh¤k(­›@™Ÿ½k(Sqv{*ó+¦0Ė:<Ęüź‰%a]‡§5±¼[ł—!‡ZœiöĘ<¬€žŲ½ÕŽtŸKœ£-Źc&?JDŽfc‡bßZė~É/+ż*eåPĘOūY§2\¤¶9µ†å@!›?Z,ąœ—äps]Ö»ÉĒrŃżUģ÷¹Šåˆ.ę¦KpS“łVø“³8s3ŒŽ¹«V‘i‘/3’ĒūĶII-†©9n`Ēc\üĄśÓÖŃ#\«|ÕÓ}–Ņx1źEčėNC@›˜ŲuäćµK¬žÓŒzĢqJ® ńéZŗsź|Š?ŚĪ+q-lķcRóFŽĄäŌw·°« ŗūŽh“X)4“cūFAž“+ŁĘj­ōwńŒø‘ńĘqWģę łyŸRk„Ń5 XĀ™®£p?.jyķ¢W2p“g ³JnŽAŽTp;×§ĆØųrHó%²Č[ų€©ķļ¼0 ~å2:eELėŪģ³¢u’<’MÓ杰šÉŽÕŅh~Óf`ī’0#žq]Uę—u![tE Ą6 —‚ŪmšĘ€÷>žÕ‹ÅJZEŲ×ŲØūŅż :~įūTķĒ=‰­{='k m“ž5‡—xēt‡s¼ńZV‘-‚orX‘ü=ė ŽJīZ— Gµ‘ŅŁĮ” Ā€t©š;4äÅī¹ö®+Sń‘ǶŽ8=\ąU#®ÜJƒxhŌõŪYĒ]ļ”Z£ujw²]ŁĘąeą"¢›P³T-¼&{–ødø-…YI#9&ƒ¤Ļ0ĢQĢŁé†5¤pkyH™c'šĀ'cƧ™ “źH>µ,śö•m-,`lšć`е5<[°õę­Śhø0Æ\·JÆ«Sé#9WؗĆoSGQń~ŒdŲ­9 }äęŖé^Ał.O=HļWaŃt8ŲļRÜÖ„·‡a欏'ŲS§ź®Ź„*Ł“qWŚõµĮ-³ŻVqFŗ›.Ґzpq^Ægg »B1ĻŻ­Ģŗ|(˾@(ÅiM•’d<2m¹³Ģ“Ķ&ŠĪŅ‚?„fµ­ķ­ķ˜—Æ9cšŽ»øĮ;,†l ±auĄ §*ń»MՓŽ"Œ!-"ķ÷œœó7E%ćVtܲļa ~„×e4“`‹vśXŗµ¤‹)nŁ÷SHµb'§gŖ%ÓŌ:$¶ĮäUä²³2y$÷ äŚ=a?ÕĀ",XČ&HńŲ»jš–Éš)S’^éÖ*é–Ėø-ŗŸe§rWåČQŠc¹;…Ō[>cŪ ŽĢ*…åµŌ§hŪĄź†§Ų)nĀX©Cį:cŶĘ2ˆČĒĖÅrWś¼LX¦Wżīµ“Øi‹?ČQĻ5–ö€Ń¾ÕÕJŒ`½ÓŠ­iĻć::]Ō„:Ÿõ™©GÓ<™dĪ:Gį\ŅŚ\/ü²~kGLŠī,VQRŌ–¢‚Œ“e©4į ‘¶)l“«čŲąK“Īīy­m<źˆRFN$ցšń+Ė!ŪŽ„ĶĖFćRٲž•Śžķ®p3ÉĪ+E“k«…%wNHąą ‚ßi9“y9äÆZŪÓZŃpL÷±·ūÜRwŠ÷M!Ļva _™9·?—5nŪĀó7ĀĒŽx®ĀŪXrŽČÜt'5a¹Å>īĘXŠ4K/ÆšK]wM—؛Šø/gÆ“sćŽEbŖI›ŌŒb’ft"üK€$ĄžõZk›Ų–‰d=>õXžéŌ~śXĖ{zTwĘ]khŽKc™É'¹RkŪņHkpŖGóO³šäI“‹‘×=Ŗ;ĶFŽ#ˌz±o¼A 9Ł**’{5¬hŹz$dńƒÕ„©•ć’]°Ōw–BGł®YZįN¼’ūęĘzā£77S!Ż–,9;³N8Y§¬’±1Ø­ŹurXŁ‚A¾9ļ—ļQ®•m')w»žž+‰—NŌ¦'l®ŹyÖ¢žĘ×RÜ~ē]”ŗLʝDŸ½cŃ"Šlß™¤8ź)Ņhzd,w¤Œ1Čķ\­ÆŠ #\} 5Æm/‰c •yG”żk›ŁW‹ÕŻz1©I«Ę6~hŲ¹ŸE³ā;"p:”Ådź>/Óķä ‚Žć„M,:•ĄżķŒŠG'mgŽč ÜlßqõZé…8M{÷ūĪ*’®›tķ÷īü{(a³ˆc”ÅRoj„ņ°Ę1żÕ«²he?åÖDģ*HōųŃ|Ø$ŸÖ—²¢ōhkė 휷öž©!i]Ē`OJž JāQūĢōąf“n|=0lÄ®ŸUŖ’iń©Ū6=4åF?`iߎW ƒ#i=źĢ6ČÄr€c„RŠĪų0 ®=æ­\µµ¹Ü2­š9f“°—½±hŲdz Ų§C§$€m ĻJž 6rćsģÜ2rkbĖNP.ł ՛›ŽēDh§£3ķō<Æ2*)ääÕūmÜ Ż(n~»TīöÖčBŹī݉ę³nne-… EÉõį ¢‰ļl-! P;gŒÕŠ%įäi#[‰X)YXā=+RĒMór%$öSm„Ø µ²(Åehģ ‘ÉĒUū[bFw:].“įčvovŲ;d֝¶nÜy@wv®wVļSuEGDqϦڻ-؟\S¢Ó$GS°®ź×Bµ³½Ž>õlXXY$ĮB(8É Ņx„éįģļĮX››y>V“ž•ŲxkUŌ”ź²)0k¤:xū ÜÕ»kHUTŖ…ŪÓ +‚xŠRŚ'|!U?zEkYŒŃå­Č>ŖśIēB¬ŒŽ*[vļ¾nø"’i²ĖņÄĢ;ćq¾ČźöŖ;æĄ`d ĘŠOp*=„„ɑß5.é¤|}qź‹Sī•bł­ŁAœUŻ¢SRDgņDå{VvÆewo…ŻĄŒõ­[eŠFS±óč^Q88ķDk4ō"µ(É]čŽ:6ŌA*®;óWį¼ÕŹ‘²6­j— xŽÖäžģŗ|7SŗłRY 9Ļ­Fŗd‰!Űx=©Nžšź8TåųnŽĘĆÄvó&ĖøĘ1Ź£šŪÓ!Ņī£KHąūןEe1Œ³lśt©ķdŗƒ"W±¬}œ—ĄĶ'R2ŅQG¦C¢ę,¼ˆAÅW¹šå»¹?6īĆ<⣽ŌĮϟ ŻŪw„c«źp0Üī@äę¢P®ąiįö–ŒŠŌ<92#\”ēVch4¤ŠńéŅ·ģó·ØTśž)Ą}Ŗ 'õ¦źÉ-…ģaĶvõ/ŚJꬣ”ļH`™ŸågĻūÜUid”6U>ļœ÷WY"1“ĘH¬įfi+ŽĶ c;Ę;®}1U.l¦ƒ’Frj5{ö|,›A¼ŌņŪÜK$žPAģjnÓ+–2VŁ•įeY€‘A8ϵI,ˆ^œSģģUeĖ— ¬ji<…ū™Ļ §ķŠŠåެØń&Ńū­ä÷§[XęBY<°z{Š÷ˆÆ±tb£¹žęDłrō5ŗ„šµģsJqNü·/¤UŖ*×»"5×ĆcŖŽźĘ<|Łby&Ÿż„`²g>•Ķ/›žõKwĮ5$3ĀĒ äw„g*Ńb: µøĖ3Kyo j Ę Ē„gčĪŖˆmć”5“’”€n)–ąó\śĮŚēD”g²HŽ–XķŲĮo·ž+!ļ/YŲI ø2+Øv&ć÷yیMNš.Å,ŸĻń­)A{ČĻŲ7šČäƱŒdĖķĒ5vÖ7JĶ>{“žkpŪşŗøĒRj a€’†P¢¾*e‹‹Ńš²Z¶ČŪ@ޤc8ļI%²yp>%Õ^}2qs·hÕsœ³³{[vŠ#«)Å «+;Ükox€Žź6CsB÷ Œ’¢¬iŚü2 ;“'žšv„‹Qm§=:ŠlÆisŁā@¬1÷FhP„–«RTå}5F½¾”k*ü³!=°iļ3n¹®;RšÕ“„ɧÜIlą÷&­h6ś­“k»[„ßĪź‡MGįw)TMė®Fßs·§„W– «vҟŒČ õ=ÅYŒ pđY§e©RĢŁāb¤?µ>Žö\ky­]–b«žØ¶;Š ø †9¢mō!.‰Kw r °zt1²mS·<ē=h¼³·™8#Š~uqi9s8P= \cO;_Š"EĘEW—GÓå}Ό¬zk*;øJŹĪź’Öi\½ź/¶jšqŁJ-Ū”±”Z˜@ŠCuVLŗC$Ą›³/qšéģnķ˜lyU˜™©ž(dˆyaN9Ķf±6÷J•ndråš0#Läwjkx’t7”÷ŻOÖātfxŲ¦+œ¹¹øå|ÖĻ#é]šq½ĢiŌVå{=¤c‚£"¢¹“z)CĒ5Ģ^é—W1yŃHĒ‘šĖ–ßX³åE\v£uī;°V‹“ՎƒWÓõ¶Q%¼ŒG]ØŻ*½‘Õ ĖŸkGõ_Iń„fduĒøÅtŚ7‰-īeU–XÕ߃ŗ²“œUźDė§Ķ„ ßȞÖĪöęŌ+Ż·gTųs̐ļ#c9ā®ß\‹tW‚xdVė±³Q&ŖŖŪ™Óš®hVoTĖ«N)ūŃ»3īüŅ|ńÜąŸČÖ%÷‡õ›)ɅŸhīņÆ@µÕ¢ņĆaŠž•iµ8‰å Čā¶UzIÜĒŲõZg‡Y†éLŅHę»Hž9ą æę%Õ“¼ye ÷ŖÆ\ ōɧīKXčĘźOąšŠ¹6žØąŖ`‘œę¤†u“8y[ń5ZĪC„Hū±ÓqØ.’9°Cā§žīҽב§³oęķiG=;VŒ°M÷$CĒłęøėØc· ŗŚz*ę›™„˜Ü¦OjĪzj©9IY£©/q—ą÷¬¢(MʦOCÅs?fVm¦įČ#éW4•hP§›+(=ĪiE»I;źÖqŽJL±äćWĄ’šVŸwśĒ†„ń–•{+¦“ <Öņ6BÆrµś™‘͌w®;槆4ļ|:æŃõyļb°øŒ™šŻšp?Q^ž]‰ö5S–ĻFxłžÕ¦Ü>%Ŗ?œĶa;‚Ž*^k8+4ŪÜ;ŠöĻŪĆ:7†¾-jšW‡ē¹ŸOŠB k…!±ļŸ­xҼÖó‘(”lüĆłWV6”aQØķŠéĖ«ŗ“¢ē£ź"i„Ļņq åėYZ•²G~J łpv‘nn™Ąąę°µHæ}&ģnŻ€}kŽ›•µ;„M^ńl›Aœåb' >bI®‚å¢Ģ)ŠÅ‡oZć9ŗ3±—­h[\É ō"LķĒŽ3\óƒ¾ę‘«ŅHŻiZ410ł³Į¤‚KŹļRTӍĪ'ıµÅ³ˆJ…ūÖ…§Ź$:H©īk Ö›ÉÓ]”`żąVF‹w-Ź…fĪkv¤–†TąŖJČč.‚\Ų-·˜č1‚z{WŸjZ ±j.éęłhŁVcÖ½ L„¼dŒ–cš©ā ;”ßņŪXŚ¦…FŸ(W‚RMīrŽ\†"Ab{žŻ*„‘} \·G3pą·\Tž%Ņ>Ż,EsÓ,OéWe¾óuIyY# šk*ļPø·½Hć,ŽżėŠVtT„Ķ-v:[",|0–ūŃP¶Ć½šŠöam„„£Čß¼;ĄõŽņ2D$gi<ĒĻ8­¹‚jža pŸ–¢é;½‡QĖ—•–²æ“[)b"MŪ½ dB--lå†xJ©ŻęmÉĶX€˜lnŠ‘óš9ü+.Ž=öņČYÄxĒ^õQšQi7c%Mm$V„Čڐs!!Ž1žÕ»vå4·¶r©ērqX–k"Y4ųČWH㊚āv¹ā@Ć~5ĻV.é¦wQ»¬M •"†RØ9Ļ­i[āDxˆbŖ¹b*K ,Ämčjī”āŽßuų,x§ٔ㯼ĪsÄ3›0^Ž"Ob{ŠįnÆg’gg–_˜ä®ćǵuž0ŌmŽęU†LØ$qКį» Ē¦q]ō­k5©ÅR½āM%ÜpD’Ģq¶©Ż^-ĶĄĀø8ū«ėP¬hÉ-“©éŽÕ{Ɩė ų’Lm##«EĒ}É߯‘ydk/(E…’EÉVŖśåšŽŻK(Jq1ƒVuŁ 7ńČ»ĮUŚsÓóŖŌI=²øĪS‘R”[Ō©ÉĘ6+¢¬ļ’Hf'$б} M;œéדI§ŪŹĢpjĪ $ xŚ1žćē}ŠÕĘåO ±‚ór“ČĘzź-„ŽTc°ÄŁčVvnž\w(ĘW&®_ź0±-{%ćÜŌ]½ ē&Ց,eõŸŽ– »*æŹ˜„ ¹‘ī#.Ctqވ/¼ė—”d$|ųĘj¶¢Y®ĆnĪįóԚŃ6šL#ORH¦f»v„Ėž8«ŗ…«-‚&ņžqÜŲžĘ”T†Ü+Å±Ę*[k¹>Ļ,{Xīdb±œžčµNźČ§¤yPĆ3ŽŹĢNpk d{§yn¤>ż@­ĪB$ß \±c“ŒÖ…„‰–f®cęcŅ­VQzźŹ”™›”ŲÅö‘£ät“”{„µA&Ä£=ŖXaCüYĮÅMādhŌ!ŹķŽÕJRŌÉFĶ“6Tgf`Ä)ĄĻ” Ę†ŲĪČ»‰$¬- *ÄWpÜyē½oiM¬ŠAĄ8ēé\õRNɝ[Ē•—“ۈ›P‘‰ 妊Ł'™t°ÜB0ääØ÷¦ŲYH–ņ±^[Ö —̱³fU-#šøģ)r«ū” r«¾!°- ČWŒœqZ •‘Z †^IéWt«i5 0¤„³ƒ’:šM?Mņ`|\0,ŪP7„ZšåiībčŹOšB"K…eC0ź‡5Vžcgnč£nCŽZ)ŻĆf\ ēYw‡C2“dĘģžVžynµó€v.~č¤Ód)o‡{30 Ę„•#±ÕR\–;†+ŽJҹÖęŌSE’\›O G…Rē­q‹Ļwø+†rė¶ń„·Ūb³øˆå0½j‡…ķ 3C"üβņ¾Õ²št®b鎭‘©$–ŚW‚V鑾ŲÄ CҰ4ķl= ŽVÄ2Yk½ųƒ¤Ć{}žhöżā‡¦q^G«ĀB°mł#c’:f° ć87sfł&é³ø¾ńT>ū=£ę ¤“÷{VE­·Ū"_z°Ļ'­`k¶p—T”•…$w÷®ŠĮ£¶¶ga%“( ©«²Jč‡7)%mŒZĄÅ3¶7ŹćHŽ 4gpիж¤{]¹N÷D•.oįi“–#Ķ7[†+]RU†G’!¬ dŲøA īĖęazą]gvņ;Äcj’rXWå‹7圽ꎎ[‰µ‰ŪiÖÉofgDuŽPsĒCU5m,ćŽfļOZ}­ÄæŲ“Ē0}®øCŲVŅ’iXžKHÓkČ׬–ģ^éWa ō5…¤\V2M”‰°£wśÖ§€„“ 4`«ĻČĖT~,ÓQf°‘äĪpŻėM)Y—(¹®dö;- ĚoŲ¤zIi!Œ &cŸjēüE}ė»ą‰Q$Q¼:Æ ÜHšÖÓnXķ%Gz‚c-Ͳ\Ģ`{SÖ÷“~źŲŌŻ¦\;“JeByĒ®>źāk„ū;HeŽB T’Y›YŠbcŪ…Ūķ[ž²Cyl‹“•Ü݇<Š”Tn÷.ņo‘+$/ƒ¬>̱›«yLnwy,1•õ®ś(ō_-āV¬źś[Ÿ’£Ä¢6UņńŃWžŗāoµ‰"¾š ŒDnɐ£±ÅRälŽv“*5ŃU84ču¤ŻŹŹqŽ ŠŚ"»Œ¤v’!Pżźś—ec࣪4”Õ5»D²Ū›6”Øø;ē‘vū⨫ 4ŁüĀ~G#51¤“Ų§Uµ¹§§ŻJÓ){§=MiÉ}y>l„z‚ qÓPšł5wO¾‘cr1ŌŅ•4Ē­Ē–ēA¬ū°enzę„k³.@“>Ձ4‹'ĢøĪ;Š®²2óČĒ„Z·C7ž$nLPüĒccƒšbČTę4ķŚ³ą2Č'šŠo7Ŗ3ž“ęŠÉŽ.ĒIirģ6Ȋ¹sR0·ólōǹ8åø ‚_µj Ku-I¾†ń•ŃŅĮ-°o–Lpzš°·!U_c\Ļ–Ģ£Œv4įɍŖĒɤŒłŁŅ>£­dw¢–äuPGćĶa±Hw=jXÄä§=óUk-䣭 ģŠq’sėNkŁĪpæ:Ļ…&ĒĶ“QšÓŅT‡ÉūŠ—$Ta-ŠóIę¦$†Dõ9ÅR0‚pŽyģNkøÓ-ąŸ+'õō«RčV,»¢}Ģ= 54“øŖŅģ>ņnÜr­Lļ+‰›§Ķ“Ö»ŠŲIˆ†AéAšżćųvÓ÷{™Āžg?bm2`ć±5¹¦­”?½‹<ēļTéįėĄĄyNŹ]‡F™Ż‹Ī+7nēB嵘ūK->A¹cbOlńZŠi¶Ģ«²Ų1±¤Ń­b‡A4­Ņŗ{²ĒóAjsƒšŹUZŠ„K™]³×HweŪm"żF+BĻư4ß½F9yõ“#HĘ`j°Ōčņ¶q×jšĖž¬ü”ģćrÜÜ“Šō{U˜Č¹ņŌ÷Ō¬#eP8„-bøł„yˆ<ü§,šl ŅvśśV ŻÜ®lźF+EcY5Ū!C•ģMKˆ®# åƒ3šĒ–ėM†>#“®@¢=vÖ&żÕŖ¶G&µt䗻Ne87ļ;±XYˆ€)½‰ĪOZ”Ų[¬{VĶ>µĒjšŻÓH"ö@ėśŚŸŻ»ō©Tjī’1ūZ2÷NÖēNœ#·ņĄē·J’;{ÅL5Ē” zõ®k^&“ o÷#škÉāK…Ć“ŪO¾+d„kJĀj ^ó='O(‚oc uĖ`Ué.l¤Či¢ł‡cŠņ&ӵɲ»u«Śv®°Żcö/ŠĪtVüʔėŌjŅW=M7I˜äÜ.ģäōč4ū˜$rze«›Ó|9py×cqŽ­ŪķA›°³Vn;ĻC§—KĘššĒk˜üŸØ= 4M żņ°#š„& Qåf–Lsɤ±µS( Ać<ѐkrg{ŪRūßŪ«b8$$t9ØĘ Ų8µlśäsZ6šm³ØĮpzš{eƒö‘ßµgķ©ģī7B®ļC6=Vć 01ŻŖŹ_€KóŌŽ8§,VŠĮL€`rwu«qiÖ2õćĻŸ4V¶&›v½Ģ­AģŚ"Ä:ś|ÜV ąˆ6UŃU‡5Ś/McmĢ_z­s i2.<¹1ŒpÜ]±0Zjc[ $ī?ø éµ'qĒQUš-AżĆ]ÕŲßx_J²!¹#±ؾ‰§ĄŪ×ķ|›«uYtwłܓoŽV9–]čX“ŽĘš ÖĪÄ®W­uq²Vę_?ȑJ§ Č­n’Ų%Nś'sœ³°Ö e”\jŲµ±»Ud,Ņ“£°Õ$ ™'Ū84Æ„j²­q.ĄxÖ|ė¹q¢Ö²"±Hc“ż!Ź‚}+NŽćH PO®qXņhSØĖLx9ČØ›MĖ÷!Bō*½œd·#Ÿ•źłļlĖ ²öŽ9¬­RW–<$j˜Uqe*ēș[j)N£ ŹĀ²cŒšŖp°IÆC2āŽńŽāĪ7w*%²¤ęg!‡©­d¾¾BD¶@®1ĀśUøä@YJn“”­ŠĪ1„“FHѝ™zŽIj’O\‹…9ö­tyc6:ąŅīˆ0_1ČĘ>éÅB™Æ³…¬‘ĖŻhęa˜0=x¦ Ē÷$ˆčZ»km29†VB\dV•Ž„ źÄ×4J¤,eģ§{#ŽšåµÕ“Ųb¬˜ćń]e’ø;š6ĒĻJŁ“Šą\aJūÖŽ›§Ēģ*¬æ­qÖ«²= ›VrŌ壒ķWä;š;ę„[›¼ŒŪ(pk¶ƒO¶wŚ !Ęx«¶öń/(®}H¬*œVʰ”ROs…$HŸ½ˆ ŽsU¦°°q“ GnõčSĆlxXŌzM‚ŹĪC˜ ß掂Z\u0 ō¹ę ”ŚKGo(rw`S¢H,B„‚V¦ÖÆIøŃ¬]Ź«²÷ąž}Ŗ |;fWhBKV±ĒQ—Ä`šµaš#„žŃłp‹,[}4É/®·“ÜŒņ+³—Ā‘s°žG„3ž’˜<ŒqŸZŃbؾ¤*uc½Ī6 ķZ9@ūEĮ…kŪj·į°ÓJæ/R;×M‘(Ģ`°ījÜeø9`zb±uh=ΈŖö¾ē;c­J˜ĶĆ ō5£m«M!gŒœw­3¦Y—įoĀżŒ› O”śYŗ”_SXūE4Aג®óķQ\i“ŹwlĒÅNt™P‚·2”õ«v6׏?Ņ÷g®M'7`Ĕfłgs}&鏔Øč¤*¹»ń]ĢPHńćĶ H”,öct„×50Åt˜å…ŠųĘ+^÷ņ”–įĮNG„v­§®Ł³N·±·3T±TŃ.…KXįŽRa"‘Ļ4ŃhIęI9ē¦+ŠZĪŁŽ$aך‰ō‹6Üźµ5‹‹Õ²~Æ%Šā>ĒīIĒÓ Ņga”®ń4ė$\$Œrjh¢Ų““Ē”ć;Ē}Ī6ĒĆžc4g=rN+^ÓĆŹ$~=«Ŗµ€ ŸSS›r¤€ūN1\ÓĒv5X;-L«o ŁĒeć'­[¶ÓģķTT“‰2®79§„9­Öb7{ĖŪMļ#IB1^ź*\.šWępzÖeģq?ś¹żÖ­©“‹gaóÄzŌÖś5¼cvüqŒz֐­õg4ØĪZrœ†É÷žė'żājx–ü’eĒ„u£KqøŒōĒ©§”BŪGµhńTŽĄØKe”Ė[Łß‰·4Œ ÷ō«-Ōra®NÅt`ćsŖ‘ėUnōµ,Ą¾ģwĻZĻŚĀ[—ČįŠV—Ó!%„WĄēq­[ bČs0AĒŽVŽ–…O$ŸLÖ]ķŒ‘”t+GFZ±,T µG”Ćā-*?•fĒJ«u®Ų;·2®xĘxĶyÄn„żįUd˜ĘFrMcõ¦t,g9ģŗf£`b\ĪNxĖ?•kŚßXŖd8=†źš$æ7ŹķŽÜÕ¹5»„@‰ük–ł³_Æ]ZČ÷Wæ³ņČ!qķUķīģCåøCŒž+Å­µ{‰FŪč*ż¾§.ąŸ¦ D°QŽ×1ŚÉ#Ųć•dQ‰‰r*wK`ŖwFבê]Ģ;sÖ­ĮØĻ)Ć3ątа¾bśÄoŹāzl†Ķ#ĆIõéTŽ[ø# ĆŅøo5Ų7ĪŪ¾½Ŗ·Ś.#›”¦sZG -®9TQw¶‡„Ū:•Ķ‚>YH 0Q^g{(q’ĆZŸLÓeÓĒGü¶U“ųŒ¹'ŒM#R恊mąóÉ®³JÖÆGžøćń5˜Ś,ƒh…99ć5Zm6ś)†ńō9=Žšuę¾#¶µ¼†n7•8ėMŗ°µŗBYŃĒį\D x¼å”zŒõ«Ö+|æ6öŪ×mbčŹ?.s§%ļĘēDžÓw‚Uæ:SŃ ŽßeŗįūdŌzEõŅ¾ĘŸŽĘ·ķÜ0ё±Ķg*µ"ļ&Ķ%BœćhuØŲ]DĢ‚9iĻVQG›B;ćź­³wEGs¦ŁNvéW,Į=%eóJÜɜ¹…×UIō¦Ķ„Ż\«żēb»Øō;„x=ų«6Ö±AĢ{ųŸ×—ŲfæQI{ǘĶį}AŌnF%øćUĘ*eth ėR+$IHĒqYļ£/XĖBø…øvéSÅ7.1A÷˜ā•J6œjŚ\B‰…SžęŽWтi&å±Õ¼pƒå#?„UhŚå˜ā2F*ķĶę#Ą\dVuĪ©µ·¦ź0”̐ȸą`V­ā!£wDF k ›ä»Ę(6Œz×5©>¬·”b‡×ičö×)#nņœƒÓ"¤šĪ)”.A séW[Ž•"KĀ9;ӑĀ超ōjDó37JŅ}L¢Ģr:b“®4”X:‘Ē|Õ{ķ.õažąÖ‘ö-ŻŌu¢¬ČS^TnĖcŒńVō’ĘówŚ*¼z±pÄަ“N³Ł{ä ~µ5)Ņ–ÅFµH«“nĒ0žß÷RVōŖ7žT»Ų¾1œ“L²ņ­ÕV|÷9­(åI@B‡wZĶ7 ³Œj+˜×‘ŪŹYXŒtę’ĘÕ l¤Ņ0×A$«Ū”ɬۨīL ŚĶZ«Ģ¬Ł›¤āī…‚[$;FŚŅ¶¼‚aĮ*HÉŖ6e'b­żŽ£ÖÆ“Ġǜ’:Ęn7ÓsXF\ŗ½ßy °€2:’*”–ŅH›£ńŪŖõ“‘—Ū"ž{՞H x\`TūgO„Łq”Ščēī,ļ“?,3ø®qPĒŠp$+!ö\WGtŅØž>• ęcŌõ­!Œ•µ‰šĀ%³2Ā…M¦‘ė‚*Ä6Žb (#=+VHāõsURīŁfņĘxFsJX™Kh–ØB:I¢·ö=“Ÿ3HģŲēē¤M2Öź(ÜŪ¬q‚ŽŹzqM²‰U÷»±?ķ ±)ov${ę©Ü\@Źź…Ū#WB’jĒ*‹‹¹&”©˜ķņž^09Ŗ2ųŠ_1G_hč)a±WÉ “dš•ķ-ął¤šŽŁķSģč„®„)Özō%³Õ¤¹;<–N2@ķPŽŁ¾ć4k*É×,MN³Å'ģģ9ĶKowq历{PŒWĀ\Ō¦•÷(i:®§˜tw‰N2W­uÖÖ·–Ū'L1ĘŚ”m9ĻĶ {‘ڬ‡…Ą0­ōĮ¬jĘ+X«)I®Yź6īĘŲŠ2©XgŚ}GÆ£ßė-.č›Ģća]Ž‡\ĊOø¬{čī¬%T dŌęį&ķ¢ź&œäIm.°’}aĻ·jŁŅķ®eC¹äWėœ×.Æ"Hq·ÆcŠCāYć$ eōēƒPšśjŠśĆN×¹ßĒg9I)ć¹Q@ˆ¤œH[5Ć[xŗp£wĢqĪ8«ÖŽ0NÆÓŽk'³FœĶėĢwĀW@¤īj}NĢĆn®«œó\ÆŠmvüĪéĶiYų²Ē€[¼Ōr¾ģŅŽZŒøŌ͓ļR.ŃÜEMiā8Ų*ˆ]G®ÓZÖšuśe 1ćń§\i¶ņ’”mõ§SjŪQTŽślF‘o t'š†/Z¼āŽ@:s“šĘÕ¼%=Ć1Žłā\ći5Ķė~ Ōāgho¶©äR£Ķ¢‘Ä8ĒįŠų£ž GĆ("·½·ŠOųMe ¶8J… ܰ+óröż¤ŪCūžõō'ü-I’hrŽūĢ-Ā8ß$‡ć’*‚Ÿ³ÆŠ|}į#ŖióŁŁįö/Ś ÆWż”iŃ®īū³ƒ-‚© Õ§/÷9^]Nņü²mĄĮ Q,›ćv˜0ŁĘs_ck±gÅm ŽX6‹¬:Ę+yJ°?|ĖńsĮ"šn­6—ā 2{ț J#‡”¢Ü5·c¦¦*”$£}NF&†Gz֑k% €W©5‘§[„f|:īžÆe"Śr‡5ÉZ öG}('f̐ģ·$Ä”ŅTFÓßqūƒ#E^»·†K}~ąČ#×BÅTĄrĶ»éYī® .ü©™÷6«ur¾ c€ ¬‰W&ßL‚ŃĄzœWGr ķ$`˜®Oā OrčŪ›å×EóÉ]čsV\Ŗē=hH·V\ą÷­KiHäęØĄ ©ēs(¢ŹrČÅĮR§łWD£vgN\±7!Ÿd‹³hƒĻzød†H2  k—R|Šß1Ē=©ÓŹÄcqĮē·Ÿ±¾ĘŽwVf™·µY„č s·8梉淺Sa½aD'37į«_K,B¬¾fBh’Kv]9i¦‡a LŽ‚=ģdo›$ÖŹ(l’xō®&Źq ĻČÄx®ÓEŪyxŁ|åź¾õęÖR‹ņ:ćxŁn7ÄZ ÜéO,yŽ~lS\®o-¦·mĄvķė^©¦ÜJ¶¢ŚP¢SłU{Ż»[Ń¤Č¤žzŃOxū:†”č4Ō¢Y³ŌY0 €ŌhSĒ3„0995ĮĖk+ćŹ-ņ˜ūU½>堙‡cŌ갍%eciT»³:Æ<)tZ܅erÄV åōw”.2Ä ­I=ÄsŁČ\³Iž0{ViµO92¬FćĘ+HƔŹU.ōHäž"Œk"•‚‚3ĮŖ¾¶>y˜(8®Ć[Ņąæž%Lo'“ĶG¤iægy ]Ģ • ŠÕÕR…’Ōć „ 9““Hķ|ČŻ9įwu¦jŅ¢yķņ—qų*¶„—l<¼†ēڹ=_Su?y:néYB2Z£¢MĖI7`Éöćø. ü*åÜĀWwś:V}­Šŗ—™pmI3Mo‘ūŌ$ö­')^ĻCZ.1Ž„Ķ"=ŗiÜBģäēÖ2[yzŒ“&@?1#°­1uŁ’%Ü]OĪ{U9YŒģąä0ź+%>Ʋ²|Ģę¼E÷–Čö>µJ3Ŗ’7…ęŗ/J`EEHדܚć5—o“ł™##©®Źrm(³…I2„Õ¼R^Hņ¶KžMW]>6ĀĒŠœs֖Q¾]ÅÉęµ4ֈIŠ^r~\t®®y%k™ŗk˜ķ4[Xt’ Š.ł†AŪTķQ%MŒ]®xÆžA0H¬NÅ—=8ę±4}ט¾łė–3RNģŖņ”¦¢žˆŃH<­Ė…‚µ­¤Ś£Ūyņē`“ڬkwŻŪ¬ · ņ}Eaj?»ÕŲǽ‘[§|Vä18°2(Ę’š‰§e$4ō±.€$Y7 "Ę2:bÆkZd²»¼(¾L„`öÅeiWs­ŠvŒœ‘é^£ąČć›F”JAÉۃŠZę­QÓW:!EK”ēņXł6QA 8śÖv„bŃŻEw77°®Ū\‰mŚä,›ö‚ĖŠćõ©å\&ęŚA8ĶM9ŹZ‘ˆ§Ė¤J’MŻ”ēlŌ°*Č\šŽĘ?2ą/”Ģd9É+bāŲƅf;×Ö®m AØóH£§Āīģ[ˆĒO­iY«$#%7š§hĶꈉČ`O«fĪ(^įnf=«.k;IYs\ĮYŌ$q†”·Uėł›ģį?8ĮĻėTõ5·³½}Ž^Db>÷fęĀä“Čģ*źYūČҌ_*ę ÓwF~f¤8@+²šü1­“?ĢĪ ō®a dš&ˆ^>•¹¤\²Æ’¤~n{šĘŖvŠė‚‹V–åū‡–LG œ¶ßZ›ĘZeČ†ŁąsĢyaŚ¢Ó¤ņ]˜§998ü«#Q×$›WņŽŠ3NƒwJĘ)ĒK»Zz¦›hn$—÷›0Gaō®3TÖŻµL¹t€€=kKQ[‰¤hß>Y<zŠę|E§‡?¹b§§5½>Vļ"'}«£±š­Ū^OĆ)UǓGzŽ»‰“CJLq$C,ßÄÕēŽó­µ»HĢ„© žk×õ+o2ß ,­Ėķõ®z®1•®\a‘Ņē•xµvų±R&2Eµ\Ó5Ækd÷mQ®Ēę÷ńUµ v}|łŹĖóotÅhé“×$Žα.jķŹ’fTļŖ{œ·Œ&³å !`;>nų­!#ŻišŚµ^<œŽsķXž-‚I5™ŃÖLēw~{ÕĻ -ļR[—bŖ8-鞝n”yÜRęę÷•Į$·myGņć=źōš3j‹¹iTć„ŃēŠĖ2ŗģ•÷p85[P¼ø%žKkwļČ>æJĘO޵Š÷o&nźD–+nąÅܬ- Ҳ–eg°{Uj­{299§ČĮ'q o,w=é¶źĻ:”V ō®¹ZĘW{‡†‘Æ®"( ™l˜­õ½ŠLĮņ²Ŗ>øŖ_ H‚y_*.ĮŸz‡Z²Xµ¶[lMŸ½Ēå^mÆ'¶.qJfž¬ķ6ž¢h”Qł»äÖGˆoäHžėcØŪėłÕė‹I®mÓ²”\¶OARk$£NVdŠ4 3Į?JšQKKšU®Śę±Īé7‘«FŹ”nGLWy­yW'Ÿ‡h`‹‘źÕĆYC•˜l;y»é<3wuö9¬IóŲ–cÓs’‹Mع®]ŒoDņKr07\©µŌŪXb,ā}÷²åüĀrö÷ŖŚ–¶2I`PšHlš*·‰g¹°ŌāheuRNN=is7+ŠPqžęˆt籂›«ņV5cKu­K„fSŖAŽńR+«½2Ę8Գƛņ\× §Ü\y>\ŒŲCĄĘ9«öJŖęF^ߣ¾XīzińˆīŅ%óJ @„ĒŠĖ‘ŪĢlĶ!9äī©ōMBŽ+ "nsY{…ļN»×tµKˆ‰Ī>_zēäÕūØéŒļå'rUÜ£‡ śŅł­Ÿ¼Ł¬šÓäuĮéW-‹² ä‘_b™łķ®YNĪM?2÷B=éŽAqVģī˜)\zSM‹•½ ²®cé‚jP«ß=k”Š+i=źe¶‡oŻõ§æR}Ÿ+½ŒxT­ĘœŃtī&¶£µ“ܙźEhAibHŪ2)«"œ\¶9h­‰lFjż­§µŃ-¬*~WGZ.-­›U•‡qM“%M˜ßŁ31ʆÅ3ūdÉŲŲ5«óǐ²¹ ōØF[v;µ.gaŖjŚngĮ§Č«†Ąļ[:m¢)į‰ÉĮ ŗ”…xUŖ©¾ö¶ńӜQ«ZF:3¬‚ÓO<ŪmÜvjŗ!ŠĆ2·¦s\kW܃’=ĶX‡]äyˆXćÓ-Kf>XĮoƒ÷&R{‘RĮk„Jpņr:mÅqY£ła9÷j‘uūؗ÷…ĄĄ8¬Ügö[”³=Mšōn”•œ)āŗ/K³¶f\śµā—(ÖŁ6¬ó ’įYĻŖė7w\NG¹"¹„‡ÄKyœjAnÆó0”*’6‡.·q(eŠ9ažµUeÕ]sČ éĻzō8ō’(ą >åN–ĆoĖē··Öą“HĪ8*–Ö_™ē°¦¼q¶yrG#q§®›®H2fūģ껳­nż\kœzb³ī×RS… Ąü©ūtöH™S”U›lēlōŻU §<ŠŚÓōė¼ó:9ł©`—[ó>E‡żźź>©€$hA=vŒTʳņ.ƽžāåŒ €n™Ž:gšŁ¶A“18ō¬‹gŲAr ö­;;ŲÉżęs\SŖś„…–ŻÓĖüZ£Š%Œvg9į:ՆøŒ ĮĒŖ“IžU¹=3J ȉ>WdˆīÜ+įcžGi÷‚ UØ„žfD=*ÄV73ø&į”Œ-t®X­Z1…9IŽÅČ\äR=jż²¦Žzz ĪžÉ˜Ęq{$g՟w¤źk"Ō!ģZŠHŻĖ¼[:AmērīČķŽ©ßi†XyĒ5JĪĆSLŸµ3:²mu ¼LĮ±ŚŖ’J–šm£Ę¬x1Ęj嵍“I‡޵’öZ”?ńņüZ±„Cy›ęœ0÷5SŖŽ¼Ć…8Å%gcamķJ²Ž¹’Śi[>hŠ)¢ņŚ5ł§N{ī ·¶ƒ,$FĮé‘Y©Ķģߎhć ō=–ˆ2Z.ŁŖ† tŻ‘Ų šm[LV>cĘ p7«.§£H˜Ž¹^2ŠŃ)}«™ÉÓo•%rķæöLg)µ[Ojæm=žŠD©“W:.4ÉTńģiĘēHHžv‘HäqNKMŪo¢W:V»²9ŠžYاø¶ ¤īĮEs&‘8ł& śƒŠA›ü±Ž:Æ\ł”£J/wa{VŸĀtŸoµ‡;ĪI5[PńņpRõŠ4§x·CØĻbõ•¤jĮČ@“8ŚEZ£I½dDźĪM¦tk Č~`½Öµm5č•Gīּܷ٭uX~o²HH8;i’mÕmćęĮ¾¦ŖXHIŅĘ^:½OT³×ķ[%ĮFģ+R×T“|“éÖ¼vßX™“3[8÷ĒJҵהˆŃČó\óĀØģ™­­ZP“EF0Ćs^OkāK@£żˆĒ­jŁx’P9Š“\ņĀ¶Æ©Õõˆøäʬ’t #L QõZåģõqpøYĀąńVdø»@2dśµJ›Z\ĀS²ęčnŒž­Iƒ,*?»Œõ5Ͷ­x‰Ģ cŪśŅ |Ę’0:Õ:ȘÖVJē[å¦Ģ9=*+‹t )ükšƒÄÖą £ŸlÕŪY0 Qćć½B§V= r„•®iłwē`*;bż¬ø£ž9Z‰šģ ć×žŪźZ€<*ō÷eó–Ī=(•uEF¤Ńźz=¼ūBīqÓךeĶōJøY×i{+ ޤ½W#Ō`xTsݰk‡{²w²fü×Ģb>LnIõŖMØÜ«ČŲŽµ”åģ}k'‰}¬iõdÕŪ3o,ķŲdÄraźZD Š”'šīPĘF@ĒųÓ$Š'|…RÄw®Ŗ8ä“g-\Ż#Ģīō‹¶0Äē9ĶBŗL€g,:ć5éÆß»1ļÅ"Ēį¢\ÖĻš*-hÖ&5ČCœuÅT–9Ö}Ь§®+×#Ó­GŹ ĪpN kiš+’°G|v¬ÕzkqĪKi”喑Üķ!ĮąąV­•½ĘĄU˜é]œŗb'`ōēµ*Y"Ó?Z®x=P.t¬Ģ-:+ŒMhÄeF`cSīÕ­?ŻUgjŌVģĄę!ϵO:ź_,¤¶2ą0¶ĶéŒõ5µeom$y‰?NhD”QĒZŚPæ» >†±œć²f·‰«gĮµš8ėQ]“^jHO ŖńĖuĖFĶ“u"¢—WŗE8Œmėō¬j·x³e:-Y¢Ōq'£+“Ąn x\ü›Ēoš²cńŠ V=wm«–:żęHŁO°¬&± TŽŠqĆ=.j¬OČ8ō±¤y,ńž{Õq«ZČĄĘä1ĮØ®%¹eŻ <÷¢.oā"¤auŖ-Mm—*l ‚ę3…‰IĄĘJö¬É§Ō’MĀ0Ł÷ÅŚ: éj1Ó ×L!%moó1œąÕ£”,wĀēåU88ā„žŅ•‰XćšĪ¹ø»`Yć*J¦]wfEŚHÉ%««ŁEīŽ~yĒDiŽkŅDqäHķTæį%˜1QlGrE:ݬ\…,xļZXŪHĄÆē5“£G¬KU+}–S“פČ0 ėĻ8­µxهī_qzUŃĮ%—g·­X“ŅŻ>é ÅC§A- Tź½$F5gĪøŌŌ¬ĪŪ٘ā €ki`UP uÅ(`‹ŒzTÅĮl‚PŸŚf#M©IcEˆķązU9ཐ‚óĖČēWE-Ń vĆōĄŖ+u)'«ģ8­©ÉŽö2’{šŁJ¼ČĶžƒ;=ÜxŻ,}3PźŃ^’R"ĄøōŖš~‹zķŗi ÆPIķ]IĒSžœä„ī›°ē5“ÄY^H櫽¢É"~@`§×54‰”żŁśt~F2x'„&ĢKŹ}„aķ£=‘£¤ąµev·˜°éĻzŖé*JAYAėŽµåLó’{UycN» ÷5p¤›½Ģå7ī¢+U6ńrÕbębØD~X=zńUf{h£;3ź{ÕI Ū«ī=OJŪź•®d±Õ²E¶7¦,ł‘¶yOŲe`ļnK2£5\Ć{½Ć`qĪj¬<$Vvķó Óźjl'¬x÷É.<‡UĒĢ^®Ą|•!T€Ž•‡ŗåq$6xČZ–fŚG7!<ƒ\ņ£^:t7§:¾Ģ՝˜n|u"£‰ļ¶”@@©ķē€Ę»\głŗÕ…øF ¹ĒQT§$¬Š•8^źC¬By@L>oj—t;¶ lUžµ ;^O‘¶‘×嫑Fø¾>ńļXO—¬NŖn]Ā0±ÄI ŁŖS\Gø+F j–gxęŚ0=jXņĪ6„$ŒäŠēq’čo4@»\ Ŗ#޼UėhŠG‡'®*)hßpG ¦<ŅīļP£=ŠsSµ™y¶( „Å"I+H@|­W·rXn(xėV'm‘Ŗ:SS›Ńƒ„- čĪzCS»yŽTÕ 5݄˶ Õö•JaWpZØĶŽĢ—Ń[qY7.ö†¤Ž\©ŲĮæJ“{ŹāšĢĘL”[{TG+µŗC»r(Ļz\2ø*ĆŹ˜„•z±Ļ"‡ŽF$Ā”N[ÓŠWµŁ~ŹVl«‘“ŒqEŪ» ČėšĶŒÉ\ć½^Śī”÷ąJnwø½„Õ­©“LŸ7 G­LnćŽM²xü3Už6‚٧5GQåĻĢÜw«Xtś‘fŽƒĪ¶š&WfŒ°ĒĖXׇ¾ŌŒĖ$ż8÷©,ēø“%L>`_ā5”c­7'÷j1Š…ĻKX”Ō+;·©ĪŲčWÖŅ · ±zœWA¦»Br¦L`UCSfA¬›©ZF ¤÷­ŃĶl®žÜ՞źo8/˜@ķVģ'-+'œęŚÖżĄŲT)ąf®éV2żńó…zŹw[2įg¹Õ[<1ēĮ§^Ćń€³°$zÖ Ī™7”ZÖå·u Ēük>3«Ąq26ž±’giż–[”~ŻļtEi‰’āB§Ž*•½“Ē3%»2/vcĮ¢ć]hßk;8õ5^m~L¾č=sÅmM+É%oݳ¢Ń¾Ō޶¶{ń­§øņóE'ŠWA­[¼»-Æ$ó›”ŪĘkoC¹Ō¤;nɔŽ:b¹źZ÷:¢¤Ž¬źć‘&…] ‹éøP—ī2)S޲ybcY¤Uöj£•]¶M&ьżj!9l™S§ļXģ­Ō5š‚~`;V~£l¬ćauĄź{ÕM&y£PŪ8ąS®/ŲĢ•jŸšĆ“ƒ‚-CžXŁ&qķN[Yɵ^é'Œf%‘ˆĀq[sˤŒÕ³ųZŠķgµö$U;M…³ö)IĻcĘ+FmZxHIäĒĢsAÖ>\y[×®ZIĒt)A>ŗiśIÜ9ŽŻ*„͆Œ™įāē‚ŲĄ­ł%ÓnUŒø‚RzÅVæšżÄy‚h„b:Ą¢5Ż÷)ĀѽŽzźÖŽ(ĻŲ5€ŒzqL³Õ5«'Qż .xūŁ5~ļĀZœp—‰ Ś ƒY齩Ü`Ī9äēŠŅqML•RTŻ“ga¤ųĘćäK˜Xv,:WGˆ,f€36Āżˆķ^Iq5ŹFc’2ŽzmŖ =ģOÄ÷>|šʤ—^Ó_łnˆ öü+ØŠļ®,f+ó4'לW[e}¢äœb°†&µ*œń3YįiU‡,•’Cņsć·ģkć?Åe“‹PŃęŸj˜›‹ļė^ŸćæŲŸD’…Gm/†µ;‰Öąė^Õ­įˆį® `©=2zńk›ˆoSå Č}kś+ų§¤Ay¢^ Jācå³JgjŽäęænh|%eūBjpųVée°R¼c ę_Zģ£u鏤W,—ÜsKVXў«ŗŃüĻ”|Ńä/­ax”eXP2Ø®Śź8Ż ®ā\W#¬ō‡`Ģqģp+Ž‚“–ĒMt¤ķ#›¹³T‰óĆ85“€W¦ŚźNöB¬3»ø*„õ¤ ź±²’Ć“é^Œe­™—³ģdŚüä`|Äb§0*¶ÓĪ{ī¦&˜*pwVž˜ ‘@@ †Ø«ŖÕFmjŽĄĪ”RS&œć=źģ’$j²ī%ŪŽ½k Ž M¾÷$Ą=3I”,ŽŹ¹Ī@ĪkĪöjē„BJ+s¤y$w!įא8¬«I%–é£eŁÜīć"ÆłĮJ0o3ÅKˆęV`0ģ1Å(É-l]d·2õ ˆįDEœ‚ ^°ŗG/—#‚zW7ØŪ:ܼ…]CŪzÓ{'µš‘ŌŒĆ ŲņĒ\bŗ-¢Iœ1,\Ś4­žŠo¾Lē<ćŽ+VņX­c(ØŽkFXńŸš±¼5ج–ĘhśČœ×5£§4ŽĢmŪųɬ¤„f‡e&¬Œ+ł/ÕO™Ē8Ķax‡K‹ģ,^Q»w :×Gā–’ŽVX”³KvĮ®KX–@^Iˆ=Įé]j/F˜sĻį–Ę2=•ā,`…9[­=¤ˆ+¹äŌ ę„ŽHõr éŁæ•L”gÆS8Ōiņµ”½§|Šo,·\š°Ņ2®Å-ųtŖMqA ³š³n7Øxƒ©Å“œd čʱi%®Ē•<Õ*ć5 ćš»—TZ»Ń–<@—2Č·@[ƒÓŸJŸB‰ä·l‚±c>ĘķOŽū\*ćqV®'Ų°“8XĆ †t¤äŅ嶆Š*m¶Ģ-FXķ¼Äänå‰ćėKCÕbēåĻJŌøÓģ.4¹.eZ嘔õo¹=%…Ę“"łb6īĘ:Öé)Į÷G§%$—R§[Įt")u|uĶC„°‘ÜRŗė«ų.˜XČČQ“’{×)Ø}ŠĆS-Ā“DaNģćėE9§Y=Nš±å*DŠjRĻp±»‚3‘Ž 9ļWuĶVÖKe䓒kZ&@-ö¶ąXÖ&µnĖjnC‘œü½čQMٜńkRå³yŅFģĄDć¹ĒćWoķ!k 9)Ū‘Ļ>ÕĻéŅ,Žī\pkŖš€ÉpT2°9±­*+DŖrŒ„ĖÜĄ·±x6Nd2Lm'k[F°Æ07˜¹QŒńNń$2GՋb¶~s[_ ägEŹ €O„sʤ¹y’*4“|Øēuąė!Š2#9 kšń%ŻÄ¦²Lh É<ęŗæˆVęÓÄŅĘD€9ō¹Ē±š{¤X÷9s…±®śMY6¬sMó"žž„т†ŽŻ3[zd;%ĘӟœžĀ¬ZéńŪ_ķĪÉ2wq“ß ×åäxLCs1]Ż)ŌjZDŖP¶¬ß±’üEo/—®ęb2 §x™§žĢ…Ƥ«¼ @0G½AgŃX«!pī0rz ėm"³K q(Må7óڹRÖĒJiFģ© *­“o3įŁHpO®ŸNXÆtŁ`ŠU%S†?ČW+¤][K$’\·ī±°Ō¶Ņ&Ÿ$ˆ© żŚēŸjĘ„«ŽÅĘmKOų&_Štųl`R/½¹ļ[ž Uv*šAėķYZŌM7‡¦–RĢĆ{Ö6”{-–ŸnŠIĮ›éZJ.pŗzŠ‚•¬ģtݰ—]‘¹€čx=2iuū&kH!2‘°flćJĖ“Ō>Ńi#‚ĒĢŌsÅixbąÜZł&3#*—%»ŠĀ0ij587c\ąųb]@‚®"\õqŽq\֓¤Xź6ҼŽÖą)uRēüšŅÖn†öµ$žÅ²ŠŻ#n÷ę«É”Ü!Łć«vļnņ©R9 V¤‹å ĘĒ=9©SœWs)SOfs_e»…öŖōµęVĒAū‡ŽztšsŌ‘’–wē>s…_¦*tŽkx‰K‡n?½Qźś¤‘Aµ7;b¹ ^ūS•›l‹ŠŖzµ{$sb1”é¾Xźu7¤‘F²³ąõn+šń ī„xX-Ģh;¬`¾#瘌÷Ü*[:W?=Ń^:ļÆNž=]*„Z•wey¬u¹k‰%œ)¶š˜Ųł‘äžzõ®OŃq›§opÕ½gįĖ62»u­&”¬˜ąźĖc¶k&łZ-Ž¦®Ēoo) ©æ#žÆ'ԚH”“·}«N8¬ž6Æk ļi#×ĆņH€¢aqŠøš…Ir‡os[¶SA“ž½©nąø»łÄiŒó\’ĒIæ#æźqŒWs.Ų[Ą>V@G¢ūUø¦ł?vŅcŲb¤²Óģķ†éåEō Ōw׌lj\ŸųĶO“œ¾8A]²ģ7³G¹ˆĒ¦+JĻQ܁FsźÕÉ&»§Ć'Ļ$Ģ>†‰üE¦Hæ$S1śb§Ų՗CHÖ¦–ē[w}.ßįĶTK»²#Ī:`ń\³ėĻŁe`&““}r-Ą=£Ę§¦e"”įŖ"–&Ņ,ŚYļŁ¹·qĒPējŌ»pčź;óKg©[H€ö³śÕĀU”"äöĻ5.‹ź?h֖¹¹€I“£ÆūĒ{Ė“*>éć'©ŗ°s“š<ĄŠN×äuÅR ŗķś2uŠĢr£Ė-ß52Ćs꓎ąb±ī&s ŚŽā¤‚cÉe„nØ»hc*—ŌŠDl¾^÷ē9Ķ$rģå£qžŃj8g_”/™ĻN*ģ70>küłĻįIÅ­ŠFIér“—±Źr}ŗTÖ7j­ņ‡L÷ę¬Ūż’W7L·bzń]ŖZlrrGtĢ”„M*ƒ$ĶžŁ4 įNcĻē[6įˆPYWµ§a*£åеKØŅŌ>®žĢē¬4ł"˜ø­›B@• ƒŌVŌ7PI…©>ĆśÕč”·=6!÷"¹ŻHīuBœ¢¹V¦Dbę86©<SΉrɐU7dtęŗ{Y …@ §éZ6÷:’Q@G5”±2] cA=ŁĆįB¹^0MM,q€÷R`ÕŻĆ5¹BW'Šf”T¶‘°}³QõČæ‰,4ķh³š²W‰UC»½ĶZfŠsŃčl›K;Œzb¬Ēo€6€G„Z†éØÕųY̽¤RšŠ‚qÉ«M Ē)ĀD«Ęk³ņQWåU ŒńO¶`­ÄkRE'kT5‚ovpGĆ.ļ(S…4mņ«å‡®+Ōa•vm!võŌW/?*+6+7™Iō)ąl½Öpš^“1d ·®«HÓĢq²1Ē8&­Kx‘g÷=9Īr(ƒT·Ę;\YÕÅŹkc¢+hP&=3ŌÕO*$Pē¹ÕĖEP‚±¹ćøØÖōNpREĒf”jŹ+VR£h•Ł\ŚŲæ"ūRE„iåņQS=9­ć £tyĶ[[k)"k#œ·‰šZ2~«ķ$P‹EÓö gėQMkeń#‚?»œUųōˆ7gĶ”Óę52ip(Hų?ķV_X–÷7Ž+c6ŕl‘ń[6ŲgQ¼Ž9&£L\~ó'×4ö°Š6įę,Ż0k9U”# ”ŽTżiĘ2JēUX­(%¦l rE\·khTųluc‚+i%„ŹöI«Üi°Fåx=čNL “VÜ Äː:õ5Yõ;Ołī¼UŖ­ģbé½Ń#[B¤€ž˜4ą±Ž*TuķUĘ”fėĢ cŠU»{›fŒ͌px«ēŠW“'ŲĶģ‰!Hz‘@äõ©¼‹y|øČķUĶ·™÷ž¹4°ŻŚŒ4p9¤„픤¹Z%’ŹÓņTśńQ5µ¢ņ#EqÅ]L:‡!Ŗµå²’w Ī}j£S™Ł²eEGK.Ɯƒ€ē°¬«ū{yA)sŠķę¶…½Ŗ6YHo~ŌļµŲ*`˜Ōūœ×\*øü7f—ÄŃĒM¤³å„g3Q®‹…F®¶[Ų2r ½Ąā‰u+XćsźH­#‰«ü¤Ė ­ĪPé;ItōĮ­= n-›—e@8ÜÕvćRWĀʱ¦FwµRMŅżé qŌUĶó«H))BW‹:m:rńä±'©ę¶,ü¦P†#¹®3ä!a#¢žµrĒ[µRˆÓ31īŠā«„j7Lōhā|²;–S;ĘEUŗ‘IĀØVė& EŪ) /^kJ+Æ5vķSøwZ劒{QoFF²Ļœ "AėėJ\³n&¦11Œb`GuŸt‡ÜQ½0kŖ3OsžQ–Öø]C#“”ČģjŒŗV«ø2ĶĻrMJņÜ$_)lÖ£KEˆF5²›Ś69Ü/»cķ-uˆ‰>nߣu­=<źQ¶ZTgę&”ŠK…Be‘WÖŖŻj1«ą“)ĒcUĖĶŃŚ8«&Ķ׿ŗĄ¢ tĶ-®¢Į‡™µ‹ĶŅøłī^g8.¹éƒQ"0mūLu©– Ć5¹é‘Mlńą¹÷ ½‚>6JŠ{ī®yŹĮæ=É­Śėp7SąÜ×?Õ\_Ä\ė©kŹnGj¬?å›öHę›=‚d„£„‹hć0,{žõ£ņ0汬eRičĶ#Bœ•Ś9ø4·eįqĄ#ĀÆ[闐€Ė<ƒ=kYB7’TsšeĪ„g÷ZFj.{=~FßT…ÆŖł”L7Ŗ1ęÜå{ŅÅu4»xŻĪ;.h[]Ū:’nČÅLf·ÜNõ8Ą µ%ŒŽŅD¼%Eš²¶Łc%‘”‘Ā™%†łGīĘŃĒ5~  ŚŪ =óV¢Łä&Lg 5›Ę[T?Ŗ6õÜĢO@0UK„T‘ŚŗHæ&·J–ęī;QĖo>ÜŌÖ“Ķīa`1Õų”c®ŹX]t'‚ß "®¤q*HéėY×d]Ņ8r6Ц—SI/īĄ*x5“©)ŗv[«š·nb#r¤÷Ø¢¶ óõö¤‰ö.]°ĆØ5ŻÄ%0Ļ÷‡šÓ\ļa^;L¶bܶSŠ‹ę=QU-īćAˆóé’xüéŃĻ!ĪÖfÉćž+ZQ©¼“0JiŚ:—#µˆrĄ)=MI$lĘī;qYóĻ$`åN{óŅØŻźĘ÷:€­m2–ØĪUéģm]¤ž;UYäē€1ҹ»*»»żŚe¶»epų12?ZŚ0qųŒe.o‚ĘßŪsĻj|WłbjŒ0[\–ą ŽĒŗl‘Č /¾Mjœ%„Éżå5y#d©PØĻz± µĮ!šEČėYņĻnŸ3–öQu©Į[z‚:ƒĶŹėB½·+ŠŚ½hU,åĮč“Č 2=r++øqó»/”­mīÄ²+.:·j¦6ó6§Yóoró±1’ŸS¹C)ŚX掫…ŖHēŹp3Ü5D–,œłģ@ĘśŹ)Ani/yŁ¢³‹0É_ö±OXJÄJ`ÜÕøcTa–Ļäę¬&Ż lž1IŌ›źʟŁV3ģą¾g)·żŖ·2ZDZīŎ•}ānT²c®j„żŗ• ĄŠQÆÆ½ §JJ>ź¹FīĶnWdRˆĮē+ÜUh4d†MĮĪO°¤ž‘&ԜGŪåÉ¢æE ö¦~Ų=k·ŪōŒŽ:t£ń“Ó/ uŠMŪ÷ŽŁ«–ģŠw01žÕĶż¢üHB#>÷jŅZj—0sˆCǚ‰©}¦k«čnĮtŒÄG“b¬4ü&ɽsIaunŁ ō%ŗÖ•„r°Ū#1É‹¤Æ{••’5KD_;՚¤…Ų>y ŽĘ³M’Fį•ÉļÉ« lłd õö„%n8ĪCõG !%bsĄ5ZŚyTåķŌ9/й¶dōÉØīmäeżįQō¢.;0j¤_2/Au”øņ÷w5< ĆmUb¼dzW«éó»0[‡EĒš.ģŲīfõ>õĀ+^›Ōtń—vŖš;d9…łĆZLq•‡\×05ōŠ0³‚šXŌšėz’¢Ķ 1*N eģf¾$oN¬-¤Æņ:I “ĀŁõØČv“*Ŗ=jęęÕ.‘¾{yI_īóZZnŖļl¦Ņ{b­įÜUÅķÓŠŲU@;³ŽŌÉ$–7RA#ŚŖ„ģĘ2Įę¦7 ĶnΧ½'"N©Ų’éĖŜmØ-ŌŹÅK”ž•ugYć Ŗ#lr­U&“c—ĄnÌVōŌVXŹNMó&X·šGčØŪiŅI$ƒEĒjÉæ¼6Q‚āPĘsY’ų¾Ź2Qķn•‡ y©’i]FąŖF~ė–§Ur4ä#nė6Pžnv|¾Ż*Ž™ā;+¹Ŗ2±źcš½vo™7[(Ž£4”Y=:‰Ńiy®Dbʤ›LÕ¼¶);*€8ķK¾©,ø‘”U=”U‰ģ<µŻ$^sc€  §V;0P’Õ–!Ö-Źķ]§5f+×dĢLEc%¤RašŁ aüLjp+ŗ8Œ‡ŁŗŅŃ­ŹZ|E’:åä$–¦H·’.PJ¤śµZßV!ʵ«FĖŁméwrĶaP=ūRskD†£lĢ'X3|¬ÉŽ0ʵ“ÅŌVa1Ū9­°Ć9ę>õ”,X³gµLjß”§²Š¦mžF»3ÜŹÕt_*s&×ädąńWuŌa›Ģ…”(ō­-RŽTņ§ d ƒ•’r”£in‰„bōŽē$%‚#·cdvĪi./ćA…‚RÄp1Šźµm>ŅnT„-Ü+ćFUŽc“Ż›­i ²h™FhĢILɒ×1óĻ5ݵČ”¾3č3ZĖeq#H1Š·mŠīŁ}AķOŸŖ…щ_A•ŗy\I$V•¶½qŪ"†ćŠÓX¢ ĢjŁõŖ—6V’FO”ČŁØå¦÷Eŗ•/ 5Ė_½f¹$³īō×bĢmąŸų[ŖźB •zŒ՟3\ä„Į»Ņ Æ…ŻĪQNķj_žĶņČs`üŠ+nĒPņKwUĘ9W3g>“Ƅ28æzŪÓ¦æ y¶īr»QR üQüMiT²“YŃAya×åŅīvHå”’z½+Ć“:°xŁsŽŠyÆ:§5?ā#®œUEĶ"YĀĖ•%“sQĖpɒąŒō+Zr ĄlŽGõØ7Ē»ē ;UĘqµīg*W{³¼ gł~÷I¢¶ ŗ$*[œąVõÕ„µĢ'kš„ć5‰Øi—ØŃŻœt5­Å, ī†ąóŪĢ­Ā»%rHČ犄W_tĮŅ•½ć“Ō<30ĮWRqéĶ%†•wlFÖnŸ…uņ­ŲĘĒP?ڤ‹Ļ2'ż‘Š·]ŚĶģ䝳µ)ijŖøi$äsž•rd‡ČĄ}Ē)Ų‘¤łS€?»Šš(·X vØSWŽĘ¼Ķ«vv3.Ū‹XÉĘ?Z¤|7£KĖ V=6¹āŗyl¢eƆ>āØO¤A»ä2/üÖŠÅYŁÓ Žē!}į?0ˆńÓ½P—Ā‘ÄC-ĘĢt®õōńNć‰4ķĘL³&~µÓ*÷Wf^Ė]&=2ņÅeėÉĶ[³šžŻv°żÕĶtsŪhņõt’€½BšiЁ‚ųöb­gķ”%k~Ŗ3Z§ØĶ>īč|Č„p:6FkJĆT»ĻĻu T‚BFP\Ę@ši½‚#³] w X¹'“Y“c%«f¦¦–z¶-ś¶¹R’#¹Æ)OŁßąÄŗ÷öŸü!zL·dīvbÄ1÷č’Ś1ŹŪ"Ōćų—aĘܤا×oéR§5¶…*qrö’Z£Ļ<_š į>³”¶œŽŅ­"r {X‚?ē^KāŲ—ąÕõ±özŔ‡ńŽWŌ–“Č‘žöu ;ā¤k™^`#ž  s‘×ńŖ†.“”‰žœß3?>µų'ց5µō–~0»³gfū¾•LmŁ]žu]Ž¢®kŋįw`śv¬4lß13[FļVĪ.bk8‹;8`8ā¶4ōŪ"±'œ„V³Ā¢ØQõĶlXÅ!³y@ÉLšD婽4Ū)jń4Só¹U†A'­Q†TFKoń­ū…mJ%URLcŌVeµ‘‚gĪFy4£$•˜*nś“©ŃbxŹ`7RÚ±Æ\ZŚé˵šŻņŚi5O—żSqÓ5ŃCwVfT޲«t~EQŌüŪflä¹ė‘TjV5t®üŒhŠAvń»Œ/FĪ*•ķÜ^3«ł„qõ4jv×O#ļ2œØ^kQ¶x®ĖĀ€Aō®špOy svŠé|+uö‹Ø€i"W'–ā·uŲ|ł’el¤#i>õÉhņ}šhŹm€“žÕæcvÆdń7Ž‘· śŌT§gx—F^ļ#"ÕÆī+#$+Œķ<̜&Ɨ'œrjIVhƘjm„ŸrĢrѓœgÕsrĘčŖ²•·¹%ͼRŚD –-É4ųģåµø©m„rXśVՔV±Y³Ū*ƒ·qLÕ°l–`äø#j#^ś#NMs1ś{AlčŪ‰R¾µ•Æk"˶YŹē©öص<’f“m8Ļ'š£ Ś&Y¾c'”9­•8üM•(¹h‘Æ£ŽÜK„|āHXÜŅŅā[–UóX1=[š§r^5T<ąŽ•„£“IBü­śŹsģkqJŅw1µ˜jo ņۃҬ}‡ķ/_, žBŸāˆŅēFX¼ļϰ­?–E…±ƒTźZ7„+t9Ė}K›'ŗ å!Aź}jŸötCM•Z²ĒCģkŃ58Z:ib;#‰K`c®wF0jhY˜åĶč+JX†×3ŲŹ„ v÷QĀZ\Ķotc,Ūbc‘Ų×Au©}ŖˆmˆńŅ”×m—ČHdrŁcĶdCŃĢ|ÄeÜ+Z‘Œõ9Ԝ§qįå™DNĶ ĆŌģo"Ō$ø‚CóžzÓVÜGåI°Ø H=źötyŁåŁÜCµĪœāīĪ™{9%ɹě"P§g͟ZĮžĀKøJ|ū€,1]„Ń™YŻįڤpć„T“0‰;› cüō­©Ķs]³¦ß½#@AB$āF öļW¼Mj¶ÖńˆęWĄ²{Ö-Ģ­ģˆ,ƒŒŠ ó$vŻ+1a»×Dćv„r­ä>Ą¢Ü„īNN uś2^ŻR_0ćÖøōlI•ƒóq]߄ą– }±?z:¶yć®k Dt½©I“¤ŗŌģ.uM¦ÉϵGéX¾ŗ{VD”˜]”ƒŸZźü«ŲźIRuelƒ€k Ē0Ąś·ī£d—?)=’Ļ5ĖIó?eSCŖU#e4õ3|`Öū$ó'/;¶åłŗŠĻŃŹ¤š4LIS– j@eÓĶŁL=±Śł¬Żõ£’(B“œć“šōiS|–G’ęŗgasl.uĖ‚O™ śUm6¢†āIQKĄ~fj‹VŌČe„©@ėš!”ÜiĪ_Ģi9^€Ō(Īʒjö±±įŪµŌuH£XöĘFÜg­kjé$ƒPš4Kx¼ØĀõ5Źxif‡SYŠ…ņǵu:}呰šŚR¤“vüf²“”]ÖÄĀ|Žéƒ£Bö޹2 Ģąē?żzÅÓŽ{b2®ĢTŒ’{W”ź mqh¶įU”.é=…rśؗRø6üp3ĘOµRŖ§w$C„”®Z½Ō˜h7&THĀ®ŃŽēÖø–k‹¾Y‚t>˜®ŪāÉgbšc"»æĢYGz«į6?+ķ3` ēž„Zć6m9-‹ŽaÓ|¹QJvóé[Zį‡K³ibŪ®»T¤ƒK¹†ÓY"‰§Ž<°c'µgų¶K½KZó¤Š1p{VP÷½ćH¤éŚŚœ­ŸŚeŌfYŹ„‹7­iųgH“QԌ6ŅH&Œy˜Ī®ų«NŻ”·Ź–ł˜ŽŸJ“BI-īāžŽwŠ@›_ozn¼Zŗ&'Õx¹$±ŠĻ÷ĢÓe\° ‰u›-£ęz½®ÜŪL2å ¬pŁćł­(¼]j.×&½Ł{uŖ>9*Ńčh.dčŃäz5G'ķaøÅV’„šÉČżĄĪ:Š’ŪW³•ždJpWń#ņ'h29óQ½›Č™Y€µjĶ$»xĻ`iq¦9Tė”Umh™“¤ÖęŠ]Fä«1Dw7ˆ*xäW[§Ēe,,ķ“żźšėLŒØ*Į‰čEÖI –qÕjrŠjŖøR‡Ōõp@GQoē[“里 :gZ-4ōB|Į(lp1V=ަrG¤]Œ!­k 0HėÖ“tßF1.ÖÆ85µ“ęäķ$õÜ1SČŻ9ģ;Ö3žķhoB‹éŖ!·ń(Ī^6\ś³’ ³/!×n×Ćšy 4[[犵iįĖ3ó2Ū­s:˜{hĶ:—ÕĆÄ6ĄżÉIĮ”Õ­ ś“F²,Īvš‰s-ōł“£Õl1ffE‚źH%¤s³d¢Åģ _Óaør $@ūbŗXķ!³Śź»ū㭌Œ·gvźk{v‘…ģ c”¾ŽéR§ēżT¬ĶčqCŠmŽ£Ō±®WˆęÜÕŠåŃŚŻ]FG ž¹¢ķÆf8k®æŻ5X¦bĄ`¼ńƒOŠŚB„¬…G±ėOž*̇5bŽ˜Ł&Ieb}HŖze²czĢCzÕ»³»r0ų^Ł=Ŗ&³¹AóNŠqœÕÕ\­£9^7ÕZhśs&ā“PĢkB×M°@F1źOZ¬„x{•<>ŖXe“ßžh•zK—PZ#Bqmk³Ė uؤ‘ŻŽWLśRĆqpkמµ„²É1Ū"’:ī¬_3ћ+[A–ŠĖåł“8Į-L¹‚G`BŒŽāµ¢„łĪ8ĮéÅ"½¼y˓֓„Œ+4õl”’š!ROsž4Ė«™Yq÷HČ5¦÷6øŪøf©^ĖĢP ąś×]8®Øā©6Õ·1olĶŁeÉ@LU t¹0Ė#”­{ˆå„ • Cņ~īF8s]‰““9’Fŗ¢ŅIcį¤¶ŅœŅ.; ßA|ƒ÷`“×­ {$[d³~nµJ¤öcŒbāŹ– hŠ»LÆ"µ [/Ļ&Ib°nķ©)dŹē’sT^Ę锊ecļNpM]2£%}V§gZDŽJ±Ī\ ø–1’ 2·Ø!³^wŸv¬p ‘źy«v #ĪlŸ7JĆŲĶėsm’W¹č%/ŃŠAŒuīM@ēU ó«°=…`i—wéÉosÅkŬł@“š„É+l8Ķ^÷-ŪI&q,3dv”Ÿ8ĢRŽ¤VrkŠ” >ąc4ټE`‰–VĻLØqšŅĘŃäzÜé"HŠ`åMVøŅ\ķ™·7©¬ń=“IęF1»vĖÄV¬ŪTH03Ļ5“•H½ •SZ²C£^ÄŁ‰žļašX¶ķ—^½źżž§ Ž6ĪBćų½kGķŠ”Ų²!$uĶ'ZM{Ńøį†åŚe }\¶ę":Æ0ŸOøO™˜qW­#Ę\.Ņ1ŠTĻkŖ wć­eķ`¬Ń汗.¶d66,AŽXłķZ°B"Āļ.:cҲ$Š(ßq‰²9ŹŃ£ o€włŖåI]6ɧ(§e”Ņ¢/qŪŁF@Rī{Ö\z”"ó䞽EMōR`~µĪį8źĪŽDɶ«ä|˜ØŽÖ a GĒū4Gsﯦ*ŌRDp7m=©Ŗ²FURčd^Yڰ#ģdgøqkhІAŽ3]‚ģĪŻŁśÓŒQ8ł”dqĒ„m f–‘”šÆģœ3=Š»2;SLśjžd›=y8®ĒS“µ˜ŗw¬{­2ĶÉd²}EuB¬%­ŁĶR†JMa‚Ć®yĖ5W»Ōķ"ć$/4·žiģbŠrFsX·ž•YæzÄc€:WDz©īrģŃę«0|„ܜžÄÓ ń är•Žą¾qšƒūe#%Ī: »c”3Wަ‰ĮKqÓ­*{ډ¤;LįX÷ĮĒ5¾ž(ˆøUCķ޹{/Čų’µtß ĶĄ`xä×,°ōÓÜģxšŅIJ'Dŗ”— ›ļzÓnR~L/±ē5Hi71Ÿ‘Ā揖®ZŚ^ĘńŽr1֜`’ŅÅNWvԁ¢Õpe~;śR4Ś“i1}‰­KрŹv×9Ķ*o Ÿ¢Óę‹Ń¤CŗÓ˜Ē–’PQ‰&ČŖKā9­xe.Hģ½+¦–Õe8ddĻvj“Śs“jÆŻZĶKŚÆ„ånüUrąmI7QŠ—Mń5ņL ·ø­{Æ1L Ų3‘ƒQG£“RdĘĒ S(Sq±ŃJu"īĶ­#Ä"u‘ē¦k§³ÜD­m'Ū"øxąņŽ|‰3ģ½Ŗģ:•Ͳ2qЁֹ%COtču"Żäu¬/VNĒõŠäŸõźæAšębׯdt!09-SjÜ3ŗ'¦3YJNĘ©ĀŪ‘\ āįˆéÓ½$)Iä,{.kūB|=żMF.uFĮ†éך„7½8łWŚŁaÄ1ŹĒ<Ņ ŽÖźyOš»ē“ĶcŁ®¶ĮKłH§ūÕnWŌ”ęø¦>SSģģž£u,µ/’fŖóó°īAŖóhšJIG‘׊Ékū¤e—ާ5zĒSĪĘĀ·­R£8ź… ĀK™ s¦4 lAŽÕŪMŒfįWĄ­ ™w dŗe횫Ś[¾ē»y;sŠn“kĢ#ˆIźĶMŅÕy1ŹĶć$Öą6Š£żAœŠĒҵ{YĄPT0擌֠`Ė•*Ēėšēqiźu9'ÄVŗŒMžUTcœÕ˜o-$\ołV óįÖ=ø¢H¾RŃą`ńżj¹"ч<½G_EŃŒÄcéX·Ö²)"(©©äžń& EņīŅNĢĄŅ£ǵtRrމœR£;ŲĘø³ŗ#>[üՙua~\ģYĮ=9Ę+nękČäżÖē”4ėm^ü)I-üÕū¦ŗœź­b“"ƒŅē5­ÄYūDĘ?`sS}””,våóŒdÖŌ×°HٚŹXņ:ā˜SI”Žab?‹­'[łÕ9ü7ū™ĻÉoŖ;—yĖØč*֙ö˜Ī ŽĒ¹§é±I)\nĻę­6³†ŪL±ĒQDŖĒd\)J:·eę;ĀņDpŒž2+ŖK=э”žõĒMab\cżš·§źw²œG!Oė\Õ(Éė…ˆ¦“‘Ņ‹iQx“n=ؒV‰réƒĄĄęŖéóܶ<×ó|V“F’' zēnKIš„§øĢÅH%œY2zZQŚAœG‡nNJ£qj7a€8qŖ3[N9·”‘Ÿ¼GҦö•…ķV”nh_é¦\‡Āż5™żŠŁ@äz“V¬'ŗ…•nX8Ķ]{ø »Gœ§®Č5“*TŽ›œü”åŖz™XłKą};ŌRĀ”É;NA=+ dĒ³}EUšŲä$~`V‘Æ}ĢŽčƖYcā2<ńTīu Čß ć ę¶ŚĄK/—å²½jÅæ‡!s–•£ž«öōWÄŹ„*5±ĶA¬HŲŽßfyö­}*ūTŒ)掭všüqÆī®dfź3Ķ@Ś5Śōøe8ϳuhĶhŃŠ•Ho¬?”€äīÓĶģS›qžõfŚé7xÉs&yēéRIm*cvĄĒµŠ„E½ŖW©ŌšFq)½N{!ŗ yI\ ŪTd†ėŲaQÜõŖ·2ĮFyÖė hŒ~·(ītbEaū¹~ŪŖÅ”R3#ØĮÆ9kˆ|Ē„śóZvZ®Æ .Ų„EL“F”±Éė-@ū=ĘąQ@8ą“W`kō,˜ĒZį-üS©G•’Ė×=’:æmā²Ų®F+Ļž§cІ2‹W¹Ł»ŹŠįŪÆµR(ńä†ÅdŪė¶÷8\¼g©«‚ś ¤…‘Ēc‘N•9Cā2­%=bÉĶźD~|¹õ¢=F̜˜ßR1Tæ“l‡ O^GÅŻŒŠDd|Úķöq·¼™ČŖKkÜŌkė œ+~Ł5›8Ō*ĘĪGZē/įr’ŗŒ1UŌH§cĆ!ĻSWõx5q*Õ6±·Ŗk+2ķŒ2ē5‘u<2gĢrĆŠśŠ¶ŃĻ”ó|¦=ĻQQ6!c²p{c<šÖ°Z2%I½Z"e¶$BIō’ŒĆó(@séWm“K„S÷›ÜSd±”bĒR*•TŽ¬ĒŁÉlš%•Ū"ŽÄg„^¶ÕQT)`ņ{V{i“óµ[8ķUŸMŸ8;³UŹ„³5uZVGH5KFįå Ÿz·ms`ī@#8ėšįŸNøCÜsBĒ4\CgžpqPéKtʌąÕš;“i$›A<÷-WtčģbLłą3py®%^P,’žiū&'äó ėC‹’µĢ“Œ^‡¢ŚOf£ ;)†ÆĆqjń`Č?ƼĮVU ³0Ļ'&„7ļ  + ”ŸFtĘ¢K˜õ2ü„(Ęr)”}(# šóż3Ä ÷wœ/­uśV«k5ŗ“"ī<ÕĖiEźŽˆĖžqīU8%øėI»)†łTS-偓*Ł'ū¦‡Ts“+ØĒ,{ÖSiō7I„«=šJčŃī÷9ȧ\Ū4(ŁéėHPF«‰¤ĄčéCĻ<žóY(NNÉhR”c»Õ#UbQĘ·,³ģ#éš`Ÿt…RXĮĒóPMīł :bœpėøJ·5¬‹ÓĢ ć-Ą¢É<¶Óč*¤Q¬„ŒœtĻjŃ“’ !$H›±ĄŠ·ĶÜjj׳Ŗbe””⤌®8tĻū՗­ŚÜĶ(Ų\qƒTl,.GĖ#²/®k_dœy“0U­.W£•€|·~µRidÉ#<öĪ8جōŁ—³Ē\ŅOeuŽ p08Ŗ§Ė³dÕot9Ėŗ•9Œg5›ŖZα“‘Č%ĆĶlrѱ «0j‹µPÄŖ}ėuE]é5{ٜ¬— »ĖžŁŠć›ēĖ{Ė įŗX~k°½šŹh’Ņ"Ų}F1YWZ.Ÿt ŪϳŲ|ńz^ÄF2OšŚ÷DkWų€ÄŒÓY}„ *J+Ż`-®-Įw¹`Äq‡ēėMM”`³L…zœž¢«ĖfĪXĘā`Ćļ$Ö³¤NŅ3Ų=+HB3]ęœ·łž…k{c<pŒ†ć­Cy¦ŚÉ†‚f„ž8~+Źąóōūœ‘!üČ®ƒHń0M01œō®vėRvµŃ¬iŅŖÆ{3®¶Ó|™›:ö½j¶«!q¹Ē-EżµÕ¹ņœ«wŻR[Ā® ”Ī9¤f¤®Éö|®ČğS»†CūɁSé:ō»ö9‘²ycŚ“® …’!r9Ķd_C8ŲŖ Éā©BÕ“”›ŗ:»;Ų%‹›Ē8&’ymCnF’3É®FŅŚåFQAVüź[›÷·+®ĆŒgŠ…NPó%ՋÕ#nźysū½Ī=óU½Ģ͹å{ßÖ²†£<”–øc®j f½QĶÓ8'ŠŁY«#5-nŁŲéW³Y²Ęųt霓]M“‘OÉ®qšņ«Bā4XóŸ~ÕŪųG_µ’4·kV„°Į|pąÄĀŽņG”EūHøMÜŪ–Õ\|Ų\ó‘Q5š¦JĢc”©&’brŹŻģ*£_ło¶XŹćŽ*ćUÉ\ÅÓqvd­ Ø:Ū5 Į¦¢ēō§„öžčv¹ėŗ¢žD …[Åk.äN3oTA9T„—`t‘ŅŖ,ģ,z”ŗį†*ĢŃHÉĀ0śŠĢÕō©ä‹|J9…iĶ̬Éåis"ēŪÆ#b¢x§ļ”5šåģ'• ¾Y:jĶg7ļc;}óWäū%ŲŚģA­Ņ²©½š7‹¼y“5¬õ“’$órOjъky##=Ės\=ö‚™-®qßnžj¤ƒT²Q—%G £Ł“½Ēņ3ö‘oŽŽēU¶…ŪtO"60vž•^ŌĻČ$P8Īy®sH×åJMņū“Šé“ĶZĪp‰!HĪ9$ąR’“‘¬9“÷]Ė*–÷±•‘yĒšœU+½( ².ļʵą±i-$øµx{ąā­ŲĖ*E²T\ć¬c6•£Ŗ4öIė-Ķ^xvŚxxžpøĪ1šēēÓÆt«…’Õ¤„tjō—pŃņƒ¦8éT®R&]®²kJnOݚŗ2›„_4™įĻŻ—]ȏŗXÆxݧ<ńÅbM¤Å$lb‰wõēŒÕ8F„k0_!‚Ƨ„Lš°Nš)WrV“Ōźž@øł¶ąsŚ®éóžG˜„œö¬++™Y@eĮaŠÖ…øbفŽ3ėT¢­k5$īkb9%vvČØn“Ėi—ęUqŌĒ4؜¦3ūóW#™<°l×<”—Ālœ$½äc]ųO“ļZF3żŃYWž±g*#* ®ÅeV;yÜi.°Ø>fµJÅTZ9 źšzÅuØxÖAĢģ+=¾|ū¢ø—'§Ģkӑ‚LøĒ@{ŌR¬ųŚĄėÖŗ#‹v“š%įŸÅżēŸAą{ųŲÕ.#ż®•ƉØŪ T–R£«•Ō² UĖ˜c­K‹ĆcԚqœd¶_qœtR3ž³—Q“Ą–ģNū5b]\…ü“ĒsZ× h]ŠzU'J”ķićß鮜½“W±P«Ui"m.śz˱ޫlæ6REägļVTŗ„ĄČ¬@+b³ęѤBE­ķŚśę„R¦õM«Ėf›:dŌżąO¦i«#Ī_ÆJćŸHÖQÉ[¹8õ'”£jĮ’L²§OCQ*ÜŹĻŠÖ#-%+z&֑H#ߞµŠÆ–¬?Z­ö÷‰†čŲ)‡ U›y­n—0>õ‚꟬]ā“Nåy­-ŠgjŒśJ©6™2”iĒ÷«F{8C¹ĻØ4Ci*ćk7ēZ)Ķu3’ƒŅÅ(ōĒ\~õńģjŌvL!l±$tÉ«¶Öó†„}¾†§ ūČ •.“žĘŖ1µ™ƒ{o|6¬ r9+“Vmåb+?2g†UĒéZŽ_Ģ0äw¤hŃ蓼iIŹJÄĘ‚ÕŻā‰K‚Ū»š”Į nhĒj2 sŽ:ŅŹVAĄuæJ†źZ×ģŽ¶0µmN™Ł§YC?#joé„–0¦ys]4!ĘwėMp‚o”Ø#½8ŗ›&¦µµŒČ4[xļQŒn&“b³…Pī@õ©Vlƒ“r*EÜČzt§'/“‹PFPø“ˆ’.½G4ÅwF  ˜ĒĢx­$FV 3Ó*徉{t»įµžEõµ”5'Ź®a:n*ķ–¬cAĒq©$P{ń_ ’ĮP~Ųx£LŌ&‡·‡¹£[3łĄń¤šdņw>2Š ƒļ\Äyóш ŅWīēƒ٧ąˆ­ļeŗšłÓõ[¤!nm® l=˜/Jü鿦’dļų>{KĆWų‹J‹N%AļōÆOź“ė»įßɐ±²¦’ÆėŠł“K Ūü¬qŽsU|A8‰WcžHö«ĀŽīŹęKk»y-®PŃøĮ—­ÆŚ®AŁ"ģ<ב,=JU9gš­Į8;˜²M¾ł†Nģžõ³ n,yä Æ,J¤ądg­W’X×)ȖŖQę^čFWіµ‡Žwa–²ŅŅāéŪ¼V@"n|ė[v kkZ\ §o<š^ӑk¹N)érŸ†­äµŒ‰_›*:ŅkZ!„‘Q÷Iļ[z®£léÕl“yŖ>#ŅäŽŪtŅĘ6…Ø„¹·z˜ā£d¶9Ų™åRłĒlśŠY4ļ“°"WBŒdQ½"S;¾ļ¶“(ȳ/¹Ģ½Ću®‹ņ+—¤µŲĀŌbŗ†ĻżŽ¤ē&±Æ¤’pˆB©UķŽŗŻ]n^!RXäœ×7äH—.pŲć4šRW[‘)Å;-Œy'‘ĻėWō µiŠøŚŁąć“TµHŹƒÓž•WJ8q’Ć<ä÷5isD‡½ĪĀER’o€vę²$H捔įūž V%±!†AĶWæbŻ˜«‘žø„NVŃ ŃNW9ĶN)#pS£=}óP@'%IŽŅ“õĖ‹f¶]™/čk!²Pœ•ČėZŹW¹µ§ź‰ .ħxČ”ź÷2؜†#ÆŹķ(å–B<ūÓüŲ¢łóóc­aģ.ī™Óķ®¬ĪŗžkClšŖI.ļÜFūóÉĒję&ŌAˆ@9ĻZŽöo“¬ŹĒœŽ˜®ŠTę£kœÓ•5©Öźé ŗ&\ œž§Ūź6i§»łĮŽ1Œ×)|ŅŹ„%V#»ŌŪj·Qō«…7oy‘ķß5ÖÅė˳+yqą+÷#Ė[6ķŚ¹'ž¦“ć‚\)•{Ōw$•Ų{üĮ{RēŻ"ćMn\±°¶?3Ʌ·Æ­kŁÄŸchķg zžFk*ęe02 ł@õ¦X9‚uŚA«’\ĻŠŁ8h‘£§Ąö—„‰“ēl·½EŖ7"U%’5ŠčęēĢ “cꬒˆĆ Œ’A†'izūҧRņÕźU[(ī`N@øŻĢĆų©ö—S&”äÉ“žųõØķīQŹŖ+8ļW…Č¹ŚĘAÉÅnŅNĢĪ44Ė•†ģ™l@Åzō­SS„i)ä*–3’Jåķ]¤ø)÷CŒśūWM ¬1č-Š)€ēĶC‚M6ĶŖNrV‰Éxr Rą\¢±<³c®s] S³Ā­&c H+ź EįŪ…†ļČ@J́šŲ›OK‰ƒuē5¬§õ0‚vЁ1öd8;©ö¢ÄŪ kƒ *†ö÷­“6ŚS)¼Ž˜ćҹØćZÜBѱūK{W#©?{c”6£t®T¶iį‰Āɽ”Ē®hÜΆI\Fy½«Ŗ°ŃįZį·0`:ŠŹ× XĢ‘"8‰SŒōĶrŗš““#Ztß.’#“Ō/žĶUbæ ö¬xŹ/ ÄHK±#=q]V«eŚBŽbTüŹ{ mģR‡ó7p£n޵čRpŽ(ę’ ĢĖ}©¦“ˆ€¶ŻŲJÓš”ā`rBˆŲæūÕĪĒ9ŠYrĖŠV—ƒī‚źĻ„æy•ć×ü*§ &Ń0vš:-p/ŁQfxńŸJĵ“ģ–äu!‰ē޶īcc˜™ öܵĪßüДتÆ~湩«čĪ©Į¢YfšńŌĄYrT7ēP‹¾ lĔnē"£ŅŚV¹CCĻZ£ymqż¬Éµ•‰<‘Ål©%ī£;“Ī†ŽŁµ8‘͓ƒŚµŹUÄN"ņ×9Żß½7Nµ™4HÄL £å%{{Õ[‹F—5Ō³xĮYėõ¬­&·Š5»ī6Š=Åą ä±RsÖ·4 ,žNUƒ2Ż«Ņīƒ`©;Žx®›Gŗ—)FŒg&“©M„ØRm¾dIā7Ę#BĆ×½Y³ˆA-ŗ«•CĖqŽ~µ_ĪR„fƬLŃl#ß09ØZ«"\ÜnŁ_ė+oiy¾ü𫻟­s>’GG91« ¶{×]ć›[Hō›É~RĮ"ø¹Vac0bČQxĻzčI8Z$T«¢Mµåéęt]į¹W^¢³ŽĶ67¹\®īxśŌŗ-њĶķ]ņļŽ­Ig5քֹą>žsčj”9U™2…Ī*Ł’k?,3±ĻćZ:jMk)g`ĒmqžsYŅ[\Ųź­ˆp„sŽ“®„ņq+Œ‰¾+¢I[C™S³»v:­2ąŗÄŅ9c%Mj\K h²æ6NŃŽ¹½.e“GFL=k.’Tž„L|¬x'½q:W•ŽøU\¶‘$ö±]ź!&“d9Č&”X’/Żīņ~eĶ_²”Č6²Å‡ž!Ū5utäy¢ˆI“§µn§Ė£9ŖBŹŃ9É®6ɍāĮgNÕõQe-„¬ŽcpAĄķI{``ŌfFĘūTŗxušwY<¶ōÜ W4e-J£uu±‹dnl®]ŌÉc9©®ƒĆ÷’¶”÷³“йęÆXɦ_\¬D4lr~n™¬ĶBĀādEµZ„ZšjZ5fMEģī¢īŽŽYm<·…°é.K:Öf—¢Ćy­ĀŃŚdSü RCgė°y‹ <ō­] Üé׏%C»‡_ʱ÷¢®˜ć%)$Ė~2Ņķ]įš|‹}Øųž÷µ`xŖāx$Pé-Ü×Daøž ™•ŲD§y Šż+øTŌ­Ą‡1Iµ`=Ø„;/xŖŌäā^š­ü/a#ĘŖLæ3nžUcE·†[góJn.qYŚm¼sģņĮLņ=ėRĀī+tøv\G$œzÅi)'šŠ4¤µ“łjtĢq81ņŁ&“|10kQDŸ4Pņ7aé\Ģ·öė|Zßę ģk^ŹF™öęql66ZŹwQÕŲŃI-Bź¾;)lŖŃńµ‡CY’]‹=>k"C±s°Õ³„$ze”šœ„„A÷H=ĻJ‹Euõ“óB]ɓ±æ‡=źc;BŻ ‚¼®ō4ü”łÖćɼ„\H»‚HŻ„kx¢Ö“Ibź3°²‘ÉļY²[IoelÖģéo?Ž€95ĒZ¼ ›MtčĀ~ī¦T%Š.I_|UĖ[kčš:c ĻZźR7Q•d š|6S\Jø·SŽķ^sĢ[ZŲģX“‰Ļ%ÅģqᣌćÖ­Ų‰®wŖ.FOÖäśp‰1ęA!’eØ6`C…f F~S\óĘÅĒŻ*8)-(yO©ä.“ūE„PŲ¹Ŗ m4g"iPŽ˜§[É:¹Żu)?ķēu9—sŖ8„©¬äo ;ńQ\“Į Å-뚧ęŹU‡œäZdwJß&éą|¹§  8’ØŸ“$hN;­M#Ę·=zTrµģ˜+nõĘ)¦Śéßē›ĖĻ`keQ½.`éł²¢7ś¤\tEYŠķ#ˆ~éčQū<Ā}Ŗźäz³-†ą¢BKČTĶ’34ķh”­ØĀ.ŲŠńÉā¬ĶāžŌ¼b’ ŻŲmŽø«I°·@d•øķš‰T£Õ\Ö4«rī’3£Õo±1$uļK%ö¢čÓҵėM‰ °ć$S!Õ“ń'2`1օ(5~B=ėØó™ŃOŖ¦"‘³ĮĀfÆZÉŖĖÖ)AĻdĻŠiŚīŸ°véŻA«qėvńœØ'>Ų®g[])æW—/½3ŸDÕY~HÜüL©#±ÕÜ ÷1®yĮā¶.5ČŁNŲ_$ö\Ņ‹÷uł`qĘ2ÜUF¤„¼ld⢓e¶Ś»g¹˜²ŽĶÅ@āŁ”J{–lւ¼ŽūZK UˆŃ8xž覗S’¬›Ń³Ģ©Ē`W„D··`•Œ0SÓ [_gÜŁm¦Aj‹†ķé]°t»3ŒŽ—9 ¾Ł,ÅɗwҦ„ßG‡Y§ļq]%ĶŐqĮgj¼·Ētõļ]ń¶‘&å¦p–ü°cœŽōÉa½’CĢ€{VšĢ åXģsKwØ“iƄ č)'g¢"£MZLĘk¦9óe^1Š«5½üjq+É·Z’x„BźŽNõ<^%Ó&H¦'Ž"¢T¦Ó5NcÖ§“‰X˜ķƒŒńT.ģä2‚±:śāø+ݦĶe'z“¾(Ō2 ŹÕ§4ڳ&QŠźt…Š$$n ę³.tŪ³ÉV^*ā}G?*©'Ö„‹ÅĄšBćæhŒ¤·Fr„kGż™89"¦‚ŻāRņG4é¼K»ļŲŖœpEF5»F?4N¬{ZØĪt_%EŌ·Ś ¬FŽ1š± ÷1‘ņ’Gš‚ÓV±vē\ŽsŅ“"¾²+˜¦RŽ•œ§NölæŽE:>£sœbXš;]Ŗ]¢Ž1õÜ¼× 5/'•ņÉõ¬Ųxƒh"H‘yūýa:qzŚēD+5§S³mNy!ĮU9ź@¬ūɃ}ŠIĒfØtķZÅŪ—BX`ŒV¤wö%?ćŻ~££8ĆH™Ō¤ęīт×rĒ/ļōĻZK]Q±ķźMtvŸq¹d—ø•t­&n@]ŲźO5£« jšNŖVV9˜õ —åe#>†Æi׌°u ļć“[#C“UĢs(•b ķĄ]į—éY9ĀHŅńÓbĪzīŖ’†ĒZݶ| >g$qšĘ†K8žń={ÕųļmY•T®1Ö¹jÓģ™Ł ¬ÕŽud ŹźjUxĄĄ‹š¦1•ē#9Č 7Aø\ܱz&W;¶„—±‘€ižLŻSš`“oĘ=iĶq¦|ĪqŠÕs-›PzŲ„¼˜O4į¤ZņŪ 8ŖØĮ>fß^{ÓŪZ·|Łėži¹Ö[ Rƒeė{Dˆ ¬ž•+äØpzƒŠĘ:õœdd’zŌ>%„)ņ“o~ +VoTSŒ"¬™ŃĒĖž}Īju«u ŒWwā+ƒ!ņ[n}jĪ½Ø”ālVßW›F.ŖZŸ° ē ½9/ӆEÅxōśÅłcūö”6©2Œ“ÅIśŌ¼$»•ķ£±ź×nÉM„„š‚¦Ęw ó#©_œī0zž"ßj›ˆ'č(Tf•T’ą®'eˆ+¼@v9ęę©é"Ž8ʌW“ś«>Lņ“õ«ś}Ö¤Œq) ÷5“ĀOtj«ĒfĻOGlćtõ"•d$7”W¾Ść4‹ūĻŗĶ ū°Ŗ—Ó”ąĄĒÆŹj•)%¦ä{DĶk­>$BŸö«9ōe'å˜.G\Ó_Wt@¦ÜæüÕnÓY“h†ųZ&ļš|õb jɐA”Ė€Dģ@ćÆv;{‹xˆ®žŲ5"j S3€}3O1iņ¶Vfn?½ŒRöĶü_łl¬ŠRjŁ&M s‘Їf” "eb§©SVå‚ČK„¹ł”sófØj÷-n€C1#ŌVŃi«#9+"h @óBĆׄHóCqÖ°V ­ÉĶ=oY߉3ĮėZh“b’¾Ū «CrHŚńąw¤»ÓsŹ’/Ö¹k‹ė…’W8 1šµ¤jrłø•ĒŻźMkT5æun_’C)ņ؁×5,+¼ˆnJątbjÄSł‘ę1ę3œuØŽęL•ņ™GsŠ“ł‘Rމ‡ØĮĆːISW4żzH—b aÉŖi±¾ō›N;Ö}żxŸ æ6OZ8MrČJµX»­Ž×Kń%‰%^L³wķ[^ŁŹ¹Žp{Šń{>hœ0'Ņ­i³]Āų,äŠĪx~h³zxˆŹ<³Zž§4Ź “~[zĪø½¹ŚŁŽ =B×7§^;$bø m@D°į&@O«QoˆĘpœH'¹‘˜ļ8žķDČfŒzSoģo;~šx•q Ābny½®“9©É){Ężüv˜ó‘ZŃėöó*¬ØtÉ®»£ŹŲ5$Rʒeć$VĆ©ėŌī†!„ŹõG£[Gcs tš,‘Œ“’é»X“lxōWgØŚÄG©ö­‹/Į ¹\ČŁēę5ĢéUƒŃÜÖjE{XŻŽā{F$𙵫µ˜3»¹ā±­±zN ¬¬L·¦ź728a—ž ź*ö›{„†įį,y9=+V ģŹ’Ŗn9Źāøē&œNĚųžF\ŪN ķ‹ŲÓ-ÕŹ©š¹©ÅbŖDĒ×5“}op3屍?Łn kO•­ģĪiJWÕ6בņō냊Ņ[µxxĖ7lv®a ģJ‡QļO}FHFÜ ‚3JT%/„"÷dnH`YDƒvqŚžó)RJ7#=kN×,Žm’/–:“Ū5«ͼć1KКĶŅ”~4tsū¶‹ mA”pR=p)Ļ­]/ܵÜ;dœŌŅĘū‰H=)a ó  ŁFµ‰‹œžģeź^%¹åņY_Āk0ų¶÷;E”Ž=pMu‚&ļ-KcŌOF"±ĒÜüź×²j܄·R7“®q³ų¢ķ›÷Ös{Š‹žxKbk)ĒŌf·®4÷fÜ6ē¹Å3ģ„&DVaļ]pTŅ÷N;ÉüI֞)²G—c*w,Ą –ÓÅÖROåJń’j®±moä•XXr ŽMr·vĄ1*ŽžNßėMŃRÖģ˜W³²‰éŽé·‘ā2÷ÅV›M‰É)"äņ0kĢ'ŽHĻī÷©Ļ^jķ…ĶÜd,ź@ź ę”(ֆ±•Ķ_²“ÕXļĘdći`O8©"—ČŒadR}5‡¢ė7€„’PAł«¢“ ztA‘Į¹©sw÷Ѭ ¹m _š*ÜŹ²ŒulgqŖOm(ĆE>[©ś×L¶1)ܜżyķU„‰ŅM«·Ųb“XˆŪC•ŠņŌʵ½ŗ‚]޲0#9µmuY‡›$ˆ@ćƒW­| AźGSŚĖO—a õ4Jpjö4J¢Ń»‘ƒ ˜e»Vc؊Æv·QńČ[#ØéV.ģ”XŌ@Ų8ėPGorĪÉ#gŠQš¶Œ‰FMv3’“õl›ēmYÓõk³"‡ÜĄ’xV¬TģŸ>0ŻČÅZK(”UÜ °ąąTÉÓzu*œźEūś/µL”•‘É5r8dz4žÉ¹nÕFž( ƒq‚Eaļ[EFOC')­É č’e“$ŒżźĶŌ5 £“6ņąŲÕ+ˆRįĒĢĖ·Å%µ™Gēē=±UĖa]Ė]އþ'»9Ō:žé]lÕ„Ä l$ć«Ž¼ÖāFŻŃ·ūÕ>-ͳ¬¬:t®9įuę‰Õ ķ®JCоŅé01īĒPkbĪł„EIœ.Gzį,õi6`ØÜV•– ²pü·µSZj\R^źÕsĄ'O‘‘Įźx¬Łl¶ŹKF@Ęx¦i÷Evį ÆZՔ  Ž“‘šP©$ģĢgB;ĄĖh-°V~U%µ“ĄFūb£™fIXīļ֘w`2==*äū…®ÆbmZĘ$¶ó"ó$#Šń\åÄįœłxćęĶu6’Ģ«ū²:tķNŗ‘³[F3ÜÆ©EkIŁ+Šå¬]e?4±g¶ ]ŽŲm*zn*ž­¦,Į™ Ę=j͐źV)¶wPøęŸ³{ĮÜ\ėķhoDŽ­ŗxÓw©niŽMžB³ģŪŠ Ē³æøŗˆ$Į£•8’õS.Vs–I[ō¢\ŪHŽę½å½»”ž}zĪū äN^—AéŗŖGuw •nsóakJÖēķo ¼tĻõ«×–ŅÕ 1³¼^¤SÅw›÷…—ĶW‡JópāS ė£·ņ¶‚sŽ™§šĪŽUSēģĻ÷MGaOÆZ~Æ¬rāwwĻńg¢JQ\č\Š’ä4µ=.kU>T  š±ī÷‚D }?*ģt­WMŗ„ ŗÄ`†5uōŪ+„ł$É㠊Ķb©Ėāz–°óн®yŒó¹ĒČĖļžję•s{ ó#Vtć5×jž%KE #±_L½±$Œ:gš¹Ę3¢M*¼²³ŠŌÓ|Q‘äR!±£eu 0\!Ü>ėu¬+(a»ƒĖ–ŻUńŌ ŠēC0H²DYp8Śkš4]ģ™Öźßā_4o\Ęį³öpxČe©> ÖŠO›b*2źā""vfĮĒ9­V‚ ض¶ 0źj›åŅdr?Šć4ßA1X䣌c Öå£Ķ&<Œķ'øĶp:Ī}o&ųmɌ†R1V¼3®Ķcr"”Kķ–¢µF<šŲxiӛå–ēK«ÜyWB«2 #ЧŖé(m¼ŪfŚä’{µlIŖYź1*NūS£“Ž ŪĪ6gžÕĒÓ¶®ĘĪ”w_qē·qj÷±Ų‚qOI,«#ĒŚßŲ\€7ž¼zUD³ŗąyJ~¢»c8I+£žR³å{}}nźīĄ6NO5R9ę1°Œcžõé—mąä[#)ōėY—–ÓGŸ3L‘ļŽ+u$ōF <ŗÜŹš¾®Š¶Ó,”ū ×i¦źkpÉŌsÉl'Ni\҉.rv®ÖśŠĖ}ģĒĪÓV,ī­®0oŽmĻ,„Ō “6ßΦSlNŖĻbœ~!ā @ėŠYMڃ°€;qSĀ<ęĆM&G\S%ÓāÜĢ$œ“ļÅK«Ėø*Z]Ē&¢ĄŹO@M,ƒSŚ|¹=ĄZx²…sēŽML$›G©4BIč95»!±žöLG|Õ„æV|M„'¶j8ī£eŚĆžōāŠČDŒZ%FāFŖµD¬™”‰ć܏ćN2($*ŗ¬|™qéĪ*äOLÆĶžł®IэģlŖŹĮ9ŒĀ0ĶÜ*ŖÄīĄ•eĻ”«hA”q€jvŚs馗,”°K’[”ķķ“iÜņM;ģ¶Ą3yi»mH‘ĪļņH”O\Ō“«Ę8!øģsQķ§sOg hŠk: ¢+)^»FrWh%ńĶN‘©l¹ĒaP̊%%@ŗ”VśXę”yt,G&įó`S^(äl”ŠbM“ćoćVb?/jĘu-¢v5Œ.µŌ©< »åVÉźE>Ö8ćlœ!©Ÿ!v‚Ē=)w<÷Ømż¦5ßD‰^H‚œgŚ„•A „Db ŲžŌ6Täŗ!^VŌŹt[wE¤cé ļÉÅN~eōČĪIę©,ź‹ĖqŅ¢’ģĆ‘œš—V/fRŒ££/…>X9Ī*•䊭µŖė–šįG?tMs×>6Ór²0ĒrzŌék½KTäōHģmČIzzU‡uaū³·żćŠóy|{l Ā@ŲģIĒ‘qćH„ŪüĘ®3Ņ„N š}Z©ģ(ш€/ĻÖ³uSM‚P’JĮń“Šį¼/ć{d¼/±eŹćēɤń®Æ%õ“a"…Ü Øń5tjó>X”ŌĮņǚLču=gdöÄū3“ßų¦%įåIĒ­xæā[ $µ†ąyi•$3YŚ~®`·Ż$łUģäŃ57xĢŅ•8GŽ†ØśRńn—jŠóJ €}Õ5ZÓć$VŒ#†"q†n+åmCÄŽuĄaĀ—’MUŗÕ̱ī8ĄąRRtÕ ģͽœg¬•×cė{āKj¶ĄķVb8zלjž0Ō“Td‚C ńO xŠk[Ó±dąc&®jęļQi)2N3“ÖŖõŖjüČtT%ī«#Ōļ5«»¦ó®Įlt=)–š£Ė’A-Ę Č®. µ)ķ„f 0x'=ŖÅŌŚi.¢‰ū©<żkz5eMr¤sT §-^‡3ńĻį€üg ’ښU­­ć‚VźŽ ’ėĒZłWĘ_²²“³i~+G ę8¦·?–kģ{UÓ|å]żŌģ8cųÖ Ī³¦µæ–†BA䒏jō’“ēŹ£ZĶyœėgū¶āżl~VžŠ> Öüā±Õlņ£!'ˆezJóųšŚtų±ZżIż¢t-Ę?īō£cl'>I˜|č}CWČ6³‡ˆĘ¤ńŚź6 o$;ϰ§'B¤ØūÆŖøéF¼%tŚī|Õ$J’n$üŻ)×C*…{†EŪĒĢkŃ~)ü<ń'‡u‰ ŸMžENx”•jĀšgĆoxžč® jwƒ†BUAś‘XĻ 8¤ŁpÄBW‹f†®E¦¤'$ 9ė]=Ģļ-ÉgcŒįŗWŅ?³'ģŃŖ?ŠmÅ0Ę-Ó, ÉĒpOOʹŪ{Į–Žų½5ži-–›·÷CnśYSĀ9ĶŪ ź×Œ9c'£>{ń"0øSKdb£¶YŁ”F­ĻRšŁÕćÜ<`8ŖtÆk*ädIŌšĪķ!Jײ/ŚZĖ ó¤!› Ī+ńlÄn!UŌVÅÕö]ߞx¹½uƒ±%‰-ŠV‘étS›jŻ +ŽŠ½xėT£Ś³|¬"“nW÷`øĮ¬™¢Qp$F'c5n] \tŗ6¢¼HĢj»·“ų§ÆĖ*±ß.7t j“@’I ¼ŠĪ摝˜³“&qž™5PI=s ĘK/åŪėIÅć%QŽF u¼#wćŁčÖ$7Æå”‘øæH?eߣĄzw‡…ߍn«®d”\¬Ké‘\øŒĘ…Ŗszö=uiÓö‘Z–·į7Č͌‚)·–ˆ”Č «tƼæl?ŁČŪx²āēĆŪµœq›–D8TP9×ČZ©ČńmHÄ €9q]4ėJZÓWG•RI~īz>ĒC£\ż¬”8'”© ¶ž 61äœr+ŖńF¢Ö‰ "ē īćµs1ŻÉ5É8$¹ēšėU[Ęٳu!IģUC)*1YāŽį€%YGļZV“ōpėĖ€rOZĻEyļcaņ«rkŻßcŖv¶Œ_µ;Ī«]ąm9®ÓĄś5¶” ²\(IŽG×6mdHŲä7=Mzƒę·‹OPvg/|V5*(Ł£|õPr3Ó5wÄwŹb…ycų‡J5Yk‘$Ēp? ْ¾·dVH£ƒUĪ’ęœg'dĢÆĐŹb$ķšḛܼ́¾Dnˆƒkœćµtšf›„ĶN†3ä®=sXrŗG¬“1ʱÄNKz×4ėAź½”£„Åū(’Éc„:żāy‘¬@©r©(0 Z~¹pŠŽ9…Ę§ę·Ņž²„å°P¬®ŒŒdÖU.£Üé„IŽūl—Ė‚i<ß(*ÜšEV“XÆķåRĒ…Ü0Ż}kņāiŒ\:ö§ŚĻö[2č[?ĀGsXrKtĖjŸ/3Ńö¹ƒār‡]Š.Ę<79®wÄŅÜA}²1"« 5t_f{KĢI$vÜŎ?*§āų„7b%u˜‘‚ŁkŲ£Q$‘åÕ£+ó&dX*4B>9ŻŽ®ŲÅ 2“æwńj«F`æL¶z}ńŻ9 ¶ÓĘEwź(÷fĢŒń¹WO=kåŁP†=85zĖ+o!É*揭K érC;M*6$äÕå‚w5robׄćHl„•°6 ’ŌūÉeŗœ¢¢2ŃDšŌ•ÕĪ7KŁmv¶§![’O„3Ē6Qł1ģmē%_SEśH÷FX”åœŌÓĪ«l°Ź@&qķ[4ŪR1|–å0¼;tŃKåHr1ĻzŽKǁCʈN1»=Ŗµģpģ‰Ł88ÜBąšĪšõžĆGāĻJӕHÉJIY–nnL—Mē†;ĻLö«>*š&“³X™¤fAøttÅV’;lE8‘ˆ‘F{Ō–©Ō•Ś£”jSQŽĘ÷•Ÿ™fķän„‚3Žŗ‰ÆSģšqęA?Z­¦i±Ķ Ŗ¶xnߍeė±i^2Cv”“’‡»¹”>£$ūŒ»nø«Öś¼ņŻD<²łūÜäց ¬o$ŪŻ$Œķ+źj֔v©,NJ’½)Ć[2”QßCµ†[Ė«g„Ā`ŠhČ&øŚęĖR•C“q]¶®Ä4ӁŌ*õć“Xž4ÜĆ õ²ā$܏Zå§Ķ Y­ ź%$¬ĢųL~Ū7Œē=}i·÷ ©å*ļįŽ*Ī›j®›”’:ŌVö﵊ ģē“ž†¶ROC6ŽÅ{[E}J8‘Hi8ĄÖžÆ4šv•%¹ &Ó“F9歏Ųķ%¼øpĘ0\)næJęīµ)¦b7ł¹°ÉQC“ōµĶ.XŻh·HŸķzP“›r¬ƒvĘj׃ō‡‹RūLYŚ’+ēŅ¢ųt`–č:¹R‰é]8iŚ¢Bˆļ/™’z×<½Łv4ƒ“–¶.]2ĒnåbßĻLWm wpO<²ł+“'ņoUµø½g‘%xÕ>÷ĢpjmŁē„ZÕ”īzsŠ^źÕ=I©yj‡ŚÉj>ϲF`ß!*8Cć;[mą1ī,w+ź*®®ĘŚĶķa…÷C.7ąV¦‘’ ,Ó<¬§,ĢŁāŖńZ“)¤—+c¬ōx”X䍒TƁŪŌՏųF£<ż¢Qžqŗµ­1u¦Mu©„żjrO @9ązT:ś‡-·6¬e€œśąÖĢŁ ¬ĄucŠęcóævF:š½g` dŪõ5ō•#~¶>VŅÖGGVl‚Ūpķ“W“ųŠL Į Rk"ĮāHö} ŖūU„H•RR ļ\“VV»:”>–6o~Ķ;ŻOs‘U¬žŁ¦ęč õZ†m"6Į7 ŒzŅĮeg |ĪĢƀr)SŠ·3#¢4§'ĶŹ‘”ww§Ę€,ÓJ{šK}NĮ\b)ĖĮŖŠĶa3 >?¼)Ņ]$„‹k08źEfŌz&’e/{™•õ“«.ķÄt dT­0ņņ$eśWRóĶ܂ܫSCi©Lūs")īN+ į“ÕŹĘʵžÉ³suIüi–W¶žn\nĻ÷©–^–v_2g z󊣏ĀVČŖĘāMĆŒę§Śįą­ĶØÕæ–…cqŠJÉkčÜŌ–ó@ ‘yn¹pjc¢i±‚P[¾Z”x4ˆhņ‹铳Ń“å¢oī&q${Į‚Ń  Sh|±ūĘ|ūREqm‚#EĒŅ’›|ńņ£¦+E~ˆĀÉī2 £Ą¬mŽĒ8­xÆę1( ’hœšĶmL *iłĒCƒRŪÜź Į£¶H×Ń©MJJĶÅlĖ5ńĘÉ {ūV}ōWrūö$zZj³ĢƒĶx¢'Ó½>[{8cPg™ÜrA'²ŠkKāšÜꦓ›«<‡Žwv›c—ē)QWukÆ-•#Ō)®Q¹žF#$|sŽ+ŗ ’GńƒÕĪ™i`ˆIoØÅh,v«x8ē9Æ.hµ2™Iäävz§sµĘéfeĒZµYsž`–bœuLõį=°\yˆƒķQÉj™/:Ž9ÆdŌPīc7#,ibžē;K°w9­ ĒVĢ=ŗ’÷OY—Z“…AÜ[šŖrųĀĮ Ųā¼ī)ĻG'ėVą[Wqē8ĶmQ¶¦MĶģΧž$YGqV!ńt@ŚĒkš“²Ó¦\yč¤ūÕŪmOeČ»„}y„8S^Fę†­\č#×ģnYWmHn“¹$_ޘ»q\’öM“|‰÷'Ł“ųĘs#1ō¤¬•¢ĖS‹ÖĒQnÖsŲ, YŽk2<Ź{󎹫EÓŌc–µ,L2®Q×ÜŌ'mؚRVFŒ–ŗt©“ī1Чs ŁJ§c„#ž“ćÓōé# ÖÖō¦]é˜nw÷Īģfœq÷SūĢźaā·M½ī…ZŁVOb=›ÄĪVÓNŒšÖÓtDt_õZ‚ģŽ'Œ¾€j¹—X&9‹øJM­ł"÷Ųč›ĆŠŠ†óŒ`b±5_ \¬{Ņ'#8qQĮØk‘8 ̾ėŠ×ÓõmLżūiF*#9EkgB:5;]Žz’ū<ąvā’-ż[*“&0ÆH•ÓØ 8ęŖI«ĢŽH·|©ī*ż¢’ųE/wķ…¦›©‘Ą‘p9©ć³Ōā”pł+­‡Äņ•ģK rp*xüG§Č”^ŃѱÉā…(­ąomü¹ĪAų ŗŸēZ–1]eeCŽqSϦ¾LO"ö…V“Dķø< Ō>G°į9EŚZ3C͚gāj.™ʶ=óŖŠų†Ą7ļ$Ž1×miYjŚ<Ģ0¶=8”TŽĢ%—ę¹–ŚåؘķŽ3Ķ8x†ldaėšŽ7Ś.0ÖŹr*8āšķӜ RF95tśč)S¬ÖšüĪvćZ™›F'ėQ&±væ2»nļƒ]”Zƒ*ü“F¦ś’? i æ-ĀÆü 4ŻJOKF²čsŚ‰ÆŠ.Yų›ük Ņ’3ĢźCsÖ¹95]f. ĢĶŽr2sT™ ϳJ²ÜŁŹ”¶gs”±@o«T†ŌŖDŠį×YŌ œŹp}Š×Óõé£P$t|AŃĻRŚ‘%M虧rB9 ŽsŅŖ™¢Ž@I‘VcÕ!ølĖŌā§K‹2ü[I“Zū¢ć£fVŠp0”Šœzę¬oó#Śæ1Ę7·ZuĮ$ČŲėŚ­ ŽE o<€Ÿz=¤VŒQ¤łnö3e§8ėT.åŗ`3ŖŽ+rėJ¹·‡+p[9#„2Ś zʹē9éZ.]÷!ėš»ōsÜ#œ3dõĶ^³ŗ]ŪŌō®ŠŽŚŚlžļiĒ,x§ 6²ŹŖ{TŹq]liw£WG=%€”nP0{Ōi² HķĶv„ÜÅb*ävŖ’G}Ė@ĪO94£^śn)B+Ds0éwT‘Ķ[ƒJ‘B–$+ud•s¾ŻŗwćštW0‡ĢØŃܵ¢dņ½ķn@eb1ŌVæ•‘‚»…ełÖīĤä6~œÕŪ„Q†pGįX¶ļtĶ„ī±%°ÉÜŖzuõ¦5ŁFZڵd}»¶A«ń)#z“KŪ“'A[SŽ»Ņ&‡CLM!`=+¹ÄXĆǵW½²I1ÉŃj–+]HTšZjr_b–3”\÷¦4w“˜•OnŸ­j\Ū_FēbHHī*{Y/Fkp}I­%Węe w{żę}…ģ°6õėZp\ŚJ™tłÉėWRŚ”ł‘¬mŽ1UęŠ<ĀL7xČØu ü‹tšVz¢9ģ­¤?!UČļėY×zņvH:v©'Ńoįv+,Ž˜’ι‹T‰¶Æœ¤ŁĮ«…I§¤ŒÜi„ŌÆy”^!Ź”Śo™-¢ĀŲ‘‘ÜVķ¤÷ėÄĻ; O(Šį`ėĘx=khÖrŅh9ZÖ ędø‚&ĀsUnõBĄ¢)\wĻ·} @łd•‹šĪ“Ćó0ɧҵ÷m”ĶĻ+źfÅs>ąUŪqéĶhŚėhyķ=éė¢v zœÖ 6R 2̽ŲNńéYū$·EūVögi¤ėÄE‡Tfa‘‘[6WV—gkģ GJņż—Y µ×ž§ŠŅӖxNw18ģՌšėxč\+¦żõsæ¼Ń­å?u=×½U} `; @:a°kDÕī”—÷˜)Œł®ÆMæ[ˆĮXÜg­sÉā!£z{:SÖ:#‚ęŃw,„z³f¦†[Ę^¾Ž+fŚ0ūw+Ž:RÜÅåA §·­8Ö[4eĖ%£m˜­izĒpr;Œ – ;¼Źs޾õ¢ó˜HżÓȦEŽźE€ÅŽ=jƒ‹Å;Tsóƒ]„“Ū,X3ƒķUMŻ¢¹Q,YĒz…Š•µ‰VMė#Ź##,$zՉōųŸ·”RMiIu \‰Ts‘ŠŒ]#äĮ€ŌÕyKX« Q„4nęL¾Š^“ ²µOPšŠ ū¦#åąµuPņ Ę>n‚¤hå “žœÓśÅD÷2t”ŠąŸĆsÜYūŸZ‘¬#³Ŗ;Wr©™–ßņć„Jb&6pO>Õ«Å6­$OÕśÅ³‚“ūvŠ€Ē#ŠUż+P½3…ø‰ļ޵ŃÜZO(ŚŅuāØÉ¤:.å'v½C• +=ĖRÄA÷Eę€^Z‚’4gÅS‹Jš,7œ\ÜT~^”s×œ[6—"‡ Y‡ašŹ\šVƒŗ5P„SŽÕ2ky6a¤Œņ*ż!W÷l śÕµ†&ųūÕYŪüĀ=jĀUtՖ”w” ÅĪ”@ W {ÕFŌnĖ=°‚æÖ“Z)Cā6 Ē"§“µfPfqӚ˜ŹÖĆJ¤L»kĖva¾7Ē®:šžcdِB{Ej%Į Ŗ¤ó3Q\iJģ¬søwŠÖ3Š{ؚŠmlgĒ,2ĻV"“,īmŅŗŒÓ$Ӕ ēŽ}sT„Óg^C²jżŁ+&b›Žč܇QBHĪ8©"¼rsųW9Ķ„*™^œT’;!mĀ<kžt¬ĪˆVŗŌébž28N1É4ępQDmƒŽ¹Č=­*ƒŪššI@Ē. ¬=›¹ŅŖ¦ŠŅ6wć×Ņ„xĆ/ gøō¬8õ$;Xw©†„( ņŻ9­}œ’ŠĶøĖK^[Dč@!Hõ5—=²Ęsę=jźī,¤žŁõ¬Ė¹¤*00O©®šrvŌäœye¢(j‹ rcm˜÷Ŗ)}{?Ÿz³p“Hü–u#”Ŗóưg?v¶zčÉēičJ×÷ćs0Ļ^qZz$é<†9I#I®qœØ!I?Jg‘r}ļLā”Ó²ŠÓK}NĪļM·Éh÷Œ Æ$E#T q“Tt­d$j.0ĒĄ+£Ó®ōė“ ĢØ;ę”b,­PsĆÉūŌö1#( /“•Ķ« "®; ÜŗŠķnį’EbI=s÷Śå„É9;1ŽzšŽ„žT¦Ö“DRZ (ÜzŠd q Ęzc¹8ĶK ø·9ŲvzšXµ w}ŽĖ•ź„.ké$\aošŚ^£Ż•ĄaĘsÅu:AWƒn”¼üĆi. @!a’W„]ŃęÖlĆ$…IčOŒć§øh¤Ū“Īņņ¤ƒéTX˜ŲnĆÖ¦Óo$’ęĘĄćØ9§Ī"#åłsź+8ĶIZEŹ3Œ¼‡ZH¬p£sšŗ#ā ģyŖÓF滑ŃWē­\Ešc˜@iJJ&Ŗ›’ŠŠ]4˜ŽGåY:¶Ÿr¹#] $Äßy€=NjŲ\G“øÜGLÕŖĖve*W÷O3‘$†ó“Ow›wæ'’+²ŌōtRĪžÜU¶”>ҜĮnJJčĶAÅr3˜)¼25t9ؼ«xįfiœ1ąµ×’eyŖY÷3ÅBśą¤Żŗš…+ģĖk—FŽVÖyWīĘ:ŚÓ® €¬™$u«ćKNįž”²iinY ēŽ 7mĒ >£ķ”V\„<ūŌ« %9=ĶAn,”²SZÖŃ"ÄqSŖÓqا­ŹöÉ|åŹśméW-­&|ģĪO8«"ķJ®įŲŠ²H•uüé+1ŚV³Z ˆFÜŃījčK`”^8Č}sQ­ć*aŻXŲŌš 6O¼²zóŽ£™­J§ö*O£XŻ©ŚĘ3×9žUFmŲ8h<×#žZ܊+0Ł’{|Õk**Ģx暗ZoĻŌægO}ŽZR×,m=ŪѽjՖa#Ń„$ž•­|X`ƒ“w"³Š’²¾sėŚ“‡7-“±›q¾Čuφ`Ų5QĘ2µZ-6['ݲåyĄ­½!g±$i ēļv«Z•›°äŗīsYĘV|³Ō§$éŽÄza{‹RÆ&ÖĘpOz‹QÓīZĢ•›ōŖ†Īā••ŪwO½Š×ūDÉ ®ēl~µ.錞ģ•ļ©ĘÜ=Ż‘!óŽć­Oc­NcŚÄ²ćø®ŗāļm6“`¾:å5MāĻ’Œ¼äcZøFjėFdŖ8{’q©FN^’:E¶„ą>ę=ł§[Er™I#¤‘šŽęŁ'hV#ž1YŪKHŚ ½M½:ł • X.ķ-®W/Øė\”ŗžŁĒ–c(¼u­m#ZR0ŪCT®hkŠn0›°’YĖhŪ­¦R¤żĘļZZv”,xŻŽĒ Å)ž„ lŻķÅQŗµŻ-•ōlÕ5 źG“©n‡Ko¬Ć…Ż݌øUėMJŹT JŹ[Ö¼źXuiGcSXĶ †ŽTv³¼XÕDß¼CiXŠĖ‘ŪŒŅMw"ÆĶ p½ń\®Ÿ©Ū$`¢J½5·§źæūŌ8“µ-y2Iµ8ķöćÕi‚{9[¢©ķ‘WVźŹDņĪ]‹®rƒ"’©kXR¦ž–)OiēG¶ŻāSßÖ±īlļ£c˜ƒ"÷®¢·•ßźjs')=9ZŪŚ=ڹ­č·1aŗņœEFéĶjŪźR¬K€ŒŒŌwvP\Ćū§Ćö8¬¹ģÆķ×äsĻPš’²`ļi-Ø]r±Fæ…Z‹TŲwNȊ:å±õ®GĻ™e&Q;`gŽ•b+«q¼Ó.”pF®95»įż Ræ¼X­ķ˜—?.{Õi÷:^ mnŌ¤ŖAķČ«†isĮJ¤~½L˜c‘y2†8ĶJ<Żćk(Z§sy m.”±ĪkgĆ2Y]) 52rź‹Tܵ‹cWåA…9žu²Jó|£ėWo¢·‹īŻ#ŠØa»Ó"…¼ü¾]ŲÅ)Q“vd÷*4ŻXnü)é(` /ĻJĀÕ¼Ec Œ°˜Ų/«vŖRx¶Ģ@NŌ=3Ö«źr·˜,GKØŠCngŖ:žõēŽ*ń<­ī\ō*ÜÖGŠüCu©\¼0³A ńĒ95Ęß©Œ?™+Ż[­tŠĄøļ«9źbnłR±c\Ö|ŁHF=;šĄŗŗ’N9'ņ§­ķ”2ņäø-ĘńUä0“Å÷łiž™­8„fZr¾…FźX-Ł·2€:ұ_R30UÜd'Ņŗ-Aō©"1–ÜHĆdžjļƒō»yõ8Ņp¬ysé\Ņ „š³ŗi-$“(hCQM¬B¤qŠčīµ™n4׳ĖG# sׄzž“·ŃŒė#'–¹`+üQ«$~"•āl$d ČäÖŠĮ8EĶ3byåŹ¢XøšÅĶåÖ` NzÕ ’5¢¢Ļ~…ć`ä{T–>*•p§”ąī£SÕmībccĻĶUĻk©"żœ“åd~‰¤Ir«%ü”:£šŲéOk¶Īįś-3cĢź7ó…H,¤Œe‚jƒĮÆĖ!…-®–00ISTf×ø„ŖGŸ–r±Üčšp‹PHÕ”x—“|ę½CĀ–ziÓv:±šńo A©Z)“ėĻź>°±ž%ī²mœöQœŅ…9ĒY« ¤Ó\°|ĒM«ų~Āꊘä¹ĄŻė˜¹šµŠmZT‘‡ō®™4(¤RÖ:¹~ć#­RÖ-.t«“\3N£«†é]Ś»rYœq|‰Ż“yæÄ/†—VŖd²Ōō"żŅ5ęz.Æė!°»`‡#Ļė_@[ėvw3ŁĀÆ%›ŠŽĒÄ֋?Łįk7Ī›q”-Q[ŠøU”eh»ß¹āśG„üK} ’-÷f Ź@ÅkĒįĶNĪMŅŪU» š‘Įnżė> 1—‘\““_”öß±J‚‰/£œg/ĄüzV§ĀߣNš’ėÄz͇‰4Õ_’\sźErhQū2æõęRĖj¶¹•Ķ‹Č„óR(»7aÖ¬i¾Õn5€ŁŻy²š¢ óģkö#Āæ ¾čz’]XxcOŠę3Ņ!oĖ5Ņź~šę³Ø ج,ķīp²¤#Ņŗc‹¦Õ£{‘ hI95cįĻŲ»ąVÆaā}+Äŗ½ģ:tVŒ· >c{WŽ) ó7D$Į•½«2ĻĮ·v²‘ö˜J”łU1ŸĘŗ=6ÖHDźHQĄ=1ŚøŚTö•Ro¹é,j‚öT¤ģfźšu½ķœ©5Äa„B7pkņÓö½ųw«xGā>”+ĀĒĆ÷7%ķåp¼œāæWµ+¢²ī hė•[ĪüGųWwńKĆšZĶ¢ķ²µq+L‰€q^Ę'JJéś>Œ¤Õhæy~'āÅi”źqFŸ.ĪĒÆJęōł\w\qžŲÆMż“4[~Ń:ö‹ mŅīŚŁƒv#½yģj)ņNšGQ^Œ©:PQ’<ŚrS—4V†Ō6ļ5Šloæ×ÜVž“j"*X–bqƒTō•clŖ¤äI©W/}FBĄ$žõęŌmčŽŁĒ“VĖ*›ŁĖFH‘ėRér°k7^*-fb‘®GLÖ^›4§V@KcƒƒYr9#juā—)֋¹¦ē,w|ø«?™lجŁPÕ]“é$µ.Šļ<žō—q˜ķĀüŃ» ¢²vHéö-k.£RdkϹŌg5aÄO“”ōõ¬čȀrOxńĶ >c§#Ÿjm-ŠŻ¢łQ{Źy­ÓncRS=eé†PĒsø’N¤Ō֒ČBų 85vĘ%š$r>§„'=į4—¾\¼³Ż  D晭%š;5Yšcļ/Jä¼Yy,,°G)*é‚či–’Üǧ$Ü#rW„J¤šŌˆ×ęvŃŪ])$1‚xē’>“˜żü…%.㑸÷¬½"žÖ8ä3īĘ:攳ŌŌ»?Ź”ŽFīµ.•ټŖ(“Ķø'ŠHåŠhÖ7uź}jōŠØŃ÷Ę|§‹3`W5qŖ[‹¢³Ŗ?ĖĖėYZŽ©u5³EČšøØ–½‡÷W‘fķš+©|ÉAœ’GZ½-£Oj²@w ]ĒoN•Åk’»Ų¹vB¼īéžEičŚŌæŲ‚i(r§’+iPj*ڜžÖ-šW"Ž2JȰē«İ­„Ōd…„!€ö­5 ·ĢĢ9'֟2™ī–bęC ķłŗ ŖS³HĖtqרeŌämī«żŅ{ŌĄ”ćēŒYŚŌ³>æ++  ūT— !q‚w(Ėģš÷U™„$¤ĪƒBE’ņ4ē`<śė¼ IX¾eAŪ„qś<šA§yŒų šÖŠÆŁŃйH6—ŅøjSrzt:”n[›}“—.ę5Q,cnZ²µØü‹ÕRHfūŲ=źy&0[°“žC½†ē·Ö³5 ų^čī€Äē5¬^†3IūÆsJ{x¢±!”ēõ•,Ļ&”āŲ'*;W­‡Ū"É$Ą#½Y¼‚4µŠGŒ2 Ž¦„ŹīÅO݊¹,qgYbĢey$š+ż"KmĮ“;zīļX~ø2Ģņ±ÆSLńEšĢ1ĄRi±S•“m•on„·”¤l<ĢõĻ„Óõ &²(ėVēėĢ™& ģß¼ļšŠ‚6·gH±÷ņE_*ź»~)ęŪķaĻN愸štõO(©ĪÓ#VŸ„£ŚČę5`ȰĻQRj֐Ļx–­ŒŹū‹c¤ä“¹sQ·+ÜóR9[T©óm·W}*ŗĄ‰ØĘ±O$+”ńS$:į±¶ć¾—”«z”Į.AE’06€>õt)ŽÉ­Ģ¹Š~•āŌQ^ _#é]Žīū>4]Į1p®5ĪyķĒpĄ–dM’Zčŗų£±Ė(JܲZ™vŽmøH%Ē ciė]/Ų]8K ŸpŒŒ÷¬KsŃüφn3ž•±£Ü\ŁE”d=pz“ėYÖM«õ*Ń)\ė-~ˇŒd;rIīk†2Į|Ę&FlÕķOQ–ūwšM° @ą\•µĖŚLUd&IĪsSJœš³z›7•ö:hm$µ NŠ6ņzŌ¶¬X¢ØČœńYqjfWW-(õ­]9SåĒĖcéU­­"'WīšÓZÉ9A ;ć„\°°#Ć7‘» Ҥ±"ßøķĀ„^{Õ;łåŽ Zi ŚŁ^J曞ŃŲŚ0MsÉöSˆ‘••Fxā£šå”%9,٧Š,u(®-–(Љ~•·į]>kHH–`å”v5ÓK7cX+źĢżsNøŗŪ8HŌrlzšąī ŚįFĆF’ dp}k¼×-n-5·Žņm~2§ ŸZę5KYęÕ%‘xXĖ»¹®Š)Øļs:®MŻ›:[īįB™p:VżęŸqsL¬ŪĄĄ9ĄV-›²é¶ģ ŃłĒ4ĖĻy:t¶KĘęŚ6żźĶ¦ö4•œ}ÖoäĮ œ-ŌÕæ.Hp-”)ēp°4mWķö0ņĘŪ”×}§ˆ"»†#5œˆģ§wŽō¬ Ž†ŹÉ'žGć{;µš²\ŖĮ˜#øĒz”¢‰ /)x^2»±Ęk¤ńƓڭŖÅ + °Ā„SŒUÆ YŪęgTR¦=„[Ö²tćyhDØŻ½nf|6–O"HLnŃ“(鞙®¬čˆNNšMrž“ģ2:+ķŁŌWOż®ßóŁæ:‰½n:q¤—¼ī:(6ń»©V¤å‹T¦ 0ü՘cRĄ(vā¾’X‡cęcBś";H”0Ą÷­YUĀ…Ī;V-mˆ·ß“{g­E,Ä £Ējäu¹åMEj:YæķĒėH®ŲqŌT‚×R|f cÓÓGŖŁ)"bqŽEXŚ©#9ĒJ­{’Zœ’i—¬x·”³k„]x² õĘ+”>#aœEóꔓÄ%ņX‘Š~ÓČĶ7Š­“{JÆJtŪe?4Ņ-9õā2¹Låišj0Ü&ח¶O2źkÉQ‹gmjævWüsZæe ązžj’ŁŪ]}Ėę½ĶC6‰ĆcPw=ŠńJR꣓šīoCk ‡lW™äsL›Høbv]…ōēŠå%ŅīįbDŒĄŽiˆ×ˆę1$ŖŲĒSŠĶŅØöhØNvuk¦ŽĘćmāĆzŌѾµ \›ĒLę¹ķ:KĆ(Ż&}3‘]žśœaZ2 żkA®†ń©$÷ŠŠ²ŌµųŲ€H¾„VĢ:¦¦aĆ鬳ī² Ō5h@Ż[øĄĒ;kڤ`ƒg»šÅcģuŗFžÕK·Ü[† ģŅ[ß Q&©«”^—`Ž¦Øæ‰īĄK%įFŽ$‘ˆĶ”Śyįéņ5Љ8¾ˆ°śŽ»ĪČ0F0{U+½GÄL‰v`ē+Rm3“mƒŪ-V`ńŖēu²±žé5¤Twq!ŽZ)XĞo3dŻø-čŌč&ń `ģ¹sŽ:fŗµĖiAgHż0F*ģ7PIŪ口µN4ßÅ4ź­.r7>!mø’}Ćҟmwā8Šnw#ż”šģ^÷ʌsoöV›Z<øKĶ8ӃVŠ›_ü {mcXķįb;² }ljo•³öhQ»ąVƒkjüy0~˜Ŗ²]ŚLŚĶ9ē!€¢ ;YŽnN>ėL¤Ž.»Sƒo@ėŠzxŗė'1Ä9ĀēKqk¦Ķ &Xņ?‡ŖÜé–2#i£’h„oģį܅R]ał֞1Ųs%¬,ÄpBÓæį*²‘É–É× Ā’„pȟ¹¹ÜqĄĘ)‡Ć’®UC.:ƒIPkXĖń •¢ģ„z=WGøc¹ $÷œ—&Ynė\ŁŠ/Ō°¹aVeе4ŒVéŠQÉ>¬qt¹l–§Keo¦Ė…YćbF>aS\xzŽBJ˜ĪxÅq i©ŪŒ…”7LRŪ_j‘¬ņļšµ[•9i{š‡‡£§՛&…$O¾“žć9©ķõkჼ¶:dUčuŻE ś-Tj7£A* }£=+S߃:Uˆ“KŻĆrH ļ‚+n?ß1,cŗ ¹mā)Y@’DvŲ)6–ń“²—ę`&t„³4€ćŽzT©owȖ^RMn?ˆ”CÉЊ­.ŗ²†S=Ŗz`v¦¹_AĻŚ'hźĢ·“SC˜ę—Žœš|:–»V72mōÜx­¾Ž7ŪžœńW`h6gu¹zҽ-‡V·½”™½«Ž³ąu«ÖšžŖP=nÄf­#[t1ĒĻ=ŖQ“ņ€ŽÕ*6ĒĻ[dĀŻ ¼  ÄółhŌ† /įO›½*iv³2:֞Ź)ķdß¼8x÷\Ü6G©4ńÆ«Ø#{“L}"˜ó3õÉü<2„˜…ėQģ×Fh¦¾Ņ/[ŽŁĪy 9aÜV•…µ¬Č0ĄJä%Ó倅³šŽ9.ƒ`»€:óTį4·Ź“écѬōūPx`ߍ]ŠĪŲ  0`kĢažįrVWR{ēµhŁk3AƘīG©®wĪŁ¤T$łNłģm0r™$tī)ŸŁŗiĘč䂹x¼B€ ‡æ½^¶ń lFbcØOėOŚé«‡/ĀlĖ£Ų2‡oŌU)4;erRO›Ś³Ŗ0€’:ҳ¹€Ø$Ø&’ŖŅ܏c­ś™c0ō—jŽżĶY†w~UfĄģ¦¶­ņHe½%Ė{,\ū¤ÓÜqsŲĪLܶP‘ŪҧŽžH,¼qEÜv„AUc’¬ü„'b‘Ž™©•8²į7“:ĶV˜B<ģ9ļĒJӆźÖgłó’1ĶyŅŻÜ‹“{)EżŅ8l•¹ĶfšßŹj±ųŃéS}™SŠ1×UW_”yrĄ× o¬KœHĶžĒĪ­¦¬S ęgśŌØ5£"Ėtģujoć_Ü«6OéV#ŗ¾A‡ķĶr‰ā9CķD8ĒSWģu4ŸżdŽׄ)SźŃKšÖFµŻÓ” .ćߊēµs?Pkz)įqµdÉĘ2OZŽįTŒ1Ó¦kjU•hJ÷9/µaö¾åOÖ®Zīc˜®6z­źzBO&UĄ :f³’²&…‰ˆč1Åt¾V½Ó/l×č‹_ķ×rĪÆĒ<ÕŲµ ČAÜĢĆ½ėž‚9ÓH€uĶFf2¾nāNx&³T®żähėµf™ŁXkĮNهėĶlŁźŠIēÖ¼Õ …—`n{֕‘aĒ?(Åe:Ņ^mé¶7k \r:f¬ :†’C^ućĀ ŖœŽ§Ö®éšÓ$§v6‘\“Ƶ±²’z¼ŽC ~•Y.ŠŃČźB fŁjp6¢Œē<֊8]ŪW¶jb¤•‡Ė «sĘņßJœĪ]0č Éib*ņeq×£cp§©ļCIčÅ®Ą[O”ā@W­UšŹÄ±1ĄŽÅNÖ± d9>õi" XĄ ījāŌvlĻ•5µŒ_³(RW! W¹GTĀ w®¦4Ü”Cž¤Ņµ¤ ¤Žęō«śĀŁ™ŗM­ā ‰#,ß֚tūČ®:q^‰k§Ąt5!³€px„ćRŃ#O«>]O4k[ģā5e$TÖ:uš³ŹTc½­-BüĢ@ĘsPL–QĖ€ m½qš„ŒMh„ØNÖl䣵ŗDĘŠIīVŖĻct³@ģ®āÕ"bB«‘źENmP¦pF(śŹ[ŽXyXóėtøˆ‚° #¹­[ ‹”eł{’ t3X€ Ž2ĒŽØ=ƒ‰ę#éÅ[« "cĶļlZ¶Õ¦…@1O±«0jo7Yŗ\Õ8DØK0銷 ł…x* sŹ—ChV”]āiŪ42G…ŽǵHš3!Ā{ S,āD ČÉ}kJĪ]ƒ“hļžõÉ(ņü'lygLĮŗ³ŽŪĶe]é;ä]”śś×s(Œ9ē"«:BŖxĘŽ¦¦8ŹŃŃõJ=nr–zSÆYI±<ÖķŒKÜHõ„™”,¾Tœ­;ĪU]»\·­iõŠ“V(EŽä®b†Šß/ šsŽˆ ćŅ£`ĪŖ|¶éS qågiö¦?“fć;ū„3^£*pE6;›bäyŲ#ӌŃ%м‡rœ(ļėN†Ö$< Ī=+U:-Y2-V/ßE«I¢lć-ģjĐHć!ūƳēŠU*CmćšžŅy#w“ŠŹtÓW‰¼+ÉJŅŲt¶’éańNŠR:•?›ęRi±.Óó1ß9ĶsŹrކΕ9»¤Všy€[w`2M]E/XœqJY?¼ČÕūäNC}j£ĶQZ(Ź|“ō”®^·&6a°q“Ö„g\®REcC”Ż!SģjŋĄHc+8ę„įŁqÆ„‘Ŗe ŽX“JĪ\żć€0~µåvŹr”Øä#īīŚ)„%øå%bÜnĮa9=źŽ”ö¢æ ŻžÄԐĻT¢ī݁fĻ1[BūŲŹPOķ·1Ż/#FžĖž5…«Ü̧b ¾„žµ×ŻĄ\'ŒzÖ&”a»1Ün®šU"÷9jS”v8öiĢ™l’y85£§Ž×fÓ¼ŒÕŪ­<‘ŌóY„I'ȇ¢µ•(ȘŌč–¦»r0w}*]囌š½k+‹„`$¦jż„Ņ9ĘĢzŌņ8+#hŁź]HøŚ=*Ć\¶² ö„²KIOž™ėĘkFŲ|Ž ¬Ü—RÕģSŽģyEL\w5j9ķ Ŗ²¼}źÉ²`>ąē©©"²LŃąb„[tĮÉZÖ(Kco1)Hć‚*„ʑ“ä#gַűDP Ņ®ĆdĘĒJÆm(ģȍ;ŽĒ {„¾AU?\rjø³•1ņ°ĄćčrŁŅuŠ£qa,¼)zŃĶ|BåœNkIŌÆģœÉw5Žčz¹¼“Xƒ8-ŠēßH”‚3U"³Ōc›—E3YŌ£¬N˜āžØō;³†ärƒéXŗ‡…­÷¶07ĄŠ¹¤Ż_G–yéƒĮ®NŸĶ‡»•›ÄT§m ś“%¬dyģšsŚ6ŹÆąā®é²@ó‚»-B ń|Kc©kęŅ}ÜBA?ŻZoNZHĪTŖEŻź‹ztˆė”vSH[p21œÕM44RxĪ{dVčŗ TėYN¢ŽĒL)¹®ĘUͼr"† ¹EW‚Į””=¼’ė[E†?#ŸÉĮ dp5ˆÓS5A¹]~é®ķY>õn8-I$uš9ļYmÖž$`õāµ4Į¹¶»Čē V „ļZĖŻkRV n¾Śi–#*‚wéSjP¼P†Šu”c+=BAq±­äaŲķ«UnÆB¦¹­PŲ¼1E²Ė-č Ud8ÜŲ÷« "OnĄ=ˆēń¦|ą‘ĻŻÅYZf•0Śū¤3ŪGåä7ėY·ŹŠĮ‹ł÷­£łćŽövĢą²0n½+Ŗž!>§ J2_ ĻņNFG­2;h’ż t’`_,…b3ČŁ4`›ø­yāö%Bi{Ū«e„ł$+ƒŠšYP©ęN‚µc¶‘œB qœć4öÓÉnqśēŠŸwfS”’÷Ld—`įsÜRArŪ¹„iµ‹™B€6Ž*Į±‰³,8.q[1ٽʰ˜$ā3óõ,¶×!C©v čjHŽ0§żŽµ­¦æ©#wbi91Å&ōv1įŗ¼¹£“Ł¤E$˜F­Ėč"™s·Ū½gȖÖÄmGcß Ž„T·Ā‹q_l„ŲČÉø4ˆOt8”ŽīŹSĶ±ŒšÓŅī•Ē—å:ąpM>ėĶć<łTFQoßF’œŅżŪ0m5»˜Üķ[Śŗķ ą»¶ …Ü2TÖ+$g#cėéV“ęņ¤ŖĄžµ•H'­= !&ÕŖ#f+xóņ’qŌvÉƱ_JHČŲ6žiK:øĒ «Žąč¶“Zµœru\œu؛J€Œ@aÖ““«¤·•t…FI#V—ÅĖż>ćĘO-²ĮØ£”÷Æ'ńg‰®#½’Ķü”ĄŪÓ5Ń*0æŗīaNrVmXś;Į~"-’Ö#—Žć5wÄ:>u§=ŠņRä‚Řć5ó€õۘn·<ħ÷wv®š’œīdŽf1õū՜q•iæfćxu0TźEOšĢģwžBJĻŪFÆĄÕĶZtßļ.āZ±»ŅO˜,I±Ž7 f²ü7¤ĒŖkÆ.ÅHĒ£`V|–wq¼QZI?ĘzWką]īŽŚ2 Ć,=*źb%ٲ”Fœ¤œQ×xcĀ×2ې-c’RÆĶr>=Ō/ü;rм/ ēqÅ} šŹīÓOšó Ń“ŗåyq^ń‹Ć׎ ×o.« [,×ZĀŽe 6Œėa&Ŗ¤–‡š]ųŗīXŻZ_1Ÿ'ńN—P™ą‹1ovĒNÕ¢C<7>ĪĮł®ƒĆž ×®,Ō¤~j±́YEĪNšŸātŹ.^^[X£&™w«ZM«Ę0•ĖOww¤źæfuuxĻąkß<¢Ē Ź‹©%Ē–ć’ q_ōīµg—L†b’);›Ķ7UVN•_‘P§ģmR:®§ ŖĒ.· oęF9a^ū8ŻÉ§ė1Å<äó^o¦[ŽX€¬ŪUpĘ2k®š~„խăaF ē=}kŹÅSjŸ³}G g'$÷čzķ¦]ųbĘāŚÓB?ר#ø8ƙ4Ūįm–Ē88Å}Eā_éWšhÓ¦ȌøĖ•ä^0šÖ,-¤°Ŗ7%8÷5ėZįM1½¤‚5 µoFņI³žÆ,ckƒJ²¶¼ŽI †P1÷—#5±«xćžėM¢²,HY’>FēŠ,­nu;@>Īź?¼Ā½ į‡ĀōÕrnJ“ łė®¦NŹNČįuœ"ŅWgó”ūyj“ųŸö™ńv¾–²A„|Ņt+ķ^;”܋V‘`Wō)ń‹öųwćOˆŗ½ßˆui“[fōuµ!71źXž=…~,žßßćų_ūNx›Į:MÓ_éŚDˆ¶÷`Ȍ¹ūń^¬q”e7EKnē U”:‹~Ē›xVėtĢY·!SŅŗCØB‘Ēlšį4ĒžĻ‘­ĖĢø8ķÅ\Ҙ‹’™ŌĘWšå«M7xģz÷ž§]2%ŚīgĘžEM„X˜TȻِ¹®>ŽāfÖĆy®±'tāŗł|Ci ģ»rFGÖ°tź]Xŗj 7jŝ7^ž )¬¤”F¼¾ģóŸ­TŅ|K缑ÜIęOŹHķė\V­>ķFIKą²ž§­eG9kÆŻžs“Ž•·ŌƽÅõź‰ļ”ė7zʛ$¤d]§“œÕ]öŅkē’&YbO˜z^{«Bņ[*ƀՍwk”~åŹóµ±éJž [qOåöOIµÖl'Ō™<Հdō~u-Lj,¬ļˆó|Ų½޵ć¶W „oo¼y«×!X‡µ9`”tløb-¦§£Ķwk}Ŗ›…lFWwĶŚ“žŁ(Ū’EŚK7Cķ^UcxÖŠ:+>é5VśņxŠŻšzŒÕ,+Ł2X'ĶcŃ&¹MēdŹTzµ:˜7m,0$WŸ[™d³%]²y94Ln’īm§”‡‡OKŽˆĒDŽŽęśŁn‚3mJ©ā=TXB»ļ3€G„r{’¼.}‰©5¢n“q޾QąŌSśŗVDŗņ·4V¦õüŗ„”V,ńSxC˶‰ć,#™›hŻĒ”\øŁŒ =3ƒ] ŵ®õ™Wł²Z‰Ę1\c>g¤ŗ‡nVķē6™P[§ÖŸ#­­”¦)‘Œ¹b3Į®/S’O±*ÄģrE5f‘„\ķ ‚3ڹ nŽ•‰Ó•¢ŻÕ²ĶqöŪH_ŗjfxĄä€ī:Švšą£68N~j³tĖoŠ²F;Õst{;E]š@Y.U²™ĮĒ­uśte-Œ1įT©ŸJę-.#:ŖE$\uĻŲrÖkå0;zά¹lu҃ä¾Ęiøņ¢6źĒFj9-Xam  łKōĶV8՗Ė,OCšŽšĶ¤’Śm pīŌÉŪŽø*Mģ;D’öėÅ]Ōć0#-·šfįjJlłśfŗ;hcšĶ’TŠŹUTV¦¢ß¼Ž?WU¶‰6*ņņ@®nņf“ęÉ&“~%܈¼A*ď!»Y/óK‡’ełłÆÓ¦q<~ye<ןžÕJ€|Øē‡®Ldd’5ĀUęv–ę޽gj‰ŗvĒ“j„…“°Ęń>Y䞧üj—µžŃ¼r *s»}j łCƗĻ&%€rM`¦ÜSZŹ/^us—ÖŻ?“嶀m,O|\ōśT—¦g—xžzӕݵ%‘›h9®¦"ŚN2ģA%³Ą®č'mĪ ^Nŵ™®’( c9®įƦ·šlŠŸ4KŒŸ§5įčGٱ*«2—5ŃÉ l¢25`#¹®Z®1źki{Gcеŗ-pS•lńŽ•„gy1Õ­QdBŸ˜gÆjĢńuŗXėńĒ‹æ9äJܶxl,šńcG˜Źgźj÷“¬s¹K›”“]†žĖÄßcx—e—ŒĘŗ(ģbņ×q°3õŖŚ&„ż§4ww $“#8Ą­×.HŻ‚sXT’Z3®0Rݚ¶–Ź„3`žłõ«Mt‰ĀŖ©é‘P”*œ¶9>Õ Ę̆\3ŒžÕėø¹=OMEhZ–ķ™v‚@Ņ…ä‘Óœ+Ē›•1Ī,nĢB០]xśf­A Éž®gRG÷jKö1 „ŻzŌV—^[€ŅgŌ¹žØĮYérAk©‰°. ÷ŪW-tŻJBŪ§ū£°ÅY·Ō­ó”żOJšėW…˜%Lœw¬åZ§DR§ -YŸ.Ÿ$`y¬NG\÷Ŗ“ič܆lb­Ēt$˜³MÜ՘%$ݱZÓ«;jsŌ£mL7“ņ[!AĻØØL’ĒŹĘ€żŃ]ÄŪ›¾ā«I&[jĮ»=¼fäµ& ­Ł”ŗ„ąac‹=NSįæ»VÜvGV€µ% *zņ*“”Ō|£i÷„ĖT„$Fś– åAGŃjģ«(ہźG5FY.3†cŒ š é•@$“Ęx©pvŠ•&ü‹Üj›¾xŌz®iakłdȳĘGPkSHÕŁFÓ°+bŪT·ņʏµC›JܦŽž—1,­īܓ%¬l]Ź+FvžƒqŽ5„„reUĻ(xeåf~i)»jˆ•6щr[›(v\-F%XDxģŲ®ƒģ6Ņżé¤o@Gõ§¦™b:;«wĮ5.¬b\i7¹Ė]mh6­‹§|©Īk>h›ƒö[Œv<× Įg ØŲųnŽ(Q±ē°¦±)nDØ7±ę!ö’ŹcźJŸēRŪĆo'ü»Ī¼wĶz¬BŲqå'>Ō¾\8Ȏ5ϰ¤±±_d„AŲóĶ?N³ŚDI?޶,tČPb+x’źŹp±©¦ Ž@ų «ž§¾±}bŹT¤Œō²•·qö¤šĶćPĶp{Šé|ʼn3¹x<Ó'š)ām‡Æ½ك†šϐ‡!­%ć¾ćÅBÖV„rTõęŗwYŁ‘ĘyÉē뙑— `{ƒUķū#7FėS™:\dƒ É čGJ»§Y_DG—"IźCV¤kĮū¢¹ī*xķ—;åū±ŠŃŌr[bŅl÷+“I>ō“²ĆĘüžÜÓ [[Ž:aŖ6,­µ™~MBH§f·$vR¶×iÓ=óP¾‘§:s|ŃóĒ5#\Ā’SŸEŖW7Qī8łk]VĘI[FˆäŅ,Cń|Iōę•|9 ‹˜µņ}zŃńē ś„\‰£e:ŒŽė޳nOfkŹ—B¢xVPŖhŻ¢•³Ä ½˜×!Ž\zƒŠ«$©–Łup£Üfšs¶¤9-“e¼=|>äĢ ÕYtkÄÉi‰8ź"“wĪSjj2.įŽWŠ… ½cØCĻ‚?hšźKRčŁF=6q€eĒ'&˜ÖWJĒĖrĄuĮ­ÓõēĖøŠEéŌŌé¦źØ¼¢°?ŻjnĻbqטÄ'RŒ €zšŽēUĪ~~ĘkPŚźØøh •ߌ‰€,åĮ£’ėbåVŚh>ĆYŌķ„ŪČĖÜm®‚ĒÅJ[l–“/j†ēRŠ1ŗĪf’xT©©Ü' eƒŲ£ŲöLµRĖVŽš/ڹĘ%ˆ’»šµmÆY);§“tŲk”Ye?=AÜķjÜż²}ė%$zYŗrėq*z#¦M{NuŪĻN¦:–Ņ’I8Žcķ³Šēķ¼Gl0>ĄØG<Ø?ŅÆĮāM>LyšqbxŻĒņÅKS[\Ł8[c Žē@+Į€M“弊yŚ-IœYźš\øaU¤u«Ö’ŁØZE»Ōb³SiźŁ.ļNQņÜxuČvņ‰‹Q?öēŠ©>½jI“­:Fć'#µS¼Š˜Ń&š7Чu¬ĢI¾jdÉ”é³b(sÜj„Ē…mŸ%`ąņnµR{mBŁw$2ƒģx¦Įy©Bņ„ĻŌÕÅÖčīT-mPMįH¶š²§tŖŅų`…łe”8É5£±©Ø’TX·L©2kwE{læ)Į š“ę¾$žI˜±čw6ų’Jb8ę­GƼČIę¶mu‹IŁķŁIć“WcMģa„ØHĒŽ¬g(ƉjT)Õ^ō]Ģ.1»r±#Ø©R!²¬<ÜÖŗč:kæīnœdp p)&šÄąf9Æo–«I-ÄēŻƒTø(ĄĮŖ[]Zć<ĘĶųńDśUĶÆßœ{µ]I.A“®ÜPé»퓲fÜĀR‘„õ#„I ²ló†÷¬h¤@‡.Ē|ŌŠāH×ęśŅ÷¢· ÅO”f[[g!lžxŖßŲīēt{€?„^Hræ)''éVaŠķ‡äŅm“ÉmĢøōY2¤)śŽõjÓJ•x Ųõö­H“2$õ&&„{:(¾:ÓNśX·;lģTL—?źäē8#52Į2µHļša×e†!xℇV…Ųy¤äć„7$—¼ŠTäõøųd—€Įų­+O$ØūŏZ®'³u H7) Ąļ‘Ę+78½˜’kFŽ‹M†×fw…«Kƒ6Ń*Ē 儑²ķMż:“K2ó‡pE+¾åĻ[+-Õ­øRcŒ° ĮȬ›Ż:ā`DĄv¬ŁłFVIĒ÷Ŗx5-Zņ° G~j¹¦–š“Ėu*Żi—)ÖŚ\vaÜÕqmr­“Āāŗ ]zżp²"8žiA¬ŁĢncdvØöϬJ/å•Ī_Ź™OpzÓC“gä8ćŚZZŁ]10K“Ųx©eŅŲp ŽCŪ QšzJ…Xė=.;™‘ó›ó«Öz­Ģl+ĒSVµ=>e‘‡ŁJēŃx¬å²uo›rŒ«”"Õ˧7Üß³ŌŃjØsĘWҵį‹rån¶9Ź­‘Q•øć„0øXl$ść5 –žé|ėi#¤½@ł™XtÉā«AcjĻĒ$ÖtHؘ¾•ZV܌GćĶZrZ2}šģ_ūNUAR˜ÓĖ!”®zRŁÜ+Äœ–¦¬¤@‡ń©ēWŌæg˭̱“…c…ÅL{\æw=Mt°YĒĮ.:sVRÕJcƒĮ¤ė-‰’v¹ĶX”†ĀŹGNMtw-2Æ,͌}j_ģpćpź9Ī:T)„Ėå&eÉĪĻj‡8Kf_“•µ-Ēq"8p1+cOšŁįŚŪ‘œ‘Ö±¢–ęŻNF’vėAŌP +{ V5 ŽÅÓ«š¢„Xt©­ā]”„Œtõ®zč1Ōę­ ņ€l#š5‹„–ÅŖ–Ż °U?;c=«[r£k/ė™¶»•Ļ;OŌÕČndWįsCXNœ£(Śö-\C1v"fUōõ„€Ģ€ƒó`w4A} $JZ­+Å![ØĒv£šKF‰PMŽ bLŪĄ1ąœU˜cŒŽĻnõ ”@I‘EgÜßJœBŹOcT¢å¢)µ Ķųv®FÕZ± ą€8ė\dśŅ8Ü >޵öŌŹpÄ“žEŖ°j×;Ą`1ąš}jnAqŒk”²ÖUä\ŗ€: ŻkZÖųI’`Ž9¬~ÆŹ÷/ā\عqmkŪŽŖø‰r#8„’ē÷d`qœU;‰›–  ĒÓNė©ĒR1NČeäŅ©7`{VeĶõŅóż{Uą†ą°ÉnO)“éҜģ‘” ŠėƒŠųŒÖˆ¤šĶĢEAB@äŲ«–Ž%~Y¢m§¾j .åĆoL v<Ö=֗"7Wę«ŲҘGR;ju–ŗžpåVV>½ĶmYĶ’PīĘ9'½y—’šČ8Éģ{Õ»gøv#|йķ\ļŒéX6Ōō¶½  O¦ź©>„*ł ^µĆÉŲ2KŽÄU›{›˜Õbɤ°Q^e,D¤­s­¤MĖŹc=ņ:Փ涐’©Ē„r)j· ”‹cØ©žĄaAå3©#Ö¢XJwÜOS—•ģt³9*v°Ę>ńčk2śycå”cڲŠ\ÄŁ27§Z‘e0²dąēҶTTla9ßaćSøL*7 u“ķœł®‡i“yo‚0>”ŌW2mˆö«åŽéœš³oµ€6É!®i µŌŖ0ĒžķZV[öį·© ½*NłĒaŠ9łC“ML›=)i3ßaā:¬d u9­3jJŒ1 ޹§Eoå’1Ī=k?j“»cåv1§]Aņänč§5µĶāČL‹•éÉ­v|ØM½:ā”*’>\מõ2؟ċJKfP[—cž®2@īµ ™¾ņńčkTD”‰ŒńU."<ż’lRSI‡,»Ś^Ė>l¬Ł lé2ĮwķĒ5ĶߣJт‡žRŽŚž9’w;ąs…¦¤#R>īęŌŖŹ2“ö;‰l•ŌģaĶe^Ł©$dqšw‡¤¾Q¶ā&Śz6+RXwdŽ„t5ÉĪ›“މЄµ‰ĢM¦ī'r)£GÉ'ädgµtig‘ƒSĄUN3ŒŽ0ko®ŪsØ>‡-o§Ī€ķV8ėZ–*čÉø`qĶnØU^zć­7‘ŹōļžµœńŌŚ5§„Ø“c4ćū¾Hw«›WpÜæ’^Ŗ”¾įĮ#ķV"%UA'Žł®w‹źlšņ[¢āĄ…sĻL ŌO ,  ĄĒZ’&>_‚=écóĆ"±x·öY¢ĀÅźōAc“ĒČī*ŹEŽK!鍵Z)[<1uf܎»^*^*OrÖ1W%Hį$ĒŌsO0€ągłŠÓD]Žõ49#Ü·³N8‰ü‰xh½·!Gęgg¹©¾XĄĻZMĖ”½óMč:ąć­'Zūać±g »äŪŽłéR(mĆi ŻńU°L䓎=©Āb$ļYĶ]hZ¶Ķ‰Ŗ@Ķ÷A-ź*qrŒ>We½\ūKyYAÅ )o¼Hµ±_»Z¢„×¶<²{T_KĮ™eĒÆjŚņa” 7Ģ„I „ XHŲjŌ$“fwmū¦Lz’HĄG抹¤©*Ģ8ę“`°³@BDøéĻ„\gÖ¦TŪŃ3E%öŃH32Œ|Łi²¬‡ Gē5~ŽØpėĒZ<’ `ǁėÅO³’Ų®x²•¾ģc@č}jģ2vŒ€½iÉWĄłsDˆ@;JŒÕ„:m™Jik`˜3ø„:Ż„„#8zš„y7—ņ»`z{Riś…Ø”G#Éå¶ÖžĘqÉŒ£'djģ^FęČī :ß# ēÆRzŌr¼3$RļAķTæ“­"Y61éėJØöa7N.Ö4Ū'$)©SœqĄ¬™uXV<ūĆÓF¦`ĻØ­ł*uf.QJÖ6d (?9&«OĮ7 >µ]/XØ#Ź<~4ų®„a€»T÷¤×c Š/©Få5›ų1SŪ\Kƒ3 îڒńœĘpĶÓ½c]\yYó®:ėI8Üē»NČé"»ƒ9ßSŅž­„‘"3S\½ż²·Īģ ķķWąŗ±ĄŚYX’Jå”#ŌźŒåÕhĮ (VtÆ o•°æŅ²ģ.ā_¹0p{VnßĶĮVہü&³ęKFhć-ĖqØ ÖĪ8#½H<ć=ķY²…„„v#t؅ķōD(Nžµ2£)|,#V Ip)y’Œ§•˜EćźÕ‡^źöUH`wvć…®—TšÖ± žÖŲP3÷³YĘŻ­©¬§ŹÆ}bĒ‚CŸaRä©É‹§sPH÷°1WƒŒTŃĪĶļTjŹxo3Juū¼˜X£`ǹļWŸGŌ… ™­d ŒēĻÉjÉ#®Å õ潓Āzż„‰ä¢ Œ®Ü°⢆Jœµ%dkR­EKž ģšĮŹĒĢP‡=ė·p ^ćā7šÄ6Ž’}ž@O5åW‡NƒPgŗz!ēZ޾4uSLē”^u>(ŲēŚ)“xĒØ&Ÿµ •=¢R©Ė¹īPųŹA:µź1Œs…éXŽ1ńŒś–¢ ±haQ„PzW•iŚōÓyrī ŽO­kŖ²€ēpĄéŒS’ו\Łø»;į½Bņ\ørøäg­kIø¹dH\3q»=+Ļü3|¶Ó‰%85ÖĻćŻĀÅš»ī1€:ļ\nœ”4–†ņp=w8Oˆ:]Å®Æ:‰™šN0Ż+žµ•!+¾BĒŲō5sÅ0ÓēøfÜĻ4ŒrĒĀŗæ‡ś>ƒ­é{Ÿå†sœ`ׄ9EEsu:3•Ü:Z~³Ś„2 ÜŅÉāTüøę“§DjĮų—£^h÷ģc ŠŽzjå,õ ³æšdūCg•č**ST×7CZe[HčĪ£Ä~#»’P±Č#«“\ī„w¾vi.{ö5™©]Į½V=Żs‘YäņO—)W÷=½©Ó«gR›¾§sįĶJÖ FB±ałVÜRč×2µ\MīĘqšń[k‹£8ŚÄ u’ėÖÅÅźF V#x1Q>d)Ó哏uŅt}źŌ›;É0G ןųßƱ¶ āÅĮ'+ޱ¬|A>š™™rr1W4łWŹņ(f”9©§Š« ó?Ąŗ˜(NĶ/Äę|K ŽĄ»Z6#µĘŽi·~>Ķ)>µōńŸØiŅ4źŪ$ĖĖ^k–°‰Vk51€Ź•ŁG FķjpVĀTO—”åI¢ĢmĈ’BHä‚zÖr®«kuĒJæķƒÅz–•{i4.E“Ɯą=?*Æ©č:ļļmķå‰#xŪÅmķ£+©#5B“q•‘•£źš­§•yn®p9"±õøŚ«!<Jź­ü؅łČ '#ƒWbųw~éŗKŌRyJĖß¶›ń–²wg o4¦5¦XŌzõĶ_·’S‰˜ńœ×emšłģšYēr2Ņi¾¶¶ģĖĄåœęŸ²rz2½¤ ¶±äņ~ō…Š7”æZ×Ńü5ØÜCę°1ĄŻūę½t[“:$‹^E­ĆÖ3 MBīų (Š]ƒŗ§$® “jh“g˜iś ­šBwzg5éžҬa÷t@ ĮPµ§§†tŪŲąü¹ą4–?t6ķ§k[Ū€Yq·<L×5|M¬kJ•Y½#s;U–ÖŹa›ģ±“’Ī@$TZf„„«KÓ4¤äįĘ++ö†;KŲōŪ[˜n„*ˆ[vĆčĒÖ¼¶ĒI֙‹DJ uY)żmJ—5'qF‡¾ż¶ˆścJk[»LDčN3ŒĶs÷ŗ†„¦ßČÕŚčÉ^kį-3ÄU…Ō”S“Žõčŗ]ķɵū<ńIә½qÓ©ZwE§©ÜćB :RWō3|CŖų¢źĶŒS-½»Cµqךv­;ƒ=Ś6ļłäłÆHŽ4„/q‰»1¤Ö4X­¢YTXŲd„nkj4)ŽÖ×ĢŹ¶"Vŗüē§EŌ+Mu¹ŗąć5jĖHµTIšŲūŅH•t„,¢žErFējöD’øIq’+·Ų»Y3‘VÖī÷+iŚ5½Ģ,°Ū¹ļ*’=~ėSĘŅĮ Ž g/M±ńMŽń«‡°Ą­ķXÕ.ܤŗœp/u=’ćÄA/TvS›ūĢŹŠ¼k?™=Ū1€1õ®Ā-1.ķÖÕ®b†B6‚ē4±]ŽĘ …‘zQĮĖĖ'm³4’+AåŌĘR¤ÆėŠģ†¤ō›÷KV?µ+HŽ[f†łgcšm“Z¾›q²=*yŗ›±[¾ŸSŚ ó&7FÉÅmj:µœŸj†yr ŌRĢ*b)æŻ;Æ?ČU0Ń”U75gŻŚfÆØF¬nō² Æ>dUĘüIŌ`[°`…ÕdŖ¦?„w×¾$Ö!ƒ,Ŗń“ĒĶd.æk,§ķztL¾lØ#šÆ2x…ŪžKÉ„ś\ėT'?z0É’™ä—’%ŶQ1Ü}Ś<5©Ķ¦]&xć<»½v?ōވM”āGUVהxŽßS¶™<ėwLąŽ“O™ĘŌētuжÓV}™čOā-B{҆{(ō/éõ­]'W†9¶æ—q fŚ0?ņ+nģĮåżš4ĄĮb¼Öž®2ibÕ£QæŠå嬓Wž¾fó”NŪ#®ų‹eį[‹_:9)XœˆŲšó²H³»[“ ĶŽ+pA±a#Ą™qgpuqŗÉ/LMzŲZ’•£9_äyӂƒ÷41µµČč¢!ŗu©ģ ½P„di20HlÖęį½f[²›$Ø$•ėōĶ^Āś»Mˆ¬ŚŲz™½ź[{Ź LZŁŌ±m5õØŪ$HĻ_\TZ}ż†”Øż†[Y÷¾P€ wšjM!V3×ń®ĆĀĪŃ|Ė[žóķ6—4½ßÄójb9„Ėndp1|)·Ō†mÖęŲIČ'·įZ~ų k5ĖGq«ŗ{,8?Ž+×ü5ā»{såĖl§+€@é]O†ž ŻV)m·+7ĢƵcSJüÆCE‡®½č·Źy炿gO ŚJ&™īnß9]’*×uØ|(Ž d6-n‘ØįÆtšĢCģ $źŻ*¶æ}kj$Ft8<ą+Ū†›§Ļ7oĄń*bź¹rīxž™įAi¦2M)ĪqŅøGljį›Ū‹hŻp„Œ“ҽdxŽŹ}BKo9N2:õƔą§Ž ńE×Ćų·0<ŚĘ©»Ģ•W ÷‰÷Æ ­U]©Tzyž„:Õ)¤źĆGä|G’{ż¤ōk·žĘҵ½b vÖ>ZŹėdk&z¶==+ņķ¼Y}®źŗ†§Æ]Ü^ŽÜ™¦»1ķ’y5kö¶šĘ³įoˆVZķļŚõ\oÕ‰óļ^o¦Z–³‘·žµÕ„ĮŅž#Ö]śżē\uY·MiŻ>ķ„Õ0.幐oŽŁµwƗ1K¼³Ŗ.2uBåD ™_޹攖Y’rĄ–n8ÆI¤ćfc ø³·³KŗŌJė.ĪBžžµ—²"ˆ£f%9ĖT:M„»…¤™9"©$ķ5ÄĻ2’pO8ĶD"āōwBž²ęBė*Ż…-–é×Ö±īŪŻ,¢¦ŌVat„üģ?ˆ`‰œuĮ'$³bŗ#+ŁÜĪÖz3_K¾’ä‹eźÜž3ZŚ“pŁi^K«¼óŌW9ὑź¹f “ŸQ]'Šęó›t{K²ądÖ5,•¶5²”źp“9k½Ŗ¤ŁB00iü=“hØ„vąœU™6Ī„™†ÓĘjÅSī\­kŽš„ķ ¹ [Ž*mŅd‰ŅGó¤zVj‰4)ŖņĆi'µd[^ė0ź’Gj|Ā;ąā³Te­“••å·‘«āń …ź`ģ”üŌŗV©=ŻÄa§p°{V'ˆ–k‘¹%glĶ]Š­.¢Ē  :”­OŽÜŖU䄏¶= ,Š łŁČ|֣ݘl-¶‰,ĄtŠšbXÄ,6ą;š–ćøW$ųéŸJó4ō=NwĖdi­ĀĶĀ®ņV–›zÉĀ„ŃTmÉ~µaäE§4ܒ¼ŽzūUĶ?QImšč±ē–Ā’ZĀ“tµ‚žŚ#ųKā…l¾^ķY"ßĢ*‘šņkŗńt7šLQ[J†`Ł?ŽZē“ėU[Ā›ņPn5ŁBŖpQJÖ1œ™V4Ę#B7'Š]C÷Q,x"I==+MmˆæūB…1(Ę<Ÿzq³3ܼÄ“Ålåc:”ä×¼Ģ[i^+€Čučjżźķ‡Ķä8Ś›yoåŻeņŹæ•.§;¼Bƒ)¾“>W±1•D‹z~|ȝ]·}Ӄں 'MIµ”ø&F0Iļ\nrlf3L”‘Ęō56£«ÜÜ©6rK¢Žżźm«Q<¾&öč\ń°·õȋs>~f'½gA<¼’£ĶA£Ćvė<×. ČsÉėV­÷Ģj:ę¦0kAs©?ušš=“–W{ę}ŃÜt9~•VżÅ¶¬.a`;NzČÕõ{‡øXŠ•HĒśRZßļL³giČ^Ł­:”§Q-MŸx†Iō«{oŸĢ#vGA\œZ…Ū[łR9efüjię{ėҬ‹č8üźhtöm>I!hÖUĪÜӄU¬e*Ī[–£²ņcIQݼÕɲ¼a„łŖ—–Å~ī$Q×5£eö– ²|Ų+gMÓŚK7]¤“‡Ÿ§­h„ČīŁjK•m`·ˆ@źSŽ·ŠČśC*’$+ĮõśšÜŌt8 ĮZ!óŖž+O”-Ę Ź¹!sW)©jŽ_g$ķ%Ŗ9{ŁgYŠŖ\w«ńø!vżŻ¹śÕķsMYoäu!wu½c^)µ”Ē“»·µmŠQ1qq՛p ™V#pŠÕ°•eP嘶x×vYaƒnĮĻó­Ÿ]ä; 0+:°Ó˜é…E¢,ų’;2Ķ%1Ÿ—< ź<zĻe“¾KT615āNSr—åŠĒŅÖFyšŚA'ž8¬$•HrĖ”tļ s_C°’erf“psÅO¤]ÜŪ‰"_+”! ’:ē4Łäm”Œõ­8Ž6€$œŠW ©øé¹ÕNwÖ,HćžMBF™¾w]Ū—ŽkGK‡ŁdV›÷Dć%°jī¬öĶ”E:ą\ŗģ ¼]DĘĘ?$¦(|Ę@Ż9Éā„ŌQWeFƒ»w<ŅŪTšßV[ee`9s]ķóNö,jD;—5þņjždɰł›“Œf» ~ąŪYZ,¤Ē"®ŻŖy5^IY¦å>VÖÄ_Ł‘ßJļu"$ѝä7Æ §iϧjhcˆvąćœVv•v%Õ$ŒŲŒżīƳ ³ pÓå£rw|½ćWŹķ{Ų™;¤ŅŌļ|3„›-2[“@a$Œj׎ņ#œuµs¾ ½–īń4Ū›—µ¶•p6žkµ_Śm¹›¾zęzæxź§(ØŁ¦bKs!#ļ;cІK©z1„¾…+L®+1£¹•łWć§õ±„l|[“l¾— øi€=ł«?š‘" `ÜqX­ir[[ō©­t©Ėč@÷©”a-¼%8ÆuŲŲ‡Ä÷nGśĢ08« ­\H§zø±9ĶeGe,xؘąö«¶Z}܎>BAΚÖʉĪz­śÉĆ+ƽ1ķaøłƒÉ“Óž+ZP Gqš·›å¦ 1ŲRx˜Ēf%ŗ0…€AŸ7ŒtÅ7䍰»™‡½uu¬dŹhŲé¶2›ū“RńpźJ£;Ł] ™åĄRé[v¶“”JčZ×KŠM¹f8ćm)øµ„ķYWdńq–‰Ź”’³3-į”™$ŹŽø§Éqy{bV_|V¢jp·Ėr±éµjĪGóéóiŗé+“fØ3—wŌe8ĖRCi|ćēLŸR+Ƃ(Āó“·=*m™EŲG•Ÿ×#ŃŲI#”µÓ/ źõ©†‡8„øęŗ(Rul›}©.QĘš8ęŸÖ؟dÖ²f(ŃŠZąd„]*PTÜČĒŚ¶`Qŗr>ŒX4*AϹ"‡ZlmE- ‚EjHõļS›©mŗŪ=˜ ŁW ųØĻlŠrBŒē æŌÓU­$G+kFe[źņ|ß ÉĪ:Õøēŗ‘N#NqŒÕß³Ą„qc>£«1¢z0:u¤Ü>Ź©[S/ĶøUåB=iÆvźXŽ j¼°°#å śU Č`hóŪ“ÅT%£DMIj™R;¹Ą2zc5n9'`>v ģkāŻĆ|Œē0j¼­t‹»²õ»¦šŠšuz6t»īqę6_˜ęš&øG%>„g5ČĶy$+‰'U Żš£&¼Øßė˜žœ JŸCG.ĢļŅi\mĞćÖØ]YĪĖ•2׃\Šk` ‰&ē„\ÓüC"“ƒ+ŒzÕ(µ±3‡wc]”¼…NZ\öMÓ Ć;ņ;öŖPų‰HĆFĒėVF©oq…”#Æ¢ŻZ#ßZ^åČ䕀ć¾j‘žė#h_bjˆøų Ī3œŌ–÷‡ĢϜĄwrét8É­Ėßh»Qņ»cЊš+Épź¤ūŠm•õ›gĢ—o”8«fM4‘¶ąg ĶÉ-Ķe²-öņdIżŽō KFQ‰ø5a匁å:·åMó¤Ūƒ°=(U<ÉPī@Š[!gB®zÓH†BČ *Ņ4x>b„1Ķ‘+*±öÅ>bR¾ˆH ‚p?x±ļV¢Ó”Œ&×ćéU£’ÉŪ _§f B¾O±ėõ§v5­Ė°iP\Ž»£ū ƒŹIÓ§ČuEŲ™Oćžx« «ØOć'Ž”Źcå]·Ó¢ŽA¾91źxęÆĮm ƒ"ž5q¬D UFµįU†xėP”ī;ÅčΉķC}Ł[™¦Ė„ŹŃēĪcŸ~•‹¢ī×>õ©§\‚€ 3źÜÕ·5Ōaq&ÓgŒa¤$g©5$6ny[źqĶ\óĮ†Ü~µ ]:·å˜”N§AJŒ^’4Į(żäQ7éQÉ¢Zõ6Ńäg,Z‰U!˜)­jŁjpŗaŽiŗÕRŌµ‡§m „Ņ-ČāĒ•"čöäTŽĒŠŲy£ĘTÆĶŪ¹Ŗ“ī=ōķDjO©±c.mŁq ŻŠī¤M%7Ź}Nj{ˆåcÄÅH鞔ĮŠĄÄÜGjŪŚ3?c„±é‹܏( `b˜EÜC!åŻčzR™$N>ŠN;ƒU.u+‹rFę“hž%¦“~e)ņ»&^Šźį@Ż#óĶMņw²H}Å`~&`“ʉ‘€@4„­®XøXČģF*ycÕX©óŚėS”ŠžŌŒI0ĄT­6›(¦Ńõā¹K‹)¼ÜĆ8omŌß*ö3‡V$w¤”ü¬JqjÓGTśm„ƘeIĒJŽm Źžęę.»×?ߖ@8«Ö×Ėž Øūō^¦×ūŹ³Ż\²4-V3øLv¬Cż¹mĘI īj]N]ł[–8č3ZVš“Ŗć'w©aY·'¤’c’’W„¬7ūföÄšīÕińėz|‘•ø·Ģzšæżœń°’%č9Øo,lfŒ²…ON*#ģöWLrRvēWEw·ŅļŲž(Ū¦I4’ųGЌĒpƒœ|£­VžĻXšŃe›·č%ŗŒ’ĖUĮäõµ¦Õ“øįGUtY:uÄćŽ:sM :1ż*ÄœĖ÷”vć¦ÓS§ˆ-Z8#‚JŌ9Ķ|Q*z'÷™’ič$Y}F)-äÜ?=2kU§Ņ/Ė/–Ägę8ÅU–Ā6Åw`ćƒŅ§ŪĮķ£¦ćŗ m.Į¶ī$tZ­u¦Ä„{qާ­]TžŻ†ž1Ÿž½,Ņ\>Ė(Ü:ØĶh¦ŽļB\VČùµx˜óĻŠl-:°!ŸÆjÜUlö·ńUƤE“åā'ż®æ…•ī‚R”WqŠKĪ7E\·ŗ™q>sƒŠŒb¦{Uč®ÄžF M¬“.m]šń8ä+cŠĖ"Ø óśf³””üŹzęÆĮӕ\u„u°÷ģ˜“·“ėšÆ-ŒĀN`1WG˜ ßÓ֞—² Ć"ć¾x5jdøŲ£n·¶Ķ˜™‘»į«oLׯ !eupź*”×10źC‘œ*„ą39äsS:TęµEŖÕ ĻFŅu«[•Śūŗ`ŠŃšÖŅāąĒc^Eę<pHćŖż–°ń2@IÅqĖ 8ėM›:°š÷ŃŻ^谖&,”9ĘEgO§MUAlŒäU l`L»Čė[o‰lēm²­ėŠÆkZ?¹+ ib‡Ź0Ė“žNV‘mÉl 8÷ÓĮ5…Ņ‚²#vė‹+R1ĢŃ \:¢jįŖĆC™KŻzŌ‘\: 4EO³Ž\¾°`I‰øĒCYwVw) ;Kdz×\’ÜĮÉķbśL»†É$SŲZQßK cĢen8Śk—H«€®*?6u9Ęįī):)«HÆhҲgk§j‰#…Üc'ūĘ“ÄŅm,Œ@®Öķr ĘiŲźMüŽŪ}+žtŲ:!4Õ„¹Ō¤Źąy +9ö¶‰×*Q‰¬Ė}FŽxłP®ėŽ{TS Œ WIī)G™yŹź[žÜG–Ųć֙©ŃŌØ>ƒ5e‰`½VęŚS·*­ŲM¾įÉ”ŅF¬LdƒźN)‘jOnŁŽn94ŪŪY•‹Ē÷'޲n¤nÉ¢rÉĄ­yT•·#žQŪCljČēpuŻÓ­=u °7C"b¹RÉŪä‘ā|ć„5a½‰Šfu#iÅG³¶‹ń.5[՝‰ÕēTÄŹ[Ō‘AÖćŲÕ`W%Õśą9-»ŒÕ“?½!@ōõ§õu×CUZžgfuUuČŪŅ«=õ“Ē-€:z×)ø’ uĶCē:|„wsG²&N-“bŅP¢9J2ŒŅ:ކ̹ļw®NÖW8 ¹éZÖWRFƒē-õ©ä}u-rÅnĪ›Nææ„9;}}žµŠiŚ„L>qĖõƤņˌ6G½^…¤B§qĻ`+'E_@ö&z l¬£žÜž)#žT¶ąk†±½»Ž\•8•½¦ßHŃį¢äóXĪF°ičt±Mūä’SLžŅ9Įl6qŠU2F‘†Óڧ–å•ČBtę²—ĆøåMI{Č”}¦(?w {ŸJ‚==W¦høžI$÷Ŗā[e”ŸĘ¶uģ¬Łœh“ī¶2#±$`°Ę8ę›-‰Uź= mż‚6ūĒjē֝ż—ü¬Ņ7—Š[\o'ļ’Ķ1•ėžõnÖYų ć­hɧ۫|ūˆ^FNjKt‡iXĻæ­Ŗ{©ÉüF5üžRŠn'Ž:VtØÓ³@½ųļ]·FkŒT)glŠÜ[ėUé-L½™ŹEŖpčį@ķW­gv?rkfź8<³–1ŽG^õ‘:ŚĘĢü±ėVŖ©+(É= Źą‘™ć„$“²/ ?*ʑ˘n#÷-Ö§Š †} ž»æ•”RՔ”'ж5 ";vµō£ōf’WŁXH„É$“ß½+īŲ@Eē„A$ģŠNķ¤ō¬SWŽŲfiŃ}·sWō&Uģn£Mœg' ŅŖ9Či“õ®÷Ę6Ń1¬Ē±ćT’į0¹—g“Ž1R𫱤qjĢōė—€y5 čFąxćęÆ)> ׄK2ƒ°=jŵ÷‰ä“å>X##µŁó’ŗEG¶=9L›ø<ė@É_¾Aģ}«Ń.5 GŸ*6:g„u\H!ć21T€+†’z¢„UZ×.ǁ&Cųõ«pˆŹ|ҲŽŲ¬Ų&łNųBq÷‹åVÕ¢”`r3’i:Jöd*®Ś»Śp7ķdŅŚ?—g‰TūS≀É_® €LlŁ­āŅ\¦7iŻ0’ģŒ…^ÜŌ–·QœėŽęØŻķ¤{VEėN¬B£źj½Œd“o.¬ī-.ķŻ6«)`)—C/ń±8ĻŽÆ8šīövĶ =rĻåR[kw±ķtD·9cĶen/FhÜj+Hģ®ā(ė¶F\tĮ„[Ń&Gą÷&°ō­t¹Ł?–Ļ×;Ŗķō¶ÓA–3ļZBŖ½¤Œ§Np^ė.OØąB zՍ7Y02:ć°Ļjäī–Eˆł/ø”qq:Ę»ƒ(ļĘ1WVņVAMØ«¶z½®­jūB¾ OÜFB2¹'’kČķ/¼©‹‰rt­ė-b'Œ+Kó°ĪA®GžēK|é;ķŌqȟ#ąõʶ+2ēķvĢY&g@2Esöś²Ūą¤ądõ'­i&µg4X’uÜzōÅhŖø«=ŒÜ.侀„źa×d”2{ō«²O7Ééė\|ŹKŪɑ׭VK‰ć”•ŗTnƒq­U;ūŠ3ö—V‘Ł]Ā%īd^XÉ»(8?C¢ź“C(2¼RÆzé ÕtiįĆC,Sc–VŹŃķåMņ“'„R\šzœœ2Ļģc"Š–qęsĮ$w­+Æ!ņČįĮP¤‘ÜÕČm¼ła…Ł’ŻÅJÆeŹĘ©ßTpöVrī̆p{škZŹĪhłI$MĘŗ«ūlM,Q¶>č }ź™’ߗ,G”­ae¢›žb(lõP£‚P ī"“4{K©gĪė‘LžÖņÕv™§µI¦kBY8N1š™S²ÕBüŪŻąŁķōū„U [ W§ŻÜłž+ņ*²}īõóSMŖ&¢%‚‰×Ø*™­kėmµ·aŲcnßʳ£ķiOŻÕUa “½ķ&ńK‹MFaę)œs\Żę @,Šź“?x[Ūu4ofČ3‚åZzæĀ«Øōę–-Ag‘Ac^ækN‹–­_ärsū5f’ĢóX50’䳑č t_ˆü›l#m' „s:ż„¶43[ø‘OåKįČČøÉ·yF3ģ+ŸNźĶ–qkŻeż{\’Bv1b{äē5“-Χ,gd7˜äŖ+Ņ|.ŚzGūŪKPIĪēPMzoƒuĶ>Ņ×Ė‚(QńĘ#\W:ō#.I»z›Ō”UAŹ ēĒŗżüĀs óąēҰg¹E|(%½ÅzWķ[«ć1Ø1W`ņ c§A\G†K”½ #Ø85éԜ"¹įšžUT«t÷1”æĪõa€F2+BŗĻäŽH\ ŚÕt ƒ-ćFpq\¤‚XēdIv‡ į=`ļälŌā¹&µmØĻē2|ÆBZÓÓįÕ5)Ö+Xd‘S€1łÕĶM:ŽÜ Ū’Ięŗo źÅx<…‘¢Ŗ½HR:+A֒‹Zw8ĻhśÖ–ķPŗ‡ū§?įRé“%¦˜%‘Õåa„«×ük 𧆿wjóNT»ŠWĪ~4³æ“¼ņŻ%‘¹č+,=ZuéūHčū¬'B£„-Ėß›i„¦5z•£¦x¦;©Ó{¾[ ó—·øø|2’=xUĶ6Źā)ÕĄ@G\°­*%»Ń‘MIł£»ńN¼ m¦VP˜×Øė)-Ć0wnŁĻZŲÕ“–ž×̚TÜG5bYé‚_ŽNØäpy„® 2r÷īB·aŪÆ*2{×¢ü&ńŔ«ĖyÅbų~ĒAX¾d~稷Ś|s’”Āo/zĀŖ…];)Ōt䚉č¾'Õ[\·HEU€ĖŅøgƱüÖņļ”œ¾©Ķ}­\ĘĖiG©ŖhšßŚ¢“×µg*q匮¼ĮĀ3—3ѳ¢š—n/Ż™®ą€*œ=k–ų“į‹Ķ7RŚū$\}änÕŃĻsŖ)XķĢĮ” A©ŻjbŲ5āyŲ7ZĀ›®§uŃ®"4œW,õüĪ'D°¹ T×-ŽŗĖX$Äq²Ē±F)&¢a,Ā©8§[µŽ65‹'®źéxxÉŽDĘ­—&†øŃōÖ·Ż'Ī_Ø&²u­ Okˆ…»-ŗēęcĶ=…üI‘a謯J{æīÅ#fėZŅ…“‘ĶV„Ż‘±¦é¶6—ØŽo‘Üš+®¶ŌtūxĀEœ¤õĢ`ו nšVHS”'qėķZ6nźČĘtP>óJÜŗA‘½j\ō ŪD66(pUļ<\Æ#ÓäD.2éO³æ‰ķ p8ž72×\pšäųlyļRO{›ö~3’ŚO&ÖÕß±ŻŠV„ljõģŲ,¶öĄ©9’¼ęāŽņŅäĻ$Ōŗ§¤ÓÆ ¼»É ń†=j/z,ÓŚóĘÉ$hjŽ«ņķ»å†JqW/üE¬%«o/óę©\ĆŖĻtŸeKd‚3€Å;UÓÆå,;*µtʍŻģsūk.[‰a­1U’I²ŻH=*Ģž.““0łP‚8,:ŸĘ¹]cI)c·› “Y6:£=ŠDµ•YøÉć5ĖR„Ÿ¼®uŅ&­3²Ō5ˆ„`šIåćŠÖē…µ'™XˆźłėY~š4hĀ]Fåg=Ąõo ŪxgOP“ §L«ąā¹e„Øõœ¬į‰§ )+²†•Ŗ“I¶ft@;ŠŽšöÆż”v¶vó!\ņIĄZŅÕģ<+©Śl³¼03 Fkžš×‚^ßV’ā ɚ2r5ÅyÕ²˜æ~”Æźzó&½ŹhśĄ±m%<Ō¶‘Jąņ?:±ä?Ś [ ĮČ® @’[m1ą–āįS$µhhšĘ—§JĀY#,ŻÉę½L&**j“ŅĒ‘ŠĀĪ„G8ėsŠn<7¦jVä“~[㪚ćüMąK(~tizƒš»gć»4B‰e=qš½£ų›ūBēŹņĮSĒZō*ĒZ¼ŠoŠą¦±“„ī6¾g›É¢é–׌ØĄ©ē1ąÕiś]ģ±$s«ł|;”ė^ن“mF3%Å¢3“œŽ*ö™ą­ßżMŖü݉®uĆš~õ$—Žt,źVåŖŪūŸ”ų¢_®įu“ć”NMiYü=Š­Ńb¹‰„ŗŻkÜo¼+dŽ$·o„U»Š×  –ŪŅ“Y-X­RfrĶ”¾Ńå6šÅ“†·ŃąX»15¢m<=i>ųģ-”“įFV»öŅ`Ś«Óžµē^:š½į»’ę9ȏ®Ó\xĢ6&Œ9©A6m‡ÅR«.J³võg?ć NŹ'¬ˆ…WĒ5ĘXk 5ŃĒ1ŸÖ¶u ³£\ŽoU\“»¦+ńžµą_Ä÷ˆtŪLšWķ ø¦kē±½J0rÄĖ—×CŚ£‚„)Zž§ iUŹ,ČT±ź¹é[·0é–: ķq`*ŒńÓé^5ៈŽ·W{-zŚņ"»“9żkē’Ś?öˆŃķ|Bö£P’G‡†ŻøĒ×½y˜n$†"žŹjVķžGE|ŗ4“z\÷ū­bÖo…‰¶Į»Œ÷ō/Į .[e&HՈØ×ę~£ūLxHššČm­ęŌ€ąLüŹøžŚE¬É±2+¹­²ą^“+»,L`Ū]-’ (ÅĮįäģŸ[Ÿ®ß¼E«č–Hšh{ŒįĒŹ+ĆŒ‘ö—Ē?\׌üeųēkv²„ļŠ-ƒ©"5†RĄļž+Äx^#’„IE®šŪī8Øa>§ $ŸæSķæxĀĒLWšmF7øv lŠņϊ_“f§„ļ4ķ&åįó”ĘÓHW*§®ļ_›Ÿ>/kóÜĶ“©Ą±±É™ä%æ:ńŻsĞ*ÕļZ4×cši;#'ŸĘ¾ƒ,ҼÆŪtqUĘNIÅéå¹oö¢ÓÄ?u fieŗŠI_/#|ĶŽNkĀ®^Ņ96ØÅĻ˚ģĄŃ¶1žŽõœœ§¾ęŠ6z2zŪģqJÆpģ#CĮžUē„Ģ×ĮĒ=«Š~ 4²i,€4»’:ā¼źt 0<5½»]™Ō–¶¹< GĶ–«±.ņ¬ąTć1ĶX°?g–/0Ÿ-xČ<Ö¼JļĀ©ąP.UŠäü§Æ5­G”©4š=oO÷śi’Ų1’Ą#½bß[]JBL$Rw׌¹ų•ōŻO`ßäL×}.¦—& ±Ÿ“š vÆ:¬g Ł­F •Kr?TCk¬jŽĢœąö«7XŠ+æ Ą#½Oyeo›F1\ī§{ŗĮćftįO½G-ĀO•Z ”ØÜ“7/äe&< ōĒsW|9ršÜ .˜fL.ąkŚß¼gfĘUˆėM;€ŁēŽ=+§–ń±•9;ݳŅu øŅÄ,apz–Ę1LÓ­ĖŪŹˆvŻß…pŠO8*YŻ“•¹{¤E<”‘7d|ĶDZG‘ Ž5mŅ6ļJėjn)u9\]ŪE+é «q“±>ńZ‚é„kv‰HĄsŚ·?³“³e›’Ŗ60”øx ī„Ī–ˆ§ŹŽzdņĀ…Ż#0䚽efŻĻ Åt-²Ś°+–ʬ«T2—MĄÓjŖ 3Q{I˜r=Ķ„ĒĶóÜ¢ÆĮxŅa<¶Uaųf›Ø€åķĪ:¦ZČį‚Ž 5ŗi­ŠŒ\4LŠø"+a0žĪ :ÓYa!ddV8ߜqŠ’Ž śK–9ޜŸN1\Ռ­ü€KaŗÖRNꎤ“±»Æ\*†”:[=I¦éJĶęæŻ#rŽŌŲ“ØÜ$lYĘ2;V†™$V°ĖĪvĘV÷„{+Eƒ\Ś32ź'iä Ž+;Q³Ž[s+>d'Ļ55Ö¤ę&†5łƒ ³wčĄeŻ"žX Šø9E]˜NŃΦķ W‚*߇ k‰š§ųķ[zĶ»Ū³¢©lqĶAą»9"¼¶隼”āįs–1•łQÖhŸbµ·‘o#y&8QYw–ģӗƒr)'ƒœVę³i¶ÄĶ ,ää{{Ó¬¢iyŽ7ł‡Č§'ēF«oCŖJ¤cfŽ;ķŪ\Ėƒ/±ķZ:öōß"2…ČJŸĒ–ł+w`rņ|́¹¬ż9¤“Ód3A“ēµt5¢a)§c§Ó¦†t,$ņŠ ŻĒµmĖ翃 ”¾Āø>äłC0+Įķ^…dĀOŪńü­¹”õ&¼źŹ1µŃŪy;E’£6¢”6ł6ńü¾ķXšķėM­ĘebX ćҦ2å€*[¦ßJ««Y·Ś’~@80§»šĪÆ,ylĶķ ģÖŖ|Ä.×<īZ‰`ia}‡8U¬{™Ž;ø-Ō–oE8®’ķ Ą¹]‡qčiĪWŲŹ5#°ß ²rŻ%;š JŒ×Ŗ FĒÉēvz|—O2:±=Ił«ØŽ85c,y` ®Gļ3ŗ”åĖxź_Ó¤„ɇAĻ­iˆ#`Å>®V;•…¾i£SŠ5‹tPZv?īŒW»*rz¦|å9ĀĒAäL@Čć„KåIĢ€\„߈-Įł$›Åeßx€Čx7ŌńIP”·2s‚z#æ/ŻŅK ąv5Ūģ¢?5Č\zW˜]j²œŖŻRø½•ņ7œc±­·cußCÕ»,ŲGÅs1ÄźøŸzŌÓ÷ĮĪ}†jīČÓtjĆ;¼A>¾Õgķ@Ę õŖ±@Ī™ FīœÓ'µ™G*HØØi=Ē5±±ÖÅg+Ž0„O£ óߎz“\°Ž0Až”ų]Ōē5Ļ*}ć4Վ¤k`Ģ@éĶA>«.ķ˜śÖ< OAÉéVŠ«śTE5¹2§„Ę]ź·FRHtżź‰ÕnīRsמµ¤a§åtØßO•˜f<uāŗ9Œ"šŃ”†½z£‰©­õūąüĢqéŒTé£9qøžG,>ÖˆćŽiņÄ„-n[±ÖårHćuhU¼¼•BON՜¶DA ¬ĆŸ½SĒl„ŽFx5+• \­Ż"i5ł AĒBŠEׄ‘3åģ'ž)²ŁĘ!ø$ōķUn-Ńł¹5vƒŠĀśš¶ZõÜJ6¹Ē׫cāv)‡u$z’r_gF\†'4æf‹ ¹±©öP)ĪvŠōu«yBäŲźEY}B'm«„>Ć瑨\bjµmu"¾¾^ʎ[FWZå½ć m‘æZ6ŗ‹wJŲĒ® p–÷˜^$(ĒÖ¤7…żīh”ŗåmŁč‘jn(źj;¹C(a‚OLzW ōŒąŠƒśVš]\yY\°±Ęiņr™Jfń2oÄfHŪÜdUƒă¬rqĪ~R+›}Jd#÷r®jՎ·‡ÄŖcoZm²¢Æ¹„s¦7%ķœwłOÓą,6‰clu5«„jѶĶ9?•jI4E–ē#­ æF‚T:ÜĮ“Ó.ĮĻbÜŌč—ņ–dŽ˜Ö aæ(aŠf®AvńF7Ĭ¤sž†“}JIµdžó܎7ĄAĒRE$–Œų8F=kz[ķ5‰2Ååē‚JĒG»·ŻlcŲ÷©SŠŽč‰Ńžé]œüÖń:fŃ[¶)±Ū_ 1[žˆ!06Ó× ScÓ®"Q²åĪJ·n÷ÓZŻ2ŒhLŽA·ŒŽ•”k1 ņŲ5bŽi!\† Üֈ’ŽAÉÄqÖ³kM#}īGcqŠ 9ézŲ·“d²Ż}«Ōle*LR»šĢ5h˜¬%›µZ{Hķ-ŅIøįA> T~JNčćĻZ唼Ō`œąż*õ–Æ"Œc®*# ‹żŪѳaō›R¹d#>•RM)T¶ĀĖŽF*Żž»6Č6’95~-^ɔ˚=„Hæy*Kh3žkyÖLƘŁ«ö·ś‚¢Ę)P9,2kR[ŪWūÆ$f«Ź^HŲE&ŠGQUĻt{H=ĖŚmĒ™ŁöFO\œTļ§ZJŲ¤Ÿr·¶vø|õݚÆgquo1XšYAē$ŌJZÓfŠ„)joßéČXķŒōĒDZ¤'* cŒ–«öWŹ€HžYōŻÖ’ņ1±‡ŹIč3WNn֙Œ ć¬v3āHßѰŽõbŚžĆ:’O\S ¬}P8ć&ŖŻÜ¦āŖ‡'Ž˜5£‚h#VŚvŚ•› muß5©m½Ģ_+Ä׆ķ”GC“W"½{a„q…¬'J_e›Ŗ‘ūhßŗŃ$9+†šA“™ÕĻQųѧųŌ-•9ŠÖƒZŠQ‡dSŒäSę«ļ%„ēīķ>¦k'TµV䒻kø’[iPp͌ę³5{5s”#ž+ZUSźeR-GS…xYIŚäūЉēš#·kŒŠéīōöŚNµ“ykå‚2wc[ņ)t1Ue«KÖ&€”f*>µÕh¾-]åL€šzµyķ̽!€ćLŠ$ē~ÓQS µ:iāgņ=§OÖāž×żr31ĻQҜ÷ąusów'Šńėy¤G ^„WI§^:F»„2;×/±åz))źw_jCĘŸZ£~Ą·ćX?o•@ÅZ·œ±Ų:WD}ŻL*ŅģŠ÷ĖŲöĒJ³gØ4h"ŻĶ:š!‹p €Ö-ŌDI¼;dzšŃĘ3Z :{›Ńź«“ōė֞ŗŒ¢Q“=3ҹØn%_•˜‘žõzÖ| Uķ×&§–ĖSWRėC žÓv™Ÿ$ś÷¤8bĮŸ>¢±‚ƒ‚Tšx"¦ó6®6j,–ÅŽö:]7^{8‡˜Ņ0o^µ«­aØ.>h[’1\\$H#$wÅji–.T>ц„aR”mĢ™Ŗ­){³WFŪč¢PZ9S곁&Ø^GudĢ7ĄĒZŪŅŹę•ƒcīćŠv­Ÿ•“ĪiS›½¦Ģe]i}Ē(ډ#cĒ“Ī2ŹÄ*•'éZéάėZZKFQ˜Į«“vfwZ«6Ömęg'ó­l՘^õ³ž„ŲŹzē8«VŚ`@pĢŠh¶c‹iŽ×1¾Ä±žqÓ֑aP‡)»œÖ¼¶2*±BŁģ)‘ŚÜ`¹Ļ¦*¹Õ·)µ-‘F)>2“éV¬‚ĶŽX÷«£KødĪŅ8ī)ÖŚmĢ{v•rkTFW/tZ°i"ēz”č¹i:Źc zt¬ŲįH ¤bÄg„bŃ$iŲO85ĖRhč„-lhZ4ĖŪŒ2iźįX ŒIźqMŽ@c屁ڢŗ¹1åĘŅt®{6j’»5”`Š īĪ:b§¶mĄä0ć½déņĪą“‘ģzÕÖŗ¶ Ļó€W<āÓ±¾’Z–Ó(y?I#ƒiZĒŗ¼>f#ÉļN·•ŪØ@½R„šŌ†ŌMĄ%‡Ó4m@x{ФņŖ ¹„†ėo`=3Ö«ßčJPoRńF(J”5dQ‚ÄćŅ£¤F2£h§Čķ,$ҫ޶ Ōo ’Ü"¦Ö…œ’»š®É­ó[‡Ž‚„īUÉé€3š–+„ Ÿ,NÜŌ^KT‚T¢ö ~I&"øć“UžĶfV`„q֟}qµœž™Ø‘-³•;ņk_}īÉ“c£-[D[hŽPō_=ÄD²ÄρکÜ]$ ø\¤dqņõ¬ęÕG&8/g˜t¤Ø·°›VÜŃmBū -±ģŻi'ŗŗDQƒči°‰c'ȖaĮĪk'WŃē—s+K#ņ1ÅZ£Mé-iÅ%Ķčn% ͉@sUī5p²ŚxA?zøżkF¼{lĶØyh£Q³łU=.(¬‰ŚB?å„Ćqų |I¢£ˆęJ÷:ŪĶXVą7f²fŌļd}°E)ˆB*½®«go!fŸĶvćdH1’Ö­›Ė‹° ½˜žłĄ­RKF®O,ļx½H¬N·( ó­°©sŒÖ¼Ł£+ws%ĆÕ¬©£Føo“jhģ1»4ĖÄŅ£Œ|\ć§5Ī[ūYØ·sUõ}9‡Ļ#ąŽ„ąÖMõž‚ē˜\u&ØZ6“#ŸŽŹĢNŽMuc±•EŲ¾y­#¤Œ§)8ߐˆßųĖ(`Gš&×ō»xŃmYŪŻ„E6Ÿkf yn›vV=BųĶåE¤ZĒž2FM9_{ŻvJĢ!ńü×˵{S*āKŖ\ÉņI,@óó+FĪŽF@ʉc?.954Šb£±&³II] m>Fµ+Ě²ØŪ?„±š¹c6¤åĻ\“Im‡żDĄėÖ¬ˆuOˆéėŠ—“\kT[»|‰K÷_™‰Ļū\Tö÷Wˆ›w¶Ł9Ŗoq:®¬zāš.Čc· ‘ėŠŽD–Ąē)=͘µ+ń€duļÖÆĮØ]Ŗä͜śŒ×)q{ ž%9öŖSÜJĆåbæFķXŗqź¹Ż¬Žī]RģĆņÉ÷™y9„Ī+’źńIĢxõķV¬.īĄżąc<1R®G'=kcL‚Ī9¹]Ź=Mc.dōw:£4•¬h¤] ½²Y¶Źt qéO“Ž7å6Ŗņ€MkĆ£jWqajņzēZœŖ/yŲ‰>We©›ęīŪ¹CßvĪ)dAäĀķž˜„įߌBd]6rĻ8¬×u«Ģw÷H£œ®*傝®•Ė…X^ŅiŠXŻ(Kyc$NYl‘öĢ†=ėOÖõEAŠŽY $ėUuĶ7Å7䄰8Ƙ4”ĒF%.™¾śžfūęi®ä"K’ T—1ł:m¼6p‘ŒīĖcė^q’?ŒīflG÷že¶“߆¾8‰|Ų’XtQp3łSäŠ|ѵżEFjŅv‰ÖEehńł·Ņ\»·%Ė`S¼Lž·ÓѬ$Ÿķ łŽ>½+ń6•ć/McØYĶ āŻ•ÅqŠźPł’éeä|t ŠštqR|ņv_sž§ V™Żź:ÉKp?vp>čā«éŗė¬ŽĘ8Æ+•žŲUP ‚2>£„Y³Õ$~vEļ k]Ę1Ż ŽöūĪäxĪę"'D qƒŠŃ𒊮õf™²Äõ¬ŸźšUÄ«Ս·LīŒŸĘŗū­C’/:ŅQ#%Æ'ŪSo’ķ?Cѕ:°µNU$z7ƒüs‰RįņH'­všN¹g,•ĘÖÆb›L³m¦@J÷Ī9«–ŚōQs²(č9­iWĘP÷c>eēžf5°ŲZėĒ•ł«ńKĆ:vÆo%ÜN±H9 wÆ5»—OŅ<;(fŒ\ņŖƒ©÷„ƒÅRŹLFą…ĒÆĮųņńÆuI6`=}뢄Ib%yFĢä†aՔ®˜ŌÕd–bw²–<Jélu3edŸ.ĆūÕę0M4W!Üä/NG5ˆõYä’5šƒØ¬Ŗeņ©+IéǕ2ēĒ]Eļģ£A#<‡’Õęś}‹¼Ą %,sŒf·nbøæœyŽą€Oµto ÜI)‘µKkd_ŗ ęŗįK’*3ŅĒ/3rmjs¬g€˜SĶ,:ā²µfŗGo•”uė‚k ń…ØĆ|ķoØÅqž§$~¤JĢ Äš3$Öšt©«»?C){J¾Øó—¾™nXfaĻēÓx?Åm§\‚ģ‡BÕÖŽh‘I H­įp½Ąžµ[ž+›™‚ŹWęb+e=e¬“6Įā«QvKS¢Ó>&ΐc€Ć€8®'Å^%[ėĒ‘łóoń¬æčņŪ]ˆYü¶Zē®4©ŁŌE98äöĆG/'ū·sŗ®>—æżģ“<»¢˜Œrk:’U–åߨ««„_¬`³§œē­V›F‰£&gdņO®÷FėŽG÷3GĢ×Ā™z?&Yƒ„Į·SĄ®+i4›[‹pŃjč²z9ĄĶyOˆīļZ]ŠĘįHå—„Mą9.%æQs3ł`€FO_zå©NQ×szj5¶łž™}įx[“–†=Evēż³\7Šķę·*źŅ{Y‡ ]1ĻÖ½ļįŻÅ¬›-ļ]†Ó“޹_‹ægKĶ×ņ‰t ń\“ė'S–i/Ÿč]zN*éž©ćqŚI.@Į߂zSīō“ŠßJī¤o8lW@nō`v”‚p0Õ”ā»=<o s¼!Ž7df—Ö” Š)žž¬”ĪļcĶ®īl,äā(ĘįņņX×9ÆŽ4ä²[DHą`sLÕn팼–vn8ō¤µˆČ£dDvūÕÜ«JOC)Ń“Se]2ųĆóKi¹ŗŚ»O\ĒwhKĄ#Uøżj/1·XĮ?`X}Ś_Ėrų[vŽĻ^;UÓp¾­£)6ÖĘ'ˆż¤½‘XXŸåV4”:o˜o`8.{֎œI²i9ļƒ]E®˜XG=²‰—®Śn•9»æņ%b%u|'*^Gu%~mµŪ¶æļ®÷ŚZ»]BŅ) ĀRQŌŠęu]RĶ›uć ö”Sƒų•™2ŖäV‹Ä©o*¬HŒu¦źó]–e‚8ŁxÜ­sZŃĒ1Z7^*½¬7(ŲYGŒį†rjœ\āʤ߻„ĘŌ'.¢i«z UĖ;©•ŌŪ,Ī¦ĪŹ®Š,2vĆ[kLchŚ?ˆÖuÕŽ¦“ÜÆhf‘©Ļ$Ģ/!tNGj铿dXŅNē’{~åņų‚ź{yAÅki²ĻĀå£UvćsŅ„„u Ŗ¾•[Ō4»©­·Y0pĪY±\ļŲµčnI)ö…čH'ĪĀOŖBWl„Ōm u~ń{\Y…`±·ńĒ5·¶“,¢`°Ņ½ ^M©Åj±µ»G$ƒ×ėT%¹Õü“Ž-‡©®ūĀ÷źd#ZVīzV¾Æ¢˜"V‡Nó}A·4\lŒć)k©ćÓŻjt"žgnw*’1õ«Žń•ąŽ‘¼P“Į‘öŹ¾š-Śéś/™s£Ą01Ä W-ćÜ_Ż“Vv2"‚p:ó戧Uņr¶wŗu)Z\É£šÖØi¶ ^U’äżāq]®­źÖ¾AMļ·±ÅaéėČ­*}™3ĖIņŒVü²éÖčVāł$ŸŠUéÅĒ–qÓŌŗu¤„x»¾Ö-4Śä*pČ­• ek%ķ“Ėsq,Ļ<|†§³ń*Łö‘)+Ęvóš¹Ä éi§ĢkĶ–+ EhÆņ¹ŲØb*lķų–šźsmk{{©aŖ@Ƙ§œē £Ui¤½ę}²œ»‘8T»õG¼6·§“IQĪ:ƒÖ±u«ėK›y6œņ~µĘhŽœčʆr$ĒbA§éś$ńO¶C.=Kö£ŽĘT‚ē‚G•<&“&ō9ŚoEńWˆ¾jzg†5+ 1%ķĪļŪÖæŸŪRń…ń{UŅ.ÓouBH`Aµ,īpz7Ć»ŪO k±]“©wwڱ”cJx<ŗ”©GŸÉ«Vµ£V£å&ńw…µ]>K)ļ/]­o ,‡ÆøĻJęõM~ ¼»Hä®ö?3 ķž.j>#ń4¢ņx£²²aˆŠ Ŗ‰čpŠh61“’OÕėĘĻ•śę¹šŲśµ£žÓeäŒ+5ĢćA»y˜÷ŗˆÆ­R]×~AčT’ø®Ć@ųyāCK“!’Ķ­ĢŪ•ņGįŚ Óuč¬ģN›ŗs€Ø3ϹÆT¾Öõ+įŠ“¶ź—qmĀr@#s\yŽ7I%B’W}Gģ©N›“ØōüĻž|MØ\l}&Ōb‰e8Ī}3ZænOK¢Ģ..&S°8ŲSĶeų’ŚH$ńF¾dļ½É ±&§Š®™8ŠäF v^ÕõŲ\2…ŚŌäƒ”ŻŁ“ćł-ʧ,h¤m8 œcä×tĪҶIĄ=pk ń•Ō3x†S‡BŁĶKg„„峓 ʌš3šõcR1¦„- ]>VŅg1]Üz½¦¹Gc €0* NŁķo7ĄĮćkF6_j(Ļ>“„QrŻ= §«÷YnźķęuBHŒr>µ­„ŚI“Ü$øłˆõ¬[•_)¤FćŌŚ]䖶»ĮWČåIžU“Ö>é£ų­rõĶÜņ̆äœVw“qóĶ‚#_”’j ‹ųó˜‹ocĶI=üƧ¤dIĻ“”Vˆbś›ž™mˆÉį°x­&ŗˆĪU>]ē$ƒŒ ĻŠ£It¦i$=ĻY¤6Än-ŠT^-źmīŁ2_øM2UYUŸ Žkžš–“öūÉ"— 2–-čVךc©ķvmØ0¼õæ j6ööūm•žäŒséŽÕŗ“QŠÅŚLäüIi-†øÖѐS[Üę¹Ŗ$Ŗ’ÜLė]_„õq}lš³xĮ$ē$ń\ĶÕµ¬²‡Fj÷‡¬Ü;®ōr™”&®tiŹ;½WuĶs\ź÷6¶R²HźŖHU÷śÕ=Äw×·b'‘·ēwŠĄń%šŽŲDT¤ƒŖ–É­‡Hšu`%œķRĒÓT!Ė{G>nTĪÖ[ū1#£€?»ÅTS·IžIī"FŲHė%®õŠčĖ0Õ­{į•uéŒzŌĪŃŌܝ®7Le܌§å Ō³ł€ł¬±'Ļ“· Yŗdb%.ł]­Œ7LWK%åÓv*qĪkžRŌ“ÓŃ1,e™īU~2j»ā«ˆ×NŠbīI ڲ ŽĖ9ŗ© H#æµS³’K©Ās×ę&±jś¶œoŌé<f×“Źąr»ūŸcZŗ½Ņ‰Ģ.¤9 rk2ĪI!“1ĘßźŌ—¹©™lŚbœß0'øØ’ŒŲł'mMė£vZI'mźIĘjJm|ŒuŪU,ÕŪGŻøc“éō¦I>Bõo•ī­'&W!~m›†ŽAĖ»å>µ^3ƒéžõ(#å$zę•Ų­Š•28•$`*äÓ#;FZy#*šCjƀg5&F:Ó"#8Յ@G„1ž¢¬ŪWœäRFƒ>•:ĘrHSҚx B¹ŻƒC@1ĆsL*vć4ؤłÅ'Ųw}ČŻé½Y± d³•# ØŃt"˜ŖćÆØi”“D„ŹHv“VmīYG ³X•“œŠš&!rA©Õ vw®!üĶhĮtäį\ž=+™‡d‚*ż‘*8ĻįWĢ9Į3”ĖŹ HĒėV­“ß7“*ŖSßéXö²¼ļ+ŠŃµ—å8:b«ŽčB„Vä×ŗ5ŗY<†ķ2¼…õ®bXFżøö®‚e³¹œē·5XĀŖ2§ŽĘµ‡5½ęsM.kĒc āą ©n[»5§,j ÉÉ#¢7š«+Ü­¤ĄŽŽżŖh ŻźŚßÉä€ ‘MŠub Š<Ÿöy„ä\¤(†A+ój‰ćz#UŪc66>ĶVĶŗÉvR¼uŖI-Ģ$Ż®`žš>J‘ėV¢˜‚­ž¼Tó[Ü rsŅ£ø–ś ŖxĪÜÓh•8“\¶»Ć ±r?/5•‘ö­DqƒĻµ7ȹøpe/×=*nѤ57kÆ”=*Möq‘‡Lö5ŠöéāmēŪ8£* #4ļ"­īŽ–ĘžÖ&Ćdąv­;}[Odđ6„rņىROL½i&š,ƑųTŹ×½Źm5ļ# k"EĻŹ¦Ś‚å“õŪ° zš£o>–:Ąäž‡v*ģ3h„pńʤµßŚŽy[VG²żŅø¶F%TgźåØķ[¶0xbDøtön¹©§‡åŪ,‡Ś”ŌV±¤“[£™MQĖą)-:|Źnõ¬Öó[—9ŽØå²Ģ²1ķÕ©¤…%.ęTÖ3°Ś†Žœ “» ąłö±ž„o­¶°ŒĀBI·»Ōk„Ū³6ūØŠś–Ķ%S[ɉFODdgŽł¹ĀTš>oéS P2#ߚ֞ı?Ś1Œ˜i—“ ā»Aó*ÕX½¤†ćń\£|ĘG<Š˜AuŹD­³NšŪR§*Ął©`7QŽjkŠnĪi󷮄„m‹¶JĄ‰”÷Ķ\1+ ŗ >¦™„j ’5ÄR©ŌVĢMo4dł “üJ³R»©>[£2!^r¤’²õ~Čņw0ǽ2HmĮ%’OO–Ÿm‘ė+ÅǦi'ÜĪ-½ ’i”EĘy¢k©9>§½Ol Ų$VČõÅHm"d!‰PzĻ5 Ö)¶žÄ0ɐ<ĮĘ;Uœ[¾d#BEC-”Ŗ™†u ō­ZŽ®2ˆäś0īŃJĻČÓ“žHS^½Z—œ‚nõ’é4nCĄéĒ[4ČL…ŠŒƒŠ÷-ü6lŌ’ņ4Ź„,Ųźj§Ūdź"aŸJ„[]‘¹]#®zÓįŠńŻī3ņµA=žÆ .ą=¹Øų“ƒ.›KI¦ŽĀ{hr#™sg˼œ W;„}„•XćƒĒ5©ez×Gę—“© $‡*1ŸĄĘŻ6ĄĖA<ēŌVsE+’ĶŸ®zÖܑ)¼zā«źČ"Ģg`9Åm Ż%ec!’D?3ćҐķČģ)eĘżĪćžiŃątFsU(7øéĻMĖśdķłĖŽ00zÖ֛{¹HP}²k–v$ó‘ĒfÖwLHǽJ¦ŗFM«ymтŲ²µ4‰ƒ€jµ„ŃóO^£5«eäȘbyĒZQ“‹34ĪZöŁXøEĘyµ=–Ā Nƒ–’Ēū¼dVV”£^BšŅŗUHµ«9[qų“93 ŪŽMX¶Ķ_˜ƒÖµ[L¹`[¹÷©¤éGčĄŌÉEBmčfŚøQ“ŒŸZ“2@ €HĶnZéˆģ!<ŲÓōXb‰$cڹēZݚSR–čćĘą»J¾1œŅye†Tź}k½“G·xÉÜ*ģˆwō¤±P¶å:3ŽHóūųŸÆQŚ›kœ±”ž¹ÆG]\€=FŚ<@…Ų+E‰¦Õ›3T]ō8•bYT9鎵l­ĆCČqĘ:WHš<x®Ņ:UŪ[6Œƒ kŽäÖR­ hĖJW³G/żœļŲŽ§ėZ:eÜfYćku~YpŽR·åS‡ ~ņ’ĄMbń Ɗ7§ĀĢ6¹­ĖH6.X‚;b²—>§u©’ģÅ@ĞÕĶR„žzQQŅHÕe€éĶ>36ŠH¬»k„‘p@ ӓާ™J’£<k‰ó\ķ“To%”¤Ń«t f¤ˆFøå dy€€2ߝH® ämzÕ?iŌQäµŅ5ÅĢ)ü¶žU·æ¼*‘žFsŽ•%Ų>_œÓ§¼‚Køć<øÓ–ŽÄŗ“֒6b’Y0s€F95:&ĄG,Ozå-µ™¤xN¹«kd*ĢŖ¾¤ā¢xzĖViŅ–©ŲÜh¦āń¬GRH¶š_¢ÕkrČ9 r½1ņš śõƒ6ÄiõÓJ“z“s֚Ł2Āė†Fi!x"ō-ĶIżµ“ć»V|Ó[\!Ų÷xÕW²²hA“å’tsZŗ0{‰Ö“yZ¹«.»–;Ä÷ō«Öz‚ŹØÅĖ7lń\©µ°VĀG1ō.qWlĄ¶GNj4“E§2÷æC²·¼ÜHćėŽõ0ø˜ć÷€}+’iŒĒ½@ėĶR¼¹øū¹4aėUNZ U,vÓ;GŗMń#©lÕs«¢‚‰ażÅČ®ĪPŒĶ4Šõ©–iŠŸ,ŗ’:āÆŲéļķ%ŗg]>«$€ķŠBšV}ʰ鏒b:“’+›ŗ·¾™ö¬Ó=€ D½ņƒ\_Ål˜Ī:=”VäJ£“6'ń-Ģ1į\³ Qi®ź…wFń©8ĪkkLtżģ·wņ1‘U5ÆĻsĖX’Ńz¼RPW½y­ĪźĶ—v^B…ŗ“²SÜ]é0ōEÜ’v7ČÆ'¶‚śāPęį„-Ō—5ŠéZJ²fgŒwå¹§R“Ż0Œ¢•žēc‰4˜Ń–ŅŻę c/Ę~•fÓ[æTZŚ"ČĻõ¬K=&ŁŲҰžėU¤¼XŲ¬V× sÄš+8ÓDŖ‹”ŅŪŽėmju¼Yļš†é®CI1Ē]¬qśV7ŚfuĖĶå ģʬ[j6D<ېXu….DµHI¹»6Yhēš"„<„õąÖ}ž—d6“æiøoīÆsWF³fųH»c<ö¦Ļw9SåyiīMkp·+Ńje}žtb,ģ–Ī>Ņ8É„œ»nļ$|Ž@8„O<²‡Ä×Į²3Œ~uY®¬ łä0;p[5¢”^ĪąœāīKo6‹mnl®ŲĒÉĪOćKŗuĪÕd‘ńÅT}fŹUżŻ¼^ŁM ÕyƳ®Æū ĶZZhõ&Rļ›M§X™åĘ1…Ą¦OerØVŅļÉ'ŸŽkõ$,w ¼rĪ@ŖsėDNłīˆē`Č©Q}ī?i'¤tEŪū+¦oō_oū¬MYŅŚŹÖ †{»§ōW3cØ­ÅŁ ģŖz€rk^kėր-•Ŗ”Ī słŅ+Ł4i é©Öč·\”ⶐnģĻĶt)|dŒ¬–ØŲē±åvńė„™ŪĢs»µnhŽŪœLn·?-sŹ–·µĶÕdćfξićnTłč¼TV÷S%ĮĢņmļĻZ”$ižė–J£6•~Ē1Ü)u#šM6¬”RGNŅÅ:åA$÷"³5 .W#×5GF·æ‚M2ĪIjŻū=Łqŗē 2wZĪÓO–ÅŚ<ŖQf8²3LIėŠ‰l§]§ĢóĮ®ŪFˆĒ ‰tčŪ?Ż<ēėWg·Š,Éö6ĄZĻ^ĶŖ/‘ČXiW3ŒĘ¼z“VΈ±ĘĀyŻæ‹µ”ŗq!U‚XTž7 U‰K-.Lt4^Ż•FõF-œ–0(… Fn€µZx@¦;nOĶņԓ±nū< ĻŲ‘UŽ{Čįöī#ō«²kF(Mu¬ĀM¢eĻJŚŃķ£1†’eW?ŻZēVś<Ÿ“Lˆ@č£4ēÖ­āTņüł¶²•ŽˆŽŹŚaŅR{įå uÅhZŪZŚ¢Ø^}Ķs^Ö/g›d¹!øŠÕÖīgKĶi'‚O5ū’MĻFķ 5¼i¼,cڬŪ_E³nT1žUĆč:”ww~[Ÿ(ćųūUķZļģs~ᢙHūĄę¦tęō[łšS•5nĢéļ.”)BÜż{UsØy@.ąF{šēķ54‘IžRd€Ŗ×Ś“PŪ—‘hĪńX,=YhŽ™{8«³­}ZŃ–Č8äV·®[āŲvÅf隩»eŽBüżģd~u¼¶ń“K$¶ĖėĻjŅ•)§ŹqՄZęOC–›Y]…¢‚X›¦NOėYßŪ/ę–¹¹œDxV½.žP–0®F;VN£.•åbČž÷×Tp“zY£’UT7HĖÓµ;ʤ){#‚\q[֒ØPrAŻž‚°ÆõkEŒ>(p ėYßŪpFBĀŽažń=kŠ”‚åÖNęs«u¢=WĆZ„l…”ip>ń\Ā»ÆxśŽĶB…XłĒ„|ćŠåŠ~s“qĒųUoų 2Mą€s…ļXbØsŹŃm3ŠĆŌ䇼“õ>µ?m‘AfF®ćšóĻųņĪśńŠÅhø=Ukęvń%ŌŹBłƒŌ0"Ŗ=ŻńŸ†mĢ2kžėCy3IS”Sd{_œķŠ@ ‹Wm|K(PUŪ=O9Æ7ųe„> Ź÷²y0Œe‰Åz>˜|3ky)ŗw‡rrµē×Ä$ß1ßGće¾†×‡¼Iuu)PҐ9®ßĮŗśÅØ¢ĖœH1ĶPŠfšĖ[°8KŽ €@ö«Ś§…ćŌ’e¼žI‚¹ņÆu}¢~ĶŁłÉr;T‹g„}ŖĒQQit‹%¼Ėr+åŸŚļƆüv’éÄ-ā–Dg”÷Ķ}ā :śźĢŻérŖ,JHU`WĪtķC\Ö __"øĖœ‘_C—ā±IrŌI®čł¼fƒ—5+©'±å©Ø*œ.įŚŸ¶‘ ļĒcšÕŗš¼qĶåĒz““čāµ4Ɔ²ÜZ4ī²:³]>Źźķ›ū{kŲĮÓ|KRM¬Öŗ«Oݵ¦øR3’kŸ×t+.RŸfutä–'ŸĪ°äԈœ¬čJĪx$½ęĶ)ćłÕ EŅ%{۸̲;Ō/jō-,ŲŪ@©örį‡\ę¼oĀ£mˆw9õ®ėĀWóI&$«“ڼģEuMÜģ„KŚGŻZž›¬ivø,ąŽĒ+“]“Z~“Øhm%ՊD$8WŠė±}šę;’Ź@9ā»ß xāČhéiv7”\SĪ+–®&qq« “že{Ō„*rK™IńN 4ZQnQį,BńœW yŖÜ±ĘäÉžčÆPųͤ^dé°4Kƒø;ņMy„ÓżZźqĶ}.ēMK©óĖ ć'ō.ÅsxńdĮčqNW¼2… Ć=ĖŠĶ†[ĄŲI {·J~éĖJÆJš’rčvŅ“ę:‹K)gQ¾čŒ}ėsMÓa …ø`qԚć4»»•Œ¬eŽö«pjI!š:ę¼Jņ®āzŌéŅ’³z”¶™H\œÕ=5 i¤łVŒ×£2ĒĢ¾µbŪ[Ÿ% ‘^m\evżä™Ó Rŗd¾.Ón.§3¾WĄ5ƒ‡u†OŻÄ¬ūc8­iu)ćWrzUõėČJ²>3ŒŠļ†oW•G•,„$Ś•®eė6:Ķ’n–Ö@1é\¶§y9R¦9zœ ļ¦ń]Ģß# qnSŌÆt»ˆx”$<—ÆJ–22IUVg°µ"ݽäyį¾X„ł¹`SGā„įT}Ą{]±¶øČ…U@8ŹśVŽ‹“mŽB ­ß+ųY”—»f¬Ķ¦ńlbÜ£ŪEø¼qQC«XĪæ2p2„cĶįyĢy(7gøŖo£J™_“1$c"µ…9oõ*SzIjné—6k~ŅOtņrn+»šßŠ,b‘!€Ū9ÉÆ<µšü–(`†IIČF)bŠu Ō,½yäļ§ „ĶNz’ƒųžŻ{²m;P‡o#¦pj†½¤[Ø_²£sĘĶy~‰&¦n};G°ä×YįkĶJļP1-Į!ĮaŌ֟Zœ}֌^r;^‘įėū«@Ŗ£iļÖŖźžŌķĢ“0ÕWšōχs-ByąŒq“ĪkC^¹Ż÷FpÜd …ˆn\®&Ó ą”£-O¶ŌµM.ēašbAĄÜM;ʆ§ØŁ .®<ĄŗŁ[ÜDĢ£ĖÉĪXā°oaµ‹A%ä*>č5ēā°tyÕDµ;(f5ygŠįZäŁ¢Ė<Œ±‘•n„š©©ųĢ͠Ʉۣ7›Œ¾:SÆ“;żWVp"•bSŸ`+NĒ@Ó“Ō\ǽƒ`ךM“汌±©Ē]ns޶6fFåA“­u–vYUŽÉ­«MCA†2@@#kV~­Æé 6±t²ŠŃŲCmęmźĢ0ēSj}įņŽ[V+×ŌśŹĪŅģoū<8õe«6śU˜”—č8®˜Ā›ŲĶשmQā¾ šę©Øņm­į·ĮzņkŌž|3Ņ ¬šŒˆ¤Ä/ŪčbK ŽæJķ¼9į ö“|›|°ržµ›¦–”īŁq©uūĶ/‡ü-¢[ZʖGåQč 4ž%ŠÕlUG<šMmų†{_é†YĒ—“tčk‚Õ|kiØĀš¬Ā5*qĒ5Ķ^¼ ¹j­K”B„Gz/C˜ń7‹m“«`J|¼ōÆ$Õ¼ss&¢ņ@¾Nćœ*ś× xŠĆH¹W’k¢„8?ŅøOhAAö™¤|d–P1^|źŚ>ė±éR§ŖuŠoü%ÓܔyX†AĪZ¬]ÜC«EøIL£×­TŠ”Ó,l KÜKČƑĶZšÄ?kÕse¤ČL‡ļ`ķpAT“²lō&éŁhG ŪßG1“÷Lsֽú­ŌĢY0:Ž~µ> ]oˆ™ ‚SŠ3 Z“i:¬|I«X*wTjsĄÉėeQ,l4\߁ÄųƒDø“»Ģ ŅzĶ]Ó“MX¤Ź$ømˆšG¹®–KÜ×qČĄs¹«©©č÷yrič„ W™_&GĶ-Īŗ9‹‚“Ź0čZ†Ÿt¾V­jOŽł 8>•ŚųWÄ"µˆ)xdDīXóKc…na&lW<ŃuaF³Ģޤ}Õ9¬ée^ŹJtj$ü¤ļż|‰­˜{XņVƒkĪ*Ē]¦ų¶[Āb¹T…€ūĄšk;Z×µ˜%dµX®bźćĒē^GćoĮ¦¼ŠĪš\!ĮĪåX:wÄ•ø °Ē#5ßW7ÄF›„ź·ēŌā§”Ņœ”įæ#ŚOŠžŠžŅü[©Ų\j6?iū¶«µŲHõÆĘoŽz&‹ā‰%ķõ]>ĀŹŽF•ŚFĒ™–$õĶyWğźæˆ.ÆĶ-ÅČņdœ{~u¦b„Kq8w+ø.;ś{ŌÕ”™TŖęźčśXškŌĀŌ§{;8ł›ž/Šōż6ņā=:śŃ-,Z6ūƹ_.ÓL¹Š=6µj2—sœ„2HļÆQ„a"D͹AķXž ×dÓ”K ŌŻgē•pI?Zõ°ŌjØņJ\ĻśÜņ/Ż“üĻLŃuǰ$Õ”ĢĄķ…‡Č=Ķt2źÖWś+½ōqZZʤˆS =ŗWŪźö°ĒŚģ’ĢRōĻzęüeāł'·h Äp)Ī«}Mc™ŗ©Ā:žR››üNĒƾ/Óį…mōĖt‡nrcA–śšćÄOq$†į™L‡ī=+”±ŽÉ$ˆv„²NTi6© Nsœē½}m ŒR›»9yŗ³°×u[YZ Ht$×/­źSɘ÷Ē«c­RŻČn™ī:TGēņ{×£$¬Éµ—ŗ=9pT18ł½«„š½ē٬gг/®eŒmb3ך“Ó˜(8u§R*k••%­ˆ5«†{²Ē-‘ĶU·u XzԚ¶Ę}ńżÖ”U+$õŖŒŠDJM»—唘 ©$)°åal’r;ŅY` SŌ/5+…h¶6īŸĆJÖv*IŚäQD§ī€sÖ“l­\r­¹rXcŠĻ“-öž9qWģī%k‚ØY· **§Šqm+›*½ŌĘ4vū¤Œ «8–&(¤®ÖēŌŌŗ½ķŒ+?#'”ß^|©€ē°9ĶasY)"„Š_)YY¦Ļ,{ ½įėASH/PRØ*Ė"`¾ø©4»õµi"pŽb‚‘[Ž­&ćd`曳8Ļ£®£&wŽr8ėPŁ6­·–QĄ5ŅųŅą_Ųłā8¢š1†EEsöLUX`ļėķ[FIÅh(ļk)fFW¹äö¤{—=*ĶāBė—l6{U%X̬„É…>µNK”wh³w" dU ·sŲÓté1p3Ó=ŖŒ¹łx©ķ‰8÷¢śß] Ūƒ].ÅM€m,޵½ µĘ”QGrūb¹––# EڇQW4[“3F$mФ•'ļVRŠz£xI=Ÿ"@×N2ą¦WėZ69†ŪäĘÖė;"kW"2%c‘ėZ g·µ‰¤ŒōĶT¶µÉOUc¬š’`ūŲ£ę¬ų¢ż–ą$*»Bć*1\‚jņĮe" „łIŖžI/€šVņ@Ćk™P“—37UżŽQ¾#Ž6ŅÕ揭ó`’:ĄŒ>Šķō­_]ÆŚdX Åe$˜ˆ 1Šėƒ÷NFõņ± 2Œ é|dZåŻÕČOŗMr’žķ²ÜHą×«|0¾±]U”)¹ÕØØi: 1Zšż½Ć;ˆU—q-Žų5‘ä5µėFų 8-ļSJœb¹®ļ@”m·TfRL̊èŚ?:’ÖŚ K»nrMWšÓ¹ 9ö­V»†ŚX¹epC‰I`@į½jK{ę„f%‚¾µ‹ž—eHF$RųžŽK"²@Åću㽫7Nģ=„•žĀj×ĆķŹ ƒĄ=+OSŌJXĒ"°g+Ōž™®zk…’ĶC®é@ŻI_j‰~ÄĒAIsY»“Tg}M.ą‹‘¾6Ī2 _Ō#’k„“o7AŒl ,ܶOJhŌÓåP¹ļ\®ūÅ0vŻ“ZÄ$ݜäw]O²<Œ‘·“Ž)—Łž2IuہY,ŅŚRy`ēéD"äõķ{ÓāG˜ĮH9Ąī*ŌWqh4%—'…Øī$Š×JŒČ€;ŽzĀ™ļįhYąėZņßC)Ļ“įÜō*ÅītāļģøsłUżwBģ˜ę‹ln‹ČĻj·ąč]-ŻŲ0Ę@?ēŽŗMa£—IŲ ŹńĻ"¼ÉŌ|üØģŒTió5«<²åZ8Õ >XĘ­[IN#ėĮ>µŌ äh$v .XwŖwL0Ü ~ļ< Ö2N$ŚwÕ\©e3,Ū‚ŽqŚ®\ß½ÓĒåĀcŚøŻü8©mcõ(ŅP±ĀŽČī+¤Óō2)īSŹ[xƒl÷ōŹēŹŅ7Œ¤—‘—o+č%™ŽģƒåŽžõ"Go°eqĻ4ųīŸ&Õ+(ż‘·Ķ‰¹ē­cR­¢mN1jņŌäU^żĶJѝƒÉ„ē#h#é’6į€p+člϜÕŹ0õRœÖ\ąœŽ)|®1·éTŽÅ†Ļ'ü*ÄiĻ^ Ląēš™ć€E7$ČQ ^I©a‡-ß8ā¦Dć5,hA8ZKŠl0®ŻÜäÕČ¢ŒŌŌZ]ąƒŸZVe«cHńŪėS£ hĄõŖvÄ;}šƒZ­Ā!Ę  ż)Ż“(-‹P4g£1ö« lFSZ4¦“WŚĆ>å±Wå{WĄ‰ÕźIļUŪK—ģl®S[-ÜØēŚ•t×Ļ Ć#­h[”veĪ>öjx¼ü€²&O½75}ĢŻ6öFChĢųĄ`}jC¢”±Čé]1Ü*å›#Ł©ó<†<ŻĻ°”ÕV£ŁœĒŲ¼¤É'Ń­'Ü$AĒÖåāĢ!$Ąź dĪ'‚8ī 58“f›½‘X\0īxō«v7ŽŪPsU^—€zRÅęĘs“6iÓToĆņÄ25ėó UØ“¦xøq“Üń‘\ÓŽ^–‘ŗRĆwŃd#ŠĶĶō#—¹·q 9Y¦IĪjœŗCÅĮvcžķŽ”ńnć5!ŗŗwŻ!9ö8Ŗ…g³CtŸFR’/ ¬’÷Ī)ü¹©#½iFG³’}źÕ­›Iµzē?ZŪŚ/B}“z#žÄāBTć”å{Åk6sĶu“čÓEöŒģĘsš‚ xr‰Į§Ļ¹¹ģs‚īż.Nßöjö›ØĢģ[Øā·“O‰ĻĖŃŗeތĢØ3ŒD\$“&Ü»£Kå/ņ®sĪMI Źß{šmī›p%ĀFĖī*œ¶—Qņ~SŽ“QvÜĶĪ Fkc. ÓŠC¦ÉędsӚČvņJųĒ5jÖKņųžüõ©m¢”bŃ-Ń!;•—ß5·Į-ŠŠTæ~[§zln¤L¬g>µJI¢,֗3EæäŽ;V¶ma·uҼ£° ŠC„ź*)…#ŒÕK‹kč-z†Æš²”W•ūʆ«knóm¤ć»TQił|=2yØ"iŹį¢{+NÉ%8cŌāmf^›Å‹”ä ļVā[xĒ$Žž•jÖ5čŃ«u&“V #ͲnNjD¾Ę7ŚU` ?LÓżĖ€¤‘ō®–Ś=9M˜cÓ=]S`̲ާT:‘Ų®C7÷c§˜­9/5‹“æŌ“]£ż™yضÜŌdDG(üOŗ+ÉlqėsŖ7×&—~¦Fš»ŗu®āŹŚÜ¦Eśt«-có#Ą÷ę›TĘŌ¬yš]Dż÷ 2jE³»qó\rk¹“L€Øł²Iģiæa¶‡ŲcżęÅW»m Œź½Å’fÜ8ǜŻ:䊚ßEœńöŽ}Ļõ®Ņ;H‹ä:š1֒īŽĪ1źIģ„ ¢Zw]NZHåģ.yåźĶæ…Ų·PPNkNy­")Ž:sSAs ĘÖP}3Uͧü4œ¶)Cį™1ĶŲcÜī4?†•× pw˜=Ŗō’—oŻ–b=j7ką~E==iÅö3w½ŠƒĀĢxI×'ŒóV`šę­n?q38ĄļR#źŲ$qŅÆYKŖĒ€Y“ń§(»^ČŚ.+TģGia®EŹ¼ę¦ļŠ‘%„/Žć©­{ŌĖ –u#¹Ķ_AØÆ#¬]_/Ävæ_Ąå ć*$³–2Üe{VŒ 9Œ w|ōĆ Üi®•y³VĻ „†åĄĆéģ¹U…?j·H„ -Y‘oöõ#|J݉Å\‚ICįįuĒ_­lF"“;”u鎤X ó6‚ąūōüź]TŻģƒŁ/6ŽH‘)±Ź£,O>„kqģ£ÉŚŻ}ź#§ÆńmŗSöŃcp}Qž—$ą‡#ŠåMĆåTścҵ nēŚÆŪ[Gہõ=ź=¼m¹>Å·{«Ū+0`0éŠ 7‘Œ+Æ0Ĥā4Ōmg\Ŗ•޵¤q¶¤J•C”1ł‰ÖÓęĖčGõ®ŚÖ́–­:h.T{÷©xø°©k¶qÖŠĢ¹ŻÉÅH-C¦Dd>:×P«l8ö©QāWŹ£ėP[ģd÷8Ńe)“Z—ģS‚"…ūUŲ“BB¢g¶j”‘ąüŹ}TŃL<<¶źsĶlŹ»ocį©cŅōöBŠ}ė”0HĆ(aźĆ4Einüœķčuū2ÜVhĀ·ŽkL”‘Āē”XĘ;b§‹½Dq<ŗt"­ »ĒCŠžI¢Ę¹5-¬’L2Ų?…v3[Z³`ÄG?Zˆi¶łD«ōlU¼M;©Ė±•i„ŪKf^Xt©×BŠLõ­{{UDć ŲÕ“m§‚Ēńؖ-왪©%tr7ZĀFTžĒ5Tų~š±AĻ©®ä³°9*īOZ›Įƒ‚*#ŒŸb¾­õ8Ųō;€ €ĒÆ[hs®Ņ‡ü ŗ@Tœ†ēT€ĄÅßA{lA¤YBī|°ć9­r‘mŚąZ”¼*ī Äć Ŗ:”¦E,1\īm»£ŖœR¤yЦ8ćŠU»hŽpHĀÖXßĘ$u’šŻœ6Żå˜ūӍY-yŒēBŚ%¤h­Ōœ8ć'†żYŌ@=NsR=©tŲüƧ„1­-āŒÜŻčæ:Ō9TtčtA!NįŪfĀwėåüøž/Z†7P—m“å»Sn&=ģ7S…Ęń *Č܊HŹdżģu¦¦\†ećõ¬)/1ņą¾>źœÕIļµ,~ź1õ=ke„“Ų—‹M4Øzlć”=j¤¢u?#Ć­sŸh½ ¹īW>‚§]FpøČcŽĶÖ„į„{\#Z6ó6£¶2HĘVo«u©ĖĒ šQ1Ķr7·sŽDRŽI$V=ååČ'{Ź3Šuā®žś¶e<_DŽśKȁbfLcžÕ•Ŗėz}æ[„fį/ī „Øó·ńŠĮŗRijäé]QĮĮngķܝ‘éQx®ŲrŖ£ƒĘIśUĖŁ»a|Ņ}ÅxĶĻČĆĖFäu=sPAö”0c#_J;—ķ“Šö»½}dĻ”UsžÖ)ö×W3G2ØĻó^>’8`ZG¼Ö¶‘ØK 0ó]Tō9¬\mŠq”e»±éS5ŲBVICŠ‚?¶’D“2ūē“ĻČW“pĘ &µ Ö-d|¼£Žµ|ėfŠöM-%pŌē»‹{ąć½%„×’‘ę@É=jõ¶½§ņ¢ Äu'Dś•›īo™Gn‚š”mkļģĒ …łKwĄ«qŚ+ćœV$”ŒĒz|:ŻÄ€3ŗF K‹kbį$u©j$iĄcŠR:emĖ2汥®Yµ  ƒ.0xÅ:ĒZA' #0śTØHØø³©V‘FĘ9aŲ œI˜ś6vŽ 8®muf““9‹ŽĖżiÉ#aŗÉdѶśŽĶ›1ł»ĘŪn¼śUŪv„äņ¢ä\󯯰ėGaō T¶Ö–×q‘$³dwĶ&īkd·ŠÜžīYóʇTŽk ļG¾ŗ,ņ]³sœW”Ó¬ķ"ŽoŠ.3H·ŚTn£}Ō‡Īž)F§ņ«¢–Ŗźę3ųkhWya=KsS[iv‘»y²DvŽ0k¢Žļ@hA‘äóŒāˆ§ŃٶŚĘ¤ŸāaĶJÅ-ŠP’w1™ćDŅß ėÖŖŻ^]§é];:ļżŃUžH˜’Š€¼OZŚ3O”Œį%+³“øø²Ē°ž™«P¦§r~O<ŌSź­VÖÕ¦÷ģ* uńĢL75¤,:Š¶Ż“ERNR÷¶ĘOڦ–Y{" ÕĮ8Ą[}6«ĖQéś]ā”ä–^›hG¢Īņ6yT±č½+™¤µeóŪŻE)ĶːāŽ3żŲÖ²5};T‘•Ė¢Y?Zī-“kdAĻ“ĶV¼Ńl$ŒīY]IēqDkÓµ·&iŁ(v’[ĖŗėSˆ§ mĘ­}®ŹF m NŲĘqÖŗ¤š® %PŽ=zÕ[-Xż’ĪWp sWķ)·£Ō«Ź+ß»G<Ńźļž¢É!N™~øśÕģĶFXŌĻ*F1óm­…Ņ|Ar… ©cß’ųGīćLÜj žŃžUR’īsĘZŻ£ž½ŃįˆšķÉ=~qż*skfĄ,ˆēgšź¢Ņ4åLMxŅ·\ ŌŸŲś89[S)ǽ%(æˆÕ¾±g&ž ‘PE§=BS£Õü˜·Kq+¹9Ś«ŠģbŃōß¼Ö¦5•tż+w—!É¢JИÕģr0xŽY%ā 1ŒĒ9­]'Ä7%’Õ,c±"ŗMќ3AOökFėKµŽōKX7(É,3YrB_i›B£ŠųJŚ>¼­>ĀŁÓi×1ŹĘ„ư®j i˜Ū£rK«›Ø“ĪHžāń\õ(øģΘN›čtWfß}•¤b0Äv©–x”T ¬Tzę³4¹nY6yS<äŒqZQ‰Ųa”Wŗžkk+1ņĒt=µIį-„õĪ;ŌŠßŽĢFÕŁėøu E!"BķČÜjµŽ¦°Ź«—F'®*yS.5Šč`—dkē'Ē–Ō¾rŠ=psŗū¤L™‡^kž¹×Ģ’yie >­ÅDpķ«ŲŸh¹¹t;ęž&}±8 õ*:ÕKŲ­ČbRR{ŅøeÖ.ay"AŲ(ÅIoā ŻŹ¬o&GEÖ°ĆŹ:¢„(XŽ1ß³0ƒOµ@ ĄUKÕ¹GÄņ[«œ(Åhxrņ[†E‘3Ünä×yįßÅ©Ż#É nw*ÕJqwšF£Jß”Ęé:޽ €ū ZEŽC”$µTÕÆ\W*Ņ®?3^ųŽžĻ“ߌKU”©ąż!¤UŽŚ(£-Ųt«ć=7TŅtÆ6ęŃZÜ —ā³<-©ßi7C}“„ƒŌWIāIy£Ij`FVRuy’ĢēJ¢\—‰č<±N…į-{-ā-{O‚„YĒŽÅpśĪµ#Éņ°9<kcĒ61K{+ĮnŪŲš±Ž’įXŚG‡Æ„ǚ‹<üÕź,JqęLąX^’Vü‡ŪźM$B)~rF0Mt¾ŃZå|ÉYa‹°cĪ++OŅE½÷ŽVaņīĪ?*ß“—Ź-ß>ø¬§‰[&o%½äŽ·Ā~ ŃÆnÄFåpĆę.ÜWK­xWÚEš„°‚izÆųכŪ^IlYāŸk Ÿ”ö¬kߏ·ł’f‘sXʽi;ĮčW³§nY73·ńl:U½™ŪBĪWŒ(ם.Ś}é¢©įš·tū™u(ɎI$<’}+7XŠę7T2#ŖƒZ:źTķ'vfØøĻDlhmwžč*?UV®ŸIӑ„A ŲŻĮmŲęø[HįŽßBjÜzĆFÄG+?ŗEx‰NMū=w ­j@’Ā»Šķü+„ØųŪO“’H÷ˆY½ĘZó»]etVAķqgģ6īøķ^&µs,›>ń<&ęéT%]Aę¤Ģnyłæ•e4åMĘŖMüļł•Ź5¹ Ż»Dx{ʞ%Ö,$µŅ7Ć®SøĒ<×ć;-@A)c'œ~ńNµŽ|ŗÓ“Ļ &p O›Ü÷®kćˆŻe•ģbHćēq=M^NœdŅZ/3éFźĻ~§YŽMoŖšG[©Ænš·ko |Ӗr¼’kµYÖņńfČW<ä+OKŌbˆŖ³“„uę»3JnńŠ2é„MĀoS§ų•=ʧ|ÅĻQÖ¹Fӕb Ń“nzdę½sĀRx~_»ŽĶåĶ·å G§zńƊrÅØKö)$xĮąJXL\Ŗ.UŠāÄįÖjżzŽ•e³–%ƒē®1Zś~£äĢ­#6üq·ė^io®ÜĘ@et?ķæZµgÆ\Mw±0yĘ+iŅSÖQ6§RkHĖC×§ö•V¹“)Ž<Ödž£¶¾øX“1ĒĖԚąō€ņĄ‡“+cé^„š¦Č[¤\˜XÆĢ2y5ęā„R0żŁŁFęķ3Ī>+ŚÄN\£®īO5ĖZjVÆ9V`3ĶzOʍS×u¹/ć ü"'a\^Õ”Õ#·ū;™$#Œ×§K„F.M_©ęĘ“‹^€²Ū²¶å÷Ž›õŖßaÅÉa0.p@<žUģžų)uw y—ŌPÜ:’«UČZą<}š÷Ä~¹icŻ{ ō ~50®¦½ĘLéʕEķ49iī 3yoAē5b ³ĀSŒöļ\ʰņż ›‰Iœ‘ß5sĀ~"KøfX–bGē§JĘ¢’W¶§vE“¹•Ž£NĒ=jMJÕÕ•‘!Åq÷öłĢŠ…K>xäŌĻāL~c×&¼ś”å't¬zTęÜZź/ˆ.omQÖYq…¬Ē½ŗl QŚ“%֞vēn{Kö‰ĢxUB¬?»]X|->«S“‰Ŗ“mXγø»[¶ X:‘Ó„X‘.Šžņ UXcīŸĪ¶|?sr·Qī‰IćŌWiyŖDŚq†K<’¼¼ę½QŠŃ¦qŌ­>KĘĒ’¼7is„,ēÕ[Ų.ŚąŖ¹fĘIŻ]5ĶÅΦ_kÄddb²u‹]JŹų\ƒŃ¹ę¶$„h˜:ŗ'#¾× ĘÉ&‘N3’sÅY·0ł›¤šBʵī&Y&EŻŗsJŚZ¶]JŽĀ¶„]Z²OŽÕśG…õÉ,ķ‡uFų­-GÄņ‹'ÉĖmμś©a›cFŹ€O„X·Ö„¶Ü#nčGZÖ2tü‰’öŠķÜÖ·Ņ5+ĖœĒ Žä±ėŠīlm-“](,r£É€YŌó^O&µ©HHŽIqżŃSŚj»įpīåqYĪŗ½ķpöMĘÉŁžēą[˜.®Ā¤³£’xé]&„1™JŪK¹GQŸJłĻJ›X‰Å$ń3œaN? é¼'wØÅ2‰žcžÉā³u*9s„”ŃģįŹ ŁŁx™āM’+ōĄ"¹ÉƒŪ’é9čz×¢ųjŵ-Œzœšģ šÓ}ŒÖ»n£œdŽnIE:M® G˜«üŻć­:ĘūOÕćÜFQWz§‰üg‘¤"Ę,ō\€qXZ€-­īŚk¹Y£Īķ±p3Iį¤Õąģˆ*7Pœt3ōƇ©Z‰téćxńŒ•9Øfų]ØDåī ŒÉżŃŽ+×t-\h‘$6‘ĄØ«»œŠŃ“Ēw2­x$ØéOžqV©Ø¤“V§/¼šMCĮB›–Źi\tø«šµ©0†8,¬Ł‡Źg”śW„ėŽ"kėēNȧ¦ÕĘ+ ^ł7øŗĄģ[©55±Ō£ _RčPŖŸ½±ƒ«üńtv"u¾Ń0¼…›Gµ;›Œjš¶›a¾fćų]åī”töŹ$ŌņP²b„·ń…µ‘…ž9ßo\׳rņй×#R½9æø±”üÓ%¶Ū‹ćŽ\d1µćõ<Ō7¾!i· ś<śv¹k —VŽM¬ą&’ŪŶ6‘Ī=L>%ŽF­ö Ł­†Ü€[ʱņwę‚kī7xVķ(Tił¤Ń•o ų¾[¹ Õlćµ’6ŚŹĆ*éĄÖĘĢ4“ł·%x ¼X6ļšä­Ā¤Ņ1å™sŸs]Nāć;‰ĆœĒœ³zTÕ¹móæźBŹėOā’~ŠÄ:gßĖŪ*J3Īć5µi”XéqüšĖ×&¬Üxöö#¶}:)Ū ÖŻ¦­¦ź¶\¤Ūܑ‚ŽŻ+œĮ“švŸ~£–QV*éŻz™>o‡RĻ?k–'Q uŖI£9 ·7G”“`Ó¾d²Ū˜C€ŁŅiŃxWhŠ;āS]šÅÉė)XĒźšKkł~[é¬|ݳ1üĻ^æ¤^Ų­ HŲ!ĒńÆ3Ņīü;`§ģĖ$jxåóš‡^Ö“¹€1^ĖQŖq]\o±nSœ[9ń8GVʜ$‘Ņ|Zšü~'±0Ēx `;‚Gé^+{š·U‚ųÅk©iø<ī.AźŽ¼“šÜƤW#µ]’„y/'yäŌfł†~N1]Ś–)ó$›õ0„*atm„čĻ‚ŚĢĆķ>.µ€v¤ ÜżsV¢ų-¬€Żx¹„\tK}¹żkŲąŃ~ī `•2k‰ńž›ā++¢Ū~Ó‘g•/a;Ó__[ģŖ;z¶ ō(ŃZr(ćsÄXž¦¶m~ĘA1x½cŚ8Qiü뜷KéŸds˜ö'5WSŌ5.÷ʼv€’ęėYŖ²WŠŠō6pŒ•åUżĒ[wš§Zk2ĻÅztŅ`į^6Słę¹o|2ńģq† Š{Į8žF§²ń¬‘o‰ÜĪs]‡¼i©y˜1÷5X £ļÓū™¤hāżŻ[ś£Ģ­¾ų¾k£ŽŸŹMtś/Ā=Gf뛩vŸ` ōŪ‰6Š@äī|óófƉ0dŲägƒW˜-eo‘ŽbŌočy‹4x¼=dŃCtņ܃<×-¢ųŸÄ6l^( ^ ‚x®ėāžæįDĖw-ż„ŠÅĖHÓćŌ׏_“ķšĖĄžŗ–pj×Ńf8⁾Bż†AäW…ĮįźJŃkņg«„Ęׄxµó=_Ä/s®ė¦óR!¾ńčÖ§‹A“‹÷ŒmŒoĄlĻć_‘Ÿ’i’ųóÄÓeź³hśld”ŠĻ)Ēl·zåmž:|C›LCė—Ł¢mŅI%ĮĪ+ÉÅŅÆIØŃ‡?¬¬5šŠåjm§ä“?Tioxᗁī5-_SoЬ3³cŒąńĶ~3~Ņæµ?üGæÕåyŻŻŒÄü‰č)Ÿž!/ˆu#ÕåżńŽ?/t’–ę¼Žņę9m„V‰ó÷Ür+Ü˰ŃqN„;Kļ>™Ī³÷$ģCsØ0Y›ó­O @$o“]üģxŽ2pfhś`WūEÄämä{ŸJoˆ5Õ¼¤/ŗ^„zÓ£eĖ Ļ1ŌMó ŚÜ÷3ĻŖ,Ć`ČįGLŠą¼WØĮk¾;\Ė3ē|¤óųR^Ü“ņAŽŅNrüō5Ļ^ÄžvÜżI5x\ #/"]Vž"‘–yēšC»$ä÷©mąC2n Œ{“K„e*9<ŸJyˆ¤ó6äōĒA^ź²Z ;jŲI|ĖnF¾Z'aÖŖJŪ›qŻ“ŲTp6ē`q‘K#)rU(­Ę»Šų 9Į>•\Ļß­9œ(ē#Ҙ ‘ß‘Šiō-Ŗø)Cī›ŸJ¦»‹Ž1Œw§ĮÉēõ¢ĮrG;· ÓcŒp¼g½XD ·®;Ԋ©ĮzsO›B„eøŒ¦5Į>¢£ø˜HĄió»?Lć­SŸ$‘œ ŅK]AĶ”öĘPU•‡šč!æūiŒDäż*…ŗo”Hēę黽Q†b«Ą'®zÓŲ²µņĻĻ^c \ŠŃ4rŗ»;æ¬_ežį°‡g„r:½Ą—XžU`A§­vž1Ē üĶ*üłW;āĖ8ą¼RŠI†!qŒ~„arŻ&ŠŪ„ÄPłŒA“Œ­bꐤ3+\•õ®ŪD{1d‰öÕÅųˆL³²ØÄa³ƒZӕ݉©µ¾†TķøqĘOz¬čŃķ#q'§5v蠂NFj4‰ÄˆnG˚Ż+Iiq"6qóyėJ6¼„“·dÄYF œ“H,ę“Ģ£nzŅnŚ(1B –#*jÜH»ļŪęµR($šUH”³ēéV®mdIdm„G49+ 銻³[00”œƒPkW3\D¤å#QWm-RҳĒĒµRŌČgA»+ž¬–ÆR®ŚŠĶøbɵAÜx©­UŅÕ°@8ę­“h%.Ÿ ōRźE@į²7“łŗ!ÅI«™—|äē$w¦Ś9žźœšMM C9>õ.хc»ŠtÅi¬f×biĀgA:ŽÕŅü?2=Ė”VT8Rų®nŚ!žp u>ŸģŚkįüߍgUŚ6EF=QŃ]K²©™ÉŠä¼W ¦ōll<ć„méSE8—÷½O“Pˆ•‘ɇk’›pzšĪWWG9g#†8ō«śsŖŽ–uŹćÖ~¢­³'ŹO\RŲĻä„˿˜rqŚŗ¾$DecVó?hŒUPŁéƒŠvØKĮ2 ,ŻÓ?•16;n2lCбč*i/Œķ¼3G!嗷„ J/B„nē*É Éa·Œć ¹’9£·µtŗČŒ@ųÅs—P8PåJ©ZS’–čÅŻ{ČčÓZtų£’>@ČaQźšŚ£—¶k•ódXŒ$d†™–)ÉĮ*cu›Ōź’µ„¹·ņAӞµ›Ŗf8FWĘ2}j¾’ź±]AĻŻ­™’;‹t8nŁSҧ•Ač97(ė©Ī“ao›!sŅ«•u8!—<€k„[dE(¤ČXq؊ƒX¶¢VBŽ'­hŖ«Ų^ĪŠ¹‚T€1Ś­Į0U†Ż‘Ž*9ķŽ)°KcŚ£øĮRwV"3kcM™WGśŌ–Å’"Ųm½Ö±".$dŽā­‹ƒö}€6;“Y:l„;’JD‡h8 óƒQܑ† ŒŽ9¢6ŹōąwbļŃøõ¦»Žö4ōéX€»ŻH#ŃéŃĶcżģ×Öu;óšŪ±ŌdŽ2„N3YՃµŃ„7mŁÖĖ›?75Bį$U¾¦«MØāŁv’CJö¬KRFœĘģvēńÅsĀ”š5HŁjz„®"?šįNŅ;Ÿš§\†˜;ł ČyéœjÄšÕĄhPķÉĻ\WKįIę“P”?–©GµĖ%ŹĶ#'+]“Ūjś×’‘ČpĒAė]·…“­dI ø`ŽƒŽ¶c‹4©ĮeŚXuę®č~\]äįśóYÖÄ»i”­ /æļ køŽI°ØŠ1;š×Ѧę’ćäcj‡GµCØī/½Ż„žµˆeŠŹå„„üŪĻŸJó櫊ōjK•(š2ė6–qČ 3LČłkWø_ģa=§īĆq÷‡„gAŻŽ³¶U±Ž«x²ćģ:r[ĒÉrsėU&®•ŹQ\—źT72°yˆˆFs·×|Վ§=Å«‡o(Ų:c8®&Ź «ūbq·’ź+ŃžŚG¦Ž$бĘgM’3 ąU×§Į¶Ģ(9N„īuZt2;AŹņ=źUŠÜ(‹ŠÖńSš:Ȏeö†Ī3Årfk|üĢ„»ÕęӔšŠōēJ éų@”ÆAZʇŪ0Ÿ1įOŽš ćŠĘgæėG™€zšøGC Šš^‹P·!ļzę-ä;ĒQW-L„ƒµ@Å5”Z3ūB,}ξ”ŃqęœDīk0+„p•&•FŲ}*[dŖi—äW÷ļQmœIl/š¬ėJÕÓÖ`Ÿ2Ęæ†in C=`øełclv„H.7£ uŃ#€1{ąRE2!'pÉ„(hmwŌÉ··˜c‚AżkJŅÖ`0ĮµOö“|«Ž­A©‘ ds\Ó¦–­›SMŒ“³øČ;$ęµ4ūžÖ˜ŖŠjónĶkéZ¤Œ0Ģ:×%IĮ…=I»E– ³˜/%‰©ķ”hŲ’¬֝Ė2dJrjh.ūÄ7ÄėōLķśœć£@.Ź|²€ź?½ž5^ōé“”ßĘģA«ŅB—?uĄ8Ī ¬mbÉÓ$Hė[P©&żŁXŒ-'„HŁ™:”0/¶Gnk5ÕU²słÕŁ#aėōĶ0ĄX€ŁõčóÉ­NA'£Šl måaĮŻėNXįs˜Ė+cš™ōłxŚ ģ3éNky”8SM 8-ĒA \s“äÕ±ą!.}Ŗ”W±FŪ|Æ5‡«qZ0j3ņ Š“„4¶'ŁJ@Ž"(ńŌՋk{ĀwM:ŪŖŒä ŖŅ_\³Ģģ3Ó„O-ūĶ£¾IØun‹ś«Šē/›Č0²]Ü9’`ńUŽ£¦«„Ć÷śšG²·gr{š±‘d ™®0;Um™2MźŃź² ±„Ņ÷¹ĶLµw·ķ#±©ć¶“¶RbŽĒM@ś„ĢO·É+čLy­¢Īg ,8ĻhŹz¹ÉØe‹HĻ7u$SĮ¬©b²Ū“‘×n*Ōwv2ßm)Sö­mtdš·ÕÆÄɓū>·¹ß֙ś8o‘¦'¶:ÖÅĻŁNļ/N“Ų•Ŗ’­æ˜“öĻN•q©w©—%ˆÖ[6Ū剆y9j»iq…ł Øpjœ·1ĤG¦¾©Ŗ’Ž_īEAŒŒ »²ķµŽ¢ ¢xó@źM[GgAĀõĖŁZVĒ‘µ±ŸJÓ²°ÕšLŸ,n Ō[°źEõFĀDÆÕ‘ÅAwnźFÕ ™4ŪĶ€K(CŽˆĒ5'ö`H¹¹‘sĘAėMIuf­;- ‘*Ÿ•˜śTpĖ*rnēOz؟M“`ķRēõŖÆįūE›y–FĻūGš®hµb•GŖ+­óˆų‰'8¬Ćwpų Ī2=*ŵ…¬x’{g&¬Ff›å·fP(åVŲӞīć,%•_2,§ė[0Éhė¶c°ž~•],.^ŻLŅ8'ØĪ*“öVČą“ąĒŽ©²–ÄŹ]K“ŁDć1ßlĒNzŠlv²)āō޵رߵev+żÕ f¶,a¶Ž«ūÖ'žŸÖ”É'f涌©‹;üׯ†TW!Ńm™r÷“ųkZeU#+ž95"ی‚°{žjÜļ°ķ¦„ ]Čd„#°-W­“Ż*,©ŚOSøÕøąFQņćōÉmÓoŻÖnĻ©6kA‚ĻGŽp"$ójE³ŅĶ…b£Óq²#ßįŃ`“j=wUŁŚÉ’’ģOÓb?*ķźŹ-ƒ ģb¹ā”Ž'Q“lGRH5f·féčIŚ„G-ģ;TńC…Į÷¦µŻŖräÕJėQLžģ18¤¹Ž×3›ŽģŲ„ķ Æ'ŲUØ]Xd±Sīz×0·ī‡īē#½6]Q`/_J=›cS·:ąĒgŹŁō¢D|@ł×żŗé‘å8’R x°Īž>õOÕ„Ü~ÕXģ)Ģ€qLó/Žēō®=õø·é#c½Lmr׀`™³ļеE!©]ožCń*/±5b Ä š,ö®"mNS²ÖE>„ŖÄņ:žķ„-ļb­R‹ź/hŃéö“ĘäüĖž™«+żģj@éžkZ6Oßg=X·ęTŌ5͵eśj„—sV_^jūé 4{­¦WSŠę³®ü?Ødķ8üėŗ5 žŽIBi1cÕb³ä³³SČ«öz“7ü×,ŒyĪzVD>ŗbIWf’h굓Ÿ \Ē‘ådc°Ø›ģĖ"Vb«E»p”ĶĻ_z‘®fŒ“ŪĒ\ÕØ“k¤”(ģĒb *ģpĆh"©I5«*÷Ńr]\:“+¾*7Pä ۱ɮ– %JbYb@G?6 *éśR7Ļp¤ŽH”J)jÉqoKMŪ“ŽNÜök>b»ŽŌ#©ÆI6zIą8sQ#F•öīß“qŒÕŖŠŲQ„n‡›ˆÉPvžGZa°™ĮŪÜ+Õ!±Ó`P"€¤ęŸ2Ę•}†;Ö^×]觹婔j8ۀé§?‡/V1ņ²ąć„z”ĆĢƅCīբ׌žģœzŠ~Ś)ūČŃįåoqž 4[šH¹ę•¬/”R¤:×ėś‚FčD-J:³0Ö5ņZØ(n­}Źø4äéĖTeuS³<Śo!D„żjĢIv#ĖŠńšļ,l­ä⠈Į#¹©åš”|;ßF¬yįsQū„ŌŁ:‹VŽ 82Ÿ½¹!µŒń#·šķäš¼*1öį‘ĪI,‰Xm».$įљݽZ8.ķ—÷!Ļf£ū®ĶĻ›fÆUƒHFH‡>Ų„“Ņć]ĀiŻÓŖ½¢µ™q‹ęŠņėKk˜åiķZir‘üdzv®īļA“™q½ˆź1T$š‚ˆ‹C'×5*4䬙n­E¤‘Ėēe%SnO\ę«5́‚ī!”ē"·nü<ńJWķ žüŅG£”ĒśJ¹Ę3ŠÆgefĆŚßTµ(A}rnĪÜäf­K¬ÜGE“oĀ{Uųō f_„1<;p7©fä`óšcTŖ½™ŒśĆ«g!½O5<<€q1ŻÓŒÖ嶂‘I¼©| ž5a–ī$Ū¼H c.1šJ=‡Ģ’³2¬tŁf•2ƒŽ™­Ū ÄMótÉ$Ņii©Ä¾bMh»†3ĶO†£q&f¾P¬z.ņ¢Éé!s8ģXfHĪÕ½‰£0&µ,bƒŹVšī68É Ž³?°l¢;Łä•Ē™ĶC³Z3h¹lĶ&汓\˜IdqYš‡ˆŲøXm¤ «3“i6-·2Õ'*Ą£pJŒ^ŗ™YÅī>ĒYÕ&(£·’iĘH«Q_]ČįōHžÜVe³(£ĖŌńZń$c5.Ģ8ņć'ėXĪ ÷fĶŻjIØĖq«\j[cŻ“śVdwÖO>×¾ø(:šÕšõ„LŒåų©G‡ō»4Ż}uGš:~Õ¶L›Łė i‰a!UŽöWbr£yÕƤy–źĖ<ŹHē Ö°“«Żȓil²8m¹©ŸĘ«k2ę Øä3YN„åŖ:`įkM›1i²GĄiHcSG¦o\¼‹Žą­Coń'LxͧzgĶIŒü;$æ=­Ä`į<\s­4ģļ÷ĆF_ ŸĢwölØŚ‘żqNņPqqļĒ ęŸ6·įł“0Éä—õ'śÕ õ;;q¾;„lž<֔*Ęz7©ŒčĪ/XčGuoz÷%„» ‡śŅ5­ß—ņĮ ŁWFēĘ ģ#¤#—TxŎ ¶³/A®ÉBi8ÅģĶXm®‘ƒ¢PzüĘ­ŚĘūŠzĶsCĘ֟źÄ7ė–V¦“®ŚĪ ‡+q’1P䶄)»hī±€ yJsж€łEÕT(ązÖšŒ²&/ĻTńjČ@@”īH—²ŗ½ĒĻémMe“ęĘī}©³\¼q…ŹłīÖ “øŒą®$Ļ]•¹dĘuŪ$@č}Ŗ¾«µ]½.`\3ŗ,ŠWųsŌT¶÷dņŽŻƒ…ĄWA-¤ń¼gāŖjZ\® µ“aĒsš„BµĢgRKI+£™ÖT¬/µqzsšęķ¬%ŗ¹#dČ~\×Em­YÜf[œŽ‹ū&Õs$q[ŽäM_,ā“ mJŹäś,édHˆĻ;ł«Z—9»1ā“Š®?*Õ±»uF–=3ŒV烓[ÉnĶĖu ĶÅs·6µÜź„#Īžčōo…~²¶gøŠŽYp箋Åz˜“BE$t(8År6±=üˆĮŚüUoÜé±Y‘mtó9ĪkŠäw©©čŹ\ńżÖ…żöėRŌĀKzĮū”«Ö|;comK5ӅĘqøWĪZ™ .YŚ4sÅ{W†/t‰“•K«ēY6üæ0<׃ŽĘ8Ö\©$zōpīX{«óōŗ¶™ubö­"ŗć0Æų«f"՚;ȤŠBNÄ<Šėµśö6’Ęī!é†Į5•¦x7T󌮆VüĀ„ā12Z%%å’rĒA>fÜ_[ž¦Łj+&֕#_RÕŪų_óŽÄŖ5@¬F6 Įń憼C¢Ó,E#Ī "·¾Ėq¦‰:ČŒę±ÅŌ•8srŲ8Ę“œyƒÅ~¼¶S$zĄĮ•ų®(XĮkw²įnYO^yÆŖ¼Ql׎–TcƹfĪ;WÉŽ(Ōā¶ŌdFœ1Bqƒšō+Vöt#R sĖƧ,D©MģtŚ~›įÉ#" *V^¬NI÷®?ĘVsZŻķ··óŖ®kžŌµū¹ļBY>Å^§4ŸŪ·Öß+Ź·ĶrPÄb÷µO”éVĀQ—½ -" øŪĶLŽ1Ó±üUᤅ䶹łTr{ŌĆÄl¤ -×å8Ŗ§67šTµŻE×ęŚėĢäÆJ’ŽŽĻČĄŽ˜”©r„8bzÕ[ϱ,[¤ņ‹¤õ­Kė‹»§’UŽO!I4]_ŁĮ0bŠhśå—­{ō!vńžŃˆM„ąq¹#>Ł®WāĆ[6.mSžV¦œ”9r=ͦźŅ“šŗ(Y,E‚Hģå9®²Ūū:7šņŚßĢäĖ ņČÆgŸ§JÖ“žyX® żęķ\xˆøü'm.YÅó¶tÆcꘊį„Ęą85½ŸŲ3, J–®NÓU²»’AĘTę©ųĻÄr]ĆEŠ•9牄AÉÉĪ*ŗf¼^0—MžKd™¶ĒņŒ“jž2‚ę &ód,0BēóÆ7’×uĆ9••'“`UŠ1óēŽųęŗć‡QŸ<79%ˆ”éņŌŌÓ¹ÕķbøUŽń‘“Š…5I^čłq1×ÕŚ vĶ2YMlér^éźĖ ƅ<qÅUŌōłµYĢ’<‹+óøŒž54jŌ‹µVš&„(YJ…Ó{ ŅüFé>Ō,¹ė[)ā‰ćż¹€'V$ž֓NūT ę”ä`rk—»±ŗ·æ1\##GÉ QS–„Ü]ΘUäj2ў©¦ų¾c D‘™śäS¬¼e›cP2?*M¹4£ yÜ­\šķ3Ć[ļe“”óžó[_šŽ\ÅĖöK`y- ę½*źńŪxˆü½€Årś®§§C6n¶’y q­U/“ö9eQóXĻŠō}&Õ·ÜĖ5ĢĄgåłTÖÕĘ„§Ä;]*ć®Ņrk!uūy¦1ŲŲ8Ę\qQÜjĶŠŅKoÓĀ®3š%:P26…:’’[v“©ėJ›¬“É£QĪįU×µ½lō»‰-ņrųā“<榎ŲŪ½āl0U?ˆZ¦“wjĻ4šĆ–jņcšSsqœOF®¤RåzĘ”āió¶Ž•ü¶•šøõ¬]_\h׿'W%ŲgĖ·n1Tõ¢2ŒÜČüąo—W>·’!!=É©­Ž†‰=FÆmJėāTŽä4mq)^›tŚWˆ¼ōI_(Ż‚3\’öŸ…­ļ¢x“ö•W’’Fj·ˆ¼C”±Żo¦ĒŠ1Ė,M.d“qÖ©TTļ(ėņ5ń'ŠZāśFˆ}ž!ĄT?Ī“HIė};Ó‚RK_#ŅĀ\,a®u8”?Ż“śUĖĖ *µóŹŹp@üyƝ|ać»]Ń„ø¼€xV#&¼·ÅÆ!fe“> "õ>µpĀŌ¬­IjiSJ›½I Vš††-Ė<×mŽ>U\ę·ü7/ƒ&žŌ.Gƒ3? üńĒOKt6^„ŒyįkÕ~ üfÖ®¬£Q¤ćs63\x¬æ0„}ߊčĆb²ś÷÷æ?Ģżń‡ōģó{iŖBcėµ0}k˜¼Ōģ­ķ Ćy»oŻõƟ4_ŽÜŚ+‹ÅŽ) ¶A®“J»ŗkC;§˜?ŁéķYGV¼-ˆ³}Äńi¶ØÉüĻOƒ^ø‰<ŌŗpOF-Š­uā=Oq–;ć‘ÉŚÜšę,Y¼ņs§3Ūž#Ą×&ŗC Ø,Óyvń}ę’kzy-8»“īKĶ”[¹ÖųĘģń¤2_ęmøł›½mÜxŠį±—1Ö§š„ŸĆ»I£»¾³¦rųēé] ֳ੮\Į¦Ø’¼0k_­į°žä›kŠĪT+֒”ūĪ%ügt·ĪbqŲŌ>.»ŸƎs]]õ·‡gÓ.g“¶“Y£ł”/QōÆ-½Ö,`¾”Ӹǵq9a±”ŽØĪ­&”(źz?ƒ¼m1 响Ž”A®Č|W»“ƒÉ…ĢØś”3]ąķć9öĶ|uńCö»Õõ‹a¦C§[ÅlŹĒęr{č;ŠŖÓ’ņ±É*TÓp‹åk»ŠżҾ!Im£²ļŚĢøÅO¢üDÜ«’…R0œ~uł¹į?Žó½ĢBžHāžńݶ½SEųÆįŅ‹±R’÷~µąŌÄ{9ZiĒń=¾XJ>ćOŅĒŁŽ/ń5ŖiņŽ=ŹÅ,[ņÆĘŚźŅś}7Įŗe湨‚c4,ŠŽÄWiį«_ ųßĀėż”ćX­“ģķ”#€~ŸJń_ŚPčž·ó<1Æé76Vć!a >~£­}__ ˆ…½¤oėcęó?mEū±•½ųżńāCéņMāł®4ųļäµy œ{kåOė·ŗ†ļ2VņCŖ[šō?Ś3ÅZ—‹|H·7ĢH‚-±Žzz⼑ķå%LGœzõ£‚£ĶÆŽx RkŽ–…6śx\2HȀäąÖ’‰.M”¶š?3pIė­sŗ«4gĖ2XdsķF‹esq|P»qži¼=6łšE)ŹZ-ˆ/$fŻ6ŗńÉ5Õųг];nܜš]EH®ākŲ.?x/ŗY®mtę ±`Ćp A*+›§v±r«jRÕRśžńmą€[ŪB~ń8÷5ƒć)-“Ü©q=Ń\żü…5‹ębĪäg&« J„OzZT•’e«‹ #gė$$ī¬ņł_\õēšf¦ąHØpJŒõØŃĘŠqÖ½ztz‘NȖb Ų=JŠ6'”##=iü’AĪü*ńƙ ŗ·Ż8­š²Ō¹38 ­‘ 2\ī%xnÕfź7U+Ē=MV F20hZź+=Ą®ųBž£łŅĘ  'šqSĶ-¾3Ž?.ģ-ōbł›еlƒČč2FNj+vŚģIąō¤žL`(#֓»Š«Y SĖ}3RĮ÷בĻåUĪ_š*ĶŖ”uœ)½1nś‰2³1=*­ĢnYAOzŃø+ē‹#źµė“\0ć9„_b§Ūl`ē‘Å,ēz *‰•üĆ”÷„åĘį€*ŚBŒ­”+°(Ē5±įXČ„߀qŠ„§Ąņ°Ų›Ąī8ķ]^‘„ĀR!øÄź7Ö5%d\4zšäw¶F©x+6ōĢb1Č_9Č«ś’”šj»“Iµ6&8cīkodmŠĒ1( +Wm n–Ƭbd”ļD;Oję/g‘Ż·Ąõ8ļ]§Š8“ØmźøÅa[Ū©…Õˆė“[Sžš‘5Ź•Žhņ²:b„Ü#ĪćÓ•µ{m²Ķå-ƒéYÖŠ…Ų•č?­mtevChY_ ųSźjk‡Ģ<Ņ23֙u·¦Ņ ŒƒTĻņsĒ~(i“= ,^h$ ®FF šŅ³›ķČ@ŪŻūÕmÜĢ®GAŒŽŗølģžĆ—"4å3"‘œéYÉ„øŅj<ØÉ»¹2°‹qzmōŖwŪQ@ģjšXRžbJäÖ£Ō-§šĄ nA*Ū”Iø­Œßµe¶¶BłŌó—-ži÷ņ‡}ėĘj¢ĪXŒqŠŁ+3µ˜žźĆ×ėJ€«‚IéLĘNvõ©ćŚSƒŌdP•µbQ#RŹz‘žĘÆŚŻ#Xy$ķbsƒŽ³ä;œ©<Žõ]„\*Œuõ¢K™j.~SW@ŗ6WŹŻē8®¦Īä]Ē!ĘÚćć"I†ļ/'®n„A£9a×'W=HßŌ֛v±k[xįŖĢü †ĘĪ4 »1-óz "™$·óŻT±ąę³ļīŽEŲ„ÉQŌUƙ+ jÖ4'–>cB”H ƒŠŅh Hаܹ# 5ĻÉ!.ę?Ž fµ¼?:ŪĻ»Ėß5¤R¶¤É¦ō-x»÷2łjx\;ÖEŻą’Ģ(Ź·N{UŻaŚāęI0Ą™¬(ż”ĮƒžiĘ*ÖnH[=IćŖŌ°Ś»‚CÜõ«vn¹jģ*Łķ·ÆÖ“©e Ō.g„€ŽŹĒvqL‡rHÅZO“„k—Ś„cŅ«ŲÄĀ豌cĘ{T*ŽŽš8é—RGr²8c“ö®žŁķ§øI$ Į[µs÷–žLŒFyčGz‹M/ŅH®Ķž”k9SSWCŒ•»$°ŪĻ$›”£>réō®wĚiPcONł®“ķ‘lÜČCĮéYÅž×;;vŽ»©S©%ī²Żµs–’ŽtmĢ„ż* IF+ž‚ŗ«„C^ł¬­BČm-$œŸZčD÷%ƕš±u¶©awĪ8ąƒQ2²¶Ņ­ÅIæåŚķ„[wŲĪżŲĄēw%·f­†(8^óŖū3ŚXłÕŲv% C¹ˆ9µLŻ•Ņ)+ŽŽI ķ¬:ŌRŚ7śĮ’F9­mX5“v ®¹g• ™Sp ä”8ØU: Å%¹›4° •ōרų,<ĀÉ'ĪÄńŠå4Ū(§ŌUB‚:äśW{§žV!€ƒ“ķ^v2k”×A+{åøe<$ŅmŒøÜWŠzFŽsŖ¹(ļ„$ōQÄn’šÕAVưp2GÆ:]ŽÆr+™6—h#€3ʁę$¶ö®Y¦ŽūW’ŲĢ$z~§įՒvdœ-PśžCL“{}@ ˜’AnÜŌó(­Yƽ+UøųYmu)£6Õü«Ä0M.¬KīP¢ŗļŲ4Wp¼ »H›‰÷Ŗ:œėū”4ad#iŹćŠŹI9]#yĒܵōbxQķ,|=,—3<­µPē8öÆ@šDÖ뤉Š«‰8ĖöÆ:Ķ•ķŅAå³·ŲVƚ·és[ĘēżĖŻĒ±Ŗ®œÕŗł“†J›IģzD̲[d·c¹wXŅ}”HĄĘ2dsĆI%LJ‘(gĀÆū&¹›Ė+Ō»• ÷(åZó ·W;Ŗµ;Zēä±įˆK°f~ #‚¬Aqå)Ų€“Ü×ŚØŸ®XƒK\å¦ā¤–ŅĪÜniē¶k*ęāwlyŒ«Ü•IĘ 8ć9¦“[Žf›ÜĄ‡/,7& Ī;ÖTJÄąpX†7÷Zū•ŌÕ·¹„s·kjrMF~ž†a[%£WW¤[mŁŁ'N}ėpX|„łČN:*Ō jQ°ž”x­“ÜJ |:‹i>ߓ½čK{“m̧ėZŠņ@ĆlRœt㊹ć1’fÉĪqC·TjŖŹŚ;™ńŻ2ŁD’xüŖå§•šļ3ŸAŅ­¼čџ1JśŒÕ]ĮIņŗz f‰•kźĖÖ·")¹Šcš³>”,’€¶źé는lźž=Ż›xõ«–„]ĮpĮ=،wdMFI]-ķŚ\Ÿ!b÷ÅM†Ó&Q¹»tā§ImR>ŠØnō¦[3Öę>=ŖÕE³1”o²±z£ł…b·!5oēø‚Ąu8Ŗ×·¶‘ØHŠ»cØ\ÕUæˆēĪ•Ą”bŖ=āehķmM,'žB7‚`ELŗ Ė1 ŹØG©ŖvZ„Œ2f8e-żāOJŅ’„Ŗ8ķńlq×4„V{!ŗIj‰¢Ńš0”®¤^;`կ좱žīā|ŽqĘ+ūŎŃü‘…ńPZųŖō”XŒp„ĻQka*OWc«³Ņ&•¹žažrZ®¦‡µšÓČßQ\“~'¾ ÄAīzęž|A©IĀłqŸQSķ+=‹xxEjγū2Į˜ć­>-2†BĒs\Ŗ«ØIž¶įW¾sŒÕ±©N2½Ž)'VZ6g*T㻹½„³6LjF*Ķ“6ńĘ<øÕIō®rPØä’@ģ*H59’uOCVÕK ƚŲč.m¢‘>pAśōØm4­<ɹćÜŽõB ™žbļJ³ÅĪĪjOsšWØ“LĀŠ{¢ļŁmc–(Ō{TQTl Ó®*‰Šā_½ Võ Wa·‘QU‡iJNڽM9#Š–#ČńRļ€?P¤,’Ż;TĄ^:ć©„ĢĒt“ĒqĖžĶhB°ē€ÅŗÕ T]ūw…ĻZ²Lqä'ń§ŹŁJÖŲ¹+q÷‚ąõØČܤīf㨬ۻ¢£ }j©æŗŒpŖŖGv­C)%{³UÓÕXžĘ£[Ē$1Ͻb]릒֪°ć³ēń<‚1²CĶ>I5”-ĮnuēL Fåö8©SJ8>œœ×'Š/5.M@|_Ø"š8ĮčMWļÄū(3Ц“·C«’:Õ'†Ļ?y³ßb×{ćK'÷vĖæ¾ćXām^YŁ| y{ „)õ'ŁFölõ˜ģōćÖ'$Žē“Ūé±(+`žy8Æ,‹[ŌH7Ē×52ź×Ä’¹aӚ…R_hŁŃŽÉž˜œŁß/ŠTR¦’S ņ“ČÆ?¶½ŗ,]ĖvĻJ¾—3¹Ė,;ŸJŃUwŠnŠK[Ä6nüLōĶT¼ŠĮÓhfČõŖ133ŒŽ•7–Ī„ ąōŖö’źd©.›hįŠŹį„;ū2 y“=jĮµIĀ>xÅ=lƛīĘćči¦¤g([fŹėgnøÄ“=i'Óm¤Ęe‘IĪźŃIæĪ<¹ >õb=穁”żi¦ŗ ńµ¤b É\–Ÿ‚;ĻēZ¶ZV𑽷“Å]‹LøN<£ģjĶž™x\ƔĄUs6].N—*Įk§Ä>HÉnÄՅ‘Wµmt[œ†8\ŽhŁhüe÷ĒjĘrsd­¢ŌĮIó÷r ZF˜ą…ntÖŚ5²FH“VŅĘŅ%;ŁG:V~ÖµŹä¾–9hRRCyļV­­•°O$Öųt*CH¼œć5śž›*ż6ŅuśDN‚ٲŒV(GĖsޤžĻł@( ŽqMŸ[F»PŠ?½Ö«l1;UYĻ·Jj¤Œż”VÄņŁČ>PØ÷¢ŽÕPüŪj7»»—¹hĒ­Mmmrļ–;ww­„mD”©zŲĹU 7_Ā„ūB©ĀŒ9⚶b0ß=³ėQ\ŻŲŚīŻ&O~9¬œÖę‰;ٲÄW7!žAŽ=*Ģ3ß>U¹®^÷Ä©°­¼ IĪēY­Ŗź×$łoå(8łEfäßBŅč™ß™ŃFf‘TV]ž«„+”y ²’vøŁćŗ•³q+ŽK7gL³ƒv$cœšŅ7[č?fž¬Łš’MŚZ8%˜Ž€š*„ś­ó¶°y ģµz+Ż6ĶpŒķĪ95N’Ä6ÅĻ— )Ó9¬ÜÆń1J ’»EĶžē`ó3É߃WÅǃƒ"{ī¬+}B”2£†éĻioųˆéµqoMMżŅēVclw¹ß”¬«¶bI÷ŗK #ø`  õ,jkėńūøp{ƒÖŖé«2yœt8½ł\*ČĘqUŪN»‘÷!ūŠķౌ|ģŠ«éŠ¶ĘŽ `ŠG—!¢z^Ö9æ Å«ZFŽ[;sĘkR[­c–‘%Ś{VaÕ-PüˆŅøōéZ>"T"6³RŒ{Š^ĪwP¹mTŖ—4¾óŪRŗˆØs>üwļZ¶ZüØvŗ2ńÉ­8ē†ć2ż…rx#ĘĶ1ŁF§ÜŠŻø=R±šŒ”£I‘XėQ[Ėølōć5,ŗŖĢ›V c9äÕ«mWiGj7sōŖ_gŌ×>}ŌhIéĮQ¤ŗ~f.„ōE«µ2¹c× S“ėbD›s§„UūŁū—ĢN:Tļ¢Õ`¤³¾{sе5dD9"ļ#«¶Ó,ŪŹńŌŌŅéÖ°Ž`lŽ9Æ<»Ōu“RĘ}nī`«™<ē'£ŁU{±©S—»њ(Hł$IóYś”*÷­ż+5h>yåŽ,‹’M6b×dG3ČsŌ…ķUI;ō&¢¾‰‹…”Ó>5'<šrjģ1ū$źīŲę«C¢Ū++Ÿö°+J··P±żžą15s“ū?ķDµOŌΟ@ŌŻĪoTÆŸ­,ŗ’0ĄƒŽ­šŁŽYŚ2ČB©źĶDā&XŚė,Nv„'VVŗ±¤aķ&̃¤_XDÆ3‘…ØäÓ¼AräUŗbMø®óNa$[Œē±ļW¬ü¬šXägœÖOÖʎ‹Ųąt­öŻ"HģĆ~·­“łR5-Åė½ś×FŪŗ† Ž•‹¬’h±%XÉĒ„ės½G=Tį]É >U@§Į«L–ŃŪ3h#ߚä®,uyŸ‰ž8ś§™ż‰‚CHĶźĪEi:2æŗĀjv³:¹·Y¾F(æŽfĄØ®õŪ q±īƒžĀ>EsóxwS™?zĪ£Ųž•oMš«Ē$ķĮ©•;nĶ=²·-ǤÖ÷·$Åo3ՉÅXk8† ĄÅŗįXœÕ’ģė+ `ÓI.TghlUqrćē±I0GóW}.LehA3J-f‰ORÜUŁ!KaÄQ‰[”cQéöś™u–č-»³õ­“·¶Ś£boĒVÖ3’LÖźKĢäļmµWÉĆĘNM;OšżĶ‡šīGĮąØĒjéÆmQ›1Ä$`:“W4˜u]ž\vźŒ†’Õäˆ{ā¹2ŖŃž)AJĘYŚpĆórÜčcŅ-õ Ia‡9åŽ1¶Ņ4’IHąŚĆ×µ’hYŚ9@UFӁ^ńŸTÓēńƒĮڼÓ&¾Óˆe†£‚nms“ūIā’ģĶźzœæ¦Ó“;q3\€­+qŽĘ¾j“į½õĶį:¦¢¶.AĖŻ“õÆp›Å–VV)’…‹ojņߎ~)Š}/n’pÄ_<×Ęą38ā#mķßcé+ąźaźJ¤Vżzžqā’ ¦…&Č/¾Ų­‘¼ s\ź¼vf“ź[ŒŅjž#¼k‚³HīŻ3Yw÷W7jUü³ßÖ¾š•HŁFP³9ŖRœ=ēRęf·«Omrź®Ä1ģ+6;’4åqŸZ›QŃÆ„»ŹD짟šÆč–G ,L¹1Ēē^„#®Ž*’ę/R­¶­ •A#c“ĶjZĖ5Óå§EĄ 8­!šņņé ń\A§;Kš”agö)žŁ°²”ĘsÅ=ļ…ÜtgovZ¼S=õ…²4LOGZĮ7…õØ)#3“ß½kxźK¶±XŠ« -\֛5¼ƒĖSœõķZŗqI6µ2U3Œåų§Ó5Ė{U—ģ¬å¹ü(_ķiĄŒ[Čž•Öé~%/„ł2˜ŌŽO5›wØŪ¬yIĀ8ō<ÕF•ĘņVf3ÅT¦ł±ō)iŽńڱبøĪāĄWģ|#ØĮóÜĢdģėSxo[½óvīÓp@®¾mNń,’y¦ī}ėJTióh®*õē(č’—k(–(ŒvŽsĒ©¤¦›¹’ī%f#§AU5+Ūė„hķį@ŲĪ@é\üŚV”,®ļcoįSšėåŲG «Sį‘£­jÖ 1¶ŠĘ£ŒØĪj¬wŃNƒĢó@8©bÓm­į"1,Ķ™ČŖņچŒˆb™¤ĻaŠĪ²œØN+V‹ń_ŪÅH¢BĶĘźŁ·ÖćNTXTČĆļäNŌcW¶™F:ž@—utāą^ ƒ¦Ķyš“{žµ,U4¹bŽ¢āžsyĄ`½@±§ź¦ ė’Ü`×5„Ēuw›x·€Šė¼%¢]_\łm­ĒeĻ5…Z Ęż ©×iXé“Kad “(B« ŠóæjĒR×gŗœ~ņC÷Pcڽ"źą*ĮhTĮaĶy’Š“}Fß[–9-ŁXn­g†ĄB”œāŻĒ_Ī1•®eŁÉ3”Åå”ļŽ½įg…nu»µß2A™\Vƒ„ݬ+ž,œņŪNz‰qwi`©y9ćänĻźrښ7„1—¼ĻSšĀ»}ZĪģŪLm!fy±Š{ń^p$·Ō®R4,#v³‘Į#­w0ųĖ\Ó“;> BK { Vl3O„yĘ·©GJ"²I,§­qałÜ1+RźĮĘŖ hkCk©Ž@­#lˆó“ž ^[Ią…Wb*·oZē,uė× )ąq[¶ZŌ{^ié¶¶§Ķjp&­''ūÉŚcH ČķRƦɷ+zf„ÖVHvonōU/&”0I™ō®…R¤ŗī—.—ŠŠöĀ8g\󃮛¢øvõĻJ‚ī öa7˜H'­[ÓKE!’ęXŠ0čH®ŹTjĶ#Žr„.SÕ¬™v“2;/¢Õ;E¾æ•VŅĀ[™q饩īu«keÄ1 Ēń7&“NńŒŠ;“ōŚq]ŽÅA]īsÓ­);t:Ķ/ĀzęŸd]2(‹õ|ŒŠ4½6;ß6ī垫ןjĄ¾ńÅ̰•’ąć”łswśćO6ć8öē5„jZ-HŅ„å{ž¼čĶ„]…Yīš(TąüųČļ]Éą :Ō»4…±×Ķėł×Ź7šŽ”µ–ŚFĻ@Åd4×ņIKQÆš¢¶MqIāå/rVGO&BõS¹ļß”ZĻ„i–ģgµ{«ĮĪē* aėž2’Y D[(łrƒWÆŖK–Ē“'*Ϛ÷¹‰“ÆO“Meö2NL…€ĒŠv¦č¶š„Œ©ę\.ĄsŻź”:¼ó©7²Īē $ņ+”šV•Ŗų‹V“²²‚āa,€eqłW5J¼Ś%™×‡”(Jń>·ż“<;{ām*"nDĪepHōÆØ“m;HЬŒW‡ŚŠdĄ'•Ė| šäŗĆĖ-6Ž1 ńĄ ’0IļšŹń„¦¢š»$²3‘†® 6§+‘čć±qęPnē„Żų„Ł…Ŗ)HS“ŅøŪļ߯·32 8¶=*>ÉÓA–āEfŚ@8Ķdé÷ =ĒŁå³Ž8˜ćpČÅgR ¦äȤéĘvŠ»:Ż TūL€³īlt©ÆµĢĢńŲѓիŸ‹~“v’g'ĘO|V£zĶzīŃ6Xämι>­­5;!”%cÕ|©>\OtR)€½óō¬æŧOrÄ\4GŠ)É®#O×.£ĀYÅ4Žß.Ōם~Ńß­üqė"Hļ¦_1 ą1Ø”‚ŻF7łˆĢUӔ­ó>ƒš\V±^yqĶyF„ä­;ć?ŒtŸ诧źZ••ŗķĖĒs'į_ŚVGŠY!“6ģź|²Ķ÷N:×Ī?¾"źŚžµ=Ō÷w Ņ’K–95 3œš”mņ0ƘņAr»æ¼ś‡ć—Ę;Ć«}“ĀѬ6łĄ¹“?AŚØj~<°²šzŻxĪžKéåL¤vŅ叱¾+ÅūJLwRžX±«r›«éaóf–fn,p+²žNjUR9)ę5Tlöń^‹s¢j“ßŪ™–āblÕۘװÅy¾©®FQć²¶]™źÜ‘Xڽ•ĢCē—å^Š­N±ūEÄ~D+ 1œ‡‘æZōÕ}ō8ń‡RĶīOö¹„P'uDģMmhŒ°Š«8aæt‡~Źß„„“ÅeŗūC§]œ ŅYÉy«]łvźŃĘ£fĄÅĆ„=Œ)Mæü&z…„¶v×®6O–ä ȟ^¼½eI®f˜ö“ĶT·Šf†Vß¶eۜ£ŠŲšĘ…67žhiW!"ō8Ⳍp”āē ~\±UT\›_2–½$1²–s&ĪCō ÅӅm‘žw1āµ/,ÄŅK,ׯ¹•‡OaX×f;ÅÅŽöW@¢¹aUĻDĪĮ9s-!ÓĶŽ×AņŒ Ēó­)õŻ3KÓ’Ń9.Źł×źzÓĻ{$av¤‡€½ŖŽ£'|Ź)Ļ*s·ceQGE¹ÕĻćK±|8·Xł†ŽMVń_‰ŽīŲŃaWKƒ\Læė2†“åEkņ»øęŗ³ØFĻ”Īue%a±¾ėF0yĻJĶ/›ƒ‚qŸJÕø žÅHĮéķXČ“Œ°ÅwRо„r0ŗ9˜‘ךT#Ė’hTr·ļ”.āĆktė]1Z+”vوƒn3ß'­83 Ā’¹ėO²sųēµOs刾éē„g)D­1 9ÜN:Õ-»¾ģ•;œJqéŅ”qĮĒSV„”L‡i6:ØdĄ?­:1Ļ”éN•Āš Ļ„;ŪbGG’Ŗy9ėJN `ž}j6“hļŒqL`IÉ=yĒ„(«Ž7źLēŽŌōÜēŌ9;{Ó­÷¼sž”Ų-ÉāÜ$%OĶM˜1ŒxjšĶ”9%H$cšiaęĮ5,Æ@¶…„ˆ„,s׌ øFŒ”Qø‘†©"økyqy<ā‰$Ģ…ŁNęē#Ņ…'}II½ĖŚ™n»ŪŒŒ„twŚ”Ś9™d_—äœW9g"¾NݼTc2>z®ģó×5œ£wvSFÅĶłø„ÄbŒ³µBvņ XĄ-–É#µJźeŪ€XdƒKāY.ĀĊ”Õ• ÅŖÄŚØŽćN†}ņ"Ā€M6Éą[•–bĢås÷E ø·1‘–=H©'@–FR倩k[ “V¹”؁ ĘØ”e$óŠVSź>UƒŚˆā;Ū~üsPź®ŅNäÅVŽĪIf]Šä7Ål ­Ø¹“#¼š$#ƒč:՛^H°WļÆZÖš·‡¦ŌµH"ˆ’YšĄ@®‡ā–Ÿs…Ŗ‘=ŗ|śŠ®e²Œ­vr }ž#9Ć “š„I<ø 7Œ ŌҐ-‰,ŹŲéTõˆ …޹Ķ&›Ü\Ź+@³ó¤‘äl zUQÄ–Ź ž“L¦+·=&­fĖ1RǹėҳŃ;Žś˜ćŠēńÖ„hŠIµ”‚FŖw+[™ŽĢs) ’1ĶHqKl¶ éĶK ĮOSņŌŻƒz‹gnÓtc©éM•d€Źpq[Ūd_W+œ)ėXWP¶IPĒ SŒ®&æ˜#}¬Hb)w¼‘•å†).øU%¾µ»£čÓÜ[bSjī\œfžź·S=£‰a ‘ŒāŖ1uVŸĪÆĪDM“‡2w'„f\3ł»‡*=²hŲæk¢'„`uÉć8©ƒmĻ8^ÕGĪĻf©¤xÖ07’Żź,Ņ ė©|†q·pę ¹O,šõ„²™|µ\ņOćN¾t#b’qÉÅčk$¬Br‚¤QVķ§xˆN¤tĶA¦¦%&HÜ# ƒZ"%ž`Š’?Z_ ”*Ļ(bsœ·P†}ėĮ:hˆæĒ{zÕŪø¶[äžćÖ³nŹĘ–¾äDīČ9éÅ-¬~\Įˆ<÷ķPFĒxR~P*{Ė #U|«Ē=i­4© ŌęŻ&Ąc©ZŽB¬Ćs(#ļgµWiŒ²1ĪĶēÆéP˽ƒyl y”FĪÄ_M7-\I0żÖå;‡ŹG„Oe$±Ę#l}ilSäBź3¶„ˆDŅóŃN 6¬¬+_B¶„ ÷ŒæėqŠØŠĒ€#ąć½lßN²;(o•±.NŪ§ņĪąÜÓŗBNŚt–ĻövĮćµ$1Źdōō©-e''“Ö­ŪÆĶž™…7!Ł=™'˜€ō­dŚAēłÕg¦xĒCV €ĘP‚ĶÉę¦IX«Üļ<9„Ż­ŖŻ*å$^=q[PĀQ+ș'ükþ'k}ģw ņ¾\r0+¤Ń§ŠKŠA½¶ēåā¼zÜÜŚžŒ!EʚܔbĘ)Żv9ģqZÖ¹(”A¹ē½>ĀŻ%ŗņąŚ®ēŽßZ—RŒA4±ä™!b»æ„ń’ė¬\“ŃN”Ž’F吶ŠŻwnRW'o­-ģq²ĀÄ®YI&øˆ$ž;ԚI@ŽFŪ‚OZėQÄ” Ėņ® ®Z«©×N:ZŪ…ćŠXdšfmźqcĮĢxņÜ}²18TpAzõ®ŸIг[‚Į69äUŪÅs1ó™I ć¹©É^÷:j((ūŃ8Ķ.Šócœäqšķ§ŽŽ/ ł°ye¼Ēc\5Ž“Ø\kKIBFĆ\Œ ė-äK-l'wf` q[Ō«³Nē4<ć”±ąūÓop²»ģW;IąšmÕĶ„—2H\eŲ·_S\„üwR!¶BČ=A¬ć¦J¤ƒ$™k™ŃR“—5މbłW/-Ė_a;F4žEtńG“Ų ²°Øą{šū'U)ŹśjiģŁĄlŌ¶śD˜75×ęŻ=rOzŽkŲѱE±B©}е–¦=†Š6āQƒŲśÖŒ:]“RryŲńMk›Ē$*ĻL Īö| sŅ“rlĖ›l”Œüɐ:ńT§¼¶Ż…F8Ą«#Ef$ŒT°čøÉ,•“&«™Ä‡©<×:§mfÄs{±/CxŽJœ½ĶmZK±ĶĪ;ń\ŗź*H+o$u5"ŽČŻ~AŅ«–-č\„xŁū`ēęSŸ^Gö5ļž0=s÷R”P7“Ū­S›i“޵­“9y¬ö;DÕ“ Ŗ±³®=(¼Ö-„ŗÜĒßŅøø· \`äZ»o Ģīœc®j6õ)JėŽ7%Ö£ žØš9ę³f×~aµ €1DV’²`ØĘx„›KgP6sžÕ¬]Ny¤ŻŅ üEOų÷Ž{ÓÓÄ$.c¶:c­S—D—µ€ĶA6—*Ė“œu¤é¾Œ#QuF³kœ4\śTgSFwōžõQƒI¤ąvĒ^õ~Ū@½v_įāœc.¬·(ōD^ĘßĆ#qżģŅ£É*L0:žõŠéŽdPdRŲü«jĒLŲ8@0;޵\šī&ŁĘ[æ,a9žµ,+Ø;|ˆ½kµŠĀ5“ p'ÆŁX[)fi“0mõGegs·2&AźiƧ³*ØDHüEvZŪBŽ=¬āģøsY:±šG!’óHw •@ąöĶH43d21z źa×4ų]"ÜHÜOjøŌł˜“ś3–‡K—°$c©5a“¹Ę ņ@ō®‚[Ą‰‘¤zŖćQmĄ%³rkHŌ›ÕD™(÷2ģ“éwĄ\ŠŠSrZVEĒAŽ®­üŪvłh Ž„¦Ü[ÉpÉsåägå47;ūĪòjÉ\†ÖĪŹ‡qŸFz·Śd=Ąo^µPiVˆ>yŁŪ×4‰k`‡ ČG|žhvi‘~–-ĖØZ ²ÄņĶKaró8= wĻ•q.Ÿ ad b«¶¦é(XalāZ§ ™Üķm~_¾@śµ\ó×jņ=«„†öįņY‚Žß6japŁ%¤óŠĶŅ‹ÜӜėī§”)(‹žŁ¬é®®”ąŖėްÅüAc8Ē”«VŚ”RJ6ł¼’{ŠŃB)h‰pęÖęŒSݶ  /č:RÜ˨ƜÄGR1O·”uHĪOpiwI6r\c¶jcøŚvŌɞmF_•Ę:ćŠĪŗ³¼—;årsܚéÖ}¹ŒŖžł9¤hī”`*žż+u(œī/¹Ź*g%‰źsœŌŃųzń›vĆéĻ­vVM€ĄųėéZ0•ĘāĪqżŽ+9āŃ"•)=ŁĒéz<öłĆō©5M¤¢F$€y5ŪÉ0Ž5i c‘XŗŽø°» 2wČ„ ’{ •%öž§ ¾ø‚p£®0 Hžó#ō¹ż­y#alœgæ’Ŗ§ŽņéŌ”·#±$Õ¹ÉhĖtŽ×9™“Šī$żj6Ņ%\‚FōĀõ®Źx+ļéW­ī ±ČćŻMT䝮qŗN¤~hķJ`ucV¤ÓuQČUöé]Ä )Rp}źŹFv)Ē<ēėQĻØ»KfĻ3žĖÖ°¦EČ ńW¬ōg28}ģõÆDŽŚ ČŖO¶jL8R¦@X{Vr­}.*Ś_š9 ;E½žbGL>+~ĻL’4ūī¹É«īĘqųSŅ£f ĒFµ\źÖjł†=fÜķ±¤`ŗ$¬OŽÉō«±€:g‘Ö°,µKs¬Ē#‘ļWä¼&ۜŽY½Ķ&ą¶4$•NęX\žäōÆ<÷&T³RK,§q–čF1»…R„­Įóu:›ūĢ®$ŗqĒ@qĶcß_[E÷W{cØ?Ō×7{Ēņo‘±Į™$ײœĆlųĒ„]œR:TŌäŽ1Kžyę“”Õ&KS²<“Ų äōė-Jv cņr{×Gg£Ü¢ļ–å±Ų Ė–Osdō!–kė†$‚7 dž†˜°Ü„>mĢ[HĪCsłTóŚMę,Q‰9ž#R N ÓV÷ę‡NļPŒ“ÜĪżČp įČōĪE^±U‘¾PϟAšÖ²šõŗā@HĖ7ZæeoHPĻwĀpj]-DŻ“e;y£“fÜn#¦źæ°„v‹XĮė»”©üØ ŪBĢä}ē^ęĀź6afū Ó.Ģjµ“ęCŚžäØ+ņg§JžĖTŗ…ń,ˆW隭mew6ļÜJ¹ö­h4RmšCĘŽōåō*«]–[‡É)µ›ŽNÜT0ÜZ]ޣЭX²Š£V ĢÄō<škNŃm?‰U[=wqY%(ģģZ9æ‡S&ŹĘŻ”hŒ­źF1W-“AņO–Ŗ9Œ×icgamh1y•w<ŌRźm·:°<¶šĶ×omĶž®ŅW9aiwø=’Ÿ ®dłī®Xśt­M[Z°'lœœ ʗRyTTNFsZĀ\ŹĶIJŪ.™§³B }0ĶÉ©fҟiĢq‚yČ<×2Ś–± [—¦:…«ž×nĀ’¦#»œT58ėM•:SѽMŅŚ-¬ ,Gpk+]}bŽ<Ƨy‘’xÖ¾µ~³[!Š; ē Z£k-쩱žåAžń«Œ¤Õڹ›ĆĘü¼Öy̾«­NķZ FłS­tž[§Ÿoå1QĶ_†ÅR0THģGšš–ŚĶšOž94š]4 i­¾ā†”cUaœsP “…¶‹Ufõ ] Ļ'iG#&«±Ņ.%Į»HóŽ™ŖŒ¢—¼”=éŲƼ‘¤OõQ*ž»Ŗ“Z¦żĮ$uQżkŖ}&ˆłiĻL޵›}isiņ“Ąޜ+Ćh³QqųÖ¦+³y…1ŠqŠĪšM’µ“PßóŠÆPŗĀ•qŠ©ӐQ qŸlWLZ¶¦qMȋģŗÕĘZ S+ü(jK+Ķj ü‰a*ùäÖ’‡tū’NɧŠN§Œ “VŅõuņÉę¶3øõ®g(7Ė$¬m6éėÉ4ŁnJ8īÜ=*ōrĒ–ų׈m®!oßĻ$c›­]°¼ƒ"8ī0@Ē'­D –±f‘—:6"¹€BWĪ: A}oƒµƒß·ćX÷­y -ė“U].¤ĀH‚?†…MŚż ć(·š«›wZ§ŒČUfŌ.Ž2»ĀļU¬ōĆĻ›$dśóмbX@SūÖ#ƒžj­¬\»µb xć™ŌĢKœõ5ręīÖŅ#…ó”p*”ĻØG Ūöx"õs’i·2ċ™di”NĶ驋éīŽmpČū0@ą‚2kB’Ä›h#ŽqYNdˆˆ‘!@>ņ Óģī-Œ$śeŖeĖ"o¶µ'{xpÓ£S žņÖ!öm܌e‰Ķ8ߌ‡ onē5ao٣ǔ‰Ž8¤Ū¶ÅSŠN÷Ōe©¼™wO4»ˆčœRf‰XrsÉÉ<ęē ‰9•$rž œćœži'5Ŗ&vM6X‚Ā8’AH©ćX ;¾QĶTBļĻļzuئD„`wry9”)nŹ•X³FKņņ€ ģ*s$™öjổ±äĒ^ŠyÅ\K‘3#”ōē„ŠZ‡¼ö*H a‰Ć•–“HŁ9nµ·i"©°°ē5jÜm@Ίð©rKaŹ)­NBūI–IyČ_JX4›4Ü¢VgōZčuI€…·lćŅ¢²ˆ6[wUū]5BŪ-k1GĆ’Ā؝ŻÄŒĢ98ĖWk]“’¼zUk‘±4Šē“B«}ˆöIHĶŅ4ōPČKc°9Æģ0¢žĒw®ŚÄÄy Īz£?Šģāäõ5„œŃŁsjĪ§ģŠ„ĮUwÅ=ZŻ*°Æ;Õ|a¦³ī<4i·­tP‡•ĒvéN0”–¬™E^Ö=i`V]Ņęāšf““ĆZäī3j¢Hœ\62A暺­éł #< µ…©k‚p~ź:ė‹ųc?$2?ĖŠæe^ėŅDųk9cVÉ5F×\….&]ėŌcŠŅ7–w$«ƒÓåķB”gf™&ćļFÅŸ^mskKĒØā±N„®^ÜłbŽE :ŗŒ čn5 *Ų6Č–Čl~•ĻjZæšēj“kø­wSĀØĘģā–!ÉŁÖsYéŹīįē˜õqśżEG«x’{¬GknØ`5ÉÜ\C†ƒĪxĻēUöŚ6 J\ć$ƒZZ0^aNrŸÅ©ÕK&ė™’xGśøĘ2~µ•z÷“^­“CjH@Ē©ŖÆs>ĀŅ{‰[ųŽZīžxgTXŠėQ1"«ņĖdŌά¹Š»5ĆŅ‹Ŗ“vGkš»į‚ŽXCuqh×Nģ0$WqØųfm6Ų¤vF!Q1^‹š’Z‚ĀĘ4*”@ĒŽXųŠĪņ#¶²°Ęvó^e |įüXøœæ›\<®|‡Ø[4z‡ÜcZģ| d žXĮ€:W¼x‡ĮžÕ!2ċm3 ī\u÷¦ų0i“‡I#š1ķŚµĒć”V—īž¤eŌŖRŸ-xüĻ3ń.³}oŽkf(x GÉ\ ½JR±ÄHĒJ÷Ļč¶ŗ¦š-ķ QĢ%†2kĖ®|=®čZž<‚ńg%”Šł ”f×5=ū\ś*u©¹ņÖµ»ŲóxzņŽ=ĀĶՈĪ@Ŗ>±¼YyRėƒƒ^äuhŹ*Ļr8;…t:1Ńu q‚(\ó*dér“^?‰­9×§&éY£”ų]ŚEą ś įó¼VįƒĮyŗW’ź¶²iĄUo'»‘W|3ØÉ-¹Ž;Ē…`ŲÆ*Xz±«M]w=89āhŗmž…ć{éć»/ovC·Iė^sā©uˆĒŚZÕŻĀö©ļXļ<Åå<Ē­GāSÅ/¤5½Ž™ęDĖó88ö«ęöõ½§.ż™Å^ʕ”µ]ї”x‹LŌ.>Ķ©Ł@”`?Xńg…<'wlÓŁ]ˆe۟,7_jį€kkŠ5F‰ĻPG9­«6ŠdA¹¤†Ažß5ŁF…|<żŁi٫Ы”Z—ŗ½īńęy7±œ¤VĮTuŪ‚kŠ‹M¾ŽRCŲr{ž­a§^GåApČHź^¹Mcįˆ.dß¢Ż¤å¹Ś‘_KœŌŌbÕĻ&īäżŖvļkžsö-VŽOŽG±qŃ[9üŖŽ§ŖĖ ļåģŪ]G‹4’x^O+YÓīŽ7ć ­p^%–ÖåĖ“L22ppsE:“÷ռʖ!KųmI0x”¼½‚i@Ē@Ų^ēĖæˆJ’„~™Süė KŸM„…’Õł?Ä ŠĒ®YCǬ}—ŁF„i»ÜēÄVsŠN:£:óH™į;õ“#•5—>‹*¹Ā÷^•½wuer»ŠaĻ?!ā’ĀKA0F2zšļUVHó¢§'vq÷zLģĆhps’EW‡AšI°Šõ'9ÆqšōšEéKt‰]ńÉ#×”ųsį®›Ø[ „¹%<ķ_Z”ļ» Łb$یn˜ō›KĖRŁX°@­}* Vga"³œó“Å}ā/ éZ/0É ?Ä;Öv‰aįį9‘Tģ¬i:ō¢ÆgźLiÕŖł<žŲÜiђÖFcŌ”9ÅdO«“ŗ‰Ķ¹ŒvĶ{$‘yq‚øĪk„ŗšÖœÓłŠĖ ōĻZģ”VŽē-ju)æyhqVŽ"‚ßl2F…³ü@fÆŽų™cEū=Ŗ3ŁFkJ’Ā6÷W;CZĘŹr÷©`šœ6V²¼·vģDzSWQÅY)Xq؜y¹׆õ ‹ŪEūJ"DĆ£Ņ“Ž‘ M(7DŁŲÆ=ÕļdµG…'lFxĘ9Øt½JSūÉČĒ=ź ”VćIMó4z嵆‡oµ!) Šp1ZZm’؟żH"CМgįל…Ō•™“ŸZæ§Ģļi™ī¤UQœŽ¦²ØÜ՛7ƒP—2¹ļŃų¾ŽÖŌ‹‹Øwķ=+ń?‰4—¾iˆiI9ē5ä—ó#ÜÉž”Į3ĘOZˆCm$Ć÷ķ#Œn®?aģŪq:½“jŪ™~G«ŪųęĪ(ĢIz(^*ļ†ü`°Ż™E’L®GJó½+ū2ŹT’F Ō×Og©ižHłc„Ž0p+†®Oi5s¦–& mwń'U}[RY±Š?Ef¹ų.-ķdŻ%œ„ž2Ē©­»ĶFĻĪe±éƒĶBöĆR˜įp8ĮÅT0°I^[ ėRķX^§š6Y˽ŗb“®c¾o™ķfDa»'­^²Ń¤k!¹Ś }M6]FŅŻĆy’JSŽ5uS¶®ö9źćW7(ŗl²Å’r8/üźŅjvš13l ŗ8®gYń)šē`-GM½ dĻp%”¾ī½ū×M*£¾ē-Jõ6JČé¼AāY„‹Ė€GŽ8ā¹ųÆē–šV`xük=äU9s…#“Yŗ†„o®®ŽļZŌ­G••gĶ#£½—hłŽGæ­sŚĪ¦BXqĮ¬M[^ód+‚:õ®WW{Ė»’Čģ±¹5ČŖ9«#¦qT×¼t:—ˆ¤D 3¹ģO4Ķ?Sŗ”īø“ŹVģZ¹Ė™m­#\ņśÕ+»ó$†*Ojµo{s%;i¾»ń$pCäBĪxĘģō®fēQ•„’āA»“ڹ‰dbŁ@”„fRIéŠƒÖŖuycd7 nmKؕ_–V'ÜóTÆēvPāCµŽNMgNIČ*q×uVæøq*£•Źź«hiÅźÉno~•ˆQėUų$€–Ī}ėšŌµ†"­ ŁļYź`ɒÜ5Ķ/{Chļ¦ēy.  9ėœŽÕ Ś€åóĒĒ%é‘B© ž5zÕ6V—{³ «aROCok z „ģŅÜŒåˆŚIćŗM/C²š×|÷Ūe ȁ^}.­ „äJDs’kĻ—„ZĆ›i”hΈ5s^ų‡į}Rcŗ¼…ü½Oć]}†«įłm§øøĄÉĮś«–Y š)Y›}Jµ%ļ&×s¶“žg„Ēj÷’;pīNkRœ„ĂēķN…ĶdŻų®M–‘Č„Œē85ĀųæĒĀÖ6šķć08 y¤źEhõVšQŪĢõ=EšÜ$w"ĒRH™}vÓNaK˜ łƒ`b¾jń_Ę;(Õć‚"˜¦[½yö”ń•¤›Ė„JŒ=ł®)Ż= Ķ”ćæ2ūϲ ŌnŽE1ŹS aĮØ“ŻZĢŽēP»Š~oŽ`Ÿ„|7­üJŌfRņās“Fy'š§ųFx“VŽyēyf.ņp£ŌÖ1©_šŹ61xŠw“µō>Öń_ĒųB ćÓv\^Ŗ0Ė}E~{~Ó¾4Ō|kńē\Õf2“ŒV?Ą¾•ÕüGšišõųZÕ„åäŪÉHŽķœw=+Ä|BĆūLüĢå©=ėŚ§ķRåMkŲņ«T…iņņ»®åiüŲā26SpŒąV=Ū’įw’>¹­ŖŻ‰m¢‹hĮĶ`]Ź€ČŁqĒ5¬`÷bŒ„{lKi ģ]Źzń]fy #’ įFZęü ™Ø4ļˆ8RkO\ŌLp¾roj¾]nĶÕKG•Z¬Ź#Ȕ,k÷†z×/Ŗź2ĖņnŪį@ą Ąŗ»šVĮrź+gB“ū[ǰe āœżÕv(»źhxRĶ.Aøŗ äĒŠ‚y©µŻbkXŒĮa=8ā«1²·0Œ(^ŁćĒŽĶ$ӖvēGmŪNzzšø«ī% —>h ņGJCø¹ä©¦Z“ę)mĒźč®āTdš =ˆZérßtD ÜӜʪp‘H‰‰ņĖžŌŗƒ…8SōÅ}†ŅHwŚį]ĘįĄõ«–ĢóČŠĶ“œsXV¾gŚ0~š=+oM‘`Ō!“irœ·”¬d¬EŪњ;-%·d ƒĖļPų‚óĪFH×i<±ķQė7¾u⒁A•ŃxFÕī•cÜx?»õ5›$Ÿ:§Ź?•w~ ±ņ-Œ” L~jź%b»3[Āæń"¶¹ø!<öm£‘Ē&ø½p5ƹ-Ńs#ŹrA<óZŗĶ̐];<Œ¶{š£aqlڊ¶ÅPž½«š—2-ĒK\É×- ¼›˜‚ž†±õ.@™\–;r=+“ńdpÜh䫍ųĻÅp£pp¤“·žµ¬&¤®ˆÕhĶ =ŦģC/ĖO™dxVåäłŲg’ įņUYwH<ę­M, ‘ Ŗ¦Š?ʦRMģ5{ŁW.#8Āæ”Ŗ,ŻHąžŌżr1 ęŲŲ68éPF»Ēzӑr܇'{9lœ1õ©ōøĢ“(/“g–n”ėxņłėƒß­i_ŁłqJ¹Ģ€SŗŲÆ1šœł}Ŗ]•F'ÆÓڳŽZP¤ņA=*Ģ»Œ# /<õsM±o:7mWf—*½Ē-u.xSHšW’^0Œšō ŪÅ6–Ķ *#LėD挰,[“«1ōö«’źŠD‰o „€#„aRm­ŠŒ}ėt+xŠĖNڰ•e¹˜`>xZāu›AjņB®Õ±»Ö½M‚Ž÷P ļNCö>æJāž"X}‡V%&ƒ#šTē„› BŅŗG(w$“øq‘@Č]Ɛzē„ ¹ e»ŅŚåG¾k„[©•¬K›$ÅiŚ\ÄcmČĞ+.0‚į‚ÉéV.ŲĒpLcåéÅ)¤ō)IŲ’;‰Ņ&AŒx Ö¶ü=p±ĄT †„ī탌«Z|ŒÆµņ»ŽA'3Ž–a=,\w?im«œŒõ«GĢ0‚ł!»ÕWš4p†$ņkR-F ĘŹ?Ę”ĖD’4×S;RA¹}ŲϲVf^A޽]ń"³Ü>IXĒ*¬‡eXnI§mIrčZ.³ČÉā„`’0ɹöØü¹l†ō©†HĪy¢É¾¦Ä"G³ŽƒęŒcėK&?tõ8õŖ^yq“!ˆ8¦Ķ1UB$##<ĶAßck܋Róa”īl!<QE o”6½8Ię,ŁĒMǚ¬Ŗ7ŽkekXÅ]1¢¹?¼/ÖÆZŗ?Ȥ†”¬h-’w½e IģÕ„„ĘMü`0œę”Åwß āĪ.‰ĄP¼õ5”gsĆuR_j]}6ŚPzūš«dŠl&fŗ ›ŻEK”źĶr|ČÜķˆńĪ+¦šO‰%·ŗ†ŽćżJš]&°£·‘Q‰XÜnĀō5h’łr¹R~SŪ„Ī<¬šs”${žŸ­ißhQhĮ§”óĻ5įYݰ–9Čc^=¢ĪÖŚ„sĘq†Ļč:uŌ×:vųG.~fcŒW[ Čļօt’¹c ē`²·ĖĪy®›F1½©ip˜žõsŚ|#ģūŒŠĢ@É&½Oö}šF­ākŃ<°kd$»åF?ē• TŅ&ńĘB›ę‘Č\I2²Ä7 ~s[¶pż§Nw+,K†cĮ8Æ@ų„”čš\×6±^F—–y ܂qĘ+Ļ5YU<0ĄČŖ&9õěLģ_…›”aōQĒSéXsÜ8™ĘS†"Æź× ‘c/˜„ås\C]e‰3sŸļWf<×8«ÕPz³ŲMŖż)Ķ„ŪČā™4³Æ=j ~¤{b½ø§Ōņ,®NöŠ–° ’ KpŲRĶg²ÉĘön{ī¦3”_¾I>†©óteFŻQ³äGøĄc¦*ź"Ē<\³ŻL>į"”’y›¤ojĀS‘Ņ¢­tuäʘ%Ō}MC%Ü 1ę'×5ɼæ&2ߝR¹˜ŽĢøÉ³ŽŽ¶āęŪpÉą÷š³ĀOŹÄzć¼÷8ĆJB@ ĄÖ©½ŒłVvk,¬żj=Šv¾ rń,å°»‹ZŠ·³ŗv±qĶĶ”†čžŽ(‚‚ģēœ)ķPĶ0<ˆ€ĒBMGQ@£ ĪŽ¦”øfåsŽŌEIŠrKA‰5ĢŅ•ŽŒzqW¬į`G›$1ćØĶAoұņՂž v«öÖę5Ɉ“Ó-Ö©Ä„+-v/[ĖoķR×šY>×pį"ŒĘ§Œš­Äq8%GsķŎģķ¦=+)AīiŻŲŠ}}£ĶŸŸn•^-3ąČ;ē­Ųe›9ädŌ¾`ÄĘ:VqQū[•i߯3Nb’/ʽzՄŅI\NGn+ Óē²H>bwāÆŁĖl’2€+VkKéJ×G)o”¾:ŸCҬE¢3‘ė]kĶīśŌOs–{ŸSŽ—¶vŲ„›ÜdzҢSŪ¾zŠÓŽČ,X)ŽōJ¾o=„iG2lަuec”(•mģ…ŻĮ<“Z6:r>\tĒ5b ÄEDŽpxŖ³G§;¦L’µW\™K”Ŗó"g-„6;›u|äޤÖ|VJ™óŻ1ź­1lķ•3īć‚[­ihķs;čm›ĖbøŽæ/”¦n„š6Żėą¶UڳØ4ēŽ6Vr>™«ŒFbŚźkŗ‚׈ØFźŽįŽR@yĮŖ§ƒó ™³ķK¬ØŒŖÓį¹&­'Ü-“&{öęIŹsĶA%šyyūc–éŒsRĆfĮ-1õÉ5'Łį ó+;ę­I­ĢŚ]̱k1ĪĘSŽ2Ōē“œĒž¾=ŽÜVū*¹ [µ)k@‡c2\`Õó‚ÕheĆbB)žv¹<Ցŗ<É?„’{Ež'$¹Ø~Õd­’÷&„Į=KM½Ł4æ&ķžjŠ‘ŗœĀ©Gy§‡Źõ"„·¼V D™>ƒ8„~ˆM»hliņܐAŅƃØq€ »«~¤Ŗ6aÜ⤕äC2JŸ/š†©cŒŸVuvæiHǘńÜõ©&šCęÜ’tāøĘÕ¤ø'šØ­éœę®ZŚ,ƙ¤f<ä÷¤įÜ9ś#bK‹e\ApĪO«Ō–—S·Üœ®Lš­a¦Ø^Qƒ3ZiÄcż!R÷z³KÉ-üóšC»š…ōēwłf—qėŽ8«±¢@īÜsÜÕµwaNÜŌ*¼»ŹFX“¹AÅ̊E„¶Óݟ÷“Č=Ny­­ŻI?‡Z™T”Ē#óؕK›SŠźVŽĘŻWœČ{f§ū<~_Ź»3ĒLT®ē:S$*9—Žł8¬•I ĒK6&Ÿ¾ĪĄc9­ū€Śā²üėpŁV}i·7q„āTAŌ|ÕWovG»vY|²I&²µ j8‹v‘ļQ_OŹl)’?¾+)ōa;dÜLƒšź§mj̧)Ūb-CÄ·žį«>ćÄWl›$ŻŽ 5v] Ź6Ģ×r1>‡jßNŃ£–F=É5½©­B”oc•–KŁåó$¶FH®i©pB–LÉČę»SL‚#å[UyČäŌ7š¶—|…C銗$śe”SMøu$EŒW©Į³k=óķtcņ®3[ń…“­“Ųp+Ž4Ÿ0 §ū¼ Ā£²Ųpę“=Y.ü‘ŗY½5OQ×­”BLŪĄģ£šó[=Ń ±ē·¶ó^ĒŁKdqšQm« «;É£XńßōkrЉ޳“Qæ‘Õ~Š#Ļ]§Zźņ  o±OŖZš Tß»+{­œ$ќ*;ūŗ“Į-ŁNÜ’~ˆļb’3ær ­-;ĆĪØ<ū¬7|VŻŽlŠŖĶĒ$ŒóYØ'¹ŃRrµä`5ģIyQ.3Āā™Żō‡lŒr1µ× Y#@«n˜ŒŠ–1(\"Ć8ĘsC‚Ł3(ŌÓTrŃizµŹ•Ś%ģ Ąv "ŽĶĢ®ąu=3]mEĖÜ®ņ: ­"@sˆ¤œž™RP…ģÖ¦œņµö1dŸLƒ+f—iśÕū ¹„\[iīŖ{°ÅJe”†ŽŠtĖ`šč4TŪŻ6XŽÜf‰'ÓBaŹÕŁ—m§_L7K"¾€sK&8l„į@NrX䊼’$– Ū„Ž0Zš,ē“UŒrM8­5 += +=6(Žeø¶9ł¹5,ŃŖ(0«£¬•«uhb‹3UėUd…2ńHŁéšØE%tdäöźd…21Ż)'ŖzVŽ™ 'JŌ0[ĆŹ‡g°ük[N·@<Ÿ]Ō¤™­4ŽćōŲfŽNpA‡SZ¶Épčø;#RNŠ85·¢jZ}øŚģćŽ+ Fv½ŽøK^TŹQYΊ …ČĒŽÅ6XeĪ l>µÕJŚUČŻŒp­ejSO6RŚŌ»™oÖ²D•ä‡*Žę%ü7­lVŃbWī]«˜¼ĀLŻFĢ8چ·üCg«ÄF·ećœĖ·mE§P¶Š9Įb0h•gmŃ­*<ĪŹVd–ö3N”§›ccŌńQÜAe1i$}½Hó]w…•\‘rŠČ#9«~šdc4ĮžXʵ¤iRŒÖ‰Żzžm=õ¤WÅnĻĘrN*Ɵ|×1å-Ģ|ć]ģ:‘#©Iaäõńģį󛎋Yne'z±{ē‚j=šŻ0„V÷RFüŗ„üd}©-&̹eČÉ®r&Ėc’}KUȞuĮv÷ę©Q{±ŹiéŠé!˜ 2€29Ē„YŠē$`ō ®nÄÉ$‡ŽŻ«kM·w?*‘ƒUȒ÷ˆz|&Œ H ĶóqœUøZA÷Y‹}(±±@įcOVļZöń„̇=ėĪE¤ä¬ŹÖ³Č §ŸSŠŠ·i_y*<&Zk8”Čē“QĒn‚’ķ\īiģmņ­M4Wņsø¹ö^Ka+ä—@Ʀk"ūXHšT“Œn¬ĶGÄsœ‹(ėõŖ*­]"Œ®vVā uŚ£z›%Ķøo•ˆćÖ¼ŽļÄ2© ©ē¾x¬{½rYØwRA£ź²¾¬#7Ń\ōżGU²…J¼¹ćX“ų‚ÜAfPz ąįŗžį±™ 殽­ŲQ” °Ļҵ§‡ęŅ:•R\±¼“:IJcŒõ¬ķVź+­Ų¼vr~čcTlt¶˜ļ‘¤AŒwÅjé¶‘IūĄą’xŠŽ4% ŒŌāćfĪwSµ™öˆ›sēwHšÕģš–”˜óŠõ×%֍b”ä’ĒūĒ|x—Khšč1We§2%JV²g‡f†ó$) Ę}jwƒQūO“nćqÓŽjv3!×­>ÜŪK…WsĄĆÖÜ“ļtbåY#•ø—V±ŗ“O%Fk[H»ø¾Č­‘ÕøĶ_½ŅTĢld<…'Š®4}DCµ®”ɇJæe{8žd}iķ?ș4»s+825V÷MŌ„”%¤Ń˜ŒńRiŚPŠbuH·$c§£ca…µœćļ1Ķj£"•Ō“1¬<%©2Hņ—~ąēÆŅ«_ųwXFŁmb{±®­|[å`IÅĒž+'Xńœ’Īėhį=ńžk>Tµ’U%šČåĻ‚µŁę>y»›«©š_€c²+-üŠŹ’Ż$U#ń\[Ÿ“HŅŹzd÷§éĢ·ß2¹POsŽj[¦÷Fuy=(„VĘnŠvŹ½į—…%»a=żŅD¤nzšóŲ<÷‰q3©ļĮÆgš¼Ź!R˜®¼UŻ7Å÷³>Éömkķ"bö³ulcšź<š$Ņ*Ćl»ĻB;WxcGÕg”7Łę`; õ߆‚Ę}×QœŠ*<#Ū±® ‚ŗłp°^œÓuż:ī Łpķ“qÉ®nį危!‘Hžķv*5£ń7coi‡›¼4ggeż—lw›,3É©ēÖ¬¢OÜŪ>§ĄĖpģFsš‚?=ĻÉędń׊Ž‘Ļ8Āö”NĢx†h®7Ą'+øųuń P²’5BI<|Ϛń”ŒrĶŠćµičĮmnDŽÄ°NI„‰Āŗ±“ĖĀāįJ^įö&‡ÆĆ®XEööBHĮĮ«—žŠõ;rŠŻ¼2æ#×Ķ«Ŗ“#lRŪDĖ»½užń>½hSČc/n¹¬c‡ÄP§jOļ4rĀכ•Ou÷Gs­ü+¹ÓÕ®#ŗšt<ķ'"øżNŬ!hö8”gćģ’ p’–jp*݊Śi6Ć’gūĒ9ęØk7fi B’zõ­éaą½é£)ÖØżÄō#ńEģ’Ūæ—6ÅAĄW’ųŸT¼Ū„/·zŪń¦”"1…h<ž½sš2Į$„Ī2XćÓ­ZĖ’ÖAF…ÓæźO O5Üį2Ū³Ö»³46»ŗ±ć?J‹ĆÖ°FĮŌ g5'Ä+”„Ę3“r öÅaF’NéÜŪ)r^ZXć|m¬łHd•ąsšņķOW»¹ŗrŅ0Pnj×Ks+\[ŹHÉž¦ø{Ä)z˟˜óŒT֎DšU't¤iéW²G1}ä‚2A=+¢¹Ö3` ŽÕÉ[F[ųˆż)Ė:„ŁøÆ=}k’•“æS®«¼l™u&ó§cĖ~õ$‡n@`N9’ ζ˜ol<})d¹#<±ęµēf ;Ś(±$¤ČrBīĪ9éLYö6ŻŻ8ę©Ė2€@aō«ł€ ńžÕŒäŸÄoN÷±¼ņ† ’HćŠÉÖ'!$MŲ}‡óŖš^č¼¹PkV¼Yßqfr@®W%siQw»²¹Ęjr]M},YĪrzÖ®…”ŻÜ¶ébŠ÷©ģų—'›štڰµˆ©ŸŹĀ÷5čђ²Šę«>]"ΊĖF†Š+I,AĒęØīī-#»’”`žŠņ/ˆ¾/)dĢ—€ą`óšņ«ÆĻ#ö‰ƒŌ“^„SåęHóēQJVmžēńĖÄ+£ 1Sœ·JłfāīęmIę{‡É\­]S[øøŽA,†@rīµĪĻ:¢ˆL`®Źu&”ČqŌ„ył¢Ķ‹·óm—a<™‰ėT.Ž#!»3QXM?˜U×呚ö^MreŌ/ć’-61“æ‚ēÓéSĪŅŌ©Rŗęއą źśā‡‚ ±ĢĀŠö/ųL“T7‘„ģź2C6Tš®łÅœ1}‹O†;KH¾]©€jµb!‰IĄČzR©(ĮhõSO”oĀÖztĮķ--­·÷EĄ5Ņź~!šĻL•c}įPžCé\ÄRŽĢŚ#*½!ą޳~/k6^š”‰Æg@€±ÉĶa ΤÕΆįN“Šł·ć’umSÄ÷0K4Ńď±SqWetā%‘žaĀ’jljį:޼×w–łŪIĶbk `øVĒ5×:4žÉĒJ­FÆQ$šÜŽRˆŁŃĄź­ŠōƒõĻßF‘Ź“CՖ\œ×ˆč³ĖpĶø§„kŁH!'#'¦}«–¶Œ—,¢z4³ ‰^›ŠśęėćMÓ1»€$Ņ`±ˆ`ģ*Ę£ć ė 6¶~NT³Ļ9Én+ć«ŪŅÓŖG•ÉÉ­ˆ.ž0 ;1w®xįe—;·Ÿü1UńŖĆųJžWG¼Zč~Õļo>Ö ÅŸä>i}ź–³į}Jt]24šR3,“Œz ņ}+Rŗ…CÅ+«°ć“ZņėWKh^i%véĮļ]p«Y=uG™<6„„¬zž‘c =«Iu“nƒ ¢üĒZĘŌļᰊv“ø‰ŠŪ–śšó)üFŪń(sŽ«’8¤²½žŚŌŅ4Ö5ēœUÅ5{«~&Ҍ]½’ć)®$i.ī.%pvÆ$šąn/;š2x,ż¾•źŗęöŻžu1ˆ‰ ¤üŲé\F©”Ü©ņķ-”õg\qō®ŠQrŽ›œ±Ŗį&š¹ÅĄfūcHŁun3L6W…bV۟Jō_ xJieVø'Ÿ˜‚qŠõoųRĘŅŠM-ŗ7=ĒS׳TT²ÜŅ0ęWlń]+N—OÓc–@ƒęžõĢų¶e›Čüq_K뾓øŪĖ޼·Å>…°t‹'*b¢Óå&“gxģy_„“v¹æAp$XXå{ ō%“DҦ¶¦Œy‡½TńEÜf‰öb¦qĆ0Ć\~“4’]³g;NIÆ# •ݤŚKńÉX»ćéŌJH 4‡µspd«9B9ĪM[×d[›ęg$ąZ®Ł±’pkŃĀŅ妑ķ¢Ķ]ėŌuõ5+±óÖCĘßJ¢2͌ƒVÆ ²™ c­iQŹž!“sē­e®Fy«—L^v8ćµV+‚[p­ii]GZü€å‰ĻJtĻ¾i#nĘr2¤@CŽŚ»Ō4¹* џAV į—sM„ŖēŠŅFFņAĘ=);³^„Č‹‡/éP\8n)īIRsÓŽ¢AŻœā’øÆ ą›¾čČļõ¦ &@ Å +•Wni±ĘĒ/Óµ;wś”×.šzqP–³“žŁ¦HŲną÷ŖģKIŒž5I] ©oyĒńsÅÄ‹s“Å,•]NJO7%ĄćiÅ+ŪD[jÉ1.vąF*®ü‚ō«JŽŅ’»ŅO •ąœŽ¹4ī‘mh,LHēŅ•ä\gœžµŹĀ.3ȤtS¶ģw©iXq¹€ĶžxéV­„!³Ät¦¶?”ä’}©" d9''Š«¶Š»½Ė,w*±Ē¹Øäp#9ł³Č©YQc·Pzdą2‚Ŗ=jbģ6ʲJB…})ńó8t”KäČć(ĆH¤¾Ę­½ ÜŗY9BwäT³C˜÷`’j¼¬Æ(@[åī+^Īd1(\1œö¬Ŗ;+„ēm”U`ˆ³`Ž›då·v)uÉ7JČŖp{ v–›°H-œÖPÕ]‘ŪVHĪ@æžµ{LG•Q#S–=k:ö)ŚģC†īNt:RIolŗØčk¢*Źå©ō,čVS6Ŗcžī'ī“^ƒqm‘n"•¼Ąw0cŠÄš¬1ēĢ}åNA=żėOS‘ŃP<ÖĄ {TJ|ŅH«F#Ͼ I/ö»G† ‚ĶÅbE6Ū“g€=;×UātYnÉsĖ®ģžõØZ+yE6€''¬šIw.Rv(\™„b¢B«ž*…Ģ;HRēy9āŗ kI„fRõŌ—Z2¼Źļ#«–§8śŃM]Ł9E+#4LFū¤g½Fīłw/- ­³£Ļo§ĶtHpcüń\Ō$Ģ«…V>½E.[;fšøŪ­†Rłl·4BN{‘QģÅpTjnQ3ƒ“Å?™ ×ŗ&ź ~¹©oåó! æģ{UŪ; ę±/µ€Ē?JoödŠH@\³ą ØĆK•¾¤z¼’ĒęH”¢ˆīĻ·„jėz‡Ū¦V ¶éŚ 8J}ŌŁ/ Tj‘ĮźkœælĢ, zT»oM mBé#Š=…É#i>µF L“˶ĮŖ7*°]Ł#¦jå¾6©Ī09"’FŠW7ü5vŠ™YŽō+÷ŗgŠĢńtĮ¶E!bŃ® '?­nü7·å¹2®ōņÉÖΧ§Z^铉Õ,zę°ö‰JĢo®dyåO\ÓĢ`ä䱞U”ØĘ©pŃ¢cėšĻtmŁRzWLmm‹]I0‰o»'>”čN÷\œTerNӊWwcŽ3Uź ʔG÷/“lc„KiJ…ē;UFŸm,Ьć#“W,n İnēµd֖E¦MĀ;«¾0cŸzˆąŽ TłEHčGj½aĶt»Ęį³Ž=+FÖk“åܖ.2žs¹»źĶ4ćdµ9¹-ē|ĮćeĪMdźq­ŗL·=Ž+ŗŌ糓ƒÉÉŪŚp;ר\C-³„Ī¾µp•Ł›…•Ū2<ā\9Ļ<ęžd8ėZjĄė$wü¾“Ā0q»5Óh˜)7Ō˜3·Œsޚļ€98Œ˜“ģEtęž–Š®g`čƓõõ«*ƒę?73Ž©ĄģÄaūv„™TØ@ēę&²äwŠ|ķčZøŗˆ@ŪŲZFhT*Ųę¬ZŪX 1ŸĻ=*;7ę)8䊊će£»v7>ĄdŌIsæałCt5ģW6ę-KF:œ…gҼ’įĶŖIgē©X7;Ž+ŅēcyahźsĘkČĒÖæŗĻSEØónOšĆM€k¶ŽķHt8r3śWŪ:ō–vŗGŲō³ ®ėuŒøcŠųŽģ¬WP'˜LQ‘Ī{Wooć@k6-$ұe Žą ąX‰Įé±·±uŗ ųǧj:¼Ś“šĪÆæc2ōeõā¹;™ķeѤ‚SµÓ”½»×ŃśV£§ėŽ ¹u²c$›p ‘ÜśWĻæ4˜l|A)HČWķŽ•Ł)SÄA=™ž:2䕎OĀ—źh„*" Ux„¬8šäD@?.A¬×³š(ĖŚFņ…BĶ·łÖ_Ī^Aø«©ĘIĮ¹OމÓZ¦¹dõ=M·‰ķ˜NŪ‚®cßü*“šFŽdcę'$ž+•“»žO—Ģr1†*jź˜Āóœw¬IüV•:‡”…aĮ8ćÖ”™› $Ÿ­ µøīڬ„£Œnb8Æiɜ õ)ĪrxéPŹUWån•¤Öń/ßr)#ŽĶOV?Z‡7ԨDZóäS>ŠHįHźkfuµ ņG¹…25‘ųXzUÓW"m­,b~ńų~µ!ÓŁš|Õ^9­±g7Sņž5µ¬k˵t%bęö±‰m¦)<ćŌVµ–  ŽHžuÆ–‰•ˆā ŗøQœ|¦“nZ!5†-¼Q'ČŖ1Ԛ|o8=ńßҲļ.Éb¤¶ā3U­ –ā\ØcõŖPÓV>g#”–XJąl'¾)`‘1ĮcŒŒRéZg”»„eU<żź¼öŗy\ł£ŽœŅ””P8ŻŻZź¶Č„R=€Žµ)Ōmå]¤…āš„FŪ Flu m3pŚ  ĪŃNé2®ä¹dŠķöY[ļ`žĘ”Z£š$õ¤"³)ū¼i‚Ī9!Ź…µNŖZŗMlV‹MLīćŪwZ±öfP 1ĄqW¬­-”Ł'ÆZ½z"XTDqڹåY\źQåĪnEuą3ܢ3 ę¶ąÉe#ea‹`'ž*żŖKTLT»œėÉ©®rćņiÖóMøyŅ0śq]E¤P†ĮAČźióŪĄņcSĮķYūX·°¦ä¶9{­V8œĒ’TrE@ž ‘CĄļ]|Zm“|Ę”ƒN³įUķ)„fŒT§{˜6Ž"‘£b’@GuĄ«öš…Ü”qdŹ į›½oŁŪ@ b4^ż«xQŠĄ ĮĪ Ł#TŚÜʱiŁžh"ORkQ#CÄ.FN;Ō,¬§*8'µPÕdŗ*V6śZئ'Q%Ŗ-\¬*ÄnM unõ\ŻŁD?×D‡«ŸžĘö~^eUõčR²n3'=ĖVŖŠ¶¬ĮTm莂]NÉTf_0żqUEüM! ü½¹éY‘hNX(¹·,@ĻJlśEźd.uETi$“b”•īĶ”¹²ŅsŒņÕ*µŠŒĒ0śšĮ]÷*Ķ&Gv2iM<é6­O*žbŌ¢Õ®l¤…É8EīE wü}3gÓ„P‚ŹÕ‡ü}NqųsķķQĪ"ˆ•GsĒsUŹÖÄģ¬k¤Å7ōć“R[^Zīœ'×½aÅ$A‰.G=kSN“OU'Ėg“֝¬O+±jg¶ŻĢĒ銚Ńb“cb}3Ś«<Øņf( ƒß4ĀgL:+FŻ1U{-iģtŚ|[SłÓÆ.£‚0^RŠ:ń\“ój3!5›yos+,Ņ7o½Ęiع?x%d–§Qw­[ ŹČ­čAėųU'×UÉRœc©ĪĆg±Į%˜śb“¬”rŌ~-Nt’UŠ’ćQ]€ĘU˜õłj½Ī£ršlEŒĘH­Ż;G2 Ļ"ž„fÆ&‡Š ŠH­–ČāŪķnŽÕ$6Ņ;d³—œ×{e”Z˜ņņƦ«CMµA†*@ā¬ĒdĪIhp-1ŽL„·TÖiv®1øSĘk»[}>%lcZ_:Ü`Bc¦+7Y="„į+^Lę-4żJčm‘åT•mYxn3™·wÉ«2\Żdh•OlՋI.[%å85¤’¼lkuaÖ^³‰²9oļf“-l †C³­gܬ„“ö¦B{ā«“®lœ‘ÜŌ^rŻ‚åŽĒḦø½Tŗ¹0¬īMs—©MēˆĄģ•©Z\„Ün$|žp”}[źÅAž’Yp€ć©joö֟l €[Ųd× Öņg1’5Dé±&Dt=MhØ'»جv³ų²c²)™G‰ÅTøń vܳ™5Ź<ˆ#ĘķĮæfߕ œT¼Š—2)ļ†ėZ6zN„q‚ó¹Ż×qÅlŲĒon1‚ųėV#3JŲ2ģ^’5C„Š_åc“ĻŪ@‹$×RHq”śV­ØŽ¶Ę#՟&Ŗ¾ŽŲŹ/z ķŻżk‹Ōļ/$…„#cq“ö¤£ &ūU%ĶģÕīĻLū]¤@£½¶ā:w¬ĖżBŚ5b²(n¼W'[ÉŹ Įr:ūŌSļ3Ÿ*7v=F3S _ciA/ˆµ©ź¦GŲq<äTiwJ£ļėW¬ģĖĀŠ˜G,ǽiXڈ#$J‡·5²wV0åIŚęü"²L7Ŗ…V?x·iąÕ@I,Ą÷é]źāB\œę [Uåćīć9¦ź;Y‰ÓKX°Ņ“Ė 9CĶn’m™«Ókśtå` `AÅeĻ{&”¤ P7ˆĶO„xu·^LĒ<ćīŅiZģqrŠYk4Ž£Ų®7Uń<Ū„qNČ­Żj±Õ˜Ø,.d$d–5ĮS(½^‡§ :tŗ“¤ø†4¦µt­nHHb\õ*+Ļöy”—ęZø‹©ČĮˆ˜č5ÅV¼Ŗ{±G]*1„ĶÜķ¼I®Üȃģó+±ėžÕĒŻMŖ“Ģļ2žęŸim81·`€v ä­6e™œ÷,sPŻXNd„ ¦]Ź«Üf­N«Z$B„M/zMü‹:–¦K$pŻyx÷Åt>€O"łŚ†sŒ…zćʇu,¤ķŚĄzŃ&“ØŪ®P}˜ÖŠFÕ¬KÆF+[ž”­hћUk+Ɵ¾d®té:Ć1PĶ ļ“ā¹œ|4ņ Ē÷ĻZŃŅõ-J’ČćisZGŚņŚFRŒNhONĒKż›ŖEnY•=jh’š•&Żķšf‰āK˜Š-Äńø= ó] ¾±n@%Ʀ§™½4•²w_3 ć¾"Bݲj»ĶfČ³ŪŽä×iµbØd,Žƒ$+Wń^˜f1ƒ ŽjaR7“–„O8­,r3ź~!lģ £¶3IÆā0ź%i#·­{®éR Gęī(ćóŖßkVŚŃĒ)®Gj¹F“z ­­‰įŌåÜæk•£žń&µ¤ŸJš ­q—#©&±%ņŪﯹŸgm¦Č‡2*ķé[F *é“*Óµ¤Æ~Å»=>É[Ģó’QéŠÜ°jAĄ#”®föĀŽ(÷[^!=€cOŠüř„ŽŅ‘ÓŖ”“»fQi¾EuźmjzF‘+łŽĀ2O,zÉŌō8ćŻÄoüUcT2ƈ"÷.+>ßEÕ.˜4Œ@ģ3Œ Ö“ŽŒēpģō2ēh`'ig~„-C&”r‘ķŽ$Oc“]½…Ž(÷łŃīĒ$Žk"÷FpĆ—9'޵qqf\Ķ;DĪҵ؝#'§9ĶC®źnF#€DyĒJŲM$Ę¢"/rŻiÓų~„3±ÜŻĒjN¤WSnne±ČGržhņ¬£Œ{mkŪhTI Īz VŗxrJξ„Õ›m:Żx IśW;ŖÆ«4ę|ŗFƾ ĢĻ·$öéV³#R7[$uŻ‘[ń[Dƀv°pB‘–UĖ6)ūpt›ŽŠĒ5˜®ƒ 'ażj[M1RlI‚ ć5·%ݤ`īu`§—s«Ū,Ģ#ĘĪIķZŖÓjČÅŠP4t›kKu-åocžMjŲF¬h¤õĶqŅx¢Ņ%ĘÕvõTų‚žéæŃmœƒĻ €+Ÿ•Ķźm żŹķÄ·løڵ™qyb1¾éĒūēšån ÕöpOG8¤žĮó˜=ÕūØ‘Éüė¢8vՌż¢NģŪÕõ+4÷rHG\©¬Å×Fą‘ɳžõcKŠō„Ž›¹qŻ›­m}‡Ć¶Ŗ„ķ°qÜņkeA[ž:‘‹¹€—Wƒ©¼ƒĻz»ż‹u>L·O\(Åni·ŗD·Ł­¢^ć)ĶPÕõ›ęa¬QĄ;’?ZاµÉžßšÅx<2HłŒ„äā“ōæ Z9t@Øł²Ņšę®_\Ū̾# ü‹ŠÆq»%ø¼‘ż^SČVmĖ ”Ÿ,ŽäŪhö,Fė8€ĻĶ‘üė7SדČ$1‹˜Ÿ<¼×,ĘŻ„½ ¢ 9TĘ@=jԚBt‘µyā!1Ū tČŖ’Ļ{uĻ3F‡ŠœÓōø.·*GĒBJ×g”č~oĻp ޤ ~ŃģĒģ£k³‡OÜဖ^ۜg5§c„Ķ·tv’2÷8ā½6;[[x#…@3ŒÕKūē‰ü»uAėS)+jŗŲįī4_= )zB›Ō‘Ž•·¢ŁßyŪ&ćQĮÜzWQ§i¶̲ŹB2ņIļYUågD\•šhõŸ‚T·šDK;ł`Øė^żąļiĘĶó‘ŠWĪžńį·pĒ…+čĻ…×ÉRHīYĄ8ƵiSVR=št£VņHģ,ü®c•Ōcę?“McO¹-l®ŠŽ„WŃŗn“Ø$w¤ń5¬–Ēķ…H䑚ė”Jœ£ķ,x؊գ/gZĒħ\Õl/0’ēÆĢ•]ŸYńĢlå¦>öÆnųįM*é[¢2©Ļf¹gµ…Ģvä×-j˜h®hEi¹čį§^¬y*=zyžce­jK078¶Mz€5{Kūu“™Uäa€k‰ń÷„n`‰®ķf3DA 8Ŗ_ ®–®žfąźÜ“^Ne‡Z~ք¾ļŌõrÜL$żhŁłžĻoeq¢ß­Ł*m¤ģk¦ńžŖ²ųA¤Ól–{¶NHŽ*ļ†d°Öō$·˜«1k;VŅʍˬ‘°8$ń\TiO—ėZoķ"qsJųjŹÖųYóf«-ÉÕę{ØĢródWOą½[Nˆ¬s æ@k'āXņ5Y¤ūRHXīą×=į{Ūd¾W™€sųŌc£$¹ ģu`9yyd„uQi#I㜩ū*šÄ÷żm“Żfßu¤Š,¬3Ž+ĶóōÆrŽ&¬W$Õ×sĘ©„§~jRµś3˜Õōė˜eŻ(LqĘ?•2Ś+Œ*ļoV*Oć]Xń NīńĄ×nsSC:ßFD&!žČ£„nŖŅ–ūœÜÕSä“9Ԋq½P±<’Ēšßš½Å³¾]bV<.G5ƒ¬Iå\4rFŹ}HķU“ö–;ŒeŗØ’ ©BdB­5×ī=],<ČĖq±3Ą&ÆZĪÖI¶Ś8nķ\¾Ź¼£¹ŅėøZg¦źŪÉn•·7'šĮń šObvæ*2H?Öøķ7P½WĢ’–čō&§¬ŗ£G$øR0B5]*õ#dѕZ4åš³"ī)ńāI#'“Ć­> .YäC-Ņ+Ń@¬9n@æó"A8,OZš F8å'˜Üšo)'­ŒŌd•›7­“7ūNÓ0`yĄ­&Ó̱$ Įu¬Ż3\Ā–Š-Ž7ā­ÉzņŖÉq(-Ó8Ķ+Gy#7Ļњ¾Ńć’Q! øēē‚°•ęķs„Ž­ü—¤oć¹cœÓ»r4üŒēoZįīn6Ģ,~ns[śMčpn'§į\s©(JĒE:.P¹ĮųĻĪūao1‚śnā³4g—ķŖ8+żąk±Öį‚Y‰R§qäT6lO'Ė(pqZ8óźŲR¼ctZ“øhķ,Sæzåž&ė!tĆn„äƒŌ×KÆ[<1 nDEõä¾2f—Wpwl }jŚp0ł”WݹsƗQµ£#øÆńVF¦°G;±ÉbpO­TŅüŲīĪOĖ“’k7Pŗ’MRAœ¢¶Mqʤ”ÜŖ¾ĶÉFʝńX­7Ɓ¬E”–är{f¦Ö.CŪ".āqó`U cę8Ļ­cķ/šĀ’¹qY“ę^žō‘O½‰äćŒć½‚Ŗ€zʼ•”Ō9ĄÅcĻ} įE3Fāą"ēƒĶc^j\ąēpĪ3ЧróČĒė›ńsŒ„É=+8Į·ļ.U¤Éļ̶ģT…-Ē^ÕsœČĢ )ķ\¶1"9‹+g=+cXŸ3‚Jćš®•IEŁgO”vµØ$Ģm#ŁõƟž!x¢ņćYš$™Ö(ĪÜ©85ÖųēÅ1(–Żó`“ŲtÆ+øŒMzä ū›#ėŚĀĮF.ėS걄)ūB+›¹ę<®ĖŲŖŲŚ»¶’zõčkZkcó¦ĘcłÕKØóf§ĪöÅuÅYyNmnŹA³&wĒCD0ą–žüÕo9Y8껆z-Ę­ØF3DH$JSč!ÆĆ¹Ł| šZė:ˆŌ/Ō­Œ]T‚ ÷Fś;k²²E‚Ś!“*ń€+;Ć0E„銌®V8ÓƒŌŌ7ķēOåĀ73¶8¬ŚÕ›U§Y|ʙœ Ūņ–9`=}k±š•¤RŲ™n¶õ&…£ŪAaŽ%Į\ć8 =źÕĶĢQŖEĄč+:®ölmډ‹ńX²š’†§¹;Ė^õņ‹|o6½ÆŹ÷MÄ ŻĘ3^Ÿū[źeöpŹ#?/zł”$čHeŻŽ vR‚ö|żĻ*5—;‚üNūĻGl䊄ØŲ %ó\ė“T“,‹_ 7ÖäĪźĶ…gR:Š5KCgüØĪ·¶HÉĀłcoZŖä‹y$7Ąõ­Ļ[ÜZiPM4N‘ÜĘYIī+„ŗø’HŲ‘‚FMRŒ­v “v5`’Hœ /&ÆZܼ—ŒŹ ĄśÖ†słAūŠ·§£ĀM±sĻŽļX7{—Éy(¦v6¶­ģˆß$ŸJĻmaa·f\ēć5ŻxÉķķž żcV¹wL?Ēzš­FRįFöMŖéūŌ¹žęX„£W’;„¾"…äīŽÜ ņk>m‘Ͱ[qžu®&ż˜€C6zŌŽ‡Ģ¼YqE9#”Ŗ’mY² ł%x£Üž}³T ×ņ¼6xÉw$>‚·õķfɜŪYDˆŠv“™Éo­y Ž”rŗGĶtV(Ž#Mä`Uæ K+ĄŅHĒęĮPG5Œa(FėsxrŌ¦{/ƒŽĘ0³\LŽYGÆzÜÕ|GfŃ2D(Š`^3öĻ*ÜåaųÆS»UXą“ŗąö©—<÷cäŒOSŃõ ͹²~nÕĢÜjŅ^jR³¶ÕKĻĮłÓyØ7K#¹Ś _¹¹ū›(|“‚EL›§_S*õ#ĖdŽ[År–ži˜’Ņ·ö¦[³i£³ÉŌśŠ†Sē\y“‚{œS®e]ļ»qŚ0„4œ•ŽZk—B S&3÷¹ąµBXķĘF9ĻŁI–|#p)TķŚ»"šGL-}Ä12 d“IxHž@O'½>5+r²dp8ėrz1ę„ėØM·6į×ꞼŒ܃ŒœÓ"#$õĻjx#ØļÅ]ķ 'eaŠ0“±“·'µ+p„/wģi£īsĮö¦$•ī&ę\5"9,3Ųt’¼cŒT‚äqÅ7±Mµ”#ݐsž‚–E@1Ó5#E“ÆĶ€=©·Œ|°@ķŠĶŠČŠ‚M”`ng#óŖ·aa[ŒóĒju•ĄH†CgqUõÓ8r@óYņ·+3gkhWł÷CĖÜA"-¢Ąķ–½QSŪ ’nVķŚ›{ł- ‘Ģ2j·&“2åVŌ§ć$ŌSI$ujqD9$Ń$D®A#8«v&čµoøZ·]Äpj8šyšµ¤Ąņ®Ą`r}źµę"øe'§"£™'d>aį38Żéš©xŒŒ7~½ŖĢsF«O5Rģ‰$ žjjNćm4i›q•ę»Ņ”-Sµ0Ēiø—–ć>”Ö”ČUCĄ5^įņqܤ¼Ęå”<Ó6F²4 € œS“ėG™üĢķE8śÖĮŅ÷Ř×ō„9F Ž&ķ˜‘—Ī× c”4ŽĶŲ%»ƒZvÖ.ӈ‚ļ`ߝh¾™WSIpĀ6@0©Ó>•>Ńn_+±€TŸŗ=ĶiXE@wd–} T»‘Uö"7ĪzśUł$H“ōīҌVU妆5,·25QIP>fäTš-ävūÖ@H#·\Ö^ KO»$<ҟlĮ˜ąrZÖżĮB]NėĀ—–wыQ% źjŽ„q¾”öPQĄĄf=½kŠÓä6ŅBQĄąŽÕdŻ1»¬$só1'ó¬łä½Õ±ŗÕśķ¦ÆócUfDįv*䒳[ī?» ¹@qž•ēĪé‘×āŗ(o¤£:¶Õ^qPį%ŖŲqQ’ŗÜ¹},1Žūœ’½PUY­•ī#©=)ŃŁä”IZĆ{’-¾@Fžƒµ\uŲ~źÜģü%‡|F6r܌ ę¶l5;X5d·˜)pyć }k•š¶®wyr?–årpMPÖ%Ū~fnd”ńĪMiģļø§¬÷G]ńWVMFŅKh1€ØqÖ¼jtŪ!<šīµ ¶{XmśrĢzśWrķŅ#ī8'„\#h琢¼^ÅxX‰łhĶZ†7füȤˆŸ!›i*2*ķ“„“rĄy”éŖņ·k—ķõ)m“Ł“ ™\uģ1Im¬˜”Ć =…fŻ]du^ĆIʤA”|Ģ(Ž„ō±cÄWŠuGņ|¼äVQ•䜰cœSŪBO,Ć”¤ ±jڱœS}GDÉ æ7QķZ1«˜0ē½P‚fQžyĻ­Y ‚T##Œ›7”V;}č[ZŹb1Ūɧ”¤Ļ§1X4ņECŽ1X¾šŽkFūłŚį]…ožĻĢb®ź™tö5Ļ+ŽŪ›ŚŃ8ż{J’O‘%żĶĮB Zę§B±° §×i㠁-ĆI!Żu'FĒō®6ż™ŲŖ†<āŗ"ļ£3жåBī1“L”aW$‚{śÕŒ€@ļÖ¢ŻūҤӹ es€§ÆYF™ŽåQŲõŖņmČ$Tp#=č½ō‡Ttö³E1Éå9Ē„Mń*³“§xädÖ¬[ŻT¹żM-¤Ļr#(ķ“Ö²”,õ4snÖ+ė—r\»˜PŪ)‰pG gęļ]v0­Ģk0Qɧk¶–ó060Ät&©8µb)Žņ9č^GˆŹĮ¶g·J„tUe%AĮé[ŸŁ× „ŗĘØ$œtÅeÜŁĖw2öō«I-Iwj̦¤g­6O½ĒLT¤¹ŹŒž†˜Š™ĮĘz։’ōB¹Ī)ČbFHÅV3Œ–Ļä(+“éI¾ƒQd…æq·?>ŻĻŽŪŚŖ¹x< X[,NN1ÅKŽ€×CFĪ&ŠbČxéÉ«3Č¢R$ŹćåļUl¤ –rXœäTĘ&køĆŪ¹ąö¤Ł¢Ńš6žóŚÆ”ĘH«©Ņ“Ų’Ü”Š/Źj b† eŽ£ˆ»=:Ćs*‚@aŌšEy8¼D’ßC»BGg¹Ķ]é—ńDŹĪD‡p ]ÆĆĶAcŅŽĀįeĪąĶÜT·6’iö>l»d€s¹Ŗ­œ±ŽH%X€T²+Ģ©^5W)ŪNœ¢¬Kā9‹ŻˆāåxĒcZ_mõܱĖ'Ķn9ž_•rž$’WÕŌ@jˆ„v’³ä°Įć€/ ņ䅣ņr3ŠÉ޲:aīĘŅlč5ßßč·VžQe·‹ģĪOÖ½NMĒi-åŽ E“)Xzf¹ŻR-;PÕäe…^Ż9‡ńW%w¶šßŚģ›ģάv ”k8“֍wؚ”éĶ^[šW†u=E×nn­Ü-¼E\rq‘^i«č“IʶÅ—{0ōƤģüBŅ|6»}C÷±p̼otW·‰dŗe„ĒRpįPqÖ½ˆŠ§w6qŌ¢ł“•ķäyÅ®“skrŽ yĮR0kn="å‘XC&g„mx¤šhŅÄPg-“VōŲ,¦ė(z¹kb-mNÜ5I[fi¼3>v‘ÅSŗ¶˜änź+EīŒ”<õ¤EyF@ {ҽßŖ9Z0ŅÅ·mbxļVćÓa —v錭ŹĘ0C‘ļP»HXydb“²kCn—%‰m¢_õ[š8”®Ź„nĒćP>ņ2d$J·¦æ”KļZ(+\‡;ģg\Iq#üŁģGåĖ)ą`z“[r•y7ydqŚ£Ÿ—bńZFzé·»3ŔÉęrz-mŒä…Ž8=y­L,ķĘ:Tšv`““ęœjµø{.åDŃaLJŃüųĄÉĶ9"0’0€z Vąu+œœšrĒ ØÜŁ=Ē„O<·aģŅŃÅōw+å™’tUq¤J‰…i÷&»T·…H ēŅžĀ0ŠM¤šŠ4·g l C%$rjXaø|¬Vū0:°8®Ł ‰Šå*“–šćqG4ŗ¢mŌåōŪЃy: ¾–—.0[hķŠčm”^ƒ#µ[·±–V ±ĶbŪŻ’č`Zéņ*ó÷ Z0Xͳh™®†.d@Ļņ wéRʱŪK–•sŽ«7(¾„Y·©ż›p‹“…÷¦„šˆžv%ż«§žŅ“ģ(Xśžõ‘Ø]†ģŒ*öÅbē’)ĘKį3ĢeOäöĶfžźØĒ„Yd”üØÄūT3i·m/Č$­TfŒ¹%ԁ܅ūģ£Bźå£|!$ē€N+FćE»U?½*O«TvŚ ²02]"ŒsĶ_“‰J‹īQŽźyČ>Š*A=ĄĀ¬„W½_ŸĆ±Fw‹‡rLŌ¦ P«xĪķĒ&Ÿ4D¢—Rqņ:å“čj‰Zsµ™Į=I5µo„¢Ģ‹“ļšŠ°Ņ­@Ļ®i:‰+"#åvŒkpä( ävĄ©ę±¹ž+„QÓŽ»+x­ÖßŖ1ėU/”“Ź(•xķŽˆÕīTé_dqQh—~yÄĮ×v >ö1†Ÿ?ŽkUķ¦Üsæ„H"™`3qĒ5R©ubTŚE±ĢPn‚GQ֛šYؐX¤œóų֜i;B/ՍI— @ł~¦£œm=ŠK¤HŲ m^£ó£.2Ɓß5qfm„n ’½Š®Æ?˜<ƔnFj•Yw'Ł‘6™ ’<ąu4ßģÖĒŹTņHėI$TMĢĮG½6;ųń€Łļ“Wķ%mL9vE[[K˜£ŹĒßV©bŽW“ēhŌ˜ū‹ŃŌ:*öÜj.ĆM÷€CD§ev\)KkpāsޤT‰C½…D €!±ŸJlö”[†`zSƒęźg8ōh”g*åP’äUųŹ bÉo‘ާKH·…ē ļ&īŲ5¼Öj!dØąiņ¶ķrœ"£{jsŚŌųłGQķX󛃶WĄ®ÖāĮŲķ®ĪłōŖ’ŲŠ(ÜV5c]pQгG73[|—ó®1<™śŌcP¹.w˜zē­vŃiV@č?*’HlįŒy0+{ŒRr‹č\9÷“9>«¹ß0)x甉>åó.X żŃZ°^ŖČŃ»ÅĄ«-©XĘ0fĒūµƒŖöF‘M«ÄĪ“† gU,īğ½WÜĢąGi$1ƒĆڪȐ\±•^RsėU®¢»t)nåČ^”·ŲĪRÓŽ-M§˜Ÿ3Ž™$#ĄōAf?m=ė “[¼y<“1!š©]„õø+p8Ŗw–‘c„”՝wŚąģ‰÷1źÕGSŗ‚Įxõ®2f¾cóŹć†§Ó䕘½öń“Um‚t”ŗ‘vśC#įe8ĒP*;8mMŅ4¬O^*ż¤qķ "^2jŅlr#‰Hćµi)ŪD%;(“ń—cĒO˜f­Iy ؄¢ē¾ŽŌč“k¹X„CčÕ„gįØ]A›#2ÕšØŗ²œc½µ0fÖĪ ł®¼PU·É3­<ƒ=X‘šķaŃt‹G&GFr25?üJ@XC‘Ó4œÕ쉒\·håō‹‹™ ʘė“[Ś!@«#(\dƒ€iśŻō1D q9įIąćõ1©_Üü„Ńq€`UƜ—¼BœvHźa[L²IvFMōöÓt]¹ IŻÖ¹;mļh/6Ā;g“[vrĘ«ŗI÷䊢֩š©)noX‹ŒFŒŖ@M^Ž;hšŹ#Ü{Öe’ į’“zÕűlŽ1ą žV™‚}Xė«»“\"®ĻRøĶsŗ½åé¹’–Ž{WF-ÕT³’’j­Z5ŖTdžõ¬TQ 7Ń3ˆņu+Ļ•”Ą‡©#oLŅ ·—{ŗLW³ꯠŽń6 Š ㊃OŠm"ø ÷ F3Ž•M.]ךŝ2i~Ź#·€Ų…­Ķ"7ņĆ\ćwCøÖ}Żä6±łqL£`ć¬=BīiF|ņ€¶sœT*}[5sW³GxZŽ·„Tš{pŪT~¦¹;(üĄ1+¹īX‘Z–öyĄi_ńž5Ńt-+õ:[Ų!‡¤8#¦9©'Õ“ĘXśXöėoŒŻ·sZ6“N¹Ü"Œ’tb­MnT ­amē»–b#€'ūĒ5±l—&1¹†į×ojv›§Ē.]‡rk~Įn܀G$ÓumŖŅŗ9ķBļ<ņ)ėׁse»2IX u5Żź–>b|­€kk-Ą"Až3Tź·™Ź7v9ägŪ1Ēń9«V·w yqGåžŲ­‘Ń·st«]šĖ3ė ć“\޼NšpiņßC>ŽÓV¹PD޹`bµģtY¢ŒKs #lš³y[  vķōŖņ݈ćĒ“sÖ°u'Ѧ“‹3õZĘĘO*2CĄ \®³©Ü\>Źń…­N8.g-sŽ“Č,ÄjŠŽ;õ­%&£tE*qr÷ֆF—ew?"/)æ„lĮ (Įžs Ö¦²6;*¶—'b­pÕÆ7¹ėBŒ9D[ 8ŌrY¶Ń ŽVHą Æēzć#šS"ķūŻŗŅU:ģT»€¦LGaNŠEuGCšÉóį‚ 8ź(7ił3ų SI ”YµĀ€G§¼Ų^S‘Ü÷¬3؀¼ 9ėĶ'ö‚ģgżė98­Ē7ŠŚ ‚ądóÅE3Ż*°ņ:€Ec6¢ åd GaPˬ¶p‡žē„`ėĮhm4Ž«CV;ė”oŽ.ÜS'ŌŲø]»³ĶcOŖ“ŠT²©n;:nó žĶV±p[šÓŚFåĆ2š Į¬Ė‰#`Ŗ#elóŠIīUcĄ g‘Ķ.–źó+¼ęµ§ˆ_dĘXhķk«yRƒ2Ź‹œŒõ4ėLÄäA…BXÓ_›ėUmLŽHy]Ųō®Aufær 'BMjé·D>į)bF3]?W…µ2X‰jÓ4µ÷Ō<Ū£g¬hīµÕNc$ō5ŃC©\\uļ^†o”)Ż! v݌Ņ& ‚E ‚®(^a¬–ŒņŲ4mSķ[E¤Œ=qŒVŌZ Ä©#–5ßK|«Ē—»=ĮØŚå_ ‚:ę—,X&ķkźsŚF“¢ .'–R9Ęp A«xšŽÖ_&($b:zV޶BŁ3.xäWœėæ;7”æ¼?Ž8­"•ĪwRwåfõγĆē\\$C ČŖC]±HĆ«üĢ3’üרé÷rŹIxŃAžż@4‹¢H!ļ’ÕĖVœžŅ;hŌKāZģž%ƒ8É uĆ ‚?ŲÉ&:źq\%ę‡vŖ»…~•Tén˜iŒžę¢4$֌§V›•™čĒW“,][ŪøØWU·°`£ZįtĶ.āk­«r”zœfŗ7B‚%SqzĢG÷GJ”¶lŃŹ›±<śŅ¹`’IÓqTΧtё¾s÷‰=+NpȆ+8ķX‘€ģ¼ÖpÓ.™‰½½‰T¹j°ė®§gmbE=ėį|ɘ“Ō/­15 •ɏ 7õéĀĆē+ rĖŽŽE=t˦]¬V4näā”é.SxU•ī™bÓUø ø³9ĒRk£Š%ø¾Q¼Ē³¾zšĘ³Ń†ŌEfvśWgį=!a‹Ģ‘°qĄ¹*ŅQŽSŖa?‰žŠń«C;ŖĄõgĀ B˜•SxĘ3^šÅ`mQ ŠvFąžµōļĆ»Ķ3ģń…ūµācåM5ķ½ĻkķT4W]SѶ=Ŗąm8ķ\gĘ |iū$ŽV”½+¬°ž%‰Bdp+”ųĒgmw¢Hó«»(%J×§M©PQ‹¹óÕŌ£UŹĒ˜Xź¶rĶēM}$c®ŠÜU½jźŗY‹Ė—ĻPq&ps^ie¤Ć/ˆ.n%Š=Ülō«}JÓ4'¼¶®$UČ rkĮ­IR©e%Ģ}'Nt9åŹŽOģŃYח†&äeų­ļųoEÖdęV?Ę+Ļu›Å¾ÖI»Å±Ą ÅzÆĀ»­6ŅžÉ8y ¬qkźńēnĶīo„‚ÄE¶›];š·>o ŗƒR• ';_®+SZÕ“ķ_ĀrZ ×ķXڧß•ń3Uæ¾¶KI o—Nõįū}LAqsx± gó^v"­ĶWĆi'ßfUU­IŅÅ;ÅmmŃēŽ š ó,“ŻHLl ^k̵Oj0jf;XŲ€zöÆ¢|gāĶ&īŃ­ģ¤yFŠąT‘pY%IŽqœÖėMĆßI°§N¼%„ŅG£YźVŅ…y&‰»žkŅ|#m¤Č?āirdb½žu_½)%Ŗ•Ē,+Ÿń]“->čABz{Ö Jo÷JϾēDń²ŒR©Ŗņ6Æ{(»qē8Čī)lõŪŲWĖŽgņ±Ó•NĻ”T©+9EźĻP“VSfŃŹ\²ŽBŠĆ³ŅbÖu!+3„ėļŠŹŃ5˵Ūt“˜ĖnÅtž×ō[3˜Ń‰<ǜRŽ!%ethč9?{_B sMŽĘę+{ifRxąž•×x3ĀāD\]]Üķ&›iā½1®0B™ą3 œ×Igā{ Wd'“ŲNU©;_ņeU+XĖń™m§Ū³G»'®OZąõ1.c-H'uzWŒ#¹ŌąUBJަ±įŗ69 ŖØÉĶl§tœĶ(ŁŚG•M¤jjĒ,¦!÷vÕ+‹Kä@Z, ÷Åw—ā[i™&`§< kfę,2•ŪŚ”ŖYģh”)Fɞpķ«»ķ†3ģĢzŠžMV‘Vi§mŻ@bqųW}9T‡bĆ™ßé\—‰—Ry~IŠ&xŽ(…TöC•ā·ŌĘ]ĒxĢŽ«ļŽ»-A%Ŗ¢–%'·Ņ¼ļRK±9-#–Īqƒ[ŚV®¶:jFpŅ8ä÷Ø«fӊ5¦Ū‹Œ¤v1\½½ŹŲ!³ĒŁŻÜ®©įIcČĪĆŌ׌Żė(Ē$OAéZ~׌#µI(żsҰ«+Śqz£¢nŸ³™Jī­ÆŠ3ǟ"7Ž;ČæaeuhŽ\˵—“źaZŒÓ»ZųjŌŚVz›×œĄvŒÓæįkmģ¾Ū(a8ęøCPMŁbqÓ5ŃX]<ŗ| ’NÕē9“īĪɦֆķÕīĒŹžOPqĶsž Ō–Ži™Kvżj-būl ¤ QÉ#‚k;#j‡ģd)‘p§ō©Œ'7±3“„nōG#ńÆ\†ī)#f,DZ8Åx}ä€]ÉĮćŽkŅ"š÷ˆ¼Eq"éŗuÅöžw 8bk¾ńu…Ęū½śõhÉźį°õ%®ykS„Æ'k™Ś,‚TA“.ެNx­éļ"Ia·d8céXZ&y®-dŽPĢßuT껩¼ ¬Ś\Zß\X]Ēnų`ģ¬ėG°““¦Ö§G4yTāō"ųtŅčZtmŹ[@#}Ey=ģyø!Öļ^­ńÖŚKK[‘[ 2wČÆ0æI”ä£ļ{U*\“Õ·!ŌJ£ę;†śdh`rźŅH»žžÕ§{¤IБʪ Qõ¬æ†Oē[€žU8Ļ ®‡ÄW°‰ę łĘļ­qӋ»’:ŖŌ¢ž‡[ā;{üĘi>cņcĻ#µxŠ¢Xd”Ūä(bļŠõψrgĆvå‰xśōÆ-ń,4ņT12ä„tŃRT¹YÅZg1ļźŁ>żė»šž³YI#ū’”~]«ŒÓģĖJØŲRżĶzw‚įū6Čņ Œ•#Ö°«$š:a8ė”Ź^XN.HĢ•Ą®“DEƒIVĖŽźÖÆ4„öą;`ŸbxžW‚C 1^:ö­]䕌©É„dŹśÕÓM ]ĢJž8ÅKž$Ū’ćśV=‚Jó«³pē[ś‚éÖģožUūŇˈ••¢kķV»–µ(­¬āE‰ÕęĪ_=«–ń…ļšĖ œ–9'„V[ŁYåø”¶cÆ5SD‚KŻj2ۈ_›ŸJå”BkŽØīeČ„+n_–¢Š$l–)Ÿ”ńŸzĢæY¹ @=ėcZMˆ'{óŒVk¹|<ćĪ+ŗ›}AB+X™ ŗ¦E*Hˆž#Ž„¾Y‰ĒŚ©#`w]ø^łB‘œœU[·ł³‘“Ī*8%}ī¬~”ĀIjFåq¤’pv§˜š«Ō„ŃŠ‚:攩£9@c#'5LŹó‚ć!„, ņc'ėž•4łlØĒ«Ēó>@ĄżŖ“ī;“¦Ļ,ł'­K<žƒµ6v¾Ž¬xÜ:Ué"0Ūē<š†ļ¢ cz`1Ļ„Ax03“ķRF¼o’õźH$/ÉķPīSŅÄ10ŲO#֞I1ķ9äu§“ghlpx³!XĮ# ķIĶn£®ĢućÕ{Tm<Ž•1ĪžĘ£œ3®ć’ÕJ×—b”©U G=…_Y²æw§ōØ#‡1ī,–梻łpr@轨”S"Ś՚8ŚTlm橬™y,wœóšp”ēĖbĄcŽiöl °|zsDao1+w*Hūm8Ē„BK1Ś3׃šÓ»¶…ˆhČ\ šŽ(J©=ĄČā©IuDϘM:ov*@Ąę¤e@ܜ14‰æĪœ TžVŁ’M+±Y[Bkrae@p É­‡2ZŚ+“ŒOŗ=«2yÉzf™,Ó:ģp¼ ŌŹ-čtA«E°øĢwœ9ܲ•Rd}Ł8•jŪG{’ŪĖøłlx4±¦Ą™<ó튧@6Iź*å¹ł€;‡äŌI+č\uєēlLGVéYt9%½K"¦öąīĻj‰ˆ#ÆNh» =RÓę c“SÉ Śp¼zÓ•`F8źj͘•Ū 慧ĢT6³44øŚ8•bp$c·ćš×ū|–ŗ\–²ł«<œ+ē8ęØéł7±“Ļ/=…lųö(Ō &ĀśֱяĢŅ7KCŌīŒ÷2ܜ Ö,®ĮqŠIÉ­+Ęåķ'‚{Õ+ØV%łA­me³1›e%ÜY·7Ņ“øc=Ķ58“œüÕgŹŚģ؊mčzw!DgĀIŽģ—N‰V0KGjž+ØŌA*“M„Ąb3Lv  >SœÖV»Ō¾it;o‡Śč²·’9ĀķfČ$ó^“šļ^Ņ.ä-4ńFšw78Ɵ'ø$‚0=)Š3Eo¹$#qģps\xœ¾unĒv0•&“Wü¦ńükrMzīŪMŽ;‹?*9€{ޚ£ÉĶ-_c’SŖ¤ą‘{Ę:Ų‚w6cdČO'ėYvŚĒŚļ v±”M՗,o¬Ž¶gE8*F5„c„:ĖäK»ĢS€ĪÜlƹÓNņ²¾‡©hńG¬x/X‹ż\.萟ļ7ZņĖ;ū2’ys)Hž,×ŖxJĪķ~ŻĆ“r‹¼ƒß漒ǚ6”6³!.é'ĢSÅk9EEž&uf“r–…('Y4™K|¬ō+™‘ĢlHųĻYŚjqź@0œæpž Xk8·̊ŻĘzT’FŹ„ł½äw'Zˆ#„ē-¾±;!*)ėŠę•āVG®qR‡Mß|"Ÿzö=’źy¾Ł­į ˜’ķĒŠ™‚…r{×<·P”āRēŚ„KĆ·äGČ­7kŗ‘Ųčm„XÉČĻU…ŗ‰¾č!±Ö¹Ō¹•Ą 3S£N>ņćėOŁ'øÕk+#|°xƒķQA Ęža‘˜Ó5™›#ēP*ĒĪGŽśQe‹½ĶDFĢ­ČBXž5ž•9nM92Ēõ•¢ÄźKcQHļÅ[·eŲqéYv©#æZm™$ŪéĶVŹĀw{š©*„ ӎž”Ų¤;FJ§$š*6ŅĪ@ķTå½ 2±J28ā¢*MŁ ø„fΊ7P@ȵ:K„BK~5Ę\jNÕS~e±bć­tʗveĢ­¹ŽŪjp,Ŗ eEvZ/ˆōŲ(Ł'Lµxœs®ģ«“ÅiŲ;•ČnŁėYVĀĘKsŖ…ySŻ\ōbēĶuēhąU#nd\­ŹFr^¹%Œ±Ļ½jéĪ”ø8oZęś³HßŪĘ_ ¢4ūÅrcøSĘEY³±½fNz·•Am%ŗüŅÜØ=ĘkFĻQµL˜”¬eŹ“44¶¹µ„iB łŹKŌ\iŗŒd‘!§J~‡¬@ņmV<µ[ė|DYQœöĪk†¤Ņ•™Š°ójń8»›}H\dąāqź%°cŒ(ö5ÖźZ†Č”¼@ż*ˆÖ¬×"X±ī+HÉ=‘$Óåm\ƹ[$mRæJ¤Šźå^€®€źšsœdŒóŠÆ-Ž›ęmY6³sJé„n­c)ĄĆ™ī£É(ģDšŖ&—¼ēO~E9õn+X·Ń¤ĪYN+Odž†^ŃGt8ė–ėĒŽqQ¶“vƒ+vę³SJŅD›ŅY1Ó»Õų-“õlr:sKź½µ5öń¶Å»[Ū‰[;cjüpč@ ŸPqT ž(×dVųē“Zv³&Õóp½*ŗįtY ••@}¼r3šri«(äæc“S﵌ī@ÄöĮŖš…ģ‚M±nSŪmcSš:£zT”ō>‡"© ģǵV·Ņ®DįI*OLō­­īœņ6qŌ÷©Æ­īŁžY×?Ņ¢5ęō±((?zF燮_&K”U’z³§ŅVĘüzqŠé—O¾œüó3(ĆN›O¢Y×ük®3©ŌćŸ*vLĄµ±V‡Ø  ØŽŁ²Ē8ćŽ+ŖÓmį’@¦9Uz[Ų6rĮģ„ńÉļRå}$hł¹o…·žt8'‘üUfŅā'_¼+CZšģ†}¶ē1Ž 1ėKaį÷HpHĒsšč\‘Žē4„ŗ*,° @„ Žõz™Śd õ5,zDQ0ŽĖĄėI<čÜ#RŒŃn:h8M4€bBzŒsK#m ¼›ŖµĻž>X'įY÷1LÖÜ$xėóå[Ŗ‘īgv‰µM^8ad„nluõ®?QÕÆäf³/ąEtLÖH¼+×Ö³õėHĀ–d^8ŖŒÓŅÄŚĪķœģv×Óɽ·n>µ£mjń'ļĒv¢mD9pG\T..f\³°Ļp)8Ü·RV¶Č×“Ō“edąu-šKæ9…–&XĻr a6¶ZBŖ{ōŲŃf("šFéŒRöks4ļ„ĖQźW77š»gęLHiY?Äj§‘7“ŗ+ ˜ę™:¤ņ,i…O†ˆĘښŽ?7-“ė}Į¤’3闭›“ÄAęĻ‚šĶÓü#p-V[‹‰ö ÕFźĢCtŠÅ ł;÷5*^ÓK™^1•„Ŗ¹#ØĖź Coy£Ū®bPŲÕwęČņ6īŁā£¶øu\CAėÜÕ:“—ĀcP'§4A©Å#}ŗV®I"!'»gCŖjŅĮŲ o÷«&;ĖĖ‹€ŅHUĘ;žu™q®Ū²į|waP>· ”ķHvć‚a9ŻrÅ„¤Ō›7īždB;¾½jŠĶ|dŚ„&:Ź]jIeżä{€ą`Öõ–µf`H~Ē lgv+‘Ė•ŚI*œ÷‹C̳„ł‹\šĻÕKLøGĒć­o,hņŠX0ķE­«Ą~KeÉ摚ė„ÓV‰’æ½¹Ė+ÜCUqŌ·Zµeqq!ņŽ3žĘŗõ·k”Ū,1ǁƒZŗ‡jÄcktō¬«Ćݹ½ Yź®ri× ng`ŪG½Vžr€ŖĒŽÄµzéŃ ņ‚‡°ļ\Ī«¤ŪKpUŠÅžķyRœz³ŃJNVŠ<ł¤#¹ēi²NÜķĶv£čė2”7NĒų·qLÕ“[(#/'É®om>E/Ģģ”esIt7 dž«QŹĮlV¼wVK¶”\w­7K(Dj•½¹­ņ)E8Žß‰Ē]¹$" `uõؒŽęDżŚøÆQ“šķ–•†įžĶ\_ŚĪŻĖŌŌ*1—Ē#7VKEÅītūÄ<ÄnjÖ}ŌaH õé^ÓÆiQĒ -“N[µŹÉ¤L%&H=kzxJOcšxŹÉņ¶y±¶ø2Žzf­qĮäõĒ­v³évLJŻ:qN·Ņ“Č×-,ŒŽ‡„vżE[cŒšó<ņhī^]ˆ®Hļ[š5–Ŗ°•‰–Į®Ą¾™oņć±ĮsUßVĘ…ĒCŚŗéai%Ŗ8ėb«=Ęj:¬Ģe(d~üÖ5ŽŖFß-¬„žø+Ō­uXˆżģؼqŠ·ēڽ¶QŌ±ī+²iIY£…Ö«S”§\Ė>b· ¾äꫯ錱M±$QÆ÷šjڼXF13ōķ.ĆĶg‘Ö¬^ŻYŁŖD‘;•tÅK‹uēŻ9~įN ko~ų#†Ę‘ŒžzÕcÆœy ·æo­RÕ4›uŗF ąå˜Õ}>£l>Ł-Ö·šåŁ‘ ±’½ŽŠĀęy˜äėW”1¢ę[•V=5FĮ­Ņ"‚į3ėœUóh&Üņī#ƒƒÖ©K@o–Ö4¤»·ŠPZńš{g¬E¬ŚF§×5Ļ“Ś;5»œHnM1͉e6Ö?/}ē­fź_Eł1węgVž!³rι<ą÷Ŗ÷÷ZUĪāČ8Uk)U2RĪ$N*)šFŒ²Gņ?3Ió-‡)'ŗüM‚<6Ÿ4ź'©ØŲxNC¶9ĘAäļÅsĖxŁg“_ÆZĆø±»3X–=W¼#Q­Ģ×"Õžg¤ŪYxonR#8õó*WµŃL'ɶRżā1\&…äm™™•Et¶WVŠ “Œäõ&œžŠŖĘ—ŗĢżjŚd» n¢8ńÉAśf•Py^Y[É5²÷M,e¢_RĒ­r×·÷B匬3 i7zĘTżŻ.^H"GĖKqĻ8QÅM/e+ƒœ“’kk±¤Ź ±č0x«Rė–PbXĪ8Įė\ӛ[£¢)7ełšĀś5żŁY¹ŁZš4);‡0J+žk č&ņÄ1ØÉ9ūÕ~?„Ŗ§ ėšĮŽZDÕū—M=żq*¹C§ĶTou¶Å+¢Éė‘ńŠē”"¬={šf—wØb8”ufć=" ®Ń„8¹;Äļ¼7āe³q™ŁŸ¹&½GĄ–ÖUŪ w<`ž‚¾}»Šµ8ąi$! ē8¬» ]Z ŒĘ ŽČĘ+ĘÅåSÆÅę 2”IŚRŌūćŸ&¹$ó•Wż¦Åv¶ž2†hJVRF=xÆĻĶ#\Ömā Ób5ēļs[ś_/…ĀFnČķż+̧”Ö¦ō“‰Ł[‡Ø½čßä}½ye¤j@H!Hg<† µž‹å”3+.8=kåÆ xÖę"Œ÷nĻĄįś×³|8ń¬’²–—'Œib)W§ź>dgB*©Ŗ.Ķōeü8y­äš*Hz(Æ=Ń4­k@Ōń*̈9Ü3ƒ_Qų[_¶½„$ÅŌÕæhz^©k“y`‘ķ[FTq”½īū=Ī>lN­ķ§ąx%Ļ‹!M?d“Ÿ3;ŽkÉüu­µÅó3xćō?Œ~Ł“dCøōÆńׂ¬łć†āX§Ī8Ķytræc'w§™ŽóHUjQ‹æ‘ĆO¬ł1®:ŌµZŅ|H!Ū.7æO”×1ćżūL'Ģs"/CŠĘš¬3¼Ł. 1®™e·J] é摳Š=Pńä°dy75Ģė.¼’ąKT+3[ŠmćpŻĒ$W?¬‰ˆ›Ü‚kŖŽ]FČå–6/[Ęā…š0.R6=ł«±j:t’‡F‰ō^Siz–ó4yVī:ŠžK›)%Żˆņ{žõÕN‡³Ń;Õg;øżČõł/mį\Ó"¼÷ĘZ±–ęA5£®ć€ĒÆšŅö3Cs6åĻ×_Æi–·JŌFēÜf»°’Rn2ќČø%$®¼Ļ »žĻNå=pksAµ/b·Ń»€9 Ö»]SƖ’C¶X#B%EEo ¶•jV»ÅwĻŚM»œŃÅÅŻlĪwFÖ®ķ®Ā=””Aćzī|?®Ķ!nŽ œ`‘ҼļĘĶur…Č$uάĄuKr­dĒ< ĀT”ezoń4…W(ūčśß\¶x¶Üȁ™IÉ#„q¬¬u~õTgØl^}ŖE¬_Ē}ŃĪs·Šu†q7īäŗ“ŽX“‡ö­©TœąžG5xR•ć;¦†źŚ<10łGgńnėō®fźŚŹĘĻųć5ŽGį›)•UnÜ9į¾sTgš,æjo&čŒ ‚Ié]4ē)^Ķ\ā”õnǚß[,·“Ģ:ēØ?J„ĢžwīČ÷8ā½N÷C¹…»,NŖæ{9$×=Øiöv·, Ņć§ż+Iać%ļ²£_•ūŒČ²ŌēŒ Č[޹Ķzu(lį{™U žõĢXŚI:b("æ=j-fĘuŲ’łŖ™č½+‡ź)»ÅčvGŌuzžƒ7Ä-š(ŪhSĘÜb„°ńö§*˜Š£#qƒŌŠóŪ 6Żoė£Ńtė”ū-¬h;Źę¶ś»š³dKm"“; µE¹·āõ4ż6}JTĶä»w•CDŃ5k™Š=ÄEē«wąYŲ®½3–õØXiü*V«g/ĄŠ³Óti”ióĶcĪk+QšĢęas¹ S#šVµ ”£˜ŠäzžU¶4½@XølߚØÓÆģћ6£tĪJóA†KŒU¾\dō¬żSĮh¶Ķ:œqŽÜWKyÜ3ģ‰e‘@ĘåĪM§¦§qƒ Œ˜Ą#½OµœukBżŒ$½ŁjÕlź†[Ķ[=¶6Ąėė^Õsį˜n'­åIĮŚ8dj> ›Ė‘bŠWģ§«•ŖkИŌåŠęzžąķ^xe±z×”i¾# Ē6&ć 3YŽ ŌÖ#²Ų©_ā| Ö·‡|©I(7QFŠ95Īč4ōZÆ„vl5¾—Ø[œ…GaĘĪ_ų~ī Ż _:øę¦RĀ'išĀX†½Ķ_”ń¦©¤jV‡ż"ÖhĒū•‹7Čų!Į'Ū_u­Ę‘ØZæŚ>Īѕą0Źø¹¼)įŌĆ[ĀI9USż+)ašSW§&™µ,^6:8]-IįżVćL0@ģ$TÉ5µį…^*æ +i÷E&2īkė"ŅĪ8ģc†ÜĀ1÷1ĶWŌµ7¶Ui®äéµøØ…,ßėr飕1­OŠī ņĀUo<žzŠŅ5Ø„gLĀ­:ók–Zv<Ņ}.D÷Jdv;Xś½g¢Hl7\9ŒŽ0¢»čŅ%(P[€:ö&ŖźV€ƒŻD§¶8Ķi^["5ĪPÓ 6lcv'°źÄ{Ō+iŗ1ԁ¢» ›ˆnFö Š£.rco*u ŽA8­T“Qm¹;£ŸÕLæŁB8ŃL¹wp+64?*HB–ėĻz›Wø–ŹąÅ( 'Ó"ŖĶvÆ Ÿ,nõ³iÅŁ–čĘPęƒL‡Ä6ض¦5:ךxÓĆŠÜF8[Ģ~¬µé”ÅĀū†+JĘÖ5…Ŗ€rGA[Ge¹ƒĮ§«V>aÖ¼sꬱŪÜ18Ī9­ jæcŽŠKŽ•ō“^I“lj›zœ€jAÆ_^Yn|åįßÜÜ;ł°ŹP¤2ō÷­»æ…zUōje_,ŪÖ½ÖŅĀ+ˆĘeKvo½ņŒēެ5…„²•y’}ƒ‚‡®–/‘æg”50īJÕnqŸ©d–ßaµMķŒ©śVäl“aH-/A^\*9NķhT Ž›˜ś‰d‘cŒ8©måkDݰ|c5y’(TĘ iW“ķTīĢäīĘ:īO£n“c!žk‰‹JÄķē5Ž[?”©$xā“Ų€ļcųbØM)Ł·8"“z”£Ń +®Ā9'JU8öéS4N@ÅE?`·NęšÜ¦Ź’®pNjj¾WæZšlzf£ćÓ5Ŗi"$ŖrŁš–ßvKōĶ1Ųśä’J#$894›ī.Ī€ri‡•¹ž”čóv1ā¬ņŲ qۊɻ=J’¾‚e ɜÓwHłW=:f“mmCX4ƅ# Z¦JYGŻ=j£$ōDŪ•jD±æŁ‹ØĘŽM2Ó2.~lšžG_,Žpj¤2łw £#Ž(»z-īŁ§ ‚9:ŽtŻøĒ"«4™ īäӕ±*˜nźEaŹÖēMōēŌ`ŅķĒ͐xĮę–čؕI9§FąHsź}ėK» ׊ŽS¶<€Fy§¬öā/Ž&ļ—å¦Īw3ĒUMDd ‰N1Īi%}Ȗ…iwåAĮĻ52.bPā™ ­JŽl+†CČć5½śģKyc2•#=¹­č Bäw¬5?¾ąķ«Jķ°€Ns‰v€pyϵ+z …ĄœœGZ­ØI·€N"¬#˜ć£ Š£24ŒĶĮõ§pRµˆ­äżįĮäõķVį;@I÷Ŗ¢?,rMOr¤ę‰G¹§5Ö¤÷ćd*z:ŌyĀØ œśŌņ3Ģv·SԚ‘†8Ś1ųŌr“Œķ­Écd»ĄŸZ¾›E”#–Ļ8¬ó!!²¤`qļR1顑ósšĘQ¹2ff¢Jūõ„ņ¶[ Św7'S-Ā€H>•±åķŒgŽµ¬Ÿ,w¶±”ń\šqUó¹šõ«7ŁƒĪīsL³ Įć½ŗWf‰;j>ÕĀ“`ē“Zś\ƒ{ōĘ@¬‹…eRĆb¤Ņf J· ŒTüZ‚¶Åķ.YmļRĮX`śUJĄ%ٌu#½G`Sķa\įO'±q Wur#n€õÅ[{ƒHĮ‡|G*» ‘ō÷®ķ>Ü%ę‹Jā.¢e”1-·)ö­ķ>ł™`ŒīcŚ0r+:·µģ]6ŸS§ńßkšÄ‹nJ˜×a'ҼæZ€E2¬mć<õÆAŠo"Šg¶šæ•9īzWćæŻkN©µBp=+j/™XĪmĘV3Ā£sm>øéMg(ųG ļėQ‚Äž ōÅ …|ō8§nåÅßa²1PrqĪŒ1bFį3Ļz’B³‘“D*7nŚq޵Ič;1²!ņ“ɤŽI”t*y2jL©‰pÆ؜ ąņis&µBi­Qæ£I-ĶŌhÄ*c÷5©+ ›–€ä¹ł7OJĮŅ|Ų“zē=±[ŚJbš“²i"ČĻ\ÖjŻžRÜϼŽ$E{pLIrĆ”¬kׯlŖÜø=G„tŗ}åµµ„Ō.ČŁĮjä®ß÷ĂN:Õ)ß@äw#aŒķ··„Fņ¶É5nĢ“ ć<Õ{ˆł$§’­M[f ;hXŠ<ÄGNj7 €”¹Ź„Fņķŗ`㨪ŅtdriXmY )P™ õ¤¶ÜeĘiUøĘįŒóW,ŲB”šŒ ‚MīiÄ» %ƒš3Z~Ÿ²ć`€‚܃U¤ŗ‰Ō2žO8NK©ćä9P{ŌE6¬9Y#»¼J”Ų#N0q\ī”pͣƫĻ\ę…Ō °X@uÜXśęŖ]\ŠB›‰“®jiĀĪĢ™6џt®Ć vŒRč¬0cŲKžE,K#ȀŖ; Ó³ņā`ĮpAĘ}kvÕ¬.YhŃRxä7Ś3†\m в9\Ž™śW]lV[)%ņ:ą!ĒėT¦‚Ł BĢFĘQzÖmŁåŠå˜²H7` u4Öq¼üܞp;ÖæŒ­<¹TÄ–@ĒÖ²ČœqÖ©=.R»ęŻĒ5ĶŲ1-ļOø*¼.p:TC» „a6ö PōB›Į9§)ē¹½ Āń€sA›6ü5{snĖHŪ t'޽«J®•Ÿ39†ļ_𯱑„ĖßęĶ{æ‚f~¶r8ŁĪ=øÆ5§h)Xö2łĖh²ō×2¢2# Ęx­{KĆwf-äķü™9'š_ZĒ …–ļõwįČĘ+›{©“©ÖHə7ąsÅytTZ“QÓ]¶·;- ć±1,ˆČ§$’9ĶtziYõ6##Hģ6ē½qŚķŌésÓśYŃ\vĮ#„z§Ā{€īļļ¼»W˜µ2šÄ­*øY5Ģ“·Ø°õ”šßS„ÄćJT0É•Éć»VžŹ=Xć6ĶVÕ­‚įKČq‘Å>ŪS”Ø+ŃėėX²=½ŗpAģšUÕcņĆnrSėK– JLčĶū±‰^)ćP·Y>r\ė\£Ż\H€ą‚GšÕuŽįÜ’¬­#mTw÷Žś-fŃ5ä{Q{®Y4%}«†ū%Ė.7}驦K!¤qڱö*÷*UT£Źk_ŻŁ™0%'=M2)­¶rīG­2ĖEĘĀF@ē&“ⱄ6g¾*¹ŗ¤–Å8/"Ī#Ūźõ“·O…A“bÆZZCīŲ‰ļŠuŌö‘`—ÜOOjĪUzJÄ*^% $Ļ’0pjķ•Įņ¾Wn}k5Æ­·÷ż*{Kø įXcҰŖŪ‰Ó‡Œo¬Mx<¢Äȅ˜ÖVjē5‰ov ‚«ŒÕČīߝ¤ ā¼–Œō¢•®u:Dl³«y›@®ĀŽžŅWt¹8ōÆ –ś@p$pqҧ³ži”nwĮA\•0õ*3®zqµ=sϳ¼‹ivö9ÅQ¼Š¢’=ńN§Žµ2ŲeĮ,:³:ܚ|%‰äķZ{FŹŅ܆{v—ƒz®#ŗžP¬Xmj:«įX=kOMŽĶfxĮ‰ęøźøĒVuQ©;÷ Šģ%Ś­-Ʊ­“ˆ­ÓæjȻԣŒķ‡œ½Ŗ…Ę„w*˜āŒåøĶróö*¤&õgE$Ńʄ$ų#µRžōPĖļŒÖE„½Ō­%‰_ā=?śõ§!Q÷#÷”¾ÄŖ~c£ŌcFY˜SM¬·A…­(ŠŚ]ø¹‘ü';ųBv·/Šł¬½„;ŁČŻÓ©ŻE™ļŖzŹŲ؛WRÖ`’½U|Kį}VÖÕ¦óEē”漯[Ō."»xG8=EtÓ£ j™ÉŹü½OY—RˆÆ§Ņ³µ AĻÜp9ąW—[¾”)ʳŖżkRÖĖP“néēž½ėEE­‹œØŚīēwkmØ]±Ūr°€;°¬=V&‚é‘ę2°źCqUģ­/¢Ź“&;åˆüjimÄy$•'ÕĒ=v2ŖąķģßąV1Ė$C½1»$zb4ĄI†,:šGIf<Ž”ĄóĒ 'vOJŚ.F>Ķ%”±m§…ĄUqĒ5”š6.ē{W5-õŅń‘ī}kCLŸP˜€Ąą÷¦|įGķPŲYūå-Ž•b%ÓmåP"P}ź?ģłŚ%d“ęĒpj%ÓfiFēĒųÕĮwc|‹S¢Gµž lĒp@®[Äz]Ź^¤–³ČTÜæCé[¶ZIß,€ĀÆ.™`1yNG5q·zTq“ēŽę.%ģxŽVväÖ¼VšŒ;€ŒōÉ©£TPgŒÖ¬Sڬ ņ®vóYū‘ÕhtMŹŖ\Ē95Ģ©ņŚĮ4ĪxąqMkS)% #ŠŽkz]nÖÖ&ٳö®STńUõÅćĒ 8ū½©©]h‰T£“jäńĮ© Ą’UUų˜dÓn¤ŗ‰s%ĪŌ=0qXķwrŅ$’YŒŌW0ŽO†Ÿ~GLӖ!«F(QƒŽś ©Ž;U„~Ą“TŽg…Ėä u« eóH@«¶°['š<•Ÿ,ē¬ćbcŖ4ĖĘxę¬Zé.č\Œq]“0yg÷{@« ĘŠ{­R‚µ‚U®bŁxuń!ėŠÕ·Š­ś2äJ¹–±õ«QȱćØć֋XĀRM²Ņ-Ń0±ązÖ­¤1ÆœUh®°ƒ³R™œ£#ž“¤ŪŚČ½"JNߗ×5>ĄĘsY3\$k’Ąc޳®5‹¹a‰Ų‘…"¦ĶģKÖ§JŽD+̀Ҩjzµ½¼y.¤}{ר bāFs‹u< œ“QG§3×ņžā“ä]KŽÖLÓæ×^{ƒ—'¦­ŁŪŻŻ Ż˜Y‡ćYĄy*Ū"ÄēŒķęŗoZO“K<’1ėó©¶’H¤•õ,čz#ZÅæqi©jŁX% ~š)Ē8©d‘öC‚3š¤VC.Vē²Öš£&Æ#ž„[ésJdP ;Ū֍²<€F±‘Žk*љ%§ÆA1W ˜Ę“özhLdžŒ“Sšżģä˜äŠ0=qXRųe„n.O¾+ؒīRópõķQĘQŲ’ŪĻLš…?ˆŚŠ‹÷n`ŚųwNV$‚@ć=ėbĻFŅQx›Ž3ėW­ģꕱ³tō§:ż[6ö8Ŗp]ĆŚI;4\Ņ4].P[‘‚G·ģü%¦£«rXcę$Ō^Ńõ‡ó‘ūGŚŁGwnŠ$HÜźs^&+āłbī{Xl=79ndA”ŪAnDH¢¹oĆ5«·Źøź «Ónµ[x¢Ł$?1ć&ø_˜īČ»ųäšĖŠ›w™Ü2JōŁĶi†āīåQ‡¹ć5ŽųgJžY ƒĒ ^o« „ÉuaŠēµuŽńW;ķ £¦s]8ēQÆqho•Ā6R{ž‰{z±Ś…1@črZŌKq?˜Ń„Lg¦+LX„ĮY’ēy=ƒŌ³Å±LrBĢ:WĻӄ"ł£¹čb&ßÅ£9„³Xš²Ā­×%¹«ZużŒq…™įt<A­8|1¤Ž¹wˆ«7ńo"³üMą[X,Ģ–»Ėõ6k®Š›äę·ČĘx‡sJ-Ɠ&>¼—~Ų›”­k+ X³ģ ¢µxåę™®ŪŽ8АB)‘Ūų…~yāø+ā(baīĮ]\<£Ģ›GÆ\^ŪHv'—#²iĀ"ՈPAėŽ¼†ŻJ 2Q×o5dkZ‹6Ó0nZŽ*–“єźBĶĘz£­^I~bŠ'ŒŒö5;]f0gø@Ż>f®Jźk©ˆ"éŌ‘Ń@ÅVKYä;%id'»tÆFœ ŗeJ“–’fĪ·yˈå÷“+źMŹx©Ējlś{(*Ā7)Ŗńi’4”|Ł ­]^ÖV²9ƒvDG'l™õS€i?²’ā"i•±€kN;O&,;`}jö˜dTŁä•Oļ*}£Ür„oĖĢļųXÉ(2\3*õĻzī4ĶŅ8öä wĪ8¬»F‘ŽŲ¤*÷FkRĢJ  ˆī8¼*7­ĢēżÖ>}ɉ]”€üj)4«+x·%øłFzV‚ÜŚÄ yÆ\ŌoŖ[³)õļZ7Ķ«9åŠåļÆŚ9ŒV¶BŪh³’ń›÷ģ‘!ćęŗHµ;MÜZ›ŒūTWt’n6ƒq9ę”åŁ3JT„¼Ś3H³ˆ®i$ā†Ō r–ÄŠŽ•„$‘8+e\÷*8Ŗ²Cp[˜ćīõ®uKŸā6ēŒ^–0µČdņF#ŻĒJŹ3G9,ŅyŒ{1­ķ[Ly„_6б‚£Š[O H³żźŽ8hEi”„«7+™‘źĮŪhb FwtØ¾×ŖĪ œŸ¼Ü ė­t[ćUŽ®Ts–ā­}–Ü(UFĮē9”aŅz/£NŃYDdQ÷ŸnqžM厄¾īgtĀ n+GoĒˆ×Ā*åōdĘI4ĪŹ-`ł$Ė>:³UH®odŗóAŠŒōɬ 9f•°„ž£„vž Ń„¹¼HĖšŲĪkN1\Ķ^ŃĪI-ĘĮwts>‡Ö¬ŃŽ9AīõėĻƒķ”šÉ`ß>Ž |żāŻ ąź,³M)PĒåP@§†©J¤\”ŠĆ)Ā¢„QWšż³6Åøf“Ś9Å2Ź ›÷ ²lŒņr9Ŗz…¹ó<Ÿ|‘“[Ėu­mXē”ĘOÖv‰«„+²ŅŁ h՝›=Ķlč’Bć-ŽŽ•y$ŖŠ×óˆČ3L³æ³óŁć–åś`)ÅeVR’³5¤œŒōiZÓR„,”†W&±¼C mR-®U3ɬxõ R8ĘaKt?‰« ©ęsęHK‘Ūœń\“éÉUqžŪ”-ō;į(&š€bkjĪɒę;ÉĘ2{ŌPŽf\g ķSHņČĀų®˜ÅvFNÖm’Ņ‘w•sU/“:Låzc‹ā‹żFÖą…·fąƒX³_k³."·XÉœ×JRާ58ĘkFm]č–¦O–į—€_Ƴ.ō[T$. =—=ξŠYž\ó‘M[½\ņvsŌńOž]WäW²V÷eł“¶“ŽC(ōÉ©aµh‰‰ŖĀņī3™¤@ gµ]Óõ‹=ų”üĒÖ­Vīˆöm½$4E6v€ÄJ°¶ŅˆĮĆtéšÓŠāŌǾ1»#±ÅKnńø dwę“R‹Zyō1šÕČ ×Šba’ä÷&ŗ r8É÷Å$‘܁ČĻ#ŠŃ#+Ļs cTƒ,ĄĮ8ĶRóą·•‡aĘą+”{#¤AŖ“éOēå„Ś1ZEi”2•·3ĪbŻ•UķšĢŌ­ā”īs†õŻ[čĶ·kÄ_ļU›/ n•XĘŖĶÉ„T®Å{¾T×6ۨ،xå±YnŅ]'É$ŒOW»ėŠšÄ(<żź·į’čśz£>^@28ĶaˆŒd—³z›įfāŚ™ęŚ~›Ŗ]Ł,pĆ"BŹę8ĒҶtæ¹Łö©Xq’é—wŚB8‘Q~\ń\·‰|Ao µ˜øSYŃ¢ā½ā«ĪNmՍ7E±„ꯔc,9¬mSÄöVGeK/@A5›~·ś“·’8œu'ئC¢µ“,T &v ‘ZN¬R“LÕ6ęSŌµ­^üH…?Ś5…w&¢«‘w)č Ó=œĮ‚Żr?‹ƒV ŠnnHc$h„pK+Š„E“ĻB„š²Kš98Öń¢Ž÷€zd÷©ģ­dóU–fŻŌ“ĘMzO†|mz™“\·ńĀ/$ūV'Šü7{¦ź ę"žJóŌéĪN1’æc³žp’u^v(čW·÷HČūx<÷ÆfųuŖ(Ķ#€Ą¹Æµ³¾ūG '9×Mąū-au™RgP{×5ZRŒ_cŌ”ˆNi~'ÖŽÖ ·Ó„ņ“€öē­u:?ŠĖ²„™Ōʵyw†­ēøŠāW ­A-ķ®¢Ž²9ˆƚ† Um­źU®”.YėéÆėźŁc‘ƒäc8®Kā—‡ ø®­ŁVP3ŸZęü©H®‘>{dפZīmJ¹ŻźJ¬6.µ){*šśœŽœ£ķiič|±ń [ģÓCtĀōćąz½Üvŗ„ˆ’IĶŠtƲ¾,xagŽÜŒ’ś«Į|mšõ.%iÉ1²ä’=kźšÓ…Jn)ī|ņ«RE9'ęyƟ­"ĒūÉ$“=8ķZ7÷7@XńYŚ·†Än"Šļ §ž*•żœŗr¢ĖrsĄéQõiĮūÆSµāiÕZ¦2ņŅŁā „‹zń¬‹ė)2éįyŻŲVߌ-šĖ66śŒSžŠÄck„#Ę*Ü׌%sGŻ‹1“©īՌˆf^1•Öŗ}/]Öął®øĄĶ?Ćś†žØA’!ĒVž‘5µĆń,q |¹¤•;HŅU11ŠäŠhĢź>XYņ:Õ;›‹›ˆĀ%ļ]¬‘G"‹{6¼r2¬ęo)>V—$@ōć§é]¦¹}˜S©}d’g:ŗN£)K#ƒŸćĪ+ØŠį’bŽćæƒ}ŖkšJc6Ų'“ :ĻTÕfuچ8Ę@ÅLé«kF«qų‘×ʐܠX¤hŹõƒ5Å½ŪČ7\!č3€*Ä-| , •(5š‘ź-;7˜ĪB!ÅU(„̦Õõf֕3ĖĻÜ굞ĶPžīō0ZBrE`%µöƳ!#?;Uˆōė©„Ł+IČēa­Ü^†S§ u°š•ŗD3‚ųĄ+œ“ICęP’ ĶtZf‘¹_1Z0?ŠGŠé­Ž™ö6W•wc98ėVńnÖ%ÓN>ė»<¶}.qr’"·_Ę„M" Éy$ž˜č+©Ō¬“Öø7Ræ– Še¾µ£Ą¾Lp·Ōu­eŁ4Ģan_|Ä“šā»n‰de<†ŪĮ®»IŅ&ņ’SĄĮā«ĶćD·€ ŠĀQRčßģ„Š²… yĻOÖ°«7vuR¤ę­§Ń4³f7I&ĮŽ‚¬źš”Vp1Ų_ÜÖT^'ŅļęŻŅ„³Qź·±]Ąė‚ŽsŠĀ–*‹~ė*xJ°ÖaćX-£ĮYæ•g7Œ–ī, rīŻŸi¤XM1’į•9Į=jÕŻ•µ³³ >•·$[Ņbsµ½ĆYÕ/ī.„p[HŒO8«”MØZ·ļC=zÕ½.Žr/°t­«h”C¶I·p1Bp—»'rUYĆX¤A‰mm挚øoR*7ńe¦ą»¹#ҵ4ū}1&&fVČĄ¢÷HŅī˜d‰ Œ`ā«– Ś2°łŸÅ(&Am©é÷łŸiPĒŖƒĶb뚜É.-dĒ[¬kĀ÷æk&Ęh0‹x©-ōœŸJ”g ^Kn®¦@®F)ÓxjėĶ ūĀOA“Œ×4°õ„²;żµ(ĀÜʬ:ćÅ#v qÉØ¬µ[Ÿ4Čf“nrFibšÅõ¾›ž¢`IčŻj1¢_#m0ȧӆ·/½b~·IY&jŚźó䰝Ó&·¬o$»¶ģ&ä2+ŽžĖ½R !jŁš„ŪŻŖ+ŗʰ©BkŽfń­ līI5Ģ6÷ ™e*zŸJšMMŁęd”ēÓ|]į›ó(xœ2ą1ē½dŚčwĖ9 "’9Ī1[ƌšRf«r\°Ś†¢euóš0½ŲœCq ^F9‘ҐZ]@dóāyS±µzĒJ‹Q“ĒŲēŒć3[*:ꌄ^OH;ž ÖšĶģ7f0gl×A*Hn<¶F9ė˜šĘ‡–ŅĻrĢÆŹj¶„āŪx/¶¢ŁĮ$ÖŌį*i¦cNP–±ÜŅń••šĪÆxşq\궟m0Bąž„bų÷^–õ|Ų÷Ŗ‘€č+’mXģ YĄQVæ$Uµ ¹¤īwW·ń1€č1ZÖś‡Śl–#šØÆ/µæcr§pĆu«š¶£%¬ŲWeb6כ.{³Ģ¦0d|Ň&«j¶śŗÜ—¼©Č9É?…`źrK(“͉㗠޿ʭFtÕā“ øT÷[ł6š5„zJŽrÖź«,$¦F21\żŠxF~POŽźżU¼•"!ŽUFzÕĆŪ³B©…‚Š“¬‹Ž'³·:^é$>swf¼ņM20wpH<(ļ[¾#ԚkO%X.A>µĮx’śE8Ź1Į­jTęVŲēQ•“Õ<}r$’6¾X{+ē‰šˆžłćˆ‰8ÆZń ŌĻc&ŒŒuÆńü„¦’\S œŽéēā)(ĪÅÆ Ęņ]«vÆ;½ėr舧Č%ŽŌĶ4³š÷ŚŌžzäÖużć‹0œ8Ą­/Ø&öõ– Yf25›§ųÖY¹gL’0yŖ—S<£.ĒžFj"į±×5“a¦¦É„©i„%Īs“1P®0KdTAĻøėėLw,:šµøéHŚH gżę9é‘Ob6c&‘GžµEIh rHä{Ѓ$w Å$LŁķŒTĘŽWł”üøēėSĶb$_(Ī?NUV9^iZ4øĄėš©|ło”ńZŽ[½K¶š—ī/d6ųäcš†Ž@a eŖ tis«·>“é”+Üc„iȐ)ō&sœ˜Ŗ%}¹ę’XÉ]ŪŠć“ŠU·.9ÉČ4“°cŒ†ļŽÕ3®:jHągó¤,ą¶2=*mrÓ$wA†9qš”=Į2™ œS.œ“Ź2p?,ÕI˜‰Ī1‚kHÄR©ed]’b\}ų©ƒf T|Ēō¬É9`WÆéR,€2sŌ⛉œg­™ržą6BqÓėVµ Å£łĆąrqÅe+`Ww¹©%Ÿ•öČ=i&…+Kqūي‚ ōÅ1œŹ’sÖ¢ČqÅJ £’OJ»‰„m -А8«Gx„nķėPĀH#Ėćh#­NŠĢ˜Ż’:Rm°Ž›‘æ,øĪ}źIbXā,Z³rX"~é¢dnk&īye ĒGZJģr’…U$SA$\`ņj”nQŠßҤ”™‡Shp™!…L£ąrI§KnA#ø6˜A ģX sVŚXĀH˟›JĪrfŠ<ĘEÉ#€O<“SŽ2¾œ»Xƒ9ŖÅYęĻ#‚jüĘŚ3ĆĢYzg¶9زÜĘQęe=:܏UäóW®›÷l@?(ż*®˜ĮXjKéA‡#>µFܒ %m bĒ’LšžĶ2‡f”P0Ą9ĄźĶ§ĖhX’{VĶŚ#wQø“6Ų‹pōØ#7%>õ#rœóĒ­N`ö€wc×óØZ-Lł­«-ųp‰.ČsĖ3]<Ž_öt²> tQ’Ö®&Ų:Ž(VŪĶusNó±møŪZSfŃwIŒÆę)UĻnjm.éāӆøŖ7ŅŔ7 šžĶ<ČA? sŽ“’ŅĢQ×Dtz-Č{æ>MŲMgų¦Ś9µ7™VY!a»=óļN˜µ¼`‚Hb?*mĶęõ ‡TõĶ`“‹¼Mj„(Ś[œõų0a’lŌ<°ŻŠ7"“5„YfX<ü½Ŗ›FąžAQÓ³iꌠšŠ®AŻŌgڟļ+jō<ūФr=8§Fv.pG®iuŌymW*w{Ql3ó“ž“ĄĄ®ģœš}ŒR;’ Ų9¤µµ+vŚ™ Š¶·H„’–Fˆm÷Øl€[vWz3j}OaӋ#ćō4sG©›R0µITČģKsUu)“»“ĶX–ł<:śÓ-Ń£bS&®é OTĒŪF| ĢÄ`ąUčąßg¼‚©żź-bflÖŖ[™tćYOīĪśĘr±¬#±‡µnNÄ^ģäŖķĄ© eķĘ;tĶUģ9=)bČB{ōT©v)ź[yUŹ„g®+KĆpĖō¶ˆę¶r{õˆ„œtVž‡y%“å”yR‡č}(āŅŠķu›OˆG+A$g”ļßņ®zĪīu$åŁ+õ«1kl4ŃdŪ3Ó%y¬+{©[Ä č0Ńr;žÕ”Sģ]Ō]Æ”Ńx¾Żlähf&@Śkˆ½©*ŖJŽ w>=¾’m,FʾfÜŹ{ŠóķĢd<ńž3ÖŖ“r܉ÅEŻ;•§$z‰ #éW€WÉŖYJŽ2[3'.ĮĆ©äžœU¦\¦p=9õØ`S‘ŠZYAĄ Ø”Üv{އ+/LcŌ×ŗ|'\ųnÖ$—"ų8ę¼62)ŲrW©®›Į~ øŃ®€BƒŅ¹1ųkK•nuą«B/=~זWÓā„ŽPʟŠ×#w*Cv|ĪŹF­tŽÕ“Ż_ĆJév‘ÜõhĖcŸJå|i+˜äµÜ œ¶|ÅJ3喌÷kix+£Üü.<‘g{«_yҬhVŲ`q޲ęyą˜Ė½GßĶz2§RQåęÓŠä„éī¢{]žµn·‹aŻ LI!õś×0zײ:ŹU<ĀAĻ${W#įĶPLł$‰Żv–`ź—ŹŠyĖņ7Ė“\JƒŒ½će^*6Lėõ«U¼“ q)pFę®Y­­Šć;xūÕÆ ŪÉvvÉ4»ˆĄž*ŪéHƒ9Č8ŖU4NĘŗO[3½{–=)vØ8Ea-żłĖ“lc©ļIšĢ‡j+č}“Vdž©·„΁”ŹńĘ:ŌĪ9n”śõŖ0ĮzŲó&aĒcV”°˜QŲqY¼bE¼3'M2ßv2_=2{TŗžaµĢ#$ćnŹŽįcÉ<Žžõbļķ‚ T1ޱx‹½Ķ¾©hœØŅÆävE…Oo¢({zī=+rŽźś“e5eugé%¼`{TJ«o@ŽŸ.ś™k¤Ł§Žˆ“ŪźŅi–aՀžõ­§źvEĮuĮōj¾e“ø˜m =Ę*ilt}Zźūœūi¶ŹƒIĒØŅÄīłbŁĢ×a-¤Rˆäł½›š«sĮl;j"]Ģ„B–ĶXęžÄWCK±VłcŪžžõ~āń·a-˜g”4ėi/@ĖnH^޵¢[\…NµĢ©curTzžišZJėĘą=[ŠŁ[{¹ä’PPć9+Š‘“ŻBA€ūGØ£ŚÉ-AŅŽŃfšH•’xŅ9Ē÷ø5Ņ­āŠ;rI®†MS1’n”#˜Ś=Ȑł·;²yäŌūi[F ŽI•į²€•Ø© a€Ń¶}EhYYÅGĪIźsN–Hž/ašĻŚI³©F1EŠÕv“Ó*Ś£¶#ʝäÄ3ˆœćėÖ“ōĐÄp½9s[Q:čŠŚ:;«1r t:&’ nÄš8«š“(.6śę½#¶vé æ8¬jÉØŻšŠŁĖéZ4°[üŹWwoζ糈0ČO`*[M0Ģ1‡ÉąW©NVŽ»2ęæøA¦ź2 \ąqšÕŠćz…nżéś?‡GóĒ^Ozė,ō[Tµ$Œ\µjŠ[P§ZQ÷ŃĶŪ<0„ lõõØÆtŃ9$)WGö(caT:[¤ņ %Hę±öńNń²¼N]1£=óéUn`(¹_„jjڐIĢKø°ē¦j+K{‹Åā7\ņ 5«ÄYjeO'±ĪjŠĪv™H>ø«:%‘+ä°>§5ÕĆ ™ oÆz¹c¤J’©×¦+Ž®)3¶…®SŃģ­‹ƒ4\]4:vž¶ćĖESך¦–ßgp®pķėU|{“ZóĮ“ĢżMˆa±øcŽ:՛+!ņŹIõjX$ÉėÖ¤²›{d.įœäÕ)ébhøm‰åćHÓ/·;@©ÖYCµjHĄ-Ļ~™4'aōŌ@ Dł›>•!ùF? rĀ„r@sM–'įŽę¢I²R[\‰äĆpOæ×C611Ļ$ŠŽ/ ź {„ ·„T¹ŠßNŸWFžüģ§:MĮT­RsJvgQisev…E“jŁP+#Z‰ķž0…@ą»į=OLø; ’&=wb¬ų­{r°M#“^×a Ł3ŗ¶N*p½7×oć3>p~•KFń ­É$Ž0=k¬O C?Ķ4ą’2Ų~ÕVoŁ3acLz³ÖņÆ ‹—šĘ1ꤳœnĢ=kÄ2_²-œĖ\ńPŪ<Č®Ku=«““šŹĆj™Ę\T–V²lšģ8Ą¢‡$÷&¬źN^źÕœÕ¤‘ņ‘ńŠuöæeG9#½Ez†™šėIÖm€ƒP0–õ®+ā·Ā}OI¤²f¼ķ’ėUdž«.HMsv3©Nµ͈ƒHąoaĻz좓qo”H#®s\‡V’ąĒŲ1Į9­©ĪēROQ±Ū˜Ų37éŅ\Į rär@štķ\ēI/N8♓ŠLO2C錩W{4_³KķµŅ?)N™jŃ·y¤dÄ8źØxyÉaęFŖŻWI ŃĘ»A穪×ŅÅ:/Kj:I<°pCæNzւió$;Ł&fQTSņ%UĻŻē­uz¹ö„Jʊų«tÕĶšų ÕŁźq—óʱ¶TG€HēēŽ5ńSŪ;An%š^Ūz½ń¾ü\j²Äqś+̟U{øŖ‡ cÉĻ~µqÅsEI+nĢŲv×µĻ1·…¾lõėGK¶Óą”ęY„=yĶqÓksŹ Itp:Š®Śƒ4¹‡s±ą V51-čĪ•†JČõ÷»³¶Ņƒ$Y|¹"¹;ĶrōŹD&;HOV=MeéwfŌ4ķŒšŌ«³žeTSžĘk8JR‹ē*tiĘIĒRÜK܁縸œćų[„hXŲŚ“±f™W²ļ Ó­Ś+ECy*G'”>Ō–ŗ¶™o'— Ép’ŽQ޹źs%£;)%u£:Ÿ i6+*ī–qž2 Ö„žŒąyr»!ņI¬-Ä/•XįHĻūCščķõVgLŗĆ®ęJ·+×CŌXyµĖwoRÆöN„“nFŅ;÷«ŽšśÉŠ\Āäu'5Ņč·*ІócfV¢ŻF ó”B˜ė“W\Ā.éĘž†ŃĆU„ÆučĶßźÖ‡LMóŽ6޵±cā-žUĢ.20¹7].K!,,2ƒČĪ+1/„S“ēąę¼’­FIņ?ó:„FMūń’#Š5]bŅŽU{vąśšŌŠ¼m±<½­Ē~ÕęÆop£.Į½3ŒUÅĶ Ż B1‘Ž·eZ)Mź¾Fr³¼z}ē»É¬¦”hq•lu®3ĉ|KG>j“’Eq_‰nķ—3!uŌ`V¾›ćˆį„Ŗx<:ģ§YŠWåmµp­¬L¦Ž–ą¹Km’6xŪÖøŸ‰¾ŌE°‹ģ¬?ŪŠö+ļéĘŅ?&TG³ƒ@ńŽ’Ń»’)÷ `‘^­ ʬõåv<ʹsåqR±ņĢŽ•÷·nģ{~^ óeŲ®Ü ŒWŃ%Oź½·· ±ĘTąV2XŚYJ³Rr+Ӈ=Oz?‰ęs{'ÉQżĒ[ų1#ł˹¹ąāµ,¼,ö䘌xš;ƒĶzˆ7O?īąUSĮ,+Zu¶!Ō?cņö­½“‹ŌPŖ¹ołžAm%ķ•ĮU™\ŌŽkN×W¼ŻóLF\Wo{k¦d’ŲoīHÅUņōå]ŃŪŏM“JŒ<Ń©QüZœ¾¦‚ī Å>>š&³vAnŸhen5ŽĒ%”ˆAµaŽ+ń=œØŽDÉķéJ[|®CēQ|ÖüŒFÖķbˆļhĮõ—­ÅqrÉ9cĘšp*9l4¤”®Ż9éV!K”Ś#ņIī ?©w`ńÖÉüĶ3$[7JĮON?Q–żRBŖįW±Ļ&²5±ˆœ ¦\ ä·5Ė6« ›“R]°=Nqł×TpšŒlõg4ė¾k­<D¶o5Œņ;Ȧężj-OU©¦_ĄĮÆ)Ö¼[}r?g\ćjŽ‚©h:Üéw‰d–\¼5håÉ¢DØ©o#»Ōn'ŗQ,²4Q繬OR“³·>Y˟ā5wJדķ†+±»ƒĮķU¼VcWnōū!ŽKK“iÉ)5įņÜjOūčŪ‚~U‘RC©jqŗI#cŌM'ū«X¾Tž6ī{v”#Ƨ¢IjŽĆ*Ģ1Ó·Jvcrź'“ˆŽ9R1šęü a©źZbĖ6ėhń‘+øēš®æKÓd…Įo Eź¢2­kin­ó0”ŌVśśā¬J#³ņāĘ ÷ÆÕt[§½Ā3!c†ę¾›ÕŒńł3j;”&Ģ~µF×@Ńn•½…ų8ČsTÖ’™œeQj—ą|ł†o„ˆsņ9D€Kh·ō§WØźw@źŠä`īÄy„5$’KīEMZś®śwѕPģ9Ŗ:„ķ¤Öf&H÷u “dלxŸ_tŌŅBNA5i.oFź2Üb±ž"tß*7§†…UwŠŚÕ¬Ģó1ˆ‘܏jåµÅĀA&CŸZō’…¾ŌõėOµGr¶–ąS]§šÓI[i[SÕ¦žR2 hčFU½ķ‘j°£īÉßä|»­^ģV˜ŠžĮųšęFŗB§“ź+źo|*Ó.`o±ź/ÅćĢēé\V„šžM5šiÖżŲē+į]U褙Īń“ݦāÓ^GĪ—WąŸ$€ØHÉā¼U›VebAiČ÷Æ«üCšīĪ2¬X—8 pMxĒ tw÷;‚™żiSĆ$ŪOS“Šē”dĘų­Iµ…6ļŁ‡ö#½qŚŪF`*ÆĀž@ŖŽH\«;6sš‚9rŲ;°GҵŒ}ĊQO[‘#ä°ōŅ@zTņ(8äēŅ¢–20ÆįT˜öD%øyÅ03nĄ¤lnĄéżiŠm ŸāV·ć"dĒQ֞ĀKd5*ü¤ži®~aɤåqŁ$Č ƒœRÜ.HŻĪGłę˜6ē8ĮĶüć$ąńķJ݇{« [¤IÆm…· Ž=k:ßļ|¬«OpĀ0œ`~µœÕށܒī/1xĘõ¬)£’99čxZٚtū6G õ¬Ė‹†“*BŒw§Né•Q+)p”ņ}:f„BJ°õ¤“*Hą÷9ā“­bHp@qžõrv"1¾ÄVŖBņSRyd Ų¤ėZ:Jņ”ldt ßéSź0łó0¤ž ®yUW±Š£d®c`Oš;ÕwÓÓ­hO<(„AYOcœS"0µ£»•RĶ\eݵĢģŒ[Ÿ=¹ā ūØZ½Ø8iŽōŖŽp~R2ktō'”ŠU8ąć4Ņæ7ŌT›ˆ8śŃ±\Žž“ŪŠ†–ā Ä[rF`A8<÷«A•Sr:TN„üĄ‚¤Ō©!½“5ŹšNjxv–jŗķōϵ_³fh—n=żŖÆuaEŁC“®wU«X‰\œƒėNŅćQ#1ėŒV‹ķlź›Fp¢é+›¾…Ó#• zdÕ FÜ®v¶8ēµ=ÕÜjäĮź­ĶŚÜåøĻįBh«6cķ*ģ­÷ŖÄ-³ęäp6äzT8•éžy¢Vøć–LæbĖ2‚xĒ ØšE]Ų`qéTƘęr Ś3­>#nćŪ±Ø—©£zhKŹnÉŗUˆYrĪżj6ŗ€ĆO-“|’dģ;VOČQ“Nä6Ģ”Ÿ$ē?…VrĢå‡py©IOĖŗ‚–sÜSŠÖāÜ«“–ć婝Łlūõ§D  SŌzÓ.r 7g5RŌZ½ÅÓż!3»ę9śV…鏻(Ē8ĶG¦‘³ć¢ć4Ė©ŲXsČ&²•īDćŲ”m+}¼=ńƒ]N”)k8£†r+”±F° ēėZŚuĖ=Ņ+œ01ZKK4i Zņ+LW „»Ó ßę  ų ŌÖ”o)~Pqœf³m•ƒČyÕŖk”Q6'cöo˜ķR0sŚØNļ¹%:)ŽzĖlŖY‰ ‚sަŗƒżNńĄéžI¬’īhŅŚ&PŒšw;ŒŌ7O*“dąU¢Tr §Up/§zŃjJ‹–ÅX[÷xnXš–ņ1ö|÷«W«ęØņ•cUīF*[¢׌PŲÜt)ŪÄŅd`€F3[ßcX4ØŲ\Ę®N g'ŲF ŲŠ%P\ī#¦i4ŽĆŁj2ł¦AŒ’£1ڈē- ņ÷üjW’7\¹åz}*U1ä}ŽŲ”Ūa'mÅJćӜSF‡īŽ3Š„«Æ+ŲļR&å„;Œ·µf“ķ '-ŗģn#µ·1äćĘØ]aäĄm¢¬N”„Ą 8ā£0®IūœY4[nÖ#„ķrT eĘŅ ąķķéAłˆ^Fz‘OŸpPǤt±Wę¦ō¤?)ĻPMM8Ć(ż:SžazŽ™«"ÖŠm¼ƒwʧŸ^Õ0!IÉėķLU ƒ“¼u”„<.0Ī{Ņją›ŁŠÅw‚ dõČėVl²¤°8Ŗöy\…—=OzŠV0U*ČŪŪėTÓµ…ŽVE>Üłr\8łb÷­æ iŠ<ĀęvŪ³ē ødā°ō©$k¶PA‰¾VLē•ÓŪŁD±|Œ€ć”®N:œW,QՇĆ8īŒ{1e ©Ż–IĖxŖk© 8W`žčÅtž%Q»––4÷®PÕÄ”3zw®Z R|ÅWpė”BźļZٰ۹NŸxVMŻķŲłM³+Ę“›[ŽNOŌhy%ÜT“޵éC ärĢč4; K˜ƒ²§˜Āŗ /KŠ0æ"Ŗ§§z̲“eTĮ+޹«W7ÖöŖTÜaż3^lń’īzpĀӆ©ź¶€}ÅJXĶI]£-ҹø5EŪ“"H§ølTÖ…“³`6OcY*ŽKVkģāś"Oˆ'ös4 åœ}ć^#ā«īķ%é-čsŠśi­ŚĆĻāøč6Žņ#1’:“Šõ0•š\­./ (ĶŹ›æ‘óö„fcķ$ķī+:Ž'łēuń^ɬxŃT“#ŒŒõ¬‹Ū,dG‡n¹#5ėBŖ”lŁÉĶĖŖNē)¦ųŠ("XgĄź[½iA«“ć ä)•<žŽŒ?•>-2ŅŲĆŚŸÕ õ‹5ś÷ó”ćŚŅœĢݹ¤“DóI’IYCt]Õ„Ń®8NCSE$ŽĒ+“WL(“rU­Ķ±‹o Ś7¼ƒčk[MŅģŠ æ7æpPf<ńڽzēĆS?ĶLžµ^é+1awr 'śÕ¼<:0XŁ=O0ƒYžI<ćŪ'­hŲ½ķĖ 6Š}ėŌ¬|7¦Ā™ŃļƒŠø–ˆųŚx饄õX>„yvä}+ŖžČ“\2‚īsVK°(7.ÓÜī­U4ŗ‰×mlspŪZoĖĪ;f­¬V˜[æSZwZ]‚’«x‰¦¢~zNNōrödčõi”„šĄą•ĄčI>°R×ÄĄõµY:tDįäĻZ±e¦Ų£ļ,Ņzj›O™–„Ķ-Žz;ėłH`9=@«¶i¬\63ä ēŌ×WailøŁłæ•mŚ[īP#‰@Ns½īW±‹Z¾‹¢3NāiŸ=A8ÆDšĘ™@ XLrOSTōøLm¼ =¹®ėĆ.$E@Ŗ¹ēā±*ŗ=L&˜‚6Ō[ķH¾lpĒ­V‡D”LŒąūWY±bĪÅ @«6ś„Q[m`›ĄĻėƞa+{ŗžµ<[꣕ü5†<ŚGvéĀ3eŪ¦+>īüŻĖšĻ–ų³üēéĶpŖnrę:å;G•īÕąˆdĘ}MqzĢ‚kķūŌåsW|būć;ŪZćć+üŏ®+č08eĖĢ™óؚĪSå‘Śx^Įn_„+ÜWLŗK@ł„”+‡Š5o³L‹?>­Į®ŪKŌūäe*½2zĻźÅé±čP£MÅr½KM$ilTšdR¾W£xžµdŲĘNKqžµÆ§*”JŒuÆ6S²ŗÕŃūŻ @~ĀŠČZ1ŽJžµÄ±µ± LŽAīO5ßx±RxHó8ė^Iāi®[dÆ“õlšļĀ'(Łž^&·%K“ĶhµŪXdąČ}~j¹‰!+Ą-ųęøTšŌÉĻ›#ē„^·ŃēXʆā»Uļ¹—×_ĆÆ}Y&@žj͌–²ēĪ·š;šācµXr|r;T±IżŗkW•“0Œ®żå”čÓD•@6Ń#cøę«ŽxIHL±Į ŸBG&¹Ė •b\»c©j•ēwĄ%ø9łcĖ5öĶf©OGGKoåä%šF£ŒąŃ»7Taōā¢øŌŁIP2@뚧u­N‹Č^œWE.~‡<įMisRKŖ F¹÷¦‚UqlÖ×.HčĪGL sj÷²2•µ:ā·ę½ćI8ŽåķJĪ9Ńö¶×#Ž+™Õ4+Ļ%ĢS±oŅŗ6ķœ*mõÉ=ū!ƒå$dd|ŌćW£DN ÉÜņ;ż'WW+ä¼øīéZ°#÷%Aõlׄ°Ü„“€c¹Rg䉓j-Ł 4Vś]¾•1J®|UŲ4–# ‡® t\łē”$Uū[žOĶłPŅŽ€äēŌēōķ"ęCÄR*ķ]&—¢F©‰0ĶŲV‰Ž«óķ^Ł8­Hē·‚†õ’&„Ʊę\·2'Ņ£Ks“쇋&nX™„&6?w$:ėon¬Źņ2Ó…®ékś5Ė”€ Ŗrœ—*v1ääw³h­ki¦Ūƒµ§Ö¬G{bƒŃqĒŽ¬ųFµ =śŽƒ­>-"ŽŁ¦›~Ӟ{žu‡Õź=dītūjIŻ~FĢz•¢żÕ20«FĘāźdͽŖF¤g,1\uĶż„¼äG$iƒÉ㚳eā4yqĖæÆ~hśŗ‹ÕźiĻͬbwVpɼżŖźöڵ,Ż‚›•2Eyšj/,¤™6äg9«pj% ˆägfćåęŖJIhģ:* žšō‹›xmbĢ$gӊżծķ¹F`zš£c<ķew†FN).!µr 0>ĶĘk:QoćŌ+IÅŚ“üGĀG©øŚ²H2s€koCŌu6A+IåĪ ę¹ŠńZEę"mĪHŖRźńHĮ^b08ĆT׌yt‰­ ŹO—›SŽ| ­Ć3,s)|–"ŗ?h>¼²iäX&Œōkē kŗM­Ą{†w#Šń^”¢x’DKˆ@¤0ĘÅ|¶#ŪÓŖ„JV]£,=z<µ"œū†”¢ŲŪĘęŽ5‡ū¬ōÆ?ń4—ŠHQ ٳֽćVŃuu‰ŚŌæL§©ųbŹk}֗ĀyMǽvįėÅJõß™ēW”Zœ?vš^Zž] ŗ‹Č3< ćųOÆ„[]¹ $̃=I5vóĀśŅKņÉFEՓįżHĀ?y— ½ó^¼§u#’W\ĶÜéü-¢=Ā"ż£ź Īkq¼jĶęļ;½ė›šjj:pĶĢm»°Ķw0xŽ×ŹT‘¼³Œ»½xUėb£RŠŲõįJ…H))]ł•m“hŹåČNŒ½…PŌ*Ņ–ĀĀŁĄQԊóŻ_^ŠŻŒa#µ}EńƒAøÕ¼:NŸ22łkĶ|ė{ਿµ cøŠpFL€Ņ£™*“yłæS•`Õ:ņ9ķ2bē# ś ݱÖ|=‘£.ųūŁĄ'Žü36¦ a ėŽµå†«v“y1Ć+}=k’¢h©)^>G«Fµ 7ŠV—˜ž<žņīńüæ”ąqŠēm“‰%cö›…<¾JܔÜKoŻ‘ėX—zt­1ÅĬä󶽌5Ém*½Uo÷SHÓć*Ķ:ä{½[“‡LF n#oR£5‹s¦m_ßÜ?²r*-¢'†(:’Ķv(Ė—§ÜsƖNńoēc¤¹Ōt˜[åŻu·×Ё5ųdŒCmlT1ūĶŽ=³YRĮˆšŠƒŪ­SøM»‚ŹJ†„ŠŅ\½V‡H†ŻĆ5ԁ³ĪŠx-ż½¼B;p«ļ\Šy¦p†B'8§ÜĮ?ü°2Č;c„a8N^¦±Ŗ“]®ĻT"]ĮŽAė[ŚN°2rģzó8”¾ “ ąw5rÖāHvļRÄvŻ^}l„ń#ŌĆf0§¤YķžÖmĮČā½Læ{øÕf1F£Ö¾k³×®–=‘©LėZZV³#3H‹ž9®%’Sr滹ŪS7“…šV>“™t²³“/|?“umi“²_ĖżęÆ‡[c*fV#³c"·“»Ń4yS'=z’Zķ†SM½#Ķ–e;{­£“Ųæh-.§Pr1«ĮŚ`W±azdõ®dRHvŪÜ\čp3Zŗuޤöū¢Œ[GŽ­Ķu<¦ŠųQĖŽ£¤ßąu¶‘Ü ĢOunaĘ@ZŃŌōŪ)ķ0e… äócĀ\ś¢)^2jsvŠKó&8Źf¦xG¹lˆŽ!TŻžHܹšÕ“³ö•ŲFqęsW“?ŚĮ*¶ŅĮy\æĪŲŲAq2jOp„ė"īėVÓ.Z1rņ§bǵmJ2–šV|­&Łź2Ž%©" „ō5j+ōt 쀑ĄÆ:Ó/¦¹EógÜǟ”ōāŗM-„ŖwĢĢMwS‚KFsJ÷Õ z”L4„OjדԭÕ9‘#ųMqöżĘ79Ķv·^VÄ1;ēšR¦ž©Š#k%c·ŗ{9S™#ēšĆŌ,PƒäÜnŲ9Ø4ż"įŁ^V9Ō֟ŁV»ēК#+nĮĀėŻ1⶚Ž=Ņ\. ļļTÆ5h­”¹FkwlÅz—ˆt« ‹$¶·„¶Yŗg„-aŚņFx1]1¬§yėäqʟ,ŚŠŠą4>×QāKĢptÖ> “[C46Ųć$q]ö•„ŪŪ T…Šć”£X“æš=°4vČ8ąóE:­}¦:Š“Vō<Ę-Ćj[-,gP8Ź÷5NĆĀzõÄź©Øōc‚+Ž,“ycŚd¹I­­>pėƒW:Üßt Tē!3Ē4?Ż£rīŲź3żk¬‡Ćö0Ś„KU “]Ņ5§˜Ė‚_ʝ~lÖŲŖ“NŪž¢c•…R3’“ĪŪJ1ĢĶŠ&¬…©ß9rݚŻ99ImBćSœSķ"häĖOŖµŖÄBŪ/Ą…‡“g.©t5 ¦™upAĘDUŅŲĶ(¶3j6‘Ū:63]>™qjŒA`ųī¤ ÕN]*XV9‘›#<ŽõJšofŽŠtź(µdĪūOAšvF‘U±Ą#śUaķ捌#‡9Ż“×pšf‰ ŚÆl•üź=CK‰ĘĖ{‹}˜åJäRU•ž/¼Š”Śł,żYÉi®Ÿufžźńščmn“ė•]££»U?xZĪņŚ£“ŒžUa¢Üi90¼Ó±ą$ŅTł•éĖļ*ØĒŻ©½ś+;icŽń ĮłĻhųrČŚ™mā!ĻrÄ’Zę¼;iØNUęøĘī  ģōų§‚0‘«²Øä±«å—sĮ­Żžf6ŸeInĶŪpķRͤÜ_[•ŠD@Ćī2ēõ­ė‰.¼“ūøA œ5fZĖŖ5āīh L`b•äö2”¢żŁ3Œ»šf§krŅĘšĶ’ćZļĀŗĶśł3ź–šąš é—ŃJmYå–B rČzšāåøŅųÆŚnaqó Õ.V¹žćŠ”¤©ĒcĖĄo§ÉęŪjåQĪy­Y‡—¦°¾’"ź§ēoēZĖä¬e£½1JĒń=õ¼8ø„Ģ„pWÖ¹d©Ōwiz£µŗ”ćfžLåcøŠ!g7RwÉĀ/éĶVø> ¹Œ‰ā¹\ Ø¬_$zœĢlģå„(łJW3a„ß6 ńKĆéZ:6W¤ßÜeFPvö±ūŸźvW~šTŠ™-ä˜IŁ]šJĆŗµÓ-„mw ߅cźŗ³ī·†į”œŽµ݆»Œµä‡;W&”Øā-Ŗęü)Ņę²mz³§Ń¬“W—s[ŗw_œā·ē‡ĆDl֝z1›ų½k‘šõ޶ģ˜ŅļA<žó×waą›]BÕ$Ō„¶-Ō…— ęOoÄÕΊ·ł—ķµÕŒpˆŽÖ]ØĆcµyߎäŌ¬dwµ-*Œō~Õź°xcDÓįUmFāEī ™ÅkXŁų_hāvĘ>š¶§ĻļI4sV圯M;Æøłuū©X‰Œ‰ź5hŲkw(£yBŽ;׊Ķ–“Ś2yŒuŖ)i”Mk"`§ŗ(Ī}©JŖM¢#Zµ½Ųźxõæˆīc`|ىnø=jõƍ'‹véŽü µmųēĀŚg™ęŪøŒžpǹ=KĮóĶ`ļhVSŒõéZ¼5^r£Ž“V«‹ˆ³ØĒž0Ä `Sļ¢ń‹]LŪc‘÷ˆŖźøźĮŒ“×sÖ£‘‘Nč3éZl.aÖh1ĖmÅY{VŽ”[ŽNjƒ1ą{uØä9#$zҵˋ±ŖŚ–ÖRn:Ö£øŌ$ø›—|cÖa<ó1ŌPŹĖŅ„R‡Trj×.—Ā˜žt‹#·C…]w*’*|eB}ā*š[ą¶2 Ŗ®~\r\Ō·*NNģsĘ?­B zžzÓč.f;’¼NWaŠM"cäš~6·\ކū‚ŌŠE%ĮÉät„ ų+’+.ÜgŌɳœsŚ…g rŲE$F@ōō«śa å†2?J¢˜^X·<`zÕų6µ²ķ,¬“Ұ•Ł”hU 8$ŸCÅgź9vl‘ĒE4éœ dsžõWPlČ6¶3Ü^”mnŠÆ#Į銋 ÷žTƐä†8ĒZ‰Ź–ĪqŚ« Õ·dŒyž†?–Bۜ ÷©W8ĪE0mŻĘqŽę„HoR@Cu-ƒĻ½h¼X€H§ägsYLzĘ=+@Hėd‰‘“ÉꔵŌMŻXˆ;J³g©ęžĒ÷|±ėėU¤8<“ĻqMv;z˜6ø©®_ˆø„[<{š·a ū3§—ŲšĖ“Ž@,@Å_µm¹ä€Ot„%bŪŌkĒ·©?…1Ī0:‘ĶNŅw-@ØČČõĶKŪRž›£”%Œ‡;YŗĀ©¤…”ņ0:}䛣Ž@i¶ yKČłŽļQeŌĪņoRm>0³Ć śšu¼{g C)żjģq¬p)vŚ gõFéĖ«žG’®³ē»²YÓ:“ƚIö>Ļ—ĢL r4dä(ėV,®ćņŽRēŖ«,vUy^½kzrv³’r¼D‚Ÿ*xĪHõ5­ˆ² wä1YÅdz“ĪkRŠpμgÓŽœŪ±¬–(kpģø €EW@¦Ūų·ēš­ l‰9 Ęk6e}¹\ķ”n•‰QŌ›a+µ[ ŠU†Œ†į~LŸ—žōo ŅŗŠcÉŗf'*qQ#7§½HūJˆšy98©”.4Q‡…KŃ '{”•@č9§N ĄĶĪsŒÕ›’ŖĢy8Ŗį‡’F8>““¹o°ČĒA»i&žP„²[޵ <`vé<õLČAb£ƒWubXĖĢGppŇJ°U²HśT–ņL•*NiĀ5Żß‘Ś•Äš'–E[xы?*–ĶƒØ °ČۃŌŌ¢¬Ŗš8ēµVy •?6O„ø×™×G,6V¢į#Y.Õ>ųźkźń„rdbZJ}™Ż§¶łwcę}͊ŠfX÷I¹—qĮµ/aÓ~g£ų_V°K;“efńŽk§$¶Ē2=s^!qØ$‰å +*ć>õYf½ Ņp:ם<»ó\ō”˜r.T}x×pĶķĶMjׯøÖ¬Z*x­[dŽߔ b¢®Ķ•g%øŻ2’G™.xķė[6éä$’°Ēš×1[3®ī¼šĪŌõšM¾q9ķšĮŅ[£e^\¶GcÆ@aԜpjżfŽFā%f­q,Ła$Ņ=ח*GZĒźÉ»¤iķł¢¹Ž”µ œBƒšØ|č¤\,C8źs¶·i »„_†ö;fSøs֛M+$ZQhКv•Uv®2jžŽ ’ą rÖtwÖó&[ļr: ±Ģj /ēX{i-65śŗJöŗ;KC¦ÅŹ(Č掭}ŗÕ_ ÅyżŻńHņŽų¬¹u‰A!Kg×=j}I½Ēz ”čZæ‰į³$¤Rœ YųļĢbčĄć­qS\Ķ9 Ć9FźŪŌjī„„½ó‚¦2Q~īĒq©ų–+±±¦lõĘzÖz”øo”–®=aXēŻĻ#«Ś/¬#ĄćŁ·ŗr{u'ļ¾Ÿ+1FZnµŖXZ Ž4ZįnµĖ$ŖJŁDl„W§Ü-“@3!ćS6³ŃUÕsŲ醪0«8ŽČķō¶Ż&>č÷®·CHPŒózņ‹+ł0s»­tžÖ99ÉnäÖxŠråŠźĆ8]\õkygŹ”G¹«ÖXęå½+^žĪßÉo•ĮĒzŶ“‰n2€ąÖk-—±|Ö’Š„ÆY¬Ćp‘WoNy®?P³hؐų]ƹµc]ÜėŠĀž{'%LŠ8īk®†2IXęxH߯1ts47 “²ąškŁ>xŠxR4·ŹkŹ®12Ū>Œ+®š¬[‘[Ģł±\Ŗh{ǹ•ā'KD}”źV·h¾iČqÓŅ—Ęßa‹F•­ćY%åĄÆ6Ņ.ŚP$q[ńߤödŚqÜ׏B”©ŌO›CŃÄū*ōżÕfyO‹/üD·N©•éŠäī¬uK©KÉ;ėĖW¬ų¦3,N#+»gé^k¬[kįöČŖškčiR„½č¤x‘œćhJC4Ū+ؐ$—Ūæy« ¤=  ¬åˆĪģfŗæ“ȧzŒ·Ø=µÅżĆ€ØQ}ĒZŸg}Z)Iø¤„§mNVŽÜ‰Ķ#tŽ+¼šv›E»:ć궐Dįc’BÕ)µ)`8ø¦Ec*ŸĀl«Å{žŸoēüŅüŖ:ē­lZAb‹ĆĀxÆ5M]ĻRą}@”¤ė{0žN2McRœŅ±ÕJœ6¹ŽÜŲŚNIhb•Bō5ĶėZ%””ķ“HAä1Z~Ÿ©Ģ[Žz{ÖķµńxŸxBO]¼ɺÉū§O->UmĪ;ū 9G‚:l©l4+ė‰ÄVˆ&Čą Ę+_W½ĘY½6V†ƒÆ*U1CåćŒūTÕSŒy®taye.]Q£į†õĀĒ-Ă”sų×gią[‹o•f”9;ŖO|HķŠ@ xĒ=k¹µń†›0UfyÆ®iR›“ą{2Ėg%ĶNw^§źš-Żø)—fĻŽĶp^7ž÷HY'óXmzĒŽõĖĪeYXuĶxĻ>ĆtK^ź W$ØŻÅuį±žŃ«ŚĒ›VJ}īr‡Ä«ŽaXĮcĘIɦ难”v¾džfd;PxŖwÓųrĘ`č«pŹrN3šxńVŽŠ•Th±ĘÆR…*0•ł“0ƈ«R:BĶu:#W¹²øg“÷}3]}§ÄdKs›dp0=«Ą¼CāIähķžv+Ōö¬”{w ¢\w<šźÆ…ĆTi„va‡Ęb#MĘZł3ŽÆ|Ge}q¾CØÕ|7Öō˜]ėa×5ņŌÓ͜‰p9ĒgDÕ¼›¼ÉzW/Īj*QR§ŹƒV4ź]l}ā…°Ō­‹G$[½IÅqVö&ŚāFGäg7jó 7ÅqĮ˜+ŽMjĮā+¹T|3Ķlā·¹8ŽG'(hw³ź„#䔪öę«]x‚įbĻóĘøłu+׌$śŽ•‰¬j+€P€85čĆ µ‰ę¼UDģ„”Śj^)½d!Ū ĒĖž5VĒÄ2LØ­1ć£ÖōŠS>ułŖ­Ž”cö„{iŹ’yéXOŁ/qhĪźn­¹ä®c³[ūų>K¢XBā«Õ“«õ}ĪQ~mÅk•šFŗleGf9ĻzõŚEŦەI 8žµåVē‹q©āzŠÕ©įei.ēwšoā?Łį]ļŪÓÖ½fŠ5ŪQ7—“nz ×ĶŒŗTˆĘŌ,%¹XqMÓŅö ”)ĻOœ’JłŚ¹MZsö˜ Y>cŅž>†&)caļ/“jńž‰¤Mhcš$’įʦ!5;Ÿ=ų“_E·1X°‰HĒŸ…rŃGsy'īKHķŲIÆl×ģōņĶo¦ŚČąó±aÅ©Ķ$Ė „6”p„£ˆ)5Ė_| ŪŠÕbų•™ĄŲ蚔¬ ’ ńóĶz?‚"ÖōkUŁi„œīlt©ģ ž[6ķö…žuŖŚĶœqŒĮp1ČĄÅf°ŠJܧDqu~ĢæÄQk:¼Å[E·—yǘ0q\ž±į+,Msjpø Wsmā ¬bó,€9°ć5—«ų²Y¦Żuj8,cžµŠ¢’å³3žjMó¦Æ÷Ž•§'öIū4Ą9$šĶŸQŽÉ¼æ“ć#g’Z·ļļPvy6ŹŪ2pOZˆĘp†Žęó…iv¬z牬WQŚŃĘ©ž‡æćXŽ7×t™¬¤ŠÅ ]·Ķx5ēwwD±wĆÓ=«&ęän, '®kHŌ«¤›’#9Ń£Õ}ĒO{ÆĪlĶ›¼”‚ņ¹Ļåž?@É+Č,)ē8ĶiŻ\8„8oļw¬ fwøˆĀĢ$V$å†Mi ½\>œĢó{c‘„ 7mn9Øu >6Œ4 ŒÆ'=ė¦kAŃ]”Cö¦ŠŁC1†"µę³ŗ9U+$ŽkRß1ćUXā۟—'éSŁĀ֘ ĮĘzŠåļ¬ćŽąœ3€jÕ¤½ŻĢ”½īVsFįA @= @ØČä…"»Ė %£W*8…{lažE `ž¢®ŅƔ¬ķŠĒætĢFÓŸĪšŠ–łŲ•'šµ,(sœRŽü”Pu“RŚŻk ÷g<ķč\ąŲļQåš=£›€jE‰Œg©*2qKpr²%eS<1ź“1&ó»…ĘJ•K"0Ć2u¦LwCøA5,”ŹZ›6ƬšF:ē³Õq‘ļėP…ē<Œē޵ŠÓQµ©“Žæ„4“č}(q†*śö4×]¼cœqĶU•ˆmģ…ą1Ҧ·ļĪeƒō'åüŖh0xĪr‚wÜBXĒlS_©Į<Ō»NHE2AĄ­C»Ł rzS6Hõ¤$ķĘO­5¦€ŲHGj`Ęx„+ēńÅ5Onž”ļpø0Ąąąš<¼ó÷ø¤”ü£æ­O ‘ąŲĻ;¤ R8ĮyÕūÜT×ņ˜"‚»GZ’Ī=ŽeĮĀ*¼łyū€*^¤I¶ķłėM”‚Ēålc„IņAéRCv`§zš"Š÷b¹„©ÉRz÷«‘Øņ¶ c3Ö „ŗŖįpZ³Ē t¬äĶ¹ķØŠ¤.Ņ*Šb«1Ą\šiYFdUA2IŠTóCöRæZ˜„ļ+œüČFķŁÜ§„6×GnžjÖ¢@2·9l“TIo#j·^jÖØ™{ÆBĶĢņOp?»ĻéSČŃD²a‹1ÕQŲĄ”ÉrĄĒSQŹ­dKM«‘ĀäO•Éķ“Z²£–õ¬Äဠu©#;Śp*ģ¶&:³“‚Bc\®:ūֆœ­KU:Ę“øAbJ‘ڦ³ŗĢνA9śS·C¢3]G\,¾kd“Ę V·…bGlÓ°–8˼›ŽzćÖ³Æ0ó—VĄ'<ÕdzÓŲŽ ØåNę!@üǜŌs• ķ`:Ółóžõ-Ś‹P¾^FķÄńō¦’8I' šfI#1T‘R³Ō™x'Ž“K€¤ƒŚ”‡+œ¼{Óä†X~½©‘̶0œšs—8Į§ĒåB‡aéISņé6‘õęU|ĖSÓ¤Ś#Õ.ŽY·6rGZ£›–oŻ©$ō­#K! ­K[d†NÕĘ1šĒ™$Z„Æs ĪMJ3Ÿ)Ī9­XdžuŪ$ExĪMX’ģ Ś™`})†ź}øŲ»HüsYJKstݬނÅi!\«ķ÷Øå“—ͼÉĒ­ÉtSŒ}jŠm€^qU\~Ń+;޶“ø¬3ަņīӌ€ØN„åxķL:Üj@ņ‹1ź=)}ZKXÉģ™v++‰Ū—QÅOöHķŠ4¬3żitżrŌ /Žjk«‹;ō  ŽzŠ—.‰hE^f®dĶ2!2{TL| –"µF™œlu÷5f-ąŻĢ›¾†¶ēHēöwV8ĖŁf_”‚¼zVia»’Ā»Ūß^6XÅ4§@¬« ݳńi*/RMtS؞‡HŹ:˜0›P™!Ė{TöŒ$ŹĆF­ˆ<0Tƒ4ŽŖOākkO²³µŒ"J÷5­š ]]³Ÿ‹M¹™ ‚jŧ†§iTČķŸA]u¼š¢Ž?*uÅÜEAPŁĒz§W£Ō„UtRÓ4ˆ¢P†BXõŃéZ4č1»Ł5mqūÜ×G¢jK$289ė\xŠī1“Nģ6™§&zƒģ–¹FEwŚPCPA=ėĖ4-~&TĖGūU×蚕¼ĪÆēÕG$7zųÜtŖI¶Ļ©”OŻI=Ž9e„½żk#ÄV©gćaĮ^o­ŖŸ³L Ē~õĒxÆÅ÷sHąĀņP0+“ :­ź“#NfFOodŃIĶqš»I.%»śÓ¼OÆż®}o$9'Ŗö7ÖńCÚś:-BL(ÉĖUtn@%Š ]N“ō»ŪČW|qJĄŖŚ%ü2…22°#5°/"Š@c1‘ÓĶSßѝéū=VŒ«?‹oaįķ&=J‘PĮāū·¹X(ź1]ŚO iėĶ$6vĶr”bE.qœ V1ĀQ_d.ŗv’Ek\ɂčvūÖ¬Œ3E–č}j—Ь¼‹/Ż 'Ź÷®2īöźŻ\øņš;×]<$Z½=*˜«ÉĘŖŌźõ{ˆg}° ły8®;ÄzµÕ£•{øĒėXņk7-1Ćo’qšŠīćV¾>[I±@ĮĄķ^…*3Z=Ž ¶µąõ)\ųP–\%“ ķšgö– ’~4@}XsS¦ƒrź\ÜČŹĶ[‹DXŠo“qļ^ŒŠ8e9·fŒųõŽS½Ōē°ķZ6·ė"€¹ĄźzT­§Į‚±‚Ę¬Ųł WPœSöńEØs+3*ó8ɀ}źö–×$X¢DČ뷚ėģt«iU[$‚21[śG‡l䃬ŖĆ¦)}f6»3Xw{Xå4Ūw©šE•© ¶Œ(2(÷«śß…ŽC,œs€k›¾ŃꅹÅņ}k'Zś¦ Ai= ÉotŲ”ÜnĻó®gÄZؑ Y»mžšõŖęĢ,̬„ĻrO'ŁÄpØŌXÜ”ÉgAéĶg(¶µEĘ1æ-ʉ¤@³¤ēԌֽ®ˆ1-n*“÷öэ¦Ažų5sK× RX·µeR2ŒoZta'i1J (qŽäՖŃ-¼²Čłr:g„kŁĻouKl㚫:"‘žø®xā&ō7–E{ŻNnöÉćAAß5•ØÉ>ÄCĻ$] ď$ƒĢ`±éTµ(ķR,ł€±ą×„JkNcΜ'·Qƒc ‡ź@ĪcœŽ{T°E ±Q ņ IäB$8ś“]n¤#¹ĶMģ%¼„¹­[ é„dŖ`Ŗ›Fœ Ė’3š›÷QĆó:ą¤ŒW-jōšÕųzެuŻÓ’ZB€cŗŠ”sŖŚĄ™y£SžÕĖų®Gžķ‚^˜£•°q\äŃŲĀs-ÓČ[Ԛä©Zm.[ćMč’#²ŌĶ—'ø¬Ėż~īąu1sɬH'ӗbĄ*ߊ®“¦˜īˆ6Õļßń®w =[ŌźSIr„”—%åĢ 6iöĶ^ÓtŻNķš±Énw6k­Ņ'±(ZŽŅ2Orø­Č&;Ų‚īEVOQ{Y-ŃĻh>Éę_1Ļ>•Ųhž“Ž`"P[Œš‚ģŖCm9Ęs޵4y%¶˜—|w•H(ĒBčŽoV*ŅēŠĢ•"Q“ޤWŸŽJRć`Ģcó^åo}m>–c˜r˜޵åž+Šg—Sw„œƒé\ōk©§¬Š±eJ¢móEœükŚ`xéMŠń`””ÉnŁ­}3Ā×3Ns••„©xN>ĖĪŗ×,qK•·fĶ_,R’G.n.nŽYš€ō=Ŗ)9”dōĮ¦kÄGj0ƒų‰ėY.d%FįŸöjąŌ]Œ¦łµ4–x"łŠ³·LƒŠš oÉcå”÷Ķr·b’ĶmžXŌ¶*1q4Q2ŹQŽ:ÆWF­jqŖ‰ŹČénµ11f;ėPXܟ“ā(æ:×55ūĀCæ?Ż4‹ØÜ Č¶GcŽ+hŹv²!Ā-ŲéüIpéĖaˆ®j[«‚Ūwšµey4ĪU(O9j’ėIø•¼Äh‚žzö®ŗSn69&ŪŪļ1ę’į¤Z+cŽjÄ+q)ąć°ā„šĀī5]÷0Ę“[Å$].˳š0“J--Q“j§³&7 øYg·Jæ£é&l¬‡Ž„ZŠ!ŗ}¢GO«q]¶‡g§˜ēwŖ╬D«VZ©.‰*ɼĢäŽxÓŲŁKł„$xėR;ķ'Ŗ{)W#s6GNjįG^ff«Źi+š:H1° HśœÖÄQ<ČĶö€˜ķYö«ą†äŒœštžDjŅP{–¢j꩝£ļ_Ķ4/„™Ż}Gw—Ūę°ČīÕ¦÷dGĻQœÕ9.‚·ŹŖ¶k¢ŽĒ?Ö$Ż“5‰_½–>¦„†)ŠšĮG·õ¬ µ?- ;¢{ūU&א9V+ŽĘƑ$J’“Ųź5;9šŪž>ćAŒäW7ym„Ąw^^—'Ž”—Äš:ü“ĪĢqȳu-wĆŪĮk±ź¬c;i#YћŽŠåńØé‚eKx%›Łā½'įö±aj>Ÿb:2Ž•ćRx‚ĆĶU‡jD­„køVI6ŸzēÄQUÉĢw`+:ZøÜ÷ėūū;čO‘gy;T įüas=øÄ6Äż+žÓuk…Pc€};֌ZĢ©óļ|×> *vÖčXš”fļuœž§āĶĶ…ćuźI¬™µ‹¢¤±s‘É"½8-ī-“ŽrMHtKiŠŖŚ¢€?:ōā™ĄīÕ­sĢmud2±=8­>ś"ū@‘Ž+¢ŸĀ–bC#[ćpMfź:kŪ>,āŽ,5¼Z–‰˜ūd•¤‹ß[[ŚüciŖŚ‰® _dj«Ę+*M2īYs,Œä÷¦ƒAb2į†zÕŹ‚q“‡OÉ.dzŸćŪi¢Xg†=¤mąĶPŌomoY„ČTœ”W5••Š#—lē )ų‚8IŽŻB…Ą°>ÉóS“;e‰†#Gs¦žČ3>ōFŒ}qV-“Ū{e-4”BóĮļ\ŗų†fP„Ü} K%ūÜ(6ÖźM[«Qéb”‡ŠWr:+N(ŲGܽS[߂™–FR:ó\å“«Ė0@)‚ąŽJÉLė÷I ¼ō²6£M_MY×E­ZFąyŠÄńÖ­M1¼„4{vƒX7†ŒZ5mǜfŗ«=#PŠĒhŹŒub&¼J¼ü×G±MĒ’ĻB¦…ØImy·ģīĖŠōĻ$÷–¢x ņ°: ń½^ņX®¼ø›yS÷…t~ń&£kū¦øXT¶2ēµy9 ·ĶM]žž½)ƒ£·n¤’ļä³¼+3lĻs^KāEļ.6ĘΐŽrǚõ?ˆ/¤jQy³]¬óžzä¤Ņ¬žŠŖHƒ_Ę»p±Ćا)Yö<:ņÄ©8øŻ1$’„oĻ\f“#Ņm٠Ìń“],jGhā]Ąc"°u»‰ }¦Ö|ē“ŠöéNŸŁŌą©Ķļér;]*Ė%7ōō’²śLF?ÜIļ„sÓ]ĪņłqYÜ<ž£µ0ͬ[üį>†ŗ”>ŹžF¶Z»}ÅŪż!į‘Œ—ät±8£™H°iš¦¹z#`ÖMČĮ%I沓ķŒ‹DšZJÖÖ.žDó?³$žćqõémć@ˆ£¦3“M_ĻįA$xÅa]x‰&!¦°BēŃ;T#V“vĻŲOQ*}³Mkøą|Éåķ\ą‰P‹Õ$)bš½ä{ų½§R!‰2£‚Ebj^$¾7$ec×>^AÆ/±Õ¤²ƒk9.xŻ»ššßZ»–=©3ć¹'Q”kóGń3u¶³G¤Ųź"wņäƒss·vāÖ) %cPƼŹĻT–9Ędv'Ќֶ“ØobóHń.2æ5gõt„£7U£ŖŠģĘx£Ü‰øć £I‡RūQ ŚyĘ:Wwā[«i ·˜²ē'õ­Ļ x÷É@nI~„æśÕčĪ;Fž…Qœ,ķ?“;•·ø@¬Fqާ|p…*7w&¹Čü{§Ė.<ē8«ÉākøóąźLNĶģentō4 ;˜³ĒJr D›”`kļÄV°V‘P’:”ØxÖŽÜaT?Wb‰”čV7S(;@ļYŗķŗŽn,ŠŁ=MyõĻŽåįmX€:­T¼ń6¤š±Ž$…O?1ę²M'¢5tå%ļ=čŲ[@øXŪÆjŖ!-{„·‰xč==ė”šö”{tŁŗ¼HŒü¼fŗ;RŅ Ywc«g9ZŸkĢŚ±2ƒŃ\Ų³µ¹.%D' Æ.®÷ŽįsÅcŚė–Øėå\/<œ×HnįžŁ9‘˜ÆC޹*ŌIŲģ§BRßC/[·’hĖ(FĄé^yāō¾Wu6,©żåQ^¬÷1Įl ¦N9ÅUsoq°Ž’7z#ŠŒU¤g<;ų¢®|÷{!3l1H­Œm"œšKŽ[*ŚQ!ÉīwQčźĢ'D;ķŖ¾F˜°“«īA®ŚUéŚé³š„)Ź? <‹ĆŽŸķs²"ē’Mt—VQZ•†&7£œ+sS[©ȳž §Å±W|=„OklMŒÄņŁĪkj“³¹„)¹GŽ•Ž*m;T’e’gDtW4ķ#R’_ޓѯSópk±Ōõ)ķ¬poŚ?»ÅsWž'Õ¤’QbČCcv1O’M]Ä£k]–Ś\†Ų)'§B*84#%Š >G·ĻĮŖx†yĮĆøą³7ŃĒ©Ė OŗU3”ąš„ĶkE½š\Ņ‘ŗŗYl #Žj M&ā#• ČąšäļüX°Ż*‰ŽGļZŗˆļÆ@Ēņ‘sNN¤thQŠ—¼mNĘņ5-岃čj¢\E "ęŁć•ė]Ÿ-óØó@ ŒąńųTśŒ*ą¶Ü6żą…RźŅFmJ*éÜóżbÓJ¼˜ķ‚hÉėŠĖÕō²Ś-£œĆh$×k-ˆK¶‘a“$ńš[‰äßå°d p­9ßRT­wCŹ®mõG{ĆwųÅ[Ńõ5·)œĢxłŗŠō¦¼‘b(mZUĒ GĮxž ęŌwĮ„°Ü~fQXĖ 'dīo dģ£+4sšŽ§sq©<@ÄŖ8ÜĄ~”¶“yeZIä8ėƒ…­ų“ōłxmā~øa“Xzō7Œų ŒAYŗ7‰jqNȆūP±7ž\öšµŪH¬VMrųź3łV‡“{‹–Ż%¬aOMɁZšæ†üø¾÷”äĘ+SMņ¶lźrGš×<öļRŽiŁ^ĘHĖ•SZś™5Ü,mģä€ĆK oiZœ·hšnęJæāM"å‘#¶ŌĮˆR6Ę*ģ””oż}ÄūŠ<ܧ4ŽÕŽf·ŒT)ĶM©xSRM „ŗæ™ŽŹš®·Ćš$ź‹™äÜ:ł5Ö]X©ŠĢW2I"ąō5JII6I7Mµ&™ąA„ŪÜO4½Į<š]BÉ&^$<’ŻėøÖ#“¶¼Ūé.ūæå£GĶOe¤ „V™$‰sĄÖŌbļoĄā…W(Ś’‰åŚĀŽGHBØöąšÆ£Y_Ė–/"„³cč~$ŠöȬ%łć-šf‘„„Ŗ4÷ŅØ8Ē–Oō„Vœ$“F“qRf•§ÄŅ„•žFa·å8®ļJÓ<9¦ĆŻŽ‘ĄÜNMrwž)Ņtéb‰UŠäõæBYvDOL·JåäQėcu:’zkėcÜ­õ-qŗGōāÆĆ4RĘŅł‹†z×ĶZEåä·Cż)ʃ‘É ×Y£^źÄ¶ŁY¢Š Hžµ½H9GšĘ0œax¹nvśµĶ³Z2Ėfcp:¢õ¬=WÕ­/zfŸ3~üˆy­m ŚX†ŁuHd}¹;OJ¹s»Ižr1ņāˆ{Ńå›7ĶŽAÖõ¦³Ī£j$R„Ÿ— ö®{Ę:_†õåy%³k{ 81œsW¼;­N W‘R%ź_²×ś Č7\D²·R9¬`ćJZ]?¼Ž¤UhūńOšgąĻ[i“ł©ČōV=z^®iŠ@`šķ>Ē5ĶxƒEŅÆ£-ow¹ˆä+÷®S[š¤»ĄŽįŪtbk[S©ö•ĪhŹqvš•¼õ='Äiz“e­ÆÖ7^ ŠęĒR·”:)šຜē߇§ųbņCż±ā=I2cŠėü'[²&« ¬xŲOzrR„}é&¾ćd©IŽ“iś\傳fß+v7T\W=“&½ń üķm+€Ż6jŖjג°mĜsņšģ4o‡*·+5üĀ+5äö-ģ+Ҽ!w£X]Gakai乙xĮ'ó­*ĀWżēąM°“冞gš®ćT–C$7>Q9ĘOčZ_Ū–ųĶ«E$Å9®G­z<Ś=¬Śz\YŲŚģ ü Š£=‡š‘+'–ƒåeī+™FœŸ4:żę•jŌKŁĶlyæ‹u˜¦GÆPF1޹ VāķcÄw,0Gc^ń;ĀöqŹ—t  ę©hš_‡„Aݤø#é‘ųšģNšŠęw8éó¶ćÓüIżĢa†n .M>ĮÆńä·µyąa+øÕõ}K>d6q„N2Ł'ņ¬ _ām¼„ŠŽŁPž ĒĪ+Or;]ƒu%-Rmw`loo×hĘ«‘µ0M¾(‘-Öf~†S€?:Ź‹Ēņ\Ż(/=6„vz>¦³ŚĘŅą³ Ć#ņ©…h·eų—:S^ü¤— ū¬Ö©%ĮŽ5_˜Ļ55φ¼>°²“o3ć’r1T|AāI­ĮŽ•‡“§xĘA0†`…YqČ­ęŗƜf“—čKØųĀś…«Håķg Ø!ųÆ2ńĮW{āö^"·’-Ł#óÆD×µyœZHёĆ-q^#šņF2Ć-ÄD:֑I+oźŒgBœ_3“^ō-Y|=}F>tė#ĘĀÆ+ń…¼×:“¶«¦ %7$xRk©¹æÖU€kłŌgų›ŠŠƒÅ W™TĘāp2kyÅ8Ī6ō:(¶„Nwõ_äxv©ą{ØŁŚTž%=ŠĆ›Ćiģ3‚X׊šœéŅ0‚źŅ9\÷Ąā°5żWĆWET$lO;ō¬ŌšņŅķ3„ĒŗWō<ļM¶ł£6ŅJłėœVUχ¾Ōū-•će<äš+Ł€Č9ŗ; ux°7œŸZŠÕllįp ōĘqš³¦ŚĶ:€Ø"ʌōj­žĀ’N69Ūč>OńóY·K…$1ÅlėŽbŌv»—ē`ĒŸØĘ±ÄĢx'±5WRÖÄÆ†ę ©g8ę›62Ąü¾†§N[G5Vü0Œ“ZŚŠÓbĄ<šD&š y™Ü@éĶ89öÅ Eø™"ĘŒēꖮ6i¾QœžtųĢGc•ƒ­øŠFt$Ž£>”¹žĀJį±”Ēiµ 6y^½jyݤ`Ą$ē¦*”łsž†ˆ;菵„9$óMĘ$Ó£ ÜēśS¶†mĆ#½UĐӕےrzT€øł²{ūŅŗ‚ĮČõR:gf¦é¢ś8čAĘNiń¶ÜR”`8ĻJjŖ„;‰‡kī‘JäHēŠÆ±·ąA¤QJÆŹ:dQH…eA½)ĘIl7k\dVĻä†Į;Ž3PÜ£Fv°Ę+eŠ/¢ŒU[Ød“q BŽ9©O]Jå¶ĘIÉē Ē¤dtĘ:UˆāR0wdōł8ĄĘ:U=6+µČ \¾œŽO„YMäØj–¶óœ:Ó%n ‘Öš—b- čÜ­ ±–95MĄGŠqO VEÉcdzQŹ K•RzjN«r\sŒS”Œ–,ÓLnŒ“Žõn˜•J°’v³K±¬Rz‹³ ķÅ_±wQT6ßA֫Ĺ8?w«cJ–8-°]Īsč+:’²•ģĖś]Ģiv%– ®£Ž1Uµ‰m‹M;³;Hp«»”Ŗ:½ā}£jrŲäÖL¬Łc‘ó{WUn&»U Ū4Ž«œ‡ö銖V]·ĻZ#„läūš[‰la~SĒz7`TÅ>"6'ÆAO–Mėó€1RŠā¬W·wXČlxĒ„=‡õ=>”: ö§(,§åĘ(ō ­ˆŃ8ĄąT¶Š rrFE9Š$a· ŸJ÷B½Ž›NĀ‚#•J·B1Np„0$u©„"xšfć©+X·äPœ`ąń‘Mp€1Žõ=Ņ ünäUW ¾ÜœŽx«čf—r`ŁPķRŪ¶=j“g§©§čѐ<é3ņ5niśnŅź$*3óóW'e{‘7„Ž2 ierć «NĻDø•ĄŽ2™ē‘]“ j„VuēŠVŰe€“= OÖ"–¦ŃĀKsĻŪĆs…„*;ąVχ4qŪ×8擯ēA&Yжx«Ś„•¾ ³¦ģy„,\cØą„7{čZ³²Ųr*š¼¶ņn5ŸŗkPń‰#ɓ$Ž Aˆ@‹%±·¦+‰ćg-‘ÓOYXō= D!% [śÕŻ@,Œ«n#9Åy)ń•ģw„"1²jŌ¾(Õ.·‘ ¾Å?¬¹]2„BQ³jęĪ­qūéŪĒėœt®?]»‚Ćb«ćµ&·ā dµ+d9Č%«‹Ō噌…›'8Æc R§Śŗ<ŠŌ©'Ė_ŸRŚŁÜ@ōĶ"ėĄaY•‰qąJäŪÖŖģČĶz ó£– AŲģ-µ7³ā“/Ė3kĀŽ3giā·õ×ŗŠŲ%Ŗdc®Y.‡tn—5ı¾ūĻļ]ݾµµ7Š$xVį”Į9ęøØmoY÷26{ęžL‘žcĮÆ­qÖ”jΊ‰(ņ³»Šµ#$ĖęŻÉœtc]ž‹Øé­hDóĘwq’kĀ#œē >Õ£l×2¢Ŗnw®)į9žŗšn<³=/Y‡D’ķŚ;Ģ{EdŽŲX“$Iᇓ¤Ū"€ņ8{7„4&dPn‘S=®šXyĒāg4żš^į­£iv-ę|žFEnŲč›pœBՍ¦ĖcenK“gQÜÖ7Š<[s#² ž.ę…J_»WiFW“ō=&ĘŻ ƒ"@Ų“R^JJ¢°9Æ%ѵķUܤžfŪVĪŖŠØ2JŪ¾µ¼0ue/y•q1KŻ‘ŻŻź“,[X«ą÷®GYšāīåĆ…Łœ ēµMzą®-Ó{ų¬»‹ķ^ę27²)8ą`×£KkSĢ«ZSfŽ£A"DFģMC¦Ü0qŗmĶŽ@ąU;;9\fiYœŽę¶“ė;x€ĖŲĶ]J‘ER¦Ö„øä‘£_.B÷«p搟sQŪm)¶1žĄÖ¶be ČŪO^:WØäΊ%bŒo™6"īćœTļnĮra\õ…ue…¬hNQqŌńYšü€JR&Ü«üT+7¹œ¤ā“Dn”%“Hź„{ ÜÓµäLmüv®9āV;„lƒļRŚĻ _*FĢÖ„ĮHÕWV÷‘ßĒ«ł¶ĢĄ:žµ‰{x’±29a­Ü䀐²Æ¹”bynD"¢Ņ…-iµ&hļ€/dśTs“K€>˜ØŽŚß“ö­äz7J[(Ȭ}sN4ĖkȆ遌~4č I[*Ÿ6:Uķ?ū?ļ˜ƒėÅ_Õu½7N„ćšÓ›—DÉö=e”_LŅīžUŪ®Ozģ4Ż4eł€ć5ɧ¬c#t.8Ą­M#ÅėzŹ µƒÜŒ ēœ›ū'o°“nŚf­õŒ±ŠķŻß4‘ 0$õ«×m);†Ó×­\µHŁ÷0 O­uÓŪŽ9'īčµ9ū°Ņ¾ŌC‘×éUĪ]ij6ßJķD<“®!k}¾XŌWDjAt9„J¦ń8äKtŒPījUuĒɀ lOj‡#h#¶j³[ŖŽ0=+WZ=̽“¶Ø© \‡Ē¹«ɔęEÖ š#å'$t«6ž+šū"ŒĒ,N(öŖŚ Ł÷5e¹Ž0NįŸZϽÖ"‹žZØük}?PqóäÆ`ō¬ū½*īfņāwB8PC®£ń2łzjhßė”#b…ä“šĻoܶļrOĶrŗüŁņ•f™ĒcYW:ĶĮˆ¢F°ŖżŅ+9b/ŌŽ®“=&NńÜ ™ć$óVĘ­¼%¤˜©œ×Gy}4Ć,3Ž®%…żč#ĻfĻI„ķߙҨÅ+ž›sćaŖĮsžßz¬Xx²źWPŪ>†¼ŚĒĆā >]£ē9ÅnX2[01įqéĶc9EKš§Vz}ž”ØOĀ'”ŚīXÉU-沓–ēZpQäG„Zźī±r”³šŠµÕߝ×?^•å×»„MĀ|qżź“ĆžsK“Źģ;äēšĻ’źåF²O•žĆi«!`LœqĶk›ä{`÷ƽ½¾†ļl F8ÆGØj& ”a×¢TÆbćZĖSדķ^;)¼Ē‘ĘMWńOˆ“½R1ĢŹ#QŽ1Ö¼…§»biÓ&–X$hų•WކˆP¼¹–Œ™WNWGO©ÅᤛåšBĒ‘óqY·č.rCCXßfƒ‚ ąQ™+ē%p¢ŗÕ)īßąŽZ•­żå›»m !¼gŻĪI5b=)bŹ\ Ü28ę³mķķ |ŽXzWEdöņF<™qĘ9®ŠPé;}Ē,ē^3ŸŌō—µ–u ŒgŖ$Śr²\9Ę8 nkqĢ[#tČ8ŪNÓpUk%„cÆkj®1Z#*M]³$“Y„¼ĶĒšŃ‚Y@UKvPy®Š Ü©®:Ą­;]51ŒżjćmJ”¤žˆę£%L€ńœw« £Ū•A#9®¬įŽ0ßėļLŪ…Āēš^Ѧț)-QĪ.•”óL’37mÕjÓU@…#Ü­+ˆĢ˜Fm€÷a“Tīcņ²!RļœäąIræ‹qĘ·‘£bķr€†u'Æ8Ŗś•ä6HwĻ“ēy¬¹$ŌŁŠ‰ā1ŃWš–vįCNføž8®šu”tf5)·¤v"øń Ģåm¼÷`89Ąüj„÷÷Ų&IeB܁’y­Č¦µƒ(‘ü9©#’0Bc݇"›­ĢķaӅEš³žŠėU8d’D­žkSK¼½0²œ uf·mj²()†ķ“ZÖéĖ‘Ė}j$ā‘pœÆfĪBžV)™¤y1żŃĮ¬›ŁŚLGL äÉę»mFėN¶%!‘€ĻĢk(źaĪäw ”S•M TÓz3ŽšŁ£PĪ3uČɦ['Éåī=Č+æ‚]U{„t2+wLŅĘ_…įøKeóŒ ^µŠ-Õ¬1dēŽzÖEÖ§čqģµNY Č]ŖÄGµ8ŅIXnR–²6ϊ­-Ü$@±<+£ŠĘ/š[³v„jĆw§,&8癆1ņžMpŌ£*Ƒ×N­ ŹÕ#gäljz|µ‘óČ"³gŠ\o OŖ«p‚6HĆm?Ž'4Ķ:WGrĒÅkNuy}ęa:4Óµ“*ŽéÖ­!Źī#½bj:4Źc€>•ÜÜÜłI“FĄ/XšĪæ?(u šā­ād•›+źźKŻG<š%Ϙ<«IŽ3Œ Õ³Šõ0æ-“c¼ā¹kÅ÷Ā\ĀĮTtÉĶP—ĘńUŌ8Ā×=\T’ŲŚ½ķņ;Č|-vXKØKLš”±ZÖV–vœł‘*Æz¼~}k[ø‹2^Ģ9čiöV÷÷)óŽO†ä€kVKVŽˆĮ_Ż—ą}/ą]CHH×}ÅŗAÉ5×k¾ ŠßM{s}hr¼aĶ|‘i`šĶqpBō%2īkØŲ˜ä/?1ę¼śŌkNŖ’i.Ē ėį½—$ÆsÓüN›Ł°A A_ZĮ•X1ŠbOžµÄE¬]œ¼)ōō©mõFfł®Ł†}k©Ē›IīqÓ|‹Üz£¼[6‹bO£ Ō‚éį‹˜‚'Nsx‚ĘŽ%$Jš‚ćĘÖ§!`œöŠ#„Œ£v9bŖ§¦§S®P’Aی}ÜŌÆ¬[mFkxÉ#« įS]žģ†UŽ(żXu¦j\n*«?Ŋ——Åkv_Öå~Z‘LļX±,TŚĘ¤ń•Ąā­E}`Ŗ„mŠ’1ČĮŁp°Ėt֝¼±!żį ÷ęŖi%¤½H•ZOģ«£^hŅF֑tĒÜĶg^[xfć*DŒ9ūµš×p˜‚®ŅėO±hˆÉL2NEoN„H+)3Š­U>ĀAwįļM@®y\j£xGHbŽS(nžõb%eČeŻķÅ5ęĮżŪD×;«Ŗ8™„ń\åöPwŒt)ÜxŅH’vWõŖKšõƒe6ŸSČ®ŠŚ{²€™WžźÕq.g (”äqkXāä÷H©įŚŃI™vž²µµ.ź&—pMV’„}Ņbėo Ó#Šź4¹d%§‘Č®x«Ķtģ1·™Ōō«XŽčę•)EüW8v²š×qÜ[„eäGtQ<ŒyĪ1]gŁĢɾSkķósłÕ-Cj£/Ś!ć ŻÉŖ”ī“ ąµ)é:ģ-ÜŃćŌփŽX]ŹόńÉ®O^³óc ¶Üók:ĻL{wŲ~cYʛų¢õ-֌šE±Łx‚ĘŃm‹[ĒIźNkĪüE&£ĮĘŌAŌ(āŗ÷-qåFä¶:ēŒÕŪHāI3ØK×5µ>eOS ‰)óRvõ9o ›™łšfˆē<õü+o[¹Łl‰ Ź0psüėrĘ=%Ķ¼dĪXŽHö¬żj×Os…‚L)äžõTØĒšé•WēV¬ĢķÕÆ|óü'­[Ōō{ø”Žä•‘or¤:Ą€ö5ÕĆāKh`TŽ?0ć~õ·¼„v“ü Ż„ )YœŽ§^,ĮåV®:WWiq: M‡ĘzUųI`²¼p©ķ€:ÓR²”1u=00Ų”ŗwŲTéÖ¶²Mz“ŽEēC‚Ź?*ęõ»7óX£a”w­ [[·² ˆ9Ē@y5Ī]ųž6ø­2OV#§RŹĶ\•ģ泗ōĆ,R5Ė·@1Šmķ„żÜģaó³čµ|%$z“nP6Ž ^•ŁXłp7•g<“Šę§ČļȎ©©Ę×ўYy¢xŽ9ɘŻ_µli:²’Fn.HŻÉ šõ(mb•D’`ĄS¦“ŽhĀĒ*#Į5RTä’hĪ3Ækœ½¶·łęteė“Öžöŗ„K‹;©2Ź3Åo\čĢbāļÜöĶP²Óu¼vƕŒy¢P‹VVk±pÄM;¦Ń™c}ā($a,o0śWW¢ßjó*±¢`u'“ØE©@€ÄI¹ļU-u«5[€ļ&>Q\ņĀSߐ֖c9«J_Óė·7IV²2·r©ö®nėV–ŽeÓeUčIķTÓÅŚ…ÅŅČÖģØx9®×Ćś­¤š'ŪžV!€ĶT•8$œ–móE¦p^°{’gGˆ×8­_XoEŽš€?¼Ł®—ÅžšÖØ”­ęŠ)ūCĻ^|;²0 ČĒRCsYMÓnš©o&Š„¦£j”Śōlڳń¤‘‰·ö†inÆįtRĒøuƒ\EĒ€„‰›ģ×3)õ šĒæŠõ›JĒ-É Ńˆ'4骗ѦEOe}SGs³“”t]¹¬æ[źŃ§•mpÜgĆĻÆXI¹üŁ_NjŻ—Œ/„eܗ Œ•=kŗ*%¬NocNkIŲÖÓ“ NIü˘¼’¼óŌ×m¢Z=•²7ҹüQ°mĖŁ…L¾'ŌŹrĶĄ 8Ŗ½I}tį§ĢzŠ\HÖK“ĻŽé[öĶ4P(’^G÷q¾ŗ•‘%½,¬z'q]4·—1²Æ™īĄÖs‡6čÖ.J>ė5-ī£.¤‰Ž8ēš’ę¦\”Ä„g5‡a„ŚÅ?œ/]Ž3‚Ż+rÕ­K¬mx ŁŗÖ7åwL#uk;™zĢŃŲŚ—”1Ē`+ƒń4h\«£)'ūÕź¾7Ó`æšūĒjčŅ2šąōƝ¢ń­ę”±ķ³ŌćäsóbøUŗ"żV+õ‘‹uĶx}ö­zń’0=¾j§e{ØłŹÉ+3ōØUęįĖ£łpéK6—©ō|÷zÅ„Üa'VŽCü-Ņŗm"ć^ˆī„­Ā°É°x.›­ź/§¤Sy…“°É5-’ˆ5k6Iį¹–ŒķÉĪ+' É_“S¹ÖŠ|Ž3Śü_¬jėg½–QŽ)Ķpk®µ’›ŗŒ“ÓqWiń Qi<įńżóšŪŅ|i{)ł¢F8ʐŸÖŠS÷}››ƒ‹ēD{„O‰.4’.é­ĢRLČZŌ°Ńn!¹’ā“i›RL€ó 3Ē·č¾L¢ ›qČžUOVńLņŃ\4xɵ8RQVQ±„*Īžhõé øŗĢµĶ˜‰³ņ¾ ü+˜Ō<  Ÿ1,…Ó“ŻK““\kw°ŁĪā~bkU½×,§2Åw2ķłĢkŖ*®ŌŚō8'N”ź&Ÿ{§qšćHkvʕ5³°ē3f¤Ņü3¦xrĽ¼ NŹI%³\†¾(źöb8®&2‚1ó šōʖšµžĖˆÜõ݁śÖO;ØÕæžŖ”/Jw_3‡ń$ŗÖ­©“6ģYPć I·įŸ kgY[ĖŽUć- āŗō³{3-­Ä6ģrJĘ:ūf²īµ bŒ)¹Xׄwó&“³8—==ĪĖĆv^+‰[ź–Hƒ‚²5vv«{ŒŽ,s¹ä˜ĻZńXuA#€·Ed ®‹EÕu¤Dkč䌜‚^ø*SjWŠ_‘źC' ĪļĶ#ѵ««„¬š цkŒń6‘„ŽZ9±o"sómF&ŗŻ>m2ņČĒy"«²ąõēž?Ńī,õOµé·^d\ŖōčÕoHŹŽ]Ģkъ’”Õ¼ŃĶėF,žĖ{¦]HAĘš¹ÖdZ>‹pv .å‰#ŽxoTeeŽļ (^Lƒ©¦x–īłąZĄ0 *ņ­&WåIÆ+čD°ń½+?5s–Ó¼+¤Z+K+±ä3ž?*Ņ–K±iåÅaQ€Q1łšØ-uĮ“—QF޹ŲķŒUūhuK[bźé*tĘī•n¤ÖśüģeÉMŻ©[äĪ[[[  h°„zŽk•x·M¹X•^x5Üx®_tŽņd ūWtżTČ3Ęœķ­u)É«[ń9Ņużv/jšĻŲō¤xVIH#Į®z÷Å×Y/l²—ćnĪæ„z…<7ū ÷3ƒøt#zēÚAøū«‘é֔}žĻBœ§{]āķXź6åÉ­™AĮ Šńļź gu$Ry”˜żāµöžÆį»sbL œŽąf¼Oā†tÓxĀīŁƒÆV yŲķZB1œm96‰IFJPVæCĀōŪōMņ33±L)Øu ‡˜o ‡^~^+Ö"šV›-žė( 'žxę±nüu ›š{¢ąW:Ć«sE2ÄŹ2åiž{jӈD‹3#µ]šźį­Är¹)œĘ2kŃ4æ3Eæ$g§µgkž¾h‰Ö5<՝,3µŃ¼³ŹĪZT±“EHŅ `Čwä/ĢMqž#ó¾ÖJcqģWE®éھ’Ļ›yš.Aqżj”°L`S—ž5“©Nģь*s.j-/øói·fY$l|•^õ„ x0øŽ+Ö§Óī§Ż¾'ČVĮĘ=3U¤Š˜© ø°Āö®i4ß+F“!RÜŅ–§˜Y£ż§˜üĄ ō¦źe„Ć7@;W¤G¢Ź„·f'©¤Ō<#4–ūŁL9äāµn‘zń½™ä §LŹX§­0ۈ›‚ąž zcųVž2Łr°éYŗ4QĜäS”]®Šć4Փ9ķŚs,£%‡Su4 ²l#ęéZ:„Ź©Ɐf*‡Æ^•ÉĶ}ұÅk»ņļ܅‚OZ–ÓXšŃ«–;vóŌMń`a eŻLsXvr3\°q•źpq]Q”UĢiMĒrÕėŌVC€Š8Ķgk3‰c>¤ö«ŗŲe2+™ėҲ.%@ ŅOM M6GnUq¼œ «©ylłS×ø§#n$€BöØd œgS‰S+ŗ »šR°Ż“ĒS¤28¤pÉćŁ¾–"|Ų^(ĮÜ6“NFł{f›œcƒõj łøŌ'® '>”:üōH¬£“ņš«¹꤉€ Ę¢\šĄ”Ž:š“ģ eĮŠŽŻ©¤!É4řJ؁#$š&#n2j6)¾ÄŒēiĮ<~µVGąä÷„fćƒLPr=éŲ–»—,īTE“Œ7®)ń;3†<õŖhƒ·œʐ3!YņFNhQ[Ž/”§`Ē9Ī8«męĒmÓļXöm;Ž ¤Œ {֕ü®°*³ś{Ō½te]ōfmÄĄÉ·Ō–Ē̌ÆuØŻU”±*|ńCČ"]˜‘Ī+T“±3“h˜ƽ$‘Ÿ$3ĶAlŪ¾nA÷«M6cŲAĻéJö&śŠ(''”éėCŖ–sŒŅøĮ@O©«1[\K†Ž7łø¤ŻĮ»+²Ŗ ÜnM\·Rp §6™t“#ˉõsO°žą…$8Ļ TJ-NIģUnÕ䊂Y¤\€pkGS±šÕ¤V¹\VEźHA~qŒę¦Į-H^BÆø’XńLšBņ ¹ę£fÉsQ†mŸ6O©Ē¹+DjZ.cē<ņMX¶a#,G|Ö¶“įŻJm)&Xö#żÜ÷ŖWö[+Ÿ{5—[·üĆ!åųŚCuŻU§ov…9Ķ:+ 抚ó&Hä'ļ ē֟B[½™RXš Ē·„V¼`®½ræ(śV„®<Ī2¾õ~I¼ļŒö¢1ø¦ģYŒoĘŠr:SbłbIZæ„˜ĘœĄēĢ'?J¦ųVą`žNiõµŠÄŒł„³}1P9"F£¦jÅ̘Ā( ާ֩ČÄ)ūŌÕīž„Óq·iėėO*6ryŖźssš·3IČļUĢ–†ŖWCFvŽ“ļ“ļg×µM…U暎@Ī(ē»°õJĄp#łWœóNv98  >¤ Š ł眊„ī‰JĆn@¹gmĢ3‚jš˜ą‘SNw9O›É¦¤DÄ6“œÖŻģžq“ĻTŠNsžœUŪĖhķć@ rʤ㱪“²ćj’śÖNKdQ ÉźW<Ō(Į;°jōq2§,§#Žj41«nĮ,æ•Rd;avr1ÓŚ•ŌąrGniŅŖI)`Xwł}i’¼śSæbmęœ9×5fŹLFXŒ c„$› ²ķcÖ£Q“c&‹]OøéŲBä–éRŚŚPĪ\8 •mµ•5>”/ "8éŠÓWŲ®UŌmĀ”Q†%@źZ”Hm¼sĮ’ėŠe/Ģ@µ,jv8„n‚S}Ź@>œœuŖ|ū”x“ĢjńąōoZ§,`§*G@=*Õ­b]ķv"ćh#9ö©ķ—t˜O­WTbĆh?ZPNwēŲ©{§”`)ī8ĪzŌS6Ę\„ø§łŹß)É„Cv øšJżFŚh—Sm‘®× øsƒYäć+š’2¹9ł~¾µć9$śŠØ¤eĶi­ÕL#Å*Fy\¹Ī;T¹cV˜#ų‡åKbšŗ¹Ą 2'Ź‘œ{Ձ!œ±ć\EŗMĄ‘Ļ“DIéa³‚ב~Lb¬F„&ęS“qŸz-%».ŃĒ5©F°!6G98ꔤTm²2dC˜ĘHėPI]qĻZ’H„;˜ŒļsšcōNŽiØŪa-ģČ>\ūՕ™v¹Ņ«Śģ#Į=sR'„UķøŌ¶.K ˜[§aš«wØOårh”›ȕųŪOE]§ņjdXŁ~A•=żiÉ¢®üČäŒqŠÖŅlmć?u܎¹éšĶÅ®„©ĀŚ`¶gĘŌ'#Šæe§ŹÓ.ų±Žķ[ö¦8Ō`**ݼ‘±ĄląwؒÓPK½YYE“»Čj8ŃlSž™§;,kø.‡Z£&¦Ŗē+°c©8®{ö4Täö%½U 79V¢ŲāL ±{}ēNįTR ¦?»MʝōŌ-.¤WÅH’\z/Ÿ6­pŒ2ĒR+bāŅX@Å5n¤ņ¶Ē8kXTIlfįw”‘&„ŖJŸ$F8uŖÄkņĻ©ÅjÜ^Ż Ėv'§ĖžzR4šŒĮGÉ#½SŖ—¼¢+r½ŃV;Ć ß/Ķč8¦ZŲĶęĒĆćėWŅŚšŒ™0@éV-”Ŗ€[¹5£f¼ń]u"²¶ņ\•vĒ©5rUW€+€ć×5(ŻĢĒżž•wMµøvŪ³GŽcÖ³ŒuøUØę¬Ī~īÄ,į‘X†8v®ĆĀ–ķØį²EYŅō‰‹”séŠW_¤Ų…ˆ L cV¼ÉŚģTÓJȃJŒłk–ĘGzׂ7ü£u4Ök+%yU öĻJĆń‰c åŚF1øVRÄ]Ś&¾ĶŚÖ5ļ.¾Ī>vń\ž±āY1Įz®v÷Rŗ¹”žłĘ8¬k«‹±1URĄ{f„6ĆŽJĒE.©©\&āģƒā©Esz$y§„gŁŽJ®‹·Ōf¶Uę–ÅÜ֐”v‘’½āī_µŌ„†0ņ¹ädęŗ ÜĆv£t±Ēžr}+ĪÆĆJVbĒ;Uiå¾HJA!HČõÅsā}¤—-¬4(ĒŽ¬Æč{¤·ŽŅōökĖļ6F# œ×’xƒV’}MßK/ .I8÷®2āöqŗ"łć956Ÿ§ßĖ0Ż!µˆrI=k Į¹Vļ÷P‡#¶ń\Dä#ˆ”÷źõ³ÄFP;äŸ*#įÉ4N£—Ä5ŠOŽ€4Ü“¦Ģ>rO «/„‡sJŅ“‚eLł'ėY9(šĘ2µŃöP­’ĻžĀ§€ĶŻ :v5­$y<® C$?6OŅ”Ī2ї N:£sĮ^1½ÓOļ]G"ŗ™Ł¢Ż&õ3›ķlųE(Vš4ūłĪe™Š{ęõÆXĒ)ŁpŒŁžõĶ_|E¾2“vš‚8bx"‰ÖQWF“0óŸŗō=14så÷?»§ØÜŪX6 HŲdškĶ ń޽;ń'–P3QjK{Ø'›5Šóćq®(ćy„ŹātUĮ{(ߘō8ü@Š£)\żģUōÖ.¾Ī^.xćŒW—h15¢†¹‘§aŹ€xŌYjkå ŁžÓėS_Ęŗ#÷9I=“0A"‘IłĘ„KhÕø\К·s¤2ĻęG"" ©0# +Ę šNz×BŚÉ“tÕŽŒ® €‘Å9#p~Dˆ w ;Hō«6±š@ ēܚäõięy6˜p éI¤“ęčGĮĻĢGō¢¬RZN¤›±čj&Ś ŅHĻ܅5{ĆŚĶė’"xćģ[øõ¬ q|щN9fõ«×·²Ä6BØŖG8ķ\üŽQ“t7”×SsR½·†Ó÷ļóp+ŌµHn$-÷ąįYŖ;°×Rą–,{Š»c”,‘ƒ+˜€į±R½œwd^Mlfj&„+H#Ē]½«“×¼Ėx‹ĀÓɳæ9ÆO‡HŅ”ˆ£2³7;‹dÖf±§XD¬U×q‘ŠÖōėÓīc<<›VLń’źP^²,’ĘÉę·|/ćD i>nZ—ÅŚDrޱó8č)<-į7yĮĘ{b¹1xjr÷®zX\uHFŃG©ųkÅ3µ¢"BųÉĶh]ų„c9h—=9 ×?¦xtĒF‚EŚ9§Šm•[žżż«šœ!£«]ŌÖ߁³¦xĆ·ƒĖ»‚ ÄrÅG_­[“NŠī¤Ķ’DĄ®p8ÅsMį2o„cųž59š~„o6W2 ĘOÕͧŽrĶįŚ½JV~EēŃ#30ū8U<†Č›j—Uu895Īź_‰įm›äeņk’ńZźMūÅf'©ē&½ 4«Kvyõ*į’åOš=kJ¼ÓRL†ŻņädćšŌ²Õķ&ĢbćŪŠ“Ö¾mžŌŌ’„‚‘ŽMm蜯ĀÄŹĒOœéŌ¾§M9Ѳ=ÆVø—Č}¬°ćoÉź‹Ø¼;­&o0 óޱtĻGä+·V½¾µ P‘ŗ(#<Ń֒C”~ŌY™÷Š-£ł¦˜7¦x5bÓŞ ŒŖĶ:ōł† i.”€n”nĘ@W3āyŲĀī¬p™ūµ.e§.¦ŸYÆ£9]y£¦³ń•ʶg čNsšŻŅ¼cm4;LØüsƒŒžuņĻ5›¤»hāfÉ^q\ī‘ā ūk’LƜō$šāÄįŌ4QՇšŖ›{hK>—؟PkÄŅ®"e[d»l5į:Œ.UcŪ,ŖĆ“Ēzļ<5橞UWRĢ8ńW£K†žĻŌU‰īOÖv“ ų‹Nd†I.ī¬Hü+HR©oŻMIvfÆ+I8?ĄčÆīQ ēµż/\[\ŚĀ×<㠚ŠūāĘŪY¢9ł‰ā¬XüI±ņŚ9n”åʌU,T\#€Øįxt2ōū=~4e–Ü[ČAėŽŸ^õ.É-ąŻ+ĄüÄäÕÉüocu¢Ė ĒĢy4Ļķż9Ō&č7~õ.T›ŗ׎lØÕгG āˉ®å{y,Żįq€ūÆń Į¶½¹·DēqR@+é µÓ/ƒ“}Ūü;±­rŗ¦…į6™„gI.OĖŠ~µŠŖBJÜĒ:„R™ÄńØ%æžĻ(ŒDC!@ļU­n.!fØēę ė^³wm„A ł3Øę8üė€ń]öœnˆŽ4y'=iĀ1KVmT–©XŸIń-”vĀˆQ÷æÖŖx—İ\J‹Ēœ(^¤VnžlīX9„²“ŒZ—O·³Ēöye\ęˆ×ŒU¤ōōØŹnńšó›iö•ŲI`:cµzOĘ=_“ĒsŅ<ó{śWį½–wb%|yĒcœz×_“R:0QKÜ½ĢKk7R‡»×'v¬oB–Ē=ėŠ<] i6-ǘ«ĄÜŁÅq“WŚ fž“éÉŪŽh_bĒ”ŪB&G®ßJ[›uK|’åˆČĶjŪ@QAl«tĮčiė LåęĄņø›Ø¶@Õ“9¢%g|åŗT1)aœd“Ņ®kŠßj*2ēĖ‘0~µi˜Ś7*Čøc5~ ĖdHƒė֔ bŁ ‚;śŌWtm–)ļ¢4Nڕ̀7 Ä”1#’zw¦Č±¼ETŪQ0+äā®×V9q‰ qԐIˆ¶ †51`C7¬@I“ žœš—µŠę$(œ`ć>µmQC(ä*”¤ą…|l¬Ū6ž¾µ ŻX9®OrĢ\¶ģsĶC)MĆ=;SIĀųdSāĮS’rjjÉY‹™^ĆĖ+'pųØNHŪҚ™Ė˜b… [nq×Ó)±Č£9ROҚŹwu#M:Ͷłˆē„92®ŪųŹŌģĘ­ŲX‰*œR²ž9¦³*'zT~auą‘ĒOz«h+®£äȌĶ;$ĘhČf”É(ELYG}­Š[‰ŚŚMø qڦ“Ÿm©»žįO¶0dłÅ¹Ŗ„Ć cå“ĒLÓßF é\µ#Ä) 5DpĶøžzsQFĢ̹<ö«)ņČĮČ¢ĀR¹rÅ#›nöTĄĒZÆ©Cå¹%{ŲŖø(ĖómĒJŽÓ®aš%¶’%!æ8ÅK“A«Z£RAꦀz)<ÕķbŪŹ¼q’PżÓU€P˜ēxÕ§ ł›V)Ģ›Xr[5! äņ*[²¢% Fā2j¤¶ī@3œ‚ JµhıžµWåAŒOAOBČų_SCWŠ­¹oxT`KuĶ;Éq°8ČØ"ĖI“dф°²(HŻŪ=iKE ¾-Œ×†E-’IĻ>•nŲK`}iÓīp ¾xę«’Ń‚ ž“Æ}ɵ‰®ÖFµFA‘œUIC#a—a5«er‘Ś“}ÉfŖßó`ĄŽ§Ö….….å2”@ ĒjÜÖĀmRŲŠœBøźõZT±õåŽŃ2H©œŽ•Ć·5ČG‘UIźMr:“ń‰JĘŒš§ūå, ć9ƛ©TݟK‡«¾k«āPödŪŻ3–+˜“HŌ]2c•†;ę°,µKˆŹŖŹü{ń]†5Łš’–ć„b©ø.ēEćR\ÜÖņ1¦Ófˆžö&żŖD‰@(µŻĪ±źī›&™ mĻŠŃI5ce8»7s—eŚN8©ōe-t6‚@ė]†§iņ’x5׍i–öKäʅśóō¬Ŗb# :›Ē ;s½ŽģZ-°óŃ Ēz‚ŅŃT…AŸjŌńq<Žū€<Ķs7VöšHQ‹³ü"®—/ŗĪkÅŹóF¤—ÖK&Äł¾*3wmœ–zf² ·ó[ śS5 u¶\ÄqN.O©§2[£ MNÉP B{gÓć{mŪH'ūÕŹ[‰¤ĄR}{ÕŶrŹ<ÓÓ©8ŖJڶDŖk¢Ōėą‡N@#Ÿ@kkOšå”‘†0ąšć“aöcŪĻøĶoÉpf¶fu8ģŲYTŚ”ćBKš«Ō›Äv|?#G#į&¹×ŌcY2Ń¢ÆPNö„‰.Ū‰źIĶTŗ²Œ¾Uŗ ØŅ›¤ĪokÉ“jéŗķ Ly8Ąźi—ŗŖ?0Ž ļYQĄ™ąu¤e]Ų_—•t°Ü®ķо1IZÖ%»—Ķ|²Œč8ØŠĘ9 w„ŒG’[ yņ€ČJģŠK”Ąź7ŌH¤|üø=ńRīvĄ9Qģ:©%ż¼<)ĖžŽ•»įf¶–2Ub[¹č=ź›qW°BŅŅåXįŹē©=sV ¶c‘³Œv\×Glśjø©ŪÓ8­Xµ}"Ö1€žxÅ`ź>¦Ŗö²8ˆ¬oårRŁ•GLŒT’iŚŠĒ‚ėšé5_Ś$dEņńĘ1Xw^&ß!# B;×E5uvŽ[ŹöORši’ƒūē8#ŒUŪ[h!Įnluj̟S½ø›äWØ'Ņž Ļ$•Č5Ō§M# ĻFtPßÅ.U “3«Œļ\½¬*N~¦µ-UbĘў9¬§^©įź-ٹÕÄćq|cjæbP®įTśÉ·˜ŗ| aŠ|q ē‘ÖøåTé}KšĖvĆ(cŽÕ ‰øEåĮn¦”ņ¦č„µ;ģwĢĄŲ°”TmXĪ\‘–†Ż½ĶŲ¶#Œę£­!-#Œ·Z‚ĻOŗr¾cŹĄlUłķ¦ŠX°ĶKIlm*Ž*ģ‡ģöš€÷TP\̬Ę'äćTÆ.<£ƒø}*ŗ\39Ł®}UM&ÆŠ˜¹=M ©šLy’±aQ<Ūp9Ȥ„ĪĖ"EČėŠžĪĪāwĮŽN:š‹XŌŽŽčĘqµr}y5vyŻ9ĒcV"Ó 7GsVā¶™z£“b™5'Œƒcu=ĪŻŅØ<qWąšģ«“$¤ž=«JŚĖšFģVĪž³d !‡¦jÜyv"4īÆ{vZŅtkfŚEX'Ö¢¢mįwg¾iw0ōā„M½“.ź:KR¼Å^ž*ö›Ø:C°…ūŻź¶ŠäćZ„s$K żāØżźćAKq}aĮŁÆ­-/3«=I=ję™įū9YUbAīkŅę!ßq…Ējæµom‚·*8źMgVвf“nõ³:Sį‹­·ˆ1“X·śeŒ`“Ž}qŅŖ^xāŽ!īc#ŽĶfÉćėBNĢHG ĶsŅ“Ä:øW7īģ\‹ĆŃMs¼Zģė]]­µ­®˜a[T.Ė‚ÄW)£xÕę}¢£ØČŌŚjŠ][+8ŲļQ^²ØżäoO éÓqSƒń^ž#¹f“µsŅD±pņ ö®ćÄķœ_årAć5ÅkŅFīT.ÜzUĪJŹĢē…&½Öˆć“÷oǽUŗÓīe›/)XĻląš¬ŅJ'Ū(ėS­ÜŠ®”Ļrj=£[W²ŃƒLt;w`ÜęœÖ%O”ĒSéPVåN ©÷©%ŌŽHp@R­½·BśµW»H¶uĒ–ݐņōŖĻy¹R@Ø>Ń·ęlŽ:T¼BkCXaeŌč-® Cņ©ÜƵiCp˜ —®"āpąēŒÖ„wū”|ėķŽø§^Śō0MīvVź’Ƒӌ©ź0¢/÷ڬoķZ|Œ÷µØ^ĻÉ,ŲķĶsĆUæ#j™tŗ•¹UˆWČ<Š„xŲl뜸¼™!‰„µ’öę]جĮ‡Lf»éūVÆc–¦šŽF¤ķ·AķĻŅų>Īõ˜`‘ćŌóXvĆO“YnFéOb:TƒÄsgbłƒ`WlhóFó<łb\eĖMž‹yDŖ|ćæĀj„Ģņģį‚ć©f®:Ū]xņņ3Ć15źBw9‘€Ē'œVńƒŁ#–r“Öēy£ßŲĀM(r9$sĶniZŽŖp­ƒ’HąW•GqkV’V|sKöųęcäDJōÜ{ÕJéX˜¤ŽŚžĆā?h2ZmFRG'j×"5Ė#ƒķ=2+ #ąŸ”EH±mU#?ŌŃNź6øT…7.g¹ŁĮā mĄĒŌóZ6ž ¶W G×cheyö §5±¦ųrg!¾Ė,hOœQģe½ĖöŌćŠķķµk‰£ščt†‘£Œ6Fzõ®gG²–Ź‘EĄĮ,y­‹ —«!nųaYŗR²4öŌāī™oÄöp]E‰ŻZ⮼"$œ²ę%=7`Wn÷„Į‘IŅ9i†xśWUµ3‚Wsę‰ĢXųFĪ­6éO^¼VÄVpG¶"qš¹&dŒāTtę›m0$ńÉ­Ņ‚ŁÕœŽ’¹ģ(qjŁ$œńZ¶Ź\ņ”†:\’Œu(,HVĀ2õµHģD£e©‘ākgø 0\dóĘkźĀŅ­<čŖJ«U]KRkĖ¢±]:ƒŌ Ž)mtKK—/-ćzIJq{³8RkXÜhÕ“«IŹ[Fc–#­>+ŲƒŒ }ʃmå&HŌ7b³›@G˜#]ź+B7ŗgJ«Vµ"¾ń³Ļ¶;w ün'šŠŠŅśó{¢ē‘V-l¬,0YLŒ£«sD×¹\ 0ĘOc\Ņ£}$ō:©V„5¦µ6£‚ŅÖŪż%ČjØZÅž¦ŻwŒz×1uvžqß6HćÆéK¢Š GO©ėXĪ0Ž‘GJœ§¬™ÓIÆ\¼;c ‡®ą1Y×WsĖóI;Ż³Ž³$øÜĮN(¹AŻ€i_¢"qkQ÷-˜ē¹$Ó`“[–õЁ6$†qīkKMŌŚ6ZĆ ^ąd×D—G=ÓњŚ?†nX–o"23†ė]6™„éöQįs3×® UŃ®XƒI#3Ķk Ż¹Zģ§ÕŁĖZ£^źŠ­<½€`­Yӝd(“>ōōµ‹o,Ō՘-ćX0²µŠŅ¶‡$–cā˜)8E_L ŌfķŒ›Q·®*ĀŪƁūĶÄ÷§˜QP(bz=Ō(«;25yv –÷ĒZÕŠģd»!żA'µgģņ²ŪŌ9ÉžUĪx“Å·ÖJmli› 0¬kNMrÓ:čø'iõ7üqug¢\łn“2’{„y_‹®&Õ.Ö`‡ųc§šźóķZĮy_® \3². ŒŖg‚Ė+Ż–¼Ģ+PņĻ#95 ŗjØÄhžĆšŃ¶.īrNęr*;““…ówz¹?Ą;Öėk²eRmŚśy °²‰äÄ03ķž,ā’åŪĻ1,lUxČź+@G ®|ø@ū«ŌÖTśó%Ɨ1œäõ5ŒÜĘŃs•“üMåbŖå꩟3¤p°óņ}Ž1Xń BōnĢĆwQŒÖž•įŁA»,^[ŠŹ÷Ż)rn̛˄“¤¬G®ćSĆ|©  Ypk£:e²Ŗ‰…źŲĪMI,vŃĀÖb} æc}LÕtõF>™"Y™O§ųÖµ¤ü¹n„ žĖČXų·Vž!K,Ŗ£j@±÷ćµW³[ mµv'™•łł=Žy4›X¦#ßsšu“²"įQyäfœ÷¼ŸwnŃŲVŃV9ÜßB;?“n`Ļ+dēq­+hÉ?4ódzž¢Ŗ¤ņU=ķ˜młr{Óq[Ųq©6­rģc9żū 1V!!Xi橦ZZ*)3H\śUƵEł ¬ŚK`¼–’j7¶2HGbjźY#.é”HWßÖ=Ę£+©E"õjƒ<¬å–V‘ĮžńėC4»¶§I˜…”č*U†yX3bŸ-bŲ„RīōP94ēŌ.L„T˜×ž¬3Y9>x­Ķč¬ę lćŌŽ)÷vé ęI‰'ż¾µĶ]Ž]mŹ]&}›šĶVŌ&“.ŅJqUĖ&·ąśżēL·ÖĖ6fŪĒJž;¹gā8PµĻZÉ$Cę ¬ńęÆZźF4;˜ät:Ņ’hŽĒCghdĖI"'Ōu­;m­‰pßŌšćķõ)ö‘…Ļ÷ĪM5õ;• CŽ0ƒÆzjjĀę„uźu:Żģ»ČŲźq\?ˆ"¹ŗ…`2{v«ŅHøfvĻ L€ß2‘^Pžó ڊåV9j;½YKBÓŅĘąĶ<Žä¦Mv:Uķ¤ńa?/~’rwHą‰n3‘ĻĶŽ}Ŗ½“3F7G(}½4Iktõ:”98Ś{Ž/±I|¹cXŪøė\®· ßĒ ½“”Ć~X®’Čż”„w#f{ƒW¢Š.®„Ög œ p+U^īŅ0•.EĢ®‘ĄčśØÄ<ĄÉž óWoeo.[¬ōĻ<×øx+BK+ —sćęĻ<×@–š1PÆÜ;ąbŖ* ^_Ԛ•gĢ”Ńį~ŃÆ®HVv…OcÖ»[ ŚĒ“Ķ5ĆtåŽ+ŗ’ 6Żjp R¼¼d»éNšī‰©9ZŅŠĻ²ÓVB[Z¬j½ÕpM`ųĒūR) vŃHp§ęęŗC©ÜĘs¹°*#ØM+ķ8Įėņ’Z茜zŹŃў\F« yÓd8V5*ėŚœ †GĄćŠō»ż-o`Š 1Œ÷®gTŃc¶?¼dį°2՜į {Ǝ"Ŗ|¬Ā>+½ø Ś ą62MmŁŻÜŗ–!+˜u؝-cł`Eg?ÄJF“»«“Ü ēų]–Ęʧ6ń$ŗæx„ŁżĒĀ·¼>슲\Ź~nqšÅ±Š5—,NG|U¹ļ ĀGŸ—Ņŗ#Ģֈ™“•ļ©ŃÉ{#•ģZ²ļļ%³Ŗonƒ&³­ę”øŚĆŽ Ō÷šŒpÄ2¤ļI&‚2ŠŌĪ"īę\ŹUż•ā®E$·cl8ēĮ¬ł.ęæø; lVāY@,ģƒŁā³”®ĶRWLé”ԋڲ¬¤Ź{ » ¬Œƒq29ėXŚzŲZF^BęNĆ·ēZzv¬ƒ¬QõÜOZ\¾ķ¬B–·7«¢y‡dj9ē­V{y§ĖE#²ŸF¤mEfӞV%ĮĪ āøæųM&ÓļZ(¦x®z”ēĖĻŖ6¤ćĻģå+#cTMHHcŒ0#€sTĖ[O¼"ć$-mhž%Óõw˘\sׯA©ĄÓŖ­Ā8~ƒusŖńµ„£ŲŌ‹ŗ—Ż©ĶGou"nx„!znÖ^­ÆÜér”ˆ)ĒqĮ®ĖÄq]pa˜7p„s:ʗ˜ĖĶ lņ+¶:rާ$ń5!-7 xĪāāR$ł~\&¶µ/Ż“1˜¤“ĻZó-RŽ[]Ā(ŹК£a-Ź?™%Ś"ēIé\ņĀ*mÉkźv¬rœyZ³ņ=«Ā>7 :ŪL0ź;f½BŅėķz'›nYYTqÜń_/éšåœ3 r8?xqšķ4ļė©a.Ł5źģŲż{×+”.dé©©Įūeo3Ń®5É ’E•7`ą‚3År~&Ö“ū’ĖqoƒŒqÅs‹ā=Aī${åŽ#ĢI³u鹂|„’F9 Ć5źSN.ś¦yu!ŁK–F‹Ųč÷`ŌĆž*<=jƒNą V]ƌõh`‰;Ŗ+fĆĘŒĄ\Eē+å]N“ÜnīĢż„/h»|ŞɷUŚ‚0jž©džPXŻņ:1[VśŽ‰,‚Q#FXäĒŠÜ²×4Z˰ÜMgõŲķś,K]=O&»ƒZ‚ćtR7–:nRMgO¬µŃ‰ņütŪÖ½óI¶ŃÆGŚ”!²pG9­%šžŽ­¼4&L`W<ėį¦ūɉŒ9ZŠłņ/j÷ Ķf¤H½[­I/Ā˦”ŹŹ?@=+Ų|Y£«ĄRŪRXŸćšāø«Ķ?ÄŚ^é×Ti#ŒeA;}kuQņ„NĻęq„Æ4ļ–ŸĀj}y’¤ĒhĪgŠČÄ’Ąēģŗa™‹mĖĮõŠėļ Ÿg½6ņl$ąĘ9®F’Å÷r]0µµ·‰Xēz¦³•H­%ätĮTž­©.öfĢŽ1Öp²ĮqćłWQąķvVÓåŗ¹Ćœ•MsŽ»æŌŠ%ĘŁøį9­ųry4ßōY<® ō­)G®[üÉÄUtćĖł÷uƹ¼>\§“ĖgšA˜łøÉ>õJßC[iÆī÷œńƒK{«YŲĄcŠ4Ąwu®¾Y7ļhqĘi/uÜŌÖn±.qĮČĶqŽ©Ģ É“‘Ā³õķxŻ>Å)3ó`שźIęŅū°q‘Ķa‰«īŚ'U,=åĶ#¬×īŠŚ,”‹łėŠē›Q}Ł\œÕ /„Ņ…Wl ϟz_¼dü œZąUÆīõ;#hčw: µÄƒ$;ś×kįĖ ®%B„Ä}k…šJ¤Š3ø’:ōķ"éįPč‹ņÖōéó«ŲŹuy_"vGai¦jX‘Ģ‘²żć^eāŸßĶ©»|¶<1]Öć ›ɑғRžśŲ4iūŃÉm½kj 0÷\lF)9ZN„Ļ1²šÕĀŪęDņŠg–5‰ā_£FĶå³Č:€Gč^,:”ŁWŠgQžW˜]xgVøŌŠҀĒÉ®©Ó|žģ3’œÓ³”æ#>ĀÖ[sūóo&ӌm?j(2"Ŗø'T* Y¶™PŚĢAū͐rjŻÄVY³&Nw0é^s„R/kÄSq6ķ“KE·ŽK»õY1œśUŻcZҬō£nßåĄ#­yF«¬ŹÓ0ópäÜV©¬\I?äg‘Óš§*®;:šŗZF»Ŗ ¼eI\GĮKäÕ}?QrŠ[pÉēšćķiäye$7n;WGįż>9„Ey¼„ĪNzžuĖSßwg~£ NćĆž(šĒ ü³ŸĘ»]7ā”Fi?S„y柢hķ*»\¹pq’ҶšĀ×äX%R ņwsZ:ŗwG<±]Zg­č’®O–²(‘sœŗā¶›ĘšÉ)[FźzŽ+Ēģ,-YĀ,«œgł5 4ūˆąsīP7Ö°Ć·šKń9źā”µ”OSoéJ’¼·ņŁłĘ*“ž5ӒU€Ć8#9Æ ¼»tŌ€Ż&ąpUŽ+wJæˆŗķYĒsŠčų_+“¹*”=¢‚=®ZJ–Ōīzf¹ÆxŻķe›mø@OŹÄōÄjZņŪ—Œł8ĄZąµ r{™ę‚v.Q³–֜ß*÷›"(·Ģ’^‡Ŗ]xĘŚęūl»Ć‘»Ņ©KŖčrÄĘĪĮdø ÅAĒōÆ-‚UšahۘńĘMoŚ]®‘|Ÿ2lgn+‰ÕžŠg|°ōš\ĖSמßß6› ŗ’G·^C?Ÿ„hė:„”‘HŒ‘ĖĒo5ćŚ‰ēø‘Bń)9*;W¤ü=²øÕ®ÓŹ…ÉféZR®¹¹c{˜N••å²2éMæĢiģä<ļÉĮ£ieöż9 ‹R†xöņ‚Zō­o@ŃŅĒČæ6Źįpvžs\;ų>Ķ–ĪäłRr6¶ mZQµŌģüןM99ū“NŻÓæąyž©§źšn±»Nˆ‚8Ļę)÷ŗõ) Ķ™’£q#é^›¦x^Ź×QY%½øsņ—'ł×O ¹¶¾`”Ė œžĀøźN/Yٳj*PV¤ßÜy—€ōßŪ.żVńēu <żkwXń?‰-°–vĆd}£"½J]cLÓ@yä·I—€29ś×¬x“fWņ“óo× øĶEK^Xž?šG^X‰[žKī1“ė³2¾£§‘źĻń­=_Ęö––ū‡Ņ²üŖ0*M[V²×ōß(OknĮpb€9®WNš~”—é%żĢņFO sķĶmNT$æw&šč؜'jŃVīéüy5įˆpņgfĄ0kń ‡‰|A~ĀŽ³§iĘM{Vƒįļż±ZĪŌĘ##.žž•ŁŪiśO”ئ·<™1U)(+ļźGÅš¤¬|«ƒ¼HķömBõóŽŖĒå¦]ü1՝‹.µ&ҹā¾–Õ䊬gŚ·¶ŽģNļ› ~5„” *o"i ĻlV««A-Köuj¾iÉßśł(Kšß[Iäy$«ž£©Ŗ7_5Hļk‰—åĻ'8õ»’g“¾lw0¹nvŅŖ›!Ü5äR<­ó.ī‡ÓšŻÖ‹ÕEX‡B«VēgĶV ŗŽuˆŽL»”½Ņŗ+?O°°»ø''&½cZšĄŽ*Ūņ0~lŠ©»5‚<‚Ń$^Ćp<ĖāI2£*¼¼ŽM|ĪJ𐓁Ö(īī óšĆńFŠ©„Ł5¾Hå z^©āėū˜6-£ĮąW®\O.”øi®ś ?†-Õc&—3æĢå|ME„¤Jņ¬sŒŸS^kā(V+Ÿ0ØŪŽ9é^§āŁŹmŸ¼bø zW2o‡Ė’ͤ;²=)ŌŚĢQ©gm†|7µūF„h¤:g€Ez׉ō;EŃ£O,4½Km®'@–ęÓMß ”Jņn8 b­Aā-Dׯ3Ųę° „Mó4:“ö–7fbx—A·}Ł'ŃMRŃ“›{&ß$.8 k ½ń £Y|ÓԊɟZK©„ˆoR¼^¶3ޤ4‹æĢ§­ėQ”0C īq>#šK™”:pAč+·Ö4ŪA0>xBxä‘\ž­ ˆņ|¼óŒqT„¤¢Īz|ó“ö‘µ=ńˆÆlZ%mĢ1Šåo|?v²„ī=Ęp+Ńī.\w‚FMajO;IĄ›’J M«j®uĮ%¢9qįūōP0€œī^ūBłŠ›HĪźź"‹Q±…'}½sÓnĆAÖo˜/Łī~nųĒ^õ’Ūąœ“ų‘ęgC†sµQrÜM—€ šŲ4S±“Ą+×­ü ØĆøČLlGńĶlYh܄‘Ō°%NjÆ(ks)Ō_qßä|ż£|?¹ówL”ōĪEt6¾kbŹQŽ3ŠWµŻ[Å©q¹GŻ5Źźŗ¢A ·¦i¹©+°ŒW,_Žsö²~śįQ±ČĘH«Ö>Óåp¦RsĘXqN sp]b‘Gzµ}sŪb=źĒå9=ėŌ±ŁF„’Õܽ§Åe¦ĘĖ”ķ¼üźµõͱ4hHϹĶEļ&Ų¢ņOµfM<ė(Ž=Ģs€+N§.†‘ŹŅ‘±­'™ ęu±®kY·¤3Ą®‚ŚŅw ҆AéƒĶA¬ZA䰈¹lņ4FSŠ÷‹•(Nķ3™“µ“ĄZIĒR+sDŠō ¢Lń.@ĮʳФ¤pG§‚Āåc,’nĻŅ«ŚT_0t)„diź:.™-VЈĄėŠĄƒF²ó ąf“cūiGU½Arļ’'SÄUjŅV3§†‚z;’M„Ū›RB:‚02¬’ģų`FdmĒ8ꬌŻĶ(+¹²£#ā’o1bē”ę±UZZ3¤ļtĢ·‰ĶÉĀg=*å”»]‡Ņ¤‚P® ŒQŚ“m„Ä[Ō€}č…Nč9ec6óķj¤a²;ēšČŽīį_t*xŻ][Jļ»~ŅĄ|¼UYķ‘Š4ˆ·½hłÕ\Œh%AdŻ“ÉŚ9«ÖzĶõ©,‹ÕqEŪ¬yüøźj“īNē‘éXT§ Fu#±©oÆj, ļÉ­ķ?ÄWĆK!‡—»ŌuĘZī2g8Č«€3øE%†;µ”©A­ £R_mÜčc½‰‡˜%a)ėƒL¼Öo£Aäu^§=ėĘĻląåŠē‘šč#6žYB.1‘Q%YźM)NtĪ+U»“P¾c *sÉ«Zv‘–¦C)Ž9ĖtÅOÆYŲĀ_ ĒÖ©Å4ÄlÉĮĄ„¦Š%;sH³¦ā) xž;ք3Ę.Ė1Ǧkf–a‹1Čõ«Ā ž!į€Ļ&µäÓPēÓC²²Ö Ž ‹ lsƒėWŸZĒēˆŪc2yŒņ²0#å$óĶkŁĶpÖ»~ŠĮq3ÅrŌ Ætmι-cwʗāūL1L„!8RN@Æ)ÕģJźvęTF8õ9ÆIµuk`’!Ü&©kx¼ŠEP1žJé£R0\§XŹnéEŖ:įŠźy5•¢¶Ķmó€rHļ^³sįėQj—āĻq\lśÅ† ²4œ’JėUbՎGNi&WÖo7J¾Z ¤ńÅMb’2‘g$u®īÓGÓD*<ØŌØēėW Óķx@vŽ*JQ]MÕ’Õ£ÉukV1ĆnՓ"26ÕRO|׳]č°5Ąx×c㜌×;¬ųv2ņ9÷0' b®ž"›vG<©I;ž}*€¤ōéL½`ŲAēš½©éóA;!‰Ģ@åHŖSDƒTć#5³ŠÜØĪń²)H€i’?%'Φø;‡sÅW9Ę1Ļ­Zd ’ĮĶJ„Ē<žjåFOoåRdlÜdsCL½ĒŖĆžœT’ą 1õØ\-IlīéƒR[²… †+Ų{Ōµ (¾¢1d»{b£.O ‘ķL›–źyéĶ,$d®y©[{2HņśńNq„ČÜ2J†I6ü£ƒŠXݶ'$ĒtÕČł ÜūU«ß+nfR¢«tbNrK“ˆ{‚zš¦ÉM¤5гīÜNLÓƍ“Ųx £,HąŌMĮ!·/=iXiź=—'“ŌSˆ ēŚ‘ „ĪjBØ:œ–½čŲ¾ŗ22ą1ؤ üƶjŅ®@ēØd_›nj“ ib[P‹†łŌķ6r Ū4ŪhDKĻ wĶ6ET\įƒT=IK©^Mū¶“‘ėO·,€ķb1ŠŌŃ@^&v` tŖģ¤rO¦)ŽźĢ«=Ė‚w Ū‰MG=¾ŲƇ°Ŗ°ŁŻ”*p*Äž*Ó¶‚Ü‚!ĻAøu©&“ Ā€qRµ¾"óFšöõŖlxĮ$‘҆=5’T‚sėVŲøąÉŖPœKņ¶0*i¤ÉżĶ v3³l·eŁIĻ$u5$ē(Ī1Ņ«CrV3æit>Ōä•$Įb3ÜśŅ—˜Ö…•mĪ8ĘćštĮ_rÄØŖ¾~'  §G,h>āHČ#µ+v)E2Ą D™UČļŠ<£ä<Ū±“mĄķP\\+Ź”rŖ  ‡ĢUb»ŠÆ\g­$™;=5÷ÉĻ@r ©DR‘Ž˜…V^~é§ł©['bSO©ōÜ0­Ć€ø÷­‹?œ ć¹¬ķŠ[’«cœqM…ņ“å–#µxm4¬{Ś&Ėė Éęrv ź}kDŅķŃŌ,”ڹ”Õ5!Hē$µ¤j²Ćq¼“YIÉ­)ZölõÆ é””' =ZÖ¬ćEŪ9ĘMrGŠ;Lļe8ä-^±ń?Ūm\vĖW8TęŠõ_³åå‹ŌžY¢·ščü9}jŃ+ ųė\ü÷š|ćż"@£Ū֞ĒNū(6²no­9ØJ<²¹4jU§­“;‰¬”¾€„UöSTOƒ¢•Žs¦¹-6ņī ±ø@x«øŠ.iÖvw…¢!˜ń€sÅz/ˆµ¹ļÓj]$F8īk€ń”“#]«¶yÉ­0qÆĪ§7ņ<¼z\¶Šzr÷œ@śSīMĆēĄ®ŽļLMÅ8 ŖŗépģM{‘ ·‘ÅĶ­ 6NÄ Ä`VŠJQsøŸ”«VšPQ”Uė›y Čżš{*Ö[•c»&@>jĀĢĖ 3MÓ/æy ‹'Ž+zÓĆ"D ×@ūTŹ :ČJæ2Šę%»d˜„č)Āówޟ„tŅč6h5ĄcœŌ²é–6äĖ\]-.ĢķQ¦ŅŠä]§y_ņ­MLžéČwėVŒöѾccf•ž„Ę7~D+kpF ’:ꟿœę?šG#„]ŽĶ‚21čzŌŃy®@TvīÖN¬+čĢŲō˜ņ77ćW-ģ`‹*99īk@A"…2|¹õ¤i ŒQķ&÷eFœc±=¢’8=;U¤·x ŹlÖ-ĘØp†U+I˜ŒŻ\VnżY²ƒ{z6›āGĆ dś…Œ|Åqܓ\<—.Ļ’Oó Ü°R3ÓŅ—-ś—ī­§VśŚ«.¼śŌ/≣l,°1\¤³dēƒÅC3øĮīqN4"÷%Öpއq]0ŌŽŲ­=/Ę_i`žG=:ƒ\6›§C+ž`£°Vž“…¬d"ŒƒŌŽjž­¢ˆćвÖ)üŽūNÕ'™"¢ntœUĘ»” Y0ß­pšźVčI2Š“šÕ³Ę$Į# hŲ{E%dŽ™]<ĶŽTGoL­hY_Ć”6ǜg ®cOŌ­#L;sŒSooķB™Dƒ pę¦\©YFK”Ū¼ė2pÓS^imPČ(Ę2kŹļ¼Av&Ģ(ė’Õ Ęæ©MĆ1Į烚ĶĘmZ(MS[=OMŸ_>t#ŪEüCŚū^Uwwtģ˜ĢE@n®æ„œū×U*:jsT”^ņ=]O„mįņēż&źVVӅÕ)ĘGn*ä ˜Ā©'½p×Åi©éЧ$”QĻ\ųZŌ’«•ż>fā›e¢[ŪL§Ī-ķšė4”倌UIŅŻd Ł_uāøÖ13oa$ō6¼-b%U~^>÷BE[ń-Źéź°ÄŹĻüY«0Åo‹ä}*]sOµæ„¼ŽR^Ē”Ø†2žéUpܶ“Ōį®uBģĘGēŠV}õڱ[©źi?g›ä”’Ż3YŲNYA;WÖ©F­®Łp 4ū Ģ[zåŗcÖØO{¹ĀOQZŲĘŽÄž5Ó¬¾f”zWNٲŖJ’Ö%(ī²Ē,Ņ2‹“ÜWK¢ŁčšGŗ@ŲĘ2õugŃ˜";žōå³`źÓJŠ‹¹ČŪ‡#ęVV=ŖI"vž5ßéwZå‹v;Óõż*łb…ó׳'£LW*·)ęÉbĪ’.ņ}ŖŌdĮŚGŌWGwŖ[’<‹#¶”[ū—lEbƎõ¼(ō#ėS¶ŗ,ōŁŹ|Ł·­ü=,±(*NGZŲšüšŒ„q§1OSŅ·$ø¼ˆsoåćŽ+¢’8±‰µ«9<3·‘@dśV®‘§ŚŲĻž¤¶{Ś“ʧ2¾^Ų“ļS®±ˆ‡śbŗģš²8}¼“w¹—¬i¶ś”Č<¹ˆĪvZbx~(_Ķ€öÖŧˆŲzµ+ė—“•UŪīų”I§k‘(ĘŽęŸyĻŽčĖ2 –ŒHīEfĖį[»†*ŖŃLWj—wó®:g#­lčf).̹ ²œÖžŪ–:˜Ć›÷YęÖ¾»ąUAīNkŖŠ¼¢Ų<÷˜Åz\O¢Ćło®hmSCņˆŽSČĄō®:Ųų.ŸŁ <ÆkÜą%š¶‘ ä–\w/Wmtm*%Äq§Éć{ÄrYø~GA\f½}wkėU Ć 5ŃFŗšŃźqԃŽ“Léu "“B°ŽAąŅ«Gw©Ź› "2{šįmüCؙ¶Ė,Żp+¬ŠöUY[‘NuTŸ,–„ū'Ģž†Ę“,ŗŌD9烷5‹{a=µĄß<§üŁ®¦5ģKŲė֍VÉal£PXuaĶ”}×`•4Õć&s-ģ1©3>Hģj[Oµ“yiQܚšm÷Ļ/4ē=6śSÖ·]Æ»¶s“]TZ¶Ē#©'¢l’Ż$l~łøoh֮ΌīĢqė\6±©]DČ!B ½Žµw@×[ĢPC»/¦qS^|±÷Q¶JR÷ŸŽ{n‘Śu ­r6µŅnīŗćõ­Vóķ<¹7"°Å6óGÓīs#JŹŲėŗ¼ŖX‰Bw“±čc0Q«Ö©q©é6Ū’ŠƒŽkšŌ#ø‚}±ć`źkÓÆ“ˆŃŠĮrU@ēkXŃąX€všMÜõÅzńÄF¢³g•gOT™ÅEØĄŽIń܃œVփqm-Ā'ŒŽ•Zmqµsœē'š’ŽĄĘv¦WæĶRŒÕłŪN½9ŁÉ6ņć“ÄHŠŽ s^o©ÜN[iy޵éÖÖ pø–BAĶU¾šœ9%€ĶmI7MœrITrŽĒ™“Š,s’NsŌ՘nHc±¶ŽÕÜĖą3*e_ŠžĘ³ŸĄ·jģs!öZĖ©¬qPFsńOĘG?Zž HlīŻ·µj’Ā«†8Xā„‹ĮZƶH׆­a$· c`֏š3MŠ? ¤óĻz–Łę 9=1[–¾ šŽ?2źu,@:­XƒOŗ‡?dXb\ćĪ®4m¢9V!7Ģīhxrķķ’~Ų8Ī ­ū£hĆPzWqiuføŌ‚}rMjhSF±ķŠF—oń7­i -:‘›Üģ¢ ·ņŌż‹ƒóķõę°¤ŌcP§ē?•gŻOy9;2;}źŽśŹ÷µĪ±eŠĀøfŽ9Ŗ:–ØŠ£>ō\u-ō¬i--L—3Olõ¬kķQ®f1Go‘źÕöW’õ“§yŖĻ}rŹb…IŻ÷¾”Ōž&ÄpŖ1'e]i¬ĄI$ģƒŚ­É„Ó v—e¼R*ūg&¹&Ū÷‘¼RjĢč#±· ­#G»¾ćRßÜč0&ןĶqü*Ü §ye¶eg\“XS®œ®ŲqßšŒķĢŁ<ń•įk’kz’8śł}ŗW3sos%Ńc3»¹ļZwRĘ#‰—qĄ5”¤C(U‘ ,sQ)7īÜŚŒ_:Võ(iś!’ ÓÜČŪ[:mŽ—l”FõcбÅ[G9ÉØŗ±ky1sĒjˆĘ+Bęå-[ŠæiwB–č}©’] '͟ėҳ—Bb˜[ē „)«£YGž¾iAŌīķ[-7± Śå™µ+DČßø28ØdŌ­KŠÄ‘łR›M!U‘XśœŌš>!µmžNĄ%'Rź×ŃXÆź+g9SčÕ(¹f'ˊFČąŠÓ²kl…M8)ß„\’T+³fL(Ą©Œµvōf5Øøc†’8:śÖ…ˆH½d= #­.Ų#‚O©ę›3HĄP8«‰ ZšiuØŪ<ķToµ ü»Ī:į=j‘[ōžńØŁ‘nćó¢Ā“ÖåČo2ē†W©©nZ&ĒĢ»œõ5Ÿ,¾` “©cĮš‹c+$¬Üš¹4žcŒ¬¹Z.298*·ń7zµöƳÓäŠ 4Ģ>ö3P,n!S3y\q“R ¶QŸ1¤lvĶ)ŽJĢØ]­ ū_ķY‹¼ žIг¬ĢyfϽZūM° ł¬ū£„=nA'jšhM>„É»YŪZ8Ä®ŲiŲĮp8T ¤¬ū[쐖K€sY7zżäń?”˜$ķį°)9JÄAw:¦±˜Ļ4|rFą8ŖR]ivÄ«A+žŸ+g&øYgŌnn¶Æ˜¬VĪMiXi—ÆśD¾W~s“Y¹I«ÅEY¶nIÆŁ@ÄGhŖ§©‘¹üŖ­×‰!••- 9#0* ÓmcmŅ”÷-Un 1ŹLĄ^Õté7­É”ąŸ*F—öŅsöx÷cļjž£«ÜyL¦ąÜ-fß“’§3KƒžÕIckP,-Ļ?JׯźC‹źČļn/Ų“s’;cҦš„:®”v‰Iós]?…t)®dFņÄpõ$ōÆBŃtėm1wDöE%%hšF²‹÷¶į A =ū¼³į< ź«{ #U<Ö<÷D€e•¹f_ź†ˆ·¦xĶoVI$qŌnM»éŲŁ½¾¹YłČ>•Uå–YW|’(ĘE`Ė©Ž4™R<śŠ×“µ,ė9 ļ&0?½Qy·ø½ĒšSßM$…VUEŖ×Ė ĀaɐÆńz×+öéwlI€q€MOa%äņ”ņä :’¤ ÖĶ!' ž¦¾Ū[XĒīĮ-źję'Ś=•œŃŪĮ{Ė”ˆ@-Ķ6/i° @€3ž™¤Ś¶š²’OŠźķtøGR}MżeD²Ęƒ¶N pzĻ‹ī3²yHW­rZžµ~÷¾ęF8œÖŃö¼¶3J›w‘ėæa°Ų%Ņ)=NžiŠŚi¤2ī2պ׆Ķ>¬óHT.qš”>”Ø$lZYØäÖ³jƓ5‚ĆĖK³čOģżĖ9ć-ŌŻj-B=2’u4`㟚¾w‡YՃ­)üŖż¬ŗåÕĄ ē6yĒ#³sŖ“°ż&õ‘ź÷ok-Ņ cĒ ֟< J¢ä v®sĄzFØd3ŖžūtŚĘ„e„Ļm žéøĄRUģŃ¢­£:=4G ’Å>ŌM¼ö®/Z›AT°ŽÄ÷n+pŁ]jvBęO5†W ć}Q®±H®§ļ3`WV^-ӑĶZPU©M‹™tĒM±Hp9Éę’ŃōõøŽF»*Ünā¼wT›Tµ‰„NĮ@*9äż+š›Y½ĮF‘ÕĻĖ’kĻØę®ZœiŪܹö6‹ÆiŃič āøéóÕmkQÓ&1^¢±ę¾SŠ5k†EY®Nܚ¹©]ܘƒZÜ9ĻÜy®ZqŸ3ågMYQi*—¹ģ^4Ӿ܌`ÕaĪӀf¼÷TšŽ“Ž+”*†ė\5ĪÆ©[YęP1ąż*ę—ćKøg —žę»Y5j±Ląž1•čԁ§.›ŖŲŹx&EX•ؾ$½ŽŻm`C ĪX֟‡¼cöÓN<Ńߌó]ž›¤Žéßh»ˆGÜvꮕ:3wåi‘]ā#zIƹžT÷×מSŲ“SŚ.fS#4„ Ķw‡Ć¶’łbĒ®āŲȵMAū<īĘ<×dį-_ąrŖ³Ŗ“āe@Dp«y~QĒ~•—©Jė*ąŽ£·5{ˆ®„ł3^+V(ŲĮL÷«ŗåю›Ÿ5ä‹eĂE^ŖĄ†©o„@ĄÄņ¦8«z\z{`°žG=+z×J³dŻ,Ćač_ι£§{2«S±CĀW£Ķ˜YÉAĒĶ×ė[:¾±«Ūn~ŃõÜ ąU6{KY¼»ltė]vœÖž‹%¼„źu®|C£®®Žšu«ø¾GŖčĪ2bkėVņļT0=ąŌ6~*kYÅ­äžjŽ3žŽ•ÄüQ³»Óõ{%‘HmĒÅq“źÉ$aÆex§ŒśŌԔʶ÷z4NźūŠß¬Yļ:¾‘įrŲMŚ]ć$°ćō®rćĀmŹ1Ł-ŗœīćšó’ųšŁeEiO”Ž'šź_Y[ ‚Īų(=š¢ž.IņŌ’iw’2«ąŅ֔Zü¾ćv}N=*6ŠŻUB  åõo\`xĻjĶńTzŒ±2ŒĆØ<×"ŗmĆ>ŁÅĮĮśf»ż¬\SĮ֓ћ:öÆ4­¼Čwēå31-¹›=y«śÄk‹ "lŠV=œ±Ļ9„Cm­JTӖˆĄń¤wQ@e ąuĘ+µye—;ˆną×„ųšBs›ŽW®0k•—Lwœ4"žĆ­9Ó¼5ÜTėøĖMQ˜0 ’=jŲ».Ą¶Ń'NO=+nĒKX”Ɋ@ē»)ęŗĻų.J÷ĻžKČ*&øÕ·Gs­ /yÜŠųGc,öq¶ĀU¹'°ÆO‡Au¶ł›ƒłÕ ›ĖOXĒo >XQĘEeĻp囚ī§j1ŌāœUUxt:}5*ķv£o8ZܵæµÓ榛%P½Iž•ē=ŌҳØ<`w«z}¬² qĒz©;®fˆŒM&u:Ļ‹­Œ[#ĖpĶy犼eqH§b§R+¢ŗŃ|Ū&p@`0µä^?Ńu7™m•]šÅ»OŁNP|ŗ’„B?³ō"Õ|ow++$Ņ?=Ļjæ”]^ź ee’2=MRŠü‹°Ķ¼»s“ҽ'ĀVV:>–Č yøįI®% ¦¤Ī©ÖŠ…‘Ąx‡Ā›Üņßę¹xōhĆžņb™8äEz‰üAē^¬QŪ¼j¤‚ēXŅĖqx±Į8RGŒõ­źN“‘(Ķ>xĖńŠ«e§X`B†Y„bGŹ1Ͻ?VŠ/"BaFNģt«Ö6w–’hRĪČyĄęŗ 6āŅņÅDäłēŸØ¬%5Æ }ŒäÆŻžx¶:‡‘¹&I«V›¬=Ņłfaޤ1ÅvWŚ\ØŹ(ĒŖQRéQj†&Š0ČĮČÅ)QOT“6£ńkęYŠģ&WC$ĪppA®ŸMŌc°“ÉņcēšĄÓ4ūŲ£×q‡n ±¬’Z] 6FY¢•ŲqŠWD#^Dg)»óIž¾;›CŌē ot\nÉ;† ­JmŠ,I< 䃟|מxOĆ qtpćĢČ# €k«Ō“­B –$jŒ€­Ö²nS•¤Ó° ”ŚWūźW–ņ²ˆÄåĘ0„? 󛔚kĆ+[¼^Äs^­įĻ j蓮śÉį»łfŸ&—ÆEp°’d£‘ÕŁGOÆ„ZŒä®×Ü’B$ć£Ģ¾ļŌē|”ÜÜŪ}¢41Č~ė8ĒZÜ> æšįZęā0õŻĻį]¦‹¤ŻEh“_]Aj?¹ż+”Ņ®ōďŹXšy“ĢOņ§E-Qu%?³/ņ9/ |?‰dIęIŽpEw¾"Ō¢šŽ‚±ŁĒåŹ•„ ŪźW 2+ŚF†ŃųzÖÖ”įż%avéu9łŽ@¢Tżƒ©)­īxĪ­ā+į34ģ®Üģ'„^ń^‹ā]*ÜOj_ÉAČĮĶz ģf1Y,”–>nb ąü}šßĶøótŪckß÷cŌ< _»NM>Ķ]<ĒķĪ=Ü_čxžÆ7‰WRÄ­$įŽ.NEzƒtk½Kò9i#,”X¹čHķYZ¦£¢Ż¦‚wåo59#ė[ž½æ’-–ń½ŗg$±Ęk į%NWp³7£‰…Xø9]wź`Żų"÷I”ŽEØĶ6$Ę>¾ÕŲųK]Ó`š??l­`—brk¦µI¤‚8nZ)#œm~y„“įŽƒvĘdønģ²špQ©®ŠFSœāõ¼¢ŗ\Ķń?­#ˆ­„Š  8ēzæ‹nļžD¶žR¬Ųą×£ź? t[}ŅĘ^dŸŽ‘ĶQƒĆśFAMāAœī œ×T(7 d™Œ±Ætšü;Ņ“{Yæ)f]ßÄŁé^į eÅęźS¬ÓwŌ7:ķŻ¼ķo¦iÆž€”ükĪŪÅŚž«ŗā5·µcĪXäÕ*Iiž†N«“¼ēeŪsŅl¦Ņa€žłŠē¼Oo„ŻĘŽUģqŹ’0Ćć‹©č2–“ˇ%ĶGŖ[Śéš*¢«ÉŒ’¾µ\³M6Āa(]'uÕ:މ¬Eŗ[m@Oƒ®róæßųŠŒRĒs ņæwš•ōš†efT­\‹üOzeēkF9⦓a%g»AŅe£ŸŽ3þ)Ō,ĄWĻĮ8®ÆNńgĖK.́9ükŽš×‰!i¼¹-ąQБɮ­µ;ź-l˜ĢƖĄÅrӍ8Ė–-¦uĶTjņŠeėļŻÉņŚi)垌c5VkŻZ{o6K"?īŒÕ[ū?Ü.č38Ź€1Tķ¬ŽõŌĻ®XhŻQY‡ĖøåJ1w÷‘Œ«B–›_q䚯‡ļbÜĀ“:ō< ē.m58„ęŁŲØĮjõcX‡S¹bV“8 t¬kōh®ŲĻ#`ā¶żÜ•’"*“^­#ĢE–”5Ą>\‹č}+[Lҧo™Ćē‚˜ź*ę½y¬Į$‘Cg¼“é“Xl¾ šQ,‰äń€3€kžpIŻDéMIZr4¼C£éÅݜr«Y±Ļ¦ACöo1”c-Š–źĻ]š%Š( ĢĆę8ĶXѼ'¬Ü7ļ¢1c$sŠRUZ²Vj[6‰|;=¹Ōe¬qFNHĒZģļU¼”$Qyhßu‡B(Ņ<,T-w[¶dēķgźEu*ł„†9>•™}?Hė×=jܖ·å”ēŽ:ÕY“ū†”!I8ę£ž[#¢ *ȂݕŚ@Ļu6y|É6©lē<ō«–śŠ™„§Ø5-֑.UW+–'„f歘„RĘxŠQ–`ß7F­–C½Čžµæ ų_Q»wÅŌ+^8?­Wń…5ƒk”+ Ą\ŖKI/¼š˜ˆ«'øĢ–e21l€x)·¦ÅÉSßŅ«¤2“Ļc֝,3Ä»Š0@2 ā²å—Chʟ(³Ś®Ķ­ņ’>õV–ÜĘĮ[‘ėK„Œ“¤gž3šš9×͇~x$ö”)-Āééq¶p&Ŗēµh*Į 󜎤U+‚”ˆSŠŠR]rÆĻLf³—ģ–ę¬7P£…l*ć­j,ÖmaµZ6üē>•ʰvo›•^)š;£dćÓҰq—s¢/K¤n¦…5ģ¦Hq±†ź]2ČŚß ycO›ŽkCĆ"6¶ĻF cØÖе5ŃxŌ©=Jµ&ōå2”•𱔬閻Õш öķ\αs,£głGzT–śŒģā0Ć®EUÖmäøø,9ėčkdå/vF*јw<— ±¾FĻzÖÓ¤Ų¬™Ü@ČśU9ķ$ˆå—jƒĘ:>3ŸZ©Dč²z&tP\§”›śÕŲnA†Ś Ļć\Üū°A½Yį@%€S޹䵣noĖ s°Ž3ÉļYķ“BbŃIµXg;©¦`W%±Š‚GFÉŻzŌÅņģkR҆ڔāžXżKsšÓÓīƔŽŪpyÅfĖĒnØ£![©$ō­%i#riXķlŠJ «.īs“Z]¼2]$s(e<šā,.Ś8Ļzč,o£ic=#‘ҹ%µ¹½ć%tuZ·…,ÆcĢj cq85óæÅ+4Óü[ukł#F |Ž•bA–ł€ü)£žµčģs=V„MŽ[pątj†u ŽF9«7y#!ŗ•UK‚3œzšÕJś†‰Xn ØozHœķĒ4® 7SĻÆī Ę0Ō^ū #=qސpŁéǁœ;T¬…U{ńR \‚UąqŚž•nż©Ø A„•œĒĒ}é§Š‹ŪA]”JćĒ©ļVkØ*Ķžćö?Jd§2ŒćšSø)p޵ E¹ŻéŠ–‡ÓAļąōö #< gŅ¢³·$‘ĻFrr;gŽ•»hX)óÜŌiƒ7SZ“Ė`¼ÄÓ 0pœ­4õ)“«ą|­Ępq×4dżyīyØŠē>Õię›r3Ó‰%m­Šd¤<Ś}j'W1'ē֜åGŹIĒcQ³Ó'µBŠMź€ĘvG&«ļd|ä†#”©–gŒ¤Ž3Q¾JŽrżĶiÆPwŁYݐ¦N:Ō/čFqK†_āĻ„ 9±ļM±\Œ!+ĆJl­ƒß=źlģozŠļs°ąķTµÜRvÕ³Ī1ÅK Č÷Ē8ØŁ|g §!ėI®„&Z-ŒsŚ’RÅH9ÕrOxśÓĖ6šIéF…“D•r S•8ļRE#r;Qp¤mR­7ܞ¶,$»"²ŽsŽ£ićņ5$æź*-£Ö„Hg×馁‚ćonk_O·“…š8ę¹YĪ Ćęv5pŻ8"Iļ^ ęj×=ųņ®§[ØŻXĆöŠu¬K½FČ0ĀVwŲd';ÉĻbjx,8Ė0ǵ\`ŅՑ'š“üŽ!T÷© æ#ŚøQŚ¢ŠŚ0Ü9Ēņ«Y†čą}j¹"ɍV¶+Üjīē#©4±ź÷q«)\U—³Œ˜ŸĀ£6p‘øjÕ*fRÄŌoAF»|Ŗ_=hž¢$įĖ HģӃµ‡Ņ„·· xP4ż5²%Ö­mĒ&»©gŚ„PŌ$bKȦ­ŁĄø(÷5~ŽŌĄf¶§Ń*ҵ¤Ū(Est:»Ž™­8Ü2ÆeĒRjŻž™  }ƒ-SL%Į!@ąUŚś\pv݁m¶ŹKšŚ’„6*aF;× i®Gbą©-zŸZńµĢö¾DÄŚJõ® Ŗ² væa*w¾„Æ$6S6ąJēõ qńåZ»Ø?Śͻ™Æ“ņn8ä“I ŪF”AŠģäv“9¶“[ ÕŹ±v‘‹Üö„žīYø>gõ,QÄŲ$TåW…éPŌV¶55­} 1™ĖįÜńŸZµNHó¹ćŚ„IiÓjʆŸk½H”Œ·\•”źŁjtҧĪŌc»8p¼C[~ŃnÆęU†&ć'ҽĮžŃć'Ō2TõGāgŒ4­"٬4 }’”É·śńŖfN¤½ž6’ÕxįŅ–!üŒŻS@Óō?}ÕĄ3ū„×)}®DŠc¶E@2 rھ«w}9{‰ävnNMQF äuķé]”Q/ß;³–RMū›wŗ„Ķ&ļ2F'¦[ŠĪøžįųgØK».BŸĆ֜RF^Źq޶mŲ„¢¶Ģe9Ļ’ZĢSK$!G/Ÿ„2ŽŻJ’ģyč)\§7m‚}2;Óäsµr>•fĀ 1”5© øPYņG„iį;XŎŽč®wķģj!ĄnXżzfŗ-£ož•ĖVLłĻSŅŗŠVhćnoDc[ˆ×$šI^ķņGēŠŻ†Kąóų՘ģџ(nŸJµŹĢŌgŌę7G8i8Ē9ėRA Ÿ¼Į»×^ŗs„źS$±U82FI÷Ŗ½7”j鯶sĖĮ’–ĻƒžÕJœ Źž˜É­I-Ö6ĘóV"±gˆ\c֒å[ ŌmjĢČÓ1œZµ 8Ą>õlYL¼jŻ„Œ§8r1C”R»dŽE8”Āä®=ĻnŁTGœ(øĻ”€‰X°š ZB~_oZĮ×Oa8>„A8Ļv8¤³“lČĖ(üŖĄ¹IAŖ…ĻZš<…j%[KSƵŖā¶3(`üOēŪ[>BČ qķQŖČN|Ķ£ŌMW»“i~o9†+žU•­s±a›ÜŃKÅ`zž{Š.›#ØęØC {ąG­W‘ˆŲĒa\r©9h™čR§F-\č­Æcžž01šŠ±½B’{Œu®>5.rœńK}-ĀøņxP;u®G…“{ÓÅQвG”Aq&7œŌB0ūœqĘ}+†Ó礪ƒ4łÖ½¾®%“ø¾3Sõg Ń)FŖ¼ÖZ_I*±Ā£›PŌ\ćĶUұ”»”@v‘ƒ×4ˆĢķ’ēŪS„-²&pÖķšŅy’`Ģū‰äJĀŪo$qTY“ēŅ™“ŽŲł•U§5±‹§¹”ŗÜ’J`’=ß*€®EÓl#š›.!#CÜ·5¬g7¹…HÓ[1—1Ēpó…^˜SȵA·ž„š„#C’—ŠqH«nżI8āŗc¶§73¾—$µ6‰ĆqĄ«(aaņD¦Ś‚ÜETć©©~Ö«€Ø÷­KRŖIĖCJŲØékž„dā“ģļ$Œå£·O@¹»‹ęn*łĒÖ|ŗ”L6·˜ĢƎxĶi¬r8É?éŻĪ¼aŒāķctsY3ų£0Uøœ¶Oø»«©vķ²śŌ1yŅæĢĘ0Ü9¦Øõ"SMYe޾ć8XāĻ©ŻĶbßkW øY‘I9R£Žm™™ĆqėQ¼Ö¢FX파:§¬i6“1•HģĆØjsü‘4™#’K“R†i§+Ūņ~“Čnž4Éņć\v85›Ŗ[«ķ–n¼sMĒN[ ­lĶ›k©•ņóK#z“]—ā³…0Éä“^lś—šĒheŒwsZ:=äFhĆ£ąw=ė’“$žc¾E„Ńķ×VśP7ķÆBŅō½2ņÜ‘cī+Ģ| 划EP×”Cr‰l»O>޵„0µ9®īiR­7ńDµ­ųsM×ĖøĘG5ĶĖįˆ Ä›µ!Ž@¬ŻÜĖquĶėŠB²+nĄ»iQ”Uę’Ģ©8OįM²š…‰ ®ĄAĪMk_XŪiöaDŠ–źē5ŸC¦ŪĪZCĄQĻ5ęž"×5=JįŹ»E”<Ō{Y9w…;(¦zŒo ³ó¤J;’« -”(J\* ĪkÉ »X2»‘•ė“MŅīķŚįWķ, šs­Yī¬Ž•…¦•¢īū£ŠęÕ-‘Ż‹łŒy=j„ŗż¾ć²ŁŻ‡r*MHI¬HŸ 9&ø_\ŽÅ©=½£ģU<’3šŅeSDīrT¤ć5Ž–ūXó>ż¢B£ųœŠ®ŗö™ßīäb¹›m*öūk¹|u šÕ³š„š&eiŒžiĘsµ®9S£zKRŠńtiŽ ‚㹫Ö+Š8Ą{°Łć9ÅdOįŪs!#Æ­A’ÜA†ŌaŽę²śæ3ÖF±Ę¤¬¢Ń×Zk÷ ¹$¤ę„“U¶?+H\Ž˜=k—‡JH‘„i.6õÅZ°“‚C»&1Éęŗ šVg4ź)›ŠĄ·Gz Žõ§„XBHĪzu®b×TŠŻŹ…sZ6~!E,Rėė]JM#-t:Čm-bˆåI c9ŖOh%Ś7įzjµ®Ŗ× åŖ2g’Ę–;u,ä·-JŽģŖ¶Š±.±RĄ-P¼ń-¼m¶5Üķč*i4X¦Œ1faŽō‡CHŠ2"Ł&µK[#•ŌvjH„„q4…‹ķž+EuHāEÜĖ’? śĆ1Ū(ŒŸ—½Nžf„l˜{“Ķ^©ūĀRIhGyŖ[Hūd™WĀj„ģńÉȦĒE=EVŌ<+8”$rby-ė[^šÆŁb<»äĪxŒ^jÄīŻKÜ,y½¢¶ćåeC p@>ōÜN’ Š:TŠßXĄCĖ(?SÖ£ø×ķ Ÿ&ĮĻ=k5Q7dS§$‰]¤r¦NƐ“K5¢nÜK18ā’=HĪvÅsīā«ź÷ŪÄģqī<äÖŠ¼“HĀpqÖV,Ćq åZq×Ŗ×óNŪTZ¾ĒĖT ¾¼ņ ¢Ü(=qY·^%ć#ŒTūÉģjéBIj‘²l/`DR:½eź–“C7ļ.zŖ8¬OÄwҰ‹,3œńYms$€ O±š^ÕŪX”č%“īwN¢–PlX—ĢĪKI5„ā‡Ÿä‘Įc’k‡/~AņĎY±×¶4 T¹t<óŪ9ÅG$žŹß1ĶĘŽó/É}5ĘL²ˆĄėĻõ¢«c,XĖ/n+nĖĮÄ&ł„¹ēv«ś„o±­ŽFö÷­£NI{hæ‡C“}Fi§"Y·qžÕŌxoLĮŽ{¹B÷ ŪOÓlbżąŠFĻ4æŚ– Kh¼ĘĘ2G5Ń i«±J»ƒ“QÓŁėC`°ŚDWhūƳ5=Nöo›~1ĒĢjŗĢĄü¶’*zTģuv‘Ē™ˆ“ĘīMt)S‚Ų㔪Uw‰·ØźjrĒhõØĮwqwzgeeZ“ąq=ø.Į€5b ­aOŻĀ.{Ž”„É+8”¤ļgŠž"V×ĢxžÕ^ŽKpłŠf•ĻNiššME—ŹtQŠ4o]Y<ćõ$ƒŅ…e&Z”¹¹¦=ā¾?9»H¢'¦y«K)l\y’7SŠ/­tÕqŻL\õ *µćZĆnŃY,ÓæØĶbÕŚī\’œ[C!»h®6üĪO8õ©/g–įr‹ß Tm ómY9$Všé†dżįub8Å[RŁ”$­kܗJ¼ÓģŌ™9*yźk3Ğ1•˜AgnńĒŻŗQu¢\¹XœŽµ™p‡ĢŲš#Ōb“„Õ³(UO݊÷"y<É]ŽB22MYŽL !Kzķ­ipLrźY`¼õ®ĆGšż»&6ˆ±ĪJÄF=NŽIĖtyҼ“3 ņü§L½oõp‘øŒ^„qg„YDŹ®y&£±žŁÜćk/cIā[ܟbå¤O=M'QÜ<Ł!Ü/„HtyęHŻpk°Õ-`šėĢivGß-Hś×‡ōÄ•‘—®EOæŗa-V„ųm‚¶ä ĪεŅAoielXŪ”Ś0\ągņ®WRųå±a!ŒqzÖDž9–į°²+wĄĒ4r=Łj—6¶LæÆų™m/ȶ·øor½~•†ŚÖ”u~²ŪX ·ń:t5-޾΁Ż$’tVeöøź )ēœZ<4eļ;܅RQ÷l™ßxkRÕ ]ܝŻ#b®j~$Ņ™$°¾ß…y$ŽMy®“®“r)fĪ9Ķ\×āÓµČÖC;AsŚ@kJ1vNŽgD„§3‡2ķ×ärŸ#’ŚvšÉüėyOcҼæS“¬X0~+Ž“}+ȶņf¾“øƒ¹cóToį? Ü]³Ż]£glqž?ZÅ9GåmN^iĮ§ øłīßp»LlĶOZ½„_ݬ¹•\*ōĄ?{ƒxsĄ”¼„šx±ĆAż*{_ ųX>č.¼åQŒ)R¢“rüĶÕjÉs864°xļ¬ŌI`}Ŗž”¢Å#HĢ?wh5źw:tPdiŅ[ĽˀMe]Yj­Ÿ*ņŠzšŽQ”®ŽH·ĢęćaŸ|1kdĀėUø>x\ō•źś Ņ®4ҐŻ,g.Z¼æCŃ50ī÷wSżž’eųµÆ,؈¦;qŌŃN2ZŅhŅ­XTJ5>ōnų·Ć—,”epFCXZF“5ŗ‘pNģvŖ~ń~¦5O²LĘ27zה躕”ķ›»’ĒJO’“-ę5—:iJNož§®M¬jLĘ6Ę¹+½]Ž.6g=±ėZ_–yļŠŁ&ÆlWį› čq,’|ƒ$Ē&®¬••Œi)JźOc¹Šļ(­+Os[ė­G'īĜž•ĵµäˆ«lŁć=8­Gtp÷—;užtFāRؓ“ž‡ xuüłr’‘ŸA^«ąŻ)gUVŹ» † Ķx’‡®-ķ­ö[ä°<9Ē5éæ õh’ńDŅÄ÷®\Jp‡;ÜźĀ%R|©üWÓ„°}¾@¼‰ø#o8Ɵž$Yé&Ō+apÄį[9?}ićūŪHÖ7•”£Ž¢¼O⁔ų‚ķ JūąćšÓ ˆŒ©„)[ń_qɈ£Rœ¹”y—–ļ<&źfk›{ŌŗŪČTćóŖö6ڬ`Lņ¦ß˜„Ę½tx_RŠÓżi.āĒ@ÅsśĪÆ}kv~Ń„¹'Ž#āœi9é(§ęæÉ0ÅJ/š54ķ-?žMJīÆÓwē„\‹Ęs‰ÄRħĖÅ:āę+Ćŗ]2DNūx«:mīl¤&— Žœå'5“”M+¤ķč ¼›m¤żHęń£cŪ9^ä)#ó«ś>„Ž~Ń œŪd²«Šm’Š ®Ķ>ŁŽ2ƒśUH|dņHb¢ƒŚŸ“Œīߨ£JSm4—Ģæ{k¦Bū.¬'”ā-ŠÕķ2ēH¶Pöö0Dćų¤äžµZöń5;6Ū&ĀĄciäÕ{ ½Õą&wŠ0K“Ā·§‰S“1ž“Żšł–¼Cā8\šŁs•F+kĀCS!¶iąĖ1RXhš ŠóŚ„ćē-‘łWOį­V×Mp “‰px¦¤•ī8Q‚zo÷$šŚßZF/īV>eäTRxrĀŽOōXb ·ę ZźˆtóhO”·ŽśÖT·V’“%»Ÿ›±©†"/ŻcxWĶr„„¤r•hÕH^ƒ„Oöņ€XƒÉ+Š ·euo,äéĻzݱæ·(>uFĒL€3[ūemY•J2ų–‡5öWT#e8Ī5“ŖiRÉó¼kĒ͌W[«k‰k.#“ ļ8" MK¹l;e±†ž•^Ņ1Ō—BU4‹æõępZÕĶ½¾įfų#$Šó_ź.?u¼7Fqé^į«ė6fŽD\ó‘ųWœx«E¶Ō·}’ܰ'§:šŃŲŽYÓ·2¹ęŅėĶŠÆr*;½R¹C†ņd‡Šč.¼!s3:,Iā«[č°$€=œ…TqĪ pŌ¢Óŗ—Üz±1œtI~, ¶.©9Ćfˆ÷-יē•cóqÜ×Jžµ‘KF¬ ó…'"–ĖĀé+‘ÜåG@?dØĖģėņ6x‹Y½>āLJõDŽŁ~Ó"mC€s‚kŖŃ®­ļ윢6ӑœžµGEųs4į$1HŖĆœæ_c^‹įO ®fkQÆ ĶoJD“Šć«ˆŒŻŽ¬ó[4aū8„ķÉé\–Œ5ŽT0 x9ÉÆ„ęŅtÉķ(‘†F1\åļ„„Gt/!ł†1Ę¶œ!-/©ŖNŸĘ“g™čZ$¾Z¼R>ເī+¤Ń“[¤ušį˜óaŽI®·JŅ–Õ‰y£üĶJŌHā–ā8aC)a’{VJ)=Jską9©īn²ĄŅBūŲéM¹»{yćVŗøq€É®’ū*Į-‹\²©';ā³µ&“¶²”ŁŚ[M.8$äžw†—ŠS©Q- ½T¶Ü™·$īI®½µM.Īķ²¹9PHÆ9²—Xŗø*¶kSĻŹuŚ.’U<ż@ \{9¬Ü¤µ±|iZ߉OÅ>:s KE"ō*ø®*_jfé‹“„ źIā¶üU>—éÕcAČ@5ĶÉ©ŪĻwåĆcū–čŪy57xīDc8kk^āłI!›Ÿzī|!ÆŖĢ$¹‘¶0„pžšš¹¶Iįį-×xĄ5£©­„Hnåueć‚iŅQjĶJ«‹²=JęćGÖÉXī<‹wĒ9¬Ķ­hzCćšé;yk’EyׇüGn5LYnW\Oc^ŸˆÖĆƆļQ>{²”‡Ÿ?½Ź—2üK’\ŽK܁ćĒåœ{Ķ"RƁęÄsZžŠ!×.EŃ[Ū$$ĪŃųfŸÆüDÓ'¾mś5ŠķčĀ1ŸĪ®ŚüRµ““FM‰cŒ`‘ƒųÖuŖEK– _6˜čŠ¹Ÿ/Ŗŗ;Ķ+B°ÓĀ•¤ų¤9?­k“öėdBD„qššÆ|c2ZæŁ£ˆ•VĻ5ÅIńSøŗZE-× Š…VKDĶ9ŽOõ>¤Qkwmå€ć¾*åæö|hc öł†1_:iæ’ hÖķŹ …m­Ķvš»įżVŃź_d;I;œņk˜““›±·ŌŁ7Ģōū†Ņ2C dČąŒsU|«7em(Gkµū$V7Ėv‹Čo0TZ>²­x¹ N:’o ópŗ•׎r}VŠ–±³:Z > i$kh䐶כėZ\jŽŃLJ<†Ą…w··öRDɆIdŖŒ×=¬Ėf"H–·r½ėŖ…iŹ6Lä(ÅŁ«{ćM¬G¶ŚēiĪp­ō¬ ?įdÖįŚöq #qČW©]Ž][@±[ģFq€Dy§é?iiwß¼ #ąU¼D’³Fq ŌÆhyŁĒŖy³8hžöÜć5éšO‚tXaEŠĻ.8ĪxÓZ]%wˆĮ+ƒłÓēÕ#ŽŻŚ‰ˆSŠ*]N{6uÉ>G ūF·µP0(Ē55ĶØ?uŒ`1Ą¹ˆ^%ŗ[żØÆ'?7¦+—“ķz¢Ķ417P:VKDŒ+‹¼®u æ·.Ś#$Œø¹'Ō41vĘęhå$ći"“ōÆ ·>d“(nU²Nkμwį£,‘<‡«T•g&®D]ĪÓW=ßRŃ'EH!¶@9Ü«ƒT²Öāļ}»Dä3uÆ-šē‡5)“}¬ó‘œē½Sį֞Śe±ūdįÜuÖTŖW‡ĒŖ:Ż:ꆌĆń†&ł.B9Ī `_iOl„É7šØ7ŽMzv¬a’6ŚūG$f¹)¬"‘<¹®T;g#Ķu©Aö¹Į'4ō¹›įĶBŠĶäņ°G'Ņŗ”ŖéVKƒ4lV„yωō;ˆÉnó¢āöĪ[Ż•Ģ%_Ķ“!¬źBi^/C|;…GfP×üWe&v äE)U85ÉjsIØŪ–Ģžgf5;›PåÓć„[_9?gtņwvżko+osjŌ©ĒE¼õ9‰ō8⌻,­»Œg85.ŸbńĖņE@@ÜĆrģ^-Ū‰§+ü½EG#,ŠłFį‡<™TrÖJÄӃåR„ŠzŌqŚÉ¾k„ ?‚>†øļŽÉöįä+l#Šō+o ‹ˆC¤Žf~lg5®h·źåć^€‘T©¹Fšw)Ō‚vŁłœl×·0Z;;)\gg½]š–”k+ .ƒńøVõæ…LÖ*÷S"6y£O Ł"7•]z£’IhģQ{‹Ŗź­£°ŒĆƒœq\śĪṔŲs隵®é¶Ö“€ņ; deė$Ż[¤Œ‘nćē8Ŗr²½ÅNŲ·«\DYYĄ…HʬÉģ–Q˜.—ķ¶šo£–ch‡°ėRZŻCo5Š·@= gķŅŌźXy7t­ó’2+m&ā9KŽ@Īzv³dņ[ķgXŪo>ęµ,ę“8Ü3» ŠÕˆķÖęé—Ģ@1ėŠÖ3¹‘Ē5>~Kž1af–čģz‘Ó4ł¤¶¶mÅ3uČ­ŻbŹKXŌĮ–n¹Ķswfźf+$_ˆėPé)?tŅ8‡¢ö×vļ6IpOØÅE©KŒˆŸsĶP»ŽĖ ĆƒŽØČ?ŃŲĮę¹§O’Fź\źń:®ü²¶²$ō·ŗ}Ģ҃:œt-žsUü,aY<ĀĶĒ֕åŅē åłąfŠ\­Ł­G''ĘŚÖA˜Õ›®ā2i“F—@¬äb’iāU;Ųzf£¶ø‰_1°ėƒ]ŅŹĶ™r»wZ}¹ ]˜ā¬Zųz7LŪ$#е{*yĒä²ēwØ©mļ§Ž2ŠDųQŌqDfļÜĪqM+»‡‰t¹ą‘•ć'$ŠÉ·”nŲ½q]/‰õ&—~ņ=÷W;m$x$m“ Ōҫʾ- (¹ÉŁ;£CG¶Yē*[ĖB2yėZWÖ¶Jœ6Ž}Ķc‹Ā§!UIčHŖ©4­!ŽĒ“œg°›²÷YÓ^ĢÖ¹·¶TĢLWåķėY²$l£p-Žžō÷¹QPpĆŌÕ6•Ž2ÄӚÅJū”érÆu’ M¹Tż}éėvDƒ8\Ug|©~…„”nąž>õ+O˜ĀŒsŌ÷¬¢~lgÜŌ–Ņb`p09ÉļC‡QŻōf€}Ēˆc8ėI• Į=8،ŠīX rqښ$c œv꒎†š>Bõ*ń©c›j‚Óæ<Ó&!­YG9\g5HF9ķŸZž¤kŠÖ³¾š)7$„dr+'Ęąj$–e›ųHļRgCpN1L`2A-×ć>de;ÉXó«Ų.#p%!{SŝŪH¹é]żÕŗĪŒ®”‡|Ö-Ό 0Aœ×lkEłфāīև"„™ÉĄŽŌķ±łm×5ŠŻéyŚsĘ©Ė¦Ī–ĮÄd–;֎ZhĘŻŽvHÉl…9Ø_å`1Ó½nĆnė9F]¹žĀ©_Ū’¤c‚¾ÜVŖVщ„m /•ž÷#ƒRŪ#;§ßĪ9ö©¦T®ĶŻ=éń’­‘ééTÓkB»š÷‘@ö0¤i³`ł›ūʱo ĖmzV¶›yl«‹ØŲćÖgÕ `ƒŽüQŖŃ£Yµ%uc"H ` š°c@ƒö§yƒĢ_×m2öhW ˜ČąJ5nĘoE H—“œ{޵\Ūä ¬NŽ™©d*P:¶7TH~lī>ÜÓq{Żjā h„8ū÷„hĖÉ»īŒõ©"BŁ$6}iš”vŠ6ՆčH€ Ē#>õ&Ā J_·ByØWLżģqĻJ¶0š‚ĆØ„·k•uku pC0n}ź­į=W$ž8«ĻN"£”f]øŌ& i©B%•@p­“ńŸzQ+®@ĄŻĪjü“¤` ĮĻ5BąIϵ M½Q*Ėa›ś94¾pDŚZsĘ<¶ YN*©]«ƒøćŅ­Ķ©cp+Ėmę“pŽq“ÅBČĀ0pBÓā?&}{ÓkKŠ÷А# $S ˆ2‘»ßެZ•)ŒäZYćnN\ žnƒ¶…"€¾+ĒZc ‡N:Õģ‹  FyŖÆ ’ĒķV­³fwwŲdkę²…8ĒZš8;)!±ļD(ūNĢ‚:ŸjžGcļRļŠ„+čWd!K€8ę–I ĮŪŽ)ó»LŌS#*g½©]õ)-GĘ „œgėPrr‘YÓ!IŌ€œ˜~Ui GŁ b^>\Ņ'$Šēcwą–>õ F';ŲLń^£n§«*‰ģmĻ$J0¬£#­T–ę.¹ōōŖR!#©Ļ­$ˆ\¼ZK©eŪYįó>UÉõ«±ø##PYYØÉ'­ZxQ³?Z¾TŠsYHŁ#nF=éÉ' 8ɦłNp?Z"½IĶRб›‘j2”±œŠŠöDs‘Q4r;pv­!¶įŽī;Ń+“*ŗǬ$Oµ±õ«Öšō 5ĄoAU?²^V>•­„x)n3N=wV²qŠÕŲtyęōĖvŚņŗ…‰²Ģ­pבŸJ»qį›{+į˜v­UžĆø–@O)O„eõŠqWŗ6t§QŪ•’YiÖŅžēq#Ö“—kżī½óRi~Ä¾Ń a×$óVšĖĖXÜHļšćžeNś3®ž[Sķ]“Ū[¤DĮ5Ÿ$QF2XcµhßéҰįŽ+>M9‚t$~5k§¢&X7„iī≰¹?īÕyuV ²8łõ5~ 1r>VϽYM$8łTƒGµOpt]µ9K¹Æ®_²ĶhxdÜŁĻæ{ŽüŻ:[GŲØ¦4b0~S:UI©GMBŠtŻÓ±ŠéäÆˆŹŹXu$Ō7z—Jg™7 õĶsčI¹AÖ柩ß[ĘØŸsErE8ėLļj•ź7~ę%ī›qĮ#…Łŗt©ÓOž(wĢ…WnEuzN¦Ņ˃nĪĆøš›Ä×Q›²ZHŽ3Ś­Tr•š2 S§ĢŻĻ>šå#•”) sH·čxX€=2Mā5“!pZ HŌį”ZŽPg,jé±e¤2Ž’‘©#ÄGęaӃIrłG±R­»±éłÓTŪÜnVZ‰6ž ö„3æcĄ«Z~o½Ž¦XX®Š?ĀÆ•# »™žsēI>“嘀ēÆJӊŻ6䐪Gf¦Č–ń`ä>9ä÷«J-ŗķ2V¹’Qå¦u=+R¹AěOsTVäƈŌsĮÅYŽq°³ÓŠĶ­ŹSmš?3`¼ĪN2FjhŒ1±Ž uĶS·•‰R§»±\'¬yM*=44ĶÅØĮy#Ž)æŚ0…ėŒžĄVÓŖ6Ör*¦…Óä|{Õr„ń38¹>‡Au«D>@K7QT¤¼œ¾D…=1XČcVČäžōį&å=G4—-“S¹¢n Ÿ/#·ćб ŹdĪŠN;œÖsŌb¬[HA-ĻLTĪQ¶‡e(>§Wk2l"©ćš|’|øŠĆ[‘s“éŠĢ’·ēIM»#э:v»5ŽēĖU\Ž•vß,£9É®pÜ—Œ–'œŅ®¢éŠä·zR žcU×Ā™ŌBŖņ0RūšŠµšūŽG¼M€O$W7”­ÅäĮ8^„šōŸ āEUE*8ęŖ&ŻāeV„8„Ķ«+i~@ņÖi ääŌz·†ŚŃ ӓަ½AÕꁥe‰@ądf®ėš•ĶĶ›…H±ĘGq‹R“Ž Õ%ĖĶNHłßW·d‚„@ķM°(’‚ūUŽųƒMŌn„a"B›+6? ĢĆ{HIė×ß:PåŠĘ–2Pųˆ4i­ĄD%›é[öZHć8@M&™”[ĆY%!Ļzéō­&ÅB²± uę¹(­[:g=Ra”ZXČØ…]²1øw®·Hš†—smļīKV5¹¶µcåĒõ¹¢ßšJ÷ć„rV„6ævĶØJ›Ņiœ×¼?ö3²ŠJńŒå‰ąž5ę^!Žx%mŖūG^kčBHī-6®k̼a¦Kē»c(Iž¬2”£ynŽZ²•)ņ_CŹ…ėFūŒN{tĶMµ:.Žq‘]”…/”㺊šļOG|q§ńZ{²čĶcQ„ќRź—3ƒˆńœć¦‹×X©ēžFk®‘-#Ś›A Ęk7V†ŽSūµŪŽÕ¬*GfȩνčĆC ŽI?Źąģ¦qÅ[Óv*nnµ^hLCŖćŌUUYX’[+éé]1}QĖ)ßā5/ī?vĄ¹Ē}§Ø „(Įce}ę5ŁAĒĢs×Ņ›$ł%š:VŖMé#Ÿ–= ~Ā Ė 8Ī3UŚy_ļ¹õĘqIöT г3PIµIĪW­i-„=¤O(qėšQöN­nžæZßlj&ö0Øł_-ŃEuÉĢ”U2GNµ{ūFą //–''Zń[‚³š­˜.#cr²(cĄŻ] ĢÉT[4\»×¬,Ō4·”‰ēå9Ŗ‰ć2<ƒ3±ĶA7‡trɖ÷5‰ØųoN–ą–•qTé¹-Ž*0Ńų¦?t–3Ī:ž2+Ä~'ūT˜³ęžU“†t֝|ØY Ÿ¼Ę¶IµŒ*äž1ņńY,;‹ų®MZ𨓅ŒKk›ÉĖ3nŅAÅ[ÓŃŚPdB ·ä?ś»kRž&ąT÷M Y]†:*‘ŠS‚NÅĘ­ā n„Cl-#SM—RŗķT€ĮŖöVĘ=ĆüjÕŗČg“Įčk=mf?u®ļ‰- e ^jK+Ļ*NAļq[¢ŽN2$cŽÕJėMI\–WۃBQ”t)ĪT×ŗOkØC·åĆKŽ~µj °ĄIĒ@2sPi–‘ĘsaĖwjްXā‹vÅ‚+n]6ųŅ•¬c\I3dˆŲc¾*ŽV2Šé&xöp$c‘u#„;Mk °µŽw+»"”ń9‘wČėŅÆZC„„¾e• žŁļUŽĶ8`=Ķ6[m>Ģ,¢<øī Į¤öїŽ’E––ŃW ŹÆLU{«ūXĄeBF?§%ńŸ³Ēµ õĶfjw±Z°3IöÅTomI’[->dچØ^mˆŒ«ŒŽ*ʰżęåōŖjŃJĆ;‚ށEgj7H I„ČnؕD•‘„*ķ,WkmŸ*D‹Ż›”£xŠĘ~Ó{¶;ę¼ę*PyĪxĘj֙£G0Ā#“޾µ£z©YūŪ¦½Ŗ[ܝŠ\łŪų$S-"“ģžl“üŲįPÖf™įtł]ē1īÄ×]¢éÖPĘ7ŽĄĮō®‹MŪ™čdł"¹iÜå5;‹čĄHŻėń5«‰Aa"ƒŠäā½KB„’ČŒżČ­Ÿ¶čJß2F8Ą«RƧbT±·‚¹įŠi,²ČW©ęµt}"į¶’£¹+ÜzW­KØiR.%ž…G'Ś­ŁlnŽŻTśā·‹£-"`Ž#WPąt½6ž, SėV ±ÕÆ ‰ sŒ“Šéu JęŖĆ&¼GU}z’7˜@?ÊŻÓVŃB«—»&™‹©ųjł,Ģk&āߘ ę_ĮęL…Ényl×°é"kˆ‘:® ¦jOoe#”?/@(U"żŪP•5yKCĒn¼ØČX°3ĻĪ:U»½¹UŪĘ:ÖžÆØkÓź¢¶Ž™< ³¢ĮzĻ»Q¼ł˜gb“ÅcZŖ‡Ł5…6ćīĖš.č:›Ļrń.ĪĄęŗH.t[h†Ł=«$[XĒj[Ķ/žńĶ`ÜÜéqČVe“Ž˜¬–!IhÄ©8É)Ęēg5ž•$gj½ĄõŖ·GOŽö°Ēę®EĪrB,„ ć“ɦ^iV)lĻŪ©#œ“łT¬G3“gÆ”½L;Œyåo&YÖōE½»Ž·ĀNÚH¼'|ŠZņCPųVēČŗ øbF>c޽Jšķķ€D@1銧ZmņÉ#(ać9Eæ™ĮG jk"‰äėĄĪjΔᷚ!¶Ü« ź uš½ÅÕ¾ (PGĶĻņ¬ó¬Ż,,‰P\ē5«VÖ(͵%ļ5sŠŌ ½±ƒĖŽ·­ųfĖQ¼č[’[ŅÆxY¼{o’5ˆŽ #šĄÓ|CŖÄųy>ĖżkGĻÉĶc:2‹›„Śg²xsC¶“ZHÕåĒ,kRž¶_›/¼“Fń”uq±ę’&<µé¾ ¹g‡ż*}ąŽ2k–R”Ś;%JDĪ'^Ņå•ŲÉq°ž1W¼7u§éŠąĘ’H8ĖW}Ŗi6„Ėo.@9=rW1ŹH˜H ćėļ] Āq½õ9Óä|²Z:eͽŅ#RŲćéZZ+F<ØQN>÷½fhŗ[ŚĻqŒpqWgšeR#@ÉÜ•`å$ķsIrJ7JƳįfīrWTŲ„d*ÆJ«‚”‚E–āźk©ē°­ųõE¶…˜Ü%önՓ«ėÖ„q#°$g“ZÅÉ­Œ¹y~ļēbi…†›n LuÉ®k]ńJŪ3¬AŸ©j¾£qa7ߑˆĪHMTžėOYŚBŽzā—,RäŖčŚüLGY¼æ¼2,s}5wN¾¼^nøź9­ wL<›d,2«Qj:Į”ńoūą t”$ļ«*NŖ‡*Iķę” +ę:Žø=Erś¤ŽóĪA“]EóK6X½‡Ņ¹ŸG1F@ ƒĮ#­w*|ŹŃ8ł„ļ÷vß2¶öėüŖÖƒäEŗO0c«W+ā'cµšŸŚŌœBųn‡ię¹kF¬tŠ:éŹ-^oń= µ8šAåVo~Ō—(ņʦ6œēڹ+0ČD“£)Ēßaҵ“Z€D«-‚GJØNÖęŠRWÖ²€‹ócޤÕ‹żŽĮd!G¾+>÷P–TķĒ'§5ƒ©NŹłŻ÷æ½ÅSIźgy=ÖŁź·/.Õ,Trk_ķN"f {ä× ¤]ć‘Ć޵Šé×FKpAV5’ŃÜŗmrÜ[˜ę’čX“ÜŌ5uc’*ŒƒŽõ.„<‘*“g9ۚ϶Õń(i1Ē^ky(µy+“-v54‹ūĄŸ½.¬98«…ō¦ŻvĢC±ÉÉķT­õWl‘°ēžµ™ć¤”éF{WiĻįXrÅéIŹI{ßz5æµ/Uv ÉĒB­BÓŽŽ¬łŪÓqÆ(‹]¼Ž-Ł‚ÆpŠhŗĢ¤ØĮ$ÖR—+³FŖk{£Š,m§‡.Č«»¾{TŃKw’»€SOqYŗNŖ$‰bwbĘŗ*ö %ĒM¼×B©ŗ0”d¾č™ęÅŚ$‰ŸāĒõ­Oiź4s.™n¤‘ Vli¾``IćŽµÆ§M< Ņ,gUC(—ųrŁ­“įŪfJ×(ĻŻ YZf®C"É3K$‹Į-œėtČ'Ī®AąS¦ēmcoøS³vŒīŒMk@Qi¾Ż™N:zŠć®’źĘķwo*zö[m¤ƒtw«žń>‡ĶĒŽ¼*ĘW„Œ«¹Ó³¹Ī_Ķow”«Ąq2‚HÅpšĒˆÅŻUŹŹ9e ^‡¦éÖI)Q0׊ül³ž1‘FR99R8 ÅaNšwWÕķfŖEŚÉFƒā©&Rč \dÕŃ[źŅīI7”ČČé\_Ć+ &³Vž`Ø£'ÖĒ‹cTB4ēiĮ]¼Ā³”o‰›ÖÆĖÓs{P×<ł‰Õųł[µtZ.—kŗ.Üåŗb¼£ĀzUČÖć’ńĢ0+ä³×°\ßé÷>—N·¼XŠ b{z×3›…[IŁy Tż¤5~G-«jZCŽ:łŽ[Æ]¤U ŪĶ!”ņÄ’¼<‚XŅxsĮ¶–·BāB×rĪ÷9®‚ūC“‘<ĮjŹ$(äUŗ­»si÷œšŒy¬ībiŗˆ·€“G*€ø§ĒÆFe1®šŖżw0EhZiÖ»™^ ć”u¬E4a!5ŒŽ G-žk÷3šI]oó5¦Ö-įe)gģd*ü~)‰QV+pĢòŽ+šŅ“Ė©mD²²äœšy­ 6(4ūՖįy€}j ēµõ0œé­ėĆ÷:ŃŒĒØn€ń^•į›K»‹3ĘrW›”Æ)ƒ]ŗ,‹Žqż+«šīµ¬¤"Q †qųV²§;&•ŁP©x6‘?Œü=©ÅpŽB}ä ~uĶ.‘~RyŠą’z½CBń2Ź¢„Ū'BJńV¦¶¶¹ÜÅ¢!ĻR*£‰ĮR:™ĖVšŗ<Ą’géń‘<Šņ~&¹xŗŅÅ3 Ā1ƒ‘ļ^åsį[ ČŪ,3ƼSā×Ā]ZźåžÄFč[*3Ž+¦(TMFi3Ž„nI®dķÜóSÅWś¢:[“¹'‡gÅdéM­‹¼½éłO÷łüė¢Ą^'²¼H–ÓHÜŁķ]N“įą#ķq¹o¼@^õĖ_ 5¤Ņg}]%ü9³+ĆŚŻŻ¬«ęy“g“µ³šŽń'Š-VŠ}¤Ģ®W!D˜Ą©ŪJ†•‚hš>n+ļĀ×w×ÅįµycĪA ōüiQ ’÷«‰ę¼Õyü7Ö:Œ²b G9Üķך­=:kԈ­•¢F±óęŸOʶ@ŗŅģĪmrķŹ€µ•{6­utm•%‰AäŚ[Ć9|CUč·ūæÄ†=TŽų£ß€ dķ#ƒ]'‡µµÕK§ŽFQ“gƒ¢x[«ķ×7ŒŖĆqŒŸ­vŗ†aŅ­[*ŹĆ£åž³±¼q‘Œyd®½ )§ŁŁ¹»šDB§;Tc5Ē|F×./ŻÖÖRcŒĀ·¼Mg~āf˜4cœdחźÉy ĢžPIu9ۊźP’ŁČ«Sz#ŸŌŅõ®o˜dfŗ/Łī±˜jSƒ½pīG„s’ڳ%Ń-˜¼ƒĪIļ¤žš,ńļ8ŚOz杖¶Ōļ¦Ó÷o”ÓAąÕžÖóEģFÜņŠN+±Óüfm‡›y.ē½ć\Ē…$6ż¢Y$™GńQ|@׊Ép»£i W ßm„qN„®” 6ŽĀĖį ¦§!h|E €Ū‰Ēō«WõMݦ°ø‡SD8”ä×įMrį-DBą‡q€ ąš÷/„wś “V›)\å¹ķėYĖ*Īӊ+~#Xa¬jIzźŽKEŅ5;ėVū¦¹Ł¾ŗĻčÖw—5ÅŪ¬vé‚AĘć]Mʧc+[Īń!#”Uχć„°][N“¹ł’£>H»??ó2”§8óM6»­Œ»æh:-šAw)ņ–cŠ~5Ÿ®ų›KŌbĘT‘÷dµ7‚t»™£ŸR³K™É’…lˆ4]3gŁ“Ų"P6äÄ8ük”RQÖ2#Ÿrøźy=Ķž“·ˆļ¼*pø\Wib÷2X¬³¬ĆŲéWµĶjȹH Ėc„ćłW-ØŽėĪĄ[5} ć„ÓSwŠwŖŹ+’v7æ“|č’o"*÷#Ø© <²"†F rĄń\~”«x‚Ö0ŅŁGčńŸ„.“ā}Eē]óF09ƒ’ר³¦īÓū˲œtšł\é5M&©v,".ēŒžf­Ųų~ŚRd,ū«YÖŚ$K%äq+‘Ņ® “”y‘Hņ™_ZčUŻ­s`£{^ÅŻgl6~Z"®īūWžjĮ~ŌžbmBsެüFŌ’I±Œg€k˜Š ŌµE7•Uź0ESrŠę°Ōii¹æ”i§[ķ-£ĆŒäNkœń¬c¼X¾Ć#I/uV­Ķ¼k(>š¬­[Ļy¢HūFCŒc„T\­ļ2)ÓWŁń”óiŃ˾ńŒ.ć\©ŠtHä,™čy­ū¶Ö& — oŠĄćߊqŠ®Š,’N\ē’3ļJcšKr%)BVNčĒvŌ®IŽI7B6Ŗā¹/éŖo£]" ÷Ќ^ƒŖ\Gf#…v³¹Į× ćK&»æ2«KVqi¤iJ2ŲĒ[Ø"™‘‹l•^õbūT‘‚%ŖłQØł²y&£ƒH1!iRI~¬[[ŁŁ–iŅg.AaŒĀ¹·;Uw{$E¦ Ł vŠ=ĶĪIōŖW–¾j222L:œćņ®³E¼··mё'wī„ ā=ŻņsYÅǚ̧6Ÿŗ·žŗ֑a­ZK¾ —ņś…ĶvZlģ4cöł8SœšjĶa6”²nh˜ŒœńĶa]GcsĒ›"°ćvkHŖqwŽŒÉÕ¬ćÉUó"kėøć‹pFq‘ƒœƒM³Õ,Ų'+ĪOCL}&Ż-Ź ‰ L¹ r?CXzꑥZŽf%>ö3Uyl…>F•“®[Ų_͵U“ń\GŠ4gŚHWĪ„u8®ŸNµxćĖ3—ć¶x­Ē…²¼’T; Rųf“ ”ÜcĻĻ+І™»ä*^W95µ%•¼éęÄģcĆ4ßé–i+:ČP2„qT4eÕ¤ŒĒ¬óF§&L`r§gxj:sSV«t’%GŚ‘Õ•ioż¦XK"¼ƒœ€+Ŗ»kՌ,±GcšĪ×®ĖéÆ VĘAj$ÓŻhW,“żÜ®^µ7WPłj|ʏ’ÄóųU-WZŽĪ1Ū,Šµ`é:“¶3•L6īOēV5čĶŽž·!U‚Žœ×4dž‹B䜚s³ł}ŖĘįū;“×§JĻŌ-RK“°y@ņ«ž‹b³L„Ó¶ēZ–Z]4ŒĶå•8ڬe$­&TéĘ.ńG7e§]G.čTĢ­ĮPqWVŚK{ĮöµÜ·8©¦ŌÖķć@†1Ą"²ukę{ćs3ĄéStT%QīĖZä±8żŚgœ\óļ2”‘c[šē2øłS īišĢnÓī†;žŠØĒ›VD¹¢ģQÓ¼ńx¢F.Xcę ģå-“õWņÉeĻjćÄI6#’„Pń%ÅÄVē|„¶6Ž{{ŠŪOŻŠ†”%iŽ:¼ˆĶ"( EsŗL„]¶8jЊIŲ3÷«–ÖĖ+°tźjgQµļŅ£ė2I ƒœÆJ#Č<66Õ“ŒmćØļėHSŽ’•sÜŅśÜ§!ģ9'­4)±5oʲ½ŗę„‡ž ęÕ9œ“++0C“mõā£eņAĮ{hČē§5Œ'iÕ7&Q±Q‡‚|žj"¤ē#¶*ČžéB‚§‚ 5ÜĪ÷ŠĪ ’¬»>“×\©ėĻ5§qČ" tżŠłH=sķG2frŗ31øõGĻŹ8­·`2 ”ØŚŻ‚ćæsZ][Vi­r$ĄĻf#=i­ÓŃŖĒ’Ić¦)… ¶1ŠT«0#`eqČę›(??ąiHżį"›‚_’ĆÅ;"”ÖÅÄ9„UŌ\ rŸjr¹Ś6žz©tŒīXg=y”D•!­;ƒ€Xg¾sR-Ė)ł[·9FŚŸŅ†óž™Üܤū5ɖSœ€¾•ČĆļ 1ŖŒnÓfČą‚ ŖåK`kø DĶƒń„1Ćøˆ£Ž”f&ŃłŃ3æ–)$ŽM6Ł7‚čL‘B|µŌ $·µ'żRėUŠČ|ŪjpŁÉĘ(¼»’£OvˆŚĪŚEŪåzS$°¶HB•B3€HéWąĻ”¬¹Ė7oĶÓ9£ž[&L©G”J—iAӞ)¦YĒ1; 皵 ĒT‘ ą©*MŅZ© ŲCķ"Ó!uĀB}ŖĪ‘ nہF>†ŗb˜°Ę}sPŽ£E6ņĒ­ŽK©JŒˆÄ¶Ó£Eڇ'ėL›Kŗ€ŪrsZģ»\AÅ'Ļ€F9ļWķ¤ŗRŠŅę ΚČX}OlÕ{‹ivÆŁxžuŅK’X:ūŌzUĘ»z3'NĻC.8 Œ,™łxVeīų™ˆćŠėfž•VźŚŻ£įH$ņE%;=M' «„½ņóšXć;K˜zēŠź#“¶ĄåROmŒŖ©«U’Ńꜷ9¹ļ<9ĄŖ¢2X¹8Ē@+«m98ÉŖ“iƒvCU°īCRźŽq·c°#mLq’q]Ɯ̪ ĮõŪ×ńØNŒ©ĒóŖuźEģb«ģ>„V„›E-¶Ö%dĘqP’g7›²;ƒR5ƒ¤€¦š1ŲsU%u¹pŽ¤ŽTHļęĒ„G,1“»<õ”`ułX'œóÅE<3‡Ąū½©$ū”ķŲ°ŸÄNŅ3šB9XĪ:ŌA¤T7=či0¹F žø©¹Wģ;VU•“Rj”p® ą/<ŌņŹŁ\d‘Q³«+ äÓWźK‘LØĮ ‚1֜¤m¼§“NcÜ …TC§+jŅw>“·¶bwۊ™†~U8ėVD±mūĄš±oµ—*Jņ¬Žē¢åe±”ŠŪˆ9&“,`w`°ĄėN¹Xa 'ø«VĢXL§»ŌŹ6K¹5¤NĘG­Yņ£Ūăµœl§f,]¹äę¬Ehå¤Ęz~W.żĖ-~IŚ’7­Vh2˜ÜX×֛qsmą·?^“Ū;ä|(Być4“¶äYĖį'·µ,ĮS9­{MFˆ<¤Ę¾żj“ņ •*B ?­w¾ Mæ.”pč1Š6sbóч2=UU±Š‰ŚänØĢ‘deśpk ®\/CŽ¢«É;Š€yć±¢4Ņ›{X{+ēõŖ÷"īކ¹Y®'žĶķMŽīppĮ—õ¤e%²1t”-YÖÅÉąńĶN±Ē·å<×' ü›°ĒVāŌC«6ThŅ}NŒ¤} ŖÓŁDźß*ē5Ÿč1’Ī3RĮØ'ž“ć9®¤ż^Ńk(€Ā(ü*3fĮ¾@Ėžę­ĒG8źMLןČ^OVžŁ™Ė ʇųN1m©«ĢÕ®ĻĘSéshŪö"¹_jįZķPĪ é]&šśuż‚Ē.C…Å)]ĶNģUb§‡öi#ĪõX­ĢłIśŌ6Ź *ńė^Œ< Ėī†`Qš·€'Ļv¹<ż+ŠX˜%ncĘTZŚ,óO1ŒQŽ‚£ø»…®kææųlüĶż ŖøĻ+×|3 ›m7-)ö5¼jB_‘“›æ,¢ŃŽoA‹G·ż¢j,Œw3²ćŒÕŸ²,* ¤–hńž 5-w‹ZŲÆ¼6r \rpińX)|‰1šséJGĖ1õėZóÅ-Y 7²+˜ćĘĢڐŽ\3pūµ,Śv[åÉ>µiĪL¤cµC’{2£k±Ėtź@ó\Ÿ­?ķīw“ŽŁŖ­hļ1Ķ"Ć^§5œ©ßVo ‰!eŗ2’I$Ōp%Ćn(Ź“tĶ:IW0ØU=É­[+$ŠĒ$Vض„źŁßc'Mµ¾•#Šf'ŒÅu^֚,ˆ~Vf·|%46Ŗ• ŒsŽ»];Ќ.Õ*8¼śÓPzDō©įē8Ž2IœąķIĘe1Āøźõ„’ŒqŪī}JÜ6z/jźµķEoc$ƒżŅEcZé-,ą¤ĪĄņrMLeRJźĖń1ö‰{³g36‹e ĄV»/ÜķĪ?ZÕ²“Ņ#ĄŪ18ė]¦‘į“<Ķó޼քč–0²MäĘTwėU*Š?ŌĪ2vj:œ öŗI\ŲgøļUŅĆJWŹwEjxƒW³3•°€¾25”­9 ‘Ōõłk²œŪ^éĆQ„+½>f„…ŌvĢ8öÆAŠėōIĒŁƒƒĮÅéöl³9Ō±Ī1].–Ń™3*Ŗō$œ šµ,tŃ‚Ø“Õ ¬s\>bSŽŸw ÄXĢźæhB«żœ«ip»Ąź:ĮŌ“Bi՚ģ1oį^õĖ W6ÅUĆ8Ś2ћ}¾b„V&Øė‚ę(ŪÉ+  ®«į×ĆŻcQ™ ‰ˆosŠ÷MįE–›`.ué#·@¹ĆpOŠWŠĪčPŸ-I/‘čSŹgRƒ·©ńł›UbWŹē° ž*ōGWł6÷#ź§õUŒ> ÓõY;hžyÜTe«‘ųåćͧżšŹÖ4X ,}Iå’¬ŌgUBlźžS^•tÕĻŃlu›§ŹA ’knī÷PӉ”Ż"uĶdŻkśµÄ¬š{›tÕ× SeŪ ¢£—ĆśŠCFžę½9É+œ1öp\·8׊ļ{|Ū÷¦ŚŲÜO.Ä%ŲńĄÆDŠü*É&ėū’łģ8®ĆO‡GӑB"ØĘ2x­įuŗ%«ģyf—įm^iWbĖ×u x) „Kq&ł8ķłW_o¬i”*¦īÄń[:}ī— .Ņ€čMEjü±ŲŚ• M]-O1ńŽ˜öVäÅķ\gŪ^)p ±ėžM{ŠdŅÆ-ü”p=ńĮ®ļD±iŹ«•-É¢•xN6g+§Z•Färé­L«€¹>Ā–-FydĄI >‡®ŗ×ƶń&CÆ\T§J±€åęĘ9ǤmÜ©ŌęÖĒ3ø—nU†8 œÓ¤Ó ¹ŽRkŖµŽĆoČKzƒŠÆ}$16!‡q\Ņ5¹^ŒÅ«źb[ųfŠeŠžę§‹ĆżÜXōÅ[†žūvš9©!½ŌKćaŽ:U{{é`mļrm7AŁ‚‹“øė[–zs Äq‘Ü“Qé÷­;dō5£o}#Ŗķ`p)%ĖŖDņónī$6ņ_hķ]ƒg‡¦eo\Ög.ĻۜU‹&æŹēߜV5§'§ „kŒŚŻÖœĶĄ‘Xp£šó_é÷šc°pFzœW¤hZ»Ś[€Xķx°¼orš’·Ķ’5åaēSŚrĶhvf8hØ{JRæ‘āŚŻÜźxÉFā¹mCPøäfL/9ā½^Ó É‘»oج .єłņ0ķ^Ż’GĶčq’h°i¤9÷5£„ŻĮ‘Ė;ĄV“^¶™²ŠåG÷Ž­ - (ąŖēĄ¢4ć%¹Ōń^황įŻSɉI‹ £9aŠŻoÝ$ õģ+š’Ęv\ ®}iŃEoŚäy£’?3Vŗåga„¶žą7–…›ų±[Ö¦Łc!HSŠó”Ō„E o<`JŃŅļnäu ¦?Z¦ŪԘ«źuóF„ó@ŌĘ6qœ3Žź”żĘ\’}źÆ.`@ŒīIjø¾äK–Ö4”»±Ląäž2jŽ»/˜˜…ÕNF9¬É”T~ż½3Ķ0ŪᔇsŽzÓv[ .ćĶ­Ų%Ž÷sQ;v֏Lbŗmą\-·»w«źmJ†e@O5”&ŪŲŅpnÖ9 hœ–YSךtacœb6wģń]y6ć;võÅU¾šŚŻ9ڃČõ­#²$Ś[XɒŁę€9Fˆśb²om&I•„lÄōҵn|Cd$Ųƒæ­V}u\$Ŗ†ļ€kUNčÉ©=QE"¼'ē„¢A“F”ē$@`©õĒjד½ ¾ŽõaÄr æĶŽ9ØT¢‹s‘ē׌Œ ģĄą·jț]‘]™—;צj:\3ĀČ .šyø_xV@YįlągŽõk m#9āŻ6›ŃĪ\ų¢é\ģ±ŻĶ>j’9+ŸŌ4«ČęlĮ  ÷ŖfĘš<·§k–¶[4wa±Ōd®š:ęń]ÓrĶ‚;L>,ŗĘņ=O5Ģ 2č¦6°cģj֗įŪˉ‚€ŲīÜ×+ĖäĪķ +K~õ‡ŠīĢß¼mŖzõ®ÓBÖ"ø“E‘Żq\l1Ź„fcÜWE¢hFD`ˆVė]Tš<®÷2ž6”£Ź‘»g©Ē%؊;PŲī1RźńŪĪĀ'³ XõĘ1[Ń£µ¶ETß!±­ OM»(B髖:·£Ž$R>bG5‹¶éĘoķįµ[øT1zäUFÖõ``ҕϮźŽūO1……×ssÅGtö€¤mśõ5¬k-Œä¤¶Gį½6YēŻ5Ģ¢1Õ·ݽ»Ņķ%X¼Ł™ŌrXÖ̶‘%#Œ3ҹEģoÆ|ʅÉnUÅgMŽOņ4•JÜ©5uźt>Õ“øīc1A$®ÜuĶz©‡ä‰Ąąv®[įΌÖykŌdb½JĀ(`ˆ"ÄpĘqšŹ“|×weW²‚V9„ŗ’f!­w{ąUø ‰”#‚0+؊ö.<„Cw~‹‚+æš=ÅŹūֆ(”³”Q·„%ÕõŒ”£e@“Ņ{b61vĀćÖ¹;Ē‚+†_0:sMØŚé’„ļrėś}µČ?g`lv=k™¼Ņȋę»qŠzżkRžh„øXć˜#T‡LøD,Ż*=¢·+Ō·JKTŚ8ym„‰š&‘—?wq5b8!xvÉ1õ=+ŖŠŃ“­«;wĄÅmXY@Ö”„…b'·zŹM&¬©ü>ō®yż®™’’=¼qж¶±ĀčŲ©®įm­Q²±r=jž§{kŪöpĻŌ.3Wk½Y„«(£/LŠ#¾ÄČD*½ČĒÖY&§Ę«=ć3(ąf¹;nń—~DcŽ•ĪjK%Ģ„Ėr’1ĘPģ“‘·“OXŽŻOLæŗŅ.˜˜1nʛö]/ģų‘ć@:sÉÆ>Ņ“’!«ĢķżŠ*ģš]åĆ+<²Dž¤āŖ”å}ĢėӢޗ65”Ó Ła××ŠŌšE„»Aµ-ivÖD¶D»wĒ8ć5§mu8ņ¬b•WūĮxŪķfō¹Ēģé§tHō;BĮäDˆ¼f“Vövæŗå±ėYśV~„Éy,žFN)5+˜÷˜•OBI„)]®f5TŌnTÕõ[øĪ#—Ėö¬¦Õµ ŖgÉēšS³GŸs]•  UV;KvżżŁ Œć55jSņ.‡>Źęńޫ8’–ŽøäęÆZYź ™‘ĪĢēœžU†¾$‚ŚŪĖ“RgļP7‰nfl™×'ŽGō®om„‘ŅčTZŽ’"ēŠŚžÓ elŅ’2XŌ:m£›a6 Ė#qµW»ÖUbÜÓüŲīpkńV®³Vw*A½ZÄĘZ{)õWł~'Ö4«0Āš@5ĀĻy=żÓ;6Ų󍵑<×-²¤“péW“½U–6/Ū)ꑰ*\›z|ŗÉ›1_Ae×,0yéUÄkęģ\¶NrsU®VFʱē֟+{ Æ©ŁjSضą±'ł×)pX3Ī{ÕĮ;48.vŽyŖū¦ęh„ĆrTpk’TŚ|ɛ{nuĖ-‹ž$Ńćvómcaø’k>ĘĘī&Ü#9Ē5·„2Ø ‘Ÿ„Oö¹%‹ēۜg ZŚ5ļ7%©Ņ^ąŪ+™ķ¶’NZét+‡™‘\±$dėYz5”ŗł¤o(Ōō®»ĆpŲŚó\ŽI"𦑗4ž¶ŌÖŃ“ÉLˆžcćĘ0+GPtGšū@ļŒÓX· ˆ€ĄąŽŖKqēk:±<ć5¼jF+MĢ*BOY“›9ļ×l‚W\rÜéŗ­šC²TQĻį^jĆlf8D:ńÖØL×,Ć÷ŽwĻZžW(ļ©j“-kßiÆiš‰ģc#„méWZuąŚV Ų抳Ę*ŹBNź3ČÜqšź<9ؽ£®ŪŸ˜šy¬%‰i#H{&ŻćdzŒ Ź ¼Kå…ĪHā²tėŁ-ķ O!G#:յŖ0²Ļ¼‘ü]j“÷–ÄņĮóÓ¬cĢ­3){Æŗó±§}­JmöC·Ȧhw½ĄW¹0“ĻĢՈeA6 0$dm©WO2ęQ3ĘĒī‚ŲŖ•Ų)UÖÖŠō}®d‹jȲüKČ©õ{+©-–Å[Ō\Ÿ…¼Ė$\Īpz‚qõę½LŌ’k=‚Ew)®IÅĮ­¹ØTŗõ8Łt;—BĶup\ń*Õ·™gåłū:–ėZ7z„ĢRJE¤Ž½¬ĖćqjŅ‹w·sݱCQoŽŽ†psŒ~%čĖŗ„¦Hu3FOqŒŠĪŠ…,Ś»F0*•ĘŸwö-d"G÷öŖž×É3›ł3Š ļD¢ł}ŪR§ĻÆąŽžŃuDR’(pw”.Ģ— Ķ‹ĀGO±¦¶×-”  "ą¶ļēHŗķ͜ÉqlҦq’¼Ę²äqÖßs4XĶ(ŧźm>ƒcr G ’Ż<ūęø/‰~ ·ŗa%ĀJÉnzWuiāķ0…ŽnĶŌć­kŁėv³ąAJ­Ē̽k¢–-©ksŲ)8ū«üŅ­“k8ük"Ŗ e­;{ķ& ŖĄé^…ćk[J¶Bßv~aÅqw^ÓÜ,W‹ąŠŽr„×4eo'’Ź›q—,ću婟¬Iį}RĆɖęhskŚŪO³#ŗIP•˜œā¬ź¾‚F+õ-Óäsżk¢š·ģ-ćYÆ5'œøå:bøg9/rSM3¢*ł©E§å{h·% 2ŽG ]ŸO›IęuIsõŖWčš|ę„’³ĘMg\\[ż°¢@xĮTŹ1č’_i7Y¢å’²‘¼£³”ĶIō\d…äąf®iöØŃ)Ŗ¼°äż)“éh,ė Źö Į>• 6īqVVøÓ”µĢv…š¼džµĶź(—r *Ģy Mv֖Nņ:dq€Ičō˜-µEøYlć“łÜ ׌“¹dģ’št›ųmoĪOH]rÓRŠ"Ž$|m¹Ķz†Œ—Q[ؗkƒĒ”Qipń½Õ͹raZ²źśDpa¤,q‚*cQIŽęžĶ­,Yū<7|ŽL~§v)~ĶÄ.€żāHż±„`C‚{—$~!Ńć"&¹U“”ćŲįC›XčWńŠæ³Aw;Žł®^ńõüϱf‘G§zŽń׆g•īY†sŌ ĖŠÅ?›bF#“ŗ“s¤ć{žjž%JÜæ‰Ÿeā]x…uf·sŽ» x’ŚŽ6·t#åĪ3X®££y{ ŽPJšÉŽĆ¢ź³7Ÿäxžü˜äś Ę„rWŽęm• łgżĒ±Łxß²(H凮2ĖÖµ"Ō,ÆmCY\Ēzb¾|:Fi!ūžG_|Öē…mµ;ł#Š’ĻŽ,V²†¼}ļiuč©BKąiüa›Hšåw¶§op+—ńF›}ĄŠÜĮpqČ£qüjHģn4ūuG¹’GĻĶĻĪ£³nūGĻŠ šµ)§fÓ^Fs)j®½lqž%Ņ5ß²?”×Jųē«ĢÆ”ńĶ‹»ĆĢ‘ēŒ·ė^ŪŖėīQ)^lŒ×;?.#ø6ęĻo’1“ż+VÕ½ź|ĮjŠ_ŗ©oTq^Ö¼K-¹‹R²ød#i;I'éWoōøną “ŃLz†SŸĘ»]/V—R“XÉ>öW³gGsŗHۊš3§)¦¼›&¤ē5ū֛]Qąž"ŠnŅBŠ>sÓü*¦įŪó|ÆŗøNKcōååęŸ¾ēŠ$®«ĻēY1kVs”†8ķ¶ž„(Ź“©ģä¹­©U{©¦pZ?„ŚKpO—°Ė3`u¬ox+Bµ&[GqcĻ`+«ńv™­Ķ ’Ų\‰ÄA°EyŽ«mÆ'īnō{‡YĪQ•gE&—̾Jn^óiżĘ¦§x>Įį—ķ ,‰ČĪq^įżsF»·±Īˆ[€Ēåśv”Ī‹,śl¶žOČrhŌ–Kt)„XĢ…ø2ĶsIÕ}mņ:déZŅÕzžāŪ-6Źé&žŌ.q·w"¢šg¶°ó­/YŠö ’kÉ/­5‰yĮöõ.ģk š¶‹yq˜×Å!Q€”ŗŠėVŅé|ŠB£6zĒĆÆŻ:łl²J3ƒøō®ćSx®-Q˜Äƒt‘šń»M@i3@±™$ĮłŗäõOjSļz†œŌNN.ńVō4æ2å–Øś6ŽŚČ fŽ&P¹ĻZ{ķ&ÕK<ˆœp8äW’x\•¬3u-Äp(Ė䱟Z»}ā?\2Ū¤w$ēĖYĒSzŒU0éÆq\éüCm§ė²ym$Ž€įBœ Uiü/¤éŚ`hÕ7g9ꤚ‚Xżų.Ė@„}Śęf˜źO€Äćyé^… Ećń|č„-"ŃĪźÖpž@d ņö³4ˆ$‰[k3' \ž•Ž-Ą·³•c·qħ Ć9¬$Õ ‰¦–āŅ(eĮ qZT—4  ¬ŅæāW¼ŃīåµI-Ż|Ć÷Ę3Xę=VLņā-†Ą>õbĖÄR}“¬Hņćåķ[6ߌ— ’e‘P×:§)hŹSKXž†:PrĘi®'9݌Ņ^[ŪZAņ’£l¶Et×öäĀį;5rŗĻ…mÆY\¢ŁÉ>aµ…/39UIģĪ;Ē:Ԑ–XcA>ök”Ō|Q%Ä+Ģńć*œ^£¬xnŠŖ¢£«‚Y³ÅsZσģęFhŚ(¤CĮ=æõS£öeRÄ(«ØÜä-®QLŽń‘Čg<ā°¼C-ō×ā+–’ē5ŁC ŻG3$¢+˜¬˜!æ*ŽHDø¶te.Ą ÖƒOSe5SB=ĘŁ4õ:¦£)“0/8«ˆ,&Gh#łc8,Ē5Åk–··w2ˆŁ•Į$ńŽ+[ĀöĮ£„Œ0¹Į9$ąšÉ9ÅY!Ļ’ZÜĻń”NźQ‚WWOi/ä[kGOS·}t+¶æyļ¤ĮŚ8 V/>ŁlXX¤ań†8l”¶hTåt¬ō- ŽA Y¤Wf]ß.k2ź”ĀH«Ē½gŽźŗÅ½äf{ ź;+ó]|6öŚ®‡ēĮ3Ip÷…CéķY¶¹”\mēp¬¤£ĻĶt¼Ž*ööąIåLsŅŖżŗKyVE<}Įō­tZĒzRy€ŁĮŚÕĻŻév×s±“¹w¦9 Dō|ź© ĒScž$`ńʈĢƶ8„µ7:…Ź©–8c+Į'&øū«mG ×®WŅŗ[ <­{ĶūŅ8±©‡4»oŁŌŠå™ŅŪh:Jß!žwžFēž•Ōkmicį’.ŌFäØ`¤ąžÕā7Śåņ\…č¬JétŪÉaŅ¢g–In®ń6p*gŠ©$‘É <$Ü®ģVÖ¤•¦Ż:l÷F8‡«Įņ†Į#„oj)žˆņ]ÉŗNJØķXń:Ü2B‰!ÜzŠ¹ÕŽč¹*čoxkĆ0ÜčĘv…Kć#«‰ńō×Z{|· 2Bā½NĮīģ4¤ p„6ąÆzį¼G—ļ$ad•ŪęĪ:Vџ4yZŠĒŲ+¶ŽfŪV2iėGåąp b·ü;¤iXo[„‰±Ē͊vƒį)•Ž[„ف»„hÜGe§0X‰CŒõąŌJ“[ń0ŗ³f}’†n @Īģź{ЧŸköYŲ‚yĖUĶOÄ»#0‡VŠāużlĻ,‹ą qTźĒ줉œefō~EŁ.ķģ.ö@¹õ$’#Jŗ¤LĄ…utÉܧҸÖyęį\wÅh[³BŸŽóXTœžĒ]u-j÷ÓK8dg÷Ī3Y—nī˜`Y³É'üńVēłŗuĒŅ ~ńķP¶ HŠĄį¹éš°ƒvģĮ5FqŒ\ŠWiČؚźĒō",Ÿ1Ē9 s䓚~IPCSY·'${ā³ęócfł* ϧj|e[<¶qŽ«y‡pČ9§ēĄ5L•;nNvˆš§’3PmŻ.H$v4€üƒ$ŒWpØØJƊŅ܉“ Ć{dŅ ąR ĘN)”ˆr8†®÷Š–¬ģ9ĒīńłUeĪEO)ł21»ėPŪ2½j|ˆnKqÅ[ūŌ%~n˜>ķI<ćš‰É ć> āž¬{+ŒL¤*¹ē©£¹Ī—9P éųSŲ—©^xŠ ‚rÜ‹Ė+&@Ē5mö–ĮüĮØ¤Āš¼Ši»É®ƒU…>“’,ĒPiH-Šz1QĮėI²Čd€pIć®) ¼ļĪjE;[”ö§!ŽOåZ&ģRZH@Ą#źj6¶:ā­“ŸG­;xPł”6·*ÖFtÖg~*3Ł;“ķZŅŹ øėėQ3 cļSyu!ŅźSņT'Ż9=HŅEmĘ06‘Ö®“‚BńÅ" ¾ƒ­>wе ¢ø€±»Øā£x܃ҭ’ c§SUøČł¶ńĶo©*= ^ē5ŗĄ˜­I9ĄĘ3éŅ¢–0 …\žęģĒ(²ŗ 6–Ø„ÜĢg$÷­0€7\gšŠE_”žµ7×Q¦Ņ(MӐ1zipĄąÖ‹Ę<°p#­6H@Sž¦šhØĶ‘@Ą‘œóQ˜›aąąV›ÄĄżiDXÉē%}ióXJL‘Å}1Hėņ…ƒZpĀK0Śģ}Ŗ%†A##0*:UĻÜMY\̊7É?0ĒuÅ<©޵Ė*@ ÷5°•PKn ֟5ÉQФÜrOS%ĮRNE^hˆg”×€m zŸzw@£Š¢įŪ$Ŗļ2?R+\Ćøc$œtØÖ±ć'4ł×AJ*Ęh mčM=~ł<‚ėż+E­°3¹é@€äƒ‘Öœd‘1¤S…€sõ©dŪ°Ü՟$ęƒS=Ē4BŻ%c&ūNIHhܒ{V-żŒń¹Y#¶+¦Č­ŽxčOzs ÷…i Ę.-és‡‘_$2œS[!†{ ģ®,ŅL  cҳ/ts&Z6*sÓ5²œYŸ$Ó1ž@ø8śÓJGžõjöĀędUb¤ln*żo]t>¶“µVpĮµb¶Ž4ɂ=ė›ÓC÷œž9>•y¦ĒÉā¼j“kDzŠ¢ŸRķķĀʃĖĮ5RßRT—øzT2}Ma¤  £­>9wßé\ßW§‡W×*IY³¬¶Ō-Ś!ŗ.HéOģę$+m t®rÜņ0N;ŠŽŃžÖ(÷K·qc­å^ėyg¬‘rM:C’"GÖmŅ\Dpc­{+ųrvøPJ.u`r¤t­éķ©hKģœÕĆć°õ¦ Wl꬟’[»FŽÕš× .@=kŖ’¹Ē6öeĒ‚2zcĘ„vą.:Õe‘YqęćėI:‘÷%Vć­;‰;"Š–%źqķQ›˜GŻ%G„f\ŹT€ ēŌ‰UŪ<>µJ­%­ĶµĀr@ļM{Ę+ˆó“Y%ćq?ičö„¤ˆ…=Oz„J(ÉājKFĶĪiŻälu5č>ÓįŹ¢ūr+Ćš[Ċef#Ö»]Ü® ·ø5iĘv7„ UĪ™tϲé¾~ņ~^ƒ½yƋüQ}kv`Ž) £ø®÷U×­tŪ,]])Ąį7rkɼgā‹[Ū¶ņmŸ™—Æ7 UæirėJp’pzv*^ų’öFĆÜŹF:n VtŚ©‘ “Ļ×5›{rÓH"Åģ*»HƎ>µŻ ? 3Ä©/y&@FUćNó@aČęƒtć"œ&Ā`mWBRF ĮčŃ© ”l ’]ØøVĮśÖŽ•'œćŠfœŚŠēß•j¹­©›p[æ\õćmV¹iöō"¢R·G@Ł==jĢś„Nø†Żœ‘łVš‚čŒjLØ#Ü`XÓŅĪY?ÕĒ'×Vχ#i¦B +“ĶtÓŚ!*§#¢šŅ7¾Ę•–ē+”iW²J7\*Œch­KhSyćż‘šŽ¶H 8Š=øļWįø@Ÿ0äö­h—+­NVŹĀWŃGBŁ­=;KĪØe|Ņ­jz„1œy$Z· ź&I=}k*ōŚŃч©9É#«š’…Z‡óĻ#?15qtÕµ”l”±j„¾±vŃ,H»@ō«38·óē$v8Æ"2©öĪź‘Œ_4^…żJč„—’“$LGR{W{¦Ł<Ā[ĖĒ~ m‡ƒYzÖŖ#ø`Fę'ßśU;q}r¤Šzb¶ŒuFpŒe+Ķ›*Ö°ńghīį½j†§©ß:ŽŁ¢nƒhÅw ŅIRE 3^Įą?‡Z~£kó %ūµE\]:½waCV¬Ū”cäɓPv,ĢŹ}Ķ]ŃŌĀ Ļ+“õė__ų›ą¾•m”M}-ŚEjXöĶ|£ń.[uŁ­ģ˜`m¹ćšŠ8ü=x·FW@ZU•)ĘĢÕšżÅÕŅŪŪ1É5ķß,¬¬J]j·ąįĶ|Ć”ź“Y]ļµł[ ®©5‹»¦Gŗ™ŸŲžy9”q5W³¤łSūĻ„Įż^)TØļ#ķ;/‰Z—£ķŅ”Mt£j‚?:ņŸ‰~3ń¹rg¼½—Ė9+8zWžx{_ÓķtÅRŽļŽvŌ:Lju Ē5ņ˜~¬¦å7S·™Į“ą\:µÓŸ,ČĀ6ąŠ„Ŗ­«Ģ»Ü…גj½œń:‘dÜ}Į]ņŠź™ązšś9l`“<ŗųŁMr–ķ¾ĪˆV%9öTöÖ°Ģ1$M_z©bńFo‘½I­KK»Q€_ ōé]wäGÆdVø±‰Oʌ„F …8Ć)õ5³ē[Čr² Ņ h哺÷’#.n¤ØLĒF‹v}*)­¬åĖyaIī»xV+¦¶+nūĮ¶–ŠoČ@ē#½o rÉ%#ń÷y¹Yå6q%½ĘQŸ‘ė]#^bĄm26¾iž"k[)¼»tGaʟȶæ–KÆ"ŖŽĀ½Üul僔—*]Fń¦Ä6®Ź{µhé—‘ŗ“»=Ö“--ĶᑐŒuØę³~pTäVšœeŌͧ¬G>·xIīĮą ⣛UŒĮę¶@ųøĶg]ŲŹ¹höoõõ®gĉvØ|×*½0+X«= „8»ŽĒI.¹š ZĢŗŌ|׏GµrŗU¤ņČ#sīāŗ;kˆ#ę}Iļ]4ł“±ĶRqŌ†v=UŠŽe»*eŌćv*¶©tą„2æµc472HJĆ)ŻßÖµ©5i ‡ī³ø:ŝ¼a”ųõėY÷śėČWģń?=5ĻŚiŅ—£śäÖžŸ½ŗķ™„BJ*ŹÅ:±’ęܱ¦ŽŻ<`M+1ĻLńWfŗ@¹’<±ŽĶ%ŠĄŅ Ą…#‚=jäŗu¼£ ĢųäsÅK1­+Y"¤:Œq  q÷³Jš”“Õ"höĒ,äūš¹i¤éšŗ!Œu'½'‡·Ā(Ö¾–)ĮØG$ø’hÖ„æ1æ õ©i±A•ņĆYWz½œm–('nT„m,nŪZ4æ,OµZKVE8vZÅÓu5€LØĘk@Žn·į¹®…vŒŚIh]·hćlo%±ÅNnD(9õĒzęļuĮ#lśŌß9\4€cŌŌŗWz³HUåWFÜŗĪWc*y$µ-½ņČFi>õĖȰ<ŁkÄćųGj—ķ6ÆĶ4|wšØQōdŹ“žčéeU”>¬ł4ę$‘b9&²āÖģ.MĢ;“W¬učĖløĪī+iSV0K[¢ēŚę8bmރµa½`‰9śWEmxŽ ØPOćVą”`p J‚¶„ÉIhŃČ5×ńFŲ¹Ŗmä²cęŒ2 z“Eó;āØ\Åģ™JävjŃDĮ§}NVĪĮ #Ģ—%;qśÖ„¹bĄ"»wČ«šŪiŹKÉ.Hē“ÖÆEaoŹ#QŒōÅ'JåĀr¶„)dœBĒ#ąvź…ŃŌd!V ø­ Æé0 ¦TtqTWĘ6³#",=qYÉĀģ]9»8¤[³Ó.J)ņlucÖ¶­,d™†qČŠę$ńKøłiÆ„Qæ×ļ„—?h*¤b¦2r§>Ēm8[xqÉ+éé\޼U-™Ū /qøt„ƒRfē•Üō<Ö^¹-¬£÷ ķ;b®5`™Œ©Ö¾†Ž+Ö¤ę4`øķDw~$Ō‚Ŗ±Š3ĘNjŹ\ŪcĖ“‹įW-/ŽŻ.:€+7RĖC¢.ė•£.k)&å<:֍¾“ŖŪä*żsŠŲ³ńj„Dy8źj„’‰»U3Ö³öń_©V¶ä\Ń®¦źm§¶Oz¹7ˆm­ē*±’ qs\[Ķq¾wv%ø éZ}†BķDĘH&©bbŸŗ?g9GßÜՓĘQŖ­ž‚¶tVāõš¢·vuh§k\Frśō3J€-ĮĄ“¦ģŪ÷ŏcŠĪ¤Ō£ī²éŻ>I+#Ō’śĄ…óčMSÕuE,ÓątÉ5ĢčÓĆ4Ėå#=©ž(ÓīZĶŽ2ĶŽiB)«_QT‡"ę°ķVö6Œø$p:ŠĖū] rB»ē©ĶdXŁ\\\bWdvŗ.‡hÖąø)“u=Ķa/‹”ŁKŻęµĪrę{[€8pǽW’Īvū±HAäWdm!Itˆ»}±šŃ°°ø›r¢z W”^C9YŁ­ÓLŗP½rzԦΠdŁęM+{œę½2_¬Š~ņą·œéTKµÓd 4Ž-[FWÕn+½„¢9ķĀŽdjņ([µuŚf“aie# 8ÜjµÖ§8Œ,vģ[•Ļß.³wp $€˜8q§'I”Ņ=.෌pq鎠—WbÅTˆĒ\šä4+R ™„(§&¶,ōw‘[|Œ ㊨ŅkpuV–½Ėw^"{|=™Gri–ž%f—&\ļš-ōl~š±õµzßFӑ²##Jµ‘P­$‹«Ŗ,Ö,nņ7mķ\eݹ“Pp sĻNkŗ³±QÄ Ŗzfžš=øŸ{™<ÖqVM5Ō‘ĶųrĀ8ÜHČ£äŠč/$į |Ųč*Ö„¤E4`C!čŲ♄hqĄŪ„®Ē¹'“R©5ļ\%Q5ČŃÅjŌZƒ[¢1UźŌ=ÅÜŃžļ ćė“Õ4“LŗF7z‘üĶanc”å#9«žŖčˆN)rI|Ī#Y}z)?rĢĖŽE?D:­ĢĮfCcƒ]uŚĘŒŽh9=N:妛uMéĶŽ˜®g&Ż­©¼&ĻOB7IfµÄ»X‘ĪjeŃķa#z+øķTu­]mœą™°2EaŽė—°;%LZߖ¤mĖe*RÕ=N—P‚>B:ĄøĒj¤–š)ĆŻ3®3×ĒO{wēoŁ<Ğ]·Mjś2‘Ś“JĆĖŠŃJ®‰£H;ÉKS„˜höŲ’YĄĪÓĶKgā}>& i’M‚²t?²§©Īe~»2@§ėöÖQ7Ł’4v­U)ĶjĢTįxźtė—CHöjÅńEõšA–y ¬0Y+†Õ5Ģ® ćĘ+ļPŗR;0éĶZĆņ=īJ®§ŅĘÓB.®™ć»uĒbsTµ@a˜ą³ķ^5Ļ6æ%½Īą cŠÕė“ąƒ c#®+ž¤yevŽČ)8(Įž$2j¶Ė/•,R‚:õ­m"ź .$hń‚9Ŗ±Ėo#–|+pµn;Ū;dżŲRŲīE]:1’½Ģż“Óq”¤¶Ó4«ø7\b4ǚÉÕ­¼'§Ęv#ÜKīx®kYÕg‘ńmP9ŪĄ¬‰üŪ—Ū#·L“ķ]*Fm§©§yā[{fe°µ†";ķV ’ˆÆnfĖKłt¦]i±Ŗ±óĆdr­sŚŽĖv<1Žź\-­ĒhŲß–Ó!ūB–n…‰Ą§Į.޼¢eŗu$šāä½Č+Ó­3ķqć!łĒJĀRqŁ‘” ŚHī'¹°+ˆ@SŽÕŸ~Łā>Żń\ż½Ņ66*Q~€ä8,zŌF»z=LŖ`u÷U‰ošX¤č5™>„¶\®ÜĶjłÜ†Į#­bjZ<āįž# śÖŖjZ#9S•=Ź×śŒ²6TķČķéYS¬…Ė«ĻJ–īĪö2ŁFxŹśTĮwå|ŹĮ}Į„:sJɧ5tĶ=ĖuŪ!ĆŌ֊ĒüØbOekwB¶ ą×Gk§Ż퐶:R§Ģ“±“ć Žß1걦vœīķZL,üąUkM*éī s] œ j>é<ņkÆŁK©Ćķc²emN?*Šć‚ÉQ\ķķŅBIf<ōėOÅz‡•aežP?­p÷wāwóU”ē®ź™Éؗ·²6ģē[›€ūÄ|ąfŗ+k;sśĀ†O§i4€c#¶qŠä-õx£f…fœčƦjžŖŽ T/k؉}Õ'šä““åm\¹(½u±ŅĖm}bFU‰éYŗ‰/ōŌÜģ\)ŪņŒęøkū’ÅxŸjibń]^tĻ‹ØĀqśÖļM'CoŻM}ƾ—ć{« [-éŒ §5ŃYŻéŚ„@K§29ÉĘ*¦Ÿs¦Gl7*{eEji÷ŗt ¾¼Vnū5sœÕŖF?qKQšÜ7xxŅ=¾„t¬ł­u;RŽŽOMƏZīt™ģŪåIļ‚j}ZįJ€Šłø°ræ»'sHĮ(ūŗ[Ŗ]ėŠvÉko*…ēoL}k™’Õg¼ū „Åūé^Ķq-£a>ĪUČēr⚶öĖnv.⣅=*éņGŗ1Ÿ7ÄŅž½!Ņüö÷ws,HČC[6漁ęVT\däćõ«Ž%ńa²™ m>hö”‚ŠÅ¹ńŠĢŠ6\sÜ[¹%ń+ü‰Nv\“ū™Šé^Ņą‘MŻķĶĖØŻ—aֶ䊼; »”p3^[«x†ęl6õ_J¾ń.­a(šYZnRIr”{(IŚOSŁßIÓÖ?6Ā(œƒĒ5ĆüM¼ńŸlVŽŁ¼²?åŸ9®2×Ä$r#±īǴ]v‹/‰e„}¾ņ7V謣Rkų‘ŗõ±“©ņFŠ©fū«žEq®x¢ęv@·eäüµ«„iś¶” ™å»/č3‘^Ļa‘4šŁ‘×;sVlu!`¢ĻsuŹ` zÖnēłšŖÕl Śł]{įßj×qłæi»…WåƱēߊŚx9­B–¹ø÷ ŻMz]…Ņ›n29ģjy1,cåĻŽĻZÕTŒtH櫲vrg›·†mädŲeB99sĶ_µšf‚īY˜Jx89ÖO,˜ĻC•ę°éåÜJņō>(šŁ}Ŗ–ų<ē½Lq”~Ś×Č'„Ä/…Ż>ö9_X³łŲ†1„›¹­?čW×y–7SŚøVćÓAām \*¬Vä7EZŁ}wBŗ“ņ¢•cb:ƒXĻ ó&Ś}ØŅ8:Ķs$“]·üO’WŅVC,×wRÆŽÜ3šĢƒÅÖwAŌi÷,ÉĮÄG?ZōmcNŠāGņ®āt`r Ž•ĒM¦[i·oŌ-b, n,8Ŗ’„ĖxŹŽ‚ƒŖ„ļ«śÜę/ 7ąĻl÷pe¾ćUŪk[˜mŌČ"‹ż©H¢śŚĘį]ÓÄVčAČXÜs\ŠŪ±?l–ģöN1ķP±1o—}śÓåW”_Ż”éś5õ„”AdŌ,£vb§fāśŻāf¶Ō`rĄćŸė_8x²Ņ{Ūc$qŖ6Éü둵Õ|M¦Ż¤d‘3ŽW9Ji.zM3hG?vMƒ±ōŠōĒ»‹ĢŸWT8É@ćĻKi¤ŪéņE>„,lFVHŚø? ė÷Öū‚vžµ©sµ„ļu©jK%Ģˆ‚1šŻÕ“Š”æųc)aću~šLĻźQŽĄŠY_­¢Ž<¼šē<+k6¬#·ŒŽAäWØj~Š”5 mī  gŪ>ā¹ķsYÓl 1[¤1I€UĮÅc7µ:(ĪPŃ~g§čv66:o»ˆLėČ2óšāüKwØ$ų¶»źÜ{W9¤Y.°Ŗó^\«žB£`bŗŻ#ƖŚxIÕoå=ņÜR”ˆ¹,šōcÆNĖž-§ų^ƒ^˜«“Ó<%¹ĻAZŸuŪ-9’ ¤„ĪyĀ€yéYz¾æ«G“Ņm ;Ž+?‡śī¹zŗ•ÕŌvńƒ¹²ÄŸÖ¶Š“›Q·Ģęö¶Qö²OŃ'‚ÕÆ.~Ó#CŗŲdŹ“üQć«'¶‘1¤ŸZĶÕ.4_éBŚkō3²ą’?„pÅiŖjŽš^DāC…ĀŠ%8µĖ9jT½ć £¶‡ÄŃ^J<Ā!ä“ZÉ­ŪJ8fbć)Ęk’žÅ··ˆ.có6ņ ·ō˜“k15ÅŹ†n8õśÕĘ<±ų‰ųŻÜY”?ŲŚß|³Kœdkń&£¤A!Ł) Ē©#š<_«inŹĒķ+ ŒW›xļ@ÖŪ‰$F9 ĪźŁ)Ź6ƒ×ŠĪ|ÖiÆėČļü=ŖéIpD·(Cś×Wi6‰3•€-Ć0źŠņ/†>Öµ;Ļ2ņ9­aĆķ:vo£iĮ`d…~óuɬ” ÷÷g,4 ž­˜śž“giBžbH¬qkcŃZ,±ć§ā;S–&xłäž+Ć~Ōa“ĻøŸ(xÓ)Ķ­8F”]õ,Żi°L¾\lrÜf¼ļĒZ5ĢN †ä’Io½śW¢ėL,Ō…•‹ķō¼ĖĒŗ¤‰ŗDgKphrÓ[³~ģŚ8jĪāŲc’ec`œō®UuµŅ¢ƒK˜ļ‘råOZó-TyƝČ>•·šś+i„`O¤3\5c5#У͵'r¬5MCTkeRåĒ%»Vķ®}§Č¶Ę †QĖ2]‡†Ū”hŃ_ŗõė]œP—ŃYīJČܒ}=«E;¦µ"2œu—‘āž1hmģŒ.Žwkˆ·“P{œm+ g»/ŠņX,›-ZIOĪŁė\9žå¦Tˆ9Ų;-EXj‹§_Ś+ĖCB[ō°¬OĻ€+“šķ¬V¶b'Ūs+|Ą°ū¢±<%ŌŲóG}Ÿ(«¼š'†o..<ķ@ż–äa±ø~5-Öʎ¢‡»&¬q~*€½Ųˆ@ėcį”ó]HŸfX”齗ˆÆT[_éą0Xd`‡99®?ž,°µB,Õ#ŁÓ€­ei)?Ąi&¹RūĒ7‡4Ų.iēwĮĖŲ²uė½#Ožæ7l×āæ¼Žcy¤=k€Öµ{›™HBĆß5>ŅśEģa£›¹ŁųæÅ,øD,0åW¦+†Öu‰ī¤Äm#cT'‚iFł$bHĻ5<(±B›©lu¬äō* =@Gq$Ū¤$)ćÖ¤Ų皸Jłcfq֜±—`7m÷ØRč 9;2ŖĘ”x4ݼœ’µYŗ‹ŽsŻM~ļŻŅ«™u)Ņ}PĮ† 8Ī*< `ÕÉŅ]ß*ŒzŌR!-Œ€Gzmč5“+ć+”ļJŁĮĘsŽ¢„)$`œdcŠœˆŌ’xcœ›V!į±ß¾iŅ?ČzkĻJ“66ÅCCL®F{Žy¦>ąųsš²č äp*"8åŗ sO”2zŒg;żhģ ’>”I‚r21Å&ӜØ=3Ķ;®£ĒļŹåAÉ)“ ¹žļN”Ŗ_ź9§Ä|ŽsIX©Ē’GCĘj¹ S WųO5Æ$‚Ej&“$wÉȦ· =²i¤Œćs/„#–ŻĮ=1M m؃N^“ČĪY‡PĒšw¦²|¹ęHi!’‚8Ž)’c<`šš@gžüŌ?*œ±ķĮ­;¢„d†š3Œäu§© Ē>ŌĒłHūŁ~ō“ńŠqSk™µÜr‚¤u V<|¹Ķ,‡åÜS[;‚’xļO[«[B³œ$SåFr0(¹ĪB¹O'Ś‘vƒĮÉļķU}vB®päžćҐ¶sĻ^鐹mn}}©ŖI&‡$Ń`®Fq×IØŚB>\‚~µ;¾é¤'<č(µÖƒ”»3/‚y¦‡%@‘Ē4Š›ˆū٤˜2åBö„°ć ę”t'œP'É8Ē5^LĘņCć½E€ą”o®)Śč·2ģ²€ēÆLÓVS“da»fŖ±( š01Q™“Ķ+ic=Kū‚÷¹ēéO/bG«29sž ŠU}¹å°>M R4— ;æJīyÜ;ÖrHŁūÄ {LXÉļK•Čø®ćÓ­Gœ7<ć×­@ĪČš3֚ļņ§§8årbŹAõ‡žįš‰Ür #֛!>H*OÖ© ¹!?7qķLf»ŠdLŻč$pqėĶ+žŗar ØĢÄ>NAnøØe8ĄhśŅ…,:ę©Dw艚_”ƒÓ¼Ņ}Ŗ8ŪåF-PČõ⚪BńÕ¹§dĒ{- kp‡•zē։f\u UM¹’1֕ӐFqõ©h7Z–VD,8Å@PTK}+0ž"›}:„ąÕå\äµ5i„±T'}ĶČ.ˆ\:б•Ė #,­ŒäW4“ćævĀ÷Ėx®IDZčSgDŚ…Śńē9Ļ=j͵ķĀŽ\īĘsÜ×?ö•fvö«p\F±›W#GJR{³{ķR2å·L·!ä\ž5›ʶćĶhŁŻBķĄŻŲÖw¶†¾Ęś–®Ś1Ā*Œ÷ŖŃĀģć ĆÜTBE/‘ŌÕŪ) ©L„tT"Šß²±?}³SŚXŹeąp:š»#i<śU˜²øĮ#½źW–)FĘVłķUŁUŗÉ“v>µ$QB¼“ücųkWWtd§Ī¬Ēǧ$Ąˆ™‹c’MgŽé“Įq÷_uķZö×ŃŪs÷ļUõZ{— ķ@E«tšMTþ[،Ņ! )Ą¤[¼(ź0*Ģ®¬½@źŠ3Šź‡+Z™|H®nįƒ՝:žźvĄˆÆ»WDf“Ś<Ų“ŌśÓ>٧&v… Ū×9Ēģ£joād|r°,åż0kRŹŪxēŒ•].a)˜ĮņŌÓ©GŽ$V«Ń Č±q¤ ˜Ž9Å,1CČÆ‚:ā²ī5ł¶¢:éŽ›is$®ĒfÜ÷-ĶJ…Ihօ$”¬MkŻI­cä¦k RÖu+×G ĘxČ8®ŠČƒĢ*Tžµa¦“IUzg#§Ōį»Z™żfoŻG;įķ!åø-0gÉć’kŃ|§ŖĪŖa*Ŗ:µSŃ5;%—żJcūÕŚh¾$ŅįAµõƉēŠå„Yčaį©M£®šēöl ”dØō®„¼S…‹ D#ąƒŠó ¼IbņŖ§=qZšĶ„ņ®öUä÷Ķ|Ö/-u5ÄIŲ÷čę1å”?#ā×ğ_éréČͱūǦkĄī ®‹M/ĢĒ ƬåšĘ‘}E?/'5Äų·Āzš9R  źĖ”‚§ūŗ³ĘĒŌÅ){Zń»īxL0[Åó*;µZµŌ-‘žéīžGPšÄ{0”†;ŠHõlgc0®~ÄD_ …=Aõ­XVÕT3nĮ¬9"·:ķetu~ń +*Ē,@ēŽF+Ō4ϱ̈́łĮP21Ö¼<āAÄkWNÕõbF”ŽŲ5ĻZŒÆzfźpp÷՟s„ń¤“5ūc÷1«qźk(]2Š®ŽłŖŗ„ŗ„ŗU—y§Šć¼–b±DI#© %Nš»Fyµī©"D¼¹Q€­œąsŠė¼=ɏ÷›šGR9ų4ä·ÓÅŁ @ēėY7^#†ŻJZý‡M‡ŌŠč¬Š'ńb·ŽŖÄóņģĢ‹ØnU H›Ž+“Õ Ōä»;÷ʝ0+Ņā;HĘ©fH]>`¼õéJŹÖ’&nmóEžYma!q†bqŻŽ(¾ŅäŽ7“čz×”ĶcĪ6ć! 6ŌF8÷®JmNÖ2Uw;’sQJO•Täpśõ“k»l7µīoM®^OøC횁—Pž/ō‰¶†#Ę³ćŌŅ÷nŒ8\€2k.’XŗŸż^X¤ R®ßĀ/c)GŻF÷‘c Ǿ^䜃śÕÆ“$p*F€t_Jäą{©@ŁøŸAŚ®Ca©ŹÜDģsX¾fĶ#EZOSRóP½ĮēŽ)¶ś‘@¤cž“–¾»ļže®jÅ¢E %UŃ˼{T;Z×ŌŚ5^Š‘]œą0ät«hŪ¢PFņŌYZŁA&'»Œ±ķZķ-¼ąĀ©·{5Ļ)Ęöf³Ÿ»Ģ‘‘‰būŠˆ@Ķ9cv¼e\Ę›s{ęHV"„ŗēµG\“E˜ ćšŃI-ŽxŻźÕ‚[YIYhDZ¦&•lĶ19Č梺]EbłBūV|ŗ~­!ä’Ƕ:S|Ķhlš_4īœV6FsŠYf&É>nŅ{ƒN:-ń9,ēu?ūćvcČģ+4ån„{©Ž-żĘv ŅFp“ž:Ō¶ņ>"4‡·½iA¢Ū@yć-Ž“¢Ńīć‘’hõ³JÉ"£Y.¬­cęƹ¹.?AœÖ”¶j6Ĭ’ķžµ-ց+ ‘ēfsźjž‡¢*!Ī˜}ģt©qm\‰VWźgÜj2˜ŹĆĘ 'œÖ}ÅõŅĆĢ»Ś»&šŻ©€¹‘Ų·bqTÆ4”nYŪĘ:֋ Ī`±Ŗrźr·š„¤bV<֕§Ś7|ćpīMmŚhŃ(,&ŽzUŻ=l­äÜĢŽ­iõež°äµ6>X“»€©÷‰=ė¶¹†ŚK]æ.ēW%¦jPćjr:€+„“"[\ŖĒž*£MS2œł—,“3$‹K·sņ¦O95”{ […Äc§jŚh/æę—5¢ ŚFpZ'%½Ģ £” ŻŪ[Øß)nkOM¼6ēɟga“ҹ½vP*ħiȧh–Œ‹€»sÜQ]s"½¤lłŪ:_:Uy—ĒØSŚ“mõ›į ĪŽĖĘ ®ZėCæņwI?ķV-֓|'Ā‚å†xā«h^±†5i¤YŽA­čʑe"?“éXé- Æܹ¦Żj·Q+m1‚3ƒW£ūj®\ø©é\ī·ć=:Ņ !dWŒ× āˆGx+!ŪéUł ó½bō=ZK«Äé!üM,š“öšŽÜūā¼f?ćŽ Ŗ×.•ÉĎGošŖ ŚĮ?kĻ`›\»™°qŪ9©ķĢīY÷ Ęp{׎éž&¹Y· Ą1Œó]V‘ā×tT“oqÅI=1ę–ķÕĢŠcżY ōĻ­-“¬\*"®į\¤¾)Ӏ #†nĄ£/ŒmbŽĖŒ‡<š|ŠŁ˜8Ķķłė£0Ėł}=VšŽŌ`¶=€Æ+Ö~ ^3„µŒ`Ÿā8¬{ļkH ˆO5L¦ŅŃGµĻw‰,!·óe1,`ä±Ågj~)ҬćfŠį8įz~•įŗ‡‰ÆeӌsĖ·`µĖŽßK.I¹= qKŚJH„…JWgÆk^;•®ˆYŌ§ašĀÕhü:öe’D \ąĪ gj6ö1ƒ‰qŌ×>§4ŽIfééPÉtdąÉ&O<ō)ŪK5ĶńIÓ['Ź’n8Ī+Rŗ”3l;sЊØ0Fsø÷55˜.sĶ7+ī¦ŅÓR„’Ī$żćČļÜSÖÕnāĮ'qÉ5Ņéś|sŪ8ļW›MŒ°ĘqS]ŽS[-Ļ5ÕtK…b"‘IŲżkēFŌr2˜ĮäōÆUŌģ±ø`«.EeK‡mł$s֭҇T8WļsƒµÓÆārH*:`6xŖ÷ u ÜŹ+Ņ#1lÜvĆvję™ŸēäĘa׎µŸ²¦÷FŃÄU[jy2ŻL@ۃR¾”1ūqõÆYÕ“ :ö2!i~8yą=Ҭk Ą1S,jš–a&ÜjFĒ3 ÜI<›vĶĒq[ā8įaē(@zź<7įXtųN{c«VŒZM±˜łˆ’ƒČ,EmN“JĶ™Jŗœ“ZŽ—J€Å²žsŠÕK@±’B©ö­Ä¶" J€tb³N3×5“)é«9åĖ7”†ńŪ¤@ųžk2žVe*‹“s]„½‚ølķś­E>™Ē“€;Ž­ė„Čq¶Čńļy†ÉOnk—ŽŁ§œ®Ņ“Ķ{µī—¦I0i–3·¢Ŗµ†‡ ‡o–¼ē’x¬ŖÓ¦ķļaźÕK݉ęŗ^•'پPplŽē’ÕZ6–ŽŒX Wms5œi˜qĒŹ8"– »eMņķó\Ī4’˜čöÕe“NZßL‘¦Rö«ŃhSĖ1Ē/Ōqł×G«b£tL¤õķŅ¢ŗń&'ŰÉ@ž“%O¦¦qö»½ žŠŽ_µ)Ųzå¹®Ŗ M`\Æń^a¬ė—Ķp0^%ĘH-’*k łī-ņļ.ć#”ł]’°šęW‘ėV·¶‹ *Ń󥵬µM=N>RG ā¼lO(@±'@"‘®o£eJsóg<ÕŹsµ®S”MĒ™n{Éū%Ä!æt8ҲuŻ(Åj^Ų€ĻĪ1×ńÆ5ŃÆļ«’Aœc5ŁhšĶŁ™T¤œÓ”jTŽ‹R~ÆE­4fOٵ&¼e–?,v&’āŠŁ\ī5čörG8S2 Ü>÷„MØh–-x¤¤ą{ÖŃ­ ކ3”>[=W‘įŗĶ§•t#Ž)Hc{t«hŽynZ{»čćCÓ/Ź½‡VŅHŠģ_jĄńf‚.!_$ČGL'j¹rŽ÷FPn1ŗnČɊ-3O³X’a+ŌsĶlų{N·Ō<·ū'œĆätŖ>šĢ‘ÜbMēœ0×{ÄZd~D ‡Q‚GOΰJNVZ0qę½īBtՆŲy›TŽ€VuźH±¶Õ$ÖÆMzņīY‰öĻåYZ¶·%”:ƒ¦EuE³Tžåk¤ø |¤;\ÕKY/-ē.ĢŲ÷~*Šń>™:‘Ō0\šEsśõė]M²ŃO–N7ÅsN„9ŻX즪GŽ:»=Yd¹H¤Ł$Ž~P9ÅuRŲ“VĖ+ÜDŖyĄ+Źt“-± cĻ<¶ŗĖõImĶ,„į=«'īģ\Õ6®Õ™ŠXĢRY—¦š8©/ĀD§‰Ęr}+›mJKiĢFTU«B×_°HöĖœOńb­sÅł(ĘJšzššŖBAI$`‚jKŸĒe^^Ē^µ.³„£-#,GėY7’Ų÷ŹŽl'sńµN?ZmB_ü UI­9vļāmš¶†nƒŠµį戚a»U»R¹<ķa\]ÆĆŪ=MæŠäšŻzžr*ž—šÅ,īsqtņŁĮ^:Āxg(“§c²Ž&)ėN’בėz¢ųsÅzrˆÜ+0ĪUĀ‘\5÷Ƨ·™ĪŸ>čĻMē5ŅųoGÓtõ+†† üė¢Žž"É<ņõŌ¦¹e>eę‹© 2|ōāāżn?Ń~D0×óD\ņ@jŪ>Ó‘łXn¹?ZݟɃ!īŃHźjO·éMGĢ‡øÕõ©-æĢēś«š¾¬£¦ųjÖŹÜ,J§#Vm’„ēžs*\H±zdŠŽ‚ņĪÜnYŻĒ£EAwāĖH†Ā’6zµ©'ŖWł 4¤ŗŲĒoA;äw/Ž„Žj֟įƒ+‰¾ŅP€½8ŖŅųŗ7 jņź+_Dń Ļž¶Õ SėéQ'>_…šr9I'-K–ŗ”½Ż“zšŌ‹KÄk ÜHō4Ęūū$K³<ķ ×ėVYɋd7Īüć?Ö¹ē;›rŹ7½Å[7'å&09xš’‚µŪyD²\]¼Gœ#×½ŃīԐė} “„ƒ^×aāi“$EXc‚4ŻZk“ū¦„»ṯXiÉs¤*GNMµó‡iį}NŽÉ×͊8PŒäĒćWu;-#\›Ķ1G9`bÕJ]Žö/6IZ …ŗtv†É;«x•yĄSZ:RV”%ƙč“Ō£©_Vš=¼±ę†ńĖó Æįm;FŃęiļn ¤>£©ÆFšŒ°5ØĶø :ēCǚ…/#)Ų„H>l?&¢5Ó|µ§oÄjŅ»£×[oо#i¬‚ßHƒ ¹sT4?ę_ģ˜d˜÷•FIŖ3ųD[ļōmd#ū¤×[ xb0¤®¾r‘äš}čöpz*—^L·‰ŗęt­źŒ)Ņē%™5Ļ)Qū)üĶć*“JÉ}Öįė« h·“†r½JÆJ‹UńbŚ4²fhņ År·7šŌXŠ&–9yÄ`UąŠõmCĢx­Y‰,¬Żk%üÖiŲŻB›ÖčŽÓõYnļ„–¶I»’X]ĆxŽŹ TµK“½Ī›æŅ¼r÷ĀŚŌ3ؚĮ‘€ĪRLńRųOښė¾dQĖƒĢI­}Tīµ:.<æ–Ēā+C×eM&均Ž,EI”xbĖF€ˆ,b>]͚‚[ŻZĄÆrīŪ„OēŠę¼{ā ¹[fŌòņQuĀ­f”eżz#ƒŲRŠrR·õęt±YłśnY‹`z ź|=į«V•EĀĒå±įIÉZš#UÖæ“’ż Ņ1ĘņÆtš%ž»,Jѐ ™ Ķg:•¤łymżz‡?“:įm:ÖQ*SŸ»“Š»o¢YÉ ‘c”āĒ5^ņöŚÖŪuĢ›ē‚ąV5ϊR+FņŲN®ˆT—*mœ¢›¹»Ŗ]ZŚÄaŠ>U®VēūBå±å”ĪK±ÅfĖāV’RA‡RkYńņmĖ¹Ž Ęź§+ …šūŽÓmš"'› ŽzÕN§K‘ša)÷TõÉŬ„²łĻ‚̽sŅøĻx¬ĖpėøW9ˆÉ-nhšĶźž†7õkƼ–Łœ äW™kŃßJ’7©ę½Ņä |ū€ū¤ē܊ŁÓŽ•p ¼ԟ˜•"«ŪR”Æb~ÆR1÷u<—Ā~ūl‰-Ę~^@=žµßx{IŁAmn±H€ņ‘õę½J}ŽTGTŸj]SÄZM ’G1’$T:ŌļdŹt«¤½Ż ^Ń%YÓ|'~7ĖŽk[WŅšføŠ0I$/Jå|Mń £€,!l|Ć5ēš×.¤™‡œ 9ĪzŠź«h!B¤äĪĻÄ šü³‡ŗ½t zGŒ§ØŸ 閆 kXK Ū½ŽIS^_āJх’b>öć\„ęÆs4Žs‘€sSõ©KAWĄ«Ž.ē³ŪųŠĘŹIÖ8cq‚£5Ļx‹ĘWa>Fu5ęv‰ØŻŹŹ É²Ś26$˜–^£5ĻQŹO¼ź§‹sW[ń%ć!HĄą‚=+k«Ūž$%sŻŖK‹£§SUV=żjT›ų#©s"ŹY[¬Eę›Ģ'°<ÕiÄ)ž¬€Ö‚ķ³’s޵^f?0$äō'½O3čŹ²z²Č†!hX’XŽ‚Ŗ¬9…œ| qŒ÷ ± zó„.AAå9©JZźRŒRŠ©:’-Ž:RÄĶåõļRMĆc·AH8RĒ9Ķk‚·Ģ8¾p 8ĒŅ¢`JV_Ķ>TÖ¢nƃg8-€x8¦Éµv¶pH¦‚H%sŌSåĖr°¦ŃQWV"›=Ž>“„Gō4ę;F7‘šŽ#…ėš–5{ ’lœTqPÉ9Č<ÕÅē;­7gŽ8ÜŠ›Ų”šzdpj…ÓęČČõqŌąńėźjn¤S‹±6Gx’H#ŠB»s‘ŽµhĀäwØę\”Ę5-÷*MÅhQf*xüiļ–@rqÖ¤Ś1Ōē©É}øĒ5NÄŖ—D;7tć½DČA<œc­Xä=iQF0Üśj\Į¾„PŸ»7ĢG4ˆ£“ėĶNØ„Ž8=ķNxö§ڋخWb¶ó“ÓéP:¹l)č;UĘ ÷O§QLNyēŠ/r^ئ mĮźiY>īļV%EĄŁœš’4uP:v÷Ŗę]””6ņzUr Ł<0jōɼ²zśSa¶Ū8ącš’Ü$š+ķU„œŽzŌ”w(ē­$Ѳįēß„5I č{Q{`#iŪĪ{S6 bŲƵf!ÉéĄ÷ØĒSĘ +±ō"ŹæxņzSdN=jb3÷O"’EéźiÜ9^äTłėJя+ŠŌ€€Ärzr`żŃž=iܕ¹T)PäŽõ(\ö<ŌÆH”óÉééP•eĪI9=)]2¹H.bvą ŌRGĀÆ^M] ’$č ŽNqŌSę¶‚z"£ÄUMA=¶cP¬8놫ä`Œ’}hŲuÅ5+hB»Ü„ !ANOéP“d6r}«VXĒ•»AŽ*£&į…$UĘWŃhB#Ćpx5Ā(Ū¤zÕĄ›IōäPćbä@É4y‰+- ŽJü­éÅG"ƒ8Ī:ÕŁw'qąŌŒ‹öpøõ¢öÜiĖ“{²E@ŠIŒ†<ō­;˜ĄéÅF‹ˆł=zU)u“)Cޤž94Ь:)#ėWv’ģNÕ.GpÊdIr²¤ēåé·Ę™ę'9ēžõeŒÉ5Üxe.OQš—aÉŲpū™ē‘š’ŻUЌ° ~Ey^™ō©bŹdƒĒz™EŪS6ŽĢjdž#8Ķ+ UĘsNœ‡*y]¼żiåNp03ŠVÓRÖ¤FC꫘Ęā2Opjģ¤4`ÆŠŌ`+r=…\eb$ļ£+Ioņ‡ yėLd!°sŅ®o-ø$ `—#¢›ĀĢ„®" Ļցm>ķ8(sK’}P™iŻŲ}Ķ“Ōʹ®+Ü|Aįż6kmńØVa^]ām!mnŽŠĢ=«*u”SmĀ¢©AØĶEÉīzTšČFsOŽŁ›LgŠŲÓtķː¹#Š·Nū¬Ś3ąY\esRŸ1 žjÅśMo•°#„SE¹sóĶLØŻ^ʑÄ_f^¶ŗ+€3Ēz“·$‘Žõ›­ĘzļWģģ&-ĖŖ;×4š·Õ0Ę%ń­īĄ„hŪJqžj„¤I‚X³UŠÄÄt®iąŻ®uĆ”³£Ī7€Üäz×M§Ē‘)$sŠ×ĄVʱé÷Ŗźj“€¹kĖÄPšųOS ˆƒŅhōū +icTØ\ŌzʅµWʐH$ į4ķZįdįČ÷®ŽĆ_— ÷Æ"u±Tž‡«õ\5[Y“Ź÷ZT”ńåō÷ŖĘĒhĘÖR¾•ŠPÉÉ “ėI;¬¶īŹ ;qÅiKQé4rץØü.ē©ĒƒņõļšĪ`ĄwĶt:«Æ%Xę±ļ”Ą ŠõhĶ4ySŃņ™W³×n ę®Y&ūˆĢOzž-ķ€;JńŽ»į©ĶSĢ Ó01ĒŅ– ›ĶĄ$±«–C KUžŃk£`g#Œžõ£§ÜŹŌu‰£SHp~LQtVßsśšm¶¬vm āŖ\Źe}ĢĮ3ėN4’Łʾ·¹”ż§!·ŲI§*ŒóÉ$œ»Œu5\ąœ)'ŒÕ«EĄŠq„ܙāl“+³g #|Ƨ¬2'īć;}k@(Į8Žō×g(q!U ®ˆÓīrJ»hŹ’Örų'oŠÖމ¦<’æ,9Ē­,%Cœ’{škgC"š0ŽkI“£d:”¤“cõ›)”³FA+’Es«hĘ^wŒę½ŽŚ$æÓžeEŹ÷Åqśž”¦ą¤DpqiPÆ ®W£FxØT£S]QČż…13'ŲÕŻ9b²q 켌šÖÓ<=s$¤#‚Iõ®ÓBš’ĀāEō­ē:pW‘œ9åšœ ×ļ·arƒ°±„_Ėwƒ+Kœv5×ßxKK³?¼p8Śk"žĘ _øĀ5źj)J•I^,¹JpVš‡cØSU®ć‰@a‘»ŒJ”w DåĮā³ouØ£‹åĖĒJčäw½ÉœāŅHč#–HĄ Ĝw=©®KĻņ©®óÄsÄQćŒdŠĢæÕļnåŌõ T®TüĀ^ŅKsÓVźŽ<ŹÜv§ N4^Žõåö—×Ił‰©&ŗ»a÷žōŻDŒ”-»=}k#‰1J‰5‚ųē1µÓ0ĮĘz ŪÓå"ø#е]½‘^Źńŗg^—²*å\ƒśŠ±iw2`™³gžµÉCpžaĖrÕgķčÓ(ł}+Fь’HėSS•:Č:zÖļ‡üE%°RÆ+cœWš Fܑ—śę“ō«ĶĻ„|zā¹ŖR„5fuŃÄפļ{÷†|mq4B<†?‹<Öł’ F"īĄ8Éjš&ō¬cē,}Ičk§Ń5W\!˜r:)Æ2¦W ož–‡¦óoZŚĪ«įŪkØ[å¹÷®]š’”,ŒS‚}3]krBŸ|š1Œs\߈üC>$y(­čŹÆĀÕĻ:„)^œ¬ĪORҦµ“-“ЃĶGƒ'ߓPŽźS]Ž0E‘Ē\•N¶żŲyĘŃõ§V’’ŲėĆb'i»šZœ—r(HŗóžÕ龚mģ¦9"_ō® JŌŻ”Dą(źGzõ߄-ņ.cEł¶žs^V*3§+\õpŖ8‰ØsX쓟 /”«sb20EtZ?†ōˆOĻ qg¹½ š®™Ŗéč³łqČĆ®p?īm“HŽHļc Žyƚ§˜Ź¼ż”$ć.Ēf'ę­Óź?ųē„ۘ6ŚpŖy”Æ–Õa© æé]ωõnœzT÷uFlśžĻ•¦śfŖĒØĄŅ|Ņ®{ņ+/[ŅVęģģž]Ēߊ“Nšõ¼d<ĢŅ8ć“ÅLݶ6¦ąÕäi^ĒoØÅå¬ŹAģ+š×|1t‰žŒåT“ĶvzXÓ¬\ ÷«wšÅŸ–@!±Ś¢5,­-Œēߚ“<ŖĖĆ÷¬Į73<üµm“¶S¾IšĄŠī’·mcĪ#C‘Ą„ŸXVˆ°€"žę”½š÷’6ƒ­?‰žu‡g‘’€w4°heŲÆ$¬½qŅ»ÆZL°DŽqP}Æd;Sjœv¬%)=ēO•jīd Ś4cŌU#Cµ¹É‚Ś`§ųŗ £«^ɝ #܊K}gSā8åX£ ¢ŽZ–ŗb§Čō‘ŻézE•¤XŚ”Āć9éV £ˆĻ•"Ž0xÆ9[ŪʓsI4€p8­+MVöWŃę±ėķDŗ+Mo––Elz÷¬vŠ®ć”āW`}čXtֆO.Vģ[æk©'+ Šb=8Å>ĶnĘR[¦@šŅXiÓĆ·{±1[śQ·ˆŃo—8ł«9RÓŽFŹ¢KŻdŽ j’,’Ÿļ?5ŅA§Āåqģ}+iuQö;W×TOł£tF(śäS§AÆz×#ŪūOvö5µuKޱFÜõ"³ć™®2vķĻ"¤ŗK«„V›*øĻ=ź:‹qĀ““¬Pn)Ü'fNK1Ó=jļ‡īnZ@¢W8wķĘIfo zśW_kIoūøö:D_6ˆr|šČg”n®ÓōŖ²éNŹXIŒśš³}rŠ© ¤¾ŚÉæ»ÕdD˜÷•Š£(­NIŌ„žŗļt…*Q§uĻ\U[oŚ¢|ŅøĒ'ęė[še…żĆ~łˆĻJ×]3lxbĶ·æ­.zŻ)ҌW3‘ĪiöĀŹFĪ~õnA$ˆp§`]¹ĒPĄqZĶ Ģ6į’ TqŻĖ˜ä·XĘ;qĶ $Æ nNҲ+$¦ņļÉéXŗŠß„ĘŅJŽŽµŁXj)4Š’“j‡¦+N[ 9T7ŹÄóĮŠÅEi4[ĆOāŽØąą·—Ź]ŅŹX®y5āKK§BC0ŻÓęÆC½ÓaÜv³/­eŽY Œ*±äf¶§Z&U9žĒ‰ų“F¾ž]¾s/nø¬³ąė× <ųĻ'šö=kKF9…Ɖq„•v"ē$WJQšŁĘu ­vqzgƒąŠPĶtŁčNk”±šĶ€9’é[= ķłR\é÷źĒĖ// «Ia|ŸėehGV±„' GąJću#5ļ7cJūK‚(‚C<_(ūŪ¹®Rµ’±» ‡¦ÉØõ¶|Ó^Ž÷³Y·—V±)żļœĄgqؕßĒ`¦ģķŁł僗 gvzÖ=ÕńY³øņ;Óµ]N&'jõ$W1ÆÜł…ÄY=}«8µ”ŻEĶ5ĪŽ‘/Œ ‰ļšŠy®^L+²÷Į¬­7’9ŚVµ"ŪĖ3QXĘ)½NŖ•œcx•å–fćN¹§ 6ō$ńڦ¼ 倫€Z̹r§±[ƊKCÕoVĶ8µ“{#`ėšŪŠõv‘ƒ+ąd¹9Æ<–`ĢŲnIĒįSiņķq±Ü’rqYԃKC§^/FT¼¹Ą`sŸ›¹}JI’GXŲFjoŹĻll猚³ŖXĪų+×8ąvŖ”w£2Æ% QĪ­Ć#”<’)’_# ėėZŲ÷g?»#Žžŗü3©Ę:“Žŗ&cŠhĀ–w‘N22AĘi¢YʇKāXdµ—÷c88ÅdnÜa#9•Dā‹¢ć=ނ٤=³žļZŚw˜Ø\žõĻčmt9d|ØĘ1ZņŪ]Ķ•‘”°Ø§~„JIé”Ńi÷SÄ .ņjājżģˆOÖøitŻE› ,’čj“Ö:’ĘCC6Wų¹«jÆH“J:JZž>¹h6¬›K0äā«Owc!żÜ ;qœ× •ėF ) ×”¦é÷€e‘‚÷<ńXĘuÆceG ÕÓŌ蚏bEžU\,© ~QMAwkĘā½óެ[jy#u³Īŗu·¼Œ-gījjh’>Į“2€:Œ×IgęIÖ2#g‚}+@¹óćĀ”VĒė]]ŒR4 ņ0ć®sU#*Õ½ćœÖīÖē%šHŗqŠÆe~žzȒĶ]£X;ŖłŠė‚)ė”ŪI–`ĆXā·©Ź)_SžG«¹‡cr$•v²œūÖĢKĢåäā®é~‚ŲnA‡oZ¹y£Ź‘,äćØ51‹Z\nŖz„c=- FHĀłā¹ļizŒ¶ŲōéÅt¦Īī3“ļąw© K€@;‚’Z½WB,–ö<šėĆśśĶ#H³<žųsTv]ŠČązœW· å œw5bŚŽB2cĒØ5.4䵍‹Uk/uĖCÄ$Ńu¶eżjkOÜNLYwń°.E{Œv‘;ā =éVc³ƒå)yW<įŖ**-5kųŻŁ,Jc>õ,:́6ÜČŖ_Ŗ“Ö¦Ņ>óŗ'–œ½Ųžfü:v‰;/*I{ ņ+”ń]–Ŗ& ČŹĆ]vw§¬>d€GĖŽ)÷^ šų›l÷qŒu«XˆĮ·-Fšsš÷§jŚVŖłHb!’ˆŸń«~š¾„凹™Cv»Żč—mž‹Ø"n惃PXZˆH“ķ­:㌚\„%īŁ‘,5x;Īčćļü1«=é…*OŽcŠé¼-¢Į¦(“R)$øĄLńIØė¢q¼‚; ĖyŪU˜$m&ꚣĪ2IŚĘq„ā„ĢvMÆż–ä {HĒŗV.­ād“-öõyO÷Xu®k_š&·w:˜oLq²ó‘“K¤|/½ˆł—rĶ‘“ƒēS89;¦‹§Z1šjŽEį«ß^H|‹‡R3»‚k„𬋠k›¢¹Tz†ZŚ1h™œ€s]^‘i RK˜”Œ|Ņe*PKޱ¤q2““É”Įw/,ē”'vY‡Ć¶Øƒc;ū ӆćKŠŻ×ķ«#cīīHŽB°€0ÉäēŸĪ²_³ #IŅ•®īe붚„'˶³PB?aÜhž &’EŚŻU‡Jź£kķ®m GYO­`k-āsTpFr­ŠÖ ĖD—Ža/wķ~ß éń VŌn-#už85Šź6“Ś‘gq“ œkĢ5M6żTMqvbä ’*¶ÆgfJµĶ܄¹Ą5£§8«ĀJßyjTŖ+I;÷V=? ³HdŸRf“®š1R^Ķ…jʼnŸjõS\|3²Ų±309ķõŖŗŸˆ,neP|ųwśµsFnWSüŚ”©7÷£V’Ē1I!UÓ^WN+WĆ:¼—‘bFĢr†0>µĘ[Ci$ęc3˜ŗ*Äž3ŃōĆä°Em8~jœ)ņŽbŒŖIņø+Æ‰µeÓmm„±ĘŃŽ¼wĒu8wŖ}”UIä+k[ų‰£Iö?1qŒ“’E`ŻėŽŌsŗĢ”aųbœgBÖ©s SÅó^šNŽg–ėž>×%ø&9ēR}Ļ"©Ūx’ݶģėø`)c^—ysąčäU{MĶ÷xÅYŅtO ėö{KWVnąŒTÕĀąšQ“ßČ裘c ÆĖ·š8māWˆ`ę{ŁE¹éN¶ų‹­ė7^T—Oa€AąW[ćæ…ŚY¶ŗņŚAó)ĮÅUųą› 6édŽęBFāå\ÓĖ(/zŽŸķŖņvš?ó0īōŸŽ[ļžŪøHßęlœW;/‡ā’łcŸXI˜šKE}(Ś5¤¶F(ସÜ[Ę¼»Ål“WóķÆY›ęBüV”čŅP蟚9„‹Ä){üÜÆµŽ3RšLVŚcÉm¬•¾dŚõĢŲĒā++æŻ¼×&6ąņzˆü-qä¤qź(¤­Ņ”č÷ö6ĶöœŲą‘ÓńļS5 FÓå‘p«5'(J_4t>ŌÆ…‚ĖØķˆ‘Œr)ž)ń~gYŹŹżÅyĒćŌö÷U Īyī·e¾ėi¾i@-ĶiO”šh1Ф½ż_’=RohOrĮ­āš0 +_Cńχc™[ Ŗć&¼&} ÖČÉm ”Ą ~U‡į­züonQzī‘‚óIĀrZT€é×§ļĆT}?ōKŌHāķŠa»Ōśå…Ö¦m KnĄbųż{ׂ^hŗžj²ŽĪ ?d~’Z„o¬‡“h’ā"8-øę³qŖ£kž_”¬g†~ż¼ üqiB&·ÕŒG8|לjR¼żž³pŲ’lŠē49%¹»És<ŠrN}+µOŲQ­¬ŽPĆVŌ}õÉ;_ŠĀµYŅ÷ć'gŅćģ5żŹE|ÜM>ެäŒÖ“ß&ŠŁmķącéøüė˜ŌüŒŪ—ĢI”`3Ÿ¦k#ĆĀĀĻS’ Ų’0I$u„[ ĖļIéäU Ā\‘ųŸs®¹ų«ŻķŠ8#sŁU9ŖW~*ń=ŋĘbxѾņž ]Óµæ ŲĢ^0Üü¼c­6ėŚ]Ł‘<ŒØēƒQŅZŽL©ÖÄA{±Qłžy«^Įس枤ŽA'­J5ėÉbŲ­ Įmķõ«:„•ķõų{k)„W8\/Zō’†? µKˆ »»Š+5a–|¼ÕĖævöó&ž=F7¾§ši—¾!` KtĆ<ĪkŌž[ųĘńCi5ŗYä8õ潇º“¤6ožDcŒ( G‹¼e¤[[2ŚĒm;FÜc}_“åŌ—ŠÄJM[ŠĄ·Ņ&…õmFCĮŹ« 6ėÅzF“†Ī8šAüMÉÆ'ų”ń Ģ‘ć¶`åyÆ'æń²\—iøeĪ2r+g({ŗŌłœģõ=ļÄ^=g¹g"5ŁČ@¹MSā­:žębKqĒA\Īæ+՞›”M­b¾ćč#Ęńy‰'Ł­ßČ+^ēĒwsĘȒ‘ø æē„|˦k,—€=0t­~ń¶¬JGŌõØē›Śķ£I3ŚuOĖ!Ḉ֨ϭ†#t”BŒaO$בĒ}ØJIb1ü6Ś[äĖ9cšĪu%{2åBžéÜõæķ!łdĄĻRÕR÷Wµ‰›0!ŪÉĘkĻ¢øæņś•ćļzÖ]ś]M óĪ{šÖ'²G<éĘ×¹³ć“ŽÉ­Óo+½ŌÕ›øÜ)ĒNrĆ1–Ļ×4č4׎K£eZ'̵eR’²KSf]s|±•b”¦­miŗÜK§!óšĖÓ|35Äjč['®ŖŪįķŚé±¼÷QĘdćĖbżkŽR‚Wr±Æµ_ƒlä5mu¤½|H¢1Óiķ\ö”ŖJ÷{€‘—øē½z<ž ²¶‰ž{ĮżÕ&Ÿ¢ųcEu2=Ē"~EĘ;ÖßY¢£¬®O²©-T4ó<–ņk¹"7]Ʀ3Yši—RŹĻ)uÉ8潩ŸB“GSmģd…%’½O×tė™gŽØB(ä“XwqKĮ€īky^I$õ2ŗÕTBź6¢2|©Lōłp*„ČŃį ŸS޵ōĖÄYćóPI `wsđ5ܱµµ» q½Ą÷”T»åł-ÅéŲēUäģb@Ļ4؃$…š6e!Y‡;©ØT(ƒŽqV—R_tFĄšéüŖFŚĀōģ®q’)6.r±éCzj5'³©œSq‘ÉłqŅ‘ĪÓņ“’Ö¤2…ÉĘxĒ+m{!‡n6Œ€½)Y^1łÓćÉ!† śT2oFĄäc­™7aģ¹EŲėPN„ׯ&āĮĘE'QĪīåIŻIčA€«‚I9Å=OīšœÓibW®zԘWęüh“ŗ"6"f;Š*‘ļŠMŒ,§5/Ż9 qV|Ųݰ˜éK­Ž×eׁĻz$R£<óŲŌĪæ)=NxÅ5°“ŒÓm•t@1‚O\TnœīØüŖlĘĆ=ˆĮ¦GĶŽ¼fˆ²vdJZ—v/RO&— ##9ęšę$ri¢y‡M§Ÿ^•U†$ĒĶÓ®*É’@Ēz¶})«\¾f‘·9§lEIĮ|`ćiQ'’8ō¤Ųž¤mŠtĮķQXä„ZÉXö°'= ØČąp3Ž“F夒"Ę2;žœŅ•'ģ1O1 ŪÑА½ČķUtŠ_MJŅ(Ļ'4 š”ŒI€O4„H`$‘Š ŗZŽ)½ń‘ĒZ‡k Įłä}(z¶z–o›np1L|×Ų« 223Q lōĻšHĒ=rzN\޼øĶR±L‰‘ Ć sļI:)R#Ž2qS ­Ž)ēr9ĶK} ‹V+4@D2ĒŽ¼Ó€7äzU¢£<Ōr)eĄī8śQvD¼ĘČ«· 'øõØć,›‡¶NjÕøŚ€p ÷„•B1R>“_ ł]Œ÷å,§N!%ƒg'„=bBł‚jŹeAr=i·e (÷3ęXē śT.9ŲšķQC'·(²Br 沕{ntF‹} £¾ĮćÓ±§™üĘ·µ$V9A†ķN–+J橈¾‰“é$µ$2 £Ÿ ĆÖØ±bß.r*ޚ¬×wʽĶsø6uBq‰­fH^„dTŠ\”—Œ{ÕäHšŁDxĄ“|æ*“‘ĮšĀ)­Q§×ł$oZݜ.÷­oß8æOāMýqVÓJ\( Ųšį›ķØH!ECĖŌSŗ4Ž`ÜÖŗExzĒMÕ|>>Ńn¹ Ō v® Äś ¤Z£$īĀ»o†wō¤C·¾8¶øX÷ĒÓźkÅ„9Ń«(t7ĢéSœ£R*Ē ŠYŲZntDė‹ń~æ ²lc=Ķhxņó`1Ļ"³ć¦¼žłŅYĻµ{”#Rz³ÉÄN? J·²ÉpŁäńšKkgr n8«‘¼QÄxÉÅCqy&ݱDF;‘^œ!ŲāF“e„!^¤Ÿ­BĘņīflūšŠÜČčwīÉM^µ|± ĒZŃ#ōŌz”‰>@süéŃĻ'šÆJ‘m߃±ŗpŲėO‚ŽBäoTĻ­ZH«ę:ä8ę£Ōp>•jīČ%¹Ü‚1ŒŠĄ¼Ÿaa_ZWŗŠVÖʁ‘W OŽéd?A\ä#Ió9Ķlųr(Öey˜Ör…Ī˜§k£zĪīż”G³ĆūÕ³¦Ć$Jāv#®ĶgÅq°ŽœzV‘Ż͜uükjtcR"¬›^ū4ōU`øł?Z·®xŗā5XćgQŠĄ»’%»^}O­bź;¤l•ž¦L4j;±SĒN䁺|Q;½Ž«K¬=ÓlPņćV%­«K6ҹ^ł®ļĄŗµŽE§/–H5Ŋ'-ĮśTņ&żę»½¢ŽfĆNvˆĢ ģ{ Ö³µše==jäQ±GŹ4ųŠG Vł½Oj™F;ʤšÕšB\;ī’` `Ķm%ņZ(;°}AĶS°edPJ‚¼`µ”1Hų1äćéUÉ *·Ń“żWķ/ņ,ŒŽ¤pjåŻ‘½Œ+« ¢±A6F±­%”` b2?!E)Ża±¶²÷[C‘ÉĶdÜ&½ 1Ųx­{ˆZRęéœŌ–V®­ĄķĮ­œSF m;Ün—¦“¤ņ…s]惬Öß +ī s–É*0Éaž¦ÆA¬Ō|ą!ģkž­Ź<§eT¢ÓlōĖmZźŽÓ÷3Hię¼ßāF±Ø\H~Ńrņ"Œ`ę®i¾!·2l ù¬ˆ« řšĪNZņ~”ANĶYxœ~&Q¼āry`Jīõ¤øšŽdp‡ė\ķÄŪ&ŪóóéRA2ށ€Zč5 SöŠż ņ/;Nā:S ½;pÄ)MVI¼äeŚTcļY³*-ŲC·©5N7Z^Ķ–µŪ—įŒƒõy\ 廊»{Ź傁Į)hķ" ‹¹‡~ÕPŲĘ„K:~q4ymŖ:u­kmGÜłēŠēÓ[’aĻ÷jöæw4‹óŗļZ§=Œ5zœÖV°ĘÄČ9j„½‚DFš ÷ÄÜ^Ž\.ČĖ÷9ę§·±u“ó®e!Hū óB굤Éi[MކļVµˆ¶‰¤“¦ECiöėÉCHXFGN˜Ÿawg бD»3UĖĶj(Ü o¦(VZ6T‰Ä×°±‰7± pIĪkfs#v=Xāø6ńˆÉōØå×ļ€jć’;ÖN„ōEʟVĪīą0ÆłU)u©ģŸĖRHaž+—V˜‘3…#’zŌqÜK“³¹-ŪŌÕGšöhŹÜŽķV£¬^\¾aUöŖŃ\n ¹É^ ļYŗz¼ˆ¬Ū°ÕsČrŲŽ6ś×J»ŲiĮ[SV{móĻJ±F@8ć¾=jµ°Wā]Ŗ<՝OW“‰8ø 9oZĪÖv3œ¢öF²CpćŲz×G¤4 j¦W ŸzóOķČUÉRA­R¾×e—…gąb³ØÆ¢eÓ£(®głžå§Ķ„ģĒČXw©å¹²UĀ'µxåä*g8ÅO‰ļM§p$sč*éÓiŻŻØwGø„Į,6’£µZ+,©€ēžµćś&±Ŗ]NEöŠķtūNR2I“[r“Q”ą­¹oWKønüŹ€wā³§»eC™‰#ųsW®bÕ®ČY˜Fp*ģD‚!ņG$­t*|Ū-L•g$Ģį,²6šäé“R }ܼĶō“­4Łf  ©P49yYOZĒŁ¶ģ9ÕIhVµx u;wc±ėбŖ]O4"‚4_įKU†ŚŠińĒ\óY\£NU`:äśTΟ+Ō#9Ź7±bC¬°)m’sLŃu»–ĉå‚1’qW4}VĘÅ3,ŤeįHéų÷­˜|L²Ē²¹Ū‘ģ*\Ö±RŸ4mr®į+¹šm„‡ń­kA ̲” =+ŸÕ|Cpˆs!f’dÖ:jŗÅŌ€B­±RHĶtKDd©Éõ=m>5(øf>ÜžulóWŗ•0ņ£¦XęÆĶs¼œ’_sÖ»(ÅĖā9+._¶”ā˜įƒŹ€a׎‚¹s[ši 4›{’8ØbU‘īŽx®oĘQ¼6ģé!ač:×Li§¢9gSUsEµq×/»±ęµ“ß}š"¦č?¼kÅ®®oĪKąœj8Vįä ū±žõÉ^ŽėGu)Ź×Lś ĒĘbvx šMhɬ‰ąeDĻ-^ i;Ūƕcŗœu›˜ä` 9 ć>µĪ”(ģ/½ćŚ/µ(°’ź1Žā«>±¦ ϘŹ÷5ā7ŗ„ČĄ³ŽMVŽöLüĪwq‚+”JVŠĒ–.źē±j¾#!ql…xźµĒų—TŌ&vˆźOZå!Õ.#eĪŠjėjŒŃœ.AčUeö:Iź™]Śģ7ļ} ?Ϋ̲²r÷53Ž0RXc­VžõBBō5^ėRŽĄ¶„”1fŖMhŽyR„`f¶,.Ź…ĮĻ8ēŚ­\osž­Ā1WhŚÄ¹M;˜öVīcĄ$gœćе4&Ż ±>¹­+8‰p»[éŚŗ 0Z&ØĪęœaLŖOfĪ8©±’7'Óü*µähąŒ¼p¤q^“ XJųņÕI85VūE‚y·) ­# ģȜßTy>£oå¹ŚN­2Ā6+‚Ų>1^…«xe~i‘Ųf”Š4Cø/”Ź:`Œt”įē%¹Tń¦¬ÕŁOC>_Ź”×Gmu")ŪćŲÖ„†ķ#ĻzŌM6#—Ō Q —Rjb\×¼·0’ęéćįsĒń•O9Č1ü õĒZź”ÓĆØł ˜Š‘4ļŻ’IēšÕ¤•›0Œ’–Ē›źV3Ž\ēÉŁ<ž•oOŃm–6Äd°$ś×¢C¦I°˜äÓ@•TĮÅ%knj¦›ģyÕ¦•8øĀFO ։ÓęŽ Ģ1ĻڻȬŒqŽT7Ć¬S8Īj\“v Źē?cGœ!Ē\Ø­coo%¾ G–8¬FK(™‚¹Ž8śÓ ø„(pv±Ēz™ÕåÖį(){­ji.‰» wz ±§čė m# ×ŖPų…mmÄa¶÷+Ö­Ūx– I†xēŠÉāÓųˆĘ6‹ūĖϧZJTKʁĄ„X¶Šōö ˆĄÉ<Õ(/VI·$ė“ÅmY^B ÆsÉ’*Ś5żŻ.Šģ%ž‘k€ÅRx?JŠTXĮ *[VWbą‘ÅHöģź0zŅu[ÜÅҌz ·1qøĒdW&—D¬„‡ßǧ=ŖBč»U¤Š£sĢŁ26Ņ [r¤äąu4ģO:źj¬SzšYķ„Ė€UY}H@Ėj IŽž•ŽĀ­÷ٲ:P¤Öćœ9­ŹĖVöan‹I8*‡„^{ØaMŖ {Ž•Ģ\nÆ1•U{“Š»ge(”™&Ž’^¦S¾ØZŅę½ŚČOŻŲö©[Īņ²…)ÖŚlB4;?{Æ5}m u f Ž8¬g;īm®‹SŌąŠK½ÓNĮ$Sć[TDR¤ <’k­m+OvÜÄ;“Dž°»„ģv}8°—,¶fќ’åµĪvéą¹¶1©ˆF8 ;Ń ŲłR J/Nzv”hl Goļ•ĶZŠ­g•K\JA‡Š&čS÷µŽÖšĀÉĖ=±R-¢•Ų„—= GkmµRäŅ›Ø_żœØģćŌq]Prf\ńŠ÷˜æŲnĪ_ĶŻĒšĮ×<7=ŌųuqBGJtž/»·¹Ūöfš\dÖ¾‰āY®ļ­™¢s©š…<:ŖÆ«y³‡Ō< mięø¹Ų£vŠēŸję®§Šō·k³±-н{n­«[}•QcŽĒØ+\®»¢[ßžżģw;taĘ)}aJ>ņ³ō³©MŁ»ÆSÉõcosóÅe&ŽĶ»Péś,r+G7ĶŃAĘk“×t©`"$·(ųÕ{"øUPūń¤äӓvOp„Uj–… A™“”äŪ¤†r:½¢h„3†’w įQ[:„|±ł[$A÷ˆ­”¹’H°/ Tšżk™TV“ֆ“ ī§NF†e–$•ńWEöžĆ.šg¹ W›ź~³q yw„=ż«÷E½IøÖYC»u:)’I|Ā5££Q7ņ=WT}.hä wg;@Q\Š“›€VęŁVF=2qUō*8'>ŁpJżāł®®9U’8¦IoLńÅua¤ĮŒ½čhžGe¢k÷Ņu#Å Ŗwž·2–y¦3“ņd÷Æ]Šź­ĄŠ9 # „3 L­ hO##ӅÓęHuKŽ—õņ<ßOš5Ā*nF}§ Œō÷®¦ŪĀ[ –å­ˆģą}Mt’ŪVHPśdt®SÄ> ¾’öYćVÉåæ„[©ĢōJä{'m$ģnZhz}­°Žl\2õbAĶ*Įe „ŁŚ,lG\€kĪ£ÅwŪŽ䐷8©­t?y›ŚWR[ūÜ Qö¶Ņßx£:³œš~Œō /.­aȀH§#ę5Īx³^ÖWŁ £q€*żž‡¬>žŻź©Ēpk;ū9,ē uؐ£ŠąS§i|kń*s”“„“ō9¹5 rv’–¤·<Õ[Ó­}œ³‰›ƒ]ÜZĪ—erÉŖ.FMXOh·lЈ–W=6Š×ŚRKᧉč×äyŽ–oŅįD²J8Ė7jéō/^ķš+©XFF'ŗ÷ŃŅł[ŁKøÉ.kfŹĘ}2̘­—~Ż£åĶL£ k(Ö®—¼’Sž¶¶×Æe1–(GĘ?*ß·Ņę±±,³™§ĒFäf¹n’Ćą¬jaRJ‚LĒć €Ć,d÷ŻYJœį¬"¾óZU!Sć©ų2Ö½&µ$MÅØh‰ą¢ƒX¶žøŌbf.cųJ’ZŚEń%„øŌšų$*/zW «xćÄ zc‡N’#оzÜ·„?N”ź(sÆŗĘżē„ą°„y“*KŒcÆ=ų„—¶+¾(üõ-EwÕµRTvīńŽųėZśŗĮ$B3a1qŒn#ó¢¹øžņ65ž —ąŚ<·Ć:Gˆu½-•ŒÖ‘øČ/ņÖtŸ®ÓP&}R9Jõ\‘š÷M'KViD}Ņx§&gq!ŻsnOCó`ҧ‰£řøVŗp“>jń†5»KlYŚo³äŠÄš¾—āV¹dŗ"ŗHÉÆŖué¤nóŲ”ą¬rV¾ƒ£i)jĘ;`¬z< j*J”•­÷Juļfžōšt½:īēYŽÖ÷J°XŠōż*ĪćBŅŁ­čĒ“^›‡Z{“ øA³• QkVņŖ˜ē(ńž+Ņ”'MI(źŗ«‘R5v“oäx»«k7WīZIc'­?Ć÷wŖFļ“Fsóg½z”Ó“ć#īd œäŽ*Ņh°)_‘Ÿ¶ŽĘŗjJƒßBiT­fŒVÖ<«E7WDøźĶŠę5«żīįUu³ž¢nµ³ńƖŗĪ–¢-L[>Š:cҼ›Kšģ>$żōĀKpÄł€ć"¹§JŠē”5čĶ”ˆ¦ēɈŒ—”Śų—ĀŠźPkRE›ļ)ó üń^wįo­Į1_9Dī„ó^Õ i«okū  ·ę'š£©I«G#¤VČ=>“éJ\¶©/•‚Æ:—īźÉ/7s¼C¦ųŠÉ8¹¹ó8ū™żk-|?­]D[Kė“ĘE{͜śÄ—ā+«8 LŽIü+WYŠŚ-4“3Ąg œnĶ_¶¦Ÿ#…¾dZ»N¢—7”óœ:N­i I Ōk×;~SZŚ ®½ö€b”ŖpĒŁ®čGÆÜźŠd’Į­ś8wš7…āŌ­QLŠuG ŠĘ²¤šV~…Ę­gŖ•ķäx/Šn„Óµ»¤žh<Ž£5‚ŸkŽBŠ$c€Å:×Ö:_ĆķC}©ń#u;¹üźCįÆég÷„Ü8ēk6E]ąćdōž»"!*’nŃ»<į-ĶŪźqĘm^xنvDséé^Ŧi:œ÷›4ū{øG$–·‡‹4MM>ÖŽ1Š­djeiäĒ—ĒŹ;tķQ%E7(ݚæhķ¤š$ń*^³K“üōå\÷Ž|ÅҶZļĒĢ@ĄĶbųÆā%ä³|³9Vśń\}Ē‹®Ū|¬ÅŽ}*”_•^ŹT”½Ł?šGq¤x ĪŽUiu_\ õÆCšn—įĖw‰nļķdP6²‡óĶēŠX!a)V#-Y·>'‘]Iøm®?½Īj%‰©%m¾FæV¦­w&}–Śƒōø™ģ"³RæÅšćYėŚ×üĻ2¹ŅÆcŗdh%P3Šb¶,Ņé|˜”".<½ģŲĄ÷«Ō“š”ŁbŁčTv¬‰ķ®’P%Jņy5“£9-œRŠMÉżÖ5oōyU[q{YAi łEPÖ“››]ĀH1ĖĘ„zĒĶfL’*’Āwa󑘒p+&ę»}Ģ|ŖO™?Č„ØAsK-ʰ.2 ņMeŹÉødśń]ž„s,ņÅnÖŹŽR…ĪsXŗÄ1,Ųū3‚½AŖ£)[X™Õ,®ŚfTqībT=EAuóN:Õµe&›äŹ<–iBń†Ē58ÅÓåJå~µŗÕ™©­™ ©·øĘ;T'r¾9Ö±¶ģe‘§(W€§½P•03ŽŁŖÜ›Ēš×sątĘ)²GåøéÉķH™BryīiŃ3nł°GŅ®*ĆqŌ†@‹[yČ$gŠŒŖ•ŽC™éV¼½ä öō¦²€ŪAĒ-Ų§mT~ē9=i—#i?3słœĮ’ 6A•łBżOō”ț_BqŠt<ęžNFŠzuĶ=S‚9Č–9ČėŪ4=E¢Šl½0¤ÆćI»åĄ$zć§Įėž4Å ĘąĆ×Ņ•ō$“b²“ž{ i;A%XDēäČű †Ļ"¦×ŌääšGzTŒ>qĮéœÓeĘwŻ)šO,y4Ō^ä-ģ1c'gØ4«ŒķĘx©Ta)Ž;śŒUs\ÖJĖB)QUXGņńÉõØČ"3›§ĶžŌłlzRDĮ8ē֋]²3·>ē­<„lśÓ¶#ēg=i®|¢2Ąķš\ŗwµˆŁ‚°!MFÅ ˜ņ*RŹĆ œŽ*R­=©Å'¹z_QU~^@ ę•vććž)c‘ŁŠŌw±nyéI·³*NƦ_”ĪDŁĪ0GŹĄTÅ=Jķ#œŽ3TÅä0§ƒóZ|™ ĘķQ™Ī{Sd, izYn=”ƒĮč) 8 08¤/Ō“Ķ(lŁ SFؖ—Aco-œzPĄÖˆß–`NŽ¢!R£‡u£r“Kr'`9µ#żŃ·øę•qøĘ{S§9=)=>m„»1Ķ5Ą?…ˁĘÓŅ™ ĮČ<ŒŠ‹éØ«ŽœŠ‡qõ¤Oõ`dęœĮēŠwčfĘøĆp0iĢn:‘HsĻyŅó‚A¦öÓb&Č8éN'=;SŠƒĪó“דŪĻnx„άinąø#ą{Óe]Ņp;u¦‰2øŚ@=)’VČ'©ÕĶ[Aī»p~)sĻJio”XšW'oBj„ä¬DąīūǦi;y馞¬2?w½6o»…'qüŖœ‰{ ƒøķćŠ8ŒŸZhʧvq֓vé-ÓÆcJĻ ¢‡ c%M8Ŗ1øš‡»”›˜pIö¦”ęhŚKQī¹ķƒQćäTˆĒ“L#TœM_°øžŽ“:šhTiŻź\š…„ł…ż«*|¬…pK+vŪ™ ›‰”§OžIQĢ!}śUBļs:«–ZjRŃķÓt£ęnǵkG¦,„R¹ćŠÓ³±X‘wHĒ8­XZŽ$ ޵ŃOŻ2rRŁŲΰ°Ø‚‘ėłTēdc`“~ĄŅĶø3°#„ZÓ“©ååņĆt5­ō#Võ ·Ść¦8ķW,ō¦¼øUŽ"ˌū×uą™ŌĪ:äŠčõÆģŸFUŲ€äwÆ6¶>n1z”šOIHĒųwšž[ū”‘p8Æ„|šÓDŅōÅø•P²(bĶé_7i_ēµ»Ņ- r8®Ę_‰z½Ö –įbGŚ |žiĢ*5JŃ>»‚ĮŅ¢åtäzoøÕ/fņĀ>Ą0KŠėå[Y&+HŽz’µ©§ŚĒch†ėEJq’½Ķc)ØŲɇL€ö…AŽųżicŃlg”‰f=‰āµ/•1Œ’ėT¼Ę‰‰ƒļ2}Šš¾¢ŻųBå"Żg=+™Õō››g*ѓ'zķt«NFżäļå‘ĄĘ+bX”ū#™²ÜdńķYøėi"å)%ĶN_&x¾¦—VÖł`Ų=…b¼É»t²r§Ņ»Ļ^Śī’n’āī­,¤ŸtŽAėŽÕ)@J„VīŃI„·wŹnŚ4×ŗŲĒ­jÅak2ˆą.=I«3xh ni28÷­SZ1ūKkRö0–śfaå €Ō3ÜJĪCČMkĖ¢^ȉ6(éN³šķŪ ŗ’GLqYŹ·4Ž"?dĘA#/āC3¶=:āŗ«M÷žõ`r¹­4…WŪc=sK’ØF㠃čk:+ø`*±€N3€3NK»»‰™!‡o”V~њGEcKĻ“ŠmžLmƒĶméņhŅķŽ‰»øć„`Yč³ä<ņq޶,¬a·É^½sMĪū;¹“‘ŲhِNjdTĄģ1[Ś{ł­”QŽø ”Ÿļ éÄ̰mˆ”>Ōé·Ķf¬ £x*4QÆ$~5^āH™ƒmROp+Ÿ¶øŻ&Ōū÷­1-¼h2ćšź½™Ļ*Jښ+#˜ö©Ū+ X{ÖmĘHĒŽ5eÆ0Ÿ.|VF”ØK¤©r:psUĶcš–¬ÅŌ“›éäŽūüiėmcii‹©”8^@lsR]źĢĪ"RwŌÖU֘×7I„v'œV”^ū›ėĖtīŒ{Õ±›QÄ+¹@ą’ksFO-ĒŠF7µvĆHµ€¹faĶhC”æ(ēb¢svŠt”"­ł• °E“,›³Īę«āā(Ycˆ äcŠĻŌįŪCį T6>ācf ¼ī'5)¶µe¾S¦d¹hÉó¢–ÄŻG( /ø®b}FU%<Öć½ź²ĒīŪs‘Ž‹JŪ5µčwo[xK³4­Ž••7‰®ĶĮņSl`m;«ˆŗÕn˜…ó6ŌŽ¦›ĢģNóČī)A[qI»ŻĢ^#½\”{éR&¼\ķyw?qšć!²šGV-!^„ZövšĀ¹XŌ8ļœÕó[bj9½•5˜ĘqÖ¬&¦’ąÉ=k›µ·{‰F…<ÖĪ£ĪNbłyźi¹6“)$—¾h ™–mš[¦jęŸq1\ÜĢT°ąƒRYé³ĆĢŹwĻzŠėģP&Ÿ$AZróGS8ŌåzjjZވŠ"¶IükJÅä ø‘\Tڶlw#–Ę1PĶ–.ŠzST„öDŚÜō䉶ē9Ķ6Xå_õj=y½Ÿˆµ g tĒ\Ö­®«q°ł“2īéž)*u6eʵłŽ«ģ²°>cóķNƒL‡‡Ī\sX–š| rē±ĶnŁĖ Ż€zšŁs4ah¾£u vFIĘsڳ§¶ 3ČcĒ@µ­¬źZ˜ā䞤ž+‰Öoü²LqŠ…jޜŒ*Et5/oģmżŲćjÖķŁr±¢Ēł5Źj–~I]Ū‡PIĶaŻź ‡jČŪYŌ©„“:éAE^Hõ{;āT4EFGN+Fa%Õ”IV2Ģ9įė¬K$|ūŌŅ|M:ÜķŸĖ5sóĻtn©B¤yvFߊ|g%ŪŹŠšČĆ9ķ\½ē„§_’ēgŠģ­üT’ IPæmÕŽ”nźX®xü+¢ž)T²š8źaeKŻ¤ģæ®ē›źžŌ” ²ĘĒ'…¼)qāKwčĮ™‰ē&¢Rf\—:cØĄ£he'ŒRi”8U=Mfh>Ÿ|²OJŻ‹JŽ…?(õėI3K(­5$²ŗC‚>^1VāŗT”no”ŽMSŽ(‘žb:g55Ķż„qlņ÷61ž*e+«66ؚćYX÷,^˜®UׄŠmāM Oz–źkyGČŪ7śÖ%Ķ•˜¼>`‘÷~U‚šZ"āģżå©Ljf_'.ķ=*­Ę»tĀ5IF‹¦kfÓI“Ų¬•VÓŻ žµŲi¼Pƒ"! bØ4Š ēÉÅf\]ź’0,Ū?tQJ6|Éęœy[:”°¶EPsōØ&ŽĶ%Č žy®gķsyŪ&’@IĮ¦kkF[yN%8ė“Wķõ SŠ\ČæŌ3c<ómØ[¼Xg*GØĒ5%„…±_’#ƒĻ l öšõø.͜ōł°+_KµÓķŠ¢ØŹņ2sPŸKšŖ‘kŻV#Yī]²ŖŲ ß­Omö“u”ØHČłō«—W+°ÅĮ<ęŖ\$_¼“bõ#։XĶTkCZĶ•‰RėµĒAWķ^;Ve"N˜øÓ®i¶Syq¹-Ī“¬µˆ/"ÜŠł®j·Ś'e5uĢ\Ö/mą“ä.G×?­x–ŹŌIäG$Æź€ā®ÜŻiņŽ8ŹśŠ­’É"vŽD'œSŪI §kÅ„ž8»óYc“—²)–ž-Õeø;77sOÕī"‚ńN`|ńµ@$T‹<²G¾8Ö3Œ“ŒqDćmÆ÷™Ór”z}ƌÖĄ$Ōā…vćłÓļ„is Jq˜~öēɝ*ŪDøøWUźCW3'ƒµ¹Oż§4€r·õŖ)¢źņÜ c(Dlī=Z‡N³WV.R”9Īź“.±iÉå'O3®kF-y|åYÆäw=T`Ö„ō¦°³Ėڜō'„qįĽ’HŽÕ`”paĶLb·‘5+ÉkWāi錿¼ŚyeēœÕŻkUšÕõФ”–WĮČ®[MšķČ»aus PįZ½}†ō”¾ą™dė“T¢¢ģ›æs¹Fī7^lŁÓō5āßl‚d|š”–Ž]2ģ=¶–Žą•ĖŽųž;Wņ“«G(ĄŹŃgāźŖģŅD¬:0Ąü*©ÕØ“wkī"„vSRKŹ÷=!õĶUl•š”“oF Į¼ń/ˆ&øXāXœJęī×[¹³cs ĄW€ĒŽ=©ž Ņē{֑µY‡šĘ\±^ņūĪØM½“ņGS<¾&6åäŚ£Ø>õ^ŵEīg•‰å°j—õ}^ĪŠĆgymÕä¹Īkš¾±ŖĶz~רĄ‘©ÉēƒC’…>~E÷“Jõ'ÉžšDÕįūZś„Š8^H®kYŃo±xµ &^€lĪx®®ĖZŃZÉ#–śÜČ£žVŌüc¤iČBå õˆāćkE_Čŗ˜IƋO_ų&Ćé§°cö¹˜ģīĖ]ååóę5ŗg#A\~±ń ŽY]!¶oŸ” SŚų’tµ_³Č‘K>݃<Ō9%+„o—źR„7ķ-eżt.kśuÕĀįKĒ@2Nżø5‘¦čšØbgsĘę,Ęŗ.G‰Z{ŻR5Ve8¬ļųßD²O&Ņī'øa·Ō֞Ł'ļXÉQ“wƒgGą­1ķgŻutY˜ē5ŌjwV[>é* ŒžIÆ$Óµ{Ū‹“›”•d9 Šž}ź;×ńņŽ8įĒśĀŌF<ņęOBŖ“”i=N—Pń݆™~ 2ÆLöüéš×Ä-RӝR6ģ˵FG¹ JT—/ į†+%ž “i¬5’ƒÆĪ§ƒųŌ×”É8ÕQkŗ"†" •©9.č׊ÄŅŻ<©­Ć5æ;U5½:o•ūŁNćĪTäą¼?šūRŃu†K‹‰¦QŻ·õ9ī­“f›dŅL‡°Üj”F¤½oU’ÄPir7ó²:}ŽĪYLb'pæwrc5Ó[éW– ķYägÅųRĖÅZ„aī‚ŚEżķN? ź-F‘¦D>ŪxņČK3šiŹ5>);z’ż›,uōP‡L·›Īåp ä¼c«M«˜ŹO Vψ¼E [16󣝄Ž~•ć’üK§ĻÆ óFpFÖć5½ ŌÆńÕ)TŠåQv9?ų®ą\ē€Ąąąs\V§ā{Ēc‹‡ Œ‚;W)āŻV1©»yĄļčsÖ¹Ū‹šģvīėŒõUźGšęŌ!V×½Žž?ß¹qž¹ėZśOŒuKI?svĮq‚7W•C,ĪUzg5n(Æ$XēĘøēĖ=-ų±””ļ)¾>"źź¬ ŪõžńĘ*ļŒn®§,óvö<}k‰Ńō ė§Ł<ŸB2~µÓi~ÖeŪžŽUP[SOżÅbźbeni2Ļ>WmßÅׄfĻ«Č×D£HI…uö’µ8ÄĄČätV݊ė4†2$k(X¶ńĄäżkIEGāg q0“ŗWÓR“¼ŹÜ™™F [ĆŽ].½ ¹Ü®×泞+ńĮZ¶”ØN×sŹaCŃ kĻÆō[»9$†F:¹]£ėéß&³7™åFåq•ūƹK»/G»Ų[ķ1œ«‘×ė]±÷ćĖ(}Ķ~§Ŗć£Ø¾ļņ<Ćök}©}›ū5÷tó:qIćß Č§Ģ3ØŚØ¤’ÕėÜź÷Ŗ`°ŒrbQśńZ¶—ŗEÅČƒ{™Fk_Ų»Źź>zQ„źCÜk›ŹēĪž°ń-½üf)žFƗ#ń¦kė‡RxŚż&v.­ø_LkvZDŃī·–łp`5r’š‰éŃŪÉ0D{¹ ē§½5W/z-M%W—³›óleĀė{ˆøšå™F½vڽ¦ĮbŠŻŪźs±JBjé|Gį`n$ |cwäGō÷ÅAƒµA¦“q]ĒpŽpTG“łāŖŌźnõž¼ŒV&„8Św_čĪMµ{­|]Ćxm`gū¬Üīk©ń&ƒ},MqkākYT™ 浄ā]Z¶šßŁ"²“*:žčW’kŸšF§%¾ū Ķ'÷'ƒ!Œ’{pMEZ·“Qęł/óGM*žÕ{56»]ÆŌ…ģuK+TžĒRÓī$6¾łéQĶā{ō€[]L—wiņ… …€®‚+æ „µÜ?fŠ@Ał²ß)ü+Ķļ,ķ\7VŅŌČJ†$ńļšĪt(Ō3…šņ’‚ŹN½+Eu’ ü{]fźęšCqa&üį@V?įV|_įżqąŽqµ€Œ”G÷«f ™tĆsżÆe,€a" Ań¬=/Ä>#‡QkD¼Fģq•8E?r)ł\Ö­eŹ£7gŻE}“ęņZgY@Ą95[SŃļąĪf3!ʝuŗ^Åö„ÖĘ#€¬»y¹Ø5©V·hĖ,­øäc¼œ­Ģ–ž…9¤u–«śŁœģślóܖtEŚxŁĒēXś•µÕµėÅ»óo#ķ]”ö×› gpˆ3“TŗŽƒ«¾•½ŹĘ²d lZŗŖŚžgŠkM>F‡tŻJź!-³’N‹‚MZń6—ā K,ÜYŗ# ·­Z𖔬hR¼KĆ/]˚él.õVŚK¦D˜B«…÷®}a'Ļ <™ÓʬnŖkŪ”ńķNŅ{EV’ JAźEUŗ• e<®GŻażk£ńJj)©°½_8œü£°ö¬»ė ° ŚH €~Pp+¹=69S­ tūĢķŚ§ƒh ø•ąūŌWńĢĮ†éšošU6²Œ}iµ”Jm+ź¾Vs“ėQdķĄõėV;Foҫʿ?i%©)µ°ų›iźx ”pۉϭB£+œõžtåFF@¦Ś*MµtG"¶8%éIį½ž•20lątŠTą{žŌŅŌĻ]ä2\䱞@ü€8sš²’{ć֘#USךKbœ®“+“‚ ’O|Pų(9ļŽ•¾I1Ó<ā–U!~R0i39h@p Ēź;šR˜“Nd Ąš…‚ūzśÖˆØłˆŪ¶€Ž>•=§”!;Ćy‡ŒŠa ć±jn”œ=x£” Wf=†#·Óc'NfżČČĻ­7&T`T—Ģģ<ą•ōŖ÷Q N=ŖĘ~`iHĘwŠk@åoTS·f €qėSĢV\†ģrķQ‘†$jr1RCŅ©0W±ZUŁ7SZ#pīW#ž«¾ZĖ ä)ŪŽ³^?.CƒƒÓ$P­rc®āŚ1»ńõØāĘÜiå˜ō9#֞ė…b¹Č6ՊŒšŠ‚ėŌ?l`ö¤‰€V䓞jV£Ī9\•Wڧ_Z„ŽÅ6ģ=NIQ× °Ž?:88Ļz•²c ä矄-ˆęhÆņ°#b=i¹<QR+ĖcÆJj|ĆļĆšŖ±miq‘­€Hō§¹p‘Ē ‡p#+NURiĮļŠF2Lrœ*ć$ԮًŒījŹR:Š|d㠌zŠ“d’ŗX:ŒńMć§ Ō’Øą?Ā£\‚q~jT®>nd·lą‘Ž“ēÉ*3ŒsLš=§r’v©sŪ’¼b®ŻD¬4ö=3Š=iŽ9Ķ4|‡‚yčjMtµˆ›h‘ˆdT»°1ĄŽ9¤# ääÓFG’{zSzīKѹ‘[U”öā RCuĪ})Ҽ–#Ā˜3Źp4­dG8ņIĻ##ŠBpF »žōߗźi„>^›€÷§źe'ńōØŌmaŽ7~”šT'”ĒåQīe$ä·¦)ł#6䞣„)ß÷›ėMŚ8ŚHćœÓŃĮPqéK zäw©½Šr!Ū•ŻøüŽ“7Ż÷õ©ö~ķUxüi“+c‘Įīh»eÉŻX†»I9#ŠFެÅ|ėOŁ—Ī(‘JƒŒņjѕģE·ÆzpåN=}jXˆa‘Œ֓`Ļ÷Å»¢ Hp}½)ū…#ē* ‘ž:Ņ3aˆĆńVKØŗć°äö§C¤ēŸZXō«¶źźsڰnĒO+–Ć­¢™OŹÄz‘W’"qø“ÅV\ķąš·góOjē©Pģ„NŪ—lįP¼7J°PyxāŖ( |¤Ņ9‘Sų‡…Ū6jĖr…pü6V¬ŪĖq}ķ¼VeÕÖŠFyę³®.ˆr3Åj”'”Œä’ܹ©ĢpÅpź Ŗ 1eėļGœ”@Ød–.1šģ„lµ8‹[— ƒÖµl®aŠ#ƒóW?ØqŒę¬ÅĢV±Š[«5ä’¾lVīš \ž¾µĘé3aĖ)×y”Äe¶V­ū“(µbõ”`FŒu®×ĄÖŦ˜Į¬]*ɶŽ2@ČÅmi4-ŒĒҹńU"ćdĪܵrĖžG“xbhįµUY:uŖ’#7ŗ1sy®SĀItÅ[{*šzšźuKń˜L‚}ėāźĮB·ś=Ź1?ζ¢¼‰F0A„%ØēĶZÜwš\āöÆLՍ6VUh˜ezÓ¹¾µd*Ļ“öĄė\—‰Œr11»ž¢®jčʛœ+zDw6¬  Fz՘ī-UĮ'Ö¼Š<¶å]äśœÖæ‡õ fb#ē-‚qX]ŲčöWz3Ń“ēŪp^3Z’FöœØōŖ:~įC’ Mmį0”1Tڶ¤ŹIh&ńžF£#G`äž*¤ZaV %æć^ŗ!¶īHóō¤¹‹OƚcAߚ‰FśÜĶk¶§œŪién1Ŗ†Ŗ2]ŖĆf» FĒĻr£¶7Vv„„h’f2¤Ćn?…±\žäens„Ā\·”]Žbkؔep3Ö².[Qž_ŻnŲŻ ŒVÜÆ§@»b‹yõ'4ŸŚ0G…SŽ1żk¦4»³9MEŠ“S䇽øŪ»’2k¦Ņæ³l*F%nČ×).¤’1ūüqÅMk|ŪymĄ$āœ!±›•I+·ņ;ėk ĆtP¢q×dOMŅ:Šäō-I¤m_§Nõ¶'…`żņą’½Vļk “«C5-AUw1é\Lj®ŠaOµt"k'ČP }h6ŃȧÜń\üҹ^ÉhŚ<ĘśŹē,Ģ\ą ē›t·iÄaųē^Į— ¼c½(Ń-NF*G#֟73ئ涤J]O?xļ™°īsķOK9“ꑞSŌ®™lfża¾½©²¦ĒŲ£9ē5”š‹±Ŗ›i$dé-ä0܌Ķķ]$7cģąķć*+ć £#®jŲUi6żÕ^Ć£Qw"p{Śåa;2&±Ŗ· q»īČÄōĻ­nĒäFqÉÅ]“¹²TÜėŒU,Kč •õ2“‹ ęŚffŒ“]zuˆ„īš=yŖ×W¢XńkŒj4Ąč’¼bŁśUó=Š8EÆxľŅģN fHœ0éϲŲ+Įē5æsåļ8Į ńĶKg§ ”;J9ģMT§u©”iŪHģsw?g“ˆ*e¤=­gĪÓ»×i6ˆ³± żŽ8ō¬=kD»Š|B -8ĘčNins‡h™Éüi y‹å¤Œ»øÉėS]i—łaä¹ĒB*}BæžA¹^!ī)8ÉF¤_»sāÓi)¹¹ļP%ŗ†!~sӌש[hv±BåK‚O„ū>•d¹Ž4;»āµŠŗŌ9­„“<āĒGšI”ł,¦?Zź“ķŖ“ Ž3Z³źPDČÉ$`sYÓź×EpFŠ8ŃģŁ“ķU¶5ō½(“.Ź*ć閘ec^µĖÉyu>|Ģuā§Ž[¢¹%—=ɫޗS)ÖO©Ņµœ·°ł’’;«}wĢ\1V ¼Ón. ˜! ėĄ›„é&hÕR@šx­cį˱Ōr¬8ĶuQ„&“gźFžō"铽Wß½Q–hc‰æxóZzŸ†5 ˜‰²Ē=k*ŪĮŚ“ ī$g©5Óģ'k¤gE$ł\бj±¤ŪęČ㚷oŖFOļ‡MhŪų!Sfū€[ńŽkRĖĀˆGšĻ)öé\Ņ”Q³ŖŖqF~‹qēœ[Ē#sœóĶv “Ģs³`ļócšeŒ6l0RĆ­JķpSb@yqZÓ¢ć»1­_ž:-ŽÕ#HšļĪ2yļI<Ń0 ޤ÷®eā½ći”zՍ5nKmüœV¶ŸDr{›\ŗń³°Ć{Vž—ā?™FŽ”5„ĢՍŅ1†f9"‘Ä ü”˜žæZŚg…hUqژڄ¤#¬XĒ(vE';ŲĆ6W7ļŚØźŗT±ĘĒ|€qĶn抬¢m›£ĻLgš†oŁLF61]Ęń·Ž1]M­„Æp|Ē` vļIØéӘ_ÉcŒqóV¼öźO"Jē˜Łč%ļ™-Įóä×P‚āŚŁ#‚9Ēz»ż‹|÷lĄł‰éZ‘i«o”Ü/rŲØ›—tiMĘQ³v97Žõ®Su\õę“.#Ņ-mwLq3 a[ŒŌŗü"v/#(ēi—xń:¶{ņ2]Ļ5*2zܟu+XĄŌo,ĶŪ·qź9¢½¹„y3“hG5iōė™›0¬VĖž`f²õö“O‹l·)“ĄŚy¢¬/»/ZѲM|=B$n»Ō7\¦„MąL|­FO/’FzŠäĮūBHo1ķøēš®ŸIÖlāƒky‡=K¢¹”ą•’Lģ‚œ„ń;żĒM”ŪYéń€d äe˜žkzßSÓysüčF pĒZŠR=ī\ĶŽ™éT›Äŗz³žuaĄśÖ~֍ķ·Č ¶Ö'­ŚÆ‡dƒäŠ5'ūʤžĢÓÖB Ž9ćYµ–`cóžŠOlZ_%¼~uŻÜń@ æšøUØ“„¾ū™KEūņ…ŸŖgŖZŁ@żUv‘Ę*ļü#67Ė ć•VÆ›ā—bę&3ĘćÖØOńE£˜}ø'4åVvµ’ÓĀßeeź{ˆ|*±ŚķÓYbw?jęm“ €“RŻĄčEsoÅ Fģ„„—ć’V¬Cń&ö+”±3)łp’«)AóBöĆ8ĪŹ„®mėž»ŪēIvÅŃxQ\åēŲn RŁÉ,£€Äö­KßZßøi.¦µo@qH.lČ䘛Ģ5¬+Ęk–Ö‰ĪčՃ»z~›Ր+G„‰œš~Py­Ū]6āxL²Ā¶€ņ=gŁköšĄVÖ£8/·½W½Õu+ähį’EČ'®*Õ:ułŌŠv•—”bé`†FYµ2‰Š ĶY‚]&$żĮŽF†.AĻŅøGHŗŽÆw©ÅÉÉ@½?é|/c£GĶp³]:0H”ż¤tOOAĘ4emļ÷ź—:„‘1°µógqŒ}EfŪ7‰Ÿ‰"–#·ŽõŃjž*Ń“ųvĄńŚæO™MP›ÄWW–BKkążā«Yŗ’åk_š4p©z/B¾—q©[æśZ™€å1U¼]}¦INJ8[Ę;Öv©ā-JŁ Äwä³üęŖYÜ5š&ūN™Ąē*½iÅŹœ¹’kŃÜĪ„5RóOļLĶ“U{bRÖ8ŁGķÉ?Jé¼ŖjSŗy°2Ę?‰”Š”k?•r#Ó“ČmĒv•²k±Ń®ī™30—„UX©­SæÜ*/‘¶š·š6­7O&֑ŠČminÄ,{yūŪńM‚ń€į!qŹøøßėVńĶóĒ:&HĪiSMh‘U¤Ś±½}g£źŗ=»1aÉVļTįšąV’Tļ+HH¤ųs„\”rī£{qÅm^›ņÖ»ļēāŖ8‰?v2q?V;JIŻõLŹŅ¼ ŻŽ²ĘŠ©Œņēś×GmąĶ2R'QĀäę¹ŻCÅVͲ"D\`£$Õ8üKw3.—|6q€**ŗéiø=•9ļ+’ŪĒT|1¦‹…’8¢ÆUT¾†<0Ē&z t„÷7ń,vOdżK;×GąŪmB)Õ.Æeø$`õT^µÆæą_³¢—#m>‡-ć=Vž0CFrQsĶsóx:Ģ\,ÓŹdĄÆ{ŗŠ^ńFŅ@95ŸØų^#0tS¬ŚµģrN .ėSĖī,ō[Xćņī"*1€£šŸžB {od#¾JŠčµäšĪŒ˶In|Ņ1Č'éҹkĒɁb‹ŌZr+]Źę‘œ­d­~īåŃą­Bk„šMI,’1’ó].‘.›¦*ÅwŖ Xqņš x޹㛹т\0÷øĶpZϊīĢ­™—åć'ü+)ØOK#JnP¼T™ōō׎‹TūgŪīŚB8RćeCqćOŁ“ŅYŚŪ4§9b3Ķ|‹{ā‹—į¦;‡|ąĮÕ¼C;ẏ®A<Ö挮˜åŽĶ7żyŸQųēāz„›F|• ŃS­x7Ä/½ŪHQŻioŻĶy~­«K!mұosXr“×b0K9ā¶G½Å5$Ō©«U’‰eņ˜łŽNÜ.[„rwŚÕÕęÕI&lŽ„Ö÷‡ü%ŖźØ³¾üd„Ą}š+ą­“±Åu©[³KŌ)b¢¤”=é+ŖŌœ,Ļ˜,|/ŖŻž[IĀ?Ģy®ƒDšMåğ%³&ĆĪE}Ņ>éńŒB Śé[„,į‰BŪ£> įbń4÷%F£Ó”ųóĮß µk–²›ŹŪ’ąpkÖ|šŽŲ@¢āŅo1ĒjścKŃą¶“ڰøĻ\V¶ŸdŖ”ŃŽĆŠē«ŽKąE¬$š»<“Į t›6F{<ˌŅOå]½·‚“Ō6” žÉv–’āäęI¤…0q†<šą«˜×j×:a€§k³Ó¼7eløKX²Ē©@*Ėx~Ö4. Mżx+©ŽMŹr7~4üĒŹqX¬MW»5ŽŸDs°hI67/#ėRßO³Š2Œóמ*MĪׄ†Š2O|Ō“««€JģĒ'9üėN]Y²„z-FŚ@¾g—•Œš Ó5’R_-ŽZ±nŹ 0bG@*kÉ#H7J ’N¹¬[“–¬ŽKEdA[¬ĪIėŌÕ2’,Œ}jŌ71.Ģ ō§™<ÄŒd~“ŅīÜŖÅ->ćĖB¹©¦|³1 9ÅWµÓvNļĢNNI­Š5ƒ ¬lśŌø¤ī˜ŻTć©|^y‘QLkø~Uu™!:f— ³„+µ}Ē55Ā(Qµwd÷§(ŲŗÕ”dh“±dõ>•Bīec‚¬Fz֍Ä[²WŒŸ˜L¾‰6.ć4į&·3”`¶1&݉Œ3ōĖTDmˆ~ę5rKbµ»m£-×½Qæ‚uˆ¾0A[]½™œš‹0ē‹ż5ŽfXČĖygHŪ£ŻćĒé¼f“odÕdŪ/o‡?0+ŠŠšŚö;Dy?»ĪŠ9÷®ˆ¹[_ŠÉ¾ŚżębĮpö¬³j0F1…*1XZ¦‘xą²_¤źFnõØ¢Ī"ąNņ9ÉųØ}6;‘sĖgļnä}*UGÓü˜¹T½ųļņ9m[Oh­Q‹i%<6ŌŻƒõ®NóĀ 5ǚč@c‚Uq^£­6‚6:”vĒ”OėY×Fi'ŪiØCåc‚ŁĮ­©ā’Ö-^¦nŒœ½äÓō’#šŅ¼-£ŁŚ§ŪP1ĪąNsėTuoh;ĻõĖu$ WU­Yź@"{»GćŒ~uŒ–ŗe [ø„ĪOü³ŖUēm_ĖFUZQrŃ?½ÆĢóÉü?ih^ćN”Érß{sgż1õI-Č+üJ gšÆH¼†Ź[2öšłfS¼Ž7W5©=Ż»ÆŁ—ŹV;Ieę¦SŒ–šž{D¾'ņzœīµ}u–® „Ž™³\¹n¾{\ż€:Ę3å«ҽŖĘĀ[Ōo4ŪĻĢŲśv5GQŅŪkÅö+ry­)ŖiY¶¾ęĪz¹)“šō±ĆųNkYtų÷čśU»¹Ē–ažu±ÆxAuĶ.Gkm*ˌ#*€Ę¶"Ń`†ÜMåYĀłØ'ņę ńbZä ųc©AØ,–ځĪx•ĪÆhÖ“Hč[Æd»[ĆīœcźC5œxfH”Õ.^ķFUL9żjżµiFĪ)ü˜SĆÅ;¤“óż }Į$} ŪÅŖ[ß4ŠAŻø|*ń†;ŻÄ–³äįp+£·Ōüget˜šh­”ņįv{VÖ©āĶ3Q¶6WŽ¢nŠežIHQļ\æZ«†|“¤¹_f’$vĻ O(ÖnK„—źxE͟ˆ“I&{Ū3 œØ¬ŚjzöZ9ŗ¹ū`L·Ģ1ŸLW§[čkv’G·$łR0 ä{“Y§ĀD±¼†I®žZ’żGzŅ5ØŌ¼®—Ī’ƒ2ujŠjmz5łcā»{»_żÆĖ y¾cŸ\sҹ1ļU3ؼ1•ą,M}C„xKĄ÷‹;ū•Š1ßÓ­U×>ų“y.lµųWÜ?hĮǦńx6¹'Q'ę…Z†"2ö“éJŽG‡|>“·Õ5¶ŌµćhÓ ģyükā…Ę—­"ŌŌl„•”ńŠķƾj “O„j–ņ›#H÷®nįn<=$¶ś­‚]\N§kKómśWBZ¹Bq”{+_ó©Ē–\њžm™ēŹvÜ>åGcŻWŌ-'ˆ†‘<°ć"ŗ ~ÜMn.Ö1?.pe¬(Qq#A…Ļ@=Ŗć.±0åjŹF ܍ČĘE<¾ä qVÆ#]Ÿ)Ę:jŗ(S»‘×Ö·ęŗ!>Œ‰÷mĪĖĘ)ćļS…8ć?0ē4“ØXF6’=) O”rŲĘy üÉĮ Jz'·½)]©ĒĪ3Nȵ{ ‘N'֑Clō©‚Ÿ+€&™‡ŠIō+”†į7/BIēŽ•6äŻjüy ¹ąśŠČ’Ū—Ó#9„~„4ŠgĮēŠŽdWØ>•m‘D‡ęćŽ)”“%aīŠ ¼Ž‡œśT£A'$ōõ«H*Īõ麘ną`QTšd(Y‘Ļ­<£µ!äķžę¢ņČ@rOćI[cm6dŒP:qLtvOŽō» SĪ)*Ē’½9ĻŸščA*°Œ_ĒÖ£ˆqW™Ž6üø¤‡ä“Ī;SŗźbīU$©ćƒRH"’!•łńŽ‘””9ąB(Ī7Jmč:k]QEŠĘI!Ž{Ӈā3VgåB‚Äõ® RęŗµŠd‘°į‡NHšIĘÜ֤Ɣł™²żjo’†ßŒä÷4“聫nfĘFqŒƒß4ķŲa׎µ%ÄezuĒZlI”$†j­Š„ÓP4Y ŒŌ ƒĢĪįĄüźŹƒåżŅ­FąHņ¤‹jȍ Ēo ļMdĆ`p=źaČĆH<ćØėEõ%+‘‚ž)‡pqĒ`©łvc8ę™*²®vóÓ­&ū¾ˆh)Ē‘¢Źäšjī8<Žõ:Č|°yāŸM“ u8øć4äcŸLŒTĒi$c$ņ*"0A#$śŌ݃}޽x„C{žiĖ œƒŠP2Ż@Ą¢ś–£”‹³OJ{pzg­Nyć?.)¬ąŽ)Üm;åNyĮōĀŖ½ K'Q’=½i:dŠzō1ÜhʜöĒSLRA搣« £o­FQvt<ž”ÓF‰hFĄÆN(@£*séøSÜN0{{Ņ[ e8s“ĪjŅ3“{ŗįųHQŽ˜Č¤Ś6QīĢƎdœ•ļŠė“ūtŠ5U``{Smf_(8ā¦ūT@|¼žŲ¬FżŲ£¢·ÄĪ—Ćėœ/r:×Oa¦FĒ{6qĪkŽšåź-Ā–cœö®–ū[“‚MĒ«ĒÄĘ|ڽE£¢k³¦ŲĻėY­ō’séXXóŸĆ÷«Znén×q“YC—½3GZSvEė [«”Ź,˜t¬Æč÷P£8›nFH5évWŪiŗ]ļąÆ1ų†śę£|Ž]•ĀĮœķQB¬ēS•+#—M-u8F —8ŽĘ²ī4©¤ūķŸĘ»{óÉ!$°5›­@Ö÷19ĻQ^õ%Jü«sÉ­:Š7lå@XÓvń“Č«%˜‰ČTēÖŗƒ&yĮĒJŽäĘĢ:W|"qJvWlȵ² ̜UåHāĘ’ÜĘŠqÅUŗ»·X“£8õęŗ¢’ÜēmĖbŪČː§JéųÉÉ=Ŗę·młpOpj“k0HŁ?(ķŠH”ØKt>夎6øēTŚD—Ģ͌öĻJ/¢81¢ōėPMŖ•Wƒž¹¬$“Öęœī:#¶¶»†Ž ė•äÕ;½z6p Ę+†žõ™ņĒ$śÓ­üÉ äÖR»ųN˜Ōŗ÷DÄ!m‚ŒcėTļµ…•°WŽ+™4 ķœ T2Ļ™Kƒ ©P³¹N¬dõŌ蔕ÜäįGsM¹¼ÜĮ#lĘM`µė²ĪŃKjąr_$ō¬Üz2¹±s·™øķOg”8Ąć5š¬¹0į$*zŒŌr!:ŒŅŠćŽ]²G5"Ķ\sY~r»ŽiĄČcŻß„4{GcUfŒ­Ó„Y“O6E*+ŁgsżĮļ[|ŃBĄHĢĒ ­#lČuN·H‚T73u5±lĆ#“ÓµsZuŹ“`©ąžęµmęƅĘs[Ę źc9¾¦†±³[§ėėŠänl9›;AĻ®Ī' ŪĄėYŚÕŗ“dĘųlU§„ŒŖFžņ9Č”UūĪÅ4“I&N*I-$,8c޼Ņ=­Ć0 ü¾µšīkĻ‘’Œ3†Ž«KI):u«żŸ9@Ķ…\gŖ2=³aP©=Å’F7ƒ•ļ؋¦».HĄĒZrA-˜VV\*±ø¼vżÖüžõ-½ōŲ23žÕ(ĘOqĘ*/s¤Šõ1¬L7qZ”•švXztQŚØ†ORjģ—j¢äō"“6–†Ż\n÷­u%*ūs\•›Ź0e (=źĶÖ³Ŗē, ćŠŃ'Š•4“gA˜†OžlJŽžŹP«Žäń\ŗųŽM±ø\’µš²ŗ¤hĒ͐’yäÕsw&„6×1¦ŗ\“½xę®ZCcd¾b`Ɏs\üŗŹ˜Ę$~¢±5}]˜„}­gĖŲ‰6“gvŚÜQ¶į#LŸÅPBŸ4€ŸAĒ5äė4ūŁĮ'ަ˜†‹“ĶL»&o¹NāēĘĪĢDk…Ī0j­ēˆŽévžōŸŅø’QW9śżjŝĄN: zt¬œe{Üč¹mcvI¤–PYŻ@v­ūA;[*4§c.G=+/ĆóŚČ °Ü­n½Å“Ÿ*ø„e*q—ÄiķjĀŠkŖ@DŅüŲČÅ2(“Öl»~FØźVčŁÉ;Ļzǹ¹Ž*£Q]tćr¹¹;ŪS¶“ŸJ·ąDXŽrĒ5vßR°“’ŗµä…żĆJL{ÕYŠõIŅ@¤œ³b›Ž·2“·SŪōÉ`0ļDT8ĘjK±m,`PĒÆ<ž5ē¶•ÓZ›ƒcØéV`žåĀ–Ü=G4/{aĪĖFu°Įc¹VRǰ=kRŚęP0ģ+–ēŹå›łj§uŖ¾ÕrONyŖtģ®Ģ£>—=M/ Ī Ž*¶„­E[UQŸÆ&·eC”QŻD›•aaß­āՑrPį†xÆ9 Ź@#ičsV`¹H—j¢gĶL©“µ5n[„ŚüR$noš žŌwܚäws”b½Ŗ]0BéīHöŻŽ²z«0ä·ĄŽź)|ÄM‚:󊞮Gw’õ®VŚśŻF#pŁļštŗ“vĘĢF;Tƚz0ö­kŠė›Rˆ ¾æZhŌm¤QŒó§žf˜’Ķ“Ę3[ZjČĄ*Œ‚3Z,:BHņŻ¶™v$m±®ÜtĶhHeuĀȽMrzt[š¬īA­Ū k…Œ“ņ2Ī{bŗ#†kS6ć%½‹PŁĖ,€¼Ü!ĻÓiQ" Ü®oķś}ŗ|×+ž§œU ÆXÄFÉ<Ģz©(Ē©ŗō=*cŒō隚Ž=Ēž•ęvž:¶Śü§ŠŒŌ7ž3]ćløČϦ3†Ę²„+y²mįĒŻL„V¹[…Pēä/㠌>ūvėZžńuÕķߖČzēµLŖ(źš²ŸĆ”Łj¶ļ3¼ŲׯX]½ė+]„Œ]欋{YU˜zמxƒ\t /ž9®ŠubćļuHMTä‹Ųī4 B"“įŠŽIõö­ čōųųÄ}Ozņ+m~gœŁĘīĮ±OÕ5–›{ƒŽÕœ')JČźtą•ŁéĶy§Eó,‰µxöž’™ŽąŸq^3g{upū8Ļ÷5§żvŹV§|S¼›µĒ(ŃII#æÖāģø#•kzFwccœõ¬ŅÉņŲ*:ÖeõßP œõ¬erāÓ:‰5 Šõ÷Ŗ7ŗ†įņž1ų×,÷Š:æ·Z³k:6 ’+RڲœU“-¼ņųcƒš ’¼€ņŚ£ŽhKķR ž"<Š1Wu$B~B,-+Ó5v6U\)“ųn!€üĮKŒV’µćHÕFqÅ\R4»KAWM¢°<Ļ5^āŚX~LžqķWm5uTĘX޵q5 i8lĆšŽ. te*s’ŗg5,MŁH㨨䷐° ƒĪMtŹŠ vØÜ·5a-Ģņmn{ŗ“Œu9{-6IdVasŠģ|1¢§Źī8Ī?śõ§”菔‹ščm¬ŠBJ7v9«…a*ļkŲ¹”iÖVč‡g*2Iž†µežŻpy<žk-ēaóĮ8­-"(C#c­l ČM[sBÕZA…\näd °öŹbFŚų黊·§ZĪ”K)N1Œt©µB7~AÅLư8ĒŖ3­ģm‰€,yf®Įejx ߍQiIĆśsW¬¤žŸJ9ŸP²z"uÓ-ˆČPqķPɤĮæ*€¹Ī*ā^,C’zsW-¦‰įĖČ«ž™jR¬Öģ95ī£*==±Œr1M˜ŲŪ‘j±Ŗv>LŠ@AėYöönņī™·tąf—“Ņé‰+üCēÕįŒ…ć Åeź:ó Ė ’³Žµn!Ś›c…09ÉĒéT/’Õ?y?–ķ‘Nź×lŽys|'/āaoP ®×H¾™­Ü+©=ɬ§%F‡Äa^Ƭ›@§æéPĖa ėę‚ư<×eV“īąsšžµŪņ ?J'+ģģDSK’Ga”o”žņR1ß§ē]%†Ÿganz3•ÉĻz܃ČŽ6Š-dįʍ÷)s­™JÖé6žī+·æAJ×1‚ ~µ5ē“U`Ö>³z-c24Iµ‡ńRiKb„}4ßQ·ˆƒ·/öŹń¶&Ūź+O[™šÖтp>nÕŠéZŽŽö£}Ņ1īĄ¬ZkFĖtjZńŽ…ŁõØDr Ü}j)ōė}F%o²ÆŌńłUėŃ̊įąQ×&“ŚśÅFÕøLÕ~֚~ė1Žr^ōNYü;g|ŠĒ{ä*£i5¼¦G’IŪÓwJėgkK•É‘yĮėY·°¤GĖ €;×Ū§Ō•AÆvĪÅKģš…‘J*ććō©/µ[Pž\,»ńڰµ/$»F#–FōøǬĒ#˜#0Gü*£'ó¬m+Žę²­N‹G¦C{f1$ļ’½yŖzæŠ<­°!q€My’„žiĮ¹I[<å‡ÕźŠé¾A2)%GĶ·Ö¦5u“Ź«īźT¾ńŌS”i›īńƒŅ„OĢŹ£Ģ#«gšÉśDģ] ½rĪj;˽ $X‰rTtŻŅ©{-ŹU*„dŽ–ĆÅ/ {ēŅŗĶ3Z†ke3>ݼq^i¦¾”Ä‘ø9 1]V•q§@ØÉ2‘žzTJœ/x3XĪ¢‡½©žźŚL0–f^ŲļPĆ%ϘL£œžōŪVŻÜ,Q Ą«Ó܆F*U[S²[œņr^õ¬Yµ¹q2pq“EµČi—É#¹®+^ŸPß³ķ0Ĥņj„ŠŽĘžr_HT µœé“½Ćhā!Ėy3¼×[Q³H€°źGJēæ³5Iƒ<ŅtŖz_‰-möĘļqpųĘŅZڱÕīīb`¶ŅĆ=sŒR„'¬eE(Ż'”ĪÜi²„ų’2Ä.Xā¬_ŚÅgfĶ4ęf ĘĆÅljz<7q f¹xŁyĀžµVĀĘŅ×yœM:‘Üq]6rk•üŒ&ģ¹]ļņ±Ę%żø2,>o˜N7’x¬-[Lµø»Y'¾;˜ē!ŗ×yāxt©mvŪŁŹŒy;ȝĶܙRī< ¾?™RÕŁżčŅ5ž‰Æ¹£>{-Ś6ÜcĒŽŖ7³i"‘\õŗM;Ćś4Ó–ąŸ^i5[Ė[„UÓ Ēń0ØTånėČŽn7ŗüZ9;ĆĶ|fĀF[5ކ–÷@Gt’œćµuļ4š†Ÿ“Y¼mį†`Ā7+NҦ į@ČEo˜zä•[­Ÿš*1nV“ÓĖR=vY ŪmNœ²jŽ£ ÜŁ©žipqĮāŗļéq ń<3Lų ³TŽ%–]Mb]>IvœzRYEŚQ&x~Xč÷łs§x^½D)øø(ķqšė¦ųs²[Ć!9bMvž2Ė 7ģć³Ž Ä¾&›O·dŠ'fs]T«NZØžĆrŁ9ž'7į’źÖ1²Ū.Ö<äō¤æš¾¢·¦FšXžxĶnųo\×õE"(Ts»­pnćMĢ‘=A#“B“oTTŅ­4žE_ xB?–[‚· äāŗ=BóHÓl…²Ā’ȼm s×:޲`0ځäStˆ.ь—ŅDŲź+8Ņ•łŗœ%ī­|µ5ō„žžä5¼qD­oÜ[“QénŠ«†+Ö¹½cXø±“Sh#Śa‚+‘¾ń5ü ż£lq¼Ģئܾ'·©Jڲ#Øń•ŵ„«4DŅĶŌבėz÷ˆ%Ō qĖ ±Ąń^ƒż·bśi!šM¼äVÕģ:n‚m“æßÉø…ł‚t5ž›šéżĘųŁĮÅ.¾g+ąķEŒ‰¤C»hÆAPŠ rč³cå;øÆ7ńv›³•ą‘ pqŌó\>©£źņ*¤3O9#€§šŁŅ|×RūĪUˆƒŠXŪŠõżcĘ]•ī.|©PšJŽšo‰t]Zõ`µF‡QŠWx'įVÆØIÖ”,öńÆ,²ś~5ģš…-UmŅ6™“Ę+9įė7¤¬h«aTl£6wzN‡g«pP’FG$Ԛާo§DĢG„y¶­ńNŅŅ6‰H'ėŹ¾%üN[Č]АNpj½’¶™‹§ĶļEÆCÖ|cń"K)v‰UTōU8ā¼ĆÅ?.gw1ŹČ½1Œf¼3Å>%–åŪc’sXö®fM]Ų–f˜c¦Ż;h°ń­-$ō=7ľ1žźff¹bz[Ģ_ų„?)6Ł'5Į_Msqq˜²9ćėSŚX]J»›qÅRwVFŅQNĢÜæÖ¤Į>lŌqYš³» “źG„§čsܱ£>GjźtÜĻI#Ę’ā¬%Śśœņ©kDóP÷SNJ³…##rÓGæŗ‘Dņźs_CųGį”R:,‘6ÕĻbk×~ųŅŹ|-“e€ąķ¤ēN1ÜkžZ#å?|7Ō5mI¶³¤dŒ°C_C|=ų;¤ŁÄ²µ©i€Ī_œ×øč>ŠÕƒ1Œr(ā·Ž;Uyé‚kж1GH3®8^xŽLą|%įKKm£ŹŒ60n1]ž•dm­hĀŽŠµ–4‹aU ÉļKqęm9õÆ>„w7chQäųFy ØXF« ČĮz§?™­#)ØŻŻüÓü #ŹV…Æēt`KmŚ ¼5†päķń«siś‘…^)-f`7E\šćĆ7wų–ęDą *=CLšĆ#yZÄjĪ0Ņ6ŸČVJ­+Żæ½5žFĪ–#[§ņ³üĢó©_[\ˆšĘ݈ĘķŒ?JŅøy'¶/ż‚ŅčKš+;NŃģ,Yī-ÆR>īdÜq[:G‰o-cZµŚŸŗĪ…8oM_ѱØŌjÓizÆņ9›‰'ūg•&™%˜‘‡OÆz±iße`÷DIœ®ł tŚīÆ}"·ŠąvuĪebq\•ž”xŪÅ·2|“ĘkJŽrJ\š­ĢŗrŹqūŁ‹u=ĄŌ‘ ˆ]DŖ“ŠŅÕąÕ¤³Ymōėˆ—Ą>ųj•.ldd·–Ī@pqQYŽŪCz±Ķ=ō²mą,YøuKåŖü5f¹y]›čōŹš6”āÉuAc|É °ä—Œn>ÕCXµķ§7w÷öŪśŸ”ć·J×ń†‘pm…Ü2ޤó&I?cŚ.­!Ūū™¦Įł„n~‚“śÆ»ĻdżTŒēW›Ü›Õy-2ķ“Ž·G©kw“ĖŽĢ<}r+ā,ž6kö;Ķā\‚Q?‰ÅVÖ<%Ģķu«\YāCø¬2cŅŗ­ĻĮvŗ¢ų\œ61ļÅz7Ćė¾%Ӗˆ š(ž’™Į>üV—ˆōęG-ƒ§ĢHĮĘķÄ{šź§7UrŹ./Ė•žb坆·2~m_…#š/Ś@Ōµ}RŲ1éēķĄõ8®oö‚Ń|%’ÜčÕܦ1“œ²·Ó5KÄ7Ś5§öŽœ–f' bNSłÆGń'оźū'ŲįY#ˆĘć EsT©<=U¹[ü‘­Z514]£{ÓĻųȓO &332†#<š¼DOd§Č£i5éņų/ĆžÕ²Ömķä*Y·ÄóŸé“hw2Y%Ōw1+żõ^æÖ½XŌ„?įK^Ūw-zi*ŠvīןeŖCĻńĄ>•Q“1¼xÅ>99 ĮńV/„·–XāueūĶÜńF·µī™@ķTnČR63É#ƒCŖ¤™ ņ‘Šõ£$·B1žõVŚGNā‘Õsx#5¤†öœR²Æ `cœŃUIĒĀ”³TŪŠ–‹ŽŌŲćbłŻ•Ē;Ę<œ©Ļ'5ēb‚”ėžµ7ģ>Y]1¬æ¼$£tü…ˆcĻ95"I– 9Vć=)1ŗdćÆZ„}†ßB „ƒ¦(ĘĻSžõ6āøsüé$äc8,sEō°¹š{hDä“ŌƒM!öćiö稧²åŌ) ķÉ4˜ĘIČ”e&1xaņž;šd€qßæ½N€äēš¤+»œŠ.ŗĖ}Yó‚_ZiĪŠwcޤœ2¶ ²“ėQņ/9$b©'ŌÅŚśŸŽxć9Ķ5ĻĢp3ĻZ|‰Ę3Ž8&”`ČsĪXsļJM”£Š÷éųŌNPpZx$téŠĘÜ(qÉɤŸC9Ž+Ż } žŖw 7銑°A8l qČź*ō±<Ś VVˆnĒJcEµ \Z‘”nØ֗h+•oņ5<ÅĘ%r9Ē©¤e.§z¶‹³2ćLø‹Ė•ČϽ=§ .P•<ņ)¬Üt皓ĆåēÆõ¦Ę£nIēµ[Ų˜ŽŚ‘Dæ.AÜ1Š^BŒ(oCSŖ$’xf£“LzŌ&ŗšĻķČÉśT9*~^?¼ē§-ųŅHØpvóŅ«šĀå+"p ³|£猁ž=½źeM½:iŸ0zŽę„²zČ8ÜAķHķĘćéW×cǵNŅ9Øä‰~PēhO£*Rv*ø; žF˜T€aĻēVš"¼g·ėL*Iō÷õ¤LŖč w =) ¤ «2)SņĘ˜ œ7|sWc6Ūw"‘B'©”WŪÖ¦Bą}éĢČtwéKRŌļ¹I>‹ŒŠŒØPy9ĒjšE §ūRÄ~†‹¤+H (䓚pœ÷§ø }sėH8^ t¤ŻĆ”d©ĪƒŒÓKĀž£½L IØžėī#wµC}…ļķHź8Ķ7qŚvē>ōą2q“zŠ¢ h0ʞ^6äĶ>P[+éCŸŸœŅĒŽ9¢ą£„Ł»cĻ0’r‡XčisĻZvģ+£rĮĄĄŻŚ“#8~Z(®y­Nå&ŃNīį§Ś©I.NCgŠ(®ˆE²nåy$ć©ę˜¬ĒœQEtE-Œg&*£īAĮ­ 8o#h¢«­Œłk;D`Éc]_„ü>ņȬcśQEaVME“uai©M&z®§Ccn­6Š»yćK‹! 0Üzh¢¼J•Zž®2‚I#(&`w¶=«WO·…#p:“EéT“‚“Njt滩jPZFU ÜFsÓMqļƒŅŠ+£J<¼Ģå­VWå/Y]\".³Z6ŗÅŌręķš(®ØŅ‹Z£ˆØžŒķFyę½kƞ$ŅZÕo-øäąQE|Ök…§{­®Źźūh8ÕIš7ķ¢ŽCū‚€æŠą|}į2ń4¶ģŒHč(¢¼œ&.­)¤żNlē/£9GCȇQ_y·ό¢ł“‘Ÿyq2&vįĶsśĢ­) š(­¤½Ū›AÜĻrÅśœśÕ»Kydä'ø¢ŠęZčĶTšv-<Ņ*ˆŌm\u¦ĀŒĶĘG½V¼ŗ¹īJ„#<Œ“V­ī~`*(¢†­±+U©<—P,g'ę?•Si„s¬GcEҹqEĖ€ģi҉p['š(„ʬ/hŠĘ¹“ Ł#Ö¤¶‘‰˜ŒöĶV-ó4®iڹbgėZ+$Éķ“QET"‹“÷n1®äFēŒŌ–sĒ#5Š×(¢“‰4õjēg¢McöeņlkAÆBˆ;u¢Št¤ŽŒU¢”¬OŚ‘ó1SӃV7E€w~'4Q]3åIŚńV\Æ'‹Ŗ˜F:ć©¢ŠnšµĖ„ōe¹¦X<Ž•ƒ«Üķ}ŽZœ{QELUŃĻSIY Õ `¬½Ļjķ¦ Ņ?Ī›Aõ¢Š–(÷.CöieUŽXzŌ‡ČH±Ī=č¢„ŻŠ”t¹ēś¶`„°+‰×%o<‚ł†h¢ŗ¢żÖĪ~Tēb¶–dYK+ėš–ńϘ sŸ­WÜģ“vH…Lģ»C1Z‘bpĆ$GQRäŃ)+Ųµoa<¬B–_­mŪh—/ŽąŠ (§ĪŅCöjö.Ųč–Ū›ž;Ó/,,!“ ܞĆҊ+DŪ0zŹĆ­’4R#\ėV,1tøŒ—'ÅV2}ŖwęµĪ®×MYŌ+N›Ć00%߯N(¢—;‹²"–ę^”įĖuS†ė׊„i Ū¬ 26AąƒE¤ėJÖ9aB*„Ī—N±EÄ``ÉōØuż>åaÓ’ĀŠ(£6š BŠäŪGÖg•‹å0qóŪŅ“ˆģćßs&÷ œŌQ]2‚røBmCAņ_3ĘłĒiiŠn‘ˆć$E)ŻŲŚ)r\/õ+;TĮ9osŠäuæĘ]£‚6b88¢Š¶ŻŒŌU“fšĢŅG“朦ęMø$äcÖŠ+ .e©“dįš–ą³æc­Œf®>VŒ ½V|«BéŌ”„fIodcŒ¬ģMhژŃyRG|ōQI6Ė®’vDö°Ć=ĮŲ žŃhŚp ¶…ē“Š(­#Q„Ņ5^śŚÅ\ʃ8Ļ®Mr>(ńŅ–Pv˜Š+²LR»ŌāumA¾lČyļžµ‰su/DœQErÕgBd‰$Ī£9b2@ėZ¾Óułš« źŁ¢Š”ē'”ŲZčöś~$½“{0i[źšÄ…lÓĖ8Ę}h¢Š‘ŅåBņVlĖŌęø»fV˜å†=Ŗœz4²EŽ\cœŃEiE&µ1mÅ»ŗ&†ŃÉ ŻĘŖtĀćl±œžæ/Z(®ØĮ-Ž:•Ü[m8fܱ…ō>•­qöHķf‘U±łŃE)1-Ģź—ÖĶ”fwčž+īu+‰‹[+"õČ4QXߚZ Z7D½ņßĢFļā&£’ųD2'Æ4Q[ʊŗ&5+˨ƶ’ ąŽŚõOžlrIęŠ+Šrgjŗ›s©F#+ó1·z­&¤Š  ć±¢ŠĶĶ£¢‹z¢…Ö§Ņ£pb+2{Ö$įǽTŖ’2©ŁVņģ•˜ZĄÖ®gŁŗ-Ås‚h¢µrrI35;¢„l§2d1õ«‹yˆ‹Ÿj(؝(ĒcXĻ›V‹ŽŹvĒĘ¬Ł_;7V¹¢ŠŪŁ„g^\ö±³bĻ3޹#ō­fė‚Wڊ*”ŗFó“P+Ü#p9ćŅ­éÓ£:‡Ēć֊+zŌŅzÅŻo‡ķ–Y7|ųWMcĘŹÆ§4QWHå«/y#£Ó#ČRp8üėTK`AE­ō9źobklŖœż*śHØASėŽsEt×6ęr›ŠV-ŲĶ,“+“*åÕ²]cvšėE›Ž«ŽdcKʆėžj cMu¶8; x¢ŠMŁŲĀīĒ5ØŪj Ų[ęč &¹ŻNÓ[Œ3ż„‹’tšR匟¼‰uŖFܲdV3ų‘cßzÕ„¦ŸIi D ōsĻįE“” ģu¬uiCŽf͜ZœĖ‰ļa‰G\Œ’} +ņ7ŻM!”ą(«vŽČŹ.SZ²sį[4€+…#•ߏ’]2ĖHÓķäŵ²;ōÉęŠ*c+ō*1q[³£Ó“ōpŒÉBniЈ”lŲø¶(¢–ļQ&÷,ķ2DU¶•ĒjØÖŁ%”E8붊(»[29Tµh>Él‘€Ø‡šļVmą†Yō`qĶQvĶiŅ.ʃZŚ,aUŌ_z`XB²Ø Ē#¢ŠĶÉßsnDÓl­±dʬä©ōØu[w“³/“Ģ9ÅV‘wi3šo’Čą¼Gāy’+#Ą8mµĮź÷>"Ō‰™#øąQE]j0„ˆR­)Y²„¾‡«H»üÄČ€ŁĶkč>׌Ɇē9āŠ+— N\ŅFµquT¹SŠŽ}3X€€ÓJJu ėW“¤ŌÉ mż2ŁÅVΜZnĘ U;\ķt[ ŅŁZf`O\šøULlŸ—ÆZ(¬m„ĪŹ2rܵocsķõ¬½{ķ2¢[),h¢Ŗ2¾„ŌI;œg‹.õHBŲĘć°É5…eq«²nø„ a–.•Q*1’øSÆ%tŅ"™äÄØģĻ×-[Zg‡ōŁ‘e”“+ •Vä(®Oi(K•Bœgµcq“im¬€“µW\}ā:Ut}jīķPIäØĄć4Q[ssīeĢāÜWC«Óģn,-B¬2Jćåŗš†{]j{Ÿ–UHیČ¢ŠéŒRF>ŚrŻ‘Üčßgīe–yIćCu5µŸ”‘ØĻŹ?śōQKGB•I6ī¹Œ\p`Ęrr9­­w^Ņ­cŒBĶ<‡Ŗ­WžŖĖŚØž‹‚öi„oC*OßH ŚŁł`’59šžę0ņ^Ę29Q]-$bß½aöŅ­¹ß=äØõ«éy¦ŽŪ!=h¢±Ŗś¢©Ā2V’-i–¶ńƶ8Ćqœ‘QźQځóŪ®Sß4QZĘī-\šōc’*ėŗL^V÷ČGĀqX¾:>“vŪyŹżę‘IĶV0żä\Yj œÓG}„jŗqµEdį±Łz×ć=jÆ7ŧČg”ü½č¢®8X·«eJ¢qK•~mVöÕdøF³‡ —QšōRźå9®[Š+ ÉŅ•¢MH©-M»ģ“Ū"hƒc?)®_ÄWS?ś˜”łæ‰ū~4QOZRz™āi(-‡öŪÄo-ē·EĘāAę«_EØÜF×6÷[z’3š(”Ōjn+cIGž’Ø÷0£×Žä†ķfžCĒе§jÖā{·’Ö&õbh¢›NŻeŅ|é©#JßBšŌf(i%č$óIć•Ÿ«č7W­ä\JTtSÓ4QRžšź:­Ęź-ƛ+ųgLŸMŌc–埌 s^•§É¦Ļhx‚·P^Š+eN*\ĖCĖšŃž¾¦ˆü)k©Ž‰¬ī‚īźJč[uČ«‘iś6™‡_/Ķ^Nīh¢­ĶÅčg)&ßCĘ^*hmd 2ŖvŪĶx?ďI¹œŹ wēQ[ÓŁ²7/CĘ|Kāe¹r& 7$õ뙹¾¹˜6ĄĶœćŒŃEr՛m#Ŗ)E]ō­S±33õÕÖx{Į7×1 nĪ2WŠ*”¹ŒėŌiØ­Cš—Ćoŗnć-„ČNs]–ąļŹ1(Ś:bŠ+9É­ŒhžņK˜ķü/ąK8Ÿ.<üC×i£ųFŁe ®VŠ+ŹśÄµg­ ,M‡“Ūd“ƒ)Čw­Ķ2Y÷AFrŃEsT›µĶŌR‘¦/ąŽæZTņ‘ sŌāŠ+‘É÷4Ó{[HŅ‚~\cŒzT"łFzš(¬äõ±„’1>å ŻŖh–šŖüīć'梊ÕlerT·żņ?šŲSÓµ?S’X·µ-ŌCiÉķŠ(©k©¢wZ”Č!@ŽE:ømōāŠ)ĆRj=‰•[±ĻłõØ_pROø=č¢šŌ™É«Xm»Õ€ĻZuÄYSµ±øv8¢Š©;+“ĢīExĪĪć®NM»ˆĘļéE mźv[A#v,xąŸ¶=‡’FEU=LŌUīV™¾c“Ž•°'ęČ>Ż1EI&6DīĻéLAµJœäš(©·C¶łXtČÉā­ü$ż}h¢žŪk4:7b õśö„u•T*t>“QDōF‘z )Ų¼ÆĻ£vän¹¢Š ī®c7ØŅq‘Œ{ÓOAĘqE&TjćĮēš¤oĻLQE&µŽĆdPzuīÉČĘP»ĢÄ8(;ēŠIAņĪ(¢šźõ@Ś==éąņsÉ4QVµBŒžĀLJÆŠTĆ:ķ8Ąäš(©¶…Ā ±$dƒ •<ӟĪMVw*jĪÄdŒgpō¤ Ć&Š+]“3ūCžP6īäóQŹAīńéE6,N¼ńŠHC ŁĒ^µTł ģ)¾ź†h²8ęŠ+DŗŁ (ŹłéķķGńg‘E½E ŌóųS%$/§QNŚ\Q“oQW”Kµ}Qr[?’Łkore-3.3.1/examples/generic/assets/params.html000066400000000000000000000022711347522026400213720ustar00rootroot00000000000000 Kore params test

You can pass one GET parameter (arg1), any other GET parameter will be filtered out

Only two out of the three input fields will be visible to Kore.

The first field accepts the input "test"

The second field accepts anything like /test/[a-z]*

The third field will be removed by Kore, as it is not in the params block configured for this page.

GET param arg1: $arg1$

GET param arg2: $arg2$

test1: $test1$

test2: $test2$

test3: $test3$

kore-3.3.1/examples/generic/assets/private.html000066400000000000000000000005741347522026400215650ustar00rootroot00000000000000 Kore Authentication tests

The cookie session_id should now be set.

You can continue to view page handler in auth block

kore-3.3.1/examples/generic/assets/private_test.html000066400000000000000000000005411347522026400226160ustar00rootroot00000000000000 Kore Authentication tests

If you see this, the authentication worked. This page should redirect back to /private once you remove your session_id cookie.

kore-3.3.1/examples/generic/assets/style.css000066400000000000000000000003401347522026400210660ustar00rootroot00000000000000body { width: 100%; margin: 0px; color: #000; overflow: hidden; background-color: #fff; } .content { width: 800px; margin-left: auto; margin-right: auto; margin-top: 100px; font-size: 60px; text-align: center; } kore-3.3.1/examples/generic/assets/upload.html000066400000000000000000000007751347522026400214020ustar00rootroot00000000000000 Kore upload test

$upload$

$firstname$

kore-3.3.1/examples/generic/conf/000077500000000000000000000000001347522026400166425ustar00rootroot00000000000000kore-3.3.1/examples/generic/conf/build.conf000066400000000000000000000011131347522026400206040ustar00rootroot00000000000000# generic build config # You can switch flavors using: kodev flavor [newflavor] # The cflags below are shared between flavors cflags=-Wall -Wmissing-declarations -Wshadow cflags=-Wstrict-prototypes -Wmissing-prototypes cflags=-Wpointer-arith -Wcast-qual -Wsign-compare mime_add=jpg:image/jpg mime_add=css:text/css; charset=utf-8 mime_add=html:text/html; charset=utf-8 dev { # These cflags are added to the shared ones when # you build the "dev" flavor. cflags=-g } #prod { # You can specify additional CFLAGS here which are only # included if you build with the "prod" flavor. #} kore-3.3.1/examples/generic/conf/generic.conf000066400000000000000000000021521347522026400211250ustar00rootroot00000000000000# Placeholder configuration bind 127.0.0.1 8888 load ./generic.so example_load tls_dhparam dh2048.pem http_body_max 1024000000 http_body_disk_offload 1024000 validator v_example function v_example_func validator v_regex regex ^/test/[a-z]*$ validator v_number regex ^[0-9]*$ validator v_session function v_session_validate authentication auth_example { authentication_type cookie authentication_value session_id authentication_validator v_session authentication_uri /private } domain * { certfile cert/server.pem certkey cert/key.pem accesslog kore_access.log static /css/style.css asset_serve_style_css static / asset_serve_index_html static /intro.jpg asset_serve_intro_jpg static /b64test serve_b64test static /upload serve_file_upload static /validator serve_validator static /params-test serve_params_test static /private serve_private static /private/test asset_serve_private_test_html auth_example params post /params-test { validate test1 v_example validate test2 v_regex } params get /params-test { validate arg1 v_example validate id v_number } } kore-3.3.1/examples/generic/src/000077500000000000000000000000001347522026400165045ustar00rootroot00000000000000kore-3.3.1/examples/generic/src/example.c000066400000000000000000000161521347522026400203100ustar00rootroot00000000000000/* * Copyright (c) 2013 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include #include #include #include "assets.h" int example_load(int); int serve_b64test(struct http_request *); int serve_file_upload(struct http_request *); int serve_validator(struct http_request *); int serve_params_test(struct http_request *); int serve_private(struct http_request *); int serve_private_test(struct http_request *); int v_example_func(struct http_request *, char *); int v_session_validate(struct http_request *, char *); void test_base64(u_int8_t *, u_int32_t, struct kore_buf *); char *b64tests[] = { "1234567890", "One two three four five", "Man", "any carnal pleasure.", "any carnal pleasure", "any carnal pleas", "I am a nobody, nobody is perfect, therefor I am.", NULL }; int example_load(int state) { switch (state) { case KORE_MODULE_LOAD: kore_log(LOG_NOTICE, "module loading"); /* Set server version */ http_server_version("Server/0.1"); break; case KORE_MODULE_UNLOAD: kore_log(LOG_NOTICE, "module unloading"); break; default: kore_log(LOG_NOTICE, "state %d unknown!", state); break; } return (KORE_RESULT_OK); } int serve_b64test(struct http_request *req) { int i; size_t len; struct kore_buf *res; u_int8_t *data; res = kore_buf_alloc(1024); for (i = 0; b64tests[i] != NULL; i++) test_base64((u_int8_t *)b64tests[i], strlen(b64tests[i]), res); data = kore_buf_release(res, &len); http_response_header(req, "content-type", "text/plain"); http_response(req, 200, data, len); kore_free(data); return (KORE_RESULT_OK); } int serve_file_upload(struct http_request *req) { u_int8_t *d; struct kore_buf *b; struct http_file *f; size_t len; char *name, buf[BUFSIZ]; b = kore_buf_alloc(asset_len_upload_html); kore_buf_append(b, asset_upload_html, asset_len_upload_html); if (req->method == HTTP_METHOD_POST) { if (req->http_body_fd != -1) kore_log(LOG_NOTICE, "file is on disk"); http_populate_multipart_form(req); if (http_argument_get_string(req, "firstname", &name)) { kore_buf_replace_string(b, "$firstname$", name, strlen(name)); } else { kore_buf_replace_string(b, "$firstname$", NULL, 0); } if ((f = http_file_lookup(req, "file")) != NULL) { (void)snprintf(buf, sizeof(buf), "%s is %ld bytes", f->filename, f->length); kore_buf_replace_string(b, "$upload$", buf, strlen(buf)); } else { kore_buf_replace_string(b, "$upload$", NULL, 0); } } else { kore_buf_replace_string(b, "$upload$", NULL, 0); kore_buf_replace_string(b, "$firstname$", NULL, 0); } d = kore_buf_release(b, &len); http_response_header(req, "content-type", "text/html"); http_response(req, 200, d, len); kore_free(d); return (KORE_RESULT_OK); } void test_base64(u_int8_t *src, u_int32_t slen, struct kore_buf *res) { char *in; size_t len; u_int8_t *out; kore_buf_appendf(res, "test '%s'\n", src); if (!kore_base64_encode(src, slen, &in)) { kore_buf_appendf(res, "encoding '%s' failed\n", src); } else { kore_buf_appendf(res, "encoded: '%s'\n", in); if (!kore_base64_decode(in, &out, &len)) { kore_buf_appendf(res, "decoding failed\n"); } else { kore_buf_appendf(res, "decoded: "); kore_buf_append(res, out, len); kore_buf_appendf(res, "\n"); kore_free(out); } kore_free(in); } kore_buf_appendf(res, "\n"); } int serve_validator(struct http_request *req) { if (kore_validator_run(NULL, "v_example", "test")) kore_log(LOG_NOTICE, "v_example ok (expected)"); else kore_log(LOG_NOTICE, "v_example failed"); if (kore_validator_run(NULL, "v_regex", "/test/123")) kore_log(LOG_NOTICE, "regex #1 ok"); else kore_log(LOG_NOTICE, "regex #1 failed (expected)"); if (kore_validator_run(NULL, "v_regex", "/test/joris")) kore_log(LOG_NOTICE, "regex #2 ok (expected)"); else kore_log(LOG_NOTICE, "regex #2 failed"); http_response(req, 200, "OK", 2); return (KORE_RESULT_OK); } int serve_params_test(struct http_request *req) { struct kore_buf *b; u_int8_t *d; size_t len; int r, i; char *test, name[10]; if (req->method == HTTP_METHOD_GET) http_populate_get(req); else if (req->method == HTTP_METHOD_POST) http_populate_post(req); b = kore_buf_alloc(asset_len_params_html); kore_buf_append(b, asset_params_html, asset_len_params_html); /* * The GET parameters will be filtered out on POST. */ if (http_argument_get_string(req, "arg1", &test)) { kore_buf_replace_string(b, "$arg1$", test, strlen(test)); } else { kore_buf_replace_string(b, "$arg1$", NULL, 0); } if (http_argument_get_string(req, "arg2", &test)) { kore_buf_replace_string(b, "$arg2$", test, strlen(test)); } else { kore_buf_replace_string(b, "$arg2$", NULL, 0); } if (req->method == HTTP_METHOD_GET) { kore_buf_replace_string(b, "$test1$", NULL, 0); kore_buf_replace_string(b, "$test2$", NULL, 0); kore_buf_replace_string(b, "$test3$", NULL, 0); if (http_argument_get_uint16(req, "id", &r)) kore_log(LOG_NOTICE, "id: %d", r); else kore_log(LOG_NOTICE, "No id set"); http_response_header(req, "content-type", "text/html"); d = kore_buf_release(b, &len); http_response(req, 200, d, len); kore_free(d); return (KORE_RESULT_OK); } for (i = 1; i < 4; i++) { (void)snprintf(name, sizeof(name), "test%d", i); if (http_argument_get_string(req, name, &test)) { (void)snprintf(name, sizeof(name), "$test%d$", i); kore_buf_replace_string(b, name, test, strlen(test)); } else { (void)snprintf(name, sizeof(name), "$test%d$", i); kore_buf_replace_string(b, name, NULL, 0); } } http_response_header(req, "content-type", "text/html"); d = kore_buf_release(b, &len); http_response(req, 200, d, len); kore_free(d); return (KORE_RESULT_OK); } int serve_private(struct http_request *req) { http_response_header(req, "content-type", "text/html"); http_response_header(req, "set-cookie", "session_id=test123"); http_response(req, 200, asset_private_html, asset_len_private_html); return (KORE_RESULT_OK); } int v_example_func(struct http_request *req, char *data) { kore_log(LOG_NOTICE, "v_example_func called"); if (!strcmp(data, "test")) return (KORE_RESULT_OK); return (KORE_RESULT_ERROR); } int v_session_validate(struct http_request *req, char *data) { kore_log(LOG_NOTICE, "v_session_validate: %s", data); if (!strcmp(data, "test123")) return (KORE_RESULT_OK); return (KORE_RESULT_ERROR); } kore-3.3.1/examples/headers/000077500000000000000000000000001347522026400157145ustar00rootroot00000000000000kore-3.3.1/examples/headers/.gitignore000077500000000000000000000000431347522026400177040ustar00rootroot00000000000000*.o .objs headers.so assets.h cert kore-3.3.1/examples/headers/README.md000066400000000000000000000003721347522026400171750ustar00rootroot00000000000000Example on how to read HTTP request headers and set your own custom ones. Run: ``` # kodev run ``` Test: ``` # curl -H "X-Custom-Header: testing" -i -k https://127.0.0.1:8888 ``` If X-Custom-Header is given, it will be mirrored in the response. kore-3.3.1/examples/headers/conf/000077500000000000000000000000001347522026400166415ustar00rootroot00000000000000kore-3.3.1/examples/headers/conf/build.conf000066400000000000000000000007471347522026400206170ustar00rootroot00000000000000# headers build config # You can switch flavors using: kodev flavor [newflavor] # The cflags below are shared between flavors cflags=-Wall -Wmissing-declarations -Wshadow cflags=-Wstrict-prototypes -Wmissing-prototypes cflags=-Wpointer-arith -Wcast-qual -Wsign-compare dev { # These cflags are added to the shared ones when # you build the "dev" flavor. cflags=-g } #prod { # You can specify additional CFLAGS here which are only # included if you build with the "prod" flavor. #} kore-3.3.1/examples/headers/conf/headers.conf000077500000000000000000000002531347522026400211260ustar00rootroot00000000000000# Placeholder configuration bind 127.0.0.1 8888 load ./headers.so tls_dhparam dh2048.pem domain * { certfile cert/server.pem certkey cert/key.pem static / page } kore-3.3.1/examples/headers/src/000077500000000000000000000000001347522026400165035ustar00rootroot00000000000000kore-3.3.1/examples/headers/src/headers.c000077500000000000000000000010741347522026400202670ustar00rootroot00000000000000#include #include int page(struct http_request *); int page(struct http_request *req) { const char *custom; /* * We'll lookup if the X-Custom-Header is given in the request. * If it is we'll set it as a response header as well. * * The value returned by http_request_header() should not be freed. */ if (http_request_header(req, "x-custom-header", &custom)) http_response_header(req, "x-custom-header", custom); /* Return 200 with "ok\n" to the client. */ http_response(req, 200, "ok\n", 3); return (KORE_RESULT_OK); } kore-3.3.1/examples/integers/000077500000000000000000000000001347522026400161215ustar00rootroot00000000000000kore-3.3.1/examples/integers/.gitignore000077500000000000000000000000441347522026400201120ustar00rootroot00000000000000*.o .objs integers.so static.h cert kore-3.3.1/examples/integers/README.md000066400000000000000000000003671347522026400174060ustar00rootroot00000000000000Test parameter to integer conversions. Run: ``` # kodev run ``` Test: ``` # curl -i -k https://127.0.0.1:8888/?id=123123 # curl -i -k https://127.0.0.1:8888/?id=-123123 ``` The correct integer types should only be represented in the output. kore-3.3.1/examples/integers/conf/000077500000000000000000000000001347522026400170465ustar00rootroot00000000000000kore-3.3.1/examples/integers/conf/build.conf000066400000000000000000000007501347522026400210160ustar00rootroot00000000000000# integers build config # You can switch flavors using: kodev flavor [newflavor] # The cflags below are shared between flavors cflags=-Wall -Wmissing-declarations -Wshadow cflags=-Wstrict-prototypes -Wmissing-prototypes cflags=-Wpointer-arith -Wcast-qual -Wsign-compare dev { # These cflags are added to the shared ones when # you build the "dev" flavor. cflags=-g } #prod { # You can specify additional CFLAGS here which are only # included if you build with the "prod" flavor. #} kore-3.3.1/examples/integers/conf/integers.conf000077500000000000000000000005341347522026400215420ustar00rootroot00000000000000# Placeholder configuration bind 127.0.0.1 8888 load ./integers.so workers 2 worker_max_connections 5000 tls_dhparam dh2048.pem validator v_id regex ^-?[0-9]*.?[0-9]+$ domain * { certfile cert/server.pem certkey cert/key.pem static / page # allowed parameters in the query string for GETs params qs:get / { validate id v_id } } kore-3.3.1/examples/integers/src/000077500000000000000000000000001347522026400167105ustar00rootroot00000000000000kore-3.3.1/examples/integers/src/check_integers.c000077500000000000000000000024511347522026400220360ustar00rootroot00000000000000#include #include int page(struct http_request *); int page(struct http_request *req) { float fl; double dbl; int16_t s16; u_int16_t u16; int32_t s32; int64_t s64; u_int64_t u64; u_int32_t u32; size_t len; struct kore_buf *buf; u_int8_t c, *data; http_populate_get(req); buf = kore_buf_alloc(128); if (http_argument_get_byte(req, "id", &c)) kore_buf_appendf(buf, "byte\t%c\n", c); if (http_argument_get_int16(req, "id", &s16)) kore_buf_appendf(buf, "int16\t%d\n", s16); if (http_argument_get_uint16(req, "id", &u16)) kore_buf_appendf(buf, "uint16\t%d\n", u16); if (http_argument_get_int32(req, "id", &s32)) kore_buf_appendf(buf, "int32\t%d\n", s32); if (http_argument_get_uint32(req, "id", &u32)) kore_buf_appendf(buf, "uint32\t%d\n", u32); if (http_argument_get_int64(req, "id", &s64)) kore_buf_appendf(buf, "int64\t%ld\n", s64); if (http_argument_get_uint64(req, "id", &u64)) kore_buf_appendf(buf, "uint64\t%lu\n", u64); if (http_argument_get_float(req, "id", &fl)) kore_buf_appendf(buf, "float\t%g\n", fl); if (http_argument_get_double(req, "id", &dbl)) kore_buf_appendf(buf, "double\t%g\n", dbl); data = kore_buf_release(buf, &len); http_response(req, 200, data, len); kore_free(data); return (KORE_RESULT_OK); } kore-3.3.1/examples/json_yajl/000077500000000000000000000000001347522026400162715ustar00rootroot00000000000000kore-3.3.1/examples/json_yajl/.gitignore000077500000000000000000000000451347522026400202630ustar00rootroot00000000000000*.o .objs json_yajl.so assets.h cert kore-3.3.1/examples/json_yajl/README.md000066400000000000000000000010411347522026400175440ustar00rootroot00000000000000This example demonstrates how you can use external libs in your application. In this case we link against yajl (Yet Another JSON library) in order to parse a JSON string that was POSTed to the server. Take a peek at conf/build.conf for different build flavors and how to link to other libraries. Run: ``` $Ā kodev run ``` Test: ``` $ curl -i -k -d '{"foo":{"bar": "Hello world"}}' https://127.0.0.1:8888 ``` The result should echo back the foo.bar JSON path value: Hello world. The yajl repo is available @ https://github.com/lloyd/yajl kore-3.3.1/examples/json_yajl/conf/000077500000000000000000000000001347522026400172165ustar00rootroot00000000000000kore-3.3.1/examples/json_yajl/conf/build.conf000066400000000000000000000007711347522026400211710ustar00rootroot00000000000000# json_yajl build config # You can switch flavors using: kodev flavor [newflavor] # The cflags below are shared between flavors cflags=-Wall -Wmissing-declarations -Wshadow cflags=-Wstrict-prototypes -Wmissing-prototypes cflags=-Wpointer-arith -Wcast-qual -Wsign-compare dev { # These cflags are added to the shared ones when # you build the "dev" flavor. cflags=-g ldflags=-lyajl } #prod { # You can specify additional CFLAGS here which are only # included if you build with the "prod" flavor. #} kore-3.3.1/examples/json_yajl/conf/json_yajl.conf000077500000000000000000000002661347522026400220640ustar00rootroot00000000000000# Placeholder configuration bind 127.0.0.1 8888 load ./json_yajl.so tls_dhparam dh2048.pem domain 127.0.0.1 { certfile cert/server.pem certkey cert/key.pem static / page } kore-3.3.1/examples/json_yajl/src/000077500000000000000000000000001347522026400170605ustar00rootroot00000000000000kore-3.3.1/examples/json_yajl/src/json_yajl.c000077500000000000000000000051741347522026400212260ustar00rootroot00000000000000/* * Copyright (c) 2013-2018 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include int page(struct http_request *); int page(struct http_request *req) { ssize_t ret; struct kore_buf *buf; char *body; yajl_val node, v; char eb[1024]; u_int8_t data[BUFSIZ]; const char *path[] = { "foo", "bar", NULL }; /* We only allow POST/PUT methods. */ if (req->method != HTTP_METHOD_POST && req->method != HTTP_METHOD_PUT) { http_response_header(req, "allow", "POST, PUT"); http_response(req, HTTP_STATUS_METHOD_NOT_ALLOWED, NULL, 0); return (KORE_RESULT_OK); } /* * Read the entire received body into a memory buffer. */ buf = kore_buf_alloc(128); for (;;) { ret = http_body_read(req, data, sizeof(data)); if (ret == -1) { kore_buf_free(buf); kore_log(LOG_NOTICE, "error reading body"); http_response(req, 500, NULL, 0); return (KORE_RESULT_OK); } if (ret == 0) break; kore_buf_append(buf, data, ret); } /* Grab our body data as a NUL-terminated string. */ body = kore_buf_stringify(buf, NULL); /* Parse the body via yajl now. */ node = yajl_tree_parse(body, eb, sizeof(eb)); if (node == NULL) { if (strlen(eb)) { kore_log(LOG_NOTICE, "parse error: %s", eb); } else { kore_log(LOG_NOTICE, "parse error: unknown"); } kore_buf_free(buf); http_response(req, 400, NULL, 0); return (KORE_RESULT_OK); } /* Reuse old buffer, don't need it anymore for body. */ kore_buf_reset(buf); /* Attempt to grab foo.bar from the JSON tree. */ v = yajl_tree_get(node, path, yajl_t_string); if (v == NULL) { kore_buf_appendf(buf, "no such path: foo.bar\n"); } else { kore_buf_appendf(buf, "foo.bar = '%s'\n", YAJL_GET_STRING(v)); } /* Release the JSON tree now. */ yajl_tree_free(node); /* Respond to the client. */ http_response(req, 200, buf->data, buf->offset); kore_buf_free(buf); return (KORE_RESULT_OK); } kore-3.3.1/examples/jsonrpc/000077500000000000000000000000001347522026400157575ustar00rootroot00000000000000kore-3.3.1/examples/jsonrpc/.gitignore000077500000000000000000000000611347522026400177470ustar00rootroot00000000000000*.o .objs jsonrpc.so assets.h cert .*.swp .*.swo kore-3.3.1/examples/jsonrpc/README.md000066400000000000000000000034731347522026400172450ustar00rootroot00000000000000This example demonstrates how you can use the JSON-RPC module in your application. Note that the module depends upon the third-party library `yajl` (Yet Another JSON library) to parse and produce messages. As for the `yajl_json` example, conf/build.conf shows how to link to the library. This example needs kore having been compiled with `JSONRPC` (and so `HTTP`) activated. Run: ``` $Ā kodev run ``` Test: ``` $ curl -i -k \ -d '{"id":1,"jsonrpc":"2.0","method":"echo","params":["Hello world"]}' \ https://127.0.0.1:8888/v1 ``` The result should echo back the string at `params`: Hello world. Alternatively, if you have bats installed: ``` $ bats test/integ/jsonrpc.bats ``` Will run a small test suite. The yajl repo is available @ https://github.com/lloyd/yajl JSONRPC Request Lifetime ------------------------ Currently, one HTTP request will (in most cases) provoke one and only one response. Batch mode is not supported yet, neither is websocket. As such `jsonrpc\_error` and `jsonrpc\_result` do clean the request after call. If however you want to abort the processed request, like by returning `KORE\_RESULT\_ERROR`, after it having been read, you need to clean it by calling `jsonrpc\_destroy\_request`. Other than that you shouldn't think about this function. Message Handling Log -------------------- The `jsonrpc\_request` keeps a log of messages with levels similar to those of syslog. Messages are added with jsonrpc_log(). By default messages of the log are added to the data member of the error responses if at levels EMERG, ERROR, WARNING and NOTICE. If you dont want log messages to be outputted zero the log_levels flag of the jsonrpc_request. Formatting responses -------------------- By default responses are not prettyfied. To do that set the appropriate flag in the jsonrpc_request structure. kore-3.3.1/examples/jsonrpc/conf/000077500000000000000000000000001347522026400167045ustar00rootroot00000000000000kore-3.3.1/examples/jsonrpc/conf/build.conf000066400000000000000000000007671347522026400206640ustar00rootroot00000000000000# jsonrpc build config # You can switch flavors using: kodev flavor [newflavor] # The cflags below are shared between flavors cflags=-Wall -Wmissing-declarations -Wshadow cflags=-Wstrict-prototypes -Wmissing-prototypes cflags=-Wpointer-arith -Wcast-qual -Wsign-compare dev { # These cflags are added to the shared ones when # you build the "dev" flavor. cflags=-g ldflags=-lyajl } #prod { # You can specify additional CFLAGS here which are only # included if you build with the "prod" flavor. #} kore-3.3.1/examples/jsonrpc/conf/jsonrpc.conf000066400000000000000000000002771347522026400212370ustar00rootroot00000000000000# Placeholder configuration bind 127.0.0.1 8888 load ./jsonrpc.so tls_dhparam dh2048.pem domain * { certfile cert/server.pem certkey cert/key.pem static / homepage static /v1 v1 } kore-3.3.1/examples/jsonrpc/src/000077500000000000000000000000001347522026400165465ustar00rootroot00000000000000kore-3.3.1/examples/jsonrpc/src/home.c000066400000000000000000000005211347522026400176400ustar00rootroot00000000000000#include #include int homepage(struct http_request *); int homepage(struct http_request *req) { static const char response_body[] = "JSON-RPC API\n"; http_response_header(req, "content-type", "text/plain"); http_response(req, 200, response_body, sizeof(response_body) - 1); return (KORE_RESULT_OK); } kore-3.3.1/examples/jsonrpc/src/v1.c000066400000000000000000000062061347522026400172440ustar00rootroot00000000000000#include #include #include #include #include #include #include int v1(struct http_request *); static int write_string(struct jsonrpc_request *req, void *ctx) { const unsigned char *str = (unsigned char *)ctx; return yajl_gen_string(req->gen, str, strlen((const char *)str)); } static int write_string_array_params(struct jsonrpc_request *req, void *ctx) { int status = 0; if (!YAJL_GEN_KO(status = yajl_gen_array_open(req->gen))) { for (size_t i = 0; i < req->params->u.array.len; i++) { yajl_val yajl_str = req->params->u.array.values[i]; char *str = YAJL_GET_STRING(yajl_str); if (YAJL_GEN_KO(status = yajl_gen_string(req->gen, (unsigned char *)str, strlen(str)))) break; } if (status == 0) status = yajl_gen_array_close(req->gen); } return status; } int v1(struct http_request *http_req) { struct jsonrpc_request req; int ret; /* We only allow POST/PUT methods. */ if (http_req->method != HTTP_METHOD_POST && http_req->method != HTTP_METHOD_PUT) { http_response_header(http_req, "allow", "POST, PUT"); http_response(http_req, HTTP_STATUS_METHOD_NOT_ALLOWED, NULL, 0); return (KORE_RESULT_OK); } /* Read JSON-RPC request. */ if ((ret = jsonrpc_read_request(http_req, &req)) != 0) return jsonrpc_error(&req, ret, NULL); /* Echo command takes and gives back params. */ if (strcmp(req.method, "echo") == 0) { if (!YAJL_IS_ARRAY(req.params)) { jsonrpc_log(&req, LOG_ERR, "Echo only accepts positional params"); return jsonrpc_error(&req, JSONRPC_INVALID_PARAMS, NULL); } for (size_t i = 0; i < req.params->u.array.len; i++) { yajl_val v = req.params->u.array.values[i]; if (!YAJL_IS_STRING(v)) { jsonrpc_log(&req, -3, "Echo only accepts strings"); return jsonrpc_error(&req, JSONRPC_INVALID_PARAMS, NULL); } } return jsonrpc_result(&req, write_string_array_params, NULL); } /* Date command displays date and time according to parameters. */ if (strcmp(req.method, "date") == 0) { time_t time_value; struct tm time_info; char timestamp[33]; struct tm *(*gettm)(const time_t *, struct tm *) = localtime_r; if (YAJL_IS_OBJECT(req.params)) { const char *path[] = {"local", NULL}; yajl_val bf; bf = yajl_tree_get(req.params, path, yajl_t_false); if (bf != NULL) gettm = gmtime_r; } else if (req.params != NULL) { jsonrpc_log(&req, LOG_ERR, "Date only accepts named params"); return jsonrpc_error(&req, JSONRPC_INVALID_PARAMS, NULL); } if ((time_value = time(NULL)) == -1) return jsonrpc_error(&req, -2, "Failed to get date time"); if (gettm(&time_value, &time_info) == NULL) return jsonrpc_error(&req, -3, "Failed to get date time info"); memset(timestamp, 0, sizeof(timestamp)); if (strftime_l(timestamp, sizeof(timestamp) - 1, "%c", &time_info, LC_GLOBAL_LOCALE) == 0) return jsonrpc_error(&req, -4, "Failed to get printable date time"); return jsonrpc_result(&req, write_string, timestamp); } return jsonrpc_error(&req, JSONRPC_METHOD_NOT_FOUND, NULL); } kore-3.3.1/examples/jsonrpc/test/000077500000000000000000000000001347522026400167365ustar00rootroot00000000000000kore-3.3.1/examples/jsonrpc/test/integ/000077500000000000000000000000001347522026400200445ustar00rootroot00000000000000kore-3.3.1/examples/jsonrpc/test/integ/jsonrpc.bats000066400000000000000000000062161347522026400224020ustar00rootroot00000000000000#!/usr/bin/env bats # Simple and non exhaustive test suite using bats: # https://github.com/sstephenson/bats PIDFILE=run/jsonrpc.pid CONFFILE=conf/jsonrpc.conf # Start and stop have to be tweaked before being used stop_app() { if [ -f "$PIDFILE" ]; then kill -QUIT `cat "$PIDFILE"` sleep 3 fi if [ -f "$PIDFILE" ]; then kill -KILL `cat "$PIDFILE"` sleep 2 fi } start_app() { stop_app kore -nrc "$CONFFILE" } query_with_content_type() { curl -q \ -H "Content-Type: $1" \ -X POST \ --raw \ -d "$2" \ -s -S \ --insecure \ "https://127.0.0.1:8888/v1" } query() { query_with_content_type "application/json" "$1" } grepstr() { declare result=$1 shift printf "%s" "$result" | grep "$@" >/dev/null } printrep() { declare query=$1 declare result=$2 printf "Sent:\n" printf "%s\n" "$query" printf "Received:\n" printf "%s\n" "$result" } @test "requests with no protocol returns nothing" { query='{"method":"foo","id":"foo"}' result=`query "$query"` printrep "$query" "$result" [ "$result" = "" ] } @test "requests with invalid protocol (1) returns nothing" { query='{"jsonrpc":"1.0","method":"foo","id":"foo"}' result=`query "$query"` printrep "$query" "$result" [ "$result" = "" ] } @test "requests with invalid protocol (2) returns nothing" { query='{"jsonrpc":2.0,"method":"foo","id":"foo"}' result=`query "$query"` printrep "$query" "$result" [ "$result" = "" ] } @test "requests with no method raise errors" { query='{"jsonrpc":"2.0","id":"foo"}' result=`query "$query"` printrep "$query" "$result" grepstr "$result" '"error"[ \t\n]*:[ \t\n]*{[ \t\n]*"code"' } @test "requests with invalid method raise errors" { query='{"jsonrpc":"2.0","method":1,"id":"foo"}' result=`query "$query"` printrep "$query" "$result" grepstr "$result" '"error"[ \t\n]*:[ \t\n]*{[ \t\n]*"code"' } @test "requests with unknown method raise errors" { query='{"jsonrpc":"2.0","method":"foobar","id":"foo"}' result=`query "$query"` printrep "$query" "$result" grepstr "$result" '"error"[ \t\n]*:[ \t\n]*{[ \t\n]*"code"' } @test "error responses give back the string request id" { query='{"jsonrpc":"2.0","id":"foo"}' result=`query "$query"` printrep "$query" "$result" grepstr "$result" '"error"[ \t\n]*:[ \t\n]*{[ \t\n]*"code"' grepstr "$result" '"id"[ \t\n]*:[ \t\n]*"foo"' } @test "error responses give back the integer request id" { query='{"jsonrpc":"2.0","id":1}' result=`query "$query"` printrep "$query" "$result" grepstr "$result" '"error"[ \t\n]*:[ \t\n]*{[ \t\n]*"code"' grepstr "$result" '"id"[ \t\n]*:[ \t\n]*1' } @test "result responses give back the string request id" { query='{"jsonrpc":"2.0","method":"echo","params":["foobar"],"id":"tau"}' result=`query "$query"` printrep "$query" "$result" grepstr "$result" '"result"[ \t\n]*:[ \t\n]*[[ \t\n]*"foobar"[ \t\n]*]' grepstr "$result" '"id"[ \t\n]*:[ \t\n]*"tau"' } @test "result responses give back the integer request id" { query='{"jsonrpc":"2.0","method":"echo","params":["foobar"],"id":6}' result=`query "$query"` printrep "$query" "$result" grepstr "$result" '"result"[ \t\n]*:[ \t\n]*[[ \t\n]*"foobar"[ \t\n]*]' grepstr "$result" '"id"[ \t\n]*:[ \t\n]*6' } kore-3.3.1/examples/memtag/000077500000000000000000000000001347522026400155535ustar00rootroot00000000000000kore-3.3.1/examples/memtag/.gitignore000066400000000000000000000000521347522026400175400ustar00rootroot00000000000000*.o .flavor .objs memtag.so assets.h cert kore-3.3.1/examples/memtag/conf/000077500000000000000000000000001347522026400165005ustar00rootroot00000000000000kore-3.3.1/examples/memtag/conf/build.conf000066400000000000000000000017431347522026400204530ustar00rootroot00000000000000# memtag build config # You can switch flavors using: kodev flavor [newflavor] # Set to yes if you wish to produce a single binary instead # of a dynamic library. If you set this to yes you must also # set kore_source together with kore_flavor. #single_binary=no #kore_source=/home/joris/src/kore #kore_flavor= # The flags below are shared between flavors cflags=-Wall -Wmissing-declarations -Wshadow cflags=-Wstrict-prototypes -Wmissing-prototypes cflags=-Wpointer-arith -Wcast-qual -Wsign-compare cxxflags=-Wall -Wmissing-declarations -Wshadow cxxflags=-Wpointer-arith -Wcast-qual -Wsign-compare # Mime types for assets served via the builtin asset_serve_* #mime_add=txt:text/plain; charset=utf-8 #mime_add=png:image/png #mime_add=html:text/html; charset=utf-8 dev { # These flags are added to the shared ones when # you build the "dev" flavor. cflags=-g cxxflags=-g } #prod { # You can specify additional flags here which are only # included if you build with the "prod" flavor. #} kore-3.3.1/examples/memtag/conf/memtag.conf000066400000000000000000000002531347522026400206210ustar00rootroot00000000000000# memtag configuration bind 127.0.0.1 8888 load ./memtag.so init tls_dhparam dh2048.pem domain * { certfile cert/server.pem certkey cert/key.pem static / page } kore-3.3.1/examples/memtag/src/000077500000000000000000000000001347522026400163425ustar00rootroot00000000000000kore-3.3.1/examples/memtag/src/memtag.c000066400000000000000000000037021347522026400177620ustar00rootroot00000000000000/* * Copyright (c) 2017-2018 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include /* * This example demonstrates how dynamically reloadable modules * can use the memory tagging system in Kore in order to restore * the global pointers in the module. */ /* Some unique value. */ #define MEM_TAG_HELLO 100 int init(int); int page(struct http_request *); /* Global pointer, gets initialized to NULL when module loads/reloads. */ char *fixed_ptr = NULL; int init(int state) { /* Ignore unload(s). */ if (state == KORE_MODULE_UNLOAD) return (KORE_RESULT_OK); printf("fixed_ptr: %p\n", (void *)fixed_ptr); /* Attempt to lookup the original pointer. */ if ((fixed_ptr = kore_mem_lookup(MEM_TAG_HELLO)) == NULL) { /* Failed, grab a new chunk of memory and tag it. */ printf(" allocating fixed_ptr for the first time\n"); fixed_ptr = kore_malloc_tagged(6, MEM_TAG_HELLO); kore_strlcpy(fixed_ptr, "hello", 6); } else { printf(" fixed_ptr address resolved\n"); } printf(" fixed_ptr: %p\n", (void *)fixed_ptr); printf(" value : %s\n", fixed_ptr); return (KORE_RESULT_OK); } int page(struct http_request *req) { http_response(req, 200, fixed_ptr, strlen(fixed_ptr)); return (KORE_RESULT_OK); } kore-3.3.1/examples/messaging/000077500000000000000000000000001347522026400162565ustar00rootroot00000000000000kore-3.3.1/examples/messaging/.gitignore000066400000000000000000000000451347522026400202450ustar00rootroot00000000000000*.o .objs messaging.so assets.h cert kore-3.3.1/examples/messaging/README.md000066400000000000000000000004051347522026400175340ustar00rootroot00000000000000Kore message framework example Run: ``` # kodev run ``` Test: ``` Perform a simple GET request against the root page. This should trigger the example app to send a message to the other workers which will display it. # curl -k https://127.0.0.1:8888 ``` kore-3.3.1/examples/messaging/conf/000077500000000000000000000000001347522026400172035ustar00rootroot00000000000000kore-3.3.1/examples/messaging/conf/build.conf000066400000000000000000000007511347522026400211540ustar00rootroot00000000000000# messaging build config # You can switch flavors using: kodev flavor [newflavor] # The cflags below are shared between flavors cflags=-Wall -Wmissing-declarations -Wshadow cflags=-Wstrict-prototypes -Wmissing-prototypes cflags=-Wpointer-arith -Wcast-qual -Wsign-compare dev { # These cflags are added to the shared ones when # you build the "dev" flavor. cflags=-g } #prod { # You can specify additional CFLAGS here which are only # included if you build with the "prod" flavor. #} kore-3.3.1/examples/messaging/conf/messaging.conf000066400000000000000000000003351347522026400220300ustar00rootroot00000000000000# Placeholder configuration bind 127.0.0.1 8888 load ./messaging.so init tls_dhparam dh2048.pem workers 4 domain * { certfile cert/server.pem certkey cert/key.pem static / page static /shutdown page_shutdown } kore-3.3.1/examples/messaging/src/000077500000000000000000000000001347522026400170455ustar00rootroot00000000000000kore-3.3.1/examples/messaging/src/messaging.c000066400000000000000000000051011347522026400211630ustar00rootroot00000000000000/* * Copyright (c) 2015 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include /* * This example demonstrates how to use the messaging framework * in Kore. This framework allows you to send messages between * your workers with custom callbacks defined per message ID. */ /* Your code shouldn't use IDs < 100. */ #define MY_MESSAGE_ID 100 int init(int); int page(struct http_request *); int page_shutdown(struct http_request *req); void received_message(struct kore_msg *, const void *); /* Initialization callback. */ int init(int state) { if (state == KORE_MODULE_UNLOAD) return (KORE_RESULT_OK); /* * Register our message callback when the module is initialized. * kore_msg_register() fails if the message ID already exists, * but in our case that is OK. */ (void)kore_msg_register(MY_MESSAGE_ID, received_message); return (KORE_RESULT_OK); } /* * Callback for receiving a message MY_MESSAGE_ID. */ void received_message(struct kore_msg *msg, const void *data) { kore_log(LOG_INFO, "got message from %u (%zu bytes): %.*s", msg->src, msg->length, (int)msg->length, (const char *)data); } /* * Page request which will send a message to all other workers * with the ID set to MY_MESSAGE_ID and a payload of "hello". */ int page(struct http_request *req) { /* Send to all workers first. */ kore_msg_send(KORE_MSG_WORKER_ALL, MY_MESSAGE_ID, "hello", 5); /* Now send something to worker number #2 only. */ kore_msg_send(2, MY_MESSAGE_ID, "hello number 2", 14); http_response(req, 200, NULL, 0); return (KORE_RESULT_OK); } /* * Page request which will send a message to the parent * requesting process shutdown. */ int page_shutdown(struct http_request *req) { /* Send shutdown request to parent. */ kore_msg_send(KORE_MSG_PARENT, KORE_MSG_SHUTDOWN, "1", 1); http_response(req, 200, NULL, 0); return (KORE_RESULT_OK); } kore-3.3.1/examples/nohttp/000077500000000000000000000000001347522026400156155ustar00rootroot00000000000000kore-3.3.1/examples/nohttp/.gitignore000066400000000000000000000000421347522026400176010ustar00rootroot00000000000000*.o .objs nohttp.so assets.h cert kore-3.3.1/examples/nohttp/README.md000066400000000000000000000004441347522026400170760ustar00rootroot00000000000000Kore NOHTTP example Note that this example only works if Kore was built with NOHTTP=1. Run: ``` $ kodev run ``` Test: ``` Connect to the server using openssl s_client, you will notice that anything sent is submitted back to your client. $ openssl s_client -connect 127.0.0.1:8888 ``` kore-3.3.1/examples/nohttp/conf/000077500000000000000000000000001347522026400165425ustar00rootroot00000000000000kore-3.3.1/examples/nohttp/conf/build.conf000066400000000000000000000007461347522026400205170ustar00rootroot00000000000000# nohttp build config # You can switch flavors using: kodev flavor [newflavor] # The cflags below are shared between flavors cflags=-Wall -Wmissing-declarations -Wshadow cflags=-Wstrict-prototypes -Wmissing-prototypes cflags=-Wpointer-arith -Wcast-qual -Wsign-compare dev { # These cflags are added to the shared ones when # you build the "dev" flavor. cflags=-g } #prod { # You can specify additional CFLAGS here which are only # included if you build with the "prod" flavor. #} kore-3.3.1/examples/nohttp/conf/nohttp.conf000066400000000000000000000011761347522026400207320ustar00rootroot00000000000000# Kore can be used as a network layer if it was # built with NOHTTP=1. # # With this you can bind a callback for every new # connection that has been established. For TLS connections # the callback is called after the TLS handshake is completed. # We must load the module first as we need the callback from it. load ./nohttp.so # Listen on port 8888 and call connection_setup for each new connection. bind 127.0.0.1 8888 connection_setup # TLS dh params. tls_dhparam dh2048.pem # We must still define a domain to use TLS. This might go away # in the future for NOHTTP=1 domain * { certfile cert/server.pem certkey cert/key.pem } kore-3.3.1/examples/nohttp/src/000077500000000000000000000000001347522026400164045ustar00rootroot00000000000000kore-3.3.1/examples/nohttp/src/nohttp.c000066400000000000000000000061301347522026400200640ustar00rootroot00000000000000/* * Copyright (c) 2015 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * Example of using Kore as a network application server. * * We will get called for every new connection that has been established. * For TLS connections we will get called after the TLS handshake completed. * * From the setup we can queue up our own read commands and do whatever we * like with the newly connected client. */ #include void connection_setup(struct connection *); int connection_handle(struct connection *); int connection_recv_data(struct netbuf *); void connection_setup(struct connection *c) { kore_log(LOG_NOTICE, "%p: new connection", c); /* * Setup a read command that will read up to 128 bytes and will * always call the callback connection_recv_data even if not all * 128 bytes were read. */ net_recv_queue(c, 128, NETBUF_CALL_CB_ALWAYS, connection_recv_data); /* We are responsible for setting the connection state. */ c->state = CONN_STATE_ESTABLISHED; /* Override the handle function, called when new events occur. */ c->handle = connection_handle; } /* * This function is called everytime a new event is triggered on the * connection. In this demo we just use it as a stub for the normal * callback kore_connection_handle(). * * In this callback you would generally look at the state of the connection * in c->state and perform the required actions like writing / reading using * net_send_flush() or net_recv_flush() if KORE_EVENT_WRITE or * KORE_EVENT_READ are set respectively in c->evt.flags. * Returning KORE_RESULT_ERROR from this callback will disconnect the * connection alltogether. */ int connection_handle(struct connection *c) { kore_log(LOG_NOTICE, "connection_handle: %p", c); return (kore_connection_handle(c)); } /* * This function is called everytime we get up to 128 bytes of data. * The connection can be found under nb->owner. * The data received can be found under nb->buf. * The length of the received data can be found under s_off. */ int connection_recv_data(struct netbuf *nb) { struct connection *c = (struct connection *)nb->owner; kore_log(LOG_NOTICE, "%p: received %zu bytes", (void *)c, nb->s_off); /* We will just dump these back to the client. */ net_send_queue(c, nb->buf, nb->s_off); net_send_flush(c); /* Now reset the receive command for the next one. */ net_recv_reset(c, 128, connection_recv_data); return (KORE_RESULT_OK); } kore-3.3.1/examples/parameters/000077500000000000000000000000001347522026400164445ustar00rootroot00000000000000kore-3.3.1/examples/parameters/.gitignore000077500000000000000000000000461347522026400204370ustar00rootroot00000000000000*.o .objs parameters.so assets.h cert kore-3.3.1/examples/parameters/README.md000066400000000000000000000004151347522026400177230ustar00rootroot00000000000000Example on how to handle GET/POST parameters in Kore. Run: ``` # kodev run ``` Test: ``` # curl -i -k https://127.0.0.1:8888/?id=123123 ``` The output will differ based on wether or not id is a valid u_int16_t number or not. (the string should always be present). kore-3.3.1/examples/parameters/conf/000077500000000000000000000000001347522026400173715ustar00rootroot00000000000000kore-3.3.1/examples/parameters/conf/build.conf000066400000000000000000000007521347522026400213430ustar00rootroot00000000000000# parameters build config # You can switch flavors using: kodev flavor [newflavor] # The cflags below are shared between flavors cflags=-Wall -Wmissing-declarations -Wshadow cflags=-Wstrict-prototypes -Wmissing-prototypes cflags=-Wpointer-arith -Wcast-qual -Wsign-compare dev { # These cflags are added to the shared ones when # you build the "dev" flavor. cflags=-g } #prod { # You can specify additional CFLAGS here which are only # included if you build with the "prod" flavor. #} kore-3.3.1/examples/parameters/conf/parameters.conf000077500000000000000000000012241347522026400224050ustar00rootroot00000000000000# Placeholder configuration bind 127.0.0.1 8888 load ./parameters.so tls_dhparam dh2048.pem # The validator used to validate the 'id' parameter # defined below. We'll use a simple regex to make sure # it only matches positive numbers. validator v_id regex ^[0-9]*$ domain * { certfile cert/server.pem certkey cert/key.pem static / page # The parameters allowed for "/" (GET method). # # If you would want to declare parameters available # to the page handler for POST, swap the 'get' setting # to 'post' instead, Kore takes care of the rest. params qs:get / { # Validate the id parameter with the v_id validator. validate id v_id } } kore-3.3.1/examples/parameters/src/000077500000000000000000000000001347522026400172335ustar00rootroot00000000000000kore-3.3.1/examples/parameters/src/parameters.c000077500000000000000000000046751347522026400215610ustar00rootroot00000000000000/* * Copyright (c) 2014 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include int page(struct http_request *); int page(struct http_request *req) { u_int16_t id; char *sid; struct kore_buf *buf; /* * Before we are able to obtain any parameters given to * us via the query string we must tell Kore to parse and * validate them. * * NOTE: All parameters MUST be declared in a params {} block * inside the configuration for Kore! Kore will filter out * any parameters not explicitly defined. * * See conf/parameters.conf on how that is done, this is an * important step as without the params block you will never * get any parameters returned from Kore. */ http_populate_get(req); /* * Lets grab the "id" parameter if available. Kore can obtain * parameters in different data types native to C. * * In this scenario, lets grab it both as an actual string and * as an u_int16_t (unsigned short). * * When trying to obtain a parameter as something else then * a string, Kore will automatically check if the value fits * in said data type. * * For example if id is 65536 it won't fit in an u_int16_t * and Kore will return an error when trying to read it as such. */ buf = kore_buf_alloc(128); /* Grab it as a string, we shouldn't free the result in sid. */ if (http_argument_get_string(req, "id", &sid)) kore_buf_appendf(buf, "id as a string: '%s'\n", sid); /* Grab it as an actual u_int16_t. */ if (http_argument_get_uint16(req, "id", &id)) kore_buf_appendf(buf, "id as an u_int16_t: %d\n", id); /* Now return the result to the client with a 200 status code. */ http_response(req, 200, buf->data, buf->offset); kore_buf_free(buf); return (KORE_RESULT_OK); } kore-3.3.1/examples/pgsql-sync/000077500000000000000000000000001347522026400164015ustar00rootroot00000000000000kore-3.3.1/examples/pgsql-sync/.gitignore000066400000000000000000000000461347522026400203710ustar00rootroot00000000000000*.o .objs pgsql-sync.so assets.h cert kore-3.3.1/examples/pgsql-sync/conf/000077500000000000000000000000001347522026400173265ustar00rootroot00000000000000kore-3.3.1/examples/pgsql-sync/conf/build.conf000066400000000000000000000007521347522026400213000ustar00rootroot00000000000000# pgsql-sync build config # You can switch flavors using: kodev flavor [newflavor] # The cflags below are shared between flavors cflags=-Wall -Wmissing-declarations -Wshadow cflags=-Wstrict-prototypes -Wmissing-prototypes cflags=-Wpointer-arith -Wcast-qual -Wsign-compare dev { # These cflags are added to the shared ones when # you build the "dev" flavor. cflags=-g } #prod { # You can specify additional CFLAGS here which are only # included if you build with the "prod" flavor. #} kore-3.3.1/examples/pgsql-sync/conf/pgsql-sync.conf000066400000000000000000000002621347522026400222750ustar00rootroot00000000000000# Placeholder configuration bind 127.0.0.1 8888 load ./pgsql-sync.so init tls_dhparam dh2048.pem domain * { certfile cert/server.pem certkey cert/key.pem static / page } kore-3.3.1/examples/pgsql-sync/src/000077500000000000000000000000001347522026400171705ustar00rootroot00000000000000kore-3.3.1/examples/pgsql-sync/src/pgsql-sync.c000066400000000000000000000050131347522026400214330ustar00rootroot00000000000000/* * Copyright (c) 2015 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * This example demonstrates how to use synchronous PGSQL queries * with Kore. For an asynchronous example see pgsql/ under examples/. * * This example does the same as the asynchronous one, select all entries * from a table called "coders". */ #include #include #include int init(int); int page(struct http_request *); /* Called when our module is loaded (see config) */ int init(int state) { /* Register our database. */ kore_pgsql_register("db", "host=/tmp dbname=test"); return (KORE_RESULT_OK); } /* Page handler entry point (see config) */ int page(struct http_request *req) { struct kore_pgsql sql; char *name; int rows, i; req->status = HTTP_STATUS_INTERNAL_ERROR; kore_pgsql_init(&sql); /* * Initialise our kore_pgsql data structure with the database name * we want to connect to (note that we registered this earlier with * kore_pgsql_register()). We also say we will perform a synchronous * query (KORE_PGSQL_SYNC). */ if (!kore_pgsql_setup(&sql, "db", KORE_PGSQL_SYNC)) { kore_pgsql_logerror(&sql); goto out; } /* * Now we can fire off the query, once it returns we either have * a result on which we can operate or an error occured. */ if (!kore_pgsql_query(&sql, "SELECT * FROM coders")) { kore_pgsql_logerror(&sql); goto out; } /* * Iterate over the result and dump it to somewhere. */ rows = kore_pgsql_ntuples(&sql); for (i = 0; i < rows; i++) { name = kore_pgsql_getvalue(&sql, i, 0); kore_log(LOG_NOTICE, "name: '%s'", name); } /* All good. */ req->status = HTTP_STATUS_OK; out: http_response(req, req->status, NULL, 0); /* Don't forget to cleanup the kore_pgsql data structure. */ kore_pgsql_cleanup(&sql); return (KORE_RESULT_OK); } kore-3.3.1/examples/pgsql/000077500000000000000000000000001347522026400154275ustar00rootroot00000000000000kore-3.3.1/examples/pgsql/.gitignore000077500000000000000000000000411347522026400174150ustar00rootroot00000000000000*.o .objs pgsql.so assets.h cert kore-3.3.1/examples/pgsql/README.md000066400000000000000000000005171347522026400167110ustar00rootroot00000000000000Kore pgsql example. This example demonstrates how one can use Kore state machines and the pgsql api to make fully asynchronous SQL queries. Asynchronous in this case meaning, without interrupting a Kore worker its other clients their I/O or http requests. Tons of comments inside on how everything works. Run: ``` # kodev run ``` kore-3.3.1/examples/pgsql/conf/000077500000000000000000000000001347522026400163545ustar00rootroot00000000000000kore-3.3.1/examples/pgsql/conf/build.conf000066400000000000000000000007451347522026400203300ustar00rootroot00000000000000# pgsql build config # You can switch flavors using: kodev flavor [newflavor] # The cflags below are shared between flavors cflags=-Wall -Wmissing-declarations -Wshadow cflags=-Wstrict-prototypes -Wmissing-prototypes cflags=-Wpointer-arith -Wcast-qual -Wsign-compare dev { # These cflags are added to the shared ones when # you build the "dev" flavor. cflags=-g } #prod { # You can specify additional CFLAGS here which are only # included if you build with the "prod" flavor. #} kore-3.3.1/examples/pgsql/conf/pgsql.conf000077500000000000000000000004001347522026400203460ustar00rootroot00000000000000# Placeholder configuration load ./pgsql.so init bind 127.0.0.1 8888 bind 127.0.0.1 8889 connection_new tls_dhparam dh2048.pem http_keepalive_time 0 domain * { certfile cert/server.pem certkey cert/key.pem static / page static /hello hello } kore-3.3.1/examples/pgsql/src/000077500000000000000000000000001347522026400162165ustar00rootroot00000000000000kore-3.3.1/examples/pgsql/src/init.c000066400000000000000000000024521347522026400173300ustar00rootroot00000000000000/* * Copyright (c) 2017-2018 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #if !defined(KORE_NO_HTTP) #include #endif int init(int); #if !defined(KORE_NO_HTTP) int hello(struct http_request *); #endif /* Called when our module is loaded (see config) */ int init(int state) { /* Register our database. */ kore_pgsql_register("db", "host=/tmp dbname=test"); return (KORE_RESULT_OK); } #if !defined(KORE_NO_HTTP) int hello(struct http_request *req) { http_response(req, HTTP_STATUS_OK, "hello", 5); return (KORE_RESULT_OK); } #endif kore-3.3.1/examples/pgsql/src/pgsql.c000066400000000000000000000153131347522026400175130ustar00rootroot00000000000000/* * Copyright (c) 2014-2018 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * This example demonstrates on how to use state machines and * asynchronous pgsql queries. For a synchronous query example * see the pgsql-sync/ example under the examples/ directory. * * While this example might seem overly complex for a simple pgsql * query, there is a reason behind its complexity: * Asynchronous pgsql queries mean that Kore will not block while * executing the queries, giving a worker time to continue handling * other events such as I/O or other http requests. * * The state machine framework present in Kore makes it trivial * to get going into dropping from your page handler into the right * state that you are currently in. */ #if !defined(KORE_NO_HTTP) #include #include #include #define REQ_STATE_INIT 0 #define REQ_STATE_QUERY 1 #define REQ_STATE_DB_WAIT 2 #define REQ_STATE_DB_READ 3 #define REQ_STATE_ERROR 4 #define REQ_STATE_DONE 5 int page(struct http_request *); static int request_perform_init(struct http_request *); static int request_perform_query(struct http_request *); static int request_db_wait(struct http_request *); static int request_db_read(struct http_request *); static int request_error(struct http_request *); static int request_done(struct http_request *); struct http_state mystates[] = { { "REQ_STATE_INIT", request_perform_init }, { "REQ_STATE_QUERY", request_perform_query }, { "REQ_STATE_DB_WAIT", request_db_wait }, { "REQ_STATE_DB_READ", request_db_read }, { "REQ_STATE_ERROR", request_error }, { "REQ_STATE_DONE", request_done }, }; #define mystates_size (sizeof(mystates) / sizeof(mystates[0])) struct rstate { int cnt; struct kore_pgsql sql; }; /* Page handler entry point (see config) */ int page(struct http_request *req) { /* Drop into our state machine. */ kore_log(LOG_NOTICE, "%p: page start", (void *)req); return (http_state_run(mystates, mystates_size, req)); } /* Initialize our PGSQL data structure and prepare for an async query. */ int request_perform_init(struct http_request *req) { struct rstate *state; /* Setup our state context (if not yet set). */ if (!http_state_exists(req)) { state = http_state_create(req, sizeof(*state), NULL); /* * Initialize the kore_pgsql data structure and bind it * to this request so we can be put to sleep / woken up * by the pgsql layer when required. */ kore_pgsql_init(&state->sql); kore_pgsql_bind_request(&state->sql, req); } else { state = http_state_get(req); } /* * Setup the query to be asynchronous in nature, aka just fire it * off and return back to us. */ if (!kore_pgsql_setup(&state->sql, "db", KORE_PGSQL_ASYNC)) { /* * If the state was still in INIT we need to go to sleep and * wait until the pgsql layer wakes us up again when there * an available connection to the database. */ if (state->sql.state == KORE_PGSQL_STATE_INIT) { req->fsm_state = REQ_STATE_INIT; return (HTTP_STATE_RETRY); } kore_pgsql_logerror(&state->sql); req->fsm_state = REQ_STATE_ERROR; } else { /* * The initial setup was complete, go for query. */ req->fsm_state = REQ_STATE_QUERY; } return (HTTP_STATE_CONTINUE); } /* After setting everything up we will execute our async query. */ int request_perform_query(struct http_request *req) { struct rstate *state = http_state_get(req); /* We want to move to read result after this. */ req->fsm_state = REQ_STATE_DB_WAIT; /* Fire off the query. */ if (!kore_pgsql_query(&state->sql, "SELECT * FROM coders, pg_sleep(5)")) { /* * Let the state machine continue immediately since we * have an error anyway. */ return (HTTP_STATE_CONTINUE); } /* Resume state machine later when the query results start coming in. */ return (HTTP_STATE_RETRY); } /* * After firing off the query, we returned HTTP_STATE_RETRY (see above). * When request_db_wait() finally is called by Kore we will have results * from pgsql so we'll process them. */ int request_db_wait(struct http_request *req) { struct rstate *state = http_state_get(req); kore_log(LOG_NOTICE, "request_db_wait: %d", state->sql.state); /* * When we get here, our asynchronous pgsql query has * given us something, check the state to figure out what. */ switch (state->sql.state) { case KORE_PGSQL_STATE_WAIT: return (HTTP_STATE_RETRY); case KORE_PGSQL_STATE_COMPLETE: req->fsm_state = REQ_STATE_DONE; break; case KORE_PGSQL_STATE_ERROR: req->fsm_state = REQ_STATE_ERROR; kore_pgsql_logerror(&state->sql); break; case KORE_PGSQL_STATE_RESULT: req->fsm_state = REQ_STATE_DB_READ; break; default: /* This MUST be present in order to advance the pgsql state */ kore_pgsql_continue(&state->sql); break; } return (HTTP_STATE_CONTINUE); } /* * Called when there's an actual result to be gotten. After we handle the * entire result, we'll drop back into REQ_STATE_DB_WAIT (above) in order * to continue until the pgsql API returns KORE_PGSQL_STATE_COMPLETE. */ int request_db_read(struct http_request *req) { char *name; int i, rows; struct rstate *state = http_state_get(req); /* We have sql data to read! */ rows = kore_pgsql_ntuples(&state->sql); for (i = 0; i < rows; i++) { name = kore_pgsql_getvalue(&state->sql, i, 0); kore_log(LOG_NOTICE, "name: '%s'", name); } /* Continue processing our query results. */ kore_pgsql_continue(&state->sql); /* Back to our DB waiting state. */ req->fsm_state = REQ_STATE_DB_WAIT; return (HTTP_STATE_CONTINUE); } /* An error occurred. */ int request_error(struct http_request *req) { struct rstate *state = http_state_get(req); kore_pgsql_cleanup(&state->sql); http_state_cleanup(req); http_response(req, 500, NULL, 0); return (HTTP_STATE_COMPLETE); } /* Request was completed successfully. */ int request_done(struct http_request *req) { struct rstate *state = http_state_get(req); kore_pgsql_cleanup(&state->sql); http_state_cleanup(req); http_response(req, 200, NULL, 0); return (HTTP_STATE_COMPLETE); } #endif /* !KORE_NO_HTTP */ kore-3.3.1/examples/pgsql/src/pgsql_cb.c000066400000000000000000000065551347522026400201670ustar00rootroot00000000000000/* * Copyright (c) 2018 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * This is the same as pgsql.c except the query is fired off when * a new connection is made to Kore on port 8889. * * Instead of binding an http_request to the pgsql data structure we * use a callback function that is called for every state change. * * We pass the connection as an argument to this function. */ #include #include #include void connection_del(struct connection *c); void connection_new(struct connection *); void db_state_change(struct kore_pgsql *, void *); void db_init(struct connection *, struct kore_pgsql *); void db_results(struct kore_pgsql *, struct connection *); void connection_new(struct connection *c) { struct kore_pgsql *pgsql; c->disconnect = connection_del; c->proto = CONN_PROTO_UNKNOWN; c->state = CONN_STATE_ESTABLISHED; pgsql = kore_calloc(1, sizeof(*pgsql)); kore_pgsql_init(pgsql); kore_pgsql_bind_callback(pgsql, db_state_change, c); c->hdlr_extra = pgsql; printf("new connection %p\n", (void *)c); db_init(c, pgsql); } void db_init(struct connection *c, struct kore_pgsql *pgsql) { if (!kore_pgsql_setup(pgsql, "db", KORE_PGSQL_ASYNC)) { if (pgsql->state == KORE_PGSQL_STATE_INIT) { printf("\twaiting for available pgsql connection\n"); return; } kore_pgsql_logerror(pgsql); kore_connection_disconnect(c); return; } printf("\tgot pgsql connection\n"); if (!kore_pgsql_query(pgsql, "SELECT * FROM coders, pg_sleep(5)")) { kore_pgsql_logerror(pgsql); kore_connection_disconnect(c); return; } printf("\tquery fired off!\n"); } void connection_del(struct connection *c) { printf("%p: disconnecting\n", (void *)c); if (c->hdlr_extra != NULL) kore_pgsql_cleanup(c->hdlr_extra); kore_free(c->hdlr_extra); c->hdlr_extra = NULL; } void db_state_change(struct kore_pgsql *pgsql, void *arg) { struct connection *c = arg; printf("%p: state change on pgsql %d\n", arg, pgsql->state); switch (pgsql->state) { case KORE_PGSQL_STATE_INIT: db_init(c, pgsql); break; case KORE_PGSQL_STATE_WAIT: break; case KORE_PGSQL_STATE_COMPLETE: kore_connection_disconnect(c); break; case KORE_PGSQL_STATE_ERROR: kore_pgsql_logerror(pgsql); kore_connection_disconnect(c); break; case KORE_PGSQL_STATE_RESULT: db_results(pgsql, c); break; default: kore_pgsql_continue(pgsql); break; } } void db_results(struct kore_pgsql *pgsql, struct connection *c) { char *name; int i, rows; rows = kore_pgsql_ntuples(pgsql); for (i = 0; i < rows; i++) { name = kore_pgsql_getvalue(pgsql, i, 0); net_send_queue(c, name, strlen(name)); } net_send_flush(c); kore_pgsql_continue(pgsql); } kore-3.3.1/examples/pipe_task/000077500000000000000000000000001347522026400162605ustar00rootroot00000000000000kore-3.3.1/examples/pipe_task/.gitignore000077500000000000000000000000451347522026400202520ustar00rootroot00000000000000*.o .objs websocket.so assets.h cert kore-3.3.1/examples/pipe_task/README.md000066400000000000000000000010741347522026400175410ustar00rootroot00000000000000Kore example of tasks and websockets. This example connects Kore via task to a named unix pipe and spews out any output to all connected websocket clients. Before you run this make the pipe: $ mkfifo /tmp/pipe Run: ``` $ kodev run ``` Test: ``` Open a browser that does websockets, surf to https://127.0.0.1:8888 or whatever configured IP you have in the config. Hit the connect button to open a websocket session. Now connect a writer endpoint to the named pipe (/tmp/pipe): $ echo "hello" > /tmp/pipe You should see the result in your browser. ``` kore-3.3.1/examples/pipe_task/assets/000077500000000000000000000000001347522026400175625ustar00rootroot00000000000000kore-3.3.1/examples/pipe_task/assets/frontend.html000066400000000000000000000013541347522026400222720ustar00rootroot00000000000000
kore-3.3.1/examples/pipe_task/conf/000077500000000000000000000000001347522026400172055ustar00rootroot00000000000000kore-3.3.1/examples/pipe_task/conf/build.conf000066400000000000000000000007511347522026400211560ustar00rootroot00000000000000# pipe_task build config # You can switch flavors using: kodev flavor [newflavor] # The cflags below are shared between flavors cflags=-Wall -Wmissing-declarations -Wshadow cflags=-Wstrict-prototypes -Wmissing-prototypes cflags=-Wpointer-arith -Wcast-qual -Wsign-compare dev { # These cflags are added to the shared ones when # you build the "dev" flavor. cflags=-g } #prod { # You can specify additional CFLAGS here which are only # included if you build with the "prod" flavor. #} kore-3.3.1/examples/pipe_task/conf/pipe_task.conf000077500000000000000000000004061347522026400220360ustar00rootroot00000000000000# Kore pipe_task example bind 127.0.0.1 8888 load ./pipe_task.so init tls_dhparam dh2048.pem websocket_maxframe 65536 websocket_timeout 10000 domain * { certfile cert/server.pem certkey cert/key.pem static / page static /connect page_ws_connect } kore-3.3.1/examples/pipe_task/src/000077500000000000000000000000001347522026400170475ustar00rootroot00000000000000kore-3.3.1/examples/pipe_task/src/pipe_task.c000077500000000000000000000116041347522026400211770ustar00rootroot00000000000000/* * Copyright (c) 2015 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * This example demos Kore its task and websocket capabilities. * * It will spawn a task which connects to a named pipe and writes * responses to all connected websocket clients. */ #include #include #include #include #include #include #include #include #include "assets.h" int init(int); int page(struct http_request *); int page_ws_connect(struct http_request *); void websocket_connect(struct connection *); void websocket_disconnect(struct connection *); void websocket_message(struct connection *, u_int8_t, void *, size_t); int pipe_reader(struct kore_task *); void pipe_data_available(struct kore_task *); /* Our pipe reader. */ struct kore_task pipe_task; /* Module init function (see config). */ int init(int state) { /* Do not allow reload. */ if (state == KORE_MODULE_UNLOAD) return (KORE_RESULT_ERROR); /* Only do this on a dedicated worker. */ if (worker->id != 1) return (KORE_RESULT_OK); /* Create our task. */ kore_task_create(&pipe_task, pipe_reader); /* Bind a callback whenever data is available from task. */ kore_task_bind_callback(&pipe_task, pipe_data_available); /* Start the task. */ kore_task_run(&pipe_task); return (KORE_RESULT_OK); } /* Called whenever we get a new websocket connection. */ void websocket_connect(struct connection *c) { kore_log(LOG_NOTICE, "%p: connected", c); } /* Called whenever we receive a websocket message from a client. */ void websocket_message(struct connection *c, u_int8_t op, void *data, size_t len) { /* Not doing anything with this. */ } /* Called whenever a websocket goes away. */ void websocket_disconnect(struct connection *c) { kore_log(LOG_NOTICE, "%p: disconnecting", c); } /* The / page. */ int page(struct http_request *req) { http_response_header(req, "content-type", "text/html"); http_response(req, 200, asset_frontend_html, asset_len_frontend_html); return (KORE_RESULT_OK); } /* The /connect page. */ int page_ws_connect(struct http_request *req) { kore_websocket_handshake(req, "websocket_connect", "websocket_message", "websocket_disconnect"); return (KORE_RESULT_OK); } /* * The pipe reader task. This task simply waits for a writer end * on a named pipe and reads from it. The bytes read are written * on the task channel because the task does not own any connection * data structures and shouldn't reference them directly. */ int pipe_reader(struct kore_task *t) { int fd; ssize_t ret; u_int8_t buf[BUFSIZ]; fd = -1; kore_log(LOG_INFO, "pipe_reader starting"); /* Just run forever. */ for (;;) { /* Attempt to open the pipe if needed. */ if (fd == -1) { kore_log(LOG_NOTICE, "waiting for writer"); if ((fd = open("/tmp/pipe", O_RDONLY)) == -1) { kore_log(LOG_NOTICE, "failed to open pipe"); sleep(1); continue; } kore_log(LOG_NOTICE, "writer connected"); } /* Got a writer on the other end so start reading. */ ret = read(fd, buf, sizeof(buf)); if (ret == -1) { kore_log(LOG_ERR, "read error on pipe"); (void)close(fd); fd = -1; continue; } if (ret == 0) { kore_log(LOG_NOTICE, "writer disconnected"); (void)close(fd); fd = -1; continue; } kore_log(LOG_NOTICE, "got %ld bytes from pipe", ret); /* * Write data on the task channel so our main event loop * will call the registered callback. */ kore_task_channel_write(t, buf, ret); } return (KORE_RESULT_OK); } /* Called on the main event loop whenever a task event fires. */ void pipe_data_available(struct kore_task *t) { size_t len; u_int8_t buf[BUFSIZ]; /* Deal with the task finishing, we could restart it from here. */ if (kore_task_finished(t)) { kore_log(LOG_WARNING, "task finished"); return; } /* Read data from the task channel. */ len = kore_task_channel_read(t, buf, sizeof(buf)); if (len > sizeof(buf)) kore_log(LOG_WARNING, "truncated data from task"); /* Broadcast it to all connected websocket clients. */ kore_log(LOG_NOTICE, "got %zu bytes from task", len); kore_websocket_broadcast(NULL, WEBSOCKET_OP_TEXT, buf, len, WEBSOCKET_BROADCAST_GLOBAL); } kore-3.3.1/examples/python-async/000077500000000000000000000000001347522026400167355ustar00rootroot00000000000000kore-3.3.1/examples/python-async/.gitignore000066400000000000000000000000601347522026400207210ustar00rootroot00000000000000*.o .flavor .objs python-async.so assets.h cert kore-3.3.1/examples/python-async/README.md000066400000000000000000000005731347522026400202210ustar00rootroot00000000000000Kore python async/await examples. This example also shows off the asynchronous HTTP client support and requires libcurl on your machine. Run: ``` $ kodev run ``` Test: ``` $ curl -k http://127.0.0.1:8888/queue $ curl -k http://127.0.0.1:8888/lock $ curl -k http://127.0.0.1:8888/proc $ curl -k http://127.0.0.1:8888/socket $ curl -k http://127.0.0.1:8888/httpclient ``` kore-3.3.1/examples/python-async/conf/000077500000000000000000000000001347522026400176625ustar00rootroot00000000000000kore-3.3.1/examples/python-async/conf/build.conf000066400000000000000000000017601347522026400216340ustar00rootroot00000000000000# python-async build config # You can switch flavors using: kodev flavor [newflavor] # Set to yes if you wish to produce a single binary instead # of a dynamic library. If you set this to yes you must also # set kore_source together with kore_flavor. single_binary=yes kore_source=../../ kore_flavor=PYTHON=1 CURL=1 NOTLS=1 # The flags below are shared between flavors cflags=-Wall -Wmissing-declarations -Wshadow cflags=-Wstrict-prototypes -Wmissing-prototypes cflags=-Wpointer-arith -Wcast-qual -Wsign-compare cxxflags=-Wall -Wmissing-declarations -Wshadow cxxflags=-Wpointer-arith -Wcast-qual -Wsign-compare # Mime types for assets served via the builtin asset_serve_* #mime_add=txt:text/plain; charset=utf-8 #mime_add=png:image/png #mime_add=html:text/html; charset=utf-8 dev { # These flags are added to the shared ones when # you build the "dev" flavor. cflags=-g cxxflags=-g } #prod { # You can specify additional flags here which are only # included if you build with the "prod" flavor. #} kore-3.3.1/examples/python-async/conf/python-async.conf000066400000000000000000000007151347522026400231700ustar00rootroot00000000000000# python-async configuration bind 127.0.0.1 8888 python_path src python_import ./src/setup.py python_import ./src/async_lock.py python_import ./src/async_queue.py python_import ./src/async_process.py python_import ./src/async_socket.py python_import ./src/async_http.py domain * { static /queue async_queue static /lock async_lock static /proc async_proc static /socket async_socket static /socket-test socket_test static /httpclient httpclient } kore-3.3.1/examples/python-async/src/000077500000000000000000000000001347522026400175245ustar00rootroot00000000000000kore-3.3.1/examples/python-async/src/async_http.py000066400000000000000000000031471347522026400222570ustar00rootroot00000000000000# # Copyright (c) 2019 Joris Vink # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # # # Asynchronous HTTP client example. # import kore # Handler called for /httpclient async def httpclient(req): # Create an httpclient. client = kore.httpclient("https://kore.io") # Do a simple GET request. status, body = await client.get() print("status: %d, body: '%s'" % (status, body)) # Reuse and perform another GET request, returning headers too this time. status, headers, body = await client.get(return_headers=True) print("status: %d, headers: '%s'" % (status, headers)) # What happens if we post something? status, body = await client.post(body=b"hello world") print("status: %d, body: '%s'" % (status, body)) # Add some custom headers to our requests. status, body = await client.get( headers={ "x-my-header": "async-http" } ) req.response(200, b'async done') kore-3.3.1/examples/python-async/src/async_lock.py000066400000000000000000000024121347522026400222220ustar00rootroot00000000000000# # Copyright (c) 2018 Joris Vink # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # # # Locking example. # # The handler for /lock will grab the shared lock, suspend itself for # 5 seconds before releasing the lock and responding. # # While the lock is held, other requests to /lock will block until it # is released. import kore # The shared lock lock = kore.lock() async def async_lock(req): # A kore.lock should be used with the "async with" syntax. async with lock: # Suspend for 5 seconds. await kore.suspend(5000) # Now respond. req.response(200, b'') kore-3.3.1/examples/python-async/src/async_process.py000066400000000000000000000045341347522026400227570ustar00rootroot00000000000000# # Copyright (c) 2018 Joris Vink # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # # # Asynchronous process example. # # Wait for the result of an external process asynchronously. # The handler will execute "/bin/ls" on the current directory and # read the result. # import kore import json async def async_proc(req): # # You may specify a timeout when creating the kore.proc object. # If the timeout is reached before the process exits kore will # raise a TimeoutError exception. # # Ex: set timeout to 100ms: # proc = kore.proc("/bin/ls -lR", 100) proc = kore.proc("/bin/ls -lR") try: stdout = "" # Read until EOF (None is returned) while True: try: # Read from the process, with an optional 1 second timeout. # The recv() call will throw a TimeoutError exception if # the timeout has elapsed before any data was read. chunk = await proc.recv(1024, 1000) if chunk is None: break except TimeoutError as e: print("recv() timed out: %s" % e) continue stdout += chunk.decode() # Reap the process. retcode = await proc.reap() # Respond with the return code + the result as JSON. payload = { "retcode": retcode, "stdout": stdout } data = json.dumps(payload, indent=4) req.response(200, data.encode()) except Exception as e: # If an exception occurs we must kill the process first. proc.kill() errmsg = "Exception: %s" % e req.response(500, errmsg.encode()) kore-3.3.1/examples/python-async/src/async_queue.py000066400000000000000000000032741347522026400224250ustar00rootroot00000000000000# # Copyright (c) 2018 Joris Vink # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # # # Asynchronous queue example. # import kore # The shared queue. tq = kore.queue() # Entry point for our independent coroutine that is created when kore starts. async def queue_helper(): while True: # Wait for a dictionary to arrive. obj = await tq.pop() kore.log(kore.LOG_INFO, "coro(): received %s" % obj) # Create a message to send back. msg = "%d = %s" % (kore.time(), obj["msg"]) # Send it on the received queue. obj["rq"].push(msg) async def async_queue(req): # Create our own queue. rq = kore.queue() # The dictionary we are going to send. obj = { # Receive queue object. "rq": rq, "msg": "hello" } # Push it onto the tq queue now, which will wake up the other coroutine. tq.push(obj) # Wait for a response. response = await rq.pop() # Send the response to the client. req.response(200, response.encode()) kore-3.3.1/examples/python-async/src/async_socket.py000066400000000000000000000037241347522026400225710ustar00rootroot00000000000000# # Copyright (c) 2018 Joris Vink # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # # # Simple socket example. # # The handler will asynchronously connect to the kore app itself and # send an GET request to /socket-test and read the response. import kore import socket async def async_socket(req): # Create the socket using Pythons built-in socket class. sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Set it to nonblocking. sock.setblocking(False) # Create a kore.socket with kore.socket_wrap(). conn = kore.socket_wrap(sock) # Asynchronously connect to 127.0.0.1 port 8888 await conn.connect("127.0.0.1", 8888) kore.log(kore.LOG_INFO, "connected!") # Now send the GET request msg = "GET /socket-test HTTP/1.1\r\nHost: 127.0.0.1\r\n\r\n" await conn.send(msg.encode()) kore.log(kore.LOG_INFO, "request sent!") # Read the response. data = await conn.recv(8192) kore.log(kore.LOG_INFO, "got response!") # Respond with the response from /socket-test. req.response(200, data) # Close the underlying socket, no need to close the wrapped kore.socket sock.close() async def socket_test(req): # Delay response a bit, just cause we can. await kore.suspend(5000) req.response(200, b'response from /socket-test') kore-3.3.1/examples/python-async/src/setup.py000066400000000000000000000016621347522026400212430ustar00rootroot00000000000000# # Copyright (c) 2018 Joris Vink # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # import kore from async_queue import queue_helper # Kore worker started, start the queue helper coroutine. def kore_worker_configure(): kore.task_create(queue_helper()) kore-3.3.1/examples/python-echo/000077500000000000000000000000001347522026400165365ustar00rootroot00000000000000kore-3.3.1/examples/python-echo/.gitignore000066400000000000000000000000541347522026400205250ustar00rootroot00000000000000*.o .flavor .objs python-echo assets.h cert kore-3.3.1/examples/python-echo/conf/000077500000000000000000000000001347522026400174635ustar00rootroot00000000000000kore-3.3.1/examples/python-echo/conf/build.conf000066400000000000000000000017501347522026400214340ustar00rootroot00000000000000# python-echo build config # You can switch flavors using: kodev flavor [newflavor] # Set to yes if you wish to produce a single binary instead # of a dynamic library. If you set this to yes you must also # set kore_source together with kore_flavor. single_binary=yes kore_source=../../ kore_flavor=NOTLS=1 PYTHON=1 # The flags below are shared between flavors cflags=-Wall -Wmissing-declarations -Wshadow cflags=-Wstrict-prototypes -Wmissing-prototypes cflags=-Wpointer-arith -Wcast-qual -Wsign-compare cxxflags=-Wall -Wmissing-declarations -Wshadow cxxflags=-Wpointer-arith -Wcast-qual -Wsign-compare # Mime types for assets served via the builtin asset_serve_* #mime_add=txt:text/plain; charset=utf-8 #mime_add=png:image/png #mime_add=html:text/html; charset=utf-8 dev { # These flags are added to the shared ones when # you build the "dev" flavor. cflags=-g cxxflags=-g } #prod { # You can specify additional flags here which are only # included if you build with the "prod" flavor. #} kore-3.3.1/examples/python-echo/conf/python-echo.conf000066400000000000000000000000671347522026400225720ustar00rootroot00000000000000# python-echo configuration python_import src/echo.py kore-3.3.1/examples/python-echo/src/000077500000000000000000000000001347522026400173255ustar00rootroot00000000000000kore-3.3.1/examples/python-echo/src/echo.py000066400000000000000000000047711347522026400206260ustar00rootroot00000000000000# # Copyright (c) 2013-2018 Joris Vink # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # import kore import socket class EchoServer: # Setup socket + wrap it inside of a kore socket so we can use it. def __init__(self): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setblocking(False) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.bind(("127.0.0.1", 6969)) sock.listen() self.conn = kore.socket_wrap(sock) # Wait for a new client to connect, then create a new task # that calls handle_client with the ocnnected client as # the argument. async def run(self): while True: try: client = await self.conn.accept() kore.task_create(self.handle_client(client)) client = None except Exception as e: kore.fatal("exception %s" % e) # Each client will run as this co-routine. # In this case we pass a timeout of 1 second to the recv() call # which will throw a TimeoutError exception in case the timeout # is hit before data is read from the socket. # # This timeout argument is optional. If none is specified the call # will wait until data becomes available. async def handle_client(self, client): while True: try: data = await client.recv(1024, 1000) if data is None: break await client.send(data) except TimeoutError as e: print("timed out reading (%s)" % e) except Exception as e: print("client got exception %s" % e) client.close() # Setup the server object. server = EchoServer() # Create a task that will execute inside of Kore as a co-routine. kore.task_create(server.run()) kore-3.3.1/examples/python-pgsql/000077500000000000000000000000001347522026400167465ustar00rootroot00000000000000kore-3.3.1/examples/python-pgsql/.gitignore000066400000000000000000000000601347522026400207320ustar00rootroot00000000000000*.o .flavor .objs python-pgsql.so assets.h cert kore-3.3.1/examples/python-pgsql/README.md000066400000000000000000000004001347522026400202170ustar00rootroot00000000000000Kore pgsql python module example. This application requires kore to be built with PYTHON=1 PGSQL=1. Run: ``` $ kodev run ``` Test: ``` $ curl -k https://127.0.0.1:8888 $ curl -k https://127.0.0.1:8888/hello $ curl -k https://127.0.0.1:8888/slow ``` kore-3.3.1/examples/python-pgsql/conf/000077500000000000000000000000001347522026400176735ustar00rootroot00000000000000kore-3.3.1/examples/python-pgsql/conf/build.conf000066400000000000000000000020741347522026400216440ustar00rootroot00000000000000# python-pgsql build config # You can switch flavors using: kodev flavor [newflavor] # Set to yes if you wish to produce a single binary instead # of a dynamic library. If you set this to yes you must also # set kore_source together with kore_flavor and update ldflags # to include the appropriate libraries you will be linking with. #single_binary=no #kore_source=/home/joris/src/kore #kore_flavor= # The flags below are shared between flavors cflags=-Wall -Wmissing-declarations -Wshadow cflags=-Wstrict-prototypes -Wmissing-prototypes cflags=-Wpointer-arith -Wcast-qual -Wsign-compare cxxflags=-Wall -Wmissing-declarations -Wshadow cxxflags=-Wpointer-arith -Wcast-qual -Wsign-compare # Mime types for assets served via the builtin asset_serve_* #mime_add=txt:text/plain; charset=utf-8 #mime_add=png:image/png #mime_add=html:text/html; charset=utf-8 dev { # These flags are added to the shared ones when # you build the "dev" flavor. cflags=-g cxxflags=-g } #prod { # You can specify additional flags here which are only # included if you build with the "prod" flavor. #} kore-3.3.1/examples/python-pgsql/conf/python-pgsql.conf000066400000000000000000000003441347522026400232100ustar00rootroot00000000000000# python-pgsql configuration bind 127.0.0.1 8888 python_import src/query.py tls_dhparam dh2048.pem domain * { certfile cert/server.pem certkey cert/key.pem static / query static /hello hello static /slow slow } kore-3.3.1/examples/python-pgsql/src/000077500000000000000000000000001347522026400175355ustar00rootroot00000000000000kore-3.3.1/examples/python-pgsql/src/query.py000066400000000000000000000034111347522026400212530ustar00rootroot00000000000000# # Copyright (c) 2017-2018 Joris Vink # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # # Asynchronous postgresql queries with Python. import json import kore # Register the path to our database when the worker starts. def kore_worker_configure(): kore.register_database("db", "host=/tmp dbname=kore") # A handler that returns 200 OK with hello as body. def hello(req): req.response(200, b'hello\n') # # The query handler that fires of the query and returns a coroutine. # # Kore will resume this handler when the query returns a result or # is succesfull. # # The req.pgsql() method can throw exceptions, most notably a # GeneratorExit in case the client connection went away before # the query was able to be completed. # # In this example we're not doing any exception handling. # async def query(req): result = await req.pgsql("db", "SELECT * FROM coders") req.response(200, json.dumps(result).encode("utf-8")) # # A slow query that returns after 10 seconds. # async def slow(req): result = await req.pgsql("db", "SELECT * FROM pg_sleep(10)") req.response(200, json.dumps(result).encode("utf-8")) kore-3.3.1/examples/sse/000077500000000000000000000000001347522026400150735ustar00rootroot00000000000000kore-3.3.1/examples/sse/.gitignore000077500000000000000000000000371347522026400170660ustar00rootroot00000000000000*.o .objs sse.so assets.h cert kore-3.3.1/examples/sse/README.md000066400000000000000000000005121347522026400163500ustar00rootroot00000000000000This example demonstrates SSE (Server Side Events) in Kore. Run: ``` $ kodev run ``` Test (run different times to see the events broadcast): ``` curl -H 'accept: text/event-stream' -ik https://127.0.0.1:8888/subscribe ``` If you point a browser to https://127.0.0.1:8888 you will see a small log of what events are arriving. kore-3.3.1/examples/sse/assets/000077500000000000000000000000001347522026400163755ustar00rootroot00000000000000kore-3.3.1/examples/sse/assets/index.html000077500000000000000000000021231347522026400203730ustar00rootroot00000000000000

events

kore-3.3.1/examples/sse/conf/000077500000000000000000000000001347522026400160205ustar00rootroot00000000000000kore-3.3.1/examples/sse/conf/build.conf000066400000000000000000000007431347522026400177720ustar00rootroot00000000000000# sse build config # You can switch flavors using: kodev flavor [newflavor] # The cflags below are shared between flavors cflags=-Wall -Wmissing-declarations -Wshadow cflags=-Wstrict-prototypes -Wmissing-prototypes cflags=-Wpointer-arith -Wcast-qual -Wsign-compare dev { # These cflags are added to the shared ones when # you build the "dev" flavor. cflags=-g } #prod { # You can specify additional CFLAGS here which are only # included if you build with the "prod" flavor. #} kore-3.3.1/examples/sse/conf/sse.conf000077500000000000000000000003371347522026400174670ustar00rootroot00000000000000# Placeholder configuration bind 127.0.0.1 8888 load ./sse.so tls_dhparam dh2048.pem http_keepalive_time 600 domain * { certfile cert/server.pem certkey cert/key.pem static / page static /subscribe subscribe } kore-3.3.1/examples/sse/src/000077500000000000000000000000001347522026400156625ustar00rootroot00000000000000kore-3.3.1/examples/sse/src/sse.c000077500000000000000000000115371347522026400166320ustar00rootroot00000000000000/* * Copyright (c) 2015 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * Simple example of how SSE (Server Side Events) could be used in Kore. * * Upon new arrivals, a join event is broadcast to all clients. * If a client goes away a leave event is broadcasted. * Each connection gets its own 10 second ping timer which will emit * a ping event to the connection endpoint. */ #include #include #include "assets.h" void sse_ping(void *, u_int64_t); int page(struct http_request *); int subscribe(struct http_request *); void sse_disconnect(struct connection *); void sse_send(struct connection *, void *, size_t); void sse_broadcast(struct connection *, void *, size_t); int check_header(struct http_request *, const char *, const char *); /* * Each client subscribed to our SSE gets a state attached * to their hdlr_extra pointer member. */ struct sse_state { struct kore_timer *timer; }; int page(struct http_request *req) { if (req->method != HTTP_METHOD_GET) { http_response_header(req, "allow", "get"); http_response(req, 405, NULL, 0); return (KORE_RESULT_OK); } http_response_header(req, "content-type", "text/html"); http_response(req, 200, asset_index_html, asset_len_index_html); return (KORE_RESULT_OK); } int subscribe(struct http_request *req) { struct sse_state *state; char *hello = "event:join\ndata: client\n\n"; /* Preventive paranoia. */ if (req->hdlr_extra != NULL) { kore_log(LOG_ERR, "%p: already subscribed", req->owner); http_response(req, 500, NULL, 0); return (KORE_RESULT_OK); } /* Only allow GET methods. */ if (req->method != HTTP_METHOD_GET) { http_response_header(req, "allow", "get"); http_response(req, 405, NULL, 0); return (KORE_RESULT_OK); } /* Only do SSE if the client told us it wanted too. */ if (!check_header(req, "accept", "text/event-stream")) return (KORE_RESULT_OK); /* Do not include content-length in our response. */ req->flags |= HTTP_REQUEST_NO_CONTENT_LENGTH; /* Notify existing clients of our new client now. */ sse_broadcast(req->owner, hello, strlen(hello)); /* Set a disconnection method so we know when this client goes away. */ req->owner->disconnect = sse_disconnect; /* Allocate a state to be carried by our connection. */ state = kore_malloc(sizeof(*state)); req->owner->hdlr_extra = state; /* Now start a timer to send a ping back every 10 second. */ state->timer = kore_timer_add(sse_ping, 10000, req->owner, 0); /* Respond that the SSE channel is now open. */ kore_log(LOG_NOTICE, "%p: connected for SSE", req->owner); http_response_header(req, "content-type", "text/event-stream"); http_response(req, 200, NULL, 0); return (KORE_RESULT_OK); } void sse_broadcast(struct connection *src, void *data, size_t len) { struct connection *c; /* Broadcast the message to all other clients. */ TAILQ_FOREACH(c, &connections, list) { if (c == src) continue; sse_send(c, data, len); } } void sse_send(struct connection *c, void *data, size_t len) { struct sse_state *state = c->hdlr_extra; /* Do not send to clients that do not have a state. */ if (state == NULL) return; /* Queue outgoing data now. */ net_send_queue(c, data, len); net_send_flush(c); } void sse_ping(void *arg, u_int64_t now) { struct connection *c = arg; char *ping = "event:ping\ndata:\n\n"; /* Send our ping to the client. */ sse_send(c, ping, strlen(ping)); } void sse_disconnect(struct connection *c) { struct sse_state *state = c->hdlr_extra; char *leaving = "event: leave\ndata: client\n\n"; kore_log(LOG_NOTICE, "%p: disconnecting for SSE", c); /* Tell others we are leaving. */ sse_broadcast(c, leaving, strlen(leaving)); /* Kill our timer and free/remove the state. */ kore_timer_remove(state->timer); kore_free(state); /* Prevent us to be called again. */ c->hdlr_extra = NULL; c->disconnect = NULL; } int check_header(struct http_request *req, const char *name, const char *value) { const char *hdr; if (!http_request_header(req, name, &hdr)) { http_response(req, 400, NULL, 0); return (KORE_RESULT_ERROR); } if (strcmp(hdr, value)) { http_response(req, 400, NULL, 0); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } kore-3.3.1/examples/tasks/000077500000000000000000000000001347522026400154265ustar00rootroot00000000000000kore-3.3.1/examples/tasks/README.md000066400000000000000000000005641347522026400167120ustar00rootroot00000000000000Kore task example. This example creates an asynchronous task from the page handler that performs a POST to the same server and fetches its data before returning to the client. Build: ``` $ kodev build ``` Run: ``` $ kodev run ``` Test: ``` $ curl -i -k https://127.0.0.1:8888/?user=astring The returned data must match what you supplied in user ([a-z] string) ``` kore-3.3.1/examples/tasks/conf/000077500000000000000000000000001347522026400163535ustar00rootroot00000000000000kore-3.3.1/examples/tasks/conf/build.conf000066400000000000000000000010431347522026400203170ustar00rootroot00000000000000# tasks build config # You can switch flavors using: kodev flavor [newflavor] # The cflags below are shared between flavors cflags=-Wall -Wmissing-declarations -Wshadow cflags=-Wstrict-prototypes -Wmissing-prototypes cflags=-Wpointer-arith -Wcast-qual -Wsign-compare cflags=-I/usr/local/include dev { # These cflags are added to the shared ones when # you build the "dev" flavor. cflags=-g ldflags=-L/usr/local/lib -lcurl } #prod { # You can specify additional CFLAGS here which are only # included if you build with the "prod" flavor. #} kore-3.3.1/examples/tasks/conf/tasks.conf000066400000000000000000000006751347522026400203570ustar00rootroot00000000000000# Kore config for tasks example bind 127.0.0.1 8888 load ./tasks.so tls_dhparam dh2048.pem task_threads 4 worker_max_connections 1000 http_keepalive_time 0 validator v_user regex ^[a-z]*$ domain * { certfile cert/server.pem certkey cert/key.pem accesslog kore_access.log static / page_handler static /post_back post_back params qs:get / { validate user v_user } params post /post_back { validate user v_user } } kore-3.3.1/examples/tasks/src/000077500000000000000000000000001347522026400162155ustar00rootroot00000000000000kore-3.3.1/examples/tasks/src/tasks.c000066400000000000000000000146431347522026400175160ustar00rootroot00000000000000/* * Copyright (c) 2014 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * In this example, we use the background tasks available in Kore * to fire off a POST to our /post_back page handler containing * the user argument that was passed to us in our GET request to /. * * This illustrates how Kore its background tasks in effect work and * how to operate on the channel in order to pass data back and forth. * * You need libcurl installed for this to build (including headers) * * Read README.md on how to build and run this example. */ #include #include #include #include int run_curl(struct kore_task *); int post_back(struct http_request *); int page_handler(struct http_request *); size_t curl_write_cb(char *, size_t, size_t, void *); struct rstate { struct kore_task task; }; int page_handler(struct http_request *req) { u_int32_t len; struct rstate *state; char *user, result[64]; /* * Lets check if a task has been created yet, this is important * as we only want to fire this off once and we will be called * again once it has been created. * * In this example, we'll store our state with our task in hdlr_extra. */ if (req->hdlr_extra == NULL) { /* Grab the user argument */ http_populate_get(req); if (!http_argument_get_string(req, "user", &user)) { http_response(req, 500, "ERROR\n", 6); return (KORE_RESULT_OK); } /* * Allocate rstate and bind it to the hdlr_extra field. * Kore automatically frees this when freeing the result. */ state = kore_malloc(sizeof(*state)); req->hdlr_extra = state; /* * Create a new task that will execute the run_curl() * function and bind it to our request. * * Binding a task to a request means Kore will reschedule * the page handler for that request to refire after the * task has completed or when it writes on the task channel. */ kore_task_create(&state->task, run_curl); kore_task_bind_request(&state->task, req); /* * Start the task and write the user we received in our * GET request to its channel. */ kore_task_run(&state->task); kore_task_channel_write(&state->task, user, strlen(user)); /* * Tell Kore to retry us later. */ return (KORE_RESULT_RETRY); } else { state = req->hdlr_extra; } /* * Our page handler is scheduled to be called when either the * task finishes or has written data onto the channel. * * In order to distinguish between the two we can inspect the * state of the task. */ if (kore_task_state(&state->task) != KORE_TASK_STATE_FINISHED) { http_request_sleep(req); return (KORE_RESULT_RETRY); } /* * Task is finished, check the result. */ if (kore_task_result(&state->task) != KORE_RESULT_OK) { kore_task_destroy(&state->task); http_response(req, 500, NULL, 0); return (KORE_RESULT_OK); } /* * Lets read what our task has written to the channel. * * kore_task_channel_read() will return the amount of bytes * that it received for that read. If the returned bytes is * larger then the buffer you passed this is a sign of truncation * and should be treated carefully. */ len = kore_task_channel_read(&state->task, result, sizeof(result)); if (len > sizeof(result)) { http_response(req, 500, NULL, 0); } else { http_response(req, 200, result, len); } /* We good, destroy the task. */ kore_task_destroy(&state->task); return (KORE_RESULT_OK); } int post_back(struct http_request *req) { char *user; if (req->method != HTTP_METHOD_POST) { http_response(req, 500, NULL, 0); return (KORE_RESULT_OK); } http_populate_post(req); if (!http_argument_get_string(req, "user", &user)) { http_response(req, 500, NULL, 0); return (KORE_RESULT_OK); } /* Simply echo the supplied user argument back. */ http_response(req, 200, user, strlen(user)); return (KORE_RESULT_OK); } /* * This is the function that is executed by our task which is created * in the page_handler() callback. * * It sets up a CURL POST request to /post_back passing along the * user argument which it receives from its channel from page_handler(). */ int run_curl(struct kore_task *t) { struct kore_buf *b; size_t len; CURLcode res; u_int8_t *data; CURL *curl; char user[64], fields[128]; /* * Read the channel in order to obtain the user argument * that was written to it by page_handler(). */ len = kore_task_channel_read(t, user, sizeof(user)); if (len > sizeof(user)) return (KORE_RESULT_ERROR); if (!kore_snprintf(fields, sizeof(fields), NULL, "user=%.*s", len, user)) return (KORE_RESULT_ERROR); if ((curl = curl_easy_init()) == NULL) return (KORE_RESULT_ERROR); b = kore_buf_alloc(128); /* Do CURL magic. */ curl_easy_setopt(curl, CURLOPT_POST, 1); curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1); curl_easy_setopt(curl, CURLOPT_WRITEDATA, b); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, fields); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_write_cb); #if !defined(KORE_NO_TLS) curl_easy_setopt(curl, CURLOPT_URL, "https://127.0.0.1:8888/post_back"); #else curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1:8888/post_back"); #endif res = curl_easy_perform(curl); if (res != CURLE_OK) { kore_buf_free(b); curl_easy_cleanup(curl); return (KORE_RESULT_ERROR); } /* * Grab the response from the CURL request and write the * result back to the task channel. */ data = kore_buf_release(b, &len); kore_task_channel_write(t, data, len); kore_free(data); return (KORE_RESULT_OK); } size_t curl_write_cb(char *ptr, size_t size, size_t nmemb, void *udata) { struct kore_buf *b = udata; kore_buf_append(b, ptr, size * nmemb); return (size * nmemb); } kore-3.3.1/examples/tls-proxy/000077500000000000000000000000001347522026400162625ustar00rootroot00000000000000kore-3.3.1/examples/tls-proxy/.gitignore000077500000000000000000000000451347522026400202540ustar00rootroot00000000000000*.o .objs tls-proxy.so assets.h cert kore-3.3.1/examples/tls-proxy/README.md000066400000000000000000000006321347522026400175420ustar00rootroot00000000000000Kore as a TLS-proxy. Edit src/proxy.c and add your backends to the backends[] data structure. If you want to reduce attack surface you can build Kore with NOHTTP=1 to completely remove the HTTP component and only run the net code. Run: ``` $ kodev run ``` Test: ``` Connect to the server and notice that it proxies data between you and your destination. $ openssl s_client -connect 127.0.0.1:8888 ``` kore-3.3.1/examples/tls-proxy/conf/000077500000000000000000000000001347522026400172075ustar00rootroot00000000000000kore-3.3.1/examples/tls-proxy/conf/build.conf000066400000000000000000000007511347522026400211600ustar00rootroot00000000000000# tls-proxy build config # You can switch flavors using: kodev flavor [newflavor] # The cflags below are shared between flavors cflags=-Wall -Wmissing-declarations -Wshadow cflags=-Wstrict-prototypes -Wmissing-prototypes cflags=-Wpointer-arith -Wcast-qual -Wsign-compare dev { # These cflags are added to the shared ones when # you build the "dev" flavor. cflags=-g } #prod { # You can specify additional CFLAGS here which are only # included if you build with the "prod" flavor. #} kore-3.3.1/examples/tls-proxy/conf/tls-proxy.conf000077500000000000000000000005341347522026400220440ustar00rootroot00000000000000# Kore as a TLS proxy configuration. load ./tls-proxy.so tls_dhparam dh2048.pem # # Bind the proxy to a given IP and port. For every # connection we receive we will call client_setup # so it can kick things in action. # bind 127.0.0.1 8888 client_setup # Setup domain for TLS usage. domain * { certfile cert/server.pem certkey cert/key.pem } kore-3.3.1/examples/tls-proxy/src/000077500000000000000000000000001347522026400170515ustar00rootroot00000000000000kore-3.3.1/examples/tls-proxy/src/proxy.c000077500000000000000000000165561347522026400204160ustar00rootroot00000000000000/* * Copyright (c) 2015 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include /* * In this example Kore acts as a TLS proxy shuffling data between * an encrypted connection and a plain text backend. * * It will look at the TLS SNI extension to figure out what backend * to use for the connection when it comes in. * * Add your backends to the data structure below. */ /* Default timeouts, 5 seconds for connecting, 15 seconds otherwise. */ #define PROXY_TIMEOUT (15 * 1000) #define PROXY_CONNECT_TIMEOUT (5 * 1000) /* All domains and their backends. */ struct { const char *name; const char *ip; const u_int16_t port; } backends[] = { { "localhost", "127.0.0.1", 8080 }, { NULL, NULL, 0 } }; int client_handle(struct connection *); void client_setup(struct connection *); void disconnect(struct connection *); int pipe_data(struct netbuf *); int backend_handle_connect(struct connection *); int backend_handle_default(struct connection *); /* * Called for every new connection on a certain ip/port. Which one is * configured in the TLS proxy its configuration file. */ void client_setup(struct connection *c) { int i, fd; const char *name; struct connection *backend; /* Paranoia. */ name = SSL_get_servername(c->ssl, TLSEXT_NAMETYPE_host_name); if (name == NULL) { kore_connection_disconnect(c); return; } /* Figure out what backend to use. */ for (i = 0; backends[i].name != NULL; i++) { if (!strcasecmp(backends[i].name, name)) break; } /* If we don't have any backends, we just disconnect the client. */ if (backends[i].name == NULL) { kore_connection_disconnect(c); return; } /* Create new socket for the backend connection. */ if ((fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { kore_log(LOG_ERR, "socket(): %s", errno_s); kore_connection_disconnect(c); return; } /* Set it to non blocking as well. */ if (!kore_connection_nonblock(fd, 1)) { close(fd); kore_connection_disconnect(c); return; } /* Grab a new connection from Kore to hook backend into. */ backend = kore_connection_new(NULL); /* Prepare our connection. */ backend->family = AF_INET; backend->addr.ipv4.sin_family = AF_INET; backend->addr.ipv4.sin_port = htons(backends[i].port); backend->addr.ipv4.sin_addr.s_addr = inet_addr(backends[i].ip); /* Set the file descriptor for the backend. */ backend->fd = fd; /* Default write/read callbacks for backend. */ backend->read = net_read; backend->write = net_write; /* Connection type (unknown to Kore). */ backend->proto = CONN_PROTO_UNKNOWN; backend->state = CONN_STATE_ESTABLISHED; /* The backend idle timer is set first to connection timeout. */ backend->idle_timer.length = PROXY_CONNECT_TIMEOUT; /* The client idle timer is set to default idle time. */ c->idle_timer.length = PROXY_TIMEOUT; /* Now link both the client and the backend connection together. */ c->hdlr_extra = backend; backend->hdlr_extra = c; /* * The handle function pointer for the backend is set to the * backend_handle_connect() while connecting. */ c->handle = client_handle; backend->handle = backend_handle_connect; /* Set the disconnect method for both connections. */ c->disconnect = disconnect; backend->disconnect = disconnect; /* Queue write events for the backend connection for now. */ kore_platform_schedule_write(backend->fd, backend); /* Start idle timer for the backend. */ kore_connection_start_idletimer(backend); /* Set our client connection to established. */ c->state = CONN_STATE_ESTABLISHED; /* Insert the backend into the list of Kore connections. */ TAILQ_INSERT_TAIL(&connections, backend, list); /* Kick off connecting. */ backend->evt.flags |= KORE_EVENT_WRITE; backend->handle(backend); } /* * This function is called for backends while they are connecting. * In here we check for write events and attempt to connect() to the * backend. * * Once a connection is established we set the backend handle function * pointer to the backend_handle_default() callback and setup the reads * for both the backend and the client connection we received. */ int backend_handle_connect(struct connection *c) { int ret; struct connection *src; /* We will get a write notification when we can progress. */ if (!(c->evt.flags & KORE_EVENT_WRITE)) return (KORE_RESULT_OK); kore_connection_stop_idletimer(c); /* Attempt connecting. */ ret = connect(c->fd, (struct sockaddr *)&c->addr.ipv4, sizeof(c->addr.ipv4)); /* If we failed check why, we are non blocking. */ if (ret == -1) { /* If we got a real error, disconnect. */ if (errno != EALREADY && errno != EINPROGRESS && errno != EISCONN) { kore_log(LOG_ERR, "connect(): %s", errno_s); return (KORE_RESULT_ERROR); } /* Clean the write flag, we'll be called later. */ if (errno != EISCONN) { c->evt.flags &= ~KORE_EVENT_WRITE; kore_connection_start_idletimer(c); return (KORE_RESULT_OK); } } /* The connection to the backend succeeded. */ c->handle = backend_handle_default; /* Setup read calls for both backend and its client. */ net_recv_queue(c, NETBUF_SEND_PAYLOAD_MAX, NETBUF_CALL_CB_ALWAYS, pipe_data); net_recv_queue(c->hdlr_extra, NETBUF_SEND_PAYLOAD_MAX, NETBUF_CALL_CB_ALWAYS, pipe_data); /* Allow for all events now. */ kore_connection_start_idletimer(c); kore_platform_event_all(c->fd, c); /* Allow events from source now. */ src = c->hdlr_extra; kore_platform_event_all(src->fd, src); /* Now lets start. */ return (c->handle(c)); } /* * Called for connection activity on a backend, just forwards * to the default Kore connection handling for now. */ int backend_handle_default(struct connection *c) { return (kore_connection_handle(c)); } /* * Called for connection activity on a client, just forwards * to the default Kore connection handling for now. */ int client_handle(struct connection *c) { return (kore_connection_handle(c)); } /* * Called whenever a client or its backend have disconnected. * This will disconnect the matching paired connection as well. */ void disconnect(struct connection *c) { struct connection *pair = c->hdlr_extra; c->hdlr_extra = NULL; if (pair != NULL) { pair->hdlr_extra = NULL; kore_connection_disconnect(pair); } } /* * Called whenever data is available that must be piped through * to the paired connection. (client<>backend or backend<>client). */ int pipe_data(struct netbuf *nb) { struct connection *src = nb->owner; struct connection *dst = src->hdlr_extra; /* Flush data out towards destination. */ net_send_queue(dst, nb->buf, nb->s_off); net_send_flush(dst); /* Reset read for source. */ net_recv_reset(src, NETBUF_SEND_PAYLOAD_MAX, pipe_data); return (KORE_RESULT_OK); } kore-3.3.1/examples/upload/000077500000000000000000000000001347522026400155655ustar00rootroot00000000000000kore-3.3.1/examples/upload/.gitignore000066400000000000000000000000421347522026400175510ustar00rootroot00000000000000*.o .objs upload.so assets.h cert kore-3.3.1/examples/upload/conf/000077500000000000000000000000001347522026400165125ustar00rootroot00000000000000kore-3.3.1/examples/upload/conf/build.conf000066400000000000000000000007461347522026400204670ustar00rootroot00000000000000# upload build config # You can switch flavors using: kodev flavor [newflavor] # The cflags below are shared between flavors cflags=-Wall -Wmissing-declarations -Wshadow cflags=-Wstrict-prototypes -Wmissing-prototypes cflags=-Wpointer-arith -Wcast-qual -Wsign-compare dev { # These cflags are added to the shared ones when # you build the "dev" flavor. cflags=-g } #prod { # You can specify additional CFLAGS here which are only # included if you build with the "prod" flavor. #} kore-3.3.1/examples/upload/conf/upload.conf000066400000000000000000000003421347522026400206440ustar00rootroot00000000000000# Placeholder configuration bind 127.0.0.1 8888 load ./upload.so tls_dhparam dh2048.pem http_body_max 1024000000 http_body_disk_offload 4096 domain * { certfile cert/server.pem certkey cert/key.pem static / page } kore-3.3.1/examples/upload/src/000077500000000000000000000000001347522026400163545ustar00rootroot00000000000000kore-3.3.1/examples/upload/src/upload.c000066400000000000000000000062651347522026400200150ustar00rootroot00000000000000/* * Copyright (c) 2016-2018 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * This example demonstrates how to properly deal with file uploads * coming from a multipart form. * * The basics are quite trivial: * 1) call http_populate_multipart_form() * 2) find the file using http_file_lookup(). * 3) read the file data using http_file_read(). * * In this example the contents is written to a newly created file * on the server that matches the naming given by the uploader. * * Note that the above is probably not what you want to do in real life. */ #include #include #include #include int page(struct http_request *); int page(struct http_request *req) { int fd; struct http_file *file; u_int8_t buf[BUFSIZ]; ssize_t ret, written; /* Only deal with POSTs. */ if (req->method != HTTP_METHOD_POST) { http_response(req, 405, NULL, 0); return (KORE_RESULT_OK); } /* Parse the multipart data that was present. */ http_populate_multipart_form(req); /* Find our file. */ if ((file = http_file_lookup(req, "file")) == NULL) { http_response(req, 400, NULL, 0); return (KORE_RESULT_OK); } /* Open dump file where we will write file contents. */ fd = open(file->filename, O_CREAT | O_TRUNC | O_WRONLY, 0700); if (fd == -1) { http_response(req, 500, NULL, 0); return (KORE_RESULT_OK); } /* While we have data from http_file_read(), write it. */ /* Alternatively you could look at file->offset and file->length. */ ret = KORE_RESULT_ERROR; for (;;) { ret = http_file_read(file, buf, sizeof(buf)); if (ret == -1) { kore_log(LOG_ERR, "failed to read from file"); http_response(req, 500, NULL, 0); goto cleanup; } if (ret == 0) break; written = write(fd, buf, ret); if (written == -1) { kore_log(LOG_ERR,"write(%s): %s", file->filename, errno_s); http_response(req, 500, NULL, 0); goto cleanup; } if (written != ret) { kore_log(LOG_ERR, "partial write on %s", file->filename); http_response(req, 500, NULL, 0); goto cleanup; } } ret = KORE_RESULT_OK; http_response(req, 200, NULL, 0); kore_log(LOG_INFO, "file '%s' successfully received", file->filename); cleanup: if (close(fd) == -1) kore_log(LOG_WARNING, "close(%s): %s", file->filename, errno_s); if (ret == KORE_RESULT_ERROR) { if (unlink(file->filename) == -1) { kore_log(LOG_WARNING, "unlink(%s): %s", file->filename, errno_s); } ret = KORE_RESULT_OK; } return (KORE_RESULT_OK); } kore-3.3.1/examples/video_stream/000077500000000000000000000000001347522026400167625ustar00rootroot00000000000000kore-3.3.1/examples/video_stream/.gitignore000077500000000000000000000000421347522026400207510ustar00rootroot00000000000000*.o .objs stream.so assets.h cert kore-3.3.1/examples/video_stream/README.md000066400000000000000000000010321347522026400202350ustar00rootroot00000000000000A simple HTML5 video streaming service using Kore. Building: ``` You must first place a test video inside the videos/ folder. I tested this using Big Buck Bunny (ogg version) on Chrome. But any video that can be played with HTML5 works. If you did not save your video as videos/video.ogg make sure you update the assets/video.html file to point to the right video. When done, run a kodev build. ``` Run: ``` kodev run ``` Visit the URI and you should see a video stream. Frontend parts from video.js: http://www.videojs.com/ kore-3.3.1/examples/video_stream/assets/000077500000000000000000000000001347522026400202645ustar00rootroot00000000000000kore-3.3.1/examples/video_stream/assets/video.html000066400000000000000000000007211347522026400222600ustar00rootroot00000000000000 Video stream over Kore kore-3.3.1/examples/video_stream/conf/000077500000000000000000000000001347522026400177075ustar00rootroot00000000000000kore-3.3.1/examples/video_stream/conf/build.conf000066400000000000000000000010241347522026400216520ustar00rootroot00000000000000# video_stream build config # You can switch flavors using: kodev flavor [newflavor] # The cflags below are shared between flavors cflags=-Wall -Wmissing-declarations -Wshadow cflags=-Wstrict-prototypes -Wmissing-prototypes cflags=-Wpointer-arith -Wcast-qual -Wsign-compare mime_add=html:text/html; charset=utf-8 dev { # These cflags are added to the shared ones when # you build the "dev" flavor. cflags=-g } #prod { # You can specify additional CFLAGS here which are only # included if you build with the "prod" flavor. #} kore-3.3.1/examples/video_stream/conf/video_stream.conf000077500000000000000000000004451347522026400232450ustar00rootroot00000000000000# Placeholder configuration bind 127.0.0.1 8888 load ./video_stream.so init tls_dhparam dh2048.pem http_keepalive_time 600 domain * { certfile cert/server.pem certkey cert/key.pem accesslog access.log static / asset_serve_video_html dynamic ^/[a-z]*.[a-z0-9]{3}$ video_stream } kore-3.3.1/examples/video_stream/src/000077500000000000000000000000001347522026400175515ustar00rootroot00000000000000kore-3.3.1/examples/video_stream/src/stream.c000077500000000000000000000137261347522026400212240ustar00rootroot00000000000000/* * Copyright (c) 2014 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include #include #include #include #include #include "assets.h" struct video { int fd; int ref; off_t size; char *path; u_int8_t *data; void *base; TAILQ_ENTRY(video) list; }; int init(int); int video_stream(struct http_request *); static void video_unmap(struct video *); static int video_stream_finish(struct netbuf *); static int video_mmap(struct http_request *, struct video *); static int video_open(struct http_request *, struct video **); TAILQ_HEAD(, video) videos; int init(int state) { if (state == KORE_MODULE_UNLOAD) { kore_log(LOG_NOTICE, "not reloading module"); return (KORE_RESULT_ERROR); } TAILQ_INIT(&videos); return (KORE_RESULT_OK); } int video_stream(struct http_request *req) { struct video *v; const char *header; off_t start, end; int n, err, status; char *bytes, *range[3], rb[128], *ext, ctype[32]; if (!video_open(req, &v)) return (KORE_RESULT_OK); if ((ext = strrchr(req->path, '.')) == NULL) { v->ref--; http_response(req, 400, NULL, 0); return (KORE_RESULT_OK); } if (!kore_snprintf(ctype, sizeof(ctype), NULL, "video/%s", ext + 1)) { v->ref--; http_response(req, 500, NULL, 0); return (KORE_RESULT_OK); } kore_log(LOG_NOTICE, "%p: opened %s (%s) for streaming (%jd ref:%d)", (void *)req->owner, v->path, ctype, (intmax_t)v->size, v->ref); if (http_request_header(req, "range", &header)) { if ((bytes = strchr(header, '=')) == NULL) { v->ref--; http_response(req, 416, NULL, 0); return (KORE_RESULT_OK); } bytes++; n = kore_split_string(bytes, "-", range, 3); if (n == 0) { v->ref--; http_response(req, 416, NULL, 0); return (KORE_RESULT_OK); } if (n >= 1) { start = kore_strtonum64(range[0], 1, &err); if (err != KORE_RESULT_OK) { v->ref--; http_response(req, 416, NULL, 0); return (KORE_RESULT_OK); } } if (n > 1) { end = kore_strtonum64(range[1], 1, &err); if (err != KORE_RESULT_OK) { v->ref--; http_response(req, 416, NULL, 0); return (KORE_RESULT_OK); } } else { end = 0; } if (end == 0) end = v->size; if (start > end || start > v->size || end > v->size) { v->ref--; http_response(req, 416, NULL, 0); return (KORE_RESULT_OK); } status = 206; if (!kore_snprintf(rb, sizeof(rb), NULL, "bytes %ld-%ld/%ld", start, end - 1, v->size)) { v->ref--; http_response(req, 500, NULL, 0); return (KORE_RESULT_OK); } kore_log(LOG_NOTICE, "%p: %s sending: %jd-%jd/%jd", (void *)req->owner, v->path, (intmax_t)start, (intmax_t)end - 1, (intmax_t)v->size); http_response_header(req, "content-range", rb); } else { start = 0; status = 200; end = v->size; } http_response_header(req, "content-type", ctype); http_response_header(req, "accept-ranges", "bytes"); http_response_stream(req, status, v->data + start, end - start, video_stream_finish, v); return (KORE_RESULT_OK); } static int video_open(struct http_request *req, struct video **out) { struct stat st; struct video *v; char fpath[MAXPATHLEN]; if (!kore_snprintf(fpath, sizeof(fpath), NULL, "videos%s", req->path)) { http_response(req, 500, NULL, 0); return (KORE_RESULT_ERROR); } TAILQ_FOREACH(v, &videos, list) { if (!strcmp(v->path, fpath)) { if (video_mmap(req, v)) { *out = v; return (KORE_RESULT_OK); } close(v->fd); TAILQ_REMOVE(&videos, v, list); kore_free(v->path); kore_free(v); http_response(req, 500, NULL, 0); return (KORE_RESULT_ERROR); } } v = kore_malloc(sizeof(*v)); v->ref = 0; v->base = NULL; v->data = NULL; v->path = kore_strdup(fpath); if ((v->fd = open(fpath, O_RDONLY)) == -1) { kore_free(v->path); kore_free(v); if (errno == ENOENT) http_response(req, 404, NULL, 0); else http_response(req, 500, NULL, 0); return (KORE_RESULT_ERROR); } if (fstat(v->fd, &st) == -1) { close(v->fd); kore_free(v->path); kore_free(v); http_response(req, 500, NULL, 0); return (KORE_RESULT_ERROR); } v->size = st.st_size; if (!video_mmap(req, v)) { close(v->fd); kore_free(v->path); kore_free(v); http_response(req, 500, NULL, 0); return (KORE_RESULT_ERROR); } *out = v; TAILQ_INSERT_TAIL(&videos, v, list); return (KORE_RESULT_OK); } static int video_mmap(struct http_request *req, struct video *v) { if (v->base != NULL && v->data != NULL) { v->ref++; return (KORE_RESULT_OK); } v->base = mmap(NULL, v->size, PROT_READ, MAP_SHARED, v->fd, 0); if (v->base == MAP_FAILED) return (KORE_RESULT_ERROR); v->ref++; v->data = v->base; return (KORE_RESULT_OK); } static int video_stream_finish(struct netbuf *nb) { struct video *v = nb->extra; v->ref--; kore_log(LOG_NOTICE, "%p: video stream %s done (%zu/%zu ref:%d)", (void *)nb->owner, v->path, nb->s_off, nb->b_len, v->ref); if (v->ref == 0) video_unmap(v); return (KORE_RESULT_OK); } static void video_unmap(struct video *v) { if (munmap(v->base, v->size) == -1) { kore_log(LOG_ERR, "munmap(%s): %s", v->path, errno_s); } else { v->base = NULL; v->data = NULL; kore_log(LOG_NOTICE, "unmapped %s for streaming, no refs left", v->path); } } kore-3.3.1/examples/video_stream/videos/000077500000000000000000000000001347522026400202535ustar00rootroot00000000000000kore-3.3.1/examples/video_stream/videos/placeholder000066400000000000000000000000371347522026400224600ustar00rootroot00000000000000Drop your HTML5 videos in here kore-3.3.1/examples/websocket/000077500000000000000000000000001347522026400162675ustar00rootroot00000000000000kore-3.3.1/examples/websocket/.gitignore000077500000000000000000000000451347522026400202610ustar00rootroot00000000000000*.o .objs websocket.so assets.h cert kore-3.3.1/examples/websocket/README.md000066400000000000000000000007231347522026400175500ustar00rootroot00000000000000Kore example websocket server Run: ``` # kodev run ``` Test: ``` Open a browser that does websockets, surf to https://127.0.0.1:8888 or whatever configured IP you have in the config. Hit the connect button to open a websocket session, open a second tab and surf to the same address and hit the connection button there as well. This should cause the number of messages sent/recv to keep incrementing as each message is broadcast to the other connection. ``` kore-3.3.1/examples/websocket/assets/000077500000000000000000000000001347522026400175715ustar00rootroot00000000000000kore-3.3.1/examples/websocket/assets/frontend.html000066400000000000000000000020241347522026400222740ustar00rootroot00000000000000
kore-3.3.1/examples/websocket/conf/000077500000000000000000000000001347522026400172145ustar00rootroot00000000000000kore-3.3.1/examples/websocket/conf/build.conf000066400000000000000000000007511347522026400211650ustar00rootroot00000000000000# websocket build config # You can switch flavors using: kodev flavor [newflavor] # The cflags below are shared between flavors cflags=-Wall -Wmissing-declarations -Wshadow cflags=-Wstrict-prototypes -Wmissing-prototypes cflags=-Wpointer-arith -Wcast-qual -Wsign-compare dev { # These cflags are added to the shared ones when # you build the "dev" flavor. cflags=-g } #prod { # You can specify additional CFLAGS here which are only # included if you build with the "prod" flavor. #} kore-3.3.1/examples/websocket/conf/websocket.conf000077500000000000000000000005601347522026400220550ustar00rootroot00000000000000# Kore websocket example bind 127.0.0.1 8888 load ./websocket.so tls_dhparam dh2048.pem # Increase workers so connections are spread # across them to demonstrate WEBSOCKET_BROADCAST_GLOBAL. workers 4 websocket_maxframe 65536 websocket_timeout 20 domain * { certfile cert/server.pem certkey cert/key.pem static / page static /connect page_ws_connect } kore-3.3.1/examples/websocket/src/000077500000000000000000000000001347522026400170565ustar00rootroot00000000000000kore-3.3.1/examples/websocket/src/websocket.c000077500000000000000000000036471347522026400212250ustar00rootroot00000000000000/* * Copyright (c) 2014 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include "assets.h" int page(struct http_request *); int page_ws_connect(struct http_request *); void websocket_connect(struct connection *); void websocket_disconnect(struct connection *); void websocket_message(struct connection *, u_int8_t, void *, size_t); /* Called whenever we get a new websocket connection. */ void websocket_connect(struct connection *c) { kore_log(LOG_NOTICE, "%p: connected", c); } void websocket_message(struct connection *c, u_int8_t op, void *data, size_t len) { kore_websocket_broadcast(c, op, data, len, WEBSOCKET_BROADCAST_GLOBAL); } void websocket_disconnect(struct connection *c) { kore_log(LOG_NOTICE, "%p: disconnecting", c); } int page(struct http_request *req) { http_response_header(req, "content-type", "text/html"); http_response(req, 200, asset_frontend_html, asset_len_frontend_html); return (KORE_RESULT_OK); } int page_ws_connect(struct http_request *req) { /* Perform the websocket handshake, passing our callbacks. */ kore_websocket_handshake(req, "websocket_connect", "websocket_message", "websocket_disconnect"); return (KORE_RESULT_OK); } kore-3.3.1/include/000077500000000000000000000000001347522026400141065ustar00rootroot00000000000000kore-3.3.1/include/kore/000077500000000000000000000000001347522026400150465ustar00rootroot00000000000000kore-3.3.1/include/kore/curl.h000066400000000000000000000053641347522026400161740ustar00rootroot00000000000000/* * Copyright (c) 2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #ifndef __H_CURL_H #define __H_CURL_H #if defined(__cplusplus) extern "C" { #endif #include #include "http.h" #define KORE_CURL_TIMEOUT 60 #define KORE_CURL_RECV_MAX (1024 * 1024 * 2) #define KORE_CURL_FLAG_HTTP_PARSED_HEADERS 0x0001 #define KORE_CURL_FLAG_BOUND 0x0002 #define KORE_CURL_TYPE_CUSTOM 1 #define KORE_CURL_TYPE_HTTP_CLIENT 2 struct kore_curl { int type; int flags; CURLcode result; char *url; CURL *handle; struct kore_buf *response; struct http_request *req; void *arg; void (*cb)(struct kore_curl *, void *); char errbuf[CURL_ERROR_SIZE]; /* For the simplified HTTP api. */ struct { long status; struct curl_slist *hdrlist; struct kore_buf *tosend; struct kore_buf *headers; TAILQ_HEAD(, http_header) resp_hdrs; } http; LIST_ENTRY(kore_curl) list; }; extern u_int16_t kore_curl_timeout; extern u_int64_t kore_curl_recv_max; void kore_curl_sysinit(void); void kore_curl_run(struct kore_curl *); void kore_curl_cleanup(struct kore_curl *); int kore_curl_success(struct kore_curl *); void kore_curl_logerror(struct kore_curl *); int kore_curl_init(struct kore_curl *, const char *); size_t kore_curl_tobuf(char *, size_t, size_t, void *); size_t kore_curl_frombuf(char *, size_t, size_t, void *); void kore_curl_http_parse_headers(struct kore_curl *); void kore_curl_http_set_header(struct kore_curl *, const char *, const char *); int kore_curl_http_get_header(struct kore_curl *, const char *, const char **); void kore_curl_http_setup(struct kore_curl *, int, const void *, size_t); char *kore_curl_response_as_string(struct kore_curl *); void kore_curl_response_as_bytes(struct kore_curl *, const u_int8_t **, size_t *); void kore_curl_bind_request(struct kore_curl *, struct http_request *); void kore_curl_bind_callback(struct kore_curl *, void (*cb)(struct kore_curl *, void *), void *); const char *kore_curl_strerror(struct kore_curl *); #if defined(__cplusplus) } #endif #endif kore-3.3.1/include/kore/http.h000066400000000000000000000304431347522026400162020ustar00rootroot00000000000000/* * Copyright (c) 2013 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #if !defined(KORE_NO_HTTP) #ifndef __H_HTTP_H #define __H_HTTP_H #include #include #include #if defined(__cplusplus) extern "C" { #endif /* Keep the http_populate_get symbol around. */ #define http_populate_get http_populate_qs #define HTTP_KEEPALIVE_TIME 20 #define HTTP_HSTS_ENABLE 31536000 #define HTTP_HEADER_MAX_LEN 4096 #define HTTP_BODY_MAX_LEN 1024000 #define HTTP_URI_LEN 2000 #define HTTP_USERAGENT_LEN 256 #define HTTP_REFERER_LEN 256 #define HTTP_REQ_HEADER_MAX 25 #define HTTP_MAX_QUERY_ARGS 20 #define HTTP_MAX_COOKIES 10 #define HTTP_MAX_COOKIENAME 255 #define HTTP_HEADER_BUFSIZE 1024 #define HTTP_COOKIE_BUFSIZE 1024 #define HTTP_DATE_MAXSIZE 255 #define HTTP_REQUEST_LIMIT 1000 #define HTTP_REQUEST_MS 10 #define HTTP_BODY_DISK_PATH "tmp_files" #define HTTP_BODY_DISK_OFFLOAD 0 #define HTTP_BODY_PATH_MAX 256 #define HTTP_BOUNDARY_MAX 80 #define HTTP_HEADER_TIMEOUT 10 #define HTTP_BODY_TIMEOUT 60 #define HTTP_ARG_TYPE_RAW 0 #define HTTP_ARG_TYPE_BYTE 1 #define HTTP_ARG_TYPE_INT16 2 #define HTTP_ARG_TYPE_UINT16 3 #define HTTP_ARG_TYPE_INT32 4 #define HTTP_ARG_TYPE_UINT32 5 #define HTTP_ARG_TYPE_STRING 6 #define HTTP_ARG_TYPE_INT64 7 #define HTTP_ARG_TYPE_UINT64 8 #define HTTP_ARG_TYPE_FLOAT 9 #define HTTP_ARG_TYPE_DOUBLE 10 #define HTTP_STATE_ERROR 0 #define HTTP_STATE_CONTINUE 1 #define HTTP_STATE_COMPLETE 2 #define HTTP_STATE_RETRY 3 struct http_runlock_queue { struct http_request *req; LIST_ENTRY(http_runlock_queue) list; }; struct http_runlock { struct http_request *owner; LIST_HEAD(, http_runlock_queue) queue; }; struct http_header { char *header; char *value; TAILQ_ENTRY(http_header) list; }; #define HTTP_COOKIE_HTTPONLY 0x0001 #define HTTP_COOKIE_SECURE 0x0002 struct http_cookie { char *name; char *value; char *path; char *domain; u_int32_t maxage; time_t expires; u_int16_t flags; TAILQ_ENTRY(http_cookie) list; }; struct http_arg { char *name; char *s_value; TAILQ_ENTRY(http_arg) list; }; #define COPY_ARG_TYPE(v, t) \ do { \ *(t *)nout = v; \ } while (0) #define COPY_ARG_INT64(type, sign) \ do { \ int err; \ type nval; \ nval = (type)kore_strtonum64(q->s_value, sign, &err); \ if (err != KORE_RESULT_OK) \ return (KORE_RESULT_ERROR); \ COPY_ARG_TYPE(nval, type); \ } while (0) #define COPY_ARG_DOUBLE(min, max, type) \ do { \ int err; \ type nval; \ nval = kore_strtodouble(q->s_value, min, max, &err); \ if (err != KORE_RESULT_OK) \ return (KORE_RESULT_ERROR); \ COPY_ARG_TYPE(nval, type); \ } while (0) #define COPY_ARG_INT(min, max, type) \ do { \ int err; \ int64_t nval; \ nval = kore_strtonum(q->s_value, 10, min, max, &err); \ if (err != KORE_RESULT_OK) \ return (KORE_RESULT_ERROR); \ COPY_ARG_TYPE(nval, type); \ } while (0) #define COPY_AS_INTTYPE_64(type, sign) \ do { \ if (nout == NULL) \ return (KORE_RESULT_ERROR); \ COPY_ARG_INT64(type, sign); \ } while (0) #define COPY_AS_INTTYPE(min, max, type) \ do { \ if (nout == NULL) \ return (KORE_RESULT_ERROR); \ COPY_ARG_INT(min, max, type); \ } while (0) #define http_argument_type(r, n, so, no, t) \ http_argument_get(r, n, so, no, t) #define http_argument_get_string(r, n, o) \ http_argument_type(r, n, (void **)o, NULL, HTTP_ARG_TYPE_STRING) #define http_argument_get_byte(r, n, o) \ http_argument_type(r, n, NULL, o, HTTP_ARG_TYPE_BYTE) #define http_argument_get_uint16(r, n, o) \ http_argument_type(r, n, NULL, o, HTTP_ARG_TYPE_UINT16) #define http_argument_get_int16(r, n, o) \ http_argument_type(r, n, NULL, o, HTTP_ARG_TYPE_INT16) #define http_argument_get_uint32(r, n, o) \ http_argument_type(r, n, NULL, o, HTTP_ARG_TYPE_UINT32) #define http_argument_get_int32(r, n, o) \ http_argument_type(r, n, NULL, o, HTTP_ARG_TYPE_INT32) #define http_argument_get_uint64(r, n, o) \ http_argument_type(r, n, NULL, o, HTTP_ARG_TYPE_UINT64) #define http_argument_get_int64(r, n, o) \ http_argument_type(r, n, NULL, o, HTTP_ARG_TYPE_INT64) #define http_argument_get_float(r, n, o) \ http_argument_type(r, n, NULL, o, HTTP_ARG_TYPE_FLOAT) #define http_argument_get_double(r, n, o) \ http_argument_type(r, n, NULL, o, HTTP_ARG_TYPE_DOUBLE) struct http_file { char *name; char *filename; size_t position; size_t offset; size_t length; struct http_request *req; TAILQ_ENTRY(http_file) list; }; #define HTTP_METHOD_GET 0x0001 #define HTTP_METHOD_POST 0x0002 #define HTTP_METHOD_PUT 0x0004 #define HTTP_METHOD_DELETE 0x0010 #define HTTP_METHOD_HEAD 0x0020 #define HTTP_METHOD_OPTIONS 0x0040 #define HTTP_METHOD_PATCH 0x0080 #define HTTP_METHOD_ALL (HTTP_METHOD_GET | HTTP_METHOD_POST | \ HTTP_METHOD_PUT | HTTP_METHOD_DELETE | HTTP_METHOD_HEAD | \ HTTP_METHOD_OPTIONS | HTTP_METHOD_PATCH) #define HTTP_REQUEST_COMPLETE 0x0001 #define HTTP_REQUEST_DELETE 0x0002 #define HTTP_REQUEST_SLEEPING 0x0004 #define HTTP_REQUEST_EXPECT_BODY 0x0020 #define HTTP_REQUEST_RETAIN_EXTRA 0x0040 #define HTTP_REQUEST_NO_CONTENT_LENGTH 0x0080 #define HTTP_REQUEST_AUTHED 0x0100 #define HTTP_VERSION_1_1 0x1000 #define HTTP_VERSION_1_0 0x2000 #define HTTP_VALIDATOR_IS_REQUEST 0x8000 #define HTTP_BODY_DIGEST_LEN 32 #define HTTP_BODY_DIGEST_STRLEN ((HTTP_BODY_DIGEST_LEN * 2) + 1) struct kore_task; struct http_client; struct http_request { u_int8_t method; u_int8_t fsm_state; u_int16_t flags; u_int16_t status; u_int64_t ms; u_int64_t start; u_int64_t end; u_int64_t total; const char *path; const char *host; const char *agent; const char *referer; struct connection *owner; SHA256_CTX hashctx; u_int8_t *headers; struct kore_buf *http_body; int http_body_fd; char *http_body_path; size_t http_body_length; size_t http_body_offset; size_t content_length; void *hdlr_extra; size_t state_len; char *query_string; struct kore_module_handle *hdlr; struct http_runlock_queue *runlock; void (*onfree)(struct http_request *); #if defined(KORE_USE_PYTHON) void *py_coro; #endif u_int8_t http_body_digest[HTTP_BODY_DIGEST_LEN]; #if defined(KORE_USE_CURL) LIST_HEAD(, kore_curl) chandles; #endif #if defined(KORE_USE_TASKS) LIST_HEAD(, kore_task) tasks; #endif #if defined(KORE_USE_PGSQL) LIST_HEAD(, kore_pgsql) pgsqls; #endif TAILQ_HEAD(, http_cookie) req_cookies; TAILQ_HEAD(, http_cookie) resp_cookies; TAILQ_HEAD(, http_header) req_headers; TAILQ_HEAD(, http_header) resp_headers; TAILQ_HEAD(, http_arg) arguments; TAILQ_HEAD(, http_file) files; TAILQ_ENTRY(http_request) list; TAILQ_ENTRY(http_request) olist; }; #define KORE_HTTP_STATE(f) { #f, f } struct http_state { const char *name; int (*cb)(struct http_request *); }; struct http_media_type { char *ext; char *type; LIST_ENTRY(http_media_type) list; }; extern size_t http_body_max; extern u_int16_t http_body_timeout; extern u_int16_t http_header_max; extern u_int16_t http_header_timeout; extern u_int32_t http_request_ms; extern u_int64_t http_hsts_enable; extern u_int16_t http_keepalive_time; extern u_int32_t http_request_limit; extern u_int32_t http_request_count; extern u_int64_t http_body_disk_offload; extern char *http_body_disk_path; extern struct kore_pool http_header_pool; void kore_accesslog(struct http_request *); void http_init(void); void http_parent_init(void); void http_cleanup(void); void http_server_version(const char *); void http_process(void); const char *http_status_text(int); const char *http_method_text(int); time_t http_date_to_time(char *); char *http_validate_header(char *); void http_start_recv(struct connection *); void http_request_free(struct http_request *); void http_request_sleep(struct http_request *); void http_request_wakeup(struct http_request *); void http_process_request(struct http_request *); int http_body_rewind(struct http_request *); int http_media_register(const char *, const char *); int http_check_timeout(struct connection *, u_int64_t); ssize_t http_body_read(struct http_request *, void *, size_t); int http_body_digest(struct http_request *, char *, size_t); void http_response(struct http_request *, int, const void *, size_t); void http_response_fileref(struct http_request *, int, struct kore_fileref *); void http_serveable(struct http_request *, const void *, size_t, const char *, const char *); void http_response_stream(struct http_request *, int, void *, size_t, int (*cb)(struct netbuf *), void *); int http_request_header(struct http_request *, const char *, const char **); void http_response_header(struct http_request *, const char *, const char *); int http_state_run(struct http_state *, u_int8_t, struct http_request *); int http_request_cookie(struct http_request *, const char *, char **); void http_response_cookie(struct http_request *, const char *, const char *, const char *, time_t, u_int32_t, struct http_cookie **); void http_runlock_init(struct http_runlock *); void http_runlock_release(struct http_runlock *, struct http_request *); int http_runlock_acquire(struct http_runlock *, struct http_request *); const char *http_media_type(const char *); void *http_state_get(struct http_request *); int http_state_exists(struct http_request *); void http_state_cleanup(struct http_request *); void *http_state_create(struct http_request *, size_t, void (*onfree)(struct http_request *)); int http_argument_urldecode(char *); int http_header_recv(struct netbuf *); void http_populate_qs(struct http_request *); void http_populate_post(struct http_request *); void http_populate_multipart_form(struct http_request *); void http_populate_cookies(struct http_request *); int http_argument_get(struct http_request *, const char *, void **, void *, int); void http_file_rewind(struct http_file *); ssize_t http_file_read(struct http_file *, void *, size_t); struct http_file *http_file_lookup(struct http_request *, const char *); enum http_status_code { HTTP_STATUS_CONTINUE = 100, HTTP_STATUS_SWITCHING_PROTOCOLS = 101, HTTP_STATUS_OK = 200, HTTP_STATUS_CREATED = 201, HTTP_STATUS_ACCEPTED = 202, HTTP_STATUS_NON_AUTHORITATIVE = 203, HTTP_STATUS_NO_CONTENT = 204, HTTP_STATUS_RESET_CONTENT = 205, HTTP_STATUS_PARTIAL_CONTENT = 206, HTTP_STATUS_MULTIPLE_CHOICES = 300, HTTP_STATUS_MOVED_PERMANENTLY = 301, HTTP_STATUS_FOUND = 302, HTTP_STATUS_SEE_OTHER = 303, HTTP_STATUS_NOT_MODIFIED = 304, HTTP_STATUS_USE_PROXY = 305, HTTP_STATUS_TEMPORARY_REDIRECT = 307, HTTP_STATUS_BAD_REQUEST = 400, HTTP_STATUS_UNAUTHORIZED = 401, HTTP_STATUS_PAYMENT_REQUIRED = 402, HTTP_STATUS_FORBIDDEN = 403, HTTP_STATUS_NOT_FOUND = 404, HTTP_STATUS_METHOD_NOT_ALLOWED = 405, HTTP_STATUS_NOT_ACCEPTABLE = 406, HTTP_STATUS_PROXY_AUTH_REQUIRED = 407, HTTP_STATUS_REQUEST_TIMEOUT = 408, HTTP_STATUS_CONFLICT = 409, HTTP_STATUS_GONE = 410, HTTP_STATUS_LENGTH_REQUIRED = 411, HTTP_STATUS_PRECONDITION_FAILED = 412, HTTP_STATUS_REQUEST_ENTITY_TOO_LARGE = 413, HTTP_STATUS_REQUEST_URI_TOO_LARGE = 414, HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE = 415, HTTP_STATUS_REQUEST_RANGE_INVALID = 416, HTTP_STATUS_EXPECTATION_FAILED = 417, HTTP_STATUS_INTERNAL_ERROR = 500, HTTP_STATUS_NOT_IMPLEMENTED = 501, HTTP_STATUS_BAD_GATEWAY = 502, HTTP_STATUS_SERVICE_UNAVAILABLE = 503, HTTP_STATUS_GATEWAY_TIMEOUT = 504, HTTP_STATUS_BAD_VERSION = 505 }; #if defined(__cplusplus) } #endif #endif /* !__H_HTTP_H */ #endif /* ! KORE_NO_HTTP */ kore-3.3.1/include/kore/jsonrpc.h000066400000000000000000000051751347522026400167050ustar00rootroot00000000000000/* * Copyright (c) 2016 Raphaël Monrouzeau * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #if !defined(KORE_NO_HTTP) #ifndef __H_JSONRPC_H #define __H_JSONRPC_H #if defined(__cplusplus) extern "C" { #endif /* JSON RPC request handling log entry. */ struct jsonrpc_log { char *msg; struct jsonrpc_log *next, *prev; int lvl; }; /* JSON RPC request. */ struct jsonrpc_request { struct jsonrpc_log log; struct kore_buf buf; struct http_request *http; yajl_gen gen; yajl_val json; yajl_val id; char *method; yajl_val params; unsigned int flags; int log_levels; }; #define YAJL_GEN_CONST_STRING(CTX, STR) \ yajl_gen_string((CTX), (unsigned char *)(STR), sizeof (STR) - 1) #define YAJL_GEN_CONST_NUMBER(CTX, STR) \ yajl_gen_number((CTX), (unsigned char *)(STR), sizeof (STR) - 1) #define YAJL_GEN_KO(OPERATION) \ ((OPERATION) != yajl_gen_status_ok) enum jsonrpc_error_code { #define JSONRPC_PARSE_ERROR_MSG "Parse error" JSONRPC_PARSE_ERROR = -32700, #define JSONRPC_INVALID_REQUEST_MSG "Invalid Request" JSONRPC_INVALID_REQUEST = -32600, #define JSONRPC_METHOD_NOT_FOUND_MSG "Method not found" JSONRPC_METHOD_NOT_FOUND = -32601, #define JSONRPC_INVALID_PARAMS_MSG "Invalid params" JSONRPC_INVALID_PARAMS = -32602, #define JSONRPC_INTERNAL_ERROR_MSG "Internal error" JSONRPC_INTERNAL_ERROR = -32603, #define JSONRPC_SERVER_ERROR_MSG "Server error" JSONRPC_SERVER_ERROR = -32000, #define JSONRPC_LIMIT_REACHED_MSG "Limit reached" JSONRPC_LIMIT_REACHED = -31997 }; void jsonrpc_log(struct jsonrpc_request *, int, const char *, ...); int jsonrpc_read_request(struct http_request *, struct jsonrpc_request *); void jsonrpc_destroy_request(struct jsonrpc_request *); int jsonrpc_error(struct jsonrpc_request *, int, const char *); int jsonrpc_result(struct jsonrpc_request *, int (*)(struct jsonrpc_request *, void *), void *); #if defined(__cplusplus) } #endif #endif /* !__H_JSONRPC_H */ #endif /* ! KORE_NO_HTTP */ kore-3.3.1/include/kore/kore.h000066400000000000000000000570231347522026400161660ustar00rootroot00000000000000/* * Copyright (c) 2013-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #ifndef __H_KORE_H #define __H_KORE_H #if defined(__APPLE__) #define daemon portability_is_king #endif #include #include #include #include #include #include #include #if !defined(KORE_NO_TLS) #include #include #include #endif #include #include #include #include #include #include #include #include #include #include #if defined(__cplusplus) extern "C" { #endif #if defined(__APPLE__) #undef daemon extern int daemon(int, int); #define st_mtim st_mtimespec #endif #if !defined(KORE_NO_SENDFILE) && defined(KORE_NO_TLS) #if defined(__MACH__) || defined(__FreeBSD_version) || defined(__linux__) #define KORE_USE_PLATFORM_SENDFILE 1 #endif #endif #if defined(__OpenBSD__) #define KORE_USE_PLATFORM_PLEDGE 1 #endif #define KORE_RESULT_ERROR 0 #define KORE_RESULT_OK 1 #define KORE_RESULT_RETRY 2 #define KORE_TLS_VERSION_1_3 0 #define KORE_TLS_VERSION_1_2 1 #define KORE_TLS_VERSION_BOTH 2 #define KORE_WAIT_INFINITE (u_int64_t)-1 #define KORE_RESEED_TIME (1800 * 1000) #define errno_s strerror(errno) #define ssl_errno_s ERR_error_string(ERR_get_error(), NULL) #define KORE_DOMAINNAME_LEN 255 #define KORE_PIDFILE_DEFAULT "kore.pid" #define KORE_DEFAULT_CIPHER_LIST "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!kRSA:!kDSA" #if defined(KORE_DEBUG) #define kore_debug(...) \ if (kore_debug) \ kore_debug_internal(__FILE__, __LINE__, __VA_ARGS__) #else #define kore_debug(...) #endif #define NETBUF_RECV 0 #define NETBUF_SEND 1 #define NETBUF_SEND_PAYLOAD_MAX 8192 #define SENDFILE_PAYLOAD_MAX (1024 * 1024 * 10) #define NETBUF_LAST_CHAIN 0 #define NETBUF_BEFORE_CHAIN 1 #define NETBUF_CALL_CB_ALWAYS 0x01 #define NETBUF_FORCE_REMOVE 0x02 #define NETBUF_MUST_RESEND 0x04 #define NETBUF_IS_STREAM 0x10 #define NETBUF_IS_FILEREF 0x20 #define X509_GET_CN(c, o, l) \ X509_NAME_get_text_by_NID(X509_get_subject_name(c), \ NID_commonName, o, l) #define X509_CN_LENGTH (ub_common_name + 1) /* XXX hackish. */ #if !defined(KORE_NO_HTTP) struct http_request; #endif #define KORE_FILEREF_SOFT_REMOVED 0x1000 struct kore_fileref { int cnt; int flags; off_t size; char *path; u_int64_t mtime; time_t mtime_sec; u_int64_t expiration; #if !defined(KORE_USE_PLATFORM_SENDFILE) void *base; #else int fd; #endif TAILQ_ENTRY(kore_fileref) list; }; struct netbuf { u_int8_t *buf; size_t s_off; size_t b_len; size_t m_len; u_int8_t type; u_int8_t flags; struct kore_fileref *file_ref; #if defined(KORE_USE_PLATFORM_SENDFILE) off_t fd_off; off_t fd_len; #endif void *owner; void *extra; int (*cb)(struct netbuf *); TAILQ_ENTRY(netbuf) list; }; TAILQ_HEAD(netbuf_head, netbuf); #define KORE_TYPE_LISTENER 1 #define KORE_TYPE_CONNECTION 2 #define KORE_TYPE_PGSQL_CONN 3 #define KORE_TYPE_TASK 4 #define KORE_TYPE_PYSOCKET 5 #define KORE_TYPE_CURL_HANDLE 6 #define CONN_STATE_UNKNOWN 0 #define CONN_STATE_TLS_SHAKE 1 #define CONN_STATE_ESTABLISHED 2 #define CONN_STATE_DISCONNECTING 3 #define CONN_PROTO_UNKNOWN 0 #define CONN_PROTO_HTTP 1 #define CONN_PROTO_WEBSOCKET 2 #define CONN_PROTO_MSG 3 #define KORE_EVENT_READ 0x01 #define KORE_EVENT_WRITE 0x02 #define KORE_EVENT_ERROR 0x04 #define CONN_IDLE_TIMER_ACT 0x01 #define CONN_CLOSE_EMPTY 0x02 #define CONN_WS_CLOSE_SENT 0x04 #define CONN_IS_BUSY 0x08 #define KORE_IDLE_TIMER_MAX 5000 #define WEBSOCKET_OP_CONT 0x00 #define WEBSOCKET_OP_TEXT 0x01 #define WEBSOCKET_OP_BINARY 0x02 #define WEBSOCKET_OP_CLOSE 0x08 #define WEBSOCKET_OP_PING 0x09 #define WEBSOCKET_OP_PONG 0x0a #define WEBSOCKET_BROADCAST_LOCAL 1 #define WEBSOCKET_BROADCAST_GLOBAL 2 #define KORE_TIMER_ONESHOT 0x01 #define KORE_TIMER_FLAGS (KORE_TIMER_ONESHOT) #define KORE_CONNECTION_PRUNE_DISCONNECT 0 #define KORE_CONNECTION_PRUNE_ALL 1 struct kore_event { int type; int flags; void (*handle)(void *, int); } __attribute__((packed)); struct connection { struct kore_event evt; int fd; u_int8_t state; u_int8_t proto; void *owner; #if !defined(KORE_NO_TLS) X509 *cert; SSL *ssl; int tls_reneg; #endif u_int8_t flags; void *hdlr_extra; int (*handle)(struct connection *); void (*disconnect)(struct connection *); int (*read)(struct connection *, size_t *); int (*write)(struct connection *, size_t, size_t *); int family; union { struct sockaddr_in ipv4; struct sockaddr_in6 ipv6; struct sockaddr_un sun; } addr; struct { u_int64_t length; u_int64_t start; } idle_timer; struct netbuf_head send_queue; struct netbuf *snb; struct netbuf *rnb; #if !defined(KORE_NO_HTTP) u_int64_t http_start; u_int64_t http_timeout; struct kore_runtime_call *ws_connect; struct kore_runtime_call *ws_message; struct kore_runtime_call *ws_disconnect; TAILQ_HEAD(, http_request) http_requests; #endif TAILQ_ENTRY(connection) list; }; TAILQ_HEAD(connection_list, connection); extern struct connection_list connections; extern struct connection_list disconnected; #define KORE_RUNTIME_NATIVE 0 #define KORE_RUNTIME_PYTHON 1 struct kore_runtime { int type; #if !defined(KORE_NO_HTTP) int (*http_request)(void *, struct http_request *); int (*validator)(void *, struct http_request *, const void *); void (*wsconnect)(void *, struct connection *); void (*wsdisconnect)(void *, struct connection *); void (*wsmessage)(void *, struct connection *, u_int8_t, const void *, size_t); #endif void (*execute)(void *); int (*onload)(void *, int); void (*connect)(void *, struct connection *); void (*configure)(void *, int, char **); }; struct kore_runtime_call { void *addr; struct kore_runtime *runtime; }; extern struct kore_runtime kore_native_runtime; struct listener { struct kore_event evt; int fd; int family; struct kore_runtime_call *connect; LIST_ENTRY(listener) list; }; LIST_HEAD(listener_head, listener); #if !defined(KORE_NO_HTTP) #define KORE_PARAMS_QUERY_STRING 0x0001 struct kore_handler_params { char *name; int flags; u_int8_t method; struct kore_validator *validator; TAILQ_ENTRY(kore_handler_params) list; }; #define KORE_AUTH_TYPE_COOKIE 1 #define KORE_AUTH_TYPE_HEADER 2 #define KORE_AUTH_TYPE_REQUEST 3 struct kore_auth { u_int8_t type; char *name; char *value; char *redirect; struct kore_validator *validator; TAILQ_ENTRY(kore_auth) list; }; #define HANDLER_TYPE_STATIC 1 #define HANDLER_TYPE_DYNAMIC 2 #endif /* !KORE_NO_HTTP */ #define KORE_MODULE_LOAD 1 #define KORE_MODULE_UNLOAD 2 #define KORE_MODULE_NATIVE 0 #define KORE_MODULE_PYTHON 1 struct kore_module; struct kore_module_functions { void (*free)(struct kore_module *); void (*reload)(struct kore_module *); int (*callback)(struct kore_module *, int); void (*load)(struct kore_module *); void *(*getsym)(struct kore_module *, const char *); }; struct kore_module { void *handle; char *path; char *onload; int type; time_t mtime; struct kore_runtime_call *ocb; struct kore_module_functions *fun; struct kore_runtime *runtime; TAILQ_ENTRY(kore_module) list; }; #if !defined(KORE_NO_HTTP) struct kore_module_handle { char *path; char *func; int type; int errors; regex_t rctx; struct kore_domain *dom; struct kore_runtime_call *rcall; struct kore_auth *auth; int methods; TAILQ_HEAD(, kore_handler_params) params; TAILQ_ENTRY(kore_module_handle) list; }; #endif /* * The workers get a 128KB log buffer per worker, and parent will fetch their * logs when it reached at least 75% of that or if its been > 1 second since * it was last synced. */ #define KORE_ACCESSLOG_BUFLEN 131072U #define KORE_ACCESSLOG_SYNC 98304U struct kore_alog_header { u_int16_t domain; u_int16_t loglen; } __attribute__((packed)); struct kore_worker { u_int8_t id; u_int8_t cpu; pid_t pid; int pipe[2]; struct connection *msg[2]; u_int8_t has_lock; int restarted; u_int64_t time_locked; struct kore_module_handle *active_hdlr; /* Used by the workers to store accesslogs. */ struct { int lock; size_t offset; char buf[KORE_ACCESSLOG_BUFLEN]; } lb; }; struct kore_domain { u_int16_t id; char *domain; int accesslog; struct kore_buf *logbuf; int logerr; u_int64_t logwarn; #if !defined(KORE_NO_TLS) char *cafile; char *crlfile; char *certfile; char *certkey; SSL_CTX *ssl_ctx; int x509_verify_depth; #endif #if !defined(KORE_NO_HTTP) TAILQ_HEAD(, kore_module_handle) handlers; #endif TAILQ_ENTRY(kore_domain) list; }; TAILQ_HEAD(kore_domain_h, kore_domain); #if !defined(KORE_NO_HTTP) #define KORE_VALIDATOR_TYPE_REGEX 1 #define KORE_VALIDATOR_TYPE_FUNCTION 2 struct kore_validator { u_int8_t type; char *name; char *arg; regex_t rctx; struct kore_runtime_call *rcall; TAILQ_ENTRY(kore_validator) list; }; #endif /* !KORE_NO_HTTP */ #define KORE_BUF_OWNER_API 0x0001 struct kore_buf { u_int8_t *data; int flags; size_t length; size_t offset; }; struct kore_pool_region { void *start; size_t length; LIST_ENTRY(kore_pool_region) list; }; struct kore_pool_entry { u_int8_t state; struct kore_pool_region *region; LIST_ENTRY(kore_pool_entry) list; }; struct kore_pool { size_t elen; size_t slen; size_t elms; size_t inuse; size_t growth; volatile int lock; char *name; LIST_HEAD(, kore_pool_region) regions; LIST_HEAD(, kore_pool_entry) freelist; }; struct kore_timer { u_int64_t nextrun; u_int64_t interval; int flags; void *arg; void (*cb)(void *, u_int64_t); TAILQ_ENTRY(kore_timer) list; }; #define KORE_WORKER_KEYMGR 0 #define KORE_WORKER_POLICY_RESTART 1 #define KORE_WORKER_POLICY_TERMINATE 2 /* Reserved message ids, registered on workers. */ #define KORE_MSG_WEBSOCKET 1 #define KORE_MSG_KEYMGR_REQ 2 #define KORE_MSG_KEYMGR_RESP 3 #define KORE_MSG_SHUTDOWN 4 #define KORE_MSG_ENTROPY_REQ 5 #define KORE_MSG_ENTROPY_RESP 6 #define KORE_MSG_CERTIFICATE 7 #define KORE_MSG_CERTIFICATE_REQ 8 #define KORE_MSG_CRL 9 #define KORE_MSG_ACCEPT_AVAILABLE 10 /* Predefined message targets. */ #define KORE_MSG_PARENT 1000 #define KORE_MSG_WORKER_ALL 1001 struct kore_msg { u_int8_t id; u_int16_t src; u_int16_t dst; size_t length; }; #if !defined(KORE_NO_TLS) struct kore_keyreq { int padding; char domain[KORE_DOMAINNAME_LEN]; u_int16_t domain_len; u_int16_t data_len; u_int8_t data[]; }; struct kore_x509_msg { char domain[KORE_DOMAINNAME_LEN]; u_int16_t domain_len; size_t data_len; u_int8_t data[]; }; #endif #if !defined(KORE_SINGLE_BINARY) extern char *config_file; #endif extern pid_t kore_pid; extern int foreground; extern int kore_quiet; extern int kore_debug; extern int skip_chroot; extern int skip_runas; extern char *kore_pidfile; extern char *kore_root_path; extern char *kore_runas_user; extern char *kore_tls_cipher_list; extern volatile sig_atomic_t sig_recv; #if !defined(KORE_NO_TLS) extern int tls_version; extern DH *tls_dhparam; extern char *rand_file; extern char *keymgr_runas_user; extern char *keymgr_root_path; #endif extern u_int8_t nlisteners; extern u_int16_t cpu_count; extern u_int8_t worker_count; extern const char *kore_version; extern int worker_policy; extern u_int8_t worker_set_affinity; extern u_int32_t worker_rlimit_nofiles; extern u_int32_t worker_max_connections; extern u_int32_t worker_active_connections; extern u_int32_t worker_accept_threshold; extern u_int64_t kore_websocket_maxframe; extern u_int64_t kore_websocket_timeout; extern u_int32_t kore_socket_backlog; extern struct listener_head listeners; extern struct kore_worker *worker; extern struct kore_domain_h domains; extern struct kore_domain *primary_dom; extern struct kore_pool nb_pool; void kore_signal(int); void kore_shutdown(void); void kore_signal_setup(void); void kore_proctitle(const char *); void kore_worker_reap(void); void kore_worker_init(void); void kore_worker_make_busy(void); void kore_worker_shutdown(void); void kore_worker_dispatch_signal(int); void kore_worker_spawn(u_int16_t, u_int16_t); void kore_worker_entry(struct kore_worker *); void kore_worker_privdrop(const char *, const char *); struct kore_worker *kore_worker_data(u_int8_t); void kore_platform_init(void); void kore_platform_event_init(void); void kore_platform_event_cleanup(void); void kore_platform_proctitle(char *); void kore_platform_disable_read(int); void kore_platform_disable_write(int); void kore_platform_enable_accept(void); void kore_platform_disable_accept(void); void kore_platform_event_wait(u_int64_t); void kore_platform_event_all(int, void *); void kore_platform_schedule_read(int, void *); void kore_platform_schedule_write(int, void *); void kore_platform_event_schedule(int, int, int, void *); void kore_platform_worker_setcpu(struct kore_worker *); #if defined(KORE_USE_PLATFORM_SENDFILE) int kore_platform_sendfile(struct connection *, struct netbuf *); #endif #if defined(KORE_USE_PLATFORM_PLEDGE) void kore_platform_pledge(void); void kore_platform_add_pledge(const char *); #endif void kore_accesslog_init(u_int16_t); void kore_accesslog_worker_init(void); void kore_accesslog_run(void *, u_int64_t); void kore_accesslog_gather(void *, u_int64_t, int); #if !defined(KORE_NO_HTTP) int kore_auth_run(struct http_request *, struct kore_auth *); int kore_auth_cookie(struct http_request *, struct kore_auth *); int kore_auth_header(struct http_request *, struct kore_auth *); int kore_auth_request(struct http_request *, struct kore_auth *); void kore_auth_init(void); int kore_auth_new(const char *); struct kore_auth *kore_auth_lookup(const char *); #endif void kore_timer_init(void); void kore_timer_run(u_int64_t); u_int64_t kore_timer_next_run(u_int64_t); void kore_timer_remove(struct kore_timer *); struct kore_timer *kore_timer_add(void (*cb)(void *, u_int64_t), u_int64_t, void *, int); void kore_listener_cleanup(void); void kore_listener_accept(void *, int); void kore_listener_free(struct listener *); struct listener *kore_listener_alloc(int, const char *); int kore_sockopt(int, int, int); int kore_server_bind_unix(const char *, const char *); int kore_server_bind(const char *, const char *, const char *); #if !defined(KORE_NO_TLS) int kore_tls_sni_cb(SSL *, int *, void *); void kore_tls_info_callback(const SSL *, int, int); #endif void kore_connection_init(void); void kore_connection_cleanup(void); void kore_connection_prune(int); struct connection *kore_connection_new(void *); void kore_connection_event(void *, int); int kore_connection_nonblock(int, int); void kore_connection_check_timeout(u_int64_t); int kore_connection_handle(struct connection *); void kore_connection_remove(struct connection *); void kore_connection_disconnect(struct connection *); void kore_connection_start_idletimer(struct connection *); void kore_connection_stop_idletimer(struct connection *); void kore_connection_check_idletimer(u_int64_t, struct connection *); int kore_connection_accept(struct listener *, struct connection **); u_int64_t kore_time_ms(void); void kore_log_init(void); void *kore_malloc(size_t); void kore_parse_config(void); void kore_parse_config_file(FILE *); void *kore_calloc(size_t, size_t); void *kore_realloc(void *, size_t); void kore_free(void *); void kore_mem_init(void); void kore_mem_cleanup(void); void kore_mem_untag(void *); void *kore_mem_lookup(u_int32_t); void kore_mem_tag(void *, u_int32_t); void *kore_malloc_tagged(size_t, u_int32_t); void *kore_pool_get(struct kore_pool *); void kore_pool_put(struct kore_pool *, void *); void kore_pool_init(struct kore_pool *, const char *, size_t, size_t); void kore_pool_cleanup(struct kore_pool *); char *kore_time_to_date(time_t); char *kore_strdup(const char *); time_t kore_date_to_time(const char *); void kore_log(int, const char *, ...) __attribute__((format (printf, 2, 3))); u_int64_t kore_strtonum64(const char *, int, int *); size_t kore_strlcpy(char *, const char *, const size_t); void kore_server_disconnect(struct connection *); int kore_split_string(char *, const char *, char **, size_t); void kore_strip_chars(char *, const char, char **); int kore_snprintf(char *, size_t, int *, const char *, ...); long long kore_strtonum(const char *, int, long long, long long, int *); double kore_strtodouble(const char *, long double, long double, int *); int kore_base64_encode(const void *, size_t, char **); int kore_base64_decode(const char *, u_int8_t **, size_t *); void *kore_mem_find(void *, size_t, const void *, size_t); char *kore_text_trim(char *, size_t); char *kore_read_line(FILE *, char *, size_t); #if !defined(KORE_NO_HTTP) void kore_websocket_handshake(struct http_request *, const char *, const char *, const char *); int kore_websocket_send_clean(struct netbuf *); void kore_websocket_send(struct connection *, u_int8_t, const void *, size_t); void kore_websocket_broadcast(struct connection *, u_int8_t, const void *, size_t, int); #endif void kore_msg_init(void); void kore_msg_worker_init(void); void kore_msg_parent_init(void); void kore_msg_parent_add(struct kore_worker *); void kore_msg_parent_remove(struct kore_worker *); void kore_msg_send(u_int16_t, u_int8_t, const void *, size_t); int kore_msg_register(u_int8_t, void (*cb)(struct kore_msg *, const void *)); #if !defined(KORE_NO_HTTP) void kore_filemap_init(void); void kore_filemap_resolve_paths(void); int kore_filemap_create(struct kore_domain *, const char *, const char *); extern char *kore_filemap_ext; extern char *kore_filemap_index; #endif void kore_fileref_init(void); struct kore_fileref *kore_fileref_get(const char *); struct kore_fileref *kore_fileref_create(const char *, int, off_t, struct timespec *); void kore_fileref_release(struct kore_fileref *); void kore_domain_init(void); void kore_domain_cleanup(void); int kore_domain_new(char *); void kore_domain_free(struct kore_domain *); void kore_module_init(void); void kore_module_cleanup(void); void kore_module_reload(int); void kore_module_onload(void); int kore_module_loaded(void); void kore_domain_closelogs(void); void *kore_module_getsym(const char *, struct kore_runtime **); void kore_domain_load_crl(void); void kore_domain_keymgr_init(void); void kore_domain_callback(void (*cb)(struct kore_domain *)); void kore_domain_tlsinit(struct kore_domain *, const void *, size_t); void kore_domain_crl_add(struct kore_domain *, const void *, size_t); #if !defined(KORE_NO_HTTP) int kore_module_handler_new(const char *, const char *, const char *, const char *, int); void kore_module_handler_free(struct kore_module_handle *); struct kore_module_handle *kore_module_handler_find(const char *, const char *); #endif struct kore_runtime_call *kore_runtime_getcall(const char *); struct kore_module *kore_module_load(const char *, const char *, int); void kore_runtime_execute(struct kore_runtime_call *); int kore_runtime_onload(struct kore_runtime_call *, int); void kore_runtime_configure(struct kore_runtime_call *, int, char **); void kore_runtime_connect(struct kore_runtime_call *, struct connection *); #if !defined(KORE_NO_HTTP) int kore_runtime_http_request(struct kore_runtime_call *, struct http_request *); int kore_runtime_validator(struct kore_runtime_call *, struct http_request *, const void *); void kore_runtime_wsconnect(struct kore_runtime_call *, struct connection *); void kore_runtime_wsdisconnect(struct kore_runtime_call *, struct connection *); void kore_runtime_wsmessage(struct kore_runtime_call *, struct connection *, u_int8_t, const void *, size_t); #endif struct kore_domain *kore_domain_byid(u_int16_t); struct kore_domain *kore_domain_lookup(const char *); #if !defined(KORE_NO_HTTP) void kore_validator_init(void); void kore_validator_reload(void); int kore_validator_add(const char *, u_int8_t, const char *); int kore_validator_run(struct http_request *, const char *, char *); int kore_validator_check(struct http_request *, struct kore_validator *, const void *); struct kore_validator *kore_validator_lookup(const char *); #endif void fatal(const char *, ...) __attribute__((noreturn)); void fatalx(const char *, ...) __attribute__((noreturn)); void kore_debug_internal(char *, int, const char *, ...); u_int16_t net_read16(u_int8_t *); u_int32_t net_read32(u_int8_t *); u_int64_t net_read64(u_int8_t *); void net_write16(u_int8_t *, u_int16_t); void net_write32(u_int8_t *, u_int32_t); void net_write64(u_int8_t *, u_int64_t); void net_init(void); void net_cleanup(void); struct netbuf *net_netbuf_get(void); int net_send(struct connection *); int net_send_flush(struct connection *); int net_recv_flush(struct connection *); int net_read(struct connection *, size_t *); int net_read_tls(struct connection *, size_t *); int net_write(struct connection *, size_t, size_t *); int net_write_tls(struct connection *, size_t, size_t *); void net_recv_reset(struct connection *, size_t, int (*cb)(struct netbuf *)); void net_remove_netbuf(struct connection *, struct netbuf *); void net_recv_queue(struct connection *, size_t, int, int (*cb)(struct netbuf *)); void net_recv_expand(struct connection *c, size_t, int (*cb)(struct netbuf *)); void net_send_queue(struct connection *, const void *, size_t); void net_send_stream(struct connection *, void *, size_t, int (*cb)(struct netbuf *), struct netbuf **); void net_send_fileref(struct connection *, struct kore_fileref *); void kore_buf_free(struct kore_buf *); struct kore_buf *kore_buf_alloc(size_t); void kore_buf_init(struct kore_buf *, size_t); void kore_buf_append(struct kore_buf *, const void *, size_t); u_int8_t *kore_buf_release(struct kore_buf *, size_t *); void kore_buf_reset(struct kore_buf *); void kore_buf_cleanup(struct kore_buf *); char *kore_buf_stringify(struct kore_buf *, size_t *); void kore_buf_appendf(struct kore_buf *, const char *, ...); void kore_buf_appendv(struct kore_buf *, const char *, va_list); void kore_buf_replace_string(struct kore_buf *, const char *, const void *, size_t); void kore_keymgr_run(void); void kore_keymgr_cleanup(int); void kore_worker_teardown(void); void kore_parent_teardown(void); void kore_worker_configure(void); void kore_parent_daemonized(void); void kore_parent_configure(int, char **); #if defined(__cplusplus) } #endif #endif /* !__H_KORE_H */ kore-3.3.1/include/kore/pgsql.h000066400000000000000000000065151347522026400163540ustar00rootroot00000000000000/* * Copyright (c) 2014-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #ifndef _H_KORE_PGSQL #define _H_KORE_PGSQL #include #define KORE_PGSQL_FORMAT_TEXT 0 #define KORE_PGSQL_FORMAT_BINARY 1 #define KORE_PGSQL_SYNC 0x0001 #define KORE_PGSQL_ASYNC 0x0002 #define KORE_PGSQL_SCHEDULED 0x0004 #define KORE_PGSQL_PARAM_BINARY(v, l) v, l, 1 #define KORE_PGSQL_PARAM_TEXT_LEN(v, l) v, l, 0 #define KORE_PGSQL_PARAM_TEXT(v) v, strlen(v), 0 #if defined(__cplusplus) extern "C" { #endif struct pgsql_conn { struct kore_event evt; u_int8_t flags; char *name; PGconn *db; struct pgsql_job *job; TAILQ_ENTRY(pgsql_conn) list; }; struct pgsql_db { char *name; char *conn_string; u_int16_t conn_max; u_int16_t conn_count; LIST_ENTRY(pgsql_db) rlist; }; struct kore_pgsql { u_int8_t state; int flags; char *error; PGresult *result; struct pgsql_conn *conn; struct { char *channel; char *extra; } notify; struct http_request *req; void *arg; void (*cb)(struct kore_pgsql *, void *); LIST_ENTRY(kore_pgsql) rlist; }; extern u_int16_t pgsql_conn_max; extern u_int32_t pgsql_queue_limit; void kore_pgsql_sys_init(void); void kore_pgsql_sys_cleanup(void); void kore_pgsql_init(struct kore_pgsql *); void kore_pgsql_bind_request(struct kore_pgsql *, struct http_request *); void kore_pgsql_bind_callback(struct kore_pgsql *, void (*cb)(struct kore_pgsql *, void *), void *); int kore_pgsql_setup(struct kore_pgsql *, const char *, int); void kore_pgsql_handle(void *, int); void kore_pgsql_cleanup(struct kore_pgsql *); void kore_pgsql_continue(struct kore_pgsql *); int kore_pgsql_query(struct kore_pgsql *, const void *); int kore_pgsql_query_params(struct kore_pgsql *, const void *, int, int, ...); int kore_pgsql_v_query_params(struct kore_pgsql *, const void *, int, int, va_list); int kore_pgsql_query_param_fields(struct kore_pgsql *, const void *, int, int, const char **, int *, int *); int kore_pgsql_register(const char *, const char *); int kore_pgsql_ntuples(struct kore_pgsql *); int kore_pgsql_nfields(struct kore_pgsql *); void kore_pgsql_logerror(struct kore_pgsql *); char *kore_pgsql_fieldname(struct kore_pgsql *, int); char *kore_pgsql_getvalue(struct kore_pgsql *, int, int); int kore_pgsql_getlength(struct kore_pgsql *, int, int); int kore_pgsql_column_binary(struct kore_pgsql *, int); #if defined(__cplusplus) } #endif #define KORE_PGSQL_STATE_INIT 1 #define KORE_PGSQL_STATE_WAIT 2 #define KORE_PGSQL_STATE_RESULT 3 #define KORE_PGSQL_STATE_ERROR 4 #define KORE_PGSQL_STATE_DONE 5 #define KORE_PGSQL_STATE_COMPLETE 6 #define KORE_PGSQL_STATE_NOTIFY 7 #endif kore-3.3.1/include/kore/python_api.h000066400000000000000000000026211347522026400173720ustar00rootroot00000000000000/* * Copyright (c) 2016 Stanislav Yudin * Copyright (c) 2017-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #ifndef __H_PYTHON_H #define __H_PYTHON_H #undef _POSIX_C_SOURCE #undef _XOPEN_SOURCE #include void kore_python_init(void); void kore_python_preinit(void); void kore_python_cleanup(void); void kore_python_coro_run(void); void kore_python_proc_reap(void); void kore_python_path(const char *); void kore_python_coro_delete(void *); void kore_python_log_error(const char *); PyObject *kore_python_callable(PyObject *, const char *); extern struct kore_module_functions kore_python_module; extern struct kore_runtime kore_python_runtime; #endif kore-3.3.1/include/kore/python_methods.h000066400000000000000000000566171347522026400203020ustar00rootroot00000000000000/* * Copyright (c) 2017-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #define CORO_STATE_RUNNABLE 1 #define CORO_STATE_SUSPENDED 2 struct python_coro { u_int64_t id; int state; PyObject *obj; PyObject *result; struct pysocket_op *sockop; struct pygather_op *gatherop; struct http_request *request; PyObject *exception; char *exception_msg; TAILQ_ENTRY(python_coro) list; }; TAILQ_HEAD(coro_list, python_coro); static PyObject *python_kore_log(PyObject *, PyObject *); static PyObject *python_kore_time(PyObject *, PyObject *); static PyObject *python_kore_lock(PyObject *, PyObject *); static PyObject *python_kore_proc(PyObject *, PyObject *); static PyObject *python_kore_bind(PyObject *, PyObject *); static PyObject *python_kore_timer(PyObject *, PyObject *); static PyObject *python_kore_fatal(PyObject *, PyObject *); static PyObject *python_kore_queue(PyObject *, PyObject *); static PyObject *python_kore_tracer(PyObject *, PyObject *); static PyObject *python_kore_fatalx(PyObject *, PyObject *); static PyObject *python_kore_suspend(PyObject *, PyObject *); static PyObject *python_kore_shutdown(PyObject *, PyObject *); static PyObject *python_kore_bind_unix(PyObject *, PyObject *); static PyObject *python_kore_task_create(PyObject *, PyObject *); static PyObject *python_kore_socket_wrap(PyObject *, PyObject *); static PyObject *python_kore_gather(PyObject *, PyObject *, PyObject *); #if defined(KORE_USE_PGSQL) static PyObject *python_kore_pgsql_register(PyObject *, PyObject *); #endif #if defined(KORE_USE_CURL) static PyObject *python_kore_httpclient(PyObject *, PyObject *, PyObject *); #endif static PyObject *python_websocket_broadcast(PyObject *, PyObject *); #define METHOD(n, c, a) { n, (PyCFunction)c, a, NULL } #define GETTER(n, g) { n, (getter)g, NULL, NULL, NULL } #define SETTER(n, s) { n, NULL, (setter)g, NULL, NULL } #define GETSET(n, g, s) { n, (getter)g, (setter)s, NULL, NULL } static struct PyMethodDef pykore_methods[] = { METHOD("log", python_kore_log, METH_VARARGS), METHOD("time", python_kore_time, METH_NOARGS), METHOD("lock", python_kore_lock, METH_NOARGS), METHOD("proc", python_kore_proc, METH_VARARGS), METHOD("bind", python_kore_bind, METH_VARARGS), METHOD("timer", python_kore_timer, METH_VARARGS), METHOD("queue", python_kore_queue, METH_VARARGS), METHOD("tracer", python_kore_tracer, METH_VARARGS), METHOD("gather", python_kore_gather, METH_VARARGS | METH_KEYWORDS), METHOD("fatal", python_kore_fatal, METH_VARARGS), METHOD("fatalx", python_kore_fatalx, METH_VARARGS), METHOD("suspend", python_kore_suspend, METH_VARARGS), METHOD("shutdown", python_kore_shutdown, METH_NOARGS), METHOD("bind_unix", python_kore_bind_unix, METH_VARARGS), METHOD("task_create", python_kore_task_create, METH_VARARGS), METHOD("socket_wrap", python_kore_socket_wrap, METH_VARARGS), METHOD("websocket_broadcast", python_websocket_broadcast, METH_VARARGS), #if defined(KORE_USE_PGSQL) METHOD("register_database", python_kore_pgsql_register, METH_VARARGS), #endif #if defined(KORE_USE_CURL) METHOD("httpclient", python_kore_httpclient, METH_VARARGS | METH_KEYWORDS), #endif { NULL, NULL, 0, NULL } }; static struct PyModuleDef pykore_module = { PyModuleDef_HEAD_INIT, "kore", NULL, -1, pykore_methods }; #define PYSUSPEND_OP_INIT 1 #define PYSUSPEND_OP_WAIT 2 #define PYSUSPEND_OP_CONTINUE 3 struct pysuspend_op { PyObject_HEAD int state; int delay; struct python_coro *coro; struct kore_timer *timer; }; static void pysuspend_op_dealloc(struct pysuspend_op *); static PyObject *pysuspend_op_await(PyObject *); static PyObject *pysuspend_op_iternext(struct pysuspend_op *); static PyAsyncMethods pysuspend_op_async = { (unaryfunc)pysuspend_op_await, NULL, NULL }; static PyTypeObject pysuspend_op_type = { PyVarObject_HEAD_INIT(NULL, 0) .tp_name = "kore.suspend", .tp_doc = "suspension operation", .tp_as_async = &pysuspend_op_async, .tp_iternext = (iternextfunc)pysuspend_op_iternext, .tp_basicsize = sizeof(struct pysuspend_op), .tp_dealloc = (destructor)pysuspend_op_dealloc, .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, }; struct pytimer { PyObject_HEAD int flags; struct kore_timer *run; PyObject *callable; }; static PyObject *pytimer_close(struct pytimer *, PyObject *); static PyMethodDef pytimer_methods[] = { METHOD("close", pytimer_close, METH_NOARGS), METHOD(NULL, NULL, -1) }; static void pytimer_dealloc(struct pytimer *); static PyTypeObject pytimer_type = { PyVarObject_HEAD_INIT(NULL, 0) .tp_name = "kore.timer", .tp_doc = "kore timer implementation", .tp_methods = pytimer_methods, .tp_basicsize = sizeof(struct pytimer), .tp_dealloc = (destructor)pytimer_dealloc, .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, }; /* XXX */ struct pysocket; struct pysocket_op; struct pysocket_event { struct kore_event evt; struct pysocket *s; }; struct pysocket { PyObject_HEAD int fd; int family; int protocol; int scheduled; PyObject *socket; socklen_t addr_len; struct pysocket_event event; struct pysocket_op *recvop; struct pysocket_op *sendop; union { struct sockaddr_in ipv4; struct sockaddr_un sun; } addr; }; static PyObject *pysocket_send(struct pysocket *, PyObject *); static PyObject *pysocket_recv(struct pysocket *, PyObject *); static PyObject *pysocket_close(struct pysocket *, PyObject *); static PyObject *pysocket_accept(struct pysocket *, PyObject *); static PyObject *pysocket_sendto(struct pysocket *, PyObject *); static PyObject *pysocket_connect(struct pysocket *, PyObject *); static PyObject *pysocket_recvfrom(struct pysocket *, PyObject *); static PyMethodDef pysocket_methods[] = { METHOD("recv", pysocket_recv, METH_VARARGS), METHOD("send", pysocket_send, METH_VARARGS), METHOD("close", pysocket_close, METH_NOARGS), METHOD("accept", pysocket_accept, METH_NOARGS), METHOD("sendto", pysocket_sendto, METH_VARARGS), METHOD("connect", pysocket_connect, METH_VARARGS), METHOD("recvfrom", pysocket_recvfrom, METH_VARARGS), METHOD(NULL, NULL, -1), }; static void pysocket_dealloc(struct pysocket *); static PyTypeObject pysocket_type = { PyVarObject_HEAD_INIT(NULL, 0) .tp_name = "kore.socket", .tp_doc = "kore socket implementation", .tp_methods = pysocket_methods, .tp_basicsize = sizeof(struct pysocket), .tp_dealloc = (destructor)pysocket_dealloc, .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, }; #define PYSOCKET_TYPE_ACCEPT 1 #define PYSOCKET_TYPE_CONNECT 2 #define PYSOCKET_TYPE_RECV 3 #define PYSOCKET_TYPE_SEND 4 #define PYSOCKET_TYPE_RECVFROM 5 #define PYSOCKET_TYPE_SENDTO 6 struct pysocket_op { PyObject_HEAD int eof; int type; void *self; struct python_coro *coro; int state; size_t length; struct kore_buf buffer; struct pysocket *socket; struct kore_timer *timer; union { struct sockaddr_in ipv4; struct sockaddr_un sun; } sendaddr; }; static void pysocket_op_dealloc(struct pysocket_op *); static PyObject *pysocket_op_await(PyObject *); static PyObject *pysocket_op_iternext(struct pysocket_op *); static PyAsyncMethods pysocket_op_async = { (unaryfunc)pysocket_op_await, NULL, NULL }; static PyTypeObject pysocket_op_type = { PyVarObject_HEAD_INIT(NULL, 0) .tp_name = "kore.socketop", .tp_doc = "socket operation", .tp_as_async = &pysocket_op_async, .tp_iternext = (iternextfunc)pysocket_op_iternext, .tp_basicsize = sizeof(struct pysocket_op), .tp_dealloc = (destructor)pysocket_op_dealloc, .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, }; struct pyqueue_waiting { struct python_coro *coro; struct pyqueue_op *op; TAILQ_ENTRY(pyqueue_waiting) list; }; struct pyqueue_object { PyObject *obj; TAILQ_ENTRY(pyqueue_object) list; }; struct pyqueue { PyObject_HEAD TAILQ_HEAD(, pyqueue_object) objects; TAILQ_HEAD(, pyqueue_waiting) waiting; }; static PyObject *pyqueue_pop(struct pyqueue *, PyObject *); static PyObject *pyqueue_push(struct pyqueue *, PyObject *); static PyObject *pyqueue_popnow(struct pyqueue *, PyObject *); static PyMethodDef pyqueue_methods[] = { METHOD("pop", pyqueue_pop, METH_NOARGS), METHOD("push", pyqueue_push, METH_VARARGS), METHOD("popnow", pyqueue_popnow, METH_NOARGS), METHOD(NULL, NULL, -1) }; static void pyqueue_dealloc(struct pyqueue *); static PyTypeObject pyqueue_type = { PyVarObject_HEAD_INIT(NULL, 0) .tp_name = "kore.queue", .tp_doc = "queue", .tp_methods = pyqueue_methods, .tp_basicsize = sizeof(struct pyqueue), .tp_dealloc = (destructor)pyqueue_dealloc, .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, }; struct pyqueue_op { PyObject_HEAD struct pyqueue *queue; struct pyqueue_waiting *waiting; }; static void pyqueue_op_dealloc(struct pyqueue_op *); static PyObject *pyqueue_op_await(PyObject *); static PyObject *pyqueue_op_iternext(struct pyqueue_op *); static PyAsyncMethods pyqueue_op_async = { (unaryfunc)pyqueue_op_await, NULL, NULL }; static PyTypeObject pyqueue_op_type = { PyVarObject_HEAD_INIT(NULL, 0) .tp_name = "kore.queueop", .tp_doc = "queue waitable", .tp_as_async = &pyqueue_op_async, .tp_iternext = (iternextfunc)pyqueue_op_iternext, .tp_basicsize = sizeof(struct pyqueue_op), .tp_dealloc = (destructor)pyqueue_op_dealloc, .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, }; struct pylock { PyObject_HEAD struct python_coro *owner; TAILQ_HEAD(, pylock_op) ops; }; static PyObject *pylock_aexit(struct pylock *, PyObject *); static PyObject *pylock_aenter(struct pylock *, PyObject *); static PyMethodDef pylock_methods[] = { METHOD("__aexit__", pylock_aexit, METH_VARARGS), METHOD("__aenter__", pylock_aenter, METH_NOARGS), METHOD(NULL, NULL, -1) }; static void pylock_dealloc(struct pylock *); static PyTypeObject pylock_type = { PyVarObject_HEAD_INIT(NULL, 0) .tp_name = "kore.lock", .tp_doc = "locking mechanism", .tp_methods = pylock_methods, .tp_basicsize = sizeof(struct pylock), .tp_dealloc = (destructor)pylock_dealloc, .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, }; struct pylock_op { PyObject_HEAD int locking; int active; struct pylock *lock; struct python_coro *coro; TAILQ_ENTRY(pylock_op) list; }; static void pylock_op_dealloc(struct pylock_op *); static PyObject *pylock_op_await(PyObject *); static PyObject *pylock_op_iternext(struct pylock_op *); static PyAsyncMethods pylock_op_async = { (unaryfunc)pylock_op_await, NULL, NULL }; static PyTypeObject pylock_op_type = { PyVarObject_HEAD_INIT(NULL, 0) .tp_name = "kore.lockop", .tp_doc = "lock awaitable", .tp_as_async = &pylock_op_async, .tp_iternext = (iternextfunc)pylock_op_iternext, .tp_basicsize = sizeof(struct pylock_op), .tp_dealloc = (destructor)pylock_op_dealloc, .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, }; struct pyproc { PyObject_HEAD pid_t pid; int reaped; int status; struct pysocket *in; struct pysocket *out; struct python_coro *coro; struct kore_timer *timer; TAILQ_ENTRY(pyproc) list; }; static void pyproc_dealloc(struct pyproc *); static PyObject *pyproc_kill(struct pyproc *, PyObject *); static PyObject *pyproc_reap(struct pyproc *, PyObject *); static PyObject *pyproc_recv(struct pyproc *, PyObject *); static PyObject *pyproc_send(struct pyproc *, PyObject *); static PyObject *pyproc_close_stdin(struct pyproc *, PyObject *); static PyMethodDef pyproc_methods[] = { METHOD("kill", pyproc_kill, METH_NOARGS), METHOD("reap", pyproc_reap, METH_NOARGS), METHOD("recv", pyproc_recv, METH_VARARGS), METHOD("send", pyproc_send, METH_VARARGS), METHOD("close_stdin", pyproc_close_stdin, METH_NOARGS), METHOD(NULL, NULL, -1), }; static PyTypeObject pyproc_type = { PyVarObject_HEAD_INIT(NULL, 0) .tp_name = "kore.proc", .tp_doc = "async process", .tp_methods = pyproc_methods, .tp_basicsize = sizeof(struct pyproc), .tp_dealloc = (destructor)pyproc_dealloc, .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, }; struct pyproc_op { PyObject_HEAD struct pyproc *proc; }; static void pyproc_op_dealloc(struct pyproc_op *); static PyObject *pyproc_op_await(PyObject *); static PyObject *pyproc_op_iternext(struct pyproc_op *); static PyAsyncMethods pyproc_op_async = { (unaryfunc)pyproc_op_await, NULL, NULL }; static PyTypeObject pyproc_op_type = { PyVarObject_HEAD_INIT(NULL, 0) .tp_name = "kore.proc_op", .tp_doc = "proc reaper awaitable", .tp_as_async = &pyproc_op_async, .tp_iternext = (iternextfunc)pyproc_op_iternext, .tp_basicsize = sizeof(struct pyproc_op), .tp_dealloc = (destructor)pyproc_op_dealloc, .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, }; struct pygather_coro { struct python_coro *coro; PyObject *result; TAILQ_ENTRY(pygather_coro) list; }; struct pygather_result { PyObject *obj; TAILQ_ENTRY(pygather_result) list; }; struct pygather_op { PyObject_HEAD int count; int running; int concurrency; struct python_coro *coro; TAILQ_HEAD(, pygather_result) results; TAILQ_HEAD(, pygather_coro) coroutines; }; static void pygather_op_dealloc(struct pygather_op *); static PyObject *pygather_op_await(PyObject *); static PyObject *pygather_op_iternext(struct pygather_op *); static PyAsyncMethods pygather_op_async = { (unaryfunc)pygather_op_await, NULL, NULL }; static PyTypeObject pygather_op_type = { PyVarObject_HEAD_INIT(NULL, 0) .tp_name = "kore.pygather_op", .tp_doc = "coroutine gathering", .tp_as_async = &pygather_op_async, .tp_iternext = (iternextfunc)pygather_op_iternext, .tp_basicsize = sizeof(struct pygather_op), .tp_dealloc = (destructor)pygather_op_dealloc, .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, }; struct pyconnection { PyObject_HEAD struct connection *c; }; static PyObject *pyconnection_disconnect(struct pyconnection *, PyObject *); static PyObject *pyconnection_websocket_send(struct pyconnection *, PyObject *); static PyMethodDef pyconnection_methods[] = { METHOD("disconnect", pyconnection_disconnect, METH_NOARGS), METHOD("websocket_send", pyconnection_websocket_send, METH_VARARGS), METHOD(NULL, NULL, -1), }; static PyObject *pyconnection_get_fd(struct pyconnection *, void *); static PyObject *pyconnection_get_addr(struct pyconnection *, void *); #if !defined(KORE_NO_TLS) static PyObject *pyconnection_get_peer_x509(struct pyconnection *, void *); #endif static PyGetSetDef pyconnection_getset[] = { GETTER("fd", pyconnection_get_fd), GETTER("addr", pyconnection_get_addr), #if !defined(KORE_NO_TLS) GETTER("x509", pyconnection_get_peer_x509), #endif GETTER(NULL, NULL), }; static void pyconnection_dealloc(struct pyconnection *); static PyTypeObject pyconnection_type = { PyVarObject_HEAD_INIT(NULL, 0) .tp_name = "kore.connection", .tp_doc = "struct connection", .tp_getset = pyconnection_getset, .tp_methods = pyconnection_methods, .tp_basicsize = sizeof(struct pyconnection), .tp_dealloc = (destructor)pyconnection_dealloc, .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, }; struct pyhttp_request { PyObject_HEAD struct http_request *req; PyObject *data; }; struct pyhttp_iterobj { int remove; PyObject *iterator; struct connection *connection; struct kore_buf buf; }; struct pyhttp_file { PyObject_HEAD struct http_file *file; }; static void pyhttp_dealloc(struct pyhttp_request *); static void pyhttp_file_dealloc(struct pyhttp_file *); #if defined(KORE_USE_PGSQL) static PyObject *pyhttp_pgsql(struct pyhttp_request *, PyObject *, PyObject *); #endif static PyObject *pyhttp_cookie(struct pyhttp_request *, PyObject *); static PyObject *pyhttp_response(struct pyhttp_request *, PyObject *); static PyObject *pyhttp_argument(struct pyhttp_request *, PyObject *); static PyObject *pyhttp_body_read(struct pyhttp_request *, PyObject *); static PyObject *pyhttp_file_lookup(struct pyhttp_request *, PyObject *); static PyObject *pyhttp_populate_get(struct pyhttp_request *, PyObject *); static PyObject *pyhttp_populate_post(struct pyhttp_request *, PyObject *); static PyObject *pyhttp_populate_multi(struct pyhttp_request *, PyObject *); static PyObject *pyhttp_populate_cookies(struct pyhttp_request *, PyObject *); static PyObject *pyhttp_request_header(struct pyhttp_request *, PyObject *); static PyObject *pyhttp_response_header(struct pyhttp_request *, PyObject *); static PyObject *pyhttp_websocket_handshake(struct pyhttp_request *, PyObject *); static PyMethodDef pyhttp_request_methods[] = { #if defined(KORE_USE_PGSQL) METHOD("pgsql", pyhttp_pgsql, METH_VARARGS | METH_KEYWORDS), #endif METHOD("cookie", pyhttp_cookie, METH_VARARGS), METHOD("response", pyhttp_response, METH_VARARGS), METHOD("argument", pyhttp_argument, METH_VARARGS), METHOD("body_read", pyhttp_body_read, METH_VARARGS), METHOD("file_lookup", pyhttp_file_lookup, METH_VARARGS), METHOD("populate_get", pyhttp_populate_get, METH_NOARGS), METHOD("populate_post", pyhttp_populate_post, METH_NOARGS), METHOD("populate_multi", pyhttp_populate_multi, METH_NOARGS), METHOD("populate_cookies", pyhttp_populate_cookies, METH_NOARGS), METHOD("request_header", pyhttp_request_header, METH_VARARGS), METHOD("response_header", pyhttp_response_header, METH_VARARGS), METHOD("websocket_handshake", pyhttp_websocket_handshake, METH_VARARGS), METHOD(NULL, NULL, -1) }; static PyObject *pyhttp_get_host(struct pyhttp_request *, void *); static PyObject *pyhttp_get_path(struct pyhttp_request *, void *); static PyObject *pyhttp_get_body(struct pyhttp_request *, void *); static PyObject *pyhttp_get_agent(struct pyhttp_request *, void *); static PyObject *pyhttp_get_method(struct pyhttp_request *, void *); static PyObject *pyhttp_get_body_path(struct pyhttp_request *, void *); static PyObject *pyhttp_get_connection(struct pyhttp_request *, void *); static PyGetSetDef pyhttp_request_getset[] = { GETTER("host", pyhttp_get_host), GETTER("path", pyhttp_get_path), GETTER("body", pyhttp_get_body), GETTER("agent", pyhttp_get_agent), GETTER("method", pyhttp_get_method), GETTER("body_path", pyhttp_get_body_path), GETTER("connection", pyhttp_get_connection), GETTER(NULL, NULL) }; static PyTypeObject pyhttp_request_type = { PyVarObject_HEAD_INIT(NULL, 0) .tp_name = "kore.http_request", .tp_doc = "struct http_request", .tp_getset = pyhttp_request_getset, .tp_methods = pyhttp_request_methods, .tp_dealloc = (destructor)pyhttp_dealloc, .tp_basicsize = sizeof(struct pyhttp_request), .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, }; static PyObject *pyhttp_file_read(struct pyhttp_file *, PyObject *); static PyMethodDef pyhttp_file_methods[] = { METHOD("read", pyhttp_file_read, METH_VARARGS), METHOD(NULL, NULL, -1) }; static PyObject *pyhttp_file_get_name(struct pyhttp_file *, void *); static PyObject *pyhttp_file_get_filename(struct pyhttp_file *, void *); static PyGetSetDef pyhttp_file_getset[] = { GETTER("name", pyhttp_file_get_name), GETTER("filename", pyhttp_file_get_filename), GETTER(NULL, NULL) }; static PyTypeObject pyhttp_file_type = { PyVarObject_HEAD_INIT(NULL, 0) .tp_name = "kore.http_file", .tp_doc = "struct http_file", .tp_getset = pyhttp_file_getset, .tp_methods = pyhttp_file_methods, .tp_dealloc = (destructor)pyhttp_file_dealloc, .tp_basicsize = sizeof(struct pyhttp_file), .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, }; #if defined(KORE_USE_CURL) struct pyhttp_client { PyObject_HEAD char *url; char *unix; char *tlskey; char *tlscert; char *cabundle; int tlsverify; }; #define PYHTTP_CLIENT_OP_RUN 1 #define PYHTTP_CLIENT_OP_RESULT 2 struct pyhttp_client_op { PyObject_HEAD int state; int headers; struct kore_curl curl; struct python_coro *coro; }; static PyObject *pyhttp_client_op_await(PyObject *); static PyObject *pyhttp_client_op_iternext(struct pyhttp_client_op *); static void pyhttp_client_dealloc(struct pyhttp_client *); static void pyhttp_client_op_dealloc(struct pyhttp_client_op *); static PyObject *pyhttp_client_get(struct pyhttp_client *, PyObject *, PyObject *); static PyObject *pyhttp_client_put(struct pyhttp_client *, PyObject *, PyObject *); static PyObject *pyhttp_client_post(struct pyhttp_client *, PyObject *, PyObject *); static PyObject *pyhttp_client_head(struct pyhttp_client *, PyObject *, PyObject *); static PyObject *pyhttp_client_patch(struct pyhttp_client *, PyObject *, PyObject *); static PyObject *pyhttp_client_delete(struct pyhttp_client *, PyObject *, PyObject *); static PyObject *pyhttp_client_options(struct pyhttp_client *, PyObject *, PyObject *); static PyMethodDef pyhttp_client_methods[] = { METHOD("get", pyhttp_client_get, METH_VARARGS | METH_KEYWORDS), METHOD("put", pyhttp_client_put, METH_VARARGS | METH_KEYWORDS), METHOD("post", pyhttp_client_post, METH_VARARGS | METH_KEYWORDS), METHOD("head", pyhttp_client_head, METH_VARARGS | METH_KEYWORDS), METHOD("patch", pyhttp_client_patch, METH_VARARGS | METH_KEYWORDS), METHOD("delete", pyhttp_client_delete, METH_VARARGS | METH_KEYWORDS), METHOD("options", pyhttp_client_options, METH_VARARGS | METH_KEYWORDS), METHOD(NULL, NULL, -1) }; static PyTypeObject pyhttp_client_type = { PyVarObject_HEAD_INIT(NULL, 0) .tp_name = "kore.httpclient", .tp_doc = "An asynchronous HTTP client", .tp_methods = pyhttp_client_methods, .tp_basicsize = sizeof(struct pyhttp_client), .tp_dealloc = (destructor)pyhttp_client_dealloc, .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, }; static PyAsyncMethods pyhttp_client_op_async = { (unaryfunc)pyhttp_client_op_await, NULL, NULL }; static PyTypeObject pyhttp_client_op_type = { PyVarObject_HEAD_INIT(NULL, 0) .tp_name = "kore.httpclientop", .tp_doc = "Asynchronous HTTP client operation", .tp_as_async = &pyhttp_client_op_async, .tp_iternext = (iternextfunc)pyhttp_client_op_iternext, .tp_basicsize = sizeof(struct pyhttp_client_op), .tp_dealloc = (destructor)pyhttp_client_op_dealloc, .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, }; #endif #if defined(KORE_USE_PGSQL) #define PYKORE_PGSQL_PREINIT 1 #define PYKORE_PGSQL_INITIALIZE 2 #define PYKORE_PGSQL_QUERY 3 #define PYKORE_PGSQL_WAIT 4 struct pykore_pgsql { PyObject_HEAD int state; int binary; struct kore_pgsql sql; char *db; struct http_request *req; char *query; PyObject *result; struct { int count; const char **values; int *lengths; int *formats; PyObject **objs; } param; }; static void pykore_pgsql_dealloc(struct pykore_pgsql *); static int pykore_pgsql_result(struct pykore_pgsql *); static int pykore_pgsql_params(struct pykore_pgsql *, PyObject *); static PyObject *pykore_pgsql_await(PyObject *); static PyObject *pykore_pgsql_iternext(struct pykore_pgsql *); static PyAsyncMethods pykore_pgsql_async = { (unaryfunc)pykore_pgsql_await, NULL, NULL }; static PyTypeObject pykore_pgsql_type = { PyVarObject_HEAD_INIT(NULL, 0) .tp_name = "kore.pgsql", .tp_doc = "struct kore_pgsql", .tp_as_async = &pykore_pgsql_async, .tp_iternext = (iternextfunc)pykore_pgsql_iternext, .tp_basicsize = sizeof(struct pykore_pgsql), .tp_dealloc = (destructor)pykore_pgsql_dealloc, .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, }; #endif kore-3.3.1/include/kore/tasks.h000066400000000000000000000050501347522026400163440ustar00rootroot00000000000000/* * Copyright (c) 2014 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #ifndef __H_KORE_TASKS #define __H_KORE_TASKS #include #define KORE_TASK_STATE_CREATED 1 #define KORE_TASK_STATE_RUNNING 2 #define KORE_TASK_STATE_FINISHED 3 #define KORE_TASK_STATE_ABORT 4 #define KORE_TASK_THREADS 2 #if defined(__cplusplus) extern "C" { #endif #if !defined(KORE_NO_HTTP) struct http_request; #endif struct kore_task { struct kore_event evt; int state; int result; pthread_rwlock_t lock; #if !defined(KORE_NO_HTTP) struct http_request *req; #endif int fds[2]; int (*entry)(struct kore_task *); void (*cb)(struct kore_task *); struct kore_task_thread *thread; TAILQ_ENTRY(kore_task) list; LIST_ENTRY(kore_task) rlist; }; struct kore_task_thread { u_int8_t idx; pthread_t tid; pthread_mutex_t lock; pthread_cond_t cond; TAILQ_HEAD(, kore_task) tasks; TAILQ_ENTRY(kore_task_thread) list; }; void kore_task_init(void); void kore_task_handle(void *, int); void kore_task_run(struct kore_task *); void kore_task_finish(struct kore_task *); void kore_task_destroy(struct kore_task *); int kore_task_finished(struct kore_task *); #if !defined(KORE_NO_HTTP) void kore_task_bind_request(struct kore_task *, struct http_request *); #endif void kore_task_bind_callback(struct kore_task *, void (*cb)(struct kore_task *)); void kore_task_create(struct kore_task *, int (*entry)(struct kore_task *)); u_int32_t kore_task_channel_read(struct kore_task *, void *, u_int32_t); void kore_task_channel_write(struct kore_task *, void *, u_int32_t); void kore_task_set_state(struct kore_task *, int); void kore_task_set_result(struct kore_task *, int); int kore_task_state(struct kore_task *); int kore_task_result(struct kore_task *); extern u_int16_t kore_task_threads; #if defined(__cplusplus) } #endif #endif kore-3.3.1/kodev/000077500000000000000000000000001347522026400135735ustar00rootroot00000000000000kore-3.3.1/kodev/Makefile000066400000000000000000000021371347522026400152360ustar00rootroot00000000000000# kodev Makefile CC?=cc PREFIX?=/usr/local OBJDIR?=obj KODEV=kodev INSTALL_DIR=$(PREFIX)/bin S_SRC= ../src/cli.c CFLAGS+=-Wall -Werror -Wstrict-prototypes -Wmissing-prototypes CFLAGS+=-Wmissing-declarations -Wshadow -Wpointer-arith -Wcast-qual CFLAGS+=-Wsign-compare -Iincludes -std=c99 -pedantic CFLAGS+=-DPREFIX='"$(PREFIX)"' LDFLAGS=-lcrypto ifneq ("$(NOOPT)", "") CFLAGS+=-O0 else CFLAGS+=-O2 endif OSNAME=$(shell uname -s | sed -e 's/[-_].*//g' | tr A-Z a-z) ifeq ("$(OSNAME)", "darwin") CFLAGS+=-I/opt/local/include/ -I/usr/local/opt/openssl/include LDFLAGS+=-L/opt/local/lib -L/usr/local/opt/openssl/lib else ifeq ("$(OSNAME)", "linux") CFLAGS+=-D_GNU_SOURCE=1 endif S_OBJS= $(S_SRC:../src/%.c=$(OBJDIR)/%.o) $(KODEV): $(OBJDIR) $(S_OBJS) $(CC) $(S_OBJS) $(LDFLAGS) -o $(KODEV) $(OBJDIR): @mkdir -p $(OBJDIR) install: $(KODEV) mkdir -p $(INSTALL_DIR) install -m 555 $(KODEV) $(INSTALL_DIR)/$(KODEV) uninstall: rm -f $(INSTALL_DIR)/$(KODEV) $(OBJDIR)/%.o: ../src/%.c $(CC) $(CFLAGS) -c $< -o $@ clean: find . -type f -name \*.o -exec rm {} \; rm -rf $(KODEV) $(OBJDIR) .PHONY: all clean kore-3.3.1/minisign.pub000066400000000000000000000001451347522026400150100ustar00rootroot00000000000000untrusted comment: Kore minisign public key RWSxkEDc2y+whfKTmvhqs/YaFmEwblmvar7l6RXMjnu6o9tZW3LC0Hc9 kore-3.3.1/share/000077500000000000000000000000001347522026400135655ustar00rootroot00000000000000kore-3.3.1/share/man/000077500000000000000000000000001347522026400143405ustar00rootroot00000000000000kore-3.3.1/share/man/kodev.1000066400000000000000000000111751347522026400155370ustar00rootroot00000000000000.TH KODEV 1 .SH NAME kodev \- Kore project management tool .SH SYNOPSIS .BR kodev [\fIOPTION\fR] ... .SH DESCRIPTION This documentation describes the application management tools for building and running a Kore project. For information regarding the technical interface and C bindings, look to .BR kore(3) where these functions and structures are described. .BR Kore projects may be managed using the following OPTIONS; .BR create .RS Create a new application skeleton with the name that is passed to it. This will create a new directory with all the files required to begin hacking. See the \fBGENERATED FILES\fR section for more information. .RE .BR build .RS Build the application. See the \fBBUILDING\fR section for more information. .RE .BR run .RS Start the application in the foreground. See the \fBRUNNING\fR section for more information. .RE .BR reload .RS Reload the application. This is a shortcut to sending SIGHUP to the parent process (see kore_pid). .RE .BR info .RS Show information about the application configuration. Namely; active flavor, output type, Kore features, Kore source and Kore binary. .RE .BR clean .RS Cleanup the build files. .RE .BR flavor .RS Switch between build flavors with the argument being the new flavor. .RE .BR help .RS Show the help synopsis. .RE .SH GENERATED FILES Executing the .BR create command will generate several new files under the directory matching the application name specified. These files are: .RS .BR conf/build.conf .RS The build configuration. .RE .BR conf/app.conf .RS The Kore application configuration. .RE .BR src/app.c .RS The initial placeholder source code. .RE .BR cert/server.pem .RS The self-signed auto-generated x509 certificate. .RE .BR cert/key.pem .RS The key matching the self-signed x509 certificate. .RE .BR dh2048.pem .RS The 2048-bit DH parameters used by TLS. .RE .RE Those files are: .RS .BR kore.conf .RS The Kore application configuration. .RE .RE .RS .BR handlers.py .RS The initial placeholder python page handler. .RE .RE .RS .BR __init__.py .RS The python initialization code. Sets up the kore listener, etc. .RE .RE .RS .BR cert/server.pem .RS The self-signed auto-generated x509 certificate. .RE .RE .RS .BR cert/key.pem .RS The key matching the self-signed x509 certificate. .RE .RE .RS .BR dh2048.pem .RS The 2048-bit DH parameters used by TLS. .RE .RE .SH BUILDING Executing the .BR build command will build your application. How this happens is instructed by the .BR conf/build.conf configuration file. This file supports the following directives: .RS .BR single_binary [yes|no] .RS If set to \fByes\fR the build system will produce a single binary containing both your application code and the Kore code allowing you to distribute your application more easily. If set to \fBno\fR the build system will produce a standard dynamicly linked library that will be loaded into Kore at runtime. .RE .RE .RS .BR kore_source [path] .RS Must be set to point to the a Kore source code directory. Used only if .BR single_binary option is set to \fByes\fR. .BR Example: kore_source=/home/joris/src/kore .RE .RE .RE .RS .BR kore_flavor [build options] .RS Defines the build arguments for building Kore. Used only if .BR single_binary option is set to \fByes\fR. .BR Example: kore_flavor=NOTLS=1 .RE .RE .RS .BR cflags .RS Standard .BR CFLAGS used when compiling the application source code. .RE .RE .RS .BR ldflags .RS Standard .BR LDFLAGS used when linking the application source code. .RE .RE Note that the .BR build command obeys the environment variables .BR CC and .BR CXX .SH RUNNING Executing the .BR run command will start your application in the foreground. What binary it executes depends on whether or not the .BR single_binary flag was set in build configuration. If the .BR single_binary flag was enabled the .BR run command will execute the binary produced by the build system. If the .BR single_binary flag was not enabled the .BR run command will execute the .BR $PREFIX/bin/kore binary. In both cases the .BR run command will pass the \fB\-fnr\fR command line options to the binary. .RE .SH EXAMPLES Changing flavor of the build; .RS $ kodev flavor osx .RE Building your application; .RS $ kodev build .RE .SH REPORTING BUGS, CONTRIBUTING && MORE If you run into any bugs, have suggestions or patches, please contact me at .BR More information can be found at .BR .SH AUTHOR .BR Kore developed by Joris Vink .BR Manpage authored by Guy Nankivell .BR .SH LICENCE Usage of this software is provided under the .BR ISC license which may be found, with the source, at .BR kore-3.3.1/src/000077500000000000000000000000001347522026400132525ustar00rootroot00000000000000kore-3.3.1/src/accesslog.c000066400000000000000000000167031347522026400153700ustar00rootroot00000000000000/* * Copyright (c) 2013-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include #include "kore.h" #include "http.h" /* * The worker will write accesslogs to its worker data structure which is * held in shared memory. * * Each accesslog is prefixed with the internal domain ID (2 bytes) and * the length of the log entry (2 bytes) (packed in kore_alog_header). * * The parent will every 10ms fetch the produced accesslogs from the workers * and copy them to its own log buffer. Once this log buffer becomes full * or 1 second has passed the parent will parse the logs and append them * to the correct domain logbuffer which is eventually flushed to disk. */ #define LOGBUF_SIZE (KORE_ACCESSLOG_BUFLEN * worker_count) #define DOMAIN_LOGBUF_LEN (1024 * 1024) #define LOG_ENTRY_MINSIZE_GUESS 90 static void accesslog_lock(struct kore_worker *); static void accesslog_unlock(struct kore_worker *); static void accesslog_flush_cb(struct kore_domain *); static void accesslog_flush(struct kore_domain *, u_int64_t, int); static u_int64_t time_cache = 0; static char tbuf[128] = { '\0' }; #if !defined(KORE_NO_TLS) char cnbuf[1024] = { '\0' }; #endif static struct kore_buf *logbuf = NULL; void kore_accesslog_worker_init(void) { kore_domain_closelogs(); } void kore_accesslog(struct http_request *req) { struct timespec ts; struct tm *tm; u_int64_t now; struct kore_alog_header *hdr; size_t avail; time_t curtime; int len, attempts; char addr[INET6_ADDRSTRLEN]; const char *ptr, *method, *cn, *referer; switch (req->method) { case HTTP_METHOD_GET: method = "GET"; break; case HTTP_METHOD_POST: method = "POST"; break; case HTTP_METHOD_PUT: method = "PUT"; break; case HTTP_METHOD_DELETE: method = "DELETE"; break; case HTTP_METHOD_HEAD: method = "HEAD"; break; case HTTP_METHOD_PATCH: method = "PATCH"; break; default: method = "UNKNOWN"; break; } if (req->referer != NULL) referer = req->referer; else referer = "-"; cn = "-"; #if !defined(KORE_NO_TLS) if (req->owner->cert != NULL) { if (X509_GET_CN(req->owner->cert, cnbuf, sizeof(cnbuf)) != -1) cn = cnbuf; } #endif switch (req->owner->family) { case AF_INET: ptr = inet_ntop(req->owner->family, &(req->owner->addr.ipv4.sin_addr), addr, sizeof(addr)); break; case AF_INET6: ptr = inet_ntop(req->owner->family, &(req->owner->addr.ipv6.sin6_addr), addr, sizeof(addr)); break; case AF_UNIX: ptr = NULL; break; default: fatal("unknown family %d", req->owner->family); } if (ptr == NULL) { addr[0] = '-'; addr[1] = '\0'; } now = kore_time_ms(); if ((now - time_cache) >= 1000) { time(&curtime); tm = localtime(&curtime); (void)strftime(tbuf, sizeof(tbuf), "%d/%b/%Y:%H:%M:%S %z", tm); time_cache = now; } attempts = 0; ts.tv_sec = 0; ts.tv_nsec = 1000000; for (;;) { if (attempts++ > 1000) { if (getppid() == 1) { if (kill(worker->pid, SIGQUIT) == -1) fatal("failed to shutdown"); return; } attempts = 0; } accesslog_lock(worker); avail = KORE_ACCESSLOG_BUFLEN - worker->lb.offset; if (avail < sizeof(*hdr) + LOG_ENTRY_MINSIZE_GUESS) { accesslog_unlock(worker); nanosleep(&ts, NULL); continue; } hdr = (struct kore_alog_header *) (worker->lb.buf + worker->lb.offset); worker->lb.offset += sizeof(*hdr); len = snprintf(worker->lb.buf + worker->lb.offset, avail, "%s - %s [%s] \"%s %s HTTP/1.1\" %d %zu \"%s\" \"%s\"\n", addr, cn, tbuf, method, req->path, req->status, req->content_length, referer, req->agent); if (len == -1) fatal("failed to create log entry"); if ((size_t)len >= avail) { worker->lb.offset -= sizeof(*hdr); accesslog_unlock(worker); nanosleep(&ts, NULL); continue; } if ((size_t)len > USHRT_MAX) { kore_log(LOG_WARNING, "log entry length exceeds limit (%d)", len); worker->lb.offset -= sizeof(*hdr); break; } hdr->loglen = len; hdr->domain = req->hdlr->dom->id; worker->lb.offset += (size_t)len; break; } accesslog_unlock(worker); } void kore_accesslog_gather(void *arg, u_int64_t now, int force) { int id; struct kore_worker *kw; struct kore_alog_header *hdr; struct kore_domain *dom; size_t off, remain; if (logbuf == NULL) logbuf = kore_buf_alloc(LOGBUF_SIZE); for (id = 0; id < worker_count; id++) { kw = kore_worker_data(id); accesslog_lock(kw); if (force || kw->lb.offset >= KORE_ACCESSLOG_SYNC) { kore_buf_append(logbuf, kw->lb.buf, kw->lb.offset); kw->lb.offset = 0; } accesslog_unlock(kw); } if (force || logbuf->offset >= LOGBUF_SIZE) { off = 0; remain = logbuf->offset; while (remain > 0) { if (remain < sizeof(*hdr)) { kore_log(LOG_ERR, "invalid log buffer: (%zu remain)", remain); break; } hdr = (struct kore_alog_header *)(logbuf->data + off); off += sizeof(*hdr); remain -= sizeof(*hdr); if (hdr->loglen > remain) { kore_log(LOG_ERR, "invalid log header: %u (%zu remain)", hdr->loglen, remain); break; } if ((dom = kore_domain_byid(hdr->domain)) == NULL) fatal("unknown domain id %u", hdr->domain); if (dom->logbuf == NULL) dom->logbuf = kore_buf_alloc(DOMAIN_LOGBUF_LEN); kore_buf_append(dom->logbuf, &logbuf->data[off], hdr->loglen); off += hdr->loglen; remain -= hdr->loglen; accesslog_flush(dom, now, force); } kore_buf_reset(logbuf); } if (force) kore_domain_callback(accesslog_flush_cb); } void kore_accesslog_run(void *arg, u_int64_t now) { static int ticks = 0; kore_accesslog_gather(arg, now, ticks++ % 100 ? 0 : 1); } static void accesslog_flush_cb(struct kore_domain *dom) { accesslog_flush(dom, 0, 1); } static void accesslog_flush(struct kore_domain *dom, u_int64_t now, int force) { ssize_t written; if (force && dom->logbuf == NULL) return; if (force || dom->logbuf->offset >= DOMAIN_LOGBUF_LEN) { written = write(dom->accesslog, dom->logbuf->data, dom->logbuf->offset); if (written == -1) { if (errno == EINTR) return; if (dom->logwarn == 0 || errno != dom->logerr) { kore_log(LOG_NOTICE, "error writing log for %s (%s)", dom->domain, errno_s); dom->logwarn = now; dom->logerr = errno; } kore_buf_reset(dom->logbuf); return; } if ((size_t)written != dom->logbuf->offset) { kore_log(LOG_ERR, "partial accesslog write for %s", dom->domain); } kore_buf_reset(dom->logbuf); } } static void accesslog_lock(struct kore_worker *kw) { for (;;) { if (__sync_bool_compare_and_swap(&kw->lb.lock, 0, 1)) break; } } static void accesslog_unlock(struct kore_worker *kw) { if (!__sync_bool_compare_and_swap(&kw->lb.lock, 1, 0)) fatal("accesslog_unlock: failed to release"); } kore-3.3.1/src/auth.c000066400000000000000000000076241347522026400143700ustar00rootroot00000000000000/* * Copyright (c) 2014 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include "kore.h" #include "http.h" TAILQ_HEAD(, kore_auth) auth_list; void kore_auth_init(void) { TAILQ_INIT(&auth_list); } int kore_auth_new(const char *name) { struct kore_auth *auth; if ((auth = kore_auth_lookup(name)) != NULL) return (KORE_RESULT_ERROR); auth = kore_malloc(sizeof(*auth)); auth->type = 0; auth->value = NULL; auth->redirect = NULL; auth->validator = NULL; auth->name = kore_strdup(name); TAILQ_INSERT_TAIL(&auth_list, auth, list); return (KORE_RESULT_OK); } int kore_auth_run(struct http_request *req, struct kore_auth *auth) { int r; kore_debug("kore_auth(%p, %p)", req, auth); switch (auth->type) { case KORE_AUTH_TYPE_COOKIE: r = kore_auth_cookie(req, auth); break; case KORE_AUTH_TYPE_HEADER: r = kore_auth_header(req, auth); break; case KORE_AUTH_TYPE_REQUEST: r = kore_auth_request(req, auth); break; default: kore_log(LOG_NOTICE, "unknown auth type %d", auth->type); return (KORE_RESULT_ERROR); } switch (r) { case KORE_RESULT_OK: req->flags |= HTTP_REQUEST_AUTHED; kore_debug("kore_auth_run() for %s successful", req->path); /* FALLTHROUGH */ case KORE_RESULT_RETRY: return (r); default: break; } /* Authentication types of "request" send their own HTTP responses. */ if (auth->type == KORE_AUTH_TYPE_REQUEST) return (r); kore_debug("kore_auth_run() for %s failed", req->path); if (auth->redirect == NULL) { http_response(req, 403, NULL, 0); return (KORE_RESULT_ERROR); } http_response_header(req, "location", auth->redirect); http_response(req, 302, NULL, 0); return (KORE_RESULT_ERROR); } int kore_auth_cookie(struct http_request *req, struct kore_auth *auth) { const char *hdr; int i, v; size_t len, slen; char *value, *c, *cookie, *cookies[HTTP_MAX_COOKIES]; if (!http_request_header(req, "cookie", &hdr)) return (KORE_RESULT_ERROR); cookie = kore_strdup(hdr); slen = strlen(auth->value); v = kore_split_string(cookie, ";", cookies, HTTP_MAX_COOKIES); for (i = 0; i < v; i++) { for (c = cookies[i]; isspace(*(unsigned char *)c); c++) ; len = MIN(slen, strlen(cookies[i])); if (!strncmp(c, auth->value, len)) break; } if (i == v) { kore_free(cookie); return (KORE_RESULT_ERROR); } c = cookies[i]; if ((value = strchr(c, '=')) == NULL) { kore_free(cookie); return (KORE_RESULT_ERROR); } i = kore_validator_check(req, auth->validator, ++value); kore_free(cookie); return (i); } int kore_auth_header(struct http_request *req, struct kore_auth *auth) { const char *header; if (!http_request_header(req, auth->value, &header)) return (KORE_RESULT_ERROR); return (kore_validator_check(req, auth->validator, header)); } int kore_auth_request(struct http_request *req, struct kore_auth *auth) { int ret; req->flags |= HTTP_VALIDATOR_IS_REQUEST; ret = kore_validator_check(req, auth->validator, req); req->flags &= ~HTTP_VALIDATOR_IS_REQUEST; return (ret); } struct kore_auth * kore_auth_lookup(const char *name) { struct kore_auth *auth; TAILQ_FOREACH(auth, &auth_list, list) { if (!strcmp(auth->name, name)) return (auth); } return (NULL); } kore-3.3.1/src/bsd.c000066400000000000000000000137561347522026400142020ustar00rootroot00000000000000/* * Copyright (c) 2013-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include #include #if defined(__FreeBSD_version) #include #endif #include #include #include "kore.h" #if defined(KORE_USE_PGSQL) #include "pgsql.h" #endif #if defined(KORE_USE_TASKS) #include "tasks.h" #endif static int kfd = -1; static struct kevent *events = NULL; static u_int32_t event_count = 0; #if defined(KORE_USE_PLATFORM_PLEDGE) static char pledges[256] = { "stdio rpath inet error" }; #endif void kore_platform_init(void) { long n; size_t len = sizeof(n); int mib[] = { CTL_HW, HW_NCPU }; if (sysctl(mib, 2, &n, &len, NULL, 0) == -1) { kore_debug("kore_platform_init(): sysctl %s", errno_s); cpu_count = 1; } else { cpu_count = (u_int16_t)n; } } void kore_platform_worker_setcpu(struct kore_worker *kw) { #if defined(__FreeBSD_version) cpuset_t cpuset; CPU_ZERO(&cpuset); CPU_SET(kw->cpu, &cpuset); if (cpuset_setaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID, -1, sizeof(cpuset), &cpuset) == -1) { fatal("failed: %s", errno_s); } #endif /* __FreeBSD_version */ } void kore_platform_event_init(void) { struct listener *l; if (kfd != -1) close(kfd); if (events != NULL) kore_free(events); if ((kfd = kqueue()) == -1) fatal("kqueue(): %s", errno_s); event_count = (worker_max_connections * 2) + nlisteners; events = kore_calloc(event_count, sizeof(struct kevent)); /* Hack to check if we're running under the parent or not. */ if (worker != NULL) { LIST_FOREACH(l, &listeners, list) { kore_platform_event_schedule(l->fd, EVFILT_READ, EV_ADD | EV_DISABLE, l); } } } void kore_platform_event_cleanup(void) { if (kfd != -1) { close(kfd); kfd = -1; } if (events != NULL) { kore_free(events); events = NULL; } } void kore_platform_event_wait(u_int64_t timer) { u_int32_t r; struct kore_event *evt; int n, i; struct timespec timeo, *ts; if (timer == KORE_WAIT_INFINITE) { ts = NULL; } else { timeo.tv_sec = timer / 1000; timeo.tv_nsec = (timer % 1000) * 1000000; ts = &timeo; } n = kevent(kfd, NULL, 0, events, event_count, ts); if (n == -1) { if (errno == EINTR) return; fatal("kevent(): %s", errno_s); } if (n > 0) kore_debug("main(): %d sockets available", n); for (i = 0; i < n; i++) { evt = (struct kore_event *)events[i].udata; if (evt == NULL) fatal("evt == NULL"); r = 0; if (events[i].filter == EVFILT_READ) evt->flags |= KORE_EVENT_READ; if (events[i].filter == EVFILT_WRITE) evt->flags |= KORE_EVENT_WRITE; if (events[i].flags & EV_EOF || events[i].flags & EV_ERROR) r = 1; evt->handle(evt, r); } } void kore_platform_event_all(int fd, void *c) { kore_platform_event_schedule(fd, EVFILT_READ, EV_ADD | EV_CLEAR, c); kore_platform_event_schedule(fd, EVFILT_WRITE, EV_ADD | EV_CLEAR, c); } void kore_platform_event_schedule(int fd, int type, int flags, void *data) { struct kevent event[1]; EV_SET(&event[0], fd, type, flags, 0, 0, data); if (kevent(kfd, event, 1, NULL, 0, NULL) == -1) fatal("kevent: %s", errno_s); } void kore_platform_enable_accept(void) { struct listener *l; LIST_FOREACH(l, &listeners, list) kore_platform_event_schedule(l->fd, EVFILT_READ, EV_ENABLE, l); } void kore_platform_disable_accept(void) { struct listener *l; LIST_FOREACH(l, &listeners, list) kore_platform_event_schedule(l->fd, EVFILT_READ, EV_DISABLE, l); } void kore_platform_schedule_read(int fd, void *data) { kore_platform_event_schedule(fd, EVFILT_READ, EV_ADD | EV_CLEAR, data); } void kore_platform_schedule_write(int fd, void *data) { kore_platform_event_schedule(fd, EVFILT_WRITE, EV_ADD | EV_CLEAR, data); } void kore_platform_disable_read(int fd) { kore_platform_event_schedule(fd, EVFILT_READ, EV_DELETE, NULL); } void kore_platform_disable_write(int fd) { kore_platform_event_schedule(fd, EVFILT_WRITE, EV_DELETE, NULL); } void kore_platform_proctitle(char *title) { #ifdef __MACH__ kore_proctitle(title); #else setproctitle("%s", title); #endif } #if defined(KORE_USE_PLATFORM_SENDFILE) int kore_platform_sendfile(struct connection *c, struct netbuf *nb) { int ret; off_t len, smin; smin = nb->fd_len - nb->fd_off; len = MIN(SENDFILE_PAYLOAD_MAX, smin); #if defined(__MACH__) ret = sendfile(nb->file_ref->fd, c->fd, nb->fd_off, &len, NULL, 0); #else ret = sendfile(nb->file_ref->fd, c->fd, nb->fd_off, len, NULL, &len, 0); #endif if (ret == -1) { if (errno == EAGAIN) { nb->fd_off += len; c->evt.flags &= ~KORE_EVENT_WRITE; return (KORE_RESULT_OK); } if (errno == EINTR) { nb->fd_off += len; return (KORE_RESULT_OK); } return (KORE_RESULT_ERROR); } nb->fd_off += len; if (len == 0 || nb->fd_off == nb->fd_len) { net_remove_netbuf(c, nb); c->snb = NULL; } return (KORE_RESULT_OK); } #endif #if defined(KORE_USE_PLATFORM_PLEDGE) void kore_platform_pledge(void) { if (pledge(pledges, NULL) == -1) fatal("failed to pledge process"); } void kore_platform_add_pledge(const char *pledge) { size_t len; len = strlcat(pledges, " ", sizeof(pledges)); if (len >= sizeof(pledges)) fatal("truncation on pledges"); len = strlcat(pledges, pledge, sizeof(pledges)); if (len >= sizeof(pledges)) fatal("truncation on pledges (%s)", pledge); } #endif kore-3.3.1/src/buf.c000066400000000000000000000071751347522026400142040ustar00rootroot00000000000000/* * Copyright (c) 2013-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include #include #include "kore.h" struct kore_buf * kore_buf_alloc(size_t initial) { struct kore_buf *buf; buf = kore_malloc(sizeof(*buf)); kore_buf_init(buf, initial); buf->flags = KORE_BUF_OWNER_API; return (buf); } void kore_buf_init(struct kore_buf *buf, size_t initial) { if (initial > 0) buf->data = kore_malloc(initial); else buf->data = NULL; buf->length = initial; buf->offset = 0; buf->flags = 0; } void kore_buf_cleanup(struct kore_buf *buf) { kore_free(buf->data); buf->data = NULL; buf->offset = 0; buf->length = 0; } void kore_buf_free(struct kore_buf *buf) { kore_buf_cleanup(buf); if (buf->flags & KORE_BUF_OWNER_API) kore_free(buf); } void kore_buf_append(struct kore_buf *buf, const void *data, size_t len) { if ((buf->offset + len) < len) fatal("overflow in kore_buf_append"); if ((buf->offset + len) > buf->length) { buf->length += len; buf->data = kore_realloc(buf->data, buf->length); } memcpy((buf->data + buf->offset), data, len); buf->offset += len; } void kore_buf_appendv(struct kore_buf *buf, const char *fmt, va_list args) { int l; va_list copy; char *b, sb[BUFSIZ]; va_copy(copy, args); l = vsnprintf(sb, sizeof(sb), fmt, args); if (l == -1) fatal("kore_buf_appendv(): vsnprintf error"); if ((size_t)l >= sizeof(sb)) { l = vasprintf(&b, fmt, copy); if (l == -1) fatal("kore_buf_appendv(): error or truncation"); } else { b = sb; } kore_buf_append(buf, b, l); if (b != sb) free(b); va_end(copy); } void kore_buf_appendf(struct kore_buf *buf, const char *fmt, ...) { va_list args; va_start(args, fmt); kore_buf_appendv(buf, fmt, args); va_end(args); } char * kore_buf_stringify(struct kore_buf *buf, size_t *len) { char c; if (len != NULL) *len = buf->offset; c = '\0'; kore_buf_append(buf, &c, sizeof(c)); return ((char *)buf->data); } u_int8_t * kore_buf_release(struct kore_buf *buf, size_t *len) { u_int8_t *p; p = buf->data; *len = buf->offset; buf->data = NULL; kore_buf_free(buf); return (p); } void kore_buf_replace_string(struct kore_buf *b, const char *src, const void *dst, size_t len) { char *key, *end, *tmp, *p; size_t blen, off, off2, nlen, klen; off = 0; klen = strlen(src); for (;;) { blen = b->offset; nlen = blen + len; p = (char *)b->data; key = kore_mem_find(p + off, b->offset - off, src, klen); if (key == NULL) break; end = key + klen; off = key - p; off2 = ((char *)(b->data + b->offset) - end); tmp = kore_malloc(nlen); memcpy(tmp, p, off); if (dst != NULL) memcpy((tmp + off), dst, len); memcpy((tmp + off + len), end, off2); kore_free(b->data); b->data = (u_int8_t *)tmp; b->offset = off + len + off2; b->length = nlen; off = off + len; } } void kore_buf_reset(struct kore_buf *buf) { buf->offset = 0; } kore-3.3.1/src/cli.c000066400000000000000000001437311347522026400141760ustar00rootroot00000000000000/* * Copyright (c) 2014-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define errno_s strerror(errno) #define ssl_errno_s ERR_error_string(ERR_get_error(), NULL) #if defined(OpenBSD) || defined(__FreeBSD_version) || \ defined(NetBSD) || defined(__DragonFly_version) #define PRI_TIME_T "d" #endif #if defined(__linux__) #if defined(__x86_64__) #define PRI_TIME_T PRIu64 #else #define PRI_TIME_T "ld" #endif #endif #if defined(__MACH__) #define PRI_TIME_T "ld" #endif #define LD_FLAGS_MAX 300 #define CFLAGS_MAX 300 #define CXXFLAGS_MAX CFLAGS_MAX #define BUILD_NOBUILD 0 #define BUILD_C 1 #define BUILD_CXX 2 struct cli_buf { u_int8_t *data; size_t length; size_t offset; }; struct mime_type { char *ext; char *type; TAILQ_ENTRY(mime_type) list; }; TAILQ_HEAD(mime_list, mime_type); struct buildopt { char *name; char *kore_source; char *kore_flavor; int flavor_nohttp; int single_binary; struct cli_buf *cflags; struct cli_buf *cxxflags; struct cli_buf *ldflags; TAILQ_ENTRY(buildopt) list; }; TAILQ_HEAD(buildopt_list, buildopt); struct cmd { const char *name; const char *descr; void (*cb)(int, char **); }; struct filegen { void (*cb)(void); }; struct cfile { struct stat st; int build; char *name; char *fpath; char *opath; TAILQ_ENTRY(cfile) list; }; TAILQ_HEAD(cfile_list, cfile); static struct cli_buf *cli_buf_alloc(size_t); static void cli_buf_free(struct cli_buf *); static char *cli_buf_stringify(struct cli_buf *, size_t *); static void cli_buf_append(struct cli_buf *, const void *, size_t); static void cli_buf_appendf(struct cli_buf *, const char *, ...); static void cli_buf_appendv(struct cli_buf *, const char *, va_list); static void *cli_malloc(size_t); static char *cli_strdup(const char *); static void *cli_realloc(void *, size_t); static char *cli_text_trim(char *, size_t); static char *cli_read_line(FILE *, char *, size_t); static long long cli_strtonum(const char *, long long, long long); static int cli_split_string(char *, const char *, char **, size_t); static void usage(void) __attribute__((noreturn)); static void fatal(const char *, ...) __attribute__((noreturn)); static void cli_file_close(int); static void cli_run_kore(void); static void cli_generate_certs(void); static void cli_compile_kore(void *); static void cli_link_application(void *); static void cli_compile_source_file(void *); static void cli_mkdir(const char *, int); static int cli_dir_exists(const char *); static int cli_file_exists(const char *); static void cli_cleanup_files(const char *); static void cli_build_cflags(struct buildopt *); static void cli_build_cxxflags(struct buildopt *); static void cli_build_ldflags(struct buildopt *); static void cli_file_read(int, char **, size_t *); static void cli_file_writef(int, const char *, ...); static void cli_file_open(const char *, int, int *); static void cli_file_remove(char *, struct dirent *); static void cli_build_asset(char *, struct dirent *); static void cli_file_write(int, const void *, size_t); static int cli_vasprintf(char **, const char *, ...); static void cli_spawn_proc(void (*cb)(void *), void *); static void cli_write_asset(const char *, const char *, struct buildopt *); static void cli_register_kore_file(char *, struct dirent *); static void cli_register_source_file(char *, struct dirent *); static void cli_file_create(const char *, const char *, size_t); static int cli_file_requires_build(struct stat *, const char *); static void cli_find_files(const char *, void (*cb)(char *, struct dirent *)); static void cli_add_source_file(char *, char *, char *, struct stat *, int); static struct buildopt *cli_buildopt_default(void); static struct buildopt *cli_buildopt_new(const char *); static struct buildopt *cli_buildopt_find(const char *); static void cli_buildopt_cleanup(void); static void cli_buildopt_parse(const char *); static void cli_buildopt_cflags(struct buildopt *, const char *); static void cli_buildopt_cxxflags(struct buildopt *, const char *); static void cli_buildopt_ldflags(struct buildopt *, const char *); static void cli_buildopt_single_binary(struct buildopt *, const char *); static void cli_buildopt_kore_source(struct buildopt *, const char *); static void cli_buildopt_kore_flavor(struct buildopt *, const char *); static void cli_buildopt_mime(struct buildopt *, const char *); static void cli_flavor_load(void); static void cli_flavor_change(const char *); static void cli_kore_features(struct buildopt *, char **, size_t *); static void cli_run(int, char **); static void cli_help(int, char **); static void cli_info(int, char **); static void cli_build(int, char **); static void cli_clean(int, char **); static void cli_create(int, char **); static void cli_reload(int, char **); static void cli_flavor(int, char **); static void cli_create_help(void); static void file_create_src(void); static void file_create_config(void); static void file_create_gitignore(void); static struct cmd cmds[] = { { "help", "this help text", cli_help }, { "run", "run an application (-fnr implied)", cli_run }, { "reload", "reload the application (SIGHUP)", cli_reload }, { "info", "show info on kore on this system", cli_info }, { "build", "build an application", cli_build }, { "clean", "cleanup the build files", cli_clean }, { "create", "create a new application skeleton", cli_create }, { "flavor", "switch between build flavors", cli_flavor }, { NULL, NULL, NULL } }; static struct filegen gen_files[] = { { file_create_src }, { file_create_config }, { file_create_gitignore }, { NULL } }; static const char *gen_dirs[] = { "src", "cert", "conf", "assets", NULL }; static const char *http_serveable_function = "int\n" "asset_serve_%s_%s(struct http_request *req)\n" "{\n" " http_serveable(req, asset_%s_%s, asset_len_%s_%s,\n" " asset_sha256_%s_%s, \"%s\");\n" " return (KORE_RESULT_OK);\n" "}\n"; static const char *src_data = "#include \n" "#include \n" "\n" "int\t\tpage(struct http_request *);\n" "\n" "int\n" "page(struct http_request *req)\n" "{\n" "\thttp_response(req, 200, NULL, 0);\n" "\treturn (KORE_RESULT_OK);\n" "}\n"; static const char *config_data = "# %s configuration\n" "\n" "bind\t\t127.0.0.1 8888\n" "load\t\t./%s.so\n" "\n" "tls_dhparam\tdh2048.pem\n" "\n" "domain * {\n" "\tcertfile\tcert/server.pem\n" "\tcertkey\t\tcert/key.pem\n" "\n" "\tstatic\t/\tpage\n" "}\n"; static const char *build_data = "# %s build config\n" "# You can switch flavors using: kodev flavor [newflavor]\n" "\n" "# Set to yes if you wish to produce a single binary instead\n" "# of a dynamic library. If you set this to yes you must also\n" "# set kore_source together with kore_flavor.\n" "#single_binary=no\n" "#kore_source=/home/joris/src/kore\n" "#kore_flavor=\n" "\n" "# The flags below are shared between flavors\n" "cflags=-Wall -Wmissing-declarations -Wshadow\n" "cflags=-Wstrict-prototypes -Wmissing-prototypes\n" "cflags=-Wpointer-arith -Wcast-qual -Wsign-compare\n" "\n" "cxxflags=-Wall -Wmissing-declarations -Wshadow\n" "cxxflags=-Wpointer-arith -Wcast-qual -Wsign-compare\n" "\n" "# Mime types for assets served via the builtin asset_serve_*\n" "#mime_add=txt:text/plain; charset=utf-8\n" "#mime_add=png:image/png\n" "#mime_add=html:text/html; charset=utf-8\n" "\n" "dev {\n" " # These flags are added to the shared ones when\n" " # you build the \"dev\" flavor.\n" " cflags=-g\n" " cxxflags=-g\n" "}\n" "\n" "#prod {\n" "# You can specify additional flags here which are only\n" "# included if you build with the \"prod\" flavor.\n" "#}\n"; static const char *dh2048_data = "-----BEGIN DH PARAMETERS-----\n" "MIIBCAKCAQEAn4f4Qn5SudFjEYPWTbUaOTLUH85YWmmPFW1+b5bRa9ygr+1wfamv\n" "VKVT7jO8c4msSNikUf6eEfoH0H4VTCaj+Habwu+Sj+I416r3mliMD4SjNsUJrBrY\n" "Y0QV3ZUgZz4A8ARk/WwQcRl8+ZXJz34IaLwAcpyNhoV46iHVxW0ty8ND0U4DIku/\n" "PNayKimu4BXWXk4RfwNVP59t8DQKqjshZ4fDnbotskmSZ+e+FHrd+Kvrq/WButvV\n" "Bzy9fYgnUlJ82g/bziCI83R2xAdtH014fR63MpElkqdNeChb94pPbEdFlNUvYIBN\n" "xx2vTUQMqRbB4UdG2zuzzr5j98HDdblQ+wIBAg==\n" "-----END DH PARAMETERS-----"; static const char *gitignore = "*.o\n.flavor\n.objs\n%s.so\nassets.h\ncert\n"; static int s_fd = -1; static char *appl = NULL; static int run_after = 0; static char *compiler_c = "cc"; static char *compiler_cpp = "c++"; static char *compiler_ld = "cc"; static const char *prefix = PREFIX; static struct mime_list mime_types; static struct cfile_list source_files; static struct buildopt_list build_options; static int source_files_count; static int cxx_files_count; static struct cmd *command = NULL; static int cflags_count = 0; static int cxxflags_count = 0; static int ldflags_count = 0; static char *flavor = NULL; static char *out_dir = "."; static char *object_dir = ".objs"; static char *cflags[CFLAGS_MAX]; static char *cxxflags[CXXFLAGS_MAX]; static char *ldflags[LD_FLAGS_MAX]; static void usage(void) { int i; fprintf(stderr, "Usage: kodev [command]\n"); fprintf(stderr, "\nAvailable commands:\n"); for (i = 0; cmds[i].name != NULL; i++) printf("\t%s\t%s\n", cmds[i].name, cmds[i].descr); fprintf(stderr, "\nFind more information on https://kore.io\n"); exit(1); } int main(int argc, char **argv) { int i; char *env; if (argc < 2) usage(); argc--; argv++; if ((env = getenv("KORE_PREFIX")) != NULL) prefix = env; if ((env = getenv("KORE_OBJDIR")) != NULL) object_dir = env; if ((env = getenv("KODEV_OUTPUT")) != NULL) out_dir = env; (void)umask(S_IWGRP | S_IWOTH); for (i = 0; cmds[i].name != NULL; i++) { if (!strcmp(argv[0], cmds[i].name)) { if (strcmp(argv[0], "create")) { argc--; argv++; } command = &cmds[i]; cmds[i].cb(argc, argv); break; } } if (cmds[i].name == NULL) { fprintf(stderr, "unknown command: %s\n", argv[0]); usage(); } return (0); } static void cli_help(int argc, char **argv) { usage(); } static void cli_create_help(void) { printf("Usage: kodev create [-p] [name]\n"); printf("Synopsis:\n"); printf(" Create a new application skeleton directory structure.\n"); printf("\n"); exit(1); } static void cli_create(int argc, char **argv) { int i, ch; char *fpath; const char **dirs; struct filegen *files; while ((ch = getopt(argc, argv, "hp")) != -1) { switch (ch) { case 'h': cli_create_help(); break; default: cli_create_help(); break; } } argc -= optind; argv += optind; if (argc != 1) cli_create_help(); appl = argv[0]; cli_mkdir(appl, 0755); dirs = gen_dirs; files = gen_files; for (i = 0; dirs[i] != NULL; i++) { (void)cli_vasprintf(&fpath, "%s/%s", appl, dirs[i]); cli_mkdir(fpath, 0755); free(fpath); } for (i = 0; files[i].cb != NULL; i++) files[i].cb(); if (chdir(appl) == -1) fatal("chdir(%s): %s", appl, errno_s); cli_generate_certs(); printf("%s created successfully!\n", appl); printf("WARNING: DO NOT USE THE GENERATED DH PARAMETERS " "AND CERTIFICATES IN PRODUCTION\n"); } static void cli_flavor(int argc, char **argv) { struct buildopt *bopt; char pwd[MAXPATHLEN], *conf; if (getcwd(pwd, sizeof(pwd)) == NULL) fatal("could not get cwd: %s", errno_s); appl = basename(pwd); (void)cli_vasprintf(&conf, "conf/%s.conf", appl); if (!cli_dir_exists("conf") || !cli_file_exists(conf)) fatal("%s doesn't appear to be a kore app", appl); free(conf); TAILQ_INIT(&build_options); TAILQ_INIT(&mime_types); (void)cli_buildopt_new("_default"); cli_buildopt_parse("conf/build.conf"); if (argc == 0) { cli_flavor_load(); TAILQ_FOREACH(bopt, &build_options, list) { if (!strcmp(bopt->name, "_default")) continue; if (!strcmp(bopt->name, flavor)) { printf("* %s\n", bopt->name); } else { printf(" %s\n", bopt->name); } } } else { cli_flavor_change(argv[0]); printf("changed build flavor to: %s\n", argv[0]); } cli_buildopt_cleanup(); } static void cli_build(int argc, char **argv) { struct dirent dp; struct cfile *cf; struct buildopt *bopt; struct timeval times[2]; char *build_path; int requires_relink, l; char *sofile, *config, *data; char *assets_path, *p, *src_path; char pwd[PATH_MAX], *assets_header; if (getcwd(pwd, sizeof(pwd)) == NULL) fatal("could not get cwd: %s", errno_s); appl = basename(pwd); if ((p = getenv("CC")) != NULL) { compiler_c = p; compiler_ld = p; } if ((p = getenv("CXX")) != NULL) { compiler_cpp = p; compiler_ld = p; } source_files_count = 0; cxx_files_count = 0; TAILQ_INIT(&source_files); TAILQ_INIT(&build_options); TAILQ_INIT(&mime_types); (void)cli_vasprintf(&src_path, "src"); (void)cli_vasprintf(&assets_path, "assets"); (void)cli_vasprintf(&config, "conf/%s.conf", appl); (void)cli_vasprintf(&build_path, "conf/build.conf"); (void)cli_vasprintf(&assets_header, "%s/assets.h", object_dir); if (!cli_dir_exists(src_path) || !cli_file_exists(config)) fatal("%s doesn't appear to be a kore app", appl); cli_flavor_load(); bopt = cli_buildopt_new("_default"); if (!cli_file_exists(build_path)) { l = cli_vasprintf(&data, build_data, appl); cli_file_create("conf/build.conf", data, l); free(data); } cli_find_files(src_path, cli_register_source_file); free(src_path); cli_buildopt_parse(build_path); free(build_path); if (!cli_dir_exists(object_dir)) cli_mkdir(object_dir, 0755); if (bopt->single_binary) { if (bopt->kore_source == NULL) fatal("single_binary set but not kore_source"); printf("building kore (%s)\n", bopt->kore_source); cli_spawn_proc(cli_compile_kore, bopt); (void)cli_vasprintf(&src_path, "%s/src", bopt->kore_source); cli_find_files(src_path, cli_register_kore_file); free(src_path); } printf("building %s (%s)\n", appl, flavor); cli_build_cflags(bopt); cli_build_cxxflags(bopt); cli_build_ldflags(bopt); (void)unlink(assets_header); /* Generate the assets. */ cli_file_open(assets_header, O_CREAT | O_TRUNC | O_WRONLY, &s_fd); cli_file_writef(s_fd, "#ifndef __H_KORE_ASSETS_H\n"); cli_file_writef(s_fd, "#define __H_KORE_ASSETS_H\n"); if (cli_dir_exists(assets_path)) cli_find_files(assets_path, cli_build_asset); if (bopt->single_binary) { memset(&dp, 0, sizeof(dp)); dp.d_type = DT_REG; printf("adding config %s\n", config); (void)snprintf(dp.d_name, sizeof(dp.d_name), "builtin_kore.conf"); cli_build_asset(config, &dp); } cli_file_writef(s_fd, "\n#endif\n"); cli_file_close(s_fd); free(assets_path); free(config); if (cxx_files_count > 0) compiler_ld = compiler_cpp; requires_relink = 0; TAILQ_FOREACH(cf, &source_files, list) { if (cf->build == BUILD_NOBUILD) continue; printf("compiling %s\n", cf->name); cli_spawn_proc(cli_compile_source_file, cf); times[0].tv_usec = 0; times[0].tv_sec = cf->st.st_mtime; times[1] = times[0]; if (utimes(cf->opath, times) == -1) printf("utime(%s): %s\n", cf->opath, errno_s); requires_relink++; } free(assets_header); if (bopt->kore_flavor == NULL || !strstr(bopt->kore_flavor, "NOTLS=1")) { if (!cli_dir_exists("cert")) { cli_mkdir("cert", 0700); cli_generate_certs(); } } if (bopt->single_binary) { requires_relink++; (void)cli_vasprintf(&sofile, "%s", appl); } else { (void)cli_vasprintf(&sofile, "%s.so", appl); } if (!cli_file_exists(sofile) && source_files_count > 0) requires_relink++; free(sofile); if (requires_relink) { cli_spawn_proc(cli_link_application, bopt); printf("%s built successfully!\n", appl); } else { printf("nothing to be done!\n"); } if (run_after == 0) cli_buildopt_cleanup(); } static void cli_clean(int argc, char **argv) { char pwd[PATH_MAX], *sofile; if (cli_dir_exists(object_dir)) cli_cleanup_files(object_dir); if (getcwd(pwd, sizeof(pwd)) == NULL) fatal("could not get cwd: %s", errno_s); appl = basename(pwd); (void)cli_vasprintf(&sofile, "%s.so", appl); if (unlink(sofile) == -1 && errno != ENOENT) printf("couldn't unlink %s: %s", sofile, errno_s); free(sofile); } static void cli_run(int argc, char **argv) { run_after = 1; cli_build(argc, argv); /* * We are exec()'ing kore again, while we could technically set * the right cli options manually and just continue running. */ cli_run_kore(); } static void cli_reload(int argc, char **argv) { int fd; size_t len; pid_t pid; char *buf; cli_file_open("kore.pid", O_RDONLY, &fd); cli_file_read(fd, &buf, &len); cli_file_close(fd); if (len == 0) fatal("reload: pid file is empty"); buf[len - 1] = '\0'; pid = cli_strtonum(buf, 0, UINT_MAX); if (kill(pid, SIGHUP) == -1) fatal("failed to reload: %s", errno_s); printf("reloaded application\n"); } static void cli_info(int argc, char **argv) { size_t len; struct buildopt *bopt; char *features; TAILQ_INIT(&mime_types); TAILQ_INIT(&build_options); cli_flavor_load(); bopt = cli_buildopt_new("_default"); cli_buildopt_parse("conf/build.conf"); printf("active flavor\t %s\n", flavor); printf("output type \t %s\n", (bopt->single_binary) ? "binary" : "dso"); if (bopt->single_binary) { printf("kore features\t %s\n", bopt->kore_flavor); printf("kore source \t %s\n", bopt->kore_source); } else { cli_kore_features(bopt, &features, &len); printf("kore binary \t %s/bin/kore\n", prefix); printf("kore features\t %.*s\n", (int)len, features); free(features); } } static void file_create_src(void) { char *name; (void)cli_vasprintf(&name, "%s/src/%s.c", appl, appl); cli_file_create(name, src_data, strlen(src_data)); free(name); } static void file_create_config(void) { int l; char *name, *data; (void)cli_vasprintf(&name, "%s/conf/%s.conf", appl, appl); l = cli_vasprintf(&data, config_data, appl, appl); cli_file_create(name, data, l); free(name); free(data); (void)cli_vasprintf(&name, "%s/conf/build.conf", appl); l = cli_vasprintf(&data, build_data, appl); cli_file_create(name, data, l); free(name); free(data); } static void file_create_gitignore(void) { int l; char *name, *data; (void)cli_vasprintf(&name, "%s/.gitignore", appl); l = cli_vasprintf(&data, gitignore, appl); cli_file_create(name, data, l); free(name); free(data); } static void cli_mkdir(const char *fpath, int mode) { if (mkdir(fpath, mode) == -1) fatal("cli_mkdir(%s): %s", fpath, errno_s); } static int cli_file_exists(const char *fpath) { struct stat st; if (stat(fpath, &st) == -1) return (0); if (!S_ISREG(st.st_mode)) return (0); return (1); } static int cli_file_requires_build(struct stat *fst, const char *opath) { struct stat ost; if (stat(opath, &ost) == -1) { if (errno == ENOENT) return (1); fatal("stat(%s): %s", opath, errno_s); } return (fst->st_mtime != ost.st_mtime); } static int cli_dir_exists(const char *fpath) { struct stat st; if (stat(fpath, &st) == -1) return (0); if (!S_ISDIR(st.st_mode)) return (0); return (1); } static void cli_file_open(const char *fpath, int flags, int *fd) { if ((*fd = open(fpath, flags, 0644)) == -1) fatal("cli_file_open(%s): %s", fpath, errno_s); } static void cli_file_read(int fd, char **buf, size_t *len) { struct stat st; char *p; ssize_t ret; size_t offset, bytes; if (fstat(fd, &st) == -1) fatal("fstat(): %s", errno_s); if (st.st_size > USHRT_MAX) fatal("cli_file_read: way too big"); offset = 0; bytes = st.st_size; p = cli_malloc(bytes); while (offset != bytes) { ret = read(fd, p + offset, bytes - offset); if (ret == -1) { if (errno == EINTR) continue; fatal("read(): %s", errno_s); } if (ret == 0) fatal("unexpected EOF"); offset += (size_t)ret; } *buf = p; *len = bytes; } static void cli_file_close(int fd) { if (close(fd) == -1) printf("warning: close() %s\n", errno_s); } static void cli_file_writef(int fd, const char *fmt, ...) { int l; char *buf; va_list args; va_start(args, fmt); l = vasprintf(&buf, fmt, args); va_end(args); if (l == -1) fatal("cli_file_writef"); cli_file_write(fd, buf, l); free(buf); } static void cli_file_write(int fd, const void *buf, size_t len) { ssize_t r; const u_int8_t *d; size_t written; d = buf; written = 0; while (written != len) { r = write(fd, d + written, len - written); if (r == -1) { if (errno == EINTR) continue; fatal("cli_file_write: %s", errno_s); } written += r; } } static void cli_file_create(const char *name, const char *data, size_t len) { int fd; cli_file_open(name, O_CREAT | O_TRUNC | O_WRONLY, &fd); cli_file_write(fd, data, len); cli_file_close(fd); printf("created %s\n", name); } static void cli_write_asset(const char *n, const char *e, struct buildopt *bopt) { cli_file_writef(s_fd, "extern const u_int8_t asset_%s_%s[];\n", n, e); cli_file_writef(s_fd, "extern const u_int32_t asset_len_%s_%s;\n", n, e); cli_file_writef(s_fd, "extern const time_t asset_mtime_%s_%s;\n", n, e); cli_file_writef(s_fd, "extern const char *asset_sha256_%s_%s;\n", n, e); if (bopt->flavor_nohttp == 0) { cli_file_writef(s_fd, "int asset_serve_%s_%s(struct http_request *);\n", n, e); } } static void cli_build_asset(char *fpath, struct dirent *dp) { struct stat st; SHA256_CTX sctx; off_t off; void *base; struct mime_type *mime; struct buildopt *bopt; const char *mime_type; int in, out, i, len; u_int8_t *d, digest[SHA256_DIGEST_LENGTH]; char *cpath, *ext, *opath, *p, *name; char hash[(SHA256_DIGEST_LENGTH * 2) + 1]; bopt = cli_buildopt_default(); /* Ignore hidden files and some editor files */ if (dp->d_name[0] == '.' || strrchr(dp->d_name, '~') || strrchr(dp->d_name, '#')) { return; } name = cli_strdup(dp->d_name); /* Grab the extension as we're using it in the symbol name. */ if ((ext = strrchr(name, '.')) == NULL) fatal("couldn't find ext in %s", name); /* Replace dots, spaces, etc etc with underscores. */ for (p = name; *p != '\0'; p++) { if (*p == '.' || isspace(*p) || *p == '-') *p = '_'; } /* Grab inode information. */ if (stat(fpath, &st) == -1) fatal("stat: %s %s", fpath, errno_s); /* If this file was empty, skip it. */ if (st.st_size == 0) { printf("skipping empty asset %s\n", name); free(name); return; } (void)cli_vasprintf(&opath, "%s/%s.o", object_dir, name); (void)cli_vasprintf(&cpath, "%s/%s.c", object_dir, name); /* Check if the file needs to be built. */ if (!cli_file_requires_build(&st, opath)) { *(ext)++ = '\0'; cli_write_asset(name, ext, bopt); *ext = '_'; cli_add_source_file(name, cpath, opath, &st, BUILD_NOBUILD); free(name); return; } /* Open the file we're converting. */ cli_file_open(fpath, O_RDONLY, &in); /* mmap our in file. */ if ((base = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, in, 0)) == MAP_FAILED) fatal("mmap: %s %s", fpath, errno_s); /* Create the c file where we will write too. */ cli_file_open(cpath, O_CREAT | O_TRUNC | O_WRONLY, &out); /* No longer need name so cut off the extension. */ printf("building asset %s\n", dp->d_name); *(ext)++ = '\0'; /* Start generating the file. */ cli_file_writef(out, "/* Auto generated */\n"); cli_file_writef(out, "#include \n\n"); cli_file_writef(out, "#include \n"); cli_file_writef(out, "#include \n\n"); cli_file_writef(out, "#include \"assets.h\"\n\n"); /* Write the file data as a byte array. */ cli_file_writef(out, "const u_int8_t asset_%s_%s[] = {\n", name, ext); d = base; for (off = 0; off < st.st_size; off++) cli_file_writef(out, "0x%02x,", *d++); /* * Always NUL-terminate the asset, even if this NUL is not included in * the actual length. This way assets can be cast to char * without * any additional thinking for the developer. */ cli_file_writef(out, "0x00"); /* Calculate the SHA256 digest of the contents. */ (void)SHA256_Init(&sctx); (void)SHA256_Update(&sctx, base, st.st_size); (void)SHA256_Final(digest, &sctx); for (i = 0; i < (int)sizeof(digest); i++) { len = snprintf(hash + (i * 2), sizeof(hash) - (i * 2), "%02x", digest[i]); if (len == -1 || (size_t)len >= sizeof(hash)) fatal("failed to convert SHA256 digest to hex"); } mime = NULL; TAILQ_FOREACH(mime, &mime_types, list) { if (!strcasecmp(mime->ext, ext)) break; } if (mime != NULL) mime_type = mime->type; else mime_type = "text/plain"; /* Add the meta data. */ cli_file_writef(out, "};\n\n"); cli_file_writef(out, "const u_int32_t asset_len_%s_%s = %" PRIu32 ";\n", name, ext, (u_int32_t)st.st_size); cli_file_writef(out, "const time_t asset_mtime_%s_%s = %" PRI_TIME_T ";\n", name, ext, st.st_mtime); if (bopt->flavor_nohttp == 0) { cli_file_writef(out, "const char *asset_sha256_%s_%s = \"\\\"%s\\\"\";\n", name, ext, hash); cli_file_writef(out, http_serveable_function, name, ext, name, ext, name, ext, name, ext, mime_type); } /* Write the file symbols into assets.h so they can be used. */ cli_write_asset(name, ext, bopt); /* Cleanup static file source. */ if (munmap(base, st.st_size) == -1) fatal("munmap: %s %s", fpath, errno_s); /* Cleanup fds */ cli_file_close(in); cli_file_close(out); /* Restore the original name */ *--ext = '.'; /* Register the .c file now (cpath is free'd later). */ cli_add_source_file(name, cpath, opath, &st, BUILD_C); free(name); } static void cli_add_source_file(char *name, char *fpath, char *opath, struct stat *st, int build) { struct cfile *cf; source_files_count++; cf = cli_malloc(sizeof(*cf)); cf->st = *st; cf->build = build; cf->fpath = fpath; cf->opath = opath; cf->name = cli_strdup(name); TAILQ_INSERT_TAIL(&source_files, cf, list); } static void cli_register_source_file(char *fpath, struct dirent *dp) { struct stat st; char *ext, *opath; int build; if ((ext = strrchr(fpath, '.')) == NULL || (strcmp(ext, ".c") && strcmp(ext, ".cpp"))) return; if (stat(fpath, &st) == -1) fatal("stat(%s): %s", fpath, errno_s); if (!strcmp(ext, ".cpp")) cxx_files_count++; (void)cli_vasprintf(&opath, "%s/%s.o", object_dir, dp->d_name); if (!cli_file_requires_build(&st, opath)) { build = BUILD_NOBUILD; } else if (!strcmp(ext, ".cpp")) { build = BUILD_CXX; } else { build = BUILD_C; } cli_add_source_file(dp->d_name, fpath, opath, &st, build); } static void cli_register_kore_file(char *fpath, struct dirent *dp) { struct stat st, ost; char *opath, *ext, *fname; if ((ext = strrchr(fpath, '.')) == NULL || strcmp(ext, ".c")) return; if (stat(fpath, &st) == -1) fatal("stat(%s): %s", fpath, errno_s); *ext = '\0'; if ((fname = basename(fpath)) == NULL) fatal("basename failed"); (void)cli_vasprintf(&opath, "%s/%s.o", object_dir, fname); /* Silently ignore non existing object files for kore source files. */ if (stat(opath, &ost) == -1) { free(opath); return; } cli_add_source_file(dp->d_name, fpath, opath, &st, BUILD_NOBUILD); } static void cli_file_remove(char *fpath, struct dirent *dp) { if (unlink(fpath) == -1) fprintf(stderr, "couldn't unlink %s: %s", fpath, errno_s); } static void cli_find_files(const char *path, void (*cb)(char *, struct dirent *)) { DIR *d; struct stat st; struct dirent *dp; char *fpath; if ((d = opendir(path)) == NULL) fatal("cli_find_files: opendir(%s): %s", path, errno_s); while ((dp = readdir(d)) != NULL) { if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, "..")) continue; (void)cli_vasprintf(&fpath, "%s/%s", path, dp->d_name); if (stat(fpath, &st) == -1) { fprintf(stderr, "stat(%s): %s\n", fpath, errno_s); free(fpath); continue; } if (S_ISDIR(st.st_mode)) { cli_find_files(fpath, cb); free(fpath); } else if (S_ISREG(st.st_mode)) { cb(fpath, dp); } else { fprintf(stderr, "ignoring %s\n", fpath); free(fpath); } } closedir(d); } static void cli_generate_certs(void) { BIGNUM *e; FILE *fp; time_t now; X509_NAME *name; EVP_PKEY *pkey; X509 *x509; RSA *kpair; char issuer[64]; /* Write out DH parameters. */ cli_file_create("dh2048.pem", dh2048_data, strlen(dh2048_data)); /* Create new certificate. */ if ((x509 = X509_new()) == NULL) fatal("X509_new(): %s", ssl_errno_s); /* Generate version 3. */ if (!X509_set_version(x509, 2)) fatal("X509_set_version(): %s", ssl_errno_s); /* Generate RSA keys. */ if ((pkey = EVP_PKEY_new()) == NULL) fatal("EVP_PKEY_new(): %s", ssl_errno_s); if ((kpair = RSA_new()) == NULL) fatal("RSA_new(): %s", ssl_errno_s); if ((e = BN_new()) == NULL) fatal("BN_new(): %s", ssl_errno_s); if (!BN_set_word(e, 65537)) fatal("BN_set_word(): %s", ssl_errno_s); if (!RSA_generate_key_ex(kpair, 2048, e, NULL)) fatal("RSA_generate_key_ex(): %s", ssl_errno_s); BN_free(e); if (!EVP_PKEY_assign_RSA(pkey, kpair)) fatal("EVP_PKEY_assign_RSA(): %s", ssl_errno_s); /* Set serial number to current timestamp. */ time(&now); if (!ASN1_INTEGER_set(X509_get_serialNumber(x509), now)) fatal("ASN1_INTEGER_set(): %s", ssl_errno_s); /* Not before and not after dates. */ if (!X509_gmtime_adj(X509_get_notBefore(x509), 0)) fatal("X509_gmtime_adj(): %s", ssl_errno_s); if (!X509_gmtime_adj(X509_get_notAfter(x509), (long)60 * 60 * 24 * 3000)) fatal("X509_gmtime_adj(): %s", ssl_errno_s); /* Attach the pkey to the certificate. */ if (!X509_set_pubkey(x509, pkey)) fatal("X509_set_pubkey(): %s", ssl_errno_s); /* Set certificate information. */ if ((name = X509_get_subject_name(x509)) == NULL) fatal("X509_get_subject_name(): %s", ssl_errno_s); (void)snprintf(issuer, sizeof(issuer), "kore autogen: %s", appl); if (!X509_NAME_add_entry_by_txt(name, "C", MBSTRING_ASC, (const unsigned char *)"SE", -1, -1, 0)) fatal("X509_NAME_add_entry_by_txt(): C %s", ssl_errno_s); if (!X509_NAME_add_entry_by_txt(name, "O", MBSTRING_ASC, (const unsigned char *)issuer, -1, -1, 0)) fatal("X509_NAME_add_entry_by_txt(): O %s", ssl_errno_s); if (!X509_NAME_add_entry_by_txt(name, "CN", MBSTRING_ASC, (const unsigned char *)"localhost", -1, -1, 0)) fatal("X509_NAME_add_entry_by_txt(): CN %s", ssl_errno_s); if (!X509_set_issuer_name(x509, name)) fatal("X509_set_issuer_name(): %s", ssl_errno_s); if (!X509_sign(x509, pkey, EVP_sha256())) fatal("X509_sign(): %s", ssl_errno_s); if ((fp = fopen("cert/key.pem", "w")) == NULL) fatal("fopen(cert/key.pem): %s", errno_s); if (!PEM_write_PrivateKey(fp, pkey, NULL, NULL, 0, NULL, NULL)) fatal("PEM_write_PrivateKey(): %s", ssl_errno_s); fclose(fp); if ((fp = fopen("cert/server.pem", "w")) == NULL) fatal("fopen(cert/server.pem): %s", errno_s); if (!PEM_write_X509(fp, x509)) fatal("PEM_write_X509(%s)", errno_s); fclose(fp); EVP_PKEY_free(pkey); X509_free(x509); } static void cli_compile_source_file(void *arg) { struct cfile *cf; int idx, i; char **flags; char *compiler; int flags_count; char *args[34 + CFLAGS_MAX]; cf = arg; switch (cf->build) { case BUILD_C: compiler = compiler_c; flags = cflags; flags_count = cflags_count; break; case BUILD_CXX: compiler = compiler_cpp; flags = cxxflags; flags_count = cxxflags_count; break; default: fatal("cli_compile_file: unexpected file type: %d", cf->build); break; } idx = 0; args[idx++] = compiler; for (i = 0; i < flags_count; i++) args[idx++] = flags[i]; args[idx++] = "-I"; args[idx++] = object_dir; args[idx++] = "-c"; args[idx++] = cf->fpath; args[idx++] = "-o"; args[idx++] = cf->opath; args[idx] = NULL; execvp(compiler, args); fatal("failed to start '%s': %s", compiler, errno_s); } static void cli_link_application(void *arg) { struct cfile *cf; struct buildopt *bopt; int idx, i; char *output; char *args[source_files_count + 11 + LD_FLAGS_MAX]; bopt = arg; if (bopt->single_binary) (void)cli_vasprintf(&output, "%s/%s", out_dir, appl); else (void)cli_vasprintf(&output, "%s/%s.so", out_dir, appl); idx = 0; args[idx++] = compiler_ld; TAILQ_FOREACH(cf, &source_files, list) args[idx++] = cf->opath; for (i = 0; i < ldflags_count; i++) args[idx++] = ldflags[i]; args[idx++] = "-o"; args[idx++] = output; args[idx] = NULL; execvp(compiler_ld, args); fatal("failed to start '%s': %s", compiler_ld, errno_s); } static void cli_compile_kore(void *arg) { struct buildopt *bopt = arg; int idx, i, fcnt; char pwd[MAXPATHLEN], *obj, *args[20], *flavors[7]; if (object_dir[0] != '/') { if (getcwd(pwd, sizeof(pwd)) == NULL) fatal("could not get cwd: %s", errno_s); (void)cli_vasprintf(&obj, "OBJDIR=%s/%s", pwd, object_dir); } else { (void)cli_vasprintf(&obj, "OBJDIR=%s", object_dir); } if (putenv(obj) != 0) fatal("cannot set OBJDIR for building kore"); fcnt = cli_split_string(bopt->kore_flavor, " ", flavors, 7); #if defined(OpenBSD) || defined(__FreeBSD_version) || \ defined(NetBSD) || defined(__DragonFly_version) args[0] = "gmake"; #else args[0] = "make"; #endif args[1] = "-s"; args[2] = "-C"; args[3] = bopt->kore_source; args[4] = "objects"; idx = 5; for (i = 0; i < fcnt; i++) { printf("using flavor %s\n", flavors[i]); args[idx++] = flavors[i]; } args[idx++] = "KORE_SINGLE_BINARY=1"; args[idx] = NULL; execvp(args[0], args); fatal("failed to start '%s': %s", args[0], errno_s); } static void cli_run_kore(void) { struct buildopt *bopt; char *args[4], *cpath, *cmd, *flags; bopt = cli_buildopt_default(); if (bopt->single_binary) { cpath = NULL; flags = "-fnr"; (void)cli_vasprintf(&cmd, "./%s", appl); } else { flags = "-fnrc"; (void)cli_vasprintf(&cmd, "%s/bin/kore", prefix); (void)cli_vasprintf(&cpath, "conf/%s.conf", appl); } args[0] = cmd; args[1] = flags; if (cpath != NULL) { args[2] = cpath; args[3] = NULL; } else { args[2] = NULL; } execvp(args[0], args); fatal("failed to start '%s': %s", args[0], errno_s); } static void cli_buildopt_parse(const char *path) { FILE *fp; const char *env; struct buildopt *bopt; char buf[BUFSIZ], *p, *t; if ((fp = fopen(path, "r")) == NULL) fatal("cli_buildopt_parse: fopen(%s): %s", path, errno_s); bopt = NULL; while ((p = cli_read_line(fp, buf, sizeof(buf))) != NULL) { if (strlen(p) == 0) continue; if (bopt != NULL && !strcmp(p, "}")) { bopt = NULL; continue; } if (bopt == NULL) { if ((t = strchr(p, '=')) != NULL) goto parse_option; if ((t = strchr(p, ' ')) == NULL) fatal("unexpected '%s'", p); *(t)++ = '\0'; if (strcmp(t, "{")) fatal("expected '{', got '%s'", t); bopt = cli_buildopt_new(p); continue; } if ((t = strchr(p, '=')) == NULL) { printf("bad buildopt line: '%s'\n", p); continue; } parse_option: *(t)++ = '\0'; p = cli_text_trim(p, strlen(p)); t = cli_text_trim(t, strlen(t)); if (!strcasecmp(p, "cflags")) { cli_buildopt_cflags(bopt, t); } else if (!strcasecmp(p, "cxxflags")) { cli_buildopt_cxxflags(bopt, t); } else if (!strcasecmp(p, "ldflags")) { cli_buildopt_ldflags(bopt, t); } else if (!strcasecmp(p, "single_binary")) { cli_buildopt_single_binary(bopt, t); } else if (!strcasecmp(p, "kore_source")) { cli_buildopt_kore_source(bopt, t); } else if (!strcasecmp(p, "kore_flavor")) { cli_buildopt_kore_flavor(bopt, t); } else if (!strcasecmp(p, "mime_add")) { cli_buildopt_mime(bopt, t); } else { printf("ignoring unknown option '%s'\n", p); } } fclose(fp); if ((env = getenv("KORE_SOURCE")) != NULL) cli_buildopt_kore_source(NULL, env); if ((env = getenv("KORE_FLAVOR")) != NULL) cli_buildopt_kore_flavor(NULL, env); } static struct buildopt * cli_buildopt_new(const char *name) { struct buildopt *bopt; bopt = cli_malloc(sizeof(*bopt)); bopt->cflags = NULL; bopt->cxxflags = NULL; bopt->ldflags = NULL; bopt->flavor_nohttp = 0; bopt->single_binary = 0; bopt->kore_source = NULL; bopt->kore_flavor = NULL; bopt->name = cli_strdup(name); TAILQ_INSERT_TAIL(&build_options, bopt, list); return (bopt); } static struct buildopt * cli_buildopt_find(const char *name) { struct buildopt *bopt; TAILQ_FOREACH(bopt, &build_options, list) { if (!strcmp(bopt->name, name)) return (bopt); } return (NULL); } static struct buildopt * cli_buildopt_default(void) { struct buildopt *bopt; if ((bopt = cli_buildopt_find("_default")) == NULL) fatal("no _default buildopt options"); return (bopt); } static void cli_buildopt_cleanup(void) { struct buildopt *bopt, *next; struct mime_type *mime, *mnext; for (bopt = TAILQ_FIRST(&build_options); bopt != NULL; bopt = next) { next = TAILQ_NEXT(bopt, list); TAILQ_REMOVE(&build_options, bopt, list); if (bopt->cflags != NULL) cli_buf_free(bopt->cflags); if (bopt->cxxflags != NULL) cli_buf_free(bopt->cxxflags); if (bopt->ldflags != NULL) cli_buf_free(bopt->ldflags); if (bopt->kore_source != NULL) free(bopt->kore_source); if (bopt->kore_flavor != NULL) free(bopt->kore_flavor); free(bopt); } for (mime = TAILQ_FIRST(&mime_types); mime != NULL; mime = mnext) { mnext = TAILQ_NEXT(mime, list); TAILQ_REMOVE(&mime_types, mime, list); free(mime->type); free(mime->ext); free(mime); } } static void cli_buildopt_cflags(struct buildopt *bopt, const char *string) { if (bopt == NULL) bopt = cli_buildopt_default(); if (bopt->cflags == NULL) bopt->cflags = cli_buf_alloc(128); cli_buf_appendf(bopt->cflags, "%s ", string); } static void cli_buildopt_cxxflags(struct buildopt *bopt, const char *string) { if (bopt == NULL) bopt = cli_buildopt_default(); if (bopt->cxxflags == NULL) bopt->cxxflags = cli_buf_alloc(128); cli_buf_appendf(bopt->cxxflags, "%s ", string); } static void cli_buildopt_ldflags(struct buildopt *bopt, const char *string) { if (bopt == NULL) bopt = cli_buildopt_default(); if (bopt->ldflags == NULL) bopt->ldflags = cli_buf_alloc(128); cli_buf_appendf(bopt->ldflags, "%s ", string); } static void cli_buildopt_single_binary(struct buildopt *bopt, const char *string) { if (bopt == NULL) bopt = cli_buildopt_default(); else fatal("single_binary only supported in global context"); if (!strcmp(string, "yes")) bopt->single_binary = 1; else bopt->single_binary = 0; } static void cli_buildopt_kore_source(struct buildopt *bopt, const char *string) { if (bopt == NULL) bopt = cli_buildopt_default(); else fatal("kore_source only supported in global context"); if (bopt->kore_source != NULL) free(bopt->kore_source); bopt->kore_source = cli_strdup(string); } static void cli_buildopt_kore_flavor(struct buildopt *bopt, const char *string) { int cnt, i; char *p, *copy, *flavors[10]; if (bopt == NULL) bopt = cli_buildopt_default(); else fatal("kore_flavor only supported in global context"); if (bopt->kore_flavor != NULL) free(bopt->kore_flavor); copy = cli_strdup(string); cnt = cli_split_string(copy, " ", flavors, 10); for (i = 0; i < cnt; i++) { if ((p = strchr(flavors[i], '=')) == NULL) fatal("invalid flavor %s", string); *p = '\0'; if (!strcmp(flavors[i], "NOHTTP")) bopt->flavor_nohttp = 1; } bopt->kore_flavor = cli_strdup(string); free(copy); } static void cli_buildopt_mime(struct buildopt *bopt, const char *ext) { struct mime_type *mime; char *type; if (bopt == NULL) bopt = cli_buildopt_default(); else fatal("mime_add only supported in global context"); if ((type = strchr(ext, ':')) == NULL) fatal("no type given in %s", ext); *(type)++ = '\0'; TAILQ_FOREACH(mime, &mime_types, list) { if (!strcmp(mime->ext, ext)) fatal("duplicate extension %s found", ext); } mime = cli_malloc(sizeof(*mime)); mime->ext = cli_strdup(ext); mime->type = cli_strdup(type); TAILQ_INSERT_TAIL(&mime_types, mime, list); } static void cli_build_flags_common(struct buildopt *bopt, struct cli_buf *buf) { size_t len; char *data; cli_buf_appendf(buf, "-fPIC -Isrc -Isrc/includes "); if (bopt->single_binary == 0) cli_buf_appendf(buf, "-I%s/include ", prefix); else cli_buf_appendf(buf, "-I%s/include ", bopt->kore_source); #if defined(__MACH__) /* Add default openssl include path from homebrew / ports under OSX. */ cli_buf_appendf(buf, "-I/opt/local/include "); cli_buf_appendf(buf, "-I/usr/local/opt/openssl/include "); #endif if (bopt->single_binary == 0) { cli_kore_features(bopt, &data, &len); cli_buf_append(buf, data, len); cli_buf_appendf(buf, " "); free(data); } } static void cli_build_cflags(struct buildopt *bopt) { size_t len; struct buildopt *obopt; char *string, *buf, *env; if ((obopt = cli_buildopt_find(flavor)) == NULL) fatal("no such build flavor: %s", flavor); if (bopt->cflags == NULL) bopt->cflags = cli_buf_alloc(128); cli_build_flags_common(bopt, bopt->cflags); if (obopt != NULL && obopt->cflags != NULL) { cli_buf_append(bopt->cflags, obopt->cflags->data, obopt->cflags->offset); } if (bopt->single_binary) { cli_kore_features(bopt, &buf, &len); cli_buf_append(bopt->cflags, buf, len); cli_buf_appendf(bopt->cflags, " "); free(buf); } if ((env = getenv("CFLAGS")) != NULL) cli_buf_appendf(bopt->cflags, "%s", env); string = cli_buf_stringify(bopt->cflags, NULL); printf("CFLAGS=%s\n", string); cflags_count = cli_split_string(string, " ", cflags, CFLAGS_MAX); } static void cli_build_cxxflags(struct buildopt *bopt) { struct buildopt *obopt; char *string, *env; if ((obopt = cli_buildopt_find(flavor)) == NULL) fatal("no such build flavor: %s", flavor); if (bopt->cxxflags == NULL) bopt->cxxflags = cli_buf_alloc(128); cli_build_flags_common(bopt, bopt->cxxflags); if (obopt != NULL && obopt->cxxflags != NULL) { cli_buf_append(bopt->cxxflags, obopt->cxxflags->data, obopt->cxxflags->offset); } if ((env = getenv("CXXFLAGS")) != NULL) cli_buf_appendf(bopt->cxxflags, "%s", env); string = cli_buf_stringify(bopt->cxxflags, NULL); if (cxx_files_count > 0) printf("CXXFLAGS=%s\n", string); cxxflags_count = cli_split_string(string, " ", cxxflags, CXXFLAGS_MAX); } static void cli_build_ldflags(struct buildopt *bopt) { int fd; size_t len; struct buildopt *obopt; char *string, *buf, *env, *path; if ((obopt = cli_buildopt_find(flavor)) == NULL) fatal("no such build flavor: %s", flavor); if (bopt->ldflags == NULL) bopt->ldflags = cli_buf_alloc(128); if (bopt->single_binary == 0) { #if defined(__MACH__) cli_buf_appendf(bopt->ldflags, "-dynamiclib -undefined suppress -flat_namespace "); #else cli_buf_appendf(bopt->ldflags, "-shared "); #endif } else { (void)cli_vasprintf(&path, "%s/ldflags", object_dir); cli_file_open(path, O_RDONLY, &fd); cli_file_read(fd, &buf, &len); cli_file_close(fd); if (len == 0) fatal("ldflags is empty"); len--; cli_buf_append(bopt->ldflags, buf, len); cli_buf_appendf(bopt->ldflags, " "); free(buf); } if (obopt != NULL && obopt->ldflags != NULL) { cli_buf_append(bopt->ldflags, obopt->ldflags->data, obopt->ldflags->offset); } if ((env = getenv("LDFLAGS")) != NULL) cli_buf_appendf(bopt->ldflags, "%s", env); string = cli_buf_stringify(bopt->ldflags, NULL); printf("LDFLAGS=%s\n", string); ldflags_count = cli_split_string(string, " ", ldflags, LD_FLAGS_MAX); } static void cli_flavor_load(void) { FILE *fp; char buf[BUFSIZ], pwd[MAXPATHLEN], *p, *conf, *env; if ((env = getenv("KORE_BUILD_FLAVOR")) != NULL) { flavor = cli_strdup(env); return; } if (getcwd(pwd, sizeof(pwd)) == NULL) fatal("could not get cwd: %s", errno_s); appl = basename(pwd); if (appl == NULL) fatal("basename: %s", errno_s); appl = cli_strdup(appl); (void)cli_vasprintf(&conf, "conf/%s.conf", appl); if (!cli_dir_exists("conf") || !cli_file_exists(conf)) fatal("%s doesn't appear to be a kore app", appl); free(conf); if ((fp = fopen(".flavor", "r")) == NULL) { flavor = cli_strdup("dev"); return; } if (fgets(buf, sizeof(buf), fp) == NULL) fatal("failed to read flavor from file"); if ((p = strchr(buf, '\n')) != NULL) *p = '\0'; flavor = cli_strdup(buf); (void)fclose(fp); } static void cli_kore_features(struct buildopt *bopt, char **out, size_t *outlen) { int fd; size_t len; char *path, *data; if (bopt->single_binary) { (void)cli_vasprintf(&path, "%s/features", object_dir); } else { (void)cli_vasprintf(&path, "%s/share/kore/features", prefix); } cli_file_open(path, O_RDONLY, &fd); cli_file_read(fd, &data, &len); cli_file_close(fd); free(path); if (len == 0) fatal("features is empty"); len--; *out = data; *outlen = len; } static void cli_flavor_change(const char *name) { FILE *fp; int ret; struct buildopt *bopt; if ((bopt = cli_buildopt_find(name)) == NULL) fatal("no such flavor: %s", name); if ((fp = fopen(".flavor.tmp", "w")) == NULL) fatal("failed to open temporary file to save flavor"); ret = fprintf(fp, "%s\n", name); if (ret == -1 || (size_t)ret != (strlen(name) + 1)) fatal("failed to write new build flavor"); (void)fclose(fp); if (rename(".flavor.tmp", ".flavor") == -1) fatal("failed to replace build flavor"); cli_clean(0, NULL); } static void cli_spawn_proc(void (*cb)(void *), void *arg) { pid_t pid; int status; pid = fork(); switch (pid) { case -1: fatal("cli_compile_cfile: fork() %s", errno_s); /* NOTREACHED */ case 0: cb(arg); fatal("cli_spawn_proc: %s", errno_s); /* NOTREACHED */ default: break; } if (waitpid(pid, &status, 0) == -1) fatal("couldn't wait for child %d", pid); if (WEXITSTATUS(status) || WTERMSIG(status) || WCOREDUMP(status)) fatal("subprocess trouble, check output"); } static int cli_vasprintf(char **out, const char *fmt, ...) { int l; va_list args; va_start(args, fmt); l = vasprintf(out, fmt, args); va_end(args); if (l == -1) fatal("cli_vasprintf"); return (l); } static void cli_cleanup_files(const char *spath) { cli_find_files(spath, cli_file_remove); if (rmdir(spath) == -1 && errno != ENOENT) printf("couldn't rmdir %s\n", spath); } static void * cli_malloc(size_t len) { void *ptr; if ((ptr = calloc(1, len)) == NULL) fatal("calloc: %s", errno_s); return (ptr); } static void * cli_realloc(void *ptr, size_t len) { void *nptr; if ((nptr = realloc(ptr, len)) == NULL) fatal("realloc: %s", errno_s); return (nptr); } static char * cli_strdup(const char *string) { char *copy; if ((copy = strdup(string)) == NULL) fatal("strdup: %s", errno_s); return (copy); } struct cli_buf * cli_buf_alloc(size_t initial) { struct cli_buf *buf; buf = cli_malloc(sizeof(*buf)); if (initial > 0) buf->data = cli_malloc(initial); else buf->data = NULL; buf->length = initial; buf->offset = 0; return (buf); } void cli_buf_free(struct cli_buf *buf) { free(buf->data); buf->data = NULL; buf->offset = 0; buf->length = 0; free(buf); } void cli_buf_append(struct cli_buf *buf, const void *d, size_t len) { if ((buf->offset + len) < len) fatal("overflow in cli_buf_append"); if ((buf->offset + len) > buf->length) { buf->length += len; buf->data = cli_realloc(buf->data, buf->length); } memcpy((buf->data + buf->offset), d, len); buf->offset += len; } void cli_buf_appendv(struct cli_buf *buf, const char *fmt, va_list args) { int l; va_list copy; char *b, sb[BUFSIZ]; va_copy(copy, args); l = vsnprintf(sb, sizeof(sb), fmt, args); if (l == -1) fatal("cli_buf_appendv(): vsnprintf error"); if ((size_t)l >= sizeof(sb)) { l = vasprintf(&b, fmt, copy); if (l == -1) fatal("cli_buf_appendv(): error or truncation"); } else { b = sb; } cli_buf_append(buf, b, l); if (b != sb) free(b); va_end(copy); } void cli_buf_appendf(struct cli_buf *buf, const char *fmt, ...) { va_list args; va_start(args, fmt); cli_buf_appendv(buf, fmt, args); va_end(args); } char * cli_buf_stringify(struct cli_buf *buf, size_t *len) { char c; if (len != NULL) *len = buf->offset; c = '\0'; cli_buf_append(buf, &c, sizeof(c)); return ((char *)buf->data); } static int cli_split_string(char *input, const char *delim, char **out, size_t ele) { int count; char **ap; if (ele == 0) return (0); count = 0; for (ap = out; ap < &out[ele - 1] && (*ap = strsep(&input, delim)) != NULL;) { if (**ap != '\0') { ap++; count++; } } *ap = NULL; return (count); } static char * cli_read_line(FILE *fp, char *in, size_t len) { char *p, *t; if (fgets(in, len, fp) == NULL) return (NULL); p = in; in[strcspn(in, "\n")] = '\0'; while (isspace(*(unsigned char *)p)) p++; if (p[0] == '#' || p[0] == '\0') { p[0] = '\0'; return (p); } for (t = p; *t != '\0'; t++) { if (*t == '\t') *t = ' '; } return (p); } static char * cli_text_trim(char *string, size_t len) { char *end; if (len == 0) return (string); end = (string + len) - 1; while (isspace(*(unsigned char *)string) && string < end) string++; while (isspace(*(unsigned char *)end) && end > string) *(end)-- = '\0'; return (string); } static long long cli_strtonum(const char *str, long long min, long long max) { long long l; char *ep; if (min > max) fatal("cli_strtonum: min > max"); errno = 0; l = strtoll(str, &ep, 10); if (errno != 0 || str == ep || *ep != '\0') fatal("strtoll(): %s", errno_s); if (l < min) fatal("cli_strtonum: value < min"); if (l > max) fatal("cli_strtonum: value > max"); return (l); } static void fatal(const char *fmt, ...) { va_list args; char buf[2048]; va_start(args, fmt); (void)vsnprintf(buf, sizeof(buf), fmt, args); va_end(args); if (command != NULL) printf("kore %s: %s\n", command->name, buf); else printf("kore: %s\n", buf); exit(1); } kore-3.3.1/src/config.c000066400000000000000000001047571347522026400147010ustar00rootroot00000000000000/* * Copyright (c) 2013-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include #include #include #include #include #include #include #include "kore.h" #include "http.h" #if defined(KORE_USE_PGSQL) #include "pgsql.h" #endif #if defined(KORE_USE_TASKS) #include "tasks.h" #endif #if defined(KORE_USE_PYTHON) #include "python_api.h" #endif #if defined(KORE_USE_CURL) #include "curl.h" #endif /* XXX - This is becoming a clusterfuck. Fix it. */ static int configure_load(char *); #if defined(KORE_SINGLE_BINARY) static FILE *config_file_write(void); extern u_int8_t asset_builtin_kore_conf[]; extern u_int32_t asset_len_builtin_kore_conf; #endif static int configure_include(char *); static int configure_bind(char *); static int configure_bind_unix(char *); static int configure_domain(char *); static int configure_root(char *); static int configure_runas(char *); static int configure_workers(char *); static int configure_pidfile(char *); static int configure_rlimit_nofiles(char *); static int configure_max_connections(char *); static int configure_accept_threshold(char *); static int configure_death_policy(char *); static int configure_set_affinity(char *); static int configure_socket_backlog(char *); #if defined(KORE_USE_PLATFORM_PLEDGE) static int configure_add_pledge(char *); #endif #if !defined(KORE_NO_TLS) static int configure_rand_file(char *); static int configure_certfile(char *); static int configure_certkey(char *); static int configure_tls_version(char *); static int configure_tls_cipher(char *); static int configure_tls_dhparam(char *); static int configure_keymgr_root(char *); static int configure_keymgr_runas(char *); static int configure_client_verify(char *); static int configure_client_verify_depth(char *); #endif #if !defined(KORE_NO_HTTP) static int configure_filemap(char *); static int configure_restrict(char *); static int configure_handler(int, char *); static int configure_static_handler(char *); static int configure_dynamic_handler(char *); static int configure_accesslog(char *); static int configure_http_header_max(char *); static int configure_http_header_timeout(char *); static int configure_http_body_max(char *); static int configure_http_body_timeout(char *); static int configure_filemap_ext(char *); static int configure_filemap_index(char *); static int configure_http_media_type(char *); static int configure_http_hsts_enable(char *); static int configure_http_keepalive_time(char *); static int configure_http_request_ms(char *); static int configure_http_request_limit(char *); static int configure_http_body_disk_offload(char *); static int configure_http_body_disk_path(char *); static int configure_validator(char *); static int configure_params(char *); static int configure_validate(char *); static int configure_authentication(char *); static int configure_authentication_uri(char *); static int configure_authentication_type(char *); static int configure_authentication_value(char *); static int configure_authentication_validator(char *); static int configure_websocket_maxframe(char *); static int configure_websocket_timeout(char *); #endif #if defined(KORE_USE_PGSQL) static int configure_pgsql_conn_max(char *); static int configure_pgsql_queue_limit(char *); #endif #if defined(KORE_USE_TASKS) static int configure_task_threads(char *); #endif #if defined(KORE_USE_PYTHON) static int configure_python_path(char *); static int configure_python_import(char *); #endif #if defined(KORE_USE_CURL) static int configure_curl_timeout(char *); static int configure_curl_recv_max(char *); #endif static struct { const char *name; int (*configure)(char *); } config_names[] = { { "include", configure_include }, { "bind", configure_bind }, { "bind_unix", configure_bind_unix }, { "load", configure_load }, #if defined(KORE_USE_PYTHON) { "python_path", configure_python_path }, { "python_import", configure_python_import }, #endif { "root", configure_root }, { "chroot", configure_root }, { "domain", configure_domain }, { "runas", configure_runas }, { "workers", configure_workers }, { "worker_max_connections", configure_max_connections }, { "worker_rlimit_nofiles", configure_rlimit_nofiles }, { "worker_accept_threshold", configure_accept_threshold }, { "worker_death_policy", configure_death_policy }, { "worker_set_affinity", configure_set_affinity }, { "pidfile", configure_pidfile }, { "socket_backlog", configure_socket_backlog }, #if defined(KORE_USE_PLATFORM_PLEDGE) { "pledge", configure_add_pledge }, #endif #if !defined(KORE_NO_TLS) { "tls_version", configure_tls_version }, { "tls_cipher", configure_tls_cipher }, { "tls_dhparam", configure_tls_dhparam }, { "rand_file", configure_rand_file }, { "keymgr_runas", configure_keymgr_runas }, { "keymgr_root", configure_keymgr_root }, { "certfile", configure_certfile }, { "certkey", configure_certkey }, { "client_verify", configure_client_verify }, { "client_verify_depth", configure_client_verify_depth }, #endif #if !defined(KORE_NO_HTTP) { "filemap", configure_filemap }, { "filemap_ext", configure_filemap_ext }, { "filemap_index", configure_filemap_index }, { "static", configure_static_handler }, { "dynamic", configure_dynamic_handler }, { "accesslog", configure_accesslog }, { "restrict", configure_restrict }, { "http_media_type", configure_http_media_type }, { "http_header_max", configure_http_header_max }, { "http_header_timeout", configure_http_header_timeout }, { "http_body_max", configure_http_body_max }, { "http_body_timeout", configure_http_body_timeout }, { "http_hsts_enable", configure_http_hsts_enable }, { "http_keepalive_time", configure_http_keepalive_time }, { "http_request_ms", configure_http_request_ms }, { "http_request_limit", configure_http_request_limit }, { "http_body_disk_offload", configure_http_body_disk_offload }, { "http_body_disk_path", configure_http_body_disk_path }, { "validator", configure_validator }, { "params", configure_params }, { "validate", configure_validate }, { "authentication", configure_authentication }, { "authentication_uri", configure_authentication_uri }, { "authentication_type", configure_authentication_type }, { "authentication_value", configure_authentication_value }, { "authentication_validator", configure_authentication_validator }, { "websocket_maxframe", configure_websocket_maxframe }, { "websocket_timeout", configure_websocket_timeout }, #endif #if defined(KORE_USE_PGSQL) { "pgsql_conn_max", configure_pgsql_conn_max }, { "pgsql_queue_limit", configure_pgsql_queue_limit }, #endif #if defined(KORE_USE_TASKS) { "task_threads", configure_task_threads }, #endif #if defined(KORE_USE_CURL) { "curl_timeout", configure_curl_timeout }, { "curl_recv_max", configure_curl_recv_max }, #endif { NULL, NULL }, }; #if !defined(KORE_SINGLE_BINARY) char *config_file = NULL; #endif #if !defined(KORE_NO_HTTP) static u_int8_t current_method = 0; static int current_flags = 0; static struct kore_auth *current_auth = NULL; static struct kore_module_handle *current_handler = NULL; #endif extern const char *__progname; static struct kore_domain *current_domain = NULL; void kore_parse_config(void) { FILE *fp; char path[PATH_MAX]; #if !defined(KORE_SINGLE_BINARY) if ((fp = fopen(config_file, "r")) == NULL) fatal("configuration given cannot be opened: %s", config_file); #else fp = config_file_write(); #endif kore_parse_config_file(fp); (void)fclose(fp); if (!kore_module_loaded()) fatal("no application module was loaded"); if (kore_root_path == NULL) { if (getcwd(path, sizeof(path)) == NULL) fatal("getcwd: %s", errno_s); kore_root_path = kore_strdup(path); if (!kore_quiet) { kore_log(LOG_NOTICE, "privsep: no root path set, " "using working directory"); } } if (getuid() != 0 && skip_chroot == 0) { fatal("cannot chroot, use -n to skip it"); } if (skip_runas != 1 && kore_runas_user == NULL) { fatal("missing runas user, use -r to skip it"); } if (getuid() != 0 && skip_runas == 0) { fatal("cannot drop privileges, use -r to skip it"); } if (skip_runas) { if (!kore_quiet) kore_log(LOG_WARNING, "privsep: will not change user"); } else { #if !defined(KORE_NO_TLS) if (keymgr_runas_user == NULL) { if (!kore_quiet) { kore_log(LOG_NOTICE, "privsep: no keymgr_runas " "set, using 'runas` user"); } keymgr_runas_user = kore_strdup(kore_runas_user); } #endif } #if !defined(KORE_NO_TLS) if (keymgr_root_path == NULL) { if (!kore_quiet) { kore_log(LOG_NOTICE, "privsep: no keymgr_root set, " "using 'root` directory"); } keymgr_root_path = kore_strdup(kore_root_path); } #endif if (skip_chroot && !kore_quiet) kore_log(LOG_WARNING, "privsep: will not chroot"); } void kore_parse_config_file(FILE *fp) { int i, lineno; char buf[BUFSIZ], *p, *t; lineno = 1; while ((p = kore_read_line(fp, buf, sizeof(buf))) != NULL) { if (strlen(p) == 0) { lineno++; continue; } #if !defined(KORE_NO_HTTP) if (!strcmp(p, "}") && current_handler != NULL) { lineno++; current_flags = 0; current_method = 0; current_handler = NULL; continue; } if (!strcmp(p, "}") && current_auth != NULL) { if (current_auth->validator == NULL) { fatal("no authentication validator for %s", current_auth->name); } lineno++; current_auth = NULL; continue; } #endif if (!strcmp(p, "}") && current_domain != NULL) { #if !defined(KORE_NO_TLS) if (current_domain->certfile == NULL || current_domain->certkey == NULL) { fatal("incomplete TLS setup for '%s'", current_domain->domain); } #endif current_domain = NULL; } if (!strcmp(p, "}")) { lineno++; continue; } if ((t = strchr(p, ' ')) == NULL) { printf("ignoring \"%s\" on line %d\n", p, lineno++); continue; } *(t)++ = '\0'; p = kore_text_trim(p, strlen(p)); t = kore_text_trim(t, strlen(t)); if (strlen(p) == 0 || strlen(t) == 0) { printf("ignoring \"%s\" on line %d\n", p, lineno++); continue; } for (i = 0; config_names[i].name != NULL; i++) { if (!strcmp(config_names[i].name, p)) { if (config_names[i].configure(t)) break; fatal("configuration error on line %d", lineno); /* NOTREACHED */ } } if (config_names[i].name == NULL) printf("ignoring \"%s\" on line %d\n", p, lineno); lineno++; } } static int configure_include(char *path) { FILE *fp; if ((fp = fopen(path, "r")) == NULL) fatal("failed to open include '%s'", path); kore_parse_config_file(fp); (void)fclose(fp); return (KORE_RESULT_OK); } static int configure_bind(char *options) { char *argv[4]; kore_split_string(options, " ", argv, 4); if (argv[0] == NULL || argv[1] == NULL) return (KORE_RESULT_ERROR); return (kore_server_bind(argv[0], argv[1], argv[2])); } static int configure_bind_unix(char *options) { char *argv[3]; kore_split_string(options, " ", argv, 3); if (argv[0] == NULL) return (KORE_RESULT_ERROR); return (kore_server_bind_unix(argv[0], argv[1])); } static int configure_load(char *options) { char *argv[3]; kore_split_string(options, " ", argv, 3); if (argv[0] == NULL) return (KORE_RESULT_ERROR); kore_module_load(argv[0], argv[1], KORE_MODULE_NATIVE); return (KORE_RESULT_OK); } #if defined(KORE_SINGLE_BINARY) static FILE * config_file_write(void) { FILE *fp; ssize_t ret; int fd, len; char fpath[MAXPATHLEN]; len = snprintf(fpath, sizeof(fpath), "/tmp/%s.XXXXXX", __progname); if (len == -1 || (size_t)len >= sizeof(fpath)) fatal("failed to create temporary path"); if ((fd = mkstemp(fpath)) == -1) fatal("mkstemp(%s): %s", fpath, errno_s); (void)unlink(fpath); for (;;) { ret = write(fd, asset_builtin_kore_conf, asset_len_builtin_kore_conf); if (ret == -1) { if (errno == EINTR) continue; fatal("failed to write temporary config: %s", errno_s); } if ((size_t)ret != asset_len_builtin_kore_conf) fatal("failed to write temporary config"); break; } if ((fp = fdopen(fd, "w+")) == NULL) fatal("fdopen(): %s", errno_s); rewind(fp); return (fp); } #endif #if !defined(KORE_NO_TLS) static int configure_tls_version(char *version) { if (!strcmp(version, "1.3")) { tls_version = KORE_TLS_VERSION_1_3; } else if (!strcmp(version, "1.2")) { tls_version = KORE_TLS_VERSION_1_2; } else if (!strcmp(version, "both")) { tls_version = KORE_TLS_VERSION_BOTH; } else { printf("unknown value for tls_version: %s\n", version); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_tls_cipher(char *cipherlist) { if (strcmp(kore_tls_cipher_list, KORE_DEFAULT_CIPHER_LIST)) { printf("tls_cipher specified twice\n"); return (KORE_RESULT_ERROR); } kore_tls_cipher_list = kore_strdup(cipherlist); return (KORE_RESULT_OK); } static int configure_tls_dhparam(char *path) { BIO *bio; if (tls_dhparam != NULL) { printf("tls_dhparam specified twice\n"); return (KORE_RESULT_ERROR); } if ((bio = BIO_new_file(path, "r")) == NULL) { printf("%s did not exist\n", path); return (KORE_RESULT_ERROR); } tls_dhparam = PEM_read_bio_DHparams(bio, NULL, NULL, NULL); BIO_free(bio); if (tls_dhparam == NULL) { printf("PEM_read_bio_DHparams(): %s\n", ssl_errno_s); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_client_verify_depth(char *value) { int err, depth; if (current_domain == NULL) { printf("client_verify_depth not specified in domain context\n"); return (KORE_RESULT_ERROR); } depth = kore_strtonum(value, 10, 0, INT_MAX, &err); if (err != KORE_RESULT_OK) { printf("bad client_verify_depth value: %s\n", value); return (KORE_RESULT_ERROR); } current_domain->x509_verify_depth = depth; return (KORE_RESULT_OK); } static int configure_client_verify(char *options) { char *argv[3]; if (current_domain == NULL) { printf("client_verify not specified in domain context\n"); return (KORE_RESULT_ERROR); } kore_split_string(options, " ", argv, 3); if (argv[0] == NULL) { printf("client_verify is missing a parameter\n"); return (KORE_RESULT_ERROR); } if (current_domain->cafile != NULL) { printf("client_verify already set for %s\n", current_domain->domain); return (KORE_RESULT_ERROR); } current_domain->cafile = kore_strdup(argv[0]); if (argv[1] != NULL) current_domain->crlfile = kore_strdup(argv[1]); return (KORE_RESULT_OK); } static int configure_rand_file(char *path) { if (rand_file != NULL) kore_free(rand_file); rand_file = kore_strdup(path); return (KORE_RESULT_OK); } static int configure_certfile(char *path) { if (current_domain == NULL) { printf("certfile not specified in domain context\n"); return (KORE_RESULT_ERROR); } if (current_domain->certfile != NULL) { printf("certfile specified twice for %s\n", current_domain->domain); return (KORE_RESULT_ERROR); } current_domain->certfile = kore_strdup(path); return (KORE_RESULT_OK); } static int configure_certkey(char *path) { if (current_domain == NULL) { printf("certkey not specified in domain text\n"); return (KORE_RESULT_ERROR); } if (current_domain->certkey != NULL) { printf("certkey specified twice for %s\n", current_domain->domain); return (KORE_RESULT_ERROR); } current_domain->certkey = kore_strdup(path); return (KORE_RESULT_OK); } static int configure_keymgr_runas(char *user) { if (keymgr_runas_user != NULL) kore_free(keymgr_runas_user); keymgr_runas_user = kore_strdup(user); return (KORE_RESULT_OK); } static int configure_keymgr_root(char *root) { if (keymgr_root_path != NULL) kore_free(keymgr_root_path); keymgr_root_path = kore_strdup(root); return (KORE_RESULT_OK); } #endif /* !KORE_NO_TLS */ static int configure_domain(char *options) { char *argv[3]; if (current_domain != NULL) { printf("nested domain contexts are not allowed\n"); return (KORE_RESULT_ERROR); } kore_split_string(options, " ", argv, 3); if (strcmp(argv[1], "{")) { printf("domain context not opened correctly\n"); return (KORE_RESULT_ERROR); } if (strlen(argv[0]) >= KORE_DOMAINNAME_LEN - 1) { printf("domain name '%s' too long\n", argv[0]); return (KORE_RESULT_ERROR); } if (!kore_domain_new(argv[0])) { printf("could not create new domain %s\n", argv[0]); return (KORE_RESULT_ERROR); } current_domain = kore_domain_lookup(argv[0]); return (KORE_RESULT_OK); } #if !defined(KORE_NO_HTTP) static int configure_static_handler(char *options) { return (configure_handler(HANDLER_TYPE_STATIC, options)); } static int configure_dynamic_handler(char *options) { return (configure_handler(HANDLER_TYPE_DYNAMIC, options)); } static int configure_handler(int type, char *options) { char *argv[4]; if (current_domain == NULL) { printf("page handler not specified in domain context\n"); return (KORE_RESULT_ERROR); } kore_split_string(options, " ", argv, 4); if (argv[0] == NULL || argv[1] == NULL) { printf("missing parameters for page handler\n"); return (KORE_RESULT_ERROR); } if (!kore_module_handler_new(argv[0], current_domain->domain, argv[1], argv[2], type)) { printf("cannot create handler for %s\n", argv[0]); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_filemap(char *options) { char *argv[3]; if (current_domain == NULL) { printf("filemap outside of domain context\n"); return (KORE_RESULT_ERROR); } kore_split_string(options, " ", argv, 3); if (argv[0] == NULL || argv[1] == NULL) { printf("missing parameters for filemap\n"); return (KORE_RESULT_ERROR); } if (!kore_filemap_create(current_domain, argv[1], argv[0])) { printf("cannot create filemap for %s\n", argv[1]); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_accesslog(char *path) { if (current_domain == NULL) { kore_debug("accesslog not specified in domain context\n"); return (KORE_RESULT_ERROR); } if (current_domain->accesslog != -1) { printf("domain %s already has an open accesslog\n", current_domain->domain); return (KORE_RESULT_ERROR); } current_domain->accesslog = open(path, O_CREAT | O_APPEND | O_WRONLY, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); if (current_domain->accesslog == -1) { printf("accesslog open(%s): %s\n", path, errno_s); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_restrict(char *options) { struct kore_module_handle *hdlr; int i, cnt; char *argv[10]; if (current_domain == NULL) { printf("restrict not used in domain context\n"); return (KORE_RESULT_ERROR); } cnt = kore_split_string(options, " ", argv, 10); if (cnt < 2) { printf("bad restrict option '%s', missing methods\n", options); return (KORE_RESULT_ERROR); } hdlr = NULL; TAILQ_FOREACH(hdlr, &(current_domain->handlers), list) { if (!strcmp(hdlr->path, argv[0])) break; } if (hdlr == NULL) { printf("bad restrict option handler '%s' not found\n", argv[0]); return (KORE_RESULT_ERROR); } hdlr->methods = 0; for (i = 1; i < cnt; i++) { if (!strcasecmp(argv[i], "post")) { hdlr->methods |= HTTP_METHOD_POST; } else if (!strcasecmp(argv[i], "get")) { hdlr->methods |= HTTP_METHOD_GET; } else if (!strcasecmp(argv[i], "put")) { hdlr->methods |= HTTP_METHOD_PUT; } else if (!strcasecmp(argv[i], "delete")) { hdlr->methods |= HTTP_METHOD_DELETE; } else if (!strcasecmp(argv[i], "head")) { hdlr->methods |= HTTP_METHOD_HEAD; } else if (!strcasecmp(argv[i], "patch")) { hdlr->methods |= HTTP_METHOD_PATCH; } else { printf("unknown method: %s in restrict for %s\n", argv[i], argv[0]); return (KORE_RESULT_ERROR); } } return (KORE_RESULT_OK); } static int configure_filemap_ext(char *ext) { kore_free(kore_filemap_ext); kore_filemap_ext = kore_strdup(ext); return (KORE_RESULT_OK); } static int configure_filemap_index(char *index) { kore_free(kore_filemap_index); kore_filemap_index = kore_strdup(index); return (KORE_RESULT_OK); } static int configure_http_media_type(char *type) { int i; char *extensions, *ext[10]; extensions = strchr(type, ' '); if (extensions == NULL) { printf("bad http_media_type value: %s\n", type); return (KORE_RESULT_ERROR); } *(extensions)++ = '\0'; kore_split_string(extensions, " \t", ext, 10); for (i = 0; ext[i] != NULL; i++) { if (!http_media_register(ext[i], type)) { printf("duplicate extension found: %s\n", ext[i]); return (KORE_RESULT_ERROR); } } if (i == 0) { printf("missing extensions in: %s\n", type); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_http_header_max(char *option) { int err; http_header_max = kore_strtonum(option, 10, 1, 65535, &err); if (err != KORE_RESULT_OK) { printf("bad http_header_max value: %s\n", option); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_http_header_timeout(char *option) { int err; http_header_timeout = kore_strtonum(option, 10, 1, 65535, &err); if (err != KORE_RESULT_OK) { printf("bad http_header_timeout value: %s\n", option); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_http_body_max(char *option) { int err; http_body_max = kore_strtonum(option, 10, 0, LONG_MAX, &err); if (err != KORE_RESULT_OK) { printf("bad http_body_max value: %s\n", option); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_http_body_timeout(char *option) { int err; http_body_timeout = kore_strtonum(option, 10, 1, 65535, &err); if (err != KORE_RESULT_OK) { printf("bad http_body_timeout value: %s\n", option); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_http_body_disk_offload(char *option) { int err; http_body_disk_offload = kore_strtonum(option, 10, 0, LONG_MAX, &err); if (err != KORE_RESULT_OK) { printf("bad http_body_disk_offload value: %s\n", option); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_http_body_disk_path(char *path) { if (strcmp(http_body_disk_path, HTTP_BODY_DISK_PATH)) kore_free(http_body_disk_path); http_body_disk_path = kore_strdup(path); return (KORE_RESULT_OK); } static int configure_http_hsts_enable(char *option) { int err; http_hsts_enable = kore_strtonum(option, 10, 0, LONG_MAX, &err); if (err != KORE_RESULT_OK) { printf("bad http_hsts_enable value: %s\n", option); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_http_keepalive_time(char *option) { int err; http_keepalive_time = kore_strtonum(option, 10, 0, USHRT_MAX, &err); if (err != KORE_RESULT_OK) { printf("bad http_keepalive_time value: %s\n", option); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_http_request_ms(char *option) { int err; http_request_ms = kore_strtonum(option, 10, 0, UINT_MAX, &err); if (err != KORE_RESULT_OK) { printf("bad http_request_ms value: %s\n", option); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_http_request_limit(char *option) { int err; http_request_limit = kore_strtonum(option, 10, 0, UINT_MAX, &err); if (err != KORE_RESULT_OK) { printf("bad http_request_limit value: %s\n", option); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_validator(char *name) { u_int8_t type; char *tname, *value; if ((tname = strchr(name, ' ')) == NULL) { printf("missing validator name\n"); return (KORE_RESULT_ERROR); } *(tname)++ = '\0'; tname = kore_text_trim(tname, strlen(tname)); if ((value = strchr(tname, ' ')) == NULL) { printf("missing validator value\n"); return (KORE_RESULT_ERROR); } *(value)++ = '\0'; value = kore_text_trim(value, strlen(value)); if (!strcmp(tname, "regex")) { type = KORE_VALIDATOR_TYPE_REGEX; } else if (!strcmp(tname, "function")) { type = KORE_VALIDATOR_TYPE_FUNCTION; } else { printf("bad type for validator %s\n", tname); return (KORE_RESULT_ERROR); } if (!kore_validator_add(name, type, value)) { printf("bad validator specified: %s\n", tname); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_params(char *options) { struct kore_module_handle *hdlr; char *method, *argv[3]; if (current_domain == NULL) { printf("params not used in domain context\n"); return (KORE_RESULT_ERROR); } if (current_handler != NULL) { printf("previous params block not closed\n"); return (KORE_RESULT_ERROR); } kore_split_string(options, " ", argv, 3); if (argv[1] == NULL) return (KORE_RESULT_ERROR); if ((method = strchr(argv[0], ':')) != NULL) { *(method)++ = '\0'; if (!strcasecmp(argv[0], "qs")) { current_flags = KORE_PARAMS_QUERY_STRING; } else { printf("unknown prefix '%s' for '%s'\n", argv[0], argv[1]); return (KORE_RESULT_ERROR); } } else { method = argv[0]; } if (!strcasecmp(method, "post")) { current_method = HTTP_METHOD_POST; } else if (!strcasecmp(method, "get")) { current_method = HTTP_METHOD_GET; /* Let params get /foo {} imply qs:get automatically. */ current_flags |= KORE_PARAMS_QUERY_STRING; } else if (!strcasecmp(method, "put")) { current_method = HTTP_METHOD_PUT; } else if (!strcasecmp(method, "delete")) { current_method = HTTP_METHOD_DELETE; } else if (!strcasecmp(method, "head")) { current_method = HTTP_METHOD_HEAD; } else if (!strcasecmp(method, "patch")) { current_method = HTTP_METHOD_PATCH; } else { printf("unknown method: %s in params block for %s\n", method, argv[1]); return (KORE_RESULT_ERROR); } /* * Find the handler ourselves, otherwise the regex is applied * in case of a dynamic page. */ TAILQ_FOREACH(hdlr, &(current_domain->handlers), list) { if (!strcmp(hdlr->path, argv[1])) { current_handler = hdlr; return (KORE_RESULT_OK); } } printf("params for unknown page handler: %s\n", argv[1]); return (KORE_RESULT_ERROR); } static int configure_validate(char *options) { struct kore_handler_params *p; struct kore_validator *val; char *argv[3]; if (current_handler == NULL) { printf("validate not used in domain context\n"); return (KORE_RESULT_ERROR); } kore_split_string(options, " ", argv, 3); if (argv[1] == NULL) return (KORE_RESULT_ERROR); if ((val = kore_validator_lookup(argv[1])) == NULL) { printf("unknown validator %s for %s\n", argv[1], argv[0]); return (KORE_RESULT_ERROR); } p = kore_malloc(sizeof(*p)); p->validator = val; p->flags = current_flags; p->method = current_method; p->name = kore_strdup(argv[0]); TAILQ_INSERT_TAIL(&(current_handler->params), p, list); return (KORE_RESULT_OK); } static int configure_authentication(char *options) { char *argv[3]; if (current_auth != NULL) { printf("previous authentication block not closed\n"); return (KORE_RESULT_ERROR); } kore_split_string(options, " ", argv, 3); if (argv[1] == NULL) { printf("missing name for authentication block\n"); return (KORE_RESULT_ERROR); } if (strcmp(argv[1], "{")) { printf("missing { for authentication block\n"); return (KORE_RESULT_ERROR); } if (!kore_auth_new(argv[0])) return (KORE_RESULT_ERROR); current_auth = kore_auth_lookup(argv[0]); return (KORE_RESULT_OK); } static int configure_authentication_type(char *option) { if (current_auth == NULL) { printf("authentication_type outside authentication context\n"); return (KORE_RESULT_ERROR); } if (!strcmp(option, "cookie")) { current_auth->type = KORE_AUTH_TYPE_COOKIE; } else if (!strcmp(option, "header")) { current_auth->type = KORE_AUTH_TYPE_HEADER; } else if (!strcmp(option, "request")) { current_auth->type = KORE_AUTH_TYPE_REQUEST; } else { printf("unknown authentication type '%s'\n", option); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_authentication_value(char *option) { if (current_auth == NULL) { printf("authentication_value outside authentication context\n"); return (KORE_RESULT_ERROR); } if (current_auth->value != NULL) kore_free(current_auth->value); current_auth->value = kore_strdup(option); return (KORE_RESULT_OK); } static int configure_authentication_validator(char *validator) { struct kore_validator *val; if (current_auth == NULL) { printf("authentication_validator outside authentication\n"); return (KORE_RESULT_ERROR); } if ((val = kore_validator_lookup(validator)) == NULL) { printf("authentication validator '%s' not found\n", validator); return (KORE_RESULT_ERROR); } current_auth->validator = val; return (KORE_RESULT_OK); } static int configure_authentication_uri(char *uri) { if (current_auth == NULL) { printf("authentication_uri outside authentication context\n"); return (KORE_RESULT_ERROR); } if (current_auth->redirect != NULL) kore_free(current_auth->redirect); current_auth->redirect = kore_strdup(uri); return (KORE_RESULT_OK); } static int configure_websocket_maxframe(char *option) { int err; kore_websocket_maxframe = kore_strtonum64(option, 1, &err); if (err != KORE_RESULT_OK) { printf("bad kore_websocket_maxframe value: %s\n", option); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_websocket_timeout(char *option) { int err; kore_websocket_timeout = kore_strtonum64(option, 1, &err); if (err != KORE_RESULT_OK) { printf("bad kore_websocket_timeout value: %s\n", option); return (KORE_RESULT_ERROR); } kore_websocket_timeout = kore_websocket_timeout * 1000; return (KORE_RESULT_OK); } #endif /* !KORE_NO_HTTP */ static int configure_root(char *path) { if (kore_root_path != NULL) kore_free(kore_root_path); kore_root_path = kore_strdup(path); return (KORE_RESULT_OK); } static int configure_runas(char *user) { if (kore_runas_user != NULL) kore_free(kore_runas_user); kore_runas_user = kore_strdup(user); return (KORE_RESULT_OK); } static int configure_workers(char *option) { int err; worker_count = kore_strtonum(option, 10, 1, 255, &err); if (err != KORE_RESULT_OK) { printf("%s is not a valid worker number\n", option); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_pidfile(char *path) { if (strcmp(kore_pidfile, KORE_PIDFILE_DEFAULT)) kore_free(kore_pidfile); kore_pidfile = kore_strdup(path); return (KORE_RESULT_OK); } static int configure_max_connections(char *option) { int err; worker_max_connections = kore_strtonum(option, 10, 1, UINT_MAX, &err); if (err != KORE_RESULT_OK) { printf("bad value for worker_max_connections: %s\n", option); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_rlimit_nofiles(char *option) { int err; worker_rlimit_nofiles = kore_strtonum(option, 10, 1, UINT_MAX, &err); if (err != KORE_RESULT_OK) { printf("bad value for worker_rlimit_nofiles: %s\n", option); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_accept_threshold(char *option) { int err; worker_accept_threshold = kore_strtonum(option, 0, 1, UINT_MAX, &err); if (err != KORE_RESULT_OK) { printf("bad value for worker_accept_threshold: %s\n", option); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_death_policy(char *option) { if (!strcmp(option, "restart")) { worker_policy = KORE_WORKER_POLICY_RESTART; } else if (!strcmp(option, "terminate")) { worker_policy = KORE_WORKER_POLICY_TERMINATE; } else { printf("bad value for worker_death_policy: %s\n", option); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_set_affinity(char *option) { int err; worker_set_affinity = kore_strtonum(option, 10, 0, 1, &err); if (err != KORE_RESULT_OK) { printf("bad value for worker_set_affinity: %s\n", option); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_socket_backlog(char *option) { int err; kore_socket_backlog = kore_strtonum(option, 10, 0, UINT_MAX, &err); if (err != KORE_RESULT_OK) { printf("bad socket_backlog value: %s\n", option); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } #if defined(KORE_USE_PGSQL) static int configure_pgsql_conn_max(char *option) { int err; pgsql_conn_max = kore_strtonum(option, 10, 0, USHRT_MAX, &err); if (err != KORE_RESULT_OK) { printf("bad value for pgsql_conn_max: %s\n", option); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_pgsql_queue_limit(char *option) { int err; pgsql_queue_limit = kore_strtonum(option, 10, 0, UINT_MAX, &err); if (err != KORE_RESULT_OK) { printf("bad value for pgsql_queue_limit: %s\n", option); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } #endif #if defined(KORE_USE_TASKS) static int configure_task_threads(char *option) { int err; kore_task_threads = kore_strtonum(option, 10, 0, UCHAR_MAX, &err); if (err != KORE_RESULT_OK) { printf("bad value for task_threads: %s\n", option); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } #endif #if defined(KORE_USE_PYTHON) static int configure_python_path(char *path) { kore_python_path(path); return (KORE_RESULT_OK); } static int configure_python_import(char *module) { char *argv[3]; kore_split_string(module, " ", argv, 3); if (argv[0] == NULL) return (KORE_RESULT_ERROR); kore_module_load(argv[0], argv[1], KORE_MODULE_PYTHON); return (KORE_RESULT_OK); } #endif #if defined(KORE_USE_PLATFORM_PLEDGE) static int configure_add_pledge(char *pledge) { kore_platform_add_pledge(pledge); return (KORE_RESULT_OK); } #endif #if defined(KORE_USE_CURL) static int configure_curl_recv_max(char *option) { int err; kore_curl_recv_max = kore_strtonum64(option, 1, &err); if (err != KORE_RESULT_OK) { printf("bad curl_recv_max value: %s\n", option); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } static int configure_curl_timeout(char *option) { int err; kore_curl_timeout = kore_strtonum(option, 10, 0, USHRT_MAX, &err); if (err != KORE_RESULT_OK) { printf("bad kore_curl_timeout value: %s\n", option); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } #endif kore-3.3.1/src/connection.c000066400000000000000000000243531347522026400155640ustar00rootroot00000000000000/* * Copyright (c) 2013-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include #include #include "kore.h" #include "http.h" struct kore_pool connection_pool; struct connection_list connections; struct connection_list disconnected; void kore_connection_init(void) { u_int32_t elm; TAILQ_INIT(&connections); TAILQ_INIT(&disconnected); /* Add some overhead so we don't rollover for internal items. */ elm = worker_max_connections + 10; kore_pool_init(&connection_pool, "connection_pool", sizeof(struct connection), elm); } void kore_connection_cleanup(void) { kore_debug("connection_cleanup()"); /* Drop all connections */ kore_connection_prune(KORE_CONNECTION_PRUNE_ALL); kore_pool_cleanup(&connection_pool); } struct connection * kore_connection_new(void *owner) { struct connection *c; c = kore_pool_get(&connection_pool); #if !defined(KORE_NO_TLS) c->ssl = NULL; c->cert = NULL; c->tls_reneg = 0; #endif c->flags = 0; c->rnb = NULL; c->snb = NULL; c->owner = owner; c->handle = NULL; c->disconnect = NULL; c->hdlr_extra = NULL; c->proto = CONN_PROTO_UNKNOWN; c->idle_timer.start = 0; c->idle_timer.length = KORE_IDLE_TIMER_MAX; c->evt.type = KORE_TYPE_CONNECTION; c->evt.handle = kore_connection_event; #if !defined(KORE_NO_HTTP) c->ws_connect = NULL; c->ws_message = NULL; c->ws_disconnect = NULL; c->http_start = kore_time_ms(); c->http_timeout = http_header_timeout * 1000; TAILQ_INIT(&(c->http_requests)); #endif TAILQ_INIT(&(c->send_queue)); return (c); } int kore_connection_accept(struct listener *listener, struct connection **out) { struct connection *c; struct sockaddr *s; socklen_t len; kore_debug("kore_connection_accept(%p)", listener); *out = NULL; c = kore_connection_new(listener); c->family = listener->family; switch (c->family) { case AF_INET: len = sizeof(struct sockaddr_in); s = (struct sockaddr *)&(c->addr.ipv4); break; case AF_INET6: len = sizeof(struct sockaddr_in6); s = (struct sockaddr *)&(c->addr.ipv6); break; case AF_UNIX: len = sizeof(struct sockaddr_un); s = (struct sockaddr *)&(c->addr.sun); break; default: fatal("unknown family type %d", c->family); } if ((c->fd = accept(listener->fd, s, &len)) == -1) { kore_pool_put(&connection_pool, c); kore_debug("accept(): %s", errno_s); return (KORE_RESULT_ERROR); } if (!kore_connection_nonblock(c->fd, listener->family != AF_UNIX)) { close(c->fd); kore_pool_put(&connection_pool, c); return (KORE_RESULT_ERROR); } if (fcntl(c->fd, F_SETFD, FD_CLOEXEC) == -1) { close(c->fd); kore_pool_put(&connection_pool, c); return (KORE_RESULT_ERROR); } c->handle = kore_connection_handle; TAILQ_INSERT_TAIL(&connections, c, list); #if !defined(KORE_NO_TLS) c->state = CONN_STATE_TLS_SHAKE; c->write = net_write_tls; c->read = net_read_tls; #else c->state = CONN_STATE_ESTABLISHED; c->write = net_write; c->read = net_read; if (listener->connect != NULL) { kore_runtime_connect(listener->connect, c); } else { #if !defined(KORE_NO_HTTP) c->proto = CONN_PROTO_HTTP; if (http_keepalive_time != 0) c->idle_timer.length = http_keepalive_time * 1000; net_recv_queue(c, http_header_max, NETBUF_CALL_CB_ALWAYS, http_header_recv); #endif } #endif kore_connection_start_idletimer(c); worker_active_connections++; *out = c; return (KORE_RESULT_OK); } void kore_connection_check_timeout(u_int64_t now) { struct connection *c, *next; for (c = TAILQ_FIRST(&connections); c != NULL; c = next) { next = TAILQ_NEXT(c, list); if (c->proto == CONN_PROTO_MSG) continue; #if !defined(KORE_NO_HTTP) if (!http_check_timeout(c, now)) continue; if (!TAILQ_EMPTY(&c->http_requests)) continue; #endif if (c->flags & CONN_IDLE_TIMER_ACT) kore_connection_check_idletimer(now, c); } } void kore_connection_prune(int all) { struct connection *c, *cnext; if (all) { for (c = TAILQ_FIRST(&connections); c != NULL; c = cnext) { cnext = TAILQ_NEXT(c, list); net_send_flush(c); kore_connection_disconnect(c); } } for (c = TAILQ_FIRST(&disconnected); c != NULL; c = cnext) { cnext = TAILQ_NEXT(c, list); TAILQ_REMOVE(&disconnected, c, list); kore_connection_remove(c); } } void kore_connection_disconnect(struct connection *c) { if (c->state != CONN_STATE_DISCONNECTING) { kore_debug("preparing %p for disconnection", c); c->state = CONN_STATE_DISCONNECTING; if (c->disconnect) c->disconnect(c); TAILQ_REMOVE(&connections, c, list); TAILQ_INSERT_TAIL(&disconnected, c, list); } } void kore_connection_event(void *arg, int error) { struct connection *c = arg; if (error) { kore_connection_disconnect(c); return; } if (!c->handle(c)) kore_connection_disconnect(c); } int kore_connection_handle(struct connection *c) { #if !defined(KORE_NO_TLS) int r; struct listener *listener; char cn[X509_CN_LENGTH]; #endif kore_debug("kore_connection_handle(%p) -> %d", c, c->state); kore_connection_stop_idletimer(c); switch (c->state) { #if !defined(KORE_NO_TLS) case CONN_STATE_TLS_SHAKE: if (primary_dom->ssl_ctx == NULL) { kore_log(LOG_NOTICE, "TLS configuration for %s not yet complete", primary_dom->domain); return (KORE_RESULT_ERROR); } if (c->ssl == NULL) { c->ssl = SSL_new(primary_dom->ssl_ctx); if (c->ssl == NULL) { kore_debug("SSL_new(): %s", ssl_errno_s); return (KORE_RESULT_ERROR); } SSL_set_fd(c->ssl, c->fd); SSL_set_accept_state(c->ssl); SSL_set_app_data(c->ssl, c); } ERR_clear_error(); r = SSL_accept(c->ssl); if (r <= 0) { r = SSL_get_error(c->ssl, r); switch (r) { case SSL_ERROR_WANT_READ: case SSL_ERROR_WANT_WRITE: kore_connection_start_idletimer(c); return (KORE_RESULT_OK); default: kore_debug("SSL_accept(): %s", ssl_errno_s); return (KORE_RESULT_ERROR); } } if (SSL_get_verify_mode(c->ssl) & SSL_VERIFY_PEER) { c->cert = SSL_get_peer_certificate(c->ssl); if (c->cert == NULL) { kore_log(LOG_NOTICE, "no client certificate presented?"); return (KORE_RESULT_ERROR); } if (X509_GET_CN(c->cert, cn, sizeof(cn)) == -1) { kore_log(LOG_NOTICE, "no CN found in client certificate"); return (KORE_RESULT_ERROR); } } else { c->cert = NULL; } if (c->owner != NULL) { listener = (struct listener *)c->owner; if (listener->connect != NULL) { kore_runtime_connect(listener->connect, c); kore_connection_start_idletimer(c); return (KORE_RESULT_OK); } } #if !defined(KORE_NO_HTTP) c->proto = CONN_PROTO_HTTP; if (http_keepalive_time != 0) { c->idle_timer.length = http_keepalive_time * 1000; } net_recv_queue(c, http_header_max, NETBUF_CALL_CB_ALWAYS, http_header_recv); #endif c->state = CONN_STATE_ESTABLISHED; /* FALLTHROUGH */ #endif /* !KORE_NO_TLS */ case CONN_STATE_ESTABLISHED: if (c->evt.flags & KORE_EVENT_READ) { if (!net_recv_flush(c)) return (KORE_RESULT_ERROR); } if (c->evt.flags & KORE_EVENT_WRITE) { if (!net_send_flush(c)) return (KORE_RESULT_ERROR); } break; case CONN_STATE_DISCONNECTING: break; default: kore_debug("unknown state on %d (%d)", c->fd, c->state); break; } kore_connection_start_idletimer(c); return (KORE_RESULT_OK); } void kore_connection_remove(struct connection *c) { struct netbuf *nb, *next; #if !defined(KORE_NO_HTTP) struct http_request *req, *rnext; #endif kore_debug("kore_connection_remove(%p)", c); #if !defined(KORE_NO_TLS) if (c->ssl != NULL) { SSL_shutdown(c->ssl); SSL_free(c->ssl); } if (c->cert != NULL) X509_free(c->cert); #endif close(c->fd); if (c->hdlr_extra != NULL) kore_free(c->hdlr_extra); #if !defined(KORE_NO_HTTP) for (req = TAILQ_FIRST(&(c->http_requests)); req != NULL; req = rnext) { rnext = TAILQ_NEXT(req, olist); TAILQ_REMOVE(&(c->http_requests), req, olist); req->owner = NULL; req->flags |= HTTP_REQUEST_DELETE; http_request_wakeup(req); } kore_free(c->ws_connect); kore_free(c->ws_message); kore_free(c->ws_disconnect); #endif for (nb = TAILQ_FIRST(&(c->send_queue)); nb != NULL; nb = next) { next = TAILQ_NEXT(nb, list); nb->flags &= ~NETBUF_MUST_RESEND; net_remove_netbuf(c, nb); } if (c->rnb != NULL) { kore_free(c->rnb->buf); kore_pool_put(&nb_pool, c->rnb); } kore_pool_put(&connection_pool, c); worker_active_connections--; } void kore_connection_check_idletimer(u_int64_t now, struct connection *c) { u_int64_t d; if (now > c->idle_timer.start) d = now - c->idle_timer.start; else d = 0; if (d >= c->idle_timer.length) { kore_debug("%p idle for %" PRIu64 " ms, expiring", c, d); kore_connection_disconnect(c); } } void kore_connection_start_idletimer(struct connection *c) { kore_debug("kore_connection_start_idletimer(%p)", c); c->flags |= CONN_IDLE_TIMER_ACT; c->idle_timer.start = kore_time_ms(); } void kore_connection_stop_idletimer(struct connection *c) { kore_debug("kore_connection_stop_idletimer(%p)", c); c->flags &= ~CONN_IDLE_TIMER_ACT; c->idle_timer.start = 0; } int kore_connection_nonblock(int fd, int nodelay) { int flags; kore_debug("kore_connection_nonblock(%d)", fd); if ((flags = fcntl(fd, F_GETFL, 0)) == -1) { kore_debug("fcntl(): F_GETFL %s", errno_s); return (KORE_RESULT_ERROR); } flags |= O_NONBLOCK; if (fcntl(fd, F_SETFL, flags) == -1) { kore_debug("fcntl(): F_SETFL %s", errno_s); return (KORE_RESULT_ERROR); } if (nodelay) { if (!kore_sockopt(fd, IPPROTO_TCP, TCP_NODELAY)) { kore_log(LOG_NOTICE, "failed to set TCP_NODELAY on %d", fd); } } return (KORE_RESULT_OK); } kore-3.3.1/src/curl.c000066400000000000000000000347601347522026400143750ustar00rootroot00000000000000/* * Copyright (c) 2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include "kore.h" #include "http.h" #include "curl.h" #define FD_CACHE_BUCKETS 2048 struct fd_cache { struct kore_event evt; int fd; int scheduled; LIST_ENTRY(fd_cache) list; }; static void curl_process(void); static void curl_event_handle(void *, int); static int curl_timer(CURLM *, long, void *); static int curl_socket(CURL *, curl_socket_t, int, void *, void *); static struct fd_cache *fd_cache_get(int); static int running = 0; static CURLM *multi = NULL; static struct kore_timer *timer = NULL; static struct kore_pool fd_cache_pool; static char user_agent[64]; static LIST_HEAD(, fd_cache) cache[FD_CACHE_BUCKETS]; u_int16_t kore_curl_timeout = KORE_CURL_TIMEOUT; u_int64_t kore_curl_recv_max = KORE_CURL_RECV_MAX; void kore_curl_sysinit(void) { CURLMcode res; int i, len; if (curl_global_init(CURL_GLOBAL_ALL)) fatal("failed to initialize libcurl"); if ((multi = curl_multi_init()) == NULL) fatal("curl_multi_init(): failed"); /* XXX - make configurable? */ curl_multi_setopt(multi, CURLMOPT_MAXCONNECTS, 500); if ((res = curl_multi_setopt(multi, CURLMOPT_SOCKETFUNCTION, curl_socket)) != CURLM_OK) fatal("curl_multi_setopt: %s", curl_multi_strerror(res)); if ((res = curl_multi_setopt(multi, CURLMOPT_TIMERFUNCTION, curl_timer)) != CURLM_OK) fatal("curl_multi_setopt: %s", curl_multi_strerror(res)); for (i = 0; i < FD_CACHE_BUCKETS; i++) LIST_INIT(&cache[i]); kore_pool_init(&fd_cache_pool, "fd_cache_pool", 100, sizeof(struct fd_cache)); len = snprintf(user_agent, sizeof(user_agent), "kore/%s", kore_version); if (len == -1 || (size_t)len >= sizeof(user_agent)) fatal("user-agent string too long"); } int kore_curl_init(struct kore_curl *client, const char *url) { CURL *handle; memset(client, 0, sizeof(*client)); TAILQ_INIT(&client->http.resp_hdrs); if ((handle = curl_easy_init()) == NULL) return (KORE_RESULT_ERROR); curl_easy_setopt(handle, CURLOPT_WRITEDATA, &client->response); curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, kore_curl_tobuf); curl_easy_setopt(handle, CURLOPT_URL, url); curl_easy_setopt(handle, CURLOPT_NOSIGNAL, 1); curl_easy_setopt(handle, CURLOPT_PRIVATE, client); curl_easy_setopt(handle, CURLOPT_USERAGENT, user_agent); curl_easy_setopt(handle, CURLOPT_TIMEOUT, kore_curl_timeout); curl_easy_setopt(handle, CURLOPT_ERRORBUFFER, client->errbuf); client->handle = handle; client->url = kore_strdup(url); client->type = KORE_CURL_TYPE_CUSTOM; return (KORE_RESULT_OK); } void kore_curl_cleanup(struct kore_curl *client) { struct http_header *hdr, *next; kore_free(client->url); if (client->flags & KORE_CURL_FLAG_BOUND) LIST_REMOVE(client, list); if (client->handle != NULL) { curl_multi_remove_handle(multi, client->handle); curl_easy_cleanup(client->handle); } if (client->http.hdrlist != NULL) curl_slist_free_all(client->http.hdrlist); if (client->response != NULL) kore_buf_free(client->response); if (client->http.headers != NULL) kore_buf_free(client->http.headers); if (client->http.tosend != NULL) kore_buf_free(client->http.tosend); for (hdr = TAILQ_FIRST(&client->http.resp_hdrs); hdr != NULL; hdr = next) { next = TAILQ_NEXT(hdr, list); TAILQ_REMOVE(&client->http.resp_hdrs, hdr, list); kore_pool_put(&http_header_pool, hdr); } } size_t kore_curl_tobuf(char *ptr, size_t size, size_t nmemb, void *udata) { size_t len; struct kore_buf **buf, *b; if (SIZE_MAX / nmemb < size) fatal("%s: %zu * %zu overflow", __func__, nmemb, size); buf = udata; len = size * nmemb; if (*buf == NULL) *buf = kore_buf_alloc(len); b = *buf; if (b->offset + len < b->offset) fatal("%s: %zu+%zu overflows", __func__, b->offset, len); if ((b->offset + len) > kore_curl_recv_max) { kore_log(LOG_ERR, "received too large transfer (%zu > %" PRIu64 ")", b->offset + len, kore_curl_recv_max); return (0); } kore_buf_append(b, ptr, len); return (len); } size_t kore_curl_frombuf(char *ptr, size_t size, size_t nmemb, void *udata) { size_t len; struct kore_buf *buf; if (SIZE_MAX / nmemb < size) fatal("%s: %zu * %zu overflow", __func__, nmemb, size); buf = udata; len = size * nmemb; if (buf->offset == buf->length) return (0); if (buf->offset + len < buf->offset) fatal("%s: %zu+%zu overflows", __func__, buf->offset, len); if ((buf->offset + len) < buf->length) { memcpy(ptr, buf->data + buf->offset, len); } else { len = buf->length - buf->offset; memcpy(ptr, buf->data + buf->offset, len); } buf->offset += len; return (len); } void kore_curl_bind_request(struct kore_curl *client, struct http_request *req) { if (client->cb != NULL) fatal("%s: already bound to callback", __func__); client->req = req; http_request_sleep(req); client->flags |= KORE_CURL_FLAG_BOUND; LIST_INSERT_HEAD(&req->chandles, client, list); } void kore_curl_bind_callback(struct kore_curl *client, void (*cb)(struct kore_curl *, void *), void *arg) { if (client->req != NULL) fatal("%s: already bound to request", __func__); client->cb = cb; client->arg = arg; } void kore_curl_run(struct kore_curl *client) { curl_multi_add_handle(multi, client->handle); } int kore_curl_success(struct kore_curl *client) { return (client->result == CURLE_OK); } const char * kore_curl_strerror(struct kore_curl *client) { const char *err; if (client->errbuf[0] != '\0') err = &client->errbuf[0]; else err = curl_easy_strerror(client->result); return (err); } void kore_curl_logerror(struct kore_curl *client) { kore_log(LOG_NOTICE, "curl error: %s -> %s", client->url, kore_curl_strerror(client)); } void kore_curl_response_as_bytes(struct kore_curl *client, const u_int8_t **body, size_t *len) { if (client->response == NULL) { *len = 0; *body = NULL; } else { *len = client->response->offset; *body = client->response->data; } } char * kore_curl_response_as_string(struct kore_curl *client) { kore_buf_stringify(client->response, NULL); return ((char *)client->response->data); } void kore_curl_http_setup(struct kore_curl *client, int method, const void *data, size_t len) { const char *mname; int has_body; if (client->handle == NULL) fatal("%s: called without setup", __func__); mname = NULL; has_body = 1; client->type = KORE_CURL_TYPE_HTTP_CLIENT; curl_easy_setopt(client->handle, CURLOPT_HEADERDATA, &client->http.headers); curl_easy_setopt(client->handle, CURLOPT_HEADERFUNCTION, kore_curl_tobuf); kore_curl_http_set_header(client, "expect", ""); switch (method) { case HTTP_METHOD_GET: break; case HTTP_METHOD_HEAD: curl_easy_setopt(client->handle, CURLOPT_NOBODY, 1); break; case HTTP_METHOD_DELETE: case HTTP_METHOD_OPTIONS: break; case HTTP_METHOD_PUT: has_body = 1; curl_easy_setopt(client->handle, CURLOPT_UPLOAD, 1); break; case HTTP_METHOD_PATCH: mname = http_method_text(method); /* fallthrough */ case HTTP_METHOD_POST: has_body = 1; curl_easy_setopt(client->handle, CURLOPT_POST, 1); break; default: fatal("%s: unknown method %d", __func__, method); } if (has_body && data != NULL && len > 0) { client->http.tosend = kore_buf_alloc(len); kore_buf_append(client->http.tosend, data, len); kore_buf_reset(client->http.tosend); curl_easy_setopt(client->handle, CURLOPT_READDATA, client->http.tosend); curl_easy_setopt(client->handle, CURLOPT_READFUNCTION, kore_curl_frombuf); } if (has_body) { if (method == HTTP_METHOD_PUT) { curl_easy_setopt(client->handle, CURLOPT_INFILESIZE_LARGE, (curl_off_t)len); } else { curl_easy_setopt(client->handle, CURLOPT_POSTFIELDSIZE_LARGE, (curl_off_t)len); } } else { if (data != NULL || len != 0) { fatal("%s: %d should not have a body", __func__, method); } } if (mname != NULL) curl_easy_setopt(client->handle, CURLOPT_CUSTOMREQUEST, mname); } void kore_curl_http_set_header(struct kore_curl *client, const char *header, const char *value) { struct kore_buf buf; const char *hdr; kore_buf_init(&buf, 512); if (value != NULL || *value != '\0') { kore_buf_appendf(&buf, "%s: %s", header, value); } else { kore_buf_appendf(&buf, "%s:", header); } hdr = kore_buf_stringify(&buf, NULL); client->http.hdrlist = curl_slist_append(client->http.hdrlist, hdr); kore_buf_cleanup(&buf); curl_easy_setopt(client->handle, CURLOPT_HTTPHEADER, client->http.hdrlist); } int kore_curl_http_get_header(struct kore_curl *client, const char *header, const char **out) { struct http_header *hdr; if (!(client->flags & KORE_CURL_FLAG_HTTP_PARSED_HEADERS)) kore_curl_http_parse_headers(client); TAILQ_FOREACH(hdr, &(client->http.resp_hdrs), list) { if (!strcasecmp(hdr->header, header)) { *out = hdr->value; return (KORE_RESULT_OK); } } return (KORE_RESULT_ERROR); } void kore_curl_http_parse_headers(struct kore_curl *client) { struct http_header *hdr; int i, cnt; char *value, *hbuf, *headers[HTTP_REQ_HEADER_MAX]; if (client->flags & KORE_CURL_FLAG_HTTP_PARSED_HEADERS) fatal("%s: headers already parsed", __func__); client->flags |= KORE_CURL_FLAG_HTTP_PARSED_HEADERS; if (client->http.headers == NULL) return; hbuf = kore_buf_stringify(client->http.headers, NULL); cnt = kore_split_string(hbuf, "\r\n", headers, HTTP_REQ_HEADER_MAX); for (i = 0; i < cnt; i++) { if ((value = http_validate_header(headers[i])) == NULL) continue; if (*value == '\0') continue; hdr = kore_pool_get(&http_header_pool); hdr->header = headers[i]; hdr->value = value; TAILQ_INSERT_TAIL(&(client->http.resp_hdrs), hdr, list); } } static int curl_socket(CURL *easy, curl_socket_t fd, int action, void *arg, void *sock) { CURLcode res; struct fd_cache *fdc; struct kore_curl *client; client = NULL; res = curl_easy_getinfo(easy, CURLINFO_PRIVATE, (char **)&client); if (res != CURLE_OK) fatal("curl_easy_getinfo: %s", curl_easy_strerror(res)); if (client == NULL) fatal("%s: failed to get client context", __func__); fdc = fd_cache_get(fd); switch (action) { case CURL_POLL_NONE: break; case CURL_POLL_IN: case CURL_POLL_OUT: case CURL_POLL_INOUT: if (fdc->scheduled == 0) { kore_platform_event_all(fd, fdc); fdc->scheduled = 1; } break; case CURL_POLL_REMOVE: if (fdc->scheduled) { fdc->evt.flags = 0; fdc->scheduled = 0; kore_platform_disable_read(fd); #if !defined(__linux__) kore_platform_disable_write(fd); #endif } break; default: fatal("unknown action value: %d", action); } /* * XXX - libcurl hates edge triggered io. */ if (action == CURL_POLL_OUT || action == CURL_POLL_INOUT) { if (fdc->evt.flags & KORE_EVENT_WRITE) { if (fdc->scheduled) { kore_platform_disable_read(fdc->fd); #if !defined(__linux__) kore_platform_disable_write(fdc->fd); #endif } fdc->evt.flags = 0; kore_platform_event_all(fdc->fd, fdc); } } return (CURLM_OK); } static void curl_process(void) { CURLcode res; CURLMsg *msg; CURL *handle; struct kore_curl *client; int pending; pending = 0; while ((msg = curl_multi_info_read(multi, &pending)) != NULL) { if (msg->msg != CURLMSG_DONE) continue; handle = msg->easy_handle; res = curl_easy_getinfo(handle, CURLINFO_PRIVATE, (char **)&client); if (res != CURLE_OK) fatal("curl_easy_getinfo: %s", curl_easy_strerror(res)); if (client == NULL) fatal("%s: failed to get client context", __func__); client->result = msg->data.result; if (client->type == KORE_CURL_TYPE_HTTP_CLIENT) { curl_easy_getinfo(client->handle, CURLINFO_RESPONSE_CODE, &client->http.status); } curl_multi_remove_handle(multi, client->handle); curl_easy_cleanup(client->handle); client->handle = NULL; if (client->req != NULL) http_request_wakeup(client->req); else if (client->cb != NULL) client->cb(client, client->arg); } } static void curl_timeout(void *uarg, u_int64_t now) { CURLMcode res; timer = NULL; res = curl_multi_socket_action(multi, CURL_SOCKET_TIMEOUT, 0, &running); if (res != CURLM_OK) fatal("curl_multi_socket_action: %s", curl_multi_strerror(res)); curl_process(); } static int curl_timer(CURLM *mctx, long timeout, void *arg) { if (timeout < 0) { if (timer != NULL) { kore_timer_remove(timer); timer = NULL; } return (CURLM_OK); } if (timer != NULL) { kore_timer_remove(timer); timer = NULL; } if (timeout == 0) timeout = 10; timer = kore_timer_add(curl_timeout, timeout, mctx, KORE_TIMER_ONESHOT); return (CURLM_OK); } static void curl_event_handle(void *arg, int eof) { CURLMcode res; int flags; ssize_t bytes; char buf[32]; struct fd_cache *fdc = arg; flags = 0; if (fdc->evt.flags & KORE_EVENT_READ) flags |= CURL_CSELECT_IN; if (fdc->evt.flags & KORE_EVENT_WRITE) flags |= CURL_CSELECT_OUT; if (eof) flags |= CURL_CSELECT_ERR; res = curl_multi_socket_action(multi, fdc->fd, flags, &running); if (res != CURLM_OK) fatal("curl_multi_socket_action: %s", curl_multi_strerror(res)); /* * XXX - libcurl doesn't work with edge triggered i/o so check * if we need to reprime the event. Not optimal. */ if (fdc->evt.flags & KORE_EVENT_READ) { bytes = recv(fdc->fd, buf, sizeof(buf), MSG_PEEK); if (bytes > 0) { if (fdc->scheduled) { kore_platform_disable_read(fdc->fd); #if !defined(__linux__) kore_platform_disable_write(fdc->fd); #endif } fdc->evt.flags = 0; kore_platform_event_all(fdc->fd, fdc); } } curl_process(); } static struct fd_cache * fd_cache_get(int fd) { struct fd_cache *fdc; int bucket; bucket = fd % FD_CACHE_BUCKETS; LIST_FOREACH(fdc, &cache[bucket], list) { if (fdc->fd == fd) return (fdc); } fdc = kore_pool_get(&fd_cache_pool); fdc->fd = fd; fdc->scheduled = 0; fdc->evt.flags = 0; fdc->evt.handle = curl_event_handle; fdc->evt.type = KORE_TYPE_CURL_HANDLE; LIST_INSERT_HEAD(&cache[bucket], fdc, list); return (fdc); } kore-3.3.1/src/domain.c000066400000000000000000000537651347522026400147050ustar00rootroot00000000000000/* * Copyright (c) 2013-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * XXX - Lots of OPENSSL ifdefs here for 1.0.2 and 1.1.0 release lines. * The idea is to only support 1.1.1 down the line and remove the rest. * (although we have to remain compat with 1.0.2 due to LibreSSL). */ #include #include #if !defined(KORE_NO_TLS) #include #include #include #include #include #include #endif #include #include "kore.h" #if !defined(KORE_NO_HTTP) #include "http.h" #endif #define KORE_DOMAIN_CACHE 16 #define SSL_SESSION_ID "kore_ssl_sessionid" struct kore_domain_h domains; struct kore_domain *primary_dom = NULL; #if !defined(KORE_NO_TLS) static u_int8_t keymgr_buf[2048]; static size_t keymgr_buflen = 0; static int keymgr_response = 0; DH *tls_dhparam = NULL; int tls_version = KORE_TLS_VERSION_BOTH; #endif #if !defined(KORE_NO_TLS) static BIO *domain_bio_mem(const void *, size_t); static int domain_x509_verify(int, X509_STORE_CTX *); static X509 *domain_load_certificate_chain(SSL_CTX *, const void *, size_t); static void keymgr_init(void); static void keymgr_await_data(void); static void keymgr_msg_response(struct kore_msg *, const void *); static int keymgr_rsa_init(RSA *); static int keymgr_rsa_finish(RSA *); static int keymgr_rsa_privenc(int, const unsigned char *, unsigned char *, RSA *, int); static ECDSA_SIG *keymgr_ecdsa_sign(const unsigned char *, int, const BIGNUM *, const BIGNUM *, EC_KEY *); #if !defined(LIBRESSL_VERSION_TEXT) && OPENSSL_VERSION_NUMBER >= 0x10100000L static RSA_METHOD *keymgr_rsa_meth = NULL; static EC_KEY_METHOD *keymgr_ec_meth = NULL; #else #if !defined(LIBRESSL_VERSION_TEXT) /* * Run own ecdsa_method data structure as OpenSSL has this in ecs_locl.h * and does not export this on systems. */ struct ecdsa_method { const char *name; ECDSA_SIG *(*ecdsa_do_sign)(const unsigned char *, int, const BIGNUM *, const BIGNUM *, EC_KEY *); int (*ecdsa_sign_setup)(EC_KEY *, BN_CTX *, BIGNUM **, BIGNUM **); int (*ecdsa_do_verify)(const unsigned char *, int, const ECDSA_SIG *, EC_KEY *); int flags; char *app_data; }; #endif static ECDSA_METHOD keymgr_ecdsa = { "kore ECDSA keymgr method", keymgr_ecdsa_sign, NULL, NULL, 0, NULL }; static RSA_METHOD keymgr_rsa = { "kore RSA keymgr method", NULL, NULL, keymgr_rsa_privenc, NULL, NULL, NULL, keymgr_rsa_init, keymgr_rsa_finish, RSA_METHOD_FLAG_NO_CHECK, NULL, NULL, NULL, NULL }; #endif /* OPENSSL_VERSION_NUMBER */ #endif /* KORE_NO_TLS */ static u_int16_t domain_id = 0; static struct kore_domain *cached[KORE_DOMAIN_CACHE]; void kore_domain_init(void) { int i; TAILQ_INIT(&domains); for (i = 0; i < KORE_DOMAIN_CACHE; i++) cached[i] = NULL; #if !defined(KORE_NO_TLS) #if !defined(LIBRESSL_VERSION_TEXT) && OPENSSL_VERSION_NUMBER >= 0x10100000L if (keymgr_rsa_meth == NULL) { if ((keymgr_rsa_meth = RSA_meth_new("kore RSA keymgr method", RSA_METHOD_FLAG_NO_CHECK)) == NULL) fatal("failed to allocate RSA method"); } RSA_meth_set_init(keymgr_rsa_meth, keymgr_rsa_init); RSA_meth_set_finish(keymgr_rsa_meth, keymgr_rsa_finish); RSA_meth_set_priv_enc(keymgr_rsa_meth, keymgr_rsa_privenc); if (keymgr_ec_meth == NULL) { if ((keymgr_ec_meth = EC_KEY_METHOD_new(NULL)) == NULL) fatal("failed to allocate EC KEY method"); } EC_KEY_METHOD_set_sign(keymgr_ec_meth, NULL, NULL, keymgr_ecdsa_sign); #endif #if !defined(TLS1_3_VERSION) if (!kore_quiet) { kore_log(LOG_NOTICE, "%s has no TLS 1.3 - will only use TLS 1.2", OPENSSL_VERSION_TEXT); } #endif #endif } void kore_domain_cleanup(void) { struct kore_domain *dom; while ((dom = TAILQ_FIRST(&domains)) != NULL) { TAILQ_REMOVE(&domains, dom, list); kore_domain_free(dom); } #if !defined(KORE_NO_TLS) #if !defined(LIBRESSL_VERSION_TEXT) && OPENSSL_VERSION_NUMBER >= 0x10100000L if (keymgr_rsa_meth != NULL) { RSA_meth_free(keymgr_rsa_meth); keymgr_rsa_meth = NULL; } if (keymgr_ec_meth != NULL) { EC_KEY_METHOD_free(keymgr_ec_meth); keymgr_ec_meth = NULL; } #endif #endif } int kore_domain_new(char *domain) { struct kore_domain *dom; if (kore_domain_lookup(domain) != NULL) return (KORE_RESULT_ERROR); kore_debug("kore_domain_new(%s)", domain); dom = kore_malloc(sizeof(*dom)); dom->id = domain_id++; dom->logbuf = NULL; dom->accesslog = -1; dom->logwarn = 0; dom->logerr = 0; #if !defined(KORE_NO_TLS) dom->cafile = NULL; dom->certkey = NULL; dom->ssl_ctx = NULL; dom->certfile = NULL; dom->crlfile = NULL; dom->x509_verify_depth = 1; #endif dom->domain = kore_strdup(domain); #if !defined(KORE_NO_HTTP) TAILQ_INIT(&(dom->handlers)); #endif if (dom->id < KORE_DOMAIN_CACHE) { if (cached[dom->id] != NULL) fatal("non free domain cache slot"); cached[dom->id] = dom; } TAILQ_INSERT_TAIL(&domains, dom, list); if (primary_dom == NULL) primary_dom = dom; return (KORE_RESULT_OK); } void kore_domain_free(struct kore_domain *dom) { #if !defined(KORE_NO_HTTP) struct kore_module_handle *hdlr; #endif if (dom == NULL) return; if (primary_dom == dom) primary_dom = NULL; TAILQ_REMOVE(&domains, dom, list); if (dom->domain != NULL) kore_free(dom->domain); #if !defined(KORE_NO_TLS) if (dom->ssl_ctx != NULL) SSL_CTX_free(dom->ssl_ctx); if (dom->cafile != NULL) kore_free(dom->cafile); if (dom->certkey != NULL) kore_free(dom->certkey); if (dom->certfile != NULL) kore_free(dom->certfile); if (dom->crlfile != NULL) kore_free(dom->crlfile); #endif #if !defined(KORE_NO_HTTP) /* Drop all handlers associated with this domain */ while ((hdlr = TAILQ_FIRST(&(dom->handlers))) != NULL) { TAILQ_REMOVE(&(dom->handlers), hdlr, list); kore_module_handler_free(hdlr); } #endif kore_free(dom); } #if !defined(KORE_NO_TLS) void kore_domain_tlsinit(struct kore_domain *dom, const void *pem, size_t pemlen) { RSA *rsa; X509 *x509; EVP_PKEY *pkey; STACK_OF(X509_NAME) *certs; EC_KEY *eckey; const SSL_METHOD *method; #if defined(LIBRESSL_VERSION_TEXT) || OPENSSL_VERSION_NUMBER < 0x10100000L EC_KEY *ecdh; #endif kore_debug("kore_domain_tlsinit(%s)", dom->domain); if (dom->ssl_ctx != NULL) SSL_CTX_free(dom->ssl_ctx); #if !defined(LIBRESSL_VERSION_TEXT) && OPENSSL_VERSION_NUMBER >= 0x10100000L if ((method = TLS_method()) == NULL) fatalx("TLS_method(): %s", ssl_errno_s); #else switch (tls_version) { case KORE_TLS_VERSION_1_3: case KORE_TLS_VERSION_1_2: case KORE_TLS_VERSION_BOTH: method = TLSv1_2_server_method(); break; default: fatalx("unknown tls_version: %d", tls_version); return; } #endif if ((dom->ssl_ctx = SSL_CTX_new(method)) == NULL) fatalx("SSL_ctx_new(): %s", ssl_errno_s); #if !defined(LIBRESSL_VERSION_TEXT) && OPENSSL_VERSION_NUMBER >= 0x10100000L if (!SSL_CTX_set_min_proto_version(dom->ssl_ctx, TLS1_2_VERSION)) fatalx("SSL_CTX_set_min_proto_version: %s", ssl_errno_s); #if defined(TLS1_3_VERSION) if (!SSL_CTX_set_max_proto_version(dom->ssl_ctx, TLS1_3_VERSION)) fatalx("SSL_CTX_set_max_proto_version: %s", ssl_errno_s); #else if (!SSL_CTX_set_max_proto_version(dom->ssl_ctx, TLS1_2_VERSION)) fatalx("SSL_CTX_set_min_proto_version: %s", ssl_errno_s); #endif switch (tls_version) { case KORE_TLS_VERSION_1_3: #if defined(TLS1_3_VERSION) if (!SSL_CTX_set_min_proto_version(dom->ssl_ctx, TLS1_3_VERSION)) { fatalx("SSL_CTX_set_min_proto_version: %s", ssl_errno_s); } break; #endif case KORE_TLS_VERSION_1_2: if (!SSL_CTX_set_max_proto_version(dom->ssl_ctx, TLS1_2_VERSION)) { fatalx("SSL_CTX_set_min_proto_version: %s", ssl_errno_s); } break; case KORE_TLS_VERSION_BOTH: break; default: fatalx("unknown tls_version: %d", tls_version); return; } #endif x509 = domain_load_certificate_chain(dom->ssl_ctx, pem, pemlen); if ((pkey = X509_get_pubkey(x509)) == NULL) fatalx("certificate has no public key"); switch (EVP_PKEY_id(pkey)) { case EVP_PKEY_RSA: if ((rsa = EVP_PKEY_get1_RSA(pkey)) == NULL) fatalx("no RSA public key present"); RSA_set_app_data(rsa, dom); #if !defined(LIBRESSL_VERSION_TEXT) && OPENSSL_VERSION_NUMBER >= 0x10100000L RSA_set_method(rsa, keymgr_rsa_meth); #else RSA_set_method(rsa, &keymgr_rsa); #endif break; case EVP_PKEY_EC: if ((eckey = EVP_PKEY_get1_EC_KEY(pkey)) == NULL) fatalx("no EC public key present"); #if !defined(LIBRESSL_VERSION_TEXT) && OPENSSL_VERSION_NUMBER >= 0x10100000L EC_KEY_set_ex_data(eckey, 0, dom); EC_KEY_set_method(eckey, keymgr_ec_meth); #else ECDSA_set_ex_data(eckey, 0, dom); ECDSA_set_method(eckey, &keymgr_ecdsa); #endif break; default: fatalx("unknown public key in certificate"); } if (!SSL_CTX_use_PrivateKey(dom->ssl_ctx, pkey)) fatalx("SSL_CTX_use_PrivateKey(): %s", ssl_errno_s); if (!SSL_CTX_check_private_key(dom->ssl_ctx)) fatalx("Public/Private key for %s do not match", dom->domain); if (tls_dhparam == NULL) fatalx("No DH parameters given"); SSL_CTX_set_tmp_dh(dom->ssl_ctx, tls_dhparam); SSL_CTX_set_options(dom->ssl_ctx, SSL_OP_SINGLE_DH_USE); #if !defined(LIBRESSL_VERSION_TEXT) && OPENSSL_VERSION_NUMBER >= 0x10100000L if (!SSL_CTX_set_ecdh_auto(dom->ssl_ctx, 1)) fatalx("SSL_CTX_set_ecdh_auto: %s", ssl_errno_s); #else if ((ecdh = EC_KEY_new_by_curve_name(NID_secp384r1)) == NULL) fatalx("EC_KEY_new_by_curve_name: %s", ssl_errno_s); SSL_CTX_set_tmp_ecdh(dom->ssl_ctx, ecdh); EC_KEY_free(ecdh); #endif SSL_CTX_set_options(dom->ssl_ctx, SSL_OP_SINGLE_ECDH_USE); SSL_CTX_set_options(dom->ssl_ctx, SSL_OP_NO_COMPRESSION); if (dom->cafile != NULL) { if ((certs = SSL_load_client_CA_file(dom->cafile)) == NULL) { fatalx("SSL_load_client_CA_file(%s): %s", dom->cafile, ssl_errno_s); } SSL_CTX_load_verify_locations(dom->ssl_ctx, dom->cafile, NULL); SSL_CTX_set_verify_depth(dom->ssl_ctx, dom->x509_verify_depth); SSL_CTX_set_client_CA_list(dom->ssl_ctx, certs); SSL_CTX_set_verify(dom->ssl_ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, domain_x509_verify); } SSL_CTX_set_session_id_context(dom->ssl_ctx, (unsigned char *)SSL_SESSION_ID, strlen(SSL_SESSION_ID)); SSL_CTX_set_mode(dom->ssl_ctx, SSL_MODE_ENABLE_PARTIAL_WRITE); if (tls_version == KORE_TLS_VERSION_BOTH) { SSL_CTX_set_options(dom->ssl_ctx, SSL_OP_NO_SSLv2); SSL_CTX_set_options(dom->ssl_ctx, SSL_OP_NO_SSLv3); SSL_CTX_set_options(dom->ssl_ctx, SSL_OP_NO_TLSv1); SSL_CTX_set_options(dom->ssl_ctx, SSL_OP_NO_TLSv1_1); } SSL_CTX_set_options(dom->ssl_ctx, SSL_OP_CIPHER_SERVER_PREFERENCE); SSL_CTX_set_cipher_list(dom->ssl_ctx, kore_tls_cipher_list); SSL_CTX_set_info_callback(dom->ssl_ctx, kore_tls_info_callback); SSL_CTX_set_tlsext_servername_callback(dom->ssl_ctx, kore_tls_sni_cb); X509_free(x509); } void kore_domain_crl_add(struct kore_domain *dom, const void *pem, size_t pemlen) { int err; BIO *in; X509_CRL *crl; X509_STORE *store; ERR_clear_error(); in = domain_bio_mem(pem, pemlen); if ((store = SSL_CTX_get_cert_store(dom->ssl_ctx)) == NULL) { BIO_free(in); kore_log(LOG_ERR, "SSL_CTX_get_cert_store(): %s", ssl_errno_s); return; } for (;;) { crl = PEM_read_bio_X509_CRL(in, NULL, NULL, NULL); if (crl == NULL) { err = ERR_GET_REASON(ERR_peek_last_error()); if (err == PEM_R_NO_START_LINE) { ERR_clear_error(); break; } kore_log(LOG_WARNING, "failed to read CRL %s: %s", dom->crlfile, ssl_errno_s); continue; } if (!X509_STORE_add_crl(store, crl)) { err = ERR_GET_REASON(ERR_peek_last_error()); if (err == X509_R_CERT_ALREADY_IN_HASH_TABLE) { X509_CRL_free(crl); continue; } kore_log(LOG_WARNING, "failed to add CRL %s: %s", dom->crlfile, ssl_errno_s); X509_CRL_free(crl); continue; } } BIO_free(in); X509_STORE_set_flags(store, X509_V_FLAG_CRL_CHECK | X509_V_FLAG_CRL_CHECK_ALL); } #endif void kore_domain_callback(void (*cb)(struct kore_domain *)) { struct kore_domain *dom; TAILQ_FOREACH(dom, &domains, list) { cb(dom); } } struct kore_domain * kore_domain_lookup(const char *domain) { struct kore_domain *dom; TAILQ_FOREACH(dom, &domains, list) { if (!strcmp(dom->domain, domain)) return (dom); if (!fnmatch(dom->domain, domain, FNM_CASEFOLD)) return (dom); } return (NULL); } struct kore_domain * kore_domain_byid(u_int16_t id) { struct kore_domain *dom; if (id < KORE_DOMAIN_CACHE) return (cached[id]); TAILQ_FOREACH(dom, &domains, list) { if (dom->id == id) return (dom); } return (NULL); } /* * Called by the worker processes to close the file descriptor towards * the accesslog as they do not need it locally. */ void kore_domain_closelogs(void) { struct kore_domain *dom; TAILQ_FOREACH(dom, &domains, list) { if (dom->accesslog != -1) { (void)close(dom->accesslog); /* turn into flag to indicate accesslogs are active. */ dom->accesslog = 1; } else { dom->accesslog = 0; } } } void kore_domain_keymgr_init(void) { #if !defined(KORE_NO_TLS) keymgr_init(); kore_msg_register(KORE_MSG_KEYMGR_RESP, keymgr_msg_response); #endif } #if !defined(KORE_NO_TLS) static void keymgr_init(void) { const RSA_METHOD *meth; if ((meth = RSA_get_default_method()) == NULL) fatal("failed to obtain RSA method"); #if !defined(LIBRESSL_VERSION_TEXT) && OPENSSL_VERSION_NUMBER >= 0x10100000L RSA_meth_set_pub_enc(keymgr_rsa_meth, RSA_meth_get_pub_enc(meth)); RSA_meth_set_pub_dec(keymgr_rsa_meth, RSA_meth_get_pub_dec(meth)); RSA_meth_set_bn_mod_exp(keymgr_rsa_meth, RSA_meth_get_bn_mod_exp(meth)); #else keymgr_rsa.rsa_pub_enc = meth->rsa_pub_enc; keymgr_rsa.rsa_pub_dec = meth->rsa_pub_dec; keymgr_rsa.bn_mod_exp = meth->bn_mod_exp; #endif } static int keymgr_rsa_init(RSA *rsa) { if (rsa != NULL) { #if !defined(LIBRESSL_VERSION_TEXT) && OPENSSL_VERSION_NUMBER >= 0x10100000L RSA_set_flags(rsa, RSA_flags(rsa) | RSA_FLAG_EXT_PKEY | RSA_METHOD_FLAG_NO_CHECK); #else rsa->flags |= RSA_FLAG_EXT_PKEY | RSA_METHOD_FLAG_NO_CHECK; #endif return (1); } return (0); } static int keymgr_rsa_privenc(int flen, const unsigned char *from, unsigned char *to, RSA *rsa, int padding) { int ret; size_t len; struct kore_keyreq *req; struct kore_domain *dom; len = sizeof(*req) + flen; if (len > sizeof(keymgr_buf)) fatal("keymgr_buf too small"); if ((dom = RSA_get_app_data(rsa)) == NULL) fatal("RSA key has no domain attached"); if (strlen(dom->domain) >= KORE_DOMAINNAME_LEN - 1) fatal("domain name too long"); memset(keymgr_buf, 0, sizeof(keymgr_buf)); req = (struct kore_keyreq *)keymgr_buf; req->data_len = flen; req->padding = padding; req->domain_len = strlen(dom->domain); memcpy(&req->data[0], from, req->data_len); memcpy(req->domain, dom->domain, req->domain_len); kore_msg_send(KORE_WORKER_KEYMGR, KORE_MSG_KEYMGR_REQ, keymgr_buf, len); keymgr_await_data(); ret = -1; if (keymgr_response) { if (keymgr_buflen < INT_MAX && (int)keymgr_buflen == RSA_size(rsa)) { ret = RSA_size(rsa); memcpy(to, keymgr_buf, RSA_size(rsa)); } } keymgr_buflen = 0; keymgr_response = 0; kore_platform_event_all(worker->msg[1]->fd, worker->msg[1]); return (ret); } static int keymgr_rsa_finish(RSA *rsa) { return (1); } static ECDSA_SIG * keymgr_ecdsa_sign(const unsigned char *dgst, int dgst_len, const BIGNUM *in_kinv, const BIGNUM *in_r, EC_KEY *eckey) { size_t len; ECDSA_SIG *sig; const u_int8_t *ptr; struct kore_domain *dom; struct kore_keyreq *req; if (in_kinv != NULL || in_r != NULL) return (NULL); len = sizeof(*req) + dgst_len; if (len > sizeof(keymgr_buf)) fatal("keymgr_buf too small"); #if !defined(LIBRESSL_VERSION_TEXT) && OPENSSL_VERSION_NUMBER >= 0x10100000L if ((dom = EC_KEY_get_ex_data(eckey, 0)) == NULL) fatal("EC_KEY has no domain"); #else if ((dom = ECDSA_get_ex_data(eckey, 0)) == NULL) fatal("EC_KEY has no domain"); #endif memset(keymgr_buf, 0, sizeof(keymgr_buf)); req = (struct kore_keyreq *)keymgr_buf; req->data_len = dgst_len; req->domain_len = strlen(dom->domain); memcpy(&req->data[0], dgst, req->data_len); memcpy(req->domain, dom->domain, req->domain_len); kore_msg_send(KORE_WORKER_KEYMGR, KORE_MSG_KEYMGR_REQ, keymgr_buf, len); keymgr_await_data(); if (keymgr_response) { ptr = keymgr_buf; sig = d2i_ECDSA_SIG(NULL, &ptr, keymgr_buflen); } else { sig = NULL; } keymgr_buflen = 0; keymgr_response = 0; kore_platform_event_all(worker->msg[1]->fd, worker->msg[1]); return (sig); } static void keymgr_await_data(void) { int ret; struct pollfd pfd[1]; u_int64_t start, cur; #if !defined(KORE_NO_HTTP) int process_requests; #endif /* * We need to wait until the keymgr responds to us, so keep doing * net_recv_flush() until our callback for KORE_MSG_KEYMGR_RESP * tells us that we have obtained the response. * * This means other internal messages can still be delivered by * this worker process to the appropriate callbacks but we do not * drop out until we've either received an answer from the keymgr * or until the timeout has been reached (1 second currently). * * If we end up waiting for the keymgr process we will call * http_process (if not built with NOHTTP=1) to further existing * requests so those do not block too much. * * This means that all incoming data will stop being processed * while existing requests will get processed until we return * from this call. */ start = kore_time_ms(); kore_platform_disable_read(worker->msg[1]->fd); keymgr_response = 0; memset(keymgr_buf, 0, sizeof(keymgr_buf)); #if !defined(KORE_NO_HTTP) process_requests = 0; #endif for (;;) { #if !defined(KORE_NO_HTTP) if (process_requests) { http_process(); process_requests = 0; } #endif pfd[0].fd = worker->msg[1]->fd; pfd[0].events = POLLIN; pfd[0].revents = 0; ret = poll(pfd, 1, 100); if (ret == -1) { if (errno == EINTR) continue; fatal("poll: %s", errno_s); } cur = kore_time_ms(); if ((cur - start) > 1000) break; if (ret == 0) { #if !defined(KORE_NO_HTTP) /* No activity on channel, process HTTP requests. */ process_requests = 1; #endif continue; } if (pfd[0].revents & (POLLERR | POLLHUP)) break; if (!(pfd[0].revents & POLLIN)) break; worker->msg[1]->evt.flags |= KORE_EVENT_READ; if (!net_recv_flush(worker->msg[1])) break; if (keymgr_response) break; #if !defined(KORE_NO_HTTP) /* If we've spent 100ms already, process HTTP requests. */ if ((cur - start) > 100) { process_requests = 1; } #endif } } static void keymgr_msg_response(struct kore_msg *msg, const void *data) { keymgr_response = 1; keymgr_buflen = msg->length; if (keymgr_buflen > sizeof(keymgr_buf)) return; memcpy(keymgr_buf, data, keymgr_buflen); } static int domain_x509_verify(int ok, X509_STORE_CTX *ctx) { X509 *cert; const char *text; int error, depth; error = X509_STORE_CTX_get_error(ctx); cert = X509_STORE_CTX_get_current_cert(ctx); if (ok == 0 && cert != NULL) { text = X509_verify_cert_error_string(error); depth = X509_STORE_CTX_get_error_depth(ctx); kore_log(LOG_WARNING, "X509 verification error depth:%d - %s", depth, text); /* Continue on CRL validity errors. */ switch (error) { case X509_V_ERR_CRL_HAS_EXPIRED: case X509_V_ERR_CRL_NOT_YET_VALID: case X509_V_ERR_UNABLE_TO_GET_CRL: ok = 1; break; } } return (ok); } /* * What follows is basically a reimplementation of * SSL_CTX_use_certificate_chain_file() from OpenSSL but with our * BIO set to the pem data that we received. */ static X509 * domain_load_certificate_chain(SSL_CTX *ctx, const void *data, size_t len) { unsigned long err; BIO *in; X509 *x, *ca; ERR_clear_error(); in = domain_bio_mem(data, len); if ((x = PEM_read_bio_X509_AUX(in, NULL, NULL, NULL)) == NULL) fatal("PEM_read_bio_X509_AUX: %s", ssl_errno_s); /* refcount for x509 will go up one. */ if (SSL_CTX_use_certificate(ctx, x) == 0) fatal("SSL_CTX_use_certificate: %s", ssl_errno_s); #if defined(LIBRESSL_VERSION_TEXT) sk_X509_pop_free(ctx->extra_certs, X509_free); ctx->extra_certs = NULL; #else SSL_CTX_clear_chain_certs(ctx); #endif ERR_clear_error(); while ((ca = PEM_read_bio_X509(in, NULL, NULL, NULL)) != NULL) { /* ca its reference count won't be increased. */ #if defined(LIBRESSL_VERSION_TEXT) if (SSL_CTX_add_extra_chain_cert(ctx, ca) == 0) fatal("SSL_CTX_add_extra_chain_cert: %s", ssl_errno_s); #else if (SSL_CTX_add0_chain_cert(ctx, ca) == 0) fatal("SSL_CTX_add0_chain_cert: %s", ssl_errno_s); #endif } err = ERR_peek_last_error(); if (ERR_GET_LIB(err) != ERR_LIB_PEM || ERR_GET_REASON(err) != PEM_R_NO_START_LINE) fatal("PEM_read_bio_X509: %s", ssl_errno_s); BIO_free(in); return (x); } /* * XXX - Hack around the fact that LibreSSL its BIO_new_mem_buf() does not * take a const pointer for their first argument. * * Since we build with -Wcast-qual and -Werror I rather do this than having * a bunch of pragma preprocessor magic to remove the warnings for that code * if we're dealing with LibreSSL. * * They fixed this in their upcoming 2.8.0 release but that is not out yet * and I'd like this to run on older OpenBSD platforms as well. */ static BIO * domain_bio_mem(const void *data, size_t len) { BIO *in; union { void *p; const void *cp; } deconst; /* because OpenSSL likes taking ints as memory buffer lengths. */ if (len > INT_MAX) fatal("domain_bio_mem: len(%zu) > INT_MAX", len); deconst.cp = data; if ((in = BIO_new_mem_buf(deconst.p, len)) == NULL) fatal("BIO_new_mem_buf: %s", ssl_errno_s); return (in); } #endif kore-3.3.1/src/filemap.c000066400000000000000000000166341347522026400150450ustar00rootroot00000000000000/* * Copyright (c) 2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include #include #include #include "kore.h" #if !defined(KORE_NO_HTTP) #include "http.h" struct filemap_entry { char *root; size_t root_len; struct kore_domain *domain; char *ondisk; size_t ondisk_len; TAILQ_ENTRY(filemap_entry) list; }; int filemap_resolve(struct http_request *); static void filemap_serve(struct http_request *, struct filemap_entry *); static TAILQ_HEAD(, filemap_entry) maps; char *kore_filemap_ext = NULL; char *kore_filemap_index = NULL; void kore_filemap_init(void) { TAILQ_INIT(&maps); } int kore_filemap_create(struct kore_domain *dom, const char *path, const char *root) { size_t sz; struct stat st; int len; struct kore_module_handle *hdlr; struct filemap_entry *entry; char regex[1024], fpath[PATH_MAX]; sz = strlen(root); if (sz == 0) return (KORE_RESULT_ERROR); if (root[0] != '/' || root[sz - 1] != '/') return (KORE_RESULT_ERROR); if (kore_root_path != NULL) { len = snprintf(fpath, sizeof(fpath), "%s/%s", kore_root_path, path); if (len == -1 || (size_t)len >= sizeof(fpath)) fatal("kore_filemap_create: failed to concat paths"); } else { if (kore_strlcpy(fpath, path, sizeof(fpath)) >= sizeof(fpath)) fatal("kore_filemap_create: failed to copy path"); } if (stat(fpath, &st) == -1) return (KORE_RESULT_ERROR); len = snprintf(regex, sizeof(regex), "^%s.*$", root); if (len == -1 || (size_t)len >= sizeof(regex)) fatal("kore_filemap_create: buffer too small"); if (!kore_module_handler_new(regex, dom->domain, "filemap_resolve", NULL, HANDLER_TYPE_DYNAMIC)) return (KORE_RESULT_ERROR); hdlr = NULL; TAILQ_FOREACH(hdlr, &dom->handlers, list) { if (!strcmp(hdlr->path, regex)) break; } if (hdlr == NULL) fatal("couldn't find newly created handler for filemap"); hdlr->methods = HTTP_METHOD_GET | HTTP_METHOD_HEAD; entry = kore_calloc(1, sizeof(*entry)); entry->domain = dom; entry->root_len = sz; entry->root = kore_strdup(root); /* * Resolve the ondisk component inside the workers to make sure * realpath() resolves the correct path (they maybe chrooted). */ entry->ondisk_len = strlen(path); entry->ondisk = kore_strdup(path); TAILQ_INSERT_TAIL(&maps, entry, list); return (KORE_RESULT_OK); } void kore_filemap_resolve_paths(void) { struct filemap_entry *entry; char rpath[PATH_MAX]; TAILQ_FOREACH(entry, &maps, list) { if (realpath(entry->ondisk, rpath) == NULL) fatal("realpath(%s): %s", entry->ondisk, errno_s); kore_free(entry->ondisk); entry->ondisk_len = strlen(rpath); entry->ondisk = kore_strdup(rpath); } } int filemap_resolve(struct http_request *req) { size_t best_len; struct filemap_entry *entry, *best; if (req->method != HTTP_METHOD_GET && req->method != HTTP_METHOD_HEAD) { http_response_header(req, "allow", "get, head"); http_response(req, HTTP_STATUS_BAD_REQUEST, NULL, 0); return (KORE_RESULT_OK); } best = NULL; best_len = 0; TAILQ_FOREACH(entry, &maps, list) { if (entry->domain != req->hdlr->dom) continue; if (!strncmp(entry->root, req->path, entry->root_len)) { if (best == NULL || entry->root_len > best_len) { best = entry; best_len = entry->root_len; continue; } } } if (best == NULL) { http_response(req, HTTP_STATUS_NOT_FOUND, NULL, 0); return (KORE_RESULT_OK); } filemap_serve(req, best); return (KORE_RESULT_OK); } static void filemap_serve(struct http_request *req, struct filemap_entry *map) { struct stat st; struct kore_fileref *ref; const char *path; int len, fd, index; char fpath[PATH_MAX], rpath[PATH_MAX]; path = req->path + map->root_len; len = snprintf(fpath, sizeof(fpath), "%s/%s", map->ondisk, path); if (len == -1 || (size_t)len >= sizeof(fpath)) { http_response(req, HTTP_STATUS_INTERNAL_ERROR, NULL, 0); return; } if (!http_argument_urldecode(fpath)) { http_response(req, HTTP_STATUS_BAD_REQUEST, NULL, 0); return; } index = 0; lookup: if (realpath(fpath, rpath) == NULL) { if (errno == ENOENT) { if (index == 0 && kore_filemap_ext != NULL) { len = snprintf(fpath, sizeof(fpath), "%s/%s%s", map->ondisk, path, kore_filemap_ext); if (len == -1 || (size_t)len >= sizeof(fpath)) { http_response(req, HTTP_STATUS_INTERNAL_ERROR, NULL, 0); return; } index++; goto lookup; } } http_response(req, HTTP_STATUS_NOT_FOUND, NULL, 0); return; } if (strncmp(rpath, fpath, map->ondisk_len)) { http_response(req, HTTP_STATUS_NOT_FOUND, NULL, 0); return; } if ((ref = kore_fileref_get(rpath)) == NULL) { if ((fd = open(fpath, O_RDONLY | O_NOFOLLOW)) == -1) { switch (errno) { case ENOENT: if (index || kore_filemap_ext == NULL) { req->status = HTTP_STATUS_NOT_FOUND; } else { len = snprintf(fpath, sizeof(fpath), "%s/%s%s", map->ondisk, path, kore_filemap_ext); if (len == -1 || (size_t)len >= sizeof(fpath)) { http_response(req, HTTP_STATUS_INTERNAL_ERROR, NULL, 0); return; } index++; goto lookup; } break; case EPERM: case EACCES: req->status = HTTP_STATUS_FORBIDDEN; break; default: req->status = HTTP_STATUS_INTERNAL_ERROR; break; } http_response(req, req->status, NULL, 0); return; } if (fstat(fd, &st) == -1) { http_response(req, HTTP_STATUS_INTERNAL_ERROR, NULL, 0); goto cleanup; } if (S_ISREG(st.st_mode)) { if (st.st_size <= 0) { http_response(req, HTTP_STATUS_NOT_FOUND, NULL, 0); goto cleanup; } /* kore_fileref_create() takes ownership of the fd. */ ref = kore_fileref_create(fpath, fd, st.st_size, &st.st_mtim); if (ref == NULL) { http_response(req, HTTP_STATUS_INTERNAL_ERROR, NULL, 0); } else { fd = -1; } } else if (S_ISDIR(st.st_mode) && index == 0) { close(fd); if (req->path[strlen(req->path) - 1] != '/') { (void)snprintf(fpath, sizeof(fpath), "%s/", req->path); http_response_header(req, "location", fpath); http_response(req, HTTP_STATUS_FOUND, NULL, 0); return; } len = snprintf(fpath, sizeof(fpath), "%s/%s%s", map->ondisk, path, kore_filemap_index != NULL ? kore_filemap_index : "index.html"); if (len == -1 || (size_t)len >= sizeof(fpath)) { http_response(req, HTTP_STATUS_INTERNAL_ERROR, NULL, 0); return; } index++; goto lookup; } else { http_response(req, HTTP_STATUS_NOT_FOUND, NULL, 0); } } if (ref != NULL) { http_response_fileref(req, HTTP_STATUS_OK, ref); fd = -1; } cleanup: if (fd != -1) close(fd); } #endif kore-3.3.1/src/fileref.c000066400000000000000000000122511347522026400150330ustar00rootroot00000000000000/* * Copyright (c) 2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include #include #include "kore.h" /* cached filerefs expire after 30 seconds of inactivity. */ #define FILEREF_EXPIRATION (1000 * 30) static void fileref_timer_prime(void); static void fileref_drop(struct kore_fileref *); static void fileref_soft_remove(struct kore_fileref *); static void fileref_expiration_check(void *, u_int64_t); static TAILQ_HEAD(, kore_fileref) refs; static struct kore_pool ref_pool; static struct kore_timer *ref_timer = NULL; void kore_fileref_init(void) { TAILQ_INIT(&refs); kore_pool_init(&ref_pool, "ref_pool", sizeof(struct kore_fileref), 100); } struct kore_fileref * kore_fileref_create(const char *path, int fd, off_t size, struct timespec *ts) { struct kore_fileref *ref; fileref_timer_prime(); if ((ref = kore_fileref_get(path)) != NULL) return (ref); ref = kore_pool_get(&ref_pool); ref->cnt = 1; ref->flags = 0; ref->size = size; ref->path = kore_strdup(path); ref->mtime_sec = ts->tv_sec; ref->mtime = ((u_int64_t)(ts->tv_sec * 1000 + (ts->tv_nsec / 1000000))); #if !defined(KORE_USE_PLATFORM_SENDFILE) if ((uintmax_t)size> SIZE_MAX) { kore_pool_put(&ref_pool, ref); return (NULL); } ref->base = mmap(NULL, (size_t)size, PROT_READ, MAP_PRIVATE, fd, 0); if (ref->base == MAP_FAILED) fatal("net_send_file: mmap failed: %s", errno_s); if (madvise(ref->base, (size_t)size, MADV_SEQUENTIAL) == -1) fatal("net_send_file: madvise: %s", errno_s); close(fd); #else ref->fd = fd; #endif #if defined(FILEREF_DEBUG) kore_log(LOG_DEBUG, "ref:%p created", (void *)ref); #endif TAILQ_INSERT_TAIL(&refs, ref, list); return (ref); } /* * Caller must call kore_fileref_release() after kore_fileref_get() even * if they don't end up using the ref. */ struct kore_fileref * kore_fileref_get(const char *path) { struct stat st; struct kore_fileref *ref; u_int64_t mtime; TAILQ_FOREACH(ref, &refs, list) { if (!strcmp(ref->path, path)) { if (stat(ref->path, &st) == -1) { if (errno != ENOENT) { kore_log(LOG_ERR, "stat(%s): %s", ref->path, errno_s); } fileref_soft_remove(ref); return (NULL); } mtime = ((u_int64_t)(st.st_mtim.tv_sec * 1000 + (st.st_mtim.tv_nsec / 1000000))); if (ref->mtime != mtime) { fileref_soft_remove(ref); return (NULL); } ref->cnt++; #if defined(FILEREF_DEBUG) kore_log(LOG_DEBUG, "ref:%p cnt:%d", (void *)ref, ref->cnt); #endif TAILQ_REMOVE(&refs, ref, list); TAILQ_INSERT_HEAD(&refs, ref, list); return (ref); } } return (NULL); } void kore_fileref_release(struct kore_fileref *ref) { ref->cnt--; #if defined(FILEREF_DEBUG) kore_log(LOG_DEBUG, "ref:%p released cnt:%d", (void *)ref, ref->cnt); #endif if (ref->cnt < 0) { fatal("kore_fileref_release: cnt < 0 (%p:%d)", (void *)ref, ref->cnt); } if (ref->cnt == 0) { if (ref->flags & KORE_FILEREF_SOFT_REMOVED) fileref_drop(ref); else ref->expiration = kore_time_ms() + FILEREF_EXPIRATION; } } static void fileref_timer_prime(void) { if (ref_timer != NULL) return; ref_timer = kore_timer_add(fileref_expiration_check, 10000, NULL, 0); } static void fileref_soft_remove(struct kore_fileref *ref) { if (ref->flags & KORE_FILEREF_SOFT_REMOVED) fatal("fileref_soft_remove: %p already removed", (void *)ref); #if defined(FILEREF_DEBUG) kore_log(LOG_DEBUG, "ref:%p softremoved", (void *)ref); #endif TAILQ_REMOVE(&refs, ref, list); ref->flags |= KORE_FILEREF_SOFT_REMOVED; if (ref->cnt == 0) fileref_drop(ref); } static void fileref_expiration_check(void *arg, u_int64_t now) { struct kore_fileref *ref, *next; for (ref = TAILQ_FIRST(&refs); ref != NULL; ref = next) { next = TAILQ_NEXT(ref, list); if (ref->cnt != 0) continue; if (ref->expiration > now) continue; #if defined(FILEREF_DEBUG) kore_log(LOG_DEBUG, "ref:%p expired, removing", (void *)ref); #endif fileref_drop(ref); } if (TAILQ_EMPTY(&refs)) { /* remove the timer. */ ref_timer->flags |= KORE_TIMER_ONESHOT; ref_timer = NULL; } } static void fileref_drop(struct kore_fileref *ref) { #if defined(FILEREF_DEBUG) kore_log(LOG_DEBUG, "ref:%p dropped", (void *)ref); #endif if (!(ref->flags & KORE_FILEREF_SOFT_REMOVED)) TAILQ_REMOVE(&refs, ref, list); kore_free(ref->path); #if !defined(KORE_USE_PLATFORM_SENDFILE) (void)munmap(ref->base, ref->size); #else close(ref->fd); #endif kore_pool_put(&ref_pool, ref); } kore-3.3.1/src/http.c000066400000000000000000001515021347522026400144010ustar00rootroot00000000000000/* * Copyright (c) 2013-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include #include #include #include #include #include #include #include #include "kore.h" #include "http.h" #if defined(KORE_USE_PYTHON) #include "python_api.h" #endif #if defined(KORE_USE_PGSQL) #include "pgsql.h" #endif #if defined(KORE_USE_TASKS) #include "tasks.h" #endif #if defined(KORE_USE_CURL) #include "curl.h" #endif static struct { const char *ext; const char *type; } builtin_media[] = { { "gif", "image/gif" }, { "png", "image/png" }, { "jpeg", "image/jpeg" }, { "jpg", "image/jpeg" }, { "zip", "application/zip" }, { "pdf", "application/pdf" }, { "json", "application/json" }, { "js", "application/javascript" }, { "htm", "text/html" }, { "txt", "text/plain" }, { "css", "text/css" }, { "html", "text/html" }, { NULL, NULL }, }; #define HTTP_MAP_LIMIT 127 /* * token = 1* * separators = "(" | ")" | "<" | ">" | "@" * | "," | ";" | ":" | "\" | <"> * | "/" | "[" | "]" | "?" | "=" * | "{" | "}" | SP | HT */ static const char http_token[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, '!' , 0x00, '#' , '$' , '%' , '&' , '\'', 0x00, 0x00, '*' , '+' , 0x00, '-' , '.' , 0x00, '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 'A' , 'B' , 'C' , 'D' , 'E' , 'F' , 'G' , 'H' , 'I' , 'J' , 'K' , 'L' , 'M' , 'N' , 'O' , 'P' , 'Q' , 'R' , 'S' , 'T' , 'U' , 'V' , 'W' , 'X' , 'Y' , 'Z' , 0x00, 0x00, 0x00, '^' , '_' , '`' , 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i' , 'j' , 'k' , 'l' , 'm' , 'n' , 'o' , 'p' , 'q' , 'r' , 's' , 't' , 'u' , 'v' , 'w' , 'x' , 'y' , 'z' , 0x00, '|' , 0x00, '~' , }; /* * field-content = */ static const char http_field_content[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ' ' , '!' , '"' , '#' , '$' , '%' , '&' , '\'', '(' , ')' , '*' , '+' , ',' , '-' , '.' , '/' , '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , ':' , ';' , '<' , '=' , '>' , '?' , '@' , 'A' , 'B' , 'C' , 'D' , 'E' , 'F' , 'G' , 'H' , 'I' , 'J' , 'K' , 'L' , 'M' , 'N' , 'O' , 'P' , 'Q' , 'R' , 'S' , 'T' , 'U' , 'V' , 'W' , 'X' , 'Y' , 'Z' , '[' , '\\', ']' , '^' , '_' , '`' , 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i' , 'j' , 'k' , 'l' , 'm' , 'n' , 'o' , 'p' , 'q' , 'r' , 's' , 't' , 'u' , 'v' , 'w' , 'x' , 'y' , 'z' , '{' , '|' , '}' , '~' , }; static int http_body_recv(struct netbuf *); static void http_error_response(struct connection *, int); static void http_write_response_cookie(struct http_cookie *); static void http_argument_add(struct http_request *, char *, char *, int, int); static void http_response_normal(struct http_request *, struct connection *, int, const void *, size_t); static void multipart_add_field(struct http_request *, struct kore_buf *, char *, const char *, const int); static void multipart_file_add(struct http_request *, struct kore_buf *, const char *, const char *, const char *, const int); static int multipart_find_data(struct kore_buf *, struct kore_buf *, size_t *, struct http_request *, const void *, size_t); static int multipart_parse_headers(struct http_request *, struct kore_buf *, struct kore_buf *, const char *, const int); static struct http_request *http_request_new(struct connection *, const char *, const char *, char *, const char *); static struct kore_buf *header_buf; static struct kore_buf *ckhdr_buf; static char http_version[64]; static u_int16_t http_version_len; static TAILQ_HEAD(, http_request) http_requests; static TAILQ_HEAD(, http_request) http_requests_sleeping; static LIST_HEAD(, http_media_type) http_media_types; static struct kore_pool http_request_pool; static struct kore_pool http_cookie_pool; static struct kore_pool http_body_path; static struct kore_pool http_rlq_pool; struct kore_pool http_header_pool; u_int32_t http_request_count = 0; u_int32_t http_request_ms = HTTP_REQUEST_MS; u_int16_t http_body_timeout = HTTP_BODY_TIMEOUT; u_int32_t http_request_limit = HTTP_REQUEST_LIMIT; u_int64_t http_hsts_enable = HTTP_HSTS_ENABLE; u_int16_t http_header_max = HTTP_HEADER_MAX_LEN; u_int16_t http_keepalive_time = HTTP_KEEPALIVE_TIME; u_int16_t http_header_timeout = HTTP_HEADER_TIMEOUT; size_t http_body_max = HTTP_BODY_MAX_LEN; char *http_body_disk_path = HTTP_BODY_DISK_PATH; u_int64_t http_body_disk_offload = HTTP_BODY_DISK_OFFLOAD; void http_parent_init(void) { LIST_INIT(&http_media_types); } void http_init(void) { int prealloc, l, i; TAILQ_INIT(&http_requests); TAILQ_INIT(&http_requests_sleeping); header_buf = kore_buf_alloc(HTTP_HEADER_BUFSIZE); ckhdr_buf = kore_buf_alloc(HTTP_COOKIE_BUFSIZE); l = snprintf(http_version, sizeof(http_version), "server: kore (%s)\r\n", kore_version); if (l == -1 || (size_t)l >= sizeof(http_version)) fatal("http_init(): http_version buffer too small"); http_version_len = l; prealloc = MIN((worker_max_connections / 10), 1000); kore_pool_init(&http_request_pool, "http_request_pool", sizeof(struct http_request), http_request_limit); kore_pool_init(&http_header_pool, "http_header_pool", sizeof(struct http_header), prealloc * HTTP_REQ_HEADER_MAX); kore_pool_init(&http_cookie_pool, "http_cookie_pool", sizeof(struct http_cookie), prealloc * HTTP_MAX_COOKIES); kore_pool_init(&http_rlq_pool, "http_rlq_pool", sizeof(struct http_runlock_queue), http_request_limit); kore_pool_init(&http_body_path, "http_body_path", HTTP_BODY_PATH_MAX, prealloc); for (i = 0; builtin_media[i].ext != NULL; i++) { if (!http_media_register(builtin_media[i].ext, builtin_media[i].type)) { fatal("duplicate media type for %s", builtin_media[i].ext); } } } void http_cleanup(void) { if (header_buf != NULL) { kore_buf_free(header_buf); header_buf = NULL; } if (ckhdr_buf != NULL) { kore_buf_free(ckhdr_buf); ckhdr_buf = NULL; } kore_pool_cleanup(&http_request_pool); kore_pool_cleanup(&http_header_pool); kore_pool_cleanup(&http_body_path); } void http_server_version(const char *version) { int l; l = snprintf(http_version, sizeof(http_version), "server: %s\r\n", version); if (l == -1 || (size_t)l >= sizeof(http_version)) fatal("http_server_version(): http_version buffer too small"); http_version_len = l; } int http_check_timeout(struct connection *c, u_int64_t now) { u_int64_t d; if (c->http_timeout == 0) return (KORE_RESULT_OK); if (now > c->http_start) d = now - c->http_start; else d = 0; if (d >= c->http_timeout) { http_error_response(c, 408); kore_connection_disconnect(c); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } void http_request_sleep(struct http_request *req) { if (!(req->flags & HTTP_REQUEST_SLEEPING)) { kore_debug("http_request_sleep: %p napping", req); req->flags |= HTTP_REQUEST_SLEEPING; TAILQ_REMOVE(&http_requests, req, list); TAILQ_INSERT_TAIL(&http_requests_sleeping, req, list); } } void http_request_wakeup(struct http_request *req) { if (req->flags & HTTP_REQUEST_SLEEPING) { kore_debug("http_request_wakeup: %p woke up", req); req->flags &= ~HTTP_REQUEST_SLEEPING; TAILQ_REMOVE(&http_requests_sleeping, req, list); TAILQ_INSERT_TAIL(&http_requests, req, list); } } void http_process(void) { u_int64_t total; struct http_request *req, *next; total = 0; for (req = TAILQ_FIRST(&http_requests); req != NULL; req = next) { if (total >= http_request_ms) break; next = TAILQ_NEXT(req, list); if (req->flags & HTTP_REQUEST_DELETE) { http_request_free(req); continue; } /* Sleeping requests should be in http_requests_sleeping. */ if (req->flags & HTTP_REQUEST_SLEEPING) fatal("http_process: sleeping request on list"); if (!(req->flags & HTTP_REQUEST_COMPLETE)) continue; http_process_request(req); total += req->ms; if (req->flags & HTTP_REQUEST_DELETE) http_request_free(req); } } void http_process_request(struct http_request *req) { int r; kore_debug("http_process_request: %p->%p (%s)", req->owner, req, req->path); if (req->flags & HTTP_REQUEST_DELETE || req->hdlr == NULL) return; req->start = kore_time_ms(); if (req->hdlr->auth != NULL && !(req->flags & HTTP_REQUEST_AUTHED)) r = kore_auth_run(req, req->hdlr->auth); else r = KORE_RESULT_OK; switch (r) { case KORE_RESULT_OK: r = kore_runtime_http_request(req->hdlr->rcall, req); break; case KORE_RESULT_RETRY: break; case KORE_RESULT_ERROR: /* * Set r to KORE_RESULT_OK so we can properly * flush the result from kore_auth_run(). */ r = KORE_RESULT_OK; break; default: fatal("kore_auth() returned unknown %d", r); } req->end = kore_time_ms(); req->ms = req->end - req->start; req->total += req->ms; switch (r) { case KORE_RESULT_OK: r = net_send_flush(req->owner); if (r == KORE_RESULT_ERROR) kore_connection_disconnect(req->owner); break; case KORE_RESULT_ERROR: kore_connection_disconnect(req->owner); break; case KORE_RESULT_RETRY: return; default: fatal("A page handler returned an unknown result: %d", r); } if (req->hdlr->dom->accesslog) kore_accesslog(req); req->flags |= HTTP_REQUEST_DELETE; } void http_response_header(struct http_request *req, const char *header, const char *value) { struct http_header *hdr; kore_debug("http_response_header(%p, %s, %s)", req, header, value); hdr = kore_pool_get(&http_header_pool); hdr->header = kore_strdup(header); hdr->value = kore_strdup(value); TAILQ_INSERT_TAIL(&(req->resp_headers), hdr, list); } void http_request_free(struct http_request *req) { #if defined(KORE_USE_TASKS) struct kore_task *t, *nt; int pending_tasks; #endif #if defined(KORE_USE_PGSQL) struct kore_pgsql *pgsql; #endif #if defined(KORE_USE_CURL) struct kore_curl *client; #endif struct http_file *f, *fnext; struct http_arg *q, *qnext; struct http_header *hdr, *next; struct http_cookie *ck, *cknext; if (req->onfree != NULL) req->onfree(req); if (req->runlock != NULL) { LIST_REMOVE(req->runlock, list); req->runlock = NULL; } #if defined(KORE_USE_TASKS) pending_tasks = 0; for (t = LIST_FIRST(&(req->tasks)); t != NULL; t = nt) { nt = LIST_NEXT(t, rlist); if (!kore_task_finished(t)) { pending_tasks++; } else { kore_task_destroy(t); } } if (pending_tasks) { kore_debug("http_request_free %d pending tasks", pending_tasks); return; } #endif #if defined(KORE_USE_PYTHON) if (req->py_coro != NULL) { kore_python_coro_delete(req->py_coro); req->py_coro = NULL; } #endif #if defined(KORE_USE_PGSQL) while (!LIST_EMPTY(&(req->pgsqls))) { pgsql = LIST_FIRST(&(req->pgsqls)); kore_pgsql_cleanup(pgsql); } #endif #if defined(KORE_USE_CURL) while (!LIST_EMPTY(&req->chandles)) { client = LIST_FIRST(&req->chandles); kore_curl_cleanup(client); } #endif kore_debug("http_request_free: %p->%p", req->owner, req); kore_free(req->headers); req->host = NULL; req->path = NULL; req->headers = NULL; TAILQ_REMOVE(&http_requests, req, list); if (req->owner != NULL) TAILQ_REMOVE(&(req->owner->http_requests), req, olist); for (hdr = TAILQ_FIRST(&(req->resp_headers)); hdr != NULL; hdr = next) { next = TAILQ_NEXT(hdr, list); TAILQ_REMOVE(&(req->resp_headers), hdr, list); kore_free(hdr->header); kore_free(hdr->value); kore_pool_put(&http_header_pool, hdr); } for (hdr = TAILQ_FIRST(&(req->req_headers)); hdr != NULL; hdr = next) { next = TAILQ_NEXT(hdr, list); TAILQ_REMOVE(&(req->req_headers), hdr, list); kore_pool_put(&http_header_pool, hdr); } for (ck = TAILQ_FIRST(&(req->resp_cookies)); ck != NULL; ck = cknext) { cknext = TAILQ_NEXT(ck, list); TAILQ_REMOVE(&(req->resp_cookies), ck, list); kore_free(ck->name); kore_free(ck->value); kore_free(ck->path); kore_free(ck->domain); kore_pool_put(&http_cookie_pool, ck); } for (ck = TAILQ_FIRST(&(req->req_cookies)); ck != NULL; ck = cknext) { cknext = TAILQ_NEXT(ck, list); TAILQ_REMOVE(&(req->req_cookies), ck, list); kore_free(ck->name); kore_free(ck->value); kore_pool_put(&http_cookie_pool, ck); } for (q = TAILQ_FIRST(&(req->arguments)); q != NULL; q = qnext) { qnext = TAILQ_NEXT(q, list); TAILQ_REMOVE(&(req->arguments), q, list); kore_free(q->name); kore_free(q->s_value); kore_free(q); } for (f = TAILQ_FIRST(&(req->files)); f != NULL; f = fnext) { fnext = TAILQ_NEXT(f, list); TAILQ_REMOVE(&(req->files), f, list); kore_free(f->filename); kore_free(f->name); kore_free(f); } if (req->http_body != NULL) kore_buf_free(req->http_body); if (req->http_body_fd != -1) (void)close(req->http_body_fd); if (req->http_body_path != NULL) { if (unlink(req->http_body_path) == -1 && errno != ENOENT) { kore_log(LOG_NOTICE, "failed to unlink %s: %s", req->http_body_path, errno_s); } kore_pool_put(&http_body_path, req->http_body_path); } if (req->hdlr_extra != NULL && !(req->flags & HTTP_REQUEST_RETAIN_EXTRA)) kore_free(req->hdlr_extra); kore_pool_put(&http_request_pool, req); http_request_count--; } void http_serveable(struct http_request *req, const void *data, size_t len, const char *etag, const char *type) { const char *match; if (req->method != HTTP_METHOD_GET) { http_response_header(req, "allow", "get"); http_response(req, HTTP_STATUS_BAD_REQUEST, NULL, 0); return; } if (http_request_header(req, "if-none-match", &match)) { if (!strcmp(match, etag)) { http_response(req, HTTP_STATUS_NOT_MODIFIED, NULL, 0); return; } } http_response_header(req, "etag", etag); http_response_header(req, "content-type", type); http_response(req, HTTP_STATUS_OK, data, len); } void http_response(struct http_request *req, int status, const void *d, size_t l) { if (req->owner == NULL) return; kore_debug("http_response(%p, %d, %p, %zu)", req, status, d, l); req->status = status; switch (req->owner->proto) { case CONN_PROTO_HTTP: case CONN_PROTO_WEBSOCKET: http_response_normal(req, req->owner, status, d, l); break; default: fatal("http_response() bad proto %d", req->owner->proto); /* NOTREACHED. */ } } void http_response_stream(struct http_request *req, int status, void *base, size_t len, int (*cb)(struct netbuf *), void *arg) { struct netbuf *nb; if (req->owner == NULL) return; req->status = status; switch (req->owner->proto) { case CONN_PROTO_HTTP: http_response_normal(req, req->owner, status, NULL, len); break; default: fatal("http_response_stream() bad proto %d", req->owner->proto); /* NOTREACHED. */ } if (req->method != HTTP_METHOD_HEAD) { net_send_stream(req->owner, base, len, cb, &nb); nb->extra = arg; } } void http_response_fileref(struct http_request *req, int status, struct kore_fileref *ref) { struct tm *tm; time_t mtime; char tbuf[128]; const char *media_type, *modified; if (req->owner == NULL) return; media_type = http_media_type(ref->path); if (media_type != NULL) http_response_header(req, "content-type", media_type); if (http_request_header(req, "if-modified-since", &modified)) { mtime = kore_date_to_time(modified); if (mtime == ref->mtime_sec) { kore_fileref_release(ref); http_response(req, HTTP_STATUS_NOT_MODIFIED, NULL, 0); return; } } if ((tm = gmtime(&ref->mtime_sec)) != NULL) { if (strftime(tbuf, sizeof(tbuf), "%a, %d %b %Y %H:%M:%S GMT", tm) > 0) { http_response_header(req, "last-modified", tbuf); } } req->status = status; switch (req->owner->proto) { case CONN_PROTO_HTTP: http_response_normal(req, req->owner, status, NULL, ref->size); break; default: fatal("http_response_fd() bad proto %d", req->owner->proto); /* NOTREACHED. */ } if (req->method != HTTP_METHOD_HEAD) net_send_fileref(req->owner, ref); else kore_fileref_release(ref); } int http_request_header(struct http_request *req, const char *header, const char **out) { struct http_header *hdr; TAILQ_FOREACH(hdr, &(req->req_headers), list) { if (!strcasecmp(hdr->header, header)) { *out = hdr->value; return (KORE_RESULT_OK); } } if (!strcasecmp(header, "host")) { *out = req->host; return (KORE_RESULT_OK); } return (KORE_RESULT_ERROR); } int http_request_cookie(struct http_request *req, const char *cookie, char **out) { struct http_cookie *ck; TAILQ_FOREACH(ck, &(req->req_cookies), list) { if (!strcasecmp(ck->name, cookie)) { *out = ck->value; return (KORE_RESULT_OK); } } return (KORE_RESULT_ERROR); } int http_header_recv(struct netbuf *nb) { struct connection *c; size_t len; ssize_t ret; struct http_header *hdr; struct http_request *req; const char *clp; u_int64_t bytes_left; u_int8_t *end_headers; int h, i, v, skip, l; char *headers[HTTP_REQ_HEADER_MAX]; char *value, *host, *request[4], *hbuf; c = nb->owner; kore_debug("http_header_recv(%p)", nb); if (nb->b_len < 4) return (KORE_RESULT_OK); skip = 4; end_headers = kore_mem_find(nb->buf, nb->s_off, "\r\n\r\n", 4); if (end_headers == NULL) { end_headers = kore_mem_find(nb->buf, nb->s_off, "\n\n", 2); if (end_headers == NULL) return (KORE_RESULT_OK); skip = 2; } *end_headers = '\0'; end_headers += skip; len = end_headers - nb->buf; hbuf = (char *)nb->buf; h = kore_split_string(hbuf, "\r\n", headers, HTTP_REQ_HEADER_MAX); if (h < 2) { http_error_response(c, 400); return (KORE_RESULT_OK); } v = kore_split_string(headers[0], " ", request, 4); if (v != 3) { http_error_response(c, 400); return (KORE_RESULT_OK); } skip = 0; host = NULL; for (i = 0; i < h; i++) { if (strncasecmp(headers[i], "host", 4)) continue; if ((host = http_validate_header(headers[i])) == NULL) { http_error_response(c, 400); return (KORE_RESULT_OK); } if (*host == '\0') { http_error_response(c, 400); return (KORE_RESULT_OK); } skip = i; break; } if (host == NULL) { http_error_response(c, 400); return (KORE_RESULT_OK); } req = http_request_new(c, host, request[0], request[1], request[2]); if (req == NULL) return (KORE_RESULT_OK); /* take full ownership of the buffer. */ req->headers = nb->buf; nb->buf = NULL; nb->m_len = 0; for (i = 1; i < h; i++) { if (i == skip) continue; if ((value = http_validate_header(headers[i])) == NULL) { req->flags |= HTTP_REQUEST_DELETE; http_error_response(c, 400); return (KORE_RESULT_OK); } if (*value == '\0') { req->flags |= HTTP_REQUEST_DELETE; http_error_response(c, 400); return (KORE_RESULT_OK); } hdr = kore_pool_get(&http_header_pool); hdr->header = headers[i]; hdr->value = value; TAILQ_INSERT_TAIL(&(req->req_headers), hdr, list); if (req->agent == NULL && !strcasecmp(hdr->header, "user-agent")) req->agent = hdr->value; if (req->referer == NULL && !strcasecmp(hdr->header, "referer")) req->referer = hdr->value; } if (req->flags & HTTP_REQUEST_EXPECT_BODY) { if (http_body_max == 0) { req->flags |= HTTP_REQUEST_DELETE; http_error_response(req->owner, 405); return (KORE_RESULT_OK); } if (!http_request_header(req, "content-length", &clp)) { kore_debug("expected body but no content-length"); req->flags |= HTTP_REQUEST_DELETE; http_error_response(req->owner, 411); return (KORE_RESULT_OK); } req->content_length = kore_strtonum(clp, 10, 0, LONG_MAX, &v); if (v == KORE_RESULT_ERROR) { kore_debug("content-length invalid: %s", clp); req->flags |= HTTP_REQUEST_DELETE; http_error_response(req->owner, 411); return (KORE_RESULT_OK); } if (req->content_length == 0) { req->flags |= HTTP_REQUEST_COMPLETE; req->flags &= ~HTTP_REQUEST_EXPECT_BODY; return (KORE_RESULT_OK); } if (req->content_length > http_body_max) { kore_log(LOG_NOTICE, "body too large (%zu > %zu)", req->content_length, http_body_max); req->flags |= HTTP_REQUEST_DELETE; http_error_response(req->owner, 413); return (KORE_RESULT_OK); } req->http_body_length = req->content_length; if (http_body_disk_offload > 0 && req->content_length > http_body_disk_offload) { req->http_body_path = kore_pool_get(&http_body_path); l = snprintf(req->http_body_path, HTTP_BODY_PATH_MAX, "%s/http_body.XXXXXX", http_body_disk_path); if (l == -1 || (size_t)l >= HTTP_BODY_PATH_MAX) { req->flags |= HTTP_REQUEST_DELETE; http_error_response(req->owner, 500); return (KORE_RESULT_ERROR); } req->http_body = NULL; req->http_body_fd = mkstemp(req->http_body_path); if (req->http_body_fd == -1) { req->flags |= HTTP_REQUEST_DELETE; http_error_response(req->owner, 500); return (KORE_RESULT_OK); } ret = write(req->http_body_fd, end_headers, (nb->s_off - len)); if (ret == -1 || (size_t)ret != (nb->s_off - len)) { req->flags |= HTTP_REQUEST_DELETE; http_error_response(req->owner, 500); return (KORE_RESULT_OK); } } else { req->http_body_fd = -1; req->http_body = kore_buf_alloc(req->content_length); kore_buf_append(req->http_body, end_headers, (nb->s_off - len)); } SHA256_Init(&req->hashctx); SHA256_Update(&req->hashctx, end_headers, (nb->s_off - len)); bytes_left = req->content_length - (nb->s_off - len); if (bytes_left > 0) { kore_debug("%ld/%ld (%ld - %ld) more bytes for body", bytes_left, req->content_length, nb->s_off, len); net_recv_reset(c, MIN(bytes_left, NETBUF_SEND_PAYLOAD_MAX), http_body_recv); c->rnb->extra = req; http_request_sleep(req); req->content_length = bytes_left; c->http_timeout = http_body_timeout * 1000; } else { c->http_timeout = 0; req->flags |= HTTP_REQUEST_COMPLETE; req->flags &= ~HTTP_REQUEST_EXPECT_BODY; SHA256_Final(req->http_body_digest, &req->hashctx); if (!http_body_rewind(req)) { req->flags |= HTTP_REQUEST_DELETE; http_error_response(req->owner, 500); return (KORE_RESULT_OK); } } } else { c->http_timeout = 0; } return (KORE_RESULT_OK); } int http_argument_get(struct http_request *req, const char *name, void **out, void *nout, int type) { struct http_arg *q; TAILQ_FOREACH(q, &(req->arguments), list) { if (strcmp(q->name, name)) continue; switch (type) { case HTTP_ARG_TYPE_RAW: *out = q->s_value; return (KORE_RESULT_OK); case HTTP_ARG_TYPE_BYTE: COPY_ARG_TYPE(*(u_int8_t *)q->s_value, u_int8_t); return (KORE_RESULT_OK); case HTTP_ARG_TYPE_INT16: COPY_AS_INTTYPE(SHRT_MIN, SHRT_MAX, int16_t); return (KORE_RESULT_OK); case HTTP_ARG_TYPE_UINT16: COPY_AS_INTTYPE(0, USHRT_MAX, u_int16_t); return (KORE_RESULT_OK); case HTTP_ARG_TYPE_INT32: COPY_AS_INTTYPE(INT_MIN, INT_MAX, int32_t); return (KORE_RESULT_OK); case HTTP_ARG_TYPE_UINT32: COPY_AS_INTTYPE(0, UINT_MAX, u_int32_t); return (KORE_RESULT_OK); case HTTP_ARG_TYPE_INT64: COPY_AS_INTTYPE_64(int64_t, 1); return (KORE_RESULT_OK); case HTTP_ARG_TYPE_UINT64: COPY_AS_INTTYPE_64(u_int64_t, 0); return (KORE_RESULT_OK); case HTTP_ARG_TYPE_FLOAT: COPY_ARG_DOUBLE(-FLT_MAX, FLT_MAX, float); return (KORE_RESULT_OK); case HTTP_ARG_TYPE_DOUBLE: COPY_ARG_DOUBLE(-DBL_MAX, DBL_MAX, double); return (KORE_RESULT_OK); case HTTP_ARG_TYPE_STRING: *out = q->s_value; return (KORE_RESULT_OK); default: break; } return (KORE_RESULT_ERROR); } return (KORE_RESULT_ERROR); } int http_argument_urldecode(char *arg) { u_int8_t v; int err; size_t len; char *p, *in, h[5]; p = arg; in = arg; len = strlen(arg); while (*p != '\0' && p < (arg + len)) { if (*p == '+') *p = ' '; if (*p != '%') { *in++ = *p++; continue; } if ((p + 2) >= (arg + len)) { kore_debug("overflow in '%s'", arg); return (KORE_RESULT_ERROR); } if (!isxdigit(*(p + 1)) || !isxdigit(*(p + 2))) { *in++ = *p++; continue; } h[0] = '0'; h[1] = 'x'; h[2] = *(p + 1); h[3] = *(p + 2); h[4] = '\0'; v = kore_strtonum(h, 16, 0x0, 0xff, &err); if (err != KORE_RESULT_OK) return (err); if (v <= 0x1f || v == 0x7f || (v >= 0x80 && v <= 0x9f)) return (KORE_RESULT_ERROR); *in++ = (char)v; p += 3; } *in = '\0'; return (KORE_RESULT_OK); } struct http_file * http_file_lookup(struct http_request *req, const char *name) { struct http_file *f; TAILQ_FOREACH(f, &(req->files), list) { if (!strcmp(f->name, name)) return (f); } return (NULL); } ssize_t http_file_read(struct http_file *file, void *buf, size_t len) { ssize_t ret; size_t toread, off; if (file->length < file->offset) return (-1); if ((file->offset + len) < file->offset) return (-1); if ((file->position + file->offset) < file->position) return (-1); off = file->position + file->offset; toread = MIN(len, (file->length - file->offset)); if (toread == 0) return (0); if (file->req->http_body_fd != -1) { if (lseek(file->req->http_body_fd, off, SEEK_SET) == -1) { kore_log(LOG_ERR, "http_file_read: lseek(%s): %s", file->req->http_body_path, errno_s); return (-1); } for (;;) { ret = read(file->req->http_body_fd, buf, toread); if (ret == -1) { if (errno == EINTR) continue; kore_log(LOG_ERR, "failed to read %s: %s", file->req->http_body_path, errno_s); return (-1); } if (ret == 0) return (0); break; } } else if (file->req->http_body != NULL) { if (off > file->req->http_body->length) return (0); memcpy(buf, file->req->http_body->data + off, toread); ret = toread; } else { kore_log(LOG_ERR, "http_file_read: called without body"); return (-1); } file->offset += (size_t)ret; return (ret); } void http_file_rewind(struct http_file *file) { file->offset = 0; } void http_response_cookie(struct http_request *req, const char *name, const char *val, const char *path, time_t expires, u_int32_t maxage, struct http_cookie **out) { char *p; struct http_cookie *ck; if (name == NULL || val == NULL) fatal("http_response_cookie: invalid parameters"); ck = kore_pool_get(&http_cookie_pool); ck->maxage = maxage; ck->expires = expires; ck->name = kore_strdup(name); ck->value = kore_strdup(val); ck->domain = kore_strdup(req->host); ck->flags = HTTP_COOKIE_HTTPONLY | HTTP_COOKIE_SECURE; if ((p = strrchr(ck->domain, ':')) != NULL) *p = '\0'; if (path != NULL) ck->path = kore_strdup(path); else ck->path = NULL; TAILQ_INSERT_TAIL(&(req->resp_cookies), ck, list); if (out != NULL) *out = ck; } void http_populate_cookies(struct http_request *req) { struct http_cookie *ck; const char *hdr; int i, v, n; char *c, *header, *pair[3]; char *cookies[HTTP_MAX_COOKIES]; if (!http_request_header(req, "cookie", &hdr)) return; header = kore_strdup(hdr); v = kore_split_string(header, ";", cookies, HTTP_MAX_COOKIES); for (i = 0; i < v; i++) { for (c = cookies[i]; isspace(*(unsigned char *)c); c++) ; n = kore_split_string(c, "=", pair, 3); if (n != 2) continue; ck = kore_pool_get(&http_cookie_pool); ck->name = kore_strdup(pair[0]); ck->value = kore_strdup(pair[1]); TAILQ_INSERT_TAIL(&(req->req_cookies), ck, list); } kore_free(header); } void http_populate_post(struct http_request *req) { ssize_t ret; int i, v; struct kore_buf *body; char data[BUFSIZ]; char *args[HTTP_MAX_QUERY_ARGS], *val[3], *string; if (req->method != HTTP_METHOD_POST) return; if (req->http_body != NULL) { body = NULL; req->http_body->offset = req->content_length; string = kore_buf_stringify(req->http_body, NULL); req->http_body_length = 0; req->http_body_offset = 0; } else { body = kore_buf_alloc(128); for (;;) { ret = http_body_read(req, data, sizeof(data)); if (ret == -1) goto out; if (ret == 0) break; kore_buf_append(body, data, ret); } string = kore_buf_stringify(body, NULL); } v = kore_split_string(string, "&", args, HTTP_MAX_QUERY_ARGS); for (i = 0; i < v; i++) { kore_split_string(args[i], "=", val, 3); if (val[0] != NULL && val[1] != NULL) http_argument_add(req, val[0], val[1], 0, 1); } out: if (body != NULL) kore_buf_free(body); } void http_populate_qs(struct http_request *req) { int i, v; char *query, *args[HTTP_MAX_QUERY_ARGS], *val[3]; if (req->query_string == NULL) return; query = kore_strdup(req->query_string); v = kore_split_string(query, "&", args, HTTP_MAX_QUERY_ARGS); for (i = 0; i < v; i++) { kore_split_string(args[i], "=", val, 3); if (val[0] != NULL && val[1] != NULL) http_argument_add(req, val[0], val[1], 1, 1); } kore_free(query); } void http_populate_multipart_form(struct http_request *req) { const char *hdr; int h, blen; struct kore_buf in, out; char *type, *val, *args[3]; char boundary[HTTP_BOUNDARY_MAX]; if (req->method != HTTP_METHOD_POST) return; if (!http_request_header(req, "content-type", &hdr)) return; kore_buf_init(&in, 128); kore_buf_init(&out, 128); type = kore_strdup(hdr); h = kore_split_string(type, ";", args, 3); if (h != 2) goto cleanup; if (strcasecmp(args[0], "multipart/form-data")) goto cleanup; if ((val = strchr(args[1], '=')) == NULL) goto cleanup; val++; blen = snprintf(boundary, sizeof(boundary), "--%s", val); if (blen == -1 || (size_t)blen >= sizeof(boundary)) goto cleanup; if (!multipart_find_data(&in, NULL, NULL, req, boundary, blen)) goto cleanup; for (;;) { if (!multipart_find_data(&in, NULL, NULL, req, "\r\n", 2)) break; if (in.offset < 4 && req->http_body_length == 0) break; if (!multipart_find_data(&in, &out, NULL, req, "\r\n\r\n", 4)) break; if (!multipart_parse_headers(req, &in, &out, boundary, blen)) break; kore_buf_reset(&out); } cleanup: kore_free(type); kore_buf_cleanup(&in); kore_buf_cleanup(&out); } int http_body_rewind(struct http_request *req) { if (req->http_body_fd != -1) { if (lseek(req->http_body_fd, 0, SEEK_SET) == -1) { kore_log(LOG_ERR, "lseek(%s) failed: %s", req->http_body_path, errno_s); return (KORE_RESULT_ERROR); } } else if (req->http_body != NULL) { kore_buf_reset(req->http_body); } req->http_body_offset = 0; req->http_body_length = req->content_length; return (KORE_RESULT_OK); } int http_body_digest(struct http_request *req, char *out, size_t len) { size_t idx; int slen; if (len != HTTP_BODY_DIGEST_STRLEN) { fatal("http_body_digest: bad len:%zu wanted:%zu", len, HTTP_BODY_DIGEST_STRLEN); } if (!(req->flags & HTTP_REQUEST_COMPLETE)) return (KORE_RESULT_ERROR); for (idx = 0; idx < sizeof(req->http_body_digest); idx++) { slen = snprintf(out + (idx * 2), len - (idx * 2), "%02x", req->http_body_digest[idx]); if (slen == -1 || (size_t)slen >= len) fatal("failed to create hex string"); } return (KORE_RESULT_OK); } ssize_t http_body_read(struct http_request *req, void *out, size_t len) { ssize_t ret; size_t toread; toread = MIN(req->http_body_length, len); if (toread == 0) return (0); if (req->http_body_fd != -1) { for (;;) { ret = read(req->http_body_fd, out, toread); if (ret == -1) { if (errno == EINTR) continue; kore_log(LOG_ERR, "failed to read %s: %s", req->http_body_path, errno_s); return (-1); } if (ret == 0) return (0); break; } } else if (req->http_body != NULL) { memcpy(out, (req->http_body->data + req->http_body->offset), toread); req->http_body->offset += toread; ret = toread; } else { kore_log(LOG_ERR, "http_body_read: called without body"); return (-1); } req->http_body_length -= (size_t)ret; req->http_body_offset += (size_t)ret; return (ret); } int http_state_run(struct http_state *states, u_int8_t elm, struct http_request *req) { int r, done; done = 0; while (!done) { if (req->fsm_state >= elm) { fatal("http_state_run: fsm_state > elm (%d/%d)", req->fsm_state, elm); } kore_debug("http_state_run: running %s", states[req->fsm_state].name); r = states[req->fsm_state].cb(req); switch (r) { case HTTP_STATE_ERROR: return (KORE_RESULT_OK); case HTTP_STATE_RETRY: return (KORE_RESULT_RETRY); case HTTP_STATE_CONTINUE: break; case HTTP_STATE_COMPLETE: done = 1; break; default: fatal("http_state_run: unknown return value %d", r); } } req->fsm_state = 0; kore_debug("http_state_run(%p): done", req); return (KORE_RESULT_OK); } int http_state_exists(struct http_request *req) { return (req->hdlr_extra != NULL); } void * http_state_create(struct http_request *req, size_t len, void (*onfree)(struct http_request *)) { if (req->hdlr_extra != NULL) fatal("http_state_create: state already exists"); req->state_len = len; req->onfree = onfree; req->hdlr_extra = kore_calloc(1, len); return (req->hdlr_extra); } void * http_state_get(struct http_request *req) { return (req->hdlr_extra); } void http_state_cleanup(struct http_request *req) { kore_free(req->hdlr_extra); req->hdlr_extra = NULL; } void http_start_recv(struct connection *c) { c->http_start = kore_time_ms(); c->http_timeout = http_header_timeout * 1000; net_recv_reset(c, http_header_max, http_header_recv); (void)net_recv_flush(c); } void http_runlock_init(struct http_runlock *lock) { lock->owner = NULL; LIST_INIT(&lock->queue); } int http_runlock_acquire(struct http_runlock *lock, struct http_request *req) { if (lock->owner != NULL) { if (req->runlock != NULL) fatal("%s: request already waiting on lock", __func__); req->runlock = kore_pool_get(&http_rlq_pool); req->runlock->req = req; LIST_INSERT_HEAD(&lock->queue, req->runlock, list); http_request_sleep(req); return (KORE_RESULT_ERROR); } lock->owner = req; return (KORE_RESULT_OK); } void http_runlock_release(struct http_runlock *lock, struct http_request *req) { struct http_runlock_queue *next; struct http_request *nextreq; if (lock->owner != req) fatal("%s: calling request != owner of runlock", __func__); lock->owner = NULL; if ((next = LIST_FIRST(&lock->queue)) != NULL) { LIST_REMOVE(next, list); nextreq = next->req; nextreq->runlock = NULL; http_request_wakeup(nextreq); kore_pool_put(&http_rlq_pool, next); } } static struct http_request * http_request_new(struct connection *c, const char *host, const char *method, char *path, const char *version) { struct http_request *req; struct kore_module_handle *hdlr; char *p, *hp; int m, flags; size_t hostlen, pathlen, qsoff; if (http_request_count >= http_request_limit) { http_error_response(c, 503); return (NULL); } kore_debug("http_request_new(%p, %s, %s, %s, %s)", c, host, method, path, version); if ((hostlen = strlen(host)) >= KORE_DOMAINNAME_LEN - 1) { http_error_response(c, 400); return (NULL); } if ((pathlen = strlen(path)) >= HTTP_URI_LEN - 1) { http_error_response(c, 414); return (NULL); } if (strcasecmp(version, "http/1.1")) { if (strcasecmp(version, "http/1.0")) { http_error_response(c, 505); return (NULL); } flags = HTTP_VERSION_1_0; } else { flags = HTTP_VERSION_1_1; } if ((p = strchr(path, '?')) != NULL) { *p = '\0'; qsoff = p - path; } else { qsoff = 0; } hp = NULL; switch (c->family) { case AF_INET6: if (*host == '[') { if ((hp = strrchr(host, ']')) == NULL) { http_error_response(c, 400); return (NULL); } hp++; if (*hp == ':') *hp = '\0'; else hp = NULL; } break; default: if ((hp = strrchr(host, ':')) != NULL) *hp = '\0'; break; } if ((hdlr = kore_module_handler_find(host, path)) == NULL) { http_error_response(c, 404); return (NULL); } if (hp != NULL) *hp = ':'; if (p != NULL) *p = '?'; if (!strcasecmp(method, "get")) { m = HTTP_METHOD_GET; flags |= HTTP_REQUEST_COMPLETE; } else if (!strcasecmp(method, "delete")) { m = HTTP_METHOD_DELETE; flags |= HTTP_REQUEST_COMPLETE; } else if (!strcasecmp(method, "post")) { m = HTTP_METHOD_POST; flags |= HTTP_REQUEST_EXPECT_BODY; } else if (!strcasecmp(method, "put")) { m = HTTP_METHOD_PUT; flags |= HTTP_REQUEST_EXPECT_BODY; } else if (!strcasecmp(method, "head")) { m = HTTP_METHOD_HEAD; flags |= HTTP_REQUEST_COMPLETE; } else if (!strcasecmp(method, "options")) { m = HTTP_METHOD_OPTIONS; flags |= HTTP_REQUEST_COMPLETE; } else if (!strcasecmp(method, "patch")) { m = HTTP_METHOD_PATCH; flags |= HTTP_REQUEST_EXPECT_BODY; } else { http_error_response(c, 400); return (NULL); } if (flags & HTTP_VERSION_1_0) { if (m != HTTP_METHOD_GET && m != HTTP_METHOD_POST && m != HTTP_METHOD_HEAD) { http_error_response(c, HTTP_STATUS_METHOD_NOT_ALLOWED); return (NULL); } } if (!(hdlr->methods & m)) { http_error_response(c, HTTP_STATUS_METHOD_NOT_ALLOWED); return (NULL); } req = kore_pool_get(&http_request_pool); req->end = 0; req->total = 0; req->start = 0; req->owner = c; req->status = 0; req->method = m; req->hdlr = hdlr; req->agent = NULL; req->onfree = NULL; req->referer = NULL; req->runlock = NULL; req->flags = flags; req->fsm_state = 0; req->http_body = NULL; req->http_body_fd = -1; req->hdlr_extra = NULL; req->query_string = NULL; req->http_body_length = 0; req->http_body_offset = 0; req->http_body_path = NULL; req->host = host; req->path = path; #if defined(KORE_USE_PYTHON) req->py_coro = NULL; #endif if (qsoff > 0) { req->query_string = path + qsoff; *(req->query_string)++ = '\0'; } else { req->query_string = NULL; } TAILQ_INIT(&(req->resp_headers)); TAILQ_INIT(&(req->req_headers)); TAILQ_INIT(&(req->resp_cookies)); TAILQ_INIT(&(req->req_cookies)); TAILQ_INIT(&(req->arguments)); TAILQ_INIT(&(req->files)); #if defined(KORE_USE_TASKS) LIST_INIT(&(req->tasks)); #endif #if defined(KORE_USE_PGSQL) LIST_INIT(&(req->pgsqls)); #endif http_request_count++; TAILQ_INSERT_HEAD(&http_requests, req, list); TAILQ_INSERT_TAIL(&(c->http_requests), req, olist); return (req); } static int multipart_find_data(struct kore_buf *in, struct kore_buf *out, size_t *olen, struct http_request *req, const void *needle, size_t len) { ssize_t ret; size_t left; u_int8_t *p, first, data[4096]; if (olen != NULL) *olen = 0; first = *(const u_int8_t *)needle; for (;;) { if (in->offset < len) { ret = http_body_read(req, data, sizeof(data)); if (ret == -1) return (KORE_RESULT_ERROR); if (ret == 0) return (KORE_RESULT_ERROR); kore_buf_append(in, data, ret); continue; } p = kore_mem_find(in->data, in->offset, &first, 1); if (p == NULL) { if (out != NULL) kore_buf_append(out, in->data, in->offset); if (olen != NULL) *olen += in->offset; kore_buf_reset(in); continue; } left = in->offset - (p - in->data); if (left < len) { if (out != NULL) kore_buf_append(out, in->data, (p - in->data)); if (olen != NULL) *olen += (p - in->data); memmove(in->data, p, left); in->offset = left; continue; } if (!memcmp(p, needle, len)) { if (out != NULL) kore_buf_append(out, in->data, p - in->data); if (olen != NULL) *olen += (p - in->data); in->offset = left - len; if (in->offset > 0) memmove(in->data, p + len, in->offset); return (KORE_RESULT_OK); } if (out != NULL) kore_buf_append(out, in->data, (p - in->data) + 1); if (olen != NULL) *olen += (p - in->data) + 1; in->offset = left - 1; if (in->offset > 0) memmove(in->data, p + 1, in->offset); } return (KORE_RESULT_ERROR); } static int multipart_parse_headers(struct http_request *req, struct kore_buf *in, struct kore_buf *hbuf, const char *boundary, const int blen) { int h, c, i; char *headers[5], *args[5], *opt[5]; char *d, *val, *name, *fname, *string; string = kore_buf_stringify(hbuf, NULL); h = kore_split_string(string, "\r\n", headers, 5); for (i = 0; i < h; i++) { c = kore_split_string(headers[i], ":", args, 5); if (c != 2) continue; /* Ignore other headers for now. */ if (strcasecmp(args[0], "content-disposition")) continue; for (d = args[1]; isspace(*(unsigned char *)d); d++) ; c = kore_split_string(d, ";", opt, 5); if (c < 2) continue; if (strcasecmp(opt[0], "form-data")) continue; if ((val = strchr(opt[1], '=')) == NULL) continue; if (strlen(val) < 3) continue; val++; kore_strip_chars(val, '"', &name); if (opt[2] == NULL) { multipart_add_field(req, in, name, boundary, blen); kore_free(name); continue; } for (d = opt[2]; isspace(*(unsigned char *)d); d++) ; if (!strncasecmp(d, "filename=", 9)) { if ((val = strchr(d, '=')) == NULL) { kore_free(name); continue; } val++; kore_strip_chars(val, '"', &fname); if (strlen(fname) > 0) { multipart_file_add(req, in, name, fname, boundary, blen); } kore_free(fname); } else { kore_debug("got unknown: %s", opt[2]); } kore_free(name); } return (KORE_RESULT_OK); } static void multipart_add_field(struct http_request *req, struct kore_buf *in, char *name, const char *boundary, const int blen) { struct kore_buf *data; char *string; data = kore_buf_alloc(128); if (!multipart_find_data(in, data, NULL, req, boundary, blen)) { kore_buf_free(data); return; } if (data->offset < 3) { kore_buf_free(data); return; } data->offset -= 2; string = kore_buf_stringify(data, NULL); http_argument_add(req, name, string, 0, 0); kore_buf_free(data); } static void multipart_file_add(struct http_request *req, struct kore_buf *in, const char *name, const char *fname, const char *boundary, const int blen) { struct http_file *f; size_t position, len; position = req->http_body_offset - in->offset; if (!multipart_find_data(in, NULL, &len, req, boundary, blen)) return; if (len < 3) return; len -= 2; f = kore_malloc(sizeof(struct http_file)); f->req = req; f->offset = 0; f->length = len; f->position = position; f->name = kore_strdup(name); f->filename = kore_strdup(fname); TAILQ_INSERT_TAIL(&(req->files), f, list); } static void http_argument_add(struct http_request *req, char *name, char *value, int qs, int decode) { struct http_arg *q; struct kore_handler_params *p; if (decode) http_argument_urldecode(name); TAILQ_FOREACH(p, &(req->hdlr->params), list) { if (qs == 1 && !(p->flags & KORE_PARAMS_QUERY_STRING)) continue; if (qs == 0 && (p->flags & KORE_PARAMS_QUERY_STRING)) continue; if (p->method != req->method) continue; if (strcmp(p->name, name)) continue; if (decode) http_argument_urldecode(value); if (!kore_validator_check(req, p->validator, value)) break; q = kore_malloc(sizeof(struct http_arg)); q->name = kore_strdup(name); q->s_value = kore_strdup(value); TAILQ_INSERT_TAIL(&(req->arguments), q, list); break; } } static int http_body_recv(struct netbuf *nb) { ssize_t ret; u_int64_t bytes_left; struct http_request *req = (struct http_request *)nb->extra; SHA256_Update(&req->hashctx, nb->buf, nb->s_off); if (req->http_body_fd != -1) { ret = write(req->http_body_fd, nb->buf, nb->s_off); if (ret == -1 || (size_t)ret != nb->s_off) { req->flags |= HTTP_REQUEST_DELETE; http_error_response(req->owner, 500); return (KORE_RESULT_ERROR); } } else if (req->http_body != NULL) { kore_buf_append(req->http_body, nb->buf, nb->s_off); } else { req->flags |= HTTP_REQUEST_DELETE; http_error_response(req->owner, 500); return (KORE_RESULT_ERROR); } req->content_length -= nb->s_off; if (req->content_length == 0) { nb->extra = NULL; http_request_wakeup(req); req->flags |= HTTP_REQUEST_COMPLETE; req->flags &= ~HTTP_REQUEST_EXPECT_BODY; req->content_length = req->http_body_length; if (!http_body_rewind(req)) { req->flags |= HTTP_REQUEST_DELETE; http_error_response(req->owner, 500); return (KORE_RESULT_ERROR); } SHA256_Final(req->http_body_digest, &req->hashctx); net_recv_reset(nb->owner, http_header_max, http_header_recv); } else { bytes_left = req->content_length; net_recv_reset(nb->owner, MIN(bytes_left, NETBUF_SEND_PAYLOAD_MAX), http_body_recv); } return (KORE_RESULT_OK); } static void http_error_response(struct connection *c, int status) { kore_debug("http_error_response(%p, %d)", c, status); c->flags |= CONN_CLOSE_EMPTY; switch (c->proto) { case CONN_PROTO_HTTP: http_response_normal(NULL, c, status, NULL, 0); break; default: fatal("http_error_response() bad proto %d", c->proto); /* NOTREACHED. */ } if (!net_send_flush(c)) kore_connection_disconnect(c); } static void http_response_normal(struct http_request *req, struct connection *c, int status, const void *d, size_t len) { struct http_cookie *ck; struct http_header *hdr; const char *conn; char version; int connection_close; kore_buf_reset(header_buf); if (req != NULL) { if (req->flags & HTTP_VERSION_1_0) version = '0'; else version = '1'; } else { version = '1'; } kore_buf_appendf(header_buf, "HTTP/1.%c %d %s\r\n", version, status, http_status_text(status)); kore_buf_append(header_buf, http_version, http_version_len); if ((c->flags & CONN_CLOSE_EMPTY) || (req->flags & HTTP_VERSION_1_0)) { connection_close = 1; } else { connection_close = 0; } if (connection_close == 0 && req != NULL) { if (http_request_header(req, "connection", &conn)) { if ((*conn == 'c' || *conn == 'C') && !strcasecmp(conn, "close")) { connection_close = 1; } } } /* Note that req CAN be NULL. */ if (req == NULL || req->owner->proto != CONN_PROTO_WEBSOCKET) { if (http_keepalive_time && connection_close == 0) { kore_buf_appendf(header_buf, "connection: keep-alive\r\n"); kore_buf_appendf(header_buf, "keep-alive: timeout=%d\r\n", http_keepalive_time); } else { c->flags |= CONN_CLOSE_EMPTY; kore_buf_appendf(header_buf, "connection: close\r\n"); } } if (http_hsts_enable) { kore_buf_appendf(header_buf, "strict-transport-security: "); kore_buf_appendf(header_buf, "max-age=%" PRIu64 "; includeSubDomains\r\n", http_hsts_enable); } if (req != NULL) { TAILQ_FOREACH(ck, &(req->resp_cookies), list) http_write_response_cookie(ck); TAILQ_FOREACH(hdr, &(req->resp_headers), list) { kore_buf_appendf(header_buf, "%s: %s\r\n", hdr->header, hdr->value); } if (status != 204 && status >= 200 && !(req->flags & HTTP_REQUEST_NO_CONTENT_LENGTH)) { kore_buf_appendf(header_buf, "content-length: %zu\r\n", len); } } else { if (status != 204 && status >= 200) { kore_buf_appendf(header_buf, "content-length: %zu\r\n", len); } } kore_buf_append(header_buf, "\r\n", 2); net_send_queue(c, header_buf->data, header_buf->offset); if (d != NULL && req != NULL && req->method != HTTP_METHOD_HEAD) net_send_queue(c, d, len); if (!(c->flags & CONN_CLOSE_EMPTY) && !(c->flags & CONN_IS_BUSY)) http_start_recv(c); if (req != NULL) req->content_length = len; } static void http_write_response_cookie(struct http_cookie *ck) { struct tm tm; char expires[HTTP_DATE_MAXSIZE]; kore_buf_reset(ckhdr_buf); kore_buf_appendf(ckhdr_buf, "%s=%s", ck->name, ck->value); if (ck->path != NULL) kore_buf_appendf(ckhdr_buf, "; Path=%s", ck->path); if (ck->domain != NULL) kore_buf_appendf(ckhdr_buf, "; Domain=%s", ck->domain); if (ck->expires > 0) { if (gmtime_r(&ck->expires, &tm) == NULL) { kore_log(LOG_ERR, "gmtime_r(): %s", errno_s); return; } if (strftime(expires, sizeof(expires), "%a, %d %b %y %H:%M:%S GMT", &tm) == 0) { kore_log(LOG_ERR, "strftime(): %s", errno_s); return; } kore_buf_appendf(ckhdr_buf, "; Expires=%s", expires); } if (ck->maxage > 0) kore_buf_appendf(ckhdr_buf, "; Max-Age=%u", ck->maxage); if (ck->flags & HTTP_COOKIE_HTTPONLY) kore_buf_appendf(ckhdr_buf, "; HttpOnly"); if (ck->flags & HTTP_COOKIE_SECURE) kore_buf_appendf(ckhdr_buf, "; Secure"); kore_buf_appendf(header_buf, "set-cookie: %s\r\n", kore_buf_stringify(ckhdr_buf, NULL)); } const char * http_status_text(int status) { const char *r; switch (status) { case HTTP_STATUS_CONTINUE: r = "Continue"; break; case HTTP_STATUS_SWITCHING_PROTOCOLS: r = "Switching Protocols"; break; case HTTP_STATUS_OK: r = "OK"; break; case HTTP_STATUS_CREATED: r = "Created"; break; case HTTP_STATUS_ACCEPTED: r = "Accepted"; break; case HTTP_STATUS_NON_AUTHORITATIVE: r = "Non-Authoritative Information"; break; case HTTP_STATUS_NO_CONTENT: r = "No Content"; break; case HTTP_STATUS_RESET_CONTENT: r = "Reset Content"; break; case HTTP_STATUS_PARTIAL_CONTENT: r = "Partial Content"; break; case HTTP_STATUS_MULTIPLE_CHOICES: r = "Multiple Choices"; break; case HTTP_STATUS_MOVED_PERMANENTLY: r = "Moved Permanently"; break; case HTTP_STATUS_FOUND: r = "Found"; break; case HTTP_STATUS_SEE_OTHER: r = "See Other"; break; case HTTP_STATUS_NOT_MODIFIED: r = "Not Modified"; break; case HTTP_STATUS_USE_PROXY: r = "Use Proxy"; break; case HTTP_STATUS_TEMPORARY_REDIRECT: r = "Temporary Redirect"; break; case HTTP_STATUS_BAD_REQUEST: r = "Bad Request"; break; case HTTP_STATUS_UNAUTHORIZED: r = "Unauthorized"; break; case HTTP_STATUS_PAYMENT_REQUIRED: r = "Payment Required"; break; case HTTP_STATUS_FORBIDDEN: r = "Forbidden"; break; case HTTP_STATUS_NOT_FOUND: r = "Not Found"; break; case HTTP_STATUS_METHOD_NOT_ALLOWED: r = "Method Not Allowed"; break; case HTTP_STATUS_NOT_ACCEPTABLE: r = "Not Acceptable"; break; case HTTP_STATUS_PROXY_AUTH_REQUIRED: r = "Proxy Authentication Required"; break; case HTTP_STATUS_REQUEST_TIMEOUT: r = "Request Time-out"; break; case HTTP_STATUS_CONFLICT: r = "Conflict"; break; case HTTP_STATUS_GONE: r = "Gone"; break; case HTTP_STATUS_LENGTH_REQUIRED: r = "Length Required"; break; case HTTP_STATUS_PRECONDITION_FAILED: r = "Precondition Failed"; break; case HTTP_STATUS_REQUEST_ENTITY_TOO_LARGE: r = "Request Entity Too Large"; break; case HTTP_STATUS_REQUEST_URI_TOO_LARGE: r = "Request-URI Too Large"; break; case HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE: r = "Unsupported Media Type"; break; case HTTP_STATUS_REQUEST_RANGE_INVALID: r = "Requested range not satisfiable"; break; case HTTP_STATUS_EXPECTATION_FAILED: r = "Expectation Failed"; break; case HTTP_STATUS_INTERNAL_ERROR: r = "Internal Server Error"; break; case HTTP_STATUS_NOT_IMPLEMENTED: r = "Not Implemented"; break; case HTTP_STATUS_BAD_GATEWAY: r = "Bad Gateway"; break; case HTTP_STATUS_SERVICE_UNAVAILABLE: r = "Service Unavailable"; break; case HTTP_STATUS_GATEWAY_TIMEOUT: r = "Gateway Time-out"; break; case HTTP_STATUS_BAD_VERSION: r = "HTTP Version not supported"; break; default: r = ""; break; } return (r); } const char * http_method_text(int method) { char *r; switch(method) { case HTTP_METHOD_GET: r = "GET"; break; case HTTP_METHOD_POST: r = "POST"; break; case HTTP_METHOD_PUT: r = "PUT"; break; case HTTP_METHOD_DELETE: r = "DELETE"; break; case HTTP_METHOD_HEAD: r = "HEAD"; break; case HTTP_METHOD_OPTIONS: r = "OPTIONS"; break; case HTTP_METHOD_PATCH: r = "PATCH"; break; default: r = ""; break; } return (r); } int http_media_register(const char *ext, const char *type) { struct http_media_type *media; LIST_FOREACH(media, &http_media_types, list) { if (!strcasecmp(media->ext, ext)) return (KORE_RESULT_ERROR); } media = kore_calloc(1, sizeof(*media)); media->ext = kore_strdup(ext); media->type = kore_strdup(type); LIST_INSERT_HEAD(&http_media_types, media, list); return (KORE_RESULT_OK); } const char * http_media_type(const char *path) { const char *p; struct http_media_type *media; if ((p = strrchr(path, '.')) == NULL) return (NULL); p++; if (*p == '\0') return (NULL); LIST_FOREACH(media, &http_media_types, list) { if (!strcasecmp(media->ext, p)) return (media->type); } return (NULL); } char * http_validate_header(char *header) { u_int8_t idx; char *p, *value; for (p = header; *p != '\0'; p++) { idx = *p; if (idx > HTTP_MAP_LIMIT) return (NULL); if (*p == ':') { *(p)++ = '\0'; break; } if (http_token[idx] == 0x00) return (NULL); } while (isspace(*(unsigned char *)p)) p++; if (*p == '\0') return (NULL); value = p; while (*p != '\0') { idx = *p; if (idx > HTTP_MAP_LIMIT) return (NULL); if (http_field_content[idx] == 0x00) return (NULL); p++; } return (value); } kore-3.3.1/src/jsonrpc.c000066400000000000000000000270211347522026400150760ustar00rootroot00000000000000/* * Copyright (c) 2016 Raphaël Monrouzeau * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include #include "kore.h" #include "http.h" #include "jsonrpc.h" static void init_log(struct jsonrpc_log *log) { log->msg = NULL; log->next = log; log->prev = log; } static void append_log(struct jsonrpc_log *prev, int lvl, char *msg) { struct jsonrpc_log *new = kore_malloc(sizeof(struct jsonrpc_log)); new->lvl = lvl; new->msg = msg; new->prev = prev; new->next = prev->next; prev->next->prev = new; prev->next = new; } static void free_log(struct jsonrpc_log *root) { for (struct jsonrpc_log *it = root->next; it != root; it = it->next) { kore_free(it); } } static void init_request(struct jsonrpc_request *req) { init_log(&req->log); kore_buf_init(&req->buf, 256); req->gen = NULL; req->http = NULL; req->json = NULL; req->id = NULL; req->method = NULL; req->params = NULL; req->log_levels = (1 << LOG_EMERG) | (1 << LOG_ERR) | (1 << LOG_WARNING) | (1 << LOG_NOTICE); req->flags = 0; } void jsonrpc_destroy_request(struct jsonrpc_request *req) { if (req->gen != NULL) { yajl_gen_free(req->gen); req->gen = NULL; } if (req->json != NULL) { yajl_tree_free(req->json); req->json = NULL; } kore_buf_cleanup(&req->buf); free_log(&req->log); } void jsonrpc_log(struct jsonrpc_request *req, int lvl, const char *fmt, ...) { va_list ap; char *msg; size_t start = req->buf.offset; va_start(ap, fmt); kore_buf_appendv(&req->buf, fmt, ap); va_end(ap); msg = kore_buf_stringify(&req->buf, NULL) + start; append_log(&req->log, lvl, msg); } static int read_json_body(struct http_request *http_req, struct jsonrpc_request *req) { char *body_string; ssize_t body_len = 0, chunk_len; u_int8_t chunk_buffer[BUFSIZ]; char error_buffer[1024]; for (;;) { chunk_len = http_body_read(http_req, chunk_buffer, sizeof(chunk_buffer)); if (chunk_len == -1) { jsonrpc_log(req, LOG_CRIT, "Failed to read request body"); return (JSONRPC_SERVER_ERROR); } if (chunk_len == 0) break; if (body_len > SSIZE_MAX - chunk_len) { jsonrpc_log(req, LOG_CRIT, "Request body bigger than the platform accepts"); return (JSONRPC_SERVER_ERROR); } body_len += chunk_len; kore_buf_append(&req->buf, chunk_buffer, chunk_len); } /* Grab our body data as a NUL-terminated string. */ body_string = kore_buf_stringify(&req->buf, NULL); /* Parse the body via yajl now. */ *error_buffer = 0; req->json = yajl_tree_parse(body_string, error_buffer, sizeof(error_buffer)); if (req->json == NULL) { if (strlen(error_buffer)) { jsonrpc_log(req, LOG_ERR, "Invalid json: %s", error_buffer); } else { jsonrpc_log(req, LOG_ERR, "Invalid json"); } return (JSONRPC_PARSE_ERROR); } return (0); } static int parse_json_body(struct jsonrpc_request *req) { static const char *proto_path[] = { "jsonrpc", NULL }; static const char *id_path[] = { "id", NULL }; static const char *method_path[] = { "method", NULL }; static const char *params_path[] = { "params", NULL }; /* Check protocol first. */ yajl_val proto = yajl_tree_get(req->json, proto_path, yajl_t_string); if (proto == NULL) { jsonrpc_log(req, LOG_ERR, "JSON-RPC protocol MUST be indicated and \"2.0\""); return (JSONRPC_PARSE_ERROR); } char *proto_string = YAJL_GET_STRING(proto); if (proto_string == NULL) { jsonrpc_log(req, LOG_ERR, "JSON-RPC protocol MUST be indicated and \"2.0\""); return (JSONRPC_PARSE_ERROR); } if (strcmp("2.0", proto_string) != 0) { jsonrpc_log(req, LOG_ERR, "JSON-RPC protocol MUST be indicated and \"2.0\""); return (JSONRPC_PARSE_ERROR); } /* Check id. */ if ((req->id = yajl_tree_get(req->json, id_path, yajl_t_any)) != NULL) { if (YAJL_IS_NUMBER(req->id)) { if (!YAJL_IS_INTEGER(req->id)) { jsonrpc_log(req, LOG_ERR, "JSON-RPC id SHOULD NOT contain fractional" " parts"); return (JSONRPC_PARSE_ERROR); } } else if (!YAJL_IS_STRING(req->id)) { jsonrpc_log(req, LOG_ERR, "JSON-RPC id MUST contain a String or Number"); return (JSONRPC_PARSE_ERROR); } } /* Check method. */ if ((req->method = YAJL_GET_STRING(yajl_tree_get(req->json, method_path, yajl_t_string))) == NULL) { jsonrpc_log(req, LOG_ERR, "JSON-RPC method MUST exist and be a String"); return (JSONRPC_PARSE_ERROR); } /* Check params. */ req->params = yajl_tree_get(req->json, params_path, yajl_t_any); if (!(req->params == NULL || YAJL_IS_ARRAY(req->params) || YAJL_IS_OBJECT(req->params))) { jsonrpc_log(req, LOG_ERR, "JSON-RPC params MUST be Object or Array"); return (JSONRPC_PARSE_ERROR); } return (0); } int jsonrpc_read_request(struct http_request *http_req, struct jsonrpc_request *req) { int ret; init_request(req); req->http = http_req; if ((ret = read_json_body(http_req, req)) != 0) return (ret); return parse_json_body(req); } static int write_id(yajl_gen gen, yajl_val id) { int status; if (YAJL_GEN_KO(status = YAJL_GEN_CONST_STRING(gen, "id"))) return (status); if (YAJL_IS_NULL(id)) return yajl_gen_null(gen); if (YAJL_IS_NUMBER(id)) { if (YAJL_IS_INTEGER(id)) return yajl_gen_integer(gen, YAJL_GET_INTEGER(id)); return yajl_gen_null(gen); } if (YAJL_IS_STRING(id)) { char *id_str = YAJL_GET_STRING(id); return yajl_gen_string(gen, (unsigned char *)id_str, strlen(id_str)); } return yajl_gen_null(gen); } static int open_response(yajl_gen genctx, yajl_val id) { int status; if (YAJL_GEN_KO(status = yajl_gen_map_open(genctx))) goto failed; if (YAJL_GEN_KO(status = YAJL_GEN_CONST_STRING(genctx, "jsonrpc"))) goto failed; if (YAJL_GEN_KO(status = YAJL_GEN_CONST_STRING(genctx, "2.0"))) goto failed; status = write_id(genctx, id); failed: return (status); } static int close_response(yajl_gen genctx) { int status; if (YAJL_GEN_KO(status = yajl_gen_map_close(genctx))) goto failed; status = yajl_gen_map_close(genctx); failed: return (status); } static int write_log(struct jsonrpc_request *req) { bool wrote_smth = false; int status = 0; for (struct jsonrpc_log *log = req->log.next; log != &req->log; log = log->next) { if (((1 << log->lvl) & req->log_levels) == 0) continue; if (!wrote_smth) { if (YAJL_GEN_KO(status = YAJL_GEN_CONST_STRING(req->gen, "data"))) goto failed; if (YAJL_GEN_KO(status = yajl_gen_array_open(req->gen))) goto failed; yajl_gen_config(req->gen, yajl_gen_validate_utf8, 1); wrote_smth = true; } if (YAJL_GEN_KO(status = yajl_gen_array_open(req->gen))) goto failed; if (YAJL_GEN_KO(status = yajl_gen_integer(req->gen, log->lvl))) goto failed; if (YAJL_GEN_KO(status = yajl_gen_string(req->gen, (unsigned char *)log->msg, strlen(log->msg)))) goto failed; if (YAJL_GEN_KO(status = yajl_gen_array_close(req->gen))) goto failed; } if (wrote_smth) { yajl_gen_config(req->gen, yajl_gen_validate_utf8, 0); status = yajl_gen_array_close(req->gen); } failed: return (status); } static int write_error(struct jsonrpc_request *req, int code, const char *message) { int status; yajl_gen_config(req->gen, yajl_gen_validate_utf8, 0); if (YAJL_GEN_KO(status = open_response(req->gen, req->id))) goto failed; if (YAJL_GEN_KO(status = YAJL_GEN_CONST_STRING(req->gen, "error"))) goto failed; if (YAJL_GEN_KO(status = yajl_gen_map_open(req->gen))) goto failed; if (YAJL_GEN_KO(status = YAJL_GEN_CONST_STRING(req->gen, "code"))) goto failed; if (YAJL_GEN_KO(status = yajl_gen_integer(req->gen, code))) goto failed; if (YAJL_GEN_KO(status = YAJL_GEN_CONST_STRING(req->gen, "message"))) goto failed; yajl_gen_config(req->gen, yajl_gen_validate_utf8, 1); if (YAJL_GEN_KO(status = yajl_gen_string(req->gen, (const unsigned char *)message, strlen(message)))) goto failed; yajl_gen_config(req->gen, yajl_gen_validate_utf8, 0); if (YAJL_GEN_KO(status = write_log(req))) goto failed; status = close_response(req->gen); failed: return (status); } static const char * known_msg(int code) { switch (code) { case JSONRPC_PARSE_ERROR: return (JSONRPC_PARSE_ERROR_MSG); case JSONRPC_INVALID_REQUEST: return (JSONRPC_INVALID_REQUEST_MSG); case JSONRPC_METHOD_NOT_FOUND: return (JSONRPC_METHOD_NOT_FOUND_MSG); case JSONRPC_INVALID_PARAMS: return (JSONRPC_INVALID_PARAMS_MSG); case JSONRPC_INTERNAL_ERROR: return (JSONRPC_INTERNAL_ERROR_MSG); case JSONRPC_SERVER_ERROR: return (JSONRPC_SERVER_ERROR_MSG); case JSONRPC_LIMIT_REACHED: return (JSONRPC_LIMIT_REACHED_MSG); default: return (NULL); } } int jsonrpc_error(struct jsonrpc_request *req, int code, const char *msg) { char *msg_fallback; const unsigned char *body = NULL; size_t body_len = 0; int status; if (req->id == NULL) goto succeeded; if ((req->gen = yajl_gen_alloc(NULL)) == NULL) { kore_log(LOG_ERR, "jsonrpc_error: Failed to allocate yajl gen"); goto failed; } yajl_gen_config(req->gen, yajl_gen_beautify, req->flags & yajl_gen_beautify); if (msg == NULL) msg = known_msg(code); if (msg == NULL) { size_t start = req->buf.offset; kore_buf_appendf(&req->buf, "%d", code); msg_fallback = kore_buf_stringify(&req->buf, NULL) + start; } if (YAJL_GEN_KO(status = write_error(req, code, msg ? msg : msg_fallback))) { kore_log(LOG_ERR, "jsonrpc_error: Failed to yajl gen text [%d]", status); goto failed; } http_response_header(req->http, "content-type", "application/json"); yajl_gen_get_buf(req->gen, &body, &body_len); succeeded: http_response(req->http, 200, body, body_len); if (req->gen != NULL) yajl_gen_clear(req->gen); jsonrpc_destroy_request(req); return (KORE_RESULT_OK); failed: http_response(req->http, 500, NULL, 0); jsonrpc_destroy_request(req); return (KORE_RESULT_OK); } int jsonrpc_result(struct jsonrpc_request *req, int (*write_result)(struct jsonrpc_request *, void *), void *ctx) { const unsigned char *body = NULL; size_t body_len = 0; if (req->id == NULL) goto succeeded; if ((req->gen = yajl_gen_alloc(NULL)) == NULL) { kore_log(LOG_ERR, "jsonrpc_result: Failed to allocate yajl gen"); goto failed; } yajl_gen_config(req->gen, yajl_gen_beautify, req->flags & yajl_gen_beautify); yajl_gen_config(req->gen, yajl_gen_validate_utf8, 0); if (YAJL_GEN_KO(open_response(req->gen, req->id))) goto failed; if (YAJL_GEN_KO(YAJL_GEN_CONST_STRING(req->gen, "result"))) goto failed; if (YAJL_GEN_KO(write_result(req, ctx))) goto failed; if (YAJL_GEN_KO(yajl_gen_map_close(req->gen))) goto failed; http_response_header(req->http, "content-type", "application/json"); yajl_gen_get_buf(req->gen, &body, &body_len); succeeded: http_response(req->http, 200, body, body_len); if (req->gen != NULL) yajl_gen_clear(req->gen); jsonrpc_destroy_request(req); return (KORE_RESULT_OK); failed: http_response(req->http, 500, NULL, 0); jsonrpc_destroy_request(req); return (KORE_RESULT_OK); } kore-3.3.1/src/keymgr.c000066400000000000000000000270471347522026400147260ustar00rootroot00000000000000/* * Copyright (c) 2017-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * The kore keymgr process is responsible for managing certificates * and their matching private keys. * * It is the only process in Kore that holds the private keys (the workers * do not have a copy of them in memory). * * When a worker requires the private key for signing it will send a message * to the keymgr with the to-be-signed data (KORE_MSG_KEYMGR_REQ). The keymgr * will perform the signing and respond with a KORE_MSG_KEYMGR_RESP message. * * The keymgr can transparently reload the private keys and certificates * for a configured domain when it receives a SIGUSR1. It it reloads them * it will send the newly loaded certificate chains to the worker processes * which will update their TLS contexts accordingly. */ #include #include #include #include #include #include #include #include #include #include #include "kore.h" #if !defined(KORE_NO_TLS) #define RAND_TMP_FILE "rnd.tmp" #define RAND_POLL_INTERVAL (1800 * 1000) #define RAND_FILE_SIZE 1024 struct key { EVP_PKEY *pkey; struct kore_domain *dom; TAILQ_ENTRY(key) list; }; char *rand_file = NULL; static TAILQ_HEAD(, key) keys; static int initialized = 0; static void keymgr_reload(void); static void keymgr_load_randfile(void); static void keymgr_save_randfile(void); static void keymgr_load_privatekey(struct kore_domain *); static void keymgr_msg_recv(struct kore_msg *, const void *); static void keymgr_entropy_request(struct kore_msg *, const void *); static void keymgr_certificate_request(struct kore_msg *, const void *); static void keymgr_submit_certificates(struct kore_domain *, u_int16_t); static void keymgr_submit_file(u_int8_t, struct kore_domain *, const char *, u_int16_t, int); static void keymgr_rsa_encrypt(struct kore_msg *, const void *, struct key *); static void keymgr_ecdsa_sign(struct kore_msg *, const void *, struct key *); char *keymgr_root_path = NULL; char *keymgr_runas_user = NULL; void kore_keymgr_run(void) { int quit; u_int64_t now, last_seed; quit = 0; kore_listener_cleanup(); kore_module_cleanup(); net_init(); kore_connection_init(); kore_platform_event_init(); kore_msg_worker_init(); kore_msg_register(KORE_MSG_KEYMGR_REQ, keymgr_msg_recv); kore_msg_register(KORE_MSG_ENTROPY_REQ, keymgr_entropy_request); kore_msg_register(KORE_MSG_CERTIFICATE_REQ, keymgr_certificate_request); kore_worker_privdrop(keymgr_runas_user, keymgr_root_path); if (rand_file != NULL) { keymgr_load_randfile(); keymgr_save_randfile(); } else if (!kore_quiet) { kore_log(LOG_WARNING, "no rand_file location specified"); } initialized = 1; keymgr_reload(); RAND_poll(); last_seed = 0; #if defined(__OpenBSD__) if (pledge("stdio rpath", NULL) == -1) fatal("failed to pledge keymgr process"); #endif if (!kore_quiet) kore_log(LOG_NOTICE, "key manager started"); while (quit != 1) { now = kore_time_ms(); if ((now - last_seed) > RAND_POLL_INTERVAL) { RAND_poll(); last_seed = now; } if (sig_recv != 0) { switch (sig_recv) { case SIGQUIT: case SIGINT: case SIGTERM: quit = 1; break; case SIGUSR1: keymgr_reload(); break; default: break; } sig_recv = 0; } kore_platform_event_wait(1000); kore_connection_prune(KORE_CONNECTION_PRUNE_DISCONNECT); } kore_keymgr_cleanup(1); kore_platform_event_cleanup(); kore_connection_cleanup(); net_cleanup(); } void kore_keymgr_cleanup(int final) { struct key *key, *next; if (final && !kore_quiet) kore_log(LOG_NOTICE, "cleaning up keys"); if (initialized == 0) return; for (key = TAILQ_FIRST(&keys); key != NULL; key = next) { next = TAILQ_NEXT(key, list); TAILQ_REMOVE(&keys, key, list); EVP_PKEY_free(key->pkey); kore_free(key); } } static void keymgr_reload(void) { struct kore_domain *dom; if (!kore_quiet) kore_log(LOG_INFO, "(re)loading certificates, keys and CRLs"); kore_keymgr_cleanup(0); TAILQ_INIT(&keys); kore_domain_callback(keymgr_load_privatekey); /* can't use kore_domain_callback() due to dst parameter. */ TAILQ_FOREACH(dom, &domains, list) keymgr_submit_certificates(dom, KORE_MSG_WORKER_ALL); } static void keymgr_submit_certificates(struct kore_domain *dom, u_int16_t dst) { keymgr_submit_file(KORE_MSG_CERTIFICATE, dom, dom->certfile, dst, 0); if (dom->crlfile != NULL) keymgr_submit_file(KORE_MSG_CRL, dom, dom->crlfile, dst, 1); } static void keymgr_submit_file(u_int8_t id, struct kore_domain *dom, const char *file, u_int16_t dst, int can_fail) { int fd; struct stat st; ssize_t ret; size_t len; struct kore_x509_msg *msg; u_int8_t *payload; if ((fd = open(file, O_RDONLY)) == -1) { if (errno == ENOENT && can_fail) return; fatal("open(%s): %s", file, errno_s); } if (fstat(fd, &st) == -1) fatal("stat(%s): %s", file, errno_s); if (!S_ISREG(st.st_mode)) fatal("%s is not a file", file); if (st.st_size <= 0 || st.st_size > (1024 * 1024 * 10)) { fatal("%s length is not valid (%jd)", file, (intmax_t)st.st_size); } len = sizeof(*msg) + st.st_size; payload = kore_calloc(1, len); msg = (struct kore_x509_msg *)payload; msg->domain_len = strlen(dom->domain); if (msg->domain_len > sizeof(msg->domain)) fatal("domain name '%s' too long", dom->domain); memcpy(msg->domain, dom->domain, msg->domain_len); msg->data_len = st.st_size; ret = read(fd, &msg->data[0], msg->data_len); if (ret == -1) fatal("failed to read from %s: %s", file, errno_s); if (ret == 0) fatal("eof while reading %s", file); if ((size_t)ret != msg->data_len) { fatal("bad read on %s: expected %zu, got %zd", file, msg->data_len, ret); } kore_msg_send(dst, id, payload, len); kore_free(payload); close(fd); } static void keymgr_load_randfile(void) { int fd; struct stat st; ssize_t ret; size_t total; u_int8_t buf[RAND_FILE_SIZE]; if (rand_file == NULL) return; if ((fd = open(rand_file, O_RDONLY)) == -1) fatal("open(%s): %s", rand_file, errno_s); if (fstat(fd, &st) == -1) fatal("stat(%s): %s", rand_file, errno_s); if (!S_ISREG(st.st_mode)) fatal("%s is not a file", rand_file); if (st.st_size != RAND_FILE_SIZE) fatal("%s has an invalid size", rand_file); total = 0; while (total != RAND_FILE_SIZE) { ret = read(fd, buf, sizeof(buf)); if (ret == 0) fatal("EOF on %s", rand_file); if (ret == -1) { if (errno == EINTR) continue; fatal("read(%s): %s", rand_file, errno_s); } total += (size_t)ret; RAND_seed(buf, (int)ret); OPENSSL_cleanse(buf, sizeof(buf)); } (void)close(fd); if (unlink(rand_file) == -1) { kore_log(LOG_WARNING, "failed to unlink %s: %s", rand_file, errno_s); } } static void keymgr_save_randfile(void) { int fd; struct stat st; ssize_t ret; u_int8_t buf[RAND_FILE_SIZE]; if (rand_file == NULL) return; if (stat(RAND_TMP_FILE, &st) != -1) { kore_log(LOG_WARNING, "removing stale %s file", RAND_TMP_FILE); (void)unlink(RAND_TMP_FILE); } if (RAND_bytes(buf, sizeof(buf)) != 1) { kore_log(LOG_WARNING, "RAND_bytes: %s", ssl_errno_s); goto cleanup; } if ((fd = open(RAND_TMP_FILE, O_CREAT | O_TRUNC | O_WRONLY, 0400)) == -1) { kore_log(LOG_WARNING, "failed to open %s: %s - random data not written", RAND_TMP_FILE, errno_s); goto cleanup; } ret = write(fd, buf, sizeof(buf)); if (ret == -1 || (size_t)ret != sizeof(buf)) { kore_log(LOG_WARNING, "failed to write random data"); (void)close(fd); (void)unlink(RAND_TMP_FILE); goto cleanup; } if (close(fd) == -1) kore_log(LOG_WARNING, "close(%s): %s", RAND_TMP_FILE, errno_s); if (rename(RAND_TMP_FILE, rand_file) == -1) { kore_log(LOG_WARNING, "rename(%s, %s): %s", RAND_TMP_FILE, rand_file, errno_s); (void)unlink(rand_file); (void)unlink(RAND_TMP_FILE); } cleanup: OPENSSL_cleanse(buf, sizeof(buf)); } static void keymgr_load_privatekey(struct kore_domain *dom) { FILE *fp; struct key *key; if ((fp = fopen(dom->certkey, "r")) == NULL) fatal("failed to open private key: %s", dom->certkey); key = kore_calloc(1, sizeof(*key)); key->dom = dom; if ((key->pkey = PEM_read_PrivateKey(fp, NULL, NULL, NULL)) == NULL) fatal("PEM_read_PrivateKey: %s", ssl_errno_s); (void)fclose(fp); TAILQ_INSERT_TAIL(&keys, key, list); } static void keymgr_certificate_request(struct kore_msg *msg, const void *data) { struct kore_domain *dom; TAILQ_FOREACH(dom, &domains, list) keymgr_submit_certificates(dom, msg->src); } static void keymgr_entropy_request(struct kore_msg *msg, const void *data) { u_int8_t buf[RAND_FILE_SIZE]; if (RAND_bytes(buf, sizeof(buf)) != 1) { kore_log(LOG_WARNING, "failed to generate entropy for worker %u: %s", msg->src, ssl_errno_s); return; } /* No cleanse, this stuff is leaked in the kernel path anyway. */ kore_msg_send(msg->src, KORE_MSG_ENTROPY_RESP, buf, sizeof(buf)); } static void keymgr_msg_recv(struct kore_msg *msg, const void *data) { const struct kore_keyreq *req; struct key *key; if (msg->length < sizeof(*req)) return; req = (const struct kore_keyreq *)data; if (msg->length != (sizeof(*req) + req->data_len)) return; if (req->domain_len > KORE_DOMAINNAME_LEN) return; key = NULL; TAILQ_FOREACH(key, &keys, list) { if (!strncmp(key->dom->domain, req->domain, req->domain_len)) break; } if (key == NULL) return; switch (EVP_PKEY_id(key->pkey)) { case EVP_PKEY_RSA: keymgr_rsa_encrypt(msg, data, key); break; case EVP_PKEY_EC: keymgr_ecdsa_sign(msg, data, key); break; default: break; } } static void keymgr_rsa_encrypt(struct kore_msg *msg, const void *data, struct key *key) { int ret; RSA *rsa; const struct kore_keyreq *req; size_t keylen; u_int8_t buf[1024]; req = (const struct kore_keyreq *)data; #if !defined(LIBRESSL_VERSION_TEXT) && OPENSSL_VERSION_NUMBER >= 0x10100000L rsa = EVP_PKEY_get0_RSA(key->pkey); #else rsa = key->pkey->pkey.rsa; #endif keylen = RSA_size(rsa); if (req->data_len > keylen || keylen > sizeof(buf)) return; ret = RSA_private_encrypt(req->data_len, req->data, buf, rsa, req->padding); if (ret != RSA_size(rsa)) return; kore_msg_send(msg->src, KORE_MSG_KEYMGR_RESP, buf, ret); } static void keymgr_ecdsa_sign(struct kore_msg *msg, const void *data, struct key *key) { size_t len; EC_KEY *ec; const struct kore_keyreq *req; unsigned int siglen; u_int8_t sig[1024]; req = (const struct kore_keyreq *)data; #if !defined(LIBRESSL_VERSION_TEXT) && OPENSSL_VERSION_NUMBER >= 0x10100000L ec = EVP_PKEY_get0_EC_KEY(key->pkey); #else ec = key->pkey->pkey.ec; #endif len = ECDSA_size(ec); if (req->data_len > len || len > sizeof(sig)) return; if (ECDSA_sign(EVP_PKEY_NONE, req->data, req->data_len, sig, &siglen, ec) == 0) return; if (siglen > sizeof(sig)) return; kore_msg_send(msg->src, KORE_MSG_KEYMGR_RESP, sig, siglen); } #endif kore-3.3.1/src/kore.c000066400000000000000000000374361347522026400143730ustar00rootroot00000000000000/* * Copyright (c) 2013-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include #include #include #include #include #include #include #include "kore.h" #if !defined(KORE_NO_HTTP) #include "http.h" #endif #if defined(KORE_USE_CURL) #include "curl.h" #endif #if defined(KORE_USE_PYTHON) #include "python_api.h" #endif volatile sig_atomic_t sig_recv; struct listener_head listeners; u_int8_t nlisteners; int kore_argc = 0; pid_t kore_pid = -1; u_int16_t cpu_count = 1; int foreground = 0; int kore_debug = 0; int kore_quiet = 0; int skip_runas = 0; int skip_chroot = 0; u_int8_t worker_count = 0; char **kore_argv = NULL; char *kore_progname = NULL; char *kore_root_path = NULL; char *kore_runas_user = NULL; u_int32_t kore_socket_backlog = 5000; char *kore_pidfile = KORE_PIDFILE_DEFAULT; char *kore_tls_cipher_list = KORE_DEFAULT_CIPHER_LIST; extern char **environ; extern char *__progname; static size_t proctitle_maxlen = 0; static void usage(void); static void version(void); static void kore_write_kore_pid(void); static void kore_proctitle_setup(void); static void kore_server_sslstart(void); static void kore_server_start(int, char *[]); static void usage(void) { fprintf(stderr, "Usage: %s [options]\n", __progname); fprintf(stderr, "\n"); fprintf(stderr, "Available options:\n"); #if !defined(KORE_SINGLE_BINARY) fprintf(stderr, "\t-c\tconfiguration to use\n"); #endif #if defined(KORE_DEBUG) fprintf(stderr, "\t-d\trun with debug on\n"); #endif fprintf(stderr, "\t-f\tstart in foreground\n"); fprintf(stderr, "\t-h\tthis help text\n"); fprintf(stderr, "\t-n\tdo not chroot\n"); fprintf(stderr, "\t-q\tonly log errors\n"); fprintf(stderr, "\t-r\tdo not drop privileges\n"); fprintf(stderr, "\t-v\tdisplay %s build information\n", __progname); #if !defined(KORE_SINGLE_BINARY) fprintf(stderr, "\nFind more information on https://kore.io\n"); #else fprintf(stderr, "\nBuilt using https://kore.io\n"); #endif exit(1); } static void version(void) { printf("%s ", kore_version); #if defined(KORE_NO_TLS) printf("no-tls "); #endif #if defined(KORE_NO_HTTP) printf("no-http "); #endif #if defined(KORE_USE_CURL) printf("curl "); #endif #if defined(KORE_USE_PGSQL) printf("pgsql "); #endif #if defined(KORE_USE_TASKS) printf("tasks "); #endif #if defined(KORE_DEBUG) printf("debug "); #endif #if defined(KORE_SINGLE_BINARY) printf("single "); #endif #if defined(KORE_USE_PYTHON) printf("python "); #endif printf("\n"); exit(0); } int main(int argc, char *argv[]) { struct kore_runtime_call *rcall; int ch, flags; flags = 0; kore_argc = argc; kore_argv = argv; #if !defined(KORE_SINGLE_BINARY) while ((ch = getopt(argc, argv, "c:dfhnqrv")) != -1) { #else while ((ch = getopt(argc, argv, "dfhnqrv")) != -1) { #endif flags++; switch (ch) { #if !defined(KORE_SINGLE_BINARY) case 'c': config_file = optarg; break; #endif #if defined(KORE_DEBUG) case 'd': kore_debug = 1; break; #endif case 'f': foreground = 1; break; case 'h': usage(); break; case 'n': skip_chroot = 1; break; case 'q': kore_quiet = 1; break; case 'r': skip_runas = 1; break; case 'v': version(); break; default: usage(); } } kore_mem_init(); kore_progname = kore_strdup(argv[0]); kore_proctitle_setup(); argc -= optind; argv += optind; #if !defined(KORE_SINGLE_BINARY) if (argc > 0) fatal("did you mean to run `kodev' instead?"); #endif kore_pid = getpid(); nlisteners = 0; LIST_INIT(&listeners); kore_log_init(); #if !defined(KORE_NO_HTTP) http_parent_init(); #if defined(KORE_USE_CURL) kore_curl_sysinit(); #endif kore_auth_init(); kore_validator_init(); kore_filemap_init(); #endif kore_domain_init(); kore_module_init(); kore_server_sslstart(); #if !defined(KORE_SINGLE_BINARY) if (config_file == NULL) usage(); #endif kore_module_load(NULL, NULL, KORE_MODULE_NATIVE); #if defined(KORE_USE_PYTHON) kore_python_init(); #endif kore_parse_config(); #if defined(KORE_SINGLE_BINARY) rcall = kore_runtime_getcall("kore_parent_configure"); if (rcall != NULL) { kore_runtime_configure(rcall, argc, argv); kore_free(rcall); } #endif kore_platform_init(); #if !defined(KORE_NO_HTTP) if (http_body_disk_offload > 0) { if (mkdir(http_body_disk_path, 0700) == -1 && errno != EEXIST) { printf("can't create http_body_disk_path '%s': %s\n", http_body_disk_path, errno_s); return (KORE_RESULT_ERROR); } } #endif kore_signal_setup(); kore_server_start(argc, argv); if (!kore_quiet) kore_log(LOG_NOTICE, "server shutting down"); kore_worker_shutdown(); rcall = kore_runtime_getcall("kore_parent_teardown"); if (rcall != NULL) { kore_runtime_execute(rcall); kore_free(rcall); } if (unlink(kore_pidfile) == -1 && errno != ENOENT) kore_log(LOG_NOTICE, "failed to remove pidfile (%s)", errno_s); kore_listener_cleanup(); if (!kore_quiet) kore_log(LOG_NOTICE, "goodbye"); #if defined(KORE_USE_PYTHON) kore_python_cleanup(); #endif kore_mem_cleanup(); return (0); } #if !defined(KORE_NO_TLS) int kore_tls_sni_cb(SSL *ssl, int *ad, void *arg) { struct kore_domain *dom; const char *sname; sname = SSL_get_servername(ssl, TLSEXT_NAMETYPE_host_name); kore_debug("kore_tls_sni_cb(): received host %s", sname); if (sname != NULL && (dom = kore_domain_lookup(sname)) != NULL) { if (dom->ssl_ctx == NULL) { kore_log(LOG_NOTICE, "TLS configuration for %s not complete", dom->domain); return (SSL_TLSEXT_ERR_NOACK); } kore_debug("kore_ssl_sni_cb(): Using %s CTX", sname); SSL_set_SSL_CTX(ssl, dom->ssl_ctx); if (dom->cafile != NULL) { SSL_set_verify(ssl, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, NULL); } else { SSL_set_verify(ssl, SSL_VERIFY_NONE, NULL); } return (SSL_TLSEXT_ERR_OK); } return (SSL_TLSEXT_ERR_NOACK); } void kore_tls_info_callback(const SSL *ssl, int flags, int ret) { struct connection *c; if (flags & SSL_CB_HANDSHAKE_START) { if ((c = SSL_get_app_data(ssl)) == NULL) fatal("no SSL_get_app_data"); #if defined(TLS1_3_VERSION) if (SSL_version(ssl) != TLS1_3_VERSION) #endif c->tls_reneg++; } } #endif int kore_server_bind(const char *ip, const char *port, const char *ccb) { int r; struct listener *l; struct addrinfo hints, *results; kore_debug("kore_server_bind(%s, %s)", ip, port); memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; hints.ai_protocol = IPPROTO_TCP; hints.ai_flags = 0; r = getaddrinfo(ip, port, &hints, &results); if (r != 0) fatal("getaddrinfo(%s): %s", ip, gai_strerror(r)); if ((l = kore_listener_alloc(results->ai_family, ccb)) == NULL) { freeaddrinfo(results); return (KORE_RESULT_ERROR); } if (bind(l->fd, results->ai_addr, results->ai_addrlen) == -1) { kore_listener_free(l); freeaddrinfo(results); kore_log(LOG_ERR, "bind(): %s", errno_s); return (KORE_RESULT_ERROR); } freeaddrinfo(results); if (listen(l->fd, kore_socket_backlog) == -1) { kore_listener_free(l); kore_log(LOG_ERR, "listen(): %s", errno_s); return (KORE_RESULT_ERROR); } if (foreground && !kore_quiet) { #if !defined(KORE_NO_TLS) kore_log(LOG_NOTICE, "running on https://%s:%s", ip, port); #else kore_log(LOG_NOTICE, "running on http://%s:%s", ip, port); #endif } return (KORE_RESULT_OK); } int kore_server_bind_unix(const char *path, const char *ccb) { struct listener *l; int len; struct sockaddr_un sun; socklen_t socklen; memset(&sun, 0, sizeof(sun)); sun.sun_family = AF_UNIX; len = snprintf(sun.sun_path, sizeof(sun.sun_path), "%s", path); if (len == -1 || (size_t)len >= sizeof(sun.sun_path)) { kore_log(LOG_ERR, "unix socket path '%s' too long", path); return (KORE_RESULT_ERROR); } #if defined(__linux__) if (sun.sun_path[0] == '@') sun.sun_path[0] = '\0'; socklen = sizeof(sun.sun_family) + len; #else socklen = sizeof(sun); #endif if ((l = kore_listener_alloc(AF_UNIX, ccb)) == NULL) return (KORE_RESULT_ERROR); if (bind(l->fd, (struct sockaddr *)&sun, socklen) == -1) { kore_log(LOG_ERR, "bind: %s", errno_s); kore_listener_free(l); return (KORE_RESULT_ERROR); } if (listen(l->fd, kore_socket_backlog) == -1) { kore_log(LOG_ERR, "listen(): %s", errno_s); kore_listener_free(l); return (KORE_RESULT_ERROR); } if (foreground && !kore_quiet) kore_log(LOG_NOTICE, "running on %s", path); return (KORE_RESULT_OK); } struct listener * kore_listener_alloc(int family, const char *ccb) { struct listener *l; switch (family) { case AF_INET: case AF_INET6: case AF_UNIX: break; default: fatal("unknown address family %d", family); } l = kore_calloc(1, sizeof(struct listener)); nlisteners++; LIST_INSERT_HEAD(&listeners, l, list); l->fd = -1; l->family = family; l->evt.type = KORE_TYPE_LISTENER; l->evt.handle = kore_listener_accept; if ((l->fd = socket(family, SOCK_STREAM, 0)) == -1) { kore_listener_free(l); kore_log(LOG_ERR, "socket(): %s", errno_s); return (NULL); } if (fcntl(l->fd, F_SETFD, FD_CLOEXEC) == -1) { kore_listener_free(l); kore_log(LOG_ERR, "fcntl(): %s", errno_s); return (NULL); } if (!kore_connection_nonblock(l->fd, family != AF_UNIX)) { kore_listener_free(l); kore_log(LOG_ERR, "kore_connection_nonblock(): %s", errno_s); return (NULL); } if (!kore_sockopt(l->fd, SOL_SOCKET, SO_REUSEADDR)) { kore_listener_free(l); return (NULL); } if (ccb != NULL) { if ((l->connect = kore_runtime_getcall(ccb)) == NULL) { kore_log(LOG_ERR, "no such callback: '%s'", ccb); kore_listener_free(l); return (NULL); } } else { l->connect = NULL; } return (l); } void kore_listener_free(struct listener *l) { LIST_REMOVE(l, list); if (l->fd != -1) close(l->fd); kore_free(l); } void kore_listener_accept(void *arg, int error) { struct connection *c; struct listener *l = arg; u_int32_t accepted; if (error) fatal("error on listening socket"); if (!(l->evt.flags & KORE_EVENT_READ)) return; accepted = 0; while (worker_active_connections < worker_max_connections) { if (worker_accept_threshold != 0 && accepted >= worker_accept_threshold) { kore_worker_make_busy(); break; } if (!kore_connection_accept(l, &c)) break; if (c == NULL) break; accepted++; kore_platform_event_all(c->fd, c); } } int kore_sockopt(int fd, int what, int opt) { int on; on = 1; if (setsockopt(fd, what, opt, (const char *)&on, sizeof(on)) == -1) { kore_log(LOG_ERR, "setsockopt(): %s", errno_s); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } void kore_signal_setup(void) { struct sigaction sa; sig_recv = 0; memset(&sa, 0, sizeof(sa)); sa.sa_handler = kore_signal; if (sigfillset(&sa.sa_mask) == -1) fatal("sigfillset: %s", errno_s); if (sigaction(SIGHUP, &sa, NULL) == -1) fatal("sigaction: %s", errno_s); if (sigaction(SIGQUIT, &sa, NULL) == -1) fatal("sigaction: %s", errno_s); if (sigaction(SIGTERM, &sa, NULL) == -1) fatal("sigaction: %s", errno_s); if (sigaction(SIGUSR1, &sa, NULL) == -1) fatal("sigaction: %s", errno_s); if (sigaction(SIGCHLD, &sa, NULL) == -1) fatal("sigaction: %s", errno_s); if (foreground) { if (sigaction(SIGINT, &sa, NULL) == -1) fatal("sigaction: %s", errno_s); } else { (void)signal(SIGINT, SIG_IGN); } (void)signal(SIGPIPE, SIG_IGN); } void kore_listener_cleanup(void) { struct listener *l; while (!LIST_EMPTY(&listeners)) { l = LIST_FIRST(&listeners); kore_listener_free(l); } } void kore_signal(int sig) { sig_recv = sig; } void kore_shutdown(void) { if (worker != NULL) { kore_msg_send(KORE_MSG_PARENT, KORE_MSG_SHUTDOWN, NULL, 0); return; } fatal("kore_shutdown: called from parent"); } void kore_proctitle(const char *title) { int len; kore_argv[1] = NULL; len = snprintf(kore_argv[0], proctitle_maxlen, "%s %s", basename(kore_progname), title); if (len == -1 || (size_t)len >= proctitle_maxlen) fatal("proctitle '%s' too large", title); memset(kore_argv[0] + len, 0, proctitle_maxlen - len); } static void kore_proctitle_setup(void) { int i; char *p; proctitle_maxlen = 0; for (i = 0; environ[i] != NULL; i++) { p = kore_strdup(environ[i]); proctitle_maxlen += strlen(environ[i]) + 1; environ[i] = p; } for (i = 0; kore_argv[i] != NULL; i++) proctitle_maxlen += strlen(kore_argv[i]) + 1; } static void kore_server_sslstart(void) { #if !defined(KORE_NO_TLS) kore_debug("kore_server_sslstart()"); SSL_library_init(); SSL_load_error_strings(); #endif } static void kore_server_start(int argc, char *argv[]) { u_int32_t tmp; struct kore_runtime_call *rcall; u_int64_t netwait; int quit, last_sig; if (foreground == 0) { if (daemon(1, 0) == -1) fatal("cannot daemon(): %s", errno_s); #if defined(KORE_SINGLE_BINARY) rcall = kore_runtime_getcall("kore_parent_daemonized"); if (rcall != NULL) { kore_runtime_execute(rcall); kore_free(rcall); } #endif } kore_pid = getpid(); kore_write_kore_pid(); if (!kore_quiet) { kore_log(LOG_NOTICE, "%s is starting up", __progname); #if defined(KORE_USE_PGSQL) kore_log(LOG_NOTICE, "pgsql built-in enabled"); #endif #if defined(KORE_USE_TASKS) kore_log(LOG_NOTICE, "tasks built-in enabled"); #endif #if defined(KORE_USE_JSONRPC) kore_log(LOG_NOTICE, "jsonrpc built-in enabled"); #endif #if defined(KORE_USE_PYTHON) kore_log(LOG_NOTICE, "python built-in enabled"); #endif } #if !defined(KORE_SINGLE_BINARY) rcall = kore_runtime_getcall("kore_parent_configure"); if (rcall != NULL) { kore_runtime_configure(rcall, argc, argv); kore_free(rcall); } #endif kore_platform_proctitle("[parent]"); kore_msg_init(); kore_worker_init(); /* Set worker_max_connections for kore_connection_init(). */ tmp = worker_max_connections; worker_max_connections = worker_count; net_init(); kore_connection_init(); kore_platform_event_init(); kore_msg_parent_init(); quit = 0; worker_max_connections = tmp; kore_timer_init(); #if !defined(KORE_NO_HTTP) kore_timer_add(kore_accesslog_run, 100, NULL, 0); #endif while (quit != 1) { if (sig_recv != 0) { last_sig = sig_recv; switch (sig_recv) { case SIGHUP: kore_worker_dispatch_signal(sig_recv); kore_module_reload(0); break; case SIGINT: case SIGQUIT: case SIGTERM: quit = 1; kore_worker_dispatch_signal(sig_recv); continue; case SIGUSR1: kore_worker_dispatch_signal(sig_recv); break; case SIGCHLD: kore_worker_reap(); break; default: break; } if (sig_recv == last_sig) sig_recv = 0; else continue; } netwait = kore_timer_next_run(kore_time_ms()); kore_platform_event_wait(netwait); kore_connection_prune(KORE_CONNECTION_PRUNE_DISCONNECT); kore_timer_run(kore_time_ms()); } #if !defined(KORE_NO_HTTP) kore_accesslog_gather(NULL, kore_time_ms(), 1); #endif kore_platform_event_cleanup(); kore_connection_cleanup(); kore_domain_cleanup(); net_cleanup(); } static void kore_write_kore_pid(void) { FILE *fp; if ((fp = fopen(kore_pidfile, "w+")) == NULL) { printf("warning: couldn't write pid to %s (%s)\n", kore_pidfile, errno_s); } else { fprintf(fp, "%d\n", kore_pid); fclose(fp); } } kore-3.3.1/src/linux.c000066400000000000000000000122031347522026400145530ustar00rootroot00000000000000/* * Copyright (c) 2013-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include #include #include "kore.h" #if defined(KORE_USE_PGSQL) #include "pgsql.h" #endif #if defined(KORE_USE_TASKS) #include "tasks.h" #endif static int efd = -1; static u_int32_t event_count = 0; static struct epoll_event *events = NULL; void kore_platform_init(void) { long n; if ((n = sysconf(_SC_NPROCESSORS_ONLN)) == -1) { kore_debug("could not get number of cpu's falling back to 1"); cpu_count = 1; } else { cpu_count = (u_int16_t)n; } } void kore_platform_worker_setcpu(struct kore_worker *kw) { cpu_set_t cpuset; CPU_ZERO(&cpuset); CPU_SET(kw->cpu, &cpuset); if (sched_setaffinity(0, sizeof(cpu_set_t), &cpuset) == -1) { kore_debug("kore_worker_setcpu(): %s", errno_s); } else { kore_debug("kore_worker_setcpu(): worker %d on cpu %d", kw->id, kw->cpu); } } void kore_platform_event_init(void) { if (efd != -1) close(efd); if (events != NULL) kore_free(events); if ((efd = epoll_create(10000)) == -1) fatal("epoll_create(): %s", errno_s); event_count = worker_max_connections + nlisteners; events = kore_calloc(event_count, sizeof(struct epoll_event)); } void kore_platform_event_cleanup(void) { if (efd != -1) { close(efd); efd = -1; } if (events != NULL) { kore_free(events); events = NULL; } } void kore_platform_event_wait(u_int64_t timer) { u_int32_t r; struct kore_event *evt; int n, i, timeo; if (timer == KORE_WAIT_INFINITE) timeo = -1; else timeo = timer; n = epoll_wait(efd, events, event_count, timeo); if (n == -1) { if (errno == EINTR) return; fatal("epoll_wait(): %s", errno_s); } if (n > 0) { kore_debug("main(): %d sockets available", n); } r = 0; for (i = 0; i < n; i++) { if (events[i].data.ptr == NULL) fatal("events[%d].data.ptr == NULL", i); r = 0; evt = (struct kore_event *)events[i].data.ptr; if (events[i].events & EPOLLIN) evt->flags |= KORE_EVENT_READ; if (events[i].events & EPOLLOUT) evt->flags |= KORE_EVENT_WRITE; if (events[i].events & EPOLLERR || events[i].events & EPOLLHUP || events[i].events & EPOLLRDHUP) r = 1; evt->handle(events[i].data.ptr, r); } } void kore_platform_event_all(int fd, void *c) { kore_platform_event_schedule(fd, EPOLLIN | EPOLLOUT | EPOLLRDHUP | EPOLLET, 0, c); } void kore_platform_event_schedule(int fd, int type, int flags, void *udata) { struct epoll_event evt; kore_debug("kore_platform_event_schedule(%d, %d, %d, %p)", fd, type, flags, udata); evt.events = type; evt.data.ptr = udata; if (epoll_ctl(efd, EPOLL_CTL_ADD, fd, &evt) == -1) { if (errno == EEXIST) { if (epoll_ctl(efd, EPOLL_CTL_MOD, fd, &evt) == -1) fatal("epoll_ctl() MOD: %s", errno_s); } else { fatal("epoll_ctl() ADD: %s", errno_s); } } } void kore_platform_schedule_read(int fd, void *data) { kore_platform_event_schedule(fd, EPOLLIN | EPOLLET, 0, data); } void kore_platform_schedule_write(int fd, void *data) { kore_platform_event_schedule(fd, EPOLLOUT | EPOLLET, 0, data); } void kore_platform_disable_read(int fd) { if (epoll_ctl(efd, EPOLL_CTL_DEL, fd, NULL) == -1) fatal("kore_platform_disable_read: %s", errno_s); } void kore_platform_enable_accept(void) { struct listener *l; kore_debug("kore_platform_enable_accept()"); LIST_FOREACH(l, &listeners, list) kore_platform_event_schedule(l->fd, EPOLLIN, 0, l); } void kore_platform_disable_accept(void) { struct listener *l; kore_debug("kore_platform_disable_accept()"); LIST_FOREACH(l, &listeners, list) { if (epoll_ctl(efd, EPOLL_CTL_DEL, l->fd, NULL) == -1) fatal("kore_platform_disable_accept: %s", errno_s); } } void kore_platform_proctitle(char *title) { kore_proctitle(title); } #if defined(KORE_USE_PLATFORM_SENDFILE) int kore_platform_sendfile(struct connection *c, struct netbuf *nb) { off_t smin; ssize_t sent; size_t len, prevoff; prevoff = nb->fd_off; smin = nb->fd_len - nb->fd_off; len = MIN(SENDFILE_PAYLOAD_MAX, smin); resend: sent = sendfile(c->fd, nb->file_ref->fd, &nb->fd_off, len); if (sent == -1) { if (errno == EAGAIN) { c->evt.flags &= ~KORE_EVENT_WRITE; return (KORE_RESULT_OK); } return (KORE_RESULT_ERROR); } if (nb->fd_off - prevoff != (size_t)len) goto resend; if (sent == 0 || nb->fd_off == nb->fd_len) { net_remove_netbuf(c, nb); c->snb = NULL; } return (KORE_RESULT_OK); } #endif kore-3.3.1/src/mem.c000066400000000000000000000125141347522026400141770ustar00rootroot00000000000000/* * Copyright (c) 2013-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include #include "kore.h" #define KORE_MEM_BLOCKS 11 #define KORE_MEM_BLOCK_SIZE_MAX 8192 #define KORE_MEM_BLOCK_PREALLOC 128 #define KORE_MEM_ALIGN (sizeof(size_t)) #define KORE_MEM_MAGIC 0xd0d0 #define KORE_MEMSIZE(x) \ (*(size_t *)((u_int8_t *)x - sizeof(size_t))) #define KORE_MEMINFO(x) \ (struct meminfo *)((u_int8_t *)x + KORE_MEMSIZE(x)) #define KORE_MEM_TAGGED 0x0001 struct meminfo { u_int16_t flags; u_int16_t magic; }; struct memblock { struct kore_pool pool; }; struct tag { void *ptr; u_int32_t id; TAILQ_ENTRY(tag) list; }; static size_t memblock_index(size_t); static TAILQ_HEAD(, tag) tags; static struct kore_pool tag_pool; static struct memblock blocks[KORE_MEM_BLOCKS]; void kore_mem_init(void) { int i, len; char name[32]; u_int32_t size, elm, mlen; size = 8; TAILQ_INIT(&tags); kore_pool_init(&tag_pool, "tag_pool", sizeof(struct tag), 100); for (i = 0; i < KORE_MEM_BLOCKS; i++) { len = snprintf(name, sizeof(name), "block-%u", size); if (len == -1 || (size_t)len >= sizeof(name)) fatal("kore_mem_init: snprintf"); elm = (KORE_MEM_BLOCK_PREALLOC * 1024) / size; mlen = sizeof(size_t) + size + sizeof(struct meminfo) + KORE_MEM_ALIGN; mlen = mlen & ~(KORE_MEM_ALIGN - 1); kore_pool_init(&blocks[i].pool, name, mlen, elm); size = size << 1; } } void kore_mem_cleanup(void) { int i; for (i = 0; i < KORE_MEM_BLOCKS; i++) { kore_pool_cleanup(&blocks[i].pool); } } void * kore_malloc(size_t len) { void *ptr; struct meminfo *mem; u_int8_t *addr; size_t mlen, idx, *plen; if (len == 0) len = 8; if (len <= KORE_MEM_BLOCK_SIZE_MAX) { idx = memblock_index(len); ptr = kore_pool_get(&blocks[idx].pool); } else { mlen = sizeof(size_t) + len + sizeof(struct meminfo); if ((ptr = calloc(1, mlen)) == NULL) fatal("kore_malloc(%zu): %d", len, errno); } plen = (size_t *)ptr; *plen = len; addr = (u_int8_t *)ptr + sizeof(size_t); mem = KORE_MEMINFO(addr); mem->flags = 0; mem->magic = KORE_MEM_MAGIC; return (addr); } void * kore_realloc(void *ptr, size_t len) { struct meminfo *mem; void *nptr; if (ptr == NULL) { nptr = kore_malloc(len); } else { if (len == KORE_MEMSIZE(ptr)) return (ptr); mem = KORE_MEMINFO(ptr); if (mem->magic != KORE_MEM_MAGIC) fatal("kore_realloc(): magic boundary not found"); nptr = kore_malloc(len); memcpy(nptr, ptr, MIN(len, KORE_MEMSIZE(ptr))); kore_free(ptr); } return (nptr); } void * kore_calloc(size_t memb, size_t len) { void *ptr; size_t total; if (SIZE_MAX / memb < len) fatal("kore_calloc(): memb * len > SIZE_MAX"); total = memb * len; ptr = kore_malloc(total); memset(ptr, 0, total); return (ptr); } void kore_free(void *ptr) { u_int8_t *addr; struct meminfo *mem; size_t len, idx; if (ptr == NULL) return; mem = KORE_MEMINFO(ptr); if (mem->magic != KORE_MEM_MAGIC) fatal("kore_free(): magic boundary not found"); if (mem->flags & KORE_MEM_TAGGED) { kore_mem_untag(ptr); mem->flags &= ~KORE_MEM_TAGGED; } len = KORE_MEMSIZE(ptr); addr = (u_int8_t *)ptr - sizeof(size_t); if (len <= KORE_MEM_BLOCK_SIZE_MAX) { idx = memblock_index(len); kore_pool_put(&blocks[idx].pool, addr); } else { free(addr); } } char * kore_strdup(const char *str) { size_t len; char *nstr; len = strlen(str) + 1; nstr = kore_malloc(len); (void)kore_strlcpy(nstr, str, len); return (nstr); } void * kore_malloc_tagged(size_t len, u_int32_t tag) { void *ptr; ptr = kore_malloc(len); kore_mem_tag(ptr, tag); return (ptr); } void kore_mem_tag(void *ptr, u_int32_t id) { struct tag *tag; struct meminfo *mem; if (kore_mem_lookup(id) != NULL) fatal("kore_mem_tag: tag %u taken", id); mem = KORE_MEMINFO(ptr); if (mem->magic != KORE_MEM_MAGIC) fatal("kore_mem_tag: magic boundary not found"); mem->flags |= KORE_MEM_TAGGED; tag = kore_pool_get(&tag_pool); tag->id = id; tag->ptr = ptr; TAILQ_INSERT_TAIL(&tags, tag, list); } void kore_mem_untag(void *ptr) { struct tag *tag; TAILQ_FOREACH(tag, &tags, list) { if (tag->ptr == ptr) { TAILQ_REMOVE(&tags, tag, list); kore_pool_put(&tag_pool, tag); break; } } } void * kore_mem_lookup(u_int32_t id) { struct tag *tag; TAILQ_FOREACH(tag, &tags, list) { if (tag->id == id) return (tag->ptr); } return (NULL); } static size_t memblock_index(size_t len) { size_t mlen, idx; idx = 0; mlen = 8; while (mlen < len) { idx++; mlen = mlen << 1; } if (idx > (KORE_MEM_BLOCKS - 1)) fatal("kore_malloc: idx too high"); return (idx); } kore-3.3.1/src/module.c000066400000000000000000000202521347522026400147040ustar00rootroot00000000000000/* * Copyright (c) 2013-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include "kore.h" #if !defined(KORE_NO_HTTP) #include "http.h" #endif #if defined(KORE_USE_PYTHON) #include "python_api.h" #endif static TAILQ_HEAD(, kore_module) modules; static void native_free(struct kore_module *); static void native_load(struct kore_module *); static void native_reload(struct kore_module *); static void *native_getsym(struct kore_module *, const char *); struct kore_module_functions kore_native_module = { .free = native_free, .load = native_load, .getsym = native_getsym, .reload = native_reload, }; void kore_module_init(void) { TAILQ_INIT(&modules); } void kore_module_cleanup(void) { struct kore_module *module, *next; for (module = TAILQ_FIRST(&modules); module != NULL; module = next) { next = TAILQ_NEXT(module, list); TAILQ_REMOVE(&modules, module, list); module->fun->free(module); } } struct kore_module * kore_module_load(const char *path, const char *onload, int type) { struct stat st; struct kore_module *module; kore_debug("kore_module_load(%s, %s)", path, onload); module = kore_malloc(sizeof(struct kore_module)); module->ocb = NULL; module->type = type; module->onload = NULL; module->handle = NULL; if (path != NULL) { if (stat(path, &st) == -1) fatal("stat(%s): %s", path, errno_s); module->path = kore_strdup(path); module->mtime = st.st_mtime; } else { module->path = NULL; module->mtime = 0; } switch (module->type) { case KORE_MODULE_NATIVE: module->fun = &kore_native_module; module->runtime = &kore_native_runtime; break; #if defined(KORE_USE_PYTHON) case KORE_MODULE_PYTHON: module->fun = &kore_python_module; module->runtime = &kore_python_runtime; break; #endif default: fatal("kore_module_load: unknown type %d", type); } module->fun->load(module); TAILQ_INSERT_TAIL(&modules, module, list); if (onload != NULL) { module->onload = kore_strdup(onload); module->ocb = kore_malloc(sizeof(*module->ocb)); module->ocb->runtime = module->runtime; module->ocb->addr = module->fun->getsym(module, onload); if (module->ocb->addr == NULL) { fatal("%s: onload '%s' not present", module->path, onload); } } return (module); } void kore_module_onload(void) { struct kore_module *module; TAILQ_FOREACH(module, &modules, list) { if (module->path == NULL || module->ocb == NULL) continue; kore_runtime_onload(module->ocb, KORE_MODULE_LOAD); } } void kore_module_reload(int cbs) { struct stat st; int ret; #if !defined(KORE_NO_HTTP) struct kore_domain *dom; struct kore_module_handle *hdlr; #endif struct kore_module *module; TAILQ_FOREACH(module, &modules, list) { if (module->path == NULL) continue; if (stat(module->path, &st) == -1) { kore_log(LOG_NOTICE, "stat(%s): %s, skipping reload", module->path, errno_s); continue; } if (module->mtime == st.st_mtime) continue; if (module->ocb != NULL && cbs == 1) { ret = kore_runtime_onload(module->ocb, KORE_MODULE_UNLOAD); if (ret == KORE_RESULT_ERROR) { kore_log(LOG_NOTICE, "%s forced no reloaded", module->path); continue; } } module->mtime = st.st_mtime; module->fun->reload(module); if (module->onload != NULL) { kore_free(module->ocb); module->ocb = kore_malloc(sizeof(*module->ocb)); module->ocb->runtime = module->runtime; module->ocb->addr = module->fun->getsym(module, module->onload); if (module->ocb->addr == NULL) { fatal("%s: onload '%s' not present", module->path, module->onload); } } if (module->ocb != NULL && cbs == 1) kore_runtime_onload(module->ocb, KORE_MODULE_LOAD); kore_log(LOG_NOTICE, "reloaded '%s' module", module->path); } #if !defined(KORE_NO_HTTP) TAILQ_FOREACH(dom, &domains, list) { TAILQ_FOREACH(hdlr, &(dom->handlers), list) { kore_free(hdlr->rcall); hdlr->rcall = kore_runtime_getcall(hdlr->func); if (hdlr->rcall == NULL) fatal("no function '%s' found", hdlr->func); hdlr->errors = 0; } } #endif #if !defined(KORE_NO_HTTP) kore_validator_reload(); #endif } int kore_module_loaded(void) { if (TAILQ_EMPTY(&modules)) return (0); return (1); } #if !defined(KORE_NO_HTTP) int kore_module_handler_new(const char *path, const char *domain, const char *func, const char *auth, int type) { struct kore_auth *ap; struct kore_domain *dom; struct kore_module_handle *hdlr; kore_debug("kore_module_handler_new(%s, %s, %s, %s, %d)", path, domain, func, auth, type); if ((dom = kore_domain_lookup(domain)) == NULL) return (KORE_RESULT_ERROR); if (auth != NULL) { if ((ap = kore_auth_lookup(auth)) == NULL) fatal("no authentication block '%s' found", auth); } else { ap = NULL; } hdlr = kore_malloc(sizeof(*hdlr)); hdlr->auth = ap; hdlr->dom = dom; hdlr->errors = 0; hdlr->type = type; hdlr->path = kore_strdup(path); hdlr->func = kore_strdup(func); hdlr->methods = HTTP_METHOD_ALL; TAILQ_INIT(&(hdlr->params)); if ((hdlr->rcall = kore_runtime_getcall(func)) == NULL) { kore_module_handler_free(hdlr); kore_log(LOG_ERR, "function '%s' not found", func); return (KORE_RESULT_ERROR); } if (hdlr->type == HANDLER_TYPE_DYNAMIC) { if (regcomp(&(hdlr->rctx), hdlr->path, REG_EXTENDED | REG_NOSUB)) { kore_module_handler_free(hdlr); kore_debug("regcomp() on %s failed", path); return (KORE_RESULT_ERROR); } } TAILQ_INSERT_TAIL(&(dom->handlers), hdlr, list); return (KORE_RESULT_OK); } void kore_module_handler_free(struct kore_module_handle *hdlr) { struct kore_handler_params *param; if (hdlr == NULL) return; if (hdlr->func != NULL) kore_free(hdlr->func); if (hdlr->path != NULL) kore_free(hdlr->path); if (hdlr->type == HANDLER_TYPE_DYNAMIC) regfree(&(hdlr->rctx)); /* Drop all validators associated with this handler */ while ((param = TAILQ_FIRST(&(hdlr->params))) != NULL) { TAILQ_REMOVE(&(hdlr->params), param, list); if (param->name != NULL) kore_free(param->name); kore_free(param); } kore_free(hdlr); } struct kore_module_handle * kore_module_handler_find(const char *domain, const char *path) { struct kore_domain *dom; struct kore_module_handle *hdlr; if ((dom = kore_domain_lookup(domain)) == NULL) return (NULL); TAILQ_FOREACH(hdlr, &(dom->handlers), list) { if (hdlr->type == HANDLER_TYPE_STATIC) { if (!strcmp(hdlr->path, path)) return (hdlr); } else { if (!regexec(&(hdlr->rctx), path, 0, NULL, 0)) return (hdlr); } } return (NULL); } #endif /* !KORE_NO_HTTP */ void * kore_module_getsym(const char *symbol, struct kore_runtime **runtime) { void *ptr; struct kore_module *module; if (runtime != NULL) *runtime = NULL; TAILQ_FOREACH(module, &modules, list) { ptr = module->fun->getsym(module, symbol); if (ptr != NULL) { if (runtime != NULL) *runtime = module->runtime; return (ptr); } } return (NULL); } static void * native_getsym(struct kore_module *module, const char *symbol) { return (dlsym(module->handle, symbol)); } static void native_free(struct kore_module *module) { kore_free(module->path); (void)dlclose(module->handle); kore_free(module); } static void native_reload(struct kore_module *module) { if (dlclose(module->handle)) fatal("cannot close existing module: %s", dlerror()); module->fun->load(module); } static void native_load(struct kore_module *module) { module->handle = dlopen(module->path, RTLD_NOW | RTLD_GLOBAL); if (module->handle == NULL) fatal("%s: %s", module->path, dlerror()); } kore-3.3.1/src/msg.c000066400000000000000000000141111347522026400142020ustar00rootroot00000000000000/* * Copyright (c) 2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include "kore.h" #include "http.h" struct msg_type { u_int8_t id; void (*cb)(struct kore_msg *, const void *); TAILQ_ENTRY(msg_type) list; }; TAILQ_HEAD(, msg_type) msg_types; static struct msg_type *msg_type_lookup(u_int8_t); static int msg_recv_packet(struct netbuf *); static int msg_recv_data(struct netbuf *); static void msg_disconnected_parent(struct connection *); static void msg_disconnected_worker(struct connection *); static void msg_type_shutdown(struct kore_msg *, const void *); #if !defined(KORE_NO_HTTP) static void msg_type_websocket(struct kore_msg *, const void *); #endif void kore_msg_init(void) { TAILQ_INIT(&msg_types); } void kore_msg_parent_init(void) { u_int8_t i; struct kore_worker *kw; for (i = 0; i < worker_count; i++) { kw = kore_worker_data(i); kore_msg_parent_add(kw); } kore_msg_register(KORE_MSG_SHUTDOWN, msg_type_shutdown); } void kore_msg_parent_add(struct kore_worker *kw) { kw->msg[0] = kore_connection_new(NULL); kw->msg[0]->fd = kw->pipe[0]; kw->msg[0]->read = net_read; kw->msg[0]->write = net_write; kw->msg[0]->proto = CONN_PROTO_MSG; kw->msg[0]->state = CONN_STATE_ESTABLISHED; kw->msg[0]->hdlr_extra = &kw->id; kw->msg[0]->disconnect = msg_disconnected_worker; kw->msg[0]->handle = kore_connection_handle; TAILQ_INSERT_TAIL(&connections, kw->msg[0], list); kore_platform_event_all(kw->msg[0]->fd, kw->msg[0]); net_recv_queue(kw->msg[0], sizeof(struct kore_msg), 0, msg_recv_packet); } void kore_msg_parent_remove(struct kore_worker *kw) { kore_connection_disconnect(kw->msg[0]); kore_connection_prune(KORE_CONNECTION_PRUNE_DISCONNECT); (void)close(kw->pipe[1]); } void kore_msg_worker_init(void) { #if !defined(KORE_NO_HTTP) kore_msg_register(KORE_MSG_WEBSOCKET, msg_type_websocket); #endif worker->msg[1] = kore_connection_new(NULL); worker->msg[1]->fd = worker->pipe[1]; worker->msg[1]->read = net_read; worker->msg[1]->write = net_write; worker->msg[1]->proto = CONN_PROTO_MSG; worker->msg[1]->state = CONN_STATE_ESTABLISHED; worker->msg[1]->disconnect = msg_disconnected_parent; worker->msg[1]->handle = kore_connection_handle; worker->msg[1]->evt.flags = KORE_EVENT_WRITE; TAILQ_INSERT_TAIL(&connections, worker->msg[1], list); kore_platform_event_all(worker->msg[1]->fd, worker->msg[1]); net_recv_queue(worker->msg[1], sizeof(struct kore_msg), 0, msg_recv_packet); } int kore_msg_register(u_int8_t id, void (*cb)(struct kore_msg *, const void *)) { struct msg_type *type; if ((type = msg_type_lookup(id)) != NULL) return (KORE_RESULT_ERROR); type = kore_malloc(sizeof(*type)); type->id = id; type->cb = cb; TAILQ_INSERT_TAIL(&msg_types, type, list); return (KORE_RESULT_OK); } void kore_msg_send(u_int16_t dst, u_int8_t id, const void *data, size_t len) { struct kore_msg m; m.id = id; m.dst = dst; m.length = len; m.src = worker->id; net_send_queue(worker->msg[1], &m, sizeof(m)); if (data != NULL && len > 0) net_send_queue(worker->msg[1], data, len); net_send_flush(worker->msg[1]); } static int msg_recv_packet(struct netbuf *nb) { struct kore_msg *msg = (struct kore_msg *)nb->buf; if (msg->length > 0) { net_recv_expand(nb->owner, msg->length, msg_recv_data); return (KORE_RESULT_OK); } return (msg_recv_data(nb)); } static int msg_recv_data(struct netbuf *nb) { struct connection *c; struct msg_type *type; u_int16_t destination; struct kore_msg *msg = (struct kore_msg *)nb->buf; if ((type = msg_type_lookup(msg->id)) != NULL) { if (worker == NULL && msg->dst != KORE_MSG_PARENT) fatal("received parent msg for non parent dst"); if (worker != NULL && msg->dst != worker->id) fatal("received message for incorrect worker"); if (msg->length > 0) type->cb(msg, nb->buf + sizeof(*msg)); else type->cb(msg, NULL); } if (worker == NULL && type == NULL) { destination = msg->dst; TAILQ_FOREACH(c, &connections, list) { if (c->proto != CONN_PROTO_MSG || c->hdlr_extra == NULL) continue; if (destination != KORE_MSG_WORKER_ALL && *(u_int8_t *)c->hdlr_extra != destination) continue; /* This allows the worker to receive the correct id. */ msg->dst = *(u_int8_t *)c->hdlr_extra; net_send_queue(c, nb->buf, nb->s_off); net_send_flush(c); } } net_recv_reset(nb->owner, sizeof(struct kore_msg), msg_recv_packet); return (KORE_RESULT_OK); } static void msg_disconnected_parent(struct connection *c) { if (!kore_quiet) kore_log(LOG_ERR, "parent gone, shutting down"); if (kill(worker->pid, SIGQUIT) == -1) kore_log(LOG_ERR, "failed to send SIGQUIT: %s", errno_s); } static void msg_disconnected_worker(struct connection *c) { c->hdlr_extra = NULL; } static void msg_type_shutdown(struct kore_msg *msg, const void *data) { kore_log(LOG_NOTICE, "shutdown requested by worker %u, going down", msg->src); (void)raise(SIGQUIT); } #if !defined(KORE_NO_HTTP) static void msg_type_websocket(struct kore_msg *msg, const void *data) { struct connection *c; TAILQ_FOREACH(c, &connections, list) { if (c->proto == CONN_PROTO_WEBSOCKET) { net_send_queue(c, data, msg->length); net_send_flush(c); } } } #endif static struct msg_type * msg_type_lookup(u_int8_t id) { struct msg_type *type; TAILQ_FOREACH(type, &msg_types, list) { if (type->id == id) return (type); } return (NULL); } kore-3.3.1/src/net.c000066400000000000000000000243561347522026400142160ustar00rootroot00000000000000/* * Copyright (c) 2013-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #if defined(__linux__) #include #elif defined(__MACH__) #include #define htobe64(x) OSSwapHostToBigInt64(x) #define be64toh(x) OSSwapBigToHostInt64(x) #else #include #endif #include "kore.h" struct kore_pool nb_pool; void net_init(void) { u_int32_t elm; /* Add some overhead so we don't roll over for internal items. */ elm = worker_max_connections + 10; kore_pool_init(&nb_pool, "nb_pool", sizeof(struct netbuf), elm); } void net_cleanup(void) { kore_debug("net_cleanup()"); kore_pool_cleanup(&nb_pool); } struct netbuf * net_netbuf_get(void) { struct netbuf *nb; nb = kore_pool_get(&nb_pool); nb->cb = NULL; nb->buf = NULL; nb->owner = NULL; nb->extra = NULL; nb->file_ref = NULL; nb->type = 0; nb->s_off = 0; nb->b_len = 0; nb->m_len = 0; nb->flags = 0; #if defined(KORE_USE_PLATFORM_SENDFILE) nb->fd_off = -1; nb->fd_len = -1; #endif return (nb); } void net_send_queue(struct connection *c, const void *data, size_t len) { const u_int8_t *d; struct netbuf *nb; size_t avail; kore_debug("net_send_queue(%p, %p, %zu)", c, data, len); d = data; nb = TAILQ_LAST(&(c->send_queue), netbuf_head); if (nb != NULL && !(nb->flags & NETBUF_IS_STREAM) && nb->b_len < nb->m_len) { avail = nb->m_len - nb->b_len; if (len < avail) { memcpy(nb->buf + nb->b_len, d, len); nb->b_len += len; return; } else { memcpy(nb->buf + nb->b_len, d, avail); nb->b_len += avail; len -= avail; d += avail; if (len == 0) return; } } nb = net_netbuf_get(); nb->owner = c; nb->b_len = len; nb->type = NETBUF_SEND; if (nb->b_len < NETBUF_SEND_PAYLOAD_MAX) nb->m_len = NETBUF_SEND_PAYLOAD_MAX; else nb->m_len = nb->b_len; nb->buf = kore_malloc(nb->m_len); memcpy(nb->buf, d, nb->b_len); TAILQ_INSERT_TAIL(&(c->send_queue), nb, list); } void net_send_stream(struct connection *c, void *data, size_t len, int (*cb)(struct netbuf *), struct netbuf **out) { struct netbuf *nb; kore_debug("net_send_stream(%p, %p, %zu)", c, data, len); nb = net_netbuf_get(); nb->cb = cb; nb->owner = c; nb->buf = data; nb->b_len = len; nb->m_len = nb->b_len; nb->type = NETBUF_SEND; nb->flags = NETBUF_IS_STREAM; TAILQ_INSERT_TAIL(&(c->send_queue), nb, list); if (out != NULL) *out = nb; } void net_send_fileref(struct connection *c, struct kore_fileref *ref) { struct netbuf *nb; nb = net_netbuf_get(); nb->owner = c; nb->file_ref = ref; nb->type = NETBUF_SEND; nb->flags = NETBUF_IS_FILEREF; #if defined(KORE_USE_PLATFORM_SENDFILE) nb->fd_off = 0; nb->fd_len = ref->size; #else nb->buf = ref->base; nb->b_len = ref->size; nb->m_len = nb->b_len; nb->flags |= NETBUF_IS_STREAM; #endif TAILQ_INSERT_TAIL(&(c->send_queue), nb, list); } void net_recv_reset(struct connection *c, size_t len, int (*cb)(struct netbuf *)) { kore_debug("net_recv_reset(): %p %zu", c, len); c->rnb->cb = cb; c->rnb->s_off = 0; c->rnb->b_len = len; if (c->rnb->buf != NULL && c->rnb->b_len <= c->rnb->m_len && c->rnb->m_len < (NETBUF_SEND_PAYLOAD_MAX / 2)) return; kore_free(c->rnb->buf); c->rnb->m_len = len; c->rnb->buf = kore_malloc(c->rnb->m_len); } void net_recv_queue(struct connection *c, size_t len, int flags, int (*cb)(struct netbuf *)) { kore_debug("net_recv_queue(): %p %zu %d", c, len, flags); if (c->rnb != NULL) fatal("net_recv_queue(): called incorrectly"); c->rnb = net_netbuf_get(); c->rnb->cb = cb; c->rnb->owner = c; c->rnb->b_len = len; c->rnb->m_len = len; c->rnb->flags = flags; c->rnb->type = NETBUF_RECV; c->rnb->buf = kore_malloc(c->rnb->b_len); } void net_recv_expand(struct connection *c, size_t len, int (*cb)(struct netbuf *)) { kore_debug("net_recv_expand(): %p %d", c, len); c->rnb->cb = cb; c->rnb->b_len += len; c->rnb->m_len = c->rnb->b_len; c->rnb->buf = kore_realloc(c->rnb->buf, c->rnb->b_len); } int net_send(struct connection *c) { size_t r, len, smin; c->snb = TAILQ_FIRST(&(c->send_queue)); #if defined(KORE_USE_PLATFORM_SENDFILE) if ((c->snb->flags & NETBUF_IS_FILEREF) && !(c->snb->flags & NETBUF_IS_STREAM)) { return (kore_platform_sendfile(c, c->snb)); } #endif if (c->snb->b_len != 0) { smin = c->snb->b_len - c->snb->s_off; len = MIN(NETBUF_SEND_PAYLOAD_MAX, smin); if (!c->write(c, len, &r)) return (KORE_RESULT_ERROR); if (!(c->evt.flags & KORE_EVENT_WRITE)) return (KORE_RESULT_OK); c->snb->s_off += r; c->snb->flags &= ~NETBUF_MUST_RESEND; } if (c->snb->s_off == c->snb->b_len || (c->snb->flags & NETBUF_FORCE_REMOVE)) { net_remove_netbuf(c, c->snb); c->snb = NULL; } return (KORE_RESULT_OK); } int net_send_flush(struct connection *c) { kore_debug("net_send_flush(%p)", c); while (!TAILQ_EMPTY(&(c->send_queue)) && (c->evt.flags & KORE_EVENT_WRITE)) { if (!net_send(c)) return (KORE_RESULT_ERROR); } if ((c->flags & CONN_CLOSE_EMPTY) && TAILQ_EMPTY(&(c->send_queue))) { kore_connection_disconnect(c); } return (KORE_RESULT_OK); } int net_recv_flush(struct connection *c) { size_t r; kore_debug("net_recv_flush(%p)", c); if (c->rnb == NULL) return (KORE_RESULT_OK); while (c->evt.flags & KORE_EVENT_READ) { if (c->rnb->buf == NULL) return (KORE_RESULT_OK); if (!c->read(c, &r)) return (KORE_RESULT_ERROR); if (!(c->evt.flags & KORE_EVENT_READ)) break; c->rnb->s_off += r; if (c->rnb->s_off == c->rnb->b_len || (c->rnb->flags & NETBUF_CALL_CB_ALWAYS)) { r = c->rnb->cb(c->rnb); if (r != KORE_RESULT_OK) return (r); } } return (KORE_RESULT_OK); } void net_remove_netbuf(struct connection *c, struct netbuf *nb) { kore_debug("net_remove_netbuf(%p, %p)", c, nb); if (nb->type == NETBUF_RECV) fatal("net_remove_netbuf(): cannot remove recv netbuf"); if (nb->flags & NETBUF_MUST_RESEND) { kore_debug("retaining %p (MUST_RESEND)", nb); nb->flags |= NETBUF_FORCE_REMOVE; return; } if (!(nb->flags & NETBUF_IS_STREAM)) { kore_free(nb->buf); } else if (nb->cb != NULL) { (void)nb->cb(nb); } if (nb->flags & NETBUF_IS_FILEREF) kore_fileref_release(nb->file_ref); TAILQ_REMOVE(&(c->send_queue), nb, list); kore_pool_put(&nb_pool, nb); } #if !defined(KORE_NO_TLS) int net_write_tls(struct connection *c, size_t len, size_t *written) { int r; if (len > INT_MAX) return (KORE_RESULT_ERROR); ERR_clear_error(); r = SSL_write(c->ssl, (c->snb->buf + c->snb->s_off), len); if (c->tls_reneg > 1) return (KORE_RESULT_ERROR); if (r <= 0) { r = SSL_get_error(c->ssl, r); switch (r) { case SSL_ERROR_WANT_READ: case SSL_ERROR_WANT_WRITE: c->evt.flags &= ~KORE_EVENT_WRITE; c->snb->flags |= NETBUF_MUST_RESEND; return (KORE_RESULT_OK); case SSL_ERROR_SYSCALL: switch (errno) { case EINTR: *written = 0; return (KORE_RESULT_OK); case EAGAIN: c->evt.flags &= ~KORE_EVENT_WRITE; c->snb->flags |= NETBUF_MUST_RESEND; return (KORE_RESULT_OK); default: break; } /* FALLTHROUGH */ default: kore_debug("SSL_write(): %s", ssl_errno_s); return (KORE_RESULT_ERROR); } } *written = (size_t)r; return (KORE_RESULT_OK); } int net_read_tls(struct connection *c, size_t *bytes) { int r; ERR_clear_error(); r = SSL_read(c->ssl, (c->rnb->buf + c->rnb->s_off), (c->rnb->b_len - c->rnb->s_off)); if (c->tls_reneg > 1) return (KORE_RESULT_ERROR); if (r <= 0) { r = SSL_get_error(c->ssl, r); switch (r) { case SSL_ERROR_WANT_READ: case SSL_ERROR_WANT_WRITE: c->evt.flags &= ~KORE_EVENT_READ; return (KORE_RESULT_OK); case SSL_ERROR_SYSCALL: switch (errno) { case EINTR: *bytes = 0; return (KORE_RESULT_OK); case EAGAIN: c->evt.flags &= ~KORE_EVENT_READ; c->snb->flags |= NETBUF_MUST_RESEND; return (KORE_RESULT_OK); default: break; } /* FALLTHROUGH */ default: kore_debug("SSL_read(): %s", ssl_errno_s); return (KORE_RESULT_ERROR); } } *bytes = (size_t)r; return (KORE_RESULT_OK); } #endif int net_write(struct connection *c, size_t len, size_t *written) { ssize_t r; r = write(c->fd, (c->snb->buf + c->snb->s_off), len); if (r == -1) { switch (errno) { case EINTR: *written = 0; return (KORE_RESULT_OK); case EAGAIN: c->evt.flags &= ~KORE_EVENT_WRITE; return (KORE_RESULT_OK); default: kore_debug("write: %s", errno_s); return (KORE_RESULT_ERROR); } } *written = (size_t)r; return (KORE_RESULT_OK); } int net_read(struct connection *c, size_t *bytes) { ssize_t r; r = read(c->fd, (c->rnb->buf + c->rnb->s_off), (c->rnb->b_len - c->rnb->s_off)); if (r == -1) { switch (errno) { case EINTR: *bytes = 0; return (KORE_RESULT_OK); case EAGAIN: c->evt.flags &= ~KORE_EVENT_READ; return (KORE_RESULT_OK); default: kore_debug("read(): %s", errno_s); return (KORE_RESULT_ERROR); } } if (r == 0) { kore_connection_disconnect(c); c->evt.flags &= ~KORE_EVENT_READ; return (KORE_RESULT_OK); } *bytes = (size_t)r; return (KORE_RESULT_OK); } u_int16_t net_read16(u_int8_t *b) { u_int16_t r; r = *(u_int16_t *)b; return (ntohs(r)); } u_int32_t net_read32(u_int8_t *b) { u_int32_t r; r = *(u_int32_t *)b; return (ntohl(r)); } void net_write16(u_int8_t *p, u_int16_t n) { u_int16_t r; r = htons(n); memcpy(p, &r, sizeof(r)); } void net_write32(u_int8_t *p, u_int32_t n) { u_int32_t r; r = htonl(n); memcpy(p, &r, sizeof(r)); } u_int64_t net_read64(u_int8_t *b) { u_int64_t r; r = *(u_int64_t *)b; return (be64toh(r)); } void net_write64(u_int8_t *p, u_int64_t n) { u_int64_t r; r = htobe64(n); memcpy(p, &r, sizeof(r)); } kore-3.3.1/src/pgsql.c000066400000000000000000000423731347522026400145550ustar00rootroot00000000000000/* * Copyright (c) 2014-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include #include "kore.h" #if !defined(KORE_NO_HTTP) #include "http.h" #endif #include "pgsql.h" struct pgsql_wait { struct kore_pgsql *pgsql; TAILQ_ENTRY(pgsql_wait) list; }; struct pgsql_job { struct kore_pgsql *pgsql; TAILQ_ENTRY(pgsql_job) list; }; #define PGSQL_CONN_MAX 2 #define PGSQL_CONN_FREE 0x01 #define PGSQL_LIST_INSERTED 0x0100 #define PGSQL_QUEUE_LIMIT 1000 static void pgsql_queue_wakeup(void); static void pgsql_cancel(struct kore_pgsql *); static void pgsql_set_error(struct kore_pgsql *, const char *); static void pgsql_queue_add(struct kore_pgsql *); static void pgsql_queue_remove(struct kore_pgsql *); static void pgsql_conn_release(struct kore_pgsql *); static void pgsql_conn_cleanup(struct pgsql_conn *); static void pgsql_read_result(struct kore_pgsql *); static void pgsql_schedule(struct kore_pgsql *); static struct pgsql_conn *pgsql_conn_create(struct kore_pgsql *, struct pgsql_db *); static struct pgsql_conn *pgsql_conn_next(struct kore_pgsql *, struct pgsql_db *); static struct kore_pool pgsql_job_pool; static struct kore_pool pgsql_wait_pool; static TAILQ_HEAD(, pgsql_conn) pgsql_conn_free; static TAILQ_HEAD(, pgsql_wait) pgsql_wait_queue; static LIST_HEAD(, pgsql_db) pgsql_db_conn_strings; u_int32_t pgsql_queue_count = 0; u_int16_t pgsql_conn_max = PGSQL_CONN_MAX; u_int32_t pgsql_queue_limit = PGSQL_QUEUE_LIMIT; void kore_pgsql_sys_init(void) { TAILQ_INIT(&pgsql_conn_free); TAILQ_INIT(&pgsql_wait_queue); LIST_INIT(&pgsql_db_conn_strings); kore_pool_init(&pgsql_job_pool, "pgsql_job_pool", sizeof(struct pgsql_job), 100); kore_pool_init(&pgsql_wait_pool, "pgsql_wait_pool", sizeof(struct pgsql_wait), pgsql_queue_limit); } void kore_pgsql_sys_cleanup(void) { struct pgsql_conn *conn, *next; kore_pool_cleanup(&pgsql_job_pool); kore_pool_cleanup(&pgsql_wait_pool); for (conn = TAILQ_FIRST(&pgsql_conn_free); conn != NULL; conn = next) { next = TAILQ_NEXT(conn, list); pgsql_conn_cleanup(conn); } } void kore_pgsql_init(struct kore_pgsql *pgsql) { memset(pgsql, 0, sizeof(*pgsql)); pgsql->state = KORE_PGSQL_STATE_INIT; } int kore_pgsql_setup(struct kore_pgsql *pgsql, const char *dbname, int flags) { struct pgsql_db *db; if ((flags & KORE_PGSQL_ASYNC) && (flags & KORE_PGSQL_SYNC)) { pgsql_set_error(pgsql, "invalid query init parameters"); return (KORE_RESULT_ERROR); } if (flags & KORE_PGSQL_ASYNC) { if (pgsql->req == NULL && pgsql->cb == NULL) { pgsql_set_error(pgsql, "nothing was bound"); return (KORE_RESULT_ERROR); } } db = NULL; pgsql->flags |= flags; LIST_FOREACH(db, &pgsql_db_conn_strings, rlist) { if (!strcmp(db->name, dbname)) break; } if (db == NULL) { pgsql_set_error(pgsql, "no database found"); return (KORE_RESULT_ERROR); } if ((pgsql->conn = pgsql_conn_next(pgsql, db)) == NULL) return (KORE_RESULT_ERROR); if (pgsql->flags & KORE_PGSQL_ASYNC) { pgsql->conn->job = kore_pool_get(&pgsql_job_pool); pgsql->conn->job->pgsql = pgsql; } return (KORE_RESULT_OK); } #if !defined(KORE_NO_HTTP) void kore_pgsql_bind_request(struct kore_pgsql *pgsql, struct http_request *req) { if (pgsql->req != NULL || pgsql->cb != NULL) fatal("kore_pgsql_bind_request: already bound"); pgsql->req = req; pgsql->flags |= PGSQL_LIST_INSERTED; LIST_INSERT_HEAD(&(req->pgsqls), pgsql, rlist); } #endif void kore_pgsql_bind_callback(struct kore_pgsql *pgsql, void (*cb)(struct kore_pgsql *, void *), void *arg) { if (pgsql->req != NULL) fatal("kore_pgsql_bind_callback: already bound"); if (pgsql->cb != NULL) fatal("kore_pgsql_bind_callback: already bound"); pgsql->cb = cb; pgsql->arg = arg; } int kore_pgsql_query(struct kore_pgsql *pgsql, const void *query) { if (pgsql->conn == NULL) { pgsql_set_error(pgsql, "no connection was set before query"); return (KORE_RESULT_ERROR); } if (pgsql->flags & KORE_PGSQL_SYNC) { pgsql->result = PQexec(pgsql->conn->db, query); if ((PQresultStatus(pgsql->result) != PGRES_TUPLES_OK) && (PQresultStatus(pgsql->result) != PGRES_COMMAND_OK)) { pgsql_set_error(pgsql, PQerrorMessage(pgsql->conn->db)); return (KORE_RESULT_ERROR); } pgsql->state = KORE_PGSQL_STATE_DONE; } else { if (!PQsendQuery(pgsql->conn->db, query)) { pgsql_set_error(pgsql, PQerrorMessage(pgsql->conn->db)); return (KORE_RESULT_ERROR); } pgsql_schedule(pgsql); } return (KORE_RESULT_OK); } int kore_pgsql_v_query_params(struct kore_pgsql *pgsql, const void *query, int binary, int count, va_list args) { int i; const char **values; int *lengths, *formats, ret; if (pgsql->conn == NULL) { pgsql_set_error(pgsql, "no connection was set before query"); return (KORE_RESULT_ERROR); } if (count > 0) { lengths = kore_calloc(count, sizeof(int)); formats = kore_calloc(count, sizeof(int)); values = kore_calloc(count, sizeof(char *)); for (i = 0; i < count; i++) { values[i] = va_arg(args, void *); lengths[i] = va_arg(args, int); formats[i] = va_arg(args, int); } } else { lengths = NULL; formats = NULL; values = NULL; } ret = kore_pgsql_query_param_fields(pgsql, query, binary, count, values, lengths, formats); kore_free(values); kore_free(lengths); kore_free(formats); return (ret); } int kore_pgsql_query_param_fields(struct kore_pgsql *pgsql, const void *query, int binary, int count, const char **values, int *lengths, int *formats) { if (pgsql->conn == NULL) { pgsql_set_error(pgsql, "no connection was set before query"); return (KORE_RESULT_ERROR); } if (pgsql->flags & KORE_PGSQL_SYNC) { pgsql->result = PQexecParams(pgsql->conn->db, query, count, NULL, (const char * const *)values, lengths, formats, binary); if ((PQresultStatus(pgsql->result) != PGRES_TUPLES_OK) && (PQresultStatus(pgsql->result) != PGRES_COMMAND_OK)) { pgsql_set_error(pgsql, PQerrorMessage(pgsql->conn->db)); return (KORE_RESULT_ERROR); } pgsql->state = KORE_PGSQL_STATE_DONE; } else { if (!PQsendQueryParams(pgsql->conn->db, query, count, NULL, (const char * const *)values, lengths, formats, binary)) { pgsql_set_error(pgsql, PQerrorMessage(pgsql->conn->db)); return (KORE_RESULT_ERROR); } pgsql_schedule(pgsql); } return (KORE_RESULT_OK); } int kore_pgsql_query_params(struct kore_pgsql *pgsql, const void *query, int binary, int count, ...) { int ret; va_list args; va_start(args, count); ret = kore_pgsql_v_query_params(pgsql, query, binary, count, args); va_end(args); return (ret); } int kore_pgsql_register(const char *dbname, const char *connstring) { struct pgsql_db *pgsqldb; LIST_FOREACH(pgsqldb, &pgsql_db_conn_strings, rlist) { if (!strcmp(pgsqldb->name, dbname)) return (KORE_RESULT_ERROR); } pgsqldb = kore_malloc(sizeof(*pgsqldb)); pgsqldb->name = kore_strdup(dbname); pgsqldb->conn_count = 0; pgsqldb->conn_max = pgsql_conn_max; pgsqldb->conn_string = kore_strdup(connstring); LIST_INSERT_HEAD(&pgsql_db_conn_strings, pgsqldb, rlist); return (KORE_RESULT_OK); } void kore_pgsql_handle(void *c, int err) { struct kore_pgsql *pgsql; struct pgsql_conn *conn = (struct pgsql_conn *)c; if (err) { pgsql_conn_cleanup(conn); return; } if (!(conn->evt.flags & KORE_EVENT_READ)) fatal("%s: read event not set", __func__); pgsql = conn->job->pgsql; if (!PQconsumeInput(conn->db)) { pgsql->state = KORE_PGSQL_STATE_ERROR; pgsql->error = kore_strdup(PQerrorMessage(conn->db)); } else { pgsql_read_result(pgsql); } if (pgsql->state == KORE_PGSQL_STATE_WAIT) { #if !defined(KORE_NO_HTTP) if (pgsql->req != NULL) http_request_sleep(pgsql->req); #endif if (pgsql->cb != NULL) pgsql->cb(pgsql, pgsql->arg); } else { #if !defined(KORE_NO_HTTP) if (pgsql->req != NULL) http_request_wakeup(pgsql->req); #endif if (pgsql->cb != NULL) pgsql->cb(pgsql, pgsql->arg); } } void kore_pgsql_continue(struct kore_pgsql *pgsql) { if (pgsql->error) { kore_free(pgsql->error); pgsql->error = NULL; } if (pgsql->result) { PQclear(pgsql->result); pgsql->result = NULL; } switch (pgsql->state) { case KORE_PGSQL_STATE_INIT: case KORE_PGSQL_STATE_WAIT: break; case KORE_PGSQL_STATE_DONE: #if !defined(KORE_NO_HTTP) if (pgsql->req != NULL) http_request_wakeup(pgsql->req); #endif pgsql_conn_release(pgsql); break; case KORE_PGSQL_STATE_ERROR: case KORE_PGSQL_STATE_RESULT: case KORE_PGSQL_STATE_NOTIFY: kore_pgsql_handle(pgsql->conn, 0); break; default: fatal("unknown pgsql state %d", pgsql->state); } } void kore_pgsql_cleanup(struct kore_pgsql *pgsql) { pgsql_queue_remove(pgsql); if (pgsql->result != NULL) PQclear(pgsql->result); if (pgsql->error != NULL) kore_free(pgsql->error); if (pgsql->conn != NULL) pgsql_conn_release(pgsql); pgsql->result = NULL; pgsql->error = NULL; pgsql->conn = NULL; if (pgsql->flags & PGSQL_LIST_INSERTED) { LIST_REMOVE(pgsql, rlist); pgsql->flags &= ~PGSQL_LIST_INSERTED; } } void kore_pgsql_logerror(struct kore_pgsql *pgsql) { kore_log(LOG_NOTICE, "pgsql error: %s", (pgsql->error) ? pgsql->error : "unknown"); } int kore_pgsql_ntuples(struct kore_pgsql *pgsql) { return (PQntuples(pgsql->result)); } int kore_pgsql_nfields(struct kore_pgsql *pgsql) { return (PQnfields(pgsql->result)); } int kore_pgsql_getlength(struct kore_pgsql *pgsql, int row, int col) { return (PQgetlength(pgsql->result, row, col)); } char * kore_pgsql_fieldname(struct kore_pgsql *pgsql, int field) { return (PQfname(pgsql->result, field)); } char * kore_pgsql_getvalue(struct kore_pgsql *pgsql, int row, int col) { return (PQgetvalue(pgsql->result, row, col)); } int kore_pgsql_column_binary(struct kore_pgsql *pgsql, int col) { return (PQfformat(pgsql->result, col)); } static struct pgsql_conn * pgsql_conn_next(struct kore_pgsql *pgsql, struct pgsql_db *db) { PGTransactionStatusType state; struct pgsql_conn *conn; struct kore_pgsql rollback; rescan: conn = NULL; TAILQ_FOREACH(conn, &pgsql_conn_free, list) { if (!(conn->flags & PGSQL_CONN_FREE)) fatal("got a pgsql connection that was not free?"); if (!strcmp(conn->name, db->name)) break; } if (conn != NULL) { state = PQtransactionStatus(conn->db); if (state == PQTRANS_INERROR) { conn->flags &= ~PGSQL_CONN_FREE; TAILQ_REMOVE(&pgsql_conn_free, conn, list); kore_pgsql_init(&rollback); rollback.conn = conn; rollback.flags = KORE_PGSQL_SYNC; if (!kore_pgsql_query(&rollback, "ROLLBACK")) { kore_pgsql_logerror(&rollback); kore_pgsql_cleanup(&rollback); pgsql_conn_cleanup(conn); } else { kore_pgsql_cleanup(&rollback); } goto rescan; } } if (conn == NULL) { if (db->conn_max != 0 && db->conn_count >= db->conn_max) { if ((pgsql->flags & KORE_PGSQL_ASYNC) && pgsql_queue_count < pgsql_queue_limit) { pgsql_queue_add(pgsql); } else { pgsql_set_error(pgsql, "no available connection"); } return (NULL); } if ((conn = pgsql_conn_create(pgsql, db)) == NULL) return (NULL); } conn->flags &= ~PGSQL_CONN_FREE; TAILQ_REMOVE(&pgsql_conn_free, conn, list); return (conn); } static void pgsql_set_error(struct kore_pgsql *pgsql, const char *msg) { if (pgsql->error != NULL) kore_free(pgsql->error); pgsql->error = kore_strdup(msg); pgsql->state = KORE_PGSQL_STATE_ERROR; } static void pgsql_schedule(struct kore_pgsql *pgsql) { int fd; fd = PQsocket(pgsql->conn->db); if (fd < 0) fatal("PQsocket returned < 0 fd on open connection"); kore_platform_schedule_read(fd, pgsql->conn); pgsql->state = KORE_PGSQL_STATE_WAIT; pgsql->flags |= KORE_PGSQL_SCHEDULED; #if !defined(KORE_NO_HTTP) if (pgsql->req != NULL) http_request_sleep(pgsql->req); #endif if (pgsql->cb != NULL) pgsql->cb(pgsql, pgsql->arg); } static void pgsql_queue_add(struct kore_pgsql *pgsql) { struct pgsql_wait *pgw; #if !defined(KORE_NO_HTTP) if (pgsql->req != NULL) http_request_sleep(pgsql->req); #endif pgw = kore_pool_get(&pgsql_wait_pool); pgw->pgsql = pgsql; pgsql_queue_count++; TAILQ_INSERT_TAIL(&pgsql_wait_queue, pgw, list); } static void pgsql_queue_remove(struct kore_pgsql *pgsql) { struct pgsql_wait *pgw, *next; for (pgw = TAILQ_FIRST(&pgsql_wait_queue); pgw != NULL; pgw = next) { next = TAILQ_NEXT(pgw, list); if (pgw->pgsql != pgsql) continue; pgsql_queue_count--; TAILQ_REMOVE(&pgsql_wait_queue, pgw, list); kore_pool_put(&pgsql_wait_pool, pgw); return; } } static void pgsql_queue_wakeup(void) { struct pgsql_wait *pgw, *next; for (pgw = TAILQ_FIRST(&pgsql_wait_queue); pgw != NULL; pgw = next) { next = TAILQ_NEXT(pgw, list); #if !defined(KORE_NO_HTTP) if (pgw->pgsql->req != NULL) { if (pgw->pgsql->req->flags & HTTP_REQUEST_DELETE) { pgsql_queue_count--; TAILQ_REMOVE(&pgsql_wait_queue, pgw, list); kore_pool_put(&pgsql_wait_pool, pgw); continue; } http_request_wakeup(pgw->pgsql->req); } #endif if (pgw->pgsql->cb != NULL) pgw->pgsql->cb(pgw->pgsql, pgw->pgsql->arg); pgsql_queue_count--; TAILQ_REMOVE(&pgsql_wait_queue, pgw, list); kore_pool_put(&pgsql_wait_pool, pgw); return; } } static struct pgsql_conn * pgsql_conn_create(struct kore_pgsql *pgsql, struct pgsql_db *db) { struct pgsql_conn *conn; if (db == NULL || db->conn_string == NULL) fatal("pgsql_conn_create: no connection string"); db->conn_count++; conn = kore_calloc(1, sizeof(*conn)); conn->job = NULL; conn->flags = PGSQL_CONN_FREE; conn->name = kore_strdup(db->name); TAILQ_INSERT_TAIL(&pgsql_conn_free, conn, list); conn->evt.type = KORE_TYPE_PGSQL_CONN; conn->evt.handle = kore_pgsql_handle; conn->db = PQconnectdb(db->conn_string); if (conn->db == NULL || (PQstatus(conn->db) != CONNECTION_OK)) { pgsql_set_error(pgsql, PQerrorMessage(conn->db)); pgsql_conn_cleanup(conn); return (NULL); } return (conn); } static void pgsql_conn_release(struct kore_pgsql *pgsql) { int fd; PGresult *result; if (pgsql->conn == NULL) return; /* Async query cleanup */ if (pgsql->flags & KORE_PGSQL_ASYNC) { if (pgsql->flags & KORE_PGSQL_SCHEDULED) { fd = PQsocket(pgsql->conn->db); kore_platform_disable_read(fd); if (pgsql->state != KORE_PGSQL_STATE_DONE) pgsql_cancel(pgsql); } kore_pool_put(&pgsql_job_pool, pgsql->conn->job); } /* Drain just in case. */ while ((result = PQgetResult(pgsql->conn->db)) != NULL) PQclear(result); pgsql->conn->job = NULL; pgsql->conn->flags |= PGSQL_CONN_FREE; TAILQ_INSERT_TAIL(&pgsql_conn_free, pgsql->conn, list); pgsql->conn = NULL; pgsql->state = KORE_PGSQL_STATE_COMPLETE; if (pgsql->cb != NULL) pgsql->cb(pgsql, pgsql->arg); pgsql_queue_wakeup(); } static void pgsql_conn_cleanup(struct pgsql_conn *conn) { struct kore_pgsql *pgsql; struct pgsql_db *pgsqldb; if (conn->flags & PGSQL_CONN_FREE) TAILQ_REMOVE(&pgsql_conn_free, conn, list); if (conn->job) { pgsql = conn->job->pgsql; #if !defined(KORE_NO_HTTP) if (pgsql->req != NULL) http_request_wakeup(pgsql->req); #endif pgsql->conn = NULL; pgsql_set_error(pgsql, PQerrorMessage(conn->db)); kore_pool_put(&pgsql_job_pool, conn->job); conn->job = NULL; } if (conn->db != NULL) PQfinish(conn->db); LIST_FOREACH(pgsqldb, &pgsql_db_conn_strings, rlist) { if (!strcmp(pgsqldb->name, conn->name)) { pgsqldb->conn_count--; break; } } kore_free(conn->name); kore_free(conn); } static void pgsql_read_result(struct kore_pgsql *pgsql) { PGnotify *notify; if (PQisBusy(pgsql->conn->db)) { pgsql->state = KORE_PGSQL_STATE_WAIT; return; } while ((notify = PQnotifies(pgsql->conn->db)) != NULL) { pgsql->state = KORE_PGSQL_STATE_NOTIFY; pgsql->notify.extra = notify->extra; pgsql->notify.channel = notify->relname; if (pgsql->cb != NULL) pgsql->cb(pgsql, pgsql->arg); PQfreemem(notify); } pgsql->result = PQgetResult(pgsql->conn->db); if (pgsql->result == NULL) { pgsql->state = KORE_PGSQL_STATE_DONE; return; } switch (PQresultStatus(pgsql->result)) { case PGRES_COPY_OUT: case PGRES_COPY_IN: case PGRES_NONFATAL_ERROR: case PGRES_COPY_BOTH: break; case PGRES_COMMAND_OK: pgsql->state = KORE_PGSQL_STATE_DONE; break; case PGRES_TUPLES_OK: #if PG_VERSION_NUM >= 90200 case PGRES_SINGLE_TUPLE: #endif pgsql->state = KORE_PGSQL_STATE_RESULT; break; case PGRES_EMPTY_QUERY: case PGRES_BAD_RESPONSE: case PGRES_FATAL_ERROR: pgsql_set_error(pgsql, PQresultErrorMessage(pgsql->result)); break; } } static void pgsql_cancel(struct kore_pgsql *pgsql) { PGcancel *cancel; char buf[256]; if ((cancel = PQgetCancel(pgsql->conn->db)) != NULL) { if (!PQcancel(cancel, buf, sizeof(buf))) kore_log(LOG_ERR, "failed to cancel: %s", buf); PQfreeCancel(cancel); } } kore-3.3.1/src/pool.c000066400000000000000000000113211347522026400143650ustar00rootroot00000000000000/* * Copyright (c) 2013-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include #include "kore.h" #define POOL_MIN_ELEMENTS 16 #define POOL_ELEMENT_BUSY 0 #define POOL_ELEMENT_FREE 1 #if defined(KORE_USE_TASKS) static void pool_lock(struct kore_pool *); static void pool_unlock(struct kore_pool *); #endif static void pool_region_create(struct kore_pool *, size_t); static void pool_region_destroy(struct kore_pool *); void kore_pool_init(struct kore_pool *pool, const char *name, size_t len, size_t elm) { kore_debug("kore_pool_init(%p, %s, %zu, %zu)", pool, name, len, elm); if (elm < POOL_MIN_ELEMENTS) elm = POOL_MIN_ELEMENTS; if ((pool->name = strdup(name)) == NULL) fatal("kore_pool_init: strdup %s", errno_s); pool->lock = 0; pool->elms = 0; pool->inuse = 0; pool->elen = len; pool->growth = elm * 0.25f; pool->slen = pool->elen + sizeof(struct kore_pool_entry); LIST_INIT(&(pool->regions)); LIST_INIT(&(pool->freelist)); pool_region_create(pool, elm); } void kore_pool_cleanup(struct kore_pool *pool) { pool->lock = 0; pool->elms = 0; pool->inuse = 0; pool->elen = 0; pool->slen = 0; free(pool->name); pool->name = NULL; pool_region_destroy(pool); } void * kore_pool_get(struct kore_pool *pool) { u_int8_t *ptr; struct kore_pool_entry *entry; #if defined(KORE_USE_TASKS) pool_lock(pool); #endif if (LIST_EMPTY(&(pool->freelist))) pool_region_create(pool, pool->growth); entry = LIST_FIRST(&(pool->freelist)); if (entry->state != POOL_ELEMENT_FREE) fatal("%s: element %p was not free", pool->name, entry); LIST_REMOVE(entry, list); entry->state = POOL_ELEMENT_BUSY; ptr = (u_int8_t *)entry + sizeof(struct kore_pool_entry); pool->inuse++; #if defined(KORE_USE_TASKS) pool_unlock(pool); #endif return (ptr); } void kore_pool_put(struct kore_pool *pool, void *ptr) { struct kore_pool_entry *entry; #if defined(KORE_USE_TASKS) pool_lock(pool); #endif entry = (struct kore_pool_entry *) ((u_int8_t *)ptr - sizeof(struct kore_pool_entry)); if (entry->state != POOL_ELEMENT_BUSY) fatal("%s: element %p was not busy", pool->name, ptr); entry->state = POOL_ELEMENT_FREE; LIST_INSERT_HEAD(&(pool->freelist), entry, list); pool->inuse--; #if defined(KORE_USE_TASKS) pool_unlock(pool); #endif } static void pool_region_create(struct kore_pool *pool, size_t elms) { size_t i; u_int8_t *p; struct kore_pool_region *reg; struct kore_pool_entry *entry; kore_debug("pool_region_create(%p, %zu)", pool, elms); if ((reg = calloc(1, sizeof(struct kore_pool_region))) == NULL) fatal("pool_region_create: calloc: %s", errno_s); LIST_INSERT_HEAD(&(pool->regions), reg, list); if (SIZE_MAX / elms < pool->slen) fatal("pool_region_create: overflow"); reg->length = elms * pool->slen; reg->start = mmap(NULL, reg->length, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); if (reg->start == MAP_FAILED) fatal("mmap: %s", errno_s); p = (u_int8_t *)reg->start; for (i = 0; i < elms; i++) { entry = (struct kore_pool_entry *)p; entry->region = reg; entry->state = POOL_ELEMENT_FREE; LIST_INSERT_HEAD(&(pool->freelist), entry, list); p = p + pool->slen; } pool->elms += elms; } static void pool_region_destroy(struct kore_pool *pool) { struct kore_pool_region *reg; kore_debug("pool_region_destroy(%p)", pool); /* Take care iterating when modifying list contents */ while (!LIST_EMPTY(&pool->regions)) { reg = LIST_FIRST(&pool->regions); LIST_REMOVE(reg, list); (void)munmap(reg->start, reg->length); free(reg); } /* Freelist references into the regions memory allocations */ LIST_INIT(&pool->freelist); pool->elms = 0; } #if defined(KORE_USE_TASKS) static void pool_lock(struct kore_pool *pool) { for (;;) { if (__sync_bool_compare_and_swap(&pool->lock, 0, 1)) break; } } static void pool_unlock(struct kore_pool *pool) { if (!__sync_bool_compare_and_swap(&pool->lock, 1, 0)) fatal("pool_unlock: failed to release %s", pool->name); } #endif kore-3.3.1/src/python.c000066400000000000000000002736261347522026400147570ustar00rootroot00000000000000/* * Copyright (c) 2016 Stanislav Yudin * Copyright (c) 2017-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include #include #include #include #include #include #include "kore.h" #include "http.h" #if defined(KORE_USE_PGSQL) #include "pgsql.h" #endif #if defined(KORE_USE_CURL) #include "curl.h" #endif #include "python_api.h" #include "python_methods.h" static PyMODINIT_FUNC python_module_init(void); static PyObject *python_import(const char *); static PyObject *pyconnection_alloc(struct connection *); static PyObject *python_callable(PyObject *, const char *); static void python_split_arguments(char *, char **, size_t); static int pyhttp_response_sent(struct netbuf *); static PyObject *pyhttp_file_alloc(struct http_file *); static PyObject *pyhttp_request_alloc(const struct http_request *); static struct python_coro *python_coro_create(PyObject *, struct http_request *); static int python_coro_run(struct python_coro *); static void python_coro_wakeup(struct python_coro *); static void python_coro_suspend(struct python_coro *); static void pysocket_evt_handle(void *, int); static void pysocket_op_timeout(void *, u_int64_t); static PyObject *pysocket_op_create(struct pysocket *, int, const void *, size_t); static struct pysocket *pysocket_alloc(void); static PyObject *pysocket_async_recv(struct pysocket_op *); static PyObject *pysocket_async_send(struct pysocket_op *); static PyObject *pysocket_async_accept(struct pysocket_op *); static PyObject *pysocket_async_connect(struct pysocket_op *); static void pylock_do_release(struct pylock *); static void pytimer_run(void *, u_int64_t); static void pyproc_timeout(void *, u_int64_t); static void pysuspend_wakeup(void *, u_int64_t); static void pygather_reap_coro(struct pygather_op *, struct python_coro *); static int pyhttp_iterobj_chunk_sent(struct netbuf *); static int pyhttp_iterobj_next(struct pyhttp_iterobj *); static void pyhttp_iterobj_disconnect(struct connection *); #if defined(KORE_USE_PGSQL) static PyObject *pykore_pgsql_alloc(struct http_request *, const char *, const char *, PyObject *); static int pykore_pgsql_params(struct pykore_pgsql *, PyObject *); #endif #if defined(KORE_USE_CURL) static void python_curl_callback(struct kore_curl *, void *); static PyObject *pyhttp_client_request(struct pyhttp_client *, int, PyObject *); #endif static void python_append_path(const char *); static void python_push_integer(PyObject *, const char *, long); static void python_push_type(const char *, PyObject *, PyTypeObject *); static int python_validator_check(PyObject *); static int python_runtime_http_request(void *, struct http_request *); static int python_runtime_validator(void *, struct http_request *, const void *); static void python_runtime_wsmessage(void *, struct connection *, u_int8_t, const void *, size_t); static void python_runtime_execute(void *); static int python_runtime_onload(void *, int); static void python_runtime_configure(void *, int, char **); static void python_runtime_connect(void *, struct connection *); static void python_module_load(struct kore_module *); static void python_module_free(struct kore_module *); static void python_module_reload(struct kore_module *); static void *python_module_getsym(struct kore_module *, const char *); static void *python_malloc(void *, size_t); static void *python_calloc(void *, size_t, size_t); static void *python_realloc(void *, void *, size_t); static void python_free(void *, void *); struct kore_module_functions kore_python_module = { .free = python_module_free, .load = python_module_load, .getsym = python_module_getsym, .reload = python_module_reload }; struct kore_runtime kore_python_runtime = { KORE_RUNTIME_PYTHON, .http_request = python_runtime_http_request, .validator = python_runtime_validator, .wsconnect = python_runtime_connect, .wsmessage = python_runtime_wsmessage, .wsdisconnect = python_runtime_connect, .onload = python_runtime_onload, .connect = python_runtime_connect, .execute = python_runtime_execute, .configure = python_runtime_configure, }; static struct { const char *symbol; int value; } python_integers[] = { { "LOG_ERR", LOG_ERR }, { "LOG_INFO", LOG_INFO }, { "LOG_NOTICE", LOG_NOTICE }, { "RESULT_OK", KORE_RESULT_OK }, { "RESULT_RETRY", KORE_RESULT_RETRY }, { "RESULT_ERROR", KORE_RESULT_ERROR }, { "MODULE_LOAD", KORE_MODULE_LOAD }, { "MODULE_UNLOAD", KORE_MODULE_UNLOAD }, { "TIMER_ONESHOT", KORE_TIMER_ONESHOT }, { "CONN_PROTO_HTTP", CONN_PROTO_HTTP }, { "CONN_PROTO_UNKNOWN", CONN_PROTO_UNKNOWN }, { "CONN_PROTO_WEBSOCKET", CONN_PROTO_WEBSOCKET }, { "CONN_STATE_ESTABLISHED", CONN_STATE_ESTABLISHED }, { "HTTP_METHOD_GET", HTTP_METHOD_GET }, { "HTTP_METHOD_PUT", HTTP_METHOD_PUT }, { "HTTP_METHOD_HEAD", HTTP_METHOD_HEAD }, { "HTTP_METHOD_POST", HTTP_METHOD_POST }, { "HTTP_METHOD_DELETE", HTTP_METHOD_DELETE }, { "HTTP_METHOD_OPTIONS", HTTP_METHOD_OPTIONS }, { "HTTP_METHOD_PATCH", HTTP_METHOD_PATCH }, { "WEBSOCKET_OP_TEXT", WEBSOCKET_OP_TEXT }, { "WEBSOCKET_OP_BINARY", WEBSOCKET_OP_BINARY }, { "WEBSOCKET_BROADCAST_LOCAL", WEBSOCKET_BROADCAST_LOCAL }, { "WEBSOCKET_BROADCAST_GLOBAL", WEBSOCKET_BROADCAST_GLOBAL }, { NULL, -1 } }; static PyMemAllocatorEx allocator = { .ctx = NULL, .malloc = python_malloc, .calloc = python_calloc, .realloc = python_realloc, .free = python_free }; static TAILQ_HEAD(, pyproc) procs; static struct kore_pool coro_pool; static struct kore_pool iterobj_pool; static struct kore_pool queue_wait_pool; static struct kore_pool gather_coro_pool; static struct kore_pool queue_object_pool; static struct kore_pool gather_result_pool; static u_int64_t coro_id; static int coro_count; static struct coro_list coro_runnable; static struct coro_list coro_suspended; extern const char *__progname; /* XXX */ static struct python_coro *coro_running = NULL; static PyObject *python_tracer = NULL; void kore_python_init(void) { struct kore_runtime_call *rcall; coro_id = 0; coro_count = 0; TAILQ_INIT(&procs); TAILQ_INIT(&coro_runnable); TAILQ_INIT(&coro_suspended); kore_pool_init(&coro_pool, "coropool", sizeof(struct python_coro), 100); kore_pool_init(&iterobj_pool, "iterobj_pool", sizeof(struct pyhttp_iterobj), 100); kore_pool_init(&queue_wait_pool, "queue_wait_pool", sizeof(struct pyqueue_waiting), 100); kore_pool_init(&gather_coro_pool, "gather_coro_pool", sizeof(struct pygather_coro), 100); kore_pool_init(&queue_object_pool, "queue_object_pool", sizeof(struct pyqueue_object), 100); kore_pool_init(&gather_result_pool, "gather_result_pool", sizeof(struct pygather_result), 100); PyMem_SetAllocator(PYMEM_DOMAIN_OBJ, &allocator); PyMem_SetAllocator(PYMEM_DOMAIN_MEM, &allocator); PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &allocator); PyMem_SetupDebugHooks(); if (PyImport_AppendInittab("kore", &python_module_init) == -1) fatal("kore_python_init: failed to add new module"); rcall = kore_runtime_getcall("kore_python_preinit"); if (rcall != NULL) { kore_runtime_execute(rcall); kore_free(rcall); } Py_Initialize(); } void kore_python_cleanup(void) { if (Py_IsInitialized()) { PyErr_Clear(); Py_Finalize(); } } void kore_python_path(const char *path) { python_append_path(path); } void kore_python_coro_run(void) { struct pygather_op *op; struct python_coro *coro; while ((coro = TAILQ_FIRST(&coro_runnable)) != NULL) { if (coro->state != CORO_STATE_RUNNABLE) fatal("non-runnable coro on coro_runnable"); if (python_coro_run(coro) == KORE_RESULT_OK) { if (coro->gatherop != NULL) { op = coro->gatherop; if (op->coro->request != NULL) http_request_wakeup(op->coro->request); else python_coro_wakeup(op->coro); pygather_reap_coro(op, coro); } else { kore_python_coro_delete(coro); } } } /* * Let Kore do HTTP processing so awoken coroutines run asap without * having to wait for a tick from the event loop. * * Maybe it is more beneficial that we track if something related * to HTTP requests was awoken and only run if true? */ http_process(); } void kore_python_coro_delete(void *obj) { struct python_coro *coro; coro = obj; coro_count--; coro_running = coro; Py_DECREF(coro->obj); coro_running = NULL; if (coro->state == CORO_STATE_RUNNABLE) TAILQ_REMOVE(&coro_runnable, coro, list); else TAILQ_REMOVE(&coro_suspended, coro, list); Py_XDECREF(coro->result); kore_pool_put(&coro_pool, coro); } void kore_python_log_error(const char *function) { const char *sval; PyObject *ret, *repr, *type, *value, *traceback; if (!PyErr_Occurred() || PyErr_ExceptionMatches(PyExc_StopIteration)) return; PyErr_Fetch(&type, &value, &traceback); if (type == NULL || value == NULL) { kore_log(LOG_ERR, "unknown python exception in '%s'", function); return; } if (value == NULL || !PyObject_IsInstance(value, type)) PyErr_NormalizeException(&type, &value, &traceback); /* * If we're in an active coroutine and it was tied to a gather * operation we have to make sure we can use the Exception that * was thrown as the result value so we can propagate it via the * return list of kore.gather(). */ if (coro_running != NULL && coro_running->gatherop != NULL) { PyErr_SetObject(PyExc_StopIteration, value); } else if (python_tracer != NULL) { /* * Call the user-supplied tracer callback. */ ret = PyObject_CallFunctionObjArgs(python_tracer, type, value, traceback, NULL); Py_XDECREF(ret); } else { if ((repr = PyObject_Repr(value)) == NULL) sval = "unknown"; else sval = PyUnicode_AsUTF8(repr); kore_log(LOG_ERR, "uncaught exception %s in '%s'", sval, function); Py_XDECREF(repr); } Py_DECREF(type); Py_DECREF(value); Py_XDECREF(traceback); } void kore_python_proc_reap(void) { struct pyproc *proc; pid_t child; int status; for (;;) { if ((child = waitpid(-1, &status, WNOHANG)) == -1) { if (errno == ECHILD) return; if (errno == EINTR) continue; kore_log(LOG_NOTICE, "waitpid: %s", errno_s); return; } if (child == 0) return; proc = NULL; TAILQ_FOREACH(proc, &procs, list) { if (proc->pid == child) break; } if (proc == NULL) continue; proc->pid = -1; proc->reaped = 1; proc->status = status; if (proc->timer != NULL) { kore_timer_remove(proc->timer); proc->timer = NULL; } if (proc->coro->request != NULL) http_request_wakeup(proc->coro->request); else python_coro_wakeup(proc->coro); } } static void * python_malloc(void *ctx, size_t len) { return (kore_malloc(len)); } static void * python_calloc(void *ctx, size_t memb, size_t len) { return (kore_calloc(memb, len)); } static void * python_realloc(void *ctx, void *ptr, size_t len) { return (kore_realloc(ptr, len)); } static void python_free(void *ctx, void *ptr) { kore_free(ptr); } static void python_module_free(struct kore_module *module) { kore_free(module->path); Py_DECREF(module->handle); kore_free(module); } static void python_split_arguments(char *args, char **argv, size_t elm) { size_t idx; char *p, *line, *end; if (elm <= 1) fatal("not enough elements (%zu)", elm); idx = 0; line = args; for (p = line; *p != '\0'; p++) { if (idx >= elm - 1) break; if (*p == ' ') { *p = '\0'; if (*line != '\0') argv[idx++] = line; line = p + 1; continue; } if (*p != '"') continue; line = p + 1; if ((end = strchr(line, '"')) == NULL) break; *end = '\0'; argv[idx++] = line; line = end + 1; while (isspace(*(unsigned char *)line)) line++; p = line; } if (idx < elm - 1 && *line != '\0') argv[idx++] = line; argv[idx] = NULL; } static void python_module_reload(struct kore_module *module) { PyObject *handle; PyErr_Clear(); if ((handle = PyImport_ReloadModule(module->handle)) == NULL) { kore_python_log_error("python_module_reload"); return; } Py_DECREF(module->handle); module->handle = handle; } static void python_module_load(struct kore_module *module) { module->handle = python_import(module->path); if (module->handle == NULL) fatal("%s: failed to import module", module->path); } static void * python_module_getsym(struct kore_module *module, const char *symbol) { return (python_callable(module->handle, symbol)); } static struct python_coro * python_coro_create(PyObject *obj, struct http_request *req) { struct python_coro *coro; if (!PyCoro_CheckExact(obj)) fatal("%s: object is not a coroutine", __func__); coro = kore_pool_get(&coro_pool); coro_count++; coro->result = NULL; coro->sockop = NULL; coro->gatherop = NULL; coro->exception = NULL; coro->exception_msg = NULL; coro->obj = obj; coro->request = req; coro->id = coro_id++; coro->state = CORO_STATE_RUNNABLE; TAILQ_INSERT_HEAD(&coro_runnable, coro, list); if (coro->request != NULL) http_request_sleep(coro->request); return (coro); } static int python_coro_run(struct python_coro *coro) { PyObject *item; PyObject *type, *traceback; if (coro->state != CORO_STATE_RUNNABLE) fatal("non-runnable coro attempted to run"); coro_running = coro; for (;;) { PyErr_Clear(); item = _PyGen_Send((PyGenObject *)coro->obj, NULL); if (item == NULL) { if (coro->gatherop == NULL && PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) { PyErr_Fetch(&type, &coro->result, &traceback); Py_DECREF(type); Py_XDECREF(traceback); } else { kore_python_log_error("coroutine"); } coro_running = NULL; return (KORE_RESULT_OK); } if (item == Py_None) { Py_DECREF(item); break; } Py_DECREF(item); } python_coro_suspend(coro); coro_running = NULL; if (coro->request != NULL) http_request_sleep(coro->request); return (KORE_RESULT_RETRY); } static void python_coro_wakeup(struct python_coro *coro) { if (coro->state != CORO_STATE_SUSPENDED) return; coro->state = CORO_STATE_RUNNABLE; TAILQ_REMOVE(&coro_suspended, coro, list); TAILQ_INSERT_HEAD(&coro_runnable, coro, list); } static void python_coro_suspend(struct python_coro *coro) { if (coro->state != CORO_STATE_RUNNABLE) return; coro->state = CORO_STATE_SUSPENDED; TAILQ_REMOVE(&coro_runnable, coro, list); TAILQ_INSERT_HEAD(&coro_suspended, coro, list); } static void pyconnection_dealloc(struct pyconnection *pyc) { PyObject_Del((PyObject *)pyc); } static void pyhttp_dealloc(struct pyhttp_request *pyreq) { Py_XDECREF(pyreq->data); PyObject_Del((PyObject *)pyreq); } static void pyhttp_file_dealloc(struct pyhttp_file *pyfile) { PyObject_Del((PyObject *)pyfile); } static int python_runtime_http_request(void *addr, struct http_request *req) { PyObject *pyret, *pyreq, *args, *callable; if (req->py_coro != NULL) { python_coro_wakeup(req->py_coro); if (python_coro_run(req->py_coro) == KORE_RESULT_OK) { kore_python_coro_delete(req->py_coro); req->py_coro = NULL; return (KORE_RESULT_OK); } return (KORE_RESULT_RETRY); } callable = (PyObject *)addr; if ((pyreq = pyhttp_request_alloc(req)) == NULL) fatal("python_runtime_http_request: pyreq alloc failed"); if ((args = PyTuple_New(1)) == NULL) fatal("python_runtime_http_request: PyTuple_New failed"); if (PyTuple_SetItem(args, 0, pyreq) != 0) fatal("python_runtime_http_request: PyTuple_SetItem failed"); PyErr_Clear(); pyret = PyObject_Call(callable, args, NULL); Py_DECREF(args); if (pyret == NULL) { kore_python_log_error("python_runtime_http_request"); http_response(req, HTTP_STATUS_INTERNAL_ERROR, NULL, 0); return (KORE_RESULT_OK); } if (PyCoro_CheckExact(pyret)) { req->py_coro = python_coro_create(pyret, req); if (python_coro_run(req->py_coro) == KORE_RESULT_OK) { http_request_wakeup(req); kore_python_coro_delete(req->py_coro); req->py_coro = NULL; return (KORE_RESULT_OK); } return (KORE_RESULT_RETRY); } if (pyret != Py_None) fatal("python_runtime_http_request: unexpected return type"); Py_DECREF(pyret); return (KORE_RESULT_OK); } static int python_runtime_validator(void *addr, struct http_request *req, const void *data) { int ret; struct python_coro *coro; PyObject *pyret, *pyreq, *args, *callable, *arg; if (req->py_coro != NULL) { coro = req->py_coro; python_coro_wakeup(coro); if (python_coro_run(coro) == KORE_RESULT_OK) { ret = python_validator_check(coro->result); kore_python_coro_delete(coro); req->py_coro = NULL; return (ret); } return (KORE_RESULT_RETRY); } callable = (PyObject *)addr; if (req->flags & HTTP_VALIDATOR_IS_REQUEST) { if ((arg = pyhttp_request_alloc(data)) == NULL) fatal("%s: pyreq failed", __func__); if ((args = PyTuple_New(1)) == NULL) fatal("%s: PyTuple_New failed", __func__); if (PyTuple_SetItem(args, 0, arg) != 0) fatal("%s: PyTuple_SetItem failed", __func__); } else { if ((pyreq = pyhttp_request_alloc(req)) == NULL) fatal("%s: pyreq alloc failed", __func__); if ((arg = PyUnicode_FromString(data)) == NULL) fatal("python_runtime_validator: PyUnicode failed"); if ((args = PyTuple_New(2)) == NULL) fatal("%s: PyTuple_New failed", __func__); if (PyTuple_SetItem(args, 0, pyreq) != 0 || PyTuple_SetItem(args, 1, arg) != 0) fatal("%s: PyTuple_SetItem failed", __func__); } PyErr_Clear(); pyret = PyObject_Call(callable, args, NULL); Py_DECREF(args); if (pyret == NULL) { kore_python_log_error("python_runtime_validator"); fatal("failed to execute python call"); } if (PyCoro_CheckExact(pyret)) { coro = python_coro_create(pyret, req); req->py_coro = coro; if (python_coro_run(coro) == KORE_RESULT_OK) { http_request_wakeup(req); ret = python_validator_check(coro->result); kore_python_coro_delete(coro); req->py_coro = NULL; return (ret); } return (KORE_RESULT_RETRY); } ret = python_validator_check(pyret); Py_DECREF(pyret); return (ret); } static int python_validator_check(PyObject *obj) { int ret; if (obj == NULL) return (KORE_RESULT_ERROR); if (!PyLong_Check(obj)) { kore_log(LOG_WARNING, "invalid return value from authenticator (not an int)"); ret = KORE_RESULT_ERROR; } else { ret = (int)PyLong_AsLong(obj); } switch (ret) { case KORE_RESULT_OK: case KORE_RESULT_ERROR: break; default: kore_log(LOG_WARNING, "unsupported authenticator return value '%d'", ret); ret = KORE_RESULT_ERROR; break; } return (ret); } static void python_runtime_wsmessage(void *addr, struct connection *c, u_int8_t op, const void *data, size_t len) { PyObject *callable, *args, *pyret, *pyc, *pyop, *pydata; callable = (PyObject *)addr; if ((pyc = pyconnection_alloc(c)) == NULL) fatal("python_runtime_wsmessage: pyc alloc failed"); if ((pyop = PyLong_FromLong((long)op)) == NULL) fatal("python_runtime_wsmessage: PyLong_FromLong failed"); switch (op) { case WEBSOCKET_OP_TEXT: if ((pydata = PyUnicode_FromStringAndSize(data, len)) == NULL) fatal("wsmessage: PyUnicode_AsUTF8AndSize failed"); break; case WEBSOCKET_OP_BINARY: if ((pydata = PyBytes_FromStringAndSize(data, len)) == NULL) fatal("wsmessage: PyBytes_FromString failed"); break; default: fatal("python_runtime_wsmessage: invalid op"); } if ((args = PyTuple_New(3)) == NULL) fatal("python_runtime_wsmessage: PyTuple_New failed"); if (PyTuple_SetItem(args, 0, pyc) != 0 || PyTuple_SetItem(args, 1, pyop) != 0 || PyTuple_SetItem(args, 2, pydata) != 0) fatal("python_runtime_wsmessage: PyTuple_SetItem failed"); PyErr_Clear(); pyret = PyObject_Call(callable, args, NULL); Py_DECREF(args); if (pyret == NULL) { kore_python_log_error("python_runtime_wsconnect"); fatal("failed to execute python call"); } Py_DECREF(pyret); } static void python_runtime_execute(void *addr) { PyObject *callable, *args, *pyret; callable = (PyObject *)addr; if ((args = PyTuple_New(0)) == NULL) fatal("python_runtime_execute: PyTuple_New failed"); PyErr_Clear(); pyret = PyObject_Call(callable, args, NULL); Py_DECREF(args); if (pyret == NULL) { kore_python_log_error("python_runtime_execute"); fatal("failed to execute python call"); } Py_DECREF(pyret); } static void python_runtime_configure(void *addr, int argc, char **argv) { int i; PyObject *callable, *args, *pyret, *pyarg, *list; callable = (PyObject *)addr; if ((args = PyTuple_New(1)) == NULL) fatal("python_runtime_configure: PyTuple_New failed"); if ((list = PyList_New(argc + 1)) == NULL) fatal("python_runtime_configure: PyList_New failed"); if ((pyarg = PyUnicode_FromString(__progname)) == NULL) fatal("python_runtime_configure: PyUnicode_FromString"); if (PyList_SetItem(list, 0, pyarg) == -1) fatal("python_runtime_configure: PyList_SetItem"); for (i = 0; i < argc; i++) { if ((pyarg = PyUnicode_FromString(argv[i])) == NULL) fatal("python_runtime_configure: PyUnicode_FromString"); if (PyList_SetItem(list, i + 1, pyarg) == -1) fatal("python_runtime_configure: PyList_SetItem"); } if (PyTuple_SetItem(args, 0, list) != 0) fatal("python_runtime_configure: PyTuple_SetItem"); PyErr_Clear(); pyret = PyObject_Call(callable, args, NULL); Py_DECREF(args); Py_DECREF(list); if (pyret == NULL) { kore_python_log_error("python_runtime_configure"); fatal("failed to call configure method: wrong args?"); } Py_DECREF(pyret); } static int python_runtime_onload(void *addr, int action) { int ret; PyObject *pyret, *args, *pyact, *callable; callable = (PyObject *)addr; if ((pyact = PyLong_FromLong(action)) == NULL) fatal("python_runtime_onload: PyLong_FromLong failed"); if ((args = PyTuple_New(1)) == NULL) fatal("python_runtime_onload: PyTuple_New failed"); if (PyTuple_SetItem(args, 0, pyact) != 0) fatal("python_runtime_onload: PyTuple_SetItem failed"); PyErr_Clear(); pyret = PyObject_Call(callable, args, NULL); Py_DECREF(args); if (pyret == NULL) { kore_python_log_error("python_runtime_onload"); return (KORE_RESULT_ERROR); } if (!PyLong_Check(pyret)) fatal("python_runtime_onload: unexpected return type"); ret = (int)PyLong_AsLong(pyret); Py_DECREF(pyret); return (ret); } static void python_runtime_connect(void *addr, struct connection *c) { PyObject *pyc, *pyret, *args, *callable; callable = (PyObject *)addr; if ((pyc = pyconnection_alloc(c)) == NULL) fatal("python_runtime_connect: pyc alloc failed"); if ((args = PyTuple_New(1)) == NULL) fatal("python_runtime_connect: PyTuple_New failed"); if (PyTuple_SetItem(args, 0, pyc) != 0) fatal("python_runtime_connect: PyTuple_SetItem failed"); PyErr_Clear(); pyret = PyObject_Call(callable, args, NULL); Py_DECREF(args); if (pyret == NULL) { kore_python_log_error("python_runtime_connect"); kore_connection_disconnect(c); } Py_DECREF(pyret); } static PyMODINIT_FUNC python_module_init(void) { int i; PyObject *pykore; if ((pykore = PyModule_Create(&pykore_module)) == NULL) fatal("python_module_init: failed to setup pykore module"); python_push_type("pyproc", pykore, &pyproc_type); python_push_type("pylock", pykore, &pylock_type); python_push_type("pytimer", pykore, &pytimer_type); python_push_type("pyqueue", pykore, &pyqueue_type); python_push_type("pysocket", pykore, &pysocket_type); python_push_type("pyconnection", pykore, &pyconnection_type); #if defined(KORE_USE_CURL) python_push_type("pyhttpclient", pykore, &pyhttp_client_type); #endif python_push_type("pyhttp_file", pykore, &pyhttp_file_type); python_push_type("pyhttp_request", pykore, &pyhttp_request_type); for (i = 0; python_integers[i].symbol != NULL; i++) { python_push_integer(pykore, python_integers[i].symbol, python_integers[i].value); } return (pykore); } static void python_append_path(const char *path) { PyObject *mpath, *spath; if ((mpath = PyUnicode_FromString(path)) == NULL) fatal("python_append_path: PyUnicode_FromString failed"); if ((spath = PySys_GetObject("path")) == NULL) fatal("python_append_path: PySys_GetObject failed"); PyList_Append(spath, mpath); Py_DECREF(mpath); } static void python_push_type(const char *name, PyObject *module, PyTypeObject *type) { if (PyType_Ready(type) == -1) fatal("python_push_type: failed to ready %s", name); Py_INCREF(type); if (PyModule_AddObject(module, name, (PyObject *)type) == -1) fatal("python_push_type: failed to push %s", name); } static void python_push_integer(PyObject *module, const char *name, long value) { int ret; if ((ret = PyModule_AddIntConstant(module, name, value)) == -1) fatal("python_push_integer: failed to add %s", name); } #if defined(KORE_USE_PGSQL) static PyObject * python_kore_pgsql_register(PyObject *self, PyObject *args) { const char *db, *conninfo; if (!PyArg_ParseTuple(args, "ss", &db, &conninfo)) return (NULL); (void)kore_pgsql_register(db, conninfo); Py_RETURN_TRUE; } #endif static PyObject * python_kore_log(PyObject *self, PyObject *args) { int prio; const char *message; if (!PyArg_ParseTuple(args, "is", &prio, &message)) return (NULL); kore_log(prio, "%s", message); Py_RETURN_TRUE; } static PyObject * python_kore_time(PyObject *self, PyObject *args) { u_int64_t now; now = kore_time_ms(); return (PyLong_FromUnsignedLongLong(now)); } static PyObject * python_kore_bind(PyObject *self, PyObject *args) { const char *ip, *port; if (!PyArg_ParseTuple(args, "ss", &ip, &port)) return (NULL); if (!kore_server_bind(ip, port, NULL)) { PyErr_SetString(PyExc_RuntimeError, "failed to listen"); return (NULL); } Py_RETURN_TRUE; } static PyObject * python_kore_bind_unix(PyObject *self, PyObject *args) { const char *path; if (!PyArg_ParseTuple(args, "s", &path)) return (NULL); if (!kore_server_bind_unix(path, NULL)) { PyErr_SetString(PyExc_RuntimeError, "failed bind to path"); return (NULL); } Py_RETURN_TRUE; } static PyObject * python_kore_task_create(PyObject *self, PyObject *args) { PyObject *obj; if (!PyArg_ParseTuple(args, "O", &obj)) return (NULL); if (!PyCoro_CheckExact(obj)) fatal("%s: object is not a coroutine", __func__); python_coro_create(obj, NULL); Py_INCREF(obj); Py_RETURN_NONE; } static PyObject * python_kore_socket_wrap(PyObject *self, PyObject *args) { struct pysocket *sock; PyObject *pysock, *pyfd, *pyfam, *pyproto; sock = NULL; pyfd = NULL; pyfam = NULL; pyproto = NULL; if (!PyArg_ParseTuple(args, "O", &pysock)) return (NULL); if ((pyfd = PyObject_CallMethod(pysock, "fileno", NULL)) == NULL) return (NULL); if ((pyfam = PyObject_GetAttrString(pysock, "family")) == NULL) goto out; if ((pyproto = PyObject_GetAttrString(pysock, "proto")) == NULL) goto out; if ((sock = pysocket_alloc()) == NULL) goto out; sock->socket = pysock; Py_INCREF(sock->socket); sock->fd = (int)PyLong_AsLong(pyfd); sock->family = (int)PyLong_AsLong(pyfam); sock->protocol = (int)PyLong_AsLong(pyproto); memset(&sock->addr, 0, sizeof(sock->addr)); switch (sock->family) { case AF_INET: case AF_UNIX: break; default: PyErr_SetString(PyExc_RuntimeError, "unsupported family"); Py_DECREF((PyObject *)sock); sock = NULL; goto out; } out: Py_XDECREF(pyfd); Py_XDECREF(pyfam); Py_XDECREF(pyproto); return ((PyObject *)sock); } static PyObject * python_kore_queue(PyObject *self, PyObject *args) { struct pyqueue *queue; if ((queue = PyObject_New(struct pyqueue, &pyqueue_type)) == NULL) return (NULL); TAILQ_INIT(&queue->objects); TAILQ_INIT(&queue->waiting); return ((PyObject *)queue); } static PyObject * python_kore_tracer(PyObject *self, PyObject *args) { PyObject *obj; if (python_tracer != NULL) { PyErr_SetString(PyExc_RuntimeError, "tracer already set"); return (NULL); } if (!PyArg_ParseTuple(args, "O", &obj)) return (NULL); if (!PyCallable_Check(obj)) { PyErr_SetString(PyExc_RuntimeError, "object not callable"); Py_DECREF(obj); return (NULL); } Py_INCREF(obj); python_tracer = obj; Py_RETURN_TRUE; } static PyObject * python_kore_gather(PyObject *self, PyObject *args, PyObject *kwargs) { struct pygather_op *op; PyObject *obj; struct pygather_coro *coro; Py_ssize_t sz, idx; int concurrency; if (coro_running == NULL) { PyErr_SetString(PyExc_RuntimeError, "kore.gather only available in coroutines"); return (NULL); } sz = PyTuple_Size(args); if (sz > INT_MAX) { PyErr_SetString(PyExc_TypeError, "too many arguments"); return (NULL); } if (kwargs != NULL && (obj = PyDict_GetItemString(kwargs, "concurrency")) != NULL) { if (!PyLong_Check(obj)) { PyErr_SetString(PyExc_TypeError, "concurrency level must be an integer"); return (NULL); } PyErr_Clear(); concurrency = (int)PyLong_AsLong(obj); if (concurrency == -1 && PyErr_Occurred()) return (NULL); if (concurrency == 0) concurrency = sz; } else { concurrency = sz; } op = PyObject_New(struct pygather_op, &pygather_op_type); if (op == NULL) return (NULL); op->running = 0; op->count = (int)sz; op->coro = coro_running; op->concurrency = concurrency; TAILQ_INIT(&op->results); TAILQ_INIT(&op->coroutines); for (idx = 0; idx < sz; idx++) { if ((obj = PyTuple_GetItem(args, idx)) == NULL) { Py_DECREF((PyObject *)op); return (NULL); } if (!PyCoro_CheckExact(obj)) { Py_DECREF((PyObject *)op); PyErr_SetString(PyExc_TypeError, "not a coroutine"); return (NULL); } Py_INCREF(obj); coro = kore_pool_get(&gather_coro_pool); coro->coro = python_coro_create(obj, NULL); coro->coro->gatherop = op; TAILQ_INSERT_TAIL(&op->coroutines, coro, list); if (idx > concurrency - 1) python_coro_suspend(coro->coro); else op->running++; } return ((PyObject *)op); } static PyObject * python_kore_lock(PyObject *self, PyObject *args) { struct pylock *lock; if ((lock = PyObject_New(struct pylock, &pylock_type)) == NULL) return (NULL); lock->owner = NULL; TAILQ_INIT(&lock->ops); return ((PyObject *)lock); } static PyObject * python_kore_fatal(PyObject *self, PyObject *args) { const char *reason; if (!PyArg_ParseTuple(args, "s", &reason)) reason = "python_kore_fatal: PyArg_ParseTuple failed"; fatal("%s", reason); /* not reached */ Py_RETURN_TRUE; } static PyObject * python_kore_fatalx(PyObject *self, PyObject *args) { const char *reason; if (!PyArg_ParseTuple(args, "s", &reason)) reason = "python_kore_fatalx: PyArg_ParseTuple failed"; fatalx("%s", reason); /* not reached */ Py_RETURN_TRUE; } static PyObject * python_kore_suspend(PyObject *self, PyObject *args) { struct pysuspend_op *op; int delay; if (!PyArg_ParseTuple(args, "i", &delay)) return (NULL); op = PyObject_New(struct pysuspend_op, &pysuspend_op_type); if (op == NULL) return (NULL); op->timer = NULL; op->delay = delay; op->coro = coro_running; op->state = PYSUSPEND_OP_INIT; return ((PyObject *)op); } static PyObject * python_kore_shutdown(PyObject *self, PyObject *args) { kore_shutdown(); Py_RETURN_TRUE; } static PyObject * python_kore_timer(PyObject *self, PyObject *args) { u_int64_t ms; PyObject *obj; int flags; struct pytimer *timer; if (!PyArg_ParseTuple(args, "OKi", &obj, &ms, &flags)) return (NULL); if (flags & ~(KORE_TIMER_FLAGS)) { PyErr_SetString(PyExc_RuntimeError, "invalid flags"); return (NULL); } if ((timer = PyObject_New(struct pytimer, &pytimer_type)) == NULL) return (NULL); timer->flags = flags; timer->callable = obj; timer->run = kore_timer_add(pytimer_run, ms, timer, flags); Py_INCREF((PyObject *)timer); Py_INCREF(timer->callable); return ((PyObject *)timer); } static PyObject * python_kore_proc(PyObject *self, PyObject *args) { const char *cmd; struct pyproc *proc; char *copy, *argv[32]; int timeo, in_pipe[2], out_pipe[2]; timeo = -1; if (coro_running == NULL) { PyErr_SetString(PyExc_RuntimeError, "kore.proc only available in coroutines"); return (NULL); } if (!PyArg_ParseTuple(args, "s|i", &cmd, &timeo)) return (NULL); if (pipe(in_pipe) == -1) { PyErr_SetString(PyExc_RuntimeError, errno_s); return (NULL); } if (pipe(out_pipe) == -1) { close(in_pipe[0]); close(in_pipe[1]); PyErr_SetString(PyExc_RuntimeError, errno_s); return (NULL); } if ((proc = PyObject_New(struct pyproc, &pyproc_type)) == NULL) { close(in_pipe[0]); close(in_pipe[1]); close(out_pipe[0]); close(out_pipe[1]); return (NULL); } proc->pid = -1; proc->reaped = 0; proc->status = 0; proc->timer = NULL; proc->coro = coro_running; proc->in = pysocket_alloc(); proc->out = pysocket_alloc(); if (proc->in == NULL || proc->out == NULL) { Py_DECREF((PyObject *)proc); return (NULL); } TAILQ_INSERT_TAIL(&procs, proc, list); proc->pid = fork(); if (proc->pid == -1) { if (errno == ENOSYS) { Py_DECREF((PyObject *)proc); PyErr_SetString(PyExc_RuntimeError, errno_s); return (NULL); } fatal("python_kore_proc: fork(): %s", errno_s); } if (proc->pid == 0) { close(in_pipe[1]); close(out_pipe[0]); if (dup2(out_pipe[1], STDOUT_FILENO) == -1 || dup2(out_pipe[1], STDERR_FILENO) == -1 || dup2(in_pipe[0], STDIN_FILENO) == -1) fatal("dup2: %s", errno_s); copy = kore_strdup(cmd); python_split_arguments(copy, argv, 32); (void)execve(argv[0], argv, NULL); kore_log(LOG_ERR, "kore.proc failed to execute %s (%s)", argv[0], errno_s); exit(1); } close(in_pipe[0]); close(out_pipe[1]); if (!kore_connection_nonblock(in_pipe[1], 0) || !kore_connection_nonblock(out_pipe[0], 0)) fatal("failed to mark kore.proc pipes are non-blocking"); proc->in->fd = in_pipe[1]; proc->out->fd = out_pipe[0]; if (timeo != -1) { proc->timer = kore_timer_add(pyproc_timeout, timeo, proc, KORE_TIMER_ONESHOT); } return ((PyObject *)proc); } static PyObject * python_import(const char *path) { struct stat st; PyObject *module; char *dir, *file, *copy, *p; if (stat(path, &st) == -1) fatal("python_import: stat(%s): %s", path, errno_s); if (!S_ISDIR(st.st_mode) && !S_ISREG(st.st_mode)) fatal("python_import: '%s' is not a file or directory", path); copy = kore_strdup(path); if ((file = basename(copy)) == NULL) fatal("basename: %s: %s", path, errno_s); if ((dir = dirname(copy)) == NULL) fatal("dirname: %s: %s", path, errno_s); if ((p = strrchr(file, '.')) != NULL) *p = '\0'; python_append_path(dir); if (S_ISDIR(st.st_mode)) python_append_path(path); module = PyImport_ImportModule(file); if (module == NULL) PyErr_Print(); kore_free(copy); return (module); } static PyObject * python_callable(PyObject *module, const char *symbol) { char *base, *method; PyObject *res, *obj, *meth; res = NULL; obj = NULL; base = kore_strdup(symbol); if ((method = strchr(base, '.')) != NULL) *(method)++ = '\0'; if ((obj = PyObject_GetAttrString(module, base)) == NULL) goto out; if (method != NULL) { if ((meth = PyObject_GetAttrString(obj, method)) == NULL) goto out; Py_DECREF(obj); obj = meth; } if (!PyCallable_Check(obj)) goto out; res = obj; obj = NULL; out: if (obj != NULL) Py_DECREF(obj); kore_free(base); return (res); } static PyObject * pyconnection_alloc(struct connection *c) { struct pyconnection *pyc; pyc = PyObject_New(struct pyconnection, &pyconnection_type); if (pyc == NULL) return (NULL); pyc->c = c; return ((PyObject *)pyc); } static PyObject * pyconnection_disconnect(struct pyconnection *pyc, PyObject *args) { kore_connection_disconnect(pyc->c); Py_RETURN_TRUE; } static PyObject * pyconnection_get_fd(struct pyconnection *pyc, void *closure) { PyObject *fd; if ((fd = PyLong_FromLong(pyc->c->fd)) == NULL) return (PyErr_NoMemory()); return (fd); } static PyObject * pyconnection_get_addr(struct pyconnection *pyc, void *closure) { void *ptr; PyObject *result; char addr[INET6_ADDRSTRLEN]; switch (pyc->c->family) { case AF_INET: ptr = &pyc->c->addr.ipv4.sin_addr; break; case AF_INET6: ptr = &pyc->c->addr.ipv6.sin6_addr; break; default: PyErr_SetString(PyExc_RuntimeError, "invalid family"); return (NULL); } if (inet_ntop(pyc->c->family, ptr, addr, sizeof(addr)) == NULL) { PyErr_SetString(PyExc_RuntimeError, "inet_ntop failed"); return (NULL); } if ((result = PyUnicode_FromString(addr)) == NULL) return (PyErr_NoMemory()); return (result); } #if !defined(KORE_NO_TLS) static PyObject * pyconnection_get_peer_x509(struct pyconnection *pyc, void *closure) { int len; PyObject *bytes; u_int8_t *der, *pp; if (pyc->c->cert == NULL) { Py_RETURN_NONE; } if ((len = i2d_X509(pyc->c->cert, NULL)) <= 0) { PyErr_SetString(PyExc_RuntimeError, "i2d_X509 failed"); return (NULL); } der = kore_calloc(1, len); pp = der; if (i2d_X509(pyc->c->cert, &pp) <= 0) { kore_free(der); PyErr_SetString(PyExc_RuntimeError, "i2d_X509 failed"); return (NULL); } bytes = PyBytes_FromStringAndSize((char *)der, len); kore_free(der); return (bytes); } #endif static void pytimer_run(void *arg, u_int64_t now) { PyObject *ret; struct pytimer *timer = arg; PyErr_Clear(); ret = PyObject_CallObject(timer->callable, NULL); Py_XDECREF(ret); kore_python_log_error("pytimer_run"); if (timer->flags & KORE_TIMER_ONESHOT) { timer->run = NULL; Py_DECREF((PyObject *)timer); } } static void pytimer_dealloc(struct pytimer *timer) { if (timer->run != NULL) { kore_timer_remove(timer->run); timer->run = NULL; } if (timer->callable != NULL) { Py_DECREF(timer->callable); timer->callable = NULL; } PyObject_Del((PyObject *)timer); } static PyObject * pytimer_close(struct pytimer *timer, PyObject *args) { if (timer->run != NULL) { kore_timer_remove(timer->run); timer->run = NULL; } if (timer->callable != NULL) { Py_DECREF(timer->callable); timer->callable = NULL; } Py_INCREF((PyObject *)timer); Py_RETURN_TRUE; } static void pysuspend_op_dealloc(struct pysuspend_op *op) { if (op->timer != NULL) { kore_timer_remove(op->timer); op->timer = NULL; } PyObject_Del((PyObject *)op); } static PyObject * pysuspend_op_await(PyObject *sop) { Py_INCREF(sop); return (sop); } static PyObject * pysuspend_op_iternext(struct pysuspend_op *op) { switch (op->state) { case PYSUSPEND_OP_INIT: op->timer = kore_timer_add(pysuspend_wakeup, op->delay, op, KORE_TIMER_ONESHOT); op->state = PYSUSPEND_OP_WAIT; break; case PYSUSPEND_OP_WAIT: break; case PYSUSPEND_OP_CONTINUE: PyErr_SetNone(PyExc_StopIteration); return (NULL); default: fatal("unknown state %d for pysuspend_op", op->state); } Py_RETURN_NONE; } static void pysuspend_wakeup(void *arg, u_int64_t now) { struct pysuspend_op *op = arg; op->timer = NULL; op->state = PYSUSPEND_OP_CONTINUE; if (op->coro->request != NULL) http_request_wakeup(op->coro->request); else python_coro_wakeup(op->coro); } static struct pysocket * pysocket_alloc(void) { struct pysocket *sock; if ((sock = PyObject_New(struct pysocket, &pysocket_type)) == NULL) return (NULL); sock->fd = -1; sock->family = -1; sock->protocol = -1; sock->scheduled = 0; sock->socket = NULL; sock->recvop = NULL; sock->sendop = NULL; sock->event.s = sock; sock->event.evt.flags = 0; sock->event.evt.type = KORE_TYPE_PYSOCKET; sock->event.evt.handle = pysocket_evt_handle; return (sock); } static void pysocket_dealloc(struct pysocket *sock) { if (sock->scheduled && sock->fd != -1) { kore_platform_disable_read(sock->fd); #if !defined(__linux__) kore_platform_disable_write(sock->fd); #endif } if (sock->socket != NULL) { Py_DECREF(sock->socket); } else if (sock->fd != -1) { (void)close(sock->fd); } PyObject_Del((PyObject *)sock); } static PyObject * pysocket_send(struct pysocket *sock, PyObject *args) { Py_buffer buf; if (!PyArg_ParseTuple(args, "y*", &buf)) return (NULL); return (pysocket_op_create(sock, PYSOCKET_TYPE_SEND, buf.buf, buf.len)); } static PyObject * pysocket_sendto(struct pysocket *sock, PyObject *args) { Py_buffer buf; struct pysocket_op *op; PyObject *ret; int port; const char *ip, *sockaddr; switch (sock->family) { case AF_INET: if (!PyArg_ParseTuple(args, "siy*", &ip, &port, &buf)) return (NULL); if (port <= 0 || port >= USHRT_MAX) { PyErr_SetString(PyExc_RuntimeError, "invalid port"); return (NULL); } break; case AF_UNIX: if (!PyArg_ParseTuple(args, "sy*", &sockaddr, &buf)) return (NULL); break; default: PyErr_SetString(PyExc_RuntimeError, "unsupported family"); return (NULL); } ret = pysocket_op_create(sock, PYSOCKET_TYPE_SENDTO, buf.buf, buf.len); op = (struct pysocket_op *)ret; switch (sock->family) { case AF_INET: op->sendaddr.ipv4.sin_family = AF_INET; op->sendaddr.ipv4.sin_port = htons(port); op->sendaddr.ipv4.sin_addr.s_addr = inet_addr(ip); break; case AF_UNIX: op->sendaddr.sun.sun_family = AF_UNIX; if (kore_strlcpy(op->sendaddr.sun.sun_path, sockaddr, sizeof(op->sendaddr.sun.sun_path)) >= sizeof(op->sendaddr.sun.sun_path)) { Py_DECREF(ret); PyErr_SetString(PyExc_RuntimeError, "unix socket path too long"); return (NULL); } break; default: Py_DECREF(ret); PyErr_SetString(PyExc_RuntimeError, "unsupported family"); return (NULL); } return (ret); } static PyObject * pysocket_recv(struct pysocket *sock, PyObject *args) { Py_ssize_t len; struct pysocket_op *op; PyObject *obj; int timeo; timeo = -1; if (!PyArg_ParseTuple(args, "n|i", &len, &timeo)) return (NULL); obj = pysocket_op_create(sock, PYSOCKET_TYPE_RECV, NULL, len); if (obj == NULL) return (NULL); op = (struct pysocket_op *)obj; if (timeo != -1) { op->timer = kore_timer_add(pysocket_op_timeout, timeo, op, KORE_TIMER_ONESHOT); } return (obj); } static PyObject * pysocket_recvfrom(struct pysocket *sock, PyObject *args) { Py_ssize_t len; if (!PyArg_ParseTuple(args, "n", &len)) return (NULL); return (pysocket_op_create(sock, PYSOCKET_TYPE_RECVFROM, NULL, len)); } static PyObject * pysocket_accept(struct pysocket *sock, PyObject *args) { return (pysocket_op_create(sock, PYSOCKET_TYPE_ACCEPT, NULL, 0)); } static PyObject * pysocket_connect(struct pysocket *sock, PyObject *args) { const char *host; int port, len; port = 0; if (!PyArg_ParseTuple(args, "s|i", &host, &port)) return (NULL); if (port < 0 || port > USHRT_MAX) { PyErr_SetString(PyExc_RuntimeError, "invalid port number"); return (NULL); } switch (sock->family) { case AF_INET: sock->addr.ipv4.sin_family = AF_INET; sock->addr.ipv4.sin_port = htons(port); if (inet_pton(sock->family, host, &sock->addr.ipv4.sin_addr) == -1) { PyErr_SetString(PyExc_RuntimeError, "invalid host"); return (NULL); } sock->addr_len = sizeof(sock->addr.ipv4); break; case AF_UNIX: sock->addr.sun.sun_family = AF_UNIX; len = snprintf(sock->addr.sun.sun_path, sizeof(sock->addr.sun.sun_path), "%s", host); if (len == -1 || (size_t)len >= sizeof(sock->addr.sun.sun_path)) { PyErr_SetString(PyExc_RuntimeError, "path too long"); return (NULL); } #if defined(__linux__) /* Assume abstract socket if prefixed with '@'. */ if (sock->addr.sun.sun_path[0] == '@') sock->addr.sun.sun_path[0] = '\0'; #endif sock->addr_len = sizeof(sock->addr.sun.sun_family) + len; break; default: fatal("unsupported socket family %d", sock->family); } return (pysocket_op_create(sock, PYSOCKET_TYPE_CONNECT, NULL, 0)); } static PyObject * pysocket_close(struct pysocket *sock, PyObject *args) { if (sock->scheduled) { sock->scheduled = 0; kore_platform_disable_read(sock->fd); #if !defined(__linux__) kore_platform_disable_write(sock->fd); #endif } if (sock->socket != NULL) { Py_DECREF(sock->socket); sock->socket = NULL; } else if (sock->fd != -1) { (void)close(sock->fd); } sock->fd = -1; Py_RETURN_TRUE; } static void pysocket_op_dealloc(struct pysocket_op *op) { if (op->type == PYSOCKET_TYPE_RECV || op->type == PYSOCKET_TYPE_RECVFROM || op->type == PYSOCKET_TYPE_SEND) kore_buf_cleanup(&op->buffer); switch (op->type) { case PYSOCKET_TYPE_RECV: case PYSOCKET_TYPE_ACCEPT: case PYSOCKET_TYPE_RECVFROM: if (op->socket->recvop != op) fatal("recvop mismatch"); op->socket->recvop = NULL; break; case PYSOCKET_TYPE_SEND: case PYSOCKET_TYPE_SENDTO: case PYSOCKET_TYPE_CONNECT: if (op->socket->sendop != op) fatal("sendop mismatch"); op->socket->sendop = NULL; break; } if (op->timer != NULL) { kore_timer_remove(op->timer); op->timer = NULL; } op->coro->sockop = NULL; Py_DECREF(op->socket); PyObject_Del((PyObject *)op); } static PyObject * pysocket_op_create(struct pysocket *sock, int type, const void *ptr, size_t len) { struct pysocket_op *op; if (coro_running->sockop != NULL) fatal("pysocket_op_create: coro has active socketop"); switch (type) { case PYSOCKET_TYPE_RECV: case PYSOCKET_TYPE_ACCEPT: case PYSOCKET_TYPE_RECVFROM: if (sock->recvop != NULL) { PyErr_SetString(PyExc_RuntimeError, "only one recv operation can be done per socket"); return (NULL); } break; case PYSOCKET_TYPE_SEND: case PYSOCKET_TYPE_SENDTO: case PYSOCKET_TYPE_CONNECT: if (sock->sendop != NULL) { PyErr_SetString(PyExc_RuntimeError, "only one send operation can be done per socket"); return (NULL); } break; default: fatal("unknown pysocket_op type %u", type); } op = PyObject_New(struct pysocket_op, &pysocket_op_type); if (op == NULL) return (NULL); op->eof = 0; op->self = op; op->type = type; op->timer = NULL; op->socket = sock; op->coro = coro_running; coro_running->sockop = op; Py_INCREF(op->socket); switch (type) { case PYSOCKET_TYPE_RECV: case PYSOCKET_TYPE_RECVFROM: sock->recvop = op; kore_buf_init(&op->buffer, len); break; case PYSOCKET_TYPE_SEND: case PYSOCKET_TYPE_SENDTO: sock->sendop = op; kore_buf_init(&op->buffer, len); kore_buf_append(&op->buffer, ptr, len); kore_buf_reset(&op->buffer); break; case PYSOCKET_TYPE_ACCEPT: sock->recvop = op; break; case PYSOCKET_TYPE_CONNECT: sock->sendop = op; break; default: fatal("unknown pysocket_op type %u", type); } if (sock->scheduled == 0) { sock->scheduled = 1; kore_platform_event_all(sock->fd, &sock->event); } return ((PyObject *)op); } static PyObject * pysocket_op_await(PyObject *obj) { Py_INCREF(obj); return (obj); } static PyObject * pysocket_op_iternext(struct pysocket_op *op) { PyObject *ret; if (op->socket->fd == -1) { PyErr_SetNone(PyExc_StopIteration); return (NULL); } if (op->eof) { if (op->coro->exception != NULL) { PyErr_SetString(op->coro->exception, op->coro->exception_msg); op->coro->exception = NULL; return (NULL); } if (op->type != PYSOCKET_TYPE_RECV) { PyErr_SetString(PyExc_RuntimeError, "socket EOF"); return (NULL); } /* Drain the recv socket. */ op->socket->event.evt.flags |= KORE_EVENT_READ; return (pysocket_async_recv(op)); } switch (op->type) { case PYSOCKET_TYPE_CONNECT: ret = pysocket_async_connect(op); break; case PYSOCKET_TYPE_ACCEPT: ret = pysocket_async_accept(op); break; case PYSOCKET_TYPE_RECV: case PYSOCKET_TYPE_RECVFROM: ret = pysocket_async_recv(op); break; case PYSOCKET_TYPE_SEND: case PYSOCKET_TYPE_SENDTO: ret = pysocket_async_send(op); break; default: PyErr_SetString(PyExc_RuntimeError, "invalid op type"); return (NULL); } return (ret); } static void pysocket_op_timeout(void *arg, u_int64_t now) { struct pysocket_op *op = arg; op->eof = 1; op->timer = NULL; op->coro->exception = PyExc_TimeoutError; op->coro->exception_msg = "timeout before operation completed"; if (op->coro->request != NULL) http_request_wakeup(op->coro->request); else python_coro_wakeup(op->coro); } static PyObject * pysocket_async_connect(struct pysocket_op *op) { if (connect(op->socket->fd, (struct sockaddr *)&op->socket->addr, op->socket->addr_len) == -1) { if (errno != EALREADY && errno != EINPROGRESS && errno != EISCONN && errno != EAGAIN) { PyErr_SetString(PyExc_RuntimeError, errno_s); return (NULL); } if (errno != EISCONN) { Py_RETURN_NONE; } } PyErr_SetNone(PyExc_StopIteration); return (NULL); } static PyObject * pysocket_async_accept(struct pysocket_op *op) { int fd; struct pysocket *sock; if (!(op->socket->event.evt.flags & KORE_EVENT_READ)) { Py_RETURN_NONE; } if ((sock = pysocket_alloc()) == NULL) return (NULL); sock->addr_len = sizeof(sock->addr); if ((fd = accept(op->socket->fd, (struct sockaddr *)&sock->addr, &sock->addr_len)) == -1) { Py_DECREF((PyObject *)sock); if (errno == EAGAIN || errno == EWOULDBLOCK) { op->socket->event.evt.flags &= ~KORE_EVENT_READ; Py_RETURN_NONE; } PyErr_SetString(PyExc_RuntimeError, errno_s); return (NULL); } if (!kore_connection_nonblock(fd, 0)) { Py_DECREF((PyObject *)sock); PyErr_SetString(PyExc_RuntimeError, errno_s); return (NULL); } sock->fd = fd; sock->socket = NULL; sock->family = op->socket->family; sock->protocol = op->socket->protocol; PyErr_SetObject(PyExc_StopIteration, (PyObject *)sock); Py_DECREF((PyObject *)sock); return (NULL); } static PyObject * pysocket_async_recv(struct pysocket_op *op) { ssize_t ret; size_t len; u_int16_t port; socklen_t socklen; struct sockaddr *sendaddr; const char *ptr, *ip; PyObject *bytes, *result, *tuple; if (!(op->socket->event.evt.flags & KORE_EVENT_READ)) { Py_RETURN_NONE; } for (;;) { if (op->type == PYSOCKET_TYPE_RECV) { ret = read(op->socket->fd, op->buffer.data, op->buffer.length); } else { sendaddr = (struct sockaddr *)&op->sendaddr; switch (op->socket->family) { case AF_INET: socklen = sizeof(op->sendaddr.ipv4); break; case AF_UNIX: socklen = sizeof(op->sendaddr.sun); break; default: fatal("non AF_INET/AF_UNIX in %s", __func__); } memset(sendaddr, 0, socklen); ret = recvfrom(op->socket->fd, op->buffer.data, op->buffer.length, 0, sendaddr, &socklen); } if (ret == -1) { if (errno == EINTR) continue; if (errno == EAGAIN || errno == EWOULDBLOCK) { op->socket->event.evt.flags &= ~KORE_EVENT_READ; Py_RETURN_NONE; } PyErr_SetString(PyExc_RuntimeError, errno_s); return (NULL); } break; } op->coro->exception = NULL; op->coro->exception_msg = NULL; if (op->timer != NULL) { kore_timer_remove(op->timer); op->timer = NULL; } if (op->type == PYSOCKET_TYPE_RECV && ret == 0) { PyErr_SetNone(PyExc_StopIteration); return (NULL); } ptr = (const char *)op->buffer.data; if ((bytes = PyBytes_FromStringAndSize(ptr, ret)) == NULL) return (NULL); if (op->type == PYSOCKET_TYPE_RECV) { PyErr_SetObject(PyExc_StopIteration, bytes); Py_DECREF(bytes); return (NULL); } switch(op->socket->family) { case AF_INET: port = ntohs(op->sendaddr.ipv4.sin_port); ip = inet_ntoa(op->sendaddr.ipv4.sin_addr); if ((tuple = Py_BuildValue("(sHN)", ip, port, bytes)) == NULL) return (NULL); break; case AF_UNIX: len = strlen(op->sendaddr.sun.sun_path); #if defined(__linux__) if (len == 0 && socklen > 0) { len = socklen - sizeof(sa_family_t); op->sendaddr.sun.sun_path[0] = '@'; op->sendaddr.sun.sun_path[len] = '\0'; } #endif if (len == 0) { if ((tuple = Py_BuildValue("(ON)", Py_None, bytes)) == NULL) return (NULL); break; } if ((tuple = Py_BuildValue("(sN)", op->sendaddr.sun.sun_path, bytes)) == NULL) return (NULL); break; default: PyErr_SetString(PyExc_RuntimeError, "Unsupported family"); return (NULL); } result = PyObject_CallFunctionObjArgs(PyExc_StopIteration, tuple, NULL); if (result == NULL) { Py_DECREF(tuple); return (NULL); } Py_DECREF(tuple); PyErr_SetObject(PyExc_StopIteration, result); Py_DECREF(result); return (NULL); } static PyObject * pysocket_async_send(struct pysocket_op *op) { ssize_t ret; socklen_t socklen; const struct sockaddr *sendaddr; if (!(op->socket->event.evt.flags & KORE_EVENT_WRITE)) { Py_RETURN_NONE; } for (;;) { if (op->type == PYSOCKET_TYPE_SEND) { ret = write(op->socket->fd, op->buffer.data + op->buffer.offset, op->buffer.length - op->buffer.offset); } else { sendaddr = (const struct sockaddr *)&op->sendaddr; switch (op->socket->family) { case AF_INET: socklen = sizeof(op->sendaddr.ipv4); break; case AF_UNIX: socklen = sizeof(op->sendaddr.sun); #if defined(__linux__) if (op->sendaddr.sun.sun_path[0] == '@') { socklen = sizeof(sa_family_t) + strlen(op->sendaddr.sun.sun_path); op->sendaddr.sun.sun_path[0] = '\0'; } #endif break; default: fatal("non AF_INET/AF_UNIX in %s", __func__); } ret = sendto(op->socket->fd, op->buffer.data + op->buffer.offset, op->buffer.length - op->buffer.offset, 0, sendaddr, socklen); } if (ret == -1) { if (errno == EINTR) continue; if (errno == EAGAIN || errno == EWOULDBLOCK) { op->socket->event.evt.flags &= ~KORE_EVENT_WRITE; Py_RETURN_NONE; } PyErr_SetString(PyExc_RuntimeError, errno_s); return (NULL); } break; } op->buffer.offset += (size_t)ret; if (op->buffer.offset == op->buffer.length) { PyErr_SetNone(PyExc_StopIteration); return (NULL); } Py_RETURN_NONE; } static void pysocket_evt_handle(void *arg, int eof) { struct pysocket_event *event = arg; struct pysocket *socket = event->s; if ((eof || (event->evt.flags & KORE_EVENT_READ)) && socket->recvop != NULL) { if (socket->recvop->coro->request != NULL) http_request_wakeup(socket->recvop->coro->request); else python_coro_wakeup(socket->recvop->coro); socket->recvop->eof = eof; } if ((eof || (event->evt.flags & KORE_EVENT_WRITE)) && socket->sendop != NULL) { if (socket->sendop->coro->request != NULL) http_request_wakeup(socket->sendop->coro->request); else python_coro_wakeup(socket->sendop->coro); socket->sendop->eof = eof; } } static void pyqueue_dealloc(struct pyqueue *queue) { struct pyqueue_object *object; struct pyqueue_waiting *waiting; while ((object = TAILQ_FIRST(&queue->objects)) != NULL) { TAILQ_REMOVE(&queue->objects, object, list); Py_DECREF(object->obj); kore_pool_put(&queue_object_pool, object); } while ((waiting = TAILQ_FIRST(&queue->waiting)) != NULL) { TAILQ_REMOVE(&queue->waiting, waiting, list); if (waiting->op != NULL) waiting->op->waiting = NULL; kore_pool_put(&queue_wait_pool, waiting); } PyObject_Del((PyObject *)queue); } static PyObject * pyqueue_pop(struct pyqueue *queue, PyObject *args) { struct pyqueue_op *op; if ((op = PyObject_New(struct pyqueue_op, &pyqueue_op_type)) == NULL) return (NULL); op->queue = queue; op->waiting = kore_pool_get(&queue_wait_pool); op->waiting->op = op; op->waiting->coro = coro_running; TAILQ_INSERT_TAIL(&queue->waiting, op->waiting, list); Py_INCREF((PyObject *)queue); return ((PyObject *)op); } static PyObject * pyqueue_popnow(struct pyqueue *queue, PyObject *args) { PyObject *obj; struct pyqueue_object *object; if ((object = TAILQ_FIRST(&queue->objects)) == NULL) { Py_RETURN_NONE; } TAILQ_REMOVE(&queue->objects, object, list); obj = object->obj; kore_pool_put(&queue_object_pool, object); return (obj); } static PyObject * pyqueue_push(struct pyqueue *queue, PyObject *args) { PyObject *obj; struct pyqueue_object *object; struct pyqueue_waiting *waiting; if (!PyArg_ParseTuple(args, "O", &obj)) return (NULL); Py_INCREF(obj); object = kore_pool_get(&queue_object_pool); object->obj = obj; TAILQ_INSERT_TAIL(&queue->objects, object, list); /* Wakeup first in line if any. */ if ((waiting = TAILQ_FIRST(&queue->waiting)) != NULL) { TAILQ_REMOVE(&queue->waiting, waiting, list); /* wakeup HTTP request if one is tied. */ if (waiting->coro->request != NULL) http_request_wakeup(waiting->coro->request); else python_coro_wakeup(waiting->coro); waiting->op->waiting = NULL; kore_pool_put(&queue_wait_pool, waiting); } Py_RETURN_TRUE; } static void pyqueue_op_dealloc(struct pyqueue_op *op) { if (op->waiting != NULL) { TAILQ_REMOVE(&op->queue->waiting, op->waiting, list); kore_pool_put(&queue_wait_pool, op->waiting); op->waiting = NULL; } Py_DECREF((PyObject *)op->queue); PyObject_Del((PyObject *)op); } static PyObject * pyqueue_op_await(PyObject *obj) { Py_INCREF(obj); return (obj); } static PyObject * pyqueue_op_iternext(struct pyqueue_op *op) { PyObject *obj; struct pyqueue_object *object; struct pyqueue_waiting *waiting; if ((object = TAILQ_FIRST(&op->queue->objects)) == NULL) { Py_RETURN_NONE; } TAILQ_REMOVE(&op->queue->objects, object, list); obj = object->obj; kore_pool_put(&queue_object_pool, object); TAILQ_FOREACH(waiting, &op->queue->waiting, list) { if (waiting->coro->id == coro_running->id) { TAILQ_REMOVE(&op->queue->waiting, waiting, list); waiting->op->waiting = NULL; kore_pool_put(&queue_wait_pool, waiting); break; } } PyErr_SetObject(PyExc_StopIteration, obj); Py_DECREF(obj); return (NULL); } static void pylock_dealloc(struct pylock *lock) { struct pylock_op *op; while ((op = TAILQ_FIRST(&lock->ops)) != NULL) { TAILQ_REMOVE(&lock->ops, op, list); op->active = 0; Py_DECREF((PyObject *)op); } PyObject_Del((PyObject *)lock); } static PyObject * pylock_aenter(struct pylock *lock, PyObject *args) { struct pylock_op *op; if (lock->owner != NULL && lock->owner->id == coro_running->id) { PyErr_SetString(PyExc_RuntimeError, "recursive lock detected"); return (NULL); } if ((op = PyObject_New(struct pylock_op, &pylock_op_type)) == NULL) return (NULL); op->active = 1; op->lock = lock; op->locking = 1; op->coro = coro_running; Py_INCREF((PyObject *)op); Py_INCREF((PyObject *)lock); TAILQ_INSERT_TAIL(&lock->ops, op, list); return ((PyObject *)op); } static PyObject * pylock_aexit(struct pylock *lock, PyObject *args) { struct pylock_op *op; if (lock->owner == NULL || lock->owner->id != coro_running->id) { PyErr_SetString(PyExc_RuntimeError, "invalid lock owner"); return (NULL); } if ((op = PyObject_New(struct pylock_op, &pylock_op_type)) == NULL) return (NULL); op->active = 1; op->lock = lock; op->locking = 0; op->coro = coro_running; Py_INCREF((PyObject *)op); Py_INCREF((PyObject *)lock); TAILQ_INSERT_TAIL(&lock->ops, op, list); return ((PyObject *)op); } static void pylock_do_release(struct pylock *lock) { struct pylock_op *op; lock->owner = NULL; TAILQ_FOREACH(op, &lock->ops, list) { if (op->locking == 0) continue; op->active = 0; TAILQ_REMOVE(&op->lock->ops, op, list); if (op->coro->request != NULL) http_request_wakeup(op->coro->request); else python_coro_wakeup(op->coro); Py_DECREF((PyObject *)op); break; } } static void pylock_op_dealloc(struct pylock_op *op) { if (op->active) { TAILQ_REMOVE(&op->lock->ops, op, list); op->active = 0; } Py_DECREF((PyObject *)op->lock); PyObject_Del((PyObject *)op); } static PyObject * pylock_op_await(PyObject *obj) { Py_INCREF(obj); return (obj); } static PyObject * pylock_op_iternext(struct pylock_op *op) { if (op->locking == 0) { if (op->lock->owner == NULL) { PyErr_SetString(PyExc_RuntimeError, "no lock owner set"); return (NULL); } if (op->lock->owner->id != coro_running->id) { PyErr_SetString(PyExc_RuntimeError, "lock not owned by caller"); return (NULL); } pylock_do_release(op->lock); } else { if (op->lock->owner != NULL) { /* * We could be beat by another coroutine that grabbed * the lock even if we were the one woken up for it. */ if (op->active == 0) { op->active = 1; TAILQ_INSERT_HEAD(&op->lock->ops, op, list); Py_INCREF((PyObject *)op); } Py_RETURN_NONE; } op->lock->owner = coro_running; } if (op->active) { op->active = 0; TAILQ_REMOVE(&op->lock->ops, op, list); Py_DECREF((PyObject *)op); } PyErr_SetNone(PyExc_StopIteration); return (NULL); } static void pyproc_timeout(void *arg, u_int64_t now) { struct pyproc *proc = arg; proc->timer = NULL; if (proc->coro->sockop != NULL) proc->coro->sockop->eof = 1; proc->coro->exception = PyExc_TimeoutError; proc->coro->exception_msg = "timeout before process exited"; if (proc->coro->request != NULL) http_request_wakeup(proc->coro->request); else python_coro_wakeup(proc->coro); } static void pyproc_dealloc(struct pyproc *proc) { int status; TAILQ_REMOVE(&procs, proc, list); if (proc->timer != NULL) { kore_timer_remove(proc->timer); proc->timer = NULL; } if (proc->pid != -1) { if (kill(proc->pid, SIGKILL) == -1) { kore_log(LOG_NOTICE, "kore.proc failed to send SIGKILL %d (%s)", proc->pid, errno_s); } for (;;) { if (waitpid(proc->pid, &status, 0) == -1) { if (errno == EINTR) continue; kore_log(LOG_NOTICE, "kore.proc failed to wait for %d (%s)", proc->pid, errno_s); } break; } } if (proc->in != NULL) { Py_DECREF((PyObject *)proc->in); proc->in = NULL; } if (proc->out != NULL) { Py_DECREF((PyObject *)proc->out); proc->out = NULL; } PyObject_Del((PyObject *)proc); } static PyObject * pyproc_kill(struct pyproc *proc, PyObject *args) { if (proc->pid != -1 && kill(proc->pid, SIGKILL) == -1) kore_log(LOG_NOTICE, "kill(%d): %s", proc->pid, errno_s); Py_RETURN_TRUE; } static PyObject * pyproc_reap(struct pyproc *proc, PyObject *args) { struct pyproc_op *op; if (proc->timer != NULL) { kore_timer_remove(proc->timer); proc->timer = NULL; } if ((op = PyObject_New(struct pyproc_op, &pyproc_op_type)) == NULL) return (NULL); op->proc = proc; Py_INCREF((PyObject *)proc); return ((PyObject *)op); } static PyObject * pyproc_recv(struct pyproc *proc, PyObject *args) { Py_ssize_t len; struct pysocket_op *op; PyObject *obj; int timeo; timeo = -1; if (proc->out == NULL) { PyErr_SetString(PyExc_RuntimeError, "stdout closed"); return (NULL); } if (!PyArg_ParseTuple(args, "n|i", &len, &timeo)) return (NULL); obj = pysocket_op_create(proc->out, PYSOCKET_TYPE_RECV, NULL, len); if (obj == NULL) return (NULL); op = (struct pysocket_op *)obj; if (timeo != -1) { op->timer = kore_timer_add(pysocket_op_timeout, timeo, op, KORE_TIMER_ONESHOT); } return (obj); } static PyObject * pyproc_send(struct pyproc *proc, PyObject *args) { Py_buffer buf; PyObject *ret; if (proc->in == NULL) { PyErr_SetString(PyExc_RuntimeError, "stdin closed"); return (NULL); } if (!PyArg_ParseTuple(args, "y*", &buf)) return (NULL); ret = pysocket_op_create(proc->in, PYSOCKET_TYPE_SEND, buf.buf, buf.len); return (ret); } static PyObject * pyproc_close_stdin(struct pyproc *proc, PyObject *args) { if (proc->in != NULL) { Py_DECREF((PyObject *)proc->in); proc->in = NULL; } Py_RETURN_TRUE; } static void pyproc_op_dealloc(struct pyproc_op *op) { Py_DECREF((PyObject *)op->proc); PyObject_Del((PyObject *)op); } static PyObject * pyproc_op_await(PyObject *sop) { Py_INCREF(sop); return (sop); } static PyObject * pyproc_op_iternext(struct pyproc_op *op) { int ret; PyObject *res; if (op->proc->coro->exception != NULL) { PyErr_SetString(op->proc->coro->exception, op->proc->coro->exception_msg); op->proc->coro->exception = NULL; return (NULL); } if (op->proc->reaped == 0) Py_RETURN_NONE; if (WIFSTOPPED(op->proc->status)) { op->proc->reaped = 0; Py_RETURN_NONE; } if (WIFEXITED(op->proc->status)) { ret = WEXITSTATUS(op->proc->status); } else { ret = op->proc->status; } if ((res = PyLong_FromLong(ret)) == NULL) return (NULL); PyErr_SetObject(PyExc_StopIteration, res); Py_DECREF(res); return (NULL); } static void pygather_reap_coro(struct pygather_op *op, struct python_coro *reap) { struct pygather_coro *coro; struct pygather_result *result; TAILQ_FOREACH(coro, &op->coroutines, list) { if (coro->coro->id == reap->id) break; } if (coro == NULL) fatal("coroutine %" PRIu64 " not found in gather", reap->id); op->running--; if (op->running < 0) fatal("gatherop: running miscount (%d)", op->running); result = kore_pool_get(&gather_result_pool); result->obj = NULL; if (_PyGen_FetchStopIterationValue(&result->obj) == -1) { result->obj = Py_None; Py_INCREF(Py_None); } TAILQ_INSERT_TAIL(&op->results, result, list); TAILQ_REMOVE(&op->coroutines, coro, list); kore_pool_put(&gather_coro_pool, coro); kore_python_coro_delete(reap); } static void pygather_op_dealloc(struct pygather_op *op) { struct python_coro *old; struct pygather_coro *coro, *next; struct pygather_result *res, *rnext; /* * Since we are calling kore_python_coro_delete() on all the * remaining coroutines in this gather op we must remember the * original coroutine that is running as the removal will end * up setting coro_running to NULL. */ old = coro_running; for (coro = TAILQ_FIRST(&op->coroutines); coro != NULL; coro = next) { next = TAILQ_NEXT(coro, list); TAILQ_REMOVE(&op->coroutines, coro, list); /* Make sure we don't end up in pygather_reap_coro(). */ coro->coro->gatherop = NULL; kore_python_coro_delete(coro->coro); kore_pool_put(&gather_coro_pool, coro); } coro_running = old; for (res = TAILQ_FIRST(&op->results); res != NULL; res = rnext) { rnext = TAILQ_NEXT(res, list); TAILQ_REMOVE(&op->results, res, list); Py_DECREF(res->obj); kore_pool_put(&gather_result_pool, res); } PyObject_Del((PyObject *)op); } static PyObject * pygather_op_await(PyObject *obj) { Py_INCREF(obj); return (obj); } static PyObject * pygather_op_iternext(struct pygather_op *op) { int idx; struct pygather_coro *coro; struct pygather_result *res, *next; PyObject *list, *obj; if (!TAILQ_EMPTY(&op->coroutines)) { if (op->running > 0) Py_RETURN_NONE; TAILQ_FOREACH(coro, &op->coroutines, list) { if (op->running >= op->concurrency) break; python_coro_wakeup(coro->coro); op->running++; } Py_RETURN_NONE; } if ((list = PyList_New(op->count)) == NULL) return (NULL); idx = 0; for (res = TAILQ_FIRST(&op->results); res != NULL; res = next) { next = TAILQ_NEXT(res, list); TAILQ_REMOVE(&op->results, res, list); obj = res->obj; res->obj = NULL; kore_pool_put(&gather_result_pool, res); if (PyList_SetItem(list, idx++, obj) != 0) { Py_DECREF(list); return (NULL); } } PyErr_SetObject(PyExc_StopIteration, list); Py_DECREF(list); return (NULL); } static PyObject * pyhttp_request_alloc(const struct http_request *req) { union { const void *cp; void *p; } ptr; struct pyhttp_request *pyreq; pyreq = PyObject_New(struct pyhttp_request, &pyhttp_request_type); if (pyreq == NULL) return (NULL); /* * Hack around all http apis taking a non-const pointer and us having * a const pointer for the req data structure. This is because we * could potentially be called from a validator where the argument * is a http_request pointer. */ ptr.cp = req; pyreq->req = ptr.p; pyreq->data = NULL; return ((PyObject *)pyreq); } static PyObject * pyhttp_file_alloc(struct http_file *file) { struct pyhttp_file *pyfile; pyfile = PyObject_New(struct pyhttp_file, &pyhttp_file_type); if (pyfile == NULL) return (NULL); pyfile->file = file; return ((PyObject *)pyfile); } static PyObject * pyhttp_response(struct pyhttp_request *pyreq, PyObject *args) { struct connection *c; char *ptr; Py_ssize_t length; int status; struct pyhttp_iterobj *iterobj; PyObject *obj, *iterator; length = -1; if (!PyArg_ParseTuple(args, "iO", &status, &obj)) return (NULL); if (PyBytes_CheckExact(obj)) { if (PyBytes_AsStringAndSize(obj, &ptr, &length) == -1) return (NULL); if (length < 0) { PyErr_SetString(PyExc_TypeError, "invalid length"); return (NULL); } Py_INCREF(obj); http_response_stream(pyreq->req, status, ptr, length, pyhttp_response_sent, obj); } else if (obj == Py_None) { http_response(pyreq->req, status, NULL, 0); } else { if ((iterator = PyObject_GetIter(obj)) == NULL) return (NULL); c = pyreq->req->owner; iterobj = kore_pool_get(&iterobj_pool); iterobj->iterator = iterator; iterobj->connection = c; iterobj->remove = 0; kore_buf_init(&iterobj->buf, 4096); c->hdlr_extra = iterobj; c->flags |= CONN_IS_BUSY; c->disconnect = pyhttp_iterobj_disconnect; pyreq->req->flags |= HTTP_REQUEST_NO_CONTENT_LENGTH; http_response_header(pyreq->req, "transfer-encoding", "chunked"); http_response(pyreq->req, status, NULL, 0); pyhttp_iterobj_next(iterobj); } Py_RETURN_TRUE; } static int pyhttp_response_sent(struct netbuf *nb) { PyObject *data; data = nb->extra; Py_DECREF(data); return (KORE_RESULT_OK); } static int pyhttp_iterobj_next(struct pyhttp_iterobj *iterobj) { struct netbuf *nb; PyObject *obj; const char *ptr; Py_ssize_t length; PyErr_Clear(); if ((obj = PyIter_Next(iterobj->iterator)) == NULL) { if (PyErr_Occurred()) { kore_python_log_error("pyhttp_iterobj_next"); return (KORE_RESULT_ERROR); } return (KORE_RESULT_OK); } if ((ptr = PyUnicode_AsUTF8AndSize(obj, &length)) == NULL) { kore_python_log_error("pyhttp_iterobj_next"); return (KORE_RESULT_ERROR); } kore_buf_reset(&iterobj->buf); kore_buf_appendf(&iterobj->buf, "%x\r\n", length); kore_buf_append(&iterobj->buf, ptr, length); kore_buf_appendf(&iterobj->buf, "\r\n"); Py_DECREF(obj); net_send_stream(iterobj->connection, iterobj->buf.data, iterobj->buf.offset, pyhttp_iterobj_chunk_sent, &nb); nb->extra = iterobj; return (KORE_RESULT_RETRY); } static int pyhttp_iterobj_chunk_sent(struct netbuf *nb) { int ret; struct pyhttp_iterobj *iterobj; iterobj = nb->extra; if (iterobj->remove) { ret = KORE_RESULT_ERROR; } else { ret = pyhttp_iterobj_next(iterobj); } if (ret != KORE_RESULT_RETRY) { iterobj->connection->hdlr_extra = NULL; iterobj->connection->disconnect = NULL; iterobj->connection->flags &= ~CONN_IS_BUSY; if (iterobj->remove == 0) http_start_recv(iterobj->connection); kore_buf_reset(&iterobj->buf); kore_buf_appendf(&iterobj->buf, "0\r\n\r\n"); net_send_queue(iterobj->connection, iterobj->buf.data, iterobj->buf.offset); Py_DECREF(iterobj->iterator); kore_buf_cleanup(&iterobj->buf); kore_pool_put(&iterobj_pool, iterobj); } else { ret = KORE_RESULT_OK; } return (ret); } static void pyhttp_iterobj_disconnect(struct connection *c) { struct pyhttp_iterobj *iterobj; iterobj = c->hdlr_extra; iterobj->remove = 1; } static PyObject * pyhttp_response_header(struct pyhttp_request *pyreq, PyObject *args) { const char *header, *value; if (!PyArg_ParseTuple(args, "ss", &header, &value)) return (NULL); http_response_header(pyreq->req, header, value); Py_RETURN_TRUE; } static PyObject * pyhttp_request_header(struct pyhttp_request *pyreq, PyObject *args) { const char *value; const char *header; PyObject *result; if (!PyArg_ParseTuple(args, "s", &header)) return (NULL); if (!http_request_header(pyreq->req, header, &value)) { Py_RETURN_NONE; } if ((result = PyUnicode_FromString(value)) == NULL) return (PyErr_NoMemory()); return (result); } static PyObject * pyhttp_body_read(struct pyhttp_request *pyreq, PyObject *args) { ssize_t ret; size_t len; Py_ssize_t pylen; PyObject *result; u_int8_t buf[1024]; if (!PyArg_ParseTuple(args, "n", &pylen) || pylen < 0) return (NULL); len = (size_t)pylen; if (len > sizeof(buf)) { PyErr_SetString(PyExc_RuntimeError, "len > sizeof(buf)"); return (NULL); } ret = http_body_read(pyreq->req, buf, len); if (ret == -1) { PyErr_SetString(PyExc_RuntimeError, "http_body_read() failed"); return (NULL); } if (ret > INT_MAX) { PyErr_SetString(PyExc_RuntimeError, "ret > INT_MAX"); return (NULL); } result = Py_BuildValue("ny#", ret, buf, (int)ret); if (result == NULL) return (PyErr_NoMemory()); return (result); } static PyObject * pyhttp_populate_get(struct pyhttp_request *pyreq, PyObject *args) { http_populate_get(pyreq->req); Py_RETURN_TRUE; } static PyObject * pyhttp_populate_post(struct pyhttp_request *pyreq, PyObject *args) { http_populate_post(pyreq->req); Py_RETURN_TRUE; } static PyObject * pyhttp_populate_multi(struct pyhttp_request *pyreq, PyObject *args) { http_populate_multipart_form(pyreq->req); Py_RETURN_TRUE; } static PyObject * pyhttp_populate_cookies(struct pyhttp_request *pyreq, PyObject *args) { http_populate_cookies(pyreq->req); Py_RETURN_TRUE; } static PyObject * pyhttp_argument(struct pyhttp_request *pyreq, PyObject *args) { const char *name; PyObject *value; char *string; if (!PyArg_ParseTuple(args, "s", &name)) return (NULL); if (!http_argument_get_string(pyreq->req, name, &string)) { Py_RETURN_NONE; } if ((value = PyUnicode_FromString(string)) == NULL) return (PyErr_NoMemory()); return (value); } static PyObject * pyhttp_cookie(struct pyhttp_request *pyreq, PyObject *args) { const char *name; PyObject *value; char *string; if (!PyArg_ParseTuple(args, "s", &name)) return (NULL); if (!http_request_cookie(pyreq->req, name, &string)) { Py_RETURN_NONE; } if ((value = PyUnicode_FromString(string)) == NULL) return (PyErr_NoMemory()); return (value); } static PyObject * pyhttp_file_lookup(struct pyhttp_request *pyreq, PyObject *args) { const char *name; struct http_file *file; PyObject *pyfile; if (!PyArg_ParseTuple(args, "s", &name)) return (NULL); if ((file = http_file_lookup(pyreq->req, name)) == NULL) { Py_RETURN_NONE; } if ((pyfile = pyhttp_file_alloc(file)) == NULL) return (PyErr_NoMemory()); return (pyfile); } static PyObject * pyhttp_file_read(struct pyhttp_file *pyfile, PyObject *args) { ssize_t ret; size_t len; Py_ssize_t pylen; PyObject *result; u_int8_t buf[1024]; if (!PyArg_ParseTuple(args, "n", &pylen) || pylen < 0) return (NULL); len = (size_t)pylen; if (len > sizeof(buf)) { PyErr_SetString(PyExc_RuntimeError, "len > sizeof(buf)"); return (NULL); } ret = http_file_read(pyfile->file, buf, len); if (ret == -1) { PyErr_SetString(PyExc_RuntimeError, "http_file_read() failed"); return (NULL); } if (ret > INT_MAX) { PyErr_SetString(PyExc_RuntimeError, "ret > INT_MAX"); return (NULL); } result = Py_BuildValue("ny#", ret, buf, (int)ret); if (result == NULL) return (PyErr_NoMemory()); return (result); } static PyObject * pyhttp_websocket_handshake(struct pyhttp_request *pyreq, PyObject *args) { const char *onconnect, *onmsg, *ondisconnect; if (!PyArg_ParseTuple(args, "sss", &onconnect, &onmsg, &ondisconnect)) return (NULL); kore_websocket_handshake(pyreq->req, onconnect, onmsg, ondisconnect); Py_RETURN_TRUE; } static PyObject * pyconnection_websocket_send(struct pyconnection *pyc, PyObject *args) { const char *data; int op, len; if (pyc->c->proto != CONN_PROTO_WEBSOCKET) { PyErr_SetString(PyExc_TypeError, "not a websocket connection"); return (NULL); } len = -1; if (!PyArg_ParseTuple(args, "iy#", &op, &data, &len)) return (NULL); if (len < 0) { PyErr_SetString(PyExc_TypeError, "invalid length"); return (NULL); } switch (op) { case WEBSOCKET_OP_TEXT: case WEBSOCKET_OP_BINARY: break; default: PyErr_SetString(PyExc_TypeError, "invalid op parameter"); return (NULL); } kore_websocket_send(pyc->c, op, data, len); Py_RETURN_TRUE; } static PyObject * python_websocket_broadcast(PyObject *self, PyObject *args) { struct connection *c; struct pyconnection *pyc; const char *data; PyObject *pysrc; int op, broadcast, len; len = -1; if (!PyArg_ParseTuple(args, "Oiy#i", &pysrc, &op, &data, &len, &broadcast)) return (NULL); if (len < 0) { PyErr_SetString(PyExc_TypeError, "invalid length"); return (NULL); } switch (op) { case WEBSOCKET_OP_TEXT: case WEBSOCKET_OP_BINARY: break; default: PyErr_SetString(PyExc_TypeError, "invalid op parameter"); return (NULL); } if (pysrc == Py_None) { c = NULL; } else { if (!PyObject_TypeCheck(pysrc, &pyconnection_type)) return (NULL); pyc = (struct pyconnection *)pysrc; c = pyc->c; } kore_websocket_broadcast(c, op, data, len, broadcast); Py_RETURN_TRUE; } static PyObject * pyhttp_get_host(struct pyhttp_request *pyreq, void *closure) { PyObject *host; if ((host = PyUnicode_FromString(pyreq->req->host)) == NULL) return (PyErr_NoMemory()); return (host); } static PyObject * pyhttp_get_path(struct pyhttp_request *pyreq, void *closure) { PyObject *path; if ((path = PyUnicode_FromString(pyreq->req->path)) == NULL) return (PyErr_NoMemory()); return (path); } static PyObject * pyhttp_get_body(struct pyhttp_request *pyreq, void *closure) { ssize_t ret; struct kore_buf buf; PyObject *body; u_int8_t data[BUFSIZ]; kore_buf_init(&buf, 1024); if (!http_body_rewind(pyreq->req)) { PyErr_SetString(PyExc_RuntimeError, "http_body_rewind() failed"); return (NULL); } for (;;) { ret = http_body_read(pyreq->req, data, sizeof(data)); if (ret == -1) { kore_buf_cleanup(&buf); PyErr_SetString(PyExc_RuntimeError, "http_body_read() failed"); return (NULL); } if (ret == 0) break; kore_buf_append(&buf, data, (size_t)ret); } body = PyBytes_FromStringAndSize((char *)buf.data, buf.offset); kore_buf_free(&buf); if (body == NULL) return (PyErr_NoMemory()); return (body); } static PyObject * pyhttp_get_agent(struct pyhttp_request *pyreq, void *closure) { PyObject *agent; if (pyreq->req->agent == NULL) { Py_RETURN_NONE; } if ((agent = PyUnicode_FromString(pyreq->req->path)) == NULL) return (PyErr_NoMemory()); return (agent); } static PyObject * pyhttp_get_method(struct pyhttp_request *pyreq, void *closure) { PyObject *method; if ((method = PyLong_FromUnsignedLong(pyreq->req->method)) == NULL) return (PyErr_NoMemory()); return (method); } static PyObject * pyhttp_get_body_path(struct pyhttp_request *pyreq, void *closure) { PyObject *path; if (pyreq->req->http_body_path == NULL) { Py_RETURN_NONE; } if ((path = PyUnicode_FromString(pyreq->req->http_body_path)) == NULL) return (PyErr_NoMemory()); return (path); } static PyObject * pyhttp_get_connection(struct pyhttp_request *pyreq, void *closure) { PyObject *pyc; if (pyreq->req->owner == NULL) { Py_RETURN_NONE; } if ((pyc = pyconnection_alloc(pyreq->req->owner)) == NULL) return (PyErr_NoMemory()); return (pyc); } static PyObject * pyhttp_file_get_name(struct pyhttp_file *pyfile, void *closure) { PyObject *name; if ((name = PyUnicode_FromString(pyfile->file->name)) == NULL) return (PyErr_NoMemory()); return (name); } static PyObject * pyhttp_file_get_filename(struct pyhttp_file *pyfile, void *closure) { PyObject *name; if ((name = PyUnicode_FromString(pyfile->file->filename)) == NULL) return (PyErr_NoMemory()); return (name); } #if defined(KORE_USE_PGSQL) static void pykore_pgsql_dealloc(struct pykore_pgsql *pysql) { Py_ssize_t i; kore_free(pysql->db); kore_free(pysql->query); kore_pgsql_cleanup(&pysql->sql); if (pysql->result != NULL) Py_DECREF(pysql->result); for (i = 0; i < pysql->param.count; i++) Py_XDECREF(pysql->param.objs[i]); kore_free(pysql->param.objs); kore_free(pysql->param.values); kore_free(pysql->param.lengths); kore_free(pysql->param.formats); PyObject_Del((PyObject *)pysql); } static PyObject * pykore_pgsql_alloc(struct http_request *req, const char *db, const char *query, PyObject *kwargs) { PyObject *obj; struct pykore_pgsql *pysql; pysql = PyObject_New(struct pykore_pgsql, &pykore_pgsql_type); if (pysql == NULL) return (NULL); pysql->req = req; pysql->result = NULL; pysql->db = kore_strdup(db); pysql->query = kore_strdup(query); pysql->state = PYKORE_PGSQL_PREINIT; pysql->binary = 0; pysql->param.count = 0; pysql->param.objs = NULL; pysql->param.values = NULL; pysql->param.lengths = NULL; pysql->param.formats = NULL; memset(&pysql->sql, 0, sizeof(pysql->sql)); if (kwargs != NULL) { if ((obj = PyDict_GetItemString(kwargs, "params")) != NULL) { if (!pykore_pgsql_params(pysql, obj)) { Py_DECREF((PyObject *)pysql); return (NULL); } } if ((obj = PyDict_GetItemString(kwargs, "binary")) != NULL) { if (obj == Py_True) { pysql->binary = 1; } else if (obj == Py_False) { pysql->binary = 0; } else { Py_DECREF((PyObject *)pysql); PyErr_SetString(PyExc_RuntimeError, "pgsql: binary not True or False"); return (NULL); } } } return ((PyObject *)pysql); } static int pykore_pgsql_params(struct pykore_pgsql *op, PyObject *list) { union { const char *cp; char *p; } ptr; PyObject *item; int format; Py_ssize_t i, len, vlen; if (!PyList_CheckExact(list)) { if (list == Py_None) return (KORE_RESULT_OK); PyErr_SetString(PyExc_RuntimeError, "pgsql: params keyword must be a list"); return (KORE_RESULT_ERROR); } len = PyList_Size(list); if (len == 0) return (KORE_RESULT_OK); if (len > INT_MAX) { PyErr_SetString(PyExc_RuntimeError, "pgsql: list length too large"); return (KORE_RESULT_ERROR); } op->param.count = len; op->param.lengths = kore_calloc(len, sizeof(int)); op->param.formats = kore_calloc(len, sizeof(int)); op->param.values = kore_calloc(len, sizeof(char *)); op->param.objs = kore_calloc(len, sizeof(PyObject *)); for (i = 0; i < len; i++) { if ((item = PyList_GetItem(list, i)) == NULL) return (KORE_RESULT_ERROR); if (PyUnicode_CheckExact(item)) { format = 0; ptr.cp = PyUnicode_AsUTF8AndSize(item, &vlen); } else if (PyBytes_CheckExact(item)) { format = 1; if (PyBytes_AsStringAndSize(item, &ptr.p, &vlen) == -1) ptr.p = NULL; } else { PyErr_Format(PyExc_RuntimeError, "pgsql: item %zu is not a string or bytes", i); return (KORE_RESULT_ERROR); } if (ptr.cp == NULL) return (KORE_RESULT_ERROR); op->param.lengths[i] = vlen; op->param.values[i] = ptr.cp; op->param.formats[i] = format; /* Hold on to it since we are directly referencing its data. */ op->param.objs[i] = item; Py_INCREF(item); } return (KORE_RESULT_OK); } static PyObject * pykore_pgsql_iternext(struct pykore_pgsql *pysql) { switch (pysql->state) { case PYKORE_PGSQL_PREINIT: kore_pgsql_init(&pysql->sql); kore_pgsql_bind_request(&pysql->sql, pysql->req); pysql->state = PYKORE_PGSQL_INITIALIZE; /* fallthrough */ case PYKORE_PGSQL_INITIALIZE: if (!kore_pgsql_setup(&pysql->sql, pysql->db, KORE_PGSQL_ASYNC)) { if (pysql->sql.state == KORE_PGSQL_STATE_INIT) break; PyErr_Format(PyExc_RuntimeError, "pgsql error: %s", pysql->sql.error); return (NULL); } /* fallthrough */ case PYKORE_PGSQL_QUERY: if (!kore_pgsql_query_param_fields(&pysql->sql, pysql->query, pysql->binary, pysql->param.count, pysql->param.values, pysql->param.lengths, pysql->param.formats)) { PyErr_Format(PyExc_RuntimeError, "pgsql error: %s", pysql->sql.error); return (NULL); } pysql->state = PYKORE_PGSQL_WAIT; break; wait_again: case PYKORE_PGSQL_WAIT: switch (pysql->sql.state) { case KORE_PGSQL_STATE_WAIT: break; case KORE_PGSQL_STATE_COMPLETE: PyErr_SetNone(PyExc_StopIteration); if (pysql->result != NULL) { PyErr_SetObject(PyExc_StopIteration, pysql->result); Py_DECREF(pysql->result); } else { PyErr_SetObject(PyExc_StopIteration, Py_None); } return (NULL); case KORE_PGSQL_STATE_ERROR: PyErr_Format(PyExc_RuntimeError, "failed to perform query: %s", pysql->sql.error); return (NULL); case KORE_PGSQL_STATE_RESULT: if (!pykore_pgsql_result(pysql)) return (NULL); goto wait_again; default: kore_pgsql_continue(&pysql->sql); goto wait_again; } break; default: PyErr_SetString(PyExc_RuntimeError, "bad pykore_pgsql state"); return (NULL); } /* tell caller to wait. */ Py_RETURN_NONE; } static PyObject * pykore_pgsql_await(PyObject *obj) { Py_INCREF(obj); return (obj); } static int pykore_pgsql_result(struct pykore_pgsql *pysql) { const char *val; char key[64]; PyObject *list, *pyrow, *pyval; int rows, row, field, fields, len; if ((list = PyList_New(0)) == NULL) { PyErr_SetNone(PyExc_MemoryError); return (KORE_RESULT_ERROR); } rows = kore_pgsql_ntuples(&pysql->sql); fields = kore_pgsql_nfields(&pysql->sql); for (row = 0; row < rows; row++) { if ((pyrow = PyDict_New()) == NULL) { Py_DECREF(list); PyErr_SetNone(PyExc_MemoryError); return (KORE_RESULT_ERROR); } for (field = 0; field < fields; field++) { val = kore_pgsql_getvalue(&pysql->sql, row, field); len = kore_pgsql_getlength(&pysql->sql, row, field); if (kore_pgsql_column_binary(&pysql->sql, field)) { pyval = PyBytes_FromStringAndSize(val, len); } else { pyval = PyUnicode_FromString(val); } if (pyval == NULL) { Py_DECREF(pyrow); Py_DECREF(list); PyErr_SetNone(PyExc_MemoryError); return (KORE_RESULT_ERROR); } (void)snprintf(key, sizeof(key), "%s", kore_pgsql_fieldname(&pysql->sql, field)); if (PyDict_SetItemString(pyrow, key, pyval) == -1) { Py_DECREF(pyval); Py_DECREF(pyrow); Py_DECREF(list); PyErr_SetString(PyExc_RuntimeError, "failed to add new value to row"); return (KORE_RESULT_ERROR); } Py_DECREF(pyval); } if (PyList_Insert(list, row, pyrow) == -1) { Py_DECREF(pyrow); Py_DECREF(list); PyErr_SetString(PyExc_RuntimeError, "failed to add new row to list"); return (KORE_RESULT_ERROR); } Py_DECREF(pyrow); } pysql->result = list; kore_pgsql_continue(&pysql->sql); return (KORE_RESULT_OK); } static PyObject * pyhttp_pgsql(struct pyhttp_request *pyreq, PyObject *args, PyObject *kwargs) { PyObject *obj; const char *db, *query; if (!PyArg_ParseTuple(args, "ss", &db, &query)) return (NULL); if ((obj = pykore_pgsql_alloc(pyreq->req, db, query, kwargs)) == NULL) return (PyErr_NoMemory()); Py_INCREF(obj); pyreq->data = obj; return ((PyObject *)obj); } #endif #if defined(KORE_USE_CURL) static PyObject * python_kore_httpclient(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject *obj; struct pyhttp_client *client; const char *url, *v; if (!PyArg_ParseTuple(args, "s", &url)) return (NULL); client = PyObject_New(struct pyhttp_client, &pyhttp_client_type); if (client == NULL) return (NULL); client->unix = NULL; client->tlskey = NULL; client->tlscert = NULL; client->cabundle = NULL; client->tlsverify = 1; client->url = kore_strdup(url); if (kwargs != NULL) { if ((obj = PyDict_GetItemString(kwargs, "tlscert")) != NULL) { if ((v = PyUnicode_AsUTF8(obj)) == NULL) { Py_DECREF((PyObject *)client); return (NULL); } client->tlscert = kore_strdup(v); } if ((obj = PyDict_GetItemString(kwargs, "tlskey")) != NULL) { if ((v = PyUnicode_AsUTF8(obj)) == NULL) { Py_DECREF((PyObject *)client); return (NULL); } client->tlskey = kore_strdup(v); } if ((obj = PyDict_GetItemString(kwargs, "cabundle")) != NULL) { if ((v = PyUnicode_AsUTF8(obj)) == NULL) { Py_DECREF((PyObject *)client); return (NULL); } client->cabundle = kore_strdup(v); } if ((obj = PyDict_GetItemString(kwargs, "unix")) != NULL) { if ((v = PyUnicode_AsUTF8(obj)) == NULL) { Py_DECREF((PyObject *)client); return (NULL); } client->unix = kore_strdup(v); } if ((obj = PyDict_GetItemString(kwargs, "tlsverify")) != NULL) { if (obj == Py_True) { client->tlsverify = 1; } else if (obj == Py_False) { client->tlsverify = 0; } else { Py_DECREF((PyObject *)client); PyErr_SetString(PyExc_RuntimeError, "tlsverify not True or False"); return (NULL); } } } if ((client->tlscert != NULL && client->tlskey == NULL) || (client->tlskey != NULL && client->tlscert == NULL)) { Py_DECREF((PyObject *)client); PyErr_SetString(PyExc_RuntimeError, "invalid TLS client configuration"); return (NULL); } return ((PyObject *)client); } static void pyhttp_client_dealloc(struct pyhttp_client *client) { kore_free(client->url); kore_free(client->unix); kore_free(client->tlskey); kore_free(client->tlscert); kore_free(client->cabundle); PyObject_Del((PyObject *)client); } static PyObject * pyhttp_client_get(struct pyhttp_client *client, PyObject *args, PyObject *kwargs) { return (pyhttp_client_request(client, HTTP_METHOD_GET, kwargs)); } static PyObject * pyhttp_client_put(struct pyhttp_client *client, PyObject *args, PyObject *kwargs) { return (pyhttp_client_request(client, HTTP_METHOD_PUT, kwargs)); } static PyObject * pyhttp_client_post(struct pyhttp_client *client, PyObject *args, PyObject *kwargs) { return (pyhttp_client_request(client, HTTP_METHOD_POST, kwargs)); } static PyObject * pyhttp_client_head(struct pyhttp_client *client, PyObject *args, PyObject *kwargs) { return (pyhttp_client_request(client, HTTP_METHOD_HEAD, kwargs)); } static PyObject * pyhttp_client_patch(struct pyhttp_client *client, PyObject *args, PyObject *kwargs) { return (pyhttp_client_request(client, HTTP_METHOD_PATCH, kwargs)); } static PyObject * pyhttp_client_delete(struct pyhttp_client *client, PyObject *args, PyObject *kwargs) { return (pyhttp_client_request(client, HTTP_METHOD_DELETE, kwargs)); } static PyObject * pyhttp_client_options(struct pyhttp_client *client, PyObject *args, PyObject *kwargs) { return (pyhttp_client_request(client, HTTP_METHOD_OPTIONS, kwargs)); } static PyObject * pyhttp_client_request(struct pyhttp_client *client, int m, PyObject *kwargs) { struct pyhttp_client_op *op; char *ptr; const char *k, *v; Py_ssize_t length, idx; PyObject *data, *headers, *key, *item; ptr = NULL; length = 0; headers = NULL; if (kwargs != NULL && ((headers = PyDict_GetItemString(kwargs, "headers")) != NULL)) { if (!PyDict_CheckExact(headers)) { PyErr_SetString(PyExc_RuntimeError, "header keyword must be a dict"); return (NULL); } } switch (m) { case HTTP_METHOD_GET: case HTTP_METHOD_HEAD: case HTTP_METHOD_DELETE: case HTTP_METHOD_OPTIONS: break; case HTTP_METHOD_PUT: case HTTP_METHOD_POST: case HTTP_METHOD_PATCH: length = -1; if (kwargs == NULL) { PyErr_Format(PyExc_RuntimeError, "no keyword arguments given, but body expected ", http_method_text(m)); return (NULL); } if ((data = PyDict_GetItemString(kwargs, "body")) == NULL) return (NULL); if (PyBytes_AsStringAndSize(data, &ptr, &length) == -1) return (NULL); if (length < 0) { PyErr_SetString(PyExc_TypeError, "invalid length"); return (NULL); } break; default: fatal("%s: unknown method %d", __func__, m); } op = PyObject_New(struct pyhttp_client_op, &pyhttp_client_op_type); if (op == NULL) return (NULL); if (!kore_curl_init(&op->curl, client->url)) { Py_DECREF((PyObject *)op); PyErr_SetString(PyExc_RuntimeError, "failed to setup call"); return (NULL); } op->headers = 0; op->coro = coro_running; op->state = PYHTTP_CLIENT_OP_RUN; Py_INCREF(client); kore_curl_http_setup(&op->curl, m, ptr, length); kore_curl_bind_callback(&op->curl, python_curl_callback, op); /* Go in with our own bare hands. */ if (client->unix != NULL) { #if defined(__linux__) if (client->unix[0] == '@') { curl_easy_setopt(op->curl.handle, CURLOPT_ABSTRACT_UNIX_SOCKET, client->unix + 1); } else { curl_easy_setopt(op->curl.handle, CURLOPT_UNIX_SOCKET_PATH, client->unix); } #else curl_easy_setopt(op->curl.handle, CURLOPT_UNIX_SOCKET_PATH, client->unix); #endif } if (client->tlskey != NULL && client->tlscert != NULL) { curl_easy_setopt(op->curl.handle, CURLOPT_SSLCERT, client->tlscert); curl_easy_setopt(op->curl.handle, CURLOPT_SSLKEY, client->tlskey); } if (client->tlsverify == 0) { curl_easy_setopt(op->curl.handle, CURLOPT_SSL_VERIFYHOST, 0); curl_easy_setopt(op->curl.handle, CURLOPT_SSL_VERIFYPEER, 0); } if (client->cabundle != NULL) { curl_easy_setopt(op->curl.handle, CURLOPT_CAINFO, client->cabundle); } if (headers != NULL) { idx = 0; while (PyDict_Next(headers, &idx, &key, &item)) { if ((k = PyUnicode_AsUTF8(key)) == NULL) { Py_DECREF((PyObject *)op); return (NULL); } if ((v = PyUnicode_AsUTF8(item)) == NULL) { Py_DECREF((PyObject *)op); return (NULL); } kore_curl_http_set_header(&op->curl, k, v); } } if (kwargs != NULL && ((item = PyDict_GetItemString(kwargs, "return_headers")) != NULL)) { if (item == Py_True) { op->headers = 1; } else if (item == Py_False) { op->headers = 0; } else { Py_DECREF((PyObject *)op); PyErr_SetString(PyExc_RuntimeError, "return_headers not True or False"); return (NULL); } } return ((PyObject *)op); } static void pyhttp_client_op_dealloc(struct pyhttp_client_op *op) { kore_curl_cleanup(&op->curl); PyObject_Del((PyObject *)op); } static PyObject * pyhttp_client_op_await(PyObject *op) { Py_INCREF(op); return (op); } static PyObject * pyhttp_client_op_iternext(struct pyhttp_client_op *op) { size_t len; struct http_header *hdr; const u_int8_t *response; PyObject *result, *tuple, *dict, *value; if (op->state == PYHTTP_CLIENT_OP_RUN) { kore_curl_run(&op->curl); op->state = PYHTTP_CLIENT_OP_RESULT; Py_RETURN_NONE; } if (!kore_curl_success(&op->curl)) { PyErr_Format(PyExc_RuntimeError, "request to '%s' failed: %s", op->curl.url, kore_curl_strerror(&op->curl)); return (NULL); } kore_curl_response_as_bytes(&op->curl, &response, &len); if (op->headers) { kore_curl_http_parse_headers(&op->curl); if ((dict = PyDict_New()) == NULL) return (NULL); TAILQ_FOREACH(hdr, &op->curl.http.resp_hdrs, list) { value = PyUnicode_FromString(hdr->value); if (value == NULL) { Py_DECREF(dict); return (NULL); } if (PyDict_SetItemString(dict, hdr->header, value) == -1) { Py_DECREF(dict); Py_DECREF(value); return (NULL); } Py_DECREF(value); } if ((tuple = Py_BuildValue("(iOy#)", op->curl.http.status, dict, (const char *)response, len)) == NULL) return (NULL); Py_DECREF(dict); } else { if ((tuple = Py_BuildValue("(iy#)", op->curl.http.status, (const char *)response, len)) == NULL) return (NULL); } result = PyObject_CallFunctionObjArgs(PyExc_StopIteration, tuple, NULL); if (result == NULL) { Py_DECREF(tuple); return (NULL); } Py_DECREF(tuple); PyErr_SetObject(PyExc_StopIteration, result); Py_DECREF(result); return (NULL); } static void python_curl_callback(struct kore_curl *curl, void *arg) { struct pyhttp_client_op *op = arg; if (op->coro->request != NULL) http_request_wakeup(op->coro->request); else python_coro_wakeup(op->coro); } #endif kore-3.3.1/src/runtime.c000066400000000000000000000112311347522026400150770ustar00rootroot00000000000000/* * Copyright (c) 2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include "kore.h" #if !defined(KORE_NO_HTTP) #include "http.h" #endif #if defined(KORE_USE_PYTHON) #include "python_api.h" #endif static void native_runtime_execute(void *); static int native_runtime_onload(void *, int); static void native_runtime_connect(void *, struct connection *); static void native_runtime_configure(void *, int, char **); #if !defined(KORE_NO_HTTP) static int native_runtime_http_request(void *, struct http_request *); static int native_runtime_validator(void *, struct http_request *, const void *); static void native_runtime_wsmessage(void *, struct connection *, u_int8_t, const void *, size_t); #endif struct kore_runtime kore_native_runtime = { KORE_RUNTIME_NATIVE, #if !defined(KORE_NO_HTTP) .http_request = native_runtime_http_request, .validator = native_runtime_validator, .wsconnect = native_runtime_connect, .wsmessage = native_runtime_wsmessage, .wsdisconnect = native_runtime_connect, #endif .onload = native_runtime_onload, .connect = native_runtime_connect, .execute = native_runtime_execute, .configure = native_runtime_configure }; struct kore_runtime_call * kore_runtime_getcall(const char *symbol) { void *ptr; struct kore_runtime_call *rcall; struct kore_runtime *runtime; ptr = kore_module_getsym(symbol, &runtime); if (ptr == NULL) return (NULL); rcall = kore_malloc(sizeof(*rcall)); rcall->addr = ptr; rcall->runtime = runtime; return (rcall); } void kore_runtime_execute(struct kore_runtime_call *rcall) { rcall->runtime->execute(rcall->addr); } void kore_runtime_configure(struct kore_runtime_call *rcall, int argc, char **argv) { rcall->runtime->configure(rcall->addr, argc, argv); } int kore_runtime_onload(struct kore_runtime_call *rcall, int action) { return (rcall->runtime->onload(rcall->addr, action)); } void kore_runtime_connect(struct kore_runtime_call *rcall, struct connection *c) { rcall->runtime->connect(rcall->addr, c); } #if !defined(KORE_NO_HTTP) int kore_runtime_http_request(struct kore_runtime_call *rcall, struct http_request *req) { return (rcall->runtime->http_request(rcall->addr, req)); } int kore_runtime_validator(struct kore_runtime_call *rcall, struct http_request *req, const void *data) { return (rcall->runtime->validator(rcall->addr, req, data)); } void kore_runtime_wsconnect(struct kore_runtime_call *rcall, struct connection *c) { rcall->runtime->wsconnect(rcall->addr, c); } void kore_runtime_wsmessage(struct kore_runtime_call *rcall, struct connection *c, u_int8_t op, const void *data, size_t len) { rcall->runtime->wsmessage(rcall->addr, c, op, data, len); } void kore_runtime_wsdisconnect(struct kore_runtime_call *rcall, struct connection *c) { rcall->runtime->wsdisconnect(rcall->addr, c); } #endif static void native_runtime_execute(void *addr) { void (*cb)(void); *(void **)&(cb) = addr; cb(); } static void native_runtime_configure(void *addr, int argc, char **argv) { void (*cb)(int, char **); *(void **)&(cb) = addr; cb(argc, argv); } static void native_runtime_connect(void *addr, struct connection *c) { void (*cb)(struct connection *); *(void **)&(cb) = addr; cb(c); } static int native_runtime_onload(void *addr, int action) { int (*cb)(int); *(void **)&(cb) = addr; return (cb(action)); } #if !defined(KORE_NO_HTTP) static int native_runtime_http_request(void *addr, struct http_request *req) { int (*cb)(struct http_request *); *(void **)&(cb) = addr; return (cb(req)); } static int native_runtime_validator(void *addr, struct http_request *req, const void *data) { int (*cb)(struct http_request *, const void *); *(void **)&(cb) = addr; return (cb(req, data)); } static void native_runtime_wsmessage(void *addr, struct connection *c, u_int8_t op, const void *data, size_t len) { void (*cb)(struct connection *, u_int8_t, const void *, size_t); *(void **)&(cb) = addr; cb(c, op, data, len); } #endif kore-3.3.1/src/tasks.c000066400000000000000000000170031347522026400145440ustar00rootroot00000000000000/* * Copyright (c) 2014 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include #include #include #include "kore.h" #include "http.h" #include "tasks.h" static u_int8_t threads; static TAILQ_HEAD(, kore_task_thread) task_threads; u_int16_t kore_task_threads = KORE_TASK_THREADS; static void *task_thread(void *); static void task_channel_read(int, void *, u_int32_t); static void task_channel_write(int, void *, u_int32_t); static void task_thread_spawn(struct kore_task_thread **); #define THREAD_FD_ASSIGN(t, f, i, o) \ do { \ if (pthread_self() == t) { \ f = i; \ } else { \ f = o; \ } \ } while (0); void kore_task_init(void) { threads = 0; TAILQ_INIT(&task_threads); } void kore_task_create(struct kore_task *t, int (*entry)(struct kore_task *)) { t->cb = NULL; #if !defined(KORE_NO_HTTP) t->req = NULL; #endif t->evt.type = KORE_TYPE_TASK; t->evt.handle = kore_task_handle; t->entry = entry; t->state = KORE_TASK_STATE_CREATED; pthread_rwlock_init(&(t->lock), NULL); if (socketpair(AF_UNIX, SOCK_STREAM, 0, t->fds) == -1) fatal("kore_task_create: socketpair() %s", errno_s); } void kore_task_run(struct kore_task *t) { struct kore_task_thread *tt; kore_platform_schedule_read(t->fds[0], t); if (threads < kore_task_threads) { /* task_thread_spawn() will lock tt->lock for us. */ task_thread_spawn(&tt); } else { /* Cycle task around. */ if ((tt = TAILQ_FIRST(&task_threads)) == NULL) fatal("no available tasks threads?"); pthread_mutex_lock(&(tt->lock)); TAILQ_REMOVE(&task_threads, tt, list); TAILQ_INSERT_TAIL(&task_threads, tt, list); } t->thread = tt; TAILQ_INSERT_TAIL(&(tt->tasks), t, list); pthread_mutex_unlock(&(tt->lock)); pthread_cond_signal(&(tt->cond)); } #if !defined(KORE_NO_HTTP) void kore_task_bind_request(struct kore_task *t, struct http_request *req) { kore_debug("kore_task_bind_request: %p bound to %p", req, t); if (t->cb != NULL) fatal("cannot bind cbs and requests at the same time"); t->req = req; LIST_INSERT_HEAD(&(req->tasks), t, rlist); http_request_sleep(req); } #endif void kore_task_bind_callback(struct kore_task *t, void (*cb)(struct kore_task *)) { #if !defined(KORE_NO_HTTP) if (t->req != NULL) fatal("cannot bind requests and cbs at the same time"); #endif t->cb = cb; } void kore_task_destroy(struct kore_task *t) { kore_debug("kore_task_destroy: %p", t); #if !defined(KORE_NO_HTTP) if (t->req != NULL) { t->req = NULL; LIST_REMOVE(t, rlist); } #endif pthread_rwlock_wrlock(&(t->lock)); if (t->fds[0] != -1) { (void)close(t->fds[0]); t->fds[0] = -1; } if (t->fds[1] != -1) { (void)close(t->fds[1]); t->fds[1] = -1; } pthread_rwlock_unlock(&(t->lock)); pthread_rwlock_destroy(&(t->lock)); } int kore_task_finished(struct kore_task *t) { return ((kore_task_state(t) == KORE_TASK_STATE_FINISHED)); } void kore_task_finish(struct kore_task *t) { kore_debug("kore_task_finished: %p (%d)", t, t->result); pthread_rwlock_wrlock(&(t->lock)); if (t->fds[1] != -1) { (void)close(t->fds[1]); t->fds[1] = -1; } pthread_rwlock_unlock(&(t->lock)); } void kore_task_channel_write(struct kore_task *t, void *data, u_int32_t len) { int fd; kore_debug("kore_task_channel_write: %p <- %p (%ld)", t, data, len); THREAD_FD_ASSIGN(t->thread->tid, fd, t->fds[1], t->fds[0]); task_channel_write(fd, &len, sizeof(len)); task_channel_write(fd, data, len); } u_int32_t kore_task_channel_read(struct kore_task *t, void *out, u_int32_t len) { int fd; u_int32_t dlen, bytes; kore_debug("kore_task_channel_read: %p -> %p (%ld)", t, out, len); THREAD_FD_ASSIGN(t->thread->tid, fd, t->fds[1], t->fds[0]); task_channel_read(fd, &dlen, sizeof(dlen)); if (dlen > len) bytes = len; else bytes = dlen; task_channel_read(fd, out, bytes); return (dlen); } void kore_task_handle(void *arg, int finished) { struct kore_task *t = arg; kore_debug("kore_task_handle: %p, %d", t, finished); #if !defined(KORE_NO_HTTP) if (t->req != NULL) http_request_wakeup(t->req); #endif if (finished) { kore_platform_disable_read(t->fds[0]); kore_task_set_state(t, KORE_TASK_STATE_FINISHED); #if !defined(KORE_NO_HTTP) if (t->req != NULL) { if (t->req->flags & HTTP_REQUEST_DELETE) kore_task_destroy(t); } #endif } if (t->cb != NULL) t->cb(t); } int kore_task_state(struct kore_task *t) { int s; pthread_rwlock_rdlock(&(t->lock)); s = t->state; pthread_rwlock_unlock(&(t->lock)); return (s); } void kore_task_set_state(struct kore_task *t, int state) { pthread_rwlock_wrlock(&(t->lock)); t->state = state; pthread_rwlock_unlock(&(t->lock)); } int kore_task_result(struct kore_task *t) { int r; pthread_rwlock_rdlock(&(t->lock)); r = t->result; pthread_rwlock_unlock(&(t->lock)); return (r); } void kore_task_set_result(struct kore_task *t, int result) { pthread_rwlock_wrlock(&(t->lock)); t->result = result; pthread_rwlock_unlock(&(t->lock)); } static void task_channel_write(int fd, void *data, u_int32_t len) { ssize_t r; u_int8_t *d; u_int32_t offset; d = data; offset = 0; while (offset != len) { r = write(fd, d + offset, len - offset); if (r == -1 && errno == EINTR) continue; if (r == -1) fatal("task_channel_write: %s", errno_s); offset += r; } } static void task_channel_read(int fd, void *out, u_int32_t len) { ssize_t r; u_int8_t *d; u_int32_t offset; d = out; offset = 0; while (offset != len) { r = read(fd, d + offset, len - offset); if (r == -1 && errno == EINTR) continue; if (r == -1) fatal("task_channel_read: %s", errno_s); if (r == 0) fatal("task_channel_read: unexpected eof"); offset += r; } } static void task_thread_spawn(struct kore_task_thread **out) { struct kore_task_thread *tt; tt = kore_malloc(sizeof(*tt)); tt->idx = threads++; TAILQ_INIT(&(tt->tasks)); pthread_cond_init(&(tt->cond), NULL); pthread_mutex_init(&(tt->lock), NULL); pthread_mutex_lock(&(tt->lock)); TAILQ_INSERT_TAIL(&task_threads, tt, list); if (pthread_create(&(tt->tid), NULL, task_thread, tt) != 0) fatal("pthread_create: %s", errno_s); *out = tt; } static void * task_thread(void *arg) { struct kore_task *t; struct kore_task_thread *tt = arg; kore_debug("task_thread: #%d starting", tt->idx); pthread_mutex_lock(&(tt->lock)); for (;;) { if (TAILQ_EMPTY(&(tt->tasks))) pthread_cond_wait(&(tt->cond), &(tt->lock)); kore_debug("task_thread#%d: woke up", tt->idx); t = TAILQ_FIRST(&(tt->tasks)); TAILQ_REMOVE(&(tt->tasks), t, list); pthread_mutex_unlock(&(tt->lock)); kore_debug("task_thread#%d: executing %p", tt->idx, t); kore_task_set_state(t, KORE_TASK_STATE_RUNNING); kore_task_set_result(t, t->entry(t)); kore_task_finish(t); pthread_mutex_lock(&(tt->lock)); } pthread_exit(NULL); /* NOTREACHED */ return (NULL); } kore-3.3.1/src/timer.c000066400000000000000000000047431347522026400145460ustar00rootroot00000000000000/* * Copyright (c) 2016-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include "kore.h" TAILQ_HEAD(timerlist, kore_timer) kore_timers; void kore_timer_init(void) { TAILQ_INIT(&kore_timers); } struct kore_timer * kore_timer_add(void (*cb)(void *, u_int64_t), u_int64_t interval, void *arg, int flags) { struct kore_timer *timer, *t; timer = kore_malloc(sizeof(*timer)); timer->cb = cb; timer->arg = arg; timer->flags = flags; timer->interval = interval; timer->nextrun = kore_time_ms() + timer->interval; TAILQ_FOREACH(t, &kore_timers, list) { if (t->nextrun > timer->nextrun) { TAILQ_INSERT_BEFORE(t, timer, list); return (timer); } } TAILQ_INSERT_TAIL(&kore_timers, timer, list); return (timer); } void kore_timer_remove(struct kore_timer *timer) { TAILQ_REMOVE(&kore_timers, timer, list); kore_free(timer); } u_int64_t kore_timer_next_run(u_int64_t now) { struct kore_timer *timer; if ((timer = TAILQ_FIRST(&kore_timers)) != NULL) { if (timer->nextrun > now) return (timer->nextrun - now); return (0); } return (KORE_WAIT_INFINITE); } void kore_timer_run(u_int64_t now) { struct kore_timer *timer, *t, *prev; prev = NULL; while ((timer = TAILQ_FIRST(&kore_timers)) != NULL) { if (timer == prev) break; if (timer->nextrun > now) break; TAILQ_REMOVE(&kore_timers, timer, list); timer->cb(timer->arg, now); if (timer->flags & KORE_TIMER_ONESHOT) { kore_free(timer); } else { prev = timer; timer->nextrun = now + timer->interval; TAILQ_FOREACH(t, &kore_timers, list) { if (t->nextrun > timer->nextrun) { TAILQ_INSERT_BEFORE(t, timer, list); break; } } if (t == NULL) TAILQ_INSERT_TAIL(&kore_timers, timer, list); } } } kore-3.3.1/src/utils.c000066400000000000000000000267501347522026400145700ustar00rootroot00000000000000/* * Copyright (c) 2013-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include #include #include #include #include #include #include "kore.h" static struct { char *name; int value; } month_names[] = { { "Jan", 0 }, { "Feb", 1 }, { "Mar", 2 }, { "Apr", 3 }, { "May", 4 }, { "Jun", 5 }, { "Jul", 6 }, { "Aug", 7 }, { "Sep", 8 }, { "Oct", 9 }, { "Nov", 10 }, { "Dec", 11 }, { NULL, 0 }, }; static void fatal_log(const char *, va_list); static char b64table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; #if defined(KORE_DEBUG) void kore_debug_internal(char *file, int line, const char *fmt, ...) { va_list args; char buf[2048]; va_start(args, fmt); (void)vsnprintf(buf, sizeof(buf), fmt, args); va_end(args); printf("[%d] %s:%d - %s\n", kore_pid, file, line, buf); } #endif void kore_log_init(void) { #if defined(KORE_SINGLE_BINARY) extern const char *__progname; const char *name = __progname; #else const char *name = "kore"; #endif if (!foreground) openlog(name, LOG_NDELAY | LOG_PID, LOG_DAEMON); } void kore_log(int prio, const char *fmt, ...) { va_list args; char buf[2048], tmp[32]; va_start(args, fmt); (void)vsnprintf(buf, sizeof(buf), fmt, args); va_end(args); if (worker != NULL) { (void)snprintf(tmp, sizeof(tmp), "wrk %d", worker->id); #if !defined(KORE_NO_TLS) if (worker->id == KORE_WORKER_KEYMGR) (void)kore_strlcpy(tmp, "keymgr", sizeof(tmp)); #endif if (foreground) printf("[%s]: %s\n", tmp, buf); else syslog(prio, "[%s]: %s", tmp, buf); } else { if (foreground) printf("[parent]: %s\n", buf); else syslog(prio, "[parent]: %s", buf); } } size_t kore_strlcpy(char *dst, const char *src, const size_t len) { char *d = dst; const char *s = src; const char *end = dst + len - 1; if (len == 0) fatal("kore_strlcpy: len == 0"); while ((*d = *s) != '\0') { if (d == end) { *d = '\0'; break; } d++; s++; } while (*s != '\0') s++; return (s - src); } int kore_snprintf(char *str, size_t size, int *len, const char *fmt, ...) { int l; va_list args; va_start(args, fmt); l = vsnprintf(str, size, fmt, args); va_end(args); if (l == -1 || (size_t)l >= size) return (KORE_RESULT_ERROR); if (len != NULL) *len = l; return (KORE_RESULT_OK); } long long kore_strtonum(const char *str, int base, long long min, long long max, int *err) { long long l; char *ep; if (min > max) { *err = KORE_RESULT_ERROR; return (0); } errno = 0; l = strtoll(str, &ep, base); if (errno != 0 || str == ep || *ep != '\0') { *err = KORE_RESULT_ERROR; return (0); } if (l < min) { *err = KORE_RESULT_ERROR; return (0); } if (l > max) { *err = KORE_RESULT_ERROR; return (0); } *err = KORE_RESULT_OK; return (l); } u_int64_t kore_strtonum64(const char *str, int sign, int *err) { u_int64_t l; long long ll; char *ep; int check; l = 0; check = 1; ll = strtoll(str, &ep, 10); if ((errno == EINVAL || errno == ERANGE) && (ll == LLONG_MIN || ll == LLONG_MAX)) { if (sign) { *err = KORE_RESULT_ERROR; return (0); } check = 0; } if (!sign) { l = strtoull(str, &ep, 10); if ((errno == EINVAL || errno == ERANGE) && l == ULONG_MAX) { *err = KORE_RESULT_ERROR; return (0); } if (check && ll < 0) { *err = KORE_RESULT_ERROR; return (0); } } if (str == ep || *ep != '\0') { *err = KORE_RESULT_ERROR; return (0); } *err = KORE_RESULT_OK; return ((sign) ? (u_int64_t)ll : l); } double kore_strtodouble(const char *str, long double min, long double max, int *err) { double d; char *ep; if (min > max) { *err = KORE_RESULT_ERROR; return (0); } errno = 0; d = strtod(str, &ep); if (d == 0 || errno == ERANGE || str == ep || *ep != '\0') { *err = KORE_RESULT_ERROR; return (0); } if (d < min) { *err = KORE_RESULT_ERROR; return (0); } if (d > max) { *err = KORE_RESULT_ERROR; return (0); } *err = KORE_RESULT_OK; return (d); } int kore_split_string(char *input, const char *delim, char **out, size_t ele) { int count; char **ap; if (ele == 0) return (0); count = 0; for (ap = out; ap < &out[ele - 1] && (*ap = strsep(&input, delim)) != NULL;) { if (**ap != '\0') { ap++; count++; } } *ap = NULL; return (count); } void kore_strip_chars(char *in, const char strip, char **out) { u_int32_t len; char *s, *p; len = strlen(in); *out = kore_malloc(len + 1); p = *out; for (s = in; s < (in + len); s++) { if (*s == strip) continue; *p++ = *s; } *p = '\0'; } time_t kore_date_to_time(const char *http_date) { time_t t; int err, i; struct tm tm, *ltm; char *args[7], *tbuf[5], *sdup; time(&t); ltm = localtime(&t); sdup = kore_strdup(http_date); t = KORE_RESULT_ERROR; if (kore_split_string(sdup, " ", args, 7) != 6) { kore_debug("misformed http-date: '%s'", http_date); goto out; } memset(&tm, 0, sizeof(tm)); tm.tm_year = kore_strtonum(args[3], 10, 1900, 2068, &err) - 1900; if (err == KORE_RESULT_ERROR) { kore_debug("misformed year in http-date: '%s'", http_date); goto out; } for (i = 0; month_names[i].name != NULL; i++) { if (!strcmp(month_names[i].name, args[2])) { tm.tm_mon = month_names[i].value; break; } } if (month_names[i].name == NULL) { kore_debug("misformed month in http-date: '%s'", http_date); goto out; } tm.tm_mday = kore_strtonum(args[1], 10, 1, 31, &err); if (err == KORE_RESULT_ERROR) { kore_debug("misformed mday in http-date: '%s'", http_date); goto out; } if (kore_split_string(args[4], ":", tbuf, 5) != 3) { kore_debug("misformed HH:MM:SS in http-date: '%s'", http_date); goto out; } tm.tm_hour = kore_strtonum(tbuf[0], 10, 0, 23, &err); if (err == KORE_RESULT_ERROR) { kore_debug("misformed hour in http-date: '%s'", http_date); goto out; } tm.tm_min = kore_strtonum(tbuf[1], 10, 0, 59, &err); if (err == KORE_RESULT_ERROR) { kore_debug("misformed minutes in http-date: '%s'", http_date); goto out; } tm.tm_sec = kore_strtonum(tbuf[2], 10, 0, 60, &err); if (err == KORE_RESULT_ERROR) { kore_debug("misformed seconds in http-date: '%s'", http_date); goto out; } tm.tm_isdst = ltm->tm_isdst; t = mktime(&tm) + ltm->tm_gmtoff; if (t == -1) { t = 0; kore_debug("mktime() on '%s' failed", http_date); } out: kore_free(sdup); return (t); } char * kore_time_to_date(time_t now) { struct tm *tm; static time_t last = 0; static char tbuf[32]; if (now != last) { last = now; tm = gmtime(&now); if (!strftime(tbuf, sizeof(tbuf), "%a, %d %b %Y %T GMT", tm)) { kore_debug("strftime() gave us NULL (%ld)", now); return (NULL); } } return (tbuf); } u_int64_t kore_time_ms(void) { struct timespec ts; (void)clock_gettime(CLOCK_MONOTONIC, &ts); return ((u_int64_t)(ts.tv_sec * 1000 + (ts.tv_nsec / 1000000))); } int kore_base64_encode(const void *data, size_t len, char **out) { u_int8_t n; size_t nb; const u_int8_t *ptr; u_int32_t bytes; struct kore_buf result; nb = 0; ptr = data; kore_buf_init(&result, (len / 3) * 4); while (len > 0) { if (len > 2) { nb = 3; bytes = *ptr++ << 16; bytes |= *ptr++ << 8; bytes |= *ptr++; } else if (len > 1) { nb = 2; bytes = *ptr++ << 16; bytes |= *ptr++ << 8; } else if (len == 1) { nb = 1; bytes = *ptr++ << 16; } else { kore_buf_cleanup(&result); return (KORE_RESULT_ERROR); } n = (bytes >> 18) & 0x3f; kore_buf_append(&result, &(b64table[n]), 1); n = (bytes >> 12) & 0x3f; kore_buf_append(&result, &(b64table[n]), 1); if (nb > 1) { n = (bytes >> 6) & 0x3f; kore_buf_append(&result, &(b64table[n]), 1); if (nb > 2) { n = bytes & 0x3f; kore_buf_append(&result, &(b64table[n]), 1); } } len -= nb; } switch (nb) { case 1: kore_buf_appendf(&result, "=="); break; case 2: kore_buf_appendf(&result, "="); break; case 3: break; default: kore_buf_cleanup(&result); return (KORE_RESULT_ERROR); } /* result.data gets taken over so no need to cleanup result. */ *out = kore_buf_stringify(&result, NULL); return (KORE_RESULT_OK); } int kore_base64_decode(const char *in, u_int8_t **out, size_t *olen) { int i, c; struct kore_buf *res; u_int8_t d, n, o; u_int32_t b, len, idx; i = 4; b = 0; d = 0; c = 0; len = strlen(in); res = kore_buf_alloc(len); for (idx = 0; idx < len; idx++) { c = in[idx]; if (c == '=') break; for (o = 0; o < sizeof(b64table); o++) { if (b64table[o] == c) { d = o; break; } } if (o == sizeof(b64table)) { *out = NULL; kore_buf_free(res); return (KORE_RESULT_ERROR); } b |= (d & 0x3f) << ((i - 1) * 6); i--; if (i == 0) { for (i = 2; i >= 0; i--) { n = (b >> (8 * i)); kore_buf_append(res, &n, 1); } b = 0; i = 4; } } if (c == '=') { if (i > 2) { *out = NULL; kore_buf_free(res); return (KORE_RESULT_ERROR); } o = i; for (i = 2; i >= o; i--) { n = (b >> (8 * i)); kore_buf_append(res, &n, 1); } } *out = kore_buf_release(res, olen); return (KORE_RESULT_OK); } void * kore_mem_find(void *src, size_t slen, const void *needle, size_t len) { size_t pos; for (pos = 0; pos < slen; pos++) { if ( *((u_int8_t *)src + pos) != *(const u_int8_t *)needle) continue; if ((slen - pos) < len) return (NULL); if (!memcmp((u_int8_t *)src + pos, needle, len)) return ((u_int8_t *)src + pos); } return (NULL); } char * kore_text_trim(char *string, size_t len) { char *end; if (len == 0) return (string); end = (string + len) - 1; while (isspace(*(unsigned char *)string) && string < end) string++; while (isspace(*(unsigned char *)end) && end > string) *(end)-- = '\0'; return (string); } char * kore_read_line(FILE *fp, char *in, size_t len) { char *p, *t; if (fgets(in, len, fp) == NULL) return (NULL); p = in; in[strcspn(in, "\n")] = '\0'; while (isspace(*(unsigned char *)p)) p++; if (p[0] == '#' || p[0] == '\0') { p[0] = '\0'; return (p); } for (t = p; *t != '\0'; t++) { if (*t == '\t') *t = ' '; } return (p); } void fatal(const char *fmt, ...) { va_list args; va_start(args, fmt); fatal_log(fmt, args); va_end(args); exit(1); } void fatalx(const char *fmt, ...) { va_list args; /* In case people call fatalx() from the parent context. */ if (worker != NULL) kore_msg_send(KORE_MSG_PARENT, KORE_MSG_SHUTDOWN, NULL, 0); va_start(args, fmt); fatal_log(fmt, args); va_end(args); exit(1); } static void fatal_log(const char *fmt, va_list args) { char buf[2048]; extern const char *kore_progname; (void)vsnprintf(buf, sizeof(buf), fmt, args); if (!foreground) kore_log(LOG_ERR, "%s", buf); #if !defined(KORE_NO_TLS) if (worker != NULL && worker->id == KORE_WORKER_KEYMGR) kore_keymgr_cleanup(1); #endif printf("%s: %s\n", kore_progname, buf); } kore-3.3.1/src/validator.c000066400000000000000000000062161347522026400154100ustar00rootroot00000000000000/* * Copyright (c) 2013-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include "kore.h" TAILQ_HEAD(, kore_validator) validators; void kore_validator_init(void) { TAILQ_INIT(&validators); } int kore_validator_add(const char *name, u_int8_t type, const char *arg) { int ret; struct kore_validator *val; val = kore_malloc(sizeof(*val)); val->type = type; switch (val->type) { case KORE_VALIDATOR_TYPE_REGEX: ret = regcomp(&(val->rctx), arg, REG_EXTENDED | REG_NOSUB); if (ret) { kore_free(val); kore_log(LOG_NOTICE, "validator %s has bad regex %s (%d)", name, arg, ret); return (KORE_RESULT_ERROR); } break; case KORE_VALIDATOR_TYPE_FUNCTION: val->rcall = kore_runtime_getcall(arg); if (val->rcall == NULL) { kore_free(val); kore_log(LOG_NOTICE, "validator %s has undefined callback %s", name, arg); return (KORE_RESULT_ERROR); } break; default: kore_free(val); return (KORE_RESULT_ERROR); } val->arg = kore_strdup(arg); val->name = kore_strdup(name); TAILQ_INSERT_TAIL(&validators, val, list); return (KORE_RESULT_OK); } int kore_validator_run(struct http_request *req, const char *name, char *data) { struct kore_validator *val; TAILQ_FOREACH(val, &validators, list) { if (strcmp(val->name, name)) continue; return (kore_validator_check(req, val, data)); } return (KORE_RESULT_ERROR); } int kore_validator_check(struct http_request *req, struct kore_validator *val, const void *data) { int r; switch (val->type) { case KORE_VALIDATOR_TYPE_REGEX: if (!regexec(&(val->rctx), data, 0, NULL, 0)) r = KORE_RESULT_OK; else r = KORE_RESULT_ERROR; break; case KORE_VALIDATOR_TYPE_FUNCTION: r = kore_runtime_validator(val->rcall, req, data); break; default: r = KORE_RESULT_ERROR; kore_log(LOG_NOTICE, "invalid type %d for validator %s", val->type, val->name); break; } return (r); } void kore_validator_reload(void) { struct kore_validator *val; TAILQ_FOREACH(val, &validators, list) { if (val->type != KORE_VALIDATOR_TYPE_FUNCTION) continue; kore_free(val->rcall); val->rcall = kore_runtime_getcall(val->arg); if (val->rcall == NULL) fatal("no function for validator %s found", val->arg); } } struct kore_validator * kore_validator_lookup(const char *name) { struct kore_validator *val; TAILQ_FOREACH(val, &validators, list) { if (!strcmp(val->name, name)) return (val); } return (NULL); } kore-3.3.1/src/websocket.c000066400000000000000000000231671347522026400154150ustar00rootroot00000000000000/* * Copyright (c) 2014-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include #include #include "kore.h" #include "http.h" #define WEBSOCKET_FRAME_HDR 2 #define WEBSOCKET_MASK_LEN 4 #define WEBSOCKET_FRAME_MAXLEN 16384 #define WEBSOCKET_PAYLOAD_SINGLE 125 #define WEBSOCKET_PAYLOAD_EXTEND_1 126 #define WEBSOCKET_PAYLOAD_EXTEND_2 127 #define WEBSOCKET_OPCODE_MASK 0x0f #define WEBSOCKET_FRAME_LENGTH(x) ((x) & ~(1 << 7)) #define WEBSOCKET_HAS_MASK(x) ((x) & (1 << 7)) #define WEBSOCKET_HAS_FINFLAG(x) ((x) & (1 << 7)) #define WEBSOCKET_RSV(x, i) ((x) & (1 << (7 - i))) #define WEBSOCKET_SERVER_RESPONSE "258EAFA5-E914-47DA-95CA-C5AB0DC85B11" u_int64_t kore_websocket_timeout = 120000; u_int64_t kore_websocket_maxframe = 16384; static int websocket_recv_frame(struct netbuf *); static int websocket_recv_opcode(struct netbuf *); static void websocket_disconnect(struct connection *); static void websocket_frame_build(struct kore_buf *, u_int8_t, const void *, size_t); void kore_websocket_handshake(struct http_request *req, const char *onconnect, const char *onmessage, const char *ondisconnect) { SHA_CTX sctx; struct kore_buf *buf; char *base64; const char *key, *version; u_int8_t digest[SHA_DIGEST_LENGTH]; if (!http_request_header(req, "sec-websocket-key", &key)) { http_response(req, HTTP_STATUS_BAD_REQUEST, NULL, 0); return; } if (!http_request_header(req, "sec-websocket-version", &version)) { http_response_header(req, "sec-websocket-version", "13"); http_response(req, HTTP_STATUS_BAD_REQUEST, NULL, 0); return; } if (strcmp(version, "13")) { http_response_header(req, "sec-websocket-version", "13"); http_response(req, HTTP_STATUS_BAD_REQUEST, NULL, 0); return; } buf = kore_buf_alloc(128); kore_buf_appendf(buf, "%s%s", key, WEBSOCKET_SERVER_RESPONSE); (void)SHA1_Init(&sctx); (void)SHA1_Update(&sctx, buf->data, buf->offset); (void)SHA1_Final(digest, &sctx); kore_buf_free(buf); if (!kore_base64_encode(digest, sizeof(digest), &base64)) { kore_debug("failed to base64 encode digest"); http_response(req, HTTP_STATUS_INTERNAL_ERROR, NULL, 0); return; } http_response_header(req, "upgrade", "websocket"); http_response_header(req, "connection", "upgrade"); http_response_header(req, "sec-websocket-accept", base64); kore_free(base64); kore_debug("%p: new websocket connection", req->owner); req->owner->proto = CONN_PROTO_WEBSOCKET; http_response(req, HTTP_STATUS_SWITCHING_PROTOCOLS, NULL, 0); net_recv_reset(req->owner, WEBSOCKET_FRAME_HDR, websocket_recv_opcode); req->owner->disconnect = websocket_disconnect; req->owner->rnb->flags &= ~NETBUF_CALL_CB_ALWAYS; req->owner->http_timeout = 0; req->owner->idle_timer.start = kore_time_ms(); req->owner->idle_timer.length = kore_websocket_timeout; if (onconnect != NULL) { req->owner->ws_connect = kore_runtime_getcall(onconnect); if (req->owner->ws_connect == NULL) fatal("no symbol '%s' for ws_connect", onconnect); } else { req->owner->ws_connect = NULL; } if (onmessage != NULL) { req->owner->ws_message = kore_runtime_getcall(onmessage); if (req->owner->ws_message == NULL) fatal("no symbol '%s' for ws_message", onmessage); } else { req->owner->ws_message = NULL; } if (ondisconnect != NULL) { req->owner->ws_disconnect = kore_runtime_getcall(ondisconnect); if (req->owner->ws_disconnect == NULL) fatal("no symbol '%s' for ws_disconnect", ondisconnect); } else { req->owner->ws_disconnect = NULL; } if (req->owner->ws_connect != NULL) kore_runtime_wsconnect(req->owner->ws_connect, req->owner); } int kore_websocket_send_clean(struct netbuf *nb) { kore_free(nb->buf); return (0); } void kore_websocket_send(struct connection *c, u_int8_t op, const void *data, size_t len) { struct kore_buf frame; kore_buf_init(&frame, len); websocket_frame_build(&frame, op, data, len); net_send_stream(c, frame.data, frame.offset, kore_websocket_send_clean, NULL); /* net_send_stream() takes over the buffer data pointer. */ frame.data = NULL; kore_buf_cleanup(&frame); net_send_flush(c); } void kore_websocket_broadcast(struct connection *src, u_int8_t op, const void *data, size_t len, int scope) { struct connection *c; struct kore_buf *frame; frame = kore_buf_alloc(len); websocket_frame_build(frame, op, data, len); TAILQ_FOREACH(c, &connections, list) { if (c != src && c->proto == CONN_PROTO_WEBSOCKET) { net_send_queue(c, frame->data, frame->offset); net_send_flush(c); } } if (scope == WEBSOCKET_BROADCAST_GLOBAL) { kore_msg_send(KORE_MSG_WORKER_ALL, KORE_MSG_WEBSOCKET, frame->data, frame->offset); } kore_buf_free(frame); } static void websocket_frame_build(struct kore_buf *frame, u_int8_t op, const void *data, size_t len) { u_int8_t len_1; u_int16_t len16; u_int64_t len64; if (len > WEBSOCKET_PAYLOAD_SINGLE) { if (len <= USHRT_MAX) len_1 = WEBSOCKET_PAYLOAD_EXTEND_1; else len_1 = WEBSOCKET_PAYLOAD_EXTEND_2; } else { len_1 = len; } op |= (1 << 7); kore_buf_append(frame, &op, sizeof(op)); len_1 &= ~(1 << 7); kore_buf_append(frame, &len_1, sizeof(len_1)); if (len_1 > WEBSOCKET_PAYLOAD_SINGLE) { switch (len_1) { case WEBSOCKET_PAYLOAD_EXTEND_1: net_write16((u_int8_t *)&len16, len); kore_buf_append(frame, &len16, sizeof(len16)); break; case WEBSOCKET_PAYLOAD_EXTEND_2: net_write64((u_int8_t *)&len64, len); kore_buf_append(frame, &len64, sizeof(len64)); break; } } if (data != NULL && len > 0) kore_buf_append(frame, data, len); } static int websocket_recv_opcode(struct netbuf *nb) { u_int8_t op, len; struct connection *c = nb->owner; if (!WEBSOCKET_HAS_MASK(nb->buf[1])) { kore_debug("%p: frame did not have a mask set", c); return (KORE_RESULT_ERROR); } if (WEBSOCKET_RSV(nb->buf[0], 1) || WEBSOCKET_RSV(nb->buf[0], 2) || WEBSOCKET_RSV(nb->buf[0], 3)) { kore_debug("%p: RSV bits are not zero", c); return (KORE_RESULT_ERROR); } len = WEBSOCKET_FRAME_LENGTH(nb->buf[1]); op = nb->buf[0] & WEBSOCKET_OPCODE_MASK; switch (op) { case WEBSOCKET_OP_CONT: case WEBSOCKET_OP_TEXT: case WEBSOCKET_OP_BINARY: break; case WEBSOCKET_OP_CLOSE: case WEBSOCKET_OP_PING: case WEBSOCKET_OP_PONG: if (len > WEBSOCKET_PAYLOAD_SINGLE || !WEBSOCKET_HAS_FINFLAG(nb->buf[0])) { kore_debug("%p: large or fragmented control frame", c); return (KORE_RESULT_ERROR); } break; default: kore_debug("%p: bad websocket op %d", c, op); return (KORE_RESULT_ERROR); } switch (len) { case WEBSOCKET_PAYLOAD_EXTEND_1: len += sizeof(u_int16_t); break; case WEBSOCKET_PAYLOAD_EXTEND_2: len += sizeof(u_int64_t); break; } len += WEBSOCKET_MASK_LEN; net_recv_expand(c, len, websocket_recv_frame); return (KORE_RESULT_OK); } static int websocket_recv_frame(struct netbuf *nb) { struct connection *c; int ret; u_int64_t len, i, total; u_int8_t op, moff, extra; c = nb->owner; op = nb->buf[0] & WEBSOCKET_OPCODE_MASK; len = WEBSOCKET_FRAME_LENGTH(nb->buf[1]); switch (len) { case WEBSOCKET_PAYLOAD_EXTEND_1: moff = 4; extra = sizeof(u_int16_t); len = net_read16(&nb->buf[2]); break; case WEBSOCKET_PAYLOAD_EXTEND_2: moff = 10; extra = sizeof(u_int64_t); len = net_read64(&nb->buf[2]); break; default: extra = 0; moff = 2; break; } if (len > kore_websocket_maxframe) { kore_debug("%p: frame too big", c); return (KORE_RESULT_ERROR); } extra += WEBSOCKET_FRAME_HDR; total = len + extra + WEBSOCKET_MASK_LEN; if (total > nb->b_len) { total -= nb->b_len; net_recv_expand(c, total, websocket_recv_frame); return (KORE_RESULT_OK); } if (total != nb->b_len) return (KORE_RESULT_ERROR); for (i = 0; i < len; i++) nb->buf[moff + 4 + i] ^= nb->buf[moff + (i % 4)]; ret = KORE_RESULT_OK; switch (op) { case WEBSOCKET_OP_PONG: break; case WEBSOCKET_OP_CONT: ret = KORE_RESULT_ERROR; kore_log(LOG_ERR, "%p: we do not support op 0x%02x yet", (void *)c, op); break; case WEBSOCKET_OP_TEXT: case WEBSOCKET_OP_BINARY: if (c->ws_message != NULL) { kore_runtime_wsmessage(c->ws_message, c, op, &nb->buf[moff + 4], len); } break; case WEBSOCKET_OP_CLOSE: c->evt.flags &= ~KORE_EVENT_READ; if (!(c->flags & CONN_WS_CLOSE_SENT)) { c->flags |= CONN_WS_CLOSE_SENT; kore_websocket_send(c, WEBSOCKET_OP_CLOSE, NULL, 0); } kore_connection_disconnect(c); break; case WEBSOCKET_OP_PING: kore_websocket_send(c, WEBSOCKET_OP_PONG, &nb->buf[moff + 4], len); break; default: kore_debug("%p: bad websocket op %d", c, op); return (KORE_RESULT_ERROR); } net_recv_reset(c, WEBSOCKET_FRAME_HDR, websocket_recv_opcode); return (ret); } static void websocket_disconnect(struct connection *c) { if (c->ws_disconnect != NULL) kore_runtime_wsdisconnect(c->ws_disconnect, c); if (!(c->flags & CONN_WS_CLOSE_SENT)) { c->flags |= CONN_WS_CLOSE_SENT; c->evt.flags &= ~KORE_EVENT_READ; kore_websocket_send(c, WEBSOCKET_OP_CLOSE, NULL, 0); } } kore-3.3.1/src/worker.c000066400000000000000000000403621347522026400147340ustar00rootroot00000000000000/* * Copyright (c) 2013-2019 Joris Vink * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include #include #include #include #if !defined(KORE_NO_TLS) #include #endif #include #include #include #include #include "kore.h" #if !defined(KORE_NO_HTTP) #include "http.h" #endif #if defined(KORE_USE_PGSQL) #include "pgsql.h" #endif #if defined(KORE_USE_TASKS) #include "tasks.h" #endif #if defined(KORE_USE_PYTHON) #include "python_api.h" #endif #if !defined(WAIT_ANY) #define WAIT_ANY (-1) #endif #if !defined(KORE_NO_TLS) #define WORKER_SOLO_COUNT 2 #else #define WORKER_SOLO_COUNT 1 #endif #define WORKER(id) \ (struct kore_worker *)((u_int8_t *)kore_workers + \ (sizeof(struct kore_worker) * id)) struct wlock { volatile int lock; pid_t current; }; static int worker_trylock(void); static void worker_unlock(void); static inline int worker_acceptlock_obtain(void); static inline void worker_acceptlock_release(void); static void worker_accept_avail(struct kore_msg *, const void *); #if !defined(KORE_NO_TLS) static void worker_entropy_recv(struct kore_msg *, const void *); static void worker_keymgr_response(struct kore_msg *, const void *); static int worker_keymgr_response_verify(struct kore_msg *, const void *, struct kore_domain **); #endif static int accept_avail; static struct kore_worker *kore_workers; static int worker_no_lock; static int shm_accept_key; static struct wlock *accept_lock; struct kore_worker *worker = NULL; u_int8_t worker_set_affinity = 1; u_int32_t worker_accept_threshold = 16; u_int32_t worker_rlimit_nofiles = 768; u_int32_t worker_max_connections = 512; u_int32_t worker_active_connections = 0; int worker_policy = KORE_WORKER_POLICY_RESTART; void kore_worker_init(void) { size_t len; struct kore_worker *kw; u_int16_t i, cpu; worker_no_lock = 0; if (worker_count == 0) worker_count = cpu_count; #if !defined(KORE_NO_TLS) /* account for the key manager. */ worker_count += 1; #endif len = sizeof(*accept_lock) + (sizeof(struct kore_worker) * worker_count); shm_accept_key = shmget(IPC_PRIVATE, len, IPC_CREAT | IPC_EXCL | 0700); if (shm_accept_key == -1) fatal("kore_worker_init(): shmget() %s", errno_s); if ((accept_lock = shmat(shm_accept_key, NULL, 0)) == (void *)-1) fatal("kore_worker_init(): shmat() %s", errno_s); accept_lock->lock = 0; accept_lock->current = 0; kore_workers = (struct kore_worker *)((u_int8_t *)accept_lock + sizeof(*accept_lock)); memset(kore_workers, 0, sizeof(struct kore_worker) * worker_count); kore_debug("kore_worker_init(): system has %d cpu's", cpu_count); kore_debug("kore_worker_init(): starting %d workers", worker_count); if (worker_count > cpu_count) { kore_debug("kore_worker_init(): more workers than cpu's"); } /* Setup log buffers. */ for (i = 0; i < worker_count; i++) { kw = WORKER(i); kw->lb.offset = 0; } cpu = 0; for (i = 0; i < worker_count; i++) { kore_worker_spawn(i, cpu++); if (cpu == cpu_count) cpu = 0; } } void kore_worker_spawn(u_int16_t id, u_int16_t cpu) { struct kore_worker *kw; kw = WORKER(id); kw->id = id; kw->cpu = cpu; kw->has_lock = 0; kw->active_hdlr = NULL; if (socketpair(AF_UNIX, SOCK_STREAM, 0, kw->pipe) == -1) fatal("socketpair(): %s", errno_s); if (!kore_connection_nonblock(kw->pipe[0], 0) || !kore_connection_nonblock(kw->pipe[1], 0)) fatal("could not set pipe fds to nonblocking: %s", errno_s); kw->pid = fork(); if (kw->pid == -1) fatal("could not spawn worker child: %s", errno_s); if (kw->pid == 0) { kw->pid = getpid(); kore_worker_entry(kw); /* NOTREACHED */ } } struct kore_worker * kore_worker_data(u_int8_t id) { if (id >= worker_count) fatal("id %u too large for worker count", id); return (WORKER(id)); } void kore_worker_shutdown(void) { struct kore_worker *kw; pid_t pid; int status; u_int16_t id, done; if (!kore_quiet) { kore_log(LOG_NOTICE, "waiting for workers to drain and shutdown"); } for (;;) { for (id = 0; id < worker_count; id++) { kw = WORKER(id); if (kw->pid != 0) { pid = waitpid(kw->pid, &status, 0); if (pid == -1) continue; kw->pid = 0; } } done = 0; for (id = 0; id < worker_count; id++) { kw = WORKER(id); if (kw->pid == 0) done++; } if (done == worker_count) break; } if (shmctl(shm_accept_key, IPC_RMID, NULL) == -1) { kore_log(LOG_NOTICE, "failed to deleted shm segment: %s", errno_s); } } void kore_worker_dispatch_signal(int sig) { u_int16_t id; struct kore_worker *kw; for (id = 0; id < worker_count; id++) { kw = WORKER(id); if (kill(kw->pid, sig) == -1) { kore_debug("kill(%d, %d): %s", kw->pid, sig, errno_s); } } } void kore_worker_privdrop(const char *runas, const char *root) { rlim_t fd; struct rlimit rl; struct passwd *pw = NULL; if (root == NULL) fatalx("no root directory for kore_worker_privdrop"); /* Must happen before chroot. */ if (skip_runas == 0) { if (runas == NULL) fatalx("no runas user given and -r not specified"); pw = getpwnam(runas); if (pw == NULL) { fatalx("cannot getpwnam(\"%s\") for user: %s", runas, errno_s); } } if (skip_chroot == 0) { if (chroot(root) == -1) { fatalx("cannot chroot(\"%s\"): %s", root, errno_s); } if (chdir("/") == -1) fatalx("cannot chdir(\"/\"): %s", errno_s); } else { if (chdir(root) == -1) fatalx("cannot chdir(\"%s\"): %s", root, errno_s); } if (getrlimit(RLIMIT_NOFILE, &rl) == -1) { kore_log(LOG_WARNING, "getrlimit(RLIMIT_NOFILE): %s", errno_s); } else { for (fd = 0; fd < rl.rlim_cur; fd++) { if (fcntl(fd, F_GETFD, NULL) != -1) { worker_rlimit_nofiles++; } } } rl.rlim_cur = worker_rlimit_nofiles; rl.rlim_max = worker_rlimit_nofiles; if (setrlimit(RLIMIT_NOFILE, &rl) == -1) { kore_log(LOG_ERR, "setrlimit(RLIMIT_NOFILE, %u): %s", worker_rlimit_nofiles, errno_s); } if (skip_runas == 0) { if (setgroups(1, &pw->pw_gid) || #if defined(__MACH__) || defined(NetBSD) setgid(pw->pw_gid) || setegid(pw->pw_gid) || setuid(pw->pw_uid) || seteuid(pw->pw_uid)) #else setresgid(pw->pw_gid, pw->pw_gid, pw->pw_gid) || setresuid(pw->pw_uid, pw->pw_uid, pw->pw_uid)) #endif fatalx("cannot drop privileges"); } #if defined(KORE_USE_PLATFORM_PLEDGE) kore_platform_pledge(); #endif } void kore_worker_entry(struct kore_worker *kw) { struct kore_runtime_call *rcall; char buf[16]; int quit, had_lock; u_int64_t netwait, now, next_prune; #if !defined(KORE_NO_TLS) u_int64_t last_seed; #endif worker = kw; (void)snprintf(buf, sizeof(buf), "[wrk %d]", kw->id); #if !defined(KORE_NO_TLS) if (kw->id == KORE_WORKER_KEYMGR) (void)snprintf(buf, sizeof(buf), "[keymgr]"); #endif kore_platform_proctitle(buf); if (worker_set_affinity == 1) kore_platform_worker_setcpu(kw); kore_pid = kw->pid; kore_signal_setup(); #if !defined(KORE_NO_TLS) if (kw->id == KORE_WORKER_KEYMGR) { kore_keymgr_run(); exit(0); } #endif net_init(); kore_connection_init(); kore_platform_event_init(); kore_msg_worker_init(); kore_worker_privdrop(kore_runas_user, kore_root_path); #if !defined(KORE_NO_HTTP) http_init(); kore_filemap_resolve_paths(); kore_accesslog_worker_init(); #endif kore_timer_init(); kore_fileref_init(); kore_domain_keymgr_init(); quit = 0; had_lock = 0; next_prune = 0; accept_avail = 1; worker_active_connections = 0; #if defined(KORE_USE_PGSQL) kore_pgsql_sys_init(); #endif #if defined(KORE_USE_TASKS) kore_task_init(); #endif #if !defined(KORE_NO_TLS) last_seed = 0; kore_msg_register(KORE_MSG_CRL, worker_keymgr_response); kore_msg_register(KORE_MSG_ENTROPY_RESP, worker_entropy_recv); kore_msg_register(KORE_MSG_CERTIFICATE, worker_keymgr_response); if (worker->restarted) { kore_msg_send(KORE_WORKER_KEYMGR, KORE_MSG_CERTIFICATE_REQ, NULL, 0); } #endif kore_msg_register(KORE_MSG_ACCEPT_AVAILABLE, worker_accept_avail); if (nlisteners == 0) worker_no_lock = 1; if (!kore_quiet) { kore_log(LOG_NOTICE, "worker %d started (cpu#%d, pid#%d)", kw->id, kw->cpu, kw->pid); } rcall = kore_runtime_getcall("kore_worker_configure"); if (rcall != NULL) { kore_runtime_execute(rcall); kore_free(rcall); } kore_module_onload(); worker->restarted = 0; for (;;) { now = kore_time_ms(); #if !defined(KORE_NO_TLS) if ((now - last_seed) > KORE_RESEED_TIME) { kore_msg_send(KORE_WORKER_KEYMGR, KORE_MSG_ENTROPY_REQ, NULL, 0); last_seed = now; } #endif if (!worker->has_lock && accept_avail) { accept_avail = 0; if (worker_acceptlock_obtain()) { if (had_lock == 0) { kore_platform_enable_accept(); had_lock = 1; } } } netwait = kore_timer_next_run(now); if (netwait == KORE_WAIT_INFINITE && http_request_count > 0) netwait = 100; kore_platform_event_wait(netwait); now = kore_time_ms(); if (worker->has_lock) worker_acceptlock_release(); if (!worker->has_lock) { if (had_lock == 1) { had_lock = 0; kore_platform_disable_accept(); } } if (sig_recv != 0) { switch (sig_recv) { case SIGHUP: kore_module_reload(1); break; case SIGQUIT: case SIGINT: case SIGTERM: quit = 1; break; case SIGCHLD: #if defined(KORE_USE_PYTHON) kore_python_proc_reap(); #endif break; default: break; } sig_recv = 0; } if (quit) break; kore_timer_run(now); #if !defined(KORE_NO_HTTP) http_process(); #endif #if defined(KORE_USE_PYTHON) kore_python_coro_run(); #endif if (next_prune <= now) { kore_connection_check_timeout(now); kore_connection_prune(KORE_CONNECTION_PRUNE_DISCONNECT); next_prune = now + 500; } } rcall = kore_runtime_getcall("kore_worker_teardown"); if (rcall != NULL) { kore_runtime_execute(rcall); kore_free(rcall); } kore_platform_event_cleanup(); kore_connection_cleanup(); kore_domain_cleanup(); kore_module_cleanup(); #if !defined(KORE_NO_HTTP) http_cleanup(); #endif net_cleanup(); #if defined(KORE_USE_PYTHON) kore_python_cleanup(); #endif #if defined(KORE_USE_PGSQL) kore_pgsql_sys_cleanup(); #endif kore_debug("worker %d shutting down", kw->id); kore_mem_cleanup(); exit(0); } void kore_worker_reap(void) { u_int16_t id; pid_t pid; struct kore_worker *kw; const char *func; int status; for (;;) { pid = waitpid(WAIT_ANY, &status, WNOHANG); if (pid == -1) { if (errno == ECHILD) return; if (errno == EINTR) continue; kore_log(LOG_ERR, "failed to wait for children: %s", errno_s); return; } break; } if (pid == 0) return; for (id = 0; id < worker_count; id++) { kw = WORKER(id); if (kw->pid != pid) continue; if (!kore_quiet) { kore_log(LOG_NOTICE, "worker %d (%d) exited with status %d", kw->id, pid, status); } func = "none"; #if !defined(KORE_NO_HTTP) if (kw->active_hdlr != NULL) func = kw->active_hdlr->func; #endif kore_log(LOG_NOTICE, "worker %d (pid: %d) (hdlr: %s) gone", kw->id, kw->pid, func); #if !defined(KORE_NO_TLS) if (id == KORE_WORKER_KEYMGR) { kore_log(LOG_CRIT, "keymgr gone, stopping"); kw->pid = 0; if (raise(SIGTERM) != 0) { kore_log(LOG_WARNING, "failed to raise SIGTERM signal"); } break; } #endif if (kw->pid == accept_lock->current && worker_no_lock == 0) worker_unlock(); #if !defined(KORE_NO_HTTP) if (kw->active_hdlr != NULL) { kw->active_hdlr->errors++; kore_log(LOG_NOTICE, "hdlr %s has caused %d error(s)", kw->active_hdlr->func, kw->active_hdlr->errors); } #endif if (worker_policy == KORE_WORKER_POLICY_TERMINATE) { kw->pid = 0; kore_log(LOG_NOTICE, "worker policy is 'terminate', stopping"); if (raise(SIGTERM) != 0) { kore_log(LOG_WARNING, "failed to raise SIGTERM signal"); } break; } kore_log(LOG_NOTICE, "restarting worker %d", kw->id); kw->restarted = 1; kore_msg_parent_remove(kw); kore_worker_spawn(kw->id, kw->cpu); kore_msg_parent_add(kw); break; } } void kore_worker_make_busy(void) { if (worker_count == WORKER_SOLO_COUNT || worker_no_lock == 1) return; if (worker->has_lock) { worker_unlock(); worker->has_lock = 0; kore_msg_send(KORE_MSG_WORKER_ALL, KORE_MSG_ACCEPT_AVAILABLE, NULL, 0); } } static inline void worker_acceptlock_release(void) { if (worker_count == WORKER_SOLO_COUNT || worker_no_lock == 1) return; if (worker->has_lock != 1) return; if (worker_active_connections < worker_max_connections) { #if !defined(KORE_NO_HTTP) if (http_request_count < http_request_limit) return; #else return; #endif } #if defined(WORKER_DEBUG) kore_log(LOG_DEBUG, "worker busy, releasing lock"); #endif worker_unlock(); worker->has_lock = 0; kore_msg_send(KORE_MSG_WORKER_ALL, KORE_MSG_ACCEPT_AVAILABLE, NULL, 0); } static inline int worker_acceptlock_obtain(void) { int r; if (worker->has_lock == 1) return (1); if (worker_count == WORKER_SOLO_COUNT || worker_no_lock == 1) { worker->has_lock = 1; return (1); } if (worker_active_connections >= worker_max_connections) return (0); #if !defined(KORE_NO_HTTP) if (http_request_count >= http_request_limit) return (0); #endif r = 0; if (worker_trylock()) { r = 1; worker->has_lock = 1; #if defined(WORKER_DEBUG) kore_log(LOG_DEBUG, "got lock"); #endif } return (r); } static int worker_trylock(void) { if (!__sync_bool_compare_and_swap(&(accept_lock->lock), 0, 1)) return (0); accept_lock->current = worker->pid; return (1); } static void worker_unlock(void) { accept_lock->current = 0; if (!__sync_bool_compare_and_swap(&(accept_lock->lock), 1, 0)) kore_log(LOG_NOTICE, "worker_unlock(): wasnt locked"); } static void worker_accept_avail(struct kore_msg *msg, const void *data) { accept_avail = 1; } #if !defined(KORE_NO_TLS) static void worker_entropy_recv(struct kore_msg *msg, const void *data) { if (msg->length != 1024) { kore_log(LOG_WARNING, "invalid entropy response (got:%zu - wanted:1024)", msg->length); } RAND_poll(); RAND_seed(data, msg->length); } static void worker_keymgr_response(struct kore_msg *msg, const void *data) { struct kore_domain *dom; const struct kore_x509_msg *req; if (!worker_keymgr_response_verify(msg, data, &dom)) return; req = (const struct kore_x509_msg *)data; switch (msg->id) { case KORE_MSG_CERTIFICATE: kore_domain_tlsinit(dom, req->data, req->data_len); break; case KORE_MSG_CRL: kore_domain_crl_add(dom, req->data, req->data_len); break; default: kore_log(LOG_WARNING, "unknown keymgr request %u", msg->id); break; } } static int worker_keymgr_response_verify(struct kore_msg *msg, const void *data, struct kore_domain **out) { struct kore_domain *dom; const struct kore_x509_msg *req; if (msg->length < sizeof(*req)) { kore_log(LOG_WARNING, "short keymgr message (%zu)", msg->length); return (KORE_RESULT_ERROR); } req = (const struct kore_x509_msg *)data; if (msg->length != (sizeof(*req) + req->data_len)) { kore_log(LOG_WARNING, "invalid keymgr payload (%zu)", msg->length); return (KORE_RESULT_ERROR); } if (req->domain_len > KORE_DOMAINNAME_LEN) { kore_log(LOG_WARNING, "invalid keymgr domain (%u)", req->domain_len); return (KORE_RESULT_ERROR); } dom = NULL; TAILQ_FOREACH(dom, &domains, list) { if (!strncmp(dom->domain, req->domain, req->domain_len)) break; } if (dom == NULL) { kore_log(LOG_WARNING, "got keymgr response for domain that does not exist"); return (KORE_RESULT_ERROR); } *out = dom; return (KORE_RESULT_OK); } #endif