From 147a8cbf17f2b3379277bf7d37cda9866510f16c Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Wed, 7 Oct 2009 17:43:16 +0000 Subject: [PATCH] Add Glulxe and Git. They compile but don't work yet. git-svn-id: http://lassie.dyndns-server.com/svn/gargoyle-gtk@128 ddfedd41-794f-dd11-ae45-00112f111e67 --- configure.ac | 2 + interpreters/Makefile.am | 2 +- interpreters/git/.svnignore | 4 + interpreters/git/Makefile.am | 46 + interpreters/git/README.txt | 255 +++++ interpreters/git/accel.c | 404 ++++++++ interpreters/git/compiler.c | 579 +++++++++++ interpreters/git/compiler.h | 108 ++ interpreters/git/config.h | 79 ++ interpreters/git/gestalt.c | 51 + interpreters/git/git.c | 176 ++++ interpreters/git/git.h | 175 ++++ interpreters/git/git_unix.c | 106 ++ interpreters/git/glkop.c | 1150 +++++++++++++++++++++ interpreters/git/heap.c | 380 +++++++ interpreters/git/labels.inc | 205 ++++ interpreters/git/memory.c | 179 ++++ interpreters/git/memory.h | 160 +++ interpreters/git/opcodes.c | 466 +++++++++ interpreters/git/opcodes.h | 116 +++ interpreters/git/operands.c | 307 ++++++ interpreters/git/peephole.c | 131 +++ interpreters/git/savefile.c | 318 ++++++ interpreters/git/saveundo.c | 347 +++++++ interpreters/git/search.c | 275 +++++ interpreters/git/terp.c | 1300 ++++++++++++++++++++++++ interpreters/git/test/Alabaster.gblorb | Bin 0 -> 1627650 bytes interpreters/git/test/Alabaster.golden | 536 ++++++++++ interpreters/git/test/Alabaster.walk | 44 + interpreters/git/test/test.sh | 18 + interpreters/git/version.h | 4 + interpreters/glulxe/Makefile.am | 13 + interpreters/glulxe/README | 96 ++ interpreters/glulxe/accel.c | 401 ++++++++ interpreters/glulxe/exec.c | 750 ++++++++++++++ interpreters/glulxe/files.c | 89 ++ interpreters/glulxe/funcs.c | 307 ++++++ interpreters/glulxe/gestalt.c | 70 ++ interpreters/glulxe/gestalt.h | 22 + interpreters/glulxe/glkop.c | 1057 +++++++++++++++++++ interpreters/glulxe/glulxe.h | 271 +++++ interpreters/glulxe/heap.c | 481 +++++++++ interpreters/glulxe/main.c | 163 +++ interpreters/glulxe/opcodes.h | 113 ++ interpreters/glulxe/operand.c | 580 +++++++++++ interpreters/glulxe/osdepend.c | 195 ++++ interpreters/glulxe/profile-analyze.py | 473 +++++++++ interpreters/glulxe/profile.c | 309 ++++++ interpreters/glulxe/search.c | 267 +++++ interpreters/glulxe/serial.c | 1147 +++++++++++++++++++++ interpreters/glulxe/string.c | 883 ++++++++++++++++ interpreters/glulxe/unixstrt.c | 61 ++ interpreters/glulxe/vm.c | 303 ++++++ libchimara/Makefile.am | 2 +- tests/main.c | 2 +- tests/photo201.blb | Bin 0 -> 627050 bytes 56 files changed, 15975 insertions(+), 3 deletions(-) create mode 100644 interpreters/git/.svnignore create mode 100644 interpreters/git/Makefile.am create mode 100644 interpreters/git/README.txt create mode 100644 interpreters/git/accel.c create mode 100644 interpreters/git/compiler.c create mode 100644 interpreters/git/compiler.h create mode 100644 interpreters/git/config.h create mode 100644 interpreters/git/gestalt.c create mode 100644 interpreters/git/git.c create mode 100644 interpreters/git/git.h create mode 100644 interpreters/git/git_unix.c create mode 100644 interpreters/git/glkop.c create mode 100644 interpreters/git/heap.c create mode 100644 interpreters/git/labels.inc create mode 100644 interpreters/git/memory.c create mode 100644 interpreters/git/memory.h create mode 100644 interpreters/git/opcodes.c create mode 100644 interpreters/git/opcodes.h create mode 100644 interpreters/git/operands.c create mode 100644 interpreters/git/peephole.c create mode 100644 interpreters/git/savefile.c create mode 100644 interpreters/git/saveundo.c create mode 100644 interpreters/git/search.c create mode 100644 interpreters/git/terp.c create mode 100644 interpreters/git/test/Alabaster.gblorb create mode 100644 interpreters/git/test/Alabaster.golden create mode 100644 interpreters/git/test/Alabaster.walk create mode 100644 interpreters/git/test/test.sh create mode 100644 interpreters/git/version.h create mode 100644 interpreters/glulxe/Makefile.am create mode 100644 interpreters/glulxe/README create mode 100644 interpreters/glulxe/accel.c create mode 100644 interpreters/glulxe/exec.c create mode 100644 interpreters/glulxe/files.c create mode 100644 interpreters/glulxe/funcs.c create mode 100644 interpreters/glulxe/gestalt.c create mode 100644 interpreters/glulxe/gestalt.h create mode 100644 interpreters/glulxe/glkop.c create mode 100644 interpreters/glulxe/glulxe.h create mode 100644 interpreters/glulxe/heap.c create mode 100644 interpreters/glulxe/main.c create mode 100644 interpreters/glulxe/opcodes.h create mode 100644 interpreters/glulxe/operand.c create mode 100644 interpreters/glulxe/osdepend.c create mode 100644 interpreters/glulxe/profile-analyze.py create mode 100644 interpreters/glulxe/profile.c create mode 100644 interpreters/glulxe/search.c create mode 100644 interpreters/glulxe/serial.c create mode 100644 interpreters/glulxe/string.c create mode 100644 interpreters/glulxe/unixstrt.c create mode 100644 interpreters/glulxe/vm.c create mode 100644 tests/photo201.blb diff --git a/configure.ac b/configure.ac index 3e39397..1c1d5e1 100644 --- a/configure.ac +++ b/configure.ac @@ -100,6 +100,8 @@ libchimara/Makefile interpreters/Makefile interpreters/frotz/Makefile interpreters/nitfol/Makefile +interpreters/glulxe/Makefile +interpreters/git/Makefile tests/Makefile docs/Makefile docs/reference/Makefile diff --git a/interpreters/Makefile.am b/interpreters/Makefile.am index e1407a3..2e8fc83 100644 --- a/interpreters/Makefile.am +++ b/interpreters/Makefile.am @@ -1 +1 @@ -SUBDIRS=nitfol frotz +SUBDIRS=nitfol frotz glulxe git diff --git a/interpreters/git/.svnignore b/interpreters/git/.svnignore new file mode 100644 index 0000000..3045c51 --- /dev/null +++ b/interpreters/git/.svnignore @@ -0,0 +1,4 @@ +.deps +.libs +Makefile.in +Makefile diff --git a/interpreters/git/Makefile.am b/interpreters/git/Makefile.am new file mode 100644 index 0000000..2257391 --- /dev/null +++ b/interpreters/git/Makefile.am @@ -0,0 +1,46 @@ +PLUGIN_LIBTOOL_FLAGS=-module -avoid-version -export-symbols-regex "^glk" + +# Automatically generate version.h +MAJOR = 1 +MINOR = 2 +PATCH = 4 +version.h: Makefile + echo "// Automatically generated file -- do not edit!" > version.h + echo "#define GIT_MAJOR" $(MAJOR) >> version.h + echo "#define GIT_MINOR" $(MINOR) >> version.h + echo "#define GIT_PATCH" $(PATCH) >> version.h + +pkglib_LTLIBRARIES = git.la +BUILT_SOURCES = version.h +git_la_SOURCES = version.h git.h config.h compiler.h memory.h opcodes.h \ + labels.inc compiler.c gestalt.c git.c git_unix.c glkop.c heap.c memory.c \ + opcodes.c operands.c peephole.c savefile.c saveundo.c search.c terp.c \ + accel.c +git_la_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/libchimara +git_la_CFLAGS = -DUSE_MMAP -DUSE_INLINE $(AM_CFLAGS) +git_la_LDFLAGS = $(PLUGIN_LIBTOOL_FLAGS) + +gitdocdir = $(datadir)/doc/$(PACKAGE)/git +dist_gitdoc_DATA = README.txt + +CLEANFILES = test/*.tmp + +#TESTS = test/test.sh \ +# test/Alabaster.gblorb test/Alabaster.walk test/Alabaster.golden +# +#test: git +# sh test/test.sh + +# Best settings for GCC 2.95. This generates faster code than +# GCC 3, so you should use this setup if possible. +#CC = gcc -Wall -O3 +#OPTIONS = -DUSE_DIRECT_THREADING -DUSE_MMAP -DUSE_INLINE +# +# Best settings for GCC 3. The optimiser in this version of GCC +# is somewhat broken, so we can't use USE_DIRECT_THREADING. +#CC = gcc -Wall -O3 +#OPTIONS = -DUSE_MMAP -DUSE_INLINE +# +# Mac OS X (PowerPC) settings. +#CC = gcc2 -Wall -O3 -no-cpp-precomp +#OPTIONS = -DUSE_DIRECT_THREADING -DUSE_BIG_ENDIAN_UNALIGNED -DUSE_MMAP -DUSE_INLINE \ No newline at end of file diff --git a/interpreters/git/README.txt b/interpreters/git/README.txt new file mode 100644 index 0000000..a297ace --- /dev/null +++ b/interpreters/git/README.txt @@ -0,0 +1,255 @@ +Git is an interpreter for the Glulx virtual machine. Its homepage is here: + + http://diden.net/if/git + +Git's main goal in life is to be fast. It's about five times faster than Glulxe, +and about twice as fast as Frotz (using the same Inform source compiled for the +Z-machine). It also tries to be reasonably careful with memory: it's possible to +trade speed off against memory by changing the sizes of Git's internal buffers. + +I wrote Git because I want people to be able to write huge games or try out +complicated algorithms without worrying about how fast their games are going to +run. I want to play City of Secrets on a Palm without having to wait ten seconds +between each prompt. + +Have fun, and let me know what you think! + + Iain Merrick + iain@diden.net + +-------------------------------------------------------------------------------- + +* Building and installing Git + +This is just source code, not a usable application. You'll have to do a bit of +work before you can start playing games with it. If you're not confident about +compiling stuff yourself, you probably want to wait until somebody uploads a +compiled version of Git for your own platform. + +Git needs to be linked with a Glk library in order to run. This can be easy or +hard, depending on what kind of computer you're using and whether you want Git +to be able to display graphics and play sounds. To find a suitable Glk library, +look here: + + http://eblong.com/zarf/glk + +Exactly how you build and link everything depends on what platform you're on and +which Glk library you're using. The supplied Makefile should work on any Unix +machine (including Macs with OS X), but you'll probably want to tweak it to +account for your particular setup. If you're not using Unix, I'm afraid you'll +have to play it by ear. If the Glk library you chose comes with instructions, +that's probably a good place to start. + +On Unix, git_unix.c contains the startup code required by the Glk library. +git_mac.c and git_windows.c contain startup code for MacGlk and WinGlk +respectively, but I can't guarantee that they're fully up-to-date. + +It should be possible to build Git with any C compiler, but it works best with +GCC, because that has a non-standard extension that Git can use for a big speed +boost. GCC 2.95 actually generates faster code than GCC 3, so if you have a +choice, use the former. (On OS X, this means compiling with 'gcc2'.) + +-------------------------------------------------------------------------------- + +* Configuring Git + +There are several configuration options you can use when compiling Git. Have a +look at config.h and see which ones look applicable to your platform. The +Makefile includes settings to configure Git for maximum speed on Mac OS X; the +best settings for other Unix platforms should be similar. + +The most important setting is USE_DIRECT_THREADING, which makes the interpreter +engine use GCC's labels-as-values extension, but this only works with GCC 2.95. + +-------------------------------------------------------------------------------- + +* Porting to a new platform + +To do a new port, you first need to find a suitable Glk library, or write a new +one. Then you need to write the startup code. Start with a copy of git_unix.c, +git_mac.c or git_windows.c and modify it appropriately. + +The startup code needs to implement the following functions: + + void glk_main() // Standard Glk entrypoint + void fatalError(const char* s) // Display error message and quit + +In glk_main(), you need to locate the game file somehow. Then you have two +options. You can open the game as a Glk stream and pass it to this function: + + extern void gitWithStream (strid_t stream, + git_uint32 cacheSize, + git_uint32 undoSize); + +Or you can load the game yourself, and just pass Git a pointer to your buffer: + + extern void git (const git_uint8 * game, + git_uint32 gameSize, + git_uint32 cacheSize, + git_uint32 undoSize); + +If the operating system provides some way of memory-mapping files (such as +Unix's mmap() system call), you should do that and call git(), because it will +allow the game to start up much more quickly. If you can't do memory-mapping, +you should just open the game as a file stream and call gitWithStream(). Note +that some Glk libraries, such as xglk, aren't compatible with memory-mapped +files. + +"cacheSize" and "undoSize" tell Git what size to use for its two main internal +buffers. Both sizes are in bytes. You may want to make these values +user-configurable, or you may just want to pick values that make sense for your +platform and use those. (My Unix version currently uses fixed values, but I'm +going to add some optional command-line parameters to override these defaults.) + +"cacheSize" is the size of the buffer used to store Glulx code that Git has +recompiled into its internal format. Git will run faster with a larger buffer, +but using a huge buffer is just a waste of memory; 256KB is plenty. + +"undoSize" is the maximum amount of memory used to remember previous moves. The +larger you make it, the more levels of undo will be available. The amount of +memory required to remember one undo position varies from a few KB up to tens of +KB. 256KB is usually enough to store dozens of moves. + +-------------------------------------------------------------------------------- + +* Known problems + +GCC 3 has bigger problems than I thought. On PowerPC, the direct threading +option results in much slower code; and on x86, terp.c crashes GCC itself if +direct threading is used. Therefore, I recommend that you use GCC 2.95 if +possible. If you only have GCC 3, don't define USE_DIRECT_THREADING, at least +until the compiler bug is fixed. + +Since the previous update, GCC 4 has been released, but I haven't evaluated it +yet. If you want to give it a try, let me know how you get on! + +Some Glk libraries, such as xglk, can't deal with memory-mapped files. You can +tell that this is happening if Git can open .ulx files, but complains that .blb +files are invalid. The solution is to use gitWithStream() rather than git() in +your startup file, and make sure you're giving it a file stream rather than a +memory stream. If you're using the git_unix.c startup file, just make sure +USE_MMAP isn't defined. + +1-byte and 2-byte local variables are not implemented yet. This means git can't +currently play games created with the Superglus system. This will be fixed at +some point. + +In the search opcodes, direct keys don't work unless they're exactly 4 bytes +long. + +-------------------------------------------------------------------------------- + +* Copyright information + +Note: previous versions of Git used an informal freeware license, but I've +decided it's worth formalising. As of version 1.2.3, I've switched to the +MIT license. + +Copyright (c) 2003 Iain Merrick + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +-------------------------------------------------------------------------------- + +* Credits + +Andrew Plotkin invented Glulx, so obviously Git wouldn't exist without him. I +also reused some code from his Glulxe interpreter (glkop.c and search.c), which +saved me a lot of time and let me concentrate on the more interesting stuff. + +Many thanks are due to John Cater, who not only persuaded me to use source +control, but let me use his own CVS server. John also provided lots of useful +advice and encouragement, as did Sean Barrett. + +Thanks also to Joe Mason, Adam Thornton, Simon Baldwin and Joonas Pihlaja who +were among the first to try it out and complain that it wasn't working. Joonas +also gets special brownie points for trying out more bizarre boundary cases than +I realised existed in the first place. + +Tor Andersson was apparently the first person to use setmemsize, since he also +explained why it didn't work and contributed a fix. Thanks, Tor! + +David Kinder has done a stellar job of maintaining the code recently. Thanks +also to Eliuk Blau for tracking down bugs in the memory management opcodes. + +-------------------------------------------------------------------------------- + +* Version History + +1.2.4 2009-04-02 More David Kinder! Accelerated opcode support (VM spec 3.1.1). + +1.2.3 2009-02-22 David Kinder and Eliuk Blau fixed some memory management bugs. + Added a regression test (thanks to Emily Short for assistance) + Switched to MIT-style license (see above). + +1.2.2 2009-01-21 malloc & mfree contributed by the most excellent David Kinder. + +1.2.1 2008-09-14 Support for 64-bit machines, contributed by Alexander Beels. + Fix for crashing bug in RESTORE, contributed by David Kinder. + Non-Unicode display bug fix, contributed by Jeremy Bernstein. + +1.2 2008-01-06 Minor version increment for VM spec 3.1. + Implemented mzero and mcopy, but not malloc and mfree (yet). + +1.1.3 2006-10-04 Fixed a bug in the cache logic that broke the game Floatpoint. + Added some other caching tweaks and put in a few more asserts. + +1.1.2 2006-08-22 streamnum in filter I/O mode no longer prints a garbage char. + Merged in David Kinder's updated Windows startup code. + +1.1.1 2006-08-17 Wow, over a year since the last update. + Rolled in Tor Andersson's fix for setmemsize. + +1.1 2004-12-22 Minor version increment because we now implement VM spec 3.0. + Implemented new Unicode opcodes and string types. + +1.0.6 2004-12-10 Random number generator now handles random(0) correctly. + Code cache now tracks the number of function calls properly. + Fixed a bug that could hang the terp when the cache filled up. + +1.0.5 2004-05-31 Random number generator is now initialised properly. + Some source files had Mac line-endings, now fixed. + Version number is now set in the Makefile, not in git.h. + Merged David Kinder's Windows Git code into main distribution. + +1.0.4 2004-03-13 Fixed a silly bug in direct threading mode that broke stkroll. + Memory access bounds checking has been tightened up slightly. + aload and astore now work correctly with negative offsets. + Rewrote the shift opcodes a bit more defensively. + Implemented the "verify" opcode. + Code in RAM is no longer cached by default. + Adding some special opcodes to control the code cache. + Bad instructions are now caught in the terp, not the compiler. + Now passes all of Joonas' indirect string decoding tests. + +1.0.3 2004-01-22 No longer hangs when using streamnum in the "filter" I/O mode. + setstringtbl opcode now works correctly. + +1.0.2 2003-10-25 Stupid bug in 1.0.1 -- gitWithStream() was broken and wasn't + able to load Blorb files. Now it's *really* fixed. + +1.0.1 2003-10-23 Fixed a bug where strings were printed as "[string]" + Fixed a bug in tailcall + Implemented setmemsize + Implemented protect + Moved git_init_dispatch() call out of startup code, into git.c + Added divide-by-zero check + Compiler now stops when it finds a 'quit' or 'restart' + Added gitWithStream() as a workaround for xglk + +1.0 2003-10-18 First public release diff --git a/interpreters/git/accel.c b/interpreters/git/accel.c new file mode 100644 index 0000000..2a1fe52 --- /dev/null +++ b/interpreters/git/accel.c @@ -0,0 +1,404 @@ +/* accel.c: Glulxe code for accelerated functions + Designed by Andrew Plotkin + http://eblong.com/zarf/glulx/index.html +*/ + +#include "glk.h" +#include "git.h" + +#define ARGS_REVERSED +#define glulx_malloc malloc + +/* Git passes along function arguments in reverse order. To make our lives + more interesting. */ +#ifdef ARGS_REVERSED +#define ARG(argv, argc, ix) (argv[(argc-1)-ix]) +#else +#define ARG(argv, argc, ix) (argv[ix]) +#endif + +/* Any function can be called with any number of arguments. This macro + lets us snarf a given argument, or zero if it wasn't supplied. */ +#define ARG_IF_GIVEN(argv, argc, ix) ((argc > ix) ? (ARG(argv, argc, ix)) : 0) + +static void accel_error(char *msg); +static glui32 func_1_z__region(glui32 argc, glui32 *argv); +static glui32 func_2_cp__tab(glui32 argc, glui32 *argv); +static glui32 func_3_ra__pr(glui32 argc, glui32 *argv); +static glui32 func_4_rl__pr(glui32 argc, glui32 *argv); +static glui32 func_5_oc__cl(glui32 argc, glui32 *argv); +static glui32 func_6_rv__pr(glui32 argc, glui32 *argv); +static glui32 func_7_op__pr(glui32 argc, glui32 *argv); + +static int obj_in_class(glui32 obj); +static glui32 get_prop(glui32 obj, glui32 id); + +/* Parameters, set by @accelparam. */ +static glui32 classes_table = 0; /* class object array */ +static glui32 indiv_prop_start = 0; /* first individual prop ID */ +static glui32 class_metaclass = 0; /* "Class" class object */ +static glui32 object_metaclass = 0; /* "Object" class object */ +static glui32 routine_metaclass = 0; /* "Routine" class object */ +static glui32 string_metaclass = 0; /* "String" class object */ +static glui32 self = 0; /* address of global "self" */ +static glui32 num_attr_bytes = 0; /* number of attributes / 8 */ +static glui32 cpv__start = 0; /* array of common prop defaults */ + +typedef struct accelentry_struct { + glui32 addr; + acceleration_func func; + struct accelentry_struct *next; +} accelentry_t; + +#define ACCEL_HASH_SIZE (511) + +static accelentry_t **accelentries = NULL; + +void init_accel() +{ + accelentries = NULL; +} + +acceleration_func accel_find_func(glui32 index) +{ + switch (index) { + case 0: return NULL; /* 0 always means no acceleration */ + case 1: return func_1_z__region; + case 2: return func_2_cp__tab; + case 3: return func_3_ra__pr; + case 4: return func_4_rl__pr; + case 5: return func_5_oc__cl; + case 6: return func_6_rv__pr; + case 7: return func_7_op__pr; + } + return NULL; +} + +acceleration_func accel_get_func(glui32 addr) +{ + int bucknum; + accelentry_t *ptr; + + if (!accelentries) + return NULL; + + bucknum = (addr % ACCEL_HASH_SIZE); + for (ptr = accelentries[bucknum]; ptr; ptr = ptr->next) { + if (ptr->addr == addr) + return ptr->func; + } + return NULL; +} + +void accel_set_func(glui32 index, glui32 addr) +{ + int bucknum; + accelentry_t *ptr; + int functype; + acceleration_func new_func = NULL; + + /* Check the Glulx type identifier byte. */ + functype = memRead8(addr); + if (functype != 0xC0 && functype != 0xC1) { + fatalError("Attempt to accelerate non-function."); + } + + if (!accelentries) { + accelentries = (accelentry_t **)glulx_malloc(ACCEL_HASH_SIZE + * sizeof(accelentry_t *)); + if (!accelentries) + fatalError("Cannot malloc acceleration table."); + for (bucknum=0; bucknumnext) { + if (ptr->addr == addr) + break; + } + if (!ptr) { + if (!new_func) { + return; /* no need for a new entry */ + } + ptr = (accelentry_t *)glulx_malloc(sizeof(accelentry_t)); + if (!ptr) + fatalError("Cannot malloc acceleration entry."); + ptr->addr = addr; + ptr->func = NULL; + ptr->next = accelentries[bucknum]; + accelentries[bucknum] = ptr; + } + + ptr->func = new_func; +} + +void accel_set_param(glui32 index, glui32 val) +{ + switch (index) { + case 0: classes_table = val; break; + case 1: indiv_prop_start = val; break; + case 2: class_metaclass = val; break; + case 3: object_metaclass = val; break; + case 4: routine_metaclass = val; break; + case 5: string_metaclass = val; break; + case 6: self = val; break; + case 7: num_attr_bytes = val; break; + case 8: cpv__start = val; break; + } +} + +static void accel_error(char *msg) +{ + glk_put_char('\n'); + glk_put_string(msg); + glk_put_char('\n'); +} + +static int obj_in_class(glui32 obj) +{ + /* This checks whether obj is contained in Class, not whether + it is a member of Class. */ + return (memRead32(obj + 13 + num_attr_bytes) == class_metaclass); +} + +static glui32 get_prop(glui32 obj, glui32 id) +{ + glui32 cla = 0; + glui32 prop; + glui32 call_argv[2]; + + if (id & 0xFFFF0000) { + cla = memRead32(classes_table+((id & 0xFFFF) * 4)); + ARG(call_argv, 2, 0) = obj; + ARG(call_argv, 2, 1) = cla; + if (func_5_oc__cl(2, call_argv) == 0) + return 0; + + id >>= 16; + obj = cla; + } + + ARG(call_argv, 2, 0) = obj; + ARG(call_argv, 2, 1) = id; + prop = func_2_cp__tab(2, call_argv); + if (prop == 0) + return 0; + + if (obj_in_class(obj) && (cla == 0)) { + if ((id < indiv_prop_start) || (id >= indiv_prop_start+8)) + return 0; + } + + if (memRead32(self) != obj) { + if (memRead8(prop + 9) & 1) + return 0; + } + return prop; +} + +static glui32 func_1_z__region(glui32 argc, glui32 *argv) +{ + glui32 addr; + glui32 tb; + + if (argc < 1) + return 0; + + addr = ARG(argv, argc, 0); + if (addr < 36) + return 0; + if (addr >= gEndMem) + return 0; + + tb = memRead8(addr); + if (tb >= 0xE0) { + return 3; + } + if (tb >= 0xC0) { + return 2; + } + if (tb >= 0x70 && tb <= 0x7F && addr >= gRamStart) { + return 1; + } + return 0; +} + +static glui32 func_2_cp__tab(glui32 argc, glui32 *argv) +{ + glui32 obj; + glui32 id; + glui32 otab, max; + + obj = ARG_IF_GIVEN(argv, argc, 0); + id = ARG_IF_GIVEN(argv, argc, 1); + + if (func_1_z__region(1, &obj) != 1) { + accel_error("[** Programming error: tried to find the \".\" of (something) **]"); + return 0; + } + + otab = memRead32(obj + 16); + if (!otab) + return 0; + + max = memRead32(otab); + otab += 4; + /* @binarysearch id 2 otab 10 max 0 0 res; */ + return git_binary_search(id, 2, otab, 10, max, 0, 0); +} + +static glui32 func_3_ra__pr(glui32 argc, glui32 *argv) +{ + glui32 obj; + glui32 id; + glui32 prop; + + obj = ARG_IF_GIVEN(argv, argc, 0); + id = ARG_IF_GIVEN(argv, argc, 1); + + prop = get_prop(obj, id); + if (prop == 0) + return 0; + + return memRead32(prop + 4); +} + +static glui32 func_4_rl__pr(glui32 argc, glui32 *argv) +{ + glui32 obj; + glui32 id; + glui32 prop; + + obj = ARG_IF_GIVEN(argv, argc, 0); + id = ARG_IF_GIVEN(argv, argc, 1); + + prop = get_prop(obj, id); + if (prop == 0) + return 0; + + return 4 * memRead16(prop + 2); +} + +static glui32 func_5_oc__cl(glui32 argc, glui32 *argv) +{ + glui32 obj; + glui32 cla; + glui32 zr, prop, inlist, inlistlen, jx; + + obj = ARG_IF_GIVEN(argv, argc, 0); + cla = ARG_IF_GIVEN(argv, argc, 1); + + zr = func_1_z__region(1, &obj); + if (zr == 3) + return (cla == string_metaclass) ? 1 : 0; + if (zr == 2) + return (cla == routine_metaclass) ? 1 : 0; + if (zr != 1) + return 0; + + if (cla == class_metaclass) { + if (obj_in_class(obj)) + return 1; + if (obj == class_metaclass) + return 1; + if (obj == string_metaclass) + return 1; + if (obj == routine_metaclass) + return 1; + if (obj == object_metaclass) + return 1; + return 0; + } + if (cla == object_metaclass) { + if (obj_in_class(obj)) + return 0; + if (obj == class_metaclass) + return 0; + if (obj == string_metaclass) + return 0; + if (obj == routine_metaclass) + return 0; + if (obj == object_metaclass) + return 0; + return 1; + } + if ((cla == string_metaclass) || (cla == routine_metaclass)) + return 0; + + if (!obj_in_class(cla)) { + accel_error("[** Programming error: tried to apply 'ofclass' with non-class **]"); + return 0; + } + + prop = get_prop(obj, 2); + if (prop == 0) + return 0; + + inlist = memRead32(prop + 4); + if (inlist == 0) + return 0; + + inlistlen = memRead16(prop + 2); + for (jx = 0; jx < inlistlen; jx++) { + if (memRead32(inlist + (4 * jx)) == cla) + return 1; + } + return 0; +} + +static glui32 func_6_rv__pr(glui32 argc, glui32 *argv) +{ + glui32 id; + glui32 addr; + + id = ARG_IF_GIVEN(argv, argc, 1); + + addr = func_3_ra__pr(argc, argv); + + if (addr == 0) { + if ((id > 0) && (id < indiv_prop_start)) + return memRead32(cpv__start + (4 * id)); + + accel_error("[** Programming error: tried to read (something) **]"); + return 0; + } + + return memRead32(addr); +} + +static glui32 func_7_op__pr(glui32 argc, glui32 *argv) +{ + glui32 obj; + glui32 id; + glui32 zr; + + obj = ARG_IF_GIVEN(argv, argc, 0); + id = ARG_IF_GIVEN(argv, argc, 1); + + zr = func_1_z__region(1, &obj); + if (zr == 3) { + /* print is INDIV_PROP_START+6 */ + if (id == indiv_prop_start+6) + return 1; + /* print_to_array is INDIV_PROP_START+7 */ + if (id == indiv_prop_start+7) + return 1; + return 0; + } + if (zr == 2) { + /* call is INDIV_PROP_START+5 */ + return ((id == indiv_prop_start+5) ? 1 : 0); + } + if (zr != 1) + return 0; + + if ((id >= indiv_prop_start) && (id < indiv_prop_start+8)) { + if (obj_in_class(obj)) + return 1; + } + + return ((func_3_ra__pr(argc, argv)) ? 1 : 0); +} diff --git a/interpreters/git/compiler.c b/interpreters/git/compiler.c new file mode 100644 index 0000000..6faa94c --- /dev/null +++ b/interpreters/git/compiler.c @@ -0,0 +1,579 @@ +// $Id: compiler.c,v 1.27 2004/12/10 00:37:00 iain Exp $ + +#include "git.h" +#include +#include +#include +#include + +// ------------------------------------------------------------- +// Constants + +enum +{ + LONGJMP_NO_ERROR = 0, + LONGJMP_CACHE_FULL = 1, + LONGJMP_BAD_OPCODE = 2 +}; + +// ------------------------------------------------------------- +// Globals + +int gPeephole = 1; +int gDebug = 0; +int gCacheRAM = 0; + +BlockHeader * gBlockHeader; + +const char * gLabelNames [] = { +#define LABEL(label) #label, +#include "labels.inc" + NULL +}; + +HashNode ** gHashTable; // Hash table of glulx address -> code. +git_uint32 gHashSize; // Number of slots in the hash table. + +// ------------------------------------------------------------- +// Types. + +typedef struct PatchNode +{ + git_uint32 address; // The glulx address of this instruction. + git_sint16 codeOffset; // Offset from the block header to the compiled code for this instruction. + git_sint16 branchOffset; // If non-zero, offset to a branch opcode followed by a glulx address. + union { + int isReferenced; // Set to TRUE if this can be the destination of a jump. + HashNode* pad; // This pad assures that PatchNode and HashNode are the same size. + } u; +} +PatchNode; + +// ------------------------------------------------------------- +// Static variables. + +static git_uint32 * sBuffer; // The buffer where everything is stored. +static git_uint32 sBufferSize; // Size of the buffer, in 4-byte words. + +static Block sCodeStart; // Start of code cache. +static Block sCodeTop; // Next free space in code cache. +static PatchNode* sTempStart; // Start of temporary storage. +static PatchNode* sTempEnd; // End of temporary storage. + +static jmp_buf sJumpBuf; // setjmp buffer, used to abort compilation when the buffer is full. + +// This is the patch node for the opcode currently being compiled. +// The 'address' and 'code' fields will be filled in. The other +// fields can be updated during compilation as necessary. +static PatchNode * sPatch; + +static int sNextInstructionIsReferenced; +static git_uint32 sLastAddr; + +// ------------------------------------------------------------- +// Functions + +void initCompiler (size_t size) +{ + static BlockHeader dummyHeader; + gBlockHeader = &dummyHeader; + + // Make sure various assumptions we're making are correct. + + assert (sizeof(HashNode) <= sizeof(PatchNode)); + + // Allocate the buffer. As far as possible, we're going to + // use this buffer for everything compiler-related, and + // avoid further dynamic allocation. + + sBuffer = malloc (size); + if (sBuffer == NULL) + fatalError ("Couldn't allocate code cache"); + + memset (sBuffer, 0, size); + sBufferSize = size / 4; + + // Pick a reasonable size for the hash table. This should be + // a power of two, and take up about a tenth of the buffer. + // (If the buffer is itself a power of two in size, the hash + // table will take up a sixteenth of it, which is fine.) + + gHashSize = 1; + while (gHashSize < (sBufferSize / 20)) + gHashSize *= 2; + + // The hash table is stored at the beginning of the buffer, + // and the rest is used for code and temporary storage. + + gHashTable = (HashNode**) sBuffer; + + sCodeStart = sCodeTop = (Block) (gHashTable + gHashSize); + sTempStart = sTempEnd = (PatchNode*) (sBuffer + sBufferSize); +} + +void shutdownCompiler () +{ + free (sBuffer); + + sBuffer = NULL; + sCodeStart = sCodeTop = NULL; + sTempStart = sTempEnd = NULL; + + gHashTable = NULL; + gBlockHeader = NULL; +} + +static void abortIfBufferFull () +{ + // Make sure we have at least two words free, + // because we'll need them to store a jumpabs + // instruction at the very end of the buffer. + + if ((void*) (sCodeTop + 2) >= (void*) sTempStart) + longjmp (sJumpBuf, LONGJMP_CACHE_FULL); +} + +void abortCompilation () +{ + longjmp (sJumpBuf, LONGJMP_BAD_OPCODE); +} + +void nextInstructionIsReferenced () +{ + sNextInstructionIsReferenced = 1; +} + +Block compile (git_uint32 pc) +{ + git_uint32 endOfBlock; + int i, numNodes; + + // Make sure we have enough room for, at a minimum: + // - the block header + // - one patch node + // - one jumpabs instruction (two words). + + int spaceNeeded = (sizeof(BlockHeader) + sizeof(PatchNode) + 8) / 4; + if ((void*) (sCodeTop + spaceNeeded) >= (void*) sTempStart) + { + compressCodeCache(); + } + + // Emit the header for this block. + + gBlockHeader = (BlockHeader*) sCodeTop; + sCodeTop = (git_uint32*) (gBlockHeader + 1); + + sLastAddr = 0; + sNextInstructionIsReferenced = 1; + resetPeepholeOptimiser(); + + sPatch = NULL; + + i = setjmp (sJumpBuf); + if (i == LONGJMP_NO_ERROR) + { + git_uint32 patchSize = 0; + git_uint32 codeSize = 0; + + int done = 0; + + while (!done) + { + // If we don't have room for more code, abort. + if ((void*) (sCodeTop + 2) >= (void*) (sTempStart - 1)) + { + longjmp (sJumpBuf, LONGJMP_CACHE_FULL); + } + + // Create a temporary patch node for this instruction. + --sTempStart; + sPatch = sTempStart; + sPatch->address = pc; + sPatch->codeOffset = sCodeTop - (git_uint32*)gBlockHeader; + sPatch->branchOffset = 0; + sPatch->u.isReferenced = sNextInstructionIsReferenced; + + sNextInstructionIsReferenced = 0; + + // Make sure we haven't generated over 32K of code. + + patchSize += sizeof(PatchNode) / 4; + codeSize = sCodeTop - (git_uint32*)gBlockHeader; + + if (codeSize + patchSize > 32000) + { + // We've generated almost 32K words of code, which will + // start to cause problems for the 16-bit offsets we use + // in the hash nodes, so let's just stop here. + longjmp (sJumpBuf, LONGJMP_CACHE_FULL); + } + + // Parse the next instruction. + + parseInstruction (&pc, &done); + + if (pc < sLastAddr) + done = 0; + } + } + else + { + // Compilation was aborted, but we should have a + // patch node and at least two words of space free. + + assert (sPatch != NULL); + sPatch->branchOffset = 0; // Make sure the patch isn't treated as a branch. + + sCodeTop = ((git_uint32*)gBlockHeader) + sPatch->codeOffset; + + if (i == LONGJMP_CACHE_FULL) + { + // The buffer is full. We'll replace the partially-compiled + // instruction with a jumpabs, forcing another cache lookup + // when the terp hits this point in the code. + + *sCodeTop++ = (git_uint32) labelToOpcode (label_recompile); + *sCodeTop++ = sPatch->address; + + // Make sure this node doesn't get put into the hash table. + sPatch->u.isReferenced = 0; + } + else if (i == LONGJMP_BAD_OPCODE) + { + // We found a badly-formed instruction. We'll replace the + // partially-compiled instruction with a label that raises + // an error if the terp hits this code location. + + *sCodeTop++ = (git_uint32) labelToOpcode (label_error_bad_opcode); + *sCodeTop++ = sPatch->address; + } + else + { + fatalError ("unknown error in compile (BUG)"); + } + } + + assert ((void*) sCodeTop <= (void*) sTempStart); + + // We now know where the block ends. + + endOfBlock = pc; + + // Fix up the constant branches. + + numNodes = sTempEnd - sTempStart; + for (i = 0 ; i < numNodes ; ++i) + { + git_uint32* constBranch; + + git_uint32 dest; + git_uint32 lower = 0; + git_uint32 upper = numNodes; + + PatchNode * p = sTempStart + i; + if (p->branchOffset == 0) + continue; + + constBranch = ((git_uint32*)gBlockHeader) + p->branchOffset; + dest = constBranch [1]; + while (upper > lower) + { + git_uint32 guess = (lower + upper) / 2; + PatchNode * p2 = sTempStart + guess; + if (p2->address == dest) + { + git_uint32 * op = constBranch; + git_uint32 * by = constBranch + 1; + + // Change the 'const' branch to a 'by' branch. + *op = *op - label_jump_const + label_jump_by; + + // Turn the address into a relative offset. + *by = ((git_uint32*)gBlockHeader + p2->codeOffset) - (constBranch + 2); + + // And we're done. + break; + } + else if (p2->address > dest) + lower = guess + 1; + else + upper = guess; + } + + // Whether we found the branch destination or not, + // turn the label into a real opcode. + *constBranch = (git_uint32) labelToOpcode (*constBranch); + } + + // Convert all the referenced addresses into hash table nodes, + // as long as they're not in RAM. + + numNodes = 0; + for ( ; sTempStart < sTempEnd ; ++sTempStart) + { + // 'pc' holds the address of *end* of the instruction, + // so we'll use that to determine whether it overlaps + // the start of RAM. + + int isInRAM = (pc > gRamStart); + + // Set the PC to the start of the instruction, since + // that's equal to the end of the previous instruction. + + pc = sTempStart->address; + + if (isInRAM && !gCacheRAM) + continue; + + // If we're not skipping this instruction, and it's + // referenced somewhere, attach it to the hash table. + + if (sTempStart->u.isReferenced) + { + HashNode * node = (HashNode*) sCodeTop; + sCodeTop = (git_uint32*) (node + 1); + + node->address = sTempStart->address; + node->headerOffset = (git_uint32*)gBlockHeader - (git_uint32*)node; + node->codeOffset = node->headerOffset + sTempStart->codeOffset; + + node->u.next = gHashTable [node->address & (gHashSize-1)]; + gHashTable [node->address & (gHashSize-1)] = node; + + ++numNodes; + } + } + + // Write the block header. + + assert (sCodeTop - (git_uint32*) gBlockHeader < 32767); + + gBlockHeader->numHashNodes = numNodes; + gBlockHeader->compiledSize = sCodeTop - (git_uint32*) gBlockHeader; + gBlockHeader->glulxSize = endOfBlock - pc; + gBlockHeader->runCounter = 0; + + assert(gBlockHeader->compiledSize > 0); + + // And we're done. + return (git_uint32*) (gBlockHeader + 1); +} + +#define END_OF_BLOCK(header) ((void*) (((git_uint32*)header) + header->compiledSize)) + +static git_uint32 findCutoffPoint () +{ + BlockHeader * start = (BlockHeader*) sCodeStart; + BlockHeader * top = (BlockHeader*) sCodeTop; + BlockHeader * h; + + git_uint32 blockCount = 0; + git_uint32 runCount = 0; + + for (h = start ; h < top ; h = END_OF_BLOCK(h)) + { + if (h->glulxSize > 0) + { + ++blockCount; + } + } + + for (h = start ; h < top ; h = END_OF_BLOCK(h)) + { + if (h->glulxSize > 0) + { + runCount += (h->runCounter + blockCount + 1) / blockCount; + } + } + + return runCount / 2; +} + +static void compressWithCutoff (git_uint32 cutoff) +{ + BlockHeader * start = (BlockHeader*) sCodeStart; + BlockHeader * top = (BlockHeader*) sCodeTop; + BlockHeader * h = start; + + git_uint32 saveCount = 0; + git_uint32 deleteCount = 0; + + sCodeTop = sCodeStart; + + while (h < top) + { + BlockHeader * next = END_OF_BLOCK(h); + if (h->runCounter >= cutoff && h->glulxSize > 0) + { + git_uint32 size = h->compiledSize; + + // Lower the run count of the saved blocks so that they'll + // stick around in the short term, but eventually fall out + // of the cache if they're not used much in the future. + h->runCounter /= 2; + + memmove (sCodeTop, h, size * sizeof(git_uint32)); + sCodeTop += size; + ++saveCount; + } + else + { + ++deleteCount; + } + h = next; + } +} + +static void rebuildHashTable () +{ + BlockHeader * start = (BlockHeader*) sCodeStart; + BlockHeader * top = (BlockHeader*) sCodeTop; + BlockHeader * h; + + memset (gHashTable, 0, gHashSize * sizeof(HashNode*)); + + for (h = start ; h < top ; h = END_OF_BLOCK(h)) + { + if (h->glulxSize > 0) + { + HashNode * node = END_OF_BLOCK(h); + git_uint32 i; + for (i = 0 ; i < h->numHashNodes ; ++i) + { + --node; + node->u.next = gHashTable [node->address & (gHashSize-1)]; + gHashTable [node->address & (gHashSize-1)] = node; + } + } + } +} + +static void removeHashNode (HashNode* deadNode) +{ + HashNode* n = gHashTable [deadNode->address & (gHashSize-1)]; + assert (deadNode != NULL); + + if (n == NULL) + { + // This hash bucket is empty! We have nothing to do. + } + else if (n == deadNode) + { + // The node to be removed is the first one in its bucket. + gHashTable [deadNode->address & (gHashSize-1)] = NULL; + } + else + { + // The node to be removed is somewhere in the middle + // of the bucket. Step along the linked list until + // we find it. + + while (n->u.next != deadNode) + n = n->u.next; + + // Unlink it from the linked list. + n->u.next = deadNode->u.next; + } +} + +void pruneCodeCache (git_uint32 address, git_uint32 size) +{ + BlockHeader * start = (BlockHeader*) sCodeStart; + BlockHeader * top = (BlockHeader*) sCodeTop; + BlockHeader * h; + + // Step through the cache, looking for blocks that overlap the + // specified range. If we find any, remove their nodes from the + // hash table, and set glulxSize to 0 so that they're dropped + // the next time we clean up the cache. + + for (h = start ; h < top ; h = END_OF_BLOCK(h)) + { + // The start address of the block is in its final hash node. + + HashNode * node = END_OF_BLOCK(h); + git_uint32 glulxAddr = node[-1].address; + + if (glulxAddr < (address + size) && (glulxAddr + h->glulxSize) > address) + { + // This block overlaps the range of code that has to be pruned. + + git_uint32 i; + for (i = 0 ; i < h->numHashNodes ; ++i) + { + --node; + removeHashNode (node); + } + + h->glulxSize = 0; + } + } +} + +void compressCodeCache () +{ + git_uint32 n; + git_uint32 spaceUsed, spaceFree; + + n = findCutoffPoint(); + compressWithCutoff (n); + rebuildHashTable (); + + spaceUsed = sCodeTop - sCodeStart; + spaceFree = sBufferSize - spaceUsed - gHashSize; + +// { +// char buffer [100]; +// sprintf (buffer, "[Cache cleanup: %d bytes used, %d free]\n", +// spaceUsed * 4, spaceFree * 4); +// glk_put_string (buffer); +// } + + // If that didn't free up at least a quarter of the cache, + // clear it out entirely. + + if (spaceFree * 3 < spaceUsed) + resetCodeCache(); +} + +void resetCodeCache () +{ +// glk_put_string ("[resetting cache]\n"); + + memset (sBuffer, 0, sBufferSize * 4); + sCodeStart = sCodeTop = (Block) (gHashTable + gHashSize); + sTempStart = sTempEnd = (PatchNode*) (sBuffer + sBufferSize); +} + +Block peekAtEmittedStuff (int numOpcodes) +{ + return sCodeTop - numOpcodes; +} + +void emitConstBranch (Label op, git_uint32 address) +{ + sPatch->branchOffset = sCodeTop - (git_uint32*)gBlockHeader; + emitData (op); + emitData (address); + + if (sLastAddr < address) + sLastAddr = address; +} + +void emitData (git_uint32 val) +{ + abortIfBufferFull (); + *sCodeTop++ = val; +} + +extern void emitFinalCode (Label op) +{ + abortIfBufferFull (); + *sCodeTop++ = (git_uint32) labelToOpcode (op); +} + +extern git_uint32 undoEmit () +{ + return *--sCodeTop; +} diff --git a/interpreters/git/compiler.h b/interpreters/git/compiler.h new file mode 100644 index 0000000..4ee39c6 --- /dev/null +++ b/interpreters/git/compiler.h @@ -0,0 +1,108 @@ +// Header for compiler.c +// $Id: compiler.h,v 1.11 2004/02/02 00:13:46 iain Exp $ + +#ifndef GIT_COMPILER_H +#define GIT_COMPILER_H + +// ------------------------------------------------------------- +// Types + +typedef enum +{ +#define LABEL(foo) label_ ## foo, +#include "labels.inc" + MAX_LABEL +} +Label; + +#ifdef USE_DIRECT_THREADING +typedef void* Opcode; // Generated opcode: pointer to a label in exec(). +#else +typedef Label Opcode; +#endif + +typedef git_uint32* Block; // Generated code block: array of labels. + +// ------------------------------------------------------------- +// Settings + +extern int gPeephole; // Peephole optimisation of generated code? +extern int gDebug; // Insert debug statements into generated code? +extern int gCacheRAM; // Keep RAM-based code in the JIT cache? + +// ------------------------------------------------------------- +// Compiling code + +extern const char* gLabelNames[]; + +extern void initCompiler (size_t cacheSize); +extern void shutdownCompiler (); + +extern void emitData (git_uint32); +extern void emitFinalCode (Label); +extern void emitConstBranch (Label op, git_uint32 address); + +extern void abortCompilation (); + +extern git_uint32 undoEmit(); +extern void nextInstructionIsReferenced (); + +extern Block peekAtEmittedStuff (int numOpcodes); + +// ------------------------------------------------------------- +// Accessing compiled code + +extern void pruneCodeCache (git_uint32 start, git_uint32 size); +extern void resetCodeCache (); +extern void compressCodeCache (); + +extern Block compile (git_uint32 pc); + +typedef struct HashNode HashNode; + +struct HashNode +{ + git_uint32 address; // Glulx address for this entry. + git_sint16 codeOffset; // Offset in 4-byte words from this hash node to the compiled code. + git_sint16 headerOffset; // Offset in 4-byte words from this hash node to the block header. + union { + int pad; // This pad assures that PatchNode and HashNode are the same size. + HashNode * next; // Next node in the same hash table slot. + } u; +}; + +typedef struct BlockHeader +{ + git_uint16 numHashNodes; // Number of lookup-able addresses in this block. + git_uint16 compiledSize; // Total size of this block, in 4-byte words. + git_uint32 glulxSize; // Size of the glulx code this block represents, in bytes. + git_uint32 runCounter; // Total number of opcodes executed in this block. +} // (used to determine which blocks stay in the cache) +BlockHeader; + +// This is the header for the block currently being executed -- +// that is, the one containing the return value of the last call +// to getCode(). +extern BlockHeader * gBlockHeader; + +// Hash table for code lookup -- inlined for speed + +extern HashNode ** gHashTable; // Hash table of glulx address -> code. +extern git_uint32 gHashSize; // Number of slots in the hash table. + +GIT_INLINE Block getCode (git_uint32 pc) +{ + HashNode * n = gHashTable [pc & (gHashSize-1)]; + while (n) + { + if (n->address == pc) + { + gBlockHeader = (BlockHeader*) ((git_uint32*)n + n->headerOffset); + return (git_uint32*)n + n->codeOffset; + } + n = n->u.next; + } + return compile (pc); +} + +#endif // GIT_COMPILER_H diff --git a/interpreters/git/config.h b/interpreters/git/config.h new file mode 100644 index 0000000..d1dea0a --- /dev/null +++ b/interpreters/git/config.h @@ -0,0 +1,79 @@ +// $Id: config.h,v 1.4 2003/10/18 23:19:52 iain Exp $ +// Platform-dependent configuration for Git + +#ifndef GIT_CONFIG_H +#define GIT_CONFIG_H + +// Various compile-time options. You can define them in the +// makefile or uncomment them here, whichever's easiest. + +// Define if we're big-endian and can read and write unaligned data. +// #define USE_BIG_ENDIAN_UNALIGNED + +// Define this to use GCC's labels-as-values extension for a big speedup. +// #define USE_DIRECT_THREADING + +// Define this if we can use the "inline" keyword. +// #define USE_INLINE + +// Define this to memory-map the game file to speed up loading. (Unix-specific) +// #define USE_MMAP + +// ------------------------------------------------------------------- + +// Make sure we're compiling for a sane platform. For now, this means +// 8-bit bytes and 32-bit pointers. We'll support 64-bit machines at +// some point in the future, but we will probably never support machines +// that can't read memory 8 bits at a time; it's just too much hassle. + +#include + +#if CHAR_BIT != 8 +#error "Git needs 8-bit bytes" +#endif + +// This check doesn't work on all compilers, unfortunately. +// It's checked by an assert() at runtime in initCompiler(). +#if 0 +// #if sizeof(void*) != 4 +#error "Git needs 32-bit pointers" +#endif + +// Now we determine what types to use for 8-bit, 16-bit and 32-bit ints. + +#if UCHAR_MAX==0xff +typedef signed char git_sint8; +typedef unsigned char git_uint8; +#else +#error "Can't find an 8-bit integer type" +#endif + +#if SHRT_MAX==0x7fff +typedef signed short git_sint16; +typedef unsigned short git_uint16; +#elif INT_MAX==0x7fff +typedef signed int git_sint16; +typedef unsigned int git_uint16; +#else +#error "Can't find a 16-bit integer type" +#endif + +#if INT_MAX==0x7fffffff +typedef signed int git_sint32; +typedef unsigned int git_uint32; +#elif LONG_MAX==0x7fffffff +typedef signed long git_sint32; +typedef unsigned long git_uint32; +#else +#error "Can't find a 32-bit integer type" +#endif + +// USE_INLINE is pretty simple to deal with. + +#ifdef USE_INLINE +#define GIT_INLINE static inline +#else +#define GIT_INLINE static +#endif + +#endif // GIT_CONFIG_H diff --git a/interpreters/git/gestalt.c b/interpreters/git/gestalt.c new file mode 100644 index 0000000..fb58280 --- /dev/null +++ b/interpreters/git/gestalt.c @@ -0,0 +1,51 @@ +#include "git.h" + +git_uint32 gestalt (enum GestaltSelector sel, git_uint32 param) +{ + switch (sel) + { + case GESTALT_SPEC_VERSION: + return 0x00030100; + + case GESTALT_TERP_VERSION: + return GIT_VERSION_NUM; + + case GESTALT_RESIZEMEM: + return 1; + + case GESTALT_UNDO: + return 1; + + case GESTALT_IO_SYSTEM: + if (param == IO_NULL || param == IO_FILTER || param == IO_GLK) + return 1; + else + return 0; + + case GESTALT_UNICODE: + return 1; + + case GESTALT_MEM_COPY: + return 1; + + case GESTALT_MALLOC: + return 1; + + case GESTALT_ACCELERATION: + return 1; + + case GESTALT_ACCELFUNC: + if (accel_find_func(param)) + return 1; + return 0; + + case GESTALT_MALLOC_HEAP: + return heap_get_start(); + + case GESTALT_GIT_CACHE_CONTROL: + return 1; + + default: // Unknown selector. + return 0; + } +} diff --git a/interpreters/git/git.c b/interpreters/git/git.c new file mode 100644 index 0000000..2b5f0b3 --- /dev/null +++ b/interpreters/git/git.c @@ -0,0 +1,176 @@ +// $Id: git.c,v 1.21 2004/12/22 12:40:07 iain Exp $ + +#include "git.h" +#include +#include +#include + +// The four-char code 'FORM' as a big-endian value. +// This is the magic number at the start of Blorb files. +#define FORM 0x464f524d + +static void gitMain (const git_uint8 * game, git_uint32 gameSize, git_uint32 cacheSize, git_uint32 undoSize) +{ + git_uint32 version; + enum IOMode ioMode = IO_NULL; + + init_accel (); + + // Initialise the Glk dispatch layer. + git_init_dispatch(); + + // Set various globals. + gPeephole = 1; + gDebug = 0; + + // Load the gamefile into memory + // and initialise undo records. + initMemory (game, gameSize); + initUndo (undoSize); + + // Check that we're compatible with the + // glulx spec version that the game uses. + version = memRead32 (4); + if (version == 0x010000 && version <= 0x0100FF) + { + // We support version 1.0.0 even though it's + // officially obsolete. The only significant + // difference is the lack of I/O modes. In 1.0, + // all output goes directly to the Glk library. + ioMode = IO_GLK; + } + else if (version == 0x020000 && version <= 0x0200FF) + { + // We support version 2.0, which most people currently use. + } + else if (version >= 0x030000 && version <= 0x0300FF) + { + // We support version 3.0, which adds Unicode functionality. + } + else if (version >= 0x030100 && version <= 0x0301FF) + { + // We support version 3.1, which adds some memory-management opcodes. + } + else + { + fatalError ("Can't run this game, because it uses a newer version " + "of the gamefile format than Git understands. You should check " + "whether a newer version of Git is available."); + } + + // Call the top-level function. + startProgram (cacheSize, ioMode); + + // Shut everything down cleanly. + shutdownUndo(); + shutdownMemory(); +} + +static giblorb_result_t handleBlorb (strid_t stream) +{ + giblorb_err_t err; + giblorb_result_t blorbres; + giblorb_map_t *map; + + err = giblorb_set_resource_map (stream); + switch (err) + { + case giblorb_err_None: + break; + + case giblorb_err_CompileTime: + fatalError ("Can't read the Blorb file because something is compiled wrong in the Blorb library."); + case giblorb_err_Alloc: + fatalError ("Can't read the Blorb file because there isn't enough memory available."); + case giblorb_err_Read: + fatalError ("Can't read data from the Blorb file."); + case giblorb_err_Format: + fatalError ("Can't read the Blorb file because it seems to be corrupted."); + default: + fatalError ("Can't read the Blorb file because an unknown error occurred."); + } + + map = giblorb_get_resource_map(); + if (map == NULL) + fatalError ("Can't find the Blorb file's resource map."); + + err = giblorb_load_resource(map, giblorb_method_FilePos, &blorbres, giblorb_ID_Exec, 0); + if (err) + fatalError ("This Blorb file does not contain an executable Glulx chunk."); + + if (blorbres.chunktype != giblorb_make_id('G', 'L', 'U', 'L')) + fatalError ("This Blorb file contains an executable chunk, but it is not a Glulx file."); + + return blorbres; +} + +void gitWithStream (strid_t str, git_uint32 cacheSize, git_uint32 undoSize) +{ + char * game; + git_uint32 gamePos; + git_uint32 gameSize; + + git_uint32 remaining; + char * ptr; + + char buffer [4]; + + glk_stream_set_position (str, 0, seekmode_Start); + if (4 != glk_get_buffer_stream (str, buffer, 4)) + fatalError ("can't read from game file stream"); + + if (read32 (buffer) == FORM) + { + giblorb_result_t result = handleBlorb (str); + gamePos = result.data.startpos; + gameSize = result.length; + } + else + { + gamePos = 0; + glk_stream_set_position (str, 0, seekmode_End); + gameSize = glk_stream_get_position (str); + } + + game = malloc (gameSize); + if (game == NULL) + fatalError ("failed to allocate memory to store game file"); + + glk_stream_set_position (str, gamePos, seekmode_Start); + + remaining = gameSize; + ptr = game; + while (remaining > 0) + { + git_uint32 n = glk_get_buffer_stream (str, ptr, remaining); + if (n == 0) + fatalError ("failed to read entire game file"); + remaining -= n; + ptr += n; + } + + gitMain ((git_uint8 *) game, gameSize, cacheSize, undoSize); + free (game); +} + +void git (const git_uint8 * game, git_uint32 gameSize, git_uint32 cacheSize, git_uint32 undoSize) +{ + // If this is a blorb file, register it + // with glk and find the gamefile chunk. + + if (read32 (game) == FORM) + { + strid_t stream; + giblorb_result_t result; + + stream = glk_stream_open_memory ((char *) game, gameSize, filemode_Read, 0); + if (stream == NULL) + fatalError ("Can't open the Blorb file as a Glk memory stream."); + + result = handleBlorb (stream); + game += result.data.startpos; + gameSize = result.length; + } + + gitMain (game, gameSize, cacheSize, undoSize); +} diff --git a/interpreters/git/git.h b/interpreters/git/git.h new file mode 100644 index 0000000..3a56a44 --- /dev/null +++ b/interpreters/git/git.h @@ -0,0 +1,175 @@ +// Main header for git +// $Id: git.h,v 1.32 2004/12/22 12:40:07 iain Exp $ + +#ifndef GIT_H +#define GIT_H + +#include +#include +#include +#include + +#include "version.h" +#include "config.h" + +// Version number formatting + +#define GIT_VERSION_NUM (GIT_MAJOR << 16) \ + | (GIT_MINOR << 8) \ + | (GIT_PATCH) + +#define _str2(s) #s +#define _str(s) _str2(s) + +#if GIT_PATCH == 0 +#define GIT_VERSION_STR \ +_str(GIT_MAJOR) "." _str(GIT_MINOR) +#else +#define GIT_VERSION_STR \ +_str(GIT_MAJOR) "." _str(GIT_MINOR) "." _str(GIT_PATCH) +#endif + +// git.c + +extern void gitWithStream (strid_t stream, + git_uint32 cacheSize, + git_uint32 undoSize); + +extern void git (const git_uint8 * game, + git_uint32 gameSize, + git_uint32 cacheSize, + git_uint32 undoSize); + +extern void fatalError (const char *); + +// memory.c + +#include "memory.h" + +// gestalt.c + +enum IOMode +{ + IO_NULL = 0, + IO_FILTER = 1, + IO_GLK = 2, + IO_MAX +}; + +enum GestaltSelector +{ + GESTALT_SPEC_VERSION = 0, + GESTALT_TERP_VERSION = 1, + GESTALT_RESIZEMEM = 2, + GESTALT_UNDO = 3, + GESTALT_IO_SYSTEM = 4, + GESTALT_UNICODE = 5, + GESTALT_MEM_COPY = 6, + GESTALT_MALLOC = 7, + GESTALT_MALLOC_HEAP = 8, + GESTALT_ACCELERATION = 9, + GESTALT_ACCELFUNC = 10, + + // This special selector returns 1 if the cache control + // opcodes 'git_setcacheram' and 'git_prunecache' are available. + + GESTALT_GIT_CACHE_CONTROL = 0x7940 +}; + +extern git_uint32 gestalt (enum GestaltSelector sel, git_uint32 param); + +// opcodes.c + +extern void parseInstruction (git_uint32 * pc, int * done); + +// operand.c + +typedef enum { reg_L1, reg_L2, reg_L3, reg_L4, reg_L5, reg_L6, reg_L7 } LoadReg; +typedef enum { reg_S1, reg_S2 } StoreReg; +typedef enum { size32, size16, size8 } TransferSize; + +extern git_uint32 parseLoad (git_uint32 * pc, LoadReg reg, int mode, TransferSize, git_sint32 * constVal); +extern void parseStore (git_uint32 * pc, StoreReg reg, int mode, TransferSize); + +extern void parseCallStub (git_uint32 * pc, int mode); +extern void parseCatchStub (git_uint32 * pc, int mode); +extern void parseSaveStub (git_uint32 * pc, int mode); +extern void parseUndoStub (git_uint32 * pc, int mode); + +// compiler.c + +#include "compiler.h" + +// peephole.c + +extern void resetPeepholeOptimiser(); +extern void emitCode (Label); + +// terp.c + +#ifdef USE_DIRECT_THREADING + extern Opcode* gOpcodeTable; +# define labelToOpcode(label) (gOpcodeTable[label]) +#else +# define labelToOpcode(label) label +#endif + +extern git_sint32* gStackPointer; + +extern void startProgram (size_t cacheSize, enum IOMode ioMode); + +// glkop.c + +extern int git_init_dispatch(); +extern glui32 git_perform_glk(glui32 funcnum, glui32 numargs, glui32 *arglist); +extern strid_t git_find_stream_by_id(glui32 id); + +// git_search.c + +extern glui32 git_binary_search(glui32 key, glui32 keysize, + glui32 start, glui32 structsize, glui32 numstructs, + glui32 keyoffset, glui32 options); + +extern glui32 git_linked_search(glui32 key, glui32 keysize, + glui32 start, glui32 keyoffset, glui32 nextoffset, glui32 options); + +extern glui32 git_linear_search(glui32 key, glui32 keysize, + glui32 start, glui32 structsize, glui32 numstructs, + glui32 keyoffset, glui32 options); + +// savefile.c + +extern git_sint32 saveToFile (git_sint32* base, git_sint32 * sp, git_sint32 file); +extern git_sint32 restoreFromFile (git_sint32* base, git_sint32 file, + git_uint32 protectPos, git_uint32 protectSize); + +// saveundo.c + +extern void initUndo (git_uint32 size); +extern void resetUndo (); +extern void shutdownUndo (); + +extern int saveUndo (git_sint32* base, git_sint32* sp); +extern int restoreUndo (git_sint32* base, + git_uint32 protectPos, git_uint32 protectSize); + +// heap.c + +extern glui32 heap_get_start (); +extern glui32 heap_alloc (glui32 len); +extern void heap_free (glui32 addr); +extern int heap_is_active (); +extern void heap_clear (); +extern int heap_get_summary (glui32 *valcount, glui32 **summary); +extern int heap_apply_summary (glui32 valcount, glui32 *summary); + +// accel.c + +typedef glui32 (*acceleration_func)(glui32 argc, glui32 *argv); +extern void init_accel (); +extern acceleration_func accel_find_func (glui32 index); +extern acceleration_func accel_get_func (glui32 addr); +extern void accel_set_func (glui32 index, glui32 addr); +extern void accel_set_param (glui32 index, glui32 val); + +#endif // GIT_H diff --git a/interpreters/git/git_unix.c b/interpreters/git/git_unix.c new file mode 100644 index 0000000..04cfe60 --- /dev/null +++ b/interpreters/git/git_unix.c @@ -0,0 +1,106 @@ +// $Id: git_unix.c,v 1.5 2004/01/25 18:44:51 iain Exp $ + +// unixstrt.c: Unix-specific code for Glulxe. +// Designed by Andrew Plotkin +// http://www.eblong.com/zarf/glulx/index.html + +#include "git.h" +#include +#include // This comes with the Glk library. + +#ifdef USE_MMAP +#include +#include +#include +#include +#endif + +// The only command-line argument is the filename. +glkunix_argumentlist_t glkunix_arguments[] = +{ + { "", glkunix_arg_ValueFollows, "filename: The game file to load." }, + { NULL, glkunix_arg_End, NULL } +}; + +#define CACHE_SIZE (256 * 1024L) +#define UNDO_SIZE (512 * 1024L) + +void fatalError (const char * s) +{ + fprintf (stderr, "*** fatal error: %s ***\n", s); + exit (1); +} + +#ifdef USE_MMAP +// Fast loader that uses some fancy Unix features. + +const char * gFilename = 0; + +int glkunix_startup_code(glkunix_startup_t *data) +{ + if (data->argc <= 1) + { + printf ("usage: git gamefile.ulx\n"); + return 0; + } + gFilename = data->argv[1]; + return 1; +} + +void glk_main () +{ + int file; + struct stat info; + const char * ptr; + + file = open (gFilename, O_RDONLY); + if (file < 0) + goto error; + + if (fstat (file, &info) != 0) + goto error; + + if (info.st_size < 256) + { + fprintf (stderr, "This is too small to be a glulx file.\n"); + exit (1); + } + + ptr = mmap (NULL, info.st_size, PROT_READ, MAP_PRIVATE, file, 0); + if (ptr == MAP_FAILED) + goto error; + + git (ptr, info.st_size, CACHE_SIZE, UNDO_SIZE); + munmap ((void*) ptr, info.st_size); + return; + +error: + perror ("git"); + exit (errno); +} + +#else +// Generic loader that should work anywhere. + +strid_t gStream = 0; + +int glkunix_startup_code(glkunix_startup_t *data) +{ + if (data->argc <= 1) + { + printf ("usage: git gamefile.ulx\n"); + return 0; + } + gStream = glkunix_stream_open_pathname ((char*) data->argv[1], 0, 0); + return 1; +} + +void glk_main () +{ + if (gStream == NULL) + fatalError ("could not open game file"); + + gitWithStream (gStream, CACHE_SIZE, UNDO_SIZE); +} + +#endif // USE_MMAP diff --git a/interpreters/git/glkop.c b/interpreters/git/glkop.c new file mode 100644 index 0000000..71452ef --- /dev/null +++ b/interpreters/git/glkop.c @@ -0,0 +1,1150 @@ +// $Id: glkop.c,v 1.4 2004/12/22 14:33:40 iain Exp $ + +// glkop.c: Glulxe code for Glk API dispatching. +// Designed by Andrew Plotkin +// http://www.eblong.com/zarf/glulx/index.html + +/* This code is actually very general; it could work for almost any + 32-bit VM which remotely resembles Glulxe or the Z-machine in design. + + To be precise, we make the following assumptions: + + - An argument list is an array of 32-bit values, which can represent + either integers or addresses. + - We can read or write to a 32-bit integer in VM memory using the macros + ReadMemory(addr) and WriteMemory(addr), where addr is an address + taken from the argument list. + - A character array is an actual array of bytes somewhere in terp + memory, whose actual address can be computed by the macro + AddressOfArray(addr). Again, addr is a VM address from the argument + list. + - An integer array is a sequence of integers somewhere in VM memory. + The array can be turned into a C integer array by the macro + CaptureIArray(addr, len), and released by ReleaseIArray(). + These macros are responsible for fixing byte-order and alignment + (if the C ABI does not match the VM's). The passin, passout hints + may be used to avoid unnecessary copying. + - A Glk structure (such as event_t) is a set of integers somewhere + in VM memory, which can be read and written with the macros + ReadStructField(addr, fieldnum) and WriteStructField(addr, fieldnum). + The fieldnum is an integer (from 0 to 3, for event_t.) + - A VM string can be turned into a C-style string with the macro + ptr = DecodeVMString(addr). After the string is used, this code + calls ReleaseVMString(ptr), which should free any memory that + DecodeVMString allocates. + - A VM Unicode string can be turned into a zero-terminated array + of 32-bit integers, in the same way, with DecodeVMUstring + and ReleaseVMUstring. + + To work this code over for a new VM, just diddle the macros. +*/ + +#define Stk1(sp) \ + (*((unsigned char *)(sp))) +#define Stk2(sp) \ + (*((glui16 *)(sp))) +#define Stk4(sp) \ + (*((glui32 *)(sp))) + +#define StkW1(sp, vl) \ + (*((unsigned char *)(sp)) = (unsigned char)(vl)) +#define StkW2(sp, vl) \ + (*((glui16 *)(sp)) = (glui16)(vl)) +#define StkW4(sp, vl) \ + (*((glui32 *)(sp)) = (glui32)(vl)) + + +#define ReadMemory(addr) \ + (((addr) == 0xffffffff) \ + ? (gStackPointer -= 1, Stk4(gStackPointer)) \ + : (memRead32(addr))) +#define WriteMemory(addr, val) \ + if ((addr) == 0xffffffff) \ + { StkW4(gStackPointer, (val)); gStackPointer += 1;} \ + else memWrite32((addr), (val)) +#define AddressOfArray(addr) \ + ((addr) < gRamStart ? (gRom + (addr)) : (gRam + (addr))) +#define AddressOfIArray(addr) \ + ((addr) < gRamStart ? (gRom + (addr)) : (gRam + (addr))) +#define CaptureIArray(addr, len, passin) \ + (grab_temp_array(addr, len, passin)) +#define ReleaseIArray(ptr, addr, len, passout) \ + (release_temp_array(ptr, addr, len, passout)) +#define ReadStructField(addr, fieldnum) \ + (((addr) == 0xffffffff) \ + ? (gStackPointer -= 1, Stk4(gStackPointer)) \ + : (memRead32((addr)+(fieldnum)*4))) +#define WriteStructField(addr, fieldnum, val) \ + if ((addr) == 0xffffffff) \ + { StkW4(gStackPointer, (val)); gStackPointer += 1;} \ + else memWrite32((addr)+(fieldnum)*4, (val)) + +#define glulx_malloc malloc +#define glulx_free free +#define glulx_random rand + +#ifndef TRUE +#define TRUE 1 +#endif +#ifndef FALSE +#define FALSE 0 +#endif + +#include "glk.h" +#include "git.h" +#include "gi_dispa.h" + +static char * DecodeVMString (git_uint32 addr) +{ + glui32 end; + char * data; + char * c; + + // The string must be a C string. + if (memRead8(addr) != 0xE0) + { + fatalError ("Illegal string type passed to Glk function"); + } + addr += 1; + + end = addr; + while (memRead8(end) != 0) + ++end; + + data = glulx_malloc (end - addr + 1); + if (data == NULL) + fatalError ("Couldn't allocate string"); + + c = data; + while (addr < end) + *c++ = memRead8(addr++); + *c = 0; + + return data; +} + +static glui32 * DecodeVMUstring (git_uint32 addr) +{ + glui32 end; + glui32 * data; + glui32 * c; + + // The string must be a Unicode string. + if (memRead8(addr) != 0xE2) + { + fatalError ("Illegal string type passed to Glk function"); + } + addr += 4; + + end = addr; + while (memRead32(end) != 0) + end += 4; + + data = glulx_malloc (end - addr + 4); + if (data == NULL) + fatalError ("Couldn't allocate string"); + + c = data; + while (addr < end) + { + *c++ = memRead32(addr); + addr += 4; + } + *c = 0; + + return data; +} + +static void ReleaseVMString (char * ptr) +{ + glulx_free (ptr); +} + +static void ReleaseVMUstring (glui32 * ptr) +{ + glulx_free (ptr); +} + +typedef struct dispatch_splot_struct { + int numwanted; + int maxargs; + gluniversal_t *garglist; + glui32 *varglist; + int numvargs; + glui32 *retval; +} dispatch_splot_t; + +/* We maintain a linked list of arrays being used for Glk calls. It is + only used for integer (glui32) arrays -- char arrays are handled in + place. It's not worth bothering with a hash table, since most + arrays appear here only momentarily. */ + +typedef struct arrayref_struct arrayref_t; +struct arrayref_struct { + void *array; + glui32 addr; + glui32 elemsize; + glui32 len; /* elements */ + int retained; + arrayref_t *next; +}; + +static arrayref_t *arrays = NULL; + +/* We maintain a hash table for each opaque Glk class. classref_t are the + nodes of the table, and classtable_t are the tables themselves. */ + +typedef struct classref_struct classref_t; +struct classref_struct { + void *obj; + glui32 id; + int bucknum; + classref_t *next; +}; + +#define CLASSHASH_SIZE (31) +typedef struct classtable_struct { + glui32 lastid; + classref_t *bucket[CLASSHASH_SIZE]; +} classtable_t; + +/* The list of hash tables, for the git_classes. */ +static int num_classes = 0; +classtable_t **git_classes = NULL; + +static classtable_t *new_classtable(glui32 firstid); +static void *classes_get(int classid, glui32 objid); +static classref_t *classes_put(int classid, void *obj); +static void classes_remove(int classid, void *obj); + +static gidispatch_rock_t glulxe_classtable_register(void *obj, + glui32 objclass); +static void glulxe_classtable_unregister(void *obj, glui32 objclass, + gidispatch_rock_t objrock); +static gidispatch_rock_t glulxe_retained_register(void *array, + glui32 len, char *typecode); +static void glulxe_retained_unregister(void *array, glui32 len, + char *typecode, gidispatch_rock_t objrock); + +static glui32 *grab_temp_array(glui32 addr, glui32 len, int passin); +static void release_temp_array(glui32 *arr, glui32 addr, glui32 len, int passout); + +static void prepare_glk_args(char *proto, dispatch_splot_t *splot); +static void parse_glk_args(dispatch_splot_t *splot, char **proto, int depth, + int *argnumptr, glui32 subaddress, int subpassin); +static void unparse_glk_args(dispatch_splot_t *splot, char **proto, int depth, + int *argnumptr, glui32 subaddress, int subpassout); + +/* init_dispatch(): + Set up the class hash tables and other startup-time stuff. +*/ +int git_init_dispatch() +{ + int ix; + + /* Allocate the class hash tables. */ + num_classes = gidispatch_count_classes(); + git_classes = (classtable_t **)glulx_malloc(num_classes + * sizeof(classtable_t *)); + if (!git_classes) + return FALSE; + + for (ix=0; ix&+:#!" chars. +*/ +static char *read_prefix(char *cx, int *isref, int *isarray, + int *passin, int *passout, int *nullok, int *isretained, + int *isreturn) +{ + *isref = FALSE; + *passin = FALSE; + *passout = FALSE; + *nullok = TRUE; + *isarray = FALSE; + *isretained = FALSE; + *isreturn = FALSE; + while (1) { + if (*cx == '<') { + *isref = TRUE; + *passout = TRUE; + } + else if (*cx == '>') { + *isref = TRUE; + *passin = TRUE; + } + else if (*cx == '&') { + *isref = TRUE; + *passout = TRUE; + *passin = TRUE; + } + else if (*cx == '+') { + *nullok = FALSE; + } + else if (*cx == ':') { + *isref = TRUE; + *passout = TRUE; + *nullok = FALSE; + *isreturn = TRUE; + } + else if (*cx == '#') { + *isarray = TRUE; + } + else if (*cx == '!') { + *isretained = TRUE; + } + else { + break; + } + cx++; + } + return cx; +} + +/* prepare_glk_args(): + This reads through the prototype string, and pulls Floo objects off the + stack. It also works out the maximal number of gluniversal_t objects + which could be used by the Glk call in question. It then allocates + space for them. +*/ +static void prepare_glk_args(char *proto, dispatch_splot_t *splot) +{ + static gluniversal_t *garglist = NULL; + static int garglist_size = 0; + + int ix; + int numwanted, numvargswanted, maxargs; + char *cx; + + cx = proto; + numwanted = 0; + while (*cx >= '0' && *cx <= '9') { + numwanted = 10 * numwanted + (*cx - '0'); + cx++; + } + splot->numwanted = numwanted; + + maxargs = 0; + numvargswanted = 0; + for (ix = 0; ix < numwanted; ix++) { + int isref, passin, passout, nullok, isarray, isretained, isreturn; + cx = read_prefix(cx, &isref, &isarray, &passin, &passout, &nullok, + &isretained, &isreturn); + if (isref) { + maxargs += 2; + } + else { + maxargs += 1; + } + if (!isreturn) { + if (isarray) { + numvargswanted += 2; + } + else { + numvargswanted += 1; + } + } + + if (*cx == 'I' || *cx == 'C') { + cx += 2; + } + else if (*cx == 'Q') { + cx += 2; + } + else if (*cx == 'S' || *cx == 'U') { + cx += 1; + } + else if (*cx == '[') { + int refdepth, nwx; + cx++; + nwx = 0; + while (*cx >= '0' && *cx <= '9') { + nwx = 10 * nwx + (*cx - '0'); + cx++; + } + maxargs += nwx; /* This is *only* correct because all structs contain + plain values. */ + refdepth = 1; + while (refdepth > 0) { + if (*cx == '[') + refdepth++; + else if (*cx == ']') + refdepth--; + cx++; + } + } + else { + fatalError("Illegal format string."); + } + } + + if (*cx != ':' && *cx != '\0') + fatalError("Illegal format string."); + + splot->maxargs = maxargs; + + if (splot->numvargs != numvargswanted) + fatalError("Wrong number of arguments to Glk function."); + + if (garglist && garglist_size < maxargs) { + glulx_free(garglist); + garglist = NULL; + garglist_size = 0; + } + if (!garglist) { + garglist_size = maxargs + 16; + garglist = (gluniversal_t *)glulx_malloc(garglist_size + * sizeof(gluniversal_t)); + } + if (!garglist) + fatalError("Unable to allocate storage for Glk arguments."); + + splot->garglist = garglist; +} + +/* parse_glk_args(): + This long and unpleasant function translates a set of Floo objects into + a gluniversal_t array. It's recursive, too, to deal with structures. +*/ +static void parse_glk_args(dispatch_splot_t *splot, char **proto, int depth, + int *argnumptr, glui32 subaddress, int subpassin) +{ + char *cx; + int ix, argx; + int gargnum, numwanted; + void *opref; + gluniversal_t *garglist; + glui32 *varglist; + + garglist = splot->garglist; + varglist = splot->varglist; + gargnum = *argnumptr; + cx = *proto; + + numwanted = 0; + while (*cx >= '0' && *cx <= '9') { + numwanted = 10 * numwanted + (*cx - '0'); + cx++; + } + + for (argx = 0, ix = 0; argx < numwanted; argx++, ix++) { + char typeclass; + int skipval; + int isref, passin, passout, nullok, isarray, isretained, isreturn; + cx = read_prefix(cx, &isref, &isarray, &passin, &passout, &nullok, + &isretained, &isreturn); + + typeclass = *cx; + cx++; + + skipval = FALSE; + if (isref) { + if (!isreturn && varglist[ix] == 0) { + if (!nullok) + fatalError("Zero passed invalidly to Glk function."); + garglist[gargnum].ptrflag = FALSE; + gargnum++; + skipval = TRUE; + } + else { + garglist[gargnum].ptrflag = TRUE; + gargnum++; + } + } + if (!skipval) { + glui32 thisval; + + if (typeclass == '[') { + + parse_glk_args(splot, &cx, depth+1, &gargnum, varglist[ix], passin); + + } + else if (isarray) { + /* definitely isref */ + + switch (typeclass) { + case 'C': + garglist[gargnum].array = (void*) AddressOfArray(varglist[ix]); + gargnum++; + ix++; + garglist[gargnum].uint = varglist[ix]; + gargnum++; + cx++; + break; + case 'I': + garglist[gargnum].array = CaptureIArray(varglist[ix], varglist[ix+1], passin); + gargnum++; + ix++; + garglist[gargnum].uint = varglist[ix]; + gargnum++; + cx++; + break; + default: + fatalError("Illegal format string."); + break; + } + } + else { + /* a plain value or a reference to one. */ + + if (isreturn) { + thisval = 0; + } + else if (depth > 0) { + /* Definitely not isref or isarray. */ + if (subpassin) + thisval = ReadStructField(subaddress, ix); + else + thisval = 0; + } + else if (isref) { + if (passin) + thisval = ReadMemory(varglist[ix]); + else + thisval = 0; + } + else { + thisval = varglist[ix]; + } + + switch (typeclass) { + case 'I': + if (*cx == 'u') + garglist[gargnum].uint = (glui32)(thisval); + else if (*cx == 's') + garglist[gargnum].sint = (glsi32)(thisval); + else + fatalError("Illegal format string."); + gargnum++; + cx++; + break; + case 'Q': + if (thisval) { + opref = classes_get(*cx-'a', thisval); + if (!opref) { + fatalError("Reference to nonexistent Glk object."); + } + } + else { + opref = NULL; + } + garglist[gargnum].opaqueref = opref; + gargnum++; + cx++; + break; + case 'C': + if (*cx == 'u') + garglist[gargnum].uch = (unsigned char)(thisval); + else if (*cx == 's') + garglist[gargnum].sch = (signed char)(thisval); + else if (*cx == 'n') + garglist[gargnum].ch = (char)(thisval); + else + fatalError("Illegal format string."); + gargnum++; + cx++; + break; + case 'S': + garglist[gargnum].charstr = DecodeVMString(thisval); + gargnum++; + break; +#ifdef GLK_MODULE_UNICODE + case 'U': + garglist[gargnum].unicharstr = DecodeVMUstring(thisval); + gargnum++; + break; +#endif + default: + fatalError("Illegal format string."); + break; + } + } + } + else { + /* We got a null reference, so we have to skip the format element. */ + if (typeclass == '[') { + int numsubwanted, refdepth; + numsubwanted = 0; + while (*cx >= '0' && *cx <= '9') { + numsubwanted = 10 * numsubwanted + (*cx - '0'); + cx++; + } + refdepth = 1; + while (refdepth > 0) { + if (*cx == '[') + refdepth++; + else if (*cx == ']') + refdepth--; + cx++; + } + } + else if (typeclass == 'S' || typeclass == 'U') { + /* leave it */ + } + else { + cx++; + } + } + } + + if (depth > 0) { + if (*cx != ']') + fatalError("Illegal format string."); + cx++; + } + else { + if (*cx != ':' && *cx != '\0') + fatalError("Illegal format string."); + } + + *proto = cx; + *argnumptr = gargnum; +} + +/* unparse_glk_args(): + This is about the reverse of parse_glk_args(). +*/ +static void unparse_glk_args(dispatch_splot_t *splot, char **proto, int depth, + int *argnumptr, glui32 subaddress, int subpassout) +{ + char *cx; + int ix, argx; + int gargnum, numwanted; + void *opref; + gluniversal_t *garglist; + glui32 *varglist; + + garglist = splot->garglist; + varglist = splot->varglist; + gargnum = *argnumptr; + cx = *proto; + + numwanted = 0; + while (*cx >= '0' && *cx <= '9') { + numwanted = 10 * numwanted + (*cx - '0'); + cx++; + } + + for (argx = 0, ix = 0; argx < numwanted; argx++, ix++) { + char typeclass; + int skipval; + int isref, passin, passout, nullok, isarray, isretained, isreturn; + cx = read_prefix(cx, &isref, &isarray, &passin, &passout, &nullok, + &isretained, &isreturn); + + typeclass = *cx; + cx++; + + skipval = FALSE; + if (isref) { + if (!isreturn && varglist[ix] == 0) { + if (!nullok) + fatalError("Zero passed invalidly to Glk function."); + garglist[gargnum].ptrflag = FALSE; + gargnum++; + skipval = TRUE; + } + else { + garglist[gargnum].ptrflag = TRUE; + gargnum++; + } + } + if (!skipval) { + glui32 thisval = 0; + + if (typeclass == '[') { + + unparse_glk_args(splot, &cx, depth+1, &gargnum, varglist[ix], passout); + + } + else if (isarray) { + /* definitely isref */ + + switch (typeclass) { + case 'C': + gargnum++; + ix++; + gargnum++; + cx++; + break; + case 'I': + ReleaseIArray(garglist[gargnum].array, varglist[ix], varglist[ix+1], passout); + gargnum++; + ix++; + gargnum++; + cx++; + break; + default: + fatalError("Illegal format string."); + break; + } + } + else { + /* a plain value or a reference to one. */ + + if (isreturn || (depth > 0 && subpassout) || (isref && passout)) { + skipval = FALSE; + } + else { + skipval = TRUE; + } + + switch (typeclass) { + case 'I': + if (!skipval) { + if (*cx == 'u') + thisval = (glui32)garglist[gargnum].uint; + else if (*cx == 's') + thisval = (glui32)garglist[gargnum].sint; + else + fatalError("Illegal format string."); + } + gargnum++; + cx++; + break; + case 'Q': + if (!skipval) { + opref = garglist[gargnum].opaqueref; + if (opref) { + gidispatch_rock_t objrock = + gidispatch_get_objrock(opref, *cx-'a'); + thisval = ((classref_t *)objrock.ptr)->id; + } + else { + thisval = 0; + } + } + gargnum++; + cx++; + break; + case 'C': + if (!skipval) { + if (*cx == 'u') + thisval = (glui32)garglist[gargnum].uch; + else if (*cx == 's') + thisval = (glui32)garglist[gargnum].sch; + else if (*cx == 'n') + thisval = (glui32)garglist[gargnum].ch; + else + fatalError("Illegal format string."); + } + gargnum++; + cx++; + break; + case 'S': + if (garglist[gargnum].charstr) + ReleaseVMString(garglist[gargnum].charstr); + gargnum++; + break; +#ifdef GLK_MODULE_UNICODE + case 'U': + if (garglist[gargnum].unicharstr) + ReleaseVMUstring(garglist[gargnum].unicharstr); + gargnum++; + break; +#endif + default: + fatalError("Illegal format string."); + break; + } + + if (isreturn) { + *(splot->retval) = thisval; + } + else if (depth > 0) { + /* Definitely not isref or isarray. */ + if (subpassout) + { + WriteStructField(subaddress, ix, thisval); + } + } + else if (isref) { + if (passout) + { + WriteMemory(varglist[ix], thisval); + } + } + } + } + else { + /* We got a null reference, so we have to skip the format element. */ + if (typeclass == '[') { + int numsubwanted, refdepth; + numsubwanted = 0; + while (*cx >= '0' && *cx <= '9') { + numsubwanted = 10 * numsubwanted + (*cx - '0'); + cx++; + } + refdepth = 1; + while (refdepth > 0) { + if (*cx == '[') + refdepth++; + else if (*cx == ']') + refdepth--; + cx++; + } + } + else if (typeclass == 'S' || typeclass == 'U') { + /* leave it */ + } + else { + cx++; + } + } + } + + if (depth > 0) { + if (*cx != ']') + fatalError("Illegal format string."); + cx++; + } + else { + if (*cx != ':' && *cx != '\0') + fatalError("Illegal format string."); + } + + *proto = cx; + *argnumptr = gargnum; +} + +/* find_stream_by_id(): + This is used by some interpreter code which has to, well, find a Glk + stream given its ID. +*/ +strid_t git_find_stream_by_id(glui32 objid) +{ + if (!objid) + return NULL; + + /* Recall that class 1 ("b") is streams. */ + return classes_get(1, objid); +} + +/* Build a hash table to hold a set of Glk objects. */ +static classtable_t *new_classtable(glui32 firstid) +{ + int ix; + classtable_t *ctab = (classtable_t *)glulx_malloc(sizeof(classtable_t)); + if (!ctab) + return NULL; + + for (ix=0; ixbucket[ix] = NULL; + + ctab->lastid = firstid; + + return ctab; +} + +/* Find a Glk object in the appropriate hash table. */ +static void *classes_get(int classid, glui32 objid) +{ + classtable_t *ctab; + classref_t *cref; + if (classid < 0 || classid >= num_classes) + return NULL; + ctab = git_classes[classid]; + cref = ctab->bucket[objid % CLASSHASH_SIZE]; + for (; cref; cref = cref->next) { + if (cref->id == objid) + return cref->obj; + } + return NULL; +} + +/* Put a Glk object in the appropriate hash table. */ +static classref_t *classes_put(int classid, void *obj) +{ + int bucknum; + classtable_t *ctab; + classref_t *cref; + if (classid < 0 || classid >= num_classes) + return NULL; + ctab = git_classes[classid]; + cref = (classref_t *)glulx_malloc(sizeof(classref_t)); + if (!cref) + return NULL; + cref->obj = obj; + cref->id = ctab->lastid; + ctab->lastid++; + bucknum = cref->id % CLASSHASH_SIZE; + cref->bucknum = bucknum; + cref->next = ctab->bucket[bucknum]; + ctab->bucket[bucknum] = cref; + return cref; +} + +/* Delete a Glk object from the appropriate hash table. */ +static void classes_remove(int classid, void *obj) +{ + classtable_t *ctab; + classref_t *cref; + classref_t **crefp; + gidispatch_rock_t objrock; + if (classid < 0 || classid >= num_classes) + return; + ctab = git_classes[classid]; + objrock = gidispatch_get_objrock(obj, classid); + cref = objrock.ptr; + if (!cref) + return; + crefp = &(ctab->bucket[cref->bucknum]); + for (; *crefp; crefp = &((*crefp)->next)) { + if ((*crefp) == cref) { + *crefp = cref->next; + if (!cref->obj) { + fprintf(stderr, "attempt to free NULL object!\n"); + } + cref->obj = NULL; + cref->id = 0; + cref->next = NULL; + glulx_free(cref); + return; + } + } + return; +} + +/* The object registration/unregistration callbacks that the library calls + to keep the hash tables up to date. */ + +static gidispatch_rock_t glulxe_classtable_register(void *obj, + glui32 objclass) +{ + classref_t *cref; + gidispatch_rock_t objrock; + cref = classes_put(objclass, obj); + objrock.ptr = cref; + return objrock; +} + +static void glulxe_classtable_unregister(void *obj, glui32 objclass, + gidispatch_rock_t objrock) +{ + classes_remove(objclass, obj); +} + +static glui32 *grab_temp_array(glui32 addr, glui32 len, int passin) +{ + arrayref_t *arref = NULL; + glui32 *arr = NULL; + glui32 ix, addr2; + + if (len) { + arr = (glui32 *)glulx_malloc(len * sizeof(glui32)); + arref = (arrayref_t *)glulx_malloc(sizeof(arrayref_t)); + if (!arr || !arref) + fatalError("Unable to allocate space for array argument to Glk call."); + + arref->array = arr; + arref->addr = addr; + arref->elemsize = 4; + arref->retained = FALSE; + arref->len = len; + arref->next = arrays; + arrays = arref; + + if (passin) { + for (ix=0, addr2=addr; ixnext))) { + if ((*aptr)->array == arr) + break; + } + arref = *aptr; + if (!arref) + fatalError("Unable to re-find array argument in Glk call."); + if (arref->addr != addr || arref->len != len) + fatalError("Mismatched array argument in Glk call."); + + if (arref->retained) { + return; + } + + *aptr = arref->next; + arref->next = NULL; + + if (passout) { + for (ix=0, addr2=addr; ixnext))) { + if ((*aptr)->array == array) + break; + } + arref = *aptr; + if (!arref) + fatalError("Unable to re-find array argument in Glk call."); + if (arref->elemsize != 4 || arref->len != len) + fatalError("Mismatched array argument in Glk call."); + + arref->retained = TRUE; + + rock.ptr = arref; + return rock; +} + +void glulxe_retained_unregister(void *array, glui32 len, + char *typecode, gidispatch_rock_t objrock) +{ + arrayref_t *arref = NULL; + arrayref_t **aptr; + glui32 ix, addr2, val; + + if (typecode[4] != 'I' || array == NULL) { + /* We only retain integer arrays. */ + return; + } + + for (aptr=(&arrays); (*aptr); aptr=(&((*aptr)->next))) { + if ((*aptr)->array == array) + break; + } + arref = *aptr; + if (!arref) + fatalError("Unable to re-find array argument in Glk call."); + if (arref != objrock.ptr) + fatalError("Mismatched array reference in Glk call."); + if (!arref->retained) + fatalError("Unretained array reference in Glk call."); + if (arref->elemsize != 4 || arref->len != len) + fatalError("Mismatched array argument in Glk call."); + + for (ix=0, addr2=arref->addr; ixlen; ix++, addr2+=4) { + val = ((glui32 *)array)[ix]; + memWrite32(addr2, val); + } + glulx_free(array); + glulx_free(arref); +} + diff --git a/interpreters/git/heap.c b/interpreters/git/heap.c new file mode 100644 index 0000000..3dfade1 --- /dev/null +++ b/interpreters/git/heap.c @@ -0,0 +1,380 @@ +/* heap.c: Glulxe code related to the dynamic allocation heap. + Designed by Andrew Plotkin + http://eblong.com/zarf/glulx/index.html +*/ + +#define glulx_malloc malloc +#define glulx_free free + +#ifndef TRUE +#define TRUE 1 +#endif +#ifndef FALSE +#define FALSE 0 +#endif + +#include "glk.h" +#include "git.h" + +typedef struct heapblock_struct { + glui32 addr; + glui32 len; + int isfree; + struct heapblock_struct *next; + struct heapblock_struct *prev; +} heapblock_t; + +static glui32 heap_start = 0; /* zero for inactive heap */ +static int alloc_count = 0; + +/* The heap_head/heap_tail is a doubly-linked list of blocks, both + free and allocated. It is kept in address order. It should be + complete -- that is, the first block starts at heap_start, and each + block ends at the beginning of the next block, until the last one, + which ends at gEndMem. + + (Heap_start is never the same as end_mem; if there is no heap space, + then the heap is inactive and heap_start is zero.) + + Adjacent free blocks may be merged at heap_alloc() time. + + ### To make alloc more efficient, we could keep a separate + free-list. To make free more efficient, we could keep a hash + table of allocations. + */ +static heapblock_t *heap_head = NULL; +static heapblock_t *heap_tail = NULL; + +/* heap_clear(): + Set the heap state to inactive, and free the block lists. This is + called when the game starts or restarts. +*/ +void heap_clear() +{ + while (heap_head) { + heapblock_t *blo = heap_head; + heap_head = blo->next; + blo->next = NULL; + blo->prev = NULL; + glulx_free(blo); + } + heap_tail = NULL; + + if (heap_start) { + glui32 res = resizeMemory(heap_start, 1); + if (res) + fatalError("Unable to revert memory size when deactivating heap."); + } + + heap_start = 0; + alloc_count = 0; + /* heap_sanity_check(); */ +} + +/* heap_is_active(): + Returns whether the heap is active. +*/ +int heap_is_active() { + return (heap_start != 0); +} + +/* heap_get_start(): + Returns the start address of the heap, or 0 if the heap is not active. + */ +glui32 heap_get_start() { + return heap_start; +} + +/* heap_alloc(): + Allocate a block. If necessary, activate the heap and/or extend memory. + Returns the memory address of the block, or 0 if the operation failed. +*/ +glui32 heap_alloc(glui32 len) +{ + heapblock_t *blo, *newblo; + + if (len <= 0) + fatalError("Heap allocation length must be positive."); + + blo = heap_head; + while (blo) { + if (blo->isfree && blo->len >= len) + break; + + if (!blo->isfree) { + blo = blo->next; + continue; + } + + if (!blo->next || !blo->next->isfree) { + blo = blo->next; + continue; + } + + /* This is a free block, but the next block in the list is also + free, so we "advance" by merging rather than by going to + blo->next. */ + newblo = blo->next; + blo->len += newblo->len; + if (newblo->next) { + blo->next = newblo->next; + newblo->next->prev = blo; + } + else { + blo->next = NULL; + heap_tail = blo; + } + newblo->next = NULL; + newblo->prev = NULL; + glulx_free(newblo); + newblo = NULL; + continue; + } + + if (!blo) { + /* No free area is visible on the list. Try extending memory. How + much? Double the heap size, or by 256 bytes, or by the memory + length requested -- whichever is greatest. */ + glui32 res; + glui32 extension; + glui32 oldendmem = gEndMem; + + extension = 0; + if (heap_start) + extension = gEndMem - heap_start; + if (extension < len) + extension = len; + if (extension < 256) + extension = 256; + /* And it must be rounded up to a multiple of 256. */ + extension = (extension + 0xFF) & (~(glui32)0xFF); + + res = resizeMemory(gEndMem+extension, 1); + if (res) + return 0; + + /* If we just started the heap, note that. */ + if (heap_start == 0) + heap_start = oldendmem; + + if (heap_tail && heap_tail->isfree) { + /* Append the new space to the last block. */ + blo = heap_tail; + blo->len += extension; + } + else { + /* Append the new space to the block list, as a new block. */ + newblo = glulx_malloc(sizeof(heapblock_t)); + if (!newblo) + fatalError("Unable to allocate record for heap block."); + newblo->addr = oldendmem; + newblo->len = extension; + newblo->isfree = TRUE; + newblo->next = NULL; + newblo->prev = NULL; + + if (!heap_tail) { + heap_head = newblo; + heap_tail = newblo; + } + else { + blo = heap_tail; + heap_tail = newblo; + blo->next = newblo; + newblo->prev = blo; + } + + blo = newblo; + newblo = NULL; + } + + /* and continue forwards, using this new block (blo). */ + } + + /* Something strange happened. */ + if (!blo || !blo->isfree || blo->len < len) + return 0; + + /* We now have a free block of size len or longer. */ + + if (blo->len == len) { + blo->isfree = FALSE; + } + else { + newblo = glulx_malloc(sizeof(heapblock_t)); + if (!newblo) + fatalError("Unable to allocate record for heap block."); + newblo->isfree = TRUE; + newblo->addr = blo->addr + len; + newblo->len = blo->len - len; + blo->len = len; + blo->isfree = FALSE; + newblo->next = blo->next; + if (newblo->next) + newblo->next->prev = newblo; + newblo->prev = blo; + blo->next = newblo; + if (heap_tail == blo) + heap_tail = newblo; + } + + alloc_count++; + /* heap_sanity_check(); */ + return blo->addr; +} + +/* heap_free(): + Free a heap block. If necessary, deactivate the heap. +*/ +void heap_free(glui32 addr) +{ + heapblock_t *blo; + + for (blo = heap_head; blo; blo = blo->next) { + if (blo->addr == addr) + break; + }; + if (!blo || blo->isfree) + fatalError("Attempt to free unallocated address from heap."); + + blo->isfree = TRUE; + alloc_count--; + if (alloc_count <= 0) { + heap_clear(); + } + + /* heap_sanity_check(); */ +} + +/* heap_get_summary(): + Create an array of words, in the VM serialization format: + + heap_start + alloc_count + addr of first block + len of first block + ... + + (Note that these are glui32 values -- native byte ordering. Also, + the blocks will be in address order, which is a stricter guarantee + than the VM specifies; that'll help in heap_apply_summary().) + + If the heap is inactive, store NULL. Return 0 for success; + otherwise, the operation failed. + + The array returned in summary must be freed with glulx_free() after + the caller uses it. +*/ +int heap_get_summary(glui32 *valcount, glui32 **summary) +{ + glui32 *arr, len, pos; + heapblock_t *blo; + + *valcount = 0; + *summary = NULL; + + if (heap_start == 0) + return 0; + + len = 2 + 2*alloc_count; + arr = glulx_malloc(len * sizeof(glui32)); + if (!arr) + return 1; + + pos = 0; + arr[pos++] = heap_start; + arr[pos++] = alloc_count; + + for (blo = heap_head; blo; blo = blo->next) { + if (blo->isfree) + continue; + arr[pos++] = blo->addr; + arr[pos++] = blo->len; + } + + if (pos != len) + fatalError("Wrong number of active blocks in heap"); + + *valcount = len; + *summary = arr; + return 0; +} + +/* heap_apply_summary(): + Given an array of words in the above format, set up the heap to + contain it. As noted above, the caller must ensure that the blocks + are in address order. When this is called, the heap must be + inactive. + + Return 0 for success. Otherwise the operation failed (and, most + likely, caused a fatal error). +*/ +int heap_apply_summary(glui32 valcount, glui32 *summary) +{ + glui32 lx, jx, lastend; + + if (heap_start) + fatalError("Heap active when heap_apply_summary called"); + + if (valcount == 0 || summary == NULL) + return 0; + if (valcount == 2 && summary[0] == 0 && summary[1] == 0) + return 0; + + lx = 0; + heap_start = summary[lx++]; + alloc_count = summary[lx++]; + + for (jx=lx; jx+2= summary[jx+2]) + fatalError("Heap block summary is out of order."); + } + + lastend = heap_start; + + while (lx < valcount || lastend < gEndMem) { + heapblock_t *blo; + + blo = glulx_malloc(sizeof(heapblock_t)); + if (!blo) + fatalError("Unable to allocate record for heap block."); + + if (lx >= valcount) { + blo->addr = lastend; + blo->len = gEndMem - lastend; + blo->isfree = TRUE; + } + else { + if (lastend < summary[lx]) { + blo->addr = lastend; + blo->len = summary[lx] - lastend; + blo->isfree = TRUE; + } + else { + blo->addr = summary[lx++]; + blo->len = summary[lx++]; + blo->isfree = FALSE; + } + } + + blo->prev = NULL; + blo->next = NULL; + + if (!heap_head) { + heap_head = blo; + heap_tail = blo; + } + else { + heap_tail->next = blo; + blo->prev = heap_tail; + heap_tail = blo; + } + + lastend = blo->addr + blo->len; + } + + /* heap_sanity_check(); */ + + return 0; +} + diff --git a/interpreters/git/labels.inc b/interpreters/git/labels.inc new file mode 100644 index 0000000..5268616 --- /dev/null +++ b/interpreters/git/labels.inc @@ -0,0 +1,205 @@ +// Pseudo-operations. + +LABEL (jump_abs_L7) +LABEL (enter_function_L1) + +LABEL (debug_step) + +LABEL (args_stack_call_stub_discard) +LABEL (args_stack_call_stub_addr) +LABEL (args_stack_call_stub_local) +LABEL (args_stack_call_stub_stack) + +LABEL (args_stack) +LABEL (args_0) +LABEL (args_1) +LABEL (args_2) +LABEL (args_3) + +LABEL (call_stub_discard) +LABEL (call_stub_addr) +LABEL (call_stub_local) +LABEL (call_stub_stack) + +LABEL (catch_stub_discard) +LABEL (catch_stub_addr) +LABEL (catch_stub_local) +LABEL (catch_stub_stack) + +LABEL (save_stub_discard) +LABEL (save_stub_addr) +LABEL (save_stub_local) +LABEL (save_stub_stack) + +LABEL (undo_stub_discard) +LABEL (undo_stub_addr) +LABEL (undo_stub_local) +LABEL (undo_stub_stack) + +LABEL (tailcall) +LABEL (throw) + +// Loading and storing registers. + +#define LOAD_LABELS(tag) \ + LABEL (L1_ ## tag) \ + LABEL (L2_ ## tag) \ + LABEL (L3_ ## tag) \ + LABEL (L4_ ## tag) \ + LABEL (L5_ ## tag) \ + LABEL (L6_ ## tag) \ + LABEL (L7_ ## tag) \ + LABEL (L1_const_L2_ ## tag) \ + LABEL (L1_stack_L2_ ## tag) \ + LABEL (L1_local_L2_ ## tag) \ + LABEL (L1_addr_L2_ ## tag) + +#define STORE_LABELS(tag) \ + LABEL (S1_ ## tag) \ + LABEL (S2_ ## tag) + +LOAD_LABELS(const) +LOAD_LABELS(stack) +LOAD_LABELS(local) +LOAD_LABELS(addr) + +STORE_LABELS(stack) +STORE_LABELS(local) +STORE_LABELS(addr) + +LABEL(L1_addr16) +LABEL(L1_addr8) + +LABEL(S1_addr16) +LABEL(S1_addr8) + +#undef LOAD_LABELS +#undef STORE_LABELS + +// Labels corresponding to glulx opcodes. + +LABEL (nop) + +#define PEEPHOLE_STORE_LABELS(tag) \ + LABEL (add ## tag) \ + LABEL (sub ## tag) \ + LABEL (mul ## tag) \ + LABEL (div ## tag) \ + LABEL (mod ## tag) \ + LABEL (neg ## tag) \ + LABEL (bitand ## tag) \ + LABEL (bitor ## tag) \ + LABEL (bitxor ## tag) \ + LABEL (bitnot ## tag) \ + LABEL (shiftl ## tag) \ + LABEL (sshiftr ## tag) \ + LABEL (ushiftr ## tag) \ + LABEL (copys ## tag) \ + LABEL (copyb ## tag) \ + LABEL (sexs ## tag) \ + LABEL (sexb ## tag) \ + LABEL (aload ## tag) \ + LABEL (aloads ## tag) \ + LABEL (aloadb ## tag) \ + LABEL (aloadbit ## tag) + +PEEPHOLE_STORE_LABELS(_discard) +PEEPHOLE_STORE_LABELS(_S1_stack) +PEEPHOLE_STORE_LABELS(_S1_local) +PEEPHOLE_STORE_LABELS(_S1_addr) + +#define PEEPHOLE_LOAD_LABELS(tag) \ + LABEL (return_L1_ ## tag) \ + LABEL (astore_L3_ ## tag) \ + LABEL (astores_L3_ ## tag) \ + LABEL (astoreb_L3_ ## tag) \ + LABEL (astorebit_L3_ ## tag) + +PEEPHOLE_LOAD_LABELS(const) +PEEPHOLE_LOAD_LABELS(stack) +PEEPHOLE_LOAD_LABELS(addr) +PEEPHOLE_LOAD_LABELS(local) + +LABEL (return) +LABEL (astore) +LABEL (astores) +LABEL (astoreb) +LABEL (astorebit) + +#undef PEEPHOLE_STORE_LABELS + +#define BRANCH_LABELS(tag) \ + LABEL (jump ## tag) \ + LABEL (jz ## tag) \ + LABEL (jnz ## tag) \ + LABEL (jeq ## tag) \ + LABEL (jne ## tag) \ + LABEL (jlt ## tag) \ + LABEL (jge ## tag) \ + LABEL (jgt ## tag) \ + LABEL (jle ## tag) \ + LABEL (jltu ## tag) \ + LABEL (jgeu ## tag) \ + LABEL (jgtu ## tag) \ + LABEL (jleu ## tag) + +BRANCH_LABELS(_var) +BRANCH_LABELS(_const) +BRANCH_LABELS(_by) +BRANCH_LABELS(_return0) +BRANCH_LABELS(_return1) + +LABEL (stkcount) +LABEL (stkpeek) +LABEL (stkswap) +LABEL (stkroll) +LABEL (stkcopy) + +LABEL (streamchar) +LABEL (streamnum) +LABEL (streamstr) +LABEL (streamunichar) + +LABEL (gestalt) +LABEL (debugtrap) +LABEL (getmemsize) +LABEL (setmemsize) +LABEL (jumpabs) + +LABEL (random) +LABEL (setrandom) + +LABEL (quit) +LABEL (verify) +LABEL (restart) +LABEL (restore) +LABEL (restoreundo) +LABEL (protect) + +LABEL (glk) + +LABEL (getstringtbl) +LABEL (setstringtbl) +LABEL (getiosys) +LABEL (setiosys) + +LABEL (linearsearch) +LABEL (binarysearch) +LABEL (linkedsearch) + +LABEL (mzero) +LABEL (mcopy) +LABEL (malloc) +LABEL (mfree) + +LABEL (accelfunc) +LABEL (accelparam) + +LABEL (git_setcacheram) +LABEL (git_prunecache) + +LABEL (error_bad_opcode) +LABEL (recompile) + +// No more labels to define. +#undef LABEL diff --git a/interpreters/git/memory.c b/interpreters/git/memory.c new file mode 100644 index 0000000..b5f0729 --- /dev/null +++ b/interpreters/git/memory.c @@ -0,0 +1,179 @@ +// $Id: memory.c,v 1.11 2004/01/25 21:04:19 iain Exp $ + +#include "git.h" +#include +#include + +const git_uint8 * gRom; +git_uint8 * gRam; + +git_uint32 gRamStart; +git_uint32 gExtStart; +git_uint32 gEndMem; +git_uint32 gOriginalEndMem; + +#define RAM_OVERLAP 8 + +void initMemory (const git_uint8 * gamefile, git_uint32 size) +{ + // Make sure we have at least enough + // data for the standard glulx header. + + if (size < 36) + fatalError("This file is too small to be a valid glulx gamefile"); + + // Set up a basic environment that will + // let us inspect the header. + + gRom = gamefile; + gRamStart = 36; + + // Check the magic number. From the spec: + // * Magic number: 47 6C 75 6C, which is to say ASCII 'Glul'. + + if (memRead32 (0) != 0x476c756c) + fatalError("This is not a glulx game file"); + + // Load the correct values for ramstart, extstart and endmem. + // (Load ramstart last because it's required by memRead32 -- + // if we get a wonky ramstart, the other reads could fail.) + + gOriginalEndMem = gEndMem = memRead32 (16); + gExtStart = memRead32 (12); + gRamStart = memRead32 (8); + + // Make sure the values are sane. + + if (gRamStart < 36) + fatalError ("Bad header (RamStart is too low)"); + + if (gRamStart > size) + fatalError ("Bad header (RamStart is bigger than the entire gamefile)"); + + if (gExtStart > size) + fatalError ("Bad header (ExtStart is bigger than the entire gamefile)"); + + if (gExtStart < gRamStart) + fatalError ("Bad header (ExtStart is lower than RamStart)"); + + if (gEndMem < gExtStart) + fatalError ("Bad header (EndMem is lower than ExtStart)"); + + if (gRamStart & 255) + fatalError ("Bad header (RamStart is not a multiple of 256)"); + + if (gExtStart & 255) + fatalError ("Bad header (ExtStart is not a multiple of 256)"); + + if (gEndMem & 255) + fatalError ("Bad header (EndMem is not a multiple of 256)"); + + // Allocate the RAM. We'll duplicate the last few bytes of ROM + // here so that reads which cross the ROM/RAM boundary don't fail. + + gRamStart -= RAM_OVERLAP; // Adjust RAM boundary to include some ROM. + + gRam = malloc (gEndMem - gRamStart); + if (gRam == NULL) + fatalError ("Failed to allocate game RAM"); + + gRam -= gRamStart; + + // Copy the initial contents of RAM. + memcpy (gRam + gRamStart, gRom + gRamStart, gExtStart - gRamStart); + + // Zero out the extended RAM. + memset (gRam + gExtStart, 0, gEndMem - gExtStart); + + gRamStart += RAM_OVERLAP; // Restore boundary to its previous value. +} + +int verifyMemory () +{ + git_uint32 checksum = 0; + + git_uint32 n; + for (n = 0 ; n < gExtStart ; n += 4) + checksum += read32 (gRom + n); + + checksum -= read32 (gRom + 32); + return (checksum == read32 (gRom + 32)) ? 0 : 1; +} + +int resizeMemory (git_uint32 newSize, int isInternal) +{ + git_uint8* newRam; + + if (newSize == gEndMem) + return 0; // Size is not changed. + if (!isInternal && heap_is_active()) + fatalError ("Cannot resize Glulx memory space while heap is active."); + if (newSize < gOriginalEndMem) + fatalError ("Cannot resize Glulx memory space smaller than it started."); + if (newSize & 0xFF) + fatalError ("Can only resize Glulx memory space to a 256-byte boundary."); + + gRamStart -= RAM_OVERLAP; // Adjust RAM boundary to include some ROM. + newRam = realloc(gRam + gRamStart, newSize - gRamStart); + if (!newRam) + { + gRamStart += RAM_OVERLAP; // Restore boundary to its previous value. + return 1; // Failed to extend memory. + } + if (newSize > gEndMem) + memset (newRam + gEndMem - gRamStart, 0, newSize - gEndMem); + + gRam = newRam - gRamStart; + gEndMem = newSize; + gRamStart += RAM_OVERLAP; // Restore boundary to its previous value. + return 0; +} + +void resetMemory (git_uint32 protectPos, git_uint32 protectSize) +{ + git_uint32 protectEnd = protectPos + protectSize; + git_uint32 i; + + // Deactivate the heap (if it was active). + heap_clear(); + + gEndMem = gOriginalEndMem; + + // Copy the initial contents of RAM. + for (i = gRamStart; i < gExtStart; ++i) + { + if (i >= protectEnd || i < protectPos) + gRam [i] = gRom [i]; + } + + // Zero out the extended RAM. + for (i = gExtStart; i < gEndMem; ++i) + { + if (i >= protectEnd || i < protectPos) + gRam [i] = 0; + } +} + +void shutdownMemory () +{ + // We didn't allocate the ROM, so we + // only need to dispose of the RAM. + + free (gRam + gRamStart - RAM_OVERLAP); + + // Zero out all our globals. + + gRamStart = gExtStart = gEndMem = gOriginalEndMem = 0; + gRom = gRam = NULL; +} + +git_uint32 memReadError (git_uint32 address) +{ + fatalError ("Out-of-bounds memory access"); + return 0; +} + +void memWriteError (git_uint32 address) +{ + fatalError ("Out-of-bounds memory access"); +} diff --git a/interpreters/git/memory.h b/interpreters/git/memory.h new file mode 100644 index 0000000..3cb3916 --- /dev/null +++ b/interpreters/git/memory.h @@ -0,0 +1,160 @@ +// $Id: memory.h,v 1.7 2004/01/25 21:04:19 iain Exp $ +// Functions and macros for accessing game memory. + +#ifndef GIT_MEMORY_H +#define GIT_MEMORY_H + +#include "config.h" + +// -------------------------------------------------------------- +// Macros for reading and writing big-endian data. + +#ifdef USE_BIG_ENDIAN_UNALIGNED +// We're on a big-endian platform which can handle unaligned +// accesses, such as the PowerPC. This means we can read and +// write multi-byte values in glulx memory directly, without +// having to pack and unpack each byte. + +#define read32(ptr) (*((git_uint32*)(ptr))) +#define read16(ptr) (*((git_uint16*)(ptr))) +#define write32(ptr,v) (read32(ptr)=(git_uint32)(v)) +#define write16(ptr,v) (read16(ptr)=(git_uint16)(v)) + +#else +// We're on a little-endian platform, such as the x86, or a +// big-endian platform that doesn't like unaligned accesses, +// such as the 68K. This means we have to read and write the +// slow and tedious way. + +#define read32(ptr) \ + ( (git_uint32)(((git_uint8 *)(ptr))[0] << 24) \ + | (git_uint32)(((git_uint8 *)(ptr))[1] << 16) \ + | (git_uint32)(((git_uint8 *)(ptr))[2] << 8) \ + | (git_uint32)(((git_uint8 *)(ptr))[3])) +#define read16(ptr) \ + ( (git_uint16)(((git_uint8 *)(ptr))[0] << 8) \ + | (git_uint16)(((git_uint8 *)(ptr))[1])) + +#define write32(ptr, v) \ + (((ptr)[0] = (git_uint8)(((git_uint32)(v)) >> 24)), \ + ((ptr)[1] = (git_uint8)(((git_uint32)(v)) >> 16)), \ + ((ptr)[2] = (git_uint8)(((git_uint32)(v)) >> 8)), \ + ((ptr)[3] = (git_uint8)(((git_uint32)(v))))) +#define write16(ptr, v) \ + (((ptr)[0] = (git_uint8)(((git_uint32)(v)) >> 8)), \ + ((ptr)[1] = (git_uint8)(((git_uint32)(v))))) + +#endif // USE_BIG_ENDIAN_UNALIGNED + +// Accessing single bytes is easy on any platform. + +#define read8(ptr) (*((git_uint8*)(ptr))) +#define write8(ptr, v) (read8(ptr)=(git_uint8)(v)) + +// -------------------------------------------------------------- +// Globals + +extern git_uint32 gRamStart; // The start of RAM. +extern git_uint32 gExtStart; // The start of extended memory (initialised to zero). +extern git_uint32 gEndMem; // The current end of memory. +extern git_uint32 gOriginalEndMem; // The value of EndMem when the game was first loaded. + +// This is the entire gamefile, as read-only memory. It contains +// both the ROM, which is constant for the entire run of the program, +// and the original RAM, which is useful for checking what's changed +// when saving to disk or remembering a position for UNDO. +extern const git_uint8 * gRom; + +// This is the current contents of RAM. This pointer actually points +// to the start of ROM, so that you don't have to keep adding and +// subtracting gRamStart, but don't try to access ROM via this pointer. +extern git_uint8 * gRam; + +// -------------------------------------------------------------- +// Functions + +// Initialise game memory. This sets up all the global variables +// declared above. Note that it does *not* copy the given memory +// image: it must be valid for the lifetime of the program. + +extern void initMemory (const git_uint8 * game, git_uint32 gameSize); + +// Verifies the gamefile based on its checksum. 0 on success, 1 on failure. + +extern int verifyMemory (); + +// Resizes the game's memory. Returns 0 on success, 1 on failure. + +extern int resizeMemory (git_uint32 newSize, int isInternal); + +// Resets memory to its initial state. Call this when the game restarts. + +extern void resetMemory (git_uint32 protectPos, git_uint32 protectSize); + +// Disposes of all the data structures allocated in initMemory(). + +extern void shutdownMemory (); + +// Utility functions -- these just pass an appropriate +// string to fatalError(). + +extern git_uint32 memReadError (git_uint32 address); +extern void memWriteError (git_uint32 address); + +// Functions for reading and writing game memory. + +GIT_INLINE git_uint32 memRead32 (git_uint32 address) +{ + if (address <= gRamStart - 4) + return read32 (gRom + address); + else if (address <= gEndMem - 4) + return read32 (gRam + address); + else + return memReadError (address); +} + +GIT_INLINE git_uint32 memRead16 (git_uint32 address) +{ + if (address <= gRamStart - 4) + return read16 (gRom + address); + else if (address <= gEndMem - 2) + return read16 (gRam + address); + else + return memReadError (address); +} + +GIT_INLINE git_uint32 memRead8 (git_uint32 address) +{ + if (address <= gRamStart - 4) + return read8 (gRom + address); + else if (address < gEndMem) + return read8 (gRam + address); + else + return memReadError (address); +} + +GIT_INLINE void memWrite32 (git_uint32 address, git_uint32 val) +{ + if (address >= gRamStart && address <= (gEndMem - 4)) + write32 (gRam + address, val); + else + memWriteError (address); +} + +GIT_INLINE void memWrite16 (git_uint32 address, git_uint32 val) +{ + if (address >= gRamStart && address <= (gEndMem - 2)) + write16 (gRam + address, val); + else + memWriteError (address); +} + +GIT_INLINE void memWrite8 (git_uint32 address, git_uint32 val) +{ + if (address >= gRamStart && address < gEndMem) + write8 (gRam + address, val); + else + memWriteError (address); +} + +#endif // GIT_MEMORY_H diff --git a/interpreters/git/opcodes.c b/interpreters/git/opcodes.c new file mode 100644 index 0000000..a57abb3 --- /dev/null +++ b/interpreters/git/opcodes.c @@ -0,0 +1,466 @@ +// $Id: opcodes.c,v 1.20 2004/12/22 12:40:07 iain Exp $ + +#include "git.h" +#include "opcodes.h" + +static void parseModeNibbles (git_uint32* pc, int numModes, int * modeBuffer) +{ + int * mode = modeBuffer; + + while (numModes > 0) + { + // Load byte. + git_uint32 byte = memRead8((*pc)++); + + // Load low nibble. + *mode++ = byte & 0x0f; + --numModes; + + // Check whether we need to load any more. + if (numModes == 0) + break; + + // Load high nibble. + *mode++ = (byte >> 4) & 0x0f; + --numModes; + } +} + +static void parseLS (git_uint32* pc, Label op) +{ + int modes [2]; + parseModeNibbles (pc, 2, modes); + + parseLoad (pc, reg_L1, modes [0], size32, NULL); + emitCode (op); + parseStore (pc, reg_S1, modes [1], size32); +} +static void parseLLS (git_uint32* pc, Label op) +{ + int modes [3]; + parseModeNibbles (pc, 3, modes); + + parseLoad (pc, reg_L1, modes [0], size32, NULL); + parseLoad (pc, reg_L2, modes [1], size32, NULL); + emitCode (op); + parseStore (pc, reg_S1, modes [2], size32); +} +static void parseL (git_uint32* pc, Label op) +{ + int modes [1]; + parseModeNibbles (pc, 1, modes); + + parseLoad (pc, reg_L1, modes [0], size32, NULL); + emitCode (op); +} +static void parseLL (git_uint32* pc, Label op) +{ + int modes [2]; + parseModeNibbles (pc, 2, modes); + + parseLoad (pc, reg_L1, modes [0], size32, NULL); + parseLoad (pc, reg_L2, modes [1], size32, NULL); + emitCode (op); +} +static void parse_finish_branch (git_uint32* pc, Label op, LoadReg reg, int mode) +{ + git_sint32 val; + if (parseLoad (pc, reg, mode, size32, &val)) + { + // The branch offset is a constant, so we can + // check for the special values 0 and 1 right here. + + if (val == 0) + { + emitCode (op - label_jeq_var + label_jeq_return0); + } + else if (val == 1) + { + emitCode (op - label_jeq_var + label_jeq_return1); + } + else + { + // Calculate the destination address and + // emit a constant branch opcode. + emitConstBranch (op - label_jeq_var + label_jeq_const, *pc + val - 2); + } + } + else + { + // The branch offset isn't a constant, so just + // emit the normal opcode plus the current PC. + + emitCode (op); + emitData(*pc); + } +} +static void parseLLL_branch (git_uint32* pc, Label op) +{ + int modes [3]; + parseModeNibbles (pc, 3, modes); + + parseLoad (pc, reg_L1, modes [0], size32, NULL); + parseLoad (pc, reg_L2, modes [1], size32, NULL); + parse_finish_branch (pc, op, reg_L3, modes [2]); +} +static void parseLL_branch (git_uint32* pc, Label op) +{ + int modes [2]; + parseModeNibbles (pc, 2, modes); + + parseLoad (pc, reg_L1, modes [0], size32, NULL); + parse_finish_branch (pc, op, reg_L2, modes [1]); +} +static void parseL_branch (git_uint32* pc, Label op) +{ + int modes [1]; + parseModeNibbles (pc, 1, modes); + + parse_finish_branch (pc, op, reg_L1, modes [0]); +} +static void parseLLL (git_uint32* pc, Label op) +{ + int modes [3]; + parseModeNibbles (pc, 3, modes); + + parseLoad (pc, reg_L1, modes [0], size32, NULL); + parseLoad (pc, reg_L2, modes [1], size32, NULL); + parseLoad (pc, reg_L3, modes [2], size32, NULL); + emitCode (op); +} +static void parseS (git_uint32* pc, Label op) +{ + int modes [1]; + parseModeNibbles (pc, 1, modes); + + emitCode (op); + parseStore (pc, reg_S1, modes [0], size32); +} +static void parseSS (git_uint32* pc, Label op) +{ + int modes [2]; + parseModeNibbles (pc, 2, modes); + + emitCode (op); + parseStore (pc, reg_S1, modes [0], size32); + parseStore (pc, reg_S2, modes [1], size32); +} +static void parseCatch (git_uint32 * pc) +{ + Block stubCode; + int modes [2]; + parseModeNibbles (pc, 2, modes); + + parseCatchStub (pc, modes[0]); + + // This is a little nasty. The last thing emitted by + // parseCatchStub() is the current value of the PC, + // which is where execution will resume when and if + // the stub is used; but execution should resume + // after the branch we're about to do, so we'll need + // to fix up that emitted value. + + stubCode = peekAtEmittedStuff (1); + + parseLoad (pc, reg_L1, modes[1], size32, NULL); + emitCode (label_jump_var); + emitData(*pc); + + // Fix up the end of the stub, as described above. + *stubCode = *pc; +} +void parseInstruction (git_uint32* pc, int * done) +{ + git_uint32 pcStart = *pc; + int modes [8]; + git_uint32 opcode; + + static int ops = 0; + ++ops; + + // Fetch the opcode. + opcode = memRead8((*pc)++); + + // Check for multi-byte opcode. + if (opcode & 0x80) + { + if (opcode & 0x40) + { + // Four-byte opcode. + opcode &= 0x3F; + opcode = (opcode << 8) | memRead8((*pc)++); + opcode = (opcode << 8) | memRead8((*pc)++); + opcode = (opcode << 8) | memRead8((*pc)++); + } + else + { + // Two-byte opcode. + opcode &= 0x7F; + opcode = (opcode << 8) | memRead8((*pc)++); + } + } + + if (gDebug) + { + emitCode (label_debug_step); + emitData (pcStart); + emitData (opcode); + } + + // printf (" opcode=0x%x", opcode); + + // Now we have an opcode number, + // parse the operands and emit code. + + switch (opcode) + { + case op_nop: emitCode (label_nop); break; + + // Arithmetic and logic + + case op_add: parseLLS (pc, label_add_discard); break; + case op_sub: parseLLS (pc, label_sub_discard); break; + case op_mul: parseLLS (pc, label_mul_discard); break; + case op_div: parseLLS (pc, label_div_discard); break; + case op_mod: parseLLS (pc, label_mod_discard); break; + + case op_bitand: parseLLS (pc, label_bitand_discard); break; + case op_bitor: parseLLS (pc, label_bitor_discard); break; + case op_bitxor: parseLLS (pc, label_bitxor_discard); break; + + case op_neg: parseLS (pc, label_neg_discard); break; + case op_bitnot: parseLS (pc, label_bitnot_discard); break; + + case op_shiftl: parseLLS (pc, label_shiftl_discard); break; + case op_ushiftr: parseLLS (pc, label_ushiftr_discard); break; + case op_sshiftr: parseLLS (pc, label_sshiftr_discard); break; + + // Branches + + case op_jump: parseL_branch (pc, label_jump_var); *done = 1; break; + case op_jz: parseLL_branch (pc, label_jz_var); break; + case op_jnz: parseLL_branch (pc, label_jnz_var); break; + case op_jeq: parseLLL_branch (pc, label_jeq_var); break; + case op_jne: parseLLL_branch (pc, label_jne_var); break; + case op_jlt: parseLLL_branch (pc, label_jlt_var); break; + case op_jgt: parseLLL_branch (pc, label_jgt_var); break; + case op_jle: parseLLL_branch (pc, label_jle_var); break; + case op_jge: parseLLL_branch (pc, label_jge_var); break; + case op_jltu: parseLLL_branch (pc, label_jltu_var); break; + case op_jgtu: parseLLL_branch (pc, label_jgtu_var); break; + case op_jleu: parseLLL_branch (pc, label_jleu_var); break; + case op_jgeu: parseLLL_branch (pc, label_jgeu_var); break; + + case op_jumpabs: parseL (pc, label_jumpabs); *done = 1; break; + + // Moving data + + case op_copy: + parseModeNibbles (pc, 2, modes); + parseLoad (pc, reg_L1, modes [0], size32, NULL); + parseStore (pc, reg_S1, modes [1], size32); + break; + + case op_copys: + parseModeNibbles (pc, 2, modes); + parseLoad (pc, reg_L1, modes [0], size16, NULL); + emitCode (label_copys_discard); + parseStore (pc, reg_S1, modes [1], size16); + break; + + case op_copyb: + parseModeNibbles (pc, 2, modes); + parseLoad (pc, reg_L1, modes [0], size8, NULL); + emitCode (label_copyb_discard); + parseStore (pc, reg_S1, modes [1], size8); + break; + + case op_sexs: parseLS (pc, label_sexs_discard); break; + case op_sexb: parseLS (pc, label_sexb_discard); break; + + // Array data + + case op_aload: parseLLS (pc, label_aload_discard); break; + case op_aloads: parseLLS (pc, label_aloads_discard); break; + case op_aloadb: parseLLS (pc, label_aloadb_discard); break; + case op_aloadbit: parseLLS (pc, label_aloadbit_discard); break; + + case op_astore: parseLLL (pc, label_astore); break; + case op_astores: parseLLL (pc, label_astores); break; + case op_astoreb: parseLLL (pc, label_astoreb); break; + case op_astorebit: parseLLL (pc, label_astorebit); break; + + // The stack + + case op_stkcount: parseS (pc, label_stkcount); break; + case op_stkpeek: parseLS (pc, label_stkpeek); break; + case op_stkswap: emitCode (label_stkswap); break; + case op_stkcopy: parseL (pc, label_stkcopy); break; + case op_stkroll: parseLL (pc, label_stkroll); break; + + // Functions + + case op_call: + parseModeNibbles (pc, 3, modes); + parseLoad (pc, reg_L1, modes [0], size32, NULL); + parseLoad (pc, reg_L2, modes [1], size32, NULL); + emitCode (label_args_stack); + parseCallStub (pc, modes [2]); + break; + + case op_callf: + parseModeNibbles (pc, 2, modes); + parseLoad (pc, reg_L1, modes [0], size32, NULL); + emitCode (label_args_0); + parseCallStub (pc, modes [1]); + break; + + case op_callfi: + parseModeNibbles (pc, 3, modes); + parseLoad (pc, reg_L1, modes [0], size32, NULL); + parseLoad (pc, reg_L2, modes [1], size32, NULL); + emitCode (label_args_1); + parseCallStub (pc, modes [2]); + break; + + case op_callfii: + parseModeNibbles (pc, 4, modes); + parseLoad (pc, reg_L1, modes [0], size32, NULL); + parseLoad (pc, reg_L2, modes [1], size32, NULL); + parseLoad (pc, reg_L3, modes [2], size32, NULL); + emitCode (label_args_2); + parseCallStub (pc, modes [3]); + break; + + case op_callfiii: + parseModeNibbles (pc, 5, modes); + parseLoad (pc, reg_L1, modes [0], size32, NULL); + parseLoad (pc, reg_L2, modes [1], size32, NULL); + parseLoad (pc, reg_L3, modes [2], size32, NULL); + parseLoad (pc, reg_L4, modes [3], size32, NULL); + emitCode (label_args_3); + parseCallStub (pc, modes [4]); + break; + + case op_return: + parseL (pc, label_return); + *done = 1; + break; + + case op_tailcall: + parseModeNibbles (pc, 2, modes); + parseLoad (pc, reg_L1, modes [0], size32, NULL); + parseLoad (pc, reg_L2, modes [1], size32, NULL); + emitCode (label_args_stack); + emitCode (label_tailcall); + *done = 1; + break; + + // Continuations + + case op_catch: parseCatch (pc); break; + case op_throw: + parseLL (pc, label_throw); + *done = 1; + break; + + case op_random: parseLS (pc, label_random); break; + case op_setrandom: parseL (pc, label_setrandom); break; + + case op_getmemsize: parseS (pc, label_getmemsize); break; + case op_setmemsize: parseLS (pc, label_setmemsize); break; + + case op_quit: + emitCode (label_quit); + *done = 1; + break; + + case op_restart: + emitCode (label_restart); + *done = 1; + break; + + case op_restore: parseLS (pc, label_restore); break; + case op_restoreundo: parseS (pc, label_restoreundo); break; + case op_protect: parseLL (pc, label_protect); break; + case op_verify: parseS (pc, label_verify); break; + + case op_save: + parseModeNibbles (pc, 2, modes); + parseLoad (pc, reg_L1, modes [0], size32, NULL); + parseSaveStub (pc, modes [1]); + break; + + case op_saveundo: + parseModeNibbles (pc, 1, modes); + parseUndoStub (pc, modes [0]); + break; + + case op_getiosys: parseSS (pc, label_getiosys); break; + case op_setiosys: parseLL (pc, label_setiosys); break; + + case op_getstringtbl: parseS (pc, label_getstringtbl); break; + case op_setstringtbl: parseL (pc, label_setstringtbl); break; + + case op_streamchar: parseL (pc, label_streamchar); emitData(*pc); break; + case op_streamnum: parseL (pc, label_streamnum); emitData(*pc); break; + case op_streamstr: parseL (pc, label_streamstr); emitData(*pc); break; + case op_streamunichar: parseL (pc, label_streamunichar); emitData(*pc); break; + + case op_glk: parseLLS (pc, label_glk); break; + case op_gestalt: parseLLS (pc, label_gestalt); break; + + case op_binarysearch: + case op_linearsearch: + parseModeNibbles (pc, 8, modes); + parseLoad (pc, reg_L1, modes [0], size32, NULL); + parseLoad (pc, reg_L2, modes [1], size32, NULL); + parseLoad (pc, reg_L3, modes [2], size32, NULL); + parseLoad (pc, reg_L4, modes [3], size32, NULL); + parseLoad (pc, reg_L5, modes [4], size32, NULL); + parseLoad (pc, reg_L6, modes [5], size32, NULL); + parseLoad (pc, reg_L7, modes [6], size32, NULL); + emitCode (opcode == op_linearsearch ? label_linearsearch : label_binarysearch); + parseStore (pc, reg_S1, modes [7], size32); + break; + + case op_linkedsearch: + parseModeNibbles (pc, 7, modes); + parseLoad (pc, reg_L1, modes [0], size32, NULL); + parseLoad (pc, reg_L2, modes [1], size32, NULL); + parseLoad (pc, reg_L3, modes [2], size32, NULL); + parseLoad (pc, reg_L4, modes [3], size32, NULL); + parseLoad (pc, reg_L5, modes [4], size32, NULL); + parseLoad (pc, reg_L6, modes [5], size32, NULL); + emitCode (label_linkedsearch); + parseStore (pc, reg_S1, modes [6], size32); + break; + + case op_debugtrap: + parseL (pc, label_debugtrap); + break; + + // Memory management + + case op_mzero: parseLL (pc, label_mzero); break; + case op_mcopy: parseLLL (pc, label_mcopy); break; + + case op_malloc: parseLS (pc, label_malloc); break; + case op_mfree: parseL (pc, label_mfree); break; + + // Function acceleration + + case op_accelfunc: parseLL (pc, label_accelfunc); break; + case op_accelparam: parseLL (pc, label_accelparam); break; + + // Special Git opcodes + + case op_git_setcacheram: parseL (pc, label_git_setcacheram); break; + case op_git_prunecache: parseLL (pc, label_git_prunecache); break; + + default: + // Unknown opcode. + abortCompilation(); + break; + } +} diff --git a/interpreters/git/opcodes.h b/interpreters/git/opcodes.h new file mode 100644 index 0000000..677c450 --- /dev/null +++ b/interpreters/git/opcodes.h @@ -0,0 +1,116 @@ +// $Id: opcodes.h,v 1.7 2004/12/22 12:40:07 iain Exp $ + +#ifndef OPCODES_H +#define OPCODES_H + +// Glulx opcodes. + +#define op_nop (0x00) + +#define op_add (0x10) +#define op_sub (0x11) +#define op_mul (0x12) +#define op_div (0x13) +#define op_mod (0x14) +#define op_neg (0x15) +#define op_bitand (0x18) +#define op_bitor (0x19) +#define op_bitxor (0x1A) +#define op_bitnot (0x1B) +#define op_shiftl (0x1C) +#define op_sshiftr (0x1D) +#define op_ushiftr (0x1E) + +#define op_jump (0x20) +#define op_jz (0x22) +#define op_jnz (0x23) +#define op_jeq (0x24) +#define op_jne (0x25) +#define op_jlt (0x26) +#define op_jge (0x27) +#define op_jgt (0x28) +#define op_jle (0x29) +#define op_jltu (0x2A) +#define op_jgeu (0x2B) +#define op_jgtu (0x2C) +#define op_jleu (0x2D) + +#define op_call (0x30) +#define op_return (0x31) +#define op_catch (0x32) +#define op_throw (0x33) +#define op_tailcall (0x34) + +#define op_copy (0x40) +#define op_copys (0x41) +#define op_copyb (0x42) +#define op_sexs (0x44) +#define op_sexb (0x45) +#define op_aload (0x48) +#define op_aloads (0x49) +#define op_aloadb (0x4A) +#define op_aloadbit (0x4B) +#define op_astore (0x4C) +#define op_astores (0x4D) +#define op_astoreb (0x4E) +#define op_astorebit (0x4F) + +#define op_stkcount (0x50) +#define op_stkpeek (0x51) +#define op_stkswap (0x52) +#define op_stkroll (0x53) +#define op_stkcopy (0x54) + +#define op_streamchar (0x70) +#define op_streamnum (0x71) +#define op_streamstr (0x72) +#define op_streamunichar (0x73) + +#define op_gestalt (0x100) +#define op_debugtrap (0x101) +#define op_getmemsize (0x102) +#define op_setmemsize (0x103) +#define op_jumpabs (0x104) + +#define op_random (0x110) +#define op_setrandom (0x111) + +#define op_quit (0x120) +#define op_verify (0x121) +#define op_restart (0x122) +#define op_save (0x123) +#define op_restore (0x124) +#define op_saveundo (0x125) +#define op_restoreundo (0x126) +#define op_protect (0x127) + +#define op_glk (0x130) + +#define op_getstringtbl (0x140) +#define op_setstringtbl (0x141) +#define op_getiosys (0x148) +#define op_setiosys (0x149) + +#define op_linearsearch (0x150) +#define op_binarysearch (0x151) +#define op_linkedsearch (0x152) + +#define op_callf (0x160) +#define op_callfi (0x161) +#define op_callfii (0x162) +#define op_callfiii (0x163) + +#define op_mzero (0x170) +#define op_mcopy (0x171) +#define op_malloc (0x178) +#define op_mfree (0x179) + +#define op_accelfunc (0x180) +#define op_accelparam (0x181) + +// Special cache control opcodes. + +#define op_git_setcacheram (0x7940) +#define op_git_prunecache (0x7941) + +#endif // OPCODES_H diff --git a/interpreters/git/operands.c b/interpreters/git/operands.c new file mode 100644 index 0000000..a4b6e0b --- /dev/null +++ b/interpreters/git/operands.c @@ -0,0 +1,307 @@ +// $Id: operands.c,v 1.11 2004/02/02 00:13:46 iain Exp $ + +#include "git.h" +#include + +git_uint32 parseLoad (git_uint32 * pc, LoadReg reg, int mode, TransferSize size, git_sint32 * constVal) +{ + git_uint32 value; + + switch (mode) + { + case 0x0: // Constant zero. (Zero bytes) + value = 0; + goto load_const; + + case 0x1: // Constant, -80 to 7F. (One byte) + value = (git_sint32) ((git_sint8) memRead8(*pc)); + *pc += 1; + goto load_const; + + case 0x2: // Constant, -8000 to 7FFF. (Two bytes) + value = (git_sint32) ((git_sint16) memRead16(*pc)); + *pc += 2; + goto load_const; + + case 0x3: // Constant, any value. (Four bytes) + value = memRead32(*pc); + *pc += 4; + goto load_const; + + case 0x5: // Contents of address 00 to FF. (One byte) + value = memRead8(*pc); + *pc += 1; + goto load_addr; + + case 0x6: // Contents of address 0000 to FFFF. (Two bytes) + value = memRead16(*pc); + *pc += 2; + goto load_addr; + + case 0x7: // Contents of any address. (Four bytes) + value = memRead32(*pc); + *pc += 4; + goto load_addr; + + case 0x8: // Value popped off stack. (Zero bytes) + goto load_stack; + + case 0x9: // Call frame local at address 00 to FF. (One byte) + value = memRead8(*pc); + *pc += 1; + goto load_local; + + case 0xA: // Call frame local at address 0000 to FFFF. (Two bytes) + value = memRead16(*pc); + *pc += 2; + goto load_local; + + case 0xB: // Call frame local at any address. (Four bytes) + value = memRead32(*pc); + *pc += 4; + goto load_local; + + case 0xD: // Contents of RAM address 00 to FF. (One byte) + value = memRead8(*pc) + gRamStart; + *pc += 1; + goto load_addr; + + case 0xE: // Contents of RAM address 0000 to FFFF. (Two bytes) + value = memRead16(*pc) + gRamStart; + *pc += 2; + goto load_addr; + + case 0xF: // Contents of RAM, any address. (Four bytes) + value = memRead32(*pc) + gRamStart; + *pc += 4; + goto load_addr; + + default: // Illegal addressing mode + abortCompilation(); + break; + + // ------------------------------------------------------ + + load_const: + if (constVal) + { + *constVal = value; + return 1; + } + else + { + emitCode (label_L1_const + reg); + emitData (value); + } + break; + + load_stack: + emitCode (label_L1_stack + reg); + break; + + load_addr: + if (value < gRamStart) + { + if (size == size32) + value = memRead32(value); + else if (size == size16) + value = memRead16(value); + else + value = memRead8(value); + goto load_const; + } + switch (size) + { + case size8: + assert (reg == reg_L1); + emitCode (label_L1_addr8); + break; + + case size16: + assert (reg == reg_L1); + emitCode (label_L1_addr16); + break; + + case size32: + emitCode (label_L1_addr + reg); + break; + } + emitData (value); + break; + + load_local: + emitCode (label_L1_local + reg); + emitData (value / 4); // Convert byte offset to word offset. + break; + } + + return 0; +} + +void parseStore (git_uint32 * pc, StoreReg reg, int mode, TransferSize size) +{ + git_uint32 value; + + switch (mode) + { + case 0x0: // Discard + break; + + case 0x5: // Contents of address 00 to FF. (One byte) + value = memRead8(*pc); + *pc += 1; + goto store_addr; + + case 0x6: // Contents of address 0000 to FFFF. (Two bytes) + value = memRead16(*pc); + *pc += 2; + goto store_addr; + + case 0x7: // Contents of any address. (Four bytes) + value = memRead32(*pc); + *pc += 4; + goto store_addr; + + case 0x8: // Value popped off stack. (Zero bytes) + goto store_stack; + + case 0x9: // Call frame local at store_address 00 to FF. (One byte) + value = memRead8(*pc); + *pc += 1; + goto store_local; + + case 0xA: // Call frame local at store_address 0000 to FFFF. (Two bytes) + value = memRead16(*pc); + *pc += 2; + goto store_local; + + case 0xB: // Call frame local at any store_address. (Four bytes) + value = memRead32(*pc); + *pc += 4; + goto store_local; + + case 0xD: // Contents of RAM address 00 to FF. (One byte) + value = memRead8(*pc) + gRamStart; + *pc += 1; + goto store_addr; + + case 0xE: // Contents of RAM address 0000 to FFFF. (Two bytes) + value = memRead16(*pc) + gRamStart; + *pc += 2; + goto store_addr; + + case 0xF: // Contents of RAM, any address. (Four bytes) + value = memRead32(*pc) + gRamStart; + *pc += 4; + goto store_addr; + + // ------------------------------------------------------ + + store_stack: + emitCode (reg == reg_S1 ? label_S1_stack : label_S2_stack); + break; + + store_addr: + if (size == size32) + { + emitCode (reg == reg_S1 ? label_S1_addr : label_S2_addr); + } + else + { + assert (reg == reg_S1); + emitCode (size == size16 ? label_S1_addr16 : label_S1_addr8); + } + emitData (value); + break; + + store_local: + emitCode (reg == reg_S1 ? label_S1_local : label_S2_local); + emitData (value / 4); // Convert byte offset to word offset. + break; + } +} + +static void parseStub (git_uint32 * pc, int mode, Label discardOp) +{ + git_uint32 value; + switch (mode) + { + case 0x0: // Discard + goto store_discard; + case 0x5: // Contents of address 00 to FF. (One byte) + value = memRead8(*pc); + *pc += 1; + goto store_addr; + case 0x6: // Contents of address 0000 to FFFF. (Two bytes) + value = memRead16(*pc); + *pc += 2; + goto store_addr; + case 0x7: // Contents of any address. (Four bytes) + value = memRead32(*pc); + *pc += 4; + goto store_addr; + case 0x8: // Value popped off stack. (Zero bytes) + goto store_stack; + case 0x9: // Call frame local at store_address 00 to FF. (One byte) + value = memRead8(*pc); + *pc += 1; + goto store_local; + case 0xA: // Call frame local at store_address 0000 to FFFF. (Two bytes) + value = memRead16(*pc); + *pc += 2; + goto store_local; + case 0xB: // Call frame local at any store_address. (Four bytes) + value = memRead32(*pc); + *pc += 4; + goto store_local; + case 0xD: // Contents of RAM address 00 to FF. (One byte) + value = memRead8(*pc) + gRamStart; + *pc += 1; + goto store_addr; + case 0xE: // Contents of RAM address 0000 to FFFF. (Two bytes) + value = memRead16(*pc) + gRamStart; + *pc += 2; + goto store_addr; + case 0xF: // Contents of RAM, any address. (Four bytes) + value = memRead32(*pc) + gRamStart; + *pc += 4; + goto store_addr; + // ------------------------------------------------------ + store_discard: + emitCode (discardOp); + break; + store_stack: + emitCode (discardOp + (label_call_stub_stack - label_call_stub_discard)); + break; + store_addr: + emitCode (discardOp + (label_call_stub_addr - label_call_stub_discard)); + emitData (value); + break; + store_local: + emitCode (discardOp + (label_call_stub_local - label_call_stub_discard)); + emitData (value); // Convert byte offset to word offset. + break; + } + + // Every call stub ends with the glulx return address. + emitData (*pc); + + // ...which means that every call stub references the next instruction. + nextInstructionIsReferenced (); +} +void parseCallStub (git_uint32 * pc, int mode) +{ + parseStub (pc, mode, label_call_stub_discard); +} +void parseCatchStub (git_uint32 * pc, int mode) +{ + parseStub (pc, mode, label_catch_stub_discard); +} +void parseSaveStub (git_uint32 * pc, int mode) +{ + parseStub (pc, mode, label_save_stub_discard); +} +void parseUndoStub (git_uint32 * pc, int mode) +{ + parseStub (pc, mode, label_undo_stub_discard); +} diff --git a/interpreters/git/peephole.c b/interpreters/git/peephole.c new file mode 100644 index 0000000..4068b67 --- /dev/null +++ b/interpreters/git/peephole.c @@ -0,0 +1,131 @@ +// $Id: peephole.c,v 1.6 2003/10/13 22:53:04 iain Exp $ +// Peephole optimiser for git + +#include "git.h" + +static Label sLastOp; + +extern void resetPeepholeOptimiser () +{ + sLastOp = label_nop; +} + +#define REPLACE_SINGLE(lastOp,thisOp,newOp) \ + case label_ ## thisOp: \ + if (sLastOp == label_ ## lastOp) \ + { \ + op = label_ ## newOp; \ + goto replaceNoOperands; \ + } \ + break + +#define CASE_NO_OPERANDS(lastOp,newOp) \ + case label_ ## lastOp: op = label_ ## newOp; goto replaceNoOperands + +#define CASE_ONE_OPERAND(lastOp,newOp) \ + case label_ ## lastOp: op = label_ ## newOp; goto replaceOneOperand + +#define REPLACE_STORE(storeOp) \ + case label_ ## storeOp: \ + switch(sLastOp) \ + { \ + CASE_NO_OPERANDS (add_discard, add_ ## storeOp); \ + CASE_NO_OPERANDS (sub_discard, sub_ ## storeOp); \ + CASE_NO_OPERANDS (mul_discard, mul_ ## storeOp); \ + CASE_NO_OPERANDS (div_discard, div_ ## storeOp); \ + CASE_NO_OPERANDS (mod_discard, mod_ ## storeOp); \ + CASE_NO_OPERANDS (neg_discard, neg_ ## storeOp); \ + CASE_NO_OPERANDS (bitand_discard, bitand_ ## storeOp); \ + CASE_NO_OPERANDS (bitor_discard, bitor_ ## storeOp); \ + CASE_NO_OPERANDS (bitxor_discard, bitxor_ ## storeOp); \ + CASE_NO_OPERANDS (bitnot_discard, bitnot_ ## storeOp); \ + CASE_NO_OPERANDS (shiftl_discard, shiftl_ ## storeOp); \ + CASE_NO_OPERANDS (sshiftr_discard, sshiftr_ ## storeOp); \ + CASE_NO_OPERANDS (ushiftr_discard, ushiftr_ ## storeOp); \ + CASE_NO_OPERANDS (copys_discard, copys_ ## storeOp); \ + CASE_NO_OPERANDS (copyb_discard, copyb_ ## storeOp); \ + CASE_NO_OPERANDS (sexs_discard, sexs_ ## storeOp); \ + CASE_NO_OPERANDS (sexb_discard, sexb_ ## storeOp); \ + CASE_NO_OPERANDS (aload_discard, aload_ ## storeOp); \ + CASE_NO_OPERANDS (aloads_discard, aloads_ ## storeOp); \ + CASE_NO_OPERANDS (aloadb_discard, aloadb_ ## storeOp); \ + CASE_NO_OPERANDS (aloadbit_discard, aloadbit_ ## storeOp); \ + default: break; \ + } \ + break + +#define REPLACE_L1_L2(mode2) \ + case label_L2_ ## mode2: \ + switch(sLastOp) \ + { \ + CASE_ONE_OPERAND (L1_const, L1_const_L2_ ## mode2); \ + CASE_NO_OPERANDS (L1_stack, L1_stack_L2_ ## mode2); \ + CASE_ONE_OPERAND (L1_local, L1_local_L2_ ## mode2); \ + CASE_ONE_OPERAND (L1_addr, L1_addr_L2_ ## mode2); \ + default: break; \ + } \ + break + +#define REPLACE_LOAD_OP(loadOp,reg) \ + case label_ ## loadOp: \ + switch(sLastOp) \ + { \ + CASE_ONE_OPERAND (reg ## _const, loadOp ## _ ## reg ## _const); \ + CASE_NO_OPERANDS (reg ## _stack, loadOp ## _ ## reg ## _stack); \ + CASE_ONE_OPERAND (reg ## _local, loadOp ## _ ## reg ## _local); \ + CASE_ONE_OPERAND (reg ## _addr, loadOp ## _ ## reg ## _addr); \ + default: break; \ + } \ + break + +extern void emitCode (Label op) +{ + git_uint32 temp; + + if (gPeephole) + { + switch (op) + { + REPLACE_SINGLE (args_stack, call_stub_discard, args_stack_call_stub_discard); + REPLACE_SINGLE (args_stack, call_stub_addr, args_stack_call_stub_addr); + REPLACE_SINGLE (args_stack, call_stub_local, args_stack_call_stub_local); + REPLACE_SINGLE (args_stack, call_stub_stack, args_stack_call_stub_stack); + + REPLACE_STORE (S1_stack); + REPLACE_STORE (S1_local); + REPLACE_STORE (S1_addr); + + REPLACE_L1_L2 (const); + REPLACE_L1_L2 (stack); + REPLACE_L1_L2 (local); + REPLACE_L1_L2 (addr); + + REPLACE_LOAD_OP (return, L1); + REPLACE_LOAD_OP (astore, L3); + REPLACE_LOAD_OP (astores, L3); + REPLACE_LOAD_OP (astoreb, L3); + REPLACE_LOAD_OP (astorebit, L3); + + default: break; + } + } + goto noPeephole; + +replaceOneOperand: + // The previous opcode has one operand, so + // we have to go back two steps to update it. + temp = undoEmit(); // Save the operand. + undoEmit(); // Remove the old opcode. + emitFinalCode (op); // Emit the new opcode. + emitData (temp); // Emit the operand again. + goto done; + +replaceNoOperands: + undoEmit(); + // ... fall through +noPeephole: + emitFinalCode (op); + // ... fall through +done: + sLastOp = op; +} diff --git a/interpreters/git/savefile.c b/interpreters/git/savefile.c new file mode 100644 index 0000000..88894fe --- /dev/null +++ b/interpreters/git/savefile.c @@ -0,0 +1,318 @@ +// $Id: savefile.c,v 1.6 2003/10/20 16:05:06 iain Exp $ + +#include "git.h" + +static void writeWord (git_sint32 word) +{ + char buffer [4]; + write32 (buffer, word); + glk_put_buffer (buffer, 4); +} + +static git_uint32 readWord (strid_t file) +{ + char buffer [4]; + glk_get_buffer_stream (file, buffer, 4); + return (git_uint32) read32 (buffer); +} + +static int sort_heap_summary(const void *p1, const void *p2) +{ + const glui32 *v1 = (const glui32 *)p1; + const glui32 *v2 = (const glui32 *)p2; + + if (v1 < v2) + return -1; + if (v1 > v2) + return 1; + return 0; +} + +git_sint32 restoreFromFile (git_sint32 * base, git_sint32 id, + git_uint32 protectPos, git_uint32 protectSize) +{ + git_uint32 protectEnd = protectPos + protectSize; + git_uint32 i; + strid_t file; + glui32 fileSize, fileStart; + + int gotIdent = 0; + int gotMemory = 0; + int gotStack = 0; + int gotHeap = 0; + + // Find out what stream they want to use, and make sure it's valid. + file = git_find_stream_by_id (id); + if (file == 0) + return 1; + + // Read IFF header. + if (readWord (file) != read32("FORM")) + return 1; // Not an IFF file. + + fileSize = readWord (file); + fileStart = glk_stream_get_position (file); + + if (readWord (file) != read32("IFZS")) + return 1; // Not a Quetzal file. + + // Discard the current heap. + heap_clear(); + + // Read all the chunks. + + while (glk_stream_get_position(file) < fileStart + fileSize) + { + git_uint32 chunkType, chunkSize, chunkStart; + chunkType = readWord (file); + chunkSize = readWord (file); + chunkStart = glk_stream_get_position (file); + + if (chunkType == read32("IFhd")) + { + if (gotIdent) + return 1; + + gotIdent = 1; + + if (chunkSize != 128) + return 1; + + for (i = 0 ; i < 128 ; ++i) + { + glui32 c = glk_get_char_stream (file); + if (gRom [i] != c) + return 1; + } + } + else if (chunkType == read32("Stks")) + { + if (gotStack) + return 1; + + gotStack = 1; + + if (chunkSize & 3) + return 1; + + gStackPointer = base; + for ( ; chunkSize > 0 ; chunkSize -= 4) + *gStackPointer++ = readWord(file); + } + else if (chunkType == read32("CMem")) + { + git_uint32 bytesRead = 0; + if (gotMemory) + return 1; + + gotMemory = 1; + + if (resizeMemory (readWord(file), 1)) + fatalError ("Can't resize memory map"); + + bytesRead = 4; + i = gRamStart; + while (i < gExtStart && bytesRead < chunkSize) + { + int mult = 0; + char c = (char) glk_get_char_stream(file); + ++bytesRead; + + if (c == 0) + { + mult = (unsigned char) glk_get_char_stream(file); + ++bytesRead; + } + + for (++mult ; mult > 0 ; --mult, ++i) + if (i >= protectEnd || i < protectPos) + gRam [i] = gRom [i] ^ c; + } + + while (i < gEndMem && bytesRead < chunkSize) + { + int mult = 0; + char c = (char) glk_get_char_stream(file); + ++bytesRead; + + if (c == 0) + { + mult = (unsigned char) glk_get_char_stream(file); + ++bytesRead; + } + + for (++mult ; mult > 0 ; --mult, ++i) + if (i >= protectEnd || i < protectPos) + gRam [i] = c; + } + + while (i < gExtStart) + if (i >= protectEnd || i < protectPos) + gRam [i] = gRom [i], ++i; + + while (i < gEndMem) + if (i >= protectEnd || i < protectPos) + gRam [i] = 0, ++i; + + if (bytesRead != chunkSize) + return 1; // Too much data! + + if (chunkSize & 1) + glk_get_char_stream (file); + } + else if (chunkType == read32("MAll")) + { + glui32 heapSize = 0; + glui32 * heap = 0; + + if (gotHeap) + return 1; + + gotHeap = 1; + + if (chunkSize & 3) + return 1; + + if (chunkSize > 0) + { + heap = malloc (chunkSize); + heapSize = chunkSize / 4; + for (i = 0 ; i < heapSize ; ++i) + heap[i] = readWord(file); + + /* The summary might have come from any interpreter, so it could + be out of order. We'll sort it. */ + qsort(heap+2, (heapSize-2)/2, 8, &sort_heap_summary); + + if (heap_apply_summary (heapSize, heap)) + fatalError ("Couldn't apply heap summary"); + free (heap); + } + } + else + { + // Unknown chunk type -- just skip it. + glk_stream_set_position (file, (chunkSize + 1) & ~1, seekmode_Current); + } + } + + // Make sure we have all the chunks we need. + + if (!gotIdent) + fatalError ("No ident chunk in save file"); + + if (!gotStack) + fatalError ("No stack chunk in save file"); + + if (!gotMemory) + fatalError ("No memory chunk in save file"); + + // If we reach this point, we restored successfully. + + return 0; +} + +git_sint32 saveToFile (git_sint32 * base, git_sint32 * sp, git_sint32 id) +{ + git_uint32 n, zeroCount; + glui32 fileSize, fileSizePos; + glui32 memSize, memSizePos; + glui32 heapSize; + glui32* heap; + + strid_t file, oldFile; + + // Find out what stream they want to use, and make sure it's valid. + file = git_find_stream_by_id (id); + if (file == 0) + return 1; + + // Get the state of the heap. + if (heap_get_summary (&heapSize, &heap)) + fatalError ("Couldn't get heap summary"); + + // Make the given stream the default. + oldFile = glk_stream_get_current (); + glk_stream_set_current (file); + + // Write Quetzal header. + glk_put_string ("FORM"); + + fileSizePos = glk_stream_get_position (file); + writeWord (0); + + glk_put_string ("IFZS"); + + // Header chunk. + glk_put_string ("IFhd"); + writeWord (128); + glk_put_buffer ((char *) gRom, 128); + + // Stack chunk. + glk_put_string ("Stks"); + writeWord ((sp - base) * 4); + for (n = 0 ; n < (git_uint32) (sp - base) ; ++n) + writeWord (base [n]); + + // Heap chunk. + if (heap != 0) + { + glk_put_string ("MAll"); + writeWord (heapSize * 4); + for (n = 0 ; n < heapSize ; ++n) + writeWord (heap [n]); + free(heap); + } + + // Memory chunk. + glk_put_string ("CMem"); + memSizePos = glk_stream_get_position (file); + writeWord (0); + + writeWord (gEndMem); + for (zeroCount = 0, n = gRamStart ; n < gEndMem ; ++n) + { + unsigned char romC = (n < gExtStart) ? gRom[n] : 0; + unsigned char c = ((git_uint32) romC) ^ ((git_uint32) gRam[n]); + if (c == 0) + ++zeroCount; + else + { + for ( ; zeroCount > 256 ; zeroCount -= 256) + { + glk_put_char (0); + glk_put_char (0xff); + } + + if (zeroCount > 0) + { + glk_put_char (0); + glk_put_char ((char) (zeroCount - 1)); + zeroCount = 0; + } + + glk_put_char (c); + } + } + // Note: we don't bother writing out any remaining zeroes, + // because the memory is padded out with zeroes on restore. + + memSize = glk_stream_get_position (file) - memSizePos - 4; + if (memSize & 1) + glk_put_char (0); + + // Back up and fill in the lengths. + fileSize = glk_stream_get_position (file) - fileSizePos - 4; + + glk_stream_set_position (file, fileSizePos, seekmode_Start); + writeWord (fileSize); + + glk_stream_set_position (file, memSizePos, seekmode_Start); + writeWord (memSize); + + // Restore the previous default stream. + glk_stream_set_current (oldFile); + + // And we're done. + return 0; +} diff --git a/interpreters/git/saveundo.c b/interpreters/git/saveundo.c new file mode 100644 index 0000000..13620f3 --- /dev/null +++ b/interpreters/git/saveundo.c @@ -0,0 +1,347 @@ +// $Id: saveundo.c,v 1.15 2003/10/20 16:05:06 iain Exp $ + +#include "git.h" +#include +#include +#include + +typedef const git_uint8 * MemoryPage; +typedef MemoryPage * MemoryMap; + +typedef struct UndoRecord UndoRecord; + +struct UndoRecord +{ + git_uint32 endMem; + MemoryMap memoryMap; + git_sint32 stackSize; + git_sint32 * stack; + glui32 heapSize; + glui32 * heap; + UndoRecord * prev; + UndoRecord * next; +}; + +static UndoRecord * gUndo = NULL; +static git_uint32 gUndoSize = 0; +static git_uint32 gMaxUndoSize = 256 * 1024; + +static void reserveSpace (git_uint32); +static void deleteRecord (UndoRecord * u); + +void initUndo (git_uint32 size) +{ + gMaxUndoSize = size; + gUndoSize = 0; + gUndo = NULL; +} + +int saveUndo (git_sint32 * base, git_sint32 * sp) +{ + git_uint32 undoSize = sizeof(UndoRecord); + git_uint32 mapSize = sizeof(MemoryPage*) * (gEndMem - gRamStart) / 256; + git_uint32 stackSize = sizeof(git_sint32*) * (sp - base); + git_uint32 totalSize = undoSize + mapSize + stackSize; + + git_uint32 addr = gRamStart; // Address in glulx memory. + git_uint32 slot = 0; // Slot in our memory map. + + UndoRecord * undo = malloc (undoSize); + if (undo == NULL) + fatalError ("Couldn't allocate undo record"); + + undo->endMem = gEndMem; + undo->memoryMap = malloc (mapSize); + undo->stackSize = stackSize; + undo->stack = malloc (stackSize); + undo->prev = NULL; + undo->next = NULL; + + if (undo->memoryMap == NULL || undo->stack == NULL) + fatalError ("Couldn't allocate memory for undo"); + + // Save the stack. + memcpy (undo->stack, base, undo->stackSize); + + // Are we diffing against the previous undo record, + // or against the initial gamefile state? + if (gUndo == NULL) + { + // We're diffing against the gamefile. + for ( ; addr < gExtStart ; addr += 256, ++slot) + { + if (memcmp (gRom + addr, gRam + addr, 256) != 0) + { + // We need to save this page. + git_uint8 * page = malloc(256); + if (page == NULL) + fatalError ("Couldn't allocate memory for undo"); + + memcpy (page, gRam + addr, 256); + undo->memoryMap[slot] = page; + totalSize += 256; + } + else + { + // We don't need to save this page. + // Just make it point into ROM. + undo->memoryMap[slot] = gRom + addr; + } + } + + // If the memory map has been extended, save the exended area + for (addr = gExtStart ; addr < gEndMem ; addr += 256, ++slot) + { + git_uint8 * page = malloc(256); + if (page == NULL) + fatalError ("Couldn't allocate memory for undo"); + + memcpy (page, gRam + addr, 256); + undo->memoryMap[slot] = page; + totalSize += 256; + } + } + else + { + // We're diffing against the most recent undo record. + git_uint32 endMem = (gUndo->endMem < gEndMem) ? gUndo->endMem : gEndMem; + for ( ; addr < endMem ; addr += 256, ++slot) + { + if (memcmp (gUndo->memoryMap [slot], gRam + addr, 256) != 0) + { + // We need to save this page. + git_uint8 * page = malloc(256); + memcpy (page, gRam + addr, 256); + undo->memoryMap[slot] = page; + totalSize += 256; + } + else + { + // We don't need to save this page. Just copy + // the pointer from the previous undo record. + undo->memoryMap[slot] = gUndo->memoryMap[slot]; + } + } + + // If the memory map has been extended, save the exended area + for (addr = endMem ; addr < gEndMem ; addr += 256, ++slot) + { + git_uint8 * page = malloc(256); + if (page == NULL) + fatalError ("Couldn't allocate memory for undo"); + + memcpy (page, gRam + addr, 256); + undo->memoryMap[slot] = page; + totalSize += 256; + } + } + + // Save the heap. + if (heap_get_summary (&(undo->heapSize), &(undo->heap))) + fatalError ("Couldn't get heap summary"); + totalSize += undo->heapSize * 4; + + // Link this record into the undo list. + + undo->prev = gUndo; + if (gUndo) + gUndo->next = undo; + + gUndo = undo; + gUndoSize += totalSize; + + // Delete old records until we have enough free space. + reserveSpace (0); + + // And we're done. + return 0; +} + +int restoreUndo (git_sint32* base, git_uint32 protectPos, git_uint32 protectSize) +{ + if (gUndo == NULL) + { + // Nothing to undo! + return 1; + } + else + { + UndoRecord * undo = gUndo; + + git_uint32 addr = gRamStart; // Address in glulx memory. + MemoryMap map = undo->memoryMap; // Glulx memory map. + + // Restore the size of the memory map + heap_clear (); + resizeMemory (undo->endMem, 1); + + // Restore the stack. + memcpy (base, undo->stack, undo->stackSize); + gStackPointer = base + (undo->stackSize / sizeof(git_sint32)); + + // Restore the contents of RAM. + + if (protectSize > 0 && protectPos < gEndMem) + { + for ( ; addr < (protectPos & ~0xff) ; addr += 256, ++map) + memcpy (gRam + addr, *map, 256); + + memcpy (gRam + addr, *map, protectPos & 0xff); + protectSize += protectPos & 0xff; + + while (protectSize > 256) + addr += 256, ++map, protectSize -= 256; + + if (addr < gEndMem) + { + memcpy (gRam + addr + protectSize, + *map + protectSize, + 256 - protectSize); + } + addr += 256, ++map; + } + + for ( ; addr < gEndMem ; addr += 256, ++map) + memcpy (gRam + addr, *map, 256); + + // Restore the heap. + if (heap_apply_summary (undo->heapSize, undo->heap)) + fatalError ("Couldn't apply heap summary"); + + // Delete the undo record. + + gUndo = undo->prev; + deleteRecord (undo); + + if (gUndo) + gUndo->next = NULL; + else + assert (gUndoSize == 0); + + // And we're done. + return 0; + } +} + +void resetUndo () +{ + reserveSpace (gMaxUndoSize); + assert (gUndo == NULL); + assert (gUndoSize == 0); +} + +void shutdownUndo () +{ + resetUndo(); +} + +static void reserveSpace (git_uint32 n) +{ + UndoRecord * u = gUndo; + if (u == NULL) + return; + + // Find the oldest undo record. + + while (u->prev) + u = u->prev; + + // Delete records until we've freed up the required amount of space. + + while (gUndoSize + n > gMaxUndoSize) + { + if (u->next) + { + assert (u->next->prev == u); + u = u->next; + + deleteRecord (u->prev); + u->prev = NULL; + } + else + { + assert (u == gUndo); + gUndo = NULL; + + deleteRecord (u); + assert (gUndoSize == 0); + break; + } + } +} + +static void deleteRecord (UndoRecord * u) +{ + git_uint32 addr = gRamStart; // Address in glulx memory. + git_uint32 slot = 0; // Slot in our memory map. + + // Zero out all the slots which are duplicates + // of pages held in older undo records. + + if (u->prev) + { + // We're diffing against the previous undo record. + while (addr < u->endMem && addr < u->prev->endMem) + { + if (u->memoryMap [slot] == u->prev->memoryMap [slot]) + u->memoryMap [slot] = NULL; + addr += 256, ++slot; + } + } + else + { + // We're diffing against the gamefile. + while (addr < u->endMem && addr < gExtStart) + { + if (u->memoryMap [slot] == (gRom + addr)) + u->memoryMap [slot] = NULL; + addr += 256, ++slot; + } + } + + // Zero out all the slots which are duplicates + // of newer undo records. + + if (u->next) + { + addr = gRamStart; + slot = 0; + + while (addr < u->endMem && addr < u->next->endMem) + { + if (u->memoryMap [slot] == u->next->memoryMap [slot]) + u->memoryMap [slot] = NULL; + addr += 256, ++slot; + } + } + + // Free all the slots which are owned by this record only. + + addr = gRamStart; + slot = 0; + while (addr < u->endMem) + { + if (u->memoryMap [slot]) + { + free ((void*) u->memoryMap [slot]); + gUndoSize -= 256; + } + addr += 256, ++slot; + } + + // Free the memory map itself. + free ((void*) u->memoryMap); + gUndoSize -= sizeof(MemoryPage*) * (u->endMem - gRamStart) / 256; + + // Free the stack. + free (u->stack); + gUndoSize -= u->stackSize; + + // Free the heap. + free (u->heap); + gUndoSize -= u->heapSize * 4; + + // Finally, free the record. + free (u); + gUndoSize -= sizeof(UndoRecord); +} diff --git a/interpreters/git/search.c b/interpreters/git/search.c new file mode 100644 index 0000000..d09fa8a --- /dev/null +++ b/interpreters/git/search.c @@ -0,0 +1,275 @@ +// $Id: search.c,v 1.1 2003/10/18 20:06:41 iain Exp $ + +// search.c: Glulxe code for built-in search opcodes +// Designed by Andrew Plotkin +// http://www.eblong.com/zarf/glulx/index.html + +#include "glk.h" +#include "git.h" +#include "opcodes.h" + +#ifndef TRUE +#define TRUE 1 +#endif +#ifndef FALSE +#define FALSE 0 +#endif + +#define serop_KeyIndirect (0x01) +#define serop_ZeroKeyTerminates (0x02) +#define serop_ReturnIndex (0x04) +/* ### KeyZeroBounded? variants? */ +/* ### LowerBoundKey? */ + +/* In general, these search functions look through a bunch of structures + in memory, searching for one whose key (a fixed-size sequence of bytes + within the structure) matches a given key. The result can indicate a + particular structure within the bunch, or it can be NULL ("not found".) + + Any or all of these options can be applied: + + KeyIndirect: If this is true, the key argument is taken to be the + start of an array of bytes in memory (whose length is keysize). + If it is false, the key argument contains the key itself. In + this case, keysize *must* be 1, 2, or 4. The key is stored in the + lower bytes of the key argument, big-endian. (The upper bytes are + ignored.) + + ZeroKeyTerminates: If this is true, when the search reaches a struct + whose key is all zeroes, the search terminates (and returns NULL). + If the searched-for key happens to also be zeroes, the key-match + (returning the struct) takes precedence over the zero-match (returning + NULL.) + + ReturnIndex: If this is false, the return value is the memory address + of the matching struct, or 0 to indicate NULL. If true, the return value + is the array index of the matching struct, or -1 to indicate NULL. +*/ + +static void fetchkey(unsigned char *keybuf, glui32 key, glui32 keysize, + glui32 options); + +/* linear_search(): + An array of data structures is stored in memory, beginning at start, + each structure being structsize bytes. Within each struct, there is + a key value keysize bytes long, starting at position keyoffset (from + the start of the structure.) Search through these in order. If one + is found whose key matches, return it. If numstructs are searched + with no result, return NULL. + + numstructs may be -1 (0xFFFFFFFF) to indicate no upper limit to the + number of structures to search. The search will continue until a match + is found, or (if ZeroKeyTerminates is set) a zero key. + + The KeyIndirect, ZeroKeyTerminates, and ReturnIndex options may be + used. +*/ +glui32 git_linear_search(glui32 key, glui32 keysize, + glui32 start, glui32 structsize, glui32 numstructs, + glui32 keyoffset, glui32 options) +{ + unsigned char keybuf[4]; + glui32 count; + int ix; + int retindex = ((options & serop_ReturnIndex) != 0); + int zeroterm = ((options & serop_ZeroKeyTerminates) != 0); + + fetchkey(keybuf, key, keysize, options); + + for (count=0; count byte2) + cmp = 1; + } + } + else { + for (ix=0; (!cmp) && ix byte2) + cmp = 1; + } + } + + if (!cmp) { + if (retindex) + return val; + else + return addr; + } + + if (cmp < 0) { + bot = val+1; + } + else { + top = val; + } + } + + if (retindex) + return -1; + else + return 0; +} + +/* linked_search(): + The structures may be anywhere in memory, in any order. They are + linked by a four-byte address field, which is found in each struct + at position nextoffset. If this field contains zero, it indicates + the end of the linked list. + + The KeyIndirect and ZeroKeyTerminates options may be used. +*/ +glui32 git_linked_search(glui32 key, glui32 keysize, + glui32 start, glui32 keyoffset, glui32 nextoffset, glui32 options) +{ + unsigned char keybuf[4]; + int ix; + glui32 val; + int zeroterm = ((options & serop_ZeroKeyTerminates) != 0); + + fetchkey(keybuf, key, keysize, options); + + while (start != 0) { + int match = TRUE; + if (keysize <= 4) { + for (ix=0; match && ix +#include +#include +#include +#include + +// ------------------------------------------------------------- +// Global variables + +git_sint32* gStackPointer; + +#ifdef USE_DIRECT_THREADING +Opcode* gOpcodeTable; +#endif + +// ------------------------------------------------------------- +// Useful macros for manipulating the stack + +#define LOCAL(n) (locals[(n)]) + +#define PUSH(n) *sp++ = (n) +#define POP (*--sp) +#define READ_PC ((git_uint32)(*pc++)) + +#define CHECK_FREE(n) if ((top - sp) < (n)) goto stack_overflow +#define CHECK_USED(n) if ((sp - values) < (n)) goto stack_underflow + +// ------------------------------------------------------------- +// Functions + +void startProgram (size_t cacheSize, enum IOMode ioMode) +{ + Block pc; // Program counter (pointer into dynamically generated code) + + git_sint32 L1=0, L2=0, L3=0, L4=0, L5=0, L6=0, L7=0; +#define S1 L1 +#define S2 L2 + + git_sint32* base; // Bottom of the stack. + git_sint32* frame; // Bottom of the current stack frame. + git_sint32* locals; // Start of the locals section of the current frame. + git_sint32* values; // Start of the values section of the current frame. + git_sint32* sp; // Next free stack slot. + git_sint32* top; // The top of the stack -- that is, the first unusable slot. + + git_sint32 args [64]; // Array of arguments. Count is stored in L2. + git_uint32 runCounter = 0; + + git_uint32 ioRock = 0; + + git_uint32 stringTable = memRead32(28); + git_uint32 startPos = memRead32(24); + git_uint32 stackSize = memRead32(20); + + git_uint32 protectPos = 0; + git_uint32 protectSize = 0; + + git_uint32 glulxPC = 0; + git_uint32 glulxOpcode = 0; + + acceleration_func accelfunc; + + // Initialise the code cache. + +#ifdef USE_DIRECT_THREADING + static Opcode opcodeTable [] = { +#define LABEL(label) &&do_ ## label, +#include "labels.inc" + NULL}; + gOpcodeTable = opcodeTable; +#endif + + initCompiler (cacheSize); + + // Initialise the random number generator. + srand (time(NULL)); + + // Set up the stack. + + base = malloc (stackSize); + if (base == NULL) + fatalError ("Couldn't allocate stack"); + + top = base + (stackSize / 4); + frame = locals = values = sp = base; + + // Call the first function. + + L1 = startPos; // Initial PC. + L2 = 0; // No arguments. + goto do_enter_function_L1; + +#ifdef USE_DIRECT_THREADING +#define NEXT do { ++runCounter; goto **(pc++); } while(0) +#else +#define NEXT goto next +//#define NEXT do { CHECK_USED(0); CHECK_FREE(0); goto next; } while (0) +next: + ++runCounter; + switch (*pc++) + { +#define LABEL(foo) case label_ ## foo: goto do_ ## foo; +#include "labels.inc" + default: fatalError("exec: bad opcode"); + } +#endif + +do_debug_step: + // This opcode lets us keep track of how the compiled + // code relates to the original glulx code. + glulxPC = READ_PC; // Glulx program counter. + glulxOpcode = READ_PC; // Glulx opcode number. +// fprintf (stdout, "\nPC: 0x%08x\nOpcode: 0x%04x\n", glulxPC, glulxOpcode); +// fprintf (stdout, "Stack:"); +// for (L7 = 0 ; L7 < (sp - base) ; ++L7) +// fprintf (stdout," 0x%x", base[L7]); +// fprintf (stdout, "\n"); + NEXT; + +#define LOAD_INSTRUCTIONS(reg) \ + do_ ## reg ## _const: reg = READ_PC; NEXT; \ + do_ ## reg ## _stack: CHECK_USED(1); reg = POP; NEXT; \ + do_ ## reg ## _addr: reg = memRead32 (READ_PC); NEXT; \ + do_ ## reg ## _local: reg = LOCAL (READ_PC); NEXT + + LOAD_INSTRUCTIONS(L1); + LOAD_INSTRUCTIONS(L2); + LOAD_INSTRUCTIONS(L3); + LOAD_INSTRUCTIONS(L4); + LOAD_INSTRUCTIONS(L5); + LOAD_INSTRUCTIONS(L6); + LOAD_INSTRUCTIONS(L7); + +#define STORE_INSTRUCTIONS(reg) \ + do_ ## reg ## _stack: CHECK_FREE(1); PUSH(reg); NEXT; \ + do_ ## reg ## _addr: memWrite32 (READ_PC, reg); NEXT; \ + do_ ## reg ## _local: LOCAL (READ_PC) = reg; NEXT + + STORE_INSTRUCTIONS(S1); + STORE_INSTRUCTIONS(S2); + +#define DOUBLE_LOAD(mode2) \ + do_L1_const_L2_ ## mode2: L1 = READ_PC; goto do_L2_ ## mode2; \ + do_L1_stack_L2_ ## mode2: CHECK_USED(1); L1 = POP; goto do_L2_ ## mode2; \ + do_L1_local_L2_ ## mode2: L1 = LOCAL (READ_PC); goto do_L2_ ## mode2; \ + do_L1_addr_L2_ ## mode2: L1 = memRead32 (READ_PC); goto do_L2_ ## mode2 + + DOUBLE_LOAD(const); + DOUBLE_LOAD(stack); + DOUBLE_LOAD(local); + DOUBLE_LOAD(addr); + +#undef LOAD_INSTRUCTIONS +#undef STORE_INSTRUCTIONS +#undef DOUBLE_LOAD + +do_L1_addr16: L1 = memRead16 (READ_PC); NEXT; +do_L1_addr8: L1 = memRead8 (READ_PC); NEXT; +do_S1_addr16: memWrite16 (READ_PC, S1); NEXT; +do_S1_addr8: memWrite8 (READ_PC, S1); NEXT; + +#define UL7 ((git_uint32)L7) + +do_recompile: + gBlockHeader->runCounter = runCounter; + pc = compile (READ_PC); + runCounter = 0; + NEXT; + +do_jump_abs_L7: + gBlockHeader->runCounter = runCounter; + pc = getCode (UL7); + runCounter = gBlockHeader->runCounter; + NEXT; + +do_enter_function_L1: // Arg count is in L2. + + // Check for an accelerated function + accelfunc = accel_get_func(L1); + if (accelfunc) { + S1 = accelfunc(L2, (glui32 *) args); + goto do_pop_call_stub; + } + + frame = sp; + // Read the function type. + L7 = memRead8(L1++); + // Parse the local variables descriptor. + L6 = L5 = L4 = 0; + do + { + L6 = memRead8(L1++); // LocalType + L5 = memRead8(L1++); // LocalCount + if (L6 != 4 && L6 != 0) // We only support 4-byte locals. + fatalError("Local variable wasn't 4 bytes wide"); + L4 += L5; // Cumulative local count. + } + while (L5 != 0); + + // Write out the stack frame. + // Recall that the number of locals is stored in L4. + + CHECK_FREE(3 + L4); + + PUSH (L4*4 + 12); // FrameLen + PUSH (12); // LocalsPos + if (L4 == 0) + L6 = 0; + else + L6 = (4 << 24) | (L4 << 16); + PUSH (L6); // format of locals + + // This is where the local variables start, so: + locals = sp; + + // Read the arguments, based on the function type. + switch (L7) + { + case 0xC0: // arguments should be placed on the stack. + // argc is in L2; we'll randomly use L5 as scratch. + CHECK_FREE(L5 + 1); + // Initialise the local variables. + for ( ; L4 > 0 ; --L4) + PUSH (0); + // This is where the temporary values start, so: + values = sp; + // Push the args onto the stack. + for (L5 = 0 ; L5 < L2 ; ++L5) + PUSH (args [L5]); + // Push the arg count. + PUSH (L2); + break; + + case 0xC1: // arguments should be written into locals. + // argc is in L2, num locals is in L4. + // Stuff as many locals as possible with arguments. + for (L5 = 1 ; L5 <= L2 && L4 > 0 ; ++L5, --L4) + PUSH (args [L2 - L5]); + // Initialise any remaining locals. + for ( ; L4 > 0 ; --L4) + PUSH (0); + // This is where the temporary values start, so: + values = sp; + break; + + default: + // This isn't a function! + fatalError("Not a function"); + break; + } + + // Start executing the function. + L7 = L1; + goto do_jump_abs_L7; + + do_nop: NEXT; + +#define PEEPHOLE_STORE(tag, code) \ + do_ ## tag ## _discard: code; NEXT; \ + do_ ## tag ## _S1_stack: code; goto do_S1_stack; \ + do_ ## tag ## _S1_local: code; goto do_S1_local; \ + do_ ## tag ## _S1_addr: code; goto do_S1_addr + + PEEPHOLE_STORE(add, S1 = L1 + L2); + PEEPHOLE_STORE(sub, S1 = L1 - L2); + PEEPHOLE_STORE(mul, S1 = L1 * L2); + PEEPHOLE_STORE(div, if (L2 == 0) fatalError ("Divide by zero"); S1 = L1 / L2); + PEEPHOLE_STORE(mod, if (L2 == 0) fatalError ("Divide by zero"); S1 = L1 % L2); + + PEEPHOLE_STORE(neg, S1 = -L1); + PEEPHOLE_STORE(bitnot, S1 = ~L1); + + PEEPHOLE_STORE(bitand, S1 = L1 & L2); + PEEPHOLE_STORE(bitor, S1 = L1 | L2); + PEEPHOLE_STORE(bitxor, S1 = L1 ^ L2); + + PEEPHOLE_STORE(shiftl, if (L2 > 31) S1 = 0; else S1 = L1 << ((git_uint32) L2)); + PEEPHOLE_STORE(sshiftr, if (L2 > 31) L2 = 31; S1 = ((git_sint32) L1) >> ((git_uint32) L2)); + PEEPHOLE_STORE(ushiftr, if (L2 > 31) S1 = 0; else S1 = ((git_uint32) L1) >> ((git_uint32) L2)); + + PEEPHOLE_STORE(aload, S1 = memRead32 (L1 + (L2<<2))); + PEEPHOLE_STORE(aloads, S1 = memRead16 (L1 + (L2<<1))); + PEEPHOLE_STORE(aloadb, S1 = memRead8 (L1 + L2)); + PEEPHOLE_STORE(aloadbit,S1 = (memRead8 (L1 + (L2>>3)) >> (L2 & 7)) & 1); + + PEEPHOLE_STORE(copys, S1 = L1 & 0xFFFF); + PEEPHOLE_STORE(copyb, S1 = L1 & 0x00FF); + PEEPHOLE_STORE(sexs, S1 = (git_sint32)((signed short)(L1 & 0xFFFF))); + PEEPHOLE_STORE(sexb, S1 = (git_sint32)((signed char)(L1 & 0x00FF))); + +#define PEEPHOLE_LOAD(tag,reg) \ + do_ ## tag ## _ ## reg ## _const: reg = READ_PC; goto do_ ## tag; \ + do_ ## tag ## _ ## reg ## _stack: CHECK_USED(1); reg = POP; goto do_ ## tag; \ + do_ ## tag ## _ ## reg ## _local: reg = LOCAL(READ_PC); goto do_ ## tag; \ + do_ ## tag ## _ ## reg ## _addr: reg = memRead32(READ_PC); goto do_ ## tag + + PEEPHOLE_LOAD (return, L1); + PEEPHOLE_LOAD (astore, L3); + PEEPHOLE_LOAD (astores, L3); + PEEPHOLE_LOAD (astoreb, L3); + PEEPHOLE_LOAD (astorebit, L3); + +#undef PEEPHOLE_STORE + + do_astore: memWrite32 (L1 + (L2<<2), L3); NEXT; + do_astores: memWrite16 (L1 + (L2<<1), L3); NEXT; + do_astoreb: memWrite8 (L1 + L2, L3); NEXT; + do_astorebit: + L4 = memRead8(L1 + (L2>>3)); + if (L3 == 0) + L4 &= ~(1 << (L2 & 7)); + else + L4 |= (1 << (L2 & 7)); + memWrite8(L1 + (L2>>3), L4); + NEXT; + +#define DO_JUMP(tag, reg, cond) \ + do_ ## tag ## _var: L7 = READ_PC; if (cond) goto do_goto_ ## reg ## _from_L7; NEXT; \ + do_ ## tag ## _const: L7 = READ_PC; if (cond) goto do_jump_abs_L7; NEXT; \ + do_ ## tag ## _by: L7 = READ_PC; if (cond) pc += L7; NEXT; \ + do_ ## tag ## _return0: if (cond) { L1 = 0; goto do_return; } NEXT; \ + do_ ## tag ## _return1: if (cond) { L1 = 1; goto do_return; } NEXT + + DO_JUMP(jump, L1, 1 == 1); + DO_JUMP(jz, L2, L1 == 0); + DO_JUMP(jnz, L2, L1 != 0); + DO_JUMP(jeq, L3, L1 == L2); + DO_JUMP(jne, L3, L1 != L2); + DO_JUMP(jlt, L3, L1 < L2); + DO_JUMP(jge, L3, L1 >= L2); + DO_JUMP(jgt, L3, L1 > L2); + DO_JUMP(jle, L3, L1 <= L2); + DO_JUMP(jltu, L3, ((git_uint32)L1 < (git_uint32)L2)); + DO_JUMP(jgeu, L3, ((git_uint32)L1 >= (git_uint32)L2)); + DO_JUMP(jgtu, L3, ((git_uint32)L1 > (git_uint32)L2)); + DO_JUMP(jleu, L3, ((git_uint32)L1 <= (git_uint32)L2)); + +#undef DO_JUMP + + do_jumpabs: L7 = L1; goto do_jump_abs_L7; NEXT; + + do_goto_L3_from_L7: L1 = L3; goto do_goto_L1_from_L7; + do_goto_L2_from_L7: L1 = L2; goto do_goto_L1_from_L7; + do_goto_L1_from_L7: + if (L1 == 0 || L1 == 1) goto do_return; + L7 = L7 + L1 - 2; goto do_jump_abs_L7; + + do_args_stack: + // The first argument is topmost in the stack; the count is in L2. + CHECK_USED(L2); + // We want to store the arguments in 'args' in the same order. + for (L3 = L2 - 1 ; L3 >= 0 ; --L3) + args [L3] = POP; + NEXT; + + // Specialised versions of above: + do_args_stack_call_stub_discard: + CHECK_USED(L2); + for (L3 = L2 - 1 ; L3 >= 0 ; --L3) + args [L3] = POP; + goto do_call_stub_discard; + + do_args_stack_call_stub_addr: + CHECK_USED(L2); + for (L3 = L2 - 1 ; L3 >= 0 ; --L3) + args [L3] = POP; + goto do_call_stub_addr; + + do_args_stack_call_stub_local: + CHECK_USED(L2); + for (L3 = L2 - 1 ; L3 >= 0 ; --L3) + args [L3] = POP; + goto do_call_stub_local; + + do_args_stack_call_stub_stack: + CHECK_USED(L2); + for (L3 = L2 - 1 ; L3 >= 0 ; --L3) + args [L3] = POP; + goto do_call_stub_stack; + + do_args_3: + args [0] = L4; + args [1] = L3; + args [2] = L2; + L2 = 3; + NEXT; + + do_args_2: + args [0] = L3; + args [1] = L2; + L2 = 2; + NEXT; + + do_args_1: + args [0] = L2; + L2 = 1; + NEXT; + + do_args_0: + L2 = 0; + NEXT; + + do_undo_stub_discard: + CHECK_FREE(4); + PUSH (0); // DestType + PUSH (0); // DestAddr + goto finish_undo_stub; + + do_undo_stub_addr: + CHECK_FREE(4); + PUSH (1); // DestType + PUSH (READ_PC); // DestAddr + goto finish_undo_stub; + + do_undo_stub_local: + CHECK_FREE(4); + PUSH (2); // DestType + PUSH (READ_PC); // DestAddr + goto finish_undo_stub; + + do_undo_stub_stack: + CHECK_FREE(4); + PUSH (3); // DestType + PUSH (0); // DestAddr + goto finish_undo_stub; + +finish_undo_stub: + PUSH (READ_PC); // PC + PUSH ((frame - base) * 4); // FramePtr + saveUndo (base, sp); + S1 = 0; + goto do_pop_call_stub; + + do_restoreundo: + if (restoreUndo (base, protectPos, protectSize) == 0) + { + sp = gStackPointer; + S1 = -1; + goto do_pop_call_stub; + } + S1 = 1; + NEXT; + + do_save_stub_discard: + CHECK_FREE(4); + PUSH (0); // DestType + PUSH (0); // DestAddr + goto finish_save_stub; + + do_save_stub_addr: + CHECK_FREE(4); + PUSH (1); // DestType + PUSH (READ_PC); // DestAddr + goto finish_save_stub; + + do_save_stub_local: + CHECK_FREE(4); + PUSH (2); // DestType + PUSH (READ_PC); // DestAddr + goto finish_save_stub; + + do_save_stub_stack: + CHECK_FREE(4); + PUSH (3); // DestType + PUSH (0); // DestAddr + goto finish_save_stub; + +finish_save_stub: + PUSH (READ_PC); // PC + PUSH ((frame - base) * 4); // FramePtr + if (ioMode == IO_GLK) + S1 = saveToFile (base, sp, L1); + else + S1 = 1; + goto do_pop_call_stub; + + do_restore: + if (ioMode == IO_GLK + && restoreFromFile (base, L1, protectPos, protectSize) == 0) + { + sp = gStackPointer; + S1 = -1; + goto do_pop_call_stub; + } + S1 = 1; + NEXT; + + do_catch_stub_discard: + CHECK_FREE(4); + L7 = 0; + PUSH (0); // DestType + goto finish_catch_stub_addr_L7; + + do_catch_stub_addr: + CHECK_FREE(4); + L7 = READ_PC; + memWrite32(L7, (sp-base+4)*4); + PUSH (1); // DestType + goto finish_catch_stub_addr_L7; + + do_catch_stub_local: + CHECK_FREE(4); + L7 = READ_PC; + memWrite32(L7, (sp-base+4)*4); + PUSH (2); // DestType + goto finish_catch_stub_addr_L7; + + do_catch_stub_stack: + CHECK_FREE(5); + PUSH (3); // DestType + PUSH (0); // DestAddr + PUSH (READ_PC); // PC + PUSH ((frame - base) * 4); // FramePtr + L7 = (sp - base)*4; // Catch token. + PUSH (L7); + NEXT; + +finish_catch_stub_addr_L7: + PUSH (L7); // DestAddr + PUSH (READ_PC); // PC + PUSH ((frame - base) * 4); // FramePtr + NEXT; + + do_throw: + if (L2 < 16 || L2 > ((sp-base)*4)) + fatalError ("Invalid catch token in throw"); + sp = base + L2 / 4; + goto do_pop_call_stub; + +do_call_stub_discard: + CHECK_FREE(4); + PUSH (0); // DestType + PUSH (0); // DestAddr + goto finish_call_stub; + + do_call_stub_addr: + CHECK_FREE(4); + PUSH (1); // DestType + PUSH (READ_PC); // DestAddr + goto finish_call_stub; + + do_call_stub_local: + CHECK_FREE(4); + PUSH (2); // DestType + PUSH (READ_PC); // DestAddr + goto finish_call_stub; + + do_call_stub_stack: + CHECK_FREE(4); + PUSH (3); // DestType + PUSH (0); // DestAddr + goto finish_call_stub; + +finish_call_stub: + PUSH (READ_PC); // PC + PUSH ((frame - base) * 4); // FramePtr + goto do_enter_function_L1; + +do_tailcall: + // Zap the current stack frame, down to its call stub. + sp = frame; + // Call the function! + goto do_enter_function_L1; + + do_return: + sp = frame; + // ... + // fall through + // ... + do_pop_call_stub:// L1 holds the return value. + if (sp - base < 4) + { + if (sp == base) + // We just exited the top-level function. + goto finished; + else + // Something nasty happened. + goto stack_underflow; + } + L2 = POP; // FramePtr + L7 = POP; // PC + L6 = POP; // DestAddr + switch (POP) // DestType + { + case 0: // Do not store. + frame = base + L2 / 4; + locals = frame + frame[1]/4; + values = frame + frame[0]/4; + break; + + case 1: // Store in main memory. + frame = base + L2 / 4; + locals = frame + frame[1]/4; + values = frame + frame[0]/4; + memWrite32 (L6, L1); + break; + + case 2: // Store in local variable. + frame = base + L2 / 4; + locals = frame + frame[1]/4; + values = frame + frame[0]/4; + LOCAL(L6/4) = L1; + break; + + case 3: // Push on stack. + frame = base + L2 / 4; + locals = frame + frame[1]/4; + values = frame + frame[0]/4; + PUSH (L1); + break; + + case 10: // Resume printing a compressed (E1) string. + frame = base + L2 / 4; + locals = frame + frame[1]/4; + values = frame + frame[0]/4; + goto resume_compressed_string_L7_bit_L6; + + case 11: // Resume executing function code after a string completes. + // Don't restore the frame pointer. + break; + + case 12: // Resume printing a signed decimal integer. + frame = base + L2 / 4; + locals = frame + frame[1]/4; + values = frame + frame[0]/4; + goto resume_number_L7_digit_L6; + + case 13: // Resume printing a C-style (E0) string. + frame = base + L2 / 4; + locals = frame + frame[1]/4; + values = frame + frame[0]/4; + goto resume_c_string_L7; + + case 14: // Resume printing a Unicode (E2) string. + frame = base + L2 / 4; + locals = frame + frame[1]/4; + values = frame + frame[0]/4; + goto resume_uni_string_L7; + + default: + fatalError("Bad call stub"); + } + // Restore the PC. + goto do_jump_abs_L7; + + do_stkcount: + S1 = sp - values; NEXT; + + do_stkpeek: + if (L1 < 0 || L1 > (sp - values)) + fatalError("Out of bounds in stkpeek"); + S1 = sp[-1 - L1]; NEXT; + + do_stkswap: + CHECK_USED(2); + L1 = POP; L2 = POP; PUSH(L1); PUSH(L2); NEXT; + + do_stkcopy: + CHECK_USED(L1); + for (L2 = L1 ; L2 > 0 ; --L2) + { + L3 = sp[-L1]; + PUSH (L3); + } + NEXT; + + resume_number_L7_digit_L6: + { + char buffer [16]; + + // If the IO mode is 'null', do nothing. + if (ioMode == IO_NULL) + goto do_pop_call_stub; + + // Write the number into the buffer. + L1 = (L7 < 0) ? -L7 : L7; // Absolute value of number. + L2 = 0; // Current buffer position. + do + { + buffer [L2++] = '0' + (L1 % 10); + L1 /= 10; + } + while (L1 > 0); + + if (L7 < 0) + buffer [L2++] = '-'; + + if (L6 >= L2) + goto do_pop_call_stub; // We printed the whole number already. + + // If we're in filter mode, push a call stub + // and filter the next character. + if (ioMode == IO_FILTER) + { + // Store the next character in the args array. + args[0] = buffer [L2 - L6 - 1]; + ++L6; + + // Push a call stub to print the next character. + CHECK_FREE(4); + PUSH(12); // DestType + PUSH(L6); // DestAddr (next digit) + PUSH(L7); // PC (number to print) + PUSH ((frame - base) * 4); // FramePtr + + // Call the filter function. + L1 = ioRock; + L2 = 1; + goto do_enter_function_L1; + } + else + { + // We're in Glk mode. Just print all the characters. + for ( ; L6 < L2 ; ++L6) + glk_put_char (buffer [L2 - L6 - 1]); + } + } + goto do_pop_call_stub; + + resume_c_string_L7: + // If the IO mode is 'null', or if we've reached the + // end of the string, do nothing. + L2 = memRead8(L7++); + if (L2 == 0 || ioMode == IO_NULL) + goto do_pop_call_stub; + // Otherwise we're going to have to print something, + // If the IO mode is 'filter', filter the next char. + if (ioMode == IO_FILTER) + { + // Store this character in the args array. + args [0] = L2; + // Push a call stub. + CHECK_FREE(4); + PUSH(13); // DestType (resume C string) + PUSH(L6); // DestAddr (ignored) + PUSH(L7); // PC (next char to print) + PUSH ((frame - base) * 4); // FramePtr + // Call the filter function. + L1 = ioRock; + L2 = 1; + goto do_enter_function_L1; + } + // We're in Glk mode. Just print all the characters. + while (L2 != 0) + { + glk_put_char ((unsigned char) L2); + L2 = memRead8(L7++); + } + goto do_pop_call_stub; + + resume_uni_string_L7: + // If the IO mode is 'null', or if we've reached the + // end of the string, do nothing. + L2 = memRead32(L7); + L7 += 4; + if (L2 == 0 || ioMode == IO_NULL) + goto do_pop_call_stub; + // Otherwise we're going to have to print something, + // If the IO mode is 'filter', filter the next char. + if (ioMode == IO_FILTER) + { + // Store this character in the args array. + args [0] = L2; + // Push a call stub. + CHECK_FREE(4); + PUSH(14); // DestType (resume Unicode string) + PUSH(L6); // DestAddr (ignored) + PUSH(L7); // PC (next char to print) + PUSH ((frame - base) * 4); // FramePtr + // Call the filter function. + L1 = ioRock; + L2 = 1; + goto do_enter_function_L1; + } + // We're in Glk mode. Just print all the characters. + while (L2 != 0) + { +#ifdef GLK_MODULE_UNICODE + glk_put_char_uni ((glui32) L2); +#else + unsigned char c = (L2 > 0 && L2 < 256) ? L2 : '?'; + glk_put_char (c); +#endif // GLK_MODULE_UNICODE + L2 = memRead32(L7); + L7 += 4; + } + goto do_pop_call_stub; + + resume_compressed_string_L7_bit_L6: + // Load the first string table node into L1. + // Its address is stored at stringTable + 8. + L1 = memRead32 (stringTable + 8); + // Load the node's type byte. + L2 = memRead8 (L1++); + // Is the root node a branch? + if (L2 == 0) + { + // We'll keep a reservoir of input bits in L5. + L5 = memRead8(L7); + // Keep following branch nodes until we hit a leaf node. + while (L2 == 0) + { + // Read the next bit. + L4 = (L5 >> L6) & 1; + // If we're finished reading this byte, + // move on to the next one. + if (++L6 > 7) + { + L6 -= 8; + L5 = memRead8(++L7); + } + // Follow the branch. + L1 = memRead32(L1 + 4 * L4); + L2 = memRead8 (L1++); + } + } + else if (L2 == 2 || L2 == 3) + { + // The root node prints a single character or a string. + // This will produce infinite output in the Null or Glk + // I/O modes, so we'll catch that here. + + if (ioMode != IO_FILTER) + fatalError ("String table prints infinite strings!"); + + // In Filter mode, the output will be sent to the current + // filter function, which can change the string table + // before returning, so we'll continue and see what happens. + } + // We're at a leaf node. + switch (L2) + { + case 1: // Terminator. + goto do_pop_call_stub; + + case 2: // Single char. + if (ioMode == IO_NULL) + { /* Do nothing */ } + else if (ioMode == IO_GLK) + glk_put_char ((unsigned char) memRead8(L1)); + else + { + // Store this character in the args array. + args [0] = memRead8(L1); + // Push a call stub. + CHECK_FREE(4); + PUSH(10); // DestType + PUSH(L6); // DestAddr (bit number in string) + PUSH(L7); // PC (byte address in string) + PUSH ((frame - base) * 4); // FramePtr + // Call the filter function. + L1 = ioRock; + L2 = 1; + goto do_enter_function_L1; + } + break; + + case 3: // C string. + // Push a 'resume compressed string' call stub. + CHECK_FREE(4); + PUSH (10); // DestType + PUSH (L6); // DestAddr (bit number in string) + PUSH (L7); // PC (byte address in string) + PUSH ((frame - base) * 4); // FramePtr + // Print the C string. + L7 = L1; + goto resume_c_string_L7; + + case 4: // Unicode char + if (ioMode == IO_NULL) + { /* Do nothing */ } + else if (ioMode == IO_GLK) + { +#ifdef GLK_MODULE_UNICODE + glk_put_char_uni (memRead32(L1)); +#else + git_uint32 c = memRead32(L1); + if (c > 255) c = '?'; + glk_put_char ((unsigned char) c); +#endif // GLK_MODULE_UNICODE + } + else + { + // Store this character in the args array. + args [0] = memRead32(L1); + // Push a call stub. + CHECK_FREE(4); + PUSH(10); // DestType + PUSH(L6); // DestAddr (bit number in string) + PUSH(L7); // PC (byte address in string) + PUSH ((frame - base) * 4); // FramePtr + // Call the filter function. + L1 = ioRock; + L2 = 1; + goto do_enter_function_L1; + } + break; + + case 5: // Unicode string. + // Push a 'resume compressed string' call stub. + CHECK_FREE(4); + PUSH (10); // DestType + PUSH (L6); // DestAddr (bit number in string) + PUSH (L7); // PC (byte address in string) + PUSH ((frame - base) * 4); // FramePtr + // Print the Unicode string. + L7 = L1; + goto resume_uni_string_L7; + + case 8: // Indirect reference. + L3 = memRead32(L1); + L2 = 0; goto indirect_L3_args_L2; + + case 9: // Double-indirect reference. + L3 = memRead32(L1); L3 = memRead32(L3); + L2 = 0; goto indirect_L3_args_L2; + + case 10: // Indirect reference with args. + L3 = memRead32(L1); + L2 = memRead32(L1 + 4); goto indirect_L3_args_L2; + + case 11: // Double-indirect reference with args. + L3 = memRead32(L1); L3 = memRead32(L3); + L2 = memRead32(L1 + 4); goto indirect_L3_args_L2; + + indirect_L3_args_L2: + // Push a 'resume compressed string' call stub. + CHECK_FREE(4); + PUSH (10); // DestType + PUSH (L6); // DestAddr (bit number in string) + PUSH (L7); // PC (byte address in string) + PUSH ((frame - base) * 4); // FramePtr + // Check the type of the embedded object. + switch (memRead8(L3)) + { + case 0xE0: // C string. + L7 = L3 + 1; + goto resume_c_string_L7; + + case 0xE1: // Compressed string. + L7 = L3 + 1; + L6 = 0; + goto resume_compressed_string_L7_bit_L6; + + case 0xE2: // Unicode string. + L7 = L3 + 4; // Skip extra three padding bytes. + goto resume_uni_string_L7; + + case 0xC0: case 0xC1: // Function. + // Retrieve arguments. + for (L1 += 8, L4 = 0; L4 < L2 ; ++L4, L1+=4) + args[L4] = memRead32(L1); + // Enter function. + L1 = L3; + goto do_enter_function_L1; + + default: fatalError ("Embedded object in string has unknown type"); + } + break; + + default: fatalError ("Unknown string table node type"); + } + // Start back at the root node again. + goto resume_compressed_string_L7_bit_L6; + + do_streamstr: + // Push a 'resume function' call stub. + CHECK_FREE(4); + PUSH (11); // DestType + PUSH (0); // Addr + PUSH (READ_PC); // PC + PUSH ((frame - base) * 4); // FramePtr + + // Load the string's type byte. + L2 = memRead8(L1++); + if (L2 == 0xE0) + { + // Uncompressed string. + L7 = L1; + goto resume_c_string_L7; + } + else if (L2 == 0xE1) + { + // Compressed string. + L7 = L1; + L6 = 0; + goto resume_compressed_string_L7_bit_L6; + } + else if (L2 == 0xE2) + { + // Uncompressed Unicode string. + L7 = L1 + 3; // Skip three padding bytes. + goto resume_uni_string_L7; + } + else + { + fatalError ("Value used in streamstr was not a string"); + goto finished; + } + + do_streamchar: + L7 = READ_PC; + if (ioMode == IO_NULL) + { /* Do nothing */ } + else if (ioMode == IO_GLK) + { + unsigned char c = (L1 & 0xff); + glk_put_char (c); + } + else + { + // Store this character in the args array. + args [0] = (L1 & 0xff); + // Push a 'resume function' call stub. + CHECK_FREE(4); + PUSH (0); // DestType + PUSH (0); // Addr + PUSH (L7); // PC + PUSH ((frame - base) * 4); // FramePtr + // Call the filter function. + L1 = ioRock; + L2 = 1; + goto do_enter_function_L1; + } + NEXT; + + do_streamunichar: + L7 = READ_PC; + if (ioMode == IO_NULL) + { /* Do nothing */ } + else if (ioMode == IO_GLK) + { +#ifdef GLK_MODULE_UNICODE + glk_put_char_uni ((glui32) L1); +#else + unsigned char c = (L1 > 0 && L1 < 256) ? L1 : '?'; + glk_put_char (c); +#endif // GLK_MODULE_UNICODE + } + else + { + // Store this character in the args array. + args [0] = L1; + // Push a 'resume function' call stub. + CHECK_FREE(4); + PUSH (0); // DestType + PUSH (0); // Addr + PUSH (L7); // PC + PUSH ((frame - base) * 4); // FramePtr + // Call the filter function. + L1 = ioRock; + L2 = 1; + goto do_enter_function_L1; + } + NEXT; + + do_streamnum: + // Push a 'resume function' call stub. + CHECK_FREE(4); + PUSH (11); // DestType + PUSH (0); // Addr + PUSH (READ_PC); // PC + PUSH ((frame - base) * 4); // FramePtr + + // Print the number. + L7 = L1; + L6 = 0; + goto resume_number_L7_digit_L6; + + // Stub opcodes: + + do_getmemsize: + S1 = gEndMem; + NEXT; + + do_getiosys: + S1 = ioMode; + S2 = ioRock; + NEXT; + + do_setiosys: + switch (L1) + { + case IO_NULL: + case IO_FILTER: + case IO_GLK: + ioMode = (enum IOMode) L1; + ioRock = L2; + break; + + default: + fatalError ("Illegal I/O mode"); + break; + } + NEXT; + + do_quit: + goto finished; + + do_restart: + // Reset game memory to its initial state. + resetMemory(protectPos, protectSize); + resetUndo(); + + // Reset all the stack pointers. + frame = locals = values = sp = base; + + // Call the first function. + L1 = startPos; // Initial PC. + L2 = 0; // No arguments. + goto do_enter_function_L1; + + do_verify: + S1 = verifyMemory(); + NEXT; + + do_random: + if (L1 > 0) + S1 = rand() % L1; + else if (L1 < 0) + S1 = -(rand() % -L1); + else + { + // The parameter is zero, so we should generate a + // random number in "the full 32-bit range". The rand() + // function might not cover the entire range, so we'll + // generate the high 16 bits and low 16 bits separately. + S1 = (rand() & 0xffff) | (rand() << 16); + } + NEXT; + + do_setrandom: + srand (L1 ? L1 : time(NULL)); + NEXT; + + do_glk: + // The first argument is topmost in the stack; count is in L2. + CHECK_USED(L2); + // We want to store the arguments in 'args' in the same order. + for (L3 = 0 ; L3 < L2 ; ++L3) + args [L3] = POP; + gStackPointer = sp; + S1 = git_perform_glk (L1, L2, (glui32*) args); + sp = gStackPointer; + NEXT; + + do_binarysearch: + S1 = git_binary_search (L1, L2, L3, L4, L5, L6, L7); + NEXT; + + do_linearsearch: + S1 = git_linear_search (L1, L2, L3, L4, L5, L6, L7); + NEXT; + + do_linkedsearch: + S1 = git_linked_search (L1, L2, L3, L4, L5, L6); + NEXT; + + do_gestalt: + S1 = gestalt (L1, L2); + NEXT; + + do_getstringtbl: S1 = stringTable; NEXT; + do_setstringtbl: stringTable = L1; NEXT; + + do_debugtrap: + // TODO: do something useful here. + NEXT; + + do_stkroll: + // We need to rotate the top L1 elements by L2 places. + if (L1 < 0) + fatalError ("Negative number of elements to rotate in stkroll"); + if (L1 > (sp - values)) + fatalError ("Tried to rotate too many elements in stkroll"); + // Now, let's normalise L2 into the range [0..L1). + if (L2 >= 0) + L2 = L2 % L1; + else + L2 = L1 - (-L2 % L1); + // Avoid trivial cases. + if (L1 == 0 || L2 == 0 || L2 == L1) + NEXT; + L2 = L1 - L2; + // The problem is reduced to swapping elements [0..L2) with + // elements [L2..L1). Let's call these two sequences A and B, + // so we need to transform AB into BA. We do this sneakily + // with reversals, as follows: AB -> A'B -> A'B' -> (A'B')', + // where X' is the reverse of the sequence X. +#define SWAP(x,y) \ + do { L4 = sp[(x)-L1];sp[(x)-L1]=sp[(y)-L1];sp[(y)-L1]=L4; } while (0) + + // Reverse [0..L2). + for (L3 = 0 ; L3 < L2/2 ; ++L3) + SWAP (L3, L2-1-L3); + // Reverse [L2..L1). + for (L3 = L2 ; L3 < (L2 + (L1-L2)/2) ; ++L3) + SWAP (L3, L1-1-(L3-L2)); + // Reverse [0..L1). + for (L3 = 0 ; L3 < L1/2 ; ++L3) + SWAP (L3, L1-1-L3); + +#undef SWAP + // And we're done! + NEXT; + + do_setmemsize: + S1 = resizeMemory (L1, 0); + NEXT; + + do_protect: + protectPos = L1; + protectSize = L2; + NEXT; + + // Memory management (new with glulx spec 3.1) + + do_mzero: + if (L1 > 0) { + if (L2 < gRamStart || (L2 + L1) > gEndMem) + memWriteError(L2); + memset(gRam + L2, 0, L1); + } + NEXT; + + do_mcopy: + if (L1 > 0) { + if (L2 < 0 || (L2 + L1) > gEndMem) + memReadError(L2); + if (L3 < gRamStart || (L3 + L1) > gEndMem) + memWriteError(L3); + // ROM and ROM are stored separately, so this is a bit fiddly... + if (L2 > gRamStart) { + // Only need to copy from RAM. Might be overlapping, so use memmove. + memmove(gRam + L3, gRam + L2, L1); + } else if ((L2 + L1) <= gRamStart) { + // Only need to copy from ROM. Can't overlap, so memcpy is safe. + memcpy(gRam + L3, gRom + L2, L1); + } else { + // Need to copy from both ROM and RAM. + L4 = (L2 + L1) - gRamStart; // Amount of ROM to copy. + memcpy(gRam + L3, gRom + L2, L4); + memmove(gRam + L3 + L4, gRam + L2 + L4, L1 - L4); + } + } + NEXT; + + do_malloc: + S1 = heap_alloc(L1); + NEXT; + + do_mfree: + heap_free(L1); + NEXT; + + // Function acceleration (new with glulx spec 3.1.1) + + do_accelfunc: + accel_set_func(L1, L2); + NEXT; + + do_accelparam: + accel_set_param(L1, L2); + NEXT; + + // Special Git opcodes + + do_git_setcacheram: + gCacheRAM = (L1 == 0) ? 0 : 1; + NEXT; + + do_git_prunecache: + pruneCodeCache (L1, L2); + NEXT; + + // Error conditions: + + do_error_bad_opcode: + fatalError ("Illegal instruction"); + goto finished; + + stack_overflow: + fatalError ("Stack overflow"); + goto finished; + + stack_underflow: + fatalError ("Stack underflow"); + goto finished; + +// --------------------------------- + +finished: + + free (base); + shutdownCompiler(); +} diff --git a/interpreters/git/test/Alabaster.gblorb b/interpreters/git/test/Alabaster.gblorb new file mode 100644 index 0000000000000000000000000000000000000000..923b704bdb1c98f5c39a3ed58139a2a24a29c88c GIT binary patch literal 1627650 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 JLi960xnQ8-1SoDYBQRXeBtQcb6$Kv0zBk*sB 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%0AW}=k`}c(E zy9n!sTM8ldi6Fs1>Jvf2Ck2tZ?V-X*Ex0Dv$7>F|aZn*L*E+~tE67}1kj(o`mgObT zTSO9Apy?E7^oe*OGCvh$8jGw?1(~0M%>0Y2doMPS(x0w#2}*CAWOVXeWZipst`Fna zWy$ey|6Cs?7MDfVjbaw`RN&79zlQdFCiwlVpjei!$&uhCmZiBh7I%tHv1otkqL1TA z<~l*9F;%S-WUd35d6x>>y-k>^mfmb*#iiDH!}?qwFaN%Dc_CKT3s#Io*LuOqda#l| z(RITM1_|DYuBEvpy5~cl+HKz&BY7se?iJytnDktNn!o%pHx2{ECDHYlcM5^>xd6qG z@8<%P&kM;n`a~{_wXa-rQ#xtS{@ZKn87c6M6a*MMBlZMcN33q+3ANQt_Ht#@8w8j0mLTqJx~ zgVBk@>k_tJ`$n!0^8}^N*yKK;1p;2<`QRM?3&itWp74Gl;58id7Xscd0B?Q=ediGd zncfciE|ItZoh-6-QI)&I8WVlI9Q0yS^y}rIul-yn$dlhM1;2(meJS|;vYDpzc+j*+fhejt)b-MHGTpurWdboS84};f5o$eChjVHWc z33v@}{FQ+BE5MuI8{f5qL4v0@j$Sv})XAgl5WU2-V)iOKJbb7zkZ0N9_DHUemp8sk z1Q(v5d@VpRyz$opl&=9w{@M2019K#JEevlnt%R9;T}; ziLguZUGuQ1lUEXXkyx<{$K&FR7m7`e!tuB`<6FgY z8GV=%IFrcHyRR#R+&2O_LkYeS$bC~#2_7;nm%Wr=i7A}&Qi5wtewMM~q680pR*02v z1uI67`>kN*Tdp_7i4}9GV>=Wt`+fP zq0+geoW!{#JD2QmsR|l8%vVE+*c>$;yGZ4rT&QH<*4Q1i%8GbNZ6uzO2e4RDKTf3N zo#;5EALFK-=~$t@^rZw}67;1MUy^`GlDZ9$-+};Q<=x(wS3VG}9w2`QvWLs&#-v(J zjdV`IuCwesjpMPeR+*L_7T=*h=i~h@%jFWBodMwKRos8ZPKENtzn4I{GW7knlA>Y{ zoGPpJ`girR5`O&&TJ=Tp?y=4|!MQy_8@52kwP$H^Rp(7RuyMwFjFXakpif!-0tpw4 z*VrhgVatZGhO;yvt;t#{)Hs-F74foIo=6PQgSXO@wbgibBe7i)&(#7T4d=7#BpG|# z8#&`Hop;}a&OObS_tbD^JM)==bjCcOxiLM>KEVET|E3R6#&$~X?PxhvZ>ey!BsS4#O;oW9Q<{^?1%N5y{S%V<~xUd6#zbL|LB5E~f4jS~8opbdTyLE`JPf+ooqk*0k6{ zRa48aibxu}OKEnYmO-zyoQ5Nq!pZH#$Xz-;l3`ySogUHHm*qVd${7upWH3xSNs}j5 zRcIw(wPE~%h$P*1oTNci%M}~nf8V`v`x0kJ`HUK2h*}y5Rdfe|(?6b@6?<;QLy^ z_bvYTzJ2TB`*Fed(}M38{qgPJ**OV3q}KN6k=PbakEJOWM-=vmc-QQ@I2Lx}7c@xH zjYAW1Y)(5I_gsv1Kpe}D4nvVm2_>p35_f0kA^Fh`pL8dc)(qKoDt_Ler4|ZX{%Kk$ zj5<>Ypg{;=jz0lhVikb&QY#2xwp3Dg5}uB41Y(`d%fWuM)Qq+gV2w3qz^)U3-6jCL z*B@Yi`I!K_&=s&HKO11r2*6$vfW7Vyu(zy$1t#v93$U8_=RyGA3IY7&PXJp20W>ig zV-djUa$NwUD|7*j?&?bbqpNKKC~F}fYj&lFWZ)TgF`pSsi8zb9-JAN@+^zWvHb%iK zT5d-B*5sf^_Y-Ij5@_$|5A6f2X#c`fexpYVz9$L3kN3y-Nn01+vjyK53%(cl^t2)FYhr(N;xYu&oLjoxBrxMhXO499G*i)9Rw*IX>U{E1~}t5|;F6V#Z&f^Q_R zIp4$m@qOsl#rLs-ZzQid->3WI`>d^t@413+B(FK&*ZSl8dK=&WZ9(@Vc1j#bA+053 z-Q8tkHV3&bS1fb7oEGyTjU{Fua=*Y93386@)Bdo1)`smbdnzCEw%{8Ha?bZUe|&G) zy7+F?`92y6a>n=3?S1imbcd~q@1wg3zL6m3eE0Rociq;-_kn_MB*;16NBQG>%+|&C zbip_B(wy%Ge|%rCb@6?r;2Y^>&i8Hp_`Y-N;`<4~H?qW>@0a}X{g17S?~erENX~M; zzxBuWzpZ?i9@+}AQBR7E@}&Dlo|C^lO>4P4*Y8kZ{G^uu`XdTlKXzLF>wCMzZRSYt zfc^!pug~AU{mT69$xZp&J8vk^Uf}vJ1?cOR$v=LN0`&JRfX|N8@{hkuf&14K7{4}| zfBf14^w)04fBmin#^1F7f4eTrKmPFr?%!ug{_Fb`7=Mof^!MMCfBXTN{O#ES_us1k ze?uTied2uY?~m{Lt&8uY1>dMXalTLV$M=k_i|-2s->5!uzAyL3_f=aL z-**YVQ5oWVKkkq3C$}!XR|&pR8RC4e@yGYaTNmH|5qzUE#P}ZH#uwk?%WQnV)d~x- zU1>#S+1{}~EqN_5U$0TE8S`~Bt%k;T*0CFp>JrCpCx6)0Sh15kwitH5l1B~Jn_=Hu zz>eY;hkb-U*ne+@J@iux!QRdEtOqtG_5TxX6rvQu@#buBKU%IFMI<5X$eEaUy-C|39-@_S;Emf`b8nT~0q~8Gsjd0sM zb;LA}`wcqJt@|*-!j0oWcNN$DO}Fm7y@<(%-MZI#cJJ)gz3&DO+Ox;Gbsy52UTt&8 zY+h4@d7*~N&Ff5m=5>zMyuu4x$-EvTz{tGt!r|O2OZr_xr`Wa>r+xL)fIhW5-*~YT zSphXU-*~Zez24+}<3-p0Xu?0|8!x)jMfm45I7HW_tE;xdb+9_4XG zNnrf^4L07s;x}&mni>r$P2V z$IBr5PeY5_OcR(_U|xA&r(>O49~9<={VLqNp7Cd1&)dvvS?kQL13Kuzh$YTrk*j6; z8A%gTU?21tLJ)iMH_A2f3CGQY&C}1j!alICiQC8L{_NvRt9^u9%RZ)x*mIIK_Jlc% zAQGIR=Rk_o@Xs0bjp&cl7PIQ5;f$ME4H&4~CpweUSpIDxI#FxCdbiiERf`kqqB=}8vmRwj?w7m&;maY_<{U> z;0RNkFrkO=1K5zn{Xjo|eqax)A1L`<>-d3zorHNkWu35T<+>z)pwP+jLevrc>9SMZ zFPo|_Z=IQ_zUOeWbQ599Wd4$;-77A;?E_7}UclfggwiJ=@u2BB# z1mSI4$r>IkejeIepKY8|M-$8z``GP0C-5!y8W79N4kq3tkiyfV9I5;LA@z_AsbBWX4ko@J_{P(sobR{& z@%^5S@78z|Z9T0jEgG`@CZ~p&>p-2BHRXzy(<$?tXeWLpu*DOp9NR`;*iH)Bux$qB#q1>5R+C$=qzl==1hleW>3nuO<18B&wF`9msgMM_S#f}dhK<&hB?KMI)PpEK<; zewq_av!?dWpxuK1`1hPwv>5(d)|lprNqY+X@gOS4|3H8E53}Mgt#1YVnHTWFpHRj> z7yL;wwjiO!&}{5zMsu7%6VDxTG^hJR^AsDJtzq{pII`&7(G~i;%G51=6GnQ=W0i1(-3%RK-&V{Y}2KROC zPF~7I-X+1N$~sv}u+4c?3JEq)uvoW~feUs^b6n2$hs(J(Tv}xkqbbW`iX&Tfy0=VX^954aNz0MC!5>mL z+mPDSLK;NFI)kX14ZsZloS{<9CY&ztFmUJo=wn-0w_G?Sn>F!afiLz;a(tijhwln2 zzVf#%gs(Y))VZFP(>J+8zQ-jTa%bE+bqQ~A3S%_QGOd*P+B&FgF}2!KW>%~Bg<4_f z8&|6@{HfK~R<-(t{~W=wVV&<|v0aJreQZZxd>^~**2Q;E!8i7?aK3l<$9I1l-%q!o z8z~vQ$SsZO_N-5fnMLCsCbKy9U;z_0rf`^!_6O5=D@^hsEeg|fZZJ)B36FSk_&vAo zy;nNtFy4KmTlc=pJi70-ja&E5F5O#9W?Swy%j{GkGwed)GP}^9%r3IZEc{Lj%1p$t zyV4|RiyX`|XuX#Z2L$g!nP>(ocpu6-Rc43;?@fyp_1?5iRc7yTjqo1WnZ>=wUH-hs zJy!2g@_Z|JkGl8rdyhH~pDw)5AT9s(gS@;?P%sP%hOw;hI6|F*f+2DXDxUexK~s_q z-tP_{W64Hs#qW3jv9EcqST5!Y>}KV2#VUVu#cS5NBJ^r2%oXhIBNjQZ7p%C%o+Sf= zS1eSMfA@YFQShq>5lz-oO?@+MFSFHrDy#Ttxy%EW-|tn8dbcDB^^=#kmEv6_ym zq+A?PsuCEqtLuL6o?^duhoKdbL?}^Jk+?fMFOibl;nRBimdneQo6Yz4~%-Aw5yeMGDc3BSlyZ&JRzy|x2 z7K1(aKF<9Y*{22eCU=WVAGrj5EYreaD{;oLF#eSY^D?tf-YA5LUAjz|Q)FMloTAu- z8Q4&s&}zzdI_y)h<(I?W!yoKB+F;+O6>P}m=`0Fqey#TLh{-;t3=o3C#z-!xgZv5V z5SyS{>LoVj5-1atWpfmZcs(9j9hiX-@z1%*s{e*xv3SidahWnfh!^`ixp+_ZC*IR+ z;tlLjLSCq0!tBnfB;8yelZ$>iF@uwz#yhy4?Ouzwc7UIgqv>99}5rceg^)Tl4mr?v}VZ#wK# zy9(H`CzZoq>ksxm0qjM#5NE_@y?9-yL&(!0Eps=x(3u>l6LCvxW zDu{jZ#6D9O2-vYBki&kHKiF>#U@yWgJt|>mo)u{(pq{*^!2 zzX@P(I_$@l=&&D$%^?i-Q|f=+{={pJ#M&A4{U+p>M_ordQ7yb zM-Xx4iMWnCUBHf=0vz@~`h)%d0@#a~gRT{@qoB@VzuO<|_XV&Q0sGSeb`;b(?5q93 z{zd?M5wNclu%q?165NC2k=ne%E5JIc^V`4_)Tg{a3PYXO1aCopzLvD=OGruE+V4 z>j^fw1`%qW2z6S6fF1Q{4*Pt6uwNFyUW6CBO~8(NG>83Rf3QCmz+MFGFA3ODkLIwy z?+^BW2Cx?a`?msi)T0^f$A^8vetc;Fd(&Y*zCwrnc+{gg>^=R#p0UAxdMkuV$4|3| zN);>JVxQbj=-oEhujrq2yW&?8E&ah1Ege5dh!!<(F4}|riS~Ck(FV~{o@nX#Ndk6M zusQ6f`h)!p8|>MZvZ&lcSr>2fn|Ubf3A1TjEM$aoH__;6eN+H@5wM>qU`H95!+xGW*v}7OF9P<<1?(sz zbJ%b32m9?d*n=RyIZscSgZvX77cxT4nak)!e=>U6CZiz8&lBXIutva+nlp!eqd(Zc z3t(@$M>?^M4*Q9yIWyQ#+|C#5Cw2;8F9PN zgZ-EQ_99?EQ^1arFo%7PKiDq`U@rpp>jdm533J%*^#}W30@#ay{TTr}O2QoW*Zsl% zRseeuuzxOKM@g8&{*yo0x7c7myrl{#V{-+@Bm1MAXnC>H9<+PQ@)*M2nO||q@m5n^ z<)m_5bSI&#%tUumS6`w#soEyGV9Awd$#qgc0Xs^*9QOVE!G1shd($1&NuveqDEV^O zkM{@rNdfFdz&=~Rjw&vPeStsNuLxi-0`@xu?5N^$*dO%=`?3J`B4B?-z>X>|hy6o; zu>UK7y$IO97qFv>%V3{g;tTfaY5;rFVV}Oe4*PUeaXIY0{K3An4fYwW5c@ar6_LNm z?N%3?mIc!X3#p<=%%wWqpHvUENi|p&KUTnwA~A>kbbqj)6~JDE51T7sN0FGr zeyu;)uMc1^0`~g_?5O*4*q`3Sch+_QM41 zs8Ms+C;5YYasYb~u%9hpM~#}pez8B;{}jMp1nf5m*iobAurKuo`vU>&MZo@?fE_hz z4*Q$_V1Floy$IO95U`_0&0*i{3-(i_0QRQCeo99j_ES)!X0V@9;Dg zf&16zzoIwMVY!0sQ?}pZx42hf^G4HNg;S0e`iAN`*S8b>>Dvsez6HNckngt%PPtIP zj_Nsw{c?Y>UlqV!gm=A5z>exUhy8JXus<2VUIgr`1nj7ubJ*ATgZ*PG?4d3#G^x?B z&R@yczCR`r{BurNnNjxX#qHNRnm=kq68EuBTBgKuk|?xHbD3!_SNtZYxev|L+<$}y zVs8M`z*F1!(!f*8tQr_hbNQyZQ#EY`)P3- z?5!~y9I(>9kT`UM%R*x8uVjacc{Vt$hY%Es_gql@{0V9go1lW(AkS=Y+Cc(#6z@6g zqy51?Hh{edw{)_A9mRVN`)q%({~>_A2-p`2*ipRau;1Yi_9X%AMZo@)fE~qq4*M(q zV1LyHduzO0hZWB(FW32vEz-;{*E#JIAv$aT;G+B9pXmN;6J7A6RZBf-b$V2n(dpPN zz+`m#_P%6vdY3>(t@NbT>9s;e*jm74G}xbvh6FNdEg2myWQ1}&m(j8QWHi+#qhJY= zX9;rpOaVK}@f`NK{$QUMz~1zr?DU%i>?p@`*zflT`$GZjMZo@ofF0#{4*T2wV1LgF zd+3lBs=_yzD%+Dsm8L?{B=afu<93$aW|?KkQ4Kct*=rHbSVHJSHG5_&lW}IYh$H6) z0M-+oduP`v@ujShojoID)mb@M1hmv5;EZi_8J&S@Ka4*Quq2-s1H z=dkbM5B6Pcum?eYO9lC7?jvM`vOSm4Vg6(^(k7!I$j=kxpLv{s9c6nC``P|rKi39( zU>YrE8uNvWP~+z^y1}1}ZVqJBN(GiP9~Lsgh5#<3=lscNg-u3*`^x9O-WRZ=n9pJV z!XNBk+h7meS4+9Cv%^+(zGQUPwl*2H#y-{ED8Fxc;4OK{uQwOI#k^1T zte!$psOWP+?e0%d{cVB@d{`bIcGkfHb`__{9eS83W(-(zjoho2Qk)FeTp+DF! z3Sch+_G<*}DAIG-@A3!xJpt@Rz`k6-jv_sWeU(4hUkhL_0`^Y@?5Hzy*#F}X_8$Y- zn-2TgZFShsM(LQres*VHu%Dd@U@rpp-U4=%jyddm`-6R7E9}8*IA}MJWmOWqhNB{q zmeZ-wX7g(}&OSnDAgbtG1E=`Yz-d+ulv`u1c{HsoEmEDd>^HL3Jo`K$DAe7#p#JPn zP?y>S6|6P$tToTRMZk`_JBR&2f3QCiz+S|}_@aOvb$1T?yZ&JRzy^D3xTW1U+1*lt zrXR<4(O==C+GlSRf=rYS&NwV4_rlTiG_+gB*gsk97)`zFuf$GkOxw2486Xq}+XlG89OO@7 z4zVdrV5j-)bb^2#+Xgu7C;Nl_v;g*|hY#n>5wK$?0Ec~{KiC%quonUQy#jU=_c`oO z`Gfs$0qjM<{=vyH{PJ7VU3LQtsJb3q;MPf$nN1Qmpwc|y*a#|zj|ujjDO z^auN_0QMr>(gFcH>h&Db0sDsncGT-R>|gnV z{hI*xro(=2i4Oa@sMj;t&)vos?B^x|*o%O@mw+AhdJg-Z{$L*%z+MFG!v*XpQghhH z`Gb9;4fbHKdUJyOCro+eb59pCLVcRc=#Tzn^nX?vh43C1NoImmv-4uvd0O?(vRoev z*LJIr({eBU)i0LSN+dg9j-}+a+N{o4I2Y3&iCCg3LPB$I*J;bKQ=4hwLeTC>y{pO!v+u@V2P$|^Pu2ba}d_349x}${XP(kOSJIt zM0Z&rx}RBew+YdqlFvo=us_i~W)od&)Yg7uui`h?*3NrL2nw}-E~xkY3F@CVL0!`d z%WnTcNpAn2|1o|Y3*Rl{O$*=iz7^uf9t0--Sz%w|pH*rTe-M+la$qy7LKodE>|@}f z>*-H)nLu`!#R3q(Vgl~bY}#j`|u@D`0 zSa8u@(?rpgN|HI6iJMCSzZ-=lNW8K_X>bq zf3leaRIF^~08^GUbAUv1#mF9V>TY&1>>#-w^;*dK47I8Qp>K>tiR8} zn4w<~Io8p%7wI4V9pq>kGL5&O{AnBRc)bPXPkYPCfaU;a(x(>E4YN%*+fn&)3hoxw zZxc5TC!772w3rDTOn%W7%eqTi>?R}Yy>2pck&m001vWtQF@QVXM{V$;va25|-ET5# znb%E5Zt}s28H%H(VF1evb-<`*4mpOXEp~!&XS@pu3jdt0e#9lb#i{2b7Wufn8IqxX z=r<40nP@8(0P_GXh+rq8g*^ZHjyZ7*3EF*9IFy?3&pG)r($M0RNLrVbQzD5?xS&`( z+!ca_bQsNf6a80t$9G&HN#_jrSR;BTvI}Fy-oGI?(#W_m(l8pyowTFR z!JS-5+m6s|&i(f`?(c^acXAEIxYnr{%RuihL1%U`3t>iUfdFQm+AQ?ksc6h>EFROB zeBGt8BSDXU&fD(TT&KbWZlQaR4DM94UYdUWkGYBF48Uk=&H%@+Y$glG6X07R1-f@C zl}azU!7z+uWksyikFPVybWjrzMGEbo@=3K}DKWJFaz&P;ZoA_H2hkZ}schEbT3N1@ zmMbAi>KT!hXn93Mk(HF(ud+e{+BMk)Qirj_rIg&ZVf=#mQbe64RY_>;)G%&=Dk-}> zDpe+;)o;tv14zE1+q8l-We{^>?kEgxq` z8t3MX77llCA7)LVVQfI9@(iO&Qul}~m1P%7N_KvulzkhL=^T=Nl>XSWtvp%FE|?`j zOer~%U2tAwV`G8~0+KNVp`;X~KM&*F_T5>jOzcaSRsoK=1cx%Q`&DwH9EaEPLrh3Y zG9{;S9n!8HuCI+GyLFbOp9Xo|w90hTcy74ZoQS5Sg943b`Y?956KGwn*l?UW=mU+@NQlptBHD?H)ZvJYm4KYt zhTfCx3r4nFQDBPmuooV(b=VYBl};d1lQmo|Ny>qbN;qVcy$eKCE#w@;RsFq2dB>MRKTWU9IRCbP3 zgC^zT2o$^o7^LLq$PO`3 z7$&Bs)XECACzEGMuLQd?0kOno()x&0lKEIwgles1ip#~+0ROcJE5?O(sWba>)J21$NKQ(xtl}WZJ&; zEf<--Op>rzi0e=mEvx^FVIpSbwzD*lJNkYN<9b74JDvb4Y1)W2jPJeBI3_w1;Ema_ z#O;_*9`ESdM(jEamE5+L3N>D1crpLCoVw~~zvV6EK5hv`%<0_NrB`wr6vgy+;<=n{&2!?i6A83=kin`Vgtx%;BMkSoF)a@dfyph#nWqD{tL@Jf4 zDx}p8mtu2hY|=HHyVPy2`~W$3vX}7-+LCjZ9uc-p&RxvGI*2#f%p2BGm>rU+FC6H? zn{9U-O?Moe1F&KIY>q~UBbQbty5$oRQ=coLiZr9U>Z@r+FJXR&o)lyt%|{4k%p{6@5Jd@w^HJCgM>Yv*K{Q&7 zPw4PGFIQG*b-z*8}D@xZ>WF&?cWSv;^c zjtnh;p$Vrn3U;_R2Lf@Wq0Xw@j|G+#=cQXG6E#`kxKQ zCmRSd-}+zgX{`UDaumQIn4zg`0KO}FFtg(~3WAxg!oIC(gx-|dp*aSDjZ&&qRVc3O z-#z&Hx3}pQ6faqCVZ=-NEr<_eSQamB6+{-CX?M_PZpy>3P!XY>F|)o=RiQR{&aO0% zv}38n*E~y&!B(3FgKKC`ybrES!s}-eUath{$M!b;Ae~0^lafP*2wy_ljW0jvA$sb< zL**W)E0pmNbBe;|l#j>>*>flbbcmBtSch7S5$}Px#WWca3R-?7@uj~)rr5<3 z*p&RHKoskc|LW@y5{+1g?D!3>LkvRn%t3D2FjgZF4bKcTj9bkJ`7fV&Rx?8W%NBzM zA&y}fA$;}`*MDce{yTPkjbKE-zB8Z6_FRLROixPgu}P}Z(`e7=voARNPUmcY2WLAK zF{Huk<8JeMcODY#Kq0}RRUqDoh9r3(T4?Z?V1urhp5180d_GV2cSgclMO=l+`90Uk zxtM#}C-x$*2fJoBNuDWG|QyF2ra8)dM^u^iv6LyWa96N6X4OkqTJ`k; z8;^&Xs9rk4%u(frN7s8AVW#F;S^U@}_q0)2Onb1_Q<3iD^T*(0mCCeq9aTv1@&LA? zL)2lcnzWRLl*?|s?{1fBm5Cm}IDwr!@GBbkD;8BJ7ljH6Qj*Br#NDcvX;alQjjCnF zUbS>~2sQ3q8_7@!^(SeOH%sT5SvtP8ShDJC5=GY#a^I&ir4LD)q-D_9>g>GK|C~-p z0? zjiiXIEz*r-Ynoos4M}rhY_vD(LT_qMFi|_EwWwv#h8iyxe(m5ii!ZM63dFszY zgyACWq0aAlXm)UJ_2N+>GY6PNxE^5cH6j;avdRM(MkMq%nk6Z#i;S-K4uIZb4z>pv zRJ($w1~w>%A5=qiR<_*v8_W0dIx9FK*}5fOQXJI15;@v-yADTW^$EH z*n}~j-)px^F+=`N+_%MM%TVJ2FE&02Q^@GD|Rnhws7c*?Q)f2M3yMcO#v;n>Vt+Fc~kQq3U3Vzf;9V1 zpkGsv7RVj@(`09y@8(v18*&e}{aNOcU(dF`7B}_2T8l*%a?{u0?5?iSMA7STK2+_PSr9%MJAEKYendr6pw)UIXmL44#ozRGb)K~kEG z?Y?kk*(gpgxKW1h_~!99qBDf!^;2EL86zetxRTgi1YAf}(@H{*0NLsx7dTJ!^!iB@57_$25VzMFEGJ1? z!nudQG>GS3K&E+oixz*@pc8x6z;!d;O4lui^6gL-V@u|>wN~@kj|vZ-8#u?>$`pOv zds|>|RmLv5?TlZ5huyHPjJBW(oqU6-w6UDE?1gBF?KvXzUqt@9X=!S^gKG(5?PHpY zFs{-t6^%#?$OX7&ReMm9fu-FkpKnULlWX8b)RfGtrv-MC9htXkoRR^cS z;ie{sNDmS0$$4?vHN=V@#0yK9sP+rn3*vr%#4WJ{@zV+@xd8xt1Wx@940-aW&g&_?@x6 z5!04FP%$2{>ai`jCh<44sY=u8h zwYjHFW4EoQC(AnAzESKn;QNkOl6o`;H_NjWlQ+6pM3$`EZ694V7)GT*G_&vr#*fKp zPDkUpjR#m3%iRH+{ZAp?Ff87sn3XG3+IIT!Y^1Q+!v0IJAfAYEIv&!2yl#;Empu@4 zAI30fSJ#^}Xy#e1B~(+)wxS0L(Xxoy@@azWZSq*3c^9m!bo64{Za=cTFIfHVeH~>CRWhcR7|Ol3<;HS(txIphHn$s`$ZX5jrP78Uq*|3xZ18VlNnaH2 zAg;CEsY6F`Cu5s=d1aztXLly@-b(uB>!#nz)H(01xS-_n`^C_v-d4OQ4(2)_ceviE z1J=%@mZEc=-r0AfwH5AX23c5FyrlP$fKUPfJm&%&jaCzg#~` zj=A5VAJ)DmDhHK&Q)#q$QfV5f!wcR68EvM4oEqzptyuz&Mm7{T!otj%?rZIw(-P^Y z6*>b=>AdN_B06urqUoLGirbssS!x{L^v-g}vLZUim0~&%FQW6d^~H2vSWM@C7twjU z_loG8_*)U3JN>DM&V$}`cD98%6bfg4#47St;}^`4N_PDmQZi-&w;AckTF;C7 zj)o7lT@2%3ulVS2OSwLOuI)(l@soEA*H3=BBzN-GTK(i_dpJ39j`ywUQe(V-56O*Z z-1$GR=1xvsrQhVosjfE>a~&q6oJGsZ=ps5xks>+|Tvw>GDFpdqM4`^)>^XyS$xVei zn|yAvpedO;w?WuspF*0hX@}<3w8Cm>b-QMCl7+}3bh!I38P~PoyidLLd2sX^lXdXf z8o~9@j(D*7fR_(Y8YXm%sFJ$)s1Zs%e}TjSdfP~sHY|nMbw^Vh_VDAn!<0Ss3y;mTHICC8$GbI-*Bd9eHBQhQC%QFG)Eg(cHBQnSk8x`}MsGaUt?^jBak5+E zWW8~UTjLZ8@Of4V8}Kzvk~>uy@-gO zHIQrhLlHzouGm8bwdOWPeGD*Di0d#pHp~_XduBey3 z16{%O{8rT!cr{B$7Hv}t9u-h9_$O=-)MPP8JG=o&`}@3;X7Tih#J=1- zJ;Kl2X&RL_@STfv6DO-%LY~OSxmSz>vZ}9=liRQ%9%EciSJ}Zc2SgB27UVk&;uE|Sm^_>9Nmf{quaM`CP%mDq)O=JZH{9lSa{5@%oDVu->I;MuTJ zq!<;vR7l4`4XM?rm?_mjLv8GWeY%{I4+SpjbowPQZ0CKA4fPQl3WgqorIg=zOH3UW zmgx)3OQOH>u#W5)Kjq4Mgw%R|CfsNdUyt2oP&7*-@kuh4v+IXNAklg}=OGWHgpgd1 z&roB1MOY2f$l}hVfjA72CO|0A1kkQD@&X|wsj!DWkbhur?uikjwBeJU1HoH|piama zBDXYxFbmeZgOr zgXJ3hy70n?q+T&pQTtR?^fB}K?^>00DW9WCrfzjr6?LX=&y?1x5K^B|9X{*AeQG0p z2nYO+?d$q|)1W#@I555WBD=6UL2SjQbkw1OL8l@4M5w+(P2*ubd{jdRH1@4N5ecU; zcsiWGXCjn_-%FIktqsFp`i{TsYS@dKmf`ghP&j-8r%4$*%P(g`lTx*(Z{hlc9BRbF zf9$k=My0zZ;Dd>Xgc_zh$;vSL6w+=7%}p@Dn-kQtH=zR!iv=+VD#+HG>Z_oJ?$v3SCgu5T2EbLMdQpDfuIu zQNj)5W<&KZeTN;yE>h`t91`rHx{i4o>aT>M^sllnKn<7U?TnHV0V)V9Y1380XOA{^N##!tz&X6L2Z@JaZFWD33^NxmUTz9Ev-?SO1P z5r(=a6R_`-t0HOP_%I`t;5%rS5SctI853M(q8@-qVWBhcF%LS>>`G$R;0Y4C7-1!N5(TP@FIp@K@u*3aQt>;R5nJ9c zVF7m(YP>pD8Ho{xA^MDkDYP~EZo|GoXMyR$4>$s7Cl(|YGdy$jbj+T!*mV8O3_j&t z_6eW=pE--!&HusM;_}N<1U5Ufh@V+dZ=MH5lmqs;jaDUc(M)+FqC!sH4c_5nrAEGW z8hVOoM^(@#hCXY^b%x;15%DS^?%lD0j2&X}$l@UuJ5U71&}MFxu0l6>e?`+r!1s{W zVWFzf`*ALUQhk7Ui|wMXjPNUIl8B>sOuv$S$Gz#wION6NK-gg+Y*L|KGM{8HHPIx4 zKe`|pGZUaD%!sA(t0J0;=TVgX;FA<}FeV>Ki(M5_@YcjQ+rKTV6fM@Ow3j=y4Ko}% z(IKtM5_}48P}HHU6Ldf!@GfWA->%1a&#ctrs%QSe)oZzexn3|92V)749M>6R-*v{o zlmvTLQp8w-7>nzSVOk`{@W)_`qDQDjjQ@0c+#xOBRadwFLfFhi>)J17iPZvNViBC;|lev&F`o{D~ihcP(aJ*SC3YQI% z!0w7VDTYn_?HeXkEX1^~kW9+xqG!W+i6K2(ZtAK~*KMc-gxV_}^lAvzkmPGwg!ycj z+*=QI$3{jfE8<29Jv0_=7+*05!H#}SKm8iq1lRBzA6iRcE&qNB6cl=2g@>6ZEP&fm zzr9^jWE2v}D#=I{x%wiV;7jqkNa0D@J=JTzP*kXf!WIpci3%D63btsJq&8M1_#Kwk z(pUSeUA7c6db0NMF4=%c~cI!3=q0W@6!Abo|@prMVf z0HT_s6H9@q%0#V_ky0ydiiH3NgYyJpaA};{6Q5_%4Ai0WL4ddoogK{19?8!3>a2C| zDZ#Z41?zBVaBznJ5;#Y z(Nx{BTTeOFLtI5P!4aH|FjRmnryj2Z`|&jL%Pvz^Qq37lp5M>9xk%b4Q#MAzJ3M z2HD&)4lS(96o5^yIu13SMAJ9h!Spu0gcnYiC!f@t*21!w-;Gg#0B3P?6h4uk3&Vby z!`1(m=zmLjVpqLo9nw|o>NeYALem;$eT>`M8DpsWjc$FIW@4fO$t~oj%GshNH6o0M z)Ft>5Fhcj1_Egw(-3~xr8jEK-ELOu8WMY4cgwILGy0i;lAcrsL*##dVdg2+5qT>%4 zJU*MQsj9#Ovn=YMHQsa6a4Wc;cJ&b{4Sm6T8Rd9Y=L}ZJJdW>!6H^+-B5(|Mr>A%u z^5X91NAKL)NQ1cY~CU?5=p%h zEEymcQ4|_EAE80R*oc&UYiRbZAyDshh9a9j=z|-D9*g6xu8F9)83o;a;Ig`?;aPG| zIIrQ^#o<}BYOL0xh}x?|Fo19Ai&8E4M>JOvtE{Z3(MO4QtiemS>Hl=cigwjXcvdR3 z<@@q35e$i^6qEG}rL^wx%5_AsA*wU%T7&#%bHR)V!+)#L*&!);d%bBvg3TqAjzVGq z6LuPFW-JY3+74v4$)R)9v@uyQzr~i#A6iIb`3od@8TFX3*t@Ku3z)hR7!;hU@jd7> zK@eeuwFv)HG{(LvY7CLT7K^|w#Gs{B74-H^?o(3o-)SEi-m6T}Y9m)PwuZW8oupK9 z^ znoED$N`I)1gj8u39W+X3vP+a17r|Fl$ZCcyYW6%B5=_W=S9Y?p!+bTAfRwl_r8ssw zr{ukJH_FbTNd^lF^tlQqiD@72E2MY2t9znnMM~~~b%t6K$6_*8hCnVJgMS&1-cV=i zonVd-2YlwIlv#p)T_9!L18^wmg(1w44+0)V#W5E7qT0x`5hYOY%fL+L`#Oxe9~Kx`wf9&UN>zvNFi=S)!711e zUxB<4C7hCF+t6p*_Vk&GbgKv@BhvLygM=(yo}C8=kg9_w*H!Ohj8R8pAn8S^on6=v zq#wz)l-jA0kqIkjV@2sR0#xaIom`iaA2o(ZB_XrAYMO-O*|!xoKa{k`L{}4H=b$1q zWt6g0Y_7(=cuPp02eL4>5+a(FFwu-jX&h)y?kxSD?wUD-KD!=3pM!?b=S~CZbC){$ ztlX78_sG!ap55s)oubd4o#^wZIDL+8N1tai#%9uuYqD?a3ytpC`QbQ;CR7HWgtibn z3hPHo9Ln_tn+)|{RjgN-&c9CQ!<7ZDzL!mxdr_}2@@zH08du9ZA@E4)=}7o9q*#)S z)}0uYJ5zQS*(ZQaIjE2{g+?jqn)hDv5b9JqusOE^P;n*%l+izfK_%i8T7rhko~ksz z+rm&rll~9tImEDT%v*d}a{m;pZF6eOzuotd+6VN+!+^GgAdD;cRtf+H!vXan2b8WN z2SlUjlSv419avtT8!J1f52)xPQz!0$RJezIK!^7zVLr;)g+@69qtp}ICHvB6Y1W{N zIYtv*Sc1U-cFaE@=%iF^Xw#vvYOE7;gu{8m86qgmu&@i+dSlK}#GC_wG(7yz!>*-= zNEA%5g(jAp8r#B;L2kbv0TCPx286XBgVjM`%|aBok^4T<66BI)BoHtWd6cuU35KkcZrPz(jBv!)Tg_4B#NSaoHN%WY*_=?ds zYnGb*fL0;smZ-*^=CC^@F``O+FXDYg*LUzmm09n2TJ%<^cOpsIVCNNYP+J`5IhvFa zC89rPSYq&nA0Y35x3UOU7;Jzr##ZcX7c}rIak-35u<+eb0;vrdA?j@6YFg;gPEYmI z4-m2%XeY!s@Mhdms0V(9X&%LyeX{fF;JY!qr4sUH+?Yo#sSF}Zu%DKR@v8_XwFY-h z^Bl>`}Oc{BJOk473nG}(kiJ+O?1wJ#weP)LF%nb9H8Rj!H z%x7kp&&)8NnPEON!+d6j`OFOSnHlCYGt6gZn9t12q`6)qXAUyv%ZOk?nHp&={-l%A zdvN|KivDP>fbB4+#`sa-*rA@%d5A`8q%(0)Qzp%zKW(Ms=ub+TNPi;IX!^rRuVJLu zFw$!n={1b>8b*2zBfW-^Uc*SQVWihE(rXy$HH`EcMtaT60hFGuP?K``oJe&w6oJAq|Q!jlP z>1b&LKR~=unP3kOvYWX$9!d`D?&!Xc6f83+1Ve;c4(wRfj7yY!#yn=j5`D!DDZZm* z6ibr1+?}CG@gfVMW2O+Ak~#XS@%oqWbg#h-523LjaCMPFLJ9&f7;VT8(K`$0(E2#0;!5tiBrFA`PmKl&b43IEs~VF2fDjTo9Ai2h z<2oGUIvnFV9OF71<2oE;Ivis<9Ai2hV>%pTIvis<9Ai2hV>%pTIvis<9Ai2hV>%pT zIvismO9CdSh6h*Uwch<<`?0d!=(8=wPO;RE^ckr}7nHU@EPhaq&g@KHBG#3>L~Iaw z3H?RySp5A9Oma(*;!JvYftFo*F7N~1w^gYcVTRnMTU%K=QAmTWpO~y67c9i$mgz$( z(`CbFhPa^xN)knXHAyp`zOo<^*);MN8sgNzJw4?SDZFXpbjs`B*HeMd-J44V8iY|c zO+5|VpQf^3251*TDo}w@DVU@bwJVo9LNEn4MDh=Xxwh>>po0A()cZK8DLoSM8APb2 z48yNKpqX-3to>j3Jq=`d$_LU}scm^Dw$zxsHrCK?qRi{qFcSQpd-x(|>?qTB2kt%K zdQw;}Np&%#Tss^xGmiXqoGNQ^nd(JxRwa*zQH(*vMD_J}3HvN%pKaKu%046Pv#b%n z0?)EsNUTdNmBkh$`aMt;IAkW3EnxrjWJHI{{0w0H(8Cb(6cez@P5@RZ z>!CA&>|RIl6)6_vmEcJ+2Ggn)YzXKTgsE)9u4^xb>OMzS5QZMCqoN?;K}nfG09{pk z;E^NzSfCiVD#7;3JhxfTGCm(p$=ixXpn-W}@#kb&;Db}Z)AhKsK0M3WN7&eujaStO zX%SRfukI);UTS1@#ZoHOQaN5K<+Z|xuYlsB&Oo0`O{Fr_=s9!1hxFiis_udJTPN_t z?J281o3xekZxnT*@sYOla08oR;Ly}Y60F)LM&y*xJ((sx-vvPg(j8aQ={DGl6yv9N zg9#`htl_(p*J^)~oGS0!7Ewu6XX$&ey^zL#2?>9?jB!A`sHH;_Y!H|&8b@?eaNT$eqaRZm1yYS{ZU6jPd~MHAxUhV8xH)j$F`?FR zV|soLu9jqQ8IeL%&6mOnD&>I_@`IZ-cH!JqC_IdgH}T`kaXgTYzvjm`;CN>`{)!*p zf#WW8{0%>T2*>T{cq2c4G8GDKq2r(U@d_M&Nyk6(d*b+9I(~~E?~3CS==e>3ya$fQ z(D57mIE&+9bo@F$uE+5}I{uy?kH+!Nbo?DZo`T~pbo}iA!taGs_?*eU&t#u}K$esh zyyAxUQcT|KQ)G$Xrvd)eo^`(nyVP)M1-;{LgLHKjDrfBcWiSx-LT-&Rn?Nhxi%tlBUpNmy058a z4XnJs;=+QcNw?8OpR)~uEB+|%u@Iv%`LAbiuDG7TDV#H`YCT+X=;6&wRWb~wS3GE@k(Yo{DgzG7OVE2Y|t-Y z(2_pOt)N*>(r399nB`PSpFUUohgmj^*9bUbs2$LM4I8qvsC1w{@Q)G|$5?~ngRTg%`XN)K}z{%McUq{v_UiWoGK~#3xr0PZddU5CeCoe`Z|XbY-I<*(`sXHDf9TaDf){> zaG);^1j88$Q3O*h6F= zA0;1x#j6%$K)*=kd`EYEtHpSfRNp|(Pu`AnWiK4PPDc?snuw##ln?xgj)vf96CJUv z;WQk5Lq{J{TRo08($Ok9Isr$Gbo4YGorI$w=;%Q@Is`}mr6XoEC*$ZRI$B6=BXIO1 z9bHUEr{HJ{9nGYpQ*rb)9i2!=hvDceIvPhurz7+DA0*xmrGvw9@NXRK2jhs>Zi8BA zeE0T98O3X`m*`(;*qItwfjWLxJNiDj9d$aAW7R1;e@z_SHLSH3YDs{PSEZIb&UdDS zq;#ksP|gK^-4dZe@`oH;^sO_u$UD)4l86kEC&3RYTAKP(wwX8O5l&Us+;|a-Hz{Y2 z^+}YLDm@VreTa1|*754rl(TptV zWI7m#1Ns%zqb%_Dr0F9*1>1aH#y+JwV|5t*#?oz%9ay&t>Oy0JsXCcfKrEc+91KDg zp*=QG(ip64K*=KX-eBYO;5?j$nb+?*9$7Cw=osLIq%RLeSM|xj@nlM=h|>=WsdE4L z;tb&>UNd=SNMh%1BFXzbZxQ_<-6Mjl z6oW>7lPsz~9A8K}O5UD1QaRoq>NOD73!#s;8uu9U01Gwx83TPmh%K*m`kIgmcXbC* zR5R2CIznp{vZW5^Tv-uEg57aCB`>Y2&<*Q-W^vG1toD%9N)9mYpMW0iu`{qs=DY%( z+MZ5@(2e^Mg!ZF2FkjMQ0kioFZKXuAuCk&I$tEhMC8&D#Ej%We|4!E^X({Q;jwttV z?N|v%ybhX^V4xc`Xt<#RVToC9uiUjzD_l!iEs|K?i{;(vzJq!j_w6q33+IvVN|XuW z(s^VKSYl*A)|!dA?&M2}o#FJ^>p=P(v=4orJt+HjM#`=VDMR0Hi&{mjb6YIw>)H2i z*pYEjh(%y4`{>VXtlaw~{_w`i{ZgU-j>Rw`2#FzNU~Pdy8vLZe&xStm18G#2$cd!oddj*SJ~N$NO@F{b znF|X9h0gnicEs;`wz1_i3V^sD>VSwRQ_427x1lQCd-~nh??7GJ48>2mkvL_SI(C3YNBeXG${I#Y}DbP1i9iTQ8l&y3t1X5;iP-Ys0>Yg=eM&_hDP> zGi~7NI7OwI?7|GyNbA^x7jwQCJWcQ-h{j1deam#rdh~{J9CohPzCLgv_e~SGF;H*Owgwp5>18v zjaP;6Nnqu<6d1oqN{|bRS6=EC6x&5Ff@1IzPKyvX7ZlsNXTWz_q0dYSU6B!2h@jZ$ zZ*Z6)4l|5Hh7`UTL2?EqS#}1)dd+csKyo??bMYuf`@mVBd7^fGMLFYXCZJumY$}tTdTyumIzO$4N6LT_A|0 zOR;3P$P5?7;45WXgjX}r`U30f(insvBX^!cLrfvBM~Sx><@d-#%gj%6A-|;QnzEk8 z2B$p|A>_?SO-djFJd?;3B(9ISo}4hW1`q8~Ya6y(p^@p!OQ{^9FLe`$e(pe&d}q9r zJ`-)o8ni|{U=-05cBVvQ`bcMDwCu(boSwBvloB{n3GIraT~1PCe@ti4LsUWjpS|}0 zi|X3?hi49h3^2f`NRu+?sDPtj3yL(23aGIwih{;&h+R~Oio}9lLA^q3M8y(}1iK<) z>@6T*iwVjR6%h*vMpT6VZ|!qt7`*1*`+nc^zTf}(p7()sX7{r8T5GSp_S*Yk90=*q z7^pmP`4wRgJB%R%*2D8mPFV@A=#2#59$@kea@j~(Nn$iaJP9lkex))PFll;{)We5! z+4@{2BQ-Pa8OT&vDhaTm4C|QPC6vL8@+4~ncuF5OVBo}-D9jTuMgP`LjCfACFVT&K zU_{E0$bd$QQ4^_#!9cSdsBd&OOTyxWf_kuaQ7>74#TNdyNJh5Qkhcg&sH0rXRN@KP zOkpjPR#5{O3eaad#;PHlR$)^aKObO21iX0PkKXTk(z~)7z2ExM`>&4le$$rT6&iY% zH>Y=vir&?B^e(le_bY~3uUVhUNakdl7t(NwyUWtuVd-wObhlW#n{?(ch(t1;^@oi0 zali)0!s;(GhFVzKisBv`!f=cnPrI@16O}Pbd;m!S;a96fl6U^5j^+?f?XFDZ=jsRnX?CLc@EU^x!(E;pvL zs3RzQNk1%vnBJP~d}z!pWo)_3wh1ghQw&p)Villdy@5snM0l0j#16VrnOPimBMAcp zyw>7DHMXARze*(2%?(yD1rzqxFp;8n*u_?&Sh*Z)8#%KIB-{0V^P&DxVdELXx>O|? z2Os+fg~L8Wu9Qq?yDU()5e_bwW@S`!DyeNP%9_7E%n2~60KWKdK;NNQLz~|ha!o3 zX{#MSwAGFu+G@uSZMEZvw%SoNw%YN=Ry*F(>104Xt08(WCz*dNY{euSUcn#VHOB=xqKqHs|Xaq9= zjbH}w-(-a&whcI=ro|?KS87`QU@A&7VAs@A z)NCz9E!C$e%#<$D=GqNeY;?Pbo2v6&z@6pIJKaV!@!UL`ieS8fQfq^%SN0STI(itQq$GVY$sfpMNnE_VpZ&Tuw^yn`#i{0 z(iW7CbGAj#N%Z)ebU2i)qQS?EgMnv)HT8+rVMY;{El?@j`QYkPfY>PtCvRf`I>Km> z+nCOmLq%yN!kkXoE7=4G@KHnPHVBTErmzlpxLb*3nNc}`wAjE~H^v|urapPj1bkW~ znXLSHbr~%-sQj^-9yj)EnrIf-N#08=j^59&fi#RJt z(KxU&q1UbnQV(snbzN2|Bv)Ck7RxyoNoMmzsf!2MT-U-Oi)=Y{aB$GV!TJ9>IJ9Gp z{{#k2Tx}%Bse`ZrZ^8ft^@0mFxX>lWI>4<&YL?PsNXZcww_sha8;>IsI3eL;t;ar; zI`%<1wP>mvVPRk~p2ARrAJc-Ljj*u}ZL^w9H)i_HEHW_H$!aR8=VvRb&DT+zuX~+* zoa`VGYy}2UwwGLQuyqe!O8lHHB@w=k!aulR?)#h-vB3MaX~$C9_ZpO;X6a#E1FK`Q zD%7YN(A&6f`u0S=@0eNdf0Oi6r#^%8R9~fJdJ|WTWFpNtt=X9ojYbket#ckkZ@)hD zZWTyx_pbDALbj6{FS4D~bSB$LjSJaMYFt?_hqGRWvR;12dO5#tt*|uVByaJBMbx@j z5CZ4ZkC|jP{iq~U>Bsngu0m;1sg$6Hi8}52!2xLDk}3e?S(9q;3Ti6iA~))zoqyxtPnM{RVAcp`bnBV zN>fVK*fFdOER*UM!sgvqIGd)itxfc4DIAqjV+CnmV^SwO&S@Z~n#I(mGD#N2ly@K& z!6tOlpD5W(L^f&u%QftfLg63vK53C;BW2`kGwS6b@q+0)3%k@~(>Yzn1p!c)!r6lU z;Se^TxCoYmIw99zXa{z#X)6VM&R9PIlUn{&;Z0%V(hf&#SJ5HfRZ@dh&0VA|lrGI$ z!`Y%fz}pm7gVrgMrOX61D+mF&RE+|lkEmsc!Q%X%^{qZbghGh)gvDfF0=XM6y5c}t zj{%5R8{$;1O4>=}wZbV`l0>MVhENM)Z7o?YWMyWEFy5)nIi6CH97+plu?Rh31|w=; zBl@vDC8egilW38J!`{rwC~J;*zB4OI+xR8=jaPA{n6#)RnCE9vej(d(rifuWO0HCb z^RC#lg*7JBV1n=s)fk#CsgX{mJTN3vGV{-@1YO}0nUqvzfXs867HgG6qTZCy1Qw-G zPD#@!p6Nl@+62OhU{IO0i=C!nFs1zui4LYsZKOCmN#%>;W63CrHzxi0KynezN{m}9 zlXlnnOyKiG(Jab@w1lRZmn9~+mB60P!F+ya4!B7=7;0^CS1QW{`kLyFb$h+PPOn)* z8K34NT^y|y%Bddh%wG;=6G4fqUO|dT=qvO_0A$^f zB_<`3zCG;2-CE$2M65H6CCwIeGPw7Psjy&N3+5@Q>8cM&0V>cAF=Mr2rr0$Rv~sv( zvQE>0IZPRRij@Y-G{~cLBpUtf3)Pwp?O7|kf-y0D5KdY_VFqm?PP>9+AuM431Ch&g zW;9zrIr_?O7CJ@O_-hMmjr7YYy&QY6pB5o15K%D8ctbp<%`Tk4i33mzMv6@@g+W`P4(tRYm7uQy4%xGn z%uJdXfL8Q2V{a9EV~NIb?+B3w;=H_sHnJq_h!yPl$<2;fNm!~pN;Pd1g|=pSHSF!o z-hS-eioM<0y9s-Hv3Fs{97zn-G?%!B ziDWwcm`T2&AC+Vb{TToEwn7?BFbziipC20v|L=melv(|ZC80v%!A77Bd$(opcI@4r zy*se?7wqlH-W}Py6GlvuK|Sc!1GwYMN@63z1Rn_#d?ZZpkubqW!UP`)6MQ60@R2aV zN5V>)NhN(t-+*Ug2W-^91evXK@7h2d<5CG*3K4Y4Iuk%7xP1Yk?I{0Xy-=2x*}6_K z6(B6Kk6Ci^!Ymo2L%XwzfsBYy9;13vAGM-mur_1|BM_1bt1Job5W`y~1t$@YKJEyT zs1c)PF;Ef^1#(#V+d-LcFQJ6up)yJc`x};k6qi-();v9PP?^gA#ysuGMPoso^3 z$xt8l498*_%R04(g)tlYtltD1dZxa>IUlu3<^Q{S9-C|*%rFxiZ?qSDv;z+WpQkTM zfT17zU6@p>M1@gyJ)#XGW4hHte)I&?fb8I=2b=An$b$}seRWEH!$a0w&Pi9Hudv^0 z(%N8|gjJMnG2OT$Rh`{f+&B=ehqIfAe$jw9yP4LnO@|8tS!1%@M7svLTAKvxQgyBN zT+NQrKtZjN7O<*d>Z72Ado>i(3dsr3tU@X|h@NzmTItTDii5TJg$-`(^3WD7r=oRd zVq|LCqK8^jdm{wh+aVluv@xoCCI+SGj;?CYZP}37B5T)9|Ifr*yVy*84gf$_BaYD z5D4v};3xrSGeX(|3J*&ubUfHg1_<$n23kkcbl$*b3UmY}%ry%xW3pk?Q24jBM?{VY zQX*(TVVXvtDFTKhHXf2p7?Rj@k{pM%osEYL8#vfxqh1@ykK&rZCJjVU9RTJcd@bTj}HXu?unS~o> zkYyP|K`<*T{m=vq4dJQsYBEZK40S|%^X`u+t8kN)x&r zN&Z4Z=kM3CT$WTxoZy7msB?34x>gJ~pp(L)8z+yo&A_ERbYc;rGX@Y>R>3OU5Ennm zL}E(BNqai;1t4nUWrpmm8-fMSwsVw}mRXFn6txw?x`XAUJKMyo4oIL~$f}@?chQyr zVVFKaEo1=7ToUQ$qG=KoqPfpS8|b19J{L_@3%O-=qs1;$513PCh)bIkSdAzFqlSqP ze|L_mr%(zP_ToniD&YFd&brHsV4U&kWix{e2|{&X3KVV#FacoLl9v0&`1-Gb_>QX! z>2%%BQN)wsIQ)eShf{Rzt?f633E%2U0?JXLbp{xOKiQgUAS_XOIo3Ga+NwKTi=M-LbrtGAHGbR^*1gPLW732 zm5L6oLUb5ZiVoRz(P4Nw&;WXwq0WRjpFkCoi z$`qJ|1gEAxhpct#71$HT{IgVmrWpILuJX^3R_WCT#H%F;h$gti^X~{kj%*_B>s+6q zhFTsVd}nb)KSNZaqXvbR8gS)-%+UXC72{86v~GHELJAOQ`6RmHQbu>*(Uw5@UIp&1 zHCE7!z=_;mJ7rY-terAMRIRAeP7K<~9ppHeXy zbtnx2aTzvr1yY;At&jn>9L)Hse3A-<6Ug_f=y-tA00oFsx=IiRQS4PG8{tMrs7kgC zx3T{;B?(pRLc2INOMb%USOHCJI-nu})up&gm0g1&b4HbNZTAxarbPfI?yj*lCbKeW zJ}Zu{#2dZ7fC0c@9m5$48iOE4wFc`Dy^x|oeV{cow~0-Nwl*1?92xlN8a)9d-ok*O zFP1{5wM#za!i=-6L=4u!0)C-~XIcGFHP+UtWu$fIHAXIfKc|Y2&`owy(CS(B{ynXd76^C()}?+raB8Deig^x{1Ze-{*}Py*$BED+FkBUlrAOs1J<( z&05_Aiyr?IV%M2qrNkoyEG3IkOgwC1Hh{H-Q_3Z0w2cw$uoc=X(m3JHNZI1in3|ZL z-9QXkGzcL*QJCdmA_1vH{#OiE6jD!2Y?htbX|sXsDllndR@V?D0s)>|X~|CXW)Fjn zS#1#30CL*i6x6rbBbXoejVT>ibA_eUNT>!_S)=hbR_zwy!qxcb^=TZ#0U+8xL8K0; z$9xS+{YYZGjgHoBv?D3fI@lwLf&zEfNCrl!SSxcw$30kvJ9jZn-{jLT^EW zh(MVIWKttu2ic@{)E(-Ld@- z`*(sOyY{mK8=gtx&O!D(q-KaAk+O)z;zi!sKVT|_K(_s9TRrwmjLXJ=?qmV;wI}9_ zJ6Gy5UoAD)vJzTZG4?|I39NG4aFJ(jD^cNt11ik)^1kAc#zY%@T>xJd(XbUKD$y2;H2(xXaEod$GW z9CSW}5OdI*;^-E=bOB_{oP%8|qlOWOjRtyg8&-yxg8_~~qZV*XgPsL|Bnq&^-IT(O zI_l8?6(~ZhuCs(oH+166@Xy1kK`I*85)F=jYUth`g*_WO-JlTrXN0u{I;L1Uz{Zpf zHfl+fFjoJsDg+S_e-nrR*N)P~ZkF>bJvHWLP)+ zY8wQ25Szstn@}JKxlCyT;h?r>Ix(lUIMrJ=13t)<41}Vnpf61^NdAsPQ%WK)OPU2W z$iS|rs>7j}{P)QSWU)M-q8hQEzXce5;Y5dS#3Hnq$HA@?q8}%>m(Vws7<&}34kQfJ zz_*el=e4-OB4oI7OzJ}D=%PhOOMSG{i0J5I2^m!n9m!^A+Gil9Lq|d&xfCQIRoD|c z>cnuyaTEr1E?xxp7LIunI)W1j1EhzJpbDCO3D8_kCss7JMQf~R?!&6#bDSEDi(x`7 zu1*&c{WCnp1ei^!AaJnH6@-mV8IxLW^bqy|bl@gxARaeIEE)JE1=87DWO^@q4jAmN`eM z-{cfE5}K_)<;Or_8(^4H2CTGk77G6i3bQJHM_Seh4@#%3p8%Xsz^YlBUfZ-<3>Kye z+za)Ynp=V(gl*t|Q*FL}&(In1;?la8WwUjj7SGvdXc)7QDJEgc#l+0`!FVk{n2+{| zY{36_1v7VL66lR3DyfPVy23p!H{xJ>&vO1GPR}oR23O-b%E4~?l zNnU64dW#i`%mhNcs0jYoP?OO;X&liUSS>C}z@i5##9&rF+9GgUg>F-WDMM>$#~XDxzoN>^_P<7oqyTrJj8=hF0h`^8whx}KjP^NZS>s@BooGfgY}YSOR8I2Q7yh` zTO)+9kLUa+384&GW+{G!1JkumA<1}hjx(&9h&AT4Vj$Kgpo?`_aA$3NH;R`C+fcw7 zn@(~`O%2$bO$%~L;0c6GYF*Jl*cgy4@e<1I?+9Zhr36RwtShdp9R;_R$!E|dDQpVK z89ZJ1W?xRI7E=JyM2WFUwL}KHHbujjG3~ITGB$TZSHGq&g5fq!1^Z-=pwbi5lBU{~ z_-w-#uFwhK&OmS~>+%`U#OjwYo=QMNv2%Auh7a`lC*WV^pFnc0gdCT`RMQOGW_1P@klh5;nQLH2>o4&J6f^$k=`e1!T=ZlP?mb=BJGhe zkI`&QiW1J$KSAxEpn^MA6oh zvTe+0!55%J!8(s6T_Uzz8RJo3(v3se{&E0Et!iVeYJ-Eg(q7O>DWuqjmv*5sGi-+M z7vgidljxqA_x;Afejc4=emq8&(?99H`FG&phx3=TdNW`$ejaU}_%UHJ@Hv&sM!vXuBi z`&|iR)9+<+y48jfs$oH2~F42yR6_B_=bB4dh z?1yADeBVMTG4BQ58%U@iWKl5r{Qtu?1kqfeq~T%vpG1oy?MO%oDmQ4Lrhe3uvL7QX z6)2Q5WnM$(mB^(+U#%F)%9*L8p;|yvnsI@d#0FqNMF1!LcHJt>)SaaGNchk+ZRy&8 zIBoe@p;3bVxS;@0))tLyxX^QGf2rt5(>id+ju17S3J~&6ZzJYqS=61tF_BgLO%s3P z#NX+lc{o|4#NRkZdScbY&1|*YY^Ds~BtbXhST{NP$|HO+5+J{XYls_Pz+Z)Fyip+5 zA_{TWRhWZ|2_#tWVyd^KE2)gw_t7lr`)IU?WNN%(V%joXwO~w_>f){gsB4K=TPnkY z5N6NDke0*(M%uG&Uj)jfYRsrA^%s;trv3^cGBwJQOI`3*;OL~V;!#n%G&a2x)&Y)*>7s!#$#mwnR=98t%)t;OPUo7YA) zVFt#zJz0Wrwc$;L@Hs3zt~OjPgl}fyM}=_Qh%8YVtYbkJV0$C6m;3<+49h&~ivydL zbFYcBa&9g~Ij|@vHs9v{&T{^#Z5@3jQ(*)KM|b5hGZXfGXxR2Lj>oR#%zZ+`uaY)n z+)D_0E(A58AQ@Zv@Xb1*<{GLw4=V>Kyl7+C`d#%57L#W# z-VT*#FRF_2nh2ex8OpWe2tdwDKm_wv{&*}OI+v(O1{8`c3krVz;U6N;d4 zTNd6}2oKc45e*lL8=#UlrJ5A%vwN08;1FzwK+=_%3r!3q=voRTd@Yo~x-(5HFL4YA zc{4E$-eqtS{PW zVY!+2Bm5J|Zz9C+g?}jdO$C1{{DI_G2>!$HcO<`=;Lm{Hh5Y6Wuk*6&;B{WU&{axc zAtWfQo8Vb3l$90)>-y}`lwsfw^f{+wz925=TsfZ7C&*pT1+3N=zs ztpqR7f|=S|GYq&H%xVm&TgXVE5G?LY>C2Kh=P=EiePYr^8r=?|bXAK^A`;3OhhRDm zC^MLWMSu|Y4J&&Zd*g@*<0&^6fQ`wmSlIWCmP2e_#JZ}Iwr63hSWAqJ4$&tWAv?44 zj|R%`!TadbsyKw6h~p_5{wA5TO+<}g1TiChhK>aLda8N)5%yu zqNp4W895Z%t1N`CvSFq~cbK%LJvzd!@M$nKjz)xCkBAwV-0Yrn-7MQ&-AR~b9YjZ( zrRazw#VO6A)9F?VOs4ETT@ksW9tT_;r^ahik7hEx3TvBUJ9dGnqnoKjR(*ccbvdt)UsJCd`<-yx%wy2 zm7*vW*&x3trYa!6G-|XQMjP!&MMLYDo5vMw;%CJwr1;z?eN7D({qkSoBMdZxA22uj zp7x5xWVN+Z$MtI$gn2IPKdSrmf2nQ&-|8SOt%dbMi+=+?nwen}$rchJXpVmZsXJ(4 z^)H}tUT6`6mhv;ux}s#zLQ?<_xV1FGC?-ow_5uOj*3zCpskl>GptF3I3Gy-_ks%2> zxJL&U)hj?D3W;z?2d9qYMzCl{grXi}cM{khgX1Z&=6{Z1kb1qo#Nu(WG^))0k{Zrn3bBo3nRX*gkrMv)G-5Z*IXia-(~Zn6a|K6iyhFpP^3 z)dpfMiIdVWtU3P#o?1Va7~5VY$4iN^%|>#(g#&6YV;g#w(hEakvzQzW@N^(YV?6E1 zp~izkjcr=tap$IUUAci=D+=(%^F28N@GK-pKRlu27=~v!_YD_Fp7D4la{b9U9nS)C zMB$mo4dDiJQQRO-!;R%;P%tEDoAulzZYFu4$gxQw#~wWUxGCJ%kI{Ve5&f8#(;(bmhK-g*6;s;pxlG=Z2Ce1kVW0ot)$FOyEY4a~dAv zG`5j=;>ZD(V7r)WPR`YM)^bg`W?UF~x8T{vwd6v$_M969{ER1+>&JP4?jE1bOo$#*Ja)V{H2;9%zS*ZE5^Jk^|#!TgrV)&Ubh|aC5lH+*Ek&z@h9+ zxLM?Eh$oR8_INgtqZuAT8$0yhj#_Vr{@aZshd-XL$Pt967w5sbl4l5>p&S9o?rS__ zxKJ*DJX7!xw%N_W6Un)d6aBYa%yr@j=j_(viR1cm?YJPWH5W-iJJ6j5M_az0#7t_L@O0%}kc zNX57@`rp`u>&Sh<_2Ncy;oJlYbim`psmSSq=N>uQ;AzKAB&RnXUv3OJf&Y!~k^}hP znC6DY!2ibM$uSzwSk8}YOP;BCrgL-28HFd79Ez zkptu3IF<7x=W#q2$nh(lbDTFfkMrfaQ$Q}Bn_O@1OU{HF&5h%anP2@@%A2JxDh(dS zJA5@#JypstT%yh}6^J$qPx}(fLPtv+5C!(W;$+Asf!7A4?zC`$va@p#7)~&HgBfx)k}y)-iFw z?X>h`CCj$Io6|0MQDFe8OfnkDpUd~UP}4ng6q$_bh)Hxinz+hWz7o`}Y43 zCe){bB{c_!du5Hh(9XMU^8O#|4B)Y>yJpdOQ@W2(e`KTgv<^h9_-~}V!^hIAex`i8 zYxODv?V9_Z_RHdUjKf7M{^B8i{MTy^ysm8M^uTF?l<&Ou!MDF)0LM!c!V2zBul{NI z+E;52>4I06CSU%s*UAA@#t+*KsgTtJ*0x^YlT~_oLt9h+EB4>++IT6in%VA;c z&TdBw19Cme%05m9KDOc`?xPi1cLzVISHF7jhS5?!_~L=K!+BM7Z&SX_@}gmU%KB}C zlMMNSVSMK>mG5Ex5bp|-Xq0ToN0dI`_&!mGd2?G7(%W+wU$xZQl<)h|)s*l0+KPXJ z(wy#>;@xPz$0?+jmyFaP!~W);F(_P$3@JzW zKBJFVA^EKkq#lewr2eKAD%p3NLt+H`o1#rmTJbZ-nDTjdIX!o78)d~$=~ro8hZ)DgY@BGG-^fMLAn$bk0mHh=T{m8xp6760UR{ogKl z_KP~oHx4XWwlv$f`i)(tA+P$m=?^QXCRLoOyfB=1$Y|zrd3MDU#HUUZ^DPX1xEUkm zxqj({aU+M8spzigGwUb~HRFPOL1#_oyy-kWdl|3@}590l#ysElDljwc-~R zwc=H$4f&*iYZThJa5w-vd<>eguxK?Bs!q2-NWirOpw_k(cX?t?N zs~l|JBxp`i8M;2OY8c;in;~yk+UO`)1C{t{FMr|q?FqkeREF7f`H3O-niT`>dtI7T zFc~3dXXVEtMu6*u<$l*!Z4wxRUPyotGIM^}s2*@qCuc5-Up!lFQS5knl9XyW0v7UH zzIXVXB`EB>R%ipIlFa}4tEsE}%qmU(7{mo=wM{ieIvF$z-WLiA~8|Nu$~j|M6cd8V@uf`=i;IQzjeI~ z<11KPYRwOZyz55PjRzrS#hEL1fxwD89^#9`i-GQDr!bST;E_EaYk0H6g2yRH^hE9p zhzE~AcuD45DusFmClyLgMtF-_6epjsjVsp3Ze!Pf7Bb)nsrLHB^yhldndPpBHe`pme+$X+9RO^8?!9Jrt(LslRY zfugqGNJ`^FWe|w8ql2DN8nKfCh{&T&8*){{=Y?z?xuvWZNTo+!-?9tGXSeky5V6WF zWDnl*K(Lt&_N+8tV)W`|xW|R#yYKwySv5L(E2t23H%`hgdZ(eE!kW42Hr>Og^xb1p9DOMcTENg5}s*;O;e}E=R{VaJEp1YTG(#AG&KbAV%Ath=Vu`{XYUbS8 zed&UFnrljVNr!4y`Kwb8)g|jH%3ph)h`vSr3}3c#k}5FQy0X>5PK^)zlE2!vc$qw!5p3xh&a~^=HzZ z@<(QC331vf2l{L=vEP2)Zr5|;)J z59_;xyDu0!oqBpBVz+bdKklsOBj+^;|7bvVRA5)IP_p^bJOL10yaU?Iu|e>=CZ8nnfe+%h^UhH93~Uwt*fs8Kp& zlG)BN>-T?|>%KMaX5mas1(eRZ5|a(3R7L&-qBlD+AfcdXP^On(?7DCg;WZ>2pW1Na zi&9#tl04>Sbg1c2zTFQC0?hmZEzm^f%yb!tHAm-N7SkpJ*{j{|*QGC{Y7I)0Z-1hq#0+xg5v#IeV6PE*mggUiHRK^ z2KAV^??Ah~cO9-|70!`Ca!ilT{K6+|@M2fbp;RAAD`chZ*m-29=HihLnTp->0w#Kx z^5dt6i&1VnN&?#cb?43X4Y~HCnjCfb@mCG9nm_O_j(ptziQ(>fhY+xE`Q7h>1Hw10 znEs+Vy+K)O6d_yeuFh8grd->>m_l|hO}@4})UB8Civ!)NQg)At_pRE|4XIXlcz9ya z9os?Azu&{%+5I4S^oYWmVsKiFlXitLcYbr(((A2*{2piUX`rd3PV?R#*`3~Y&ENtq zBD%TJAtPdL%}f1DM~s;~AvY|jcR|qY-sa;iw*A#}^fxrSy&CX)|HVH#oc<7!vQx*S z^D|ov>lQ)f91(?`!ojTv>>GTb{jA_lS(O7FPo<}JcnPVktY*jh>DpQJz{aI7-7wZ@ zU($)(8=;Ro7WR!SHTffv{bt3k+udwUyXv&eKFFZQ^MUKD7s)Ohe`4r6W8axuId+*h zuf0JTs{xQxX95oNKK{kW4Mi?}BIA0-Rgkn$C-o1NmDM^SvaDv%y|m0M0Y)Tc6%Ky6 zm%r3=+Qt+9gZa+i)6ArkY$6VOu>g{*BC9X>TAtuH%~4jng>{P<5)clqB=!qZXwf_C z5B(l39eKY?Wy)OFJMQC7`oE?YUMy3GKQFU(_&HI-@5cK4)Ky`gn0oU5&#{H8GR=eh zuGn2^=j(^Uw(%cXp4ga>Fu{FrM)B;D#H3{-)PE-_ON5 zrexYvuMe9me!6jg6lT{x7Z;uQ;$xGI2f^EDOg;ZR$~&yNJ?g+$nSsd~y}%xMg_S+4 z93ICMoVdNGO2b3gB1tR#*dff}yEL>s!_8SI7O*vfQU5WmPR`yi=Vru6M>OG*;lmIw zA_mnfmsi#9>GM|i9o?ZZrom%fhQHlI%9f&07uy}WI*c#qFlytu*z;3v%w9gTEOE}Y z&5Q0I+=&rB_S@MJb02SCneFXAv&WSA*Tydz2Kp~qRk+EndZXNl@fg8>@3+SFysBE( z_x<(@up?rY)TKjw`Hr`xDfZWI<$QDhD2CttuMuNjo&0fYpWI#yz1(llj_>f-fyVcW z)fw$+D3PGy>S(uXo#oNQ8xTM#aw_*6JOz~`lg))BUezrPTNC3&Giy^7W)3KLZGLtn zBV}!6YifGNtgpx=39Poh%2dmaLGD6kRwsj?b&Kk|4^9kP(H@O4OXDG8iz`cEJypBX z1l1-L6}{V(<^R_cvv2M$D^lM#KD#Myzj;~IYQo*l-^?}TJ72{jI{H>22=dg`U%w5Z z88JSro^hXpR^e|ixmPtE=I}7o^^GU>6j5=nXU#p`pg7kBr=mOXERp}zzWGTJH+8<(EeAMy)GOVR!n~@-S--noIXns(48tb)9Q-YqgG~j zO_{YRYj5QujK!0AjUWN2ecUmnugo>-NSYQ}5wj(e`_o&YTb-&lKa2YbB9k7k7xfc* z^1Y~+s3YI^5_BU>yeBvHnr3p+2YonoK8W-+rFV8aeOGm)*m~bhH={EH^D!}F{9U1$ zTHOJft@4NJe^~!)@dAn-Vs=>OW*rmOqL6mJIX`-Y6`xXGxqcPE;qbAenFV!KzsT6^ zSpt$2UGC6K;pe1Gzt z9lr6qn3jWh()G`2a zC)!2wC=*P3gq=OYc?C znz9P3yp%0Hhl}{6o3oiV0!+1Q+RAJ;u$UeacC{!D@Xnaf8=Mx+5@z@(RYvg(vR{te z<$QQiLj7Ybd~Kn{*F^A7IL`HYQJ=K>P?Pud=Au`U`TCoK9L8eN7S!touUIZFF< zpvOq6ogQTiBHe3E3v=`<}0k)Bw7GmY~clGtKjYe6R=eBrWZUZ@A|`$zvaAF0u5v+3ocOiA~MFA_xd zU`2Gv$v$cGbpdXqD8;<9x#|#6@9|z`Md|}%iz%TN#Tz#E%{^P%CDTr`KCz_oPCE zu9MgoIB-DyrL(7uF7}y+R@IHE!%`a;z8Y};AG=15YdvIAaO|$4NoRuZfa#Y5YYthY7gJmqhd!AheVM;`WEGxGN|gXBIzueX6s-bfKf#P(oZy)YLJ` zPlXVC;tQYGMiWjx?MHGFRMV|@JEv!_w?7@$os@nMWM<88ZvX2YL^>3&Jj-M>#uK-D z+bzh6w7qp;)%IY_7p5P(+gWM#d+t4*3M#xRmTo5%^V``G%fOR9MacRZjAr&b3tFOO zUwiPVdN6UW)mir{QohU$b!b(nob7uYEl8=j6DewI$r&bS)$~ID{c`tuugfWa9Ola# zyng1ZCs6(ei`#7E1OU+t%8XSk@$aM}EbC^vRIPcfSo`S4IoGwjDt=;QA_S{`4Z4kp z!vh_IiU(u+;=;X`SS{tGLyk$ZtQj$G!IThw<%Sicut_R1Dr@BByZ^==+ct9}mSN-I z2lI#F&?pLMcBR~!=4WWPDGfmMh3i&!NU zy~Q#0nBL3mM5FxvX&H$VZdadx;>av!MQG%c#}11#NsUCxs_~mA|21WKLdST+hg^@q zHyscC_QeORt)Y*BVuuny{K5(uZ~PzP%_dp4XtS+T_XXc#r|uAK>unw;8FKPT(UQz3 zqkBe8qRm7~o+hfr#ouGt9Aa7T|NL~#ipd78Fp)esO4*N1ow^x|>dli`rP!Wiu4AYe zk%CG^!?%vVd2abdC@s@Yo_pmAQAu6u(BP--qjMTzJ5W7n*VoTZrtY1AopVZf;@6!^ zS>oc8R|X-^u%hX`OIz`qnjBSsY#s4t2ln*RZi6{TWFBF8%i4w4Sn+dSbzEDxvl0^{ zxq4mV-A$P*Px(4`hovbtE6aKf<13%-RAZK)N%#O=A;=?z+)-BYT^ zIrYH(bHnlT63MbI*`Z0VPdm2a+2+Ck4PUt_K#g+j9_)Kt-0ASlMFHqktSZRQE$qez zBU9ehLbC!peU&2ugX4Hsok@^iRni-P@_FIVv?IL4`-DFh9wG4yD!Y`RBkM|2O5(v}j)Y#jCoSp89SVdVhbl<<}Eqv{g~Tt1U-vixkRT z6J~fbur5 zRnX90?VaJh1$qYz>DA|Bj=78z%6**y(+zA_4-KKMcx=G7-W^kL2o!{$ zcFI<~&*|Gue^~>)ui!925T6(mF-Rl)EJTY!&Xit-nxB3QyP4v*;|UFWQzUft#>4sZ z{tZm|=b@fy*poef24tiT-m!Tvp~iXt;IxIsLqV3gsP+7rUiFKeOYev9EeytDgZWIk zlza8FAt>P>MY{A~_!jzO+8#cCW~XxQRFJdDx*B?yR{K|57i1iP^OxL_fB*%Z=^4E> z_RM$KUk|?e#*Wq9@^O@zMGTeV4%PHgl(VU&+D~>LTN5T-Zj>Z1+-M~_%*Ug7l|IRm z)C~g~9Oc#iRog%W@k5PlQcxiKHAQ#hhZb!#6@!>d2y7A6der^{*f$@_T&)4OEvL;r zhTP$VU+ZPy(WkRoT8lxpU*3#9-Vtfwj zEY)fbjNk^hRpHz;-Z7yqn5OrlCdoz8(nqh|CiL4?;Vs!V;wb;0rJ|PGxt{he*EXqW z!AU;2lUN?e=-(!A*cUAAFkoKf6W-|OA{zGWkF(CD&ZyVDXZFkrH)zfNO*~bw>sb@Fa==nBe+IgM)Q5w!L<|9v{maNI!&zh8fzQ4Bw?R<_$p^v)wG!j?L&QX5e#V~InU}}>$FX{9y^ym|2DR8@!T1;2 zw$=K@`d{6j?ie%Aa=Qq@TCV^?<}dD8WjN?46<6!6x5H2uVAnM)WCN#{LJSboq+<7n z696bUMbMS~{uM6*R&a{p-M>r1JdfJoXbZs;F4K<&-3!IEqFW39-f!z)zH?0+#89nI z9KrmgCKfTlEBLr0E`}oX>ja5F$QZFUS$&HubI7(^C}2{Z5CIg0n|4^nJ1)b-EW%1Z zKuGfYrL@te0vrUV2m$F_QDE~?Lf{kI`e~rpWM_V4qmZQa&SSgf8Vp>Bg_5n<@Xthu z%@0!jU7pXyh?%H*613WV(j>hwu|*CUCVS%^UTbGiw&->{5fkf%iMZ&{wY7>?p-r`k zbbc|xyHrd0Vkei~Q8ED?^!(y*cDT87qR%>Pzxm@j?VkcfMEEpR#0r6AL3mFc2Q3hj z)(sOA@W}7oeAf35TDKq<)|Xw~dKWk#b9Hnu_?M=NHgr zOo)c_f(;N>Px2+D8B4L1er3>$R!8|c7mhJK!7)KUbxe$RwF>o}*#GMBd!@%9 z!&XVEdd1Z<<=5HB+?m1zw_&F$pfn1;m=?l6{PGumPlQvd<-3&2(AJoLl40P2TKTsG8e)##5M)-Rb4SbtxV3=mzu` zfgfE}@@*^a2_`}@w;l}gS9)7_nl-8aRkRek4ZDRSCeKZ>g#to!7p&F}8R>!~Gmh|6 z(+o)|cjoCnKWH*4Gb~n!&bPRc%ID1xA!R{U!V=p_Q$m}jHPxY2m!H0%l+0fufD5=$}Q4}5=#hP~^Y zc|RLG-wp%$xTURGfRN@*_Tw_@TY@bt`pJMF`ZdyGdNgcBnwcw5cac^G3a~jDCzW|e z_?J!h3?-$uLL;9j5wE*dzAjp2kp~I=o8g^EPfE^uj*Lzfeo|_F)>bvX!g_ z{8j;j+_9&WnX`YZ7MHLqfcE{^d9cfEs2+h=&|V^7OlQ9FQy?gz*aS*aX60oT{nP{y z)!|zVw#AXsD?jPQm=<%kDf)p)Y7vm-N&C@@1T3f7*d=eJ#Yg}b05I@cbl=bWId-wY zw#kSE!{9LWcw(Qw$N~!{?A|9>NagCSBH{w($ak)@Lk6&;7KN`N*fVcoy;&#MGE9CY zE4YFU1T9v#MsGaxB<;2eAwp~|o*!kI8+Vpg7C{&~-H_pRE$UMfQ23e`gDyF*I&!&G zXp5E{#Mt3aH@wot)e^`iK!@@cFLv59?MEwHv2aE-;6;c_8}IeX_>VrpX;5QU35BJ3 z&hCkcY)u$JiBi0nRe@2s;|%&Czr!Dq4p80x*-Y!tyAle2>SdOGrm5M}dEJkK_!w5r zH1(YA*z7RTp&x-^rs?<>tJWO{&Abj~t($4;@P}(OG?zB59Djq?2eKRtab*GKz?Ay@}rXXQfVqTl^FRK1RWoA-av+CczKDqYR_X$#8GJ%dC z3QC844Aik;gXDnX)fA2`r*X1LP_}Lo98jxTAtaT(b7l^M8%ADM%*>0aNn61K-6%{u zbVs8^`$sFj--l`tiWT1_*%9<)#TPX)y)1hjn_l!4mHF{n)6g?riRqYCzYeti<;I;f zgidLj=i^=K*w$IuBxnm@KDhjl-NEp&R&#@H8oMppcR zFvF_N%TUsj3b%p>-9})b=~$KfnRT12z}Hnj@rE|SUX~UA=f$@Q#UmVoTR3@M_8Dl< zsqmPWd+&1T@o__Wc6jg1fw5{THzC-1ui+}=Ht4;>Zz-lXxr>VvFzZ_J8rz7DgDf6J z*L&ER$Lw;HUl`v%_RBZ^)e}^w8&ep|yo;>uu!D2G(x}LI5jW<2!qJ(nQ)= z5pw$Y8RYl%^uCb}gJa~6T2Sxg_9=6d<`5nPq%DjXbQ0TjDmSZN*7PJhc5Lhww3Inw zDpIw??$p}Rgh5DmAdJZ*NOyEwpt>`ySD?MNO_*-ha;J!t zBt9mk+i<`WxV}Vk>O0ER zjoh|_J0;zlpY%HNC_?H7)hI6qeBA>qGVpz@zpqKVg9we`Zb<=bY+dj0k65^)4ALmk zf^;WP-!pOhJAim$e0@l`7PD~l1G{ln{M5Mu)*Wl_-LJh+n@NXytdJf_7cp22x!Sbx zGidY;$ky}A>)HNG>vt z;2=FlczPRb?KY|kNQkA2v-ORnv|g3|8LhL~9wSaL7`C7Iyn%1O)N6-`BcTPsCNjJB zvyGkh-g!K1C3e{sMko6xbs4j%G$tx^+Yu66toT6XQlr1d&Q0STn#s=@eAo6A<)pwF z_09qIEVR=i!fY#k)BT`@r6)Z8z|bDM-Pu^_Yd!u0qjuuC&kcQv(@4H-E<0#l83=(u zJ8ocg=l%cUoPsa~iem>_QjB#kjRV&PAMdf&->6+ZG1rr}Q8KTDHtRCZ1kh%(70(Jj zQ(2;h;b<7nD_E?`>;rL~=8#bpl>)2lk!P^;lF@9c!HT!fXyVaxG0-okCAYI1!#)Tf z{_{K&-LPLS%qIR!I%czpl1U3z{M?)UofCkJKF{_lacG*xcyd(IO528hGBS=p6`|J? zDxEzRP~76cLM&ohkM9i$n*Ol7+km5hw|9?xe&XWBmsy3WGlG|v z2LGJ(>J)g|u~S#fdcvqMoJ@oZd*Wy)PP~0tnKGnkP8dW8Dj+AvZaYk{y)*Wt-g;NI zvrF<^922^fwv-I6*W9kGdKk>(tm4mEYn{y8E~NVf`K{?7qekUSx>U4hsrqtC`N|`E z!rM4E4}pPpXJ5Y#>MmhhNAC9tUCHJdp#rCx@<5zQWc18Rt=vu)>5QO-etjf22%old97s3>j!oz%y#?yEql z23KlG^re2QejVH=IeNrar@(3)KxZjYabfwQz}(0AUt+JGYPR3*)GfaCE627BWyJzn zvXw52BWm(*y*m-L5e2fOBfB~8|M2QSR`#tFDllhKaFJ1b&8AMNmpfxBbm)`r<+rXX z^Lk|W`)rcTnFMRq?Kl-|7Bmeu1kcOR**@uCe5}M#m~R5V|FHSbv1@@4LLWl5Ivp$X zF>qhd2xPPdru@fOzp|ZMmO=!UlcS5>I4Ko^fPRAB-(mH|21&jxJRtP#WAp^^IQ!B0 z*-3W*nBa-s-o*(W=e59roi9GRv1WrwsKy^=Lm2yNapnrx@jrf6<^Q^dag3atd;Ras zk34>L+}2AD?ibj4V$JO}CtqGWH@J0)_shAiYZy?eX(R8yi+Y##>O;|v4c(!5WQ}{B zb?4gJ`49Z8lQjd5vMvg+-Tz|BH(ktMLtVjk6u^MJAh2I4E*&ng;ya_x^ta9$j@LI3_&b8(2U!D3k3ILwCy`|fjdGWWWS!^tBH z_i@nz;aX7_ZuUOh@|bv7v@PBlplZ`Em)Idg9dx0d@qrn1{$B^xz-b!^ zY3UEAQWze0w>*2&^6WjZW!Th3EWjK!3<%%L83*tPO9!po&|+B2c^O$_pg~xDBrr1m z$k{t3WFsZ~(a^N0Sy$A=wgS7iY#`pndRt#f3P$?cmJEsAb*7+ox1U#;nB&^7^+TU_XSyvN}2ahAr@H(|L~u#H`$Vpqx#G`jl~GWL{X1 zMkrMzp8X$xz=&kEW#z*++nUL&%QzL-tqWPsUQM+CQ9U?qAle@Ii7J&LjhVS%qs?w6Lpb zy*ip%)X-ctrfPbVqbYwz!XSz)9M?8X3w@l`k|ZQFjU;wQOlxS^s9no!%SKUni=F+; zI?f-u{fHN_Eihy^$2}G$hj5%yU^2Q`zZV;EAW1*Lo(yak>l!y{j^kU;`gg9qNuRLw zQml??1G2|6mmd#1@W7|U+qaf+gC<^8$J{UVj<Ka^)E~^%7Ddg=+YN*^mS~P9`QBzh zrTm{`7mV*IOuqL*(}FQ|QS!92#|TC*S7gLv5nz80~ z!6jE=0$X){T|QeqQHRqT8UDn^gGxxxeBb1f5%7f2@@JQRTQ8VIGtB<|<1On>z5;3K za{1>Mbx{|`SER@Grg>DG$MBi21*twB_>5%&@gQOynGi4AZY|FdtiM(tahbmma!Hap zuancy%!o?>23o$|>3UJ}bMMxZ@H&*RG)*hlSiyQ zSdPX6DJDnRpPpf2@kAXC`$3ogL))9c^_aE)<3?i{BpNiD7AZ@itY4&LnJAfT(V%6< zI>tOkl$4YnlC_N{o4HVnpQw#obK}q4f-qj}L@k->e&a21rX*t@*``tsp9e!wrk$_|| zM=4?`&1WAG9G^4S-1oar-Lh506p32`yNIjHwx13=W$YATsW{sNz7ZFgg=GReWg)(#iNal{8}05qG>-z0kT8crwhb2} zx=t%ATn>r;8YE^S(~L}dFRMNIxDLYolHnU~m@6tl`y&(KJj-PNYXz~J)+lojwIu3B za(XUYhDisY#A|NE>NtM4G)w86@SawSpcX9Ka`r{tm#NjjS60nRGyJzCP-=L!Vx@4i zI=8d=SLezidLb{#5y_Uyd!Booz2}L`*F&+sb#>B&gB?D0yNoyP2gX^)cRAKNFbdAy zJrv3_3%tF~-YA$n@WzOgg^2?e_B%tS68*Zb&LmpS%dbQ%k$)-9OJQq=OWjD@ zwIR~{-wzzZnX+reTJpQpUK?;Q>JZK!-kg~f21Z_auW_lHHEAg1|MN4r+0e-<(}_vZ z8wvtzGp|%mMW_O?4h<{6GSLY^p#I_OvcIa%^fxvlz38X0L;Zr5-_I|KDVqlSfY^Zk zTWy5xpW^w}d32oTWRjl@uNBqCeGwH935m~%YIx*n7PQFbKhU!t{(xWX+!Al0~5!LOnMVKAU8XBT$V+BwoiSwQ6al7 zai>nJH_Egf`YOA$KFYVg!e`-u48kgUSE8(aZurKKlKjwqK9k?y=LMO%OVtEX09=4SFtzk zLC4YLrHgZ4R6F+aLT$hAqkgFzwI$Q)h}+Gd+3CM`3)j2Z_T3;Oj&T_lbLPe{;z5^> zC`2yy@(1T(5@vpyT~vaoiHIlQD2xL=moZ(quEytqHO}tOl~5y0TJW`Td417#J+}P( z$m=9`i!I+VZYT9KW^A%Dwtvvlk4a%B`@CWqcv$JPw*#05S}(dxh>*qpYH7pvP9$S^ z-2V2=w>5+ks{etu(v4?pMz)}khbwFYiw4fbsUkSy7m@K7K2n$iHW0d#4ntBoKRjtj z<_tsFkQjBqyV&%^SjA4CkayGhfCOQ;XCM@P=!6sOjP?(h1t5INN3%C*U4aEw->Ji~ z)_$$r7;>_f=wV&T?V?&s$1Hlu^~adbu0Ss8cB+0~%Dig98DHpPTOWD4#*FPD27OREPOmcCqh@H^!d#Ko|KH@#n&2Fd@G&DI zZ*g^!bW2zJJC7OdS8q%=3(kyckmOviteT@6B8Uw3TOZJ&|6J+>CikzWKQ#n49q7_} zWu_cl^ifB~AQvsUd0<>UB;d!L{`~YNZZ%BzO5$Xr!oWuZwj$iX zG-$5Fs>U(#q=#Zcjz;_!QK&WYXmOzPq1%iqY}3Nff7PPpm{bn=@9Vzwx79zr;|0;E9!GL+|HGgjN8(aK-#=Ue-RAEHDmVEqtLS(&aLsShheN7l@`u9Y< z!pzn`ZZ@~q+P#A*rXZt$8A8~ToIG~KGvWvItf)G0xd*%dNrb^?H%sC%fmJ|wRw3(8 z95kkl7EabxKU`k?$T8)Ls%sDvP)U8S+^Fzh8K3SQyF0>aUupg9P)4rNis$bs zFSV3 z_4RpaYcZmq2Zcgp?0gr$r+ED5ooSMp^eXnHN$GTfV&bG(IuZqY;Bif$T%hwhPDL}? zRzmraI2m#!>0u7e3>~^BbJwX{Yn%`^GA!`*c!XsIgMt^Dq?W=GL$&whlIues7j`>~ zYgsV=Yvbt)d-(;yXyV`T`;Witv?(6P2n*y>%lWv)wW|j&q?zSs(gmF~AU}E|TuD%4 zSvwm?#rS_h!l3{$Adik?V1CfjhFmk1`GZg=-re&wtU|A(pH;M)y+y0ss`UW8tfdeA z4u3RdQt`@T{)`2LQo*JYDtugmTt`*Lc)-jrUoPcF5>eafQ5rY+?Dj30m53CU>%Klb zAHB3-&D-c3o=Ri{}QTNDJE@W5L{lpGaeJ-%pqJ|(6 z8d_IqgaFuW?SukA)7s8#7ajdjUJnZ#Cy(y(t0TEcVjz z!Fsp-hTMcn*o9sWmR1(kl3qmO>v*0pD%yVLGp?0kYh9t#s2)7K7IShIcG z%pRs?VOO}VjkBDLsQ@!bP5^wA#7*QgHzv61q*;bu`D2)U=9O;G>as~8r(bv`!+7xD zQ?rH*ZnHL^8je$hP~0N0@lo5NX;>`58es6?f0%a;Et7b6lSSd`y|fhsiDW@x^vtSD z7ab^wmv(f!E|G5?t4Gz`v)=*R8!E=_Qd(^|cE|ffS^_*bxQUf8adw7LAR?}fBGw$U zOdoB6S5L4ybFwFP8vE<~Wm74puF#{!{@f`GXHs`Gb}m<+@!mJtO+W9d)&Y8(Dk0{j ze5*G_U9|kmr%J3kiJWbj7Ux~Xtt~nO*7y|O!2z?=qe!O9H$>dC)H`7qy<_c}1yNBM z#Q&zU?S?XNKnJI#xYbz@itw1kbvL0jKu_~$9JC~v+AekuVXT0wD&*pS(RQt_K5=PW zsDQTnPCA#g@dc^HML=5RKE+m@pVl2Zw43-NllG)>VT$DlFM~!3XUrPF)Wr>h%bV|V zAxK^1s3;$?30imFL}T}khl=TSz4I!Q(sKjsRu;aV!_1NlbGQynr)zY6qf>C=4OF6*DQ@DHjN0V-`yJU>h0FE`&d*?=US(yoGbKzQISO+;M$Me z!&V5{;9a;M>PBI81vIcN)Y!LZ(9Gle(`K8`NhJpjfkX|&ZDX=Ld`gK`+^RFZ1?9D( zdqmZh0r|?<4ZhRd$F(AR5qn`*o<7Ro^x%{GI$bt2Ft-e1qN6WD!Y|a&SW))lgwDp`-IBCWS|bLI~+NFI0sF4CA4Egh5wHj2srxWxsnG zqWPt7x4x!2-D16quPP3Ag7sKl@xE=S;o_CTt^YK}IcSZa|LY-r$&)AKVSV3AW@qy& z7lsb0z$HW-({d718vdr#=+oAJcJ%Y(S{8QNbWC9gGlDHu==xskYajns7^sZmw!|J? z`u_V%t<>b<%zSueO~4cVrL`S#?~FX08||Iev!S)H+kA%fFUWwP-iXg9mI`AMRU5+T zHv31qM*eWCFzn!@m@j?4-nY4(q$(!t=5yzUzyxigBGM|k7HT}M3(kzBwWH36V&c$o zgK`<;D)vCR&!{HOC^IU*V~yI)Vmixa8dwZ|L4qLcV(Kjl+8klHDKPM-Gc0C4?&voP zmL;!!G123Llrmm~>qyv(y4+T*QUWYP(m>1i2v9D1AN@MLJtL z_@}`mXgytjT7TQyjl`AFp@%F`5L|ZoVdv`e`uBs^oir*=Mc?6C2&yN+Ee1{JX{FS{kIc57SJ0Qq#~4P&2ZRTWZB0?m0Gu*L3ESlT9mnhoseCtXF`$ zA&i7|?I7ZzQ{YP|uo$q`h|7>0Idck$Q>em-Ds;kM9X@^*EZpj0zRz=`KN(vlBa+ci zKQ~Cz{W2E(+`gag8JE>hE%y=WWWU4X|4F*T`l93v-#egq;Hm6Zk|xc)E@y5imXI9` zF4dA!4P)Sv>v1N((H21if1&>w_&Kt@0q3jJXAM)_@WFv8IdE~sS{!nI*MlPg8DeMr z-mU#9dMCIh_&j0F5aICtdGe z{;u51LcEcQ4WMeDR{{jBc;m`@3YY^KO<2-i(&2%UM6GH#^Akd)s9-_CaltBvD>PIM zOMcwU#2INk!i6D&{X3J{<*?z@!zq!f|Er&}eV4#!Qpj?(A(s4DPTYfRi03z1Gy+rd zkhBbHb>_e=Qw`4VH|vN!mcf}+%9JQzd7!U^eSlpo*yMCC(@oiLKPuqjaZYSf!7|yG>uQ# zP);v5m}4ySPZ}g>oMF}_O2Qn#7^4Z@BjSqF0+7c1H~d#n%k{f7j())eYwiT^`yPsN zDCl}9xRG!I#rucq^33~VFPQzWm#^Rwu%xhuVAdxmM&c{WH?n&cenKP=!%K-qC}7gS zM-ZCf(YZdLh^c6U;`cGdg2V@h{hM`tjyaIxrUaG=-hD%` zKOrW^!8w;^As)_vS$VeL@Omh8F8`Ru5NyTWCrm6JIk9zcd>9k1T;I( zw^!J~uJptmy8xdw)(_)Mz-iy;HjfRAATcHd#hs`#yUiQP{B@O|tBuR#>VO=L>~ONckP9~4}05DFesOa>IVg>w*(XTY?B z-yzzx?$AJQN`=}C1-(toX%)~(ZT2}Tcpe|eIRaGb1)~FsS|_lHpr8&OvnVJ^W{Zx2 zoX1>IaCtoeL6G#giG3H*EJgkg&q(TT_ZrIx&|`QZ!c%oF0~XZ4{^Ry+VQ5eItHG#Q z3jZ8LxVS}oaMbJ93>{b9C3pYm<453nC|;GZ`W)`am-g_B7JC`_a?ykIhv7imb4N%q3CiiF6&-L%wAlJ9O5L&k9 zV?(BTg75H!;{H%FsjBUF9!Rb5EQG1<(hC?&^2ub)$1fZyh*dLu18MGEZh0A&3Z6(e ztnA@Z!2d<65Ua_EB*g#4ucYFzuY`Z;TPYYO{x5wa2VDLy!KCkRDOQH?A6Aky4ko)B z>|bi}E*|3({zJcifZ3S;OWs>MdUMPn_#_2jSuY{m7IdUHtD7ckQ$- zP&nl{ZxnBghxOeSz||8Hh|Bk3@NG5#<8 zxBXT)VGIAk@BhL#QcXWF*!V(c(8pO@W3N ze}W<^J#@(=$Q)R@+-FWvaq$#X37BS5%gll%2pkh{3#Mf~IhR^glV54Tr`<`bQ0E+8 z<&bs;nO=ygp;Rv7G5Uxo3mYCjD~`O!GRg0FB}E32=#eK1%~B^2up+Lk8tL9>NS|zs^|4k z%!_pClcZ}i&fO2fu|_;_lNeKNh>z<+J*@nkJ@0_tK&?|h)l_OfFSA@l;;(;5U`aIe`rS7HtqYs9eO@jnf;pGGYb0i@fzO?qqNtM-a;9ST4-qX4h)ZTjGRRrQy znK$iY?QHr%E1_%m4pA3DA)gYwsad=5uk%5rBZj0`&*t39YBr)jBNRV~;iH&0%L$W~tdE?Z0V$Zd-6(0)T$)_KHBY1d?B zw1FglQAhbxzAu=rq|8}(QYDrR0DohCxpIq1U6p^@$gqbg-z>3G`WYqIn&QOq4@s}; zLVoCVIymLdS{^42{0RRtD&JyT^wF9zmjlllbRL#}wV>mzLG&7f4b9MftIe(6!RCXe z%oRr_E0Pb4BF+xJO--5>pYwDjO}69rB- zU)I$de+%9IX}z?}!tX4PfeO-P`4|4{6qgn!|kN=5=I6xY$&K2 zP}19Q0+9#Ti|inz)mRhhfQO5{jn4h`gv!XOK)4z(E4=D}l2)sO(b!>BiPpDsJz+3t z&zPRz?C@WQt=$w@*9RRL38E_e7|~zy7~N9z^F|Q^RX=~4`;4iAw-nuZrCg3|HJWRX zFy*JYdzNi@d+CZIF+Th2^N4Px9&qr#`Uxos|NpO=e7JIBfT}6%D9W$Mp_uXFB+h;G zvZgik9CJ42{`Q|o@c}^DwQkSKb926<(1)tgi483GT((Ksf#8fnzr!ClTV2(#xxZQh z=6UM>(MG5`MNWd2{{Md)g}@o||Ioi8xGhDE_r`OFY+5Z>8-Dixw`!{OXz?%kX17?W z(TA4jqJE~tdX16i@wYc**wbRIfBx^*MUIIgtfrgsSPrexeAv&Ho2ubDZTWwwzbD~d zGt+B2q&*33D%S<3c)Opxx?=u^@JN0<{+GjSshTkKJ@V7uQr(~Csx8`oS*`J=t98kb zPsIR%%1*wTs_C^P9_-+{@u?1N2(b`M3JAN>=RW4t-^XXcPu+Lv3 zZfm2`nlk$fv@yK+qXDipM*r^bpMPoG3Z80`KuD!X0HSD{hzx4yKWm?KUBlYuvYS76 zg@7||!Ozd=S6ry2R5<5%_pTjrfw-^@k#X<4eANwC-T5shVRc>`{4UiZ+CyK8@Qr^$ z+Jb2dg69GSpxxJo@hynI?()qTs_?7AsR#RyMu=&W)3AY+ltTYGRvioG^4v3KTxFa$}zh z>&8T$svM>B>84~T&}E;{q$1!B96EKDuY^7y&qOf|sjZSn2k#BInWjV_NAGLrm3p!9<0Q{>6+f{pMmV9P@g|kaVK@DpbdwP#JAS8$gKy2-{fFxpUTgZz0MiUzbmOXBA)%a1KHg(S`(3AOx8~Y9 zE%nyEzNRyU77%;#)k;nmAyf7Hkxx=A4t41}ce{4t_G1~P@R8E%0NoSSPjSA01c{^f zRCq?T_UsR9jIx9MyTU1D3Y}&;7?~35?2WJqLB5yX4hgKq_HWlVLX_iH6Wwx`A;$S_ zJA<4*4$f69Z2cB->M>8YM@XmZt7T*H-SiH=T0bC2{}QAjz&BoOe(54Y5y#u^$)cp5 z^ocV2{pZg(3P+H9VlJHt{DA<|;A$z8$*|iG`#Ua3n*T@ctPOM^G?%^p>eoB)x9jMM z4(Q07Z-2xh0)JC9nDgy*BC3YXRUDa*=0cDY#E$+hFaLc$%$2Ohe^Z-!r2k<&6j~aA zpZ^+^)ipN{i}Tl@(k&}0z$amHto*>;F1_SY+LoPA4CG zIlcSg2}18v{{&dQg+gI=bmQLk2Nr!9yw{@=RGR9Iz7)6gK)T%nuOY4`rxBg?(C*P& zk;JuU|BXHDZQ$^8gF=WO+`E1Dql7&<6GL@3kF}ZxA^fP()a9l*BWV`&?Pslk%-3)1 zZghJ;-7NY*!CMw9oj!EGu2r)+D$lh3ok?NT(9^LlPboL1)NxF!hQ4{e#}oFHECobh3En5%L`pVtqLjCd0Si zuw|fu7S3LD@K8as<2-p~_wlLmy)|YhBE4G=)9oIor$zXivUQ<_))^H^jlUyG)_XCs ziP~pb#L~v`X#dxju~Z#A-5-T?SETV0pzt)6FvV0$m%-l8wPb53>~lG`>8 z7dpqT!t!-fC_4ks)6sEnu8%kFpnAB~&rBSu{Avc8Spc+bAR&oxByK2xCUf68R_t0Te9z+E_^ z))O;0xeu55cE>kb-xY2t2y$oyR^MLX9e|MF9lUot6Y_mCDJj*pr{BP&^wCa8MO$c{ z^cGi8Ca5VJg;bsL4P;Ob=*}g`RfkFa&~&v<7U+(K6E%{-4x;RZ#s{EuxFM02Jv}Wv z1oFezA-^Gfn108E(wwZhbzh$Qs@O7<=llYyPeN~TS+OS>F0=hzZTD>O`Z{gz*eKnc z#3W)%XZ5_k;^6l0l;gM0{1+%Chgn&BpPgvh%^Q?1I^Vv-V2ZS(TGC;g1G?76c3QMU zXMdXE%^hpK{1IlLIO0m|uPoIR=n4nL>rF*g%^w~U{)IqdjJCSMO{0TYRz>RR?@i$(WG z;hzofGCa9|*Ea*D`UeYiwsic=C_6vo&E4BsSZw&;{zVhw(@Y7yUw*QZ)KAF9nlS#a zm;ZnPjV(ESxqo#kOSAOof24Iu44Klv8vxVRKi?gj-zwp312scW0sH<4afmP7QZrJ& z8kumhFE2ZrH9YXruy%RjG-=i1*WcZpBTj@8(ffMrv|s)n+0~gKZ8*LA z$=S(M^=_4~GwfC~GC_&_gpA?`BQ5W%yqtWheB+7Nr^|Z{@a$7d@Q??NUy_XX-M1O3 zTVGEM|J;AY-D0+t>J$wgr9V6)tqm?gIIzR9wbDEiG}iQp&L6C!g0!65*r+k-NLe`Z zRPZwoo_p%ZV^>eNNh9q3&8}2grFDT?SM!mvmhOav#8*i>z6<-Bt;rx{p13sso__bg ztQX`BWZ5q$kHx+}mr$OHACQ&e&tkhlnyZJbdoZeRVa=AUFLTy*ob|;&e4Kmxo;S$& z{@33xug5L0ks^SPO%|P=Z@Xxv9;E}!i=^d=XRN;nYBHzy=*UxhWZ(|A0I3! zeY&gsZgBEaxP|iqw_aKTV1ya@Z9wQyq57n_L){K;_pu%(0odSfn>8)|(C(hy?8_8B zuTq{4OT?QMN(ONMWdAm=7Pw_j%@Sd;AY4bCXQU6O$l&be$Mev*;=N4YDU4o!{iV+K zHrjoa!tmMeO`Pi8!Kp+T?@NO}2h2(re)JmfI=*ZyIL(Amyw)g6L`r8qw}z)SjjPU@P%PVLVQN}Uny?_k818QkEejPETpWYEOlm8c4mP?^2^3dP03sO= z+9vOAEv|+Lt=W$R_Iz*i2!H1(m%5299P?J#LJc0b+t<`U*aiS;QbuhxLkeL`h^&KG zvryA9Pgn1LB2u}&kFOjh>_1vJEu`l9VMxE8G5di*wl#dlbR`g$y^w@y|H)(4C)ORQ zsT!dI)BFc%77?u}lklYKA&sVD(q^o?-HM$>3mea;$p-=@;YqURk&WAOvEsr2uYB^ES-L4K&Ch;74&95Hv|0FadpSlvG-)9)D{6a8=-NtA0@Db zxf=m){wqN~@2Hp%K#2xz%m-z5G*O+` z75lFR)tfO3-@F4lb`VAwxg_*%{);qDc!th??omB5TOcUXo+X~VnP2q731Q%>)l@Gh zIQr{@OzJ!l8McG!uvoq$9YoxYh23R`rD-8G*L=6V7ftDMR-Lp;x>Y(z^zG&E7yDkd zI86&>&68Q~6!sdugX)xsO(?^PK?a^|9O))v4`%d%uPVr|{Pw3UYj2$J&)`g9C?ExF zc;s<-zssamZM33Af+YcM<{N=L-+9|}B=&#+Y3o1yrE9;!chZzs=y$udjI56d+iJhP zljxWwUbD1`Eqx=HlP)-9F=ZP#hKiHoz3rH{V`Wr~yXPxQ$}F4b+*3vIn*Ttc7=MA$@iKE+*bZy~K&t4qb3e~gJX@4Fkh_I29yV#L6Q#bLD)j8+b3=o0SP{`T^(PURTARRL<@3qhN-AQLC2 z?L{-BnE|(yFG1UpdH~0#ljm$CS^@7ZUaDBF7QPTPfxe^u@iHnPx6CQ+?ITE-RY zhwhDuUQ}p}O!K<_J}|=PsrIGikJ3;Jsaf2izmJvf#gjn^EXRDB1y{Hsz?ceb%O7*z zo*Xm1B%;cANRpGZH^}(r;I5GkL%Mc~L!aM-|yJ8FlVn@~IPk{rHeB~2k9~i5{pNXVGvbCT8qg-M#_-Qy>!cX#yPTDDoC-@(I6tw%5NMyop} z!fsN(ys76t*;(40U?HIz8}afz?^Sz=MyJ0i?I`UBTd3eg5{mFO z@`B%<>`0V6G}_nDELuR z&Cx-Ou?Un0hi3>T{= z($%865?S|;aRg;$y!UH#0%h_s_1@kaCr}1a)w-XD(21<^YHb;M^0vR*i}wVYCU&0E zhy)iORHMMBH^R0m!yVaJcF;P1*Gs)c@j+a|GKH)`i(3|@p9K9?Z#u0DR&Fy2w>o>mNRMB9y) zWqQ@Mu*s zC$)M)R=kWY8Z-SxZ)u9Wr`gbpsqjsE>!l->L93G31Z5 zMm%Eimi362E^GvvoHqXZj5?2a_eanZGZ88u7m#AcX>sVZ1ZU~u7H3S`)7A*?sbbfx z(ef@4s+Fal#@op@L&P-%bQA`|djj4V_LEp}>WZ*!-xg8#%eLrMcl&oQ_QywQiKV>l z4!7_a7TEQ!h>O&Iu&-@|zfVE&i;1GpCBeAf?dxyVC(1xf{b;i&gh>E~wE66jYRhr| z$Mlm{Ug+J`G)z>prd0@&trLxGe!FdD>SQU=i`?f$qKGyn4+HbYs1cpu%hF zW^k=aYe3@)6P@tug&p9{Zp|VUU9wxgh^f@pWZG=*nJ;SO*~CWR_`-=_y}gr0)8^AP zo3u_08S9K!1@eyg7Q9;BCqfM@`agX*Gt!Q~1`u(P7Aj@NgB5!H` z)%`?y(DR4QvCZ)rp##pi{@ek&Z@EM%u)&r#aj9#9%iI{IC44Y zW>{<)Y>8>*>xjTlv_ly8=x+X-Cm#{{cwtL4$}{OP2FAUAqGIXVMN>pBn60bU6&oEa zHx0aVP_!c4RFn(UU@NDH)}}^4<5OjrcKWag?XtEU*H$Ytj3cVAIIxW)zOPzI_O&@7E13lx|jvY`47 zkuX4ycSOdDwu6KLg#0snEWo4Y#M@dd4jaCxEFc(WPx(AFh|8VX)_&sO_1<nL1g5E=pG>?w(-pq-Q?{ zl)6kjrPvl`^lb7$0(Iu0mqF(Z{i4Jz5+E%&U2LV-YMQxtjf#L8mrHO;jS~uHq#&)f zh%@4lCa=moyqPkH3#4C!^tkZ{4l2&{(3EM??ahG9`XW-r6!7M1MbuF9-MAqzxVrX= z6IPilH-QVl+FTsxB3x8x+N6xyQmTuHYn$p-tgmApCK6~8^hupcrbO$eg+Qyswq4y1 zKv~jQZM3{g#f!aaIwm?|<5Q!S_EpnS$v_BO|^)+jzRLG{frA%T@3Ff3u_F*yZ%URT8MdQ#$8Z}C;Bpz)gT?cIX zq(ENw_mKzSVHYsfPtGXiVl_^3~4VJ614${D{o)Tb54LSDg5%Gs_ zIcv@G_HCRi+j<6qy(QILA|fIIx?2FEk{RULy{CUfxkwo~r1hZVN*6n%T zO_BzL%!FM3iCQV}Hqi{Z%8wy_7vA?=U4VEL#t2uTDcAS5?HW_Dp%a(uk$tNpEK zk6F{8kjYhqa|LaynS)z%@B|*C8F&fft?xI1ml(p9tl-sbab4u|3~>{eQMFp5eY=Y{ z1kLZtp2l=@hdSLHd_cwggWiXQ4mL#7*|?O-kD$yctJnj96+uGl78RNJ#X zOx>|bUDr@-cgIfRGpUX75M!0nux_=_gTcbZ!ERr8EoLTiH`p79NcvS9k!=I}0J~kZ zH~011=_B`-AvU7Lk8D`A!7v=mQM;mwZw8Q}UUoyBHf}JI8$76GqSnuilr4$xyC4>T zO50LWI`LaI8Xa;UMlAIcHOf^@pLsgpQ)RS3FJro_e=6A@*zRcD!xM42#Q(+98c9x| zadpERHXH7?Tw=dhOQoPeFjl1Lx+XZ{c7hd8~ zW&I9oO;6ozPT(DvYE^%4ze#xqd)8yde&M{|^Xd6@Z1LESdt6U`Ut=Pk8(FE2s3Yrz z9QNxV@)uAUSPAwS9a2E5%(K*bK53?9Wvn&RPRq@^Xw5a$GKenQMj!`?>sF=n z&iE)?e0cD8&u8!FXLIY;X&XfS4GbBCbl7JT-?WQBmE@TbK}-|n%kT<;V^z6jq@=VcAs339w|E;!^?Oy0#ieRNGP zTUC~pnbcRAk@~5J0*gAvyaY<3`3km{`C0X>bC9D8XB*fuHEI9gcv|7?-Ei9;q`*q= zba)RI48hXx{_UY_TA%f&k=vx9m$uEstvg>T-0Nm*nzU|=#*o~UY4KB@Gq_>{_HB31 zEs#(n+?uxHUzmfJ4x2l<#K-I2DyluW0GfjNNOix)t+kiU*^@4{W&^-5Zx8u#2z!hg z)jKPN^@MPohbmH#-odBBVMaPHb1|FVHN!TdH^hO0wxPOxb=fvbrAI$Cd}RoA-u=n>q?HBfT`D|DY0#{M|iy7PKep}%hwg4*NnnlNYYwk37J zYY^!|M1Z1NJ#9GVFFe1QFa#LE3N)TYZ-@2>CDeK6=-h4>5aL(2E%br#jRGhjUZ7Iv zO;$N~k!9=N`ICK(T$+H-Ce=zPASHh#sH;%;58r38tsh+Z9=>cg>-r__1H;OiH9 zAZNiHaCo|ve&kZ#C7QYFbJW>j`*mwH71h3HQOz*aYrcdO0|H^p^e(gF}?A( z!cn1z-|cZuXn)-99lQ?d?IL53F!BQdbmWRI#vfZ%XSZ3Vtvs(l9GQy^hYl~k9g;b-$$A#wpsi)MZmPl<*2|*5{Ist<@R0N0&s<5BdT%3 z3Mp6j@Z%43O_nO{qhv|mgFPSv~f(au$*_p>Xz;& zpF&BkDg|*X@V}^F(4kv6v)S;d!Z{(Ul;IV+(_C;-ZCUYKnlfTp8M6L)Jy!n9nz2_T z_zNy3PI&0^qz-X`x3ZJLD;h8L!aF0^hA?l_1rAwdGo39?z|uCKAF&18pKTETg?Wsh zirj(H_+Gx7_oCO4#8+1JkLhud*wydV=U#o=v(jXFfd;ItNa4E8`@SeXJ@CvaDf4VkfTT+?t?MaI89HS-70yqP?5(yU}wv zy&%OAkht_5aq_@U5!fZ>BFK>;B>7=Kdz+2D3$3k0>^wbP({R!+eCI7w3@=`jK4fNJ z#q(YrM7zp0?7XD6dikFSoFEpK7Z2(C_Igq2lK0chkP&Kd1Av=n2!4tfh8OR~Q z5T39mPIS=(0*Y8v4WZA1v=#IDRAA3??z_($Cy2IzVE{NBgx<=n?j|6hc)_M;Ag2~v zBdMhHlfSZ`Ix!5F%Gl+Y0=2?CViMWSOU&EbZ@1aC)nrxY7I>5%{oJ3zkuhYXKz=qB zG%1_M6u=p>1x73@)$`ME<#&dx&;=Km_QGBUz z5U9xW><%B@^6tNN^if?zVtL_Zku-{pDKlB^$%l2)U1Ltppc4Mmof(t_p;zeOcZZuN z6Sow_#KXxP9!LDjWQ9a;hCdtdeF3~l*Nb#ns?Oz@)9)Gepb2LHkg)0Wllt*t&Z#2M zoyI4M2QGHIHY^l>ypl*IFDClG?27Xr=CD%oD>4MN=votrCIR&L!V4$eR3y8sss7UD zLFzA+VDdA;c7+2aZ67DaDyZb|%&GaH+$f(>nH>z~| zlN6DJmvp$5EbagiJvKO+LTQIv>Nk-qcZX&7`yk)z{MrXcLfRqF8^SBGbd2FM5wCa= z8@+HZ5^!_!9};(fhH1-uYxyw2dpe}eC2Wj1Cu>72nLu{LjVGooHebZd)BT7mTYkR` zVXQAaTq;sg6vwanhwpPO_&#$sl?o8X;9}@L#zxWkKzvRWwT>eXT%u)SKh=xKWsy&E z=d?+Tbsh8FT11+F0vwx3GOFn;9&rmPmsMfo2MP^`p0~*wBfb&D4Oe zh>5j`u)kLu4J6(>c!lq%h=lR+3>ey?oJnlLNy5)N5Nud0K*3L8lB}v<4`K!;j2yI3+ z1`^&$yMFfWYtp_^gxAnT#P^U}2_oUn(<&^o!!cvels(hn9eRsw;rvCR#q^^o+lo5urZ_c_=~(}q4GimRQj*?;)^|!m9D1M zGZ|0i+(G9ZJPSRR`MC9ZYa4t`OFMBqa|WER2#%TaXAKt}5fpYQ_m~-qm#=IPR0Q^B z)%KZlPLt#CAVtB(F@CM;6WEPFUztyb^X4zu_DcoX7kPUkWg#8y-{m3$Qi$s%f87ag z^SEA%ec7~a_(1<9B?0MEFQr<*WWZ^kEhtBktnu+;UI z9U{H5sd-NgidwZZ_w{9N(c-!_MfV_XfElEis(A6PaJE}YR#frwLa|P_M3`=@Yt1N6 z%A=~AhIk$VE@Q~}uc^b0zDLHi;c_w3IG^+^Z0$BVw!yZbqM+}vTuvqGZX3JG>p9*% z5fz@o7T*T}U!HXDcI#(R9LWvvHaWR5ex;g-3Duj&sxQx4efQPR9cBrfBosz#+Ssmo z1m}-ZOM6afP&P;R;>mr_XEGcj1L%zOte)^RiC^V+iA!VVmld)77Z(oHZ}(MU)`;#Q z20o5?6iL^26!&;Rsu+1Q1d7mA(JKCBZo0|!`Q?ctKZ?Y=a!@q(_gt<8i`us6^l(p|8T+e7M20_Dc=NV1d@ar+`>$i{{?DDB zE6f+if8)40tn1xGhIQtbPb%*#e*NhhyZcX-6xDJyHa&Y~D)3qUlMw`;$&Q!^>A#~g z{&)%rg`Gje{(bMg^YNE9$fWwSH*X@py_2$ZWDrw2m+M#myhfk=I4pUDWTFqgFpGnI z2tU`KaimbR&+>nLd5zEWP8$LmR?=mbGvmQYg96`04M{r|eeBK%H7oK_4*3Lcpr4=m z(&oBhbp*M)rm-b}o^g!H2nkQdml<*;uC(4n1>w7Swqf*EJcDIzBJk05_g71a+A5I_ zl@&%k^m_Si`zsV>D9Q5(9NGA_CNG_1$PAmfFXg32*!vs80_WcKvyB5c1!UV@xa)3f z%GQ}}H+a6q`_n|DGK>lXki*hHQpK5A*XMY?xo1~2PbB9j?z4-`_$@ zi@klAA0Vh|=+`8Ac|9+*fxM?UUt4la;q8+erE71!Imxe2Tw24wxG1@=;%M#I^3ZcH zm|G4f*Wea*B8k1>a%lAY+B3mgcfzDGQv{w1Binh-mHWX^bJC>lIu!}SA-TX{JwRiQ z7%dw9ki2Dleh7%%_3;sg#Q@S#^tHihp@H6b6j4I@8=)nzDBPfd?QGbX8tUwO0D6`GW;TiN+mO5+N$ z=F!`KI9R3k=&H9JIW97utn=2kt>0=1Km3N0$B}nHzlyX-_FNelh+wf#pT-Q?N`58y z2@JVGxwqX~dsuTXM--a-8Wrk%`tjzGexJR+9AG|$+f|eu`Wf!bZ77~fZX}q`n|llB zUH9>{u&DUdGw*dqdoo$;wORci*CyY>RqQQG5B|%Ya+DKU z1+43McHn0obMmI@MtF1YfJ0fJveSlsIya$hVzxcnwB3KEX^Bh#1}+>o4*#P0k?|=U zB)T)aoIjWS0%~db@4FT>Z;_Z?Of*K6qTG;Rt*@XT4ZGmfVM}}t z2!GE5ef_xF|3gN%w##OL4 zDl~Jd-itrs!8-EX7lzdn1UBeR&aeT$U77OCtG*~i!nWRG7iJBv9nckSspl0dhIVI0v5-X`*R-~4bH#s$@#QWZA4D@wwu7cwPJDk@(=qb8 z+lL=gv?}%^qWU(X@@H4Iezx^Ed7@(_;(9j-!B7S%Y%5YODPoy8qkP@9;RFSE2p{&M zl-nlLk0lafh=S7F_Cli%Vjl2S;+M?{J@B;3$4C=_PS<%v@0Z(b{XF?r@7j z*OXVldLL}CR(`DxloyQs#hD%_V9d!VUF45Z+!z#>Lmt*Ps~BtM;G_x zz~h18?2HB8h0DtwOv|%+ik}%e__}7YuzQIEdRwz~11Z*Yj~|9WTTRRbLV3!aJ>vC( zl3ytVm$RKe%Y>}b7lYMKu$#&EoG!@HDaWJo+T;oH5;&jXxF~Qd|%Wra7MJPnN47!bw zSz}bw*BeB}@S(Za7RWb+FD<=`K(-MK&#zCt3F!XW{)<(kQpH{Ej|3T5y*H zw^Mj;zxj1m7lXKrQ0v5iY+Xd9mUkonTZ)QjTcCP<&^7bk6&$4VEXZ5a6eF^7dFB!Q z^&`*B!OK*{aOkz{=97lbh}DMVjbdrKyikmy$0x0Kc>;Xb$*ThyC^s5yGCXQe-Q~`qqT3W12SvVhZ=qa!L!Nv!0eIo21t7zUO zr`rrTO%GB~q&qr$J_!YnOj=O-R44`cQ6>68S{9=?I{y;1}^-^@4vk3a%ZTWpU;wC zrv@FKybBQ`*{ZYDE#zi}L}ZOI$LWZ3pU&Fkh<{!|xW~ncHr%-#!O$51v->Bt+ikTV z_w!*qXV9cYswWnsx6bWp-YR2TWIV+@zp;syWgxD1MnI)Y0;E}m{jNZ{k$ z6tIpiSkBw-4z;5fJd-9__51dz&Bu8IkaSB<2?%-8`auKDOy>VuQ$iPluRHdx@$j2(KJ*rR*JLl0-13N3U2S;FIuyQ6yKXx? zMx=L>I*ir3rduyTn}OaMQ7R9$^hp-%r<6Xa=}`282S5D3%q9JSM|(j&lc5yo)UH!% zwD3hArh=&ne_VO&8$5bQO3k%y1INcDgFNKfpXTN5#v2cc;d|#?A!2=ga9{XIYMc^^ z?ugCod8g2V*6wd|QyTQ@Bz#+`?=LoSs+HZJG_^gNHKz8#U5TxOCGlUN*KIa1~64?;W+_vA28C+YN=9#H903T zG^fzX&~|p8cW{@{qEsGrn=?q=-p7wvdGF`)l#zEQBM7SN#kDN!UK3!_`M>vbF&Sij zZbM3MD;bBz_%j{-4mN%o>%Yi~&x+lSyI`?+AvQ@|#^=x^eOaUJ{okRIY(049vnIpO zxOeg)yFIesvirl_vYUUzh+z3!DBL>g48nb=CE|<{hi^hM@d4NCmusH=&lQC05K%#p zi%{+0%#3s0_J{d;rt31fYz4n^;hJnTWBED2<%h75kRmDH%IN_;clI&<+VhwJWf-+V zK4}n*8$;UAElfC~6V5sn|9rRXbOt@{5$|%A01hm~w70-voT)*)J1`LQj z0EXI@P4Rro`gh%G-hiwroJrWpm57M?+^DL&M05JkdBGE_IqUoK>q(Sxk?n}1rtG;P zZvj3cU5l}D(dND-oi9&#h9vV)Ct;9Y{!x?tjteTPEjq{E|LpoAZg=kr9Nb9{ZK5V~ z{}{Ey*Mxg+j0ki0M}K~Hy^Cl6S|yBAKHgsb+;G&&SpfAV4%7<>Q0HQyO-uNWa<5X)*ywU9{G@-*o!Cs%Z zvQZ+AXwNh=ks30c26toVI zO`2hd#FeOaUmD3}0OZg3a1+MEu>krB+s=8m?ceis%Fo2p38)M_Z^z4I9GCc&a8hW& zzKY#<)z*n$#djKu*+QkKV_U8xGM0Q0EziJXDy1Wp^}q{SZqOzVYDnkN`b&@mf^Uzo zcjH_T<<0D9${ploXl~!O563B`#0SVD)hLGfxLe=qch1)8D-jq~`;Y~vR|S<^L<})R z{$#X4^^Lroq5>iZe6K^#fmaX7O}jf!*7bAaUI!O_{Cedve^hCQ5Q?-Wpm8bysNpc_ z%B$&h$d+PGZ-*%>3euvsJbRBSM3sA!k#jqE&DMO1%0m%#aGkb@AI=LB`@#RIpNxx!S?T% z^9bb87J-uwPoK`@r<|OcKsJD_tE~<3?*NK?;6W*4>$G)_!|ow0ZOf26YT@G{%bnqT z=En?%g)Lo}~9@z9DJf-EZ z@Sw!XQ5PscrF&k|CUP#+PV1Tt={9zt2UK_14$BOPR0xZq&GhA4*TJuN>wU9JRI`TS zm1^sd`$($b!Mc^6(7@F!Pf3wD0iS{6+!*iv8Sx{?V3qY=>7LP~ZvxS6>y%E`Jj9J)+mR9g7b%N=X|j41MvZFAA{<(Hkn>j5g+zo9j2d-13+8nT59C<4@E`{- zK?g@#$5P{Ui^(($D?K>E$&Pzh)hM<|^z=X7%8jSyeCRfDY#(6AT4>RcM+UUKgS3w= zRM|+8oMqT)8d|@&u&G3&VPj2B<&NKd1Q+hP zd81fNVb6Wg+ad5}pVBul8Eed9<{ffIM!XC4ka%MA2YMja zIbu;e=q2ajLg`c5p&P;o_7R==WfxY{qa;oSmq|;+QmE3A!crqnbWyF7nbj{%FA5nX zTub|(#;jQ^pIaKY`5o)R>g6BQfK-$%)X}(#kf6z_wmd>))9XhVR{j}YeRG!dnJJ1DoWhg8gH7ox}iJ%?`Xylxy`Y1@fv*Z4)&ttmCLJ}f#aEmZl z?8aeMLt~*^Y}8MuP@b}cg*FtFNb;$18Y7F0*i1i7>Uiok9So}^3t`t199fm-z_|Do zbVc%vMq&Oa4Q!){@rpk88ihn8^>wo~aR+p>nO5fQr?JdhZ^;e*BKsQG+sYS2+?av| zQ+(&vnweOuwns#jbhUVN%`7Ubpb9V7ObycD>`UFRg}iKBxc*8EPsKUUjd*VN(VUB= z6ThB8_{dbj^lnSyO?aylh={WKp9Q~y|CZP(=?lLEBkzyCS~*u{##8Y`Hv2!dipJY| z*xRvW1@92DxNzUIw=k@OgJVT>(R(_U`{Dh@c~(M~essns2Qne+@U`=9L(y8LN~Gvi z$q@NFY+i6ZzpCth?x(-4CaoD1QFN=TOc+BW(pbh@F@+sj5n-aE8;@~hEFrS)Tl0ghzc!eOhVMs0rk-DkUW;@!X=gG(be7G zdW7z|@G9xf?B{97cetfr;o`7oCd=VfUVF_ZBKzK>$e97N=5hs0=?|+aD6pQzRuo8GUQ2U%%hz6n}O)6-#%c9z|rSFnpC{^G@#oG^ocjS$Q z0xqIbWmX_HC#B;WYQxVJN8;Y(X>5Mv{b%!#OftQI+Y+wF|1w~@A4SY_RwB{3yxbhg z1|0UyDa7+eXu(t-yz}I>hLSFrE1w{BQJT|9GeeCm+_$R3I?zctnxs}$De?~?&$nzO zp6-kV#REL2AL+3k;vIm%$ZHUsqS}xJJu5Q?JT&{junG)`D;=|K@tra8UjfBss(UEE zvZTIk$zG;p*OXCl-H2i4LidGc=+8~O&3XWBAc*CNXh66 zbBes97hoI7a|FH;620%5&8X_T5sRWWm#@S_8r|$PI3-XrTq2N!$=p6K812;25D;y+ zuA6wYuOkGU+)~7qPHZfr;BT?BD4#5xO|BHlql_tfJJ;JH5~k2D&%Rh8Wt_?tjwTeEZkF8d9a^q4OcF-2Z{hSsp{{~vpA9#7@k{g0PIla!LkP|-j| zDUq?^2q`jjRL4+hlG9)wGUO;dqC`azO2j6%A#Apejm`e8>%RBB z+vJ?*^Z9;%uixwUN3Z8R;vTQ-y02?pYrWT6??s4W6;xNCdg$$`$Uu zPuS0X=PuwgT!H8q#$*wb2o;k)SnqUN%Wf&?VQg(Hl}_i8I{*4^5b=G8H&3{OjnT5fS=g)b2QEU+;BDO_ zCG$}|bW|)ki~Wj!xPfQ^dtyL!CynE#5GsOq`(OJwp+)GURu2h}Js?`nek9ise6Hbm zLoC-2apnX584+%e$8d0@01zBFnf|SeDpFywXki12&9GC+kc+E_`mAKnL6BCys#fHe z3CiN+x5<(e^kJQ_B6vWlD27U&&Q`=QuvbhbEuL60#Q0kw@(tp$rKk!TXIsU`$`Wj~ zX4Df7%rxQnKcGnXRqVN{f(t8RHe$`;fXVok=8$6qz9A?JLoP-r?}XPO+hIb>#@&Gc z%bZFOi{sVDIRs+OZZrl74I_**Xyf=cEyfGFj6e9c5tMkLk||8Bmux4Ol|=e{Ot+lm zLXH~>e_1CgjD%^VhPDK@_Tw2$W#cHcY;QR6m6pRcJ)zf}HN_F@_(*w0{CFW@I1}&y z{`P-<0s&KVwG!XNAC3=s#FHH`=z)Xg;Lc}`R}{a5@J-?m^FfBk%u${ed; zmg40KfNk)X;64+W3FKlMti;rn^C>!@@sK>Q0v3e-4!;<|i~yyVc#9UFAT}J7=nMO@y>&`*dQh;-~hssI4q4 z0n87-0+U9#E9*xf8FdHXmlGF87(sfptZeo@sNw7d^df)870yQZ{aN^oQ*P7NHJ@y3 zux+gw%VPP_BMZ>C>MqVsG*QG#nXFgu;X02GVzBIDNf(I~gj|M61}M(LIl-i$&@}t; z(|`QAe_a6obSbXYO<3Ld_c80h+Pex*ot^6&a2MG~@3b_0t7ypGS33A@Wfme>*WLBvw4c0st{W z4qQaO$WORPv_~xYZuOkW z!99D`dqRof;d&76&Lu|0VPF`Gi3+mR!c2$>vW9yA9R@feX#C!@gf9LB5GQ;L#|is! zXRyg`NNtA*F8oq_zK9bJeaue6&wOt#F|4s>X`BEv?hvaN!>=I{lGL1N<5Xso5H zI3pg%1eP94b|0}M<1T$iKtnzju7?In(w6=EEyOGz7i19%SRme4 z;*&Q-_?7sl?ts`k1VC*=5evlnt)R(pEkGRu0Uc-e00B66xlIkmQDBu zIAD)}Az}tt_!kp%jA#qK)h(fC?BGaLq)zeLyFvQx(#T{6vQNQo3%6ni>PLpCXZQpf z1pN??hE%bok;I3_U(WV*aW8?{UpU{MJzQHM)4?$o?*g}Fc}ynQ_7*Wu@Qsr@*g)a> zD`H@YamS?#w)Jt=^*5{WiZ!;C5d%`~4Z$Sr^#Z-d%p+pfnz1;R!jCWS{d9tJBeKl? zX@kVfu`AYi(LNy&MYuMNA<#pul@NkU_p2r*%G>;FPmej zOlH4fswVhyP%ILHTO_QyxP@3Jvxjl;1bklX%tSo5lgUPOxnB9NN;K9ec8`eJMW`L) z)r$!r>;ySU+=D%jJm2r( z05Z}kFuZQhc@%w^lpeP#EPNb7I#rtWYA~wB>LH2eiXdv&0&0o1rQ<0oKL#)u`_aIy z2Z)np)`i_my>rfgewc7BG<$@+wgE6;gd6?|kTb-8&;xjn@(dL<&{yJzoe|dT@lx7cpNar%8~sg@4CMmDBG{=Um60V&BK&0Q&*#&%@PS&OO|MYO?c~ zt9!B&$ombrA*cIC2{jq9S0TezHXfE4CL|GMs2MfcBMysvCL*u9jf z7kenNK1`4??4FhA+odTwr+}jj^$`Wp;Xqz{{@P&)CFZVNNRz}~g60Ckw6GB%8ZmCz zr5^WbOe6ZtezV<@#*N@w!{1Ge!?+87P@cJ;GI5wdVLa_oQ9#VKNoUl!r+?o;@i2~~ z-EqoL7+x1)#oXU~+#=>e4-h`R&02Y{cNrm9CVi*X-V_}|v1fmOZrqEIL8|0i#=)FT z4pUI7hj=60!9#$U6A{>niwU_%H91Gg5@FkHN#_$VCHnqPe& zR_gszZ^CPaSs$3W3?3D{7x<$EPc>>0S~|N)T6aBJ97P|W`~2CxQpCLD9;b1aVqXVC z!gPo+<*W<*kzC`scVz4xk@PyTOZYjwm4u@5UBx3U43X^lOoW!>SK$JKvum)I(OajT z>L>!2@Fa14JxCzKio34J2uBbSHgEpHL4@ChtPXr=InV~4IzV(4gQx!W#or+p%qfb1 zng^IOOeG!L-yX9+%=haIabjQ&0D~t<5Z@Ginh8zH?g-IRA?6s9L?rtN8Z)4T)E&nDt`cMW z-0`Ks?j098Kq%x0D$VY&`)&eZSQ;FuT}DiciIcE4sf5=a_H!;5)qP{gWIYYZejMup znJDlSA9G?$M>7fTa~42l5IgliJ2R7=aRUx+aEh&gzAI;#!*6M5mu9`j(P#4&B=}z@juJby zyCTvDeRVTN&JA9lX|`oN@`#@etekD$%C=dFS;>CcHkn$_obxX)PNs)m{*ou?A{ce9 zSQ-@l9~Hv?VRMm3<9k;K$$|{JPA0og90Z2F!ih$4E+#B1*c#aF#iKq3v05>hV21;k zek?@-5=KmjvZGmG{+9JxKZf!-?3s-gz~9_AV!PrbUOvJnODy+DmGSOzNS@>9>o+RG z(wtT#NId7MG3wAXZ^kx^mb}pUy{i}P6!~?YG3e>-a?+*@0M+zxN4GWy0Os>^E{d`LK?lPsxWO zb|5;_Xsz{UHwfjxuSFAIUpyY<4Pim0A@+cAiH{Qk4)7b<`d{zrKar=NuwB@81`&XS zUy6D+VfP&01$Otx--UJ;c=Py!?1|5@_3#%E8ux_05wejBtoWh-Try|ELnm&KKePoK z0Zsx5n5X#2;)W*PY(gpG{?;*2*$RMleB9C}K;m3;4XmETXVQfDVh=a>A)?oKEH6G1 z?D0u4bv;UK{S*7a#w>8$5g++vV@e3In z(-JB@RfItcK{y3l?z#D7&U0M|AvTlWjlx5uCT1l6a4C61?2Gfq2M zp12%^cyKWwAmf57e;eC&%{`_iQXyMB$n~`Qtw7NQTGL;^t8haKk$Cg|a z7|Yf}(h=TK6zbVc7b*dw!Z4sN0ni2oVF6#rWu42W2L*lPkM9OlX(u-&kayUU@S{!- zYm%(K=DvvNDR0TNH}j*JK>|0DO#ihFBhmG@WKt8dH;*2vP|9$0k>to_)O8F7K_Om1 z=AqVHZPdZjrA}L2W7>o(3R=y)on9x+a@Qp4GTABKz%s<<0UEuXprlFGb%WGM8{Lkm zCT!iKOaOMZLc~9j(|$6&JopnM&PRj{5sp}E$2|eEk zkSA`ARNki?wd|j+@y}fL&^MEfYjP2HsCDM8+q=o@keQ;;kBRpmA+SyXC>rKo+6r9X z7>z2%UWI@Eh1)&g!(+M&nF#k9_tink;s_g9yHnO!3@*F3dhE$oLXjtg92WV(rvaXk zG{*-2g4+yYCqR>*f0E;b$OBL&d>f=$vL6i#7@H^K2oBKwExT$xXRHn2EGjfgF_&Qz zQPewBa+Qn3===I7PVczJb^3={n4p9!@q$8xo&L|VLqsB-JqfQj39%I#BvU|izT9x> zF`nH(P&?3fH1&Vx*CzgUe z;meI@KMDzhogjQxdtM;1P+cZqwEMBA*<`)US>5HqcPy9oe(u>7)IsQPh|B_C6KbN@ z0!liHhSRFun4Haly%WHj9lt@y-8iZFE24px1*4`@Y!A63g%yPS!x)4$BIcP_?er;k zn>L$gdMDrQyfbRbcV{5(Ob*cOv_e`E&#))>Jtn`7O$GAiR+hf5__RKOObW%c3AZE; zX&TFDma!un#|flF!E@Mtqe@MH=|+{a2~>Mj-S09sXZ= zdIblJ2Y`eepeaNMtByjyE4a^rfZ^ER?8t!e6EJN0%^yGE%LCC~X2Vlz6X*R(M37x=DOJmc>~7l#8S-{h1_7!mc<%mm25nxMOc7Wi3$P5ND#LDW-w{CmBOfV3TO zUZIP?L^+-!$GUN_LMb9;Z(8AxQ^8=TNmSk$hIYra`k|&Cbt0DbyMExV$jk=~b>i^J z0RcrhsuW8a7wE50b!_RXBXIqHoilr^4@uL;Is?U}u#m}I2H&m<;DD3p+r+n-r#JKI z%RXo=7x06T4}v0LQ$iJidWp2FTd%GAxASLgKunDvhrse$H}QBWR!RPEMz>T^;^a6b z$0N3+Z>Z1vHA$HFKLGhn?D6e{Y;;?oX+ZK52n6||gWUNJQ1=Br<$-RZYu%bFgeH$< ze<=1j5uXp%+0K*cd&uEkBC?>Y5QY@KMPL>TK^K^h>c}Xx4r`Y|*dsfIgKNpx%cLY` zLQS(>CnIO*E&TLcA?#{fQkQQHD09Lbckd)`2llq8-|mgmYRA9!Z_$%&iwK2I94g+j zQ2(M#KzDPb-cEK5m#NAjmMg%(Zq<>O*U$} zT~MgyI;tbdv8I09^DwnKXZ6M0ZO0;tsIOR^%sgi((U-;PkcHXDY zQVRCXU9JaoQ7BIYFjO5b-pFzC{R{9iTwq1o8O;FwJ~{Ai#$@aLhdo8zLjag^@D`5S z0gzz_Vx_8(YP~~oc!%P@P~}+KCU@+spx^> zm!-pCpl$g_%?dxC*WQ;f2OfZlLoTXJD2Vm9a>u^Ez-Bpr^$O@_69l4`+a~q(+Y!|X zN2IWeClrSTUsx+THDL!Qa_u{95w5@Dp~#W~f>-xKUOgD;Kkfsn?K>7vG0d3QF*GyH z6q`FVJkyc=2LW^GbdG_kN6ChYTNQiLCAxIK8@X99Ki{KrO%7K4w z46kJ?JH!;=J~mGEf>@Phc5{lA^ZooGLLOs5gYLjf3V^K4=ZvBj9V}z~x!=XHyS3%T z;^#z{(D5JQIlo_w;uE1Zcpyf6IE&+a7=HmRSGP_(U^|;R@rUl31kiaUL_h^!ja?rU>s*>9DSJJCvu28ydSPh_PyvWoVXUE!R8y@ zUwOreGr>Ux|7=t=d;OP0ZO9nqyvIcmk-|93nz=U3Ml~IoKTJD3P-qnC;Skfx%_Kp@ z9{;ay$CAC+q4`Vb%Vp$&(BR)*53~M4==^&?l$KIZJ;aWz{a?3Y{8P{l0^uj#xeadVl}?d3zOkoK;M<04^nWtu6(wMdUD?&;&po zXKF1%VOs1w!tt?W2QVRNqyRNf@%&$u&xayJuss{ag}`G`NCVJ8Lhh)}lf6U~5F0>Y z=d@xc*mt7rMYt1iIeaOwlfLG~yP>cT?(h-z8L7q%Gc_LtPI@0^%7DJZJ-m}&sWTJm z7>$pa=|Oxllf4no+O++L_FQ89ke-}Yu|x{T`a5%%l1Xyc>Minbny6w zA5L)g49*$TK$LIx-NCPueYuke(ci{VlD1|i}v&(QF&NVDgf4oNv zck!{GhRMpwQeW{WV@`d-A@naPuj8)9ToB*81o|89al!;S?#aTV&I#u%C!B#R&ll4= zf{rM^)fTQp0R)5#5P~Q9y1eJgz5;(gZgjjsv4O1Zto{M|&d-w%Mf^)+EF?E~B-NLhV zer(_*7fpzv1wLrbPKGiKmu7ok9ncT8d<_1$s)V?QvT;eTx@b`|t=Yw3&+z<^2!L~Pam zpmJg@fQiC`t5(GHAtKCvXfc`$KlX8=r||pdC*;h;D<*iEe{3#yEYpuu3}55GaQ;2v z7tbooN6Q^g50mV>{maKEu^!WpVr1RKm``j8Fc*FV`cGa>c{^qRqW#Ii=}aS4g0z74 z(#cC>?A20DIwl&hTr{`hK%rxU&fJYM4^Rq4Vg>TIGb8bGSCiK5`8-L1pUDaVjV~4S zV=19`Zc$4fHjJJZl8pQtE4eba;UTG?KUB)<3SPYgRi5d|SdQ0+fu|kj)bK{NO~#c8 z`iGi8++~F(Yc_WYqDd+Zg=!n9Jr(js#rUwID|m}%f3dS+VKr+eDLDkSbMV4`y{48~ zSh3FkUW91SMabK{j)gh}<0NX=5NiS|QX^GeqRzk3 z^6QR}C0J#9CoH)hebr;Zwgj^kU z(!gqK{U2028ei4upXwh?Qtb!|Chf@-D}{L2BUs@wK#H*_+g%+j=`cy>`r z;)ufr>&IASIL3q$NtjbEzF}cb*|?%s&}XP>O;U6=u{@P=qz_G_DL;!T{Yx>W|60S6 ztJvJ+CFK6OTpWCi$tuA8e^m5MVE#2Nby#%qHQ=yqJ3s+$rQ?UEQZ~N&^S&Sa<@||< za{Qfwey00)SY_YT`qhA zV<)Ck9>D)Le)|2vSuh5nJOirVIC!hFbze`0SuOK4C~$hW51Su6JN5|3W>V-QAJUx@ z2Wjy7Tke8n$C?lsF}_eJ`FEhG{`SI0_(A8?{7uZ)%T^e_gIp>6vh@gGo}&MXIKX!| zYl)YDL!dDjyVw=Z8x_1Bm#h5h1EE6L0Y2AF7q6nD7ZO{+H-ZeEYa%YG8di96+@lw zSOU<4x6pNkW_|kQKp^(QpR}e~>`*r4#KkE0D^>wSH$qp5xH??(er&J-*yV_q^0ALD zT|*1e=M5boUgF$!wI#ekbw~5ooxVUbi@)YRQ>EZk5i!0s?=p*zu)ABcv{~|-dx`&4 zW&+9c3Hm!x}@OT|%4}SBSqP3JZm?Trq z9{bWJ5zh-Jk2gM|Jih!TpqUI^JOgbK`;F2DKAwAUPQPW%m+EXvhW!Cb1SD+bAJI5S z(LsUPfqEXG>A_E+c|#Kp-f;ZzqmRcc#E%DymB@@rZg|I(;V(F$VLrMiyDUr0OW?1A zckyByb(>g zWR`J&LJGQV`R%0%lQNBVQ7{_K^d(dol3JfA9|0vYGw1dliEuVr{-y2p=1*Vw zNHA9a_fNpaL7CNFgOx&stQO_{|0n+e-~Ip1e~TzERgHKoj>V*X*-w=0Crb7cCHskz{Y1%rqGUf&vY#l~ zPn7H@O7;^a`-zhMM9F@lWdA=y$=2fu4-mAs2%__B(_|k6$3xhkZQ8bHWVwf1SM7Lt z8T&J2>-fLtE6l5fR9D-y`GSp}>z+V>GWs=sc88oIl##Sed#<1@tB%eC-vG}?(wSS- z1C(hRWRw!U6OK>Q&=S$>r2Nt%)wdS?;o)q;&_Tx!_yn8Fom)hSMiGY_om381ZL^Ol zi4^Pn7Kk`TT;9_Hg*9FAz(w239|MI+z+z$^cQk$UrdaqNpNo7?{An5cC7#dYQn$L+ z@3)2yP;6f|)XLZ{ED_Y}+VQC%#UvQIIq^^`9oQZ$qP>>7X2@O?EL?C+>mgjF+pI|o zK2=P=&6jvmc#4Di*8@7TZoLD-^HpoTpIv$ZceE zyBl-9p*=Pmn^O4DORq@OUF&Dv+uCO&Z=JHD7q97 z^+?P*Oo@W3lObv4hBKoVK?|sSPk;eExXM5ALAaHwT5w=ERJ#lBd!;LgB>RpWzOieQ$V~;eG={9g5>l>12mAK?^w{w{*N`qyd+$$>?-?+?UMjT|LN|F8i zNtJfG7Y6-P5tUlPxvXbEnMQvp6{A$F7ZZ2@vY0QFP)l~rLkSqM@jf?<5efB??Yn)OAS5j4f#Z{;@*x450I@m(UxIEzveTaT;>Irt#D!H6|W0 zPZd0jQvXS;#5ivcul4cIbDU#$kL}CQyqMils9!&-@Qv9*_Z?dM0&=o}e}5Ve6cgC^ z>iE$`6cU8wZsfUlcFE9+69>8Xe!mmQ>N8tF>2w)|NZ(t8}UV;WDVCsinL3sx76O7C7qkH{Tx$wY_8h z(>JdJ(E(g9feXCl&e=6*2G!IJm@p-zRv{+TKw&sd8dAO8z(iFbNp44=G6?*HxepTO zhPhU#g+Gsa)Vb5c5|`lWE3w7>{i))Sv&12Z>O&}bi%cqsHUS%x&yAKkmGkzI315}FjhRV!^RkQ2e9#W>MYv~G#7!RZGnB5_w zG1haX(!Ax+@Oj|hTN4szCiSemWv<&TlBh{|B|s%{-A=8MUm#ohD;<))f^|othySpcNWh;yD8H;*Fa1ptajr|G~_K* z@&0EP8Tg=V;um4RH;P{lZjmny>ZhGw;ih77>pwL86Q=6#`tKeNIbzPAPs;2Yn%_Gs zb8#K;gKSiPM4Ef)ZF%8U7w=H74qF-c;EKzFkABVEDD-#G4v{DCmufmV2yD3NWi-oU zx}hQuHkEv*Lms!Zo>qgfF-Rj9$wCt!{h=*aFz)cA{PrCu=ibW9?kM@}6eeW=tZdqS z*j<5=-kvc3V&*=rnVPvLIKMbn=gel{=BUy;k~S4p_vo5A4YK+z4CTJPhTWoi$Zka? z9Tm7;}Tvk3H*>vbeTKOEW+ayPh;__eZzDP_<~2WXa@Z`zaXbW7WKa_iRoNKY!Yp1)sa>Lgu}O2;*JP9^k*0oXJM* za(#Szs}rAiA3V2{4@!nqsU$+e_|j>5-o9{e)+4wEW20J9(|&b9{^rpjF-Sw4pES@? zd{7leT@acIMJs#N#}<0amm2aKeDp*uGVyr;|3~>FwQd;}r*569^#`)xl&fEMb-YWa z0?~qX6%SnCu-!d3&P-JH8BAU1J+&=cd&uODzU3=BN~Yxh zsv$Pwfi)`CNZ!#rW|=SFM2U%{yoVOUDX1X{+3S`eFvm@pdNu2x z6eN{GGq1XdE6!TyI!Jy`uh6Ui%hfb6TqMp7WEw$&11#Q7raQBB(Xqh0Um$G`YJUD_ zy>Q~D+I!Q`hE!s8CttN#e+W_LdA}>oEoHtIg#FL(gM4hqoVtWvKFMZo0)NFGO;@C@ zM$=kSD!={9?SZL5t=Vd!Wr-vAFHb*STy=A=_bIt^+Xv4xs)x3)vK@Ce-(BeI!qV4Z zl`HHW1R=ltv>Eji(1w}2h1+Dxn5WV&ItW_@m{C`Go2)Zf7%HhQtn&A~rx%@_B)yG5 zuVQuF4x>;{?*7X{b>qpeLYm6_?m(Q{CnEbB#UzfGVj>wY^>j(QsJcl}IgAhd71>OG z2#SDZ*3D@e3N7?N&uVGk6M5CO>b-YHT7E~L9rhoCrMcz0b42sQmtO+*O_LsbhotCt zP+GI(RpkMu^6MBxiUrkN#B4sryc-CtI-@>~hF z3RXlPy=PnEr}}j%;#!`z&_B7nAsG;$Mum^!nvgv?tF_*DL`jVc>kDH0!L zd~>5xd&|PO<^LHV??0bcVB%vEH`fzpp|ku`dQMrPc??4>pbvUpaq-R6wz>fjng-3^ z&P7;1xh|fERYI5x{Jt>>8!jz^HeYAL%I!Q<=9|pJFD+m31aSR=--vkLkrZTpJjg6)ke zxEf%_Z<4yDYTem9&5J-$%rXzJjG2!qZu;hF-7>Zor8Cq84*Nj$_8!AZx-RUgMn^8F zonqJx7rb#&Q3zb1KTWXG*Ni#@dj?R2O;;GjEA|K|%&~+I?DRC&*YumpljO`TSE{z1 zj?4+LrwAh!kj99tB~QKNAX#`2_*Z9n#-i#b9ze|9>0$djgJPv1TqinE=|1E0Xl!x3 zpmtV`zw`AQrPa$jbd0x@s>*m)J%r&@97}B31S%-WcusJdwyfB8;1%>et~ZaH-EXg z<3mtoQWnC#;47;IjUAP%O+s%KEtP-n;xPkgV;QzpOZ@MR81_=kw)jsEI#stu54Ip* zQD6e}{owa#%Yv;|K%hje;ajpZtIr$g@naZGK%7gv=Y8lGW>d8hP-8}xneU!fh$e-@Skau|ZiYfIxvark zThMIFY>I>K(#&#t?^*l4DA`NN%UoqT3Lj7${^*}-$Xl)#BVW!)gnmV67T660KnVcq z9tX|$8FOfMGO%odW_@Yft!#MD25h@jIw<)t{0@o~a}R1?tGncDy_&bLbbr;cg^KXE z!$Dj*2qnXlg_0}FX&-`8MC{v*Q*w1{VU$2skr2))lMtTqxuJGx9~3;)1DiFnT(`3? z7v?LRhVmVmi`(tYUi9fhS#*c>(iEHYJ%W~ZfF~!WIA!;x1gH|zr8EXF>9Uf0xQNo_ zTlP&IQR`U9oi2m#PcPb6{-)i|G(V8mzimyH#A9&8f1r_AuR0G6kL?z@e{-XV z(1WTcKu(WNeOU|U*122HLlh@bYrObVx>?EidtQ9~Tj&#&qO;Yedt@Pm! z>H9KRAR47Vx|xsG<{nnAfL=q@j`$rfm6Y4R!AXCN=t+aG5PbvMbD^)n?sJlh)pJm@b zDZz#%yCeDmMcU`0_r8-p27cG)Lx!HTY(Tb`Md@nwuihPLn$BGzAVswdC`)$3g()#X zty0N6VA=NAMk2MUdZ>Y(6tY{y)ID=F6Sk$WG>X;7**;8Uhd73MyXzcNWM(WhFp`Z^ zOcl)DtkEOv=98y&8H(??gl~7ag~)lG2Uq8>nI>Ke9IgpGg`}{psML$Ni{7ufs~3Qw z{9y+}sBR0(C)sC?VBDM9X=`oecW-9TZzy2DAG z`B-T9hC8q25m+< zZmw6%vr7k$GLR--yFbt>z!)$k={SR@wabeHFRXgJR zJj@^PLaR9nrbAr0r=yVdIz{FbS9{n<;CUAy6&k937KD9@LC-IHZ#RQD&xLjEPV25a zVFH6`)-JVLjCJ|MeRQpEO!5A}Ia*WV>S5wae;!Rta?rdPKBFM`^E9V|MW9D0N31l}X)^|H1k(NI~h(!l6*1JImwZy-tvkbCnJ0G9iY9Iu~JMG-rvRIrEFiliP~C$DlPs}t`K_wP8};Z zirHD0VGoq)`(}MhzM13`C#5@P^+EyI?JH}y@6vMWwA--luQ5~T2B=*Q8+zRZyN$Q2 z#nRsyxPPIP?Al)0J7&-2FqhX)&hqks=C}CLsq)`dIU~Ks9)Ms0u{pc~Fsg?;;VmN$d;aptu)?^LsVg@&>>wrhS(SA%2?tpM`*ngbG{V5O^S)iBKb??}y4!Rr5vM9)&1AG-R{1NIZzcHg=S zHIZa?)6D!`Zy#lVHLo@8upv(z)XyTTv_zgNZ+CFGAnI+zRM*sUwjy~v0B*+BUY0E% zJiE*F>fL_Nu=^@OwUayN;q`8r+nEeIMqkNbNlHQA&=xSspu2sJh}++;<24T@P)h4z z>YQMA!N!M_z!a_QH2UKCtcc<_QO-U{9P7Yz@}rS-_0M+HE`SDdF_yL1#81MsDH?c4)OahS6H zK}wjnN`uDPgQ~t4osb3+mIg&#%QNi#lqXd(kx`nO`m#wO&O5%GXHF+JB%G1 z-Q&LRWJz46OJEPhEO!K$qT8o=02=u2W`f7+L}(w>F=|XtgzDfLs_vekfP|$jvp6C1 z0RF|flqAwExD?z{?RmQJHz zUao})zfuEISxiM?4Qq^>8$vX{J|3`@aUszg?h+E6`I7;F;fhK&DT zbN7?T^qi4Y1$&Qs6#WvndI>91ki8PW`%{ar8~)BIOJthfFSmBsc?xLGSBs_tTO!o6 z=&V$i;&dX4#>pH2?j%xGzmSjDWYl^e+f^FA6>R41?X#>H22a)XMmB97Uz zmP*($2fGd3P7i+rMUvr-%lSs()lb6)Fl$I=ZIi}X9-x$~y7aoIQq=2~OOk>%LbZ*mj}ZuLBDkno{iyJh?jn8tiE8eEkXjN!Eo*cLkA=RDCLw7EV_5qS$aDP$A1((6>_P4;?hcJSeqv@-P0GGe3rCr(h z)iIEKuW9* zv7HZqQ8~RxR`B9i&3@fBbrI1`>s>p(-UVDSc9pnkW4!y9tdka0%BD)^LFbYZxj-d# z_`=e!Jc4f?%bCvBCVmg-Yh5m%<2wIb1htl{838t&cFiaTqj~ zNSB#&pEmbsKII4OVT$rG4qROc{@GC z4ud*eO?Pkr@$A3~NroM9|NJC`p}&cm@-&PQ=;djU7~7InF6~;JN@tkZ0CYQ2K!)Ah z{8mqG znb+X{pF(v=D+HGaAoBt-4u-EBZEl3QBI#6AJFjlvFXkqaBVC);QHsnwa>}53L61Q2 zX+Ut0YmU`WHJF^lLzOGsaz*+h)X$shbH3zc1ufxPs_hzSp!G1?XB{WOl z0xyeLZd{X8a!jVEw=WQB{6)dSB-l#V!`Jwl>&&tU=w;k)7n~@nWTp4(Pg5DinTYq$co!*s>^n$wRS5`;YbMb?|>t z;LyCPk*B-6ve#f=aR2K!2jF1tmavd{Hm{&&V2lg6hdP30O@ASHQMA-NFAwcKEokp) zVF5Kwi;nNEzJ*Z!1p5V$fZr(K2g(HlO9INUwfH`zw(VX@{~$j+uK<*JiDu#FT5{HL zVGKVVTK>fo(45G!;mlZ_dp4sEZcxP;i~*c15b#t{VN?*z_r!n1e+lhrb_P;zV9!TJ zz4aebHlQ1>rC4_g`szHlp5<5aZCS#WS$f0!3@kT1R1=Fye9(UK+NltGhn3geei!ka z@kUAh_PiH$U@2;6qyQj=)5z*tVg+qMSpaydP`<;t1>DL@}}`Vs^WZ*7Vx zR#x9!yFRAo*_zt?g_p8BTvF0l;NED>E6!(NZRvt-NoO`FOqxeG=}_pF0kj*PTtUd;>>fjB+)KKfrW5t0`)TunPmQhlt=$ho` zl+6o801y&^G^|4gig|?(MfZ^Rf1*5y=5aY|maboEcuWRk5Sr>k|EhG+SuWv&=lkVF z6*O1=3It?0gAw+wsNqvC15xUM*Rp@^Gppxs1lAWi2fF!iVm0@I zDrU5+-k(437uwcqj?6#1UhdpF4-5xuIZF_%?zF84fR??Y1zNygZ}VX8gh7% zOt0E{D1xyGE1ZtZvzH+?;1`dscXQ7a+_Jl$U2~%8C*nVq)~0E^-_f!rM;Ca`s}=TYoSM=7!K%R@wn&NQh6RtB8a{!&Z1y5!R^nO#DAdB( zQ?=E@gVxEU?OR>rt|H%^TNAy7@0XL-R>AAp_=?0%&wN|^anww7sVnlYg_+Ii z#?aKH!2u-&?ZZx&ks=A2zqQ_4OYchl<^^@2A5uSUJF?QOs}MY}N3bawdzN|~Se9>S zEsjf8E3Jm*+H%#~LMX>EX?vF6lHD*4SIJ-yZ+?6N!_A|2Gai)5x)cKL^S61GB+D!}$3o);xCvTdPO|{@u=b7xahGdz zpJLsc$9Rnpm)g|TP-eOXQ@Pd%kR6kJrIOX@x5MbnbE=VF%otj$?DEu(zj!0MNAPoL zyFhRg+WuwKf@fzwVS$DSg$=HMY_*V-)$n(o>n{J^9Z(54rmA%vh~Zr=Zx^d}BS#3p zV@MjHGmSxpNY2`A=6?&-8wA?upiMY?J88!4BGFz;+eymW$v6!B2N^V}bYO>Xtbg+W z0HD+EE%Vy07Z`O%eA+jcjLMwtY?gTedWZPxN2&FtQzDJG$kBv=(suh|etWb*fq74# z#TEllz$f6?YqiY%%4zRJSGm4hvc${4-6!D`0Q{+R*mBT6JdY?K*U_2>QmkavVB7de zl~UBf`cWN4929|HOLDui!lxsf6C4R{XI*DP%?CIvGM{DqD|KdM2ogG};vNFHMw@ER zY}%r$a1X{iRoqrB6qe;PZ{Vatw5_sQ3Y4hYB;^;4rBn2V55O_AJl_hD%Gf(r!3Qd) zF#Vl_{`Bknc3Za;u#;;odNp~|m+3W%A4((*&(j@#PFAfTLuCbJ^gh7OZJ8KR6c~AH z1_U=>s|e0+wR^c5?daf0Yix9U@>}>b6Xsvd==wFmiu@hCet#qFFSRC7zX&$*41FHh zN)(#1p6v_D=FPObE{V)qI>JHe_KGCT5lC@Z7yBG-N_69epuXEM_IBSk`+}pVbU@p| ziwWLu0NVhPI_z-GcRIMs?~bSi1LmKtdJr5VIU|PDAqlA@mszIWau5WAW&|MXaKqe7 zRta|M=|&BQU}U{kECN6;aP@SU|zL@0_Q}T^*@Gl7{m3F?UMO^45OmI&nXkehO z`y&caC_5T02eav}0dy9b`6~}NhG0IHK;x^nF2R*>4t|kO@@Z1|yY_%;6)O7JSTqK* z3ms>kWXR&j!6fQhU3&qHNqB*sK{MD0a7iV$7uUKH;x|G6bPm$*r|@quOQk9yz3buutvH@UNQrEqT!z%M&sYQ1UmR0RlLP^I#wW z_SCW4<>6XN;NAw1p#d8VH#{kbEos~8QLk}Wt=Xq3H%UE6>0(Mjp`fFU=Sh(@Oxa#o z{>Y>)b+|-D{y5vJ-zZ>iLwrP)VeV|p7zTnCzAcq3aCkhF{)mEv2iK=L-H z9E~k`e()RIB60XaE`}+kN>Xn>0@1Rw#WfU3VF{#;qNt?jjl!Yc5x5klGulvmilP@q zY9A^~;^R`B`Nj_N?r1S!fI7-|$hB`T!Z36W4Jz z?{hjRP0?QSFWm!-qjk96BC|)+Ih9vZm~jpU7-BB;k*blfWEI>dQM>1hKwgQ&CZ!G zB@SN;^UhH%ZJf^s(vpdkMy+(K*x=;KopqZ}`~vGk?Ud_=3|>X`n8@4r&`wjry05C` zJTqlyRv^-=Nv679s1{WGuN~E=Gwj5lG=oXa-|H$Hw67pRu?>(H8PM--H*IEqrm2iY zww>AO>8f&}F{!|5AoJ^`0OOtN5pEF8c2J58X5h-DZ`Zmc@KTZh;#(9xVN^L@*vi%B*Ys4j`?3w1!pt6MYE)yXnx9%whw$sVzS75Oi0^3T^GSL)fp#dYF=QyUwNiS`z+V>O`;%k07fG*qgcik! z0$O=@)LZdVmGYPFZ5|B=CA~Fo;j_8VvEi3SZfo95Pdv5d{C95#EmO+B~$8B3J$=#|F0hdJI_k#z1G%o zJ6>jAj(H4!JPEx3dMKcq`DeyFgVpdn{^+_h)VqRc)}t%x*Q3EW(e2=HEl>k@ z`=lm7HAEr4>%I7)3_Gz3y?n_Gd$TfObtble0?1{5-m&_{X_0r;Ce+?!kY_8U zm#y`RY6iFeiRq{6Hwn;~z>*E$Moh9Wm9BW{df`T;=r>SvZDTnDLKU1$|8$Z>Y7E>q zCq;|bvXv$sqf^dc9@12f zezUE)3rYo+NRsQ8?1tIJ=&^l+J`f7ZLr%=avPX7$_|63AG@R7*O(E{f4$>>>M1VjS z!U+dO$3iSB<^t@YVQHe5QzUyB`;RgAQCcFKw_E`oRJ+fY+N>6goc}&^pqRw!EVXMU z!vJm^lj#aAz@`>@liiWNN&rXW_-D>tDo2m)v|Aquu8f{B9bX3|c2`O>F#CVd$34&A zD%x^5SJxgKRsHYd&o9>_%j*elY(q*eTn2Jp#K?lmR|Qaa&mSjFeSy#Hh{_f1-jJa! zhbx09Y_1)t94n>sUjQCanG)F=Dzhz?0A+?J@{&s$$#VDHva_zhCa$?&2F)rhR*}=?W3zNTe1btyhld7*4K!ilY~XMf0<(UoPElE8IHD@nD@T5^Js4Bi+R2+x) zc3&vai2OXQ&+UUa1gUD5S@)`dpW3u(`E#V*u9Q}{NZS{ze6C|<@cQ=;64h20baWA4feWc@w~DJ&Qy zxjr`R1Dbso$YK5FVOI+tz^~pZRIAuXbg)-u?6y_Bi4D~?jXq;@`W~%TdDo;H!zQ*d z_F&gShi~^a9)g8+!Rng|sQ&wp`Q(uqW?L?8pn$1~d1=gYcjR9^Y9WN(UE@6Wir?GK z{H|d3t-NpmTm>@Uj6v7*QA1T8DTi6$4R2r_%kp2Z9^)$tBQ~aS<@&%IC6KN*mmlJi zSjX1G3k%;_(;{WsAyu`}_0l>$a+!tfCD9jSs#RdIAhl)X1-B}JBq;hQisD39UUV?7^3d5yFx^@G+Z`ImNhLV18cI8Y6pEZg*+U=V5yz%$V)VM!8D(BU;i6!@i zgPCt)*>dDGs3Z;EY10ALR(7FJ$7UJATHxjvROzluIpPp$?%U%Bo ziuWaKOI(~^+&9}iHaPOWaSx!zBz^7s&feOft#;}uEGRBaMCKOhq7LPg9hoD%KXhOw5hJof~^8XjAnFgNU-}0!fjD#tBX)b z4<*{x5!Mm-!Ix^dUhyqwgjBaaFQrN)TMpVR%Z_WqjNe)7$?_LZ!qg|Sv?4G;ng zoq*X;h=K}q^Ps@40z}=RkA21=X)d)(J!8+=t6G0E^ka@H?LqUS`$%`_KvjeA`4w0t z6mY;E02r^B>K1`uJ%}yT2S?=>ei$SFUOsnl#wGn`J0k&Gl)+O7ZasjO6d`_DeU)9Ga_u|nO~vybGbH2T8DA^s z?aYQ=fNJ(z>KyQF7MX#+v>$1Ma3Bp(4H9`kDZ;q}Tn+jmD1rN2#Kn4{7Dp7h&^3&AEnB*g+98btH%#9Se8 zklCb^VK6-Q9*guD%yf^bac8}j8FjxFk3yj?vt?Aw%(pH6&ZaG4nguCcPyO~8h@`Gn z-QsMuw0EB1saI>>r|MT$l&;NiadTSl=?&#%j%`146a0nP^Pks^b~ITPV>mf}K(0wi ztRyg7zY_e|5@F`SWXG72*b@F|XRow%$|p{pQ)J#vLXHNf%E4r$5)zRBSN=Lil=?E#Ub$8^9j?lfe}j99^%oYJ(Seq>gT1 zdfo@5BL1DRvlLP$Y#A~$ihQYlW@BiJfnMI3f%jQGofiUDlK7s~i1uwd2T>qB8Rx)f z1L5EeG-ab%paPKd=?N4!G-~2f+rj!k*G?4_BKP|y*J{%eH_Z`Jdw-tENQ98TQZ0kE z5Yf7$5}CzGeDh;=MfZmVJ0D|$NgeOA{q0yXAab3|fMzQQdj%{4RM1|zKTF7kplGzp zgOLjNfbk6$XHDWfNHQqPv`0{e*M?;)KZ6YAoLyu)2<7E%4QnAFzuxVOV7Y+p;<-ZN z)!_4sPzwg*+OsLRyakC}bW60Ci%f?ItFjhs1c%eZ7BJ3?5}S2nA+NO+PvQfGU3J#g zoN0x%3yW-(bt#d27WozeM(~F)$*4e7U=Mj*AI~cyeU|0Yu(bm88{&yr z{0p`uP;X#|#T13I{l_48p&@{$8efO(bFj%TFa3rxLTcR1Bk%Z&(y>*>ISYm#++LTy zdT%WEBLOQwfntH07rBojH4^8x-&KuSxs{sXxpJ;<^Qm?LOu2t@|^6y|I8v%jwEQz4{VfL@I?65Rmd29N;( z8#*ay7YlmVTr7p+BDYuKiyV3eud$FwuO4!WxdTJ@LE6K^wMfhjU`?kYF+TubKTDK? zjtedtF+Wob1;L(;?!p8P-%JR_<2rP8;Rflrk#?CEC=6RLYTirBCTTtIqBF6YfKWSw zFYZQvYJ!um%`Jadv1bgewy88zEd}T#dtC%xu8?zKEh|iXfXWXy!RE@>3MKep87WeQ z0Wioce34Wk?eU1Cr8uC?L{;h=YC-$6y(@==SxdMRHs>VY% z-wmw!-9-^XtxV}XUxZyGsqIj_0Lqjsu0_^lTSnSpqg_we zH;5=oMb)lD``;)TSctHe0}5hgXdnR5`Vi=WWv>L)nAU|i@{bjIoXN;?PSLIDA!i(w z2}Di^-|2k^CR9F0sS6 zfB79tY55@D1!Tx41(`m3a;MkO z;et#p7B?*8V(8NZmXH)p%mumyMa84NARuzqX@{MD(+|7SI`eNl#_r11Gsd)>AX8AZ z9DLoA&b!{Taq`OWvoc(q^z0pY$nr*RCiswZqgT0Jt8zVfzEujciDHVWJjm59DCgW7 zRSS4#PuT~(wNL!d_OyLO5$%%Rx}zx&pnuUEJQpxlLAx=)xyZ}_RNL}3@?%Lh@GXOO ze=Vg2N~V%AbudS><^F0KVm#sp7BgkYSv} zSCP1TN15*)_(s{M%a3k)vSCb|8GqFA0UW@b1sxhpIq}dnkEWD}#4IveEtumwV-EI*%_(6u53#9$v^+-`wKe2(~Hr1HO?2hEiM_nP72XH=! zHHeTLDhx|QR`Eeq6PuFHcI~$#>l(lC39s7~1(8ZxPw20{=|frG!Tc16{zFK`tjH##;*+yk+vL#})%n*falPN+dr7ZD;@YwQH58mUvZuR}X zzxSW_{rmlV=JT06&%HhOeP7pgp2v9{$62cUFu-oIiia|!4>p(9YYm0mdk}y^dv}*h z-Jj!#xUeNJ@8NK&n~Y_4Ub~7d$W0x&E9;hM1#fGYMRRtCApIpB)0F8&Vxpa*_FZ*E|F2iUOYm;(Al zl084U>F+K{?N{46rGB)20M)X2_SU$I)LOLX`EcM$C`^3(4n|bA7|a6+MId~3+%I=W zqBRtvAmcbW|HjkT7JqFa*UssX0b&BH9dB_eE>Nyc?F9HIP#GryUA4FCH`sM-DRC8f6gPj!RAk0Q|RlbP))| z%o^99kz)%S#+tOA7^N3o{Qe)M7<3E?ahCzP7&rIiFV!8wpxrZG&ls2<`|xyr$n-qz zsU9>46$>z)?u9zu*b?jOBNga2I=NaP3Dl2ijvW2Z0Iw!yKLs6M0+52qIW_A!h z0$AtYw;wMLW+dSFJXi;^SY)m>LA1oX!(sfWn~oFXZZB(mYK124}r^gNF+{8bIW7q=SY*c&>Hq1R1EjTXl-ArgXGz7qPPD4d{Ip=%K3AQ|6@zy)WhJd|JaaY861Dj_UI-(1?TH?!JP;QeOr`?29oBRHUVbLbk8|jZnciMsP17D#(Ake{> zhTiscsfPa7M|QM8)!9cCN1`w)BR{Hq2pVOflk(Ofp1h50cmmZ9u%A9uhqb5xb<4h; zk+;E#8?{+rOY0?wBX?3P8CC&%uLD?o|#BkEJkC zGf&Vd_lDuS|Ib}K{S?Pibv7EEo1hZg1tE7YX#mQM6}-{H-18<((ct ze8Gg}Dls$wJ->cBT)f=ZF&|k;X?=O(fK+|kTCrYma|f8laF$8NfAO^$N7H~CfHO^z zxb1e3XH#FcZU|Y|3D`?+P+-*tWaHk^oH7l`2L?*K)?9zhE~^_}bASnj-Pc_OmgiU% zfsc|Fice@FY~WNBcJ2@VQcCvl3#lq&(Vg3jfFJqZ7(~?-k)Tn1qgn*xoZ(~0qK;BQ zg?5OavLT0KqdE+MUMgSo<6!~}@G~FQ5AN7B{)ZV`Rd=G#{TMG$JI}zA;gO>2LVb8n zmR?O_l+PoQ!8k{BvxnoP=av8^0s(fYBKPfW=ve2DXp6O>vDk$HZAjez!ZHVR%2bGY z%7XTw3KcV%DH#jasKgZO&UaLD4B52CsfA?CxRrO9Ng?f!>jbcAf@|bW{_lVys zK8G=~1055BZ`iZMpqKI?Fo+mESTDUABAGgp=Z-kb#FK_Ag)FP;)D+gN6f%VTpYLK<5_zTr5C#PC4p< z(<`_Y^>2LFp!?)IU=3q9M&H<+;?31lkQv6`qB0L+MWW5vo{EAgjY-{NKO?)$_b$sd zgIO&osl-}I>+JWp_Z%Yl$@xT?QeEQAdH?)pP-5@l-7)D`Oc#ekpH^8q%m1e9-8u)^ z9DB{Im0CuL?toHQu9kvRWZzdk-45m@aDM5-0#wnVeSZaJae{i@-3Qr98)3b{i?+jq ztF8|cYnRU2Vulrdj|vhmAK??x*&?LfNIz!{WPX{CeRmtUslDSoK6*t@MGm^h1bzBg zN{Ssz?tBvQDhw{WSelIjA{9vKa3!mRMjH-X-oJAAYN?1xj90Y(xLEJo$mS%LOzgs( z1hf=)%5sh`!44(Xisfo3NP~Zo#@Amp5{z1~ik>)lQExvq#3hKhDV_{){wB~Yf6=AX z9WEcPP#p|AVQh4QL1wizMgOOd^mNw!9+p;|akDJ3C3h`33S|C`NnB*xIY?Cxz>5Hk z^BKW`EW>A;Zm2q;4>7z`PTrX;n{0dpo?!Up* zN7f5IY?x*hk(&x3O1P~w==|LE@3umHg9=nVYM(jvK2AO|F>uq)s3_&C9*oG6CX= z@}=EDqZfuIPhIpA3BY`h%SV4|_Xko@QZO+J0osF$*EO~kI_{j7VdWr&3YXMu_3|rq z!Fz`k+V#O<5s$M?C)_=!Y7aMu6#RO5a&rr(-`)rbAFW*lFq=peq(*;t+qx(2Qi5$p zuNpLP+~=l+V0Arr4NVsjYm+?kEx{2CTXo3Wu2JizM2zqDNBn2$rFD{qYjiBR$pQ!5 zNx{Bm%i9=IFDtlPm zX5&?QCU2_v^AH<`+(!qy_t#@C&@z&eyYG9&-EGdU1L6*FAh1*b8y2$Q>kM3?-?$UZ z`=HwO`^9NoryX)m+IT76@`e+dx^{Uxg5=KAUAA?oE=hJutV6`}m~=6vy5NMPPC3vU zl4xT0p*nTp#fj-#@;(KG$696!xM`b?`|mqMM9?tT3?<7%mYdfjyrmICUkQ~`!6|~W z3&h)u;e&WRi?eDY&f&L)@3zX>cKmJA$7hOtOBim){>KxRH3))!Fmpu zyMn}&jr5Ni46?Jj>X6=Nr|&IVJ$-;xO8}FErQK`VhZ!&cERsOuZXx^$*hwU7pttGv zc8ruMHMha!ike1K=~-*40@F1}T2!xuvcTrwcPJs_{j|!su>RPsc*)-R8lu)ZPnE>q zT4ux6!D$osn+JwaOB&DwweNQfJQ93cuc&(ka-h0_+;6eW!~IwzG#_M-CS z%RjBZ>f!jFy|zJ^tB~-5r zEU)vlYFR1ceaa#4@`T6tZ0y<}0h!)?!%M0c{zxkfeQ&{?!get%5)gOjd}AE@(b;4# z|7sX=ZuL-U+0;iL#N>vpWFO$sD93nGbwYgGl*3b{Gy;7pTf}y6Tn{L#>9usS__y_K z=cY)-#ld1|j<4m^PlBfIuBsOEkNQ9b`_F14lw_i_MVJ?(1AVMy{yuiE{APK}!s}rB zgnI3|j@2`vDI^M94y;ac?aGKyqJ@PPq6-bhbJsS!{!ZovhUO&I3j;a2hD7ic1Gtg9 zRP7}4*QAo+E#0<*j-jpwACEUujXwGNq-FvacD!hS=4U$(t`d6n<%U+mMK-O`MI#PQ z|H($D(qf4S-ai zulTM%eU5y30aDz z)wrg{b0um&AisaxZ?znr3Yon6Vexz5OKD<=4|b3d6Hvt?1 zbug!(Fz`-CNK~ie?b@ujbME92xD4}vR zClzwRq>>mH-$Ng1cG?We8VigB;@KA?YkOW9XCuVl5?mN;cse7p)3g2E2=Jj&Bd0W2 zh$%-j*-AXHy%YW*G!@Nm3fbp8drQv@MaksYWNv0%zXfkMjEPuX6tj7 z?pggLaS)|BHH>Zn>llpdst2Rr>yjW3uSkN|ZalETKCbnP{Km` z?&m(#MRha+*A8gxPW#Ym>vf8UMT<)HGORt@X7wB~bCbPe@DXCppxWrsV*;nv8tFJ$ zC;f|baSy+fQTWMa&C7=eGB;^GT828Sy9MYm&s(A*JEKT2duChb8<`KJ_7% z>BJ_uz5QA$cU+LD{R|L_m)sE5=S#8$As^{I#cd zb}S>1lr&Kt25btusU8ByGRo7D5@vnMn;zP!BlQru6cq7*(OOLnKH8rSa~Qf}`8jAp zepi>(f7Y=(`8yvcl;N=!vXYm`8uH_#HHQSk2;?xRx<_xe?1@;MUj7dWwAtD}d66Cw zRg+3!CM11>WMY>cwi@4@oDZ9rWrxKVKj5A~?@6}J#Jix)gW7MK|x7XKsb$r*byHBOjd9{(Z+9NuASmGqwgGfzZ5>poc zH)}C1n#BQJ;)2{8-q<473_2LytB+}bEh6kgIE$$m3$xd)sb0hG^p2nT zo7-f9@8+^2$vJ?cPE{5e#5ZNd_5ww*-;z_mt5;;Dc`OawE5eS%aHx5vQ(zU7cks|h zXmGU4#(CVmi+~oX+b_m90pcg#K%zte=jmk7OcT|Bh!7ypU0>9zZ+-ns-GWNy7&rmf zl17YC!K$4l;KQ5KBn{>XEWa z0_<9qk1vmr*3*HQvbjz2zl-9ZI+x*A8BD&xWy*vsS3cwKS*$)|*Le^vsE>RS;U~s7 z^K<4-x?as#XXoAORo;5s$YVx+wa`d1qU*!Mxkbh zCGL&h8DS$5KM?8Z8DJ~eOQ}4Ce+6PsdW#!FfJWf?Zhw}3RDXrdSYZG`CK&xiT8d{- zv|DN1PL3_y`_JagNxrT~;dZhkD)MJ(Uj)5o0&i1}E)r8e8KKAzOUzvMcfW28t3-6d zThcTGZi+B5gUgN~<%qVLpRQQB+z9XVG+$&huwdDyG(<@O)AN>E4~0ZM28pPV;(N?t zt8+H)QOE26=5vH;&MnETkNUcQMTR~_6{_3l_(1*fBg5cN5{X|E`%|WP5N_G^ja1V3y^_7Wb z$bKZDZ!=!^3abY%IU3YS)af_k0Uq{9AyDK-N`7`zBAlTLhitvXDz;RggQtO-s+2 z{I?BQ7g_xkpzivGQGX?a=u8rFSwyFRZOEr(Rae8u21U`iZ^7@x+Sd?subLSN^Dj>*92JQ(d0L+>VUa%xesmnL90mh*u4eStF74HPH0JleGiHXtO z7-DW5(Eh1E>&kfd4?BN!tyOrBveY#5L4hOO5#kr*rt#xMCK|&Zm`FmSD>B3`typ6` z3HAUDCyuVMl8#_Z@s3$3vtK|!B_#Ho(8&N!TAm?d+5+!;`61>=<>q#hV*vyA5U^)y zDy6*_|gRikWu(-Mi#YM*FeZSp`5hTq9A3bTz*_{Rd*?;wzYjf{quncOp3Bc^_xG z$waAI3sg`1|YtZwL7wLgJMKA906D zjSjR`frZRGMX`w$tEBJyKS>YoEL4MU0xO)-R&Zb#G=lGFqJPmsMgZqNd^?xalJsxy zz78FZwXNzgtH#h4nUQX}{gw>}%3b=;xuq=oIB1J2wuVNQB(vcROu=r^r;!jN^1guZ zkDPbzu;L3HF#7azGI(7XRI0Zi?XSh3Au>_mY*$O;L^qxd!di^&^aL|MyAB;ris`r2 zl1a^uvKL?A)EiU^oJ7*ZGGJ!vpKf1*G#*@&_*tPR}2;QYljKQH-4`#WTB%e1SV$a75$E zldIB~N?fAaHx7djY`~!9=7PfD(S3)!$TTu-dC!B|<#$(dY3Kf1_8@k_)6_2*@F}2B zSRg~GeAGRdzc0EsS%^3s=?yJp%(F3DAcUTL>x+=hla!&}L<9^=jyZ`C>Rg)#$Bm)5 zplKE#Z6S$BB|u|KFk1)jwFoWt3Z94_M`c$_`rI6{s!7@i+cO#8h-n$naYXN(2>v(< zb`7>pq0H*xTidh9=jg4qGpA^Gd!fqV$dF|h`WshuZ<76`dgT)Yjf~GOtKm>BHaq8` zSS02IRB6WBke4x~pn$aFj}CVn=+aIfI(tE6qOudu3FtfMW;hc975_*$S`)DyIz*g@ zypY~foyi~(f+K8VSPO=O`ccmI4h31oyeoqqx3E-mKFcj&J-Cgg+}>6}%wK@kE=qvY-k5OoCS0=dV&sQQ?|qI}w;;`-`I zHZHf5pwwyk;l5p?#u;*YV_PAU3W7P~uxo9L!{aLjy2SW;SE<*`9K>}mR)nPu+RO?% zi0aa>qI?pY1|QT!jAIi9VY-f^D;l;HhB&kL`7L#&r_t1i3l}V&isU>r)u|20AKajlk3enE!NUXGg zk@cbRcX68;d4l8xt!$~M@1#$CdhZ$0;tK{9y$c@#!l3PLiT{34teoiUuVI_+SbdvQ z8cu)ZDOF@=bA_j|&cWW}rKeQfz*josd)75kR>wH&fB{;3;obWUqk3{jhqw2vx$pwr zlf}OysN)e!jj}Pl`rk3t!W78%YysscTEVH1sKCAq?kK$<3cTmFfVDMZ0W+7~^Rs=3 z$6#YBWW%4XnV}(c{7gICl6w)_d!oUmm^%#60 zh;IKq%qroKv$PLzUf7(!GZSi@p()j8<+VAh-BTZdFp*GG&;<#^;GBSNAMI0J*nva3)-gnM?#U3Cj}5 zt(IA@{t1qnrKRqyF3W8VzW~dU!-9`b$_?M$qT(8{cSsa`Mr~wnv2K_1`EA`gRz!JY zZyAK9R}ouTbazAJ2gkuSIpRppAAxjI8}x3P^!-L*xt+8zrIfd@of3veW1)I0)jPv;dQl`Z^8k$ty!qC+)#IR5-jwf0HlST z3zn1M%+{hL&J4Rge>Pdy_^Z2Q5k00sA|M!>+os78iIgbs=X)9GF~SJy^c7-p1ZcB! zjO@k;`t-73dXC!!_PuS3AVJKLv*Aze?;kIF?9sLI8E}~oY~~>&^K_E*ISbbm$PBh- zvZ^(HLUa3t`P1`kTJk>srshG(Q7IMY*>y>IyT*;0!A^lF+xptdQ+I`OiElkDOB;N@ zZ!H+}8ylxnrzGNR{y#ng=RBEjrED&^0o9PpqEM&YGqVR&&Zc90{)Ap?nxW5kZBM(9 zj?u%#Kz8Hba&HAJ+LPCeY~ZU?0k_&ibVLQ-9Is55F)QeOf>zV**_wGq*$-e4mD;~e zr{XcEsX`9k={)2>Kw0*>HKC+DBI}+Y)&x0XCaog3#nly2 z(h(~FGkmmenoB>tq}QM$af#lB10uQyjH*rq6k$iFobV@LV%KFHt%$rUCX@MX-8Fd$ z*a_gu69SxPi~qByYveH;_R?oZlW!RbW(7kBsW>=38$&|c{N3-#3yjknPS{wppZmye zMS3q#s=V^uH}osNpRF94n(weubk~~e5PYS^*O0RSr+L^W^z_Lpi#azhPhH~fQtuln zw*eS{2CSVPRMz4BNOpQfqZ5q&tXF@iQ$MfpQ;XCwmk>b{fIKeisy9XN4dLJ;bKsrx z{{4`6a^B}S@f-?`%Es`zYX1KgwV zS$=Nqd3LLNSH9njX;}!G9BMRfa2%WR{5ao$I$)FsuNu)KkECn!6ixP2z?@i|@nuEN zOy)P<`gCm&4u*;(tjdkw@k=%T`4&HI&Ut6G-Ad5p2$#cQ*BGbjxH;^ccI3)I-elQQ zTM)Z#gWD$=PYMd&zJ`!@$zJm|J^1q83t-}j@mxs!l^<9_L`%^=E%~(vLjY+$kB$;L zDlK9YDoAAg zmfK#pCDdz*O>?93uD`{i9Qd2nL%kF?HIdWJJLv#ruaq`TRj26Q3RtZD%&x21&C~i- z&DC&=ZjY3dt!aKo+|HlSfQz$xBy8NF`;&P%yQxJf*zp4!z-I%LYc zzh04^ zUY5oy_XxQS>ym{;a;@my!E=I-KUof4a-PE?Hz-3z4ePLA;U+*Uu{q0Sp28oK{~r7M z$Cfz4t1{pR;(|KI@-eCf^snfUp#896(;hRv9L=w&u~puy(NnOz)L^0fehM%@kZ6k{ zqZ&Z^nq6<$eZcWI;oJL9e}CXs`4Gq*Sgbq0IiCj_l)Q0QKjM9zZ)Xq)sZ{Iqm{TCP}^aV0fL%(nne6V+l;Egu_sw1H+B)|7mr=fc)ub9FDS zPQR0g(p0LHOcwta8ZBDDEhX>D4U_q;!U&A>%PZiO9kFQt=rkqAHP`2?-V#+gP<=hP z;j;2I(2NeuF!Xx$a3-ogL=iiG5RG$k(R9Vw7IA9;`a2|_q*%CQCvM@+rcPIxpZSDy z6D@Oi%i*n|?a{#?OWX00V4_Qv*WAy7*HuAla(w4fNuguIGf!5%Q*D#h%PQ*~1=7bY z=T3-+`UHPkR~FWoO4OVVcp7&Zn8uf6yM%e7NS1DL#2TB&@OsrY!}6Ncw#C}Cw5kTB z)F$bVG_I_>0_w?dDfH<~(ZE$dv1u(`X|v+WCxa|0>KU;JUah4R>!-sIr`Z!IJ8bZ6 zx+Jc6SB&9PDTtUQQq#6tqv3`2h+O>sTiI_nj0;97k|m;`1utieN5vlP?$$kChr7W( zL;$A?OirX<0yx)%<3+U0s!7YG7hMfcRGVqD!Rv7Hc=)WA9$r;Ps$RzG`LBGDuVdRJ zoueshU$MmyT^o8vR9Ja*$Zf$b^qWXH3Pk3c-OcKe#`nm{DkR15Q3e-SXm|=JUww4sBJ$8NiA1p256o9g*w#OT&wTy%O53da@6~EqT1+TXlbh^B4$C2T&Wy7NlRDm&k|xm@FvZ z2R-c5o%+PYQ*YBaF!*DNEO^Oeo}aze-xmE$esry>`zQx|@M0sWWU{;SP{spj^{C)n z-6uQwb{MtWwv3lRodJR_Gz^<%@ez{!WI@aN#F6l@Zxz?`Zl7Jx zAo41)_xzs(P22X7SUzB{#;rRsny5B1ZS-LBc-}&Z+d8-NuT11ko(t|5{K&NCWR$BI zr_c3DUy^B@<9N|niNc9^ungbvXhWZu& zpM(WpsmQ0pEfMw?MC9eZ6sQPy^Z$ix3vDi*S+!h65)|fvw2RHzKSSpV_WHfhi?ZNW zi-aWPpgzIi1o{TvSYXzp|3Gxno%YA@FZ!;ZoP%IrRoo^Sv#J{jRsHLM%%8HLG(N`EG^uI=OS|IF8kQs`(PcO9d(vcm7 zj%TsdPpxqU$EfA?_xb%TqZd(Ct6nGjV0wiRR>S6hd=*q3kYtaB8}0M0yS&Z=FH;I(84mHJ$L zjCYT=3jR9SKrxT&ZGW+R-MVK(!_K`@vg7$Os-eBpCS7M#S=ueoSgROJv*;YVn9=}b zGm@w0K#ahtWTj6Zd30=?&4vT|X2Afp(KO=qFOrQPoD%P4ZT8z35tR1+ z@?vH|OB9v{@Q9!^FLfo(of;I2Gp{&~GHngoE^7%w+eq$D{j(lyezlp^YlOJcQW@!c zG91H@GIX|i!@0kQWaHxc&*oCILH63y=Ub`|+j}r$b(HixN6=>z%?Dr?9C+Khb@!>h zNA&iw?Z|W^%1{Uz#DM~b=#sEBWMMAG`$71{>y0lY?vGZHN|iMvvg7|aOARt`IAh;p z`=uAFur~^8X13sw(WOn_*-x`+wc1>mQT~nc_Vm)f?ZK5tU~B%z%%E=^+TWF_`zZF4 zX^~JvcDauP>T2l&J5u|FCtx20LaKf+N&8}G30_xh+lr==V9&yC#X01S*M7QU!*q@d zRjQc#wpV1-D*oA+?u| zz>jRM8*y^F>aXZM&L)Gs=Qudoa>OMISZ^w%_3fy?!w;z5TA`iD2r9MLF<%qNjwB<> zKKZc!yLJhB99EL0!HwW2e~l_^K*EdYS=6@g_>|Ste{AI}@{s!?!R%^j!|zygV45zpHYWp%o@LZm5cX4ekgjb~HZ(z+|hdZARx4D->)oaF3#W zNNvXfHg8ASe>gFLLxNdz8`#A{8j`!#KOoF9_aDF`EWp>-E)9U&a-!XA8_ht&``P|A z^gwDV$7eW^NktqCZ)n)@egmZi!GF3_$fo5mStqS;*+~^Nry=nem}v~-jpCs#Vi$7; zXI_1o4`gdVHqGADEck`qU*5;fEWL^1F=?*CPsCZEPL=Uib9VAKU(t8K`bV7(hiR5p zd*8iC96i*y3owJf^64m;e_<1-9aG`Iq?qRd^B``JCDQWeV_aihT3J;9IK6u zEqsIca!E;zRXn#TPwlUr~nQN?FkxnC)7LfDT7g34h^S+P$ z-lW{O$AZv=LJb&IbxRYT06f6g(PYknGQy+Yg#+AEQlPUd9UB)r-P3+p4s^QGw!<+G zCX%ch%y6=TB!81q^HeELI)a0s+hDB25Qz5x@ZgR6Mm<<%ReI6i8c#OlhRgO+x+8r< z+O;7vAQgS|Dm|Zn0Quuid!lWc>fEfiiQ6?|vyFk({;wFuHZ=~SXS1BSW*9yaNm zEFwzbbH=!8y24N7L;pLocC2eUaKq`da}&y^Bwz_dXE$GIz+>nnTIRAj^E;n3@z4!* zEc3u|xEmK#k!R%1Y;U6MkoYe@?4FoEU8N3&fWUjf!svBB^~M$pt2!vyf6*&u=X}1L z*$PZugO;z2ddbqLd!#!l>mWQwqb0Zoy#D@4f7fo9-=XR|I?0RS;l$TnDd2V8A6D`Ltet+nX>+Eex%(8 zZvZ|0&<{dmL44w^t6YYQQ=s1l`@I!`b{V^rsH)jq6nEljoY#W(f<+Q@(f^l%Lu`13 zM@}b?7TIh%kenkr>6ui%rR^KRIJAO7tE&0|&fh1>u6pI7X#-$dpFap~V2qeDdgBpk zq$SbUsyThSBbHS}wD7uT@*uMn=}o0#FYIrWtDu1u71rqh2;$-!crm3hmg=l~L6fZ{ znk>@V2#4qZ4@e?lu*Q}h7E@!F+oJjo$K`3wfjf>8FV~8}s;}7m!5Zbk=~5W|=&wll zShVie`;}`e{82HuqNndPTA0l`u|*3h7jNQ?CqLMY?{#wbzM(clF%OG<=Sa>r`+(;M zzdd&S$JpBLdZy)wO6F)=Q3}TByl@0!YOHa)HjP?24=Tkr_jD^hHJf~9+8S}x$_3ke zWCh|1J`7EXQmEyy#J-}^A)Kj$zqV15_ffKjJsQ`1)<#p7Y(@@?4jiCnaEw0oDGv+R zLZ5W3VO|J0;M6w?4HhcNU3+gc2RBS;=-eFAXOj(5HhSy92&?9U$M^0s?g~?=zb7dM zHtf*shgpVfWWWFrDPJ^~ILa+4c3qq^KN=T2b+z??K?0?L(3E;cAl0!6;c7tBV?hOy zqv{cG_-&}jxtiA|m1chOjcMEbo5Uy*z&ExWk>^aq8(yLs$hE|iT<3*Qp=*w>@$NVa z73MwAAvbz8jIHgmG+o-A-|HJ@Gq)baxrEQi4hkJncFW~ISOghm&NG#!^&0+Ja3e;l zfG^(HeZ^F;&kaEhsWH8zy#0CN&HjQzmuq({ie(Zjfer2j}q^f zHOFo_Q;JODG%{1Q!{90}4m!lzhPX{R%49-CKB!+TTe;=JZu#QdEUrKUy(OGxCCYAw z?S=y^e~hw&MggOIy6%WzdvBYw`C zF*;?Jt4!VE_FW~~K7ReV0Oz$2{x%&}C@j(Obk%7S^XIimvI*3wB+um!83mK!Y=u6o z=)Ad2PfE|^Vp$_rHZ&h#lDR34DA~<} zmA5acfYlr$ApF$&tkkKD9jGG5$kxb?w_!)?FWuVZm7TnXAoAYw*Pv#Wa?{3oA*B>n z?j(;%jZ3?(_6B>n-ah>ON$e7 z7!H8w$_AFetLnOyC&Au#HJq;!Lvm?q>+|_!Od`ac80Zqp=y0Xw=0Emf9;Rsa50vi% z4H&U+>`&L*lS$ic)ei3FYVE(Bb#`uU?gV{*Pr?*WEF7$1AaJVRsJh7QLMz0M7aAv> zNOcSCb~rH)S+lWk%2Dg_z1rH#UKalt7}K@<_-jG6$N3XQt-Zz|eESwYI%PQm)?Iz? zjzC}HZ{Bb{6)loc`EB_;$(Zf8M=ayKd#te!t&6{`2!NS|mLw zrqbW<-MN?7!{Uu~E zh(DzVAy-w+<*4k3T%nAf6GzFiP#>@N$hnsAlK zC~{xh<5K_yd&uWcL=l~=FVSi$EK9)1--zX-*X@bqON@Ke` zMbHvi;%z)Bc4X9==aS9;zf-+oK^WMs)4j>hJp4f;W$oy2Q#IP`wz>5Vb!?D#M$Ir5 ze(7*Q^el!=%9wqUXwkWnQ*f~gs-mOpR|&>)z{V zqRyJ-OMj@#>fGCBa&!B0D^ebF6_Mn+!NY4_E_em`q^%|nj*F#KYWVqe(|Fmt^;1nP~Tf|UAX{+5l?P<6PcoSlbh2|U))VoIAmqZU(&|Uo z5{Xfr``c<-3iSl8F?tI6+R{^=rymV9`anJ})H2;!Rs(+j$g1{D?HVtEW;}+rC_3@* z8IUL!zi5@SzUUC_zWAzpAQ0Qk)GF9eIA3(X7vQGvY3U{3^jVs?4MgwXm<>F9_gev}khndO2@WI4nm z#*?~Z`!H_`rt*~L5h0^J+w;@kDd2S8++M%9-Ca7OQvzM$NSH+9&13-;nSwxH6=lpo zWRZA-Q3*Td*K}zEq0t(W$vpC_ptL-AUJMAn;%i1O9)^X7zC)3g#QB3l*?uK)UpDs! z=|oSJ(jQ#~VeCtNUdB$L# zCGY$E)w$E5WUVCHfcGsl(S4S4_=+83E-1v{1Oc+ogz$5c zO#u>*7~3Ds$Xb8Z$qKYSf0=KQUf~%6pTzE0oC*Mj&8HQ9ssXC2glpR`e;3}>o(b@RVm z@<$Kj$gcu8!6+r4@SU}-jI+wqKW*+MMkYAWbr7G$#l1s(--AfBe`OB)`Tc}sY?pnY z4QC?!fhNi%aVihiRnKQ@=NJFzZ9lzQCrG{A`EM{4Ze<=(yo^2Iv)!~b`8VpZiqS`Z zLpyxC!a76f7=ct7)0aTFFrwMQI0N#onQ;&uR6^Sh>0Mg@{2Z+weM~j@7=r+7`jnRt zXNH51kXsg0+TPLVu*%)2@IUB4G^sOJ`jb(7bmJ&*mbMNRso^61Gc5sHUdaau17&B1 zQb-h(7$)4>_U$%o9ipqwu3&zF1-N6MuXt%ffKjr|dptODxU!m&7yCW+EuLJFFn-8C z(r{zr;s@~db3re5U*OypR-_34@CcFxbfH1piIDPH>Q3HUGzW;#;=y+%d17~eB19w}5(2+7CXH+USEB;aqmk@dv!z!C$@_@coobL?E zZt@(nCHUK1_|3lSh2ZJ)C!pQIR%P|2xDN|HFFE60v?Ii*AW{znI4J4KCiCYPa47Dn zE+zfl|8`fPn>MJJYDK32YGQ<$Pt;tyc~*>mO=K z0tiRF#pHui(r=NN*WeL;TzNYP%CxtuftL(`9pjr=T zFT(StCur~8oU6ZW(PB2rw1U$2@D`C#J}h#}?z65|5)JUOG-ZSLYDPX#IliL6_ND0l z-GE_UpqbW7bj>^Eeh{k>%1hWCJ+O2`p<8%8!uh3UBmI%j|M6G!!;5D16_Pe8mC8Oq z0^gE|Rw)MaiLP6+;2oK+Rdoj+j3AA&rtXAOSB4i+s7ZT&4o}HRY3xsGV4Je5Z!CUg z0Yv^LcXRZKf!pwg`R(GP9onOq316-}L_2MAKl}vEFkw6(pT9n0Br1uzw4&=oLL5?K zjBzjT8}>CufGiouh~7gP=t_Yp!hbO3DYV(PO;&O#0Y(Ttcyc42r_dGyNj#Q0d`!2+8fdEH-E&OU5Upo}#_(qKn=sEaZ zo;j@v@@so^jsiCQf)WN5=H*-&gq;FBvLI?sgz%u$I&_wp&lRK2$Kl5Jg;ZM=;>1Bn$_^@FXCih`RIW4K~KSbpVTqWSD4ADWf0o< z(dsXKBlA;zE2YNrYk`-TE;oan{vZCU+cY{h08haD*or7x3>l{U))@^c`NbLIWs?_R zX@QDm^2zw&7tJegkfB#fnbXnUtn=C|6*C5ZMez+}# zonyiHllVKwUadq!NK`52hJGWXe3dHz?nz+e~L&WiBsJIuU_SJqN%!qg| z5>L7b>WoggMV921HRMqq_Ub|be|q|3_8qOo z^f3{5*gu$k>{xM?v!qN((>YmF3GU$|o?$I(OkKE#%)AINW4p}#NO!@%{?){y&xNa5eBNa`jnnX}NNw<^#Yd(hf8a9u!EQ1~W{u>m zJQ*n3SFQKa-#nynSHaeLuToP*9nxU*W+XdAq~h8uFsPB-X5ahGvPUXH%!0iW~CY#tog z-~^k-LPZmC#i@p`txm+-gvV~sLX(T!PkEa+{ChgVR+uUULkQUg?qCaB4QpN8PX(%O|BCw9kC{D)5&UaVwfe~G z`%p0Nc@$V(Co#_CSt|`eFyK6FSZ_(BW&lxwmu7TVp#vM*K(Ss-$*?wD=-&QLyL>^r zY(b!?wOz;EjDM@CPkL|fJ?Jf1pClMyjmw?PC`M?L_DMzl1NV~CFAQ7}Y;mn#x)rWh z;vWSv(B~(h>t_41r459IcH++uAFber2_Y&-Tdqy)YKMM!V&po2Ot z;R>EfUDF%%!cox-&g)kf6sRTg;Z`EL-zz4WyIL}%P(Ac4mDGRawK`$bxf!&XpxM9cBRxjZdd$-o?FDhFJt~V{SvN%&p$V4}H44W^=tjG2 zMDy$HY}U#GorYJ=cl7pIBN1Dd6sLSO^^@af{)SD=&vL$_{7l{4Wifuc|IS%CQgCiB zz@C`6sMR;FN5>#|ok2w|tuiD}ZU28UnyeZP(U~HahC56Mhqf zTD)fD;%4vhYxjN|ool?Ylte2SP$;|1z&S(XWzmX(d-+aG?Zq92@NBi=!S+;*ux#*! zGdQoPivB`0Vn9FZo8quB4&Hl)?-UVu=abf)iojQe=#ns)3^mR|Z@4NNpaHK6bq9nY z;aba8cHO<#{zK78TNmga997Z5!p0E2(RL=vaa{_)y<% zEat`AbS+)Yz)^BN)$4Ez9jcA;mb3t=;v!>{-emL&{GUV zZ{qTn{|2YS0Iy_SvE3oqKbRJp@VsxsxE1Fd8=N-*=OB$d&u|jv)QdQTSfbX#n|$N3 zX%@U7)Thw)BLmiHdtsgSc`a_YNxp92nfbt0Q*HdJ zAKDf)jLm)6OCg(jFQlwfe7lBu6R~5-_-aD^kawZVnI1p5y3Vr|wl_0X z%xsu>^y0}dhl4%HA+Pr2@#1;!mPGG;Oj^5r3h@>}4RzfpLZjgF`0-mmde3qQ5pKwf&z3$j(qh3JzEu$9MhtKpveaN!r zh)2q(rUUTvd1L6WqACFeFXd7aRrnuyeFjw(IUx(*K=C}b z5r}|fyrdG!+_M~DjJ38xWx~scf^3_n({;&T?mLbL?jaFq$^BZ;*f3nPw;hhI>l2`z7F`mTt$;zMj~*nPHRw45hz{{~lL5&8$>gG4Q0NYw_Wa;A zH%@Ug&EpI@Kkw!ahd!9hKFCeRSMtHi1T6oYs}1dkl&4Zs15q#ho^*OfAV6ITEeGPn zZQheiHtdLrn_4XCfmp1<&^tXs{}PqHlHp)G&SaA4{RLzk@u#GYcKO5U$3XtID7R=M zDAzuH*X(*w71t#M1d7)5Y;yVFc~)29UOqftLKaTMQT2+*8Df@KyI(sMpXoXfx;6N^ z_x8*@se;fGb6q4t&th_lf6{+r#mLIWrN1US%kGJYyd3Yn1a+W_=x0BOob8fxh{zdL za-N^-4@iZr>ezVU?|Ck^TrRqyDu#U9+s{q?Rnh?_NAe&|9edygD=u^@w$$g&z9DyM zG5=q3%Zkun0Q&v*>`&B;*`qDwX^S%`uP{1}agpUB@D19{8aDZ3YD`IYfY9HAZ7%uX z%HNMy1x0XHFYGkh&8F|<|JdXQh(1H-Byvnz-?6u0`jQcJ$UJc$b_l&6+|LAa+(o*u zXU<(Czz(&}I>OF^TW~kz=Ju;?E5lelcaoG2Tm8IKJ}p9NGftFb+hCo5{<=OQ*AZ&6&0?|^$%FBb+lG}m0W=-4BrV6 zg6j^H_7A-PdUkh}w>-OLB%YX7sSZc`@6~)5+WI6+xGmS*$6U4_9y!Hnc?UI5lqfd^ z@0A)EgIHUOagU^E*CV?qY<@HLV}+ zEbus3UiGAParXn?$VhdCC;hWaXBAJEu`6qtEq+_3pfk^d9&fHoZ6hYhqoD93h}6^X zoDn>sS3G6T3GtXnVAn;gco$>Jmf5Y|_saL=6dBI*fO(H8_1s|WHSoOp92Hu)2$`bZ z|2Nych;IJ_j<~n_7kyDg!{<)iA?K5cxP4Aplk?({vBteyf3?)0qFYPH%nbAy!}G=` z*$4`lE4Y4U)D9&UN?$n7p4o+nt7un-dWU4dUpkShGZa}+%s%B({@4vy7odIm;lVos zacKG&y$pBue{FFX920aM!2P(#L2D81Xc^x96D%gVN$`T_ujuz<0~Vk@LSqO?R~e5q zK|m~LbP^U9!vPZ`%UOxmgQ`g=okJ_IFk&Zi#YYTs!|vkOl)S+o3rJUMW=1`a;kW`& z1_Bnej%q*oaT`Jk7s1Taa>Iqim&Suc8^Z`%GC#_e$_?X*i<~iP_2P2{U3X}FWfeN$ zkIAvZ?5CiA??|wxoaomz0d81G4~Ci|@fLY)u?(#UKYLT7f8Xn{DPO3McdiO}a^2u$ zl>xZ24ga>0`fs%WJatlXw45w>hITJfr_eoQ|A4O) z`iW8@Imz}%Z-UdIhW?-JzKD&y-L}m~kJcd;JyP8X?|A%q+`7o?wMh{wGlAj#x?k@jx zWP-N>Sa@hVPCo+=+PK;IMg?!hsmSrr`YiN=AjDE5XbQO{yZTiA`OztIZ~JsE=`7LK z&#<*0@>JYL?#Z(!Oz--5!PI%aj`D^7a{^ z856MrrGM(}ix#QsW(%ypV?`UG0!gB}#j=)nL98vaCfi7AS6GtUe-{0!lSK1$ zBFB$$ya+24=6ei)% z|1hIZXl(EBcTvYLQ->D3RAaQp zDqzE4;BA=z8xN_FZGXnZXMOt50S=b9vej=tc=^HmF##`?u=ATwcBqZysE$||^W+WT z2A_uu>2#V^Ab$TjbDaVe-~w8{S^tzcOw!%|cQ+EfPLfmrE3{mSLn{)nn#rxxxOvd= zOD9wEC{qp=nB`1Sk#$b7ssM}j2KrNimiWvT_BSOwkPF+eyRb*(ZwqZ99nq-#PQYl14Qie*B*ld+Dm5i$-c7z6E5i2PyL&(B= ze(t6H8=m*~JkLMxalFUz{kChZd)@0^_i$aG>-?Of|`y*=&*m?g3RGwFW|M=thvyTb`yP5)yKAh)j9J@;-6F%8(qF zrr7s)RtZ*v@Qcvm#ADX>09#KRlGNoEAd$X_4=fUgf}?S)lzpWc`?1S!wv;#OuC!)| zq(8!-=p4fkC&nfd3r96H?nwB#rXJ^~L=jgr;8tXNJ_Wi~kPdI>^f&zY9a||-w~+vN z6b@wq{06)TaLRS6SPJod{|*|RBBPaa@A}0-2ATraGOqB0)cZY%0p2hTp~K+80U#qa z;x9KP1Ry6sr<>$Xwd-&%B#ZALmwYkihP9d>d#%h_91Lba4i1~M@GCZjOw2FT^-f}d zw+}68^}yNBgnQ4uWjOfIV`wFL9{`-2;%04*jW z1yrrgO?ti^j&BoOR?k;E!UN64yViXA2U+`^Ru+d9S<*4zZ2ngfNBFCNu#+`5A0(|2hS9B zz&AjIMvVaz9+Kbjr6L(d&?Ah5pceA|41VhTD3hEGg9N_YQ#L2t9$a%gT+Oik`Yj7? zV^h)=0ja^GLf~YesVSGUU^949y!-rvARQ57DH&QIo}-bqG`m+K=W~JKm#QFhLC_mr z%h^wYJa`S!RD~Fl%^dz@Sklzu(d#BW8Kk`D>p$waUx0&8mKBWI=1;(`uXf)QAD>$~ zsncY~Df}c#LD3rr6Heh&I9${vxJ{=MZ0LXxmkK?NctgJHkU*cecm+mT3MoZ%UKzvvS4_xClfi2 z3`v&Rn!gd|I`j*eZZq>`_-sE{_EO`noN(|lB;q`{$v+N+5jv2FnVZZ|#<3UXC6M^= z^Of>SXJJ45DCOnqHB96klLQ4nH#kG`pN$_nm!yrh8oWP#s0FbnL)-oqw({67C_*rh zJR`^-PpPuZ4T&+#FU@84ouMDUw1*?3$GCMr=Q6fWIF_R1by(i=oGSelB5MD} zBxd+zhe1blKGcw5Oyz0lU^_k2`L~c|3~_)guZqFxPmqI4uN5E{1grKbGu1HqEr`6U zewDogA`=_MEbmv(N&5z=TLLTl$JeC?AUL3Y)`WF2TMI0DQ% zh7gB#3OYpLEcE2VA85iumDoM72nN*U#9J4mEs%V5u44I{2aLyQ)nDh@C+9L{xNKM~ z(^iA>ko4)Ye*wrt5Y7k!vhOH3LQ14j%SMn$(#8|K5c`8JSduot`b!D^s7Spaz!{4< z_aE#@z(MPDB1Axw6Yk1gmbNJ*UenuXyPjl^9P;wkc>4061zvd3(w$ZV?p#%zdR>b zOSzdG+X!d7Ek^9xbfPFC7FI;iQV#8kXz|Gic+um@<$Y$~xr#$xEK;mpq@8vQ&?}bD zSG~JbPl;P+O|frJbh1xlWMQwQxuCxBLpp92sbCF?>XAe}_iLA8cAf2DW?i*H!bfI? ztCY_1+iDOD{?sG$_ygTc9IhZ5loi+0Hw@%1ZboWl!{3-Xv>Hf71ZxQXT!M|981uIO z2>GK=!pw%$j2Mtt3>PG)s9BuOUB|T>VlnEreVY|@#ifXjxW?a!5G+5@TpOO_WvC zq{#~Z#WED@=dObT<9&(w1Se&h+Y;*z({i2OXB?B9Q|)m3{W3y)LYPMoCQo{`u?;@| zVNkWhuAYRBKNl78pVLHHSb!K76lH`Xj3lhL&_B>7ab^zZ1)Uy!b_y-g(?AwoXL>k&nAw$>BwYPkyurS76_Bc(T zi2Eo-Wk@!*Vu`j;h0+7f{Dr8Yl*9hRc_n2HBB1I+Z^`fDS?=Gg^mX*?cuyc}-Xy&@ zmsxlj?t2Td2sax+XB`xNhS>P;&LDRTFcz4I1K}2~O~x{gG&&xAjCe<(K}~ZBT^33@~-<{)L6h$p$@Z zCxa^01rM~Pqxn1@zOGaaqATq@WE}z8jnRF&Uaz*6AHG}CR%oPb=tArf+Bd3=etA6$ zPrd^t{{=Xb*|#X;XS(>2^DO^G3FBd`A`RDkG4bi)uko-%U(~sca(yXP`@&7NEfC*WE?^g zbL2J{pKWk>GYkvt@x+P&Y>``9yuEh(f5=DaBL{@wq5x}foM6#b#2wxIHFIDKllqD` zlb&Y4f__{@h`5v-Y*Kf9twj1vk7i5KmtBwENyQEpz6`FYxFI1Id>7_dw6_>}ZsX#A zy?25))_(`o{M;$g$^HFq9$M;Zw1V2I(}FrYEN@RLw?Lzn(bALVB2}h74vT~v)V;z1;x+4??0cH;Xhp@rUWM9^V{c^*NOJvMsc#QTAB8jsj*0|`$F|i#ISlW8k4c@s&Ael3_~tJ= zQ9X?rV>HeKMuQAUk9{EIMc7t+tg%9r-FQSj^84m|ziIw!w2YJIl4TNB)gZ_SIGHwm z=4C6cE*sd(EW))ADQFHUG>kBwteT&jQ=k-b5Lu(}lST*{(`aHW_*I9@D{$JWHoFOkQVrIP#i@!Q71T#(Cp*_ki^-|3?noL857^8M}=t5rO|mM*6%7{mca zh_V`jvEdD8$kHG)Xg8u=-mJz>#P*SV;(z|Fzh z$lC@7Y$+Efp94?L^5*Z6B6{F7OnHa6(EdGAjW>HINa1%d>zy(!IR3e9+E(BT~%%;%jX{tvg9c%@25uD)$7N+Us^7U%_hpigtHRZua z8fF2nPXY|RWg~CZNO^{6$vwR}Ktpq6$BO}%J1%n8hNxvWzt7qAcE(yt@ zusgaGzz052%dxn850BVId@Q>sKz;hp1IaRRL9TMh*L)=nPu7LYCE{+keLIY%jSyCcJsr-zjHOhc z!WW&DM;lg3Z8{nR+D4pkqWaxdX_QrTK3;dhL=k~gtIlh~whc2OC7kKVRPT&%UC)Je ziF(uUrrPC~*e@AJ^B5NR%-r}j3GU@SKao8JOM0}if1m-)M^cK~%5}z*=~t%(6_(h& z;ql4hOpq+%8|X(5yRq<`k^K$h`bgy0zbM=i-b&gGF&7WQSf>>rpX?bjqhCA^8Ocl$ zSGhv;dYa>HGzCN=cDJQq{Co}S4G+*W@pQ2Jh#-Wk@a0fgsH0V_`kN3LXV>Fdjqmjb2G{!=bAMw;2$69dPq}+@6cPAJQ-7 zcc4cmY!zlCj9Lg zSs5;-+$u!*hz$QQneR{6`5+I!l+`fCyi2^DhK~XZ#!qnTuRgSrq9p~FPZz*!goGC4 zI{Uk)3a)xqNWPDpJ*$;_rPpfDJywc}PSdFD~u&N8Ty=|Y%bFfICBUhWLU++)20ByTo;g@;3)OWOn z!LIecfQ&{3=DiFHWr`s*d%J&YwyI8i5Pzak_l(q`sH#vGFppHV2Al zdw#%r(`4WUXb-eq@W+W*v$g1S74|5g;6$y{Dd~Zb? z`r5t+y4t4>7*wS#EJUCmXd676ihacQhaQ>Q(e2ex-n=6F1q6E@b(g802P&+fFbSF; z-PCt!#aAJRk4hKV&~L}g%HA=`FE7YycHgg!(ztwnS^D)M=kn;c@Ba=u7}!N8!q$`P zE)&F7Z=2RZoDbnqWs_}MARwrJ>eJAsctCcX_3kil7$>4BnTbUgXtryAa>yxdb4iF~ z;&>nTyy&A|YkzJMe;&QC?hUmVVUt_R)K$@PX`F=nP^0{fl@D&>vG>h)x}jF<@c)}4 zC&p%aIQcsnc>^$xINL#uUirAUU3eWM zm&5)=^N{gJ<-AG+A~aV%9%PDve6p*YXosaQ(pZkVL-5Qp{=Q)C^kTA*!eKcs6PAI= zb@qw9Zf(DqoSyn)Za}3TY5u`HQn4=mBpBUMe$MivcyvY6b*ThHx5 zs1V_Dwo0`dZq$ei*)*Z%1V~lo4}zi3Yft3ICz8EPWt81|rHK=uXChhAuvQoQZShM}X|*(EysU_}&swOhQPRuWak z+T>!U&IjY~n9NFa2u3+JlXX79_wM2HNjnXOuJzviM~s$~nkTnvA&=zM+X!yj@r3#~ zH~)%B_Nnq92{hVE(uI?vi z{p+YO{sc*3A(sW>L79Sru69Usq-U0#P8egB8EmKC!u8lC7r8UEH=d|AEuM3&zLbMT zxeA~PTDVS|6FyA{NfrFyH~LuT8^|8sCYt_hDYQ*1)%wk;eiu3W!r&0B4=|{WV$?q< zG>M^rP5Jn`u)e{Vm(iAwIQJ=Dnz#w8ZzNBN_3gN`zS2xMUpr*oSD#4S!$z)h)`FJF z=&*kpG?&p+{7b$#Rh$BNO&%k4K=Yf#lhdw7M~<()_|d|;lMS-=-OVBZC!F%`#;_B7 zBH9I?R#l6Box5z`QXK^Acn90Te$L5gMbPTgs(wcYE*^o!|NBQrQ@Q@Lfv3iAoj8Gl z7Zu|jlk{T)+ji{d*xnkM>2Aebbnd5E9wgcU#EoJi=)mz%edZIfZq8De(H<`3`CS(wD4!wox6?Y@+ z-^(_c9J-d{@_n3P#t=C{`)gc5{2XdqnF0)FRD6L`;Hn2RMhN*gSx#I+Uqhi%A2mHx zZV&zR4$bdRX`b$59koYCuQ5J^AUV;{!f%&Jj%soiovPhGmG#c_-hqSHC;uP!Ast?U zuZ2JVqCH35-kq0T)`KKuD*w{_IQZ(2;<{BYjw06kDimoE*zzUDLCo=iGqK#Jt&GE@Y7e+8WsEq z1g5$J_;AK#IBD!g#12bxGiB}1>y@txAdAts-O!zgs%xt_qQj8bU(zL&YJ{x5b67B|Et9|ugl{=@3E=C(#j z!>llvpljtxW}*$snta@weDi>IR23^e@qWj6kHTPsiAY(Yj=Un~1pY6-0{$q%T_(Ia z8)+qBADEwGAp>h;y4?QI2))prMt;we?mqI8d{?75W|Y*%Sa@SO6ja&%}unB@lR!zTQJ~`od-SI2LT+8KGKp zGraf4f1U;}^^)^yKew2TBT|nS{Bhs+J{?4fuv|6CC*_~d(!rD>8`gv|6b-FTm_BWN zkC?rKjlZx(vpj09QDR+lYS1p=R2~9fhy7hU*0lIHDuwJe7^kgEBdh;`xsaqc6mk9CE56 z0*I&_I=Yf>;qj~S97o$&))qU5J^;m$QM>|51oLyvdltN2m1S11oP+k7=(4NciUM~V zJZxItocwAki8h>(N(9!@u<0r}8zUfnWgHt4qQ&7sozm3>vG2wq;BP%_`nn$c;T$Q(b2i^A{NZ( zl%KPIJhKtmI>Ev3zi&z}qj^(tO`5jLSG}cytb-oEcl{wwLRrjf=kH)Oddg(A2@S)b zInju>LT?It@9*rr*A9Ohcj}PeHG4zX-ph|BxqkdhdhetM+*VOtzFW+ko_UHYv2U^6 zcxK}P9sz8|<;?-ln5e@K-_GX0$ZY>#UdnB3cY*6JcKUEK zyKx)45g=b9rU&@!0nDF+f3!{5awbkk8sWQ3*r@fe3H*-vR0u+vPW#WMSD0#5{OiCO zv~vw0_tUz~ATrjguApmz_lxQHM~hhcX`5}f=Xgv z2kZ?%EWB*Hv72t8qLc7)~uXY_3U0$TyY4!T<%7t&PoY?*HXg2F$3YuDTPF5DWM+|CpMCEBc^?gShs$q_@6#1Ch2&O z*0n(uGtpS?2Xzg2)d88qLakosF)2vuQhQlr*QF#ev9M(_l}JvS))GBO6| zf`iYL^jK8)Xhy881bO(O@NT*H>*XOxmXPoN+Vfq1OGp(65CA^>0>H=sZi}H8i6Lcw zw=3E<*cdXR5WX0YvNi%uJG7p|PLPl>9P5RH<~t+ZM(?sn*D=#)`;;^rSasXL$5(5+xY7a0l^;Zkf9T2T`z<%V<5eFrrP&cu7pLhl~9C&@Vb2@AuIyb@C+$cCFF`Sc z+*h~J>cM=C%~we5#B*~KA7Q0Yh9lWHHOA~yju3$~yDM^YX+AhH){}bl&R9A zX?pm3w4YQbKdz?ndH?nboc{#~IUI&f$*}C{yn_*VfjgK!{ZJ}I-Nk%ppSF5Iv+hO_HjGNYs z%UBEH)K;6fF`nFwAYB!!wPLWZCY=;fs>Mf-p;sn>T<1NCHjK&+?_taXQzjr!BX^^l z(cHT>4RuRIXBv>1CVU8Y`Phy^y=%q$Cm2AC&&CQ%JAk|0c&FV-ddGXF_XSxp=wGMF zLBqw{eCMCqr6&rT2kd7nRgh(+f6k*SWFN0r4m1_3EJRnpENy$!fZ}iaVF+Om@OPHL zEQ(Z)Zd&Ldr6bED~45ERC~kiDIq#UU}xm=xLStOQjv5JIP7v8VHvQph>>@D z41BPj4n!3)ZrLVO_obm(ozcYW;Mc{tJ63GM{Sk!}(r$|RBTywHGi zx#jX%Y&8qZTV-^c5-UybdAF5`reWy@=RcfTG+rcMR>>|d|%!q8v;UXBOyXsdWOOz6fb90Nf6427paN0Y*__14q12)Lq46YI5GCAh^czau%^W0v?AEtKmfLChx8*AHOqJ6a)${ zpPp*1ITw;>FYnN^Dr0IAJtUSQe^t*oWnyeD+pz^+FQ}Y5bUJbiT7gLS$b-_!9d>LB zT0X+p(83QN$WOmdRNy2^?L!L?UHD4J);~&6AWT-dDe?1B_vmjX_l7_iePJX}-JeLK zSkSEpYFU+4^yQV*LsQR7%_j>(``Mwl70Yl-*|GotBQY=ka-Yk~#E+0x) zAQKQ!4!>ZGgdiR?Hoj1Q<3(F1iq)O0cT)Utblmc|6Zp?`}dG z&{U3NAKXU%fjN%4_l_kd7%|YZ_AHe2? z*H9q<>znIt^`gD|8QB+u8L;9T?-;|#Ai+w#@mvHiWX4bMK#7CL4A(Zf=igr=5K=V- zy0X*oaZ@J}K~IOz9v+T+_JVG|+Ds6@2tJ>bN|G6JrGOx6Jy*kR`B%PU18tn^Z0ogG zO$XC9Qx_pUlh+l~g>F%0)Y-pDx_Vk^7+m1Y`i5U^5R+NEmCoBz@U6F_H7>6(xA?XGu-+ZS4SntAcB_txK!5QCY&8UFffV>tzU1!5ri@fuoP@HRKD z@l?Cm8^689>RmWZH9y{UenB%84O~Ve_DB_8cLfhujujF*4JN_P0?8UP8wx9)|B~uP zz9ycdWgzMFWLi({%`E8c?+RSu4A`->N}^R)>pZt`)p?9h9jcw1)djCW2;XTDngWp& zXO^3sWTNjaG!1@y>+Tisk>%uq!*qS8WNuCxwe1(K@@fg+LWG6?wAGuF0MVPTKcs%m z`lyTfki7u~02Uf#8v#a0yUuZ^3p#f(MNu{=*t5bi`~GP+yhnlO7rSXJ8{1c^g6z2$ zT!jZTrD5!WZtLH#p`&`&d!P9e7?cAXf;zMAp&|tEqff+)Tqs#WT;mWrVF$kTXP(fL zQ&9A2=mZ}ORRfd763SU)m@w-%-mDTMjo3BsFHfG*YRTTHP2Lbo2Z+mXt$Q+uw9o4e zNUi}&oim^AK9IUMVR+WZvK0+k(v!T5`tvFE?D?pwml5l}=KRivF&d zUPb{;AoiOi`lI>i{#VwPHyhd5Q%(8rd!W?)s!(Pw^6!gU=w>lc zFsL~_nlV&&(Z>8{n8k-HZef73!xp!EUv)knRxdm#Bw{__cHA_of<8xc4}{{Qpz1gd z4y`taF*5&P(SnQ64w>?LLEE+VE_mGvOuAYlL1v|pbs;>5r|%`LIYR=PHF?DvxzXmx zCV2jUWfkb{RVk=R>r>`uaOjluz8{$?f? zL-)t`!8#=oHD5rJpxHk6L--#C@ma;1z@b`pfol{_(AVQQv z#4|DT0MMNL*_#~pf%1Sz%Y++m=OK?GKBI)V0g-FBqSIU+4i>hV)7-^fj*y@&o@`+* z;>X95kh8So1o2>T5)QaWUDB-QTF4|rM#`jF$aA}P6{jLlZlB_5$ELnF!9_54LqdccL_O$k_WUJ%=^VwM(dU4Z#yZ32J-YatYfm0YCSXsmt&=_lqWuRz7fof zqO;ad@)8fe(egu2d{mh0r*C!ohV91gJ3F>lNf5pOtDLg^k)?NBM`t~;68}61dZ~aAY3-*uC&PQDa1v_B_g)gqMF!`)PGo|2x7)b za`hiEPtXP=383_@r}cRY-#)gLjeu5R5`^~?Uyb)p#)Xv)`M zmkjvHe;T>dcSF`6Pnd^Xnb9}&|7|)cPIUb{<|kfgcAWQ+f06_+!}r`oXkXr^t1}*a zj6&fNOcJ>}Y(ew+Q5|wt*)O9`=zQ*ewymz?j=mich2&2eW}p;CpzC6cb@EUuKJwXeomCKpZPMphFhb?6Ix)1lvuP zn+1DZB%6e|58!qukJDw4M4DKT)k#Uor7YK$;s-9o@ zgRIuh3UyOH)syKMw@AiB_XOxLWGtp?c0 zXVdcf;v~L15#3+>Ez4HRxnv!<%1m(;5J*YD$Fi*}!m?EnN8gOL9Wl}{_bB~DVcmHH z8wxA8MQ@chnCJ1>X6%6n9+nZW<0mi*XoMOux>6a9#x*yKm?v+XlZx)pn3be3Qw6K7RZ=V-LoEmNt2DGp?yK)}?jwZQh>_b>?sgF09Xk z(PqjfqP1W7Uii}22t)#wLi|4+BG1J?DA*0evfhC$=jOe!k~#|Hg0T9wq>$Y6T}xWf z_-J^*e05LSNc%?QiwC~1_L1#UghIz!>G5dsSLK9${?Tdif(zOj9mdhm(Bd^&ZzIFR z&ds@4zwvK3Et$Va_&LC3^|P3yB6xrC?S!UuzUJStT7Q@{Oxyb_M7o-wAo?G57tPh= zMxrrNpSE~=pXT#ba_u@FzF@ou z^E@MVY6ZlGtXgTsCu*+KiMWXhiatGZwEWytV}to@&odkL4V*Rn8Epa<6hX$ojgUuj zZY>%NSzyL`nkMteHOiq($VPYonFv5gp%0 zcsG+Zi70M>!6AXqJfM093ybVgvDi`^X6)qLj*b!0>{5JHOez4A1Y+u>0KwD>;@t3$ zc9=jY@Oz_X#G0YLWnLr$B_*ue@efd|K_6|PF zpO<&(6{B>Mc`{=}87FCsTa4U6D2pfMLz0I3S`l*NYdnW4WR&x#YtYnt2cTnt9#P>V z1OUv@-_{V@ffZZndJ}ck^*h#cJ4aRvBd1agcpEcFNJaI$y1vuxlfof4R?u#l6L0j8 z6$i2=J#u{D7_-{V9-?K#Y2ANgX3?60?M<4^@(XJa;3?zt3V_E;skdB<5Sq2v_HU>7 z@&xVMiGur5YTK_!7Gj>jFeg8|ywb^PUI5NsN;!UZ%+_p<#G)ZUPu04_bSKz@#3qSY z9HMsN0hD+zrG%r=k9jE-N`Fj4bCLc;7h9vme#Zv1Nxlq?WYwUkjY|!0=O{w-$E4fC ztp^EcLm{{1;@Z*shzNp@6r-n<3Sa!di5tU$uLXgeSfR$ERfAUfqMD~0gufaI#MK*O zt=+_goUiist)j*_o-xQi5V=}6Jn=ERmh>V{@-ao|xBFDNSbaab@>e&wrEa&f8qX%=NH-nQj&IBG6DzZ~D2QG$~?zE}OqPMgJt;LBU_QZ<{o zgYec$!dhjn;bdBvbO<8?;#%epy>Qo?hZ5&1zrIxsV(WZl^@Q*YSbvWTCc>iFsa z6&+sQxYIVQ)|27v^ohwAe|L(=sr;p&C@PTnW6|7@(E?Rm%<+c|)$csf>wAVsToLG& zPg6c0LJ4IOyA-E9Q}Vj69owmV5x$n8Y>zP1_05oJT6n|OJUuJ;^_8{SO~8Z2kxg?! z=|LbUqTPf(kf~NEO$Nl-?b{BLc zFMS6BAEfrsOf1--aN~O)Tis4;*OHxvX*Xx$H2Dr>LcM2zoD9Dby@ig_1(nTLN*&A@ zcU!!v>6NKZ6B;%XIvCFu;Z!Yu8uT5-NT!z|@E1-O3{FAoO; zFhN{GXTY~3WV`%3$3b$IPGCF2uG2qC9hk$KVikA00MxSDBGy^)`Qz;Z-gM}sig9Ju z(=lD?(AGWe>hd564SclzgAuN-^blvX1HcD6(r_D}^nWj;{-CcRQgE-m6L}p1#w~F=x>< z2F-_UV*Qs9i?!M@J+FvB!RVF}>rRqj;X~Iwbmu;CnVg_#ztOp)Xma#l6gC8_wY*EQ zjvPR#ae0SL=^*Hv!2cB5APP9dXyl3~h%*cKgnBA5dOvi%xy{S&e#MV+1`pigUqe6I zM!FClkEh6A>1nb}O1*s@NMKGg`vZLC@^kVoQO3f(Po8g9pr;9AMY`d&&z$(QebohX7ia&LDvpA2= zGqwS>lYw3(a+qZsu)qsG2heO@`>*ulkNHoganUXzI*U-|}+O+I51>0HM(i1nrr`Q2Oh_ zZ4^L~2nJ(%z%mdB?ON>2uP&c=%&JhZQ8-R=vGL+S(&{>4tl7U`d)HC@eS|Y z91v9cSwXjAev*xn2scVZhP(E-dhOO+O}0};qd8d(H2H^1T4ZRWbLF($6KqOFfbQ0y zkDpu}a5jB|5fi6|V?Y|;*O6VAqgP4h*)@KaP`${jloEzdJu)j{M$1qDIw$J6FO1jF zSxKv7^~*TYi0v&~-$#`{YDD15_V9B{+%Hgo%+s#qb%!Rv0?Ep0S*NG?SG2Pb6Co#g zx3>YwT`%jAZXc(EsPhj`>e&DZ=k)wh8d4E5*;v zR_$fIjsxx`emBKzPg zZ_ZydrBR+DyHLScuNX25EKEcgv{~Y$%%xs}_sRPVv*PT>udftr`1(QYAmeuZa{S$% z>R@+Fxkx=?%0gl_T>JWWn16%gU(KN!7^hUYdoMt z&s68FI2|O{q0=q6FQPrEvyjH|@v(7%_No`L1gY~Vh6x?+5@h30!WFz>UCt%y!~{ys z0LpEF#w+VU$S8M%FFm^kYKG*0fVK5+r!L71wWo+7$xz=uUaj@Oxd$!vaSmjXekpq0 zPo1Tjw*z1Sw*2acH(elbk?DPUo)`r{pi#hy&q#ZQr-Dg~qqR1qA_;Wza153{=-tb3 zWELd-gUg4X36H<3Rq_|wZDS4I0qm~5EvR~O2|ifj!Iir7WMj-MpC=Z8ZwbZQ(FPG80;!cQ^W4CZijJFKZwh)(e$VSfUE^=0%_*Z z^yk(##rcim@|iC|&Sks_y5*AhN0d!=bSdAb>I#am=AOk?I~Fc$4Yg7+WqW>X9k+ah zJ4nzBXVBwAjEIcllbH(CVW4f-bC9l*^)H@r|X{0=lOh!go<0wERRtv&p^BHvaEQDDcI{s1UjeuHSaf^@1m=${P7 znyWRRB`P+BWfQ>YqN%El;*?lR!7 zl%b>>jx*@8efS-_Xd7nR}D%N~9d#oe#9D!O0@*}c`#T`BMCJ*ixb@Un-7G&H< zp(g-Gkaq9~lvk_Ex1>zNQZczs*7&>m*Hmk_U~vRN(GG#iP??U`8M=J3Om*(*eYBX? z`v#}wR}{E|ATio0^7G6Qj0(*&XlZEIb~AbbK3NNKxa4uXXYIrPx@n0IyB4X!>%QnB zGx#$vc&8|=0I47XV(#UAks3FQCN<{T`6;)^--Z5pXaFH4j}te4t=xu?z!b3&)$g6% zX`THw!Y_Fqw|N2#4b- zmhU?Hri~G2S<>T1ZNdv^1|S8JXP5NCqwbUqk8$|T%Z?Xh&YMbUldg8@1j7`}iz}>mrw|ycII7IiEwQ2$)0E@=@;uypl(~y6U$O-bF6dLz zE4v$+^mLhRJ%$)SVz4J;EsXa^`?3kY5WEpqWK-Xb`r%pDSr^~R8n@gz;z~4E&F9;n zeKDPX_!>k)YlsR9J-jj)uG~@3s^u32%Twn{?J1^&J^gx$$6Rz_X5AB>*29kCXF0%( zo_1c#A-z!+IgEs&zoUicp*gH9d2 zT1iH4k0r!m&)rCf2ME_1d%3Oh@5KpYl|O3F;DS~Vbo}Ld&sr;3v z6PEvW;~)$&$<0x72FL@@H^O}Ls)I9h15K*ClgIOEz>QJB2o{}QWncUD`2Z3U9K%MC zmcuBANIpT{p6hhx9s{3rr*tf>jl156g*E@vvd$OIR=jfyrD9lc+aY)O)*vC7*RK7p zo6(U>7uk}N*FY(K|3AD7@Fbm!KKlRVHUId3xU!SLP$QOi!>~Pq@_NxqH}Q#CbsiJ~ zx!jADWIhh)%7aMfhHymXgkpZ_#mMF;W<2^V`Ac5;e0SKjVqtA~W%F&rO0 zNW2G7Updi(5I6tn^AnxA$F`5>Y3%!a>>X9L*Sy^n+uRm?fY4Lap$_u!=1SL;?&Nj3 zM(rdv*@hFlM(6r~ZQ*9sm^<^#*bzAyr&dKj zw{dT2!1ya00RP#X(&B~{^-t;-b;++pWU#3L@rUzvT<4>lh%~Js1y=4;oCp3CE8R8g zA&dw?#gD2Fwc@+*WVAuF%^h`SZE#Ehfl>=U3B;QV z;$1YYj+W(!JxA=tKyIngG*E4{;2k$@x+DrxY(c5e49!l$ewUqAp$2-ka3BZrgw8#U zS7=o;jwc-skaSbv(dK?CsCgDu^+}h@n^Z*`$%i+&%vNF0dX=rwfQ^#4Twr!?sX6yb zBl58D+&3Akz%_Q-^8*-_0l0zz3&_n?E-`m;?#}&*m|20ZW30AT3rl*SL}mk3PvLv| zfRVl;PY0BbOEO+Rd!fmO_7xS^a1>eBg=K(th=%rauKhqUQEBpkyIo4b>iwE+%$Oex zmAa7q=fEb8qo`Xu9UzmQ#64SZzkpD_>2OcNxriJSD&stD70_s8m!<{96iGiPrp0W$ZyJB(mJqV)TcQLfLD+|= z-n7kU{Avn8$C&Fl&r8O*MFy6;$h&OrY4(xZLg1!A`6SOUpI6Tx&vw5!ve$aypk$29 zEkV_bY|7IJ5jjMinY~n4?R9$f+-1T1Cp4$;rBCjyVw&gZ+Y^sMUcUFFlWdfxZ8Ueo zg$md-gZg8=N~Kud7;`dQGl)&-F_Z3W%z*I!h5vjUScsNyr}U-Iwr##rP+^WV6v}In ze6|Nw*xu!Pc-D*&jZzm$(n~#{BU*Jn?Wcw>6kuf+B?k~bVd=X2Z?PJB{|IXuKBuTD z$X+D((yKXg)X9JUXpRHebbQ(+j!wjDC z{*g8i($ab#Yxni2_q7kYFH7y)Moh#EZH13MRJTHu89NPrIJU|q89n*7;S=QXIFc9L zCOy94NC<@RSi0rJsuxe!*pYL$%LU}Cfn)sCux9nbct!11-ePv@zqk^97hpR=ixt}f~Y9p1!P-p5HLIW z=_=(pm%N^`$~nmz^%bin3DOymhqU#x!ey^tw7FRQ$~d1)sQB(fHgiX$s_3iO%&0wf!hv^WWV z$QOcdljQ;a`dNC5)1wu+NU4(-RW9~h_5A8OD5_Pg+VVh3pXS>feJN8j>oO_@3hwdp zwo$%Ft;Et#jtciTREqCa#3R=WAwW1-=V5Z1vxm?%kRbgFtOzz`$;xB(@`b0;vYofVe#5>;r&TH7isLU{VBdEPyzOB7gIqk; zOW3Utw|n9+|o~mwl^L)cgevwJ5MNyDN3&sc|J8I@8W$BxoNz8w+CO$9Vf<=wG330&@-1f0N3(>jV7 z_ci_PP43|YW1D;ByME>6i~_~N8oQO`)qqGj@`;kqkm%)`E&mQ-1dKgit7MGp(m2D6 zO8A`2oEnl79F}t2+C=I3yIy>530ngfK|?!imFFz14f@iD?zC`Oqs!8cU!00+UPD_s zc8%ZYG_)E$ZDb>m%7Jm6c)vN}i+NU!z)eAnH7uA!v85V0nf2xc>nW(b*&_83KC7!I zHmcGIVCX&Uu_j;xSa5P9K@Am+{pSj6l8?&ILO!#8XKOgzV?P3O;L#gw1OF9`FSGID zml|a(&M>^y`GaY(UJ#42E5 zcQ2pZNj6$&$gj4!hDpxQ0k-CPsT+yx2l*HlF1WXhJ5rA+_F04%%!la7%`W|E;2qQN z+bKbwSp&+P|JY|y=vH8lz&g-CFTRBv#}UknV_%P2nmNB$(3#b!Lv5AZa{{bL)!$x? zSZC$zTwQJ)Eq2hMtdMh6BwA(jmVs4K$0!^QE?%HAUX#Of2Pu%QFB~SgqObuoBR)ri z%zmKc{NhoL?{~DFzw?bYYlaU4AnK!gY{@$V3lMA1r18FRen(5ePf5KD)X?|b z=ldi0CT@T}Y&K3@mO$?3TiKLCUKg>5w*=ESR+ zfg0Iut#Og}Qe~b;SNDUW8sv5W_{;2-6PneTl*^i{ZqqVC=@mhQ2OB+s}q7P}L;ZsEn50;BT=B>0On z%Un~WBG-R*@Nb%|#zW9)bcjI4o~{S8?XsQ*ik)eIz<6UZ_ z=^S5}TKi7SciQAJP6w-J6%6g>v<=JW;%KH2`c$PIQ~X$}7jMaz8Qpf$-5xyvBY6mR z3|u{K_2%N%i{SPcDZ9z_f4x7MZ6MHKFD}SDe&K><9@$%yv9^cI}*hL9cNe`TK zYCLRs7UB1tUFF;o^p#DdRyn}M2xzyEOdQ(n{c#j&d2zrq90o(IG*?=6ANG_X7z34X z(CG~c)NM6zebB|OlsX~&I&OlQwQ5((K~#5#6GL5nw$J!%MjcCon&HUFK=w-qJQO3e zi-x`-_0VAU%%QksxLzBa`Vi6XSOi$)UBpiJ-Ahakh%Iea4TuB0Y-?za=Gd=HJ_4?0 z0E~??KIx2rKRmN=zJqxwgp;N{b*S$PIg{v-6OMt7TlvkEb}-&aPZy z!sf?qI7&m*VI9B@%~-TYi8{zydCq|r?!K9FrXZ^z4qf;wyi`%}t3;$fth#EF6FXIP zaX3H`y^ zH|dW;{n^e%NJ>5J>ey7#qph0~T&jQ6Bl&mo_B>G&)nvBr*{2=%eJ8H2KyV!FuvH@J zeS%q9Ayq@N4f@-~6Lsc0ocs4c_D=*fkbU;g58b~#x;pJo(TUss5uo;oL94|;!t$0L zohD2^@#?&-#_r@`45WJU?g@j1c=|Do8kD4;T?!C2X#7B}$~F6F8^i+rV=9@*k%#D| z_in;{(6w`3_b0l7mJ(_HH@256h=kY5FEOB;PWs@Zh)1dT-ASN&FjU`Y(1jvD#{NfS z0*eSM2D2Z#f-Jy}EdM_B7#;zlYy__T=>+RWpxwa;zaneT*CUB*(*?lpH0Y53jUH@5 z0F|8xmEY}-Td<=IF$47H1&a{RSyJAz#@6NmIP@`d_v#01gVe>-;QVG2WB<>7&?{B% z=ywq!DAg0)SS100%m=QA!|Me$wqbDnLe?6jpK#e?#hBD!ycx~}(=ZZMU;y^l z+t2t!Xxo+IUcO#3arJo%B^<)_68Od(>S*28EHk97C;chm>7^9MU{7PKq}C&`>gD>)$}vQPeC+r~XUmxhe6THD?BWaG)0Uv)oTZCJ8P z=C@~_s&hM_vCeDJZ(ZYN^?lhpJ)?SF*AavCoNL?^ z3p_%1xcX){t*9rqckub&VphGmTB^_~w{^6$#~%LANAD^j^`~|~Qb~NY^i4t+I*J1W z>G8sYSn=J~{fXeuZCB)2WlqV;qT!o23N@u8x?ivhO;)5<$dmg&GjJm~k- z5Y8amXs_ZY+bnSZ@Ejy_JT=3z22yX%M*3=Ws*lI(rM#|EEDvJkJ=#*tql?@h{eydv zhP+p}UTd!)zzm`^_l@ip*vT2J#loD;GAZC2avccB%T?K9^6Kvs|0HWKU zawz1U?fzQ&M$}&ZT|TGakUVe{d@@Gffd}UnCZq7QV!+qWcY>yD`A)PEz)r|bF*ZO8 zAdAU1$r-f~)ti;Mcw)3xpQfx(oB0#?^o1~O@Z24;rYcNV0IfV(%Z+OseJ%xp!@gnP zomV5b<6{FYj$C=w8<=7H>Zl>7YTt$_r5(QaY(+P!X)Klk*2$?;f@JWyXI97LyUBPi{m8z!g1Ip(9?XZN35 zsF-Hb$Ne^GLr4Ix#a?xIzTYdEnZw?<`Nl!idydkvZgP>8GL6tcf>_w$V>A~lctmWF zC~Rq5aVFEQdb&PwGFCa%v{8goU&@;Y1sLPz!?Y3{4q>u*TgE8*|K`0t?&W!hwg zsNvM!Bj|x%LJtocPZGnxIjMY2#F72AnjlM|ISn&;1F(Hwe5b~Uji~2p_w(&ekYDfv z)=-Q8_jl0_mSK`RvH8xG&P0uh*5G?6JpJzQC2wKko`ZiD07re!)9p6XB&4)jTbXgGs8%M+q z0L@HY%j>$#rm`Qx0-%suza+{@?l{=D9=rMRX8@+~P!1xvBq()+d|*io4!J_h;r{@Kf7I*Z+v93H5y49&BoXGg ziuB+|(=9tu|Hif_qYcmA)>O>MJS!+8(| zM8mTIr(hVsFW3Jvtqa^tg%>ysI(l;8)5tpcwVaP6ZQ3J_M$Oa=+hB*jIc;UjPE$~! z#d@GE2DfZk!*f8@#BR{J%NG5MhT9y8dX*$u;8n~ETTk9&{s4P*8+<7t$eZBbwpgEA zoyvTHP5#C7Z041;2D1lwmE9!c^!o80< zR(KaV$Ft39HhBT8K{2>$2Opzox^vnQfHdoEwe&D{@cDa-67Oket~f@|y{&T#hxJRa z^z6V*h%O&rqFzG&>{&?7{+(oYRC?er2ugAQY8L{cWYipJn2)O(tK+=|edBcK<6GK| z#vqBSL8yyh8rHXc%8B++n2XyE{i*edo`rF@~2Ph^*+c?$DJRCErOD zo_mMzn3ZUQl!f)4p?l_u*~j8T>92!+PR>hy9WX)y>Uz)b5TlZ}h`fLq9dgx2SkeVH zv3c;4?1k^q=w))NU?LL+v}T%ipW{JhyWaCbk*md2`*K%XlS&GN2}R{vRiX;H=U~UQ zQ*49({EegRIp84;72$eM-}w{HRH&I6wjimL#sc6Fw&yy(`Ao_PyR@tu+%&_W3yw>z zT-`^_n&TwbpO^G}G1t^EHg%ip*Xuvk)z9RA?FWl9!ocL$_JE8A3h4&d`;5fihg(>u-u*4(~)l}9lP7z&_SvG zIx)&yMj+||7$P82PXY9tf`v0yPWJXQe<38!B{_Ep+CS&%hBw~3T4V@w*3^i6!?|)| zZzRRgX^V}ve13hc&$R)oQ%ZHnex=>RwD|k+eLtKL5(lH%a$(630?HVW6P}5RlSzad z;CBB6G=MLk5)dgdT5d1)p$sT+*HAJjB6*qCUI1sacx1=dNP3W<(k_EOgZb`fJaga#Hj0<03Cf*2#Q2vEJ zwqA)+T;2mIVt~u4l)9lXxhk($n3VZf9_4AIe&_dGUGB!3LhqRL&`&;@ylbEhe`Onw zuL0G)ckTZzx3oX|gW!;p+E(&ChlFcR$`|A~p{TG>V?1j%V_ zLRhAV(~jd2DE=AYV3gWL!&CpMT?mm)Dh2i}GFRRwfDK|<<{5$Qau|RB3Wb$ESJ1D+ zGjo7HZqF4cGU*plMQ-s^h?jX&oDKa>SNl?Ou2-xE0OF?T|F~*ZUu{>I>YuA3UP9%$ zKF16xd{~u(O+N+K(D z;eqRwf2vLSkhq-j^^)l&O)&!sApL`5jr?-&YEU^IN4YCuU1z79o_Md|+<8RLCoEC- z)vWml{DyqKN3dx0$-nUSW+YumXcRf>Vl=+(=AV6dTd~eNS_K?-^K&XyM()(D5KsRZp62`}&$88^5^J{Xw+rrg?w`K8aT4>o#Gk6mJ zu9yPEQJG;(742~%dJCe~AQ(%2R6vZG$zef_H3sGKKIYe>LR@#bzX9b8V+f{qnTP%{ zoc?ru_)bv-9FEDF*S4f_jK6IDk8!DH3adAxw1zlF?fMO0AsFT&43PkuSR5aZOJVcjv-1HV8UH zObYU~h@UKEeRDMCw|VTFwYl0*#EOjCa|8vSTfPDkT)yo-34Cu+>itnN9~uGsT4P=zSk|)_U8wh@R~NF>>y^nf6T10aJ0m zgj+@vcnIX;pTR9dW%cPzVsIsKLdL`;#4&o3u44W8iy>x%a%VG)>z|JC3g2AgD^c}F zFi#z8>@g1Z9Uzf;p1bf%rX9O&A{HiN3jVG6#{}BfM+e2%QtYSV(+@KP2Cmz9Sk4C* zbIkZDdrwM{8iYX6RcfKl#sCTeK(85EhrmomoQWK_33p|MCY4g*0S&#gLRFYdfPbIm zm8_WV11;s%m(4McF(yYbDqFlfjR)7+G53Jq6RRjmVD)3;n2Yb^_Lm0oWW#qxLa;hU zU);1HVJZ0)eb$=!r}R(uxvjTmUu^gAFNWzEewD9;UyO!{gC3HM=UI76cIN$=?5(}P z2?h+bYkIW^?7Nf>)qLxN=)11aGl=1uhD39VQX5Yv#6_p?g+M=TH*Fdk19_j10P3~$ zGOO?xT@-Uz%&uBp2~7@OCB7%qLQVl;3y%RU(El%kOH{N7hsk#nvKH-F^V`so!HiFh z?=ikh=G`}=^3Wx{{xu*b4V)*B2E3KmUHO2EN`koqcj&Uo+!cRQuN7B3m5O`u zk(jmKmkw#x~;o?iXWqU%4eswtobCZQm zBu6UwVfYH1ZQoFRzk^KZ^&L3)G?pp7SAy8y^7+?aF_4i*vbXJU%^Lt{LCx_s{^8;kdNMFvgndp>sPc3Gx8G~lyj^ZVQ&)H5Hllj8)a-3h8n^=z9q z(ti{Sf0B(yxkFPhD5Z2_fe(U%nU4-axeTJ`_84L6G`4CMpwY6^s>9TlAd5`MCAuZp zpmue2vkc(F#c)VzQVq{4FwGF}3}bJB=ZIrtlq1-yOIc0obPud){(g?J7eI0;&3aMWIm;UCZ3DTeD* zziFlVK2~bPkk)VXPOQ-QWr;0b9_s{8wiBbl%5QbUtsfmZixMMYTYQsA`P;Q0KYrPW z3D}0sa3RI?d%np*ClExk@A&SDR;NRx=a6uFWCp8)XFBZo+D(h29U#SsN2 zT+d>9YG$|b>#Mzd1h+!GEO*D|BFCZXb~M3H=vhU*d8-ox${Cs@lY70aIbj<{wSH4D z*KM*4O_6o}h(yo7)`L{-Q8Giyz`?{L9GAvhH<|w1#(Un;2b0;wn_)+)H$+@<*Q4RD za4$aKqGbpQ)~MyD`Ik1JqR*Dh_^EDYiJ|I916cN1u&Kkkw`#hEcTRbKZlsrrI0o#~ z@ns^Tq_G0tI$(m?Tw&oJwo)CyILO0+tl2CX*#f#{U^uCogA(}YC1RM#<^s_{S1{Wg zg92tc2LaLDyh96euO7-(Y?ITg*w*3=m$Gz8Xnpl0NDHT9f!v$w2RyR_-ZK+7PE_O0 z2}I;=P2<5$2%Z!+6N*7^3Xc&b-9! z@_)7ZoQrgFpo9NRxp#|;L$;*9_u3e)^{n;?GD?}RhPf6t@}Pnma8x!92wbF*{iOQi zp`Tb`&@Yv$Pb3R1f8!Zv+*wt*Ppu>GBH+DDJu5Qh{@lmizP~2igqgg3iaSX&=gUb* zbJqNgylo6V~F{%spH^7ZDN?$hgYYRZx6XzYS#uJ*{H ziCr6bR6`{TBhn7dY~LbfvkC|`btj>wXS27o8r-!>iWKd+Vmdm8Uo~?|X}?@or7To0 z+2%FAzk%DHZB7JO9~u83&qvfXN+G#lc4?3`CR~(s+C7s~WN*L5_FvAbXDuobJlPSc z@kM0#G*fSAJM+AzaYoZc+rnbNS`v2~C9K+%s(ML|$B5tk?Zg`!O>(SN?>~1lLEpw9 zmTjz8yhoSS^%uyT5?132-C`yfzz=th#GAqQvsJ?Vko$BgtZLT5biHy&wmPFG4H(^tVG>So-RIJ-y?UCO0kleP23;h5vJZ zpkYbO5oM58^lNg3oBgQY1c6cy&VR0nmo)$jY_M|poj`jeZUYiUv=OiSZum+=FZno~ zV6;I@FpJ1(=IEb|66Np=E!RxHKltCc*2h)rtZQI64tY7b;2a8qEyQV$Lt;{J$;5MD znk2#9^`4oLC(ws~o~cBWdmz9c7Ub~5#a6Nf0PaP9Y`90*IQ>mK;FBz#_Kxr>#W5CL zg0Y@O4zY1R-}kj`fvV0m%sxwS{`0YnpFZ}$f=jfSUs`QFr5PX!0!N#9=l?u)zBwqN z|3)l8(Eqm=aoomSgZCe;bk+)|>%9~jp{p-ZWaD{{qwxq_E>Kp)r3M{zIMOdU>r`-B zv-4JcT%!9R?BEHd5dbjR*3|L=4d7pT;?-+ju`b&s;jxCF|f!--Kw{%B>o^fu{ zIKr7$*T;34i-j^HJM%X9`{N37Mf~14*>@?HoqB#Qp=8V{`+m!-n=-xV)sblpERm6C zl;K=v778;n%Igfl2>fg2BC39}t&?6zCh2+Fi2vZjYGe8v@L%Y%dVDDX*KGE*2?!R7 z4G_+T2W57M%Kh zJ!ry~C2n)kI7MzGumpQ|ho=w^wPY+0+rl@ z$HKMF&zhHe4ivoV1x^?^VZru$%no>8Q-8kZq8JEv?Ec@mUL-nuh2s&H>vlgAoy0%@@_?|hCmO$G$^6Ti0l)D z?~sZ@ZjEDEyoGL{I=c*tV5N2`DF*1b>3PEQsQ>jd49VvK|1w;0-G#^DvXKgw8U;OAHgZvuV-{(8tR zD8b<>jp})(d%_WP@OKNjDw0A)_YST;z=~`HtJb7_mwfzhJ2sT|P^i zP=~nGz_!7AI!am|sTEz6hGSFQqD)YQPv>sj0fgFJm)A?6f!eC9lsC|g(DZ?4( z__FCqkJYO&PN6{|agOGgycGM(R<*EnQ%C{tp;`N$q^CT56|Z-xS6;o8v#m$b?_AY& zj}~vNe6U65YE9e&3MtD@yEhKX=EUpW2IuptBCOiR9`{-DAGYd?mpW`1zetW0E1XB@ zGfZ$oWMb{wx6bK)*QKL$u}}AL@O?Wn*lv@TWaV;~*8k2u2w?&x;>I5Xbyn|7LHR1V zwd>8^%zpPiA@gTNGWoB%->6`EbN2mK0x(HX4lYfQKj?$1osymIf{0g}B8ql1F-%)cTEQcy6dzjpt3?%{1(OtCXYdBPGbDdyhp_;le_@tVpD4@b9f zpUqAQ3QU-Nd=!iGrgbt!z)l$i#;Hk)p`+h%KKkNEc!(VmlLMNPI?L}MtN^VT1^8SQ zi*+jCxsl--<)p*~ckAK8QZTh$9rSH8mSYh)R>koI{eEYc1|*YodZ5k_If03aULySv zy=FPo@clY~RlBbyz(rE&c=Bg97A;qg^_D}6A?(bf?}WZ2V6Hv>6;*!>dJ`B}#-0?_ z1QVO>ErP&zuV#Jxx{lSa&3&}4hUeAN1o@Ygzww=*&Gs2Gb>!b`wvREafE6szWbU&Q zk5V?Hm~&a0>zS^BV3^pl_XzGm%^1NxV_^Ov@gCW*RcR*z8VZqFHuos^ENy;D6eZx& zKPO0S$p%EFXKx#1mi3T^m<)S z;CEMOr;Uxd_(_9TZGHA{kb?ymeM!vUqK(S<=#TJ;;-Agy7{5gyi(kJrd$fM_N8yRh zC>;qtHWNN8E%Ri_8YCP)SjZ?qw#pa+Q(iT?>q5?eEj$IszDoW3x0QgV+5Vyok3xJQ zVCHwWV=vq6?;DU!UGi9mUAiUkLQ*&fJz2L%T&1EbiVdUZFmjZvW^=4IWQ@aQlfHMw zZCXhH+=EzbYDA;QfacRbUavT{?tBl`<>?n_MK6)w)BRd_;XJCLku3n=%`z2HIbJ&k z3ZJeFuV+r@{nqKuD1E}bSG;>}c#P_(u=kSTXFd&gUy#{J56~NTDRQub3T5)c2e6jL zxSl*9FBw@&!Vc`X- zr0CX$1fwPisa$E!vLb~uJ=EX3qta}Hn@2O!7(2Yayn~{;2oF1G~bEs?o{fB6;l?po|5**UVY+UrF zP|U+>RwyAMzzf=qY_TPH0f!rxpH2a&W5c;g>A_wo zhiPbN(g=K;9lmHJNizgyFf>#4h+OBWMJ?&fWw@*yJ3+}7( zi1{RRjjj9^R2|~JIykF{VvD}Dol1YN9}k|P+u6eA_}OVaWZ|Yfa@J#%pkvj!xq>Lu zZ!gSS=5OF(#CmK~-oK4C3^~Ni4TpAMJM5!)T7bvdfleAqn8(e5`FuDvp+mc{RP(j_ zz%Su`{t@;w>sraq>ggY!Yll<&KCf|t?fcKoypp^Q{rkEw3KwYxV{J|mgKfB4c9p^6 zU;TmpzjX_T)uQz`scH62gwA&t?VaD2Y^0&r^{(sMj_3P(&y2OdpAG8*Y1MDu1B^;Ok@a%f9(-M!G2TX}!vP z`91AYV2&$~tlb}72L9EHFsW75E0NZ8lIi%PK-^+Zz{JZP<^OUahRpOwpKNbdMdCFG zX}I#03oQeTvp^9k*4jHz*gNhAJiCo!*fV>vzWMPXwu3m@8_t&$ll4c+)HR#VNsY}b zg*K^<79Rbx!JCcx3#xBo%L~oGT#dfC_$GksRAW~1JTyBjWVI%H!)rs(Eb|}zIa_w? zl8-!dcJY;E6J>>eBA^vsh?l~80j@f6LiUPFs3s13oC0S9K4c$_ewvQ-!ErXV>CQsi zbD;R8n^hKvM8lB+8KxAIHNfAI0CWIEz2ib?qGrTlE$J&pAgS`m?oI=Xd6=h+&-arh zIv8p7{yJeQL((MY9T0_f_%^&Zo8fn`Fuo405(;Q*Toe;8d#LvPhoLbWN3jyQG|$lG0N)|2LV*C9*YA>Q^Rm?AGL75 zcaZ%Mja_-<`+MFZ%_zhR9w0KDbDB>Nsvb#LQhT3?#{1!;*GTNf;$9ht5b$c_BD9f3 zKN%lLH-qrtfL9P|7o6SxJt|Lc8SGa+2IEswlGgk8&xYkkZ}W!Vpyv8nr3i`9#H9%j ziU>haw;_`cMaFKs1?KDFh&#yz$_`N|Jsd?Oe%06!WYkY=W#ti7H0aL4GIgPQ*2l!P zh=+wWx!3JpZKMvEOp5AQaE_sWaKb;#5jyMt`>kKr>HjX@v-@;`>yP`25CRAM=5Em_ zs8a=#Y)+|*gabh7Otz@QN1Zgg*4`Pz>apw2jV(p81h6W^KZ#I$RsK9U7{ZLE8iS?% zI@V`WwqyDNY_T*^iE|1e*Yq{#bPfvg=x75H-*d8{d|6@KXPB4s7A>td>24hj4F3hm_nwXKe{5DNP2Ii^u=dI2#EoU7=**J&Wt0HEA-i;E&5N(M< zPPVP8z=;LtkhaA-J9NuQ{~>jC{6|M%w1&J?SP8(W8?ExQ4eA@F9n0Jujr5YUi!$wW z%-Aj$r|l>(5si%oU11q+>-Cc0@O0IV@oES&JQYNMdiU?DuYNJPS<57^!gbs106!DG z=wSPcDET1TVCaJ@j)l7@DJU7zFk{fA!o4_Nk}C(VYtPh{ zt-^xfCCp!`-XZZ6w*L$OO&j6vlqfd&+*r?Va{%fn8%X+HH|sdyDUG!llf4AY+J{jy z|E)5@atwbt?XjyAO`ismP0QJyO7E9VF))Z>&M@G)?^=?7#p{oQccvR};DOut?^D9e zaKWqxZ8wo*Ne24_{_)O*lw*C9p z3XH#Gh{(KhZq9zHRIm~F+W2Q-<1C4QWU$z{%|v3GsclfOp_R|f&UK5UaG)*! z7>tD={whP;$S;RD0+2Ut3Jsh<(IWp7gABVif{|c15PfsZgg+*E`a$*$bi?+^r_cA1 z)PPGg-2XAeC)N!)zor;Yyf%o|PxV*yc!oEf{)6}st1?<(y+^-=85Rw=z8@lIu=|Vl zMx}mlh}12bQZp@b4d~WwU~6kHGhf3G|DdeN~_HVEUe#zSMKwQ{IvQ8~#O!{iZ>i7qTm z^_Vq1`8S_)yThSsGuVZ2L1AbIq}*?dT`oku(jESj<3SWCw1ZDN zJNf}9F@L8?u|$qm>7xCst!={Uv#SmM@;X(^CKflR$FrCVU-ZJP7H_ZrilJIzrl^9< zc&Z4|oCi3o%f|3VR}6jBU3_6H0ENookII5b2n2jrIb5`a_s7L5-F@v(1*B=&*YmH| z&%V~|^tc&K5vePG#){h>s%|d6T3=s7R7}6en{R9*jNbZ-R<5uj67sKz81WMMA90+G zCFnMm?q;rjY4uy(7W!eHJ~D`kSr1JMBVY%DqbzOlvHg6hVbjBa2D8(kzN^Q!)ea0J z3>7-Cn&a!DzWt6gKV@n5O!XE|28@B_5+X1;)|aH~)@=Z8sVu#-QF;FgeCz!y9wx)0 z4gZ=Pqom#aIxK+`&V>?3hz_*5*OnB`#J@Z=f;M4uD@)UAA~R@<^8UK zI4t{ROuVoE_$POK^Ty1^&??Ud9ebTQHQpqC#iJU`zhodKB^|RD-61>^jqwMXFtiNt z!1q@aRWknGQUG9B@QgzXD>?H3;&{#2dsH*lsXW)5HW@-8Y#9zDnOu1Z#iECr^`;*% z>%T^}5FV-}UEK(L46H00&6?{l7f9=@=Q z2G|g&I^=a9M6QybnzdVYA>UrV22S@b3b5)@^jGcd;!TM2SR`)E2SYJ*^M0jKID#^v z5C{kga;+JY{8_f*+d2x?-GKtg>rky}x>W5us5(M9{@1mji~!}PVpHpZq{zhO3YZaY zZWP`<{?3*8R>TTnDnsT>APSU){#P(BFGs=ex(ALRjYA@SEtY@16FL- zuh=ZOscz1&@aVfgp0wPN~?v@VrZaBspgQdd9az= zOm^~0aY_k6jDeVK0vaxyX}})IBnMKQOBkjM^7lyl{Kl_zz}!twKSexhRLEYPpHy@R zNoNB^chMN%g8(|w>!#dZ9)w!?MNWsvzm(p>#L&Nd3QP;AWc#b;rtC&?5I&9%gV&wN zZcL#im;D{P)+rbqV6ClGhg1>9wc||<;bJ*PuUZPj92xP5oCp~se%M~Mpf^Q3qsiH# zyA4`ldW7f5F)2AK2Y|ZMYp)fpZY?1BQBpX#vWW}#q4zQ4H&B_IeD{lT!LIGiJT;9KCA~8l_w>ok0dD=Y| zcqkW0>W}XLR*0MR`aFXlxTdzu)hc=w;4!mSQc*`U9uyT(^GjZ3q;f1$$J3T{|6ZB8 z7Lajh@6fR*W;aR{9KbdGbZUAtT-Bo!-a(S*IZbPE`BK{flmxrqNk-UJl9#b-5 z(w`eJdQ2@TprLynJgb^mr904|j56LH>(HjJr%v<)8;x;RV>M6Zn#6q0S)rHCZ4M-a zv`TT*CO5}Uzw|AB0v3p{D#2U{>gs21&D1SZMYi75`PgK0t42L`+0%X#tiBGX*{MdP zZTSXva`#N||GDgWbN}Od%P&*f=a8ge2;7ENe#%Du_V$Ak?}w**T4Vhmir-dx3?&yR z@%SaBJ?0O{LZ)EG2omouZ09E)Yl6Bj8+89Ro+49(qFJ8m;`X zQEfB(Fwxzr1iGq!9-(oI`<-t|HaP!e6~M!85_`Aoa`$Ia`7%zsIIt?i(nIPYEHut^M-U)6`lGSXqMamYfYn2}RI7{2{OQZ( zy){+9 zEY(A~!lAIw+RYh+;v=VvbPB;vp-~OmbdTW0vwY?LWP3&O^6cFn;^?CxPxb}$3WO3} zV3!m&_mY-7Vr*FO+RG6jWYclR%X6A~^U6!=hEwhnqPW~M91enTX+S`Fg_GJozLOle zON3(bhs(Q$2|1B-M4HfO6a8~%UYwK#=Yget+fHtDRs{{eT*i@y`k739!pW%L3{Jnf zrvYJ7F5y{cg=x;XPngrpZ0q6QUrjbw;ERGq9dzvjrq1@Ex9UpP=~{*chFZQ9ce!zx z=r0UTW9TEhIip$lCjTzG){78vnmO2ccTCinmR$PIRt?pW(QP{xWeKhxC+X3j@2}F8hQf(D=Tc9?~IjoIe!F#)1Pj z&cTqPLJ`*JU zL5sxtVF`BKD4HQB7*vFGZ(Sqcv9wPwvTM8Y__FN9)y77(>jX1UgG4&)3#$V63Z&N@tnT$V4NWI2V5Te5{XXt3ct)uGv4Fq?**aO7&GL zGQ?N$mEJ7{T~ZQQDfA0iol(h88zZ0$v0~!KjAy z_B6qMD5FtbTtw#d?zJ0594-==TqcIO_Ij1!BI4vE`yT< zFPWLQj|pnbFwfFARP;}uyy{6Yg|GVvSn*((CyqmC`k4%=&ihGIp8`dBsjawRw{C-S zA=9Oo&xhXw<0l5<`TFx=qT?HUmZw@4y;VP*TZa1)56JQQWoS%rawpv|DyFRNM z3WK`Q8!n#7l|hhq*5KTfS*H31vLMedk52zAq_LmA4~(1a&!g#$PC9_3Lre0ULl@OY zd4s#bjJy=sE}}rU(5cP5THz{%wqR&xuvg7-h!sOM=)YK_EZ5e(XP5|-4_Cl_l#(8S zVP|tpMU!_lW5r`K1Gj=zx1!8ShE{Y?u;{BZX`WwpsoJD5HI-RWBzk-u^k<$vq~Tegg- zy>S|L6!37&()rF18i||4xMbtE{t(H7jpt^6aWEeQ&FpUW=I!skeip(`mx%+~P~1y- zqBThwRWT`RprIibenzD)3I+n9NGGsVt?@loof=WTLi|>3ZR0et| zF7S7QIlw89GI$T84Ar=G@bL)!+(cKUdzAnUvAf3JoaqyfE)d3UC>S<9qmEMHfnoLy9X&z8g{`EE?_5+ey#C zyX6&b)MfFxLjGx$p>es8Cjbg57_`w3Ygj}xIYX#skT0?)p|?ys7WS@qxhGw^RY+ri z8)>F{oN)=Kd66wb=Bi3EcC~$4%i}k;7jQ9iY*ars5XlET5DKgmyfY=}+y!&Op$WNj zQCrcpqw!{l!=zrX@T^76$f)a^y#h3H8alj@msDp$^sG?lL|cnV4}(zPqGXz?`mkmM z^2mLktUUMj;=mM5P{MhgC5@RCrV_A90%94A@M%kNp6Pc*!sH2(S=?sr8Pc}pE-vfc z6PqtAj$Kn!XL*e);SKVisVUs9V&ja2SSf>cFvEi1&^y*$nyx zF+9!4w}(lAJAv?7bOEB2fA=V>NsqUM$p8%d&AQ=GB)0N9nu&O3cn1XXCmO(33iuaE zCMbLcUNXe>W&#zq?F8nS*W@BW@)z67V5@^FSkd+DLk4D$Sf%!1^Q^P&i(6ox73o1r zkmH?7M!MbRj(nnpw{1Nnd~p&!`g@MZL4iN7EeJv-nYAwSPvp;+yW^C}mq#J6&U&(# z?OVx$$Pbx^>UY704bP2kwb?BdqG8iZePG=Slm9J#4w^L+P1xHZ|SqZO~fk`P#O{-sm6< zFc`aN=QANGtlL1@(cJ_P{?hl-tGEPD;`2ymW{ZQ z_dL!%Mrb6>ZIrdNgFPlaLhJ&i3`kBXqLu3Z`2=GQMbE*^GDpOeEatC$0P0P0^ERVe zMypkPKvT2$d)4 zl;{B_r-vG+-DSNEq^@$jUaQI$$Rq;J!n6Pn^{+wkz>>H^TwGLRGVg946$K5G*}~i5 zER$~#-{t5OaQMrcz^Bb{2AN6+>yE7!;NvjYYU- zXSkmV_1}Tvgi=0+Ss6@QWsv0+FJHlT!r+7z2n;i09h8eFhaW(D`M6AYer_pVG<_Yj z+GfD%+|-PtGqAn2tfIX|YnQk|^%dc;_hVmj%{#3miLdWj~d*8nLz zv*3h&2ki~=QPtGC(x&LgB1)E!_4<6%?~>P1ZPD*!ZL}pb;qYK3|I1yJ)CjHvF0rl-4aeFtF9X9z5@k0(R#O7k|lcs(L2x!X3K+T1nQ11=v z_kyRS6nTe<;k!vNU2nQq7HN z0J`5d%6$rQiRi;DKka_kuLy;r=&Gt`0J_HBpry=@1~(510S*x)f)TI*dw?*d6aL8L z3i(@jEr8h{ZIUKcj^P<$Kh_Q8U_0#b6%>Aamg(zs!Fh6A*nxA>=C<$Cq^9M}Fy-3% zm97ff!v4I#h_fiK>1Mnp^O2^n$9UdGU#JV9L@P@)Pi@U5B7g7ZBGI8Vg?T%wY*5b) z3gS_^gSdcirG~W)E%atK7AG$EDO(O>ppUbWNr!3@iXw*1g-L_PK>AoXKR#V_#@$We z|I$AiGw9%THA7~KXe6BmLe?m00Uj;nwd0*3rX;z%IdSM!it$q!d`u(u6g&tKGn@P|P#|5l?F=BHCH4ti6v;&=D>PZnF ziI#6f%#6Wvyhj(`8AH>Zu`$q~&lQHA0KzcR)^O8L}ieIAKkZ z2+v4?H`2;K08+U5>F?SWbH;&agw%|ZiD8Z3iSq)Q;{X%c+ z#*|0!DVQO54R~B?uLh>6MD;G|A7SQUjM_UkGdZ|nIVtuw_SD30(2x1ByQFKbmPbbj zQG_Xdhp_-+k_=>@&>j{I@fm)ecf~EQ!7ob^6`>1gzpF>)H1T(|K>cN$wTNYC>zUr>&C7EA@#3T0{PkIV z(8+~nt>(F$#DIv*A58(JbkM+*g^PPlC|XOIo@G-=QTs*KNc(xYGDD9or~znxtWc&9kbB^3*Azj?# z87u=0(Wp1R1MVx;G0-)mez8rsp(|VEJ8cOj4vfY#x zEt`j-!c{i^Qklbb7!Zbe8cTo;shPHPSbs>~3Z6rt?;`+2#pCB%1RDUM4qjUe=F30n zLL`b41S0m^s@2;yf&w2xHNy-iAn~```xYq1kT#*o2ad`65BW<$vpq(P%%iZniW~eW z6h>>iw|&D}*p;F|j=tz%W(vIh=*p|Q+nHI*T>S!b@R!4Ng`gDsG&sG%$nGXx!)oF% z2U%_#yz6G5O`rTUOt%v=~ISRB+_)*P{sL3|0lNv+kc z`-WYt(vbGPXm46y`%6}sG?rBwPB$Td$5?_7c7j|mAhJm5UF?bR{A)NzN4VjV=e8@mz$v?Cl z_85R&JxS9GR{;73-%8STxY7x>WcHMC6`hfo5evD*VoXH1uaM=7L=b4zbPT`T1zf9y zI4JBY;TalgI4CRJ$K#@#9Nv`J9CCi3^S$P&R{8k_u3Hx{6EN|cIHO^6Y+ID&#K1*< z8`97`i|r<=rar|ld<=kris}z?FYXdzG(@j*@;<`DX-`0js;1aMT*5p; zPu11-a-|`6_RyB}Q8*nQzAwz$n#(c1B0EpW;PLbxDlX?VQA#hkE%0=uYen>YhYJI_ zia2SZ)EC)TQB`P@6Tb~{f!3`P^NSQp4yS`N^j&SJ=7u_^Ekr&1=Jfj}-|SS*7^AOE zCwX6m?)hU;@!O7vzkhlV5>E_e191dIQ9Zn`Vk)eIlMv6F@~Grofoqb>$avHDZ{Zj( zODV+7$mm0(8cG!eO~gdh9;kk1zCP7f1;_>4 zksJ7OK;sY?^MG~C_S_Q2j?7TY^l)3nY9-3{C^UI_KR6 zZ_|OK_cOyW@}#57F_O8owR1^EfL9jv0aeGC;nb87R<3s(k(CeBlI)GU8!-_%763+h zjD?@8a82;E0%4RsQz!4M=#{=Tc*E`=XJ?R9qTD~fG>Lh<4c1WPP%>0VO^SULWP=@UzsS01pddp=$1{7k*o>-0HSemRmQmUq?iQ`dgI z)K`HX&n~akeH5{+K`uaEs*klH5!2LxOL5aWRsQz5f^aCIdcszta#6Zt~)MBo6H z@(N_B!x%J!0)0Mf!Bz) z^;?p6Q_r@=d{Pedh>*(TEGR5!D@={wSHV#T^rdlxW=Vp&_5JdKk0=AHT+#EeP|;n69T~dOjiUwSC6Dg)`v( z^e;zdDQV~khk`l(g-VDr4Nk?Dp`B)pR_syt1@WPrU!O9T5Ou>w8&;=z z642bJMD_U>3}c3h1zMblm)vIVqFDwt#fgy4!^BAmVmqV_D-}f+7w8fzGd*G`^=;zW zPHuA^r@USXt|xn!_{=oLbx0jWGC@x5t9e6(jl^yu^_B8vH8@htt&BTXbW1m-^@_no z73l^u$LrTz|Lg6nvvQ$4UT^Uh$iUp4zUhQXp*HiJZNB{*6M&M@hj{Cm+U_Y^`OV~A z)qTy9DU2iRl{1_($WG$vL7$Y>Aj=2ovV-q&o9DFD|6M)%TJ-flC0-4qb~wU(8^}Zw z(4X4l0)EBH;kEL}8dBrxz^CEz%diJWQCi(BW0D4?#NH0aKE@sUvN_mE6QI~fpq}zQ z2xRhH+Jc)i0u~6=-5`wPKc3e%a4u9Dt~_vxEIzm9Zp-8VV=@)TDPOI|dpSL6s`X4i z^jjzo6i_s4RIN{Gz4MF(8kk7jAi_iNWp|^^sv&I>&vIIbI*)A~ML%B{4?eEnf?` zA7s2R^Jx2|m+q{J5Q_BIZkM=(qrUVSf)i#mTK>WdfPcFh`*n2LoMgQWXI6O4vwn;+ z3ek|jRew!6hM-(<8W^ig5zbR%*~WO;M&zv2_hh{Bzhk2wDJHL>UnFKU!bixk80#up z)q#?E$GLH4;;Om-w}v>Dg^eGbqTtv_gw7TaH<*vb^>^f(C>*X6(cn-U-sLm}xhFCU zhT8b}8ViP^h$9~Djk_*cxac?Nms@Enges>JU4(`*6;46kYxo>FMWdJazk8jF1|qfM zKw0QU*Otjx-ID&w4A@eA^b3;Z{9fF>KYizcUw{N;Tcy`m1ZOv9&mqi74Ao5b%`TXd zpm1p*5;!b2Yh5}=0#ypmwxi4|hbR~M;TtC#njb zF$P7T0rb-A#Oa=yXWqj$h5F0%OzEiIJFmCn1@cKw8w!NvMnccR4w(rcMfPXxf8Pyt z9$urww(Rmx5Gf`HK2CH7l9T<}hCGMk_3fCrG~?am@o|ZZLyE#$D_)w+?6l%*>z{jW zO@V)N{1%w`#O)1rxgbc+D{mYxI8|V_?qhm@_R;j0Q2*O(xG4O-8iTPnS!3Lsj(nsy z-%Z$-L6CMsp*rky%*I;VVurxT0XyalIv8=FAd`6qMrfRhsX|?FvoWeQ=jrDVAf7aPzY%CYE_ur;aWi6y5~XL8HD#; z!*^C2iIPpE#-$blHcb=Ej1Cq?%-ZOmLC+Y~yp$U6+w&N1#}PINWPs_-X=J+VE&nr2 z{7>VD?|OE{!1Wci@D@o53($(Nb^P?CU*6E7r_5pQ6*VHT7R7l)bC)h}B|=4Lg5tVj zWx2B|iMdxzi=iYRwCPhXuDEQB=;}7bk^QpCXhrS##mywCxPs}9kyxlo`{66qWa`9U z<&-FdyuICwe$3mu@#Bxwu3nSZBJXPUD2(lSOL!xe3v1Po9~|30m1}Pec&@o|D<2^V z9@fg9A3_+DhO?97)Ds4aLE&W$OZFc)N9!=5w}Rl-dOfZ%xQX8wq;>0+DjJf}8c~eu zFp7i+{;(JDYPW#U>}<`v0Fvj+-Kwje`TiYLfjtb65+}|~RV$Y@VnY*rM=T*!2tDxz=pr~y1=hia0 zQSZ>W7H^RReh)De7A|I}zeQd$ zTFn{bDFd|J_63oOwW=^yXyI1!zuk-DlcdDSutS!Y-Syi7cr4@j(T}g0iWmW;TFI${ zRDWwFkH}1iUkk+s3>DWK&9`l-jSraSe-Di-8Gi@%&0YARr=FR>&Jl~q*xx5#OyI!n z&uqJWv_|3yc-zCi@w---mYjjB%&~7?Vc&p!HF)E2u7{C}=y4nY*8OXC9ju7}4uI8g zA+2ukJDIHy4AFvl%iimUL3Ps$FNb~oyb1Q_4Tr8Z$ujh3V=I&B*WFlQdDBi3hiZL0H5k`76)X-N z*5%?5WASQG36rEl{M&pSU~EJwpm|N;d(9ex>_G=)TW4mM^VUk2xa;rw6C1&e2OkH$ z?-z8zwRnIqZLY*6Yf9Xp^I?I{vLJ4XehmvOH|FosV`}-mU|6+0SJOev%41B2!XYF> zN-*OEuN6kRutm`GDsH}S6HXTbuk{~B6Hd>Al@I%ij5V0<}{#ldMPId!=fX;)KLq7Z)lqn^QDPZo@BG$oUuPrKmCL?@G? zM9U%#CB7DKhf!Uh5#j}PSoM?C5FBDXS216_1oq40JTz8^`#lg@M%=|LM;0Giyg$Bd z!1SoatFr_FFzRNo?VTV%Hd=X+HPd(CD3Jb~1C=dD{M87tNAQNd6RvIe`Ox1nxsVX4 zAJh*6m+Q|#3z(G8@B!;lizk100@|2pq@be5qkKqHj+RxQp|gWV{I`u_e~JDgAsXgC zdRCvJ0C)$H=T+k`v7eRtwto53@M z9ifX;E!HvsP!X~mJVqfZi|KV!V5Bt?e=`9vW?nE`xEjo=fl{~nYp(y-)#ssv;Uk9WJ~t`HI73}>cmLY!|6{z1t24u6vlu1c=0n5hum_H^cao)-jm@N zLZ4Ip6+Si0S+b3X&+lA&=njYAX~+!ek73Vwhue&1wu3r*3G)j}>dX-)!1Ns7h`h6#>fG zK9uG#MTJJVHLq!ow7t9{-ztmQgNV7MaJp*Z=}zs*=M>uY4H&PznhTIuPeT0L!ry+* zG4YBdm5ekQD^s6iN|GWuQ*b0XkT9ZE+%VXRF{i|Iil9aBfK=NUL2)}PsoUb9aUOh& zSbiz3@*=k(jzH<8_^HIlyUK= zyMy={yi-#A{csIQtA9@#D%Tie9LYTcM%xe`C=#9O6cn`Ss16hAKk32wCbU%;2atg{ zc(LvC>uR=)_OMW&4w5ZnS?aAZ#FY2wBfM^Q)DO!#tMKr=)p{;h3KMOR*?}NWxu>&+ zkal{)!ym?bNahtB8*pbR>jP(^ff9ND@*wDU$-cZX0ZGVWRqE5%IxucrhaM9HJp%6C zq;i2X`a}E!*Hag+Y<2oJMscuXqnD1*sr)Qr4r9(-cv-xK>+34r>@|g#C*0>|&?kKK-sd|!Kuyh!M2jiHhrlv@o+;x^kC)Gy-bHoSALeVk6ML$P}9}=ul1wo zQNa{{wVb_po}hwbmGi5qBFStdB3_vDuYc)*N|K{zrLjeq{Oo5`zk#C`UV^c-mfbaf zn^In??Z$D>p?U?!6_zu2rChi#2>0%l@=D(~mI0VUC5j8t$pTjsz=uRJS)7p&&%?Ty zXv08#;5g-G4@buxLoNb1c{DoqWbhI<8kN%^Dq)28r}pOTRDy59MM$;rcgMnZl>6bD z?jNXh5`uxS&`0Fjuxav4NSui#%$GJU;pGEHTEQm=;X`x4OUzEQ=%`P7;w`pB=OmM zHHcv2;!oXBC^@=2#o7e~S04@re6_txVx3y56%05kLjVZ?=z!x8h4}zj9F=v3!i^90 z9|dlTiXFHT2_4>cF#fDz=bW>E0zTDzXP*KBnOjs{E3DavJ;!~~4eF@>^;Y0f(C zqjQ4Na}_@*OBFossj0luu}1Q<;O*Nx?3?!ePv%}}%#3B8dGw2SN>GQUpS@21T_U)5 z73fwD&-Qc^WPu4BonyAZSx- zck}xocqDiA+(L{PWmfWi>@dg!#{(4+^mgC(hO#tAeBn*BcMbQ)Y+cIhrM$MXbMgk% zM3nQLl)S~as_ zEsQ)HhXgTuQ78q_XxUiz3yh^U$r56O9GUk$v+s*M^jZz-1xRfZz$9p0PlhvGBWQD^ zn1KciPKvZcTc&|NEXo5-Dko;#AJkAVW(^~AN|F5loHN7%QRYLMfL{-kd)bt?o6#gl z=ZVZ`mQR9deIiLeCifx~5RJ5aO*JqHp93?m}V# zx7afDFknd8Lj!zbbunKS{GXn6jW)RvT~Mr)qyK+j^!$GzOXO>8a#kt$__S)6S2pZr7CjUKD2u?wxDC42 z27&%FHjAUW6m9=-*<0AJBTfaU0QeYA(FX_pQa$eJzNPmmw;QC{Tvs=KePRe9_N|f= zojp2?ddw2>{ZEFUa?d2nL+i=E;6tI^Y(ddqk}Jw%ZP3O_+^o*=uLkR8am!Ws0vbD# zKmU*O+zS`|HjrthjLuAQzIl^$%>|Gr(}xc?y!|kzEg5J`oTGUYTx~GCEl_e|x79Z~ zJhyM=&o>>b@Zh}FA3Kfbca7LGz9TO1qqJBtLTfGiX26jbH+1?OgR=n$4(ws_6bkt8 zyStnHkMu)t69i>N3=i)!WYx3n$fG=gza zz43|-ePw24M=^1wA`d$3g7xk&_I#k)MljZ`#{sVh)2v)TTc~ z3=D)1%H44uu92ylI*ZCp94mJ44I{*oQ55dx)YtmG8`j zxutTzZ*xBaSf(%!K!x=17M}IG&0vTM59cZ0x)^qn+YdK)OnmkI?c{lP@vnH;reOv{ z>wiXgK8XAOY=|BU-g2;5$NO2^HVG-L2GHyH=b7Am%%eaa@O`$J^P7HNsL!qz9JAd) zwgpJF7OFK+5hQdi z=MvcA+WV61o1(!5Qt%zP{#gs|&)nvpdl~r(N)GaYzKq-N4*ga}t}>*Q;mk1dV8W1B z)q5O#-9vW}55$;IkrE5N@Sv*0qNF67AWtj`*R~Iq zrGzwe;OY=B$zeir+E#!epzwT9{zJEiG!D@75O|qiN7gyM{U$$U19(97d%*IS>7=T4 zdc9l(Qk;7Yt%LrK&=*U|`L%`_OVBUs&}u5&t5m z{O%4H0vKt&2ggOxL&lM{`HJjAHC|LtaqgN7(DaHX`nw@}_*b8MU^}Y!S-D6v0LF>+ zt6MMa0dubGrdnK@=+=w-41DeBEu7R7@)^zEJh{dne8qmm15V@QIi}kiPn`F5Uw*Fc z@WqLZCv31LcyfcV)-Wu||K}kVNhgTg4o^@dGB)kRBf_nEDyU3kp>R1;PPmJrjVWQhHD(K9B{;RHx>2(YZ0j&*h7*(Gpg z$ML~)_wW)QXZi#`8IfQnZH2wkGJic3&0aZ2-`X8e&!8|B+fHvB`fx82;) z+ALR5k9mJ(5T82p+FW!y;?Qw0=|G`^S+vb@NC|m3zolocUtFr$;`H#0PA4cwlgzO~#)S*NYew96Ix> zrTnrwXP2a_USr4c-#{mYWxRXr#*r`C4Hz}4Kd@F6V?r#oQ z#4f60sP%Z7cNTmGaP5))e0{fv@e~g+1N7;1M(ZhgFB(44iOZ8-9FasA;#tPutWfuy z$$+4_Z(Jb;r?#7Y?M7s3|;|-A z+0BtiVuwxuP8#qf$2CXy+UWz=!qk02qq*J*9<3}&2wp-b$fKpYg-&nIqOrn^IR-dU zuSkE4QecQv@NG_65XE=>cQfF+R003NTy(JSK|Ym;_W~$)O_Nm$iG+IAymxU?AW#Ve zv`7#88UG0PAo7ae5xMPvO=*uArWEWoacLn;NMj!pvWp@9MejHyyvws4dVp-jJQk6z zm=metne_1mT0<>Q9e8Olh;h>0%1@2`jI;sPaFe^SggWyjX?G~p&(};j;xhkHuWorn z8dfacn4$m~njKivA&QZQp2$gFef)1=5|z}U#m#4Z+1`IQ;$>Z5C7UPZV06&_i86%zdZSvOPaGgL&b{LTLrK$)d-)p&d37NO(1Gk}(*QVe@xP+v`RN zxN!%cRieN^1FXuVes_;9$9%I_=;eXVo?CIqG`|=Chl{r!vRR;?`Y0>o$^ZO_{8c|Z z(fg}oIaWOOl)?A?U|}@dhGAMvq(^Pt2*+^Hscf8=#8Lz#I&YOoy9BjT>dN#dm~>1H zAO2swy?H#9=^sBlY1g8K#NZ^R&_t!ClBF`T6DU^d$pj1uc&ME@Vx2Z zk>k}^`s8!RZ{jhY1@-TA7cTVzmJe^_t3|~H>~?>M0NDeWlU^5d!PSVK_O@=Af3q3k zacka56t#}=CdP55m7j|yQ!TxDJ?nMK5lCVwaWf&v2zKV=C z^vdG`|3E#e{v6}=u9Tiu-c{#kvGp1WEui@Gp}KP0FR{C&!@!Zp`Y&BS3jRa!IJqq6 zQG(BvxQDS?UW#-q9yD^Gk?rt46QV-PW%hmwXx~XfVOXQy^WgE3d1DjN+`^}E4PENh z5o1Wf0q~Xk1uJuakmosw_lwj3SZXoiOef)u3u{(~y=@XY%QC2_=tFUf$ohl;V6gk; zdzU?cI0iV%oKpQ)tulK$FajnB8CTGi@_yYwuBb6why-~R;ZB9Ti!R=WQmA}n=M#xg zRw++67`-|^-+g0k;`%8VJ4*M$U^=-nZ90^QRi$&k-$7rjQY(_ngXk5{p;GodFu`Su z=A51UQN*?U;ssS7nZ_gOXd(G9Eg?r;j8zgg~& z`{csXKwMPm8LQYJS!*}%?78l5?20udK+qG67q0Ro(s>THu+PU|7tZ^<85}qq=v*xj z$At8W&olF|e$=w#--U^TkOPNQ&d}x|TO>2v~9l5=1Cixq`h6u2+{k zIF8N@-Xy7W{nN&H-NfvlG@!hi_jyKk2ok^u{G7M8W-@;mASi3MxGj-8FFa02TzYXk zuiSOr-jTh% zmAf|hQ2PXNUgB-E6QXvI7-f?9syg>f^ONhd*H(kh!Gz|nh(99hW#y}~*&+y*=^z_? z*dMOpy+RtA?+p8gTVjRoj;ubNB8nCy8%V=}0=ZOevg)4W1enHAd{XfSB3C3A|4_X$ zyOqk17(&7qW@^vKWnvDZKcVUYu20a49Su$Ud??$)oa&a*wd%|rlu_BntH&;_E>JO0 zIm5kclYRQS!AKam)$pVC&demcVZF(ND zXHQF|-GS%e>Uoo*K~V2XpQrD$+6!=joKC^xlE>v!JfY(vZPUCBYjy9*Ya+@a4H_T; zMn7)~Aw57rTm~2M4=^f05gsd51cF%@fU^O#JfcA_?)F%ft>LyberA7Rw>Ijx`$;zsoU8~XE7w;gC`8biyr7= zx`g5jId#?`^%$Wwmm*c_V6==-ywBV*W<9GHA&Zi{u2s_%5e_%s{^S>VAhN8&dG_Ne zTi$|p;AMIzh;sd}??q4jYv?f=aya%pxmHm4zr+MasN{m3c4*FXGjc^KwH~Hy(GJ z5^C^F?n!c~wS)Aq`CfB%XdQi0iza0==hN;jX{uJyxnO^d!&B3d@zX_i6=VFWXUWK!JYSWWhH9>J;AxA!&rhWrHsjO_Wv$KAW`o zh1eWm2%4B6&@U2~XtSS>D5WHWgs8FYkXlnFk*hIV9p_1+3J$&75Eob(A%J5ouMMZn zcaSlKznjm;$THC*oILYy2a$}d>q;%1QH2E72tXZ-F}#WSTH=X8hU1rEpdo)kx)$*l zz5e2}UrjETA_KvkeE0*>1jrxU_KOU|5N~N!@0>`q*3oUBy*xUX%?-3CT^jv=|M}_< zWr5#YZ%>@_f)IXKYVC_IlKmzNzF_>^5`1@jx#)hYy&cB4CO{X6DeNBZ9i1k{KR1E9 z9bjpV0#3?^+6en$I4HrGD80Fyd-*6Yc%0#br7zg>>E5%v@W3{ zB4^_1UA7Af{Qq7(`*WWQ8hpIEu7p}3biJeX@WeWMr5--B+d0-AV!WM@;(qYw6&p@? zU*B&)6{vk^WiFI}uK-SYyLt05{<804QxEPVrVn|Y3szTqqayg%4~^7^&IQ#5Lu60@0P*e1Kr`5Kg_Md^c~(|=tyi@u<=6jK6gaU zs)9DmtJxE*-I74H_@I0i!u@kh`*;3Uy2cu+=6i9KLId%oWB9-XK0DP=h&T>l1BK)_K~MZ5GZEN8d0V}APi#qg%+RrOICjF zVL#ro>>O5YKq|Zk1y#_;6JaXqwCtqI!b}AyRkI`K9C;;i#3_`Iti@dZtv?mVF{*2h1Z`^_onadnb}|Drk97q-@HW zIw_ju#R#Dm_?B${SS$bg3E;W!n?~Of55?dEk@rI?J#ajQzo+5tH_M-#%J1kCQyOor zHr>r9OADr0`Ku*`K;3U|qfr_6IcL#ZsC$AuPoV_e_o&cgP_0M&d-b7Yhm-6yk)XKk z1K%>k1y3zY(i~(nuOhAk5%B99sZ)8ZCcQf1MpuTyt_TvnqGobgNOcR;Xn(Gc^Xr~L zQiK6_r!>|s|GBC&y0C}^9D;KJj4@|mzCMt+f~(O~a0C=oJkNR_#T8uvs0w{iXX0>z zt6Q1VS@3D&v8vz$g}*-M54KmYEq`)eEn2F>iFDr)WuCs}bTx3<*36ypybfJ(_*#XB ziL@lxyYht8M|`sdGrV=(!7YsIeC`|WrPHy}wac;ubo~*f_m|uv3RK`6N}8K+A<6EN zlkxPWivURo(LxL?W}~irfR()kTMV*X*I4m z!ObMSM17;-S|wLS+w88_mfDPw7JyD^GS6d@3=f$uEZ4#z3;JXNdn)XD-GR|qdpNYa zIn?%^SL4)Kk%Z;L>9IylH;v*8`jb=(d801~J}Q}o0y^0-wp|5cKUO}e;L_{Y3BvM- ziUCwtvDb(=sy+i>Q9bTn0cS%HC#XD@wn&0Ti5Vd%Lqb>|_b&@WdvIs#$gOr^QfNZw z4Rv!wjHtq6^U>NMkq^r1nY3N-UFny44>PwVT7^%7k2=nz1;JsiHviF+^K1Xsda}Y` zj~m#%6l!lvr23O!gQdQE+rxX;AHAVd8BPY&g1H9Om>K$62=Sq%hYj)3s`wE*DEn5A$7$|04`GAhg(W51=rR~lnHzE!xm98NEQ5pDU+anvghQ;$&xX7>vz+XMl&U=QNcP9jPG61t`y z!ctjef`~@HUDIGrvt}w}2{Bq;D}4q8#D{-GZjAF97%K!V4uY|7?j;ot(o(1Sd368# z%@r>(b77z?{V`UY|9SVHbQ^eA^HHRbVUai983==xa; zSP;YW_=xJ=_`~cu;`P^|r)ALQO;U_5GQ3|6ZVopeqe!j^$#4VS)g~ zbd2Y3FbL4~p^;#T4wm}9ls#CsdpQ*Epzf`8JrUvJ;C(hckxdWK65tB=<}|v4m>4)~ zEJ^77_Yfp*fzNGqs#?a}7jd6hVaea!+1>SCmf;)sci<^!r=hP{JUYMm50|aM`^7Gu zJF+ySQ1(*)QzYgRo@aIM`N!>k5k1ofJOw?^3#zl=*Kj##%lhop-J&vI!Jp0hz)?QB z7)orIY5Qi1j4NMZWjvP!`P`8lwWwUJlrHUZHge|$l5Kn`P1Y;o5b3Ml6ax|n~mdSbBle5&Y&wGd?V4-d{ta{g^L5S{uAK+^l zIs*i`2L;23B=((|ZPzQJI0RTe+%l(wr%+NP^6e=W_+X$HXx>x{#5rFWao1h~q9RBA z$QY#}7QA|5O8ocmjAntN#77QYbxGEJkSiElgQMaPk3;Ecu-%`rlWE(%BV-G|SzhoY{9jM1 zQ*zD{XmL4-Eii<^+gOE(qhka{r9dTMWTbiuVssMZ;-pR2cO}@@Tey`($q)Uz4MgPi zK7HN-WanirXJeSxvuEfv{pZ%OaEj|6ji+A6cu29Gk-L&oPEl2z$Mv5YBH$Zm>YIva zuOXvFFYr&ZXITk`I@*9uO7zD&s7DC)L21X*tpQD7GD5xEk5c_1RKRo2opOQ*Bm!op z;Y5QncjD1j(0}OhoS!p zsh1@9LxiYQ3MNYK3r;LM`wNatQRUcRWL;3RMzps z>;!6dmRC$gEZ#s15m)(wgBPEoQ?6+CB`bGPfu}LKEo0Grt}+!nxJ!3NUQ``(y;gSx zp?_VAwoN`P7?K5Rd`fp^YtDuxEt9`t#fQ0FQ}rta%7KFOtheY5^_TJ5N24e=Y#Xbi zF)Yi%)u2U=RtCA>sq1&-WD8#7?1U2MSOII5v{`ua!G@4ubp?vs!sBDyl|fPO3AR}f zw!!fd)6r*eTxLg5=VkdlQP%P7wkGn`sWJ$L7f)fli^=Z1WD-=MOV)7SwU^@8{1D*~UAO!5s6>qVIbq9$^jdC%tcE4D zc3f2hs*Ao{{`pZ2yOBN0ZKj@F|EH~~7As9p3LXU}okaq6?M*ajF$m!PFX}(-71GEv zJZj=$J+DCJN_RO)P65o-LRdI_8y$;CR~ZY%dn1Wy#F(e)o!d|kS^W~$ixeQ#jz2sY zKl~zj4&o|Qm~f?^J0Z9__t?Thk+DLM64BHWSY%m6rYeUVklYXFY8>XhgN!=_7xn9? zy!%plxXo{lActWkIlzy)w>cU=b_z9c95qxlIt)!}lu1~S0dwEj>CjiGx07xMJji!0p= zb&2Vm1Y+ce#AU-a(R^k}LB9abY>^o|6##%%o1Rto;I9I70Iam&5aS>Tfgxz>vAM!x zrb7oh`IZfU=s{?*+2a!u{MK0On)&j|6KHA*vns(s=11&k;DZMTa;rL>Oy>WdTHx;4b`@aLsB<^S@V+%I_ff~r%1hsk3dGeRSZbUfHe3s03$lex zaIi*~Vx#Anwy4k+1>}QSBexF4u`Z7f|1EOj-Sv>TT*qVR@^cKe;UjLE{Oh4Kv?&T-q=B*?o+$ zc(T&q@~?w4)HSty&ps(<0~cM&8F$&+h84!hIgsru2~1=FIFt6;xZd;L3#v&AR9Ana z3F3^q`^wEQgQfI$Wi|jO)5n$HExB(=WfYi%!Vv>Q#uVt4oG7eJKqMr0EfV&+C&>8a zd5VHB3%?I0(I2TDlBp^a*T>!yW#IR#iv zSGKwZj9Q$*Eot2Okk+L8{fdp#{l1gADn9AGSeSPN1sZ>?p22Yqw-5Hqe?H}$yR#-v=DRKT20R{PWRFv}(*^MaZycYEsu>4L9mhZ=b%NzrMoXC7+_N zqSG{%uq_}I$fS-8$rPSMm`CSEw$dhTo_8#0Y#2)EMHDQ9KRn#5(K(;eL=@ToEQM}p zwtr%5DXavPr%iFvEh3eF!4{m3_a9i-+8I#0IP`0Ma#`L+dA>dE_6 z@DWCVb$|tZky$2t_Fld&L%ENx+5CYclVpbeDuxchy&5zP@3h|#&wk(kEP=Nhz19C& zk~PKVaeZ6G3>k_UjsCY1bGj*Cs{eGZ5DAkhrr>RvLL298IUsK|n^!{L0P&UemwFkoC{ z0D**r_%fyj1d-OnG=Q)~OiAA2)2l}bl8eIk=I*qcJ3Wt^_We)rhBpH>^rJ_lw-Fo}vmLqcg{@!C#wkM)`$ z>MU>8N@Z5~+jjIpPr(?I0N;q8qA;FX$99jO@7S!|zHxNf9`wxcBD1;^yOuZ}@4ntl zRY@&L^MHR}4Vx>@F+3Dxs*GHvh3!LMImbe8?@eMg4>1Va3-J*9A8^cd4gKk^QdzMU ztFHp!jkqxTeVY#fGe$Q+KPSj7xo1sCZPFt&JTeH=xtI?6-)GNYDu zAXtSA(qZVDDa(psP;>TD{%s?ak5snuQ%0G!RD11mT)L|c1<&*cHo&f-<6!Fr`#$** z%hD*m`?Gp%Eho_vmVB6)P;^4eq8%iqv?7*~9}I z52cP&n>uBc^%X1kF2_7oO~5pGJ>!fkKKInzgX+b*p~&1nQ6I+aMcq<1;zHhk(ibO- zheozH4ud;ko2;B~D9N*0m$osq8E zg7naJE-wq*C#@p%^FicHyuHYGN~4kixP_6n<00b{wtVl;HBC7`#^{4WIZD-{n*%}R z>Ek~1*3Qh)!fzxo!mqf_^+z50NNIAJM=5YD0K-F-a&656RpX`i@IzHcu&evQoyrnS zPh)KjT_&`ORA3IagbDiBd%7pQ?f5?Hlw$QZTLC!K^OYR+=)X&!>`%iCWGo> z>4Bhh4@!AzmamBXC~h6o6J-)JGlT@3z)N?&4fp7oB+N=}c;zDe;+d~V7LR)U65dXC zzyd=uvy*;me3bFV)Sg3ff(!y{Y$URa z<%e1)Z6ea$mHcuX)TI zb&j3CrB;|y3hFp;wwt|`wvwLIu~ciSGW4{XF4zu1w9PFX3*9|Ra4?Tb+luD8q^nxe;aWPiN+o%R}nwC(>61vBwDMCOHfB%qFV%vb3i zgff=ZUE6p*0&2w;dKUlC)aI)=B%~kt1h|4z3p4p0(7?}gn(#oE^VfK^2pQw!8&_yo zuS&&?s@125NI2%$u-bE-7X%cRx9j~7(c$j`tT3btpe}Zd45#Q3g#;JuVE^y{^j&G8 zg8dJ6<{qWJ>uu5<*!>z(ghX8+OVJ=(!F%LnxD)$q&_w(Ib_oCinbNro%@l{#5cw z%CbEf({a3H7WI(gIS=ZnT=?U^e@!m}MP)G`A26j-OLK;`STEU?4t^=zY9e3z@Q|pQD?Wp)ixu?0?sjVrLk!zYUgs~{YQcKTP-lbot+&AAf*emj=CfhpQ!SlZ`Q z5Hv{&41M5Lwa9ji=!1}ef5<}*6OZ-&>LqeQt|L0S&C^0i*B_7vkYEire6fuX_AXdk zj&>P%Ank)vvoOQKM-8nvbH@bX+95m7m#ie|RUS!Fa{f%ATJ`DPF62KlA0{zAR) zW1^~F%K?&*#i0tn#piC%QpN*8aE`)T!SX2()=ixbkXjNHKB0o}B(1C-`Zd`D=o8oR zwdXau%5c<+s~ej%!@3RMJ72KYpzoV~p>m1G_Dho&Pluy49zTR3>9>waAy@t9hO#C1^T9 z2w!|xtiebIB;TQC0QhT1cg_RC=wJ$e-Z5o_W&7J|flYGOuc?sG6pv7$8PIu_3~pX#!l+6pEY1HU8D5^Sy0Mow+$zzV2_*Zf=}iM>kY0)X z0OegyN2|9UrYlffGp$b<51Kyj5@sbXR*`ImLm@Vdf~S83vHrq8G&nI#un zn{K6tk^y=fu6vFVm>pC)l8y$V^vLTG0T|qU$CQ$nP%^YC5%YrV7mO-rmcMM5(`KE( zb!P-YO<9}KB=-P;FG||sjilCzpM@SGkOpDI{htpBucyIkt>Ba7$)*=hozF~%{iHqP91&$kFGk%5PNrqvYyjiTWsc4uNYW?f#a=g*DWS7D=JJ0if-T`2vO*jC8 z>}({CH{}szcd~h#)|8;ZYBejv=~L0Pv>T={`VovK&R*{x_D;I ze2;yE_F-sSx6Cqq0&n$`JXNt(D&o0w(7KS<5Zro`00+PW;q0QhN4h z-^2pjQgj=EIv^smU@-ZkKhYBS3luZhL7)NMS$D#)}DR=^T6 zZD>6bvzzktc*4EMQ)cR=TkB*QvP`#`ETRQV5KY3y46he-6P}E+fnj)~JY01tgY8SZ z6*_W2@GABVA4X9c+%>ueW^y6jpm=-Px%MX*W1-WssXpAxS@Z9I*Gc;t_Wh80*^=~s zDt1jPj`!hB@OI|3rjGe(VqJYSl&ZR*wVyi1U_-Ngve!{a`$`PDQgr8hhbGw3GeDAy z=dnst3;MpIsoYO%Ltfeb;X2}gIbn1IhM`mPw~^UHJl1#aMUur%y*bxbuPxpuJ^f{y z0@4=@%|$_{VT^Hi0MW16&k@6r=7&atKu{=1Ynmd_+gG11A1@QJv`yi`mefTOi`ATB zh-ndU*yN!~isdC9v_BXctIjGUQT|elGDhxW`2xShggFbm> zfupu4@oa0Z7a%|q#i`*QBwRWA&G)qHLHtkpOk2p*SY?H;A~KWEhMA~(5{h|=w+2Me zB$O)d4?3A7#9M&BrUrz^@)nqx2$P_Cc+jib%|m!0Nn+zyzo&Se*xe*%H6qRS`ta%i zp_dZHuv#UVF;^LkZ-OePl074FLb(ed2B`K3_M2%eZI1Uykno~dHoCMex%qFhio$#H zS`L^(6bIMRts?Jj^Q!x<3Z8?esJIe}+PWpvWyC?&O025U`G@u35y;i9hY>ci62Y;c zCyaW!?1I+!Wj*k9PImLV(yVK`ntF+&8&nw)WvtgGT!^FJ|1Y6sbR~LjlL!65zm*O_ z>@v@uxZg;DsQsP^%cXy}f&;zrM4Q@-I}_6!TC7&~5n4pB(jl=~Q!1`-hnnF@yl#LD zM$f)uby0@6+!I*x3D)mNgG``?l+x7!>em(we(bgi9#Pjm$(I!lSB1E%iy`w++Z$ld zbKr?V7~Jg5hwexf19(+sMwO|W1^B_S==}BZDrz=7^rm$R_eL1PJB@Vk^A5!k7gGFD zgCg)WbswufINkdt{PIqL`LN!kl&%7vp^gRT-e{jaB$*XVbmozWo` zCh{e^kT2`D!xwrxgwrktNz*~rS-)SuPU_0=iz)gv%Cn1h_lk8zOP;LVzujc)diN<;*>nJuW)(LlA^{-IfIV1dfa2;ka^)*S7FqSyMuQy9ZYkjBE->G) zSRMR)A|I4S%a}+~(7b>toad?=0r0$a$NT9T7C?SuL8G%5|DbJXw>HNMllAyIk5ysU z?r3v{W8Z+~GN^oSI%XukFul(u0-Z%a%|X1*Qwn?R<<0i{YYuAMeoLVRFRc|2tHQPX z>BR*mM@#?j563q>e{Pk^IGX?|k5$y5SCZ*(N4&6jMrA?h#zg7<_TJKij`2KQAz+W= z&&lroxgz9b!15W7^!qP~08I2s$U#G@*u3hJhajwkvKvNe;fi#$GWz&wUdts#T;u*Qx zo%X@jMP`GF<;63W?a)@s-Io411!8~9m*89wPyut*&srhf8(5)YRjenu&x>XbylEXD z?_L#h^|crSg70pp+wgh$RFn7i-4n;niQdtX?WJ%qP78|Dts8fS^S-4OiNo@fJ$*n< zZM*2j)MH5g?o_$@_3<}JaGwsT6z0{q%5bml_|8*Fj`wE7@e}<3Qsiw(1wRCw!GlfC zGH)Ot@y!T}`r6^z%x%l<+ z884mRhR%)cFQ_?x3Z+`1aW;(TujOy~xdNhr zxkuSdueEPYT@e&tk*|I)BOdEcRl7zFU?A}&w2YR1>d|X8#Vi%hU6i~O2Hp#0lFu8`OK@M(HsOP1xiTt>5WQjVv3%woE=W2GXsknplm(E`FZy({v*>&9n(EoT6@Lk+C!JvF>Oa4GybVa= zy@j@xC>cM6)S;Bdadc9*y&Xs^Yg2foEJklD4glimXan+BWi^$0(;p#hgrY=8w@^*Q z6;@vZ6a=-P*K$|I^(wl|Yx>g~`MwM;-fX7r7!P}oBR-=b{{o8)HLb7*Cx@>Wy7a7k zsa)jhIq46_mF1V4fg~igoq!}hkWCdswPp1n&u&a45$ZwcOORPS@;fwWs{jDm()#Cb z`{hBmEsx|hxIOG zyU(!_NRNfM#mV{3{Vid1wIX^a&t+2uX4Hm&YjKD&)< zkRdak@6p0^%mx;TxNMW#!_cGn8IkSR9xaG{32iMhv>r$6moc7a4so;}Oj ziC`X4zUxR2e@6}JpFq(74bBx&Oq%i`e^*;pG29@cfUzM8j#aK(qaA796$zp2TtUDT zgy43l#v6C=Cj6n_Khs$J2go)^Cd%|EEgMt|OT8Ta>6HR$CIw8@^2aA2nkW2$$$wEX z6E9JYY0Q}Q7HyoN>&}pDNf-X8 zjh!i7)N3Y)I=ic6>sdZof-oeRvScNPA8D6|Pj*H7DrThN;C}K8u|^`yGL7m8NPg6D z!?@txN?(*4Y+?{tSS;2T>28I_!Ei0oLXz*qn_VzPA8OIl_`+|AObKIMAHF)}p*&af zU->iJN~XfAjKehT{L5F=#oR!9BCW!P_zT!X)UGKj?GZ`XD4Sjn&3DyH*1Y35D`^>g zg=qA``rf?d!|pz5B;F_ZytZObdzsc$C|EUvV7CIviS%~`y=Gp&4JC=jUqgu3e4e`mi~OZK3f$*84yX|u$!kx!E1c_pYAIfNRV zIe^j=lrW73t%{dgfltm#ada=J825E$;}%f43XEN)!_X0J<8RwD_~664#czfJm!EWj z?NgHj#uoAJ)2ia^EaG^ynsdH>?y<)|MS>_b6E_prcMuQfNd zi~kq2x>6HWm8@;k9u$N`?3Pcopn(<_qU+u=FpOS2uW1XF+GtT>pu#v}NKa!`Nq&nd z+B8|B0N{rO))1YSZ8VB-_-V)hz&)*oF8U1-J3>UBam{w0Zg+^t4hAuxD{%5s5|U;=b@~Q!yG*qW^?PcR(ybS$0yU_vFm6Mz$Y?c}QR-@`*@gZVwwwf91O7|aB54U!DsgfbMRDUj z)}+ENUAgG@O8=lg{a`=b(bGwD2ka=Ijyu8A7a84fEl^5mxQ=Sh2}o|(#I&CayGN~k zQ}FJh&G5Rbpra4P^7$wg@sQFZi`A}(LHnX<5b~LqQ4K3Pt)(Ie;mEZb7P|4gg_3zo zMSga!cKPmvce~|A-g!lxg0<~OfyEHg)#*$&JrR0&?29A)LR&Wo{WNV@Of-%f(d^w9 ze_rtPxa-c}BCo`it-DuJU$FW#MNagZ$x?$M|C4=WNvoF2 z*q2JKwRS^JskYA=PT20_>7;B7pI| zw#W0d)%Al`+>i-XN@uS;&-Q%*7lSJ^6_o;)`6g4mf(%L4qM7%8sqZF9(RiLe2NEi~ zg!&MPW^^0*1TcUM=6}#haf%rC`Ib@ z?9bN|gRDF#mHo(x`!F;XdC;iD*^lRyVWADFP_Ql0N2yW04`zkytkCE`uf%nJOS$zo z)R^4RC~n(*2cUO|)vaqXzIV18;B6+NVi*chdB$5;DmmJ+HT#fvv_)?q8(+BM!!{G6 zOkO9-wxfVZ&nQ=S=Y|}Jm7}$P4J2yk4a+=T%=nNk&vT8=J5WfZYAuz)Ek0M+u)`Id z8j>9x7BsTUx&hH&q=y$cyB7NFsiJkw+8cI-L|M;6j!lp)Z{r70+iSn5DlxgFW<{&1 zMC9M+Q2piHzZwJYIdq5It_GVAe%79AuVmjFBAO=`b@0Q44z9eFHQM8lM4zD^qkVbj z#-TS|iMT7;>ikH+SDJo3;Dg!C=+*>eP&KXY&yTH1+cuU80$1Puv#$Jc(_sJEXQwKY z)ER6;S1_O|R;n0zA|X=+z<)@I3k`irx{_+CTaTMy6*g1FDD^2UoL@)yasBZWND)>I zYpPuev;A*)WOUy>f&`0|8&F_DQDro44Ia@QZym!WJ>F_>MMysP?XwKX>BcgSW+neu z4?f10EHx)*SJ98K&+02Wzf24{%GYH@5TFd}J|R(T`cPs7LPtP`AQvI#0!=^MMgY;& zC4s0oRQ7^2@KEY`a{h>V)2R8mBI--`4eCCOT-Ws>( z`_54h14zaM^#}H7%f-6rZ_Rvc5ej9Q`uMLy^|%{KF!hVfShU%5VIxV8g=(!zk;=8+ zt2Vr7yin$>w>t7m$ejo$P?miuPh%n^lmR?RTAxmZef-2L*IXB{CWh(?1y6{zUtu|{ zGUfEk&sm0~^{nD+48wIv8024yfGrFz*-n8@jm`NYNR+S^xs-5^UPbxKtTNcNBG59g z3HD#2Zj4#OwZTTsu#aN#_}5xxKe$gIQye0Hh-Kt3Vb-b+-?XKI8WC4U`kq%|{i@qW z`yxeUS`THtzX^(ZSN%`9duysS49;9RZ2n}$tLTw@*w%4D&y0x^IC{kMh=Ow9+XQO< zsi^4WFp`KRyCN>z$@k1vAH+4HlVULy5Ci86s`HOTuBrtT0{GR?7l75aS65Q2mq=m+ zJ4_+P6F&vs;n$N}EI-LG!&g zK(l1y*?7&b40U3qGd#w}QJ)zQ9m%Xn_^P!s*?b<4loXTQT!{n#BWU7Jw8oZqmDQt= zihoRV%i#M%7X)W6>4tS1E01O@+O^X2C_wF4wr728T^mR7&MsjU*uVT|0U3a?nGsj} z6v@Aqr}7mR+XHQl9^9FeoWLub>-j;Etj47eO7*HRkE!l`1|Kt{T<`h2pt1X%+q92Q zyTW-oY0cFYNBHcq5l@81093Z&ddS`;x`@f_A6C8EMQ_+1Xl|o1P9f6xoXGkx97vn5Ag?;SN{i$d4t5@l@6IXd$*fP*>tB7^ zuup%(=-JSMi`q^M0f#d06?=CB^N4nP%hCkQa72k`O+-3R{rZSu?jN4z`Oq`}pmAu& zJXV3limsLwCtXUSw~2txgPE9&scDK+AL*o7^~s9TcZ&~Ae}D7P%O&~09IveXbAy`j z`^9ID9d}LftInzi9L}fZ$)T5j{o?8wkhhlsc8~)qvLCZUS3M>rmc^-pKRN2t91d@C zXLg?+y9yXO^Bv?-aVK=ur8(1N6A%l-C0IGf%yE{@Qudf)4NLB{7m%hc26HMiW4t@( zolyc4ziW2_XA3%U*f3(xF&GUX$^}I=&`5bJA24JIn0sf>eqcB-F>M(c^~J?$Kf0S> zA93VnqwSZ*s+bv_TFid}_Q0=ZdRinQF5SpKcV6OpM5dCk07(>PMI?T-1K;|Lx za`?=)v4jL8*=mQzqdW(xP_r6RbXRV!j-AlO&4Nm}FxxTq=1zk^q%hS$6 zoN~>}G?1i01RrsJNC>Flkjn$B;89qil^R?U9I}O$1KyqOE#N^EaXgc*3h^#m>r@t8 zLmY)PWYL#gq!u~0i^1yvKh9}gx_7j2k>rJDdutaN_rh$?FT}qzw1IBZI*LW2{dlB3 z^Xbc5gs$FZUs}(9JP!f_ezahyhQP~Y^xn}F+8vuaXVD;_eIH+*nUzhp8{wo!-OJH6 zuXN7{|3R5)1q$vLHXpvae$z?$0JzMsdIa4?ECpnzHTTnmhzr6}3w_yuK`Zt_y#nRX z2uHn|rex^bF&~*>RQOO{k!Qg!ezEYUMo1_lD-%I7@{3(GSRuice1L#AKkzw*fazD; z%1I&F^c|*Lmv2>R(4ftH>iJZtRE(9Q$ru{FTl-QxE-vf69MvqNVY?F zYOMIz&-0h+b9S`L`=?o$uueIz14i|8EtR{*<;`zotjj1Hr(DSTaTRkw)exr1XLM*e<37(VRsWlG^0Moos{kY{T3>~1 zoVzeB^?iY{#uXfs{RnL1EuY}HXQkT!e^~=>=uWqUsjE1kjH!>ALKG4hP<&rqTm>wY zWgK~M;mKBMPv-_T5%73(I_urx;=<@vi|`}4RRNZfU2>RVUkn$TNL6GWC|Kfn?n*vf zC85CmFfK9&QVW9Ei4H*s7571ObjcSSq7pKygi?>^^|6tsD&;0%S8O#C)CFKUiIv+ZHS_8D#rBy%T&P#Qj+B5j}gjsT1%f zT|L%6#ipsHOT<<^4dLU@O)1O(5pp5j#mlE$co@9cf<4xRtYp=z~S zL?09gO7HkGLS*y@SFoTvGMo!GG2E4(h?ae>RV9Yn3Setm?WlzC47-fFkHTN{4ALZL ztO{G7b;rxXt)M>RsZB#i=IR6})M`x&{af94X)Va|_vWj_T-$uZ=VJEVIVZ#yLL*tw z}A?mJ>U~4$6QDudN3|JAhHnq1MbH(bD4*Qa}c*OXBfo$1lqXDR@uslH~s5f#qJ6a7)RbOMon#UhsxH@Xsx`wQ!Le4#a zK3Y!cQH0K|oMk&=4)Nq40+$<$DIQ-!+`Oh@`^HZAhe2E2Yl&%L5bEYzkEd9Mzy1Tg zQZ|eN)DaBn=`e2-Vb9&|t=`uF0z~eUwr%fzHz;aAn+5GdGl~0^FP~lb-ntLr93qc; zIO@2Jh!y40)I!#iadjfOBt45?1EBV~m3VboCy${MOt<>G0hf1anB-ir1!=d5H$?MAcdCO61^-9bh|6H1J-96~Ojg%hx%Ngi5}0 zinri!M1)r>tB>-K^;eFl5>v=M*PR{g*IqGVx<0$)+QvloJN`oN`7gT$8(Yl-XB7>W zeGe%NXP|8x`jJ{eHw} zo4~JFdGSfL`u%zX!WE-YCm69w-&bHdKayCVlkfjTVkU&3eg(7$eH$ZL%Z9Rg;pZO; zx}pp5EZ6$7wAJ5@>c9k;?_`~-t>*(FfK0z6CoXQbp2vHtg+afUd|ji@o~~hO1+t7O zzrbdEIvG^oSRAq~$PPM?0XmVWKQNi4Z1YcWG3~F434o%7s;@>8|vMnPkoU*Q|~bU?@iCYy#1#FZ45{k6j2@W$@zmZ9c`%=;sUA#({0av zb1nb8MEt1iI!SsKvqJ#^1a6H2cOnWy9j4-|jkqclKg9ZKx*0b~(@X{X! zM@1PAM>P@AWP9ZMz8kLqJ#YVA!Zqy15K#_h(&84 zc?M{$u6fw%)7ceFznw5Lup=@Ym{NZSp9x5rPdC3%v@YdPLX?aXh7T#2bwsXUOdn+WFpLD`N1f z_;(%lJ;dCtcECwgb+cb&Gf1JUdPB|f6L$P8+mZ}G&_KC<4lJUS>|1x;=p?EY9Sd3a zlEgSFnW0cw=lDcF+F%U;Rc7p2r}giKrrfoPi3^mN{S9>~pcdsruObF@rg9yFE0=kp zKc4Nv7#MnEdWUkup`R|=Jr{wk3(*9mW}$lU8Pa&18Zxwg1eq*;gUK97cL0BlIyse% z{oT@eu=!qgflS8S@wo0|w^bSZBD^%pA>kWQ(r>cA^C$eHazwc*E2B^rHqM;#J~3B8 z0}@D2yCAh}CEJG-515)(1*n&O7_vcW!B))OQVs5r*6-R&lzu3m3M2@%-d?n?Nt={} z@-VB{`a`oEq99&_BRf<{h;I`zR+SH?2_jf_Yh`!AvFHt5%36X!tPl%nhdahLAr|Y z4lM!Z>;!mRlZ|dY%x#OaTcY33u&-m<%`sH#+Ffqwple~+Q?FD%j;lU2lH6ult7T6d z$(I?~6QIRBvm{P6%6P41V(Ze zDZIn#?g30LoHY;DNWOUHcm9`{5RhP(SGqZ#&1`tG?)z6J33jL6xA7-bcw{`BpnQ48 zoKqNC%{g#*#&0Imk+?ql+!&Cs@HTV1`1>Z=dG~Sv(^yh3T?8+kc+rtlTpvpej~lAs zSVFY-`0bKNmp_ws)mUpXLN(K#<+;k@yncUZ>HY8>Y6%yJMI3K=qDt98><71v#H=#& z8FkLJ^(8g%m!vu;IK*@G_5kl9o$j(8*mt67FTW-reJKj@s}o3bIk`4znaV-8JrR;e zTpCg8MgxeWH*7P9?wwST?_TSZ+xPA;JI^pp{^b#TFpO5|=aop;$@U~kakfr0lgUw2 zA_^K$VLX6N_k8#sFZyFpUQgsyW^X>~-Nbq^ua%E(LTE0-RT+FoHaVn`4wmABl)P)| znr@S4-#3Kc^d#$@*%a%_sKdTEOeSZor3%V<_YEx-#r5;ZVS#i$;$N4=>+J}C@B{+q zIvri+S1n9R$mAJq4j>R#M3p-(y_Dw_-H~P}6j_$z_EplaT+@^S5}c$!d7QPxzYO4^Zj%r|N( z=21M^3Kti{x1-_LQo5Y+_%;gT^&7QYN!)w6)?DE}h-u_qcXw6&Xe??|` zm|x4#FZdg}R(}RX$5-!dZ}MD&`j(Zu45i+*f&+Dud5co#Z+r%!_)8-IJHr>O>L?<)p4atSdGi*&z?2Inj?g;S9M?`_5KL1O zHPaZ2afqFfZRjjSD?%AVBtkxcYXE`?2>Ci`{H8IsUF&!nMr-;QrbA&P{-O+YWZG4z zJ68R)H_I7XsTl(*goXu-BziO2~EAY4Q*!AATM;#a} z^FJr)i@x2NMYB5jD~Bk~1vd1D?Qmm|M@PHo^8yN^umFl~HV8cn1A?i#FpA^5dALE4Z5!N&pjzSm@>= z31XaHzwZg=V^-@TbT~g4&h*;HOO`cht7Z39X(B9z&a=}(ISE%s5)E z;5**QUlUyCzpERz{nEv*4ZQ`^AUmEI$|x>mx5yJ~9^S!z6^IPsqP~}bIK*dfBipH{ z^mZtR@J%n>t(7iAWq$swRS4E#_ zHBtuj(~vTgpAzmtZjTZ}O|9K);MLoK2NO?91Gk;skQ0gzR{+X@s%U|T$MddL;Qif! z_CDRK6Uk_h;};~t$n*mrw2ZV3kp3^=Q;gG_GgyD2*6a8Nk&5IK&L$vc+g%Q3)S75 z>y87-z@&fXD1M+9oGuAfa=1~hP|?Zz#Ux%0WwWI{{ufope3G}b7IO9mn;z_qBv}|a z4u?nxV){=>(C)ys>>xL!B8j{gr^Lfjh$e?Yz8J5`$hD0}2B8Z|qFAr4=DooHV={?o znb{-DpFUQK>@+J@gVJ#1IO611tJM>26f=;(^;-Sr_=W>zFOU+>9bt;6zg{^d(ZPg1 z9G9W+(UcREhdTk??+m@S0F$9^vwQL8UhV9XbltHMUND`}8thbnvkcAVXl>Y^LCHLQAZKV$Bq&76%5_Uh4F56ghPw3@=Y7*I>PBx@wonf6|p|C z^7oa8w&|{0_j{_`Z0P;?C|`dS#jQGu-C-p%iR4_DUEKlB=A_D+X=CyFANI(r|6Z>d zo%1~{N?r46ZFCghNzrJ#?XCN8b6TRAWtN?!Y3}|kSX<=; zmAA>LlhLMr8N$z0zd859vYUY)|QMug&yy-r7fz+ZSAyT6UlEPMDOfj$#u*y3>+D=h z^<2VdAmi;?r75f`v_W2@t*BiVI@MAT{y9?)=Hd$Rk@>?&9tMNW1rd@#~3IkBm} zYu6tV>hAErRh~Tci@bw%mOLz$sK;Ke6V`lw;pEKK`CU`aTgCGExu=?fjIFC#>tGK# zSi3A+Yu#T(wsR?#7jsuXzo|Nmf^Uc5pd_1*3R;%ow2)PO z_D`wZu()=^p~>jgTwM8k`rps%@0!NFLH9J~%rxc))Vk=&kW z2vN|y_JB@%AcX_(!r3~j6OdnColPMTeQmS!c0eVrk1|e|nbw-0OfxCD-;jqYLGivb z6ix87z)?MK_!1mF((2pr9D^79j;j$OFT6TsS&a#?<4z^DML$|KB&@pa#LfYovh%&oV%M>}n(IMDouyYr;K6Ezh(S z;|h*3p2Ta)M7>Ggiar9Hj-=MHhl(G9&msC*a@VBfx$d6VtWI}6qB|QUVLaZbgA0)) zP&3haRZ$a_fr+Q4%Lx=Zrhyo}aOP|{%NAyj$RcpTIi`jDfi6sK48+}o@-m_N%i6lo zwLlYRD5|H6dUT$R>`?^z`bbmM0#Y=*ZY_zy@@E{SqwyY(~{6wXZRkWU<3w zb57wdw4>2QaC|O@>?u+8dZ@XPtNTBz<%~3pxF6wjLab>u-LyF2=#)}S5>Q%(_!i{) z{#-iNr=WXi49rZ#6^X?5lf*dLQA{g&j2-#^0i>FyuU*u1xNSl*6s zk-&P+mpA#HxBK(-`T96hh4TEq{hPFxd}IL2mYHlt9(ABpWU68kgE>dR!&g(}#)GABQ> z%H)RCY2^_m*AckpeC4P0wv&n@B*ou+Z#{a?AT*tA9z;Ub@Q8)djKuHI&23y2QiCBj zi@!zBgX>SqI{VKA@Ww?PL`1;ObWOzovgk-zEzUd6lGAw|9SXt+S5nK({Gocp(ZSbw zmVba(LYwxc|FXC}Io}_d7yH;UtRuO8jr;N|%qP4*ZEUPCsENjh+t0UKFqKT>j79QV zMk?P~>l?6g0PO`q;~DC31^QN-o`PQXpPgMoHq??M-^+w;g0t}kG3S#6^1`a48K;`A zpseVyd0;sG+Z~F%hL950DSoWqiSG_BYT(;F^2`=c@X(G&e=s{iQuGsRd0yz^ptwcX zpnEIt^aJ+FcZhd4fm+xFzrNGgyf8w1pC{@zLCD=PD{8&H**v$b=JVC1-&xl=x!T-? zyv3=$w}PReLtJ!#@Iut*NiS_nXKvyOC-q-RjgB21#N3&Xp{4|suE*d#+jw2UO%p$o z`v8sjh!Q-%nBD{GIN2(9yYD(pPz@!V0uNcWQKHq2TLU4x|L~BCWTkbwb-H^? zMT+Bh%1_zvhES3eox@gGfxnMpG}lH<2Gqwj29unQPNG+Zzy4-3(S8KG3*tH8OafJF zqYJN@yN$D!cz~#Q^v7Jdok6OKq3W6%FUo{oc|3k6ALYiEeW8C1pjK9KzV$(6C;wqi zp|!6-lX*~!!RC_Ej}L;a#F%`7li59o4DHo#q7<}@rvykWGSAhgNu_cBwh>F2IGSbt zvnuiSfR<2*-x4^KkFMcn&iBN8iK%sgPknT~_BJ)w2|~oxuK&owA|iwf>I)C`l>~!<!wM!mccR?)jpn$tO^2i&)Hv?^JAphdw)2+GA2vDT*2|Mz zeWYL)u*+~te_Fxg1SBENFAZ3BPNw%Q|b}+SsDrs=!Q?miiuC6NX(VJVq2o zzjs@#Gr5B|=WQjmXgGh!whZrbMpxJada(Ci!AEv5o9=yEu*XpNsI6=0DxcK4YrDZ+ z-B`=31~rBq$n=c~oOnk<4xruIU4+oqq4y+p&9Sek#H3ie9@!tsZc+nPM7GE#pwi#v zC>}$&Dnm34=1yd+#8!={^fROlJyGt!L9>ON!w1-fm_kRjwc`J<_9k#OrvLl+Ok_`% z)Kn^zp`C1LMME1A5osCw(pZvKDTFB6Xkt{B%C1C7n=B=TQkF0(Pe&aUbz11O|F8Fb zV$A2e{C}_4@ArDqInVtp=UMLOzTeCBzOIuWhR6-5hrV=k3BysnO#V)OM_W%$C^Iae z3K97BQ$z=toZwbdTffLp5k>BLzo@RB_b`(>Lur~3+w9jA*}|E7I0Az3eoFB|1p z<>F>DZ`x{sw@xNFtaAC0ZzIGmfgI5p^%rZu;gn#Z8st{o1c%Ll&tq2otkAiw@Q?^T zbL`!y8$;P^MMq7`pWpgys8izi^Wng>WszZw;!+gGt5i!8A`npDCR=ShQ^;G;^1l^elY5IG~3hW5L}4$IMRKY@#N6muqj4hH=AT@IvDkdpZoNn)-1S4vRa~#VG(#C zQ21MW|C5)GuY?Q07VqxPwh0$ad+h8eNs2ewaMkNBC-?Xlme+RJzqL}{f?9VNi=2$2RUVY5#p^HDmGH!7GIP1X;!;T2nJ+}KhtjrQ^tKr&y6GxaNA#e! z*6Khkn=yzkkUepHj%lnq3FHiIBwAok3g6q`p$teR7QqwZVDp!8L^Y}CsM$ad9!L7Q z`pEw4q>TYU^IrH$jcsLq#Q~FGC@Vd2DZf5c3f%cK-rbRS29yt0 zlg>O5Z)8}NeBsUavaj6tYK<$?{LSBpB&kX5!fO+|VZ}cusHo`N+U*B<#+NCbS(`jG zpw@OKWbwpNqmXS-Fg4Bxu(Soy-bbXyB3y)04fuNzgIjuoP5t^7Qc#X;LC#e(8iU&2 zC}OfU$cG#zz(h+62m5Gz?#|r50ggssHu&7)KoBzvkq3fRAY*KQwd{1go_T4=lq#3Q zgY7~@*k}~$z>9?oeNK1*MlqoyMdv9{D8dcuKDo_3=~k=KX##6^E!esU0C>^*NfAiM z$=vxfuRq3k8-}89=%&dQevOUm!U4;%6)Ip=$2r-y?-y+U8H$nAbO2@lA-;<3I zaDmps@bB8`<5+ifF(SYnPPJ`#hVY@nAYvV@glMvTl+ZsXeldx*7-}htq~zy4mqhf@ zRKi%{$(0dDy}U2XdI=3)v+lVy;zS`utBFV+A<^p0N;VyEC#y~}B80{5xq+oDWfV1E zH}|w&A+$b09~)%;9vVp45y|V(5m%z?u9!hL!UdQg%rJn~^P7ZB<}<_V zB~zJf#rpDu1x#65gYBeaa_AscxJ1qmQbFRw9T+sbut>RXuFOyfxp_2K-{y zzD-Zg7n~{)#DAE@Q;|lMXsp~5zBv%+lbF8T%QjW6a;m|?5o;un8^Mvb?Pxrygj?ue zv_HGR3(f|WivaxwNq3BqR^EFJFq|TiN@^|3S8gr8BjN4an0NSd$;sfJ`-!uCj(V&E zfgv0|5MxlVcp5@>?vgPJO_xJ+D_xzZyAIa6sgClZHER?vYyV*#(mxBE07@Ds>29G=)5jN!3Y}5pjEdqfMlcnyr$a)vLC4|0O5h+MIjm4 z$B@v3VsIENmA^O8D^=7ci4vYL6G>B@D%5STQV_8BMjv72g$gf&n^uqd4EGW!h-GQB z3gM5dmyOD;h`RKkSPm#)00==@1tAyr7j909x^T2CYI`jz_e(VdKq;|dE_pg&Pt_W3=!xo z5+XSW5}gQ8EsxnwFHd5RUG(W?SyJ&D(KPWTPI#~|An}PJH1XzBz=*YkY=+6$mA33P z3sEE@^93iS#+lKZEp4w0Z2|87+U|ZKn;CYAsQLyR4)XBxx^@!~!s8PWBQiP42I53h zqSeKtniw^-(wV5%!3SW^B&Wea`TR?u0Q5ex6hA0u&@TuRBBmg*YSw!uCv{;g1#S$Z zJP?VDhc4W#_wYA5feeHB1;$Clw!mGsbZGUssx+m|ZbtCps!N>UNCLSy@5ZkCRIJB- zyB-O#<8=s#gua$|YXr3hm(`llGYe!6GcAYMN=Yjyfvy%<&D-YLx5)D9h_}5beIE!4 z^jRtxrsLdy28EqUcfNlH-U6(lst9VAIp99*xxy$Q#ec@&zI*3>%?nQ?&I` zZ263E2(tk<-!jG>!*ErI$Pwx{!V%pIsJ5wA z1O)xIpNx8EZ^DV_Bne|0a6e>o4xDnr^0Jeju+8&bm(!nMmVMjuNGa;uoWyj0w(LqSDD(`&V93%}Qq8s1%aW4jR!$8B8L)JyR(; zPw75TlD)ktvyw?Y6bW9#tI#8LndgH)kf^kEKX5PNk!6mv*L$9;25X4fwQKjp{^eoY z%Pl6~T#0HbgzQ4!RBbxCSq*$nd+l%0UTgPQf}+^}ZEJ|@2%rekLf=F$bNzKs;%&Vg zCFMcfWL`#}ulS^PY!z zn}fp}1Ol_oFSFh%YDhbAFf(~#Jc~7nT9PW`?RPRf&Cl8(G9#gD2~_Em?yzwL>XKdq zt_M>CeEdM)Jd8+kM5ws06Vw<%y`=_%hXltInuRAN*2{Pz7+o{pWchDy=XtS>h8WVh zD~qmv*^cu9*YwkqKaEThZy0Xy>mLa&Nqo6Z^-v#@EWzy1(GaYf`2s)_;DU=s-Y@I9 zxOW7GXVsTcIS^4I$2qYuqzil|m)VI!_Gj6$q_v3dt=cE{<;;|aP zG9wU(fzIXT@0C66mBLz-PZkVVQoVlfg|S06XM~nie4_mF)g7H1h1Qzq^hP>0wi@gJ z6v9C*qo@6jN`yzC4wK=1|;9by=b#95=q+LN#kMraWlsQ7Sn`|tmw*s*BPJAGk!WB{KBZGqxTT zM(9aUfB+%kCtA%9mbYJL&A#-%NQ%KJZnAX3!&C9Kua(A~+o{I1_ z_)h{P_tFve+V{iF@2;B)Li9t;wZ+egJ3z(2;*t-ECGwQQh619?VAB#D0@+@7h>U@sKVYly9{X&GXpF`ORr|_!2sJMz-TzI*PV)FAlig(NK~;)I3{VL}}oCt(k}<5Y5;uG=KHl zDKex%veXy66}_8JG9&OA>9Z8PmdN3Ax;&@T123cq3Q(nqO?*`?fYcIw@q#GtZC<>t z?nZ9=0sf`n>y7}KJDbgQx!XAxIXTeu%k2k zqfa#G5H2MG3y>+Wg6MUGyRD#zB2YA|%+0Dznz=|>A-hU$+fbd<%$XY>=xyGKGAhQ* zMH(bC9#+I30$)o^(>Y0zLGyp|%hUUBj^m};^PbMG{&PnEEz3=h0u0L}{CbIhGNh8m zLk!6g(nVms*NWKme)Pq#;EEBM{oImQRo`_!k+!mYbmq#6%d7UJlIQn8^XSf<3`mO# zSxZAAVa|GpH(70al0^pYQ-+QMQPiMPw9Z2N3n*4eoRQfu+E$g`L~8q}O4Prs9uTGc zw_JW0gVCaf&(ZuYXt~#?BPVn*GG`mR(1rW{6%C}U3VxQm}ek~rFF(Irz9 z+#mo9k;u|654;{lr>X%Wq-PrRk6`W?(%?fxUd_3vgJCDT*=RZ#35Xw+)~j9F+RC2`@DgvOTmLu z_#CbyST`zqS$BcA+~oCK&jYDAP*GQ2?%`~86~B!ard`IMgv&YVxx0W~|7iZ(_=sBQ zCzvHP35OuzOxH|@q>9~%4<3Jk?cIN1&*cE5OaV}85CXP}4Zipw);z#UJb1H4ZIe*Q z@^nRndj{p2Dke!XHzoJj4tfrhQRlf*ZBLZxQ;HY%Z{WHoK_kY_*syu(L2#PE{?=_o z-M1Pk6a(1#vRLet`?^lB8YDPc1Pw7}JPPCrNTw9>esA9eWll1LB%S)~?Sy%<1tqfh zU2={Y6SOX}ReImKvl4>~E*|kpKrW1tEhC-d8sWTN?)r(GQdcO-UOF{)msneG@@wG; zm>z=YyvT79XQPqVNcb&Mlw6lI?iO~#d-p!#Riiq1CA_Ecvkr3c-{E0f$FQl1bS|J5AtUU9LU3J@5T zwrQZsgsGR}aC%_F=foX!^Fva~+J@}_GJ~~$D}Df-!i|q4z%@4m($eJ)@oi8i^fi?L zpA5E3obOQ{onY#hovN?)tZ`M%{5DZ~Eu@F%RSY&Ma80oKH=v$!z*|G$y=79yEQS@5 zjd~ay0{9f7q3Jgz+##?*IP7iw{L)a}v^js@g~gxn3K46tTM+9MHVtw2!%g)%uqLqV z84VsGlCp}YrtFOYL&0Xl^)&gL5}FKek2Q;0AVvS;5e$tvJ+3400QwcmL(CGpK@z*v z?{k8!N2~iH8OdzG3+dxv3{WiIjhTlNe*vRurw55$UwLQPX(CW@7F3im zVxUE9J|n5Ty2w^Y>~k#KHdigB!1|LK_@s5Ud}``Y0)!vy;{Z1YV#N9*JWMi>)`T~N z#4ZSD*jxC0^^a>v{2fJZ`2$EL7ibx^&t$mi6EVIph29JdXvW&5YgElQGE)eP*&kEn zMR5XJpog!ZG-01eaIYZgR<%smxIwEr*(msJgETI}kQf%&;VS4iNo9xDPVXvl0gE|> z8*IIQom}k@AeIve`h<#B6*%Cd?nr-&?}8?$8Z0yzJ}5H?UOeVM^p3V6bIXYNn#Ut0 zzq*lsJE(qH45T}LZc6vDVqyu)E{Gnoy$0hoslNrUmTjKsp7K%T#)kYX^b76Lea=X`NQO9C?i{JQpy!AXdWA$*2mN+8yE*0cC=@fsH&f0Ok}%F> zY>9d)B%FWRt*Q4};yi_!Lh6k1RzZ5U!CM0of^5V^i3Y$iunGYUfTS0b0!1`p_)BxA z*v*A&TVylgMty2L)u(HiH1ya8?T!{@d4RDflvz0=kgLKKy#$f;C&b=$aUmB`X7L_w@$MFG%jN%)`Xw zcD%2_DBa7lHiwFukLR7#sX}%b5`2o&p@mJ@83HiAe_6~%JpvR1ImQBTwM-2J5E*sZ zlPq{m8s#t4O2=16n*!?9uV9+ptMrF3ek;25)66Z&$xtbn4;Y_$}aj0p9Fd!oy20Jl3g-bzSK$h$l?KLPA_CIV1@JO5{kyVJ~cS!dO+g^7dE?SsHp-n*j1`R!+l&@9A zA_vw5fXsk}M3+a1&(p+5S#(xMRFH)^Kf)c=LeVwCjgfImD!x_FcOh$QQ=-cIFKazl zSa%|wtsnlI$;Nv`gg<%qMNQ!RbAm>!t8qq&)6D`Gp~tB{ABq26tGlJz=KX|O-g5a_{;s<)!mTC7ZK7G${@k8%o;?~>0Jxr8< zO}wsOCqu5LHYdb2d$4)%+d30|~CX3JP*;(xVbdO!Ag_C!tdSGnEEITK_s8 z{`=%_9qYP7TtCp&)n&UYURVkiO_X-A&3-F^B=a01ee@Z7MmZILbAs{=Fbe@(R$1;E*78)=rFQb-{m%BN9`bUV6zi3m#%h4KJm1-I3w3s~(De*# zUvf5jko~F*lI;D9ku0DdhCp#4mjdIQV2{B#*e8dR<)te6Vwr^&KFoWoOOs2j#M%}&nG1AOqmM7;w#OTP98p=wW8++k~agk z1N+tr2N9l7@k(H5=97?3b*cBWR&_n!XNCE}>h zK;js-J?lOdYr>F^X;9lfNcfLEEh4%QsymWt|~JA%ee-F;E@>Azlte=J{L8Y z@KQF;Kf5L2p5cMNEIBXLI(!l*b!0)Mj4mOg#$7&k$33qUZVp2Zb=-w|fqYBn>&Kx& z(j(_>)u#~9c>569#&NmAB=qn+8+Z^1@=T3TSFCen2)lKxb*Q=OSgE(9r;cV&b2Z;hkOE;R94Nm382OBXPe# z2i7t`T#UJ<)VhZ9!TlmcN7l=!=h^)EGd<0@hhdoo2)3h2k<9|}2mK5|$^|#sFY5Jl z1f$;_Jku&L$aOMH06D0nnmb;dpe){g2vc5ZR`2AC4mhsHils}m$JNvaUz#K`Ke0gL ztJ<2FNYc4c3#e%WDw8Hs?QyN&VpQ_YVrk%;;g&ArgBl8}EG8#_1jq{l++Pc%-ZI!D z3m3qAXE;xy1}7x>miDkCQ@ZgW09|A76!Z49e4FE9(-GNtC2g?I7o^fKQrh(n+iXD@ zfaI!1R03NHV^?8%LWxFn6L75Ftw93F!M9QvkCz7d{>o-cO=T~Z^rs&L zRfO}uE)2dEC;w0+qC<);6%euWcll`DVOJJr!dhNb}DCnDHVX&sr57| z)77R6Wj3MSi*obt9b}KS0C~l@+?MR^#cJS}um`2aSAT~3L8iT|{^9smQSOU6k^F;v zV|)KPg&P0KiO=#9+FrJKxr}%m^s0eyfRGtGz+4FVfa`+I!m<>^we*aIE`y#esNUeK zD`TFp!Lf>XnrpQyk`t*`^J6S>_exA*1^6tU`W5=-VoU z-25$CgGxhz+U*n5ZyhRpC^}Y_A%fLEAVD{LKc;eQtC?b*CN&Wu26Uj_-XE;SbF_-FA#$$3(T!rkBj z++fyCB}&gqe+H!9a-Ce|2Rqf$kjpcV4M(6c?=7IDvAu!S5Kks0Mnz(@Yod{R9jC@u zTMb8?Rp^jqap7H=mp$?RP@A7@W4hG7a`yIO`voD7&7`kP?SEpqWq*T+>5Tmp2a@;o zc8F2x^?n&__q+BNTT7!H57mk|yw*Cti)?;W4+`Ec?kwFf$7_8vMrA49+=9C7z&IsF zIQM-Yby(c7Za0-T_>@ENCPSypR1?+IM#eJD39Zkx@WQeFi=S`xd($hCBPpuSgrr#Q zM)0PwLxIxQ^Md;}OogqXsxuf{J^_w%0^tH+1c`@-qh)!0c(7XrMh81stIA z>2%VA&#Qmgp4k>SKY{i>$$M9t#T={dgP@`vDiuLqT@Uck5Ds1^M-onzE16^V-)%eE z*XwvMifW-rLB;izK0##3Vbe)f7sj&gGzktj5j1o>*0-_T5cVpTj3l-J`OTQ}!TJLA z8SR$E$BryZLtYJhh6?g~MABKXN_0qy(*)#S zZ8P`VUwIed(z%$p+bVV{M0CUGn-_=}TCwZd>~z#p%3RslgW`dQjlB71`Y$()hxBZ> z$mz%VB;8kfnIH&srfzH4{f!~CW{6zIe&!fs6Q(ezFuyGeR#5P2M!5FvDM#HCAe?VD z>>%=zDtAf*>G9QXeL&Xniqj>LA8^?;HQJ`4sV-O(xsZSaOh5*^FX#nR> zFFgTp(E#|N@Jp^o@C7anO%bBw1U+gaB|Rr8+O!viEc>(cLK#>jo z_!D=GN!WG$&6%Tg&8{YN1R~0IwJ=Zl67s|IZq#k`@uRG=aLn#V6l*f>!xcC|P-wg4 zERh7)hKG}KnvQ#8(ctHXok;L^9yFDB@Z;SI zD1V&|QNyz6x?H2#d0b|Qc1nF}b^mkeTb-XwQE|vVu{s??bZzGl^HP#oHaur>R0&|m zb4Ql`1!~&5i!H{LE?Oi#f$}onZJsAz?PQ9%6!ajPI5<3@k04RAU^<+a1^ z&)$L=8NMmcj}niheeP(EG`4YNnw%nXW+o+Hn(u!Zv=TPu+e8EckQyr#F7Yik@1D8M zb97_BtD3qsJ*`CS;^>_3 z)~Z>^HZDRKH#b{K6b$AGq6H`pxNqD9ur@&-s^xwy^*4pNyl|Ztzpg3|oGs8fV38=E zP`lGEx}{4MAcAiDx;rbI?{9T?VrV5EJZZ4e6+MnfI<_1*zIcSJ9-CEv{K5uI-k^y6 zaY}eA5c>o~rKR@#cF~(LE?jG2Bl7JtS&?IcR7au+rprcU<(1s}w*2cuZCWtkub(+( z))^p`*Qd$foAP+tJACt!-yu~eZCIQBS<@Sd_tc4<;6$a;?DXgs#W{NpO~GjwGXS6&cH44xa>UyceeFR zNeYKt9rg$vxNXw42gP=PBR8_D&Xj_gD%*R#e$zq~=p`>auv!8G6mcXNWvlPr z3TBjh$>6@yY6H!UG1StUM#~lWn^4*Oljmg+=KY3J9}06`GBT8O(g{a6Xj6qTXtw>p z4{|#?Xd7sDBONK(wu+1EBpUv;1L0@;IivRUetoPgW@1Yr?THKadtNLs7%F=J@0i~)`QvL7q_b>5w#~j15lN&kL@>#y zAXH05u^!kYtsGjX86^Kto1n0=T%ZdfaREA1g^~6+AxLXu%lOgYOwbkmQ1E>|*kOHq zH3Ii)a)o}&&(tHU&0zZXoG_N5Ky1LLFu>_ZYU7bKX9Z&)=&N%=+q82+52Amwl}jhA zNAzjX0fWw9>mt?iwz+DMaP=>G5hTt9=he*EvJkm^StSgQ0c`cxrOjp@n^JI6HFC}-Sv*(LL zAm+sIl~}u}lNGiRGZ8i>SYQ!suXhg0>5dSnoA1!ErC?ok zjKo-jl?i#Jaw>Ue9|vqk@hDVeR+pCE#P5k#_(nY<_-LW_;$)6*Y5?|A6!${gha|Tl zS$l8ro6XCszz4N(MyJhtHIG9wVa>QcAg*SYC{C-6ze(;6@qaAa3&=!;Lp)*30@ixs zU^43C3{i(4is8oo^g&ZE-TqTzsLn(c`(vo5z;DDrrrFMqpZKXW`2K+pauGPMymB`x zhQJx^l=35_GOK>S#qn)r6;l+gZjdJ6hx_su-;PH`;6tskqqJQx+4OPqo9wcw^&UdF zc(Zv>^=3DbG6q3T8o1rycmVk;^-(n`=l9_CPdJ15n6=9|a^61I6tr_iqTEH<6Gzem zk-78&QdIS-cZm=%Vjvjl6Yq`09cAsPQTniWuP8=-dbKwQe^Fk)uv9ts@lVt-X+dVB zF;(j31TDD}J?P!oaHn%6@Z{Mhn(P+*i6UQbm+2pa#><{`ysxmV3(rYblyYgp0 zR3V{3Zp08usVJAMeVrr{y8()FFTGYg`qVVF1T)x# z=R}D=Ar=I@N291RctUJro12p-b6H&dzjl9b;k$(0qGYX`ul27Oui19vl_9f3)!%2b z{JuApd)dc*mU=$e9-K|YVKgCj>Cig|H<{I(d=JRz9wKxVH4#98a!W~Ep8inn-3vVO zO7*001gDU*NP~ih-628K8ge__J+U!CvWh> zkVQIn0VZFRV@^FO>O^n;*1+pI!T+^+3V`Duj(|NUeHIe7FyS?O7omkEE&9rIyN`NN zVg@}38z*+$*AEFwj>ap`@^dR$qq=NkA#dCk;yVM&(R@t1bljdbFkzH{;WE&$rza8u zEze=QC$Sww%e(rBi;j&&h;d+-3qcnXa62j00G|T6O$40Y_h2ZJ%HV)3fLWvRoDhGg zUGKb)`BCLTw&P}GQfoVjVhqKusDsIv)0DWQRQ*`Xm3I}t!6f^>jZX#&lolS0G*7@_ zlPS)@p8@0p8!!x;+Z~4%;d8qqE1jmf=0D_c{D>P(7mQ3DCTa}LF@|Yca#Tkbtd{?g8m&O;XoV0 z7_tHX@FD(1Nuni}VkH=$0a;e|44A#! z&+~2#^pR443II8`NeKoI2vOHNgFSX^4Z0w05oLA29mwcHUcJx`!E|c+VUb(v32*^3 zpn;>7=C~jj_&w7c9(}Uo#@@`(L$nad1)x`O$zyLmhA64&h3zfO487k~WQ8Z4UiEnU3`x1hirlQl2H6(ZaUXUaHCf#?^yU8UXwKA9k?(u?u zPHj3Q<2}UF({V^d)#52?Lu*`@s;vpcb3;_vcBWR#ZY5tL9ZG@+4dNq|HlYAHmHzbK zoTwtrzVy3>SD#u6Fc{J24m+-KCD-WJNN|pbpMwGHQ_|!b1L(bM45;+livk{)2iW9s z$qLWvqz*}B+b48W91w1gsL>_spdJJVM*7(cOE4IS8t2-urq=gq(7yyEOM`P6R0o8&YhI#{b6Z62>}1lw_No5*NEG3E*UYCmUAxpzEdwskCcS2?E9%CTBtxDp*Dm)@o@^V0a{8Hrw@;-?4x3z zXz2+1n1P@{_^g|_jJpSK;ZHCw;_gaZ;oV?%z#CjR;~68988Y>=$|}ynJ_&DfGcuUs z2__D`44a2@#}273ymD6I#qtiPs-4u=!grrKl}VVJ{ET|!4Xk_`bbH& zQ3x)vPr{aJEd{6Coe`M)w3gzTZS_1LjXzbX+*Y!MwuZlW0GCtCh=w`h^Fv!go*(Y= zPo1vTxYC~tUasUWs<8av#ig7V-=)+#JPl)m2@WQdo0DNV_r}8r#7B^fg3Hlv18OP6 z9EAm+!VtO;Cangz!TnI4tdDiUAt>5F(B1JP#-@L*5E@q_p6j4`P{vzzFelu42G*P~ zVmVIb#8^QgkMzV(Tszpcz_0Dxaf~G&aV=PP^|J>4uinytH|pwV6;1ph=H-?231kcg z(yO1};z;=00`j+%gtaI>yNbc?s%DX8h_|)(Q1*Q#hgYx@vD8lFGDJasBnpna8}dkO zdU@tO(v?~|6!)=H30o>*O7GmbNHyjd7(|fA!n1+F2%zQOmUeFCmqGVXWqWa(UI@b2kWE7^v;Ty?+Ag9x_$$pz&Mxnh2({LZ zrIMOBROov`txKVg;kzRIASme?JXn)4Jqv@r4{%boonw+t&7Z4kxdAj!GnVZWwW82; z^!U*p=635?K9cJu?bB(v*0J5#K% zO;dNZ!zIQviGXS6@|+5g<}&ZTHx=PgAK$SzJ5W}YEu@P~x_>%>(tIR^HZ4wvZ}c!{ zJ~`Cuf(O@JF8doKkNxQ9wm$pH?JP7EodX?17|aj2VlVt__{GLbC{g7aOVq%b@$n^J zu0KSx636ZR`P&kv+(L{1KhVeJOV z8uV|52^%X8V~D=}9?l+E7?Hi{wO)B^UjCq{_{1E2kVBfU2E{OK!z_dF<^3~>hk|U( z)3N(`T8P@x%J%uX*Yb^rD2;c=EyE<}({xW6VeqJ9D^S3$I{{T#!Bmy%qk~c|ToJN% zIE81ecy!NN@v6+fC%_v$AOA-?12K&$5uehWMlFH>8iz3vL^VqKMq&1eYD95Cr_Lx{ zq9Dq|t1bOVpnS5!yX&{du?In1-D7Fk^RBcmZ)W#TQydp*-NFtl@n42!HTo#hCjt>f zM}Zwr@ueWDxPco127%?9sZ9(3=;SrV;JtvcyblZ^x)%HK>o7zbv@`p7sfk) zjvVLoeQl$kLB1W6bVWtol1(xrS3@k9)@pE{Od_e*d~%qPga!P?6f$}RH@Zv4Q#jN} z37%KzKxCwjJoCqEMmHGDtY*}b{d>GG<*I#KMB$<(QbDv%2|#%ir3_{Z zP6c0rj+eU7ePcY-SXA^w7)?`j7&!qQwJ$Wciblgl6DLZ~o z9=Z#?B5X)wHtw`qJ%3RHcj1}f5oH2Jt@u&?C@(jo z7{HzZvLbq#$U^%nyEybUw#ABddxHGz50hKKmXq+|QCm7;@qhxTfey`081$&e3k5qA z=t2Y@?-W&$HX@7yS8-{5j9WkDxlazkkj>t6VVYTRvv9F`Ac#>}S=-)E;zsQ9eGygC zo^#pzO%}>#ktsF)iVfKrAU<#t_CskbB`(Q>VCfo>q!T)un=hhRDiM%JZ~j$qu2~rS zmq~8Nsg}!_+TDCfRgnm7>DTHn$omdjb3Z^|if$z>73b#;LX2VZ*k5T|n%o?B?zosE zDbqs~em5T0JAhk6I_Z6P^PSt+P$EQxYFa&zeu7c;F>k6c#T4?y%B+(d z6t1BZh~26;V8%3mm3h}xi)uWODM$}Q3<~}$t`=tzvpu+d5pGuuW*)bgP@JXFE&Q*R zJc!BL%~ASJwO3c^@AGb;*87+N=3h5OzrgIP&5w{%PQkC_Y6pQ42@DBZ<60r1Lw7my zjyn@#*Yre)A(iNkjz6oPct7%`*L~!kaBxLGh`MxSYb@I&LxE{5hc)e-3(zD4Dn6gf zJDo7}jx?(M6xCI4||=7qS*n0{f~PoZFq~%A(vBI%RxIEF6jCAO)k{ z?m%5$d*kkngmpjd-y(+biHv#g6JUr&Y+&~Q{Tzrqw&H#GtWKLFS`ajf zK-GAZs`pDjFXqu|n`(9L>W(r$54;!i-X@G?z;lG3F~mzGvqKgm1}eM2xxVfT!fc(x zsgMTQh#>R!StSkKqq?AoAPTEfSOqsALefBX%t|gI?X?qTD-(cz*W`{ zYw9w0tPp+qt%x;A8)7!7vKG1R#1{d+XX)<^xInBc_CluLYpx=q>)?zNv1S9pJF;HS z0<#*naRk*)A9LJ9xNE>r$#7L`v?8e5*>Uw}Bh1BOhW`Ce559>YuY+ont@R*w_BeME zSythVo*(Y3xqDBhqLcI1c_Fw1mg`zi^8;K*fcu2+z4I7eWH8H>AC+3Qaj($c3=F}P zWjr`x)nG16oC`acK!3C_Bju%`XxFi9c%lw4^v_pvVHVeR;AvA-nU8lBTv(%V31OA> zPQ}?8z9$EbX0$fe<<_OUy>2g$cd+ivoQgRvtVx3llk**VS;|3Km-8eMD!h{SbNiPZ=e)V5odeA9aZoB zm-t4g2cqNr)0SNLJHV@RG2wr2GhM75>aopZeBMs_x!#>+vIjMk*INYF-1y$+uMy>u-%nra73C)AohjpK2@xYI4mMz{@&REd={6b3;2)rxi;vJ__dxq0|cg$ zkQ_dUxD{*2gjl)w4)he!YGfU#26Z`A;UId3#?wmZ+3d3?55pvVgUxtCrE6+j%X~qv z0sl`cVN6)=86}?4PKFN+a#OL7=xcWfU9(-)?^Y0)`%aVzu5;Lk|Jg2Y&>(_(Uz@18ia;Cm{wj5MnRx0NWe=|57}5`2 z+6$>Mfc&dNXE~lyG{}$dJd{_9a3^cepDT!G1X{>IWu$}?cl}gfUGRV5Rza&XQ0%2_ zqY8|cZwq*|6kx<6t3_cC?b~^z0 zes-*Zg733)#~tMELvM#RL;Yrt-jYu9)mITX`QE_m@eKb3XaQ>AHR~7Pd5CEGsbluG zsn7S5%r-M2%c{4@ZUa4yUK`-K(YPd9ub9gsaH6HUJA!k^ddrROeWLe@ZG@5s1BD|}(f?c_uNiHbA3u;LC^9;e zcHQdT6hi}JqW-okmP`Fc5gCOK`Y1aZZIamnsKfU~QWEF*fUu=Se!jm2l% zDX$*!v**NP922!*oMbOm;-X8UBf)Hi5*T{4zTJlU*kivKqd2b@ zRIZXGx>^5hvRU{)^a>Fg_J8d-|7`L<_8ZYA!A+RmU{{5#1>+EMh@v~tyY7{2N8KkF zX<)L`dZsW6ikR%eM6?6^@fKH~YXOTYLYMus2GJR&9WLsgqC=t0>+p!WWCDIL%Tcts zf7mz_bd$U7R!wN-|Ju7jee`{sgQtl$OA;fb^cU`Db1De=X4|_X2Ho-fgh7eE*^=~hg zV;8#LjWlm3iwyB!Ix;b}qB6!9G+tWEFcf`n3Vy|Sz5bgM6zzh-od52j=hN7;B97QD z=z4k=>3s5uI7e7~h6<{S^Sc&!FWo4kN~3sTvMsnei}OM6S!8{mk5F!N5P0x0kf4{J+JgS|F!KKy;(EV|MmQ`mT`#gG0ony!7hEj3x%vfo$A4U= z#7Xg{()S+79W)LY!NaHG%`;NYZSlHSF(M4G!@fJQk)gZbzU?*hS-GF_H8p_GA3;AgIcO`1$ZY;G?Eb zGDp1_)Frn&LR=k2z+Htvu#6NS&qQGXbPGPtc0U4M45aq63*JV=m}7jx_d5q?+VL9+ zFvu2iSA1Vse`QrbyE4Vqw|LXxfhHj4LIk=}x1Exc8GafV)6SRT5U40hGj7$xy&e<=P2Wd6) zn$;2Jt_Qh>+@`@OS`ixmT4RzC+6g_7Ne@cic-fy37QUZ3TQ#(WKoJzKR_YYSD-yWB zW!Rnl(gsG^f?P|d=LcH0`*6*L^7ngQDL=9hh$*Qd1k-`#m#(8-l=0w~j zWKIcD4sENbf0R>0V!pkkL%?~E%<-@0VCJ+~tYYZt=J=2w;1|z@c__B|_fa%OVVmU} z@c%ghbGTTghR_TMSGf5_HD2hPC9n^=(V>Ijy;fWcPtY(OtX=lt>B|Hs0_m#(4WVOd z^4_JqL8Z$KYVvui4~N8PsmOQ^UF=s|#d+U*4JY_TQtqHTCXeT1uN0pc@q;&_OY7N@6 z3iCA*JiNj|KF51uk{+-PI)b3$X9EhM>ZUk^$cDA}%jHA59PnaeTYpDMl3m}@PP`o= zvuR>5ro{kvg8Wr@<;vw>^aQskXaI^^z}%X>neP%oMGx+N6B=##h%Z-0<;W`LpS28H zOe}(@l@RXyv(5aK=qR_+=5gK!c+Hlr2Vg-JojNZDfhY1_30^%irpWBXdw=u~;yb4M z4$V5&(S9;4o` z6>t(soWwg#xB&ikdf_X$jMOhae`BLI4K7uayLh7ov6_gP{Zm4mYLSNFkE&N}szr%d zzj!365#*L~m-KQ2=b``NXS+O6d2(vY*R9pO9CvAM%HMz7+=c=dYPmLU#e)rEZ3}${ zWCUcU(;CfxtqA!5x@Hu;m*KQeZn^bFnwt@O&d}Vr%*!pZ(Cng_$ws8Iac1u_F-PDt z^ReQf4)@SIWBG-&=4bpGc^}T=YrQ8qeFXYuh^5*lC>3@Iv8xNCy^Pja&DfP{(E0@>l{SP}EjeLY# zVZm`f?*7Bo)ZF@U#~)V6W(4M_{nZ=Z!N1SB518rt*l{Z#eT0vB%A*X{ z-O6=X=+xj=#$yreU7}u?g20dt7aQcK5G0SVnaf-JIF_+oE@D%G%gvU~FG7(f!!Tdd@@A3pc9hkDE{L zP}kDgPnE|V9Tgv%whZR>ba&54yUEoZS}!e4N0zu1yb;eJuOmq*eo=mq@n+^O~6ksOWY`X8PLHRe~?tUpN= zAO_#Mkc(?**2`;hz#gn$^)n|i9VfQ=55c@egE06TGhB%xq^^UWXNEU+yC8W_u|W~MLxm@a=i^i5XJ z*u9n;hTj89incrZ=8x&yo3dU#IPfGP#ujFxXyc93Pf0}KC%2EixvR$n>f7V?xq&YY z5>W#Xpn#F-Izl_#H?k?j=|tcV8<_UrmiK>apyS-8gKyO_o+1l(V@CG6fR)qAJO6~7 z`MjTis@r=t?3Dj>_q9At{qz%Y$~U;6FXw|1*m5>o6q<^#yt7$I&-E>U8>epWo3+mL z=sQ4ZFt~5-`{~eZdO%zLc>OdIl*J^2ffpjRU(%|hsduVWFl6lk73S~C8!j!_0vI*-b&qOz}wf?Pp#~2Iy0ucsTylCN4?k7duZwtFB zJ|yTsw)9{&Dr@#6dPb+&eVKUd>dQ6r&wYV2;+P&D_Ni@gD+-KI=Cq((a9akcu1^gj zh+Ad>7~C}3Mpwtqn0o4IKPdBR{^#m%TW7>NmL=xq;AH`{I0jNl4J)vNKfc z5s|h$zAR$w0n;1uPewdl|6GGWJ7W7^EIGP%#)ePEsF2KjM_@-F4c1VUT^#p;p^?C)-SFodWf&{jgk49 zaB4a59REI(|7|HX^O7StuV;O^xT+O1qylmX|K)zpyW9dk5c{ljphmBN;OO61t+4y+ z*(VjZzTd9@`TnF9zK$1cPgrIc*oL{`=;~*)wiiXF8;749|75XA1OU;jY5l;PFBZiE z^=vyR?wpi_e!-O|xoV#i&cq<|@$X;$-~Ii=mb}W~$X*o8vkYvhE@*&87?5$UkR{XIkLm>faxVj=*-r zn?anoY$qcWXj=et{+pZh@T*fW%Hc=~m!uSjj_`k9rDlP8$lk-#o_*dg4IJ$q^`C8< zh4mWTwjj*+>+yYgr(eDMu!0M^7z|4$_33>vHVaMfJk%FN9_SqO+o}5P!v~HQL4j$` ziY$oA;Y?MYVG5P-My(v$#&|{8{pRK#557bI_i$Yj!8PJgvB75B?dZa3cB~%+im}aQ zr~jER_1d!}13OOH`>eNkqx|b%FqC>{F$vVos~Xr>X>hJzYJFY$z|2d13L~WK$SWEa zT}uYrn`p38CDSwY5iFQgxYOVE{`u-ohj8E87rZA^&-@&elFmXyBh{ zsG+GG@fA9^td}ti3y0WCs6p@tiukpZ2g)$3cIiBf*V01hOLK@_&p&{Q|K6EcVqt zpy^r3>)<^&c@j@@H%xi`f?cX{{KFv)A(DWHPq|sJ;=i8!T(d7%?8hWzN!`Nh^8e=G z3g%gPPI?(7giuO7q!QZYwrA)U#U5$&l>wk>>!vTF<|xPanzy*>r_>-6cI%?cptlTP zjG&otkS5nDCS!c_D<;|6^s~_}dbW$!^JZcw!0YhG%?(3unjT#f?i+Gqqc5sl7gf_s zhDb$LqgDhcG~})qO!G-N_s}UM^Z2vEKW@syWhynz^~XJou~ z{oL(*m$-GN{QarlP0p)7mpJHTJy~F7J&TL7^|CYl1-7UI4LUA!f#V?jiQA-8mR8WY z-EGotzj-k5w@w<&j*cV03ay(s9g-^a@JS?oXFrL)rSH#XuyAX}i0-JIcWt{&PDx&GC>?#w^JP}{pURqeFBP0 zZiqfj!!#Gt(!k~BzTnF>*VNR+EzLqn!+b5crMZ?`l9UT>X{br5ssFUhQc}sa#3(o1 z(A2cD{D05fdmqCS6cH|0eslSJ-#PcpnVB=+nLBsx@*bgUlkjp%(?dr(B(|;C5Yx+* zi>W+P5Av>T+b84_{T^3*oz^&!a=Cch7%u^jqC&TBy9VN_^$+c(tnKk@Y*~zq=N10I&WH-=nVZE1rt;Z*AkI zUWFP-A=ee$V1?l_ZpXs35U(#*_!alF)jq{T`+<)ptp5|sxDc16VVT6b?+t!v|FJ{# z^SdfL_&LnPx?b9js?(&)4`{q9fw#pHB0~~d>vtS@Wlz|gc5N3V zS8Y3=en_%%{$*WSh4S~oNj`{U$87upZS|^{aDu;|z2KeXM$cku96G7cg31@G;w`s>V|pb% zePbp4(gH5RgXP?oSH*jO%R6zH) z!VY}W>@WsJ+@!gy2UJd|ws_N;t#}LS6TC0LixLaG5j%^%LC=evI|292YtBL^)tuEi z^o5v8LvX$ydwTBLB)pQ1L%ZvDLG&!G>-X2n;=Ox(g?$%#sCMxhN%(CRjJaCZmeCD{ zH|RySifdNW&rVfbL*J9btNlHa@J)$ie6=Kb%NhEnPQ+IYHsIC49(Y@UUed#t1j==I zu4M|oce>=`l~hV(we!`sAQI1hE3mZa@JY9%*a>k-@jL0It3S5DfB2L7Mw)QyHq zx+SfyG(Kh!9)qAYNQY_AnXvs{=PSo1%_|c=Ya1=sBZ{r;L=By=wHmItiylZm|2n#5 znt#eLXMPfO@xnjEW+c+yN^TrB$cy&QcT+`a67>?wwAzS;rT^C0Iy1tsob(@YCSJi$ zM8NT|uFT^KwS7ZU!y)DHHcRD@OTkH3B2Sb=xIC8s9K~+np1FMtewx#NTut1H_aC=< zM_iI~2>7yJY2`q8&Qh~_`V`07hU6>wK1JO3_*PGgxA}h{`~nVGG@r#yuZHwq`#9{! z6)thS20nM8PvRWUSHR*w?oTl6Q|a5yTk|LRG?|4-z~^g(9rx4Pq_{b_fgiWIb^lp$ z5R>8T^WTBmxJvSIV3hcLgjRk%9l59V`z*;nb~?V=?H@1@K~!3ecS+(l&VPFZt};oE z#|S2Q9M`IG->;-VzCZuws%^NdQLm{5SKZIx*QKzsuJ>c5m>1{$-c3`wCHcI9FZ!OU zUFECKusV$>STgBUg9=_r(d99JoocYq6K{&1ig+UAF{}>j)7QTJuZ4q*uJ|SmuDA03A(zsIjrMAIA8(GwRV{^$aA9`6VX4(jOSH5eQA>Nps2&utD^@?VdKYxwY4 zNrTY;Cma>{u&+=yB>DHo0K&h#LZvOf_<1Hy*Y%qAIy&y*uJqM|;X9w)T>RD_lPFZ^ zVKLu^pB*>0@QX2i4TgLMOJbAL6I7a?>_~+$fa}W_u(b!-J**%<|Xeq-DKkw zZ@v>25)cs?RqGNCkl{P)M$eu;VMd2R!71hGjq%|-e>t3tw`?bDD8A4uxf*?)Zuriy zVWF!Ik2^fMLSi(Uh5Zn|pImwLTKp%~Gu}Iz!`k$Tuu%KziBZGb|H$9Ug`smmr&pK9 z2YnRm-yAc*e9w8wVQ>EV?{-H-BxX?T*WH|ee;ziv$=6%yE-4wp0-W(p9$Jcvs*<$- zOOu%5>r*O>es*IRzOzIQov99_m8ml@=+-0k{-S(k>cs8c#XAYA&w=EsqnBcote)?; zC#?72S0lhObic&plk`tActw7G8xy{H?CK1>^ns)iA1AzXnhJ&2ignd--hyB2_tXdEQIJVQVr8g#BIG+uBYf6Ljn{fkg6@9V(;xwN#_*t0uXLbI0a>}a* zF?7+_pU)mwt~#c6^gwh%#S>@Wu26L;j@98!=O>@o+OcoIO(l??Qx9)??C|oB%Qrt4 z{MVWihi#49haev0**x20OVcLTqCUACzOlf22n-oNFYazS)+B&EGd$*<@eL#BduYUb zO6P%RPd*=m#VAo;rjGy5WkQ>HCE-89h9xfVH;P*3iP7b8;h%|7y)Qk42r1W@tHmar zL$6>eeD(CF>g<>@47adWO_&&^PrStF(kuU!E8hFG=DIz2M00iC9QG=n)Xv@L@aZJloJ$k0)6bQoE_P_{t(U;+xE$+ZNAvUyOPoT-G0o)(PCU@%`Foz( z{7`FrrCPP(sV%p@n=D%K5LdNcNMoh>eQWH;L3+rWWAQ{5aegsBzUNGS8bFKj^qKO; z)*G$Yj-7$7Jaw@{nGjMeo&Db(*SGU;1jAYEDRF=BKQBuXyQ@P-|bH zSYJXQuW#$VRjw}Eybq7PIkT>=1+(~R$DnUlMa{VJ$8MS{?N`2=gSTE=1TD2hegE97 zEeWm9H>l7Hr<9;?LqhTE+FR-@DL!k$`G3R9&%*uJpi|$*|53H_xX>U+KxLmJ|D-g) z$^m(k)bhp!bO~*SyK1m}9K2@H{@GWfMs1l*|CD4;l4+%cuqA*Wh2V zl>I&==3Hz*ahJhJzwETOQ!)APPmTU0FI+Yr9+2?A}*2j0zzskhwwgugq zh`QnV_oT%stHP3hb9@z33y!<%ZVL%*SgQ5$<#_%TUa0en0h_q*uiwUxt%(ltIXnMi ziDgF}_%;ufkffCmcD33Do_SSNxlWuzBz_$H@T{72CMM7ReCPObVqm$AsTv_q@SM=-ky>Df0po#zY*SjVT`qU&hwizqd+q z@N*&81J`rQ;8#!MW&!WB-SYy6o<82W@>c%Ze?W6e(~^Z4GJRz*kikme0u<~SQUMacZiVQ2ggU1wg6>KsL{$6%%O zVZ|+tJl?~rL-m?Qj4N0TXU$V@w)F9z-y63Iqfc9&z>?JNwRW1%*}D7py<0XA&j3z6 zKK8_fr=mNIeiO^&X)hvE|vvdIvx4FzK(Jg|53$2aYSY_LUCszHA zUyh1u8F6^b;DR^;?D!hz^%-3c?cKGcE2h1;@7uoh)Hj^9h_507=JsodFN%E?aoUSc zu-x)~D89QzmdeSv`3o&{@7UGxrRY^oO8@U9etRRfNb})0;^`8*I~LxJNB_322nNo$ z<9|)SCC<3x%Mbr^V+n3!(76;pyM|9p1tffMrmjRM#7eg?pN~7<{m8g4U&CuzEf(i* zx2?&;lW=FFWAayjjwsw|zZdR^kbXS+wAZdrn{80{#=nApGmNlQH;;E#U!vRn-0#W_;LD1oN5 zSY0V!m!HSr`FQZYiCaTQyG&S^eNtrnkLOXk>a*O@(A_dBrCEjlK01Oo#qrA}9fN+a z71;yB$A3iW@8+G`9Etap`~%*w?_c!Ws2*5`FB%@ux5|)Pcs%yX!{3Ej7f(5G;rwBI zfmqzd2~pgguvXaJoFAvw)Kp%6nq9G|&5>z}g0ooE`O+vV+UHDItGZ#&6N-E%`q}0Vr;4@_=>cef-gx&4-9JB8yBn1+bsSBV|K}PN1Z5~ zh`7W#HoD&EN17D-X2a~ZKi~^C$mJJIU*F~mzQD~TzQP^tlQLl1u}i7-PYBoQpAfFr zk7b`)KT=SC^uP;K`$U|6Z{#X^ID*>NjaD;2L566bW4l^5{cc&E*Dpu)>hTdS!>`9r zxJXx+T%l`BuFzFxwExexTgT#Wd=vii;4vG>{_X|M^W6)Y=erlUC)UPgHzfrZX^p`H zzn*6_zn*8vFWTq8n667#UWs@qIH5)xd_#k(IICBBR zO>#(FRs2>PG3TQdOq!aFG&LVjOcOne6Mn-C(k!9NF~>S6+LH{6wpg$ zA`M@Xj~+PueC3!c__1jm3uLaR^9GGGO(vCUp2)c_o45=A<2-z6&pCKskO#=G)>X|F zAirkUQq=&DK3ZYatd~Ak|78lL4Aht>>KWtqQbvr~rL))Um>BiO z7j%l_xf663{{+jh$K1lZXb=QRw)3zq?U(TwG z|1pLEgljVGAc01MzFy+tF)x&h3F}>^Sg=poo7w?4;=DEl{YIQ8&JoJyge(2gH1)W^ z<(%3k)R*XrA<-2>qS_{&%G*R5wTVK27OQJxymajdem4cLw*4=O+Np39I;`tuF%NHGY@%*dXl?gSH zqQ@3FUb{f&lq5bye=^5&Fis#XR(~?5XFz3I9IpPPgzo|T_wyb}(IpyhUXrw=G<=aw z-BBKW-SYswCv;}}@j9D+Sw86~?%Me6P43sbNJCuuvpr!iKl(nN4zm&GADg~^SCMU7 zdtrgZ{1SKVEVa88UK-eQbl0ID!h5$|LSIZ}ejDoq)ruOvcf*zc8sY~q*@%y?_)LEh zOJT1h7QD36nos69N?jQ{kZxf!zZJ9bYDdaXE2}O^h;B8u2u^8i4{jM8+xp$dD_yQ@ zVZ^olTN|cF{j$7khc+=Srqtq|zZ_nE=-TeE7zID}gM6Ed_gT|)fB3B0{})F&K38{_ z)}r5$MRHio8}qOb#0dvY8W!`5&SkF8!>E|W7JtUqhF#kP4)yI-2Y^L!5PI{L~h6F-);hj((wUcdk4xX7t7>M;C33!4jMW z9}J0^eb^Od^Zh?ydCP+TEEyEFBffg1*S}q`Hj7F*(GfI_NcxsXHF?bpbW(iv-@D-l zSJ0tJC^%qClUZ9j1+SUfpT1|xM*QEZsIx!yce4hc`W9go|F1dnPmMn`=KN2%%Yjkw zaWGX@byfndE=Fxh=yC!)2jgNUC8hG~F)z=BbK&P=iVqCMwI00tBQ(d!nyrtQ@!#kO z*d71mxEQq04_7aGLyjg_`=kG9%s8;FqTpUTBd`K*Ow0@tmaW;sn!^ptFB-u|B1;M0}4xdS`1Au#1D(b;jgl)t^F#KBw|PHt zd-w$E(O(9+I^S`@d(7Y)4y=;Nd@#Ok(Vye59_W4)mlCbL={66{hxbO^7~XHx`=fFF zru}ddBm^UJGVxNp88DtYBP{10%d`Ayi%6&A5ua(lsvO z8U__EZRt)hjQxXaH6Iq7&^6}V%2t0nR>afHfEsXVcx=bnuyGHyKHmDkd|Xp=-ykYr z_S+TSp=c^ECuUG=kXk~3t#L{6Rw@4+7l)u=)}{XZBBwGZX5N92)A*l5qqmf#%Q}#K z?OTn%zk1Mh7A&9Rk`Vb^9tT!&3XTM5IX?eb3pjM4oBi1qwzT<}qmC3%!rmXxPU zGb*va7U1c&4e2XgWWv=fvP3LzsSUlbd}^iDYM~H@AoyH^kuN^K6 zId@^(Iic%rRl|)1e_WuzX?=G+JbW_@cNTD^2y0l=@ZUB~K5zuDLLHy~F3xdOT#c~a zQx1<_x+Z?c5v_;9c7~B#naBB!1DY7~>7gHA9B5M+2wOGZ5m7G|cSNVPrquztZPzRP z4*$|Lsy98!gLzeVPK@__x)b7sZ-|j=)9~J>*9;HX`Wyej9$3!T;Fa#eeR7qIUz+6O z>}>9Mcp|3Cm1|15Kft0oxZV_IyS;W)E=LI(M#*Kke#C` z=F<<&Qio;OZdd;2|6?Kts6ByFMp35Ft5dWg*I6GBsiryVa9GrpRu>po zKTUJZGPoyA+|=#t8Xto(ormDL4UBWt(ec;?j2M-Kx}DX*5&DehtSz%wtlQ5=bY}#v zj?<4Y)nekn+l5q(I&6;2<}=eOJ{5FEA5gz6oXV$?HlT3CFhw0rCuZa3QR@SAs|-e` zI+muY6Cd`~fw8Xez-BZqhIA*VZE82iJe!P>g|>~r4O%_~&lju1S%u*eH*`)qGn1yI zRf}kvfmxk@SG;tU-xfO9fg-`ZRF#LKIW|3W)hu2rNb#^j(K4S)Oc<9@`j8yZ39 z{?a|v;hsE}-?c(3hN@$IU4udzVdvBV{eDX|h`K}7v7A7^GL3_pcUj$`>R1iPcj=a$ zFC$TqIy86Db22`FVNwTYz)&2@8)ykQV%Ql!etggV9Hdp@jXX2q;^z21$Kp3>6%IS| zZZbEt+JvQ$x{&QwN9~u1i}~qn#QAP`WJ2R;Cwhv`6C=(a#tnHYM(I@xvnq{1tnobg zXbXL`leiwqxvP{0hzYaY{YKixko4->~r&luwua#WBu^EZPfHc zdMHNKiBEvYj40IL-lMr^_Te%7sy8tf_eaS6WCwKG97n6NYjK48y-p9yRHF0*K4iTH z^2O0(_#$5T(y%7`XQ)>2L?>$gjLAO+w}<#K;^mVfmJznV!8_q~JY1t$h^A$%2NP_q zc~`!Ur)#*KOHYn5?(w!-IPc2Wz2f%LP2E&GKT7b-E!p#02%fRvQ2~$lfcDIV?PSaDJ@j4rKCTjDI zL^!y+U4FFn626E@_PD(W)blrbqSW%`9~Vt<@Uq+ERxP=Ys`g2nXXvEnm)PDX1*W6| zQaMQTwgp<&*OZ^^9%3B(!D+FAMPvA>$!HumOop`+UO~;?%zW=R=$3L7>*H-Ynh)|Cl z$17n${Ba+87Wr|kt54vu`o}LTk_k`div=H;;eiJ}{1MWRXzHFJ{POzBh?g%@jAyHK zz;7kNil>tl<{1C?KH}38p5M{RbO@$jHQ3XmI*;XtKV9t(!F4yk#-cOmj}vD^y+=U| z!PKm^j83*66{#3ZfuIaN76;%r|KhJy9H6eu#`f2)Wvb>^SCL~eQ>z!LW9F#m(>-JR zYfIS8Ww&V8o?|gZt969F`a}fQi5LLz(^djh?Vs~6CBClJK~uCkN6`uJe4V7PK3Cn< zYYBYWG-})}=;}LO8F(*gG*gv0;9C!bErf$Dhb{$IA~OId#6GXTmXM=in73Zq}zDZua{LcU{ShIZ{2S)W^EXXXwb>a}=`% z%}lfV7t)Rj%oj8u>r_fsubq$5gL+zuO~Ps|oEGYoNuT!Vfh~VVOIClpr}D_Nq4ck@ zgFmMW5jY+oQ_Ndsw2RrJm@>{U{9%zNZ&~|#qk|?#-NYgzCY)~3`K_l>b+o;9wmDsa zudn$baTJpUpS8m)G*QJ247SUBPFzyCx3Oa?bYEoz6KzC2Eyo?uYt z{tBB8@aFj)#nqv9Tx!pPncvZ=>Lpg=(JR$6%u!qx(n0-Ky@y(-OfI6X){fE@o_b7Z z4~lX8qr9f0TAW@oyZUq2pAYSDGpZJT<&F9M{jFzM`BBFZ2YJ*jLXu0oR(~!H0e&4KuoePG)o0@JsiHSJ2G{ zm|fjniyoA~9}~IH-yIA6GT#vp{ZFZcgRU zKXY2#Ufbc%CXBMaS#T|V3(M#G9q%r!HLLu9R&=l2|47on^)rUAMVWnCF1h8X`4!%? z^uLyrGXEHI)3e@2<3~Mxt^9xQcRc*$DdXQ~b!Yn{o8i?)0?G z&H7~Le8chT>TTAYw-tME!f>T2{akb!--8pL?EfqttGXGt#9HXB9e3;Hl4bE*)o#`& zhi>0PuOH0$;kzz#zMkg)^S-Oi{{ZWFgyDxlq;&S|@Z9y2cy}wheB`uV%^$T_%XhOB zJ@cT;vbc^l+fVOzqFNgZIX%A}|6`6n9C;1@&$q^;v$%mWuB9iv8Taz2-UT{6KHwR= zgL1PvP7XC2ZS8z|RP8EF{|p;^X2;fIC_m1T)Ny&wqI18jyu9TGK4uCY-F0;I(umL? z8V?;yj1Oql2;U+9V%^g_aN`&`Skt)TJNO$8ji$ss`$+PLaV1vbxlf#H?*}~8nHC*Y z@5;!2UVC}h`+xO948Hk!@kWiOgO40Ihtc=d3jxtvZ?&u0s17}hZqeksw&$Kdy=M?^ zlJiIP{5!Exr)J?OSHx-ADIV zuf$82dW^Bc^-+gajlcA;wENx9YxQgCN{Ct>E2#Q6o|<-l0N+R24UGfT*#>O@0j2w+ zEL@+I?zuDuyDKP%mp(mh$}E;k_yu+r6sK^A1Cn^S%pVlM|-2==Lv zUMTM|Nc2nJ29Q1|Z!=_JR=U0jvSm0ULl# zz*b-funX9OJmN+JMMq}rqL0)i1CjyBfMh^2AQ_MhNCqSWk^#wpWI!??8ITM}1|$QL z0m*=5Kr$d1kPJu$BmQo@zCws4PO$HwHdC9B zu9y9zX5)4({sUyw^q*D#G+Z7ho0fi3&@T!4pMw5xs@}j`(2EJWzo0)N=(PmBKIy5k zH$Xq=aWruCgBn+Zj>NyF_kbQK?Duxtf5B~knA`r#*pJo9dX;pc-f`%&4y@P$jgJPA zG!8Z2se<2p`0dl|i&Oig!Ae12r=@R&El|_H(c}S5p3&sZ)O-y+1RdjAA2$ultG*3u zXfjwxYoT&U{o11_pvBg(Yij%rpBHp`|5R&NLwd(l*QW^jT%r6$g1$zpAMMh4Y`9BE zPZ0D(K|hnqU&E_{{jXHL5mm3n(#T7#r%@?QR!pt0Q57LiwbXJO1qymSL2oSREiu20 z)XEHD#g=M)(+Fei6@dDK_Xb)1ju)k9-hldqEX<{8Z~MwxnpfUPYr?u%c1DfziObz*1lf zupc-J{KtxZR1&D^%CFxWa2W)J-!BmMQ`J_fDm1kWz1{jR2l*id{lO{%m4N`D8c+kM z4b%ai1fBvK0F8krKy!e~Zwoj8x_8kTplh!lz;i%fpg%AW7!1($*9hQcU=;8wx@#y9 z4&ZvsG9Gvn!1bqP67UW%2bc$Z2&@LqY1bv?kiP;@38(^81*!wYSs+jss0RcA4FLsc z3bX)P1N7a(XMm0XeqDxj19}3zf#-n%KqxQ-coBFBcm)^@j6ob|i-qDJ2RMPZfC<24 zU@Gt)fM55qECAL3=e4-~k>3tH3_Jon3Ookj_i5PUz!N}yAQ+$v!>55}Kue$v&<WUfFP9BtXX;IA&uJ2ijtx_+JO!0Nw^B0=NdYOatBrJ^-SC z&wvZ*T?bm2#bQB$>29~k%5&KoQ6#!f5$QUO09{8^E*&hobVTFQF$!EdB6I1B1$~vE zuNCx-g1$}AzY+A^g1%4Cj|%#4f__HO{}A-+sd{5lwKg`+FX)8@y_lev6?D6x)2P-dNzd z@gBkFprHRM=;s9eTB@#)s>Q4n5cDE~UQ*C$cF_H+2zm`cr&&VxX(;H;1>GU&U7>pe zR%TP4CtV%q%2ep3G$#u3Tw zvq{(NU$P>ehc)|g(p7tt{H(~D$5eZh>ZEJ-5LP6X#sSK2@*?S)eH!%dH2bHdYxWFpo7aBiQYN9w6v71)a`#dYKIbUEs61Fy5NeN<;VWCg^~t*ZaSHv?T$mf19}|2|2)Zy& zHW$u8&HqaEp~a3~ehXoow-C-jEglkl$_e_zf?iF~X?3N=+(H=tEgB1UUa>k?v}h;T zX-?Af_7rqlx#;%6f-cM_Ey4vmRxd99NI{<}=)&>R;se3{v7j##^fiLMLD0Vvbm2H^ zAS@TMFm9mURVt zu%I^)^wxsjUeJYktYvS({(_(n6ZBUEJwnhY3c7H7wfs=9FBWv6Us`@4*tZM%Zb3gJ z=)VfOaJ;ma7Y2dT~J)j*C{pJl3kV;3M$as+C|Dcxxqa)k>I)TD>9o3!JnP z#%ineg3mXCept|jHntMl)!Hl7r?oIW#0Ywv zpnogqLVvYBBiR2*)!TRqy3j9e$_w`Df-a2nHjMqNzngI)!Pc^&9;vUcHwwz+e@$uv9+Bk*p~?UCP5d@DQ$&wM_Xb1 zhvZN74-w7P)ClKd~@vmlKy^3lwP?H@Xi{pvy zNKMYvWGv)Eu3vrQtatU04mtyhu9#3hkp1Wck-oW0rkQ#3 z$bEV;?i?lKq+CxCV$1dZO_O@F%ac{;=F=J3#OimeF zmKXqU+p?4~=QD}t)10p@3pJQ^@w+VxZ80c|>Cg3cl?Z;$avDTRW~!lB?5bm$^Qmge z{ZAQN*7_h?&1T9zm9b^5PZg8)sWWTMF(Q|l&-IEC1l&g*roWeTA8pIYto)TGRA9!r zSMO69TTYGu1Iu`W=h3o%BXG+N}o?|Psx3YSz|NZapBDUzRD;9 zdqxRnwwvr;wCTp1(04L6fsDMUI!)XtGsk8!+R_}SCgaV_v8Cxolkp~FOT)k&ckDvy z12f))m~%^2GOE~_QG#)HC8MgGNNAr?VlLY$HWO`TJ{HUzTbeF(rr9&sj*RWD{gLh~ zpC;jr$L9V%fk|TH#3DAc9jD@bBN^LWhri3g%)BvS%%|y7SM<53h`i-q6zSJ2V@scx zEL+Vs_{4^oIW~$j-4m_YfSlFo^;taxvr$E{>6_VNqqyvPa3+>!%Xt#x;+-5P4!OXEa&HJ4cyNP+TgEzBo zuGsX2xrqXG#a7isL203wIkvt|El4x+rgtS`Gr^KgkA_QEpW4%y&9URu!su&`aMF#! zgt58a12uDO>5^#@=9n>dv`hX7pT<6WLXI;-e-0Wu9b;V}FYgBRgrRh^=?lVWRDOwn5V$1!|OdUan zyg73}>}yaai-DDaF5!VCL(j~m^n7Z zTvTNkjfprk6=i0fWHao@vygl4pwU~YQyT~!)ao`FL ziphRsO$^Pny2<*~49m!j`pTYBf?4d^|Iso_I1~pz57^BV(H&wj*|Cr&QfHbybM2Vz zg+0Yw^rVSK#+HVT%Gf!qRw!3y;x(;UME!}`sW12Pj9sF`E z=>g>}$N2bPDA@kL(8z3VqnSCAv1P5ZC2v{dP3Fp&fxL1)HQ~KMXU44OYRUuAfggx zH0I3sBL0IIn^WUciu4&!(l?vR`XIz;D#9`d#+iZL3}%zWX2Q!*SMQiLHakUV<~4{O zn?iwVn{Lzhb3vMLY2;$T%&}3BiYrp{DKa+m^~wE2WP+*U?%~_-?vkq>X1tyuLKG8U z*CRI5Zivlv=ZI~lWs3)9+IhrjZr*N-PPxsJD~1gF(}{30Of)uBvrfC|vOv7$@@A55 zOP>WLeX|*?rsB;#7^fK+NTgY4|a1pCU@L z#^&l%B@LCP+cDksg6SA?3&{OE=9ZjWyCw}QEgfbK(#)}$^dL1eWoC{o?LlGgJ=0vP zI!(lrnFp7QEn5bPNTb=NUsr5>v!$syR*2bnvpaLFsrOy5)5NjecjIIMsSLOd-c(br zYJE-k%t$9h(G~MZ6NZ$QoNel^+2&q7NRPg9yy;xrlT_}>J7=8DHh0~vmBbmrq?_Fg zahbVK-D7hKgyr@_5ck-G&`hnG=7L^h$(hQQ)oigLG=;)LTxL6;+9@s*Z;BJanXo@O zWfa?kw3%e^{hx_BGxKz8n%LX}QB3nn)a@h7%(2}bt*I<#eI`yMxeviyBhD=ld#(j? z_lhYtw{Y*C$siAkP2Ws%n$p8zc4+)q$n9$dS463b-I=PJQ8Vj!GZj~6CdtgPxpkr) z`=$xkG=aF0l+G^kX4cJa*1)v5%z9p+@XR~}(~Zrkk($dQ-Pm$DCeu~#PLg8o@y7Wx z;rdOzF=)EpHGM#4yGC#)jGq@2cdI$}-49)JM8%jrqd-j1*{;}rbqmrgv6=K{jf=P1 zZoHXbH{IjFX@bDS5EOC8B)S=65~*>DJ0{i5`b>-HGGT1#9;+tpTGNGP!ga5mNYc(( zCOCzr+hsh)bW?KQXwuVtDlujb(3u*hnKZ>r!MMd@ciT6^F8$W4(+q*g7_!WOr9QHj z$GxM4kolQMWDtkzW>P_gvA6AvHNkvR5$h6PoXZL}fvuuodt0@6q+?6Zk8Dd)-WEOC@k~w|2DB z`$NcgCqC0FkN2k&*Zo)ki0QY*hNjRs;lMb-Sh;PSz(sD70m*=5AkQ)2%yTWuTMg=K zP;;CH)g!Bs3>e9PVq|5qu6ts@eox-_=j^<{?54|YRC|o7$0&mHT6+xT&48Qfia`yE zHmDw1jky_c8Wf&lP(5~o>M^Psr$H4d2GwI&HF>TID^`g=laKh zwHxmmi$NVEtC0*C$bi$px{RpGsP-sEG)C58dIp@PkMQ0C%xmqrx7JH<$$(@)GI0M4 zIPbrROqF0%JxZpcd2pPJ;>{>V@>+Y0;!W0*H3sB(%NlQaEtgT_K*?*wWm9|X*;I}! zCU+Qc8dR-fP(5~o>d9;E!B1Go&BP4YDK^g>4luW09^{S8-ZmQc*vy%|al1;hyEH=; zr=hjwd}T^@SCK=Y1+moh&wr`+jFpNv1q5blY@Gz z94tF87wyc;jmyEd8O57X^(Z;WRc;h*6mPlFHd*KYE(3C0o4fCg>L0}*8tewuW7O^7 zEdQQ^d|+nCNN^fbi*c10)gHy5CK*+a-JtduHSZYI9K)({8dj66NHQQ9kPJu$Bm;Su z0jEJtGpZiDLG6*%WQ_r5*0SAmF6EwcWG#a|YuRKj$v~DEaAql&%w!Y;vVXG1wB#)h z@Fs6+Wvvr)Ggp=$Oyp+JnXEfI+m;t!0L@N*GT9}Dy4ek?P0o7;5uNkZICH*=JXwR} zEl+l@M3%vL8ocEq3OF5J*<+{&Id3}w4 zpY-JA>~?BgPXDG(UMA24Z8Q3|gYyn;R_>6Nmy*mpWjgZ`(XuTMJ_82)0GS-~5B@MQ zTMLXDQ;OLdF5{65JU|RM4T@DUs2-!Lk&mQ|V%psGI1LKVsCo=)4l}AfM%7~!Z?YcA zfMh^2AQ_MhNCqSWl7Z}Jz<^t>*&lQ+muRWa7{@}$h0G%|hyy#h9GI-$Gz=&PMPfIo z9;5C7ISp!$QPmjL9>t&r8Py(xnqycsM)B6ypcWa`9)p^br>e2%sn#&V?w=BEN*?1b zFEz(*U}KyH)@4LhMzzPNdW_(V>M)``dGWH5^Jc&oBNX(J5nHqol^9h=UL0@+apyFs z9>t(~>;~0iR5eb6DpCxp$FORQYLMNq7UijmoCdWfuhpX%#9N-ICJ&Nj=I`I!&zN!E zPv(2bYg9e=5K`7$4Y(Gez>NNmUDn9B_gv0<&yuAaN|th&HTS zlUEn;8eh(w;?1pG#ce;wb`4m&@!0d)GZTZ_xd>d~*-qsQz)UH>dUuZBI6Ino;NfJMojSx)*hqIa|U$}V@6$| z8nlq)v%3|{ zNhKO^kZhxR4A}Y_PzO~}+n{<%8&r?CLG>6_O+KS4GO8ZCK^5h>g`h#a$!cIQ-d1W3Er)NbM;fxmfHP~^OqoMsIyi*Xs%9wm$M-D@_Z z>apKzU|IAx{k)UKcI9+7XHHij%a;sD1|$P+3^?8P&AO|YHLyGqm(!qj$a=Cyv^{It z@@6g*KD2fk#I#~iJ$8fYk=1040cX~-nKoBmYmaG(&SGG)f3ilL|h~*)vPTefpVo-ZOirIq#GA9LR3MkaD1v z*tUpx$pkTF5V3If{#&cRkDi{S&r!$a2gb$Vo*J@8p!}>z@E2w za2nJc#h`kOs>ZC3q>O5Rmg`ZnoYRyUod!i^R6PbY$FSe0$ZNbA)jvknBm2iFre!^n z0m*=5Ae$MmXLEV7ILSaRGho0i*IaI44pd(r{|2Bw%FPeCkaNsIdj2S01E;$y;v6)ldD$A7&NCqSWk^#wpWI!??8ITM}1|$QL0m*=5Kr$d1 zkPJu$Bm|42gZgZz z&m-GQd_W6yAJn--jC&YaVbeD&ncVXz?uL8Zw`bnpooe@WntOWYOU}BdQFR(sPu7_* zDCahV>dB^R+>bFOy>heTU{0@GX-mt1TW8pnw8`o2d8TVsjY>Lc?tNK19iRI(xlere zTi*Xj{&eTibd8xLagflyXaw{x@Zgkb? z-k*vqMNqQX5B%8{o^j#X7Cqy-_vc$e2&Pl-My%-qmI37?1J0Z*T$U{vFcAZJVd~4` zDJ}h8a6gHr?d&WsJ4#82aks_7mtK#F5m)REsl5b0J{@X0HzV7jWmL<*uC%{Ua@X5Tpm$wK~fRx)pIoGv5zhLKUxIeK`0QHa%TR zl{3kMfnz z>wz7b&v3}D%zJ)+ZGQx0H{xI0r@Fc`?>TYW{z%9kS~~6@F8-DIE~yF|{F}WD*%NR8 zRBn5K@^=6zpATRM-UQwN{BXPR2JkoV4?qt~P!7YrNcJ4_@cUOqxn|6R;CEC-xd`k7 zlw1N6Lt=J_0|)S6}dh`=vac_U3UZ*vHTrKU?kg{S3785jLmHJ$JclyRwt>uR*8%2rEsA-4O8F^``f?D@@4Ivd z^IiU`Ru-jEzYIpc=gG$Ho^ACqsjr6Uc3r|oF&t*TF_1B}0UB3@0E%HK^P0LG97Lm2gh#ab&2|o%A}ZH7W0q}8)8_7eqYuA=mt=~>oL5-y#0Ej?*7dCnTMIz zxjI@J#SoTGS$bcNVqU-YW?pCZFt4N`$k$lQM=^{}Cm+SI7yu8;b_2h{&jX;o3}>Ft z1OgvxHmaMC9asG7_!*;@tNBq~W0^vV1t4*Z&4KSb4>9j)4G_MqZ^cqK~WGkZK&w#z4N48};jT zqJB^2`)Pe(5HJt;4!FU5S64-v7h}D~^5aQ;PD&59>0C*3RepfxlL7#pUu*#UeP4r| z&b&Irs)%gBC7pW9_URitYH26z!+d7@DD5aR0Cifum!lq3I-{_8^G7B zU~oR5888<(%nCLrqn5>-kQn25PRubcfO!)>zNKQ}5avx-z6ZduHTwtVz3c<#y%opA z*3X#tA`bvXP+WZ77lm@1Ko{n{{smw#^L`)4&HGcC_owH9KbZF?HL>RG&AhkRAZs(P zO^cb=R;&dU)dH%iW%2b9{buU@ZkWH84uzXvPWurL5_8jWTJ8&?B{ z0;^O%-j+|)Hf}4yyqAKLC791<-{7%(cA;^KvOhz=d{!Ac#%ZrN?=Y5;-uW%~ak5ym zX3f~7Nt4*IW5*aW@j87!LtlU91m*yU`LoTyUf=|PVn_k{K$h*`n?^HKG@D%$PK<9X0 zU>Xp^tbdPY)_+d`jhOZ3ZkEq_ljUo$hvjRymE{X6&hkC+0n1nCWtQ*pnk--K$5_4^ zE1AatI*zD}cY)=s(8?#6XP3%A0|3`cU4{W~0}Fulz-|D?SeKj3^Vt%>V?Z zC!k|~;p1W@E2tC&FdmejS;42v0XTl1KBf9#-eC;qxD_*)*V#nob<`8F zo<~p~bkUQI8}ZI8_)Fa^%;s5yHQsiM7193kVI-1HQri#$O*6M|7K>IEA94fW5Ue@T zt12BeeITSm(?cPNF4_hGt++;)7mO*IJ_Pb9O&x&qKfOBCJbRp<&p+ZaIi9}At@OxtUK?oX!< zU8mE6uG5sS>%_CJI|ZGFscwH0I&nlBO#ynnZ$l@JXp01hJK81y#1Ut+P4^TL4kxueO z`4ja#uw!#n!bfp{mKX|$Epn>vqn8akHpj#Gs11na&eqDEuje68_*TXT`H8*@G~Y#T zzE$8?0%#2=9Ja_9-N!A4N043?z_jJ^U3I(fK8!C%0DK+-#J0uW?h6m*sEUtLq+wGy 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 library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +menacing: S 0 / A 0.Glk library error: window_move_cursor: invalid id. +0/37/73/415Glk library error: window_move_cursor: invalid id. +You slice the heart out of the dead animal. It is cold now, just like any ordinary sort of meat. + +She goes awkwardly over to the corpse and goes to one knee beside it. "Thank you," she whispers -- to it, not to you. Then she leans down and-- what, exactly? You can't see. Maybe she kisses it. Maybe she licks its blood. Maybe neither. + +When she's done she struggles back to her feet and looks at you defiantly. + +Of course you could ask what she was doing, but who is to say that she would answer? + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +menacing: S 1 / A 0.Glk library error: window_move_cursor: invalid id. +1/41/74/415Glk library error: window_move_cursor: invalid id. +"What was that?" you ask. "What did you do to the hart?" + +"It died for my sake; I repaid a little of the debt." Her lips look dark, almost black. + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +menacing: S 2 / A 0.Glk library error: window_move_cursor: invalid id. +0/42/75/415Glk library error: window_move_cursor: invalid id. +You wait for Snow White to become tired of glaring at you and after a few moments she obliges, turning toward a scurrying sound in the underbrush with a hungry glint in her eye. + +Seizing the opportunity, you kneel before the heartless hart and ask, "Hello?" + +Several things happen at once. Firstly, Snow White whirls toward you, her face livid. "YOU CAN'T --" + +But before she can finish her sentence, in point of fact as she's starting it, the once-dark forest flashes with frantic, ice-blue energy, the air fills with a steady, ethereal hum, and you see the pallid princess lifted before you, suspended in the thick, vibrating air, her rage caught in her throat. + +The immediate impulse is to taunt your suddenly riposte-incapable companion, but petty vengeance quickly dissolves in the face of a final sudden development. + +Namely, the hart -- which now stands proudly upright, its eyes and empty chest cavity glowing an incongruous silver. + +It has what can only be described as a wry expression on its face. "I suppose I should begin by thanking you." + +You can ask why he thanks you, say that he's welcome, or ask what his name is. + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +menacing: S 2 / A 0.Glk library error: window_move_cursor: invalid id. +3/18/31/415Glk library error: window_move_cursor: invalid id. +You've hunted and bested many harts through the years, but this is the first to comment on the exchange afterward. Awestruck, you manage to stammer "Th-thanking me?" + +The decomposing hart corpse glances into the canyon that used to power its circulatory system. "You've been through a lot. Please forgive my sarcasm." + +The woods are eerily silent. + +The decomposing hart corpse peers at you sardonically. "Before we go any further, is there anything else you'd like to carve out of what's left of my body?" + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +menacing: S 2 / A 0.Glk library error: window_move_cursor: invalid id. +0/3/32/415Glk library error: window_move_cursor: invalid id. +"No," you reply sheepishly. + +"Very well," says the hart corpse, "then let us get down to business." + +No one speaks, though only the two of you experience any pause. + +"I will tell you exactly what just happened, and indeed provide enough information to turn the tables on your know-it-all prisoner over there, if you agree to my terms." + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +menacing: S 2 / A 0.Glk library error: window_move_cursor: invalid id. +0/17/28/415Glk library error: window_move_cursor: invalid id. +No time passes at all. + +As though to add to the disturbing qualities of the moment, the hart gives you something that might be intended as a reassuring smile. + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +menacing: S 2 / A 0.Glk library error: window_move_cursor: invalid id. +0/17/28/415Glk library error: window_move_cursor: invalid id. +You try smiling back, but it doesn't feel at all sincere. + +The hart corpse paws the ground innocently. "It's very simple, really. I want my heart back." + +It's hard to imagine how that would be possible. + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +menacing: S 2 / A 0.Glk library error: window_move_cursor: invalid id. +1/17/28/415Glk library error: window_move_cursor: invalid id. +For what you realize is, incredibly, the first time, you feel disgusted. "Back... in there?" you ask, gesturing at the decomposing hart corpse's glowing rib cage. + +The hart corpse rears upward, clattering back to the ground with enough force to jar a few loose gobbets from its body cavity. "Don't be grotesque. I mean that I want it back in a more cosmic sense." + +Which raises the obvious question of what he means by "cosmic". + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +menacing: S 2 / A 0.Glk library error: window_move_cursor: invalid id. +1/1/28/415Glk library error: window_move_cursor: invalid id. +"What exactly do you mean, 'in a more cosmic sense?'" You can't believe you're negotiating with a decomposing hart corpse. + +The hart blinks, heedless of the fact that silver light continues to escape from its torn left eyelid. "Unfortunately, I can't answer that question without revealing too much of my hand, such as it is. I am proposing you a pact. Do you say yes or do you say no?" + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +menacing: S 2 / A 0.Glk library error: window_move_cursor: invalid id. +0/2/29/415Glk library error: window_move_cursor: invalid id. +You figure there's no harm in collecting pacts. "I accept," you intone solemnly. + +The decomposing hart corpse clatters excitedly, and its silver glow momentarily surges while the urgent blue prison surrounding Snow White flickers and dulls. "Excellent. It is done. I believe you are in possession of a small wooden box?" + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +menacing: S 2 / A 0.Glk library error: window_move_cursor: invalid id. +0/2/29/415Glk library error: window_move_cursor: invalid id. +"Yes, I have such a box," you admit. + +"Very well," says the undead hart, "Then you must burn the box with my heart inside, and scatter the ashes round this spot." + +The light from your lantern casts an unusually steady glow over the scene. "Only that way can I be made whole - and set free," he tells you, "So, will you do that for me?" + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +menacing: S 2 / A 0.Glk library error: window_move_cursor: invalid id. +0/2/28/415Glk library error: window_move_cursor: invalid id. +"Very well, if that is what you wish," you agree. + +"Good," the hart replies, "And in return, I will aid you against your prisoner. But do not delay, the deed must be done 'ere the night is o'er." + +The wind has dropped completely. "I should have introduced myself. The name's Happy Blue, professional juggler and itinerant dwarf-about-town," declares the hart corpse proudly, crooking a fractured forelimb and dipping its matted shoulder in salute. + +You could ask where its name came from or ask whether he was a servant of Snow White. + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +menacing: S 2 / A 0.Glk library error: window_move_cursor: invalid id. +2/23/28/415Glk library error: window_move_cursor: invalid id. +"Where is the King?" You lean towards him eagerly. "He vanished, but where did he go? Did the Queen kill him?" + +His laughter is sharp. "You are the King." + +You could always request that he repeat himself. + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +menacing: S 2 / A 0.Glk library error: window_move_cursor: invalid id. +1/1/28/415Glk library error: window_move_cursor: invalid id. +"I'm sorry -- what did you just say?" + +"This is fun," he says. "I could do this all day. I said that you are the King. Not that you'll find it easy to retain that information. Try to hold onto it, or it will slip out of your head again." + +You could always ask what happened to you. + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +menacing: S 2 / A 0.Glk library error: window_move_cursor: invalid id. +1/23/28/415Glk library error: window_move_cursor: invalid id. +"That's impossible -- I don't remember being King. I grew up nearby... I have cousins in the village. The King on the other hand--" + +"Probably has cousins in the village as well, considering the way his father and grandfather behaved while they were alive," says Happy dryly. "But you wouldn't remember." + +No one speaks, though only the two of you experience any pause. "You've been blood-sundered. It is a magic that unmakes families, destroys the connections between people, and in so doing yields great power that can be used for other purposes." + +You could ask who performed the magic. + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +menacing: S 2 / A 0.Glk library error: window_move_cursor: invalid id. +1/24/29/415Glk library error: window_move_cursor: invalid id. +"But -- who would have done such a thing to me? + +"As King, you were not kind to the dwarrows," he says, his voice harder than you have heard ever before. "You provoked us. You gave plain preference to your own kind, allowing them to mistreat us, upsetting the balance that your father had -- with great difficulty -- established. There was suffering and war." + +You could ask how the current peace came about. + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +menacing: S 2 / A 0.Glk library error: window_move_cursor: invalid id. +1/1/29/415Glk library error: window_move_cursor: invalid id. +"I don't understand." This makes less and less sense as you go. "If I provoked the dwarrows -- if I was such a bad King --" (and how could you have been the King at all?) "-- then how is it that there is peace now?" + +"When you saw what you had done, you felt-- you regretted it." He tilts his head at you. "You decided to create a peace. But that is very difficult work, and it is not the usual use of magic." He smirks, if an animal's face can be said to hold such an expression. "Demons arrange magic, and as a rule they prefer to do more harm than good. So you were forced to sacrifice yourself, your family, and lose your throne, and dwindle into no one. In exchange for this, we have had this-- ragged sort of calm. + +Even the clouds seem to have stopped. + +"Don't mistake me," he adds. "A poor peace is better than none. I appreciate the gift -- though I doubt that anyone else does. It cannot be known what you did, you see. So the dwarrows still hate your name." + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +menacing: S 2 / A 0.Glk library error: window_move_cursor: invalid id. +0/23/28/415Glk library error: window_move_cursor: invalid id. +No time passes at all. + +The silver glow surrounding the hart begins to fade. "Alas, I can stay no longer," he tells you, "Farewell - and beware!" + +He sinks to the ground, a final sigh escaping his decaying throat, "Do not delay - box - heart - burn." + +Then the glow is gone, and the hart is still once more, with nothing to show he ever moved.. + +Snow White returns to earth. She looks around her, blinking: she seems a little confused. Perhaps she does not remember you speaking to the hart. + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +menacing: S 2 / A 0.Glk library error: window_move_cursor: invalid id. +0/45/77/415Glk library error: window_move_cursor: invalid id. +"I meant to mention earlier," you say, "you're going to have to start doing your walking on your own, your royal highness, and start watching where you're going. You may be willing to risk your own neck with this deliberate clumsiness, but I assure you, I'm not risking mine." + +Snow White gazes at you coldly. "I see. You think I'm being difficult on purpose. + +"It didn't occur to you that the Queen might have wounded me, or wearied me with her spells. Nor have you considered that a palace girl with her hands bound might have difficulty making her way through the forest at night. No; it's quite clear that I'm intentionally delaying, risking my only chance to escape, isn't it now. + +"Be honest now, woodsman: which of these sounds most likely to you?" + +It seems unlikely that the Queen hurt her or that a creature like her is having real trouble (though you could ask). But you still have the feeling that she is delaying on purpose. + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +menacing: S 2 / A 1.Glk library error: window_move_cursor: invalid id. +0/4/80/415Glk library error: window_move_cursor: invalid id. +"The last one," you say darkly. "I'll be damned if I know why, but you're deliberately slowing us down every step of the way." + +For the first time, Snow White smiles. The expression is not reassuring; in fact, the temperature seems to dive and your lantern nearly extinguishes itself. "Correct," she says. "You are learning, huntsman. I do nothing that is not deliberate, mark my words." + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +aggressive: S 3 / A 2.Glk library error: window_move_cursor: invalid id. +0/45/76/415Glk library error: window_move_cursor: invalid id. +"Listen, princess, if you expect me to help you, you'd best explain why it is you're so carefully tripping over roots instead of fleeing for your life." + +She considers before speaking. Then, "I am searching for something," she says, "which is as necessary to my safety as reaching my haven. I'd hoped, though, to make my find far earlier, before you noticed." + +She muses for a moment. "I should not tell you. But you would hardly let me stay silent, would you?" + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +aggressive: S 2 / A 2.Glk library error: window_move_cursor: invalid id. +0/2/77/415Glk library error: window_move_cursor: invalid id. +"No, I wouldn't. I'd be a fool to, and well you know it." + +"Fair enough. Since we have no bond, though, I cannot tell you directly. A riddle, then: + +"Red and sweet - the perfect meal; +Sustenance with such appeal +With a bite release its charm +Thus shall ye be safe from harm +Lilith had none, yet her man +Could not share his - no one can." + +Tempting to refuse to guess. + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +aggressive: S 2 / A 2.Glk library error: window_move_cursor: invalid id. +1/53/82/415Glk library error: window_move_cursor: invalid id. +"Who was Lilith?" + +"You don't care to guess the answer to my riddle, then?" + +"Not now," you reply. + +"Lilith," she repeats, sing-song. "The first wife of Adam, before the milkmaid Eve came to the garden. She was formed from fire as Adam was formed from earth: she was his equal, and said so, and so he cast her out." + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +aggressive: S 2 / A 2.Glk library error: window_move_cursor: invalid id. +0/55/80/415Glk library error: window_move_cursor: invalid id. +"Why did you mention Adam?" + +"All men are like Adam." She looks you over, then adds, "...though some less than others." + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +aggressive: S 2 / A 2.Glk library error: window_move_cursor: invalid id. +0/54/79/415Glk library error: window_move_cursor: invalid id. +"Is the answer to your riddle an apple? If so, you have the wrong sort of woods -- the trees here are pine and aspen." + +"You answer right, and yet you don't understand." Her expression, dimly seen in the lantern light, is almost frustrated, as though there is something she wishes to tell you, but cannot. + +But it's not clear how an apple would help her. + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +aggressive: S 1 / A 2.Glk library error: window_move_cursor: invalid id. +1/48/72/415Glk library error: window_move_cursor: invalid id. +"What good would an apple do you?" It seems more and more that you are humoring the mad. + +"It is the food of mortals," she says. (Wistfully, you might think.) "Those who eat, die; those who die, live beforehand." + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +aggressive: S 0 / A 2.Glk library error: window_move_cursor: invalid id. +0/48/72/415Glk library error: window_move_cursor: invalid id. +"And you are immortal?" + +"Partly." She walks away from you, around a tree, out of sight, and then circles back into view. "It grows tiring. Under the proper conditions, I would change my situation." + +She shifts her weight, breaking a twig. "Perhaps we should begin with the Queen. Her magic is to blame for all our situations." + +You could now ask whether the Queen herself made the magic mirror or ask if the Queen is a witch. + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +furious: S 0 / A 2.Glk library error: window_move_cursor: invalid id. +2/47/71/415Glk library error: window_move_cursor: invalid id. +"Is the Queen a witch?" you ask. + +"She may fancy herself as one," Snow White sneers. "In truth she dabbles with powers she does not comprehend." + +You might ask what powers the Queen dabbles with. + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +furious: S 0 / A 2.Glk library error: window_move_cursor: invalid id. +1/47/71/415Glk library error: window_move_cursor: invalid id. +"What are these powers the Queen dabbles with?" you want to know. + +She kicks with irritable energy at the base of the nearest aspen. "Even for a huntsman your ignorance is remarkable. All sorcery involves the manipulation of demons. I thought everyone knew that." + +You consider whether to ask if the Queen is possessed or ask what demons the Queen invoked. + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +furious: S 1 / A 3.Glk library error: window_move_cursor: invalid id. +2/50/74/415Glk library error: window_move_cursor: invalid id. +"So, what demons did the Queen try to invoke for her witchcraft?" you ask. + +"Lilith, for one," she tells you, "She wanted great beauty, and foolishly thought Lilith could endow it." + +You might ask if the Queen is possessed or ask whether Lilith made the Queen beautiful. + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +aggressive: S 1 / A 3.Glk library error: window_move_cursor: invalid id. +2/49/72/415Glk library error: window_move_cursor: invalid id. +"Is the Queen demon-possessed?" you ask. + +You brace as Snow White inflicts another smile upon you. "No, she managed to avoid that." + +You could now ask how the Queen avoided possession or ask whether Lilith made the Queen beautiful. + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +aggressive: S 1 / A 3.Glk library error: window_move_cursor: invalid id. +2/49/72/415Glk library error: window_move_cursor: invalid id. +"How did the Queen avoid possession?" you inquire. + +"By making a bargain with the demon that wishes to possess her, of course," she replies. + +You can ask what bargain the Queen made. + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +aggressive: S 1 / A 3.Glk library error: window_move_cursor: invalid id. +1/49/72/415Glk library error: window_move_cursor: invalid id. +"What manner of bargain did the Queen make to avoid possession?" you ask. + +"She provided another victim," she shrugs. + +You could discuss the Queen, witchcraft, the souls, or the demons. + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +aggressive: S 1 / A 3.Glk library error: window_move_cursor: invalid id. +0/49/71/415Glk library error: window_move_cursor: invalid id. +"Is that it?" you ask, with a flash of terrifying insight. "Are you possessed? Is that why you have developed this taste for blood, and why..." + +Snow White's glance suffices to silence your babbling, but the look she gives you convinces you that you have hit upon the truth of the matter. + +You could ask whether the Queen herself made the magic mirror, ask whether Lilith likes drinking blood, or ask what the apple would do. + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +aggressive: S 12 / A 4.Glk library error: window_move_cursor: invalid id. +3/47/77/415Glk library error: window_move_cursor: invalid id. +"What do you-- Lilith-- want?" + +"I kill boy-children: did you know? I suck out their lives and leave them to die. It is punishment for all the children of my own that Adam stole from me, when he cast me out of Eden, when he rejected me and sent me away." + +But it does not seem to you that you have heard what she wants. + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +aggressive: S 13 / A 4.Glk library error: window_move_cursor: invalid id. +1/46/76/415Glk library error: window_move_cursor: invalid id. +"But is that what you want?" + +She looks up at you and her eyes are filled with grief beyond tears. "I want Adam," she says. "And he wanted me. When he had Eve, that docile witless blonde, he saw the bargain he had made and he wanted to take it back, and at night it was my body he dreamed and my name he called. But it was too late. And I was cast out into the storm and the desert and I had no equal on earth." + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +aggressive: S 13 / A 4.Glk library error: window_move_cursor: invalid id. +0/47/77/415Glk library error: window_move_cursor: invalid id. +You edge a little further away from her. + +"You ask what I want," she says slowly. "I want what Adam should have been, if he had chosen differently. I want a man who is my match, who is clever and private and wise; one who likes the wasteland and the night-time and the open sea rather than the daylight crowd of Eve's feckless brood. With such a man, I would be mortal, live my days, and die, not cursed but reconciled." + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +aggressive: S 13 / A 4.Glk library error: window_move_cursor: invalid id. +0/48/78/415Glk library error: window_move_cursor: invalid id. +"I prefer the wasteland and the night-time." + +Speaking this is like the moment a bit of metal, coming too close to a lodestone, snaps to its side. + +She is no less terrifying, and yet you know her as clearly as you have ever known anyone. You also know yourself. You have no desires that you would need to hide from her; no secrets that she could not know; there is nothing in the beauty of the forest or in the joy of the bloody hunt that would shame you in her eyes. All the restlessness of your life, your failure to take a wife, your discomfort in company, your awkward otherness -- all that is translated from disorder into function, as she sees it. + +She frowns, and her eyes search yours. "You are no one. An ordinary man." + +But only ordinary men now populate the earth. + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +aggressive: S 13 / A 4.Glk library error: window_move_cursor: invalid id. +1/3/81/415Glk library error: window_move_cursor: invalid id. +"I was once the King," you tell her. "I performed a blood-sundering in order to reconcile my kingdom with the dwarfs. The Queen's magic is nothing to that which I performed, but mine was an act of expiation." + +Her mouth opens. You have surprised Lilith. + +"I didn't see that," she says. "You didn't know until--" She frowns, and looks at Happy. "Yes, I see. And now instead of reversing the sundering, you are willing to come away with me? Snow White is your daughter after all, then -- you are willing to leave her to her fate, and the Queen that was your wife, and your kingdom, being destroyed by the Queen's malicious magics, and simply go?" + +>Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +aggressive: S 13 / A 4.Glk library error: window_move_cursor: invalid id. +0/0/77/415Glk library error: window_move_cursor: invalid id. +"Yes. There is nothing more I can do for the kingdom; I have offered it all I have. As bad as it is now, I think it would get worse if I were to revoke the sundering -- if I could even find a way to do it." + +She takes up the rest of the explanation. "And besides this, though you still sometimes desire the Queen, you do not feel as a husband feels towards her; and though you protect Snow White, you do not feel that you are her father; and you do not want to feel those things." + +You do not meet her glance, but you and she both know that she can see into your mind at times. + +"Your weakness before was that you were too gentle to your own people, and did not punish them sufficiently when they showed cruelty to the dwarrows, and the injustice led to war, and war to death -- but a war that you were winning, nonetheless. You did not act to save your own; you acted to save the dwarrows when you saw what you had done to them." She has crept closer to you as she spoke, her gentle voice laying open old wounds, and now she tucks her hand under your elbow and stands beside you in what is almost an embrace. "I too was cut away from what was mine. I know." + + +Please press SPACE to continue. + + + + + + + + + + + + + + + + + + + + + + + + +As you look, Snow White becomes two women: one the princess, your daughter-that-was, who does not recognize you. The pink returns to her cheeks and she looks, again, like an ordinary girl. + +The other is stranger, older, an archaic face, framed in a tangle of nut-brown hair, and as Snow White was ice, this woman is a creation of fire. She reaches out to you and takes your hand, and your fingers are shocked by the warmth. + +"Go," says Lilith to Snow White. "Find your place among the dwarrow. In time -- if you can remember -- tell them what has happened. Fight the Queen together, and reclaim your kingdom." + +Snow White looks dazed -- just a little girl now. "I can't," she says, in her smallest voice. + +Lilith reaches out and presses her finger to the girl's forehead, and when she takes it away there is a fiery brand. "You will," Lilith says. "For the sake of this man, who was your father, and now can do nothing more for his kingdom. You will do the rest, so that his sacrifice will not have been in vain." + +Then Snow White straightens her back and takes the lantern -- a fair bargain, you suppose, since you have Lilith instead -- and she walks away into the forest to the north, never turning back her head. You feel the ember of something that might have been pride. But she is cut off from you and will never again be your own daughter. + + +Please press SPACE to continue. + + + + + + + + + + + + + + + + + + + + + + + + +"The Queen was not a bad woman, before," you say, remembering. + +Lilith's mouth quirks. "But she is unquestionably of the stock of Eve." She looks at the tip of her finger, which appears a little numb. "I will be your equal, if you will be mine." + + + + *** You and Lilith are free *** + + + +Would you like to RESTART, RESTORE a saved game, or QUIT? +> Glk library error: window_move_cursor: invalid id. + Glk library error: window_move_cursor: invalid id. +aggressive: S 13 / A 4.Glk library error: window_move_cursor: invalid id. +0/0/77/415Glk library error: window_move_cursor: invalid id. diff --git a/interpreters/git/test/Alabaster.walk b/interpreters/git/test/Alabaster.walk new file mode 100644 index 0000000..e81aa2f --- /dev/null +++ b/interpreters/git/test/Alabaster.walk @@ -0,0 +1,44 @@ + +cut hart +ask Snow White about what she was doing +wake hart +ask why +no +z +smile +a how +a cosmic +yes +yes +yes +a king +a repeat +ask what happened +a who performed +a current peace +z +t roots +say she is delaying +ask her about delay +no +a lilith +a adam +t apple +a apple +a mortals +ask if the queen is a witch +ask what powers +ask what demons +a queen is possessed +a how +a bargain +a victim +ask what lilith wants +g +z +t me +t king +yes + + +quit diff --git a/interpreters/git/test/test.sh b/interpreters/git/test/test.sh new file mode 100644 index 0000000..e33dbf7 --- /dev/null +++ b/interpreters/git/test/test.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +TEST_DIR=`dirname $0` + +echo "Running Alabaster.glorb..." +${TEST_DIR}/../git ${TEST_DIR}/Alabaster.gblorb \ + < ${TEST_DIR}/Alabaster.walk > ${TEST_DIR}/Alabaster.tmp + +echo "Comparing output against Alabaster.golden..." +if diff -q ${TEST_DIR}/Alabaster.tmp ${TEST_DIR}/Alabaster.golden; then + echo "TEST PASSED" +else + echo + echo "*** TEST FAILED ***" + echo + echo "The Alabaster walkthrough is not producing the same output as before." + echo "Please check Alabaster.tmp manually." +fi diff --git a/interpreters/git/version.h b/interpreters/git/version.h new file mode 100644 index 0000000..8e542f8 --- /dev/null +++ b/interpreters/git/version.h @@ -0,0 +1,4 @@ +// Automatically generated file -- do not edit! +#define GIT_MAJOR 1 +#define GIT_MINOR 2 +#define GIT_PATCH 4 diff --git a/interpreters/glulxe/Makefile.am b/interpreters/glulxe/Makefile.am new file mode 100644 index 0000000..eb2b661 --- /dev/null +++ b/interpreters/glulxe/Makefile.am @@ -0,0 +1,13 @@ +PLUGIN_LIBTOOL_FLAGS=-module -avoid-version -export-symbols-regex "^glk" + +pkglib_LTLIBRARIES = glulxe.la +glulxe_la_SOURCES = accel.c exec.c files.c funcs.c gestalt.c gestalt.h glkop.c \ + glulxe.h heap.c main.c opcodes.h operand.c osdepend.c profile.c search.c \ + serial.c string.c unixstrt.c vm.c +glulxe_la_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/libchimara +glulxe_la_CFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -Wno-unused \ + -DOS_UNIX $(AM_CFLAGS) +glulxe_la_LDFLAGS = $(PLUGIN_LIBTOOL_FLAGS) + +glulxedocdir = $(datadir)/doc/$(PACKAGE)/glulxe +dist_glulxedoc_DATA = README diff --git a/interpreters/glulxe/README b/interpreters/glulxe/README new file mode 100644 index 0000000..2ba34f4 --- /dev/null +++ b/interpreters/glulxe/README @@ -0,0 +1,96 @@ +Glulxe: the Glulx VM interpreter +Version 0.4.4 + + Designed by Andrew Plotkin + http://eblong.com/zarf/glulx/index.html + +* Compiling + +Since this is a Glk program, it must be built with a Glk library. See +the Glk home page at + +http://eblong.com/zarf/glk/index.html + +The Unix Makefile that comes with this package is designed to link any +of the Unix libraries (XGlk, GlkTerm, and CheapGlk.) You'll have to +go into the Makefile and set three variables to find the library. There +are instructions at the top of the Makefile. Then just type + + make glulxe + +That should suffice. When the program is built, type + + ./glulxe filename.ulx + +where "filename.ulx" is a Glulx game file to execute. + +To build this program on a Macintosh, you'll need the MacGlk library. +See the instructions that come with that. It's fairly straightforward; +compile the library, the source code, and the "macstart.c" file. + +Ditto for Windows, using "winstart.c". + +* Version + +0.4.4: + Added profiling code, which is turned off by default. To compile it + in, define VM_PROFILING in Makefile or in glulxe.h. + Added function-accleration feature. + Fixed bug where @random 0 was returning only positive numbers. + +0.4.3: + Verify the presence of Unicode calls in the Glk library at runtime. + (Thanks Simon Baldwin.) + Added a compile-time option to check for invalid memory accesses. + (This is slower, but safer. Define VERIFY_MEMORY_ACCESS in Makefile + or in glulxe.h. Thanks Evin Robertson.) + Fixed a memory leak of undo states. (Thanks Matthew Wightman.) + Fixed a linked-list handling error for Glk unicode arrays. (Thanks + David Kinder.) + +0.4.2: + Fixed a bug that preventing compiling with old (pre-Unicode) Glk + libraries. + +0.4.1: + Added array copy and heap allocation functionality. (Glulx spec + 3.1.0.) + +0.4.0: + Added Unicode functionality. (Glulx spec 3.0.0.) + +0.3.5: + Fixed El-Stupido bug in the modulo opcode. + +0.3.4: + Finally supports string arguments to Glk calls. + +0.3.3: + Added setiosys, getiosys opcodes. + Fixed bug in binarysearch. + +0.3.2: + Added search, jumpabs, callf, and gestalt opcodes. + +0.3.1: + Startup code now handles Blorb files correctly. + +0.3.0: + Added support for compressed strings. + +0.2.2: + Another pre-release version. + +0.2.0: + A pre-release version. + +* Permissions + +The source code in this package is copyright 1999 by Andrew Plotkin. You +may copy and distribute it freely, by any means and under any conditions, +as long as the code and documentation is not changed. You may also +incorporate this code into your own program and distribute that, or modify +this code and use and distribute the modified version, as long as you retain +a notice in your program or documentation which mentions my name and the +URL shown above. + diff --git a/interpreters/glulxe/accel.c b/interpreters/glulxe/accel.c new file mode 100644 index 0000000..3309173 --- /dev/null +++ b/interpreters/glulxe/accel.c @@ -0,0 +1,401 @@ +/* accel.c: Glulxe code for accelerated functions + Designed by Andrew Plotkin + http://eblong.com/zarf/glulx/index.html +*/ + +#include "glk.h" +#include "glulxe.h" + +/* Git passes along function arguments in reverse order. To make our lives + more interesting. */ +#ifdef ARGS_REVERSED +#define ARG(argv, argc, ix) (argv[(argc-1)-ix]) +#else +#define ARG(argv, argc, ix) (argv[ix]) +#endif + +/* Any function can be called with any number of arguments. This macro + lets us snarf a given argument, or zero if it wasn't supplied. */ +#define ARG_IF_GIVEN(argv, argc, ix) ((argc > ix) ? (ARG(argv, argc, ix)) : 0) + +static void accel_error(char *msg); +static glui32 func_1_z__region(glui32 argc, glui32 *argv); +static glui32 func_2_cp__tab(glui32 argc, glui32 *argv); +static glui32 func_3_ra__pr(glui32 argc, glui32 *argv); +static glui32 func_4_rl__pr(glui32 argc, glui32 *argv); +static glui32 func_5_oc__cl(glui32 argc, glui32 *argv); +static glui32 func_6_rv__pr(glui32 argc, glui32 *argv); +static glui32 func_7_op__pr(glui32 argc, glui32 *argv); + +static int obj_in_class(glui32 obj); +static glui32 get_prop(glui32 obj, glui32 id); + +/* Parameters, set by @accelparam. */ +static glui32 classes_table = 0; /* class object array */ +static glui32 indiv_prop_start = 0; /* first individual prop ID */ +static glui32 class_metaclass = 0; /* "Class" class object */ +static glui32 object_metaclass = 0; /* "Object" class object */ +static glui32 routine_metaclass = 0; /* "Routine" class object */ +static glui32 string_metaclass = 0; /* "String" class object */ +static glui32 self = 0; /* address of global "self" */ +static glui32 num_attr_bytes = 0; /* number of attributes / 8 */ +static glui32 cpv__start = 0; /* array of common prop defaults */ + +typedef struct accelentry_struct { + glui32 addr; + acceleration_func func; + struct accelentry_struct *next; +} accelentry_t; + +#define ACCEL_HASH_SIZE (511) + +static accelentry_t **accelentries = NULL; + +void init_accel() +{ + accelentries = NULL; +} + +acceleration_func accel_find_func(glui32 index) +{ + switch (index) { + case 0: return NULL; /* 0 always means no acceleration */ + case 1: return func_1_z__region; + case 2: return func_2_cp__tab; + case 3: return func_3_ra__pr; + case 4: return func_4_rl__pr; + case 5: return func_5_oc__cl; + case 6: return func_6_rv__pr; + case 7: return func_7_op__pr; + } + return NULL; +} + +acceleration_func accel_get_func(glui32 addr) +{ + int bucknum; + accelentry_t *ptr; + + if (!accelentries) + return NULL; + + bucknum = (addr % ACCEL_HASH_SIZE); + for (ptr = accelentries[bucknum]; ptr; ptr = ptr->next) { + if (ptr->addr == addr) + return ptr->func; + } + return NULL; +} + +void accel_set_func(glui32 index, glui32 addr) +{ + int bucknum; + accelentry_t *ptr; + int functype; + acceleration_func new_func = NULL; + + /* Check the Glulx type identifier byte. */ + functype = Mem1(addr); + if (functype != 0xC0 && functype != 0xC1) { + fatal_error_i("Attempt to accelerate non-function.", addr); + } + + if (!accelentries) { + accelentries = (accelentry_t **)glulx_malloc(ACCEL_HASH_SIZE + * sizeof(accelentry_t *)); + if (!accelentries) + fatal_error("Cannot malloc acceleration table."); + for (bucknum=0; bucknumnext) { + if (ptr->addr == addr) + break; + } + if (!ptr) { + if (!new_func) { + return; /* no need for a new entry */ + } + ptr = (accelentry_t *)glulx_malloc(sizeof(accelentry_t)); + if (!ptr) + fatal_error("Cannot malloc acceleration entry."); + ptr->addr = addr; + ptr->func = NULL; + ptr->next = accelentries[bucknum]; + accelentries[bucknum] = ptr; + } + + ptr->func = new_func; +} + +void accel_set_param(glui32 index, glui32 val) +{ + switch (index) { + case 0: classes_table = val; break; + case 1: indiv_prop_start = val; break; + case 2: class_metaclass = val; break; + case 3: object_metaclass = val; break; + case 4: routine_metaclass = val; break; + case 5: string_metaclass = val; break; + case 6: self = val; break; + case 7: num_attr_bytes = val; break; + case 8: cpv__start = val; break; + } +} + +static void accel_error(char *msg) +{ + glk_put_char('\n'); + glk_put_string(msg); + glk_put_char('\n'); +} + +static int obj_in_class(glui32 obj) +{ + /* This checks whether obj is contained in Class, not whether + it is a member of Class. */ + return (Mem4(obj + 13 + num_attr_bytes) == class_metaclass); +} + +static glui32 get_prop(glui32 obj, glui32 id) +{ + glui32 cla = 0; + glui32 prop; + glui32 call_argv[2]; + + if (id & 0xFFFF0000) { + cla = Mem4(classes_table+((id & 0xFFFF) * 4)); + ARG(call_argv, 2, 0) = obj; + ARG(call_argv, 2, 1) = cla; + if (func_5_oc__cl(2, call_argv) == 0) + return 0; + + id >>= 16; + obj = cla; + } + + ARG(call_argv, 2, 0) = obj; + ARG(call_argv, 2, 1) = id; + prop = func_2_cp__tab(2, call_argv); + if (prop == 0) + return 0; + + if (obj_in_class(obj) && (cla == 0)) { + if ((id < indiv_prop_start) || (id >= indiv_prop_start+8)) + return 0; + } + + if (Mem4(self) != obj) { + if (Mem1(prop + 9) & 1) + return 0; + } + return prop; +} + +static glui32 func_1_z__region(glui32 argc, glui32 *argv) +{ + glui32 addr; + glui32 tb; + + if (argc < 1) + return 0; + + addr = ARG(argv, argc, 0); + if (addr < 36) + return 0; + if (addr >= endmem) + return 0; + + tb = Mem1(addr); + if (tb >= 0xE0) { + return 3; + } + if (tb >= 0xC0) { + return 2; + } + if (tb >= 0x70 && tb <= 0x7F && addr >= ramstart) { + return 1; + } + return 0; +} + +static glui32 func_2_cp__tab(glui32 argc, glui32 *argv) +{ + glui32 obj; + glui32 id; + glui32 otab, max; + + obj = ARG_IF_GIVEN(argv, argc, 0); + id = ARG_IF_GIVEN(argv, argc, 1); + + if (func_1_z__region(1, &obj) != 1) { + accel_error("[** Programming error: tried to find the \".\" of (something) **]"); + return 0; + } + + otab = Mem4(obj + 16); + if (!otab) + return 0; + + max = Mem4(otab); + otab += 4; + /* @binarysearch id 2 otab 10 max 0 0 res; */ + return binary_search(id, 2, otab, 10, max, 0, 0); +} + +static glui32 func_3_ra__pr(glui32 argc, glui32 *argv) +{ + glui32 obj; + glui32 id; + glui32 prop; + + obj = ARG_IF_GIVEN(argv, argc, 0); + id = ARG_IF_GIVEN(argv, argc, 1); + + prop = get_prop(obj, id); + if (prop == 0) + return 0; + + return Mem4(prop + 4); +} + +static glui32 func_4_rl__pr(glui32 argc, glui32 *argv) +{ + glui32 obj; + glui32 id; + glui32 prop; + + obj = ARG_IF_GIVEN(argv, argc, 0); + id = ARG_IF_GIVEN(argv, argc, 1); + + prop = get_prop(obj, id); + if (prop == 0) + return 0; + + return 4 * Mem2(prop + 2); +} + +static glui32 func_5_oc__cl(glui32 argc, glui32 *argv) +{ + glui32 obj; + glui32 cla; + glui32 zr, prop, inlist, inlistlen, jx; + + obj = ARG_IF_GIVEN(argv, argc, 0); + cla = ARG_IF_GIVEN(argv, argc, 1); + + zr = func_1_z__region(1, &obj); + if (zr == 3) + return (cla == string_metaclass) ? 1 : 0; + if (zr == 2) + return (cla == routine_metaclass) ? 1 : 0; + if (zr != 1) + return 0; + + if (cla == class_metaclass) { + if (obj_in_class(obj)) + return 1; + if (obj == class_metaclass) + return 1; + if (obj == string_metaclass) + return 1; + if (obj == routine_metaclass) + return 1; + if (obj == object_metaclass) + return 1; + return 0; + } + if (cla == object_metaclass) { + if (obj_in_class(obj)) + return 0; + if (obj == class_metaclass) + return 0; + if (obj == string_metaclass) + return 0; + if (obj == routine_metaclass) + return 0; + if (obj == object_metaclass) + return 0; + return 1; + } + if ((cla == string_metaclass) || (cla == routine_metaclass)) + return 0; + + if (!obj_in_class(cla)) { + accel_error("[** Programming error: tried to apply 'ofclass' with non-class **]"); + return 0; + } + + prop = get_prop(obj, 2); + if (prop == 0) + return 0; + + inlist = Mem4(prop + 4); + if (inlist == 0) + return 0; + + inlistlen = Mem2(prop + 2); + for (jx = 0; jx < inlistlen; jx++) { + if (Mem4(inlist + (4 * jx)) == cla) + return 1; + } + return 0; +} + +static glui32 func_6_rv__pr(glui32 argc, glui32 *argv) +{ + glui32 id; + glui32 addr; + + id = ARG_IF_GIVEN(argv, argc, 1); + + addr = func_3_ra__pr(argc, argv); + + if (addr == 0) { + if ((id > 0) && (id < indiv_prop_start)) + return Mem4(cpv__start + (4 * id)); + + accel_error("[** Programming error: tried to read (something) **]"); + return 0; + } + + return Mem4(addr); +} + +static glui32 func_7_op__pr(glui32 argc, glui32 *argv) +{ + glui32 obj; + glui32 id; + glui32 zr; + + obj = ARG_IF_GIVEN(argv, argc, 0); + id = ARG_IF_GIVEN(argv, argc, 1); + + zr = func_1_z__region(1, &obj); + if (zr == 3) { + /* print is INDIV_PROP_START+6 */ + if (id == indiv_prop_start+6) + return 1; + /* print_to_array is INDIV_PROP_START+7 */ + if (id == indiv_prop_start+7) + return 1; + return 0; + } + if (zr == 2) { + /* call is INDIV_PROP_START+5 */ + return ((id == indiv_prop_start+5) ? 1 : 0); + } + if (zr != 1) + return 0; + + if ((id >= indiv_prop_start) && (id < indiv_prop_start+8)) { + if (obj_in_class(obj)) + return 1; + } + + return ((func_3_ra__pr(argc, argv)) ? 1 : 0); +} diff --git a/interpreters/glulxe/exec.c b/interpreters/glulxe/exec.c new file mode 100644 index 0000000..03ac456 --- /dev/null +++ b/interpreters/glulxe/exec.c @@ -0,0 +1,750 @@ +/* exec.c: Glulxe code for program execution. The main interpreter loop. + Designed by Andrew Plotkin + http://eblong.com/zarf/glulx/index.html +*/ + +#include "glk.h" +#include "glulxe.h" +#include "opcodes.h" + +/* execute_loop(): + The main interpreter loop. This repeats until the program is done. +*/ +void execute_loop() +{ + int done_executing = FALSE; + int ix; + glui32 opcode; + operandlist_t *oplist; + instruction_t inst; + glui32 value, addr, val0, val1; + glsi32 vals0, vals1; + glui32 *arglist; + glui32 arglistfix[3]; + + while (!done_executing) { + + profile_tick(); + /* Do OS-specific processing, if appropriate. */ + glk_tick(); + + /* Fetch the opcode number. */ + opcode = Mem1(pc); + pc++; + if (opcode & 0x80) { + /* More than one-byte opcode. */ + if (opcode & 0x40) { + /* Four-byte opcode */ + opcode &= 0x3F; + opcode = (opcode << 8) | Mem1(pc); + pc++; + opcode = (opcode << 8) | Mem1(pc); + pc++; + opcode = (opcode << 8) | Mem1(pc); + pc++; + } + else { + /* Two-byte opcode */ + opcode &= 0x7F; + opcode = (opcode << 8) | Mem1(pc); + pc++; + } + } + + /* Now we have an opcode number. */ + + /* Fetch the structure that describes how the operands for this + opcode are arranged. This is a pointer to an immutable, + static object. */ + if (opcode < 0x80) + oplist = fast_operandlist[opcode]; + else + oplist = lookup_operandlist(opcode); + + if (!oplist) + fatal_error_i("Encountered unknown opcode.", opcode); + + /* Based on the oplist structure, load the actual operand values + into inst. This moves the PC up to the end of the instruction. */ + parse_operands(&inst, oplist); + + /* Perform the opcode. This switch statement is split in two, based + on some paranoid suspicions about the ability of compilers to + optimize large-range switches. Ignore that. */ + + if (opcode < 0x80) { + + switch (opcode) { + + case op_nop: + break; + + case op_add: + value = inst.value[0] + inst.value[1]; + store_operand(inst.desttype, inst.value[2], value); + break; + case op_sub: + value = inst.value[0] - inst.value[1]; + store_operand(inst.desttype, inst.value[2], value); + break; + case op_mul: + value = inst.value[0] * inst.value[1]; + store_operand(inst.desttype, inst.value[2], value); + break; + case op_div: + vals0 = inst.value[0]; + vals1 = inst.value[1]; + if (vals1 == 0) + fatal_error("Division by zero."); + /* Since C doesn't guarantee the results of division of negative + numbers, we carefully convert everything to positive values + first. */ + if (vals1 < 0) { + vals0 = (-vals0); + vals1 = (-vals1); + } + if (vals0 >= 0) { + value = vals0 / vals1; + } + else { + value = -((-vals0) / vals1); + } + store_operand(inst.desttype, inst.value[2], value); + break; + case op_mod: + vals0 = inst.value[0]; + vals1 = inst.value[1]; + if (vals1 == 0) + fatal_error("Division by zero doing remainder."); + if (vals1 < 0) { + vals1 = (-vals1); + } + if (vals0 >= 0) { + value = vals0 % vals1; + } + else { + value = -((-vals0) % vals1); + } + store_operand(inst.desttype, inst.value[2], value); + break; + case op_neg: + vals0 = inst.value[0]; + value = (-vals0); + store_operand(inst.desttype, inst.value[1], value); + break; + + case op_bitand: + value = (inst.value[0] & inst.value[1]); + store_operand(inst.desttype, inst.value[2], value); + break; + case op_bitor: + value = (inst.value[0] | inst.value[1]); + store_operand(inst.desttype, inst.value[2], value); + break; + case op_bitxor: + value = (inst.value[0] ^ inst.value[1]); + store_operand(inst.desttype, inst.value[2], value); + break; + case op_bitnot: + value = ~(inst.value[0]); + store_operand(inst.desttype, inst.value[1], value); + break; + + case op_shiftl: + vals0 = inst.value[1]; + if (vals0 < 0 || vals0 >= 32) + value = 0; + else + value = ((glui32)(inst.value[0]) << (glui32)vals0); + store_operand(inst.desttype, inst.value[2], value); + break; + case op_ushiftr: + vals0 = inst.value[1]; + if (vals0 < 0 || vals0 >= 32) + value = 0; + else + value = ((glui32)(inst.value[0]) >> (glui32)vals0); + store_operand(inst.desttype, inst.value[2], value); + break; + case op_sshiftr: + vals0 = inst.value[1]; + if (vals0 < 0 || vals0 >= 32) { + if (inst.value[0] & 0x80000000) + value = 0xFFFFFFFF; + else + value = 0; + } + else { + /* This is somewhat foolhardy -- C doesn't guarantee that + right-shifting a signed value replicates the sign bit. + We'll assume it for now. */ + value = ((glsi32)(inst.value[0]) >> (glsi32)vals0); + } + store_operand(inst.desttype, inst.value[2], value); + break; + + case op_jump: + value = inst.value[0]; + /* fall through to PerformJump label. */ + + PerformJump: /* goto label for successful jumping... ironic, no? */ + if (value == 0 || value == 1) { + /* Return from function. This is exactly what happens in + return_op, but it's only a few lines of code, so I won't + bother with a "goto". */ + leave_function(); + if (stackptr == 0) { + done_executing = TRUE; + break; + } + pop_callstub(value); /* zero or one */ + } + else { + /* Branch to a new PC value. */ + pc = (pc + value - 2); + } + break; + + case op_jz: + if (inst.value[0] == 0) { + value = inst.value[1]; + goto PerformJump; + } + break; + case op_jnz: + if (inst.value[0] != 0) { + value = inst.value[1]; + goto PerformJump; + } + break; + case op_jeq: + if (inst.value[0] == inst.value[1]) { + value = inst.value[2]; + goto PerformJump; + } + break; + case op_jne: + if (inst.value[0] != inst.value[1]) { + value = inst.value[2]; + goto PerformJump; + } + break; + case op_jlt: + vals0 = inst.value[0]; + vals1 = inst.value[1]; + if (vals0 < vals1) { + value = inst.value[2]; + goto PerformJump; + } + break; + case op_jgt: + vals0 = inst.value[0]; + vals1 = inst.value[1]; + if (vals0 > vals1) { + value = inst.value[2]; + goto PerformJump; + } + break; + case op_jle: + vals0 = inst.value[0]; + vals1 = inst.value[1]; + if (vals0 <= vals1) { + value = inst.value[2]; + goto PerformJump; + } + break; + case op_jge: + vals0 = inst.value[0]; + vals1 = inst.value[1]; + if (vals0 >= vals1) { + value = inst.value[2]; + goto PerformJump; + } + break; + case op_jltu: + val0 = inst.value[0]; + val1 = inst.value[1]; + if (val0 < val1) { + value = inst.value[2]; + goto PerformJump; + } + break; + case op_jgtu: + val0 = inst.value[0]; + val1 = inst.value[1]; + if (val0 > val1) { + value = inst.value[2]; + goto PerformJump; + } + break; + case op_jleu: + val0 = inst.value[0]; + val1 = inst.value[1]; + if (val0 <= val1) { + value = inst.value[2]; + goto PerformJump; + } + break; + case op_jgeu: + val0 = inst.value[0]; + val1 = inst.value[1]; + if (val0 >= val1) { + value = inst.value[2]; + goto PerformJump; + } + break; + + case op_call: + value = inst.value[1]; + arglist = pop_arguments(value, 0); + push_callstub(inst.desttype, inst.value[2]); + enter_function(inst.value[0], value, arglist); + break; + case op_return: + leave_function(); + if (stackptr == 0) { + done_executing = TRUE; + break; + } + pop_callstub(inst.value[0]); + break; + case op_tailcall: + value = inst.value[1]; + arglist = pop_arguments(value, 0); + leave_function(); + enter_function(inst.value[0], value, arglist); + break; + + case op_catch: + push_callstub(inst.desttype, inst.value[0]); + value = inst.value[1]; + val0 = stackptr; + store_operand(inst.desttype, inst.value[0], val0); + goto PerformJump; + break; + case op_throw: + profile_fail("throw"); + value = inst.value[0]; + stackptr = inst.value[1]; + pop_callstub(value); + break; + + case op_copy: + value = inst.value[0]; + store_operand(inst.desttype, inst.value[1], value); + break; + case op_copys: + value = inst.value[0]; + store_operand_s(inst.desttype, inst.value[1], value); + break; + case op_copyb: + value = inst.value[0]; + store_operand_b(inst.desttype, inst.value[1], value); + break; + + case op_sexs: + val0 = inst.value[0]; + if (val0 & 0x8000) + val0 |= 0xFFFF0000; + else + val0 &= 0x0000FFFF; + store_operand(inst.desttype, inst.value[1], val0); + break; + case op_sexb: + val0 = inst.value[0]; + if (val0 & 0x80) + val0 |= 0xFFFFFF00; + else + val0 &= 0x000000FF; + store_operand(inst.desttype, inst.value[1], val0); + break; + + case op_aload: + value = inst.value[0]; + value += 4 * inst.value[1]; + val0 = Mem4(value); + store_operand(inst.desttype, inst.value[2], val0); + break; + case op_aloads: + value = inst.value[0]; + value += 2 * inst.value[1]; + val0 = Mem2(value); + store_operand(inst.desttype, inst.value[2], val0); + break; + case op_aloadb: + value = inst.value[0]; + value += inst.value[1]; + val0 = Mem1(value); + store_operand(inst.desttype, inst.value[2], val0); + break; + case op_aloadbit: + value = inst.value[0]; + vals0 = inst.value[1]; + val1 = (vals0 & 7); + if (vals0 >= 0) + value += (vals0 >> 3); + else + value -= ((-1 - vals0) >> 3); + if (Mem1(value) & (1 << val1)) + val0 = 1; + else + val0 = 0; + store_operand(inst.desttype, inst.value[2], val0); + break; + + case op_astore: + value = inst.value[0]; + value += 4 * inst.value[1]; + val0 = inst.value[2]; + MemW4(value, val0); + break; + case op_astores: + value = inst.value[0]; + value += 2 * inst.value[1]; + val0 = inst.value[2]; + MemW2(value, val0); + break; + case op_astoreb: + value = inst.value[0]; + value += inst.value[1]; + val0 = inst.value[2]; + MemW1(value, val0); + break; + case op_astorebit: + value = inst.value[0]; + vals0 = inst.value[1]; + val1 = (vals0 & 7); + if (vals0 >= 0) + value += (vals0 >> 3); + else + value -= ((-1 - vals0) >> 3); + val0 = Mem1(value); + if (inst.value[2]) + val0 |= (1 << val1); + else + val0 &= ~((glui32)(1 << val1)); + MemW1(value, val0); + break; + + case op_stkcount: + value = (stackptr - valstackbase) / 4; + store_operand(inst.desttype, inst.value[0], value); + break; + case op_stkpeek: + vals0 = inst.value[0] * 4; + if (vals0 < 0 || vals0 >= (stackptr - valstackbase)) + fatal_error("Stkpeek outside current stack range."); + value = Stk4(stackptr - (vals0+4)); + store_operand(inst.desttype, inst.value[1], value); + break; + case op_stkswap: + if (stackptr < valstackbase+8) { + fatal_error("Stack underflow in stkswap."); + } + val0 = Stk4(stackptr-4); + val1 = Stk4(stackptr-8); + StkW4(stackptr-4, val1); + StkW4(stackptr-8, val0); + break; + case op_stkcopy: + vals0 = inst.value[0]; + if (vals0 < 0) + fatal_error("Negative operand in stkcopy."); + if (vals0 == 0) + break; + if (stackptr < valstackbase+vals0*4) + fatal_error("Stack underflow in stkcopy."); + if (stackptr + vals0*4 > stacksize) + fatal_error("Stack overflow in stkcopy."); + addr = stackptr - vals0*4; + for (ix=0; ix 0) { + vals1 = vals1 % vals0; + vals1 = (vals0) - vals1; + } + else { + vals1 = (-vals1) % vals0; + } + if (vals1 == 0) + break; + addr = stackptr - vals0*4; + for (ix=0; ix= 1) + value = glulx_random() % (glui32)(vals0); + else + value = -(glulx_random() % (glui32)(-vals0)); + store_operand(inst.desttype, inst.value[1], value); + break; + case op_setrandom: + glulx_setrandom(inst.value[0]); + break; + + case op_verify: + value = perform_verify(); + store_operand(inst.desttype, inst.value[0], value); + break; + + case op_restart: + profile_fail("restart"); + vm_restart(); + break; + + case op_protect: + val0 = inst.value[0]; + val1 = val0 + inst.value[1]; + if (val0 == val1) { + val0 = 0; + val1 = 0; + } + protectstart = val0; + protectend = val1; + break; + + case op_save: + push_callstub(inst.desttype, inst.value[1]); + value = perform_save(find_stream_by_id(inst.value[0])); + pop_callstub(value); + break; + + case op_restore: + profile_fail("restore"); + value = perform_restore(find_stream_by_id(inst.value[0])); + if (value == 0) { + /* We've succeeded, and the stack now contains the callstub + saved during saveundo. Ignore this opcode's operand. */ + value = -1; + pop_callstub(value); + } + else { + /* We've failed, so we must store the failure in this opcode's + operand. */ + store_operand(inst.desttype, inst.value[1], value); + } + break; + + case op_saveundo: + push_callstub(inst.desttype, inst.value[0]); + value = perform_saveundo(); + pop_callstub(value); + break; + + case op_restoreundo: + profile_fail("restoreundo"); + value = perform_restoreundo(); + if (value == 0) { + /* We've succeeded, and the stack now contains the callstub + saved during saveundo. Ignore this opcode's operand. */ + value = -1; + pop_callstub(value); + } + else { + /* We've failed, so we must store the failure in this opcode's + operand. */ + store_operand(inst.desttype, inst.value[0], value); + } + break; + + case op_quit: + done_executing = TRUE; + break; + + case op_linearsearch: + value = linear_search(inst.value[0], inst.value[1], inst.value[2], + inst.value[3], inst.value[4], inst.value[5], inst.value[6]); + store_operand(inst.desttype, inst.value[7], value); + break; + case op_binarysearch: + value = binary_search(inst.value[0], inst.value[1], inst.value[2], + inst.value[3], inst.value[4], inst.value[5], inst.value[6]); + store_operand(inst.desttype, inst.value[7], value); + break; + case op_linkedsearch: + value = linked_search(inst.value[0], inst.value[1], inst.value[2], + inst.value[3], inst.value[4], inst.value[5]); + store_operand(inst.desttype, inst.value[6], value); + break; + + case op_mzero: { + glui32 lx; + glui32 count = inst.value[0]; + addr = inst.value[1]; + for (lx=0; lx + http://eblong.com/zarf/glulx/index.html +*/ + +#include "glk.h" +#include "gi_blorb.h" +#include "glulxe.h" + +/* is_gamefile_valid(): + Check guess what. +*/ +int is_gamefile_valid() +{ + unsigned char buf[8]; + int res; + glui32 version; + + glk_stream_set_position(gamefile, gamefile_start, seekmode_Start); + res = glk_get_buffer_stream(gamefile, (char *)buf, 8); + + if (res != 8) { + fatal_error("This is too short to be a valid Glulx file."); + return FALSE; + } + + if (buf[0] != 'G' || buf[1] != 'l' || buf[2] != 'u' || buf[3] != 'l') { + fatal_error("This is not a valid Glulx file."); + return FALSE; + } + + /* We support version 2.0 through 3.1.*. */ + + version = Read4(buf+4); + if (version < 0x20000) { + fatal_error("This Glulx file is too old a version to execute."); + return FALSE; + } + if (version >= 0x30200) { + fatal_error("This Glulx file is too new a version to execute."); + return FALSE; + } + + return TRUE; +} + +/* locate_gamefile: + Given that gamefile contains a Glk stream, which may be a Glulx + file or a Blorb archive containing one, locate the beginning and + end of the Glulx data. +*/ +int locate_gamefile(int isblorb) +{ + if (!isblorb) { + /* The simple case. A bare Glulx file was opened, so we don't use + Blorb at all. */ + gamefile_start = 0; + glk_stream_set_position(gamefile, 0, seekmode_End); + gamefile_len = glk_stream_get_position(gamefile); + return TRUE; + } + else { + /* A Blorb file. We now have to open it and find the Glulx chunk. */ + giblorb_err_t err; + giblorb_result_t blorbres; + giblorb_map_t *map; + + err = giblorb_set_resource_map(gamefile); + if (err) { + init_err = "This Blorb file seems to be invalid."; + return FALSE; + } + map = giblorb_get_resource_map(); + err = giblorb_load_resource(map, giblorb_method_FilePos, + &blorbres, giblorb_ID_Exec, 0); + if (err) { + init_err = "This Blorb file does not contain an executable Glulx chunk."; + return FALSE; + } + if (blorbres.chunktype != giblorb_make_id('G', 'L', 'U', 'L')) { + init_err = "This Blorb file contains an executable chunk, but it is not a Glulx file."; + return FALSE; + } + gamefile_start = blorbres.data.startpos; + gamefile_len = blorbres.length; + return TRUE; + } +} + diff --git a/interpreters/glulxe/funcs.c b/interpreters/glulxe/funcs.c new file mode 100644 index 0000000..c0aac4d --- /dev/null +++ b/interpreters/glulxe/funcs.c @@ -0,0 +1,307 @@ +/* funcs.c: Glulxe function-handling functions. + Designed by Andrew Plotkin + http://eblong.com/zarf/glulx/index.html +*/ + +#include "glk.h" +#include "glulxe.h" + +/* enter_function(): + This writes a new call frame onto the stack, at stackptr. It leaves + frameptr pointing to the frame (ie, the original stackptr value.) + argc and argv are an array of arguments. Note that if argc is zero, + argv may be NULL. +*/ +void enter_function(glui32 addr, glui32 argc, glui32 *argv) +{ + int ix, jx; + acceleration_func accelfunc; + int locallen; + int functype; + glui32 modeaddr, opaddr, val; + int loctype, locnum; + + accelfunc = accel_get_func(addr); + if (accelfunc) { + profile_in(addr, TRUE); + val = accelfunc(argc, argv); + profile_out(); + pop_callstub(val); + return; + } + + profile_in(addr, FALSE); + + /* Check the Glulx type identifier byte. */ + functype = Mem1(addr); + if (functype != 0xC0 && functype != 0xC1) { + if (functype >= 0xC0 && functype <= 0xDF) + fatal_error_i("Call to unknown type of function.", addr); + else + fatal_error_i("Call to non-function.", addr); + } + addr++; + + /* Bump the frameptr to the top. */ + frameptr = stackptr; + + /* Go through the function's locals-format list, copying it to the + call frame. At the same time, we work out how much space the locals + will actually take up. (Including padding.) */ + ix = 0; + locallen = 0; + while (1) { + /* Grab two bytes from the locals-format list. These are + unsigned (0..255 range). */ + loctype = Mem1(addr); + addr++; + locnum = Mem1(addr); + addr++; + + /* Copy them into the call frame. */ + StkW1(frameptr+8+2*ix, loctype); + StkW1(frameptr+8+2*ix+1, locnum); + ix++; + + /* If the type is zero, we're done, except possibly for two more + zero bytes in the call frame (to ensure 4-byte alignment.) */ + if (loctype == 0) { + /* Make sure ix is even. */ + if (ix & 1) { + StkW1(frameptr+8+2*ix, 0); + StkW1(frameptr+8+2*ix+1, 0); + ix++; + } + break; + } + + /* Pad to 4-byte or 2-byte alignment if these locals are 4 or 2 + bytes long. */ + if (loctype == 4) { + while (locallen & 3) + locallen++; + } + else if (loctype == 2) { + while (locallen & 1) + locallen++; + } + else if (loctype == 1) { + /* no padding */ + } + else { + fatal_error("Illegal local type in locals-format list."); + } + + /* Add the length of the locals themselves. */ + locallen += (loctype * locnum); + } + + /* Pad the locals to 4-byte alignment. */ + while (locallen & 3) + locallen++; + + /* We now know how long the locals-frame and locals segments are. */ + localsbase = frameptr+8+2*ix; + valstackbase = localsbase+locallen; + + /* Test for stack overflow. */ + /* This really isn't good enough; if the format list overflowed the + stack, we've already written outside the stack array. */ + if (valstackbase >= stacksize) + fatal_error("Stack overflow in function call."); + + /* Fill in the beginning of the stack frame. */ + StkW4(frameptr+4, 8+2*ix); + StkW4(frameptr, 8+2*ix+locallen); + + /* Set the stackptr and PC. */ + stackptr = valstackbase; + pc = addr; + + /* Zero out all the locals. */ + for (jx=0; jx= stacksize) + fatal_error("Stack overflow in function arguments."); + for (ix=0; ix stacksize) + fatal_error("Stack overflow in callstub."); + StkW4(stackptr+0, desttype); + StkW4(stackptr+4, destaddr); + StkW4(stackptr+8, pc); + StkW4(stackptr+12, frameptr); + stackptr += 16; +} + +/* pop_callstub(): + Remove the magic four values from the stack, and use them. The + returnvalue, whatever it is, is put at the result destination; + the PC and frameptr registers are set. +*/ +void pop_callstub(glui32 returnvalue) +{ + glui32 desttype, destaddr; + glui32 newpc, newframeptr; + + if (stackptr < 16) + fatal_error("Stack underflow in callstub."); + stackptr -= 16; + + newframeptr = Stk4(stackptr+12); + newpc = Stk4(stackptr+8); + destaddr = Stk4(stackptr+4); + desttype = Stk4(stackptr+0); + + pc = newpc; + frameptr = newframeptr; + + /* Recompute valstackbase and localsbase */ + valstackbase = frameptr + Stk4(frameptr); + localsbase = frameptr + Stk4(frameptr+4); + + switch (desttype) { + + case 0x11: + fatal_error("String-terminator call stub at end of function call."); + break; + + case 0x10: + /* This call stub was pushed during a string-decoding operation! + We have to restart it. (Note that the return value is discarded.) */ + stream_string(pc, 0xE1, destaddr); + break; + + case 0x12: + /* This call stub was pushed during a number-printing operation. + Restart that. (Return value discarded.) */ + stream_num(pc, TRUE, destaddr); + break; + + case 0x13: + /* This call stub was pushed during a C-string printing operation. + We have to restart it. (Note that the return value is discarded.) */ + stream_string(pc, 0xE0, destaddr); + break; + + case 0x14: + /* This call stub was pushed during a Unicode printing operation. + We have to restart it. (Note that the return value is discarded.) */ + stream_string(pc, 0xE2, destaddr); + break; + + default: + /* We're back in the original frame, so we can store the returnvalue. + (If we tried to do this before resetting frameptr, a result + destination on the stack would go astray.) */ + store_operand(desttype, destaddr, returnvalue); + break; + } +} + +/* pop_callstub_string(): + Remove the magic four values, but interpret them as a string restart + state. Returns zero if it's a termination stub, or returns the + restart address. The bitnum is extra. +*/ +glui32 pop_callstub_string(int *bitnum) +{ + glui32 desttype, destaddr, newpc; + + if (stackptr < 16) + fatal_error("Stack underflow in callstub."); + stackptr -= 16; + + newpc = Stk4(stackptr+8); + destaddr = Stk4(stackptr+4); + desttype = Stk4(stackptr+0); + + pc = newpc; + + if (desttype == 0x11) { + return 0; + } + if (desttype == 0x10) { + *bitnum = destaddr; + return pc; + } + + fatal_error("Function-terminator call stub at end of string."); + return 0; +} + diff --git a/interpreters/glulxe/gestalt.c b/interpreters/glulxe/gestalt.c new file mode 100644 index 0000000..c1c933f --- /dev/null +++ b/interpreters/glulxe/gestalt.c @@ -0,0 +1,70 @@ +/* gestalt.c: Glulxe code for gestalt selectors + Designed by Andrew Plotkin + http://eblong.com/zarf/glulx/index.html +*/ + +#include "glk.h" +#include "glulxe.h" +#include "gestalt.h" + +glui32 do_gestalt(glui32 val, glui32 val2) +{ + switch (val) { + + case gestulx_GlulxVersion: + return 0x00030101; /* Glulx spec version 3.1.1 */ + + case gestulx_TerpVersion: + return 0x00000404; /* Glulxe version 0.4.4 */ + + case gestulx_ResizeMem: +#ifdef FIXED_MEMSIZE + return 0; /* The setmemsize opcodes are compiled out. */ +#else /* FIXED_MEMSIZE */ + return 1; /* We can handle setmemsize. */ +#endif /* FIXED_MEMSIZE */ + + case gestulx_Undo: + return 1; /* We can handle saveundo and restoreundo. */ + + case gestulx_IOSystem: + switch (val2) { + case 0: + return 1; /* The "null" system always works. */ + case 1: + return 1; /* The "filter" system always works. */ + case 2: + return 1; /* A Glk library is hooked up. */ + default: + return 0; + } + + case gestulx_Unicode: + return 1; /* We can handle Unicode. */ + + case gestulx_MemCopy: + return 1; /* We can do mcopy/mzero. */ + + case gestulx_MAlloc: +#ifdef FIXED_MEMSIZE + return 0; /* The malloc opcodes are compiled out. */ +#else /* FIXED_MEMSIZE */ + return 1; /* We can handle malloc/mfree. */ +#endif /* FIXED_MEMSIZE */ + + case gestulx_MAllocHeap: + return heap_get_start(); + + case gestulx_Acceleration: + return 1; /* We can do accelfunc/accelparam. */ + + case gestulx_AccelFunc: + if (accel_find_func(val2)) + return 1; /* We know this accelerated function. */ + return 0; + + default: + return 0; + + } +} diff --git a/interpreters/glulxe/gestalt.h b/interpreters/glulxe/gestalt.h new file mode 100644 index 0000000..5c9b5be --- /dev/null +++ b/interpreters/glulxe/gestalt.h @@ -0,0 +1,22 @@ +/* gestalt.h: The list of gestalt selectors for Glulxe. + Designed by Andrew Plotkin + http://eblong.com/zarf/glulx/index.html +*/ + +#ifndef _GESTALT_H +#define _GESTALT_H + +#define gestulx_GlulxVersion (0) +#define gestulx_TerpVersion (1) +#define gestulx_ResizeMem (2) +#define gestulx_Undo (3) +#define gestulx_IOSystem (4) +#define gestulx_Unicode (5) +#define gestulx_MemCopy (6) +#define gestulx_MAlloc (7) +#define gestulx_MAllocHeap (8) +#define gestulx_Acceleration (9) +#define gestulx_AccelFunc (10) + +#endif /* _GESTALT_H */ + diff --git a/interpreters/glulxe/glkop.c b/interpreters/glulxe/glkop.c new file mode 100644 index 0000000..e9c5191 --- /dev/null +++ b/interpreters/glulxe/glkop.c @@ -0,0 +1,1057 @@ +/* glkop.c: Glulxe code for Glk API dispatching. + Designed by Andrew Plotkin + http://eblong.com/zarf/glulx/index.html +*/ + +/* This code is actually very general; it could work for almost any + 32-bit VM which remotely resembles Glulxe or the Z-machine in design. + + To be precise, we make the following assumptions: + + - An argument list is an array of 32-bit values, which can represent + either integers or addresses. + - We can read or write to a 32-bit integer in VM memory using the macros + ReadMemory(addr) and WriteMemory(addr), where addr is an address + taken from the argument list. + - A character array is an actual array of bytes somewhere in terp + memory, whose actual address can be computed by the macro + AddressOfArray(addr). Again, addr is a VM address from the argument + list. + - An integer array is a sequence of integers somewhere in VM memory. + The array can be turned into a C integer array by the macro + CaptureIArray(addr, len), and released by ReleaseIArray(). + These macros are responsible for fixing byte-order and alignment + (if the C ABI does not match the VM's). The passin, passout hints + may be used to avoid unnecessary copying. + - A Glk structure (such as event_t) is a set of integers somewhere + in VM memory, which can be read and written with the macros + ReadStructField(addr, fieldnum) and WriteStructField(addr, fieldnum). + The fieldnum is an integer (from 0 to 3, for event_t.) + - A VM string can be turned into a C-style string with the macro + ptr = DecodeVMString(addr). After the string is used, this code + calls ReleaseVMString(ptr), which should free any memory that + DecodeVMString allocates. + - A VM Unicode string can be turned into a zero-terminated array + of 32-bit integers, in the same way, with DecodeVMUstring + and ReleaseVMUstring. + + To work this code over for a new VM, just diddle the macros. +*/ + +#define ReadMemory(addr) \ + (((addr) == 0xffffffff) \ + ? (stackptr -= 4, Stk4(stackptr)) \ + : (Mem4(addr))) +#define WriteMemory(addr, val) \ + (((addr) == 0xffffffff) \ + ? (StkW4(stackptr, (val)), stackptr += 4) \ + : (MemW4((addr), (val)))) +#define AddressOfArray(addr) \ + (memmap + (addr)) +#define CaptureIArray(addr, len, passin) \ + (grab_temp_array(addr, len, passin)) +#define ReleaseIArray(ptr, addr, len, passout) \ + (release_temp_array(ptr, addr, len, passout)) +#define ReadStructField(addr, fieldnum) \ + (((addr) == 0xffffffff) \ + ? (stackptr -= 4, Stk4(stackptr)) \ + : (Mem4((addr)+(fieldnum)*4))) +#define WriteStructField(addr, fieldnum, val) \ + (((addr) == 0xffffffff) \ + ? (StkW4(stackptr, (val)), stackptr += 4) \ + : (MemW4((addr)+(fieldnum)*4, (val)))) +#define DecodeVMString(addr) \ + (make_temp_string(addr)) +#define ReleaseVMString(ptr) \ + (free_temp_string(ptr)) +#define DecodeVMUstring(addr) \ + (make_temp_ustring(addr)) +#define ReleaseVMUstring(ptr) \ + (free_temp_ustring(ptr)) + +#include "glk.h" +#include "glulxe.h" +#include "gi_dispa.h" + +typedef struct dispatch_splot_struct { + int numwanted; + int maxargs; + gluniversal_t *garglist; + glui32 *varglist; + int numvargs; + glui32 *retval; +} dispatch_splot_t; + +/* We maintain a linked list of arrays being used for Glk calls. It is + only used for integer (glui32) arrays -- char arrays are handled in + place. It's not worth bothering with a hash table, since most + arrays appear here only momentarily. */ + +typedef struct arrayref_struct arrayref_t; +struct arrayref_struct { + void *array; + glui32 addr; + glui32 elemsize; + glui32 len; /* elements */ + int retained; + arrayref_t *next; +}; + +static arrayref_t *arrays = NULL; + +/* We maintain a hash table for each opaque Glk class. classref_t are the + nodes of the table, and classtable_t are the tables themselves. */ + +typedef struct classref_struct classref_t; +struct classref_struct { + void *obj; + glui32 id; + int bucknum; + classref_t *next; +}; + +#define CLASSHASH_SIZE (31) +typedef struct classtable_struct { + glui32 lastid; + classref_t *bucket[CLASSHASH_SIZE]; +} classtable_t; + +/* The list of hash tables, for the classes. */ +static int num_classes = 0; +classtable_t **classes = NULL; + +static classtable_t *new_classtable(glui32 firstid); +static void *classes_get(int classid, glui32 objid); +static classref_t *classes_put(int classid, void *obj); +static void classes_remove(int classid, void *obj); + +static gidispatch_rock_t glulxe_classtable_register(void *obj, + glui32 objclass); +static void glulxe_classtable_unregister(void *obj, glui32 objclass, + gidispatch_rock_t objrock); +static gidispatch_rock_t glulxe_retained_register(void *array, + glui32 len, char *typecode); +static void glulxe_retained_unregister(void *array, glui32 len, + char *typecode, gidispatch_rock_t objrock); + +static glui32 *grab_temp_array(glui32 addr, glui32 len, int passin); +static void release_temp_array(glui32 *arr, glui32 addr, glui32 len, int passout); + +static void prepare_glk_args(char *proto, dispatch_splot_t *splot); +static void parse_glk_args(dispatch_splot_t *splot, char **proto, int depth, + int *argnumptr, glui32 subaddress, int subpassin); +static void unparse_glk_args(dispatch_splot_t *splot, char **proto, int depth, + int *argnumptr, glui32 subaddress, int subpassout); + +/* init_dispatch(): + Set up the class hash tables and other startup-time stuff. +*/ +int init_dispatch() +{ + int ix; + + /* Allocate the class hash tables. */ + num_classes = gidispatch_count_classes(); + classes = (classtable_t **)glulx_malloc(num_classes + * sizeof(classtable_t *)); + if (!classes) + return FALSE; + + for (ix=0; ix&+:#!" chars. +*/ +static char *read_prefix(char *cx, int *isref, int *isarray, + int *passin, int *passout, int *nullok, int *isretained, + int *isreturn) +{ + *isref = FALSE; + *passin = FALSE; + *passout = FALSE; + *nullok = TRUE; + *isarray = FALSE; + *isretained = FALSE; + *isreturn = FALSE; + while (1) { + if (*cx == '<') { + *isref = TRUE; + *passout = TRUE; + } + else if (*cx == '>') { + *isref = TRUE; + *passin = TRUE; + } + else if (*cx == '&') { + *isref = TRUE; + *passout = TRUE; + *passin = TRUE; + } + else if (*cx == '+') { + *nullok = FALSE; + } + else if (*cx == ':') { + *isref = TRUE; + *passout = TRUE; + *nullok = FALSE; + *isreturn = TRUE; + } + else if (*cx == '#') { + *isarray = TRUE; + } + else if (*cx == '!') { + *isretained = TRUE; + } + else { + break; + } + cx++; + } + return cx; +} + +/* prepare_glk_args(): + This reads through the prototype string, and pulls Floo objects off the + stack. It also works out the maximal number of gluniversal_t objects + which could be used by the Glk call in question. It then allocates + space for them. +*/ +static void prepare_glk_args(char *proto, dispatch_splot_t *splot) +{ + static gluniversal_t *garglist = NULL; + static int garglist_size = 0; + + int ix; + int numwanted, numvargswanted, maxargs; + char *cx; + + cx = proto; + numwanted = 0; + while (*cx >= '0' && *cx <= '9') { + numwanted = 10 * numwanted + (*cx - '0'); + cx++; + } + splot->numwanted = numwanted; + + maxargs = 0; + numvargswanted = 0; + for (ix = 0; ix < numwanted; ix++) { + int isref, passin, passout, nullok, isarray, isretained, isreturn; + cx = read_prefix(cx, &isref, &isarray, &passin, &passout, &nullok, + &isretained, &isreturn); + if (isref) { + maxargs += 2; + } + else { + maxargs += 1; + } + if (!isreturn) { + if (isarray) { + numvargswanted += 2; + } + else { + numvargswanted += 1; + } + } + + if (*cx == 'I' || *cx == 'C') { + cx += 2; + } + else if (*cx == 'Q') { + cx += 2; + } + else if (*cx == 'S' || *cx == 'U') { + cx += 1; + } + else if (*cx == '[') { + int refdepth, nwx; + cx++; + nwx = 0; + while (*cx >= '0' && *cx <= '9') { + nwx = 10 * nwx + (*cx - '0'); + cx++; + } + maxargs += nwx; /* This is *only* correct because all structs contain + plain values. */ + refdepth = 1; + while (refdepth > 0) { + if (*cx == '[') + refdepth++; + else if (*cx == ']') + refdepth--; + cx++; + } + } + else { + fatal_error("Illegal format string."); + } + } + + if (*cx != ':' && *cx != '\0') + fatal_error("Illegal format string."); + + splot->maxargs = maxargs; + + if (splot->numvargs != numvargswanted) + fatal_error("Wrong number of arguments to Glk function."); + + if (garglist && garglist_size < maxargs) { + glulx_free(garglist); + garglist = NULL; + garglist_size = 0; + } + if (!garglist) { + garglist_size = maxargs + 16; + garglist = (gluniversal_t *)glulx_malloc(garglist_size + * sizeof(gluniversal_t)); + } + if (!garglist) + fatal_error("Unable to allocate storage for Glk arguments."); + + splot->garglist = garglist; +} + +/* parse_glk_args(): + This long and unpleasant function translates a set of Floo objects into + a gluniversal_t array. It's recursive, too, to deal with structures. +*/ +static void parse_glk_args(dispatch_splot_t *splot, char **proto, int depth, + int *argnumptr, glui32 subaddress, int subpassin) +{ + char *cx; + int ix, argx; + int gargnum, numwanted; + void *opref; + gluniversal_t *garglist; + glui32 *varglist; + + garglist = splot->garglist; + varglist = splot->varglist; + gargnum = *argnumptr; + cx = *proto; + + numwanted = 0; + while (*cx >= '0' && *cx <= '9') { + numwanted = 10 * numwanted + (*cx - '0'); + cx++; + } + + for (argx = 0, ix = 0; argx < numwanted; argx++, ix++) { + char typeclass; + int skipval; + int isref, passin, passout, nullok, isarray, isretained, isreturn; + cx = read_prefix(cx, &isref, &isarray, &passin, &passout, &nullok, + &isretained, &isreturn); + + typeclass = *cx; + cx++; + + skipval = FALSE; + if (isref) { + if (!isreturn && varglist[ix] == 0) { + if (!nullok) + fatal_error("Zero passed invalidly to Glk function."); + garglist[gargnum].ptrflag = FALSE; + gargnum++; + skipval = TRUE; + } + else { + garglist[gargnum].ptrflag = TRUE; + gargnum++; + } + } + if (!skipval) { + glui32 thisval; + + if (typeclass == '[') { + + parse_glk_args(splot, &cx, depth+1, &gargnum, varglist[ix], passin); + + } + else if (isarray) { + /* definitely isref */ + + switch (typeclass) { + case 'C': + garglist[gargnum].array = AddressOfArray(varglist[ix]); + gargnum++; + ix++; + garglist[gargnum].uint = varglist[ix]; + gargnum++; + cx++; + break; + case 'I': + garglist[gargnum].array = CaptureIArray(varglist[ix], varglist[ix+1], passin); + gargnum++; + ix++; + garglist[gargnum].uint = varglist[ix]; + gargnum++; + cx++; + break; + default: + fatal_error("Illegal format string."); + break; + } + } + else { + /* a plain value or a reference to one. */ + + if (isreturn) { + thisval = 0; + } + else if (depth > 0) { + /* Definitely not isref or isarray. */ + if (subpassin) + thisval = ReadStructField(subaddress, ix); + else + thisval = 0; + } + else if (isref) { + if (passin) + thisval = ReadMemory(varglist[ix]); + else + thisval = 0; + } + else { + thisval = varglist[ix]; + } + + switch (typeclass) { + case 'I': + if (*cx == 'u') + garglist[gargnum].uint = (glui32)(thisval); + else if (*cx == 's') + garglist[gargnum].sint = (glsi32)(thisval); + else + fatal_error("Illegal format string."); + gargnum++; + cx++; + break; + case 'Q': + if (thisval) { + opref = classes_get(*cx-'a', thisval); + if (!opref) { + fatal_error("Reference to nonexistent Glk object."); + } + } + else { + opref = NULL; + } + garglist[gargnum].opaqueref = opref; + gargnum++; + cx++; + break; + case 'C': + if (*cx == 'u') + garglist[gargnum].uch = (unsigned char)(thisval); + else if (*cx == 's') + garglist[gargnum].sch = (signed char)(thisval); + else if (*cx == 'n') + garglist[gargnum].ch = (char)(thisval); + else + fatal_error("Illegal format string."); + gargnum++; + cx++; + break; + case 'S': + garglist[gargnum].charstr = DecodeVMString(thisval); + gargnum++; + break; +#ifdef GLK_MODULE_UNICODE + case 'U': + garglist[gargnum].unicharstr = DecodeVMUstring(thisval); + gargnum++; + break; +#endif /* GLK_MODULE_UNICODE */ + default: + fatal_error("Illegal format string."); + break; + } + } + } + else { + /* We got a null reference, so we have to skip the format element. */ + if (typeclass == '[') { + int numsubwanted, refdepth; + numsubwanted = 0; + while (*cx >= '0' && *cx <= '9') { + numsubwanted = 10 * numsubwanted + (*cx - '0'); + cx++; + } + refdepth = 1; + while (refdepth > 0) { + if (*cx == '[') + refdepth++; + else if (*cx == ']') + refdepth--; + cx++; + } + } + else if (typeclass == 'S' || typeclass == 'U') { + /* leave it */ + } + else { + cx++; + } + } + } + + if (depth > 0) { + if (*cx != ']') + fatal_error("Illegal format string."); + cx++; + } + else { + if (*cx != ':' && *cx != '\0') + fatal_error("Illegal format string."); + } + + *proto = cx; + *argnumptr = gargnum; +} + +/* unparse_glk_args(): + This is about the reverse of parse_glk_args(). +*/ +static void unparse_glk_args(dispatch_splot_t *splot, char **proto, int depth, + int *argnumptr, glui32 subaddress, int subpassout) +{ + char *cx; + int ix, argx; + int gargnum, numwanted; + void *opref; + gluniversal_t *garglist; + glui32 *varglist; + + garglist = splot->garglist; + varglist = splot->varglist; + gargnum = *argnumptr; + cx = *proto; + + numwanted = 0; + while (*cx >= '0' && *cx <= '9') { + numwanted = 10 * numwanted + (*cx - '0'); + cx++; + } + + for (argx = 0, ix = 0; argx < numwanted; argx++, ix++) { + char typeclass; + int skipval; + int isref, passin, passout, nullok, isarray, isretained, isreturn; + cx = read_prefix(cx, &isref, &isarray, &passin, &passout, &nullok, + &isretained, &isreturn); + + typeclass = *cx; + cx++; + + skipval = FALSE; + if (isref) { + if (!isreturn && varglist[ix] == 0) { + if (!nullok) + fatal_error("Zero passed invalidly to Glk function."); + garglist[gargnum].ptrflag = FALSE; + gargnum++; + skipval = TRUE; + } + else { + garglist[gargnum].ptrflag = TRUE; + gargnum++; + } + } + if (!skipval) { + glui32 thisval; + + if (typeclass == '[') { + + unparse_glk_args(splot, &cx, depth+1, &gargnum, varglist[ix], passout); + + } + else if (isarray) { + /* definitely isref */ + + switch (typeclass) { + case 'C': + gargnum++; + ix++; + gargnum++; + cx++; + break; + case 'I': + ReleaseIArray(garglist[gargnum].array, varglist[ix], varglist[ix+1], passout); + gargnum++; + ix++; + gargnum++; + cx++; + break; + default: + fatal_error("Illegal format string."); + break; + } + } + else { + /* a plain value or a reference to one. */ + + if (isreturn || (depth > 0 && subpassout) || (isref && passout)) { + skipval = FALSE; + } + else { + skipval = TRUE; + } + + switch (typeclass) { + case 'I': + if (!skipval) { + if (*cx == 'u') + thisval = (glui32)garglist[gargnum].uint; + else if (*cx == 's') + thisval = (glui32)garglist[gargnum].sint; + else + fatal_error("Illegal format string."); + } + gargnum++; + cx++; + break; + case 'Q': + if (!skipval) { + opref = garglist[gargnum].opaqueref; + if (opref) { + gidispatch_rock_t objrock = + gidispatch_get_objrock(opref, *cx-'a'); + thisval = ((classref_t *)objrock.ptr)->id; + } + else { + thisval = 0; + } + } + gargnum++; + cx++; + break; + case 'C': + if (!skipval) { + if (*cx == 'u') + thisval = (glui32)garglist[gargnum].uch; + else if (*cx == 's') + thisval = (glui32)garglist[gargnum].sch; + else if (*cx == 'n') + thisval = (glui32)garglist[gargnum].ch; + else + fatal_error("Illegal format string."); + } + gargnum++; + cx++; + break; + case 'S': + if (garglist[gargnum].charstr) + ReleaseVMString(garglist[gargnum].charstr); + gargnum++; + break; +#ifdef GLK_MODULE_UNICODE + case 'U': + if (garglist[gargnum].unicharstr) + ReleaseVMUstring(garglist[gargnum].unicharstr); + gargnum++; + break; +#endif /* GLK_MODULE_UNICODE */ + default: + fatal_error("Illegal format string."); + break; + } + + if (isreturn) { + *(splot->retval) = thisval; + } + else if (depth > 0) { + /* Definitely not isref or isarray. */ + if (subpassout) + WriteStructField(subaddress, ix, thisval); + } + else if (isref) { + if (passout) + WriteMemory(varglist[ix], thisval); + } + } + } + else { + /* We got a null reference, so we have to skip the format element. */ + if (typeclass == '[') { + int numsubwanted, refdepth; + numsubwanted = 0; + while (*cx >= '0' && *cx <= '9') { + numsubwanted = 10 * numsubwanted + (*cx - '0'); + cx++; + } + refdepth = 1; + while (refdepth > 0) { + if (*cx == '[') + refdepth++; + else if (*cx == ']') + refdepth--; + cx++; + } + } + else if (typeclass == 'S' || typeclass == 'U') { + /* leave it */ + } + else { + cx++; + } + } + } + + if (depth > 0) { + if (*cx != ']') + fatal_error("Illegal format string."); + cx++; + } + else { + if (*cx != ':' && *cx != '\0') + fatal_error("Illegal format string."); + } + + *proto = cx; + *argnumptr = gargnum; +} + +/* find_stream_by_id(): + This is used by some interpreter code which has to, well, find a Glk + stream given its ID. +*/ +strid_t find_stream_by_id(glui32 objid) +{ + if (!objid) + return NULL; + + /* Recall that class 1 ("b") is streams. */ + return classes_get(1, objid); +} + +/* Build a hash table to hold a set of Glk objects. */ +static classtable_t *new_classtable(glui32 firstid) +{ + int ix; + classtable_t *ctab = (classtable_t *)glulx_malloc(sizeof(classtable_t)); + if (!ctab) + return NULL; + + for (ix=0; ixbucket[ix] = NULL; + + ctab->lastid = firstid; + + return ctab; +} + +/* Find a Glk object in the appropriate hash table. */ +static void *classes_get(int classid, glui32 objid) +{ + classtable_t *ctab; + classref_t *cref; + if (classid < 0 || classid >= num_classes) + return NULL; + ctab = classes[classid]; + cref = ctab->bucket[objid % CLASSHASH_SIZE]; + for (; cref; cref = cref->next) { + if (cref->id == objid) + return cref->obj; + } + return NULL; +} + +/* Put a Glk object in the appropriate hash table. */ +static classref_t *classes_put(int classid, void *obj) +{ + int bucknum; + classtable_t *ctab; + classref_t *cref; + if (classid < 0 || classid >= num_classes) + return NULL; + ctab = classes[classid]; + cref = (classref_t *)glulx_malloc(sizeof(classref_t)); + if (!cref) + return NULL; + cref->obj = obj; + cref->id = ctab->lastid; + ctab->lastid++; + bucknum = cref->id % CLASSHASH_SIZE; + cref->bucknum = bucknum; + cref->next = ctab->bucket[bucknum]; + ctab->bucket[bucknum] = cref; + return cref; +} + +/* Delete a Glk object from the appropriate hash table. */ +static void classes_remove(int classid, void *obj) +{ + classtable_t *ctab; + classref_t *cref; + classref_t **crefp; + gidispatch_rock_t objrock; + if (classid < 0 || classid >= num_classes) + return; + ctab = classes[classid]; + objrock = gidispatch_get_objrock(obj, classid); + cref = objrock.ptr; + if (!cref) + return; + crefp = &(ctab->bucket[cref->bucknum]); + for (; *crefp; crefp = &((*crefp)->next)) { + if ((*crefp) == cref) { + *crefp = cref->next; + if (!cref->obj) { + nonfatal_warning("attempt to free NULL object!"); + } + cref->obj = NULL; + cref->id = 0; + cref->next = NULL; + glulx_free(cref); + return; + } + } + return; +} + +/* The object registration/unregistration callbacks that the library calls + to keep the hash tables up to date. */ + +static gidispatch_rock_t glulxe_classtable_register(void *obj, + glui32 objclass) +{ + classref_t *cref; + gidispatch_rock_t objrock; + cref = classes_put(objclass, obj); + objrock.ptr = cref; + return objrock; +} + +static void glulxe_classtable_unregister(void *obj, glui32 objclass, + gidispatch_rock_t objrock) +{ + classes_remove(objclass, obj); +} + +static glui32 *grab_temp_array(glui32 addr, glui32 len, int passin) +{ + arrayref_t *arref = NULL; + glui32 *arr = NULL; + glui32 ix, addr2; + + if (len) { + arr = (glui32 *)glulx_malloc(len * sizeof(glui32)); + arref = (arrayref_t *)glulx_malloc(sizeof(arrayref_t)); + if (!arr || !arref) + fatal_error("Unable to allocate space for array argument to Glk call."); + + arref->array = arr; + arref->addr = addr; + arref->elemsize = 4; + arref->retained = FALSE; + arref->len = len; + arref->next = arrays; + arrays = arref; + + if (passin) { + for (ix=0, addr2=addr; ixnext))) { + if ((*aptr)->array == arr) + break; + } + arref = *aptr; + if (!arref) + fatal_error("Unable to re-find array argument in Glk call."); + if (arref->addr != addr || arref->len != len) + fatal_error("Mismatched array argument in Glk call."); + + if (arref->retained) { + return; + } + + *aptr = arref->next; + arref->next = NULL; + + if (passout) { + for (ix=0, addr2=addr; ixnext))) { + if ((*aptr)->array == array) + break; + } + arref = *aptr; + if (!arref) + fatal_error("Unable to re-find array argument in Glk call."); + if (arref->elemsize != 4 || arref->len != len) + fatal_error("Mismatched array argument in Glk call."); + + arref->retained = TRUE; + + rock.ptr = arref; + return rock; +} + +void glulxe_retained_unregister(void *array, glui32 len, + char *typecode, gidispatch_rock_t objrock) +{ + arrayref_t *arref = NULL; + arrayref_t **aptr; + glui32 ix, addr2, val; + + if (typecode[4] != 'I' || array == NULL) { + /* We only retain integer arrays. */ + return; + } + + for (aptr=(&arrays); (*aptr); aptr=(&((*aptr)->next))) { + if ((*aptr)->array == array) + break; + } + arref = *aptr; + if (!arref) + fatal_error("Unable to re-find array argument in Glk call."); + if (arref != objrock.ptr) + fatal_error("Mismatched array reference in Glk call."); + if (!arref->retained) + fatal_error("Unretained array reference in Glk call."); + if (arref->elemsize != 4 || arref->len != len) + fatal_error("Mismatched array argument in Glk call."); + + *aptr = arref->next; + arref->next = NULL; + + for (ix=0, addr2=arref->addr; ixlen; ix++, addr2+=4) { + val = ((glui32 *)array)[ix]; + MemW4(addr2, val); + } + glulx_free(array); + glulx_free(arref); +} + diff --git a/interpreters/glulxe/glulxe.h b/interpreters/glulxe/glulxe.h new file mode 100644 index 0000000..093ac6a --- /dev/null +++ b/interpreters/glulxe/glulxe.h @@ -0,0 +1,271 @@ +/* glulxe.h: Glulxe header file. + Designed by Andrew Plotkin + http://eblong.com/zarf/glulx/index.html +*/ + +#ifndef _GLULXE_H +#define _GLULXE_H + +/* We define our own TRUE and FALSE and NULL, because ANSI + is a strange world. */ +#ifndef TRUE +#define TRUE 1 +#endif +#ifndef FALSE +#define FALSE 0 +#endif +#ifndef NULL +#define NULL 0 +#endif + +/* You may have to edit the definition of glui16 to make sure it's really a + 16-bit unsigned integer type, and glsi16 to make sure it's really a + 16-bit signed integer type. If they're not, horrible things will happen. */ +typedef unsigned short glui16; +typedef signed short glsi16; + +/* Uncomment this definition to turn on memory-address checking. In + this mode, all reads and writes to main memory will be checked to + ensure they're in range. This is slower, but prevents malformed + game files from crashing the interpreter. */ +/* #define VERIFY_MEMORY_ACCESS (1) */ + +/* Uncomment this definition to turn on Glulx VM profiling. In this + mode, all function calls are timed, and the timing information is + written to a data file called "profile-raw". */ +/* #define VM_PROFILING (1) */ + +/* Some macros to read and write integers to memory, always in big-endian + format. */ +#define Read4(ptr) \ + ( (glui32)(((unsigned char *)(ptr))[0] << 24) \ + | (glui32)(((unsigned char *)(ptr))[1] << 16) \ + | (glui32)(((unsigned char *)(ptr))[2] << 8) \ + | (glui32)(((unsigned char *)(ptr))[3])) +#define Read2(ptr) \ + ( (glui16)(((unsigned char *)(ptr))[0] << 8) \ + | (glui16)(((unsigned char *)(ptr))[1])) +#define Read1(ptr) \ + ((unsigned char)(((unsigned char *)(ptr))[0])) + +#define Write4(ptr, vl) \ + (((ptr)[0] = (unsigned char)(((glui32)(vl)) >> 24)), \ + ((ptr)[1] = (unsigned char)(((glui32)(vl)) >> 16)), \ + ((ptr)[2] = (unsigned char)(((glui32)(vl)) >> 8)), \ + ((ptr)[3] = (unsigned char)(((glui32)(vl))))) +#define Write2(ptr, vl) \ + (((ptr)[0] = (unsigned char)(((glui32)(vl)) >> 8)), \ + ((ptr)[1] = (unsigned char)(((glui32)(vl))))) +#define Write1(ptr, vl) \ + (((unsigned char *)(ptr))[0] = (vl)) + +#if VERIFY_MEMORY_ACCESS +#define Verify(adr, ln) verify_address(adr, ln) +#else +#define Verify(adr, ln) (0) +#endif /* VERIFY_MEMORY_ACCESS */ + +#define Mem1(adr) (Verify(adr, 1), Read1(memmap+(adr))) +#define Mem2(adr) (Verify(adr, 2), Read2(memmap+(adr))) +#define Mem4(adr) (Verify(adr, 4), Read4(memmap+(adr))) +#define MemW1(adr, vl) (Verify(adr, 1), Write1(memmap+(adr), (vl))) +#define MemW2(adr, vl) (Verify(adr, 2), Write2(memmap+(adr), (vl))) +#define MemW4(adr, vl) (Verify(adr, 4), Write4(memmap+(adr), (vl))) + +/* Macros to access values on the stack. These *must* be used + with proper alignment! (That is, Stk4 and StkW4 must take + addresses which are multiples of four, etc.) If the alignment + rules are not followed, the program will see performance + degradation or even crashes, depending on the machine CPU. */ + +#define Stk1(adr) \ + (*((unsigned char *)(stack+(adr)))) +#define Stk2(adr) \ + (*((glui16 *)(stack+(adr)))) +#define Stk4(adr) \ + (*((glui32 *)(stack+(adr)))) + +#define StkW1(adr, vl) \ + (*((unsigned char *)(stack+(adr))) = (unsigned char)(vl)) +#define StkW2(adr, vl) \ + (*((glui16 *)(stack+(adr))) = (glui16)(vl)) +#define StkW4(adr, vl) \ + (*((glui32 *)(stack+(adr))) = (glui32)(vl)) + +/* Some useful structures. */ + +/* instruction_t: + Represents the list of operands to an instruction being executed. + (Yes, it's somewhat misnamed. Sorry.) We assume, for the indefinite + moment, that no opcode has more than 8 operands, and no opcode + has two "store" operands. +*/ +typedef struct instruction_struct { + glui32 desttype; + glui32 value[8]; +} instruction_t; + +/* operandlist_t: + Represents the operand structure of an opcode. +*/ +typedef struct operandlist_struct { + int num_ops; /* Number of operands for this opcode */ + int arg_size; /* Usually 4, but can be 1 or 2 */ + int *formlist; /* Array of values, either modeform_Load or modeform_Store */ +} operandlist_t; +#define modeform_Load (1) +#define modeform_Store (2) + +/* Some useful globals */ + +extern strid_t gamefile; +extern glui32 gamefile_start, gamefile_len; +extern char *init_err, *init_err2; + +extern unsigned char *memmap; +extern unsigned char *stack; + +extern glui32 ramstart; +extern glui32 endgamefile; +extern glui32 origendmem; +extern glui32 stacksize; +extern glui32 startfuncaddr; +extern glui32 checksum; +extern glui32 stackptr; +extern glui32 frameptr; +extern glui32 pc; +extern glui32 origstringtable; +extern glui32 stringtable; +extern glui32 valstackbase; +extern glui32 localsbase; +extern glui32 endmem; +extern glui32 protectstart, protectend; + +extern void (*stream_char_handler)(unsigned char ch); +extern void (*stream_unichar_handler)(glui32 ch); + +/* main.c */ +extern void fatal_error_handler(char *str, char *arg, int useval, glsi32 val); +extern void nonfatal_warning_handler(char *str, char *arg, int useval, glsi32 val); +#define fatal_error(s) (fatal_error_handler((s), NULL, FALSE, 0)) +#define fatal_error_2(s1, s2) (fatal_error_handler((s1), (s2), FALSE, 0)) +#define fatal_error_i(s, v) (fatal_error_handler((s), NULL, TRUE, (v))) +#define nonfatal_warning(s) (nonfatal_warning_handler((s), NULL, FALSE, 0)) +#define nonfatal_warning_2(s1, s2) (nonfatal_warning_handler((s1), (s2), FALSE, 0)) +#define nonfatal_warning_i(s, v) (nonfatal_warning_handler((s), NULL, TRUE, (v))) + +/* files.c */ +extern int is_gamefile_valid(void); +extern int locate_gamefile(int isblorb); + +/* vm.c */ +extern void setup_vm(void); +extern void finalize_vm(void); +extern void vm_restart(void); +extern glui32 change_memsize(glui32 newlen, int internal); +extern glui32 *pop_arguments(glui32 count, glui32 addr); +extern void verify_address(glui32 addr, glui32 count); + +/* exec.c */ +extern void execute_loop(void); + +/* operand.c */ +extern operandlist_t *fast_operandlist[0x80]; +extern void init_operands(void); +extern operandlist_t *lookup_operandlist(glui32 opcode); +extern void parse_operands(instruction_t *inst, operandlist_t *oplist); +extern void store_operand(glui32 desttype, glui32 destaddr, glui32 storeval); +extern void store_operand_s(glui32 desttype, glui32 destaddr, glui32 storeval); +extern void store_operand_b(glui32 desttype, glui32 destaddr, glui32 storeval); + +/* funcs.c */ +extern void enter_function(glui32 addr, glui32 argc, glui32 *argv); +extern void leave_function(void); +extern void push_callstub(glui32 desttype, glui32 destaddr); +extern void pop_callstub(glui32 returnvalue); +extern glui32 pop_callstub_string(int *bitnum); + +/* string.c */ +extern void stream_num(glsi32 val, int inmiddle, int charnum); +extern void stream_string(glui32 addr, int inmiddle, int bitnum); +extern glui32 stream_get_table(void); +extern void stream_set_table(glui32 addr); +extern void stream_get_iosys(glui32 *mode, glui32 *rock); +extern void stream_set_iosys(glui32 mode, glui32 rock); +extern char *make_temp_string(glui32 addr); +extern glui32 *make_temp_ustring(glui32 addr); +extern void free_temp_string(char *str); +extern void free_temp_ustring(glui32 *str); + +/* heap.c */ +extern void heap_clear(void); +extern int heap_is_active(void); +extern glui32 heap_get_start(void); +extern glui32 heap_alloc(glui32 len); +extern void heap_free(glui32 addr); +extern int heap_get_summary(glui32 *valcount, glui32 **summary); +extern int heap_apply_summary(glui32 valcount, glui32 *summary); +extern void heap_sanity_check(void); + +/* serial.c */ +extern int init_serial(void); +extern glui32 perform_save(strid_t str); +extern glui32 perform_restore(strid_t str); +extern glui32 perform_saveundo(void); +extern glui32 perform_restoreundo(void); +extern glui32 perform_verify(void); + +/* search.c */ +extern glui32 linear_search(glui32 key, glui32 keysize, + glui32 start, glui32 structsize, glui32 numstructs, + glui32 keyoffset, glui32 options); +extern glui32 binary_search(glui32 key, glui32 keysize, + glui32 start, glui32 structsize, glui32 numstructs, + glui32 keyoffset, glui32 options); +extern glui32 linked_search(glui32 key, glui32 keysize, + glui32 start, glui32 keyoffset, glui32 nextoffset, + glui32 options); + +/* osdepend.c */ +extern void *glulx_malloc(glui32 len); +extern void *glulx_realloc(void *ptr, glui32 len); +extern void glulx_free(void *ptr); +extern void glulx_setrandom(glui32 seed); +extern glui32 glulx_random(void); +extern void glulx_sort(void *addr, int count, int size, + int (*comparefunc)(void *p1, void *p2)); + +/* gestalt.c */ +extern glui32 do_gestalt(glui32 val, glui32 val2); + +/* glkop.c */ +extern int init_dispatch(void); +extern glui32 perform_glk(glui32 funcnum, glui32 numargs, glui32 *arglist); +extern strid_t find_stream_by_id(glui32 objid); + +/* profile.c */ +extern int init_profile(void); +#if VM_PROFILING +extern glui32 profile_opcount; +#define profile_tick() (profile_opcount++) +extern void profile_in(glui32 addr, int accel); +extern void profile_out(void); +extern void profile_fail(char *reason); +extern void profile_quit(void); +#else /* VM_PROFILING */ +#define profile_tick() (0) +#define profile_in(addr, accel) (0) +#define profile_out() (0) +#define profile_fail(reason) (0) +#define profile_quit() (0) +#endif /* VM_PROFILING */ + +/* accel.c */ +typedef glui32 (*acceleration_func)(glui32 argc, glui32 *argv); +extern void init_accel(void); +extern acceleration_func accel_find_func(glui32 index); +extern acceleration_func accel_get_func(glui32 addr); +extern void accel_set_func(glui32 index, glui32 addr); +extern void accel_set_param(glui32 index, glui32 val); + +#endif /* _GLULXE_H */ diff --git a/interpreters/glulxe/heap.c b/interpreters/glulxe/heap.c new file mode 100644 index 0000000..ea5bf24 --- /dev/null +++ b/interpreters/glulxe/heap.c @@ -0,0 +1,481 @@ +/* heap.c: Glulxe code related to the dynamic allocation heap. + Designed by Andrew Plotkin + http://eblong.com/zarf/glulx/index.html +*/ + +#include "glk.h" +#include "glulxe.h" + +typedef struct heapblock_struct { + glui32 addr; + glui32 len; + int isfree; + struct heapblock_struct *next; + struct heapblock_struct *prev; +} heapblock_t; + +static glui32 heap_start = 0; /* zero for inactive heap */ +static int alloc_count = 0; + +/* The heap_head/heap_tail is a doubly-linked list of blocks, both + free and allocated. It is kept in address order. It should be + complete -- that is, the first block starts at heap_start, and each + block ends at the beginning of the next block, until the last one, + which ends at endmem. + + (Heap_start is never the same as end_mem; if there is no heap space, + then the heap is inactive and heap_start is zero.) + + Adjacent free blocks may be merged at heap_alloc() time. + + ### To make alloc more efficient, we could keep a separate + free-list. To make free more efficient, we could keep a hash + table of allocations. + */ +static heapblock_t *heap_head = NULL; +static heapblock_t *heap_tail = NULL; + +/* heap_clear(): + Set the heap state to inactive, and free the block lists. This is + called when the game starts or restarts. +*/ +void heap_clear() +{ + while (heap_head) { + heapblock_t *blo = heap_head; + heap_head = blo->next; + blo->next = NULL; + blo->prev = NULL; + glulx_free(blo); + } + heap_tail = NULL; + + if (heap_start) { + glui32 res = change_memsize(heap_start, TRUE); + if (res) + fatal_error_i("Unable to revert memory size when deactivating heap.", + heap_start); + } + + heap_start = 0; + alloc_count = 0; + /* heap_sanity_check(); */ +} + +/* heap_is_active(): + Returns whether the heap is active. +*/ +int heap_is_active() { + return (heap_start != 0); +} + +/* heap_get_start(): + Returns the start address of the heap, or 0 if the heap is not active. + */ +glui32 heap_get_start() { + return heap_start; +} + +/* heap_alloc(): + Allocate a block. If necessary, activate the heap and/or extend memory. + This may not be available at all; #define FIXED_MEMSIZE if you want + the interpreter to unconditionally refuse. + Returns the memory address of the block, or 0 if the operation failed. +*/ +glui32 heap_alloc(glui32 len) +{ + heapblock_t *blo, *newblo; + +#ifdef FIXED_MEMSIZE + return 0; +#else /* FIXED_MEMSIZE */ + + if (len <= 0) + fatal_error("Heap allocation length must be positive."); + + blo = heap_head; + while (blo) { + if (blo->isfree && blo->len >= len) + break; + + if (!blo->isfree) { + blo = blo->next; + continue; + } + + if (!blo->next || !blo->next->isfree) { + blo = blo->next; + continue; + } + + /* This is a free block, but the next block in the list is also + free, so we "advance" by merging rather than by going to + blo->next. */ + newblo = blo->next; + blo->len += newblo->len; + if (newblo->next) { + blo->next = newblo->next; + newblo->next->prev = blo; + } + else { + blo->next = NULL; + heap_tail = blo; + } + newblo->next = NULL; + newblo->prev = NULL; + glulx_free(newblo); + newblo = NULL; + continue; + } + + if (!blo) { + /* No free area is visible on the list. Try extending memory. How + much? Double the heap size, or by 256 bytes, or by the memory + length requested -- whichever is greatest. */ + glui32 res; + glui32 extension; + glui32 oldendmem = endmem; + + extension = 0; + if (heap_start) + extension = endmem - heap_start; + if (extension < len) + extension = len; + if (extension < 256) + extension = 256; + /* And it must be rounded up to a multiple of 256. */ + extension = (extension + 0xFF) & (~(glui32)0xFF); + + res = change_memsize(endmem+extension, TRUE); + if (res) + return 0; + + /* If we just started the heap, note that. */ + if (heap_start == 0) + heap_start = oldendmem; + + if (heap_tail && heap_tail->isfree) { + /* Append the new space to the last block. */ + blo = heap_tail; + blo->len += extension; + } + else { + /* Append the new space to the block list, as a new block. */ + newblo = glulx_malloc(sizeof(heapblock_t)); + if (!newblo) + fatal_error("Unable to allocate record for heap block."); + newblo->addr = oldendmem; + newblo->len = extension; + newblo->isfree = TRUE; + newblo->next = NULL; + newblo->prev = NULL; + + if (!heap_tail) { + heap_head = newblo; + heap_tail = newblo; + } + else { + blo = heap_tail; + heap_tail = newblo; + blo->next = newblo; + newblo->prev = blo; + } + + blo = newblo; + newblo = NULL; + } + + /* and continue forwards, using this new block (blo). */ + } + + /* Something strange happened. */ + if (!blo || !blo->isfree || blo->len < len) + return 0; + + /* We now have a free block of size len or longer. */ + + if (blo->len == len) { + blo->isfree = FALSE; + } + else { + newblo = glulx_malloc(sizeof(heapblock_t)); + if (!newblo) + fatal_error("Unable to allocate record for heap block."); + newblo->isfree = TRUE; + newblo->addr = blo->addr + len; + newblo->len = blo->len - len; + blo->len = len; + blo->isfree = FALSE; + newblo->next = blo->next; + if (newblo->next) + newblo->next->prev = newblo; + newblo->prev = blo; + blo->next = newblo; + if (heap_tail == blo) + heap_tail = newblo; + } + + alloc_count++; + /* heap_sanity_check(); */ + return blo->addr; + +#endif /* FIXED_MEMSIZE */ +} + +/* heap_free(): + Free a heap block. If necessary, deactivate the heap. +*/ +void heap_free(glui32 addr) +{ + heapblock_t *blo; + + for (blo = heap_head; blo; blo = blo->next) { + if (blo->addr == addr) + break; + }; + if (!blo || blo->isfree) + fatal_error_i("Attempt to free unallocated address from heap.", addr); + + blo->isfree = TRUE; + alloc_count--; + if (alloc_count <= 0) { + heap_clear(); + } + + /* heap_sanity_check(); */ +} + +/* heap_get_summary(): + Create an array of words, in the VM serialization format: + + heap_start + alloc_count + addr of first block + len of first block + ... + + (Note that these are glui32 values -- native byte ordering. Also, + the blocks will be in address order, which is a stricter guarantee + than the VM specifies; that'll help in heap_apply_summary().) + + If the heap is inactive, store NULL. Return 0 for success; + otherwise, the operation failed. + + The array returned in summary must be freed with glulx_free() after + the caller uses it. +*/ +int heap_get_summary(glui32 *valcount, glui32 **summary) +{ + glui32 *arr, len, pos, lx; + heapblock_t *blo; + + *valcount = 0; + *summary = NULL; + + if (heap_start == 0) + return 0; + + len = 2 + 2*alloc_count; + arr = glulx_malloc(len * sizeof(glui32)); + if (!arr) + return 1; + + pos = 0; + arr[pos++] = heap_start; + arr[pos++] = alloc_count; + + for (blo = heap_head; blo; blo = blo->next) { + if (blo->isfree) + continue; + arr[pos++] = blo->addr; + arr[pos++] = blo->len; + } + + if (pos != len) + fatal_error("Wrong number of active blocks in heap"); + + *valcount = len; + *summary = arr; + return 0; +} + +/* heap_apply_summary(): + Given an array of words in the above format, set up the heap to + contain it. As noted above, the caller must ensure that the blocks + are in address order. When this is called, the heap must be + inactive. + + Return 0 for success. Otherwise the operation failed (and, most + likely, caused a fatal error). +*/ +int heap_apply_summary(glui32 valcount, glui32 *summary) +{ + glui32 lx, jx, lastend; + + if (heap_start) + fatal_error("Heap active when heap_apply_summary called"); + + if (valcount == 0 || summary == NULL) + return 0; + if (valcount == 2 && summary[0] == 0 && summary[1] == 0) + return 0; + +#ifdef FIXED_MEMSIZE + return 1; +#else /* FIXED_MEMSIZE */ + + lx = 0; + heap_start = summary[lx++]; + alloc_count = summary[lx++]; + + for (jx=lx; jx+2= summary[jx+2]) + fatal_error("Heap block summary is out of order."); + } + + lastend = heap_start; + + while (lx < valcount || lastend < endmem) { + heapblock_t *blo; + + blo = glulx_malloc(sizeof(heapblock_t)); + if (!blo) + fatal_error("Unable to allocate record for heap block."); + + if (lx >= valcount) { + blo->addr = lastend; + blo->len = endmem - lastend; + blo->isfree = TRUE; + } + else { + if (lastend < summary[lx]) { + blo->addr = lastend; + blo->len = summary[lx] - lastend; + blo->isfree = TRUE; + } + else { + blo->addr = summary[lx++]; + blo->len = summary[lx++]; + blo->isfree = FALSE; + } + } + + blo->prev = NULL; + blo->next = NULL; + + if (!heap_head) { + heap_head = blo; + heap_tail = blo; + } + else { + heap_tail->next = blo; + blo->prev = heap_tail; + heap_tail = blo; + } + + lastend = blo->addr + blo->len; + } + + /* heap_sanity_check(); */ + + return 0; +#endif /* FIXED_MEMSIZE */ +} + +#if 0 +#include + +static void heap_dump(void); + +/* heap_dump(): + Print out the heap list (using printf). This exists for debugging, + which is why it's ifdeffed out. +*/ +static void heap_dump() +{ + heapblock_t *blo; + + if (heap_start == 0) { + printf("# Heap is inactive.\n"); + return; + } + + printf("# Heap active: %d outstanding blocks\n", alloc_count); + printf("# Heap start: %ld\n", heap_start); + + for (blo = heap_head; blo; blo = blo->next) { + printf("# %s at %ld..%ld, len %ld\n", + (blo->isfree ? " free" : "*used"), + blo->addr, blo->addr+blo->len, blo->len); + } + + printf("# Heap end: %ld\n", endmem); +} + +/* heap_sanity_check(): + Check the validity of the heap. Throw a fatal error if anything is + wrong. +*/ +void heap_sanity_check() +{ + heapblock_t *blo, *last; + int livecount; + + heap_dump(); + + if (heap_start == 0) { + if (heap_head || heap_tail) + fatal_error("Heap sanity: nonempty list when heap is inactive."); + if (alloc_count) + fatal_error_i("Heap sanity: outstanding blocks when heap is inactive.", + alloc_count); + return; + } + +#ifdef FIXED_MEMSIZE + fatal_error("Heap sanity: heap is active, but interpreter is compiled with no allocation."); +#endif /* FIXED_MEMSIZE */ + + /* When the heap is active there may, briefly, be no heapblocks on the + list. */ + + last = NULL; + livecount = 0; + + for (blo = heap_head; blo; last = blo, blo = blo->next) { + glui32 lastend; + + if (blo->prev != last) + fatal_error("Heap sanity: prev pointer mismatch."); + if (!last) + lastend = heap_start; + else + lastend = last->addr + last->len; + if (lastend != blo->addr) + fatal_error("Heap sanity: addr+len mismatch."); + + if (!blo->isfree) + livecount++; + } + + if (!last) { + if (heap_start != endmem) + fatal_error_i("Heap sanity: empty list, but endmem is not heap start.", + heap_start); + if (heap_tail) + fatal_error("Heap sanity: empty list, but heap tail exists."); + } + else { + if (last->addr + last->len != endmem) + fatal_error_i("Heap sanity: last block does not end at endmem.", + last->addr + last->len); + if (last != heap_tail) + fatal_error("Heap sanity: heap tail points wrong."); + } + + if (livecount != alloc_count) + fatal_error_i("Heap sanity: wrong number of live blocks.", livecount); +} + +#endif /* 0 */ + diff --git a/interpreters/glulxe/main.c b/interpreters/glulxe/main.c new file mode 100644 index 0000000..63aba89 --- /dev/null +++ b/interpreters/glulxe/main.c @@ -0,0 +1,163 @@ +/* main.c: Glulxe top-level code. + Designed by Andrew Plotkin + http://eblong.com/zarf/glulx/index.html +*/ + +#include "glk.h" +#include "glulxe.h" + +strid_t gamefile = NULL; /* The stream containing the Glulx file. */ +glui32 gamefile_start = 0; /* The position within the stream. (This will not + be zero if the Glulx file is a chunk inside a Blorb archive.) */ +glui32 gamefile_len = 0; /* The length within the stream. */ +char *init_err = NULL; +char *init_err2 = NULL; + +static winid_t get_error_win(void); +static void stream_hexnum(glsi32 val); + +/* glk_main(): + The top-level routine. This does everything, and consequently is + very simple. +*/ +void glk_main() +{ + if (init_err) { + fatal_error_2(init_err, init_err2); + return; + } + + if (!is_gamefile_valid()) { + /* The fatal error has already been displayed. */ + return; + } + + glulx_setrandom(0); + if (!init_dispatch()) { + return; + } + if (!init_profile()) { + return; + } + + setup_vm(); + execute_loop(); + finalize_vm(); + + profile_quit(); + glk_exit(); +} + +/* get_error_win(): + Return a window in which to display errors. The first time this is called, + it creates a new window; after that it returns the window it first + created. +*/ +static winid_t get_error_win() +{ + static winid_t errorwin = NULL; + + if (!errorwin) { + winid_t rootwin = glk_window_get_root(); + if (!rootwin) { + errorwin = glk_window_open(0, 0, 0, wintype_TextBuffer, 1); + } + else { + errorwin = glk_window_open(rootwin, winmethod_Below | winmethod_Fixed, + 3, wintype_TextBuffer, 0); + } + if (!errorwin) + errorwin = rootwin; + } + + return errorwin; +} + +/* fatal_error_handler(): + Display an error in the error window, and then exit. +*/ +void fatal_error_handler(char *str, char *arg, int useval, glsi32 val) +{ + winid_t win = get_error_win(); + if (win) { + glk_set_window(win); + glk_put_string("Glulxe fatal error: "); + glk_put_string(str); + if (arg || useval) { + glk_put_string(" ("); + if (arg) + glk_put_string(arg); + if (arg && useval) + glk_put_string(" "); + if (useval) + stream_hexnum(val); + glk_put_string(")"); + } + glk_put_string("\n"); + } + glk_exit(); +} + +/* nonfatal_warning_handler(): + Display a warning in the error window, and then continue. +*/ +void nonfatal_warning_handler(char *str, char *arg, int useval, glsi32 val) +{ + winid_t win = get_error_win(); + if (win) { + strid_t oldstr = glk_stream_get_current(); + glk_set_window(win); + glk_put_string("Glulxe warning: "); + glk_put_string(str); + if (arg || useval) { + glk_put_string(" ("); + if (arg) + glk_put_string(arg); + if (arg && useval) + glk_put_string(" "); + if (useval) + stream_hexnum(val); + glk_put_string(")"); + } + glk_put_string("\n"); + glk_stream_set_current(oldstr); + } +} + +/* stream_hexnum(): + Write a signed integer to the current Glk output stream. +*/ +static void stream_hexnum(glsi32 val) +{ + char buf[16]; + glui32 ival; + int ix; + + if (val == 0) { + glk_put_char('0'); + return; + } + + if (val < 0) { + glk_put_char('-'); + ival = -val; + } + else { + ival = val; + } + + ix = 0; + while (ival != 0) { + buf[ix] = (ival % 16) + '0'; + if (buf[ix] > '9') + buf[ix] += ('A' - ('9' + 1)); + ix++; + ival /= 16; + } + + while (ix) { + ix--; + glk_put_char(buf[ix]); + } +} + diff --git a/interpreters/glulxe/opcodes.h b/interpreters/glulxe/opcodes.h new file mode 100644 index 0000000..8da99d2 --- /dev/null +++ b/interpreters/glulxe/opcodes.h @@ -0,0 +1,113 @@ +/* opcodes.h: The big list of opcode values for Glulxe. + Designed by Andrew Plotkin + http://eblong.com/zarf/glulx/index.html +*/ + +#ifndef _OPCODES_H +#define _OPCODES_H + +#define op_nop (0x00) + +#define op_add (0x10) +#define op_sub (0x11) +#define op_mul (0x12) +#define op_div (0x13) +#define op_mod (0x14) +#define op_neg (0x15) +#define op_bitand (0x18) +#define op_bitor (0x19) +#define op_bitxor (0x1A) +#define op_bitnot (0x1B) +#define op_shiftl (0x1C) +#define op_sshiftr (0x1D) +#define op_ushiftr (0x1E) + +#define op_jump (0x20) +#define op_jz (0x22) +#define op_jnz (0x23) +#define op_jeq (0x24) +#define op_jne (0x25) +#define op_jlt (0x26) +#define op_jge (0x27) +#define op_jgt (0x28) +#define op_jle (0x29) +#define op_jltu (0x2A) +#define op_jgeu (0x2B) +#define op_jgtu (0x2C) +#define op_jleu (0x2D) + +#define op_call (0x30) +#define op_return (0x31) +#define op_catch (0x32) +#define op_throw (0x33) +#define op_tailcall (0x34) + +#define op_copy (0x40) +#define op_copys (0x41) +#define op_copyb (0x42) +#define op_sexs (0x44) +#define op_sexb (0x45) +#define op_aload (0x48) +#define op_aloads (0x49) +#define op_aloadb (0x4A) +#define op_aloadbit (0x4B) +#define op_astore (0x4C) +#define op_astores (0x4D) +#define op_astoreb (0x4E) +#define op_astorebit (0x4F) + +#define op_stkcount (0x50) +#define op_stkpeek (0x51) +#define op_stkswap (0x52) +#define op_stkroll (0x53) +#define op_stkcopy (0x54) + +#define op_streamchar (0x70) +#define op_streamnum (0x71) +#define op_streamstr (0x72) +#define op_streamunichar (0x73) + +#define op_gestalt (0x100) +#define op_debugtrap (0x101) +#define op_getmemsize (0x102) +#define op_setmemsize (0x103) +#define op_jumpabs (0x104) + +#define op_random (0x110) +#define op_setrandom (0x111) + +#define op_quit (0x120) +#define op_verify (0x121) +#define op_restart (0x122) +#define op_save (0x123) +#define op_restore (0x124) +#define op_saveundo (0x125) +#define op_restoreundo (0x126) +#define op_protect (0x127) + +#define op_glk (0x130) + +#define op_getstringtbl (0x140) +#define op_setstringtbl (0x141) +#define op_getiosys (0x148) +#define op_setiosys (0x149) + +#define op_linearsearch (0x150) +#define op_binarysearch (0x151) +#define op_linkedsearch (0x152) + +#define op_callf (0x160) +#define op_callfi (0x161) +#define op_callfii (0x162) +#define op_callfiii (0x163) + +#define op_mzero (0x170) +#define op_mcopy (0x171) +#define op_malloc (0x178) +#define op_mfree (0x179) + +#define op_accelfunc (0x180) +#define op_accelparam (0x181) + +#endif /* _OPCODES_H */ + diff --git a/interpreters/glulxe/operand.c b/interpreters/glulxe/operand.c new file mode 100644 index 0000000..bb5a7a3 --- /dev/null +++ b/interpreters/glulxe/operand.c @@ -0,0 +1,580 @@ +/* operand.c: Glulxe code for instruction operands, reading and writing. + Designed by Andrew Plotkin + http://eblong.com/zarf/glulx/index.html +*/ + +#include "glk.h" +#include "glulxe.h" +#include "opcodes.h" + +/* ### We could save a few cycles per operand by generating a function for + each operandlist type. */ + +/* fast_operandlist[]: + This is a handy array in which to look up operandlists quickly. + It stores the operandlists for the first 128 opcodes, which are + the ones used most frequently. +*/ +operandlist_t *fast_operandlist[0x80]; + +/* The actual immutable structures which lookup_operandlist() + returns. */ +static operandlist_t list_none = { 0, 4, NULL }; + +static int array_S[1] = { modeform_Store }; +static operandlist_t list_S = { 1, 4, array_S }; +static int array_LS[2] = { modeform_Load, modeform_Store }; +static operandlist_t list_LS = { 2, 4, array_LS }; +static int array_LLS[3] = { modeform_Load, modeform_Load, modeform_Store }; +static operandlist_t list_LLS = { 3, 4, array_LLS }; +static int array_LLLS[4] = { modeform_Load, modeform_Load, modeform_Load, modeform_Store }; +static operandlist_t list_LLLS = { 4, 4, array_LLLS }; +static int array_LLLLS[5] = { modeform_Load, modeform_Load, modeform_Load, modeform_Load, modeform_Store }; +static operandlist_t list_LLLLS = { 5, 4, array_LLLLS }; +static int array_LLLLLS[6] = { modeform_Load, modeform_Load, modeform_Load, modeform_Load, modeform_Load, modeform_Store }; +static operandlist_t list_LLLLLS = { 6, 4, array_LLLLLS }; +static int array_LLLLLLS[7] = { modeform_Load, modeform_Load, modeform_Load, modeform_Load, modeform_Load, modeform_Load, modeform_Store }; +static operandlist_t list_LLLLLLS = { 7, 4, array_LLLLLLS }; +static int array_LLLLLLLS[8] = { modeform_Load, modeform_Load, modeform_Load, modeform_Load, modeform_Load, modeform_Load, modeform_Load, modeform_Store }; +static operandlist_t list_LLLLLLLS = { 8, 4, array_LLLLLLLS }; + +static int array_L[1] = { modeform_Load }; +static operandlist_t list_L = { 1, 4, array_L }; +static int array_LL[2] = { modeform_Load, modeform_Load }; +static operandlist_t list_LL = { 2, 4, array_LL }; +static int array_LLL[3] = { modeform_Load, modeform_Load, modeform_Load }; +static operandlist_t list_LLL = { 3, 4, array_LLL }; +static operandlist_t list_2LS = { 2, 2, array_LS }; +static operandlist_t list_1LS = { 2, 1, array_LS }; +static int array_SL[2] = { modeform_Store, modeform_Load }; +static operandlist_t list_SL = { 2, 4, array_SL }; +static int array_SS[2] = { modeform_Store, modeform_Store }; +static operandlist_t list_SS = { 2, 4, array_SS }; + +/* init_operands(): + Set up the fast-lookup array of operandlists. This is called just + once, when the terp starts up. +*/ +void init_operands() +{ + int ix; + for (ix=0; ix<0x80; ix++) + fast_operandlist[ix] = lookup_operandlist(ix); +} + +/* lookup_operandlist(): + Return the operandlist for a given opcode. For opcodes in the range + 00..7F, it's faster to use the array fast_operandlist[]. +*/ +operandlist_t *lookup_operandlist(glui32 opcode) +{ + switch (opcode) { + case op_nop: + return &list_none; + + case op_add: + case op_sub: + case op_mul: + case op_div: + case op_mod: + case op_bitand: + case op_bitor: + case op_bitxor: + case op_shiftl: + case op_sshiftr: + case op_ushiftr: + return &list_LLS; + + case op_neg: + case op_bitnot: + return &list_LS; + + case op_jump: + case op_jumpabs: + return &list_L; + case op_jz: + case op_jnz: + return &list_LL; + case op_jeq: + case op_jne: + case op_jlt: + case op_jge: + case op_jgt: + case op_jle: + case op_jltu: + case op_jgeu: + case op_jgtu: + case op_jleu: + return &list_LLL; + + case op_call: + return &list_LLS; + case op_return: + return &list_L; + case op_catch: + return &list_SL; + case op_throw: + return &list_LL; + case op_tailcall: + return &list_LL; + + case op_sexb: + case op_sexs: + return &list_LS; + + case op_copy: + return &list_LS; + case op_copys: + return &list_2LS; + case op_copyb: + return &list_1LS; + case op_aload: + case op_aloads: + case op_aloadb: + case op_aloadbit: + return &list_LLS; + case op_astore: + case op_astores: + case op_astoreb: + case op_astorebit: + return &list_LLL; + + case op_stkcount: + return &list_S; + case op_stkpeek: + return &list_LS; + case op_stkswap: + return &list_none; + case op_stkroll: + return &list_LL; + case op_stkcopy: + return &list_L; + + case op_streamchar: + case op_streamunichar: + case op_streamnum: + case op_streamstr: + return &list_L; + case op_getstringtbl: + return &list_S; + case op_setstringtbl: + return &list_L; + case op_getiosys: + return &list_SS; + case op_setiosys: + return &list_LL; + + case op_random: + return &list_LS; + case op_setrandom: + return &list_L; + + case op_verify: + return &list_S; + case op_restart: + return &list_none; + case op_save: + case op_restore: + return &list_LS; + case op_saveundo: + case op_restoreundo: + return &list_S; + case op_protect: + return &list_LL; + + case op_quit: + return &list_none; + + case op_gestalt: + return &list_LLS; + + case op_debugtrap: + return &list_L; + + case op_getmemsize: + return &list_S; + case op_setmemsize: + return &list_LS; + + case op_linearsearch: + return &list_LLLLLLLS; + case op_binarysearch: + return &list_LLLLLLLS; + case op_linkedsearch: + return &list_LLLLLLS; + + case op_glk: + return &list_LLS; + + case op_callf: + return &list_LS; + case op_callfi: + return &list_LLS; + case op_callfii: + return &list_LLLS; + case op_callfiii: + return &list_LLLLS; + + case op_mzero: + return &list_LL; + case op_mcopy: + return &list_LLL; + case op_malloc: + return &list_LS; + case op_mfree: + return &list_L; + + case op_accelfunc: + case op_accelparam: + return &list_LL; + + default: + return NULL; + } +} + +/* parse_operands(): + Read the list of operands of an instruction, and put the values + in inst. This assumes that the PC is at the beginning of the + operand mode list (right after an opcode number.) Upon return, + the PC will be at the beginning of the next instruction. +*/ +void parse_operands(instruction_t *inst, operandlist_t *oplist) +{ + int ix; + int numops = oplist->num_ops; + int argsize = oplist->arg_size; + glui32 modeaddr = pc; + int modeval; + + inst->desttype = 0; + + pc += (numops+1) / 2; + + for (ix=0; ix> 4) & 0x0F); + modeaddr++; + } + + if (oplist->formlist[ix] == modeform_Load) { + + switch (mode) { + + case 8: /* pop off stack */ + if (stackptr < valstackbase+4) { + fatal_error("Stack underflow in operand."); + } + stackptr -= 4; + value = Stk4(stackptr); + break; + + case 0: /* constant zero */ + value = 0; + break; + + case 1: /* one-byte constant */ + /* Sign-extend from 8 bits to 32 */ + value = (glsi32)(signed char)(Mem1(pc)); + pc++; + break; + + case 2: /* two-byte constant */ + /* Sign-extend the first byte from 8 bits to 32; the subsequent + byte must not be sign-extended. */ + value = (glsi32)(signed char)(Mem1(pc)); + pc++; + value = (value << 8) | (glui32)(Mem1(pc)); + pc++; + break; + + case 3: /* four-byte constant */ + /* Bytes must not be sign-extended. */ + value = Mem4(pc); + pc += 4; + break; + + case 15: /* main memory RAM, four-byte address */ + addr = Mem4(pc); + addr += ramstart; + pc += 4; + goto MainMemAddr; + + case 14: /* main memory RAM, two-byte address */ + addr = (glui32)Mem2(pc); + addr += ramstart; + pc += 2; + goto MainMemAddr; + + case 13: /* main memory RAM, one-byte address */ + addr = (glui32)(Mem1(pc)); + addr += ramstart; + pc++; + goto MainMemAddr; + + case 7: /* main memory, four-byte address */ + addr = Mem4(pc); + pc += 4; + goto MainMemAddr; + + case 6: /* main memory, two-byte address */ + addr = (glui32)Mem2(pc); + pc += 2; + goto MainMemAddr; + + case 5: /* main memory, one-byte address */ + addr = (glui32)(Mem1(pc)); + pc++; + /* fall through */ + + MainMemAddr: + /* cases 5, 6, 7, 13, 14, 15 all wind up here. */ + if (argsize == 4) { + value = Mem4(addr); + } + else if (argsize == 2) { + value = Mem2(addr); + } + else { + value = Mem1(addr); + } + break; + + case 11: /* locals, four-byte address */ + addr = Mem4(pc); + pc += 4; + goto LocalsAddr; + + case 10: /* locals, two-byte address */ + addr = (glui32)Mem2(pc); + pc += 2; + goto LocalsAddr; + + case 9: /* locals, one-byte address */ + addr = (glui32)(Mem1(pc)); + pc++; + /* fall through */ + + LocalsAddr: + /* cases 9, 10, 11 all wind up here. It's illegal for addr to not + be four-byte aligned, but we don't check this explicitly. + A "strict mode" interpreter probably should. It's also illegal + for addr to be less than zero or greater than the size of + the locals segment. */ + addr += localsbase; + if (argsize == 4) { + value = Stk4(addr); + } + else if (argsize == 2) { + value = Stk2(addr); + } + else { + value = Stk1(addr); + } + break; + + default: + fatal_error("Unknown addressing mode in load operand."); + } + + inst->value[ix] = value; + + } + else { /* modeform_Store */ + switch (mode) { + + case 0: /* discard value */ + inst->desttype = 0; + inst->value[ix] = 0; + break; + + case 8: /* push on stack */ + inst->desttype = 3; + inst->value[ix] = 0; + break; + + case 15: /* main memory RAM, four-byte address */ + addr = Mem4(pc); + addr += ramstart; + pc += 4; + goto WrMainMemAddr; + + case 14: /* main memory RAM, two-byte address */ + addr = (glui32)Mem2(pc); + addr += ramstart; + pc += 2; + goto WrMainMemAddr; + + case 13: /* main memory RAM, one-byte address */ + addr = (glui32)(Mem1(pc)); + addr += ramstart; + pc++; + goto WrMainMemAddr; + + case 7: /* main memory, four-byte address */ + addr = Mem4(pc); + pc += 4; + goto WrMainMemAddr; + + case 6: /* main memory, two-byte address */ + addr = (glui32)Mem2(pc); + pc += 2; + goto WrMainMemAddr; + + case 5: /* main memory, one-byte address */ + addr = (glui32)(Mem1(pc)); + pc++; + /* fall through */ + + WrMainMemAddr: + /* cases 5, 6, 7 all wind up here. */ + inst->desttype = 1; + inst->value[ix] = addr; + break; + + case 11: /* locals, four-byte address */ + addr = Mem4(pc); + pc += 4; + goto WrLocalsAddr; + + case 10: /* locals, two-byte address */ + addr = (glui32)Mem2(pc); + pc += 2; + goto WrLocalsAddr; + + case 9: /* locals, one-byte address */ + addr = (glui32)(Mem1(pc)); + pc++; + /* fall through */ + + WrLocalsAddr: + /* cases 9, 10, 11 all wind up here. It's illegal for addr to not + be four-byte aligned, but we don't check this explicitly. + A "strict mode" interpreter probably should. It's also illegal + for addr to be less than zero or greater than the size of + the locals segment. */ + inst->desttype = 2; + /* We don't add localsbase here; the store address for desttype 2 + is relative to the current locals segment, not an absolute + stack position. */ + inst->value[ix] = addr; + break; + + case 1: + case 2: + case 3: + fatal_error("Constant addressing mode in store operand."); + + default: + fatal_error("Unknown addressing mode in store operand."); + } + } + } +} + +/* store_operand(): + Store a result value, according to the desttype and destaddress given. + This is usually used to store the result of an opcode, but it's also + used by any code that pulls a call-stub off the stack. +*/ +void store_operand(glui32 desttype, glui32 destaddr, glui32 storeval) +{ + switch (desttype) { + + case 0: /* do nothing; discard the value. */ + return; + + case 1: /* main memory. */ + MemW4(destaddr, storeval); + return; + + case 2: /* locals. */ + destaddr += localsbase; + StkW4(destaddr, storeval); + return; + + case 3: /* push on stack. */ + if (stackptr+4 > stacksize) { + fatal_error("Stack overflow in store operand."); + } + StkW4(stackptr, storeval); + stackptr += 4; + return; + + default: + fatal_error("Unknown destination type in store operand."); + + } +} + +void store_operand_s(glui32 desttype, glui32 destaddr, glui32 storeval) +{ + storeval &= 0xFFFF; + + switch (desttype) { + + case 0: /* do nothing; discard the value. */ + return; + + case 1: /* main memory. */ + MemW2(destaddr, storeval); + return; + + case 2: /* locals. */ + destaddr += localsbase; + StkW2(destaddr, storeval); + return; + + case 3: /* push on stack. A four-byte value is actually pushed. */ + if (stackptr+4 > stacksize) { + fatal_error("Stack overflow in store operand."); + } + StkW4(stackptr, storeval); + stackptr += 4; + return; + + default: + fatal_error("Unknown destination type in store operand."); + + } +} + +void store_operand_b(glui32 desttype, glui32 destaddr, glui32 storeval) +{ + storeval &= 0xFF; + + switch (desttype) { + + case 0: /* do nothing; discard the value. */ + return; + + case 1: /* main memory. */ + MemW1(destaddr, storeval); + return; + + case 2: /* locals. */ + destaddr += localsbase; + StkW1(destaddr, storeval); + return; + + case 3: /* push on stack. A four-byte value is actually pushed. */ + if (stackptr+4 > stacksize) { + fatal_error("Stack overflow in store operand."); + } + StkW4(stackptr, storeval); + stackptr += 4; + return; + + default: + fatal_error("Unknown destination type in store operand."); + + } +} diff --git a/interpreters/glulxe/osdepend.c b/interpreters/glulxe/osdepend.c new file mode 100644 index 0000000..8c720dd --- /dev/null +++ b/interpreters/glulxe/osdepend.c @@ -0,0 +1,195 @@ +/* osdepend.c: Glulxe platform-dependent code. + Designed by Andrew Plotkin + http://eblong.com/zarf/glulx/index.html +*/ + +#include "glk.h" +#include "glulxe.h" + +/* This file contains definitions for platform-dependent code. Since + Glk takes care of I/O, this is a short list -- memory allocation + and random numbers. + + The Makefile (or whatever) should define OS_UNIX, or some other + symbol. Code contributions welcome. +*/ + +#ifdef OS_UNIX + +#include +#include + +/* Allocate a chunk of memory. */ +void *glulx_malloc(glui32 len) +{ + return malloc(len); +} + +/* Resize a chunk of memory. This must follow ANSI rules: if the + size-change fails, this must return NULL, but the original chunk + must remain unchanged. */ +void *glulx_realloc(void *ptr, glui32 len) +{ + return realloc(ptr, len); +} + +/* Deallocate a chunk of memory. */ +void glulx_free(void *ptr) +{ + free(ptr); +} + +/* Set the random-number seed; zero means use as random a source as + possible. */ +void glulx_setrandom(glui32 seed) +{ + if (seed == 0) + seed = time(NULL); + srandom(seed); +} + +/* Return a random number in the range 0 to 2^32-1. */ +glui32 glulx_random() +{ + return random(); +} + +#endif /* OS_UNIX */ + +#ifdef OS_MAC + +/* The Glk library uses malloc/free liberally, so we might as well also. */ +#include + +/* Allocate a chunk of memory. */ +void *glulx_malloc(glui32 len) +{ + return malloc(len); +} + +/* Resize a chunk of memory. This must follow ANSI rules: if the + size-change fails, this must return NULL, but the original chunk + must remain unchanged. */ +void *glulx_realloc(void *ptr, glui32 len) +{ + return realloc(ptr, len); +} + +/* Deallocate a chunk of memory. */ +void glulx_free(void *ptr) +{ + free(ptr); +} + +#define COMPILE_RANDOM_CODE +static glui32 lo_random(void); +static void lo_seed_random(glui32 seed); + +/* Return a random number in the range 0 to 2^32-1. */ +glui32 glulx_random() +{ + return lo_random(); +} + +/* Set the random-number seed; zero means use as random a source as + possible. */ +void glulx_setrandom(glui32 seed) +{ + if (seed == 0) + seed = TickCount() ^ Random(); + lo_seed_random(seed); +} + +#endif /* OS_MAC */ + +#ifdef WIN32 + +#include +#include + +/* Allocate a chunk of memory. */ +void *glulx_malloc(glui32 len) +{ + return malloc(len); +} + +/* Resize a chunk of memory. This must follow ANSI rules: if the + size-change fails, this must return NULL, but the original chunk + must remain unchanged. */ +void *glulx_realloc(void *ptr, glui32 len) +{ + return realloc(ptr, len); +} + +/* Deallocate a chunk of memory. */ +void glulx_free(void *ptr) +{ + free(ptr); +} + +/* Set the random-number seed; zero means use as random a source as + possible. */ +void glulx_setrandom(glui32 seed) +{ + if (seed == 0) + seed = time(NULL); + srand(seed); +} + +/* Return a random number in the range 0 to 2^32-1. */ +glui32 glulx_random() +{ + return rand(); +} + +#endif /* WIN32 */ + +#ifdef COMPILE_RANDOM_CODE + +/* Here is a pretty standard random-number generator and seed function. */ +static glui32 lo_random(void); +static void lo_seed_random(glui32 seed); +static glui32 rand_table[55]; /* State for the RNG. */ +static int rand_index1, rand_index2; + +static glui32 lo_random() +{ + rand_index1 = (rand_index1 + 1) % 55; + rand_index2 = (rand_index2 + 1) % 55; + rand_table[rand_index1] = rand_table[rand_index1] - rand_table[rand_index2]; + return rand_table[rand_index1]; +} + +static void lo_seed_random(glui32 seed) +{ + glui32 k = 1; + int i, loop; + + rand_table[54] = seed; + rand_index1 = 0; + rand_index2 = 31; + + for (i = 0; i < 55; i++) { + int ii = (21 * i) % 55; + rand_table[ii] = k; + k = seed - k; + seed = rand_table[ii]; + } + for (loop = 0; loop < 4; loop++) { + for (i = 0; i < 55; i++) + rand_table[i] = rand_table[i] - rand_table[ (1 + i + 30) % 55]; + } +} + +#endif /* COMPILE_RANDOM_CODE */ + +#include + +/* I'm putting a wrapper for qsort() here, in case I ever have to + worry about a platform without it. But I am not worrying at + present. */ +void glulx_sort(void *addr, int count, int size, + int (*comparefunc)(void *p1, void *p2)) +{ + qsort(addr, count, size, (int (*)(const void *, const void *))comparefunc); +} diff --git a/interpreters/glulxe/profile-analyze.py b/interpreters/glulxe/profile-analyze.py new file mode 100644 index 0000000..c7f7345 --- /dev/null +++ b/interpreters/glulxe/profile-analyze.py @@ -0,0 +1,473 @@ +#!/usr/bin/python + +""" +This script reads in the profile-raw file generated by Glulxe profiling, +and lists the ten most costly functions. (In terms of how much total time +was spent inside each function. If a function calls other functions, the +time spent in them is not charged to the parent; that is, a function +which does nothing but call other functions will be considered uncostly.) + +Optionally, this script can also read the debug output of the Inform 6 +compiler (or the assembly output), and use that to figure out the +names of all the functions that were profiled. + +Using this script is currently a nuisance. The requirements: + +- You must compile Glulxe with profiling (the VM_PROFILING compile-time + option). +- (If you want function names) you should compile your Inform 6 source + using the -k switch. This generates a "gameinfo.dbg" file. +- Run Glulxe, play some of the game, and quit. This generates a data + file called "profile-raw". +- Run this script, giving gameinfo.dbg and profile-raw as arguments. + +To sum up, in command-line form: + +% inform -G -k game.inf +% glulxe game.ulx +% python profile-analyze.py profile-raw gameinfo.dbg + +You can also use the assembly output of the Inform compiler, which you +get with the -a switch. Save the output and use it instead of the debug +file: + +% inform -G -a game.inf > game.asm +% glulxe game.ulx +% python profile-analyze.py profile-raw game.asm + +The limitations: + +The profiling code is not smart about VM operations that rearrange the +call stack. In fact, it's downright stupid. @restart, @restore, +@restoreundo, or @throw will kill the interpreter. + +Inform's -k switch does not work correctly with game files larger than +16 megabytes. + +Inform's -a switch does not display code for veneer functions, so if +you use that data, these will not be named; they will be listed as +"". This is a particular nuisance because veneer functions are +often the most costly ones. (Therefore, you'll almost certainly want +to use -k.) + +You can explore the profiling data in more detail by running the script +interactively: + +% python -i profile-analyze.py profile-raw game.asm + +After it runs, you'll be left at a Python prompt. The environment +will contain mappings called "functions" (mapping addresses to +function objects), and "function_names" (names to function objects). + +>>> functions[0x3c] + +>>> function_names['Main__'] + +>>> function_names['Main__'].dump() +Main__: + at $00003c (line 0); called 1 times + 0.000067 sec (1 ops) spent executing + 6.273244 sec (117578 ops) including child calls + +A Function object has lots of attributes: + + addr=INT: The VM address of the function (in hex). + hexaddr=STRING: The VM address of the function in hex (as a string). + name=STRING: The function's name, or '' if the function is + not known (veneer functions). + linenum=INT: The line number of the function from the source code, + or 0 if it is not derived from source (Main__, etc). + call_count=INT: The number of times the function was called. + accel_count=INT: The number of times the function was called with + acceleration. + total_time=FLOAT: The amount of time spent during all calls to the + function (in seconds, as a floating-point value). + total_ops=INT: The number of opcodes executed during all calls to + the function. + self_time=FLOAT: The amount of time spent during all calls to the + function, excluding time spent in subcalls (functions called *by* the + function). + self_ops=INT: The number of opcodes executed during all calls to + the function, excluding time spent in subcalls. + +(The self_time is the "cost" used for the original listing.) + +Note that if a function does not make any function calls, total_time +will be the same as self_time (and total_ops the same as self_ops). + +Two special function entries may be included. The function with address +"1" (which is not a legal Glulx function address) represents time spent +in @glk opcode calls. This will typically have a large self_time, +because it includes all the time spent waiting for input. + +The function with address "2" represents the time spent printing string +data (the @streamchar, @streamunichar, @streamnum, and @streamstr +opcodes). + +(Both "1" and "2" represent time spent in the Glk library, but they +get there by different code paths.) + +The function with the lowest address (ignoring "1" and "2") is the +top-level Main__() function generated by the compiler. Its total_time +is the running time of the entire program. + +""" + +import sys, os.path +import xml.sax +from struct import unpack + +if (len(sys.argv) < 2): + print "Usage: profile-analyze.py profile-raw [ gameinfo.dbg | game.asm ]" + sys.exit(1) + +profile_raw = sys.argv[1] +if (not os.path.exists(profile_raw)): + print 'File not readable:', profile_raw + sys.exit(1) + +game_asm = None +if (len(sys.argv) >= 3): + game_asm = sys.argv[2] + if (not os.path.exists(game_asm)): + print 'File not readable:', game_asm + sys.exit(1) + +special_functions = { + 1: 'glk', 2: 'streamout' +} +max_special_functions = max(special_functions.keys()) + +functions = None +sourcemap = None + +class Function: + def __init__(self, addr, hexaddr, attrs): + self.addr = addr + self.hexaddr = hexaddr + val = special_functions.get(addr) + if (val is None): + self.name = '' + self.special = False + else: + self.name = '<@' + val + '>' + self.special = True + self.linenum = 0 + self.call_count = int(attrs['call_count']) + self.accel_count = 0 + if (attrs.has_key('accel_count')): + self.accel_count = int(attrs['accel_count']) + self.total_ops = int(attrs['total_ops']) + self.total_time = float(attrs['total_time']) + self.self_ops = int(attrs['self_ops']) + self.self_time = float(attrs['self_time']) + + def __repr__(self): + return '' + + def dump(self): + print '%s:' % (self.name,) + val = '' + if (self.accel_count): + val = ' (%d accelerated)' % (self.accel_count,) + print ' at $%06x (line %d); called %d times%s' % (self.addr, self.linenum,self.call_count,val) + print ' %.6f sec (%d ops) spent executing' % (self.self_time, self.self_ops) + print ' %.6f sec (%d ops) including child calls' % (self.total_time, self.total_ops) + +class ProfileRawHandler(xml.sax.handler.ContentHandler): + def startElement(self, name, attrs): + global functions + + if (name == 'profile'): + functions = {} + if (name == 'function'): + hexaddr = attrs.get('addr') + addr = int(hexaddr, 16) + func = Function(addr, hexaddr, attrs) + functions[addr] = func + +def parse_asm(fl): + global sourcemap + sourcemap = {} + + lasttup = None + while True: + ln = fl.readline() + if (not ln): + break + ln = ln.strip() + ls = ln.split() + if (lasttup and not ls): + (linenum, funcname, addr) = lasttup + sourcemap[addr] = (linenum, funcname) + lasttup = None + try: + if (len(ls) >= 4 and ls[2] == '[' and ls[1].startswith('+')): + linenum = int(ls[0]) + funcname = ls[3] + addr = int(ls[1][1:], 16) + lasttup = (linenum, funcname, addr) + except ValueError: + pass + +class InformFunc: + def __init__(self, funcnum): + self.funcnum = funcnum + self.name = '' + self.addr = 0 + self.linenum = None + self.endaddr = None + self.endlinenum = None + self.locals = None + self.seqpts = None + def __repr__(self): + return '' + +class DebugFile: + def __init__(self, fl): + self.files = {} + self.functions = {} + self.function_names = {} + self.classes = [] + self.objects = {} + self.arrays = {} + self.globals = {} + self.properties = {} + self.attributes = {} + self.actions = {} + self.fake_actions = {} + self.map = {} + self.header = None + + dat = fl.read(2) + val = unpack('>H', dat)[0] + if (val != 0xDEBF): + raise ValueError('not an Inform debug file') + + dat = fl.read(2) + self.debugversion = unpack('>H', dat)[0] + dat = fl.read(2) + self.informversion = unpack('>H', dat)[0] + + rectable = { + 1: self.read_file_rec, + 2: self.read_class_rec, + 3: self.read_object_rec, + 4: self.read_global_rec, + 5: self.read_attr_rec, + 6: self.read_prop_rec, + 7: self.read_fake_action_rec, + 8: self.read_action_rec, + 9: self.read_header_rec, + 10: self.read_lineref_rec, + 11: self.read_routine_rec, + 12: self.read_array_rec, + 13: self.read_map_rec, + 14: self.read_routine_end_rec, + } + + while True: + dat = fl.read(1) + rectype = unpack('>B', dat)[0] + if (rectype == 0): + break + recfunc = rectable.get(rectype) + if (not recfunc): + raise ValueError('unknown debug record type: %d' % (rectype,)) + recfunc(fl) + + for func in self.functions.values(): + self.function_names[func.name] = func + + def read_file_rec(self, fl): + dat = fl.read(1) + filenum = unpack('>B', dat)[0] + includename = self.read_string(fl) + realname = self.read_string(fl) + self.files[filenum] = ( includename, realname ) + + def read_class_rec(self, fl): + name = self.read_string(fl) + start = self.read_linenum(fl) + end = self.read_linenum(fl) + self.classes.append( (name, start, end) ) + + def read_object_rec(self, fl): + dat = fl.read(2) + num = unpack('>H', dat)[0] + name = self.read_string(fl) + start = self.read_linenum(fl) + end = self.read_linenum(fl) + self.objects[num] = (name, start, end) + + def read_global_rec(self, fl): + dat = fl.read(1) + num = unpack('>B', dat)[0] + name = self.read_string(fl) + self.arrays[num] = name + + def read_array_rec(self, fl): + dat = fl.read(2) + num = unpack('>H', dat)[0] + name = self.read_string(fl) + self.arrays[num] = name + + def read_attr_rec(self, fl): + dat = fl.read(2) + num = unpack('>H', dat)[0] + name = self.read_string(fl) + self.attributes[num] = name + + def read_prop_rec(self, fl): + dat = fl.read(2) + num = unpack('>H', dat)[0] + name = self.read_string(fl) + self.properties[num] = name + + def read_action_rec(self, fl): + dat = fl.read(2) + num = unpack('>H', dat)[0] + name = self.read_string(fl) + self.actions[num] = name + + def read_fake_action_rec(self, fl): + dat = fl.read(2) + num = unpack('>H', dat)[0] + name = self.read_string(fl) + self.fake_actions[num] = name + + def read_routine_rec(self, fl): + dat = fl.read(2) + funcnum = unpack('>H', dat)[0] + func = self.get_function(funcnum) + + func.linenum = self.read_linenum(fl) + dat = fl.read(3) + addr = unpack('>I', '\0'+dat)[0] + func.addr = int(addr) + func.name = self.read_string(fl) + locals = [] + while True: + val = self.read_string(fl) + if (not val): + break + locals.append(val) + func.locals = locals + + def read_lineref_rec(self, fl): + dat = fl.read(2) + funcnum = unpack('>H', dat)[0] + func = self.get_function(funcnum) + + if (not func.seqpts): + func.seqpts = [] + + dat = fl.read(2) + count = unpack('>H', dat)[0] + for ix in range(count): + linenum = self.read_linenum(fl) + dat = fl.read(2) + addr = unpack('>H', dat)[0] + func.seqpts.append( (linenum, addr) ) + + def read_routine_end_rec(self, fl): + dat = fl.read(2) + funcnum = unpack('>H', dat)[0] + func = self.get_function(funcnum) + + func.endlinenum = self.read_linenum(fl) + dat = fl.read(3) + addr = unpack('>I', '\0'+dat)[0] + func.endaddr = int(addr) + + def read_header_rec(self, fl): + dat = fl.read(64) + self.header = dat + + def read_map_rec(self, fl): + while True: + name = self.read_string(fl) + if (not name): + break + dat = fl.read(3) + addr = unpack('>I', '\0'+dat)[0] + addr = int(addr) + self.map[name] = addr + + def read_linenum(self, fl): + dat = fl.read(4) + (funcnum, linenum, charnum) = unpack('>BHB', dat) + return (funcnum, linenum, charnum) + + def read_string(self, fl): + val = '' + while True: + dat = fl.read(1) + if (dat == '\0'): + return val + val += dat + + def get_function(self, funcnum): + func = self.functions.get(funcnum) + if (not func): + func = InformFunc(funcnum) + self.functions[funcnum] = func + return func + +# Begin the work + +xml.sax.parse(profile_raw, ProfileRawHandler()) + +source_start = min([ func.addr for func in functions.values() + if not func.special ]) +print 'Code segment begins at', hex(source_start) + +print len(functions), 'called functions found in', profile_raw + +if (game_asm): + fl = open(game_asm, 'rb') + val = fl.read(2) + fl.close() + if (val == '\xde\xbf'): + fl = open(game_asm, 'rb') + debugfile = DebugFile(fl) + fl.close() + sourcemap = {} + for func in debugfile.functions.values(): + sourcemap[func.addr] = ( func.linenum[1], func.name) + else: + fl = open(game_asm, 'rU') + parse_asm(fl) + fl.close() + +if (sourcemap): + badls = [] + + for (addr, func) in functions.items(): + if (func.special): + continue + tup = sourcemap.get(addr-source_start) + if (not tup): + badls.append(addr) + continue + (linenum, funcname) = tup + func.name = funcname + func.linenum = linenum + + if (badls): + print len(badls), 'functions from', profile_raw, 'did not appear in asm (veneer functions)' + + function_names = {} + for func in functions.values(): + function_names[func.name] = func + +if (sourcemap): + uncalled_funcs = [ funcname for (addr, (linenum, funcname)) in sourcemap.items() if (addr+source_start) not in functions ] + print len(uncalled_funcs), 'functions found in', game_asm, 'were never called' + +print 'Functions that consumed the most time (excluding children):' +ls = functions.values() +ls.sort(lambda x1, x2: cmp(x2.self_time, x1.self_time)) +for func in ls[:10]: + func.dump() + diff --git a/interpreters/glulxe/profile.c b/interpreters/glulxe/profile.c new file mode 100644 index 0000000..e7a0810 --- /dev/null +++ b/interpreters/glulxe/profile.c @@ -0,0 +1,309 @@ +/* profile.c: Glulxe profiling functions. + Designed by Andrew Plotkin + http://eblong.com/zarf/glulx/index.html +*/ + +/* +If compiled in, these functions maintain a collection of profiling +information as the Glulx program executes. + +The profiling code is not smart about VM operations that rearrange the +call stack. In fact, it's downright stupid. @restart, @restore, +@restoreundo, or @throw will kill the interpreter. + +On a normal VM exit (end of top-level routine or @quit), the profiler +writes out a data file called "profile-raw". This is an XML file of +the form + + + + + ... + + +The function list includes every function which was called during the +program's run. Each function tag includes the following attributes: + + addr=HEX: The VM address of the function (in hex). + call_count=INT: The number of times the function was called. + accel_count=INT: The number of times the function was called with + acceleration. + total_time=FLOAT: The amount of time spent during all calls to the + function (in seconds, as a floating-point value). + total_ops=INT: The number of opcodes executed during all calls to + the function. + self_time=FLOAT: The amount of time spent during all calls to the + function, excluding time spent in subcalls (functions called *by* the + function). + self_ops=INT: The number of opcodes executed during all calls to + the function, excluding time spent in subcalls. + +Note that if a function does not make any function calls, total_time +will be the same as self_time (and total_ops the same as self_ops). + +Two special function entries may be included. The function with address +"1" (which is not a legal Glulx function address) represents time spent +in @glk opcode calls. This will typically have a large self_time, +because it includes all the time spent waiting for input. + +The function with address "2" represents the time spent printing string +data (the @streamchar, @streamunichar, @streamnum, and @streamstr +opcodes). + +(Both "1" and "2" represent time spent in the Glk library, but they +get there by different code paths.) + +The function with the lowest address (ignoring "1" and "2") is the +top-level Main__() function generated by the compiler. Its total_time +is the running time of the entire program. + + */ + +#include "glk.h" +#include "glulxe.h" + +#if VM_PROFILING + +#include +#include +#include + +typedef struct function_struct { + glui32 addr; + + glui32 call_count; + glui32 accel_count; + glui32 entry_depth; + struct timeval entry_start_time; + glui32 entry_start_op; + struct timeval total_time; + glui32 total_ops; + struct timeval self_time; + glui32 self_ops; + + struct function_struct *hash_next; +} function_t; + +typedef struct frame_struct { + struct frame_struct *parent; + function_t *func; + + struct timeval entry_time; + glui32 entry_op; + + struct timeval children_time; + glui32 children_ops; +} frame_t; + +#define FUNC_HASH_SIZE (511) + +static function_t **functions = NULL; +static frame_t *current_frame = NULL; + +glui32 profile_opcount = 0; + +int init_profile() +{ + int bucknum; + + functions = (function_t **)glulx_malloc(FUNC_HASH_SIZE + * sizeof(function_t *)); + if (!functions) + return FALSE; + + for (bucknum=0; bucknumaddr != addr; + func = func->hash_next) { } + + if (!func) { + func = (function_t *)glulx_malloc(sizeof(function_t)); + if (!func) + fatal_error("Profiler: cannot malloc function."); + memset(func, 0, sizeof(function_t)); + func->hash_next = functions[bucknum]; + functions[bucknum] = func; + + func->addr = addr; + func->call_count = 0; + func->accel_count = 0; + timerclear(&func->entry_start_time); + func->entry_start_op = 0; + timerclear(&func->total_time); + func->total_ops = 0; + timerclear(&func->self_time); + func->self_ops = 0; + } + + return func; +} + +static char *timeprint(struct timeval *tv, char *buf) +{ + sprintf(buf, "%ld.%.6ld", (long)tv->tv_sec, (long)tv->tv_usec); + return buf; +} + +void profile_in(glui32 addr, int accel) +{ + frame_t *fra; + function_t *func; + struct timeval now; + + /* printf("### IN: %lx%s\n", addr, (accel?" accel":"")); */ + + gettimeofday(&now, NULL); + + func = get_function(addr); + func->call_count += 1; + if (accel) + func->accel_count += 1; + if (!func->entry_depth) { + func->entry_start_time = now; + func->entry_start_op = profile_opcount; + } + func->entry_depth += 1; + + fra = (frame_t *)glulx_malloc(sizeof(frame_t)); + if (!fra) + fatal_error("Profiler: cannot malloc frame."); + memset(fra, 0, sizeof(frame_t)); + + fra->parent = current_frame; + current_frame = fra; + + fra->func = func; + fra->entry_time = now; + fra->entry_op = profile_opcount; + timerclear(&fra->children_time); + fra->children_ops = 0; +} + +void profile_out() +{ + frame_t *fra; + function_t *func; + struct timeval now, runtime; + glui32 runops; + + /* printf("### OUT\n"); */ + + if (!current_frame) + fatal_error("Profiler: stack underflow."); + + gettimeofday(&now, NULL); + + fra = current_frame; + func = fra->func; + + timersub(&now, &fra->entry_time, &runtime); + runops = profile_opcount - fra->entry_op; + + timeradd(&runtime, &func->self_time, &func->self_time); + timersub(&func->self_time, &fra->children_time, &func->self_time); + func->self_ops += runops; + func->self_ops -= fra->children_ops; + + if (fra->parent) { + timeradd(&runtime, &fra->parent->children_time, &fra->parent->children_time); + fra->parent->children_ops += runops; + } + + if (!func->entry_depth) + fatal_error("Profiler: function entry underflow."); + + func->entry_depth -= 1; + if (!func->entry_depth) { + timersub(&now, &func->entry_start_time, &runtime); + timerclear(&func->entry_start_time); + + runops = profile_opcount - func->entry_start_op; + func->entry_start_op = 0; + + timeradd(&runtime, &func->total_time, &func->total_time); + func->total_ops += runops; + } + + current_frame = fra->parent; + fra->parent = NULL; + + glulx_free(fra); +} + +/* ### throw/catch */ +/* ### restore/restore_undo/restart */ + +void profile_fail(char *reason) +{ + fatal_error_2("Profiler: unable to handle operation", reason); +} + +void profile_quit() +{ + int bucknum; + function_t *func; + char linebuf[512]; + frefid_t profref; + strid_t profstr; + + while (current_frame) { + profile_out(); + } + + profref = glk_fileref_create_by_name(fileusage_BinaryMode|fileusage_Data, "profile-raw", 0); + if (!profref) + fatal_error("Profiler: unable to create profile-raw file"); + + profstr = glk_stream_open_file(profref, filemode_Write, 0); + + glk_put_string_stream(profstr, "\n"); + + for (bucknum=0; bucknumhash_next) { + /* ### + sprintf(linebuf, "function %lx called %ld times, total ops %ld, total time %s, self ops %ld, self time %s\n", + func->addr, func->call_count, + func->total_ops, + timeprint(&func->total_time, total_buf), + func->self_ops, + timeprint(&func->self_time, self_buf)); + ### */ + sprintf(linebuf, " \n", + func->addr, func->call_count, func->accel_count, + func->total_ops, + timeprint(&func->total_time, total_buf), + func->self_ops, + timeprint(&func->self_time, self_buf)); + glk_put_string_stream(profstr, linebuf); + } + } + + glk_put_string_stream(profstr, "\n"); + + glk_stream_close(profstr, NULL); + + glulx_free(functions); + functions = NULL; +} + +#else /* VM_PROFILING */ + +int init_profile() +{ + /* Profiling is not compiled in. Do nothing. */ + return TRUE; +} + +#endif /* VM_PROFILING */ diff --git a/interpreters/glulxe/search.c b/interpreters/glulxe/search.c new file mode 100644 index 0000000..26bf480 --- /dev/null +++ b/interpreters/glulxe/search.c @@ -0,0 +1,267 @@ +/* search.c: Glulxe code for built-in search opcodes + Designed by Andrew Plotkin + http://eblong.com/zarf/glulx/index.html +*/ + +#include "glk.h" +#include "glulxe.h" +#include "opcodes.h" + +#define serop_KeyIndirect (0x01) +#define serop_ZeroKeyTerminates (0x02) +#define serop_ReturnIndex (0x04) +/* ### KeyZeroBounded? variants? */ +/* ### LowerBoundKey? */ + +/* In general, these search functions look through a bunch of structures + in memory, searching for one whose key (a fixed-size sequence of bytes + within the structure) matches a given key. The result can indicate a + particular structure within the bunch, or it can be NULL ("not found".) + + Any or all of these options can be applied: + + KeyIndirect: If this is true, the key argument is taken to be the + start of an array of bytes in memory (whose length is keysize). + If it is false, the key argument contains the key itself. In + this case, keysize *must* be 1, 2, or 4. The key is stored in the + lower bytes of the key argument, big-endian. (The upper bytes are + ignored.) + + ZeroKeyTerminates: If this is true, when the search reaches a struct + whose key is all zeroes, the search terminates (and returns NULL). + If the searched-for key happens to also be zeroes, the key-match + (returning the struct) takes precedence over the zero-match (returning + NULL.) + + ReturnIndex: If this is false, the return value is the memory address + of the matching struct, or 0 to indicate NULL. If true, the return value + is the array index of the matching struct, or -1 to indicate NULL. +*/ + +static void fetchkey(unsigned char *keybuf, glui32 key, glui32 keysize, + glui32 options); + +/* linear_search(): + An array of data structures is stored in memory, beginning at start, + each structure being structsize bytes. Within each struct, there is + a key value keysize bytes long, starting at position keyoffset (from + the start of the structure.) Search through these in order. If one + is found whose key matches, return it. If numstructs are searched + with no result, return NULL. + + numstructs may be -1 (0xFFFFFFFF) to indicate no upper limit to the + number of structures to search. The search will continue until a match + is found, or (if ZeroKeyTerminates is set) a zero key. + + The KeyIndirect, ZeroKeyTerminates, and ReturnIndex options may be + used. +*/ +glui32 linear_search(glui32 key, glui32 keysize, + glui32 start, glui32 structsize, glui32 numstructs, + glui32 keyoffset, glui32 options) +{ + unsigned char keybuf[4]; + glui32 count; + int ix; + int retindex = ((options & serop_ReturnIndex) != 0); + int zeroterm = ((options & serop_ZeroKeyTerminates) != 0); + + fetchkey(keybuf, key, keysize, options); + + for (count=0; count byte2) + cmp = 1; + } + } + else { + for (ix=0; (!cmp) && ix byte2) + cmp = 1; + } + } + + if (!cmp) { + if (retindex) + return val; + else + return addr; + } + + if (cmp < 0) { + bot = val+1; + } + else { + top = val; + } + } + + if (retindex) + return -1; + else + return 0; +} + +/* linked_search(): + The structures may be anywhere in memory, in any order. They are + linked by a four-byte address field, which is found in each struct + at position nextoffset. If this field contains zero, it indicates + the end of the linked list. + + The KeyIndirect and ZeroKeyTerminates options may be used. +*/ +glui32 linked_search(glui32 key, glui32 keysize, + glui32 start, glui32 keyoffset, glui32 nextoffset, glui32 options) +{ + unsigned char keybuf[4]; + int ix; + glui32 val; + int zeroterm = ((options & serop_ZeroKeyTerminates) != 0); + + fetchkey(keybuf, key, keysize, options); + + while (start != 0) { + int match = TRUE; + if (keysize <= 4) { + for (ix=0; match && ix + http://eblong.com/zarf/glulx/index.html +*/ + +#include +#include "glk.h" +#include "glulxe.h" + +/* This structure allows us to write either to a Glk stream or to + a dynamically-allocated memory chunk. */ +typedef struct dest_struct { + int ismem; + + /* If it's a Glk stream: */ + strid_t str; + + /* If it's a block of memory: */ + unsigned char *ptr; + glui32 pos; + glui32 size; +} dest_t; + +#define IFFID(c1, c2, c3, c4) \ + ( (((glui32)c1) << 24) \ + | (((glui32)c2) << 16) \ + | (((glui32)c3) << 8) \ + | (((glui32)c4)) ) + +/* This can be adjusted before startup by platform-specific startup + code -- that is, preference code. */ +int max_undo_level = 8; + +static int undo_chain_size = 0; +static int undo_chain_num = 0; +unsigned char **undo_chain = NULL; + +static glui32 protect_pos = 0; +static glui32 protect_len = 0; + +static glui32 write_memstate(dest_t *dest); +static glui32 write_heapstate(dest_t *dest, int portable); +static glui32 write_stackstate(dest_t *dest, int portable); +static glui32 read_memstate(dest_t *dest, glui32 chunklen); +static glui32 read_heapstate(dest_t *dest, glui32 chunklen, int portable, + glui32 *sumlen, glui32 **summary); +static glui32 read_stackstate(dest_t *dest, glui32 chunklen, int portable); +static glui32 write_heapstate_sub(glui32 sumlen, glui32 *sumarray, + dest_t *dest, int portable); +static int sort_heap_summary(void *p1, void *p2); +static int write_long(dest_t *dest, glui32 val); +static int read_long(dest_t *dest, glui32 *val); +static int write_byte(dest_t *dest, unsigned char val); +static int read_byte(dest_t *dest, unsigned char *val); +static int reposition_write(dest_t *dest, glui32 pos); + +/* init_serial(): + Set up the undo chain and anything else that needs to be set up. +*/ +int init_serial() +{ + undo_chain_num = 0; + undo_chain_size = max_undo_level; + undo_chain = (unsigned char **)glulx_malloc(sizeof(unsigned char *) * undo_chain_size); + if (!undo_chain) + return FALSE; + + return TRUE; +} + +/* perform_saveundo(): + Add a state pointer to the undo chain. This returns 0 on success, + 1 on failure. +*/ +glui32 perform_saveundo() +{ + dest_t dest; + glui32 res; + glui32 memstart, memlen, heapstart, heaplen, stackstart, stacklen; + + /* The format for undo-saves is simpler than for saves on disk. We + just have a memory chunk, a heap chunk, and a stack chunk, in + that order. We skip the IFF chunk headers (although the size + fields are still there.) We also don't bother with IFF's 16-bit + alignment. */ + + if (undo_chain_size == 0) + return 1; + + dest.ismem = TRUE; + dest.size = 0; + dest.pos = 0; + dest.ptr = NULL; + dest.str = NULL; + + res = 0; + if (res == 0) { + res = write_long(&dest, 0); /* space for chunk length */ + } + if (res == 0) { + memstart = dest.pos; + res = write_memstate(&dest); + memlen = dest.pos - memstart; + } + if (res == 0) { + res = write_long(&dest, 0); /* space for chunk length */ + } + if (res == 0) { + heapstart = dest.pos; + res = write_heapstate(&dest, FALSE); + heaplen = dest.pos - heapstart; + } + if (res == 0) { + res = write_long(&dest, 0); /* space for chunk length */ + } + if (res == 0) { + stackstart = dest.pos; + res = write_stackstate(&dest, FALSE); + stacklen = dest.pos - stackstart; + } + + if (res == 0) { + /* Trim it down to the perfect size. */ + dest.ptr = glulx_realloc(dest.ptr, dest.pos); + if (!dest.ptr) + res = 1; + } + if (res == 0) { + res = reposition_write(&dest, memstart-4); + } + if (res == 0) { + res = write_long(&dest, memlen); + } + if (res == 0) { + res = reposition_write(&dest, heapstart-4); + } + if (res == 0) { + res = write_long(&dest, heaplen); + } + if (res == 0) { + res = reposition_write(&dest, stackstart-4); + } + if (res == 0) { + res = write_long(&dest, stacklen); + } + + if (res == 0) { + /* It worked. */ + if (undo_chain_num >= undo_chain_size) { + glulx_free(undo_chain[undo_chain_num-1]); + undo_chain[undo_chain_num-1] = NULL; + } + if (undo_chain_size > 1) + memmove(undo_chain+1, undo_chain, + (undo_chain_size-1) * sizeof(unsigned char *)); + undo_chain[0] = dest.ptr; + if (undo_chain_num < undo_chain_size) + undo_chain_num += 1; + dest.ptr = NULL; + } + else { + /* It didn't work. */ + if (dest.ptr) { + glulx_free(dest.ptr); + dest.ptr = NULL; + } + } + + return res; +} + +/* perform_restoreundo(): + Pull a state pointer from the undo chain. This returns 0 on success, + 1 on failure. Note that if it succeeds, the frameptr, localsbase, + and valstackbase registers are invalid; they must be rebuilt from + the stack. +*/ +glui32 perform_restoreundo() +{ + dest_t dest; + glui32 res, val; + glui32 heapsumlen = 0; + glui32 *heapsumarr = NULL; + + if (undo_chain_size == 0 || undo_chain_num == 0) + return 1; + + dest.ismem = TRUE; + dest.size = 0; + dest.pos = 0; + dest.ptr = undo_chain[0]; + dest.str = NULL; + + res = 0; + if (res == 0) { + res = read_long(&dest, &val); + } + if (res == 0) { + res = read_memstate(&dest, val); + } + if (res == 0) { + res = read_long(&dest, &val); + } + if (res == 0) { + res = read_heapstate(&dest, val, FALSE, &heapsumlen, &heapsumarr); + } + if (res == 0) { + res = read_long(&dest, &val); + } + if (res == 0) { + res = read_stackstate(&dest, val, FALSE); + } + /* ### really, many of the failure modes of those calls ought to + cause fatal errors. The stack or main memory may be damaged now. */ + + if (res == 0) { + if (heapsumarr) + res = heap_apply_summary(heapsumlen, heapsumarr); + } + + if (res == 0) { + /* It worked. */ + if (undo_chain_size > 1) + memmove(undo_chain, undo_chain+1, + (undo_chain_size-1) * sizeof(unsigned char *)); + undo_chain_num -= 1; + glulx_free(dest.ptr); + dest.ptr = NULL; + } + else { + /* It didn't work. */ + dest.ptr = NULL; + } + + return res; +} + +/* perform_save(): + Write the state to the output stream. This returns 0 on success, + 1 on failure. +*/ +glui32 perform_save(strid_t str) +{ + dest_t dest; + int ix; + glui32 res, lx, val; + glui32 memstart, memlen, stackstart, stacklen, heapstart, heaplen; + glui32 filestart, filelen; + + stream_get_iosys(&val, &lx); + if (val != 2) { + /* Not using the Glk I/O system, so bail. This function only + knows how to write to a Glk stream. */ + fatal_error("Streams are only available in Glk I/O system."); + } + + if (str == 0) + return 1; + + dest.ismem = FALSE; + dest.size = 0; + dest.pos = 0; + dest.ptr = NULL; + dest.str = str; + + res = 0; + + /* Quetzal header. */ + if (res == 0) { + res = write_long(&dest, IFFID('F', 'O', 'R', 'M')); + } + if (res == 0) { + res = write_long(&dest, 0); /* space for file length */ + filestart = dest.pos; + } + + if (res == 0) { + res = write_long(&dest, IFFID('I', 'F', 'Z', 'S')); /* ### ? */ + } + + /* Header chunk. This is the first 128 bytes of memory. */ + if (res == 0) { + res = write_long(&dest, IFFID('I', 'F', 'h', 'd')); + } + if (res == 0) { + res = write_long(&dest, 128); + } + for (ix=0; res==0 && ix<128; ix++) { + res = write_byte(&dest, Mem1(ix)); + } + /* Always even, so no padding necessary. */ + + /* Memory chunk. */ + if (res == 0) { + res = write_long(&dest, IFFID('C', 'M', 'e', 'm')); + } + if (res == 0) { + res = write_long(&dest, 0); /* space for chunk length */ + } + if (res == 0) { + memstart = dest.pos; + res = write_memstate(&dest); + memlen = dest.pos - memstart; + } + if (res == 0 && (memlen & 1) != 0) { + res = write_byte(&dest, 0); + } + + /* Heap chunk. */ + if (res == 0) { + res = write_long(&dest, IFFID('M', 'A', 'l', 'l')); + } + if (res == 0) { + res = write_long(&dest, 0); /* space for chunk length */ + } + if (res == 0) { + heapstart = dest.pos; + res = write_heapstate(&dest, TRUE); + heaplen = dest.pos - heapstart; + } + /* Always even, so no padding necessary. */ + + /* Stack chunk. */ + if (res == 0) { + res = write_long(&dest, IFFID('S', 't', 'k', 's')); + } + if (res == 0) { + res = write_long(&dest, 0); /* space for chunk length */ + } + if (res == 0) { + stackstart = dest.pos; + res = write_stackstate(&dest, TRUE); + stacklen = dest.pos - stackstart; + } + if (res == 0 && (stacklen & 1) != 0) { + res = write_byte(&dest, 0); + } + + filelen = dest.pos - filestart; + + /* Okay, fill in all the lengths. */ + if (res == 0) { + res = reposition_write(&dest, memstart-4); + } + if (res == 0) { + res = write_long(&dest, memlen); + } + if (res == 0) { + res = reposition_write(&dest, heapstart-4); + } + if (res == 0) { + res = write_long(&dest, heaplen); + } + if (res == 0) { + res = reposition_write(&dest, stackstart-4); + } + if (res == 0) { + res = write_long(&dest, stacklen); + } + if (res == 0) { + res = reposition_write(&dest, filestart-4); + } + if (res == 0) { + res = write_long(&dest, filelen); + } + + /* All done. */ + + return res; +} + +/* perform_restore(): + Pull a state pointer from a stream. This returns 0 on success, + 1 on failure. Note that if it succeeds, the frameptr, localsbase, + and valstackbase registers are invalid; they must be rebuilt from + the stack. +*/ +glui32 perform_restore(strid_t str) +{ + dest_t dest; + int ix; + glui32 lx, res, val; + glui32 filestart, filelen; + glui32 heapsumlen = 0; + glui32 *heapsumarr = NULL; + + stream_get_iosys(&val, &lx); + if (val != 2) { + /* Not using the Glk I/O system, so bail. This function only + knows how to read from a Glk stream. */ + fatal_error("Streams are only available in Glk I/O system."); + } + + if (str == 0) + return 1; + + dest.ismem = FALSE; + dest.size = 0; + dest.pos = 0; + dest.ptr = NULL; + dest.str = str; + + res = 0; + + /* ### the format errors checked below should send error messages to + the current stream. */ + + if (res == 0) { + res = read_long(&dest, &val); + } + if (res == 0 && val != IFFID('F', 'O', 'R', 'M')) { + /* ### bad header */ + return 1; + } + if (res == 0) { + res = read_long(&dest, &filelen); + } + filestart = dest.pos; + + if (res == 0) { + res = read_long(&dest, &val); + } + if (res == 0 && val != IFFID('I', 'F', 'Z', 'S')) { /* ### ? */ + /* ### bad header */ + return 1; + } + + while (res == 0 && dest.pos < filestart+filelen) { + /* Read a chunk and deal with it. */ + glui32 chunktype, chunkstart, chunklen; + unsigned char dummy; + + if (res == 0) { + res = read_long(&dest, &chunktype); + } + if (res == 0) { + res = read_long(&dest, &chunklen); + } + chunkstart = dest.pos; + + if (chunktype == IFFID('I', 'F', 'h', 'd')) { + for (ix=0; res==0 && ix<128; ix++) { + res = read_byte(&dest, &dummy); + if (res == 0 && Mem1(ix) != dummy) { + /* ### non-matching header */ + return 1; + } + } + } + else if (chunktype == IFFID('C', 'M', 'e', 'm')) { + res = read_memstate(&dest, chunklen); + } + else if (chunktype == IFFID('M', 'A', 'l', 'l')) { + res = read_heapstate(&dest, chunklen, TRUE, &heapsumlen, &heapsumarr); + } + else if (chunktype == IFFID('S', 't', 'k', 's')) { + res = read_stackstate(&dest, chunklen, TRUE); + } + else { + /* Unknown chunk type. Skip it. */ + for (lx=0; res==0 && lxismem) { + dest->pos = pos; + } + else { + glk_stream_set_position(dest->str, pos, seekmode_Start); + dest->pos = pos; + } + + return 0; +} + +static int write_buffer(dest_t *dest, unsigned char *ptr, glui32 len) +{ + if (dest->ismem) { + if (dest->pos+len > dest->size) { + dest->size = dest->pos+len+1024; + if (!dest->ptr) { + dest->ptr = glulx_malloc(dest->size); + } + else { + dest->ptr = glulx_realloc(dest->ptr, dest->size); + } + if (!dest->ptr) + return 1; + } + memcpy(dest->ptr+dest->pos, ptr, len); + } + else { + glk_put_buffer_stream(dest->str, (char *)ptr, len); + } + + dest->pos += len; + + return 0; +} + +static int read_buffer(dest_t *dest, unsigned char *ptr, glui32 len) +{ + glui32 newlen; + + if (dest->ismem) { + memcpy(ptr, dest->ptr+dest->pos, len); + } + else { + newlen = glk_get_buffer_stream(dest->str, (char *)ptr, len); + if (newlen != len) + return 1; + } + + dest->pos += len; + + return 0; +} + +static int write_long(dest_t *dest, glui32 val) +{ + unsigned char buf[4]; + Write4(buf, val); + return write_buffer(dest, buf, 4); +} + +static int write_short(dest_t *dest, glui16 val) +{ + unsigned char buf[2]; + Write2(buf, val); + return write_buffer(dest, buf, 2); +} + +static int write_byte(dest_t *dest, unsigned char val) +{ + return write_buffer(dest, &val, 1); +} + +static int read_long(dest_t *dest, glui32 *val) +{ + unsigned char buf[4]; + int res = read_buffer(dest, buf, 4); + if (res) + return res; + *val = Read4(buf); + return 0; +} + +static int read_short(dest_t *dest, glui16 *val) +{ + unsigned char buf[2]; + int res = read_buffer(dest, buf, 2); + if (res) + return res; + *val = Read2(buf); + return 0; +} + +static int read_byte(dest_t *dest, unsigned char *val) +{ + return read_buffer(dest, val, 1); +} + +static glui32 write_memstate(dest_t *dest) +{ + glui32 res, pos; + int val; + int runlen; + unsigned char ch; + + res = write_long(dest, endmem); + if (res) + return res; + + runlen = 0; + glk_stream_set_position(gamefile, gamefile_start+ramstart, seekmode_Start); + + for (pos=ramstart; pos= 0x100) + val = 0x100; + else + val = runlen; + res = write_byte(dest, 0); + if (res) + return res; + res = write_byte(dest, (val-1)); + if (res) + return res; + runlen -= val; + } + /* Write the byte we got. */ + res = write_byte(dest, ch); + if (res) + return res; + } + } + /* It's possible we've got a run left over, but we don't write it. */ + + return 0; +} + +static glui32 read_memstate(dest_t *dest, glui32 chunklen) +{ + glui32 chunkend = dest->pos + chunklen; + glui32 newlen; + glui32 res, pos; + int val; + int runlen; + unsigned char ch, ch2; + + heap_clear(); + + res = read_long(dest, &newlen); + if (res) + return res; + + res = change_memsize(newlen, FALSE); + if (res) + return res; + + runlen = 0; + glk_stream_set_position(gamefile, gamefile_start+ramstart, seekmode_Start); + + for (pos=ramstart; pospos >= chunkend) { + /* we're into the final, unstored run. */ + } + else if (runlen) { + runlen--; + } + else { + res = read_byte(dest, &ch2); + if (res) + return res; + if (ch2 == 0) { + res = read_byte(dest, &ch2); + if (res) + return res; + runlen = (glui32)ch2; + } + else { + ch ^= ch2; + } + } + + if (pos >= protectstart && pos < protectend) + continue; + + MemW1(pos, ch); + } + + return 0; +} + +static glui32 write_heapstate(dest_t *dest, int portable) +{ + glui32 res; + glui32 sumlen; + glui32 *sumarray; + + res = heap_get_summary(&sumlen, &sumarray); + if (res) + return res; + + if (!sumarray) + return 0; /* no heap */ + + res = write_heapstate_sub(sumlen, sumarray, dest, portable); + + glulx_free(sumarray); + return res; +} + +static glui32 write_heapstate_sub(glui32 sumlen, glui32 *sumarray, + dest_t *dest, int portable) +{ + glui32 res, lx; + + /* If we're storing for the purpose of undo, we don't need to do any + byte-swapping, because the result will only be used by this session. */ + if (!portable) { + res = write_buffer(dest, (void *)sumarray, sumlen*sizeof(glui32)); + if (res) + return res; + return 0; + } + + for (lx=0; lx v2) + return 1; + return 0; +} + +static glui32 read_heapstate(dest_t *dest, glui32 chunklen, int portable, + glui32 *sumlen, glui32 **summary) +{ + glui32 res, count, lx; + glui32 *arr; + + *sumlen = 0; + *summary = NULL; + + if (chunklen == 0) + return 0; /* no heap */ + + if (!portable) { + count = chunklen / sizeof(glui32); + + arr = glulx_malloc(chunklen); + if (!arr) + return 1; + + res = read_buffer(dest, (void *)arr, chunklen); + if (res) + return res; + + *sumlen = count; + *summary = arr; + + return 0; + } + + count = chunklen / 4; + + arr = glulx_malloc(count * sizeof(glui32)); + if (!arr) + return 1; + + for (lx=0; lx stacksize) + return 1; + + stackptr = chunklen; + frameptr = 0; + valstackbase = 0; + localsbase = 0; + + if (!portable) { + res = read_buffer(dest, stack, stackptr); + if (res) + return res; + return 0; + } + + /* This isn't going to be pleasant; we're going to read the data in + as a block, and then convert it in-place. */ + res = read_buffer(dest, stack, stackptr); + if (res) + return res; + + frameend = stackptr; + while (frameend != 0) { + /* Read the beginning-of-frame pointer. Remember, right now, the + whole frame is stored big-endian. So we have to read with the + Read*() macros, and then write with the StkW*() macros. */ + frm = Read4(stack+(frameend-4)); + + frm2 = frm; + + frlen = Read4(stack+frm2); + StkW4(frm2, frlen); + frm2 += 4; + locpos = Read4(stack+frm2); + StkW4(frm2, locpos); + frm2 += 4; + + /* The locals-format list is in bytes, so we don't have to convert it. */ + frm3 = frm2; + frm2 = frm+locpos; + + numlocals = 0; + + while (1) { + unsigned char loctype, loccount; + loctype = Read1(stack+frm3); + frm3 += 1; + loccount = Read1(stack+frm3); + frm3 += 1; + + if (loctype == 0 && loccount == 0) + break; + + /* Skip up to 0, 1, or 3 bytes of padding, depending on loctype. */ + while (frm2 & (loctype-1)) { + StkW1(frm2, 0); + frm2++; + } + + /* Convert this set of locals. */ + switch (loctype) { + + case 1: + do { + /* Don't need to convert bytes. */ + frm2 += 1; + loccount--; + } while (loccount); + break; + + case 2: + do { + glui16 loc = Read2(stack+frm2); + StkW2(frm2, loc); + frm2 += 2; + loccount--; + } while (loccount); + break; + + case 4: + do { + glui32 loc = Read4(stack+frm2); + StkW4(frm2, loc); + frm2 += 4; + loccount--; + } while (loccount); + break; + + } + + numlocals++; + } + + if ((numlocals & 1) == 0) { + StkW1(frm3, 0); + frm3++; + StkW1(frm3, 0); + frm3++; + } + + if (frm3 != frm+locpos) { + return 1; + } + + while (frm2 & 3) { + StkW1(frm2, 0); + frm2++; + } + + if (frm2 != frm+frlen) { + return 1; + } + + /* Now, the values pushed on the stack after the call frame itself. + This includes the stub. */ + while (frm2 < frameend) { + glui32 loc = Read4(stack+frm2); + StkW4(frm2, loc); + frm2 += 4; + } + + frameend = frm; + } + + return 0; +} + +glui32 perform_verify() +{ + glui32 len, checksum, newlen; + unsigned char buf[4]; + glui32 val, newsum, ix; + + len = gamefile_len; + + if (len < 256 || (len & 0xFF) != 0) + return 1; + + glk_stream_set_position(gamefile, gamefile_start, seekmode_Start); + newsum = 0; + + /* Read the header */ + for (ix=0; ix<9; ix++) { + newlen = glk_get_buffer_stream(gamefile, (char *)buf, 4); + if (newlen != 4) + return 1; + val = Read4(buf); + if (ix == 4) { + if (len != val) + return 1; + } + if (ix == 8) + checksum = val; + else + newsum += val; + } + + /* Read everything else */ + for (; ix < len/4; ix++) { + newlen = glk_get_buffer_stream(gamefile, (char *)buf, 4); + if (newlen != 4) + return 1; + val = Read4(buf); + newsum += val; + } + + if (newsum != checksum) + return 1; + + return 0; +} diff --git a/interpreters/glulxe/string.c b/interpreters/glulxe/string.c new file mode 100644 index 0000000..1f3b6f0 --- /dev/null +++ b/interpreters/glulxe/string.c @@ -0,0 +1,883 @@ +/* string.c: Glulxe string and text functions. + Designed by Andrew Plotkin + http://eblong.com/zarf/glulx/index.html +*/ + +#include "glk.h" +#include "glulxe.h" + +static glui32 iosys_mode; +static glui32 iosys_rock; +/* These constants are defined in the Glulx spec. */ +#define iosys_None (0) +#define iosys_Filter (1) +#define iosys_Glk (2) + +#define CACHEBITS (4) +#define CACHESIZE (1< 0xFF) + val = '?'; + glk_put_char(val); +} + +/* stream_num(): + Write a signed integer to the current output stream. +*/ +void stream_num(glsi32 val, int inmiddle, int charnum) +{ + int ix = 0; + int res, jx; + char buf[16]; + glui32 ival; + + if (val == 0) { + buf[ix] = '0'; + ix++; + } + else { + if (val < 0) + ival = -val; + else + ival = val; + + while (ival != 0) { + buf[ix] = (ival % 10) + '0'; + ix++; + ival /= 10; + } + + if (val < 0) { + buf[ix] = '-'; + ix++; + } + } + + switch (iosys_mode) { + + case iosys_Glk: + while (ix) { + ix--; + glk_put_char(buf[ix]); + } + break; + + case iosys_Filter: + if (!inmiddle) { + push_callstub(0x11, 0); + } + if (charnum >= ix) { + res = pop_callstub_string(&jx); + if (res) + fatal_error("String-on-string call stub while printing number."); + } + else { + ival = buf[(ix-1)-charnum] & 0xFF; + pc = val; + push_callstub(0x12, charnum+1); + enter_function(iosys_rock, 1, &ival); + } + break; + + default: + break; + + } +} + +/* stream_string(): + Write a Glulx string object to the current output stream. + inmiddle is zero if we are beginning a new string, or + nonzero if restarting one (E0/E1/E2, as appropriate for + the string type). +*/ +void stream_string(glui32 addr, int inmiddle, int bitnum) +{ + int ch; + int type; + int alldone = FALSE; + int substring = (inmiddle != 0); + glui32 ival; + + if (!addr) + fatal_error("Called stream_string with null address."); + + while (!alldone) { + + if (inmiddle == 0) { + type = Mem1(addr); + if (type == 0xE2) + addr+=4; + else + addr++; + bitnum = 0; + } + else { + type = inmiddle; + } + + if (type == 0xE1) { + if (tablecache_valid) { + int bits, numbits; + int readahead; + glui32 tmpaddr; + cacheblock_t *cablist; + int done = 0; + + /* bitnum is already set right */ + bits = Mem1(addr); + if (bitnum) + bits >>= bitnum; + numbits = (8 - bitnum); + readahead = FALSE; + + if (tablecache.type != 0) { + /* This is a bit of a cheat. If the top-level block is not + a branch, then it must be a string-terminator -- otherwise + the string would be an infinite repetition of that block. + We check for this case and bail immediately. */ + done = 1; + } + + cablist = tablecache.u.branches; + while (!done) { + cacheblock_t *cab; + + if (numbits < CACHEBITS) { + /* readahead is certainly false */ + int newbyte = Mem1(addr+1); + bits |= (newbyte << numbits); + numbits += 8; + readahead = TRUE; + } + + cab = &(cablist[bits & CACHEMASK]); + numbits -= cab->depth; + bits >>= cab->depth; + bitnum += cab->depth; + if (bitnum >= 8) { + addr += 1; + bitnum -= 8; + if (readahead) { + readahead = FALSE; + } + else { + int newbyte = Mem1(addr); + bits |= (newbyte << numbits); + numbits += 8; + } + } + + switch (cab->type) { + case 0x00: /* non-leaf node */ + cablist = cab->u.branches; + break; + case 0x01: /* string terminator */ + done = 1; + break; + case 0x02: /* single character */ + switch (iosys_mode) { + case iosys_Glk: + glk_put_char(cab->u.ch); + break; + case iosys_Filter: + ival = cab->u.ch & 0xFF; + if (!substring) { + push_callstub(0x11, 0); + substring = TRUE; + } + pc = addr; + push_callstub(0x10, bitnum); + enter_function(iosys_rock, 1, &ival); + return; + } + cablist = tablecache.u.branches; + break; + case 0x04: /* single Unicode character */ + switch (iosys_mode) { + case iosys_Glk: + glkio_unichar_han_ptr(cab->u.uch); + break; + case iosys_Filter: + ival = cab->u.uch; + if (!substring) { + push_callstub(0x11, 0); + substring = TRUE; + } + pc = addr; + push_callstub(0x10, bitnum); + enter_function(iosys_rock, 1, &ival); + return; + } + cablist = tablecache.u.branches; + break; + case 0x03: /* C string */ + switch (iosys_mode) { + case iosys_Glk: + for (tmpaddr=cab->u.addr; (ch=Mem1(tmpaddr)) != '\0'; tmpaddr++) + glk_put_char(ch); + cablist = tablecache.u.branches; + break; + case iosys_Filter: + if (!substring) { + push_callstub(0x11, 0); + substring = TRUE; + } + pc = addr; + push_callstub(0x10, bitnum); + inmiddle = 0xE0; + addr = cab->u.addr; + done = 2; + break; + default: + cablist = tablecache.u.branches; + break; + } + break; + case 0x05: /* C Unicode string */ + switch (iosys_mode) { + case iosys_Glk: + for (tmpaddr=cab->u.addr; (ival=Mem4(tmpaddr)) != 0; tmpaddr+=4) + glkio_unichar_han_ptr(ival); + cablist = tablecache.u.branches; + break; + case iosys_Filter: + if (!substring) { + push_callstub(0x11, 0); + substring = TRUE; + } + pc = addr; + push_callstub(0x10, bitnum); + inmiddle = 0xE2; + addr = cab->u.addr; + done = 2; + break; + default: + cablist = tablecache.u.branches; + break; + } + break; + case 0x08: + case 0x09: + case 0x0A: + case 0x0B: + { + glui32 oaddr; + int otype; + oaddr = cab->u.addr; + if (cab->type >= 0x09) + oaddr = Mem4(oaddr); + if (cab->type == 0x0B) + oaddr = Mem4(oaddr); + otype = Mem1(oaddr); + if (!substring) { + push_callstub(0x11, 0); + substring = TRUE; + } + if (otype >= 0xE0 && otype <= 0xFF) { + pc = addr; + push_callstub(0x10, bitnum); + inmiddle = 0; + addr = oaddr; + done = 2; + } + else if (otype >= 0xC0 && otype <= 0xDF) { + glui32 argc; + glui32 *argv; + if (cab->type == 0x0A || cab->type == 0x0B) { + argc = Mem4(cab->u.addr+4); + argv = pop_arguments(argc, cab->u.addr+8); + } + else { + argc = 0; + argv = NULL; + } + pc = addr; + push_callstub(0x10, bitnum); + enter_function(oaddr, argc, argv); + return; + } + else { + fatal_error("Unknown object while decoding string indirect reference."); + } + } + break; + default: + fatal_error("Unknown entity in string decoding (cached)."); + break; + } + } + if (done > 1) { + continue; /* restart the top-level loop */ + } + } + else { /* tablecache not valid */ + glui32 node; + int byte; + int nodetype; + int done = 0; + + if (!stringtable) + fatal_error("Attempted to print a compressed string with no table set."); + /* bitnum is already set right */ + byte = Mem1(addr); + if (bitnum) + byte >>= bitnum; + node = Mem4(stringtable+8); + while (!done) { + nodetype = Mem1(node); + node++; + switch (nodetype) { + case 0x00: /* non-leaf node */ + if (byte & 1) + node = Mem4(node+4); + else + node = Mem4(node+0); + if (bitnum == 7) { + bitnum = 0; + addr++; + byte = Mem1(addr); + } + else { + bitnum++; + byte >>= 1; + } + break; + case 0x01: /* string terminator */ + done = 1; + break; + case 0x02: /* single character */ + ch = Mem1(node); + switch (iosys_mode) { + case iosys_Glk: + glk_put_char(ch); + break; + case iosys_Filter: + ival = ch & 0xFF; + if (!substring) { + push_callstub(0x11, 0); + substring = TRUE; + } + pc = addr; + push_callstub(0x10, bitnum); + enter_function(iosys_rock, 1, &ival); + return; + } + node = Mem4(stringtable+8); + break; + case 0x04: /* single Unicode character */ + ival = Mem4(node); + switch (iosys_mode) { + case iosys_Glk: + glkio_unichar_han_ptr(ival); + break; + case iosys_Filter: + if (!substring) { + push_callstub(0x11, 0); + substring = TRUE; + } + pc = addr; + push_callstub(0x10, bitnum); + enter_function(iosys_rock, 1, &ival); + return; + } + node = Mem4(stringtable+8); + break; + case 0x03: /* C string */ + switch (iosys_mode) { + case iosys_Glk: + for (; (ch=Mem1(node)) != '\0'; node++) + glk_put_char(ch); + node = Mem4(stringtable+8); + break; + case iosys_Filter: + if (!substring) { + push_callstub(0x11, 0); + substring = TRUE; + } + pc = addr; + push_callstub(0x10, bitnum); + inmiddle = 0xE0; + addr = node; + done = 2; + break; + default: + node = Mem4(stringtable+8); + break; + } + break; + case 0x05: /* C Unicode string */ + switch (iosys_mode) { + case iosys_Glk: + for (; (ival=Mem4(node)) != 0; node+=4) + glkio_unichar_han_ptr(ival); + node = Mem4(stringtable+8); + break; + case iosys_Filter: + if (!substring) { + push_callstub(0x11, 0); + substring = TRUE; + } + pc = addr; + push_callstub(0x10, bitnum); + inmiddle = 0xE2; + addr = node; + done = 2; + break; + default: + node = Mem4(stringtable+8); + break; + } + break; + case 0x08: + case 0x09: + case 0x0A: + case 0x0B: + { + glui32 oaddr; + int otype; + oaddr = Mem4(node); + if (nodetype == 0x09 || nodetype == 0x0B) + oaddr = Mem4(oaddr); + otype = Mem1(oaddr); + if (!substring) { + push_callstub(0x11, 0); + substring = TRUE; + } + if (otype >= 0xE0 && otype <= 0xFF) { + pc = addr; + push_callstub(0x10, bitnum); + inmiddle = 0; + addr = oaddr; + done = 2; + } + else if (otype >= 0xC0 && otype <= 0xDF) { + glui32 argc; + glui32 *argv; + if (nodetype == 0x0A || nodetype == 0x0B) { + argc = Mem4(node+4); + argv = pop_arguments(argc, node+8); + } + else { + argc = 0; + argv = NULL; + } + pc = addr; + push_callstub(0x10, bitnum); + enter_function(oaddr, argc, argv); + return; + } + else { + fatal_error("Unknown object while decoding string indirect reference."); + } + } + break; + default: + fatal_error("Unknown entity in string decoding."); + break; + } + } + if (done > 1) { + continue; /* restart the top-level loop */ + } + } + } + else if (type == 0xE0) { + switch (iosys_mode) { + case iosys_Glk: + while (1) { + ch = Mem1(addr); + addr++; + if (ch == '\0') + break; + glk_put_char(ch); + } + break; + case iosys_Filter: + if (!substring) { + push_callstub(0x11, 0); + substring = TRUE; + } + ch = Mem1(addr); + addr++; + if (ch != '\0') { + ival = ch & 0xFF; + pc = addr; + push_callstub(0x13, 0); + enter_function(iosys_rock, 1, &ival); + return; + } + break; + } + } + else if (type == 0xE2) { + switch (iosys_mode) { + case iosys_Glk: + while (1) { + ival = Mem4(addr); + addr+=4; + if (ival == 0) + break; + glkio_unichar_han_ptr(ival); + } + break; + case iosys_Filter: + if (!substring) { + push_callstub(0x11, 0); + substring = TRUE; + } + ival = Mem4(addr); + addr+=4; + if (ival != 0) { + pc = addr; + push_callstub(0x14, 0); + enter_function(iosys_rock, 1, &ival); + return; + } + break; + } + } + else if (type >= 0xE0 && type <= 0xFF) { + fatal_error("Attempt to print unknown type of string."); + } + else { + fatal_error("Attempt to print non-string."); + } + + if (!substring) { + /* Just get straight out. */ + alldone = TRUE; + } + else { + /* Pop a stub and see what's to be done. */ + addr = pop_callstub_string(&bitnum); + if (addr == 0) { + alldone = TRUE; + } + else { + inmiddle = 0xE1; + } + } + } +} + +/* stream_get_table(): + Get the current table address. +*/ +glui32 stream_get_table() +{ + return stringtable; +} + +/* stream_set_table(): + Set the current table address, and rebuild decoding cache. +*/ +void stream_set_table(glui32 addr) +{ + if (stringtable == addr) + return; + + /* Drop cache. */ + if (tablecache_valid) { + if (tablecache.type == 0) + dropcache(tablecache.u.branches); + tablecache.u.branches = NULL; + tablecache_valid = FALSE; + } + + stringtable = addr; + + if (stringtable) { + /* Build cache. We can only do this if the table is entirely in ROM. */ + glui32 tablelen = Mem4(stringtable); + glui32 rootaddr = Mem4(stringtable+8); + if (stringtable+tablelen <= ramstart && !never_cache_stringtable) { + buildcache(&tablecache, rootaddr, CACHEBITS, 0); + /* dumpcache(&tablecache, 1, 0); */ + tablecache_valid = TRUE; + } + } +} + +static void buildcache(cacheblock_t *cablist, glui32 nodeaddr, int depth, + int mask) +{ + int ix, type; + + type = Mem1(nodeaddr); + + if (type == 0 && depth == CACHEBITS) { + cacheblock_t *list, *cab; + list = (cacheblock_t *)glulx_malloc(sizeof(cacheblock_t) * CACHESIZE); + buildcache(list, nodeaddr, 0, 0); + cab = &(cablist[mask]); + cab->type = 0; + cab->depth = CACHEBITS; + cab->u.branches = list; + return; + } + + if (type == 0) { + glui32 leftaddr = Mem4(nodeaddr+1); + glui32 rightaddr = Mem4(nodeaddr+5); + buildcache(cablist, leftaddr, depth+1, mask); + buildcache(cablist, rightaddr, depth+1, (mask | (1 << depth))); + return; + } + + /* Leaf node. */ + nodeaddr++; + for (ix = mask; ix < CACHESIZE; ix += (1 << depth)) { + cacheblock_t *cab = &(cablist[ix]); + cab->type = type; + cab->depth = depth; + switch (type) { + case 0x02: + cab->u.ch = Mem1(nodeaddr); + break; + case 0x04: + cab->u.uch = Mem4(nodeaddr); + break; + case 0x03: + case 0x05: + case 0x0A: + case 0x0B: + cab->u.addr = nodeaddr; + break; + case 0x08: + case 0x09: + cab->u.addr = Mem4(nodeaddr); + break; + } + } +} + +#if 0 +#include +static void dumpcache(cacheblock_t *cablist, int count, int indent) +{ + int ix, jx; + + for (ix=0; ixtype) { + case 0: + printf("...\n"); + dumpcache(cab->u.branches, CACHESIZE, indent+1); + break; + case 1: + printf("\n"); + break; + case 2: + printf("0x%02X", cab->u.ch); + if (cab->u.ch < 32) + printf(" ''\n"); + else + printf(" '%c'\n", cab->u.ch); + break; + default: + printf("type %02X, address %06lX\n", cab->type, cab->u.addr); + break; + } + } +} +#endif /* 0 */ + +static void dropcache(cacheblock_t *cablist) +{ + int ix; + for (ix=0; ixtype == 0) { + dropcache(cab->u.branches); + cab->u.branches = NULL; + } + } + glulx_free(cablist); +} + +/* This misbehaves if a Glk function has more than one S argument. */ + +#define STATIC_TEMP_BUFSIZE (127) +static char temp_buf[STATIC_TEMP_BUFSIZE+1]; + +char *make_temp_string(glui32 addr) +{ + int ix, len; + glui32 addr2; + char *res, *cx; + + if (Mem1(addr) != 0xE0) + fatal_error("String argument to a Glk call must be unencoded."); + addr++; + + for (addr2=addr; Mem1(addr2); addr2++) { }; + len = (addr2 - addr); + if (len < STATIC_TEMP_BUFSIZE) { + res = temp_buf; + } + else { + res = (char *)glulx_malloc(len+1); + if (!res) + fatal_error("Unable to allocate space for string argument to Glk call."); + } + + for (ix=0, addr2=addr; ix + http://eblong.com/zarf/glulx/index.html +*/ + +#include "glk.h" +#include "glulxe.h" +#include "glkstart.h" /* This comes with the Glk library. */ + +/* The only command-line argument is the filename. */ +glkunix_argumentlist_t glkunix_arguments[] = { + { "", glkunix_arg_ValueFollows, "filename: The game file to load." }, + { NULL, glkunix_arg_End, NULL } +}; + +int glkunix_startup_code(glkunix_startup_t *data) +{ + /* It turns out to be more convenient if we return TRUE from here, even + when an error occurs, and display an error in glk_main(). */ + char *cx; + unsigned char buf[12]; + int res; + + if (data->argc <= 1) { + init_err = "You must supply the name of a game file."; + return FALSE; + } + cx = data->argv[1]; + + gamefile = glkunix_stream_open_pathname(cx, FALSE, 1); + if (!gamefile) { + init_err = "The game file could not be opened."; + init_err2 = cx; + return TRUE; + } + + /* Now we have to check to see if it's a Blorb file. */ + + glk_stream_set_position(gamefile, 0, seekmode_Start); + res = glk_get_buffer_stream(gamefile, (char *)buf, 12); + if (!res) { + init_err = "The data in this stand-alone game is too short to read."; + return TRUE; + } + + if (buf[0] == 'G' && buf[1] == 'l' && buf[2] == 'u' && buf[3] == 'l') { + locate_gamefile(FALSE); + return TRUE; + } + else if (buf[0] == 'F' && buf[1] == 'O' && buf[2] == 'R' && buf[3] == 'M' + && buf[8] == 'I' && buf[9] == 'F' && buf[10] == 'R' && buf[11] == 'S') { + locate_gamefile(TRUE); + return TRUE; + } + else { + init_err = "This is neither a Glulx game file nor a Blorb file " + "which contains one."; + return TRUE; + } +} + diff --git a/interpreters/glulxe/vm.c b/interpreters/glulxe/vm.c new file mode 100644 index 0000000..4a113f5 --- /dev/null +++ b/interpreters/glulxe/vm.c @@ -0,0 +1,303 @@ +/* vm.c: Glulxe code related to the VM overall. Also miscellaneous stuff. + Designed by Andrew Plotkin + http://eblong.com/zarf/glulx/index.html +*/ + +#include "glk.h" +#include "glulxe.h" + +/* The memory blocks which contain VM main memory and the stack. */ +unsigned char *memmap = NULL; +unsigned char *stack = NULL; + +/* Various memory addresses which are useful. These are loaded in from + the game file header. */ +glui32 ramstart; +glui32 endgamefile; +glui32 origendmem; +glui32 stacksize; +glui32 startfuncaddr; +glui32 origstringtable; +glui32 checksum; + +/* The VM registers. */ +glui32 stackptr; +glui32 frameptr; +glui32 pc; +glui32 stringtable; +glui32 valstackbase; +glui32 localsbase; +glui32 endmem; +glui32 protectstart, protectend; + +void (*stream_char_handler)(unsigned char ch); +void (*stream_unichar_handler)(glui32 ch); + +/* setup_vm(): + Read in the game file and build the machine, allocating all the memory + necessary. +*/ +void setup_vm() +{ + unsigned char buf[4 * 7]; + int res; + + pc = 0; /* Clear this, so that error messages are cleaner. */ + + /* Read in all the size constants from the game file header. */ + + stream_char_handler = NULL; + stream_unichar_handler = NULL; + + glk_stream_set_position(gamefile, gamefile_start+8, seekmode_Start); + res = glk_get_buffer_stream(gamefile, (char *)buf, 4 * 7); + + ramstart = Read4(buf+0); + endgamefile = Read4(buf+4); + origendmem = Read4(buf+8); + stacksize = Read4(buf+12); + startfuncaddr = Read4(buf+16); + origstringtable = Read4(buf+20); + checksum = Read4(buf+24); + + /* Set the protection range to (0, 0), meaning "off". */ + protectstart = 0; + protectend = 0; + + /* Do a few sanity checks. */ + + if ((ramstart & 0xFF) + || (endgamefile & 0xFF) + || (origendmem & 0xFF) + || (stacksize & 0xFF)) { + nonfatal_warning("One of the segment boundaries in the header is not " + "256-byte aligned."); + } + + if (ramstart < 0x100 || endgamefile < ramstart || origendmem < endgamefile) { + fatal_error("The segment boundaries in the header are in an impossible " + "order."); + } + if (stacksize < 0x100) { + fatal_error("The stack size in the header is too small."); + } + + /* Allocate main memory and the stack. This is where memory allocation + errors are most likely to occur. */ + endmem = origendmem; + memmap = (unsigned char *)glulx_malloc(origendmem); + if (!memmap) { + fatal_error("Unable to allocate Glulx memory space."); + } + stack = (unsigned char *)glulx_malloc(stacksize); + if (!stack) { + glulx_free(memmap); + memmap = NULL; + fatal_error("Unable to allocate Glulx stack space."); + } + stringtable = 0; + + /* Initialize various other things in the terp. */ + init_operands(); + init_accel(); + init_serial(); + + /* Set up the initial machine state. */ + vm_restart(); +} + +/* finalize_vm(): + Deallocate all the memory and shut down the machine. +*/ +void finalize_vm() +{ + if (memmap) { + glulx_free(memmap); + memmap = NULL; + } + if (stack) { + glulx_free(stack); + stack = NULL; + } +} + +/* vm_restart(): + Put the VM into a state where it's ready to begin executing the + game. This is called both at startup time, and when the machine + performs a "restart" opcode. +*/ +void vm_restart() +{ + glui32 lx; + int res; + + /* Deactivate the heap (if it was active). */ + heap_clear(); + + /* Reset memory to the original size. */ + lx = change_memsize(origendmem, FALSE); + if (lx) + fatal_error("Memory could not be reset to its original size."); + + /* Load in all of main memory */ + glk_stream_set_position(gamefile, gamefile_start, seekmode_Start); + for (lx=0; lx= protectstart && lx < protectend) + continue; + memmap[lx] = res; + } + for (lx=endgamefile; lx endmem) { + for (lx=endmem; lx= count) { + /* It fits. */ + array = dynarray; + } + else { + dynarray_size = count+8; + dynarray = glulx_realloc(dynarray, sizeof(glui32) * dynarray_size); + if (!dynarray) + fatal_error("Unable to reallocate function arguments."); + array = dynarray; + } + } + } + + if (!addr) { + if (stackptr < valstackbase+4*count) + fatal_error("Stack underflow in arguments."); + stackptr -= 4*count; + for (ix=0; ix= endmem) + fatal_error_i("Memory access out of range", addr); + if (count > 1) { + addr += (count-1); + if (addr >= endmem) + fatal_error_i("Memory access out of range", addr); + } +} + diff --git a/libchimara/Makefile.am b/libchimara/Makefile.am index 913bb20..ba1e1d8 100644 --- a/libchimara/Makefile.am +++ b/libchimara/Makefile.am @@ -39,7 +39,7 @@ libchimara_la_CFLAGS = @CHIMARA_CFLAGS@ $(AM_CFLAGS) libchimara_la_LIBADD = @CHIMARA_LIBS@ libchimara_la_LDFLAGS = -version-info $(LT_VERSION_INFO) \ -no-undefined \ - -export-symbols-regex "^(glk_|chimara_glk_|glkunix_|giblorb_|garglk_)" + -export-symbols-regex "^(glk|chimara_glk|glkunix|giblorb|gidispatch|garglk)_" libchimara_includedir = $(includedir)/chimara/libchimara libchimara_include_HEADERS = \ chimara-glk.h \ diff --git a/tests/main.c b/tests/main.c index 94755c8..4acd4ed 100644 --- a/tests/main.c +++ b/tests/main.c @@ -154,7 +154,7 @@ main(int argc, char *argv[]) g_object_unref( G_OBJECT(builder) ); g_object_unref( G_OBJECT(uimanager) ); - if( !chimara_glk_run(CHIMARA_GLK(glk), "../interpreters/frotz/.libs/frotz.so", argc, argv, &error) ) { + if( !chimara_glk_run(CHIMARA_GLK(glk), "../interpreters/glulxe/.libs/glulxe.so", argc, argv, &error) ) { error_dialog(GTK_WINDOW(window), error, "Error starting Glk library: "); return 1; } diff --git a/tests/photo201.blb b/tests/photo201.blb new file mode 100644 index 0000000000000000000000000000000000000000..fa6c0ff4f136cf168a6042b92c7975bf2cb2e085 GIT binary patch literal 627050 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 `W>mDV>Q&oLU`=JpZTcg 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∓zA+Y6F#**x}*DS(MZN(ypba-RUMpz>G<@kBCsZK8u z@0hRW?PB$RX=r-ve?rlQ&7MVe1i>24^}|5Ci;xihP%|eR1Wd@YQlB*86Z$LC+hH`8 zwk%Etx2#xU667B+!@9cZUc0|2jIOvtWnDFmUc{b`UhS)AP$^Uwqzv;dJVr=bcdF?~2`w*fSp|MD^ljl zwiGZxu6S+a;u}&nb2i=TcA(I+tZ##Cul5vQ)!4J+$sv?|L!*UeC}cMnCS}`4+glX~ zX4E_>GHOhAslSNEB#lOAQ;S&b@Dwcr55I{lERm3jH-w8Hq+{JXS?&BR{=ot2fy

H1n=NQKwM>L7DtTNA zFS#s~nLXkd?7!3tFA6P}p3C_=<|oX;W0WiRI($>&m9?x}=n(TFBR7cPigzRXo~vWv z6d4dp|MDd97}{!B8?rn7sQ3FBG`Sp)hKAn>yEbFv2nqz#>eM@cLLT3aQIxCFZ{y{O zPUoW#v3M0$M1_3#Pz!Gr)G^MweRWHp^>%>N%FW#i@c^9y}Q47WJl&H-gsj$?rMJV{fb3bWIHP{@UuBLqcY0U z8)_$$J+^^9S)uq*9!NVWlHK52&zQV`U`w$+Et7S zRNd)FpS_389Z0_XKC|MkT&}qvk6ia_^nX zrRKypYzZGinHv3%s@*e0zflNP$92NJnScwKob#+i+v27oz-?MMbp3Q4b59MzYzIz@)J+uxk zB)+XhN4fsJm9uO+Qk;KLY*L-d{VbHn0q8SH5(w>4rSDGw4BjeS=#au~O9s1mP9 z|4>_CCpSNybNlJjX9#-r)y3@d7dB;86$h>(H6FCS)y9V>9aGc?nP^f)S*lhFY2t86 zt^Q)&HS5Ap&X()mG58Sl1c-338lq91Er|ma;zV#+>4uv@xKHF3=7ao{$)Ce=9khz( zLtgLY_4#j6Q(8c_yeiA#PMXU1E&8u&l099!7au-S0xFQGyi{C_68!*b84NC&ah zgdw(z*gH8ohb;@eu2n`+Fduv)MFB%(S3@A51Od?Pi6Lpu} z9rD=Zv|ku$%{S%UGtG`@F@?Y&iy5OKC_g$&QU2MxHu}5aFt+Bb02i;>w36`S&S23F z%D~HahQEH}3_kO4nr1;2J7uAh@I}&l)>rjwjSDZO5Mu@oNa>%y_2yM8e{Y%~MHf+T zR61uc&Fa`}(P+$yXSEQ8Jz2T=j@rvAiZPcdR-bVP!%@>S+{ZM};Nt}1_lSAxo9Ph9 zy9FJzk_YYi3gUgQ5&qzf(!MVpkHqf|ega|86%bN2_b9_d1&1p3{Jf4_daJ}wQA)!d zYKlCe)Mnb5j%;_did!$Kqx$gXPj^=kTWuedT>XwmZ1%MlgEFrgXCgmr_A;^~p}*l= z0|ZjTvPYoBXbKz0k&_(@1I!NT7#q^4w*=on+qxpZy<3nUgRxtR-g3Q|^VK?6j2xEF zcf?tkj9-v8ga##^Sq5~idhSEiiejG8%p@MoP;HISO9sImk)ECVGk;(o1sZJet(LwV zw)K^a+-n!r&{>ez$NO$>`wH1U8%%du!1g5}{n+WCiGeCXzUpvAjt#ck0^@T;mN3F) z43a5W9*d+q_z_E9IvNmHlP?&)RD7Iw8IP?Epo7|^Kin1NBbAo2)*btjZ-hBKY7?;3 zuiYJYpOf6enpMI^&xBP{ucm;pyW?=?B}4vwKYjOVwB~ifZ@#h|pNEc-(X*XF-q&3E z&i0f#%^Apj*)HtU0OJH~qHf7{3AIa0x%PKRmb!}hOL1&QN-%h=7EZ5Anas+b62E(+ zT4j30I#}jqm#5+~J$@sNu0g9Fl|!|vEr3dGzMly4A3?mgSQ_%G4aRhPu%>5?hKAHTov=LGfV@}Irz2yEoYfsi zfhFT=!0>tdZ%vK3Re*sF!cWQ(0ntT2-0k5?K%e_BoKOOTKcA?u9UJbf|6L>fW1+_~y}zEwm9y;O$P7%VrfozUoH#yl$%`&(7rQZ)2NPW!_K5}4 z_x)WgGU+^STT1-a8rn5~8}n4)bK*0>r_Z0Zi1G2{vHYosw*Ev=?)wWA!#-8* z@tKMK0$=CcG3ydCHzOHVL=j1Nn#6B0!6o(3g2}yR>~!#AnOpTu6FK1el^-YM@Ste@ zijREz7BL`dZX|RSWQy91z=p#_9MK8Fyx=;f#V_l_M;}J?=is%ABJ)WVSV;ZoDrEhkV*)U z?q0+d2&^hTI+ASp;2^pbmogZr8SqwYdpIMM=Z@$@9YzqMUXEsU6Xb}b9g-tvs;ufi z;KE)19`yY=ysL825Y_y6;^IMLJKwGB&X0WG+cij9^;^X96E-chT}4g5Y6DJ42K}f4 z#}ylE!x)OEdbL%%D^yhpua_Eih-;R^^NrGstL?ha0#@cX^#X>Tktf!Im}R+-dJ&zx zWJWBH$<8?%Zw$9Ix5tSuy->Oq|E=8^=Mcz;cPMy1RNu}`-iQ3$2_bA3G~PSox)Im= z3eWY_>2>utpW)O|(IA+Gx`m!l;e(i3m>$M&5yjadjv?kp5wbnBztO3x^8~X4&#faJ zaH8s*S(m>$eWcGDm_t}^(kD5Zr#P5=gdBoDU+7AKzK*5k^ew4ukHsfZg%?+8iI077 z+nPD?^~i6w=OYc3`}w2@y$xMis%0(KWfHvlS*z}R!z>D|*Q~vKpE?ROs=J5|Y|=Vz zmK5y%4T1FQ*of&wj@oSF7)!D_P6#vV`a8!J`BNV*CqrsRSye>Jo!Wc_==FX;p~9d$ zO&GD;m1+5%N}ZWjZ7sU$dZg(#M!}df&q`PmMWuKcm>U?6PI8C-XixRB|~kbuD;|Qcf0=(d3aSK%tl$1^I2s& zYrz?V#>@F~XSG#RZoaOj$7Hv-w1=)e*m|3Q`Y9DH_V(LK|K93zO24^5Bn-fabUlqg!~4WhOz+0ou-2z2DgzSRV%-U)m^M%8>9`@pyL4=*7r{{BaZK zlVaX9V~SL?hoatiqR=sBO0NRCUgEE)Ay!B)1oGR+*a?v|W>QOl4Vl$S&s;{2hLO&k z_H>B=Z!JAR0BOK!EC|@4_idOq@Jnz>=35Pu-ee&|AxGknoR!uorI)Ys_8Sx5Nj$aP zuI40G7lwD~-5A#U($)n?JGN6zn5V%Ka}=!VdYb_km+KlTc~6V=S-^6#D|u}TV$=rQE&GNxc^w! z;xTw2)wc-i$GhKXcH9eW#`I=F)^bUM=PCXQ_h=aMF>$)O4p&Y7^ zUML^H&=TV5m2=|bA<%goG&cNDRxKf+ohYR*z(Mylwj=1_TCNsZ3WKhj+%Bnrr8QOGEo z&8|B|ZTLBC`9lwYfh^zxo1$cH1#=tEU`bG@FE-of7Ivy+RDz{4i_y@NFFP<(l)93n zotX_zx`NgS-RDu2i{9-Cv)!mP35-mmJL92A*74n;HlrQG-9D;>w_@Nxm~w}-G5Tvu zb-sLBHTq%ofo-6eZa?MY@vi{%FW(sjj5gBN_g3`g2x_h*Ae0wP+BEyWt?}Okl+@=H z|L(?5&QbFEWUP4{x2qr+HvKCC9V!?oSHK1-P6)&jM>-Xi7Rr$5{okA>vT_$7jj{my*TRCvH{!V@7#3s z!<`U{HHr>4>2oLNK5z4CK4OC*&kEXB(=&N^`Dc>P4EY&{guS$%%=s%M=945gZx2mZ zBLY@N0G!Tc{>IAOq92+QCg)6GJoU7#_2p&W2JT9~7U@VAT~hr5bA`nMVegakOc??G z9|=RjZ=vgII}P44>v)`={o&KB6J4WuU_3KeG|RLsLU`9|=p_V!m-*Z`|Bb?@G<6 zWrz-I&e^J-P}A{=DrH5C%FQ<(@m)E_1Q;+wxwS5kz3#|7g^bTQat;iVCGT`b3ne-8 zHAGH?=Y)3jc0-4Mc7YQ{-7jydlPGI;h^$s-$m8QQR1)A#P3l)@E^{^{v|kOrbKI8d z@+{j+8>(-;lQYL~Vd2?us+v`Zrzvq7>-;jA=-pA0hPV3l^YY!h?&ahOg76L56}ptG zMG~Qi(W-Yd5t17LCj)skPpTf@3$q#EBQbMWzVtxfOv>1&^IZMrD|SEvuzp*BWD)Bv z6EoQ$Qd&mLYr4xM$tk{%2 zX1ICp2cuQcyNol{3GDK-^N}OIy#pn))s=7+g57$H4I}@zQK#QXWX403Qj%=8VClqZ z<*~%B-Yd`1lfyyaO;&`Hz+dC-uzq~KwN0|S!}n*1;mZ7)$F2hv zr`~&Af)XtYE<4U|gDD~V0!Ax+L51N*qO?TOf!PzNJ{XdDmVMs8L2R5x&^qt2uq_47 z6DQ>{51SSG+@jZr#x$Vtto3E`!P1C-oVO&8!N+=m#@PG=Kn|AM zNdFXb|66!k6LQsf`Bm$|y7;o9kKcGh=85Mns9PX>i1rNzQAKuV#v(V@-`Gf7ZFW?R zS>6&(-(j?l+JzwhJFD>Afs-!OMOoYFBySNINg zt|PP~xK3=yq|RP3nupKhjdz;&S>V+P4 zq2Iu?w0G;cRfhKsIuRGEMJ%gH-}mTL^18R{gN07QtQ&D>=O?7?uEzi~uLYc(%`u9) z90y5rk8zjwOpL07(J>Crc%<nr#dz*EaWOIuuAER`@S;*l2KqI_f^RJ|HCLt0J`1*AMUI*=dhXyY9$ z1cIbrx6jF0B5(EHH&cQnB{&-IXC1cvmxu70s&QD)d6+pqYmDgo@%Hl61IkU4^71|# zE7-dPybgRCgt`>n13{v+yY~&%Ph>oqX7|?dV>X#-X-QrofBd*m-3?1u5;SZ_lNB2z zV(Dnu*mlcPi5ntf-$8IU7KiYp(^MRDC>zy%h|7xH41v-)y0W45NEm?b2o9{Ej>t1G^UVNX=Xu7QgG6?;d)BC>s~pl-50Ta z{l--}5~7|oc+9z3qRUp%BKu)EK6a-~BG3@Rtu|6|UJ3mn-W^9Kn5|8S%|p>o2r`}W z9xpL}c4mBTMpElJtyX&T$ETz^eLNP92Q+mkU>lS>FlHLX8_l#2HwK&0Imf?E2G%K^w#Oa(q+YAkjBN!jh zR!Jog+DKv$7g({J>3Dp%EdS+z8apUVy`PYYKA3`d08x^J7B#EwW<+*X?px`#mNlw~ zw0`QUfjUpdSxydNhnSV}c*&alFOv&Y3yl2zitZ_E+y2ioLthN6TH&%!kR8ck4auLt zR1ioaKN!Zfa&gUy-ZrSkx^_NOF_cb~R{_ZlZjF%U0eYcvjB}Axm8LazL8iEY0}mVZ zjL?^PZ(lWW)3`);%l^2P>9#KGbj5VwAYG^KUWR`!3{7L&3s>-~toUd{D3y|^ z+(0p+Abo%TLu4<_2_F9fN9slxBw9nZk>W6$3g;SX+U$|qNgr;UHG@&IUwhk;)J^o4 z1t__`qyU3q14Ix#gn;}!=67isBMO`Gv6uoa++TlWu4T~sE`$yKnz)i2hS37%Vf`s* zF~anjF(A;IdZ4j|9E z>?Ha@+dIfN=r0&t5QH<{6d#~aA2I!OwREQRsbbhQ66Mbu_-{`Lt;>;YMRB}+inLpp zp#}}5yXQQ#ZwBGvxapkGLv@uY;3AEDRaf4&3;CTr>iL02+`zVJdlP!lXO3{vxT37n zG&U`)n=g$u4fgRJF_!Pdv27tw%)BzNh8O(5j+rfBJZNO4ZA%Yg*9wxQU3v@5 zmma=A6COLIio(d9V3HB`VJ+GoXH!pYwRD9f& zA!lMioH}aOuxVDZg4h|KDR5hdRM{71t6j{Y3e?99<~%Cyp8#5xvgvPA!~8oCn@vK~ z3D(3CQ|h~a;v|U(wMr35PjlFIl9qT-o6*5MvYH+7>+sfXrw2)Kkka&k#Y9B~{Y7<= zR4~acUBcL`{KR~9ns~SO!IB9wbhr|6yN082MTVLpg}F#DRRK_J`(pTQ))lZTtO_#2 z#iMi}SM_LE3dCL)!7iLc90+8?EU_jrRbojA!_f$KffAhp%GtDw*fVJf`Li!nP=l=Ps~aP{%>YW|9ZkeEobis^y!f$ln(yjSO_j3^8m zWbVkDdi!=l#iGv2sCm3~)^x?dWU(z?gwH6}ayIFRGM&;(u$FwPi}Qyx65i7T%>7YN zl#o8K+$SWA*J7xLiDDHG({s$4|8C+r1hu%q)8pk*dcXYPGb zp=g0UD9SY90h2w%{;Jw>?+(GauZC%I?y6*}-=*#~xBpJ)8>jIm@yITgtKqLyB?ZLL zMV!S@gnTIv)Tzu?%nOIg1u z$;cc%Ybdrxgm-esbTaDAim*EI7~ zLu2tK`Q4O}zVuz~)Vuvus@bQW#*C*~b!{blfd0^`H9`Gg+Uk3S@@8aACqd0A0v)Z= zg!{B`#C1>5pH0p0gkPe*A$o}$QEIAnDZVw%hhRa0{ZUXIiDE4WxOZu(tci~!uZ{wS zuA|fTY`+XxwoS+f);Bynvn=$Ot-xm6|7dKBf;gevh_dc{BXD!o`Hkf_; z`Ru!LX;tD!zlT*BvbCvSQJB8BZ>r-bWkEI3)3^QlkGUw=uK6F>L&Q-+GIVjdFb_&Z zOQF*1SzwU6W(H~2IrZ5entCg5XlVJQ;IpKmRrhgJETEYNQieG(f1-pTfivLmY{6Y3 z_;WB9Op>L%X1k29U~>B?_oSmt!;kiz`81p$_YqW{vFJ?k$?C> zJoMFi8^`73QaAJTsgPH*uaVYTr9)EHxIUi7^TgP(^KptG-Di!9D17e z8=ARi8jZ(Er?V6-IH+UzEIJOCE`%&3`pxZaxY^n>TYCG5=n9#pF=oO#XC^k{5H7S% za+8)AsHNa;Cs8I7cf7+RIwG)(r%@{B_u*L)s@@4)U{fLr%s@i>kd01ngIFXCWKiE) zc?n5kcViFJkI>?iy4;O-JW0g3$vKJ$lp|N_5G_R&gIvWzk~`SoShgIg$;5KJnnrqL zZ|wt{Z$5ooT%2F}4h9c2w4>46>dmn09aR|}*-VK#Jj2q`(k2CcXsb5&YkCqA5=Ar} z%((`)t39k*W~+c3Kn=;q2OgD~jEqc&9?)38nE#7{WTG6`*X*<#4Hpp+5i+e1{%A>o z9s?~wbb$s=MyZx&kIrUfLq21GN9f@5wKCO`4E!WbW(e%_df2182(VVC)s|e^D9VMZUn=VKU})hi8k5{!P5R>( zy~L_g$QN0kBN5hU83k(rt{YCB;@ZG|%$!C6w%HSXdzNdo-O-~8yb)L8 zUDgE{{!{+WH~v3We*L<>O|v1rxexogImP8SHdSxPY$9u;-D}&}>JaA1>_2%p;VR`F zG~rqu^|qk1^Rs{;`kjl^%TZT6_P1ev%>7jvtB?G<=_$^`Y7-*OUv>6G9c1W)mr<*J zBHQ{Q_l`pkGskUfV+MveVUv`JzRCUWvnGqBXxF2n{4u#jS>esv@KqaWE|rSMmusoQ zA<0MQcJ5D==)I6@Bm999l|My?6ov$y^dF7gwe9f0?F<8kg#JEP1m#a)h&S9DOg8op zSABGevb2izQe?4o4mQT=>s|hNo$&m{^sWKALdzUTC#6g)QfDk~^KH5~dK6CRlcJZ+ z3s>h6TR}MUkwsNxkxZu>m+#g$>PzmPEb|}+8ZuDhu`9xy%qS%}B~DYA(D$@rh)5j9 z;gstRyl0o(^E?9{R9c7@6wHxP6xistcA$?kiJ--?X8}j7?HNy zYhK=ickVV+bK-Pu0(FSV1K;oYSa^PaN*rq(fb3je|Ads2SJqpl4Y))dKcMwohp!!fdj%}%1yP~dJH&1CP(pk7N+CI-Q zWlKlfwEsnPf7Zv6+n+91zU1zrJ@6wl4*yo0o~fiV^&9?s^4v$Lea>mZ8*^AjZ5d%W zUaiXr*z%Cm%A7SB=q}vOSQp+VIXW8o!9f+!O(h|M5oVyXQ4`!U%N|5<0K;9a;^$H{ zW#D3^91{(aVV6v{!j^9)jIGf4_)i{Yv!=rgB;hOYINj14_wn+cQP2ElC*jrJRl980 zW5L{+M>Ukv%&p7Z<>s|GkC%j=&i(~eOzjE+B!kSUvdKhc%w%?yQU(0ubHlmqTTcRN z(J1;xr?;I{4Y;*Eeg5A>N{qQmC!^(97>NBWDK$@ZYp66MRen=Wcx1_E5$+fnQH(hu zTg)N*&y~)Wr$bG>EON~fsMGviWh#}5e+n?Lwr#t(;Z1|hV8p5QH)KY+j@rFlsgC9S zs-Ql(TvFe{m)8&lI?^3M2D75Jotkja zwk@vgzqJX+!u98lhS##jmJAW^Hq2QTK<0c%rZ@kNqw}n1f~#n+Qp(7m9C-aNKpvg7MZK-NZ%Ut0QMs&ZE89ggs zu4x3+E@kiN#b7LPiChU<(aU*wA`m)7l{sTWqSpt*{(RM0HEhYS^5#mv8A#z*XOyO! zr~D8VftRI*J|ESd^2U-?3j_m3unTk6`bbdRL;&(0BT9WDh`FijSJz5t4d}U`O|?|Q zqOr3z`D!dp0s9V}pjS>O6gijU|`%9W0smbl&I?^?1{72kfg z=e}<g6Y*poL#9t%eAlcm(a0DfKsmNsL*AF3|Tk zi)k@l8 zJkNqU_k0um)8DmAsKg_C-dHL3}m02g zs6Jm;@rmL1D|=!6ja`W*sBp57IiOMF3{QBVsDx?JEFO8(`q;V3!v zs@+FcDvBEc+QfrT^H+_X5uP4Yg;6_R1zq7IatbBXuxVRSq0HTue(1X%;;ErpZ;uL7 zWcf*KfMzHe&$djb7Hb8i- zW`J6JEL5=uzM=&k(?cH&H>JF|DU~qQxjP%wRy7m+T%wT<{KhDjr4Yi_=ks* z_D=l}JV~CJa;{G1hC@0_w=ou5_z1Epvil`PbWg$gVoeB^la5(#Mp+=vWI^Icl>4VI zN#&dvdX>`2wf&mx8NzbT#xtxv z)raEXTm^M7=j$gt+%~%KRW|sC^Zwu%n~Fyz>_OFir7dBg8jU^K>N&5<=XX?Bl*oLX zBUAba0=b<6{atb%D`Qs7Cqmp=FHA(Ha{crYrkoZup}`6Zq^5%uJMIxDrvnj)i&8DT zXxBFvmr_`V9T~rbelYJ9ZW7d(8;}rWQ%xMiZ(-qqB?ApI{TMQ!qg^>a0k5$M3n38m z_6FzTdvuYmsPv+(E!aZm;7^QQ*S@ogBPjHK)~K!MzS4e+c?=7pw32UKHGp13Ud{@x5K`(>X=Wk#r|RSswj7Yw7A>pFTRbzwutz zV8G&BejCL*y=|@{Aa@`<@3~&iv0=S6Rm=P^(N|LkMv`l_0##SOU~`p zp4AcOcBgnM7ZN>w>pM^8T$UcEz;bmop7lzR&@U>jhXaxNx;IMTx3 zR=*AhgRttVzi>8N>7U5x@iyoR&a|lU?3}lGO+v{AC#u|H@A=+bsv#Thkh(h?ZQC+W zahz*d>feX!)e{>F*riUMAx`0wf!iI87t1OS_q5k&88<55Pd|1xC`2P zo@aZXy8Z*XYlUd}br%{36)Vi+*FM%`y3fv)f%&vw@;&@njIb6lO9qLos!-kDp9dJ* zu6{322<73Ua9JYj&q9cI?ZgSJed625STLFUPU1rM+)iu%iRS|R^5Rz&rx$@Icy;S? zb$iv?Xj=23w5`9NC=jWxZ4RXF%s=6cJ4aXGANxWcr}d*x;W?_);a8cyy+72-t_;Ne z(&#(8Jd^mF0L%qB5DB6*=YCkPt;zT8cvaeMq7U5dF3`Wm$Q$6wHRw@E&!U2QJ_u*? zm)F11))82QMm8XqhVv}Y0UhxO5Ij=KDY|saT3T0F7RIhQLBzc(O;RIm?!P_U;0uL2 z)6oelD3miYvaED`NsKWRBJ&u~`@3Pln*C)l`6CCmv<(K~HJCo$9ryB^w2h}EY%KmSys05rO1S;(q}gA^ z#SR9Zu$qA|hIz|=VI|lC<;e2_{yHTFT2Rd=nNZHG_+>H%G_d6sF)VdK`mnI42g2xF zfrJ4gQPB^mdb?0$pzPGiZw0+jF~J$u+EAGAIb*us|0nd49BUR2drQ7rFjjt#Hq$ zDUkov`Q$lx8Xh1%vN|%`q5mQvI|b3CFu-iKw_^dlFdAVfsU-Li=fVz$nVyX@U6gr_);~G|UgC zeW7=+qNk-1GC^c9!*o&38ZNt%&(h*I-e;(DfXdekC7r-b1D-x%iDAyMi;;<^ylCy5 zp5f+wM1jit*=a&3&SyF_2xn~ffd(7ZfFS}Er+9LOMjK_mh4!!PxRAjrfd&H1bnVD5~m5*`E`Z{QJrLbfw^!rDvKIA$qHP@82>F5?WmBQqX=4kFw&d)2*G!g$_ zWQV0GO?5~q47J?a8J{XNRW3g0A#26uTK6d1;NzF$n-B5$K=Uj3uWX|L+i^=L$L|na zU#PEPv~+Y(3E<8Q;)U}M)u?=%dvv*fOSr8%AR7H4Z}r~QJJKkBB3ian#p==h zvJfG-c?zY{8YSDGLm!Kr-K`0QW64L;py;}jTzE}e;VBk!A20ScKy7NsrBp+*fyaaZ z>#7_~K~J$;`2;9*15iO|XlP<$;;vuk%dM{E<>jxaGW1#EdIHSmb3O5Rc}mI10N|?{ zuVHgM7-bBgx>`K7g=J)9RO6Gv!ZIQvuuutw5a>VnT4~zD4d159tOe z!7#V3Q^V-M?oj&UDw~4XZUtizeIryy*n67n^(n1|@g-IKDwFO?<6~tAlDN+k*sv)5 zt!4P}STm=iR^^OvqZjA$jr0maxj$KNLmkmi=+9%8Y9dru7HGrCwaN*LJJc2+Lf7KF z5l-j=Fx{Jg7U}wM+JVBRap=V3m{Uyv$f?< zItGVn0223IP_H`gLHfUfLjR+U`XT=R1r=%n0zs)GLIYp-bMAKrK48s-<%L0@nn;gF zr8wZ2+*nFk9t3iy0fE4NAkaMo_}l}5oLNDj0|P);H35pD7Xw1L zJOkWtUnN##2`D|lNqH9kIqIe*2Z5k1a3lWtTQ@Bs94tr(6p{P-&DWzmFbIU0t;F%4 zBLiGaz&?)9fByzF2@MTA&z6{Y{pLR%2muC<(-QyZh!q(T1O^d{|4-*o|J(V$t|k9p zxBn-^{x{(McdGsWJIMq)WRtxH`w+D1up^|zaOj`J>h_un6Sjf>Z~0NgdrKVt1u_FI zpfAti&;AIUg+U55RU@hpmIQJ%Hjq`T8KHo*n~fVj7tW^T8R@G8#skg5sfGK-Anrw5tOO z;{!0fd?@9(kLL#n4OyW`d*cMuGok-nEc@S!)xi0%^5I65Xry&SAw#8Mgr?LpzIk7E zXbH`Lk^^u1<}Fa1OoS@XDTST(#&Kxy6l;ot^`VYi@&O;9n*FyKbTIw1Ab%~cTIKYl zxZbs>%eG{KmQ&p?Qn+3iz>utSU30MhXMG zHx|(*$N#vYuJ|1rT##agbOkSV*{@e~!%hC%Pbv5)HTH-%)@=$=W&%1|D+NnM5?kLo zayBW?zzqf{f)$LC-O;dH72Onh64b5OG_>NnLdx>eivBIvw9@}%fb`c=$}pnDdIci- zNK=wPDXpWUK#clHR{2mown;2By7aZg3Ioh17In3xaH6QuY${S7zk|Z$+i<;v*{8dp z<~P&b==muNq$-3Rkg)0afM&`6dxLXer7Gx#iwUGnag14n9oRwhWzNARSpOVK*S`9U z^S@(Z2gjzyQgfdBCf~$zJGIP3Fw@u>>Fm zS2-3dOUCNv7&#wUcmlVB7g%vj{Bp!abrJe5A3_&gw$uBECRTXdFc}oZSVEP8I~#e| zoV=kigZYi{T=~^~1!1YEY*ewF ztA?tU@YOs79ED3xQqz>wQxPdQH8qh2&Y=8jS~U;@8t@BHK#$Szh%Q{x$1=)2rd_&{ z$~E576#_J7&x65Y><0EBP)(?YUAE}bJ5j)Zq+SPf0|b}>Y(9Edtg6b!26k`PFL5g1 z$BttNLQ^1zbj75rJf7t~p1&@3F?fLO9&Dbc8iqInyG{UjF&hNw*9j zQK-uZP!=jj8pFlbQ_j_#jP2*?nZ;_^IifaJiMVDmPvkNKt5wvXk`O}1d(51Kv|C=n zz2WnK3K1&&Jz8N!ofj~}t4`d=aWg@L<*4ATTIhM<0O@dz5Q$0Zp2bzuERrv)-gFjq zBt*Fk`=%JInH2EdVVB|Lr6!SsPTcjh9%h^npsQ{+EyQIZe-LX*aO0m34f0f}pv?{K zsFiBo?j`1kav0EI1u8H=)#&|Ha;VFhf^ua_zHxK&;*vU)emaGB8zu<&0~cMf!6I$F4N6O*-sHPHOr7my&FQ+&!Vs4ID7~L20HE=@#C03kjbE zYN6tiEMXP5N5YK0BgpmD?c!78CzuA~dewGZ>`Y3Aq2fn??Te)O*YprxVJm+gZJga9 z!A&_Z!z&!i9z--{V-^x`o{%bjs^vd(a;?DL3!J{GT??w&cHx#KC8Yklh4f*qQfT8S zib!39?;453y`$-<5cD7qG0VeDRVUKL><$n&Aa$<)msC$lRyRU?^hGB zy|2U0@b=d#0V*Q8@_E&cvR0x=HVmAF-4Hnky@d-snBnS5cEDDO((7d**k+!bxa*D! z^UOY^s5x=@0_f-czw(m~GUZ0<#HORV<6@PpMJRJ3C*KEx_CIQI1Z5;vw(@Wqgp7o7 zMVsh~QdEoX2O!i1U+KerFa6Y|7A}M5KWY(9kD|e7-Nth40Ol=sc{A7hm!+zXnmWuR z>cbM;oG?h;s)M3Ij3sc1$$_Y#tM1G)3oij9NcQjT#IRr_sx=#r`fQY7DzHyu4j9y$ zw+sR__f-($9ip`!ZlY#H*j0|K;h|4;(`s=8HftnIpE=oI7%zs~{-~oOUc@1OxoB;fnA4M}kwJ@KWmBu{*1L#VQShNFxg58F2e4%#DXbU11TCm8@G13E+f;{mM0 zYJ`=xOjbAhZB49(p$FuggpAL7u-lHJsK%y;M6{Th=U55nU)Rv#GH&rTm)G}HOkW?g&tvZ3Zx0erGq1Nb)?~_ElZdfD8a;hmDN|3?1ns%ku(HbId-X$9AEmI%cc8hN8AcspLO%sGQG<3Lvz-n+-Ssy>gR4`^j8u zrXlnItTrDV7l;iM25oQS3)x_ABXy34>TLGj6yPwo-$--;%?as_d13c$Yat*7A(Q<#q6m;isW&pz@#=w zWJ#e$jh7VidJNeO7K-fgM6MF9BVzeel8iu)b(qxCVeDyPJ|6O0$j;!H<1goz;W^ww z8Ro*dW%?Cg&E+HM+%22h{gC3Kk@x>S8p7o&mWgTdT79^jCUDayLD|E8?DZX# zx3kc#&Dd=lyAJvqq9%V~wB=l+xp|3k207uZ-hlCqe)`15cuG@gd*;M}M2U0Groa{e zdr=JiYc7StPBtm?66T*HDX|ugb|xM=bTeF!lPaE}-7nH9o{eG+ZB~!v3JbX}{BGb7 z)tb_0B4jm_)y~p(eJIo+#r-h*BcY}@=Bwam#%p|ZM!?>7UhXY%pJD_K*X#{Plu-c# zUy0UAL<42~P%^GLI%Mxe9w^=k=Xj@;J~k?v!%YG~{ja0<1^PQI=55Nh^ zzdkRdWi}5>d)|xFjHRd+yPr93U?4;3O(*j$j}sK+pNI!M>Ij1W#uZ%osO1KK5{*wJ z^@3#ql{cQ8PV%t9ufl;xj{oZ8&$LtaBW|mA_mmAv43rbM8-=9ISY9}ezMx5Sebbnu zwzFm-8m!@hlCrNeJ(y90$$vxzo|HV6bVOg)WwC`~w&^ z45nxVgGrt)04&0!8`6p6VIDq(g~UkQ=9|fCZz|~ZzlRA5GdH8$-oj)dN(2VC%WMUB z8g?Ai>g1k^!awi~q)7Fyt9f1hg05?p*Nt~o^vVkFr3JnZv521aBhuM%LN(f=8ly=1 z`bl5I1c$9rVodK0l{-(PpFYrE1<&G9(f%yAl!*-uh_5~ zGd#XNj=>CK_9DVpu94mTg@CUk;AY{}^2n@H48|)nT#40#_=6(bF$<(Wh^c%44xbi- zOT*zzpgAvcHX;^10$GE^@DFRF&m)Qk_kS5vfo7y}ctvnZn9J6W0<1=+;6kVg4L;>IKt?W@XG8j6e zmK{-W2b6R&g7p`p{FqBW1_ORhX6CIGwxwJPGAnb9)Lm0$Xe6kXf^20$OyzUDzqS(2 zm6J6a}R@TdnJc{`#mf@r#1Anmaxoq+!3iy6LFlEK_Ef;f(Nbq7i(%nCKPZrhc9v{0|C) z&owib4XiEgKMse#4dWVCjA9c`yNrxU{;v^lWgC3lh|F-rmJ>ctc0kr~d0o#OP&g)R zC=2weG*4NuB28Y+Eq3Ump=x*2ZDDg{;}E9PqrOCYqy8p3 z!w@y7u#*VU+Yh|;O_r8c!j_=iyG)^Hw9A&L`#^s6h+ za9!L40-j~nAD4JV|0S^dbrx7_CAhwX#?&Q)HaXojNpAw5Pc zSQH9<()iNg>U$oIh#T63U02-d!{;~o}q9L3>yxxiIbE%dLg{ ztHF?K8sCGLO;c*7d74ihlpXDpr&gPCP;X(x!f-f}BQNEX_z51pAt51UqCI$TYv9^W z#2nbxBm+C043);G*PCzupk~l5ZIJ?aeZ0R`fpMAPXTOCTrJ+)ZA7au?3s_XdC|%r^ zxoF7|*`!JKMZY@%W$joT(FfIPeq8axbJprl-o}q}$<)Y##j7SsJ*l96m)h|F9mK~Vw^V&l~3k<)RJ8!YAIH}Hz0>K3xD#N`kTzk-oyA9ol%e|$*go(jpmK@dD3Q`NHKD&{vW=~7 zej*3*pE~J%v!N(kW*)tv&jOa^N}qXt(9_+FBuK$Hkj#G2iTW%NzDy5^v0 z5Wu$0Ip%ioU-LE(gw+zHjFF6%JgK~CA(tFc{D04Y+%S@3%r5&3|Mk#96-OmZ5Dwn` z&DQKplGcqDh#O>E=pitE4eKdBu@c!Lg;JiV!7*CIdBCrZlP8t1p@5)7kqP)1X2U$+LKcXxCh!0uSa=RVTHuKa zrXkM+mXpEHo=~V9=0$=c<~rQs4JP#shCIxT7{T0%Tb_A7Y#Cw9fVfr0NXPZ&lH>W4 z$lU;tr}f@YE?Ck&tGaV?qVnS+nj3rXU6~;LmWgLV;Wx%u2xF4yl6&oWEKMLLHd^)> z1G}i|Ib$;j`Sr&@QCcqKuZ^>PWMH%N#zJ!)gKqe0&d)}_{6E~^E+A1&cT zlsUYw!?C69kR>lYEu?DjBgJJZb%s*rrG`U@=DT)bO)Ir((~`?w6#6SRR}~$22}5O) zKPae3W}{-$OD#xmUvFm>I=fc&x!-d^VcIQSqkH&JkcBO7F{S-sHa_E3>~IOa1hA>8 zmoUdan$>8Mg!8WHb;FxoEd(2UIDZm|cNT(Z63`}; zSP?1AaNm9dHU+w5!r=dc7T|7h-5ApH31drh;qd7Js{rIx_i!tN@E%oFWL(9UV^(8& zhCUk^_PK_@Fjx#LU=f;RL7^|wEl@4DfC%7HmwdzD^3fre71|s{Tq3-LMIr9TX<+r2 zZ^NFEVQP7R$*!l0PRris3S5$p92285duwD{M$sqM{Es9A=ybtApa3B(0INJk4cluK zzoe<5y>$IR{P@q2xj^LCg4$(s0y|R7+{s$P_2h+rsYf-xf+Ka_9*87bj$)RH)y`}q z@C7Z-KMUIH#M#w}?)%Cjm~{;Nr2ktCA=euH`9@4qOx)JK39JC^_8XF-yjHj_HouF& z7*j+8-=@<|T|_#|I`?CrQoO(rS&yyaExca<;|prY+YX0uB@?Aucqf~*JVT}a#e0ef z+cyVrjVc}ciCCDS1jk%5uCWQ%yV({Rl}vz35%-F(poyBcO@xc>3r6PpgETEkgl<_ENLQ%VTbHUl3GTA1HLBB#yvyr{RfyO!XbDhys1Ay+Y^E!X4Vx- zYNQCe$`sPFxbMF`AWv_nt8M0T8Bo|$51@SMk7aTkFxFLeYYzx~qJFuJ<9uu_mLS0sNMVR&u~1&?97VU$w@_#- zqO_EbE;zNLFp#`n7Is@b1B@Q~f5ak%fHrq6D+~%#v`a(OXfwb8ys($n4oIt4{c#J= zu}r>>QHOhUy*aVVU{B0(Qfatu_CTEnq&?v4C}tuoC^r*q$!ra>;SQnI)Pq`v;Hf&T z`jIq}eYQgd;`iVY&=VuzC!+91_L)o|waUFqypF;eM=FDy09cR-u>Sc#y3X`BN2WbV zu~)q&oaF`E3KS|7$e?gdPp4>IMKV5gL;`?PWW(|()FqCgT`f3CW!||_R9=D`Vn$;a z&S%D1*n5XKFiKaC=tG5r%0g#^rS8RmiSC6;9W9Qcn#bEXFSoz(q}OEt$fMc+S`GiO ziqrEH`vsUg`^B{?i-Bzyj=8kqOE3(-d4OcbOH`xAGo7C9b696VE=UwRdbQqC6E7e2 zLsesvYL)`S)WEq#~vpl75vgOyg%o%|6YaJ3nyQ=~h)S)j3>0kLLbItB1pIbbcg-KD&EG zp_PX;qNfSE_*3*=gks}5PDVc_1+;mf+VrV((8@z@maRtrwZ>b*c6I!?m3krXnTGaF z1v_%#<7engl$i_ggZ^)T-s9vkwr99!;Gsj8Z`;UcJmfkX5p2y+l@(r-A9uH7eyF9& zYuL2W3X-qSa7k`7JDO)^)d_`qk2vz5r3*Idsy)+WDdjH{ebDMWMDBDSAN4lT7z9!# z7x;<8eejLtdP&qX^7{HDEPF*VKj*#3NubVY_Q?F8{~=aN6tbP0z@A3ZtS3SvYqi&XjmE=S93|CjW@hq;Bq_L%B4fd#yJai*8#;%Sv8t$4ehI~F7Gup2 zqwU{9oHed3I!KXWW6e0dO_3*b!o)Z92nW&V7uBgU|0MuCUouWd1Oj@Mo#Uqb#qJWU zO$)f4nK5n>!9(dmKP8N^Z;@?f8bgtCX=}W@0jl#s2J| z*%jeV_uXBa;7z_zL8#K=SIV)64S*0_GD_m0`?_comy$!F$<47)xP*)4y1qH#hZ$<8 z$&}Vh(2FFwR}}S}p@tP_&)FnNune{15!pA*Gds)4eWE?y!;^1_uuAyc0AwnE#J7j} z83@z|r#igIslUU2kzdaY!>W3RM3pr8N~-<5#WLgc05ig`_PLeIa66*X|JHo6z|d}1 zhh^Jg0`-qH(J;rb5!UQA(yrPwZdEF^{M*iV>;E}AHas&yWqHn~JvUfh((FqI%5QOZu?QA~&kiGY7I{;kIl@KnJg-tzi@vtoH z+t~V_S=AnEtF;4Wko!HP-@@I_B5FjjhHY{}!C>}~+{Vz(?^?Y-sP}@KC8}Z-yKMrC zocMswx}?v@FGH)#C;$w}{jFi=u>Vzg$5IrtNwO}d)`%xx4)mn&1p?pOn&(m6%>k+N zxw_!dvz)*fXEam#@03wBGFkaaWS2DJl3<%)_-oJPPEurH2|~#v%K)_P)|+JMzPf40 zQE<*0nb4Zd1zc?@iaTFQb5nfno6TyK#QyektS5z&1iGdZ{jGJ;NXg1<0iV-c2GO77-j)jcymy8ZZg)Q_t{K-;HLKY0!0oUfXjo4&J^z1pqkMn;g=`)CsP7QT0&-w zg~X}>gkNn^wkX%5h4eG4S_s++uWKiY_B62)+LC|3YA(UO0VJH$`RL(OSZE#ksqTcV zj`P~4uHE4`mu_iNLf*d?{wk=UES2`G$T-i;PYI*o@vM9pfXNRNEp_{H2#ROY9Hukd zWiv~UgjS%nH)H_%CBl!_$rP5sRlbUyal14Lm471>5TrIl-I7^LN5bWX_WD5%Mb;JD zwQ7--EMZC*qUY=_^7#LeGtf&4m68Xupnw`DW~{Am9F$bKv*4VTh&!qr`{Yd)4ybY zci*X3V=z}6U2`qTx~-Pyq4_NY-uep5YB}~@vsqcDsT)V?w)^eaDZA%F?qxzoJ;VPB z&O^}ia;yT~6(Selly~AOZ!`a54It3;`bq6moeu2Z^8~cHxhQJd8Xw^1T6qxET+xum zOX-pMD?NdGtaqM-3&oj>l<-GV^pn=&QTttGgzb7t*V`LvqZ|z-am<9o%}v(UYUuMO>c`OG^57-*WZY z$I<_i=3&tILy9^9?$!hnu*;8RvlkJ|-*nT(f5rnbo;H5X+Wyb?aCcohp!^o#BV{wq zRMiCgfQ035%Gd~sc%p4-F`+>S>&$ftTQ1jZsituEgoP4lezY|soPPLKfs8PEhF6nW z%hFgH(bF$-8A&SwI6Q|d6Hugww}59kLgD^BVo;IO`)bl^_4naQHgpvyx=O_R0c$9= zvJNd}Xq~3@z(`m@f)gzRIxBpvAP{@W?p{t(`;$GzfdGZfXAmD4{;lmGoYr>ETf?g9 zAfc)G6!tnT*FzpSoF##zTmi}&Dw8QM8Iqhx^zpY#lmd{#e+nc(7-RHm727^^+)e@@ z9JL!w;}d$rI+Kw<2mtb_w68cI@vjsMy zNCuN7>^&pZPG<%bRIJ9DjeONIur^c%r2&H9=9bviLHUZNmg^CriLlcCrOEjZIm=(< z8Zx5jtE%x4SaSujlXC4L(d@oXwNW0{Yd`gbJ}@{+{Sv+cUsl)rVZ`Z9Ql9zuD!{da z`4ioxY0b%ROK3VUYt|KV=M(qto1JrA(*0&n;%)w*UVm_FXTY|Ju(kS(C?c<=0P}`~ zO$f^i_K8>VrZ;Uw$*lrlnyb#Jj^Gv;Gl2@lUk4&lRNCXfX7rT8oFd)Sa5aDnGHDQ4 zO)j5B9(~BYPYNH{Z$$h{@&nY%KQTZhSd$t`Z>2+Mu&HdIZmDT89qH~te~qoY*@3OT z2m6-$5tbSN^o*nEsxEf{;1m8%|rr!CHrY~pU_>-DaPnu;+(d45h7vvga4l&|S#m0YJ5JTAZX?plq z0m@fGt(zLv4l+PRMx}u}OeA6K?lTD>2O<2seg_ax`+=QyLy|4RT=A5g$??4gxMn!; zw|H0Gbt58>&E9BokxQRl^w(z>ZGCF8i{3GBS6U&ocOPo`wEVz%FeB4 z*_Yr`5*Fs2lnJ0PcTF?;kv18^Wk!)aoB0gI_m>?_#dny_F(c5dL!znJ)#5wCN>#;6 zXN!>W%K?OGz=HYc{!{v6bXmhQU9C5e@%3 z&BX7J^w!}5{?e{F=|7;;wZHFRnJ5|MQh6LWGy&GDndNd>aFGBiH!iUyrS#TIl^`b1 zOCG8J;-asVUYyWn5xX5-Wn?}ndwG?Wzu(hOME*3NzxKS+k%Ah$?+1%^_o{Tctn~d4 zgB(N6w%g7$`lmuG{`jQq+9sUORnbd29Z6eadUxZw3hcA~ObK~EmN+ec% zpv;~9g2>AJ*6Wc^I|6iWX2?O3H`{&u5 z2HVhEz>EJ6&*lhE|MP6lxPcN`KO3|^NxXG2iP7`p+I(pnlqt6QMX{?YdJRivmK~ra zxQAEhR5K4z)H*zGja-Wq#((gQoc(h^FX%SNp)Hy-rhB5vdsJeEUnHYaO%bbreJ0bH z>3LOx@s6(^>5$^b#V%yc=kWL-Rpm}g4v9mj!DtMd*1~F4Y5x+paAF%xSI3op-m!R^ zkWj<(%1TwPB>7{d!;R;Dc)ln@@)OU{eGMfnUVnhU=KNj<;2sKqby<;EFBSi8W2Er4z1IO(1OJy$ht zj!}vE5{q_H8)3d52UQ{ii8Sa;_O5%IT(8GFwrw^Bdq z9hSJGe0x#T+4!*Y#^e&RBJR$3v9g0D!9X5dG}!Cr?FbOxo2Xx8OP4Fck35YUd-4waMKkv54iPiilnzZrMYz^ zAcnsbkbwvj z5EA=q?Z@I`j_dF5{*P~fTnNaOU7mZsd6@~buWc>Q%s=M_NjTL)*oh-ol)Iv%dMj3c zOHr!X^fA71(;2rS&197)LPL5RTHCVhVxLX)B+{duKBFHXKI^vFuzog1etmIT?zHtF z+iK*qES_LQ5!L*^ zS&J{0#I_AsgxcnIV@(&6o@W2UQ^(-zyu28D~#Za7A=f-egcK zwKLFVyF>n(qf&rMSeaY}QJ%NX*T11`$@v)Tj@>Z-urwr2>K;bEMu^8SnMrY9fP2&{ zhASE!Yor8)*~nH@NgJ2OWvco>SqRL^;P{iqs~dKviQ2UE05k>dvvuYG=9?KwJ~&uU zO-=Ru)PoQcgWwmvS?~rCD!JTcl6?@fgp1ENGn_&yu~Zu7oyha?rKM(rgJlC=iJb_T zrW@?Y@kq(r2HJbWdmUznlGVv;hfV#ryA%~86Y8ZRoH>OA=cn=(GlwUQ=g-zAOupPk zHmapq^G)0`P$X2m#*~O*PLheU*-j`a$Vz3mvYk<8m`tke51Kb3gQbG{qhXOjSKrm( zW2#+Ej06Xe3z)DxxhREn$5RF=3$`8HCo9J8EHon9SUO5CR~_VEYZa?RM<}UR6@Fa> zha-9(F3<#`(4cO88{2P!);YO*kPWm{X2SxMNON%s8?^mPw4AU?Pwoq{Wp`p zWo&xnrk{tw8LjZi!G^Y#6*CQulS7sZ%}T@Bq=!;6Eyt$CW1h9iy-bjF5cd41ROdlDlB+<&esLW z``~&lfnS|Za5k+0-iK|(Hyhbt&Y}iN9}3;_5t;=Kl`+?E8(5fXYCd7LF8uOI`cZjR z%~rWkjy+VlXS@?cQ_0_n+qP zF?y0bemFM%@_wVXi{0YwO?G|_{Oei-bei7EFcSA5$+shs{pC|%_2un5c0L@>kqaZ!ddt=wU)H(H7$@)# zrt!hkbBb%X8Cs*YB5xigJl_5Bm?FN4?AKxE-JDXfGI8B!l25qpxaq6XSbbwf@~JAd z1ec%_bnD2i>>8!BeN#b_19y2RI*$oGrSN(3A7s6|ljQQZwmuZjK2HjKhRU>v&ZSHj zKWTMbUPsuyuL(#OcgFP}svLei)F}bFUSaHaZt-&Ingbm|o7jRN*7#xwG>9IUa@$8K zoS3*>TN|$sYOP9nalE_OV3Q&(O|{}AD)ytfIsW|o7ZpcXzqpWPErBdqmb5m$fj+lKr!=~O#>8nF!%nj1| z3{5jW?-SS~RM}^M<^s34g~|Eye-8`}SSYM$lT@~?)h;!X+G**#9?@1d}wS)G=ruWm4cX?Dd6C9Nb-h1S-c(%c< zjA|`H=#p)Fy>*9n#bhAWl}6?*TnnI2F`in`ZL@l_Yi?hty~9c+dFflGY_Q5UwZCmo z$JA#Jur#%V6Otm!UnqfIFmlj2z62F)BBk%PMuz`p$!qRO;rC0p30a;VJSFq+HCBZ5 zwHHi!v=1cDVPXDaZa{C>)%G;x>rAc?t+=IwkzE`&o=wnXMXH_=UL9((C11P2aBS!9 zz2jE}$!Cbq0-(8M4hFHh&=+$HPl!SFgO&|MgeY$=zP=!loW0JpxKrrA<7n6 zc!Obf^n;5S1LdE;KIGmqZZtUQ3F_2`XZ(INRM;@LIA8mSRa4+4xax04Wz6G~woD$Z2Xr@~jtyFEGJ3osIV@pK=5baA13m7NwP*=Gb-!?iY2 zAMDF%2Um+vHC_d@u-O; z8=vqKLD6Rqf1uYss5S`lX3>!=2sekAe;t`;Ew018$>uH&OQi{=xh6KKQFWJk{Ytq@ zb6M?Dtlur0b$&TnivWukI}2PNh+QOgWudLt@nNPj8BIiR={{?*ux#?G%reimyI^^4 zcy80;#;QYhZ(2zMdSZFvpzOI2HQq=L;c)NGiAj=$Q@7`ZfkjB|rT>Nm2vgi{4kzPsm+ zE)2*SKy@FiTvVu?ZW+i5UdWKw4=1LY%kg>NtduG#9JH)(1)kZPXYesx`FY2{sgH=b^owQQ+XDhQYG);25r7_nb?|ILf(k#;|WXrY%v??$^&>7bn-<r#}|eLHnHYw|n0yX38}rrEtL~X=6H2CJ zj~9RKQ4u4jKf1W{t7O>uF=fS)`^D#cdD8G6#h)`I1pBA)jQo?n&&i>xR(T!%FIE@x33g^x4k)^3bzZ1K+rjD9k-zAqkYg}v#={(}>f>JJ_t zmrtAO=t}F3b&q9GkMj5V&BndM7V6IQv%?|i=l!qRlDW{M4_+JO`H|Lla5Q20&&|Ux zC8O8>TjNWSWkHW!98!>qIpS;kBgL=dp9VKGV=HZYgf`~Pa=~<0+gGP({Q7tp^?$ew zi@&b9i=eQ&QuLbVZQJWDSy*fR)F{s3C;Km&fL|^*t7U{0knOgdlgCy)dx-^oqJ*oe4B+!7@hOllDnCPcO~6jpC?Ea5&OH z?|o~;W2Y;>6Jj{n1m!=xURh$0=z7s?K|c}*XDYSgr(*98c&?TdbW_mzY5_*4hI8}X5N zZpFtVT&O`eI?%9E=i7U?AL%ChjfHjvUDGM+u0p>l;IFUrUB5kPo~=1hxKJ|T_q)2< z*?g&(RTa;b>FQyD$nG2p2)oJ+u}WuzkN1YaOx2lbN2}xdXH1=rSNF^qkH#y#oNd3_rW(Q z5UkPZ6v8VO)hYaWk-F0OZQq{6ZjO^uUXS$(X}-%q)IU9YnHh zuHHS?$(71F63p&S&6&p6Hl5Q)LvJU2x?}1DJioUKP08@zU9WpFE0Mgm7t!-W-m!Gv zcw-r%_KPA{m8@hc7&lqK;jkftfd)eEyefXo90_g}(L_GbTL2^Pm@gJ15YHavPC8vr z*|Sxk+kB$dkd3w?$}VfS?nBnnm3rV^PbzvI>L_J+hZf0@7lX#leJWog2@#9;_@q^i zW~6e5#MWP#yo-zclN_y z(l2noefrpaxy%gj8>9Db+AaK$efmDR`QwcGwshu^P);#?2X~K?SZf;FZrIY*x3Tb8 zE*ql8k$dE4VEPkOAncvb?Bb*D_x$ApJz+UHvk1b!0qx&GImB5IsQ(w=fu z5A38GJt5_|u2Nt1gC|s86EbYd5~s$gi^UGDQ#?JY5A|L4$L_mcwdRU{QZ%em{!LRD zm^Hj(c{xm)tvX=&;)?@6nxsvqg4z4a;Pk>ZhOsM1t_x!A;s#X4oU?v6&!o@xlbt82 zEnhCas2OGJ^{B1noXgtVSO^b4o*YPQ$h3z)Ij+;TQBZr=&J)OY$NfVr6&XdNo#tN{JM$?W38=-vL$-(o~NsElY%E!K7`moa2XW&X`<9tZQ4S0Et= zzdrTb5Oj}2Cp#x-Hw=d9gS}XICuUxgC9m__;E@NY2~tJC>2^wLmgUvDarVDJOGu#u zCZ+8F++*J&itvut+?%luG3xraN?9WVzskM!b*J8%aC4$Rp9#UUJzx!V9_~6Zt z-%%@R%--u?)5HX^d<+vt8`fz;wC=*~27&kB2b_Zv^jg%_Mx6yg2tX@qsR z)gFH#C*IVy@FSAu`p&oUp|@jO5fb-)^-IA9)Anp@8Ogj|kD|-LWeDW3M+7+5BP5 zcT$r$l-UnX(b;&-Uj>R%?`dh?98#z|xKaEV5-swS`7G_#b7rL9u>Te4`b0blhj?WB z9pR^)l19YU<+X!}cW4{LyzgAKzIn%`@*s-Suz<@#SC2V<%8Y||xt?a@sXhByx@)3u z$_>lT)JRsa3osQ97+oiMt@ADJ)dcVOluovErU82%i?%JdElfHtb{c;v;v(@$KgpK| z%*)QGLk7{2Fv9ODi}*q=#rK`&@bNc}+9OSHoXee%FJo$f-Yv6tw5krXdt|=E{G2PU z%hiK&Tx+2iipWW>xuq#Th;S6hh1Gc{^ zTnTf?3Z!am+>6-N>Jv_Ig?2FN%X5fk-_D?ZU^m_Op&ad|%>n{zWD43XFTzQF|*4Uim)Vo|} zOv@7SrFH~Xh^1zz4Zm8cmV=T!fnZ}~(2vhoOBor8IvgEJZQYB}5|noiBg;PboBT%Y z6G$dS2JF$Rtif4>2cIIn^HQ`C783{*(bsvJS2Eajky`dJV{+5&B5&_34e6-;kyYRx z-VWF^KXN8-h>=%}wRN_uwzWGg!q>Dg>Nu&fb`Vws6^r!sWeKy}@iD2P&^XxrMKA-( znU?4%3?T}Uq-@&Ykk4LC@5|qhBWxe1&z%1kpkCMEw zZ=5C1C6MyBA)l7k^Sds2yBNR_OWWjUD)!ED(D;BdYuej2$<1#8bZ^*602j`Qc@ys-sk!9P^Cc5cVMl`Yd} z)l(tFqdr13U5`w);&y_P;EHvM)%aPkE%5ir*Z!&H~`!HHXAcD-&!@{pT6SIN93@)p}Z+gv3L zr>n@!elW`_<>X$xwXXdjtR_`!Er5`LHeZ>M#4G!{>5a;8SUAsakHzuBlvAoU>4Eaq zh1L(9Yj3Hn5;}IVMB0;nJuzrip%|t>?q45z_Q;7J-pCCWW&qQo@5t{Mi=_tp13l7t z@Jd<tn zm+Ci$2C49!F`tNb4=!$@J$v52w`g+cAs9Hy;PUQr*@}o1CCAj<1>iayY zHP5FXxqfxVRe(NNDP6|4Q;hq#YqL>N9t-~5O4sfq`kcn%1X0jag=ITT9{htvo|I4U zsy`&~gC{n^Q~gzoze8<_`+obUc?smjHmNK}dJ!RMo%8|xmDtM&Q4pmpQU3TB=@ABeUl)8ZSL*mP10NzvsDB9(ewk4=X3^j+oDUfqNh9KP>0C z(ib2m{_XkQFWmRHreeVK;`R4Qfq5U78VHw94P3_U8k3PWw=rTP(-LIO=fKooN)^)r%Oesc*5jH`wyCdK-kr&`(=S6OxUYEgS@nMQ z!PG~*i&~2pet>-dz13%n(4_Pv68xyAzv$!CSNJwUPwk+eaY;OpDTk3Vlgl@ArrD?K zv)IKBO}Nj|Zdo>7fcFwJ&P6V?cyDG&dWaq5ZJLS)C+?R&1s-PL%UF;^G@@?|Pv?F! z$)ZBuCo?-;Dd~(=%doIII6f@YWYYqM3o;Rlmb-9d;7iIx9wx zs(Y||5Sc<>7jPefig$RUk5aD^w6tQ5eV!P2^+$q5{x5MMV(uF|6wV+vw<@o=Z1M4( zB6X+=-ezdW%%%o4(8~Wptmypo_%Sci3E!ErAri2rD@52*7L@d z@)v6MX3=*>+Tr{x3I^rn@I_+0fyM~ds|up4F9}fJE&SxC8(-Uv>@_UI`7={)lS6xDx~l|^>nbIlnC;DeWE`w|WU8pkbyLso)y&0A|kK87i8*SC&4_OhzVJoQhC7{}_Ru6ka> zhIiio#dHIyB0(|W+SUx=pW!%>x$%(eTr;Suk2+1WB3%{3#X}GC{owS)HHqI5*XCr= z5J7#l{P3=yv|KgIgMi|g2RDqW_heMrLhQX(ciBPCbIkzzh@EwK{ZN!;5Qo!A?j&)b zF8?0p1?PN|8KE30at}P4)1ZBRpX8KeQ1rHy^-Sl{$AiuZmZW56Zsynx&-g%*nOYjL z#kQ2{E6lrZrVhqii*;`_;GEX881>j`j@e{DLW3PWcTyRj*S=0Q=qpRj-1Hs0JAVp$ zO6cz{K+e;8bl+$l_iKvM&cg6f3d60hS5zzSQLa-uyz^2u=$+;FXBoSOBJmmc#9RVx z5+;|kJIT03fhU(3kLi@Y{n3a)-)0)dP_zE!im1-j4!IX0T;t-Y1_o*Fhq^leHrhqri_*zuG37mt3X`|wom?`?FmA_wX0f7y6yx!TqB z$*4aJJ=Sul+o;i#-g+pAPkZHI_-oKJs6sBWLa$O}83gV!P=};!Tmp z6)TrK&iJ*#MfNWl{QLoCm7}k&U>0V!;lzEYk24vxBBvK`9lP>`=*@@6sn#BQm~EME zKa$QhSa?^mSLU*gzq>E~@kwV`43=|Z{^j9Ntk=Qw*`A?_v#b4A4^#rI0vuVK%zL^> zmb~gDzKP9OwJ7msF<~kF5fV*@fe8eIh)Ey!bt)NX2y0U={+S%wV=CLQ(sh!SyG8%Fwgl z-cRX`xaqkKNm?R=X)Z*bQb+%2qDU>&F-fXuo8acrahXI;x0l$fPM%y#AbiN(Bt591 z$E#c2)dhFfnovQZs2PyVsQT59k})KmH%m-ZG%7C+ZhIba!`mr*wCBNw;(e zNOvP3UDDkhf^?T44bn&>AV|Y`_xV51eZSm~*Dps7Gi!dcYKFa6pqnsYP5Gx@Dv`C- zM;Ut;FzU9|4N6LM8Jl(l1j|CV_VUlHd1RG8QyS!QGSw`cFxog1cWki6S%$U;61t4{ zo_=GV`Uy=Sd#%FWCl?~gkJKjkbCaDXSSW&Fz#+_thmhlk=MA3y+==Nq7olac*4>eq zz4$QYr{BscotL;{FhOG5*Znd$6Lfn(mzO{_~k$+Tz)J1z`A9=U0)ryh{#T`@-(T1uf!A+o`n33?3e1G0D4G{eFoK0+gC&` z7n7BktnANr(IxLQTLpcY@$D%R6=$6{))(1mwFz${#gQ=osL6ecs^J}1u{}_cS5z<_ z>m4FYQU6F=gCsfR@R9>PVMdiNz)FFGqqlcSz!vnAy&{c+8qT9E?`ax_ydW>H?|lG2 z;Z^+9Y?!1Zx=kv}_U>nYMnb|wXT0~ZG`+BtzyIg4Vv`LC44f=~HUk)}zHV~3B8fq= zbyrw>wqEM}9$m^RB@_3SudNc6PK%tc4<45Pz|&<|gh5fN1o6IAM-+91prpt3L|b3Y z&CN}hZz^T>rnCN1r!4J5PUdez@Jn_8*}3=gLe=TB+LdKDV_8o5L^JNi;lBGjFQ^(u z4~>)E9r7Lz+Yp^FEG*9)xj+RaS09?f&*(gbu73v{i*c8cO?;$PT3SAPshXJG$_Zgd zNp7@Dv{t7YAO{3V;iD5JcY1#y{rz%iuRrY&~OmHNXE{^5KA!PGa-xD?+q zVN^yM5}Ti^DVL1Y%}0k?e_iIKN#c3#Bm-f}VYMcnlCyI)5t)nzk)Dg!XlMU+kLqj4 zoUvF%i5r7IGNk(4=EA`rvK0m+OKcFaZ~=aXuwtvJf2X){XR+=Q?4X7=7dlvg>CcZd zs4k&)L)4@FA}r-tAeZ20RpX{CklCZ|F-GS(Kl-poI>};_ee)2;BStU(Oi(JtP58m#ny&#YDsJyCn_&1{Fg@FA@3VmU&l=kF^6)K;6Fs`Fb z8Z}P%2~$O{IDO!zIR%-A=VAD|JpaY`um&3UZY0;qI7cS-Pt4D?=l*FEbn|WOFhxc1 zx`V>F=5i|Unxer=>d{eQMgxM`KlD`<&CvYNFsKr(t#;qR zZ&NSu4uokebC@`~LVfCLhjdOSe&6s4zO=oTauX;v6yY8FcdRj3cizA#%O}0JH@H)( zVR!6-RBmEJa!Ek;1^o8L#{GWen>c1l@dm2Ig~ljL0qHV^0y4MJN#S?V)aznZGSH4yPYIP!0E^N9x%p z3S89TGFyKj<-8wTj1#xZXtObJCr1EKoMu;vhCN^-EWSvhPlTJhgcMS3Dst zXfs*ZN|brnC+j8%X=1d!GjF4~KJjQ&<2+x^>7n9C{Ry4AAh()%ly?_K!a7EHi2H&L&eeZNCZRz*+9sYJTK0JNr4P<*j&-jU7MEM=?o~=_1kso*z3xx6&eNzM+k4E??=qw7!(6IMdd##G zatc@EK8igjQanG4y~Jb<^}?)K^9%#?okb^=h{%;yuE_`YE7+AL#OU+u1$-%Ojc_M7 z95?+{M2^&8Mek8h_5JI`5&|xTO8-401_w79i(=ADIl=mIHmRHx zMrxr~2gzqS@vo&Bq_>|~8luwG#*RS4`eTk8QP`UHV)z~FhOhmlJ4E0~Sx32;ET}I>>qFz=k z{B7sm8VsM@`X9x7zp1q*&y=WCnOw7mkJQI&^S?1vl}V;pKsQW9VR8iY!hXoXn0l9Bl!mFnno$r{OdI`y^q186ov{yQi<4@qDyD;hqo)GiXH$RN z3kZaj2HWs^_0W1$Nhn9oUY>F{Lean8NVc zZr>%HZl(|+ztF_xe;L}^R2mqAH^OX|VcIYITGS@+AoqH^)6FNe?bq-+v?Dz4NAZXo zV&J#|bm}R31dDI}jdf?=D_fIJ#gXriO*m!g?<`m}u@h_Ar&lZ~CUB-CLpc#lc)%>4yk_PxPkL#8e+f%0FG@yj2h6=vcs z6J)9k`BobJ&WQBXVrW-xLsONhU6qO^y413>rcKtkX${}Kdsp9>zo5HG-YL6EnL^n& zg|PvabbALD|K5U(SmQfIJ5yl=pI>;S72I2cb`0w|VrN;N_ebTE=b{ucf~6Zh zkCiF8O!D+)$C@8nI$gxD8+4wG0>dV8k zKN&*Hl)szHRX%N)g}N{_^boX*!9X=mE}abzf57)B^K~1 zD4RiLmZ}Ss!rxftOGRguAIB@9C)f3nQ`DQ8moBH`qlP_535m;2oC~>-Edz~it z%4Oqn>^0g;3V`;~79Ri7nZfaZl4|Vs>BjbhG;TggT~#L5<3ZF%B&=6yx>ORKbgO6`Lk4+R88L9 zzVel|;%p}I+%dD-L$x8TLic~`ZRgJo*o2~dH@Zk)=pSa1g-n`AR62f9JFz(KRt~%=WxUB9h_gJvuF^EE)2%CsrFK8+0X{H_}j<0 zIT>rhiti;Ks_UflU z)*xQ(;?QcGU+1$>)pnStt;99@>e@nZ#0GNIPZ$DT-ANh>-GsZmf>AzcmZ4uHL&a&l zCwiW3sw~&~Bd*A6*zlh6b-mbHrzx|$d}a)@cu;~R{1Qc&Q#ql+ zPZud5E=o~=QqBRhjF?Jxa+;E3$8OH{Q;MZp7Y;TwaVW?2L@J>5n|(kA@BW9yu5;wL z$2ZSBqRXd5R|+j3x97ALR)sJqN?$~Jl#`Jlq^U(NMk&Gk9*sPlCMay2Jp&<9OQPx4 z&{vgs>sw#rwFmcgM?3xlR@pD#7SJX0&1aqv=>F;q1l-4FF#OnjmcMwfl--Baxo9LW zJo7cBZu~vSVl4_*4Zn|w&>%Yt7X0ded-UTU7#z&a`2t$$4el?QbF*Ot>7x(OM@D}( zA#mZx|F@`{pbJIB%oQ)*Gg_Ppgb>KJ%Fm@^5wX$|$yR?h2q%ztSJ`Z&(`ZgT<@;rH zRYhwrENKl*BXpe!~ zWzs@JBV&<@aDfgw{n+-Wloe~7hB8{?e#{sfZcYxG!%RxtSWCWlUv=pe1 z1O$z^3p$V(LHz(3r-D!@O9Ir8#jHOF8v)9DMbLGbM==6PZkWHI3`nEPp#VV1(y+lm z9al^oazS26fZBi+VU8{ENv%bO34DEb8%Ip00VET#5_*giYpB2@Qqmir&izFG@0XbU z)kKsbjY1&hk02mnt;xKUsWuU)DhL`hwKiXZ%(6edf@K33ft9Tn0wlU2Mt~qqoL@9U ziUDr8$w8G50I)`&I(dP$dgg|!(MPO-*{O*0Cctb1Y^qMT5$ph9$O$O#5uY+-4w?F+ z@)w|jA)*;#;RjdtRuXHlp)EE(zg*|<-`DMIG1+0@hC$mm$j7X9h}a5*& z&mgcwESCK2C}hOvJT2p9UeMfl`53D3}rtgLr5FArx+eK6r=>9GJBHWEFru z(|(DvXacxa0DN_?1a^R;fwI&&6!0mKYn{apOu3^c(qn*v#q=Okri82nmuZoO4q(GZ z{saKUsXs0UG|I?NHd9XR1X#Z>M1CF_Qv$Y`su>ZYo-Ke*{ii9ek}!k|h!8$%M7zKM z<#I5Q)-VBi0VQ>-p`c@s94$V#Eds*FwnU)}Q5c5Yusua2rK+6={vKj`+ zj~!f#9#H89fUt~NUNZv5q2UVfrI#Hx#{p0SHJF4e+AzNVupQC>Tis`T>cul(*$D`E$UhaU^}l9Kf*Jt-<_$U?g2T zrGth@jAn=n`Q{vAxjkJCa}T-voG%t zfHQaH?0OKu{HE__@@5A z5I*E&T|hTO870&0xUW=TdlVf=@R6=n|@!)J+A zoy-S_eXI5o&Sg?P$22bTaz zct9a=s30EPeZj5Sg<> z7NV6#Lbf&pHXvpb&i4aVA{KFXG0SwMT zoF~PAh_q&UP>T|nWrRX5iwChIYR|Z+2yBNS>Gc05M00V(~Hq`GN4%o-wT7b2L5hwJ2{B%YHT(0em z8`?R5ZFU`VK?mTM1qk3)BL>K71`&Y7ogdjZ4l!Bd>j+%y|Ln>^y44L(Zfpl>U~~}y z;Fq()mjqHFJ1U4B%<+SqKr=X>Qh+Z8;!#;2(LVz|m3FZSpk{Z4A$kJnQs_FSAs2v( zcxhzsBLGT}B0d`ee?jM576o#v$a(MnpF@{2tchp(%nBTKG3%H4#bl>NJCnx(DD{S)WHG+m?dtMI0#Wppa1~y z)jDv#H7+-;LePKF_-}q2l>`W@6737b(csw5hfM)Y85A!b3o#}JoC8ug6R;14p+bns zf0=s+*bMYS(SPS-L@7i)RbU|}js*rUur6#WzZ4Tdjr2~U5^_qW)*kOdyszGTp&(#D zjer8c0jCrY-7bm(xjPl1`S0lbcZ(4HP|}4Aad1N2;Y*(OLI7|4e~wl|tj@=X%N&;N zztcI85P)XnVCBOC;r;&bM^Omxlq4hiFkpaX80s_tZ*2kSB1D%E?<_EtAZ!@H2MlPC zlmWocIR;o^=Q4&lQ80k-91S}{Q3Vka_`>Iz9DXi7XKiaMlL(wBd7gRTw^umk-v=`1 zkS#y>5y)BF0Wlol`%4OmjmJm09e_0AbKz-UFc^}l!JiIO4_xjVJK}(OuXh*Pg+K2v z#Rq|_Eg|R)hF68>pZ_ih`1gO(WdHY8F9i30-|7L8gFx#4<;mVA?u!6F{6FN$3MT*0 zt-eQB5Ivj|vz6*2qSg(RlBqmeX@E^mE%XMs+h%_b8Xct3ib zFi=$SU54TKtz*^h1RZI_QgTqLEU`Wjs}^G~;Kd8~nt>PU(dqrl4-xhKhd<9y*KMq} z8?X{9?SKC|#7kqJeEl1gA~5z+pAU;PL4`2{D*pCm8QkmCuk~tsJqBg*@83gP4EJeemPN_%B5Am31q7Uf;)~;KDv3)TF_Cc zsvxHElIDk$w%J?ny*Wa3ycJ`Z5IO^c7guC8XDO1=S@qw1>#CiB z8ThZ*h}Z2|k;fdg_;xUoqVnCiDVgn`v`i(uBwdN*=Ug@e!A*-t3j z!>mOW$>C9ofp%+LrikB@c_2mOcaksBK|&n#N=84o{k ze~23Ds!SKHhw?lRs|*cyJtmCCKlh7mXjG`)7_UY^TJD8qD>J)LX0!X>#*;$%<&*Z# z`-T4=%=Hwz10(`6OKUTZ5MT3@s{RoXbwFW zK89YXKof5;#JeG~)!@r16zel<5a;_UO}%*TQsnNQ|60`Ab{f&SUeS2Az5J!<^W!tc z_+5ndFgk^rsBQXRY>7E?PLH|?iNY{z85|itEQ(lNE_C+#Es}gSw)zvTS})FW$_(c0 zm`S`ErRg$*tf+n5;n9&jNz%}ei4mF@S)wmqZ1j}fb`v374=SPDFAkNd&M}L!Bh4XF z((px;WVhHQ330^HdKd9{sIecVWJh2Op1H%IlA(ZfFP>E>%m|BP8wTt*u=G8Qhi0Y| z*^I=kgj`()%x0!n(iUEnV5Y{CNsNa+296c(#g^Zap{Mt7yvgR3&<*5F?P%=tZ ziv})sATipO%|( zgo9OcyVYUG^^~DOU(6Yz46>XtfV0GeFC_iNDiD*q0|uw(?i`daAcYyE+V?1R<60K0 zF08J=_6^CP2X;U2>hIteL+>HR&h8X5-xBNK*@1>i75EA&E-Z2D{p)O>47|XUJWtrK z-a0*~_1NLHN!f5*P3jqre@~vX9he9@Pg}r)-OpEu>6gKQ?TDw}lemgAMzj15Z-{6; zr#)t8yJE93r5s-=xRn{1&3A_Jk$Y=g@rLhHnagyfu%zs1l&Y|o`0eY`wZyb>I$k2; z7c)KDSxp_7S_(jm*;B|Nl$f&bTd%-Uo(j%TVk@hRvCX@FRN@apSd*T zV*f<;`C1mc|A*&e^wjE33GDu(tccq{^P9E>yyoq0>e0ae7;DD*!CxbXXe0H zy3}6Vf5K1R9lN-}C$Z_YTP|rrI!Nm$izoiKF{o^K39QzYVQBg7XV)vFwF&Gam#FUA z+@moxYD%&6nWR4OHC$?D6%VTgKW!1I9uVFs+vLsNIsPhtgAJTLtsA zjHfIL9{ByNuVct~E|-z@Fj~UV?1dqO7BEVVkV$Jtx zL;dkB-Va=#ginTtUCGs=rab>lNHaaXWw3AE%(x)AR6a650rlx!CMgiH8dL2g07AMK zCyh2Q8+ITQgQK_XZ)=Udh#Xk79fw2J+R;2?%_PG4k60e*gL3Qu#$#6E zI~s~WIhg}?WNOrwURV!YR?g7951nh3tvB%_nV;GIat6w${&>ALsnPs^{C&4;;;6&y z1eZCum5=x9ZX=_!8_q@cWGLq zgzP=Yf%LL4+H#r0Mvg&@qEDA8Kh8dA-C~AhvaAEIazcCmfyK{C;(uG~he!zd+m}ZZ zJ8iNP`7uq-bFQtV4>tC^F%qW;8so)i5k}kIOSq&-72^a@{xIAm*ZcK}k2hK-qG5|e zN_>LnhY36#L;qItRB!z^(Xn1Ieq6Y^!`^2zhiuH;uWoP|+%nMlB+Evz9`#2?hE1s8 zv?AgHt?+USx1cSHhN#Lx`!vo)CZ1I7d4`HzCJvhHmzdbPmQ{5-AGq8S7V7Rn{jGE5(YMDbh>YgXnSm+8{1lFD%5a`f__y@gaOrUuuYx}rVN5Rmht62bWw$Ky`PWU zCaPjiX-;2o)f352)mtyyZ&wdOPRFXa_JKYj($O86oIe|E_v=^cnn+^$T+6CM>tYE4 ztzumFWVbPB?~_G-GRw^@H<`Zq4`0W(KKN9=U`QEJ4cnXO@5&*57?#!S{KWZ#M~Eu= zSYJ0?q@m@TL+fGrhuNFah>pwdBJ~0^qUwl*QFmCcv}dW>U0+u;6C^&URyVJFtVP9z zH1vF%HNnB&%cj3i4QEE2Ngixd#koj={ytrl0$i%8VbnZ_zH0bIAFK3_bTH<(5nl+X-(5=NP8aNnNxGwtaxDnutE#qpIz5F^tcRXHpKTN9ZFV zqLJ{q{qf^At+{jb>&{F0jo#S&jaGaXvRd|>|1I6WxDK`LBbu)9!G)8(fzPnGegN|su6)5kRg?HubmxmJZ)%VOGMFiohopK(VLP}9==5Q}!vQpD1ZiG|ua z84)N4`VLz;U5C!n2x$%}MD#dIvSOrIjCjjqF|KyL`^;#m`o)9gCLnNnp$mh{uj8E zSkBfk1iWP0NO1XM$Q26Rly}FqZfH?FMA|w!D zFvKmKcTwTM!Puf4bErf^Qiunvt4dr^2QJoY##h%jtI)qWqGy`S8%}kvFek<+tC_N? z=1rB^d;GXv{8r|VM2b8y#%csQ*1Yz=M=k3&59rm?OZx}8s7aoin}Oxu-)+hTB?f|X z$6W)oa43=&TeA-H9{;sio+g(@Et)rlW>1^8u?N1xF6Z@i6s2EG3N6!O2JgH32m{p~ z0?koIyQxQG9N)p<5r%q<<(!a+L5kIGKg9aN;F91(a)5u31SDEzQyiKQ`t?NYM;1pKq59<8>tWn#KCk^j{3t!P>h>eIbzDTDfxW?8Rfw@}Axj2tzNA~pZJ|JeYqFU6*YJ6!b6I`&Zl}H+w zT-t5@u!(ljZps1*U7V?B_t@)cb*9BE(ULTp32?H)38IE`qW&Wi2?vYEQ8+DA7an}k$A+w-P%(K#t*bv}>C5lY-!#z8Celblde$73Q?;QeJZD7) zpkdAXMhS!F=XszM?Xj`jv88a+NiOc$7(&areq!ZP!R$;@Cuv{0sj^ zb3u2Q(Ws_p{gwW}^2h>WTgiZ>M1;QhLGuY5pMjG~)oAVz#2bY{SmADhN(}QB(mPfA zj%qJ{!Lg^_99+LbHIP$%M+Ti&UP0YGDj0IFpT4L+ixAcIE5IwFIby!wQ}_ma?B7{8 z9x;FTefG%Ys$I=y52_ z7e4iJSu7Oqy?jiH4JY@YT&yJ7>=aXpC5kdLS}aP{lIolpC1l#aDC6+ce0wg+^ZY%b z{nVbP=_6qluImXlqV!5y)C5`ihb_c|h)(Uxuysx;t$!*qP-`QIvgh3>PA3VYd<41M5-Ev#4)8`{Qzz^wcc@O-RQPj9% z@`M<6367HuZ<-Av7MiQ!%g{zr+nyZEY%KlmKwH(pXZTf@&kiB-G5H#+vXv=l#N6Dt z@O{lJYkd-x*e6qsgku(n z{N$5xjaqvzc2qhw8o-EIvA+RF=8e+7fma6P6=(>B=wH3b-yl;d428zz{$Ohfj3_@e z;PZ8zy8YU?m|6o}E=tg^pGKF-QZwm}ZdzerC}oGIqE6jwr7IU83dYoNjzQhnP z+n(PQdF*l8q%PJ(7_y(X=G?j={icUe?rH!A= z|Fx8HhQb1L97vljjF$&;$aPSeVAjIqF(%|D`a@6h_{Xqy&oQ80kR2>r{{TMl|i=k_6QP~u)R-{;9#e& zHBxtml%JCf(GjD1N1>K#Fez^m3R)>?I3)+2x?bcXc^qUh$MEhxboi=tDlWJ$iN5!C zOLSf(^Kf^pt~E{%x=$pJTeeqcd#?Rr#405tOuYBe;&Xv<<*~LSQqwiMznqU6QDIDT zaa+dAaAAT1EfQ%3N-hiH-Wm8R$*gZKkd>3@Jd*~_;~A}*>=F`17UFcwYCGDtZlf-D zPn`IvK|~LUhcp0#W8WgpG~&_NFa-EE_B0XsS9&(lnn0YNd#QNhV>uR1&mH>c4XA&S zNuJdyA(+4%Phpwaz2fh~IB<|ewVMW@e^1@JvERy9&p0*j)4+W^<(&SOp6e<0!&20t zjyC6>uF?El@YtC=boaV(I`qsrh)Zbu+oW_0o}#aHmXZx`BL50R3r_jg=WyE z$H`{J^7ALdVfA`%M2TrUCn&@)&S!AJABl^8%Rv~kJXFm^>3F(Q#^a8QP%3V>BF=#e zqi3@|zQ5UqHvF@tB$6zdyQ5-g0flpkcS*c@H1=qLhTOZCzPI14U0WlZ?pYs2;9P0A z+!r>J8ZOmaj$K;d1`v~|#}}34LB)tRAD@kM5*&Wc>tUp%+OckyeJe4v(XQUw)Rb_; zwTzN{)l?Mv4rl)7zo5ZF1Tc8KR|eaP$GZZ%jln6}vJ+KWs+(q-qI=lQu-0$nNYxA) zEmvq21y8mSisiHzbCjU+&N7l4fF}^x=;vu59 zQ_u7$?Uz$=#9fr~_6ysPLv#Ab3WLHZlL_9ynT`)qjGyG&PH?cf*C%m)os`3prLYa# z+J_k*bfbOKjO|V*%7SG`k{IA%C4bWOsZ*!)WapgQ?6TQrb6Qgf{_?>Fq3<^a^aF$3 z>o@FR*MPzlzV3>OMl4472qKs)DX||UnoCsH9mFv4mDvdWrlbzPV6zCGSdQ7)Mu9gZK$g zg_scX90a1hu>#f0Cvm9165ispr5genjFfN^gi#mZg5@EN7W(#V^wt=2)iVj8Ep_@z z*zB4Qjm@;|ibSh(=}^CKfPj;IiTHBzf)VfF$7`Y#-qjlc4$G*%74~N-D2bM4svNrJ z@(qy}x5<@;Y4b_5qZ8KOuHJt??EKQmc-RgPKEAb(OxXLI>=gUr73Hp0kLGpWOeY<^ z*`_wh)_(wNmVF^DDRRc@&ohO(y1dmx`o50|Mf~fGQ?q|L#q78VXdRMnNeJ5umPV+9 z#acMyUotB@D#oxC@>0jYP5kE-Vcbu9eF{!P7aQ9dcPQSYHt>nSFt$Q_3E<@EKVR38 zNchwE&!%)_=O%XVV~^wb%-6!Z?3}#rrH=6&Dt&w<=f3#g-3p;qZoiBg2J16<1$yf1 zNp^Hx@-z=D(i@7;-YIJzeT(}2cvrSKHb%`dQ@z6NbumkoYaRTh12k;Rg&o3)xS)Rp z_VJ!aI)k$Z+Q>3vRmMl<4Nf18%5N(+bs=V9XjaKZFvbzLP^>(qCRU%DWx_`7-u zmV5|DA0cjH`rd8r0)O5AZnou;$W(Ow{Jn3hx90{!PG|P+*ox02+r!MHwh`*hXReP8 zskfP-TgNZ!q91>aOXnhKD|_NA;m}{u_w+R4)2jEN^!f@##}ppXh3w#QYPNA0b1^v` zASXe&>dI@4#I~s?s0+V2;whX!l{9f-WDT1>W3TYNBu$Q#q>!?^q<%2M!>SF8<%X&t zHI!Q@dapt=B5j#R6r3L3g@X7)fM9$uarM8) zwdIBX0JSNp4j<1xT4vGwv$xcL%||il4;Fi}4?Nk|M^4EU6&4u&!n}t_)PL&(kqPEI zj#_`4kH&op63F8DOPcen9aJnelguyAJ;*couw+vcfGt?8dJ8jDt04sK9;1 zN~+9MUAb$_cygsq)%#h5=EOs(UWb+)UB}I8`-sJ+Kuc;T`5Wy7;SL54vDSOhN*Q)E zHmVeIIe)mFi}e%`tYqQ8->)3Tz;kTs_(I!&^oCLdlxc@{|u&nz^a8xTWw7yOfCxJlYk;i*EvSK^IcTEGQqkl1H_6Ok*ybdk6z*+EOQuz9gFc zZde`}W=V;5&u&_D;bG}krrFGEvFV{+um=k)$JI5h!11K{E#P66_=nD1N#Q}irrPC` zULiYdVljVjttczd$>r_cd`>y-u-vh_bwa6P+wki0K{~O`7;{6G__cHhLJXTbMc)Ef z{vMSJ5K)*;2V=|9|3;yAE7a|P>fnK0C!v&OM)j&P(0+&Txnzx>Hpamkj;0Nj(o*1` zI18cNYf!L+U0jKsijwUTIf6enRQa5bdex(Gv6|HVVDQ#y8Xf<&GP<~t&adJy{x7OX zI1*2(H4y;;3)KbBn445AII+XO_hvYw@U@5MP)0HT*c5UHa9`*z_G*6o0Mw5{kH8L8 z?3<|bh`TDP`}7i%pw**Ir8Q|D4-34~x?O%aZgaWD!STS8aLEKMnkb`3P@+bXG#U$>gfrPC}6@dw&p|p-FK_q%|0@ zLiw1Uk@HHU`;1JyW4qD|aH zOy6r%L+WF-Zpr<(Clz~iJsmYNyY0Kre7_No?4U?Xy6k=n8z1F+i%L0lWu`j5*BJw8 zB(W_)`n#dVD>rE5j%JPQvM)IW`HuKYLpcFQomb};60hQ`zrAk-(-WjW%0@XETgZ6- z>lu}t7vN^>M`AlF950(L>z`nSN?(!Z(7=4~YOnxJeF~vdZOu#q^%x7H4^yHZ;Cx_A zegL~xGJR5#GjMc&P?-CpB}1DvMTubrJ!LWn|7~^WAneaU0Don*a+oYv(m6LXN3XqL zajLnY_zh#tun#`|aN@vf8mnSFdIuq+^0HR7p<{rNYH z^CBaDWcahzvkytQ&!9ol1F{ve10Q+rK#libfsZ6YInRV8@At{=*|5LiXj#YQ5$wq1 ztSN`vFtA6)cz@wesdQWq64ZKBNMM9{<+K$+G8R^v66BzmcV9$=!$w1U#Y9J=(~%4* zJ-PVC?wpc9Ngx*f*L$!;u?#n^Wa^psaAaXGgHU@uGIB*K)ZimEN`9Ljv@0V+nKkbr zen_{YvLz<0r5{wHMsFt=Ya?NLuG2bvzx9<-yw}`EGCH|%5W7`=+v>&|Ig5LT6Gvph zaLAFtgZ0|$eToVEZHo`iBWG?qh^)N%1{rrKg?#2qks&C;tTF` zalB&XLa~3$IHY5Q8fAwlYVxS?Yu8__-y`&l4gG2<+g0%Xqi)5y2H&iJo{c0XhKA8A z%2&@mF^hHl-o5?ix7I_lt6R2j(Mz4oU7lx&o7i>`v)DERn1qowTS*$bOzcx&j;xSG zu`Y)g&i=AjTTjh*@8`ewwGS_h=XwgqDtb`=5Di1cj(pp%7F`6FUXL}i z{^XY}L6{VnVF=??O=a@j?2D*@Z7mkjZWBLBWzDng)ctG&LD{rCZDa(_% z)-zJV7;3>7YQUH(KE%NNQKf4AJFbLBz_XT|dd?+}pTH}*bilWtM(Y&p-=gPZs-0b- zhO<(B9-Na-4h}xuUGNwhdNoq^t`n$_5s+j`lud<{EDwu#V7tz!CXmEf7dAGTK1I|? z$JWBBB3GDFKX=}qylFMu*-#cg3&X+}oS3mJ)K!;Pg!Vt-8E{H|v$3BH*}MO<8U9Ni zRtLoD7U~dUL)6F_S)-|=6OlGPY@pPxuDFEAdKS8=TIks1y&uDc_H*3a%4*2(jldd- z1f~<3@+UHPfMhvxaA(WhVfn?z z__idX<>iSSV)yzXwP_$Y%25J)O>TG1|f2X;R7@68-m^Fktrj;m&p+~}OCBqhwVYcn}rYGhG!Nb)zN@*uK zaj;8tuM_NnjB8M?foL?T+@yhR8rr$vbgMYBqElhxlD3u(E|yMXgCWNQdT2NYdss3c z>(q%FcXy_t2J8mt99x~iHV!HTjWh&>CD}R`_RqK&wUl-Lit9+D&JCZgc43TRSFlO^ zmfLV0XibTh{-K)-6%|`@dr&VaBT>)LF7;vl1LC(lh+yDhv@uZ#E{UdwlSse}#oYAv zi0tfQ@TY<~_FM7>R8abYP#`NK#rv3Bnia=hq^(2`@^@KIZC?Q$%`<*O2q-;++ zBzdtN#SMHmt6({;QTbKokv45xi`*fzQR9y9Y!3D^jGFN8kWwJ#LY=WQW-ot&xv|-0 zl*6Yz$*MHVZH>36bLFsi4!?k`NHMUAf6pUnRIGx3BU3vxv z1i={!4_MfPVKMVDg0q>bw9X8X&-N^XI=Z^%)wB<`eabiO{Gr?EC! zM80^wzl4E7BQzEg66)0H4F;1pHxOWtm(s_29?epr5R;JLRDC79UyvfDhD+c+AOUd^ zn5SA(N*Y???&zaphIF$SK>-0lVDN(Ty9oP>R%K`lQRl$*x&mv3sR*@-#-V z>a(|mtR~96Lz~)+Zbv%dC@W$B49t^9|_~CTZ?YSJ7w~kJZ_Y##zs$M7Y zuq)mr44^aXsFvKyk!QlaokELv^4$}d)|;RXls38#2#2$+B<}G?(@{T_=Y0@^T~mJO zqXsLBiT}B}NPaOK(n9_?;e`0KB2gE0WW-X!zQ%0CcsGL*SXr=ar1g&Gl()!P%Yx8| za?Pe$1lA%8HhWco>{HAim@tZeAs#qiQmSvN7;OH6-gyrH#w6?7V_Bf-qNcc5xuNzq zWpI*KefOvVotp?l`b(5`j8CFsjKQfKLD3H0yc*V_REz3 z*{Uz;IjL1I78`6UCc)SkCK3W1$N=R&a3uh%^d4I{OEGyM+}Cq~P5?x6jlwF+*CXoM1GjNd{dcf#R0E6k-1I7=R zQf#nf47)cnv~{J{HSqSuNR>3VWVa>xxi1_9ew=Z!p7IJf{Yc9jX|d8eb56<|eCuFy zJvdstpvT*CUH>T1rhMx|bLxc+o=G3v(|N-vxKDa(iRiqq|3JJTTCV@`Bk?3f=D=2- zQIlS1cTvO6fi|42?n7(?e>$Ay&zUn*%!oPIV0zPP!8sQs?||c^c*> zKp{C5$qbRJm&AO(nKMF^e5c-EWM-5u68xi*UUQv;)Uob{!!^mp<71P`19p@zYl3*+ zcK0srzb(@IQrC*Ky^ZXW3+TrGdHQvJ3N{l-p)WO(s4(c3 zlE-}-l(>kqGS2q|YCOkwLQ|{bLlyD&hPDi= zH0OP;uGq#(RlsnLGqstsuyn1DEHc4c-`TD!s+V|7@Z{D0#L>I_OPO!+4#Dqw5=Mo6 z6OFZ$niOrxNt8v{LTbmhR6g@k8)3r4AT$n%)cr!?HU9tD`|@z8-|z1k!`Q~Y4Os?b z7eh#v>|@WqCdL>`lt?5gW2|GJv1_v>d)88k876y$kVGL`D4~?HJ@4t$=lA*ExqhwR?)qcFip2(#%sk&+$3^#AOGKIVtHM;el>H zbeyad#^T*mC#)};3=}use}616n*3pOaWL$d;8`JjXNWZzD4=`wvsBE%YV<9E-paPA zs5F%O@jLAgnI)Th(_b~KbbB_)UOD0Sp;GsH!lc~OxNlc#8@*Y4zGlv}+=xs&@;*W% zjJR{<*Q3DWcY|hM%tk$n-R~OD>__N{g%3)B%he8O7v3Ef`c}HS6LGI3a3!3lK%ANg0|0}#RGs+vcT`8@lYFBhM zl59txpJ@ULw6S$i1o!x4PI~vih5XtjW$@o0+eZ()zna-PiTQBEDgygxrt<5}$)CP! z-Uy8@vb$#G3 ze_HQYe9qVXcl?#`cjF;FF~tibjvmWHap9BF-}MyOnp;GT2aa*+j~b304F)>I+VBLb zX=Ug$ghenZfD%w=E@+p^YPeX>(Tav z9fa+*b1!2id;hYX*`W>j;VdH(qQymbNNs=GDP{jPapZ3lzTA4WWz;8boZw+WQTUDgz?<6L;q z>1eerlOV%=2ZS~9=FAw9_1Y;{=_!w07tXZqcn35X6-j^8_~htk7_;`nTGP4r*1m2< zn=$E?YpNcR27qOQK(ww@t<4{CsWlnm5T@Kz*;p&?(Y1f0CHU>yiU?<(!JjMdPYhufZr3teQR$#^3Z%rgw<1nMf<~d8@uF>8Z+^* z<+>ktUdhY&(s`}qL^_1UXbLeUa^~!3@B1&#mfgsAmmlfXvq9^f3yw4YEI0F3!DdeP z=4awtk!8>O7W3V~XGfoA$_M${)vPvf=ds+S-qF}SG246*A$MI|7W(Y~!?s z{JHy~{s9sXuIJe|`U~MpA_jp_M|}0h{?R4IFvv8*G703TB=JOB=|x+q+Hdu-s1IkW zKYTotpc(4tayBpi(eW3_av<1y&J!?545>?gYODbN8P%1WxYpi%Uuhu8f7fzH*ZV=D z8f2r8+zk{(J!`q6Ss6Hf{`L>-hwD=hV|H@)Zi5SERWc9v7~6|?O;{=gYOhEJ$=1U9R)cI9p}yZ-$9sc-hJpVliUui4%jYtgao^{{6B9#z&J!-X{A zD`3&x<(6#P7w{DKe)qs_VE7I%_xoT{ovi+Sjrr@xcdiS-%2o1DBn7{P25(A%Nj^!dc}uhe9h8{f$f z&h+KF%^hFZzsYf2RpwxM-@9>D?7Bom+}-8va~&J?3qM_*k9TOU3tgJNZq?SkcPIV+ zFMReCyu$GeOFTj_jpgCpi`1@`X0z$WmrQ3X^Ui2Hy9C{GWXm=i?`dfCO0k)~-m1T7 z`P65m=&THj^oP+pVWo2o6Q0GcGmWu*)d88~~_$G|R^#N{>AP7Zb|`p4NRS%3=g(xy<;CvUiT=dqK;m-tSdMV&-6| zlmSe`-J58l5akW}{GqSF(*1SdEXVcd*IypZgB|nk|8;Ef`&>kbu}`AIb@bbJb0?p^ zy~f$d9O7Nn{Z@D}`OVWN*Z+2XbA>$%MY){y`(T4`4t?=mG`V?o?c46k4)f^`5%KL?>_g3amgI%ip_w=L@P(3!^Y`-1g2(Q^ zw{x{jy|V1j9&`g0dL$0;*dIN*0s2wYee#vT2k}S0A6ef%wOz@3{iy1w{>jgVPY!-q z+*=rEPfG}qS#ZsNn{vK-S`j&`-*BVZ%rcofL5nLW+t3iTwG`&3P&;M5AY9bXff)#A zeWGvs=qCH=GJ^bJ(dFzzF48p2KKT`BIqu86bKt7{vp}TKdy;9Jc}Ar`>kA>E30zZ* z)u+QCUAH!%at(v;=Y#HJ3oAJ;E3NKKTwuH5x8W;3`zlqQ2hVn8e(B!$vbXuu8-5VT6d%7d z?rsO#P+kn`tE!Bj$zVlFCSQ%hrY*A!3NU%iiTG_?7#uIle6LWvSbzK1Naell^Fd== zVGl#hPAr}b>A1fti#N<)>yC@V6GTP5f+oci2k{dp_qgiZ$KbH)$-_LlBzO)yG37?{ z7fr0;vZL>`FsDWB1qEwOh9& z&I)l?3d(lbWsD{yr6FnAAeW4a`&Lnt>E#(1TQr&AJGCbhgpw)w1o`-O@AgT% zi=}KLo-ZSu+el}Q+FKWsNIWY38nwzq#=O_Z5w_lJ4dT=HSeCRF0n`R!i3c%E^~QC_ z{$deKidq>{^u!sl+muv<0am{Pav==h{1#&->${7ewrI zWbM)vG02N?#G^TBBA$zrL+Z z9zl;b*hx6_`;q#uJ0w?)p(`a}OINHq?uk>)a^TY`HylEOG=5SZEKPLHk5X<6b*o?n zV5UC{rTBtMT0a(_wfyovD=KbKD-7kF^ZnMjDpTQ&m`_u3Ri}OyRvjZ5qvp@@$jHcG zm|z~mKo+Vpkdzm_u{Z{-wWw&i>&ni+@bKQd{-4ipb?^S(dI$UigB{?fsK04J5szW+ zfpKcGWHn1D?#s4tQSY;k%V`JUsTIx5aI@WY^_qMo(#qh+D8B;5?WbjP+egaw)$(^b zoJDJ;YCs~_1yH1WPFVKHz^v1r+2b?jc|~@X-yMQ9Gtb;fi^N?siQ+MO&IT{%J-;@@ z1ynEDdxXd1larxM=VO1ai76=od5q0?-JV-(vk&U40w`4Kw>{mDEc}9kQL?h{;|}Jx zRL~OeNNf@K_QNMG@Al2VOq8QAVop$-Q*iGd&#`@T?2-8Z>Es)hwLTk%tkH+lyBTDw zV)~rQcpWnu#qF&6l-S3tuX^4IT@%S^!EdhQuK4Rr?zB7Crvx>SEHv91hd=S%aR<-w zB5P!GB(r?jxJn($Olx!J72{!}F-n4h16O+K8IAx%_2K!gSFc_HqPqOHyW8Mu?4#(7 z=`XJfD=Ya;&2D#eM8BGz7N&wazq3w2pl+8jB^w4KL8;o(mB*7&a6?g`0!`1#sZ?(u ze}@g8qX&IeexY0KP~dgb*amqNHnx1-eIUZ9gKX` zZ26?qN+3LDY6vpzQr_Jn>DC}t3qgFKvIq&Df| z_}I?I$-hl2cr@mEw7-TU(OT_`I+K38eKkq%%fQOQa79sZ@v&paBvT^5KsKnN?2KFI z@`+L)uk(M;2GxuDKV*aA{;S4ILgbUk|GR8ZJ@DTeFBmve1?Jzj$=*Qb?tj`Qqp9); z5YPdh|3A%x{~t6D{*S=1{YT*b|2b+IkS}+24vZEBFB7%Qd?D#nx`0%9BuQqy3A9)jEER)84LbhV3`BE{2Zlr^ZM^@FBcn0U1wgD|%+mI-e22g85!?QGl!4srD zE^wtSg8*j6IR|_nQ)feikN^4Ir}CvL2u(AdyH_zgH5GV7sfkaHv(lfzHR)ei9*{2; zL?|5QsVK65n7>%J2b;Q{qRC6w2#PkSn}Y@ZEM21luZZ^)GbOwqEtAt>lV^1Ptgz^2 z_(U?^E?b-jM&oK6L$X|pEAX-OhcWfbmonOG zm!w&zIfpNbnQ&*kXTce!L^gEbECu9(cs7E8qe=maQv|gI!I_r8p3b>N1c-acBD0D9 zJJ|My4((-y*%nq{C` z!Lotha&hrI@0WX*vuq6WIkGCJ(vjf+kmf=K7ELc#QsGaNM~LUBIa$O$O-Z-ysC2Ka6PW5@lKfg6MyyEN*zomZ$(U zO6+|uLpB=qrKM&w?BY9xt<-~$?|RvU*9WucWJK3EpvwR3wNM2}s1$2!Y4g~^aqig6 z6H$4?IZhd2FR2iFy-b1KOl9qz(Kp?!)3iHyWE#=#s$ z3#CdV0m&NVRcKYK`RcHPp)&A0Bzv|D21hUn(nOoc+g`QS%a?LlIbqYCqj67<4T0b0 zv34}~+Q`9KECBBtUbPec%O7}+P@r0wa1b+~GZ>6q`dgP|g#s|wkYMeCLAnxa`@{Y#shW6ttZ zz-sL*mZvPC<*OEGm=*+jC{#=uDzqA=LXCd~NPQCk=ZZ8an}bEUosuxM)X!}^N2aV` zg_~)7N{~W3b6`67&tP{)C5z~WTytG z&r*4_+5=>KnPaP?<09W@*TogD#kGZav6{S{=aj=P#k98 z-Gu}>IH@~$UBT)=pOS+1d%nN3ule;6f(qdzRNRGC3rIqOpPFINO(e&Lj4GLoi`)S#^pd{;U8o@JLg^GA&$tp z+hYCS`R2SFroF>J&z$j+lIF-!16jWrT{UpmXS^#bOj@yqA{E+#$;3QGJ~yEVU|X>C zWA0iYEowjBV7l6?Hs8>fTEnvuL99_`jZ)dTsJ4+f$if)CV!fL$qZWx2m3*0(VF7DP z%LQ8spVu5T4Z;XE4AJVP&2iuf6_wihlhi#hwxolGUo>QOw z*pGggoPOABud=_xi&!1MdwrT!{>eabyL*a{1$ITtftE{088*r@XP7;(iSV*6F=rH|X$RDVN96WlG{x{|S(3rqA1 zfqv?Y@NuAAOk`5GgeB~d+nlBE72=4Y-#cDmR?u^28TD(Om#mhA&6j348%k*P3Z#ZU zPamm^D&c0LH>uNOo?-mle+&+fEC!sRjRbo`iD|A>*BZ^!2rEE!3L&5J!TNK*TlHlP zo8*hGwS)#w%iA3?wIf!8a@?eW{M z!D5tAZ564ZHO0micZFyTzUeI+Fh`u!ch@(zxnhZmg&H7gKFZy#0#2lu+6QIQ>M96{k2gPmS>l}?-@e({fs_IUz{)=~?2-{okdLKINB72k7x+PHQz*m}7ceGwp zW@BFBo_v5|gQgm|v4pp<#Q`<`k62fLxD4x@bDpqHp=l!ufNt1uE~aJot79UNu4HgR zrcYQAxZZ`~y@j$XZ$ktziq^Xcjj(9l z!Va(W_Bf)KKbEN@xPNTzy}Tjw-|b^TwEQ*=+4pNmTbI_;lsUqwq6TU0_+8jBgw^0Z z%(#A(J(+{zw8-b=q&_cp<;f9HI&mMHj)0y4&{@=OMzn!bOKTfs@fz1S4#NQfp{`Epex`VYOBy9X~GbzSx)lRR#~%L1CoAHoJde9(oK zZ42opRK-ck1eGLaTb5P)0$oP6I7pAo3}v+rBXC%mE9s*}8r|PMTRYY`nf%c_AdZ}g z8mX$2gNctyXfL{HP6@mQ;^}t+Et?{U2J*>j+t~@$3lGJ;AWa83wU%Cy$eW)Wqw@#x z&Z^ib$MDSl#TpTFz-Gq(F%nzomV##-d&8nHMgCJ$l#Fn*%jphT<>J9wbu}gH5zkz3 z1^fx1jRk}oL9L+(Z4f}Z%tD_2o)13fPyCd8FkiHnJ=U5SMp}J$P>mGtHLvS)Fa*kg zVfshHK_DYU>Oov9Q6Q0WequndZ?q^#ZB1F(z$S%R#uz6~8vi-m=@IN5gEQ7=_bt9Q zotXFD&fa^h5?NG<&vTBn`id#TKkjs#RajQ;J_dXCv7szOb4)%-_TG_Ku;+Yu{Ui6m z0FSGbY3Dgi%xu>%J?|ufl_|w?xaCq}xBM}W^Z4AV3q#i{N4Pca?pQZ+PWlQ{pI)gc&7bOY$x-#UcV5y8S*{k_Er(U zzWeS=zM@$~URnNBkxV92L|J}3`r*gf41pWd3m=!>12)IddHx&@xS9p@OeF8rC95`1 zJ~w}2y7kJE%#@Xw5d9>pYFC1%hVYwe?p~`g`(;yku;>K-LV=8G7g;`D;uO3`)Jv@4 z01Ynw_tIuvhh_P?Bph2$>JB7!n-K35S}w&%U=^+PG?#;(^JZGd0#IcOt-bt%Dnti= z=t+ho0XXKLJj%D!S*Hr!L#F;U;{gl6(8eF%{w`J7tf`9jA|E;3O{-V-QA6$GFgd;$ zj7hEfR}?Bt4K?tt=mE{eLmeBP*qI~Di!WlsSF!>&qRh;vyQYmFeJKIQ`MeJiEu(|B zB&5k^Fq%td#pDNzzb8?{FlymhYMGFo8_ez&88b(WEanoufx~F`QPv>=g=~-nK1hNN zq}K+Td=f(ng+j%P7Fyx(F5d{G$~_fGf~H&@sjY~>~qw`Xo?IJdNS;bnN~D~ z5_bKGA~Hq8Y-3Su67$8LURBC_XAC1loQTm!ig%M%8N#8kKss#KTwO+ zs%jq)3+?Z10skpC-bkSDY6fy2?u9eC5T3jCs1EaGAhozjHhBmB(88GJ9xvd9!vtY4 z(+R!^gYX%(Q^q#&6lPcAD{TxzdM?lV>?T_`KUt`rB}-gSuZ%9>EwchUGw|$o1tyh2 zZ_d0eR7w`okdPV@n?ImnDLZl6V#&x&@Jxmo3>KGjo#V3uQ+$fAT}6yJkDdyfnmyNS z_@!)VdHi0j?7IBgRcNvg%IH#46z+~yd>~qNp2I~G3KeqRS?{r<(UCiRY?0S1$q z7eCVEeJMqf9R_AX5e~`sP!Kdq7{{Pb5I!Zo3@+*#)Xp=yqe{6q&#(rAiDUBXtHmy| zucPX@JK}!f;};;DUyj3IpXSGAS}mFtpf|53gGOA;ioR9BEN)oaB${(TIA0(@N2D_V z&yj8=%(RLEX>B2A(;~%LoC=Dj^gYdn6CJ$$qLhoMk&|4`m(3`Pp7Wl3!g{8)KJhN6 zH9~J0#~4$vIy{!^0_3RZ`>KR^D)+h4$CdSg3KWX{0EIj2b!_To8>$MGO*WyI`IU_i z6nbtJDu_a9OI@O82w4Y{9)2!D@Kg=6pWb#8_A0C+aDd6Aj&>6%Xa0II&g1jiK@4u2 zlu0Y;qFoeN{MDFZ1b->r^Q7BG!k`BhJ$XIZsPtnaSf19Q*m&PDr=mQ$j`gI3m+%lm z7&zKzih1@00sp#M-!r;_*!?j!{_-!Cja07tzrr+SwfRB1Rj)18awK{a2E5-tX>b5p z3hUWKqg<8WF=U{a3g+W4utcAzE}`X~S(mQo#31;u0WLM>52^wfDUM)i#Y3y}hg}uC zZdhwTUB8R=3Lhl}>n?>3DV4K_%2v+wfMuf(Ra7OSLf>)ZzRufHW_>2qQ>S4x8w}+7 zAozmi%PtApo$ASGXu%<6MiyLqb*r9-_v;31Qe13%P7w@v)Dhu;&yN7iR=Nw-1HLH* zi91cWGlZi!L@#^|Qup=iWq%q7=j>p;`8Z)fC*i~6`FX_^XL)f|3j4(+TmBDf!K8CA z*sYD^zQ86Cw#x;kQ)fFU9_Kk|rg_c`OWF5vso}~vx|+O^#j6_?{t|qijCFU)MMnL**MBavg3U@ZFU7}k45h?sBZWR z!+-ngYHF&jAb01iSUQ+)I#n{xUsP24;;Eq-4a4=UOHbWaan~$wAjN|MD#dcPm8@l_ z&mVGF$KEo>WR6>??Q<#o&Us3E*vo5&?OowPPgJm???Yk2 zH(NEteDT6ErBEU(wcX>DAiV+W#)qKm0hgA_^t?c?9HHx>1`(oNCgO|*P`g4bK`8ps z6&i@VqE!#FH-yWH*Jxiwd!V zW-QV0G_%|!>%D#|hSK*$+QJ?{_KyDbPD;5^SpF>clFII%mt-+YJM-v zW}c~-=3J1`G{Y3)!}w}k6$O=88`?Y)e#1Zy6gP(+4LibnxnLko?c(CQvD8jJNTWC} z(*Y(JkX^vx%Qte=B(_HYcO|;@VjK1l6F(jOq07E3hSt~TB8?TGiAwkx3iwh^t@}2p zyM$*Xc{52vnnaGTL%BxGq@p_q6IW1P`$@N4ft@T$c?qI&c)Av3n8HI(Sosg8-fy8n zikh~R7Zz#L?AcCjCFJd3GB}@#H(@KZ4%?CyHa8D42aD6!$qpE+M);|VG#7q#>;Sff zbt&cYdrpvYUI26P$FmmSKg~PQ7&oB7*xYqJ2cSt@P@WpI123+qAQ{?ta3HPV;BQQ)a zKaID}CYcx=jb=t#La|@2@qAIpx7X^;~~&alCS(@D8Sh9rfAxy_DN+K@6FzMlKE37=JnX zJ6IhCyVB90NMsIL_;%}K8gm^B71hn~h&@KB)?4bDCZh{|{!0Jlp>r$Oh6z-d2B#?X zDhp>)bQRvtPqpLY%S2psuZHnvggp>^w$0+VPGxKl_c9>1L!U4;Qek6K!8*W8b9qe`||+PU0JWb%RaI-no|3fW*I){ostT?`@au{ zU=Al&k1zEr%ab0g%^%7RkC&crl-qQ8htp;CknRj*mB2r7Id-Zy;GNvMrAbZ<{~MlI zhBYB$#(2%!0+KHUsfrU)O{c?}L`DuXye!$iV#Ez(qm|OQN22ezru8Uld)j6(jMGID z07ft@;6v-@M_+ab)c0LcWtL^ZV!|MW*Z8PgqAFnmeK}N2X?*`Q;|COKwE(S?vTFd~WF|Z8|dUq!D^4vqGUO%F0a>t@9{>>cdQjz z7&d(D<)TsU<3bY7rS;t{bpDyUR5=#9ERPWW>jYacFj@=SFdb|REdsQ?j+7=%mWJS0 z=nF1jw+iCZByNwTr#IA5MtVO@y?f`6QyaP2wk=bx)n1xr@(mK5U+iogN%bfhA{qmAp zEvs8|jS*Ckwl$bqk8JEwIU)JR(2FOYeb>Y>L9mQA5jeo6=v$b%OZ8<@d9m-uD6&Be z0{|>_x~ET9KQf?J!Nen|VJB!t3zyxm)Vi)jgdG$bI@|cr?1DLC`Md-#u@BExw@Ecc zSn#F92fZlh$oiOY?UNN&Ea9#0ON*MeeaTT?Gr?E?nuU;EJ;dVb$(X+|p4$HA zx4CH>R&hVO;hAh7cp$5PB1y@Jyh6u!OaGeuhTMi}u%#HDkfgL%(fzpGv0RF$KZ9@- zV4{a-L|m0@430mP9*Yy1DPvr>Ef}v32u7hk_XWIMCH~qC8Y*a|s_Pa{DN5hp;2_jmjj|OVB9hBcu-Z zuWy1<(w2SR$AxM)38~WB#F6CgrLEQbZZ|*|Wf@aBD<7|m8Y=zxn z?XWPHhyPwTbkNfn|4OmHUR^j$C>FquQ(1PC(`;d|J{W9qeh4=07lFZO9QT~JwF_AT0Gh2E z&bbv=`W*}v=&G3MxHQ}RxlKNPnlh0NOf(7jy6=Fa)6CkWT-XMM14+p{one<#=5r8U zR3Fp>me|jt++X5}?~Y9|b44>~<-iiV(+EnvkV*>;?!~8a^Sv3$l)B7Dp4$8asne!e zi*XjIm~6pD*z`9QCe`%EHZcH3(r|JRZ&CoZWK@DE31uUUfSAnezgMm0yuq76z>Suw zVmW_0wKJOe%{9{i3#nJ<`J-&axLFrIdhI7n3T|6J>_(}^`eKT}d~pnQxj9EuMEge9 zl433kiN;FBT;+M8A6=QM22_x}Dbx984)UgW2=wC_vsAFh$W0lDjnGC!!2!iBr{}Bq zrSyiR#5f-Ao0U)SR^`V)N_0e>fi8=e0q8hqE*PzJVYFn${n{@8*c;(w3@97S!p)sr z*Aa;p>W5tW#!u3*i|zy+#YvDm6m52)WJG|uJx5CO%Vq^x=)zYo zA~zp0EQB@_v6mgJKt-ig8yzpQXL!A?EPD-eh4p?CINv%}?AT1UDAV*`kdKakm(Y&v zCbehLl$j3}3@N;>!h>%jEEXxxZp+uQKY_!wEoxBvD3qw_BqvWCluxb4^}Z!mjhFEz zRcj_UZCzWS>ypItfhK(gXwTk0Sg)P~+zIH_{AJ;yl5C5Y>593Imc0#KiO6T!(r?sq znHxR%7+7SDp~yAhRzT7{9I<3ECLI2t`VsF~<$6V2wRQBoR89|xCxP83p*J2k9KL>P zbp1xURJ9xFBjvY#M)cRBUFIXZOu?$=Fs~P}{+MV^z6Ef4=_Oaul;-;s$b*hrM?KJU z1}VV(FBB19?{jLqDz`r)RK5)&m$KQ|OWf~sUH@Spx_rbmYkEP`6%GyJK(bQr9gV)pGMGTd%`QZ$F$$ociQ1O>at-!c9; z6{hn>~Qjb9McdUa;K zeR=@OuoDF&FVCy3b8oXCagYXT%3(u2d1h~mE%v*02n0AbiKUZV_vE$NRrb&gQ6mn0 zrm(GDu9Nw{gc3~a?3=S@d7bjrG0rI+w0}duU;a3tmGVZ%rLqR5_6*!_r}mkxdG%b* zJ;-^O&%L^>=Eb0V>3(S%X!tiM>?aF$SgBL|5-U0gG;Yv4QxlV{0Z+eEm57gn@9F8y zOG`3!)I(gqG|wxTXgmsCY)}XnX4%k1E-q2sQdFQ9XE#7T(_RXlX+05|M5Zfr=4DiSth1_}%z_Khb4%Q2k*rlAW84s4$kUhZkhCI-=n}rD{J;RZ!w%_% zK$CY+Dn~osDr8suOm@A!XI{%RhIS+7;E-=;KIh;E|Z~M(6vja6KzE2zxz!-8-M0!hD#PzgFiCr zypH2bUm8E{e^^Xs;@&s$lMN>igQt)D15;zS4+zFQtsg?14!ijcxS-1zFlu6U` z-b5*jNfTvY0qtgkQ6Q8zCV`bO4A97Pe$OJ|Q7Pg&&_n!9VI zm)x`+Iwi4dN!C2_f(i3H!-WpyuN=g+X)%U>yu@f5f379D{7K5of%6^6OBa6fjGS%; z-}axZJj!rHTToTU46mAS`!2RBb`TSHzXE-^+*-Zn_IPZKfvT=YOpR`cqrb>WkTL~>cfrjG@u?&!HSiYSy(wtg`3S?_wG&w~r&P1@Qy?GZ<=DLnYc*k%NuwqgfNxOT^Yz)8k-w9Gx8c+O*)2HqhNkQlL!lo>`bjuPz$jIg056WzK|=# z0OgiU_eVuRU4~Bh$(Mj4Fa0;rFG86l(iD?sTXBX`r1aW2)RPPguic8$f#eF8+>z>} zIRnQ&j4(@NAn{f!(&ZHbU<9$chw!xhhUUiC#aWK*$~3Z(=Le&JqZj?V5E;pB4v?hi z0huPhK6wxx1sge#ILt{%oJx%1kIA(+_0oGrS}vXUW<0#cuhFBVQf88yU;La&-z890 zSDkTr1?Rs3nUY^u)s0E3wGU@qy(3yEtM+KhS)ryy{o0$ip>U~_|AdYh)-TAD{1?nv zWradE65B!khMJ5|rEt&|^rE@X#zm#UMuik7`ewLr(IyH_qf}U33*41X04Hy|F1Y@g zAB8F-9gC(8F#L0)*%;y`Ejm?}o&l#)a*HcPMX!qIbH}cd=ux9tdejIW+<9;#TpIK1 z*z2P;31g_vwmcaH?zez_VrpAsw)!Jo$A9H1!|PGfU8c_>G^@Ntu9CKSoZ8hg1vmA# z_63U^N1X$%$=*f0?mE0Hd)UG;>mNi&l>5~j?ZsCbjvEM@`HM9MZyKxxlgVIr4ZF;? zU|!+fe(Dn^pT*jOFpfT64}bF99h#Hs;wHbEk=h@U2qjDG9S9IsP$D3$N6YOE(YaA5 zSYNXcvH+IBr)E{0pZZ3V|EIM@!0U@^VkecpI4|AKyCx%w8(8wG%BqbkI~L=S^J`z? zbquSjVRlHT-SH!;tVl=;6CJt4g7>c?UH#p43kPJ_0io54W4${LBy$Y7qI^^5YZMMD zrbvv1-Hx}bL_PDRYVeq!>EMfECQSi7FNSGOKG>2{JE7_Fzq$xw1Tv~5Lgo8(h@I^r~ zkGg=@v>3?O#t8(P>y8rNwgN}s4_OLes<1FbA5Q9=W(If&wd@T0zK1k{kUgm`a4DF# zOPQr1tJ2DrSXYAVB8Wb8QP_wCHI}?H&?5H$VcI$3t9%-gSOY{ZegXsjYaHS5?O#*t zOo%nmhCrg%EUNsxd;Mj77NR1}zy(k19?1x{GPZx)UtJTv`$w3Esi$VqF*m20+c-m>b%!h7kbdV_0zaou|P>1}D-d10IS zi@}PBPi^K0^#P~bTio5L7ydEq$e;jQVjN14a}*$Z%nHce)Y&v}Je(Q_Du^HbsMPqI zw{Bp7u_!#vqh_9dO9iVE1mvbXbBox>J>Y4;&r1c)({$@UsvN(4V7@v(ZkVoaB8P=% z7WPqFE@`!bxhm2_zjSFE;G}Zb`p58=-_KL$n?^E~BZoHBWl7_SI+Is_ohi05)%;+i zh&bI)dGu1)*&EV-h&+ahhHGES0A$^@cpZQ)>0u+yF~t)d>OhDNqNN2{(>Z^khnEZC z?!x^UOLq3(?|u5jNtNtri`6;*Kg<<8`I$@$L-Z#TTt3kwqTQ`Zf5q~Tip*QFx+}r!^SP&D*jr=#DAivEsu9E*>E@}D=xJJF-vF4g z|8R55M$UGK?WW=h=&YBc zPXv=6&JC4$Un4vG=KJiWKHqpfY%*`)48cX#RiVCW;XJPjbMDfH1IqZ{qiR5LAuiS+ zHee%I%|xCA>n67}AV2z17IL~wbY)B83y4ax^qSMe>J)}SNt1FaDk6~FVLVl)j~;k2 z{C5=2^_S@#6PO?B3m`j9;-ov;SxegSvGtD*rHyn zzx&DJsygp*V}=@2OF>( zrD$1~S{rOfG@TUqhN=p%|NguLI)zVfJG-KXVt}%aElUW|7V_Y>)3me^Bi`vb)EFtb z46=hQ)l#Dlnt#-3$s@i~htQTP2 zIAsInUA0~mz@)wN^*hg+mQCQ{pg*Y-&eQ?2lrF$sP!qPOVYd_umpT7EQe!WdEwvuQ z;_60&-CC?srq7^B=h}8N9pN*iKaS4#WVUYxC|jqVlk{m;3#F?;i*j7tZzZKqV+3=J zaF0{p3KBS_y@UVZQC2KJk*9FU-&GYJXaKsci<#@@U4Tq{!8(%SQ!=d+;Q+evhqF^4 z0??WfkGgP(heI?~T?@d(E%A`Am;C4v!mFA-e6~Upz(;}Gc{J?lK?VLHC{9PRBAp2E zbrDsMarH4`wg;6A1Wh*TZ{oIRZYhEUu;6IJ0P_8Zx|j4s9>Htx=%a3Le`V2^&rj88 z!@=+v;+$Y^e2Zd^rSP zjHCyf`RQnFjT#Vm!%dhVBXum70itmY>tzk;dFIL~c~e(Uy_X-(owj@zjYu$6+JqF)CkC$G=IH2(Ov^@i|V)q!Z5c@yTQllem)$Bp{sieB2i$t@)*G&ijiM>>oz6z}W|Huw7|L^Po0u_XQu>eRn zT4}%mMfr0&0CAqC1OX#*qdbkW2u6(bvxX62N|4B)X9S=DW)iCU?=&!}gt1E93)G;; z+HA?<^e6EK@@I&mN@h-j(IH(9C@K0X%Yh{UQvnjt{_LrP#^0YX|BwdL{`m|@PWuO! z8>4^oPpX={vUz+ z&rt)E#UEz!|F=p83Tj-r#{CHk^k@hE{M(Gy{)9Q8EmaBshwNiK@HHJ42H@|zzHujj zfBr9e(E`O7O^uwRuhU$LJ8L~CU zXBXrj{ykr1BXq)2ONOJR?nL8-GhSyR*^-ww*op%_ovgS0b|J9wdYgfL-SKzPtjBn< z$!Z?cD&@9n==pico&&oh2W7o&;T=DscI2u_7GWblj@doRa}1fIw_2Oq;l_6;zVziz zE>qA?WHdQA5Nf^fk=u+lkJBsb)>+eu7{jbDAEcST{)l;$H`gA1YW3#cXnXIw{Zm?x zUi3f5fBdd+J}vedSM;5)9V(XuMNi*38Be=3;eGGn-t!^Ls~F_u^6|jiqEr0P+K*2s zpq{dX8gBb9W%8#&OD-@5MFGqf*9UTnqF-wD&zkKhvn57Q6B)RDlR)E&fo;6&{^z8< zCqucmTd({2m=>ew8r`KLo+;dh`>{|jcXO|sgBI%on0(<-x%tvZTTM=OZ)nWxdvCE^ zl7#B&YUUd$neD&GXr5W$rXM?&apNlKFP2YzYAkH?7~9&PT|0fT^j&dicKi|O6Q@|c zHLiESm31vwx`_Fte@wH$u+p6ElTk+>#c6xh+7;wjSnDE8ds!qSYxB4*8 zk)`bG4*cEd4lhtP;_8uIATvP-*ZHex;d|!6+pD_=KXNzv?ULWd3GeSgO5z1g+(WP( z@cj$PE{q|ba%eU2Oxh=@+Gb0Etwer40}9?-g|C8aAB0lp)?%BxQK{JbHDngXAZe23 zfP8Jy{7yKP^W@JF>wFfTcGd(n87|!liq?vTkGV} zTV||-S*a#!0#=;vyKSU?bRTA6BT^~vHkiSo#b-4bt@x-KfjS5BUvU+&=RcQ%vU8R+s z^f%3if1Rn!+q@f=p>~uLOzRoyK}Zj=d}jO>wm7I)bX&1eouOOA%S>*gB`BFs*@)#s z-?_I}_xFC@DlR6br$bJ$|GEvi`efUdqOkqzn-Jy^YmXo|KQ6F834ou>XpNj zjRjKkB*U+7WGR8U?~-_u%zJ0VUZ8hn`D!x2chu3&DpCCycv7x)IU)wyV>9gzZuBw) zBO0)>RW`kcEih=9)Ah>p=lM(V)Ydm?l{!V8CGhE=%gf7Gc76cu*}WSu%tr8JPf3rW z1tINAH1>l7$(Wfz+9hfQ@_kR8_(%vc{jwWaqUVQPz2^L&}OOW6$ z2?Te7ySoHuakroeP6!Uc-Ge&>_YmAQ*qMFLIse7~T^??Ro$0PF>+0Uw>UvrT_b6yw znKyJ>geS6Wo^C$;XyvrJgJh537D8JZ4m9q%&d1aaY(}q;W0_WYQXwLo<~Ecf(~&~) zg(uHWzBit$yz=JBOBv$lAQb~d;xO?;*L6b&2g8-J^FsIKlc;>4NVHhY4MLCNtS36IGh67>4rE_MHBa0KqVZ(11GT^PhRII37 z)kR0z#q=v46D9P=gw$NGM@e72cSdbLG0${T1jRWbfwba|)~m?7=)QAr?}c@56NAup z1%`w~B^DMCX_aFpUmeEBX$1;$@)_4%_0?)S)BjVNv6nv8YG&bd?=|>c;7GJy$=6pB zX5mQTC?z`8@A6MV3@ylve0JCuJ~4MoswFTk?EF2Ro}vq?T)B&p!|d5|Y5UXazk4e# zJ@RxU9dRV>j#B^Ym&8kOW{;0X%Ju63)L-Ko#Lon70yDa#rdMkWAW@{;c?DP{U8Ayo z$(+p>!#_IC%>>;Qlx#Z8!RcyQX0yd_B_#|-hnB;dvqjm0Iiby^0}Wq?YX=SJz1HWf zwhE^4)D`I8>CBD=A|$^vxTt_2q>Lu94_6+>_uTI6x5po$Z=N072@P#bIz{i-Yp^7L zSAOv`3hG7qQ-x&}`vyEu>BQ48%+$eNl9Wdl#!5SrEaEyGFVo%Jk(Q@8>aw9OBte2B zO0#d>nKp5%*WTYP|Dg@{gv^|r9UfeBl!3!UJ~+h5S%8TlNe~3KwkD*Z!LqmaU}K}_ zxu3{+S?jpGJY9bQ&tYJcmg*lJeXt74C5_tH{GsTquFhWsP9bt!^9QQ62of%K^IW4- zREZJo{Q0Ayq0w7G{!^|;H^9h+vrpww*4I7s2-!?)Q#F3>yomr}C_Y{A5IrKVJ@%`J zqLHgyC9wTdcb2D|atN(-?+H8BG2eV!?YB8r44R{QYb=sFyfr43+F1Vm{7@cFkv?}b#B!CR6!?36P%!6K|b~2T$$(; z#@)^FdVy>wK7qi7L|fY^HFf#NoM-4#AUPyaqvYK+db!_gVIRdo#;p+?AtgF>!j1HQ zq2S1f2zY@U(SZ9)lsd7m@$uLT=YO`gWHcgea9*i(B9^|RW&3i06HWvseP1UtDq#t6 z58(W&AVmqRDYa=*Y&TxrZ{*CPq+N->MMWu7^i|<7$Y)c{?mus#@?qdb>_3|nYx}~< z4f5cEG%)f6a;K`f<>xpO^{I>G-o66f*+3kT1Tlg+@C&*}u>QRm?xEsw;YDyBBI5>W zmUoYa7_)hq@$R8E-8yq_H1e6^%Iay&zP%Lc-;EhArEo7e7eg5o(#hjH^22?Y z9K)*h+K_kr@I=Dxo~y`&hPA!v{c#BuO7N@|TUxEpGciKCVp zMBJt#W@21Lbw;tQU9>a*oWz1dqSJuy`D!~m=ek*HDkb6705OJMimLfY6lMD-QAIT> zMCK@=i5ye)v{~*P_DSs#2f;v?(m!OgY|t~UCDi7YG>-}X+BzPtisdVNXMq7mZDM-#N6Ev zn#9l`j`BN1xR3QjNb4`|h>jFd=SlgRH5&VF&hqrhEy@aXD0r6loaxx+TU~OlRDssI z*G~4C9i=|jj<`68EXg~nDSY15(c7-XwG1I|<6ns}%ezq7kZDGsk#H;sa{W>n?zW5S zC>V<9WzxcKR+89RK%hh!b2pd}Z1Y51Od6!BEqo1H?QZjR0NTqrFNYct`9OvZX}o@RP7u9&gN_ZA4x%Uqw$8 zcZS~gA1&sDrVX?AYp#!SO%arl2}stlFM|+~Vu_zT-S!*+8<{SOXNy zZfLaoO!@3x-*O$%M2Jik@wyzkg?v?wZtKVfWO5bvqDg)aVf7|FS(tuxy`bX^8kP1W z!(J}m-@C}~^k6aMGbq5sxloySOzzr(<1J?4p&qypxR%Yc@R!9eCg~0>GLe{b(XV5l zHmQx}Dz>SD+B$k_Xs><}NL-@$X@L`yui#du8EGMB;5Qfht>VkQaQj&?Q}NUsrGxjJ z4ZoC`O7f)U1}nkzAmKN74%eGEU?5f6K{lM4Em*2Hr7Yv}d1Cq)SsdrhN-h@ttip2u zG?)*%=-+*7S>d1#C$-=BpVXj-rTu4x=4NrJXC&nJ`Ci`@> zErKF~?=MwK?P-f5M|KJWQ~!l%xwmSx7kzD9(<{NQNmqZKR4HhL4CN|32Fc&N#&26K zRoScregspU3K|en*_AIvcqjRPY?ziml7J|o)wXV{q`#(^XR@w!vLx+TDWArp64>Ij z(SB#D{b|{B1i*xT)Ye7~zr}6B7TDUobZciXxFa#YiX-Uh1LSbK@2{jphXrXz&8yPKPG zfrq^8h#p*Pl4zSg>JB?BR0L#`GHqyO16__EwOI zoslB&bM>5z4LqxJ@^T+hmyw}ro1Z*wxH;#5mPY_24{22xW7#j$L4gU^;{8FZ63_0Li0>XaxKtYAV)a+o?qg=+=Vkt)`1cPcG@oBdOyDvQ9EqyV(xcO? z2v=h|e7B8szkb{yLsD_&H?xdSAUyap%5klE6#XkbjPsRg#fJn|YUoz6_qW$@3(dg< zu*3<()rS|uqZBu7H*ojx%CZ{GyFcRdZjK`nTJ}0iwNZ^*G{#KkTyc`GJvI(ZYUaiW ziG4c56s)&2F(d6}ctnj1Pt%~&+Ug8V5i6qbret zrmQrHdqZcA=qhK$scsC!?|;EVBt56=T`usN6vWDIGzf051F8x>m$ zzTD{k1_jMGRd9FPTZFzlcj*#OP`#DbH;a*nU;btZ+9Zo>9d??9v!Bq;&UStD6dV$Z z9R8{mO&AkH_86p7ykUoE+8jCily@5?^qFZY%(=8;`g8x=+|M%ti_3MdY?Y|gomOP3 zH-Zht67ae412#M?i?~?W_K>j%p+N}uXQMCBdOeUyrFp0^1YG=g%d+t0MF#*JP(`yJeg8W{g(;6h zLVsX&u8-XJi0X*3e1a3??~jq zo{MNn4&oghW+jg#=VyX?LAeh79Hl$VauS?j9|qy;%Y%`mLmDEW3Dx-uUs;5ON$? zxaXhQ1OGE_x;cUS9`evDPyNmcj-sn9OSq=iqW3yqrjby7#v#(L06?1@pMtWD;cVa^ zHpI%2v16m8*v@E@;&&UE{w<3c;Xo{|PC4Ah`A&y$U2f(shk>2T!6| z=(_Et|DuZ%Q`sO+;!{Dk9{V8?SmfD2BDAB;Cf|3 z)+xQKq>e6RDAPnRUtXI$@r7hQfr(pQPkz?|$4;s?t7pOQG3UbgYAhxMU7Y9*14{Qj zi<;7zzMDocbT;bn`tT?&C|&BiItJpk_LQjVwiP zgo8&yuUsl4kb$u6ip@b9HCXpIl7}*V+&Ol?LT;s0iPHx&hd*JsKU*%&HypCL1u*EtNI5y z)MnA4Wk|=V%_A~=`e5~L?|>iGmSt~uQh~XV-)`FD$Cm?A7A0C@Z7O63k(ZrZBIeqJ zN*-t#UV720UOQHNJQ-?8HO7KC8x=|QBfhMEAPwGvagA7KYyAX28i#4Hh>z~m z?vIN<4X#d`%%=x?ZLC%=TcwC1_?Hcja&)HDuN`ZJU?kwCy8Q8#`Qxwsd5pAt9eOQA5!F0>QzKR| zy9*(UBEb3`X(BZ3IhQ9u2R~-A1k>v-3^S%B|`-J{8Ib-nVQGPwGZ=xPHzZ316A7QctRDzQ9Y;|Q%k$1-a{o}H5rm7bLlBSgXL4zkAHk(YKIZhfh`7%Bf?8_+Cy}j&j;r?u#55zw(XtVN z5-eeCYv2At%J-0QGKiwBr_V!!^$Tq7k*7DtVA{<`FO}?PxXhdEy6>Qn&eoXhvzyCj zvAGz`ceJD5?=$|rxFK!0A;_mXI1pq$5{WuKG}iQXtJ zMcyUvUQ)2H+X;&P=w`R`&5Fig{scei0pM-}iR@pmC|_PG2hzJV-ywq;%9(BHYv4@u z@37LxwO(q|qSoIjEy!r%8)=G-YXxaX9k?rNc1fN_@GU$?8XxT43br1TKiN3UC{g0L zyQR#I*fM`iIl9rECA<2J3bEFJOQUBdqz^Oa;pVVjETGI8Y9MhSCKrgy!q7MSsfUeqM&8JRaD{ltnbFa{{DN-&BCAvn=r<@= z;tlI5Crdv2rad>J_r=(Kw(CuUq51k^pS8l*J}*9Qqtv7t^A-!dz-HUUAQYB@)^IbBR!%n-Zd z@0yd4V7b$IO#+h!{o*2gho1k zjAK74Ki$pJ+C9PCk}f^z5Yg}ZJ(}1m0qiw`vb=s1E5+H%iwl`fmmR!cRmHMAcJb_u zIO-V>_zLku=4sDtOZ#*yB){jM!KuQ&&Pyn=mD7=S=EyuD+|N%63IqpOahx~kQC@*L zJ>TmZhqkR#;J&Q;aUTp}MilKvnqgL>9sVO0dpEjm7p677!ALv&PP0Q2Q;fc8$4Vv& z;{R9o=b7T`LYh)KYh;?#jBmpn#3+c@e_5)ow<2_zPKZluB&)h?`s_r4>1Z{0NXvSJ zi~YY^+`YlNN!@|-L%+XEu0uphZ}Z_pokQ(O`jBpNJG-U_+Nz`jz7s`|tTZPRBAx~? zM>AMqL2#`&i>$dXzb&Oq>qLw*Y)e^EM4~quPWm*e=zbxs;IEe?x#LjzU8hg~DTblq zt>Wc;M{+$clshNgXiz_v^B_~T@}Bvawshct*-djG`*OQu?T}w2gZ;Gkijp&%i4%}gOreBb$b!H36}oUw+l*dgzHf>c z3y1kaO738Z(by-On`v>b68IPr&KK{i&)LKrR`nEmVPftpT!?2rftNJp6?n7Zl2cRN znqk2KM1l2Xi^dRWx69hl2;0$<;rs2ezCPrb=x7VkQPdQ|$;FVMi+X%&-ybBXN*Fv` ziW40F|E;V(VaTnCjCK)s6@D0lqeKA zn~E>Efpv$r;t=F5tR56ps#*-_^;2i!MhN>?N{oE`3uznU0gqO_8Q=8Fo7RBm#dtN9 zgI7+p!xwoelChU66u&Gru0bKf!=G?Le!piBF`RP3w!9?aTO6#GNx2v&e$m#5q`>8t z9>B+Pg?e{P)PBWT{;oK~iuXb7_gnb)OzZtc95dE#Z-3}<&j^X?h?2W_z%R|(DVjnV zqk4RibT6;msXwEXn<^_PUUuyIllNw`a86k+8hb=-PkF?gdKpQNu!V@}wdD$gw$Y9a=&XLkVeNKOM= zFW+b>TJJsRQSeVGV}9@VmDW?kL{esVuHuSPq`0-$9^dBv%{Tm(7vU;rd4DIJA~cI+ zTr@tA&WVL((M+I!nxpFp&9qAi+RijpjrsiJFhYP;NRaIMrafF-nZI6rVP}OWcD<#3 z(wlfH?U`1tx%CwjN+qwvZe@c`H|i)&`QVi+C#t45Z>IyB?=H7_c&f=3@tdTHV@@{Q z0cn*2r{zLbhnU&-DlaKlNA?%5#1RPf%;~p8!M(23ubF0;)Ot(P&C;dBGA;2wC>X-= zH)oO~8WUp}C-#{k^D_p`ti2@izZW~tr6>NV>yK<_`zsfvXZW{=fzi7E;F;FtOnN7H~^onK~sA9IvMx#Y3MWy;+&Y;1bRZl{%cE&`- zh`Z$eUtX|qy?v~jN<-r}+XxMDoi2h~?uFk^6h%CBP5Uj&kakt+UuNXX_DlhAR;@n3 z58aexgoSz2xgEd3$J#3sz_;?uQTbk*gIz3CU~{zUL?$?xH9q#lD#TM3cA zv@&j+zi;rbK(hISF;!r^k~-xckWYQZ3Qdscdy6Z}dFLkAkl_*BIHaSKc3`B9@#$# z+-3-C-ir;kzOsg%Cn{k55vOz%e`(Z7jnOYkDhSW^#bc5?xtL?0U4b`ZZnXGf7mJX3 zN*AY5;WiT`puKJjR6jT%Vv)9tZLm5cS(T?`(MB00;Gp*X7&-BoENE{9N9U`nPHxG$ zdxq?D>K*-7a@~xgE7pbfzmd$NeJKMxQviE%EXo6fD4zTHlJ*bXzMdj8(hEg9Is6L) zB^OS=CYi-yQe{83Ggp~G3D?}}_p`OoDybZ7ZT zMP!pE`gc00o)kmZz1a|;D096V-^cy{IY zmi0hO701XxrN*#60jHOYy8!_nDw{k{d#WY&{Yy$Q``E0ecXW#nsRrv3ze-~KRL(eD z{}mDtmh!qaY5h!@_9vO&t*1z1{QG2alTeIi(y5(d!=fM&Mq8Ovn3spHF+PicEnEol zvWvKr-}ih*sTYa5E)v72IR>S3|N0?cjH}r0Q+qTRN3)T|FkaI9m9X8yCdbTkGncrX zrl_*c-{@MCajWc4YT(+0y(K?S`Z;ZT_6VlenK-+g(-fuf;77Q0!Bzs`r8nB)L#G=A zr(oREt&Ea=z9CMONJ%CC{t&#F+>?XHRPA$ZqQmk-56=~pgiG8UP$PZx3tO1P&!Rh; zDvWwc%HX}v5a>sZ8JQwo)z1OTUS#s(_XFq{I|+4nL-rv>qL}%_EK1tPhIUyyiW4trr-!L!Dn)oQ*|hJSd`)CT4*~4W`h5uesSd8!s=V z*y1?j_MS?iCE-aU_6(!r1WC`NsyHfaO&ket8rEYi)HS&}GjHBIo?SSc%2d?9t=F-| zC;i#JphBI8`7#=^mLd6dMsA0SZrVy;9;*w12SY&Ud&Xw=K{V0F7&q?iD3k69M5-Lj z1X}w&s&#JyKAb@LPMHQ@OthI#pg2{q6NT99fM!3{=*yls0*_ur_8E|UA;w2j`WU7Y+!o%^Jecw3h@E|4~vf`7evqF`|w#B z(PnUR*E_=_{f7(8<+hG?y+miQnPNSuJQ%z+Oty|K3PTq!}A?=w> zG&rDp$k*XxJ-!RZHE9I3>B!>(UteusUaaFQ=&8g7U6PCPz+99D;@hTA_iJuZLkrP8 zCi8Co^qL=_=wq+NJkxX$oU00$Q-+igPevA(T3Xg;1wMWRV_F&w&dC%Oo9K1snnzFX zR;{OglNP}?LQc&ePCPqw-4kzdN}9}wO@!Bg4h=zBGk!UGN7V7fk8Y&ZU#3y`R@43d z@VTBtKc#$}4uC#QLI7aTR7g$(EZvP~x=6c-V+~5^dcVts&&Jv!Q2dQ1TfP?Rk8)y7 z@mfPj8k5wL7B)C(LgF=33AiT8U9bCq;?IIZCskN)IJ*YgsOQ?l)9qbbf@%VqCt;*i5yV?~Tl*Z+oXhl*L> z>F@Ep0V&^7L05Ujyliu6<{M)GS}Lav2N3Bjen8+f+IP_(TXQz3yg#r{Drgk+ZOg0v z7=xo?-$pVGSAIqqA6dKo#kIU_Q&pyCA*x99cja6{c-V6EP5Bf&hUFam%_HRFu?=m1 zDOcDBsVm-x5cX6tNHvn}Ud+3)0{1#;U5*CbGV39ZjO2|xDVivSU%z=#2&4-oLf)_z?GEh)wAZoDLjQ`Zgi zH@R{niR0hh1?rwwiX%PF`YxsJcGDI*)YjOmyF0qRvwNGQ;tIKs5OoZseVu+zfqpe)yNCyy*KJ-HETJ8cLyX!AM#&s6x2)y+O*Yzr`pI22FzrXOYCmc2a z%~#R^DY_B#O+zhwPTx_^o(19~a`XGyO0C7LEY`9xrpuRxcE-LBb-kzTx9p1l9qh64 zYsQ#Q>D>1#d*l5x#_7JAV|?I@XDrCljQNUfHkUAqSb8ThJuC%Zf-|~$q5F5S+*3@? zaA^D79K;*TJIP$atbi1$$1#Z#ca1gknaifoK&)ngYKB0$4=$o=N&*y;6j^64=ddi{{SGI{f7Zc$fX3*(w9FRaBV*D#%?ESg& znYHf=MXuY~v?O#ERblxD{^9vwaUr_t?}pA!EY;u#QdKPmt(ObQ z(DRxz1wp%vj73EqF>i$Uuss!Ruo_o|eNAFo8b*51IJr#{UNg>}YH==F-g4)Y$hiQ%7&}H3AI{0)pgro1=tp44lW2 zEZcLW&D|&n87N}Y*VQ!$LWxo4<;DwXphg#Drr~3dzy%QgIOgEsn9&Pj7`aK&5wICx zhi=8SV+Icb^>cr;>BoHdAf|?+0E0L*6P0+C(%&~Y*aM$rWN8{U0*44mLP&rcB_Xtc z0tfX>B;=@>rJ7!MBZDdBz(yM3^y9#hE*5P}Ni{^EjE+EGlK4Q@8~B@kHAz@L9Kf$~ z^BoyL_k-8YBqEHhDr3e>;2J6CE(YA@pJsM(>jF+p)#Q$BVpt#pZ1q%Ntx^ND2;jAO z5D+1}C`R#Eu>0a4)tU@|E(_5ZiX&k2r#G4;v5Zu15-Xy z1?J-cY&!{Jt^UVN;#sv72>5x8jtUDV=|`2A6F^dlOF|hir2sZC;5<@^F$zSii98Tz z05BZ%fIk}x2~Z9-l`Fu2jeG@Pkr4#1UehskeL zh?v&}VGB&d%#OyWc))E8t)qiLK%_|7ux&RM! zHbJKhlp6%3f-*ErHUpP>uAUQCn6evSim)?2XA}b^LI9G`#z`r6WI!v?tYkGXw=qFq zr2x)YQ{tBL1NO5?$Ssp(--LCN9}HxIhlmY+RfC5$gqol;Spk;Tl8>mw0s{>^UnA2T z1L}<93G7F}fHB(+h<4WsVf;@7X&mZEqevJJdG}yI`~0)Un?UPt3le+;lz|&_$TYlj zjCtt5lLfMHVM2i5&!;HvUO?;f3q7B(fa^D2s+Rvm+`@!;URF4TB?u02gk$ep*A@m~ zBvS2?Vi-k?kZ}YsrG8N8t`7tdWV9Gzd=j|oze0}w43N!gbfR?vM2lv z4_Xxl?w5sis}cefY8%gJonXW6kc7cyy@LYusq;nwn-J2j-r1qRqJiO1ffp9wr#$X8 z8GwT~<%6PKfe~c;Or!`PfSi?F=+OYlJ}7k*A5dE;0!oMjxPn5J9AI|s1mD0pkN>FR zBgyT;#7%+-69K(W7`wo_0CiD`U|3|)GvYLH7Y3ZPCU+qYMg}~jE&+3#^y(kI-zH&_ z$wS2eJRC|PZeVd22NciJL>^87^O^b4ZVWD{3qTB~hEW_Hc8k?SWfp)0fP=m}3KF); z1L!zO!+ps`0#jgA3r$;!PZEq}e5i-j`qmz^q&Z(eLot#6X->s9PUqApkcl)pva)7mPSS z+O!wCmpX8V*j~czJ8TYuJ>ez>BZ`4Y<|M_^;DG{6*7=$yVCewf=U{@8;2a*CJAj;9EumQYI(MnFh zgLQxwZ_PvKt^p%GeOy#xH9 zFt&dcc(SYMD^E%p2#yn?Qip}g{ovMfG$54sLCu)vbETaC-?8lkwdw(ZLislalRj{T z76M+}#Hyr zLnHzMjC!_}Z80&-|5Sm|Fm@cEsgH@v zvINljXdgjg1_;^8E2V(~Tk(2?FaY80ZB0Fy|5L(B?=bM#UHjGNU4T&G62#IP1Lotl zDHzc|fNOSbbw(6E5U8P^8z^r9b%I@=KuUbTNO9+IcJhFeR?pSMl<5B#rfnnvF({Y^ zh*V+gG=~~$s3?plyu?jxU~Fh3c5k36Y)f&nOXI_42G|}K)}x2lHq6urrsdhNJy_5} zMd*TY03v=b1GK3-XYqyI#XIpbkx~QJsykarGf7|#i-0ac02S}`0~800-kuZ!k+jJo zzq$}`LzC_^L?uAyh*g+1{8+KTgr=RX0f>G+!|vaw1eim#m4pS39?sI}v3=lyr3j%g zDKJXd5B?}ZN?=&^#w|^l#-I(FLVKZA>hOR!|q<(|9|i9+meNW zuSt+l`&W(#)RQiO%E~*4>MKEE5mBy`Dynvgwnu(0@YK3!30qQJ2+q~Q_r@yV?xcb{ zztgb=O^E={vTK*;-uq3jOhpE$vc#ar3m*k0ZyC~IjrQQP5u=n#hkg=m>V*QOr@0#D zza9C&XUY2S`74IG)jX22U1rWWc%$=1LAdqsx#nLvTX4HG;r7ue5y9pdZhwBk&-j+o zZBXXg!~2jJIhp_cWBMfyL7Q>qqj+QDfd<~^7iARIA7<8HwGVyeu8_GW~Md$X>D zXL(f1__+8E7D5+_Ka=YHRut9lJOmEXE_E0^VBbBwjJywsRA8FniQU!)Z}P_-w#3wM zU>>O0e&GC$kFvDxy(?oeKmxh>=AuY9N%N2e0Y;naF87(+ipIoWaD##@uTb zhg2`K)@uK7G%G3PUb!B%d9LwrjQr!@)#vKfa;^8rCuu*tSaxkR2a}d+Ua)YDR6mp_V7&{z^rPzW>*6YWh(w_mC)p1AWA^qO?Tbt!E*4_-TEtl0 zlGBmgBwxN4e{R?3-PLmf&+YeyROETz%7l1I8gzAcP%!F ztA)k1Jrl_@(5@xcDHsJ!PGa+qIgQ<&7S9%6e=kdJ@9d+~896lf^F|pEFc$a&? zUlh!dVxk=G?&2=<2ia6Wy3CVzW1>6=fKw6HZ z3O>*H^9+xNL8JAjw)G{4y?;|nrmg>I zfl$GVY+|>7vyH1ye7UQtWw#Ca809^w;Je1^XLijSk#LpB$b@Wsu_gXVVr+X)`yGLi z>LVd9t`OVT*tN6XRE_)`gP(TxBZ1bZX=pYs{;wv`-6bpHA3s*V`%!sLXVgMnvCvr; zrelW2cCcnlv4J6mJ#vtZPF1Mj0ax-fAC`RHl-qfv_b;$xDZ;5WE9)9!BHrV0Sss+_ zVB725{;R`VL&nuPH)Ob~ zn)dtx$uui4F*7OelpgbX6Qf&RuU zP@c88n`2czyu*X^htzsZv)MuTHS@nuR#zA4f?4-NV!rI?uaEh?{EMuIS!`VXX{Puf zXai>@ffv+>#_4^cxF-S1Sb@RRd8F}Ov@O`dtMt`Y3JB*I+L%A9PWd-<;|fh;@svAg;gEWFs>0eb3haF+f~F=Ec^(b1JKL z7_a;=7T7v#9NqzM%jnm<8R$IZAQ@g6b&byrnrx*gk>~uY6RH!MzxUJFOItx_dD_sW zI%5yjQ>PB$E4DGmv-;>1(Nn;j7kE!%fBC@W%B8j@7w7YcOa>DXK7~id7~HyhG@s4l zk#F2*HU^P2#&C$LLix1r=bZaT>?BV!0n5`T2@iub&fUi6_lyo*F|{O7i+xJ#caaU; zrl>Bc(lIq8_49P4b9>op3Saf+7UF(0OeKfcuD>i@ADEBGf^^G?!+~QW4XP+I&o4r| z3K*+mCDM@+$3LkcV6~lA;v-77U(u}^R4sqRajf5zMRB;2NQB!BUK-rGZoG))H~9#^ zHjL3asyZvMq__q3zkORX!hysFqU@*+zL_-n&VN+BUCS+z(RsQj+QuXu zPQ9qPY#_aRFNuNYIxZ2&=bXwK$t-O^NhXz|TFddftSXt|%-@RmcoGZFs__dMnmBQU z9vFQg$qC3wCp?jOjsD{g&6ya9sRFs~aj-M>TEI1R?qs!fBFtjg4IgIVq(J%eJgiGu>>VQ^VJOhKocO z&Nu!cnx`oa#={>7EHbg))i&~(4|ep@8uVr2-zgL3=$VV8iG=Fd3jAd#&4Ki(Dwuxg zw91>_kXV5;YECSD9uBwWP~gS6dBD}y()qrd8m+*@33XzSXxXP8ZUWWL}9YPk-< zL7+j5!@=kYPA|RAU`-pAg&Z(qh_go6QsB@b#G^+JbC&2IMJkQ?c?Bu9-X>L>Nj{go zOwGIy^@RIy>p}XQhkuEXWx^uhP3FiWNoNn@&XmsK3y!i2W-~tW>u#2? zKtXANHgfNoVt2y_>+vU}W0dSf(8n|WCX$&JGE6|)o-u7JZohqM!%ai>|4~Zl=%5hr ze4013^BvTuzl_yO2{xDCetxmMo=W7}$2p&_AM@pM!Qni|FZ}mWrDxH6s&Uu1URANp zJnn*huJ|kGE*>&F+SPP}#wM-=3r^Rv_?X2?-0W==9f-neaII~1#GsmYo8PTeH2ufP zExh5ZdcK0O|eQGcYdQ{@#R)L%JI!PO&{*h>xMOw|(qe7zXe^NsU}r|pl15|XHl zNuxxChM-e_lyNOn%T8;Dj}C+2jMp@Q`ondWX}QjlEXbmg97O^W5!c8;NblkEGO}RJ z5<@sZ+VoJ1w|EaC`Pn~xPfTnuVNK*@Qt7lryXWkIX)NZ54TAC#DV+-%k_xI_J-#6 zE25!r7Ij+N(3cfrih!T@$1-;ee+^#b>s~=d2%%FQr{%HQxEdOCj7?{Xa3FjK|by zTQa9MW;;Stg~)!H>o1kTazp4CVorO3!bM*#%VsdH&=>Pa#tTy=g5Hjf4Pm93l*~8j z6ntul8Fm*%ld=!g`Bw0L41Vjq^}hsi2B$eNgu)M7Zv678?D!G!-j==kUVs%F$o&>zc#p)V>zAYBXF!OCwikAA)ft2{}%F^cFSl!*+du=90YzMWg3OiGJ zAB8EC*Tfvd46R4c*Q9xI7b8a;+9f~eoRzYpZupRd4BtC+l$#i^dkP{OpIKH zmWKfzo6s$RW*)~p9_fegv!j#QXAbNQem^1%ie%P4K}&Zx(E7J{R+v5+^>KKUk?hg? zFk$Alp;-xJw|si?@ym6ay)bjw%87o+K0byUORF0U}9*Bwqf2PHk@JFvb~ghxuO-q@^nI4M?Qj>I@}|3wX@F*@C;aa&^+9KBt9 zRQo5gbTvU?VXK3W-;({xz8Sr?p`GK6wcCfj2ZO~wJsjlA2++yj$dp7Dn^OT5?&=># zRK6=z5%){6Xfg)x;7zy(=Ybl6$@*#n7zMu-t^*Wv(UaI#yrMZTFmN@R%n<{xGOZZoA z{ke=~DcyPWN!NNiv=znmzxF|d;td?6C6t6uRg-+4%Hr!07Nw>IA}p2y@YZFG(#kd# z#mek{1Yp6vW$zoVd*4)w*H~tx-(@1NXVUL1Fay9ptifvyv9~$$r39)aoQim-+vuZa zHwxbSD!0VeE_)S!Q(u=Vq{|f??-9ff_~JAFFZSLlJdT)Y7aTJ)Gcz;A%osB>Gc(7` zF|!>rGsny^Gcz;B5XUq-`TpUw!g>yx{%>@Ze9S zs72;b&ux>Pu6m42Ch3^LNns(557vXc&wxQkchTJ9)F$KL3!Y`=Cwtam zB1_|)V2vM$l~ldA1-B7a;*t<)=I=ozBjAMy}_*wp~}){xGK%!A%zMOm(bok zw=lZavUeD7M(q*zX#`ryh=$*p$LL>G!8o8^1E0aU%o8WxBLi2DCTnhCqynK^+U26H zzmvZsw5elT-N{rnen*0?I&IFNO5J6?XB!lAQV)6Sz1=od7;~pl7Q}f{H@%tY&dKFy zr@gT@ILCrWLryB<`oYl({T z#Zy`CDWB2bg{SSKw(gktZh4EX41>8yoyaynih&wcYYL(K_>^QEQPR82Cqc@#K#tdJymjVdVC`=G zk5`-DfB7E7Y4+O4hwHT?07WKbasKHu^RU&$Bc-ui&7IrJdWbq;&|+eKB@9fEs1uwhupq;^2=saDlul^+AyY57=jiHy0Q?!NN zWv%H?EfePCLw-AEw7;}kJc#I(+>}r|pLTTaEGhw1;$J=w^j!j^jNS|UHglt7_U}c^ zJhVCn$I8X7vdoPLp<4rq;hx_~IO+}t;lfn_TrIN!t0RA@08Uz|L#(i3Kfi%O2Tr%N zuV}xQTXPWzE21IbA5Mm@Y|P?rSYQRHJS55ZcSSEII$|lb<3m>?h*Q*+@C%~P;asw; zL60)J9+qrD5~z5VB+Vs>#efAx!XxrdL5Q);>w9 zdSv_Om;NHbST8xJGyO=#AQ9RZPTlzP)XE8kD5R##VW6ZhLQeqIZ~msj?HuHi3T zlw-x2TD(^UUzNBB0-gxP3Tm-}J@R^Av08)IY-ZZCzbO3XnG-^bURasucid~lG&kAQ zyqTAJwPd?h`MWdnWMO=c1Kxi2A^;CJ8N(^ZV!;s+z(!@l^18zmX}S^AR5ZSWBuS$& zA{&Y7`m6g7+oj)Xfdqwv6RZZEP6ci-ap> zLX-VPhjJ;a&8V&SXu;8IJobVYnTtc!8~-lGW1j1fl(Y@e>nB@mKli%$*M>4OH_4cG zMbCkR4Od9wZeYHuS`uS1%K@d&hD+nqz;LHX>&577Om-Rbb*HNu9>TO6-HW(nGNe64Z%q3Fd1Z|mz+6IpLv0wANCv@D3(K$yPnkD zGE|<<8+RlRD46)=2dW|WYMnAl8N-nx+#phh7hieVi|c6-HT#ii+*tQHL zwEzb*RG=*xbP<8mz{mGrMD}7ed7h|8#dQkv*x6@p@E482y&|wQeemjWXi0A0oi+ znPt-1^dN+cudQD1PV21?3A{2{BjeiO8W&rs5O_ka7La84E;_a#ma(zmqXSlwBSkct z-z+nns*1VAXZ2^orW}~n`(am8D)yUny`WN?YL}*7S{M18PfJR={PZi>T2~uZuqY}h z1BlaXE2-*bE;A$&^n(Rct3FD8<&X`F^{^JfA~bSL+1_Kd)op_&ex}W0!!fd4U+@5Y zZs=XcAv0`ORx~zTh$KIDrY-l|sUm;N=&EPwS>j6bRBsJNT@LiO);ML#EdH^bTIEM zgynw5Xr!N<`NCMFgTk^lXi}t`L-STDx47!Y=&RPaY4g!e1pCEYRqk?}3l_M<)&NDNAgxO8v@xNk&seH%p}A^s-$xbb z`C@QTNSY_M@9hkZRp8{!xo34gyH^{)!~#~)wSfupwq1PG(|W_QD1YPnv1y1*UuZPH z`QATzvRH;2Y&P#jAcFk`_a2KmYH~(sG5l#CS!v9%6PJawnaNO({^`S@2c@>lHc=FE zK@^O5|IE%~$;+cY`q8MzwpbxUdYC|fW2VAv>(R%fd@u}GIPV%-^2frKMW83ro6EAc zrep2X-N->ymTrm4J5(oG(olo$$5=E8vowiXjB1SH4+of!)7&6YTcbvJF3ciE@d0=_ z7n~rkXM4%aw~~?z%Ov9<&wrSGO3;brY~29M=9t zQ#liosfj2(WcC3%nQqom_GH0xk5*O`-L|%PujjP?gfzaj)dD&13VMKgujEwGhmItb z;i7Y&VQ$B9d!94Y#L}5!kEILp){C!Los=TVj?^J+N+0a`TvT)Vih3qSST0+RF{_d; zpg0&Pe>Tu}XAQ!_e(qDhLn^+U)&oB~}?vuRdeh{j&FINdInt`D4+B zo^^3v^f0M5ZV_?Du!9Kb1VaCbI;QjfQ<|G5A{ETQqv>di+qELgX>e~(`NBjsB!s>YU29z#G1g@&OEjDA-@Up2QuL}8_xz&rl5RdMb0hKCHi2+(BGX&xMn|b z?J;wov=+9@)^Y8Blq_pTUlRarN}o6Bo*dq{nzmgbM2~E*>5U<%W4}qXv+Ts z?Ar>B9bQyq&}uQnw#-H+Qu;PDi`#vcGg=9q|2RMQ2keqkba<<<2m*mAwFzugIRqcF zA`MK2>(a)2%YthIH4CPhwCYvxljUs1WPBE=(-pj(OW??sL;D&XA z-R}}*Wdt6>^!<2?PbL;LR|L(jzYQZOw5vx^(j^;X6Vr*Uv)UktiNP{ll6YTHeVEbk zaNQ}Edxd!`8s#Qf7S>mzr%x7pO`IGz+p*OHmh`VdNMYEPKS5_3uOhsAgVVP6<=|yf z#~u=%&~f9k5=QrY&vE0%*S!YC%QOl2d$`M(&4|gfl;c~NHw$084a@|v0z#p$@7{T* zD@7q^zzk)iA5f+OaUG{N1p`8)mC1BUo6BUBxy)^Ot&IUom?I_O31i zGAStXJ8$z}vm-!cg%5+MFMQtp8aNIiMJ*Qu9VRdhFKJ$hXWB9ITF{=fqRL3VcuA$v z=0|mas;xOBT7kO@<=kD36eP)VZK*uF($yn0p;Ikl@a6Jb)y2I|x}Q?JvJTn)O1N+5 zD^AfLL6#+UtD(uGgB^OxUGxU5RP9(JbVRiZS--HErlYpK>FV6<{*2BbEJ74~LGYuJ zhCe1yOKIy78xWPPCUNQlnfR`ve6}_0>vkPs zg7Bf6Ak0YNJ5ZR%tdT5CU(Vt0(iv{aG=-^5R{_TJF@q!%D>X5hld_DXq}LPt-JHqw zCo`>TyD=K&jqj#GY`>o0jpsy$21WujA$~?J8KtUqjtWFk0xaM1M+tQIOc@Xk8sQKAM_bD{EY;kYn0uf zHUj@+K@~D?pUna+pTwXw|M6N2{c-|EI+iGoDoNIM1VnF=Pqk;wf89eX+Qx9(KFf1GF2-m3#JnT|neP=G=S<6`_9bP%t9Ze5J3Ajh!_; za&XhHw*O1TB=sW3x81h#SRNeaabgk<3e|!utuzVn2+V&}usS5EscXr*9N~kh4@!+haQ%HJ#1lm% z`L?gsjSU8IK**>E!3ux21wW$tNt|?#>LlVjO=mQS0&duJyHVvC%J>QUK9r(~n-gn> zWz{-Poyz#|6i;au2b-cgF)RY{w(_@3IK1Yt_?EtprqqOeSn6r$TcCVefWi8N5Jm$e zw?oLVr<}@Nr#u^en$c4DupjIHD4#oIRPGr2O}*+2#6T z;@+@gVZDS@Faf2K7TiUpaVyp&xm~fd>%rK@C?p7rlans>r6Z>m z#H?3TSiJA7^Sygjtjk+YZ=`Mf4>MzTrQgDh)2U81$) z&lsdN@a&EAR5&Uo!r5QHC2u}%oBODfoU9(-vJVN*b?n+5yb&9o{s|eP-Qn`Z``H8? zPjap#1mPJJDRg$z#_ku_s@X0rg>Zg#G@5+2zJgB%{M|0^_=+>m4zhvikEN%v;sc|P z;V8)AInZwg!Y73iUV%DTrEFw2NG2Nxr-$w$N|WK%GbA8t76(4m5Y`4i2qD=HVC6Ho zzcWmGk})*DI@R03*O-!E&rGpGh`rjIsGCBlpQJ^pxY>4WHKK)ueFPzwfH}cdDD2Ib z%T&nNdwB}iNm}r$_H46D?P?Wwuz;>Gf=RD?h!`{li`Sw{u>0KxO zAG?ywz;779x!Ia5TdyV9Dx_(?MI3Qh%xY`x$#b&Q1jkEu+pYB1VL>Ugk0ri zf9Uf~&ID9)BhGP|Z8lWI4k}yuJDja$+N(+168P>T*HWYqAC;Miq8VAxznToMZhQ&B ziSPZ2g@ar@vmLP}>3VVRzKgRX52z7Bz1euBdJUYL`(u4WQdCbjycRP;dq?z(?AJD} z0lXCPEvNXyGfFtZj!!;~Znc;>o#ZvkV3l&lSo+^2?robmwo`lJ_8B*{nZ?{8&a`mz zwF3)QCkvCp-#=3yJ)LDYT;+1zGNpXQF6P$x76|iu#(0P8?y4-byk{pp43d8-4g6l9 z+u?7!c=W+-#$G<`!7N~_OfZCH+56R{L^lo?-Ib_*L=A3dm=MJcE2PZ*Mj|BB4J_rI zFx33^%UXa_O(>3`b)o6*mA>hZ&fK3fd0x)tA2_K!6EMeARRZE>;)japHC1S0mx*7` z2*(UlzQQv!m&^6T&cosiFqssL2IMr=m2G(vVhcnN;O)a&7T0UkUY z)&(p*N2=SkB0qVAv5k5hU)Wxtlp^*EjGQuqIo|&;Z^#VMZG_A~b{r7UJ{!z!J}f&< zIwIdM*|?zJss+nk8Vhr?$mrSfHp`=nXLeDn^^m8Z^J1+29wg!q&^0) z%S9ZZE9Is50@50IPmtEodSToedOiS!UHr1pz`k`_=#3WItfcVei47(;NwU&+OphgwpwrIZM1qzowXHG%;cqXfg7u&Ky7{b* z4z$mf%AQu^t(rU&pA*=5tr(D!pX@$~HpZL5?@4LuRgJewK@SHJNrxHAimCXA?1jb?h+xmcQh~>rJ{Wo;ulfsC zkUFLfwPk%|>9NPR=sp@B4`#oNG1t3@vhpg4uCSWpYv>fW=XL1p0*)5q3O*Zuk;=EG z(U*(vP5DLd{WsN@yLpoZ1nyst+b2N`vu6zbulcJYn>ilr8xv*L-j7{75vUGd_N^FqIk-bz11zz@?V~4{FEs1S@I^|V z$ptK>nN+Z;aSZUgtm#d^OZ;3oxXP-(n%m|+eEArlbws94PJ56kFB{`i)2q&kf=%6y zzX6|kmEFf~PZ8UXX3fSMzAY~xYu4utEXV6W*+fd!1F(7Wln#gSH#aqX@p;yiH%JH5 zyPgal?%%wZti70f8`d5+VYeo~Q(`dP!}(5TeSoN~Anrw`$x<*GLR)g(2MhlZ5(WgS z{H$oQ_T5JZvf1hrMxfq&9%#lXh7pI(b})#kduU^#CQ?aLV0DeCpPwvLlu+GVL+Oo&u>UlfX6?mAuNOn_71Rw zQZOVrQ;g|@o_d2Q6FV2`y9pS<9|xRw%JW#G#&IHgu<}8(@g*fe$9qv1vkYa_Z~Os~ z+;3-T-7F4Dt||KQy^MkKyE5L-t7Z>*5iEcQx4`vPD|h1vgHzcWHs!ma-L^C6A3fQddZas2x+6r<$1E)l1ov;P157 za%Oc^-_(}ySI?}dN?dAsdNRFnHYt)*rB^v!s~{0K6dE)FeMKW=m`#WKQ<0PI3Avh7 zrS9{)(_dCNxh2tQLoc)F0DoBKM!uZZx4|vHu1duqN^oT99p9m3Du;d`cJNOQT`*MW zLfVf|Ah5iN9JfM0Czj!Ok+r-x&j4of9i>CeXt-@``{ItTh!cfa$2H1-j^;P6Kk}d9 zGOU5%UJi7#`?l`j;=lPUpo2ZVaMfVPPTBW5ir5YnV3}eV3B`N@rTVe9ys&1XY!I5?$!}2+=EQlnh4kUaW;ICrMn_@(Rb3)mY&~ zg}ZC)Mnfj#D5Q};b$@iq@Yy3`6xNjWUAowBI#Y*;o*H`2D{P3vYToPa{P4uhD&S55 zIDOg!q0Pq2P?kzx{x_qp=Xh91#($keL#ymgDM>wSxl@0o*G)+djy(;}43TWlcE^B$ z^;VD&JnpqGH86qChiViLHLzbIChKgD)72}s_na}|@c4C$h^ znBUkI_ex7iy0GI&g%Y}TrfxG(9hke9ou~`1 zdmHTa^ph_{h1C1Q^=~a-fp%Pb{9S)PQ7%qaO2?d%?yVv>j-rB>$smRI zXtpHYCE=b?vknA*NbgWG?-SzGOzbZ-X?!_Zc$??gG zrzVZoEjY$cpQ|orwRcHe)1x>dd%OlmxT?-fJ{aRHTBBal#>< zKAC0^w@m5%%3BRX1HcKAwl~=53PA4NOt^q}$O|Y+_u!T=TRwq2*85;l$=T!--`RCG z$4(N9Xw|KIGBQlpB#HB}jrH*Yioe%jZ3WDx)N>A`?QBFuHOFW!BELYCntY(qRS?t6 z@w^#!@#HCe&`=Bff#S+|+WNVVCQEhz_bAw*OCn_CFbi~j@n5{o(>4k|`Z2OW5wY0@ zW<5St6FND>Dg&0ulR%L;id;wb?SxY?`Ob^~=qKf&L|UCFPC?2cdy+txJpaE;< z!5%MpoRUg7H>=BZHx9C3$ZaY$Q8)SerHS#`08&qHHBEqO7W&KL7Sz_oo8iP-#wXzx zCsL{owxs$7cM$?_>JDa5@Q`2T z^%z`WVf7BZXuezeAeK(gDa8OT1yMbFo<~1tgC71KjPKlPDcF|T7It%S#gSGG!t8n##D&T+4Cobb&pCeJrIM019( z`C$pF89wpoSQIwpmO*I(ZPeX&Kqqhd5Td){yG#6`43)gYeAStT^?VzIeee1nKJ|uA zuw$^4)NkBZPQ^3I@^GL`f37=o*j<(a9hVh5q7`n0h0deaiWOFHPcw+A2{MG$(2wlt zgQO8Bzh4OtPnx!+QgErn?>CJ0K-jDf+#BGo>(Kz-GQ+qA%YO9&d4`moWtsm}?5Kfl z6ZQJ~va&5Ax1}{%b71=T!t3j9&u=GA$GYE?EUrK8Zlxx>gqlq5eC&7QG?cbe%z7h_ z4bKjO?*2A>@Fve{psCf~{vHcAtHT7-6$w#MHjn^2<70`?$$!JCB4Rh2pu=GOj_|OY z5>clPMafGWaK5F}dey3<87=T;nG7A1_lYJ-7HS<0ZAdE)>KNmf%8J-aWuI(N1x` zJ&8%z8KeVzu#X_Dogoh8M*J0pu!I0c$` z^ErQpAdbnqQ?co+OPY87-1*sH**Fpp=!7jDIc#Os5EUSP%OcbV({23&>&LC5rrf^l_RLu>M~7T1rCy7$J97NfT5M&K zloW!gh|y7jT)BfA>}hl+>6ezH_Nag{mN?eow5@GbZ9_>ny>7G~8b6xRDUV9|=Zn&B zYIW_*SLSljf98hrav6U~Z9*B}$o&g)HdgQt2@D1XMgB1!3TtX*l#3F?ZFC=)oa2vJ zq!M{V575vsR*vqd)*~ylAJZv|wm2i8RjG-Y96ZJq+vUanobVXTi;3MXd&GQLZ*95M z&A`BNn_Y}7N&jOSwBx@+?Z>}BvAFWOOX70Pnfl%4u+tK@xQ_o_wk4jHb{m!$KH>2= z9Q+=yC)_8e8EGI=Rg6e(R5xeEhhlPxdI&`r1}Ub<7{w&6lA?*>I%@Qpo9G(G1!5rL zNT-Bn*HA{UZ#?N3^Ea%>cGf>KU1iLhAQ{cvka(oD6L~y*QpzU#QjaJQJz-cW?KX}R z((B-ph>DBWKyufV0k`fid~qMr?Ivd702DS#@6MoxfxvLP{65qc z^SF^7PVD=Wczw=pW5&^KQX9&K5v>8m!cEF8X^9s*vlDeZ&;-ZqNN#&Ve%AL#bs59o zSTKv2hWx@|h5&X}TJVAVrxy2i8QCAwm2}8#5hjFUYe9O;q!OCvaf>gbOR!FLJ#uvM zUCQSCD(>-*S;Iq>p2nkgfuc@L(gMdooKWm8G;TYlq^4@xbeGSZ zi?4F^mdNh#T+C@JIf!~b|Dm+2eeFBsA+8022>q}}58me|fBEwQB`M#*;`n#Ckcv-g zGEFrbZdBmD<@UzXrrF$_gru;|Y+q)3kK;5h)kFVYp|eS64n*y7hIo`nUm<|=_$(je z7sE4Z#gm}D)Ex+l@-92V)h|JNx;AFF&Si%T_Lt&7>>%C$~ZtLCN)XDU6NpY zi5c9(A@fhR);qv9{eo;!HcYTI?CD`gdfV@QmcpO)`58MjKj?SkdE0)fi2F_R>q6cR) z{A<{^CD1Wi>UdOG!GX5Yj+jp4WE<(V<{(}}j@3oqqaDC)K%TFt~>J@JKj3wMlUKe-E zN6mJNt=ZnbGQveuR7NOujFrHHN3iA%CXLg7Ffx|vAJ=19;Wr%udPRD(!!}c zAjgVg_Y_-^BtK*@9`9W{6_k8K7pwhPlA)1| z*NKl~cyjD}@M(S*%=X&e%z4Op|0tP0bX4z5d1(C7#_!wdyLT4@EyC8r8@AVjV-!RS z4+h1^6*`K!KPu_RHx;qos3|6{GHY9)yJt(e5zYWjy%mPs1rRWGAuC9#JJtt>?S;qJ zMJQ%06srmVauh80uKg;VzpyWHv3X}`KyBrEwdPPyM^mJN=q3-l5TO+rD>gKg(7%q| zGpn_}cQ=7cP&K0^Eo7%I0Z@miSfg_Ph&MPl2VmWkLdHAt+%aZkS==sB9{ty06*wXA&fkpaW(C+6I z0ZpZHi}_2}IV2SCfm5JFrh=tUebL1ocu}biAuJ1bAZM({OpX*Ik#of)_6z z)z8FeKPbJK;kTNbJXbviLL*EmcVtvjIz^`zuC@0)X*1M>Ku$R(KEx2^M9=+f24^6J z3ns?ZaOEK^U8Szt_PCX|$e{Vo;e-ET<(t#0NX@086pk!XkVm%18sM?vu^Epe*nF?SQ;#TV6L8;TP*vESt;wo_!T$#S z&{g-^z}C_FVjy^iaOXn!kuYm36&&q3o*^>HS6nVrIDH-WA``LBp%QQ2Cve@}4T)-| zXCNn$h{3=x*^J|~oNBQLF?3hQpo$gS{Tok@YbsdNp_nd012hx2QZ|vc5wk*+IEw3; zg;yZ3ea(=lrbFxc#zwCaS9LF(jbCH7RH9kOi!?kS)rL^bXox2DK2dPc@#}}n5|0cn zjxl9T@RV;VVmt)7&=e$0bQ4(#S|9ruJ0UEAwjMy<;S2r#P*q~9@QYJ)B;u6Vh0}XG zng}v;go6LzwJAW0<8FpW0%@35|D41X2-a;F#tX0pU$M}qv>-2NOe_Ort0dxM8cvGY zOLUzPt3H@?ej7W03asKdk>feS71czvmjM$;uZsXXrDd*VPod0ki)YG-MuG`ZL9yajIF-PkAo%CfOb zx3l{x6d6E!2aO1{nr^Evt+ameXEL27$4^v^sgX_vaCA^0l@&P!|5inBR@vO(^M*8Ng-L4i3Ug?$=gde2{2aV)JrmnY6La zh8I1cI0>P|oDw<1h9TI$;d4DhF0-3L1s$g_${I0SV-R+o<%st$R{QQHU z8?KWXpH*I z!9m9okD&27(($$=`*?TQO)wbo(l-HhK=x|K&!68kSjHSekw055{@M9gLaZ)ZYeSDpb-%hAz#Z#SUj#O_pkVWCCn5!(mxIq)qqh1MvE* zJLe=^mQ%fLEf`0WN2#%t3*Y3Ep)cHn?k`J3htfTRrJj+Ee~KGaOG}qjn$pQaBX8WW zU?CNbkmBWa^;wI^%ED=biEE~VfsShIHF2R$czK8=A1;U@AhtJ6056`bYI(8kdj#oTjoac=Ef(O2TKD~n@2yVrv@qm}4bZJFp z?`tH(O2mhbE#N#{1C1!?R5@pkQ-Zb<7Zj`Hp_%l41daY~hpy9LWyVfo254Ju6&cKQ zu`0on(V$b+ zi1%B-DK`A2TUi`!rWG;7{I0K#R`ga$snH*YNSobIO;!^eh{dWn3GTa638DR|s+uv^ z5<tOBLkg`tbFwE2iHchuA#U%<7uF1r)Vpq_aak+Dg;RbViKfA zIjN2_7ve!Eyjh}HB5Mb-rFro38Y)`F@5-TrtA4U1tnK(lAd7)0dIubcIE^;USd7x?~hdRtoURlnm6*eHRlTSXOADQV_H z?a?k-9#@8rp#{0`g1Lj^a8squ#8L(Ucb{xkq)Xq&K1UM6opI+S=eUXxK7Ucmgn2@j z;AaQpZv|(rjp%}@nUY38FX`qWik!k{eqPWqV#8=sQ3aT0(-*hKhprrkY91F%xSQJ* zDpUASlQKlyPFq-7o*W&85zauN8UwPnNPACSbo~CG)DM9F$+0dQ|Np}MVE%tIyM=m; zc>I6kevrleFSDC5E)*!+eO!nNE4&n#AxLP&*8ja4pd|$Wz^yUk|8sAE78eQ<N9_MqvHzoR|7WQE|IEn5L0kuehIs@WZm!QcP(Zv- zv-8X*cf}8V(Mx}+Yu{+qhtI?Pe=`H+zgjiZi;b-zCaTBhmm8MU!oSX1r-4dy{wu8u z0QChUnpCr&hj}_(|OAm}enX9MpYV5BFu|Gif zP9R1S;aUq59GPTsvMi}zCO2)$zgiCwEO2~Bh_c7=e7yo&X`d?ki zi~kx-sgW{V6HS%-h!?HKt=}Jn8I#D~Ef!`sFi-D>iO2<#AVoQ7ZW703H8nv~jgJ3% z_dPdJUq@NTkDg%?N2wz* zX0oKL1W45HO5~q^At}EKGF71HE#}iTN(d1}0TpX$B7_P>Q|`+i)|5WD;5{HQrQ(~N zqe)59p56Q5J4_Wzm(aRGSj#Rwa0daJb9Hq<!bx3%B56^Rp+%!nVOC0%Lr31qRPwf6`+_Z z(a^7gXv@U9d69i9ls|Vy%G_IeK^=klr(+g;@X!eTyIK@mg~K(}E=x(??r2v52cD!m z^TwSJHF zle3k3yrI~!MVDlw!=i_1yFdjN=@6Q>K&@S3ec9&i9xB&n5IgEU3`(w=ntyf0M6~#~ zDoH!0#WfBtFQc4mG#fUwV>g{(H?3sZPb2xP!dwi`Y%b{t5CQKm%^UOuU-f3phm(0< zCbO)KHtaj7)K_sBTx}h3zO)ViNdWtQi2@x}Lk)fVpD55YC_sAQBp7po7!shU;B|mq zL{Dl7hXUd9Ap;H0Mc%8M0y~13xlBWE_n*#S{I4nyjSYlC<>CE!&=kRLKUBs{6`oR0LCkUL45wSWQbni?ad*&={Eq#Sb7N7MLnVYtEWf zQscR3rE6Q@%`qtHJBqZyV$5~N%9=-_-;!%EF2*m{uw$J^e=+#{QQw z^aJ!E8mzgfW(u`xdPJ5w6Vb#Wzhmky%c}#?olaeY{n907ln*Y{Ox2x$(UmxjbW&D( znHVGPe08s`|Fj$e#EkhLb%y}ZR?^*j(V}S(=^8{;Cs20&iN3Pe*WlGOLWLZzAa9H4 zH&`?_unx7W!TMT{X0;qeouK1Ft{3Luo?-GI!QlQ^FlR{4%c<6?!%L|z0;y}&;!&9N zIA1eT*BW)qnY05Gn`@p)yq3RxSsD-4#X{pai0S!+Na1CW)aRnQ5n{;3Y2ZbVt(Ur- zR1tCd@24-|A)Tuo#@!q?QbRYQD5@B)pt#S8zWSmNY4U{mTocYSWFm)Nf!-hs{Iy3K zi>luc)0z{N7po(HUL~D`B-)0#ZNf|VRm2~(B-Z_}+`tS#L$jeHz1FmHnH7?)TJ{S$ z?LkFIW*dbcBruV&Y_$UME>1g{>oG=iyih9)7mJb@Eh@{Jiy=m`B4OBf7|gRi9yFYT zZ~iT@89;3n7BNwbRuwk6#xzwA)2^1KB?#J%9-z{9F?CJ)kl8iSzIsAJb4%&qPogDf zh1Rs-1!XSMVBaz+egdiX`~R+G3cy%5uQipOEJ75m$tAW{VH;J?g+|$A)}WDl_DR9Z zDv#Gs=q_n>AY>AJ*THbZk6sASKuV48Tah>@;)C8!8nbQq>;Lb|y8qWQf%AhU+sa8u zhBJmctRols4jG`CCXJ{En+P!zu)SqF>wFO!$y$t>4dJzgb~lOB1p#NMZo>JrCFd^X z?KPz$8v>uc$s?KIE zini>m#!GoJs%Q4lm|QL3YZr)*^e|>q7?)qDp6As`O~aNQSfTYH9a$(K;Bkgc!;)a} zOJbAI)+{Gv`jifd=|0ti6TRqzrMV zoIaIlwSGcE&jUKNcKp8Vt_OJC2r9mju~R60MG|(Ison{J!Fs zrcP0OFZ*C__?0^6Y|&fNMk}>0(Rgre_HZu3FuPY&ant*EO&#*pjE0SS5?!Q-Dap8= zL1?r23wcUei2yjB;LL%wc{z8?IfVaZqcDvLf=AdlqSZO}Yv|bQq-)44=(8F$(>pBL zk}hprFXb6SNdh=LjrsUc5#&{c zUaZKx8Dw)%vJLZFO)Y&H33-Pc0{4z%QgMTad7ijF4lhjTE_lSs^8K3C>Pp22=rlD6 z!tq%AF3;c=+i9`P26{&%7n-&`;X!Xb1c2ZZ4KG09%Q9_wXEtVcR!T<43_DtF%}+_T zhg5l9UNC|oSbH>t&5^{rWO|)Hf)_CuKm9G!D>WAws#b$j+j2^u!oN;o;ifpu#AG<* zG${WP>WpKe)cgdcY3|MXSHFnz2QX(@EVO|z8j47dEIfSLoV(FjM|LVwb1-IK+Pz_z z^+)P6t20UHqNA4v4}xpuG<#?&4H(M+qe1OsSn_mkY911J?!!*d880O}lHmeF&FV1s z3y+v9oJCFcxjtoWi6ugRK1hP7V50vd*sM>8XNQ_#f1mbjwiBtrrO@wHZ%6^Tes34-Yw1vqRPFtzhl;MqcBY9KS zrKYCTAHqBh(dyXZJsqYYEF6+u66Z_97x$L^WEMF^xp1}ZQir96Q?=xbT%*m|{oZcM zmz3d|YFy^7=N^y1N0fDbww<1MR)c?HYEFJL z1Y}7l<}HC5a*_ZEGHLT?AG3%Fl=kVtaYzQLyqD#yHu+zvOtL&mJj*zTAhKFji*#P= z)+|Js`B+J<43YKHCk1}HHruL2WrG_oeE1b;uBQBTNRKt!3{TtN)%sM@kutpS(`p}Q z&Tv{4q-B|AG$143T_<4?h*sW9T=uK=E+K7R`q`*&Dz@{R2PY*{C-MRQRw z`3Q7!q!%Nw*Dv%mjfTM>V@o`S)TU%qBj79qZ8OdmS^*S)y>Vo7lcse8a0;Rav9!GdI2&vE$QDx@Ab!jZuo2CUR|^uc2hrLM!yX!tEhC1%L7XdE0&(QN*E{ zZ~e6eDn*EQzzCZXSxwI!uD=(L0t|CNgmd(xK5me*1_@}VzD|yjCU)Nx8*Fiwlnd$F zm}$-+{lF6ZL0ZI(mr*ye_3>prym7D_^T^Z{FpiUDrBMVKR_FRq2jc_Rs*qVDH}P{L zu*bKAGegIHtI^n)&(Ih+ukQ*=u!kt9h7oMwCJXBEH|y*j;8glcG)JIymve?Fe2ntg z;4cOA21KGo0=T+qrlz#JK~q3ip3W0jlB@AikHon-XCq2XuzE`xft9R*!uhH2rTPEG z-dlx5*++e&Lk%@_&5%QJVASeiuLx)I%K}ZXTl2Y>x z&-*;zKG^$opS>I~7uUtyvF`Pc`xk3jve_{oKs0#2)?~AW=OnAeRxOP(4$6oSGksIJ zM0;5E&+83UroL9P^_&#|>B?O#*Y<2tYM(qB=U#=#yi^ASPB`Pi$qD)zKB8sSr4LsU zDP}#-S2=NiPYqq@_BL-_Eun9Y7c`ZG&I~aW6EAUgVP!Ts6%KDwrn+sc-uDLYPOMLp z`OXnbpbP;aEBpSLj~~6x^;@}vwQRQ)oA=FT<`A!u#)evnIX{X^3iAz)d!N<5%|0jE zT;g)Vvm(h9;KmzZ+uA5eQXMZ;*rJXM7hSwlxbR$}yFFkOrm|nExj%Z~Pg4jIC*%d_ zH`ZOSmE2z>CuZ8BzMMopWD>&3c$St`vOFpBjr!QFpN}^u&)6k;J(T;M?CT0GkL7eW zkw#QU38A(df0I`#Xwkq}|7}^joIkf=q2RNI)<=FxE9~v#xZRKK`JX1=O$)9V`Y*QJ z9*rJR9E3-?)^pporEiJ(AA>q+1++t{-5OUF#$&`Qb0*kEW8TJS-_jD;tsMn97rbL; z&}z--a8!6Mf6UEU+M{vw`!?_6hIV-4NJZuo+fT8aHF@e8(%{#TjI713651qEY_lXk z<;2;KZ8#5AXmcx5l&24~w3!N)quGKSY3a2)Fqzq~^v{|KUO^YQFTeCDHU{c`MZnfK zJ{^tt;*BMXW==t85OJ-eTPl#zQ47tXr^U1%(lu~+g}H`{wVGx1ShVA~r8a3{%A($| z3;j=zCl(wUPq?Zy-+UTX-K%|Sap{fey?5<4`lRY-ifdVtdlZMZzrQ1;oZYd7zCH0P z8kcoi%mevncp}y?!;}9rPun8%hipz-Vkqmo8BWae*iWqKW!A4F{$8rjC7+|UE`~8! zCRty{>)>dgjnVNI3&3MVIzz=^Ign7(q2Z5#f;g3;& zvx;-H6KuH@)8;m?cn#8irLeda)Ukcfp*`vJaquQ-V2HW1PNC_`1ymZbJEY}TtZ6c- zKwdP}ii+l6DAjd^bT#=;QeBT%$4*{Yi|zmDAqRh;6)a$OF|AURLLrtv%63%;l;183 zjEfwxq$$7h8Ag}^I`H2n1&Gy)F$FviY;4&x(Ztadfg|^6=&h%f~S$?MOM)zG(1s> z@)-%MF^=PWQR$&Ks)FJwl7}V}nzb~$hkjLD?q8OuyLyB&4lTF&bw1k{&_v0qAg98 zDc3Fyd`sS655qN!d;3ylI?m}4*_J8!;wm343i;9R?{DJ%t548lRa~&jUy1}8x!{4L z1MZkyY_;$txwxc#^~T}abI=?4NEH+=1cj$btW$T&*;(;$&qgatLR+(eaufbvU}aBrteq|{aqQ?NxnrtmW4cKuEsr-t z<1LB^ai5oSC|8QQIT6;fn;p6Y9Who(#EA&UdseAJaDyQ&G~h*xvX7c4UYt06M9x8I z8qE8Hy^`@WG&Bm$!YNaFGlu3d;VR#XNkxeujN>w-KnA0LkY-HMR%vX6Ql~xnTZ8G+$qIC6G16aW&-$=w~`i zE*SAcF!9?sS8;)KeFf<&<@Nf#71$uc-HhOVPHy)W8k)h$Zq@dvjUq=AHlD9=cDMhZY z$RtQXyMJz#A)IO~YR>Q$9PpG{nSq&{FoFhxVdF&Z;EMZW1~6B^W4sv4l~SaSNRJwU z@Roq@a|6H|SA*Px(m*x}YiE63=_d^R=P!5~o>951ZXw!k$x%;luvnj-%2zk2LYy7p zV%U+0L9Y0RuMCjbXS%^{;J_053+x8@s10N)^nH6#89pJ4qya0wKj6{=7a=j#JIrJe z4cOUadIc`&vO9X~jKIkw*?Fi58^JAjt8!p*8*>Upmj&`_=UtWqR&R`fq-oQN@$l>O1PrL1O7IQ&X%vw4DJq`04}Q_HF*@Ym%fNF}Rwh4e0tS=t)Ugb?|A)+FvUmy9pSrVEF4mA&cPgw`&$v&QT=q zpR+79!N87N1|2`EM?6-gK}fk;zgoh$8dfW2zz9>AieSdhDPUCUp2sFJqn$zeJ0)DM z;mFxkWd^jPJ^Zy-Q%PTcY#j%B?Tfw1vlA5&d`a@H%`4f!$ZG5zBA=+w zg?`ji%>MxnbO;rDVK$QjWHl%6pFN9{szxxU6xDQ8gX@(L1@{+W;p^)OpH*yH?p?le zp+a$eMT>O5UBO(FR=Qsz#oeg`VjGtrs^X3TpEc6D+nBj%^U#OnfHy{&3;bpG4hQg7 zpFgq@+$SP^sIq5Te#&0Zh%YpsOm+A)h%AdDCxvzaR57>00}lHySjv&FhWl4S;SJ0g z>T4M(mcYtruoE8npA3O_n+iM1&5ebtCjlo|<^(+-<~SCa%T_0i1Ue+l4u%eWH}v>S z8#ko}4*0+xT;TYG1(eAkk3QUPrXzji)m_8EUS=mR==_ zK=xF~f`3v=Nx(295_aK#IBhA`(I4towb*AnRJp^Vc8iyJJaJNcliC|fEZ<$0)9bB9 zdH{3L)4lfg8I+1Tr{RA|m&uc?Rk7M#yw_lF?9Pz@OLUo6DoZFA{M+6a_>%y^Gz z7=DGmX&MX)Jek_l=F*{1LviVq4(Eg}cI1FSVC76$U>lXvMD00GtvQ(u3PL?>LN5rY zdzY!}fD+A4w$60ekG1Qw{md3jLI(&eYy#4;aX=cGu7)D1nP7@4VNtq+GR2dT90QTL zHekrqMyhfGeLa>) z{Pk(H(+N#Dh_)giS_DMg3TjP?5sU4KyrY8*U{ZHWCbJf%)LArZQDifG5|GMQ3g0iul+(kCwrNF!CBurA+H zA)m*&?$92FLk@uG{;r(AA*3V}~R&H-s=LhM-!N0BVuKK@I-_`Eo72Z>)} zRNgV^=3-fJ7RvsX_Q3$(A$MXA410uigK4}+>NSv$Cx|h)hJo$d(ldR2C(r*1Lqp!! zSCaBLE96j^{uS;E)Rzm@?h%Wg1Cz^zr-->EsWZ7fpBPT`0T!pOa9;2`0DV4De*Bd< z^yJ8ml6QS-XxgAiWrre_1!4Ri!4y(FQKk1(;9N*QRIYKa89 zf?JAICjlU*eLu6~)seW$rxkKoYJM`-4o3?Su;WqV6r7{*+%C6D}h3?&z@NDK*NOn zvXKMFEiP(^CqD<}|2ZQp$qM4;@)I3F`N0;2^y#{a)lcFFG!-R@$)z1qtDO*ew_Gyd z#W4OmrNz_1>FZT_r+n$oa6@x5_BAv2Um2*q*1nU^a;JzpMZJXEX0N^Cvkm@L9X2SjtXSMbZNh^&chW~1!z z>b&7VKIKw-1**7;v1pFyZ|bL9T9j=&&+X}bD~XB+^zsosSRko=1UkAE#L;3>gR@g= zF49`-*`sK;%qxI-1QK-mmS585=P^h8FC067c|+0^Xm1}_ncN6@L206t=voyEFnF%b zR;#6kBqFPDg40AoycQi|tG7VRSjEwIS0?Z;JB7q9hkKFloT%9YBQKZ z?4ek4>;B)OEhCi8I>x;ABFDYz7+X@z6cH=m>qf znlVZdlJOqz!k3Kw-4O%}>$vDr6DBrB%#zXB--u2G$J4B<8h=Cq1q^ct-wb5lkCC&y zVyTs4CT@h?(FD@}<`M`7uazbb*omP2j2;%}Q~|xdjw3toz2ZRy#`o}Oq|oB` zmn@y$JdYxA*72y|jLbSSQl>P>T{}R!d`kd*lR%$1-L6tE^t%mWW4n&U=wZ%>xK<>R zEXFdmwGYAlT%^KKqFQFBw&u5r5fz-=Dd9c@I8skBAov-Q=$(}rrX1k(=}vH)ZR}dP zjH|R^2@&WIcuA#e(^!~&J(;yNeZ^qZ=)4PmBua^EO9IbuIKQx>~TdtC`ka!--`H%`Ri zEWOHw;263I(C{gnGd{s<;<&0QG`>^y`l0o$vLSNl`7ljR1(y5_)C9^rqcf{W1m968 zBO-gvhQ1=JDvZ4%eN}{J?TjY|d?D8tNBfu+n0Ndc)`b9PFO;5tbA;1V-YNX1{$n=h z0N0G41cr!Ci|2WHGgMEx{xq@RfsJUaBy4e0_`+D^Ymi2pjZDU(au^Q`df&RYPw}Hf_ys5{P$r%JHc!VSPBXW*4H+2Ni6pEI5ZeYP;e8 zEc$nnNsK%uGCnfaRKfBURqId^cvShGp+T}ki=8%~F;Tsy~0Aq=sk zbqZAZPAjEzrCr*L^j8z#6Z$^-N5LG+d~?Z)z&D(xFNgE%Rhu>TzA4dB>11Si+E95M zpYsKKJZ=V`!iE|d&Yl1l4o-ZGusXX>M82~l7a3b9i>!|6Pwy+$JEuoT%?ly z1Fc`9nQa2o5KZLTE3E*)dTo`$6@eQioOOaHFr0hSy|@t>vj}WN#OxSj9U$$F_U z()sCipAV_21@=LlRn#j<(65}XpoE7}&*ewS#d7DA!M!Q9d4yz~Cu{y-V(A8mntPW4 z?Bc&roJAr=66((*MJkdyDRJxZV@3xAUQ;M1q76FKt5fW6qczEl1RAaq-iO3=klVah ztkEG2+{b^TyeE-puamJKXDErrV#lUoUaZEUBaiN3UbD@=@MEN59p*%rjW)>luo3UO z@M|i?;CY@-q0u}6+$D%1DkHQo8=X9VQp7A4F}U7R{r{Pg8UR1VXr^^I<1f(~M5}SU zVat>OTa+>C<$@$P3D%crzCcrf?d6o(691Z{5u*cMC!Y z4`yPMxOi}}PSKWy&TyB>5Tvn-rHMl}{x~e9M&jl)BCExD=&@9qc7I#YGZM0~h9P7K2{I_#9j+gKTvb`POL2B=P$fSa#&G=iQ() zQ0~eYO=yP{vdkB&|C zl!dfw&Sw44g_{->-VnbAk7aS3eC2&1hTYqrXO0_?0}t2I(EUsHS~+Pvj;OpOHuBwf z{AVdUrflcpnV46t=X$u}7$s*ZW?4YV-ANbviD2dWJ8a|U;I+BpklIbiW; zs;>jW8GCm?6qo{ZRDpE=mCvK*KF7YzOmH!HQUq0VwM)1M zC98LM(Wrur7M7~W+2tu^01!Yi4aqQjU;sm;nJR%G&e|wtpR-c!0fG$*q~aUFts#SR zuxC$q8NL{vtRdJf^LBuKta-};QAgfP85mHLP^KK(H1)fyo`zF z(8?JH{HhmWi{8Wl9Q@~Hto;)srL_cwwj9i*0wK}og9yfrTZmRS$&(HQzG%F$X*)b~`lBp_wCJqVWbW^ZOz+^O=WK;Ky~Lv7 zMqBGm!7K9wxj`P6Bn)g3xX;FHH4PiA0h-{D(MCpPa(D4;u&BVuia&%a`@RQCmAV+D z^y%5Bc;LzcHE%t_LgtMb;0#lo96^p-p79+$oHN+6dh}?0l;$n8;o2jJ6}fzWZ2nQ1 zZ9??W_Jq&TGtM!QtF}p}0JA7xxon$t0lC_X3h#Sg7o9q$UURYE`-7BiZq*BSZ93tAK|mttB?Oq%}_5wRPzZ9Es-^(akY z}KGbx&9NyT}GLXY}~C3~_>61_lDDv=`wJ>&7-U4lsod9OJ_0}GH2d;NIzzx@+X zT=8#dlKkDeWks&uGq{&V~sOCZ-GD>D)yVsqHX_36A%;7wsK5xYZUkcCw}UtUI+fJ<94 zQ%1Lux%Y4|@Tx55vVD+W;K05jS%)F^$>Fx9F^{g}-^FE~Jj8`e*b}DiK&Ch97?O|^ z4-SnlYe$#4sI;6sGgh>gAf{pJ-QCK>#m}vHF}FN)1fR{_3wMXzM+P`<{ds&4+8d_{ z7XN_`p1B=GYdxrmY453)7#wen4Vn_C0|2aK%oG*#Z?!BPz<$ccR zw@T2M8noMA*=3A)&Fbf~j$Jof(evJqxG@=M#Zh-bahDKKJUAE_EsRDtt7thiKcXU2 z@*WxBqejK_*AYtygiekN=I?HbC55L_PGmv7XVb`_ezCQ6ziyi1XfVuV!?_{i@nuz` zTkUCxpcS=V(j4;!C(T@mZRv@NGyZ$Q-*{PBA~u4$jObdwafe^n1wS8+BRo4)D1X@s zlBC8u6Q=#m?9D}aWS8*ouQ3^C$n{b|OC3vRA{C(XRoZfAB{U0dc+#pS79S zr-~IJ&HlTmjA|Zx9l>eT7x{)p_#IB>>!)Ti^&6GeUgrcZj^RT~`oI7%{|vAAGwo-w zV%TFZv+CC<)YM#0YAiQav`D7M<+x8S8b{Zt${J z{8$sYNud4t+kKp8$i36XR_=FvdEujZ5otYZ+2TzUiKO!|P1+9O?W7C4jHX8_f%cB3 ztp$1V`^uS_(xzLr^t;D5pCSdqOm7U{1NNUc5%oYpDg$WrCKsM|(HLhk)7LCjABtB) zDe3~|rcAZsqRQO!XCq>^M_`dtob@16j&7AP6`Qj)nbg-wEJXyaRTnA`@(!%YGN$#$ zxW3#>T)3_RmKWcW3q5zrvNaS96sd!@j%!oxS}$_MIatkVrB81Z%2EsHVUBHu8Lu|@ zn8DJQdLH52svoe;4SM-~ikvE5=m{SJa#`s|Sv$M+BV(kDF}7*WmY%6y%RA!$%cEA> zM2%jg{U%^#p?}g4Tp$-NqZvUSsc9jlUGV$y?K6}EC34I28>;b#JLlI1KCjU?%TlZ0 z%a?3`P?tK4%m@232K$+)>NPCI-yMPwcQ ziXrofqs@asW>Mjctb;VkOmfW~o_zmzhCfI2{IH(MB<7!- zYC|DM&HGssY&6d-Nj^TqDwzox6L$IgF2~pC)UL(y#ZO8Maer4UBno%9`9B(mf*u zI^Q;p|Jl+cCqQ;P4HJp}sp+d1?Z%ueoP$fFv=68`P%c4_U8fs8o*O%J5%zkKQjS+S zrteJY7!AZL%<_^~ar7$v@G+!k_b%|{5$eX(Wp63c_I+kAEUe9OeW9gcVa&?oex5-V zh^%~cA6BS25**CRt7%N@Ml6^3z^9nvMTh4-hsLhM#>tk6uo+JI-OnwS=v|tBlni&( z0#9yT8r1MM*j93oW%|sS3U_wRZ7*_RH^nmonjSrI6sQbejfgwsr?R13OEOi+F6jBfnRQBo(4k z`=&&YIJ8kA#d3E+&&4hfYw^7U4ZseZT%LqRf1=Q-*R-|iEwd6y%+`}(6r3Au-kz;H z7^c;e$bJp=PHz5>~i|&6U&Y+`3 zNXnY4)cm+uXsbCOY!54<|UuZHNzofWKLJ{-}JAr8;iLa*E56s!JM5?xGKY#U^g|#1=@V}-$2_O@- zvJenpx|5qZXJ8r^pn5LQ>hBR>4%$*nh-@V2RH+wIl-V#dbOPQolts=Xi%yqb`$ET%DytB0sQ!x5+ESp_3=iT+{jJVJq1QU~$4O-WNuDY|2$ z#iBE(R^N<%rRGSB4#fX@cL2M7Z9_5=V=TZ|pWQ`#om0depq|EcV(bxS)~U?Lu3mFj`9B z7B9qwx^Z4~RCJ>1uP8wrb1hL%3De%4%oY%bM!Pf#uL8ldC{A_#XWpv_>EM!g?I<_n z89kfU0TrPog{J*L8=_ZW=zyK3bndLKZA!#whnjtKp~lvT9Bor&N3Iru`p39IH6LH(>vaZK&gL}KyK;Op@sY$e z+Y?jLfl`oYim7JaUM6>e;mpZ>|jV{;i=Hk1;bukteg+WpDmCP8rEvYsej1->0W`kqq-s1#)&0eNF&%Bc=^YQCKd?x{ zzQhv2cYwh5xEJ@?yVfii@9Q~=>+`N}aWxs|g40mz3gcSY7?_@v^v^g;ajL2N`mU?} z8%1A?*C8Y$D8VYT-8D_|2}d)%hdfKYqWV9Ep?_evr;%_cLI=Co$*>{0Og9niR;~st zE4Dq2x*LsgBFelggKJE0$1@hI)TnR(RfS$(U6V$=`0vz}K2Mah$Yalhh#JZywez(* z`_c~ZU+&N!k9s~21ll=;;8>a@JYl42j`uIgR!1hy%z!eAAlb_1jioekh$4pW_&TE@jGosgnUoM zzVQF$Fd-wDJg_t7Tih0cBr@bU^_ViPGdT@7a5Y!$koKW5nH0EkEmjBswG?NKX5o`Gd)c?;B_p0P z?tg$LaCP^oofc~fV&2BQBOkQ5r)vFCZCcG*IGw2{GqsVx2xHEfWoYBeLgxo?TRvAg zSrouY`#|nOl3Yh;^$of1p(M^3_!{HUbN$bEhXbrOw-qTh2{o_P0ea+cQaIF`UuK)D z9;M6>BTVJmP=x0~kjB|ekU76L$O1U4MV)sKmr)Hlivbq=F~GtwcPKLA?HkLbz&bsk#9p`=QJWByuNUlP#3u7e#)ylso0Y zaTZUq5MM8;MES7m(P7YMc*K7Z4~l$+nYRzV*zuv32UJ9U~K?G%;^a+r>FR+ zW)D(aP)P-;AR)7_B?wOEG#b_ttL>ZUqd!6Z$aKdrA2a`00Y%_qi%%yw&eX zYf_p>X{#i`xKY+NfkZ4TrV+TCc+$||ooAOGbFuoLPBG3}?5v;KK&4a021}|Ux9c%$ z%}LRd5l0SFA#-(m!qF^ib^GD8`Rocr;(xk~RlM0ZB9J4JhIQM|$*(Fjn?TGsQl;Z8RTKmV=s$uV-_&@{hosH!&8>UclXjNULJR9i)-7 zw~W83QY$xc?I(G_jsUaM`-hLrb6HsSOq`Vs1E|6mx=qe9k;@d}C=J7fdM&$2UnBU=vY&_q}^^7&aEa zf`(hX*A-8iNR8u;SHyOpMhd`>$X^&lVkate-Ccwo$=wPOgmI=ZAsgbWN^0(oeedqr zcP?lHI0bkF;?QElhyhIRT$~z$RCj(%E{qfWQOg!aei+Gj7mNR`n1Kn^|JDlmr)J9k zR!PCE0RI-J`QQ35m?arA{r+!Ro`2);|3^V08~`1Sr=ot2Asztpqp7N=(x8Nh{ zeC_}M0Wbhy4}tk^9soe+o%gz6769NU{-3H$<0fNwje097$v8sR2FPBj^11({p z7WO(b!7x0kN788-ln1h&Ryw>5{P(o0PeW$ejDME@AeVNW4vRW_Jf`?TI7ht*3eV;W zB(zk*C4`5{%5F_q41j@y)uTVQsoz(aTvLwd@ctOJ4w+S z0(2waCCS80n6&zfkj2=Hfx2^4$)0zN6LERpIYKyHrQb(VjCv zxbw@N=&dKxoPW;hMIQCTMbk5>6zRbHU$dRMw$v>6t{rVV5cm!%YF&w$wUQzJU%u-r za^u-}+Os-*-JdebfF20I|S@CMMdv(%adFRIBd+D6Y(eDX5jBkwo6Qr}Jw23@KN(R;)>w_PhA<)UTh!sjz7puw zO8oqR*U->n-u7Djd&F)_Kk+M=>^8o@(8~ZV(95eS-`X(aQukJs)U;sNH z_8a4bZ61AQ+Ay|#kxKGTC_7>KJZ$6nmPNh0Wp0b75rNR@{WNNaR%KmIQ#>A3ne>%b z_;of;!}4u`>_evr`tSr8Fxpae;1f61cP(bzutK03rskyy_kD&kv0-=WlL-QD5gP9( zISWAoL)thus>U7-&mC-;<y7FmXT`oQn&!qN>`%k>KiFK15LgOTJb+U}l6-$^IV zv+q{!FR)<_z<*jFikaFFDE#o2i>ncBZ*QHP?bcS;`)ZzV zjHjEhe;$B5ML)g0{(JS_oBUmABtRA)Uoh3YR`MF}e&!sg)s5HEl|vVcVkRJCn$ZZ0 zHdTuL%?3XG;cp%5_#b9E`owd7kfpx_WY7_vK5;=CMK*qgAm*WG#fhgV@C_4+cr-hgl@D5t807>1EPIfbO zyA01tO(n_yfQ1e7#^VRYz>FnYxV__U(YAl- zY~uA(?3(ANm-DOn9ZJN4gGnBpQk1<|NwudEKq>QTBt^ISv!=0|cc3I?KyHN_QeN}^ zf&xx8t2d&AN3{OH#&XV@hddXpTk+3tNnEs~6LcgNISle%xHya(ge+(Rd?p{&zloA2 z3sxhQWd)o-7&ZLV#M}2Ei zPrvPq_*7Pj!fjYf!qkvL(toqHe|-B&(tFs4yWvnsk&f~V`(5*o{sb~ibxJ1`EH)*D z*!(KX_}zL<`H|mmGwq8SVK>lskyQf5V&*cZ^E~6!d>g0;QDTzRHAR&80}B0^bu|w| zbB^I(xAuidZrLAVS>Vv5*Vswc(Qpk$1?Ucv)$EBO0q|3!Xk3mU#Hf#40%OEsRYPYq z^Q06r;v8yan^+c(4JR5|F$B-jW8Y$u{Kwe=dX)r4UeRW3QlQ__?gKa6j8Z2zN=C>y z<1Tcq$Va?1J*Rs`tK{HiUX_8@L@ILp=lAQ^HTH9flblb_@=$wG$?Leal6?H7Zs&Q6 zc7dJi`Dg13s&aWCaokoai#3C+SHrU@4!=cT7Pv;6dvco=w|(r!9cTS`rQN8{)_WEO zFs=(F z?fIAYEa}X?e0)l60-c>6Y-|c8@&k`Z>GKjfpASd7ZbAj|Tsa!g!s8a6NYz*T+7}{E zOiTnU*~&-U9&eLn^y1@oc7FZ(wQZc^nfCP|@v?se;cRJ4+m&|R#nkRCrI9zQG1Wuy zbrC9A&6Pu;5*VuuWA_2>b4BDMl$GRgFBB5^Qfnv={4l?n98)*tx!;l^Mn174#s~Gn zxOpR3_^rh_bf=`=Wwulu1FS>LoLm#sOS$u~C;>y|9`5t_!qAGV1vau#BsVQyyf zO>FizTg)%!{>H+hi@yt&9RlB%&-P!qC0<7w%2g1|r6v(4-iN{B6N>HfZaB{s|7Ox~ zP`)2apBAbq)y8i(5raCl?X^hv+gy#k&}6-R-_3BU{DTvUWR^9c-y18o zI#M$goEX9-@veKA1}4CH6LtnN$D$IWDqkHcl2owi!Y#m=C#{S8OG9IU`0=Gpgs}1Z z&E?j_li8YVZT$>0l~^1J>14I<-9Z%1g@hKwxL@U-kZSO`y81l!wcES7{CnIX=`H^h zL)NOo^~ue}*%na4q+R~Il#YkA6Fi7}uBC6tvO})6CQ|5xN^5JukfGzs_5bUr7bl2 zS6lFpsY+sZ0Ve+1UzNxpXx4|*tzx;S_w$di!agv)AupbN@U)$OPJALhjN_dfmcJ14 z;pw|S_bE%MO>$@lavc|VnICe4-SN?G4lNRZbaI4Gq0=ngzOwC$B@V2hK*xRLhv8zt z@EUdumY%!cYtcdpvL`z^hCOb?aC!s7(Pja%;4ZYhbla(duZ8HF8A}x(jfdUE?+Eb9 z79?IssjJFXg!YR*&6*mxjRqe(ThmTcb(-Ak#PcM6@04^pfm+p2?tG-AMNi{Dn~XTF zR>^*scI+2fdR+V>!EB-aJntA?8ZfFgG}%1VCP*wvxX6R&Vx3CziX4;*0hdRXIyPRJrtmwnl}vJ}_+&GqzYlqDmIhI3?%jE>8>3#uJK8j=mEH=gA^(OwEVKhF;i zsQ&2Es6n*ttk2Ed^)*bJgcnQzLpZf20%5r1RE6G}$*QvgDGjHeUOl)VxjsADjbOy- z1Fb%VS$+c<{QkQ;vr^qk*WJ>RUsID&%-FncyVCVB^pbi)pN5@X5J}-cFa;Bt786;A zANX~LT~b>b^%ZmT-m9;x;Y)F&)1NRxnmD`F)VR(`GeW)hRQWI96DgA38Or7c2AO05 zUJUNSmuDmdh|!wpsF(3TQ9~9crMo_iexbr#d04IH9Hk}EoR;Qdlopy)OXA#po<98= z0StPlj;-F9{Lf6*1i$3cOs>qKQmLzA1Fnj(%+dbgbBMOyU!VPQHI`^a@-jE7Mr8zu zGXB_>ZD;xsHQQwlQJL=rweg$TySdue*f^d7uw144X@H8*G=?T2VinsSv!k1p>Rv7I zNmXyYAN5|r?ZZQPMot%Q^Yi0b5a8=OciW$qExVVukKro(pAHrW9)3YRVO97=sub2z z)P6d!)vMhW@*!9^oIphZS&$^O7Do7KVN$^X$>MkKr~!Y-N{hF3UhB0Zygikj_$u13 zB)xN7SAJ&LooYp>)6*f|$K!K5WcNyp6#&nJJ;+0UE@i4@7ae9kvN9oVpXj{j%i3tw z7}=8rsi_S#?I+Qj$DXlWwl&Fe?@1bBvw7P1h@V2JcHGr2){4a$>Ti*h*CuEvon#a8 zn--o(1diZC;qnkQnmod67E#^=35kgrX{6mXeD9GUgLib4;yFsASgTI@ zd9_=X);C*h3CiwKP!TlK+W$9}%w_Uz4$o3#ehpooNZqOMQ;B&kQVWvX zoJbqzc72ZT!#6`CGM{eS_(kn-tFnzIwR_81l2{(^yeR647PW&|$?NTl-&3--_+D)x zD1iMO@UhGdhsV@ur75PNwC{cd!z8qAOKASg;gCjTJ}j8X#aOcMvjh82Hv{p)vRAX^ z15Z{bZPTY3#3PuzaT94IM!5AG-93*Q(Nrqe_|ieU&w<0cQ7w|eUDcKqE1uY`S}-hmdX#NS z1{jo8GDzd}_%;7RhUnpS>r#4DROy0$MOfGR$d=FNy3#qiME6&nzkarh1V2lx+Q8lY z`nC4!?IJZ-;csPoA)SdFeT8SCG;KpasSnY#kd(v=#WyaKOwwX_VZ$#EUU)^Y@2HBT z+9=w3b^u*`dgZvLQpbqY{y5lTdZ-WZU@AjQ_3EC`-Jm;U@TnCQoAhTl3XO=Jd1g6u z8OKf9TFwlzksH(Tl_q9*of+3R0>{Y7Dc8<%^~{D}-)b@(4ldrWr`efPr){b_>Pu4R z{46z1-KMo`_!CcVj~o$R^F8F&JLsNC`aGCbVh)>yJE6p5}e?c{zF#GV$?4dtOyGplmwVc-A&f(bloz^Fpx*3<=9On4>4Q z5H|yV$6Y=6r%_nxmkAWv5qf1e2mGLr9Q4H>NOl%mRi)*YP>Hvy$XJ}uu6GhrRpNwr zcUt{S@YjOA29o#2`%~D@%l)K6Cl)> zs0U!!_i5If@sw`kyxsa_1$1bRh+XN@M6l8yqG)Y`@L#N1BUC3-f57zY+cG>2Y%{jI zljg@F4FuL}oq2xBmb;?}827o@O&;QYgim?KGNt!>F3uTMge$|?8XptR&$vEiEjBd> zk2S)IxBnx;j`hqSJFERHxiiNX1YW-|vCoO)ekk{UNPEkuxSC*Hcwm6w3_iGfa1R7` z3GVLh1Shz=dvJFW+&xI}1Sd!!xC9ai`t5noS$C~(-Jkc@%=GT*s(z}vx_5VV)xjQD zTF+$}R+0HxT$G}5`IJ~*S7z*c-~`pY!3l_W6p14RcoF}F({o`h#F<^C%lJ#lvqVIib zu_M#n$GYs)zZ0qu;NgCj6naP0jsp3O*0#v$#w5d1JeTA=X7JIRm2-m8mnyzL=w++l z`+~b;Ij&Ck-Me?1Qa}Hmts~^UjI2a|vxh%`2;M3ABOW@_w4{!a2++PFPVEh+$&zAI z3tjomuKlN@%+;DM^?nk1JdZJKMY9?DO&;FcM)F;iW%D?Q0rm#Jf&Qp)eobpKx!`g>W@6a2H?E$t{#DjGFwR_JD&& zo_fO+Fdvy49n=@_k7C{44AaexZz)19n;z1Jrc5!<+^jFF)G0QHDols>Q9bPLH+<&; zb<59)EWcy}QV#sM0XCd53%po?7_>4sqPWF?I#gTHyZBKIFz=lbt+ywTD*6>JYxKlu zA$n8Wq#N^?HTDR^kbZk96bxxhB?$gFJd+(NS-z(j?;Q*rC(aR??ZoNp!rwm};o9aM z7m5y`LN)Naqme5=^O!BV(i+y;Z|_rzm#Rt=q11|hik^dF(@>2H#G&kJi&zjS-F>EH z?R^gQyTvo)yotwj*FjQaerMUA8H>tjE4CerrVb8)`lHCQ#Tb?#L;)GA^Z78pY;(Jz z8zND6lO|UCUH>fH$bx^-J4v{Es8y+`euh z6zI=pHjnBzr_VSyc=>1$v6WxJ^PN5?qDYsCG^XQO818M{m|*$(z?7SmjQnKJ=E2Oc z9q#CnKa?H0kEe2qvrSoHcZd_rzM_Hm;aZ%J3&k&aEY98^c0-=TJjhowV)yel|)#dV5<}U8fry(FFZ^ z?iZt1(DQH;rx^(G@JpZhnPaFJsmO`=yEU0D2(D3wvY^J4wM9a1iJc6ENGWwk0GG>J z&{qM0?zp#7$TDr_A+KR{e2>QyF1wD6V;jhz4Z!yE}r?hqBtbS_4nV9js zFsS)m3N;RAuP%!Nk(wA|cc1yt$>$oge^uDZMjxJ|kD0D!y25I5m5f2zT7543w@L?m zwnQ%+*L9eMgd~DeuU`q@cP>_cNdPQ$QDH23e(D(lC}lyn-at7kK*V7&!lg}xROs6B z(S=?9_k}|T8fCu6fNdu>5NfdinQgTbuX@{b%nOm7+~`X%_~m^RbQHJ62*E=r7v9;C z5VErnF*K_E+k9C>;8&0S#8``wGV=JVUsTP;uu=D z`3aIJzt_de!gUFzV~F5dA!4Jtq9hIs+SrHeaGnZ7-}K!{f`OPB5N~NAAOmcZtjYb$ zkNWz3o(`chU6Bqkgadj{OWYvvhpfPf1M#)#fuG{txFid~H$3R_>@3=|A}hJ(A+;Sw@$BrIhH| zd5%o68S<{$No7+F*XRS<3d5&hrnP`EH}HDTkekDjjihBtbS=^-A2ydPb}fE-)tD{= z4n~Ypr7(OniXOc2QYu^%o|aV7!1e^_3#x#dcj&w)6<7ogF0{>bEyA~woio8r{PGD` z3O~^m$6#VAqJBBiMlONS>kn7%sdrf(Ra0F$`KGs2_BWfgEt3KU|_lTBkDk_IE-T z!Cm(CGMG&iQ$2s465-kLFltvfrCm99z1>jk%=Hj2VKUj`7gz&JPckKHSza6Z5B7}T zZpBx23NQQ)#@ZZEYPo`kSpouf+FO@%T%H#i8%dhFY!J@DIGy{ttcUMBM4rlihwYt1YtP zKceYW`N9fyg3aUxj+@<)vx_N7)ny>L0Rz&Y?+tXX%plR`E8n!fl|?@MK-FLmZgv1d ziz^&H`e@mRzggrLj%-sZQubvR&q^7ETmGHG|L8X6grP$hEy%eUHSqS__oTOz*6ZTQ z3`**cocEd?h3c~TG*fTVI;cFqGcgCv_m4mMc>2QoTs9`R>4uA=AHw=4Y3mI%!`dOE zuPdRQS@U1C{#Be)<6nmGg1!>3fHqwXuLCp3q9GwE)W?z4(P(Bs45lFt5cQoboZblZ zA5%MezG+9zXiqD*q^aR!f&M~rAV(P9WvG@m{`4< zOJkpyKrXV$z#eHHxv=kCoY3@3P#l5^6i0@K6W1o3cSv`g6Ys2;>g!qtoKsikd*!|> z6$^5$2qKV@9^b{g3-};#^oOW-p~$&zCx#{%!RvRyl^Kd)7d84j{bklZTe3MU1*b1- zc9YR~(%93j-VjLZ_uyA%m=qbuJ=Xfi%liJ4*RQ9({6$fp9Dqn(#-6#W{22VszxR5b zas{cl&8BMRT+C&yF+hiplvP^F)g38o_;}wm<2j-B#1e;%8Tg zfnG0p^d@S6@&(z$MbzK91)MhSXe>$ILJ)p-yMrvHFs7mF4}JP#;l<)PSW}5@jXj=U zRzjGuzI?Cv$S;rMgyxxPWu=#D3OaN;Eci8=UeDgE1~s3d9X6xC2@=+JAt9%ITv)g; z-;55=w^%6Cqi zF*7+*R$OgpX|$@jsR%k~FpV&SL>@EWyg@3>5O;ZgY5c=8HfDOPX|A-?Np?_tNF!fg zA2_x|Y(8+vmYRoNauff|qRDQej%7W(?cL>1WB+lJnZ_Q$FK)}@*fGkk3yS-=UFH5& z(AZ^t*V~f0`zGZj-S76DD4wCb3;kX;t@HM6k;m6 zQwD#o+1Jlk8ZcSBdexTty~DtGnwyk4)knirS1mZI(#(wKM$zEF#(}$sTLOJ%-FD{# z`#+i{p&J82%C24SViU)BA+PWcM`&g;K2<9tEIIVL%_;=)Wr;7ef|z$xb~b}el;bVK zLvOpRFc2k&tqd~iM?%=)bh|^zki?-ii!6D@*490)u0XQ3k2V`6QLN;dbOzdVT#1xiKqm}N%Mo}BX`kI7bzC3m_b6#7(}n>U0A z3``di!np@_D<}vwyHL4l%$|iteoeBppOHpo0VOj-YZ+{8*YvY?9n<1<(@Muv$6n4}z&s+nF zdO+si9nPf#N(<Fw9#)>SX|3T<{#D84@*9k#_`d22P|m6*-TxLdwv5@4 zu11>Wd&4ck;mgTld!{1L{;%gf!qJwmd|pjj9~Gg(1Wt>;qMU3(%G;*Lh&xG} z2EGn2ko$}^QOg1?Q106^q{DsI;vb=HG%P{tnbwNMUicH+c@q6(w_|fIxZ9d5xo^=n zx+9Peco^tVWg5y`9;Y-X`goUwzR=Qgu2#;C4~m9-6E=?sH5B#q^+TgfFJ*k8X(r-W z@kvFrc8k|SllR4{eV;8zs!P~XbRJ5#%2-F+#zkmL7%ATl(qe3!&@p<;odWV zD7tF6>f63Fef7eAx%4<;&^I)|lRO$ooeMI99J~a*DQpUxUu?lp5Xwmj3u)kvl&Uc; z;Rbs>f$$uN>bV{XzLK^k$&KopPW2jfebl+uH#*Q$xB(AZd|{ZV`JSp}*YQE^@$F9K zd}Dg}S?P~Is_^ZJA71@duk12H<>?^JDYHQhQ9{ zAOCTCOJg^GT)S8w1I~|`w(lJI%)1e{&+RpUozX*OuNR@S+jBLD6z`8HHH3e)y&p-+ zJ*se5--kP!@GMYJ%Kb{*FxtcxzfxYbfMBWQbdnLDf2*|*#K+zUCwSsjQ4r#b8V&L? zK7oAr^k*Hu-_dYnM`$tgq5(x&JZ6)gUZ?>PNL=i$w9G`OSZ#hbG*x7}! zq~Y(2?~U>JrJqk<_|*wusg%iqmnGzfm!S7pbuuU$m3KH;&hu_E+|CuOe}p9V!`CUy zE90cGj`5`9YyYr-vcgW6u2arCSQP%t`n+|Y9s#Ki~uw`qpw zG$o)LRSsXUTRLj_OJaSLtUAbIw20U&Qr=3;iG^NQbV%eC5i)v{q%6{nC_Uj&(Af43 zq)U5HRr|iGrR>71-V-a;=wDG1YkFmSoJCpGv=_(p&TBj?Bsw?gcb6B3XTU_2AC+S; zNW#%A1YC!Lt;jWM@K9nmLM@!+2e#TyPoKPkY`h>?R03gOwsu2F^^GpfptmKvA)Y78y*=k?Jt*Aad52hC>t-I*@Y%BmEA zI8CStsptT&my+(DDVbM=-7O&@AqzOjb{l69@v;^Hc_0^m9|*UvIxvbb3?~4Ny5%Fa z7JZZ87QdiVlZI7#cH%H7CTZX|@T0l6|JUlfG>pLr4xbld*-dDDpYS-gi7kC6gq@S@WSSPUV(f^& zl$GWA<5VfBvba*7}eUKwrxz@60uu#1PJ(qWU?pV#OTqJr$H%_D6tSKq@54 z4>RK}_32w)@8+wNs5IP=dyGgL0jA#{B|Bn0mHrGiX?#+8t(40f2ZVJ0_+wKr~=$6}f7p?c0GS-h#?xpxmkLVXSEt>Mk33v{Ls}k zd-Q_YO1^%DS)?SwjX?}2(CjYZm=sz{yOc&I(5FB8#epTiSz_ph8aJ8UoA&8${Fhx$ zoyhbm`k;^gPqdwv_BY!6ew9bwKZp7#PzMvi?PR{!ibLz~$Y9C%{tjn^Z%<5|% z@R#}PsTLR5w7>q%9XrVflzR!1|R=xin`jYRYy`Fc(9r0s-<2I_nE1q~pE8F!1!j&D~xeUU^Z z149voc3Y`lAqE)4=+HFT@g1@*o03`*)EFf*V;lz`9p;xF=c%Jo{mk#ZH<#eTrwrDG&f$qem6YPe zzQxB+pPstv1%u4Zfo)nMqHHmBrRix`PM~0DS5-!)4lv*565fnTn98KUt_<>ywoG&{ zG;;umu4m=}!i0G?VOx*`cc&n@a@c(Dv;AOoKr)W8$*X|pP`E7SSHLY}D8;Zz5ZD=R zq9vS$M1X+U*FgAXxbRe@OCeZkrA}QaP+6h}48&v(hX65tPLJ>%Jb^aR$OU=AfV|cy zS#Okpi)8}tuldCP&%ezsqk#Bc*s<_sj>r%(AF_ey5;DqQS6MikE?y9v6eU9P|1g>O z8U-Q-RSOn6fk%L(f=%@ZvlIa?wQX@y`u}UYJR7);L-{%eqVot~=vSS<@B^qh;~32Z z4{X&=!PUJ1w%7~7a{x6n6|gQZz*t`@29pB)99yL?e4pTG$c#Q-P<7N{BkRc|O+vWl+`gfSO z!olb@1KpQM1a`b}V$p%wSEaFo6cx6;*ZVJ83s9YA(^fnOKj5*%5k3mgnUG_s9s=+` zWE}w8Vj%M&C60mwAT`1UTO{D%15H~{N|UBs87MhpjmJZWh|z|#0Guf{eqr^YEeG0F z8=zT@vj&cyiv7@rg)P4UMR*O+x9~g~|BLSyJkVw;niwc0*$`k@j894%KtQ(!!|=Z+ z=4b%*O9J5WHY_c(8#c4_Kiw|EUo2Yv7k1bA>;^oDJ~+Onh`0+Y3m5;_QRS_h90l z9IAnd8&=a?JWU4t1y}%umv)CKGXPAfcEQ@GiQH3_05j15-?xa7S~CG)Nmn5TSpcj} zR+6Mf+yD_dy$*j-*kC;nFg%7G;56Al>#VQ=1P2|cLz$2O60pmI)Wy>P+yt*V!X8QlaRni`4RujOfR2avE{)~R0rP6 z*w{@;Zim^IE}(~UUkqTJ!Xzm%N}?VLjJS<&oHR80_kh&lzj3zc1Fg+R4IXF%pV7J- z%H#ms3A&o&#nnIsT|CnpWe#N+r7A8>yE<{;M2D7#3?`@%^ITNm$LDAmCE&F#SdIf= zB>R$q1vV(EnJ2D+VW+I?w{B>Bi?|Q|2*y^z$PXH2+FMiFjOtcr~{ydD@iMC0^oQD!}F2=d?ZFo z+p7%2OgK0GIOH|(X$jqsYz1npt&9t40?;X;LlcLsfPtMd_XB{19`K+^;DB+q1kl6b zLWezA0GNaai+%xwK3567$_5A_bU|Q0<*LkJLLvtA`!b=Iv#0{5K?cJ`1eXAb_M9+O zpic%EVWrzZWAVgDvWgTiOdeh%XtM(y#FfCVc{2^0cm!>e z9)PGqsu3*#VHfjJT-k&Fmv-^z=*v6+1tr~b><^TUx*}DBX=8r)a?pa_K&dWF$;e|3~Qm z5&R!U{wsyi{+|l)L`Xz1m|#s_T0@r{frdKrlAvd>Q8T|c@_iR3?Jkfv8WDiFE-7G( zR?_&iVdPvDQRvx#S_^w4R>DAsvn{1zlNc>J3k+%WFyK0Hba({-cSNbM7wbHgsn76ufqLr0OXUY zGgYTZfh7ZE61fwwBA2Xt;(IW>J@SF>43WaDeA5R&laXm9=*t)Z0dK?r2Pc$aIfyBx zFqM$MySOlsp{ECYBRbRp&W&-NUtV5rlPJX2{~;o5D*&{*t6!d<9`2vta`Xra3j9~( zUwe1aXyQ^R496V!a)fKhBo+(@+Ee66%uibh`@dJlg6seH$`~;1Adt#`E90BQJ>mbi zm9e1p|E!FA(l{|gIiL|t2m}e?-_RiR@3w!kCWmx$aCl%`3}bY4C#UmObkYMGqBaYK49R9Zq-! z?{=QnWbX_>u`cgl{rf;B6CdxIlyG^Pp`jZ@02+&<;q%pqjbYtr%b6;RcV(H_w~4>; z2*&Z{S=~Y8e9p~?&xKBoT8p#@fUTuN>kwsG zr=pc14o|X0Tw`^SZdETyKZjnR+K=N+*cu3*8X~$$RyjK)z>5enJm4$jk}I|Kw*nbE z1S4R%hG4T}JN3cT+Kl+voTZlF-=Wr3$f@;NUAz>NDh8YS_^er|A+U&}t3x0DC- zvZ0}&k&uuG2|Zl==)c(NefW26LrGF=4j8GBWsfiT1{o_zOG{~I z%8CVN6p*b@Ara3Gh)J9&HjPP}f&H6JO^RznVz>uRNIJNnB>M88)nsDCAu&uEWWsmU zLLhlkV=_)^`6pRExCME{HH1%xqN#SsXOIL}CS<~MwCsczv%g%_-5B2rTx;i_;>Lo7 zpx;_u*)s9Mv>^4)l4O?y)#y>kaBla@eU`1EDE73xE{mG^GZAF<1w3-;YR%SUv?3*{ z$sY@JYBZ~saK>p6U(db(S9kWOvXUr7MFQ_{M&k$va@!UtH!9}J_FJ4nYC#l7g2>&8N@LPcUySUot5L-iV8`SY;h7PRmO+cU6 z3XY|YD}8yQXz$HFeL?prNEk;b`-=+Z1j%Mw!0(>0q}ubP)&f~dO@^%J8vmAOawCPA z*VLBzk*R1{eQtA`^9$gpEi>w)lziKg`O?%t*fcdcG4b!>hp3@G2%f{ni3xBRtV47; za`SR~DO08(F{pe<$te?m!SOqf(Yu$h&tH}35|GgL1eS8L2&oDv&S)EN;4kFX+CsRuP)3t`C)}`-Tj^o-_ z%j(@+2Hi&=1@A&mm71jTw-+_D5cg?xnWo*ouhc@JwcKIrERMX(_M^EDWyoOl zG0I`k#DAyCo6|u7=h%pcOvz2M2RW8m0epbU~RlSm44Gi!mjX? z9-b~tjR%Lpm~%g3Q*8BJRBnuL!cF5vbwhkAg4o=^Y@sMvo{f!-fPlaf+t}E+W?ed7 zKI zjqMYQP+~oI`mnGojlHk9p$y-V^i_51yC)o#V`LVu++N`V7k-aTd`_5u;y; zqjA9n;hu`?UmNoTYr7d5)}dQo?4huPhFVq)A~BwMsUdEwJS~y)4mHL-hfQ~kM1^k$ zdqy|gKmI)<(MMGJ>&m0dt6qZ6QY8E?MBMx3IgmLw25qh%MKMNt1ek#bx^p%`$U~;t zHaPT@W{7_aBg{UlExCU-6^zGP3!_(k{GE46c5FrNbI+HI{+ZHKE8P%XqKSX8n|ZKU z9r1YbLB<}z!9IZX?kPr)!&yV;?b`>MgqCB?3RA;U_R2t%`?d&2m1&Ca&Kdpne+e(z zVu-y(GsZ=|9{2MX^&6}DLY2m#4y-14;VDHWT@~<4pD5jeR^-5{;Lu|XDodF|jElF^ z(;NCvgR3RcaePK$VTJGz2N~c>DbHVL6kn5>K^8;}pV z2kFys9=MjreTbmY>H@WEB2}h(#0F#F627a#IS-9JpVa)=t%rx#+iO%*N{i(hh$qsn zFYm4)GNyPA0K0uPC_)#fsa2Z%3NI;dgYKDW|8LVGX}zGgp#ci;MSL zvT`<(dDnB>@jIXP1Bt$a11pd5s9;=02-UoxjRkrSUd&6+?zI;RzaOgDH2x_FIaJl< z>1Ec>Q;nYHCZvKJ>nkML^aMj~ozQK%VhHM8xO{xtSopJ86DrmSHxXOK+o5Gl_e>s$ zolx0g=t<0wmmpGtR{}17i;S`Ma(H6hPBMSHF7-4meLBAQjv>A7s>>dN=5=g?cI_0c%tuT|PW@ddEviK2U7D8hf#oF)txT(~^mK!% z+fgie?N0`FLstc+6zd~-+AqcFZ12N-PzQQC>o}0XYD?^{4AE$V1kVV_-|mS zYwtAt{dVzyJN(Oaer9gjMI^9s;zxJO35)WNjpMC;deVNzxFFg6AP#pt>iF;P@twj` z!a5jH^IlyG@8O<6UTSJmmuK~y_!AE*>>k~clw5vzj~06H5!k-A=Kzpy@FV&A zk&tDt{TUV4$>xD=PTG-K^7OPP77d?lYuje&v)}Vf1F@hqEEUF%J-IDu^%}b zxz8Wo2JktsLyc|SMKfMJm3o)3y*{@&wMv|-mgD`(_v2v1_^$uWSTp(~)ei?k$ppN3 zrMF`Omq>XcsGPh?$Cm1tVxd99%R>R^vqnGySkaEgA{i022rhke>r1Rlh{WYq8dEqI zbYKn=(InhW)2@T(9bJQxNUcQm2DANCv^$h#on5*Bn=qqq-G=kh3Z2~zq``8ef^+lH zBT~`8k~^&(G;J^sL;yf`{0rntA-qHL%4%A;MsWCKO@t+b0VzY#nfd$P&rs%va^@=$ zE2G8|IhXfr5C8h4b-(>M`Y;OCw0(9=5(W z#&MJ4a@ubmY?Ybg4%U?o)d}F&O=C&VAO=Q`o!X|+w|<}8F=I;#yS5A6P7o{{=AJSD z?KVJR(Hk;#JkM2QLS95;3MiI_CXdWXP{|H4@Qcz0d9pCIRJbBf z+T2H`#O+c;8||j~HSN(JO2ZLyH{+kXBG-Y7%JZ#h9$sQz-{2~gB!&MY_t#ve&g;S8 zPCUo&zclYEl*Tw*vd)Kk!>bD&`4W!VN4|AXddt>jsCNhz|Kr|`PXbLFDZ*lLSdHfT zH(fsS??M-K7k#hwna##5yTlwF|JmLLsO~M;$n}{M%@Cci&bM#}X7E^iSiUlPV3bVu z2+rMe9$dsJYV}S{HuXH|wu#iS6Cg`?Q}v_xLK8&-xi_@#M`~RZZBnpZ@P=d}#lr3{ z)qg?hIP-}bkL)Wvclxy7R(_G;eEW22g|gr7tHLeen4sX=*curbZgzmm|LF>zta`*y z!3y!W@eeixt0yi;A3r7O@(*yW;)4Z8OOJdezv7SoS%lI(Ckoh77^fcvo*deY7l);{)M z9InajLC3s|BpCy#lKR=GvPSDwRE_M*QbLEh$)ElpEsy9WKi6y+K>aIjzkoKf{+T=f%GATw!ej$Uzn5v>uD}^>WXz^ z+^OSZ-OzH$Seft~U%k&!JnN`52Z3okZ76xmYvrb);AgO40BzbmXez|GmUt7@N6+C8 zDzhu-#$o0Ni>#Ny6(<`Z0wPgmX;TuoC9bO_gwNVqT`w!*Ocq<7H)D5dT8*6!?e;Qg9^u+MXU+YZ8Z|=q7Zqw_DM5Hs&WVv* z?Ni0K((xSJC#ob8gy!;#>$aymtuNN*+n~CeNXb1-Op-(2JGAnLkGiS@^}MawHD1)! z8WG=OA`inBzQ3o#jNm%y?Y``)3R6pA*y7x~UzKg`cbM8L@#^|D+{%r2qadmzJ@HW@ zVSJ22sG#XKaJqTH;G^@Bp4D3J@e>`$MJEq%#Fn@w-FnF%9itw*o%<>Ki2;S>7cT4l zo877=7t%k*NJMfREI;Hf-`GzlA`#(E{!@{j;IeI#(>#%zyKd8k?B9C&w4$p#xZJFd zBhvEx13y%VkXrtTEM|?HeZOyEs@7AkNQqvcL5$=Lt+1m>hTqKyAp9IMer=7+xvV*# z^Vbsr`$~&t!Vf8_Yt0y9V&`o5aVu8g)14~(J`!8aLB804De?n@(weJ#>22hqb#L7f zWfEwlU=vvTqDKHX!et==FS0!HP!G{cyHMlRY&KfqKn+Fbq22di8|8|X3)wHf9s8)! z|7*E{ z3Ym{c?);%dEwEk7F2YfMb8(Qro=~2y!1UD2Nr>nw;Ab@FoCNAIG{cOfL~aH9AYKIV zG|p|jCV0q45w1HJPik|dv>02L)a*w&;k%pK#=KW(RvU>bC*KJT?lK+Piax|p?Y;u{ z)yUxWISA9Se(?H~5lN21ElP^-SHpT&WqqD|U zJjrzz1;(y{a#OJCl75tGl}Ioq(`%I=8GU!A^1tulY%~r(TtaEJJ z4G{(pjE>||ud_>w2%yHMbB;VDn5R!IaQ7cN?(z{`nDX!TT}3M{o|U-JczuYpnWrL(*b@*5d^{qR0DHjheuMME4F-|WNKpl=&5zbOAK zg%n7BphKY!1Y;2_C50u_c7M74-AJ1(z5H&H=lD7JD;3U1-Y=>Hc(v(Y87yjh8u7v} ztdDq*qDTrzy{GO%PxBd=1uv=Q%HQ_%e7z)mt^IR2u~A63Y!*>z=V~q7sNe@`U}d0B zN?(lBt<`zzb$dqV3VpDvFPEjh1}@~NOm@p)L7xSwYq4U1s50c~QQ|brCvfvDDr4qe zRZ3Py_Ah1NANtB3>3f0|KkGKMfsOwb&~vpq&o34UUoo)#w$tn1e3pTc!9TSw#RJN7em)Rl+EqLt$k5L5Cpxc4zSwwYyj+o}>!=W+HJyfbnBKIb%iZKU zTr-oudW7~SV}2JW_hA_2=3|Ln$%O9V?Kh~mELo=6fKAxF(a-O>aH4LnlN}SG<55>* zLB6rkW2=iK72VZ;1@G@wZHvRHIYQOvA{2iu<=SPW4f^rs++QP$ZRV7N(8I*iw_c*R zs2L7%pe^xU3v{19WMnhSUGd^99^>7x@oEbO+QsS|8Z@=-C(raiGSfP0IabglE>9Dh z+%Po*`c%(~=Cs%XMRf!EoPA6uYTq}RXyU!U@XTG#$Wvc)=TxufS9U|C`DgjnJwKwN z;=b3Xlc7&9ab_9qR{8b6k|1t>(%O>gfUmZUrUb>&n+3)p@&(6xA5nW%dfWbel5-?& zK^6OoUj~AN4!rdH2_dI)9}^Q#`9&wo{hs5|u%okO@xKqu6bnIJwE6`;#kg6KnqlQI zvNI|{4~y$~fbV*6{C-5iWFPpBo!S;0xXOHUdwVFvETS^Fj?Ca3`QZBC6(#MG7lFX? zHkOjxI}}tU%~-m;EI(RRLCX4v^51oQfVZI0eBCFz%6Te$``lQ|Nbwgf79=Bh4sS15 z=pyvL&*ML-6(mL?ojoN>f13_54nxvr@4?Hmy19K|TPj-}2F5o;Jv+4~aUzqSI znXIl^Zd2dLD&@?xYpqAntSuKXULBoep8g>#ZWN9pJnH6{3(U*I33^s_t9Oapjud39 zbuML>|FZsl?7DRCbYrwtATseA+o$z+3AUN)vHwnL+KpF)^U|LH!MsC^WzeAF7TtHV zN?VRymv0{Eo)ShdJ&y-2L5nj^#=X2ue0OyARNJ<9`Wudp-2NSfWUWx*V;?cM?&AdL z-Ack@RJE0H+)6RmkOzjOoi_t6OI4>%oLTbOWqnBK3IpQ?<4AonQgJ!1S!IpBBK_W! z-_t!^pG!bdDsQ)m$|a2|F|rNW0Ny{(A976l*w&TAaYqG zW~SYgmY%qMV`D?DvD|)>;nnd)f-4JHr_BSGhmir_q^?}Hg)~W3hpTW@=+qffo=rtb zepMji**(=^yZe$NE2^KXjxA5HN2%GY+)?vV06zQstQHX|lP0syuq}*~$~0d)9BGr; zc~vLI`{$;A!uwF=%WonpHeZKFH@)90`~QAQe;CujHl%<182b8yk@xqE&pjBR-A;QP z<@^-Fni%fY56s%n)mO}sWFf^D$tY9VSb;HQHkg4=NR*Wzb1Kz@vUdYr91#-HLsFcW;-EhmhWQGZ#`x{Rt zgrBR4zGpZHrpDrO@e`KOX&6-wlr&J_{3Wwiu4n=M4oN!3%3{gvMXggRMYGO31rJy7 zCSi0CT}~My@r?t_HK6@qo}|8OZ&IRdy|ZnOPlb`3N6OTab^4d7)5$pX^PKaB<6$B< z?qc9bPYjka(Q1?`7bS*xDG@wHqRe9SOD>$b;|M~>J8Ig6fL+$|Jj(AL1<_ZOgWUPe zu=pYAa&T#ok9pAOTWmu*F~CvX3DFc1{`W<+_pKEDv7jAdo>a0=?b{BT^g)9;467e0 z1JI_l{AEXia7EEts@C1{>+AQ{M4NaseT$pfYLAQEt9_!lt>GD9*Wcj^tNdP`13%dW z9<4ry_iK7L>to~J_`#hlYj6;Rkf#^XcCJ+@u8Ir1K~Icn zYwj}DZWiL#l1BW{3lT!O9&{0 zvi?It+gNFf@VU>2S9wU;;k@6p-r~QWp600Ybj%@orV`q*PwvKN!IVA0Bfu{tQT~D5 z%%}b8zTwZgHU>BOlONz`fF+2SKI-2_adkUkJeU9tdRlKB@P8;{hPK4Gq;

`Z=lWB7}=>@HsZSrk-Yg8HISE~PbbIG8L5_31)^LkV!=8>}D| z!ZEtyExMM9aY>x7cS(k=+YK?zNpu5N&CFv6JXL{5V8)iLjkPRcqnnF^)G{Brc<#MM zcMfm39U>cg0m=ArA}M3rB>K>e<}hzRBo7sDvDEP3U{G1;;Kdhymn~4n)6;{Fs;Vjw z8iY9~;*O8#efi2@uxURds6gT_4ErUvOx&0bTuc2q23!|Q)yfXOWA>+` zqce<^e`AC*8w>ZCNF|TT0;1Ox9xvZ%fp?k*1D-6~Xa7Z{$oAQN34$h|=&y8LrH8#* zg{U5NX$ouUS8QWQV48&}7%xk1AdJ({c`|uwcg7yqjAV6>$|sl+{$}g`wVI7-qEsZ| zfpYZ(`j|fFX!p-+?X~O=qGZq1S;@rO-#QNhSBXE({B!iGjkq&6wQ`)}Q&^2zH=BY; zr#g83HaSWaT)L1sBMEII32PvSg~HdCVf@wa4XVcIXjpwK9p`;~{?cWrj1Ej4*0JiJ zbsJ>~DKhd~U=P!QJZ!RI?;&RFJ5PAS)jxz4f7F|kyf@#ZK0dB7 zM{Pc#g;;Hz4Y_!Rz)3uleb9g^s3oYDfvl;fAH zPW>gn6N|I9j2*s;+a9s}Rc@KIibz5qy<~8g87z{pOrOAEniG*Dt{?p7@O6)n3WvF9 z0TZsOJCqi9E3OI*k$rh#4GeyDVLX*>H{KG==eCBzfM*dMQ#W8sPSI{CYm%a7ngnL; zD4X8gjOjjn73Ye^);J0kCMYM4>?4;}P!uo2t2_&mA!O)f5?;KOY4<^6ZshNi&d*_< zI8Vl=CDB*FW=E%rri_hwi_E+?8To{ zf_jY9FaclD#fKjW;ke1J*iPy{wn#~e=ud~UQChhq3s4^s?^3tekGpvl2wbpqcnc4K z-M>Fk+h6{n%imVzA*fVce7F@Dyjfb-m9328)9_KgU$^2=2pWf61XF10HBL?~WF^gb zDbNr|j%Rsf?mH_PdCE9#$$PYVSw{{uvK&2dZW@rax(gjr5y*c;j@RHv8p z6FD#rj&sXKiAHzE;m!%9N6gp~S3e(j9+Y<(q|TDEpT9-;{1j&NZk(?&?afF+L^YeScf{dt$??E{G0rfse(*;QL|JvO^X_Uk1K;OV#vZ7$6efesNPs^3=H&7*US5 zCr4S&io6Kz)NehCQh)F!3G=4by}gSyMYaFtk|(ac?yJNb`FCf_zyGrU{l_>}qwsvL z(eDJ?BOi%csam+Rh7!DzxnesU)^6R?+gLdl-(0E;#}_QsNgBkfAblT z3Wvl;{X-tu#HZy%9vb)y7B0@ed%<<9R60s^3|;gR=6Ussm$nEq4DEqy7GN*E5m+P^ah_;t)!uE^P}Wo2zg%)LyHDcfPj~-e`_Lq9 zmSMlI&&Uzo{3iWV4>Vri;W?s$wh>uq0%y>d@aOL-3x$=Y&vG5qcLXx(N7xBG7M!)p z1c;!-g`+Bw4^r&KZZ&i}Lx*c}*Tgh^eoWF{mK92+eNwM>@Xme-p>bh2=20+-hwNdc zmr{tp2kw_Ae;rV+ZdDMvMArDd#9F{$E$h3seTBF9Zbq19X#iX(n;ZqK8^uw*NXKWS=duD9RBOUE{yFPXMf zLW1h`m##1aS0e+3lv>@+>0AisueJW3oHydp`#R6xHay*2{_{8pq9K+JUjRut)Ccc$ z@DaHgdQ}UMQMES=7QJ}o)vFTrlQ4-PcKBU&;9oG&9n!T#`#jUE2Mu_{5~a*xTjZu8 z_%TJaQBrnYFj99?yJ=;A?_OLI_+@5zm5#hOfVpVP8$DbpAdoXetd!#6r4by$7ALDA z)wx$DX6~T8f$!D%X7-TpaqDy9I%1*rqMyIfF>5eXV{I*;hDL8?WlJQGxwauOnMzX{ z`}F@~?>(d8Y`^y5X+|52(Pl&$y+#Y78@)%b8H_H7C{dCKqxaqgktorlCQ`&;bV-OB zi3E{ElprAliT85y^l>8y6^7or(%_egW}x~sUry9ZT1u+VMdqDh5s zYv`vWX}Y!_#Q-g)?@K!SzClnkD5)a`;hZI;Zze4ju=KMF_Yr*S-Qh-v{!dyIbCIA{ z48+1?#hHO2lezKo7}d>`Ap0b!R3!_Oagh{{pdh??nb9p3t?@$pSSh{2_x9{>-;)QVLFzWDb|$EuLMe9**PJSQhm^9;7E{54=JveF!O zS{Y=}5N1&4Fa2kq+f*(s(WHZlFNZlhAJaOd@#*1ek|hqEmEQn(+wj=e*VkC5^mj=# zZyY2SMqP%>s~Nb}NIC)MTkm-}8r{=f$v1c02GsySyda;DMRy+djj_caT5|>@ZixnM zx@81oi|S7G-6=l2$yP``U!8Pa5%o#^%jXweZ_|qK{BrYvrz7h5oYOn!4Wo35!N%Ve zgB1l?$?%nYE0Khj-a0pyq;?K`k{YX-UZ=+3(!9hk**# zBYDb1tK1P#2b!ny=2q%iIad7Y0$b;?zUGX+LAR0n?acnVxD5h4t-VpYA120@iOpet z#m;6ez~#Xon9SV!3C(-Fp?^OOCP!Zn&=Ih}I?hGZOw5D1BLr*H3Jcln#`+%Dk>oTV zi7qQWBTUS8lD+vq$ezSxeba>p@WEfxb!L6DZft+x4qDhxzOt|?aG5q8p=SxyON-kn z`GosApOjr7 zBQ*G@1DU7~u0;HX;|NCduX)fgI(}iJG{{K`7!nZHc}B#r^T)a5DIK4-g{yzZVRaJs z9rX;pcXD!7R7aO;y*R=$U%V@2WLMohUax#O5lWlR&Ubgg^ScK<;b1qcsC=a}{c}PL zcx?DJ%iS=qho=&1Y??sAz1UxI_9<87^X_SVBBfm_hh{@3Q+C$zNG~dk&S~sg)#54M zL*oPI*UUA6v`dc_7+cTdFO(^L8coA5MRYps#g{>{!a@|$eb{lP&A)~3seie;F~xMr zoVu+XxKnMA(Tr7pWl$kM6*y3@uv#3c1Th0jO)8dRaF zQ~RP8#$;T~94*L}qz1lAZZR-+y`c1qr;j%76dWDIlw!al#aMTZYiHDNBPb{1>8jW# zz7PYo7Cxs-nf)$@QQhwcKF!Y_zuVvWioLg<8g3ji_7c((MsX3~=gso(MQ`@dAc)~V zzDzO+iPJg=@#NPVzT~q=;u*YAx<&q4jrhiKR6g`-tm_u~GI#k$$CMwwJ2zQwZgr%|I;d`MacyY7=5kxvHvk_0z_JREK}h|gSJ*$j zwqDKPGOL2uN>J(;qff7|7ZnsY?xS@qb4m%yzx~d<|D`3%7(V2OHKV6H{@q(WOvVD= z$FKI{SNhtH;uxnMt9cfE@VvGg`GUT=fN6q-RK0lTwfcusu83=DuL)7_b`|K)PuYEM zeSW|4!M%t;%-cH;Y#ObXq*9^+C#)$vtq+qkaYN4LFTGoweZD>i;yjZAhaSfV6Hd(s*kl!P~5wn7-JKX z0)9SwM+E)#-EYY!-N6P?7rVBb>y&>-2;F@seXN{y;tXw_xtXu`MX~$P)sUK;XKxl_ z(J|!QFX8OV!rz~f_wGsNGpe}P+QT$#&MB9KLpCo7(2eZ1&7<*5BM!bR8I3_Io#M&& zDle+?z8oM!UjIZ*?6A&wi2eJyR<{VCko1rZVk*em}0bW&N37xmlGx2|D@jV2MPy9y_sdcXWtEJWhLWL@K)Jv%DJZ#R3M&!*_N z(O>0#@{IG^RYu}-F^99!s>dvUPCxEOIXESkNfffc7L6uqruZ}N#5Tc>)d@>nTj0g6)qmf*MyG%AX-L6%S;gz8de_ojf^|nqB;zU? zD^m?bIybHRPunL{gk#?b&ugZ&p3B~=7P=08!(byszffv`ZC7$wy*W!gPtmBr|r zt0hB2R9-TkGgDs&bkb|SR#1~OzLf_1UR?*%#d}p<&bf+U6bfcdyA9NgGoO1>L$*Ff zeWb3rzJp;%PLF=TuDcE6Yv|>RG0M`nUzuid#^l~3VzF;S?PzMMXawH9b!VQc^1%Rp zn;n?5-u>v{4rQ>TQI(9lMxYeQiu&yw?YGF~CxhrVswBpD{L(ESV!{rIoHB<#KCY#7 zlsKlPeeTtk@01K&S?-WJ(3CD!AuFGI+LFoOP9PQj+4Jv<&k`{?+78jwfQv=(L=)Tj zOW+Zc@%Yk(dgd6iRjkM`(W3Q_Q1}ywAe(g@qXE)6jI}0y{<|d4ei0sS;l5kjTg}LS zDYn-OLI^;pSyn4mz0U$~0z7S8M`D$(iA7J@ldp@0T$ayz>kQXSyhaM+c4@YanZtPB z3epck1$o4N)z$H#Q;_Cu3K+b`r%_1-86NbH5zJ-IA)mEU@z}j%ti4?~M?I)`m=>G* zHQa0Ouf*R4He1PpwilAk3x)dUVNbME%rMA{hsOP*ceHT>ZA49@E0aQ8B*rVEqUWgD zljl;Yv58luNspL6$sk{|x{Pa>|KI?)gN0UDn6Ahe$mh67WLTH`!8Ll^Z z1JVXNIz4?q+?mWzsVOJMRnkYj9vc@@Mrq8Oo^4fcCHhU5jIK&dt9-M=5wpPLtZ>dz z6h1X~<(y;7RZ-`1l&E;&PnPwvsf%i%fxneoBP&l#4AwX8?3sF4KHJ;5FZBdnMGhJo zcu(pNZ*cPKGrka1ss0w`s<%y58gTo{Jbm)<>ypDqH(F*Zj>3G$+6PIWtr7#yKLbtU zFQWjQV)L)<9_%LckAatPf)%pSZzVT8&7sN8FOk|e=|y5SB*8TE>G~q|cbm6YDPMK@ zPE<(JKe)vr6u)Nj7?s#KN}T->hSmrzeW#`7*8jAbR7Cy9Xz-&b+o8{RB;A{^@mj*I zKw!d$bN8QnClnAPiPSb7JG0T%RKwz1D-IchF)v;z-ovoP|5fs5$@ukT_552G7S}W$ z*pr>bW~g63MDNOhZy+mfVhkNXPkW)lDu@bR-s;`4>yD3oJ+F`7mk#1g@E~E{RY^vh zdpGhP4!D4957>lAF4*0CX$(ygB)0L`s9aa{5n1G7;_U4}8PLq}RP3V*hH2*0Gx|*h zbP=Mvuga9O%H&g8F3>L@-`pMlD}#KjgH{Kv$8RR^&g|wv3F+|>N-SK&E0WKj8R##q_Z?+fyI1Ot)|*EI=2C6wWrd^t8Gg4uRxvm6;zGyu zbi&no5_@RPpY?t;_|5wFJF;st;Uy}lipBXC;@ED)n|jCg<-WsVD(;%L-PI@+ng_W* zvSHe`jCb@kciNLWBrcY2K3p7cM0!;jVv;Z1eEz{FTn~k6n9q6|-v0IRz&xFx z+`jKat&k5_^l5L?k`_BZ0Unmwv~mmSk0hB)f%98bI!G3JLT`pzK$xgT^Snk^JuljM zaz*eR&!P_d_jXUCXZJZMKk|L{on1h9hi83n*LsP6DEgdl!Mb>9^O73(WQ6z}O_b^5 zeY#h7<9ogaok*&5tshpVtlepW@A69CVM?E#JH5Uue{IK{T@#tI|A9$ci&5j({-yaj zj(Oh3xs4ck*R-2TR>t~er57IRpq6cHo3#Y}3=N!j`M;aqG%iHNUHIA}CS>!WA5z_i$fl4S2`)Y3sH8&Vt*tT=9DE_v1Q(U-=DXUs=qpg$JK#zS%17 za(lXb3-B$UtYVQ64d!bkOxJ0;LR!I%1(DwfzQB9Qn>DeEB>tbmxT9v`L)AeikI#$= zUwtS4xIsS&_N?-MOBjxKek$#U*eCuS`#6;!rTN$Y z^p~&oCdSrjWeG6@J8vpaG6x_Kb=2l+X}>{Fwn4M%?4>`MJ*{I6k_v;w1E+Oo$#QYi zdn47ul~ngeVDqG5k6bl{QeB${d`^l*q#OL%oCK~IL+&6l`l6tef3MsN7lhTvSLc07 z`lfgu3x*d6-g{U|ONt!wYP+aO$-?F|db!D3H9ubd;F`N)j!78v*t4m^J0P;-OS%Ls zVn9_zIY}%0(-(dTQWpP*_shP15hCZ=%}$=9g|GfjRS}sF{n?f_rM>f_$yXhLvSdJ* zybkjv%zN%Wmr@w>^ZM2{EYMYpzv{lTUE!^eN3$(Ge?32Jt<8_;b6OE|Cwyt6b2IeH zyQz<&*Y+er#)@to&FwzJI75oEI00MuM9V z-kCVu{CaD!n@z~9-rxlSmmCq7A?v;^Yu(NEUX$X!|B(4nm$_UF-8*M530%IU^3J*+ z-9V5o|Aln^`>L+|=kJugK*k)DlikwP!Sjl-XEc^XC4dB1E{6_7h45|aR8Tmto!+0D zknybIaxB{e2CEnORS#L{3aS0L_J4fYL=`l?xr#W*QQW)?IdVYxH?`;87CfO7KUoHR z=Z(|i9_GLPmv2QK-g?Mh=A}dASuMD&2-08e+^ig_ z;&YBpg1n$NnX6z|}vFGb?*iubp77Ii`w?4HGM6 zbT_tF9{P{e-wvF0pFetO7eZJ3UDCjU%unvM{X>8pg++avo#L#GNtoT|V7bcwj&9n* z69A%&FzKR3yx`A|81!=sH5(`&orgS0KLn;m;80j1ZhxncftxskxQ+(9?O;YVwr;v| zhUzxoZfy=ukQ_M5Z2A?y(L3|;Po`kf7kz|%DX&!EkEfYhFOH3LH6P$udqTqBNZ+uq z0`omNHhLayHLZVIlJA$^;qRUWgI_%;Od-^UMM;}{`tk*C)1CE)0Q52LeVuz~YkC)A zzpWk_H|mB^tF(H||6SXabotZ$+<^0T4KD5)@RfB3eB}^%Cj0PNk6oGv?%`Zw=s_Vn zvHVHFwEuVSgF-(jr51(3>2FWNJjREG{VZQhxUS>uF zJVkH0f4YdK#inB(p<(knNigXO1b!#rbILl3SIkZ3>0(uA6r)AaXGWfPyI{@a?DgAt zQF`laD-hi)nj-yoBCYXHFAT{x>0R04GaP@we7cr=WL>*+n*J9O~p;2NQ6tnbw;^5_xJ zUnJh`H0^_S`gH&0U)QFv-NydDMsIU8qPA0H;r;p96xN{=3B2m^5zA%CVxq)zp%A1q zn8{K#H!o>t`o&=yL`?8mWVLnyq7E!VEBsKc&Z)+-+u3N~X3{KsvX$1x(^9p-6qbqe z8aX}?%*tW)4v3w_uu6%#88r-QdhF^F{r=*~@xiuo*muyaC!3p_XM4Q;`YyL~kCRH! z>aTcOiwWMjiZB0!F7xH2z(Nv%q(nB5(t{%0lZ|o=_l3LMP&& zFlnJM=ey($_|!eu8m}vI^G^-;Y~|y8X2FfV-)z8B5|(D>rG6qY#LYN8Gl7;j6ti92 zY7yZ-R!4vdDnx6^i)VEZv=?Z{?tbiviah>xaIpQ%`GrbXWEmsgxspNVLWP8*?w!g3 zQ7TGuOJK58#jH=)m+RSY!)K5JNw?6L9&G3VvZ)YlzcQ2c0BvxNkwwboLhXB^KtC?0 z0|6hfvNhOOlQzkpT&UI92wcgZ)EAH#=on+(o7TLi`=f)eA@O0ptEcCe)zvtTR}@GB z$iVnhSx^7pTmQ4g^WQ0i>U94vJ)Z9W&3+OaG7$3rt;bWX=wJ2|0x(JWzsGMn0d2RH z-v18c>=nj>fLXW9>Hil;F|zCYpO^pd?9cz5{rSHF_s{g#{~J?J|M#i^TMPdGUCE?D zw}`-q-!%%fo~1G!>GTx3b$0F7z<{dlI7CxuF{RB$XtAZuKCC2A0d4*4=L3N<70Sx} z6@5^p+?p`@J-|Ppn|jY&YMA6bqd9}a5b51MNoqZ||+08@pm10o$# z0&Wvite?)PwBE#l>#ZEz&&fD=WIz^x3=#WzGhHwp2*bj1yCW?IOzCdrxi={T9LGNf zX8@S(D2nZb@Hzb<{j$^pYv2-JVC!tsY>F$1H_ui(mTis`z*&@Or@8XdaWv5;(qP-x zd37-colD;NiZr$V>|F(hVj48Pjz!5P(yLCI<9I4uO&NP23n2!2y}~5GbjmtZq(MeO z)<;p{?jnu&y89l?1PZIWhGagYe23t(r7-{VsS3Ja3S!@+72cvMg=rfdL+B9IfnT?q zOED_23XEZ8eCWxX2J!pn6cWsFtQ9(P$s!8GPQgg2>5XZyx>MreQ)I*Fq$seToWOn} zU;nHm;6QKX1m1@5@76Hpu~S?JRoQrwr?bg(C6)W1g)6{kv*u+yn6s#cFUM->rt60a z7@DP6NulbUL~XeEXYyb=wU;wIqhi z!u2dRbaJ}1Q?lyM{uceub6uH{bi+j={4c)r4+uJ?=!c;In+vcO&uE2kZK^qrDyt(Y zp@?1}+nO(XefP3qnnE_AYqpVjmPtEQEcqedu2fRtz-M`ygVMAZMgURvF8Xq6jysPF zH8BX)Q8@H{X->j@RLa?;VQEm-+ZY4(|7?vGZp=&Yyt%xhm@Xf+6Fe^l29QY{3X>Ry z@7&|B{L=q=fO)7sp`t&jkez}Lpt_mxz9CH$01}eLx6E>S1=`>P zpWr84y^?Y?x>9G)?sH{c0%_Yw9X5!a>xheQiz@D#3Z3<%m4;@ieWCIKxa(coKIK1F+i%w;n_q@S;W3;OCsA{q|rtF`+y~iLtit)o4JP+ z$#rV23rYFzq|5d><|g#}0H+5H=yjLC4Nk-H5>x|~!|j9z4``F~PW8tk&^y0mCQ07i z3N$-sTDeJF4~#}y9=SDzqjzjd$=A85c^e(jQlf5f-g;vdKMO6laA=OMGe*Br5EC$+ zR1{<9Yob81?q+PnVhk{8oK4!m1I{GTLy;x`+PF{SSv^c5cK_mi=)>Q+0^BBWWd_;V z!!>AxzPcA7EV4@-Di#xOKo=<34GS+w?U74^8 z+G_GlaK*;5>4d-8+}~dYPAr!^opktwY*heLEo2N=@XL%4 zD-8!70$oF-RJa1^23@!C88PNWfJn=`qm84NxXBJ_KXM`2=(se=1kPlHqsdmquv^6l z1<_k7elnWZ^g$~d&~YVHvB~;o(-3aqV>ph{ zTV0@UDj_$DWH${uIP-={1nO{<_s&l`1TZ5ZXI9xh1Hz9p=B8~b(az<4@ty3T;mXo$ z>6_!|?COF1wBbS>FvApHZvgk1&f7_$DF#0j%=R^u9m3ur5g*gVDRQMok@K@BWbT?v zS)4g3HU)evNPFO7>QBI=H~3}cXK5IsZYLXo%bf&07n5gH?Nl|5ZyOj$(W7t{lcr84 z$>X}p?w~%M=C4wifH--|WD$sTBDiwpB=e>)cs33G(sacXbVPppy zE+{@y-V_%moNchWPUmZ4phEQZB0c(oX?OtW(7dj^^cY5l|C~E;4;`vw#4okT^Lk!l zjN(jwFv=gP!uqn)yS#4?JL`Ir->TTI0XCj(*U0bi6*ade_Piu+F8i>-ps`ah!iVX? zc^+HRj=wM!ZHfmS-;x5}ySd zlpiF@V%Yy#&`2v46Y~dU;{E>66Th6?;#dhH4g}{zyiZoJZ{-;erB?yt!s5V)0 zYS+MfLS<@_Y-7S}TL7c<4BVFt%pX9w&lJL-KHgvz0X1nk0Vw0w7c2GRlM^3%?0A#F zm%S?$5mAn*Z=b|509Hb;VGwXF{!5#JP6k*#^OGAXOy!d8J$P-?t7c2m((KT{RWJHJ zw8xj7zcNv;oGiY#3mg#oCvZql^Sj`L$#s3IbC8KQTs7~o``k=SG3l7G)9hbnG8Hzt zc7;EsGBU^+kcj`10UG^vE5@lN?dJJ_eevD7k|Jxt>`$%XH~v94%nM}3UL#?1ga zQeT5H{5?>B_RS(Ze}p(4OWv$nVb2_}l*^bcsRXh7`_)w7j=!u91N|hT(;Js9LmAi0 znX$foDE%CB4_BLlqE10*MhVLHcCxj57i9ct^b$xMs(U**svfnmCI~G4<&SZVye_t~dobhd33r%$Dr+N|TilUMbU(s;*Ag=)p6)W_v*ntLUR!_{)cH!^=Lzl2;x`r$M9w^Q=g zZvjMcn`IBHO3sM`HIrcx{w71{-whr?d($SeOM%SraAUr9B}d0aH!Yz@99MPK{-cqC zz(JTedy~Gmc3(v%eN6EA0umB+xrKIOA$b0_?UtK26u^!7;LmO?U9D|!p_&s)trj3xIwAI__F~>>#YbyvKl~^~s83KL8^0xiTw%N)z57d(niAAF*QxnC7 zcI{6nXUmm3@xZ3F=rFPDt#~Y9^?q`Nbul1N-rdH4$(St(`Pcie%>SH3Nw$L9DQ65@ zz$qqm=R03tB!GZN6*hAt-q8hBk*{{k00}15`n<(hVb{k62RQM7!HzV z0U0nAgo_$=OgSgxCu98>XYbkKI|Z}%1z@Btoo4KA?Bsed`CrR~#y$(sYv2Qe({8!r!FHkzB-3hV;oHxYI}{zIP;9!?Dcei*dr`$2i`_MTCk9w*TV`54$$lGrna% zfB%FS2-5ARXTn(FWH&LvjXs+AU{aoqW!now;N=o3B7Ix>Q|e;<)6$b+Y4eEir; zO2)NF_0ICUi=}1e#_*OvH`f?fisz=uoo(csR$Q}x1!Qm=3cRTokaGznSmn%DDu8(Q zAM=AIHNtnM8;i6Gi&W(sfxX^uIBYOh2>W^|A^59VDR|QalHDlY|7pl9`++H@qXXyg zp~nlz8@D{PC)qEJvWVvkAoB`h^a$H>8h0UDS{6CW(<0XcuU^gKeqAoG=EDry>w2Pi zG$H1|N$quVoLIdAI2ZT##W6`}*MU6tCPuxpcn!(qA^?PQSmm7uOslR zV!VSijY}&!2?_87)mvu9P^APk@f*SwlAg&>g_?h;14XJslsBqk^fFtFZQTUnDh5 zk6x^+z)nbQewz~hU~c6;F+*`BJBvW@q71kd8w)g z7xWFH-J@svQ`stHIN5gg+;@Ix9@2Zu1P#%y4UZec>FFcDkdBoxHZw^KoA*@@VG(dh zN%SjRs1OVU1+Ot;V~PZM`>_1vfGzg^ht3LrobU)5v5p0Or*fj{;vz;x1t)56k9k$9 zk#yOPnBWp!068usy;@0RnD0D3Bx=qKQ%!^8hiZz@-bWaSlr4+Pt2;7FWwHa63E+3) z;v7pQHb5>N1O%-u*P0cOeK>TvoR~h+o1Z$9k3dB;B5e1 zJQv}&7P2g~ro*7;5tEbM-{Q0uS^wAR-Y57-<|llg<-~3z8fO_lu^f0K{v#B-qO$$@ zqohExA6n-*FL#q3OMGK;g~Edc`H(W%=(3QPRm`05uVze}_N?6vHHxL0(NsziNpaAyK2>jYsNo z9I2HH+SZI;yJ2N*Y}nOz?q^$i)qSZ|e4R&Y?p00B#E6f?k!SpC7bIC!FSB$HM}*9p zfzf1wP(lw(UdWU9FaZ z@6Goj>6Wc*M>o0MS|z7fvfrSn-%52#ysCkxhLb*z9wAx4LUqYp?4|3y(m+8BwWr_K z*1OdlcaiYp$)IwV=in@4ZQ2kt(+ng7IgQ4unfB?spGxj@&P7qyM9&+ z3Y4XN-#Hu(=9~ws6K~~Rp*&rd=)Fs|OgIbn`Tva{cU!Jgwvjr%6X2 zW7DnOP0Uj$G5_ zFgS;*K0M7+&Bngt2-PI3Eq1XrMk^6_>o1lD@5p!u^CD8Oaaaf9Owm0aDxU2rtep$Ucl3ejJzi1lh8DJe!S;#kDW)&PehfsFPTn7N~Eq=J}NDh#hTZj7;G$qdElf#Lu9Hb{u~ zZ9V*Fs-Wfgx}4z>6dQ_l@Y{36V6##D%Gm9skzr1a@c6_|_E@PUM^jnQrawfv5Jz$A z7f$E>d;JEH|W~vcctU=o64TuD1Bvt5EUvtH?a~;$<;ZrR~ z*+pX)1BwS>=VS!DA=@v1?m8+`a;}oG*8ap6>8pTA_3^uu!2%P(Is;av+fl zBFx4Fz@_8acU7tJ{Vm8A7pS*6L%9=`#Lz?MObM!Q_&(a}vXw;Mpr8r|q!`HNtB|SY zTN3-+V%fMFlf)c^aROjJovbE?zAT|w_+pxK#V%247jOvW?sr1BaoILm-Ew7GfN`eI@-A0?BQd!?A}7j3Li=7?6?I8Rk^Ab zqPP#-A`h_%>Uus%b@@y17CS36ItB>$%;+#W7r4$}xiUYXrHMO8a#3weBvk7pTqr7P zc~6s!zs6{9uNINy&$&xSHNKuTtgWzM@^8)@$YAt>z$?CTNf0Qs6!3-`9cdR@Dc?5h zRgKWH5*T4N1>TEn#-Ppqmv<5u$AwIhKHiI&+1X&n(&UCaM*O&7{#Ce`MTj)PD!hx7 zFE;V4;<3NZq>(WMD_EBXtnk8FPPMKyP)vTdhT^J z&ahMjv6Hi^Pix}^mXDy5^mX2viWp`JI20GJf5#(vf3O=7s;N5IB9$r0buKQ5^zmpJ>J)iAKWN)9y)*%f3&Zv|ZyRUigx!gL~Bs5PbxkdBbN{?G5{SQFAPF5w7k;052mG!$QKBD9Q2CA?0}JhXcbL{5~`Ct zu;Wfz+MM`BBaNDzswBN7H;XOQD7Tz#_>*p@1fck)5?G_nCJ zuoUVdxvVsVnir{>SY~y?loAoae;~eFyS**c%h5O^+8fYc4cc1wj1d$TMh2jyK~Zmb z`I^p>T>q8tgi|3uQffY1Qd2co~t z+m{20q+D34-}n(KMnzSlP-z+R*q_ll;OCE(=XZZB$W4q?d$aVPo=&L7AhnJ2i5p33 zRG?obj*fMBdx+zusw)A`6*sa7${;RCSE-(lK)Mk})If40n=LZi{K47gLH~VW7RaEQ z+F>Mq45<>&9@#HV8>nz6m3HhBwSq!a`FzY}M@}mbR|+9h*E-JR##Zb)x2h(`8nlt^ z<;#0i^e7ZMJY2t)*g9+Bz4S@%O?_}5Q*gkkhLaK+U?%(que+un=M#VK@M-Ptg)#E%pe5LUz0@5(cyyv(sXsB z$i! zIo=wopeso>GOoW=_yrgraj2%43G&Bv2U96^_;ot`u& zF<%vkR(a0MN&e?yxclRhNgB?M8l_oJwZA2(Cjn$}*|%>QXTh|y8*_}G+Y%{Rzlw7+n9?jV-7m#iqm}+1BOtE-mP=AFa59YviKySSxhtnw*OzK__ z1Sc6Lv9HEbN6Wj)=SaPU0kFh*#5{_pO`MA@hX+6xLH{`o0QKFm$_-EGX_?I~`iyOs zU~7r9w$YuZ757?RA-$@u6;7cYAfpu&^w;biE`PELUT0R!|9n^7omXWBF`=8puJZNy zyLU{!?C-Zpv!u7}W*P)XT1K*^J>(n`DaWnO+ssCxOSfyS_I}-{5V>-4qVQ~?=o@UV zRvgNhjHK7~eF1Mv8tBGYNbt$7~Hfj86@ z6e2mUv&o*cC^0hTHRxZzUXhO>%i=+H@3jzKpo7|$58`x<`hI>Dek<3~`qZ0}C<)!J zO#XsoJG@VLIPR7yfC4!0Yg%zB5Rq2q(KPEDpQh&*Xco9eU(!9jdXAo$&Z1A$s&9RL zH_#{XK>Xu#m#*9Ac<39&c{-K9R6v?(P^NlJO>muHP`|ec0CoWrIsUoJRz!OW-a>Km zbOxe!>n46*pft|v3V<3=LFX4WJ_xtnxUeQ0Oz>LUu-zLgCvuAGCnGlFwmzg!J!r7K zu(lp!3}mF1e+O^+Jh}=Exuc>wIS?(k(R5kCy2Nt{?gAQ(WD z-d;^fNosxD6BTGvJlrYR%VQ7c5MiQQ%I0h`(*uhFb2+|5hmwRVBuT;dRM?@B#}W&F z_JomO!eHjzqIsEbsDh zfRsyUXp#(@AF(>0qS2Nl*4Np571$VPMJQoE4R3j0I?JGghGk>;ytK6lR5v8a2*AhB z6d&os+cVm3ToD~Qnz1yFOi`4>qG#t84HIa_*OyP!2pe!6 z<~aT&kna~$2AK>vD>$J^tqzhKW-aiL8l?@fx6cEv$I!0&AYQOJk{|krXZAEsP+X7F z4Zs%xji>$49!=2?ub7D%#&_&m!>iV5`gFO(;{%psYm1VKG4bR~JG-4gp0#mImgC@H zMGmL;m$5>`!S`q&b0Q~ab~R-aWjuGE2VN!ZBWKbx3EQ`DORM3{lHYi?HBfc{6laHbb%icgq|dI@drLcx5kIXV8t-XX5Hez1 zfH`j7`X2k{I2K&M0;;{uom6y3yE#2zrm!eqpxlAUcPlAbDt(}XZ9_%4c@(f#CFH3h z^as!>2UoAgrH;`b>VrQx8iTXQe(D2&@dfCdM2(CSm)DbB_a!}-2rL+ies;j$IjcV) zfr_*mi&)@oC8u3NlC2r!`*ef6uT5kKjY693dBvDf0x{oz)w%$o-~bOGc4lxyvIxzh zxZ9O=B5o)5wDHeB(Y8$RwPJm#bVAi|9C)L6$!tp)4FH3nTcK$X5LG`&>NM(lps?W; zO_5jBy#7x)>jvNarn^PW?xo7MQErrDKa+QHCFgh1cyJsSsjaZ$ZP4J$ApZiapoaUS zD6-9_=&d$9eZUX(>c+GaP4TMhr8*g)&Bb0C5*7iS_yIo-J4exSyL#3N>zA{GD-Y>=r z3+czY6GDD^V43>vxpKey@Xe|iXtp0T1QD@RpHJ1FI;c_v+3G%a_`u^yJ9gv8FKL_R z^z)Oqf(>p^KMDmMWqx)SyCzvLt7=DOajD-uPosucfJVkwsGu*WWNh?R<%7#TUu3e| zT;FiF-?-2qeG|yK4k`f8My#IR9i&S>AJg7#(%-jIU7J(Aw&RNO%@UV3E7^K!_vP5A zLC2bNV(-rA2H$+L$myhe4UH3%<$byBHots>+ux+VsK$uPd0Y=a~ai(-?@`ES?3(CN=%Dq}Zc9cD{0NH``{yBZHfsA{ykZtA4L7khFZkPn4O-gB4uPoBM`UMfw-B!PY~Fa8J}>4pssA`lNic1jbn=Gg zcRUcJ6r2Wd)T9i_#&8x!q0i|^Wv*y7@CAm5QP1Y}ca~_w&tT>wRMgiTu>4L2u;`Xq zvPucDNR%~7&LHREZW0rpGEIWWzmCun{4@~%BdxQAIG48*Z8J>4cPiz7Yj9yK?oOHw z?o&OV0VmM|>*~nhS*?IN`(jLc(W2yd2~cy?4z~qVYLkJ_HB=Ly(Zp4|Zbb*$49GvV zl0fwc2&x@=ad%G{z^nHp1ML$VO5)naqdU8QP%~TXcl7?Tqu4Di{{c-Bc4O zzsXqmAc;D~Tq@>2H3gNRbBCF&rIbwoteHeQE=062Dt7!8m=(<>+(`7Ke}0)-Xj0cX z&>E;K$>X=q)oQpTP`9SHvEt@Iu*n_vTN!ero-MRvAv9&~+I|?G5o$gP>WJZ>nEy}u zm5*gI_cCw_)e74?G2XmD(TzKlI^%^!Lk)*RJ}(eWAEZX- z9idE9DVt`=md>uT8C}d3*0~4;AODlcUM4E-gc)J<_p=lkuy`V@#U{OL`b2L*6;jye z-ajS|PfKBfOc)dA%64QjvKix}Z7l!xhq5czwdW%$nF^$c_825nllxrZp)W8QCT7+p z6ce~FxO*!UFy8-NC&aVEy-(!g9dcV<@%~gj%n!rbz8;?8kFZBNa2n(TShbu%1cl=D z28)#q5MGYb!DIxNew0I4On#eB=1;Cu2%I_iAHf)b*twn5pp{$)Z}LjUzsF_{^;H7~ zV8@Wn$@0E+uJ@|?{5n@-e+#1PAf+Nin0hu_>#0N}{A0Co($`8lq$guiW+ zzb2IIpy#RtZLkzUB$`Y0{b!FWK^JiwdMoR$nxN)gJGh@p1YfgNs-5TC7(E%o{^b{qOY5g1S^XQ!hpNJ_ID|9{wftA@CmE?ls2 zcXxLuxVyUrn&1-L-QC^Y-Q696LvV-SkYK?B1bRB}cjj(>z+4<|n$4D?YnQBgq?Q8A zXAAIIa4T{)t>=!eCTAcH`X`X&1Lv<17958F@5ca`1c}CnDngZ?Bj*$2$7ddz@(b?S zo3_T9%$g9?8j+cE{^cWNk2c)nh$-i}tJQ4COMiYGi3j#@*$ZIO=AUd zJ#8|CC2|VTh%-q;4^uA`vyOqoR#}Kz$MGLp@t?jI48=&fu{v9eQxP~3A4*b_cUfcB z+l(#ef(1i|)wB%NRFMkr3i9be6?m=FW7?k%epzT}_=9P6Q=M(-QIj@(u+HwEzL)aF z4|{=dpYgU?hh3M6qV5sb@^L&!eLGoQ98*&k{8Db4q7mYgq2LqrO)ZWnz|xLm?K~?W zz8rY{4wk6iKK?h~2g&&UQ?UGgrdnJnV)#hpz>KX`jjlvev=L2Nu}SIKoh~-aO;LZv zy8ObKq-&9~wGN&=R=K{YjGP#!2#FxdfP?-2L}dFgU5x5NIMfBfdUX*)a}#yk1WpeM z&KzJ-PcpP%nq>b+DG50rXLN0^j1qVlZAUaG*YZC+u2$lY)A3e$M0_lvNWxIh_(55|awf7IyGQIAj$`$|n#z zP6*ug3(9rwd@wmH&$@WH?F%t_kXYHDPLsZ4Ag+%S4u1$scnfpl_g+ucwN%%~!BV z7d!T%)vi$juXp7BB7fN%X8V6@?;m!;^+(l81M6al`8FK2;oyt8xX>y!2Uu)_=-9Ou zo(3hv5mk9e!ABZfNG*wohnI*aV><@E>0gPE;1Z$AJXi^$&JWaM$G&}=9{QEJC_+Pv zpY%ZkwdhWlOdSAQ(JIRX){_6b0YeQj4)P8_^H1mY8aEk})R%)fNOcRIWkLY9(h`1n zslj8fDPI4dN?-^%!e;8y*eNju1G!&OOv$B1)F`v2oKbanx7!j6CS!{6A;~EJ zz{);+7%zwu@c-A%O-9guWEGj>5Y%I!#K`%(>9&`6aD^WK_TQAC82?X(ZD0gOyDSbf zNvPeAo$5^)>L||jY%$qlXY5P4PyUBUvd@7^gL(jg!s0S`Sa`W!;!3_#x{m^1E=0E= zLbwr!U!(s3Q;W!x?Y>Zs&4Byq(9pjKA^aOXIjWk55vQ7(KUn5##wLENF2+yph?^SR z!k7dkQ3z=PkNZLYrqvAc(jY4_8~ z|GWM_=rDuu9|0gEETvJIs>RAmmkcCH&?)=_QO%8*oQ^9G{?@y)cQy}TyuRrlYsW$* z0}&n67eI89PM=IUCYOvTBcZME%_g)=nyYNBNGfLE6BhipVR|u000bALLa@4+yO`36 zxL;)Ar9!gEziNO=>N!vA;ilvOI}N~a!~f9uia5v?z~&#|1lw70M;*!L?>xx_V4sMDwp9 zmY9IK#i%-i$%eBkL-7Qi$Q4L)Eg^F@rSj>RwZ$Bl{{uzuoQPG>ay5DM#Dg^3;2dE=K{4;5DU5^vJ>);gSNs!V6{1z= zaPp;sa~n@N8hNiui2*ne%^`+a`45mwh=U{qyeiQotc6HosQFi<0)gNP8bbQlzPbot zxS*i6@rdgc;1Cx~P+02i$-s^EzXyYhwnC zAQ*$4Dlnn{Q3V`ah!M2-_2QAN`1N?Q!|4AJD~Dj00hG+eXJF7`jw5y)^1r+Pum2I; z2mh}T@BbR{{>9BD;K3B!F~P#7AOLuohKTB22|IYn08~rB{Ui^3Ee|BOq z061`@C;UH0?1=FHVlV0co%{cV5%2%@bMU((|NmJ(2Z#D@5qr+w4fWXo@Q=K-id2Jy zamfF1#S7H_f4Jg0R2^5SsVapPVjqEPX!;7o5^V?0{}iW06s3ix-P|GDB@17F2;6Z zlryZN?}Rtu0tw7B9`w@})4cC5NZ12iEOR!_E zv6BMKqmR=jvsW#|N8}44oVl$gr6u%O2k*-Ms@S`F%#(W9V8C9(^5>V?B2D1(9neU$ zK#zRdYKGa2H$1U0gM`#ynk~wJgu*c(6|3?Ip-l%!S^Rp23i(Qz*h|C()4i(lE4Sh? zhMs!_KF8e`%gS$@fpuy}-*x_>x9B%)=F}^#=1q78IBn2ym+r@qNtJb#*IX>F#Uu>M^>jg#(<QtV3%0-Q9$wQ%#fN3c%8SB|OnqaO!*pD4 zvo&^Xj+8q2yI9BS$#7!o19n_2=K2HhvI)BksxQ=`0PAn}!D}-b>qTz=hWp`p$qe1Np`UDF6yo#m20P!3oD;9;4(`eyV76D8uE%1GOQfL%}9WXuBD%d_%F?;U3xN(%Jb;D)6XFKh;tn& zJ7UuD$Ovdq;J$r$5d@Efu54i2;vIBgnRdU;qfz2awugj#;UY8<8|%xk8#>QS0w_U9 zlNH65jm830fEqs7L$whdy6)}9scBJNrt1ZkBCObgU?LI zsr}W{0wMdwm!vlRCSP&;(EX<}+}5V3qzOtT^kS+iTTk7|+Pfc~ zor+oYc^gr>8}Q%a&4?>%;Ew%JWo7W4z|!Tu(8o)9g1Z`yLdKlEpNUc?!UT{43<_kr zhswh`a+ZJx_y`XCzNu+D4C&u=-MSwTe?i&4SAJfrdGqV-yv;yc2AZ=S;2XSHeEPo) zW5uu@hd@83pcpB>%@u#!&N|Umu@o`{OqCv&TregA1`+!me^b}i{(1T8NlWZz)(nqC zZiqMI?YV_h2t~+vyiHBVXSJqVchMqBGCE5iy0eN&4YdR?a3^h2krUC0h;L*0l<>Dt z&ib&8%NBm_eT8OL7Dv+fZVD4wm_ocpND^!(z$GNjzmEHMHo?Ugwd&W=hmKTm2u%(6 z)gr!>l7Z#2IbsH6Z-#ssD)0Ejk$NXahPIY%Jg*yDB?`<1rFyQcFLHh(G3Dnt-EMBF z{{*y6d|d`?0Z{-ezYSl66)EQ8xna8l1rCs?AlKpgm-_j zE7CIhF833?Nh6v~?+{bV+y%zC$$!H&Cz?xUxQ}hIwxTAFM8*iT8Zx+i9?05lm#&6? z?iQsf44Gz*A=Jf&KBAzlRofFeR5?-Zv+V5vJ-)+O+bMutu5I=cJ_-#+ zQIq|4j|lf%H}Ctgq=EJeMW(`Q*8-;^9~`Qtx>v`)?c+t!_Wbw~{NQLFVnpW1q@5Gje!xEsPfI{ij^A2^>+HTyms!pC>qh={SLFP^w zEB}Enss?!9^=>S$)3Zw4&C{H|?$!`0^^mq6w?PTrXkS2B20 zT;>q_VZf)V`Qv%-P0l3uFprF^lmk{8?1P=;nc$fC-VN*prDcoS%G>q8DM}Rodu1_7>QFtb;7o7w9gvJK1n#wqh8b* z&df`zXO*DKFOlg&b_6gBZ<2hiaminQ1=Zedbj!>OfArnH2W2IH0cYg!0pr*>_5Zqd z8{6pjb5NjmAyT?9n!vg}^Hjb%LHMib;;~%asnTz4zYiggD0LFj8{WIQ!AvfDJ<@HD z+%rDq{+e5} zB;O=heL;%%bRK*Gb$FhFfl#wh6}KX~7%fs-6=r5$3?H22ne_EExB*j$F=NlgUOClQ zrum4w5dvyUeWSnz`xJofuHcxcGN#MgM}#liaqjM z?hDHVV>-wZOB8((#ro2Z$>Al{6}W6r41>Z*cAJhqcn|QET*eV6Y-tt=?p< zKnoHKQ>t~T!u>S{%h;NjFavFkwm+UL8<^hpimo~KA`X)G(r^b*PHxpEM`iSDDiXLr%1(!0N2hgz3y2F9tf)`Mq0U zAkRWnzAQbhZ^jL7eGC-to++Rt4Al;Ux9qMoFD5x9sT%QU9!t^3LrmA;@IYkLanvt9 zULnuyBd-74vOzyr9dw$7{}2aQ&UPtcExlkL1_pcFeZL#N>?L+y(#`qH30KzXVRgLOR~7m@{xY(W#c8>tFX zc@=kRba{xMi81o1^O4`@h*VHaZSq@;5z(F`YZ6 zB{Y90kK#{*d?o6qP5B7fkqj7+3mknUAPA5O#3K2NFBK@Cna0Ndl35Gw&ybJpfAIV3 zSm#&_4c}E58-!JB3Nfq+epIiq4^%Y>WaL{MiO3MeijXFDDIbG42O&MKk1IrY34#A* zl?2b`>dud)o#r%?Zjo8o@uZ6VTv<;*I>TpnFBlVjgcl~NWYl#`4{@O zEdO(mO;|dzrhZPI1c`*rC%v$^U#5L~PFzC~fZ#E6@#jp92xC|Hs=2kS;;|3;K*^xu z@Db&oj_@wz&J2lv77Im9QvWcSL}wI-(CfDW+%f5_rO&F7;V$B#jw-5s1~g2Bz^&jmSFZ?jn$iK<11+! zrBFaB{|ens8GWHphKP60v)by~Q7pJ8+r!4&z@^W!AkfloW1P9$==frW zN!MDb_i)volMz#5^{YaYXnF;iiGunUkV(4hw4$MN+u#iHN2oPVunM_^<~QlIGvz$! zKZGQoX;s?v!$(~(|I(2AhbVaM60&;B+ILo|Pbf7Qu9>oLNCw9NEhJ;>#91$cIv3VR zmro3h0<}FChJ+ZJRk~Iou_f@b0vlRH7T-Y+pKXI&o%Jrt&wFObme!rO@Op+}iiFKD z>qr9;hWZHF7?DSvc1HS?_QV%8Rf&WKK@$Y$)ge`xFIg%vDs#X}<(zq5X{VSpW)N3> zuBhfkJ>(M`I(yq)R_}V#nchVWbE!D7OA|}bwPCecv+MT|j>5Ufl{{j5K}Q@LSC4)PR9%3_?Wc5?hm>L-0JZXkJTSJt>(=onu^ z`I0>n6CwFz@m5aWCnrPE@Jp|0DvFuXM=|{Fs>A8=SRZ(oT9CE(|Y(k}%R zEq*baKxu2}5XrZ_`Vtc1cP>e;yD#UIUNpDR-%9v*74j}UEj{P>e@6biYo>j5TJwQ8 zds%I0FYxmhueZ#=@fNz6kIhSjWrJvv+jJ7_pCpiyf(&1-W^zYCJsa8Wdnk&{($7ZU zlqm)Gh&wu${S0`z2)H7iZd&ZW3!nV?yni;bRW2Jr%O+>!uz-VgAyM0FgYR9y1bfsY z(;6i8B06Lg>9l4Omvy&2NGDejHuw=W;&qk9;vz}(6pHrZ^+ynhX^$3qYuH!I zl}}owjX7z*-|I*+(T4$(vQNk8IRo2QFRT90$n`S5qTz7d?`gxLhI()`xN*=@Y)ICY z7Ol$iS=$x7o-lnzj(=)qOufU~v2}u`F#I*rYHy4|s035klJORKw+`3O`iZDt5-xh&By&M6P%FR02Q3Lb%IyakXpPOKpOn^BdVXzR6@y%J%Lki+g^=pJQ;oM zowqmZF%$L3!^@{z$h|qomJrStRnqV`&lQ?%PTwJCFfQ9*tC-5 zqaBUe9Vl3^W_ktk(B)<-IA-8YS)IDaI>SD%%x91AhmOQXkXQ!^=ZhS29I3&I=JG#3 zqE&n#{QQ1@`l5jR#*pH^g11gpib*sYFBtu$WT2>`jc;BL=E)7Vn$tj|pv?D{O+npu zW%@TW)67rD=}|eR#S@}-vHRK)uWorGWp%d6PIC}cOc!_3v* zC~Ke{hPr0X7{ljfZQ6npV zS7KO=sd{A;$dl@FO6z5qA^)DKQxMz2~vU%oow=F@x=nz2OQ69~1x zx55QX`E%i7-%rJQ71=n^AXCGl71P_NmT60-+gdnH&dxPS4VhPQS7xway7-(pYbKX$ z!!A;qm2}WX?lxqkMq;7lWgD}84gPwQw42CmO&t?!m+MNKPO4!b*4HgvR%yltM)ifUj{op z+I@~Eclzx@KT9r>%+aHl!*zL}C*QCw`rF(%y5Wn8HO%?({R@Gk+P9cgW z`$U)N67hbl@fA){h=)rPwI##H@lEH2THWk zW`O1!;GjXwXX3|0Q3IXYTT8*XGOfid19H|5ApMVoCdcv;fBg{aarYQogF-iDOp+I_ z?(XMQt(hm>AV1qp6Z|lf1rTUmxqhr6mzLDo6zW&Iu=X&Y7KO9s;*rsjpPLgIQ7f_) zF8eg@3`4)%>U*D&ja!0#;H!fRm+H(A5|>=_z;mlQ3y zb*EKKKD7t#@<&8}6jHX;hPrCTkIUGkp)G4%HIqq6@lcvAH!!U`BGTok?3DUEpJF0P zzq`M+6Id$SLzb#a+V5ONGlcqw0CcG94q$;wop!@xpGZnj8hp#=_z3l=#5xDX?(&{K zPuYZB&AKlshV$6iugtVzF2bwrD<7NFJbf?$SUx9>f^n^-`}sEzQL@LDH4Ax@CY@He zvtHVmH9CXN7UvdJ$K!AffkjE!Pk z{vPF}8b0zVP(4s~X!~uLcrI#7pq8k_i@B&G-Ct=PE0k+=I`p-PMF+im#18RH5o@Lztu{I6;jNz2Tq*Ef(`D{mELY-wI zevmHZzKpZWMtHggq2tlt4aqZ>-y{u^F9lv_4*uEK%gy<{usEow(YH$l$zzbRsLPrj z*liGT{n2D~KwlX5Sijk{8MtO+ridhF8&`_#ewZaG!u79G7E1V7u^$B7Txy%erG2EV z95z*G)|79Rii^8?Ics0w?fb`GeBQ-0;&V*7nHX54Khk^_)>FkFxLbwUFHM}#F7(%9 zbm(sR5H4r{Z0jwd8Q~_RRI03L0&Jp_dXR1|(z=M{e1(svql0uQ`RPJ?Rr^-HkXc848jba zlp8Jrd+xzpbU|8!A9KOhz1R8PT0Rlw>?k-7pAIfYEc`FO zb_SGrVUD}}b*}@y!?SbQFxx$$UY^}k)-3XipQ`udAGAVennbU&$p~GQbS9IGNBrN2 zbjIk2{WxRz3-g3dL`AN~Si0zxKjG{-cIJEaLkPo348tlOtRsC_G zt5?%UmYo8oo;mLJr%}R7*@ap_+n2?EGyWH>qt<&+AbMz{j34J>cl-KM;uozoN5&db zI!bI>Z~#NLXwCs%t$PprsIYzsfO?Y5xPNSCPW)c*wIv}JwY-Evv)qKsPwrR_GuKn1 zn(lgktDqR-yU&KUUk3b!jsou2+M9fK6ePX2*1U}Yx{P@qi|^A+%(m=X=SWJ}n2u1{ z&H41it@+9)bI53hu{?J+8@zzycY$c=y9LTM{?k92o8IgQ*QvL1w=YghBuas{uzzub z@@qH6(IbX)qYujH`VQYjmofd|`JA#jkaxGPZ7aQQ$%)C|-=>$^t>ru7qfFe2-Y2^~ zzL2V(Nv>;S7*8Z+2(3?~%&#tKa3L+*Fzt38r3stGvK3XE8#dbrVyhhI-+}l@c9~sx zCf5rw^YbT`NzD4RXm5}iFqgh z&fpfh4x^U$6lMWf2~RkLFkd;KB1`I5Nd49UGa? zVv=C(L>pMZO36e_&q7}aViX(un|&eb(NTPb_slqo2I1A4K@1y=&RA8OK5`(YM%X6i_?t~nvvp|MUoa!nr}*G#-pc7 zkr3mCOlQ4VMfBAaD;E>3+Eq%jt|%qkA|D0jmAJv%N|nMPkhBtx7Kz2 zzkk16;P;tAt0OMCg|Wm$$9&^5!;!}8{=uWpzPP1y$t>m2@tj{u=kbMG;+J@ME9$2v z*_$ zB(UQ6QEW3J#?c^<_cqz3^j9teU(b4zY<)_hs*@netrSAa0fd?&a{kC<;e_HTlyN~@!0?1iRJ4UYLr{Pd=?@2W{PcKB|0v|D^6X^Rjt8CLm{P)Jb+E;dUfy_(T%rP5t%k z>sOotn%`Fh^C^aq?5@&GV7hG~h?4s9sY(>DI z>uYV_!faMhQBJn%8z4-ke&y0@)VY?D_Ed&IsSQ>CC9c9P?Xgu}lm&CSy!m6IM#B?! z+aanY_Ech{0?GqFa&d-C5a85y)k?jZyyvl36W)6%Le+0*bS++C5;KXKjJjwAt z_CQHK5R&Ltm6}qXym#S}k+M~qHY>zIwZNJ~GWBAP)xCS-ObbSk$GjJB$u{~0GR(k6 zvV|e0g+gQKu)Q%?{4{ug<9CH5CpCWGp7_iX&!O+Bo#Lj_p8?)K2gcpgf!ifm%*?2~Lay30S zp=U(f_bS4^r@?N<9ns#4BPv(F@GAezUi6qr-45G$V`)kuLS8AV<{;|vVRT3oK&b3k z)>pY)%Jaxc)eBCsy@(2q5tygk1{`idgYL`7U3>Y-U3LTTbM5J-zL=#eod^Sm6I-231|6`eVa2TWSw;HC3cu`5^el=OazD#@7Vo9z7BCYILg?_^9p@p(D0nJS z!MXcjQyW=fL1|D$#6vGUau{F^!>ie8w*RS{EFFD&|M)XH!kaL~3>&q87}x_Z@@p%i zqxlUJ94u~{phuY4;r#)z?I}`3UzK4jbD_d7tvO3ZX``O>W5`Y?P&VEZ(d& zdePq6p03|XYO0qMLi(v`y3qNBKjXzzyEz|THiC#K^#Ks&Tw!W)cWGmoeOK1o*4*wp z4E`P24P*1Ku*X2Z5>x1fx7 z4X@-Gv$R3na3O}3GooE#ME-tUhQd%*Rx#v|%fh!O9U>ubDW9v~EI0pV7Ay19YVmH@ z+52GT38^sOm*eBcTfSv*Pbr!Va=}Ad5P5_=X*`qW0|a8#vk&hreRziA+nT$qb zxrAXU3k1lnb_ zF%}|aCO=Iv?lTFIm67-f$cq~23ymj*wdlOKhdBec5F1B4j$#T&jP`1rmqURt-X(QR(Yts`^;FfI7QZ7azb$<*Oy~h8fgiT{9BAFo z+_|VhOM5y`7GS4l?4YF-cQ0t%6Z_5FYkc53nw#ag*i^mzqQ+Eo?9_m>19F8v(9Cj< zAl;c=UTX-$v@P$ICD39sln_Bj^NH^?5J~1Dmoa;ZNsD*OKre2riIQu!vb18qLw7c2 z@CbMT)raP7o&iox$IkJ@v}^Yek%HF(XU7ZMX+01ex{=xKAeG3Rp@TAYPs21)#nlU) zWX994y*C4y;J+)@bj4_FYcRwcqpiyFWPH)&NV8nL{i|=(web?9@n@?Oa@_+_Y^VJa z%+9fISVYRFE`dNBBx<1~bWqKsU1^nOq|y9sze;~_c$T47CcVv|sG3spxgaxy=t+O; zo3gmH7>5mwUZL9BW~D71qk}?IwZwaKj(UJTk?s{8PH9r{$VmTwyXBF#D%M|VHta+u zs{JruQp$%^SR_{ct$ULx`J;91+9hiyn5h)kL~-Dta+jFfr1lwLx#Uy84g!7US8uN&H?$=FW`l~J zcMBOKjPKmKWLv2)@R_%T%Mx=@gv=`#rx9tiJ=b#``fIY3Y`rH(1^gb2tAL#{2)t7( z+GfMW_r3O!p1L{&vL7lr3t*h}W59P=U|{eG(@F@e@qir0go zDe_)&!8fEalh6k8Az+qq2-U^3v6Xk~aozzV(_^zlKLK*J=X{sA6&-=B4jfRoQ?i|w zBa#mN^pDf!i7a5gp#cUQ2vm?C#_mf#g96Kn*r2W|?5|VW+_uGRGkSMKmar^pVC@7o zjW_!J&P%v9mH5b;g~#pMcJ4I>5h?^0v^*RFk578UXV1p_`Ln$)PJ?%UgrVN?RH4k>U? z%zcT6UaANV8RCK@ZJy^O5qp(m5OD}qgvdus{Um<)>*0rCeH(3(-29qLhAW)H(>~kP_?&{i z-CCH~dfbnCDvcm4)MVGq>qJxN;7^uHAmwbZ6w%y&pBv1o`bzq|#Y} zFN4|e;5IM_B-&uy@CNrq$m>%mZ0a1v#Rnmd; z^cRjx&bSRX$qE_MmCrpv{WRV>wnykRU&HiDXwJDlaMKr?HRo$t^LcZyQ8^-=8B@#( z>|qGi_er@4SmA{+4yn?EC_(GRi#9bnrn!3Xr;bu1f@0Y;5hwGvW{h7YftRKwJTJ0< zrG|1@FeTFId%I7ngVuxa1_EUe37c@~*k&||P_6*a5Tt#FEVDY<$)JJ*nnnfY8{GZ( z_^-UGc(+rZ<#F?ftE}jP11)HVmyOEB%*wPQp;k8SCQ_%)xL7_B^C!-8i|$<^`0HRl zKV>fHEnLyhw8I>1{1)r<$Fw8ufLi2VS2AdVXIfWPk2}1JEz>SHwjTBTq%(73dh6S5 z=*3bH_}#gi_ki0-<9*v6XZ@Mm=&JtaD-3Ve9GSlvN4haGzlTA_X|Tz$BRQ_7hd?tA ztvYs?;nZ`pD>>H7kP;fsaeuX!9(&WWGV*8+kQM1R=rvb*C3p=zQ;bgv$|4|?^*pj5 zmhzA_lt%BDMxWf^-qs1kyQe(#$M47GKX-umq%GkQ>Yh)1qGDOX4$P0PnyCiqg=KYe)&{&h8heF&gd6 z-X{%v3*!&^hu3SG?h5ZOMPJU^uCP)1{&LHW(|{RIiIEBh zFzfo3b8LoPO$oB>xRij12o)!$3-~OdVJ^QmP+@L1W!KnlbqGq+?{voAXl}FboOVm5 z_kB+yl{qQr#2kEe%jObh?b=cx3dNdn`%gp+tyh=VIg0d0g_f8-!%{WMKls z;_TMY#aGo@CD;#TAdn-A22wb!NKdQx203X?=y^)?l;x($O4bWWlliT&s!6K&@Yn45 zAF%;A`0Yo*BS6CJZCSI8sG|Yi4d(BXwQ+Xdz(?e0v6xVe&JMwQwvx9A61Li&MKKq8 zHks!0^08*69^8AC3axDqyw{rw;aNd4W)`9p!!G6hEBah7nR<8iFa0@7_>T{>#Brmx z@ROx9v4OmRhUq)6l5dJBu%<>T>+WWJUWSIVE?C;5Zw&z~IOVf*Vi01a5-Ld6em6Z# zIC9rw-=VivKliZviR;pR1Zdu|j%ybyy&v-z@Y80e@9GU9L`&)hvldUlpKwpYUZV!h zv8<_@{}5B+to;%Ayu<;Wj|I5aXNLHDV)hloWEg+Op&>8i(U+c*>+)^-S!4DOMo|03 zg*86(;V4z><`QGPbL;Dfd8rBdhqIIGxUvuc05+jDc|d;LzcZgQ;{cwJyL;L%IgYCpdI^|Qf&%^dzv zY8sihv(~TH{C@Xm2y(nblU4&DgWU*bM(5^{huM$bLo4>3i!y#V28(1oh3Wv3R0Iq$ z28H-cy+8>$wc?5>!jAg+`=7I02C5P}Na~1?Q?E9-x)hmThMy>5h;w?p1&PyqZbmjp zmGZTAo*R8_7j2f4>Vm!dNjunjx45y}xh9bTY}&tHbp@%{v(U^!GF79T zq49&oepK-)g&(U^63&ActKY_=fFqYc;<%BhCmkW-;Ez9zXHcK|Px9zU$@9g5PYOwk zQ4`JMllNve^a_7C;4BK;@)|4~^w{MO{~nEbVnA&rWpVzUc$B!Ux(^e13&L{FEdn79 zO}E#x!;h+IMz~%(e}9YS|4sC)7ZBg{IlMWz$)}puno?aWX)6!Q7U-%~!&Eo3%7ID)|F#2yhaZlx(0s4* z%gT%|(>iL}oWC?e379MR$FEy8Zv+UXWQ^J*_%*#K-`oBk0X3o?hm50EP_`o-To zY>KfpC``Re>hk)j;3*^ZJClMMM~;;5x@pC%6CQWEa{-)lI{`EZHZ!CeP`OC&MK}ym9Gt`$x#K!{O8yeNqZ{VvYU0qVHy7dvtbh4jYCABGs+X z-%3Yvh{YP^pt|lX7`5t)VRTQ8TP7w%qbCullN>k{nS1rNC|P~3Wk*cs9f>r_yWcCy zm|Qvp_b+GDr`J4AzMclL!{uNWLv-sHz&lp65iDVsk09<~{mSKUOaO5WT!lmkuipK7 zOwM@5i@&M6SiQvz%4nVWx3qQg0i`BTX%QZV7j8H&DQ&+76}2y8t^{aF9%l$a{ z`rSEnM)qzx+tQF7Q?b)<%$xRmyNwyTLTpr?o9EWkyYN}s^i}(?XpJ$jBMCW{oYkB! zEJ=<%eY=ld=7{YMO4pjnZ$~T-{dm|TYi3RkVG_|;T>pzz=r7+ zTJS@|&JdYX@t4WgA2`U2WFU2`_18cL-?oWnLm*Z$RBm8crSmPH~7yU7ug** zZRCWS_|Gp~h4Rrm5WJrXZUzXL9o@2UFQ?Up zp0X~P1SM3+GsJ-4b7fQ_?nZ`s(OJ~xG;Oz(RzF;(T@UcgvzH)J4FX#mfLwF{G4SDBrVk;;CDf6!0Q|a1-eE1lM6kt64`N9^jK_@@nRY1)Q@?Hq;?Hd7({Vg-= zgYNSnJx#6bAWB_3?x2RT-mcff#mrvNoPfT@-#pRz?{L0X=b2o5;yF{sE^%pRt-dAcDrdQZ-dehxjqP@i@wN-)W3810b3 z+p=li==ZzHqFIhPHZUb(y`44wK$|^9;Qu|I043|6d&*`o*#wunE@9uHL8JjYhkr{s&E@0_Mzee!F_I!uNOjEW$WIBz^A`X^MVAsF&T`-S@{Pv3C| zRaAjrxhO~kAKkEl2Idf|0RJFwVQnhG`uU4LQ_S)HwX;F8jr@%jM(7>`XNiO6rpLgsk&MqwOBl92AN;~l zo_F8Ee9_~u?a}wu>4ztpH{wt&&Jj2O63Z>=(C<`v0WEt06ltWaFj%NN*eIZ@^(g1R z3QCOAm9{a@JaqQ|^#u}c-m4@s?QZ=XS@F9$=feK%SH=D!ZOsIu<^#EEPNLSn$SK5e zDx=ITDU-|*H3A7^kt%1wn_{=>saTimvRgI-vB;Gn&qVypX*#8p7rak^Nc=5#$C9`1mhA{st$9IWmfqbCA-}SjZUlX1K*7lwC{C{{FoaGTkK-`H!CVBi% z25lpe)3p!T&<|?Qc>wU(G%H)2&cWH4^0tp2%^@p!k4PkvG_el1Tn^rd?%X@|j?bWH zvF@k z)UA&C^QU89ITt4c7^Q?DpuO~L!QEoKpaAgtmUliW*r-ze-b%RUr>i+pEyB3mcO>P3 z&@~lp`t``BiUsdieA^aj6;|;o=kYq0i8Wb!@8XP@Jg-$CSTg zA{R=d%kY(6g`?9KH%wq=>!^9ePS6sCyBX^N6LsZ11bT#EdbEMsoe4KY{sKy&ohWB3!tcmx>{q%mEB?ai z^=ztzghj02aRn0}mg|lr>oYfVCND4)SrB^C$a0U1?LY%G+m#fwKF5{z*i&>3tqG_M z9jtL%4u!dfO=!+X5pm-k)1m|(A}H)IlmNNMb}?1WEwt$m{vXobF|f|(i64z^+qTuD zjhm!N!^UPC+qUh-YHT;QZQD*7<38v6``Y1f}sF+r`7(uvr4>ngbY;r z|8Zv(+3A0GRt@)#IgGe*4D^llUH>I02LDDM($|0Ncx964vt3!i@vm&VBQMUZF$ffNUZJ$Wc+ zVxeHQT0pYsIzzEiV|ltADLATk6~Gf_wy4A3_T#Lp~Y zL!JUc|7p-3qn1NHD8XgD&#UtmD)Pc-*9zrAmc$N=3vzP)y-zW}$`_eiuVB>Z*hU^%ppX3{c0xD>$21i02E| z6W+l#EM}7K9s|Q%~pZ96dKwu^>ow?{Xc%; z*8qd}pSM#_U=jw){c&@|kKVEY0hC`mnUVt-b%q{MfC3VnK7Md$DDZ%0tvi4OkaQs9 zpkbK0FPP}u8q!iPVlD|F$?Ad6lxqxB2>=OZiep2eB%sCv<%sWFF#+bqGWGrW4;oq8 zaQ}%@v=R|c9O#yv{8gB)2awwt*jXV0rDh(e8;Uwc5dV?|aMUb8oO(YCw*&@BZYGB0 zR174dAltJHrRX0Dy-);raCSjPu=2A87~NwXIRfyb>nZZM9bO?AB!Ct29~p2z)D5vg zsKn9Yqkz!h28P;)V{Qg!G*xRSQ`G@3cxaP>X*$z2+S}*lZKKe7G(!2oiKBKoBkijwiQEgU_jz*tTqPVWZ1pSS3d<3 zfFM5NI1q_Duq?@sx)+dyATk*>dY}Ln2tr)Gru3%4;BaIZD}g|fI=P`x13)-6ITG~o zSndP>_q63;nf}9(<;)T%1Tef`0$sCInphyEn+2B#)g?j}QkfJ1f>@9TAG76SF;|1^ z*|0N=>o)=mP&t|4?xO!eZ-at@5_o`lAcZ={b_bYqvONw&YDzYWU%^1siXOGzoFJf? z?J>5R4C!%zu7uNqEEz!HL)>Dm z19hFXfBh93ggHTkYH@5$Ao(X+p0p$zkgO4oznww?T$E81P)2qGK9s-z0R%#h<3Gk~ z4|8tC0M<#AE2riF$5h8kG~C8!=EZ6utxddfPtb(#VEgy#xMZtQzK0IL!f|qB=I{k5v*nG0vT+z zLA+@I>PL{~QX&yq^}sOsadXsaf1(3`lwzhxU9_!71#y4FQ#?;UeR>WAT*~mOSmFR{ zkm7y?hpZLAQu70W_JEIlhgb;2443>w@c9oUB%oLRqG31}4$Uc`o+TI_<*pHpD8LV^ zL<$uHcz{`keuJ3lg{g`lRHp`aXZj}pXMLrKRn;iwAfeEV*Pzwt13`vx+x!4XHP#F$ zS*+F--gVfCJJ3!EfPh>_t8QQ5a10u4dHKjDj1fdL{-0mE0Q z1&;?k6TO8pWe5OR>pzB@V+Jn!pFap4iz;*!abg770UiAj#W6rzhzb#d{{zJyJWs() z5PE+E8i>xH(PE^(gXDMX{`R&q2qt-V9%xD$vjX5}>{GdIOQ*hB3foyDlPm z%t+n?wuF7V5lcuLaO?2%N_#ih{l_4?|M*<X)Vi{l`q-Wt$@han`Y($f85+TP?`mRXs(6#P$LPT~r2giMBLWW5?70 zkqb;;*^zRI$b8YzBl71YLEJURG*k`&xp=gBc25OZwRn(`>JKA=fcq3H3w%D4CbZ}S zp`^4BuaGAmkWx>4J-Ub=0l+7~Av3>jACQ*;<>sjEi$eCBdk4gh=H&XDDZTN#08ZfilpalqtfX+WpC-NMB~Ad1VQdo|;LQui19 z|A)`62Ls9@q5unWnQ$a)iNBoy7Tk3+))pjGCJ7i>YIiuGeB}z-gfM8np>7o_N1P4< zXa^tMdW6&oAeD^>N`-nbpb7M18NO5nxyaE@9ZpizqL0fu|V>h@YG?W8S8Ti*G6dmNM+QE@gjsCOA zYrNv&F2w-~{)m9O7hNhkuyO#yN`!8HdDSjywEiC;lglT0S4|D5e~$*Cp($wowlURv0tJ#U z4;0`}gM~ma6c$4r1|sK+|6GC`HU^mry?V00;J~B-S+!UFCn!5Yu`-Wq0uR8Vdt}8n zKN3J=#H;5dL7YEB7Gjc)^#e+$qGf&k5yGDb;HH_tJ<=8j1T4d90On4wO6-|Jo-PF zmk!1UVod>lAwn~5MC?up;5a~Lez7$8uz^~sZ1dn@ot@qvFSocu`X&-|01-nF?1_1(p+253*N2Owk}4qQ z>hbV;*hDJaca;skTmg`0qKq?j*6H)^{dR@F$Bbjz3@jrc!M?u=TOzzPTYv$7|8JNg zh3{X%r?m2LYPr<=nHq50B-~ ztt|&c--4YBp4?#Fd=F9TF!!*vOT6jvc^1u`wBmRAz-!;>ZTy;4O2L$C2odgr9%z0H z4?%J;f8zq85F^1t{x~#hGKeG-apvR4e$^xybk^%+QRxOs6G$ZsmSU4rhIq-!xQ4(T zr;;4|YPnNvWJk869v2oT7%rKDm@>baa&N73+B3xyF3Ck2&9-(Uk0)BmY_8YJe%zN2 z_xH{WdD^Q^N!B4DYePc4k=&1G!O7$AM!jrIqxM9DjpuyP0c4?hLr&}dXD=OxZg{(F zNTd*KTF#)e!dTzS=dvx(1J@tlWA>78ah~DYOGQ*ucz$&olm#K%+uOHx4=ggR+l@oY<5oK`{5=*>bPX-rzp% zi*o+r%Kfa;taC;6c32kF8u>5;apy$SE{8hX)WoJ3opad~iac1JNSv;BQ>(T0{EoT2 z*7nh7zQQ3%^8*d!WxwJGpT25V&un8V^YZ2N|{X(RtY2 z7eLb?5@o0p%4~v|L*q_2n_J9wELG|}DS|T7Zu26*YP2f94ujib@}>5KaLfy3uF1!1Nt; zSsR9Nsk1^)qp*f-OvGXxV*}x*b@;O++F`NHa-XaoBOHq;M%bA2WQG6+&M)ku>yPY5 zNT2J=n`v>^`R_6x6V@rUD`B^ zLmSD$f`}+;6}{=+gz9|rzJY_~`D;T|OwwfX=teXAy{-figP{f%`clzlMb~R*Dc=i< zY*Uz=iY)T^IL#TV551Jb?r}x{>Cgd`av%76y1Q}G4VJHFoenq}OfFr=hnQNq=7yUN z&ON)2_>o;4REXv&Nj043;wb{gxyPJV77@L6LLRs&VnTLvU}@!pRAfEYwh&|^&e#EI5PYMmC3(&H;St* zK~(CZ#Z3HUEAu+|wQAOxW^E`-aqCD4hS~r)-w^#K-QVVf68f63yeC1ESwRCqc?%3H zMPaB%G9J|$X;k1hkDFrdTjy}lj7x9SNBd(_Wt-ba)sJW2SH-=A*u%XRdDH)mUsN5D zvdymbT|RwYvorxmB2HGSw2=u5rHXeziP`TK^LH1OrLslnYQruQM(RT&iB-TW(#5xVD2cK~7m?G_)-kB3qe zK{VuB7uV*U+pZe3z|LmPZ+{-wJbQzg#z(2YjYF5pBbTvlUGV6V?)n+iDZSe#OjNU4 zij!O^{c_J8(7`^W{!VN-g(fN!Ca!4_gq9EfN9_?R+2MY}MPEtAXpG3@qJ$1A09KSC zi}l~f>6kVnt+!F6{!TxP^$Li?n$z{-kcQk6+Y7yehy-G?QC{6%`k>Dxgz@$dFgyb&27i|CLKer}4!^qw4zm=7Xapw>U7S#M;fPcjN z_>l1K#*Tt*WeW;hCQw%ALo|?L=cmJrO4<9e`$;JH-%RqCrJmbcfo(ZHqKOG=v zg%v$gfUxbVJP@^CxBDf#zgJdnx%e*ubJ2YnhW~{{k0b|@bXNUP2c?K-My%OP=q~Gu zQX6MZ7>pY-&7N#UbeHF!ak#z)-DJf4&+GV zF_X>w#g-OgrF#E-HUZPjkg8%6sfa(j0Y_di;fZ^CtM8zC>k4*6bo}am_a8%^_Xuy;FLh zIVyI&G)eY`J+D9cbs+FKJ!}5RZF^Mmle_xTeORV5&*jODW2UINl_hc$9;sy* z`426YYLx#&)d)Yl6?b`lZqPU-Qb~qB$|sHPGT4D7P#CsKChdzu4CLYoYxW*e0%_mY~{FuSpb5yyegO zgflz&1(}K!{TFn2!tE`B!-OtOx}~av>By_|NX7FBA&2qZ}$%f|GA>AqKub zrhI0(0^Ot*TPxera?CE{5g}*~+)NevLM0USacX>>4A8txdIh3)@i^tBp=ZiAncC=pDuo^?+ zUN#3azwtV$um0M^%Z-T@|C4!;$7ZAz!6Xq~$7s(SUXan6 zB@XM9q>wxU&zsM0O?>A z6LG9OQ=1q;62&t#WlW-e4vC{;=jAWX(2Rq){lFf+^kyy+49UP12BiAL$s4`@!lF~q zx6_ePMnSy++y|mp=KeOXfwfplBW4<-hW-#qFP+cCLI6E)IY|Pe0Z$NWv%QByhss z)}FBw+AN-7dQt?n_GGQd?uay-)*SO3o~>umM|T{oKNc<*W#9Nat?+oEb!3M@Ojy3$%@A6I?)$P>OUroz*SAUH}Od!$KZeupLiENVNUU6D~RF>qwnbh zfphrDQ6i+jzY>@&6?L*a3t(s`&9dD71e2~6zKLp9)nG5bSrOGm=4Ealo=;uL!qn%B zqi-FfJ9)d>l~!i)U7Of3^7N<#Mu)`gFObLrcfhTbWp6N~lj zuh-U)4xj2(VofjV=Xac==IhLiM;ICAgyUK!_t&u*M>-WqZgp#YoI172Z`s6Qq6FVP zV&LD5^i^c8Nn+|o(L=rQ2DLis`taN?R1IKgC|VrkF+crs7VVa0FK_Zy&{+H@g;OrR z?rQmKLALuGH8{1?fBiWfVKcECZ@?XX@r)YD&8$w*yaP-v!GDeTnrD(T1e3G#YsNk$ zn8RXxKQQ~ZI}i4#K6UD%BO5*W)u<}tJ&G}I&a>3@6I8?gpU{n!IiSaTfsr|oyM_* z(n~^QjQP4V6T5xV+bq+-B?9cj3z7-<#C45DENfFEXyTGbZ5b2$7q)nE^buPXHFxex zqf;DugrpiPafzYNI_ptb`yo0GSOa+23YW8%h}$HLvnsI~nFuQ6?^a3w3JVfVr7u<1 zxUth%kXVb++8dq4o*a*jhWIDXq{M8%m;U-=g^J+e-Q%~PK?Wt`- z#?mA-nmXZ|ZmfbX96Vyoo^dgVn_1OkBH}ot89K8^Mq3S-tj(|eribKex3)?Ixi2&# zP&`qiJ=Wqt@BW!7=0-gz)_qj>Nao0?PsQ(H|@#k2pq5q8|}5Rr^`R{@C;?( zgh);Y9lE2ctmCKIwU4rKHw=GHEEEczl3;`)_lAa#Oyv8 zmbvxDTWR;WfcT6#2A^=;-o>bbA!K3h%m&<* z|1U9^2pYoTg4W~v=WW_l@Eg9AYH1f3>|4{n}eeP;V?)d(A zO8;iYyF@tcLf(qpbCP+NdGvF1@3#5YW+%r@IRz?`=MPu=+A%jXq8|oY)!yG&Xu(Wg z$gvFN{eU!*=xPX`hVTlrD?FD~#v9sk%=zAL>@!T8iP5)#D1Vh?p!82dv*iiuueXYH z2vL6jt1U`chd^@y%@&2xs9DU0(ShkAx)!CFyw6b&8&&Ph&L2r;JxX^^36B7ni%*;f z{Qoc*sT?$@Bn?hZXS9DjE}(SZKd1Y?p;ggrUDSk!eZ|Z4mXqOFs5zp#SGlR&T;Ai5 zv+N2xdd~Oz{k>|j%OaB~_d=@6mx#Ciq6&WHHr>IpZ-+VcrE>b6lAy2~GrAkt;xJ*W zfpTHszd1qoyzJ>jdVR%(5Pn)4j)DNWS&JERM3p3-gLQ+U$h;sQxzZkrq zVNr2jkB@?|b@6D|jr$3D>wLwY49XzK1FW*^EoJ~43Ep~9lEf;rV$vHP!b)LfOyT-# z|Iy>h5C5Z2y80{1H)Rb>-`kXGT6&uyZWz$ox>YbIP==iFTZ`=ohSwZ_sF&9~Drg6m zBs_+YWhD=z@ztEW<(YbbPir!$w*U4VV7^N4y1S;ndD@7Mk=zuMAoJoHF*uY!Q9OkIlyrX)lY`Wi$!{jY^m~|(){+c0OUaOHQlz-H`*r+uv%oM0 z|Gfhjw(n26KDe@?47#$x3K&O0HIYu_-AF&)>AD-X*{1H0z5@_?6U;;HHv}7;=rPIq zN4i|>+-tgp5u5s#;4lq`DNaUOPJ{8U*j}{!>V5d3BQyrFe9`=MNNPe<3*BZZ^ppdL znyB)qm*cJ7W&{K3r4f)KP%i{dR49+{F45;zQ*(JXCK_6jo5?a6Fxk5|Hg6jjcW-HL`|VD-Yo8198`&0DgW+CV-h~_kNjxrPV04M9XeFNLDp7VZqcx2Y zssmcReiwViX5%i)>|@ZMSRSa6s-S?Uwya=-0dajVKU&{;#ahmImbFFCL;60;niPtT>2d!9Isav&?GKl;EXKlxDb!YxwIjPbTb+w7?(jFG@pu ze%$l(8HaN7CgW(Vk~4bh?0!F}ySEwb+5EZRend!jmvz9x?^71puL?osBkwDl%HRiw zOMFct;V{7wYyBHRjSF)1Eyx~a;?=u}ltFq$X{<6bYgqE`-|tYjPt&|%`DU@oKxhDc zSbezQi|T+f;Kt{7!{YlAYpT`nN3PeWz~y!&EZ{c`I)+XH-D7o50OKGdp8&a_i5yx zX9w~=@0Z{ib$GP)IA)q>=T|vH5vEKiTTnD@ARUwq|MFk~PX!`X07k93 z5!kDLL-gs=w5GBT;Tr8%4(~n~S@qkARu#eZ8V!xR+ftm{cj3j|i(3tj7MMb85;`rm zXX^iU`&Xa`Nx8H1kC!dH-6oUyGdcN1-<8o^!O^$Kl`o{lS)xKvFU8Irk7JuUU3Q(j zeLfL%1MR&AXDZecPudYCB__QT-}|N3HR^Oca&zfN`?bCc;zw8R2c45AYaV?myb~yg zG1)hR`6D_uqVjkVOwE=%>-t4`c$v2B+#2UPDuM{2+Tp)lDz=Z0{8PUmd!l0H#c!Xt zql^`AVJNH+p8eO+Ouiz;iT3Mh_6^!hcB_&l%374;Sqpz#;-YD^5a>CWO*WS3y0e#R zGS=)P4R|s()_a{;51nB|GfwpSRvP!ZHSPan`^&SC!A0-+?^20|aSSL6S1d(S6j2C; z-wKlRi_(L|{f_l_0e2~8d#$5qgy+z>gXK=PK`2fVwLOxrM|fP%a9wNjm0)lIT`=t* zViyvs3hAe>L)^u0@M|U2Uk-=U%Lbe8n2Fhc+9}rad-kra(D|)zS(RQ;C7%oQidPB` z*q-BS^Ra0^nn&24KM&`)w3v38Q}PiFx>gwK&xFtEZ|)fNFtx06?&o+Tb55FU`iWnf zSR=f;Dcg-bR1f*_V>Ff_d&i>=dYTqp zLXB$MQ8Qrhf@D>Km*JI8-YDw(SJa|q5bsnU|ST?6uE4yI0MEQ z{h>FUo_|dYMu>}V*Ef~L>t_V8_hy}O%A}M?b8DGbtW4!pmiC{C=o=VC&eHBxm zX`+1QsMB*dUQPKuvKeWY;7j%0>AF)O>`RoOw&yd;LOt$gNCC zzg7r^qsFRe>cTvBf=qWdmUOWhFS(YmDet#(FBRY!tK}syUY>$Gp5V>3fyFGaeHK8* z_Wm*5_$v%?G*sXHMBAK6L?|jB!r}YeHDa$m)&$uIMQ+(Z+s4>{(>9f-h~wp>T1rJ0 zqpni7=;FdMc1oL9qZPI1uUZ{^>Xw*H{xDIya&X%*RaDbW2xhcte3ZZ4KL38-d1`mk zgy^Pgz&f7ia(rJ7g|DT~HI_!JkfLf(>B4YDS=c4Ez`Tl@k)z;gW%_$3noM@*igFiX zw_xCA3opF>Kb-%2XVtkQSC)5a#@?%9ccQ@xVfilBH(jtK+AvoaGTo%r|5)(Sy4dqq z{{j)Zc-UrgJnxLF4qM6`a+%*1h1L2We@(^_VK)(zkA{&A>U!QGgZX9bkB3~2CsB;? z*7tc2uey)>w6vRP`5jJE6O56ChMaNonP{Hqr&Ms7yp+(eSix-6=Vh8bCqoP(dpHbxq+@y} ztp-{DGXPbh_y9t9$<@d>)g!*eIkMi>cSph&U-d@;Hx=gq7`VP7CE&8E+M5(z@1Q?S zX~qk>Q}}-2ylfN1sog8HdqsOX=hBE|AWyG~Z+Su+Vn%Bu@Ve|gMEMkt{Z2E+stUQ| zkoMs;INH|iH434|cdk=BE@;8ybni-We_T7O@Ow2`Xue? zV8b38i1aZEjuvRJ@i8H(Xh>YWKpil2NGFeLE6>7ubjY;ORAm;thp;q$lF!_Q_>?qa z#?pAd)%`F+4e^SyDBqR#N2{SBjQi-FXuPP@qM=(VY=JqW38H@K{3UG4vUq;bC)FGG z^e;|W3**RLf`F^DSfl=MEN8IN@5{U)7VfTkB>^o~{TH1aB9{DJ@Qkq@O61*YB(<^U zasSh`a_e2k7sZ>mQwFWkyhU{fv$iAYC zuOY~V5^8_@1g#;rsaazn9v)eP0G_*GDvreT-XQ;elJ z6bZ@A_;88m-ws|FNHXI&&KN9GWJ8un_nm)xyqamzXWL1;x;`eNr><}VPBw(3H?O3C zD?`x|7Q%*gKoPW)M(QFOu5U$5g>d!1kp2L-J|ALWXX@|izd&cQtoLRMX3|D;X%#M= zf2V{uSQJ^=;*9>;k4D3?n?R4)5U+g>MLj%X?|6hWD|H=uYUp2!#N>q8;lpj z8QL~QA_vuC1bcahbdYu7O9c-O4lV^9uo-8w(FV@&^72rXlarH|NAZIL@!E>xM5ZPH zyxaSWszY@t6yRg<|4ZYJrD_0muje18z)rBDD-XxsO^PieY~-1>kl!v{we{KR$b()e z^L4F;p5ZB!x4h#F9KOIDvzyF721cwx@XYexl_rWhQN*XXI95;Uc#CRt#d8lUdapd~ zuj(Zcq1Mzli;nDYc6?lzx6p^Et$&klE#Lo1dkVSs_AIldUdoj7sLIlLP!4C*nXAkA z6$QVEOGo%1T+a@1#`Ao=38VP84FSxtZ6M!kb*9R4Cu=%FVQ9wPD9n z=YDI!u>WBF$)Oo5oMZDkmH>g8&yz&9Qpn9Lq{RNqv*IECMB{qPNOl2-u~BC+=^mr- zw;Mq(3z(f*6Uc!YoDzF}eC6gn2;0(6u57a(y$ZP@lr^SpF9L7kggzhcgXu&>OfW1( zL7w?+oFS%)#l`z;Ysn#@JXTt(h^8^sFH;}p_i}+kXEP+s@hVP(*&NPCXsL7it((z& z=(Wuep}Zt_TF#|;%xt_`@={*{hIf6jLS7(GoSZbP@7m_uUVS$d< zMfg*O@p#XE;M?9v@xk(XFW5;oSZ~D-84jd@=^c5S6D9UxS8;{SZ()&2ZOY_IBl=-5 z3SXp7Dz2w3=67((cNlVJP=JjPXC^pcBg9&G_^pZ>HYev#QV1d|o3!}vbwlOrFuZ(I zBG*26-^|bsnDg03YuGw)f6N~C^i?NtzOSEz|0x^Hp=DatLY6c-#^UdUjBn<_*+WAL5MF z{?4Xt=eX>)ThEQ?t;{uQSO3Oh{wup5wWLr}re#Dj`cxTgqmmg`6b;7yqc_eL0)w^o zlj*_=?ocJ+iwVP=AHj%YTZXdI;K^z^Bfq$UEQTH}X7 zCf5TtNjf+qOtnQsCAIl1xkf7T-){#KYolXIBPo&27&)p4Rn*y#sh9qb{o|kZTve}q zh#sDbU-7(JN+PugYVcq>7Sf4ac25l1!rKz!2Ue1Z5x)Lxvcg23Y9+_GT2sQY%62LN zUzQQ$*3`5(Z$GseSV>$O%rNpN?V9O@r_&x0-Tz5g@^sw7Qj(Rtm$4h-f{GI5Q$4!7 zbg06CQo|^jtfR&k_d}>(Kw=gBPuKVGjPG$;`7A-1=okuaUUv}CetJy=V6IWP>WyL1 zH#oj&j8cZc^^-?9R-z0b%GUN+clHu9z7Yic%#0YnW2|uOknysDE94c2e+SQwjO8br zI0@eQANb@yRa9TP-F?))7PM3zjCfyZY_62f#HiizUq#7@ZJs+P#bI$jaHc{Ztz{}4aV$n5HJFf_2ac+s-|h^!Fy(|K^V+L};* zme+A#G1JeYEn>J8c>r??JelCM2Or(J)i!ZCt`glm;t&NE0Qb#(y>p}cysvUfKA|0` zL~mt}ZTKTzE;XE?)5?`MhHNM8RfOpnI_S>vYEXxAu~m8`-+H18CHxTmZ49WANED@c zaU6Jz6v4KnzJI;GCU=LAN@h-Di7Y}+Tg2ChSOh}v%W_1mU`X`PpG>;o7!xd+`Y4IQ zWch3fK5tP@sW}Ig!&u8$$gTK&O^uhXa?DI6-mmSpgHe-L&0?SLg3O*I+XP}yKz~9C zAmdtfalO$$`|#0!z@YK)hpziqouw(Bni?8I{&_QEKlq{Wix9EDU^}adOFN-w*4w>s zSAg5&1pUw$-U@U!e_LB5&m{T*{*HX^eivUh3jck-SnjW;bhPVjt+THa$NiOfkdLP- zP=-C;i-Mc=8$qhdeoa$8X79Xt3jQhteA64B*4V1#MDIo`TQVkGFCI~X9~X<}5q3u} z1)+7p6=HfTTv-eCwMDSeD}1P4P|0X3Lj$8@>B->l7SfmfeT$dahxQD2=KJec)@7sY ztq-tS!`M*Hs>f6V1h{H!jS$@Q!!^s&A&?HL`F{KVdzSVa*yZ!D>nY`}g{r)jlH-R4~=h8!lZ~k>bwI@Ya0I%+XE_Hjl*{?I3+%oqyVJwiP z9Z;(Ek|~wce?VDUhib*K;El$cC1cE9URtVNSc|2$MA|~|m0}#af_C$V!iI!|{TzdM zM_k<$)u|i8)k!Ae_ltvyj_e1``@gFzsqWT>$ecfPDM5T-oSN+2jaI8f#KdW-sU$+~ zP-wm_jGEwhP=3%aAFRmFP`DAQnwsPM&hp4CRw%9X27~4or@@Aj^=Q++=2p~@>FWHx zNlwO4c)Lq+jIh;xolvZ89QY40&~>YxLQXEo{N24=vpaQ}&!y3-Zv~HSL2CAfh0qZK zw?+Y82&uA4BaJj-Yh!!|Q4MT&ZE2I*lf#PO2Q`=3*!CG2k=#zQuG<~&d)D3+t# z0Yj0yWhn7jp@-sp@*B4+lLgB%3j)o?^uIFL=Q|2Dk4?W|;i9mR=X}sGUm`g#S6Acl` z>S>z&YL=f;w0WC}m1}x~$j4(W4rI(5P@Cs#6+t80uaioVHFxUNJhbiif2v8fD%+dC z>Q~JQS&E|sV#?(?nE7a_tc6*EAmcg4&GJt(_AMTUZPo!K*Z7%)U!w~8M7f(f< zY2-;DJ?T_W;z^^+zW&Sw`GeZ%NALpw`^y9C%~oA#C|sp-@=#;kJ3)wYl57j46n7eu za0EI>>0-waaB37Sg*}H8uX>^5C*>GY^MIcn3I}D`*GQ=ZwjtS{SNLlA;KOft?{6_H zS`rB0eEp&1QgCGSlq$PB#hqdMI|QBsXyn>WhM`8uoP70YB%UM)%AExeE6AUff1dfG ze#TT87#&3{H`!iQ*&-m0PL*Okk_ptT}YYu&}Jm0e1e} z$7OXBUlAl3oKFt}*R_GY&xYhb#iSt^OnWu?qSyVUQ?AYTtF5tR8MI>k@#Z^$tGXd! zwnF%%OU}IxAO8!-eJRB)JiXzQvNf$EPW)Jp+^-?6l5Zh4s0_J_Nos1$MVaz<8eusR z1Z>v03){cayq4iwC5)6`TJ|fSRNQ(8oQLGxc4q|{f(#xl&mUGXj|kw|v_9hRdqN;c~IvFOv=k zJ}zVP5lA#VAjr=4VC2|}Aip;dbm6^X`2PK$R=s@0L=$7CPt+Aa7zl-@PWQTn?9Y~5 z65~Iw;C89Oka>mFJ#CH<8qM6KoXh~SBc+!BS8xL~@ z;iD5zZSsq3_)Z~TKRI4M+g!Jx#pA989w!?yH%Q&yJ4!+@b!pC_xodh@R3yBJ7$UkL z>oN+>++|vz(*33U7;A&FDcBJ=CEiXSE##~`<7BZVs=)E8u?8lN$;80Kaj2W~<0HWn z9JbMJt?14K)2KFNpJo9Z$>2=*bi1TBe6ml~VphC4T`bna_YzuHaNBdeI`U%at9f11 zzfmtvK~2NWhO#Lw^o#vxU0juYRZfpBm6dnuHS?2mfdprY%%RD?L*v62*3X@&k37^L zX94Xlno~b+=!ZJb<}id}*b5ftCn9n7UJk-O!r@TaN88{pLlS1UfkAz5@w zTSlS?1U~!52BF1TQ-l{NrE)3JlWdKvcM^$wwZ6h0q-+uStRlbLe{9Fm{HDjM8OOKg zs8dPnK|~elh#rP7*AfGEro)c{NseUfQ!}~sq2~unCSx8RiD$s?J6sbUPocty=-?XR z2abA+UmevE{;%CECTdm#(jOieiiRMdVOmziBEBM8@&* z)gLoZR`^>526b)33Bj5B`rkOkDe~aK76uaIagK`GQtAVeps=f3Y;;lJA%%&DNgZ@F zts}u^ z$T$qk_K$PDJdUoG>MK5Jkf$-F`p5lF9`7ztDbz|mi$5Xdo>?{6lt(1tYkeP48e#eabjPslxI!}pwNcP4!P;xCNYQGp( zUaiAKKOWK*qItr~%B|wj_JTV7uwyPezD9fJBEZi(WFOsu>m6`@u)#$(WCTY{xCwg* zY$!!M_&mPa-Dgwx@taxAE?v~L8|KX_yxZZQjhA41U^f%?cc$L`fHrk{Jl3-+Md&N| z{m@PZ*9{dL%8sF@bAi{lSTp;Z?x(_q`WitFhO@8nX?yV0skel6`u7P2o)}1VbkZZf zNzNoD8_rTLA2y6ReYxig0s?JmK3kd2cwH2h*;*!s zKcr; zBu!u_5C-Y&*`hcFg8e$|q+jap=Jjj&u>N_gBz$rGk9rdM<;D4v{~oxUd}vkEk-NM8 zXXD{b*NhncLDj`e)Z%@r1vvMx$xb+zu*nbJ`h3+oLD9pxy$E(m$|41k<*+;2d$xNME}XsFg$AE?SL3> z2tyW>R~FVPCnx7A<5uSMJtJjUG?S({>y$K(qpMs*QkHp7X&T)4SxhZ3hQk(V<>%w$ zQ#I}!|1dtAIk#`QS~PmSu>ov@!T?87*^u^!K0er3N+xPi*xavjh>%1A4Jh{619#bi z8Be}lD`_fpXL@{_GCkDv-%Ch(8Ve?I&^h|_=KKl28&M*|;tAtVPJTH}nuyr`c) zc3NZpc*LD=LZ>t=rwKAACn_1nF3$|?$tQ@G4Q_}=aS3Vym(^j-O)`=vpyM6DuNF1C ze{E9eX5H_{7uh!btxgW-sZ)sAxI7x#NFXmv9P>?uoB#Hg>|k_^q%G znBl`0{DY}OhgX)T*N-^s4IYOjLZsV9ZN)KW2XwR@28Vk!h}_@lPAp=d$g}OEbi-`z z1~?2mG#N`!GG#BlR9VAbNAq5Dkiym30vFPUi+4tmxFL^WZK(Bq1t<5%rM{pQFaC{h zmfNt!>HtJJlk{XT}&wgCdB^Fq37e0;o~KXf!1Yns(D{udgnEPrCx zk>m`p>v#RvkPxJqR)DAp&aQa{`_yyIkmcsTJh=YS`B;4}zCoVF9o+=qjteTW%_?3$ zUa6^!TFjjM*1nO_(nR1hPWfiJX{PbMh^}`9#pm@z>RgDW`Ct@Tn!NB_{Z;PM&Ehh} z7_Aov+Ym&zu3JlCqT@w|u#|HsJCT2)L&v|=YHdkA2lH}-7Z*Ejih56W`o0lQnUV#8 z24PHz%b^M5Zye$o33Uc%v|uj4+hrg%<2Ba$hvAN#ED_4`!RG=h_s)@payZgUZe*q- z0T^e^FVwZH2D5Hf$P{MT?Ag+6R)gmZQ&*wgpH!?4TlIsv`suEQ^o~t*{&4WmVdUMD zOOTb_sNq&8zpnFS@Af+0C6cC2QlKc@xUIjMR5}HZN2$Ta1iH18btZ1&iJ>dRf5zb5 z5ba)s!dF%HU?H65Ap7VxTrW&i2&Qw5seTC-OMa#@x+7PuYqOttl@|EB)eKE`q3H}3 zD6%B``k^-fIn0FO2AB3JwO^n5R$1 zv>r!oqd+Nv?%|z%hk$(X#84fyE_d@hG*j9nwq4t}r*&?xz)*|~Z`R~{wWP?JhXLFC z1~1{p8}Y^X^wxe)Ro!3{~5#qI_bBaHz92_j*K>7wI z;H~$<3uzPXl!%1uTOqVlY!a6VMS+4bd@Fo>VMl(-y7kbq9G9MF5qqE%wvL3!CkfTo z0F@ZRR82%2Ev>8bB+1-WJxUYNP9gmn>gR-M_8lS0W?R-&+2=so_iBoEwEGZYLDlHp zI_6f*aAwgz66!b-77@m#L`WQeIB;(K70Ldz@vy|+8R7b7TC9SjLFL|kY_1Lcut%q| zY%o6+gvb>nCXcy83nBgtsm1-0r>{pPx!xcuyDEjTEi+ndIw!lgvy5DfLCGFhOW;+WXbG~JkR>G8P2%%MaYWI0R1=eVmDU5tDqd4Y{8WVrx^Ft?hyfl{ zH{0J2bRoYDVLcwqA~y739w&Tx=G^|qU!AX-TTWdW9f7LSo4mw?wtgdC@b#JL@+g*I zsuZ$A7aA~qJWu82@3qp_wSIkM&d9VISRF#BzbzD_%2BB$(W`WyPVtj>uqZW@r}g$O z8#4{Yf@eFlDAF+9Kqe2^QuRboV`T2C?{(lpZv$D(U><# zxKV_r@KYP9i>%IG0i>^aAZFNM7aMZUEf7B8~0b_C*aWAf8JYrZ?iMeSD(31NTMPj8;tzKQZy zJUATtKK7Lp9@hft9rIH5825ZG!L&FO=azyPnNfE1)ejtU1n<|d-4Cg`S6jd@9%{T z@HF_!X#vXbMboVIiMw9z?K7sh!RX~^)*$H&cuw&!1d*8XfOMF>C7YLtICS}|61@%cSbo;zI)Rp3qQ&o+%-2*~eKK^y{p z6YSOfe*T{h2fRPsErZ;+4HQl(Z~B(-X_q6s_1WJN5x%>S`zN*bx@%lT-#@awiu-WT1z@AAbmBJe7Bo={lUQ3i&{srVNc}SwT>O{09644OU0S4Ds}sWXRGiQ zmZu18Z!iZMN;nd}43s=QTV1f6+TQj$QC5ka|H}t^ikIo7TV?re9JlDTh&W9jY(c#7t2IKIB-eXwIO`5l!?2hq@XF|i9w zJp1k4d~!`xSx$@2WwPQnhlJ0KJHi_JIDfi;%Qvs@oshd@gkW7G9TN7pXf91R&v~r3 zM)%L)rKh)<74!3kggY5NE~i{pUy$ECpc0wA-O6{aAMwrqUf^N>j+Esl62&DUtEgMT zfiP|9vUdA45KgvWjPPoTuH#Jqyxp7ZEdQ3rZ0<#V;sCBYGK+R*_Z-(zQ!w+GQ;jEC z>XexnXm{kR?tcGRz|F8Y<2LIr1KK~j1t+hP8;fScE@Jw9OMHIL1e-8b4sK{eC675X z)*mbreJx4AZT(RPp7ag*FN z3&qFn^UU}iS=HdmXDl4w;tO%RB_1K;54OGT>|Gz05Ru6-Uk4yIr%tqPApOa$U4yy{zkCqtG9d1+=ynZ~?(ZT0og+m`rZCm%nfyE#HPrj|DR{V?}h-i26> zmrV}cJ0tyjq6}^trkr-v`iT0@{-?Z(u!s9bKc6dq+WWcdfH=M+LM5Cb-@ZUoxPgA3 zKE3;cvoe*sv=|qOH8(%%{VjO#b~R)%>t4+g1+6q$FI`X?ci# zd))Q?F7mjTBs}g))+FU^_m*<&S9Gp6!fAA@F7^b5$yqvEMm;$+Vn%7LEUwC0N0o=yd+nHRFZTT=pk)iE~nmU=Bwgel6zIBet+U1dJtF0T1mZ7 zX_pE|4)@&IkruA=Z!z*&7=-dBOt4Vg$Ja@Jh0 zcrb&2f3ZeAHvf2JIpRtpUS%cCRS!rrU+M?asH01up_@pvhOQN}+YPdV?}Z_d%#XVo zW7(LJkKA9L#_ae~ia)f$1{jd0x+5IUo4%2ho|}SZ(fY()?)E!WWQL+A&Shv_PHe`@ z_8wk>Zu0h1+gI-iD|!$E;z(dvIW#tSm;0T9y1IJd%*NOD2u^^YL+;O?Uq61uou^Rb zu(jCYq<%D$dhxoU7MfN2o%p91zbj|EP9G*JBqjCW%O9Ebvf0;HWAl}pBB>J{S1UHR zYCRDn>#}U3->fukcXMusl(P`lzNZ9+y*llSwMg53c&$_ixfQ(hUaZt%H>XrNT?;#N zg-u9EsE}Uc&JoC}0|X9gh~$sfM5w^ov)Ju-0JADzPC!XIHoH*fhKCL7m3}47Pun8+ zAhksZ`00<=v;NcTH=noZ3!)()oeegvB<-EwfBw*aGBZ&-Trc38|MS9V?-{ zjkwC~UJgrP=brPUd5`;~Zw|XxN=E0nT>sM&|JX`W=h378ADU2v$G9Y}5l5eV^Dyw`JR&3mC&DO;Jv(#p=;n=JSJ zRok#KCbQ4!34adKb0*<45n`6BHFZbQu}x{NEw`Bs#pPwV>~3sq zJZu;E(oC8E;_AWWAu1|rYQp4!Vp0{Bt=B@H*W-89d+;X)ocVYdD^&HY#>QIHbzCrB zOVIloBIZqe70ml=%p=ApRC@kk*zSx1(!0c&9KJPCtTZumE;*Xx?x&<^FVVt#Emo2N z0qJf$$<6H;iP9dKikEkNxXquh7+gs9$3ASnT0Fv~CRv_gORzM47^@W1XYRsLmU_6t z?e>+8I_RZ*%?2Yf9|FaK5=|4=g|rsv0nUT}AxZ%KhbaO7{Qts~;0AD1{f8SbDxf#u z|0Pp`)<4{MLE$YA1{*Q?LSK$7;)&Bo=$jC9*Q=gomZbXIi_zp@$Uf7=DAKQ(rC2{FBu2aFap@F6j~C)&9JK=PIhVGa{$vHh*FCy_gp^dD!_C! z;)#@Fh=mqn%Tuh9Eg<8S>iU&KW>}7s+asH&m^eaR$1Wkv#Z^!xP!xU?yrRKlqF<@s zDPBki^fcWHkrXLJJ3x5gW|3B$7mmPdx$9~6D%-iIM0NrMXrA@=fmYyY`B>6ZVF`nu z-LfxD&6U~S8(k&;=NUTSnZ1Q$Gi(nyZvu1mN)NA6J}(x$wZo;JMKO?1u=v~5*^^0` zbLN1F;;;AWUFA2p^EM0iCW_s(MvJaJSn_>-@y>!cLIJqJV)YvZX|)ASEAx9?nQJG0 zY}zsDtSG7mx%n9;TjdoK7Xg+mp8Na2d|~l!xSk6pbGV3bB}K@!I6>4)Z$iG3gynb7 zP-O-P4=^(X8Mt2O45+6>(>{RLAOIuGOb_S78iVC5*{T^>DwXIPL`VO59AGUQ*^~i< zp^%P-9c3_qDMh_!$QZvW9;m2&W+SbRkX7Qvav^Q9BC|>IMtvI}E%nLB7d`e)Mn1)F zxT=UQg)TMwP7#v&gy^6aYE9m43FV`}s#4;T7J(EYiuq zLQcULo@HyCIpY>jmGRPVQc|AE5~W8rApfTg|Nr@ddAOva$kqg=oKx}+H~ifWA62+% zflkwT(sMMXe2|YUtKVsQB4p#gj!xcQmY*^01-IrmxNVs*0dBG|XC^4#)DwGENwg(!*tEu!X(3zLgj6ie@L-bZ z<9HtqT}x5h?%rY|$H<97GV*4tm{^GAazzT8*nF#JJY6%l7ao za*t(5XV&bJNrtIAT)zG_*3JnK;*;B5++)`aI}Tb<6nVfbVy8%|L}N5Ag;6hksyT{WrVui@AyN773uu5Bj9mH&ya3GUZD{YHT{R&TTwv(m z&R&o_3ogo*V4}h=k0Ivt?MIgzDHJ~jT%lDSW=DOL|L^xBPBw7R_21%%Qjj%V_-QGo zO|R#I{@kiR+Rt~QV4(3EnEGBV^jdSr%WS&y4_U}_Jr}$)>{87gol;I#Ci_IKlX`82 zH^LWQB#}#do?+PbD49=kXSE7%C`0Qwj}_JDnOf(Tq%$NVPfHq&Ul+1S zw&^_C3!VU1uqW&MvKiJMZ0Ti~agbu8iwb00zuIL(BXzFJk(V!g&oCyJlT4$MPIS+- zDDsS)`Aouk%8!1Onu0=!N9PoGX@`hGvU;TVP0Ht^#o zS)K);q&BxBUbgX(rS-vA0P$k_F0IZGi$h(n$RL`KB;s4qJwl1?=X!;^I>ObVNw1xH zV9jGH57{ngvnroA_+leftpXnwv3ca8D3~LxFD9!G{tPhb{T0&F;kj2u(t$-35b|&! zWN)^weQ1xvjzsmt8ld`Z7xgpbDOgE`2uH+S}bWwF&@?#VExDO5|QmPI%W{w zC%wfnU;_~=UNif|<+#xU;C+n1`#jx&i3Qb&O4(D_h{NiG*(_+=uC*tFhTN6pA7f7~Fa1|^|C7mCAN~9Sc zd~!?z9X91nI|E|O>9vfTT~%q*LtKiKs6 zi;womRq74Nh;|;pb3$r@-0E*AGc2CSE!J(t4BG-4KA_$ONx#ph_x{1+y%z5nI#(^a zh3Lg5EgRWQWDdAilw}E4OR{@&v*(z>Y~n7NImGlvDJ}nJnynwN7;RZa}j1D(>STb@;+>Ga)23iS%V%qix~B zMy?Vy{F{cC%U-IzQ&D-$mYmer(P5y=e=kZv0$_Z^9#neVne;egWR2xDV_38l!G1@C zy+w)?5}gfhSl3a4m)Gf3ulc^et?=;@$!#$Vaz8-qJ=mse0+Ui}6+fdftti4?{Xj&i z4R0yx5lR|=5Iq<_wfBnTR;+NZpKS{!cp&j|)N#EhQ9FK@CBi^6u>4W z&-s7A6}?3EIt57?EWa;Qssz_4diH;wT{dyan4}}la$?M{Wu&vkFqZ#H^BxSN)LNu9 zEgS81NDtA8wfY0)==aQ3C}@@!b@`&yO^jCY=*hX6fmFznhI%nAgi^aZ@Ie zrEzprxrkxYZF{!|%rv33{x!A6^(Ah`$ER{=G0{UkMj1v1`YoHEwrf2f&wfHL8_-C6 z&bAG{GnBuGiSe`>dZ~H(x`d|6?Skn6VbDvDDk?lsqzfnn{>v|_UNOfmCGw&?VM3%y z4en#pSS_JROJ~R%=yfnlcMUp>{F(9o!d#VQ9TwVjN{wJk58)Hy#pUIMRakefMb(;f z+}FM)mVRB=;P6oLdvX$!dr3~MSr2T&-pAn`km(#)MFoOVfh`UxVbz){7UMz#uY{?D zBTM5HZO-xBZOG!FqOXlEqiK0Q#cx?=@WG?bW|=eWWtq=wW+PpX-`fnTiC}(O-TJJa zEto`(<&AQg3#Xs`90|L?P=D)&a^BHfw*PDyrf}=)FeNWGwa@P*Le%M;7b9J|)Zeb^!T%WO?#)*R5k&?Xt%MaFEylFb{Is*)PuukC z4i*s#`OLSTTvTZDRag=V`SM!HKFy=ko( zf?CBU-w{_WUaxUN?1P?Y>?=>cDs=gFZm|7~`g~`~fsG|PzirGhDDk7A?)OovV6U!> z>n2VOkiKJ2jii_ouTbM+aht(0j&KKgJt`pA9<@&?-bkR3{KXPiSbdE7^?l6I@isN zasL+zKNbuO1*h#ulbi1f=!9~1&Ch%i4V2HY1_i#cp(nCNKiZ*CUaW<`iDAu_k#U2+ z{nfGH&=Ik)m}cb|q7z~4z?*%9jsxq;9m6zSTFeN9nl`oZR8Iwz#5Zq_qiYNjUOX4u;wX;u1J;Tr3y=$%fQW z=cZGELz?vyk;Dd3Tn;!3ykx7@g&ZA?&g%{@rEUn+*;4rF98`vpb3SeNI)#eiU#*l2 zq<@LAQpqqN-Xhdx!?5U7U#Ej+hM7D3nG)AJ5i;&5+Wf@VB5j;}#>_AbQ%q8h2VH5* z$Q{f`@`5LCvAhS4yxU1-QMH@HBGl$&(h^%Vwt~uj4p2r-ssFvzmE)!8-LZZ@b zR*b4(kpW`DeP~quAbhP*5aQ$G7AKEZevmX$$bh$CC0-<{#e+gIT-V1zdhVpgqBu5E zqOHVnTyhg`&ZC3Qb@U*9;4C5f=CLboD`Ir{|?0(7jX@MQ|+hN6z=7fuC2 z;yL(wsuAPsiX*Lkk0;pDt4Tgm=l3)0_Rf8$HR6$q%5=JVTb!P&=C|eJjtwcM93fNm zT_*o+6K>VDt<(r(u+ppV@N27N> z99&yO{)>=pWR}SLt0HzLq$w(tyeBF=({M(^N@fW-)-AJr;f^L~eWvWIA~@c*K056M zjgo|48W|DdS%Sj9?}qAm_nYBwf>^^tRc*j1nh22HHl^L(VbFgJ+oD28A__IDc}$r| z%SSB25k5iFGcg(GCr)u#a2bl{yqWn`w$u&xTF^FJxn6X8UHa~Ls7=_Nk2hSWc5TaC zGHy3OX>XBB8h(&h5lV?aSXf_)TK~SIM0!Jmqy4L4EkaqpW#_uq^q5OP3L)EZJQ6K^X8VHy-UabICT?GeiVx@2*oXi{_Lw;^Qwku_v`g_!=_LhEH# znf6ohQE(-oLAZco9hMe5=$aQYyd%<0~>E5fr&yz{E7upVc zedn3FR~{~|@9*7nerpsfzk#@ePc3r}+Ges)?(BEi2y<^bCPjl@>~iW*y{YGPuHo#R z+o~+dg~*Kvcrcd-N2EOGf>@q@dIvXsl%yNM!x9DK_D68h97oj?sr&*Va)GM>n3hW< zTW?&KxBj@Y5yU3CD7gn-#$jfeWL5O{1`5xGd;}L0bHV6XKDmB}Q9YcWtR8ia}hP#h`NSKo>t0#eX|W^#jITg3OpkR7H(wKON8FvigCTcOr7Eu z?jvF5d_Hb;!wee<9B}Cm`Tv;Qz zoxQacN539A|G6+Sg2ruTx%qNk8kxN`!buGJ$*+(|f{ovLbR!R_*3s87IIy`&H^5ib zaUoJjH@%aPHoF@Z`{b)xi8{qui309bK$$PlPVMcpFu%hf&9e|mw8-IB{Yml8SA{)H zW0hUhbyPWyH|b+Bv=D7@ETbT6u;vx2s}M&n*5Gaa&)l+MxW#b&B&4&Mcqf>r^f=lr z216Icr9my#)X7vp7h~|K3ge>VD`(l2)tSSu35=pl2bAQdhe43>`rsEQI$+3ObC#SK z?!cqXbX_;Gk?}5D`R|w;X5VGgx%=l95Ac&APDLLwJ+xpvw?`N_ZMgdeB0P}k;1X5n z(+d7xgc`>8kl!aoTvfXa7KP<)maa*Bu}X3H z@vUE?w-aiLn|@PQd3#It%%D?rKP;q*f1BtSoH)-g+D>yYV9D1L6L(6jqqdLseSB2S zNZ%yV7XyJYH*b3CDlvG{|Dz=X>02|2AN1hpG%9V*c~jFR}trXn;$sYP*A|P zk#O{x!4gq!#^AM`Ss*;cSp~D9p52nRuWbWy(cX2K09eWXzq$Ejz_z2g+5UmDH&{E1) zebI?8>aWQ}7A_872a#bh3^+6)8aJ=0te1)7w$6zmfwgIh*IPCPo_EhUh$AGrnDbw& z?J$?j96H7Bwri>~&eEzxEHjak8C(9uV55mKbYK@g*o%rnvNRs`mT8%WBIW|!)d;Fh z0;Db$-tD@{TF)moV5}CbaRixI2tJDcB%aPcK%@FHobAdDs6EXyero3<{c;JU>CFt( zFdF~y2K_D+@KLZJX}1CHeg!+ggT({#;isOyj&LRC)_I;KxVd|_A|X{5atW&;PPI3s zkZHkplL(;_sO#`3t8CbeqN2;{VgY6~qJv;@D(Dw`6kXNxxF=oOywVeMv_jCm)XFoE zoAgyKQR6B+w_(e-31WLk{ZF_jYp^qM2V85D%C~pW)YmfR zxLzIrq9hJb-~a8EBvnRiAC^NNEmyPA>Z)T#a^wBVp6Z%Fht3qTZF2c9fM7&xDf zRk{_+zJX}UMd~PbWO0ox$_Tv6HRVroKnnW}VuNcvpLEVXr<(gnsVP7dGV@g(9HrjG z?(egVq!{0lk!B|9RK&{hiYIwKnR51C#A4ABt~$z+Tt7%On2G4(iSOctKwX``ZV(u4 z`1@4AdKX64WPk94R&n28ljcM1N+ZpX5Gq(~B;k99)U}pB%4%oDR@;QnA?559Bt+){ zH;bPXrbMOl+6L))%?-cwknBylO-d6rpFWLTM;Gghr^-N>X9g$;aWd-22uPCBBvdmg zh5KM!lnq++^VhXZYNDJ&Tn}RX^(6++p#&#CTL91krl- zWRo>$uVD6*;0Oecl+g(#edXS5kEBY@p$%E+$BWO`j^`&WPGIb5-b~Txxt#di1^*e^ z2!eI$TF1moE%yFZ7x)HD4|4y~G^$dwT-MA$G?xnE698(y94#pX4fp>z!`uPzqA#}6 z+vzdV+%S%>0lm6Fp~xGzF-@rUvW~Y$Pa7LxF{!O!e$VjIBqEgPN3RzLKi|S0a#~tq z5ZEH9lUsW6eYzQ59zUcc#08XMe?gpx3^mqe-u@ zaV7aDVGQ$sw0EK@RS+HXU`*DkukFW=DUD?IfRU`d{EP@w7KF_ONuZedY$vDMQS9I#<4^pjDlkO_$DcZoPJ1~ap45M}=6*zGQbcg;!BRAoDH)2m8B?Ne8S$^^) zIQqEe+#i~J+NbuL%kO}tPAG`g3V+8zNo7oh0RsQWCK#Zq_dLGqC3>A?JnxIH=Fc7g zz5N1L3i@?-a!G~2lx%BDQ6}3{I4*&Bgol1ApKAg=kTWLo(^nO> z9cwNzYK2ps(T-G$=ZgkShPLb={l!j;DjjEQhG%v}P*?dyYuK^DixoeKBRKwjBZH}C zn!;lI%PVjFBng&oSgtM!MmjntSLCoFr_0E9S6^0Un__+24xobDujSIpgc1ylj6;+7&vQsHeTYLV8!(pW5^)Q4-|MH=Amu1uq8N|H%KH zUGW}*BKr&I@%ejpcL|?rsZOcKvLYd}2APL1!V9#BA8J-{-NzrGXV{m5;(6wypz$|h zGy~4>UWeN)Q0Sg+3E7CSZxHK&S%t;Aod$puKnbhA*20O1_|J~T*-{G$tGE1O9(iU? zue_{b4wQ)#sj1t}1Wn}dH!tqmQiWtQ3S#+C_20RqOlM-x1yUU*_MBlu9aCA=ryZC_ z^FO>4fmT5j z!qNvUb_;HjJ-!G0v9{wN&#n0HiK8lh95BNZFXmam?=Qb8D9in1CX6ZzJ!tZX) z3r%WM14AkgV*g=$2LDwa?i8z~#vh9^m>D$%oo#WMx~TL@apP8Bwu@{&klC9oLeV~q zR{CfJLNeY!qnL9|yb$@n$B^xv*$UKXh>)+$qYB!0w^4JwpPpgr7>?rX%w`pmp^6>V zyy*aULtPkAN6TbiaMcI%Tf;52@O?Hb8(?RMwA{NGFG!>3shOa-4eiD9RVoSe1Mn8S z(LYXDgy*Ip9k0-ypaT~Uy;P$tgBRqj2ze zmV8X1=!+l5k>CAhNp&od-NyZWyu8I8I^V15F!Yo`-Rv}N+RFCkHec;GL-BK69$zT(IgGzcJ!*$*)yYGKaX|G8$JoToa>mzY3nhVU9uu8}J zkLeNMi$aV!EjFZ2?07^w=`u^_$JjslyCs#=YA`Hn$)Scl=u^X~Efeb0?60p2+vkv!0!a zkF`mz0W9y!di)Q=_gxKmt!FwB`f_^cM zw(CGx+4hD+fbamr2vs&wr%)G3ZJY)snJ5{|l-Zv&EcdUBav$~2yJX&O%D&$*fj)l` zHzS#D#<&$m2o<$YRAXyEIqnL7$P6;P;*#}rzVe! zahsW>_-0mpTGDiTr*!{pt9Zb8F=!?{*O0M#bt6pck8(VZmg1DgT&AXR6l$K~d|Gl@ z!f)B34es=9hMF!(UANuBiLWr2k1?!5&1NY2CGweWfc={+D5dIs6#Mrv@Pkf@q0)lt5R#%C!Eegwie9 z)vn`jNr@cg_IWNNEJa=Pp&f7S*$J-cin7__Om(zbWA631pI7@Sv>0BziIe>itkN$J7;Elo?p2f=~KY~0PJYr$* zm#J3Z#K#TP-&j?Zl(w>GN6&bg z#6B5s+ecP>-#H%}`qWqQkgl@ixw#PbRb#e@R&I#giT;#m!eYW6u)i`oBiD zq;h$-NEhDSH|+u!vm6MPUnEt|x#5$Qpeq{YI^9f{I{NxJQ)n`#fVjE^5LwchNDR{J zBv9L2-FDZ>anXTaiWbIPhH~p7liZ?T7s;W#5Nv&26T*z>AstKlM{Y_;flxYrMi5;` z3b(3!JfIE)CvwrrcMFc=Y|@yTBRQZ4*NR`Gqc*}cV^_jCDaUcRzyz4UZPyuR=d?Mu z-0N|(oa=X%Upf_5mZY|6F7Z@sV#|I-4vCfR_KC&1ZXnjtOP2HCi3WV@yNx30z&}5M zSf1F(RE^dupeF zojYLo;p0{4s=gTe|uBOO$a2OSPsHL7}I;H!+*QjF^w{g|Dpc02lW0Z zv00dX5^(k`z9l--3Uc+WHc|A+s8M|vq-imWD>fTk{3PC;mQ{TNUCs+27`;wJD$e;N zFdS^4TQ;x78+n*&W`#~2f0S7>c_8D7-W=n*CBO_+#iE(W@zAniwxRpoTr`ij4hFw8 zeT0i&W2dC+=|t?%-9dGdY_g~oXg*w4Vx@l7bj=ogI@2)L@s>=PW0jNxTW3sth81{6 zEv~(60@E4a!A&AeV1i8yM#LyvfKn-5$OV*1bII=qPWc&-O{{ae4sw*BN5gwdfitz{ep-ojljWvZ5G zT#XXW^rrUdl@yqruwjzmdWZbxmK7=70@mAsMH(@)u5hr`U7l_%Y zUU~+Q>vqqyP>e3cUtImFmNZ+gX(;a58p@H#^!mLf>DIiLLOL!zM+7A(EHl<(J6zy> zzdyvgPpBomyliMw*rxPO{6Vj6!^@-k){nOl!pc3j|ERyREh=dZePXpzEC8OAzsU!}Bchl8up~$2*N0#IJZPaoY99cMO3z#Ju`UCZ-&S&Hvpqy>` z(pAcj>S!%c(4&KUe1n7jk-e3v*rA@;|r_9Nt_5p67;N)^w4K{gCe&ni7^~$ZYd7av_(< z`9q_w!a!7S@tD;`(g;$Q^P70;ID# z$%5_p68G2+XuKjlBlTdjD!?(h;O#AN$}mLg1eOa_I(| z`p-P7L{bL$Ws`|z+Kqtpu* zy(BMmwWFx84=kJhbp9ad8Prh~*C}~!-Y}iMft_>%l-&~r^*no!K#yHvx&7`=8NW$Y zmI(Fjdvtna(oUgZH1ssBQpjCI8>;Oh>FXgd3R3{=O8hWn1_C*wnvN-N(Q^&?)U>aC z+>M1k!lLMH^zQV`&pD?x+7C+z5DiLF-hIa1MY*q)s6Ti&;p-_9X5M%`@Dmk}v|qPT z?!f#}?~}K&Pviu@I9nOK7z$j1wMjMwEO7cC1YUTQRkyQkm_Fc;0BkckW)M(U1E^aU z*nu+96rIx&^BrBgKG1Rfr-Y+Sr*tjzt#Zj%ay#6sEmm>1Cog03YCf0C3?YZ9tHL)kO-&&knAxuelG@%KuSq>RFJLrVClgPYyv?z5q9~b>Y-xVf#pJY&1|Q4TS1XyPekM6tgo)vb%szEN;5L zeHDP&(vAaFa{qdKmm?@8{#mU2hT|0+I0WNU+4RFqUq9&v83|6z0Z97#bNE%+FH?qU zKKAHs8X7M{$aVr9xh}eLKh-|K8P=C!;Wt+$QM)5M%GV9L0ke9V&cO_bRN9FpL;STZ zjtB%qv1S%;$HJGVEO^4BLvK?FIT@a)OyYiFY@E-z)USOGda` z+}%5X=Os5BcRM|s!zO?&&&pWKp~^8cUn8h(r07rffLB5EbcA-L`siW)q@)&vFF=gC z)X+yy4nVBPz0499;B)vW&#(xT9RC}|7>8g2WRSiej5qU>!1}$hmFvJ(b;l9o5|l1ItSA3&t`PV5UmNVb%HpAUcMSS1tvOz&k@ zak$LCW*9Zz_{U!a;gdGEj?bz+6FWV{v@esRRWdQwcd47-!XJU+pw%*>)g*0u2jeD= z;q;4qb_j&&vaazz&_!VJ3%UQbZXs!B5U=t6p|3jdJ`My&MUrTIf9IkApTaGMP<;)1 zK5pKIVm;?915*G>Ip<}_@!Qh`02Q7Kw)i}0DogtI1g1E|*9y?WL0AU(x#p1fn8I$Y^mOOr84B_Jx8h&Km z^4WHkSvx?0D{Pik5HK%rfbtxroR}IZ#Jq`-0pM~T1v&t}&nbEp2u9Nyba+Qm&y=4Y zDXFo#KVG3o;&ARLlc-gKOc($#*%LG;H88l%d0=pSV9RAANPTk}__3AnOSpRnYmd8X zss84Vd!5)TB=0V`Wa7QVC)Ma{(Oi|#_XdVXjor${ion)_p7a1^ofg22(MNk0} ztuJj*C5!a6$m{t~oSWch`zD<1h#4XGNEw|EZ~xhmDS}NTU6D*5=VAL{#hT!4cw~NZ zqQm|j#%(a?ijlvjmc#kTxy92NirXrPK8G!8wc@&YrdI$|i`g&Xn{wUN`cghx?Gtcz z;oJFQVi0I>#RzibV60}|PFlwoRu zV_k^(iw8cz?-B1 zOI!C=Jov8i0Wx;=-|cu4ZxKp*l(GjH+1CQ%^+n`l_;f<`4MDcu_kw^pWl^QMardi5 z(-YTs(tmIs%eU@uz)bL22k;BgMBVt-J`op0HilN4D$SnPxw0Et#e%jlfnR2HehxU` z@i&0+4NhPI~NV9r&YcsNdW&!9JMe_tsMpNRnU%CSv5x zW-+k|RQEDBXnU^8@Rh?0`4)MG{RYt#cO{HvEr;^S0REn7U)+K87JiUN z7WvTwGOsYmus8uc%b)BQ`LNW;bcQlZcep~rc=X%&yYg<}M(set2g9P(lU~M30%z82 z`kHImvf1KAYk}vUU%Vu1>*zJ z{MFupo^+nAJn^D`+h75{E=!gYR0Y3)1=X9#I zh>`#B7bwvFU-%2cf#+19RKV}2&SB?(KQxy#O*BEE+LYUeW_N+lC|82H2?!J{0s@6c zfk68d;O`;`6o3VRmWjZ3b3h>OYdPh4;~9hAa#+qOdUkm&UjjkoxJ3yd3HX zKi_7NJihA&6_fK{qIEa#Q4E_uZ_3Z8&xgDM@=7lnPNrJ0tp50>B=gog6#HRYtIL^V zy8;117efx8YV~&RdXQ|3gfCAqej(To(~WNQ#E(G+O+Io*U>li|nE!-JKF;IKA&fLG zxmNPrigGJANXCnB{2dJf~KT5H^Q4iXE9ABm2+@FydBFMO;559lL`b}e@(RBP$@5dKJd%5EE z=`7LLK>ZXhUvOD(%~9-*d;677>Jbj_ZZ&+4>t(cQT@u>;RVTgD{QbU>#5bjL?-btN z=vAXBZ2V}2fH-@)FtY3Au>d(5+m}&|)h|(UJXzJJhT`5on8$$M@#)j0f?fxkvrj*L zeFetN84KnN9}I~YuAkqQ3KiX+ThU|?eOR8gqjD-jmn+8PG=IXoJhbXVaNX)exnX4C zVr;;3WAAc|*wmJ>%ggb2Xip&1eW)LUmC>K(iN|K~R&#R#p<_kd?3`!?O6J+kbB0sn zY^L>k(GEB3W=Jf4pHLm*E&B&y;A7p;GX&XzgOAT7<{thza{LnV<9>sc_mw2uttX%% zYqP&qa<6QG4ln+0J$(2&2>gb}L9sf9&f@N$p{L*X!?U%Vnndz{Dyr=TJoyn*eK`-F zD%^U>Q2tFNi=V;D7@yavOmuc)d8Y1-cqyvrWtjus=d3GsZfCaK0SYr7vYbDwJW$|+5BbbP5n=8+=Fs7H{E+`Io{qkrmor?SSLUhEIW+(wVV zXV*Ri+&X&Gd@rkM`fCF)pGVD=GA5j5vJB zuoUO!%Y4J8O?bAhx%cI#iO<}-52k-Loc(?UKn-k)4u9%S_1)f?>U>N)^0^9YuVvnV z*M5xlh9QUyW>lw-w9a)G$wi_36K;IaZ03Fu+ZIs8K6bY2gTa(1lgtlzF*!8)ah4mM zbU^_Fch`NKnTcgrye`i=DNKHu`To4y6_HL+%NGv}c3>C93_F%(_wd%wF@-x+H|kk! zj3}l^OV+*>yds+}Lty6{nzJzrXTCCX!B!s2K`-S~@A72iHqW$<>lMZj)H~;x1jE0r5CSk#y)y0K)Ftllv`F}|Js(?6}U|rnZ z-Q7KSaCdiD+=B-X?j9hxyF+ky4I13tNg!D8JLEs-<=)4;PrI`--Bn+GRXx)^U8O1- zBMUx+WKT_&7EC@G5r#f~iLJJbwQbW&;p}WjrG|SI>r62esjkofzmHI$52Xr?DUoC` zI5QDYZ6}k;K?iAwFC-NV&xfto`E?IQj6gL7-GzaAd`6u>Q5{QI6voZjd!N^SS0j-^ z3ultO728BJm>g~?Mvt$+3GEP+BDokU9~Lki2s2OYLBl)$L&Uo$Rm@_k*7#d;vbm}0 zdPCWUoVYO`!`4TG*NrjgCaIE_-zSP#*v>a5dJqV1j!*h za;hn=$m9qLgtOUw8|(w36N-i3GIkn$iDAQ5)*3B}8)f0YPMe1ty#KW+UXX~lpiu5o2WB2 z4BS{g7_QW0QC5BC<{RB2^6;jJlk}P0!gN9`5gW?$2BXmTyEsoh{!hzc&ZF z9&t^zt%|_O@H!<|F$)FY-_~}=?!QzI>N%5h_ZEJH!!^fEfem!8R)_rF;Dvn~AS-jw zisT{|ooQ&h({$GwU3=V|JkIy2A46<8=L-az8H@n1%!XGJfX}{0(zmDNef2^*NI0f+ zYO#rfnHpO+2-gUS^F1b*ekOIR=rUgnX9R-^b{L_XL0!+rv&yhR3lWWsK`VQ3MUZ$& zF{YjIWnOr$T2s4eA9js;YViWEhO(i)kn5uM#izT&%^XKthrv3~Y503$gQ9+_MOKMd zcX~%Z0e6h}&qgt)4;T}{(~lApAm-DTnnoT7yDUlykjZY{pN($uB<;@&ulJy77(50AJBPxn~<&Fy;|xl#O}Mwj_Sxtg_e z_)PEM11}Pbe@=$fZ-N&xHkO@w{PZ!!C(w}3D^Y}M!mY5e7$~1JAa*S-VDh4No@Wqd zy&13Wzd1>Zdabx1>_OUv5dHI)N4L^|hP75A>b^a>&<8Nmo4N@R#Aw;S*PrTzo__^0 ze;MK{P7#PA14oUo-AFs}$vtvkL$HXU*B;pO1a~#voUJ_MC&_54ps&m>2$*j*f|Ie# zD}hPH39E9VKiv+6RDJne#cW|6Bn2PUwjCMt%DwOq&eA?%{P@gS4f(?X?^iOYhBnLW__qSkK=_s9=bBW&m!wlc&@=uo~O&;pT=;YM#2L3O|^=bPUvufF28E*6Y zT;fELi;{?F!{ahQC_jS~>(kJPWj5#~7aoq)xdTS1sE?n!({Td#5?RKvw~|#X2V@#v zZ^`T4_^jv@n9CX|c3J#~x3hT460>8gt)^1l&DSjxTE+R+b zL@gVa3%gHa{{fpg%=%^jb<=R<`WWFmguJjpSX*Z4*^PjQ76Vx<_k>S9X(dI^T#NKt zqc6$!TqENUBpmIJT^&@N+)A(Xghhepb-L3WktG z`v&Pkj$x;{mrwR}lNIfnFKX6=NyJwQ2^SYndy5AX)d5y(%V{Vwet3x0mA#^bFeF91 zGjr7N2|*+qyO<1VU=Bo8dYT$^$V;kDWML2>q=)4x(?A^&SZS>br}n$hPcdy8P?kth0}cj~0!cy~M0&iY56U-=F4xGlqbo6+H$AIZs4WKuVac#n7_>l6RN{+1*>_>I#beWH8>?p!$4Bzf zBnsJt{E$W!)z@8|yMtBZ)E?_!SfM*Q%(H6vAyZ#8+J==@xP|u3$vI>dk+R^^)8?pz zAr*t-okJyS=AKA%h!MBKOjg1UdldG7M62ZPOJR~Qo1ehb_`Z=qgUG;wr{T(@u1atn z&w)AvvgJ#g6PC>0wO_r{lY9Z(`K)MXj8o z#p+#1e_?`A_GL#?>Bi*0&G$TlY!Mm;e$C`8OKr{1oFwnFws3Z-cvy7mPNYqa`3h2a zp??ft(r1mLwE3W&iM>v|#x5nbv-aJ6``6XChL6MS(%(yP5>y|_aj=9?SECpW1Ke7c zTn#_OQOce4eKg!z0!AF zy&~IDG5-gthKMD&DmwEL3&>d=0lQP~u*`_$LvqRPt^x(!XoPzKq>LA0dF|G#e?oVZ zz5cQ7r+~XqMYh~-#NHndO#r391y}Coj1FD9ux?&@lQXp%*>ZD`{a@t`(%YG=1_ITfggs7H4Sz?g?~Y z!+`J*7?Ft9o_aEqqLD%Uc^?YkzS38|(K@L4v~B+2re%+sv?`qf-tl$!ulO8omVD18 zKGEc#)%fHgnN8`3iWWCe=pPY0sKhviHn-G#GGb+2!hS6Q~*IWNc8H;b!0PDze^g`;(Nbl2lWt0Nb2Z z%L7)S?wvk{<4044Ijp=bT(hien4{6XvNM~!>(m-5zQz7;+EbC#!X2umWUAcbYI$)N zq&!F#EP_!KS*WhNo^RG$V{c(idlB4F-Of-#GYqiLW)x2%Pa5zm-%5JI1je!EhEA3# z2b|&a5QhhImkCWs=-|Sl;F87m$D;?LM@}oA!(=R702$;i_tDUe=&L=**iifQ(pjH`J7_0xgy{S)vxw zp%h`uWHJqw*rZk{+$#RWx+KI<`xORnRbXSlTp~P_k(eWE+`sxI+qPu$TD|HvhxS;t zWB4%Ke9ntz!YiHvdJtVZ5ih!3WMag=C-TaTM3ADB#h-roWK3@_nGOmo4vPlEHl|;s ze$D<-)x@(ca*~Flb;tw3(4eE1I7^A zXPx?EB(0054`8(dWsJ~IiT6XVI|XqHZkg;VRm4 zh$t$1(fE-s5XSE-s zzuV$;9i{w(3>}XNF$1;GL>FzfS=fY8D-W1<`PD5|GE%)Q$;g>MhaMTUN)oL3FE2teQ*3aiE#;rrE=Ki7< z$)nV#OY$hoy}y;H?(mB0BN(NxfHV;agy~#COL%T%V_4+yqY63?z0M+~hj;e;Nqh{i znZ^EbpK5nu!w}h3Ivmc3Wkj#LaIdL=p}XEp8II+=CrG4xe@mOHl0<8V;6yV2R`2ZA zg&#u|HKJG293xWUBXr&Yf(yW6yrW;MFK>|t@WpFIFe6GF^#^JM=K*>V(IVM*0jvY* zEWa#sX;1o;celCnnracVd~FpeEfMvi!jVfLAswXZ(vq-zI^Csx=(M2zUyVXVrMWO}8 zPAtjc0Sl<;rz46Nme1(vqLKE-_V)IDy*wPH=(tbT#3AV$cOI)RnqXvEk6fpFNVZ!9-HNoHHPGcVV^!yn2o#E8HP5{QoKgv`0HitPDyGcby=^{y< z?}=3#DP{ACAfeCjV531ddRJAYib7uEDh z$O*Z{3HW9=1_IuOQkbZ*VeNhSWYv;Jfcuh`^w5c4M#IhG^t#K2DpvOrvFG~5qEqnX zAYl7QU1|}=D!2Dfr`8Yi;&@%Op)%pq3m1pi(bMt3m;R5|u%6tZW;N~tbkFLBKT9xZ z!WfdT+mb2jqf!sLIE6N7J=D?-Ci;gG(mEU$ql&QF1npwZry%0#V5IADAt6rg8kEXr zt@s<}HlW9RBKXhgP$>iE8EPzkqSRQ^QGbKBA`FI(m@kyYmQv+U^dbsN%nzVF@D^J7 zy|%XmcjIlE3a85Ruxv^A1#-35u%&*XpcHH{s~(siMUn_^zj`Ch;Ip6;BU|Y{5`ow3 z3eB1(AtDXzElJdAGQ~tj;?=NEH|B)kO+79Et$)+f*UM@+J@)yN*Yr91IYaGotOMhY zdtGxm`pj|RrDVJ*Kz^i3Yo)r$v9>rqy8L%?qR#R)DP=Za9O)jx^p1=qk(oqD$^=_Q zZl|T&-8^+gM6Hn1k<>O3e2+KtHaZ2F?-+JWhP0*FWtUAP|YENUs8Q$Gh!7biq(#<*XI27W*)h&QCfSs z^I5m}^P>_4qRjl=RXx+3UbG)J>=-Xni6fkIl?^kwS`6!9L_Q5AZ=7G$G%@|A->iPZ zfZOT(Cu#0g8g zJ~^VzY6q5gr8KznqMt99y2}oIAD`iW5`{>0LXYHr1oFXg;I&8KP?1G9;Gev{_#`l9 zCftsXjYUR8t#|vu#*gVRs?NPvSv0j!;r|=sgzgw?zSLAk5I(!j8TNgaQIF_^i2F~y z1y+nkZ0RFa5wXy90UxonMGQ@pBxMPcl4eXA#b4ieBbXf*7$rq0NNcjb<2p|N$}3Jh zlLa6()?p0`vBP!3A?=g;mzLIrgBz6 zH2(J#iWYhTH495YO~fV7Rc^(I-8mRY*9|qX@VSJQ4_U5pS9EV}MXPB2ei=Lahu3V2 zuk8<2Cd`C%lwzDq4q<m%TU4Fdb{fWlhsieGy`EOU5Q^ zuwvhIF-?_r0@5@6Quf=r#GWO!HdBAm4{I-ZlCamuaku_vhv+v99*0|mXDu$6 z=jg7~=}7xBO10Pc@aY`&%{Cj6r6I%5&9rjvFPhX)JPT00WWr{U&@6+&CZ`=3>UrkYmT za#y5_8F?5x@{ciH^BSTr8b9U}5)nQr9k}u@nG+)pvn^v#^4Q^FZ$pxRd9nc&EyYw4 zp&y(n^f4Jh^ap-hT?n|GoF z)5mi3LZUmJx<((~vi*s&w9s-MWd4>~H(_HOLzO z4e*apXsf~|g7}E!e;=l;$ix_I@&eKmb>rlf5){#VQhQCAepQ94a_=UJu^7|K)sNzn zgg-1}n=z`?@hsQlcJ(1L~F*ghFCL z^I{d!n82Ka84{K9E&stPSy(QfK^`&1RnjG*DdfOor=FeQRw#r+7B+)IhV)<)37!uA zvW(w@CDhRaB?Jw;0F&0SiVf6#Dubf$e*5|e1s~+_>zM%YRJpbJI%bD2vEXBdMH`g6 z>Y+|oF=I-9i_E9lZ4e1%U3E%X8VAq!=z<}EPLGQ#J z9hn4ikR3LYcNwf$L3tU-i4S(UrVnG^NexaNj(#H;TUC@qC4H7feQdOB5(H|TNeUqK zlc9a3pXPjhQ+6a}JAy183FKZ$O~;#%%^!xGE3$E*L>b8l0fYH8;gPGY?*H49np_Zr zMETN94F}y);?rXSEvY6P-*4+4_r>;vU}8fLV-GdI6kdw5)zmN7<|85%UgcDzYa!W8 z-(9Gy)eyU74$itmm!%<|9jdX_i0ccr&jc}^mg0aSM5EvoKNI{fpof3pPg;MDSqD=y z&fb#nf-1d>N~GQUq@3!^#tMy~NG1hchZc_2S7mt15GyZT18zs!>d$tS(wR0ULSD43 zP1~0)Ls)+?^bPDs)+9m*8&b$w(0ugow-Rq`dX}-j)N*}>K4`?(u#xFn6&KP(G;gAR zm<&FuQyON0=`n&oJ<8wmf-OGBsqa)Q!t6LfZkTUvXjh9`+i34vYD3Li@g-zgrL9mg zOaOy#$66IeJtNDK+Y#wucc>kEm^99y#F(=lEaR|Sjm7Y`wlcM1?@^K#^9}a=ml2tZ zuS^|U9H~_NTqXLd0e>h}3(ZBs`8x=(@A2_IZuu;9T?*|H*JitNy#Bu87=7*}Qs{*5 zT}{~s63mHsb3VWI4Ws2xASHvreobWwE+^(KdloX$(Ui+@z(@>?{@}%RnY_LALL=>W zIzGr1bk(s%G<&M_=+`|?_mriEpoVkBKEw#CwrH1E%l_2_CcW3)*?bX`ZId9b+rGwy zIbd~dA^A7xlv~!06B;{=n$|GEP$%KXT{NA|#Y$sd(MW_0N0o2E{qhXQUb}xfPeB{r z_y7&ah^^sjI|vo+&v`r{`}jieCt0VtF?i22?@-6uHHXah-nf@xXcO`3spwJGQGL@ZLKn0NX|p& z^^EF_$gJz_9>r#A8d_G~m}SOuMaTTR;#jojIE4EgMpv3@!?Y%@!Kbb-t$=zGe8RxiMM?O0PEN4EN0bUIC*GW z!eCV}c=Giw7ik;@GkA(p)1aQ_9@|N6&!cPq=S&%*UcpskiMdX)q|g?#vbpml#tA9r zPYUpBusD|s&mK{Ye??0FPEYhXyM$3*-`;(AQ2Id7_GQW!!CS$gki3ZgYk&i)!AD9?DKaQBBB~PGq;ip%R!hHWwjs8DP$whl9B##wbsMrg%u++dI zBf&3e**$M7k<|oo3!Ds5l^{K7^U6$=&Ub;~_C&(|F1uDv5N`W?qg_>P$1A5A=PosX z#B_*w9~W2bWT1B9iEJI25C}4G6zkW>Z6S-(mg3O#0|JX*7Xg@mc}xQXY+L%gCuL(* zlA@?11UfOZmZK#a9Eu!>!lP5MG+rmSdIC`nbuVr-C7zS>27+zgRZFV+GQpm>!lf#b zp9wcLE;?pzL^v55^Hu+`hqbpna~2&*N&1bNq7G4sBFk+%<)FRS=PQn^>Fs&hQ7A&X z@OU00UmF#l>13;VXbXEtT`i=LqAvnYq7&VsDL*g;2_3vb4owU1&X$mR&7oOKO?+@` zJPmg%WvkG|w-+>nLJ{|T3qsxVFVYOc=KwQPiu3bB6j^OLdr#xZq0;VFX8!s{xlynA z^Dy7U)x+SFoE@h-D`+PqC|N3?dM>bVYpKk(-wT>u(9^-K(2fOdMs3Tx)P?>9>$bxG zM4QoXS_~GqV~CdG@(SesZ|&%C=oFoqDOu@G%T>8G!)!=PMNY1w`VWioOO?P|+9rqqC-_nA@A`_Ahc)PD5 ztbp+_6)Q}XtfB~4rUUK#MH%}FD$v{xt}(LF(tkCdv@AMr+L?%!A9ZX*p%-VPhu|r7 z-CMuBs1XK5M{gX*irRKibK3o2dXp{HaIw))U6>7Tx3tC;mv#`Mj8rd_`Bqz53UnO^ z>tie*lsDGn<2EI#K5N2;XGS#QoKbo)E)LqdN2NFtmbf~|GxrhXX;%0V!gfxN&|23tNKIlmUtnSxtxY zf*IOB7Gm)@j__7Khn$&ai;UA<;sb4dkQ4vLq~tz z27O9}oWgRh1;0Ad7$=7fWU!bwRNSkvH^r5vHJ_2-5F<~?7A(l z&Ddn$tb(javxIPl0fJ|T^cp=Kv36nZUXV^cxe9|so|cB0_$Ndw&)(|zr_wG<17Nn( zas=;Z5gH8>ob+O^JGL}&sNs29RK=qF8cN9`;R7&(-qDW@1tJrKzmdj*k`k@I|3XDh zUeA&cHK?0N){H*sn%Ul47MQu&z2V4lf3ZF|Oi*{O+{ev}eWbU^WT0h{_GufYRY96H zoaj#wx62m2c`pgY1aX_(;+e_kRP#tvq3oaa+FzC?Ku$rE!XcC8?651e7^@l|#VC3-7 zFs~NI#tZOEnUVf692umVFBT=WJIG6HGB8t7chOmyTv$XfAE#3-qF3hswu*1ot~*2X zt9ULxxlwm{k!7#zv}9A;6G3DH8(8J*SAk>sWqKHB!9uep3v47-;F>k>s455+lXv?$ zFf4iP30<{d1s|pxP~3yF>c~OY`XoTUr_`HBhC<=#c{jhFTFxU>w8Cy?R!*$9RKiCk zr)j}`(8m+i(LHc@e}+6~eAhRn+~&jwLy~TvK|{uPTv(jUoL@^A83t z-!)9}k{9OatotYIzv6837)WXyG@<*;4{Gs@kCI#^wpaS(dh#F)GYvm4=Ub6Tcq7!T z7F@LEY{O{P0OKqV9CYlM^7EyA?q;_T3W|Yw?Rk0jOKLD@?WI*RBuT}tgk6m!{+=)}n2$szVK(*ItH-f8J86CU%2NiT-0R^nTD5s>&Moa~ zu@Wo*2)lVu;&5l}zuGZTqOWA{1iKF2zuL@lm8`L3;?9<R)0oa3~t8j-lK zq;p-Un7tp2pu{%kTG4vC{vC%i>I)^jNa(37@U;|$@Q%+AC}ix;;R*S62SYqP83?RD ztYV)7RZC~w*=d|^&&NI{K<4h<|JC&kUzhFlV!tADMoMFJkPiPP_Or{w{_GKk9EoM< zwz1N{UU1t#V6TNDM~^RPh}qm5*@@o70+zWn=kwM_AX8NzyM=CYQYH6WRu0|9Udb0t z#5liiJy|zxgmr8BYf7b1rskU2&f>#^jR>lrZGORkt?2`Wc6>)t`Ws#eo}2y>0L4st<4w^uvtKU_7}X<&aSOmY}SV~gDE9BL5l zu`Fm<)sP35LsDar;ZCCGreFjg@KVHKp28)5vMpO0rJ`cT$8L7MG&ad#(2^N_%(u%Z zsj;(jSaK%?_v~mU1`|bNm{tT**}7K7On{eL2sMU=L*k9=G-Yj}7bp~LTMFR$mKS?R zumbNqAT}*+G^fXVP*k)Ts-YY9J61Mpbxux2V_h)KCHQ`_3#t6941(w9GwJH$sq6EH zQd0)rH`6N_6*OMV;m{_Btm#gq7>f+Wv8vguYl`=eo|H{1^CEYfo8H9wn{ANkw3Hn) zwA2vg#KFBcaEb_r#D|0ylay#}{v)|*G~SqCE2#`*+|>E}EIZLraCO^mdr%Id1prmuChH7p$ z^#$k~7QOGODleRppKqg+s}@hall#s~_Z_qrTV_Mml!RTG|8_o}eE1!TBlxT5wL7;iTAos!(bWWUBC&GM+OqcO z^jVo_-1BrRU2q-xpF4AV1serlF4HzBlg%hCpsX{Q*w*apTjpugE2s+#J^82WDupd- z;*tg*ouuDZ*e~h+mFj`f7V!SMx2+w5J(C9;ZpV*qrYu7 zvK7-$qK4l<;QWd)eQH|`d&9vImfPrmo9SqFrd@%nS>KBGV_~hKs5Zc<-bsqB=%ZSU zutb3b6r3J+`xJro}cMcVVss^c0hSA1zgZX;AV+f|pE5dV9EjJ#bXj5-(p4prdlG zE>D~%iIA1&kGu@sa0wFUt(YAVontww>Gl-&M`Uvv4%mV<5w^6V{HCw#z4m=%3LC!$ z&cW|V4h@_&+wi66#N&qrWhmTUghZu-$BU_}9dhE&&Nm~boO8S~<<`c=kPT^tP)+c{b*9pI zf*e`B9VBJ1sG8(7c5GJT4O<2Q_CxP zMw`*b8G3{Sq)D4P{%&T*pI$2sG;1!QwaLb~-9vr8UNtY`J3gXaW~|;&+nWe3V8H5- zVCdUNHCC9#nqVk4yf(P+?&j^>?SG%cpzb$6W>}(E)|!HNlA=YN({Htyk8v_Km0*Ty z@a5^Xeq;%YDm8U!@5$g-jWz5aEFFVlB6|vviPu6 zc(&9_HW4$a4?UZ^(9Qx5Rh(X(u((vS_`Ak=VXyR~0IBawY^uvHWCKf=c^foPN5=)= ztxoFSH`cRBktK*VnPK?Ee#?O2lRe$VvZ=VA-*t8izH!xYkhPyTl~cufOWQNexgO&6 z)2~1el9`Pu(h&35jW^-5O;}U7y;+9#ro-K4*64$NmKyg^4gQf*S?JK5>#_fUh_K2y znI?_~odZSpJE}p9 zQc*{59ff5C2Lm3@m+z*5Uam$h6Ry$r<^G2f`yqdRGV2C5++mb5orLW`2`^ER^H;JT zQeDiXvYrOpI0+u)CY1`uEbx>Z_4r@--u$f$yD8X24yCIUA_doJDO|^V_P+^SR!_EDgA?tXvCNZQsEco{Yw>MLv^k50LQn{K7S9PADCKp5Sf8ku(b{CB6Z02!*y83!mx!=v`TNcgfa2n1*myu zY5ruXT+sG+#pBuaSX|oq~Ome+}~0z*U?yBkJ0^Dg{i^8mCs-@v$v zv(`pgFds*9suA{XCi?_$b7}XIZ)r)x{sZkpEy-jat{Mi^yuA8&UX8?>Ob z7Og(94_|1Mb&~?mE+wF4rP!>a6|ruJOUnyhAPw+5xu$@IZHvA5DF$O~sos3Cu zpU6U8$nrF5asX+ryd1a>yxEW5HHRtXk&!>`1J?*2cC^4L4x0yt%=o}ZpO+6FzX>h# zvQ4Vcc0lUw7uWj3OMXHVlT7PlK)(pvQ9nRRy>(znuuDw+ktpm28wN|L(~omwjDaM> zHT^G!kyMiVyIa&HxcB)rKu-{rggUOJ@1!Unqppe|2 zzrE>GJ%gb;n}=`S_<;6ptV&SjNm9lNy>p&rq2b1Js@8d@9u5&F5; z)biq)luTZxwmK2uNzxu_yNcp3FmYOK0H;!#*c&uw1g_Ts(LlW{Zra5}$E}NW-KZiN z+$UkrNc9!0M}@`(Nwct5kb#r3%4*Ocg*@uxOVms`*P2OWs0FlDMV$iUPO_Pn_WNBWb)0_HC|LhFTh&ZGRwr(X8C0dLos?ruEwzo%C)~p_< zRj#&wh~DHOPZ*dU9#S!cDD5j#Cc1{2w7jbIfG4x1GZ%{12eY|s4*#*Mh+`RADXMDj z77@Bp^Z)J!0z&~d+y7V1lz9CZ8Mx^GV>b|z z-~UuIRoFgJ194lLn>>$R%B87>1tum22JXzj%Y33*-n_HjE23_PSL8NJWk!u-H|-^|n;WG)c_0c&0~0@@9+#}i9VOh-4xO;Q8u()MeNfT<0^ zNr?!-!2>@7qd=Z0l4!t=csOn-r%Ff&;Fwt1z@fGI`@j9AD4LieVEKbMVo~VPlt86u z=pNAMF3_q(5kIgkmyCvD0UX#=P2PbmjloOv%;g2M=Jod%rQ_Q4mRa@zsQX!3`jEorwwNUZy5mA zKgt%f{I8GtZ5JX-IG{NfII{AAL(_Lb)x$}MW!^jOP2y#i1W=TqLney^iV82H^*X`> zt+8`#I}wGM0qyA%^rHI$JuxGjd=`cj0oxgaK4t+lC_)oa4WV`f2gEDg!<(Iih9e_7 z09zlDX#h^9M&1S%{=oVTQA|RBjS}qnPq3QA4c9<(==Fd9Nd-y``A8bDZMuFM@D3674`4=Vam+ErJ2lKbpaB~7YoUSEVS(JlgCSku0h4V&8y^S@GLXkwzSfDWVr#BnMQ*b z)=9}azyB>EW)IjI6Z{|K5%531x0)gXxS1iU6DMH-l+_sd+XW3Mxh#grtndjq^-c_P zOcajhonp~`8nHkNWX%cHfCBa@f|NM!B7mi+1_2S!qnN4g0VjKvh4yb&U@QP+p&%as`l<;d zAwUMG8saby&Kx)Z?4SpgFwN6Rsv)C^0EGdhbR%sU0EkA}MjhXS!F~y=H-t1d&`ARS z9MbYUc{vOmStmDAMLE!fzyMo8C4h?#axitp3?~EtL=40~%j6TlyqlMu-P8@wNfL-0 z=nUTzGys6QIS?nS0StmF^9FyczuTM|;B70TR}3A{oq;OYfJ_v?9rqBZ|DmJ>4kcvj z`+to;Vp)MqEO35M1j;i2`ho~>W$&?#0t;HE0x*&Zi%1zD%l;qi+<#c(Fh$h?iCVw` zhg)1%ftb_>1a9)R7-ZTA1e{O@FLDaVOdnz}gbw%arTqmcocV$8Ax<<~P67)6DvnOX z9UBVxf|#+!uKociItm;zk#NTb5-+3G0N<`L-)(1GN@_%6g81Hss3ObX0-$Xt32;Hv z#CL5wfx*@q^d8OfoZ|=7%vk`mBOwe#-(8k>kGOCK&`WTE-TPf1wZVeF@bd3H+p>tL zhiBjdx_+NAA5`#119&_dN<&#vJ^C-kupupY{wM(g9w;87iX8%ozPC6f{2_n{{Xgj} zL=ZWEFF4TuLmE&_-`-R`peb|P_CHPgZ0IT5-+k4Cv3+l*^_`EB#La4O?=dIIjGZW) zxebuv)e*I|H?4DN(@s$KogN6wvlk@D?kCRjeyp~ z5~?KY0Ps%Oh$1n!b_9$;6H*+Kgb09|Z%*G>74*)mK7kkBAe?t{?9dsiJi`G-0K%1X z8a^@L>Q?02HK0M6>i1|c7(|_u&`3@Q@X}h5<0el87z;xDcret7-(g3bw<(Jo&}#?2 zj{7o2@k_bA2ZUd9(5IeIqyXLtd+}O9dDh024h7Q{`3Q$ca|gy9KO^ z5t&BopqT;j$TfB*0rmn``O74!3G}D{j6K&Bkne-a*+>C26F^|O)ql*in;XtS27n0# z$KI9&T9Xi)13ZGpbQc~7u5d=Sg)|Plp+x`+aH*^BnQ_XBc?_V%K8nEt0gTE)qo?qQ z3J@i|akkpZ1h9UQCVWT|4^SB;p%I`xeVYjseg@!LP>fCN6E1(zU=#U2KG#q{$|nFeS**dQ zP)Pth3*<3bhYO$$AishptrGAa6)KSb`AI4TWaWQO`@9oRWb}@zI4W7d%n0lyl_Vgm z5uvHWG0>Kjcs%-)*k=p?FBL*SEf=1_5@3xEV3l;9>NPxM`@cqLU}6RXD|w*c$b9|q zLL5xq?drJ)KV%LBi~RS)>rLeC`S0UVA3tSF-gK_&eo+!xp_XAzB1L}}Y_GP@^WVyOPbG!eGi}sQ*>nIxP06SD1B7kBg za7Kg}O7Axv+=LXa=;Hvg)rZ67@7@BZ`~^|S066f3MX5Iz2=*RUqS%O1ZWchlYa{It0rq|$)2~ig@J`A8 zm6-vBP@o;VWk~sV{{RpVI|I~}7LNxv{3kwq6Z!vIu@8hA0^G+^@SX>%0Dj3dxCBr& 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 literal 0 HcmV?d00001 -- 2.30.2