aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AUTHORS9
-rw-r--r--NEWS5
-rw-r--r--README1
-rw-r--r--omins.lv2/adenv.ttl59
-rw-r--r--omins.lv2/adenv_lvl.ttl92
-rw-r--r--omins.lv2/comparison.ttl60
-rw-r--r--omins.lv2/dahdsr_fexp.ttl99
-rw-r--r--omins.lv2/dahdsr_hexp.ttl99
-rw-r--r--omins.lv2/fast_crossfade.ttl45
-rw-r--r--omins.lv2/formant_filter.ttl41
-rw-r--r--omins.lv2/hz_voct.ttl31
-rw-r--r--omins.lv2/manifest.ttl.in112
-rw-r--r--omins.lv2/masher.ttl51
-rw-r--r--omins.lv2/multiplexer.ttl40
-rw-r--r--omins.lv2/prob_switch.ttl45
-rw-r--r--omins.lv2/range_trans.ttl63
-rw-r--r--omins.lv2/sample_and_hold.ttl53
-rw-r--r--omins.lv2/signal_abs.ttl40
-rw-r--r--omins.lv2/slew_limiter.ttl48
-rw-r--r--omins.lv2/slide.ttl48
-rw-r--r--omins.lv2/waveguide_mesh.ttl70
-rw-r--r--omins.spec41
-rw-r--r--src/adenv.c250
-rw-r--r--src/adenv_lvl.c299
-rw-r--r--src/comparison.c135
-rw-r--r--src/dahdsr_fexp.c342
-rw-r--r--src/dahdsr_hexp.c344
-rw-r--r--src/fast_crossfade.c139
-rw-r--r--src/formant_filter.c213
-rw-r--r--src/hz_voct.c117
-rw-r--r--src/masher.c244
-rw-r--r--src/multiplexer.c120
-rw-r--r--src/prob_switch.c130
-rw-r--r--src/range_trans.c131
-rw-r--r--src/sample_and_hold.c150
-rw-r--r--src/signal_abs.c124
-rw-r--r--src/slew_limiter.c149
-rw-r--r--src/slide.c170
-rw-r--r--src/waveguide_mesh.c274
-rwxr-xr-xwaf171
-rw-r--r--waflib/.gitignore (renamed from .gitignore)0
-rw-r--r--waflib/Build.py (renamed from Build.py)0
-rw-r--r--waflib/COPYING (renamed from COPYING)0
-rw-r--r--waflib/ConfigSet.py (renamed from ConfigSet.py)0
-rw-r--r--waflib/Configure.py (renamed from Configure.py)0
-rw-r--r--waflib/Context.py (renamed from Context.py)0
-rw-r--r--waflib/Errors.py (renamed from Errors.py)0
-rw-r--r--waflib/Logs.py (renamed from Logs.py)0
-rw-r--r--waflib/Node.py (renamed from Node.py)0
-rw-r--r--waflib/Options.py (renamed from Options.py)0
-rw-r--r--waflib/README.md (renamed from README.md)0
-rw-r--r--waflib/Runner.py (renamed from Runner.py)0
-rw-r--r--waflib/Scripting.py (renamed from Scripting.py)0
-rw-r--r--waflib/Task.py (renamed from Task.py)0
-rw-r--r--waflib/TaskGen.py (renamed from TaskGen.py)0
-rw-r--r--waflib/Tools/__init__.py (renamed from Tools/__init__.py)0
-rw-r--r--waflib/Tools/ar.py (renamed from Tools/ar.py)0
-rw-r--r--waflib/Tools/asm.py (renamed from Tools/asm.py)0
-rw-r--r--waflib/Tools/bison.py (renamed from Tools/bison.py)0
-rw-r--r--waflib/Tools/c.py (renamed from Tools/c.py)0
-rw-r--r--waflib/Tools/c_aliases.py (renamed from Tools/c_aliases.py)0
-rw-r--r--waflib/Tools/c_config.py (renamed from Tools/c_config.py)0
-rw-r--r--waflib/Tools/c_osx.py (renamed from Tools/c_osx.py)0
-rw-r--r--waflib/Tools/c_preproc.py (renamed from Tools/c_preproc.py)0
-rw-r--r--waflib/Tools/c_tests.py (renamed from Tools/c_tests.py)0
-rw-r--r--waflib/Tools/ccroot.py (renamed from Tools/ccroot.py)0
-rw-r--r--waflib/Tools/clang.py (renamed from Tools/clang.py)0
-rw-r--r--waflib/Tools/clangxx.py (renamed from Tools/clangxx.py)0
-rw-r--r--waflib/Tools/compiler_c.py (renamed from Tools/compiler_c.py)0
-rw-r--r--waflib/Tools/compiler_cxx.py (renamed from Tools/compiler_cxx.py)0
-rw-r--r--waflib/Tools/compiler_d.py (renamed from Tools/compiler_d.py)0
-rw-r--r--waflib/Tools/compiler_fc.py (renamed from Tools/compiler_fc.py)0
-rw-r--r--waflib/Tools/cs.py (renamed from Tools/cs.py)0
-rw-r--r--waflib/Tools/cxx.py (renamed from Tools/cxx.py)0
-rw-r--r--waflib/Tools/d.py (renamed from Tools/d.py)0
-rw-r--r--waflib/Tools/d_config.py (renamed from Tools/d_config.py)0
-rw-r--r--waflib/Tools/d_scan.py (renamed from Tools/d_scan.py)0
-rw-r--r--waflib/Tools/dbus.py (renamed from Tools/dbus.py)0
-rw-r--r--waflib/Tools/dmd.py (renamed from Tools/dmd.py)0
-rw-r--r--waflib/Tools/errcheck.py (renamed from Tools/errcheck.py)0
-rw-r--r--waflib/Tools/fc.py (renamed from Tools/fc.py)0
-rw-r--r--waflib/Tools/fc_config.py (renamed from Tools/fc_config.py)0
-rw-r--r--waflib/Tools/fc_scan.py (renamed from Tools/fc_scan.py)0
-rw-r--r--waflib/Tools/flex.py (renamed from Tools/flex.py)0
-rw-r--r--waflib/Tools/g95.py (renamed from Tools/g95.py)0
-rw-r--r--waflib/Tools/gas.py (renamed from Tools/gas.py)0
-rw-r--r--waflib/Tools/gcc.py (renamed from Tools/gcc.py)0
-rw-r--r--waflib/Tools/gdc.py (renamed from Tools/gdc.py)0
-rw-r--r--waflib/Tools/gfortran.py (renamed from Tools/gfortran.py)0
-rw-r--r--waflib/Tools/glib2.py (renamed from Tools/glib2.py)0
-rw-r--r--waflib/Tools/gnu_dirs.py (renamed from Tools/gnu_dirs.py)0
-rw-r--r--waflib/Tools/gxx.py (renamed from Tools/gxx.py)0
-rw-r--r--waflib/Tools/icc.py (renamed from Tools/icc.py)0
-rw-r--r--waflib/Tools/icpc.py (renamed from Tools/icpc.py)0
-rw-r--r--waflib/Tools/ifort.py (renamed from Tools/ifort.py)0
-rw-r--r--waflib/Tools/intltool.py (renamed from Tools/intltool.py)0
-rw-r--r--waflib/Tools/irixcc.py (renamed from Tools/irixcc.py)0
-rw-r--r--waflib/Tools/javaw.py (renamed from Tools/javaw.py)0
-rw-r--r--waflib/Tools/ldc2.py (renamed from Tools/ldc2.py)0
-rw-r--r--waflib/Tools/lua.py (renamed from Tools/lua.py)0
-rw-r--r--waflib/Tools/md5_tstamp.py (renamed from Tools/md5_tstamp.py)0
-rw-r--r--waflib/Tools/msvc.py (renamed from Tools/msvc.py)0
-rw-r--r--waflib/Tools/nasm.py (renamed from Tools/nasm.py)0
-rw-r--r--waflib/Tools/nobuild.py (renamed from Tools/nobuild.py)0
-rw-r--r--waflib/Tools/perl.py (renamed from Tools/perl.py)0
-rw-r--r--waflib/Tools/python.py (renamed from Tools/python.py)0
-rw-r--r--waflib/Tools/qt5.py (renamed from Tools/qt5.py)0
-rw-r--r--waflib/Tools/ruby.py (renamed from Tools/ruby.py)0
-rw-r--r--waflib/Tools/suncc.py (renamed from Tools/suncc.py)0
-rw-r--r--waflib/Tools/suncxx.py (renamed from Tools/suncxx.py)0
-rw-r--r--waflib/Tools/tex.py (renamed from Tools/tex.py)0
-rw-r--r--waflib/Tools/vala.py (renamed from Tools/vala.py)0
-rw-r--r--waflib/Tools/waf_unit_test.py (renamed from Tools/waf_unit_test.py)0
-rw-r--r--waflib/Tools/winres.py (renamed from Tools/winres.py)0
-rw-r--r--waflib/Tools/xlc.py (renamed from Tools/xlc.py)0
-rw-r--r--waflib/Tools/xlcxx.py (renamed from Tools/xlcxx.py)0
-rw-r--r--waflib/Utils.py (renamed from Utils.py)0
-rw-r--r--waflib/__init__.py (renamed from __init__.py)0
-rw-r--r--waflib/ansiterm.py (renamed from ansiterm.py)0
-rw-r--r--waflib/extras/__init__.py (renamed from extras/__init__.py)0
-rw-r--r--waflib/extras/autowaf.py (renamed from extras/autowaf.py)0
-rw-r--r--waflib/extras/batched_cc.py (renamed from extras/batched_cc.py)0
-rw-r--r--waflib/extras/biber.py (renamed from extras/biber.py)0
-rw-r--r--waflib/extras/bjam.py (renamed from extras/bjam.py)0
-rw-r--r--waflib/extras/blender.py (renamed from extras/blender.py)0
-rw-r--r--waflib/extras/boo.py (renamed from extras/boo.py)0
-rw-r--r--waflib/extras/boost.py (renamed from extras/boost.py)0
-rw-r--r--waflib/extras/build_file_tracker.py (renamed from extras/build_file_tracker.py)0
-rw-r--r--waflib/extras/build_logs.py (renamed from extras/build_logs.py)0
-rw-r--r--waflib/extras/buildcopy.py (renamed from extras/buildcopy.py)0
-rw-r--r--waflib/extras/c_bgxlc.py (renamed from extras/c_bgxlc.py)0
-rw-r--r--waflib/extras/c_dumbpreproc.py (renamed from extras/c_dumbpreproc.py)0
-rw-r--r--waflib/extras/c_emscripten.py (renamed from extras/c_emscripten.py)0
-rw-r--r--waflib/extras/c_nec.py (renamed from extras/c_nec.py)0
-rw-r--r--waflib/extras/cabal.py (renamed from extras/cabal.py)0
-rw-r--r--waflib/extras/cfg_altoptions.py (renamed from extras/cfg_altoptions.py)0
-rw-r--r--waflib/extras/clang_compilation_database.py (renamed from extras/clang_compilation_database.py)0
-rw-r--r--waflib/extras/codelite.py (renamed from extras/codelite.py)0
-rw-r--r--waflib/extras/color_gcc.py (renamed from extras/color_gcc.py)0
-rw-r--r--waflib/extras/color_rvct.py (renamed from extras/color_rvct.py)0
-rw-r--r--waflib/extras/compat15.py (renamed from extras/compat15.py)0
-rw-r--r--waflib/extras/cppcheck.py (renamed from extras/cppcheck.py)0
-rw-r--r--waflib/extras/cpplint.py (renamed from extras/cpplint.py)0
-rw-r--r--waflib/extras/cross_gnu.py (renamed from extras/cross_gnu.py)0
-rw-r--r--waflib/extras/cython.py (renamed from extras/cython.py)0
-rw-r--r--waflib/extras/dcc.py (renamed from extras/dcc.py)0
-rw-r--r--waflib/extras/distnet.py (renamed from extras/distnet.py)0
-rw-r--r--waflib/extras/doxygen.py (renamed from extras/doxygen.py)0
-rw-r--r--waflib/extras/dpapi.py (renamed from extras/dpapi.py)0
-rw-r--r--waflib/extras/eclipse.py (renamed from extras/eclipse.py)0
-rw-r--r--waflib/extras/erlang.py (renamed from extras/erlang.py)0
-rw-r--r--waflib/extras/fast_partial.py (renamed from extras/fast_partial.py)0
-rw-r--r--waflib/extras/fc_bgxlf.py (renamed from extras/fc_bgxlf.py)0
-rw-r--r--waflib/extras/fc_cray.py (renamed from extras/fc_cray.py)0
-rw-r--r--waflib/extras/fc_nag.py (renamed from extras/fc_nag.py)0
-rw-r--r--waflib/extras/fc_nec.py (renamed from extras/fc_nec.py)0
-rw-r--r--waflib/extras/fc_open64.py (renamed from extras/fc_open64.py)0
-rw-r--r--waflib/extras/fc_pgfortran.py (renamed from extras/fc_pgfortran.py)0
-rw-r--r--waflib/extras/fc_solstudio.py (renamed from extras/fc_solstudio.py)0
-rw-r--r--waflib/extras/fc_xlf.py (renamed from extras/fc_xlf.py)0
-rw-r--r--waflib/extras/file_to_object.py (renamed from extras/file_to_object.py)0
-rw-r--r--waflib/extras/fluid.py (renamed from extras/fluid.py)0
-rw-r--r--waflib/extras/freeimage.py (renamed from extras/freeimage.py)0
-rw-r--r--waflib/extras/fsb.py (renamed from extras/fsb.py)0
-rw-r--r--waflib/extras/fsc.py (renamed from extras/fsc.py)0
-rw-r--r--waflib/extras/gccdeps.py (renamed from extras/gccdeps.py)0
-rw-r--r--waflib/extras/gdbus.py (renamed from extras/gdbus.py)0
-rw-r--r--waflib/extras/gob2.py (renamed from extras/gob2.py)0
-rw-r--r--waflib/extras/halide.py (renamed from extras/halide.py)0
-rwxr-xr-xwaflib/extras/javatest.py (renamed from extras/javatest.py)0
-rw-r--r--waflib/extras/kde4.py (renamed from extras/kde4.py)0
-rw-r--r--waflib/extras/local_rpath.py (renamed from extras/local_rpath.py)0
-rw-r--r--waflib/extras/lv2.py (renamed from extras/lv2.py)0
-rw-r--r--waflib/extras/make.py (renamed from extras/make.py)0
-rw-r--r--waflib/extras/midl.py (renamed from extras/midl.py)0
-rw-r--r--waflib/extras/msvcdeps.py (renamed from extras/msvcdeps.py)0
-rw-r--r--waflib/extras/msvs.py (renamed from extras/msvs.py)0
-rw-r--r--waflib/extras/netcache_client.py (renamed from extras/netcache_client.py)0
-rw-r--r--waflib/extras/objcopy.py (renamed from extras/objcopy.py)0
-rw-r--r--waflib/extras/ocaml.py (renamed from extras/ocaml.py)0
-rw-r--r--waflib/extras/package.py (renamed from extras/package.py)0
-rw-r--r--waflib/extras/parallel_debug.py (renamed from extras/parallel_debug.py)0
-rw-r--r--waflib/extras/pch.py (renamed from extras/pch.py)0
-rw-r--r--waflib/extras/pep8.py (renamed from extras/pep8.py)0
-rw-r--r--waflib/extras/pgicc.py (renamed from extras/pgicc.py)0
-rw-r--r--waflib/extras/pgicxx.py (renamed from extras/pgicxx.py)0
-rw-r--r--waflib/extras/proc.py (renamed from extras/proc.py)0
-rw-r--r--waflib/extras/protoc.py (renamed from extras/protoc.py)0
-rw-r--r--waflib/extras/pyqt5.py (renamed from extras/pyqt5.py)0
-rw-r--r--waflib/extras/pytest.py (renamed from extras/pytest.py)0
-rw-r--r--waflib/extras/qnxnto.py (renamed from extras/qnxnto.py)0
-rw-r--r--waflib/extras/qt4.py (renamed from extras/qt4.py)0
-rw-r--r--waflib/extras/relocation.py (renamed from extras/relocation.py)0
-rw-r--r--waflib/extras/remote.py (renamed from extras/remote.py)0
-rw-r--r--waflib/extras/resx.py (renamed from extras/resx.py)0
-rw-r--r--waflib/extras/review.py (renamed from extras/review.py)0
-rw-r--r--waflib/extras/rst.py (renamed from extras/rst.py)0
-rw-r--r--waflib/extras/run_do_script.py (renamed from extras/run_do_script.py)0
-rw-r--r--waflib/extras/run_m_script.py (renamed from extras/run_m_script.py)0
-rw-r--r--waflib/extras/run_py_script.py (renamed from extras/run_py_script.py)0
-rw-r--r--waflib/extras/run_r_script.py (renamed from extras/run_r_script.py)0
-rw-r--r--waflib/extras/sas.py (renamed from extras/sas.py)0
-rw-r--r--waflib/extras/satellite_assembly.py (renamed from extras/satellite_assembly.py)0
-rw-r--r--waflib/extras/scala.py (renamed from extras/scala.py)0
-rw-r--r--waflib/extras/slow_qt4.py (renamed from extras/slow_qt4.py)0
-rw-r--r--waflib/extras/softlink_libs.py (renamed from extras/softlink_libs.py)0
-rw-r--r--waflib/extras/stale.py (renamed from extras/stale.py)0
-rw-r--r--waflib/extras/stracedeps.py (renamed from extras/stracedeps.py)0
-rw-r--r--waflib/extras/swig.py (renamed from extras/swig.py)0
-rw-r--r--waflib/extras/syms.py (renamed from extras/syms.py)0
-rw-r--r--waflib/extras/ticgt.py (renamed from extras/ticgt.py)0
-rw-r--r--waflib/extras/unity.py (renamed from extras/unity.py)0
-rw-r--r--waflib/extras/use_config.py (renamed from extras/use_config.py)0
-rw-r--r--waflib/extras/valadoc.py (renamed from extras/valadoc.py)0
-rw-r--r--waflib/extras/waf_xattr.py (renamed from extras/waf_xattr.py)0
-rw-r--r--waflib/extras/why.py (renamed from extras/why.py)0
-rw-r--r--waflib/extras/win32_opts.py (renamed from extras/win32_opts.py)0
-rw-r--r--waflib/extras/wix.py (renamed from extras/wix.py)0
-rw-r--r--waflib/extras/xcode6.py (renamed from extras/xcode6.py)0
-rw-r--r--waflib/fixpy2.py (renamed from fixpy2.py)0
-rwxr-xr-xwaflib/processor.py (renamed from processor.py)0
-rwxr-xr-xwaflib/waf16
-rw-r--r--wscript116
223 files changed, 4777 insertions, 9 deletions
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..98892d0
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,9 @@
+Authors:
+
+David Robillard <d .a.t. drobilla.net>
+
+Loki Davison <loki .a.t. berlios.de>
+
+Lars Luthman <larsl .a.t. users.sourceforge.net>
+
+Thorsten Wilms <t_w_ .a.t. freenet.de>
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..439f42e
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,5 @@
+omins (0.0.0) unstable;
+
+ * Initial release
+
+ -- David Robillard <d@drobilla.net> Fri, 09 Jun 2006 10:34:20 -0400
diff --git a/README b/README
new file mode 100644
index 0000000..39d60dc
--- /dev/null
+++ b/README
@@ -0,0 +1 @@
+Omins is a collection of LADSPA plugins, aimed at modular synthesizers.
diff --git a/omins.lv2/adenv.ttl b/omins.lv2/adenv.ttl
new file mode 100644
index 0000000..b3f8e56
--- /dev/null
+++ b/omins.lv2/adenv.ttl
@@ -0,0 +1,59 @@
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix omins: <http://drobilla.net/plugins/omins/> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+@prefix units: <http://lv2plug.in/ns/extensions/units#> .
+
+<http://drobilla.net/plugins/omins/adenv>
+ lv2:microVersion 0 ;
+ lv2:minorVersion 0 ;
+ lv2:optionalFeature lv2:hardRTCapable ;
+ lv2:port [
+ lv2:index 0 ;
+ lv2:name "Gate" ;
+ lv2:symbol "port0" ;
+ a lv2:AudioPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 1 ;
+ lv2:name "Trigger" ;
+ lv2:symbol "port1" ;
+ a lv2:AudioPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:default 0 ;
+ lv2:index 2 ;
+ lv2:minimum 0 ;
+ lv2:name "Attack Time" ;
+ lv2:symbol "port2" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port ;
+ units:unit units:s
+ ] , [
+ lv2:default 0 ;
+ lv2:index 3 ;
+ lv2:minimum 0 ;
+ lv2:name "Decay Time" ;
+ lv2:symbol "port3" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port ;
+ units:unit units:s
+ ] , [
+ lv2:index 4 ;
+ lv2:name "Envelope Out" ;
+ lv2:symbol "port4" ;
+ a lv2:AudioPort ,
+ lv2:OutputPort ,
+ lv2:Port
+ ] ;
+ lv2:project omins: ;
+ doap:name "Percussive AD Envelope" ;
+ a lv2:Plugin .
diff --git a/omins.lv2/adenv_lvl.ttl b/omins.lv2/adenv_lvl.ttl
new file mode 100644
index 0000000..d6831be
--- /dev/null
+++ b/omins.lv2/adenv_lvl.ttl
@@ -0,0 +1,92 @@
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix omins: <http://drobilla.net/plugins/omins/> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+@prefix units: <http://lv2plug.in/ns/extensions/units#> .
+
+<http://drobilla.net/plugins/omins/adenv_lvl>
+ lv2:microVersion 0 ;
+ lv2:minorVersion 0 ;
+ lv2:optionalFeature lv2:hardRTCapable ;
+ lv2:port [
+ lv2:index 0 ;
+ lv2:name "Gate" ;
+ lv2:symbol "port0" ;
+ a lv2:CVPort ,
+ lv2:InputPort
+ ] , [
+ lv2:index 1 ;
+ lv2:name "Trigger" ;
+ lv2:symbol "port1" ;
+ a lv2:CVPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:default 0 ;
+ lv2:index 2 ;
+ lv2:minimum 0 ;
+ lv2:name "Initial Level" ;
+ lv2:symbol "port2" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:default 1 ;
+ lv2:index 3 ;
+ lv2:minimum 0 ;
+ lv2:name "Attack to Level" ;
+ lv2:symbol "port3" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:default 0 ;
+ lv2:index 4 ;
+ lv2:minimum 0 ;
+ lv2:name "Decay to Level" ;
+ lv2:symbol "port4" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ units:unit units:s ;
+ lv2:default 0 ;
+ lv2:index 5 ;
+ lv2:minimum 0 ;
+ lv2:name "Attack Time" ;
+ lv2:symbol "port5" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ units:unit units:s ;
+ lv2:default 0 ;
+ lv2:index 6 ;
+ lv2:minimum 0 ;
+ lv2:name "Decay Time" ;
+ lv2:symbol "port6" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 7 ;
+ lv2:name "Envelope Out" ;
+ lv2:symbol "port7" ;
+ a lv2:CVPort ,
+ lv2:OutputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 8 ;
+ lv2:name "Reset Level" ;
+ lv2:symbol "port8" ;
+ a lv2:CVPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] ;
+ lv2:project omins: ;
+ doap:name "Percussive AD Envelope with levels" ;
+ a lv2:Plugin .
diff --git a/omins.lv2/comparison.ttl b/omins.lv2/comparison.ttl
new file mode 100644
index 0000000..392e526
--- /dev/null
+++ b/omins.lv2/comparison.ttl
@@ -0,0 +1,60 @@
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix omins: <http://drobilla.net/plugins/omins/> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+
+<http://drobilla.net/plugins/omins/comparison>
+ lv2:binary <file:///usr/local/lib/lv2/naspro-ladspa.lv2/ladspa.so> ;
+ lv2:microVersion 0 ;
+ lv2:minorVersion 0 ;
+ lv2:optionalFeature lv2:hardRTCapable ;
+ lv2:port [
+ lv2:index 0 ;
+ lv2:name "A" ;
+ lv2:symbol "port0" ;
+ a lv2:CVPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 1 ;
+ lv2:name "B" ;
+ lv2:symbol "port1" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 2 ;
+ lv2:name "Larger" ;
+ lv2:symbol "port2" ;
+ a lv2:CVPort ,
+ lv2:OutputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 3 ;
+ lv2:name "Smaller" ;
+ lv2:symbol "port3" ;
+ a lv2:CVPort ,
+ lv2:OutputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 4 ;
+ lv2:name "A > B" ;
+ lv2:symbol "port4" ;
+ a lv2:CVPort ,
+ lv2:OutputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 5 ;
+ lv2:name "A = B" ;
+ lv2:symbol "port5" ;
+ a lv2:CVPort ,
+ lv2:OutputPort ,
+ lv2:Port
+ ] ;
+ lv2:project omins: ;
+ doap:name "Comparison" ;
+ a lv2:Plugin .
diff --git a/omins.lv2/dahdsr_fexp.ttl b/omins.lv2/dahdsr_fexp.ttl
new file mode 100644
index 0000000..b7feef9
--- /dev/null
+++ b/omins.lv2/dahdsr_fexp.ttl
@@ -0,0 +1,99 @@
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix omins: <http://drobilla.net/plugins/omins/> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+@prefix units: <http://lv2plug.in/ns/extensions/units#> .
+
+<http://drobilla.net/plugins/omins/dahdsr_fexp>
+ lv2:microVersion 0 ;
+ lv2:minorVersion 0 ;
+ lv2:optionalFeature lv2:hardRTCapable ;
+ lv2:port [
+ lv2:index 0 ;
+ lv2:name "Gate" ;
+ lv2:symbol "port0" ;
+ a lv2:CVPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 1 ;
+ lv2:name "Trigger" ;
+ lv2:symbol "port1" ;
+ a lv2:CVPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:default 0 ;
+ lv2:index 2 ;
+ lv2:minimum 0 ;
+ lv2:name "Delay Time" ;
+ lv2:symbol "port2" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port ;
+ units:unit units:s
+ ] , [
+ lv2:default 0 ;
+ lv2:index 3 ;
+ lv2:minimum 0 ;
+ lv2:name "Attack Time" ;
+ lv2:symbol "port3" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port ;
+ units:unit units:s
+ ] , [
+ lv2:default 0 ;
+ lv2:index 4 ;
+ lv2:minimum 0 ;
+ lv2:name "Hold Time" ;
+ lv2:symbol "port4" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port ;
+ units:unit units:s
+ ] , [
+ lv2:default 0 ;
+ lv2:index 5 ;
+ lv2:minimum 0 ;
+ lv2:name "Decay Time" ;
+ lv2:symbol "port5" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port ;
+ units:unit units:s
+ ] , [
+ lv2:default 1 ;
+ lv2:index 6 ;
+ lv2:maximum 1 ;
+ lv2:minimum 0 ;
+ lv2:name "Sustain Level" ;
+ lv2:symbol "port6" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:default 0 ;
+ lv2:index 7 ;
+ lv2:minimum 0 ;
+ lv2:name "Release Time" ;
+ lv2:symbol "port7" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port ;
+ units:unit units:s
+ ] , [
+ lv2:index 8 ;
+ lv2:name "Envelope Out" ;
+ lv2:symbol "port8" ;
+ a lv2:CVPort ,
+ lv2:OutputPort ,
+ lv2:Port
+ ] ;
+ lv2:project omins: ;
+ doap:name "Exponential DAHDSR Envelope" ;
+ a lv2:Plugin .
diff --git a/omins.lv2/dahdsr_hexp.ttl b/omins.lv2/dahdsr_hexp.ttl
new file mode 100644
index 0000000..ebd8cba
--- /dev/null
+++ b/omins.lv2/dahdsr_hexp.ttl
@@ -0,0 +1,99 @@
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix omins: <http://drobilla.net/plugins/omins/> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+@prefix units: <http://lv2plug.in/ns/extensions/units#> .
+
+<http://drobilla.net/plugins/omins/dahdsr_hexp>
+ lv2:microVersion 0 ;
+ lv2:minorVersion 0 ;
+ lv2:optionalFeature lv2:hardRTCapable ;
+ lv2:port [
+ lv2:index 0 ;
+ lv2:name "Gate" ;
+ lv2:symbol "port0" ;
+ a lv2:CVPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 1 ;
+ lv2:name "Trigger" ;
+ lv2:symbol "port1" ;
+ a lv2:CVPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:default 0 ;
+ lv2:index 2 ;
+ lv2:minimum 0 ;
+ lv2:name "Delay Time" ;
+ lv2:symbol "port2" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port ;
+ units:unit units:s
+ ] , [
+ lv2:default 0 ;
+ lv2:index 3 ;
+ lv2:minimum 0 ;
+ lv2:name "Attack Time" ;
+ lv2:symbol "port3" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port ;
+ units:unit units:s
+ ] , [
+ lv2:default 0 ;
+ lv2:index 4 ;
+ lv2:minimum 0 ;
+ lv2:name "Hold Time" ;
+ lv2:symbol "port4" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port ;
+ units:unit units:s
+ ] , [
+ lv2:default 0 ;
+ lv2:index 5 ;
+ lv2:minimum 0 ;
+ lv2:name "Decay Time" ;
+ lv2:symbol "port5" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port ;
+ units:unit units:s
+ ] , [
+ lv2:default 1 ;
+ lv2:index 6 ;
+ lv2:maximum 1 ;
+ lv2:minimum 0 ;
+ lv2:name "Sustain Level" ;
+ lv2:symbol "port6" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:default 0 ;
+ lv2:index 7 ;
+ lv2:minimum 0 ;
+ lv2:name "Release Time" ;
+ lv2:symbol "port7" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port ;
+ units:unit units:s
+ ] , [
+ lv2:index 8 ;
+ lv2:name "Envelope Out" ;
+ lv2:symbol "port8" ;
+ a lv2:CVPort ,
+ lv2:OutputPort ,
+ lv2:Port
+ ] ;
+ lv2:project omins: ;
+ doap:name "DAHDSR Envelope (Linear A, Exponential DR)" ;
+ a lv2:Plugin .
diff --git a/omins.lv2/fast_crossfade.ttl b/omins.lv2/fast_crossfade.ttl
new file mode 100644
index 0000000..1fce775
--- /dev/null
+++ b/omins.lv2/fast_crossfade.ttl
@@ -0,0 +1,45 @@
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix omins: <http://drobilla.net/plugins/omins/> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+
+<http://drobilla.net/plugins/omins/fast_crossfade>
+ lv2:microVersion 0 ;
+ lv2:minorVersion 0 ;
+ lv2:optionalFeature lv2:hardRTCapable ;
+ lv2:port [
+ lv2:index 0 ;
+ lv2:name "Level" ;
+ lv2:symbol "port0" ;
+ a lv2:CVPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 1 ;
+ lv2:name "A" ;
+ lv2:symbol "port1" ;
+ a lv2:AudioPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 2 ;
+ lv2:name "B" ;
+ lv2:symbol "port2" ;
+ a lv2:AudioPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 3 ;
+ lv2:name "Output" ;
+ lv2:symbol "port3" ;
+ a lv2:AudioPort ,
+ lv2:OutputPort ,
+ lv2:Port
+ ] ;
+ lv2:project omins: ;
+ doap:name "Fast Crossfade" ;
+ a lv2:Plugin .
diff --git a/omins.lv2/formant_filter.ttl b/omins.lv2/formant_filter.ttl
new file mode 100644
index 0000000..6bcf6f2
--- /dev/null
+++ b/omins.lv2/formant_filter.ttl
@@ -0,0 +1,41 @@
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix omins: <http://drobilla.net/plugins/omins/> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+
+<http://drobilla.net/plugins/omins/formant_filter>
+ lv2:microVersion 0 ;
+ lv2:minorVersion 0 ;
+ lv2:optionalFeature lv2:hardRTCapable ;
+ lv2:port [
+ lv2:default 0 ;
+ lv2:index 0 ;
+ lv2:maximum 4 ;
+ lv2:minimum 0 ;
+ lv2:name "Vowel" ;
+ lv2:symbol "port0" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 1 ;
+ lv2:name "Input" ;
+ lv2:symbol "port1" ;
+ a lv2:AudioPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 2 ;
+ lv2:name "Output" ;
+ lv2:symbol "port2" ;
+ a lv2:AudioPort ,
+ lv2:OutputPort ,
+ lv2:Port
+ ] ;
+ lv2:project omins: ;
+ doap:name "Formant Filter" ;
+ a lv2:Plugin .
diff --git a/omins.lv2/hz_voct.ttl b/omins.lv2/hz_voct.ttl
new file mode 100644
index 0000000..7acd149
--- /dev/null
+++ b/omins.lv2/hz_voct.ttl
@@ -0,0 +1,31 @@
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix omins: <http://drobilla.net/plugins/omins/> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+
+<http://drobilla.net/plugins/omins/hz_voct>
+ lv2:microVersion 0 ;
+ lv2:minorVersion 0 ;
+ lv2:optionalFeature lv2:hardRTCapable ;
+ lv2:port [
+ lv2:index 0 ;
+ lv2:name "Input" ;
+ lv2:symbol "port0" ;
+ a lv2:CVPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 1 ;
+ lv2:name "Output" ;
+ lv2:symbol "port1" ;
+ a lv2:CVPort ,
+ lv2:OutputPort ,
+ lv2:Port
+ ] ;
+ lv2:project omins: ;
+ doap:name "Hz to V/Oct" ;
+ a lv2:Plugin .
diff --git a/omins.lv2/manifest.ttl.in b/omins.lv2/manifest.ttl.in
new file mode 100644
index 0000000..7b4de37
--- /dev/null
+++ b/omins.lv2/manifest.ttl.in
@@ -0,0 +1,112 @@
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix omins: <http://drobilla.net/plugins/omins/> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+
+<http://drobilla.net/drobilla#me>
+ a foaf:Person ;
+ foaf:name "David Robillard" ;
+ foaf:mbox <mailto:d@drobilla.net> ;
+ rdfs:seeAlso <http://drobilla.net/drobilla> .
+
+_:lfactor
+ a foaf:Person ;
+ foaf:name "Loki Davison" ;
+ foaf:mbox <mailto:loki@berlios.de> .
+
+omins:
+ a doap:Project ;
+ lv2:symbol "omins" ;
+ doap:name "Omins" ;
+ doap:shortdesc "A set of LV2 plugins for modular synthesizers." ;
+ doap:license <http://www.gnu.org/licenses/gpl-2.0> ;
+ doap:homepage <http://drobilla.net/software/omins> ;
+ doap:maintainer <http://drobilla.net/drobilla#me> ;
+ doap:developer <http://drobilla.net/drobilla#me> ,
+ _:lfactor .
+
+omins:adenv_lvl
+ a lv2:Plugin ;
+ rdfs:seeAlso <adenv_lvl.ttl> ;
+ lv2:binary <adenv_lvl@LIB_EXT@> .
+
+omins:adenv
+ a lv2:Plugin ;
+ rdfs:seeAlso <adenv.ttl> ;
+ lv2:binary <adenv@LIB_EXT@> .
+
+omins:comparison
+ a lv2:Plugin ;
+ rdfs:seeAlso <comparison.ttl> ;
+ lv2:binary <comparison@LIB_EXT@> .
+
+omins:dahdsr_fexp
+ a lv2:Plugin ;
+ rdfs:seeAlso <dahdsr_fexp.ttl> ;
+ lv2:binary <dahdsr_fexp@LIB_EXT@> .
+
+omins:dahdsr_hexp
+ a lv2:Plugin ;
+ rdfs:seeAlso <dahdsr_hexp.ttl> ;
+ lv2:binary <dahdsr_hexp@LIB_EXT@> .
+
+omins:fast_crossfade
+ a lv2:Plugin ;
+ rdfs:seeAlso <fast_crossfade.ttl> ;
+ lv2:binary <fast_crossfade@LIB_EXT@> .
+
+omins:formant_filter
+ a lv2:Plugin ;
+ rdfs:seeAlso <formant_filter.ttl> ;
+ lv2:binary <formant_filter@LIB_EXT@> .
+
+omins:hz_voct
+ a lv2:Plugin ;
+ rdfs:seeAlso <hz_voct.ttl> ;
+ lv2:binary <hz_voct@LIB_EXT@> .
+
+omins:masher
+ a lv2:Plugin ;
+ rdfs:seeAlso <masher.ttl> ;
+ lv2:binary <masher@LIB_EXT@> .
+
+omins:multiplexer
+ a lv2:Plugin ;
+ rdfs:seeAlso <multiplexer.ttl> ;
+ lv2:binary <multiplexer@LIB_EXT@> .
+
+omins:prob_switch
+ a lv2:Plugin ;
+ rdfs:seeAlso <prob_switch.ttl> ;
+ lv2:binary <prob_switch@LIB_EXT@> .
+
+omins:range_trans
+ a lv2:Plugin ;
+ rdfs:seeAlso <range_trans.ttl> ;
+ lv2:binary <range_trans@LIB_EXT@> .
+
+omins:sample_and_hold
+ a lv2:Plugin ;
+ rdfs:seeAlso <sample_and_hold.ttl> ;
+ lv2:binary <sample_and_hold@LIB_EXT@> .
+
+omins:signal_abs
+ a lv2:Plugin ;
+ rdfs:seeAlso <signal_abs.ttl> ;
+ lv2:binary <signal_abs@LIB_EXT@> .
+
+omins:slew_limiter
+ a lv2:Plugin ;
+ rdfs:seeAlso <slew_limiter.ttl> ;
+ lv2:binary <slew_limiter@LIB_EXT@> .
+
+omins:slide
+ a lv2:Plugin ;
+ rdfs:seeAlso <slide.ttl> ;
+ lv2:binary <slide@LIB_EXT@> .
+
+omins:waveguide_mesh
+ a lv2:Plugin ;
+ rdfs:seeAlso <waveguide_mesh.ttl> ;
+ lv2:binary <waveguide_mesh@LIB_EXT@> .
diff --git a/omins.lv2/masher.ttl b/omins.lv2/masher.ttl
new file mode 100644
index 0000000..be628e0
--- /dev/null
+++ b/omins.lv2/masher.ttl
@@ -0,0 +1,51 @@
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix omins: <http://drobilla.net/plugins/omins/> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+
+<http://drobilla.net/plugins/omins/masher>
+ lv2:microVersion 0 ;
+ lv2:minorVersion 0 ;
+ lv2:optionalFeature lv2:hardRTCapable ;
+ lv2:port [
+ lv2:index 0 ;
+ lv2:name "Input" ;
+ lv2:symbol "port0" ;
+ a lv2:AudioPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:default 1 ;
+ lv2:index 1 ;
+ lv2:maximum 10 ;
+ lv2:minimum 1 ;
+ lv2:name "Grain Pitch" ;
+ lv2:symbol "port1" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:default 400 ;
+ lv2:index 2 ;
+ lv2:maximum 800 ;
+ lv2:minimum 0 ;
+ lv2:name "Density" ;
+ lv2:symbol "port2" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 3 ;
+ lv2:name "Output" ;
+ lv2:symbol "port3" ;
+ a lv2:AudioPort ,
+ lv2:OutputPort ,
+ lv2:Port
+ ] ;
+ lv2:project omins: ;
+ doap:name "Masher" ;
+ a lv2:Plugin .
diff --git a/omins.lv2/multiplexer.ttl b/omins.lv2/multiplexer.ttl
new file mode 100644
index 0000000..7238b4d
--- /dev/null
+++ b/omins.lv2/multiplexer.ttl
@@ -0,0 +1,40 @@
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix omins: <http://drobilla.net/plugins/omins/> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+
+<http://drobilla.net/plugins/omins/multiplexer>
+ a lv2:Plugin ;
+ lv2:microVersion 0 ;
+ lv2:minorVersion 0 ;
+ lv2:optionalFeature lv2:hardRTCapable ;
+ lv2:port [
+ a lv2:CVPort ,
+ lv2:InputPort ;
+ lv2:index 0 ;
+ lv2:name "Gate" ;
+ lv2:symbol "gate" ;
+ ] , [
+ a lv2:CVPort ,
+ lv2:InputPort ;
+ lv2:index 1 ;
+ lv2:name "Off" ;
+ lv2:symbol "off" ;
+ ] , [
+ a lv2:CVPort ,
+ lv2:InputPort ;
+ lv2:index 2 ;
+ lv2:name "On" ;
+ lv2:symbol "on" ;
+ ] , [
+ a lv2:CVPort ,
+ lv2:OutputPort ;
+ lv2:index 3 ;
+ lv2:name "Output" ;
+ lv2:symbol "output" ;
+ ] ;
+ doap:name "Multiplexer" .
diff --git a/omins.lv2/prob_switch.ttl b/omins.lv2/prob_switch.ttl
new file mode 100644
index 0000000..547f79f
--- /dev/null
+++ b/omins.lv2/prob_switch.ttl
@@ -0,0 +1,45 @@
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix omins: <http://drobilla.net/plugins/omins/> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+
+<http://drobilla.net/plugins/omins/prob_switch>
+ lv2:microVersion 0 ;
+ lv2:minorVersion 0 ;
+ lv2:optionalFeature lv2:hardRTCapable ;
+ lv2:port [
+ lv2:index 0 ;
+ lv2:name "Input 1" ;
+ lv2:symbol "port0" ;
+ a lv2:CVPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 1 ;
+ lv2:name "Input 2" ;
+ lv2:symbol "port1" ;
+ a lv2:CVPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 2 ;
+ lv2:name "Probability" ;
+ lv2:symbol "port2" ;
+ a lv2:CVPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 3 ;
+ lv2:name "Output" ;
+ lv2:symbol "port3" ;
+ a lv2:CVPort ,
+ lv2:OutputPort ,
+ lv2:Port
+ ] ;
+ lv2:project omins: ;
+ doap:name "Probability Switch" ;
+ a lv2:Plugin .
diff --git a/omins.lv2/range_trans.ttl b/omins.lv2/range_trans.ttl
new file mode 100644
index 0000000..9e57d20
--- /dev/null
+++ b/omins.lv2/range_trans.ttl
@@ -0,0 +1,63 @@
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix omins: <http://drobilla.net/plugins/omins/> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+
+<http://drobilla.net/plugins/omins/range_trans>
+ lv2:microVersion 0 ;
+ lv2:minorVersion 0 ;
+ lv2:optionalFeature lv2:hardRTCapable ;
+ lv2:port [
+ lv2:default 0 ;
+ lv2:index 0 ;
+ lv2:name "Input Min" ;
+ lv2:symbol "port0" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:default 1 ;
+ lv2:index 1 ;
+ lv2:name "Input Max" ;
+ lv2:symbol "port1" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:default 0 ;
+ lv2:index 2 ;
+ lv2:name "Output Min" ;
+ lv2:symbol "port2" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:default 1 ;
+ lv2:index 3 ;
+ lv2:name "Output Max" ;
+ lv2:symbol "port3" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 4 ;
+ lv2:name "Input" ;
+ lv2:symbol "port4" ;
+ a lv2:CVPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 5 ;
+ lv2:name "Output" ;
+ lv2:symbol "port5" ;
+ a lv2:CVPort ,
+ lv2:OutputPort ,
+ lv2:Port
+ ] ;
+ lv2:project omins: ;
+ doap:name "Range Translator" ;
+ a lv2:Plugin .
diff --git a/omins.lv2/sample_and_hold.ttl b/omins.lv2/sample_and_hold.ttl
new file mode 100644
index 0000000..e131fa1
--- /dev/null
+++ b/omins.lv2/sample_and_hold.ttl
@@ -0,0 +1,53 @@
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix omins: <http://drobilla.net/plugins/omins/> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+
+<http://drobilla.net/plugins/omins/sample_and_hold>
+ lv2:microVersion 0 ;
+ lv2:minorVersion 0 ;
+ lv2:optionalFeature lv2:hardRTCapable ;
+ lv2:port [
+ lv2:index 0 ;
+ lv2:name "Input" ;
+ lv2:symbol "in" ;
+ a lv2:CVPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 1 ;
+ lv2:name "Trigger" ;
+ lv2:symbol "trigger" ;
+ a lv2:CVPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 2 ;
+ lv2:name "Threshold" ;
+ lv2:symbol "threshold" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 3 ;
+ lv2:name "Continuous Triggering" ;
+ lv2:portProperty lv2:toggled ;
+ lv2:symbol "continuous" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 4 ;
+ lv2:name "Output" ;
+ lv2:symbol "out" ;
+ a lv2:CVPort ,
+ lv2:OutputPort ,
+ lv2:Port
+ ] ;
+ lv2:project omins: ;
+ doap:name "Sample and Hold" ;
+ a lv2:Plugin .
diff --git a/omins.lv2/signal_abs.ttl b/omins.lv2/signal_abs.ttl
new file mode 100644
index 0000000..a3f89a2
--- /dev/null
+++ b/omins.lv2/signal_abs.ttl
@@ -0,0 +1,40 @@
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix omins: <http://drobilla.net/plugins/omins/> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+
+<http://drobilla.net/plugins/omins/signal_abs>
+ lv2:microVersion 0 ;
+ lv2:minorVersion 0 ;
+ lv2:optionalFeature lv2:hardRTCapable ;
+ lv2:port [
+ lv2:index 0 ;
+ lv2:name "Input" ;
+ lv2:symbol "port0" ;
+ a lv2:AudioPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:default 1 ;
+ lv2:index 1 ;
+ lv2:name "Sign" ;
+ lv2:portProperty lv2:toggled ;
+ lv2:symbol "port1" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 2 ;
+ lv2:name "Output" ;
+ lv2:symbol "port2" ;
+ a lv2:AudioPort ,
+ lv2:OutputPort ,
+ lv2:Port
+ ] ;
+ lv2:project omins: ;
+ doap:name "Signed Absolute Value" ;
+ a lv2:Plugin .
diff --git a/omins.lv2/slew_limiter.ttl b/omins.lv2/slew_limiter.ttl
new file mode 100644
index 0000000..f56985d
--- /dev/null
+++ b/omins.lv2/slew_limiter.ttl
@@ -0,0 +1,48 @@
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix omins: <http://drobilla.net/plugins/omins/> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+@prefix units: <http://lv2plug.in/ns/extensions/units#> .
+
+<http://drobilla.net/plugins/omins/slew_limiter>
+ lv2:microVersion 0 ;
+ lv2:minorVersion 0 ;
+ lv2:optionalFeature lv2:hardRTCapable ;
+ lv2:port [
+ lv2:index 0 ;
+ lv2:name "Input" ;
+ lv2:symbol "in" ;
+ a lv2:CVPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 1 ;
+ lv2:name "Rise rate" ;
+ lv2:symbol "rise_rate" ;
+ a lv2:CVPort ,
+ lv2:InputPort ,
+ lv2:Port ;
+ units:unit units:hz
+ ] , [
+ lv2:index 2 ;
+ lv2:name "Fall rate" ;
+ lv2:symbol "fall_rate" ;
+ a lv2:CVPort ,
+ lv2:InputPort ,
+ lv2:Port ;
+ units:unit units:hz
+ ] , [
+ lv2:index 3 ;
+ lv2:name "Output" ;
+ lv2:symbol "out" ;
+ a lv2:CVPort ,
+ lv2:OutputPort ,
+ lv2:Port
+ ] ;
+ lv2:project omins: ;
+ doap:name "Slew Limiter" ;
+ a lv2:Plugin .
diff --git a/omins.lv2/slide.ttl b/omins.lv2/slide.ttl
new file mode 100644
index 0000000..90f21be
--- /dev/null
+++ b/omins.lv2/slide.ttl
@@ -0,0 +1,48 @@
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix omins: <http://drobilla.net/plugins/omins/> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+@prefix units: <http://lv2plug.in/ns/extensions/units#> .
+
+<http://drobilla.net/plugins/omins/slide>
+ lv2:microVersion 0 ;
+ lv2:minorVersion 0 ;
+ lv2:optionalFeature lv2:hardRTCapable ;
+ lv2:port [
+ lv2:index 0 ;
+ lv2:name "Input" ;
+ lv2:symbol "in" ;
+ a lv2:CVPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 1 ;
+ lv2:name "Rise time" ;
+ lv2:symbol "rise_time" ;
+ a lv2:CVPort ,
+ lv2:InputPort ,
+ lv2:Port ;
+ units:unit units:s
+ ] , [
+ lv2:index 2 ;
+ lv2:name "Fall time" ;
+ lv2:symbol "fall_time" ;
+ a lv2:CVPort ,
+ lv2:InputPort ,
+ lv2:Port ;
+ units:unit units:s
+ ] , [
+ lv2:index 3 ;
+ lv2:name "Output" ;
+ lv2:symbol "out" ;
+ a lv2:CVPort ,
+ lv2:OutputPort ,
+ lv2:Port
+ ] ;
+ lv2:project omins: ;
+ doap:name "Slide" ;
+ a lv2:Plugin .
diff --git a/omins.lv2/waveguide_mesh.ttl b/omins.lv2/waveguide_mesh.ttl
new file mode 100644
index 0000000..01e502f
--- /dev/null
+++ b/omins.lv2/waveguide_mesh.ttl
@@ -0,0 +1,70 @@
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix omins: <http://drobilla.net/plugins/omins/> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+
+<http://drobilla.net/plugins/omins/waveguide_mesh>
+ lv2:microVersion 0 ;
+ lv2:minorVersion 0 ;
+ lv2:optionalFeature lv2:hardRTCapable ;
+ lv2:port [
+ lv2:index 0 ;
+ lv2:name "Trigger" ;
+ lv2:symbol "port0" ;
+ a lv2:CVPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 1 ;
+ lv2:name "Output" ;
+ lv2:symbol "port1" ;
+ a lv2:AudioPort ,
+ lv2:OutputPort ,
+ lv2:Port
+ ] , [
+ lv2:default 0.11005 ;
+ lv2:index 2 ;
+ lv2:maximum 0.22 ;
+ lv2:minimum 0.0001 ;
+ lv2:name "Tension" ;
+ lv2:symbol "port2" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:index 3 ;
+ lv2:name "Power" ;
+ lv2:symbol "port3" ;
+ a lv2:AudioPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:default 1 ;
+ lv2:index 4 ;
+ lv2:maximum 7.01 ;
+ lv2:minimum 0.95 ;
+ lv2:name "Excitation X" ;
+ lv2:portProperty lv2:integer ;
+ lv2:symbol "port4" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] , [
+ lv2:default 1 ;
+ lv2:index 5 ;
+ lv2:maximum 7.01 ;
+ lv2:minimum 0.95 ;
+ lv2:name "Excitation Y" ;
+ lv2:portProperty lv2:integer ;
+ lv2:symbol "port5" ;
+ a lv2:ControlPort ,
+ lv2:InputPort ,
+ lv2:Port
+ ] ;
+ lv2:project omins: ;
+ doap:name "Simple Waveguide Mesh" ;
+ a lv2:Plugin .
diff --git a/omins.spec b/omins.spec
new file mode 100644
index 0000000..4e6d3ef
--- /dev/null
+++ b/omins.spec
@@ -0,0 +1,41 @@
+Summary: A collection of plugins useful for modular synths.
+Name: omins
+Version: 0.0.1
+Release: 1
+License: GPL
+Group: Applications/Multimedia
+URL: http://www.nongnu.org/om-synth/
+Source0: %{name}-%{version}.tar.gz
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
+Requires: ladspa
+BuildRequires: ladspa-devel
+
+%description
+Omins is a collection of ladspa plugins that are useful for modular synths. This includes a formant filter, envelope generators, probalistic switches, and rate converters.
+
+%prep
+%setup -q
+
+%build
+%configure
+make
+
+%install
+%{__rm} -rf %{buildroot}
+%{__make} install \
+ DESTDIR="%{buildroot}"
+
+
+%clean
+rm -rf %{buildroot}
+
+%files
+%defattr(-,root,root,-)
+%{_libdir}/ladspa/*.so
+%doc AUTHORS ChangeLog COPYING NEWS README
+
+
+%changelog
+* Tue Apr 26 2005 Loki Davison <loki@berlios.de>
+- initial package, v0.0.1
+
diff --git a/src/adenv.c b/src/adenv.c
new file mode 100644
index 0000000..dabca16
--- /dev/null
+++ b/src/adenv.c
@@ -0,0 +1,250 @@
+/*
+ adenv.c - A LV2 plugin to generate percussive (i.e no sustain time), linear AD envelopes.
+
+ Copyright 2005 Loki Davison
+ based on ADENV by Mike Rawes
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#define _XOPEN_SOURCE 600 /* strdup */
+#include <stdlib.h>
+#include <lv2/lv2plug.in/ns/lv2core/lv2.h>
+#include <stdio.h>
+#include <math.h>
+
+#define ADENV_BASE_ID 2661
+
+#define ADENV_GATE 0
+#define ADENV_TRIGGER 1
+#define ADENV_ATTACK 2
+#define ADENV_DECAY 3
+#define ADENV_OUTPUT 4
+
+LV2_Descriptor **dahdsr_descriptors = 0;
+
+typedef enum {
+ IDLE,
+ ATTACK,
+ DECAY,
+} ADENVState;
+
+typedef struct {
+ float *gate;
+ float *trigger;
+ float *attack;
+ float *decay;
+ float *output;
+ float srate;
+ float inv_srate;
+ float last_gate;
+ float last_trigger;
+ float from_level;
+ float level;
+ ADENVState state;
+ unsigned long samples;
+} Dahdsr;
+
+static void
+cleanup(LV2_Handle instance)
+{
+ free(instance);
+}
+
+static void
+connect_port(LV2_Handle instance,
+ uint32_t port,
+ void* data)
+{
+ Dahdsr *plugin = (Dahdsr *) instance;
+
+ switch (port) {
+ case ADENV_GATE:
+ plugin->gate = (float*)data;
+ break;
+ case ADENV_TRIGGER:
+ plugin->trigger = (float*)data;
+ break;
+ case ADENV_ATTACK:
+ plugin->attack = (float*)data;
+ break;
+ case ADENV_DECAY:
+ plugin->decay = (float*)data;
+ break;
+ case ADENV_OUTPUT:
+ plugin->output = (float*)data;
+ break;
+ }
+}
+
+static LV2_Handle
+instantiate(const LV2_Descriptor* descriptor,
+ double sample_rate,
+ const char* bundle_path,
+ const LV2_Feature* const* features)
+{
+ Dahdsr *plugin = (Dahdsr *) malloc(sizeof(Dahdsr));
+
+ plugin->srate = (float) sample_rate;
+ plugin->inv_srate = 1.0f / plugin->srate;
+
+ return (LV2_Handle) plugin;
+}
+
+static void
+activate(LV2_Handle instance)
+{
+ Dahdsr *plugin = (Dahdsr *) instance;
+
+ plugin->last_gate = 0.0f;
+ plugin->last_trigger = 0.0f;
+ plugin->from_level = 0.0f;
+ plugin->level = 0.0f;
+ plugin->state = IDLE;
+ plugin->samples = 0;
+}
+
+static void
+run(LV2_Handle instance, uint32_t sample_count)
+{
+ Dahdsr *plugin = (Dahdsr *) instance;
+
+ /* Gate */
+ float *gate = plugin->gate;
+
+ /* Trigger */
+ float *trigger = plugin->trigger;
+
+ /* Attack Time (s) */
+ float attack = *(plugin->attack);
+
+ /* Decay Time (s) */
+ float decay = *(plugin->decay);
+
+ /* Envelope Out */
+ float *output = plugin->output;
+
+ /* Instance Data */
+ float srate = plugin->srate;
+ float inv_srate = plugin->inv_srate;
+ float last_gate = plugin->last_gate;
+ float last_trigger = plugin->last_trigger;
+ float from_level = plugin->from_level;
+ float level = plugin->level;
+ ADENVState state = plugin->state;
+ unsigned long samples = plugin->samples;
+
+ float gat, trg, att, dec;
+ float elapsed;
+ unsigned long s;
+
+ /* Convert times into rates */
+ att = attack > 0.0f ? inv_srate / attack : srate;
+ dec = decay > 0.0f ? inv_srate / decay : srate;
+ /* cuse's formula ...
+ * ReleaseCoeff = (ln(EndLevel) - ln(StartLevel)) / (EnvelopeDuration * SampleRate)
+ *
+ * while (currentSample < endSample) Level += Level * ReleaseCoeff;
+ */
+
+ float ReleaseCoeff = log(0.001) / (decay * srate);
+
+ for (s = 0; s < sample_count; s++) {
+ gat = gate[s];
+ trg = trigger[s];
+
+ /* Initialise delay phase if gate is opened and was closed, or
+ we received a trigger */
+ if ((trg > 0.0f && !(last_trigger > 0.0f)) ||
+ (gat > 0.0f && !(last_gate > 0.0f))) {
+ //fprintf(stderr, "triggered in control \n");
+ if (att <= srate) {
+ state = ATTACK;
+ }
+ samples = 0;
+ }
+
+ if (samples == 0)
+ from_level = level;
+
+ /* Calculate level of envelope from current state */
+ switch (state) {
+ case IDLE:
+ level = 0;
+ break;
+ case ATTACK:
+ samples++;
+ elapsed = (float) samples *att;
+
+ if (elapsed > 1.0f) {
+ state = DECAY;
+ level = 1.0f;
+ samples = 0;
+ } else {
+ level = from_level + elapsed * (1.0f - from_level);
+ }
+ break;
+ case DECAY:
+ samples++;
+ elapsed = (float) samples *dec;
+
+ if (elapsed > 1.0f) {
+ state = IDLE;
+ level = 0.0f;
+ samples = 0;
+ } else {
+ //fprintf(stderr, "decay, dec %f elapsed %f from level %f level %f\n", dec, elapsed, from_level, level);
+ level += level * ReleaseCoeff;
+
+ }
+ break;
+ default:
+ /* Should never happen */
+ fprintf(stderr, "bugger!!!");
+ level = 0.0f;
+ }
+
+ output[s] = level;
+ last_gate = gat;
+ last_trigger = trg;
+ }
+
+ plugin->last_gate = last_gate;
+ plugin->last_trigger = last_trigger;
+ plugin->from_level = from_level;
+ plugin->level = level;
+ plugin->state = state;
+ plugin->samples = samples;
+}
+
+static const LV2_Descriptor descriptor = {
+ "http://drobilla.net/plugins/omins/adenv",
+ instantiate,
+ connect_port,
+ activate,
+ run,
+ NULL,
+ cleanup,
+ NULL,
+};
+
+LV2_SYMBOL_EXPORT const LV2_Descriptor*
+lv2_descriptor(uint32_t index)
+{
+ switch (index) {
+ case 0: return &descriptor;
+ default: return NULL;
+ }
+}
diff --git a/src/adenv_lvl.c b/src/adenv_lvl.c
new file mode 100644
index 0000000..4fb6a9c
--- /dev/null
+++ b/src/adenv_lvl.c
@@ -0,0 +1,299 @@
+/*
+ adenv.c - A LV2 plugin to generate percussive (i.e no sustain time), linear AD envelopes.
+ This one takes in levels to make filter sweeps/etc easier.
+
+ Copyright 2005 Loki Davison
+ based of DADSR by Mike Rawes
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#define _XOPEN_SOURCE 600 /* strdup */
+#include <stdlib.h>
+#include <lv2/lv2plug.in/ns/lv2core/lv2.h>
+#include <stdio.h>
+#include <math.h>
+
+#define ADENVLVL_BASE_ID 2662
+#define ADENVLVL_VARIANT_COUNT 1
+
+#define ADENVLVL_GATE 0
+#define ADENVLVL_TRIGGER 1
+#define ADENVLVL_START_LEVEL 2
+#define ADENVLVL_ATTACK_LEVEL 3
+#define ADENVLVL_DECAY_LEVEL 4
+#define ADENVLVL_ATTACK 5
+#define ADENVLVL_DECAY 6
+#define ADENVLVL_OUTPUT 7
+#define ADENVLVL_RESET 8
+
+typedef enum {
+ IDLE,
+ ATTACK,
+ DECAY,
+} ADENVLVLState;
+
+typedef struct {
+ float *gate;
+ float *trigger;
+ float *attack;
+ float *reset;
+ float *decay;
+ float *start_level;
+ float *attack_level;
+ float *decay_level;
+ float *output;
+ float srate;
+ float inv_srate;
+ float last_gate;
+ float last_trigger;
+ float last_reset;
+ float level;
+ ADENVLVLState state;
+ unsigned long samples;
+} Dahdsr;
+
+static void
+cleanup(LV2_Handle instance)
+{
+ free(instance);
+}
+
+static void
+connect_port(LV2_Handle instance,
+ uint32_t port, void * data)
+{
+ Dahdsr *plugin = (Dahdsr *) instance;
+
+ switch (port) {
+ case ADENVLVL_GATE:
+ plugin->gate = (float*)data;
+ break;
+ case ADENVLVL_TRIGGER:
+ plugin->trigger = (float*)data;
+ break;
+ case ADENVLVL_START_LEVEL:
+ plugin->start_level = (float*)data;
+ break;
+ case ADENVLVL_ATTACK_LEVEL:
+ plugin->attack_level = (float*)data;
+ break;
+ case ADENVLVL_DECAY_LEVEL:
+ plugin->decay_level = (float*)data;
+ break;
+ case ADENVLVL_ATTACK:
+ plugin->attack = (float*)data;
+ break;
+ case ADENVLVL_DECAY:
+ plugin->decay = (float*)data;
+ break;
+ case ADENVLVL_RESET:
+ plugin->reset = (float*)data;
+ break;
+ case ADENVLVL_OUTPUT:
+ plugin->output = (float*)data;
+ break;
+ }
+}
+
+static LV2_Handle
+instantiate(const LV2_Descriptor* descriptor,
+ double sample_rate,
+ const char* bundle_path,
+ const LV2_Feature* const* features)
+{
+ Dahdsr *plugin = (Dahdsr *) malloc(sizeof(Dahdsr));
+
+ plugin->srate = (float) sample_rate;
+ plugin->inv_srate = 1.0f / plugin->srate;
+
+ return (LV2_Handle) plugin;
+}
+
+static void
+activate(LV2_Handle instance)
+{
+ Dahdsr *plugin = (Dahdsr *) instance;
+
+ plugin->last_gate = 0.0f;
+ plugin->last_trigger = 0.0f;
+ plugin->last_reset = 0.0f;
+ plugin->level = 0.0f;
+ plugin->state = IDLE;
+ plugin->samples = 0;
+}
+
+static void
+run(LV2_Handle instance, uint32_t sample_count)
+{
+ Dahdsr *plugin = (Dahdsr *) instance;
+
+ /* Gate */
+ float *gate = plugin->gate;
+
+ /* Trigger */
+ float *trigger = plugin->trigger;
+
+ /* Reset */
+ float *reset = plugin->reset;
+
+ /* Start Level */
+ float start_level = *(plugin->start_level);
+
+ /* Attack Level */
+ float attack_level = *(plugin->attack_level);
+
+ /* Decay Level */
+ float decay_level = *(plugin->decay_level);
+
+ /* Attack Time (s) */
+ float attack = *(plugin->attack);
+
+ /* Decay Time (s) */
+ float decay = *(plugin->decay);
+
+ /* Envelope Out */
+ float *output = plugin->output;
+
+ /* Instance Data */
+ float srate = plugin->srate;
+ float inv_srate = plugin->inv_srate;
+ float last_gate = plugin->last_gate;
+ float last_trigger = plugin->last_trigger;
+ float last_reset = plugin->last_reset;
+ float level = plugin->level;
+ ADENVLVLState state = plugin->state;
+ unsigned long samples = plugin->samples;
+
+ float gat, trg, att, dec;
+ float elapsed;
+ unsigned long s;
+
+ /* Convert times into rates */
+ att = attack > 0.0f ? inv_srate / attack : srate;
+ dec = decay > 0.0f ? inv_srate / decay : srate;
+ /* cuse's formula ...
+ * ReleaseCoeff = (ln(EndLevel) - ln(StartLevel)) / (EnvelopeDuration * SampleRate)
+ *
+ * while (currentSample < endSample) Level += Level * ReleaseCoeff;
+ */
+ /* check params don't cause div by zero */
+ if (start_level == 0) {
+ start_level = 0.0000001;
+ }
+ if (attack_level == 0) {
+ attack_level = 0.0000001;
+ }
+ if (decay_level == 0) {
+ decay_level = 0.0000001;
+ }
+ float ReleaseCoeff_att =
+ (log(attack_level) - log(start_level)) / (attack * srate);
+ float ReleaseCoeff_dec =
+ (log(decay_level) - log(attack_level)) / (decay * srate);
+
+ for (s = 0; s < sample_count; s++) {
+ gat = gate[s];
+ trg = trigger[s];
+
+ /* Initialise delay phase if gate is opened and was closed, or
+ we received a trigger */
+ if ((trg > 0.0f && !(last_trigger > 0.0f)) ||
+ (gat > 0.0f && !(last_gate > 0.0f))) {
+ //fprintf(stderr, "triggered in control \n");
+ if (att < srate) {
+ state = ATTACK;
+ }
+ samples = 0;
+ }
+ /* if we got a reset */
+
+ if (reset[s] > 0.0f && !(last_reset > 0.0f)) {
+ level = start_level;
+ /*fprintf(stderr, "got reset start level %f \n", start_level); */
+ }
+
+ /* Calculate level of envelope from current state */
+ switch (state) {
+ case IDLE:
+ /* might need to fix this... */
+ break;
+ case ATTACK:
+ /* fix level adding prob */
+ if (samples == 0) {
+ level = start_level;
+ }
+ samples++;
+ elapsed = (float) samples *att;
+
+ if (elapsed > 1.0f) {
+ state = DECAY;
+ samples = 0;
+ //fprintf(stderr, "finished attack, RC %f, level %f attack_level %f start %f\n", ReleaseCoeff_att, level, attack_level, start_level);
+ } else {
+ level += level * ReleaseCoeff_att;
+ }
+ break;
+ case DECAY:
+ samples++;
+ elapsed = (float) samples *dec;
+
+ if (elapsed > 1.0f) {
+ //fprintf(stderr, "finished decay, RC %f , level %f decay_level %f start %f\n", ReleaseCoeff_dec, level, decay_level, start_level);
+ state = IDLE;
+ samples = 0;
+ } else {
+ level += level * ReleaseCoeff_dec;
+ }
+ break;
+ default:
+ /* Should never happen */
+ fprintf(stderr, "bugger!!!");
+ level = 0.0f;
+ }
+
+ output[s] = level;
+ last_gate = gat;
+ last_trigger = trg;
+ last_reset = reset[s];
+ }
+
+ plugin->last_gate = last_gate;
+ plugin->last_trigger = last_trigger;
+ plugin->last_reset = last_reset;
+ plugin->level = level;
+ plugin->state = state;
+ plugin->samples = samples;
+}
+
+static const LV2_Descriptor descriptor = {
+ "http://drobilla.net/plugins/omins/adenv_lvl",
+ instantiate,
+ connect_port,
+ activate,
+ run,
+ NULL,
+ cleanup,
+ NULL,
+};
+
+LV2_SYMBOL_EXPORT const LV2_Descriptor*
+lv2_descriptor(uint32_t index)
+{
+ switch (index) {
+ case 0: return &descriptor;
+ default: return NULL;
+ }
+}
diff --git a/src/comparison.c b/src/comparison.c
new file mode 100644
index 0000000..009989b
--- /dev/null
+++ b/src/comparison.c
@@ -0,0 +1,135 @@
+/* Comparison plugin.
+ * Copyright 2005 Thorsten Wilms.
+ *
+ * This plugin is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This plugin is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define _XOPEN_SOURCE 600 /* strdup */
+#include <stdlib.h>
+#include <string.h>
+
+#include <lv2/lv2plug.in/ns/lv2core/lv2.h>
+
+#include "lv2.h"
+
+#define COMP_BASE_ID 4440
+
+#define COMP_NUM_PORTS 6
+
+/* Port Numbers */
+#define COMP_A 0
+#define COMP_B 1
+#define COMP_LARGER 2
+#define COMP_SMALLER 3
+#define COMP_A_LARGER 4
+#define COMP_EQUAL 5
+
+/* All state information for plugin */
+typedef struct {
+ /* Ports */
+ float *a_buffer;
+ float *b_buffer;
+ float *larger_buffer;
+ float *smaller_buffer;
+ float *a_larger_buffer;
+ float *equal_buffer;
+} Comp;
+
+/* Construct a new plugin instance */
+static LV2_Handle
+instantiate(const LV2_Descriptor* descriptor,
+ double sample_rate,
+ const char* bundle_path,
+ const LV2_Feature* const* features)
+{
+ Comp* plugin = (Comp*)calloc(1, sizeof(Comp));
+
+ return (LV2_Handle)plugin;
+}
+
+/* Connect a port to a data location */
+static void
+connect_port(LV2_Handle instance,
+ uint32_t port,
+ void* data)
+{
+ Comp* plugin = (Comp*)instance;
+ switch (port) {
+ case COMP_A:
+ plugin->a_buffer = (float*)data;
+ break;
+ case COMP_B:
+ plugin->b_buffer = (float*)data;
+ break;
+ case COMP_LARGER:
+ plugin->larger_buffer = (float*)data;
+ break;
+ case COMP_SMALLER:
+ plugin->smaller_buffer = (float*)data;
+ break;
+ case COMP_A_LARGER:
+ plugin->a_larger_buffer = (float*)data;
+ break;
+ case COMP_EQUAL:
+ plugin->equal_buffer = (float*)data;
+ break;
+ }
+}
+
+static void
+run(LV2_Handle instance, uint32_t nframes)
+{
+ Comp* const plugin = (Comp*)instance;
+ const float* const a = plugin->a_buffer;
+ const float* const b = plugin->b_buffer;
+ float* const larger = plugin->larger_buffer;
+ float* const smaller = plugin->smaller_buffer;
+ float* const a_larger = plugin->a_larger_buffer;
+ float* const equal = plugin->equal_buffer;
+ unsigned long i;
+
+ for (i = 0; i < nframes; i++) {
+ equal[i] = (a[i] == b[i]) ? 1.0 : 0.0;
+ larger[i] = (a[i] > b[i]) ? a[i] : b[i];
+ smaller[i] = (a[i] < b[i]) ? a[i] : b[i];
+ a_larger[i] = (a[i] > b[i]) ? 1.0 : 0.0;
+ }
+}
+
+static void
+cleanup(LV2_Handle instance)
+{
+ free(instance);
+}
+
+static const LV2_Descriptor descriptor = {
+ "http://drobilla.net/plugins/omins/comparison",
+ instantiate,
+ connect_port,
+ NULL,
+ run,
+ NULL,
+ cleanup,
+ NULL,
+};
+
+LV2_SYMBOL_EXPORT const LV2_Descriptor*
+lv2_descriptor(uint32_t index)
+{
+ switch (index) {
+ case 0: return &descriptor;
+ default: return NULL;
+ }
+}
diff --git a/src/dahdsr_fexp.c b/src/dahdsr_fexp.c
new file mode 100644
index 0000000..7e92c09
--- /dev/null
+++ b/src/dahdsr_fexp.c
@@ -0,0 +1,342 @@
+/*
+ dahdsr_fexp.c - A LV2 plugin to generate DAHDSR envelopes
+ exponential attack, decay and release version.
+ Copyright 2005 Loki Davison, based on DAHDSR by Mike Rawes
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#define _XOPEN_SOURCE 600 /* strdup */
+#include <stdlib.h>
+#include <lv2/lv2plug.in/ns/lv2core/lv2.h>
+#include <math.h>
+
+#define DAHDSR_GATE 0
+#define DAHDSR_TRIGGER 1
+#define DAHDSR_DELAY 2
+#define DAHDSR_ATTACK 3
+#define DAHDSR_HOLD 4
+#define DAHDSR_DECAY 5
+#define DAHDSR_SUSTAIN 6
+#define DAHDSR_RELEASE 7
+#define DAHDSR_OUTPUT 8
+
+typedef enum {
+ IDLE,
+ DELAY,
+ ATTACK,
+ HOLD,
+ DECAY,
+ SUSTAIN,
+ RELEASE
+} DAHDSRState;
+
+typedef struct {
+ float *gate;
+ float *trigger;
+ float *delay;
+ float *attack;
+ float *hold;
+ float *decay;
+ float *sustain;
+ float *release;
+ float *output;
+ float srate;
+ float inv_srate;
+ float last_gate;
+ float last_trigger;
+ float from_level;
+ float level;
+ DAHDSRState state;
+ unsigned long samples;
+} Dahdsr;
+
+static void
+cleanup(LV2_Handle instance)
+{
+ free(instance);
+}
+
+static void
+connect_port(LV2_Handle instance,
+ uint32_t port,
+ void* data)
+{
+ Dahdsr *plugin = (Dahdsr *) instance;
+
+ switch (port) {
+ case DAHDSR_GATE:
+ plugin->gate = (float*)data;
+ break;
+ case DAHDSR_TRIGGER:
+ plugin->trigger = (float*)data;
+ break;
+ case DAHDSR_DELAY:
+ plugin->delay = (float*)data;
+ break;
+ case DAHDSR_ATTACK:
+ plugin->attack = (float*)data;
+ break;
+ case DAHDSR_HOLD:
+ plugin->hold = (float*)data;
+ break;
+ case DAHDSR_DECAY:
+ plugin->decay = (float*)data;
+ break;
+ case DAHDSR_SUSTAIN:
+ plugin->sustain = (float*)data;
+ break;
+ case DAHDSR_RELEASE:
+ plugin->release = (float*)data;
+ break;
+ case DAHDSR_OUTPUT:
+ plugin->output = (float*)data;
+ break;
+ }
+}
+
+static LV2_Handle
+instantiate(const LV2_Descriptor* descriptor,
+ double sample_rate,
+ const char* bundle_path,
+ const LV2_Feature* const* features)
+{
+ Dahdsr *plugin = (Dahdsr *) malloc(sizeof(Dahdsr));
+
+ plugin->srate = (float) sample_rate;
+ plugin->inv_srate = 1.0f / plugin->srate;
+
+ return (LV2_Handle) plugin;
+}
+
+static void
+activate(LV2_Handle instance)
+{
+ Dahdsr *plugin = (Dahdsr *) instance;
+
+ plugin->last_gate = 0.0f;
+ plugin->last_trigger = 0.0f;
+ plugin->from_level = 0.0f;
+ plugin->level = 0.0f;
+ plugin->state = IDLE;
+ plugin->samples = 0;
+}
+
+static void
+run(LV2_Handle instance, uint32_t sample_count)
+{
+ Dahdsr *plugin = (Dahdsr *) instance;
+
+ /* Gate */
+ float *gate = plugin->gate;
+
+ /* Trigger */
+ float *trigger = plugin->trigger;
+
+ /* Delay Time (s) */
+ float delay = *(plugin->delay);
+
+ /* Attack Time (s) */
+ float attack = *(plugin->attack);
+
+ /* Hold Time (s) */
+ float hold = *(plugin->hold);
+
+ /* Decay Time (s) */
+ float decay = *(plugin->decay);
+
+ /* Sustain Level */
+ float sustain = *(plugin->sustain);
+
+ /* Release Time (s) */
+ float release = *(plugin->release);
+
+ /* Envelope Out */
+ float *output = plugin->output;
+
+ /* Instance Data */
+ float srate = plugin->srate;
+ float inv_srate = plugin->inv_srate;
+ float last_gate = plugin->last_gate;
+ float last_trigger = plugin->last_trigger;
+ float from_level = plugin->from_level;
+ float level = plugin->level;
+ DAHDSRState state = plugin->state;
+ unsigned long samples = plugin->samples;
+
+ float gat, trg, del, att, hld, dec, sus, rel;
+ float elapsed;
+ unsigned long s;
+
+ /* Convert times into rates */
+ del = delay > 0.0f ? inv_srate / delay : srate;
+ att = attack > 0.0f ? inv_srate / attack : srate;
+ hld = hold > 0.0f ? inv_srate / hold : srate;
+ dec = decay > 0.0f ? inv_srate / decay : srate;
+ rel = release > 0.0f ? inv_srate / release : srate;
+ sus = sustain;
+
+ if (sus == 0.0f) {
+ sus = 0.001f;
+ }
+ if (sus > 1.0f) {
+ sus = 1.0f;
+ }
+
+ float ReleaseCoeff_att = (0 - log(0.001)) / (attack * srate);
+ float ReleaseCoeff_dec = (log(sus)) / (decay * srate);
+ float ReleaseCoeff_rel =
+ (log(0.001) - log(sus)) / (release * srate);
+
+ for (s = 0; s < sample_count; s++) {
+ gat = gate[s];
+ trg = trigger[s];
+
+ /* Initialise delay phase if gate is opened and was closed, or
+ we received a trigger */
+ if ((trg > 0.0f && !(last_trigger > 0.0f)) ||
+ (gat > 0.0f && !(last_gate > 0.0f))) {
+ if (del < srate) {
+ state = DELAY;
+ } else if (att < srate) {
+ state = ATTACK;
+ } else {
+ state = hld < srate ? HOLD
+ : (dec < srate ? DECAY
+ : (gat > 0.0f ? SUSTAIN
+ : (rel < srate ? RELEASE : IDLE)));
+ level = 1.0f;
+ }
+ samples = 0;
+ }
+
+ /* Release if gate was open and now closed */
+ if (state != IDLE && state != RELEASE &&
+ last_gate > 0.0f && !(gat > 0.0f)) {
+ state = rel < srate ? RELEASE : IDLE;
+ samples = 0;
+ }
+
+ if (samples == 0)
+ from_level = level;
+
+ /* Calculate level of envelope from current state */
+ switch (state) {
+ case IDLE:
+ level = 0;
+ break;
+ case DELAY:
+ samples++;
+ elapsed = (float) samples *del;
+
+ if (elapsed > 1.0f) {
+ state = att < srate ? ATTACK
+ : (hld < srate ? HOLD
+ : (dec < srate ? DECAY
+ : (gat > 0.0f ? SUSTAIN
+ : (rel < srate ? RELEASE : IDLE))));
+ samples = 0;
+ }
+ break;
+ case ATTACK:
+ samples++;
+ elapsed = (float) samples *att;
+
+ if (elapsed > 1.0f) {
+ state = hld < srate ? HOLD
+ : (dec < srate ? DECAY
+ : (gat > 0.0f ? SUSTAIN
+ : (rel < srate ? RELEASE : IDLE)));
+ level = 1.0f;
+ samples = 0;
+ } else {
+ level += level * ReleaseCoeff_att;
+ }
+ break;
+ case HOLD:
+ samples++;
+ elapsed = (float) samples *hld;
+
+ if (elapsed > 1.0f) {
+ state = dec < srate ? DECAY
+ : (gat > 0.0f ? SUSTAIN : (rel < srate ? RELEASE : IDLE));
+ samples = 0;
+ }
+ break;
+ case DECAY:
+ samples++;
+ elapsed = (float) samples *dec;
+
+ if (elapsed > 1.0f) {
+ state = gat > 0.0f ? SUSTAIN : (rel < srate ? RELEASE : IDLE);
+ level = sus;
+ samples = 0;
+ } else {
+ level += level * ReleaseCoeff_dec;
+ }
+ break;
+ case SUSTAIN:
+ level = sus;
+ break;
+ case RELEASE:
+ samples++;
+ elapsed = (float) samples *rel;
+
+ if (elapsed > 1.0f) {
+ state = IDLE;
+ level = 0.0f;
+ samples = 0;
+ } else {
+ level += level * ReleaseCoeff_rel;
+ }
+ break;
+ default:
+ /* Should never happen */
+ level = 0.0f;
+ }
+
+ output[s] = level;
+
+ last_gate = gat;
+ last_trigger = trg;
+ }
+
+ plugin->last_gate = last_gate;
+ plugin->last_trigger = last_trigger;
+ plugin->from_level = from_level;
+ plugin->level = level;
+ plugin->state = state;
+ plugin->samples = samples;
+}
+
+static const LV2_Descriptor descriptor = {
+ "http://drobilla.net/plugins/omins/dahdsr_fexp",
+ instantiate,
+ connect_port,
+ activate,
+ run,
+ NULL,
+ cleanup,
+ NULL,
+};
+
+LV2_SYMBOL_EXPORT const LV2_Descriptor*
+lv2_descriptor(uint32_t index)
+{
+ switch (index) {
+ case 0: return &descriptor;
+ default: return NULL;
+ }
+}
diff --git a/src/dahdsr_hexp.c b/src/dahdsr_hexp.c
new file mode 100644
index 0000000..8f45fc9
--- /dev/null
+++ b/src/dahdsr_hexp.c
@@ -0,0 +1,344 @@
+/*
+ dahdsr.so.c - A LV2 plugin to generate DAHDSR envelopes
+ linear attack, exponential decay and release version.
+ Copyright 2005 Loki Davison, based on DAHDSR by Mike Rawes
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#define _XOPEN_SOURCE 600 /* strdup */
+#include <stdlib.h>
+#include <lv2/lv2plug.in/ns/lv2core/lv2.h>
+#include <math.h>
+
+#define DAHDSR_GATE 0
+#define DAHDSR_TRIGGER 1
+#define DAHDSR_DELAY 2
+#define DAHDSR_ATTACK 3
+#define DAHDSR_HOLD 4
+#define DAHDSR_DECAY 5
+#define DAHDSR_SUSTAIN 6
+#define DAHDSR_RELEASE 7
+#define DAHDSR_OUTPUT 8
+
+LV2_Descriptor **dahdsr_descriptors = 0;
+
+typedef enum {
+ IDLE,
+ DELAY,
+ ATTACK,
+ HOLD,
+ DECAY,
+ SUSTAIN,
+ RELEASE
+} DAHDSRState;
+
+typedef struct {
+ float *gate;
+ float *trigger;
+ float *delay;
+ float *attack;
+ float *hold;
+ float *decay;
+ float *sustain;
+ float *release;
+ float *output;
+ float srate;
+ float inv_srate;
+ float last_gate;
+ float last_trigger;
+ float from_level;
+ float level;
+ DAHDSRState state;
+ unsigned long samples;
+} Dahdsr;
+
+static void
+cleanup(LV2_Handle instance)
+{
+ free(instance);
+}
+
+static void
+connect_port(LV2_Handle instance,
+ uint32_t port,
+ void* data)
+{
+ Dahdsr *plugin = (Dahdsr *) instance;
+
+ switch (port) {
+ case DAHDSR_GATE:
+ plugin->gate = (float*)data;
+ break;
+ case DAHDSR_TRIGGER:
+ plugin->trigger = (float*)data;
+ break;
+ case DAHDSR_DELAY:
+ plugin->delay = (float*)data;
+ break;
+ case DAHDSR_ATTACK:
+ plugin->attack = (float*)data;
+ break;
+ case DAHDSR_HOLD:
+ plugin->hold = (float*)data;
+ break;
+ case DAHDSR_DECAY:
+ plugin->decay = (float*)data;
+ break;
+ case DAHDSR_SUSTAIN:
+ plugin->sustain = (float*)data;
+ break;
+ case DAHDSR_RELEASE:
+ plugin->release = (float*)data;
+ break;
+ case DAHDSR_OUTPUT:
+ plugin->output = (float*)data;
+ break;
+ }
+}
+
+static LV2_Handle
+instantiate(const LV2_Descriptor* descriptor,
+ double sample_rate,
+ const char* bundle_path,
+ const LV2_Feature* const* features)
+{
+ Dahdsr *plugin = (Dahdsr *) malloc(sizeof(Dahdsr));
+
+ plugin->srate = (float) sample_rate;
+ plugin->inv_srate = 1.0f / plugin->srate;
+
+ return (LV2_Handle) plugin;
+}
+
+static void
+activate(LV2_Handle instance)
+{
+ Dahdsr *plugin = (Dahdsr *) instance;
+
+ plugin->last_gate = 0.0f;
+ plugin->last_trigger = 0.0f;
+ plugin->from_level = 0.0f;
+ plugin->level = 0.0f;
+ plugin->state = IDLE;
+ plugin->samples = 0;
+}
+
+static void
+run(LV2_Handle instance, uint32_t sample_count)
+{
+ Dahdsr *plugin = (Dahdsr *) instance;
+
+ /* Gate */
+ float *gate = plugin->gate;
+
+ /* Trigger */
+ float *trigger = plugin->trigger;
+
+ /* Delay Time (s) */
+ float delay = *(plugin->delay);
+
+ /* Attack Time (s) */
+ float attack = *(plugin->attack);
+
+ /* Hold Time (s) */
+ float hold = *(plugin->hold);
+
+ /* Decay Time (s) */
+ float decay = *(plugin->decay);
+
+ /* Sustain Level */
+ float sustain = *(plugin->sustain);
+
+ /* Release Time (s) */
+ float release = *(plugin->release);
+
+ /* Envelope Out */
+ float *output = plugin->output;
+
+ /* Instance Data */
+ float srate = plugin->srate;
+ float inv_srate = plugin->inv_srate;
+ float last_gate = plugin->last_gate;
+ float last_trigger = plugin->last_trigger;
+ float from_level = plugin->from_level;
+ float level = plugin->level;
+ DAHDSRState state = plugin->state;
+ unsigned long samples = plugin->samples;
+
+ float gat, trg, del, att, hld, dec, sus, rel;
+ float elapsed;
+ unsigned long s;
+
+ /* Convert times into rates */
+ del = delay > 0.0f ? inv_srate / delay : srate;
+ att = attack > 0.0f ? inv_srate / attack : srate;
+ hld = hold > 0.0f ? inv_srate / hold : srate;
+ dec = decay > 0.0f ? inv_srate / decay : srate;
+ rel = release > 0.0f ? inv_srate / release : srate;
+ sus = sustain;
+
+ if (sus == 0) {
+ sus = 0.001;
+ }
+ if (sus > 1.0f) {
+ sus = 1.0f;
+ }
+
+ //float ReleaseCoeff_att = (0 - log(0.001)) / (attack * srate);
+ float ReleaseCoeff_dec = (log(sus)) / (decay * srate);
+ float ReleaseCoeff_rel =
+ (log(0.001) - log(sus)) / (release * srate);
+
+ for (s = 0; s < sample_count; s++) {
+ gat = gate[s];
+ trg = trigger[s];
+
+ /* Initialise delay phase if gate is opened and was closed, or
+ we received a trigger */
+ if ((trg > 0.0f && !(last_trigger > 0.0f)) ||
+ (gat > 0.0f && !(last_gate > 0.0f))) {
+ if (del < srate) {
+ state = DELAY;
+ } else if (att < srate) {
+ state = ATTACK;
+ } else {
+ state = hld < srate ? HOLD
+ : (dec < srate ? DECAY
+ : (gat > 0.0f ? SUSTAIN
+ : (rel < srate ? RELEASE : IDLE)));
+ level = 1.0f;
+ }
+ samples = 0;
+ }
+
+ /* Release if gate was open and now closed */
+ if (state != IDLE && state != RELEASE &&
+ last_gate > 0.0f && !(gat > 0.0f)) {
+ state = rel < srate ? RELEASE : IDLE;
+ samples = 0;
+ }
+
+ if (samples == 0)
+ from_level = level;
+
+ /* Calculate level of envelope from current state */
+ switch (state) {
+ case IDLE:
+ level = 0;
+ break;
+ case DELAY:
+ samples++;
+ elapsed = (float) samples *del;
+
+ if (elapsed > 1.0f) {
+ state = att < srate ? ATTACK
+ : (hld < srate ? HOLD
+ : (dec < srate ? DECAY
+ : (gat > 0.0f ? SUSTAIN
+ : (rel < srate ? RELEASE : IDLE))));
+ samples = 0;
+ }
+ break;
+ case ATTACK:
+ samples++;
+ elapsed = (float) samples *att;
+
+ if (elapsed > 1.0f) {
+ state = hld < srate ? HOLD
+ : (dec < srate ? DECAY
+ : (gat > 0.0f ? SUSTAIN
+ : (rel < srate ? RELEASE : IDLE)));
+ level = 1.0f;
+ samples = 0;
+ } else {
+ level = from_level + elapsed * (1.0f - from_level);
+ }
+ break;
+ case HOLD:
+ samples++;
+ elapsed = (float) samples *hld;
+
+ if (elapsed > 1.0f) {
+ state = dec < srate ? DECAY
+ : (gat > 0.0f ? SUSTAIN : (rel < srate ? RELEASE : IDLE));
+ samples = 0;
+ }
+ break;
+ case DECAY:
+ samples++;
+ elapsed = (float) samples *dec;
+
+ if (elapsed > 1.0f) {
+ state = gat > 0.0f ? SUSTAIN : (rel < srate ? RELEASE : IDLE);
+ level = sus;
+ samples = 0;
+ } else {
+ level += level * ReleaseCoeff_dec;
+ }
+ break;
+ case SUSTAIN:
+ level = sus;
+ break;
+ case RELEASE:
+ samples++;
+ elapsed = (float) samples *rel;
+
+ if (elapsed > 1.0f) {
+ state = IDLE;
+ level = 0.0f;
+ samples = 0;
+ } else {
+ level += level * ReleaseCoeff_rel;
+ }
+ break;
+ default:
+ /* Should never happen */
+ level = 0.0f;
+ }
+
+ output[s] = level;
+
+ last_gate = gat;
+ last_trigger = trg;
+ }
+
+ plugin->last_gate = last_gate;
+ plugin->last_trigger = last_trigger;
+ plugin->from_level = from_level;
+ plugin->level = level;
+ plugin->state = state;
+ plugin->samples = samples;
+}
+
+static const LV2_Descriptor descriptor = {
+ "http://drobilla.net/plugins/omins/dahdsr_hexp",
+ instantiate,
+ connect_port,
+ activate,
+ run,
+ NULL,
+ cleanup,
+ NULL,
+};
+
+LV2_SYMBOL_EXPORT const LV2_Descriptor*
+lv2_descriptor(uint32_t index)
+{
+ switch (index) {
+ case 0: return &descriptor;
+ default: return NULL;
+ }
+}
diff --git a/src/fast_crossfade.c b/src/fast_crossfade.c
new file mode 100644
index 0000000..0e4389b
--- /dev/null
+++ b/src/fast_crossfade.c
@@ -0,0 +1,139 @@
+/* Crossfade with AR Level plugin.
+ * Copyright 2005 Thorsten Wilms.
+ *
+ * Based on David Robillard's "Hz to AMS style V/Oct" plugin for the skeleton.
+ * Thanks to Florian Schmidt for explaining how to calculate the scale values
+ * before I could work it out myself! ;-)
+ *
+ * This plugin is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This plugin is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define _XOPEN_SOURCE 600 /* strdup */
+#include <stdlib.h>
+#include <string.h>
+
+#include <lv2/lv2plug.in/ns/lv2core/lv2.h>
+
+#define XFADE_LEVEL_ID 4410
+
+#define XFADE_NUM_PORTS 4
+
+/* Port Numbers */
+#define XFADE_LEVEL 0
+#define XFADE_A 1
+#define XFADE_B 2
+#define XFADE_OUTPUT 3
+
+/* All state information for plugin */
+typedef struct {
+ /* Ports */
+ float *level_buffer;
+ float *a_buffer;
+ float *b_buffer;
+ float *output_buffer;
+} XFADE;
+
+/* Construct a new plugin instance */
+static LV2_Handle
+instantiate(const LV2_Descriptor* descriptor,
+ double sample_rate,
+ const char* bundle_path,
+ const LV2_Feature* const* features)
+{
+ return (LV2_Handle)malloc(sizeof(XFADE));
+}
+
+/* Connect a port to a data location */
+static void
+connect_port(LV2_Handle instance,
+ uint32_t port,
+ void* data)
+{
+ XFADE* plugin;
+
+ plugin = (XFADE*) instance;
+ switch (port) {
+ case XFADE_LEVEL:
+ plugin->level_buffer = (float*)data;
+ break;
+ case XFADE_A:
+ plugin->a_buffer = (float*)data;
+ break;
+ case XFADE_B:
+ plugin->b_buffer = (float*)data;
+ break;
+ case XFADE_OUTPUT:
+ plugin->output_buffer = (float*)data;
+ break;
+ }
+}
+
+static void
+run(LV2_Handle instance, uint32_t nframes)
+{
+ float* level;
+ float* a;
+ float* b;
+ float* output;
+ XFADE* plugin;
+ unsigned long i;
+ float l;
+
+ plugin = (XFADE*)instance;
+
+ level = plugin->level_buffer;
+ a = plugin->a_buffer;
+ b = plugin->b_buffer;
+ output = plugin->output_buffer;
+
+ for (i = 0; i < nframes; i++) {
+ /* transfer multiplication value to 0 to 1 range */
+ if (level[i] < -1) {
+ l = 0;
+ } else if (level[i] > 1) {
+ l = 1;
+ } else {
+ l = (level[i] + 1) / 2;
+ }
+
+ output[i] = a[i] * l + b[i] * (1 - l);
+ }
+}
+
+static void
+cleanup(LV2_Handle instance)
+{
+ free(instance);
+}
+
+static const LV2_Descriptor descriptor = {
+ "http://drobilla.net/plugins/omins/fast_crossfade",
+ instantiate,
+ connect_port,
+ NULL,
+ run,
+ NULL,
+ cleanup,
+ NULL,
+};
+
+LV2_SYMBOL_EXPORT const LV2_Descriptor*
+lv2_descriptor(uint32_t index)
+{
+ switch (index) {
+ case 0: return &descriptor;
+ default: return NULL;
+ }
+}
diff --git a/src/formant_filter.c b/src/formant_filter.c
new file mode 100644
index 0000000..afbf4f7
--- /dev/null
+++ b/src/formant_filter.c
@@ -0,0 +1,213 @@
+/* Formant filter plugin. Copyright 2005-2011 David Robillard.
+ *
+ * Based on SSM formant filter,
+ * Copyright 2001 David Griffiths <dave@pawfal.org>
+ *
+ * Based on public domain code from alex@smartelectronix.com
+ *
+ * This plugin is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This plugin is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define _XOPEN_SOURCE 600 /* strdup */
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include <lv2/lv2plug.in/ns/lv2core/lv2.h>
+
+#define FORMANT_BASE_ID 4300
+
+#define FORMANT_NUM_PORTS 3
+
+/* Port Numbers */
+#define FORMANT_VOWEL 0
+#define FORMANT_INPUT 1
+#define FORMANT_OUTPUT 2
+
+/* Vowel Coefficients */
+const double coeff[5][11] = {
+ { /* A */ 8.11044e-06,
+ 8.943665402, -36.83889529, 92.01697887, -154.337906, 181.6233289,
+ -151.8651235, 89.09614114, -35.10298511, 8.388101016, -0.923313471
+ },
+ { /* E */ 4.36215e-06,
+ 8.90438318, -36.55179099, 91.05750846, -152.422234, 179.1170248,
+ -149.6496211, 87.78352223, -34.60687431, 8.282228154, -0.914150747
+ },
+ { /* I */ 3.33819e-06,
+ 8.893102966, -36.49532826, 90.96543286, -152.4545478, 179.4835618,
+ -150.315433, 88.43409371, -34.98612086, 8.407803364, -0.932568035
+ },
+ { /* O */ 1.13572e-06,
+ 8.994734087, -37.2084849, 93.22900521, -156.6929844, 184.596544,
+ -154.3755513, 90.49663749, -35.58964535, 8.478996281, -0.929252233
+ },
+ { /* U */ 4.09431e-07,
+ 8.997322763, -37.20218544, 93.11385476, -156.2530937, 183.7080141,
+ -153.2631681, 89.59539726, -35.12454591, 8.338655623, -0.910251753
+ }
+};
+
+/* All state information for plugin */
+typedef struct
+{
+ /* Ports */
+ float* vowel;
+ float* input;
+ float* output;
+
+ double memory[5][10];
+} Formant;
+
+/* Linear interpolation */
+inline static float
+linear(float bot, float top, float pos, float val1, float val2)
+{
+ float t = (pos - bot) / (top - bot);
+ return val1 * t + val2 * (1.0f - t);
+}
+
+/* Construct a new plugin instance */
+static LV2_Handle
+instantiate(const LV2_Descriptor* descriptor,
+ double sample_rate,
+ const char* bundle_path,
+ const LV2_Feature* const* features)
+{
+ return (LV2_Handle)malloc(sizeof(Formant));
+}
+
+/** Activate an instance */
+static void
+activate(LV2_Handle instance)
+{
+ Formant* plugin = (Formant*)instance;
+ int i, j;
+
+ for (i = 0; i < 5; ++i)
+ for (j = 0; j < 10; ++j)
+ plugin->memory[i][j] = 0.0;
+}
+
+/* Connect a port to a data location */
+static void
+connect_port(LV2_Handle instance,
+ uint32_t port,
+ void* data)
+{
+ Formant* plugin = (Formant*)instance;
+ switch (port) {
+ case FORMANT_VOWEL:
+ plugin->vowel = (float*)data;
+ break;
+ case FORMANT_INPUT:
+ plugin->input = (float*)data;
+ break;
+ case FORMANT_OUTPUT:
+ plugin->output = (float*)data;
+ break;
+ }
+}
+
+static void
+run(LV2_Handle instance, uint32_t nframes)
+{
+ Formant* plugin = (Formant*)instance;
+ float vowel;
+ float in;
+ float* out;
+ float res;
+ float o[5];
+ size_t n, v;
+
+ for (n=0; n < nframes; ++n) {
+ vowel = plugin->vowel[0];
+ in = plugin->input[n];
+ out = plugin->output;
+
+ for (v=0; v < 5; ++v) {
+ res = (float) (coeff[v][0] * (in * 0.1f) +
+ coeff[v][1] * plugin->memory[v][0] +
+ coeff[v][2] * plugin->memory[v][1] +
+ coeff[v][3] * plugin->memory[v][2] +
+ coeff[v][4] * plugin->memory[v][3] +
+ coeff[v][5] * plugin->memory[v][4] +
+ coeff[v][6] * plugin->memory[v][5] +
+ coeff[v][7] * plugin->memory[v][6] +
+ coeff[v][8] * plugin->memory[v][7] +
+ coeff[v][9] * plugin->memory[v][8] +
+ coeff[v][10] * plugin->memory[v][9] );
+
+ plugin->memory[v][9] = plugin->memory[v][8];
+ plugin->memory[v][8] = plugin->memory[v][7];
+ plugin->memory[v][7] = plugin->memory[v][6];
+ plugin->memory[v][6] = plugin->memory[v][5];
+ plugin->memory[v][5] = plugin->memory[v][4];
+ plugin->memory[v][4] = plugin->memory[v][3];
+ plugin->memory[v][3] = plugin->memory[v][2];
+ plugin->memory[v][2] = plugin->memory[v][1];
+ plugin->memory[v][1] = plugin->memory[v][0];
+ plugin->memory[v][0] = (double)res;
+
+ o[v] = res;
+ }
+
+ // Mix between formants
+ if (vowel <= 0)
+ out[n] = o[0];
+ else if (vowel > 0 && vowel < 1)
+ out[n] = linear(0.0f, 1.0f, vowel, o[1], o[0]);
+ else if (vowel == 1)
+ out[n] = o[1];
+ else if (vowel > 1 && vowel < 2)
+ out[n] = linear(0.0f, 1.0f, vowel - 1.0f, o[2], o[1]);
+ else if (vowel == 2)
+ out[n] = o[2];
+ else if (vowel > 2 && vowel < 3)
+ out[n] = linear(0.0f, 1.0f, vowel - 2.0f, o[3], o[2]);
+ else if (vowel == 3)
+ out[n] = o[3];
+ else if (vowel > 3 && vowel < 4)
+ out[n] = linear(0.0f, 1.0f, vowel - 3.0f, o[4], o[3]);
+ else //if (vowel >= 4)
+ out[n] = o[4];
+ }
+}
+
+static void
+cleanup(LV2_Handle instance)
+{
+ free(instance);
+}
+
+static const LV2_Descriptor descriptor = {
+ "http://drobilla.net/plugins/omins/formant_filter",
+ instantiate,
+ connect_port,
+ activate,
+ run,
+ NULL,
+ cleanup,
+ NULL,
+};
+
+LV2_SYMBOL_EXPORT const LV2_Descriptor*
+lv2_descriptor(uint32_t index)
+{
+ switch (index) {
+ case 0: return &descriptor;
+ default: return NULL;
+ }
+}
diff --git a/src/hz_voct.c b/src/hz_voct.c
new file mode 100644
index 0000000..b272425
--- /dev/null
+++ b/src/hz_voct.c
@@ -0,0 +1,117 @@
+/* Hz to AMS style V/Oct plugin. Copyright 2005-2011 David Robillard.
+ *
+ * This plugin is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This plugin is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define _XOPEN_SOURCE 600 /* strdup */
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include <lv2/lv2plug.in/ns/lv2core/lv2.h>
+
+#define HZVOCT_BASE_ID 4200
+
+#define HZVOCT_NUM_PORTS 2
+
+/* Port Numbers */
+#define HZVOCT_INPUT 0
+#define HZVOCT_OUTPUT 1
+
+/* All state information for plugin */
+typedef struct
+{
+ /* Ports */
+ float* input_buffer;
+ float* output_buffer;
+} HzVoct;
+
+/* Construct a new plugin instance */
+static LV2_Handle
+instantiate(const LV2_Descriptor* descriptor,
+ double sample_rate,
+ const char* bundle_path,
+ const LV2_Feature* const* features)
+{
+ HzVoct* plugin = (HzVoct*)calloc(1, sizeof(HzVoct));
+ return (LV2_Handle)plugin;
+}
+
+/* Connect a port to a data location */
+static void
+connect_port(LV2_Handle instance,
+ uint32_t port,
+ void* data)
+{
+ HzVoct* plugin;
+
+ plugin = (HzVoct*)instance;
+ switch (port) {
+ case HZVOCT_INPUT:
+ plugin->input_buffer = (float*)data;
+ break;
+ case HZVOCT_OUTPUT:
+ plugin->output_buffer = (float*)data;
+ break;
+ }
+}
+
+static void
+run(LV2_Handle instance, uint32_t nframes)
+{
+ float* input;
+ float* output;
+ HzVoct* plugin;
+ unsigned long i;
+ float log2inv;
+ float eighth = 1.0f/8.0f;
+ const float offset = 5.0313842; // + octave, ... -1, 0, 1 ...
+
+ plugin = (HzVoct*)instance;
+ log2inv = 1.0f/logf(2.0);
+
+ input = plugin->input_buffer;
+ output = plugin->output_buffer;
+
+ // Inverse of the formula used in AMS's converter module (except the 1/8 part)
+ for (i = 0; i < nframes; i++)
+ *output++ = logf((*input++) * eighth) * log2inv - offset;
+}
+
+static void
+cleanup(LV2_Handle instance)
+{
+ free(instance);
+}
+
+static const LV2_Descriptor descriptor = {
+ "http://drobilla.net/plugins/omins/hz_voct",
+ instantiate,
+ connect_port,
+ NULL,
+ run,
+ NULL,
+ cleanup,
+ NULL,
+};
+
+LV2_SYMBOL_EXPORT const LV2_Descriptor*
+lv2_descriptor(uint32_t index)
+{
+ switch (index) {
+ case 0: return &descriptor;
+ default: return NULL;
+ }
+}
diff --git a/src/masher.c b/src/masher.c
new file mode 100644
index 0000000..0a9eeda
--- /dev/null
+++ b/src/masher.c
@@ -0,0 +1,244 @@
+/* Masher
+ * Copyright 2001 David Griffiths <dave@pawfal.org>
+ * LV2fication 2005 David Robillard <drobilla@connect.carelton.ca>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+/* NOTE: This is a very dirty hack full of arbitrary limits and assumptions.
+ * It needs fixing/completion */
+
+#define _XOPEN_SOURCE 600 /* posix_memalign */
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+#include <stdbool.h>
+
+#include <lv2/lv2plug.in/ns/lv2core/lv2.h>
+
+#define MASHER_BASE_ID 4310
+
+#define MASHER_NUM_PORTS 4
+
+/* Port Numbers */
+#define MASHER_INPUT 0
+#define MASHER_GRAINPITCH 1
+#define MASHER_DENSITY 2
+#define MASHER_OUTPUT 3
+
+#define GRAINSTORE_SIZE 1000
+#define OVERLAPS_SIZE 1000
+#define MAX_GRAIN_SIZE 2048
+
+typedef struct {
+ float* data;
+ size_t length;
+} Sample;
+
+typedef struct {
+ int pos;
+ int grain;
+} GrainDesc;
+
+/* All state information for plugin */
+typedef struct {
+ /* Ports */
+ float *input;
+ float *grain_pitch;
+ float *density;
+ float *output;
+
+ Sample grain_store[GRAINSTORE_SIZE];
+ GrainDesc overlaps[OVERLAPS_SIZE];
+ size_t overlaps_size;
+
+ size_t write_grain;
+} Masher;
+
+/* Construct a new plugin instance */
+static LV2_Handle
+instantiate(const LV2_Descriptor* descriptor,
+ double sample_rate,
+ const char* bundle_path,
+ const LV2_Feature* const* features)
+{
+ return (LV2_Handle)malloc(sizeof(Masher));
+}
+
+/** Activate an instance */
+static void
+activate(LV2_Handle instance)
+{
+ Masher *plugin = (Masher*)instance;
+ int i = 0;
+
+ plugin->overlaps_size = 0;
+ plugin->write_grain = 0;
+
+ for (i=0; i < GRAINSTORE_SIZE; ++i) {
+#ifdef HAVE_POSIX_MEMALIGN
+ posix_memalign((void**)&plugin->grain_store[i].data, 16, MAX_GRAIN_SIZE * sizeof(float));
+#else
+ plugin->grain_store[i].data = (float*)calloc(MAX_GRAIN_SIZE, sizeof(float));
+#endif
+ plugin->grain_store[i].length = 0;
+ }
+}
+
+/* Connect a port to a data location */
+static void
+connect_port(LV2_Handle instance,
+ uint32_t port,
+ void * data)
+{
+ Masher *plugin = (Masher *) instance;
+
+ switch (port) {
+ case MASHER_INPUT:
+ plugin->input = (float*)data;
+ break;
+ case MASHER_GRAINPITCH:
+ plugin->grain_pitch = (float*)data;
+ break;
+ case MASHER_DENSITY:
+ plugin->density = (float*)data;
+ break;
+ case MASHER_OUTPUT:
+ plugin->output = (float*)data;
+ break;
+ }
+}
+
+static void
+mix_pitch(Sample* src, Sample* dst, size_t pos, float pitch)
+{
+ float n = 0;
+ size_t p = pos;
+
+ while (n < src->length && p < dst->length) {
+ dst->data[p] = dst->data[p] + src->data[(size_t)n];
+ n += pitch;
+ p++;
+ }
+}
+
+static void
+run(LV2_Handle instance, uint32_t nframes)
+{
+ Masher* plugin = (Masher*)instance;
+
+ static const int randomness = 1.0; // FIXME: make a control port
+ int read_grain = 0; // FIXME: what is this?
+ int grain_store_size = 100; // FIXME: what is this? (max 1000)
+
+ const float grain_pitch = *plugin->grain_pitch;
+ const float density = *plugin->density;
+
+ const float* const in = plugin->input;
+ float* const out = plugin->output;
+
+ Sample out_sample = { out, nframes };
+
+ size_t n = 0;
+ float s = in[0];
+ int last = 0;
+ bool first = true;
+ size_t grain_index = 0;
+ size_t next_grain = 0;
+
+ // Zero output buffer
+ for (n = 0; n < nframes; ++n)
+ out[n] = 0.0f;
+
+ // Paste any overlapping grains to the start of the buffer.
+ for (n = 0; n < plugin->overlaps_size; ++n) {
+ mix_pitch(&plugin->grain_store[plugin->overlaps[n].grain], &out_sample,
+ plugin->overlaps[n].pos - nframes, grain_pitch);
+ }
+ plugin->overlaps_size = 0;
+
+ // Chop up the buffer and put the grains in the grainstore
+ for (n = 0; n < nframes; n++) {
+ if ((s < 0 && in[n] > 0) || (s > 0 && in[n] < 0)) {
+ // Chop the bits between zero crossings
+ if (!first) {
+ if (n - last <= MAX_GRAIN_SIZE) {
+ grain_index = plugin->write_grain % grain_store_size;
+ memcpy(plugin->grain_store[grain_index].data, in, nframes);
+ plugin->grain_store[grain_index].length = n - last;
+ }
+ plugin->write_grain++; // FIXME: overflow?
+ } else {
+ first = false;
+ }
+
+ last = n;
+ s = in[n];
+ }
+ }
+
+ for (n = 0; n < nframes; n++) {
+ if (n >= next_grain || rand() % 1000 < density) {
+ size_t grain_num = read_grain % grain_store_size;
+ mix_pitch(&plugin->grain_store[grain_num], &out_sample, n, grain_pitch);
+ size_t grain_length = (plugin->grain_store[grain_num].length * grain_pitch);
+
+ next_grain = n + plugin->grain_store[grain_num].length;
+
+ // If this grain overlaps the buffer
+ if (n + grain_length > nframes) {
+ if (plugin->overlaps_size < OVERLAPS_SIZE) {
+ GrainDesc new_grain;
+
+ new_grain.pos = n;
+ new_grain.grain = grain_num;
+ plugin->overlaps[plugin->overlaps_size++] = new_grain;
+ }
+ }
+
+ if (randomness)
+ read_grain += 1 + rand() % randomness;
+ else
+ read_grain++;
+ }
+ }
+}
+
+static void
+cleanup(LV2_Handle instance)
+{
+ free(instance);
+}
+
+
+static const LV2_Descriptor descriptor = {
+ "http://drobilla.net/plugins/omins/masher",
+ instantiate,
+ connect_port,
+ activate,
+ run,
+ NULL,
+ cleanup,
+ NULL,
+};
+
+LV2_SYMBOL_EXPORT const LV2_Descriptor*
+lv2_descriptor(uint32_t index)
+{
+ switch (index) {
+ case 0: return &descriptor;
+ default: return NULL;
+ }
+}
diff --git a/src/multiplexer.c b/src/multiplexer.c
new file mode 100644
index 0000000..151302d
--- /dev/null
+++ b/src/multiplexer.c
@@ -0,0 +1,120 @@
+/* Multiplxer plugin.
+ * Copyright 2005 Thorsten Wilms.
+ * Based on David Robillard's "Hz to AMS style V/Oct" plugin for the skeleton.
+ *
+ * This plugin is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This plugin is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define _XOPEN_SOURCE 600 /* strdup */
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include <lv2/lv2plug.in/ns/lv2core/lv2.h>
+
+#define MUX_GATE_ID 4420
+
+#define MUX_NUM_PORTS 4
+
+/* Port Numbers */
+#define MUX_GATE 0
+#define MUX_OFF 1
+#define MUX_ON 2
+#define MUX_OUTPUT 3
+
+/* All state information for plugin */
+typedef struct
+{
+ /* Ports */
+ float* gate_buffer;
+ float* off_buffer;
+ float* on_buffer;
+ float* output_buffer;
+} MUX;
+
+/* Construct a new plugin instance */
+static LV2_Handle
+instantiate(const LV2_Descriptor* descriptor,
+ double sample_rate,
+ const char* bundle_path,
+ const LV2_Feature* const* features)
+{
+ return (LV2_Handle)malloc(sizeof(MUX));
+}
+
+/* Connect a port to a data location */
+static void
+connect_port(LV2_Handle instance,
+ uint32_t port,
+ void* data)
+{
+ MUX* plugin;
+
+ plugin = (MUX*)instance;
+ switch (port) {
+ case MUX_GATE:
+ plugin->gate_buffer = (float*)data;
+ break;
+ case MUX_OFF:
+ plugin->off_buffer = (float*)data;
+ break;
+ case MUX_ON:
+ plugin->on_buffer = (float*)data;
+ break;
+ case MUX_OUTPUT:
+ plugin->output_buffer = (float*)data;
+ break;
+ }
+}
+
+static void
+run(LV2_Handle instance, uint32_t nframes)
+{
+ const MUX* const plugin = (MUX*)instance;
+ const float* const gate = plugin->gate_buffer;
+ const float* const off = plugin->off_buffer;
+ const float* const on = plugin->on_buffer;
+ float* const output = plugin->output_buffer;
+ unsigned long i;
+
+ for (i = 0; i < nframes; i++)
+ output[i] = (gate[i] <= 0) ? off[i] : on[i];
+}
+
+static void
+cleanup(LV2_Handle instance)
+{
+ free(instance);
+}
+
+static const LV2_Descriptor descriptor = {
+ "http://drobilla.net/plugins/omins/multiplexer",
+ instantiate,
+ connect_port,
+ NULL,
+ run,
+ NULL,
+ cleanup,
+ NULL,
+};
+
+LV2_SYMBOL_EXPORT const LV2_Descriptor*
+lv2_descriptor(uint32_t index)
+{
+ switch (index) {
+ case 0: return &descriptor;
+ default: return NULL;
+ }
+}
diff --git a/src/prob_switch.c b/src/prob_switch.c
new file mode 100644
index 0000000..ae5d508
--- /dev/null
+++ b/src/prob_switch.c
@@ -0,0 +1,130 @@
+/* This file is an audio plugin.
+ * Copyright 2005 Loki Davison.
+ *
+ * Probability parameter is the prob of input 1 being the output value.
+ *
+ * This plugin is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This plugin is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define _XOPEN_SOURCE 600 /* strdup */
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include <lv2/lv2plug.in/ns/lv2core/lv2.h>
+
+#define PROBSWITCH_BASE_ID 2667
+
+#define PROBSWITCH_NUM_PORTS 4
+
+/* Port Numbers */
+#define PROBSWITCH_INPUT1 0
+#define PROBSWITCH_INPUT2 1
+#define PROBSWITCH_PROB 2
+#define PROBSWITCH_OUTPUT 3
+
+/* All state information for plugin */
+typedef struct
+{
+ /* Ports */
+ float* input2;
+ float* prob;
+ float* input1;
+ float* output;
+} ProbSwitch;
+
+/* Construct a new plugin instance */
+static LV2_Handle
+instantiate(const LV2_Descriptor* descriptor,
+ double sample_rate,
+ const char* bundle_path,
+ const LV2_Feature* const* features)
+{
+ return (LV2_Handle)malloc(sizeof(ProbSwitch));
+}
+
+/* Connect a port to a data location */
+static void
+connect_port(LV2_Handle instance,
+ uint32_t port,
+ void* data)
+{
+ ProbSwitch* plugin;
+
+ plugin = (ProbSwitch*)instance;
+ switch (port) {
+ case PROBSWITCH_INPUT2:
+ plugin->input2 = (float*)data;
+ break;
+ case PROBSWITCH_PROB:
+ plugin->prob = (float*)data;
+ break;
+ case PROBSWITCH_INPUT1:
+ plugin->input1 = (float*)data;
+ break;
+ case PROBSWITCH_OUTPUT:
+ plugin->output = (float*)data;
+ break;
+ }
+}
+
+static void
+run(LV2_Handle instance, uint32_t nframes)
+{
+ ProbSwitch* plugin = (ProbSwitch*)instance;
+ float* input2 = plugin->input2;
+ float* prob = plugin->prob;
+ float* input1 = plugin->input1;
+ float* output = plugin->output;
+ size_t i;
+
+ for (i = 0; i < nframes; ++i)
+ {
+ if((rand()/RAND_MAX) <= prob[i])
+ {
+ output[i] = input1[i];
+ }
+ else
+ {
+ output[i] = input2[i];
+ }
+ }
+}
+
+static void
+cleanup(LV2_Handle instance)
+{
+ free(instance);
+}
+
+static const LV2_Descriptor descriptor = {
+ "http://drobilla.net/plugins/omins/prob_switch",
+ instantiate,
+ connect_port,
+ NULL,
+ run,
+ NULL,
+ cleanup,
+ NULL,
+};
+
+LV2_SYMBOL_EXPORT const LV2_Descriptor*
+lv2_descriptor(uint32_t index)
+{
+ switch (index) {
+ case 0: return &descriptor;
+ default: return NULL;
+ }
+}
diff --git a/src/range_trans.c b/src/range_trans.c
new file mode 100644
index 0000000..26b5272
--- /dev/null
+++ b/src/range_trans.c
@@ -0,0 +1,131 @@
+/* This file is an audio plugin. Copyright 2005-2011 David Robillard.
+ *
+ * This plugin is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This plugin is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define _XOPEN_SOURCE 600 /* strdup */
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include <lv2/lv2plug.in/ns/lv2core/lv2.h>
+
+#define RANGETRANS_BASE_ID 4210
+
+#define RANGETRANS_NUM_PORTS 6
+
+/* Port Numbers */
+#define RANGETRANS_IN_MIN 0
+#define RANGETRANS_IN_MAX 1
+#define RANGETRANS_OUT_MIN 2
+#define RANGETRANS_OUT_MAX 3
+#define RANGETRANS_INPUT 4
+#define RANGETRANS_OUTPUT 5
+
+/* All state information for plugin */
+typedef struct
+{
+ /* Ports */
+ float* in_min;
+ float* in_max;
+ float* out_min;
+ float* out_max;
+ float* input;
+ float* output;
+} RangeTrans;
+
+/* Construct a new plugin instance */
+static LV2_Handle
+instantiate(const LV2_Descriptor* descriptor,
+ double sample_rate,
+ const char* bundle_path,
+ const LV2_Feature* const* features)
+{
+ return (LV2_Handle)malloc(sizeof(RangeTrans));
+}
+
+/* Connect a port to a data location */
+static void
+connect_port(LV2_Handle instance,
+ uint32_t port,
+ void* data)
+{
+ RangeTrans* plugin;
+
+ plugin = (RangeTrans*)instance;
+ switch (port) {
+ case RANGETRANS_IN_MIN:
+ plugin->in_min = (float*)data;
+ break;
+ case RANGETRANS_IN_MAX:
+ plugin->in_max = (float*)data;
+ break;
+ case RANGETRANS_OUT_MIN:
+ plugin->out_min = (float*)data;
+ break;
+ case RANGETRANS_OUT_MAX:
+ plugin->out_max = (float*)data;
+ break;
+ case RANGETRANS_INPUT:
+ plugin->input = (float*)data;
+ break;
+ case RANGETRANS_OUTPUT:
+ plugin->output = (float*)data;
+ break;
+ }
+}
+
+static void
+run(LV2_Handle instance, uint32_t nframes)
+{
+ const RangeTrans* const plugin = (RangeTrans*)instance;
+ const float* const in_min = plugin->in_min;
+ const float* const in_max = plugin->in_max;
+ const float* const out_min = plugin->out_min;
+ const float* const out_max = plugin->out_max;
+ const float* const input = plugin->input;
+ float* const output = plugin->output;
+ unsigned long i;
+
+ for (i = 0; i < nframes; ++i)
+ output[i] = ((input[i] - in_min[i]) / (in_max[i] - in_min[i]))
+ * (out_max[i] - out_min[i]) + out_min[i];
+}
+
+static void
+cleanup(LV2_Handle instance)
+{
+ free(instance);
+}
+
+static const LV2_Descriptor descriptor = {
+ "http://drobilla.net/plugins/omins/range_trans",
+ instantiate,
+ connect_port,
+ NULL,
+ run,
+ NULL,
+ cleanup,
+ NULL,
+};
+
+LV2_SYMBOL_EXPORT const LV2_Descriptor*
+lv2_descriptor(uint32_t index)
+{
+ switch (index) {
+ case 0: return &descriptor;
+ default: return NULL;
+ }
+}
diff --git a/src/sample_and_hold.c b/src/sample_and_hold.c
new file mode 100644
index 0000000..6b0abeb
--- /dev/null
+++ b/src/sample_and_hold.c
@@ -0,0 +1,150 @@
+/* Sample and Hold.
+ * Copyright 2005 Thorsten Wilms.
+ * Based on David Robillard's "Hz to AMS style V/Oct" plugin for the skeleton.
+ *
+ * This plugin is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This plugin is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define _XOPEN_SOURCE 600 /* strdup */
+#include <stdlib.h>
+#include <string.h>
+
+#include <lv2/lv2plug.in/ns/lv2core/lv2.h>
+
+#define ID 4430
+
+#define NUM_PORTS 5
+
+/* Port Numbers */
+#define INPUT 0
+#define TRIGGER 1
+#define THRESHOLD 2
+#define CONTINUOUS 3
+#define OUTPUT 4
+
+/* All state information for plugin */
+typedef struct
+{
+ /* Ports */
+ float* input_buffer;
+ float* trigger_buffer;
+ float* threshold_buffer;
+ float* continuous_buffer;
+ float* output_buffer;
+
+ float hold; /* the value sampled and held */
+ float last_trigger; /* trigger port value from the previous frame */
+} SH;
+
+/* Construct a new plugin instance */
+static LV2_Handle
+instantiate(const LV2_Descriptor* descriptor,
+ double sample_rate,
+ const char* bundle_path,
+ const LV2_Feature* const* features)
+{
+ return (LV2_Handle)malloc(sizeof(SH));
+}
+
+/* Connect a port to a data location */
+static void
+connect_port(LV2_Handle instance,
+ uint32_t port,
+ void* data)
+{
+ SH* plugin = (SH*)instance;
+
+ switch (port) {
+ case INPUT:
+ plugin->input_buffer = (float*)data;
+ break;
+ case TRIGGER:
+ plugin->trigger_buffer = (float*)data;
+ break;
+ case THRESHOLD:
+ plugin->threshold_buffer = (float*)data;
+ break;
+ case CONTINUOUS:
+ plugin->continuous_buffer = (float*)data;
+ break;
+ case OUTPUT:
+ plugin->output_buffer = (float*)data;
+ break;
+ }
+}
+
+static void
+activate(LV2_Handle instance)
+{
+ SH* plugin = (SH*)instance;
+
+ plugin->hold = 0;
+ plugin->last_trigger = 0;
+}
+
+static void
+run(LV2_Handle instance, uint32_t nframes)
+{
+ SH* const plugin = (SH*)instance;
+ const float* const input = plugin->input_buffer;
+ const float* const trigger = plugin->trigger_buffer;
+ const float* const threshold = plugin->threshold_buffer;
+ const float* const continuous = plugin->continuous_buffer;
+ float* const output = plugin->output_buffer;
+
+ unsigned long i;
+
+ for (i = 0; i < nframes; i++) {
+ if (continuous[0] != 0) {
+ /* Continuous triggering on (sample while trigger > threshold) */
+ if (trigger[i] >= threshold[i])
+ plugin->hold = input[i];
+ } else {
+ /* Continuous triggering off
+ * (only sample on first frame with trigger > threshold) */
+ if (plugin->last_trigger < threshold[i] && trigger[i] >= threshold[i])
+ plugin->hold = input[i];
+ }
+
+ plugin->last_trigger = trigger[i];
+ output[i] = plugin->hold;
+ }
+}
+
+static void
+cleanup(LV2_Handle instance)
+{
+ free(instance);
+}
+
+static const LV2_Descriptor descriptor = {
+ "http://drobilla.net/plugins/omins/sample_and_hold",
+ instantiate,
+ connect_port,
+ activate,
+ run,
+ NULL,
+ cleanup,
+ NULL,
+};
+
+LV2_SYMBOL_EXPORT const LV2_Descriptor*
+lv2_descriptor(uint32_t index)
+{
+ switch (index) {
+ case 0: return &descriptor;
+ default: return NULL;
+ }
+}
diff --git a/src/signal_abs.c b/src/signal_abs.c
new file mode 100644
index 0000000..90ad59c
--- /dev/null
+++ b/src/signal_abs.c
@@ -0,0 +1,124 @@
+/* Absolute value audio plugin.
+ * Copyright 2005 Loki Davison.
+ *
+ * Sign parameter is the sign of the output, 0 being negative and >0 begin positive.
+ *
+ * This plugin is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This plugin is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define _XOPEN_SOURCE 600 /* strdup */
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include <lv2/lv2plug.in/ns/lv2core/lv2.h>
+
+#define SIGNAL_ABS_BASE_ID 2669
+
+#define SIGNAL_ABS_NUM_PORTS 3
+
+/* Port Numbers */
+#define SIGNAL_ABS_INPUT1 0
+#define SIGNAL_ABS_SIGN 1
+#define SIGNAL_ABS_OUTPUT 2
+
+/* All state information for plugin */
+typedef struct
+{
+ /* Ports */
+ float* sign;
+ float* input1;
+ float* output;
+} SignalAbs;
+
+/* Construct a new plugin instance */
+static LV2_Handle
+instantiate(const LV2_Descriptor* descriptor,
+ double sample_rate,
+ const char* bundle_path,
+ const LV2_Feature* const* features)
+{
+ return (LV2_Handle)malloc(sizeof(SignalAbs));
+}
+
+/* Connect a port to a data location */
+static void
+connect_port(LV2_Handle instance,
+ uint32_t port,
+ void* data)
+{
+ SignalAbs* plugin;
+
+ plugin = (SignalAbs*)instance;
+ switch (port) {
+ case SIGNAL_ABS_SIGN:
+ plugin->sign = (float*)data;
+ break;
+ case SIGNAL_ABS_INPUT1:
+ plugin->input1 = (float*)data;
+ break;
+ case SIGNAL_ABS_OUTPUT:
+ plugin->output = (float*)data;
+ break;
+ }
+}
+
+static void
+run_ar(LV2_Handle instance, uint32_t nframes)
+{
+ SignalAbs* plugin = (SignalAbs*)instance;
+ float* sign = plugin->sign;
+ float* input1 = plugin->input1;
+ float* output = plugin->output;
+ size_t i;
+
+ for (i = 0; i < nframes; ++i)
+ {
+ if(sign[i] > 0.5)
+ {
+ output[i] = fabs(input1[i]);
+ }
+ else
+ {
+ output[i] = fabs(input1[i]) * -1;
+ }
+ }
+}
+
+static void
+cleanup(LV2_Handle instance)
+{
+ free(instance);
+}
+
+static const LV2_Descriptor descriptor = {
+ "http://drobilla.net/plugins/omins/signal_abs",
+ instantiate,
+ connect_port,
+ NULL,
+ run_ar,
+ NULL,
+ cleanup,
+ NULL,
+};
+
+LV2_SYMBOL_EXPORT const LV2_Descriptor*
+lv2_descriptor(uint32_t index)
+{
+ switch (index) {
+ case 0: return &descriptor;
+ default: return NULL;
+ }
+}
diff --git a/src/slew_limiter.c b/src/slew_limiter.c
new file mode 100644
index 0000000..7fe0ee5
--- /dev/null
+++ b/src/slew_limiter.c
@@ -0,0 +1,149 @@
+/* slew_limiter - A LV2 plugin that limits the rate of change of a
+ * signal. Increases and decreases in the signal can be
+ * limited separately.
+ *
+ * Copyright 2005 Lars Luthman
+ * LV2 skeleton code taken from dahdsr_fexp.c by Loki Davison
+ *
+ * This plugin is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This plugin is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define _XOPEN_SOURCE 600 /* strdup */
+#include <stdlib.h>
+#include <lv2/lv2plug.in/ns/lv2core/lv2.h>
+#include <math.h>
+
+/* These are the port numbers */
+#define SLIM_INPUT 0
+#define SLIM_MAXRISE 1
+#define SLIM_MAXFALL 2
+#define SLIM_OUTPUT 3
+
+/* This is an array pointer to the descriptors of the different variants */
+LV2_Descriptor** slim_descriptors = 0;
+
+/* This is the data for a single instance of the plugin */
+typedef struct
+{
+ float* input;
+ float* maxrise;
+ float* maxfall;
+ float* reset;
+ float* output;
+ float srate;
+ float last_output;
+}
+SLim;
+
+/* Clean up after a plugin instance */
+static void cleanup (LV2_Handle instance)
+{
+ free(instance);
+}
+
+/* This is called when the hosts connects a port to a buffer */
+static void connect_port(LV2_Handle instance,
+ uint32_t port, void* data)
+{
+ SLim* plugin = (SLim *)instance;
+
+ switch (port) {
+ case SLIM_INPUT:
+ plugin->input = (float*)data;
+ break;
+ case SLIM_MAXRISE:
+ plugin->maxrise = (float*)data;
+ break;
+ case SLIM_MAXFALL:
+ plugin->maxfall = (float*)data;
+ break;
+ case SLIM_OUTPUT:
+ plugin->output = (float*)data;
+ break;
+ }
+}
+
+/* The host uses this function to create an instance of a plugin */
+static LV2_Handle
+instantiate(const LV2_Descriptor* descriptor,
+ double sample_rate,
+ const char* bundle_path,
+ const LV2_Feature* const* features)
+{
+ SLim* plugin = (SLim*)calloc(1, sizeof(SLim));
+ plugin->srate = (float)sample_rate;
+ return (LV2_Handle)plugin;
+}
+
+/* This is called before the hosts starts to use the plugin instance */
+static void activate(LV2_Handle instance)
+{
+ SLim* plugin = (SLim*)instance;
+ plugin->last_output = 0;
+}
+
+/* The run function! */
+static void run(LV2_Handle instance, uint32_t sample_count)
+{
+ SLim* plugin = (SLim*)instance;
+
+ if (plugin->input && plugin->output) {
+ unsigned long i;
+ float maxrise, maxfall;
+ for (i = 0; i < sample_count; ++i) {
+
+ if (plugin->maxrise)
+ maxrise = plugin->maxrise[i];
+ else
+ maxrise = 0;
+
+ if (plugin->maxfall)
+ maxfall = plugin->maxfall[i];
+ else
+ maxfall = 0;
+
+ float maxinc = maxrise / plugin->srate;
+ float maxdec = maxfall / plugin->srate;
+ float increment = plugin->input[i] - plugin->last_output;
+ if (increment > maxinc)
+ increment = maxinc;
+ else if (increment < -maxdec)
+ increment = -maxdec;
+
+ plugin->output[i] = plugin->last_output + increment;
+ plugin->last_output = plugin->output[i];
+ }
+ }
+}
+
+static const LV2_Descriptor descriptor = {
+ "http://drobilla.net/plugins/omins/slew_limiter",
+ instantiate,
+ connect_port,
+ activate,
+ run,
+ NULL,
+ cleanup,
+ NULL,
+};
+
+LV2_SYMBOL_EXPORT const LV2_Descriptor*
+lv2_descriptor(uint32_t index)
+{
+ switch (index) {
+ case 0: return &descriptor;
+ default: return NULL;
+ }
+}
diff --git a/src/slide.c b/src/slide.c
new file mode 100644
index 0000000..fe026f7
--- /dev/null
+++ b/src/slide.c
@@ -0,0 +1,170 @@
+/* slide.c - A LV2 plugin that "slides" the output signal between
+ * the current and the previous input value, taking the given
+ * number of seconds to reach the current input value.
+ *
+ * Copyright 2005 Lars Luthman
+ * LV2 skeleton code taken from dahdsr_fexp.c by Loki Davison
+ *
+ * This plugin is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This plugin is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define _XOPEN_SOURCE 600 /* strdup */
+#include <stdlib.h>
+#include <lv2/lv2plug.in/ns/lv2core/lv2.h>
+#include <math.h>
+
+/* These are the port numbers */
+#define SLIDE_INPUT 0
+#define SLIDE_RISETIME 1
+#define SLIDE_FALLTIME 2
+#define SLIDE_OUTPUT 3
+
+/* This is the data for a single instance of the plugin */
+typedef struct
+{
+ float* input;
+ float* risetime;
+ float* falltime;
+ float* output;
+ float srate;
+ float from;
+ float to;
+ float last_output;
+} Slide;
+
+/* Clean up after a plugin instance */
+static void cleanup (LV2_Handle instance)
+{
+ free(instance);
+}
+
+/* This is called when the hosts connects a port to a buffer */
+static void connect_port(LV2_Handle instance,
+ uint32_t port, void* data)
+{
+ Slide* plugin = (Slide *)instance;
+
+ switch (port) {
+ case SLIDE_INPUT:
+ plugin->input = (float*)data;
+ break;
+ case SLIDE_RISETIME:
+ plugin->risetime = (float*)data;
+ break;
+ case SLIDE_FALLTIME:
+ plugin->falltime = (float*)data;
+ break;
+ case SLIDE_OUTPUT:
+ plugin->output = (float*)data;
+ break;
+ }
+}
+
+/* The host uses this function to create an instance of a plugin */
+static LV2_Handle
+instantiate(const LV2_Descriptor* descriptor,
+ double sample_rate,
+ const char* bundle_path,
+ const LV2_Feature* const* features)
+{
+ Slide* plugin = (Slide*)calloc(1, sizeof(Slide));
+ plugin->srate = (float)sample_rate;
+ return (LV2_Handle)plugin;
+}
+
+/* This is called before the hosts starts to use the plugin instance */
+static void activate(LV2_Handle instance)
+{
+ Slide* plugin = (Slide*)instance;
+ plugin->last_output = 0;
+ plugin->from = 0;
+ plugin->to = 0;
+}
+
+/* The run function! */
+static void run(LV2_Handle instance, uint32_t sample_count)
+{
+ Slide* plugin = (Slide*)instance;
+
+ if (plugin->input && plugin->output) {
+ unsigned long i;
+ float risetime, falltime;
+ for (i = 0; i < sample_count; ++i) {
+
+ if (plugin->risetime)
+ risetime = plugin->risetime[i];
+ else
+ risetime = 0;
+
+ if (plugin->falltime)
+ falltime = plugin->falltime[i];
+ else
+ falltime = 0;
+
+ /* If the signal changed, start sliding to the new value */
+ if (plugin->input[i] != plugin->to) {
+ plugin->from = plugin->last_output;
+ plugin->to = plugin->input[i];
+ }
+
+ float time;
+ int rising;
+ if (plugin->to > plugin->from) {
+ time = risetime;
+ rising = 1;
+ } else {
+ time = falltime;
+ rising = 0;
+ }
+
+ /* If the rise/fall time is 0, just copy the input to the output */
+ if (time == 0)
+ plugin->output[i] = plugin->input[i];
+
+ /* Otherwise, do the portamento */
+ else {
+ float increment =
+ (plugin->to - plugin->from) / (time * plugin->srate);
+ plugin->output[i] = plugin->last_output + increment;
+ if ((plugin->output[i] > plugin->to && rising) ||
+ (plugin->output[i] < plugin->to && !rising)) {
+ plugin->output[i] = plugin->to;
+ }
+ }
+
+ plugin->last_output = plugin->output[i];
+ }
+ }
+}
+
+static const LV2_Descriptor descriptor = {
+ "http://drobilla.net/plugins/omins/slide",
+ instantiate,
+ connect_port,
+ activate,
+ run,
+ NULL,
+ cleanup,
+ NULL,
+};
+
+LV2_SYMBOL_EXPORT const LV2_Descriptor*
+lv2_descriptor(uint32_t index)
+{
+ switch (index) {
+ case 0: return &descriptor;
+ default: return NULL;
+ }
+}
diff --git a/src/waveguide_mesh.c b/src/waveguide_mesh.c
new file mode 100644
index 0000000..5232ff5
--- /dev/null
+++ b/src/waveguide_mesh.c
@@ -0,0 +1,274 @@
+/* This file is an audio plugin.
+ * Copyright 2005 Loki Davison.
+ *
+ * Based on code by Brook Eaton and a couple of papers...
+ *
+ * Implements a Waveguide Mesh drum. FIXME to be extended, to have rimguides, power normalisation and all
+ * manner of other goodies.
+ *
+ * Tension is well, drum tension
+ * power is how hard you hit it.
+ *
+ *
+ * This plugin is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This plugin is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define _XOPEN_SOURCE 600 /* strdup */
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include <lv2/lv2plug.in/ns/lv2core/lv2.h>
+
+#define MESH_BASE_ID 2670
+
+#define MESH_NUM_PORTS 6
+
+/* Port Numbers */
+#define MESH_INPUT1 0
+#define MESH_OUTPUT 1
+#define MESH_TENSION 2
+#define MESH_POWER 3
+#define MESH_EX_X 4
+#define MESH_EX_Y 5
+
+#define LENGTH 8 // must be divisible by 4!!
+#define WIDTH 8
+#define SIZE LENGTH*WIDTH // Size of mesh
+#define INITIAL 0 // initial values stored at junctions
+#define LOSS 0.2 // loss in wave propagation
+#define INIT_DELTA 6 // initial values
+#define INIT_T 0.1 // for the impedances
+#define INIT_GAMMA 8 //
+#define PORTS 8 //for the initialization of junction velocities from excitation
+
+// 2D array of junctions.
+// The important function of the junction is to store
+// the velocities of travelling waves so that adjacent junction's
+// velocities can be calculated.
+typedef struct _junction
+{
+ float v_junction; // junction velocity
+ float n_junction; // velocity heading north into junction
+ float s_junction; // velocity heading south into junction
+ float e_junction; // velocity heading east into junction
+ float w_junction; // velocity heading west into junction
+ float c_junction; // velocity heading back into the junction (delayed)
+ float s_temp; // these two 'temp' values are used because calculation
+ float e_temp; // of the mesh updates s/e values before they are used
+} _junction; // to calculate north and south velocities!
+
+/* All state information for plugin */
+
+typedef struct
+{
+ /* Ports */
+ float* input1;
+ float* output;
+ float* tension;
+ float* power;
+ float* ex_x;
+ float* ex_y;
+
+ /* vars */
+ _junction mesh[LENGTH][WIDTH];
+ float last_trigger;
+
+} WgMesh;
+
+/* Construct a new plugin instance */
+static LV2_Handle
+instantiate(const LV2_Descriptor* descriptor,
+ double sample_rate,
+ const char* bundle_path,
+ const LV2_Feature* const* features)
+{
+ WgMesh * plugin = (WgMesh *) malloc (sizeof (WgMesh));
+
+ return (LV2_Handle)plugin;
+}
+
+static void
+activate(LV2_Handle instance)
+{
+ WgMesh * plugin = (WgMesh *) instance;
+ for (int i=0; i<LENGTH; i++) {
+ for (int j=0; j<WIDTH; j++) {
+ plugin->mesh[i][j].v_junction = INITIAL;
+ plugin->mesh[i][j].n_junction = INITIAL;
+ plugin->mesh[i][j].s_junction = INITIAL;
+ plugin->mesh[i][j].e_junction = INITIAL;
+ plugin->mesh[i][j].w_junction = INITIAL;
+ plugin->mesh[i][j].c_junction = INITIAL;
+ plugin->mesh[i][j].s_temp = INITIAL;
+ plugin->mesh[i][j].e_temp = INITIAL;
+ }
+ }
+ plugin->last_trigger = 0.0;
+}
+
+/* Connect a port to a data location */
+static void
+connect_port(LV2_Handle instance,
+ uint32_t port,
+ void* data)
+{
+ WgMesh* plugin;
+
+ plugin = (WgMesh*)instance;
+ switch (port) {
+ case MESH_INPUT1:
+ plugin->input1 = (float*)data;
+ break;
+ case MESH_OUTPUT:
+ plugin->output = (float*)data;
+ break;
+ case MESH_TENSION:
+ plugin->tension = (float*)data;
+ break;
+ case MESH_POWER:
+ plugin->power = (float*)data;
+ break;
+ case MESH_EX_X:
+ plugin->ex_x = (float*)data;
+ break;
+ case MESH_EX_Y:
+ plugin->ex_y = (float*)data;
+ break;
+ }
+}
+
+inline static void excite_mesh(WgMesh* plugin, float power, float ex_x, float ex_y)
+{
+ int i=ex_x,j=ex_y;
+ float temp;
+ float Yj;
+
+ Yj = 2*(INIT_DELTA*INIT_DELTA/((INIT_T*INIT_T)*(INIT_GAMMA*INIT_GAMMA))); // junction admittance
+ temp = power*2/(LENGTH+WIDTH);
+ plugin->mesh[i][j].v_junction = plugin->mesh[i][j].v_junction + temp;
+ plugin->mesh[i][j].n_junction = plugin->mesh[i][j].n_junction + Yj*temp/PORTS;
+ // All velocities leaving the junction are equal to
+ plugin->mesh[i][j].s_junction = plugin->mesh[i][j].s_junction + Yj*temp/PORTS;
+ // the total velocity in the junction * the admittance
+ plugin->mesh[i][j].e_junction = plugin->mesh[i][j].e_junction + Yj*temp/PORTS;
+ // divided by the number of outgoing ports.
+ plugin->mesh[i][j].w_junction = plugin->mesh[i][j].w_junction + Yj*temp/PORTS;
+ //mesh[i][j].c_junction = 0;
+}
+
+static void
+run(LV2_Handle instance, uint32_t nframes)
+{
+ WgMesh* plugin = (WgMesh*)instance;
+ float tension = *(plugin->tension);
+ float ex_x = *(plugin->ex_x);
+ float ex_y = *(plugin->ex_y);
+ float* input = plugin->input1;
+ float* out = plugin->output;
+ float* power = plugin->power;
+ float last_trigger = plugin->last_trigger;
+ size_t i,j,k;
+ float filt, trg, oldfilt;
+ float Yc,Yj,tempN,tempS,tempE,tempW;
+
+ // Set input variables //
+ oldfilt = plugin->mesh[LENGTH-LENGTH/4][WIDTH-WIDTH/4].v_junction;
+
+ for (k=0; k<nframes; k++) {
+ if (tension==0)
+ tension=0.0001;
+ trg = input[k];
+
+ if (trg > 0.0f && !(last_trigger > 0.0f))
+ {
+ //printf("got trigger, exciting mesh, %f \n", tension);
+ excite_mesh(plugin, power[k], ex_x, ex_y);
+ }
+
+ //junction admitance
+ Yj = 2*INIT_DELTA*INIT_DELTA/(( (tension)*((tension) )*(INIT_GAMMA*INIT_GAMMA)));
+ Yc = Yj-4; // junction admittance (left shift is for multiply by 2!)
+ //plugin->v_power = power[k];
+
+ for (i=1; i<LENGTH-1; i++) {
+ // INNER MESH //
+ for (j=1; j<WIDTH-1; j++) { // to multiply by 2 - simply shift to the left by 1!
+ plugin->mesh[i][j].v_junction = 2.0*(plugin->mesh[i][j].n_junction + plugin->mesh[i][j].s_junction
+ + plugin->mesh[i][j].e_junction + plugin->mesh[i][j].w_junction + Yc*plugin->mesh[i][j].c_junction)/Yj;
+
+ plugin->mesh[i][j+1].s_junction = plugin->mesh[i][j].v_junction - plugin->mesh[i][j].n_junction;
+ plugin->mesh[i][j-1].n_junction = plugin->mesh[i][j].v_junction - plugin->mesh[i][j].s_temp;
+
+ plugin->mesh[i+1][j].e_junction = plugin->mesh[i][j].v_junction - plugin->mesh[i][j].w_junction;
+ plugin->mesh[i-1][j].w_junction = plugin->mesh[i][j].v_junction - plugin->mesh[i][j].e_temp;
+
+ plugin->mesh[i][j].c_junction = plugin->mesh[i][j].v_junction - plugin->mesh[i][j].c_junction;
+
+ plugin->mesh[i][j].s_temp = plugin->mesh[i][j].s_junction; //
+ plugin->mesh[i][j].e_temp = plugin->mesh[i][j].e_junction; // update current values in the temp slots!
+ }
+ // BOUNDARY //
+ tempS = plugin->mesh[i][0].s_junction;
+ plugin->mesh[i][0].s_junction = -plugin->mesh[i][0].n_junction;
+ plugin->mesh[i][1].s_junction = plugin->mesh[i][1].s_temp = tempS;
+ tempN = plugin->mesh[i][WIDTH-1].n_junction;
+ plugin->mesh[i][WIDTH-1].n_junction = -plugin->mesh[i][WIDTH-1].s_junction;
+ plugin->mesh[i][WIDTH-2].n_junction = tempN;
+ // 'i's in the neplugint few lines are really 'j's!
+ tempE = plugin->mesh[0][i].e_junction;
+ plugin->mesh[0][i].e_junction = -plugin->mesh[0][i].w_junction;
+ plugin->mesh[1][i].e_junction = plugin->mesh[1][i].e_temp = tempE;
+ tempW = plugin->mesh[WIDTH-1][i].w_junction;
+ plugin->mesh[WIDTH-1][i].w_junction = -plugin->mesh[WIDTH-1][i].e_junction;
+ plugin->mesh[WIDTH-2][i].w_junction = tempW;
+ }
+
+ filt = LOSS*(plugin->mesh[LENGTH-LENGTH/4][WIDTH-WIDTH/4].v_junction + oldfilt);
+ oldfilt = plugin->mesh[LENGTH-LENGTH/4][WIDTH-WIDTH/4].v_junction;
+ plugin->mesh[LENGTH-LENGTH/4][WIDTH-WIDTH/4].v_junction = filt;
+
+ out[k] = plugin->mesh[WIDTH/4][WIDTH/4-1].v_junction;
+ last_trigger = trg;
+ }
+ plugin->last_trigger = last_trigger;
+
+}
+
+static void
+cleanup(LV2_Handle instance)
+{
+ free(instance);
+}
+
+static const LV2_Descriptor descriptor = {
+ "http://drobilla.net/plugins/omins/waveguide_mesh",
+ instantiate,
+ connect_port,
+ activate,
+ run,
+ NULL,
+ cleanup,
+ NULL,
+};
+
+LV2_SYMBOL_EXPORT const LV2_Descriptor*
+lv2_descriptor(uint32_t index)
+{
+ switch (index) {
+ case 0: return &descriptor;
+ default: return NULL;
+ }
+}
diff --git a/waf b/waf
index e22930a..ac152b9 100755
--- a/waf
+++ b/waf
@@ -1,16 +1,169 @@
#!/usr/bin/env python
+# encoding: latin-1
+# Thomas Nagy, 2005-2017
+#
+"""
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
-# Minimal waf script for projects that include waflib directly
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
-from waflib import Context, Scripting
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
-import inspect
-import os
+3. The name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
-def main():
- script_path = os.path.abspath(inspect.getfile(inspect.getmodule(main)))
- project_path = os.path.dirname(script_path)
- Scripting.waf_entry_point(os.getcwd(), Context.WAFVERSION, project_path)
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+"""
+
+import os, sys, inspect
+
+VERSION="2.0.4"
+REVISION="7cbb714529fb8ebf6acd59fd281ce525"
+GIT="x"
+INSTALL=''
+C1='#/'
+C2='#,'
+C3='#*'
+cwd = os.getcwd()
+join = os.path.join
+
+
+WAF='waf'
+def b(x):
+ return x
+if sys.hexversion>0x300000f:
+ WAF='waf3'
+ def b(x):
+ return x.encode()
+
+def err(m):
+ print(('\033[91mError: %s\033[0m' % m))
+ sys.exit(1)
+
+def unpack_wafdir(dir, src):
+ f = open(src,'rb')
+ c = 'corrupt archive (%d)'
+ while 1:
+ line = f.readline()
+ if not line: err('run waf-light from a folder containing waflib')
+ if line == b('#==>\n'):
+ txt = f.readline()
+ if not txt: err(c % 1)
+ if f.readline() != b('#<==\n'): err(c % 2)
+ break
+ if not txt: err(c % 3)
+ txt = txt[1:-1].replace(b(C1), b('\n')).replace(b(C2), b('\r')).replace(b(C3), b('\x00'))
+
+ import shutil, tarfile
+ try: shutil.rmtree(dir)
+ except OSError: pass
+ try:
+ for x in ('Tools', 'extras'):
+ os.makedirs(join(dir, 'waflib', x))
+ except OSError:
+ err("Cannot unpack waf lib into %s\nMove waf in a writable directory" % dir)
+
+ os.chdir(dir)
+ tmp = 't.bz2'
+ t = open(tmp,'wb')
+ try: t.write(txt)
+ finally: t.close()
+
+ try:
+ t = tarfile.open(tmp)
+ except:
+ try:
+ os.system('bunzip2 t.bz2')
+ t = tarfile.open('t')
+ tmp = 't'
+ except:
+ os.chdir(cwd)
+ try: shutil.rmtree(dir)
+ except OSError: pass
+ err("Waf cannot be unpacked, check that bzip2 support is present")
+
+ try:
+ for x in t: t.extract(x)
+ finally:
+ t.close()
+
+ for x in ('Tools', 'extras'):
+ os.chmod(join('waflib',x), 493)
+
+ if sys.hexversion<0x300000f:
+ sys.path = [join(dir, 'waflib')] + sys.path
+ import fixpy2
+ fixpy2.fixdir(dir)
+
+ os.remove(tmp)
+ os.chdir(cwd)
+
+ try: dir = unicode(dir, 'mbcs')
+ except: pass
+ try:
+ from ctypes import windll
+ windll.kernel32.SetFileAttributesW(dir, 2)
+ except:
+ pass
+
+def test(dir):
+ try:
+ os.stat(join(dir, 'waflib'))
+ return os.path.abspath(dir)
+ except OSError:
+ pass
+
+def find_lib():
+ src = os.path.abspath(inspect.getfile(inspect.getmodule(err)))
+ base, name = os.path.split(src)
+
+ #devs use $WAFDIR
+ w=test(os.environ.get('WAFDIR', ''))
+ if w: return w
+
+ #waf-light
+ if name.endswith('waf-light'):
+ w = test(base)
+ if w: return w
+ err('waf-light requires waflib -> export WAFDIR=/folder')
+
+ dirname = '%s-%s-%s' % (WAF, VERSION, REVISION)
+ for i in (INSTALL,'/usr','/usr/local','/opt'):
+ w = test(i + '/lib/' + dirname)
+ if w: return w
+
+ #waf-local
+ dir = join(base, (sys.platform != 'win32' and '.' or '') + dirname)
+ w = test(dir)
+ if w: return w
+
+ #unpack
+ unpack_wafdir(dir, src)
+ return dir
+
+wafdir = find_lib()
+sys.path.insert(0, wafdir)
if __name__ == '__main__':
- main()
+
+ from waflib import Scripting
+ Scripting.waf_entry_point(cwd, VERSION, wafdir)
+
+#==>
+#BZh91AY&SYÝÚcš¤ÿÿÿ°ÐÿÿÿÿÿÿÿÿÿÿÿE ‚„ 0Á#*ˆ¨bD{Ô´@#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*\ú¦Õ¶£XkP;šK²j¶WÝÎIÓi½Û¶ÍQ«Ðj®ÌÞpä_xÜú}xk{o»S©­K­Õ{w¾^÷Û»çsµ“Ox¤Œ€#,i¥ënî¶#,ܧ*ÞÀâô»vÏvw-¹½†KÐß;<Æ'»v6õÛÀî{¥uökÂYJSÓ»»½íóÛï¾W½€õÞ×Ç‹ÝÎÝÞéÜ #¯½XM·ßg#*#*#*#*4o`›#**¸¡ÃÓ¡ÝÍîà#/{³Ý0ÓÛ¹è;ÙG–ë Ð4(ë¾õí£röõéé£G¶ »ÒB¨¡‘£l=ìp#/ª¢‚T¤€ ¹ƒvÑ$ºÅP¢…$óÝ×mì#,PÞ¾ÚïMhìÃëîÏÔï±åÜ5ͺé+“¸+v0Ûˆ­šë®­÷ßuסõví#*]»î_v«§¯MïnºÔx9›Ü½Ï5õ’{y̻﷧·¾ÚêúÙö‰»rõöÞž·Ývs·6Ù³¯q›¾÷»GEûSÞÅ°aIU$E ô#,[w6š£ÞÎöwunÝw'mÖƒÒã'»p{eÓ*"•Sžï{—è#*  iTˆ*^ÁÈ ˜è¼ÎBãh÷»Öñ«­E÷»î÷{¾gß}÷ÃÈô}€i^ùÎH´Ç§rÊ5N ô#,ÛÞ»©VÍd ¾gx÷AÐ{yíx4×ÜæàÎXúN»öq×G»jöó{Zè‰í÷½ÔUO·vîgÞ< =â[iâñkâ>åöÛwUºwF滜ÜbÇ^÷n÷{»£&mßcyV÷.뻤¹®îRíëzò¾ÕÜÅ ÖÑÎæmÛ¯phØ»zˆÉÐÑÎÁkSkÎ7¶ë>·væÆí­ÇϽíï=ì{ÛêÇÞÞª½‹î»­ìÄïu³˜¶ôdz×{Iæ½KÍÚ.Ûsx¶#*#,ÎÙz÷µ:·±öw±ÞÝÛWŽˆP (* ¨„’FÚÛ—iÐåØ¥Z#,Mlλ})îô:íäé Ú7q›oO+Õ ©Û•”SŽ^=æP§{ÞºÝG!»&o»¾ÛÍð#*ÕÔ€#*%o=ÛtæÝ÷7/|ö]Žw•÷]Û}Æö½ÝÇuÇc}Ö™Ï{ÞUÎé#,º÷kÒïpzù4úò9zÏG•˜6&®tØ0eb¹Ý·×lxœïßoy½mŸ#*I:2öãGk#*÷¶xtûg§Õ}Á£z.Á϶ç³ï©¬ÜÛ®å˜fÅæàõ·mßu³ZÍw>/sË«+:íç¾¾{壹ÎÁ°3]ÀäôÝO{nÇÞiåiï7nº®°G.ÓÂÝ/T·ws«™:oU½³žÎ`UompUVž÷;2½{³Ë0lzÞm°‡wŽy§W××ßGÛOœúö#,ñîÞÚ’¥7rÝöû¯sã7»tÀ€ôÂìnÇ­ˆW;±çìÝš{Ü°^ðiÕ5¤ê·.ׯW†}ç»ë€n·ˆ@èšÅì¹@zíyWžÚûâf¯ºÊ¾ƒ #*èÙîó^ç^÷ufØg­[Þ+“³5Ø…g·¦¹}îW¯.·[G‘¨Š*Ý9ªé;iJÙÝÚûóZ™÷}ëÆuYgÊÛ‘&3Ùç#,œÇSß-Úñî‰îri5¾¨Ù[2}ö×Þ¹Ü0SY¯{·gs¶'­=㺆_'¾÷;>ÖÔ`;wn:xº¼¼o(÷6¯·ÅÁ¦ˆ#*€@4#*CF€y4hIéLQä€#Ôõ<¦‚S@„  òÕ=¦©ú§”ýQ£Fž£&F†Pi #*#*#*#*  ˆMFiO"SMSñM¦£Òš d5¦›ÒCÒh#*#*Ð#*#*“Õ)"&D#,E7©””ôÔÓA‘ #*hzš#*É#*#*#*#*B#*#*ÈÚhLbOF“52jyOPd¨#,#*#* 54ÄȦ#B2)ä'é6©êyOHf£Ôzƒ@#*€#*?þùëÛV»‰]΃r¶®ä¿NÕ¥Ô"b#ãµkºA0Œ…¨Õ–Ù—½VÚåmµFTÅ ‰î=¾ÿu±î¬^þò^X¬­WjÅZÆó!nžoôÚåÉ.ø®\ãxiqªøÖ÷r¶^A<é‘1UnÐ%_Š¨D B#­ Gg[ñ&üZüLY©wsZQǬÜÍ—g8âZZ®fø3$7›×SY¾ªb@ˆÑ>ýÕ·äB·Ä(R1Xª#/De[Y6Õ™¶´–µbô¶×!jÔD”#/£Pd£!\ç9a (ƒ¡XL#*¨9D,¨EÄQ@õÀ #,‚Ûi«Wv§E±X·µÝµ&ÚÖÛkß[m¶©™™ %šM16"X ¢Ii653%„Õ2Æ@3JQ¥ÛIŒ4I@M-KE±¨0¶ŒÒY4²1a-„#/61R”i#*5K4ÅŒLb¥bÉ›H¤Ù-Q%–ZSµDBËHlÐL(ÍF5£QZ0#/ƒI²"„©6)Œ” †Æ™¦ZF0"”Ú5)FÂ[M¶²Ö´ RT3bM™&BQdÛM¶šmjJ6RTÖÆZ–Ù•2Òe2Q#`Y¡ÍY¢’RÆ‚–E1L„ÆЉ2¢Í#h¤ÂX¨BÆÅ&¤1šTD)ˆ£b…ˆÊcÐÈŒ’6¤Á‹,D³4%(@D2’R4iY@fhÈ ‘DRÉY61£bZEˆd²‘cYJHM‰)20R‰ŒšC1 ©4iŒi2² *,I‰™KLE3#*ØÛ$3b$Æi¦l$ÂÄmI° ,¬!$”›DDšŒPRBX‚DÑ ŠAD °TDÃ(c$¤#P™D¤¬jf£b°–“RD“ˆKJT IKbH²Ì¢‘fI¢lÊDlb$Ø™J3dL6Í1’¥,XÅHli¤4b#R²Y#`²¤&‰²HH&¤DHÙ¦¤ -BHK2›(Ê Z)3HÚ#AÒƉmL‰#,(4–c!²RYLE‚i”Å(£FaƒQM#/LTH2HaRf0$’4hÄD†XLPFÉ2¦f¬ÆŠ¥*‰DLÈjF˜…"3b¥#,²š6HÑD¤’M’(ÔÀÆM›#S4XØŠi2“2˜¥‘•›L‰XˆÁS2Ô¤Ó$†2ˆ¤54Z[FÍJ”É…1) #$dÉ)Y4XÉXŒeIÌEcI¢M&Êj6ME’H¡¤l ˆÆ –Í&&ÐhÑSi ¤Ê(‹fCfD’›%24 ™²d&¬ÙXµ’ÀdÄše’$±mÆ Ö#/e°¤I„£‰”jK0”Í4¦#,’²šS&´hI1JLf¡–M‘L)eF™a Ò ¡)3F‰¶ÔªÚ0IBjfŒ¦FÍ(¤”ÌDVƒR–À¥š,Å&˜ÊË*l²lA¦[ fŒL1MˆÊQ,4„¥¯ÜktBjj‘FŒÚ(ÅF¶ ’hÒj6²H¥”¨•#,Ñ4´…FÆÂ6I¨ÚÈŒ´j2ÉŒ£$YL©1¤A†&f”Öf¬bM*ÆÔRŒšaÆU$™‘šÂÆÐ(iYE2dËI¨6,ÛE±HÑSeÚÈ™dU1¬ÔS#/lØÊLͲ[M,&4mh±dF¶M2²%L²›Y5¢›e)M1iŠÔ$d¤mEŠVX“I©%*#hªÁµA£Em*"Ål[I¬”[Q´TTš±4ÉbÄTEj,2Ñ« ÚM%#,šÔ0’ŠA6ƒ-)&)Zk±£i‰¬j’Á¢ÚH-­S[lÓJ¨HL¦jjÉ¢M‘‰”´Š,‘[RÖmŒR›M²Í*c4Ój™m¥RÉ&f©R1f˜[BA™’e²Æ„ÓÒY6ÊÊ´kD²ŒaF*,H`‰˜Ðb“, , D‰Ú#, ŒCe´ÍS0!*(dÚŠÉ4ѲdÑE‘#,–)ÙH6DVjE‘ ™’XRQf)˜š…fHDeb›I’ˆÆ²#*%!¦DÉ!¨É€ÐÒÆQ4š‚ȘZB h2PËEŠ&”Ȧ4–i@Ö”„Lb˜JY&Y!5Œ‘Q¦ZŒQ³)$£ …Œ…Qe+#L6Š“’Œ›#RE¥„Š2mFƒFÌdѤٔٔ”³6™IX¦#,#,HÔC’ZŠ£f´fˆÔ4T¦“a¦6XÖe£@‘Œ„LR#,16$©-&P£e4ÅI¶JeF ªeM’ÉL¡1Q&’@D¡¥+2KhÚÈ…¦f@È•a!²ÌQɱ³HØ£D#,f“d36&"jHH54[ QQ¨£±™l4˜b„”24²dlb”Al ¨+,²Y …X´fJl¡*Hƒm QXÑ&‹¥Q¢ƒb‚#&¤ª5L%ÂÂ#,R”51¦l¥Qª#Ji¥¢‹d¶dZ$ Z‹ØŒ¥U-4UÆ“E’Ä‘M2•”+QH12J›ˆ™¤«Q°IŠ™¨©-0¦,ÒÔd¬ZÚLRViT‰­DÐ6%2”Ô–$’ÅIFÉ¢HŒIT”†¨¤™cVd#,5R¦TÄSmIY-’4…4“Q ˆÁDÙZM¢ÙI,l˜ÒcFÑ‹’FÕ(K-Š±&ÖŠ´e(ÚJ©BÔ[F¤¢Å"š$¦F`Li©PjfÉ3j5IbÕ%K6ÒkBV€‹cRTQ$[b™¶imEccZ‹m&dË(„²ÙX–ÑTY•Q´ÙQJj”S’ƒ#)52P64X"M(ÄÒf±¶53bH± I[M²šk-FѬf‘¨ÉF‹%­¶ZÖ)*1%Š†XÑQM$­21’U±m‹LÕ´cZËISC-l¥’Úš›d-¨ÓV&Œ¢ˆ‹FÒJ(6ÍI¨Û›6TE ¢1$™I2#"ˆÈI­ÊÙöÿÕ©?ÙüTþÇ÷žf„ŸáþPV‘ %XÀ=–¾+ûZ=5Š¹X4i6zºõ:Å\kû¶,bƘ5#q’÷ofªlþß¼‚6Ñé¢;ÜœbQ `ÅA‚áÑÆ—DÕ$ªªª‚®Œ¤{Ïãê½^Úÿ5ÚËñ.¿Ñýž/ò6ÚkÆ@nx%„ŒEôsÑ£ýÛlvÚE‡¯×N-ÁÖZX%'uÑÝêŧlNNï2##‰F61ukŽÏEcýÓ—Z|Ä£'ütz䬚€I¥áv7§^šèÏepòrhë²wB*35S4™³(¶‘Vª©"ñן‘Ög5r#&ÃßµÌV÷x3Fe:ãK™@¤¤)€‰$HÅæ×bÈkÒ3ˆ`Wd@ÛLå¹dfôÜÒX,‘’‹×ž¼†@Öö¯þ ,?ÎÀ7p‡ ÓXѧÐnk¦Ä¿2æ’Wz H±b‚>ï÷Vˆv¼^˜­D˳b(¦¦Ð¤Y;ø䬱É"˜Ò¼lÑ1ʤ”á÷éW‰AþáÄ,x»¡j4A¡¬°Ý³Ü}ŸèקC•=”+9P[îãF€ÑÖè æî]P ¬smžbŽr車esn–CEsnžw6*'×uôKol[í~…x¿\Še|\ŠÛÅÍã¤Oöµ^9ÍÂøüûZë¬;÷Ì!³iå”#6Ìzeq#,¶Ó`7¯ÇçZ÷oOvÛsI´guÊ<sm±‹ª#/CLÕ‰l¦h…0X#/´£®¹]çv9GJåÌ”RëºH‹M14 eÔÿ¾qf©‰5JE èQR"ÃR°ZwmŒºdâ2Õ‚¿*)ÕSOÖÔÁ¥mOÅé‰ ¼"WûjR2sÓª€¨â¡ÿ"j˜ˆdf$“í©‹™4¶‚1Æw×Ó8æ†k–¹¿úG ¡cŠ"©l¶‰÷UuÞãb§z£Mz­õØä‘A‘LÞ³‚‰àK+:+«'ß«æ\§0rpÕ{x˜F»¾ôfÚ]FrÅ|OªÎ­i­)—Ÿ‡±·ÝÎgÚѬƒ#/Ô`òªŠS÷kõ¿SžwÐÁíNÍÚÝ95ò¨STëF ¸ÚTj/&[:5­ä¢’~N1mË&³!<ØY*2®ŠVe‹)…°´æÒ wQJ#/9Ï+ÇÜü±S¢¹Hº&¬²ª>Ü]Á¤¡ $}Ì¡_hM>]adMŽCRßó°úš¬[Òé™ýGhfLRùõ×ãë¢:eˆošÛµ|Q8((UFx¡ÄZXÇ-'“3{iXžlï‡áïºÞ½ù×SFÈTQWË&£xÚ¹Vÿk÷{y1§ÖêM¯erÉ„ýç×üÞ¯¹íÖ)Ý[›JOÃùþmzQ²&1‰$ÔR|Ôa6àAqŠ3Éž¹`ÎÞÍ;–=.4\·5ÛÎû7¯[”’ÚJ‡½Ü±h¯×-ÖEõQKH ¨ÎTi® AOh•­WG\£bѲUô¾ú¼bÐh$òhUE‚‘v£×z{q^Zms#*Éójb¡HÓ–µ%ˆþ5]#/ "1Íkf¬üL ‚õ´>º$¨ÅFHŒŠj lÖÍ L+ž÷/#,A#”…K–¾<êäåÓ kæå—à °dÕSƒ ºTx¦7J)”"’ê­)ë½ZÈßÆ®x:&þ”äå—§uØ1fÂj/•×Eñká+Æø9i-Ý“…âb-#/ŸÆ(ÑÝ¢4¶ÒÓV¾Ô¥Ý„S²ŠŸFÇÉlV–ŠEFRpg©˜L’5ª:T ©:ö·çAëÛ? {áÓ%Yáðçy7¾ø„jÅÄ(‹'/õYêÏ?®!kÁ4ntáAb3Q½ç˜wEúC<Bc²î 2‚Ó×™%lœH:‹k•II˜Q™F”ÏÎéæÃâ»ÉÂvCPIÝ…;´CþVx¾T_^àé;Òwa¼‘òÕZdnDF"#âÐ<¨§¥M«£Ût{ïžûð³…QÈz䬥tñÍûòP3T%!«enbÞçÜÕu6ãZ÷Ì$¹cr#‹4Ñ,íaöå¦È0ƒg‚Ô†~ô[»ç ú>Zo_9œTbtNlžLÑÛçÆÎxQçTîPëUæPœ¹ß80âè¢shú²…;Óõõ¾¿“©¨Í‘0Οx¶ÌµêùÍBúgŠä¾UPµ:ƒÆq‰=Þ”§Óh„PíOÑ‹!jÂ3ÞOzüÚÌ8`³a#,îBÉô;¨#/÷#5K~5Ûa$^l¡zÇóŒf:ãÓ4KåQŽÑ©1 é}©Ò‡Î\_'„W¯ÝÆoxíp‰z27W3†\2¶çhömï)Œ®O±R4?¶c²=vñúöÖ˜jV£_–RuÚ­vT9¥ ,U†(ÿgÛíîÉ ¥ 6bᓺª]§Î0+6 H#/B…!¬/;©Èä¶.<Ñ:zxºº/숡ÇL! ST×ÂŽlÏ#/Òè)ø³®ÙÝ!ƒJ‡Õ-"܆0#+‰È£×á”Æœ‚ÊØiÐztVÐÞu™ú¦Â>®þwµÕHا>®G豑ä=×”ÅQJ±Üöݽ;,š<ê¦ÙÓÅÀ ŒúH&ÚÛ:á1úEßNœÕî› ¸áÒÖ«ƒ¶*#,·©4ÑãÔâí4<kÜíÝBAopÔ¡x4ða¸v”„ÿ²àø ¬¹×¾*ߟ‹áã²IeTÓ·á×KIóëJEÖ• N¿)z.ÞGr\ÓÒƒºùsŒ_©¨ì"~;ýHé³ÝŸ9ñé¦q„ÜŸ˜„±GßÛŸ‘Î×T -ñ#,®>.™iÍÈùœ @ï+[q­þj/m˜ÛCZÐwÅ"œ3vDsSBþ?*ŸÌõéÍÆ£µœÍ_}7íöâúd6CU"¦é>ù_×ÞzúW ­^¾½ÌI0UJÙ ²…D©}îño?¢ i÷;Ü®½uؼÙKÛP @ˆ¨‡Þ”)†Œð²Ýšòi™e uKTW?ùl²*‹¡<*<ïúî¿'òÿ®êZ|ÿ?ÇV¿¢¾ör[y'ÙEZ((ªE¾Ê)Ÿ6x ùöæñÇòûp«ž•7sf±GrŸ¶|†ØíĨ{«K$O÷šÛWʸIM¸— ó¤`ýU55Á)™ïÅÌxÔÒëæ—aÃLlÀY¬ÒÖLa>ìµ»Òf~T”þGÈÏ]ÃE‘¶ ΡB.¿4»)†¬û“«•Y–£ÎÇ,e„?<®Ñ^ÓÌä‹“„¿Ž„`Ýf3yÑüé´,ŸÄw[ºÄ8G àDL4vzÖèã¥<6ÛÃ;rûì8°:°(m)UER`gìÜ}TT^&j¬#/b‘dm§eÙ œÇŸfá£øuuO»~Ýð=´B(û˜U^;vŃ8™“֯ȱ£Î(×ÔM¾†ý‘xôܶ»°0¤NóOÖâmL3Âßi™e×´”ˆv³åì––%#/]L‚Ž¼Ü厰¡Hlê!Ð~7=ÓjøqC"±*™—Í®£† ÁáPË|o|Ã)”…FgÇ‘Œ¦_bBøÕ/krSÛåµÌ>£çF7̹–ÀAAîÚ­€»Ó]¼kxÌÄES#/z¥¶×eÝ0ðMó HêÚbØqJ}™É)I¥t½›“µ™!ž"Tm¶³óUAä>6ƒ]¬ŽqœÔc8`Bü©Ùâæ½zÙ¨Cà Æ#,¾•OnlàÊTˆŒ^•%"Ñ[z±|ùÙz'+?Ù­<*š#,°;–ž )rÊPV&ìêÊŒ,¶ sÛnÏÝÃdt¾Lo˜aÄ4VÍ2’q¸ùö÷ÙAóÄMX¿$™Ë+£–Ž§ô[þ‘&yÖYñ¯;f™Š+”ßcŒã=ºrõãƒùÑKêìæÏH„ÈánÇ+Ò#¯³Ô΄2L‹J\85ˆ±%®ƒ±ØOÿuؽ;®wyÑÌqÌâGag,¼¦2:LçÑeEÄãçN,ã¤á¾tß>‘oÛm鯙¥5 ËÚcÉ#,3D…D3[ÿ1g¸øhrÁB(ªÆ¡º²,é8^Õ s5¯˜Âa#,…‚+ Tîºûºiªö›[ž–Lýî×—DîK%ws«å’Pýóó(,EYoUeðÍÍs’[ËD8Y…B,U„Ò‘Ëö!£v²¹hð°*/Ò´)R-šÔ¸¹–¦Qä/g1$†.º´ÛÅ#,øчƒ£†Ü'‡@»J?‘”èЛ+êž_žã2@Z¾n9wiL„Ïáå4%å:ÕQn:úVfXʇ½¸^{ÎzÐö¢Vòã`[¦ü·vÇêzXT/šÍÆß^ñ(­œGo,¿‹ô»©ûLH…¨x±D|eðåïÄ«ñåp¿žPOlÙ…äRª9Ƥ®¦Ö}RQŽ®v¸öz>¾<ÁÝ)óvØNéÇp¼;)¢8¶>å(ˆ½1ðÏ»2“ú?vºúÖÇ,ë<Pú<ߎ§íûq#,®‡Î}ïlíüñzµFN!µe±V&5Oò‡b­ð¥Óžc¹ŒA÷Në ²™c:–öQŽukB…•TpòÅÉò@WJ­øPy=½ü2ݘ÷Ì°Ò#,j¤¾^Þ›ð!œ¢íûhÊoÒ3c®4äDª¢>,`Æ®;[’èõC®¹Ó L7ªRðÕt«ÁOÅ”¤P×^ÇMjë)oáTøs¬ÚÏ-ZëüÝ0aC7rs‰Ôs¦÷^º§«÷2mŠu¡V±F{(–‘‡ƒöü(õæËMêéÝ,ð*xC¡„ªb߬7i [;H–§R9‡B^×ó¿;¥wV—¿ [pØœgG¶¨™åYTòXGÃmw’ sÁ&sµÅ¯Wkˆ< ”%”Ö˜÷YGòV‹|C—ni<·ìˆû“ª½Aq«”®Ô £SÖbί¾,g_¼so­øUÊlm‚‡nü?¢(†‡ð¡XÔâFŒT&]ªËÛùþüO3J;Y¬ ‹?LÛØ•U–'+ !¨I+ˆå϶ƒ*~‡‚ièœ £)àÒ§$?}nÍOh¶}È]ë»òï屌W«TñMœÊˆ«ø÷{·rfª•ìͼ)­òN/ÐvSo¬_ëò¬¾Ñh6C¢9OU¾û#,;ó gz„ͱIüuró¯ñ£3?žÎÜÈB>‰ª[o®øíAúã-ýú˜Ê¿xQhVô¿•M–ÿ âwÔ¨bj•Á¢†plXŸ/£oõsÒ`Øßf5Ÿ^éŒÁÇZ’¹Þ‹XŠ"ÍÙ ]Ù W,V6¦ý`­“õ0+ÖºòáàÄ£÷¶n‚~ʘM{ò`²ÞF#/ò®vP¢}Sµ˜ÄæÛXñÚ¸s,³TX*#/‘RlÂOÀ£y@Q}xÒ#*ùúv¸újWë4梌^lM(k•‰ðÌ"s—8ñwÎ|±¡E¸ Ýšá9t%2& DbÅbÖ˜ÁŠ•u.ì[Š°7]J=¹©è”ÌUçèêÌÕAüšì“§flóaÇZ˜,Þª¢pac VBµªæ-B&Zj H³â6U’´ODßTX[¿w?†¸\®èã.j8Ú…Ù<‹>PÍö&ºL®zYÛ.°ú\¢’ »¥•Ÿ‘qÖ{õs6½Ýˆ´úMŽ^ì¯"áW`Ø¢f OŽ^ùXÚ6ø{mõŸ#/FŽŽ¹#7ìî¡(ü‚¬}ØßìÃ3*0i0¶ïo N?Lª<M`¨¨šþDÁx¤ƒPj'5$84©Õ˜Î-]Ô=·Z e"35% w[£yë÷=qëªö»Õ)YSWŽÝÛ›Äír)qÕw']e}$XUbŒ'Ö±m1Rßéû|lõŽ@!×àîmøÙÅùlVëFðíbIÄ©$—$Èã%…ëi·ê+oðÛþæ$Œ´GoðôÝ’Þ«süô3jPNœ¾<¸ÆîùžÞÃôôQ¤É«ÑD Õx}ßïùÄÿŽ\¢õ<Š5Ÿ&µ³Ï"Þ|0c?¢¤èLÍ=BÁ­Û, îIö0š3ꇃ«/JÑ(×6_}½Õ×Ê2¥1²lÛà“B#,Ÿe ã¹52)áÖ3¹oÓ¶24äÕ«ñm®ö-GÕ Ðzµüús®âÛèÄØ¡$çwOË\ÓÄQ¢0`h´0}$@5*øúY(E+êdX(–#/-(Ä8¦D<‡²Åœ[àçò»e¾ñd<Yãz63T¬j^TËâÐý¨¶­Â¶„E+=B`äŸcjÎu‹ŽŠD“5‘¦…DºQq{×yS¥ï6höeGŒZ«ó™—‘g¹@‹–¯»ÏVûø¹üÖªiøuxýwv³Ä‡¹÷½jÖËðüÙv@l7’¥ÞEÛv‡Ûô‹¦nö¼?¦³£â×ÚÏ|§Ç8èåèÅHàFúaºq¿‰£4Ú¾×QòJH¢¬ ¤Ñ A&ü% ƦíT „#,yQ|¡º+µiþØ&‡wj§‘hÒü’G²Ì üñ#,×p#,µY;z@å¥mãóÍs4ÑX8Œ ìÎë«‘¿CoÍÁht‘§ü8Ÿ‡‡ŒÙ„wW 3¿öݸd#/V#/ÌÑêJoìÍ^^÷‚¦X.ž5‡ª¢šEî®⬠·T‡³:€•›Ãì@øùú~ÐÁ`øóßTâùWGvƒë™Âá?Çήyü†Å/_H‰s”÷M ³÷|-çD~Ò#,eÔèÏdÁøç=ƒe²°ÜÆm5Jõ‚#/\eÚ´ñKœ" %`ÁƒSg¡2d–TK†ç|õ5ëÏ·„û¿UoÏ”ùeŸ-…ïSʦ¾g(^ÔþØTI@¼3ŠÐIR$0$X=+p_(®,·éµº1¹¯ûoVzÔºýöÇG–ÅíóFzîåV’é(&\RdPù]ƒóï™k…ª¼rmšoF#,1UÌÈúyx«å#Ètò¶ÌVÝT½ƒÛEH3½OȈ½J MFþÝ´ÿ7‡ Ûlq‚@¤¢ÍUcPð®2Š°p5ÿ5NÞGm3Ñ»[»¼ûØ'®iŽYÄ2‘Kóm6àö‹þýŸõ×e#>ì”Rùrñ¾#/é€Ù""0=ô õÑÓèÎÊÑ ‡ûà†Þt<$!&©ÓcºË——«Íòòí×å͉*÷iÿ4Ãñò®«y±Ö×5Ük@ÛñFŽI­S[Àu‘Ùí˜ðƒ@MãÕYÁa@°ð¤#,üÔtÖ2£–—Ü‚Q7ÎS™³%‘,ë¢ÿô‡'ÄJ´rùCONÉ×£˜êí‹€´r¸F–|¦W“íÒ¡½<`u¬ï^·XNźiDb¼·ÍyÔgï×(í«ê„]G‚ä£P¹ab‹¸YŠÚ:DÀ–¿» GA~;Zùf@¿ôGIÖ–DyÚí ÝŠCK6»ÕyµÒ>í®{•#,^ÈìHÎ#…jž1{D,êœ_âëa®Jƒ`Ä(…F¶r”/r³Å~ztÄ›Ðt¨&ëå¤-g­ÔÛ…X[ÅŒð6ÕDnvôϟÖÚÆÍ@I‹óª']¨òš+'^ç¦x©CšnC{qe¼‹,#/J"\ÇoÚõÁÓŸ:î;Ô3À!ÞåÔ:ä{p^ÍZ2r]pé"³¹”8ôã lvŽ…±ÊOúk[œ_ÁF×Q_Õœ€‡>°:怤ï–ܾ¾L¼H™°'*X>£êzúÀó‘åÿÔÓ‰#£’ï?õ„}ÝLàðBI ‚Um­Ng³K(d1ëGKÕ“ÄSw’ä“À%ŸÔïÌØaà#r\/*¸û#/9Î[Ùú|ö9rèÞ~•Û»ô¨&ï#,P“/ðý#*”#*”ˆ=¿×¾hOò\·½—<Åvú+¬ìÊÿ.Š[>¦ãâúìù<uÈÁ¦°Iù¬%/—¯ mÕe-Ë¡‡aÏÙ«Õ㪡ÝìÆÀ/_ódp—?2¯w¶Ì">BzëؽŒC¯ ܪJ(°!#/,MÔÆy§ñj:”"µ í B ‚ 'Óùë¿›ñk‚&Ýêlß`þõè|üq^3mTÇÈ8R±“ôb]¢_“…«[Õÿª#,ÍQGh*"BŽØÝs‡ÿáË3 ×ß*ÊéE̹iãT&b",ƒöŸmH€#/Þëà抌½#,£§2#®Øœ“§îõ™œ«¿^ñ\ÿo§ŒŽ¿gÊgôE»íq¦¢‚ÛY à3ÖÿU®‘+ûÎSL|gÔ»68Q4@¹è D.j›tW6!?RÙŽ}«eøäkÐìJloM#,‡êJ#/zdm/v–Æßvxˆf²_Z‚[>zúè)邇ä}®`] Ù«Ù8$üÞÚÂt¨›å—û~pû¿ìÔuÍp¡Ð0-wÂ1ŽûuÃß,{7‚¦f ×fÙSåðÚ¦X¬¾)â ´„ü°sú¹O4@/?Y³þÁ+œ.é$\|¿[Ð#*é þY#P‹Ñø‡¬»-HóMÑôÖç¸.C¡²›ÞßNáö|¾§Œy.®û/çé¸Ø¦våßbJ܉Èj]Óý’>ë'_ï>¯ß Q¡ô룶Y¡§£áÃ+w]PïœH>ûøzÔ#,šãg¯¢d1H÷ÿdc’ƾ,Õ~B"ÑYñÌ=Ñöôôë×íñ¢ëŠh Š@©Aà×iU€ìróßpn•›Ü‰.ëniü¼sñxÎ< XɺQTéî=9éý+;JkÛ~s_‘ûûñûìI¸eôËAb™ˆ„<ã‚Åÿ};0êœÝ úyiáÓ—ù8“§gx`Mj—k¶èAb]—v÷p#üåÅ]]ËAyžßÕ·¯.§ þ;3ÚyK¢ª]q-ÂB`¶¶C»¶Ñü4Y:E\ÀÌŸK"KQ”Óxoîäx`P ’…¾íÎ"”[†Wæš/Pý˸G#*©F!)qIÑfâNÓÏåïí©\ègдãós-çý˜ŠL2Þ9É+D˜#ƒˆLÎo{<8itñÍ°rµ“@úâÀ@’,~nÿ3Ïb°p–Fmèâ]ðþ-#/!Î#/rfžöÙjµÛëåôt™Diô¢›j¥c ´(ñ –¨/ðhªïY‚÷|¢¸ß¯?[³ G©-;ìb‚6Ö‰4d‚Û#,¯hªcW¦~ãj#,0Î_ÇÊ©!WúI%¸N¾|µ4°I³3‹ÄóŠ¿›?ûm‰ è·uèCƒSŽª8¶ÆAi*së|ÊF,DÔ3Î$÷M¤Ø°Œ^]~ìœ-¼d7­àè‡ÆájN™ü{ÈPe>HË)~Tw’ÂÜ‘Bc~=6ÃaÑÒw÷‰4UUH#/Âr[“EÆçt¾6¹æøÞŽæ"ö#*ßãEâ±ýs0 –#* CÍ%Á7Äý›i\š€T¤Œ=Ú™îÃð«…p2óÎÈzc Fk#iÄî•Ð1sNFÉ÷¯§@ÛJÜä°¿Ei˜£oŽ¾Íiâ½_C‡Ï´ÆïO·ÿ‚vð³¾MD6㱋͗ŸlY,'yŒf)VÕûÞíRzNša£É¤ƒÛ¶©~¥y:&)Þ<ͺ⛪`תËV°…S8çtn_od›å|>839 #,fçÓZIQ³¶ª„±ÈFG­F!´ê¾°ÞüßåqmÄ?AÄ/p™Ú7ýMHI%õÁ®\jÁQ3±ñ¸)_ô{½VD¹4›a}“-±Ap"ÆéƯIÌÞj¿ð=è4ß!äi"F/cÇhí8²¿ÉaÆî[õ™M&G>ö)Œ¬Žˆñ⬒…¸ïà7T㦒`h_Uñ?´ óA¬¯úî†Jô#)&…4œü#ëÄ:*7å¥6ÂfŽŒ.†žªÅ'¬ÌIL„ °5uîP!]{í¶¾¦Á#,ôsÄ÷‚ˆr“$Å .3&=ßÖoÓj“­mÓœð;’aתÍcFm=MAbÐ#†éUD`o]h/uãOŸÈ宓¤ h&¬Opšˆq¡Í w)Œ…DË .îrÇÖDTDRÄô©å¡6”\®:`Ìh1ÓJ? q¯-<Ä|*¡´:sk‡åL†=þyÏeÏ@ÜUá*1•E‚ƒVÚ^oZ+bÌC¦AUÎUhÌX5û?@Qè¬@Ô‚PÚ6°u~{f”Õñµ3O7ø(Žµjå#òÛÍì?ÛwäÆþ¿ Ú?#*¤ÀnóY?ÀÅ‚êBù·ñÌÌ2È3m$þjן˜@º#‘·ihQgbåGÃ<<¸iƒ(‘•í"Q‡f1áEС`ƒ÷-ªÑHÓy©é¦UW‡Þ©F!kj„|:ëÍ;iUâàÎÇ0)1- #*2#/6c=$Ç7jœÜÁ™óeLÖ­a$A6.”aQAJg}D$ëžÊ:S·EÚ=eépÞÏÂBå:3£Ï¬µXæÂöó~Õ×Æզ߼ñßD¦?’\,éÙ„h,÷g#&œïÓ[…Ž‹À‹#/#0+iÉœÙ=IÐõ*¶`ûh±†ˆÚRË0IRp´ Mù‹„i[”ˆzxž.:à‡F»/(áÁ¹Ýl^ø;Ùßc¯ÉV-S¹ÞgÞCXA·–hîC£.˜sèhr'3u—¸JaÍ–…BPó×O«v)×?W-K·*o7ÍÝtÑêúöÊYÕzÜòÇ#,JBG¬vv©»†²^æþâMÒa-pIÙðÍÇŸ_–5ë€î–Ý.éƒ+Û‘Öê£SÎ*Ë&ßVQdóáýŽš®¯§¶Lí¸¢Ró‘àpLªŠ¡®#*ü_ò÷2–Qc>vKU¾œOÎ _å!öÓ>Å=NÕ:ìúÕ¯óG”éÝ·¶¡qmà¦pèÔUØäíS•Ð B}j: ÈP׌Ņ°;ÅÝ@{j!Y»dº¡a‰zî×wžKµÅ§ŽÃ1€7H¸msX¢Š<>>zâ°{,ÀæzHófÑ_>WÒ¥zßFãì\ Ã0ÓN„Qdj uT,f%à³Ï3™e˜ŽQ#=š÷`˜š&#,*‘Zi @6²;È™ Ã{†¢ŠEòóò×2lÞ#½Ã, c¸¹hÔ$l;^Õp‘^Ñ¥bÈžÒ‹O(Dþ3²§,v<WGÇò€ÊÉøפ0u¹VO)r™ n)¤›Õ¤–¡u ÍraØÀ°!ÞÛîp/ÎzDœq“ƒ†á{MdÀ~— µCt·ìçš,0p¨¨S"Ðoœ*ñ“!WTðCyp2b2£k“Æëuç¬4ImÇ0XjkT£®µ‘‘‘éqíÚ+ b!Èj#,§Ôš#çÑᎦ”oöɽªsµmÌq÷÷ôœ”´ìåsþ\ã¡kΔ }°Â±A' ?EÛ``,\;ßGéIHYz$Ìð©2SgÒëdGJZÓoý¿ÞÕäÒ‰Èlîí(PÞ{>è•cº.uYÁ8cÆ#,µw3s³0Ìܤ‚éW‘ÛÆ v+!£@÷jhê1m&pÁD5ÐÔ:ÚdJ0­(Ä0ÃçhÐ؉ý0¨ŒÄ#,¥Ë#6PºËlˆÇYbD0Nè÷Õn)±vö~´ìÿ«¿^6äRðŲ#/2J`±@GPÀÃ.ªº½{õ· ‹cLŒQ`š1 ²e!£%°Y`]Q5C­ž[…dÍÐ1‚É˨Eb+aQW¡ÍJmdŠ£h·ÃçÛèõ÷;RîX‹$ê€àÕÓ–ë ¥ú53#*ñZ3+Š­12“˜Nó¨ôÊh¦5`±|]£m„Ê—sV÷$ïAÞÚr+q›eeé°„º,å€#*DÅ‘1è¨8íÍ‚pðvîò§òÐ4Ù•NMÖÓÙñV"tpÁÒ€ÜOº5â1”A”ËÃF±ýÇÁÌz,uèý,–g«ë|Ç¡þ~ªŠä6Èò¼„ÞöŽµ S¶!tm#/mD¼ ùHõ£œ¦È³. ŽTKB™m#/Ú)HË#cJX†ìƒ’£[ÔÁ¯«açsÇŸê©rÚÑ8r&Aõ…r®¹Š¥‰ÁµZ¦}òÖnb:^;QM…MølÎÁò»’µgŽSâ7}„;LØA"A#»ãQ'â+v“ 8Y)ETßB‡ýƒÕº~1‹Û&ÂôJ)—špÂåJÜ£Åâ¤cI·“É¡’f(L| Yœ,gR¯õ¹Ù(@æ Q4°…#/FÌd«lǪ#*cWéÐÖgÄÊI%]-¢à~ÍV’§é5Ζsë´ËÈkrMj’ˆ(©ÂDÄ#,Éâq#lø©.ÝŒ‘ü3²éƒ#/ß°§éÈÁ–btÞ®pš¨¬ãfˆÂuXT¢ÖžÄ±`Œ–Ÿæ÷ ÿv{„#,#,^)sËŸç¯øËæ×ÝiÄxBœº¥ri€4ùë:-#_b‘¸….U»1¹÷¾Ååð/:1±zcõ{64#*ÂTÁb%…2lí&YY›9t¦jb¢Â¬1M#µ’Pȳ"$èëE„4“€ë#®bšjŠ1Ò(£‚Þ66 “x†[ü.…ÀMH†Ò+J‡,µÆŠ) ­PÞ]°J"íECF•‹#¡FFà™"d´©0ÔV†ÜŒêÈÔDcÓ1iHÛb!‹M).É/éçŠÆïã.M3#*œ†„›ÜŸáQMæJ祃Çr+åΟŸ<ùóÇE1¤ÞEÁCJá^°òÔJXÇžt{šî¼ß:œK¬/¬÷Yîóªz §no¶µ|áî>Ú|÷NF7”‚S•"ÝËÐÏùéÅU Õúïµ2Œ£×‹Ü9ÜLá¸ãL–[!§s\†‰`¶V+²ùo.ÊœSïÃ<ûK1Æp&ݱh†MŸV>7"<úôQ·èrÐ,”$¹ NÝ®Xk|\ùŸ^ñ{¤(3Ç9§èu!Ç.󎺸Hñ.>Y¦è¤`í…fKLµíQe ¤w|«;TD¦»„øCørš›nC¾#/6_)t©òØm²£kÛßTiÛ6nÍÁ­€çÄÌVõ£Š‡‘µg"ª0–0Xw$|¤h”èÌT;KŸ ûó:»:/GêÇãÛt™1Üy’@Ê`Ÿæ™]¸‹,.%’?èN5ðÑ=ÛÝn³}‰´†?2Ä(áa0R£è¥x¶D±¯g_>x8¯‹œF‰ÚtõË÷ÆlªuÕªžC’¢Ò¡ó{爽ªcu$\P”` Çp¹Œj¢~yµy玟–`cöxÎÀöìêç‚„Œ"dhgÒèÒÛ—&U¤ˆÅ+5PÅ1{;*ݵ—4þÏ´›êdÚ2‘OSª\¬’TÂ'\‹Ïz@þ½uÎ8dù»ßgÜy;öSÝŠ09ïÅ_×_=¦Óÿh8ˆ:i |)qÍz[}¿ÝÕ/Z í‚¬`º×ã\!Ñ\~²0劄Ü4Šlr̈;·ºýjòNmÁ,‡[ØÍe˜ì›±¯S®î…#,x *¶™tƒc%hÃwX«]6#W5É6¢·-·MY¥»¬ù{MyÞµÄaŒdv–Èx±êÒ/€¶`ÐD¡’Ö³÷«£·í©µ´ÇOÄ-ª·Ëf7ªÆ°ÓzêéúÖl“VSÝô#/ƒê}CÚͤPO¼)A7z<: ýõ¾ÎUËåÒrô³Oâ}¯ßÒSÐt"Àë*.=#,_TÚnßç/k#*ÓÏu z»@ÍC†°:okª:fu°5gèÃóÜ?wï¼Í¿ÉŽÞÏg½êƒ§•$9Dý08ÃÒüó>'­§æÒ ‡³ùyº9e—¿“¹ rÐ1ö`€‰i@ š{Óƒ¬å Ô×ù‹µÓê‹OÏCˆŠ7ß_ ÓŸïÜogox½‰{ÖØoô_”¥Œ#Œ±¥ñírÄàJì#/ACšQ¤]q¢½”4|ŠD÷ËküÝ©ãä_ØÓܺ»Lè0IcÝÏÃòý’çìú¸%|Ør#*äEP-F³72²1NÈ#/{Ç rùŸº–0›77ªwõt[KÕg Úœ ܖϯV~Êãæãë¿d¶zH ¨µµ ã#,çÅÃÓñzÉSû|¿~+íŸ&bè·¯Â^­»ÄÇæfÄúu²Aàjf.*£%^y½#/@ê—Ñgâ2Óu2–©øœ“»!ü%ÙYÉÕõêDÎÕÍô8.Ò㸅UG3ƒ)@Ä«]°±Üµ…»vîwêÜÁÛ¬?ÞM" }Ãþ#/ówˆÈ zŠÞ2‡®eS:¸!61ÐŒb·¯&dt“ÃQµBN€ Ó¥Í3ƒ¬}ÿ·wêTe4vëPL_ïZ²ú¿oÃRmûþ¿·çæ·¡RüY*ªUT¦Ž¿6»ð…š©Üá õŸ®Q÷òúß³_£ØfôÈvØꇚ>Œ-ß󷥒¡E±êvØ°E3jK&‰˜€Í•,eí8ÌMlUýÒôvݨ£Yn¦Š”0)…ª ö~S‹ Ú¿¼?´ó¿wÜsãŸWüGPÿ(šo6ç¬ÞpL¸~¼pÚŠ`ª¦’a[Ö)(G#/iŸõ¹–, E`ÅÊ»®­Ô³9ˤü‹`ß›8ñúçð*ãÇøy?yþJa ÜtX¡EáñŠO¥Sh)Ïç¸Uq>”ß'åV„Ê(ËËHÄÝ'Þ”T@?Ä) J©‡‹à {Ò“ö2MYL˜Ñ#/-óÕËêV¾Ïó:½”mשWËxB ꂈ#/nUECÊ#,ˤµût ˜ûg+æ­Ù©ZgTÅ–ÿmVZøŠÔ#,Ò‚“ ª…IåæVÒÿ,D@'Ó- ZWüÊàà¼\É¡¿ƒ’èZ˜s.\e—úå§ñjÅ‹çƒà{K¨uc BfD%ÏyZØ¢Âù ò6·ÀlWoÅPuˆùKJ"K;¡|Æe•ÏGOBäq(Ê/På#/”Š#,«©ÔÛËß™ÏòS­]èhl§­!ï ¦é$<5ÂbŒ9¤À§²Oò¥®+é×NXjÛ|>úæòOš>!(¾T(`£ î¹4ãU1R(¼P &ÂdÜ‚ÅZZ‡eÖh;jÿá#,S8êçt¿¥Í'Ú’èãÁ¥œ(èeþF’(pMÝ(¬$*áýv¢,QVÉüéI&Ã7ìÿåĨ {X)::|¾ãîå›kþï6?IæùíþæýŽüà#ìíú~Ÿ¨Yëè_'žgÔy¡ýÝd…¼Ao;¿_³oHÛ;1ˆºØv_hþØðµ63Àð=Oý+³Óòh”Ãõ¸ýrÈ¿#*.øÄJÀý¦¸-‡>p»èGád?Gx}¹wØÁ¶ô“n‰#,]ß².˜€äAÉ2G ƒñw2í¼_×e´§1”‡9½Æ…|tß4½íùÁGåÝ|m6%¨X×Ì¿(§öÓqãøD;‹/!ÖåîÿHðÈÛuVW?÷j¿½ÏÔM—r¹+©‡/ç¤i^4ÆDÞUHIêžÎ¿žÜ¶€¨¿•0c¾€ô÷^¥ïPÊí8jßuÖÑnv5åã( H†T9ðl+œ±pf!žƒ†3”Ñ"RXfß•‹´¹ÎçÕGûû/ãTYÅ»Nœ#òÇÉž¿TÁšW‹§•À馛µlÊï)#,¤)#/¨ó°p¸X2Ö@xä—T]Ṉ̃)iYÂÅ‘ØGÚ;ǬOꈇî÷{¶}zØÇøƒÈR(ÿÈž†ÅãMhª£”¡‡÷þ«Ö¾Áˆ¨ÕbJ`€”˜“Ý:ü â“ÖœV'—Då;ytí+,ìÙ“¹˜`)‹©l6º8•ÑR48¿NBgÆôÕxˆYþè–A#*¾Ïó䆕ûûç¿­`FS©v~>} ë¡<®—íiÍ)fjè=WX›2²ÍœÌ/!@W¸1:T®‰ ñðÆ{Å=Ö9@ý°:† i9#̳¦sX&ba  ’„ÇiWx¨ÃWâÁ÷aô»’Á„•Éa…~B‘F±Â,åå$DF¨ "…àý*©ë]ˆiçþÿ{¤E& %Ÿ Kbø`–vû€öûÓ*ýõOÙF×JÔJ&,«3Ç馬´Õ… D”U2ãb#}=©ýcôw0ÏV6ëÍ~_ÇãŽî:œñ3ÆË €ÄŽ+út0¶j ˆbWÖ¬I®˜—¦#/Õ áZÕ|2âÄþ®žOŸçÚ«¢˜ #/O9v‹²´´ó«xÓÎÀO¿4»¶ž“ÊþÎ<ÿ‡bÿ`0ÿ-¬#,;ûkúA·óòêC©“akÁ,–0¤´… ”À-`!,òO)#*Œ˜O$…AE@7ý»~ó}´„ˆ©jù #*£Ü‰"‚ 2è뇙˜±Û¿·ÿÓ³Çêû¼Üôø¾ï¹Çã6né—ÛÑñ>êe©)³ëûí¶ÎNOWé³Üìç쵂½vºñ§Õ1¤¥«]çEË]Ž÷2-‚~þõï÷Ï~Ûí±ù[£³_ßÛúFi¿wËN_«’ñ W¦1œ´sh›#/nµíü¿ÁùOµª\-ó/§½n_O=ÏÉõh¥õ;Ü5û0råŠû¥7ùH´x;wχNaïÛíü;GF±«Ö[öf!ɧgëýßkÏŒXµ.FO‹céÝ:ËVΟV· Ø>/¾Þ·ç¸exÐ=rañvÉ)¹=ÿÎ_T‚üèô ó¤q#ió}þ¨g%ÓäÚöêϧ\§ÄÄ[Ž<Ãï×æÑôyÿ­ßœÇZ–¨¦êÑŸ»#^6ûí¬øáÔ¼¸w_ì²mðíòA°…úqçr;¾ÊløáF3…¶xÂNþª8:=ÿ6Ïȵ§£N)Õ>Ïë;ci«jÞñÕ®gº¼û·P¾çÌkXõ?¡Þgä-À-ÄqG:>ä±»«ã;­0ß‚ÙÚÑØ<²s¢E­§Ÿ÷jùÛ#*n²Í’¶ÎØ›l½€ÝϰƱÙɲ˜—¦Þ,>èØ9;¼û¼Öö¬š¦xã´[·”B.`±s6ºV03/{ž®iû~G8˜Ù§m’w/·Ÿ—öù¸óáçßÃØwn&éc½Þ’%ñü\#]ïúïÃÉlxql÷í¹¡æPÃœÅ-“uÜz÷Lpã_}ëÃãº{Ó­Öq!ÞŽ :xA<f¬R§»™EJ¸lÿƒžnäø½;Î|¬±®½óì${¹5Œ”u+¿cÆÿ¸&±Ÿ£Óн¿°ÏäóùGÄì˜|ØŒö_IÄwrfñ]ƒE²öwï•ÿ`úy(;ב. 9-íÚúvÚîÊÞ½¯¿#,¢ë>¬ òª¿Ü¾*ìÂ.õåÁ“íáý<ÒðªwÃ&Ç‘v÷èûƒgé8¨ ­ 5½Û¦Ï?Û7‹ô¶Î]8Ë’Ô—+|C°GE?NþŸÓ\}\aï8gjŽ¯æ¢…4Þdzïú[ðÛÏŸÕÿ­væ=ø»ã^Tö‡Ñ h³ôkÚ]§+ãŠ'ú…£ûs«í¾#*I/üLuüÏÕ„zùG'ÏÏý7g#/3£·àï£J,@—1]ÁGf]ß]¿¡Ù#,Ú™}ë`ú¶qwÕÑXÙ³ã–s³Ðõ±£’¿Æÿ¾G#* ãwÁ¿Ï²3ÿÐÐ×úsÐAã#/isÑɇ3<ÝÀy.çòƺïù~/ñ­Ÿ}–~nmOO°ý§è?_Ú߸êïÓ·}¸ñŠhî~Ÿw’µ³öZJN¸~¿¸"¤+èûz3øËÎÙ4»<íþ–¦§ñù?(>5B¨¨›€W*¢‚P¤Å]žoÂËÈ/ü'éñÉtãûJšÍ½W.ÇïAf,hB¡€PŒ¿B,u*HG«›àÑ/€ý¶å#*€¢âôX}vj;ÿPû:Ò¬W$Ÿ“û¾ПÃÈ:môö#/}{¿…ýóê?gËžœ;sðò~bæfÙäìØgéžÇ?aßúˆî¿7'Ztë×¥uìøj¿ŸÐjBëЉËú—êO‹ÁA«¸tŽÎì ?Ÿ70Ü<¾?-;ù{#üÆ¿Ñò;¡G¼~#¨w8ᜲ·É(üÂSÇšeqú'²™¯0ñ£ù?CF§[ý1¿ŽZ¬~¥Dp?Í~ì0ÃïoáÁ.—¸on)án½Ýãô¿ökݪÙ߻箷#,ÉÇÙ«wíù¯ì°n#,ÿ"t]OÃ>¹ïŠeÛ)⸨ýÃÔyϳǗZxîa´yÇ8°/XþR@Ö$ OÊ#³Û×ÑËÐÊ> û’Ôò®QÍÏG*·ÂA‡ÖVžh¸#*SøÐmgîåjû‚B˜'毫¿Ž£gN•çñêûpæ¾E¿Öú=<ýX;8r…ÿ“?"ó 7Ño^ŽŠ™¯åaê•>rÅ&åv`ú0ðæ]\îýÓä¬É’ü‡ÆvÓÏ4Qô<ßÏøa #,#ˆôrž•QŽœ<ÓÝölëéÉ×óó$µÃ„†Æ 0=òÆÁOŠzf‹U! ûZ'Ùdܼð¯áE¹ù|¶®gXí9®ê/LpÊ׃ çõ-ßêLZOò8,†È¿“#Y^‰þâ'¥¹ƒèšW£M3¬±•ãä‡/¾â÷g+Ó?#¯€iPÇj‘Ö̧×lpzüê%ÙÇñãDºLùhâ,༉tÌàI,uü·‚ÔtŽ›#*‡Ö›ÿ_vzg«ê·ÜˆÑ|=Ü?PÃäî¬8´šýÏèp€-Ék§ƒ¯ „W´y]1üg$ëejŠáÏʲqŸF|]{ì"Ÿ*Êm#/‡- NÚØÃââ+Š'ìnîZåe5¬mŒKÌPŠÔÇöÏkÍÞ<yv\Uõ®½¦¶yô 2ùÌpòd65;™Ñ©²[-ãX—Tto®!Õ´P#*ƒºÛl]&ÞIü}¯³Ü’­ºcœ°ÃJ¼6‚–4À½³#,¯J#,M‚ýâv™[A¢Wa¢|‘W#,>ŒkÅãWÊ(ñõ™/¥þ[ÝŽ»æM¢H!%'q!;5¾ =ã¼ì=;@Ó¨:Ræ ns1`*çíã!H£ÌÖ4WŽl‚`@jâ>oáÂ#*‚«ÃâýÖÛõò_ØþñÍA¸wûðì>7­ñ‡#,‹dWƒy,¾¦ s @±#,ÈÑê ŸtDhê:lõ$7ISQEG˜[Ö“‡ÓN÷BC‘Gv­@VýviéÑg—òøÛ³ ¿³ò„0zý_iÖZ<ŽÑ=õø>t-Äôé&LÏÄ°>2àÍŽó×±{ñù~Î!ÇÙò²eäö#,ÀŽ)“ô[ˆÅç¸j?»Û&ØÃÒy]çѵv¸Ñås?èÃéÉ4ݦýÞ›ý‰ê©LRI͵ôÇŠUòuŒ¤öÆ/ulu³ÜYÌrs~qzúñÂNïþyÃW¶£MþÁ ;Íä‡(#,©%WªL#Ф’-t#,ã온þÿäÉT§>™OWñ¨ƒÙ%<£æú½cmø4£#*þÎylÁ¨6ÇX(àï&­4ÿgÔƒëXQÀ2§©QÈÊ¡#/?ˆf@ç9œs×ðwâó®ë1¹[—JåxO¸cf¡ iDlTŽ Ž`¢´T¢M;b4CC™ÈÆ4ž%UiAÆàQQÔÛ`H^íO"Cf®îSVe™ªŽ‰B!ÁR]”¶…±Ø£¦¨ƒšÃŒ4É)5b‰¡¡º¤µY#,X­‚0Ì£m¦© qEvz²iÕá‚aE!Â2`lRDuý:Wz®®»‡%З#[!Û¨´%~Ø‹`äY6i´þŸ²÷[Ñß"+œ8ÎHÁ0#oŸöù‡ˆÖ¬µã²ƒy…1>ÿð–†jKQgõçn{#,± »‘Á¸#,+S#.¥!„Àãù÷qý¿Ï}ùú|_ˆ3¸EäÏg™M­+h1’ŽŽª‚&q‰Ë$Ì\Ð"JL#,ÉbRTb"aCV ±6Ç#f’J¤ƒÿLˆ* WI›}~3¯ïÖš'¾G—+–v¨¯GÌšpíý8÷K¨áƒ#^¬©|:ÈŠèx¸k§a¶ÝrÊsÊÕ®Á—6ë<þ÷Ž#*Ž5›<Ý_5†î‰Û·?·€—¤Z«×åÃBþ­Ò0êsþ=\œ9¾ðÐNQ<ÓÃöÿ~·;>¼?nR?ÓÕ í¼Duä,l¹.ÃG螥”%öJ¯õ<EÔªÁ¯…í²ëpú+¶:Jß÷hèÉÝœŽ¾1Qx¿ÚPò@8h)åpÙŸŠhH$‰ íÁÞ%Úìpõx{ÿoæ¿w/Ç«_»Ä¢Z„yÊñ<\h5U6ú88 m:¾ÏrðígôJî<>!Ó’óÇg¹y´ ÂÂwÿÝûŽ.s™îWZæ˜aˆ`~ï ìÆ=á·E¦å2þ¾_ÇkOËM¾fÝý÷mæÙ>bmÅ}ÖþéïÓß1l–@L/î‹í   ôÏJ°(¤}èüáìÖ‹ŽûNó†Ùìæî M­y­ÍÄÃ*Q"·Ÿ÷ÙªGŒb”í’ú»`“ZPÑm ìMa#/Á³ݾ\Ûw7ždñÍfR¤ÙHE:P01CbGVnµ…]Ú“PÃUEöR6bq‹ Q$E…®¡‘Æ•re+-Ÿ×ª-"4<åU«œÔ1¾Io:+#/•³[(D±R²’`£$éÚN3‹Y…#ïÈJ”¿³#,#/ãB742#,. DH+F"•‹Æ^“K®Ê¼¨-F„nT‹ 2KbMo1´áj-!ñi«Œ®!ñI‚Õ-®kD´8ož) ¢#,­”i¯èÂc:´´q½,)׺èg)‚œjJ"È–Ÿö0 ÝC‹OÅDloJ£AiP+Æ¢rQÕZ ÏÐn´UÞ™QŽeu’‘ŒcdöÌèüÒ¨çƒ<‚½l8šm¶µ©ZÆ2R„õaA‚¼–#*… Èij”6(ƒD¶; .ÞÓ‹ (+]ÆŸ€ÊÊ×þ#,ËÑ EØ`XÚUëKE®{yÂØ°tꬿø{“¼Ì|»eôª)éÕbèîÏêü,Ot~_©ÙÙ¤ßë¿ÑM#*‘-2J§‰çÿÏ#,H¶¸|°úoWggÀ{¶tíŠ …\ÜžaŠA¨÷)ÿ(ošóLéÑŽe¿ ýZŸ¿ÝÝÍytŸ-ñؾåùËõKŽ˜ÈÛ!!JóyW®{)ņ[“Ú»m4êìÛÚ~ž¯ŠBDláþMQ$ë÷JÁÚœ»¿Áq²­º?–àèuÕ5+ïzȯZ|Ôq.³ñg܈Ûèü´ÁÙÓ¹ÁÛÚ}ÜÊGFþj >x÷ž~Hç<« Vé…§/»Ò\ËÁAëf$’ç*«ƒ9t`ÃíŠSÌ(P@fä³  Âr4zVÒ#zz™éª¡DüǨæ‡êÿ)Èu>€ìTWÒ÷‰à5ÿFߤqÔ¡Žs¹Îì¶Îh#¨îÆ,óôô¹ô¥óm¶Æˆâÿ­O*b“õ¸o8ç¤õ1í¨%ççì|7ݨƆ ãÔ\„køíû›‚2!©QH6 ¨Ú²¯q›$4±§’ðäx¾ÑŠe¢¦*·¹ä“¼‘0ïà:¶ììEÿ6 4òÑ×/mLúœœâCÚk\>¿^§úh¯5e2Ð?x±Bª`¢¬¯ê•¦Ë›j‘±’Ädˆ±#,D¿ŠØþœºo6Ñ/ŽÅ# ÝŠYdJ©ež¯T¿®?A5Ÿ/`êü¼­ «~#÷w|ðó¼oŠ”#bÍb¤±%Îß›ãëÊûµöÌÊìÁmêâh&7pÄ`É24U.Âhf¤3уh¦b\ ÃSU#/6EÆ*1 ±„D'© cÖ³{è« Á£Pdi°¯$`Öpfa”#/6Pu13 b2WÉèzæÒñ/nF&˜W»h=ÓxŒÇ‘Àµ§G]:ý˜VŒAØíã”6#,“qV5U#,ø0Í­X(ÜO¹jcÄD³vçÈ[ˆPŽ^3#•DsV‡Æª+™6òtà ªë àFݬt²(DΗQ,eP)*(˜-†Ó‘2ņ a¶P1í½ƒFÅ£¹v#,uiNÝ‘EÂcm'[C®Ù`Ø2©º%Èe“ÓA,éÔAýŸìQEkN¤¹Om×@a¯Nõ.]оãÏ/^AÖĪƒm‰=² *ÛÍL<ní ¡qŒÌüðbÊÂBÒƒ§“~½?#òäþ÷ì"R€…*#,½7mãÅñÚñ›úÇw©B¶¢ñâ?Î#,É#ÓøhÐâ$¡#/Ze2CÍAO›¶þpÿps«„#Ô¨*ÌïßÑÏ4 ŒøÑƼ¦ìtÍÒOW/™£Ú õŸ€–[4óêôâ:“© ê´ír¹g\¹#*ùǃ4FYd¶(Å‹ JªŸª•T@Á§Gßw†=سòàÑÄD\Üatá¥Ò!S§ã1QEQ#Ȳ:‘RŒ‰6TÂÌúìj·L§h¶š$vD­´å;ªîŸ/¼:ÂÃ×®i¬KÇ‹‰¦øz#/*ìy®½ÀÒIh•·¥¢#,ð¨ÁÙc£b‹€³#*ÜçuuJªÑT"ÜgÏëú~Û;çQ#/úÚ¥"“p6ç*‰—ë0Ò†CôêßþCù<þÜïÙëø¹ÿ‡ΨNY;ßר_ž¾ñš|2ïòFŸ£­E>õù¡9ŠS_„#/<?5ÑÄš -+A‘¸·B&:;Hž¯§¥Aœ°åŠŠJ«ºõ7N»ˆË>‹¹Ž®´Â@ƒÌimÆßZ¨ÊNЮ£ªâl17$n(ðq°ý&nÇ”huA¶œEtn9â¥èrDcxâVDi59™¢â‹g3702•SdˆÂ ˆâ„",š0,!L¬À` U;‚/‰% #*PõDŒ¥J31› ˆÝ9È0;-äèÈbæÉSG g*1±ó!¡Få]ßÍ«[jMÄ‹¬’dTtúå6ÁuhU›@p.70Ȉ›1t¹ÉŒV¤*Êø°4µ#,8´†˜úž1Ôf¤ý…my±‘Dâãp+cvÅ`j0t¡–H²ÙdŒaL„¡&­q5¬þ«Ë¿¡výÜÅîÞ ½ ?,t€×~ŽXŠ€×5\žðCªøJRsâŠ@äEcY ª XˆÉ¨aFòÏOFh&Rcõû@oÉŸ/w×Ëf”ÊáÐ¥;ÑI1iÍŠÁÍŒï£É¡ØÆ*ë{ ®9“¿¾lÚm¿i«=DLP͹Ì4³·öÜSÉ"¬PˆÕAm”Åëž1¡Nj—Øî#,qs4Õuë·æfÛ{p„'”ŽRãã¦øfFÜ›’+[])n1V6«XËið& ƒ$M·­É;û#*ž:—i™£_%äѼh½ôµÖ§®2¬ejˆcùbÀÌnpdÜ…2Q™6Íæ)‹ùÖ|ÑW¶¬Íí§ Ö>Ë¥?^#,ð4cM¬ h¡$Þã¢ã(gÊà:< Náõ(Œ¿Û§2[P™›XÒmŽ s mt(qŽf8qĘ´æ 9‡÷~òI ^8ÔA"û\hV;%d¾·öE*Éà/§KÛÖœÉ,êÓíFIîŒÞµƒÆã8o™–.¯”àų‡#,¿A¥ƒÍA#,¨òpŸ¹ŒX8™¡·/©© QÃph-36“1âÛ¾(¡}ÝsµçvŒuk}×{ gMk¾¼5.¡¥±·9¿[¬ŽöªI,³RIÝ÷9Ë=;3™#Ç-Ÿ`§…²Ç ƒßL¿S-¨¨2C¹˜äe„#/¥(·‹|âÁ7VÖ»WEùÉuh̆·[‚!B ŽŒæC‚—‹6èuÜQ¶ÔvtNAY7˜–JÇpÞ Nq°QÍ峺jß#,K¦.2a?*#,bÃ` ;mkz‡F>+¤V¬v„NŒSuÕ×ÌògeËÌ÷Z[ò{©htkv8Õ¹ÓŽ—fašm– -9мäTØvŒßg$Ï9D¡.™šÑ]®íaZu `ØåͶ2rH'’mjM ˆ0Úy›3]ö{ŽV6&<t¬[ô½™¶m¸ƒçaú̺߽ØzwÕ ziÚ\DïìÛòñÁŸ†VP§]U/ðªB’{ÌxØ÷ùí–ÔåÍŸU½äËÝ‘ÆŒD*£LR¦«mºJÿ׸ȓ‰È‰ÆÅuͦOÔʛ߮7œîùUÎ$ý˜¹®;®Ü\lÔ-Þe“›Öt|:ˆµŒ9RM|Tal¦ã ‡Fk& h‚&2Sn—|w-ai,‹Í=ÉE¡N "wÄ!eÌ*>{\˾iá@Ò‘^Ù¶§(­• Ôy¾¡0BBd˜wæè¢Ïú=-ºtwI^ùó¬:&†šlû^å†4üÿ°ö.·×ò„±É=y¬+ãÉë¶4@úŽˆ4ÔÅŽ.÷›ËâÇS—iÑÕim;'Ây€Ô= ¦åœ•²ç8ÈW”“í“_ÚŒo(ˆ|¾óJ’˼Îø6ò.Î[h*•Îg¦˜ˆŠAf¬Ù²Jؾۓ¶Å\$Z²(ã9j/xdîØX§¥…âÝ*I7ª˜Ú#/!Õ”e«¢×¢mÒ¼…êí›j¾LÓÛ“nŽlnFpüªúåÒÜ-ØxŸs¨ŽµZ}غ £ÝblÓcMæáZ­oÉaF3Wã±f½;àjo±Í&é³MŒ-…±T ëŒb[LÑÅÔb0WVše(÷Û[äîë$âè'½û|†øKëÃyÆÎë××"M¢˜4d¼¬p,q!Nzµf嚉œ³¦®Y¼F&%mþ ½¨(ê6â÷fü[àC-|#/½›¨ Þ¤}}~ÿ¥áçúqÖºçI„‡È÷gtê¼*8z!iÄ¢“pò˜J'YB’R±Úç̉—q¨ÏÁW§ù_ô?~– §P‡_{‘é,œ.´ñó‡}aÒüM=ÀBiUSì5›y=\Â4•Ø[ö¥XnFW6¨±^h?€7xG‘o4¼R}^G;r‰0#/äôýØÊ˪ÀˆŒõ Ú_ûú=Çü)zŽüÜvx¾ªáì\Û3å>;Ý¡x†|n×s Ó¿Òÿ1i%å$ËÓ3€#Ûû|$6§ñås›Ÿ¢gfõ 뙊aØøD»–@ÏI”4ͦ‘g™˜Å¶´›Ç#,µøþðÓ¯R+,;òþKâ+Ž~Þûl@!EÚ‹1#/ƒðí–@ð<”à πÏúêÝ\Û± ŽQ°0L÷¼<AF€°Q¨#*„:ä cáb€x×h0¬¬¶Oë¶v ‘õ2Á•°9n(3ƒ=ps¯´ exæçèn«‰ª‰a¦ÁûF “û#/^ÄIÓOA[ÖøŒÁpê`”5‰µ#/i~¢ŠÇ {Øü Úìtàz\þ‘vÁŒ¡Öñï$| ù姳´äÍA#,D¡àFìØÄݘ‚ò`\ e¾R`?‡¹ÉN¡Î]ßë¸i8Ho0;CÏ=¿Ñ:6,¯¨YבD `ÚóšÙ‡ݲQÃyg²)_ˆ~-'4æ$(AFó«À»½Ü!·6&iX¹Mµ×½kÄž?¦Æ­3Aòa‡vÊqàkì#áv×6GÄ_.ýúNç«ëS¯`‹ÂÄÇ%>Káß“ŒÔ|<;™nJsÇÊèM±ÆvÂZ‹"šbMVÊw05ª-V:¯=\;µç¬”„*^‘[ Ó-‘/ð‚¡>­Žì¯|ܱ( ˜Á@°@"oû+¼¹õ¨#/+r-;t<6+4羫béó†™õd*w_‰GÀVÞÈ뿦Ó:#¬ð©cSO”e$l½P¶o÷`¨ù?|>ñmÜÑÛêœÓCó_'ÚH¼Ôѭ솸ɻÊH^ØÊ$tø„Øt‰ ç0/)’îímç0´ì¹:¦¢NG²>}„ï&½Aé’’zê½PY±GvqamÙ1]‡BLÆrLVzž™Àßs©bãb=.½á1#,tß©¦´MhA»XŒ®¬Xñ¸]g˜ñ®˜Ûiþ–Fkl"†œM<» Ô”£ï¨žœ¿ºoFÅÓ9gö«ï¢#/™õv”ˬDBwòB˜Ä¯nŒÙ¼ºüÄZÔºXðÞ ØköcOzú¹øClô*Rzö …Äœjixz9ÂÆÌP\.Ñl©:ŠäìstC/ÉÞøÚ>͘4&]I!ŽðG#/QÓ ò‰Á=+• Ÿâ¹#,ÍqrݧXŽå“OÓm-&$vÛ#/#/M(ÂcÑAF1DÐuazë}p<3R˜tZ€ýúšÐyG9ùe¾;eºôØè±±nY,Pʹ®#,U±Ÿ÷#/g-†Ÿµ¥ÃãX^˜ŒÈ[Bì¼…¦y©Cx=}ÓŠÁd‚1 ‹y½alt°Ÿ)…°Û–{Ñk¹ã͆[ƒ¶éËk …ÈÁ…ÎG†s¾Y¾ ,ftS‘èm‘¶…ÍÒ[T%¶ôë“×ÍñàbµçkdžäÃýÞgôñMÅž¯ÉXpvêŸªÌ …G_•-_Å#,ð¾'O:òØгÝàRÜrúLgR$š.jXóµ©*–éÞ*o‰X&•®d„)ÿ4™„ãêÜGg'/ÔõvðŽ$vÊEÃÀ°´]ÔYK^< yÙîÍGàWí8ßvRtèîéƒoÙÕóh!]¼áAR¿d^ (õy!ɹŸ·9àÀJ¢ ølô‚hzÜÂí…¨ê’Ò €!6ýU#/­4ª*—ÄpÔçOKÙL%«´ VÍ\)uC»u‡'aí=ê ˆºdi¯ã]"óéþ„>ŸÏ®ŒõŒ1µd,t«/7ó\¤NǨ²…§¬ˆžA³66õíñh”}ƒåÄuÚäåëµT”¤·Ô÷@y#/>;æ5ìÒÕ bÒ–¬ ó,¡ãm/|WX×]°,§V©O”~1P;¤ñ^'VKè³óP;ñÃÉ!Vº¾i¨Õ¼2M÷^^ö:Û|“:ÂgËòlù[@Ù¬æjwr …jrGEÓ/•ÇAôµº!ý\”N†K#qb̸ÙGG‘šÍ\fúBºtå e6(àJézétÍ¥æö(áZG¯®ÖIôïïÛ°€Ì€ jDiÍnMdf¡[ Ã#Ö¸EŽ5·A¤ ñmÈŽ‚(ꪲ¥¸Ù*¢ðЛ <f›Î½–%'­»C¶”?”CNsèõ5õí±m³†ë¢Õ˽C¼Ì;wìdp—Mh¸³'ºiÕôFǦ´n¨ZãmÂR¡ ªœ½Ù°¬å§Ci|#, ¨ÆY—=5xx#ÍõoÑúÜ ¼Y{;ˆÁ‰ ã6)4jO'9×%ž“6#c2m·}ù’Ý3âöŽ."[km³èu¸}½»Zê¾/&û„Q«ǃ™è¸­›Ñ§q}M̘m¶Iö0ŠRûÖO•ÞúNÝS¬:ñ[cu¥1¿fa­ê‹ÇŒ"² [O2,ÕèoÒï`üyÓæôšE9‡”'æøÇŸO(Ï~ÔDwr%¶¾B®;”fò]Ʋªà‘eëg‡ó¦©Ò_=àÖ}úç¶àHÞŽ#Œ9#*»TµöÍQ<<§éŠØ>Ò5ûæv66Ìg_Ã1x±³Œßð#,ƒFÏv‘á(Ž#/äo‡©É¥«p¹(VŘórïøð9erþØãˆw¶j¨Á³}Ñ櫲‘͈§ó3|N>›HÛØ¡Ì#:–E¦çvÓ6ͧn'jVËà±èˆ%ÝØ‹´”Ùƒ›Áó©rñwut¯r(zµžÅðûŒ0ßBþïÎ[œq oF¼Zhå"¼Çáq8ÕVŒ¬jU°¦¡ jïЉl¡ü¼ý#,§lo´ÈšY<;ö‘áÈÛÎZC-lŸÄÏŒSxªñ¿n¸ê¸Ù²>ÛJ`ƒÀšt©aÝÌ–x6·ÆÐâ«Ë#,#/[ÖÇ]¿^ü<#a´tr÷(‚y×-»Š Ò„M@oÏÀÈ8B¸†ÓÕíØ^§‹Ö5¯’o·£éW31’ÚW»³±EŒìí³Läæ4e³8rz;:™ÁŠ¬×ÌXúlðf§YÐ#/‡¶‡†e¡>ܱÄ0xƒåz½ˆÄ<Ÿ|OÓ;öõ‚ðÛЄ‰Gw•-OlÑ`³ÓÒ#,¬‰jIw¢y,ûÌ9Ö—V×9ÿ!h)?-TyžúI {ÈR#/#/èAãËùÍ¢ýk:N#*uœ…Žxìý£f/y +#,pʳ§Í:^\«s–ÒŠ#,õV±õë4¤G0X¦òÒÉ°ô´%•Æ¸B˾ÂÂitZ×YƼŒ’Žû© ¹°gÛË=7Ø‚—5…Ù0+UæoÖ ž-[l䣌BÂñ<G~‹³rؘX<û!¨¬Å«'\Ú¹nhªâ¢c`(±û^Žˆ­jbêã_#Ö—Dö²Ê¢¿éï±#]¯ë£š°åÓ BRË*äQÆøÕ×®ÓÁøÍœ.¤T௶º&V¿~PªØ#l-±¿Ûß'ÅfûxœE./UßNÑMªW’qI\e`!ñ³—Œï¶^úè­öºŽkyaÉmF¼sžf]y`Ùªù’q‚(rk?~£ç¦y½º_5–èË™Ü&<{l¾c1„±R/5>Ž}‰ „—•{–÷ÇïÇíÑõ¯—aÚ©°uàúß_Ào+ƒƒÏ›WÎÄ(ÆöMt¤idÅ—A\”Okéàè¸Pe…Q»’ÆÔþ¾‡—Zãú3šÄ]zH•¿‹tª”x[SÊ(E.xýpü[Œú³êÂ×FNv÷©ˆvÅò²MîÑ#*:a…Ãz¨²üì“åat¬Ž¾ª|Â"C_5“ª/ñÊçá£K«Û³;9ˆÂ!ÌÕÕÑØŠ¥´sY²ûí³wÏŽËA:-J0±š/óíΤx£š£×σ.Ìx¬Ñ›x¿»ÄøÖß_ÛïŒk0Ã+†š‹ lï×Ã!1##%}˜Àè,|äº\ø‚³UÔ\ØâÌã¦ÑûFç>çÜ\C“Ê£ÌÕa{ÞºôQ´d4´‰äsÝ#/@¸t¹åêøAúõ6Ìc=’¤W”±ßº.ŽbsÓRb)¼‡3/#*ÇLXYc<÷ê²yØê Rû™ þ+LXXe9”6;­´:ÀÔ9„diÜE[˜OƒËÝÑøn™}2yÞé'zˆ·,Ƹ™0üe³Á³`°÷»Çì뉜۹ÝçsÚþ•=—[_6EMKðõÁØù27Ý: Óé8w³¢âpÇð²?Uש-'žO½y¼m¡·ý¶WiÞ#/–~G¼2)¥Ë+,˜ÓzöÌ]A ð(F7"ã€c›ÅþµÚMå§t»á#*tý±#,]¢M«’ÐÊìaM+â¶Î'zÃuöߙԙßn*KWDþwÄá}Q”¹º@:H·5WÜÖÇ0¬ ñÁDßÊÂØ÷Y„6tÚüaäV©äQ„{øÙá=#κØ;5Y™®ûr/j´…:ÇŒzm&<Ðþ9Œñ‰½ñ÷He{Î?>°Ç í÷•L¼‘N™ãvPµ§˜Ÿñ¼õÆÐÆ»¸ë·€ô]ÊaHR0¾ß›KÜófWãMÒ{ªØ¬´xÍÅÒÑK _…_¶/YSQe`à{©(êJD8ÉÔ~.zóáx…#›p|œ– ‹^BÑtôÂÇãÒë{Nvì#eiˆ­3ÅÍ "Ñ/¹–Ž‹––?a‹ê¡RAÜÊœÍ|ÕÈïÎR{ñ:] W>YôÊ€ÝâÕ9I9°ša¯\EE&’Xã°GeqçÑ;yáòßDÔä–òYD’8¿eK#ÉÐ%g5¹©o7ÏžRÚüòbœÄ-3s“ã–‚>^·?ÛÎø£´o²)±4ûs²ú¾1m·fA3¼ß€«èéÎ6)k4ðà',…ƒ#*µ¥cd²i*⬑C¡kXZÍæQ(Ü…"$xÁG#/ ]×K§MŽ×Éd¥k'0î]qBŒ/šÐòZ¶Êª6Eß²m-Üs¤œÂ@Ä4Îzj‰À‰L-¶êXÁÕáÙ§@HŽÍp¬šÊáÕ®·.ë+×aõß ÷‚GãªÖq*^MkUt{]d¸Ê{š-z®‚¨t®6b±,ü#ÓM˺iY\jQ•óÅIJ‘#,P‰mFcËKtÖCFæ€ë1šƒRê° ŠB„r—æí‘Ÿ"àçò;†<–ÀJж˜¬#hXFêgÁð}ËÀÝÆâ#,.‹ß» Ÿd/3–Œ"÷+½…C9H2ƒ¸4&î““±²£u”Ù=QWç 9ϬM«:æ‚™Ö×óôOQiN®´¹ÒáƒÁ½ÁšñN–¬2¨•f'HÆ2‹´­æã}“¶R´&NÔ?WŃšœÉ—¯Ò¤7z¹ƒÉ@ˆ=*M~xúYguŒ÷Æø¯^‡®G;á±Q‰Ë¿Ú—nO¸r–_˜ÁOí{gÏ´à<Nß ˜ÇƒÆpZuàuŽ~ÅÄî9à^¡nü¾Ë*6XˆHZUÅ뱎߆X¿pskÅfk¿4Gä³g1#/°æ5ò=c¾Ž#,§S0õ•©¡DG-9\)-aƒU‚Ëáu°™#/ªª!%PÁÐÞûð”Œ<UÎmX=e~PI¦ÖQaç¥å®e´î¥¦ ¬î¶d‚ |6Úá;„jîÊA¬…)ãy7ü׎Yª§ÐoÂcÖ›óÄoKi™Ú§ek]um*{CS™ýX†A8ß¹#,<Ý?'%ü´øY«œÐ/ª÷Mí›C¬‘Á®¹j)êô K"mv²rŠ‡_ŒC4ãïVf½ÚÛSö\ÃçÅÊp§j˜×Ow™¢WÝǵÞdÄÛ½&%rx`õƒE|øœ2ÒÂ[>*¦cÇI™Ap:üúF¢ïœ„Kþ(2S=I´ç#*,º-n®ÜÖÞ÷J6OˆÎBsQecwcuÕM‘–“®•nµ[TJ`MrÌ¿4',X“Í@éˆ"ᵑ ¥ ðû¶³ðÛ#,Ÿj,4|>…\xT¿X´½„Ò•[úì¢ÃÔ·…6sççè¬#à°tŸŽ'D`ý7ï‹ã9dÀA»1¸ÆNuÝŽ…,XÀk±Xª|dt¾øªSÏc:1S;ú ×¿.W˜¡#øIuÏFîçžç&ò/¶‚ÝËç ßÏ+EÌŽ‹áŽ¿d¥^fºCf­3ÌÅ£:ë´ÛÅÄ™Û:–¤¢6m‹›èÐ9M"Ìe¥ï/ƒo9‰bç¾rÂZš•S .èîãÂÇí‚ÅI”§G%ÐWòŠÃ‡éìjN#(ÿ¢"m!ˆÄîi²kÚ%#*¸ˆl.ðÂõÐÓs³Á_=ÜЈ°™¶N­ÅqÞ±·Dz!qæ"­bhþ{cÇv ÷¨çKÀˆì÷ö{mtú8ørêÝ#/a5ÞëPMåþ$k>‚—ÂŒ+˱“¯[Å®ÔKih‚‚òžªfyß}o×#, T (gG¯µNVçfêT1§O{:¥ÉÉw){”©HtU¦®cÄJ.âоšF¨[^e¶mÄØ‹{šš&Ñx]pí/¿Ü£À{Ÿ£DÆàRRÁ¿|<*/ªªx/ )ÒTÑ`»výø@æáöè®ÓáëøIé.UÆQ³cÀ©®aØ­U^ŸÛïοa¬ÆÛ®UŸßè%Ø`éu/~¾’ü¯¬Z­9~£êpÅk¬%ŽMË-Úôq Ò¬/˜í×DK»žöÃyÆKE]cÔ®AƼüîI97Ì`Î\¯W3àï¤ô°²˜ã+„žv-‘ž›Í[sIÅÓ%4¿¬#/'IÙ3OUΙ£‡GKî´Z!'bMØÙ¥”o!M6(Rþ7È¿;°(gü¯´ãËœêšúl^žQ§ŒÏ* §§GZ1>¯rð³)Œ¬£3-0<}îŽ×ß Þ1Ú%É*ó›Þf¼J¿7e®èEòaŦÉI_HÜ]Zä¬ÁSC•H³æV“Ú¶#|oâ÷¼äÍèÃ㌅}þ|¹-°@Ϩdk¬a‹Ýºô€•S´ÿm}]#Ž<ã#,Øü£=G£ÚèÚ¦<u˜ÏhÛ^ñRælù_ÛÒ½3ƒ;ï8œZ•Ïu}ËÛ@l”/à¬ÆËsÂwDøe‹ª‰jÁW­Tƒ}Íg磟#òE̸ÎTóAϘ#/úÍÁHç/ã¾}?¯ñÂZÙÛ|9î­FÇ×8…GïÛ:çºc*ª¤)çÚ#·øwÌÊa5*ÅûÛ Ïm~ǙՈó[$™B„ecÐ=n³0ûú¼²ðù†Ž“áp¢VÖ+9,> :›º\¯OšËŽj(2 ŠýyŸ*€È–€?®-=hÛRûäˆÅúȳ^€ì0§§±Û È1#*…*¡%îàÔã%ÖåÉ×øº;„UŽŽ]n¸ÑÐòÚÖ—wÕ…—uƒÇ±t趈B‚¨L#/h_…\d×a žédòÕp˜#4à›u|ï©#, \B(`•ÐuèÝ ¨é åŽý l#ÂcXÑ|º¹°s’ÒƒxPHÒ÷¢|ÃÈC9#,Óda)æ7’QÇ(z²Ä_4iC V”ã½]³>‡yú!#J»cŒÔ*Y_Áü[Û(Ä #Q6謃žÎkOé‡cgøLKJß®k—~û+ð~Ǹ£ïpbC˜N¬Ø´4—Â]p—Dó”mRœçNŒLw·ì—uàM¬¹Æ&yŒÑ¥6åÌŒFÐ6ŠßÒœôJßnNmpÙúó–ßÏÄqˆŽÝ¦­#*‹¯hÿGÜåõÐhžNô®3ÇÙŸ5cúã"Žtdµ“‹ô½ä6úÉ¢HqZq§7Vº³­E÷ÅÆ"ø¾1Ž©É•hŒûà|Säùà‘Þá4Ì?Å—æôÓð³§óÍuÝwz‘J1è›·7P.êºMgÄÝ»\=:Å:cì½üå½~x"ú÷õn¶ÝgƳ] «GSA3Ùåæyöòê¾ÝTîÎG®8Ø’Û«ãyLéÜÖ5ÄZpW(æÔ·¨Y_[)Ì=N;~GŽh…nFŸºðŽ-'WXp_M¬?qزÓ7`O—ãg åßekì$³ÏF1XÆ&$‚OilQ\Lcs¶wvS¤ÉÇ\‘ (²i\ŒŸ!}¯† :ïŸ.Ñ"Bdq„­âý-”bwézÇ2çŠf¢éÍî]:hitQÑ[Kê•#„¥Càât[ζL"%&ínTÿŽtùæcÕ¾ìEZ¿^°Óû¢o0T{´¯(.}± ïí|ïŸ_7!VI{D¤©qÎ &¿\ÏätÚ—÷ÝÎ'Ö|T1¼;pŒ@;'g»B8¿Áøã~1ƒÔ‡Pœ7ÝÜGá>¿Lo= À!óÒ|u¿5'ÒT£:¹èœÇ­]$Šoåý‚­^.a@:äëðøN<Ž ó·ÏKãD<¹ï³Ë%—k±Ò”'êÿìÕÄ1²Mµ ìÄxðj["^îhF#ÅQ¯Ž¨jƒ[ӡ脱ä–V(C±±¢#*ale(vÀ»^ØÙ´&įF4 ¬:tÎz&rÎÄ^îÓÖDä=Þ(cÆžM 8ÉnyÁïLXÐœW§ˆõÌ‚<))KN=ojŽ—ˆ¸¥ë¨¼”Ø”ü(™¿žÒAØöäû ;!(žÈ¿Nºãª´µÜ aíÒ¡FxQˆšwbž ^VÖÌRÓ"!ªf#,.Tç^Ìg6íî›t‰ñÆò{ŠhÜ1îæbróR«àü{gÅ}Uw¡ˆk ЌՃ#*H¿Ñ^!à5;…ÈšÙå=‡`¤:Þ]"ût—F¬úxŒIèý=§Ó‡ÀÀ‘ª€²Êó¶Ù@Þâ¿.ðÙVå¯àžáßÙÓp#/ÛßgÃ]È;y¶ßm÷&žÅA4!;‹³á™ÈRöE$3õºÒ¿—Êùq^ᯇ‚‡‚ ¤QdíŽÉ½ãna*:ž§›¤RïR©æTì ˜›kÓÂ/vü2Û­>`ÖºÞÃòx¥¦æPÓ:k€W‡!HFÃÝÃç¼'ÅÖ¼‹Vxþׂ>«‡me¸uèl‡>,ÄuÜ¡´©ù5‹’1•_±LzÇô¤#/@î•}&àD#/ÕE¥Ò2;…ϹL¬`1£gšbÙa(˜xÄ~¥áOèýM¦0ï3f•~öc± ä’¸#*ZD\€­uRnN5ó¿°â!%$±0…´7étM*ÒLôçèy)ò@®ý·b(ÌÅÃ.Í¡,ÐÓ1JÍ©WÚ*NclÄJµÚC J<¬Õg˜`ú)°„‚ÏÛéaÅ|ã^f8Fëý|Aà —ÃÏ}_w‚wÄõqêügÆRÒ½ü¼J#*õª}>µ#*iýÉúSõý y{"„‚ZwŽzï¯0ü¥ Q…•p¿t p¬KÎåM?¯f¼ÂDÄò‡ˆ_*‰ Ÿ¿ëÎĨ‹êô¼4K ¦KüŽ {8ƒUËûŠ@©ETB*%o’Yh("ĤZ“l›ÖÑ­]un|ôûw*œÕÚ§œaÜl$¶*0üøPoÀ8Ôkú}9ÄŒÞá=Wß–74óì°DÕið¹wHpUH²FE (1XÀ€ˆ‘Jn#,uâƒ|¤”J…©Ê9@àR™vëé¶ñ†s0àžlܘø»#,›ÑÊJܘ*½¤K½IÌÈ "êé”ýf7°U{ïhú*N%"D¾Ë^ðýÁþ›Hˆa‹HUV`·ÇÏòŸÔ *¹T)P¦˜ j¨@nTÁýó‡í¨âûw,T\­ö"°Ðæº#* >ÊÑ›&»Ê…Ÿò‚ôã_GuÖ£#/kb¶0Qî )s—Ëêƒß2 Y°ŠBNfb>n.Z^Ïi ÜÐE!R!Qedž¾š‰²å* ï³çþDg/(Ü{ /;'èú@յбOUÈLsÌm1ÕR&Ä—wBSbíioE®xyFU#*Yê-ö]Ó?ÕKº1ÿ$…ü滦›O=›d”¥4" ZzË/ÎC霘aÄ„OÚýjhW¥ maµ:H9l›æY‹=ê5GR'üƒ‡ºcdØS꜄nKNµ¢½@ *«0[ÅhÒ†¿©~ý^ïÈ•s<­7E‰a'[C“Ÿ™ÊËö;,â=›¢ã#,¡Bÿ7lgsZ(¨Ôd× …ï3çå°H<´ÈZá ?gûàî2[}±ÂµÙ¤#*ì0ÝG‡- y!#/Ñ¿»|û`yš<†sNöhn”]È°´#,þ•:½ŒPËõ¿Tüœ“)LwD5ª#/GT#,ÿ?í¶ÈD#*âi@sŠµxA=Þ5¼GŠ¿‰ä¢(¢’ÆÈH>Î*e;â0 Bµ»Ë9Ä)å#*lÓA©>6cÞ¡’V|ZŒ‡–T†Ýréku%Ðb '‰àB€4×r䩽#,VÔ–t]<b/®!”doëç¯fŽv²?ÕKhvÅ8Ñãý\èo³11›hʺ{@ð«óqä÷vŒ¡!ññ{A#¸wF鸯±Bþ·ü¯Þh>û‚ÛÈÃdCPì„Ùxä‘Çô±šÑŸ(/Œ<ùS‚zî{¼bߤ‘‹éÙ¢L;øÑÜŽ<ÏáÛ¹¢ÀÊEšÝ÷ ‰½B™@+7äÊ·-4!¸Å²^ÓÆ”ÔiœK “à«|>Þ9wÖKÞvSöÖêÉl¨+¿—R«óζ.nº†žºÏëu;Ú8•HCY£6ø‹~‰ì‹ü÷×f¢æO#,+”½áÎÆ[‹†ž~1æuñÂjåtHeZ7¢äP.ckS'…ȶˆÜ÷÷瀔rëþþ¹袺ußmyº­d¡÷STOaRî™àUM‹õ·=oÍphŠ7(ö¢ž¦÷¢b'?RÛXÁ{ºÕU3@2Â’¹íâú¬Ióƒ.D•kª¶Nã„í¿Ý2†³lAý£M ò€´¦ûïŒNò¸·S©3s vkuuŒHé@dcOF@šGHH¦A¨Qßçž|ïmëI×øê^cÄéü¢*´¥B«ÈÀ:Vëî‹õ­tuCZïÙ²ˆÍš3¡‚@ë…Ž!Q”ˆMèX³TVPxSŸ»¼q³ ù¾n׸Ñp#*_\z/wì€<g £ußSºäàÂî.KÞ¯~<à‚@Â×o‹ç¿ÇôØhÎ(v½ßέUxzï®(‚„> „B˜e¡®¶¨2(KPÁ2¯*#/WÖe;zôâ–ÁˆE¦sÇÊùÅÀýó\ C"†¦”ŠMÚÃÐ?ð~ñÑïŠ=Ëa„“/Ä©Â=ÌùÙ5KëA5IRjuªY8 ªJ:­³s 8Î ö b[éÛÄ_~Útâ•ÕÐOÂÜ`Ã×ÐÑïsÌzb%¡j*°N⛸Uvz³Æu)[/$"ª„@,”³‹7VõünpЉªˆÙ-Ç?]ÄÆðCò•;'ŽSøë“´˜Êû0,€ÉáéE/)©Ëd/{7\‚åhM»#\ â¦BÕ{XñvHµ#*˜pæmAá.¯#/;Š¸\qÔêPè^ðtÅögiЈW!t—6ÞXï9}ï&z</'žYºÖ'Uƒù~_¼òî3Êe‰?”9züyJ`i‚'0ÔEÜÔ%útºd]ù‘N±³9‹~¾Ú¾‘H•ÎcïvÚ#,û‹½~%ºK¡™¡0B6jÊX3Tàê[ñ*±Ëçx陼܋7)¢#ùFRH¢ˆ¢Zbü!­y­~© ƒÏ“êþánÜ–ú“Ùæ–»¡‹rö?LoW RÓªH9váÚ3^îó;›"¿ׇ6;#_~{·ßªËfÜnL Ûãý¬×žG>WHxpmË"ñ¹èò÷I©Ó€PC#/&J\ºñŒ¦!™.ÆÉžX)j(°#/ɹS0"ÜÖ´€á—BÚ„.Ñä~®W1)* v÷F(N‰&QâU¬w8AÁúîrð†èɆ#/'†QÜS`"%yÂØþ,·½È,@éÜÃ#*äç7ÍÀ±Û¥‚UÕ¥ÀW‘h {­7Éîƒh±XY¡TÅP(!æˆW¾³ì®z9z©×cH²¯+Úý„a¥ž{ë´pÎÞks^GlÞ=# ª^\ï4íé?ºó£ågd5ž•øø¾*=¡éÏ>zï7÷ŸZ‚ɳ)U†ž·©ÏyY‰Ýy”7,#,C£ž5@ùr°ße£ˆ7°EH„6h„Ë^è¿Ž†jRÁ…40E"7Þ ”9Øà#'ÐZˆJ‹ß* ¾ì‚ì$–ºÛž#Ì/‚ú¹šÊ=#,ºuG“ÖyáXþ÷xúA‰Íi§‹)“OD”–ˆ—ÑáË Å<›Ãû£©‚ãÙÚ;0æ¸ò¾0ç~æÆ­îΈú¦ªbpùîýxé#,”„èÊønæè´Å3#”] ¬ÏL²Û8ök® œšÏR\6pÁ#*¶€PŒ‚‚˜N68 ‘óŠEÚ—PqAÝXK-;6¯•ùõtî³Âˆå™ÎýÜÄ·'ßÆO¦_œ;ä’Òs=¹xàæ_PìáŠùëlb)ÒìÞÞÐ&G®+ó+#,¼·Ó×´ÓÒ²Hí4ù)H'!áË\‚‰ò,"ŠlÛÆiA5ÅC΋Âzà #/AÓÀEävªº+×É»¨[:I¬ ÷9sÎ[ž #/R#ÌäLh# „S ¸ R.kaªÒî;3VûòéÞ’K[K72òc¾iQnÈÀM#/g›OÚ)B ô~»s°B'·ÇßP)¬³b“‡’dU1¹y=gîÅöÄeZHñNƒÕ $^\zóþ[GåÙ>«žêh´Iµ´ÏÝþµ´±w¨øKÞmrªm6Ÿ#/C”aàê<Ï5ŠH N㬅(àÊ5uíÍÅUPáæN1¥€ÜyÍÇQF7"8ªâH¹‘wFÔHį'$AÎԩƒÒ›P¢†ÛÍŒ•Â^ÖÈ”Ï/Y\¨/º¹1Fó?šc­> 1i½ðzMÚcI>mŒ* aéçÃE¾,¿äTÜ„Ôé-ƒcù½—GG׿o?þ)óß‘¿®; 6©RaCRL‘ƒ‡©ÓU·«eb„Ý÷/·÷½µ©õd$8„WŸ:6E~l†… §vÖ·ë9´­£•},ÅàˆvÒŸØÂ#/—Õ#*ŸNlÉ„³Zçôþo;ù&þ£^]é9àÉÒ„ÆÕ‘z ìÍÚp§)ÙÂ;þ½ž¬ƒÄã¥jt½ˆjR›ã´xã)­K¿Wr¦:ŠûPm9]‡C‰”TÙ¥’'Æ­ÀÂœ'^í¦¼GNr˜j·^#,rgqž Ñ >x_Eø#/Ê8wkcÁI°`¶\&QžXŽÍqšFWV 5+°€Éš¢jXk]oÉÈÙ~jVĦ5æa?¤…s#ëxhB7©³¾èÆšHU3oF…²W¹ÖUîdõ¡ÿ0¨UB©çëº7ùOí”.tl‚3vZÿ[ÿ)ÿv°/÷;ŸzU¸yg˜¶Fb¨Â2)Ø8 ‹hPi°aJ6äCú¿Ÿû}S¸:ê¥GÆ¡ŸõwGn&w·¢©?‘ £¨1F0…}‡æ|Ú_ß~úÓTu÷PUTöì Ÿí‹'µ~„éóñ<ÙNÏÿÀ/ý°{䇧÷‘„«ÒßÑWÜW‹WÎ]—ô&W&¶†`Ô_õ¾ÄÑý“ï¶ ¼Göò1gˆ´¦ú#ÀO\„AcàB<€÷¯®Û›ä"@]ììß¼&úZç7C–ܱÀ)I â£MJ¥„&“?C#/òÁÇÔ„1’ü(ÁæÊ`¢1®¼†¬]7-Ó0ü9t8c­Ï–§Nuúò±ò¯Â‰‡ïü¼›1ïi†‰Pëig*§ÙÓÇG=Æö^ÞË'; öÑ Îb¤ÄažUï³’ÈN–V£FÙº^ÏE6ÌöïeÇw&êV2T”'ðr—F=d¼r<[áÑ?3ù;wàãÕe¾" TñD#,Ëý~!†õ÷Ç‘¯ Ç©—¥uŸW†ìgB³çÈÒ{˜jhsi–”$–Ý Zp¦¯¨C7ÙƒõQþ“ìôààûÜ>µ%úí‹´Âo §Hß]~_Ýd È¸·J¢¥†Âê‰êA/ëüpZNî•wÓa»2†‰##/¿zK5 |ðùŒû¡Q­˜éû0àþOgWn>ÉÀ7t…B6#*=,€OòˆY(ù?QJ×sO6U}¥óÿÚ0<;}‘âðBb_Äí .y”cÐ#,óhÐÀ+P@r#/½À…ˆsˆY‡¥ˆ©ª(vDro­±CšP«"•È´¸YHênѬ  f !ce,2Å^‰@…ÂÓaBf—!$àÃ]Ë#©Fí”,ŒQt(~VÀ6¡4\,/ÑÀ`[#*b"Û&´£MâðK•ŒÄÑbŒ %”LaH³H”`ƒAÐõå@åo9A,S”jCÒIw³Èʶýº¼G¨¥˜q`ƒÑÞžgTše:ëÓûâŠ=~0ñêËúºUÿ#,%ß(¦5Un3ÀkýЛ¦†º[ý›ªÅË¥.:%̆‚D’@âÌO„@OWÂÑí#,gMmþ—÷µ+1Pm)܆í5•Ó¾µFéÚIv:zÑùk9¯=£ÄM&JïPR~n¥íÉͳd•¦·#ú8g ›ÜÐ~KÞΕÏG¢¾ÚVÖMËò0‚ì„ ›Dj ‘q];vºî®åÓ6ëwy(ÅçTÔC†õ„DÝömw&¬‚·)ªvoŠ:TëêOY¥ÀýêzúõïqR¸ëŒ«ú¤á{ÑNøåt…yávl•Õ,⣀¹«QØÆØÍ4}/RŠup÷EŽOu¨ÈÔ•—.Œº¨pdïfŒÕ¬°õÕ‘Ç¥SäÓ,Aº'Ò <7Wè{L6#,‡‹AŽÊŠ–Ý÷Ú±c¥×7]·ºzº¥#â@'„šñ~ÏsÒBÖšiOõ<!Á¿Z=™/p‡f*Éûƒaò²e›B÷÷&ÃbWO˜„„2Þˆzò矰¹èX¯fK4*•"(H¦i²ÊÓ2S>·Ÿzûž£04UU#LPZbUCÓ·_f³0™d7 Ï\ôèw&îÏ1æ…¦³ˆJ9šX,œ 07ѽ…ºmíÑÆúCåª(Ñ"1°iˆážhg†Q¨˜)ï,ŠìøP-iöOÛÜóÖ‚‘“Ö#I Ûq3B#/B+Ðl7Q`Lúk¦&­c\a·Êê´xäbËSj›ãCoox¦‡Jd†¡âdäÈ­šR#4 3G£VVDÁ3ÄÌ0‚²i‹£6‚ep&¶©R¶rÓ]Ž:Ê0#h ¾[ ëóc†¨|Óg.öx™à2‡5ì{³#,µ®¤y`gÅÉprHž‡”$<Âò»‘ìˆg ¸3z{',g}l&áÛù7j\¶¼;õ÷8¢yžÝ#*Md \§4ðO/*,‰Å¹ŠÉC#*”$ÔI!¢KM²mljÞ:ÍY-«É[ÅWe¼k^-ªåY6«•]6®[^¬Æ»®ü;½z×zcT$öîtÜÖ#uë·‹cm}2l”š0W¶tRl¬ ¹®&DßUôÊ®áôÂ#*øzÀŒƒ±£çW¤@ÒÍ­žW`Ã’_†+ãÁfýqNR)j5ïia¹ÜgÔpæîè^ bE‹P×ÈOŽùþ5Ä‚t¯¶åw”¾=|ë&úJÏ•M òŸ?+‚ÜÛ}KI ²mØÙ*ÅÌ6C#@y d›2+T=9²Ê´®¾™#,u¹âm/ôè«â5‘KîM ʺñrlÒŽT:«ƒU¶(ØFi$“UõÉ¢!,»¨n”)Éo÷V°vì¯ÆÅIå ˜‡ÏͦZèÕàI[©Ï%£XŒÖ⨈òÖêmh¨MÖ·¶­yüûà,mµï.”iwjݲ×àóè¦ÿðxV¢ñöÑ8ç[ø'díêO#*TAi#/ª×‡f"*ÂɵORˆλ&F(¦“]Ê,ÂM6\l g— Ît[Ô÷‹ñÝÅ‘CÔ£(vt±Cp0 !¢˜ßÔGLñ"³ÝjÞG>´ÚÈtÍ0 PRû0&Ï&,Æ¢Pù×%¥ .’ØlcùÓêÛŽ{¹jï:9·z‚a…M÷-5Æ$9#,v½47ÜPkƒÒ‘\ΛÞ(])ÍX©Û®W–h3Ç•ûS@éD*DZaH°R¡(:ñõÐѶ §‰JÅBmj‚†ÞŽyÜ;yVfþý³×X,†Ñˆm`ïÞ†¾u'¤êÆÝPFLWÜÖ­M÷*íuÃìco©Â BFKÎCáæ¤QHPU—èQXcRAªšê\3×——ãÎnÍWwJl– º1³ÄWj5/£á~ñÉÈíP-ENÙ•øÑÁ>Uœf/3épÐÚSá’mdТe]㓺äèñØ—¹°õ¹Žù‚Tn϶§*Jˆ{‡q `ÎŽžo©š¤”ÀiDÆtÒ· È2);ž£ ' ƒ>öpAÇ*45œÎ6Fª€©Dò…òÌߪžL[p6ƒëFØ;nÀhœ/‡V0ȶ[‡CäÒY¶Û¿J-vÊjµåf4÷5I$Âp.÷SØƘÂH` š€ý_ŽfÑžär îI ¾£C&íãó¥‡>’ Ó¡¦sú=|MŽd‘Æ„j¤T &eMûñ¥U;7Ç#,ög~Ú³ÓåÀÞ¶Ô;·éNÙ–q×ÄQ_!­ùE(ü;UÓ­átd;#,.”u«ója¶ûãseÓ¤2àϳ+¢þþ‡"HÃn¶†üD¢ƒ:vtéÖú%µe¶I©§{ž#*…$:"À—NlýçÏO WJ%ðe“¦é#r9#Œ‘±èg¢UЛTÒÊ|û\RW‹ëó³çW•È‹yºlXƒÂ¡/Z¨ùq9g–5‰ÙÂTz7åäZGù¦ö†Â|¾|\Û)åep…Ðtstê“£8¥•]“Nëömݦ³Q×UˆÐ@¨Ji@KE”ÐÙPƒmI"¤_y(žjäÆ#,Þç] ÷Á2î* Ñ Ë»\aóÍ\½úµwß¾Š4׿¾‡z‹×Fù P0‚@Å’{Š±E/[Â#,äs“^M¢õ‡ì©7cs à—{K좎#/PP`ª‹ÈÀt’bZÑ)$ f—<-uå%ÄÓ¶×Xn~p_éWÒÅ« ÊîŽJ½ñà_'-˜òAóËò¤ !sÙ®±´Å›3ï|ÞûË3ýùÄõú}‹Þ¹¨iåhÛØø„Ì úHÄù&p¡(foÃ#*=OŠ cU:²tCµ¾ÊÞ³ÕöBôL|¬“#¡°;áø6‘æß7úÜ7ÊGý“ÜžµÌ3£¢Ù,~“‚ËÄæeÓ¿ß7“Óf+øç•#/[¸?°C‡’A[nSM…ùP6HŒCA¥Ð38JœÉú•Bµ)Ùh~Ý”"CÙ§%Y3©(³%QF-hñj¤È„A8^½þVJo“geA¶P­QI#ÊR™ÃϨ¿~`ø$,|UU8ùÍ$ÝÚð·`ÅöétLóŒíäl²‹ú0ÿ FñÁѾ3ð€”vã"mÑÙ÷Ѳà‰j-ÅÓf!š˜ÀvølBoŠN‚•AÈàÙAÁû¹#/ªÆFn82€š:@èVÖŠëŽx:pû/F½ûM„=]#,»É¼‡@Î×|Öˆ¾jÛ9˜·%BBóÌ2p'ÕÞÀÝ#/¼ç·€[LY6tå‹õu”‡Leô6š×äýYÆèm#/9!«Hä“Á€¥²s|Ò&Àû#8]·® m ¡Øˆ:6<L1© ÅN:M‹›ˆ 6*«‹Њ¨‚ŒI麨ÒkMŒÖø X¬_¡µedDkgŒÝ=¿5“Œù•ÔT‡\Ž%ÌB*ƒÞÑ8Ý̈f0½?®ÔýÖ –Ášzz0Óm®²ëfH_zw¶¬<zÀñGƤ'&Af¼(zYiáSÁd‰ÝÙƒƒáUùúî2qëP±ÉØÙw¢L)Èâ1>Ï é®; ŒqòßWœ€{jŽœÊ#*>\Urå–ι*ï&|bhXÉœN£F>c½¾Î#,¯H;náàä@2ͯ–‘¤~ Žz"Ìðfƒ‡{’zãÝ8²HŽdÜIFÍtpöìçÏ~ìhÄ}Ê#,_NS€Ï²ËvߦΠ³_ßx.ÆX~̃4JР?Š#öæˆXÓY|ø–W²«ç%——ìýí3*9ÖË’}¼6~=J ×úóÑA8=¶^øꉺ&¢‚öüý^ÅïË-¼ÖÎôeÎÙÛ{#/!#­Ïxß÷3Þ–>oÔÑG–Ð~èO½QâÁ£óÑßÛåGVÇ5®¡‹#ç©Kf¶9Ž‡8’þë‘RÿkO¯n0ÏV2@Rƒ…tØ÷å]ÕðLŽ¢>Q’ÕI–ïYç­ž´šÁС‹Fò;þŸÂ«ý)蘺¼ý?«Í3ˆ@#*þÏòC‚nÀ¤H¤2®SrŒ Šy~äÜÍk…+01MD[ª|Žb¿Ô88¹/!úŽqáüiP5ñ¤¸^IPû*ÍB§ ÖWéê£ïéÌ=Ûµ“pÚÙnüqØÇë?¼Ì׫³Ÿ‡¿†sFÂ8o“ @#*˨†@#*—ôçü½?ïýœÿŸÍü$?‰|Ø/ü?ÕŒ,ƒëC7Ëqbûš‹Y3Ÿ¨«§ùFœéª…²Õ\*ô[fËß'¼÷NÞ“­²€¬€¿ö($ES2ï±Þg4…ò½²¯,WîÔ ™ú]3è¾6m‰ßõûpÒ¶£<4G)¥j1©­˜0®âHåiZxu‚A(‡Îª#/ª•R\@Áèú=8Ð÷IEÎ÷ctµïðÿvóÁ$i©’—•ÊÏÚj蓧}»:+­˜ÊªÝÚ$]Ñ*ñ"ÑVEŠL]Oó¶1n"Ó(|¿ÅwÞ8ð½¿?ݥϺ!°#¥PþÜ®Ÿ¶ÿå "Vÿ9{‹¦¤¾Fš0ߊŒLþx¶:ë=rý=¾wxˆÝï&”Œ0uDÄï¾à϶®‚tP¦|ÃòéÄö¨’UC¸åÇ¢ü´í禧d~úW“ýÁ®èÞ™™ ò¨§WMw-™[N¡§[¶ø"#*‚xE/"ûqrLq´¢J ‰h#wÒqÏf*eÊl¹ŸSwþ»ÖéZh€šï(Û®ö?éwbmÓ_÷/°úûÞDG•‹±öÌ÷]šz&‘÷3åeív/šBážéAEž}Þï‡/­Ôº#ò*”·ý˜`y «÷—6kæݨ©I3UØ×mùb<~»@ÏûtÎ\Ü먬Y\Í©µ¦ܾ.Žn“.eB)E’üH‡?©çaí‰ß(šˆ¹x#,ھݳ?÷BZ}w?/ói>ÆSõq êÃèÎnŒDH±A?\3뇡2ª»‹]zŠÑ’ØûÙA™vý¬,˜ýbrpuÞ½üâÿ¨p»ÕËo“ù‰`3Ís„MZ'´óóyv¢#**#/µHŸBÓš¯¨#,]‡·×Îz›·€ìñt3ôú´iˆv*.Z­€bk#,ü¹Qlõx¢®\‰{—ÅZ÷SžÁ œ¢CòªãýEñ°]W­ÕÉf{ífR¿½™œ[s™¶2)ë@ÞÇð#*t„ìòÖ@¤¤@+o`_à<´jyÿO©#*ùƒÑ1ð'Ëæ P¡8•$â±X¹+òr¹ó|߯Íw¬2C?ÎÇ­mÃ×>æ©@÷Å#*(\ѹD:V½ãÎLLÏD™O¨©Ë£ì·ôWÂQ{€£Çò¬êО¤sßærfF÷cããò:<#*ðÅ~Ò„Ž‘ðñæz;úpùœÑ^Þ8ÓÕ[cæ'’G­q|SÉ.;‹¿‰m“;¡”E²Ðœ?/z‚y?£A~šù°Óçà‰oG0²Ñèp[¤—òó<uJÄ…© æ~DXN¢6µû>8bw«pÛ$¼ïmèoG•*fŠw§GϽÚuz±D#׌6‹i¹buåmG)@“(¢Ç©QÅ^жèR©ý­»¶H{ÆV'Ÿ™@ÇV»é¸tu•Äe4þʽ8_ó<±ªûñ0 ¤ZO—ïøé .°#/ëOsô³ËÄšXYÑTs$ïÓö‡¢ý_{ñ€Þ)Ç—§N(5&äù&à(@ž•Äim//r¸½µrYšÎÞ‡¥û ÷-Ècôm‡ôn’¨šþ/á¤Bö³8!K~á×à #/ØBC3â³ê¹€%”=[©óVX=ê§RôÂrS-ŒU˜˜µ ]èLL,Ñ8ÀWeŒ)‹OÓ0À0›<ßïñùýM½§#¨HH„;X¥µ‘Ë~ÝõŽã…^pv§J\Ü<sDGMWHt'_/uΕ›v«nÊÊÊ~èÉÔ#,3Ð#*ƒ8IËùû5 ÷TÚž±è÷xÄD9=´šj–ÀšîøÑ4òä#*ØŸ¡Xg˜0@®½«·#,‡¦ 'vr¤ã™Y^¥žùð®Í¦·×™AçCnÝÕ[ë—åÊ•¯”6 †¿‹hÏôîGŽ9³há0 q ZÇ¿E„!&‰âùm•!CÂOb)n¾<B>1„VÆošjúyê_^Ù]—z !P 1@OVxÀWéÞþ{ãú·tPzÒôá¶ad@vQdgiOòWH–[wE¹åní.tvK-d#*Ù€¥—b9?*Q‘1Ô„H5¶ö-wß·3–t.w/ÐR>µ»{}¿açÁ‘Þ` z{Gº£àRGÑ µ\óñÕÃâ}\%$“Wq„¬ûX]IO¥޻Ʊpy¬õKÛÒ뵆¼wO­]rá³#*ìQ™QE%¯¿Ñû÷ƹ)ÌÚÕrFê™Ç+D±³Ù¿ç±ñÈB–2!rW|Ûv´Né-lQ”)«›ªDŽßæ¶Ì–tƒz‹:Sż(ø¾û¿Ùñ9[ˆs0;ʼnßóUUå§S±óV3qãû\×5iL¤¼öƒcÚÞ¾GÎ#,¾ê!%²ê‡õå÷—E¤Du½¯8º¤ýþNŠÞö÷¬åú¾7˜Ì«í-Ð`*w‘30P¤RAI*HÈ+į~Ö§±Àk“QBœMr›å}MÜÚb+ÃümÅ»T"ðõHx{—IJƒ0R\|Š#®[ZÿWÃFûëáõû,¤QÄF9oxh>€l p&#,ÂÉtÛÈ'RÚ¬Ç઄‘Ê'©ºô,µ¥vRÊø>MÉ%̉Nz]#/ˆÑF-\IÿíÙ1˜ÿKŸfÔ ìºá§‘ñõ¾!ɽ:`½þcœ}X[óÀhç¶'æäõå– Ê› |Þ›M^þXºÁÙÑäû ż‘ýöNÇ¥šßÆ6¯ïŽÎÞU°êñqïFnžnÐÚ?J¬~“PAK3,HeƒZXÜt1râ:–Wa|qí³–ŸøzĦXt´¾JZrù_–.)3‰«™ýûÔqdvåÈ®ÐæÂqzôvD:çÖEÛ|ÛØÒ#/°ŒÚÉ[r¸c Õ¯X,kåq¤mŒ˜I4:‚(!dC«×7K÷MŽT°µ%Ìc¹bÊ ,f½jÎ9¢•ß•Ù#,^›O\¸ Æ1NªGøˆ!T+æ›Ë¨îûgFcÆ'so(1Î0N0qån~ŽLNïˆzük1Åä§#/wòŠ:ô×ë:ísª Ç¼#Iò`Èø†Êö~j¸h“1.nÔ/uð¦+Iúb‚€H„V+{Üœbì17˜”7¶ÙìŒkƒ$’I™Äµ]{”ƒ‚¬4ÅÎJ_¥œ©Í§ˆÀP!pa.}^¾5·º>o3y³ìL¹áò{gßAG¥ÞÓˆtÊà­ ­]opÖª ¢ÑlY¤#/Ý#,¹I£ç£‘Ê4Oœ¿))$w²¶PFyQ^ÈB²5—ýZŠmTZ”ÊD:eøTJaˆSŸ¼éDï¶cã¿´;lì&9¸Ëœ[¯ñM¢hÿƒhi”S›DŠ_‰¹oÚG}Íj“¿¦ó¹{g^4–Ìæzü±=m/Š!Ç_¾º'<Q38|’ß·Ùgãc¤¿„,SNí—óãƒg~®%s6!éë àííL_]ö¨Yê.­IMÕ"NüÇTyñÆ·ãl÷ÇZu‡c<.SÔô’x|6)ËüÅ6Ññí3’ïNéÝçˆt%s†Ÿ#lââÁ„åx?–ÞëÙÛe÷SËlü¦8L4¡&Lèž=fõпê çNaa×øT”’œx§?»h‡œeãß-«µKº"90ûñ1Ø Ž»ÁNTdÿ³UèùÎ_µÆZG¦¸Qï¯rç)c¯c×o§Ž¶KàöäÔ¸Üö\°…ÏXLuZéñ8²QLÞÙŠX]ÑÇîßZ¾¹¢\ÙUÛ´"=bjk¦MiÉÉâ ^EJH@®d7a}«Ú¯Ä€+%]ѱ¹+]ø»¥zÜòxÞE#,ÚÅJhÕ‹ñÄÎ#,ôûj‘Ã$íãbëîÇ‚³ÏÝ·wÌÇ—“Ác¬`Óå³O °Ü¹'ˆ{8àw|{‡,àú§S­Î‡9”cįJ­nФW Ua#*·óƒ£Ú|œ œŠ÷)m˜æŒ>úÒ)§E•âô‡M, æ#,°ãu{E.Ù¾õ£Šr¼Áëis“b<í®Ü²î&~·Öã­ïç/»ãt=ÄR§ë ~†¹*£"Òø­›w0™Äsøy?š›ºÇÇç`ê±I£u04ȼ¡}²õð}!‰Ï¾¤xÏ_V`ôÖ«Ç·õéƒýÓ£\úZå}ms¢£|0g”_„Cü=2A¶ö9ÎoåðÞ·c"gõøÄ>ñ“Å’–·ù%=ãP»˜fDHÀ,Ë”8s@ç…îx9“Yæëöºôò"RØì}ÒOú¢Ñ¹ƒÜö7²Jsˆõ͵MFÌŽÉE›ý,Ÿ Ä „¶'?…WÅöû^F.!³9©GåÏ1¸æŒ'ËÇæàë•Ž'ãñÀ¾þÜì)²‰º~knçFdݨTC)¨~ojhè3‹;X¦í†¯›º[ߥXšö¾S¯ˆ†-<­þÏÖ_2á§g~¤?GM;l¥ÜVîƒ/0VêúÌrí¶;8¬m%Èãñ?Õ=3¡pr1ÃÀ†ˆ°ª…å#/Ž 4­Þ ¢‹Òª{”(aÒCMvQ‡tí‰ujnC_?Õ¿/ØuæÌ?Ù4J¡â–Ëúþ—hòw±˜Be.(xr]æz}œxÅvÉ®<EËÙOôHƒåá˦õ¬ÚmBÁ=3¡¿7s—gÊdý&õ¸Í‰ýr@{{vâ'ù_¢rìG½Iƒ”Õ.ÃŽí,œœb¤üPªzf¡š ¡^ô›½¼(ººúã]§™š ØKŽÉ0àìE¹ˆlÐû8‚‡†ZƒØÊîB¡‚âeΞ,’ƒˆé·ÝÞž2L|Ïo‰2“ÞÅígºl¢+êÀõk¥“?R:aŽêÛØZe…%1O¿'å}Ü(~…Hvo½…§_¶g­¯ÅK†>!Œ;Í´˜ž¶ažl<¦Œ…¤õ¡x¢ŸÔäEbB"}÷°jA «w…»Ðs¡œâ»TtŒªX6ås‚ÂÀàãÍ;òÇQÂîR>ÿJ¬EÌק\f®‰D$’¾µ$òR‹™F6#*\Æš¤–VÐŒ`%ˆ`Aý´ $$Þ«(C/•T<#,®‚ EäÔ¶ž°È6úñiÛ  õyeGÙËäÊÁÈûcòÕjAž„ÞZ‚âó‰¬<~šû ãÇÊ7yØsâ(N&:9„Dó-^å2BÞ*™Éiüw3Ú‰ä1xësôÂÑs–­3È‚‚áp½ú££=!B#*GçøRyFkW˜—nÑ»¼¶†(€”1Ñg[™·ç’‡"#ˆ÷tÀ`Ûøzÿ‰ÃÈÖyÞ@‰g7pj þMQ!áËpÿ1g?õqN‹'ñ %D±öqóõUÇÌÝRŠÇÌ«ý⟢)¬”Àþë•ýmm6uþ£üC͈ð_ÀñíP8:ÕÞ £pQ… ˜…ã–AwØ>Pë?Ú6ÛH[þ&, yÈ܉°Úg9üçñÕðù–u¿ƒ 1æ•y>qé·OóƒCðeŽý#*8„qo0þ|©Ì:L—fíî›>ßñ»’Õææû ƒ7¤HoØFrǨoìW>ß·ô|¹ëÐ;#/H zC)!‚ã§HòÅð:ŸW>pZg(”ýÊzÜÓ£C¨*H€Ö(Ix ì÷ çü:ÃF@* Ô‚‰•®aÉAÖ]j(Û• ¹z0úb0I%ûHV0`ˆDÙßü:¾Ü~ßÈ%£ñBЈ‡Çbôrx#,¼PŠ0Gº§Ä,ЬP¾.%š6¹J¼÷bu$¢çüy\Ïþ+uäù?¹JP$§™†2ÃgÉg}ëÔß·U¤Ìúg¥úŠ_¬y³\Š~¨Hi¨ñÜþ¡€ç*1"Ú/ŸVŽ×¹ëäìçÊ·œx€>˜ë‚=Á#*‘Ù”½uêÐ\20`ûïÚákf£"Å–%ës5Ó#*~!8Õsz‘?ÈÓA|»™Ù¥Å9(öG#,J€í^Pà¨ü ¨ç¨)”éZl¤7ŽÔçP¥H!4#,´][o3:”ŵr ®œì¨h ø’—Z`)-”r\€€Àö\¶%AC³³ìÂë˜\¤<ðrã#ÐFŽ‹ÐBÄÐòBŽ˲4!ð Ò¢öTÄ0e^'Ƹã!…}ªO˜ùîÁ¹F–d*#*Qâ“@IÑ1ˆ"±ƒyxÌîTÛ]ðb GXf&i´› \ÑŸ<VîZ .ê£ùÛ#*톉¾3ÄšüôbÁé6ÖÇ­ç¥Öîh6þÀNWU®û¼¢ƒ/øàyã_|fÐü@çàê€\à£t]r[28«H[‹õòÍE X¹ÿ‰Óˆ”wxQöä™[ºw6y ‚+´`ŠÉ@XY«i/›’XwÇŸ‡kPK–ÁÃ9X§w€äGN}ß³œ–Ág&øž0œw婹šfÙeq5Ê“ÀÙß»0¦»3œãÑÊÞ§|¤ˆï‹åÓȨü<Ó…¯:µ9ë+šXá #,'ßtŠq‰SR«Þ ›¡åF·Ëæ¶×[¢º3¨fÎäæƒõ┣‚bT€ªœä]#,#,K\£0ä¬îÄ[éƒI…9låÉÉqPo¶àÕ(À;‚Ü€ç±öãÓä6#*û5c~>AtSxŒQ9üºà§»­7tY1í[mâ;y™iÅÙ"ƒn_Døér‚íTb|"ÙµšD L$Dç#*êRo«7!šß=8èŒ{i¢Ëÿ»ÐÚæ ǵ~UL˜$J ýQeUìå`¯gtþÎú;âZ9Uq¤íJWÄUï´ÏRÊl!û\Pÿ‚>i·—>ïê½Ý¹h‚«ªc³”6‘šÍ1jëÆ°Ãõßî…þ½‰Ô4hx¼¤¸Å´oµ¡úS;—EG [{èôÑ‹Õò‹oð"ÞÆårÇhJþßÛ4#="P„Â15E|1dRl/e¼õŒ–rÛ`øjÙOçÔÕÉݦÖÅ•øuÅTãGî„渼‹³¡GΔd¾"é öüÕŸeþ§gbë>Ä•„Çu&çõÉûçAü±›9ïÌ[]b®Q ‡”ÁÌ2QPÊÛtRïiÒD ®2Äa)1J©$FRÓÀÄ©%#/*’ò¯Š<¤Æâ¢ê9Íѱe)§Lá#úÊÕK´&9h?žçZéž´Æ WÓ¦ ö°íŽ|ËX•³‡¯¸zrmYæ„Ô…Ï´Çœ Hæo¥ÉÂËÉÃ#”Ûä±ëRÍ8抪£ßíÄxZZ-Ï»é_;Km߄ꮾÍq/ge±ÀÜ6ˆãÈ&šRÔFú›ÚâçgÚ®_U, §v¬¸÷OÙš"aE­ó†Òn²ýp~Ú%Ö¿Ü:AŸtP_®™ôµ6A©¨ ¬Kk;KÙËs.¹Äš`ÐhŒ†©sSFÌ(ë"‹fg*ïnBð6Qø>Y…ZX C:z(];hÍz-Ö‹C¤µtâ#OØß={û°@™a7ƒ‚èߢÒà÷·PŠü±xöPÏ:H?wJ“sÀ[žoyÑ=uœ£;–ÇÒªª*µ$$Ī)œöCé¤!ÏondªÅtMëôŽh¾ß¼ùx ÜÅ›Ærf‚9ož½¥WY4Ù¾µŽJ×TiÉqƒ\ÅalÊÈ.D‹©äŽÙŒ÷X„ûkÎ!ܦ]‹rÌï V‰ló)2š1´ uÆÆRŽj–u—‹®ãU+šo™]kÀpùÖÉ£B·ˆ‡ÑÌ?…(î‹M¯çŠmÃv0° Hpð#,žÍ·úØ-²§áÙæ.k¿€ê?5‹¸ò>€ôVÆU‡̬D:#,¿}Y.@åú¿5´Øp?>ÿÍ,]ð]Ñìöõõ4KÅóƒŸ#/~îv´¹ų̂Ë}jê´?Ý­œÜêÌæbó+«±˜™ªTµLÁT&”4|{*pÏÖN©³<¾U£Á#,Øpª†£7z9*g¬CvæYÿ\¡·Z9Ú`ð"$é?E¾ÙÏ_‚;žÈ.éÇcûˆ@L\=dȼݳÈßŇWÕø‘CC^”Xa|`Šv>]#,4Óþ+€}çÞa‹¦tǹ#,«WLÛ%åu5#,çÕÒ¡è©}Œ˜£rA6•¨)™â«ÚZ§é³s~?@t¶<5ÂÔ#,ŠÐGžá]T…¡¦Ü¾ºÞ={êpyÃTXî´Väù}::qº”Ä9@µÑs›0ÐÃÚç2a£÷Qþ«‹rp\4hóî[™,Ñß Þ¿ßúºÚz–,#0Jp¹à”噓ÏbW×^ôòùö_³­¬¢[°*×ñ€M±™~Ý…!X#*ýçG·ÃÆ£ÄEh&#*¥0Öü?_Ä„8k7ª>>\#, ¿»uL*,UO5—¤#*¯ŒÄ„q…þ‰æëònß(¦bç6¢rª£†ng#/UøkÀ\å°l#U•XRø^G|†Ç;¹ÎÚ­ j¼‹È U .&¡.sKnù¹5´2 QhéÒ2J¿IítN‚@žÚžqML#> ¯ÂÖn¥àLß#*›¦3|!‡ º1Ü´òíw‡’¹ÌM!UUd•·é×'cÅ“Èè|ûØÙ޼ׇqÐÚyàmÌ’òI*„„{.îk·cÆáÞÓuG‹®ý® ‘AS0¹v÷µIAÈ[Ó¶«:Ìá,_…E NI+^ì”.¬"4—¾ÀzÜòOMªØ¿›{Ÿ’LG<÷äü3Äbj-A%¶NÓ ¥ðœ©ß}Ú\ÍÝaî8ÀK$`êÜ2¿À0G½FÉî(°‚ͱ@th–hŽ‚†c JØÙyHÏ\´»e«—³¹ûŒ3÷¶™_ží%ˆÃ<DffQ+%}3QK×1xfrŽ]öR’P/"Ù°la!Šä¾†œíGv¨#ª8eñoŸb®sÎv¦­î´4G‘ñÞç—!kÞ‡IBƒr†Ým#,ÅC„Ji1píä#*ò-®¾¸]„okß!ås\|™N¹ vgnÓ´fð6ar½Æ[3ïK¿›åø³¡Àº6X´Á`‡[ b0|N”­“÷“Úþ+®ÌwÚ}-œMѬs uöy3§¹ORصÙt}¦[™ ³¦OCîü‹¸NÆDôú9ÅnÂþb?ßØß+÷’kÐÅ[¹ ô©;×[šë×ì¢4zfjs¡.6­4±•k{ØõÝH«> ‰Ù=$p)ËÌþ„ȯT”òç¼ðßÑë…h©¼†…E ²Î‡+iˆ²:Ï@r:Ëéä)’¸xË°an £y³;N~G©ùuõ߃WTb'\—¯@–åk:YqtÇ#£±`¸jú;§¤YlëY¹yÔ”ïŒ(g󬺡f÷YŒÁNé¬8ÝkNèX®CÚõà&Ï èk9\Ò!×¢3Ý" «ó t΂{{‡Zçb^C Œ.*ÕQ§n2¦/´a-Ur]h±oŸ?Wu”GÑnÅ°“œý%U°GD‹B-CQ#Ô#,:©¾ý¸'CAÔ#xkÄ“˜H¦nß6¬œœ‚£#*O#›†÷¢6ÅS™¹ØööÁƒÑ­*6à/!*a;Ũ@Vå"VË¡Ú=±k#,·-½ 1#,FDtu>Äm‹^ë%a¬QO^;t½¬QÅs³#,X>ÄQo-×ç]Û/"¤ՠίáœf·,3\Ci½H¶ô!Õ Üe¾S{Â1 *ÉœW$Iæ[_ö ”dìíâ+ÃOˆgJ7÷Ç¥º¥éœ‚ÀBÜ7@k¤¬r#,™*'9@îe´X岸hú7幋€9-¤  ÷èmhÅ»]JwRU” q¶ÎvŒyõ¥oÄ9ƒÏ³´ë#‡›4º v·Ç²”/ÞX·— §¬­O†CÓ›/¦G>fG?~¼Oõ¨Ú¸š×¥W¡Û¿CTý»¼\–›ÄͲÒ#A#*‡EF ¥(È6à.`]F6 Žåœë€pKÀNîr%Ùå nE¼–²åg“VÄÎô[÷^TY _c¨šÇ"‹ö냹/ÔŒ#]zõ½úÖ …ЧDQ2ÖP]!¾’¶T –ç¥áºÀù<¨¼žïYg‚s„)±p‡€†=è1$rCˆxRQã¬C9ñúý~Þ½Œs¸¿i†èíÜÑzè?!#£Ÿš=pÁ®ä8Yp¶@Ø‘oDD÷ÎêF9tè³Mü,¿_¹árä÷sÑ7¨ÐôÊóçÌÞhˆÎ7ùÓ ï¿x”ž(£”#*y#,0pŽŽ²à¬«“™*PmþÿÕ·›ð÷ûG¿Ì>/¯@¸è:érýAÝÔúj£ëÒ $ú¬ô¿·©WÊ¢‰(û쵞Åü¢ô‘#/ʳ_+Þ®À‘¢Á˜ãRÅN¾Î¿^Òvò>[âcò°V^þ°ƒñÑËKE°¾ÃÀq#*“úþjÚž.sß´rs0ð‡Ï>ÎT^ÂÌ#,Õ£N'Ôe:ä®Ï÷¯W}½ypýcãYþ¾±âužXb2ÊÄ · än„-#,í[],ðg  ±ö#,~ÆX¢“µ ŽOÚ1ìgc§?ŸéXÛ÷e¿ûúzïoº#*³e©ÖU„äP§`B pú#/õ¯»ú ïþxÝ0žàoÔj ýÈæ„÷ A€ašùˆYÃbs?äÚ%¨ßùZª…Oî,“øIJYEC·ùMjù¢<?© ‘£h¼B;@.J,ƒ€Ö™#*±PŠõ–„00Ð2 gû˜ÿAm§–›ÞË-ó¤)»Û Xmþ3}’KýÕnæÁsôo‚hz:AŸGb,/¿«¼à*jLÐÚvÌ#*À‡”Ž\įg3jNïG›Ï-Áaã‰B©ŸøLcT%x²}ð#/2Rq9r°[°—ˆ¼„Ãþèfc9f@©»¬#,^#,Y±íxuƒ‹õ¹û°öõÓ}¿Üú\ô!ô_gÚkfÈhf_ØŽè- '÷Àÿdn Ü »“ç'h›*–ÈäÂ÷.ÝaššÌÀsÒacø^Øk)#,p$d¬éý¹'œaê^cH!µøl*&_ï¯fÓ·ºÖºœ›ÆþêðþªìªýRÛ:^™X¦¨[þ˜yþÙx=ð8Z ·¾Yɹ¦\’B8šjUz½_ òþü„G2\@•‘ #*5bÂÂTJò;5Ãïÿÿ7·éú#/þÜAËÚÁ©k ·EÂÁ‹ÒHÑÛèêó|庿‹ìEǪýV­8à´¾È<èè IVK%UkRÅß‚® Þ}åµ0RùÒÔQ°-¯á«´“´«úÀ¤·÷!zC`Âx„Škôþ¯Ü\½!¿] T0´#/­ä.Á)rœ±»Žl¤néÐ-#/þvâT#,N–ÍIaÐì„C‘\÷&#,;ÂÔV(»†m!àeÕ%“?æpXBÚáS»””rí+î!QÓË«ÍMVë6ç.Iëùwh5Ô,äOaQì:@Âï:{›umZ?ù•5fÔmQ¿zž„uãqè5ßG²ÁhÂÃ$ jl#b1“ƒ#/R%Ø'Rs×á#*åsÐÈFÏ¥(À—Ò«lÙNaÎåŒvÐßM—OÉ·#¶AhNï°‚MröŒ% Uµ†ôú ú¾Äíz®€ŠÈO¶¼¯^‘²É>ï°/rxÿˆí˜¨*¬&ÝÖðÔ»ÿ0i˜d•xð ~j. mÈׯþV2#,þ#* ù<É Ù%¸ºßŸúxöç·ù+˜;#,²È»#ÛI³ƒ ú¸]0ƒü”:ë.²j†A‚•…<Ó×úözúñÂáN «óibÙd^×3è"„VIû§ËDZ:ŽúJV=~ßÓ*½¶÷@ö⚊ûÀÖÿvQǪ|'Ðþ'±"ꜙQ8ÖnлêꆉÄkXe×AL‡užïçõgàùºÍoìÞ¿¨ûÌï.ý»CU³ê>Ãi!ÂhåÐIÛ£F£‘¢A£O‹h,#,ä´ƒ$÷#,'·ÄáÐê9ˆD4õ~âªà‘â-#—æ%;Ê‚J¦j ÝW:M­î`žA6a°LÏú®Ù#,æÚ—,œ_íyØœê™ß¤ü«ÇÊë+5›¿íYI0à&.Ò¿–Šbƒ#¤Ö§Ov9K.:D ±nŒsŒS;$–#/BªªwI$’Þ" 0ôÿ³ßvja¼õUÛ°~'#*¦Ä|ÅÏ]lá³4ú#,^ƒ_¢‚l =ÜáÖ1Hˆyλ#*xèšš§#¡ÄžÀn“¤éôÕ­˜v¥›dæQfåãχòµÏyéO‘ÎæGõµ÷P¯éüÇúa&fùˆ ?ôõ}zÞ—Üs:ÈTŒÕÞ7ö À’6§ö:äýoÌL¢†˜ÜÎpxß'#/q’R©Zf_ °aP¬¿…ÊŠÀ-üé·Çm@ýa1”‚$y× Ãd(kwü_ÓýÏòXnmãGâŒNÚüOK‹†ÇfÊXQ2myŽÍ­•0y*ÆÔO„?›p#,¡™ÚB@1¯üÆå$¿Ù—©µi•¥d`ŒLNËšË.sšXÚg–y|Å‚ÚÞ’ÁÂ4#/D ƃGêÞ ³h¤Lînò—dš#,u¬!çál¾ÿ¿ý¹¡·íuýÝZÈ$(i‘^Ž¥7Óòäñ"Àñó9¡rw­Õ¬1ÆvP„ Ù;àu†H#*§Žö“%#*Ôj!cû¡f'¬Ì8ȧÒûì¨;ý(µNzt¹Ê.®iÅOÝšÂSbêP„›tÓRq„Û¸\š² 6âT£u0ǘ33b¡™fî²3· “·¤{Ž»ýÁ¹´cÑ÷“Û0¨ #,Æ¢‰5Öç÷ì’NðÍÔk‡.Ô^arÈÆžó£±t©#*Ž¦ÈduQaÍ€jÓa©ë d”h]*„5†ÂI¹¨°`mЇäoWì´ìðÉ~ÏÝGò à`32ç®õ þ—Ë£%¥¿»çðUüÞk§¯]RoFJLÌ‹û•(1±ƒ`ý8RÍßó~ýÌFçvKK½Fá2™¢WYY£Y§­2'¨6C¬ k9 Z]`Þ:Ë2¹JD1Y7k¯$’I3Uk˜©šÖµ%¥­¶žf®jË^³™Y„uã.¡Ž½aGƒo{ÂkzDhhk­%Ü7‡±ëXìÅëu šibÊ‚Rh¬gù+Ÿ_¯ÖB˜È„„„@*<à/Ûø楑äG<Ÿµ€M Šƒö‚û&¬RÁ¿!ÓËÊÜãªq à1wÆŸ?Rô{/S>¥£ƒ9§D$‡ì]ÂgTORÆÛýpÁ«¤F3Ï.ó%%ùõû÷VñC³»­>´}_béãÄ3UàZi}ö„¶Có éÛSãJª¹&àÔEd&}¯AõôןÄû?Ù¹µÌ ÷Ë}…+è´.”ÊDÉ“ŽîZ‹dN…I]êìÖ D@<]A Û/p[ÂI$¡´} Ñdéÿ–ÜkÉ¡dÏ#,/KUYÀ¸|#/¶Äh)"ƒÔ¡F!¤cÑ^nëM·¤×§ |ºu›™~%>GŒbrØzb’)ûuã»[®/‰¡X>àeè{²Ss•#,#,O@SûBÍ‹68 ê}è]:7P%ÎÝü7³’D‘b¦ÎûoÛ®œfíJW,Q¦Pƒd#/Õ ~:iuø˜Eíö íîð—€ñ#*H¾)¬V)ÄU#/Paëöˆ@^·Ë¶!‡Ïæ !OŸñöýf +0Ô#,…:R‘è¹ø ¯Ý·#þ¶æÀýŸ¶ä Ü¡‡ãJá…¾G#ÙŽn»¾â©¢–¤*Ù·3Zš!¥ÀõML·P뺳#*Ñ/vkK*Šƒ”šYÒ•#ôìéÌ­:¹ö•Ý¨¨U¶ãöıA<C)" ý'q;^öIë,BÅ%Ä`{ÀŪš2Å!뉊IÌIÈÜ#Ç„¿ˆ_­% Ì5§K‹mÁÞ}W#*¾HjÔ>ÒÈGí .V~­¹aMœ>Û-Ý#/‚#* Kü|}ÿ`\›Ü}Îó¡|·qòU»/ÀR“Þö(€ûëëµIõâðkÔ’Þ—°l÷Ð*Ñ=ÑQLn7"yË[ñ%J“ ÔCî»r`»ø éƒéûßäîw9ï“ÞŽó¤©mŸ`ØËŸ†ß:#,Ù2(D$V#*yΠ‡ÖÐgØèrÜøœuB,cN@wöþóô;P@òÚZΑv¤HÝE~p=ŽÝ¾)øœ:Ä=â¤T ‰£¼#,¯—h¢LLÒcùÊÁ‚ z·óé®ïyæ.æŒcÐwšrÚµ;AÙ@îõ¾š-iÿIË°=äÜ¡ö÷Q¦•E¤ÍŒ&£bŒ#!ÞuƒHYÖ¯ïu{ÖdR)³ÇUÎäâø}ú›ø ^‚>KÑy¤]o(uœ•=äþjµ¾Ï¬ B¯ú‰÷ýf­^ãWÔ?ÇGä åüa¼ýF²ßxû_l›¾Ž3%‰[£CäŸ+¾&Zˆ=ÿtÏöCÕ‚¯ªÖ G šҠ{ºv!!êÄd’Iî@¸#*ú@ö¾µ#,›¿ƒZ…\£1C`m`ÕçòWò¤RO³¬DëŽ[Ú]½$-=åšîýmžGÂP„;¥cÃszaSJ3¤ÐK¸éôÖóá2µÍ,lÒ¦(Á;ì'z#*&ÂÞ?o¦èì Œ+•}Ǫ¤¬Psù†›Ì°,Fu¶³êUCãÐcMIôDb-’‰ÖNáa_a̼àSs‹‰¨5– µ|Ì qñ;IݲXçŸäð2fKõ&ñÉ: ²Ï|< †‰D™XﺘÇæ™Tú’Ý;ê&#/¿¼†PgGÛ·'– pdeþÚTN[;Ô*2`‚Ò«î÷üž¥QÈ$Š¢T…œuzæùóvÄ4hɘµÖ-ÈÛ0ÑèE¹½„Ér;Þ²ºCSêáêM½œÈ¦aûS<a‘$Ed¿À(‚Û%4ËùöOrxž£¤»Ɖ#,¶0`‡êí;ÌDùÄj¹P]Š6U+¹wï:w ú žnŸC™éï¡<Mç›ÖŠàìßÂt²#/(=¦Ó^ãWw ¥8½Ù0ðüÉmÎ#,„"…<Ë™U(½Íg·Ãàí}ßR|“ôÇOw`SƒìªLʨD.•ú-ý¡ýÊ€~M$‰¡É?ªmQÿmRR±¿õ8Ør +¼4 £ )$PXuÚðÅɌڕ¥(d*‡{˜£ËÏÖüZú? ¼ŸÌ~ú_(™‘9 h”ä^°öž¤Jãd«[áÙUVÔ‘Ê*æ#//ÿBgîw!¼·VxÍî"vl÷Ú⧴#/«dâCfãoÏèo~3h‡HHw‘œŠ)eÊ×fÜÏßÚþ6¾õüª2û³T3‹ºàuT§Qñ&cçùé'A^¯lSòÈí»ÄÓ¦¿uß»gNŸ,åyž'€F>:Ï/Wçïö1?@a÷P¥(CÔ(T-w!¬À‰î«`3%Ë°°?Œèi¢>ÓϯOçš báßÁŸ3°h´”{YåpÊK2{Õ‘ìšÞj4õ ¹s2Aa¹ª·¬Q¤ŒýÉu±yP4UŒU‚U©“8—‰˜G ¾ÕD}åÒÉ"q?µÌØ:Ú¬ #*§` ;Ã÷Õ;¦–ž@ƒcc%&D½•$ôD^Ã*B"rbQTÔ¼CУ$:@H:&À!©©kõž8vÐõú#,>Q FÆGFhþ÷ìÔÎ¥ETÖpEŠœ¨#/€#/AØÂ’E:oµ#,›¼?,Jwn5)©À(üøšÕ…xˆÇÊ‚ĉ"ýïá=³ñ?{u'ÖuòV÷~iUúê© ‘^ª.Þ{½”‰~›I;(Ñ[…àeryc#*šB|zäØl…6%34¯—y¶ù4k•^šæéµÙ#,• ˆ+-KnëË̺¬òv´KH¬ SwöS¥=>¿_ßœ¿Öóƒ.û½3ÛésìÞ]‚‡zùîº|™È_¸ kÕˆ"#ƒíó=Ãc˜Ç Ð ÜcN³cøÀµ˜‡ëÐ, èä…ˆ-ꔑŒT‘#* 3 ˜!¨“«¤tÀÖ<riÄÀNœ®ÀÒ-´SÅKÉå(ºïæíáÚz)uÂKžm:ιÓÔ/!ÂýõB¥èãHÍzœ:ó+·pþ©î¢’s­qBpï ÌuPó€°âàQØDèû6”m;â¸w6ÉÑÌ]®†£¯×;o®ß…¶¸!ÈSŠPÍ’ãCvÕ#/¨aïóî2íwd£Ô{?5›v åßd²Ðy²þÞzCÁÁétÝr(›º¥99>à?‡¸ù°à-*WœõöTöýgÏ õGö¨­s_¤:ŸFÖŽæôzêT?Ä$‡ô"lûÅ¡V–žiš¬Ðôä/ #/]ÐÂe#,êYêY%Y$‘÷þÉ ƒìÆÈÝ Ý ;E· a¥¬S#,eKCÆ6È@ß`’ÿ“Úó»iªJbÏ}R*—Tñý…÷Ÿ}¿B È#ÙGVIÅÏ!C'$/Ÿcülób‚$ò!<d™#J)ß#,ò(Åú€éì²ùŽ :º¾_hõ•%¦âŠà/¿`·æ†ô,¤ÇW}Zà@’é- ʶ(õ¢3¤⟘oãÞ¢Š¸?¥3¼å­ÛŸÃz¾®¯ë„9q¡|ÈFÖ>íàĬƒ‘“¨tˆ$VF1AIgƒ; ®$‹½=7FÍ#,Æ8;‹êKôšÊ}'ãû~Ù ýŠíûÁµ}†¡ÐÕ¦Pü3²­ÉW€hGõÇÚjÆ¿ÌV4Õ)‰úÈSý³ï1sbwá5È‹(¢ úŠUZ*`æ1œ(0#,‡nD²zHöDß Gªåxé “bLmˆL!÷0¤ÉCÕ8¬2âÊpㄈ .b© @Á ‹ü)ù’*ÈRúœ¾`ôP{ þ]½‡^–Ëž°a#/Nh…"”°Y.-“CŠÄÁw¾çvføE `zN}#/:“R)¨/Ø;.'ê…ÓžþÓgyAS|!žõ{ïy©©l×ñû¬—#*€©DÏDQæë9)Ò>}º‡©Né Þô@ì`ösT øÜ “ !À8MçP÷ÙRx`ç`rÀb*6â,™{ŽA<CS $[˜"Uš#,^¤ÝóRŸœöy~óáN>ˆËÝÏ-ËçEYÀžìô Ó¤ª„¡@‰³³2âÌ~ŽUù"qa7uÒ ÞÅ’”…dÐG¨ÌÚLíý¹8æÉüD‡ß’©è¶U”’ö¾_†÷¡$U#*M?+ aܤ¸™“¶Ø8M^Ž1—5é¢_e:³5d©M1Ç"üú@”H­ÿ²¸?çIÆYÄm2c×gpº½@õ‚*ªU'l›Š+”ä½%–Jf¥¬(A©|»„o*8¹hÅFÁßÜ>ÿ‘,~¶©Ÿx>YØ<<¼{pv›Ìdö|Gsx5Ö휇!¦Ð[®MÑÐôðâ#4›Rêy#/¾EyuéË£‹°¦+&qGbd^®›H¥x[‚„õSþNã,pß78l#*Äx‡zþ}šõcg,MHömÌ3¡é•#,t?a6ƒ¨ïNƒ‹q¤bB:1äA«ÀFÑ,1@)X'3…Ê+‰ò„ó‡“ÉQòùúŽ «Ø#,ª´hlD›2Ú<m*¶žî®žD;veÑ„Xm#(#*è?!®úêƒ^“Å#*=Ž¤(ç¥xé]»Õ3ÝGòÑÚ1#,þ#ãc"žICÇÜJN—nóBV$I 6ÒâwÝ»¨Þgº(êû“ëüçðíœëúÀ#/“P}‡ÄËÍ÷möÿ°Ö.»C'?ð?{ èÓ˜[?lOÇõÖ"šÉ1ñ‡{\æp‡•[¼»”§9oñsù/ÙGãùBëN¶†ÐÌâù¿.vkõ¹ûÒSŸ°Å3š­ãg'Ÿû˜ürnìë+Ž,ßXÎ#*sáöaú«¶wúÎÜ~ÚÚ²×Ï`ݤvþÆIÏ#/sáN*j€JHˆÝ’¥òÔÂa»BƒhîÀêb*ßS#*ºÁdKøC®’NÏ´'Øyý=Ÿ­ªUW< lA;áAÍàR£H{0ÚöKƒ@!Æè\öx*k̸ýñ÷ò3*÷'±˜ÑùÔ‚Ç¢##Ÿ¢ ,€ÀŸÅÚ(ø‡pÀ6$éyx&J@2ƒ¤L h«Ú$#*l½IÁÛÏWV‚ÑÝßúw›Hd?¨öXnŸ-{{˜AY¬úçØèý­*{ɬ6CÇÜLÒ/úò2'èGÖW›j¡Zƒ½û lbU6á#/{‘‚8Ãgcq¿¢ôÍ^Ðà`#*ØÕHnhn¬UTX&†”Öìû½_½öÿwÆ&GñÕµz¼Y#*#/½À‚‘½ô»®Þvê5ãvëm?~ý/Fð?­µÄâ(Ä}ïž#/ÈR9®q!5ÀÿÜS!ÎȹçŽ#,W$Ð[È£Mù/ß_xg6)Ù¶PS(c¬> V›ÄâbV>_Âñ ˆa$³}øƒ€C"X  &hÆß»®}î¹[œÙzgžo)$ƒô€?œ5Ô?#/ÓÛîôûÙ\®ÛX}¡õiðü¶„O`Ðõ Ä>Ôt#/ôK„#*ËäžRǼÑÓ‰Ä@ÀùÆL×åßîº<1Å8ƒ˜»±òK9ðú¨èïÚT$$ÜÀ¤®Ÿ ì8ŽÄ:÷#,6Û«uý¡¡ 謅¶ýWä°îâ=ÀvÕ«-Cí"(¨ˆ¨¢«/F¡EUTCï¨Ð3ýêüö1-¨`»üfk‡êÅ+Ûšœt‹ÁkѬFÚz"R8°l-Š¦Û,º¯È»À˜ª‚1ˆ2$¸à*-ŒÓâsê?ÔW÷åcÅ\q;•ééóT%4ÂÔôþ¬4H*üÂãó<s&Ä¥ü' ïžÓe¨$;a¿rÉR½´ ¹Önw¬ln9¾ÓNS’_ã–O'ÊUfÞmçæ8(ýióȃmfP?×#*û‹Ãf[» JõUu_D#óGh"duwNÅÍÇì„Œ>×½P¹âec»¿QÊ^r«ÿ³‰ì#/¬ÀBCLʆt«ð÷Os«ù5÷#’#¯ôU–k2¥¯t=é¯õ½ F$ÙÛfð.B³Œ š_m“ꊋ#/eFŸÁ>Ý]¼ªœÆ»{Ší2W´Pk4£Ä¢Ñ„ˆ’H#*Ñ€\˜#;X`™çÄ#/ Laö¤£ù/Ïü°ñ67#*l‰b/?§ûæHäg·ó?WÕ˧Ÿ¤×v°0™3U¼µ[]ÂuhïD¤’Ø*1',ŸCÄù>ðê‰ Ë¹í¾è¹+0­ßùm‚\ý»:ž¤æ|>ðr§4ìý¨}Ê?˳¬¹}ÃüÀKš/õ9P·r¦Iüª‡Åú˯ðþêùîh©݈+),¢i1H@­MXášbLtiË)%·"¢ÉE§è*ð BM-ÀÉ¡‰±¦* "Ó!uC”›ÐÁ\Ë,‰If,´±L ¨¢daE$`2¨#,„Šô‰µ?Ëõ³øŠ°†þ33Ì8"BºÙ’Wˆ)j1ð/ñÄ@Ö´°+@Óö¬Eý¿ïn“…mÆDdòstNûítLß#,°LÆs8ÜåbvÙ6q,š%¡v 4ˆC$b9KZ Cjnb5ˆÿ€ÌCŒGöV{`i}”HÛ1¤Ú|P#,Xã¼*ªðMþöýo]™°ÓÈD2ÂBÃbô[õ§ëÔHÞµ;O×±˜d¸³™ ©þéÿ…‡m}jÄÈW›¨#ÏùÒwŠýÍK™œÏ¥¿­á6æ>>ÙýŒj fué׳¦L¤‡ð?©PhRZ,P´–ÁR c#×±xAùˆÀó5­=N)ÏûI¨¹Â#*-BÓÄ¿Ïì7ô ôí®w¦Þ󈟥K³²æ»LpÖÕ¶Mˆ-}ým†p«µ™Í@¢dEïP÷3Ùˆb+Ü/pÂ6civ”àJ¯{ƒh#Kìv\rÆZ"-$,-E‚‡’C‘ýø ‰B‚;ƒ#½ÞÐkZ÷•jŸ3ágî ¤FñÊiŒ Æ $”‡o¬~ŠI–l„%¥«`§ìàáÁÀ#*Ae^a#*¯Ï&Å™ÁAåèi‡¨¯©C!,·“ðñj§ÈŪ—>‰üv+»¯a_ãŒZåƒX=1DxÛ#*XÑôoå""6ØÂ’:3‹Ð¾&…àÞ?ËøRó|傳åA«e®ú¾4ÞŒÄß ü¯“¢é9öñð3i¯½À$ŒtŠQžžÖIlQ Ô-=Ànå#/øÜ“˜šâaIAò7Æ,ã´3Û?Ó¦N ëàmŠìêºúežYÓ^.#/aD¢k{©ˆ¦c†s©ß4X'â(#éÒqºm}âkCeû0å:Ö‘àóáK›²Y’x½ötÕ,»=Z¸w¬h?ÊPñ+™àEعìÿi舩ãcdCÝËWóIì3‹³ˆï@¯èk¹;ì} ÆU Ö‹@ŸÑ;ùv¼ÐJú‰Âˆ#*ðÁîf’£|¾ixÍýNõl%@!0!òåªÿòÿñå³Ôößèï†xìü”¡£=¤?99ÀCõú[o£r2—ñâª;C†Â5UF`„‡¹fw_7áƒâò‹à#,èðýJ½¾íE8döŸÑ¯ç¼€3D\&V¢`SœÙ°bÎßÍÖu â÷k‰@¢mµÊ¡U—´6ôHGåÀne!ë×ú¿Ô”ÈÚ¡^G•ÚÄÞô?Û«òÊÁA;ìc€Ò&&÷Ù µCÈO9—ࡲp¶ ò–oT#/@HÏ`T ¯ªŒyÛLtÂcãpv#/Š;:d÷ÁGýVŽqÕô?3KDmÊÍø÷\:_¤Š>`õ@À£*§Í˜ê6]b àÎ÷¢1Ìû €äuÍäò} j‡üë;à$ËÑØYgô\±ª(O±â{ß?­¿„‚ÑÑÊõ½DÝú#/r¾ïؾÎQlÍ•Á¬:—bä!Çoh¼QÛÓ¦ÞÇjø¹hËÕ;/ wó{¼Ø"øNZ²XêþË×7Vçým;å-5}ùLjºZXu@#íQ ØdUë…Ûv™ÀVÉ~§Ž±îe´Zˆv*b`Bn¬ÙŽSÒÅÊ3QÚmr‹MGȽKŹSDÅ&$Û¥÷*ãCŽ™ÄÏRNº¿Æv¾† ú¾Y/)ãI¿°›²Ý„a ˜t ÙÛ8~¦"ð«à£vpȶO. Rå½óMÐì:¦Âøðú^üãcŽ.z@šÙ±Øºm`†âÿE°+”¥ñzÚo8”¾04¶ÁU.Šƒ‚ŒíT$bù–M¡²¶6Å%¦KŸ—Šxâ#,{`‚G!Å:?#,cóȺ¾3à å/¨îtËôÎS,Óf^Z(Û¾S™Oe;·ÅÔyÓJJ”bh©š47 ¡’0IʵžIË^Z轕²k‰( UaVDp'•BÕP[í[hXÏ'¿öªж‘ÏÏÞS÷ ò^Ý´×Ó>¾Þ©w?õXr#*˜…x‡í³Íïi韬Ùz: ŒEƒMÍžþâCB<Û½z ‹Yø¼šbçå_Šž;—ýú¨¿.÷Yáw­úkÄÜm_³j²áÔøKm­G ä¥m³—‡u_–øRR/û»f2þ4>çϤÞn19×PëhTg´Ñ–Wœ‹LW*ú¡vÒéÚ³RU#,…I#*.#, ßaSnï+Ó(Ì›òHÂÈìaÙû ³˜En ™»®¨¾½qó˜ÞVø5Ú¨ÁÀ R˜„ìc— c¢ð¾Éð£g8/•ÒC)¾õË€ñ¸<;£È £)×½˜t*‡æÁ¿vðÇÝððÒÀ})ö}éÙá mñTwçè—|Eâ\Ýw^#,8Íw£¢ëƒ»Ä4&æÛЧzìb#*NšUü‘æ}T†»&‹ô–ÒÜ­¡rÈ;!~íAs@q©üz>#*?ýâ2™ ÊÍÖŒ­ô¾)NIøêQêLö¡Á#/BÙÍw°Œ¿}äèÂ_-@° ¿"³ì+ªA‘8 qp;] ‰VìÜS˹òãÊ=÷_×´´kMÅkþ\ð¾;ððìÅÒ?HÔ/98j‰Ÿ3Îï!¶#*°&÷¿‡ožo}† ¾MëÚb¦M4ÐXɲ+Þ…ª~i'uôÀôF6c¸÷KÛáíìïÂ[¤ÑNg¦p—pöᤆî€Óæ&ôÙèG:ÞïíÊÌJ4þÿâ‡=¼n#žb÷2î-+‘Õ ú@Á†´XÂ’U"ë fbj«§å8Cdn¬™^&4‡ÞŠâJ„åpâ=,+!»ž#´Ð‘b©µ¹Y.«$yyÄb…ëÑÑ0È›õ¬FZ’è€ê{®`Ó°»œ¨Ñ® L…«ör£õÏn2£‘b‹0î<ˆ„ŒŠ}?Ëçÿ\{ßñü|tz¿¯ûëWÄ#È€g[8ÿ§z‡ø¬[Þ?!ôåYB) à#,Žw²n%„|Š(¼Óù£?gqÕmF£Yý¶Y#*j#ù‹ÆOËò®ç@$PÉ”‘<åŠ?f¼»»_óø þÿëþGÄn!ü‡‚j#,-èIoÏýf[ÑUUaÿ9èb7Sý€û4¬à“o¶€rÜð2 HpäLÃgIüÀuìÚ=òovMž¹Ã`~У6ã|‰G5#M!%"F(Dcþ4þ»/ Ý®jt7*}¦YØ’Kàí‰)u¹´ƒ#*ðÌ 7Û«µ»pUâ0xCÒB|’Á:è !7-àn‘ŽÂ‚A¤kès;éDzÐ}¬pàè,v$kp÷o€á#,aáƒàð¼Éì7€ÜÎç¯Ip'HN{#,!‰è¨oTÈ”ÔÌó 3!©•³?¸Øï8ýM€½"%JÆJ¥j©TjŠl;3`:¨5#,äg&€N#*=ðuòdj¨ònaÄ*Â|žgì>ßáJû«·ø§#*³bRˆhß9ñ燗3Êd(èê5ÙE¾ 㦄ó-'B„ à\Ë»èq¾vᆸ ГßÓ7äÃ’Ï.g=ÄõT«”TeƦj›MÞÝžPk"ÔL!ÍA†°Ä B1ˆp¥ƒ4´X8!±†ü#*Ê;FŽ†kš7aHgƒ1(Ì°®*ó¸¼Atx8 ±b‹Q!Ï”± ;x$<y£!’Ý{–$€„©0µ©D &·f"Éö¤Þ7"x‚ŸzýeΟr7³‡§ÍÍɲÂBÚ»¹ÚÉغ/]î—"~øFÎ]±7ÕîîõÔYž‹;7¨T8§¡Å (¨~¡=L&ž§!l'*¨†jlŲAƒ®ÆãBÍ«Lm“V‰T‚¨d)C´—`Q‹Ã¨I¹eïO–UÛ[¹n$­Jÿ)·&D—•þGôÿ«íoi­-™£F±¬oáÞ÷X^kÙÈi»£uÕý맕–ýŸÅq‡Ô*IòÚŒø"1®í»<ä¼ï ïïŒ#*∂ôÞPjlyéÃ×4#*Ái¤™Àœ¿¯©­¿ÒX|z^¦ª±Xˆ<¦Œÿ#Ç‘cÄ8ÞH-ÍzÂË¡sPýÄ688:šÆÚ ‚+VBGŠpŒ=«Ý[W'#*½´d<ÇÆlÿ¨»ü^$Ñìg†–#,å ©c|¨e{B†ç 'AÄaÄÓ-¡ÉÇR0ÞpŒIÂÐ,; Àr'ÚþÂ) µW©ìëˆÃðF†˜ÀÙ"Tþ’›r"hÈ<HÆf,@ϱå#/#Aïê²1­»òðñÀÍÈš—‚A -Æ96·vÛ°\ü¤(ß íå*`ïWâb W`œð±€dÛ3ô^%·kfûdÈkK&÷ïãúoK#/«_–:·‘pèã!ÌßYa63>EÀÞMHé7ÀÄÖdòKò'KÁÊD¨®ÿ$]c°ÎÇ_F«›:2«ßV®1ûáƒYÒsž%ç¬XóÅä’:zß“¶O|²O=2Ý¿ yvJ8r‹T˜¤Ñìnµ¼›»ïºqÅ(tèç¦i髹…8gk0›wŒé˜I±Ää®»5mÝ#ìôu†NxG@]¶—ÖwÐcôVñ×6»_3…õ“Š;Š80¢8«Œ6ñzw~Þ‚ª÷räi¿qê3G·/5§³Ýž§¯PÄNƒ´7œižA0CYàÝ^.fæ@¬šæÃ'P ðþš¦ŠÛÝêö\ÔNÍî´ä\%™ÜYšXÐ:|° ’ºôÉ#,}<wgßÝÏÓÇ_"BíB÷)G­c;hhÃUÔèã»#/.GG²:ÖÃ{@#ÜåÓ¹[9¾Ø§{Ç™ŽŠ#,eA*&”Ìì§Z±a­õ!ÁÖÞ‘ŽÃg a’›‚0¢¼Ög@˜i^a–Ô-ƒwníŒ>z›$ÈÉ-x¢@,8ÐCH\œ{YÀc‘<}½‘ïH ¢ã£è,ó s…&»ÂøÑ µ–)Ǹò´©Ê=| PuhžgAf.šHN±Ì¢uQ/e\ÍAëö¯GˆX“A5š8%€€=†À7B8x£Â99Ö-~Ú¼¾3Œç*‘p…*hÒS·U‚ˆ08úÃ%ï–¶ÃJT‘ƒ“w:Mz[®Ñ2¹r¯/σ’ööÛ’÷aˆö÷÷uÐ;Ù£ñNz1Cžá·“ð4º@ø`À¨ðvä\‹tlLˆæ;l ¬è[–ê…0í(*º]cÃ#2´6¢¦É¨:¿‚ª#±ä#/Oa¶)DÚoß™6–,rS¥²YÚ&ð¤vŒ»„SrÄ›ú¾;·“Q9I,3‹Ç…©´2Pe›{ 1M Úrâ,`z{L™æXì#E¥<½|«”Ù‚Î]ýЇ©fó³L6cÔÖ.rJ‚É#*`ŠJdVoå® ÅïXHcxUš¦–Þ©»K¦–TqI„…ˆÉ¨wNþ„`ú™9+[Õø5rÔm“ABòùºî‚;a0jCkŽ± ¨$ˆqÔèÔMzIÅœŽrŽ§öQMìëƒâ#,‡Ä‚ù4ÎËߢÍ ·Ü|µÍ\îDÊÆJh5¤æ­T IÔ£¡é4£³”9a-:¹À€Lpçïš™‚Qí#/fbTÎdË™™™clƲ¬Ë3$•c¶gšç½[rüñÅ$PÙ«…äÖÖ©ÈdÁú¥Leq¼*èf&_>ºvÖn­Mœ#,À퀽Ä6O8­<òËrLðié÷ˆ•»Û®ôxÒŒhlÔ„]{@mx¨>Ù>9z§geº8ÄT³:ð¸:O"Œf°&Áœ•ÅØÊ4ë«jI…"fB´ˆ miÇÎ N¶W¨6Èé›°Ãü–p4ÉÓ”eÞD)vz‚öß®dÕÙÂX>P:|û%ÜbÁ@J¢„—T²Å¢¢" ^%œ´˜]ûo1h+wn™|¶é{PÖ£ ‘´¸…›5;$·%ôæ“c[6û¾v˺Î!Ô9kOæZ¡TCQÔ˳¯§¬5“NIã1¦ŠPQ­¸—¸Ýn“ý  Ž“~ôTU£~…y‰ËR#*pª¦,Û#£öû(ÿyàÐzè#*òؤœo#,cS#,΂ÝüŠ¨b2 Ó‡`jž)d#,HDrßÐ\!2h±O 쨖‚¯‚H4må,dAváiO©ºÓS˜·|‹orbÌ<rúQÐݵG(tÕ˜wà:`s‰ÀMé,˜d!üV(Õ¶ËzÔ5Öw­Ø:”„€Ž_‘“´¹ÔbΪ:5©5·KÜ#,ÚâÄ$%Áȉ¯]ªVØòË—"ËuÕÎØØjå§ð "è^O´¦0Z;69ê‰Þ¸â¼#, ®†lÚѺ̪µBZ&žP“!Ø*ƶÍÆÚ0m#,fiìÑŠP…œÿ³ùaž#*çÚÜD.…áÓM‡b\Ô uà™ IÍ“ïrØ1–/+ï(“©ÕT™B=Yì–c¤ÍAãÀânWˆ÷¢H‹BŒ2xœDœbGÁ.ÉsÉ0wO€ÍtJ (oäÝÆþQ¸HÈâqkkªL;$†6öEíF¸#,Y‚3EÒ"¿§¡C~DÒ‘ƒ¥’BgÂYÖ1F0¦Æ³ˆ¼<#*LYV õ7Õ3Þ¢ÝÈz` E*Od5lÃv±£Ñæ¸7]ÃœM¹»É»Ñ„ ƒÐìc¡Ø5ÇH(Ô#,°a!S© ,nRP÷ÙÛE Lu©¶ŒdS3 #*c$†' ÐTÕnS³àÂw2šT#*ÂkQÔ¸$Ic"9aMVÉŒÄdÅÙœæøfÐÑÙE׫݉iˆfš‚›…·;ýÈÁXC¬ÎˆÔ¼ÛŽÐ5Ñ ûWJwxÒ’½À´!ñ|‚Ügäp‰S²@‡û²`vˆ ‘,‚ŠEˆŒäÌ¢jÞ%ÐóœÇC!ÑŠÍî 3@<!±6â±:o̦ø}ïqë†[˜¬ƒmêvVö0ç¯È $Ödk)ll^¢#@“©÷x]¹Öñ#/x=R=H #KpaÏ9ؾò[q\ ¤Sç¹'¥ûîkƒ²ògÓQa²§ªž\ûyn¼7R¾\=û/(´x°HA$aç—€w‡ÇÒèlÍÍ0‚¡Ò7ÜÞ7ÒÄDš¢%:øÏÜÛ3ÊWí|:æñyË3d$yêh21à÷#,·bþQ@o $Ý,«$’À%¸n¨ G¬±¦¶0 °~îÓƒ ¼€rgýý†vºÈÌ/N(¦‡×rý§¬ 4|™„Ý D´§oû(Ê欮é5â‡\\Ç;úiª,‰„pjnO× ?•¹ëÏák¾Ð}ü;l—ZÄÏ0ý^†d`Pô®ûÓœ{䮿M5XßÔèPPKBnI;C³í|×5îßìü?í_äÒ‘ÓléÝö]†ÿ†YÎÇ€Þûü;óØ¡¬ ô‹`¢ÄFÉEòû»¤´qþ8ßÒ3y™™gçGÙB°ƒÄÐ\`»¦ éRä`vèy¨õíO8 #/QÈóãýÏ`ˆ{¢†¡OtAb¤,Ph§Þ|~/wDõópV:⟧ߋ/‡þ¸~o÷³þ_§TµùâÕ‘—el6i[ý_aÖ…Q‚Á'ÌTETBO#Ûê>Â#/ø#*è.¤J-™²J4í«ü¶Û:û;½xõP2}xuÙüì\Ž„öP³kþû—áÕüšRbÙVdªiGA!ŸÕ¡Œ`@9#,<6lŒKÉmÀilmA&+ß P}*ˆû>p€,‘B8¥Wd¡EQT°”]{0c¿·‘Ì’º \î„„”^±~iŠJ<¬©ûÌùä‹v©E2$HZÔ€¶@ÀÛH Zƒ­èOûÜì¾4tÙS.«ÄÑòÁYMtC[UDßÔx¡L)¤Q#/a3B·ùr¯ÌU-#,.S›sH81T”JB Õ È­tWé‘é! „;çóD‰,:©X}S×.SA¤(±‚…ÁSZ;Tˆ(qPäf@>H‰ì¤9ŒA$‚ª@:‡Š°>|/À5’}h,Ó¿lm¦½wª+x’QkB1JvºÜfwV.ŠL>‡#,/o~õ½o40T H¢ÄH^Ó’T¬š¤Í’7( ÀÿƒtE²û;Îò•“•9|l~Ès6DFÛ#,¼$$êæn&Ú¡æN«R܉éŒ%ûXÑUÙæ £h„/H¤=F‡XK"?e>¸I›*|HTp€›ÉA ¸àjÞšï{Ä€„bùÁ¯ñ²Ê}»W€KhÀvçÖ#n|¹l{Z+ç €¯˜Ç©ã(Ä #*46ôÌž`ŒU}JÆÕËERÒY´©(£é!ÜG#/Ù#*þXŠ,Šˆ%EID#*„‘ElG"âP Ý YV*p2âüCž~I'ªÜí¾ÉSXDáõ=šÙK÷ÄQnA´£>àVVÚÐ<R±:Ô#,a¬TÒ0r"d&&"HG¨ƧÒ4Í¿¦ÉW¦/è·.¤’-êîÞ=*¹^¦åêoìM£ˆ´ÆRFX+üö¥YƒÈÈ7 £Q€Æ „ˆo,”rJÀ­´R„‚º”ÏéÏŒ 0jfÛM¦þŽúflƒ@› ×i~ ÙتÀ ì‹’#,?¦RØ2Źž'ˆŠ¨+Àö>AÌžÌ/Çå?£'oÞW&ÚV’ç}TH÷²2ÈQÇÓñÎG±Ó§±_;Ñäg·õU±bÆ„cŠ0Y„o™ã˜b9_xغJŽ;Ÿ§¢ŸO]yxó^‚ûï‰àð[òCä•$…ó¹Y›cÿåÚZøO–ù«oúiì87Š™°MQ#*i*2€ Y]y#eµê°ÈÀ‰ȉŸ¿½6}7Ù$CGõ¯N»»ê‰Ò=Ÿ jÝê ëùÊ ÙTòjíiy鯰·¯f#,Ý“ÑBæKÚî .Ø"Êp!Ly×H’fC&ºn´p2AVb†4¶†›¨G{¡‚šRÉq¸L.¥ˆ‚D2ì°vŽþ-ÁëÃÇ+U‡å1rÝ‚œ«²hþÿ¦n㿇¼¥Ên#,"BiÇ£Îm·R{ÃÆ'¼,6ìãrG˜ï«UX.qÅï’â‹À.u“¯}¤„³Ëµµ‡èÝ>DXD‘DT>!ëÐ÷ÉßáL‘`¿×D˜aüžž`„óåÕTÓ&Ìíÿ‰'D’³t},ÃÏ#,GŸšç¦K%Y!·ñƒQš6ÎË÷nø›c–P[3ÐçwLU:> ÒÌ?™$Ÿ§çÞ EÕ5MWgÐ:÷§QâÑE£¬ØžšMT½|ç™ÈQê€H‚4#,j¯ºB#¸Ùš…#H‘ôóG™#”’¾%'Dl\ªV©i…E™\juód'mcÅS؉Çî’¢6ÄØ3ï¿gà³’¦ºbYϸÕs â#Ãdžœ+@ðÓãî;c%U:º¯ËGNeç»Îi;v5¡û*÷¡B@K𠪀yv-)Q_Ë ‡»ˆFšÆÚ¶ÉZ²A³V4“eTdÚ+--«J¤´ÚÅiš¬Œ@„c#*K#*ZEª1€ ÒqI8ÏœåoªTœáÃh‰ä‡ ŠDóĨ"Œ‚½6· l#*À Žaïl‰J‡ÍþÔ×ÄÜö­xÙ»hƒ\ØhŸÃ.d(`<46:â¨æ¢#,Bí80bÉ‹ e<AàU–E.mˆ …`æÁIN™&™×+ò„ ¼«ž»Ñ`‰DC7 l“C%hâ¡+-–š?®ævÈÈ¥m 6¡‘0°@WЬnÃ#*LH¹-*òè{Öê ÁU:â¨#$Š2#*Š©³j¥*– $€»Q^^|Ô3ÚÃ| ¹JŨ¢!líiÄÝqL™–7@€Éˆ”ŒÊ„#,ˆ’ M¾7‡·¤SÙä=™DÙ*F#*¡UJoU6oãL@T HÏ€…xãZDá #*‘‰$Y G~jæ±mŠÕ͹­Í®i•#/h¦h¶f#,EI(ÓH °Y÷æ~Sɬvl©xtÌÔ¡¹xÂ@#*!‘rNõ6 s¾¾/Ÿpý÷¾ïQøü1nTj°†p´no–ÐÍÅÂ&ïš+™õÈ<#/óâv©Ýv¥PÔ÷ÄÖà2¤8Z|d=§åîü¿—íþ/¿ÇüÝ°Ù«YdPò‰#å8eD «æb#*YÝê³Á/#/ „bª*¤0ÀÝém¼ß›áÚÙeüÑl¨WL×#*Ù*,a=UTšŸS•áÇ3Ìððî³I7@ÔèÒ…à&ÉÿT]yÒåô“á¼ }Ùk̨#/Ÿ[?®´:«C®™Ñ_¤#,³–m|[l½ZÈe1Fø¤:ˆ[û)9ôNÝçó¯*?U»`B&Œ@„ÃM(…E÷úÎC#/AéãŽíÙ‚xÉÒÛ¨…:Aû% J©ÀÛàÿFOiھ͡±Q›Áÿ<Ü.W x)™#,ýæÚGlØ(,ƒp±Àj!E10šÒíŒ&þ—¡:YÓõÑÚWfìÉ,.ÈôÌÐ!Ò3šƒWAÏnvÙwì΃(h¹A ìÂ5«ÅÔõL»Û½ü°9!Ðéõºµ88¾ºÅ ¶–QW(•;%ç\×®¸ë|>YL’ª„šÒlŸ¥²‚dJ-ŸššÄCòuV¡ç¢:Í!¦~¿KK§Òq Ó™ÕpÖmÔ û6ù‹ÑŒ¹ÿUÍ£ zÔ_ð «³¯¨ yr6ê]˜-Ëí¶ôƒ‹³§T)D Ý«™i\2™õAÄ¥Ä9¼xQ†_Âñd¶pcú¦!öó·ŠÐÉÜ&ή ðÛ˜²¨q«œ9k%–0ªq¯ö3{ÙÇ<oZ\ˆ(Ñ`È#/¶žHê Êâ㙈Åh]ïv“°CÌ@ ÁU=m&«R¡ë0y¨ñPM†ãÓàü8nØ0Æ”´8iÄåYŠíþæ¢Ò$!gùÏèïÄ ¨A«)¢¨¨4£QX>Ô³ïèyßÌI±ömÝÚîR‹ÖéQBôzSDp"¦jQXž¬Ð'WRyºûúöw&ji­ŒÅëy¿|ƒŽ°$*pGäÑLXÜ’“ÕÒÀ€FR#²AÐÏÐñâUWMeèáUÔXXXiœèèrø|Wû&œ(˯@¹F1¬ýzÎÆòäjzÜ#,(éZNÅM#™5ì}‡G[ï×^Ëà¸bæ 0á±Î·8Ä@m‹xh¿å½Cí‹Ã2†!ÄX‡’Øð¸.¬±_A`eíÇ+î€#%KMà‚å.L4ü7ÇG"cB’}E®‘hP¡Ú_¥×æ,4°tLM‘“Bœ«®r YÅcWhmbðI@#/ÔFùx$ã­“äqÑ0ÜÁâµÑäôuå[qÓµv\ôòæ#¶¹åpçqF;jÌt,ß 0ëf¡·U˜U)°.iœíÃí®:G!;í<ÖU6ø3CÑÑr£Ãaºt¾¢ëÛž>ʉl7<Ï2AËE’r –ô¨FNL^ç[:òk;PhÕÃg#,óØ+ÙÜìØÁ»ôű©·|ûE©ÚŒLÐ(+«vP鱆<{¯ÊßÚà•^«š Gƈ£p9#/äæfÓ 3‹èN·QälÊÄ0(õ4|¾XœØué¼ûqÀb쇈6âõ`»XAÏ+†ÞêÚn×ÝÑs>ÜÄßÞÓœÝãEwo z‰åê}0ý§Èúy%Oçtêp#*„¾”F}"(ReÕõÞ/´?BYžP;K².…‘áR±ÒW~;Ô»'˜=…ùxÍZ¸ ZÖLê>¸té“#%ƒØº<#fH<HE^ŒwqžpÁ‹lýpCó‚§-•ólÿ™ffÓn„ߨ”ZÏÔ#Höág3×-ªƒP‚€‘Ýˈæ5ãt=¡ªætì>šÌª#*Û¯CY½³ÆâöŽéÃN6±Þ÷í0˜7Är¹¬…Ð6m ¯©“µ­ ¹5ÊèqÙƽ<#,®ò›\í¡Ñ&Ìyø Ü”&7sžÊ[÷9 èy”*²ƒ&ç%:ò"ÕT©b‚DÀqÞqè}›õä0ÅÜ73¢¡!ëµuH°ˆŒvi¢²YTÝPžêÆ'¿ß¹Q芔zøorg" †&=ÆA@šž9Ð#,Ÿuõ¬ BìS"cŒ`«Ã‡¼–€G)”qÛ·û8+fºÁçêÇ©·ÁÅÅ“È¢Y#/8<»Uä•Ñ¤! ”GuÜ0]ÍÖ7Rv‰=ŸöÉ$‹âÎìR,÷¢¥„:¤:ÔѼÔÔ¹ù÷ùÄ¿~¦¡´Ç4ä®k©}9büš\‹yÅsã¯FU`ÂâÀ›#,‡@þOVÍ¢·«§ZóÛP ¾!ÓNŸfMumP9èMiÈ;dí¥j Ð:Òs”D/$Ž»%‹U-4­+UÕ\Æ–F†l•®—6@wWRénä\–5 ƒ"øÚëÖ©!PdaÚ#/á`¨ÈX«$ˆ!¡J"(!¥ÜïÝbØд–ÅA*;>=¶V4Q#*HA"°À:7Q×Áµ$hjkÌ3j”¤Ö´TáÃptçÇó¯VÂÃçÎÐÖgÑ‹Óæ#/_Ÿ”ùó÷“Z6§f={“î<”JTAðõZ©€m%Êé`dÚévKê!êa '¾ÇD3ÛB#/ "$…àêP:aUï·d^3ó•GÆŸkÖ™»•ÖŒ’?‰s7ÂA…öQ2"ftÀLO'P¸ÓYF?Š¤ƒÃÂR»@s[)ŒpT5›B°+)#/gvàbXk#/ e3,5Ñó­W©)³n7^ÑVšÛ±<t€Íû#,a2@ût¬°* ¤6•#Q-Ƴ{@ªÇK´öi¦®[O-¢w¡æ„ú`é­òü;ô-ïq"·§†xnëFµÍpœ‚ˆ€¢"T¥°…T)vÖí‚¢ˆYb%,@ #R"–K>fí'5mŠf©à,Ãé@6xÌC𧻂&y#/6 â ‹ ))¡$B#/C\Cè&QBN¿&ô#,Q]Ÿ§G_„æ¼pÉ!1ßÄ:ó®Õ…­´ ³æÓûþ†ÄE56Æç]7€dÁå†àtŒö>ËÑ° Ò§‘_ƒ™¯%¹2ÒÓ-5ŒmµÌÚªªPcÔLÂLÉ“#*ÕÔ¦„ã›<¿èÖG5âÐÏ)ÖîNÉØËióổµ[Q˜Ò¡æÃK@¦€PH;˜Ó|Úí‚ž#,I™].½Õ!„–²r6I¡¬@D PE=í¨Z3䄪£EýÜܽ‰âü¢OU¹›!¶¨õ>ÞÇ£.eW˜#,ý&ù*M§÷¹²ƒàÏííáöã¡ÁÑ7±b,(mÛEŒuÆ™òפg/ÎXíñU’5äÍ•N›ôàN}EQ(æQ8dã· ‡¿ŒÔæ“ä4&š;!d2¨êF¼»s€ <ÕÌŒ'¯™À|lêœÃ<}—½¯ ´݅$¨R3¬mFõØëyêúM¶ðŠáÌåܹÂ8)ʦÜ$fœÆá¤RX‚àœ´ßš¨Ç÷ó«aÛI0cüºç °Å¬e'_“ƒ)&ÛÜ[®l#/̉k—dZÜ4›¨lñÆ…$$ Í#,†¼jU#,$ CëÒ2¤a2u!ó  ŽPàˆ<‡³P5¡B^jÓ¡.rð¨#/,2<²Dâÿ'7»+Ø|8ÃãDAfx!¨ ]gr¼‡2Ê=@+ E×ÒVb 낶òÕ×Õºï1Ù•œ6×_µè#/#©€V¡äàliƒ"a¡BÒ¹èE­ÜK».BqÂn]ÙPÜ0ª„¾¤ƒÆÒòi±"›Ð`”  6Æ1°"wœµ¥s…X#,, [©MD2–çVß+«¶Þz¢‹(ÜaK©K ;î·dy'9s_f/ËåÔ‰÷{jóÕ’6‹lJS>,’î1YÒq°§tµR}à¶;Ã^Þ,õ[èh"‡³l)(‘›oJ…A-¥9>“H®–0›€ý–üðdG‹'‚cw>SêÅ>óÕ 4&IƒV|wu@#ÜÜýD—Ð’ÉZhAòæ¦W7qÙ™¸ù9&ð${`î±®Ì-"K\d6s>7rÉ.0åYB¹Sá#/Ý EÆ‘ÒêÒÛ<8"Ÿw¿M>ßd'Ì“I=Þ‰¹Ë¼ýÉ 0Ó¤\öוýÝ„`Š4åÔØ•!ËrÇôu³Ò'Y;x‡#/0ZMŠ("•TŠ0dÛìð?ˆÈ¬‹"1€š—¤‰¡R#[§»c¾þÝÉ›¿Qöb_´Î­.Þs}íý\Lmç»ætì¾gžªŠI>J‰žo#eBdˆ3àŠN³}^דÑfÊc˜>½MÿÜ~Ö¥SB˜N¶Pˆªim¾¶ôx×_¼¯ÎØÕLþ6D¢R6Ú,dEº”Ɔaßæ³8-šèL¤VbÄQE0’”£!B2]ƒÂÕÒffN~–x”+%$Š$ÿ:%è¾3ì¶00\ bšäˆÅ‰<ƒ¥Ï¤äd@„Ë¥«RVuk@ô¦ëô4÷+a¤¬»›Ð&jƒ¼Y~Î Áõ¤¨ŒU¤gBB6Æ‹ðúhÃ#*ˆžV˜ÿD{ˆi‰o&¢‡d<4T#–V‡†RŽñ#/MP“ÄÌÀ R½<¥UMÅCch,#Ô£dëÎN3k(­lÔ•ÇZ¦€ò1ï”ƯéˆQ‡#F#ì…8m&ë•öGka¶²Ž=xÉ#X°3ç‚Ë“Æ<Ù´Sr$ª£¡QìsFƒ…Œ_&ýŸÉ<ØÖ„FÏ|Hšì›ÅåÖ´|þv%ŒÎ ê˜kSZ­Ï8›h ±“]-0-f“K bŠhÓ‘Ü05‰‘ŠJÖ?f“Ó4`KXR*B4Ô±ÐüÞ4l}5ÅQœ0°>×é êÖØxfk#/QÁ5éÔ´ Ôj‡±y2·BFN´'H mcæÈÔ„ôçyÚõ4© ¬±²ÀÆ 7#,¹Èg:üÓE=‘F,憬ÂSGK*Ó¡gQ‰#€ÛìѹÃÞPFÊuªF¥þgˆæ«z«Bw;9)Ùlœ—X½áä•^®Uwn…1áÔÄÓª—§×Š#/.0°Ñ¯ùùŽkðn7Ôºö¸¥J‰.<¹9t‚¢âN×Ñ«Û&5¾×£Œ.ðÎÈçq!*w~ŒÄXÚ£cü°t á‚;ïÏPËY»YÈ¥¢› ½ÕõM«åkz·Kî¹.jke$ !‡R¹ÃWÊÒ˜7Ñ—%tnŽKQ^#/(4”¾ ÃFÎ…øüBh±F…¶ŽЭ¼èÅMõ§ &‰–SBRkFæƒ)&¢S#,ØhÁ‚\#,#–#,.]ËÞ,Äû0‡wI àãm.[¼Rs:èÎ å­™+IÁ‘ ’)Pv0ËC"É,Í%T´7CGƒD&Œˆ*ÃCv­ØttˆGO­ÚoósË|C;Ÿ(¾qºº•&g•(uÓX‚’Ë‘{ê,Ôc R1»˜½Þ®#/‰ÓB—´|‘¶z‘¸Ã¯~|6¶3§d^µÏèB©Á<#/ÀˆsEÉ$¥ÖN8r(‰TÁ($6Ca79 @Õz6—þŒ`]Žvlç#,zS­ÂÊR“H,)¾8óå’ƒ‘Ü[€`±ÎÒ8%B¢4D:bŽ²!"ï26ø xî6…Ù”KÆñ9³ÓYè&Ókhca7™–Îowc•!ÕÀoõ_‚Çch™ÖÖ–jÖnk æã]›ÖvQv%#§=°k|9ñiËÃ0PQDÑ6ò¶@”Hû›kåTm˜A+⪬ÁDÛôÙ±>¢#/B-Ìkó–Ü\°[>}ñ—9¸ck‡Œ½IÍh×7füß}©aÍ-ë„ؖû‚!†™m‘€ëñlÎww(1T£G7¶LTañ%˜ B8_ˆS¼;ÍÙnÈþê&/¦D¿y¿N“,ìvt#, 6 €)ÅŽÓg»Ë¨zÂ{w8œ0Âây¢,EFÌìzD´ ¨¹[%ð°IŒû½Ô±X[ØÜ@ ŽmÍm¬Ü•¦ ¹1£¦I#˜„jšЄP¡SÏ¥FŸBüuJšD€c<sM†Îœ(#,b Û1T‚4ÙÄ2 BôK6>5¥Ã4L#/¹Å#,ûøk #*8J/pŒà¡¿^€!ƒð°ÛðouDƒkÐ~ÿÁªf¯!wJ¾ß«_6gæ÷Dü”Œ耚3jÙžÚ×ßj¥ï›Œk‡d?Š76MÚ—ÂheñkµXÑ€,Ãuøª‡9#sÙQ¼_Àäe¢™™zv™ t‘~)s@ÊSƒ¤ÉfeÅebÛÎnüÝÏÝg‹#* H¢-ÎÙ×` ¾™ç§©ùÀ„!(Tկ̹âÛ¢ j5j6×E·+m±µkF«úëm¼kolkUg]iu»[龟#,xy­ÜOE¨ˆ†^-bˆÛ»*1#/‡šàì¾Ð[YvPø ?aóï<ƒsÂÂ÷¿dûñºm«~XÌD#ˆ%)2S1š¥,Ì•”¦˜¤Ú¤ËIúÝIL6´„ Š‰¥L ›4DÀ¢Úh×ÓÛ˜d©1d”JR¶hS&&i™)Ti‰¥Kèî #bÈР¦4’’Ë#,PLš*©QE"˜EcÉZQ²ØÙ L’ Ó)°e*3Y ¦VLÙ‘½ïwÕ_ZsÕÊžD9^YSzó)eB 29˜Ù¦a7åciŠê]¢^Mßfcú÷_gôë+Hqåg ž¬›f*\ˆÇÀä¶&°²ÀKJŽÝÖMN³† MàºÏ¿pS(hÆô–à3µ.ÁGVg>£XvoFïCEF£?-–LOSŽ!ð…ËŠH8#*>M‚™—m3³F}‰e»­Z™ïŸàN™Áž¶’§§ësdRÄáÇ7“ úDäcÓæö¤œ¨°ZÝK^î;$Òm°ÆR·#U²8†¹#/u.\€ƒ‘¥ƒ®,„$dFÚ#,#R²kˆÙ•™F(ªŠ"$Og{:×|Áà&&fh¿eRã&DW)¾SOÁ¦²4í-ÔM&/–™_<Ò³ä;Z>ÓZG¬©‹S%™”IÈῧ-M?Uu;rö;W¡éù‰íi•#]9ì( #/FXL Evì<ÝIóÚ¿ZCªxçmG")’êAÉ#/—ØÆ‹Á>!µC—Áx_âýPÑ7&š'LpKrÅ%Œˆ»r>-õ¢÷rºÁŒøI*U‡Y¤Hb Ø#*›#<äÒ3äÇêñýx=™‡ÔþßµÖúýÖ>k§¬ÙÖ!Œ¼~ª«Ï‚"b8(ܶâ°hÜž$°™húz댜yÞϯ^®%;ýoüÁ¦ƒ³M›1i¥¥ð‹MašƒÆaG–e´Ûµ8ØÌ{ÙÙ¬j ߬÷Å<OºvÉ‹îmNÊ ½Ie©ídÚ›»®Xã;o°‡V9CV’@¶ö’,7ÕÆé‡m ‹ “ic³4X¸=·œëo·æüàÚ÷l9Á‹PK¢ÊÒwO/¨íã²ùÌiË~ÄOÊ'zt‡ÖΔÅCØ·6iàOy¥o¯4º´#,²max5É5„Ûa? ¡,;b“—O¹ìóªrÞR,½¸ì{ <óá&‘Z)í õ`¯nu="ès|nÚ<Í0!@Œ‹õ#,3О d]“XšÎNÜUE*7•ûîŒå8#/Þ.ô&%óØÔ½á–ÚH›Qð|Äü°*~÷®j²û:5êž»ü»<y#*r6RE·|IÔU¾­N¡=µÛÚo®»W¨°Z>!8}Ÿ]q½ÿQÑi:R$àô ¨Ö{|³ Ðéva±µ°}”g²_1°]w¢^Uh‡KQÉ檀ĔñDö€"©rPoÛ¥9ï;ÐÕøž3rÕçMkgœ¨à<¼½Øù0܉:„§ðÒ¡lÂS¤x†!¸ãuì.£u#,áÏ—LU5Tn)ýü±ÚKBð$EMnÜP–tÓZfDÔiš“¬“”:2z߇Ä}´›s%×i^ý:"ºŸ¸H@" œ 8•ÁRµi¥#mÿ¥/Ñßc¿®ÆC×éúÏ5Q‡ÛU¿ÁîJºŒÜ+)@<ŸcDtj1GjF8ÞV\ÌÙ­1¶dÕD¡•ÂŒk:7¹¬Àm?^31o+ŸllÃnj7Nf>f˜óP×ì„©wwH´úyU.B4"b^Ó o,¶c'–R<8s1Ú²io5¬Dâ­dZ.Œ7™3#9Öý™&ð¦ÕÕ“Pçkoœv»²pòweÌ"Ò–ñ?ƒ5£ rq† ]50Îlcªtî)º\,@øuCTI¬3>š÷ºD䂉™¨ÔÓ‹IíTbæe –•Df]¨²”& M) ¹$\]Åqˆ”h\^'jk["§acqó§Gìt!åî^ÔšˆÂÑ’ï5½çkÚÍrvìb€èù0BŒâAm‰'bŽ´‘çS ?ƒGjÉž¹¹®œ'—#vØFŽ®ì$!qvaIËÌ&*_3Z8†%_WhmŸ\Ø8©!píµøó€AÇHz7hFág^®±§7Q$i‘Ýé‚ uŒ.†ìÀPQú³£Wt«Xd-%ðø440i­Õ⩤vFæÆöщ“¶61d>ˆu¡õ#,9*>xï¼Ý¬.eó¿Yáñ¸!9Îvånª¹Œm¨€x¥Õ3Ú~™ŠLi34'ÃMFÅ,îåã „Ë¥®Nx̵â¥ÿ7nb`c@¢~Žù‚“"¢¥àÄ;P›e“e)Ô£38j¥Š ÉQ„&ÂMþ+ϺƒÓþQ¿dbõÆ x‹@ìIÑEç*4˦öaè‰Z»ÆøÖ+y3­cs7ÕõSÆûÙØzJHÚœD«±‘vÎÑñ¨]Ýw¿pûôà<ssížç[Ä‹§C}n&9=Û‚ˆOßé'Iñ¡)0±Ã™­ãU9ßÈ>q¶pI";ôÚõ[ß5ÉÙ¶´o Jf…ľ÷U-|'—Šß/sKtyƽޡ*³’tûÛss9ØlíŒÞÕ(O˜‰åTîžöj‰+#/J….¢“‚\<…ƙՑÖóa#/Áæ7#,w2f£å6“H„#©ÕH3 ðÖÑ·Ù¦l4Aô$ÎÍ3¬Ì09¤1Mª† DÐÈ%­q’d‚=ùhˆÎZ]0Áqˆ(2§ì,H¬ º5 јXûé¨"#/—0õII:mÕËø¬ªr`iYݾq![jâ*És-ŽbbT>Îåí#,©‰4€HB,ÊÁsY#c`¨Q¿&NëCÄòaDEº‘òí¦—«¹ª`˜Z¨R¦\Á­`NÁÔ¶˜Ø`8CA“wÙ­I®èy¢JMÄÁ[=`ëD„U2dÜñ+}UlòXéÉ4Iª+Fž 7…³¸ŒrûFËtÅ.#,ºÁkKGMéÉcrS^¸Ñ½ÙÓ,™©ÀÄ$lj¦7v„4hIt:h@„4Þ”§ë áš#,æíD•¢-‘f™­uÙ­DÚݯÉÁ-ë!ã*}mßÝ3žÐïf›;Vï8"ógX=é&2ô™á‡&YZ몸Ò+=>UˆVÑy"žv᧬9Y|¸mºbL U±AÐÔz\];æY¡š‰rï)²¦EW<&zár99‹T-JO­5Ì,Ì΀ᅫg+m‡lm±xåÄ+æV0êè¶ "¸ $3‡ÕÝÞþø¢ñ…t(‚1qM&]9ûÙ.2Ýó™tjFÛ­pó Ü#5&©_èãFäÙò¾'cdÌ}Ã|GÃXܳK#,c×)Î-tû7+­ºÍ7׃{ÈÍãngWZÌ8°¸Mäë&Èûa0êÞ¤ÄÕ2†LÉLïOKTøÃÂB ‡j×OS¢¤…k¤‰O.a0æ7¦²‹‡µ2RTócºÖ n1¾vvGC7­Û3Nl̬Õo#/Þ­˜Ìeô´¬ÜÕ#ϯ5X)xùçŠÍãJaCœËõ&‹s¥DÍEÕU<„Ò¨x“QâËñÃÖÀ¨®"6H<Öļ¥•ÁP_wã‘o„kŒy+m¹ Új8Êàmù<k$#,&¨3 9¶jÉ«ˆÉYÄ#ÆàܺÔÏašÐcÁÌLšÜ£G57V䇧‡á&¨6«zešÌÌÔèi$ÞknmÖfMÛ53—N½Fcelvj˜1<“’‰ÓD¹§MuÖrÈÛ2rÄW^ßU4öÐØ°×¾ÊY7la;5ÛFr³«U>ú¥á°ÙmdëÞ gÃ’5l÷(³² “äRš¹ÃR˜©D¦ÈmÁíñ®Ú9ZãE2ò@ÓŽN7#/ÆÂ1Ã8²˜pr9àâÕÄ#,ªÁû‰Ç8Q£˜!9…Itw‹Rö06"K@J#/hØ”R«’–4ùi#/d†E tÀlV(yaW›I’âIÂolfjWÞÔ±ªÑIÑT3|óÅ$ºhÉ*БåpV1Š‡M‹-UM0ö憆IjË£ODÓj8*ÖÓÙŒ*ížüB£o]s)ÊHìø#/ƒÀ–—¾¨ÕJ’-ž-­GTlM»Lõò¹–Ó[¬P¥FÒR•)%kcezÎ,³ m¾­Î˜BmÎf7-aa–629'È!¢ÆÙ3-àðàlë#*G†4aäÅRí»èÒ45´=‘t¦ç¡Asɲ‘QŒbõ0„æ(àÑÇàPCvwꎛWg­1ÕDžíÊH¢$P8 ïuCÁ’ën…i+åØŽ#:1oqGÓ™–d±3š†ÉXñÎ!i4`[d#,zU;0Ê¡É…<i«Hî Ñ›³€#h¹CBh˜ƒÆŠ\‰Q†”¢ÔxU)DÏehÌàIB…ˆæ‚Ýà z4‘´0!l&î®™©²Jd0±Pxë{³’KH¶­ 8iStÕâÍdI«'6mƧÂI«-‹–M2ÀÑÍÂ?²m&©&÷ÌtG;ùt£[;Ö#¿N$Ò›v¥)G4)yY£’‘¹— &mÐ$#8¡¾E×|`]ê¢YZ—*HnbÁ4ÔgG§!é™rðõÀWH ö0ƒÒÙ‰¶P”½8yÆÙÏ#,Ý.œ<nÕ“´:œ¡á÷]çn…¶‡Ö#hå 6Ü-#LÜmWœlÌkJ7sÎËt9¹Á96R³dg4C#8µJ.ô£cèrtÅÕk“™1^%ë§Á”ɵFq[I³‘Æ5“#,—áq×k“L1c€D‚ª/)¡#,³µ °"Ü1±ˆÞÕÎk/)‰Ã¡Þ¶xœwÆ4Êý™0ÄÎ\b‚fwvq5¢ÁT<§µw¾cÖ‡&ù8MÜ®7æ2áÊ¡Õà 7:´Á’ÌÈMN¢iŽ^F!7xÀ[Ù6B˜&ÃLŒÁV€Á ,¸`£Œb±#[x¼£‹b óh Mw;ÃŒj>º³©Ð§tª6vˆð2e‘Œmµ$`1³„»÷¼~Zæ ¹luã¬kÖmד‰þ•HÆwu»PÐ1ìu ¬`³ÞB8±œ|>[­À #**vBú†ŽLðÚƒò1Tm À‡Cu.)lÀrš÷¥YK 0q3$1¹2I¨¦{œÉ `Ê-Ó|¬'°ÕÀ*”DAÎQ`jÄHÌÊÊÑc7nܘ€ßvä†0˜Ê4:b8Bc‚8A ª£¢#~§$(AÝ4 f@M¦óc¥ßVqAE&HÁs2ÒFîæ“.S8Éq›Ã\¡#,ÆDLºÅ1Ñ‹ FÃ9²4SlÁdÏ”¨*S»Ž$¶4@5eöJ‡ee°;8nÒ`m«‚èkCfBdê`ÉÉ…ÓRR:#*k¶R9kcŒ%Á†,Õäw€·jI0–ÔV¶pv6L©ii$t4ð¡RU`s †ÕàØÖ“¤¸àM*‚#*d!ÆK-¦fÖ¯â›Iº«;ê»_âI„TMDÔgxîÖPŽQCÉ)D`"5þ³/ÕÀ=¼Ü!Æ-¨ß*ü¿—l»\#,cws;¹$ òª7Ÿ1þ Ì`“šŠ±AÄÞÌtn‘OáGœm„Ò•]B‰p*,Uc"!œd#*È#*Ê»“#/<à´÷e¼Áø×¼ÒÀi°Qc‘ÚÄŸ:9§m[«L>YÍ” }â[#Ÿ/<àý3²ÛI:Bv^æ^[LæàÖe)šÑÆ2ný…´‚È´¥Xs5§×Kn)V«¾ÑÏ-áG9´àÙ³X`ø:Õo× Hø¼ÌÃÉ&âm›ÔÆû@äŵÂQ[Ès´74á„d`ež6œBûÎAÃ6NYe¬ðÆB°ì.Ý>):z`Ñâr*;Ÿãl .ŠKBˆ“´èŽ'aŠDB$‚PGp<öñ¸m“nKDU3n“§7‰åÎëŽï<®]–·ØÅ™m¬šõW­.®›^*Õtª\ÐP(l¬‹!œ<`›,7TAø¯žhP;„ÎË«“ãÁ"f&A¹éÔÆÆ>µ¥QØNÇ´ÍÁ hÃfÝog³W€)šâÑ×1ÓïÉzÕ~A#*6ûöƒHz`Tí¨PUWwmÙn»³.nºn¨5sdõÂÈBÇÞÕ0‘Hí5]ôè/±æK*¥ì:ûHî”Çj¨ð#*w¨p‰ú0 !ÍgÌâ‡>•ö^p9î ‡2V¤LŒàŠ{Om~µwi ú¬j? ¤È»øŸæ3  ír~¦Â‡³Ïöûý§¨áÇp]¤/»ÝÃna®Z¯@Ú´E²Ò¤©W“r©/;u»ÓÏ(ͤˆÞ'Ð72à\ß(cÜ6Í”‰§4˜ìF#/i‰@ŽGÁ W#,‚F«QeFŒ'1D%Á‚Ö¶ÄDaåû‡Ÿ‡8°ë#/DJ†±¥{ÈÄ3#*þ$à~ÿ¼,¢ÞD„,{ «’ö Äù>?«µøÕjm )5±llZ-hµ“ˆ”6ŒÓ2Ѩ*5±c^5ñ«\ÕÕñ­@ xTOzïõðÕZ€{@ï" –ëSnÛõw­&A’ð.Ž³¶›#,]¢…EFšX?‹wB"k\" ÄnŠ˜I$ªºj5Êçekã¦íî¶Ü²öZÙÓYnIâë2;’T9'yAŒ^øb»ŸÙNC£ô?L"[sŽK»¬6®ŠSѺàð{h´™ÍõÚÀv G²hÐm°½X¨Ñ쵈˅†òOb‚ug¨i/B`ÙÜòç•Y…µÖG‘¸A¬˜­+¸Hó¤}L=§#/°ÒÇb¥ªšƒ1HÉP¼*DT[ƃcb˜*ÒWdÆÌ¥,€ØAŒ…°¤–ɪc%4ªAI”G=Æe"fÆ83ŠîPEbæ÷Â$x,»)áU$‘VµRYFÚLWí¥½ûæ4oQó Ç’vîɘznøÕ`µxãZ_VhÜ$Í11T1¶4>;të­‹‘Hdƒ’#‡­R—#ÖˆVºR6‘Ôf2†™Ö¡CÛµu@ɽaÊCdœ5*NŒ–$þ„Üa¢ã6tqPƵ5Ô1˜qÈ"Â#*°&r‚ì‰dÈdŒÕ•çF-—ãæäÉ<aÚ1žžâ¦#/1I"ˆ–À«(—AAt¦àÜl}ªK® ¡J~$BÖTK6hBðøYvÄ#*ÍU  ž”2kþI˜2†>®ðž±^¤™_:1zgU#,j–a²ïòÆX¬e?-*²˜ƒ[èêäaæöpVÑL‹»#/3‡®¹3ð)M9 LRâá:ΧGÚr.C¯8ØŽùðĦ°)wQhÔFŠ¡Ý©7¨6#,a§-»"øZZVÖj(-„Wù7 't9`vhU#/‰¶i!KábÇgØÌ>&ƒS2B¬Hb‰P¬IClor˜ÃÄÖH8 ¤áÈÌæCÃà\D:}÷Á„[øA”Ѥáš`ý]lŒå$Ç#·c¥ìç1¹ÃäÆe²g3Œ,$B>•‰®´ÒðA»Ò²œ-¹x[IH¦SR.†B6¡ÑÍeÁeÚ¸Mæ›%¨è׊.1#J ÏGx¸‡kÈDÔëy¤YÆYÚ·¦4!ìÄ1›#/#/ ÄÃõa0Š0Ù Yc¦Œ£vêìa˜h$0Žˆ¥–‘â7B…0ªHC"€…У*#, Ì#*»qY5oX…ˆAVT¹uÈv foàä³6掱MmLÔH¹Küa#*#/ #¸#,›‚ÀcÐuá¨|/z¿æW)§Š,OeðVéDÁ¯Ì0õU€³sÈŸ³:𣥰†k†;úmk­C§ótP,LBˆ”z¨ ¯W†5k±v*Ò^ŽIÁñSA…J%UTj¥1#¼µã_Ò[AmFÆÔZÉ´jÖ-¶ T–ÛWíZ–š"ô=êf‡ÑC3ͪòT¬yë°XÓÆ/O®i+]Ãî'}‰ÅÓ£JïDVÎñöóU祔¡¾ýⲿ¼¤Ö#/Ü[AÙ[Äu 9V’W"†É½õÓ†³¼J6S=£K#/æaÈ}'Râ–[jS®V›i80Ù&èfVø»–½”£UÒ–1›6m.tìÃI€¶‹¶Uxšpȸx©Š‚6ð’Âæo$Ã8Áá‘å2=Idæn!ÕøšïQŠÊÆÛÞ¯’7•Šiȉ3ÌðÍ™ ÛœTÉ•«-&ºÄc¼ç›h4MÊ4m®b˜ßSœn© óǬÓGŒ¬MW>:Íœ;ŽÆ¸DAÇqIÜàOy!ÈO ζñV›”äcP^åP…ª¤Æ&êÙ¦#*ë[t–ÖÅD6Îkj‡©§ÞæTîí©BÉ- 2u‡B·Ã¡Ú2ÌìúŒÊÍbp§k’LßVw½xf;œNÕo‹L’jV 2ºT¡6ŽE¤"K´6¬’l±äw$ùT=ÐûS##,“bË#,C˜`¿c?›9L“¢g…n±Q„dMJm/°BùV’Ô]XÖ5µÙTª[›vS-©¤¤hÔ>{}·–•e-0±‘V£#Ga6#,oª&‡d˜X%‚aÀ`@’‹¡Aa‹ÒH,²$BH’@‹"¶5œÆá@J!0`É&J6FÙ-éUÕT¿¹­2Øø(=H@‰Œb µcRAmMwh»-Ò£bîêô“žR²·d­Œ‘¸AvAÑÙUmN]zÏ:ínóM5ãn†®Ö[­˜ÜÝ“zeÝëºÅwk™›NÓÍ×y•y‘¹¹![©[“Ï+26LBE$HÀ#fSýÚd¤HáÂ4ShÙ¨@ÂÔŸ8‚Ü‚HÀ€“6Ì¥(›+bÖl™JYy]k¥¬RÓ&´°Í›mO»¯§oŸ¯FZ-P`±©‰E­&ÕEj„¨¶ÀHŠÂ-ìôyÊÑÉ:u(üãs^ F¸—öëb¨ÖÎA2=AT–ƒÀâÙ`E$ nÄ¢%ŠpTjw#,#*p‚ùâ;Ò!é;ÏeƒÕž'œ„aqקï0 aÛòã!u4#,#,}Æ߯4OŠ&(w#/ÁvÙÜHHQ#/áTÙ„Òfg/!Ň~zfa@ÎV±nЉFßÒžƒ’‹‚&Ze³$:ÞxÔíÁÔ=z“aŠTâŸkøYP:˜·½*UPI*#,”ˆUýè€+M‚*Ì #/Œ¬H#Iuêw„íØš˜éÜ‚á¤ÚkICú¹9ñÒ—öð¹S•O͆úZ·Ù&é†ï†øýNc#Å›aR•lZÔÊf>0;Ñ Q5z:É $@¹´†îý_¹åm{ùìM¯¸¬pÎÇ0ŽÄ:@0#/Á‘+f‰%ƒÜ… Ìx“Þôsªð¥QAã"ä@EX¹qÆðxRµü~2¥œÜ¡0¦3p0…¤ÚÂH„ˆÙËb%(v-LŸ¹–Cd%}±ƒ]Ù÷(KƉÜâ4@Ý×$årC9œ‰r¸(…ŒHjÅWü>¬@¼'5Bxú¾äÔ–¼x4´ñ¥­CV‡ Š]j“Î^pù$@"#*Å#*" }›Õõ®³Ü}Ý&Æðч›bVO³0BÏ×€S#,pC¯Ëù˜WðÍÚ§}~­­½2ôì•£ZCýNꊲI¼ë¦š3i=º×DHJMãs[L‹0š’k$ŶyM­rY¬¶2–Òl1´šIã”Ó4;t²™4ÚŠb–V„R"_•®°¤j²™†Ëf‘¦%›Eµ5¶hžœQ´T¥Ë¦Ô%õms]q¬Õí×cELBPLÍU˜•^§R­&¶"-,ceWð6Û¶¾NÈ›½wl“dQkDÖM[m‘$Ò©«[›­-LÖöWI©m½zï#/h›M¦Ê)…MX¨ª[-&ôëZ¥j1ŠtVlÛή¼îL¦Ö™#, \×m5I¼Û5xÚëJ%V5^\˜‹SVÓkÆÃ^?[ÉT\xå“ì×ì[MyøôtýDéD.ZõÙ?OéøO·ÝÓÇV'Ìé&Æ4èG츥É&C§Ù4ŨŒ†~>½ÞÄÄ/î ö6ša«bæ€{a”]“¬´#,.î´bŠ#„Õhï΀@›³m¾6Úƒ¦jZm*f›a#*A#*… ìã¾f y $ˆ(ŠÙ¥lÓm{ªÕÒÖÅJb1!f’ E*²¨KD¢4m·lªîíŠ-%‹cm‚ pŠb*·$R(_0êQM)Ú`G^â€GE ©°H­E#*$XAÛ-›1,Å c#&%µõ«¢„£R“T¦Õ´Û6e´›l4¦ŠT¦ßJÜ¡†ËQY¶%£’”i¥$(°Úm”¥‘6’21°ÌÆXØ*##/Q)­šŠRbM&D´ &´¢š,¥”ØÕ)l)¤Ê”¦DÙ±‹E2Y4•$¦)*Å’-J&ÔmfÓJ¡%&,™I„Ó$Ó%K-SlcTEY+E,LÚ“$‹5Z–k&MS%¥6Ùf¶¤­µ|kZî6Õ&Ò³VšÉe²K|&ÐÚ*Ø‹ T#*#/€0Š"T* ”Bë#C"Ê0ÁF@M|ÚÜÕ)lÔjÚDÖ©"ÀST¢&D(Ó_i<ƒ6ámxVJd:è¬ìÉI>%ß9çTuäºÎ]1“:Šøé€fÿ+81AMÝ.¾ÛŒ¿Ö¨›Yô|lè?Ô9#*Òݹï#,-N8eÓ¥ƒäÛ_Ì-ödjƆ£§xüI‘¡±Ÿ¿°ßן1™n#*CÙïòÆÊ#²=PÅžÐÈ9,ŒWåá»±®­uÝ‹f€Íµ”1é.ŽÍÑT߃’”nÒPîäR•Úb]WÑ-|—BÏõj0÷fû1Áìë”:ýæÂŒ„P’ãM¡„†ò@¼À§3™¬$4Æ äãÙ›l`Á¢K>`©&z€zRWê(-ç#*©nt%ÁïT|š®n£¢k#,N\‚•¨AR¿Owl°¢wç°M±3‡ÜhTɵÁ±ü«mÓÍNßa?œ#/$S\P{4Ì"„$]ú|ë¸f_y{è„ßsšU#,†Ó±±Oh;#JaÁr0™È6&"ÇØeÀD3P¶¼ù¶Á¥c¡Ã,€°JKâÃJ®§O‹=Ý©Í49¨ÏÕð£úô×v¦s3Þ&™TZ‡ÑRä`ðªtJZ~éÂðä+g~½NC|À‹$Œì«X§ jzpßy"á†Ùòu6Ú >4H6õÓG"Å3­Ì>|FÆÞí”q„s³PÕµ"ˆË€µ©ƒDê~ÆAfaÇF >‡JÙ]Ä@ÂöŒ$@ï¨n™]\RN,T˜]À#*±¶ÆÕF#,·ÎUÝt”Šài\´˜Bd:nɉö(TP"¤Š%dN»E—H1(œhšï}„mÕÒZÂýÖ#/,ë÷ãÈëBȬ$Y:îp–ˆô… VŠ*MîÆŽ €Ø‡#£6U¦«¾;1´mΟA¯ÐÉÑ#,¡Š~<ömǵPdbA<ú ¿Åî{YëÌóŸ­±å][{éLcØ:ÃRô‘P ••¦`}~¾w¾è3¶›ñžÛ¢ÙÿOð²X#/³V¦¾óÍ0bŽhÜÅüw¯;'ó{;9ÔWªXÙLjñ®¥â+tŸÌÓ«-†3V—u)‚Z]TÈÞ±Q4#,5¦ˆd™l#/Û´C2Iš¨µÃ˜#,¡±¡rÔ±ªÄ(‰b,jF”ËñëF#3†¥° Ü‘MœUV6pãPbmÊíRœÙÅA@Ä@¤––ãXâ–*2ÝÆ…UH¤T®Û¤“KV‡šEÑteS8¨¥!®)ž•&ˆ#»#* "ýîÕ'”¹¤çÌf&ý5¦š0ðB)Á5Ú5H'rm‚÷U„J Ó¸¤hÕ%c˜àùèú˜#»„ZÕÛ¦IR»=[Œô18žˆu79…bÏ1ÔÑ;PmäåGÓc]\O)ç9â; QŸpÖ!V/Ð,²+h µculA;rß >µmë)Ýmu^‹ÉðvýSæB(ëEhع¿³vçáÑóúH}Z‡Án„1¤Çîš_ —ò†¤5!±‚•®“5…y+n->.µV-œ›ä„3y‚¯†ÈÔñ–’æWÀæÝ(Ö@|ÑËRiHRhg¡3n˜ W¾¤³dT%eL¨Œ¿_  |rŒÂÛÞ¯±a¹ei#*‚9.ê/ ‚8I×äúÉÁz|ò üžºÎ 'åR:4W`Ðä>»´Å¾¿¶¤pÀyÅ #/Â9ÇQ;÷o>ha¤i#8æ€z°l#\aÍ:Š_øµ#,º?Ky&'u÷Ô÷g$:<k8¨7 kF˜\2É 4Ð#,ƒMJJO6Ž¢+!¡¸M@(Xä#/4É”Ññ™Àngcƒêç§ÊuIp'Ä].¸˜ý•( dшU †R&y'€õ‹]÷Œy†EA¦ìqJ™ Ï_l0sZ¤d£º_:.Œ)$#á—\BãP9Lg%ãÎl¸ž·#/{Û;ë÷ÁT;ON!‡fT*©z2‚8¼Z˜•:(Óž7tvÂæ>É„@` ’#¯'%™F;Šb›J&‡Š»I0` ÙÃ#*³D%¬²Ýü̽ÜùÀó§j¤}‡,ãxê.UDy£ÁcÍ;y¥L“¤! ”"ø¢ µ" IÙ§¡Êä~Þ"ÄÌ~ï(NqvÚšŒ-úVj#Q…74Lo¦‰¢:8#*B#gË.$I£°w^?‹äCÉt1áÀXlìb™9]ÚÜÕ« æ1.…÷ç˜ÈµØf=^hFÃnUfÉ° ‚š·(Ø%ÔCDÔO‹‘À::©]›ä‹WÒŠUäIë/Q`G§yÃ;ºÍålÎåBãNó©&}Î'¥;N¡Ô@QHÀ±J$)T#,(²@l¢ˆUñ;}§Q¬_<©SCì;˜—-؇¬`ª8#*3ÞÌã£pYAÂþyŒ£ÔïÜÈ$ˆDॡÁ#*ØôJDBÄRF„†*¯ ˆ”]û @"ÄV,ÉA‚K+¼h" bl]e¥³—­;µÜË×v3œ{×s1¬„z³Hj¶‡¬Q§u#ùôèp,è¹1€‚ðc²û=ï/ùbU'#/§mIºcg#/*]£³5¹w§;®î¼ó°¥x×9¸Ì1×w.)­Éf—<ó­‰áçgí–&XFÓpI6 ”’#,‘œ5¬†"Eƽ$o™#,HØƤ‹FÑд5ˆ$¶ Øö÷s3þD%B¼ƒ©vúö^äµ'@HEHvëU×wî°GÞ8G>˜ñÓ¯—«ë€mœ/«@œàfØtÛ¦¾%Ô*ðÂÜ/å‹TÅ5ZÃc²ÁQ ×ÁÒ´.mØHHëw s÷¶gbe:}!èå`Æ:'O.>]¢U@‘½ò]çW«,OPv%x½¢›DDíàÓ¦RåÚ~8;qœt¥üì½Ù0džîÚEËQéSghÌ¢áúQH–ÀÞÅ“pˆÈªKª`«##/©Ú·³'?·Î‘ ±@`SÙU(ÌLÊ#,Àêã’DEÚD’l-´—µîåå˼]^;9·ÖÞR&S$0ç•ç«SWI+ÊDÕI$7#*8 …‰€#,€ÁÙEÞÝÕã®uÛˆ™.Y²1Â&á¦0°hPÔEb´±E26kè­…Ü$C˜£¾+Þ]Mݺ`bãf)añû6ñˆˆ0.“¸CÃû<g^Öwª\i®0;NÆE;Zí¢1¤Ïw5~™z^0kñ.³™1’zšÒ“m0P¿V±Õ£VMª²3ùÒ‚ ëGK¦M`l Â+{¶ibeovÛUâÀfÙ¦“MY]t\ßB¼—ŠbK"ÆѪ-¯ÎÚ¹ŒTF¬k_*Qµ^—¥êV׊欘¿ÍýfŠ)Šª^ÑÑù/b`Z£Ë†®ÍHa<V*9¡fYüYº‘§Ç4ÖÓZI´*ÀŒ‰„[ÐÆtÁ¶µ2‚¤#/šÏ,ÈIc;zZB$a}VðÄUa˜ØÁ Y#/LDÅ„n‰‚j+¿?Nf¾0ÒqÔk„áÒ-‚ÃØs6:N8®È}ŠMàCþ$RrÖJPÞq†®TÑdÆ¢;ê¿Ð©1óøÂþGpY½~~)*Õ"®©Ä0S.LX1<ȆݮOE6šóCõí¨Tj!QH#/ª„IdTi6Š£hím³j×ξ¯Ë¢°nv,dnìºqQp‘üa˜!y#[ì\Ã# 2ý0ÛzÚØÑÉ®h'ÑÓÌI|Z@€€DR‰™(Qýø_׌ú¹¾ÀÞð'ÑzÔYãI@A„Y#*hì fên/w¨3OfîH™ÁÓ?6>ïøa‹¹ÒÙ°0…¡…'G»ämÆ2#*´˜–Tçª%Çe³WC¯ÏmúÛ“`ñ<#ƪ‘–x§#*ïE’mM¤@êèìبðÛ*{õ\b" #/’. *_”H>4-+öz¿ƒÔŸ'ƒ:ˆÅö#/)À3Ý–M¿Ð~Nva&£ÞCѾEÿžEdF«gQQþϟ燰 ¦“v[«l±^;˹hV9îèåŒQ=‹Ýۺ̳SWO¶-Ù¿òüC—^Ö»«°<a#,„F~`ø"Û8ÁÏŒ)ª)±Äò¤üP>ž€ô„_æ;×¾„O9S…‰B©i"2#*Ä#*æ×6ÛWJª‹[%sZæÐ ‚$4€¶,À»¨ "bLI±.#*"Œ×,>wØDîƳ2ãþD0m¿dÝŽ°f¥t`¬P[i,X)Á [#ÌchÙÌ"dv Ð|,x=j~ÃhòØ Ò}cÍ ÄÚždõ¥!Åàh/8+ ý@ïæîr’H#*È#Kªh•A!ÖüK"üªw#îdµH¡l)Ðiy”æÀÏoÇwÈùi ¼R¨ÄÅgìÝß;4׺ °õà(.ëO¥ÆóVƒ3qBc› t#,!È -œm@Ѓ}—x”hЭÔâÞBüÔö#,†œ²íËÓßG¥?"v‘P0vI ¡‚ ¬6ì>;X0¯Æ‹#/©M°‚æªWõÑ–Öe&šï=˜Õ¯w¶iÝ´awW6½¿¡ëÇ®uÚÊPcL… ^J¤ÃÙk#*Ibn„Åül´!he–…AH(ëFÿë©ÿÃrÝ•#/@))Œ€)½Ôœ²#*6³ ‹Ø"Ž¹gFr$´ÆÛM¡ñz`cºÄ´ı3FÐÙ2i²aÍ-I„H„]Øa¨ i¥â“ ØÐ[Ue‰`ô½#D—¯x­Ê»›®÷ïHÞ,ZwUsmŠönj¾ wö¹ *Å s› i«%8ÅÄ`º¥™© íA¢L¤%0¦RJTe²"’ZE“F@«£”ÊM±m]:! `MYi4r¢M0––°[)e²©½—’³WK—#/dU¢°Æ´V‹z¨zÊ°&î²u{µóõׯ~Õx"1¯'wNèå±smJîŒn[–æ$ÅyÝâãCË®ªø 6æcyÄKlÒo…»N’ †cV`ÌbŽ0Æ‘ZNŒêEÛþfe„7ÉpÁÍŒ9b…˜yA®4(lê‹FªËbn@ 8PÚÏñä0aáªig\["ÅM¨„¤ˆ„5f3J×Ó^6Oë#,;O@Œ'R@è#  dåø›h|€ùÒÛdžj“4Miú<¡ÅØCÚG”Z"þJ»je2Õ%f7Žª»Î»E„–)bD¡0K£ã¦?¦’˜@Ž”†AÛ4ONVàqãìz>#,áÝ£ §-Âø¼B¨˜uèa?7ö$¡.# …> <íðµflke,šÛKJÔ›MmóÿM^¥µ§q¨Ü¼Ûx¶ìÔ´Ù˜±¥«ËTcu\œì—-Ò[lVwSºéV×R±­F‹UË6mË*¤´ÔR.ˆ)ÁZÂ#®7AXŒµ*H#/H#/ˆŸ‰dÞý`d9 š‚#/BɈƒ@Ù¼à}Ï_2Àj×Xör«±ËÃìñí÷xåiëm0orû|æ‹’}B!ˆB’Ê*¤%-?ÛRÂØ€’‚6Ä‘D”X2àÑ8ÎÍÍ™44ztéÇòã¶uÛgî~^ŽóÍç4ñ‹®×71>¸çð/UQ C ø6ÙD©02 %$¤Ý–Ê2ZÉInt¦TŠZ¹·6Þ+}ֵ嗧DQlšÖFÒQÓX±·UÝQkÓWµØ,Q1D¨À¦@à€Kd.UÁaf%$›j5ªI¦Ò^Þü€6ÆÀ44õ¨ l"2<ã }[¸Çy±£Hu4Cýâ-mî#*f ;tŸš!"‘€ÔV\jÉRˆ†)>.  ÂȦHÂe0l`eaFŽÍ´V·PD’Iö¤íÉ#/&¤¶E™¨äÔÈ*A.BC ˆ¶ö»ƒºÄ²'À{U@d(<.e$7ÈObûd‚;Ãj¥Çfß--Ûòñ:”…|9xqÛõ¯„@¬ÅäÕRqFó‡O>~±v}°}u“åÜG%õ‰(Zw B&êuéž]ˆ\°æX4ËžuÖŸT^È)QPÒ¾!‹¢8"";-”œÃä}œ¢op5s!êPL¤µ†î];vØyЇxÙë+ÂZòs«¶]†4ÖE¥)j5Ñ&Ù¯y]TiZÍ6ËíÒïi]FÐF&h†!!¦ý—8fó#*n;y÷Ù1.WlØÞÛ´|š¥Š •g2!{§Ü¼>Ê®kQíû‹ïɘŸ‰çfq©Z Ñ´÷•»úp5NÉ™n]ÝéË e‘‡ È‚©‹„ÿ¾!¹yŒç–0 H'·gÂçMæËdÃ9I11¡”¢Ja GkŠ Åc`Óy(È#«¦vV©Øi6`p´‘”¶ŽÏR6ÈåD´±„ÌG!ðô°xx¢'ŠyÞï0’y#/ª°EÞÁ’?¥–`ÒhTr#,ᛸʧOêPÐ$*=â–dQà‰jHïå‘Õ¤$ ©Q /ó{¶ˆ‡8I6tt9ý+ÔÏ#*gQÒUɳšb?}Ž HìÄ›GÏÓFŠëV×#‘#/ÒtÄb5)¢CyÓ‚94µÑ¶»›aPJ»>1¥t(Ò&2!#04ˆ ƒ#/6ÄHJK•5Ó|£*¥:ª¼”PÏ옹Z¸X÷É$÷s5ÏFƒ„59ÑœlIz ô‹ó:xêÔ‡_õ²ƒàÛÆð†¸ª£ý=¿ÇsEv›Êm,0xÇêvï®ÇÚQŒêO¤52uõ ôO@ z_bjÑyW#,a’‡Ëà£À#Qà¶2áä"²$‰É‘¶1¬ V˜bÌ©¦b¨Ú¥U-M6$Ö#/3¥5üi]ˆH,fm!´³õ6·*Œ•‹feSEH´P²š¤–Ô¢©‘‹Sm²¬´VÍL¶Ê•SD›X©DU5¦Q6j³DÓT´UZ5 #-!#,6{Öú/ænª¿e"~çèüË',ù´Hí«ç©!® ÕN¸‡/Ú”B#*ÔU‘Dh%E6Ñ[ck©Z×-»3Î*ó#/Œ¿¶ÔצÚ/«yib'Þ¶[°zŽþ®:"q@¶"5#*©PF¢È20”ðå…C®@‚~$dWò— z"¾­´›Æ1(¨¹’¡ ÅÇ0ú0Œe>õ†›0ûV‡ùl| µ¨ E!=þ~'MÁÝÈ£³yvÐÄ…:PñÀ¦¿þàÓ’ECŒ#*‘Bˆ#,@Ùò åQìNjíÚÄ ix}¤zm"UÓ‰oÄßÙ‹Iâ¶ÔXÛoh†ÞK¦¯Wt^eW-"íKdãJž´&Obí¯bØÎ<ÇyôöñÕ¦ý{ÊÝsfYºeEÔÿ\díu#*›óE/J aŵ!³Ž#*¾Atch1Ú\×4½ff`ò8G/ÃôVSHæ…°°4.¡k‘#/à|ïoYñ€‰À‰ÞS#6sy¯ÓÎÞŽ‹•éÜÉÔŽjí€kNñ¢mfËU­kHEÕ-éñ8˜N:C·qܬ4xxE“ôÃP»Î5XMp5#|µU…ÎÞìMætFÑɵ‘ƒŽJsòGF þVXO8ŠÖ0†¢+&†) ákbãüEç£485EY‚D8˜4º÷οÑí;–ù0,öÀý¿ÀÄš2"M6­~èg!I{J¾î>ȧß'Ýк(}æ[Q°š{p‚w:Gú1%z¶Œ‚$ˆ`é‹cÿD!&a""¡" {ÿ#,xqÏ·õ>Kͧ!=ÀG”ÖVüŽÝù:>Yžµʳ‹i·í9z0:°'ɾ42jªhLd,ŠÊJ””%¡EB¤P0|‰¦:íµ»É+võád¯b3)eb¨Å›G¹ÌqÅöñ™ƒåÍ8‡g¡zUˆ–ßÿ‚èifÍbË‹AÂ0rRHLÀ`ÄÓKß#,ˆâ†å²B4Ó  ªeR±Ƽ½Ÿ[‚Ì.1ã€ÀÄ_FN9ali7’)#qéãH¬­ @cax}L„ i]ÅØ&µi︷“©í¹Ä0ѳ&?DªÐ™lGo“d± —è Z…™Šå%áÔ:íLýÅ :㈠ֱ£œh‘"b‡ÕtÁB5צ0ÕKU7W†:xœýô6q—@ðìdÃÁ§RɹÞ46§&` 6¨ÑFaйˆ@{Ù#*œ;7SªqĨ‘(ÏB \i¸¹¶ª#/Œ-¼h½aÛ½ #*äE2cÀ.P¥•cDV0…B’‚Ä#*„RÈD!a#/b#*H4ñlpR#Ô)âªÙ¡óù¼)yK‚uìTuÀ “Ä¥>¾}îß'}UˆIL‹5BA¢Š‹E£Âj¬T;ìž´üéŽå\öYR#,{u¼#,£&Zi‚ÏK-Ô§0ú•ä᣻¦¾ÓR)Ñ¡¬½Ù»!JÈr]íâÞ‘­p©1ï×EdÙ*ôÂ’Ê ŒBÚ¸”ƒHm‘õ7öé<±>$7ñJˆTIj¨öƈ­Š»d$FƱµø¼¯3Ö÷¡Kž:Jòå2Ryç˜m÷Ý$Yë»â‡£85CíãeEƒ\Hˆañ*…  2!ÖtË»MD#,¦tÑi€Ç’rô´pÀ‰«¹AÕd…ý=SE#,ºBFا4œët“)Çep¾Ÿ#*îiŒ´Ä÷ ‘cwrŠû§ƒXf#/Ç/º#/*ãÐ.Û#f#*Á¥š¹RÊ8@€KaËÖ“æï7r´äH‘ñ7Cm´ìeøi5ª#/ m|Ê؟²ßEšZO¿…ûóÊë Š¹Ta®+Ó0$- Lœpˆ˜¡HRZ˜ÑT:,®‹v=AäjYGí’±•…òdÔ׈F~R|ôRºáº©pJ蹯-¥Ðw„DßÚªÍ4³ƒ¡#,S¥Cæu/ '›ˆ£EÍ–ñ·O‘õ—©Ùõ¨t=I½%,fÛ<r΀biZåSEѵÁÅ?YWtPi«º¸h\=5Z>•m®ÎKƒ8',6,£q‚[(;<3³šÄ’ú¦t›ý_Á”Ú0ù{ýzàÒΉS®#/*±‘‰UO#–·wZ¥"UzÍ̺š]¯"Ù`‰½.Y,Š@"©'QŒa[ãÞPuê¦AOY#*/w.ˆÜXˆnãÛ:þ±#,½Â#/dq7ñ('‘—ók4»¿4(Žýe8Ò+_V¯^zLÝÜ΃îl29p5özLƒ¢#*,ˆ,Œ rNZ4u øù¡!œ´-ûO—À€Ü²Ž‡E–í \(rH= aCcñ‚jëëóìW=›Ží3&­ õa÷ça}³Ðê×70(ÜXßËÝ·by+Õ1‡Œ¢'‘L#/J%ã¯FXD­3&*ñ^yÓuç›x¼çmu‰YTª“mµ&ÛKHîuÓ­¶òíuäÑt”…¨‚ÁOÃå¸Üo( ¶d+?Šý!Z½X–ÒR¸A@~ I#!¿Ø#,ýÒ_ö>+¶4 +4©… ωV†[Ha¤”Ì2‘dD™ªŸFL“âœoêë#/nK½·f²#,å.™p¸±‡ÄVŒ}ZÐÆ2¦V†Á°Ò¥q¹fˆÚdebÀ™rÈ5­ÂØf¨Ê²S„4ÛÞ‘³·%™ð´Ž¥ÕÕ뮽KzéEÓ±¦&#,t›T›Ý1`VtIœPhˆäYLg6t|:Óiµ¶Gnña§ˆmãÆ,xͲ6²„$lÔ¼pÖ!vm:‰¨<4…¼8d°ØzÌXF"ź€ØÆ4ƒKª y˜†m–ÌS#*K7(Õ¹}q#*þN&Ú¤NÀâ®~wRÈLl²–#´ªF@\s ¦1à§7™a¶UAoóÊ'Ý襥‹¬Qêôˆ"åþEåãÓ/@n"lŸåÞïðÙ¾  Í8:œM¥ÜIÓÖ>ª”ê€bH ˆh ×y•šK*5’¶&Z6-&¶£T¥­ö®Uù—+])_`²#*û°Ø[ ¤´L”…+, A}fCÞ‘]8îOËÀc­£¦5Ë)EÍýMª`åô{€P#*!èíµš²tÐv˜ïêoã·CÁçul#*Xáó@ÿx¿L;ú²§ù$ƒ#,îI±¦êT2'ΦÚ×[½ëݾ+÷mñÿ×]k„¸hÔáUü¯Éd[JËÍîŸ 9m›°ö­ñÔÍn6˜I6ö5cpß«2™B$îôM™ó&WÛæ7¹öhúÉ…dDñØJ¢ØLR"j$n@äudñÅ&/m¥Ç÷S}ZÆBa™$&L›|æ}zìcŠ3ÕY¾ÞFZj¤‰TÅ ,8ç¤Ü÷\°ºD¹–ÖK\ö¦þ/=€bÚ)–ä°å~…/¤»–úé†ËÓâyÐ$/áç¯ÛmØÎÔpCÝì1k{O+½Ì ¶¿ÉˆƒI3×î”äñ£óGuô¤éݬ}.xý+4OÇ]‹>ØÛ ¼á컈TQ•©­7þ^ÇÄSfÀÌx¢‹íÁF˜è±w¿oGÙ„÷EçQñPT6Ô2ˆgÓ˜©¡¥„1^Š7O~Æ£Þ f8ù×ÝìMG牦¾©9²6‰¾Y›ÛbšË«£…JÎDÑÐ;>©O#/ÌjjíÓØc ïì¢Ñˆúb9d}Üeõïxù\–7NˆÝbg[yÂ}ƒ öà XÔ#îÐÑ`8#ö¡˜ÜFN[þ–ÙØeðX –çiÏVú».¥”™ùÝ]„cL>·0‰pÓªAk €nÛµ„X#/UL J`¢2Ë%Ã5CÛz$‘,„‹ ¼ˆ& ­¼å-hi#,þ:^ýE·VýJo ¨ÞÕ͘Ãþ£&×Ø_³ ]T,Dˆ·x±ʈ´˜ˆI¡•å”eˆ¨°H$7[a;‘ÁHá€TF"€£LDo#*J"#/|H+‹‚ B#b7DÔRŽ6šÏë™sÄëëäsË ô§!ðâêÑè w~Ÿæº^wU3±kmVº%ÓŠ#/ø1÷qL¼ÀêùðÝÓÓ€2æi->q<O]¾‘#,~áõ´4èÓwR`†ÚÔXXÎB<¤ËSDé]=x4°Á×Qkˆhè: Ó„nâäy -VÄ[Ëô@áQš|Ð 5ç—<Á4zÑǵã´§3`,_Ö#,¡"ŠKת%Gh‘ÌÐÙÐMï®qiˆQMCTlÙFUs(V‚ &Ú#q „h‘Fˆ šI¦´¦Ö»UÔ›5ª™­WU±¢¹™x¹ywi[Ík|¦È‘a"@ #*E@Då침ç#,`÷Õ<¼ŠË0>¾¯‚R´×°¥1´ÍÒen¦GBØÑ+F¾ú$ßÛâ02“qãO£Iôfâ#,®¿K²œ#/—T¶ùÜ% Ñ“”œƒcPÖ)Ž'-ªMù´E¨+j“ê8–Ã<?ªálxÐl6%²˳# È—#, tÅCà;ä87;¢å÷3!eÕVX"1Ü3·<‡ŸñèOOb%â†q-vÞM¹”dmЯIÞ†± lëàø›2ed^àiÎo÷×a·Xø"ŒTñ?e½GÓz¾Ç¯j33ÛŬZfáæ:ï@ܶ•»^£Ìñ#*É€C¹¶šŠµj·¯h××ø·]ÍUb$Ve r§#,ꟲ³®ŒØ²A#/_ht˜¶L 1üX¤6F#,£|ie‘C#*ñ'Û#,Ÿ?çû¿Ïý?“ @¸y¥-NuF½Í­1}·IÞšöøæðMñµ¬6=‡¥BéJzŽ¼öÕÕ»¬¡¤”$55@^òAyÈ*CõÊÁa¸Uƒ¯«31ë_•ÁëP¸B¼‘¶ôÛIE`¡I±>ïo"â‘Ó#,ê.ˆ.þ¼8‹ÐÎðÑÂâ”áÔm)Øô^F–ÆÓ­`úÀnh¡’¿ê|Ž:ÐÊiÓlpÙîÉŠ¶@ê ?.éÿ Ì5;ï |øœm@×R¨¨ãòý¹Ï3•Uð¶x<fƒLËm÷¨Êq ¯-úKDÄZ\&¶dfê‡@:ñ†J _#*ÃÔ)š§‚#*ØFBçRÄ:x¼lã´ؽ¶†ñ?6#Œ;þ î^-¶û:c(˜ÒÉC̺ëd¤À£>A›*²é$ ¼v‡@üuqÈ·~òj|çðÙ4³ÓfMèQ@#, }™¡ª'Õ‘ÿ<„vS3Îz<•f,+¡©ß Mµ#,,â\4æ)#,R(ý?¯˜fÉ#dB¦œVÅhóÞ¿ªŸ©†þ÷áΛÂ8 èÌdén槤DUNçĶÝ#†Ð´"¼V£GÙ#*h(Ñé)‹x£ÛL1íf&g#/ëÃNœ•c¡Ðžk‰žÔ2 r@²þ;Î.wèúl|¸éèÄ4ô# Š"i;!“ÙÖC@×dž#*É!ÚÈ ‚·Vêkc[§ßT^6ŠÖe¢µklZ±ª6¢¶ÔhŲ́µ’ÛdÔVƶ׋PR@RB’@”'š6 ànQ;Oâ¾ËŒž ÑƒIÚªdb 0dH?˜4& •W¢ÊBÁ#/’ \¼:vÎÆÛ®íÃ8!¸€rÎ;e©¿¤Á`ºvU½†`†0¶a—×@‡ñ;•ÁL1­°küTqv…c¯îž¿mµL|@:é«¡ä#,ÛËl›l`¹fØÖjMP9LÆËó•’vå ¢¢žà÷A#,žG£+åý# AAEH±8emæÁ³0ô(&Õ6R¢P»J œ=9—#*¤«ò©ã¦iÔº?›A7aOæ!7[ÔìØD ÜÀí¾÷9‰Ál€vH?iÀ8åߦŠ_BCÐDêšÇ+qQ#*ïˆf-æo;cD·7|PP´&©«[4«ŽÑŒ\Œâ$Êl·@>§'ɘ)…†À¨”>ˆTMqJÀÕ~¹*ªJ<\¡Ý${»jõÞÎs/H™çBQªš‰¤@´yA~¨Z)YÂY‰R7‡Ü#*îH®§2FÊTý‘F‚…l5¥Ãòç¨Þ¾ù™À´„Ì‚Cd'Tà23ˆo HÉ6eT‚hªÕ#/€×Š}}ž#,÷§¯åêàmÒ5žf A˜ˆJ#/'Üî»·«|h)Œ›[à¶Å/›>Sé¬Â÷ËG’µ^ˆ~Ãå³^I·É ønWÐÕ°¬5nç*"a,“22©rå93ɳC;P¡[r!{n˯Å4ž6²Lbø?Uع`±#*˜ ª£‹.êLóéÛ@tÏôiè]Tü½(ËØP›@ oÈÙ~Aä(>“Ö7g§au9ùΧLFeþ¥«¶6‹j¢IY­YªC\V®‰jÈS!I#/ªF ¹6#,sai³ƒÒ˜̸ÐG2—rLo#/@©¦ÁÆÄ"d ^¦íåºëgsI–·uÚRM©Fm#,qwQ¯f©æÒþ#ã2Ø x…”3x``6qÁƒ2K-c"ŒF‰hÀqCRB7ƒhdq¸4e´N<…8:5£*hU0‚$A‘1§¨‘+kñ„Æ!°k´#Œ†ýû‰ 'é-jöì½f°¦©Œ!uÎÍx¢®oœ®™l›jM®t“æîÒnR£iU‹±¸¸¥¶#/!*†##/Œl¢3A,,¬æ¡i#b£i™1‚˜Õ,qÑkDHb†ša`†Á©ª”Ô43(ØÆ©$4¦ÓbK6ÌÄÈ­”Ô½uvòí\–îw8mÉ“}-ÛË®[sGeï75æ󼉣B¥¨dn[çë½ÞÌØf`c[0¥”kSIy’â‹ Á¬<b3A±´ƒU­Òâ"T„XÁá6jÕ† ŠÀ Á€Üv;ŠjÆ3Œšcy‘SC[y&j*ÓcϘg1#,0ØqöÕZÆ,äËa# ¶E’‰>xÇ Ûa3áQÆM¦ÅÍÀ—t¾è-´°È1œå6†ûiFÚ—¦9Ó>¸¼½xÓvÚh$#,«Ö×KF‰ø73®ÕÞäÁ«-0ŽaËNlÌ,–«ÛÎÊ»s¤ÍÈöëµ¼QW³$ÌŽöþKŽ“]“8¦ƒ+‚ÁQK-+L#i¶œ–¶DíJØf:¬ «#/6“Ç‘¸Ò-¥Œ„I˜Ùhí‘•¡F‚h‰*ÐRGŒ‰ÍmŒcbMÙƆ32KkLa›ë—8á„iäx±#,[2’XÙpÃ1xâ¼@âæ–î¸ò•©a ‰ ­#s&#,ç¾Ñ±µ© >ÆG¦~#L“aB ]/s‰iÖn„m7dÜÒ–P9åLÖêjÆßçs[s{žJˆ€wŸ#,­%c/9ŒY<èA vâ|¬K$¤ÜÚÚ0qÃ3zÂ4¸i#v#,0W#,¤ÌbÛ1½½Pƒ©°óòÒÈ#/û †|ÊÕÈÌÅ,Î6êþ¦ÆR\10ìK #,ÄpdÇܾ‰†нÏáÜÙ°DðîcI%.dûÏK ñbç™=ïnž^ìt´›ÑÎ$ÞH¨Ìm»9a]ÈWÑŠ¸Ì{]dÃó[JdÀá0Æ2#*³6É*mVoŒº]GºqÅÈLJo‹Æõ!±&s€®hÙµ†•ZÌdUG-‰Ò„<#,êQ‹Ð$#-‹ÃqéïäùE5û¬0Іb¨l†û]?v<¬ dðª u ošÀÑà‘‰±6“ÜÅA²Ü,eeU»mƒz@Ú›‹å(ü´ß:á†Ð¦Á¢* œÄf"1EF’{éçsµsh«¥l«Ë«‡”Õ¢¦PÐô "â#,±Ð`ÇHQBbÄ1Œ a#/6¢Ú1"¶B¦ÏùeÞ#*oÜyyŸ)çðâ‚r<Yø~Ý,Ë8¤èèyŸÛ"[÷ÁD..ÿ9·¸PÞ?¯ñŠ¡ýS¶ðgðAQ ¤s ù¿w­f½õáºÅÖº´£6OäK ¥ˆœÅ](«ô~+´ñºÂçx«ËÎÍ"ƒéç6õŠ=Ò½»#,XÚo¼Öæ¥%+Ý‘½ÝËåÇç̸ùãŽfŽsCão8Ñ‹O’¼«Y­¶fºÈ4K*Ì—scÞhD#0¯FtvŸÐ¾gÄe Ráe÷ˆ«_ç\!€%-—¤ˆI!ÉÌQÍè­SóÔWª¿Þz›çæS‹Þwiä"‰£#`DF$ž’v›£éÐmUPÅ„0òzH³:–Ï 'L8é·Œá¸N›a$b²ž§kÏsào“zÖÄÅ»ks}þf‡ [óà],o~÷‚B5S»á[†²o%þÒŒ^Æ(¸Ãð8†–r<eaîAÓëé|êañg>\–íÛ..áš„,n\·èä›&=ýP?ÃP<9 ‰¢”¶X8kºL ‡À­i×-ûjGŒq‘Ž¶‹ü—±õÀ踱³˜(z­-ÃF’V%¤àŒ§GôB0øƒ"(Â)ñýn~ß} ðÔŸ#*8 H"#*©¦¯~÷²±[šµÒÅkKrŒ(…¡.d,ò‰ #/l "AùÒ#/ÈŒ²™\3K5bUEÛ¸Úiç›Éæµã¥FñUÙkpªºkWŽ–¯wE¬jó®]5vªé·vé¹v¯QO ÒX´¤b¥KsŽí»»m¤Õ-M|[UãkÆKZMÍ­Ûuç›Æ+Z«ÆÔZ`‡½Ã†ÇÖ˪(Cש¥ù ¶’ÄsJˆäˆ’ü1N“ã„ÖE´%Ä CB²ëVm­”¶®i’íjìÕ¢ bÈŠó°HB”n…!#*Wƒy²øÚë]{Ú¼B]"µÚöµ‘D‘ 0ŒD>=ôöká…nUÒê³]kÙmDTV¥$”k(¿©Ý-ƒE6h­EH&iJűª*5™¢Ø­‰5Ñ£f´›$S43&Vš4Ei¦Ó@lÃV¨…©‰U ”°„øІóáÛ ¦gWìøä&DÞk¾u[^¼ƒIµR)$ ’$ˆ–_yѲþé÷y¯Ýäô<Võæüô§ùòýxCÃúŠƒJæŽÇ,w½–Þí8[çG U ȧŒE$B$u¤¦Q£hß‘Íôï]~i¸³FµtªüŠÛpÕbÉöñ]€Ú7¬®ÅcI§w[¥®í×kXE­£Y#/MQ­ãy庛JSmi«ezíÙ¬­H’#/”¥RƪÍGüd7ìS‘“,À>E’y($Âd@ÞC(a"ÆIF1ß!¡d!RíÝ’ˆÃ*¨ $ &ñŠJ²¨‘™åÝ°|&8ÂÈM(9•àå7#*9+ˆCRëÙÈë ÆCZØ„ÒyÓÒóY÷a©ïŸšŸÓÃ,}º)Õ½Ž“ýSå˜U,Û•B}3M„!ø"06l=UQý,á­cG7µLÌf7?~Ëlc]Ì“MB`ƒ#/a!`Í©¦èà“L3$È>—µ¥æ*ˆQ‰1S<¼OîÅçÏÇjÈ„$Ûiá1°<¦ˆt2b²tÙóJßÕ<˜ã §wXTžD6C™?"ºK±•ö;Þ7B˜²^l3&$¼‰æG;䶤œù qòÖôž3Z6×_B•×W¶Q´ž¢ÓEá;Œ8`Ë,˜iîö{ž  °Uþ2r¢HÆ ƒÖ;â&ô¹Çùj+ïš2Õåa;v©³ÆËgòãiü8øØÿάø`¨Ø«ô Ë)Õ+j¥b†ž¸%úöÑG¾Ø¡Òâ Éë#,adPO”Ea$Ö¶+F©-¾X_ZÚºVL?ØÇûH†W #*Ê ¶&p± wQ¶JÖÆ­òm¹Zñ­¯«ÐX¾ï+c#*JÛÛz¹Z¿ÙÈ8廦‹Œú©A#*0Ä@µùٿĨ¼üa{zåïÎ#/`ªò[%Y®ºÏ~,ZØ̨(@ûÐ 0À’8ž÷ºL‚l%”\gZ›†Ô‘h04OÏ6i„6"æáÄ\Q’AXÁ1’­kÍd¼öÉUçu]°R­ˆŠ","S ,©LžX§ V0°ÆB pg8ÒðZ84U¦Ù2 ™ƒlíjÔ¥"PÐKd*n¥Ì¥KR ˜ˆP (€ª!B¡B±XňG÷ORMP,0³%›Ÿ@RZ°*$#/#,#‘q@ÔaÚa1æºöºŽP$EcŒ=äÞQ æÿ?_d¨^sx–‡²’ëò?<õ¦’Í]Læ´øµÆYÍ:–.ÈÙƒ·n³lô]Á(Æ3Éj6íÓá¿=Ú s:Î`YPAäE@ ü—„À-oV¯ÅW­ZÞÌ­Ewéë<4Ïì>d`tW¤#/3µG›Oñýaá d^ž5@ûc)£ìeì#,#,(žÃûTF/#œÉûY#,7¢©J¦•EÒV¶výšq>’ô±¨üd7Ï‘á:ÕÖ³æìß©A‹9/·Í6ÙÛÓl7@p?½—p¶\¼d 1QfÚÑÊRt^àî6HhnûTí5g¬Ü}ÎϪQ³DHk¤!Q$´>Ó©­ÅÔofNF§TPHmð#,ƒœÃÙHØÙy’æ¨Ún¤+XÛBbÕ[Ã’ƒk8(#,H†ð²‹Ø‹Ú!“) ˆER@#/X+Æ©jJS$Âêl,ˆ‚b¸0àr€–t+Íѳ¶wöû{KÁ(LGí|žÑ=\#Vß}TøFÆrÞív=ÊñEÊ“zž]¢Þàcì?ÈÀ|s†`cÛͦü9A¹µ]©DZ§5–àªdb CJl%Ÿî»ßIB †GÌ2ÇõÙð¸›Á#,’ð•!#*ª–¤$Tb¨„*"ü‚åág|X²,‚t•w`ÕÕ,A)•q4£®ïØ”£/+’Å›,‰Iš„ÙKQä«›-*“h¤¤ØÁãpÐa.mÊå·3‡tÞo.Üu×jc •ÝÛ¤WvÛ¯ç“lr–[Éä·W.æ³,huÑæÛM­<æZ¦¥nnmtÛ¥¶ºm²–6ºÅ6îÛ´›%oѺsS™-ɩݺjë.vËE£G6«®ëTù„R¶" óÒÚÅ#/.ö€RÀ zSÑ#*¸mÂk" önôp•ÄOXvˆ…ˆy@pÜôw|/V F¡( B"v±ÂØ‚¢ðûQ<AÞz(?ºqžÅTìAßp}p¨wÀ‘H,Uå£éw„'¨5†¿[<²CáÔÓHz¶ˆyö÷ŠOº„#/Ñî⟧¼év‡_r]⤈Æ2HHff›é×·5W´µmµÌ´A3RÖ ¿âSi:½œl(¦%%F¶MX­Z´3VùDC"'êõ”²Z‚A4¨RHÈÉ\ÚíίKWxuÎR͢ƔÂX´–#<n\XÆRJ‚x„7rBXq"#/ПàD’G#1‰(ÖéO:Ûà1 ]Ò’’fÊ(#/(hÈI” q²QC X˜!¯UÞnv׶zQ¤ˆ£^7¨ˆ–#"ÑHÒ±f¸¶`…#/Š´ÆV*#/K†£¦åÀ™)ðJμ·Ñ`„?¾Ç¨2Ǧ0Ò# F#*@hÅ™î?‡øf£×X#,KºEÎØšEà ‘`ÙSC)UYµJªSA!À·cäf#¨ë  Ž‚9ŠÁa)6m‘¦Ó&Vµ°Õ«ùu@uy&Å#,j ÇË–N•B‰CRZf&oé5iZŒÖ†ÌEbÀË-â#*é#*CýP¨E«hpÅGÒŽÞ4 çâ’#/PlÚå‚€#,ÕÐôöÄò ]¢ª¥Un#,…¾î7ÖǤéôÜ6ßôÅO_É##ä ÂO"Ï/>VÿãŸ1x¤3±¤Ì`˜s(¢¸C2ÖäÀIÚÎ8 Õ!>wrpa2ÂnìŠ,’ª‚ª–ªµ4¨Ñ×]ÍŒï¹5:ÉŠDH¿º®k?ž£šÄ2Û¥Ò@é'Y×#,]ŠÚK×rÖÛ*S÷°®ÁÀ#i!™ ‘,aY$¬QŒN< D)j #,ÈB£ŠDd ¹ª3€¶\ #ý¥Â„%0(D`R #/G:X*7ZÔ„¨„ Ð*Â3ŒªïD°F#/ã#,…ËBÉ-„¶Jiïj¼bôÛ•%¹{Ù«kÅko&‘ĄÙüŽÎUx]—YÅÖÐδU|œIíö¼PîÎÊ«!ýmb@$K0 †€M¶—Qáwˆ"zfI^¿X­&Y‚`Éš]÷°™Ä‹rŔ¬œÕ¦ î`´#*–$•(@XHÈ(Ш 9Íù4Õu͹¦™t€#/Mû÷†À¸A&ÃË#*O’tð)‚ƒvJï+Úœ$þYŽ¡ ÐgïD+DÂ@ à††´)F mØrfå÷C±daó`§ðCFÝeAâHÆ@ÚNj{ ÑQYT#*@ ăD¨UÍNAOÆ(9@ Q"F$#/.$¥Š•lÁ²5ø6°HE:eÝŒHÄV†šçPñŸ$X{áá2d ±O™Oú6¼yÀ>ŸßgLhZ‡6AÊR±1m€Ö ºYq8Ïã‡#,ýpÅöµÀAü=LÆé÷fbþÿ‚Y#,jÒ4bA ÜÓ4ƉÁ"ÐñÖ›Ó"m¼„²d$ÉEI#P#j¸Ìx2<jŒ¹[nÉ©] ð3Ucú²pͳk`EZÕxñ‘¨ùeàÙÀj¡V^[m…{´Â?Úx=©{W¤M4Â=a¢HÁížD<úÛÃi¡ÜdðTõèÙˆÝ)PCfÚ?D£¨‚¬7…&ãžb#/o‘üñ@‘QL@T¨X ˆ“×CLT#*…Ùì–D,`Qè #*¦<)Ì¡òw™sAÕfá¹ü !•¾óN‘€è¬‡ºwývþ‰Ë#c«jèàþP&GsØŸ€@„"HÁ¤,3FŸ¯Zýj“éÞoÅÁEÔ0SõD##*ÖýŽÎ={úôñnË1ê+èÝ9]*PWð*"¨Øß-4d×î¢ MvãÃĹ6 ŠGÚóTPšœ¡lýÕz0ÁÀ2Ò%AŶ#/del Üßó4j\¥ò£VÞÖ³ L1¶Ð墡8¬6e¢Ã“õe7ËFâÅÝÌtðŽìÊ· 07É„ÅŠÑLäåuÌŽ+Uâéq(3‚¸7Ò#,EW…“4dD´…¾Y©ùûD{Ó½D7–#*òˆð8þNNe#*ÕÕ說ß“EÅŒ´RÐùQ¢92J Pn£DØ¥ïÀ¸yyxšík'\m$~oOx£à¯Úñ"GßwÇ¥ÞeóÞk/çŽ-9nahª¥ƒï».Qo»‚8USv9”‰{)ÐÓ§¥h”#ú• ·¯ë”;7æ"É;VÜ%mKtZ9Èö4=Kþ ¡gv„Æœº©±M¦–1M+¾‹Òºf÷j]QTÕæìRœ1T¤ êâ#*‰´ƒÞšÁ5¥…«DÞ#Lz„4š1SAØü'w ‹'4ƒ²çãs×%ÞïÇtéÎÓ|@Å[t¼S­çž:[Êá4–Ù¥1¬òÓµ)æ—±ý/ZO6o'Nqô!¯YæÀxc¾ÌV=Œž-¨ž4søË5åÛaòdíBÞî¸ñÓ^Ý,)ÊŽ išÎñ¿~Ò»<ðmâ°# »KÊŒ|>Ѫ «°S³¦Z]Zĺ$žêC{¶‡§²SXÐU:W[Šb_«élÅå!³Í\¿Y~÷#/›ÇõY¥ã½ru÷O µptï½;":7#,0¬D1"ñ%‚Àf“ie¹w ín\ˆKƒ²œÔÌ€”nÏ·™à=g°ð%p†']¨•^ì`Ï×®ÿæUÞ/OßÉ™¸â©‡4;¸wcãåççÎp~%ŠëBåœ<Ç•¹z´q™~^4í0ké¹änL!ºT”6ß¾ÚE*‡LuÓH†“¼"QŠ)ƒ¸7uÿ]KùT’Ð!6\Ö|›¦4óÕ<¨Ý˜S )R@Úh‡#©G_.•9Þ4%0P>®¡Ð© Ì[s÷㘎²ƒI©¡ušÕù ~Öoå[Œª«Rª«6»{kI%Ôß©µÊ¿qã•«†¢Ûy,’H‰L#/kx ­ÒK¥Š¢[V4GsWokWxŒ¯ßêByÏ…dÛ­ºD³0îÕìr¼žtøÃÓVï¨#/¢ÃÉRfIç©C3ݯ/F©;i5¯ä\5ÔØ “ÅT(;À¾W§oKdžp&PƒÚgzÇÛâŽÃÎy#,„Î+`(0Ic@[š•¬ÃBÐUŠbBÒŒåoãêÒúòs&uRÓ=1U‚áP#‡3âXÙ‡tRï&{7z:rJGÁö÷¼îg&¢äПÛÅHÙ$53hžŽBd»“8’ì¶G?#,Ò2wë–›ºy[5½!`T/È#,ì߆XTã’I¢lºC~da…€‚™ùÁ#*M*—k9BL¥÷#N‚÷eЈ?Ja@5ôbÀ^3ˆtþ=ߟ@¬M•=²€†ðàü»#*‰‘KÁFFA¿¼„B$>(Jtãß“jÿÛ-í¿<µ[D[°$E”;÷—«‚íTƒñáÏHöVãòWœó¦C37PNq ÛG1æý£´ë£Zrå=>VllúÏjwK¢¿C›#,Án€ñ‰‘nÜËt(èzNÞ±qÏhðøp:£Ý7Ÿ¸Ú5ë¥øxu^áiÜÜÆß0àVÝ#*1¼34r³`\F¹2îæŽØàÉ£sMDY´ ‘8+´6§˜¡j‚gö"¢‰ L~z÷p!UÇŸ3Æ<•Põs#/9m9=Ôz,¼Š™šßWEáÊÖh£âvñ–9“Ó¤ÄÁ–U§Ô,è€ìUÆùñò˼QL@Q‡"€¢'„#*"„B‘‚j.ƒ]š›žøÀO†ëŽâMGp€ìß¹gÔ9(ù U®Ä™ï;K²-í¢%4¬$3Š#,­”ák¿¿ö?¿èñ¸+$GÕOÚ:cD°"@L#`!üÙZ¯›g¼_£¿oÛÞìfÚµ¹5fƵñM5mYCPóEß#/o=ô†#,”>]±!‰ËöÌl;ÝP£¤Ž g¹·úo×MÌÏ£«2špãAéšóWiI‘OJ!R‰þé¶45ƒP’Gú˜kÄ׬=ñnÜ/Ç’}w‰wžo‹É•w`?È©ŒOw?5¿ÌÿÛ:ýÈJGþ>‹kê7-g{PJèKõtÞ;$&ñì}wn˜½°ì¬$⪆~)´xÐxÀNQ¡‚±‹‡«®ùa+Òcà‚… yò¿ò}{«rÇ_Ë^ÁÊ­¾íxm ¬;õŽ£ßú³ò¿»ÐÂôUASöÓc;Õ‰ztI#Rù²ë˜îO=ùŽé½c*©Ç#/îýúàº2ækÖæy½QMVf÷ãÆÂàÑ0'ëò0ÍüÎÖuó;v(I ìî0üžg¹VÌjxÑHäîÈX ÓB²d„‹@D LèC§/ †ÝÔd¨)JmE%‘0CgFaîÊ#*›?‹Ö:Wu§š²üž4•ùÑQ®"KÜ|¾“PÚ~¡"ØP#*P¬bÒ]?‡]µI‹cUKfÛ4µ-@ ŠE$#;wí°»Þu©$ŠŒÐè\Ö.]¶4ø};ZŠ!@|B3–ÅEŠ×ûÿ=ëÑúÿkÃÌ„#/ŒÈÍ’#fM›DÄÔY1 1FQˆ)²2lM#/L›6MDXÅH~rqàüOwC^awŸIÅ’ÅYñfOš{èãñÓ<ÂòàÁÂq›a'p¸Tèf¦Ã„B6˜ÔFp±¬\Þ9äK‰pDÄ#*Û@yáªíí=•fû}§Ð¾é¼¢ hT©´ù….¼³lÇ8™@¨#//mH¤jUg¹zÒ·Ÿ)Éû}™{hóg ¦Q:ÞÒb ¡‰¶ñœLÆô¸_¦mtÒjªrùº¢“ÓY¸ô‚ñ ÈGºãêZ†Ž»´:º­bÄÓв;çG8l–ÚVévO<î¨üþ=¡Ê¥ äp" ~uúÃO¹Æ´eÎ ÙB1uè±ñªIüŒ“/û<ÿ—]ôv¼>d*$zœ´Ÿ±$#,²Ø*˜ÉJ«m6Ç6çUz³tØ[Ã5k¯^w®÷öÛW¥g³\º¾nj¼lî¹)\Õ]®é¹º¤º®‘Þ÷ä+f$¥4´›æüƒªaH¬0”˜I#*š™C#,±"øh€!•C#/ˆ{ª6è‘Æ©d½RµßJ¼E’DRAdB-¼mÀ«—K–w[—²ÖÛy¯o‚_£ØŸ&/#,eFZb8σÀÑ"´¹d#/‘ÔÐÄ2"†Z¸ÓÝMkUŠ‰©ªË†) ¢æi©aý,0¯Üýåêp³¼B2ãcbâÓX3• QFÐÃ;‡†?+÷œg8†ÑÒ·‘m Ôm¢VÞHFB#ÈìÖÍ&ÁäJ´«[6h¨¶qˆD„II,"‘HJ`,€RŒ«€³5A”«§s"D<]æÛ¹i:[Å/FÞ8ÔD€¥=66 ah’iB0OiŒ.¢œÑPLlÚqN9 È@F2ËmM6¦œM3xˆ 5 ­Œc pÑ-#/ÕbÈʆńc`éTª+rªÐéIrŽÌ#l®·€&m„UÅ¡4A(ê‘Fä¨W#/ËhÆ:#,‰²¸È™J*7˜JQ£QÊ%#,@Á°id:Yf½Xæî<M·c»Ý7°†¢®nªä‰†´¤¡3ˆiR #/âeJæE¶²¼‹k7¨þ c#Ì$æѽlc4sFöjJèèÝì\å)ZEiÙ¬FYB²Hì2"ReXÔcp$¼ôà kOK ·ÛéjgFuªÁóðµ¬YädÓ×V+bOƒ¬-p‘¡è½CTÓ­ºY‹"’@‘¤c#,ªµ<® ÛAš6<­2XVƒ¼™©(79#/TiñÄ´‚xQ§údUâiy(ÁH#/ЀwêŒ+(ß)Á‹JÖ“Œ(ÀÐȆ•è\4E‘]–45¡C4+5I)23¤LëFPÒ: F©(C ÇgÐ{l9äXÌ» AtcR1¨Ö•hHXÅ‚Óz£8«@¤¦X”®u¨LÆL+"†##,3›‚¬PÃFˆÄÓFX„QÆ#/"8¬U‚ Ð9AŠ#,#7¸ ¨çÝ4ôÅ_)›x`›|ɧ‚9&1TÐD˜• ˆ›CŽY¼R®RQ7£ÚÃf¤Qn·HÃvT](»gm2tš ·iE/(%ª›$©"ÔbɈšfŠECWæQYžVàÖé†È(ø“ÒF¶Ðµx#/Jùž¦YÊŒM’ï‹ìu¦÷Â…}0'ƒ:fI[}™2”º#*ÆÐÚUDUŽµ)v°K<+†#,!iT[³šÇYŒhbði)µ–Ä."&˜ãójc€6/'NûˆÁ£`Š¢H€ˆFÄÓ:˜SDD4–ƒb„#/ Ĺ€Æe#, óoÆÙ(ŒšË/[oVë^¥&#,i2·RÅ@Chd‚ái£íJÔ”©d'#*èä®74k¼w8nî¼û;˦5FM®õÕÒßËë‰êäwiÜ–Žú/…¾Zü;IAV¶Å SfÑ‹„AÖTý¬«Bê!øj§ëCý9/!è2ÌPÍ#/v#ª<§éáF:Å*(µ• ÷ç#*ò \îÉAÔx·ÝzJŠ>üP8Ž¸OEXÙõIU¡]£öŠÔ–ªJÆÖšf²´[%€pDK–Ù¥ìœä‰í©IQ'…yÁ„ÐœÝtûìã#,* $¨E“éøqÏg>ò`Çã;“}™«0WQF r†·æÅ=ÄIÂÙY áGü¬Y’7EÝÛ×WW6¶ö×]4;º¬ œ¥Qc(PŘR7Åj•BCZ©Sf,¦ òaÚ¥—‰Ss]Ù£– F7‚š€k†m¨’†ÏEüþ­a°°ØY›(1‰vw’ƸKÊœåöÙ®¼íá­÷f‡Ó;È$±ݪ”¾h^^Ô©zÈÞbÐOxjTª/ª; ÝÄÖKÞ¤vé‹éŽŸ6ÜÎ/»W†‰^”D­£éP5}º ‰:¶’$ÉÚý3Ø`¤âaÁx(aª(Cȉ‰¤ØZשè#*txi¨}_ß÷â;¯«•ób±Ÿ2…2A4<"ÂLméh]v›fúk¬åSéÕû»#,°Oâ>£ê,ÇêÍ^îÜ<ƒôŒ$‰GÏzwéâ#/=“äè·œH¯·u_tå‡×a1´É¥ŠoŸ?¾Ébóbvš)Õ^Îþß^‘nï†3¼3#,-_•„#,º§·ª³¼>'¤‰„";®gЮ:dƒQ*$+‡ØŠdç£SZxH\ÛŠa;*‡ªP½à©$C…ÀÃ/Íñ›¶.¾Ò—¢*ÌulÚk¬¶ØàR;ù}EíĪuçmr1Bô´X<I´äX3h½»[ì—}—±ŠQ¬}_º°b8Už±²FÆȵÏäÊ´ˆ¾Žu7§#*ĉ¸†Ÿ\L ³)#,\ÕR@—mE„ýg‘¾#,Α9`8™¹±jIÁ#*¤‚;Œá€ÛÏ‘†¢DVeh.‘wmŤ¢‹^9[%¬[Æ*݉ncZ¹¬UÑ£›šÝ-mÓVCX¨µÒÚåd×75«•;½›‘£jJ×ïw­âô³º±Zþt·Lm‡eìvÆAÚQ¢᤺†´Ð»Øùëžµl°0æÌFE.Çm}XÆsö‡ÈÐ߸o"¸5R9 ‘S#*Wë"«š€qH>—ãF$\È@Š))ˆmá¿W»”CñÑñuÐóxPTúàìhøŠ¹þE#*úˆ)©ˆÈÌË’Xø)…M+“º Â#*I0t}¾’î4F4…C#i(I‰D"2Šª»À¸WΑKKªAHÅÁÀdkPL1  «m&¶‹ºÕ«t›#*XDèØ­äK·#*”™ v÷y5}M›kmøµ¥š£I¬„‰ €‚"üG‰óA°h¨:‚ÿàPOR‚jü"nŠ›s(Ū¬Ð/¸o"FÒ¾FñÇ÷VG–ýR‡Wˆ„ƒGÅTÖÛ›<s~Ëì¶ßÊmlfm&¡M„¶5¤ïó›Ò²#,ädp'QÕ‘_J:¨z^°ÍР==m(TYdÒ>d…á•L¦ÒHK40XÅ¥’ ´i6,ÐÚ™¢Ôl¥&II6#/m­Ô[XÖÔmjm+LªQ£S*m¬[IµšÞ~‹×Ùá[’1ºÃ2"‘hmÉ+‘"q….M¶Â<«)ÈÜaˆP—òpعIQ¼ÐÉ,#/m†ˆ†G”BA´ˆ ’™c!0T-"Á‚R"T4ÅÓ†ÄLUÊÂL``bƒ`èÁmˆ6M]Y©ºmn³šÚíZå­µ"(U®ÓB‹ä#*’"@¡ŒúÿVv ¨Ž<)KH-H4F›»§vbáÚŸ¥]¦õÖêõݚŰ#/#*I#I,f[dZz€åqPÛ]ÚxÜ£8D#'ÊÏÞ:wIÒŸŒ¿Ùëϲ´¹å¢ŠU¯`BB#/ɆùgoîÉ”!h³è×ä8¸Pš8í½õ9;;'Ój—,1Z%ë–¶2iU""†QÑîQ,C4Á¿bU!›5?>œ³‹ÒÓƒ!äÈaAC%[cΘBˆÒ.c‚ŒTKÏü:#/~„z#êEöZÝ}gHQ;šêgvó˼ë·tv–ò˲¦Ò™ú:áé–ÕÍFÚÅ¢ÑmmmrÖË ¶º;«©z­ÛVòZ¿ºfx‰6jz²K1SÓLðmÔC)XRWÑý:mYÄg ëŠGg)öb­#,-h#/1"¯›tý‚ á'̇MQ%° Þéô3î—]Ô„¾Ä\Ì X†tÝv{ŸîãÏÚöƺ!žt’¡ÖÏÛÒ­¥ÚWWß2ZÏgŒ;mX·ß­Ï­û©–]9!¨EŽY,ëUa7_ŸI[ìkÓ•Îþ}üÞ&úôDNÝŒ:×\•&6RÚÔ›ã¡\ùPVÝï·:uÊÃDÎœ¶S’z÷Y#/™ÏëΞÊcC¨Â}ì ’aŽ(%‰3Œ'‚^JRñÕJ‡'Ó¬ô·+>ÎÔ‰Û»¶s!Êî±oãOͳÚ.åâ¡Ä€u_#,öæ3†´d#*ÍzëŌְÁÓ6Û{ÇY*ÌOR͘—Ä.:ã[nÌͧ#,åÜíš3Õñ¬ûj­ñŠ\Âé ès1柮Fgîó†~Nnp K(INÇGm"xÓØ N¶ÙùŽ~‚¶ÅÁ⩳J·r°ñÅ Ë4Š¹¥a½5ˆHôW¶5)…dí*#,ªz¿¬\5®YòÔ! ÒñçŠ÷V uÈo1ìÈ2ÝZ dC3¾æø™Ö çñ<*Ö®Â$<¾}#t\Ø£ ÙH„‘öXFF‘àaœ#*tŠE¹#,±]Ð Á Ñ8§õÿLzÉÈR9AŵáÉ]Ogmp™éçã¹µÝ|#,®RÀÑór<of }˜lMhŸ”œ<J«ºjÀ…6ò+·EÕx:±`è4zo•…7;$º”‰Æ¬Ö–”ƒ bã4¼qkº”!r®èÉ å%IPC®ˆqê=Ãt äBY¿L<-Mš‘ùÖd÷¨Îu,ÙLòçAœxR/ŒV-øÓ†]¢áG0gåÛ¶÷ÓYã´:FÏ3å3¥€ EËTÕÏé%±ÔZ­¬á©1¬µŽ#,çKC)%˜½—×¾ÙàòYÞ\Û[ND#/n+š•Åý›í¶-šÆL$ƒ¢fb6߈¸á¯Mo¤NGöwvvnVÓ]‘éXxæâ6¥¥9ŨBzxBI$;¸‹àæyʪͼè±>7µ7@"È#,èð0î ¿ɵSú,·7¡³fWÑh‰ÓÌ„ášU¹{âlC"´s9•—.ö<W£;/o(Gnk#*û;8‡êãÖ¼k›#˜³.ÒûakÊC;±‡u´'vÚxáÌó¿Ëj=¶ÂÞxëÁÞS”SÉ$ôx34ÑÄsDœiñ/I^Ù¯,bäC‰uòqHrÈg[ZNqEïº+X̘¶È„ŠÌçseSÍ{å9jÜÅj»ÅkB“Õ{‰º£¶ÇhÊcj[KN_ösJ+×å׿–õÑ÷ö`²íÍâàŘæCÎ8-hù*1º}M CÌt9Î#/ª#/ì\[<uFpê¤^Tªc ûÏ ÝÐÄÀ¼àn³àÛãxÉá>—ˆàDz®™×j8:eŸl“Zxô‚%Ýåü¦[gʘwwBÚº¼ª®øºó|m7Të+žz=˜¤ÇvæW lˆ~N×0³ÃÜ»íþphGdÛ®é¤ËƃÛf¼½~§•óäìê½Ö²—^³ñëío\­ñà+ÊØD³ŒûÁ5Ñóð'®Æƒ"–1±ÖœQØÎ#±ÄÒÊ.&ý‰é\aïX#,³¦ # Úr6¥š. @ƒÕßFãv%½…”Ývx—}ØzñП6»hd'(O(im¶æn¼F×ÐŽ4&d¶êK§z¦IáâqÓ}¶5=}tTnœâO‰e3ç½(W;2Å´ƒ|è0¨P;Q®Áài%œa†…Mؤ"Ðt4Ãm®€ÙÁ»‘ºÉîAq<b¥CžÑ—òÄ#,hU6.F­>½c¨ŽsJhR:„åqÙ†E°³KeØÏv b»°×(–Nо㸠H:´ã¦{fŠN@í°S#/Ÿõúõ(6+€caP¦ ã¿žú7Jç[%^¶‡g M³=¼ªCf×.h¼01º±Ô`vÞÀj~¶ zv­ë4§Ïüç—Ù:*gw$¶ D;¨©¹‚f¼¦ºgaAKÕ¢X,ЊS7#*"‚‘‚Â*böW£qÂòv*æéÝ]›ôË-ÚXÎÈîè …¥›¤…hÚŽœ ³7q•(®ýfµ44z2¸Èl»e‰1¶yL°jÙŽµ9YF£¥Ä ™áUíLRg»#Ys¹÷«Ë¾ ?šëoÈruª‡Ž´’Ž!ˆJRÀ-ÛTÚ5 [û‰»mÃ+Q$•7n|I˜sÐí¨%eØÚ{âزøOb ƒ„TûM0"Uò¥Lá7ÅhקÇl‹l!#,Âí<Ki}—ѪåÉo(©¥ÚÝlÂFsbC VÛqkÍÓì¨ø=; …Ú:TPŠ*¦Òˆªššr8㟸vœ‹L…‡×âW\7®œ¡rº.gÄy/,¹Ò_«æ9òÅoC<o> œçÜl&ÒóòàP a‰›ªÆÉåesC\tû0Ùw1¤Ý3ˆjT¥ã º&%°ÄA™§ò8r!E˜ây™ÇP<¯¥ôñMŽ‹¶Åí5Yž(²Óí ¦[E7{û¨}u#ÇAÛŒ>ÆøåÎ#,Æ0YVAK_-JR6W;N¸õÇn'¼™6:)!vï@¹#Oé°FëJ®µLŽo‡Þ]±n`C‰ÐDZV# ‰X×ÚídSÑcâ+²—:e£¦µ½h1®ýq#/»7,í!Ço^§®g¡²ÅsÆÔûø9šË©ëÉújk/\ÁÛ ¡Ð»®ºË|Pr‚ŸsmuërÒÜzùøÁã¡ÔΆ¦­²=o³v2`=w+sÒ_âcU07«¹®+Î]-àË,S^•Ó¼úáõŽÈ[ù(ê§ÍÃD.!/)ëlxÄ–ä§0‡> p™áoÑÒ?NøŒ×Œùr_èõ¼ˆòîûIc TEdg°È•4hø}>M‰MA Ñ¥«ÓCï3¦“Ð9ÅÛ#,h«»›³¨þ-#/a2x÷ù…ĬàÁñÁ…@lîœ*"Ú䈀ÅCBk VÀ½MË2*-Ý7­=}›ÇSGÉÎOÔwÃ3 yQÌu4éxïl2=Ù©#/‘•WŽïú"[Y!¬*ÃѬ橱òÐ(Cµ{ˆiÀ€˜Î0ª˜aô;¼†&–ÓךÅñUv˜GÍZ j(±Í‰µ¶ðëËr·ëK‹0c8MëESÐcÝܶU#Uu#/†¦ÜTzÓ·0äi¬/#r§ºÕi,ÛsÈ+¼jM‚S&n(3pR;@©z’p€rž"3IÊ£Ù"ºá‰Þ‡†@è8š×bœÂ#*À+ZçE+³+ä`ƒ»ÎÒü#”Ún­¬$È%ˆ€>¦ SΞWñ)×ØnôVf,Š\Så[ˆ„#¬ »~ñ…#/E³î#/ã³%½†?S…ÖÇ"u à‚O7à¼#/ïcg®Ö[mÆ¿Õ°Æ1fýºú¹É­ D¼:ïöR&°Ï Ðy€r2¥¬¬¤’¦º¯Ñ˜X ç¡]@k´z såé—Zt#/y¢o±ÝÊ\Ù£ë+ãÙ˜ØT×öŠ«ô’í¡(ÐIøL=—y­ÖÒ§³&‡¦ÝÒpC’A1­0%M–Ä¢ƒT!!aDÚ2HÚ@•dÈ(ÒÇ[š6II´[›^7’w\’JÌÕׯ6»zÍsš½^’©h­#*阈¥ˆ ƒ x‰ «PE¨£‚‚Ħíì^Õ#‘@éX,m5€ÔPXPU Š‰Cd±#/,´ FÅ/j‡Fëé~Ó/í5WŽÄ}§bÖL2€t9êׯíñ˜7K\eàd‚¢#Òl(©è4°ÂЖ·#’Æ´ÚÕ¯Û[Em¢ÚÁL„ #*a”’r³DÓ9}kT™Çƃ® ¡¤Õ,mð~ƒÙöÝãÔÕ™e©ÐRßãôŠ±Œc`ÒÅ#/ÝD2†º>œ(ÖŠ«wmkƒPg&ÄËø#,Å1h‘]…2¸™øMO‹7“lTé­¸ÃVbã+«†#/RñÚ×ÐK£!#/HR UÐe!Ã)TE|¸ÓâopÇ­jê›Æ³‘, ,ÊŤÍÐÔq͉¨Òm6–5$RÂ]ÔV6&šcD0€J墣ܔYÈdÛ{‘§„M¶=po™×•Á8ÐhÍàŽB‚Ù7T€²bC š‚Ôxb2Çw. S5—¬2&àiC¡%#/ÄF©Ñ!Óc3aR÷.¢sSFíуMÜU­=6µ­S Ü!µ—IÖÃZº¼âÙη–Vñ“m¤†6X*‘£fäEÓJ#,©¥Ãv¦ÓÑš#&›j#,YÁ¶Ød™ÒZü÷Ƶ:s“³v´ÀXVC3”ﳯ$ÃÁ&´žþonÛÈó»Ét«¬œäÈŒ{±â®±‹W"ˆs#m2‰l4²©½\Êøf•“%+XIw­Ü&]J&0gHnÀot†Ú4ë;bµÍ¥"NÁ8Â7N8ë¨ã×gÇ *Lá‘9lw“£4< þlÀ{é1658‚/*N·T!­#CLäè†JÇB-£pÊR#/”*à Ѹ)¡ÃHi4ØÄÔ ^5hÛÍÅ·“%ŽºíéÎÃ6¶réñ †@u¨lŠ•®¯4†®®ÖÒj0Ã(ÕYÍ–mÝF?'r%ÆcAÔæ NiàÛ}zñ Žã Ó”¿J„FÓDu5OéÊËÜ‘ùÉyTlæWz:DÀšY¦ÆγŒÇv~ i€¤WµßlPË`”¬iªª½–†BŒ„#/Ój²°<#,#hÆi-hœŒÆ¹0ôLÎmª"fæ`éÞÐhÆ>TºwÅFñ†FóHtë4ÛmºÒ æ(­¬ÿRV£â¼ÃpÊ(øD#/14”{‘hÂ(ëvSNÐ4Ò1êÀÜ€ù$¯´Ðñ¤‹š$‰ÃÓoÌ¥08âd€ÓZ±™Ù6ôÁ—}X¥ d#3»¸HÈmÝ&47,ÍÜhZ#,2j“#*Š…”l› „•5$ÈÄDÚ*‡6‘ð©5Œ;.©PÄ`Íjs¥#,4´ñ˜“C#Q©ùÖbË8 ÈÇX3§aÈù…Š,^\Õ²¾LÖìê@^Ç´2ózåÏœªj,DAHŒ£´²î¡ÀÀbm¯™áèõëþü×~×k¢Êd“Y²nŸm«õÙI¾óÄvºÎ±&îM_··Ç÷ï’¡å8#*œ'}ª0O´¾ìÜ,äŸ[ɾÊxÌe¹¼yE€e¾ŸX>ã²@—Í3:ì^Ž‡ïá¹½½SvFµ4C·#/1²³mlºqáôÄÈ«õ=A_RCÍü@’ïêõ‡èéO¶Š §*×% ¤03‡ÏÃõyÁש‡/0<üSÍc5A8÷wùUc—dî‘€¥8MeøÚÁ#,‚âg¥þùQüú´5 ›fª¥pyr˜gÓy½ÏM¸Þ1µ7tÝÉ„D@täîÝ™ULm =ñ„–;£×è®Ï.CÐ>‰G¤Gh t 6aÎèÙY‹h¦¨Ú @Ÿ¯‡Øtøuäc::‡§tò¦ T$hEÍ⢆HvÀC#/ÊE´L—-‰u×[¥^j™M¶ñ¶LmQu×W+NíWuÖ£mNud«DE±A@U"¾"êÀ?¶†³OÓhT'ôqò}<ªúŸÊ+‚‹#*"2aIZØlcHFHÄL”i¢i(Z¦VÂkÉ°[V)(ª$¬‘†3eE¢‘–…4Ù&”›%(¦Q *#CZ#/‰H–ŒÅ3E)¤R©FÉ0Û 6a”$˜ÖÚH5­ypé<åy¦£°ätPÈ_dN0=¼çc9n?$Ü/³eÍöï~g'Q¯ó"HH3‡p‡¡<~~—Æ^Ó—Ç%A÷8$´ R8 ¸ÌP¨PÃè0/Z£†Y.#/²ÄLl^ì&>bm¿0C”m{Y² M+N${fkC"`Íq>:Ÿ…é¶í°AÚ—~Gy A$H¬&½»—ÀÈ8Ší:¶ö+‡I F"ÆÀå…U1w.üO¯£Ë0÷jêÏGl`^ª5MHm)ÞT¯¯…мÑI“7¨ôÑdÆ+00#/Ú?¨¨Á¿j5Q&Ûb©DmIkEuª×+/ÕÝnUÔ)51­c>»ªæ2¼–š…ÊPJ¤}ibÒEŠ ÀÀ¸dË#/E…J!ì–~ݳAKQŸ¦å.¸ßÐÍ¡­‹>mŒÄG©m@Û1q?º5[cJ¸º<j*(àÉZSR•[(ñ@Ùƒ’#,‚*!wNRš›¡`€(dX±Þ'’#*± ¬X ëàÕhÇMî¼™gg+ÛÎ×—;F2•Ñšö•å%ãrÉ6ºíÚ Ópó/ÙËTÜ’ÑpyŒ ¼£ížq¦V‘®Q*Ú”¨'QÕFÌ„Îg›Òyè4%CÕ/3kš¾¦ýM£G½y«¾=À×:í¶û—­®¼‡­;”Ú6ù5»cM60ŒDlcŒHàÑ…Ÿ×yÀ‘xjpØŒòu·u#ªDèã‹i4Øóôê#˜Þ(È¢'DÍ! xCÂc  êG˜Æô’ŒRÉÖØYU&Bà&&€X‚A‘ ™Xš–È,C“1—’D’I"s¸*‡KPõr¾ù0§B‚i¢`#JWÛ¢ZkXHª×§µ²ž‡òcn;ò;HVìûàNîîCÑV?ÙP÷´LGÃO‚1L~ÜãõdS!»HÏ(0¯x–gq7Ë‚Û²“ÓÚ@AÉùœÂu' ›Ð²JªAƒ¿  ››°d=…,’–’áŒ3Ê‚t‚&ž!ž~b!ï>3'†ý…Y5‘X»¾ª-xýšéû7¹ŠÑéwŒdÅgãá匪(ßoàÑ$#lç„÷÷`Gæ¿#*¢:ïÄi1#/šCKè.󅶤‰èý€­ ›Oó4D}ô~‘EAI(>E²P™åBÝ´¢R¹ºC6Ó&T6#,š"J‹Av">èn} ®¸#ÎÓ˜eªÐ‹êôž»¨›FuÕ~Ú¿î—Ôú³0NÐãcÔ)¥®l«¼ç¾ª2(B°]êË>TT·ÀdfêAiH2ˆH-H£ÈèÔXwiÇi<eº»äÐú½I7®Ð6¢j̨æïõ)‘’øB‘E¤÷T¶›–Qï8vþ‰›õž†9Aƒqb¥¤L½#/,ƒäÖö°[#,ÒÙ£@¨ï÷üü@“/q¥‰8#/±çˆÐqÂw´-7Òb»eRj93>þ©§º Q<: ÇàôÅ"2@Db`ÓíB÷ømEä̾×ðû7ÁDƒƒh>'ÂÃßc¦ϧãûlá ò×9¦%Éõºgá÷FÍqØéÍAªé¢Ä`C$Smn¬Éë#*;NÔèÖ{Òw‚dd5î`\ÀðdåÞ¸"#*ƒS›±ñ Þ#,ÌåT˜H%ó¿h¯—>ÚÝM;½í/—QD9äÊðìk#/¼ûáÜãXëÆòFtd,kRÇ£œ”ˆm²YÜõ†ÞÆÙÞD^ñeyz>âª4"RØÓu´*é™ákYÔÏ hg6UWXu…°ÓAI  …")#,—[Þ˜–„©#_C+6‚Üdÿš TTZ'L‰0ß#å4w.äÖhßL 8Æc7)•%0æ™âV*TÌ€2N$oJ f(n’ÐQÖBâ¢öˆZãfùÍ#, G:‰æm €.jhÎÎgõ,ÌÙõ³r#,£Å°ÆÈ ”ãi8€ÔdÚ,K·Ÿ•<ÎÊ ô˜NØFzcf¶a¹êµëeœ“’Ct<’Á5åB`°’&”ÒÂ#*k#/#,ãð0¨J@bf¨F›ìR42´*ò‘>œ^#,­“a†p#*Q#/°Ü†Ú¼Œ´*=i{µ…Š˜ˆT)"©¸PÁž¶¿mSð€˜Àcb°wïÒg®»rqBë­J¶˜hbæ^X@z‡H²™©˜W¡ÆtÊb@ô§(zO/kÙÃ9÷Pí¸éƒFŒrv¡ŸZ¸v“-€¥+x¸0‹d&F955:fbZH¨™@œ“ ²Îؼ~>_î—²Þù‰mmS×L¦g:uqÑ€vXpI—Û²“,™¯Ná¿$ŒrÊo µH•ìÖÄ¥eÀ–xðžÞüp"± Ž Ñ#,Ê‘ZCCbDVÜ4%b­ Y1Še¤/BV²`’æAZ"ª”q'y˜å•°^ÀW¥™”­ŒöÝaš•˜ó#º·KAv÷†=ëy£ÓŠËÁtá0%ÌoF1ÙÒP創ªŽÒ<Ê–27×1çKeh#,bì¢Ç-Nã¯w¥ƒ*#,^kß,<Ê0há‡~Y´ï\Æ`ÚÙêÀGsjs&´… !ßH’Út˜m*XeaLà>‡ªKK{;¤ÌI©0¶Ûm,ÅÉR=s§“™iIeó»K'Ðôå±ç¶#,Œ’úŒ‰Í.IˆfáÛpÞQ{HhM)ï‡ €ïjºlCl‚oO‚ݶةhw%„^Ì Õ-²šu8‚Çd;KÙ.žõeÖψ[m0Zu-eÄ¡ÑJV ‹—Mýš’-º»c¼Ägg…8!9Àû#/UóÚ$T°CóÃÆÖçšaU»ÆD<DC$–Ê0ëN“ŠŽ,9ï4`>ƒ’γ ܶhÄ\2y”ÖgÛ2F\BÅ>þ´xXX½q-BÕuS(yÄ×^ŒNí¼'×Xªñs&âiÒtîJ¥kŽµ#/µ‘eP#(k—„+r¹Ã•U[^0V$#/˜k­é&õ`I ’¥G@8…ºŸL½(‡"ß‘kg Ì•šfÚj2­n#/)öZZXRZ:.îåÀ÷Œ=õŒ¢÷è"2pk“*Ð"ª}*eÇ ÄÂfÁÐ7§mÌtàÏÀpûõÇ~3·9B.ñ!ÁÉxuÏ8[sdÝ8|°P8o¡nI\Døéø˸Dp8o¬#/®½4i²5çRŠu#*Å8¤Ú¤<Ì@­# c,²Ä ´lÀV"„*0aª:³M±@9ÒƵ¥Ëˆ{ Ý-$]ÒA!'>wÂŽ¶³¬×a^ pÛÞÌÚÖc4/_L |œ ÊvÔ`óñãó\ó†4æÏ:äa4µ‘ÏY¢ºÙÞPìÓR3Cj¦:ØÖ+.™&.×Û®¼uÞ…ÒÜ )UÁ9M(è=JdÝ9$Ÿ§_çøÊ4øm9§M¡KÙÃùæ­¤ý=4sÚ·ÝÐ>ÁPb@P“sexÑÝÝGÀuóXx맑65;ŽSã? TÔÚ‡ÓŸ,Ì‹ž“ Sz_.B=±É5Sœ<’GÁ,-&jeJÁ³†pѼ˜,LŽˆHd–°å Š–›lìþw¦”úmDÓÀª²¥È,PÐö.&Çã_—MÑ l:0‰Ñ¡V‘A ßJ,y#,Žš¡BPtžlÆ\bäù1)’ø½›¹mÒú5eaFUYK·Wiêö¡˜K#/œò±ÍSõÂv"roÏ6Ož ç4e;Ñ@L4ÀÓH§ˆªÓ˜6ã‹ÑŽÂhÙ9’‡h ôZbmÙ4ÐÖPå½1¼¶çu ^& w0¶YÆ¢/LÜÌÕ„Rï;&m¦ž ®íxnòfœ‰]-Êåë#,Ì#*ük4Ò&§n½§«¨&³[T¶¥‡O]nN2AË«& Ý«&šoÆBÃGå ÐË®‘M 3w†ÙqX‚ùaÒ7ˆâD²žwd,á´K D#,U)[ÛŽû‘Ö$„ƒ@tG¶.M"]Ĺ5vmM"ÐjvÓI13?~HâÓáÛ#,µ"GÁ†žjWF/#/#,K4m Šæ©CU &Æ;À÷nÀ’øY‡^I­F#*¬áÍ0Qds°0bšøP›Ã| 1‹šÆá®–ÄA `Œ‚ ÜЕa¨»5IBkØfM7L¡ ŽAŒCN‚-.N³03'ÓðòäÇ—vk¡¼gt;Ï{’Œ¬•&ᣙbª%#*˜8é’°¡qŶfj61AHP¥)K‚ÀIŽ4o‰ÝÌÌèÙØ« Ý Ä°Ñµ ŠÛXMd9”°ÚD¸q43‰1‹¡P,pĨo¿…Xä$#V’2®[läÀM£”‚1`ºSFΦ‘ÝBFÖêJ€l#/.hE€Æ®•Õ)1 ⡘”4Eß#/psÏ{¸ãàÄF l4Ð ä3tÃD²Å°œ V°†v6ª0*ÂÛ1¤T°ÎÐÑQdn 1*‚†ýy>^w²Äsìp èŠƒ(¢¢"€É]¹Ï»^Šš×vZ¯çë“Ô7#,?w5Š ÂÑv","B@#/‹ kP´UC (#*¶ß€ãVz 9‘—:郸¨\€q#,¯ŠÎ+H t_¯æ¦ê–Òü¸ßL…*ŽH†v_¨²˜Ò‘6Qš¶ATA³/°Ú»ÀœÏ–fqÏyy,37êi1ÔyMŽ)ôX#,&A¸Ñ)õWVª”©±—fM†g;» k—d \¨C9È×óK5òíé]yë«’ªŸU¨‹ú ›£ g.e+ÙH¬ˆ¼‰¾¤9_®°—ªd ¢‘†’œ)7‡vpÒƈ?–Ýé¦NÁ¡o\I}×,±Þ\©‡+,YÄL"«U? ,“LwA™)å+H¾’&™2wäívÇÜÄsVš<º;ÛGìsuÔˆpœa€Í#*µ+öÄC”¸Ù}5S±n‰^Fãs¯mÍkÞç¬Örâ(².nôÎ7ßVeŸ9•s> (A=´`ˇà|Ôè9e¾Dʳ9ß^Ø¢{¢#*ÙöÁ¾ë¡¿78ÃVH'Ö@H3‚5RE<Rå­j4S‰Á‘!&}Ç…}çlÜÌc¶êà;IZ0i(Úc HQ;d‹^“!2Jf¼KNñ¹5æîÑš‘]ço^p•éÓÕÒ¹q&8å ÔrK0Ä$(,ƒM4¬´[Êšõ<õºæIK³[n·¶àÛPÒI=ðÏ®,ੲ¥=+K8Ö\†¸í„òàifní5aÅÑŠÌÌÑÔ«3I8…`È2!ñ)†Ç èìíÏ·¿ÌøÃ'†­{‘#/Gè€ôÁQìG´6›Œàþf¡$Y9)“絶ŠªŒ@ˆ4:HñÜÂÛ ‚­#,¡]’&!’˜W‡Ä:o‡(nB¥šë"h¶#/:x‰A¼ ==6 ÌåÄ’ÞÇb<YiÞöÇqœð±Ûñ‡ ù¬!êÛÏÊ+uw}•.=~¤žŒÎ‡D‹ú²ní:˜uŸ¬Ù4(PøNk±ƒ·e†Dâ¼äÔã#,T#NþìLɦ•—`píݨÕrd.0)2å“-ö&§æÊ™“n±“w,7¸ù ( ›XMÔ " íŠ2Š>õ¶õÑÖ¢šº±«ŠðIAtÀ¹¡´æQ4pÌ|l¤µE—-" 1ÓËÍŒ6‚ò@61ý;}¿K4Úb©¬DõÐR?i¬ã†tÈkÔÒŒ™Ò²iw#,öž ?6PŠ ¿T%R+­~¥mÛf[M$¢±l­­)FM¶Mi•÷f²[^š×,0•*(¸ ¬  04ˆ‰r#iQRö0YV¢È‹d‚·HŽˆD€°B&h¯LPw($öeèÊŠ•!tËþŒ#*ìTCg†U·¸ÔÀêûlÎ,"`ÈŒŠÀ#/B#*ê½ü|9|_ §Ø¦¥ AR†ü.ã0Ô,¢²2Œ‚¯;~{ƒVúÃñצvž¨ãžÏ,kŽ[·Xé#,âèшÍÁ±CÖ<yÖ•ÄêÉ©î$高µÌbΚˆJ)c€p 0dX„F‰šB­J#,…j\¤j±D€(ÈÙ\Mp¨‘2YM1:ŒJ±ªÀ²Ó.[jå/[dÚ®ÎÊéWVܼݮ´U<ÜFÛªMkh¢é\@ë9·œ¸oÓdVm6ð¶À8` •ÍU⥅ 72,Às4µ§Ü€=ÁÔñ=<^Ia 1V=¼ý¾êfnNf0šƒ*Ì‚BšÃzÖL‰_\lÜ3ÄžHLë¡ÓÌ;ç›.ƒ¹Ü@ä%‰#* Åó@V‹ºrÙ˜oôÔ%ß2ɢϊ¢Íô0€öP$Yu©%!((ŽY!C4ãRØ/¶ÔQ†ÿ17w´ð›,@#*-„n¨äBŠIóüš¨ù’c–ÁÆ÷€ü ÇÇNƒ|0V!<ÇAD¹ã;04U×;‚‹RIA@ ZlTj"¥xŠíêÌJL°XéùoÄ,%Øþ¾XÀÖÕ—Žvq1úÌÎ DßZ#,Šó÷Õ›žGêù@ý ö¢€àpŠÒXb’ ÒS*œ9ÙO߸An‚¹ë9BPR:¤Iû›OR|0§{Áà{ %àåãròI¦³m¢™´š’•K*™1¶%(eªØÕ˜k ¡6Vb«IWð4V®3˜¢2$€ÅŠWž „tó'¦8±UÑ‘ <¶#aà¢N¾™¿Ï59¡¢Þt!¨Ý—GVƒÔ íX!°M¼°îÈ#*‘ #* 0}ÑÑŸ28O¯5Kxléön¤œùÚ*‡Á´OYﺂb ª#*¨íbü3×Ó $:N~;øŽõøv–õ×­¹7Àk>½f9”¸^Œ2j•h«Íø½>nÏí©Èk ‰ÛDÕ3£vwwHƒraÛ… joJ ÜPmÈ‘«%—rX>tDÙA«”á ðÑÇH³¤1D’WÎÂ#«ãzÖÄ&‡¤%ÃÐÖ`A•XQ[ÔíÇ1ÂI›`@éi“BJZ·ÅXâÜ ˆÁ¨kÊÄYK’hHM…í£¶RÀÓm©Õ“‚p6¡ÈAH#* ®#…¹CyBUË(nCMdÍ5¡ lˆ˜.éÚîôENzé ! ;BÖ‹Fˆƒè2²¹J5 ßä­h`}OF´·ZÓ„¿9`3ù­“d]S“æX¸@5$×Ûèz”²Yî+¡gwB0T¡W¾ÝÿE êcDR1‚M:î?h*{;!â‚øxxi&;ˆ!¸ Š# CG4U&ç„z.–7ü#Z|<å#*^þó³Öw†#/¶*y25Päx(Î+4S(•ñêöù‚ß{aˆP” • ¤TÄ–÷ê}{~yõO·õô2tª“;@-œk4©#/S°ÛBáÞ—g?œœû5fÆÛj±¸”1ŒSfµË<gï?“‡¿wÓÃÛ¹TD*b!p"7sø䊼À¤÷€Ovî»ú.óRtjû;[u\#,›DÔ<€ÀP¸öÒY³^óüô5Ôícš÷y‚çOÞHX´.…>Q´þ;Xˆ«¨vÅ•x(ôÓk, N½ÚÓk5ý”Þ¯«`Hd£3=uÔFÄhÒnuÝrF$Š"ÁJ.*(KHS>bSv\—Š¥ÛNRQ´¥”a¤6ŒQònÚ,äl–5 µ&Ò!.n’K&Æ”A#¿ …G´ýiÚ$ Z†âÛ¶}^ãÃÆQAEWȯ¶Ç‘‚ög¬< +5L'œÓé} §¤çÔ__áb,–Òj•f6”²Ú È‚#,Á|#,ÃÔ‚tÈ„„,HTjR66!K2U6üý¯Ñù‘Q¾ö«é¿‘†‘hÄØØj™¶*Åe)RªyÀ>^®üf DEØ4aú#*ˆšþÈJZá¾{‰™…"ò!’žLâ™Á5$`äNPd2Ò5EEŒScXZÊØ¢ØÙ‘‹c+M(¶h1=7ÚMµ "@ˆg —€„^§ù å~‘TØ»ü:ÝAçú~ùw_q$ð#*ñ½aÅ£'¼}›êÙS^eMW!aWÛ²’b|á ˜7‡`á"F=¡«Á®´-ÌQÓIŽ½¨¾'¥Ï¢}´ÕxÛô^ö T©mŠ6ûÎWö3û¿:$Š›ò]ì­ö)0ï €PÞÈPŒXD#,ÃùPÞ›:5ñö`-1¶ ØõªlúrAÎÈ™ )îZ€B„‚ô#/&» ‹çÑ·›Ö¸¦µ&®nª‰kIe¦u6W¾íå1­¯V1!s[}6yNÍAþ$6PF…`65‘/*4øÐ #4ˆÈf÷Ø¿M¼¿4~iÑ󬌘eë„ÝáË^ *I¯Ni`MÄÆhvø([;3‰iHÚy—ËíÈ+«`šŸ”"MÎ%«YkfJ8Ô™§óÑñEËz¯‹{SßÎãÿm$sÒÄ}²fh‡ä#,At±Ì~oÀE#/A(óóm¾Y}¼nÉAªY¦•$%"£-ŒTPj#j“j…-û[oµ«ÆV©1‚¬Š 0ˆÏ󧳶ÎÙf„‘¸’)THÂmB®¯À.mˆ±„^q°ˆš6™²AòvîC¨T#,úÀ=ŒúãžõÛ²ô;®:‘Hÿ`‘ W–ѪŒmAjPª4&Úl±±V£)k6¿n¿!Ã=:›üݽ´ªË%$å5öãùYõB†@ÇEõ9ÆÚûÚk‹ox„‘µ%)”p‹,*²Ä¿H ð7;ç‘V"´¥·÷žIdní™bJ8,,ŒN(&xݬlÁÉÑUÿ³² ¨ØØÀ;!…^X¯:×Mã­ò[¬Òjh¥KzÍ…vÓ»6»»+ƼÞVº¦Ñd¶ôÖ䨷›ºÊnÌÊ®¹»j*çjl™e«Ë»i“k»«»µ²l©*dJlÚCE„ˆ#/1rR,$0uyvºr¯"o%¶a¦õåÄUJilš“*UéZê×AEÝ@…°‹$AÆ ‰#/$R×®î[µÝºË[.šé+‚"g\6<Õ0 (ѯhFÑöÕÊ6'î%øI7øƒqd8о4d-‘QŠ ™’1À*ˆ’þ:"9‡ôokÌÜ1Ãp¯àbÛM$CFÔI7œb€ÃP8ÀÝã³ÄÞÜíuêÓªæ‹r1îEÛün_¶à†Ô‹˜Ñ|JžÏ—|óo ŠvpáŒ#/fo‰¬7 ƒ•)·uF±±êÜn%Ä…»­ñãÁöþ¢Ó#cÔ‰¡ª©S‹¥ñ:3¬[À¦³M4ÀeÂßg‘™‡®B†vÇœA$QGÊ)‰Ä¼.#,õêLqá)Ñ®b~ l"‹±$H; Ø`ȵR] @ÝÒbz}7˜º²"îü‹ïÊIy#*ˆ;r¿Õô:}ÒV]×J“×[Ø7ëM#/ØvòÜÄÜï´G#†˜G¼‰4û}áÄÏY5y7jÀùE’ hŠTp7ÃmuS©ï5ps.1û§¬–[!P?s°ì\ø0†”2|З~¥~ÈfÒHý´V0Ô䎦蔤OTê>Ä¢qfª›”ÈÙAJÒu2Ø*Ø„Ïq!¥µQ{†´Ìö'X›GS„½ºÙ€Bˆé†G%±Žß!®ÔÙ´“¦¬RòÒ4S*M¢¯┦h"QQ‹V!¥pýÓ‰«Îùçž_æJÉv˜ÑÑÉ#±U¬mœáÖA.îqµÿ/£˜m‘^hΙ-S¬ÔgÌÑÐB»{œ'9­—[ýô!D¹kšgÏ2Žë-“=Vmá6[dS)„Õ#C“÷$ ¶""³=ÕvÎÖßÆ[$“­…ŒGX ÒÿXÕûê«À0 ÚˆŒ‹G¡[eopŠ®¾)ã¾”(‡ÜØç#*p0a9QõdìJgÜO*Óc4ÃŽ˜v+iã#,nlA‚rËCzY”Ê-4\Ž!!Òx£–»ò“pú™²À’˜ccò4s·ŠÛYø€…cïIÊÁ##Üj/´yÒq^’ E0{ag3´òöèd@Þæe­¼­§²Q½Vü½ä;¾ÿmµ`4Ö%k¤ûlî<b”º(‰>Üà„Ð?#,_Àx€ÈA6Ídméˆ,¤Aê#*kßÀ|ÖY…<ò^õ”€„qqÝ3æÏ·[ù¤üw¿NÝ€|‘ eyô5 lT&¯×aVÑgöÿèÿåÿwýÿüÚ¿øÿÏÿý¿Ãþ¯ùÿøÿŸþ#,–]ÿòéÿ·þ?ñÿÏþûðúýßFñú>Oÿ??ÓÙùÿãü¼ŸþïòÿÿÏû¿·ü¿û¿þ_ôù9Oý=/‡ýßóéÿ§ÿîíþ­ÿŸþ}ý?WÝöSæPû~dÀüCðˆóð?*&J^!d$Ì«‡ötŠ¤#¼…AÜD¢#*áÁª`ñ”ÄJÕ‘q?èdÐ'÷$‚¨¨CCtºŒþ£þ@ž©îëHfgÕ­óÚ›kð*ºÄ¢9g\„‚=Zí.Í6ˆk3’BšÌAÄFÙ`þ‹<8ÞÊàY:Çü7ïÚ™›J š¡ý‚Û¡â­ÄG«ûÉî‹þ´c¢FG¸Å.f;k·½î?Ñ[›°TŸóNXs‘Œ÷rûm1¬öæS¬€½ z®#,E˜£ëý¸ÏV¸ÿ|úŽÙÔŸéð Žg¹gõ_Ï1x·¸QCâUË*À†˜ ÁþëJ’”X.–H‰&RHCD$­wû1ýPÜ'ƒCŽ o÷µ‹ž=ÿKáaN–&„Ìs+j²3Á[3?Úâí,{R¦¤ˆo½)žz\L¢ŒÒë!TøÞÕn(ÎJ‡—šW#,ÂŽO݃FÈ8žõ‹½¹˜ø¢3Á´¥RreºpÐÒðe–%²ØÁ ª%ƒ”>m=³z*(íZ¦Ãn­:.k,°F™ Õʉš–6‚XŒb‰bµÒa!&aÅåGÊY°²]É`Ë«vL„“‘•MÅ°×Â!bàÞŠFîîÝ4A#,hÆó)¥&%aËÞÖKF5n¡ðCA§×\ÆQê™°›=NŽîì6P®"”Å’#.H²F#¹yÛÈÌ1—CŸ®ù Û‰™ùåžN~‚¶­y”ë³y.‚u§HØÑ®Á’À¡ w!†<±DÎ-sÐõŸëVvú¨ áç‹À@ºõ›5NØ–ºµš©ŠïIdÁ:1b‘q#‚êðÂ]ÂŽ3d0UÊñóöû¡¿ªp» kÈÁUE¤™åt#,ãû}<¾ïÖGñ#,/•íNÃ4DTdôÅ#*ŒP¤ÆÜ»ºàÔÛu—Àˆ9™BFA5íwK†Ç54ÿxÒ­–#/€ø H!.wwz<ǯ°LÍ]Ölk’„‰D†½C)—˜Pߟ N¥.$ 壯åÄfgßÿœM&†a~«FN½Æ|®îÛ"ˆ°"aŸ=¶t5hl-ßÓZÄé`Ôj$ ª@”Lh¡xÜME(mA¶6Ô²fÛE²V2F’aF2#/šúnÚ»m¶ø|:Õº"xióù#/‹œüHýqURÔU¼à Š#/[N‡´ 2âS@FHÀØ)ÑÒ5áõ~“Ig·¶‹Á~¹|-p~™Æ¸˜§B¶?ðãS9>#óò­_ª’"ŒøˆuÁ0W^ÎŽßðÉËå’´]Lô¢aͲ6r]ÔCã#/¿÷OòÂ>‚'Ëû}à ÝÇZBwn.7ÅPJâ„›‚t€;35v礀uÙÅ+,mD2€HÎΕ=ÛCéÓËmO˜ÏFœè‰óÔnñó˜Ú”6aƒ(idÇj¾V&è#,³QÄVa~Ú-€Ÿu›w…,øÍÁ [¢²ZûºWØf %¤ßÝršÑ¢ß·Í»,kx´[ëkš’±ô5]5£ŶôÑ«ÙjÞ¦µ&Å Ö¯|Ö¹h4Â’ O?fóL4ë'elÖæôP8LÉá¡5EiMŒþZéÖÜÿÎPÇõ‚s’) ÝD#,Ç{£V.xŽ ¿$&Z ÷øð7‰gÔ=ñ1^×æ^í©륣€P\‚wÚt‡¢ýÑPh5É@$gY¼ti¡oøý“¿Ãì”têzUÞ¡©ö‡1|¡u?±€Qn*u>SR?ûb«¬#*P ˆ"A‘gMr=8m»¶¹²Ú²[i™®ݵ]–¯’Å6jM{^Õ­~‰mH¡(9#Þ{;>¿–šÈ¶|ÄÕ„éÝïOz/§­£îùºiÚf_-?{Öq 2c®k$Šz¢|eˆ2Ýø‡åÿ¹Cóm½ÿÞçû·…JÐx^'Å$‚ÀYÿŸd#/B#/ÿÚ%MdÃßû©ÿqÿã#*H*ž°C.¾¿ü'g/ýí£ÿ˜\‡ùòeÐpØ,òÅh?ññ‡þ_îm~…ú|Þÿ±ØiæÐìŽ\Ä<éwtzñã‡mø½N0ØzK ½þž#;â3Þ8×ÿ-§×æ:ÿî2ð¤ý1ûˆ—ŽQH@ü¿ò¥ßï—ùX2)Á†É“øÙïóÚkÿŽ¶wmá‹p¡]DÝ«þ^Á¿#*Ê =þfb~-`†¸©q$ BßÆ¥øhµœ•ÛÄ⨊gßf«…ÆY̘wÈânÓ§m3 ÊÊÇòç,Má†/-„±¿Ñ8¨–¼­§0aw<~_o,Áм²L¸ÙB·9Á—††Š$\ 0Zpá¬8Cè Ãr†¾‚§@ùdyòöΰM…Mð„vE½Rh{Ìx¶’HÀ„œÃ‹×³g«gìÿ™¦çñ?oê5~oÛÿ‹¹"œ(Hní ±€
+#<==
diff --git a/.gitignore b/waflib/.gitignore
index 8d35cb3..8d35cb3 100644
--- a/.gitignore
+++ b/waflib/.gitignore
diff --git a/Build.py b/waflib/Build.py
index 1afcba6..1afcba6 100644
--- a/Build.py
+++ b/waflib/Build.py
diff --git a/COPYING b/waflib/COPYING
index a4147d2..a4147d2 100644
--- a/COPYING
+++ b/waflib/COPYING
diff --git a/ConfigSet.py b/waflib/ConfigSet.py
index b300bb5..b300bb5 100644
--- a/ConfigSet.py
+++ b/waflib/ConfigSet.py
diff --git a/Configure.py b/waflib/Configure.py
index d0a4793..d0a4793 100644
--- a/Configure.py
+++ b/waflib/Configure.py
diff --git a/Context.py b/waflib/Context.py
index bb47c92..bb47c92 100644
--- a/Context.py
+++ b/waflib/Context.py
diff --git a/Errors.py b/waflib/Errors.py
index bf75c1b..bf75c1b 100644
--- a/Errors.py
+++ b/waflib/Errors.py
diff --git a/Logs.py b/waflib/Logs.py
index 2a47516..2a47516 100644
--- a/Logs.py
+++ b/waflib/Logs.py
diff --git a/Node.py b/waflib/Node.py
index 4ac1ea8..4ac1ea8 100644
--- a/Node.py
+++ b/waflib/Node.py
diff --git a/Options.py b/waflib/Options.py
index ad802d4..ad802d4 100644
--- a/Options.py
+++ b/waflib/Options.py
diff --git a/README.md b/waflib/README.md
index c5361b9..c5361b9 100644
--- a/README.md
+++ b/waflib/README.md
diff --git a/Runner.py b/waflib/Runner.py
index 261084d..261084d 100644
--- a/Runner.py
+++ b/waflib/Runner.py
diff --git a/Scripting.py b/waflib/Scripting.py
index 749d4f2..749d4f2 100644
--- a/Scripting.py
+++ b/waflib/Scripting.py
diff --git a/Task.py b/waflib/Task.py
index 0fc449d..0fc449d 100644
--- a/Task.py
+++ b/waflib/Task.py
diff --git a/TaskGen.py b/waflib/TaskGen.py
index a74e643..a74e643 100644
--- a/TaskGen.py
+++ b/waflib/TaskGen.py
diff --git a/Tools/__init__.py b/waflib/Tools/__init__.py
index 079df35..079df35 100644
--- a/Tools/__init__.py
+++ b/waflib/Tools/__init__.py
diff --git a/Tools/ar.py b/waflib/Tools/ar.py
index b39b645..b39b645 100644
--- a/Tools/ar.py
+++ b/waflib/Tools/ar.py
diff --git a/Tools/asm.py b/waflib/Tools/asm.py
index b6f26fb..b6f26fb 100644
--- a/Tools/asm.py
+++ b/waflib/Tools/asm.py
diff --git a/Tools/bison.py b/waflib/Tools/bison.py
index eef56dc..eef56dc 100644
--- a/Tools/bison.py
+++ b/waflib/Tools/bison.py
diff --git a/Tools/c.py b/waflib/Tools/c.py
index effd6b6..effd6b6 100644
--- a/Tools/c.py
+++ b/waflib/Tools/c.py
diff --git a/Tools/c_aliases.py b/waflib/Tools/c_aliases.py
index c9d5369..c9d5369 100644
--- a/Tools/c_aliases.py
+++ b/waflib/Tools/c_aliases.py
diff --git a/Tools/c_config.py b/waflib/Tools/c_config.py
index d2b3c0d..d2b3c0d 100644
--- a/Tools/c_config.py
+++ b/waflib/Tools/c_config.py
diff --git a/Tools/c_osx.py b/waflib/Tools/c_osx.py
index f70b128..f70b128 100644
--- a/Tools/c_osx.py
+++ b/waflib/Tools/c_osx.py
diff --git a/Tools/c_preproc.py b/waflib/Tools/c_preproc.py
index 7e04b4a..7e04b4a 100644
--- a/Tools/c_preproc.py
+++ b/waflib/Tools/c_preproc.py
diff --git a/Tools/c_tests.py b/waflib/Tools/c_tests.py
index f858df5..f858df5 100644
--- a/Tools/c_tests.py
+++ b/waflib/Tools/c_tests.py
diff --git a/Tools/ccroot.py b/waflib/Tools/ccroot.py
index cfef8bf..cfef8bf 100644
--- a/Tools/ccroot.py
+++ b/waflib/Tools/ccroot.py
diff --git a/Tools/clang.py b/waflib/Tools/clang.py
index 3828e39..3828e39 100644
--- a/Tools/clang.py
+++ b/waflib/Tools/clang.py
diff --git a/Tools/clangxx.py b/waflib/Tools/clangxx.py
index 152013c..152013c 100644
--- a/Tools/clangxx.py
+++ b/waflib/Tools/clangxx.py
diff --git a/Tools/compiler_c.py b/waflib/Tools/compiler_c.py
index 2dba3f8..2dba3f8 100644
--- a/Tools/compiler_c.py
+++ b/waflib/Tools/compiler_c.py
diff --git a/Tools/compiler_cxx.py b/waflib/Tools/compiler_cxx.py
index 1af65a2..1af65a2 100644
--- a/Tools/compiler_cxx.py
+++ b/waflib/Tools/compiler_cxx.py
diff --git a/Tools/compiler_d.py b/waflib/Tools/compiler_d.py
index 43bb1f6..43bb1f6 100644
--- a/Tools/compiler_d.py
+++ b/waflib/Tools/compiler_d.py
diff --git a/Tools/compiler_fc.py b/waflib/Tools/compiler_fc.py
index 96b58e7..96b58e7 100644
--- a/Tools/compiler_fc.py
+++ b/waflib/Tools/compiler_fc.py
diff --git a/Tools/cs.py b/waflib/Tools/cs.py
index aecca6d..aecca6d 100644
--- a/Tools/cs.py
+++ b/waflib/Tools/cs.py
diff --git a/Tools/cxx.py b/waflib/Tools/cxx.py
index 194fad7..194fad7 100644
--- a/Tools/cxx.py
+++ b/waflib/Tools/cxx.py
diff --git a/Tools/d.py b/waflib/Tools/d.py
index e4cf73b..e4cf73b 100644
--- a/Tools/d.py
+++ b/waflib/Tools/d.py
diff --git a/Tools/d_config.py b/waflib/Tools/d_config.py
index 6637556..6637556 100644
--- a/Tools/d_config.py
+++ b/waflib/Tools/d_config.py
diff --git a/Tools/d_scan.py b/waflib/Tools/d_scan.py
index 14c6c31..14c6c31 100644
--- a/Tools/d_scan.py
+++ b/waflib/Tools/d_scan.py
diff --git a/Tools/dbus.py b/waflib/Tools/dbus.py
index d520f1c..d520f1c 100644
--- a/Tools/dbus.py
+++ b/waflib/Tools/dbus.py
diff --git a/Tools/dmd.py b/waflib/Tools/dmd.py
index 8917ca1..8917ca1 100644
--- a/Tools/dmd.py
+++ b/waflib/Tools/dmd.py
diff --git a/Tools/errcheck.py b/waflib/Tools/errcheck.py
index de8d75a..de8d75a 100644
--- a/Tools/errcheck.py
+++ b/waflib/Tools/errcheck.py
diff --git a/Tools/fc.py b/waflib/Tools/fc.py
index d9e8d8c..d9e8d8c 100644
--- a/Tools/fc.py
+++ b/waflib/Tools/fc.py
diff --git a/Tools/fc_config.py b/waflib/Tools/fc_config.py
index 222f3a5..222f3a5 100644
--- a/Tools/fc_config.py
+++ b/waflib/Tools/fc_config.py
diff --git a/Tools/fc_scan.py b/waflib/Tools/fc_scan.py
index 12cb0fc..12cb0fc 100644
--- a/Tools/fc_scan.py
+++ b/waflib/Tools/fc_scan.py
diff --git a/Tools/flex.py b/waflib/Tools/flex.py
index 2256657..2256657 100644
--- a/Tools/flex.py
+++ b/waflib/Tools/flex.py
diff --git a/Tools/g95.py b/waflib/Tools/g95.py
index f69ba4f..f69ba4f 100644
--- a/Tools/g95.py
+++ b/waflib/Tools/g95.py
diff --git a/Tools/gas.py b/waflib/Tools/gas.py
index 77afed7..77afed7 100644
--- a/Tools/gas.py
+++ b/waflib/Tools/gas.py
diff --git a/Tools/gcc.py b/waflib/Tools/gcc.py
index acdd473..acdd473 100644
--- a/Tools/gcc.py
+++ b/waflib/Tools/gcc.py
diff --git a/Tools/gdc.py b/waflib/Tools/gdc.py
index d89a66d..d89a66d 100644
--- a/Tools/gdc.py
+++ b/waflib/Tools/gdc.py
diff --git a/Tools/gfortran.py b/waflib/Tools/gfortran.py
index 1050667..1050667 100644
--- a/Tools/gfortran.py
+++ b/waflib/Tools/gfortran.py
diff --git a/Tools/glib2.py b/waflib/Tools/glib2.py
index 949fe37..949fe37 100644
--- a/Tools/glib2.py
+++ b/waflib/Tools/glib2.py
diff --git a/Tools/gnu_dirs.py b/waflib/Tools/gnu_dirs.py
index 2847071..2847071 100644
--- a/Tools/gnu_dirs.py
+++ b/waflib/Tools/gnu_dirs.py
diff --git a/Tools/gxx.py b/waflib/Tools/gxx.py
index 22c5d26..22c5d26 100644
--- a/Tools/gxx.py
+++ b/waflib/Tools/gxx.py
diff --git a/Tools/icc.py b/waflib/Tools/icc.py
index b6492c8..b6492c8 100644
--- a/Tools/icc.py
+++ b/waflib/Tools/icc.py
diff --git a/Tools/icpc.py b/waflib/Tools/icpc.py
index 8a6cc6c..8a6cc6c 100644
--- a/Tools/icpc.py
+++ b/waflib/Tools/icpc.py
diff --git a/Tools/ifort.py b/waflib/Tools/ifort.py
index 74934f3..74934f3 100644
--- a/Tools/ifort.py
+++ b/waflib/Tools/ifort.py
diff --git a/Tools/intltool.py b/waflib/Tools/intltool.py
index af95ba8..af95ba8 100644
--- a/Tools/intltool.py
+++ b/waflib/Tools/intltool.py
diff --git a/Tools/irixcc.py b/waflib/Tools/irixcc.py
index c3ae1ac..c3ae1ac 100644
--- a/Tools/irixcc.py
+++ b/waflib/Tools/irixcc.py
diff --git a/Tools/javaw.py b/waflib/Tools/javaw.py
index f6fd20c..f6fd20c 100644
--- a/Tools/javaw.py
+++ b/waflib/Tools/javaw.py
diff --git a/Tools/ldc2.py b/waflib/Tools/ldc2.py
index a51c344..a51c344 100644
--- a/Tools/ldc2.py
+++ b/waflib/Tools/ldc2.py
diff --git a/Tools/lua.py b/waflib/Tools/lua.py
index 15a333a..15a333a 100644
--- a/Tools/lua.py
+++ b/waflib/Tools/lua.py
diff --git a/Tools/md5_tstamp.py b/waflib/Tools/md5_tstamp.py
index 6428e46..6428e46 100644
--- a/Tools/md5_tstamp.py
+++ b/waflib/Tools/md5_tstamp.py
diff --git a/Tools/msvc.py b/waflib/Tools/msvc.py
index 17b347d..17b347d 100644
--- a/Tools/msvc.py
+++ b/waflib/Tools/msvc.py
diff --git a/Tools/nasm.py b/waflib/Tools/nasm.py
index 411d582..411d582 100644
--- a/Tools/nasm.py
+++ b/waflib/Tools/nasm.py
diff --git a/Tools/nobuild.py b/waflib/Tools/nobuild.py
index 2e4b055..2e4b055 100644
--- a/Tools/nobuild.py
+++ b/waflib/Tools/nobuild.py
diff --git a/Tools/perl.py b/waflib/Tools/perl.py
index 32b03fb..32b03fb 100644
--- a/Tools/perl.py
+++ b/waflib/Tools/perl.py
diff --git a/Tools/python.py b/waflib/Tools/python.py
index 25841d0..25841d0 100644
--- a/Tools/python.py
+++ b/waflib/Tools/python.py
diff --git a/Tools/qt5.py b/waflib/Tools/qt5.py
index 4f9c690..4f9c690 100644
--- a/Tools/qt5.py
+++ b/waflib/Tools/qt5.py
diff --git a/Tools/ruby.py b/waflib/Tools/ruby.py
index 8d92a79..8d92a79 100644
--- a/Tools/ruby.py
+++ b/waflib/Tools/ruby.py
diff --git a/Tools/suncc.py b/waflib/Tools/suncc.py
index 33d34fc..33d34fc 100644
--- a/Tools/suncc.py
+++ b/waflib/Tools/suncc.py
diff --git a/Tools/suncxx.py b/waflib/Tools/suncxx.py
index 3b384f6..3b384f6 100644
--- a/Tools/suncxx.py
+++ b/waflib/Tools/suncxx.py
diff --git a/Tools/tex.py b/waflib/Tools/tex.py
index eaf9fdb..eaf9fdb 100644
--- a/Tools/tex.py
+++ b/waflib/Tools/tex.py
diff --git a/Tools/vala.py b/waflib/Tools/vala.py
index 822ec50..822ec50 100644
--- a/Tools/vala.py
+++ b/waflib/Tools/vala.py
diff --git a/Tools/waf_unit_test.py b/waflib/Tools/waf_unit_test.py
index a71ed1c..a71ed1c 100644
--- a/Tools/waf_unit_test.py
+++ b/waflib/Tools/waf_unit_test.py
diff --git a/Tools/winres.py b/waflib/Tools/winres.py
index 586c596..586c596 100644
--- a/Tools/winres.py
+++ b/waflib/Tools/winres.py
diff --git a/Tools/xlc.py b/waflib/Tools/xlc.py
index 134dd41..134dd41 100644
--- a/Tools/xlc.py
+++ b/waflib/Tools/xlc.py
diff --git a/Tools/xlcxx.py b/waflib/Tools/xlcxx.py
index 76aa59b..76aa59b 100644
--- a/Tools/xlcxx.py
+++ b/waflib/Tools/xlcxx.py
diff --git a/Utils.py b/waflib/Utils.py
index b4665c4..b4665c4 100644
--- a/Utils.py
+++ b/waflib/Utils.py
diff --git a/__init__.py b/waflib/__init__.py
index 079df35..079df35 100644
--- a/__init__.py
+++ b/waflib/__init__.py
diff --git a/ansiterm.py b/waflib/ansiterm.py
index 0d20c63..0d20c63 100644
--- a/ansiterm.py
+++ b/waflib/ansiterm.py
diff --git a/extras/__init__.py b/waflib/extras/__init__.py
index c8a3c34..c8a3c34 100644
--- a/extras/__init__.py
+++ b/waflib/extras/__init__.py
diff --git a/extras/autowaf.py b/waflib/extras/autowaf.py
index a4a06ba..a4a06ba 100644
--- a/extras/autowaf.py
+++ b/waflib/extras/autowaf.py
diff --git a/extras/batched_cc.py b/waflib/extras/batched_cc.py
index aad2872..aad2872 100644
--- a/extras/batched_cc.py
+++ b/waflib/extras/batched_cc.py
diff --git a/extras/biber.py b/waflib/extras/biber.py
index fd9db4e..fd9db4e 100644
--- a/extras/biber.py
+++ b/waflib/extras/biber.py
diff --git a/extras/bjam.py b/waflib/extras/bjam.py
index 8e04d3a..8e04d3a 100644
--- a/extras/bjam.py
+++ b/waflib/extras/bjam.py
diff --git a/extras/blender.py b/waflib/extras/blender.py
index e5efc28..e5efc28 100644
--- a/extras/blender.py
+++ b/waflib/extras/blender.py
diff --git a/extras/boo.py b/waflib/extras/boo.py
index 06623d4..06623d4 100644
--- a/extras/boo.py
+++ b/waflib/extras/boo.py
diff --git a/extras/boost.py b/waflib/extras/boost.py
index c2aaaa9..c2aaaa9 100644
--- a/extras/boost.py
+++ b/waflib/extras/boost.py
diff --git a/extras/build_file_tracker.py b/waflib/extras/build_file_tracker.py
index c4f26fd..c4f26fd 100644
--- a/extras/build_file_tracker.py
+++ b/waflib/extras/build_file_tracker.py
diff --git a/extras/build_logs.py b/waflib/extras/build_logs.py
index cdf8ed0..cdf8ed0 100644
--- a/extras/build_logs.py
+++ b/waflib/extras/build_logs.py
diff --git a/extras/buildcopy.py b/waflib/extras/buildcopy.py
index a6d9ac8..a6d9ac8 100644
--- a/extras/buildcopy.py
+++ b/waflib/extras/buildcopy.py
diff --git a/extras/c_bgxlc.py b/waflib/extras/c_bgxlc.py
index 6e3eaf7..6e3eaf7 100644
--- a/extras/c_bgxlc.py
+++ b/waflib/extras/c_bgxlc.py
diff --git a/extras/c_dumbpreproc.py b/waflib/extras/c_dumbpreproc.py
index ce9e1a4..ce9e1a4 100644
--- a/extras/c_dumbpreproc.py
+++ b/waflib/extras/c_dumbpreproc.py
diff --git a/extras/c_emscripten.py b/waflib/extras/c_emscripten.py
index e1ac494..e1ac494 100644
--- a/extras/c_emscripten.py
+++ b/waflib/extras/c_emscripten.py
diff --git a/extras/c_nec.py b/waflib/extras/c_nec.py
index 96bfae4..96bfae4 100644
--- a/extras/c_nec.py
+++ b/waflib/extras/c_nec.py
diff --git a/extras/cabal.py b/waflib/extras/cabal.py
index e10a0d1..e10a0d1 100644
--- a/extras/cabal.py
+++ b/waflib/extras/cabal.py
diff --git a/extras/cfg_altoptions.py b/waflib/extras/cfg_altoptions.py
index 47b1189..47b1189 100644
--- a/extras/cfg_altoptions.py
+++ b/waflib/extras/cfg_altoptions.py
diff --git a/extras/clang_compilation_database.py b/waflib/extras/clang_compilation_database.py
index 4d9b5e2..4d9b5e2 100644
--- a/extras/clang_compilation_database.py
+++ b/waflib/extras/clang_compilation_database.py
diff --git a/extras/codelite.py b/waflib/extras/codelite.py
index 523302c..523302c 100644
--- a/extras/codelite.py
+++ b/waflib/extras/codelite.py
diff --git a/extras/color_gcc.py b/waflib/extras/color_gcc.py
index b68c5eb..b68c5eb 100644
--- a/extras/color_gcc.py
+++ b/waflib/extras/color_gcc.py
diff --git a/extras/color_rvct.py b/waflib/extras/color_rvct.py
index f89ccbd..f89ccbd 100644
--- a/extras/color_rvct.py
+++ b/waflib/extras/color_rvct.py
diff --git a/extras/compat15.py b/waflib/extras/compat15.py
index 0e74df8..0e74df8 100644
--- a/extras/compat15.py
+++ b/waflib/extras/compat15.py
diff --git a/extras/cppcheck.py b/waflib/extras/cppcheck.py
index 13ff424..13ff424 100644
--- a/extras/cppcheck.py
+++ b/waflib/extras/cppcheck.py
diff --git a/extras/cpplint.py b/waflib/extras/cpplint.py
index e3302e5..e3302e5 100644
--- a/extras/cpplint.py
+++ b/waflib/extras/cpplint.py
diff --git a/extras/cross_gnu.py b/waflib/extras/cross_gnu.py
index 309f53b..309f53b 100644
--- a/extras/cross_gnu.py
+++ b/waflib/extras/cross_gnu.py
diff --git a/extras/cython.py b/waflib/extras/cython.py
index 481d6f4..481d6f4 100644
--- a/extras/cython.py
+++ b/waflib/extras/cython.py
diff --git a/extras/dcc.py b/waflib/extras/dcc.py
index c1a57c0..c1a57c0 100644
--- a/extras/dcc.py
+++ b/waflib/extras/dcc.py
diff --git a/extras/distnet.py b/waflib/extras/distnet.py
index 09a31a6..09a31a6 100644
--- a/extras/distnet.py
+++ b/waflib/extras/distnet.py
diff --git a/extras/doxygen.py b/waflib/extras/doxygen.py
index 28f56e9..28f56e9 100644
--- a/extras/doxygen.py
+++ b/waflib/extras/doxygen.py
diff --git a/extras/dpapi.py b/waflib/extras/dpapi.py
index b94d482..b94d482 100644
--- a/extras/dpapi.py
+++ b/waflib/extras/dpapi.py
diff --git a/extras/eclipse.py b/waflib/extras/eclipse.py
index bb78741..bb78741 100644
--- a/extras/eclipse.py
+++ b/waflib/extras/eclipse.py
diff --git a/extras/erlang.py b/waflib/extras/erlang.py
index 49f6d5b..49f6d5b 100644
--- a/extras/erlang.py
+++ b/waflib/extras/erlang.py
diff --git a/extras/fast_partial.py b/waflib/extras/fast_partial.py
index b3af513..b3af513 100644
--- a/extras/fast_partial.py
+++ b/waflib/extras/fast_partial.py
diff --git a/extras/fc_bgxlf.py b/waflib/extras/fc_bgxlf.py
index cca1810..cca1810 100644
--- a/extras/fc_bgxlf.py
+++ b/waflib/extras/fc_bgxlf.py
diff --git a/extras/fc_cray.py b/waflib/extras/fc_cray.py
index da733fa..da733fa 100644
--- a/extras/fc_cray.py
+++ b/waflib/extras/fc_cray.py
diff --git a/extras/fc_nag.py b/waflib/extras/fc_nag.py
index edcb218..edcb218 100644
--- a/extras/fc_nag.py
+++ b/waflib/extras/fc_nag.py
diff --git a/extras/fc_nec.py b/waflib/extras/fc_nec.py
index 67c8680..67c8680 100644
--- a/extras/fc_nec.py
+++ b/waflib/extras/fc_nec.py
diff --git a/extras/fc_open64.py b/waflib/extras/fc_open64.py
index 413719f..413719f 100644
--- a/extras/fc_open64.py
+++ b/waflib/extras/fc_open64.py
diff --git a/extras/fc_pgfortran.py b/waflib/extras/fc_pgfortran.py
index afb2817..afb2817 100644
--- a/extras/fc_pgfortran.py
+++ b/waflib/extras/fc_pgfortran.py
diff --git a/extras/fc_solstudio.py b/waflib/extras/fc_solstudio.py
index 53766df..53766df 100644
--- a/extras/fc_solstudio.py
+++ b/waflib/extras/fc_solstudio.py
diff --git a/extras/fc_xlf.py b/waflib/extras/fc_xlf.py
index 5a3da03..5a3da03 100644
--- a/extras/fc_xlf.py
+++ b/waflib/extras/fc_xlf.py
diff --git a/extras/file_to_object.py b/waflib/extras/file_to_object.py
index 1393b51..1393b51 100644
--- a/extras/file_to_object.py
+++ b/waflib/extras/file_to_object.py
diff --git a/extras/fluid.py b/waflib/extras/fluid.py
index 4814a35..4814a35 100644
--- a/extras/fluid.py
+++ b/waflib/extras/fluid.py
diff --git a/extras/freeimage.py b/waflib/extras/freeimage.py
index f27e525..f27e525 100644
--- a/extras/freeimage.py
+++ b/waflib/extras/freeimage.py
diff --git a/extras/fsb.py b/waflib/extras/fsb.py
index 1b8f398..1b8f398 100644
--- a/extras/fsb.py
+++ b/waflib/extras/fsb.py
diff --git a/extras/fsc.py b/waflib/extras/fsc.py
index c67e70b..c67e70b 100644
--- a/extras/fsc.py
+++ b/waflib/extras/fsc.py
diff --git a/extras/gccdeps.py b/waflib/extras/gccdeps.py
index d9758ab..d9758ab 100644
--- a/extras/gccdeps.py
+++ b/waflib/extras/gccdeps.py
diff --git a/extras/gdbus.py b/waflib/extras/gdbus.py
index 0e0476e..0e0476e 100644
--- a/extras/gdbus.py
+++ b/waflib/extras/gdbus.py
diff --git a/extras/gob2.py b/waflib/extras/gob2.py
index b4fa3b9..b4fa3b9 100644
--- a/extras/gob2.py
+++ b/waflib/extras/gob2.py
diff --git a/extras/halide.py b/waflib/extras/halide.py
index 6078e38..6078e38 100644
--- a/extras/halide.py
+++ b/waflib/extras/halide.py
diff --git a/extras/javatest.py b/waflib/extras/javatest.py
index 979b8d8..979b8d8 100755
--- a/extras/javatest.py
+++ b/waflib/extras/javatest.py
diff --git a/extras/kde4.py b/waflib/extras/kde4.py
index e49a9ec..e49a9ec 100644
--- a/extras/kde4.py
+++ b/waflib/extras/kde4.py
diff --git a/extras/local_rpath.py b/waflib/extras/local_rpath.py
index b2507e1..b2507e1 100644
--- a/extras/local_rpath.py
+++ b/waflib/extras/local_rpath.py
diff --git a/extras/lv2.py b/waflib/extras/lv2.py
index 815987f..815987f 100644
--- a/extras/lv2.py
+++ b/waflib/extras/lv2.py
diff --git a/extras/make.py b/waflib/extras/make.py
index 933d9ca..933d9ca 100644
--- a/extras/make.py
+++ b/waflib/extras/make.py
diff --git a/extras/midl.py b/waflib/extras/midl.py
index 43e6cf9..43e6cf9 100644
--- a/extras/midl.py
+++ b/waflib/extras/midl.py
diff --git a/extras/msvcdeps.py b/waflib/extras/msvcdeps.py
index fc1ecd4..fc1ecd4 100644
--- a/extras/msvcdeps.py
+++ b/waflib/extras/msvcdeps.py
diff --git a/extras/msvs.py b/waflib/extras/msvs.py
index 8aa2db0..8aa2db0 100644
--- a/extras/msvs.py
+++ b/waflib/extras/msvs.py
diff --git a/extras/netcache_client.py b/waflib/extras/netcache_client.py
index dc49048..dc49048 100644
--- a/extras/netcache_client.py
+++ b/waflib/extras/netcache_client.py
diff --git a/extras/objcopy.py b/waflib/extras/objcopy.py
index 82d8359..82d8359 100644
--- a/extras/objcopy.py
+++ b/waflib/extras/objcopy.py
diff --git a/extras/ocaml.py b/waflib/extras/ocaml.py
index afe73c0..afe73c0 100644
--- a/extras/ocaml.py
+++ b/waflib/extras/ocaml.py
diff --git a/extras/package.py b/waflib/extras/package.py
index c06498e..c06498e 100644
--- a/extras/package.py
+++ b/waflib/extras/package.py
diff --git a/extras/parallel_debug.py b/waflib/extras/parallel_debug.py
index 35883a3..35883a3 100644
--- a/extras/parallel_debug.py
+++ b/waflib/extras/parallel_debug.py
diff --git a/extras/pch.py b/waflib/extras/pch.py
index 103e752..103e752 100644
--- a/extras/pch.py
+++ b/waflib/extras/pch.py
diff --git a/extras/pep8.py b/waflib/extras/pep8.py
index 676beed..676beed 100644
--- a/extras/pep8.py
+++ b/waflib/extras/pep8.py
diff --git a/extras/pgicc.py b/waflib/extras/pgicc.py
index 9790b9c..9790b9c 100644
--- a/extras/pgicc.py
+++ b/waflib/extras/pgicc.py
diff --git a/extras/pgicxx.py b/waflib/extras/pgicxx.py
index eae121c..eae121c 100644
--- a/extras/pgicxx.py
+++ b/waflib/extras/pgicxx.py
diff --git a/extras/proc.py b/waflib/extras/proc.py
index 764abec..764abec 100644
--- a/extras/proc.py
+++ b/waflib/extras/proc.py
diff --git a/extras/protoc.py b/waflib/extras/protoc.py
index f3cb4d8..f3cb4d8 100644
--- a/extras/protoc.py
+++ b/waflib/extras/protoc.py
diff --git a/extras/pyqt5.py b/waflib/extras/pyqt5.py
index c21dfa7..c21dfa7 100644
--- a/extras/pyqt5.py
+++ b/waflib/extras/pyqt5.py
diff --git a/extras/pytest.py b/waflib/extras/pytest.py
index 7dd5a1a..7dd5a1a 100644
--- a/extras/pytest.py
+++ b/waflib/extras/pytest.py
diff --git a/extras/qnxnto.py b/waflib/extras/qnxnto.py
index 1158124..1158124 100644
--- a/extras/qnxnto.py
+++ b/waflib/extras/qnxnto.py
diff --git a/extras/qt4.py b/waflib/extras/qt4.py
index 90cae7e..90cae7e 100644
--- a/extras/qt4.py
+++ b/waflib/extras/qt4.py
diff --git a/extras/relocation.py b/waflib/extras/relocation.py
index 7e821f4..7e821f4 100644
--- a/extras/relocation.py
+++ b/waflib/extras/relocation.py
diff --git a/extras/remote.py b/waflib/extras/remote.py
index 3b038f7..3b038f7 100644
--- a/extras/remote.py
+++ b/waflib/extras/remote.py
diff --git a/extras/resx.py b/waflib/extras/resx.py
index caf4d31..caf4d31 100644
--- a/extras/resx.py
+++ b/waflib/extras/resx.py
diff --git a/extras/review.py b/waflib/extras/review.py
index 561e062..561e062 100644
--- a/extras/review.py
+++ b/waflib/extras/review.py
diff --git a/extras/rst.py b/waflib/extras/rst.py
index f3c3a5e..f3c3a5e 100644
--- a/extras/rst.py
+++ b/waflib/extras/rst.py
diff --git a/extras/run_do_script.py b/waflib/extras/run_do_script.py
index f3c5812..f3c5812 100644
--- a/extras/run_do_script.py
+++ b/waflib/extras/run_do_script.py
diff --git a/extras/run_m_script.py b/waflib/extras/run_m_script.py
index b5f27eb..b5f27eb 100644
--- a/extras/run_m_script.py
+++ b/waflib/extras/run_m_script.py
diff --git a/extras/run_py_script.py b/waflib/extras/run_py_script.py
index 3670381..3670381 100644
--- a/extras/run_py_script.py
+++ b/waflib/extras/run_py_script.py
diff --git a/extras/run_r_script.py b/waflib/extras/run_r_script.py
index b0d8f2b..b0d8f2b 100644
--- a/extras/run_r_script.py
+++ b/waflib/extras/run_r_script.py
diff --git a/extras/sas.py b/waflib/extras/sas.py
index 754c614..754c614 100644
--- a/extras/sas.py
+++ b/waflib/extras/sas.py
diff --git a/extras/satellite_assembly.py b/waflib/extras/satellite_assembly.py
index 005eb07..005eb07 100644
--- a/extras/satellite_assembly.py
+++ b/waflib/extras/satellite_assembly.py
diff --git a/extras/scala.py b/waflib/extras/scala.py
index a9880f0..a9880f0 100644
--- a/extras/scala.py
+++ b/waflib/extras/scala.py
diff --git a/extras/slow_qt4.py b/waflib/extras/slow_qt4.py
index ec7880b..ec7880b 100644
--- a/extras/slow_qt4.py
+++ b/waflib/extras/slow_qt4.py
diff --git a/extras/softlink_libs.py b/waflib/extras/softlink_libs.py
index 50c777f..50c777f 100644
--- a/extras/softlink_libs.py
+++ b/waflib/extras/softlink_libs.py
diff --git a/extras/stale.py b/waflib/extras/stale.py
index cac3f46..cac3f46 100644
--- a/extras/stale.py
+++ b/waflib/extras/stale.py
diff --git a/extras/stracedeps.py b/waflib/extras/stracedeps.py
index 37d82cb..37d82cb 100644
--- a/extras/stracedeps.py
+++ b/waflib/extras/stracedeps.py
diff --git a/extras/swig.py b/waflib/extras/swig.py
index fd3d6d2..fd3d6d2 100644
--- a/extras/swig.py
+++ b/waflib/extras/swig.py
diff --git a/extras/syms.py b/waflib/extras/syms.py
index dfa0059..dfa0059 100644
--- a/extras/syms.py
+++ b/waflib/extras/syms.py
diff --git a/extras/ticgt.py b/waflib/extras/ticgt.py
index f43a7ea..f43a7ea 100644
--- a/extras/ticgt.py
+++ b/waflib/extras/ticgt.py
diff --git a/extras/unity.py b/waflib/extras/unity.py
index 78128ed..78128ed 100644
--- a/extras/unity.py
+++ b/waflib/extras/unity.py
diff --git a/extras/use_config.py b/waflib/extras/use_config.py
index ef5129f..ef5129f 100644
--- a/extras/use_config.py
+++ b/waflib/extras/use_config.py
diff --git a/extras/valadoc.py b/waflib/extras/valadoc.py
index c50f69e..c50f69e 100644
--- a/extras/valadoc.py
+++ b/waflib/extras/valadoc.py
diff --git a/extras/waf_xattr.py b/waflib/extras/waf_xattr.py
index 351dd63..351dd63 100644
--- a/extras/waf_xattr.py
+++ b/waflib/extras/waf_xattr.py
diff --git a/extras/why.py b/waflib/extras/why.py
index 1bb941f..1bb941f 100644
--- a/extras/why.py
+++ b/waflib/extras/why.py
diff --git a/extras/win32_opts.py b/waflib/extras/win32_opts.py
index 9f7443c..9f7443c 100644
--- a/extras/win32_opts.py
+++ b/waflib/extras/win32_opts.py
diff --git a/extras/wix.py b/waflib/extras/wix.py
index d87bfbb..d87bfbb 100644
--- a/extras/wix.py
+++ b/waflib/extras/wix.py
diff --git a/extras/xcode6.py b/waflib/extras/xcode6.py
index 91bbff1..91bbff1 100644
--- a/extras/xcode6.py
+++ b/waflib/extras/xcode6.py
diff --git a/fixpy2.py b/waflib/fixpy2.py
index 24176e0..24176e0 100644
--- a/fixpy2.py
+++ b/waflib/fixpy2.py
diff --git a/processor.py b/waflib/processor.py
index 2eecf3b..2eecf3b 100755
--- a/processor.py
+++ b/waflib/processor.py
diff --git a/waflib/waf b/waflib/waf
new file mode 100755
index 0000000..e22930a
--- /dev/null
+++ b/waflib/waf
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+
+# Minimal waf script for projects that include waflib directly
+
+from waflib import Context, Scripting
+
+import inspect
+import os
+
+def main():
+ script_path = os.path.abspath(inspect.getfile(inspect.getmodule(main)))
+ project_path = os.path.dirname(script_path)
+ Scripting.waf_entry_point(os.getcwd(), Context.WAFVERSION, project_path)
+
+if __name__ == '__main__':
+ main()
diff --git a/wscript b/wscript
new file mode 100644
index 0000000..d47c71a
--- /dev/null
+++ b/wscript
@@ -0,0 +1,116 @@
+#!/usr/bin/env python
+import os
+import shutil
+import subprocess
+from waflib.extras import autowaf as autowaf
+
+# Version of this package (even if built as a child)
+OMINS_VERSION = '0.0.0'
+
+# Variables for 'waf dist'
+APPNAME = 'omins.lv2'
+VERSION = OMINS_VERSION
+
+# Mandatory variables
+top = '.'
+out = 'build'
+
+def options(opt):
+ opt.load('compiler_c')
+ opt.load('lv2')
+ autowaf.set_options(opt)
+
+def configure(conf):
+ autowaf.display_header('Omins.LV2 Configuration')
+ conf.load('compiler_c', cache=True)
+ conf.load('lv2', cache=True)
+ conf.load('autowaf', cache=True)
+ autowaf.set_c_lang(conf, 'c99')
+
+ autowaf.check_pkg(conf, 'lv2', atleast_version='1.0.0', uselib_store='LV2')
+
+ autowaf.check_function(conf, 'c', 'posix_memalign',
+ defines = '_POSIX_C_SOURCE=200809L',
+ header_name = 'stdlib.h',
+ define_name = 'HAVE_POSIX_MEMALIGN',
+ mandatory = False)
+
+ # Set env.pluginlib_PATTERN
+ pat = conf.env.cshlib_PATTERN
+ if pat[0:3] == 'lib':
+ pat = pat[3:]
+ conf.env.pluginlib_PATTERN = pat
+ conf.env.pluginlib_EXT = pat[pat.rfind('.'):]
+
+ autowaf.display_summary(conf)
+ autowaf.display_msg(conf, "LV2 bundle directory", conf.env.LV2DIR)
+ print('')
+
+def build_plugin(bld, lang, bundle, name, source, defines=None):
+ # Build plugin library
+ penv = bld.env.derive()
+ penv.cshlib_PATTERN = bld.env.pluginlib_PATTERN
+ lib = []
+ if not bld.env.MSVC_COMPILER:
+ lib = ['m']
+ obj = bld(features = '%s %sshlib' % (lang,lang),
+ env = penv,
+ source = source,
+ includes = ['.', 'src/include'],
+ name = name,
+ target = os.path.join(bundle, name),
+ uselib = ['LV2'],
+ install_path = '${LV2DIR}/' + bundle,
+ lib = lib)
+ if defines != None:
+ obj.defines = defines
+
+ # Install data file
+ data_file = '%s.ttl' % name
+ bld.install_files('${LV2DIR}/' + bundle, os.path.join(bundle, data_file))
+
+def build(bld):
+ # Copy data files to build bundle (build/omins.lv2)
+ def do_copy(task):
+ src = task.inputs[0].abspath()
+ tgt = task.outputs[0].abspath()
+ return shutil.copy(src, tgt)
+
+ for i in bld.path.ant_glob('omins.lv2/*.ttl'):
+ bld(features = 'subst',
+ is_copy = True,
+ source = i,
+ target = 'omins.lv2/%s' % i.name,
+ install_path = '${LV2DIR}/omins.lv2')
+
+ bld(features = 'subst',
+ source = 'omins.lv2/manifest.ttl.in',
+ target = bld.path.get_bld().make_node('omins.lv2/manifest.ttl'),
+ LIB_EXT = bld.env.pluginlib_EXT,
+ install_path = '${LV2DIR}/omins.lv2')
+
+ plugins = ['adenv',
+ 'adenv_lvl',
+ 'comparison',
+ 'dahdsr_fexp',
+ 'dahdsr_hexp',
+ 'fast_crossfade',
+ 'formant_filter',
+ 'hz_voct',
+ 'masher',
+ 'multiplexer',
+ 'prob_switch',
+ 'range_trans',
+ 'sample_and_hold',
+ 'signal_abs',
+ 'slew_limiter',
+ 'slide',
+ 'waveguide_mesh']
+
+ for i in plugins:
+ build_plugin(bld, 'c', 'omins.lv2', i,
+ ['src/%s.c' % i])
+
+def lint(ctx):
+ subprocess.call('cpplint.py --filter=+whitespace/comments,-whitespace/tab,-whitespace/braces,-whitespace/labels,-build/header_guard,-readability/casting,-readability/todo,-build/include src/* serd/*', shell=True)
+