From 28ecf70db57828db2ca279643bf9aeca7662f35c Mon Sep 17 00:00:00 2001 From: Jack Jansen Date: Wed, 19 Nov 2003 14:34:18 +0000 Subject: [PATCH] Getting rid of support for MacOS9 and earlier. This is the first step, and the biggest in size, but probably the easiest. Hunting through the source code comes next. --- Mac/Build/HtmlRender.prj | Bin 42274 -> 0 bytes Mac/Build/PythonCore.axp | 7 - Mac/Build/PythonCore.mcp | Bin 173876 -> 0 bytes Mac/Build/PythonInterpreter.mcp | Bin 109654 -> 0 bytes Mac/Build/PythonStandSmall.mcp | Bin 349209 -> 0 bytes Mac/Build/PythonStandalone.mcp | Bin 230859 -> 0 bytes Mac/Build/_CG.carbon.mcp | Bin 49058 -> 0 bytes Mac/Build/_CG.carbon.mcp.exp | 1 - Mac/Build/_dummy_tkinter.mcp | Bin 60535 -> 0 bytes Mac/Build/_dummy_tkinter.mcp.exp | 1 - Mac/Build/buildlibs.mcp | Bin 132924 -> 0 bytes Mac/Compat/sync.c | 17 - .../AECaptureParser/AECaptureParser.py | 362 ----- Mac/Contrib/AECaptureParser/readme.txt | 5 - Mac/Contrib/BBPy.lm/BBPy.c | 456 ------- Mac/Contrib/BBPy.lm/BBPythonLM.mcp | Bin 45208 -> 0 bytes Mac/Contrib/BBPy.lm/BBpy.r | 35 - Mac/Contrib/BBPy.lm/Python | 1 - Mac/Contrib/BBPy.lm/Python Keywords.rsrc | 1 - Mac/Contrib/BBPy.lm/PythonBBLM.txt | 12 - Mac/Contrib/BBPy/PythonSlave.py | 129 -- Mac/Contrib/BBPy/README | 45 - Mac/Contrib/BBPy/Run as Python | 1 - .../BBPy/source/BB stuff/ExternalInterface.h | 716 ---------- .../BBPy/source/BB-stuff/ExternalInterface.h | 716 ---------- Mac/Contrib/BBPy/source/BBPy.h | 17 - Mac/Contrib/BBPy/source/BBPy.rsrc | 1 - Mac/Contrib/BBPy/source/BBPy_lauch.c | 94 -- Mac/Contrib/BBPy/source/BBPy_launch.c | 94 -- Mac/Contrib/BBPy/source/BBPy_main.c | 104 -- Mac/Contrib/ImageHelpers/ExtPixMapWrapper.py | 46 - Mac/Contrib/ImageHelpers/ImageMac.py | 277 ---- Mac/Contrib/ImageHelpers/MovieUtils.py | 269 ---- Mac/Contrib/ImageHelpers/ReadMe | 22 - Mac/Contrib/PythonDetector/OpenPythonLib | Bin 13234 -> 0 bytes .../PythonDetector/OpenPythonLib with NS | Bin 13853 -> 0 bytes Mac/Contrib/PythonDetector/PythonDetector | Bin 27559 -> 0 bytes Mac/Contrib/PythonDetector/readme.txt | 60 - Mac/Contrib/Sherlock/Python-FAQ.src | Bin 3342 -> 0 bytes Mac/Contrib/Sherlock/Python-docs.src | Bin 3344 -> 0 bytes Mac/Contrib/Sherlock/Python.src | Bin 3438 -> 0 bytes Mac/Contrib/Sherlock/readme.txt | 14 - Mac/Contrib/Tabcleaner/Tabcleaner.README | 41 - Mac/Contrib/Tabcleaner/Tabcleaner.py | 160 --- Mac/Contrib/mpwsystem/mpwsystem.py | 67 - Mac/Contrib/osam/OSAm.c | 277 ---- Mac/Contrib/osam/OSAm.exp | 1 - Mac/Contrib/osam/OSAm.h | 30 - Mac/Contrib/osam/OSAm.prj | Bin 71523 -> 0 bytes Mac/Contrib/osam/ScriptRunner.c | 310 ----- Mac/Contrib/osam/ScriptRunner.h | 30 - Mac/Distributions/(vise)/Python 2.3.vct | Bin 693147 -> 0 bytes Mac/Distributions/binary.exclude | 37 - Mac/Distributions/binary.include | 207 --- Mac/Distributions/dev.exclude | 22 - Mac/Distributions/dev.include | 634 --------- Mac/Distributions/src.exclude | 22 - Mac/Distributions/src.include | 138 -- Mac/HISTORY | 602 --------- Mac/Include/getapplbycreator.h | 43 - Mac/Include/macbuildno.h | 1 - Mac/Include/macdefs.h | 46 - Mac/Include/pyconfig.h | 780 ----------- Mac/Lib/dbmac.py | 140 -- Mac/Lib/maccache.py | 61 - Mac/Lib/mactty.py | 74 - Mac/Lib/mkcwproject/__init__.py | 80 -- Mac/Lib/mkcwproject/cwtalker.py | 36 - Mac/Lib/mkcwproject/cwxmlgen.py | 142 -- .../template-carbon/template-alllibraries.xml | 7 - .../template-carbon/template-allsources.xml | 7 - .../template-carbon/template-grouplist.xml | 6 - .../template-carbon/template-grouplistlib.xml | 6 - .../template-carbon/template-linkorder.xml | 5 - .../template-carbon/template-linkorderlib.xml | 5 - .../template-carbon/template-searchdirs.xml | 9 - .../template-carbon/template.prj.xml | 710 ---------- Mac/Lib/nsremote.py | 65 - Mac/Lib/preferences.py | 219 --- Mac/Lib/py_resource.py | 90 -- Mac/Lib/pythonprefs.py | 123 -- Mac/Lib/quietconsole.py | 110 -- Mac/Lib/test/AEservertest.py | 207 --- Mac/Lib/test/AEservertest.rsrc | Bin 25637 -> 0 bytes Mac/Lib/test/aete.py | 475 ------- Mac/Lib/test/cmtest.py | 45 - Mac/Lib/test/ctbtest.py | 50 - Mac/Lib/test/dragtest.py | 43 - Mac/Lib/test/echo.py | 155 --- Mac/Lib/test/fgbgtimetest.py | 17 - Mac/Lib/test/icgluetest.py | 28 - Mac/Lib/test/mkcwproj/mkcwtestmodule.c | 211 --- Mac/Lib/test/mkcwproj/testmkcwproj.py | 12 - Mac/Lib/test/readme.txt | 4 - Mac/Lib/test/tell.py | 63 - Mac/Lib/test/test_finder_ae | 5 - Mac/Lib/test/test_setcontroldata.py | 13 - Mac/Lib/test/tlist.py | 92 -- Mac/Lib/test/tsnd.py | 18 - Mac/Lib/test/tte.py | 17 - Mac/Lib/test/twin.py | 9 - Mac/MPW/Build | 3 - Mac/MPW/Makefile | 509 ------- Mac/MPW/README | 122 -- Mac/Modules/Printingmodule.c | 465 ------- Mac/Modules/_dummy_tkinter.c | 28 - Mac/Modules/calldll.c | 1194 ----------------- Mac/Modules/htmlrender/HtmlRendermodule.c | 818 ----------- Mac/Modules/htmlrender/htmlscan.py | 63 - Mac/Modules/htmlrender/htmlsupport.py | 213 --- Mac/Modules/macconfig.c | 322 ----- Mac/Modules/macmodule.c | 727 ---------- Mac/Python/getapplbycreator.c | 163 --- Mac/Python/gusiconfig.cpp | 137 -- Mac/Python/macapplication.c | 83 -- Mac/Python/macgetargv.c | 247 ---- Mac/Python/macgetcompiler.c | 61 - Mac/Python/macgetpath.c | 442 ------ Mac/Python/macgetplatform.c | 39 - Mac/Python/macglue.c | 617 --------- Mac/Python/macimport.c | 445 ------ Mac/Python/macmain.c | 640 --------- Mac/Python/macsetfiletype.c | 75 -- Mac/Python/macshlglue.c | 128 -- Mac/Python/pyGUSISIOUX.cp | 239 ---- Mac/ReadMe | 228 ---- Mac/ReadMe-dev | 11 - Mac/ReadMe-src | 13 - Mac/Resources/Carbon.r | 33 - Mac/Resources/balloons.bh | 36 - Mac/Resources/bundle.rsrc | Bin 27611 -> 0 bytes Mac/Resources/dialogs.rsrc | Bin 14456 -> 0 bytes Mac/Resources/gusiprefs.rsrc | Bin 815 -> 0 bytes Mac/Resources/pythonpath.r | 108 -- Mac/Resources/tkpython.rsrc | Bin 310805 -> 0 bytes Mac/Resources/version.r | 30 - Mac/Tools/CGI/BuildCGIApplet.py | 76 -- Mac/Tools/CGI/BuildCGIApplet.rsrc | Bin 581 -> 0 bytes Mac/Tools/CGI/CGI_README.txt | 66 - Mac/Tools/CGI/PythonCGISlave.py | 244 ---- Mac/Tools/CGI/PythonCGISlave.rsrc | Bin 581 -> 0 bytes Mac/Tools/CGI/cgi.html | 53 - Mac/Unsupported/unshar.py | 97 -- Mac/_checkversion.py | 16 - Mac/mwerks/errno_unix.h | 63 - Mac/mwerks/macuseshlstart.c | 29 - Mac/mwerks/malloc/README | 84 -- Mac/mwerks/malloc/calloc.c | 53 - Mac/mwerks/malloc/malloc.c | 447 ------ Mac/mwerks/mwerks_nscarbon.pch | 7 - Mac/mwerks/mwerks_nscarbon_config.h | 47 - Mac/mwerks/mwerks_pyexpat_config.h | 9 - Mac/mwerks/mwerks_shcarbon.pch | 7 - Mac/mwerks/mwerks_shcarbon_config.h | 50 - Mac/mwerks/mwerks_smcarbon.pch | 7 - Mac/mwerks/mwerks_smcarbon_config.h | 43 - Mac/mwerks/mwerks_thrcarbonsm_config.h | 43 - Mac/mwerks/mwerks_threadsmall_config.h | 39 - Mac/mwerks/mwerks_tkplugin_config.h | 16 - Mac/mwerks/mwfopenrf.c | 79 -- Mac/scripts/BuildApplication.py | 140 -- Mac/scripts/BuildApplication.rsrc | Bin 3858 -> 0 bytes Mac/scripts/ConfigurePython.py | 179 --- Mac/scripts/ConfigurePython.rsrc | Bin 9088 -> 0 bytes Mac/scripts/EditPythonPrefs.py | 213 --- Mac/scripts/EditPythonPrefs.rsrc | Bin 9780 -> 0 bytes Mac/scripts/EditPythonPrefsBH.bh | 47 - Mac/scripts/EditPythonPrefsBH.prj | Bin 24091 -> 0 bytes Mac/scripts/EditPythonPrefsBH.rsrc | Bin 4278 -> 0 bytes Mac/scripts/MkDistr.py | 318 ----- Mac/scripts/MkDistr.rsrc | Bin 1531 -> 0 bytes Mac/scripts/MkDistr_ui.py | 356 ----- Mac/scripts/buildappbundle.py | 104 -- Mac/scripts/crlf.py | 29 - Mac/scripts/findgremlins.py | 57 - Mac/scripts/fixfiletypes.py | 56 - Mac/scripts/fullbuild.py | 434 ------ Mac/scripts/fullbuild.rsrc | Bin 1764 -> 0 bytes Mac/scripts/genpluginprojects.py | 181 --- Mac/scripts/missingcarbonmethods.py | 167 --- Mac/scripts/unweave.py | 259 ---- 181 files changed, 22664 deletions(-) delete mode 100644 Mac/Build/HtmlRender.prj delete mode 100644 Mac/Build/PythonCore.axp delete mode 100644 Mac/Build/PythonCore.mcp delete mode 100644 Mac/Build/PythonInterpreter.mcp delete mode 100644 Mac/Build/PythonStandSmall.mcp delete mode 100644 Mac/Build/PythonStandalone.mcp delete mode 100755 Mac/Build/_CG.carbon.mcp delete mode 100755 Mac/Build/_CG.carbon.mcp.exp delete mode 100644 Mac/Build/_dummy_tkinter.mcp delete mode 100644 Mac/Build/_dummy_tkinter.mcp.exp delete mode 100644 Mac/Build/buildlibs.mcp delete mode 100644 Mac/Compat/sync.c delete mode 100644 Mac/Contrib/AECaptureParser/AECaptureParser.py delete mode 100644 Mac/Contrib/AECaptureParser/readme.txt delete mode 100644 Mac/Contrib/BBPy.lm/BBPy.c delete mode 100644 Mac/Contrib/BBPy.lm/BBPythonLM.mcp delete mode 100644 Mac/Contrib/BBPy.lm/BBpy.r delete mode 100644 Mac/Contrib/BBPy.lm/Python delete mode 100644 Mac/Contrib/BBPy.lm/Python Keywords.rsrc delete mode 100644 Mac/Contrib/BBPy.lm/PythonBBLM.txt delete mode 100644 Mac/Contrib/BBPy/PythonSlave.py delete mode 100644 Mac/Contrib/BBPy/README delete mode 100644 Mac/Contrib/BBPy/Run as Python delete mode 100644 Mac/Contrib/BBPy/source/BB stuff/ExternalInterface.h delete mode 100644 Mac/Contrib/BBPy/source/BB-stuff/ExternalInterface.h delete mode 100644 Mac/Contrib/BBPy/source/BBPy.h delete mode 100644 Mac/Contrib/BBPy/source/BBPy.rsrc delete mode 100644 Mac/Contrib/BBPy/source/BBPy_lauch.c delete mode 100644 Mac/Contrib/BBPy/source/BBPy_launch.c delete mode 100644 Mac/Contrib/BBPy/source/BBPy_main.c delete mode 100644 Mac/Contrib/ImageHelpers/ExtPixMapWrapper.py delete mode 100644 Mac/Contrib/ImageHelpers/ImageMac.py delete mode 100644 Mac/Contrib/ImageHelpers/MovieUtils.py delete mode 100644 Mac/Contrib/ImageHelpers/ReadMe delete mode 100644 Mac/Contrib/PythonDetector/OpenPythonLib delete mode 100644 Mac/Contrib/PythonDetector/OpenPythonLib with NS delete mode 100644 Mac/Contrib/PythonDetector/PythonDetector delete mode 100644 Mac/Contrib/PythonDetector/readme.txt delete mode 100644 Mac/Contrib/Sherlock/Python-FAQ.src delete mode 100644 Mac/Contrib/Sherlock/Python-docs.src delete mode 100644 Mac/Contrib/Sherlock/Python.src delete mode 100644 Mac/Contrib/Sherlock/readme.txt delete mode 100644 Mac/Contrib/Tabcleaner/Tabcleaner.README delete mode 100644 Mac/Contrib/Tabcleaner/Tabcleaner.py delete mode 100644 Mac/Contrib/mpwsystem/mpwsystem.py delete mode 100644 Mac/Contrib/osam/OSAm.c delete mode 100644 Mac/Contrib/osam/OSAm.exp delete mode 100644 Mac/Contrib/osam/OSAm.h delete mode 100644 Mac/Contrib/osam/OSAm.prj delete mode 100644 Mac/Contrib/osam/ScriptRunner.c delete mode 100644 Mac/Contrib/osam/ScriptRunner.h delete mode 100644 Mac/Distributions/(vise)/Python 2.3.vct delete mode 100644 Mac/Distributions/binary.exclude delete mode 100644 Mac/Distributions/binary.include delete mode 100644 Mac/Distributions/dev.exclude delete mode 100644 Mac/Distributions/dev.include delete mode 100644 Mac/Distributions/src.exclude delete mode 100644 Mac/Distributions/src.include delete mode 100644 Mac/HISTORY delete mode 100644 Mac/Include/getapplbycreator.h delete mode 100644 Mac/Include/macbuildno.h delete mode 100644 Mac/Include/macdefs.h delete mode 100644 Mac/Include/pyconfig.h delete mode 100644 Mac/Lib/dbmac.py delete mode 100644 Mac/Lib/maccache.py delete mode 100644 Mac/Lib/mactty.py delete mode 100644 Mac/Lib/mkcwproject/__init__.py delete mode 100644 Mac/Lib/mkcwproject/cwtalker.py delete mode 100644 Mac/Lib/mkcwproject/cwxmlgen.py delete mode 100644 Mac/Lib/mkcwproject/template-carbon/template-alllibraries.xml delete mode 100644 Mac/Lib/mkcwproject/template-carbon/template-allsources.xml delete mode 100644 Mac/Lib/mkcwproject/template-carbon/template-grouplist.xml delete mode 100644 Mac/Lib/mkcwproject/template-carbon/template-grouplistlib.xml delete mode 100644 Mac/Lib/mkcwproject/template-carbon/template-linkorder.xml delete mode 100644 Mac/Lib/mkcwproject/template-carbon/template-linkorderlib.xml delete mode 100644 Mac/Lib/mkcwproject/template-carbon/template-searchdirs.xml delete mode 100644 Mac/Lib/mkcwproject/template-carbon/template.prj.xml delete mode 100644 Mac/Lib/nsremote.py delete mode 100644 Mac/Lib/preferences.py delete mode 100644 Mac/Lib/py_resource.py delete mode 100644 Mac/Lib/pythonprefs.py delete mode 100644 Mac/Lib/quietconsole.py delete mode 100644 Mac/Lib/test/AEservertest.py delete mode 100644 Mac/Lib/test/AEservertest.rsrc delete mode 100644 Mac/Lib/test/aete.py delete mode 100644 Mac/Lib/test/cmtest.py delete mode 100644 Mac/Lib/test/ctbtest.py delete mode 100644 Mac/Lib/test/dragtest.py delete mode 100644 Mac/Lib/test/echo.py delete mode 100644 Mac/Lib/test/fgbgtimetest.py delete mode 100644 Mac/Lib/test/icgluetest.py delete mode 100644 Mac/Lib/test/mkcwproj/mkcwtestmodule.c delete mode 100644 Mac/Lib/test/mkcwproj/testmkcwproj.py delete mode 100644 Mac/Lib/test/readme.txt delete mode 100644 Mac/Lib/test/tell.py delete mode 100644 Mac/Lib/test/test_finder_ae delete mode 100644 Mac/Lib/test/test_setcontroldata.py delete mode 100644 Mac/Lib/test/tlist.py delete mode 100644 Mac/Lib/test/tsnd.py delete mode 100644 Mac/Lib/test/tte.py delete mode 100644 Mac/Lib/test/twin.py delete mode 100644 Mac/MPW/Build delete mode 100644 Mac/MPW/Makefile delete mode 100644 Mac/MPW/README delete mode 100644 Mac/Modules/Printingmodule.c delete mode 100644 Mac/Modules/_dummy_tkinter.c delete mode 100644 Mac/Modules/calldll.c delete mode 100644 Mac/Modules/htmlrender/HtmlRendermodule.c delete mode 100644 Mac/Modules/htmlrender/htmlscan.py delete mode 100644 Mac/Modules/htmlrender/htmlsupport.py delete mode 100644 Mac/Modules/macconfig.c delete mode 100644 Mac/Modules/macmodule.c delete mode 100644 Mac/Python/getapplbycreator.c delete mode 100644 Mac/Python/gusiconfig.cpp delete mode 100644 Mac/Python/macapplication.c delete mode 100644 Mac/Python/macgetargv.c delete mode 100644 Mac/Python/macgetcompiler.c delete mode 100644 Mac/Python/macgetpath.c delete mode 100644 Mac/Python/macgetplatform.c delete mode 100644 Mac/Python/macglue.c delete mode 100644 Mac/Python/macimport.c delete mode 100644 Mac/Python/macmain.c delete mode 100644 Mac/Python/macsetfiletype.c delete mode 100644 Mac/Python/macshlglue.c delete mode 100644 Mac/Python/pyGUSISIOUX.cp delete mode 100644 Mac/ReadMe delete mode 100644 Mac/ReadMe-dev delete mode 100644 Mac/ReadMe-src delete mode 100644 Mac/Resources/Carbon.r delete mode 100644 Mac/Resources/balloons.bh delete mode 100644 Mac/Resources/bundle.rsrc delete mode 100644 Mac/Resources/dialogs.rsrc delete mode 100644 Mac/Resources/gusiprefs.rsrc delete mode 100644 Mac/Resources/pythonpath.r delete mode 100644 Mac/Resources/tkpython.rsrc delete mode 100644 Mac/Resources/version.r delete mode 100644 Mac/Tools/CGI/BuildCGIApplet.py delete mode 100644 Mac/Tools/CGI/BuildCGIApplet.rsrc delete mode 100644 Mac/Tools/CGI/CGI_README.txt delete mode 100644 Mac/Tools/CGI/PythonCGISlave.py delete mode 100644 Mac/Tools/CGI/PythonCGISlave.rsrc delete mode 100644 Mac/Tools/CGI/cgi.html delete mode 100644 Mac/Unsupported/unshar.py delete mode 100644 Mac/_checkversion.py delete mode 100644 Mac/mwerks/errno_unix.h delete mode 100644 Mac/mwerks/macuseshlstart.c delete mode 100644 Mac/mwerks/malloc/README delete mode 100644 Mac/mwerks/malloc/calloc.c delete mode 100644 Mac/mwerks/malloc/malloc.c delete mode 100644 Mac/mwerks/mwerks_nscarbon.pch delete mode 100644 Mac/mwerks/mwerks_nscarbon_config.h delete mode 100644 Mac/mwerks/mwerks_pyexpat_config.h delete mode 100644 Mac/mwerks/mwerks_shcarbon.pch delete mode 100644 Mac/mwerks/mwerks_shcarbon_config.h delete mode 100644 Mac/mwerks/mwerks_smcarbon.pch delete mode 100644 Mac/mwerks/mwerks_smcarbon_config.h delete mode 100644 Mac/mwerks/mwerks_thrcarbonsm_config.h delete mode 100644 Mac/mwerks/mwerks_threadsmall_config.h delete mode 100644 Mac/mwerks/mwerks_tkplugin_config.h delete mode 100644 Mac/mwerks/mwfopenrf.c delete mode 100644 Mac/scripts/BuildApplication.py delete mode 100644 Mac/scripts/BuildApplication.rsrc delete mode 100644 Mac/scripts/ConfigurePython.py delete mode 100644 Mac/scripts/ConfigurePython.rsrc delete mode 100644 Mac/scripts/EditPythonPrefs.py delete mode 100644 Mac/scripts/EditPythonPrefs.rsrc delete mode 100644 Mac/scripts/EditPythonPrefsBH.bh delete mode 100644 Mac/scripts/EditPythonPrefsBH.prj delete mode 100644 Mac/scripts/EditPythonPrefsBH.rsrc delete mode 100644 Mac/scripts/MkDistr.py delete mode 100644 Mac/scripts/MkDistr.rsrc delete mode 100644 Mac/scripts/MkDistr_ui.py delete mode 100755 Mac/scripts/buildappbundle.py delete mode 100755 Mac/scripts/crlf.py delete mode 100644 Mac/scripts/findgremlins.py delete mode 100644 Mac/scripts/fixfiletypes.py delete mode 100644 Mac/scripts/fullbuild.py delete mode 100644 Mac/scripts/fullbuild.rsrc delete mode 100644 Mac/scripts/genpluginprojects.py delete mode 100644 Mac/scripts/missingcarbonmethods.py delete mode 100644 Mac/scripts/unweave.py diff --git a/Mac/Build/HtmlRender.prj b/Mac/Build/HtmlRender.prj deleted file mode 100644 index 5f917e2a43e3f5471a2e6db0fc008908d799b385..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 42274 zc-rk<4R9OBb>2Hr{FAI-TBKx2hGbh*^aENHEz(phi3CZB5+On)CCZW&8U#-yDEt{X z$duj2Y$tV+sb`uWH?fmAQEDe~V@Ijms?%gr$CEg=<95{uyMPgBO%uypgdbj6UDQ zS#~q4HQsMgp^xEJ39l-6Rl}3u^vDTz zk$p>DtF-bSS^wu#Q-NSlXm{J;b{Z%CP%Il|LfkzT(^DBq(348)EdOiWQ+g(nl`?|4 zte#5v4{PV|O=ZU9oQ^2;N!A~Z=o7NIGZ%}G^wr!w2k&fAQ@C*nc$yjpS)+*yoZhs^jjl|t_P>zd|a5(7FB$O6t z5@zK!35DVA9;YO)ks$5JCcxZDEiQ=%wENs@Jrv1|Yr20>({)F!d!VF06iKH|c{&}< z^BR;1m%&e_zsRLUC!^HGQ&8-56O=i91Z55fF-1;OnsQ-BQzDtns7{_!2&vqehSYKg zqj~whAc>vdb$Ed(a;vw!|4j*XzV*@G3}?5a%-QECbLnuS+ibmUcAO#Yi)Cg1>K*X+ zr}bDOcAw3WLXl|ypg*L6c6%k9_I&dAJCFxS|>b(m;qS<_MPWx?vF12k*^w;=bC)bzaCFJf>nfKrj=>}RR$icSDO1b{Qc!ZqDX(p#x$~&!n=6C1@SV0ntxq8_lGVijoZ62jz;-kc4?9)1hWOhdSxbBfk{gIW1<5+%$01oy z{BPsFj`)WmxsmuMA@LLcHQXT*|F@8ABK}{DoiXQsW$ca(@}Zq>As)+aCcX`lM&f&@ z|Byco$-9V0f8I*``ytsz{AVE9PCVLb2l3BA5+MHXA!#BW>vk*g{|(7b+JvI*n~BG| z>>?iR)d>l6iiAR6w zB_3^dh=k`VFlgX9SDk3-T={5NPEB9G(fDDjse8Q^>s`s^U_Xm7$v zs_;6;h(}*NPW=6l3={uRNKO#{Wk~KM{yUJIB>oLZPI0~($M;>tqs>nfkG6ad@uQH8 z5Rc>ZZsKvAMu^9;FiQLnA&C-??Hc2J4US!nc=WF`#G?(yiO2T|;y(aMjQGbXW+9Jp z;4Jaz&vDMzVk}G$k1-%gJYI_+m|EXtNtXDRAfdUW_Dx7~oL^i? z2-vTa8Yx!XPH|!@`TZUmQ|l;(Ev9(7o?_HeibLBdcI==ywwGek%`}EPXxw$um zucNu9C&dJXVrqkg zlUC7OwN{$%-bw1>W5M?tO|e~UhSkjcFI4RAXP;!s)J>I_zZ+)N3KRG?A%%*h1@jf2 zp;+@LTb;O9%bd-Qq~p2qSaKwqN}h?02PWj1U$Ln%kxluN$`nJjB7e(-IOQ*MXjYwb z%Zrx;?KOOv3>(-hGw(j2j&QiouuVl*-+>d+v#~K;-VG0igV6gv#~MhcrE*^Fv2br7 zozc$3re<43p-pTpbGw96bSY+OPdhNTwjo@Ep!R?t+rlEPFSg%H#Bt7$r{r%`%ps;xx4e4%L8XTaoWQJKY#D*QAGeDts4TZX66z&ev^5GCo?T5uu zVNSHtXe;-WO*FLgZn#kXX3F13pBrg$znucg4$9v}?=9r5d+7Z(+5qgP#eXZ6Ya@Nl z#(NcyB+AH0EE&^dkvQzm-r<-#GNNl4BT2-P5q98eeegbmMk-U4yn`>-KGGRl<)Ye^<# z0d}!J7GM|qOR1SJ3b2cPPk>$QM*{3(Zws)C{ZazE7D-^&3JL7;OJLUy0d^^S#D+-e z6kwM!D8MddRDfMdLV#V$lmNSwhXmNAJR-m@{5O#z%J$A z1=wZ$zK6grb*TWm)C~gcQnw1QOWh;DF11I1UFv`UyVQsPyVSG*yVQFH*rmQtfL#WN zM_`xwgaEtLX9U=#{*?f`)b9weOMOLvUFwen*ronVfL-ck0e1N+1lZ+UBfu_SK!9Ba z&_`gG@00+$d=mof@|_o8m+v6~b{U`_fnC0f0_^gAU4UI4l@?}K6jvT1&oaFK8jR!o zmkmrtGS07_><#-v!zaU51jARSD(?Y#`0u*(gI8eBu=Z8Y++|BXnqiE0@P|8RW*)rF zGmA%gv`AqkSTtVqgiE$aAeCFd{ay=aWXkl3>4jGb^;sYC*TXmiOqbXS)t)O{Da>j| zx~{&BSS2&D`bA!UdSqXeGM0$MlI1-QGG%2E*acC%?8IELm{N9-G!=LO+9QwVLf6y& z+UJ>q$-$#=1iAWFExs#+kFRjgJZ}sJ*Lr@2h-S6tUFA+)J$*yVLYkgQ8Na#lqchD{ zM{iQsGD!{pLn<9lWweZE*0S`YvNwV^YujgS)m!>|vrmM`c8g-;Hi|W~?$+5FdI|DnL#!}I2QzRX0`c2(GH z+uR;YM&r3L&2y8oCG?B^{9hvszc`kRozpVeNZj*@vX2-0`NOP~_RwHoJL9|AK|PWj zi)6<9{K+ckG0z|LoTbd>kxK3t#t#q%b7_1&jOPR8?iY;vg-0HF$57XSSuf|oL9~(=asvv%gvYe zGxNU;jAxL$7pme9{aF~@jbS&Pj+a8uz~Dfz6ncibPYeY{CuS{Ydsc4&GV~Pr2?svN zw-{xznP@56RkCMzcq>3}1$gbO083iVn`yjqUOBJaHB-*RPcGp{EXE@kZiguM60*k)ATS5?^W<~o%S5e9^cQ0z}8nl{xs$*@BbJc z-oo`10k3SQQxzbtXWO>Y=!ur7KIu~FNtZ+q9>26eGW1L=tiP6UR}wu)0Wi`++J#SH%{xu+H*Lnn^YuzG;}+Iaq8Ycp^N_z-ImbDV zu5?Y$+yz@T&zZZZo@j~clP;B>bV>B!%soqgu@|@MOQxQhR$ji?#a8{{kiEbD=-u<4 zxeL^1{xf&shRtv0E~aOWGj{>l*7f-G&#f)1}PpM|y;aGB4 zvwx~>ccB@#W?m5!6qO`m7S)q3QGMnZ>5A!@>qsu3XWk>Zn4V1083j7N_{M^eez4~|ztq40vAU9+EgKSJ|ioz&+cxs}VG#bc}KhMf8fNDgs%)BiB*NB|!maa_mc ze-L8Uzt}Wj-?wr3FdipO$7eS@3CVR_{?$ol9i^>o5%qZkIOW{+n><0ac29uLh|E` zExM4<(+;_UwyjI(@svZ3wptG5V|ICC4SZae(8nG9^{!h$zCDr7#vJ{HZJZAGWp#GJ z_gl<5-g@=l2|tm`ANn#RAA;*6(qqIDazD79Ek%ZOWmM&}y;W2moRJ8ZQp929s{Hg7fXm2g9_6Y|% z`WeyQt$2L=0WLrOwrKC~{v!xz&9i2i)!vpHPXpge_56fr@45%D&LqERwRhL+SO?l0 zZrmW+`vV+{G!Je36Vcuyci|*PeueVt1jKB6oVfvyRev}Uan3&tKeqg2@mKIr>jA3I zOO|{|I|lASE`RXDxC=?7oN;XLufRTrJz3q0D-g(~`aEQ|i`Bh=G4M_;}5fBj7mjL^8dY{i+n&p%4j2-g4eRvfEa_J6?BhYBvLPXaV6Hf}6AX52Y=?x?tk+|Elii)|&TbN?g$5`% zEv3*VTwf`aeiSHIDHIBn0=FMd|>5V367-7a(A!FJ+R6ZYaiNYdEgk~$+A2paD9pT~x1KPuQR zNzs*KT<@W-CI-J*h1+e_x_gx zKI``Edb3m=#MtKbEXKZ1>knco74ip-4YFDdez$1PYdt0G|hl0ek@< z1OO9`b_u{20WJmj62N5umjiqm;30q?13U`wQ-GfV`~=_!06zqH1mNcYj{!UZ@P7bL z0z3uq3xHn&>;`xm;BkOo0XzfnEWob;egp6v!1Dkv0K5qBTYw({yae!lfQJEI2KXJo zD*$@{eh=^}z-zz(M?pLa0A@;U48T}`aR9(2S{cAFfbjqm044%}(9i}034 zECg5t;0IU?a5%scc>X^E{0ZO|WSAe$wUI&17U{H4k?ZDm! z_#41G0Ph042k>`*_W?ct_z>VDD5o9be?WW|#Qy~N7r?*a`fPv}!2ch>#{mBUz&1tU z1?|sXAz6&V2?Usi$_WTC4Fs450!)KhPCE|Zcz_cCRstLWP!53oQUS0Epc3F108nVO z6#&ZtssO41Rs*a7z;Rmxa1y}D0JQ*h0G$A90fGSa01W`A0JH(Xc-I;MngE&sjs{o< zuoU1(fKvh118e{|4d8TuGXTznO5q#|V}ZdKWH9a+j5`Knk-=DGs8PY#V=zV;j6()v zkii&ZFb)}vLk8oJ!8l|v4jGI?b{@_`04V=ai38qXz#9yB0w!U`fNvP^3Wl!;?hN{XLAx_(cLwdwpxqg?JA-y-(C!S{ok6=ZXm_?2 zH5mYCJ9ZjsA^^~S4BC%DTQeB%4BD1qTOwZpFEQu`26B~wJYmrG3}gyJ{sOtcK(;WD zvkc?|0~y0W#xRgE48{`!dBH$lFc?b=#u9_RX3)P3WH^I9X2`!V{uuBA13AJ#b}^9K z4EmaZtYskY8ORz2@|}UaXCQkS$an_wnt{A#Ag>w7YX}DXl z8OVMHa-M;lXCV6-$SMZ1ih-vO5kn0TOIA3jyL3I@XWGI8Vl7Z}GAUhezP6o1)mC`&6GMa(hWH5&^kev+X7zT3; zgSmjgJi}nVWiZdMOa2Qg!bFmP|Dm?uC1fw>%NvMCuC%q$w}g!5W44@l=1ppo)cCoG zWM`G=2bA}`uHPmZkm93FH1`yV`Gxn_Xp#lhBoAI888M&wZ#a#SCyDoNA)dI6#@StB ze&e#}DUu;SqA~Mt!J9bu@G(7x@?_pI?(9Lw`&%W+}<|BWS#RNz9>Ku5G6|=CfkH!TFVs=gl;q#7P&KO7ikz zl9@ElxE?WI$O*1b6bqdK=K|D+_?+?=(j98W{D3+LpEC-@oR9ho*C}2jUEvQxU*P&h zolU1GqPb-)%`YjL_f3-Fm)PXrqZu;r^Fjuq9>!(hOp;Y8J>_cBr3MQfh0C>%h3>@X z+Useq{R$24>quuR6FLZ=Q~pJBxsPPuuV`MZCwX@x$-yf~2B+rQCeodj)10=Bu!G{xxRts-8nSp9xe1nuCKjJ`rGeGryNUj%g=ZHU}!h0n^k?|HeQ(vw+iU8hmx@Pj8^V zE*6o-m(f&aK|v~!QpGx3OI>IgPg9WbOm0h1FQzDxmAz?2G>YM&Qrl zt)C}Gw&?LqW{cSw48&WFXiLzDwud_Wo%^q!|J$u`;8-uF|9?cP&J)CmcW^}-)h%HIy_0zH z+r+nbk!9{X6yHwq-83rhA-ead?f*{q`5vX;Pw79T_yJOwA0)HY_v!i}dY&JoMhFhd zd5-)sNV5$y&5ATF({eb-Y7fmx++{YJxI<6N$n|#xbPYW)B-WMaG@`!cD^Bjw&}cZV z`NWEb2GC(jcW>C<`=NFM1bMMeyIdPw@ac4l;+OXK==RWx#c5)2gk3HSS=UhGkHz)& z&{h}e!TY#?Wpp!jz6@OMjIe!dK0V#|TII}=+Q+`PcVwgoq9FtHuM%@9nO?o-nZn(MhK zf(dgxqxo6;6ZIeB@00leyI&&{0^((4rbK)iEzuD_jF#evFQ+9r;+3>4M!bP|0`V4F znj#*hsLv}AAlMv#g$uxwxk4!^|A4Ylz;zyEM2JuQVsUUs|nKuwWhsFTn z8_A4-_!crJAbuV#;}QP?Ezc3Zl9uI&-#|-V#P6b|FX9i=k{9vEXz7dibF>6T{B>Fa zBmO>(LmbkDv;;Kld<|_YAl^hK3B+5;M22{rwi^&XpUhT>f0?!&5Wj{@ zLx|r_CLzQhBr_P|Pm&1=@fXNcg81*rEQk1eWI93oBQmR@I37VV6!Gz7ZbEz(nWGRt zl1x;H*O6%o@erB45I>JhsEA)pdN<-XlerY}`^a>K_>W0mBfgu=#fblo%tVO4PG)1o z|7w|!OFky^ElwfB$n1ysblO@#d=Z(-5I>gY1H@~{OojM*%al~wPG(WW6SRGR_yuGt zLj3b&Dn|TLGS4G^1DVGWzl}_Qh(AQ;J;a|U^C04XC$lq7d&9}hh4@r5X(7It%w33A zkZBt6Q^{*eOj`%7v^&-BOOpl14LFPup+sV9#c$~Hr5I>K$4-o$%=_QDNl}!GK z-$L60h(AEv1BgFH+W?3^OWOd5ze47H#Q#Jlbj1Hox(=#Sg=8K@d>ENI5uZe+PsC@F zSrYMuwDpDfQDojnyqZk)h&Pi7AMp;_7DIe1nM4u)0+}@tzk*Dmh<}qzqKMx^dKltA zC6g)Qzo4yf#9t=!G~#cO=^F9>kog+b#8G6{Mtm-rixFQzW?IA>NY6vOg|5+*4m`v)3?qyrpEGM|>KY%Mo8jTT_UyA#*t5O{B9TehzK(BOamce#Fls3ozoB(bhlW z|7)rI!ym8~b;F;ctqR0nrR@yFKeE2#${?GdT+g^zOjm+_g z|BG~bTuuxT+f^JVHxiC7q-{pTtHgE|$E(Gb7spQ*TVNcI(N+%P-C}Ep<5$s|0r6XD zI}Gth#r7D-e=WAqIR2*CI^e6z0@_+Yd?;;2AU;)Wsc?KQZSx?$oVG0yub?eM#MjbR z65?mjHXh;;TEif|m9~!%-$C1{h+itUqBwq&*oxx#{j?p0_>;83fcPHT;z0Zz+QLKp z|E0Dm4!BSv4Xwq>`%Z;SyIv#^iVo;TDAlz6vW3&qVkQFd|E4qhFt^O!J{&iJ?$bV_ z*frD+FOcS4Etf^kGo1=5sG!0pCiIUy&NI8o9S+TdMAb611MPyLET5l9(SDH71vX!b z-s&`VB-f@8uHbOxHdstO(s4EAv}$)$&2%WubSA`=Qp&*(S46lH!W9s%d~n5sE1i_{ zbf#0a-I+R{!*t3~dO7VNkYg6#DL9691~Q$f?atHt;xt`PR@4S&Ihv)Mms3t=r;;T- z&)%QY{ z?m*n#13#60^RMdRsLXI`@Y{YdR;~!{va81~2RZ$6io6%B!Y5~m1l@Qb&sU7*lavHG zoLL?Ul{T(yu~~CAGs{C^7qdJR?qQaP!fs}HD7?+2hXS`+l7*66-$-M@7ot)g3jC!j z8e8}>U&=!PU$RSiDBuf)DGvpFkuK$-fG@nIJQTE#neCnDkI6Ud^P30^hAA3uW=Ane7h_s!lZ{nsgFqyh0^1g^iU{0ok7h`1E0Z1yrH?V` zp-}oqCOs7RkRT6*K{J^2P#Cm=Ne_iVYnk*=7}Uw6hr*x>ne>7g*>ZYDhxhWv&}4}~HBVA4Zj=wv26 z6o#%~(nDeB8BBU8@EtSqP#F3ZCOs5}-o>Pc!q8tb>7g+6Z6-YwhK*s;Lt)sFOnN8` zJDo`ng<7g*}dL}&-hCRxphr+NwGU=f(yo5;)h2e9V^iUXnGLs$(!wn`q6oy~I zq=&-rJDBuP82&7i9ty+%$)tzEi0MpvD2zCPNe_h)I+Gp>BQ9dnLjiYtQXUGptCR9j z81Xuj9tvfpOnNAk9m1rCLfLUldMK2g#-xWrnaQMwLfMy?^iU|n-EQ(wD8t=Z@=z$l z9Y^v|7>Vse9ttCIERcu7NF3|rp@2IoDG!B_*f!*$FcLip$U|Wy?q-vR!bof@@=zFw zJAdS%Flqvm9txwdf5}5(6!I*2D2&23CJ%*C7?X#>DBKYz4~0>qj5eY4~5Yv zN6ABBG>%vDP#BH&D{Und-Ql*vP3H11-Ohr$@-N%Bw_gKa_{3S)3Q zk%z(6F;%+*5C``h(B@cy3IIoh2!X%XUQ%rg&OhUdQ4~0qCPUN9533-(~ z6ei)$G+hl1}_%R^yif#snv^H9q}VdhH9 zLt*9_mWRU3F3Uq<=2e!5!pu7?4~3aOvpf`L{>k!Cm{nwXD9k$4@=%ynVRtZFwlnws|PbZm>KQW_MT~3bQY;JQQYM zXL%^he$etznEkxvp)mXJmWRTeF_wqIoTDrcg*j(f9tv}kmWRTe%PkLuId@tf3Ui(m z2TXAMZSwBMB~6()_=4kpao7dNYsKLd9FK?tGB|#TI2eQDw}=BZIR3aeScBt#r1c~& zlLnFZIO2Zsk|)Pc5{GSYyh9wi!SQZ!_y)&s7Kd(d{1I{Z2FG6%hj4KGV{sSanJ|H-w_9XV3XL@ zkRgtLAPyJ8uyCw642a{)#bHDoUndSC;JsUn&kw;&`n%Jc;8Q#Q{nj z|GYRriQ~73gOoV_xHwRW<9`wdD{*tw5OKf~$Cr=|2=NW#z$K0+>1__gcZ$QTIDVTr zz>4EP76(jm{1tJa703T24!y##WQ;iMisK8!;Zz)7Ee^-x_}SuMERH9|VObo%TpXIk z@muMQ62yNZ4$b2D3*vArj(;c)(!#KGq&QHE^4%p)O+2Wurj&BwRZgKp} z;@~Zg-zg5@;`q?UmWig2Y+#V zhd2O?jN`Y71I9T1v^Z#t<8O%r$1of{TpT*aalbfpjN|p<@G*|Z$tH{V zSHxjt9RHp;l#Jth#NlKZ$_LXSWr)v9I}uWa{TT|$#*Xo@2e*9;WAfx!CecvUPAb64 zW=PbC1|qs&->T=PSt&O#i>$Z@dt8~@RMyECUiN13?|nlB-xlWF@y5EWtzTPFSM9If zP~C@h0WtO-z+VC00w@9~1}Fh21sDV{c(8bZW+=cgfZ+fm0LlPH0*nF}4KM~^EWkK` z@ci|v#I0N7;fU^NifCNAiU^BorfO7%50XhM$ z0Js+5I)Li|z7B8`z|8=+0^A00C&1kR_X9ix@G!t50FMGZ0q_*SF93D}JOl7+fENH> z1b7Kx55Q{xuLHaZ@HW8T0Nw$37vS#z?*n`Q@FAY5f$3T2=Q#1Y^1JA%1UX0pXPi=T zB!t$|5{iZrp+GpaO>fx}N_4iwb<;@3gSy$*&(YG7(Bu3k5{d>Adhh#G`MB(lUO51K zT+%!8@?!sI$I6-|c2sz+5&K?z3{vR5}swyL0llC3K2w}5ud{|vUj?I+$a*!y7n!=v}^ zeL1F@Xut}IB}3Bf-S~ph!Uv8W1*`EDhp6@$uzay#Xf|K?A6VfV$JmC4Rr?Ikpib&h z!AWAMlX}$m7BZI~eSf}0KD`$^Wq!}gz?bmzJw|i&hGu_fBGMbvL%wp**ul$*wD+o4 zJk*E9&3Lf4z3-*n@W&rWy5Faw(N`0R8S#W3?`eH_IYB&0!8yNfz0dVlp3CV7wfALx zR;J3?=uT*>Pl30g>LAY!%s0_fc!6+$7>cisyw|{8AS#Wx-q29V#FuoKNM!Y`_!)1L zH3Z@&w0xb>mJI7As|y6ni2~6|BN7WFIBKVe1j1n>$k9f*b-rd@Q;jbiYK;ftA-JrS z7=6Mg$mBO30&%^~`m#^jWBTv)>sw>2HJk`VBfLoX!=S!75XQJekDAFCatmDP@wgE; z0cnpL+w>?P9Xd$R4pU%3Bi0oUb#x}gWh4=b=mIrjl(t!qn<0b$Wjqi;uK++p5xT!X z+OXgVv{EO31b8Ov2_ju)BAzgkm?8X4;>jq-L6j%3G{{c|6A?Yqs>kuN%aoN$!~;RS zH4xl{6@zvT@zg-8i5YlzK0*!NPn^WUBC)W(RbID+f(d!i4!5x`!bZTB1$DILC8O3Y zLs5$?95QVeMzlj-M0BWPn{~-+A}=Kp4@5hxWHTHJ+O87uknN6%WXyJlL|4qZ2n2(A zm^T{s4RpW~@tpBsr_S3f(iPVOZQ)Q9n=NXzVHD%soI(-?(!sAD4Q=Defp|R7C3_%{ zYzrAi46xQvG++ipA#B}9AkisFfXAYSyaJYKO@_j4p=i6o86*G|jdA|4{Y|9p$e@U1 zQdHj}aU-V3p;zQn#$`@i@6flVU&W9t-q9M0bXXY%{I$F?p_PEc5z`#D+JF#AYKbF1EB01q?GjtfE1l0oP%xRzT2h z+OO=mVdVt5IOEBLw1om;0|W`5`AN=jyd!Cb@QfO|6oa1EoL_SpXo&1lbM}gJ(m57+aFFa&;Ygy5Zwx zrIJYP?1~xKSgpVjP;LIa_6MX}V9|B!#RWa1?Eyu)Z*?F(Z&|2iMce$0$E6Z&4@rLk z?a>B#{c>!^>6J2}aa+q8^Unv|YKla=`+g0~ZZ2OatN6RinO*0a{^3*oMmb z)vN8dX{b)SEYE5yTd};}4eQe`Qw7rn6^vK5J1<|c$=2MfE1KErP~1%Tn)Hr{9!;?F zfZs?a7(Qot8l4|_yOpzx=m;y5dMmy4RtGYh+tw9nS(%OAlB3b_Ic){T;v0F9X}z+j zYSo%7PU4B>*>vSO3Df8GR4L^dy&ujUv9|I?aAUwsS)4^BLcm`Bpm zwIs%;t%MnDjUMHARmj9+&LXXx*s2PmzgCMgve@5wzunX zIlDJ;3F&K&>$yYPu{?0qU-)f65=UHSYT5yp^oxrKYr} zr;}%oaOYHc3;5%fig38arrh!C+?~7rsBFRFn3(?f@&+<_U2`R8dA3eS3y`F+=0#IW zGsst%DI&mwwk`}n7aFZn4F;Xt>N+m|WxohUvOd;mlas7Gp+{mZZLly&=q(`5*BVis zmB+g5qEys9Z1E(e;H@&aG*=ogvIT~38`gn(eOoAIE#9G$$T=1ts-VIE+;W)RSYO|4 zPaM9caUC6k!Df$v#VoDl+kBlMyY)C4g|*c+wbgjYzm0a*5Ze%EtPn}?YpWFVYqUDr z{zNNDC&w4fD1MXTw{7GFC1iSJY&vBZQCv)M3B}h@Jc;5`if^TO5XH|>JecAk6c43% z7{$XW9zk&##Um-cg5o_CkD_=q#bYRbf#R_gkE3`z#k(nSbLJdfhP zQ9PgG!zf-r@#_>Xq<9g<*Hip;ieIy}M^OnGsjY7HQ@ohs!zo@u@luM9pm-U@N7`;% zT$(azTh&`m@lh17p!jHtlN4{JxSZmbC_aYbV=4ZK;^Qbjp5hZIuAq1o#U{lGiYqCu zqPUvk)fBIx_E#f=mzRmWx zV+J?cUi?e_kL!zgZOa-zTJC)K<_Q%Kw_6KsBom78uNlcs ze9M{Qw`@cc3qi@VRl3ubH>sFgIc&L4?BhPxCp#QG-~Sn;l$4yIj5@c7`z#Dz$-n3> z4>40gDYpDQmm;wvuazstP{GC*T(WY$P>i8Mn!G3`z9>f>Y-xEo)T&ryAacZ{40%zS z&KIF*Fq~}D6>khkzF@=`E5$dYv~pOBDOOOyCNGKvUvO^&+VxW$qWA*zi$c{NDya8e zR1l$f?At3x5=#`1{iwk%ABxBRVb4L|07F=|Q=SSc44{zZ_ciclLuHFo!8Y-+K_2FW zsp16Qz76L9RK#N8{wSxeu69*Ex{TK$dKBs!YFGD5IqNH{`lH<%n;I+oqa6N5F*-qF zcxlRyNRQXXzWdvajMa#5s=SIH#U1xNE9m+hW2Y}1d)Ncd^6Rp$&y9WePdBocPAdX> z-`F?qzcHO2zb$(@|6UX?r?u1ddD7m4>0#jI1oQQw?G>9GfoFOu$DM5dl@siz`o#LH zoLIkflobxDMXa4~Xom4&L)}`bh_`Uv-i%f1TI&x<37? z>mO)3c#m6cA9e6vmlN!#`o#LHoLIk~Z>)<_axP8;Xds~i29lVFd?6VHu z>vFv6;5{qIs}4?Qb@ZOEO}(S9$Ik%Qjqym6{?LtkTuy)K#_L1TBbNHMu2}A@8xP*6 zxgBoRFLQgZ%Zc?tne; z(xd*o-^$4+n|jFyvVRhN{%K2b%7=T<>gpQ$-1ldtv}@Jr@eapFDm~cjS_h@wq#tbi z2a+DXKLQ?eoM*Nx>Q`Rr@L=$>EswaHaTVr7(t`1-ym_dyM71S6|S zLuVopD_^{LBdB41Ga2;O1HO%0VeO07`_ z|NIv|Do9I4qQ~~M%0P5(!WY69>x%v7?#A=9+e2a9H}{a(T>lLG^@U7d)JXUOzRiJf zsLdx1-9{q+;$+km-+R2W=52>%1$yhEZ3`TzO8P?X>B5L;;pAD)0`b_U|`x8YE0 zJP_{^rOwS&YBsTdY)w?;8Lb=jV8RzP+I0UgJS4)`9)QPd^G_G$ZHb2xy7)8JWvkxE zWVB6h4@Kdga}P1+9uk}~yisr0<9aj*N$qhX!qf5T4+&0)B*TeNEZnsy{cn!o1+EXo zqoHVruiU3c6Y;J^F(VXB&|jx2(x#iicqo=I;>TwEO{gPk#N{1DdBYpx`sR?4G{arK zREa!e#PBNn;NYrPv`{+-3 ziyRU=w7I_0XNI=vm<0r_T?yR;nxL+?nZD)APKG~?gc3&ukP<-A9RR~oS{>uNppo4g`Ujq3r6 zU97I0nTu!aWd3CVbdBL-0O}s++yZwqjbuEirydz!@UZvbk?B;Cq?zC)bOtu-P)tIP zM?z7-?Y6&KkSbWx2My>0xHZ;Z-VGniEO%gqwxn?6v6YTpJI^+nMyIt847cF?rbx&% z@kW~yfmYr&CNyfN9^B+hbOxYhpuaY=cp@2qeoID!_~a%$74%R7suA=>^hm27horck z;yPB=gtc9bZ5=TEe*X&D$xD_mY7He)O-UmM*&u2}7x7fVmF4_F{73LVbo`^#Xfcur zj|`Qu8dwa7MZA7`1Uku= zl24{@O9+~y6(oaUCj4{6>2F3X0ZhJ4+#AJ65?TUE6KpoD3C0VyFJ4WtOBYiPBu+Tl z#;qAy3p0A$?CI!Dzwa@*ZYy(rZ7?2?6T=~s6|g}7T!SkpWH+Q>mL zzrI!P`7MyM>Z&)O?QdmY8Dy0mM9ncO^ezNpqad2@fo?QJGd$3Zfyn29ZY)GIJVa-DL~}jRO@U~h2fC>c&G$ez4Wh$5&`pPEfd{%75H0jT=YwdG2fCRM z`909hf@rY^y4esN?tyL&L`yu-9Rkr(4|In@bc6>wRH>JFpqmHLksj#gL$urj-C+w&HUqO~6A@Z9Tq4|I68TZ0EWJa_sO4|KRjZS+8g=Vdo} zpj!h`vj;l-Zp=ClbSFWy-UA(eifw}jIy~#|G!Jxj5S{LUZY@M-c%Z{$NYC^@hv#gb z<$>-Lh|cyv*9cLI2fAj60v_n_T&GqKbf-cT^gwq8M4cY!&Vp#82fDK%+T?+*6S8gk zZrV{znvD(*%)H6zeztWKdbZr`fez0xzQqIGW{AG!fesHge8dCYxez_-fvy{($34(p z0nu|F=&pt6cOK}jgJ_Qjy6YkOy$8ClL-eW#x|<++!vo#T5dGN$-K`M)#RJ`K5WVSv z?oNo__CR+xMDKW@yC0%=JG|M-s$R6i`?sdo>?}6@3$S(0f_gBcC>46X4g6vry=-!6xLp_xHH^`prf$km1p67w? zUC5sAf$lxX_7`b#rm|&(I(`}tbRWUxvi(?J zukH5+WKZHe+m2|dG}`p_fp|P*#C=Ek4|mAQyoCy%Y`!Q?eIKL<_X1ck zTGBU*l;WSm&lbX;hM%p3zYITJgulte?hoSc!_TJ$UVBE+ibkzxX-AvCNAIzZiZlCj2rcc9Iasot+(ow3c~SuuOuAfs|d#(qN@r2HvC*e_z&Rce+YjHe!faLKIgTBV;_Bu@c+le zE*FGB=pA=Gv4oF_-6~8+ZOzcP@{uB7Qop9v6I|zT3iQOo~--4fS6aEkQxl7=Ku`j+uIC@6j zO*ned-9tEfTz!}DB_dw75JtxL2nQb2?k5~~X&)dQcu0GYaA-&E`@J5F%4Vv93M!}| zLb}bgc%`zLs*u|TqHLxrY^EwW$%~cBW~xGNz9?4TR8~O+ z6;z-wgfTJ4H8fQE@Mt&np#l{KR_I8Yp`a0M4|NP!1xeXxRj|S!)dabMbzmpVmF0Ny zHJ%1t7czqxS=DW!gb~k3Tx~=X8A)~V$}?iIvwRJKs2+C6b4bQD>KZ-jkV~htnhuX# zy)_XJWM)<-&4dy0ove3lG2(5RxfQ{nZkq6N>b>W?Kc!U?A*tKgxA#XHcbb zR~vI&s%_K3vNIa0SLaI2*%$y7W+W$LHR{`(YSkQwcjyUUlb%TAs1-k$xh@ckW#ozG za~cnnn>8dTJ!4c*s?)&8C@PERDBqctiNJxIDc6CaDK|Gy+cF*c*G7@m#kRcc{!CTM ziNDkGb8uuTKa*Pq&du(&O!pSa$@I3obiTJ|I5m|6_fxLJ0H9pwF_7Ze z^kG1($Wv=Wru}JFS2Vk@BIY{qA!a#02j)7BMa*+xU(CwQyQv(9Zc1fm^-(G#yB~PX zo%q$t%)wGTGm}#>v8K^iFOE#lx|vwNiciF3_BrM|bGR+n;aPI?b}GlE#d30WDkGhx zWopiLbYN!8auMYY&Bc`jm*yfKclhg+bauG`6tJjj)f#tgf>Sta6g=B?F5(nUV<469 zte5a?N8Lo`I#1M+B-dmuGjmSOqIFz!6&pcr^+FKj&{=qfbI0>+FMa2#`q(L4p3hMQ zlDTpFZ%KffNUc7$8}SU@{NQHD!1l$Qj=VUL^^@9y5u%6 za5kyJ52bYIai8Gn%r!%EL(WAAepJ|38;Eu!108y=9CE*owMSaPUE6rr4#01&2-|NLo%Htx8$((sGIhi zN#>wq+Q@Qg!d7-Zh1a5VR$0?&JhiI_8Iw+&r(JVvyczj<+TBI_wTPUjdK;1J3}BHt z&jaZ+d1ixjV$ZGWIDw>-u~v`Pd&bO%M})NJY+ zPpXK;xai0d?_$pOtqupWZOVb*rT|I@CoLq;ddj&%V$I@IDNCq3SIj2(oh!$QoGVB= zwR0uq6zOUFxm4FSWjI#aHWN7LVHQQc#>t>`(AzSo+!`{2G^e7ML6c83xGQ}YolF1O z{&SHz;PWbj>E%!L^uorC%$)Kbyr=%iS?bi-9e#n(;@Py4Y@Ui9Lj-%KH#JR zIL-Rb6TQRS?mDRRO!fI@_uLb@!yN9mRBpT=8ZzA!Eq5); z#blY!Sn0(S;%v%vFk-rxFWn56ZYE221D1>RDxdo4#kA$c%HwSNaxr{~4+uNSJIZz1 zmJqovGLI-+HZ25!2I%=jYmpp!}>o6Y8%VGLf>}q@tZ9hg`I0J4r@6O_pr5XF9ftvwS21 z*R38w;vgd_*HKEQ@^f$PSefoTlSfwCsGN8v$EJ@h!>L`IHhWToY?}+CIm%7S&n-D^ zneI)JM|#?*@;6*g32MvBtsAGF9u3%?i|R9TMXG}WPMNt?H`jYh3a9&L5;%!S*HUaW zPUU2iWG{0Y_{ihJ8l+9uLptTAZk?VV;V)da1bJplEZCVog=J@_&0*QuS(8{cN#-n; zO_4s0W#^~OV=m7?ZI?}vHk0M3qirh7&dr?5a!{mC7fu9nzR1x6a$?BN%bppsY4Y}R z`rP4=pFVjw5Yg=6keeFixwGx_M>a+F1d>gYHiP77hx92V2Z3!4am`H)=iEeTVl_8O zmc-0WMj|11X1dsLrE%o_)THH*V0 z+w7G)Gu2Smt4ryU)0UnlGHvNuveK59DI{%K>C(}bktP;%l|wvX%Ssc3_D8l!KwEOA z=(A^~%e<@{DeUYuky6f zMfhzZ{3a28a|XXbgx>+eZw}$NhVUCh_-&!>OnmnTzafO*4#IB+;kSbD+cfwMApG7B ze&+|j?}OjfsoxTkjM0Bg}yddIJ@&U}4R~>YHt-tY5v_eh*m9+b>(giBL3Rv?as3 zKgi0(7A*_vn*(9E4tD5KQ=E2-xpkb*WI?eaha^27H{vEB?Qvt99tEUBN4uFRu%Hp^ ziibKn@vkv(;~>x3tjA4QY$I7b5D7&?ND_)rNdjrZM~DRCW+#6bcuMP8B3))8o-mS_ z5d%Ds&^d;WA5Y?aAwL;RL}1yk$MLeul+{ec13|qt5ZnZKpw+}nUcdTQT#-Zl!U5AX z_ysnC4U5FW`c`?}778ZhMLV>JbrCiKwk)WkEiW0hZW)SNWZ{r$yD*|1@*<)`z1plx zUJ-dIk$525VI`a4P|$Xjh=*)~#yoV&T@VAhf4= zyhtF3NugjMAqER1hyk`)UeI8S%Y+y-g>?}QB--I&DIuKH1r`Z}=zh>k$hyb^)WC+3 z*lggyDo4{>Ac2Wn+K3uP8XrwjY~f&{)%N(17q;pK#O3M#0ef(k0Apn?i296X_ju^~|-8i?qA zeXE|EW+f5wpCWm&kD-{AtTm!~J~HuIhN~;xkjAFQ%HCES%gIBcHCJzF_ID;C;XW*9 zBmgfb(%#qgVR17a?2mTCAAca}exHg)a>~fv(fP_*NwJ@ME;!TGt@pX!%1gWPaymlo z{ZgNe0aqW={Z^li?u7fToNb|4U)P6T>Tz?zol?=zP}|qS^c(=Rq4q~PbycV3t&h!@ zir&=P_fS_`v#MXpsjKauavEw^_e(kJE35j05BA4g=%pM!M+NiMnf&vx)zH;0Bk;^T zWr=d!$@X74!G5YwtiQ^M^-DSW)>vQjoY1}cmfxiA)!DcFW|h;o{UgiCQs+>G;@1T=$Z}Ks;8Npw76j==yy>pYn2`@%pkp4YHiB zaHzE(>SOeS9%3CF;6yU`VAGBJRVQk7pQO@WVCc|@>t4Msr*Hd5mSe=*`lWxo z>Uce@&pzvTy)7r6S03;)Kzq|}p?%x4cc_tva_U!|l#iyqbz`r~;d4}=@9WdAI)v*E z!+xxf(NFzjv~KK|a^kw{ssaa(ZcR!~8O{SwsM<0_~zpvHl> zP^e*$jaAoFQ>_|hV292`B38b5F}}6nH}SMfBeFOaH`TQ+or`!{7V+Y+Ra=X zh=mp(gbh#tOGl0V4e&5_Ze@K{^<3ZFs*2_ch#G1to9C(_@<|BlEx?>Xy#=V=0!*uq zdJAx$%TaFu<__vDz#QeMw*Y%oj(Q7Fy#*-CQEvhEupIRkV9&}?ZvpPByjE`k_KXii zIqEIIPqJ>T-U2+ZWuSTsuxCNN1(;V(s#XW6KnMGPdJAx$%TaFu_H{YxExE)=m0DD%BdJC{;bD??* zuxIsAZvpOmDAD@d*A{gma`S zd?czdpvJ%e4+StQXvG1)zO@(U1>&qySG@t(>nr36LmmELAl_<3?dQ;)KtahkCF4{$z{j)NFI8ht1vUSuF`$A}vQf($ zklv^+J+RQLpFdD^EQV(eHJF%ubI%s39%a3ZE>oFH9X!`L89 z&p7@`dlY`=L3$`X{nL9G8%y^ue8WngdNpHZbbovLaJYXl-QS+BAwDD)*W1}O=RC)x zC!zKp{2VUQPoK%e-Xun|;O8Wse)W@snLJaq0Ls%Y5%df2ea9kFcRzx3zo7rk-B?ko z?;-FrNTmPsAApxo`XVd+&Ov+kwiyEzpMj(C|DSYnW6Ob%l2TCG}M|2cFi%^#w$en=o*V3?DUh*gr8xe z+z%%)dBE=Emt^{N*Wqd6=a4kqF5B(83)TQm)`ZD#$acH#>L&pw^XZs9*yfQyID>B| zY=EB|BZ15l(OZv)K0A}&M=SdyB-|jFFDwtqLGLY^0}8d`gbfvUheufk%k+tD%2KJS5Uz2YPLpNWb}1==YH# zy#mIUcBDwZ9r&O`v}f5hUxsx0#=za%7+Vw;>6<|YXh(_kSAdsFd?LN|N=T=1@kfv! zg_K_UQ%FBrr2qL)NEhu{_5jKvQUk`^iZV*1-w*tw9Yg$&UoDwT&+|)2KbGqIfb93O zi+=#=$BFbwzm@%7X2Mw4j;Hk3WxtmNhvMWw>F>&ZFMIv_kiJr+pZ>h;_p(2LjM6IT zc`ksT<3)P+KOvn?(4Vx|x=%OWpH7HB>u$*>Wfy_`(ddNwzb=IK|B^_*3ff$w_u$@r z5Ynk1YhWyEbaMU~zXP25>ltLIH6s1PAHn?cl1M+M9@0+~=_{~3mr^>66|F|_VaavC zHrqw|XlO%Ce0fA0339iP+H=o6kZ`g{9|Ll@@FtOd5A?Z4UqER2BK$lr(!U6EgjOf$ z$3wf7j3<7W2nlPc-5$02>qpo=ba43OMytPmhvPRTCqJusbzMWmmJ6^Af`dM`U`{75lf9a(^hIIP6&=%BtT1EQ3b0A$T zXtdd{!m#@*Pajm2garCp)cW11ykNSvyA60rqj}))(Ohp4a%_ktf5xD^-%fJOmVV^( zHhE~L-))m`w)C+$-it`SS?L8`owjm^TIrGNY~>EM-Ty9IxwiBTBW&f`(kDO5=TlLx zm98~CDdpsj%5x!Mr%2xb{4?xEkvq;-;r{4$8yjOwEv;@ z3`@D%{T}k?S1COv`EbW#XbbIHO88m$LIoAC&)KU97-RCzczGB_CZh>^tL&m-*+n!nabx!3*g zzmT4a=`B(Y?3j-2c85s!m3cVA^qFpITOp|xbD6T>Z;u( z_%L>(l#@G-1|HGABj~%&lX9~Aw;(gMyXpRakaDv7MtuHz1pTIMQciY13ObMWT|vL? zLn$Y_x5GL@yO+k@blE;TPQw1WkLtTg%E=vT0+9YaT2D>1`14F`&--a!zDu@G_wQlu z(jFlCrBY6Ie+0DJgQC7Kd`Zg5?ysQE_I;uk^2bcX()G0Cua@I?*NMP`+Cw6}@)kMX zcddiDUi*PazvCf`J_dcLJuK4ieo~J2oqJK2c!ZwkA9B3!I_qXyPh$1<$nn1G7|=bn zABqPuSIP0d^F|o!+K&W1ex07i`_A`4_tAb#di&?(c;B@QWRmt1O5Y*db5{^_6YZyz z{tY?acTG<~`p+nRj~wqie}(+^b5SlB+2t3a=h=n7iGm$f)5LBl;eHpPHfL# zi1cA|jL7 zAAV>dKpH4ejzTFdN4aTJ8fc)UoaHJMXrKieXlV=i-IoC;$N20LnyAuC4~F{~=3(!o0>%(CZ6X$3GE@lt;5R=zo)fh-nv` zrTkHORM`n|s|qmG1&~#Mgn#FK2Cx9+=QHK|m2AiZIP9C+*D^;1 zNjQgbP7+QhpQXJ=Qv4P2&zZXyHZ*&fU$Og33iPfUQuD28P?oe6BA=ulc?tEwO6mmr zpvd;erKP}fWd*#SwO(u3Pf|->gmfHIGg1RmBT@^}N~Bh#laTz>c9EtdO+~6knu2sN zQa932q(hNrAfb_f@kj?EjX^pHX%bQw(g{e*KwADN5*i4oL^=v7AL$sRW06)Nbs{ZB zDngotbPCeZNJk<~L~X7P@<|9>sw3bv0(~#Pc zPDS#O;X=YXfHI_UNRyEcU}YbRbO_Q4qzOnTB6T1wM_P^KL0ZanObz85NDGlpMyf$t zf;4y!^h9fHS%wCe5B=TB@}vpZIu^sfxu&`;l%$M54(wX1Mpj2X(N3Q?(iRGO!oJRx z{*LO-_!kt@{F~lvJ>5$Xl|C0hkq1fY~llwl2BlY z$qf=JEUYqCkr?`*D#*U&NTKA^3}i-+W{Yq{@&gaR#y$D;@v zkn61ub@ySkcr1oFZg&IqOv@kcyE0RJHpY3wUbpsGF3n9%twv_<{N^QYO(3Vs>nHoD z)GutPLtRk}53>pb{q%5nkY-I)!(5m`q_850y1TF^F+F z4}S>{jt@r_ZOBZxnx_tgkLLUnK8}axgiqvQIblB!%?YpJ;Wy!PcsNb?dpzwRyoIMD zgzx0xHQ~p2dP4XaE^ETC^K^yq$2=^js>v;-6_->wx5q^lLU4*x@t`L5Or#Xb*<>?RM z&v+U{YNt)D2oL7z7~%0ejUYUOr(A?dy}bS>v+JOw8F zBv0uGzs}QR!vEqaADMtko`Mq|%TqkU+LV}Z9ZxF>FXibW;Z;0^Bzz{@2*Q{1G?wrd zo{kc}lc%VJALi*P;oq_CB>Xy0MG5cXX*!vw5?&@CJea5Ogs1V8m2eF&BM@%kB>}=A zwpoPF=BYg4Yj{de_%5EJ6W+$ta>B3iQUc+RG*gZyQei7jxJ0w&h{qY%Bl~wer>|;$ znA>oQHpSSHdvW<}D1NOChPZ2C#29yO!?F*d_y=dg$o1z#YOdf9NTYoAVOn z4_XdYH|@f|C&8dg9)P@pQ84gNolqXBg`&S7gr5(DvdB?T`N$58a~Xc;bwOnxkAjgm zUJO+S?S$dyXFK;c>;EcrfO32*{YY=5dPSFzg!s>8DUFlzEH5DNh zO-LjbgQ0Nv)Mtt;gU&+ z#O1OR;xWk49J)O&mzA#DqIpO`TrMY_9GT6f>E6#ES1Hyq6n=-q_dClVNAq-lx_lVq zXb!*HE?p-$!3j?2MgP1fdyCGvh`S>mfzscS`__LxZ1?V87C2K&C!~Zt&<-EuI)&kc zuhD}d zSEQXtA0Yh=>F-D%B7KB(H`33L?m>DV>E}pqBK-pCUZnew{*3e%()~yeApH{QW~2w@ zrlWF$+(12GzMv&7S-`ZJsXUAHd!+v${Q>E1r00 zh4eDgLr9NeT#7t=l7%&rl_T{n3%i&s(#!84U5a!W(s$*Ct8yOFMx=|7{s-xDq$`j% zA)SwOG17%d|BG}b(p5;`NBRNM)kxPMZAQ8l={lrKkgi8M7wH0!8 zwDC$CVzgmP8?UtCN*k@TvHLBM8)CF6OdFrHAxxWMw1Kw*;^#PNgxQ%B@X~UB?I(r~~c2_&MOPiRq z$)=r!r46&wL2j1OCK+uU(*`8!HlSVu>NIWsE3^qu8*H=zi~0?y*MRK`XhRv>4^Ueg zhBO?BHc?4mN6O871`b(StsN;aT57=e_ z+Xx*ZP^jK$6BpYFU^@Y7Cs<|*=10M@QI3*_1Qe_j1@%F}I#95T6)ax`%U8j&RIsiT ztQQ6AO2Kkgu$&bvX9detsUzD;N8XUI3>7Rx1UPGek0+yq)SRMvY-au+X zawDPcD5y&c>WhNsxZc}bhVsMCNt4YYwzx=)*tsP{k{ zuV}9T?Gj+S0JI5!Z2_oVlp>Y!Aquh+6-bpx1CVH;hV08ABsyS$_6*S80opd8&2+SX zKpW0vAL-x++DM=cQ`&S#dk25x0~u)Z0Bs)7rYYGf)MW*ASwUS^P>&VVW91|yY$u9G z9==deKNZwX1>22sG7`2W1>2c|ZAC#{S5POF^+?zj6x2KA3?$TJ1@%}#JyzaDLfuqe zK|=jhP(KyaP32EWuOgw2Dmdv=x{^6!LA}Ev4;L>M5zO$l*0j8vfHj zVUrv;D0C1A?KIGV1hmtDb{gnl4BBR(&41eepaVd3$bvT9=|B(F4IK!fLlxLR0``x9 z{hv5IL^?~8@lqZ%Q2ZoI`bi6xl{^on10OBiZ;#|&pAJOOfeJbdL5CCQ@B2Ik`lQ|j#OqbIgf@YYOFGx@YMLm$t4GkUSCrSRhp~8A6$*IUdh1d5*dwZq(g<; z?r1F3 z6J^2&Co!eu!PH}T;ys3kN|Q3e{Y(7kc~BEmyTYD!HGmO#u&O$`@%y6Rftqkn{8P33 zPIVw2i}7cEUz=4*8V2{&Hnm|>&OPo8S8l_2m-c{8iFSFTtNlSW<_X3^^nBX!G5>|bFZ(w?TOW5P?5edaS zi`BL6p4JF<4|tE;h2cY)72eQ*Wrsq#Q9K4qQ0dmtOlFw zqv8$1UVlVOT)tClPgreMJN(gDq^I8R_q*N3H+J_d?(S;Cw^$f-2e4G!Aym0}D&`L5 zyD5LOL_Scr>zmhU72?HgiwbE>st^&e8e0$wt@e28mjvAPYdmY*J$37Ro~7PEw^|p8 zgz){kLcv(4hX%~vo+y6o4!C<3Vv63NPxUPD23F4X2b;ocR<6aaCy1ji>IAiVMsrUc z-#m4V--qucD~C9(q19>-OJ9`JN@Tcu8r3dOJz7eSr`?aQQ6C6lDc55i&kJ>9&%&~l z*-!urDT+$ssSO3u;K%5Nq-;Yd*x~N+%vWPtZxvNzSUFybARGz>JS!;)tgtASLc|k} zH26>J_P3)V&ItslQe|0T#8`K+!;bG(yVd$N7)jLXx&~*fGriq#f)l>HP~{vLbAl7> zHZ7gt1SdFQzX;BC9*G5zE$^(;3Zt=QVV$ES`*-M!#lkgHrmXU=@m5E>gVnxJ*OYK1 z)ZXojMW?K4Up-}7^|UGNAzyTgH|(GCb!-@lVv4i(_=b(Wx07dn?T$IO|F(g@iocTk zs=d+PK4kcn%;7%RuXbiEPH=R<362gp!3miJZN1ysc}X-L&JNvvALi9Jw3auju}Daq z)Ns)>ZcpP7=SqTV%vHB890*0!h*PZlr5^3~g^*=jGjvuAo#3n(Iy$i5hkgH(n0=pu z)m7<^jyu5#&OE&L9ps+xpE)ykXU65s+@0Xe+?|=b6P%g5Gjn%>6P#I%GplieGpliC zHI5!Rvl?es;{<0`V>P#-i|VwUor#7K99>|lodc)K@U&aH=@L@S*$`dSsa&z=QT{wpLdq;}6E+QJE- zd-g1(`eDzWg_I_H_AI1}joE`?Azcc}o;?e11>Lh}Azft3_bL^VzOiS|Lb^DVJ$n{W zn`Y0RMWpZS*|Ui9%bq=pD1UtOd=U+r`F58gy5N*OdluaQx@XTKx_Foe*F~gn?Af!3 zF017&_hM3d_Uu_qZJIrM7L%^AXU}5FA78gvOqZ?pFs93L*E6QePx%)y#c#3wB{NF) z_zcEmC%(m)%JWRdR3{r4Q{3!vsf60^*^D0sacQf-WGl{*xRjLUT*hQe&SOlvc|Kz* zn+q6IySR`s#d#59Y6}-jTt@ci62|n-8yQo(*~FO2_EN^AZg z&5Y?%<7*ky1-{owTuFJqo-yge7RF>he#n^gZYyJY-y0ayW!N_|rVD<5B=G?1w{K!h zcKv3?)Q)dqO!~sE{oiN$3I~h~Exr;H?;ZGS; z+;=mkw)r#0RG#-pJc#=CpEIUD;TMd_hTY4U+Sz@Ksh;m=OzAwpnEIMuGNucnALK_DnEI=S8IzrRgfX?tM;Vi@J;s>I<8j6m{}YVqlHp%TJebBT>``_w^?TbGlU@7` zj<-wy!Xz{{K&msc(6eG1o(HzgiU`u1nWWM|%DOnvOzjLF9Tg)!NccNmkty~~)&={?4DS@>Ti z9zkQbos7xmzt5QL%m<9gw*8GU>A>F^Q+a>Lm@dWsNaB$+p8A+E_1phoOnKkMm~7G~ zjH%sx%9zUgpNx0&n3#r=G_L%NG1-}aGbS7UAI4i-XbrV7x-6v**xK$ z^1^uv2Mpwk=Lyf^%j5}r_;P>37qC+S!atJE0|b6TIuQ`~4R$6#L-t(hP(a{u(y@TR zi==}AfjimJ0O9kcvjKr`W~T#$x3MDu!te3L>@*E1;mhC&SIbM^1#Xg;zY83cm%s~r zxx5Ts;9u}Oity|5a(D^{DSSyh;j!|fc!3x2h4F+}@g?wtH%Z3<0^cni83_EMbX*|t z7t*l+g>e(4BLjh(q{9P&yQPx@fxj=E5(xaLbc`VIJJKNnh4IDGk%GW8q(cRPmr2J8 z0&kEG76iUcI$98T2hSS`?~=|IC`=e3oh}GGS2|k|*ejhb2>fm7d_mybq!R{#e=nUe z2>gX~${?o82TJD*0<)6_fkV<+gTPlwrwsx>C>=Kl{I+!7K;hs*>BK?c>C%~lz#i$$ zLEy8cQwM>!Naqd$|4KS|5O}9_@Ic`k6+CAqe7JP@An-}j@q@tUNCyxC-zgnI2>dEL zgrMo7A{`nCJWe`T5coLhP(k3+q{9P&e;^$!2>iHo#31la>3o60A(hfug1|M>VS~Uc zq@xCb&y@}y1ioE5dJy>c(&2-^pG(IN6edrS4j=?>lFlClj!7pF0$(kiK?wY~bo3zb zTfC+~Q{Qsw_(9;qr1J-XPmvBF1U_3jf)Myt=@3HTm!v}ofxnQBAt+24BOOEtJWo1_ z5O|ezL?Q5{(jkSwKb4Lt1b$UIsGu-4S30T?c$#!rA@EY^xI*C5rQ->KZ;%cs1b!;+ z?{DhI(jf(fX(Od$3V|0%2NeRZV@DN)ua=H&1b&3qTnN7>o#jxNUdfJc2p=t-=Lp;> zo$LsFnRKip@V(M$j=*n8XFL>Ult?E$0?&}ndjvjJI`I+sTwUYsstV{omC0ENII+%c(rs~CGcg^ftA4b zO9xg0zbqYD3H&eV(27FMFzM7v;3K7jD1lFr4yy#-ARSZ*{6pzLO5i7@!zzJ4l#Z<^ z963ljvl94l>3mAyQ=|hdfj3CUR|0R54zmQ_CLL!9{8wI!q@}A$=}1f9qohMEflran zv;;m=I@J<*t8}g<@NcB!EP?+b9cWQFx=cFK5_p<)rX}!F=}=4Hb<(kxz}HF#TLM2R z9c&4_Q##tBa7>|exFzr;>2yor#nLH`z^6%vI09cI9pebRO*$zO_#e_i5rtz%^Excy z1=3lWz!B-FOyKWJhh+jkBAtQ>{H}BeMqzfPbPOi&5z<+Yz+UMjN#F~m^E82fBAuuS z{5$C^P2f+ZV>JqMhD!%)0v|0MtqH73hid|#CmpW|e3NvXCh$|zfttV{Nk?iF<_?e! z)dZd;9jgi4CLOE^e2H|lCh)D&X_~-KN#|(-e;}QtQK+rr^=ra4(y^Mrr%DHF0-rA( ztqFW{e3`#?yL6Z)@W+iHNC#>HA0Zv73A{o&R1^4O=~zwRd!&Okfl-gLoU;p= z1m{*YCpdeOX2J3oX4GU9FxH9`i{}Nq z0|Cc!I>8CfAjAodZFPbZ9NX#y$F@4b365=b!vCXCuG?6$vbnRR2MO&6juRX+A^Ol9 z`lS%*MUA5wPDs#;9JCxtjdbYV(j5+mA~8ot_IJGivKK-xS{fW}aDqWEa-3U3oZ!qr zoFK!+1-V1J`KR6rs$7>(9|6ZcgI}y z0dGgtV&`)K*AFnyBb3YF`^BU$a_pSD~yCb1h%UayEW->UO3x1v3b#)a5&)id1HRFzS5atIl&1|aDo$@-~=Z)!3j=qf)kwZ zRSu<25$x|_*_`GRolmX6SFdN*P3LBxM{LvIE|FZ zbl24n5#vN#gg8-9wl9k-f-B!m&IYGoBSj}J(*|F zQ0AB^X;Rb)dcn`kRg52+Xc<2-Q8a#%s%wS^CUs+YnovCkeqw!SFK(uH3D1(WMtf$| zKCOUE6)^Fkd2Fd_Xn2r5w<*eK;K%jR$TTYg6RqSYCW^^V%ym=Kszmi}G)`m2)lKK5l#7X?5j&0f zGbsYm0j4Pe);*JNX_hU`7b((tYFl?lhZ=E7{W6-`R(FatT|wk(@CG}&y&Y;YUmjXa z=BD-q#GV)OnLJtM4>s4DmB_kTGfg@x;?}M6sbM5!2Kbm=}cBu9M1w z*=EIIe3Vck#s{WvU|uf#(6ngyS!(GR9;7KCgM^tKO)VzUSMxFwHYllph-X$hIzORk zbZ%;r=7mB}OiP3wq!x$9O;Z-yrvS>n?K^-6qXI0l@4OrIoV(upQXnD?hiLS|iS zl88w!n6zGF336lx@sWniexSGG(9>vCpFYB7wQE z&4|u2ueQ0g&R>Q(%P>!txv|bi+J&nm8Oz+*EN7WWX4a6cvSq#;mNG5v3dK~Hu<>cu zWx8Xb$uWy{kmQ9#vmpc)U6(i5PVZ_p(nwl*G#!kHpUjEAEnO2#U9B_|uq+nyHOwR- z<4^w6EDLyjtG(29+L)e<=3~}XrL7ED)mECN@ic=k>pHVoPfs_Pv#zsqv~KdYL{q|WSWE2Da{t|6Pcv9A@I`mn8u4C+9RK&+}k z4AiY^!fXR2>2U`2k#5VyOvI*E%y((b1S~r`+v*`9>l%`qxYm`Vbxk&QPuw74H?NdJ zHY=i1D1*tT6trJDm2!4Vr&7vh=``ux(k`7!Ih$U9OT)4kkTUjb%~H;Ktu`)`QC()Z zRvQ;iI|7Z1q&M)KQMkCVi_x(xPuQNZIwR2GO*At3k%D zNbUPpDVNF0wUo5!g{6>fFU(?=tKe~&j5IdGRq(j5jmD;51vfmmDOQ_RaLrJxw^w@G znWz-Ao{7d~GAhvwr>t?|jEmoL${H6*U%ce1%kQ)6aahWx%VDVu`W%+D?{rwuuGe8P zn{Frh{nGY3ENIj5XoX_g^RSS8*TaI=eUCxNM)3@i87PxMI;}PtWNg*RwgXC#v*>{| zxpZ9+KhMPKvZ#&OWhq;`tI1g!UV~6()s>;?HAvf4S9;@X6tJsL8}qBTm-QLcxz%`q zMKT#M7)32c3`Q}#A%jsi?U=zRWLs|bqXrhV?Uh*0x?3^`Wu|W#c1#B8%(c_9Ycj}a zWn*~kS{XrO>0W5sJ6Xsj^iLLYDLs^hY;qrEA)44rSqLWdQ<=Oc_f!_534N7S5gB?b z3$f(>%0krGW7&u$D5Z^TilW)bv#QxhWuR-kUH{xu0} z1E5Kzw*W>73;i>S*(jh<)KmkF0_Iw#XU@tDBnqXm1G={b7g`1>C9a#K7fD<*NiWCiCFun$yW`|_5>uh1H4;-9AFZ-$;<{c zhV_uN&#f&~I_=P&+o^}H+gAFK5Lp@pNszJ9kOV z+2M4&(f&!t*SRmtZG#~lE5W^&PPlttmYbfAjc>tbb$y?n>-7`0xoc1?74@zCEU#^< z&qSuak3DL8$k*K;{aoK%wPl`8v@_6VdlzI~eV@l6(O7rCq(h+^D`{Vrn;SH5t%fyi zXKb82W~Bx8{umqgKAnCV8#m2erOKK?GqrM%Z>X*K~&*_BwDL)zZxqVG1Q=8t) zboSV$_cfh}?bu6fclNanR0sTR8O~k$P(zqbsBM+i^QN{{eNLy*V)KVXL1Sa>0_ca3 zkL}_evNA~r5%+}Yn#M#GmV)*{gTd}?KAW~oju!U z=zTh0$1^yY&fTfhOm_43`q`L1r{n9V{Dk`}op8UT^Hp1y?`3{6o>%lSojqRj=yN&& zazeJxg1aBbn_su}WwD0i-S_>ENT(mxePud5maAWTEkB`tD7QSt@fr-E`aCnIPOED7 z54yB!s$}I>40fp)C3Y`z*)Bi@+W?((gSbc7;-cE~wr@tno#+Qp&Rpzkz4{9}LuI=l{()KpJa2X1Opc=L_gY#5PS~GAR`rzrPc+*pcPD(Qp~|uR zPH=)glyZU-oZy80dMI2b?~n-ieO|gp!LgK1aDo$@-~=Z)!3j=qf)kwJ1SkCe3S~|a z?C)XOoaPhz9Er06JL}T8_ zm+B@!p>wD4UIhPZXj>s4)ijx2@okKG3)7fyu2 zh7(}m_{X4hV;tijG>(nebIJ^)lUUEV4l^;TB&jKhPwF8E%eFBOLUV@qh7sDuZ zHk68=Ed^e;s}v4};FE z0atZ3l%CcD!%klhtVos--hb5Ho~B53!(hB$6@s3`=R(JufTv$ zFNC4%Cc%LR{t||_UI(t>Q=#m$3t;F2L!q?l3>dTUub9?-P`JVigT_vSs*?gR?$?W; z>JB#yeLo)#IeG>Z95NF|ex8Np^cfV-`UmFaC>S&DpHTLjOECR^L-F$WVAO4spknC~ zIOejqQSMwAxcIyHc`3#_5=#A}q3rYjK*?z*z)?pW2cr-BEtFr6`tv_;!m!wIl)nVZ zs-A*!^)jfe$%6rr=P=HzVZf>#h*1XyUH}DCXG6h3bufC^lTdO-GmJRs9GEcWJgB_r z5Y&S*%)_%Vw4?>fpTj!(=mSi*2qta69tQsHW-P0dVB~v#jAJrv1APj;Io%Q@wV^5=zD($gMYgNMjp|H^>;K3 zIr9M+aL?2DE}a$rr`~=%lKBjRyekTv>@;NN~d^mK7AKT9=Y?n_$(K*{;`0UT&$h$Ydu&sG8^pJKK zQ1(84=WdMuW30aj>e_iwa_^~d`1dZyc%O!n1A6fJ&#)ZU!3eku2LJjol>HR*e@!bezH~#?!WC6CnO<0eQK-F>2qU<-Z z4FD9*dlrU7J@Ac&A*de;jJc)_WG8OeE;WR(yZk$`ts>8AXtKN&xF#acEXV37Qy(AY^?JupyI)wVO^e#_4;p& zXAFMl6&SN*0gSC_f#O5mnBHShx#@Elw(HNR%d27V`NzN*v@;WPu7?A^pAQ4J6v3e9 z{})E({u%#X0VDo(A{2v)>0bn+pQ?gkZ@mWPADsw;A1Z+H6Apm#aVzjWyI|tuSHgi` z492|8#P_%XzVWX?Snl6|gZ}xyFbv*@%CooQyS$I(J{c-!eh!mzPDA@~GL)a?hLWqU zfQj4B0<-`Cm1(?XXN?!`CaN)D!fw$umHNEv7{S9&Up!7*aqY$-H}y&JdR3$U?-UnLjQk45tHNjopBK|4q*9PNBxQXV(L{Nb~i+0aMiIN zQd;~z@5lAWC_n2={HH{uyZQFF5c6FRv;L;P=d~y8Mm(SS7whl2`Im)2$}K|cP%R$i z(z2^TzY?YOpg8}~yAU@^{z*6DdrTMnLoc`&8A~Mp)EDqwDAs?*`6qRerJ3{I?to7>ap?s zmXf~lC5Y9B>-nAW1f93yd-Iq4A)ep$*C6J5qFVKKp&UB>Cy3cTt;>nm@0nD#d~5qR zXU6k8_(f!}{X4y0&+m+#q@U~&>-2T;`n{5LjP2rC+v4?GLGQ^o;w)Vm&+n%fAm;nI zmR=Cg?;*4wc^dPtj_3D2(jB(bOYhP1JL4WIPre9u*@AfezW4zZJlj3e^MWpKAjzIn z6M?N=-sHOwCx4>1yOP65cfQH`^QO)(-n@nifYbeMod4`Gh|ggDW=uOr@E3eWb^R^L zKVgf`UpR*Hbf)BYE{eRNq)uCn*PA()f7M5^H(=fe=7OIPzM#Z=f{(NO8Y!|GTIo0 z?fLMfn*PA3>qrN8F@K$I&qrf<*AHi{+~6yg3)2h>!-~BT(8H` z<*y+Ar{s?wsp%Vxy8ULv|Kj$A_7GM{`LUQ6_>B97BdHJSibVtQzLbIs^*nc7S1g>w z&&PfrEfAn1LcQHJU`kp7txvIJa`7>nqH3i%FWU04RKf<=A94h%I z4?uaBS~Z07&>3FPw)@N>|{X6H%%k@#-P;oLux&EfdZrT6E4vtXQF zk5yk_Jt{{?e(4>$K2+WNd*t&}r}Qy>Tv2rlwio3{=0By^d)15Bw zKU(s~V}GIWd%o^Ld#o^!)j0Ftjn~)Ze?k6Y z$sbDf_PFG)LK%gxR--OL87ld2()-KtkMdnC&+HwNAHzOHIiC9k8e_=uaMe1BhsQ-f zME%d=bl=82DJ?AjtZtX8&c-pV(#rf@@q8UZc8teSMFqNDs(J=(ufpS~(sSebeDhzC z&*P|qUGe<3;kZ=canvCjbh}h_D2^W#9!Jf5Mz>2+K@9h3cLAnbEiFdY-d0Op3|n zFhTG4H-_kaZe#wD+WRP*W}z-Cw==&^AFpm)jBQrAgZam6@1tzoLh1g5`5x_klug62 zzfkU!^?t>r+WROQAEP#SH|tMM{Cz&yj{GN?KU9C8jrUVL+|Ld@F#bM&qx#*>{A&Gu zHciH|QJ#|NUihT`J{$i;{gLdKm5X-7-{(o}iOroj^F;s+1a~l%Az>7A#OX3(rvMm|L;kqAjglsR%a*H~XW}P&n$V zi-vau193H?WOPEy)oR~9cVpi^Eh6esI#FC-{Gw7T_sJikv>KaR6K?kh!o44Vmde++ zS)GY6O|*TNL<;e@uMa^o`w*hLVcLG>hH1K{uG93<)JLc3J*BtY^GG{>p%YxVud2Gf zk@1E5-XW25?cD#mm3s|N-LS7SNA7*f{jmROWu$M>YK&KE`2SgTtmV@Y{eGpc2`Y8y zT9kFzvDr-@QEH2FwjCMu#1G2K%eXN{JC^1g$O|;%aRhyZQd6(SQQf=ibEL)CEV^?y8N^OU1;4I8`qWB)m1B%ch{EA!57?0NMd7? zzC@3;-kX{t=fMMguM(v>x*I2CWRTL>7>oO(@pra1Cf~?zYg9_|GqHU{FUPa6e^!rs zQ|nmo^;h@fxJrE$_(>lAc$bq-AIa9>C?4l-{{AmKrzaTxRpr^?J@kh6a{E4>&;532u^2Khsnily z>MGzS$zqJs)6@1kzmxOy$;IZ2p5#B(*MXnH5yBbjB0H)ex$@_4s;erFM1$KxyL+-N z*TSsSTgfs?h;g@$m{PD0Xxm?cdwEA)H^>Vn>*qBFX$KFNIEaa9Mal> z^z+b8L8UyHjd*gRSsoMD`*-;(TK%zDFjl<7A5BkpW>uZ9X7ibK{85hUuyw*Hlw~D& zLQ>n1R-Y&Z+?vvMelWT-));FG_@hnX_Qpt{WqWZ;>Yd)tRQrFvP8*qN-RwJEUP_%$ zc#fD`fkaAsv99jRDyK){oZecGVr`Ld{EZj9_CNdfJ+v)7lktW)k9YxDdXK)X+#e-+0HWEkl5M z^g=zit~xVLl;W%VU`WYN{r&XFJ$tu-K0D}s*&Qq>$6p-oh!5_LI~Jrnx7>PwEvWm8 z?L5#Hq*>~Xq4rQb}^f*zW_F9;e~j;BmlmPRA1;9dJ5wI9o0xSiV z0n33Eb_pqU5^yqb3UI2pAD|47!M!%199RWZ0IPvDKqasiSO-)A>j7zg;RDrYff`@~ zP%8~Aa5_*AGyof=T?F0(YzBm{N~ir9(l`KT0cQi}09(ZbfpY;r&;$g4W1WX2| z07bx5U>a};a40YxI1D%(I085lI0`r#@BzmF#{$OzGl1iP6M&h(EMPV;2bc?-2+RYD zff8UoumD&HECLn-OMs=oGGIBd0w@Je0!{`_1y%xOKsm4qr~uXi>wqd?J#ZRO4b%V| zfLfpqs0SK=Gk~*zvw<)W0nP(H27Cgz2)G#d6mTi_fvo^fbHo-S!z8K1-wiY4{tBda2=a zG<=SR&(ZLu8h%H^?`ZfP4ZovNZ#8_6M%~r$KN`M4qfTr1AuWFB#|YtvH2jc;AJXtc z8h%K|4K;j`hA-0aMH;?H&OyT;>COAK1cp@%S5}dFBMWm%OI)veSI$*4QW$nl>7>GU zS65ySyU;#qv`-rClSccb(KczcYZ~pBMti2wPHD7LTIwU(GmZ96qm9#O?=;#jjkZgp z?b2wwG}qM1n@Qsyv+h{vv8L!_!r+;z}xg22*KU-i@+<;!Qm|U z3kw|10*AA};Vf`C3mi`W7Wgx87w{M0ufW~F?|?r7e*o?Q?gj1#9snK$9s(W){s!y? z9s%wH9t9o)9tWNP{to;D_$Tlr@Gs!sz@LDpfZqVW2c8C=0iFe(1D*%|1H6Fq1jn?% zB`t7E3tZ9ym$bkuE$~hYT+;&Yw7@Mba7zok(gLrvz$-2AN((;P0aRlmRjB6*en6q_E9n(PeO9Q?3Uyhb4lC4Qg*vQIhZX9uLLFA9!wSAg!5=F4 zJ_Vno;QJK(qJke(@F5C5OTot|_!kAAso*CSe5TsRu2t!T6Qaztlv$C}?W<9)daU!9pv5OnBX>f1X_S{n8EKS{KEj^aAhQ~j{w09>qJ@v4 z9%$4L4V%>{Q;qwtQ6Dtwi$2~Nyws>qS|*j^-sze4NjB>{V~KM>!*(@n zSN{rt{c6~chV5$Dibh@6xbON_0QFMi-fPr3jrylyw;FX^pG}@AeD*@lEW`7p#`C0> z=Sj4Q_G}5Xg$iwUwf&_z;bHuHi2?-z z_XB&!I3!s*7DfT1fgB(g$OFazV}WtNcwhoh089i5fl0t*UPb11o@1;3VK=;8b8GPzIC(tAGk%EwB!#0@eek0o6baumPwA>VSHn0oV+j0h|S# z4TOORa31h6;1j?_z{S9)fJ=cd1D64p1788Y23!MNJI0xda0l=U;7;JT z!0&-S0)GbX2JQv!10Db#1Req&2L1*-0z3*l20RWt0sI~K2kHH-Wc+w}E|Q?AKc~>`23IH0(yhZZvF0!)7#WM#E+_ zY(~RoG;Bu0W;E;ySH6dwkPJj9zhgfnG-MTr(VHrtf;Yzjn zL+vBF5Jnk0Fk-}r5nG17-$!e2N~_3>Uf7X4-}TV+cOe4d_HCi$w;_6b>m{Q%F-9K% zhGy+QFJdqcR=TJ6L-yyPna?>-eGgSyei>oFWjaC`S< zq)B?-Z&h}0u8aiOBYZNNCcVBg+9f^1GICR$SWkl@+XT-)H<&n`c8FiEqwTqn5n#8D(^y*6w zwDjc5sGf|(Nl&$mDE-dq4VPYgyZ2j0kYwai%1B0^*0j83_u1v2U>GaqGy>qL$K$Y`XDEXqik%!riHN*Ps5pBX8mm+~|t z=O-hF(gXi_j=ad-m!9%BI3l!_BR)ZA1jrrjvPX&=7KXnUkH- zC402j9odwTX1V5tjvuf`7DF64%;9L^XlLY5Mx@;lNSpJ@HOmOKjDou(W-|IEqi-_G zBBO8a2%3!AasU9Fr^A{j+?XVl7Ug43PRR(nQ(j5M!^7*UBDEw@2;9auimsMMkz|)KC17j7ZAN z1NPUgv$Dz#?_OKKsg64)PhPvJp~}}9 zYKr-0RoKnFOdGMBq&k;jUeZqrCs&7>qW)+onDUcRJo=v*{!zlQjz8J2PiFKv&9~NU zmKSvzYwFjRMJO#Xp?a{z)z{gN}zI7{r^k;G!EJo&jrdOk=CKU6v?M%^%>QDrK=7#4f^S`rn+iXR`RK- z&Q3mc)s0N0LxBJ_IsAj>T>|Gi9*;hlK zLqBIErOgK0*3bK_d%J6<4`EpLA(%TmT<`4g_~z!p*1tL`Yoi0h_4`p~6vMQr!`bil zpR@HfFWra{Bc4oko^YHG%QVFO?ad8s{?=ATsM;o312m@U{LvWbM@_i7qcs?lp|Vn@ z5Va!Q7V*bzH918*9Byq2@3wV0XgFZ2^}$%UBN{-W#DrSa>duo@&aks;YK@25+w6lC z2UH-q%ik*D_F#LgBO=f5vW09z_Wocr8ji-GY>S332)0An9)$PW9&@xnII<@i+TId( zHrwK%wxFYiBaGV>jK)G?`JZQAFb z*i0xe zl1Ku}Y7Zy2U?@#8WjfTpEo_^G9~T<2ts?0+ZOuypPLPOd51yaU!;xSVcO`L_(Zrr; zaC>lf>Q+ROMYlJF+O~T;!uWM!D~3{nT_rZdft|tR&5riw;BKen!x1muvBrc2qDCZN zr9TpBZQ2t+$vP+6<_}0zDBzDfwFD7P72B2AV0DZpBH$BRyp2|Wd>c-i5v?6TY8}BC zs!LN0cgTs6cfTDCcTmh(%z}j<4##(eTb+&bo0$rg&8|@GQtE+tQ__WCU#oYONW3kU zyp^nnQ})Cn!C=6Q?Utt=Z+}S?MLOM#V~O)CAi*5*w#Cd#aZN zjxwP)1fqWL?lrV~KiKG<+U8`JX**o|VyHC160pneUT(%SY#8p*-q_v|3(0yN+@v$L zb;p6(H`3m&X{Z*bU0fY%Dwa=>*&f_;=y2n0FiuJ4tB?ee(B5jOs@=3DC8j(QsqbjF zU2!5&ytyJduBsi6yW8L!?F2Xp2~Y0`1$J&k64_|5ZrYNQc+u3nS6}8H7T2R zN!i85%q3rWPD?IDZlk!M`6~Uh7Ka*_H_uKhIP7y`WR6O4t5+QIqvW5Ire&3Mm3B^b zn^QL3>*NNnlUw$sdY80x`A++cc!%6ms;h3WeR?I@lUT7`vE}?WqVdP>SaCS{R8z07 zWltn*HyFVr&lIIK6$g@Yb1kRIxlOU+rWPf)D)F-joRzn+M>eGv)WKMs`Vid{@v2t9 zIp?ZcX$S-DN%eSJ1l}}dGaihkI7<93vDt{K)i(!khC zdvmBI9NsCMYrm;fPJ|qb5fvRE8EwAPf_u&nN1J1+9IbsU1_O+@#MDN#E5W$0As7b< z+#XZ%W|FT44UoNMzqI6Avl}!ird9`=I<{{QMt#n2lw-~nY>K$K*&l7Ue_B=VtBuGl z1RGE^_C#84Clbr)SAb)z4Yu3*>QGGPbGJ3wiM?wR71hKEqhX;h^bok5_F${H3@;Zc z1NW$+ryMn@fJAkV#=BJ!ZVgApppz&=9n3hMY>|~4>zFNCu>^sIo^X(Io@-mfs7XnM zA=&L0Sz5Zk+w|gG7n9sZD3?b^RaL-ij9@Yey{Ti{wqP_t^BU~R?vwY^lI|vrR;`Zu zy-Sk~yIH`cGz6o&z$;_2T^VkV*ZAAP#iG&#Hiyr*qoswll?v<+?v8i(TP4cgjD}n7 zU8|jTP}B{6p)&X%+HR8^iEG}|4hG%a7>jo_VW-sPM)~??!XJAvu7k2;Q2$bsNJL7C zRJWcK<)+%$BDB^%GijgQyBCS5+DNc{BkEsF?yc-ki9k`yA;L~!kGDx9g|8dCO8*sZDZD#`(C7@iiU>__+#PX-Q3Bf?D*qox2J^1`;^mhev?G1x<532=G6;k zu)1k`YHjE)KIMAcJ>8gL>bZ40Y28WUv?{`8!)mwtn3!ZnL68a87$bY+9Gp`KMDRG# z2J>?`Ku5g8wv13b$#HdOUXp8frIOf}s3A!=tvMJAc!zD<6Kju%Q{U#eZFZvYfoZ$< z$Wqf9_jt!f__tuYcwRIXNi--?9*s#)FpbIXxG^bxW74xtWAejIWAf8YV~SI5On%sD zOnTaBOrd9u$<0Ay%9BuI%A-(Y%5^m+JsCBo)xO50N2SK(XQjr}ho#13X407a=+v0> z?9`b2@YHO#LvR&7_FGkkqA?*P+uMTeaaHQ9LU?}AzY~v5$$cAmrj7;AgWj?&7HRG9 z&MB!vY+h=ccv^MnF*c>yNF2e9ZEOk0V=Xp|#t$0H;Q*5!vh3|7Q%gR^vTpNR)@^>v z_HW)&4iIkgo-$#ti4w7ItXIJT+nS=G=Iuf6DJ^-baVhS5q_H`O2mW9q+WwRz#gfEp z2vuoPqbQFXrI9^JG3_z_N_O!$i8wh@T3lmNoIC%yxSKdTU20Z|@)UtI+ z^&*t?kkD8embdP`ZM5CZVXx*~5Q=y`k8nBS0z6AHVq|FMl4WNs-hJn6S`SPoc|7kx zts~y6*GjBQtGgXc&UfaJy)T1wvL?nkeWf#E#E6l1T#`M~sDAs`(WU@X3Uav4 zHA`wo$F5%`y}o#i>|+j?T%CM6-4>-bS8Z6`-qG4>EX9Zs!v&2P-)h8&@vTONOb)*H zUQ$-P$y0iwd^T1-A)DuXXjqoO9tDgBasY|Pel-Rd3ycHC0~3G(0KZp-z$9QYFa;A+#Y;lL5Vk-$;F(SQ#)1~?Wt4wwNP51atZ1ZDxVfjPij;6z{^Pz;m+ z^MM7xLSPZF7+3-<1(pHJffYb0a1wAba4N78C7FY*V0qcR&fNG!y*Z|Z5 zbwEAP0Gt7w1)L3pfe3IO@G;;Mz(v5tz^8yqfiDA>0hh~{eu1w6*8tZ7Hvu;Tw*a>S zw*hwmzX0w8ek@WVS6yhCtZ*IJ%&4>$+u>Aq!o_Ie7J37+L7r+;P)!+ zjhcq4HO4MRwzS0KkD@q4$3NyUG3TdhbWdhJ68;RhNzQR5#43%gW4UNwNp|SI{r> zNnhtQx$n#LCU#%O!{N(fma1d7=ZGJ3E1FqRyL!z`-^|tJ8_N;YRaI=9IkJjCIEIWC zO-S;p(jh+Q#%kd+h>KJ|osH z&dA?yg(!X2kH6h@l~OHLrhG=MUF;sWzgvldtfNV~cokk3iWdO1t5U(jzjrU8ZTo0GaP0D|X16?ahGnKWqc!P2do)1K0_)0p|hI$06&m>;ldQ zb_06=;feC4>GuKe2R;B?2y_Bnzz2c<0zL$M82AYAQQ*IUj{zSCJ^@?=Tnu~?kZ09P zfKLPe1N<-W8Q`s&dI_FzVeh~U5>Q6#{ z5A~O!Z+7%4sCRk`^@+mksH0x!GpQE~x1$c*)@M^+BkxjE$9d_k)L}QekveQZpGzJ0 zO>+*>6qL2*YA{o7fX=TcO!+zVX6koCXP?)Ue?Z?x{cY&m*{g#(ulZ(r5$dT9QAgd< zJE)`1=$+JY-I{M=6d@noMjiI6*~4B0Thv@drszY$U#P>r^m){;k~WR{_n^n9{|q|& z`ii9dxh_%BbI^A=`c(KheLnR=g)>n#q3mO<9SmoAD2OXCH^N*FFpM{!y63M?MFg zPb6FUM6!}kw$`TWV;R-KUQb~npWZL~z~wX8`(x&188KqSNE$0}o_`)yN2@2*(fWAh z!_%@4Psctyk^1m7>cdm04^N;zr17c8fqwu`Dxaj)Gu1J8%033aIRNq@!ABQx@iLU3UXM))Q5! zKEyudCmtQ|gexP6KLqhd?-ws}ZzrBUmL%4ILi{DbXVfVB#r0bgWw7DOFR-_y6#MHW zow~2{woYfSeau*Dnse>r+}CBX2dBF<5&Jmz&;1%_pp5A?jkCLtH1__U(tJkJ@WrNH z)AVsZpGiNT1dCqXIV!C@ohSG4tDke@q)u=r%>s}7NH<+`x@~ld-U8g_QowK{t^P6@*rF-<9 zNqr9=W*@J}RqX2(xiiVy{>i>y$;Ryi7JVlBf<<4W5-Zf&{Yf0F)*n)dIdb|6_7#hM z6X~+(53%o9^tafDESE8reaWIPWuLO>o7uN4dYpaCqJNHk&7yywea@o)hJDYX|C4>t zQZ%{jixzzb`=mu*!@gZ8d(l74K77%?#J+sduV zD8wCz?Xf?3oLmb#UdBn8u|Ij7*aKbSIPnkcPaY@b#{T4SV(07?7$@b%{^W6z7yFaP z7t)uBF809w$QS#QC&)3`pFBb84qNmIdzCZ(BCb&UF8h-U#AlE-6o_rIKe<4ziT%k1 zGLFLjT)h0r~ZG+84nU&%J3rUQfDuA^hx4tKS^Ec9OpJplCr#nx{M2bn)*+a zGma$sBgz?1k|sggqR&v5bNeiHvGLDQmvj3(_3tQW+(|j(FZS4zG$+zdUP@hj?U$%a z9sM$Oxo?+I7vFn1b*W!pp)PiKg`*cqJM&fQ;%~l2U2N~`)a5#^q<*tXjBOP?&30Fs zG_kk;qb|Plo7AOleT%x3{kN%Kjel2DzX$)Wp)PIccN~41)c0$ti*NXU)Wz1mOI@z- zd(?l9f8VG6Z~Xg#qaPyYb{%!`**~N%=k_D&azC%9ehdEnnEK=RcY~uJDmHc_bvd`6 zP#4?yDRrs$H&GXxx|zCM_bt?aO%gBqQ~38YN1rZy;Wp~h=G;zQ{MpZ`i!I+lU9S5V z)E~ybUpo3>qsf6pmp1lS)TJ)`n!1$XZ>Y=t{4Mpn@b7ojrA_(0qaQAu;t$lNy}FCK z*vTKMi(UVTx?IPfsS9tp+tH5@4)qu6a*cnbF7^E$>T-?uQkVO7A9bk<_dEKLa*YpA z7hla)hmVvt;UVhcGajZc_VqXFlFwf1@@0=lNIy@opUxd!+O)^0OPzY0y3~UwsLM6| zo%-we_YX%u`WW&~(WQ-jlDhcae^HmZ{%`7HJ5N!Uv`;&_PwbZST71G6o~17B44(#l z;**}IF1Gm}>T)hGIQlVC<}Xs0GJlD>l=;il#a3UTF6Z+qbt#Y69Q|1F|F2UQzV-%n zY1`kVE_U@6b@2^vQx}`sNBuRA@*g+b``}c zCjUPkZN4V|KOX*Glm8ztT`e*)Si zP5yrZ{G2BLKLNI{$^TD~W0L>RguQ9<|C!)@n*4vJj7O9I&qUqS0_xOw=dn*4tjIE5zvpM|zdlmE}Uk`Ty*hG9R2e zxTGfkpA8nVlmE{FFVp1zb5Jid`TrdF zbxr<1N6wA>e=cl9lmE{xk$KA0H_7~D>SBlF|8wCdHTnNs_&-hlKNohb$^TD8Icf6$ z6J^c-`TvPhZsh+bqOI2C|0klY(B%Io!VhWk|9P-MP5wVm=1Y+O&uilIs_5W2n*4tr z+D1+OKM(#=lm8c^u4wZAVwoF2{$DKDNd8~^UT;20@m1b@lH$L3^GS+d_vVw79O2C; zDOu&sCn*Ve^GQlB@#d41+~Cb8Dfyc>pJaZ%H=ktw3U5Bi{1$IM$^47G`6Tmy;LRtQ zf1fv>Wd1&HKFNaF-h7e;_1=7v1$(^tBn!Uc%_muKr#GKu!86``l7&;e`6LTZ_U4l; z^n3G37JkB;PqOd^Z$8PwhrIbDi!5(G$)Y*le3C`=-h7fpQExuUqRYJbB#UnM=94V? zw>O_;aiKS#WO1oCpJZ{1H=ktjMc#ap#ozJflPvy|H=ktjtKNK)B}aMlNtTp*^GTMp zdhUn@_S7++UObF9k2sYV!Z(GR2tuf4S5P z^8e*hXUYGU<9=%L|K(EG$p4p%A0Yo<4$h^?|Ch`0$^TcN&C%rlE8rtF`Tq*kS55xE zLfR4X{}m`FP5!?Ed|#9QuRvR@$^Tb??`ZP>6=L(`|D{qN$^T2m9?1VorOe6yOXc|F z|D|7Mf0pQSeDeQNsZ-?trD)qV`Tt4MzL5W)ByB7C|4FF3n*9GH@o(h+C!stv`Tt4c zm&pH50)N!x|0jt*C;vYgZLB8$KN)^nlmDNLx~|FpPllap^8b^?4$1#d7T-?(f3mcX zwzfA0k{J%{60Qr9zu3MA;mx+%e|1XoWBL6QJTO$82NBgG9|I6V= zHTi$J)L-)da@dh3|1TGxK>lAYZ5jE$G-;arf0g(d^8Zz612y^oD)Fo2|EuJ_kpHiO z{c7_6RVW)x{=W*`T$BG-$a*Z~{}r>?Co8(tHS+%o;RfXY6(5!FK~RScYV!XI;g;n8 z72<=d>#3JC2U!f|5xI^Y4ZO{*rgP)9BD|8*!^i~N5buGJ#{uL9q<$p5Rr zAuaO%D)1?b{J#oy+#>(4+QqQ}(b2Y8v3$0 z{C_>#S&RICJ-D7l{=Xg^$0GkK_!i~PSD{>dW$uSWf_$p35PUXcISfWKSh|21;o$^UD>Q!MiTnlE!~ zMs)aEi~PR^b=M;Q-++5-k^gT%o)-E42Gkvk{C|TSll*@J+HH&ce*@YOi~N5Be3(W4 zzX5f~BLA<&y|T#vYw*qx zgO6F{|EGf=S>*qxqb;+@|4*0tOa6a4{EbEaUq78=W1^#MEb{+)v0?K6da+^h|9bc( zi~PSH?U+UWUk^WOk^eWKzFOq}4N^DB{~P4qk^eVD34d6Hy`G14h1Nnag{I^B^ zzfq1!{=X6SYmxtNL|Izo{~N)XE%N`3;F1>k|3+{Fi~N5h+E0u8e{MgG4D_0=N( z--P>Vk^gT(K2~`6&5TL@rlI+&p%L>{L-Q@2cYIdLz*eEO`d*9D^?Ih38+k`%sy6GV z7%`%h`Mz0_jQH=Hi3J>9Ut62o@UnS52Q1i3UMQBcaw{v#%xSZw^Lfm_=7s zRj(O`radX`Vfjfb+GCd_8PBBS<^O;;0r%p;XAvbZ< z(aurSWeoo*At>bU89tEoGo9BcLD6 z{fF=-_<bB!BBx?td}-H{)IB@f5?S z89u}CS%%Lsz3UvF=Qf>$cAd%#3}0mU62q4nzQXWThOaSvo#7h{-(>g}!?zjkOS8n8>yb(LX;5r*e6{20T_8GeP~-APBCJbCS=hALlcs43=~RpE~|h1+K< zuSwxe(s@ZgDV$s#YKr=!phJTcBti8HfSDkglN9{gJ>xl1Xw30P`cQ*%L_)g2Yt02@qrye)~7G8 ztE(2ro9i!*#-f2i^tPB@=u%^qBU^G-udUt^*cocBi-vb>Zm6qh3+#%SK55e@osfJy zC;9`m4Zga%3SV`oeWzIh*T~3{lyQ`iC_3@tnGqxDJsRic6dmJ!v+=H+oj0GWobQpy zJ00V4ijF$h{+h{mlsofC=7e9nZ{I#=UjNbV(Wc9!Dj!05k7qSPc_*P7q0IR|TdBij zKJRXXAGf~}r4IYN{Ux3&vGJIF2$^^O4LPp;=B~_WmA6E4?OZcDgQTk)$=`B!zx#18 ze9K+t9B1+kce&eQgYqt-`|bCG1_R2>f~YjdQu* zCm2?Zq*-6eNOyK&)|WEUon4sqrHt$^2jBNu<+&(im1y;&g*nS^zanSFn|qyoqg2jS zGdi{U;r;itsYMdXer_*exKyj_zTLIMT88b`^*`6k8NY&IDZ`WOuw9+P?Nb@9WLUODNa&CGub)1ATJoyqGs%MQcpY&(poa~Qvs+l>s*W$5Sr zCWZmVH}g0_Zf|3_o$)Q)4)J$8Sk61S-OBy)Uc5a(md_XDu`!BK<2-8^&8P`psvJfY zcu~2Gn&?I4F{;pu8pEhb?koAAmW-P0MddT9$cq}ssHtAmct%b0q9!ovP%o;0QPXuI zY9gZ!_o50Jb)MOF5PgYkhinNAe@uAB@x*(gw zfsSmH+u$amWS);mv4808+RmprJfzoDm&j*NYp5v;*ArIe-De~3w3v6FjTmucBDwl# z+b`#r$@r?7Yhc9dYqD2_8twFg>C)0td7I4?jIj&XE^=rWrSd}J!cq{)QWe-0a}*;Z z(=L=uZE)))2)&ZKZe_V>w>KV9{soT3G`LAzKW8H zxpRBEJNC|u^65R%iR(^YO>B zlTV;!D9f!gDWBdF9=LoW9Ya}eiG2Ea%Bv4vFsS{B`xEPfd)HNz$Jz#0f3{TAR%Vi> za*!?RaGQk{YiVuj^Vw)k<)C>;EZ&iod_=M_+som`OP8N!xN%RM6@`-(ZanaOvc!#R zSFQK;ea)K(eLW+ZgAcgW`pLluolhW3*AvNBK9Q{CbFgvn0bWo4IrzW}u74bSu=!-j z!3UU4zd87z^U0Kh4=kfhIXLpkgl1>J!GlBo#itR@jh8OpnH6q4;C!;hjW>td7cKPd zUcR(vZalVMZ95K?m9~A*`9!jGJsGySgUu&XpFY5R`t8#Pn@_Y)?gi5wJclms^&Oy; zXO}_TA$bd^X-9ASYnyfqI-i=pCj^YCsi|0}vLG4xj0#^S-MSg%(;Dk5A6e7VSK+K+ z6&tt>&xrO_XjqAx6I9FduUr$^4SsTwNvUqgLAO%}uGB?@8Un)j*F`~?Rjz;>liyX72hLLXUBDb4$K8=iUyD0P8 zk@WQ(jf_yCUF4Yc9F3&=3uV@GG}66Y|JAY*C;5rjJ;8JjfV1aeZKC>(Q?2~=&oE_`LyoJ zvz1G9*BE!#Soi1oTKzcp?JnIl&fPWMj`^VOnqa3Hue%D|G!qf?qu0W^tI*z+tGgz- zi6`4XzesmYag`$Mn$mKi?wV@Hd`fpsgYx8&)w=5tt$ujTO=DEop|+B%x~4lXg{iK? zl*B+eTvIv1RgQEMALai1Xjk#MX^wHz9P28_xoKv&F~_?xC%7>)-I!T!%xw37b8IC? zb-d?*XYhK+UI$??);IP=6YB8v8&wRDmS{yPh91vu5uHd zLFdhG%q?#2x4O#D++DZ1%I&W5bDYNX=jN%-JKUIG*fDdh&R@DQce={2T;rqcW%t@UF8q%Y24+;{LxkZBzZj(wmSc8D=k*%-FEH^tj@pKF~3%wf91{UyoaUT zd9R&jh1GeVt!%P7?}u`DJr4MQd*laQ-wMT<&0m!u$19R ztgokV`&5Q28J00D=kZq2$+<1cYHqJ#n^Vc{wcK9EcCU)zdj9S-hSdyf7;a#?S_wfK z>Uf-b?r-4!jR?PS_-SgBl+WCY)O&b-o0raObbJCoOOmK}!G*>)IF=P-UNw;LIr z%h1pLO$-B!Z{~4=+}_4;JL6lp9pdkHu$*^tyOsMD$e#VWd_KQ-g^f{+8s|M)jb_vY zFI5hs3cRRXMosjh@)%X>u3yK$%G=~GR5`QFAGCccl z#@fq#`f57{_zk<25PR(`dA9c#4{n(Ztw+4CGNaQYz1?12y>?4rXQ;U@8s4$Fp{_z| zsaMPJSGu^&Nt#pj9*q2jUT$fY2_*{E;=_e%RMg)mRaZ28)+2Kg~|%>`~+8jf}>cy3IZ8XsAx#F~Q!^uq_l$ z-&5f1sjA(yC4JWz*_9qyXs53XN6+_1o4e1(K4o`JsQpg4`yDvtv>i#OoVF+Vl+$)O zr;JFQ6gfHRtfJvzs#3W&_sPq+@Dk# zx85Jv>09q_j|JO}3(taBDi5}oKA|sdHlOVF)-^pOg4*zN$2jWt8ZKtIn2~q7V?ubH z>7_AZ#E22oCuMk$k%LfjR62;;?26$DWYqM?p6wm6P$1mCEwsHj))ufIK#CKq z{jQ{#nrCXBk%RmRBu9MLE+%HfHQ%>GJEU3Fzv z^4VOmIveFy-%wwXjeIt)*|M>?sioI+tNg94;c&ZeU9dGW(7fz?0)3UOucD-4?%ba4 zj=eLZe0ooI;PMG%>3SmB$|sVQe1f|pLv7o3J}pCQZ-s6?kv{XO^Tz`I)`7bn=HriL zC!aveP?lR~Qa-&UJaG9$I)<{`68ZG;&5Qcr1%uk3xIeMp)8Hz~V{L=0KU*qlD>F$` zImi~ZIUMN7MmsmSZi>wFiM6yg^_8w}P353@NG#rwm3%~sag&C!++;-C;l@jspJupm zPn^}AnK0Dcc;NYDi5u6hTJP)onl}&ndPXz{A8@JllY2e%J({TbohceV5&L>;kcyp+I(L&$u#Pb5p%lVO`X*nBee=>yEC-#&e? z`9%BVUNGIkb7*hGv(IOjLEIta6K>kk+y2_79fQuNrtinopDe=O#!2)9K-t^NLdY{Dj+gWIxFZbR(%3p3=;2P~hyeA6K9AaQ@M2>?aO>9^mi;DK=-WS-c=&-3SxvW()~;Z<+5Y++ z(QU=RQ2T5%4`DEUQt`IdA-+F$K5auzMY86bhFf2R&G-GiU()*Wdh-2&t!7Z>=CeJt zEi3u#i1gYibs+KqpJ|y_+v_B@>BDZEZuJ>`UQg09s8d7(c{Z%BT9uW2`Zw-4@O=6= z?l|y#hGScpX3SmB$|sVQd=9p8x&dBK#{CR~%%@ZJvk!F8 z`Lu>&@u9mnb%x^&lH(11`(x*mg>fJ!pFO?yh99u&31^|)tb&^Q^}^yp0e?Ky-AYO3 zy=@~#j2JOu#E20iMvNFSV&q_!0#gJdT~=3CZ=6^Yj7P)g2ctVM&9|}o22hyTkzhRe(a$UNh4-b9MQ~ zas+i%6&q)cqym^o8yIbK(=l+^xndW_9~n`kck>^reMVN z7b;;F_Q$*$IwJDkqp=WU7vLA8OnDeFVuZe7?>9{>BE#VAwY&IM-V|WeQ`!SF>BxUC}!>3{mad)eY?MywQq+!AG7vtKd#5D zeQVafP07csecNv_Yu^qmFSGXTh~vg)?OSEmzBOy#4v>SJwQmn@4sO=I9T*2UYv1;Z zgPXN)-!U_bCdC^r~(&|S){oG2c^JOS6 zU*2MMz5?Zg7Z+Kbui}99PyAAK{uqg`xhYR|-e4=as`EE?;^|iBYi{D#p?rJkDAoCf zd*nA=-2rvUn9;qg-V)lpnno)?GPvOo8sQzc+eM zo9=Q;qic+FK;1RgjmdYj80RYEU1fr+6u8PnS1ELrNv<;4J>V2Krbtf1x<+?Rb(LwZ za)_%OYF`dcemc*&^Dg(=|L7j@FzmWu+sAd+;qG-EVgG83?mE&|@^sfxP_DT0X5DqP zo%mwi<#W>sUAOadw(d=&l*I@@d_5ysccKyH0R-&2)c03(9xT{)z6I?e3c6 z#>{n3{zO|DtGnj8x1iX~w8TB~d|SClcP((0g?5@8-L=S$`IPQjEHP(%T6f-S+s_!) zd82DcKXFa#r>=67tK94=x44OKb$|XdDz?~ZZgMUgd7$RjyLu?pp1}tU-x= z^SzJhu1fdkYh7iXt5mtldiPf!k^&E%sJlLFE4y@8%sq14P2AxsyWCypyMN_9&gQBAJ9vt#7F?=2fA3bLUs4f)B3~h9 z1CgVQ7)fq4VHR!v(8&Jsw0w6ZWWjO&XkpH>+pox3@#bE4hpZC7+O$YQ+0X4I4B;WK z`*zn3OB`hD`k(9Nj9evlRE8@VmN6{n@m8^>SFob5=JpyoS=Rxs<@P$d zh$@Dz^E-`UHNzT)8K4ud`r8wKZ;S~JQ6vYQ4_pWIgBdsqH-BE(TmDsRG}9&hEbCkg~N|!)MPIzpHW3# z)Hp^>^`gczYMK`{fl-HgQ3Z^et`kuc8Fjc9Rmi9#y;GfJRgHU(v>V71+o-D^pGDZ^Vex zN}D1uV#LTu?{g@qsb4Q|4uk^!cqrU%Jf#sMMvNFSV#J6MBSwrEG4k$`0#gJdT{f53 zpE>A*m>wV_ModjGV#KKfrXFM>qqIn(uxc8r)|f&W+0qh^M@madcKCPsi(?(_#er~J zNhBI>?g+$VB|DmTmMkbPUSs!ZPbk+rf- z$rvHgw%>-7meXECz3u#9bZ4wo-V6!{jG2sZyC_T8MQLr*jv!d1F$rTAwq1-8%P`hp zB+V|gc@xQq5hJeT6shm>+YKsb=gsG)?3?oZtvN-b@3QxAo-yCvKPvgRqwjjx7eIbS z>unn`GHj(e*wnFod#HW8&v~#Mfdt8LWg|%qo60+w*3HXc?Xdi8tj8hOJlxid%EtHi z`3RQ1HI@RhdT7t-YBu}Cqy~La*;~uW-|O!W*!Aq_{U`@4p9?~fp}w9BIPDR`Zf&am zt>xr?b+7+r+rPD(2A)rr)^e&{wcgkFHE$mD_0&~|o3e2|!*ZR*OxM5~@ZIU>8d!tQ zCy=G%Hc0RFQm$y7H{Q|>m4XjMo zdahejIp}sS7VpSPJ~o%k)>>QPq2~v7K9R_fl7w^Je1_QQ&Q%$$cR$9gcmFQnURm(z z{zxR4jdDAfeC>e{r;hcu1oMc0&h2JJ&mnov9e6&&am`|XbjbUL56b7y9<1PiufaU% zd;(dzo=CRxiDV_8gYEfqfY;OS=g$G=)9>fc!RC{-=g&T#8|o^`V{L=8gDn-cm6@ce z9ApbL!k=>o+-~>tId{PM98Ax-2g2Tl+jH*bQ2U~VzTL~0_RPV@_lrZ|P+4g^2AEHx z?FdJkv(gqu`{XLP1%upVItX&Xfns+#U8i z>`C=U_8Y4)G7RgF`O=G#cUH`r(?*PV4--a=7%?)E#jH7P#E20iMvNFSV#J6MBSwt8 zyTztczIc>zq0TWXbjF>uL>Op2=)|@tyCL?~$=}}6JwLih=tL+%z`)Dg6_Pg7t zTe<#0eo;f4IZ@`7iV-e3tE<;;3G56t*G0oSHaFB&v;}s>q^5c`4Sz)^@U5@hLYcLF z!hOnq-S32d$jW0r-^|&{e%*9to3lpl%nR(dA+E&6V|Eog68HwTUehuYR=$Yv2DbiY z&x>6Sd9wKF&hxK>iyTSvPM=*)ZZ&!^O^DG1jg+~%CYEb$}fBK#4;_aS`RIfGfR z_jv|4V(TIA43s-dw}&&Bz1cZ~*_R<)jqq`V)d>HC@NA{#tU$OMVZ=FuIq&c5476qE zneiFSdB{0~xrZrxL5{hnI%P3ezWlHS;pd$*nERA-26JEQvkVIRcLpb(>zu)fH#<4b z+vSx0ybn1!7tcia8H8J%GbrAv@_IP~+%I(%w)Q5@z_W^zfvXdDs4SDSEB={tc6QT= zaw$38v5}HS=PXM;?c`ZP*gHeu;Ai^Sd0|nEw*OjY=($U$r1S10l+4 z!6nWaEVxYGf9TalWL@&y9?GZB^I7nMb3O}aIAyqSol`Ok-{YLu!t)VE5MJw?&%&Rm z(S4LipLs4Sbn;xZ)yZqo&z-xl=uZfnm0Em+<0}?7IC(BUx34l#zf4#uu3Aq+n3uWD zF23G5pC!jQHoN5Sjx{WK(Xoc5@@2d)AiUB!pQYbZWBRb!U#8TWUnHMhl0BED+^^M{ zoa-`{-LeMf7t6lr*wM28b9~IQ=bd`Ce3o;r%a`=&V~$L*pFYoE`RAQ8Sbmdp1``)b9j}sQ(d|O8o&~8ufnxhfsfs z*DvxmFrCFD=X)4+`Q72vkH)_vsLxT(c(~|`l{4ZkdbyJEZbz?SnTjs+dyb(l4aBk3 z<*W9`QU3t`&7dx2ay<3V;@=6>zs`Fjx{SBaqAnxqv#I|Y|K?D?2mkmPfBgjhok(5g zZp=$ExMJ$#dA~)M@|aIu@?SuG3H~jlE;A1nQJ3poO#LkUTS7gAe_TDt+Kqq9sDDH` z^9Dr!U;JA^{W7l^u)c|ZCsDsnIkO-{{|Ww`LS63rsnq4ZbEM6B&}-|hf8t*`^_TIF z>%Z8h&$SOm$$jTKDx;>;zD1Yv<~lB;uRL_F_l<`V6@y{ zu0$~UO8ny&{6~Ke|45id-=OR{Jhpy2{*mpCmTTNbUFPv^r~Y^P7tv+DO~}!0x5ag> za>TFfq%POU^^$U=PH@%A9J#0bJW-C=1;6~CBlm=BkK{;soJU>Gi>p!ONXWIVaxTO_ zQr#S>zg$Zq=d<*EqJI_t&ZqwWls(_Z*5#h=p)PZNxL8Gw%xiitb@5~Gqb~CU-%nk> zYx@D}Z{gpCj-ET7epYnxb6wQMXMB*l)W83tE_VGP>T<6?OkM8tN2p8Le3ZHzF@{JV(yZTNRF_21y%C#lPfpifa3A9abN=UHqUM3?sAf2fN; z{$J|i^FBje{Ml!ziy!(Nb*aanr!Mv53)IDCzertd;Zo{Su3w@q$M`aJ@k^Ic|33a* zPW@MGw?vovcm;LwKVPN(3jTe~(Z@)I{5o}M)2^g0{^uLi<$hg7{Uo-9qKgmsCUv<- z-=Z$I_HF8N{#R3%`*00)xt8xxm)~7WUE0?FM_umGcd7pY|Gr0EX3Kt``lI;w1L|Uj z*HM3y?X=JW;Q~LRF4uKEb!o4DOkM2o2I}HdZ=^21>L=8tPXCm;*yByqrMz#Zej_=7 z=yJ}tQvV13{fxSl|80(*FZ|+m>e4p;oVv6>cTku1;TP1UUi^~!x#S$8i*NW9b*X2+ zrY?5<8|q>szojns;dj*Kx_?hyj`0WTQqFf#{|7mZ=;G`Ct`gq~3f2S^d>>t#nzWTpteTKSR*R#~cH}IR`uF3xkc5zm+=yJ~F{{?6(H2Hr4>boZYFMzMov!6VXwxHTi!b_>m_6FNBZM;mJL>Sen*4v#U-@h%I{c6(|DOaOpvnIyq0VXY z|H-m)0Qvu9xi0em$+)+g{C_gaQj`Br#`$XU|H;^|$^R$A|7i06$>6`5{C{#gpASWs z>m~o6EZ0l^KNHPr?1v$fRZmY@v zr=T6wM!~K6!?2h{yznNPLux^q26oq|03AFCjT$O z{nzCGMYs=|{J%(i4*7o(^3mk~MQFP<`F|0(uqOX60vFcg|3%=Hn*6`$Dn7T14o;-W z|BJvcH2Hs#lt1}@5!w(<{y!D|Rg?cuh40bi|5L@5$p5E`{gD4p75gFopNewTigMuAiDTT^8cw{tXE??T64APC0HYtO2!cW^WNGI+1p3!bh>h*Rdr7M&+ zCWGS%_jzvy>7*@wUk2%lq}|FO-BfAQGDtT~+Pl8e88KqSNWWzweaI+#;ADK6jCbn9 z!>N%GF7CRaN(NEwbwgE+KVYoG*hRuF#=7fImu`v$qp{K*{=m-CSTs-yL#f*nZwa>> za~X+tF|LPohTq`@hmE{bLc7S5mPDLGZG*3&BN7QmV@#q)dE!Y%2Bx+!tH&& zF|ppi%kQfWweJi@drFdD-%wvM*mIM7`a1oMYqo4GZi%^j~d*| zAeon&{44f%^nRT3dS6wW@QLnkbYJgxeLZJAf=tE;Q%(Q_Q`eUEJDY~>TlN9 zK+90()0vb{ZwU`vKCPixeCTYg&dn#fe}s4_A~yKDDdX_m!r$X~&@RvD+yB&|gnhIYh4`3aG< z8JL)F==A9)%{O$E`G$`9hRy(=bImt&4({h%^9`MWJ?ENl=wzManQ!R4`#G!mhE5Ot z1Lhk#{m#dHLuaV-G2hS`QtoBGp_7`A`G(HG@-g4g8CY9rzM(U)>oMQZ>Aw^xBO_ck zm)D|V@6CJF!jL50g!R>o|V$)Tbg#I^`O!jF=E8XyGBMSo#QVK?jFP} zvj5-Sm%vF?TzlW!vvjfVGpy1rAfN)uA_$7Wu*fnDGJqf;3_~+an9Z3X3W{O|XH-;% zXf$fnMB__>MxRSUNP;^Cm&E5YKKB)Q3W&QR0`i@6>vY|^`|R*~a$}!c@_(6GF*Agn`RebneZ>Y3Io7$(;wo!jXNC_l zd~nRKqBClfjc5QZMcGn#9S7vuj=E_|E(xq1B%3R0#9LUTA&Xvh1WY#{JE3^L3%z@06zGAH{ z>uF|1?G$|GH^XXoXEiS0&x-pcN~b58Mxjc1~G665Q7=GB#0pl-0>hzVc`0JIF*6x3t}h( z*AK)n2JQq9!x^~#AVx5713;X{zzqa3l7TxB#3%+1e zX5dZ-F@=G{Mf}+e+!zp38Mre*Ok?22f|$X;Vg9#}fg1;6CIdGfL=gjrzlAc3fy3Wi zIfsFp0%9%$cQ%N54BS)@=Q42kTPyP!xalAkFmU)g!RIk>g&-C(a5F(HV&L#+%oj6o z_){t8GjOv(EM?$|L6k6X3qX`Ha0@|{GjNMQ{D^_WUus!r;}T?^tt25u9GhZ(qAK)lPq{Q|@;2JSWxA24vYgV@8s-2q}R z19vBg{S4f_APzEc_klRXz-@p_z4|nW zZ4BH_D0XGwo`)i5efc63wRKch5bh-?rWm+?LXopRdKJWM2JSTw#SGjVP~@xw-h?7& z9q=|3IsW~-P~`ac??I8{-@gw8 zg(An_-3LXEzxy#1IsWc`D02MWPoT*0cRz(9$KU-7iX4CUb0~8B-7lfY@pr$1BFEqT z8j2i$_Zuj3{M`dk?2U*_}Sk>k>h6{ zg(Abxwl8SHCn#RRz;%Y=ItH!_6fb4q z@}PJb1D6lQ^-;LYmANuk=1O0JnKu>8ys2R3O$9S=Dwugw!OWWqX5LgV^QMBCHx8ys2R3O$9S=Dwugw!OWWqX5LgV^QMBC zHx8ys2R3O$9S=Dwugw!OWWqX5LgV z^QMBCHx)2xfj&F!QT|nO_ym{HkE)R|PY_Dwz3I!OX7; zW`0#L^Q(fHUlq*!s$k|<1v9@YnE6$~%&!V&epN8@tAd$d70mpqVCGi^GruaB`BlNp zuL@><8IFK6BJ9w(nHWd4`4?%Bo3CkvVX<*Yw;bMnc6 z`)^J@8E_wR^2tKxf5$V%!9GqtS;+h^XC1JglTQ{h|I1kie9Flu3z`4rtOGvhQ!M0S7txWFhmvoOQqyM+He6o=FU&i{w%KtLfA6CAWu@12EwTyLum9J&21FZaNDFfG#J+M`pMN* z^b-|xw(na;PB|h~9tLy5k zD-+XGYc8y=UG4)IUs{@~tAl5+U+GgjVRd=M^1z#)HfnnCvt#AN^170`x>V(|id3yX zf{sP^t)tK8^P#LGi3_SLYs!6ZEbD_CtzdE?+~21$OX^BXDnf2dfROH(RS?`FSQ*|T zhzM#CteZ7yazI5;Q$gkUy2_xTIXksB_kybeR*a1TEF)zEGaE2P86o#U7Zh%wa{TfgE?L8H-Emg)@xins+z!e=sRoO!&B8dhJ9M=*C*+^$Q}upF|O*M2lAOM zdR18Cd1s1VqsC#Q$KO7ykp59N_I)@`^eTO5}1rJ981Pw=LbcRXNclKy}gT`kK}C z0hNI!2x})+mj(my@bZF?k9ERGXylKvKsE@ zOjr0erlZo?l#Z%^X9;M=bhUpYrfYqgP_GJVKpo@HwtkIAV>PJp(j4b$JgV?-JiXG@ zczRX9vjjCBRR=U4)%rD_Ru$NI8pfX+d>YT`0Z*x@UIv5};xi$S1fg_yA_^0BALmqw zx>Fd&hpJ|;t^!ahaOSz{?K>1#udXdkCFazoQgs28B<)3z&*ygo$3*o1bM+o`R@SCU zmP1wequ8*hwU~_zU6k3dCF@=r8yL8r)PVj=RvQrL8~I?vR;f-Dv!z+=;e36E^)Ac}J#BKsng;%rzb#o4e3inD=X6z4=mQk)b11KK%+;+&vBKYMnn zvbsK%uqLrjczktz^`QEI<+SA`LPJ%82A?8m-CQ_(+W49pi+KEeVY!@1Os**L4JntD zt|~!x30c}Q&2;ET)x6J;&#bwWfw2S|6Wu^AY+wMwg$r*{7dRkn;X*}w5>bH+8yVW8 znrjl?wN4w&u#as_bRWC0fqm@4h4--w9MH!uR5X=F^|6f%?PHCb z!~57tQlWiZP*S^WX3>ks z=uH$d5j0qoW2-^KoIDqd+utlV&xH@LiY`>pIM+XVxTohq2D*AW(%;w9$4(&iXrO5B zaf1WN#|;c;A2&LHe%vrdYex}~295TIHE<|hX}Ac!(vcx9whP7`=PW1Ng^wQRL2kAi z65ZmVj<$n**0Lr{gsZI~!+dQQjN8~O$J~YgA)OQAn!8Y8Eni&~ZS4RPY3TsNvT}gq zSU7-1TQ>kjS~mT;LaZ9VA}ty=LxeR02*;8EEXs-zByzA3jx}%y8!~7J5iwvG7E7T* ztrenzEftP|P%8xho`p&SL#hRW#v@#YMtc@Jt4C?}@D9b_+PD8RS3Sqg89$`rc5wa}j7!n&6 zm3`xy6C27%)Uk|;jf+auF-?n&jEW6042+FpWI7pU#)*oGas3cuC}taTbFn|ffH~ojT@saxMObty) zFpp?O@13r^!&^}H;u1&s``TPQ|^UE(5A!V1LeE_Om#p`*GhEFEkEqWUv3 z8BFtKEu+uF^FJ1Zm;SM#q1hiB7M=XDu_3u18x+}YoXn2}WaP&!TvU2ofq3JMokv$_ z{^*RzqAN_gZI)ZK3_OrPNOh^xCV6Tdw#ZZKu|Xb$+xB<>PMhPYcG#NW_a__U0XS@n z_rqy6#Z&3FB_4ooLwqY8gToi$>1JOPb+2z-V7Iz#LqNT<3Ep~X3%vcMc*RrYr4FAr$9suSmJ3uk@hg{j(A zbxTUEH(63sy3*;cd8-}%nz!2Huz4YFkIjp4x@_KhhtC%B4Aj|Pgu`p|`HY&|=B;)6 zZ9WL6YZL@fzL8H0C@08U=kX_YQsbN`tlGVQ#fg7rRMItMamyR_UNA{qs2aNw3j}$zPpjBv-9tnz-sb1K(9oBi^NTvW|bH zcW9+~#;x+UoP${$gLAF#fO2t(R-==MOC8iKzO>=04{J7!C|p_>l~&b7I9U#WpPS_X z1UXs`P=KrD!1y{_4uqe(<^L>BqvOE%xm?aq>~*>v^#N{|6XWZ6`9R#Rm$OCO&X=P$ z(EW0t{2egwjodDn7vbxKd0|dB%v&Ee8UtK02PV)NbD;d(F=xB@I%H0W*Ch+8cR6Jq zn4inw0R?#j9-z}7@KpOcXF;ftnc{NLymcYHZ)qh#kN_ENH= zK7f*)7+*^Efw(Ez*&=RAcGLz^vIFH$$=(~eDcOtgrDQM6Ny*;&u+bPm$qq~)B|A`l zlLM>Cd#ck-m$@?6|JMtD&l}HU#UE$KgNyKtR6PGQE`I{w zI+L`eA`6RV63>jp z^C0o8M?A+7&uB~-@@z#sHxbW7#PbgEEJHk}5YHgQ^9AwjKs*-^&-}yl{P3(kJckd@ z*u(Sl@N7Ih_YTjr!}IF!EIK@A4$qLo^WpI9H$2x3&uqi<*v>TMd24u<8lIC@39l+c zo`r_zoZ%T}6Y=~xJX_9?XO-bOWO&9Ho*#y1gWah#i}8FecrC&6w+wkMRSCS7!K)Nr%kdm7c&&if zN<0G#&$ohCg(1(T!gHr;;Z+AOq>|O}`Z2sNgx5vzS_7}O@VXdYm*AOKc%BuWRRyp0 zhCJi^C-7>3*9Lf90k1}QHNopjL!MW4wIR==!n3CE9I5LJc}`R_yf(w@r|`NSUN^w& zXYg7DuN&cY6TE&7ubT~dUev9IJP!)bdct#@@QkKk!s}Q6Pe*!>*+oTjbY;6Kv**sD ze|PItQ=2N4_GWovWvT?+9Bf*1^3)lVVEkuk*zPUuum{c_gtR6o$QVjIVP5-_F1a!n zWl(iXf`g1{ur|5suG#V~#%&}&LW$=Zk$gk@Gc#A_#&C)e+$2d4BOemvqa@R}∓k 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 diff --git a/Mac/Build/PythonStandalone.mcp b/Mac/Build/PythonStandalone.mcp deleted file mode 100644 index 451422413e7eebd867e3c393d0da118a4d7c9b6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 230859 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 Q1Y{zvoPUCUw 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 &~oohd#;$eT~F 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 F`+v4@#jOAU diff --git a/Mac/Build/_dummy_tkinter.mcp.exp b/Mac/Build/_dummy_tkinter.mcp.exp deleted file mode 100644 index 87b86e873d76..000000000000 --- a/Mac/Build/_dummy_tkinter.mcp.exp +++ /dev/null @@ -1 +0,0 @@ -init_tkinter \ No newline at end of file diff --git a/Mac/Build/buildlibs.mcp b/Mac/Build/buildlibs.mcp deleted file mode 100644 index d1684e19337cbfe95dc1373d73f61caf04bcc971..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 132924 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 diff --git a/Mac/Compat/sync.c b/Mac/Compat/sync.c deleted file mode 100644 index 1a8d3f965863..000000000000 --- a/Mac/Compat/sync.c +++ /dev/null @@ -1,17 +0,0 @@ -/* The equivalent of the Unix 'sync' system call: FlushVol. - Public domain by Guido van Rossum, CWI, Amsterdam (July 1987). - For now, we only flush the default volume - (since that's the only volume written to by MacB). */ - -#include "macdefs.h" - -void -sync(void) -{ - if (FlushVol((StringPtr)0, 0) == noErr) - return; - else { - errno= ENODEV; - return; - } -} diff --git a/Mac/Contrib/AECaptureParser/AECaptureParser.py b/Mac/Contrib/AECaptureParser/AECaptureParser.py deleted file mode 100644 index 3d74f64e85a9..000000000000 --- a/Mac/Contrib/AECaptureParser/AECaptureParser.py +++ /dev/null @@ -1,362 +0,0 @@ -''' -AECaptureParser makes a brave attempt to convert the text output -of the very handy Lasso Capture AE control panel -into close-enough executable python code. - -In a roundabout way AECaptureParser offers the way to write lines of AppleScript -and convert them to python code. Once Pythonised, the code can be made prettier, -and it can run without Capture or Script Editor being open. - -You need Lasso Capture AE from Blueworld: -ftp://ftp.blueworld.com/Lasso251/LassoCaptureAE.hqx - -Lasso Capture AE prints structured ascii representations in a small window. -As these transcripts can be very complex, cut and paste to AECaptureParser, it parses and writes -python code that will, when executed, cause the same events to happen. -It's been tested with some household variety events, I'm sure there will be tons that -don't work. - -All objects are converted to standard aetypes.ObjectSpecifier instances. - -How to use: - 1. Start the Capture window - 2. Cause the desired appleevent to happen - - by writing a line of applescript in Script Editor and running it (!) - - by recording some action in Script Editor and running it - 3. Find the events in Capture: - - make sure you get the appropriate events, cull if necessary - - sometimes Capture barfs, just quit and start Capture again, run events again - - AECaptureParser can process multiple events - it will just make more code. - 4. Copy and paste in this script and execute - 5. It will print python code that, when executed recreates the events. - -Example: - For instance the following line of AppleScript in Script Editor - tell application "Finder" - return application processes - end tell - will result in the following transcript: - [event: target="Finder", class=core, id=getd] - '----':obj {form:indx, want:type(pcap), seld:abso(«616C6C20»), from:'null'()} - [/event] - Feed a string with this (and perhaps more) events to AECaptureParser - -Some mysteries: - * what is '&subj' - it is sent in an activate event: &subj:'null'() - The activate event works when this is left out. A possibility? - * needs to deal with embedded aliasses - - -''' -__version__ = '0.002' -__author__ = 'evb' - - -import string - -opentag = '{' -closetag = '}' - - - -import aetools -import aetypes - -class eventtalker(aetools.TalkTo): - pass - -def processes(): - '''Helper function to get the list of current processes and their creators - This code was mostly written by AECaptureParser! It ain't pretty, but that's not python's fault!''' - talker = eventtalker('MACS') - _arguments = {} - _attributes = {} - p = [] - names = [] - creators = [] - results = [] - # first get the list of process names - _arguments['----'] = aetypes.ObjectSpecifier(want=aetypes.Type('pcap'), - form="indx", seld=aetypes.Unknown('abso', "all "), fr=None) - _reply, _arguments, _attributes = talker.send('core', 'getd', _arguments, _attributes) - if _arguments.has_key('errn'): - raise aetools.Error, aetools.decodeerror(_arguments) - if _arguments.has_key('----'): - p = _arguments['----'] - for proc in p: - names.append(proc.seld) - # then get the list of process creators - _arguments = {} - _attributes = {} - AEobject_00 = aetypes.ObjectSpecifier(want=aetypes.Type('pcap'), form="indx", seld=aetypes.Unknown('abso', "all "), fr=None) - AEobject_01 = aetypes.ObjectSpecifier(want=aetypes.Type('prop'), form="prop", seld=aetypes.Type('fcrt'), fr=AEobject_00) - _arguments['----'] = AEobject_01 - _reply, _arguments, _attributes = talker.send('core', 'getd', _arguments, _attributes) - if _arguments.has_key('errn'): - raise aetools.Error, aetools.decodeerror(_arguments) - if _arguments.has_key('----'): - p = _arguments['----'] - for proc in p: - creators.append(proc.type) - # then put the lists together - for i in range(len(names)): - results.append((names[i], creators[i])) - return results - - -class AECaptureParser: - '''convert a captured appleevent-description into executable python code''' - def __init__(self, aetext): - self.aetext = aetext - self.events = [] - self.arguments = {} - self.objectindex = 0 - self.varindex = 0 - self.currentevent = {'variables':{}, 'arguments':{}, 'objects':{}} - self.parse() - - def parse(self): - self.lines = string.split(self.aetext, '\n') - for l in self.lines: - if l[:7] == '[event:': - self.eventheader(l) - elif l[:7] == '[/event': - if len(self.currentevent)<>0: - self.events.append(self.currentevent) - self.currentevent = {'variables':{}, 'arguments':{}, 'objects':{}} - self.objectindex = 0 - else: - self.line(l) - - def line(self, value): - '''interpret literals, variables, lists etc.''' - # stuff in [ ], l ists - varstart = string.find(value, '[') - varstop = string.find(value, ']') - if varstart <> -1 and varstop <> -1 and varstop>varstart: - variable = value[varstart:varstop+1] - name = 'aevar_'+string.zfill(self.varindex, 2) - self.currentevent['variables'][name] = variable - value = value[:varstart]+name+value[varstop+1:] - self.varindex = self.varindex + 1 - # stuff in « » - # these are 'ordinal' descriptors of 4 letter codes, so translate - varstart = string.find(value, '«') - varstop = string.find(value, '»') - if varstart <> -1 and varstop <> -1 and varstop>varstart: - variable = value[varstart+1:varstop] - t = '' - for i in range(0, len(variable), 2): - c = eval('0x'+variable[i : i+2]) - t = t + chr(c) - - name = 'aevar_'+string.zfill(self.varindex, 2) - self.currentevent['variables'][name] = '"' + t + '"' - value = value[:varstart]+name+value[varstop+1:] - self.varindex = self.varindex + 1 - pos = string.find(value, ':') - if pos==-1:return - ok = 1 - while ok <> None: - value, ok = self.parseobject(value) - self.currentevent['arguments'].update(self.splitparts(value, ':')) - - # remove the &subj argument? - if self.currentevent['arguments'].has_key('&subj'): - del self.currentevent['arguments']['&subj'] - - # check for arguments len(a) < 4, and pad with spaces - for k in self.currentevent['arguments'].keys(): - if len(k)<4: - newk = k + (4-len(k))*' ' - self.currentevent['arguments'][newk] = self.currentevent['arguments'][k] - del self.currentevent['arguments'][k] - - def parseobject(self, obj): - a, b = self.findtag(obj) - stuff = None - if a<>None and b<>None: - stuff = obj[a:b] - name = 'AEobject_'+string.zfill(self.objectindex, 2) - self.currentevent['objects'][name] = self.splitparts(stuff, ':') - obj = obj[:a-5] + name + obj[b+1:] - self.objectindex = self.objectindex +1 - return obj, stuff - - def nextopen(self, pos, text): - return string.find(text, opentag, pos) - - def nextclosed(self, pos, text): - return string.find(text, closetag, pos) - - def nexttag(self, pos, text): - start = self.nextopen(pos, text) - stop = self.nextclosed(pos, text) - if start == -1: - if stop == -1: - return -1, -1 - return 0, stop - if start < stop and start<>-1: - return 1, start - else: - return 0, stop - - def findtag(self, text): - p = -1 - last = None,None - while 1: - kind, p = self.nexttag(p+1, text) - if last[0]==1 and kind==0: - return last[1]+len(opentag), p - if (kind, p) == (-1, -1): - break - last=kind, p - return None, None - - def splitparts(self, txt, splitter): - res = {} - parts = string.split(txt, ', ') - for p in parts: - pos = string.find(p, splitter) - key = string.strip(p[:pos]) - value = string.strip(p[pos+1:]) - res[key] = self.map(value) - return res - - def eventheader(self, hdr): - self.currentevent['event'] = self.splitparts(hdr[7:-1], '=') - - def printobject(self, d): - '''print one object as python code''' - t = [] - obj = {} - obj.update(d) - t.append("aetypes.ObjectSpecifier(") - if obj.has_key('want'): - t.append('want=' + self.map(obj['want'])) - del obj['want'] - t.append(', ') - if obj.has_key('form'): - t.append('form=' + addquotes(self.map(obj['form']))) - del obj['form'] - t.append(', ') - if obj.has_key('seld'): - t.append('seld=' + self.map(obj['seld'])) - del obj['seld'] - t.append(', ') - if obj.has_key('from'): - t.append('fr=' + self.map(obj['from'])) - del obj['from'] - if len(obj.keys()) > 0: - print '# ', `obj` - t.append(")") - return string.join(t, '') - - def map(self, t): - '''map some Capture syntax to python - matchstring : [(old, new), ... ] - ''' - m = { - 'type(': [('type(', "aetypes.Type('"), (')', "')")], - "'null'()": [("'null'()", "None")], - 'abso(': [('abso(', "aetypes.Unknown('abso', ")], - '–': [('–', '"')], - '”': [('”', '"')], - '[': [('[', '('), (', ', ',')], - ']': [(']', ')')], - '«': [('«', "«")], - '»': [('»', "»")], - - } - for k in m.keys(): - if string.find(t, k) <> -1: - for old, new in m[k]: - p = string.split(t, old) - t = string.join(p, new) - return t - - def printevent(self, i): - '''print the entire captured sequence as python''' - evt = self.events[i] - code = [] - code.append('\n# start event ' + `i` + ', talking to ' + evt['event']['target']) - # get the signature for the target application - code.append('talker = eventtalker("'+self.gettarget(evt['event']['target'])+'")') - code.append("_arguments = {}") - code.append("_attributes = {}") - # write the variables - for key, value in evt['variables'].items(): - value = evt['variables'][key] - code.append(key + ' = ' + value) - # write the object in the right order - objkeys = evt['objects'].keys() - objkeys.sort() - for key in objkeys: - value = evt['objects'][key] - code.append(key + ' = ' + self.printobject(value)) - # then write the arguments - for key, value in evt['arguments'].items(): - code.append("_arguments[" + addquotes(key) + "] = " + value ) - code.append('_reply, _arguments, _attributes = talker.send("'+ - evt['event']['class']+'", "'+evt['event']['id']+'", _arguments, _attributes)') - code.append("if _arguments.has_key('errn'):") - code.append('\traise aetools.Error, aetools.decodeerror(_arguments)') - code.append("if _arguments.has_key('----'):") - code.append("\tprint _arguments['----']") - code.append('# end event ' + `i`) - return string.join(code, '\n') - - def gettarget(self, target): - '''get the signature for the target application''' - target = target[1:-1] - if target == 'Finder': - return "MACS" - apps = processes() - for name, creator in apps: - if name == target: - return creator - return '****' - - def makecode(self): - code = [] - code.append("\n\n") - code.append("# code generated by AECaptureParser v " + __version__) - code.append("# imports, definitions for all events") - code.append("import aetools") - code.append("import aetypes") - code.append("class eventtalker(aetools.TalkTo):") - code.append("\tpass") - code.append("# the events") - # print the events - for i in range(len(self.events)): - code.append(self.printevent(i)) - code.append("# end code") - return string.join(code, '\n') - -def addquotes(txt): - quotes = ['"', "'"] - if not txt[0] in quotes and not txt[-1] in quotes: - return '"'+txt+'"' - return txt - - - - - - -# ------------------------------------------ -# the factory -# ------------------------------------------ - -# for instance, this event was captured from the Script Editor asking the Finder for a list of active processes. - -eventreceptacle = """ - -[event: target="Finder", class=core, id=setd] -'----':obj {form:prop, want:type(prop), seld:type(posn), from:obj {form:name, want:type(cfol), seld:–MoPar:Data:DevDev:Python:Python 1.5.2c1:Extensions”, from:'null'()}}, data:[100, 10] -[/event] - -""" - -aet = AECaptureParser(eventreceptacle) -print aet.makecode() diff --git a/Mac/Contrib/AECaptureParser/readme.txt b/Mac/Contrib/AECaptureParser/readme.txt deleted file mode 100644 index 150611143e13..000000000000 --- a/Mac/Contrib/AECaptureParser/readme.txt +++ /dev/null @@ -1,5 +0,0 @@ -AECaptureParser is a tool by Erik van Blokland, erik@letterror.com, which -listens for AppleEvents and turns them into the Python code that will generate -those events when executed. - -Lots more information is in the docstring in the code. diff --git a/Mac/Contrib/BBPy.lm/BBPy.c b/Mac/Contrib/BBPy.lm/BBPy.c deleted file mode 100644 index bcb8d4e9d0d2..000000000000 --- a/Mac/Contrib/BBPy.lm/BBPy.c +++ /dev/null @@ -1,456 +0,0 @@ -#include - -#define DEBUG 0 - -#define kComponentSignatureString "BBPy.LM" -#include - - -#include -#include -//#include - -#include -#include -#include -#include - -#include - -#if DEBUG -void debugf_(const char* func,const char* fileName,long line, const char*fmt,...) -{ - va_list arg; - char msg[256]; - va_start(arg, fmt); - vsnprintf(msg,256 ,fmt, arg); - DebugAssert(COMPONENT_SIGNATURE, DEBUG_NO_OPTIONS, kComponentSignatureString ": " , msg, nil, fileName, line, 0 ); - - //debug_string(msg); -} -#define debugf(FMT,...) debugf_( __FUNCTION__,__FILE__, __LINE__,FMT,__VA_ARGS__); -#else -#define debugf(FMT,...) -#endif - -typedef const char *Str; - - -enum{ - kPyBBLMStringSubst = kBBLMFirstUserRunKind -}; - -#define iswordchar(x) (isalnum(x)||x=='_') - - -struct runloc{ - bool past_gap; - long pos; - long last_start; - unsigned char*p; -}; - -char start(struct runloc& r,BBLMParamBlock &pb) -{ - r.past_gap = false; - r.last_start = pb.fCalcRunParams.fStartOffset; - r.pos = pb.fCalcRunParams.fStartOffset; - r.p = ((unsigned char*)pb.fText) + pb.fCalcRunParams.fStartOffset; - // Adjust for the gap if weÕre not already past it. - if ((!r.past_gap) && (r.pos >= pb.fTextGapLocation)){ - r.p += pb.fTextGapLength; - r.past_gap = true; - } - return *r.p; - -} - -char nextchar(struct runloc&r,BBLMParamBlock &pb) -{ - if ( r.pos< pb.fTextLength){ - ++r.pos; - ++r.p; - if ((!r.past_gap) && (r.pos >= pb.fTextGapLocation)){ - r.p += pb.fTextGapLength; - r.past_gap = true; - } - return *r.p; - } - else{ - return 0; - } -} - -bool addRun(BBLMRunCode kind, int start,int len , const BBLMCallbackBlock& bblm_callbacks) -{ - if (len > 0){ // Tie off the code run we were in, unless the length is zero. - debugf("Run %d %d:%d", kind, start, start+len-1 ); - return bblmAddRun( &bblm_callbacks, 'Pyth', - kind, start, len, false); - - } - else{ - return true; - } -} - -bool addRunBefore (BBLMRunCode kind,struct runloc& r, const BBLMCallbackBlock& bblm_callbacks) -{ - bool more_runs = addRun(kind, r.last_start, r.pos - r.last_start, bblm_callbacks); - r.last_start = r.pos; - return more_runs; -} - -bool addRunTo (BBLMRunCode kind, struct runloc& r, const BBLMCallbackBlock& bblm_callbacks) -{ - bool more_runs = addRun(kind, r.last_start, r.pos - r.last_start+1, bblm_callbacks); - r.last_start = r.pos+1; - return more_runs; -} - - -bool colorstr( char delim, - BBLMParamBlock &pb, - struct runloc &r, - const BBLMCallbackBlock &bblm_callbacks) -{ - bool tripple = false , pers = false, lookup = false, more_runs = true; - char c = nextchar(r,pb); - - if (c == delim){ - c = nextchar(r,pb); - if (c == delim){ - tripple = true; - c = nextchar(r,pb); - } - else{ - //double - return addRunBefore(kBBLMRunIsSingleString,r,bblm_callbacks); - } - } - while (c && more_runs){ - if (pers ){ - if (isalpha(c)){ - more_runs = addRunTo(kPyBBLMStringSubst,r,bblm_callbacks); - } - else if (c == '('){ - lookup = true; - } - } - pers = false; - if (c == delim){ - if (tripple){ - if ((c = nextchar(r,pb))== delim && (c = nextchar(r,pb)) == delim){ - break; // end of tripple-quote. - } - } - else{ - break; // end of single-quote. - } - - } - else if (c== '\\'){ - nextchar(r,pb); - } - else if (c=='\r'||c=='\n'){ - if (!tripple){ - break; - } - } - else if (c=='%'){ - more_runs = addRunBefore(kBBLMRunIsSingleString,r,bblm_callbacks); - pers = true; - } - else if (c==')' && lookup){ - more_runs = addRunTo(kPyBBLMStringSubst,r,bblm_callbacks); - lookup = false; - } - c = nextchar(r,pb); - } - return more_runs && addRunTo(lookup?kPyBBLMStringSubst:kBBLMRunIsSingleString,r,bblm_callbacks); -} - -bool colorcomment(BBLMParamBlock &pb, - struct runloc &r, - const BBLMCallbackBlock &bblm_callbacks) -{ - while (char c = nextchar(r,pb)){ - if (c=='\r'|| c=='\n'){ - break; - } - } - return addRunTo(kBBLMRunIsLineComment,r,bblm_callbacks); -} - -void CalculateRuns(BBLMParamBlock &pb, - const BBLMCallbackBlock &bblm_callbacks) - -{ - const struct rundesc *state = NULL; - bool more_runs=true; - - struct runloc r; - - char c = start(r,pb); - - while (c && more_runs){ - loop: - // Process a char - if (state==NULL){ - //If we're in the basic 'code' state, check for each interesting char (rundelims[i].start). - switch (c){ - case '\'': - case '"': - more_runs = addRunBefore(kBBLMRunIsCode,r,bblm_callbacks); - if (more_runs){ - more_runs = colorstr(c,pb,r,bblm_callbacks); - } - break; - case '#' : - more_runs = addRunBefore(kBBLMRunIsCode,r,bblm_callbacks); - if (more_runs){ - more_runs = colorcomment(pb,r,bblm_callbacks); - } - break; - default: - break; - } - - } - c = nextchar(r,pb); - } - if (more_runs){ - addRunBefore(kBBLMRunIsCode,r,bblm_callbacks); - } - - -} -static void AdjustRange(BBLMParamBlock ¶ms, - const BBLMCallbackBlock &callbacks) -{ - DescType language; - BBLMRunCode kind; - SInt32 charPos; - SInt32 length; - UInt32 index = params.fAdjustRangeParams.fStartIndex; - - while( index > 0 && - bblmGetRun(&callbacks, index, language, kind, charPos, length) && - (kind==kPyBBLMStringSubst||kind==kBBLMRunIsSingleString)){ - index--; - }; - params.fAdjustRangeParams.fStartIndex = index; -} - - -// The next couple funcs process the text of a file assumming it's in 1 piece in memory, -// so they may not be called from CalculateRuns. - -bool matchword(BBLMParamBlock &pb, const char *pat ,unsigned long *pos) -{ - const char *asciText = (const char *) (pb.fTextIsUnicode?NULL:pb.fText); - - int i; - for (i=0; pat[i]; i++){ - if (*pos+i>=pb.fTextLength){ - return false; - } - if (asciText[*pos+i] != pat[i]){ - return false; - } - } - if ((*pos+i= 0){ - for (int i=0; i <= nest; i++){ - if (indent<=indents[i]){ - nest = i; - indents[nest]=indent; - goto x; - } - } - indents[++nest]=indent; - x: - - if (matchword(pb,"def",&pos)){ - addItem( pb, pos, nest, kBBLMFunctionMark, &bblm_callbacks); - } - else if (matchword(pb, "class", &pos)){ - addItem( pb, pos, nest, kBBLMTypedef, &bblm_callbacks); - } - } - eat_line(pb,&pos); - } - -} - -OSErr main( BBLMParamBlock ¶ms, - const BBLMCallbackBlock &bblm_callbacks, - const BBXTCallbackBlock &bbxt_callbacks) -{ - OSErr result; - - if ((params.fSignature != kBBLMParamBlockSignature) || - (params.fLength < sizeof(BBLMParamBlock))) - { - return paramErr; - } - - switch (params.fMessage) - { - case kBBLMInitMessage: - case kBBLMDisposeMessage: - { - result = noErr; // nothing to do - break; - } - - case kBBLMCalculateRunsMessage: - CalculateRuns(params, bblm_callbacks); - result = noErr; - break; - - case kBBLMScanForFunctionsMessage: - ScanForFunctions(params, bblm_callbacks); - result = noErr; - break; - - case kBBLMAdjustRangeMessage: - AdjustRange(params, bblm_callbacks); - result = noErr; - break; - - case kBBLMMapRunKindToColorCodeMessage: - switch (params.fMapRunParams.fRunKind){ - case kPyBBLMStringSubst: - params.fMapRunParams.fColorCode = kBBLMSGMLAttributeNameColor; - params.fMapRunParams.fMapped = true; - break; - default: - params.fMapRunParams.fMapped = false; - } - result = noErr; - break; - - case kBBLMEscapeStringMessage: - case kBBLMAdjustEndMessage: - case kBBLMMapColorCodeToColorMessage: - case kBBLMSetCategoriesMessage: - case kBBLMMatchKeywordMessage: - { - result = userCanceledErr; - break; - } - - default: - { - result = paramErr; - break; - } - } - return result; -} \ No newline at end of file diff --git a/Mac/Contrib/BBPy.lm/BBPythonLM.mcp b/Mac/Contrib/BBPy.lm/BBPythonLM.mcp deleted file mode 100644 index 232954bb778914fd541d7af644736222eb1dde09..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 45208 zc-rk<3ve7qneLfgJuTU?t@x4nF^(NueywCDacsrGl2(!}M=Px*`ALX1T8*TY_c7U- zl_j6KC?Q3Bkc&;=xIjVRjw2`#R4L$+T#Dlyin;kH5SB{(Gh;6pu$3V;;tYD#pg1V(g)Fj1`UnZMPr_ z%yj;EuX0dMB*O886imbim5|P6lWUN*a7gNc(&~v1OTnPO)}Pe$cvQMs895$L^lBMm z)Q3Wfrb$6rAIKEkB`5k7UFuYHJsj)L6r(vDQKW#Zs#(GtlHo|N)HJLo)o^CsJOYSREKBD6%>lSY zhJcn1sa@5>(eR0kjQ7ezvecf`)uf&+G<&j*-~)jSAptqm-YEqXs57Y1m=ehlCn#$n zIWkqQDaI7phGU9K!_XX+hEcLs8U_ZNnzMyuEf+ZIwP@CicPJ;O%Jso;tiwN5gyHSm zrpPpgX3Y@>n(3yqWVD;su%Gs5v_GQR8=Z~hs5Bd$ z@@1o#nK6^@Y)B4jN{mb@Z!+}H(N2hFZya_~+D*-7Kz}F8J_V!;ypx=sJiBPyNSTVp zCd4)hO0NB{GtmwiC7MGpiIygfM74{cjpR&(UD$}!8BZociqw@*lvG9=m7ZjOzmkwT zk};?NWfGkWnU%#%nVmZJ0L6&e3@i zf0BVzfI|wbMB3yaMVzF1m;sIv-%fOn8TOFurDh-f?X=V=kxEY5Sns4;V_k|)BYUd+ zQev7SO%_yVP)bytWT&t?!%UUHL7bGAbjeNyWElU=AcxqesA+<4(d`4gotU|fGPV>) zXnGx`#&`!IJwMJ7-4enR87eY;{5I*1VcSm3oRy3X*b$mNqjnv@PJ4&vBEss&)Fp7f z8V-?Y^*Db@DoF*-AvnC^=3oB=&L4oIKrd|?g7ZJZQCPfN!GxZLqbMASG{X6(a1_U5 zC0)Q8d6g6yafB6sOZ7lJ33wOaIeKGQ2HXv}te4{vz~um8{wCZHcrL&=;70+^JI>?$ z0B{A-e+zj2uwLE*NnZ$f!H^Pzdx_TrUZ_MANV|9ta3w_V2MqUSR}e=2i}=07e+Im` zMOUJL{{!$6J+49-h`#~6RH=_ZIe5wdUm1_pLwwIhz*qHhdMn^%AQW(4&miFC!%#qg z?*_c07YYdQ=K-%&^hQXh=P|%i7xeIep9Q>%7rEyZssqIT3*Ksuy>r1^Lm0!aA&hxk zOE>`DI>JZ6t0J5LZ$05t;B6rM0C*b-KMdX`!dQ=+34aefAK_QQt0w#gcr_ds%mZ%= zVNAWj2Uho2hF%4~mF%9j6zXo2A@YCS!BaH2{gYaA6b#h#c z?V^h?*8hIOSOy0O9|rFrVQ5$E5aGMPJ52b~;2k0S74Y6m_!;nSA^aM6?<0HxyjwXg z!89BtjB?ja7|U2DjOpzm+(-Qm;yb|WC5+{u5XN%oBm8af`U(FSyaB>*f*0nv6w@$B z7~8}#!dU+i!dMP zeNVArI)heIdGhwFM(XcmWw-zI{O}$oV497qcNr&dM|*ph{a&8k9s5acnYW1RuUJN& z=9bnbxMDt?E9gAW7GEp}T?Gcqo`jqTJFYU%UOE@pt`g?fw{^BSE;FMQ(s==$i|AZD zF>$^Mhe5$MK+?eI!RxV?VZ0Oyv8ADu39D`q#LaJ1h?~!oV0h1ozJdyS?lC-9ZNT+s z2ukAS3)uOUA{KZe78ogkyWWmfGT9dd7U=SMylr&98;o;-mDt(ritWNC z2q}?Eg$qWlk`O?l8IBoV0h+U^6enLQq%;Z<@UrY0U`lcXuk&gX-o;x7^2Xa(NAMUn8t)-GzLVe&yQ0de;bXF2^xPps9)Eq zA0MKAdzkv^6{M?OL%PIT(#s^$Gggysww`pcm87HWqCWO&(ls`cp3zKt#U|3re56}c zlU}ixbg?a@dtFO<#dV}-Z6m#^j&!PPIa8*QXd?VR>n0c#E?G_)M_M^WXj zm3?uTi9%N^wM5l;LYHtl90(q?|80;Xk$5~N?NK5s3mlaAWZH;$P$B~x{(~7CgV~<_ z(ptJT+&TS5n3xnZ`a{g{ADLA9*5wyMWTXUB4Ni(6OSx(Zd zdk%X;nwi0FU6^E4$Y@Kj<=wO#*bN2_JAuPI(9@%iYy|;ejfuDxR|mooxwfI9sW%K# z=&O;M<7kAjQB2sGR8f*@O&g9Bi1#KViU#4GFTwA`kHnmX%F(#@_RefFJqkdp$gWBti)7r6Rh5Oh9a^w8+c zlZ5Pk%k)VAJBXB9I6wN7;;K`g`E?rkl zBOXfnqG`lK$y_{*cqq9`rV$UNbZM4&f(@XQzQ>9uWQ&Kbqi!1UuqE7R#q(y1hpnX{ zSNgg-6$LHraJwZF6KG-LmUcNDYcwtGdYdwATG|Cc(|J6$OizH~LY8)AC>$~^?Yc6j zMG*Ae7%!xhwkgMVH)6Olw=pbkK7a04yl&61!oDBj%$fL2Ih%!e9*Q^RY!>2OLGh-X z%?g4)g7L)7|2KL}Fz#1JhN2?sRS%;P2>2BdzbuBL3l)%`LWn2X_lR|n z-+Lh53LXzvB8<9Qk=YQy7*F2?H7$MA>w7+r_qOMd`BDlO0??);`OR97E|3>rv=6$E`bjnb!f*4PSTYz8%%Yk4aP?XR$tnq%d^*1Um}j*mYRe5U(5K37Vh-U1rw_3Bo-X$1LVm;vF86TXUrk zWzHi$dn2O}+ACInl01xxF<;6Dhgl&X0@o0*a}wql{rFYgj{{z4S(=2k)JCy5uH$W01l~d;wOOPepmvM6huSZUCjwfC zmO+}I0-WTUf)~m}c)!)21Y9v$d92m2*5PUewNK%b)=Ho7u(i@B{HwLnCp>Mf^a(Fm zD}BN*td&0DO>3o3EVNeojMYzC=@VC5D}Ca%)=Hn)V6F6t`>d5dvD;ed6QkBjpLo(* z=@U;`D}CZ8td%}-+*;`q|HWGA6Q8tJ`o!;8D}CZi)=HoFs&CX~MLurDfyd;^(e zNU&DLXcY_(@nR&=cDctbe%FDbcyTs!fNr5(j;`P^J6AznP2tOTKIaHK^o2(X4i{8Z z7&C(3bQ|Fw`?UoX@A?ApPPXgJW`zZ2#h%Q?f!0T~EE-R5pw$NA3dVCCY#v(R(7I+= z&T@}T{J{@vP~*?$1^qC6wm$?L4NgUIpPF;@m%86cj&~BvGc<{lMoLMFp6F1<)XkCM@)UVX;@ca z?iPJiN%E+$H4e=~P#mE{_4CgukiY{--_zmwNsUtt8&Y*4>9f$HKk%Q24>lpnnQ0mM|q{ zIwlt{*?^4a!RRTS0=H6K=MX9oi>Mr)-Oth6t>lIkeM`3)U|7*@?FYkMsd3$9*nXU2 z3bX=!l<;%d3cRC(#ts8;W(9|1&#JjQ$tU$P3#5XEGF>#);@=wlr#C(2{u{TG(r+-%Cy+3jGOZeX4Eomy$$D;69e&LKzBL0;lT}5s2m@@Sp1A*X-XXTh2zW31- zll=MoorRe>97O6>HIffL{`Py0<%$e`r2eHnamv>ki}I+w#YU1lmj z*aDA))#iN2VQ)N?%tyT&@5bhV4?156-xQizz6?Gm!s<-Rhubu5ThOJut1h*kE)ZyK z$Q3W`mH*5+54JYvg-@P(sP=}vxm%8N?}E&&^iu5ULOENqweP}|d^T>(51&w;(xc{! zkD3=g%CI`qy5}R)%<8McU3Prb?SG!PKR3)>0Z_T`U)$Y3gEG*j%(OmXptPb+OEh@~?~K&;j@!a#K3oU@q6aCT&7@`RR07 z1@R(vx+z+Go^-lgkCrX)x9;zpX$jU{f>xA#SwAjsYeQt}p4TrKdk|S$2WIJ^E;Xw~ zuhKVDndW?E)&eW0IpR(`J+Ad*YCgI)<8nS2j$OM|vVFB;Ql(y0j{uDF(j(;L6UtM1 z)O_(#^TKCfX61bGx@z_WU0ln_#b=r=Ckva4ZaF#mOjlRU%*fJJbIPIdO`4oNT|&`v zw9*bmqrsc~d37j*PbAzkO^sv2l&P`fXH! zd1%*rv$b@#G`Tf1yWN1UtF_hD_(XJ>xT&U1)16HN_HzTB_Zodue-;U>;A&-3b#LY zo$K7mtLt3nI@f^{=kkxBN5UZ)zq9T3l&*7~>s;qL*SXGhu5+F1T<1F1y}MkwTLiP+ z;j=vRjg5U{3T_asM&gN!-SM?W;g|W8VZ|-cS?GROy>p;XlL`*^N&M3)-kQRf?>fUx zgDc7yTV7Uhct0!Hy76n`?|`&SSj&n#!oB!z=3ZIRQECoELwXNf&=Y8CgQ)C8Fc`;Y z8^77v)q&qsd^Qk@;v>fi~WIUnh)$v=K;=dbs!1&JX zYX%PEHyk~44Lpe7RrK^z{ObXK5%J18{H9^yr}?!kz*v#-jT!GTc7(BF{yftt8vuL@ zLczxp61(buta~lv-+B}b%)i$t8u(70OamJ`=#}(_^~h1&z@(@t)*lIL1CG5d_^6enkEn|0KtL;oLrTWN!*kIz3oZ9RSUC;_Q>G^3gGxv@B9
-HpK2^_p*<(2iOIEq*9WWqzs zA^cvrmf`h7_%79G+Y@g;vyF8RRWAVa;5K%sy?bya;*;B0S9|xZfVM*T0Z8{NaBjn} z^WQMS8mdbH>&7+P47|a>8>%<3LO8@-$mi5H*8W>o+FfZ<+n%@}ZezjrZgFT-@;-Ub zETwtG+itQ&IJJM-q)zk~n0A3w*wWPE*9sA2O9 zKgJ57F6OWjC^2K7x>fWH@~Ti#f8DQfTd|`4dPB~0nDhnTdff5Pd-|6@@s4gN_Ku!@ z(K|YL$P5Nt0Y}ijQ=WG;{N|*c@&s#N*n-3G@9>DkITTh*mOriLa+g1Lxyc{jdGJq^ zzl9%VtTOZa5yIbnH81iRrt_Lf(ye{16P=ii3V zy;AXK_dj`0TM~XC^VoxLIVr*jQ}cDUc?(KwA^7#ot1@gSAKxR#dLzniMQ>F4sG)OPcbj}K_+fFDQsee=~wSg#E&<`ld)dg)#|9x5_y~>@p#k-YCACT zw$W17?ukvjJ*H#(7}KN(^WsP|_Bj(hR8{SRaE;&TG;m=Nr9;ueClulX3Ig(xcI{-I zvAe-98T(N6PFBeZ#y+|y!pg?(Lf#KiPAMIY3Hf;HdLHr-9%6nNJT3HI9@;dd#B^KU z>^xiGF!T1xo>!OEKrb`*1cUs&3HkG}(lHHsnPTW=3P6o%wR#z$4r=sH_93BCsB757 zTKBhCm%>$VsB^#co0^qM!vO{pA?+JZIsq0XRQScYa-6iahAw+i<+1UTJW}y1Gpj z&W=yK4jDZKF`#xpK1z*R`*Ov~{+h$>V=qca*Y2sFlcN9FNaY;t_tX{0r+UuV50{<< zSq^kJKNzNSN2Ue>AO zNoV%`XeYVSSUe_273)PanC0C=H>oT$ZdZjvR#el|tOn&(xZys~({|2T+=ZD1dfKBT z3vv9c0(#g2sBY}!W2>*q7M#lg zU31bG<5X6P>RMX-g+VKwcK)01gM4j@s#+So`WrxB7S;RH(pmX!@G9WGVJH9XXAJ&& zB<`f|#qwH%pIv6+W4{D^718g*YU1?o`~YXy)Jvi!cOR!$>;t@<=x^Xfoc;l<@fDOW z7&F+}V5_DxarKQj3Fh>zdr>Fh@gMvQ;7wFMSPouJ|KLAhMk)QjM~~C*z-QXGaQY5> zAGDm)e}5hsbNUI;`8`(}bfM;BK%gCo78in79F-$!@^c09{HLg#z9ZAZVVq1yi@xPg>-|-O2 z)Gb7R7QDHf{@q&vzmL2&D8)g#o ze#GfN!0&yKZE`iHb1SExz!xiNPlmsT*;?@^r{9fz0__l(g#3D_-p^qg=?&?Y?_=6{ z{BNKoi{vhd<@q9~e*w#$-mLxXrj-1QH=yj(KGus~v+Ap217MQt#Whxa$=C*I51hrd zR(;)tX{Ua4-zUNQ7N_5Wx>KCfhoR3AmT>wqYzs7}dJy~nF-~6&eIp}%Yb(r`nUB+- z#xzjB{vhxX>Aw43!3w1I{x}K+r+YU8rk7Q>4_W!z^B5K+(Xsp&aC%uA;2~-k+bnq& qQAUmvJ!s`uK$#lm^szsr`nU0$)&L&i^oKr(WzOmAQ9g}ri2ffG_DdQ7 diff --git a/Mac/Contrib/BBPy.lm/BBpy.r b/Mac/Contrib/BBPy.lm/BBpy.r deleted file mode 100644 index 7d80b4a4274e..000000000000 --- a/Mac/Contrib/BBPy.lm/BBpy.r +++ /dev/null @@ -1,35 +0,0 @@ -#include "BBLMTypes.r" -#include "MacTypes.r" - -#define kKeyWords 1057 - -resource 'BBLF' (128, "Python Language Mappings", purgeable) -{ - kCurrentBBLFVersion, - - { - kLanguagePython, - (kBBLMScansFunctions|kBBLMColorsSyntax|kBBLMIsCaseSensitive), - kKeyWords, - "Python", - { - kNeitherSourceNorInclude, ".py", - } - } -}; - -#define VERSION 0x1, 0x0, final, 0x0 - -resource 'vers' (1) { - VERSION, - verUS, - "1.1", - "1.1," -}; - -resource 'vers' (2) { - VERSION, - verUS, - $$Date, - $$Date -}; diff --git a/Mac/Contrib/BBPy.lm/Python b/Mac/Contrib/BBPy.lm/Python deleted file mode 100644 index 67ee70fdcbdb..000000000000 --- a/Mac/Contrib/BBPy.lm/Python +++ /dev/null @@ -1 +0,0 @@ -(This file must be converted with BinHex 4.0) :!!"#3Na08LTMD!#3""5,!!!$"mhr5Qpj)A"PCQC`Gh"M!!!!!EE-IXm!N!d$!!) !N!6rN!3!N!B5C!!!%Q3!!"*N!!!!i!!%"!$rN!3!N!B"E!!!!93!!!%l!!!68!) ""!$rN!3!N!pB!!!!J!3%"!#3#!%!!!!8rj!%!*!%rj!%!*!2!3!!!%3!!!"3!!! !8!!!!!%!N!8"!*!&"3#3"%)$J!0'!)!(3!X!N")i!!!!Q!-!!)!%!#D3!!-!#)! %!#D3!!-!")#N!"+!"!!QI!8#&*!!!`!-L!-!!#J!!!"!JJ!XJ+-!")!%!"jm"3" !3B!!()#M!!b!"!!LI!8#&*!!!`!-1!!!!CJ$!!#!B`!-L'-!!%k!!#!!N!8*)%! !N!GS!#)ZFh4KFR4IAdC50R*eEQa[Be)a0%*#6%e3BA*KE8*XEf0VJ+-!")!%!"C m"3"!3)!!@$J&!!'3!!-!")#M!!`i"3!"N!!$!!b)!`!!+!!!!%##!#b!S`!%J!3 !(R`&!%""J!!FJ+-!$)!%!#*m"3)8N!!$!!`i!!!"Q!-!!)"M!!b)B`!!6S!!)$K J!!"1J!!J!*!"!!*!(E!!P,QjPH(4MD'&bAep'8MCbG@jXEf05-64#3Na08'& bB@e#E'pMD`"m#!+QN!!"!!L8)Ir!I'JEH(b!)hKmTbYi,!F!!%#"!#4m`c0i2)" 3H6L%G'Kp"80iI!B$H$N!!!")!!"45!!!#$KJ!!'!!3")1#%!3(`)!kC1J!!J!*! ""J!#3"P3!)LjKC'45G@jIAdCcD@P53c%h3N*-680KE'aLB@0V3Qa[BfYm#!+ QN!!"!!L8)Ir!I'NEH(b$)hKmT#YiI-8cH(cQ1hKp"d0iJBN!,%J!%&f!33!89'! '2RaJ!0!`!rrrI!!C%&3$"Mk!!3")1#%!3(`)!kC1J!!J!*!""J!#3"P3!+5j LBQaY3@4N8R9ZAep'8%-a0d*#6%e$B@aXBQ&MDd*XEf0V9@acE'aL!(`)!UD6iIr mN!!"!!L8)Ir!I*mMH(bQ+hL!R`!)J"m!"(bN!&",rrl&J"m!"*!!(`!)J!%!5$J K!%"m#!1QJq(rr%k!!#!!N!8*)%'!!3#3"83!,LjKC'45G@j#C@C[FQ9IAdCc8MC bG@jXEf053c%h3N*-680KE'aLB@0V3Qa[BfYm#!+QNq(rr*!!!3!)P#(r`(bI)hK mTLYiJ*m!#)!I!!4mT!"31+8!!8[rrMf!R`!%1!3!!C!!(`!)J!%!5$JK!%"m#!1 QJq(rr%k!!#!!N!8*)%'!!3#3"8`!+LjKC'45G@j8EepI4R050R*eEQa[Be*$-6G #3Na03f&XE'*KBfY#E'pMDh`)!UDq`IrBN!!"!!L8)Iq3!(af'hKmQL0iI,XVH(c F-hJl)!!!1q!!!$[!!!!lS!!"If2EH(p%dhK,rrd"I(FEH(lJ"h4qf!GdI!$!!%# #!%KrBpYiId66H%[rr1&mB!GdI!$!!%##!"`l)!!"If2EH(p%dhK,rrc&I(FEH%J !!"JiB!!&If6EH(q&ihK,rrjT5!!"Q&Fj"Mjqf!Gd5!!"+&IJ"MiS!!!!3B)!2(l M"h4)!!(G,!-!!%'#!"`iB!%!If6EH(q&ihK,rrkaI(dEH%J!!"4qi!Gd,!!!+%# #!!Jl`!!"1q!!!(lJ"h4m!-!!3))!3#JC!!""JJ$NIf2EH(p%dhK,rr`eI'!(G(` B!!"!JJ#NIf2EH(p%dhK,rr`GI'!(G(`B!!""JJ#d5!!!L#`!!&a!JJ!8If2EH(p %dhK,rr[j5!!!F#`!!!e"JJ!-,!!!#N##!"!S'3!!3B)!J%J!!&3X!!!P3))!)$K J!!9rC0YiIiAMH%[rrAemI4Yi1q!!!8J!!$!X!!!T3))!+&I!"MiS!!!!3B)!($K J!3"rC0YiIiAMH%[rrG&mI4Yi1m!!!(pMfhKr400i5rrlIAah'hKqi!Gd,!!!!%' #!""AS!Bq+!!!!%##rXJl!!!!9k!'2LJ!!!""JJ!m9m!'2LJ!!!""JJ!-1!!"!%J !!!Ji!!!&I!-(0(pNfhKrKH0i5rrpD94J"MiS!!!!3B)!#$X!!!&r!m0iJ!%!H$J K!("m#!1QZX(rf%k!!#!!N!8*)%'!#J#3"!)m!$XZBfpXEh*cG(*IAdCM8M%d3N* -69"KFQ&Y3Qa[BfY50R*eEQa[Be*$-6G#3Na03f&XE'*KBfY#E'pMD`!!!$L#!&4 8B!BqI!3!VP3$"M*1J!!J!*!"!!*!(&!!3,QPcB@a`D'&IAc0cG'4'D3!!I!J #TT2Krrb6`IriNk(rp*!!!3!)P#(rX(ap'hKmRL0iI,mVH%J!!"KmB!Gd,!!!$8' #!#3X!!!+3B)!((r$mhKrT1Yi5rrk-AaJ"h3X!!!!3),rf$KJ!!4ra20iIqAlH%[ rr&@!!3"B1#%!8(`)!kD$iIrmJm(rq)1Krr41J!!J!*!""J!-!N!@!!$iZBfp XEh*MEfeYC@jdAep'8M%d3N*-69"KFQ&Y3Qa[BfY50R*eEQa[Be*$-6G#3Na03f& XE'*KBfY#E'pMDh`)!UD6iIrmNm(rq*1Krr56JIr`N!!"!!L8)IqJI(`EH(bG)hJ li!!"1'%!1(q%ihK,rrMCI(iEH%J!!+ar`!Gd,!!!)d'#!&a!J!!3,!!!)N#!!"4 )!!#!,!!!*d'#!!K)!!"d1'!!!$L"!$KrTHYi5rrkmAar'hKAi!Bq+!!!!%'#!&4 r`r0iIi6MH$LK!$KrTZYi5rrlfAar'hK)!!!i1'!!!$L"!$KrTHYi5rrkYAar'hK Ai!Bq+!!!!%'#!"KrJq0i1)%!1(qPkhK,rrjPI(mEH$KK!$KrK10i5rribAaq'hK r`!Gd,!!!!%'#!""Ai!Bq+!!!!%##rd4Ai!Bq+!!!!%'#!"3iB!!!1)%!1(qPkhK ,rrT0J!%!D$JK!'"m#!1QJq(rr)2"rrL$SIrdJi(rm%k!!#!!N!8*)%'!"!#3"!% i!$FZ3f&XBh9XBA4P8R9ZFepI4P)a0%*#6%e3BA*KE8*XEf0V8N-a0d*#6%e$B@a XBQ&MDd*XEf0V!!!!I!J#TT2Krrb6`IriNk(rp*!!!3!)P#(rS(ap'hKmRL0iJrd !*NJ!!!Jlrrrr+"m!!%'#!%"r`r0iIq6lH$LK!%3i`3"!11%!2$N"!$K)!!#09'! '2LJ!!!""JJ!BU!%!3#`!!3""J[r%,!!!"8'#rlb6r3!QJ!%!D$JK!'"m#!1QJq( rr)2"rrL$SIrd6S!!)!#3"3NJ3B!$!*!&N!!!05j"C'TeFh45B@jRC9pI4P)a0%* #6%e3BA*KE8*XEf0V8N-a0d*#6%e$B@aXBQ&MDd*XEf0V!(`)!UD3!!%!#*3Krm" mD4YiI)-MH(bN+hKma60iI1BlH(d(3hL"L3!N5!!)dB""!"48B!BqI'!!d$!$rrp m!"N39!-'2S!"!%Ji)3"!I!J$TNk!!#!!N!8*)%'!!*!'9!!Y,Q*LE'e(CA45G@j IAdC33c%h3N*-680KE'aLB@0V3Qa[BfYX8P9X8R05E&*X!(`)!UD6iIrmNm(rq*1 Krr53!!%!#*3Krl"m[LYiL!-!'LJ!!!""JJ!-1k!!!%J!!!L$S`!51q!!!%J!!%5 !(J!!I+$k&)!$!"Cm"3"!3B!!$$KJ!!")!!#3!(`G++jm"3GdI-!(G(`&!!""JJ! -1'!!!%J!!(3lr`!"1)3!!BM%!!"m`!Gd,!!!!%##rl5!(J!!I)$k&)!$!"Cm"!" !3)!!1(ap)+jmB`Gd5!!!N5`$!!"!JJ!FJ"i!!(`!qK4m(3#ZI!!(G#`!!&p!JJ! -1'!!!%J!!"5!(J!!I!$k&*!!(J!!1'!!!B!"!&Ji)3"3I!J$TS2Krrb$`IriJk( rp%k!!#!!N!8*)%'!!`#3"!%!!#3ZE@&dBfKhEh*NAep'8M%d3N*-69"KFQ&Y3Qa [BfY33f039@`!!$L#!&48B!BqI!3!VR!$!0"1J!!J!*!"!!*!(&!!3,QPcB@a ZG@eIAc0cG'4'D3!!L!-!'LJ!!!""JJ!-1-!!!%J!!!L!``!511!!!%J!!'Km"LL ZI!!(G#`!!#""JJ!J3)!!%#`!!!P"JJ!S5!!!3#`!!#0"JJ!`5!!!0)#N!!!i"3! "N!!%!!!ij`!"5!!!+)#N!!!i"3!"N!!%!!!ij`!)5!!!&$KJrrp1J!!JI1-lH%k !!##!T!!!J!-!&R`&!%""J2q3!%k!!#!!N!8*)%!!N!HB!#-ZE@&dBfKTEQ4PER4 IAdC5-64#3Na08'&bB@e#E'pMDe"9E!!!!)J$!"SS!!!!3B)!$$M!!!")!!!BJ-- !%NJ!!"#!T!!!1!8!!C!!"!!!J+3!!(`'++jm!!Gd,!!!$8'#!#JX!!!+3B)!))! $!"Cm"3"!3B$rd%J!!"#!T!!!1!8!!C!!"!!!J+3!!(`'++jm!!Gd,!!!$8'#!!` X!!!+6))!))!$!"Cm"3"!3B$rd%k!!#!!N!8*)%!!N!H-!#!ZC@&dAfaTEQ9IAdC 5-64#3Na08'&bB@e#E'pMDe"9E!!!I!J#TVlKrpb3!!%!#*3Krf"mHKYiI*XMH(b m+hKmh60iI2ilH$[J!!!i!!!!N!!"!'L$'J!5IcMD&%J!!!`lH`!"1cN!!BKj!!" mB`Gd5!!#@5`$!!""JJ!3J"S!&R`E!%""J2rFIhIEH%J!!!`lH`!"1rm!!AmifK5 )H3!!I'-(G%[rrENX!`!!3))!&)JC!!"m!!Gd,!!!Ad##!"#!'J!@I"X!3%'!rmK r`r0iJ*S!*RbiZK4rj[YiL"S!'RcJ!0!`"rrrI!!j%&3("Mij!3"S5!!"5C,K!$L 6B3!mNZ%!3*0K!%55i3")9k!'2T!!!3"3Ni%!6$J!!!#3!!%!9)!"!'L3!!%!@*2 K!&ar`r0iJ*S!+MLK!$Ji`3"N5!!!GB!"!+Ji)3#JI!J$TVVKrpa1J!!J!*!" "J!N!N!3"-!"(,Q&NC%PdC@eIAdC5-64#3Na08'&bB@e#E'pMDe9XD6%h3N*-68C eEQ0dD@pZ5fPZC(033c%h3N*-680KE'aLB@0V3Qa[BfX!!!"m#!+QN!!"!!L8)Ir !I'FEH(b$)hKmT#YiI-8cH)'(!"4)!!1jJ%%!&)!"!%Ji)3"!I!J$TNk!!#!!N!8 *)%'!!*!'1!"#,Q*LE'e"C'4'G@jMG'P[EP4[6'PcG&pI4P"$-6G#3Na03f&XE'* KBfY#E'pMDe9X8M%b3N*-69"bEf0*EQC[8&9XI!J#TT!!!3!)P#(r`(aT'hKmJb0 iI+3VH(c&-hKmjMYiI3G$H)'*!"")!!-PJ%%!&)!"!%Ji)3"!I!J$TNk!!#!!N!8 *)%'!!*!'3!!h,Q*LE'e"C'48EfYPEP4[3R9QCQ9bAep'8%-a0d*#6%e$B@aXBQ& MDd*XEf0V9@a3GP9XBP"9E!!!!$L#!&48B!BqI!3!VP3$"ha1J!!J!*!"!!*! (&!!3,QPcFh"KBf9IAc0cG'4'D3!!I!J#TVpKrqb3!!%!#*3Kri"mI4YiI*iMH$[ L!"`iJJ&8J'3!!)!%!!53!'%!6*!!!3"3J'3!#)!%!!b3!'%!9*!!!3"BJ!3!%*! !!3"F1f!!!$J!!!#3!!%!5$Z"!%a)!!$FIk2VH$L"!%K,rrXa,!-!!%'!!,`iS!! !1)%!6$JE!!&m#31Q,"X!!%'!!#b!"!!!I!-!!%'"!"4mZbYi9+!31Ram!5j)!!! F1)3!"$LP!!&#!2rF1hX!!9GJ%$TmI!%ZIk2VH$L#!"!iS3")5rrjA94J"MiS!!! !3B)!)(qMkhL!J3")IfAEH$M!!!"rar0i5rrm18J!!$KrSqYiIq6lH$LK!%K,rrN P9'!'2LJ!!!""JJ!FIk2VH)#"!%KrCGYi1-!!!Ar(mhK,rr`"Ik2VH$L"!%K,rrX eJ'%!5)!G!"Cm!`"!3B$r()!"!)Ji)3#!I!J$TVYKrqa1J!!J!*!""J!8!N!3 "@!!k,P0MB@j'Eh*'G@jMG'P[ER0IAdC5-64#3Na08'&bB@e#E'pMDe*$-6G#3Na 03f&XE'*KBfY#E'pMDh`)!UD3!!%!#*3Krm#!S`!!2!@YeLJ!BfK!JJ!3J!-!##J !!LC!J!!-1'$rcNJ!!*!!L!-!$#J!!!Y"J3#!1+)!*&3!%$TmT3!ZI+N$TNk!"#! iB!!!5!!!D%[rp6NiB!!!5!!!A%[rrINiB!!!5!!!8%[rpU8iB!!!5!!!4+J$!#B X!!%!3B)!#%J!!"Ji!!!)X!-!+$J!!!'B!`!U5!!!$$J!!!#B!`!U1'!!!%J!!"! iB2q!5!!!#$KJrmk!!3")1#%!3(`)!kC1J!!J!*!""J!#3"X`!"5jYB@PZ!)! -!!#3!%%!&(`*!kD!6!!%6S!%)%k!!#!!N!`$)93$)53$)4`#*3&8C'9Q!b)4D!3 PBfaKFh-&)K)JJJ)+%EJ4Z"(-%GJ4`")B%KJ4j")B%KJJJJ%5'!'3#3+3"3'3%J3 )N!m`N!S)N!HJN!D!N"3)N!CJN!C!N"3)N!3"J*!(3*!C#*!(3!L3"S#!#*!13%! )N!S%J*!%3!L3#%#!#*!%3%!)N!@!N!X)J*!%#*!+!836!!!"!!!!!Q3!!!&N!!! !S`#3mai!!3!"8(PdD!!!!"-%)3C3HA4SEfi!!!%!!!-ZF(N!!!!2!3#!!!!!!c% Z-33a,M%X!!!!1!%!J!!!!"KAC@4ZCA0NBANX)%eKFQ0S)$FX)$)`-$%B9f9NEQ9 cC'&j,#"0BA*MD#!h,#!b-$!a!!!!Pf&ZC!N0BA0cCA*d$@*bC@&V$@0XBA0c$@0 [ER4TER9P$@4PCJeNC@`0C@aTCJePE(0P$@9iBf9`G!ePH'9M$@CTEQ&XE(N0CQp b$@CbEfd0Cfa[BQ&X$@PQ$@PYF'pbG!eTEJeTF`eXB@eLC'%0EQpd$@pb$A"KFh- 0F(*TER30FQ&TFf80FQ9dGA*Z$A4bH3ehD'PXC3d!!!"8!*!,!3#3%`&`Gh"M!*! 6!3#3%63'8(PdD'pZ!*!&!3!!!!*N!!!"C!!!!+066e*8!qS!J!!F!(S!!d*#6%B !!!!L9%9B9!!!!#jMCR*R!!!!1RCPFR-!!3"'!)!!!#!!N!F%)3!C!!!!F3#3"[r r!!!"$!BkdC!!!!(rr`!!!#)!N!8#rrm!!!!e!*!%'&"jG'K[EL"-B@jRG@&RC5" 0BA"`D@jRF`p3HA4SEfiJ5f9jGfpbC(26q`: \ No newline at end of file diff --git a/Mac/Contrib/BBPy.lm/Python Keywords.rsrc b/Mac/Contrib/BBPy.lm/Python Keywords.rsrc deleted file mode 100644 index f889e90903e6..000000000000 --- a/Mac/Contrib/BBPy.lm/Python Keywords.rsrc +++ /dev/null @@ -1 +0,0 @@ -(This file must be converted with BinHex 4.0) :!!"58e*$4'peC`#3#!(GM(8!N!3"!!!!!CX!!!#E!!!!3J#3mjGKEQ3*$@&cFf9 bG!eLFQ9KD`eME'&cF`eMEfjdD@jeC3eNC@B0C'9X$@9XD@B0C@acC3ePH'0PF(3 0CAKPB`eQD@jKE'aj$@C[FJeQFQpY$@GXEf*KE!eTCJeTEA"[FR30D@i0DA-0E'& YBQ4K$@j[G!e[FJe`BA0c$A"bD@jd$A*KDA0P$A*PG(9bEJedFRN0GfKTE'80!!! "!!!!!CX!!!#E!!!!3J1S!h`#qJ!!!"`!-J!!9%9B9!!!!!S%)3#3#Jp3HA4SEfi J5f9jGfpbC(0&9`: \ No newline at end of file diff --git a/Mac/Contrib/BBPy.lm/PythonBBLM.txt b/Mac/Contrib/BBPy.lm/PythonBBLM.txt deleted file mode 100644 index 540060a15171..000000000000 --- a/Mac/Contrib/BBPy.lm/PythonBBLM.txt +++ /dev/null @@ -1,12 +0,0 @@ -This is the Python Language Module for BBEdit. - -This software is a plugin to Bare Bones Software's BBEdit 6.0.2 (or more), designed to make editing & browsing Python Language files easer. - -It parses any file ending in .py (or extentions of your choice.) providing BBEdit with the information BBEdit needs to provide services for python files similar to those it provides for 'C'. Namely: syntax coloring and populating BBEdit's '€' popup menu with file's functions and classes. - -This Plug-in needs to be placed in your :BBEdit 6.0:BBEdit Support:Language Modules: folder. - -If you wish, I have no objections to redistributing it in whole or in part, modify it, or beating small fury animals to death with rolled up printouts of the source code. - -Christopher Stern -cistern@earthlink.net \ No newline at end of file diff --git a/Mac/Contrib/BBPy/PythonSlave.py b/Mac/Contrib/BBPy/PythonSlave.py deleted file mode 100644 index b60f0343ce7a..000000000000 --- a/Mac/Contrib/BBPy/PythonSlave.py +++ /dev/null @@ -1,129 +0,0 @@ -"""PythonSlave.py -An application that responds to three types of apple event: - 'pyth'/'EXEC': execute direct parameter as Python - 'aevt', 'quit': quit - 'aevt', 'odoc': perform python scripts - -Copyright © 1996, Just van Rossum, Letterror -""" - -__version__ = "0.1.3" - -import FrameWork -import sys -import traceback -import aetools -import string -from Carbon import AE -import EasyDialogs -import os -from Carbon import Qd -from types import * -from Carbon.Events import charCodeMask, cmdKey -import MacOS -from Carbon import Evt - -def dummyfunc(): pass - -modulefilename = dummyfunc.func_code.co_filename - -def Interact(timeout = 50000000): # timeout after 10 days... - AE.AEInteractWithUser(timeout) - - -class PythonSlave(FrameWork.Application): - def __init__(self): - FrameWork.Application.__init__(self) - AE.AEInstallEventHandler('pyth', 'EXEC', ExecHandler) - AE.AEInstallEventHandler('aevt', 'quit', QuitHandler) - AE.AEInstallEventHandler('aevt', 'odoc', OpenDocumentHandler) - - def makeusermenus(self): - self.filemenu = m = FrameWork.Menu(self.menubar, "File") - self._quititem = FrameWork.MenuItem(m, "Quit", "Q", self._quit) - - def do_kHighLevelEvent(self, event): - (what, message, when, where, modifiers) = event - try: - AE.AEProcessAppleEvent(event) - except AE.Error, detail: - print "Apple Event was not handled, error:", detail - - def do_key(self, event): - (what, message, when, where, modifiers) = event - c = chr(message & charCodeMask) - if modifiers & cmdKey and c == '.': - return - FrameWork.Application.do_key(self, event) - - def idle(self, event): - Qd.InitCursor() - - def quit(self, *args): - raise self - - def getabouttext(self): - return "About PythonSlaveƒ" - - def do_about(self, id, item, window, event): - EasyDialogs.Message("PythonSlave " + __version__ + "\rCopyright © 1996, Letterror, JvR") - - -def ExecHandler(theAppleEvent, theReply): - parameters, args = aetools.unpackevent(theAppleEvent) - if parameters.has_key('----'): - if parameters.has_key('NAME'): - print '--- executing "' + parameters['NAME'] + '" ---' - else: - print '--- executing "" ---' - stuff = parameters['----'] - MyExec(stuff + "\n") # execute input - print '--- done ---' - return 0 - -def MyExec(stuff): - stuff = string.splitfields(stuff, '\r') # convert return chars - stuff = string.joinfields(stuff, '\n') # to newline chars - Interact() - saveyield = MacOS.EnableAppswitch(1) - try: - exec stuff in {} - except: - MacOS.EnableAppswitch(saveyield) - traceback.print_exc() - MacOS.EnableAppswitch(saveyield) - -def OpenDocumentHandler(theAppleEvent, theReply): - parameters, args = aetools.unpackevent(theAppleEvent) - docs = parameters['----'] - if type(docs) <> ListType: - docs = [docs] - for doc in docs: - fss, a = doc.Resolve() - path = fss.as_pathname() - if path <> modulefilename: - MyExecFile(path) - return 0 - -def MyExecFile(path): - saveyield = MacOS.EnableAppswitch(1) - savewd = os.getcwd() - os.chdir(os.path.split(path)[0]) - print '--- Executing file "' + os.path.split(path)[1] + '"' - try: - execfile(path, {"__name__": "__main__"}) - except: - traceback.print_exc() - MacOS.EnableAppswitch(saveyield) - MacOS.EnableAppswitch(saveyield) - os.chdir(savewd) - print "--- done ---" - -def QuitHandler(theAppleEvent, theReply): - slave.quit() - return 0 - - -slave = PythonSlave() -print "PythonSlave", __version__, "ready." -slave.mainloop() diff --git a/Mac/Contrib/BBPy/README b/Mac/Contrib/BBPy/README deleted file mode 100644 index f8c32f73880c..000000000000 --- a/Mac/Contrib/BBPy/README +++ /dev/null @@ -1,45 +0,0 @@ -"Run as Python" -- a BBEdit extension to make the Python interpreter execute the -contents of the current window. - -version 0.2.3, 18 september 1996 - -Note by Jack: - Also check out the BBPy.lm contributed software, which is a Python language - module for BBedit, providing syntax coloring and function/class navigation. - -contents: -- "Run as Python" -- the extension -- PythonSlave.py -- the "slave" script that handles the AppleEvents - -- source -- source code & CW9 project for the extension - -quickstart: -- drop "Run as Python" in BBEdit extensions folder -- double-click PythonSlave.py -- start BBEdit -- type some code -- go to Extensions menu: "Run as Python" -- be happy - -warning: - since PythonSlave.py runs its own event loop and we have no interface - to SIOUX you *cannot* copy from the console. Duh. - -extra feature: - while PythonSlave.py is running you can still double-click Python - documents, they will get executed as if Python was not already running. - -bugs: - perhaps - -acknowledgements: -- Thanks to Joseph Strout for valuable input and beta testing. -- Thanks to Mark Roseman for providing code that can launch - PythonSlave.py from BBEdit. - - -Have fun with it! -Please report bugs, or fix 'em. Suggestions are always welcome. - -Just van Rossum, Letterror - diff --git a/Mac/Contrib/BBPy/Run as Python b/Mac/Contrib/BBPy/Run as Python deleted file mode 100644 index 1ac688760f21..000000000000 --- a/Mac/Contrib/BBPy/Run as Python +++ /dev/null @@ -1 +0,0 @@ -(This file must be converted with BinHex 4.0) :!!"#3PK88LTMD!#3#!Np!m`!N!3"!!!!#*N!!!HC!!!!T!#3)!e5G@iJBA-J8(P dD'pZE@9bCf9N@8fe69P0ELj`H@&X!J"849K88(PdD!#3','"lI%!N!B*23#3KB! !!`#3"8!""!"8!93%!ePPF`#3"N!!UJ"8!2S%!Nj[!*!&#!!m!$B"9)JqdP"jG'K [EP0XBACP,R"jdb"TFb"ZEh3JFR9ZEQPZCb`J$AG[G@aN)(P[G5"XD@YP)(4[)'a [Bf&dC5"TG$m!N!8)!!S!+!!US!)!!3!!!!i!+!!S!)`"N!!!J&99-!S!!!!%!!! #33!!!!B"!!"5!*!%"U*J#J!!3N*B9!#!!!")jq$)6VS!mN(krqSJ#+"96VS!N!" -ha-(6[S$)%(krpE4r!!!"T8J#+"96R9)j`B!@8mJE`!3)Qm!&#`[!"JHQ"pB!!% I@!!#(eJ!!bSAG!"J4")B%!%#3!#!C`c5!4!"5)")`05!B#JHJ4pB!!%3!3*!!%" R$$!Aj8ML3%M!e)"J$KpB!!)I@!!$*"IPLZ+#hE%S!&1&5S9ZZ&K260m!B%je51F 3)#4!)#`!"#B+PS"R3%U!CKa#,!!)-$bSRkG',`J`2+'BSdDaheE!4!!C3!!),`- [#Nkkrd3[!%kkrdj2l`!-+8S!"%SX!!KR"(!"SCK-h`3)6R9"q[lkdI`!!!D-)!L J9F'-6R91G5!-5IS!"LK86R8!N!4"q[rk))a1GBG6CA49F%%d!!"19[q1,`-YI&" jG'Mre&92,cacD@GZ5'lre%Ki!!4)E[r`-$`)*DJ@-"mf!%T$C`B`!f!!!F496bm m9%9B9#"Z!"4)D!!"F!!3%#m!5'lri$!m##@S&M!I0J"+3fF'-!0J!!'@98m[2&4 &@&3[,J!-,bi!%%KZrqJ`2!JPU"B`(cB!5N0R"M!$B!!"EP92,ca`HA4S,ca&@%9 $5'lrm$mmrrp#TdKZrrJ`2!X8U"B`(cB!5N0R"M!$B!!"2P925'lrq#mm,C!%5'l rk$!m"K#S&M!I0J"+3fF'-!0J!!%D98p)E[ri,ca138e&5'lri$!m"K#S&M!I0J" +3fF'-!0J!!$f98p)E[ri5'lrf%Ki!!-r2!!"5(MrrN+R3UF`2!dAU"B`(cB!$%2 pRfC)98mr2!#!3UHTK6!I0J!-3`!#CJC`!'!!!,*)E[q16VN!!!1q5J"B6fB'F!" J!!#F5'lrMNkj!!!%G$B!5N0B6fF1-!0J!!#%5N0R"$!$B(T96dKZrr!`2!)%U"B `(cB!5N0R"$!$B'*96dKZrq!`2!)%U"B`(cB!5N0R"$!$B%T96dKZrqJ`2!)%U"B `(cB!5N0R"$!$B$*96dKZrrJ`2!)%U"B`(cB!5N0R"$!$B"T96dKZrpJ`2!)%U"B `(cB!5N0R"$!$B!*`!#BI6Pj1GBa6C@jN9'9iG%&c388!!!"19[m!51FB-#CZ!!` Q,J!)6VVp`#J!,`0)E[m!U4PC6bm$)'X!!Nk3!#"I*%JJ5U!T5'lr!&P2,`T1Z3! !"RiJ(bm!,a)[#dkkrDSf!%T$6qm!%'F)2`-JD`"U6T!!)%UJ+L!%`Ba-h``B6Pi JAe"26Y#%E@&TEJ!!!%j@rjJ[#L4Z!!JYI&4&@&6rQ%(j!!!%-LP)!!![,!!!3QG )E[qB5'lrU$mm!!DTkL"X!!#J(dSZrkKQ"(!!B"JdV[qZ*@lrX!!#3HlrY%2U!!C `3+!ZF!%NAdjH6R@54f9d8(PdD'pZ8faKGQ96F'9M!!!!6PB!!#"Z!!JJ+!!J)LJ !*!b!9%9B9'B1$)&3HA4SCJC#,`!-B!BII!!"!!a1ALkI6R@-69P'58a&4NP-9%9 5!!!!6PErINMR%#!NEJ!),Aa03806rhj96bmmFfPRENKZrhj)H!!%5'lrLM!m##@ S&M!I0J"+3fF'-!0J!!'d98m[2%C14&)[2(0[F'9)E[q+2ccrrd+R5'lrq$!m#a5 S&M!I0J"+3fF'-!0J!!'%98mr%LmU!!*#TdKZrj*`!DT5-"p96d+R5'lrNNKZrr4 `!UJM-"p96d+R,`T)E[r`F!+S)c!I98p#Td+R3LG)E[rS-$`("UJ@-"mf!#"Zrr5 J+992,caKE'Pc)'lrp#m3@8m[,[rd6VN!!!Cq)"m[!%KZrq!`2!JPU"B`(b"Zrr5 J+P925'lrq#mm,C!%5'lri$!m"K#S&M!I0J"Q@P925'lri$!m!J5S&M!I)'lrm+! T98m[2'&XDA-JE[r`,a"C6bmZrr"1Z3!!"RiJ(bm!5'lrf$!m##@S&M!I)'lrm+! T98p)E[rS3UG)E[rB-$`'#DJ@-"mf!&925'lrf$!m!J5S&M!I98p)E[ri,caQFf9 X5'lrk$!m"K#S&M!I0J"96dKZrqJ`2!)%U"B`(e925'lrq%KZri*)H!!43QG)H2r r3UG#Tc!m$4HS&M!I0J"+3fF%-!0J+P925'lrq$!m!J5S&M!I0J"+3fF%-!0J%P9 25'lrJM!m!J5S&M!I0J!`!dcI"!K1ANjeN8aKG@jMD&"jG'K[EP0XBACP!!!LAb" IS#8ZJ'S#3TG1d3#3$!C"3iY!FUP!kp!!!!"(!#-J!!!!"RB`,M)Z-cPf-#ib,M- JU5"+GA0d)(CKEL"5Eh0cG@dJ,b"-CA4dCA*bEh)X)$aUGA0d3'aPG(4PFR*[FLj ZE$i!!!%!!!!)Q3!!"jN!!!#N#2`64#G-!!!!(!#@!!9fCA*c!!!!-N4*9%`!!!! q38a59!!!!%T#3PK'!!!!9N*#@%X!!!"L3N*B9!!!!'i!!Irr!!!(6JMm%5J!J2r r!*!*J2rr!!!!K!#3"B$rr`!!!*B!N!@!rrm!!!#H!*!&J!!!)!!!U!#3"!e5G@i JBA-J8(PdD'pZr0%: \ No newline at end of file diff --git a/Mac/Contrib/BBPy/source/BB stuff/ExternalInterface.h b/Mac/Contrib/BBPy/source/BB stuff/ExternalInterface.h deleted file mode 100644 index 51d206dfc29e..000000000000 --- a/Mac/Contrib/BBPy/source/BB stuff/ExternalInterface.h +++ /dev/null @@ -1,716 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include - -#if defined(powerc) || defined (__powerc) -#pragma options align=mac68k -#endif - -typedef struct -{ - FSSpec spec; // designates file on disk - long key; // reserved for future expansion - - char tree; // 0 for absolute, 1 for project, 2 for system - Boolean found; // FALSE if file couldn't be located; if so, all other info is moot - - OSType type; // file type of found file - OSType crtr; // signature of found file's creator - - short spare0; // reserved for future expansion - long spare1; -} ProjectEntry; - -enum -{ - kNeitherTree, - kProjectTree, - kSystemTree -}; - -enum -{ - kTHINKCProject, - kTHINKPascalProject, - kCodeWarriorProject -}; - -// masks for the "flags" argument to new-convention interfaces - -#define xfWindowOpen 0x00000001 -#define xfWindowChangeable 0x00000002 -#define xfHasSelection 0x00000004 -#define xfUseDefaults 0x00000008 -#define xfIsBBEditLite 0x00000040 -#define xfIsBBEditDemo 0x00000080 - -typedef struct -{ - FSSpec spec; - OSType key; - - short error_kind; - long line_number; - - Str255 message; -} ErrorEntry; - -typedef enum -{ - kNote = 0, - kError, - kWarning -} ErrorKind; - -#define kCurrentExternalVersion 5 // current version of callbacks - -// Universal callback interfaces - -#if USESROUTINEDESCRIPTORS - -#define ExtensionUPPInfo (kPascalStackBased \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ExternalCallbackBlock *))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(WindowPtr)))) - -#define NewExtensionUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ExternalCallbackBlock *))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(WindowPtr))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(AppleEvent *))) \ - | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(AppleEvent *)))) - -#define GetWindowContentsUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Handle))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(WindowPtr)))) - -#define GetSelectionUPPInfo (kPascalStackBased \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long *))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long *))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long *)))) - -#define SetSelectionUPPInfo (kPascalStackBased \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))) - -#define GetDocInfoUPPInfo (kPascalStackBased \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(WindowPtr))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(unsigned char *))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short *))) \ - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long *)))) - -#define GetModDateUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(WindowPtr)))) - -#define CopyUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Handle)))) - -#define PasteUPPInfo (kPascalStackBased \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Handle)))) - -#define GetLastLineUPPInfo (kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(long)))) - -#define GetLineNumberUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))) - -#define GetLineStartUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))) - -#define GetLineEndUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))) - -#define GetLinePosUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))) - -#define InsertUPPInfo (kPascalStackBased \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(char *))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))) - -#define DeleteUPPInfo (kPascalStackBased) - -#define SetWindowContentsUPPInfo (kPascalStackBased \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(WindowPtr))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Handle)))) - -#define ContentsChangedUPPInfo (kPascalStackBased \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(WindowPtr)))) - -#define GetFileTextUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Handle))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(unsigned char *))) \ - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(Boolean *)))) - -#define GetFolderUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(unsigned char *))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short *))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long *)))) - -#define OpenSeveralUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Boolean))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short *))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(StandardFileReply ***)))) - -#define CenterDialogUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(DialogPtr))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))) - -#define StandardFilterUPPInfo uppModalFilterProcInfo - -#define FrameDialogItemUPPInfo uppUserItemProcInfo - -#define NewDocumentUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(WindowPtr)))) - -#define OpenDocumentUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(WindowPtr)))) - -#define AllocateUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Handle))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Boolean)))) - -#define FindPatternUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(char *))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(char *))) \ - | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(Boolean)))) - -#define ReportOSErrorUPPInfo (kPascalStackBased) - -#define GetPreferenceUPPInfo (kPascalStackBased \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ResType))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void *))) \ - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short *)))) - -#define SetPreferenceUPPInfo (kPascalStackBased \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ResType))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void *))) \ - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short *)))) - -#define StartProgressUPPInfo (kPascalStackBased \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(unsigned char *))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Boolean)))) - -#define DoProgressUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))) - -#define DoneProgressUPPInfo (kPascalStackBased) - -#define GetProjectListUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(FSSpec *))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short *))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short *))) \ - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(ProjectEntry***)))) - -#define ProjectTextListUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(FSSpec *))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Handle *)))) - -#define PresetUndoUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))) - -#define SetUndoUPPInfo (kPascalStackBased) - -#define OpenFileUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(FSSpec *))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(WindowPtr *)))) - -#define PrepareUndoUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long)))) - -#define CommitUndoUPPInfo (kPascalStackBased \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))) - -#define CreateResultsUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(unsigned char *))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Handle))) \ - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(WindowPtr *)))) - -typedef UniversalProcPtr GetWindowContentsProc; -typedef UniversalProcPtr GetSelectionProc; -typedef UniversalProcPtr SetSelectionProc; -typedef UniversalProcPtr GetDocInfoProc; -typedef UniversalProcPtr GetModDateProc; -typedef UniversalProcPtr CopyProc; -typedef UniversalProcPtr PasteProc; - -typedef UniversalProcPtr GetLastLineProc; -typedef UniversalProcPtr GetLineNumberProc; -typedef UniversalProcPtr GetLineStartProc; -typedef UniversalProcPtr GetLineEndProc; -typedef UniversalProcPtr GetLinePosProc; - -typedef UniversalProcPtr InsertProc; -typedef UniversalProcPtr DeleteProc; - -typedef UniversalProcPtr SetWindowContentsProc; -typedef UniversalProcPtr ContentsChangedProc; - -typedef UniversalProcPtr GetFileTextProc; - -typedef UniversalProcPtr GetFolderProc; -typedef UniversalProcPtr OpenSeveralProc; - -typedef UniversalProcPtr CenterDialogProc; -typedef UniversalProcPtr StandardFilterProc; -typedef UniversalProcPtr FrameDialogItemProc; - -typedef UniversalProcPtr NewDocumentProc; -typedef UniversalProcPtr OpenDocumentProc; - -typedef UniversalProcPtr AllocateProc; -typedef UniversalProcPtr FindPatternProc; - -typedef UniversalProcPtr ReportOSErrorProc; - -typedef UniversalProcPtr GetPreferenceProc; -typedef UniversalProcPtr SetPreferenceProc; - -typedef UniversalProcPtr StartProgressProc; -typedef UniversalProcPtr DoProgressProc; -typedef UniversalProcPtr DoneProgressProc; - -typedef UniversalProcPtr GetProjectListProc; -typedef UniversalProcPtr ProjectTextListProc; - -typedef UniversalProcPtr PresetUndoProc; -typedef UniversalProcPtr SetUndoProc; - -typedef UniversalProcPtr OpenFileProc; - -typedef UniversalProcPtr PrepareUndoProc; -typedef UniversalProcPtr CommitUndoProc; - -typedef UniversalProcPtr CreateResultsProc; - -#define CallGetWindowContents(proc, w) \ - (Handle)(CallUniversalProc(proc, GetWindowContentsUPPInfo, (w))) - -#define CallGetSelection(proc, selStart, selEnd, firstChar) \ - (CallUniversalProc(proc, GetSelectionUPPInfo, (selStart), (selEnd), (firstChar))) - -#define CallSetSelection(proc, selStart, selEnd, firstChar) \ - (CallUniversalProc(proc, SetSelectionUPPInfo, (selStart), (selEnd), (firstChar))) - -#define CallGetDocInfo(proc, w, name, vRefNum, dirID) \ - (CallUniversalProc(proc, GetDocInfoUPPInfo, (w), (name), (vRefNum), (dirID))) - -#define CallGetModDate(proc, w) \ - (CallUniversalProc(proc, GetModDateUPPInfo, (w))) - -#define CallCopy(proc) \ - (Handle)(CallUniversalProc(proc, CopyUPPInfo)) - -#define CallPaste(proc, h) \ - (CallUniversalProc(proc, PasteUPPInfo, (h))) - -#define CallGetLastLine(proc) \ - (CallUniversalProc(proc, GetLastLineUPPInfo)) - -#define CallGetLineNumber(proc, sel) \ - (CallUniversalProc(proc, GetLineNumberUPPInfo, (sel))) - -#define CallGetLineStart(proc, sel) \ - (CallUniversalProc(proc, GetLineStartUPPInfo, (sel))) - -#define CallGetLineEnd(proc, sel) \ - (CallUniversalProc(proc, GetLineEndUPPInfo, (sel))) - -#define CallGetLinePos(proc, sel) \ - (CallUniversalProc(proc, GetLinePosUPPInfo, (sel))) - -#define CallInsert(proc, text, len) \ - (CallUniversalProc(proc, InsertUPPInfo, (text), (len))) - -#define CallDelete(proc) \ - (CallUniversalProc(proc, DeleteUPPInfo)) - -#define CallSetWindowContents(proc, w, h) \ - (CallUniversalProc(proc, SetWindowContentsUPPInfo, (w), (h))) - -#define CallContentsChanged(proc, w) \ - (CallUniversalProc(proc, ContentsChangedUPPInfo, (w))) - -#define CallGetFileText(proc, vRefNum, dirID, name, canDispose) \ - (Handle)(CallUniversalProc(proc, GetFileTextUPPInfo, (vRefNum), (dirID), (name), (canDispose))) - -#define CallGetFolder(proc, prompt, vRefNum, dirID) \ - (Boolean)(CallUniversalProc(proc, GetFolderUPPInfo, (prompt), (vRefNum), (dirID))) - -#define CallOpenSeveral(proc, sort, file_count, files) \ - (Boolean)(CallUniversalProc(proc, OpenSeveralUPPInfo, (sort), (file_count), (files))) - -#define CallCenterDialog(proc, dialogID) \ - (DialogPtr)(CallUniversalProc(proc, CenterDialogUPPInfo, (dialogID))) - -#define CallStandardFilter(proc, d, event, item) \ - CallModalFilterProc(proc, (d), (event), (item)) - -#define CallFrameDialogItem(proc, d, item) \ - CallUserItemProc(proc, (d), (item)) - -#define CallNewDocument(proc) \ - (WindowPtr)(CallUniversalProc(proc, NewDocumentUPPInfo)) - -#define CallOpenDocument(proc) \ - (WindowPtr)(CallUniversalProc(proc, OpenDocumentUPPInfo)) - -#define CallAllocate(proc, size, clear) \ - (Handle)(CallUniversalProc(proc, AllocateUPPInfo, (size), (clear))) - -#define CallFindPattern(proc, text, text_len, text_offset, pat, pat_len, case_sens) \ - (CallUniversalProc(proc, FindPatternUPPInfo, (text), (text_len), (text_offset), \ - (pat), (pat_len), (case_sens))) - -#define CallReportOSError(proc, code) \ - (CallUniversalProc(proc, ReportOSErrorUPPInfo, (code))) - -#define CallGetPreference(proc, prefType, req_len, buffer, act_len) \ - (CallUniversalProc(proc, GetPreferenceUPPInfo, (prefType), (req_len), (buffer), (act_len))) - -#define CallSetPreference(proc, prefType, req_len, buffer, act_len) \ - (CallUniversalProc(proc, SetPreferenceUPPInfo, (prefType), (req_len), (buffer), (act_len))) - -#define CallStartProgress(proc, str, total, cancel_allowed) \ - (CallUniversalProc(proc, StartProgressUPPInfo, (str), (total), (cancel_allowed))) - -#define CallDoProgress(proc, done) \ - (Boolean)(CallUniversalProc(proc, DoProgressUPPInfo, (done))) - -#define CallDoneProgress(proc) \ - (CallUniversalProc(proc, DoneProgressUPPInfo)) - -#define CallGetProjectList(proc, spec, kind, count, entries) \ - (Boolean)(CallUniversalProc(proc, GetProjectListUPPInfo, (spec), (kind), (count), (entries))) - -#define CallProjectTextList(proc, spec, text) \ - (Boolean)(CallUniversalProc(proc, ProjectTextListUPPInfo, (spec), (text))) - -#define CallPresetUndo(proc) \ - (Boolean)(CallUniversalProc(proc, PresetUndoUPPInfo)) - -#define CallSetUndo(proc) \ - (CallUniversalProc(proc, SetUndoUPPInfo)) - -#define CallOpenFile(proc, spec, w) \ - (Boolean)(CallUniversalProc(proc, OpenFileUPPInfo, (spec), (w))) - -#define CallPrepareUndo(proc, undo_start, undo_end, sel_start, sel_end) \ - (Boolean)(CallUniversalProc(proc, PrepareUndoUPPInfo, (undo_start), (undo_end), \ - (sel_start), (sel_end))) - -#define CallCommitUndo(proc, new_end) \ - (CallUniversalProc(proc, CommitUndoUPPInfo, (new_end))) - -#define CallCreateResults(proc, title, count, results, w) \ - (Boolean)(CallUniversalProc(proc, CreateResultsUPPInfo, (title), (count), (results), (w))) - -#else - -typedef pascal Handle (*GetWindowContentsProc)(WindowPtr w); -typedef pascal void (*GetSelectionProc)(long *selStart, long *selEnd, long *firstChar); -typedef pascal void (*SetSelectionProc)(long selStart, long selEnd, long firstChar); -typedef pascal void (*GetDocInfoProc)(WindowPtr w, Str255 fName, short *vRefNum, long *dirID); -typedef pascal long (*GetModDateProc)(WindowPtr w); -typedef pascal Handle (*CopyProc)(void); -typedef pascal void (*PasteProc)(Handle pasteText); - -typedef pascal long (*GetLastLineProc)(void); -typedef pascal long (*GetLineNumberProc)(long selection); -typedef pascal long (*GetLineStartProc)(long selection); -typedef pascal long (*GetLineEndProc)(long selection); -typedef pascal long (*GetLinePosProc)(long line); - -typedef pascal void (*InsertProc)(char *text, long len); -typedef pascal void (*DeleteProc)(void); - -typedef pascal void (*SetWindowContentsProc)(WindowPtr w, Handle h); -typedef pascal void (*ContentsChangedProc)(WindowPtr w); - -typedef pascal Handle (*GetFileTextProc)(short vRefNum, long dirID, Str255 fName, Boolean *canDispose); - -typedef pascal Boolean (*GetFolderProc)(Str255 prompt, short *vRefNum, long *dirID); -typedef pascal Boolean (*OpenSeveralProc)(Boolean sort, short *file_count, StandardFileReply ***files); - -typedef pascal DialogPtr (*CenterDialogProc)(short dialogID); -typedef pascal Boolean (*StandardFilterProc)(DialogPtr d, EventRecord *event, short *item); -typedef pascal void (*FrameDialogItemProc)(DialogPtr d, short item); - -typedef pascal WindowPtr (*NewDocumentProc)(void); -typedef pascal WindowPtr (*OpenDocumentProc)(void); - -typedef pascal Handle (*AllocateProc)(long size, Boolean clear); -typedef pascal long (*FindPatternProc)(char *text, long text_len, long text_offset, - char *pat, long pat_len, - Boolean case_sensitive); - -typedef pascal void (*ReportOSErrorProc)(short code); - -typedef pascal void (*GetPreferenceProc)(ResType prefType, short req_len, void *buffer, short *act_len); -typedef pascal void (*SetPreferenceProc)(ResType prefType, short req_len, void *buffer, short *act_len); - -typedef pascal void (*StartProgressProc)(Str255 str, long total, Boolean cancel_allowed); -typedef pascal Boolean (*DoProgressProc)(long done); -typedef pascal void (*DoneProgressProc)(void); - -typedef pascal Boolean (*GetProjectListProc)(FSSpec *spec, short *kind, short *count, ProjectEntry ***entries); -typedef pascal Boolean (*ProjectTextListProc)(FSSpec *spec, Handle *text); - -typedef pascal Boolean (*PresetUndoProc)(void); -typedef pascal void (*SetUndoProc)(void); - -typedef pascal Boolean (*OpenFileProc)(FSSpec *spec, WindowPtr *w); - -typedef pascal Boolean (*PrepareUndoProc)(long undo_start, long undo_end, - long sel_start, long sel_end); -typedef pascal void (*CommitUndoProc)(long new_end); - -typedef pascal Boolean (*CreateResultsProc)(Str255 title, short count, Handle results, WindowPtr *w); - -#define CallGetWindowContents(proc, w) \ - ((proc))((w)) - -#define CallGetSelection(proc, selStart, selEnd, firstChar) \ - ((proc))((selStart), (selEnd), (firstChar)) - -#define CallSetSelection(proc, selStart, selEnd, firstChar) \ - ((proc))((selStart), (selEnd), (firstChar)) - -#define CallGetDocInfo(proc, w, name, vRefNum, dirID) \ - ((proc))((w), (name), (vRefNum), (dirID)) - -#define CallGetModDate(proc, w) \ - ((proc))((w)) - -#define CallCopy(proc) \ - ((proc))() - -#define CallPaste(proc, h) \ - ((proc))((h)) - -#define CallGetLastLine(proc) \ - ((proc))() - -#define CallGetLineNumber(proc, sel) \ - ((proc))((sel)) - -#define CallGetLineStart(proc, sel) \ - ((proc))((sel)) - -#define CallGetLineEnd(proc, sel) \ - ((proc))((sel)) - -#define CallGetLinePos(proc, sel) \ - ((proc))((sel)) - -#define CallInsert(proc, text, len) \ - ((proc))((text), (len)) - -#define CallDelete(proc) \ - ((proc))() - -#define CallSetWindowContents(proc, w, h) \ - ((proc))((w), (h)) - -#define CallContentsChanged(proc, w) \ - ((proc))((w)) - -#define CallGetFileText(proc, vRefNum, dirID, name, canDispose) \ - ((proc))((vRefNum), (dirID), (name), (canDispose)) - -#define CallGetFolder(proc, prompt, vRefNum, dirID) \ - ((proc))((prompt), (vRefNum), (dirID)) - -#define CallOpenSeveral(proc, sort, file_count, files) \ - ((proc))((sort), (file_count), (files)) - -#define CallCenterDialog(proc, dialogID) \ - ((proc))((dialogID)) - -#define CallStandardFilter(proc, d, event, item) \ - ((proc))((d), (event), (item)) - -#define CallFrameDialogItem(proc, d, item) \ - ((proc))((d), (item)) - -#define CallNewDocument(proc) \ - ((proc))() - -#define CallOpenDocument(proc) \ - ((proc))() - -#define CallAllocate(proc, size, clear) \ - ((proc))((size), (clear)) - -#define CallFindPattern(proc, text, text_len, text_offset, pat, pat_len, case_sens) \ - ((proc))((text), (text_len), (text_offset), (pat), (pat_len), (case_sens)) - -#define CallReportOSError(proc, code) \ - ((proc))((code)) - -#define CallGetPreference(proc, prefType, req_len, buffer, act_len) \ - ((proc))((prefType), (req_len), (buffer), (act_len)) - -#define CallSetPreference(proc, prefType, req_len, buffer, act_len) \ - ((proc))((prefType), (req_len), (buffer), (act_len)) - -#define CallStartProgress(proc, str, total, cancel_allowed) \ - ((proc))((str), (total), (cancel_allowed)) - -#define CallDoProgress(proc, done) \ - ((proc))((done)) - -#define CallDoneProgress(proc) \ - ((proc))() - -#define CallGetProjectList(proc, spec, kind, count, entries) \ - ((proc))((spec), (kind), (count), (entries)) - -#define CallProjectTextList(proc, spec, text) \ - ((proc))((spec), (text)) - -#define CallPresetUndo(proc) \ - ((proc))() - -#define CallSetUndo(proc) \ - ((proc))() - -#define CallOpenFile(proc, spec, w) \ - ((proc))((spec), (w)) - -#define CallPrepareUndo(proc, undo_start, undo_end, sel_start, sel_end) \ - ((proc))((undo_start), (undo_end), (sel_start), (sel_end)) - -#define CallCommitUndo(proc, new_end) \ - ((proc))((new_end)) - -#define CallCreateResults(proc, title, count, results, w) \ - ((proc))((title), (count), (results), (w)) - -#endif - - -typedef struct -{ - short version; - - // version 1 callbacks - - GetWindowContentsProc GetWindowContents; - GetSelectionProc GetSelection; - SetSelectionProc SetSelection; - GetDocInfoProc GetDocInfo; - GetModDateProc GetModDate; - CopyProc Copy; - PasteProc Paste; - - // version 2 callbacks - - /* Text-Editing stuff */ - GetLastLineProc GetLastLine; - GetLineNumberProc GetLineNumber; - GetLineStartProc GetLineStart; - GetLineEndProc GetLineEnd; - GetLinePosProc GetLinePos; - - InsertProc Insert; - DeleteProc Delete; - - /* Getting and Setting window text */ - SetWindowContentsProc SetWindowContents; - ContentsChangedProc ContentsChanged; - - /* Reading file text */ - GetFileTextProc GetFileText; - - /* Direct user-interface calls */ - GetFolderProc GetFolder; - OpenSeveralProc OpenSeveral; - - CenterDialogProc CenterDialog; - StandardFilterProc StandardFilter; - FrameDialogItemProc FrameDialogItem; - - NewDocumentProc NewDocument; - OpenDocumentProc OpenDocument; - - /* Utility Routines */ - AllocateProc Allocate; - FindPatternProc FindPattern; - - ReportOSErrorProc ReportOSError; - - /* Preference routines */ - GetPreferenceProc GetPreference; - SetPreferenceProc SetPreference; - - /* Progress routines */ - StartProgressProc StartProgress; - DoProgressProc DoProgress; - DoneProgressProc DoneProgress; - - // Version 3 callbacks - GetProjectListProc GetProjectList; - ProjectTextListProc ProjectTextList; - - // version 4 callbacks - - PresetUndoProc PresetUndo; - SetUndoProc SetUndo; - - OpenFileProc OpenFile; - - // version 5 callbacks - - PrepareUndoProc PrepareUndo; - CommitUndoProc CommitUndo; - - CreateResultsProc CreateResults; - -} ExternalCallbackBlock; - -#if defined(powerc) || defined (__powerc) -#pragma options align=reset -#endif - -/* - 'main' for a BBXT is declared: - -pascal void main(ExternalCallbackBlock *callbacks, WindowPtr w); [C] - - The 'new' calling convention, which passes more information - and allows scriptability, is this: - -pascal OSErr main(ExternalCallbackBlock *callbacks, WindowPtr w, long flags, AppleEvent *event, AppleEvent *reply); -*/ diff --git a/Mac/Contrib/BBPy/source/BB-stuff/ExternalInterface.h b/Mac/Contrib/BBPy/source/BB-stuff/ExternalInterface.h deleted file mode 100644 index 51d206dfc29e..000000000000 --- a/Mac/Contrib/BBPy/source/BB-stuff/ExternalInterface.h +++ /dev/null @@ -1,716 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include - -#if defined(powerc) || defined (__powerc) -#pragma options align=mac68k -#endif - -typedef struct -{ - FSSpec spec; // designates file on disk - long key; // reserved for future expansion - - char tree; // 0 for absolute, 1 for project, 2 for system - Boolean found; // FALSE if file couldn't be located; if so, all other info is moot - - OSType type; // file type of found file - OSType crtr; // signature of found file's creator - - short spare0; // reserved for future expansion - long spare1; -} ProjectEntry; - -enum -{ - kNeitherTree, - kProjectTree, - kSystemTree -}; - -enum -{ - kTHINKCProject, - kTHINKPascalProject, - kCodeWarriorProject -}; - -// masks for the "flags" argument to new-convention interfaces - -#define xfWindowOpen 0x00000001 -#define xfWindowChangeable 0x00000002 -#define xfHasSelection 0x00000004 -#define xfUseDefaults 0x00000008 -#define xfIsBBEditLite 0x00000040 -#define xfIsBBEditDemo 0x00000080 - -typedef struct -{ - FSSpec spec; - OSType key; - - short error_kind; - long line_number; - - Str255 message; -} ErrorEntry; - -typedef enum -{ - kNote = 0, - kError, - kWarning -} ErrorKind; - -#define kCurrentExternalVersion 5 // current version of callbacks - -// Universal callback interfaces - -#if USESROUTINEDESCRIPTORS - -#define ExtensionUPPInfo (kPascalStackBased \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ExternalCallbackBlock *))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(WindowPtr)))) - -#define NewExtensionUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ExternalCallbackBlock *))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(WindowPtr))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(AppleEvent *))) \ - | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(AppleEvent *)))) - -#define GetWindowContentsUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Handle))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(WindowPtr)))) - -#define GetSelectionUPPInfo (kPascalStackBased \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long *))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long *))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long *)))) - -#define SetSelectionUPPInfo (kPascalStackBased \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))) - -#define GetDocInfoUPPInfo (kPascalStackBased \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(WindowPtr))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(unsigned char *))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short *))) \ - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long *)))) - -#define GetModDateUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(WindowPtr)))) - -#define CopyUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Handle)))) - -#define PasteUPPInfo (kPascalStackBased \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Handle)))) - -#define GetLastLineUPPInfo (kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(long)))) - -#define GetLineNumberUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))) - -#define GetLineStartUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))) - -#define GetLineEndUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))) - -#define GetLinePosUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))) - -#define InsertUPPInfo (kPascalStackBased \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(char *))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))) - -#define DeleteUPPInfo (kPascalStackBased) - -#define SetWindowContentsUPPInfo (kPascalStackBased \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(WindowPtr))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Handle)))) - -#define ContentsChangedUPPInfo (kPascalStackBased \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(WindowPtr)))) - -#define GetFileTextUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Handle))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(unsigned char *))) \ - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(Boolean *)))) - -#define GetFolderUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(unsigned char *))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short *))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long *)))) - -#define OpenSeveralUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Boolean))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short *))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(StandardFileReply ***)))) - -#define CenterDialogUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(DialogPtr))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))) - -#define StandardFilterUPPInfo uppModalFilterProcInfo - -#define FrameDialogItemUPPInfo uppUserItemProcInfo - -#define NewDocumentUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(WindowPtr)))) - -#define OpenDocumentUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(WindowPtr)))) - -#define AllocateUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Handle))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Boolean)))) - -#define FindPatternUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(char *))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(char *))) \ - | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(Boolean)))) - -#define ReportOSErrorUPPInfo (kPascalStackBased) - -#define GetPreferenceUPPInfo (kPascalStackBased \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ResType))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void *))) \ - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short *)))) - -#define SetPreferenceUPPInfo (kPascalStackBased \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ResType))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void *))) \ - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short *)))) - -#define StartProgressUPPInfo (kPascalStackBased \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(unsigned char *))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Boolean)))) - -#define DoProgressUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))) - -#define DoneProgressUPPInfo (kPascalStackBased) - -#define GetProjectListUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(FSSpec *))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short *))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short *))) \ - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(ProjectEntry***)))) - -#define ProjectTextListUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(FSSpec *))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Handle *)))) - -#define PresetUndoUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))) - -#define SetUndoUPPInfo (kPascalStackBased) - -#define OpenFileUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(FSSpec *))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(WindowPtr *)))) - -#define PrepareUndoUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))) \ - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long)))) - -#define CommitUndoUPPInfo (kPascalStackBased \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))) - -#define CreateResultsUPPInfo (kPascalStackBased \ - | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) \ - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(unsigned char *))) \ - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))) \ - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Handle))) \ - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(WindowPtr *)))) - -typedef UniversalProcPtr GetWindowContentsProc; -typedef UniversalProcPtr GetSelectionProc; -typedef UniversalProcPtr SetSelectionProc; -typedef UniversalProcPtr GetDocInfoProc; -typedef UniversalProcPtr GetModDateProc; -typedef UniversalProcPtr CopyProc; -typedef UniversalProcPtr PasteProc; - -typedef UniversalProcPtr GetLastLineProc; -typedef UniversalProcPtr GetLineNumberProc; -typedef UniversalProcPtr GetLineStartProc; -typedef UniversalProcPtr GetLineEndProc; -typedef UniversalProcPtr GetLinePosProc; - -typedef UniversalProcPtr InsertProc; -typedef UniversalProcPtr DeleteProc; - -typedef UniversalProcPtr SetWindowContentsProc; -typedef UniversalProcPtr ContentsChangedProc; - -typedef UniversalProcPtr GetFileTextProc; - -typedef UniversalProcPtr GetFolderProc; -typedef UniversalProcPtr OpenSeveralProc; - -typedef UniversalProcPtr CenterDialogProc; -typedef UniversalProcPtr StandardFilterProc; -typedef UniversalProcPtr FrameDialogItemProc; - -typedef UniversalProcPtr NewDocumentProc; -typedef UniversalProcPtr OpenDocumentProc; - -typedef UniversalProcPtr AllocateProc; -typedef UniversalProcPtr FindPatternProc; - -typedef UniversalProcPtr ReportOSErrorProc; - -typedef UniversalProcPtr GetPreferenceProc; -typedef UniversalProcPtr SetPreferenceProc; - -typedef UniversalProcPtr StartProgressProc; -typedef UniversalProcPtr DoProgressProc; -typedef UniversalProcPtr DoneProgressProc; - -typedef UniversalProcPtr GetProjectListProc; -typedef UniversalProcPtr ProjectTextListProc; - -typedef UniversalProcPtr PresetUndoProc; -typedef UniversalProcPtr SetUndoProc; - -typedef UniversalProcPtr OpenFileProc; - -typedef UniversalProcPtr PrepareUndoProc; -typedef UniversalProcPtr CommitUndoProc; - -typedef UniversalProcPtr CreateResultsProc; - -#define CallGetWindowContents(proc, w) \ - (Handle)(CallUniversalProc(proc, GetWindowContentsUPPInfo, (w))) - -#define CallGetSelection(proc, selStart, selEnd, firstChar) \ - (CallUniversalProc(proc, GetSelectionUPPInfo, (selStart), (selEnd), (firstChar))) - -#define CallSetSelection(proc, selStart, selEnd, firstChar) \ - (CallUniversalProc(proc, SetSelectionUPPInfo, (selStart), (selEnd), (firstChar))) - -#define CallGetDocInfo(proc, w, name, vRefNum, dirID) \ - (CallUniversalProc(proc, GetDocInfoUPPInfo, (w), (name), (vRefNum), (dirID))) - -#define CallGetModDate(proc, w) \ - (CallUniversalProc(proc, GetModDateUPPInfo, (w))) - -#define CallCopy(proc) \ - (Handle)(CallUniversalProc(proc, CopyUPPInfo)) - -#define CallPaste(proc, h) \ - (CallUniversalProc(proc, PasteUPPInfo, (h))) - -#define CallGetLastLine(proc) \ - (CallUniversalProc(proc, GetLastLineUPPInfo)) - -#define CallGetLineNumber(proc, sel) \ - (CallUniversalProc(proc, GetLineNumberUPPInfo, (sel))) - -#define CallGetLineStart(proc, sel) \ - (CallUniversalProc(proc, GetLineStartUPPInfo, (sel))) - -#define CallGetLineEnd(proc, sel) \ - (CallUniversalProc(proc, GetLineEndUPPInfo, (sel))) - -#define CallGetLinePos(proc, sel) \ - (CallUniversalProc(proc, GetLinePosUPPInfo, (sel))) - -#define CallInsert(proc, text, len) \ - (CallUniversalProc(proc, InsertUPPInfo, (text), (len))) - -#define CallDelete(proc) \ - (CallUniversalProc(proc, DeleteUPPInfo)) - -#define CallSetWindowContents(proc, w, h) \ - (CallUniversalProc(proc, SetWindowContentsUPPInfo, (w), (h))) - -#define CallContentsChanged(proc, w) \ - (CallUniversalProc(proc, ContentsChangedUPPInfo, (w))) - -#define CallGetFileText(proc, vRefNum, dirID, name, canDispose) \ - (Handle)(CallUniversalProc(proc, GetFileTextUPPInfo, (vRefNum), (dirID), (name), (canDispose))) - -#define CallGetFolder(proc, prompt, vRefNum, dirID) \ - (Boolean)(CallUniversalProc(proc, GetFolderUPPInfo, (prompt), (vRefNum), (dirID))) - -#define CallOpenSeveral(proc, sort, file_count, files) \ - (Boolean)(CallUniversalProc(proc, OpenSeveralUPPInfo, (sort), (file_count), (files))) - -#define CallCenterDialog(proc, dialogID) \ - (DialogPtr)(CallUniversalProc(proc, CenterDialogUPPInfo, (dialogID))) - -#define CallStandardFilter(proc, d, event, item) \ - CallModalFilterProc(proc, (d), (event), (item)) - -#define CallFrameDialogItem(proc, d, item) \ - CallUserItemProc(proc, (d), (item)) - -#define CallNewDocument(proc) \ - (WindowPtr)(CallUniversalProc(proc, NewDocumentUPPInfo)) - -#define CallOpenDocument(proc) \ - (WindowPtr)(CallUniversalProc(proc, OpenDocumentUPPInfo)) - -#define CallAllocate(proc, size, clear) \ - (Handle)(CallUniversalProc(proc, AllocateUPPInfo, (size), (clear))) - -#define CallFindPattern(proc, text, text_len, text_offset, pat, pat_len, case_sens) \ - (CallUniversalProc(proc, FindPatternUPPInfo, (text), (text_len), (text_offset), \ - (pat), (pat_len), (case_sens))) - -#define CallReportOSError(proc, code) \ - (CallUniversalProc(proc, ReportOSErrorUPPInfo, (code))) - -#define CallGetPreference(proc, prefType, req_len, buffer, act_len) \ - (CallUniversalProc(proc, GetPreferenceUPPInfo, (prefType), (req_len), (buffer), (act_len))) - -#define CallSetPreference(proc, prefType, req_len, buffer, act_len) \ - (CallUniversalProc(proc, SetPreferenceUPPInfo, (prefType), (req_len), (buffer), (act_len))) - -#define CallStartProgress(proc, str, total, cancel_allowed) \ - (CallUniversalProc(proc, StartProgressUPPInfo, (str), (total), (cancel_allowed))) - -#define CallDoProgress(proc, done) \ - (Boolean)(CallUniversalProc(proc, DoProgressUPPInfo, (done))) - -#define CallDoneProgress(proc) \ - (CallUniversalProc(proc, DoneProgressUPPInfo)) - -#define CallGetProjectList(proc, spec, kind, count, entries) \ - (Boolean)(CallUniversalProc(proc, GetProjectListUPPInfo, (spec), (kind), (count), (entries))) - -#define CallProjectTextList(proc, spec, text) \ - (Boolean)(CallUniversalProc(proc, ProjectTextListUPPInfo, (spec), (text))) - -#define CallPresetUndo(proc) \ - (Boolean)(CallUniversalProc(proc, PresetUndoUPPInfo)) - -#define CallSetUndo(proc) \ - (CallUniversalProc(proc, SetUndoUPPInfo)) - -#define CallOpenFile(proc, spec, w) \ - (Boolean)(CallUniversalProc(proc, OpenFileUPPInfo, (spec), (w))) - -#define CallPrepareUndo(proc, undo_start, undo_end, sel_start, sel_end) \ - (Boolean)(CallUniversalProc(proc, PrepareUndoUPPInfo, (undo_start), (undo_end), \ - (sel_start), (sel_end))) - -#define CallCommitUndo(proc, new_end) \ - (CallUniversalProc(proc, CommitUndoUPPInfo, (new_end))) - -#define CallCreateResults(proc, title, count, results, w) \ - (Boolean)(CallUniversalProc(proc, CreateResultsUPPInfo, (title), (count), (results), (w))) - -#else - -typedef pascal Handle (*GetWindowContentsProc)(WindowPtr w); -typedef pascal void (*GetSelectionProc)(long *selStart, long *selEnd, long *firstChar); -typedef pascal void (*SetSelectionProc)(long selStart, long selEnd, long firstChar); -typedef pascal void (*GetDocInfoProc)(WindowPtr w, Str255 fName, short *vRefNum, long *dirID); -typedef pascal long (*GetModDateProc)(WindowPtr w); -typedef pascal Handle (*CopyProc)(void); -typedef pascal void (*PasteProc)(Handle pasteText); - -typedef pascal long (*GetLastLineProc)(void); -typedef pascal long (*GetLineNumberProc)(long selection); -typedef pascal long (*GetLineStartProc)(long selection); -typedef pascal long (*GetLineEndProc)(long selection); -typedef pascal long (*GetLinePosProc)(long line); - -typedef pascal void (*InsertProc)(char *text, long len); -typedef pascal void (*DeleteProc)(void); - -typedef pascal void (*SetWindowContentsProc)(WindowPtr w, Handle h); -typedef pascal void (*ContentsChangedProc)(WindowPtr w); - -typedef pascal Handle (*GetFileTextProc)(short vRefNum, long dirID, Str255 fName, Boolean *canDispose); - -typedef pascal Boolean (*GetFolderProc)(Str255 prompt, short *vRefNum, long *dirID); -typedef pascal Boolean (*OpenSeveralProc)(Boolean sort, short *file_count, StandardFileReply ***files); - -typedef pascal DialogPtr (*CenterDialogProc)(short dialogID); -typedef pascal Boolean (*StandardFilterProc)(DialogPtr d, EventRecord *event, short *item); -typedef pascal void (*FrameDialogItemProc)(DialogPtr d, short item); - -typedef pascal WindowPtr (*NewDocumentProc)(void); -typedef pascal WindowPtr (*OpenDocumentProc)(void); - -typedef pascal Handle (*AllocateProc)(long size, Boolean clear); -typedef pascal long (*FindPatternProc)(char *text, long text_len, long text_offset, - char *pat, long pat_len, - Boolean case_sensitive); - -typedef pascal void (*ReportOSErrorProc)(short code); - -typedef pascal void (*GetPreferenceProc)(ResType prefType, short req_len, void *buffer, short *act_len); -typedef pascal void (*SetPreferenceProc)(ResType prefType, short req_len, void *buffer, short *act_len); - -typedef pascal void (*StartProgressProc)(Str255 str, long total, Boolean cancel_allowed); -typedef pascal Boolean (*DoProgressProc)(long done); -typedef pascal void (*DoneProgressProc)(void); - -typedef pascal Boolean (*GetProjectListProc)(FSSpec *spec, short *kind, short *count, ProjectEntry ***entries); -typedef pascal Boolean (*ProjectTextListProc)(FSSpec *spec, Handle *text); - -typedef pascal Boolean (*PresetUndoProc)(void); -typedef pascal void (*SetUndoProc)(void); - -typedef pascal Boolean (*OpenFileProc)(FSSpec *spec, WindowPtr *w); - -typedef pascal Boolean (*PrepareUndoProc)(long undo_start, long undo_end, - long sel_start, long sel_end); -typedef pascal void (*CommitUndoProc)(long new_end); - -typedef pascal Boolean (*CreateResultsProc)(Str255 title, short count, Handle results, WindowPtr *w); - -#define CallGetWindowContents(proc, w) \ - ((proc))((w)) - -#define CallGetSelection(proc, selStart, selEnd, firstChar) \ - ((proc))((selStart), (selEnd), (firstChar)) - -#define CallSetSelection(proc, selStart, selEnd, firstChar) \ - ((proc))((selStart), (selEnd), (firstChar)) - -#define CallGetDocInfo(proc, w, name, vRefNum, dirID) \ - ((proc))((w), (name), (vRefNum), (dirID)) - -#define CallGetModDate(proc, w) \ - ((proc))((w)) - -#define CallCopy(proc) \ - ((proc))() - -#define CallPaste(proc, h) \ - ((proc))((h)) - -#define CallGetLastLine(proc) \ - ((proc))() - -#define CallGetLineNumber(proc, sel) \ - ((proc))((sel)) - -#define CallGetLineStart(proc, sel) \ - ((proc))((sel)) - -#define CallGetLineEnd(proc, sel) \ - ((proc))((sel)) - -#define CallGetLinePos(proc, sel) \ - ((proc))((sel)) - -#define CallInsert(proc, text, len) \ - ((proc))((text), (len)) - -#define CallDelete(proc) \ - ((proc))() - -#define CallSetWindowContents(proc, w, h) \ - ((proc))((w), (h)) - -#define CallContentsChanged(proc, w) \ - ((proc))((w)) - -#define CallGetFileText(proc, vRefNum, dirID, name, canDispose) \ - ((proc))((vRefNum), (dirID), (name), (canDispose)) - -#define CallGetFolder(proc, prompt, vRefNum, dirID) \ - ((proc))((prompt), (vRefNum), (dirID)) - -#define CallOpenSeveral(proc, sort, file_count, files) \ - ((proc))((sort), (file_count), (files)) - -#define CallCenterDialog(proc, dialogID) \ - ((proc))((dialogID)) - -#define CallStandardFilter(proc, d, event, item) \ - ((proc))((d), (event), (item)) - -#define CallFrameDialogItem(proc, d, item) \ - ((proc))((d), (item)) - -#define CallNewDocument(proc) \ - ((proc))() - -#define CallOpenDocument(proc) \ - ((proc))() - -#define CallAllocate(proc, size, clear) \ - ((proc))((size), (clear)) - -#define CallFindPattern(proc, text, text_len, text_offset, pat, pat_len, case_sens) \ - ((proc))((text), (text_len), (text_offset), (pat), (pat_len), (case_sens)) - -#define CallReportOSError(proc, code) \ - ((proc))((code)) - -#define CallGetPreference(proc, prefType, req_len, buffer, act_len) \ - ((proc))((prefType), (req_len), (buffer), (act_len)) - -#define CallSetPreference(proc, prefType, req_len, buffer, act_len) \ - ((proc))((prefType), (req_len), (buffer), (act_len)) - -#define CallStartProgress(proc, str, total, cancel_allowed) \ - ((proc))((str), (total), (cancel_allowed)) - -#define CallDoProgress(proc, done) \ - ((proc))((done)) - -#define CallDoneProgress(proc) \ - ((proc))() - -#define CallGetProjectList(proc, spec, kind, count, entries) \ - ((proc))((spec), (kind), (count), (entries)) - -#define CallProjectTextList(proc, spec, text) \ - ((proc))((spec), (text)) - -#define CallPresetUndo(proc) \ - ((proc))() - -#define CallSetUndo(proc) \ - ((proc))() - -#define CallOpenFile(proc, spec, w) \ - ((proc))((spec), (w)) - -#define CallPrepareUndo(proc, undo_start, undo_end, sel_start, sel_end) \ - ((proc))((undo_start), (undo_end), (sel_start), (sel_end)) - -#define CallCommitUndo(proc, new_end) \ - ((proc))((new_end)) - -#define CallCreateResults(proc, title, count, results, w) \ - ((proc))((title), (count), (results), (w)) - -#endif - - -typedef struct -{ - short version; - - // version 1 callbacks - - GetWindowContentsProc GetWindowContents; - GetSelectionProc GetSelection; - SetSelectionProc SetSelection; - GetDocInfoProc GetDocInfo; - GetModDateProc GetModDate; - CopyProc Copy; - PasteProc Paste; - - // version 2 callbacks - - /* Text-Editing stuff */ - GetLastLineProc GetLastLine; - GetLineNumberProc GetLineNumber; - GetLineStartProc GetLineStart; - GetLineEndProc GetLineEnd; - GetLinePosProc GetLinePos; - - InsertProc Insert; - DeleteProc Delete; - - /* Getting and Setting window text */ - SetWindowContentsProc SetWindowContents; - ContentsChangedProc ContentsChanged; - - /* Reading file text */ - GetFileTextProc GetFileText; - - /* Direct user-interface calls */ - GetFolderProc GetFolder; - OpenSeveralProc OpenSeveral; - - CenterDialogProc CenterDialog; - StandardFilterProc StandardFilter; - FrameDialogItemProc FrameDialogItem; - - NewDocumentProc NewDocument; - OpenDocumentProc OpenDocument; - - /* Utility Routines */ - AllocateProc Allocate; - FindPatternProc FindPattern; - - ReportOSErrorProc ReportOSError; - - /* Preference routines */ - GetPreferenceProc GetPreference; - SetPreferenceProc SetPreference; - - /* Progress routines */ - StartProgressProc StartProgress; - DoProgressProc DoProgress; - DoneProgressProc DoneProgress; - - // Version 3 callbacks - GetProjectListProc GetProjectList; - ProjectTextListProc ProjectTextList; - - // version 4 callbacks - - PresetUndoProc PresetUndo; - SetUndoProc SetUndo; - - OpenFileProc OpenFile; - - // version 5 callbacks - - PrepareUndoProc PrepareUndo; - CommitUndoProc CommitUndo; - - CreateResultsProc CreateResults; - -} ExternalCallbackBlock; - -#if defined(powerc) || defined (__powerc) -#pragma options align=reset -#endif - -/* - 'main' for a BBXT is declared: - -pascal void main(ExternalCallbackBlock *callbacks, WindowPtr w); [C] - - The 'new' calling convention, which passes more information - and allows scriptability, is this: - -pascal OSErr main(ExternalCallbackBlock *callbacks, WindowPtr w, long flags, AppleEvent *event, AppleEvent *reply); -*/ diff --git a/Mac/Contrib/BBPy/source/BBPy.h b/Mac/Contrib/BBPy/source/BBPy.h deleted file mode 100644 index 22974eaaf378..000000000000 --- a/Mac/Contrib/BBPy/source/BBPy.h +++ /dev/null @@ -1,17 +0,0 @@ -/* BBPython - A simple menu command to send the contents of a window to the Python interpreter - - copyright © 1996 Just van Rossum, Letterror: just@knoware.nl - - All Rights Reserved -*/ - -#include -#include -#include // for global variables, multiple segments, etc. -#include "ExternalInterface.h" -#include - -extern OSErr SendTextAsAE(ExternalCallbackBlock *callbacks, Ptr theText, long theSize, Str255 windowTitle); -extern OSErr LaunchPythonSlave(FSSpec * docSpec); -extern Boolean GetPythonSlaveSpec(FSSpec * docSpec); diff --git a/Mac/Contrib/BBPy/source/BBPy.rsrc b/Mac/Contrib/BBPy/source/BBPy.rsrc deleted file mode 100644 index 12e2d04654e4..000000000000 --- a/Mac/Contrib/BBPy/source/BBPy.rsrc +++ /dev/null @@ -1 +0,0 @@ -(This file must be converted with BinHex 4.0) :#8*#8(NZFR0bB`"bFh*M8P0&4!%!N!F#GELF!*!%!3!!!!(c!!!!m`!!!))!q`" F!8h!!J!,!*!&T!!d!-3!C!B!N!DN!(`*3N*3H5jbFh*M,R*cFQ0bC@jMCA0ZFfP [ER4PER4cF`!!FR0bBe*6483"!!"!!!%!N"+b&)qr!*!'!R9ZBf9X!*!&13"1!%d !RJ3+4'pZeA3J8f&fC3#3"3`!6J!X!A@)0e0KGQ8JBfKKEQGPFb"dEb"dD'8J6@9 dFQphCA*VFb"%Ef0eE@9ZG#$5AM$6)'*PCQpbC5"H-6m#!*!&$!!A!#`!0k!#!!) !N!b""!!"!!!!$J!S!#J!M!'3!!#!998`#J!!!!3!!!*"!!!!J!!$!*!&3!%%!&3 "9!3$@@9c!*!'3!#U!&3!qJ3#6Qm!N!8)!$`!0J&8L$l58(PdD'pZ8faKGQ8ZF(R 6)'Pc)'j[G#"bG@jZD@jR,#!0GfpeE'3JH@pe)'aTDf8JG'mJE'pMBA4P)'Pd2`# 3"3J!#J!S!#UJ!J!"!!!!"J%!!&)!N!9(!#-J!!!!"RB`,M)Z-cPf-#ib,M-JU5" +GA0d)(CKEL"5Eh0cG@dJ,b"-CA4dCA*bEh)X)$aUGA0d3'aPG(4PFR*[FLjZE$i !!!%!!!!"m`!!!2-!!!###2`64#G-!!!!(!##!!4fCA*c!!!!+N4*9%`!!!!f38a 59!!!!%*#3PK'!!!!6N*#@%X!!!"D!!(rr`!!!+J)r"(m!)$rr`!!!"S!N!@!rrm !N!Q!rrm!!!!5!*!&J2rr!!!!RJ#3"-JY: \ No newline at end of file diff --git a/Mac/Contrib/BBPy/source/BBPy_lauch.c b/Mac/Contrib/BBPy/source/BBPy_lauch.c deleted file mode 100644 index f9b964cee19d..000000000000 --- a/Mac/Contrib/BBPy/source/BBPy_lauch.c +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Launch the PythonSlave.py script. - * This works exactly as if you'd double clicked on the file in the Finder, which - * not surprisingly is how its implemented (via the AppleEvents route of course). - * - * Largely based on code submitted by Mark Roseman - * Thanks! - */ - -#include "BBPy.h" - -pascal Boolean MyFileFilter(CInfoPBPtr PB); -FileFilterUPP gMyFileFilterUPP = NULL; - -Boolean GetPythonSlaveSpec(FSSpec * docSpec) { - StandardFileReply reply; - SFTypeList typeList; - - typeList[0] = 'TEXT'; - - //if (!gMyFileFilterUPP) - gMyFileFilterUPP = NewFileFilterProc( MyFileFilter ); - - StandardGetFile(gMyFileFilterUPP, 0, typeList, &reply); - - DisposePtr((Ptr)gMyFileFilterUPP); - - if(!reply.sfGood) - return 0; /* user cancelled */ - - docSpec->vRefNum = reply.sfFile.vRefNum; - docSpec->parID = reply.sfFile.parID; - BlockMove(reply.sfFile.name, docSpec->name, 64); - return 1; -} - -pascal Boolean MyFileFilter(CInfoPBPtr PB) { - OSType fType; /* file type */ - OSType fCreator; /* file creator */ - - fType =((HParmBlkPtr)PB)->fileParam.ioFlFndrInfo.fdType; - fCreator = ((HParmBlkPtr)PB)->fileParam.ioFlFndrInfo.fdCreator; - - if (fType == 'TEXT' && - fCreator == 'Pyth') - return 0; - return 1; -} - -OSErr LaunchPythonSlave(FSSpec * docSpec) { - OSErr err; - FSSpec dirSpec; - AEAddressDesc finderAddress; - AppleEvent theEvent, theReply; - OSType finderSig = 'MACS'; - AliasHandle DirAlias, FileAlias; - AEDesc fileList; - AEDesc aeDirDesc, listElem; - - err = AECreateDesc(typeApplSignature, (Ptr)&finderSig, 4, &finderAddress); - if(err != noErr) return err; - - err = AECreateAppleEvent('FNDR', 'sope', &finderAddress, - kAutoGenerateReturnID, kAnyTransactionID, &theEvent); - if(err != noErr) return err; - - FSMakeFSSpec(docSpec->vRefNum, docSpec->parID, NULL, &dirSpec); - NewAlias(NULL, &dirSpec, &DirAlias); - NewAlias(NULL, docSpec, &FileAlias); - err = AECreateList(NULL, 0, 0, &fileList); - HLock((Handle)DirAlias); - AECreateDesc(typeAlias, (Ptr)*DirAlias, GetHandleSize((Handle)DirAlias), &aeDirDesc); - HUnlock((Handle)DirAlias); - if ((err = AEPutParamDesc(&theEvent, keyDirectObject, &aeDirDesc)) == noErr) { - AEDisposeDesc(&aeDirDesc); - HLock((Handle)FileAlias); - AECreateDesc(typeAlias, (Ptr)*FileAlias, GetHandleSize((Handle)FileAlias), &listElem); - HLock((Handle)FileAlias); - err = AEPutDesc(&fileList, 0, &listElem); - } - AEDisposeDesc(&listElem); - err = AEPutParamDesc(&theEvent, 'fsel', &fileList); - AEDisposeDesc(&fileList); - - err = AESend(&theEvent, &theReply, kAENoReply+kAENeverInteract, - kAENormalPriority, kAEDefaultTimeout, 0L, 0L); - if(err != noErr) return err; - - err = AEDisposeDesc(&theEvent); - if(err != noErr) return err; - - err = AEDisposeDesc(&theReply); - return err; -} diff --git a/Mac/Contrib/BBPy/source/BBPy_launch.c b/Mac/Contrib/BBPy/source/BBPy_launch.c deleted file mode 100644 index f9b964cee19d..000000000000 --- a/Mac/Contrib/BBPy/source/BBPy_launch.c +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Launch the PythonSlave.py script. - * This works exactly as if you'd double clicked on the file in the Finder, which - * not surprisingly is how its implemented (via the AppleEvents route of course). - * - * Largely based on code submitted by Mark Roseman - * Thanks! - */ - -#include "BBPy.h" - -pascal Boolean MyFileFilter(CInfoPBPtr PB); -FileFilterUPP gMyFileFilterUPP = NULL; - -Boolean GetPythonSlaveSpec(FSSpec * docSpec) { - StandardFileReply reply; - SFTypeList typeList; - - typeList[0] = 'TEXT'; - - //if (!gMyFileFilterUPP) - gMyFileFilterUPP = NewFileFilterProc( MyFileFilter ); - - StandardGetFile(gMyFileFilterUPP, 0, typeList, &reply); - - DisposePtr((Ptr)gMyFileFilterUPP); - - if(!reply.sfGood) - return 0; /* user cancelled */ - - docSpec->vRefNum = reply.sfFile.vRefNum; - docSpec->parID = reply.sfFile.parID; - BlockMove(reply.sfFile.name, docSpec->name, 64); - return 1; -} - -pascal Boolean MyFileFilter(CInfoPBPtr PB) { - OSType fType; /* file type */ - OSType fCreator; /* file creator */ - - fType =((HParmBlkPtr)PB)->fileParam.ioFlFndrInfo.fdType; - fCreator = ((HParmBlkPtr)PB)->fileParam.ioFlFndrInfo.fdCreator; - - if (fType == 'TEXT' && - fCreator == 'Pyth') - return 0; - return 1; -} - -OSErr LaunchPythonSlave(FSSpec * docSpec) { - OSErr err; - FSSpec dirSpec; - AEAddressDesc finderAddress; - AppleEvent theEvent, theReply; - OSType finderSig = 'MACS'; - AliasHandle DirAlias, FileAlias; - AEDesc fileList; - AEDesc aeDirDesc, listElem; - - err = AECreateDesc(typeApplSignature, (Ptr)&finderSig, 4, &finderAddress); - if(err != noErr) return err; - - err = AECreateAppleEvent('FNDR', 'sope', &finderAddress, - kAutoGenerateReturnID, kAnyTransactionID, &theEvent); - if(err != noErr) return err; - - FSMakeFSSpec(docSpec->vRefNum, docSpec->parID, NULL, &dirSpec); - NewAlias(NULL, &dirSpec, &DirAlias); - NewAlias(NULL, docSpec, &FileAlias); - err = AECreateList(NULL, 0, 0, &fileList); - HLock((Handle)DirAlias); - AECreateDesc(typeAlias, (Ptr)*DirAlias, GetHandleSize((Handle)DirAlias), &aeDirDesc); - HUnlock((Handle)DirAlias); - if ((err = AEPutParamDesc(&theEvent, keyDirectObject, &aeDirDesc)) == noErr) { - AEDisposeDesc(&aeDirDesc); - HLock((Handle)FileAlias); - AECreateDesc(typeAlias, (Ptr)*FileAlias, GetHandleSize((Handle)FileAlias), &listElem); - HLock((Handle)FileAlias); - err = AEPutDesc(&fileList, 0, &listElem); - } - AEDisposeDesc(&listElem); - err = AEPutParamDesc(&theEvent, 'fsel', &fileList); - AEDisposeDesc(&fileList); - - err = AESend(&theEvent, &theReply, kAENoReply+kAENeverInteract, - kAENormalPriority, kAEDefaultTimeout, 0L, 0L); - if(err != noErr) return err; - - err = AEDisposeDesc(&theEvent); - if(err != noErr) return err; - - err = AEDisposeDesc(&theReply); - return err; -} diff --git a/Mac/Contrib/BBPy/source/BBPy_main.c b/Mac/Contrib/BBPy/source/BBPy_main.c deleted file mode 100644 index a96b271abb34..000000000000 --- a/Mac/Contrib/BBPy/source/BBPy_main.c +++ /dev/null @@ -1,104 +0,0 @@ -/* BBPython - A simple menu command to send the contents of a window to the Python interpreter - - copyright © 1996 Just van Rossum, Letterror: just@knoware.nl - - All Rights Reserved -*/ - -#include "BBPy.h" - -OSErr SendTextAsAE(ExternalCallbackBlock *callbacks, Ptr theText, long theSize, Str255 windowTitle) -{ - OSErr err; - AEDesc theEvent; - AEAddressDesc theTarget; - AppleEvent theReply; - AEDesc theTextDesc; - AEDesc theNameDesc; - OSType pythonSig = 'Pyth'; - FSSpec docSpec; - short itemHit; - long time; - EventRecord theDummyEvent; - - /* initialize AE descriptor for python's signature */ - err = AECreateDesc (typeApplSignature, &pythonSig, sizeof(OSType), &theTarget); - if(err != noErr) return err; - - /* initialize AE descriptor for the title of our window */ - err = AECreateDesc (typeChar, &windowTitle[1], windowTitle[0], &theNameDesc); - if(err != noErr) return err; - - /* initialize AE descriptor for the content of our window */ - err = AECreateDesc ('TEXT', theText, theSize, &theTextDesc); - if(err != noErr) return err; - - /* initialize AppleEvent */ - err = AECreateAppleEvent ('pyth', 'EXEC', &theTarget, kAutoGenerateReturnID, kAnyTransactionID, &theEvent); - if(err != noErr) return err; - - /* add the content of our window to the AppleEvent */ - err = AEPutParamDesc (&theEvent, keyDirectObject, &theTextDesc); - if(err != noErr) return err; - - /* add the title of our window to the AppleEvent */ - err = AEPutParamDesc (&theEvent, 'NAME', &theNameDesc); - if(err != noErr) return err; - - /* send the AppleEvent */ - err = AESend (&theEvent, &theReply, kAEWaitReply, kAEHighPriority, kNoTimeOut, NULL, NULL); - if(err == connectionInvalid) { - // launch PythonSlave.py - itemHit = Alert(128, NULL); - if(itemHit == 2) return noErr; /* user cancelled */ - - if( ! GetPythonSlaveSpec(&docSpec) ) - return noErr; /* user cancelled */ - - err = LaunchPythonSlave(&docSpec); - if(err != noErr) return err; - } else if(err != noErr) - return err; - - /* clean up */ - err = AEDisposeDesc (&theTarget); - if(err != noErr) return err; - - err = AEDisposeDesc (&theNameDesc); - if(err != noErr) return err; - - err = AEDisposeDesc (&theTextDesc); - if(err != noErr) return err; - - err = AEDisposeDesc (&theEvent); - if(err != noErr) return err; - - err = AEDisposeDesc (&theReply); - if(err != noErr) return err; - - /* everything is cool */ - return noErr; -} - -pascal void main(ExternalCallbackBlock *callbacks, WindowPtr theWindow) -{ - long oldA4; - OSErr err; - Handle windowContents; - Str255 windowTitle; - - //RememberA0(); /* Can't find header file for this. Seems to work anyway. */ - - oldA4 = SetUpA4(); - - GetWTitle(theWindow, windowTitle); - windowContents = callbacks->GetWindowContents(theWindow); - - HLock(windowContents); - err = SendTextAsAE(callbacks, *windowContents, GetHandleSize(windowContents), windowTitle); - if(err != noErr) callbacks->ReportOSError(err); - HUnlock(windowContents); - - RestoreA4(oldA4); -} diff --git a/Mac/Contrib/ImageHelpers/ExtPixMapWrapper.py b/Mac/Contrib/ImageHelpers/ExtPixMapWrapper.py deleted file mode 100644 index ac261b5d37be..000000000000 --- a/Mac/Contrib/ImageHelpers/ExtPixMapWrapper.py +++ /dev/null @@ -1,46 +0,0 @@ -''' -A really quick and dirty hack to extend PixMapWrapper -They are mere copies of the toImage and fromImage methods. -Riccardo Trocca (rtrocca@libero.it) -''' -from PixMapWrapper import * -import Numeric - -class ExtPixMapWrapper(PixMapWrapper): - - def toNumeric(self): - - data = self.tostring()[1:] + chr(0) - bounds = self.bounds - tmp=Numeric.fromstring(data,Numeric.UnsignedInt8) - #tmp.shape=(bounds[3]-bounds[1],bounds[2]-bounds[0],4) - tmp.shape=(bounds[2]-bounds[0],bounds[3]-bounds[1],4) - return Numeric.transpose(tmp,(1,0,2)) - - def fromNumeric(self,num): - s=num.shape - x=num.shape[1] - y=num.shape[0] - #bands=1 Greyscale image - #bands=3 RGB image - #bands=4 RGBA image - if len(s)==2: - bands=1 - num=Numeric.resize(num,(y,x,1)) - else: - bands=num.shape[2] - - if bands==1: - num=Numeric.concatenate((num,num,num),2) - bands=3 - if bands==3: - alpha=Numeric.ones((y,x))*255 - alpha.shape=(y,x,1) - num=Numeric.concatenate((num,alpha),2) - - data=chr(0)+Numeric.transpose(num,(1,0,2)).astype(Numeric.UnsignedInt8).tostring() - PixMapWrapper.fromstring(self,data,x,y) - - - - diff --git a/Mac/Contrib/ImageHelpers/ImageMac.py b/Mac/Contrib/ImageHelpers/ImageMac.py deleted file mode 100644 index 44a38c55c4d5..000000000000 --- a/Mac/Contrib/ImageHelpers/ImageMac.py +++ /dev/null @@ -1,277 +0,0 @@ -''' -ImageMac.py by Trocca Riccardo (rtrocca@libero.it) -This module provides functions to display images and Numeric arrays -It provides two classes ImageMacWin e NumericMacWin and two simple methods showImage and -showNumeric. - -They work like this: -showImage(Image,"optional window title",zoomFactor) -the same for showNumeric -zoomfactor (defaults to 1) allows to zoom in the image by a factor of 1x 2x 3x and so on -I did't try with a 0.5x or similar. -The windows don't provide a scrollbar or a resize box. -Probably a better solution (and more similar to the original implementation in PIL and NumPy) -would be to save a temp file is some suitable format and then make an application (through appleevents) to open it. -Good guesses should be GraphicConverter or PictureViewer. - -However the classes ImageMacWin e NumericMacWin use an extended version of PixMapWrapper in order to -provide an image buffer and then blit it in the window. - -Being one of my first experiences with Python I didn't use Exceptions to signal error conditions, sorry. - -''' -import W -from Carbon import Qd -from ExtPixMapWrapper import * -from Numeric import * -import Image -import macfs - -class ImageMacWin(W.Window): - - def __init__(self,size=(300,300),title="ImageMacWin"): - self.pm=ExtPixMapWrapper() - self.empty=1 - self.size=size - W.Window.__init__(self,size,title) - - def Show(self,image,resize=0): - #print "format: ", image.format," size: ",image.size," mode: ",image.mode - #print "string len :",len(image.tostring()) - self.pm.fromImage(image) - self.empty=0 - if resize: - self.size=(image.size[0]*resize,image.size[1]*resize) - W.Window.do_resize(self,self.size[0],self.size[1],self.wid) - self.do_drawing() - - def do_drawing(self): - #print "do_drawing" - self.SetPort() - Qd.RGBForeColor( (0,0,0) ) - Qd.RGBBackColor((65535, 65535, 65535)) - Qd.EraseRect((0,0,self.size[0],self.size[1])) - if not self.empty: - #print "should blit" - self.pm.blit(0,0,self.size[0],self.size[1]) - - def do_update(self,macoswindowid,event): - #print "update" - self.do_drawing() - -class NumericMacWin(W.Window): - - def __init__(self,size=(300,300),title="ImageMacWin"): - self.pm=ExtPixMapWrapper() - self.empty=1 - self.size=size - W.Window.__init__(self,size,title) - - def Show(self,num,resize=0): - #print "shape: ", num.shape - #print "string len :",len(num.tostring()) - self.pm.fromNumeric(num) - self.empty=0 - if resize: - self.size=(num.shape[1]*resize,num.shape[0]*resize) - W.Window.do_resize(self,self.size[0],self.size[1],self.wid) - self.do_drawing() - - def do_drawing(self): - #print "do_drawing" - self.SetPort() - Qd.RGBForeColor( (0,0,0) ) - Qd.RGBBackColor((65535, 65535, 65535)) - Qd.EraseRect((0,0,self.size[0],self.size[1])) - if not self.empty: - #print "should blit" - self.pm.blit(0,0,self.size[0],self.size[1]) - - def do_update(self,macoswindowid,event): - #print "update" - self.do_drawing() - -''' -Some utilities: convert an Image to a NumPy array and viceversa. -The Image2Numeric function doesn't make any color space conversion. -The Numeric2Image function returns an L or RGB or RGBA images depending on the shape of -the array: - (x,y) -> 'L' - (x,y,1) -> 'L' - (x,y,3) -> 'RGB' - (x,y,4) -> 'RGBA' -''' -def Image2Numeric(im): - tmp=fromstring(im.tostring(),UnsignedInt8) - - if (im.mode=='RGB')|(im.mode=='YCbCr'): - bands=3 - - if (im.mode=='RGBA')|(im.mode=='CMYK'): - bands=4 - - if (im.mode=='L'): - bands=1 - - tmp.shape=(im.size[0],im.size[1],bands) - return transpose(tmp,(1,0,2)) - -def Numeric2Image(num): - #sometimes a monoband image's shape can be (x,y,1), other times just (x,y). Here w deal with both - if len(num.shape)==3: - bands=num.shape[2] - if bands==1: - mode='L' - elif bands==3: - mode='RGB' - else: - mode='RGBA' - return Image.fromstring(mode,(num.shape[1],num.shape[0]),transpose(num,(1,0,2)).astype(UnsignedInt8).tostring()) - else: - return Image.fromstring('L',(num.shape[1],num.shape[0]),transpose(num).astype(UnsignedInt8).tostring()) - -def showImage(im,title="ImageWin",zoomFactor=1): - imw=ImageMacWin((300,200),title) - imw.open() - try: - imw.Show(im,zoomFactor ) - except MemoryError,e: - imw.close() - print "ImageMac.showImage: Insufficient Memory" - - -def showNumeric(num,title="NumericWin",zoomFactor=1): - #im=Numeric2Image(num) - numw=NumericMacWin((300,200),title) - numw.open() - try: - numw.Show(num,zoomFactor ) - except MemoryError: - numw.close() - print "ImageMac.showNumeric Insufficient Memory" - -''' -GimmeImage pops up a file dialog and asks for an image file. -it returns a PIL image. -Optional argument: a string to be displayed by the dialog. -''' - -def GimmeImage(prompt="Image File:"): - import macfs - fsspec, ok = macfs.PromptGetFile(prompt) - if ok: - path = fsspec.as_pathname() - return Image.open(path) - return None - -''' -This is just some experimental stuff: - Filter3x3 a convolution filter (too slow use signal tools instead) - diffBWImage subtracts 2 images contained in NumPy arrays - averageN it computes the average of a list incrementally - BWImage converts an RGB or RGBA image (in a NumPy array) to BW - SplitBands splits the bands of an Image (inside a NumPy) - NumHisto and PlotHisto are some experiments to plot an intesity histogram -''' - -def Filter3x3(mul,fi,num): - (a,b,c,d,e,f,g,h,i)=fi - print fi - num.shape=(num.shape[0],num.shape[1]) - res=zeros(num.shape) - for x in range(1,num.shape[0]-1): - for y in range(1,num.shape[1]-1): - xb=x-1 - xa=x+1 - yb=y-1 - ya=y+1 - res[x,y]=int((a*num[xb,yb]+b*num[x,yb]+c*num[xa,yb]+d*num[xb,y]+e*num[x,y]+f*num[xa,y]+g*num[xb,ya]+h*num[x,ya]+i*num[xa,ya])/mul) - return res - -def diffBWImage(num1,num2): - return 127+(num1-num2)/2 - -def averageN(N,avrg,new): - return ((N-1)*avrg+new)/N - -def BWImage(num): - if num.shape[2]==3: - bw=array(((0.3086,0.6094,0.0820))) - else: - bw=array(((0.3086,0.6094,0.0820,0))) - res=innerproduct(num,bw) - res.shape=(res.shape[0],res.shape[1]) - return res - -def SplitBands(num): - x=num.shape[0] - y=num.shape[1] - if num.shape[2]==3: - return (reshape(num[:,:,0],(x,y)),reshape(num[:,:,1],(x,y)),reshape(num[:,:,2],(x,y))) - else: - return (reshape(num[:,:,0],(x,y)),reshape(num[:,:,1],(x,y)),reshape(num[:,:,2],(x,y)),reshape(num[:,:,3],(x,y))) - -def NumHisto(datas): - #print "type(datas) ",type(datas) - a=ravel(datas) - n=searchsorted(sort(a),arange(0,256)) - n=concatenate([n,[len(a)]]) - return n[1:]-n[:-1] - -def PlotHisto(datas,ratio=1): - from graphite import * - from MLab import max - h=NumHisto(datas) - #print "histo: ",h - #print "histo.shape: ",h.shape - maxval=max(h) - #print "maxval ",maxval - h.shape=(256,1) - x=arange(0,256) - x.shape=(256,1) - datah=concatenate([x,h],1) - print "data: " - print datah - g=Graph() - g.datasets.append(Dataset(datah)) - f0=PointPlot() - f0.lineStyle = LineStyle(width=2, color=red, kind=SOLID) - g.formats = [f0] - g.axes[X].range = [0,255] - g.axes[X].tickMarks[0].spacing = 10 - #g.axes[X].tickMarks[0].labels = "%d" - g.axes[Y].range = [0,maxval/ratio] - g.bottom = 370 - g.top =10 - g.left=10 - g.right=590 - - genOutput(g,'QD',size=(600,400)) - -def test(): - import MacOS - import Image - import ImageFilter - import Numeric - fsspec, ok = macfs.PromptGetFile("Image File:") - if ok: - path = fsspec.as_pathname() - im=Image.open(path) - #im2=im.filter(ImageFilter.SMOOTH) - showImage(im,"normal") - num=Image2Numeric(im) - #num=Numeric.transpose(num,(1,0,2)) - - showNumeric(num,"Numeric") - - print "num.shape ",num.shape - showImage(Numeric2Image(num),"difficile") - #showImage(im.filter(ImageFilter.SMOOTH),"smooth") - #showImage(im.filter(ImageFilter.FIND_EDGES).filter(ImageFilter.SHARPEN),"detail") - - print "here" - else: - print "did not open file" - -if __name__ == '__main__': - test() \ No newline at end of file diff --git a/Mac/Contrib/ImageHelpers/MovieUtils.py b/Mac/Contrib/ImageHelpers/MovieUtils.py deleted file mode 100644 index 89762f454d6b..000000000000 --- a/Mac/Contrib/ImageHelpers/MovieUtils.py +++ /dev/null @@ -1,269 +0,0 @@ -from Carbon import Qt -from Carbon import QuickTime -import macfs -from Carbon import Qd -from Carbon.QuickDraw import srcCopy -from ExtPixMapWrapper import ExtPixMapWrapper -from Carbon.Qdoffs import * -import ImageMac -import W - - - - -def GetFrames(m): - frameCount=0 - theTime=0 - type=QuickTime.VideoMediaType - #type='MPEG' - flags=QuickTime.nextTimeMediaSample - flags=flags+QuickTime.nextTimeEdgeOK - - while theTime>=0: - (theTime,duration)=m.GetMovieNextInterestingTime(flags,1,type,theTime,0) - #print "theTime ",theTime," duration ",duration - frameCount=frameCount+1 - flags = QuickTime.nextTimeMediaSample - - - return frameCount-1 - -def GetMovieFromOpenFile(): - fss, ok = macfs.StandardGetFile(QuickTime.MovieFileType) - mov = None - if ok: - movieResRef = Qt.OpenMovieFile(fss, 1) - mov, d1, d2 = Qt.NewMovieFromFile(movieResRef, 0, QuickTime.newMovieActive) - - return mov - - -class ExtMovie: - def __init__(self,mov): - - self.frames=0 - self.frameArray=[] - self.movie=mov - self._countFrames() - r=self.movie.GetMovieBox() - self.myRect=(0,0,r[2]-r[0],r[3]-r[1]) - self.movie.SetMovieBox(self.myRect) - self.pm=ExtPixMapWrapper() - self.pm.left=0 - self.pm.top=0 - self.pm.right=r[2]-r[0] - self.pm.bottom=r[3]-r[1] - self.gw=NewGWorld(32,self.myRect,None,None,0) - self.movie.SetMovieGWorld(self.gw.as_GrafPtr(), self.gw.GetGWorldDevice()) - self.GotoFrame(0) - - def _countFrames(self): - #deve contare il numero di frame, creare un array con i tempi per ogni frame - theTime=0 - #type=QuickTime.VIDEO_TYPE - type=QuickTime.VideoMediaType - flags=QuickTime.nextTimeMediaSample+QuickTime.nextTimeEdgeOK - - while theTime>=0: - (theTime,duration)=self.movie.GetMovieNextInterestingTime(flags,1,type,theTime,0) - self.frameArray.append((theTime,duration)) - flags = QuickTime.nextTimeMediaSample - self.frames=self.frames+1 - - - - def GotoFrame(self,n): - if n<=self.frames: - self.curFrame=n - (port,device)=GetGWorld() - SetGWorld(self.gw.as_GrafPtr(),None) - (self.now,self.duration)=self.frameArray[n] - self.movie.SetMovieTimeValue(self.now) - pixmap=self.gw.GetGWorldPixMap() - - if not LockPixels(pixmap): - print "not locked" - else: - - #Qd.EraseRect(self.myRect) - #this draws the frame inside the current gworld - self.movie.MoviesTask(0) - #this puts it in the buffer pixmap - self.pm.grab(0,0,self.myRect[2],self.myRect[3]) - UnlockPixels(pixmap) - #self.im=self.pm.toImage() - SetGWorld(port,device) - - def NextFrame(self): - self.curFrame=self.curFrame+1 - if self.curFrame>self.frames: - self.curFrame=0 - self.GotoFrame(self.curFrame) - - def isLastFrame(): - return self.curFrame==self.frames - - - def GetImage(self): - return self.pm.toImage() - - def GetImageN(self,n): - self.GotoFrame(n) - return self.pm.toImage() - - def GetNumeric(self): - return self.pm.toNumeric() - - def GetNumericN(self,n): - self.GotoFrame(n) - return self.pm.toNumeric() - - def Blit(self,destRect): - Qd.RGBForeColor( (0,0,0) ) - Qd.RGBBackColor((65535, 65535, 65535)) - - #Qd.MoveTo(10,10) - #Qd.LineTo(200,150) - Qd.CopyBits(self.gw.GetPortBitMapForCopyBits(),Qd.GetPort().GetPortBitMapForCopyBits(),self.myRect,destRect,srcCopy,None) - -class MovieWin(W.Window): - - def __init__(self,eMovie,title="MovieWin"): - self.ExtMovie=eMovie - -def test(): - import ImageFilter - from MLab import max - from MLab import min - from Numeric import * - Qt.EnterMovies() - m=GetMovieFromOpenFile() - em=ExtMovie(m) - print "Total frames:",em.frames," Current frame:",em.curFrame - #ImageMac.showImage(em.GetImage(),"frame 0",1) - #em.GotoFrame(500) - #ImageMac.showImage(em.GetImage().filter(ImageFilter.SMOOTH),"frame 500",2) - #ImageMac.showImage(em.GetImageN(1000),"frame 1000",2) - #r=array(((1,0,0,0),(0,0,0,0),(0,0,0,0),(0,0,0,0))) - #g=array(((0,0,0,0),(0,1,0,0),(0,0,0,0),(0,0,0,0))) - #b=array(((0,0,0,0),(0,0,0,0),(0,0,1,0),(0,0,0,0))) - #bw=array(((0.3086,0.6094,0.0820,0))) - #r2=array(((1,0,0,0))) - #ImageMac.showNumeric(em.GetNumericN(0),"frame 0",1) - #print em.GetNumericN(500).shape - #print "original (1,1)",em.GetNumericN(0)[100,100] - #print "product shape ",innerproduct(em.GetNumericN(0),r).shape - #print "product (1,1) ",innerproduct(em.GetNumericN(0),r)[100,100] - - #ImageMac.showNumeric(ImageMac.BWImage(em.GetNumericN(50))) - #ImageMac.showNumeric(innerproduct(em.GetNumericN(500),r),"frame 500r",2) - #ImageMac.showNumeric(innerproduct(em.GetNumericN(500),g),"frame 500g",2) - #ImageMac.showNumeric(innerproduct(em.GetNumericN(500),b),"frame 500b",2) - - #ImageMac.showNumeric(innerproduct(em.GetNumericN(500),r2),"frame 500r2",2) - #ImageMac.showNumeric(innerproduct(em.GetNumericN(10),bw),"frame 0bw",1) - #ImageMac.showNumeric(innerproduct(em.GetNumericN(400),bw),"frame 10bw",1) - #colordif=(em.GetNumericN(100)-em.GetNumericN(10))+(255,255,255,255) - #colordif=colordif/2 - #ImageMac.showNumeric(colordif,"colordif",1) - #ImageMac.showNumeric(ImageMac.BWImage(colordif),"bwcolordif",1) - ilut=arange(0,256) - #ilut[118]=255 - #ilut[119]=255 - #ilut[120]=255 - ilut[121]=255 - ilut[122]=255 - ilut[123]=255 - ilut[124]=255 - ilut[125]=255 - ilut[126]=255 - ilut[127]=255 - ilut[128]=255 - ilut[129]=255 - #ilut[130]=255 - #ilut[131]=255 - #ilut[132]=255 - mlut=ones(256) - mlut[118]=0 - mlut[119]=0 - mlut[120]=0 - mlut[121]=0 - mlut[122]=0 - mlut[123]=0 - mlut[124]=0 - mlut[125]=0 - mlut[126]=0 - mlut[127]=0 - mlut[128]=0 - mlut[129]=0 - mlut[130]=0 - mlut[131]=0 - mlut[132]=0 - - ImageMac.showImage(em.GetImageN(100),"provaImg",2) - ImageMac.showNumeric(em.GetNumericN(100),"provaNum",2) - ImageMac.showImage(em.GetImageN(100).filter(ImageFilter.SMOOTH),"frame 500",2) - #image=ImageMac.BWImage(em.GetNumericN(100)) - #ImageMac.showNumeric(image) - - - - - - - - - #difimage=abs(image-ImageMac.BWImage(em.GetNumericN(10))) - #ImageMac.PlotHisto(difimage,32) - #ImageMac.showNumeric(difimage) - #difimage=127+(image-ImageMac.BWImage(em.GetNumericN(10)))/2 - #ImageMac.PlotHisto(difimage,32) - #ImageMac.showNumeric(difimage) - #fimage=ImageMac.Filter3x3(16.0,(1,1,1,1,8,1,1,1,1),difimage) - #ImageMac.showNumeric(fimage) - #difimage2=choose(fimage.astype(UnsignedInt8),ilut) - #ImageMac.showNumeric(difimage2) - - #(r,g,b,a)=ImageMac.SplitBands(em.GetNumericN(10)) - #ImageMac.showNumeric(r,"r") - #ImageMac.showNumeric(g,"g") - #ImageMac.showNumeric(b,"b") - #ImageMac.showNumeric(a,"a") - #bwdif=abs(((innerproduct(em.GetNumericN(400),bw)-innerproduct(em.GetNumericN(10),bw))+255)/2) - #ImageMac.showNumeric(bwdif,"frame diff/bw",1) - #ImageMac.PlotHisto(bwdif) - #ImageMac.showNumeric(choose(bwdif.astype(UnsignedInt8),ilut),"frame diff/bw",1) - #ImageMac.PlotHisto(choose(bwdif.astype(UnsignedInt8),ilut)) - #bwimage=ImageMac.BWImage(em.GetNumericN(100)) - #ImageMac.showNumeric((ImageMac.BWImage(em.GetNumericN(90))+ImageMac.BWImage(em.GetNumericN(110))+ImageMac.BWImage(em.GetNumericN(130))+ImageMac.BWImage(em.GetNumericN(150))+ImageMac.BWImage(em.GetNumericN(170)))/5) - #bwdif=abs(((bwimage-ImageMac.BWImage(em.GetNumericN(10)))+255)/2) - #ImageMac.showNumeric(bwimage,"original frame",1) - #ImageMac.showNumeric(bwdif,"frame diff/bw",1) - #ImageMac.PlotHisto(bwdif) - #ImageMac.showNumeric(choose(bwdif.astype(UnsignedInt8),ilut),"frame diff/bw",1) - #mmask=choose(bwdif.astype(UnsignedInt8),mlut) - #ImageMac.showNumeric(255-255*mmask,"frame diff/bw",1) - #mmask.shape=bwimage.shape - #ImageMac.showNumeric(mmask*bwimage,"frame diff/bw",1) - - #ImageMac.showNumeric((innerproduct(em.GetNumericN(300),bw)-innerproduct(em.GetNumericN(0),bw)),"frame diff/bw",1) - #ImageMac.showNumeric((innerproduct(em.GetNumericN(400)-em.GetNumericN(10),bw)),"frame diff2/bw",1) - #cdif=em.GetNumericN(400)-em.GetNumericN(10) - #ImageMac.showNumeric(,"frame diff2/bw",1) - - #ImageMac.showNumeric(innerproduct(cdif,r),"frame 500r",1) - #ImageMac.showNumeric(innerproduct(cdif,g),"frame 500g",1) - #ImageMac.showNumeric(innerproduct(cdif,b),"frame 500b",1) -def test2(): - Qt.EnterMovies() - m=GetMovieFromOpenFile() - if m==None: - print "no movie opened" - else: - em=ExtMovie(m) - print "Total frames: ",em.frames," Current frame:",em.curFrame - ImageMac.showImage(em.GetImage(),"frame 0",1) - -if __name__ == '__main__': - test2() - \ No newline at end of file diff --git a/Mac/Contrib/ImageHelpers/ReadMe b/Mac/Contrib/ImageHelpers/ReadMe deleted file mode 100644 index b6267f756210..000000000000 --- a/Mac/Contrib/ImageHelpers/ReadMe +++ /dev/null @@ -1,22 +0,0 @@ -ExtPixMapWrapper.py -ImageMac.py -Hello these are the classes to deal with Images and NumPy arrays I told -you about. I left everything unchanged, it is the same copy I use with -comments added. However I think that in ImageMac the only part worth including -in MacPython (if you think it is worth), is the first half, until GimmeImage. -After that it is almost rubbish I used in my CV experiments. - -MovieUtils.py -This is another class I use. IT contais a lot of my experiments (unuseful), but -the first function GetFrames(). it is almost the translation of a QT sample. -GetMovieFromOpenFile() it is the usual shortcut to get a movie. (no error tracking -done). -The class ExtMovie requires a movie in the constructor and then -provides a method to take every single frame and convert it to an -Image or a NUmPy array. -If you think that it can be included in the qt examples I'll write comments and -polish it a bit. (exceptions handling) - - Riccardo Trocca - -P.S. Everything works with 2.0b1 diff --git a/Mac/Contrib/PythonDetector/OpenPythonLib b/Mac/Contrib/PythonDetector/OpenPythonLib deleted file mode 100644 index 87bc7be9c4670310652fb34b4ce09c6717e334ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 13234 zc-oa)2Ygh;)<0(w0_@(Q1`K`aErf&~KzeVXgxSaxOQF6qh6{j~dE0Cm}hA;syHxV_xbtFmkbf1V^?|cxdu|pUVyZf zJ0Y#?Q)syI2sA7s@U8q4e9N0ai&c%G#qz$;W>p_(!~W9QUpo8CWPh3I4WMfOGDu~= zUD$6I_S=K~_9(y4{(H0k-t500`|sCd7gXK)iPKlz5zDx$l$DX0k=4#A(|rRY#fzfB zIfZdw|Kj3MfZIjICGkKs-8Ve!&+uhsXLo0t*5{hmH=2X&xa}JhhzI=fNHpeiJ_6{t zcZeO!pV)r_-^j`osV2i!orniOK@#!>XuigI?$9JF9!&+6AVqVbLS_W%PpFJsfCZJI z9klS}6bHh-v5Vq`k?^Qso^L@gUdRv`X*dvP)Zv2Q9C=CwDJ)f>s^+4?*+0R9T(C0_ zG=?x3@jy{tAnMEPnl4Y;!#JqQ;sr}{QQ_bZ(8vWl(9j#Yozra(IhN_Z z0l`qnHz1H-5Q*kz_KU_nN) z(^DCd=$wxE5r4-}Ft1}X6Tc=)ZAjHzsJUiw&@WKO%Y~H*Rm%OzDAfTh0<);clZ&Qdus7G|ffDWByEMk$#rPJS!?`EcKwi z=AuI7C;AcTCsFxPRO+)dfQFh26?FI@1sXwP%|+61*W@42gnsaFm6j2U=Vuk>=f~Ue zzw)IY4frD(ngB*jo4)tb_s}pCtaxD{7LS(r<0a96)0$A;QuKp7e`9x+sxbHz^N)h2 z&`fioqAoi%hZdTPif(FYK}&|{5RQfxiJ;$k={u;E36(jF^r3SxgfA4xxU_=SnhVEo zGF}F4psnTtM>y@p&`$9pP|zOIH5cYKPw);3I`Hib=%~4HP$csr%CsPp=Z|jxG zBpRPR+l+|}O%{EtAj(Wc7mjCHp#v-!z^k{C%|x}x0O-#$ zkiOP1(5T7s8)U(t1OT)8>1zS-jhI}_G8l$vE*tqFilN^@GFhz6WginKpFqKYfm}q?k-$xdd#@g%iFZufaSzp?TYP!b{t) zz|U&=5YSvWo*Obd6j)Heb0Nha2}J#F|4TK8KGQJA=rNH%p#_Br1f2|m&ji5K zFjsToAn@@bokzzt%rgk29a13dRRm$ph2z=B91*b~BA)%cqXx^TK$xYNj%g@1icOg# z=36j70im;ja7-W^7n8XxQHW_S90;v=rN`;0hPZ(s?GgngtX2vOG#8HNR?OB5Em&9% zArx3>AS_^6M4xI{WE9)-LSJmb;sk^)2EwNT;i#C%BEA$Z(_ACW21y>{>bTtq@5eP@b zYc&^+=WfhH*I96#%*6bl8~$3B>**s6 z*Bhm5rkEQnxFHeVrNNIR{KsN)70Zoqljgz+--lP`&Gey$n@xCWuT-#-)mFhRnhVEs zALgA~Ex1)?Vt%l+D3Wgw+`@7j9oBH0(d*Adbh`z&ClI)Fcvuj8C?+?t+yQ^nTsR1Z zFeThcA85GKAdvQ53hrXHyWt+qh2wb$)6!}SRttiFzo23w-otV)9nx^G(HqXBw8nxp z2?Q<|9TEf|h{@kr?t}X^7Y>3kOdV_KeGO|30%<>>-~m=!2kSK#j^{DVP8%%PAP6`< zpV$n7^(-6dJq;U;-Z-YKO%`mbK#=Xy(R+g6eKEP81vAwTVzWp2u19;0q`ixWAv_u$Bf!krl_qJY)t@g3F%z{a8OJh zV%Y|dYc3oBvzTO_pm#JpVE{<`Nd-@`+EcJybK!WN#XRz~1y76TIe~a$A#7)PhThij zj8U|i!gg4&BLTr>q_+jaJ7V%U%d_xz&4mM@fH~zkI-ub>13}u)D|nvOcESsq3&(Q- zGuSQ*b~zA2kvu!(?#!I$z;1d=!)~J(WHQ@h!JY&JmyzBQ2nWRE?<_CEOPUJ@LYO({ zW!kUdWdlLldll?uwO8O(&4uGR%rv*pf_>t-(2gZ~;Z>H`=uHi;8O8ZbZLeGKdIEyW zNN);+{bKSG%NxKZZx{%rOg{VR4GsGZ1Zlse;4M}=0NlR^jOS7&y>~2lhfg2L4584( zf1Bl9dR@c2Mr#qX%|QzeCgQtv^t!}CEchf5-ld~`68<$Yd7tG7Foz#8 z;a4y{93}4Rqb9txk106DYR7>$yyM363Z}jj7MzgODCknrXDpx7D;hpGI@dA}p0wa( zBDzaOuSoP)#pF|#FMtmrUzq4OF(;j(y&6uL=+gd5!B?#IHSmG$YvcJQX2sJMoR(!6 z40D!g0DQx8hF;ci#;C1gQvB9}ZxaCAliAAxV6T{b$?_e1ueopl+`+u{1M!6X!2po< zKNS3f)qaGZG#8HNJD45MT5wjFDCne)2Ek7(KhujEel~h{Ft(wJ<*OS_UnPNy*iD{D+Ko;Sin zSjECBk{bkLLCN64?%@b4vs9%QG*&gb55XhovCxx1;j-Zif?}7LB(ZqW(&#lPw!n7O zv{R!tD5PCYA?LYR9cyT;Zai;+ZCKO7ng&IzB+nnRV}^~86JD%E&ugq@bhp8iSlhzd z2^20NJ})SCiV5e_n2L2YrWzF6VJFt5=QP$eD5QOnLQX?54eM!4GoH7@4y`YeP6e?A?aQYohu!EYjopma+i(!OTi87j-zCGRB>r|W;njgXFk52}6aRfUf<5U; zjXh0#Y4=jti`9DL#Tt7X&+o%w>|p4C6Xpi&j{`LJH{p-KNgPOzYaD38OM8&QL98|yhiDvZJRgB$IMl+SCcN1SkkdUJ zM%y$FGfKzc1P-@wcp|*Zh1(?j<6<&^Wdx4Y9LouR63*Z#+NyDs2`}x@3P-cr7|hW) z#&|vnr*N!=W1a9pclvX>hvVomjpK~cDfkA*TR1)u-X+4vB>Yw}8ObsMb2Uyd;m^QX zoJdyR=Wgkjh7hDXW>`OvoKHQUZl8u z^>ea^e%h?jZ?t}eKQQ0I{6u`00yj(iN5o_%O8^Tr22A`vnQ!ON!y4z9_|h&^$OjD! z;#`eE6Fhmb&3^_`yl8i+bUsi;7x$hwf|FD=8u!J$9G3EW70ze1D8@8Kjpr1sig63$623UHz=UT4z!KV|vBW4<KPV;9h#GL5i zN?NONrO|7OEpU~Es}cxY23#u$9uSl3SZ={vHQr(nw89L$jqcZYn?WG$+ZEoJBc$d*@i|Kf`g?A?qxFmR=Ah=&lZe_U#S8Ke- zAjrUOcrUHdc&|Yq?KKM5u-bjd!0t1iGcXI+TDVr$VKh)|@&V*D4y;PT)-0${b6Y+!j5nfD$w0Q%q%e2nha_?Q78 z?X3#8vf4J}&0(AI+=sW0CoFtIJjc$-43X13e3I_c_@q(nkAv_j3!kch(8=Y(y9C1B zVzPy0JMz}O-9Q+^g#QfPsqq;DLE1YM?qIcNkFD;ok(nonrDd%L~Y-&=(AVF*pf#(;XUj8vxSYqi_$ay@)Sq ze9?FwgX8dJ3ttvCij_YBhe8s|765(Akyj{ZIAtt+6Ud4SHUp3(; z;VgWOZqxXh2`}x}6~4}DZ{V96-!Psh;Z)pj;eL7kcuBGQ1qpJ7hi?(Dske;URNiL} zSa=`-z@@`m1;A}$vXA9$d`IKk2EZ&Vz<22ujqe%&(mts0AgjHH?`wR|c%Fqe98OQAC4Q+Lbq|7^rLI6~qu8xA1r(zDtBROZ=5$ z@)65t#0>YDi66#NJV7^VJYnKX`*Ve#v)W1gLgPu}IgIo1OAEgg8d`YHe!$r!o}wEx zo-%s#F^*qZ_*DXdON2KFf*a-PCi!B&ZQ@s#>%DY6RLO+o{2(7PSX<7jU*k6#zjl6d z!X>zbuA^&_t`i^EN?6WE@ibkd@iZijmh8h>Gyjq{ndFE+2iO+FJ1Xxezwy1bK=>r@X{6Kzc?+BLxx;T<_m?K@ZxXy zyT;!jX$rf)2KVD1bUFT0;~(Y`SK~hXQ=z1$q~y0xgMT%y=fqQKPFNlMtMLJqq>{Db zRIm%T?`7Uzt}1zGIX{6vk~deYN@nox$F)?JL}h?lC7Xv@%{#<0FD-*gnLNFCz-LM>gX&RZG>@s+Q@IM{pZ0RH+_XSkWV?rbiybt+XJC_~@inZ3AXAK0>8lDoylA zO{2Sw_kt1+m57h{!njt|6Fn98QvCemtTcnKLou!D81T>VGu2fWX;l|gp3{C&rKx&a zrIojLtNN;eR`m^@XLtvQdMWzvKMX6A9^>=4OEt7qL#Pj_c_qP6yhAYDp`aw}k7X3b zi$cwvUqMwp<7_wXq4{2#{}4pRNu4-^eHZy#4}R9mgul(&zn zcB;Kr?M(PXOyBdoH19w9zr6|kF@CDjEtM{eSQN=G2?aWs_=W=UC^Pt6FU|dnE^lqT z9A{GQV5ttW0XpMme6&mqNYG2czZeji^He13voTAC>ZnzQ;my-3TV<*&)k&*N=f`^d z4u7RW)me4%P@()-zbF=&QxXk@OF|(h46{S-;3>IUbvE$7!|!R1m*$)|bP6x8Bq~r{ zDd3?3UKoLBG^$ls^Gr;-l<%Q@sN&6wL`s<;11S`c$I61F@$O^!DNl9tke{*GF@KaD z_!2J;tOU76;&Dk)-8hu3y3-{dvQ4P4R^1aFG}}wFAuSU;!7zUoiH1vxIm9XfnGf3da1lKVF(}u@dAOX_B~@C@%W3^j8D4>Tg`s zQJpAP4OD|XlaRT`<%Y;Mg0DfD5p)n zynx>>i3NN-EqpwP!Qyx@JjZ9}=Lem)VwzRFBQ&A>!)88zq$HH@3rFH??JJOTzw>TR ziWq#SMIFg*rXt*ek6cYV5u|kHaacaDWhFxHVXf-ae4u*PZC^XB2>O30GI28qA zF`Ex`a>JRpqs@&JHJ%@Lh?+oyJv5|ZNli$&8sw!xP(KsA<*sDm5!8w)KOG2Bw8lO`+NY^ zYd{htQwLQ9bvbdM4gfXyT2VT+_fq=5?c^S6e}T8ws_}`kat&$+jj1iQQ4v*4tv%fQ zYYQ*6{jYDfwGl)Ss7kGd8zq%PaIxq zR(@3TQq%Gix0ieu*yX&`)-~s6>f*sum(23CfEX7;c3_byI>FOgV*65I0zrXCvXBz!fE&x z&cZK1h*$+ZSQBeweQb!$u_dNs26n~n*a!RJP#lh9aXe1N>6pjq{5&k;l(v+U&}F!S zldzj{72b(=<62yY4|C@51U`k&;ZA%RU*QDp03Qbr^O5d2eu-aEBWg$us6N%BG}Vyz zlXTUAE~2_rN6n{Hs!g@jV5+G`Pz^Pjs#7)6WRX`z)hy*#1xeHhI(ev}n`U~b0bk9F z_(LA5@1`jps>k!pAK_WW8)#yl)o_@~Luqa*;-QP&vzLeJUf@uNR7ckHd|uBUs!CNn z9-v5z1ql~>Wr4XmYl`Eb%<-hD}l>ll|YZW;%F! zsjot%Uw;!SJ$)ur`mGH$LZvp;w4s*NwQWe1x{eKXrM}39G^y*^P+#f>HZ+vFkqwQd zZeoK^>ZUd{le)PLEu?N~Lo2CU+t5bpwl=hry1fnQQg^T+L+Xw;WJ;Z7Lno;_+t5Yo zt~PX&y1NZMq|UaXr_{Y{=q>fdHuRCYuMPdA?r*~YsR!CHNb12h43T=M4a1}!Zo>$v zN7^t->d`igkvhkQu~Lt-VZ786Y{->*q79Rzo@~Pusi)d7P3q}3%#eDf4YQ=4ZNnu} z+cxA$?YALc>Okq>$8%C)*ZnpWqz`@~=OP&V0Nc*7p)h1Ya9$xVm-XD3*KzPuIqNn+ zBWNPc5ckL2R;-^VuWZ{eujRUygSYV!pm2K5RC+UKtqmd8t?PbV#2?!bc2ziDHCBiO zI70Dc=sShED7w*x7+Ykun`=QlN6Hd@W=6QchK2LEUSz{!8!olsG8>jyur#Nzy5nr@ zWaukDo1oVv&5Y9dmtQ-F5&}u)STvv z1O8w^kk9xgxApP;@^2Y@MF9?w?+b<7G(Hx{~w7(QAy0nDV$d;LLm-f9wzay+)unG&f_x!)OG(> zr5bpcR^`p*@_(uFMy0wVsV21N`WLRD{7+jFf5DQnF{#CXh0g1)H$ieKLuQ3`F@G`d zz%W2KS6;r0#TN+=Pn$e85_4VyLn8S@nv{*n$$To2>t1}l5X$5aGoXOI{*hcL*O{4o VKiynstxVaNl4*3Z9_IU*{|6Mw$@>5R diff --git a/Mac/Contrib/PythonDetector/OpenPythonLib with NS b/Mac/Contrib/PythonDetector/OpenPythonLib with NS deleted file mode 100644 index 08cb027d65870eb39ba7684db8372fe3836d0838..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 13853 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 Z9(TJ{Y@WBr-T#pDW!9!g13CZs{{bvwor?ef diff --git a/Mac/Contrib/PythonDetector/PythonDetector b/Mac/Contrib/PythonDetector/PythonDetector deleted file mode 100644 index 6fc28b8faa8e8f698228e696c5d75dcd85e49c34..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 27559 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 diff --git a/Mac/Contrib/PythonDetector/readme.txt b/Mac/Contrib/PythonDetector/readme.txt deleted file mode 100644 index e6b61da052ed..000000000000 --- a/Mac/Contrib/PythonDetector/readme.txt +++ /dev/null @@ -1,60 +0,0 @@ -======================================================================== - Copyright (c) 1999 Bill Bedford -======================================================================== -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that the copyright notice and warranty disclaimer appear in -supporting documentation. - -Bill Bedford disclaims all warranties with regard to this software, -including all implied warranties of merchantability and fitness. In -no event shall Bill Bedford be liable for any special, indirect or -consequential damages or any damages whatsoever resulting from loss of -use, data or profits, whether in an action of contract, negligence or -other tortuous action, arising out of or in connection with the use or -performance of this software. -======================================================================== - - -PythonDetectors is a set of Apple Data Detectors that will open an entry in -the Python Library from a keyword in contextual menus. It looks up either -module name and open the relevant page or looks up a built in function and -opens at the entry in the Builtin functions page. - -If anyone would like more functionality please contact me. - -To use it you must have Apple Data Detectors 1.0.2 installed This can be -obtained from http://www.apple.com/applescript/data_detectors/ - -Two action files are provided "OpenPythonLib" will open the library file -with whatever application is defined as the Internet Config 'file' helper. -"OpenPythonLib with NS" opens the library file with Netscape. - -Instructions -============ - -1/ Open the two apple script files with the Script Editor and change the -first compiled line to point to the location of your Python Library -folder. - -2/ Open the Apple Data Detectors Control Panel and choose Install Detector -File... from the File menu. - -3/ Pick a Detector file from the dialog. - -4/ Let the Data Detectors Control Panel optimize the detector. - -5/ Choose Install Action File... from the File menu. - -6/ Pick an action file from the dialog. - -7/ The Data Detectors Control Panel will automatically place the new action -with its detector. You can click on the action in the control panel window -to view information about its use. - - -Gotchas -======= - -Unfortunately ADD only works with the US keyboard installed. diff --git a/Mac/Contrib/Sherlock/Python-FAQ.src b/Mac/Contrib/Sherlock/Python-FAQ.src deleted file mode 100644 index c316c33f4567b2b8e798347da51d48740bbc8d81..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 3342 zc-pO3Pi)&%7=KCQB?e__HH8C0#L6lvq%{!(A&S~GsM|!R2@+61yUlUj#;g0B+D?Nn zY>30y1tMu&I?y)v^s-+LlXQtE{YR^Gywx*W|5UspCLux6_hs zHI&-x^-4-lD`CC-CJJ!};q`&oEn7aU@ugEp^S%Tfmx_yJ+pNHk+|*TSTa~D%Q-KSXSjuJG zq6vyhi-A8YNpOR^x_wQvY+kPoj1*z~w5HK=!bz*Py2+DtEu2IdNTSbWu`JUG&>LE2 z*Hg)|#U}0{lmSIQ&=r@tVwlopQ&Xe_TdBgU7uOOIQ*(aX+6ZBhBPX0562uKo<0qOr) z9VW$g(Eo{LauywVZ8SXP?K)qozF%lGY7AEyuIFpvdYp#{mMw5PimNG#8@_n;MlgzE z8ZU5Mi(?eSK{_pvnv8`2*Cyj|IxR2}LwbEC-^e%WdG97s3=DYcAzZI>+@SFsHyHL@ z5e(`18H$A=u2WnS8WD+MG*P?$~m|0Vm+m3HT#v|3bAF!n^LcfK&71>EKbFl4n2==-P4xHVy~)d|(8Q z;=JIKA>JLkj2narPF=)pgIZs*)iVtVfJ-0mB@*>>*6 z*@Hs=^?sr6$AtK~-Q2U>K@Rvrz~7Ek6g-6kDP-x0T6#($Zfn%mJ&WL!t9iD;-Zya6 z)!3QppRIL%# diff --git a/Mac/Contrib/Sherlock/Python-docs.src b/Mac/Contrib/Sherlock/Python-docs.src deleted file mode 100644 index f3423c4f263c354fb646a5208518720667fa5984..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 3344 zc-pO3&yU+g6rQAU6GP4JstN~Gno+tas%R6H9}Gtv z-i$Nj83zf^Ba}pONr8%>mq0P-GoY9K_5`Q_X|ExkoBSSVLvtK!-Ds~12$j(TG)6iv?n@X>% z8bl_VY2+nQR+xh!phJlDW~t<*6)hfKH0_PjW>2*T#SZD}5Z|-fGEqbE{eHiw^tGa) zmp;7=qbPYDorR8^qGKz?&gRxAZ?&T;S1!l{r}C;Kc2x*$L#YjwNMaR+tQl61U_Rjd zCduQTquSMIvtsIbd{x$a;9CRMNggs;3{h>%hDum$$%diY?-SW3m3+BG>?(Z8EnQ`{ zU5&O_RTv%iQZ5>8mY}Gt7_>_m+p5#k$=jMkf_f|=-0mk?;rKP8cD?vQdEGP!cC=4m zz%QT6SIezx0Y?I%0Q?ArU_=EVIj^f%WkXSeI;4&JTAOq#`PW~{LzFlU2`aQ~tmrU* z6}~heMk@RBS(UuyCf-LV1B$+7>nQVz*)aJ_(s2rpX*=qRqG z7;gH)>rG%3#VlS3a6OJu43E=Ufz-iR7~}fEIGoN3Ov6jrW&^Gzjv+nUU{`||7~|}8 z+zjL99NgfTjc(juvo16v62s^~;S;9$8WU~Ob-6?uwJ0wLAwDJ(`F^4niHMJ3CeOHl zcPAt?zPUV_&j_EdP+ofYuJ{A_wWRfpjPwsO4nGXmjsA#`ya z2gG>6eH`AM&Ab1Pk96RB)9#N4xO3%T{)r`lmf#Rfq<1r)9sL-g^e);?TxTk7Q<`DA zNU8V@r8hvoV){9yzX$pyrGE#yK9 z@Ni*wVK+BqAD_P-`B??7uqlTu^O$8jH41EfY!Phlb#Ai_zI*#tU}pfgu>E`Ij8`B& zmvh7&TW@8}z(K4VrbAEb2)k3UcMPy|AcWZ!+QcJx^z?)Ou@^9jRT+t>B~Px9g($YlhtyQIF-lV@6#^SrRa_A3^*X!hX6@`g z#~ATZKmy8z@DG$TsE4JeatTFTdg1~HL=iGl4;*vgkOSf|Z+D-)>vil#=_KQs-}}wX zo86t~H4+{}D2}3%02M(mfnv~yKsWvM7^n$pJIKwA-vjy!-L^X|v)K|@-1V_)bJg3- zoW`r|PT$fuG=jf5yRx!^FUiUk_%LnNJcCy+ucy-`Ta_(EON*wwrIvB7)+buq#Fy2^ zGgvm8xJ5d)PEFZ8T9xp!(l&Be|P!xiMF&|de`B5WdCwx+Wx?(RgjIuZ9e*C9>Z)0;#q=U#X+ z2T|fEgjZ--STW$~m)+rlm~_dXhDzESSaE<*3KV_IrZ#o4ZQ(UbS8&Xmc46s^bK_dx zx$$LBd{friZ8ijLOIAXDVN&E29wpY3N72MWwNlGVOWx~nJnY-ZmA x%lJ*OjNiHN(i>}FKmOr+O8GXPA5V<@`P9fyJ`(V20smKTR+yjqE%|IJ^*=x?0~7!N diff --git a/Mac/Contrib/Sherlock/readme.txt b/Mac/Contrib/Sherlock/readme.txt deleted file mode 100644 index 2603bfcf856d..000000000000 --- a/Mac/Contrib/Sherlock/readme.txt +++ /dev/null @@ -1,14 +0,0 @@ -These items are plugins for Sherlock, the MacOS 8.5 all-singing-all-dancing -"find file" program. Drop them on your closed system folder and they will -automatically be put in the right location. They will even automatically warn -you when new versions become available! - -The "Python" plugin searches the website, the ftp site and the startship site. -The "Python-FAQ" plugin searches the FAQ. - -In case the file creator/type of these files was damaged in transit: to work they -need to be creator "fndf", type "issp". - - Jack Jansen, CWI, 25-Jan-98 - http://www.cwi.nl/~jack/macpython.html - diff --git a/Mac/Contrib/Tabcleaner/Tabcleaner.README b/Mac/Contrib/Tabcleaner/Tabcleaner.README deleted file mode 100644 index 821f7e153801..000000000000 --- a/Mac/Contrib/Tabcleaner/Tabcleaner.README +++ /dev/null @@ -1,41 +0,0 @@ -Original README for Tabcleaner.py - -tabcleaner.py is a utility that reformats leading whitespace in a Python source. -It uses tokenize.py (from the std distribution) to detect INDENTs and DEDENTs, -then reformats according to the user's options (tabs-only, spaces-only with -indent size n, or mixed with tab worth m and indent level of n). - -Python does not care about the indent of comments and multi-linestrings. -tabcleaner places these at what Python considers the current indentlevel. About -half the time, this is correct; the rest of the time it is probably one indent -level less than what was desired. It is pretty much guaranteed to be -syntactically correct, (earlier versions broke on some triple-quoted strings). - -With no args, (or "-h") prints usage text. - -Contact: gmcm@hypernet.com - -Additional comments: I have made a few slight changes. It was written to take -command line arguments, so that you can set parameters like the size of indents, -and whether you want the result to be all tabs, or all spaces, or a mixture of -both (an evil combination, if you ask me). It is set, be default, to change your -indentation to all tabs. - -In the current version of Python, all the code in the standard library is -indented with only spaces. This is a somewhat awkward standard on the mac, so -most MacPython code is indented with only tabs. This script can be used to do any -version, but all tabs is the default, which seems to be the best option for the -Mac. - -How to use it on a Mac: - -The script is set up to take filenames (or directory names) on the command line. -To simulate this behaviour with MacPython, you can build an applet out of it -(with BuildApplet, which should be in your Python folder). Any files draggged and -dropped onto the resulting applet will be converted to all tabs, with a backup -copy havning been saved. - -If you want the script to convert to space based indentation, your best bet is -probably to change the default on line 46 of the file. - --Chris Barker cbarker@jps.net diff --git a/Mac/Contrib/Tabcleaner/Tabcleaner.py b/Mac/Contrib/Tabcleaner/Tabcleaner.py deleted file mode 100644 index c6d32237dc5d..000000000000 --- a/Mac/Contrib/Tabcleaner/Tabcleaner.py +++ /dev/null @@ -1,160 +0,0 @@ -#!/usr/bin/python - -import tokenize -import string - -TABSONLY = 'TABSONLY' -SPACESONLY = 'SPACESONLY' -MIXED = 'MIXED' - -class PyText: - def __init__(self, fnm, optdict): - self.optdict = optdict - self.fnm = fnm - self.txt = open(self.fnm, 'r').readlines() - self.indents = [(0, 0, )] - self.lnndx = 0 - self.indentndx = 0 - def getline(self): - if self.lnndx < len(self.txt): - txt = self.txt[self.lnndx] - self.lnndx = self.lnndx + 1 - else: - txt = '' - return txt - def tokeneater(self, type, token, start, end, line): - if type == tokenize.INDENT: - (lvl, s) = self.indents[-1] - self.indents[-1] = (lvl, s, start[0]-1) - self.indents.append((lvl+1, start[0]-1,)) - elif type == tokenize.DEDENT: - (lvl, s) = self.indents[-1] - self.indents[-1] = (lvl, s, start[0]-1) - self.indents.append((lvl-1, start[0]-1,)) - elif type == tokenize.ENDMARKER: - (lvl, s) = self.indents[-1] - self.indents[-1] = (lvl, s, len(self.txt)) - def split(self, ln): - content = string.lstrip(ln) - if not content: - return ('', '\n') - lead = ln[:len(ln) - len(content)] - lead = string.expandtabs(lead) - return (lead, content) - - def process(self): - style = self.optdict.get('style', TABSONLY) - indent = string.atoi(self.optdict.get('indent', '4')) - tabsz = string.atoi(self.optdict.get('tabs', '8')) - print 'file %s -> style %s, tabsize %d, indent %d' % (self.fnm, style, tabsz, indent) - tokenize.tokenize(self.getline, self.tokeneater) - #import pprint - #pprint.pprint(self.indents) - new = [] - for (lvl, s, e) in self.indents: - if s >= len(self.txt): - break - if s == e: - continue - oldlead, content = self.split(self.txt[s]) - #print "oldlead", len(oldlead), `oldlead` - if style == TABSONLY: - newlead = '\t'*lvl - elif style == SPACESONLY: - newlead = ' '*(indent*lvl) - else: - sz = indent*lvl - t,spcs = divmod(sz, tabsz) - newlead = '\t'*t + ' '*spcs - new.append(newlead + content) - for ln in self.txt[s+1:e]: - lead, content = self.split(ln) - #print "lead:", len(lead) - new.append(newlead + lead[len(oldlead):] + content) - self.save(new) - #print "---", self.fnm - #for ln in new: - # print ln, - #print - - def save(self, txt): - bakname = os.path.splitext(self.fnm)[0]+'.bak' - print "backing up", self.fnm, "to", bakname - #print os.getcwd() - try: - os.rename(self.fnm, bakname) - except os.error: - os.remove(bakname) - os.rename(self.fnm, bakname) - open(self.fnm, 'w').writelines(txt) - -def test(): - tc = PyText('test1.py') - tc.process() - tc = PyText('test1.py') - tc.process(style=TABSONLY) - tc = PyText('test1.py') - tc.process(style=MIXED, indent=4, tabs=8) - tc = PyText('test1.py') - tc.process(style=MIXED, indent=2, tabs=8) - -def cleanfile(fnm, d): - if os.path.isdir(fnm) and not os.path.islink(fnm): - names = os.listdir(fnm) - for name in names: - fullnm = os.path.join(fnm, name) - if (os.path.isdir(fullnm) and not os.path.islink(fullnm)) or \ - os.path.normcase(fullnm[-3:]) == ".py": - cleanfile(fullnm, d) - return - tc = PyText(fnm, d) - tc.process() - -usage="""\ -%s [options] [path...] - options - -T : reformat to TABS ONLY - -S : reformat to SPACES ONLY ( -i option is important) - -M : reformat to MIXED SPACES / TABS ( -t and -i options important) - -t : tab is worth characters - -i : indents should be characters - -h : print this text - path is file or directory -""" -if __name__ == '__main__': - import sys, getopt, os - opts, args = getopt.getopt(sys.argv[1:], "TSMht:i:") - d = {} - print `opts` - for opt in opts: - if opt[0] == '-T': - d['style'] = TABSONLY - elif opt[0] == '-S': - d['style'] = SPACESONLY - elif opt[0] == '-M': - d['style'] = MIXED - elif opt[0] == '-t': - d['tabs'] = opt[1] - elif opt[0] == '-i': - d['indent'] = opt[1] - elif opt[0] == '-h': - print usage % sys.argv[0] - sys.exit(0) - if not args: - print usage % sys.argv[0] - for arg in args: - cleanfile(arg, d) - - - - - - - - - - - - - - diff --git a/Mac/Contrib/mpwsystem/mpwsystem.py b/Mac/Contrib/mpwsystem/mpwsystem.py deleted file mode 100644 index 34646c4ea527..000000000000 --- a/Mac/Contrib/mpwsystem/mpwsystem.py +++ /dev/null @@ -1,67 +0,0 @@ - -"""mpwsystem - -A simple example of how to use Apple Events to implement a "system()" -call that invokes ToolServer on the command. - -Contributed by Daniel Brotsky . - -(renamed from aesystem to mpwsystem by Jack) - -system(cmd, infile = None, outfile = None, errfile = None) - -1. Every call to system sets "lastStatus" and "lastOutput" to the -status and output -produced by the command when executed in ToolServer. (lastParameters -and lastAttributes -are set to the values of the AppleEvent result.) - -2. system returns lastStatus unless the command result indicates a MacOS error, -in which case os.Error is raised with the errnum as associated value. - -3. You can specify ToolServer-understandable pathnames for -redirection of input, -output, and error streams. By default, input is Dev:Null, output is captured -and returned to the caller, diagnostics are captured and returned to -the caller. -(There's a 64K limit to how much can be captured and returned this way.)""" - -import os -import aetools - -try: server -except NameError: server = aetools.TalkTo("MPSX", 1) - -lastStatus = None -lastOutput = None -lastErrorOutput = None -lastScript = None -lastEvent = None -lastReply = None -lastParameters = None -lastAttributes = None - -def system(cmd, infile = None, outfile = None, errfile = None): - global lastStatus, lastOutput, lastErrorOutput - global lastScript, lastEvent, lastReply, lastParameters, lastAttributes - cmdline = cmd - if infile: cmdline += " <" + infile - if outfile: cmdline += " >" + outfile - if errfile: cmdline += " " + str(chr(179)) + errfile - lastScript = "set Exit 0\r" + cmdline + "\rexit {Status}" - lastEvent = server.newevent("misc", "dosc", {"----" : lastScript}) - (lastReply, lastParameters, lastAttributes) = server.sendevent(lastEvent) - if lastParameters.has_key('stat'): lastStatus = lastParameters['stat'] - else: lastStatus = None - if lastParameters.has_key('----'): lastOutput = lastParameters['----'] - else: lastOutput = None - if lastParameters.has_key('diag'): lastErrorOutput = lastParameters['diag'] - else: lastErrorOutput = None - if lastParameters['errn'] != 0: - raise os.Error, lastParameters['errn'] - return lastStatus - -if __name__ == '__main__': - sts = system('alert "Hello World"') - print 'system returned', sts - - diff --git a/Mac/Contrib/osam/OSAm.c b/Mac/Contrib/osam/OSAm.c deleted file mode 100644 index aa9a5da33516..000000000000 --- a/Mac/Contrib/osam/OSAm.c +++ /dev/null @@ -1,277 +0,0 @@ -/* - * - * This is a simple module to allow the - * user to compile and execute an applescript - * which is passed in as a text item. - * - * Sean Hummel - * 1/20/98 - * RealNetworks - * - * Jay Painter - * - * - */ -#include "OSAm.h" -#include "ScriptRunner.h" -#include - - - -/* - * Boiler plate generated from "genmodule.py" - */ -static PyObject *ErrorObject; -static char OSAm_DoCommand__doc__[] = ""; - - - -static PyObject * -OSAm_RunCompiledScript (self, args) - PyObject *self; - PyObject *args; -{ - char *commandStr = NULL; - char *outpath = NULL; - OSErr myErr; - AEDesc temp; - EventRecord event; - - temp.dataHandle = NULL; - - if (!PyArg_ParseTuple (args, "s", &commandStr)) - return NULL; - - myErr = ExecuteScriptFile (commandStr, NULL, &temp); - - if (temp.dataHandle != NULL && temp.descriptorType == 'TEXT') - { - char *line; - DescType typeCode; - long dataSize = 0; - OSErr err; - - dataSize = AEGetDescDataSize (&temp); - - if (dataSize > 0) - { - PyObject *result = PyString_FromStringAndSize (NULL, - dataSize); - - - if (!result) - { - printf ("OSAm.error Out of memory.\n"); - Py_INCREF (Py_None); - AEDisposeDesc (&temp); - return Py_None; - } - if ( (err=AEGetDescData(&temp, PyString_AS_STRING(result), dataSize)) < 0 ) - { - AEDisposeDesc(&temp); - return PyMac_Error(err); - } - - AEDisposeDesc(&temp); - return result; - } - } - - if (myErr != noErr) - { - PyErr_Mac (ErrorObject, myErr); - return NULL; - } - - - Py_INCREF (Py_None); - return Py_None; -} - - - - -static PyObject * -OSAm_CompileAndSave (self, args) - PyObject *self; - PyObject *args; -{ - char *commandStr = NULL; - char *outpath = NULL; - OSErr myErr; - AEDesc temp; - EventRecord event; - - temp.dataHandle = NULL; - - if (!PyArg_ParseTuple (args, "ss", &commandStr, &outpath)) - return NULL; - - myErr = CompileAndSave (commandStr, outpath, NULL, &temp); - - - if (temp.dataHandle != NULL && temp.descriptorType == 'TEXT') - { - char *line; - DescType typeCode; - long dataSize = 0; - OSErr err; - - dataSize = AEGetDescDataSize (&temp); - - if (dataSize > 0) - { - PyObject *result = PyString_FromStringAndSize (NULL, - dataSize); - - - if (!result) - { - printf ("OSAm.error Out of memory.\n"); - Py_INCREF (Py_None); - AEDisposeDesc (&temp); - return Py_None; - } - if ( (err=AEGetDescData(&temp, PyString_AS_STRING(result), dataSize)) < 0 ) - { - AEDisposeDesc(&temp); - return PyMac_Error(err); - } - - AEDisposeDesc(&temp); - return result; - } - } - - if (myErr != noErr) - { - - PyErr_Mac (ErrorObject, myErr); - return NULL; - } - - - Py_INCREF (Py_None); - return Py_None; -} - - - -static PyObject * -OSAm_CompileAndExecute (self, args) - PyObject *self; - PyObject *args; -{ - char *commandStr; - OSErr myErr; - AEDesc temp; - EventRecord event; - - temp.dataHandle = NULL; - - if (!PyArg_ParseTuple (args, "s", &commandStr)) - return NULL; - - myErr = CompileAndExecute (commandStr, &temp, NULL); - - if (temp.dataHandle != NULL && temp.descriptorType == 'TEXT') - { - char *line; - DescType typeCode; - long dataSize = 0; - OSErr err; - - dataSize = AEGetDescDataSize (&temp); - - if (dataSize > 0) - { - PyObject *result = PyString_FromStringAndSize (NULL, - dataSize); - - - if (!result) - { - printf ("OSAm.error Out of memory.\n"); - Py_INCREF (Py_None); - AEDisposeDesc (&temp); - return Py_None; - } - if ( (err=AEGetDescData(&temp, PyString_AS_STRING(result), dataSize)) < 0 ) - { - AEDisposeDesc(&temp); - return PyMac_Error(err); - } - - AEDisposeDesc(&temp); - return result; - } - } - - if (myErr != noErr) - { - - PyErr_Mac (ErrorObject, myErr); - return NULL; - } - - - Py_INCREF (Py_None); - return Py_None; -} - - - -/* - * List of methods defined in the module - */ -static struct PyMethodDef OSAm_methods[] = -{ - {"CompileAndExecute", - (PyCFunction) OSAm_CompileAndExecute, - METH_VARARGS, - OSAm_DoCommand__doc__}, -#if 0 - {"CompileAndSave", - (PyCFunction) OSAm_CompileAndSave, - METH_VARARGS, - OSAm_DoCommand__doc__}, - - {"RunCompiledScript", - (PyCFunction) OSAm_RunCompiledScript, - METH_VARARGS, - OSAm_DoCommand__doc__}, -#endif - - {NULL, (PyCFunction) NULL, 0, NULL} -}; - - - -static char OSAm_module_documentation[] = ""; - - -/* - * PYTHON Module Initalization - */ -void -initOSAm () -{ - PyObject *m, *d; - - /* Create the module and add the functions */ - m = Py_InitModule4 ("OSAm", - OSAm_methods, - OSAm_module_documentation, - (PyObject *) NULL, PYTHON_API_VERSION); - - - /* Add some symbolic constants to the module */ - d = PyModule_GetDict (m); - ErrorObject = PyString_FromString ("OSAm.error"); - PyDict_SetItemString (d, "error", ErrorObject); - - - /* Check for errors */ - if (PyErr_Occurred ()) - Py_FatalError ("can't initialize module OSAm"); -} diff --git a/Mac/Contrib/osam/OSAm.exp b/Mac/Contrib/osam/OSAm.exp deleted file mode 100644 index d567a95f46b4..000000000000 --- a/Mac/Contrib/osam/OSAm.exp +++ /dev/null @@ -1 +0,0 @@ -initOSAm diff --git a/Mac/Contrib/osam/OSAm.h b/Mac/Contrib/osam/OSAm.h deleted file mode 100644 index 2fd046997ac5..000000000000 --- a/Mac/Contrib/osam/OSAm.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * - * This is a simple module to allow the - * user to compile and execute an applescript - * which is passed in as a text item. - * - * Sean Hummel - * 1/20/98 - * RealNetworks - * - * Jay Painter - * - * - */ - -#pragma once - - -/* Python API */ -#include "Python.h" -#include "macglue.h" - - -/* Macintosh API */ -#include -#include -#include -#include -#include -#include diff --git a/Mac/Contrib/osam/OSAm.prj b/Mac/Contrib/osam/OSAm.prj deleted file mode 100644 index 527563c100a0ac7a1d97b6d646b99ff1fca9b453..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 71523 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 R3K;V~mHe+^dtqnA{{s^J(@+2a diff --git a/Mac/Contrib/osam/ScriptRunner.c b/Mac/Contrib/osam/ScriptRunner.c deleted file mode 100644 index 6f7d9ce4b908..000000000000 --- a/Mac/Contrib/osam/ScriptRunner.c +++ /dev/null @@ -1,310 +0,0 @@ -/* - * - * This is a simple module to allow the - * user to compile and execute an applescript - * which is passed in as a text item. - * - * Sean Hummel - * 1/20/98 - * RealNetworks - * - * Jay Painter - * - * - */ - -#include -#include -#include -#include -#include "ScriptRunner.h" -#include -#include - -#ifdef TARGET_API_MAC_CARBON -static -p2cstr(StringPtr p) -{ - unsigned char *c = p; - int len = c[0]; - strncpy((char *)c+1, (char *)c, len); - c[len] = 0; -} - -static c2pstr(const char *cc) -{ - char *c = (char *)cc; /* Ouch */ - int len = strlen(c); - - if ( len > 255 ) len = 255; - strncpy(c, c+1, len); - c[0] = len; -} -#endif - -OSAError LoadScriptingComponent (ComponentInstance * scriptingComponent); - -#if 0 -/* - * store the script as a compile script so that OSA - * components may load and execute the script easily - */ -OSAError -CompileAndSave (const char *text, - const char *outfile, - OSAActiveUPP proc, - AEDesc * result) -{ - - OSAError err2 = 0; - AEDesc theScript; - OSAID compiledScriptID = 0; - ComponentInstance scriptingComponent; - FSSpec outfilespec; - AEDesc theCompiledScript; - OSAID scriptid = kOSANullScript; - short saveres = 0; - - - - /* Initialize theScript here because it is a struct */ - theScript.dataHandle = NULL; - theCompiledScript.dataHandle = NULL; - - - /* open the component manager */ - err2 = LoadScriptingComponent (&scriptingComponent); - if (err2) - return err2; /* <<< Fail quietly?? */ - - - /* construct the AppleEvent Descriptor to contain the text of script */ - AECreateDesc ('TEXT', text, strlen (text), &theScript); - - err2 = OSACompile (scriptingComponent, - &theScript, - kOSAModeCompileIntoContext, - &scriptid); - if (err2) - { - OSAScriptError (scriptingComponent, kOSAErrorMessage, 'TEXT', result); - goto CleanUp; - } - - - err2 = OSAStore (scriptingComponent, - scriptid, - typeOSAGenericStorage, - kOSAModeCompileIntoContext, - &theCompiledScript); - if (err2) - { - OSAScriptError (scriptingComponent, kOSAErrorMessage, 'TEXT', result); - goto CleanUp; - } - - - c2pstr (outfile); - FSMakeFSSpec (0, 0, (StringPtr) outfile, &outfilespec); - p2cstr ((StringPtr) outfile); - - FSpDelete (&outfilespec); - - FSpCreateResFile (&outfilespec, 'ToyS', 'osas', smRoman); - - saveres = CurResFile (); - - if (saveres) - { - short myres = 0; - myres = FSpOpenResFile (&outfilespec, fsWrPerm); - - UseResFile (myres); - AddResource (theCompiledScript.dataHandle, 'scpt', 128, "\p"); - CloseResFile (myres); - UseResFile (saveres); - } - - -CleanUp: - - if (theScript.dataHandle) - AEDisposeDesc (&theScript); - - if (theCompiledScript.dataHandle) - AEDisposeDesc (&theCompiledScript); - - if (scriptid) - OSADispose (scriptingComponent, scriptid); - - if (scriptingComponent != 0) - CloseComponent (scriptingComponent); - - - return err2; -} -#endif - - -OSAError -CompileAndExecute (const char *text, - AEDesc * result, - OSAActiveUPP proc) -{ - OSAError err2 = 0; - AEDesc theScript; - OSAID compiledScriptID = 0; - ComponentInstance scriptingComponent; - - - /* initialize theScript here because it is a struct */ - theScript.dataHandle = NULL; - - /* Open the component manager */ - err2 = LoadScriptingComponent (&scriptingComponent); - if (err2) - return err2; /* <<< Fail quietly?? */ - - - /* construct the AppleEvent Descriptor to contain the text of script */ - AECreateDesc ('TEXT', text, strlen (text), &theScript); - - - err2 = OSASetActiveProc (scriptingComponent, proc, NULL); - if (err2) - goto CleanUp; - - - err2 = OSADoScript (scriptingComponent, &theScript, kOSANullScript, 'TEXT', 0, result); - if (err2) - { - OSAScriptError (scriptingComponent, kOSAErrorMessage, 'TEXT', result); - goto CleanUp; - } - - -CleanUp: - - if (theScript.dataHandle) - AEDisposeDesc (&theScript); - - if (scriptingComponent != 0) - CloseComponent (scriptingComponent); - - - return err2; -} - -#if 0 -/* - * This routine reads in a saved script file and executes - * the script contained within (from a 'scpt' resource.) - */ -OSAError -ExecuteScriptFile (const char *theFilePath, - OSAActiveUPP proc, - AEDesc * result) -{ - OSAError err2; - short resRefCon; - AEDesc theScript; - OSAID compiledScriptID, scriptResultID; - ComponentInstance scriptingComponent; - FSSpec theFile; - - - c2pstr (theFilePath); - FSMakeFSSpec (0, 0, (StringPtr) theFilePath, &theFile); - p2cstr ((StringPtr) theFilePath); - - - /* open a connection to the OSA */ - err2 = LoadScriptingComponent (&scriptingComponent); - if (err2) - return err2; /* <<< Fail quietly?? */ - - - err2 = OSASetActiveProc (scriptingComponent, proc, NULL); - if (err2) - goto error; - - - /* now, try and read in the script - * Open the script file and get the resource - */ - resRefCon = FSpOpenResFile (&theFile, fsRdPerm); - if (resRefCon == -1) - return ResError (); - - theScript.dataHandle = Get1IndResource (typeOSAGenericStorage, 1); - - if ((err2 = ResError ()) || (err2 = resNotFound, theScript.dataHandle == NULL)) - { - CloseResFile (resRefCon); - return err2; - } - - theScript.descriptorType = typeOSAGenericStorage; - DetachResource (theScript.dataHandle); - CloseResFile (resRefCon); - err2 = noErr; - - - /* give a copy of the script to AppleScript */ - err2 = OSALoad (scriptingComponent, - &theScript, - 0L, - &compiledScriptID); - if (err2) - goto error; - - AEDisposeDesc (&theScript); - theScript.dataHandle = NULL; - - - err2 = OSAExecute (scriptingComponent, - compiledScriptID, - kOSANullScript, - 0, - &scriptResultID); - - if (compiledScriptID) - OSAScriptError (scriptingComponent, kOSAErrorMessage, 'TEXT', result); - - if (err2) - goto error; - - /* If there was an error, return it. If there was a result, return it. */ - (void) OSADispose (scriptingComponent, compiledScriptID); - - if (err2) - goto error; - else - goto done; - -error: - if (theScript.dataHandle) - AEDisposeDesc (&theScript); - - -done: - - - return err2; -} -#endif - - -OSAError -LoadScriptingComponent (ComponentInstance * scriptingComponent) -{ - OSAError err2; - - /* Open a connection to the Open Scripting Architecture */ - *scriptingComponent = OpenDefaultComponent (kOSAComponentType, - kOSAGenericScriptingComponentSubtype); - - err2 = GetComponentInstanceError (*scriptingComponent); - - return err2; -} diff --git a/Mac/Contrib/osam/ScriptRunner.h b/Mac/Contrib/osam/ScriptRunner.h deleted file mode 100644 index dda7bbb0c1f6..000000000000 --- a/Mac/Contrib/osam/ScriptRunner.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * - * This is a simple module to allow the - * user to compile and execute an applescript - * which is passed in as a text item. - * - * Sean Hummel - * 1/20/98 - * RealNetworks - * - * Jay Painter - * - * - */ -#pragma once - -#include - -OSAError CompileAndExecute (const char *text, - AEDesc *result, - OSAActiveUPP proc); - -OSAError CompileAndSave (const char *text, - const char *outfile, - OSAActiveUPP proc, - AEDesc *result); - -OSAError ExecuteScriptFile (const char *theFile, - OSAActiveUPP proc, - AEDesc *result); diff --git a/Mac/Distributions/(vise)/Python 2.3.vct b/Mac/Distributions/(vise)/Python 2.3.vct deleted file mode 100644 index 2e0cfd3bc7f74fcda90b5c868e76b4cc63fe97ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 693147 zc-qXJ2YeL8+xX|w2!xUgozMeEP3T3GmI4F_L=vh%xZG`$CD*vSG`fh0fQVQqQbmv^ zN{3KIKvbHDN>MWF*FQcXHa>Ac@__!m z6Z^&Yi_b{x`_K=SI^jX3zDz`=zKR5?2l5^YEq5D*mXGxPXYu$qTA*@bB3vn9E} zo8@#w_fL7EZtIvf=GHx+$N??8;hzhwi|R^6^ZU_YWayrp+!ueoE>#uQt(H?b_MQ=l z)JO8tc zog?~!;4Y9Sl=CrVY(^etfLLLVDdVhV%8Q6BHnYdWd3wmjg!X}oZy)epYQm6ITmhnD zbKJowEMUM!B2>>J>X$$NdntlwxY-EXH@VpZQgg9=l-}?Nl$Rcd67*2}Naww|oF&Fp zpatjs&BIS%fuenhQ0?iW-dS)hp5io-aRl7(7!jw8jyQ2nyUWJqYvkD!71Rz3lkY!wLgWe6ktg2lhNPfxMZNV-`#&g6Gnr;2 z8IHnRiZmg5(xlt9vb-2I0t*xl${O;TsK4GSX&Gf{F0-WHCoHX4)XV_0Ba_qG&T0;6 ziUmFj{ifzdQGdTh`R0@+TBhOW5SrF3YG#1hTLKm@m+uu7JHPnrC>D4NT3JApsGptp z`UT1oBeP5+E=PD9CM*fv$xAuRCS zFd&we+|d_YVS$vUjUP=%MU80o|8?iyaA4>GEYKOC%LX43^#$)W?MhkN$}9qF_!A;a zSshv2TqZnY&g0eC#ewD^7AWEl_>EhlzRnvjPNqcdWTNs{2vH}IsJxCu9;e&OJ2LfQ zI*bKs2?D`V%cbaM-p=8aslCipkrW{ONs+0Xo=gQEFK4Gn|7E?lUTi%P1bczw6j`rc zvh@na&nCEd>qYQX#7~?(owKTa?s0kA(*tTg4kY-Y=WcU4T`?9-EIZ~`!U8YX;%6!9pB}dHYs%u|_zJA`Pl+sHIPCnRr&G&N2M`yqK%t;cLZ^xPggsL_P>_LsAj1?nBq~9m zR;+G5mvd{31%c)a7I+IBU&B^W-?Ei4j1mo!i3H;CXB4@MDv5-i{fOR>0xu^i>J7u$ z#T<6dYt~^_ac9cbSFwOe2n8Q#j;P<2nzDgl8g35pYe*v$%__dG?y)EE85x{S^DJDY zu~-1-GK>m|(rDLcY6`^}D&q*a;Uh(yQhMSza!N9Bm6Re65L@2uvJ?wKwH6_iEY0{% zsQc1c3NuWGseP8fq$!#rRSCm8tXzIfme+36(#1FazHc)YFhKD0(b7kboKM(Ed7hDZ zoKF#+QN=IZl$-~5p6Fbg*~;5_cZ@gRtEJ6toBqQ#EMSYFJ%vpW^%)Pw44_!UWvoSU z1k22#%_RYr)@k`hH)62BTkGNLSBv_+osYJmFe7A`clHyQbQbm?g~!wK+U>yvEKoG? zpX!8&`Yz8lFjAb6GR}JPxp0f3DHXLi1rAG=cA9Zm;Jabur%Sf**Xr}$y(mqZO!KLO z&{$c}q`J)(uK1a`6cDVRtZ0n)8g^Ec}J$kR&2)Q2r@If(LD{AwsmCs-wl4s)hG_QYeMv)Q#oeVcWcS5THrpP3ZG8lJ6a zBvHxY(P<>f!UAvggEC$b^{>8Z89{Nfe4=&o-QhMSIL;imMJvwMkN>%W1=56^-?(XH!?5C0lEA+i>Lq7Wmh9z;m1->Oc4?vkm1LBlBe5Bs@7RczUEHyPf$3T2~Ys zG}(d$kN@ztlnXrI>>Fb#k6Y$>E|>7+D)Prv^4QH5?GB6$3w-k^=st%<{U4sRSjys& zS*AWuSn@=ca9vrlIZGDKg|ay_HIDh4D>R720&l$yMg3XSHyga79HsL5jXwE`CSO!i zxh6xm6MGHih2fyQboQGJ%aD z$n|Jk3|nsuU4;eybtfpMGz(jMwL6-^jFn*o*zk!g#vS$Z0RPd%YGEnb#5Ts~pQ0?| z{3>P=lO_f>K%XWS+z*-=C+cf%x$!3@8Sh6jnMo4^5{;&8)}OQ>C0Gzj~R}M`kUu1E{Zcr#;LQC;5^5|mGp4X|d%E1S19hIIbh|V)o;4kwoq+{jPJ_33=^wUR{3^jS+??t+a=)l(Qg4B} z$DP!@Ut*7hlvFKNYWt17$ynf{7od?#8=8hpBC{-*#;+@c&rmdXuad^@%yD>i2^2TQ zu3Uu$I@?-=jIpBr+WL$Rl*z|d3C!U$6@|VknH(7<4}E>RxLivC$9*&G?Jduqq(m>s zM2){BM6(oi@dYL6;@UO@iTx)4{HjoKBRJ~5Blv5|GF@hg{*bV|q-gF)C5zjU1MZbR zlM@@Nj*P$}?6e*xC5z42ce)*=dQqloznQSiW>G_6-ZXD=tp5)dc&jl<0H%N6Ou?JS z3Cj$hEnC7S$CnjFSt?mlHBL#aU;Y_~1zw(k;_Z~C_;02irzA7|tlJzGBxl39Kvudrxe`Bryv$vWd|o+%vH^apr3RnZ_n7cool_E_A! z%d06w-}Lr?zF6Sp@9_2qqJH-Ej}8$;!_C=#kNj0dA^Jjfk35~z90G1QFtj}u_$c`6 zl^cutMpHgbq%bebFam7&Yl^%Ul`!0x3_f2wO-C&7*5BYD&KLE`r2>DaG;?H{DnAgK z*I86ehS{QZ=-9SnNF6Nj)+T_F0>xjp_vu1mUXfvHJWF8SU;^WI+O^MWyRd-obq@T) z4@G_A{YyVmn7J}ct!o5ko}#HBwJ=_n$7}X_v^TZRSm5g+Y%l$lsBir1^??-VRT-%H zS^_j*(cFnjAe$@C?A4t2xq0gJGFafPn!Z+T;L5Odl;<@cM@49D3s~^rr8_I{);{;> z#v(-4Vc$rRc!S^^%JaI+(~$%N;R_W_)v4xjXFGGXH@EIs;L9OcE+c)UbNHGVit~ny z6JLkmys0Q2Q;U=C%(pllxtv>vy|i&yppfA4hLjccuST2?rA+f=rhX>Ew1~ynW6#z; z*}Zn_Z@aNTgNuh~@tibse>`+BrI|0&q_!qBiSc#k*6>a=JaPsdt?dzOc+extoe}jBEpLkf!eXBl{0ju-EhZ=~ z?Pj14793H++qT>gTPV1WYx^ZiJ7RIgXNw;?Q5%p*O zskoowER}J(5IYh6wxVcRC5|rVg(P92dHmNzeKp6LR+MF#%+h@iVOhzdYJ`|tbN?T< z8Vh{+B`~?-ccTN{+n%L3%Y7W2w+YTFq~u@?l{h($bl&aFvYHFDcb;S{(9)oWLN|%} z+U{j9QKYwgGB1V9zIRyEP>#!L_G)zrR-UOe3JY$%$Y&3Xqt=bTD9#EQXBe4EAZaDK zo3%Wx!Opf$6`WY0X5gctd!;3yc5|+vfEKMm;(bu?(iDnZ#-e7%3X@*ojKoqSoEC?-eHZ-ahUCo*tqu$2p&9MRx%f8tjusO z&}qr$w9N&soA_QJ7I=x5yN#m$x4O^T38LYavFMXGR#D_wu2eY}=ysZ|7PDqQZ0k|Z ziAC6)8}PQMKYDW8yOhYMEeXWNs*2_TR1$HPEN96Q6dvYDTaE<^h|`kCi27wif^Sfs ziavX)$e9qvYKpr0O4WTMlhY3;1PpQcCek#`OAqE#oJu}NSdf_6SY43^qZY@j-MJiA z4+}J#lL*!ADe5gpny#TNm3?Mw`xBNLEUG5c>B`bvHJeX`et-qOyf1v*A?m9-x1Xjs zReWa9$eNikQc=jP634EC9ay{j-TPRmWs8vFu|vmKQ<|ziXU&oV7;Cbiaht8YQ={Ym z{vY+)V1c*5(GRqX`pQGd@f?_@noQHJ3ZbdRqTA@<_z#Q10&h))0v3q+pF+FTqAb;A zmN??P7;Cez&~6twyjwpD-4uSIjHsVgbIKvgQ$yxSAj`_eI*O(;O2%W=4JZh@O=&6d zs?{;KhXO^)K)uO<5yrYK?3$OeIXJIwIDt>WC#s10i7Ph6Q=FPIPD*uxQ%{k1sTL>8 z?aax{a^>iU6aYBEL8AWT)0OH|q*^}ye+zv^In%iV2T{*J1DhQ{4^=4%I-U#hcsws4&V?N9Gwt_RJX@uxN6?ldnr6 z(EESvjmH9Sl?Rz9>My<6?kkE^*9VDgTQoLgg(Rhq7Zan60KrFA%~cembz>K!L6_&u zR&84CR*FSH9=XID%-n)!8pbi$zM-(O0XFjyl&Gsr zRE@Z9#&|`pnMxw3-Yh zB*tQauO0?XNBV4HpLhSIFx`EQQWFN19*W!;l`y)vG22>1M`ID5bLGvV{+DSDo1uUf zg&@0SoN;Z*oZnIwJtxiyZj6_AXq}MVc5!bW7APVNCn3@(xqajdag=C}Pd+ADA&6YU z#IRZHF6}VSV1cg&(-3w+)c+fQ>N^VafebV6Ac0w|C<;*9b;jhFJz0+$9n(Q@I@YU- zM#o+ZN5^a)Ukp`DF)g&1uhF7Dx|lfKFHrIMFKg5kGc$*`IyGkQZ^Qx>{U<_ArK@5x zMi+(=K*OybxE3E8!h0)np4O^s9NoQMcRX)af2e?8e$w8nZY)9~bx@qNn)3JCQz%kT z8A(7k_EFT{RU)Okop}!4tTl{(FKhoUEby;g2vw10CI=k}MN=PD5Ns7iml~7h)8r>^F zEwMmPUkjgDBI;euhrdQ~ddoP;4LA88wbp%G<{{7Op;V; zOlCsE*=$;8CDt$hG!lzIVt63xU)w+Q3rdqD(`1p1IpfnTS{rXSXL44zS?f_(>vO8j z!2&Pw9vx}J^zc_#)u2TEWTMd|DcCrG8Bs3J4ycr|7|FtbVXjBW?Q#VqW&^b zHdzidrYQ0uRT5?MHk;<7lp1AYfwztdcVr2F70Ok4mBJ*;F!{|1Oe%{p6(_{$a1^5%u3K z+EtJ843K$VA-u#@a(xpo~LV)RfcZ<(&>prq%DcJ$@4wFmuBp_LtHcHn*I; zh9V7;k@k}PHpXErJO!7T*S<^kz_0;W;9py50x9`xy7}*klxC<*bBN5%7)L0Y15`=l zwtKaQ44+~Fj}$_La#9+=oSn;#Q$j4l#?s>Ot8Qm+PZ{PmWgZmHY z8?QZ7n}|i&B@@_Aa-H987*DY*GM0dCly1DJs3Vry!9yK^n;EUkr33&q2@908CHz!f zX&G?cvAGn?DuV@+L*k6mp;$GUfaOK!ayF-h_ZCE3ylx$)4W7jUMLrA!Qp$5^`Om{B zAtw`-7G_1IGt44&BuvNY^Lf$s9Gf@VVz${l(XME3flG%fd=86{cM>pH)K?B$y^;cE z$bc2d(N#w2%8$xA0t!>}(Kx2lt#v++1-e`ad_o#nBUaqqMA0&3G$YBEFiJOoMCgx} z>E^9g?HB00-|zBASb(cFe0-9qpW5l-Ym_TX=BiF+@{KkYy^eC(ow-02?Q}<5+??5~ zoe*km8W!Pp=u&y2{>ZpauTVl>Cah16;WtXRgH&Ti2;I+_rG-uwENu?I(&E#%C|tG-*M{67 zW^{^hHS~wWIbyi(yynbk-jU(d&Nmwi6xam6DBb8b^!(3Jl+PyfbtHu`x)}21Md$I> zOwJpP*D#{>sJ~fQpmBDCPqY&Cvq!{<^=Fs)o+2BVjne%i)fw>d-mGYk#qG4&(#>v< zcD$Fd03P6!lD3joEmQRwisz8=;!6`ex1#Ajm3YFUZM62e=Cy@qdt!mNaK^wQQNLyG zInil$%1C|A6C~+Qk_tK^aSpG$K&P?$z)%MkC?!N+AyS_FQ$H{;z$*Q?=5{p?Ovcoq$$LrNHXX(4A1YBhz@Kz5fuk_jN zzwN3<(ZxpeKPF6IhuM$m%?Y<2ft-u0>TMeHmFX~5q_;G8>GC^k9Amju-%OY5F z=cK2D#Yo4t9zq)3y4gxBP+l0HLZlR@y_MJPqIeT!ysbM3-V`RSP{0E(nbQqz6&84F z4p@-}(xP9_`!0$$Nk-c(Y@vUSg{}A4cq^dkMYS3Wyp`@7iuS#CzaFKUEK}_x#{e0p zvT*x7Iq4Rg+2e`k@_CO}2yXB!i4KNw4HlXcDc$iq^WT%AbM>rD_yO69Vtk&(QjRyz z8BL61bf(*xCqS3(KqQ3d)i(gT&DKgmc{RC_pi%Cfug$h&2VD;@zw+=qY zyI9~Y&;@J}^#f;j=uP3Cli^MYNnS6ou#-jMbaAmZw|+ep3*9fWP@2@TMTJnjsWRSa za-@}UIt!1#C|+K)&1oSoHICXlzic=W3%tAuZ+k?2&e1tL$*Q;Emd~kNXNM5P7Zr`# zYf3U|7qb$djRjuf)2Sc7`%BoOrgSA<)$XscHa=Zbld8~Q2^Jw!t-Q3_-tb=1^MucE zYk}X!Xlei8BXgkMRXM%EJNV48yw*L00J9Veyanw)sJW>38k@N&kk2u%0V-R59{?;nIvImy~qORoGE3ZH%tPfG&1(<}i23Sq9V2p)+%ZCQ?iiLFw};boe#wq=wT@r`>k8pVjYv^HE@A5cp!*Tz zM$x_z`KBUUl&|iw+xQI4XBO}?t78#vP$d?L{IyxO<`{*!>2pE`fsK@|WhkQ~j6Rtit~$%(<_|dyukv;Yk_btTPsfHtz%da3WoxkpA_{&7xdmr zaekF?29jlx$k$nPn|!<3Q~WS862uJU4@RL+cpf*5)LhHXzw+|=k1t}U5sxk68YCr# zKR%EMSf{3l>Acr&cBvZbh9oD|?b)Y)KdD(+sLR7ae2r_CCZpRO0p z6nML#b)mu z1|`b!>p?5n5~;HZMHN1Ev>QHtQ`BFs)21RN;{AxE%VEkhB8q9HQ@exm1&$T<^^eC7 zpiHCvn3gMY>QypX-Fz-**00r}FTr<|Zo0VsPunV#C)xNJoyI<`rVPUp2cpImykwaH~y`D{$u>&cP z!w+aNQy|@H2=9lhFY5mdTiA~RIsJeZvFJb8P2ep$j;rH+9fiJ2@+MFopG0MWx8|EH zDrj_$$IE9F=m>->sE(*F_Zv8*0+3HyasWA1tEQsMG1UUuxD2nJe$N@O2-1AUj~%Mr zrZ{dtzh?mp`{v-hc{=($9l;up7WJ`N{l&`h`1PLo>}d2FdkpZ=&|jr#@Lrd8QyQOq zV}Z8jJQjV&>GG0;SM)P(xxU7&>d~8jQJ@^Z>Uo2OadYE@;?X)bw=U4P+lu<wlWESM|agp zvlTt|_39pbtl4IBYQ6?X<_QEF93q{A-=a~aL6pZQ9b4e7`H~`^Of8Ss5vzH}qKp#) zEiO`8(QlVN{vC?rlY(7=;MSbQ0w>PyO0;L{h7&vz4C@F{zq-`iV2b0Dh25+!!I`PZ zYN^G+(>A)+&me@tTZ{Ue?|t+=1@g(e?nt8Snlo5*pE#$(>vr1otDqQYPcudRM>Sus zMR|OZt$V#kcwS^tLH(RwF4pPH)(t2q7CJ;PQGa~ho!b=1C(n9FCjvB`MFsVDd6TrC zSmbQYQIq)pR8*06vFcY3!Y@BOIMx{`1uOb?Y>uMRj){Se3Geo;uh4L z#)2oMS6|-aZKWGeD2zXqe-!m^?!NRQWpYza&8dpw0F^wc+7AMjVM^6TD5AEgA3XJx0hPUR4CHeeW+4fB>R)0}Iq|$3 z*N%RjX9$cwm83b`YA<)AJg0p&Xmukz7a8&BQ9q^+FJghlb{&jCl&G&buV)A?S{PYwLE#fkp?D2DA~fr&sK2*-;tU$pnEj%(=M)8= zYWKkK`SP}&N2lZ)LQt7|zdkOmsdWr7%l6B++uSaTrk3bM$KwTTSNGrrmb5Ih!)nvKn_I>TgpsoJ5K*6gc46aeYqN0w=EvmfEEs7k3?KP8)ZrTFoovDZ1Sm1&5hH@T} z9F~Bm?xXM*!$8UwZCO#r6h&m`)m1?PpOK;Y5Tl(b`v+lxFP{%X$iJfgSXTez6sMfe zvT|Ca)!NVdv+|dSVe4 z!H~2iqRk|a5zrcfn2I)^h7}b(?_bqDZvbf-dQ}G8AM^4 z_-vaX>qQO28NsyCx}))nKYzl4$jZK9tEfL*`}OxIOj8*qD3HKZKuQv-Rl;absNQ+{ z-exS|;*Nz8`H-mZVVr!9vNV%fg2_hxhUHmQOdg-j7iVwB)w~391zzG6QK*QzkKUfS zoR~Txswl?Z%7rt`oZeme$eobyF_+Jqzi=7KBlB^p~r3k^eO3v=?3K`O|+Xc zc}J$Ew6=qzXJbLA<#2>1NypEJFWh;TAR2Bh_S;LkLP_f|yfDX>r(dn!tq5=<4Sw{i7tBDfbLlpe-qx?<5wmkawVkbrAK#uirR8X_m?~0k&(F9@UTsqll|HthMfH8Yyg zE>)&CIk{(&Z;rsG^d)1kfDwi`W50Ac%S%gtKS*g-`q8XmM&r_!9}Q;eXDq@2ID@2_ z!GDJSVFtUK0OEJmYt*NTY_Cchi!;X^+p=R!x-~;f^~gX$Z-CsD+=I7TiaWAJE54fp}XnF4nh&d=Lb!CiAkHaAO$OiG5r}2Wb7-KQJ)18hOk4@7VB(i5x9)h@z((NlfgF?R} z^=7!W!OwVYQZn87c(5WjJG(QsD2P9pMvqMEx82_H4?uNoJb5m@sW)QB`p{Ze6QN#B#wW zq|c5x_3TQDwb|zw-`5Gub{1IimV6diVP7NEu$!oFy5n*^inT??di4zgvx5azg3H4K zE9iHG%1Lo&RHs2TDb`k>+fm81fpI4btR6O=g}n$m16a~A{HI4HB~h$xGS=a81g4P1 zSf#sN4?T^KY!dZfwq27!fws#)pA%omxQj_WxtR1Sa$c{be`e}7w{Y^CP>ps;k#dj6q>m zQJ*t--&9I;SSC78?guu0!puNWA3`@MbO*mJ&4SMxo=TxUlA*4WWF6zD%&IBb?9I}R z$N-%uK-zse?z@jZqeMq!qHAQ^no-Ic4A+||g&UK@>1oJ=dqXKDv*()dY&lBxu}t;j z2|{&@Sv{qA&H8nxQcV%6`mw05GVQMul;{(g=$>#l;Blm2gFuOhQnU3l;`lg9X*=ZW z$%9)`o=;^@yrSR{onW>gFj&tyKCo{Mq{Dz)HW+%C0v(lss*{9n<4HChiOGcQTk!F1 zqJHpe_g|(|$7HI`T?y4^Oadmmmqox7vJm1`DMR#1!}uJ zEV#;7L#Ww#X$9x*;atjf!Y>f~oCQ~J7sq7zFc7R?h_ttGX20eqDc4D#-NwRouct+> zN;+~SSrV;gCUfY4P>|4ZqCRw0lR=d1GnuUQON8tT79A{!XVMS@)TlCMNUQ?CA%*glX6$>B5`7^PP5YY=on;XuGMT*u_aa2v z(toLM?< zIN{FVi%jav!DJK;f}yDFGHDv-`)^B8tgmJFJ%AkDV7$Zx%f%$v3T=;2_1&WWs|Vf0 z<-~7ftO{gLiSb(|SROX^{Rl#p{}lCsDLs!+tP3($lO6=-JEUNrt!k_keO5liQ5gKB zP-*(vx*_pC#knZsbbX58e9xkmQZjjFfrxZxb+d7m#l+J~GFC5g-j?w)6RaEulRyOg zp`do6{)M!HxfJVL87r9_sBXN%VrewhtY_L^5X8OZMoR1QyvIptzLRNE;|R@F7L}Bm zX=YJL)gZJVP(##rot`cZQ{VedTU=uiEvE7r87%r#Y490pN@u<1JmbAaxh~6G0=Mxx zi|QI|XMz<3zfw9})ZhIx{xZe7B4atj2+R*Gu!f{F8GeJdfmb1&DYU=NZzCzzRT(Rv zT*YPlkqMU0UWMq~#)ES!Z6JT=$Hrpr)is|~VRE&Q@di?Ip}1PCL8)0e_H-6ChHy5E zba%wM8`FUHgq}X=(bcTXlja*k06!oZ9mz1@g(jpGht? zu0D$e5H^IV=FB3AFQ~4b`#!>F^nZBY$GqS1dr?P<2U@0WnMeJ;kD`i=|0X72!P8#I z=T5lolWJfc-fO$eZ|Cq$#9*&&a$?^Ymp4n(aST%b35Oy!8!qY-ejQ$&!YucLxrLNm zFs%~ikrzzogA~Ba#YoAfHEaz66<;u|YSUVZ*}-Y)-q3LRVZl55;2}y!3by$3tCNJ! zaO(#@Kj&vfjc2pE=S}Zo*3x)39ccU}7I+EW)*$7yT^x9H0)_d}=gtHn2>(S<q9#e-Z|e ztsp)L$Z#^rV!ju&Z$P5{mS@jMR^WT*kkVlBI9;NaT7u9V^KSpV%+z zukC(C9Ebk!iHga3tMML_M#tMS^xTYOxFci})AfU$cf%;ppEA!}A@%V-D;`}lqtC!F zR7TYQUEPu-^ zTdtA$bcB@TR;Xn0X1O^}meXd{(Z1pPg#zuOKH^S(EM>YUGwmV=-A5Q$G`C!y%TtY0 zR3V?%wP#;cj_E2{9BkM&0h zpYbF}XCD;ue$+?BhtbP?gE{pm4|N?4F#mDrp#bB5=;2{SQ!J@zm*pL*M-rigucO=p&Eytb$z7AV*`7+{Z!`mz;1f0y7HehMhsz#~d2 za+tP14x?z;uJvBCopJx}!2;!iz^U?1QSbPu@;=HE=yU5FVT}k?Q+;%xcW zd=HC|B@x?1)HfYdC5_?)$vAahAULHJ1?=i^^aV0=~}~x=UV|B+6g^6GaO4 zxi?F2|H>!|2h}5uc5zx;-1{xxtBOUqx1p?b^#0A!=Py&95ShnA!jyQhyQU z7+C~QCa)c*Iu@F~C>>k>ZJ(`QP@K{}XOWTQo`~{{aPrgbTJ80~_iR|;UxT!hir3`c zcpLa4D?#3sao+rb_#+=MYHg{4!7j!lxmq}`DW0r;OVMy&;qk+L-4YJ>NoI?-vsWhs z7mj@ZjlVYd=3Q_>N5NOD`Fg^zekh=20m#IMhx;xSBBdmiDvvsQb;si{9zJ`Oj43v! z+irF};`mjSY^8v0Ed+2&5UPib?Qndq?C>XFT20xe$!uMBzyQ-cQo8i7lD=#in9Qpm zS#2PLkJK83P`6u@Y&n{`C6$uRmdVmTLukd`$cd=f>^4ngnS6$RSPcN{17rxAiUJz1 z6f5kh)^}c`SZ@^dJtOl_v8kh)u!uLH8&@cBt%DHZ9%9Sbe#@CBGrJ(O(#*RcYIc0!7E4&kIZ7!2wgDv=!R7hupn57 z1gr7XMG{?Bbr_-fZ==9Am!uJSXPwd%%kM~o$OJ|P-pglX zl<=VU#H5~?zSkhU=RR5!3pk;`Q&~D$V@u5xo;ZkxpHR{1<%mc{j_Wpcj;pZB6jS^> z)kKg<@N$JB$F(L>lYgnoarJ7PSzdSl>Od^;5FuCymR62xx5;Tq_zXW)^_!@wrD!%} zr@CjJX~Qgd{YYi}Q}i~Cb(J=!V?ihy3fa1;sLxvW#J?1&njcbaq~w?_l}NlJI@8S+ zM0;DO$G{k*@dlRyEbtRY5bB>O>X*L#^<4^8-6s!-Ku6R;N><3#L-7{q>?*GaDSBNH z)KC@{gxcgI)ON9`ujXuDngZ4EtEIY%mSNQcL9|3FN#&(M|Iza7SP*&+O7O-6$$)V+ zzoSf%eoXZkF}X9-g@&i@vK_y<#q=d(vA|ougB80c>VFvaObyD^+K;It3npwHbek{D z#R9|GIfUv|7xjb6pPx*b+Q>`-bHo#h2AUEuX`i82V8q+XJW=Epi-=Avj6(@ccu}CO zoze$jp?BFoFY4><`Bbc+b}~@oX9>`gNJ$2oN}zlnqGBeot`&}})eK(Z`?9=`^#z_m z(ruE(O=A5bmv-iI6)Vje*Q|ED_~&da@Dv+B;iRn?%WiE;CV1t>U&jUa?dkP@QM4%g z!7_D=vRS;=O-Y6M>#kveP5`dIy_RH(yA+%tFcIS}7KLdPj+AV2-uE~d!^1Fcv+Bbe z{b;(3uTwbo_hSfkn}`g-QWo&sZ#GS&G++49R8VBF)Y6#UCCFd&A#77Id&1CXJP zbU#?14N3n{o<)8<z+`O;PJni4g(W-{Xwgs$*&Wc*8aTjJ<2phW*WEv zp;7Us-E5e8>Bn>gm@*-JUkEv%7_$hl z6!k@@6@6Z7L!m~=P{T(cv~-f`AX0EFvU(`DSx2h#Ks5u#-nkHChKf|(mYGITDzi+r z9KQZwW78ofRi&#z{|2BSB#HswZ{-JctXjVK+wq4eRJvcMI?SZ1$O(+PQC$QosHRYe zuB%)XtExlQADUAt%fnPvu9`k#V*YyQX#TzhrZ?cDCMfUIqE}Jlc)O3`IeNVLL2z3LXAYiOC8ror;Xx}#^oohj%cp2)qzmcIsXVWnzy{j+p z(XkQU0xAfBW5B{48Yxnh&pvgDQjPW-wT?5PO5z+j`ceG?R1nP9fUi&6DN^me@L~f> zmF-7$f(@0;tK(RF8>qG-G++ZVjC&wuTx7Sy7bB;m37~O>O0l@jI?kN^16bfLRDyogy@gm;ga6&NpJI)XvBq{qXqUtE z1(Ui;ap-3(S|NY}LmdhsRu#Oof&GbWtUK&Z47lbl$QolVg^GTQ0C5xUUF^c53l&{JUdn$vZRAX^0h8Q6g;u?Y2D zEVjhC<^D*dWL}x<;xEY1{3X*FCYCTYLBHCX3`{klr<4b~JwdFkTBToUPnmKgCPPdN zGNi6Eon=y6B-6p{;`Jjd0J2K(W(|bO>=(&i%zR&rA#-K2LCMHq4mX`+5^d#i=4>~Y zpBqGnxQ5|!z&~(PL%$|=%E#j9RUmVE z#o-My$-E_7$61@W-sUE?VNs<_7;GF zk#9a8p%EU@(0@90Q7H;G?qRSI9@9k@JuK6jZr2a05TFJjR67@;)PKYt*6xG3yC~Fn z87d9z=9UO@RGjWTEGxs~vgPRLZ>$C`aG}a9f+%^QSXp%vJAOsECdgb{!4*DP)}-jN z47FUmCDWFpV;h`bIQ9Vy!lyn#0eKU|>I&_-WHZH@=-0WvV^LkM0xsWW_Ugy=9#mIf zgnsRU0uoGObvT8DB?^5goR#e_zl+2hr*wx$DBBZNY3gR3_WugSqzEdJ!n?JFqN zrtdD~gDj+M0q$OeGf2JiecDQV`b^^^XhWK;Z_;8hmpeXNa7_kk)V5i6u{T(c_hQGCt( z;}fyAAt@1yoQ5&x@WS8hDeAvYdU*yxj3~3t@7Zrh z3X*mMep2bY>U2{7z1Wk5&HkJMU1TjdrDsKbm4(+rt}e`Uv6u_qmtsa~E< zs2VG=$|a=AaX2)euS%fC{sF}dehMn6v#75)rcDTi`bdU)h1_apYQhA{otewobHIW- zb%Elqe+YdFZ@IoL>RaAlzL-KCk)f87`=U)vk%CQDYN5L4Sb1j}j7Yj!y+DZnOIH&0 z`vxz#M2S9@iPjPi$kdEQk4n$v95$!L?B$&fk8X{x!Z11^O#U9MZx}$SK9Q+5wN6Lg*6x6C2~ zxeD0SMv*^V5*i)-X@n0asVM4S+~4ah%HwmrY`|*5(-tW>pH?-G%cUDj#Z6En(n%5r z*MB&XviMvn8?cM8v{N)bs%PQMZhSA3Zb)_C0N4K~Q9o+opneqTil2>cuPEG6k7VN# zayf@rhbAYEJNVu#X-|LP&s{rHrmKET9Td5nC1E1j?0ONE{RN@+jimr?^*M1Q^|?k? zAU1VW6cwl>5;rpHTTOThN;(_kNyA?W6zaMR)&5-q^#qG*l6Pn7M)c628qjUVUP|P1 z#bkSO)1j#oi$OK62P2dZj}H`0ozDf6?avUDCz+u1WQ6k0gDKGz#piy>_GAXj^b`{m zyKX1}N8#iDiuyHE)>fw|H+@j<6O_&@2B0{n-Q{%XY6SwIWUuK;4jnoDcOtZmx$D!f7(;p`UetdNN3JQ#X>{@lY(E zdmJ}CAXwd*46T6G(`|NT@fID2)`y(#ez|iNQYfFh9Jl;Tpki4#-FSz#ZUzFrG&Dfe zpQ+IIHf8a-#&Iio-xS9pAd2VBHfJWQx~b7}##GAVbB*I3a$b=so<-f@jpn+tNYkLV zU#dQVviRKJxQCp+W0KAXEu|+5-e0a;L;DjNj&%FT-`%&~pfEmHH|}XhV0y6dM=^}W z>G0_1j|M=zT8bC-VG&zfQzDV4;N z?lpn&xwP>Fxkbg)o5c(qhVd|p7rKu8L!3VFxwi4a1wzw@MZC~Mzj%R6jaHEs-pT~u zr6@kPH9jE60h;=I%Ae9eISqJH+j8EYs^kPl2eff>l6YA}qB zlWtGJ$EBMI?Y)!pD2;rLpMfKDJ*Gh{2GS(6MOSNG>Jqp*XQa?=O@?UPLi|>I1|ua| z9_o2gxqNSemG|m6g&6n~JasAa^{>hw?W9ybm-z|QrXeh5dy_aTZ;t0Y7B?fCU|jz8 zL5k#apI;N=dz*%`unFY67`&uxB9Oax{a3!8vpSefe!x13`s zO&OV{Q$s@Y43nzChu*M>;huW+#HSP{%m?NP0yCUN4EMB^Q4E(>?oMBdQq~8h4?!8h zB8H22_q=@2UH}#(ceL9D?WXHSBdAbobIe^fT zzeN4^=_$u3QMjLPU}i>?s%yxDC()86qGOd0Q6i%sQ96r|XMm2AZ3ZZDKz&hvszLfc zlqJH4g|M0|ENTZ>oH=fbp3{d9r6ZntGNJ_~s_2s><|af|7G8mHA{3kOde!1n^C?Xw z9~!cq$;7c}Yxp22HVH?l-rx@?OJyIHg@h%8MO%~4f6|MnJe0Pr^pV@6UM`?SReXpx z6QWEeZ4Ix-Ga5#}uYdh0rSZ8Tu6-e)$zm~#rY7iT)-FK!_N%Br`O%>T6vgLexb{a0 z3eRHtP>e?Pn|kj8)l)~BX8R?Fu2+Tm+zQu8$o?43A{HIoJtZ|k-__BFP1`ROO9xXV zpL^j_za~i8EKJ*AUOx{s^eQ-OAB*~b>V`I_EI#+ar3wijHWm{)z+!dgdGy&ab`YL3 z42{MsqW;Q(xG8ko&QW>Wj&}#)u_Fe%N-Y`o5?n*%_P8wrQWD}H;t{go>0j*`2=!>z z@xe!PDbF##P0S9&Ua(Y>Iv8t9FHwK~ok_u=xp^`?wBI*mKbr*M&p7aA6 z!=jReBMWrf(bv1pRB+o`A~bf3s2}`#eoe~snam_Go7^nAQV+M;&JA|Dvvo6e*dwd) zji_Jq#)XZP=#)%!g`{1WJc|6D@712BrQc5TW$+2<4%QcMjIK>lK9>)GByKn|c@cxd z8hDG-MJ9HN*=Jc61TPRKDB5RI3Q{K2RoC5Y3RFi15`azliWZ`7sNX>ib(BUbskm++ zH>#eB8dZVZsKRt^RB=u#H`wfU^G>%;^Ox|^iU&mfzs6aU31&oCJ--$;R#A)k@qg8# zC{TsV2qjCNaKhfRZ&0B6GLQgl8iy1d38xmwr-srzv{mUt)^P|jG>sGW3mz<*OUa`A zs%pGQR$WK3B+l!0=5g+9Pg+VAXR}G2MyEA)sJP%;(%j6%&j(Vx27Y)GShU0e+?X8R z&FMEiQ~GU$np~D<&oX;7qd*O1AOYAk5h>XKq7o>@Yj#-8ZtLTW+jm&t!@U$4w@I>b z3)R`UCFHwoPB-V)XRHiZ3!j)J>fN8Uoj@2P!W#Ltr^$-i(+~eE%SM3$-8d&*)OTxp ze+~s|ECUI^re{T<+ByOy@fNq!uLv zC3LhsbFqM8HIuRG7Z9weEU^46oK9H7p%E?<^)DRm#8a&1GFIb!g7v(jh*>4pzyW=A zCJMfTP)#W_s$JL61C%IQCWi1pk97PBt!dm!^Mbj0HMc4nwV^JB1*?LOVw_@I(7b#Fn z8At#&y{O0+y{>+@u9uM)!-8LTj3JkM${ip(A$SmDP)c<9%J1A9and+ymglZ;IvUOK2l_ST_x%E1OjY5^` z2wsjfwEi&SuMHHcjSTgdkUlUADY(2sEfm>HMH(TF_AL6G1tj*eg$T8pE$aWsYW6#2 zYb&uCD&Hk+FR^Hbf(cBEHG6c~Y%Ll?h>IGTME&u!b-z)nb~05@Aw^;~i)KivU=-4^ zZ-tacsG5|fw_)0bWfZEtpM`%}kt?JUs(-r2Y2&<{&L$)16DZ~c$rY-$v;)QJAY%#G zra4H-E*OlGH&#mI9F1&sPq z8bzODMhkrxCmoJ z*i(Mi?R7=|>$U%#|4M*LHHD5cS$b$6%`HoTI?F%;u;~p&BdbcFBm~NtKMJhm&n)hgUZwe40tvK2cw5**}9QQdb$N zy>R^dd_^7qS_x-P^sT8Lz1#7d*QKEU@$+e}vkCA_hwbXrxUW zGL2$&m$8NmVc|lg;L6YvW8oB&6szIqQ%N+<{X0dCQ`E9=bHKqMcsze z(g4&!IwL4zh;tc*iIZV$Q3PfYi+URDbla?hc`Jt}hIFZ?VL_#^02;)4?WJ?X8dqx6 z14T?Y1#(_STS2yEH7cuUmRvJhT5C&Mn%R?PEq>DLGRPJ9rap??hQ+emP+DiVA;oLe zGhd-Bn6;QUMg5Xzzey&L5n%~_e!~()e#6!O@w`{P%LsjL74>o3e*2ID_3#5)s%Rqh zY6*@?O(A(OI)@IW8z9v1ZBgH8jH4eV>*+_fOi{nNs(MQ>@9;W3S!r=jhl8_t`CQ&x zkQQe%>o}iMA1s38Oq5^N@-52POJ)?FfoZwO7^x$pv{@@nJi$)yl?(98L!^D`$0A}@ zQ@}(SuphYs#Pk-6O8iei++^+gF&bJ!xq?Og-@7aSLK%De#JIvT=n6%y)7Aek*3v4} zgs+w+XDfg3Ss=ygBV!E`(lp;@fyHVq4GdgR{Oo=+3DPy6iP?|4g8iCgIE@E&c6VNz4I$p^Hb~&UuAf<`=@hwi@rbu7O zNDYS&qz#C{rW8PO(_P=Xbt8O0apm@+KKupuM9OqVW@@*cFuliuDG97y_XM&vMK`9> z*Ac2AmGSL(%WTSY*5_tNA>Z?T#Ng_zWIjL1>>3P?w@aT3_6QZeUc2ctqW-RZ@peje zPNw2Wh;Q1680_(K*?5l^Uq-E$g(!0Yq5A7Z{k>m8#!#U1KGz`rNq{!7XnMK4m2QmMq$RtFam6&GK!YbRl<0w zGh}hv?PeWLAb4Rm7K8%J!^ek-`gdFI#~WPnMbBsCi=L_PP)`Y$+KZm8Id*$Nnl}q~ zC*Gm?hVi@SpDT=82aam1xdv474?-LP#whJMsDAV(tHnmeI5(6Bq(Mx>6+dty%t3hsPGwgWheo< zL0Ki9t6|@=$3O)=1eL{^U1PLXQ5UY6P(@W^5E}TksNX!N<6cU0M5gIP7I&lWDTyr9 z(xiF3ZkHZM&DNg!ePPbF)8O1xL#X9CDYA%ewniYDIanro`6eOyTUjqsN95)5y?Htu z?i1R(h5%%QkH$)7d~{@&R0`Bl2HHQ50NqtGCaDGTaGK9F-Fc*948VL2wF6;As~MvH zb@wSJg{dyV7y>g1%pD~@gIXA;r!{BKcbUCeT9I09xq=1Wf^Hrloe%z}>HCuusgjJ; zmZV2T{e={qP@)#e!D&5)ZTs)Pe2WEM;@g|LiTYKhC2a^xS=32p>45hvqxzpInLkl& z4$@qBlbN_AgE`@XFYIeeR)*JZ|7Kr~K25%}QKg>M5urx)RP;`u~e}YAavYXx6Ij(fGX175` z3IZoQOgblcN7>1pDN?qKBp}y6&cfhj33reeGZlOY3w&uuQYcjSkyF9-KOqGS5FbKl z(4(e;A74=4zbvQM1ET4f5C1j*3;5KBp(!1e?DB?VlL=y3!?>b>PyJ671>C#Tc6?oC zf_DzT-USQ%YmjQv=9h(`g}+ju@iLGAT>q#NtE?8t=F}P(Z2vXdjs+?QPasH#%Ptt@ z?Lk>4$Sn0phpB%|(PXJg7LV7g-32Jv?Z5(WjTG+^#(!g6xp z`f-<&pC*814fXxH_Z~&vd-wmQd+*(B#R6Rde8|$$+|%<}$8S)eC>clquD_QBP=dqa z)M4}2&f3lEVS%@5Lm^T`{iHf+?@*uyGLZ2}0<=$2uTTr5$NJ9BlWRZ00v^{yggQ#+ zt3I{j`3n@Mp^Q_Jq}JEpuV}?eB~DMyfj50=KIebu-o0^H;4PYID*S!_&yr9|WRi*c ztRO@mupmnG3P76c=u>VR7KCa+KgyAg_OQJ2ZAD7dNG9q>vMA~wKuV79Q%RJ>c|7J! z&3@zF*@v;fx8wZ+(iX3IuT6GPp2jlIhp!Qy4_VYuQesj<_Z%y)HE!8ix8pS|@YWP4 z#qXm2?4h(1l&FbJbc~#}TK^ymD~E|vFO{>>M{b!||pHZM_8R#;(0k!@S z7K3Xto>td96y3Ts0Sn-O@oprYBfII|;8!S4jC_7yWwO{<|6@h*fJ&T!US4yi!Oj&| zoQ19G)qvIpo=+)hSLB&?re{(3%$*>+WSY)ok3-Zx7B(Tx;*T(0DP@>&3QT!r8w3j7OYpq1PF7L+zo#8Y>RhLMU>H*#JDbXI8s1Mn(8?{H# zQm;xPJipYwEw&3!n9>!Op!e&A|dc9}59>X;I&J1Ug4? zK9+H&EhadHNJ(BxNygP2o0oT)-I^3;urLr~a-1$VPYpyd6Fc|l z#Lg3>Xpc$ajly|g^jO)T$4=}#zPP@BUe2R!+ID1GUo7wvr$G!6_0?(*!*=-u$jPFY z%tUQdmgvMR~rGdCDFpJe!#Dw9%30GStxrqJI2{!wV?S z8JVX%xeY98BQu`1I`Wi(GQ^1b>E5(8l;^C>WBh~gyw8lMosK+E${=YQOM2H$hbYfE znWqxj*Btd8GoJQ3@YKVCPz4v1H(S)N|7Ok@%Hy+{xf;0=IBEkko(}r)Abfz;K~ev5 z*J*Cb^R>*=oFo%Ry~~WJqmDc{6<;df{mD&(D9<-CPYju!iCWK$=L!9I4B*%Vd?)I^ zZrwSS@?4O4T9W=1wT=}}tCl*}4<37@V}p7|Hf%(BF3LQu$u&PwYnk!1(y@NRp$t<* zef06v^_1t5%+p2){?{<$X|1DugSx3CManscBDYYUZ)Ki#=vY6{iUOV$ z_20z35k`5w^Enoi>@A3ThZ#>>{dfYPeu5?a$g2lVQ=ac-o+NU8Nz^K4Jni)3!RO#s zl9qNSa;;ybJeOsj0c2BR)JkSNI{F9bzHru<@MoUunofDH$UK={2+!Nhc=YrS@C4FT z>9+#i!zj;HnI~&H;aS0qM@Rp_V1+XLA?j`66$VkBYcdZ{;-jdynDOZ8AK>#_r1*5U zWl=54bKU3MAacG$)N)olt@ZQ|@HyDheLBawf3lzQ{2=o6QA?TewAPOY;cMe&iuxBC+)JW7H++tL6ztm)W;|_lEx7{dj`=!FVd2BNlmQh?Vl(l6mq;dyHDdj7PhF&?Uoz z1-^Y0e7v2gKRW+#Am#Z<=9xt%f1}=H#?xNE`oVX);N=_P?}N8Ci}PW+4XTEm5E9>@b+}{NuwzcpHW><7urU4>)H5KZ*K-^JpcOK@aFPa7T0+_*mt8`=v4#+>59^%iV6f4L_|bXL5j*T;@t6!tq*@Z2q$Cu=Q~!)DX_?=r{Ntd94TostE;$Gc)QBKu)tg3wT1AV-jes` zlqHN&=zE`QR{o_edMCiIUYl!HyH}n501F@-Mra)0N<{N^tf4>`1&{))_3!F)>5S$${a5CH)SS>Fcuv*0un10CkMjI*44+3W<*_6}mME+!63J}L)avIc{ z;F@Djcv{s1f2<00w+wCv)@(AqL}7mP%J!uM=?>@9|z7qk7h6Inj1=at_dE6SGPxoHE`xxUHV)tI$W2{{lGKniqQ5^ zO#fD5@=c0!-KTkY^mi!@aa<0))tO;)SX4)}@4j?k6c%V6aHvbSW%>?rjS4B#Pd-e0 zWpueQCZ|dLh1kL^LvLaMo>&-0{g}SY{Nzo8_mm$;SN_%`P^*Su@TWc#`^WVo( z#~%@1bGX)Cvl~2oRnOI&K2?{Ye?Mt?$irU;%|Bp4+A zsEpRJ>#at!W_=C+bVWXR8e4+TQ<|xQrZ(AQi~m$c>)@R|yZYpcV(g5BPw+ikdt$M@ zlxLdY=|FO+#UGQwlcPx<<2{#Cx?@48Niw+qQ|F7m`NI?FgpzK` z$j~5-ama@ISP*LX970QZuDf1``;VnO_k4JcOX0B@$Qh1G>lQ!pMJ%)c!Xl=R*jM@i z<$37C^SO)(zk8SdgZrxOZQ&12Vgc_8ys~D=Oh0K!=46HDK`B9_(8iyT;gR(m+^?@D zSKU1&Z+Sd}^5HA5-UOk%UzxslFV}90B$6wlWO67Ke^N$=Gg+N>qrvrfpX_ri@O$g{ z<&%9Oe6mRL$9%tyGDY;s>}I{IVVcqAZ0_~Vqkt#M(CsV`_g+5V`+2{<_s;)YT?nJ}_CdKI1Lg5uXl&Kep0V}u&F1=kb)m0B7b+p6 z3pq?qgUzX?0~Ox8*|1N_zri_tp9 z`Oj-iJfNIJnmgE1WJSVPHfNBOea*X@KwjvQOLp`=<68EbtP?Me;N&i)xfFpeTcUP%g?q zA*NQFR*4viP+Ui*-;W2W0Qra$!K<#v>&pAXFsGH9F@mtFPl zTlJI+Sm38$N2n^VG%>VJz4??TRnRE3@joI7r8As)78kCZs&=#Yy>COXz*{&+D}RQA z-z3xRss{!EWO#}IU6HYSFu2>me!ZR;^w>D4s%1Uno&eV{sG(mI%2hF;{Bw4kz$O&6 zDT%hvSo1a(c!?9^^W%>N9gf!}d{M!Xj~c9maekfW?EbHu=R6v@{?>PKXR!Ro$aMv% zgb&boX3&LMfng-kkLeXx67u*Hg53l4p@+K zV{aqhmR=BDf&!KF0wTZ(6Oli0ssRF}>C=?}2zn&lOgl0&^=8Pw_HnWMC|M~%rrb?R zDEM!XC2QMeJDGmN*L#XlveJSqIGT`6`frdm*NzN3(L7n^cQq0VC|MaVvJVN_wl3V-S?1Zjgm3+*By88X$;9Bh6Ri<0rI*r!Z?;-kD=N)zgJ`{*q~ z<6lOtBGH(k&#B=ljO)JGlQJDVnG*1eXFHjGZ?h3qC{LJ=UDzb8!x?Nwhrwi1HHLQO zE$oa1-hx>sj8B{WcdY!DB8B@PZT4%`S2QGx9h?DGmagpm2rTdt?^@Sq`rP-14x~iI z1d&3Vuth47$*hW~F!7bQvA|oy;cxJpZm(|3&Z9)dy@<#anS`x=c>zTuvSpi80qt4- zV+0m>t2{i!6HLE!ckLq-D8kDwkYAaw%`acAC_u(sgVFASf#lR?h7Ez`YZaa@EM!Ti zYzh@AprS~ru7o$F^*it)4SKU#RlgHeQt?P?#q?hv`Jf#oDj|sKkcUjzF0J2XIBfYw zRmQGxL&w8d;AMBbfug*C&Jv(EFWb_^D*4y*Xzy?e zR7wEVB@sahZ%YHpG~3ejW^D#hFj$7LIHs?UBt-o7Uxd~~7QHJ=4bHZc+csfQ z;t_)RM~)5HsG~Ts0w>8qaP~-B99jM?X7s{tSOe{hyz7r%)9IRC`jmE8!h^qsXFHWfZnuI`s_}>I4~>{^Xe> zmncr0!0AHL_$Ta_Hj1pq9F;WRVWCDlmg%E^y*rB1RPv&kPH5hhM`Kboezupa9gGD% zk}Ig(+l@bom3-|cRo*vstBU4IzsfGL?WZr z?#fd|^u?5}Sm>m>l~1Zm227Zq5UQncVLBjjehLJrxQ&kgvs-K1h?{CwaD&*f2-(P)}(!>jzUL6U|A!!!dZd11o z-+4UyG8TA=cNJza{ZF4%Dob&y3!L8MNG#z4X{$Ut9z;p1fEG+2kA*HH9G9?P8J~ar_5ow0b?yzO3 z+;-eK`R+4V;3Xa*?U}xJ*ul3bQ4K-VpIn(v_(+~jP-nKmN%#SaViV9Nb`I*g#mN=#pO;a^)RO)Ww5gtAZaiM-yHXT$?YRd3rB z`6(87nS?=@e$3DrXDCr^LG(0)0nGj@O*J~Bo=syC)0SQe>V2ZgOsPP;7NUl@Ensi135C&OqNV- z_8Eh~mQ^{*PbR;){u%|U=LJN{ohN)IZTvV)hAe|c)v|8a;;6+~;3ZD+%C9w4+B2d9 zC8{ro#=TC6j?3$EHkVD+s(bej2gYK-Q8DlgJZtpk13&DiJPifU_-cgbgft$f0lXen zL+Ix9Z?V8jTnVry-v_>6?o4?a37(0hc6-7}X+sFdUZ~rue|vhVDOeB*Z0vuF>94&% z+D(C)cma|0-U(mI19CY`R#i4(+xb;xuuu;njp-jW>hc){YAS$^5rBkK(tuo94x?U` zldx;r)Fdo)r-vuNZ(Xv z({oJUw0HVBiq^~vjU>TL;8(6SkHm1t1O22t>&_t(^yS-Yc5soIPw&$^feZEiKBdZ#>>chy=qdd zmR?vh2-a7~pYro6umY`I?X#9xzu*uScsa^@t+(rE1GD6<1y!`N>G+K_OP*u0f(Nb& zs9yCMSm0$>Z%f{2;P)3OP#Z5GlEypXTWRJFfSfkBRo&z?X~er&kW$WlBGYfWY&=bo z+Ik^fB1qp!+XKqQbCcO*RcFGF*WZDKHWLp4N0)2))i>Q0F*w*f0tUtjcF2RG)7RM;vjE zph%UxkPZ-}`7&muT#Fe~shVT=9EoX!1u3;M_|uhJceDzMj#>!vmY`{muY97K;qrEd zjrOD#EmX}%t;-gA@^5EA^T3FATxR;qEk}o;=!vaC`aT+tS~~*Ci^0guRJp3~bZQ%h z1zs+Pw|PX<+5WwTQ=(ylNFlCWT-pq4b2^I>E8}z9=I-1aXeT{FanB+29AEt1|MuOF z>BW?CJ{MCiA_=!`>?T9D*@)RxCt)kRjV571D5MfX75SCk2bDV3r%>eulmeY_$*(CX zP$+z7Kf{)uu0AuP`$Q8g@X_`NReGN3&;L398fB^=n5HPF{g?fkk^*LOx@=a}RX=Wg zI~O`0EY2%b1J8~h9j$I|J3)CW3Z7Nl3C|Bm!i^}0F_qYFl~=qxksIbIiF+yyK&V?d z)4QL%^%@0=<3K?bFA^Z0j38V?pn=^wb?w(pRUU#$9aFKuN8wK=<}rQeUJKu*ER}q$ z!W9_Az&nhJ;n6>cCB1Rq2hfk!_R)X-2p<85d^+>AT*tO_3xC`)nex~ zw<@P#fxn&(G|w^p-jgMVP@3vKG&hihR2ht>k(pc8&Y{sgKQ4N9x> z4g9Km5RCrdH<-S|`?ro#u0+9A#Z0*VCBvsv?((Y6?w%dr($i%#v{U3juy|iHeL=%D z(4iEYM2eKg1nm z`tF50S(2dIf+_VFVY)5N@{z^4&91fvPuoflv4G`+38~CYrtkX3*iZ^pM?mGxCs23% zI;|)g6us@Qc2qq-dZ}V4$QgPqrf>Cd$OVd3UtrCiOtAit)>dhHCl0(-Z_VpsfjAQi6I*nCBP;$gfDA#!^TmnhJtEIbwc%*G*bao zS;k!TrlKhp_$Zjax;%%5b?xS6l&O(mTA}Qv+>0h4M&fjgeEoe~a4pc=2Pcq91Z z1d7yHARSWTpzcd-CZ|$+K%1@?(i%SAk?Fsyd95^MY9g2}l3EH059BqIGd(>`GaC`I z2tM&X)3-Q({s)TGR3QCSoFF}vhvd#M*|h0-;B?2soV)rS(;r*&pbkY!@+lLC8IZb zJxF;{1W#EKSf~q?=Ia?UGVNMa#1YL@ycGE5otfS;Xg|xF*g{}+{ElFS$=KIpnUK_; zE^V&1%HuAC#|s9aa9$&8VexBwDNsuRG@N)3I(}9gt2t1X-eJ*`3w{R8nkpP-p3=ja zK4L}Xs+6piARD!TkQI|RqEy?wODo!8fuD9ERPIMUHGS8p4CQGpcxxU8ZAscH z^=3Q?3%mseEu1=F&h2~(7`^({-9ruLMkoU<_&XsIvY<1Lx~iRCBQDNP4KwZ1f= zDk+i5V$oaEo!a?E$6-wIvq8(=mNAs7qoCSG;t+MEq&ej@8=Mw{imWt3H^D>l6WsN0 zS+XcpCjs>~De$Z-Efvb7I_1CDiV&V5;xN-EE$eiZLUk5U2g&UVT^XrRX7w8^?xRPs z0Ms}z6+GVXz#k!tDU??&zM};Ms;tC8Wp(LIR!xk0%5-R=;Cz;zkDRT|3@b&cyvp*O zd67^>OEl^@eV-OgWb(x~ol6!l{n@H#QYce5!SpqW?$yOeY$p}b1^{Z0xu>B`A- z{Tz9A)jNDwPsd_`M;HMkif1wZqQ~l!6se~d63HK+D=%$rn4V@)>rKR8=&Vdp&x}Dq zTX^93*FSu!r$9dC|8y0kwNbj!X>h3TcF77-srCpp<`r$9KKkZVisVxUP*+i!g&;^S zw+5$$$ykt*6M<(g{oZi$0j26As1#~loHPreO|@$PO2Gogd?5G|#hL!ckdzDx)mK0@ z=|G?=$!jW;!=N{088xHA$)}a<-((-AddoOU)lX2hQheFU(sm`%&6@F$8)&@im7TeI zBIWU_@Yt4QaMx9l*Yz|hOfE|F1n+`R@X(KA2QIQ1*Q>x|Tg8v4DzED)P)VAdKm{Lz z0X2~6KRC4J2}<>(pz2Dtpmp)`n#yfSQ$I)TIb5Ly7I=xPjHWPswFjM#Q7EsviTy}a zlCHY6Im&3!n=}|wEwF&$TM8c^%Jj(>C$N)3ulkAo$=wWHf;=RL!)nuRFV+sWVGYwi zU&_tS-M#844sA=2bVydrn@Fv#9Tz-lIes^z$@RvIDA!YhE9)D=l_+gU(d^oq^}pcN z$_c#k@4?{ryHThi0&0Tdn%9ul|1u0#mue*U{sUNGNV#AZ<%#6xL`9XPNJ9nER8llb zS5w+~VTMVI^;1hMu+T_{5t798EtBiAprc`4d$QypTUSfk`5GoNS?yYQvaPTv^&-Rg zXE$WtX7^5>7Fe$~B3QMh4X6yOMej1GJ`*tHt-=Dm50-o3tC)W6`ufonYPi>~EU_ZG zI`RgT&5_+y?b0ypj~Q6tqp&)v%{`>|oB#1EMS4acZ6TSAbakce9s!a?uU+2@83iBT z#Pq|fWUyu$A(*}(@9XMG^ZGLE+E87oanI9b^ONxMCOpX!rZscXajT zwG=6rphc99>B?dF=rDNNxlI3S#iqYdrjdf_o9l$Bfjr~qwi@&olF0XLg@umG3D&0v1BN<%frGAeMVt{msq!p>3bEw7e=Ad zyr7iOmL`&+)K+laGxkjj7Wil-gsMzt`j>Z4WykRb0act>M_p5C+bx*}?fj#8U?PSw zecH$ClPFKR;HgRO_3M(PIkK4=Ea3Cbj8V>^>VtE%j8~%lap>>#q`f+C$LJ~89rRe(uPx}(WQ4}YH(=S8jEsh9nDL3^qF0;1%=A= zDy~bQbi*XSQh< zJddwShVXE{^@C>hq(s?*$VPT+b*<+f(6*rtS8 zFgZ!OI$djdLrJNVrCHYt!biJ2H&e0Dm4y__BA|AWWOceW(vEdA9d_-`0gl5bcs$Fh znTCrL$SQz#lMqH-TX|zC-(=UWiC|g^;ZIoq`fe8XW)np3o+3o;q!DH5ovOEt=0tYK z0>A$`813J1`yKs&9c$PH(fcH9Ti0G5kwvfCbDi9H4Ho$Q6M%^S;NI?04JgrQL3Dy# zd)IZ4W*f3>E+>d~9S{71P&3mnY<8I4+HeS{ZxyJH@}OK6vnB`c6e1>V+2&4X#}dP zM5s({PHfs>fjnUx&+^lzG8nqcwZDF|qeiROG7#T#`oZ9ReHhlvYq||8OMYhI&KAG+FO%!0qpC(}a zq}g>^bXc?23ISgsis$6(oZ$GGLKS#HDQ5xwr9t6Hu{4|N%PHm_SFylD3_&Q2C!fhk zMl7;rlGpJr2};*JArZ>q%u>IPWd7Oasefm(a@94CuRun2Zr_?hO%_n!D?zdYq*)3L zu7&OzVQY^C-hxG9NHEhsRWSV=C7L3L{`!g#Jt=Jy$&%h&Z4)`i&%gp-H#A9o9;BF` zdWcnUlw6r!lN+U8onI78W`NLUH~_XX46Z*y5kxn}yTK8DCM=q9Tv-KP4GckTGuoE?b2Ia z8kmaqSl~~L0WiMrviXgVS5T-q0;*?i0`;`CS;}h6(F`c40H$4jJEi9zFSGrLxdLbq ziOkdumj`50o%g%icC)8x0(>lVH>@CdvN!XHr7V~E^8#pyvgCb6+Pcu{vTKksL)^AW zf=?V^`X4|4!A6%P8%ngiyaqi_$$x|kF9-AUj`j7XzCfW~5Ks8DIjp)g{q zEob_rzlX8N-vxqeEUD_LOGUCGe-$p9L;V@z=U8A_2#$9-e#5`_m?{G))k3cnC%XyN zC?qQe#HPBH=9F0C$-fOlrPwZn8g1mBVEuxQl;=gk^Tt}jqnBp;v^kTyJG+Ong&FiK ze1hBaUcYT)_I#07#sVdhG)*3pCRh6lx*x^@KOKuuWp4Ujt~!=^5sL-W4tp7{c@m7QD!8`AcG{5kw-$bm`JoPynRK;f-*P!eDj8w_}lU^{cGp z#u9-QMd}IYjMAKPyG@ImYm_KtJ$&568){eeCX{HYAgZbmWyl*%c-BqQ!s7#hx0XUn zoniV-zt4T2GA;9p_&rIOGUatXo70r5fz#)yFg-^(48XZ#OD$#k(JvonHz$`1top>& z&}GRp61E)mv(r7r;ln;d>^pp$<)!kUQlJ$AsC5?tWRlnS><*Jvt%WH3?qEeM@C^7S zaz3{Z^?UWEOe+PGvbxeeC(VhqJ8asV8g{?}4lJz4>+x&wlhS`+#{jE*_9C*8tc;fw zD$8ce)?m%iLAmM``U8xSJAAb}i06LpIBavss^OI&!I5S!~9@uj3jFZ*xdQCu$FCb8M zX$>{nZ3BC*exJpT1sZA#LP`81nJpqmQ>Hb7=|v@`V6?RLp!!4VFN0sl0>AwheCPc1 zedWfnHz?0q!SjKV1l%F*2#OT#9gA>ue#Xr4lBaf24$QlxbP=_Dz9pmR!d z$sIQibW~XZ2=#5u1Fx z*Ia2XkyD?mS;vcnM@;;ZyF>*}w#L}(byJN1>++r)2cogY%|*HX_^4OP}#c(J;AsAPmGbUusIP*Av>M zPAr2^xx4(V=E@N_r7HAsWT(mV`&VOYfTUCUE-m$2)|d%dE=780ge@|<+H zU7KTS+5-{32ylt%yO-(9ibU=6N-9Ar&FN;#o2c?EE`6F7r%>Ioz(lnc`~!X^@9@-_ z_bAmnUZGS<-t0Njx}Ph{VbrH<$FvDP@h;PUwX`KmwzXd{6;vloa~V?wIZVcMZLYfR zDZF|Q3&4GgP(&!x9~|*5GlcI7xEacYhvykwMOknzqs6Yxp(t&-U>pxJk?Ct}pUno@ z0YNvPlX6r747uc{TPSZxIrIi&n%N~E-l`i|;7?S6@119Pn)}m4Rs--OAE+hL zw#z7#M(OEk4-7d2Uw>7mZ!)_|CMEk=kSXN4rP7v-lq_BE(rXq(5sZ@vea<(Sw%=P# z!9EdSRg_d3%cRY}ZmV6rNr#5&g$4csct9n2RMLY1&-b8AM+H-@PYKg*$ zPLvyboar}}|8){&`cyDAQ&NPlkY_Illj^{OldI=?x@;Z@6BUfC1n$mGY}lBEj~(-h zha>4(bt|PgN&rPJL8zU6tE@fj8I%tT`(j@p6n~KKM3-GXpHh7$sD`~ts8-3NavB}! zCM`D3dU^71XDDq|iKmsV7O{h+dpa(ta+TC@FH5B|o77jv%DtL~1)ib_knxg$TfX>| zWo!OiP%Tta)W0I_;0jY|v&YV_c!cf)llB|azw}b2{e6G+QK(SKSs4jF(>vpEHFWRk5E_s*{Ub>b1Bgmf@q_% zU;COggPvp5XFH4;n$1$hq7f?hCx4^{>sbb?F9p=kGYHfgX)|w*$*R6w?XF54M`1xq z#fOiX{??0?*y7`qSbT&`B1~(g89rcg+T7N3?fi*r;MDSxBc2m41W~Hff-01pljzn- zYpGm|wmy=F{T2N0$PXLX?${ZxiVvp=(|Vaq4!c2v8xNX zp)hTbw(F9M_c6^Tt5G`_eHhF)6PUi$;(aV0{hYumt(*bBF3tMon>5*U9>2Pw;v$ue zLZ}zNGSx5o7AsqOUO-hEPoOqRo22s9kEl1gcPhk!eY9TdUcnwy(T+i0iJ~EUSg^622(*0oPODEj0SeLs$^n zF%J3^4+-AiXb9WB{Mu*BWs9u6J{-60b{ka!9l-)XhX9B_U^(|Up%myFAE2$Wnh1a# z8W8Qrg3!7P2wj`T^!0T38Xh6~)`w`DtR`|~rWFO~-^(I|9aHQa{`C?3zCg$A-Pls_ zJ0GAoq|8b5Xd@MqIc3&TFVXiXD$y@WU@6!M_0j)+E%nFe^i-%?c@^j;>C_VHq5u7y zo`tv3BrM>)Rzj#EuT}e?Qpftx10z7n3$TtPIw?U)`V4zsy3LSbOHbD#rTgOxbt_C> zg}R?639AxDq5t(l-G5ipTA}i)X{`?MN} zLMFD4&|VU_nK1N!eEZ1YZiWSZ8h%Fw{us+=UTlG)ZcG933a@&XFzLRM#$<3ioT|fH zc2^i|#RAWOv-a_@%=LerKdmtRQd%&bR%%IIkj7*;+LMx7XclT8gri&r@OBD@->EP) z_sW~5WZO9}ZJSRCwRajvt33)0?LR{~;4M1@p}tQs{gUg2Hz-zXuX<9X45IFwG=EmR z;L@g8;3*vN@f%DZd%s^0D!J?uD!IIrR|e`UgzAPgDqPCKny$VsVBS8Pa@8p4HTXOH zvy;l)E`>@L--}8|bP!a{Nzu8)hSI!rtI_2!Xjd5!yo%x*nBIK6-yKwD?rD&l0;v_* zJWqTr$pa1yg6Tvz|Cl8dI9yX-rAhY(RyB znW%D}=|5k+f1bkhJQ7Sj$(4x2=cPI6X*QeM^`WPDVrykDDH>*;%&AO2-t$^%N>u96 zEwV&@b)dZFCIas?gPkzrfLYak(#W(Qu_%Y3K|B_&f7kFnl&!Ycl8Ue=&XMK;lI6TY zsDTHVf(4#rKSCw?F@4u2eO;8Sjv&h-kvoaArOm=dtJ{Jz=c-R&dVCBPc&j&zBc8vZ z{f?Xx6sxY+jUzIjCC-wy0i9~JWvGtXe!e^w`1LK}0eL9;u$C(dC{Paplrx9`&6GA( zWf}E$wVu)*$BGA7;N=yisEYD0YjR-@Md~k*CX)(9i8GMIx`!GRbM#bu`2{TS(*^Lj zyZMg#AbnX1<+brQP`4zr`4qacRT zNPmT%zydhXn<`#o`i#a~U!q7}wXycTK#(R$LmKTiy0zFMQ*r^9g2j9TzL=k|=}tOD z@~S2E1<8hzSRk$EIrLWb6>mJ%=8wXnTrUsjB?TJ&aiKkB5@mdX&_{%6qO>)y!|1fR z9R}?(TZP8LLW1YwvEItqO{wO3MU0W4=EMoo4o4lfG@DD4Jp7*Gy(=p*=p|hUJ(b7w zO?u8;MZrV`h@eQCo?eyuYW#X-VZGL?S`4Z=%NB9VnZ$V8$n630oi z6Hc?qpk2xugoDkkOkb~b-xd_fD;2uAAwe1|Z`03~;d0vb>al)rJ&Yzz>JF|cKg3ST z={SvIE%#ab=F97Q8kB`@Z)~HCrc$_0)N@S#?vz2_QzEZ4#|m*`9+H?_$ga)RYj&CZ zHCPrN<~vDUDs87!8@%qRkgL~;xzeU7XP(uiI{Tuh($rR1pdZ1soAep)dv6wJdlMo< zCK^FbPZM(_ZaC+H2H|8*G7s!J&uaSMiK=BNnb$4(Ur4&lM5nYK zn3H8PWTmUVFEBOuXDsj*4v*``^kZgxSCv9}U6Q(8pFlaJcz+qGCTo__VREG!vW)64 zz;@U$3JbhE18={{_gxl8eL%sy?iT${@_;6ema&%4wV1UC&Gdx*F~gHG{jhS76Q0fV zy}DKIh@wl(1QFQ^(H|twc+D_*haS%K^fc9L`9J0^@VE=%2}{;NsOeayPq&26q)fZK zvNVtzIyFP3ZMdZ6tFG)*|A%Ph%wynT6!aN?hHtkYpHG24d(`i%86s`&P1n1O8hA;b zlo|7YDjm8V%&2k0nf^@Lk)J8mSs$ukX*NCGZL#EOlio^@1;dgy+|Kkbjcz)Nl8HMw zl)PpTl9k@dn@s%$SWn92LA2R=!^85c<@ewH^p*k_6)xc7$*sPcNZQI?N!g`EloG9& z8n0a3D?X2}MHVgVN5RSnuom0#do>vf!B=>%4H5*S_MKEo=fc}RuL zVbPmS`J~3ETC~bv%uv!zhJ?e%`4Nb5>Z|oAn%9|Pe==j&xF>CV*_=*|@@V2^2^RP> z&<#uTd{8%DJO3gDYbd~mk|JR>{*roZ&_Zo=nJ4av-Aa|^Akc;Kn=RA#7)MhkuWJPv z#MP+rr@WPZmeD-MsEvV#HE}U`zPN9herxN7!zq(jUHNR16RO4^(o9Ca$zG(ijE^cj z&szHe7EVY3%@D!!a&HL9HjbvJ4klh#yvV-fQ4_%NB?OjI1hVz4A>r(^ow z4$DT$l;(A@iZIs>m$o5ju-Ws}5@kJG6AM_s17OYeG5yRO$0zJa&D*3k7f|5#W1=WM6;a#xO;Ovr=%xh12 zJUOtd9V~76Xj0$(Od-p`qku;a9|0bF2Gj5CxNtrN@~W&=K(?4_2T3#NCYRCSvf0e4 z+o^r>CrUd-mqDn_Ii@c$;?OjT-y<1p>WH{9$(Q53$(DjP{%=Gg+O-QClUVH54$#v6OduNFrVx-PuZzN89Yxrw@M)#dZ%tHIQ~2(0=nQ^hQ2OWx6so=t z)Lm&%xr&(xw52)?>^>-^RnvcKDG-=YyQ3f;eTupdapzE|<~~rr%j$a2P>nzW?Ro?2 z8N`}*Y|KUIdf*<^vIEpCrgzplyNCj%_yFCJWgjR|qs)9&`z`xNU-G0(hi9t-V&XCP zuY4cd2>!DXMLsa&=U12%=IVd>(?~(@2FB#Jnp~Jm?FQ2E2g5!2w~iqc=|V`C#Prjq z)xJQ1+yZDmxkpv~o(!NIy~7H=p6avT;Un8%0mpnUO971kz4e2x2L;LzKyMc(K-`0f z)Dnm%DeNkEgbf>8wLVA#_`QwEbNvT9=l!p`;=PflB>S_W#gLk3_5PP@F{}E@yI!B} z8D8Z&JYNbt98cdl{A}S3f>#19dvu^zf9RLx>JZpho|EEgA*h+y`3LphIf$tDRXb1!?qdpJko*r*R0?tne zHH$?-L1&nL(zK12D9$RM_6hOF3Y!4WL*Z1WLn#Pf<~-mtw$d0zJ6 z36;TPcbm*8Eh6HQ;jtFLoD!?1B@__d2i6E z<&zX?qCirRYyBnzslP4V*xh7yY0ygMP%H>VwM3}ND5n4U+v&$B(j*AR$UvB$ez4XE3d zT^|1gH^YFh6TJ7c*s%_Our^+?rMTp0gh;;@>45?na}7p24)##J1nfF-vf>+;gr{uTm+6oE>{(2i z)(NKS9SBni8BAnUkWzuF^PO~^Tn`KQ9{C8R+~=KZ(}anXX}w??Hix_y<(K~zAXAp! znr>FlbFs~BEb!5<5z;xBzD~#U8I)&(;CX@Ma!x2IV<3S=z#GSEJ6&Pdi%pg4uO*?w zHRYywWvvFoDA4Ny=uJ{=AfXiUCu|@Qhz+J!1spI z(j2xN^;akN%>HRA7I?e~;7oG;>1vmsqDb!vBn3Hci9gHcK#`m_L$*=%c4VhE9k77k zI}WCVbxi+epJv}soOJ?cL=S?)3(bXVh+|is@^???{qJKzs2Z3z1K(O*t8a9Ovdj=H zdw(JD?!w62$jUkV=PBc%2TTDwF zQ-1VyMZ5xFd>I3tvl(x|%t6SIJ!B}9@sfbYB>r7wLeD@&5 z876QP+~|=q4vqBAJgXr~ue!7S{Mjgvdl&rH7;xS?@*Ih`)-OIxfxN~}GKqMKPL&2^ zQ=e{r)t&?_FeiSGP*onwKcY;XDimnA0CJZjK%=ApX%pyP=()8H3qm37;S-0L{(SB8 zO(@Va0%##AjTfz#F@m(oAz1a(%dlE_2carm5gNpkDO`X4=_e@82!XSl-29GCLww6QOeaBrv`B^)?jiS%LL431E#j$Z!z= zOM`nO!fuy6g-{P3-yTvvX%XcaDO{cq8{tWp;f|)MzCSERP?;eJwZ6>s)9M>Pp)9FB zbC6NW2*S6Ab2Y=k&sUsBpV=pdou)XW1df6mogoLuX;fdZ^xWoY$_x~72@G}^(|0}k z%NmNK7dTxq2~MUAgRND9-gQHwu^^QA970q10qE#kjx-9C=F{D>WDFfcrb#W!7uy>v zX07BtSVZ$5yxk|BHIBiD#f1F0D;)4jp+_&xjP>p>cTUFw-!@1rkCdrroVSlsrF(51 zC{)k+b9fMN3uU>jYO@G<%EsOHG6l>liwKNGhN0FZ>u%v1Lt~|Fib2~{;8#hHb<>ZbI9USc7D*x>ZIy*%vuoh7 zVS!%`Efh7H>92g>r#r)ou>*49fo;jMP#v(>(7>(AnohC{VTlN?1UEM$6c=#sM8B zvr&Cv%RM)T9QL%TR~&F|LCa(^ed&4QH&P_C&wR>L*_76F=gpd7${e6Y62m>?FIR*K z=rDAmuVK3Ukm)CH8~7cC^4d;Rprf5~jCR0RMtx?WCnF0KmkjC_PPo>nSICif|l>~l7kCD+n=_ZFkZ^%-;d%d_#J1j5vls@whaV*hF`az`!A#Fpp;VE6@*jm+>{_ywS zSl}fN)aJJt#_nIUjz9+8_~FsO?dUwedeMQvzI2VESv`jKZO4*dHn+l z^rHY$fTQ#Mnpgq^(mM=UrZL7;4bI)5h5C3>roV|$5_p`4(wTk%`sphQb;YNZc;eM4 z4WSIw18`_Sga!QPkqGta#q`aNT`xhJxZ40V9%iv{|_ zpRly-#Pl~Tc}pqKUjj%0j-Ke(?nQt=Y1kI4HCz#+-^GGZ*josdy~^}&9wW!-nC6~W zOt7+QDe%k5FA5D#ZRWzHKoa+e(lg3Z!RAEKc+kzvh)9 zA!!iN!HLQahel|{^zE~|>{p0>L4xQba)~8+sthBi5UE~<380W2@PK^kFPM7mbqW;3 zfr7$92+%YcW5@vOeye6Q71ks4^eLu)uA_A?r3n@^Wt0{2biYmq1Ee99b=gs8t?M^Qy0$^mE2s!2O}Ojlsd76!9xS$-SuWc7C=DOI$f`h;XCi|Z$aiWqLE z!C|ty)aHEIIqXIT7IEbbfGd7^RAR)IP-Zl|e-p5TvB6S?@BcZmaxTx50wJ z1e!dI>3d%Ouo$H(=R?)Uubs4jsqp5lYR`LpF)T2}-h?TZ=iS)WpyVNnQ$gS;xN*Jx z+A=7j5l`2<^qSed;3Q>9q5M17*{G*b6$MmBVnyP5AwSYX6%{Ir+(=NJPPpXc=~$q# zI(w%R{(buC@|3HR;OcgeaP^eQRWwU6piB2ogNF9%?`74~uprdu7DBvAJ<9B1_yI*n zYymm&=$NW;PKM*k?71=5sOpYuo9C`5Mk4AkLiPFT{Qb6()ll@f4j==4ZX*9n29U#; z3G|2*M%Tdt57!={_#;eT;j1zgD9}#=sL5FZG)D@M$)VYv zFBv}#90;wS&BxD(--c13pMAR9Tp8U>8!w!7H!FAzJV|xSy*Im2m>WJY&->*u1PEhv zIBcpXA%RoA3PL@2XDhyc=t7F~i@;HEqvy#uWXRB44SA`VMwiX5T^mKdj!<=8P<7SN zi!V{AUj@_<5}z3Tf{a53oF7iJAw<>`G4RoDJWKz}1&gjyqJIgZF$)RNd>PGTagI@Q za)Pfqaj3gx-^K!O-2*4+52i0Sx=w2f<&|@BAF&(J3uK&}4D8maYrk&l?vsT$vA{>u z5vs(mY1==1tAMinCRh%T^03hh{n}~>ki}`&=cwM?x_hL#$Gz)Ic*eEh7JS7wP8LOc zL}_jbnsa0^82zG*0p!ecYO*rIL|9-!4hx7j$xQ!rKigeObXydBth$8|Es{ZmM?k6; z6)r-8)?xvl2WHVam6^VBwcn~yqB}kl(PF$*Q-#%LjtqJuRY=b zVaC96Rf8KOJj9}G1B61E`Wl5?fF9x`U3G=tr)`T2bexZG_$ zOuyn%&>{-u)#FYU5UB2cEyDv{4CQ6QidD0b6gekcaT!X2XIFa>)0ZyWVFu;8CoEnW zlEgW#n+%Hw2G3~Kru)&BD%BRDq*$hJHcJ0CC3+}`S{x%pU1cncu=zG?xt556F;!m(H1^f<_OkDBnxEs;ML=K}TWa*U2_r&c41&$YN7ZzEoW{nzuZOjKsh43LFh zHk@E5T4b0Bqa|1SFrT1Xu=eBYKF`*I-zn5muQdgMNHoiER?W6d%~(j0%4nwlDmk?q zijJ5M;>Gd|xe{IDtPE#0-I(T9O;c@s7#8@J8-Wq$3ADSv(U#qJc6z1RAh`shuOSKd zG;yGbav}XOL0I=aW9#Ffu&v0Sh|B9pTEwN%YOvu_f9fJG-~UAK8D0f^w6K|AlX-oO z_6b!d63C!mhWdD*Klx>k-w*7I*D4I_{dp&_z)!>4xyI*A->vSPWfW+b*JcO-j{e!N zo)jRE-fYr4)t3&=efbA0@D>=^;L}XMykm_F%Ja0~X||d0-0*9h2g>6#m`s|{;KvK) z-gM{bH78M;;esZGT%wKsMMmowvh)s%`qJW@ClbE%M)R3IqQ_5jDbF*4r%fv1`Bg^i z80<}&wa|X(j-MQoD#*Mai;UesZ~3Z z;yf#GrWpy&O<6ce+Tn!$iBK%xp32IPGf|w80_SZq<46A{2`8y}6U}hK!Fj2)lj(m5 zJsnJOQU%VD76j*(G@PcI;o$Ob5p$WoQOU6h6lavc`JN=#ioPukCrLX~0ITVWymk6? z_-Q7^(F>fPatY2IX*kWaYn>fnt3P1+A8#%=L~%q7#h|c;1m|~YILX?z4m^G=pGHeZ zyX#RLgTN_$li=KyhSOX-oY%qo=N}ncb>>NmlP+*-C|lKkNW;<2P=}R5s2smdQhC;2 z%oG^C_Bcq`Y4o4caJ2IZ@Gp;w;qy-KFNRZ`41v=xp5Xi?4X34cUO^dz>e-mS;nZC# zC{Cu&iszmjmn}I-J4;Y(5km39`8Gg_-6beZmY`8+qwh+`f(Of&4G=!@0u=4()C(2P8v!E%gKxl&G(6nr>VNZj(KAxuw z+_m7|$CSn*Xuee1CRi3tl6Evxp>23BI{Pn?UsD>Zpt()rU1CCH(P-Dx!ofPnEob^m zPu^TkX>4Npj3w97VnSunq-Zy8MnKyXF#WzelPgjhyP#=!oX~{HqS4T%0ZIH6rhhf# z$zzmew4murPC;VACDEj4X9Y-UO()ZTbRu&TrExs!*~Ao+MblI}8W<;4k1>5gKgUQ) z;}kRsZA@`lG}_s;VoPD%++zB!lY0!JG%i8Yj>IR&M989PrX3BeH>>el_djPv7El_u zpcz53y~ae!qDj`Yr^WO6rss159h7E_pvfnD9Wf;sw_OusDVR63=}5j4w4 z0p6G>Sv1!z%Hm^vThrWD=&y6Evp| z5SmhwXj*7DZX&n9`gse}2Zx-Ar8N11=GT*irnD>??Z!>eTL^{lfa6>1|EfZ1#tL7c z+C)NA2Kf_f6CjPrX=~ZCd8<_IX3&uJ2$kkZ-t#NQl^h;g0_M}J?1X35Wy%rNA6-hh8 z5ZoT2Fdi(v`umjC6ltPB>VKOc#Y#oe&N_s`LzX?x^smgkwU#0k2&BOzyGu+tnbtu& zk2D0n`Vu^2+n&%y_bAaML6kvqSHzT;Nu=ROf|;`nuZ8zh-o^oxXtK}xr-Do(?FJHF zLdWqV-i0YDTwJ~uriL~=jal+bi zyh2p-(l^UfqG^JtH8F-Um1GiWw<{6?>!Ffmnf_Z_uQ`-xx*!@5M~EuRBxmeLa3ygIp#*-%qQb*-&r+h9f+(#sA*w3lP%hhMYMJWL z&iRIkDEK?3U#0KC4t{0{oT;@4PBkPUF3hZVnXDSR-r=yAsKWES!cGlTrf zn0Vw*_;i3g7QG?WkmoR&%_f6(`y_Q>E&c-2Z;vf;nnKMHP-~hHsOmCC5r)ci7>(K5 z5rMB=r8CoiTKQRa7ChJM#^1YyC;|DCFsTScCWFzex29`q8RB^k)vsgF`;_T?Jk$zlyI#{^MFAmT^EK}jDB zr9>|X=euGdA*vy(#3A!zF=zJk}%ao{#^SDlqt>N z)DC7CJmE~Hw+@(Xp)d;sOiQwQimAn5%4rDW(C4JOttMPtA=T(K=95r4z+ZzD==S6j<#t2v!}26(a%5WOW%GR=rs} z=M~)XVmx5UJiEbq3bsgqb+|%s>dJ8S+^&q&rrNESf&eF&-#A%6AfN5CE*3aFh7z25 zGK{%`lbWVs&s*wE^wFKY?1cX%LDah`A*wHt$gCj|PT8er`ptKr+Cqtzc!m6xAVdvh z?CfJA?N)z5^I>A*tG^{TAzIxJ|Oz!&~doD}!LZA~|3n5@Qh?XJ;`06*^< z(_g6j;WsGq!P_8(f@mO~eo@trWh^h0;*+VQl96^doxpg9^k(`4k&U`gsC@$JX>v?k z^&=!F&a`Q=c1IP#>Ci@eUq5EawZjzWoWL1D^88gjBBR%38FMvhpu*1+f`V)wF zs?Q6_2Z~c7k-#R%K$78A{ZK})8|}8)9VV@M9cw0lD#imdewx@XltPJo2tlTo3DjX3 zz0P5CX?dCy3XWYAzqh@$fA$WF^Vg$$;8j0B67F-l-CDQLbMOiN*_80NCsQDi0)YZo zJtSi}n{PIyX^a#ED~8}&OuxZ=z9NbWY7F8PZxTaF&m;_%HM?rKTMVn92wo^>#KH}i zP?5pMy4+@ zdL=%iz$p;ikJg}zX@n%CK){(%3>MW_qbI(2h1RGAY4Q})S6>ugit>yRJPL12W54{L zBJh~3cDGBj;@hFH9xcHOhpv8e%&(LvM-UAqtrXKlN()&ndY3`rvaOt^%~QcY!StZ2 z6`s$k`n&-xDb83?Iy8>l`Ho4Jful)|QcuvS)>z<|1UOus*__kM~qPT(~Egy1xn zVGsbvu6L>~CER6McPvUW&#+hcPd18WwRgu0o=zkSPfQAuP%$*qY)jM3S{HMG-?@+J zdw!JOm%>aCFyxpS#k7!N-7;1$4{qNlLXf66$Gob43mJd)b}}0*dNodAk=U&EQ0t=j~AP5??8Db z`}Dasa(FbEfxseo>fb4Vr5Y^ny0l>WqaDr;pgdE2c-qRCflOI8Teee+=IPxG{=WgN z*0#LC^e1OcX-9FU`rx#a(L5%LUW4Y@wJ13i3;cFiQm;E@R9n*Zq_h(W(B^9cm*?AOKDEXsAr?ta|GK8m~-{mkCf`879qY%mJ&Wy0g7_01FHp511^TbNp`f z!!ZO5Gs9z>Cbm+xst+c6fh5(5txB8On^)6ntyGJop-UoTXuN9SxjGL%HS6$$|ezk zQ;Mt@Vg|`*7Y)kAY#-r#2MeD1LCP_G-j|Ez?(V<+~U2JBXqf3^}=6o~^CGZZoX#H(0@SMA0I9+A>gUynD`yoDb6!8J2HwcKV~fTHtp4vkHTi%8TK1X~sSBuUX?V2Pw^Y zADXE$j08A9T1`&7HqIY|1)#uRjNwP>4_^OZ4TZYk12s*C`v6cjt6D?uiFkd7XV`g| zXD4+=!NYiu3r_74OmV*Q!I}Q}!zndAj@(dG$@9jYtM{{Vtwm_HA~7+aywj)ZtDgT5Mu+n()l?>Y&OT1`Px z{*C_XA&cdhEpR4~I|(s!k%U+di{4<@yRua8AdY<=3;gyb(1G|te6h1L_EDZWf@cLO zM<4S%^5+gk;5=@JIY|SiJ?nlxjs?E&Q3%!GyP}SR$qy;hT*0(qD`A=^r;SYJG+V9) zcS5khZ~&gFA$*s&TK;*;^St0Ws)T>PAdAPKzFc0yF9)z76n_f*pTkUl_Vt4wQJ#4| zMs7ax=jL0WJXspV66Wo*V1b_o=QJ*z|D_c_=1`g!d}tQPFxeK9#ptrx%&MbTUw(C@ za%ZOuJaIQW)Bn`=#qTN6d_klT$1IdalxH_;5RVwPsup^Cil*XG0>T`184K{WCU zLi8f?=lW=XME!thsKccGl1pLMo(Wi#C2Q;YOyB8r{dp8=p+L%6MvxZCm{*~ZOc`pA z<@UTi$b|)=u%ie?=P`Y+@X5&(=S6|@<{^T!SW2IBn_VUiq7C+R?H!B-9&xs}n`x=s zC!P{55=4hcC7qa;q*yt(%c$Nledh}-@VjA+SBBp@=oY;DSxU25(0okFPR1;eL1Q(# z90v6P)6=oQGs42I?|7#Fw(@~{l;$NtbDrc1iCHRRMzvbCh-W8WY5uK`5sEF2P&>{u zqjp>t^}0pO^2;0h=7c3^?$dmTRUE7MmD>)40lEEPCLQuRD$xeRk{ zb!p|3ew_5C(n4k63A*z5!*2)FT|$wT`FIH{kUuB&0U`x_H-2c>&i(rh8p_Wa-m3NM zO)LnNfZtrT4b%4++9QpkEcZcKi6mS=vZtptO1BwQwablS=^oRScM;NcM`#?c(%AM? zRV}m=z5Hk=imfJPOxWy3^*KP3Rz3#O|MkK6e@`7M?o;x$1upVY{V z)k*1cc8AI8Qt7>HO4}HN1)dNq$pL84DY8z+wd#8tB zfsbwn^VW*#pKGv!UDMwrXzCgXO+6WnqokTt+t(_L5AqDk{~V#}y8+@T(p%{a1`9w1~RrZ9I9{cdfu6U z1wINAdy(l+UU+vFMcFD)vI_`GLm6J1!-!MK867Uo606{RjKz#h-(t-ac80S}5EU2* z5zix6T2rD-V{WQ5&+5{v--KS9fdxL=5gdZXO#flwyZ0&78v<$u$;uepSjqr0W;)$! zS3kQ$7T;9{Pze0>QVp2CbJiM`)@!@KdF6M4(?rHbn!{*UJ@XtreBaY$b3b^*nF#gg zhq|qHeAtP?yy@lVBodgWGG-o!F;{&W#Bns!txn0&5r;LA5^T z2cY8&?2urGU{aW4lcg}((rhlf-r-cAx$v!+Nm#(~ZwprV0@HUNm7YkMb_%98q~1tu za~XrkX~`sNA40zcgw)(XRz{%Yr;KT@3CUegaL zSP|P&N@vS5t3RN=+$7C2>^yww;Uf@=ex2!$l}l!m=^jDz4!K_%+e%L3XmEp6lP@>zc6N5Zdo^|wVn=8;S)U7X03UA1Y^sLF@G9wY@0T79XrH{4r30 zV(A?YeO`vuSroAUV5Iic$v%w*K3WH%cwU?M;?l`KQn0N)U|;&Pat;)%69yaLVApdV zGgiuY#@5G-?dW*<`>}G0j7IXPA^$j5{`rBu|8?&^Sk<9(Wcl@2;N?&7r(fcW`>OX9 zyfSn5;sV(J_Pw9>$36vr72r5YHCaur)Krz_2?S8&7=-Hb)WiReyYm3AqUav}+!RPc z34|mh5JKoZ(m{F%2?Pj)gx-YY7p7W6B+%~_RnKNh3%$zy$&cSH}=u-(u0Iqjf&fuXG z2x>+N%foy7n^?di{(;c*bHv`Bc6(0(Vfl=yoFgJjh=wegnI1luqSV^kQ)EPw?Ct#OKaKhqlK6RfWo zte@pfsFY#}R4UDv<6JE)@F(8%Ls!Q9I!zu!Xtqc+0&TtHNX8X7Wui%ksfXL*u&Zx+ zFJnRebN8YO)9^m!aqtz({;?%}Oh)%r%;uTt%byx2Z!lA1pAT zvV*Dc6ZO?MZwe-CA2DnvW!0EMw*D47XLQ9`v$zaC`&bDZ=PqD@&vut(qJNQ0w2#In zIyp{NPpNaO4;Cbx9i_9x(HUbp^K?~aZ)N)ZDOvXU#J}RXY@T=UXDkSH_z)SYe@o}p zCx2*0fVMF}r{%2dDFsT7(+maSy;$c(efxQX{w65f8I&_f#+C);C}lBW4@0UJ`X&~5 zcPc^=v7-L%%y|<@H(%}5&3WW{XXQk?ly>uEqsOKA$aBdx6g&^1mNdKI`fk7b5}Y*> zP9(oUrrtR@t6++8`WrJ;4=>esVgY|2468YSO!nVv{Bo590<)Ge!RL{T3&WMd@W+_= zsj*h0%h`L4upm_HdxR`BA+)b^OF4q}F@ttNPBdRB8jT+nXfw}8_WsBgD!&2YlA zPT~=G>s^#JrBTRZ7kIQX50uLnzN6w2QU6?M-*m#Y-iwQWz1}4xV=seJt`rw%vJj$2 zcmVKB4LxLe0GA~XpsL0mK#I%ZPg-|-5D!~r z_D*KdxgyIUIQj2{GIk&O2@4D#>%g?t5%q6g`hX)q-*^G>!1b=m8bwbkZBwM4+?pXh zIK7EGw&?&t`c^_}@*%LpH_rvBQyG3*CUGVGTQM{a;fpBswDmt zC(E?m&@V2VI-s|j*0g@+j1gGir8!Wz<)Z$#6OLm%UX|J3Gsf(uEMxY|zZHF2j|B#C znEE%GEjFcLM^-N)K)V>ATe7-`LLjIajhr*DN`i63Z>OkV)%2xKglRX!bX%5zR>+j* zF?uX+kHzFxUrkl9Ak=0tLPveXYU1ucyPov;O-zsfO^;|st_`1}(a4Kl{d*lOfP4=; z>BXWxW6jJ@2-RkW>W&`X*$_A9Qf!$^NbpqDeg>4Rav_W+bY1!G#Tq!agm)@@!t5>U zigeh;h?o7++4sgy%D_!(04KF`?a&9=l@fX7x9z75Uyz5;D_-Lh*ak{c)SGJf22yKKIJ( z#BTx$?SXXI)tu%qMkW%#+hQmC9?gn1M`K}^F+ax0A1fHn3E<-C2O;mr!?;nSjU;+1e z8bZzJx!XT7POc?9+a(@1e)OObG`bO6kVqWe+jvr6l;1ZRiW zZeTtH6qT*b3w)OVeJ266;TO6>lXWo&1-1-_ zRsH#zxmcjJrGkCCA?pA7=!|IJzL#(w=a(5n2k22h9%F{xXtx(=mWenLp8a5&>S@i3 zJH#WAyBLpWpdJRn!&&W|M}q??ej#0j)818fBh)@h)Tf!+nhDWviAW$0P0^)_IGa<8 z>?yv1=Y?D&)xhf+M6*DCV*gak{jf&@nkgLkzNbqSWxF_|S%YD zyr_Tin_l8M&;63ku5*G1`dgR&<1(7K3=OWK{(4RaEbvl346F`Oe{uP+(S+!LM3f|$ zxPSBrj(F6kPia}_c_BBH@3-)AT05uuy|#|9{3x;X-^4F8B3(L<204{C{A}Ed1-|=J zm;=!x(sgD`*+6IxN;E_2@-zlL=5wAxEy4$zzhCtn7KGZ&LuflqI{N1Mg(nElq2lgA zn2#QoI@hJaVb#sQ-r=wy)EK;*xpbG<7a?Xh!8y#}`07zT0*>k0zsZN0aup=oJeVC?Qw`f4VbqXn#v<0`!vvBmjr`>k+QXRex~3 zD5%FdA$s5sQ?zP-iTd~VeDgbjIV!<4y~M+m)1!9qvQ{sPNp1XXWADY4u;AV5VBP4Q zbf<2O5Nqd{1k{bMy|D6n0rj`IRRi-T86o7Qd z-GzbDGznSJ7-;~EmEoUJi``@8;{@rrSJoc>s^_pkq(cIt++5Xb47cCMf>1E%5~_;& zOzTI%14}o9F1IS)G3M6BAjS zW?X~Hy5MM%W+b}XU?I&&jcEvR)DhizG+10HIm6%t>(PA*Em{P1Hjj)8!2$)W0lz?f zgOM+G-iUmk8w@f+;t_ZwF6&V}Mh};7Q9Y1$U+Q1fe#T0KV!&Kyj1%>rF10ivI5w}e zcUO6wOM2kMI~+L{uH?`mWJP}941vw_zrG3^=!yg+ z07smc6AMrZWOSP>YBO7IT=f1tEZ|jb2TyDO)%%QWMQE-{G*$R56cOj-m@K6<*+zGI z4p*RA?cjGu(B}4-&F3iL`Bma+c#h{es|OFxM&mS^wQFtQ{Fnb#)H~~y|Ag>dlX$uh zR#xq!FbzAGM7*t;c|$#d$o;CH2Z%ThGtG#v)8JO|3=! z5@YOE!t<7gq^Gw%*FCY!j<-LXIcCxaVG_nWQh*X9JVs_zw_7DoK2$4Zz}{Wjs5SDwZK zonR_LEvf!c^w}YVMcPtJSR)STF^6*V`?%E(-~lzKVF8=~gqocY_3g*pd70pN&DiJi z9Y12f9moe!StCn*=6exMXju9)FTJqd|I7}Xx;xq4 zt5!7pXn(Mcn-B`7i@r^MyO#-Qqd~?LKfV;PN7gfs`*-Hyy*~I=O#2FqJe5>}O3}D^dBze}eoa@d&(8vhHV5$^$GghO0c9T{Jvvfq+wcAwqM) zX{fsI{$LdHL;=X;;?>irI+BxIQXvk9?*_}rwOGxHXX6ir0s${$079W3i2C~PwR)96 zO<|zI;>bNLFl4~69@1Xa-&!_x0Rb{gKmu^YP9!G>gHj+a z-^4jR7KdH+fv{drOc#9PN>Iv<{YCxGt404IOq|3N)17D9p$8M+EAakx^=FfNO>c?? ze2+qy&(gKqI?Ja%L6|Znrs4cffr#z0+)0H@*+#qBs-EX`=ijivM~@>^m+pdU+~a5_ z;mMMCUVM({*``NF0*in{(`p;t#$Kme6-n=?3C{wCCkW|riq+9IG^=(1bvS*pF5kz+e!0ncnULQ(fc{n~SNdlMk9 zybxI%d7uD2np+-c%yDsQPpobHaM(>OV5ML(TZv}$sWP|ia#X(IT#%O}o~QXk(^0zI zS)87pnd`}QajKo?qDr@m$UU+x5h|b?1p6j=HW4JRqx$ps*Ps1!Rg^rv@SRovbAG~u~Y+#*CZ(8D4)3&6%b@`9^owc%UKqw*8qD9wL~%9Q+< z3VQf2E{ogbaI0}(Hr~J44V*`C2Mx=ie~cFOb7$skK;`q`;pd$xKI%ttsKm@RUZegp zg`+;t!r3QUT*cF0DyG^L_q+p|(;b+zz_8JX9^EjES=EtHon@%ZCHHu>R8E{dP8|}i zC@cv1_CzQ!NYo!`|G0>BjzKc%g5=0`SzEJ6$|C?@o%F>5FTvDQ;Eig%p~uXn&*0?#DO%ibz4?OY58;yD7L5^l>og6&+82x?NK=^RR)}=SPl2PA zP7@QIQSO=DzWxgq_!Fmrr3T^shKt*vil`$8kjS*;G3 zUS>KRB~D_Z?!Y7l$P7a9N*OEbq)KCDfW~7b$54)COqmZqJC1uv9kn+ znOD{spa+f+N74=lyt4B2PLH8eVwVvdW=>g$rmHKjA&w2E$tqzsH<9UL`Q+8JPaE{4#|w&H{XWj7>A1dN7+@LeswvJ+giW;km%@^ecIwRKsI(n6cZe z*03cFZUjUXz_3MuH`77XH(U1ILPB(rA?m9~4GGy1Ra=Aaqdvs~zdso!Dep@QviW|5 z=Muw{q=z+d7uY?n2NlqE_|nZL$P z8D}$Etg0H))n9^(+Rs=ECHw2B^k4DFHh=!H84I|V zFzg4Or7L{dyDt-T&ii{}u~EAyX0R7$)kwy!*^?g42M(=_zZdREX1?vvV$^(9hMixXNwQ{1Ej_0w!OVgngx9JMg zw)8!Os0l;VO%E%FiFz8{>Z|CDr?Ef*Z~_gwIcrP*p0x>3QwFH3UR9K2)1c9%M1GA0 zN&t?RAHDqM<9(yPBt*>^qAs#rv@#HB)sa5W!2*M83VdRds9$M|-b9$1GfbWJYIcK} z+y`ZFf9|!%0uOu+Lapd6x%-c7Xj&tWeS zoLC0u@scCzWycx9ZkAO}^X^$kQL8#NptXVLQ@)X?Kisb2lPDzcE0C{?)6_qthfPQq zPARo+rJiUD7AV0z?>h(jta)lUA==6i9n_PkwOXQ2&U}dlI>P~ks?!Vdf_&og3DI_j z=tm@HtAj$K3>bvkx5airEz*%O6JTyV0HLav5b8=p1tZ$FJx7psFh~dV@P6X6u~ATM zQXIdbpQ%vC&#|S0xwO5lF&u>0sERQB2@bsDtbD;n#NQE9Cq!% z&Mv?LLlTUejc1GcyjvmF3D`jfY_A>$VnVLN>9S~HAg-QVD0HacR}tz|Q`FCk+hrq2 z+lnJKJg*0ma1oo)Y*yW=>Wtli1%3cbcm;Z{epAJ1UCFv=4zn)WvEc~>NUT~v@4GUDxRv6Uj$^SRT zc@hcB6o#d(EKgb?3%>qNwI^NhsT~WvG!{y*RMZzfRrzrg5;O>82xElz$Z`P`(>Uy$ zTQh4FI2@s-G~eT_?ehbPwPNvKd`Dxy}sr@sEv1W0naS`9mfm)QjqO zw3xDrAgyGOT8l_w8X~1xY)&gTJh^{rO8mnv%vHXw^ZcDTSfH%+p*vj?^>1C>kb)|` zUKQlc;%IfR>M^!>vMp+xUQsu$nNUyFV_}vnMRn$O{2W!8xea7zahQ6Rl4o!#HW0Zz zE~m$0QytU!qpk%Dv^*$dvkRhrdY^?g3DI4KD7$1!r()>mjLr#aXTyWl(>734PTgsn&CN{Pu^<#$git?v#`fszS^ZI! z*;7EK79TU~(Q_$}+y;F};j)g}9o-TN60VUa|6clPLOp`=1cPGI14Z?YZVAPA9{6QX z(3oJ9ttmm7#-L=#^2-#W3?7k^kXCYcIEzJgcQESQ9fS_7Y7}2^W;+%zlF){#%op|c z>(zgQhdvwR1?ItzljYnWRQBMrTu!wf31#8;($OXLkD~vRO<3kIEa|fP!$F<9cF8E^ zKLkq^N3B%D#Zd(1MFwT89@XN^GpjUH5(_>BYv?2D&*UztLRjW9EMxSj7S(3TtA*Wz zPtd8bW#rN;1mz_LWwfjbmqL`Zf${wk2CMaY1Nznwj{H`IkM^Xe<;K_SHkf!K9T`t# zlpZd;n^Qd*E{cBov;b2j0-=^G=#oW?X3Gf7Fa~C1$#EAI^ARrJgEQ=xywU78EbzrW zQAog=(ngW`yOHJ_&F)Mit1E7^IYZS`FV_!GaK98TtdFAiyN9<;oQy&O%^(~Tg4iW1 z+I9V3iFOsCj#aS0*Y^UbX`=qMgveJ3P$mQPy)0{`5Xh|dR7{co-5ElU@P`q*?j-7L zeHs5ELCIoJzLVutDMoQ*j8{8t`e*ex;UsLiR2ULz=IxU`-kL&avKg9hWv$;Srg3p5 z)q8zN?feMiLJHIlJ@()1!mL*akA>m+MvtCj&TwaQ)`@B(4n zF8#ic0F7sWcIpGfAH7yRqEzkG5P-gduZQ2SU={V-_gR(_pd1EhhdwP%%u-hJfYPj- zFrWmQOC318y+wCw}j2=!itZL7J^|FcjgNd(T?~bwDAd~E)@i1 zH0HXfRbW*@mCI0lrknNS>=V;XR)<@=%JPAV3fL^_+qAB5|Cf!D;3AtRZM&<$Bo$_GyA{UDKCpv80L69afNE>xSg6X$i{q(zjx_}h)JwjdR z3CXRg+Zzxh<_?hh8+7xHJlQyHv+B9VvvY)94E|%GjEzP8wM%Jp_()?&z@g$H(E969 ziT9e6Jp^jbwb=?ZgaU!?R2hb*k)nQO%P;#7sKX4@IuR;FCn$?OtKsuBi8fJFC{=9GC*r&t>GvHGCAy-mMqo#d>%hrRQOwnkfO;{ zgH9eUZ4M$hD;b>CdejfO8$h*(-Qk)3V8md46Bde43SE>!HIFwV{rzvIzkj5M5wkhW zxmGUIV%Okw!`-7#6~(W>mjld0X!~-ysxZCoL;)(W90RpVkHsm6)5GsBS6fTX|9Bk> z3^ibtE5?ZWXNG(mOn@peKr2g*jg}qAnUf{&c42we_(P=mmJQJw^IJB|MpvH2u5Lhl z>L?a4M(trPLk-yXJ98RBZ(k3xf$8xpWUWwLRo3HG?_iQp5MKYFcievBvn!mSY-CWD z>w!}8-NKVZ!C9p*D0^ z^@2|ZWfC6taP0d!@f0{Yw`TR@R~MSkpQ8RmgK1R=4|_EBJz3K%r94ijm2-nPY~?g# z!Uvek(XG{$5<9$3n3#iN^_R#BmX(Fc<1*&ijOs&6l**6_B{7Nmvzv~HJ&8T?`)J=AQiEy}+LR+u?4jRxbb)eZP2_C3Rt+-K@KBZuU&BvC zL7%@V>RaA_dl7-!$w0j=D`ch+iqCnHE*$OC#_IW=0xJc1HF#z{i-4MX&n9z7}p z+yJY?WPHd~bSfHO@JN_xa-#mP4;%Ops&5&pH)Tc5lv3e~J~bPjc%)iTNkb3P6~#ZM zKS7Y#L+6Wisi<5$+brb<(@C`gizYRT5`4FyFH7~^79qMZqFkxITj?eC_TA!*t_+7t zzyHZxEI4EcLMO(*aa-F0-OnJ$nTX{=Su_1B|4JlA8gUQ~TZD-Eyf<7i1n2|$be2K-kF4pAawIF4 zFp;x+G-z_-xP$MRrdI{}UhCeKFr8zVUXkT)mW8PgXLV{uRPj1O?ddvMrKLZKBk6gD z=w(^60)<3^SDuXhg-P2D91Wv(tLy>&wQ;IHW|2+Cy!*baLv|Z@zEHn&y z^M%MMgylBFG6TuE3`Qx7%cvcU&mCwubW8EQxb>F_%x?_LGkW-=7>2)lNIN2!ua>9z zsVao5Z%v5qFhozwS~^uor1ga1fu0k-==M;8^E-p{lpZ}t)2YG(J!i(RlV=c?KNyzj zdi0z`OPSUelc)A*L)P)GlT?Xb!JtA-z#;wzQq5Ih1#PGpA zhGv=`^Myq1<_mmilx7cX8RUPLp!~_8JfVjHNOV}uoOV8SKwE_B(VOAEUh)1af^(n2 znW~2?AmC`|Qhy4+K$C=h@Pl&%;rWZJG^@fw0`m_8Gf9u>TT)LUJf$5Fj>Xe+V5w)n?I{3NKnzf!9`kGwC^grvLE6BQ zoPxpI`c)=e28OFZ52ql>q+K0V9F0)t-J<@@z+?Leix0z+uZKNIGHJ4#;Gy;)p~apB zgvOVl$9uJbU%R@O2z78hAZ1HFqLiGI=o;uz6`g_=p z&4j8vL*>>Z+MCRoEyiA)+vL*8CRBZU$yS0Cz#zHwunEbWJy$are=x#TXf!^(j(-w? z31na<=wTBuj9%vY_*F+Cp$TGWoVrwv)x+sDhwJk4p6>`u1qQ~U#~f~uS*JN%dZj=5 z6O@V!id~O6+#s_fGgHGk&rbLO8gHMtW^oF^sl?#ekPaIT2K5>UI3^dz*>!4d^SBBm z{!yVa!(`Q^wQ1+)lp6`&bX!qhyZjuo?pq<4LCMi02s$X&V#?{|GUjPU)MN`ni|MsP z8=p(tMTn{}MB{ZM8m#G*2j6s^LWy>TZ6icg86t}wQ=U`}gKY-*YM;8I{)hS*e-oAv zh9z5%+5r|vuFIrl`0#=4h(B}=d5jQMV~Dc!@CwpQLQYRTrq}N;`r&m#6UxwJ>e1HH z>}H)d9HBbHz9KAP3=5}6TLTtLw!@L5U0bU>AECDNBR9vrSU`xv86vYTZ4Ix->okm> zu6yBoLQ|cgG3hak4o=X{tR08x+YM2_cgMCj2ucKllA%ZVP@Iiw7kcjo)l-{>*{QYN%D_=@I-w= zw3{IsjdVCCn_zSolx=HH>9zFQYGg>gIdys4nuKW&!!$~k)mF&Fxm*sHMwOIScmmu| zsHE{PiTZ*WapGyxy$sMuJt|2^N}}0`zP@dq2DhyxLWS!@{jmS!M-ird4ATfbx>BOc zXyb-CTsfK;h%`mk4rD{StTV-$A?%w7JFK*#lyK(HkXN5;H9=uibC4*o4BAaSEvON zjjxb+pt%f|WpFPmYcATI5Y58^tp&W1V7e3PobzrD0jkXarO8@|QV2xqD4nmQl5-6y zYgDOHqpF~Bql$N!xnV|^%i?fp6u*RzR@)-#|EW5A8X(4i)L|-MkgOJU>ECKm1St3n zLMhY}PWb%Ds|2Vn1C$~Hg=z@oRYU1+(yFu}>o^=4n$py;Z~V1z9wDp8kPQ^cA~hsS z<~%M(9_Pw&r>A9eRx9l^8m+NI#ra>Qv6-p+hY-B_4Bh}eT4E|UA=l#KvEgd-*$9xY3-3u6^*!3&pG$xmGeCVsplA(&k}W2e z!|llQq$k-uoXgI6(#0Cnj1h0N@uT0fz5nC+gs}<3m?W#uC}bSKdE6$Wlhew!iCFJI z)zKtowwdOd1gj~7)khC3(Y9%gbsS7K-O$nY@QDI~)r`UFtp^rk;WWY;EnE#G{CjqL zCkw%9&R`|VnlUTH8j{*yV>z^IiouJM zH7!+$mtb^REznnBn6+s~HEyGp6-xi-$FRSq@+RlXy5 zIdo{fIOg|N1gZ@K)m?-N*AR+7OT{-rJlivAlM6`fW%ChgHAmF{mfh?&VQb53{_V>njxWrQAoqSRjx8Z5pe2 zoLk?bt(C6`_0^hM!lzH%6>UZ*2CSnV^(Cy=do{xn)=MfCO==b`+k5SxUo1tO$f|z) zBmJg==U|7yh~92siX7tvzRnGbEhNq{0`X zzSdiR4<$(58KgF{I=(_A8adInrpm*ts0Q6j^~I=XiwIT^2CKCmSlW+2LTy12{b>S? z^cllv5Ue-`tCffqrUw=dp=jK=&0&_;`&RWRw8_xa9aj!aO5ZZ4R_3;~SeNBK88KCB}0;vjt_*AKB{5}|srw)Pj5o)kR z)OVU-A3(@@Gi1$V^&5p`$wrgK?s2%Y)8id>J7@A(CR#iN>G4*hhVhiTU=gS@QTeTw z?-0g53}aJ~v8INM^srXCn88l#l?x|A<>)!}T_Lec31AWf*hG&?d?+ApvNr7)4d4*@ z_>1~`pN3s0jC~o##;gIRu%s9&@w z{{+G6&tNq~a(2`z#2Som2iKUXTtzVI)Oim%F(QaCB{NJ7WKFY_GJz|oF%q5+*RLe% zJN&p~9YGqvAk~)@I8us)14jdlHqKqz`ruhbu2MbyA}oVBm(5}~S~aq2@H`BcMg1n9 z1+#%~AV>;R0d-}0N@xCMPbr{2IjhD0^PH;Rp8ySFfa=JyXJ?dl5}|su>L_Hx_H*}< z;jN{j{`Cs~$tN4O4=@|HV~`HJ>1{?6IrX5`Zu;`&V7Pfq)CbksB3|J3BSTah$vG3L zoG4SngHWMR7U}_cnm7K8&>UoFqLB_)G69Xlt>KkSV3*6mOrlD2N3okX+={w`Sc4CnyeUPs{eKYbs$n%rHgi!ITWvE-ryTnxYv~;01(g&@wLRWtu~n zjxbC$kq%d9rC9Qljm}}L-S(2GZe-m(yx-d#siW z%`8OFafIrADC+;bUTy*bI?4b=>e2KjTFjgS-!-pcB?WXsD3We^@73jtJA~;N!xW*1 z)hqL9W5&UAZTv#8dNmh=Q!+r*SM;PTLLpOzfY^&8H42dxZ&ljvEHriwbY=La4`7WbjX51G$-J(O8*8IbIM$q!t>9iY@0ZyJ=jtElkqW_Sr-Do&qK zcJ{bW!K9`N3oUtI@cOBv3fB`JgnH2E$l~&F z`7{&2`bPJD!~%cf%_8(L*Wx`3RuL|*G*tq3SXjwMwCr5izXI3ZlkX{|S#6iqtiq*c z<)?A8>e(};Kvi2>H>oZbg#3GeQ%672ci>;^c|OApCiPTU^^yl;ub(=maQ*?Ma@f;E@sTV_7VjjuT zv*+-^sZC9^em1o3kcUNji$8d^fn7s>eaVb`+AIV4uz3B{EMKydu7V}k9%FRJ2-Q^b zpwJ9&CEg{gTQt_MTR7ZCo9rg!j|}c?YsLd}qt3^+6-|no4KHTGgcO%C0}snVlZMYn zL4MDG%qafYqrOHZZa4PgQ0RLPOpCL{nuO%^Zfi-yTn#Mn=WbaKzNz%!D{K7VN%P=5 zoXH~`GB+5e$!hsfW$wX_f;3U_ani7@Sfsbq8jDby6yuW%?(?LE8%-F?)Ld4}R~QQ( z=;Z7ISAR=}N~9fFypRB;-6yUc{xJlp>4QjZQo`uYhA_R5V)87W?3e**N^Gv#W6p4U z%PISIaR_>3fI&6wJXl{Jo>Da$zG-2%%xjsVYYEbt3$!REdv>ObkX z{wc!LoMC!QmOrA9sZ@VN?EgQ=>i^xP{vV)m|4+;2TvmrEN6B-yxZTc7yE#)-tldAQ z0~UA*#%rIp!bO}x_Nd)kr}2!28(klK?mlh9ddM=q7s}F>T9_RsckF{%qRIl*4hy^l zPP-4@h42%Gn%SZG3nW>)l!-|xPw@`F_J=<8u)s@pC}fhTf9zt19KzFs>G1J-@W`5g zK!-Q@BHw*QrFHnojZ%lNsBwo+vKh1Z+qXHFTg^md{f#=EvB1NGN8y($>aUGx^b+!m zdJE+3;?F*E11fPdf%MO3l(J`^knefKT8Q!))=Fb67H}i`!hpYD)JMD+wv2$iBY_Fv zk?Tud3n@DoUscIQlS-hXN}rF!0w0}=Q0-Smy>aQ1Tmtm21XQ;H5428>W2O`+*)h?= z4e?lthi{cf9;C(x_2heyezxVR^8{&$gcSD)kMyye8KY99ROtB0+#^Q$no#_5Fzb7- zv`$~sU+VNh8h84^#tf5{GuqX~u{QLb_c<1rWPJ$ZHeDrbnfmU_K)45FFEh9Glhu&& zls$EcM{VeVBH<1H<*BE?|BWtf2+}?YNkFdYi%Q(Uq6v}^g?Mx%%MgIdZ-t>O=8&k)@cM!D zXJ+lWvbyo|viKuvTGGZQuVi9@m$m>yRl33#(c@dfGJs+6$nh7;#)6-9=@SscuxT6sU1CvN`kI1#S;#Q?(k?^2r@opp-EC3)m;>J$WfZ0Wbk1vG~KUdl{9u zVaw~`f2r)@Q=F1lVq!t?aj5;WR$_WdD={*HZby_Xf%W2Sj)ymos{63O_f;0ww;o-_ zh-$@}hySC>=+hV}D5C}Eo^o3)PNmJm`zqcKcX#cL1%A8}e1ZlBPTl@&Di3K`@mTTZ z5fLh@Z#FFr#{WT=PQ>YN$%r+nWa@*3cQ3r|2q{{f=ORokB_@G6B20ItY?Vw&Sm52^ z2!($q>RZ=7wT3XYl9&Sd(K;er)@ZDdi8ec%!<=j7lvh=9nuN6}uVV)+(3_zzwSP*~ zS2_I5pS&F~+~_H742hY?_j{U{>5*&23KKIK@!6avRKxfyU&0b)#d{S};jFG^i#>}+Dq*~f!UBIDAcptRMz^;jx9Osi z@y=wlTFq9gDp#Y{uFhDX(PqGm^E7>9?;E#xM8l0iOxUB3to1U5IVXj%hnkW5f?wMAB zP^C#!mH9hu!}`h!9x9~raBh#pR6^&dg$4fnQC8>ZCv^^Atvg4SMa^ShH6s2SEbu4J zx0?d(WH*ELz zu~@=1jA0retAnUua+M)+`#|(CcSAcYP|USp#@-P1-C}?0NT`N0R0H*>DKKGHkxY4~ z_Z|?}H@cjJ1wQ%?Le=Q)=shP_J4^<|UebUlFo)5k)Bzd}h`5H-4(}T;4jPLEIyux( zdAdXL+W3&pgeF0viCDwa43ZUFzo^U?<7^q6`4M9~ovc)nHCYLk%$L8$lNG+CY8>E= z7gM6JKnV-s6BM>Zts&ESK*I`V1v8?Gtbj-pWe?p9b3!36-{b}mn09$8Uj<1k_A~sLm-#W`ynk=jf0^r zz9|~MA2%8JX!6L289=2@q1G}OfD0})@XH8gBuIH8(iKh z^iY3vE569s8YN2BNFWXytjA7kfWJ%>b+p5MFpshY46I`;fla(ez@Sv`NG?mfS?%AOyC z1$zBDn0C-((0^Rs|2)rVxG|1tP@`n^{9nu3pjvCt^Fy(~lYbpd8l8Ep>Yh|Upo|RE zXjwg91(fDJe+cwhk`!GF! ztd2duwdzUL`d@lozyiH#D?(8pi~3`;hJHYhlDs0pJaSmN9!Qxkjw>uBW{Qm&J~e+t zmN6TLlx$y6WXy0GV=ef=sgj4EGNAVZ=4^eVOUJPw)czhq9iA5Tg{>EU!BZM;n3-N; zl-2XEDfEh6oYBMCj5%Da)1IZqM1LIiOJyuj$c6CuX-4X$%g47TOdP|MAHy|4ixowE2hT~qD+ZMAPzIh>LN;s@Y0Xb<8Wz*6ub~;KM?iJme>~) zq$~-kRveE+FC?#^A(F!>k@{oobIgAa? z0|#hh$yU$u#{x(-VC1G(gIK!lUPX|c5>m`P9?2nVW~mU#VKqw)PyKwkI~K3^`~h!! zW$x)8#EP20v^}S+-mi*E?W!u&lmQEjIa8rQ(Q`j9HM$T)xLgd^1U(v{j#Xsd>(}(s?(aAWqI^iTAPfe$7GGAx%!1^oi2;rV^J0Z zc*tfWKP>PZcEf1@v#5XO(ApL}qv6IxrZr8J)kSV9Y)yow7r)k8@QB$9p5y*3>*43= zH+z|Y(^q>eHno1t*rMSFj8IB=80F}6(zNQ?sXV0NMn3cO^JR^Yx0F47{&ZE6UAVhQ zy(=>gsFuKQzzinnBT?UB$gw_zsz9O=sKW}7jMIHesfKc{f;0;bzouA?1^j`ZQabf< zS?#J&zjh_2&vdKn)#D~$fk!$S#&f#((shF^kcTwfn8dWJNwQ{Kw-x%w4rhUjbE}^d zKaK@nIt4s*zj~{oTt&h&S>h3R!zSy&gELIJO1{-gYDgz#HKZregZqgzY)H_I>}E9& zeMRa^Z()Hh3O-RV4G&+au;e@sXt*(*X++bJoGod0lm=5>swX2WX4Jon1-={Hi%N7$ zqVildf=hRIS|mOgO@3%oQBe&S70etPokjh^Q?p+uj(4);cnhpyv-DU~6l+Gq zWzt$_z^|dzwr9rP$pmSDgp~L^k2G74Xk)JXk!z$T}UTfCs(SdnLRdpOm7Vq`@d zLg8}}N~7187o0tOiw88^n9cNwIpRYPeAGj~tL&lU$6cmwQ4A*oa7H3j6$;sXgs7i8 zD#1)}UXXAE+^`o>iK&Ilj^obL24?t=MKDqBfl!lvqW*% z0Mm}AYwULKklv0)yumxD4aL_F~JtyiDXVmOLfIgOh1mK7- zk(`sQ3W3s`oXKLerYB6~>>jsztT9-?_W-}J(|u7tC8f)Fg0)V<>NYD%fa{JX;NDf7CHwn7mE6BPZvbf)nF#AmX4RTpJgc79OF5Ys%hxv?l&7^fpUUR8n}`MG!~vd z#A8_CP2l_}KpnRJ(i?f&9f$Nao(SY=jNB54^ zk_%XR>ip6R`(T8|=Cm3;Tnix$vYJDLn_8p|!~%c9aAjyN>hGks&E`=n_yiVr1Z%Gm zpMT_|p8rIp!3_dsv|6o}442Vm;oPzL$^sq56&qgO))xy71i{PnY8BJLi}?gENWv5F zYp)gYs_TSDRxdPw>xTvY#Oq!36ym6%rsoJ;1uvgBo`<7J`oi^q%W^q#`5UG*WWy0D zdiBA)BkeyWY!xLo-&me)ov!VYvf;S2c6g(SJHY>&o@wn!@G41oel>Z#^}1G_)nd2s5SVaBgBh`HfUa*Ac|1OWW zQCE}V=8P^=w%OuRZBjN@>+FLC#w>7{HqdLKk5um!Lg1<}!@(vbW3j!gaQH~MQYv;{ zR_;$MPzrD`%K3`=-`?oCnD=xm7)`3cf%a;9)fam*Pu)#-rW`}^soSa707s33au`KRx4-z7BjC7PPkd75waXl=k^ zGMchA*lm9g3s|%M2!);#^)+WT=}v&&mVj!zc%Xeq&Tcw|K;EZOR40%M!2-W99D2lO zqW*U0@_Pu=I}%gd;XKn1x-b=_Km0maPAPxQ1}!mAad#*j7j^*2*?XsuX+o}r^WYOxEzS{Gm{=&Nh@_9bP4JND>c1YHP z|4Z3}k4tcKu8Ewh3>l<~Z+2dL$QXb{dP{T-m<)bBB6Z0L0`(&Uby!Z^SrwG(ZRsn= z)xrXu7z|qTU7~)`E9Vvxtb+{J5hQ0RRw0&=^Qa$f#${r`XXD}P>A98he}?}?U=Dd* zddI_t{Upn`Q3zwQl`&~qF`Qg1P`+vK1LH;gnRj04OK=WLIIV=;BS(>()mWuCo(yex z4q$--wuE1xcHt5l{21XmBJs4_#Pb}J<=rUcF}sXe+5nx#0)FyZFkC0;$b%NPBS1e% zK%Ioc!$0fMc{o$HLnX|roM$7jz@O0b4Pm1Gt7rGe5}2bBOy4>@%yB)ec4k&a7T)@; zNevn6VZkp!Nolgr=A+upB~ZsCsDAwGVJDEB4Oj}HET$}Lt~N*+*Ra6w4_-n5O_Jig zlHZshosy7}tvu3MJsO>dQ=E*oxZ=Yebz-r=pE%nhy|yCi$VSzvAgV4L+UthIq2VpwHFrAkZpeqxTn|D1uE{D}@^cdAQzJIX5 zFI9#Svzn-H`H4G>u$}i};rR`YY&uK!i zl*G8#zSD`YT=zPpFC1;XrAx)+Sst;hS5KI-8LA-PAC{FiWs6)XE$hkHcwK5iz5j`e z-s)}*`)nB&_!DoZrm4$6+xSWh@{3vzvaxsoH*%RA2f$~Ta=RrGsk}sJ;{xl8Sg`#? z{83^O1`Qc-1_h<{L_y>4dKoMpI_d{Kd}!$!I^E*YzO!y1-`RdrP{V*{11RD-o#WA^ zYze`=qgAQBV=4Nd-V)*$wE~2>KRWUQ^gp^KL;zY@d`n2=`{;jkONaops`!?W$oJ5{ zx+SD4@@e~WX}zPS5Bi_q65`YLHIUbf4No)5CQLv;#)%a_4ohzEg=Hj{Nh_e zYW#!#_qT)yYzvBS390cn`aiKHM8I2Ed`n1;ztI2wmJoq$QSmJyHSVMT6I((Ayv4=0 zgw*&G{U6v8BEY>_d^o6a5B(Rmgp{zey-m@iX817FMI>XNb+~XLg4~;^6z#JX&J(Fh zQn2~%-4}|6AKe12W*zuCjYa*dDgQWlM8nOh#dofR%eq+4@Q<>G-xJ>f7AIsNRksLN z6u)9P7O!6#0Q3Lgo1N=r5~dJ_DNIg-Qp2P^HPp<@P*YDrO}T)Ere7GFW2-`_sxegb zYQ1WDP+3eyoQ+iT>hd24P3z0>?n{>uuuul9x(F7gCz#qg+tmJpj{$82%rtOP#m%C= zR@8z81TCCFi$rqLlqp1uci1y6S-CDwxLa0zm5mU%#D5iGFs&EcYh3tZ!d0E&sv&ZP z>d2+G#+Db3O28sqWb8wi8ZK45SdWlJFl04l#S|5inOxRP_4{?)MI$4w!Mm42F?)#m zz`?E{0uw302(aN%dNjWTv&AFSP)Zs0?3CX8f>RM{aO$JCD&HYoHJD1OrAPBC&ZV^Z zF^*nX>+M*C1Su7lP`2-Vl=$N$D1y0orwjZXZj+;%-f>ATHh@*30p0OEk;)OSRotdayh^w zR~bHD`}4i&MV1S@p@2`rFMKKL2fdoRhVVo)Jay#6_?7bDrPeGLXS3pTfGT$`Wb{uY zP*8DxG&^|H`+?^PREz{AK!?}U2P!|)0xn^JQ}r&>&5QpzP&6`NBoq*wz}CA({pV*R zj}xf65>()aJX8ZDCugHls9dX+zs6UkZQrnR{gtAahJ{|UxP#z6%`1p|ZxkV_$F#kM zdQ3iJr-W0zc{5`U7O$pv2Ve8~AC1 z>&oKBdBB9VD;o#SpIJ5Bx{rOZfc1L?tY24Ae`wPmT?kwq32rdICA`KyJ*;1@J&!X^ z_{wn<^{F0plmUIqsQOm=%>^$%fdvW(_T29&Q6J@cvn#6d z;v|qKC7yiVRMhLOhwH051XA1cVp)Sisecs(OX$0$83F}#Yy{bM9)>hCO%bAl^ za-yDgARTasOV)BmTWL8%Mgl}d%Nc_m4y(K5LN>!Um|rFZeRLu5zItD|xov!ql0wG! zPEzHO{n*JL3lwYyd}5iXZ`bs(UwJ&k&9=pN2ZeW#)82gyWe9cyjV4Pj8#i|S3X9iU zhJu`LmUOT;!D`1~b(FI>p%P1NXlH#n>uXq`wZkO40!^b{Z_AMG1gt#+_PCr;Q7ITO zrKcvu^-4}q8{XNtGNV5h@LX zBA!8V5|AkbGi6z5YG9w1J$wY3n38Gyks&T6r9V6nV~l9b3;#L`f-^(Hu;>d!(JA1o zz6;B@U*O zQ}D^)E3yXDuKEq8Nxc$Oo~%p3LfqjQqQ2Xwx6ko-hMS$49^Xxlm*wMAhNc8G>W>Qk zi3Q#b#jH*XJ$Ov*9t5b11S9~5cb5~RRtl8puzS)t555b=tv>a!8GPaIq4|JM5Y$T4 zKlaRHqX<-22`Y-e)t6tZ)V!9GjiwY0QU+`aICUBem;(6bY70euh2fJ-1gM(?)Nnly z6o=$&SW*hahjDxI*FUM<6}@T5`N2Xp`9a$YOcC|%t1NCzsJeR{Q{^v+4DTt+D^N(4 z;&R~0zcyG!wKpCw%H0SpEp#zL-Loj}tBHXGtA~UY&*ygtkC!uLR*Y4k5mBYjIiaE| z4M3=+L)2ftFgS(~#Ysd@@qwrCUiuKl({vT8X3OsvJy#Ud?0JMDqru5IEb4Q%HWlr7 zPl@Pb{;s0%1UX@9jNGg&^}We8x~))2flU#rNiUVU_DV`yf)r1Y4AuE_c;Sh% zJObrN4pSPxTT^W{9gkiEp2KQ{8jnS2L7b>xurK;~!qkfyZfW!>P*Wznh_80AoltKu z7I^nGFw1oL>L=envI$NCgVRT!euRfxOQza1R~tXK+`A$z_#sZ}P3+}%~)UWJ({To8n+sl98zcRe9KJ|p1 zYst+s@aIlTnJzqJrn;${X(1NrEfF1IppEFVeBXUS)Q4$#{q!*oB9ZDFF@4WaS1RBTUIgi(UO#n~4Q}115JBqDB2*pS-h)Q1z9l1nTf) zJxpGj(`t09wcwj-P0PUoFRcZ4oL&Z;bwBn7!RaUA^n8)W86e{LX^1mStx@>Tx&OfU zx(jAK7Z7SkmlhkwFZ_s*^p{8y`2>dH1NE3G4KtQ`C-g&FTb2M74&Od}fv7*%@Qb$y zRI&s$i9eweo+2yIqZBH`sKsU4Sy*7sHyNQ8PmB6rzV)9(Xa-0$`#113gY>Z5!$@ii zwfjz4yN$QehE}Tk&0h-$(Llz=rRqXtF=ufew`!}s{;6FJvA|1EN4_&feYH_Lk_k}? zLzJdVi_75(G>9~03u90f_>QhUXjvv~5y#a*5{*C`K3ETHJq(}OQ;p+)+EkQQcn{tU zx*GK0^*eRWPb4_05>AhAd7L4-;Mh2OuKJ9arU8O=^MxK%f##HbtI*d#aMC24QNnKY zp?b{nhS7V2RU)lD(&rKu=-l9zHt~^0r!*01u!NM!2Oq+RAsPD%6eGDErX0?rMF--m zsMa3{O=~Oak6gL9f$$7r%)xM7%mH46Q{Ujyu^?0q9JjD?qJDOVLn{c)P=;oNE)C8D zQz0(HXv$GvK^81vq33{uMt7PYfAw{aAPtj{1my6Mdc;zPGy?EsORd-`NL1yz&tZ<8$~#Jf#be&0@EJFQ+nB*`{wl8IJ{_zR)ptT19>4*PSy_ zl^5RySzWx*)zc~PBhKwCCc9f3CZ8J6nI04Mcbi_kO_wpJi@AhDsr|y zgax5N&_PyL5%rgvelQ$`OiKY_Y+b`EvX+aLLV;Z{W^u_zyAcN-)z(&#Yf~5&Fk#RF zo6xw{#ctoF6EMc?HN31#Apb$I5_ceV0KuCt#~(q=Sex;U;-Rc62S z)^ZK7z>oJt$Uk1xCoH)az(X2tj$nqJ(XxgeUuDnVY;kdX1nv=6r8mO@fBs6I|D&J% z7(^4yl)n3`^x}H|%jT?BhpIaZHb0e!1^&cyu5@a>9P!(DK*LRQ@jL?IV`Vune#)LZ zkD_v5T-Q5#5*BFdhoPZAF6s+^$=pX;(MYdW#M6eS%bIH{Y(=zFs6SruEf%l0fRpJv z`)~K-9}%KaOurZ>Yh)}lkp>4W-p2yn;W?Of(nI-&18Q9*OrselqpXp!tV~(zk63hj z^P8gKN7f7HdLrm9%3PwKQ*}Sc0Y1$nGWeC|=R^oc>V=%Q_yPGp($9%`^tToBG4nWAj^dm>@x#3L zgKiGT0?z_U7|=n~KQXo1AfC{$qEqoxeG#=~xdzQkBk_OW>2ofZ-I1Pax8%oWt0CHS zbXzbMFk@Zd6Z97Hzyh}CT~TCM3OKE;Syz^y-H zftOkevuNSpuZ|X131FNA7|d@!kD#ZTBXj`F5l;GPLbtg~wQsOM^{s=C*Aex*KKSki z^68Kb;*jX7@&{~d?ADRa?iNn^X-wxA1TIlkQQ!SU)*V9UlISA&?eaBt=}70!)`bqA zPY<9s*VO8NDHc_kW(D!0tNSG%+v%w%ovj$%!-EFVhl(aOzW_k~atwO)57C3imNYcz z{N7(BRgj#V;_|M7qL}dOMTLJscMpPbXZ(kvzVfa3R8#?`e-(U>6u0M5=VUoOA1kYZ z{QOwq;m6ucPNl6XwW%rl0VELkvx@ged?q&UMv#7Dkj~1AL8(ECm#GU1a5-I;Zkmbof-K?%GI%H`=Y|T zIMph43_?Wx-vg{S30FIbOW=;EAWuPi$`JWiBOIQW7f z^|ezJ(;C`YU=5OFi~rZr=Z(JzPDcqR+Ro$Dl4Zpd;t1C`inmj$tfkEZTRw#aYN$Cv zDf9^EjMpd61jBq0<^bp*i?T|7Q|N)5WZ`FF^@#Br9A zpnI~#ttww#QTV8CMY$VcfD8fGrS1?>U#?2*a-Pp{a{?~;1MyD}lCz<(oU%YbTztPY zRhjpqTMZFT>{o&rT1;zE?^yJG03mTnBm!x8uB<+;lq6|*iva@%C#b^N_{zJ#6^)F# zi_mj>k>SlgbUb`+$8my_&s5ALS)D;4jwu_4NOv~JsambwywYUCf_xhIApf6fgy5^U zUpP#7o?v*UBN=%)mGbmSN*g>db%Yw2cz5E(Ah`TyTL&y*uPPcuBv>R|;2Bn(s6ZJxRG5*8tn zQJ(I=-Tw3U-3iGIhU9rYnpuj&g%4k<$z8B|Tq7SWV2+`WRHmCdubx@mnZP{Dz|532 zuT%;%BsD2x>1)(4h!DM!m}?hb}!sn4V{tX6s=M1g2P<(XOW1ZBBh}5f=D;aQ^*i zKL0MC_J|}rGZ~&2kc=zll=7%=Z_BJcPAu?laFv7UUBN@HMtn+GUSL?}iY&fbvLyCW z=?{E{1zze4a#z&%t8TACKwgwU1kmt#dbl?evs`%8$y9Z1!TJMJp2Pyr80seA3sL{} zhJUUgUuaCeF9a2@mxw2joV!dE;^1|sbQfpJb-67LyVYV-d@hmkL|+LH!vZg@29W8Z zKJn1~ImoBoNRZ6pY&F{HF$QIsGw=;!s$lLW8?XRK1Q-K)bRzt#n3bq}({Dh&mtX|g zsQP*sx1QX~(uw)O&{^FGrwMvgMmFIDDo?NHO z%MUkOC%*?XpFJ=>!uZoLRn*6hOf{h@FYW_5BOwXM^?Jw(2Pi~Jb8;q&(aHzZ6(_M~ zhSkp>FA$Q%`-ehHq7%CHtB;;UA(ak;oGo5c^~3bAc-Se8&E~Am61L#Azybt4`C^q4 z4X7U~#b{-uV=1+$_}`srWQ<8kR<%ud%u`WV;H5cGIJ%?upTUo10ot!1*NVqy>sOOy zlus%2HwEXcb!@8^T)xu?7TM@AWoyI+HpF2&ViVZwhafpC)MaNA{54?9 z))KHH{9XfkI_J!tA18%aU09k-?p9&3NGGM@+={qQXCeP^HhtqnPDW5sI0CQ1AS& z?$vpl4~p9c-TQ>B~ivYC;VK ze-F=oov1&z?c+?I%5bG#ajNjwwHJ2MeQ5aaH0k%Z;G9)FSlbO3$;{+q70Y zwd&JyGZruvEx|x7qP3PZehi@->2+B_IL|~kSA}Xw$AH1aUYmLgg?W8khNz!6u4n}z z8zqso{+K6=*Q0xt>1+yfko(%EkywadL@&xnDLU{0!5J;#c*1xbno})6LmVy64sH6O z&n_(R>wV$-yNLQmtDBc2G-JGIgia+dpPE7%n=ywYYvEei3BR#0o1aC^{5L5d6Qr>c zQUU+Dh(x`RG--1Z625T3_Z3mUXGix<1SwrYdg>OB)LYh!s|-jymZswrz88pY2(S#= zGn7CXy%OI)%R?pUQBO{z%gt#KAKOq+;KqVbH9%-Zv&^oK+4l-T%8-!e@|yx9`pTL_ zDnwGgo>4rN^yc?H6|q1Uf;JXanJx)__{%SZ#U!z8;mvwPKUv{eg)G7-Bqozq-`vVK z1UKiLsL%h}FqZI`C7$C>o~OSaZV~Vl>qaH`*gt_Bg|daq^0AX8A3IQnkFDq+3O+Z3 zcQ2}`fECB{U%&!Co(hj7iF!D%HYvwL8dhX7ZuS6K4XU-WO;-uS?>b zL*oyjw*;=+TW2`o$@22EdEN+`SFECjJXxGwlUv#(q9CY|j`R-V&DZYjBt+Q~QA9hQ zC`At<+Tc_gALu`m=G?^s zzdaAWy`8AP_}%t-gk`+fEmC~)%ZOB2223GKn#tv`S~+uni`$do$S>J|9R)c7Wveb2 zu~H0J8hS8W!=nvYYb6G3FlTc@dr}t+TYoU1080s>mFiFdcII*gc{#({D60UI!&%_6 zWM!*b_4=^l>04OfPwf5DG@LaWMNTC+4hDzj46C3aj$pjfvpJ(#)w;wW`*AGr=ldWh zMEy);{G9+fy?}V&2zgn<$_6Cd9;XIrrTN<#Sl}h-&%RAWef7=t^9j-f3CX}`VviW6 zV;y;n7IizAMr9Ag0)OJYFSjV@{UJRFkjv}Z0=}rd5RdJN24P^>KomP;{`S>@Fy;AuBZ=KQL8RN@<>SK_^dS%BW1Y(Wkgb& zzzJyVSl~~*;6hV}{qxwnEeKJr7tto3Xp}71vus3m?*Fm(CGbrZ+y9d^T_~k3rL+YK z4P~ncZCMRa=#FiLwst}E=d(?ln>3InAxSr=v6|Nn3LIh}jw&fGiSGc#w-oY`u;Q|J^sKr9F+6&TzHpZg{Y2%kmF~Ord0o851f6!0g{trb}BcclA z7B~GvM%m!0u#;rd5N=Cy?ic*p<~J#zS`koi0|9iCOE%rh1Y|AI+Dj_6R;!!yg`Fc) zmO=&zy6BJ3#H%T?IuTjl!33GGhs zsOI~hd+#xdsb0i1jB9;`{fGL>gUM29)!IDGs;@C&kuGh4Ew{zqPGQ|Ff%QFsRW2_q z9Rqn~DfberW!PHE`%iv#;SvgKu?TDU4Fr}>URZd2uESyT5-hB#3QJgDST<`sh1DR! z8bKy}MKSVLtO~8Y!b_O2un;!(+Wo}nB#Nm~f{C0g6s31*#No0rS#3tM!%LvBBoL-c z&-niPa0==c2`I8nR+K^BjIuFSZxueQUkF=xF5PgqmSVb9a>5w5T}*|%b;|D5I@Knt z!t=w~R8%*sa2_93I)f|5KDS4-<4S4uI-#1MmMzRKEafznkB|{yk3) z`*#tZykOIM&04Gk8SN{iZ+gUyvnU>uh=;=)HQyz5-Az2zTARJ9%cxt>h$78?@gi62X{eNW(3>3_RBADb9 z0_IVdhDE{r{6s_852U$@Qyhnc>f234lXA66sMl&f{)>74upHkr$mgC^pfnK?hd64nOO@PBM3r`fzS80R^nfHFT!hcNRET!U zScr5ckEX0|&-?fuOmK-$LlBPH_{Sano+tPer=IOlh<3T8d-rjVWr@J{X zo^=H#gnXbg6qqY?Cay1up@5!~03v`Rnq2Ddxd|w>%3;Z@wQ9{eul0|@LD|aN#ryyK z%D!L@q%2Cvg!6M-sMM6FhSIn2o1cB_b=RZ@^=bon+Qlt&W??aTRIoR<*@%5Mxnmit%Rn5GA-_=c@Q&c-Th`X0u zYGK?(RiQN-m{}HsM=C(rRi8A^{cjPs+fJk~bMV;lPwt{{p6>wXWtWVr?!qx??RM{+ zH80ABUQr0e9^w7_FKvC0g4!v9;y_32amf(rE+~u1V#{DmjKK>t2wxce$|+26i5n$h zdi2U(&!Lfy>`54r$_=Rf@q?;lyZ|-7A zic7lx<$`4|TG1W3y)eO}ozM~u72DZCt0}Hm1YC;VWJ*rN+j6wCGi};RW{#1m z@m$XnIX!HE&{Dok+MLTy-G+pq8pE+3aqVC*)f z(qA^{IBu<_xH@~L-fF9^5e!&$uT8)Nm(Wi|wY>i~%E5~WK*gzFI-G|0zDpuG*v)|f ziwU0wWiaYJ!PB&Ra0@2H?bE9f()>Tk?@~O!O7IZ85g)izE8N6WX*5^a&3La-4vd0eOGkzjoq_izueI zB!|O&KrnqFM=ul?xoR(T1m09&0)9V;&{e|3o3vej1W-J0OYj^ec)pawo|BzNhl4yt zB$!2&`1n5IIQAPNcg~@R-VqU9%MC*QSB@N-&(x8#h`d#cREHs#1e55f0mC;?Jnu?| z>udziA>_(p7B}(Ct};1{(q-dz?->(8m-dMkv*;N6fZ zq2qY}%EhXmDVh&NH1(w49r3jsgOPb;61Ud}x^6%y_72|vv+YF_DXIe^s=LWz(ugB+ z6umr?4hmlReDBzG7Jd|t36$u8kjx>xzt8UH|3zVaD8hO!mB9K&4r6v+mBU))@QyKC z%&R!)m(x6pqig4#=#?nHbmhp{SOYh%o_@z%>;lYIDS!@w!LfA4Ewo<|{l zEJEU@XheJ`hia6sbyRq#O6}b6Q7k4%!v(-Jk@t_@ecC}WeIjD|o?wnRDoZvowsMQf zOJhS^$?FgDIs0?oKknKe{3xV@A|x`jf+D_`Lzl>}%fHMql+Lxi0nlM8{f_s)!t}Y3 z;`y{g7vl$c@D$>m4?P{%KN->+6I7!$Ao5-kEJ4fe{E6cEOvJzod9RmyE8GBt{&QLwpx7l@b~z*tS%a^|v!8`_|{JG%fAga!pJVhitI@yvp46qV$}hMnINoVy&&wo4bZ>!Mlrl`IWQ5_(s zx<>paOI8t7-l}r)uN#jF8LQUjRfSKrAJ{I;jUJPmv7RFOMnu$yOcshbDTiL}y*}Z#S8o3j6I?C? z`bkL9gYV3zn7$P;4gMFwbV?4pvV*ZZ%JFcSha2<`9=HP&FdTGKwb1m|Evwx_0evR| z8bWsDi8w8XeWfTbBhPy}pU)iV;l9KB$FKeRHj3t`h$flr9v5*&4jmSs6j5ZfdaVkD z1|l>~SlL|m)(E}|ecz#vaaN9QV3Cbst~2TkjQ3_X^?DkiQNQ#4fk#*JCa@nQvr-A< zh;wo%5XEMl#aj~}x36{lhzU{wY3(H(ZTHyt2~SW|KZ>Zzi5WBEyc}&Umq`VT&S+!G zJqIQ>OG?n<0)&CI5zl?dx3$M4_E&N+d_;>JC6F_Jc|nEUUUy;!CU^wxk}6iHRA*-A zQAj_DkgCXzR}p{60qF*dr80}b+m?EI?B&|#XE7meJHHdWf8o=I{zS@2PXl!rS06YL zxpIi~WsIbGrnKf2Hy17%0PltNDEJMb)AZK1-4w~U9gs|rqdoG*_V>G1PnnAeakB%2 zdA2o=eO88gD-QxmG*u35^w&tfWd)Vma*xl3JRW4mL@^1o*7x34RDr^R^}gf- zR}h4XQyq@ui}=$ewuiXKc5f|k-O_SDCWL&U-1mEo_y6ekl|N8Gr#mcgz37q{b`wx~ zh0*Gr5u-1@Jc9}PV?z)cCQJxYf4}N;3h9gpso%#0(j}MFPj?}a6<=wdX3>JQ$1#CM z(*(Mju>a^kN8B-v;yEkgxr*C)qtzu{%}qQR4BmRwe%ZOyW`~`eSNC9oOFVT;*t23* zXy^or>YRw`rh5r0Rt{A71doY{(vRXXx^$$t1&_GgU)u8pbHFd-j_%rwMfn_B8pn10=Y83&P_)u;SoY>wcfAwpA^g=BAAtAG&xe~lF`adFlKEfqw`jw%ZS7Tp8x?7+{F7oa^1MM zDX0q~sLl5iP(H|&k$*QqS?h?%ORun4+#h{y@3AfA**Z*ci6@i@8x_=9e=|^6f3|OH zBUQ+iDYtIJa#wHY1j|B96wC9x|Ns0u_W;FmQG$hFjr5hHP2#Y4JhO8_`g53|jg3Yq zPT;@xs)#2jo=Y9_#!rrVluz(nwo#-_KVeJD3z)b$o711<{mtKmeL_LCil8{qk^XWN zIL}XIfz0_F6EItc(3Cm6|9`71Hd8E;ZItv+5G(;M^?BUHQs}UGO|kppASU3o4WY0P z1qJ)!TQ6~#P9wrN|0NbfyLAoZ3*HWbxa8Kc=t z>gsEOn4q6D1B6~E?|;1ah4U1Yk7OzkQCA~_0*W96ly}aK+OnUnh+xKN=UlGP|>{!q1(hte{(%L z_A6!fbWG6e)Ijf0I0+~z>+RbKIK^qd_NxmcLtIj&L*3)J%~0lP@c|%LVuFw36J)Xk zYv+I&qbL}E5ex@5GSsD^Qa8cWnvCU)+0J;1Xx9gy-HHhc&kax^gf(7|==S`Zn64D3 zR*DC)XOAL?`nuHq2e^l*i%nk_4NhrZbS3ux(-m`CWEhfd(_lN9repWg&Rze4LUgZS zt9i3x9D%4f-K&Eh+0Ugy)YmPuAvBb zNl9@N5jhTAYqc^SZy6^UeuB#3{{Zj5^6RZZ6jN`>9!hT!O#NMIDJ}<-wXWQ2nG|pg zk}7D&{SE}op@4!!Kry8RP=qXi@J?5HW3Bhroq&3x6b>A@`@pZ?P(Xb|K$FQ47m<;& z0J2!?9L7qIXBV~9|BeYRFT&$P!U)u?g&$Es!IJHhiCsD}%B7~#T|hRI_m&MRL4o%Z z&iGxH@#XInOo(K(y*B|fK$hI8w&SyX-4$}zWu)cKF1#*-_t^A#zp0qu^^h|GdwKr@ zVONc&fI>Tn?SU?tGu#BEt8&;FCSK>>2{2t`5LShS&2RTE>b08U>DvL%AmqwMewT;G zv-0-*FDZ4H;PZ!}jd_aq_xpV3RthIfgu}s&jFtlqV|8c^-dI%EY&`ZUJOWaM@ctoB z85dDF{X{su4-hzmG@^w^5gbm!neOz?gvP`w2! z#)JL~ctjBrnSB>Qq?QSh+2VjMj`wtgGU(z6%ZT4tKJa>qC{jdpbu~dW6uB~~!+k^^ z?v8sgc+zk`~ts^Ic zM-G=mhpQNGt@E0M^Yw!=C!B3+o^pnzUd zxCy9I3tc&zPRmqU%-&nf^DRRCjl93kl=1)tHB_9k?=zBsx>Ak~9X==AoAwYT=rMj{ zdH>}be)FYxVnsYr%L$$_a;Vpp^KFdQ(@M1K<1w=_0hD@Ze1t_jsoRDOqHu;u)`#pS zaK_5f_?UG@z4y!^Dl;%!F#0~A-t!ejGh9S7mY5qOe>@Yfvj28{_b0L*q3JuZ8gexhkQ6j410D@|q93sxD^@fO(D5TBMt_a<^e>`*r z->}Asc$jYqp7CMGuRlb_qqx}kOE;r!mi_+`cgDw zC3~rnm7|eY$mCiVjGD2w{-1=5yr+}B>e=?*aAP`{Xd&g{0K!eK}4e_`+-DGmqQ%X)|MMRHHHqh zD!3+e2s9>@g1_bQ>&uYOJsW@|TgP5WcAki;mm_N&Hmw)O68xaqiMWgRU--NK7^F(7 z0J>X5vt|>1HsE_Xx^Ol|$5eVc8rSqj^kPgPcaI@7Le2Z%JhFZdg>#Q&lfgs+=cpWl zz{Xsb`q|!N=WE5QF(Gc9Vj}N9=DU9^MgEJLfxc=ls-sJIK)&8oKkGako8Ptma4sg0 z04oq0DrnO28{d5v_4b(nr0D?VupFbmk>IY@Sx1rtg}c!UT_Qgmjb&7VBQ; zMo>(%MNAy#=&xikPw6IsuH#{8+qLq^HJIRX8AiwZ2i!Qdfx@}ILlzy9L)9Ur%}{0Z zczw&R+g4%%P4oaTe5YX333%Xs)H{C_(E9d>hW3@CJBp_q=#15#8W5Y`&BlaKU&x)w zf<3fh-MX78o{b_N4)4%VB+qmM&*3!P@xs-ZxL%J!*Z?T)(Kq&^J`cYJB-vFknGA2m zek%tYgT-Pnc|4?0_uJ!`;PW5hS|b=l*MG1Ig|27-x?hBoN)B@zHUqh`xWHXFR+~ld zjlM#2|Avn+A##X;LYT9&W@+6R6c&6tkmT6S96Wf1h6l@`?p)3e674;jHM=)q0&#E( z7%oie?LEnALt(d!1&VJk4o3bg2b!`v_YX$zfJT>X#sp~Af%p~n9O7D6Hr{G1pYQRp8GvRKCU`&eH~R=DWv%+YU?4>_N3!QXnb|+`m@EwtfiqrL z=Ipfh>HShLAu_Mkh57qjHRsZaygPrtnz7l97BiVs?MYqV`ue`}nCN5zVcq25w1%|= zr{eUa4t9ZLm&Oai+~a-;!9sC)uP?oYvwKqi=ck(~s>vcM4s~RT9H^wAym{AP2lw+*F`f^_jr?PkN^{jY3KmA$>_K9+BBDX<+U{vR8Q(kv}vmgYMz|U!4{9 zDn*nc+25EP{u`MiOOdm46{z#|phNzP2>|p13hS;>iMmp3RPa{PW16WmRsC#B-4S^vt%1ebTiV`10pE7E6W5`2oMX0~6# z9W~aaF^RV`jXuiTAFpBa=B) zie*qWgq`sZ{N{57MU^e0ntnGyCCtd`FBht-ZI&ueCot@K@$I)bXv+Q25C{j-1jdBF zMxo`1&{D}pmr>(f>X2Lpv@Awz^-4Kxn)09PI9NU!03*z2x|Di&5rs8Ngq2J7fQyQy?1xln{EOR-fPSvY7(*fD ziIBFFeI=uWiB4f&hD3J%_e#}*=64R27+WC5)x7_2*B?7fapjA+UigjR5~e)$^Exh@ z(QNRJ%s8~g+&uTc5I+FA2GP&){@+!!thRs{A6IgTt!nEuq;%fRsFNuK8v)h~ST z1P(jz|JE;WJU{^zh=9H#l`cw{0u|zAKy$P)wt(>j;}XSu}i zaJfx^?LA(Yd**XYP#ww;nkJY6-!R;hOtGYQz%m=TGI_>LEF@c;l%04W=(s4Nkk37X zy6sXg63b42m&;DMrP7KQqIuK{cvo{BCir#`uuwP<^`VbmyaVv5frhqcdDKFetgjQ@ z9Bkpxc)A0}qbsh#1dldD>n9w>`}L;V!zrFv$u3X?ZcX zocABG`Lk4J}gn7Eh_`4%t#su{nir6q=bBgPhj2%qDl!;&h z$vF~31-n`=?}G8%^118uoCh({Ers^-{@W8S{fok>5aEp7O5nu1r1825$Bz5OR0ecC zVMH+i1noE7we$nNL9%W5SYY&*=R=j`- zcrg!(v9M{*3t!xD7KN@*04dvZe^`=BE%`_8ai6KxR$7Ug)dklRIj*lzbj$T=;)sz8 zT>t2Qi|c3`H%E&5{bTa2y#SprP={@Qhq<SOn~ewl{`IS1r-9HBw;1qI?eL>&|gF?YxheLLZ@E#@*Zvkbz|7|xenoBYD5iwoOWzhsV1cHNs zMpEnW9w5b?&`xT3|Ga4@gDIe35l|l4Y;xFmmwF;@0;+NtO&*$dC9NqQ?h!VlHjS;@ zOm!Ha4myl$`*^si!*E?hPj{V{;K2vh3M0iM@&+uScqGR#aCnC$x+LD*#B(`kKezYT zIUr#!CU_JF^eyjyL&Sggf8)%BdDf$q#n;zsA)-bdeBRx8xx7aDGTq`7Jr-cD&X6psga z{{wG4!xD&!Un9k%3n-*Gm)Jhmz44CP+DdM+LAevQ9{|EPhRk# zFGX{=h=xNOX>mz6aTg7l9$+C;R@}$brlLRi-O=WSXPV&)k3(lgIETp8zvwB7=^hc2 zAGgrKwSfgUF_kmbT9dajNVylH@8JD6K4~weVD1&cM37wsA{QW6hSJ>ygO6dj-28C@ zsTBAxEJRsmec4JOEf*ohTu&g`TvG4dh2#}DYZE`k1TP0k9G1fS?@PLI4~4TrgfoKl zy&~;$2n4brvE8%E(>z$Uw%K^>C2o+mk1%zkdg-gF6wQ4inybj^t&t9SGKU*w^el5; zyS^F|Ji>#Bg68<_f!`KVIFj>A+^su5rGQq8fC{+1 zJ8N7TYH$;f&RFj7icn~L---!R06i8_BTG8EUPlq#FCt>dw64fnIjRw3vtha5Es>3m z!s8>nf0o1k8HMvN5zf4y37k5Y#vI*+=ZOAd~R0jkmgXK4B2! zd*1(zPeOW8JnKX}_meG$A{*oo+89rz*5+aM%ny4L6SsArudoBmaNWcN3g=-F&ckF% zYhma--y)hv^9h<;A~zs3?Z_qyXuSw%3z>oyd8FDmFrBCE~WhAiw#ipBzcyY!czTuOV=j$x-Gi8He_=8=}t3oKFF8{CeJh&gu;> zP)Lu9kUp41Al)H{krAJqVbOV|)ZIQI0uy}UFtB|y??3R$MlmF#JU5D>*(Rb%<~l<6%Yw$PWAxrIX;mstg`l=y4qa zg3u2_NfQRSrp`@&jKbL^!YQsHa2}MU4%IREAW^$#c(yKR-i--L<K2gZys$<1|0w z&?Mriq6xl> zcrKoo%-ML$oe<$n)Vl_qdrbk>Ef$IntgyG1~6ClNsFsX%Kp+>5ajQDV~=k9d0uA6}dr<#>b{L8yGK}M1F-V$`LxJo0st#&mIxdhf@fo zjdDP;n~de&fwV=Ng9$=sAQTnB`^WD*x`0C3D?&QBgg|;!j^3%A40(Gun^f2?a*_An zbZ*f@6w@mrrr*dJw~>#@gsH0BL6;(Unok9o;L#1x9toQqK52D^IOUL4;c2xcnWBr29?>sy2g@<4PwqieS3>GnN#T^zlFLZm`Bd7eP|E`GhPJ4fsK-73b3`#bGz@(d)|r1 z1dpuTeqr2i+|NUnQ#8pUn!=|Eno2o(4^`#n3a!1uYcrY$O3w|NzVr1_NI6*#G*5&x zhwMEyaI_rOk#fdl@=D!NMGU|M?}uhJSlFm(#p7pwr-&p|faj8fX$D?_Wa&YalvmmC za#C-#LQt9%!bV8-D{sGr0+LM1G?2xY16^B*;Wi)x6a}#P(^2@5cn~co;&OSl<89_g=jX;GF_G-F}tZpiM5d{R`b(Sz@zk>%3Cc z1xUV7nnLg6{omX6$pQ-Lj0lN?JV@vf_<9kNetfyNpeS&~Q1SjrW=AxIa#nLdWujq|>`>X(x%yu)7*>KSZ)tQZ^ za^xvY@Ti`f&By(o5Bc^J6y!Gr$Sz`9K~72^I#w1F0Wo{nnFSsfyPcT0o$P#tPUsik zuy;~Gi$p-HxQ(C2$kAh~VYKsYjNZGG%JI|*fT3u~M+LH4;1l$j>RB#*WIT;`ym%jhK)Mp7DPW zQkjN&aj8~B(O6^nuu&$gm=eDj=c(;KZ$mc9aspxMgb9c;VGz#*K5VoGg7@KU{Oy4W-4QhGK(|Z?klqzm zm5nuNLEWfOr(4W=qoK;ia6@8r{8!N)r@CvL!nRK6QNa1$_TMnI$4NuA#Yw|P+X1Iv z=QyQ5_cD7nW4CJ!j5_u@t<9{~mRYJCY8_+J*2U&sld6Z7T?E3*l;vCX>31QCBmzI(1oJ+I2{;FH7X;`39} zuR#GpnOgWjg^Mc9U*=M z-XE)>N`MH>PRLVRwdM2SI^KuNx!!$3)V)yP-xSglPYGwSHU^{6fWM`j49>uF>?~HO z9_sl<$Bd47plcIAZDtr9qrh!T=Z|yjeY1ZMROoO@S3W?U0 zR%pYxxg9(eL0n9AzSdD;A3dej?+?WqXZ?@-Ipuh}i2)FiOpZW`sZ*yy!!ngVz>8$a z20W;DnbC|}n+zkKvQbur6*oTAl@N+-Y=go(3zflCTKJ&Qr&XRLLH(QtEjJkX;2`o8 zWP2IZ%Xx6Tl?r3$qg(}1$OsPdbshz@O|8vnhYHL`gDR}7CDHtyMGfUx+%?(h1^C*l%+l~uR7L@<(CUIt_rjwZC$?;8H ze~?VQw(&8>kzL}t&VH-TC}P43X4iI;t2S%7lxt)$H;Qr^++J=oS{>57QILgQDAair zOZj}JZIsR3;O1t?*`2TdX~(6{gE}qEt6k2;PP<5wR&WYgO5wB>Y!?ywsuC%zc){f_O2s~&SxUwt6pGGb zN)iV}TzSH|+`=Kt>^fbUgmuc_or^{>yfitut$WG2=)#fsQ+Xs+Ntr>S1UZe;raheq zV9Bgg6zwbmZbWc_B{s$wW)VF~&HH0pfA2 zuFh<-XmwH@VW0CBpO0lR>7;^{%pF91yNcnMFNJd4xqKuMEC#7W1t`kToHr&o2Hx9v zEU3kdMJh>@70xAz5UUL0Op<=;H|N4vh@{inYK&${E2&I(;Zu4W!$1|BD22LuFP7i$zl_Q;cR%_G3P35cdwgC z4C2zX{YYLGb~!K01*NxKYZV&fe0bdtU03F=URUVQ6;>G?VrJmv9d)6&I(c6aW2=N{ zg4ivF*Zp$&uPZ65GMXGlbK5lH3jAr;vYfosVjs^`)=FbN*|kg}v7l#JZjq{p%B?QM zsxljEYqU1zDydfeY1abH4xq-iuMMDDDi3v?p>5+)vnn4ygN#tS@m)Ut%$Y^}JJR7D zUti8UW~WLk^^wbYMZOK&?i@x&m)^E(i-CP}Id3e;y;>@;4tHG~JAVgsf7zpD*chDr;QhRgt!=+{8ei(I(OLm3y75Gt$VF)*5@A-NCeB z^>?ntwb-?lQbQG|1q^W(O={f4-My2}ZHQvY6bmrq+s0Jfwx= zqh>;!>0M_>ho}%@eo4B;S|{bt&s`Tq&H}16nRKQ$_RL>gi6&ZfHDnoOmpMVA(DS+y zrSX1q;Zro;IBC4&uE!fM&CB1r7CIyzo}dzMEN^ELI^jZILYKd7A%GsA@;Mh+Q)zNA zQh29ah-0-G%??Rt2`BQj3yEA%Wh|eM=ORfXo^c_fjj?kB7*dnXITtblqKSQU4cYOb zdwBSK6GmrrNI&+63m>b|+C^UCMLQRqw@f&a#O{LS{v7A6D<8UYetC`6X2H|b_?S5m zv)Xw}+gVKhT%NJzZF*0*{#|n36X4$@RVA<#y{>DH3Q_nJNG&F)YpxdIv(%*pTG2I& zxbW#$XG`O7t0ZE(j+32{Da{HW=k_@<4)hUlCwUmXGUzwJV@igxNhS>HH=v?Y@k@VUHHO7U~C?7fJ5{*L6RFsyNkGo46 zjnX#eIC5TiH;gcj)0m|Z$jn}p+C>DNiII->1b4>)5+PgK=wL2{I4@RQG;5u?yn>Nt zP-u5pXq36qlF*k#n(91KyCRR{7@Su!E)HEDEA2Fgb(gDjh7;LsRm#79&UG*@VhvM9 zB8eG0o}4Gw4Kr#iHqoLvj2!<%grSb9?sQxncfg`KD?^7MoYGNQ#^|J>hd6m5*M`^G zt8G#_5<^1I>=2qBG$bt>3prjo4cg8GFbblmouoz5-x>?Sws#RMt;#4e3=5n%j>Vk@ zmTJ;CJFe(1Y#Z+3&gkealESH6cm&dJGFqiF^GdF^bsDQ3Cvg^y=^}V#4P%?%M%0hx z%6-Ss+!0)S&?_Klypzb@fHTblj zD&sGCk3!LJnGboNL&q)2Q*MyV$#(ivOWxOCnB_Wtf_A(fk`iCBptctE{Mt-U>iP9> zsfPz7e(HzKKI)sgdI6q{=#zr_c92V^uBVq~;E9($ zc=hWeuE@ZiU(fIVm!Cx6*oYKispWV@idv#}bfIqqbggeZ>aM;K*`{7=Nm6<=j-EE8 zhf6(N@PfW^J*LaiH~MuVml)UdjmLWQjh&mm5hE;q*PTveWtZ z1RxYP%UI5s?Tk9rU}G4(1%Tbf_Y}~@QrL!%P)Gqk+Q_A-{d=6_N=p;o6A14~Gn!0g z7OhR^?t2QeW~I@Q1yH6!3oEoXMn{+E8X5a55v^$Kdqe!ErycOuOkCmoJ=wV#xkw>O zPNyBR41G4v*f2B{GZHgOu}E>l)&mMh0=JkyAb1enDnP++3h;dR_Xja8<9yrx6uy$1 zM#P7mIV(SxWqJPM_4Bk0%^)kTZByxj?U`Cfs=2O4Ti3xuJ-6JV`@g$RrKirC^}qJ< zMxo>>0!r0>iV=#p6lBq0809o$Q_r#(NQwP_Mv4WC*fO*ZZ6_fVv^Fa6=+f;-slOee zfvXW3eQoX>_C(f?(WPl%t4 zXQ<)v1SOi2T{sTYP=rjKEt}lY@0cC^^Py)z@I|5imSs!v4k?%kevcfgW>#{G?PjT-#7S7X&gC;897&k>q3 zhHF_^@8xb7`*{(Rzti+DHTbALYl)N-6lGyi;I&j;XUz=eSYH>2gx$LqON{t0euLf@Dh zz#Vq-WXwW*f3h!jLxv^9fV(0jc0BffAq0nCSpOotvgN`;b}N?~?_mC>c|SLR@2$xf zlP|`!#I%H*2sz<@#Q%uTUZ1^+Mnz-W=L6>kga#$5)GDfcIZ1Ki?v^E*#{KK#_B6fNw4~`x&0;1%t?;oYl-AgVD~)cPrumH=dDoRN=|cbeh7QUId z&t-&S8k6@n>}@#0{Ux7>X+am!Vl)E{K|$m>Qa7duKlPEAt*8Yg#$*&t)I+px3a8=n zTxMC0%aq$bYu6H2MY-;~b}i;N@}u1Mr;;RqN|0Vuf`qgyVo-%wkX#r)^A93a(S$tg zruL1^gM1Dd7sk11vBQX)K7JyL^PkPgV_UfR=UJ|Lu_fHm>mg@(kA@TU8{9o=k$#!% z8{Vkug6r5S!P^Qxa*gZ!uc4KtzlPS%YF0xl2nEGfptjEw-{h>iJlFRk{D+h&2>*4u z*#-S2v+Tu##l_cQI!s;c*Li5}Y=OU~W;Z~KrEI4I+#1KWT&%rN+fsXT?c#dwIYJ}m za=pdwYBp`Pd})pL>%2yvEM43k=Ez*xl*KzJ#`wpq^RltQn{H-xSQNT!+KfsisqH3BTee2)ZM8w zk_mU?Hn=7?d0l|&0B*?5p;T^CF6((N>!lhO%bx0sxr$KUQ0%HQO2%XNLiTt zOzegb|MMs$v$$j^mY2Y5PHti@6S+C>ui`TNIniU;mZi13YVWRv=Twg!wS%)TxXNWJ z7yYPaO(*&-e)k-3^HqMTJnZU2^w=%R06_|_g_PwM zs^7LWa{4WCf!oXeQf_k+qoD)0*_Qp9ubTF2vNXlJvt~39ZeOw7HEtg#KdcK7uKUr} z$;;e6kF(MaZpPV+4D6OPSk7TL^K5Z3xc;C=AncZefPV|}&pex1WN&HoC-J1*R&v}9 z?Sk6@WP2u#+bcccHt4LagF0~gpPIWhdo-_U^qSju#FhvGYMBUx6D#o%a~8`Iu>m)sZ8T)AoOTD=~^HPGByPM#w4DAw2D{(XcdOn~=( z204a*U%dDtasRt)8F7yyv<07&@jXJs=Ldvput4~cv_UjMH1{vk+`dF} zo8_6tveLGZy;xL)eRyAX^hM%RG@A2aM~@~xMMa~FSbERUFzNqxx~5T;u2OG;o{PT z4djAzq0Vmki+fAZ%WMtqq&>Pl{^>IzzNEE35yG|p&$fL~o~!SYAMS$^?y4wveW{!mtXEX0 z3ZPu?)j8K&CQz;~o4}4ETwgX}LO%Tkvl`waAIp*6Ie`C|nNsi|ooE@?Oa@?O}Fos{Jzn%gyZX};Dh(lqSmo+C7I zv}?UE&PwIQUKn4d)48%7PTf@Eo*te-+>nfM#PvxpPahAxu#6N{MmpE~3i;pah5dgm zkLUfhTn>?Pd0FHB<(u!*Y|?zFIjFf-Ga{+)j1a=*$>z@c15~RsXl4O?&KNVbA;08c$Lc`)C66YZ~|Y3M3g0*ih&y6 zH=-8ATbyEzacJ%na-z+}R{YGf&BP}#HQruTaQq1+2dm0OiNhrN*XW2kz#83jzQ$H$Xc*|90?g`fhEh>qgC zvOA?R%(q{c;`YssFM)dy#9%q2?6+O!!wW0 z{Lj~hV0AnSdgPf{NPFzE(vhhb(B#CVpRbJt-)(CQemQFlVWsENFCg{D2Xa3op&HXt zrl+9L+?&)T`O9+;K>it6rc>jS`?L)!5!Aa{j7@8TVrdL&stSMMpT6Y3}Hb= zWi<-Ws|r#|{X#WC+iz?vMQo`RC2ABmz||Zp3e_kQ;3;Brf;32_NHAyu!0jDtn5fP> z1+Bp8QHhc9SwSf=QHF@1l;kKwDE!wLg26{)2(Y5kVEAgFRaxq1^(j@tJ=E-=+GJLF zuQ@s~33GBd;p9_3Pt3%w0_|9)_k$Ry)DPb)Ax7)_p&I27;A%u{R#=n)wSKe>>CfHw zmO22QZS(2ZTdDB#SNR6?LROTcQQkK{B21(BQ>j29K?Jy_o-ABrf}(NEtRHg^KwX+MiH=MnIZ7{<;h7XV)Jr!41}5rCDxJk zV>F73M`2UrQAAoiTU(q5CD3BhLAi3|HeWiB7^4qW$FmNbV(%>mzrpoL!PbUCID;C> zqHlsKCLV?2c@aRstIfj_W1v(-L5*k$f3qE#oHzrrUosw+8DiIe9%%{dJUt4 zmX^l=c0l z6hmlEhCU6@T~Ib+iKm~;y|EgNO=mv^dK!n{=nwCVg;1Xw!qjFIl=v*W63+rrKg)hv z8d!U<)DPaGtUZ{h!s+E^kf=-YeuuhoK%SnpGkF}+>Vun|Hu5+nJS7_cl}2l#gNOL6 z$IlV!-{euxnwP(6RQ`siQTZF5M&&PDaPk)(5tqnc>?S04bjNcpV#jkXzDP*UCl?9H z#YF5Tb1q_W4_l=aTmOHQt$s@d*?LD?*&0P; zs|KXxB#^I2ZDmKKpjaYb%|Tm;f*)#{JShW9QOwnZB(2@5Pe{tn%`U>%>+0QTC2G2u& zP$$eNoIM8rqu5{Je>8gn-X70>n-I?)PJ1F5YxoOMK78RAv@!EYT1G-mxVZIM_NYFz z`k)j+DdxZh!hwq@HqnQ}pIdeJ>^i(D?Mx6VLh~H3B{av;GJr;kX2`> zb*o?NT9Zh<^Qis5Oao_we{Po0q*ha%J&32{hA{)gfI$L4{FF;fw~!eO3# zj&kd8(3ZlYf??1uOvJIT2bqTNq3sOX9HTB7nZ?CW_ckEZoMmoZjh_Go=QjKNP&yI9 zk46DvX#UL*K3rWG8k*Hukdn1mU6_8nb@j&hQdRZ)rSnqZ8YIl))90ZucFWj#z}J0g zAcsJLthV;rSPJP12L5b8VZfh#D7;h?l+G?Q_`&~!dUeid6lxeq!uoX*Hi+;!jPN-e z%b?KRND-9DvIbSM?~@PC`Z|c0IYGGx?wNgkc2QL0&r7=HpU_=QsnugL3Af z9frWf(P-yZxYF6G6$SIqPAIYJ5gBM=>d#1p(>o~zZH16q^<%Q;Ar;Uz;7OCZAa_OR zXcVi2mfsKtsotg!N(h7}6LXu{HTii3=_HOHeqwk!XdZhIZ8Zc0&HJ?$d{t@itPsA% zmyG+f9gI!uU^0w0vTbDDEPR?0sV7MZJ~_CwBXln=k!T>4_z0jdD2pjT({q~@ACcTP z2gO61G+kc`Ef+k;Vd41K{c>RLfmK&$7R||8YxQ0s!q%9mpi~t^>M0E~VTJd)QYntSn!GIRN znVwoC{UHA0KNEZi_k)x19C|bRPvF}{!uKH?;Iz^qI7&RVhiy>lLN?Di{6{Z^e zLZd$1TY4@uv>;_eJg@U26!=q)rEaK|(d(@>B^@>KAa>x_U}zytU<4U%P|Obdcad} ziP{keG!SSs&{aSgKzTqn0?h-m11$zxPTxf4CgudDp_y}*Rl zL)LkKZ>G&=u^~z8lAi`IO4mAsk7ngr88aWhvtNCH^6^#QuoqV-P{8V;?AH2*LA9G3 zkXi$r+#18VD`HUW<`}Xql`7>{w5%}(g^mGDBBc>!ZN*_55K3xfYLhkq?bX_oj%4Rf zM_T(7HBwH2+|(>}m^GV#-YBQ`LKselt3*CXY!J;+b<3QE#^gEU#l zU)z|9!s|=@C&Bl^H!DyQPD`T#X>eNLn?vAwu4X98uMhBfdwVTBSvrRkxs|Rga*Q&02J0<1K)71AJ>QQZ#;x#!OLQ9{JpX`A6TG z1Yu_3_titSfct1oDSNOzHkzg!><3|IVLx!!03TOiJ~jjIcs}AXvFa7JWz{3>nN_#2 zCpezArc7G`yn773yXVT<#(Fdy$^xqQK`AM>D)z&@8tzr}zDZMx^Vjzo%#Y3WD57y4 z(lzczVHgMRU%z-zEri4Ow{d)<{sfnzsIdVBB>6o3bQ~%e2DpmoJFmxKl1dAUHm^rP zn(~5S;CBy+S1-J8626a%Mkw`GMYu+b9>ZZb??J)vtd8bUK7K#;2fx{Te7L?sjEfF5 z;&~3YpvNHXXc?5HdS8EsW)t~FHhoV3&}NMSJqCQrfw~d~`I`&82#5O$4dfFp2apEH zH{Y?6vJ?gRkqc!z4Dz7@$~JyiDLk7v2C>WF+oAOOAcWN{gL;S0#{>T{+`CkNbn~uo zT93nMJr2j)#I6~PP{UsGUKW3&;kDC%S@k-8SEE9)Uo%v(m#nIPZ9@#&LDLw%p#km0_oO^DqTSOV-?5*@2Pq&;JGXz0)T{QOi6B2z@csVy z`%t&H0{^yRK@FHv@H5SNw5@RuYPw}T&U+QfC*VbF5%N0^--(9nZE;-qP{_}T4M+d1 zy@qA4pLQ5DWbs|0e7MwG*=3wRdl2L2u79nCFhL}*;GRn-;oZ*mvWDjg&yPJ?_E%az zj!c7AaN2D^j|064bPS=mA%q`~X%;~_f-)q^ImI86I=pNd)N4qe0F$7cT*7YbN&WG?f3V&w> zDQkp>(eTbV_?BiFlnt)FCc5^)8|O>X6N>96EemSO15NwyVazM`i0Onf7qMbJO61a^xJQ}}T$dp4OS|}f3g!po zlLmPD1UMT`H_?jcn>?2z9$9B#GE3P-#MI~`lTp8 zQN^+m(WP4Mll(sGNxe+%$t1+MEs5M~z0>s~&O z=QgUaf2b4xI4AzmPW%I$_y;-hk8jzQ_Lf9{XcI%%3(2Qo>M8 zV5~A+_16yDhP1}8Aq{?QOj$F-v!e?SRn^Z+8du-zaO8UY9HC+NdUbJw+rzdoC;LWV z_e2RXWyScOX0gkbl!UP0o;-U(#bVQzDkKlP$`d8<+zJ6tpGv^Pwd{lhGHmNJ9w1l| z^7~aVZQbdzX$zrG1>@E{w~Sj`IpY?*VFkqTaVbtcHHh6vOi@YuAWWwwu_UQU4BoEl z{O$Y1Z{W8N;ojb3LhCW1^_b9lOlUnOwEwqFXuXY{n9#oL#)P&;q^?Y8y-RycXn#i& znj%PILc7}o6WSM&ZsCqD-r>{5JMO1uI7d?BKD*Qmr&(HV%R>GSOH2&;?M-pwH}~1w zeN!cV6Ta8>n?vz8d(3z}X1pFVUXK~C$Bfrw#_KWT^_cNwGvje4yfvzx*=X|2Mngvh zligjNne3!9eMgQ)N@}wEH=WJv)6saQK?ZZsl6}>da((Q`Bt5u7SjnmjK5R~gAth*u z-eh*@14bs{*_Ne#BZ)yxx)vj734U@NboR2KMQ{I(HnZ0%m16CQM+-mK8mssz+4yh$cO zR`mZwR~=e-aWQ?4(CoFY?v=;w&*)^A23`~uP*K#sfQq921ymHl1t)^wQCqDEi=Mvh zP);PJvO}?ZCOn)Bd?u%+;(^YP^t{y5Y;q}LCnis1lR<{Cd3nS|?CAuuTSJd1>Jddf zqR2&2^p`G~4`KaSWt)y$TKLR$xi>CKD%(AN_p})yCHOf)ncus&Auqq>q1Tqo)43Nh zC$A+U>2zuYcG<+4eJ$W>6{%Wq(dk&uWyfQGD|qCMjKOm*LQYtc$&LgkxVaZSBB@6t z^@t=_Mbd+RZAUJ-Lr1RRVrh~gNt+a#G-5_>|g|KSmSxnrm{FTaKWG zTP|!_ZaI$jL$4FN2ole>9_bNfJ)*2fl({U*l;gd>>8|sRUIU1-n3vmk^lpmQMyIT^ zu3K=p?rZ!Up`_X5)Fxh(4ab5D+&JulXyP~7orMJ$+~?Ab`T5OuZCIdzTSEjJLO1L6 zYjM|+-+Xr+-f9<~KSH+LMQ9_|(cu0)Y%P*(#_M$R-2aW;bMa5uE%y@3UXt9ivxX0^ zVTJokHE}h$xiy!H_~-B4oSSQlW5xT8v*OlmWE<%2xtHF5@8+7C_bxT?yXUg+zxT-d ztYr6G{Jn+-arfLF5!)kTdqnKt&6bAuiVW&7@|YDqciqj0<{rA?kmk_f)}XJ^*LdVH zV}Wb7G^+J^&6aiwF0fhuR9G76u(Bi0lEnij5OEVuoZ!s)&@aWVFPp$(TN=v5_hip> z-i4(1*wT7LQI9D4`;I_@HrKx6dZu)ucA{aTdSb%PQCB6OkAaSBNq*-eklk&0%^zsd z{=l|wMj%%u(-Fv3$)~vy$W;@@kx3A6!A*vMN20l(q$&@EoElLUOWZ0W=dS-_CAjE( zZ0soPo?_3#{RVU@;SPAdg@Xewp1i@bcm#5%MaST(5pK6Ky;A8Dx#KzB+M=8o03(z%{~*IZ8;RwalO=;gg~6SQf0xNL1AdDz9sc% zq)0!`UbLz<#FO;_K?(8fMUsYdI34^pUhEk)q+oanUT3m8!)VLSm}#?A7IK`+*E%W? zzcMB?ab!FSAZrfN>362;ThuxCy%w8pMWKDO_O4h~&=}FE&Po3TDe!8I4e{Lig50WA z_)Q&NjNhBkJ0Xx?$1rl`+&ixV{ubR?aA#xz@+-KLyvrZnbtUrK7|*!}_i}F5-dipr zWmZaIie8CB4lfx=P^`F`apXdl&zzM}n`w5CT+N-+3e99p;+S|8Sc|I3ng+c|hu1U& zaBG*;z4hVT`Xy)-Rf($78xoV)l+q#y**mvc`Gz_s9t|&4=Y06)=z!9wEOYAxypD~X zF+6Mcv#l5M^Yp4}MXBof*O{X^K86UqLM7IWf+3~xEaFzJlqzcvCiH&t(L@z+r3I(- z0Z1v&7@S&RmOswX9eC5WY6NLojn{6GJPc^RDWFi|REa*NCQ_POA)ha#UO;zd;q_=c ztcooKLWrE=JnV-XcWWQ)uYoTFL6y}9@N2hn()B}!C~ejB065;TwUNkIB9X zevpY_34sZ{dA{LQWrl#{bY(5H<$EXI2HZgje#yRocrjU_7-$Hme!%_Q=1WbSZ%(=p z>&~EfG?i5th9vvqkh#qlZE>LXw4(ph-q*l2b>01+3zrZvN~F|L%OE1U6fNNEqELA; zA|OHv!P=J9M3V4gOtKJ?(9sgBwLG0|ZFQY?wo+^RP_&k{UFV!nrJL*Ap3bp7b#wbW zN4suweSBK0h;P9C|9JL}f%!sq7v&N;tx?s@tB&dc|n7r}N2cLW)zL@fGv zkPJygTe=rh6^B>RBKN?4v99P|x5Q#dYt1yQv4QUM zFfC9n-l4rbPZkuFYRhzs;b&1nS&4RWIUy-4RV&-3ru*t6^1ogBD?-NnCd96s1EUYL zq7Mx{%;}(k7GChChi4+h-4$k6jw!@ID?7|UYrJ4?!5a&KtO_&G8XvSPCjp)mcy5Ph z0X$3K(ZjO}9y>fO@U+6S8J?Z+yfSQu&bWLSo(1mE0YNJ?+Duk+Mcw@YyK6}0(3YEF zn{)~)mKj%@3o5X&8*OJ!L50J=)rXXut!5+T=d z+=>G?-*Y5F7&K~Opq5)mqW%yt_%rw(B$IakiLm@2Z;g@e_!!zz(=dEz1l<{uo$a%m z0^^*Yj5}w{rb5C_4p=dc13|4Y5X`;OKybvaq#aYdbTxK0VOk^UisRdJAL4q^jw{I_ zoopeI(Usk}g4)Ns1*~#s&(WO)MxqI~Ye#rjSM!D`-e&Wy{QF*n_wlQ_7vTGv*Qs^* z{$>-=;SPeWGI$5H>zWO~_Y&O|@-2P`11W@e&=uohR$F&9KL_t=xz&riS8%0t7K{&Z zmlc!|3v>iL46d%;nnYws<8CF*b1+tfvWEQpneIRUzZNbczV$&OYc`B`G!tfvp2)MC zNrG|)zlvXuVQHBJq$#+p59VL8H#oEk9dNtLiDe&(3 zR0bZn)vNw8UFEJWB$2dyF+VLmRF)L{N_Nt!F>oMf#Mkn||9Zt87QSaeS=UdBr>pZ# zbY}~$T>nF}=~hgqrkQl-;tKXGx=V*Bn%SP*JRf)Lt}a8k$7 zqv9@@tRC(t|E|d2`Q?FOYBiG?x`O_Pkk^sBCO8A#J!0Z_P85=eKlpbBJ%GE!{JO9n zE8BBX$A!%YQQWA^*MsL)Mf4x!VBGf5LMZ z@`O9wo`L6w@EnI{0PBaD8c-f{gk3aZnfAV(9T4t$=0PZvn*+)|LGxgs-vAS$UOHPD zrUmt$?y@s74{Eky*hnEMA)BG3B=hsAD2$vw#y^``gOY3?WU!M_BpAme0LYWGa>2NzHGOuyx z#f)p*8F8&UFUU3S$WUG5&I|S$caF>n2SWG==@uY|ZlE1J48i33c+d#xHlVi)AVW6L z7x+uMBj?YRCciTvxVKc%O)R94c(jOPehNljLZCK+xzNH68{V6yv$UB2-J zMmdI{M9V9mje)vY(zMOIGI3%LqazsbVEWnBy>YU zHzai9Ujp3-hdA8-k4GFF$L&@1RT)*P`&0traML}**INjquLuEoh(z20*INh(M3jI) z$Z(1MwrwO@*cc!eHU?a2y~UO?9*MYZOIdHmX%d@q+ZJtp8JI{=6A0c+$pABhbU=BjO+q3hBtk+WBqTyY zBEDEi#M)gF5+NZG5)vUH5fTz1ArTT1At4bG5^)`n2<{923f}Qa8P2|(blYws=MIh|Tag&5VNCCCSkK=OI zKeK-dp2z(&cJ_Y8kSO{KXFv|)fU!9tZ|0|SN%?!ZHW>FO;e6%};DR|0@NtLe!M_2s z8{pqSW26W2(sw4poZztkotB`O5;3O1!`z|avn0#-xi+qYVg-jtiXjt16$_zsG?bo( zvVq$|hm3|mbRm(3u#ps+a$j+j<^KG=gC{V>gCAgu2mA9r9(;G_7{e+)m50{YO`&pL zGjFaIv5qNEkeH0@3Vr#MjO=QY*$uN+yJ-!dJ8*G1tvGikGw56@(ST`qil*Ul5#eAp zBM^?`;<3rWwMo;IP833lK7i+hzvKvcO_ffRoqLI*CQ0B_3Y^E``B3CEC?LNdaK|CP zC%6xxB)nih&Rqighg|<1HlpHs;Wvfr`*J;zaTjj4k$CPT{3dXx;5U&wO=sU9!0h`( z{(t5mmUBPB8TiT4{SoyvEz?x#Tz}_Y?n8^xeKar!v;;2E66hx>IK#z5mP;EqE^8Wg z)-cF4%$yT5)sP1)iEsb6o7~T-v??`8?R*L(dKRTsogGxZQ}e&_@^>oBRN5RhnW)lc zsELXG#^LOK>@*0%MK2>??CS@ATN^>E-aggfQU5+h>(!MR zWbRf&g!@R&BJ$z1WTCXhp=JrIA-Q2Yk@)TMk%AZ_tv;#4RD zlBp`@r4`=`dCd=a=Xl61ymL{WKJbP3#tj*fwDiX#LJMWL0m`kPmcAUMRi3$*+YWJU z@|PQ=ev@`F6x_0+(#6Zm7Z;RPF5_d`5}0;c^9c}dJhpcb?-r0U6^(b2GM#%3rEqzd z76vdi6jd{@@OuH?^i)8q<4U_9hgAFP2LU#!6aH2qoy5G{mICk0pP)*vNm1phbeRdW zKwD}izLvWx&Os{jYGlfUUv(M!l*;nlwseeH_e3d-I~0E#i9L1xest_m5;Q{!Gytyfn zq_iiBxKl)-FOeu`z<4ar$GjoXx?CUAo&|GioSXW#iAff zD)P4;!1GJ}{I?J1XX0^gx|Ja(=p2?|6dItxjB95YM<>Hf^f8PT?3w(*{Y)av;Xu&j z13~Y77w3w2c)l?IKMwQ%WBg(H@*f28wvBujInKX}9OK`G^JV|Lo(u|~0BM_uWe91@ z#4?2Zmhf?sEqt8h89q+(93LmltBs@;;tDRWc*;lPBKt5d!F}IdZL%CNJB4_Q`SO6d zJuMHI+tazce5!z_wDS2sv?j2;HS6uBLK6LhAWWm=b(Di<6YcBolY-VsLnHL*0iQnpuj+C29=Z(cruZX(~oH;4MKnFriEdEz|u_cEMO> zkgn%ut%I`L1@ApL-Ro;6sfb-RN0MC7x5Hppft?lX`!oiMhf-Xyy_rk|oi+ImkT?y+ z^muoQuNkQQ7ks%1?lfPF-q%9p*^ztps7d)0$d_J-lj3gKh6;WA4x-Rhqx?is{14kA zA-)IDu7)-!58DDG*@e9A2g!Kwdt0a@9mbFDB5sS}f&ThXSkmolrugJ8NIO9+xH&4? z#bZ2CPl}i$Jnf*LyQn@TlQ^nR$t0fY(=d#TeKtUrK;KDeC-4h68OCJ*Kg5Ju;oVAs zMtn%qnoQ_fl;A!?h^y`jam7;^05>WF$!I6c)-OYw+r?vx_zoT$WdFe9*34nhv98f{ zEKoK?e4b*bplfZ(@og>SO|(;a@R0+E<)Rzn=8&d0U;iUfZ9YimXj%}vk9-*4 z-`PSsq5L|b-#|IeML*3B@|y1;*|&BF{ia~1xOXy1(G%HucuykGuc>){CDi8}ykuo5 z$K9QE0%k%(aVbT_cIcY~b1^`NTU$Y|)jVeJz&4cPxzCdY!1rVTpJDUcP%aGV zgm*57I$r>?b&t^3bqca}TCksa{dv+Wxb)0rwpUOb6-`)V*Pp_vd1HKt192i{A-#q!4rwac|Hk(iJLvz_%b>);l08 zf2Fbk@omg`wrAEu{yJ<(;d9M?=HE4M=2_-#ngH6_*gBsx$=%zZo3!I*o% zg+1YLTlICqPp=h6R$V6?IpG>{;gGm9+R+{D=#Fk!Zo>w|vnOZAq(q)#r3Gf6&jPdP zJ$~4C^EJS}PY1xh(*j`MN&m*MZ*y^!#Ty3nHH?;P5%TSU$twi~fYy~SF3-qz*Emfg zD-xc!x-AKsywXs)#d;^|QA>VEZ^8La=zS_?K`QCkvkne5R z3G%&o4Uq5m{!YmEvFix=-hGvj?;8T-yXOj!?_>eaS|7T+M}vFuZdrtT-8I=gx^f=w z?P2EU;aIXaSN^q|P_x@ADy*$Kw5+UCD z8@a+anM)pVfBnkscUIkb+*viZD(=3US1McZ{(9}V`RUP>Al})t3E8%7tJhOAwjAv~601+O zXXLb!*vd+K4w^I@KGZ}%^t&-&hwi0}n2boA3{$9e(81lF%UzTWat4lUdjL8n#F<>2rGnql0{BPE6P_7W@gB@+m|!ZusGZpvDnGg+~g96oMd7^^OwM zUWTp~3yBugUoNQs7(xAG1oa;)sJ$YL+JC==SNnUv-*SE>sD0(V-}f}Opq2tbO(4)* zx$(Tw#$R=b9&{g&&i_6;tl>pH5vTvGebL+u+}!`0sD`n=SB)s5`UW4Y*-ksoZA zBo;z%J_~wt`5)1r5LNWm-N!22f)dqA|E~Leto{$TH&^neUVA5+bG7=#^d45hjH0H4 z5WThn?_(uVm9fL`V;xfGZ(V0~t~FV%pE`fPS5oKCMV)JhtFy@>sq+_EorjLi`DUOx zi(l~r)p;7IFuxvyJSQk^yy@_Dd z0naE+L`3cvxrqoqRwB5WST{%_0*;zEgvUo9HiyR*1T+;t31})dW+!JoswVbo-2R-? zV{vD3_G%1Aw@dTKNr>Sd3kavrPTsafO>8d2`Eq((<}7ZF1F?{t9S_yze!3GnxrcnO>w1WN%4=s3u1%ug5$cXmB$@b znN`aBlq=Dnkkpc^!wYb_fTx}dO_NM$nmz}-fa7t3N_yjavQ~>bf@51O7CT)k#=DbP zYWLyHV`YYb6SROyX3w6@U6Aks2`{)|c){mznL#G$@8V8#7l!{+MIUS#OzzJl?{>YO zxlz7O?mNt#>{6d-?^gd$ySBDsPi}h4$I1PK%sVmsGJ`9PGz9ohCT#qV_Rznuml+5` zb0LMJ@1jN+#_ac3iiS!JI;d{yQD~4 zhGxMM?)=${Bz7_SU))4dKrl(KG#<#!^-^JQj+jNINjZx8%ArUE zc!zoFv#T%s_j91WNzFs*yXo*N?eCoIuYLOD6DK#+Zm_;%^L(5H)pUmpqKWgXZw$hF zvuBf3RAR8F3F@4ICZ511sP)}wg8hEH8x^P)LCx3En@I@iz)MBI{S`F9egykVuy@mb zb2d4OsRzz8XoA|G6X3xCLH+&0*wGPK?HwI@J-UdlN7GuU%ege(-4;fU|$#WN{jx;5q$@5Ul)^+@yZc$=7?bL=(xKB(oW9s_M;dQ9L|XL zG;nA+a^_68XirPicN|T>c_5J9TIQdv~{JN0*MHEiK$p!74RBQuA|NnxD_( zQs!`@2b>m+A7q;YM-LCTKi>YW_T9BdYVWO8otlsyvzLWx%6cR8rOe`0NWxbJR%nKz zgs%)Tp&5!6njN{&e1yA{SrC?s7Jd}byUoIxfaujiWCf?eM1qTY4E>GUd%`& zxKV-|ZxGyg(e29HhQG)Cb$osXtOTs_SPorswQUhH9H;8-`az2^BpNCknG? z`|%19r>H}e0wxS1KJnD-*&GLMFV3D#kqQx~=n}p1AhNOZsNpabzPzz ziZLo`V%Ly;kc)ciPcObm?TA10a|2KP=}&xk3P|wrcj*0iML)d1qvNO_uaKH2sd>5~ zUqhtP#pf})kZ=kKr?@US#i|<#H|D_TA*X-1dLC5oY=5D>t=-VB+N0X5+MCl)NM*#; zEsGLy3h`rQm}OCdQ1prFY7y1dBC4xJR98!&y286Bpqln-dq3q(4$ZT@+Qn$b3MQfE zd1{_Hd)|TOSu|?g@62B6;JBteUxG-2=`ZnE$g ze##7(BzzY?WrAItBm{r7969)JdF;D^ga3}YIPGKK)%yqkbqO-+AP)ZP65X{AUkQJZ@P~g8{vfHRq@I#`N{gYz#n3sy>Zv}U{)_so`UUm2 z8PBFK-J1i|wDQQXkBj0WXf>Jv9~VndS;1bqZQHPqjZRcvFg;X>33&h)M}sNi3EL4x z0RQJHnn1`-{0Is5U*Mu>@D~?J2Y+Pr3*&IHQr+>_MIi_ z?K`;^v=0FPkzYLE@%&w6tJ#NFNua!TpVdJD<6+YagJ2 z3i^8SoceY3C++{!-q5~g&%JvOe%#VeNZQK~O|rjvnm|`F5P!2&jEzeGoLPw`G%HqY zWWeq~6PhhIHb!6uH&1QY_<+0EEWLmxxbH#}I7JwAH<}g;*)yB|`J1g@q6zN7dpu6k z9Ug@IjSvJ$$w!1tm;mNk^amFaM!j4~|Ni;bSm-Yg4qhIDQS~R=+>VYtm7@KZ4>&k( z=dOOy{*jw2wsJ2Fim>Y07dUI6{g)inoTKBi2(yCq1;>$YaZLqSJO0M)=2}FUmFsB1 zKklfsCqx>BePKV+3QN33e5CDa$A5k?c@EuCIzfJQA8Cb;vr)pL@z3ESEl!Gnm8FZt zS^Nk)WX29N&y(22m6d0NkF)e6E!{!tkzUr(%YyxKCkE_22PUi4 zmT{LQb(Ylmi@GB-_NsPdPFybS$duGrQsb*v3D_HmIUEAFAkObUL^90Z`k-B_n%ZJbhVE-$sB4`H{n|?N7G@k(41zOgJzr|&bSE7 zY0R`dH0@_hlhHg|ke3f;#j0NAL@=WY7-kxnM0Pr^deI7)^3R(#bI}SPSvAqT2u+z~ z*3`;YNv$QdmR8?M%X_53wKTYv)KgMVNj)X?l(wEogI{UzD-C|7-c{;d|83T`->|*% z{Mz=M!Po%x+;{j*^?$V=to`KV>n9&O`ShMcd*^-}3)N(rGHkEBxM*~`uuP*+K$OMB zqvE1a@nEbz;mFSO!iS;@0@8d@_+WHNSiW)9i#V_MTK0i{ZrECOj=Mx%#I@|)0PiBM zW#TLXBcH3q@dELY_>AldefgA(?7X7VqKs^d(Q4&)zYD)HrTfX5d8F(U zl2}8?@2@hPmWJE!54SU1IFHe~dc^x462jGAWhnk_B|@kp{**zJ^a|vV)>SR!X1Yao)cWcH1-UVEtIShAAjtG>{WqZ=c`0RM`g&F zD{#iZGg0I;#4LQ3$TIApz4GEk7I)5FBnfPCqRO$85|RMFrDRfaJ#>_b;GRnq@T(V}PE7E`;VBF4lki*wq|o=}SA`Ners%-BgS5=TaCevSbqQUfqCHu)a#|rDLNylT zf!frTZiGhFQR!M&v`hV!Xf|r>amY3w`Ceg@+}%#?Q4g6G_}uJCjM`4I0HFuC+!6zeg>q;xwYH znM8SIA$S$EB;#mF#;fd1tMUM06k3j}VRP7*pDFux$XjZ&n}AWD#; z_~Lr3(jzuB?0!4I@LJnmvko?kMT3kt^y?dBK&<2fqq< z7hlU6P~%*7@vEd8O8aptM?D}%C-4!Zc|z%a#z*VUrpSQ)hp`wc%fSB_@P3GL4E}2B zUkcLLP2_o>z;lu~G73pj4oY-Neg^U8+sQsK_k+uOF>@JqvsLiobjZB&Ft1d&IQdyqcmR@?FYNhUp(r!Y=UK}|9ef{j{ z1JIZmLl4sxGyui#P`UiauCb>>4?vkYAqJqCVFsXM1rxtEZ31#em;vb6zyT;cli*2% z=d18&;VFZs3Z8m+8sK>lo+pHuBI!UiCZ805eQ2<%%P(AFb}cWmS?m=}wra3z>zs?6 zW~0kY?ch1H+}vPqbXJ?uQe-n#xSVyi8d70)fk%nmXd;WO_69Rp3hJz8l5e$FuU=+% zo3%!lk$~%Br_=5X92M*GA)-Y_m;a@OWe&4V41d)pvB02t_aBLh4xE#D69>6N17~Jy z%a6}`M-H6jZx0Qe8N=%sM++hRsVVSuS&Z2|c|~`S3jKT)@y&-bR;%W( zrA71Qg?b0^Ligm~0f8ILwZJY$C9Aw47G@r;(9)kE=+w*%tYdX@2LL&Vb*5RXpt zARotY8~{&{iEa|h5l^uRo@_uoSA`LXr^{d+zx6(MT&Q11)*?a{d`L)E6g<#1XFUQB zOb4@m2G2)?>|P+${Uo98Cy^9Q6QuFmph){^eOEzRR}>Q2uL9E9-JGy57x4|syVcLD z2VNcUzKFa++N)q9rN{I_nsh?=P2jEv_hN9@fqTj8Zxik7?~{VoNkq1lA%&ZbM6-D< z$=>`t$!#~1D&JbjFP2>wVSFEu8S@#G!N~s*%NXL!2A&d(uNj&PuqSE^+|l5?327=u zH{dNnH!!zCS#H9z+z(|ZmZPXEo1f=;H?QSR^JO}io3#$gZWp}w;B>FAnWXwaSDGV9 zF6hc(u&cn%3if?Cfh;6ZuTZR~nN0L;Cnnzk5{LN^-RWsa25NtpFE_!R=8Mt$T8KP5 za?c($DW3xQ(hG4?oGIH-p>N+o6q;(3xhVdWqh^16^mHP1A|aq#@fsu9g}m(tVT4Sg znuI#iVf^S0Zp*~*K;JeLmUKhDh-NL>1!*U(AWO|r(Jsx4^c_V)JaTy2H4NDW2y3+BUEgX6u&;Y3ZWza`+Bx;~*}2x|EM$4r?YeU4go_ z4rE{*$UrFB5ZltM7eFpR*V>ZF8$uf6+giw*Xs7bvBL}je-qB4HNf=1eo7lc=J_vJ; z78v~z_GWxP=yxZSUnh28kf&Vq)9fIx`3{nOYjADb{^i72=r@eo?i*| zIR{V9TFP;EXPtmi`cPa-kuUEdu9bJ^j$;0K`ji)V6tu3u&Zm=>-J7A>8!QvCJPsPU zQ-XftT3ag6F63oFqh@M9X8B<{KbK2Zq`}Xtys0=x}Q*=rtaL2DC$iGWQ*L zo+k@{@5ul@!{)c4To}>`?_3Ubz5rzF9!xj19i4)#ofhn8UVonS3T}Oy-zOJ*MtJvH zlDm`}oDXfwX^;^mv=yx=!(bkP`d35!t1z!WgnR|oxsb;$)O~d_&6A;X2brjjq~(hM z64^v$jh0~|#HogNX<9)xczubu1?x`3x8-qyY$mq+=`zS)#Mh{w5Jy0I3L!nYfnZY* z_|?|@$Jt(W6its3^;3`ql~4wn;P+vkHys>GC&=8yO*=>?pAP1+z;vK4LERfhd4DdJ z2h@`W%Jg?a9VrA|BoH3-iFAbuA21ftWxWHk@>ePw5Dzz5h$k0hV!57`^PohAY0_g2XgSijh-5KH(HdQFF4&0St+|^;+6T`U6!?-KL zxF>{hPYvVFhH;M%;~o;6L_4~p9o^9l%ZCmaGbU?dQX*%tH*z~DccG;}dN6X38Mc!B z?8zPKN8x|R$xF3go*}bEeoUGPqjiz1yvm%uH%eF=cb&F_a@>S6Zq;dWPOsHgo&~e= z)5W}*caEBREyvOQWqIdTf*F}pom`1$_L5kz)2qwDpPG^UcF+Le@0rg5_=^Yy;5nRT z%N2mX(ZhuY{vtv_ctP(Q3H*&7DkSiSz7p^!0e=$kCjoyF@OJ}%zk9Y-NWh;2{EYk%8im=e1^#1xE&yu_XjtvFK!D8SeAwbe7E3m! zSPUB(B5WE-$&qD5VYrB58ZHS^yl_-Fk1$CAfF5C#qvtOq-1yPe8$Z`9o72ITGUgEhThOjr}f{yeOC;_rYpG0z`Bp3}qRd0r@8v3Mb^^GHGl z0zH#*Fnw|GTTJ3<>L+F(3?!p@h@p8HPg5_0_}F2fY{D>5b`q9h$kZp$)K3yppCo~@ z5-2NyvJxnJEuif9TSl(N{NAR~L0N@v=ot-^9j}x?*&7SW27n1|2ny{U6u`M80l-Qk zDMNSTMReh0&G#IM5bnm)!h|}vki@({1k6UX=Cql;S^wp-y^e7`_*nqjh{gaQvqXqb zdzJBp0BR$q22S|f-y$j+7t|wexxzR#&w_xRASu~B7ULZR;#5JLxx}aWtJOMR4)NTE z@kCAy0FFC(kk${d(z4(I)-eIVCDRI%Qmt@DUoMs>Om-@~y#qG?NR%^Bj;4 zf1Z6x;6df@SqY&K0nkOIMf!~FjW*M~5u4_v?eEemSP5{I09Ofcy%DQm zZws;gT{Sx3Iz~VAjJgU|B>}GgpjEI}1Y1ck*eXndqW>0fZdB`Vzz?^HZ?t9i6qWLT z-}kKZp{9qno15lo{#vA;FE3Y(SS{Le4co+%gq5L50jos=+yt;qS}iKA7L`CJ33QS` zCkb?tKqm=wy8f$0#Xkx_Md(@aS@gx8U_43cK_KiKtzW8GHY1w4Y5 z)BHm7=Y58K=6!klS}qVTA+gyI&G;(=P-x=SD#9h_GU2L~XyJNNnyWwjfs7H(y^Img zy&Nl?d#Mo4y&N|juwp&Dxx~d2GizKPr1B=zG)(cJIibe+6$hFVYFypaoZ#suMl`?L zP3(A48k!xI2hnV~xaHudU`Aiu_CqvdFYP-x^Q*^6><@p4X4g258~6>F_^#*&j-&CR zAF%pn;4!v1Z4W-ic3K*V5Fo4Pgu`qjM;>LXAvHF|x2dyv5p@ zT*W$z)#kFur)9g$Ya9mIGzwdZr&%MdScg7$!Q`$GMg_rf3_B`UE3BOhIx06JZ^TsX zzU_+9r)rEk;2Gtp+=$#S@=>|LQ=j1Da@P%#h=8fjA^a|kLxkZ|AM%rcsn5pj4 z#9ocllAIokJBzbd)9=YJ1c9MA6A|#n>T8$O_w!I+lXuGU>!xs#hT_}{HLw(wXB$NiZzfj=QrK89$f_|;R! zaa28{(FC*Wx{O{eijjDMSn!xuUs(rw9 zvOZzi%?68wLSK)dX|a%9_zU(I(FFU;2#o=MhX9f77MA7gnN9ylHzCyQnJ|IBHX46` zJ|{qE!PnJZ>3UkfQusOo^~1OOL4Avl1Cw`cNxS^WBQ3jkx9D4_%dWIX2-!`}?bhq{ zyTQI8?UCs-clYW0_4<|$u)TgncDkgyVLpz zNj(o-Xs_(sT?zKI%H18*UKPE&5*nB3m4bg&+8$q}EOjROL$O}2n(5n}nJO#Yy?euM ztiVSuZFuCx4zP6lcK1++S@#ay>)U;q@I`dXlJSKZ#YA*m|IQ~-{@{bq*^KRj7 zyNFM-Eof2oG+Y{War#m=P+O>htHWR`EEf5eG(0q!m| z!S2N_1nf;{26Q%SE%c9U$F2nYcc2OO7lgH+V(0S`n$W2PcQPN*u7!l{T&{E%dYC)V zA*;)mFJDW`W#YA@w|olf|9fxEQ4RQ&Vp85{(=v$U|Vv}sp2KQb9O4;}*_iQ^QG z+vBHrIgq4Pl2%DtC25tURgzXoS|w?fq*anuNm?aom84aYR!LeVX_cf^l2%DtC25tU zRgzXoS|w?fq*anuNm?aom84aYR!LeVX_cf^l2%DtC25tURgzXoS|w?fq*anuNm?ao zm84aYR!LeVX_cf^l2%DtC25tURgzXoS|w?fq*anuNm?aom84aYR!LeVX_cf^l2%Dt zC25tURgzXoS|w?fq*anuNm?aom84aYR!LeVX_cf^l2%DtC25tURgzXoS|w?fq*anu zNm?aom85lqw0>z5d4NO|6+7& z_jQoQRmfkESM5UnoA8DY6@?e|&0${9h&NtE8rRqwk^f71 z4u{pOT4uI2s)`^ZBLg+QhVkPywa7nS3xvz=7)3r0Ab*3)iRI74i{&0Va^!yp(*wQ^ zufI7GP|wLWp{>*|M$pmvGe?j0w5YjsV>s^Ax(d+ ziI(Th6}62nt=(e_n}NoUDZj~#a>OKx^;O|=);S#7{43)Ar|C;^4}694r(rrkUugOh1$_yhZ8xSn_K?GA zqVd!EH9J*WXPw*Z92x&Y_d+nn9crfe_W1g9Eq=-G!9D!A9ek zRoEMCriQQu<1TlXQ~p}31NqrPv(+(5LAtBlRg~Xmb|L?SB1}D4R61*8&Fw|DpjWvq zZj`fehg@ba@{iYpWT+O~s_iDIgOTZSJKXqs#UZ!7nx=oby{_6kO8W12-%rzHHq{}2 z^kNe#O4tDI_3rhAu~G1VXDx*)4fv&wUfS!mU9fWGbpTPXH)1D?s4xCLhT_j zht}}<8VC9b!pO^Th%#}%>3$PS&*3mxkU!opjphbkPll_9yUX2$wPS2(q$O|@wyt&6 zG-axaMhCQPu3_>2-2HPf#x(HS9g#4+wH%?`?)Tj9QT|#J<-Y}6C(}^t6db^P!hHg7 zWvYhO9{Fi+0s_`(v<5W!0qHsEJ}I;wbFZa0G&&r#^@xG|nvG5)^gf|$q2Jw4`OV%# z$gkjgA7~7m#!w>Zk$Gf7{0)A7p*%zKD?Lie-{3mLr>CKz4#rb9S7?FvO!7>^d|IqF zDn)UNtY)JP%0JH~4j6{>r+QNP-p6j?`R!J_v!cmXtqpcZ^rbek)&vMUlKK=%p-<$bN4zgBQ6))LCmNzc`wOASLz?t(m9Z zQ&0JAe0|Bq)-qgrTpkzYZxGVsZ(S=u?5b;36~puHdC>D9@>`9KHkzIiAgWlwtKcy zeiPq%D+T^=)$Do6^AhE6a8vynFYs5GouN8I;_38s($PpYpZ@5uEt|l<-?N|c3-S;{ zdqapmoW30L9HRV=)pdOD59+=eTb$4Z>N(;$Lgi;wHLb5n`dTbRctw7binc|NnSim8 z=a}ah^1Eu+n2~=h@UIzJ>_hQ?;Q0Xg8(noYzhf$0bygU(gq8nOo>M6Q9;0i3p_h5#pXwLLJWY?tA0|EC7;g-w|La2U zAAe_KUG-{x-5PVi04b0^-WxBJCrwWREz4CyWl8(kI)4~%k~azY4_SG6yQRcvt7(LU ztEPcW*No_uylSsnX#eM3L;D{I9X`!(9P~d9tFb9`>LLDYZ#Jf9b#*P($1zLIP1Uu= zy0GO_;4Q%T*EqaXeqxuwe6J2#Ul{TnakMX61jHz#Q+PuM&+l9%@Z(LMqw&8%(*r#&@{jTNzhU{`qVZR+S%duJ zhx+S9%a(;om-jH`=VwFAO+)rT zX{N1txIw%Z@33ZIa%rLY)tcRAtKAVEF7ckG{Cxj{vvq+VRUl-3FA4G22JwfP=QQE1 zqD-C5VyEdB6^k}2mEfM3woq*>1xVFeh&x) z@&~l%VI-re82O!c7p>p16s;QV0^24%m4ANr%3Nvo3jFs`eutos&|jOYYe(a+rR52Y z8S*Rj(5RK5OoU5R6FM=CErLSriKZV>ej&e;M)C(`zUf^m z4=_xo`aU#%4l`+J`VI20hB+fGpQXrc4cEORe-HAn5!#>FWp;O+SvATmrs*T(|DK<} zv7xSdRQ_J7j{^S$VICDeMAIPUZ(K#&hjF^bRWL9gMZ@mrzX};2sJYph^XFNa^cH1$ z-SiK3-Tpj03xh+%)Elc;*BfmOW^4e*>zZ7(Fsz!DJ}cc#A!`y3qX`(TyI>sRva6QY zHJDWzoE72)*%)(Vhw#bj9`bMZ$Bc&}fI_%+!KykNwiqyggu(WzM(j@(lrPTHE?c}n zDAJkfbJJ&4&lFt$Ws3wS1SGnff0zyW+PVf+9Y2k3fN4iHUmCZURm=w=n{Av0p4HYy zL-L{%q%LY$^jAzgZ_pEDi@3oh2kt)W30hILYFy1RSFv9gjuUq}JqNX~(Go zFU*A935F(pp2}0_s#W=~avzE~9p;vhwFbKo&IW@GNJ|qR!HO9wkd|QuvjWowlY~`J z3{5Hr9cw#jk>Iy1bNaY(%c0Asd4O@u0+p_)1cYm5`s^8)T@@vU3S-u+^vv`TnmXRM zo}hLo0v)0Ex^S8@$y8BGMK8!r~WJe zF3}oYM%&Zhc}0GZJL4;iNGW{!*|jRsPUE|`+xPS{@d~hGmlpxF_UUJC_kz7G)u4L_ zXl&}A2YVOgUs09|uk0s<>1~W*Y_6Cr@b5;qCtsX?iWDYvgB_c2^7J#RE_nJ6a%cUb zN$Kd$?lzKyFjdqhMz;doGBG}&ck%I^RgvhmnNPl$kxSTBo4}q6_S0n6J^h==9o^JE z6rTX-qU2U4&-5?@*sCkL;VH2KT(Ty{+u4<`arJ7?jut`p5UDj zCUG^kYi{V<{4VVk=4+A_^_{! zyt&-`^+p&EiER%kc4qpVEE=oq{}l{2G&Q)9a|{>j=Y(bi+7BXMR-5yk;hedYQ|ae~ zW(Av?0M4jKeglJzh@C`fwAM8!X{sg^8XI7ETW4$#5u@R?S?yZo<~b)JCk$-YG}=Vu zP^Guqt*h)ba$oTc?hs=hi=$EHqnu-q)2J%YRfd+OTA1Sn#EDbB(8(l_ ztl@DkTNWlx+nO3DA7=t`mfBr)mb&4fnZW6=dz`+ZQqtKyh`)t;{nt%S56^iMUrI13 zSJA1J)@k$%=Ty;jGF&`z&YpF9ew`~M>(^a%Yxs1ILr(uhZDfw{OAr6{IOG&Qc!o-- z3-az8Do;A^3tgV>H7b>ID9+_|PT`x(8hg;}6=csy+ro%=T0*)-syt_PEezM`$Tx^H zHxfCO^E6AtaS5uw3I^NNcAKTH20ug4ED2t!oNw2?Asgs?hYY-;e29?3obT+A6UA#J z721As_xEyTTQ;A@2ko+NmeU1Q)NSAu9h%Y1yL}iQ?7n;&KF=Wg_2w!XJA|iNK0u1V zpMLTOKO+0)OeOOTa*7Z8s!RyKNe!({&IU^@w7d}Fl{PZ-;dcY`;peCC--|6$cg}Zm z)Ixf?>HEK-$)@iac%_F_e0LA`D^ss*^H1Brei}8Mkl1eI7xOQ^pFn&m5T5&0J62T` z#Gfm+419R7Lw+#bPy(B&y>eGi&i!q@G`!HWL>7~XTm0h_RjnPQ!hsm9`mVd~x{Xg? zjK||iulCfX+pIHa`ku`0lwD5E^r!EsD3w2bm#6Avm%ma7{yH&ze{YZYl?;o^k%2Rr z3V4UeNI$aGJPu>nyvS0(6VY3YJzk8EpgDyEmp z#O0|4M*a@yV`B#Ca44eY5fWi}1V#v3aMr;*45OSx#d9RK zsASP1vVc5PRI*|b$&M^2DlM4;rJqt=S8XGWvh?cJbtV{zy@`t+2s`#iMHNm9*awR$ zaA}hwW=Tnfo-m4u%S#%d?N_9iYpJ=QsI;O4Oo(p@n&pms9AYT$gZLMLS$~(#j&`?O zMao!`QO;B@(Yez|D@*df1+>Avko=S-x?G?;-GvMcc=i7a^dWaSvxp^kyMgX;S21f@ za^D!BFSsqtL6)p~kEtwV-414eCAD7#TIs$&B8w%~9|1kby*|Rt68ChVSGXUK_%2Hx z83%N;duybOCExxw&>P)5BWqdGehbjs-FqTmWy!v80KLckX5=4O^7HdR?{jytN|y9| z1oXS^pR-F@^2yJD{?Pp%yMZNVyMXR>pJ3l%$@wRk$|B-E83pOT{2I^-cYjn4OSp?b zCwOF04J;FR80b`wGU`Q^kuL!{(=#dRw=AO=4|KLCRTj%K%K1PSdeUV@EE8V~wBDnU zJ;gG&L<4Q`nQH?24Nt4QoMjf=3v`#~DfwoWSr`NKyPoaxpRi2c z?|?q$d1=g8mRZ~e^oO3#F{Lb1bQjR4J^RNz$ui5*f$sMl8uLq*xigBXES7tY#6+@; z{tckxJ;!3^vdoGKpjDm^V(M6?Dgx*ko>MW;vdqfw0qVfeK!)2{QU>L}q}E+X z{sJ-_33M08a4JhyJP!16kl|G<`PyWlPlF7%vBY=^p+H|V#z~Of%dw$Ms%~}saJt+1sTp}$qP^>gi(=7Sj0-z6r3}=E2&jq>%WY_{SJOk*{Aj2=Qqz}rlu-|=>h4f#7JQm48 zh9Ui&8R&SB;d?-awLq&thBvZI^pAm_0W$m+%Zz;#XpJW|>NLy5-U+l8WH_B=ZUQ|m z(t!+nSSFzX=qixmS3riLu8V3xhX2Si$?pU00vW!UWl|kL`#^>(SVnyo=#3!5|G_dd zP^Y$n4F3>h7~|jNc`*9_SY}Q)(48Q|^I2y8Z-G7lG7NQn#|EGegADHh8LkBSJ zGa$o>K=*(QgG?6w574JThTSYv@(j=yK!)F78Qs^Ru368KF&}{pX9BGR8BS!GyM76D zBFHev|GhS#)gZ&`L56P!dJf1i$W`@rpmV(>2Hxd?_N}-CWH^mwz6ml=yaHrc&oVDS zy%d}9Q#(t({4vOb#;Yc`vSbRxxg-~48`A&1Uf^+nZ0`fv_5j`N)s2PpyfqQ%R*-Eq z%lv2?&|5&Zp^jzIdB13;&`6-eKj0`v^GisMqr0?@T3dUqPqrO-w#F}dd;o!AQW z9QQ(`%O3`MpSuw0yFfOUyyq@Q`raP`eac;hv;p7M@3tUq#{Na_b|78f40M9~ex&Wt zo)>1j*CXwNHnY&-ejMpdP}hY%_g18zXMo=1-ih>g*8$z;-h=epe+IhK{U*}Cg}Nv_ zINM@!7_^=zeUHPpGsw!CD>k_1RaO|Vkzo-FX%Y517*-A z7ZcAR3|kIuY_Y;~1nK2XKqq*PA$?B*(5apekp3F9C&ihbQ%D4S1(+!;U@ zdI{2xs)5#fV~~FS4?r8d@kqaMAJA5B5|(oc#JMEft48`OE}*sEY~=X?^aaIUZvoN= zu#a2s)gk>hwhx=U_aJ@f1E9BiO-LX90nqJU8`AH3fquj5Mfy0lIUjl-Lb@BqLd9L) zjY$8`Z-9Q+`!v$Og>gdhF>eRbe>em5N$(p-_duUse9HS4(tiTEEk5l%jP#%Tf$sJG z8tIcAKwt14NBVz32aEf?e?j_V(D9|jdm8D}(AO_zy_b+a3p&13-ozr^rvzHjG#=>- zptDPrO$kU}wgMgBl!El&B%l+TW&j;QpiNks*fbC6NGS8As-|3|WvM`?HWec+|25F+ zCOy()eL&A>x)15`Fb-Lo*;I?P66A2{oF*sIH$j`QRMXUq^h6EN*-aaePWTJZxlNmp zzI6-G+NNiaPRa+muxS_4s?$K1H0?!t3dq<}UDH0KrPtYcXnGgv>Fq#Q zHT?$ZbZ9e|8k%~Lo(XN>Qd84MNY948Y-w#%FVgc2KwFyzk)99Zz@?7+}GyY3z29g;=Uxgy|XC03P0rU$PcrmqA#M(45X^o2e0E8V2!bkhj{E~P-t?0Z!WV3J_GM0k$1t+euyi3#Zj+edm%zN@p=|w2ZRvImHbC(6h`q%4(Y|O%`f`Q{=%lN zBG(oD|2|3nY{4g!Qw_0>1TV-zpA)=wv>h5pKVuH=7fD1Tv(#%O-Ggz}?%FT(rW r2;B&o-+(ZI*3*^3bfsCq5+ZTiNC+nuzg7KzA#+6S diff --git a/Mac/Distributions/binary.exclude b/Mac/Distributions/binary.exclude deleted file mode 100644 index 9356cac90b6b..000000000000 --- a/Mac/Distributions/binary.exclude +++ /dev/null @@ -1,37 +0,0 @@ -* Data -*.CFM68K.slb -*.Lib -*.MAP -*.SYM -*.c -*.cp -*.cpp -*.dbg -*.dsp -*.h -*.hqx -*.idb -*.jack -*.lib -*.mcp -*.mcp.exp -*.mcp.xml -*.orig -*.prj -*.prj.exp -*.pyc -*.pyo -*.xSYM -*.µ -*.µ.exp -*Icon -*xMAP -*~[0-9] -.#* -.DS_Store -.cvsignore -@* -CVS -Makefile* -Setup.in -[(]*[)] diff --git a/Mac/Distributions/binary.include b/Mac/Distributions/binary.include deleted file mode 100644 index ad2072960a3e..000000000000 --- a/Mac/Distributions/binary.include +++ /dev/null @@ -1,207 +0,0 @@ -(':.DS_Store', None) -(':BeOS', None) -(':BuildApplet', None) -(':BuildApplication', None) -(':ConfigurePython', '') -(':Demo', '') -(':Demo:cwilib', None) -(':Demo:embed', None) -(':Demo:extend', None) -(':Demo:ibrowse', None) -(':Demo:pysvr', None) -(':Demo:stdwin', None) -(':Demo:www', None) -(':Doc', None) -(':EditPythonPrefs', None) -(':Extensions:4Suite-0.9.2', None) -(':Extensions:Icon', None) -(':Extensions:Imaging', '') -(':Extensions:Imaging:Tk', None) -(':Extensions:Imaging:libImaging', None) -(':Extensions:Numerical', None) -(':Extensions:Numerical-old', None) -(':Extensions:Pmw', None) -(':Extensions:PyDOM', None) -(':Extensions:PyOpenGL-1.5.6a2', None) -(':Extensions:PyXML-0.6.2', None) -(':Extensions:README', None) -(':Extensions:README.TOO', None) -(':Extensions:audio', None) -(':Extensions:example2:README', None) -(':Extensions:example3:README', None) -(':Extensions:example:README', None) -(':Extensions:img:Lib', '') -(':Extensions:img:Mac:genimgprojects.py', None) -(':Extensions:img:Mac:imgcolormap.carbon.slb', '') -(':Extensions:img:Mac:imgformat.carbon.slb', '') -(':Extensions:img:Mac:imggif.carbon.slb', '') -(':Extensions:img:Mac:imgjpeg.carbon.slb', '') -(':Extensions:img:Mac:imgop.carbon.slb', '') -(':Extensions:img:Mac:imgpbm.carbon.slb', '') -(':Extensions:img:Mac:imgpgm.carbon.slb', '') -(':Extensions:img:Mac:imgpng.carbon.slb', '') -(':Extensions:img:Mac:imgppm.carbon.slb', '') -(':Extensions:img:Mac:imgsgi.carbon.slb', '') -(':Extensions:img:Mac:imgtiff.carbon.slb', '') -(':Extensions:img:README.img', '') -(':Extensions:img:doc', None) -(':Extensions:img:setup.py', None) -(':Extensions:img:test', '') -(':Extensions:img:test:out-grey-b2t.pgm', None) -(':Extensions:img:test:out-grey-b2t.rgb', None) -(':Extensions:img:test:out-grey-t2b-greyviatiff.pgm', None) -(':Extensions:img:test:out-grey-t2b-rgbviatiff.ppm', None) -(':Extensions:img:test:out-grey-t2b.jpg', None) -(':Extensions:img:test:out-grey-t2b.pgm', None) -(':Extensions:img:test:out-grey-t2b.rgb', None) -(':Extensions:img:test:out-grey-t2b.tiff', None) -(':Extensions:img:test:out-icon.pbm', None) -(':Extensions:img:test:out-icon.pgm', None) -(':Extensions:img:test:out-map-t2b-2.gif', None) -(':Extensions:img:test:out-map-t2b.gif', None) -(':Extensions:img:test:out-mono-t2b.pbm', None) -(':Extensions:img:test:out-rgb-b2t-viagif.ppm', None) -(':Extensions:img:test:out-rgb-b2t.ppm', None) -(':Extensions:img:test:out-rgb-b2t.rgb', None) -(':Extensions:img:test:out-rgb-t2b-viagif.ppm', None) -(':Extensions:img:test:out-rgb-t2b-viajpeg.ppm', None) -(':Extensions:img:test:out-rgb-t2b.jpg', None) -(':Extensions:img:test:out-rgb-t2b.ppm', None) -(':Extensions:img:test:out-rgb-t2b.rgb', None) -(':Extensions:img:test:out-rgb-t2b.tiff', None) -(':Extensions:midi', None) -(':Extensions:pyexpat', None) -(':Extensions:pygui', None) -(':Extensions:saxlib', None) -(':Extensions:xmltok', None) -(':Grammar:Grammar', None) -(':Grammar:Icon', None) -(':Icon', None) -(':Include:Icon', None) -(':LICENSE', ':Relnotes:') -(':Lib', '') -(':Lib:dos-8x3', None) -(':Lib:plat-aix3', None) -(':Lib:plat-aix4', None) -(':Lib:plat-freebsd2', None) -(':Lib:plat-freebsd3', None) -(':Lib:plat-irix5', None) -(':Lib:plat-irix6', None) -(':Lib:plat-linux1', None) -(':Lib:plat-linux2', None) -(':Lib:plat-netbsd1', None) -(':Lib:plat-next3', None) -(':Lib:plat-sunos4', None) -(':Lib:plat-sunos5', None) -(':Mac:Build', None) -(':Mac:Compat:Icon', None) -(':Mac:Contrib:AECaptureParser', '') -(':Mac:Contrib:BBPy.lm:BBpy.r', None) -(':Mac:Contrib:BBPy.lm:Python', '') -(':Mac:Contrib:BBPy.lm:Python Keywords.rsrc', None) -(':Mac:Contrib:BBPy.lm:PythonBBLM.txt', '') -(':Mac:Contrib:BBPy:PythonSlave.py', '') -(':Mac:Contrib:BBPy:README', '') -(':Mac:Contrib:BBPy:Run as Python', '') -(':Mac:Contrib:BBPy:Run as Python.sit', None) -(':Mac:Contrib:BBPy:source', None) -(':Mac:Contrib:ImageHelpers', '') -(':Mac:Contrib:PythonDetector', '') -(':Mac:Contrib:PythonDetector:Icon', None) -(':Mac:Contrib:PythonDetector:OpenPythonLib', '') -(':Mac:Contrib:PythonDetector:OpenPythonLib with NS', '') -(':Mac:Contrib:PythonDetector:PythonDetector', '') -(':Mac:Contrib:PythonDetector:readme.txt', '') -(':Mac:Contrib:Sherlock', '') -(':Mac:Contrib:Tabcleaner', '') -(':Mac:Contrib:mpwsystem', '') -(':Mac:Contrib:osam:OSAm.carbon.slb', '') -(':Mac:Contrib:osam:OSAm.exp', None) -(':Mac:Contrib:osam:OSAm.ppc.slb.sit', None) -(':Mac:Demo', '') -(':Mac:Distributions', None) -(':Mac:GUSI-mods', None) -(':Mac:HISTORY', ':Relnotes:') -(':Mac:IDE scripts', None) -(':Mac:Icon', None) -(':Mac:Include:Icon', None) -(':Mac:Lib', '') -(':Mac:MPW', None) -(':Mac:Modules', None) -(':Mac:OSX', None) -(':Mac:OSX:README', None) -(':Mac:OSX:README.macosx.txt', None) -(':Mac:OSXResources', None) -(':Mac:Python:Icon', None) -(':Mac:ReadMe', ':ReadMe') -(':Mac:ReadMe-dev', None) -(':Mac:ReadMe-src', None) -(':Mac:ReadMe~0', None) -(':Mac:ReadmeSource', None) -(':Mac:Resources', None) -(':Mac:TODO', None) -(':Mac:Tools:CGI', '') -(':Mac:Tools:IDE', '') -(':Mac:Tools:Icon', None) -(':Mac:Tools:PyIDE', None) -(':Mac:Tools:bruce', None) -(':Mac:Tools:macfreeze', '') -(':Mac:Unsupported', None) -(':Mac:Wastemods:readme.txt', None) -(':Mac:_checkversion.py', '') -(':Mac:mwerks', None) -(':Mac:scripts', '') -(':Mac:tclmods:Icon', None) -(':Mac:tclmods:license-terms.txt', None) -(':Mac:think:Icon', None) -(':Misc', '') -(':Modules', None) -(':Objects:Icon', None) -(':Objects:listsort.txt', None) -(':PC', None) -(':PCbuild', None) -(':PLAN.txt', None) -(':Parser:Icon', None) -(':Parser:grammar.mak', None) -(':Python IDE', None) -(':Python:Icon', None) -(':PythonCarbonStandalone', None) -(':PythonCoreCarbon', '') -(':PythonInterpreter', '') -(':PythonStandCarbon', None) -(':PythonStandSmall', None) -(':PythonStandSmallCarbon', None) -(':PythonStandSmallShGUSI', None) -(':PythonStandSmallThreading', None) -(':PythonStandalone', None) -(':README', '') -(':RISCOS', None) -(':Tools:Icon', None) -(':Tools:README', '') -(':Tools:audiopy', '') -(':Tools:bgen', None) -(':Tools:compiler', '') -(':Tools:faqwiz', '') -(':Tools:framer', '') -(':Tools:freeze', '') -(':Tools:i18n', '') -(':Tools:idle', '') -(':Tools:modulator', None) -(':Tools:pynche', '') -(':Tools:scripts', '') -(':Tools:unicode:makeunicodedata.py', '') -(':Tools:versioncheck', '') -(':Tools:webchecker', '') -(':Tools:world', '') -(':config.h.in', None) -(':configure', None) -(':configure.in', None) -(':install-sh', None) -(':jack-scripts', None) -(':loop.py', None) -(':mac2unix-real.shar', None) -(':mac2unix.shar', None) -(':pyconfig.h.in', None) -(':pystone.py', None) -(':setup.py', None) -(':site-packages', None) diff --git a/Mac/Distributions/dev.exclude b/Mac/Distributions/dev.exclude deleted file mode 100644 index c1cb22b05b86..000000000000 --- a/Mac/Distributions/dev.exclude +++ /dev/null @@ -1,22 +0,0 @@ -* Data -*.Lib -*.MAP -*.SYM -*.dbg -*.hqx -*.idb -*.pch -*.pyc -*.pyo -*.slb -*.xMAP -*.xSYM -*Icon -*_pch -*~[0-9] -.#* -.DS_Store -.cvsignore -@* -CVS -[(]*[)] diff --git a/Mac/Distributions/dev.include b/Mac/Distributions/dev.include deleted file mode 100644 index 962ca5706ee6..000000000000 --- a/Mac/Distributions/dev.include +++ /dev/null @@ -1,634 +0,0 @@ -(':BeOS', None) -(':BuildApplet', None) -(':BuildApplication', None) -(':ConfigurePython', None) -(':ConfigurePythonCarbon', None) -(':ConfigurePythonClassic', None) -(':Demo', None) -(':Demo:embed', ':Demo:embed') -(':Demo:pysvr', ':Demo:pysvr') -(':Doc', None) -(':EditPythonPrefs', None) -(':Extensions:4Suite-0.9.2', None) -(':Extensions:Imaging', None) -(':Extensions:Makefile.pre.in', None) -(':Extensions:Numerical', None) -(':Extensions:Numerical-old', None) -(':Extensions:PyOpenGL-1.5.6a2', None) -(':Extensions:PyXML-0.6.2', None) -(':Extensions:README', None) -(':Extensions:README.TOO', None) -(':Extensions:example', None) -(':Extensions:example2', None) -(':Extensions:example3', None) -(':Extensions:img', None) -(':Extensions:midi', None) -(':Grammar:Grammar', None) -(':Grammar:Icon\r', None) -(':Grammar:Makefile', None) -(':Grammar:Makefile.in', None) -(':Icon\r', None) -(':Include', '') -(':LICENSE', None) -(':Lib', None) -(':Mac:Build:App.carbon.mcp', None) -(':Mac:Build:CF.carbon.mcp.exp', None) -(':Mac:Build:CF.carbon.mcp.xml', None) -(':Mac:Build:ColorPicker.carbon.mcp', None) -(':Mac:Build:ColorPicker.carbon.mcp.exp', None) -(':Mac:Build:ColorPicker.carbon.mcp.xml', None) -(':Mac:Build:ColorPicker.mcp', None) -(':Mac:Build:ColorPicker.mcp.exp', None) -(':Mac:Build:ColorPicker.mcp.xml', None) -(':Mac:Build:Dlg.mcp.exp', None) -(':Mac:Build:Dlg.mcp.xml', None) -(':Mac:Build:Drag.carbon.mcp.exp', None) -(':Mac:Build:Drag.carbon.mcp.xml', None) -(':Mac:Build:Drag.mcp.exp', None) -(':Mac:Build:Drag.mcp.xml', None) -(':Mac:Build:Help.mcp.exp', None) -(':Mac:Build:Help.mcp.xml', None) -(':Mac:Build:HtmlRender.prj', None) -(':Mac:Build:Icn.carbon.mcp.exp', None) -(':Mac:Build:Icn.carbon.mcp.xml', None) -(':Mac:Build:Menu.carbon.mcp.exp', None) -(':Mac:Build:Menu.carbon.mcp.xml', None) -(':Mac:Build:Menu.mcp.exp', None) -(':Mac:Build:Menu.mcp.xml', None) -(':Mac:Build:Mlte.carbon.mcp.exp', None) -(':Mac:Build:Mlte.carbon.mcp.xml', None) -(':Mac:Build:Mlte.mcp.exp', None) -(':Mac:Build:Mlte.mcp.xml', None) -(':Mac:Build:Printing.mcp', None) -(':Mac:Build:Printing.mcp.exp', None) -(':Mac:Build:Printing.mcp.xml', None) -(':Mac:Build:PythonCore.axp', None) -(':Mac:Build:PythonCore.exp', None) -(':Mac:Build:PythonCore.mcp', None) -(':Mac:Build:PythonCoreCarbon.exp', None) -(':Mac:Build:PythonInterpreter.mcp', None) -(':Mac:Build:PythonInterpreter.old.mcp', None) -(':Mac:Build:PythonStandSmall.mcp', None) -(':Mac:Build:PythonStandSmall.old.mcp', None) -(':Mac:Build:PythonStandalone.mcp', None) -(':Mac:Build:Qt.carbon.mcp.exp', None) -(':Mac:Build:Qt.mcp.exp', None) -(':Mac:Build:Snd.carbon.mcp.exp', None) -(':Mac:Build:Snd.carbon.mcp.xml', None) -(':Mac:Build:Snd.mcp.exp', None) -(':Mac:Build:Snd.mcp.xml', None) -(':Mac:Build:TE.carbon.mcp.exp', None) -(':Mac:Build:TE.carbon.mcp.xml', None) -(':Mac:Build:TE.mcp.exp', None) -(':Mac:Build:TE.mcp.xml', None) -(':Mac:Build:Win.carbon.mcp.exp', None) -(':Mac:Build:Win.carbon.mcp.xml', None) -(':Mac:Build:Win.mcp.exp', None) -(':Mac:Build:Win.mcp.xml', None) -(':Mac:Build:_AE.carbon.mcp', None) -(':Mac:Build:_AE.carbon.mcp.exp', None) -(':Mac:Build:_AE.carbon.mcp.xml', None) -(':Mac:Build:_AE.mcp', None) -(':Mac:Build:_AE.mcp.exp', None) -(':Mac:Build:_AE.mcp.xml', None) -(':Mac:Build:_AH.carbon.mcp', None) -(':Mac:Build:_AH.carbon.mcp.exp', None) -(':Mac:Build:_AH.carbon.mcp.xml', None) -(':Mac:Build:_Alias.carbon.mcp', None) -(':Mac:Build:_Alias.carbon.mcp.exp', None) -(':Mac:Build:_Alias.carbon.mcp.xml', None) -(':Mac:Build:_App.carbon.mcp', None) -(':Mac:Build:_App.carbon.mcp.exp', None) -(':Mac:Build:_App.carbon.mcp.xml', None) -(':Mac:Build:_App.mcp', None) -(':Mac:Build:_App.mcp.exp', None) -(':Mac:Build:_App.mcp.xml', None) -(':Mac:Build:_CF.carbon.mcp', None) -(':Mac:Build:_CF.carbon.mcp.exp', None) -(':Mac:Build:_CF.carbon.mcp.xml', None) -(':Mac:Build:_CG.carbon.mcp', None) -(':Mac:Build:_CG.carbon.mcp.exp', None) -(':Mac:Build:_CG.carbon.old.mcp', None) -(':Mac:Build:_CarbonEvt.carbon.mcp', None) -(':Mac:Build:_CarbonEvt.carbon.mcp.exp', None) -(':Mac:Build:_CarbonEvt.carbon.mcp.xml', None) -(':Mac:Build:_Cm.carbon.mcp', None) -(':Mac:Build:_Cm.carbon.mcp.exp', None) -(':Mac:Build:_Cm.carbon.mcp.xml', None) -(':Mac:Build:_Cm.mcp', None) -(':Mac:Build:_Cm.mcp.exp', None) -(':Mac:Build:_Cm.mcp.xml', None) -(':Mac:Build:_Ctl.carbon.mcp', None) -(':Mac:Build:_Ctl.carbon.mcp.exp', None) -(':Mac:Build:_Ctl.carbon.mcp.xml', None) -(':Mac:Build:_Ctl.mcp', None) -(':Mac:Build:_Ctl.mcp.exp', None) -(':Mac:Build:_Ctl.mcp.xml', None) -(':Mac:Build:_Dlg.carbon.mcp', None) -(':Mac:Build:_Dlg.carbon.mcp.exp', None) -(':Mac:Build:_Dlg.carbon.mcp.xml', None) -(':Mac:Build:_Dlg.mcp', None) -(':Mac:Build:_Dlg.mcp.exp', None) -(':Mac:Build:_Dlg.mcp.xml', None) -(':Mac:Build:_Drag.carbon.mcp', None) -(':Mac:Build:_Drag.carbon.mcp.exp', None) -(':Mac:Build:_Drag.carbon.mcp.xml', None) -(':Mac:Build:_Drag.mcp', None) -(':Mac:Build:_Drag.mcp.exp', None) -(':Mac:Build:_Drag.mcp.xml', None) -(':Mac:Build:_Evt.carbon.mcp', None) -(':Mac:Build:_Evt.carbon.mcp.exp', None) -(':Mac:Build:_Evt.carbon.mcp.xml', None) -(':Mac:Build:_Evt.mcp', None) -(':Mac:Build:_Evt.mcp.exp', None) -(':Mac:Build:_Evt.mcp.xml', None) -(':Mac:Build:_File.carbon.mcp', None) -(':Mac:Build:_File.carbon.mcp.exp', None) -(':Mac:Build:_File.carbon.mcp.xml', None) -(':Mac:Build:_Fm.carbon.mcp', None) -(':Mac:Build:_Fm.carbon.mcp.exp', None) -(':Mac:Build:_Fm.carbon.mcp.xml', None) -(':Mac:Build:_Fm.mcp', None) -(':Mac:Build:_Fm.mcp.exp', None) -(':Mac:Build:_Fm.mcp.xml', None) -(':Mac:Build:_Folder.carbon.mcp', None) -(':Mac:Build:_Folder.carbon.mcp.exp', None) -(':Mac:Build:_Folder.carbon.mcp.xml', None) -(':Mac:Build:_Help.carbon.mcp', None) -(':Mac:Build:_Help.carbon.mcp.exp', None) -(':Mac:Build:_Help.carbon.mcp.xml', None) -(':Mac:Build:_Help.mcp', None) -(':Mac:Build:_Help.mcp.exp', None) -(':Mac:Build:_Help.mcp.xml', None) -(':Mac:Build:_IBCarbon.carbon.mcp', None) -(':Mac:Build:_IBCarbon.carbon.mcp.exp', None) -(':Mac:Build:_IBCarbon.carbon.mcp.xml', None) -(':Mac:Build:_Icn.carbon.mcp', None) -(':Mac:Build:_Icn.carbon.mcp.exp', None) -(':Mac:Build:_Icn.carbon.mcp.xml', None) -(':Mac:Build:_Icn.mcp', None) -(':Mac:Build:_Icn.mcp.exp', None) -(':Mac:Build:_Icn.mcp.xml', None) -(':Mac:Build:_List.carbon.mcp', None) -(':Mac:Build:_List.carbon.mcp.exp', None) -(':Mac:Build:_List.carbon.mcp.xml', None) -(':Mac:Build:_List.mcp', None) -(':Mac:Build:_List.mcp.exp', None) -(':Mac:Build:_List.mcp.xml', None) -(':Mac:Build:_Menu.carbon.mcp', None) -(':Mac:Build:_Menu.carbon.mcp.exp', None) -(':Mac:Build:_Menu.carbon.mcp.xml', None) -(':Mac:Build:_Menu.mcp', None) -(':Mac:Build:_Menu.mcp.exp', None) -(':Mac:Build:_Menu.mcp.xml', None) -(':Mac:Build:_Mlte.carbon.mcp', None) -(':Mac:Build:_Mlte.carbon.mcp.exp', None) -(':Mac:Build:_Mlte.carbon.mcp.xml', None) -(':Mac:Build:_Mlte.mcp', None) -(':Mac:Build:_Mlte.mcp.exp', None) -(':Mac:Build:_Mlte.mcp.xml', None) -(':Mac:Build:_Qd.carbon.mcp', None) -(':Mac:Build:_Qd.carbon.mcp.exp', None) -(':Mac:Build:_Qd.carbon.mcp.xml', None) -(':Mac:Build:_Qd.mcp', None) -(':Mac:Build:_Qd.mcp.exp', None) -(':Mac:Build:_Qd.mcp.xml', None) -(':Mac:Build:_Qdoffs.carbon.mcp', None) -(':Mac:Build:_Qdoffs.carbon.mcp.exp', None) -(':Mac:Build:_Qdoffs.carbon.mcp.xml', None) -(':Mac:Build:_Qdoffs.mcp', None) -(':Mac:Build:_Qdoffs.mcp.exp', None) -(':Mac:Build:_Qdoffs.mcp.xml', None) -(':Mac:Build:_Qt.carbon.mcp', None) -(':Mac:Build:_Qt.carbon.mcp.exp', None) -(':Mac:Build:_Qt.carbon.mcp.xml', None) -(':Mac:Build:_Qt.mcp', None) -(':Mac:Build:_Qt.mcp.exp', None) -(':Mac:Build:_Qt.mcp.xml', None) -(':Mac:Build:_Res.carbon.mcp', None) -(':Mac:Build:_Res.carbon.mcp.exp', None) -(':Mac:Build:_Res.carbon.mcp.xml', None) -(':Mac:Build:_Res.mcp', None) -(':Mac:Build:_Res.mcp.exp', None) -(':Mac:Build:_Res.mcp.xml', None) -(':Mac:Build:_Scrap.carbon.mcp', None) -(':Mac:Build:_Scrap.carbon.mcp.exp', None) -(':Mac:Build:_Scrap.carbon.mcp.xml', None) -(':Mac:Build:_Scrap.mcp', None) -(':Mac:Build:_Scrap.mcp.exp', None) -(':Mac:Build:_Scrap.mcp.xml', None) -(':Mac:Build:_Snd.carbon.mcp', None) -(':Mac:Build:_Snd.carbon.mcp.exp', None) -(':Mac:Build:_Snd.carbon.mcp.xml', None) -(':Mac:Build:_Snd.mcp', None) -(':Mac:Build:_Snd.mcp.exp', None) -(':Mac:Build:_Snd.mcp.xml', None) -(':Mac:Build:_Sndihooks.carbon.mcp', None) -(':Mac:Build:_Sndihooks.carbon.mcp.exp', None) -(':Mac:Build:_Sndihooks.carbon.mcp.xml', None) -(':Mac:Build:_Sndihooks.mcp', None) -(':Mac:Build:_Sndihooks.mcp.exp', None) -(':Mac:Build:_Sndihooks.mcp.xml', None) -(':Mac:Build:_TE.carbon.mcp', None) -(':Mac:Build:_TE.carbon.mcp.exp', None) -(':Mac:Build:_TE.carbon.mcp.xml', None) -(':Mac:Build:_TE.mcp', None) -(':Mac:Build:_TE.mcp.exp', None) -(':Mac:Build:_TE.mcp.xml', None) -(':Mac:Build:_Win.carbon.mcp', None) -(':Mac:Build:_Win.carbon.mcp.exp', None) -(':Mac:Build:_Win.carbon.mcp.xml', None) -(':Mac:Build:_Win.mcp', None) -(':Mac:Build:_Win.mcp.exp', None) -(':Mac:Build:_Win.mcp.xml', None) -(':Mac:Build:_dummy_tkinter.mcp', None) -(':Mac:Build:_dummy_tkinter.mcp.exp', None) -(':Mac:Build:_dummy_tkinter.old.mcp', None) -(':Mac:Build:_hotshot.carbon.mcp', None) -(':Mac:Build:_hotshot.carbon.mcp.exp', None) -(':Mac:Build:_hotshot.carbon.mcp.xml', None) -(':Mac:Build:_hotshot.mcp', None) -(':Mac:Build:_hotshot.mcp.exp', None) -(':Mac:Build:_hotshot.mcp.xml', None) -(':Mac:Build:_symtable.carbon.mcp', None) -(':Mac:Build:_symtable.carbon.mcp.exp', None) -(':Mac:Build:_symtable.carbon.mcp.xml', None) -(':Mac:Build:_symtable.mcp', None) -(':Mac:Build:_symtable.mcp.exp', None) -(':Mac:Build:_symtable.mcp.xml', None) -(':Mac:Build:_testcapi.carbon.mcp', None) -(':Mac:Build:_testcapi.carbon.mcp.exp', None) -(':Mac:Build:_testcapi.carbon.mcp.xml', None) -(':Mac:Build:_testcapi.mcp', None) -(':Mac:Build:_testcapi.mcp.exp', None) -(':Mac:Build:_testcapi.mcp.xml', None) -(':Mac:Build:_weakref.carbon.mcp', None) -(':Mac:Build:_weakref.carbon.mcp.exp', None) -(':Mac:Build:_weakref.carbon.mcp.xml', None) -(':Mac:Build:_weakref.mcp', None) -(':Mac:Build:_weakref.mcp.exp', None) -(':Mac:Build:_weakref.mcp.xml', None) -(':Mac:Build:buildlibs.mcp', None) -(':Mac:Build:calldll.carbon.mcp', None) -(':Mac:Build:calldll.carbon.mcp.exp', None) -(':Mac:Build:calldll.carbon.mcp.xml', None) -(':Mac:Build:calldll.mcp', None) -(':Mac:Build:calldll.mcp.exp', None) -(':Mac:Build:calldll.mcp.xml', None) -(':Mac:Build:ctb.mcp', None) -(':Mac:Build:ctb.mcp.exp', None) -(':Mac:Build:ctb.mcp.xml', None) -(':Mac:Build:datetime.carbon.mcp', None) -(':Mac:Build:datetime.carbon.mcp.exp', None) -(':Mac:Build:datetime.carbon.mcp.xml', None) -(':Mac:Build:gdbm.carbon.mcp', None) -(':Mac:Build:gdbm.carbon.mcp.exp', None) -(':Mac:Build:gdbm.carbon.mcp.xml', None) -(':Mac:Build:gdbm.mcp', None) -(':Mac:Build:gdbm.mcp.exp', None) -(':Mac:Build:gdbm.mcp.xml', None) -(':Mac:Build:hfsplus.carbon.mcp', None) -(':Mac:Build:hfsplus.carbon.mcp.exp', None) -(':Mac:Build:hfsplus.carbon.mcp.xml', None) -(':Mac:Build:icglue.carbon.mcp', None) -(':Mac:Build:icglue.carbon.mcp.exp', None) -(':Mac:Build:icglue.carbon.mcp.xml', None) -(':Mac:Build:icglue.mcp', None) -(':Mac:Build:icglue.mcp.exp', None) -(':Mac:Build:icglue.mcp.xml', None) -(':Mac:Build:macspeech.mcp', None) -(':Mac:Build:macspeech.mcp.exp', None) -(':Mac:Build:macspeech.mcp.xml', None) -(':Mac:Build:pyexpat.carbon.mcp', None) -(':Mac:Build:pyexpat.carbon.mcp.exp', None) -(':Mac:Build:pyexpat.carbon.mcp.xml', None) -(':Mac:Build:pyexpat.mcp', None) -(':Mac:Build:pyexpat.mcp.exp', None) -(':Mac:Build:pyexpat.mcp.xml', None) -(':Mac:Build:pygusiconfig.carbon.lib', None) -(':Mac:Build:pygusiconfig.smcarbon.lib', None) -(':Mac:Build:temp_delete_me', None) -(':Mac:Build:waste.carbon.mcp', None) -(':Mac:Build:waste.carbon.mcp.exp', None) -(':Mac:Build:waste.carbon.mcp.xml', None) -(':Mac:Build:waste.mcp', None) -(':Mac:Build:waste.mcp.exp', None) -(':Mac:Build:waste.mcp.xml', None) -(':Mac:Build:xx.carbon.mcp', '') -(':Mac:Build:xx.carbon.mcp.exp', '') -(':Mac:Build:xx.carbon.mcp.xml', '') -(':Mac:Build:xxsubtype.carbon.mcp', None) -(':Mac:Build:xxsubtype.carbon.mcp.exp', None) -(':Mac:Build:xxsubtype.carbon.mcp.xml', None) -(':Mac:Build:zlib.carbon.mcp', None) -(':Mac:Build:zlib.carbon.mcp.exp', None) -(':Mac:Build:zlib.carbon.mcp.xml', None) -(':Mac:Build:zlib.mcp', None) -(':Mac:Build:zlib.mcp.exp', None) -(':Mac:Build:zlib.mcp.xml', None) -(':Mac:CVS', None) -(':Mac:Compat', None) -(':Mac:Contrib', None) -(':Mac:Contrib:PyIDE', None) -(':Mac:Contrib:PythonScript', None) -(':Mac:Contrib:readme.txt', None) -(':Mac:Demo:PICTbrowse', None) -(':Mac:Demo:applescript.html', None) -(':Mac:Demo:applescript:Disk_Copy:Special_Events.py', None) -(':Mac:Demo:applescript:Disk_Copy:Standard_Suite.py', None) -(':Mac:Demo:applescript:Disk_Copy:Utility_Events.py', None) -(':Mac:Demo:applescript:Disk_Copy:__init__.py', None) -(':Mac:Demo:applescript:makedisk.py', None) -(':Mac:Demo:building.html', None) -(':Mac:Demo:calldll', None) -(':Mac:Demo:cgi', None) -(':Mac:Demo:cgi.html', None) -(':Mac:Demo:embed', ':Mac:Demo:embed') -(':Mac:Demo:embed.html', ':Mac:Demo:embed.html') -(':Mac:Demo:embed:embeddemo PPC', None) -(':Mac:Demo:example0', None) -(':Mac:Demo:example0.html', None) -(':Mac:Demo:example1', None) -(':Mac:Demo:example1.html', None) -(':Mac:Demo:example2', None) -(':Mac:Demo:example2.html', None) -(':Mac:Demo:freezing.html', None) -(':Mac:Demo:html.icons', None) -(':Mac:Demo:imgbrowse', None) -(':Mac:Demo:index.html', None) -(':Mac:Demo:interslip', ':Mac:Demo:interslip') -(':Mac:Demo:mainloops.txt', None) -(':Mac:Demo:mlte:mlted.py', None) -(':Mac:Demo:mpwextensions.html', None) -(':Mac:Demo:plugins.html', None) -(':Mac:Demo:printing', None) -(':Mac:Demo:quicktime', None) -(':Mac:Demo:resources', None) -(':Mac:Demo:scripting', None) -(':Mac:Demo:sound', None) -(':Mac:Demo:speech', None) -(':Mac:Demo:standalone.html', None) -(':Mac:Demo:textedit', None) -(':Mac:Demo:textedit.html', None) -(':Mac:Demo:using.html', None) -(':Mac:Demo:waste', None) -(':Mac:Demo:waste.html', None) -(':Mac:Distributions', None) -(':Mac:GUSI-mods', None) -(':Mac:HISTORY', None) -(':Mac:IDE scripts', None) -(':Mac:IDE scripts:', None) -(':Mac:Icon\r', None) -(':Mac:Include', ':Mac:Include') -(':Mac:Lib', None) -(':Mac:MPW', None) -(':Mac:Modules', None) -(':Mac:OSX', None) -(':Mac:OSX:Makefile', None) -(':Mac:OSX:README', None) -(':Mac:OSX:README.macosx.txt', None) -(':Mac:OSXResources', None) -(':Mac:OSXResources:', None) -(':Mac:PlugIns:readme.txt', None) -(':Mac:Python', None) -(':Mac:Python:Icon\r', None) -(':Mac:ReadMe', None) -(':Mac:ReadMe-dev', ':') -(':Mac:ReadMe-src', None) -(':Mac:ReadMe~0', None) -(':Mac:Relnotes', None) -(':Mac:Relnotes-source', None) -(':Mac:Resources:Carbon.r', None) -(':Mac:Resources:balloons.bh', None) -(':Mac:Resources:bundle.rsrc', None) -(':Mac:Resources:dialogs.rsrc', None) -(':Mac:Resources:errors.rsrc', None) -(':Mac:Resources:gusiprefs.rsrc', None) -(':Mac:Resources:pythonpath.r', '') -(':Mac:Resources:tkpython.rsrc', None) -(':Mac:Resources:tkpython.rsrc-', None) -(':Mac:Resources:version.r', None) -(':Mac:TODO', None) -(':Mac:Tools:BBPy', None) -(':Mac:Tools:CGI', None) -(':Mac:Tools:IDE', None) -(':Mac:Tools:Icon\r', None) -(':Mac:Tools:PyIDE', None) -(':Mac:Tools:bruce', None) -(':Mac:Tools:macfreeze', None) -(':Mac:Tools:twit', None) -(':Mac:Unsupported', None) -(':Mac:Wastemods', None) -(':Mac:_checkversion.py', None) -(':Mac:mwerks:Icon\r', None) -(':Mac:mwerks:ShGUSIGlue.c', None) -(':Mac:mwerks:errno_unix.h', ':Mac:mwerks:') -(':Mac:mwerks:macuseshlstart.c', None) -(':Mac:mwerks:malloc', None) -(':Mac:mwerks:mwerks_carbonNOGUSI_config.h', None) -(':Mac:mwerks:mwerks_nscarbon_config.h', '') -(':Mac:mwerks:mwerks_shcarbon_config.h', '') -(':Mac:mwerks:mwerks_smcarbon_config.h', '') -(':Mac:mwerks:mwerks_thrcarbonsm_config.h', None) -(':Mac:mwerks:mwerks_threadsmall_config.h', '') -(':Mac:mwerks:mwerks_tkplugin_config.h', ':Mac:mwerks:') -(':Mac:mwerks:mwfopenrf.c', None) -(':Mac:mwerks:old', None) -(':Mac:mwerks:projects', None) -(':Mac:scripts', None) -(':Mac:tclmods', None) -(':Mac:think', None) -(':Mac:think:Icon\r', None) -(':Makefile.in', None) -(':Makefile.pre.in', None) -(':Misc', None) -(':Modules:.cvsignore', None) -(':Modules:Makefile.pre.in', None) -(':Modules:Setup.config.in', None) -(':Modules:Setup.dist', None) -(':Modules:Setup.in', None) -(':Modules:Setup.thread.in', None) -(':Modules:_bsddb.c', None) -(':Modules:_codecsmodule.c', None) -(':Modules:_curses_panel.c', None) -(':Modules:_cursesmodule.c', None) -(':Modules:_hotshot.c', None) -(':Modules:_localemodule.c', None) -(':Modules:_randommodule.c', None) -(':Modules:_sre.c', None) -(':Modules:_ssl.c', None) -(':Modules:_testcapimodule.c', None) -(':Modules:_tkinter.c', None) -(':Modules:_weakref.c', None) -(':Modules:addrinfo.h', None) -(':Modules:almodule.c', None) -(':Modules:ar_beos', None) -(':Modules:arraymodule.c', None) -(':Modules:audioop.c', None) -(':Modules:binascii.c', None) -(':Modules:bsddbmodule.c', None) -(':Modules:bz2module.c', None) -(':Modules:cPickle.c', None) -(':Modules:cStringIO.c', None) -(':Modules:ccpython.cc', None) -(':Modules:cdmodule.c', None) -(':Modules:cgen.py', None) -(':Modules:cgensupport.c', None) -(':Modules:cgensupport.h', None) -(':Modules:clmodule.c', None) -(':Modules:cmathmodule.c', None) -(':Modules:config.c.in', None) -(':Modules:cryptmodule.c', None) -(':Modules:cstubs', None) -(':Modules:cursesmodule.c', None) -(':Modules:datetimemodule.c', None) -(':Modules:dbmmodule.c', None) -(':Modules:dlmodule.c', None) -(':Modules:errnomodule.c', None) -(':Modules:expat', None) -(':Modules:fcntlmodule.c', None) -(':Modules:flmodule.c', None) -(':Modules:fmmodule.c', None) -(':Modules:fpectlmodule.c', None) -(':Modules:fpetestmodule.c', None) -(':Modules:gcmodule.c', None) -(':Modules:gdbmmodule.c', None) -(':Modules:getaddrinfo.c', None) -(':Modules:getbuildinfo.c', None) -(':Modules:getnameinfo.c', None) -(':Modules:getpath.c', None) -(':Modules:glmodule.c', None) -(':Modules:grpmodule.c', None) -(':Modules:imageop.c', None) -(':Modules:imgfile.c', None) -(':Modules:ld_so_aix', None) -(':Modules:ld_so_beos', None) -(':Modules:license.terms', None) -(':Modules:linuxaudiodev.c', None) -(':Modules:main.c', None) -(':Modules:makesetup', None) -(':Modules:makexp_aix', None) -(':Modules:mathmodule.c', None) -(':Modules:md5.h', None) -(':Modules:md5c.c', None) -(':Modules:md5module.c', None) -(':Modules:mmapmodule.c', None) -(':Modules:mpzmodule.c', None) -(':Modules:nismodule.c', None) -(':Modules:operator.c', None) -(':Modules:ossaudiodev.c', None) -(':Modules:parsermodule.c', None) -(':Modules:pcre-int.h', None) -(':Modules:pcre.h', None) -(':Modules:pcremodule.c', None) -(':Modules:posixmodule.c', None) -(':Modules:puremodule.c', None) -(':Modules:pwdmodule.c', None) -(':Modules:pyexpat.c', None) -(':Modules:pypcre.c', None) -(':Modules:python.c', None) -(':Modules:readline.c', None) -(':Modules:regexmodule.c', None) -(':Modules:regexpr.c', None) -(':Modules:regexpr.h', None) -(':Modules:resource.c', None) -(':Modules:rgbimgmodule.c', None) -(':Modules:rotormodule.c', None) -(':Modules:selectmodule.c', None) -(':Modules:sgimodule.c', None) -(':Modules:shamodule.c', None) -(':Modules:signalmodule.c', None) -(':Modules:socketmodule.c', None) -(':Modules:socketmodule.h', None) -(':Modules:soundex.c', None) -(':Modules:sre.h', None) -(':Modules:sre_constants.h', None) -(':Modules:stropmodule.c', None) -(':Modules:structmodule.c', None) -(':Modules:sunaudiodev.c', None) -(':Modules:svmodule.c', None) -(':Modules:symtablemodule.c', None) -(':Modules:syslogmodule.c', None) -(':Modules:tclNotify.c', None) -(':Modules:termios.c', None) -(':Modules:testcapi_long.h', None) -(':Modules:threadmodule.c', None) -(':Modules:timemodule.c', None) -(':Modules:timemodule.c~0', None) -(':Modules:timemodule.c~1', None) -(':Modules:timing.h', None) -(':Modules:timingmodule.c', None) -(':Modules:tkappinit.c', None) -(':Modules:ucnhash.c', None) -(':Modules:unicodedata.c', None) -(':Modules:unicodedata_db.h', None) -(':Modules:unicodedatabase.c', None) -(':Modules:unicodedatabase.h', None) -(':Modules:unicodename_db.h', None) -(':Modules:xreadlinesmodule.c', None) -(':Modules:xxmodule.c', '') -(':Modules:xxsubtype.c', None) -(':Modules:yuv.h', None) -(':Modules:yuvconvert.c', None) -(':Modules:zipimport.c', None) -(':Modules:zlibmodule.c', None) -(':Modules:zlibmodule.c~0', None) -(':Modules:zlibmodule.c~1', None) -(':Objects', None) -(':Objects:Icon\r', None) -(':PC', None) -(':PCbuild', None) -(':PLAN.txt', None) -(':Parser', None) -(':PlugIns', None) -(':Python', None) -(':Python IDE', None) -(':Python68K', None) -(':PythonApplet', None) -(':PythonCarbonStandalone', None) -(':PythonCore', None) -(':PythonCoreCarbon', None) -(':PythonFAT', None) -(':PythonInterpreter', None) -(':PythonInterpreterCarbon', None) -(':PythonInterpreterClassic', None) -(':PythonStandCarbon', None) -(':PythonStandSmall', None) -(':PythonStandSmallCarbon', None) -(':PythonStandSmallShGUSI', None) -(':PythonStandSmallThreading', None) -(':PythonStandalone', None) -(':README', None) -(':RISCOS', None) -(':Tools:README', None) -(':Tools:audiopy', None) -(':Tools:bgen', '') -(':Tools:compiler', None) -(':Tools:faqwiz', None) -(':Tools:framer', None) -(':Tools:freeze', '') -(':Tools:i18n', None) -(':Tools:idle', None) -(':Tools:modulator', '') -(':Tools:pynche', None) -(':Tools:scripts', None) -(':Tools:unicode:makeunicodedata.py', '') -(':Tools:versioncheck', None) -(':Tools:webchecker', None) -(':Tools:world', None) -(':acconfig.h', None) -(':config.h.in', None) -(':configure', None) -(':configure.in', None) -(':install-sh', None) -(':jack-scripts', None) -(':loop.py', None) -(':mac2unix.shar', None) -(':pyconfig.h.in', None) -(':pystone.py', None) -(':readmefiles', None) -(':setup.py', None) -(':site-packages', None) -(':Modules:itertoolsmodule.c', None) -(':Modules:_iconv_codec.c', None) -(':Mac:mwerks:mwerks_pyexpat_config.h', None) diff --git a/Mac/Distributions/src.exclude b/Mac/Distributions/src.exclude deleted file mode 100644 index e63e55e9405b..000000000000 --- a/Mac/Distributions/src.exclude +++ /dev/null @@ -1,22 +0,0 @@ -* Data -*.Lib -*.MAP -*.SYM -*.dbg -*.hqx -*.idb -*.in -*.lib -*.pyc -*.pyo -*.slb -*.xMAP -*.xSYM -*~[0-9] -.#* -.cvsignore -@* -CVS -Makefile.pre.in -PyIDE-src -[(]*[)] diff --git a/Mac/Distributions/src.include b/Mac/Distributions/src.include deleted file mode 100644 index ec735c7b094f..000000000000 --- a/Mac/Distributions/src.include +++ /dev/null @@ -1,138 +0,0 @@ -(':.DS_Store', None) -(':BeOS', None) -(':BuildApplet', None) -(':BuildApplication', None) -(':ConfigurePython', None) -(':ConfigurePythonCarbon', None) -(':ConfigurePythonClassic', None) -(':Demo', '') -(':Doc', None) -(':EditPythonPrefs', None) -(':Extensions:Icon\r', None) -(':Extensions:Imaging', None) -(':Extensions:Pmw', None) -(':Extensions:PyDOM', None) -(':Extensions:audio', None) -(':Extensions:img', '') -(':Extensions:midi', None) -(':Extensions:pyexpat', None) -(':Extensions:saxlib', None) -(':Extensions:xmltok', None) -(':Grammar:Grammar', '') -(':Grammar:Icon\r', None) -(':Grammar:Makefile', None) -(':Icon\r', None) -(':Include', '') -(':LICENSE', '') -(':Lib', '') -(':Mac:.DS_Store', None) -(':Mac:Build', '') -(':Mac:Build:PythonAppletCFM68K', None) -(':Mac:Build:PythonAppletPPC', None) -(':Mac:Build:PythonCFM68K', None) -(':Mac:Build:PythonCoreCFM68K', None) -(':Mac:Build:PythonCorePPC', None) -(':Mac:Build:PythonInterpreterCFM68K', None) -(':Mac:Build:PythonInterpreterPPC', None) -(':Mac:Build:PythonPPC', None) -(':Mac:Compat', '') -(':Mac:Contrib', '') -(':Mac:Demo', '') -(':Mac:Distributions:(vise)', None) -(':Mac:Distributions:68k-shared.exclude', None) -(':Mac:Distributions:68k-shared.include', None) -(':Mac:Distributions:68k-stand.exclude', None) -(':Mac:Distributions:68k-stand.include', None) -(':Mac:Distributions:binary.exclude', '') -(':Mac:Distributions:binary.include', '') -(':Mac:Distributions:dev.exclude', '') -(':Mac:Distributions:dev.include', '') -(':Mac:Distributions:gusi2.exclude', None) -(':Mac:Distributions:gusi2.include', None) -(':Mac:Distributions:readme.txt', '') -(':Mac:Distributions:src.exclude', '') -(':Mac:Distributions:src.include', '') -(':Mac:HISTORY', ':Relnotes:') -(':Mac:IDE scripts', '') -(':Mac:Icon\r', None) -(':Mac:Include', '') -(':Mac:Lib', '') -(':Mac:MPW', '') -(':Mac:Modules', '') -(':Mac:OSX', '') -(':Mac:OSXResources', '') -(':Mac:Python', '') -(':Mac:ReadMe', '') -(':Mac:ReadMe-dev', None) -(':Mac:ReadMe-src', ':ReadMe-src') -(':Mac:Resources', '') -(':Mac:TODO', None) -(':Mac:Tools:CGI', '') -(':Mac:Tools:CGI:BuildCGIApplet', None) -(':Mac:Tools:IDE', None) -(':Mac:Tools:Icon\r', None) -(':Mac:Tools:PyIDE', None) -(':Mac:Tools:bruce', None) -(':Mac:Tools:macfreeze', '') -(':Mac:Wastemods', '') -(':Mac:_checkversion.py', None) -(':Mac:mwerks', '') -(':Mac:mwerks:old', None) -(':Mac:mwerks:projects', None) -(':Mac:scripts', '') -(':Misc', '') -(':Modules', '') -(':Objects', '') -(':PC', None) -(':PCbuild', None) -(':Parser', '') -(':PlugIns', None) -(':Python', '') -(':Python IDE', None) -(':Python68K', None) -(':PythonApplet', None) -(':PythonCarbonStandalone', None) -(':PythonCore', None) -(':PythonCoreCarbon', None) -(':PythonFAT', None) -(':PythonInterpreter', None) -(':PythonInterpreterCarbon', None) -(':PythonInterpreterClassic', None) -(':PythonPPC', None) -(':PythonStandCarbon', None) -(':PythonStandSmall', None) -(':PythonStandSmallCarbon', None) -(':PythonStandSmallShGUSI', None) -(':PythonStandSmallThreading', None) -(':PythonStandalone', None) -(':README', '') -(':RISCOS', None) -(':Tools:Icon\r', None) -(':Tools:README', '') -(':Tools:audiopy', '') -(':Tools:bgen', '') -(':Tools:compiler', '') -(':Tools:faqwiz', '') -(':Tools:freeze', '') -(':Tools:i18n', '') -(':Tools:idle', '') -(':Tools:modulator', '') -(':Tools:pynche', '') -(':Tools:scripts', '') -(':Tools:unicode:makeunicodedata.py', '') -(':Tools:versioncheck', '') -(':Tools:webchecker', '') -(':Tools:world', '') -(':acconfig.h', None) -(':build.mac', None) -(':build.macstand', None) -(':configure', None) -(':install-sh', None) -(':jack-scripts', None) -(':loop.py', None) -(':mac2unix.shar', None) -(':mkapplet', None) -(':pystone.py', None) -(':setup.py', None) -(':site-packages', None) -(':Tools:framer', '') diff --git a/Mac/HISTORY b/Mac/HISTORY deleted file mode 100644 index 5eb8fec9fb81..000000000000 --- a/Mac/HISTORY +++ /dev/null @@ -1,602 +0,0 @@ -This file contains the release notes of older MacPython versions. - - Changes between 1.4 and 1.3.3 - ------------------------------- - -Aside from all the changes Guido made to the machine-independent part -of Python (see NEWS for those)the following mac-specific changes have -been made: - -- Preference file and other items in the System folder now have the - version number in their name, so old and new python installations - can coexist. -- Fixed a GUSI crash when exiting with files open. -- Fixed interference with some extensions that added resources that - looked like ours. -- Fixed slowness of Python in the background. -- About box added (at last...). -- New release of CWGUSI (1.8.0) incorporated. Note that for Tcl/Tk the - 4.1p1 release is still used (4.2 was a little too late). Everything - ported to CW10. -- Applets can now turn off argc/argv processing (so they can do their - own initial AppleEvent handling). Applets can also delay opening the - console window until it is actually used (and, hence, not open it at - all by refraining from using it). -- MiniAEFrame: Preliminary AppleScript server support. Example code - provided, including an initial stab at writing CGI scripts in Python. -- macfs: FindApplication() locates application given 4-char creator - code. -- macfs: GetDates and SetDates get and set creation date, etc. -- FrameWork: preferred method of ending mainloop() is calling _quit(). -- FrameWork: different menubar handling resulting in less flashing - during menu creation. -- FrameWork: added setarrowcursor and setwatchcursor functions. -- findertools: new module that makes various finder features - available. -- macostools: copy file times too. -- macostools: added touch() to tell finder about changes to a file. -- macerrors: New module with symbolic names for all os-releated - errors. -- EasyDialogs: ProgressBar fixed. -- aetools: start application if needed -- aetools: use aetools.error for server-generated errors, MacOS.error - for communication errors, etc. -- Finder_7_0_Suite: New module with the "simple" finder scripting - interface. -- mac (aka os): xstat() returns resourcesize, creator, type in - addition to stat() information. -- MacOS: added DebugStr method to drop to low-level debugger. -- MacOS: fixed splash() to actually draw the splash box:-) -- Ctl: fixed very nasty bug in DisposeControl and object deletion. -- Dlg: Added GetDialogWindow and other accessor functions -- Waste: fixed bug with object hanlder installation -- Waste: added tab support -- time: added strftime -- twit: a windowing debugger for Python (preliminary release) -- BBPy: a BBEdit extension that send scripts to the Python interpreter, - by Just van Rossum. - -The following set of changes were already in place for the 1.4b3 -release: -- The standard 68K Python is built for CFM68K. This means that PPC and - 68K Python are now largely compatible, both supporting dynamically - loaded modules, python applets, etc. - As a result of this there have been numerous subtle changes in - filenames for PPC plugin modules and such, but these changes should - be transparent to Python programs. - The one missing module in cfm68k is Macspeech, for which no CFM68K - interface library is available (yet?). -- Raise MemoryError on stack overflow. -- Python now always uses 8-byte doubles. -- Removed mactcp, macdnr and stdwin modules from standard - distribution. -- New releases of Tcl/Tk (4.1p1), CWGUSI (1.7.2) and Waste (1.2f) have - been incorporated. -- Macfs.SetFolder method added, which sets initial folder for standard - file dialogs. -- New py_resource module to handle PYC resources. -- List mgr objects "selFlags" and "listFlags" members now accessible. -- QuickDraw got a few new symbolic constants. -- Qt and Cm modules now live in a separate dynamically loadable - module, so other toolbox modules work if you don't have QuickTime - installed. -- Old sound mgr calls {Set,Get}SoundVol removed, version number - interface changed. -- Added convenience routines setarrowcursor and setwatchcursor to - FrameWork. -- Bugfixes to time.sleep(), FrameWork, macostools, -- Minor fixes/additions/updates to demos and documentation in the Demo - folder. -- Internal changes: - - Ported to CW9 - - mwerks_????_config.h organization rationalized - - Projects renamed to reflect architecture (ppc, cfm68k, 68k). - - various defines (HAVE_CONFIG_H, USE_MAC_DYNAMIC_LOADING) no longer - needed. - - shared-library architecture made more conforming to metrowerks - documentation. Check xx plugin projects if you have built your own - dynamically loaded modules. - - - Changes between 1.3.3 and 1.3.2 - -------------------------------- - -A major change since 1.3.2 is in the organization of the files: The -Mac folder has mac-specific demo programs, attempts at documentation and -more. Browse the HTML files in Mac:Demo for more info. - -Also, Toolbox:bgen is not needed anymore for normal use: the relevant -python modules have been moved to Mac:Lib:toolbox. - -Other changes: -- Uses final Tk 4.1 and Tcl 7.5 distributions. -- Override preferences (stored in the interpreter/applet application) - allow overriding of system-wide preferences. Explained in - "using.html". -- New functionality in FrameWork.py: - - ScrolledWindow class - - enable(), settext(), setitem(), setmark(), seticon(), - checkmenu() and delete() methods for menu entries. - - event parameter added to idle() method - - windowbounds() function helps programmer with staggering windows. - - Erase only visRgn on an update event. -- TextEdit interface module added -- Waste interface module added -- Demos for waste, including skeleton for html editor -- Scrap manager interface added -- Ctl.FindControl() could return reference to deleted object. Fixed. -- GrafPorts have an _id attribute (address of grafport) allowing them - to be compared (since a new python object is created each time). -- Standard File folder no longer changed on chdir() (this was - introduced in 1.3.2). -- sys.argv can now be set if you option-drag or option-click a python - source. -- Various dialogs now have sensible defaults. -- binhextree is now a bit more intelligent about when to binhex. -- gensuitemodule fixed to hand '****' type arguments. - - Changes between 1.3.2 and 1.3.1 - ------------------------------- - -The main reason for the 1.3.2 distribution is the availability of Tk -for the mac. The Tk port and its integration in Python is definitely -not bug-free, hence this distribution should be treated as beta -software at best. - -Another major change in this release is that the Python I/O system is -now based on the GUSI library. This is an I/O library that attempts to -mimic a Posix I/O system. Hence, modules like socket and select are -now available in MacPython. If you build dynamically loaded modules -and you use any unix-like feature such as stat() calls you should -compile using the GUSI include files. - -A third major change is that the MacOS creator code has been changed -from 'PYTH' to 'Pyth', due to a conflict. This means that you will -have to change the creator of all your old python programs. The -distribution contains a script "FixCreator.py" that does this -recursively for a whole folder. - -Here are all the changes since 1.3.1, in no particular order: -- complex number support added -- cmath module added -- startup options ("option-drag" dialog) can be retrieved from the - preferences file. EditPythonPrefs hasn't been updated yet, though. -- Creator changed from PYTH to Pyth -- {mac,os}.unlink is now also called {mac,os}.remove -- {mac,os}.mkdir second arg optional -- dup and fdopen calls added -- select module added -- socket module added -- open(file, '*r') for opening resource forks has been removed. It is - replaced by MacOS.openrf(file, 'r'), which returns a simple - file-like object to read (or write) resource forks. -- Added AppleEvent URL suite -- Added AppleEvent netscape suite -- QuickDraw globals are now all accessible, as Qd.qd.xxxx - - - Mac-specific changes between 1.3 and 1.3.1 - -------------------------------------- - -Aside from the changes mentioned here there have also been some -changes in the core python, but these are not documented here. -However, these changes are mainly bugfixes, so there shouldn't be any -incompatabilities. - -- imgsgi and imgpbm modules added -- Various hooks installed to allow integration with MacTk (currently - disabled) -- Added support for MacOS Fixed type in toolbox arguments (represented - as floats in python) -- Added option to keep output window open on normal termination -- Decreased minimum heapsize to run interpreter -- Added progress-bar to EasyDialogs -- Fixed socket.getportname() -- Renamed MACTCP.py to MACTCPconst.py - -- Many fixes to FrameWork.py: - - Added window.SetPort() method - - Added optional bounds and resid parameters to Window.open() - - Fixed apple-menu DA handling - - Fixed activate-event handling - - Added default Application.makeusermenus() (File:Quit only) - - Fixed bug with keyboard input handling - - added idle() method, called from event loop if there are no events - pending - -Toolbox modules: -- component manager module added -- quicktime module added -- font manager module added -- Added color window support -- Added support to obtain pixmap from a window -- Added BitMap type -- Added GrafPort type -- Added support for PenState, Patterns, FontInfo, RGB colors, -- Fixed GetPen and SetPt arguments -- Added read access to members of {C}GrafPort objects -- Added support for cursors -- Provide access to some QuickDraw globals -- Fixed InsetRect, OffsetRect, MapRect -- Added support for various handles such as PatHandle, CursHandle -- Added functions to access members of Window objects - - - - Changes since 1.3beta3 - ---------------------- -- MkPluginAliases.py now works in a virgin distribution environment. It is - also distributed as an applet. -- hexbin from binhex.py has been fixed -- various bits and pieces in readme files clarified -- mkapplet bug wrt owner resource (and, hence, trouble starting applets) fixed. -- Compiled with CodeWarrior 7. -- AE client modules generated with gensuitemodule.py now use keyword args. -- img modules updated to latest version (including pbm and sgi support). -- Everything compiled with all optimization options available. Let me know - if you suspect errors that are due to this. - - Changes since Python 1.2 for the mac - ------------------------------------ -- PPC python now uses a shared library organization. This allows the - creation of dynamically loadable extension modules (contact me) and - creation of python applets (see mkapplet.py). A number of previously - builtin modules are now dynamically loaded. Dynamically loaded - modules are distributed in the PlugIns folder. -- Python modules can live in 'PYC ' resources (with a name equal to the - module name, so many modules can live in a single file). If you put a - file (in stead of a folder) in sys.path its resources will be searched. - See the PackLibDir script for creating such a file. -- new binhex module (partially working, hexbin has problems) -- Python now has a Preferences file, editable with - EditPythonPrefs. Remembered are the python 'home folder' and the - initial value for sys.path. If no preferences file is found a simple - one is created. - NOTE: this only works correctly if you start python the first time - from the correct folder. -- new img modules, to read/write/convert images in various formats -- new MacOS toolbox modules: AE, Ctl, Dlg, Event, List, Qd, Res, Snd - and Win. These provide access to various of the MacOS toolbox - interfaces. No documentation yet, but the __doc__ strings provide at - least the calling sequence (and Inside Mac will give you the - semantics). Minimal demos are provided for most toolbox interfaces, - and the 'scripts' directory has some more examples. -- AppleEvent client interfaces can be generated from aete/aeut - resources. No support for objects yet, nor for server interfaces. -- Lib:mac:FrameWork.py has an application framework (under - construction). -- (PPC Only) support for building Python applets: tiny standalone - python applications. -- fp = open(filename, '*r') opens resource-fork of a file for reading - (and similar for writing). -- option-dragging a file to the interpreter (or immedeately pressing - {1_}> z0A?hB`CfS)K=0Ni5Y!`}?++TUE?uvA@g0EGe5z^q2L$@4fL;So`cs6q2Yxm}9TD=w z!CDwnF9N?O&H>(cF=;&`?Em3leO+DRz3bOs>zjQa81B13OQ@p)8Mj`!e*MKbfNFpz zzE8jh0N97XhhKU9`t_F@|Cgofwdq}beb}U%oEN~6x|5J8{gYP!`r7=hI%<>)te?fl ziASLIH9u*@W|RYOVHX{O~(aA^}tN2?2hLS#ne29jXl=?Mr~DMIIq;{r=#_ zKIpQ(TT9nByf!%4hn4AhUk!oA;r`bV2)&yA(5;&Yj0?{14{lAoa{Wah%=Om>6Sr@D zkGK_aHvZSahT*~2UVpLgCcs|1{z@IgXsrGaN!mC3;_KXBkyjcS_;Cg7H|plEGqC0y zHPJ&`S2qhaN!)q`V2|`6tY6U5xSB;~uLJg~d8ID#JsOc%Rbc#0J;1atAs5xW(=@Ds z0OxSxC$C?B5qT)mllU%yK8gbM`-5AC6SrS~t?}IT>+>HPX2?en@;&JJ#5=F_oxFa1 z2GX&AEuea@GY3r zo9g?9e@tMMdVTNV3=R4~J>U@Broslv13oP0}U$-Uf;_-bC@-7{`Qt{qKX+ zm6Y{M#-ljX;T!`(48{H+{I7Dv8;4OuCk+0COoK~_pOEQgUy`x*ghlTimkz7BIH>YMsF>j9j9-@~aGk~aYMK42)s02yJnP1N5(eFB=l5%cxM zZ&I#4%q8_)0y6d(3E)MXQ6L*k0QCv4s+%BV-A$w&&OrT~bL%jP=|TFS`I5@pJlxoa zPdO)6wb1~H{S(UC%UMA}81EC-{^3L)&Pt6p--n#>xR-MiRn};PGUHU{%>+*RJw{{S z`-59RKZ(QaHP~Nwlk)dN^O_Pj>*7GFL?ciTsd$@a*EY-wvveQyUrm2MwC#QPt4TD{ z|9$ZPyVwVi@?p@p-odVaPyY{7&^H5WWgrb8X#=Qje+B&cH>5Y9!uKcow?z22&7dLv z32Q6xuS=7OtGjjcHYuy`)xFnP z3rcPLy}n3)|9c5c+qfBs)F;VaH$W|>rPd8LTQ0ztMdP-CZYYcJeZiOy?9<&3diS6) zKmYA{*1->#8FFtg{^{adg{ZM%zNQfAGAeo+{LPK)7k|O%4%qWk#_!Dk&ioZ9=L&sG zt-MQZgr0pDi~fM$TVnIG+#Is{x9{0wmL@t&sjS)2(Xgjsk9j<2m+WNL{A#sSOOiH^~v1Idzw zLe@?Zu1?b&EEbcwG0QPi*`(u`qjoNB=f)h$Ic=xMtdi47wK#qBOuw0E-P2~a98dR4 z727YF-JLyMojsjBW=~gF_rC6~ecgR#_hbF>cz;)yIi4RKb`PYBu}ib~lb;cE&400Rw`e=)p81+UuBU zfTv3N;;dQ96G1E}Li#8(IH$H5IAB!^pJTT2?*__ra}cT&zUWyi3?eKw3sZ;Qj+Hy zqUW09a4tOHkWvK0m>I zXIVgJsIZx~GRdiI38?K@B^VJGI0L8e@=zgjSaz;3RhqO)wmu7e3%|`1{GiPo zo%PV|F`uza7@^QG;+s(`l>`i?lg#*rw_{EwXF(7kjkEb_B5w-5LWMZ@< zqtGWM=s>f-AJXKKla>QKVKp?kUrp;$GRxr0Oc(s#-+w9#z-K^AK!GTrfTjg}1h`81 zLe{#3)PWj7M;BpaO=Xisvyg{z%wu7&I5stjDO9zZl(R*vhO%%#Tj#epanV!GlK%SLf(If$F7aM~&Xqd3@= z<4_97pF%O83L*Gq_{Y?a#ek!^4E(OxdwP;YM7o%qhGx;DsX`jN+J<_TlFo!f50PP0 z<5p_oNPa4ZTtQE1P|C;y$pHP|k+pK}V1(~uIAEv-Bl2m+gvzlItV9&1FX4xhdFtfx zr_X|PYjryYN@$TIe|2&81yt{L;ZHB%@8#%U5TQok7>$Vi7g z1HlK~fjFl}_Vvt-c)4f8bI%5Hk6SdIxY_4S3xrXi8s+8t$|)}Z@K8rEw!7;NX0w=* zk%&%85=rZl5#=mHY-bYXV%mkNt`zP~j^;sFJ#&0$_}E#Mrd=4?oScF=Y81u-p=gMP z^+7S8FU@!*KY}%jwhB;sLV#gi)W$>(>mS5CTM4u3rE=6>|1oZl>ezB$6BIHY-EN(# zt*1Y`SMCaxi3W#f7uU}nq%9hdx{4mosEJPF!7jy`lH#zrmgcNDuBt#lBSUI8TUNW- zK<#GBYPTA-0_ei(w+f0mZ_FtHI%efzvZMiNKGHJtNXx8(q%Av@&)FFS>2u;4tMo)Z zHRTK!lcQ=`d8~@JBx)Sk&Y-Gy%m+@R66fC;B`nf zKs2!2I+GX0&IUaX(~6=-m7zw?RcZ>;i5kM)!cU~e8aG0hgT8K+ab%I7BZY&^SPcUz z9vg>=eH>K&QgQ+&qY8}ZPsA0)RB5O~F+UrX&*xobr2}Y13_K2%%JR|+D~k9>t+b~O zR?pC7bYLnAPfHC{jjH2tAQLX9&C5_V!t1gte4Zg*f`v+@5pdZYh3pf;UsE|OszTZZ zojIhtRhgWf+ETQ#7A)$Sb1JBCEvlt4MQqWRe7d5Gz?%eBJ`J|oFbh>Fd}A=AelF=? zux0b3$*iW&Q7b$6u{YQQ+7=HU4_H1VhON>WAXSPM>oOe9;?fE#Vv&NMA1x(Crx(2+ zI6-oBdg&ct>ijeh>E6!$YW;0akK52w%)5?x?(7r27tWkLef;TRTq#alxF#zbRnt)v zFrq|}y@im_Lc*;q37k<}sbf_yS!qBNJ&sdHDVgJJn4u$WJD~r~!a@W_K*1`OX1UgY ziHdRZQ^l0GP;v3Mo;rQ}#Ng>)!Uf9Fr;eXGa&qwWP+O&O=F8iTd6GHPDi+Zkl7Uf} zg9T`Q3Wn_{PC}ra_(!C#8*nWHxJ;>lI{=A8g!8?6B8{|0!qnX10bAhfoLQPFG2;}e zwq{2vpSGlSF|HP_l`}R@0l_|w1(;uOv;b0_ok|mDNUJzHj#jfY^Ad3eHq%N^fqaD@ zcJ5Ms0>H4UN0NzE&78DSkPk)%bhVYUaLox|zz~ypE+$F~;=rV1kgLD$qa~vdWJ&8bA(9_#Z}SZf zp+ZNLc-OTJ;CE1i7>Y(NWUXMANM28x&v+}QB&<|Afn6xch^J1YUd*~FX25p2dB{Af zvY1^;$Al~$X7}7k*vf(OOAcWk(T~`6u%}B@CHTTU(b+!3?y`_4sq6)ydI^n> z4c>s!#W80ZaofYcTe(7QZq0% zN4ju0W4TwV-dvHmCBA`hg`f5_*t@mW}3TP8F?7 z^cz@Z>PWK4sVDQm_9yZn9TB@s1Pm(V3sVL4)hSu&6QleCv?1qNsw#c`CH3_Z)u9V1 zhoa#G$dD)u#iB;06=)g&m#kzlpUJeDfhkY##8&mC4aRNGo{5bFv9Rs~`hy6ep}ZPn zm};uP1C!FWgP`YuivtlfyzF#x)-gv>7Na$L4yWU@sN3h<(pv0!+k zNzG=Nf>uV9zf`5XnM6U~K^)ux>-{|-F|t#DgQqW=u-IM++QSqI5@?@QY=iL{9IC#B zn%OzR686|75CddHJ)(9aRuQvgjV%??{NV{!zd6=M{WHbog1|aX)S1Hl5HxFxnHI^Y zjK5^vqpX+gVhMT;@~hpE5Q&xR26<2l2rE~Vj#^~QmS(rc{FRHfd9o~|@s|O2dTMfV zmj74tB#V$10FuEHA9(@|AGzZ{Ux4{8Yn7}JSp~3UI;~47>k=)v0C4Eg(W%nm!{(u* z`5g3Rw&Ro5Y{&HB@>Kc4EG9c)m6DRiEK76>WUm!OHhY*jx?^2lI5I4l-7Q+JL3hf6 z276YGF$Wo>NXv^^6E_x6Bd{kyFk??b-vE*+N9{b=S$Kk4MCZEIv7uZ6X4x$(OqAXi zQseo&V;#+B(V`V&br|U>Jfg$R%gN%HqpLmV$#7qqAn*{8z-+-pBd#J-O&wss;}I7O z;~rWE4X)LJm=BdboxfdeK2SpfJ|R^Er8TGO8PM;2*;te0uI=x~Ej4@+j%BS4K9js; zt<+!zUzY|ufb8BI?8maE22aAYmmIT>wzot*aa{xXP{N+p~ML>$RH!cx&$N0H*dGCnn4QLA8zvTlKtW2p>MKU~1i zz;FC~qNfYQxIeWBdOdkcCGURpus?OE#J}Vw?+r`tE)Ox^5mNt7vyG#p2h#5`&w!R< zo;-sa(@f{2IhN07X3f?l>I3a0&<~v%w=<=Vv&qrJZRUhE>&#AKUe=2o8D3~q0%d_Z z3KW5&NqQh?Jz8$m6i_Wlvo8f9LECLHi3@)m0(o;fUz`Bt$AZ;A3`NwBpgDjPhBFuK zsGW1njtZ=7=27E2@!?r=+wc^4sAJAb;n*t9w!7QEzV6LCZL|=C)f8f&jJPRTwnyA4 zHW%LlA%IESKMP|eEDPY#*zwcHpN*Mj2Y!Fb&P^ddnZ7=BTZjF3{LIM*W#ksqPgA^z2hfyVc*nIMoDgGRtl1;1wD-=CmIFd|F zxaH1q>*i=Tf)zz?nd?^+r$d!6wUF{9ZSnusRtPax*_~>~8*?1~8X`sQaCPHO|9w0M zJY1@F2zmup&bRVd)EYa9d*h|NGrl(QvL@*gUz2dze;2aFR~2|%B<%D>w*al%JaO7e zlFt^-Ru0Q1CDLF8B`XNOS61ixmG7INm6uJ$b*b0GuItUp4mz$ioz0Ht$&2b&@^(&7 zW%BwS9mz(jNDbXnoUJyo*bAynj^>1F(>keS)~Y^nF*}+pR-3$J&6GIp`ZC*)*gJjx zeK0+Z=99&=H=nI1gH;yJ-u&8t^&x&gM6&vF31#-#yv&g2fih$(dK$=LKKRVYoR-0l zv{Ft?#5u{fz-RPNTLlY-+bULt67JPuax`+2t6P!tCE4nnw$K%GluRIK=w)M#Sj5`M z$go#z45MgO0}>~*%BhkR1;hzB@>w)4l)TLVS1%#M7S@TZXXw~8RZ^nC^=K-Mn@Ow! z4JOfI(jg{_r}H_>Gc@=paaoPmarNMAAh)Xu`zt@jWgXq`eRsc3{YBEWxzOG_c zP*Pl#gJy`+8si>1hRdPDIO<9htoP9qm=?6rRi3Temt`nFom(x3U#axxKUWCJebgIp zYpJF$TUFKc<*2rrb74Kunbd2 zPvq2yw&wDdDJ4+vQu(4deJZfE7gv@!((QN?*b&DccB~N$HqLh8@6YRpVi`owcou=}hG&tX#PJ#k7k~EjM)zyoWx{B7%y2to31N z4~`~N6YPF%=eRYzgk?rR+`K6AID{9Iyq1@$FbHtSir#DurR3v}L+jhxUGHARDwN|& zc}*zg^Y_LyOxE>dnu;vIhg*X_r+3X)LJyUNf3~g6Qn8p~si5+*KB7ZgYop&u`AU0L zae^Luet~iq;slV~t3V0T=jT|ctWAp0l>wZ7*k zBX=)FH0(j9s2~lv$)WsFHt;{-gf+{8|5mu6a`(Hs_C0mH9MMRVGEk}Kse8gZ68nk^ zQGKOcXp)YZ%>z}Ej#lt^k`CQxtxQQncW(n5NKl>8MGtDCl?m5cNwIWv#< z3W+JODi>kC6||FRz^D5>?m1!x?k=A{R)wX|>Xwd%N^78VkTtLXYWQI7vxc>gw{!DT zRAfc2MAte>DzRSp+Q?^J`e1qV!Sd*5xjgznSN`usSN=dfS{L*(DoMfaxkRJoViP(krIkxW&i_k5uC{A|=7RQG z&sf>`z{2tmONCg;WU-=pQI+DbPIi?ws1TuAz?tzRj-X!#cVJkZav+7&||)M~--}?gH&~duieVXHo$Rl&5P_ zkfHvRpCR}0q)kD0K^)kn$z-7&bu~Wm%9Az`tO)#4v@}oHa^GgJmgL*qi?Ncs_I2&w z*WGJ&_4If5_Q&I`lfawgP~2-+C_%NHsM&v5WOug)SgDCVQU85q2byyGQk7UJ#b z)(@Lj8n52T0~9)595xI!+d-oMd$DAfpf5V2XXz6XOY5<1oSsg^rYM9pMgS~=2%wC3 za;76H2em_Uc2Z;uWN=7$gujHPGh4060Sx79NJ?wACZEjH*rjw3@<;u?T$(AzFNYjIt#S50^B02mx$U-*~ zE*@VGh8ge$ymAkHs4;+@GDflvqd37zBsVoVijj#k&&jb`MMbAzrRPCCUaASP>fx|ASfS}AYq$T4w^%$ds(i{vBe+J-! zQa+U@jL)37Fm&vxV`qIB2E_q{NzsvD zKVE03E^yq)f;r@Jj{A=21(~F?^>jF|P;^zBBJ>>1PmbDjNFQ6OLTKVSdyJdT0lt0M z+IgnIH8!rL^`l_^D-X_M1Q?9uh{*Ce7?KzyO>k+F!Xvh?30Uh(wl$6V3diu=Ug#g06`oK?Z+EhT0c^eFSyy)Z+s6cjWO~MoPtuoJ z_)>9!(;`eD5pAM(M^-s%9}VPGxM`vf#J*QB2O324b=0McQt{+d&@@EdF(U9FL70T0 zO?RiOc&B%xL=gnLtNb~p7)`@;F=17TxGN#fRe)W{ElR*;6-$unNZ(p))uouML#rO{@`q@AONN<_{B zedZ&uuvT|DaI6t|{kudHNue`oql*yk%10l{#& z&dk7U>SB-Ky)|spP%NSJ-1V`mg^d6yp&=Uc)8c?ei$g=K{vP&GMN{i&Dsn77W-kbo ziPMdylLt-zpvk%z#WAwdd^c4Jr#d(OBH4iuI|e z5>(M$aCd5lACcZ}Yc7Wnq@&vD{XVGz*BQY=b&Ek%Nk% zF<{gl!{x_xGFOtwMuJgp)X>Ok>$QMI$V7T}-U+}WZg$?_9%nmd3J{0A5 z?}9J!{T<~>=$sd$|Nq2CW0SmlNWA?ahC<{1lbB%%cbZMJ2T_M|W7 zL|&VV+}Q3_UQIAv*%e0xC3h78M1#2{;Q6YT5O8So=@sOQiV6{sB?0ZqjUC||{k_2Y zN!yDePGQhWd0JOuJZEJZ^LCoudjkZ6SRSgdnw<_}Q38aQVicfM?UK7=AH+9IWGYOp zK4@eKDo8LwEnYRC*Kry{8PlMIX=QJTY?BmO%*IW@C+r;Fp4aZSgKL+}&C2y0D3GQp zrkrVIGLTO=q%?sRMm>C(E?8C#+b=MjvMD@FA@4Z08*N)_;5Y`gl`z?(7#`QNEMn$y zjL^$cHbyvO&?pWbMp#7pNl5ylT1ij@JHIHDC~_3x7s!B0q{y3Sh%BAc?gf~x;DK0) z`^#NL+?3jwsBj5@@1_rpwY{y#N_PclwREGp`#TK-svJJL$BQs^ckxsxduW^#^6F5L zQtmBIid#q8O6czH?CI?0yBE9m!#}g@vHk;(^>;t^vyGMV*nd~CQjT$tF}=hTjD3o% zJmsjXIHj7rc_ERJ(BglbZc6CLO=YtjUYm^GjDRCTCHb;Pj8F|iwFr_7&Dl|MR49=F znHe!gSYt5tyCOV?>mnBoWz%;0MlJWcQ0z-DZaUWMX{gk%S;f3tAx}S+Qp2Qo@ zpj6rb&DuHIPMK*3JqNHog*OSHvX_%8cok%EpgPg*IA7P&h6&z61gOqAVrV~#G{6)4 zFv8X~p3cufoFJ51wza--f@pT4kXmk}NpH(}_j&gUOiJRrdgQ@p=F}{Ry&!%wsjOY# zcz7v{`lw$wf)PACuv{bMgS&GIA#8|JBpI5Gf!8`Scs~by!z(Dr;OebOIEUKU_P2^d zV*dOztJ;dI@SK+`UR~i+hSn5}QZpO-kgP&;&nN)tY>IlSKF(LXX9kjL_sqB#^qi%KIkC2Uy!gEP9b3}{`s zGa$^OL&n{^eZ`BvEN4Wdu6m52O(QX;61l*g1vdRXcwv|7pIHW%hd|(3Y5bk zGFL0cy_dvC{A3!f-)5o`(G>3JJ(4bzGSwkpojzr}pOokN|R{iSAdSne{sSa9|@=9hFtxGoW<})xD zOn2HCsepC$E|7;9&UR&#Oq3O>>!-~s)m=+Rtkjs$LcgL-&T~#lu0B^M`3lz)+`f85`&tmyyf|2U&MJK9(b+Wj1RLW=riRUcl5Y zYe*^_or~4A7ILx-#Awz|*|_4RTfuNCdeV0hSW-D2>)Sx$8_f4w*y{ETHW32`tC-9bs6eGS} z%=CbDZ;3Vx$-6U;#(3E)w2D^e+HNdRK?eQdLZ#hu=LM~feamTYh^@3F9P!;SJD5(} zm=16D0b)BHS$o2&w2o3-l?*QCDy`ZA6JnSscLmK|;jBW3t5jfm)dH)UiWEBQuIlf_ zNDs%FSzoF=vMN=^t1Zws)vknbV$F13l`5rbD|r^35(~I1QK6C~PVbWSs!&@)i(5P6 zt*WhtmXo=sX055HGJULyrmaH1mBt*ES+0PtZ-FQr&5SjTPJK#5x>jM3q?5B|emWPJ z#Cxi#58Bbq$z*W?*Z$EmYk>Y_7M{%dp6DjCaEW@PCt#|oSQi8&N1fIOXF6KkDzur0 z%^tt6RC&qW$`na$!Hp1@^!%ndq4v=%3_qtdoRo92!*n&q3@Jgg`o@EJKzm1I@TzM^ z?hzs!tnwv`I46%G^TA z()G^gvz)DkQgn^9nTO0)|HGbU(RuO_(QnLcc+WK zs;%Vq;2nD`I}(X{t8&`$iv!(Ox(Wx;8PrO9tTe3TI5VG2Mh6ny0;0sZ0Iy8qo?olC zVB@_}$d9(%HvJABIxv=@OQd1ZZvProWGZJ9i~6gIXIg0m>&PbRBne$d-EK{rvL!nk zx)qJ|MG2JC#Sg|&$&tShZrZw;i*h+5`O!>HWlLzP27b3e0sEQpx19d=F}B{9RWLVj z;VLYMsd!XtVvir_(hU*qe%x$f2<;rT;xyJ07y%uCxD9>H;%&jG5B|AK3*Vt`kSrgF zxZHxSQWGQjvz23G=U)P1H4mv;&bhZnhTNS*NhKlP_voHbBf#P6a0uZri;E*X16yqZ z_e$b`@U@MrU)B#?37Ue~_w76`Vlnp-ST9c;k%ujGqI86+Ga?yyX7#5Zm|sA;@+!7q#!cHCO*yqn_p#y^@&YcCI4es-9-WWJANMx?Ow>d$_)nu)E1v z%?#{KUnPkOx%sj3Bw__^8g#-WFCh{EY6u6H23W z2c07pVde;bR1t@=gj4sfPDLX71t7e2vng3 zum*MjeMw}0%S#rNwgl0+L9F1!3d)qPqCU{TcIB5y35uepCV(J8u?vptXQ;Hg$*NxN z@f82o6rOE$$`Dg{ui&DVm?rJHy?dx-=9etwa=BJLKd*09ar@D&)bl2lvu`R{>y*Ph z!d4J;iXF>p%ab-gYY1t9FPzGEh_*QH*%3`P1vp(=AT;26>C02|epL@uBwEEhGAFkD@rFSQf#ue1X7LlqS`B5BLv`1-VIfg`(c%h*Ow{zGY@kyg5CiTNklV87iNFl$G!E zY9<`DIpLV+UqbdN6Rw5f@X0+ia7jK(Ca2*`AY0Zg2`RF1p~PiqFz zREUJo>;k^^Y64B3Xc~a$hxO+{g=nPBugA2cLJ6q$NQi!FGD!}blvLuFnVHI^+~)X>JrP%zD3%E(b^MYV zyTr6?GSE?QfeJbUE^D+%$X<^~XQ7|EWTlfCpk(G$_!nICV7NTDx{RYVoe$aS;Kfu% zD}`}!9g)eB4xijLy*s%<(=8|jEIMn<`*ERa^wO1IvEw*p;LPaI`gnkBI zA>uhe$wRxNXHG-JK(#z6(>pLfGPN7Kipnc90oi1Hs*s4waP8)5`rwjV>QQI44z}z@vc5=9Kob#fm+zOOD1%-heyQ{NdEpADg ze~z%X&irowp>m96xYlRd&_krq?2{Qv<1wDg`z@4dL@6qm$vrUb+Zsenl=fuCEz{#s z+7pbIqkN>YX8!?+Q7A%zMIaFZj-Jh4g}Zo}S{~NN*^jl|_Ox zI~^sDh7X(tcMGDk;E$=J;9dK=diQl5Fni+t2jczR z@zsxl(;4mqKlf+2F%~7Y`Du!38lto6PAYm7WS*)eIw8%VvFR8GbdIrw9|kxY!CTAX z-Ei>5qLs4jOL~9_LTP8P4#`oHPqPI+`aRtS3PKF)7}H#(F{}c`2k)SwL_je;l3Ex` zwt`U<)DG_{EGB^DX$&XR?uA4I>64mZvlJsuTi7KWwwMCW(NjF}3=0{GDZnE>)`8(N zs39?t6AtaBOWPe6lZ7^4wWAJ;RgOjHg`{*Q>_VZk1^;R3gk+hPtM#OBfr=ZstmT0a z0%p71O}D{B_h3v5qyb8!pv8yv#uQ{oYwEm23z9(UJi$sV8QSBe@-PoPQ&xWWx9q#J z*4@!fHFzqYpYR{G7rLq-x9Gu~)I;|+MDq?a1Vx!S`AMw>`b0$xA24k35JVkkO~TaE z0#zU`8i(sBQTZ6b2Xgi9S|+N4!67Tl z2|u#+77|F-VOI*f<5c>_-7a&dQS3M(vNsG6Me8^yhZY@*bB6-6JoN4}#69Ue4+Zou zU?)DWcOBvkEP(<`YeS5(TNoY2EP}2nvfeiaVG@}tAObYra!0D>$QLU?*c$AUY;8JfX8os^%1gsN`N5QM9Nr z<*3>Nca*4N^Mt@cbgjuY|7|k*T`;_gY8@pvTy&A8z^@Y)x%sPLVpI!U0K3OHam8FJ zPN~S0Rb5w6dEQYhN@k}l-wqV!c>Hm*s|}+cx3*9M^i_?; z+Ppgv`03-1mm9sh8g%DRH(hryT`*8PMsW-g;*8+Db{~!4R3ThPG*O~gmZgOnas<$P zMg7i&yF)5d$$nIss^qe^Dn$cwgKHeTekas!HD=8e%uiag&vS6h*m;Q#IAZcQCF1D# zFA^r^S2LdgEdvxF@?}zT=6EJ}WW^IT?HE#zjt_IhRMsjxGK{8!T*+eOdzQA^HNQ6= zSg3FCWe4OG2c*Ffueq}&?VO`~uc=WQs0|J?|4lJopv>8VjX~FOl;NN&<=LeiOH8^N zZ=NI}4otUlA!F<5e9j80a6W=v*6nL~P>7i5IGzvj>0!?S+({MfLMc4%cNP5DWM=lqHvR?p$aX`~L(_G&m)^Cg!dKK?(x3Co1P_R4~YO3k9jw zQ-VQ?^)J4!XTRCq*B|fgKk(S<7fY>E49Lp%!}1KhxN18?#J5upz>5XCx=5L;|K81w z>lmo6qd~=71xAz&_0^+9o&}MUbEjh@m-5r4>Q9yOdN4s@1zyVYmI~?hQlP|sbaxT7 zE8Xxux@a^C?8sN0d2R%FUy z73o_p#N}!glVfeXO=H2hX1bxEr65e`6r$I%;~!SgM4|aQhfSo}reyVtX9nI@#nCyT zGzu!rVej1Q5l5|5lJ76E-TKjOgdEJBZst&{1GRgu#W0rG#kjo>Dyr2v)~PVEldp0L zO>=NEos~lKnxTAd*(2z2t$jTa#n!ret(Q8viiC`eUJ?1gKB#tN6xnTP0q5zhi-)5%| z!NLf_i8&W6uc|O^5|)QFY8u$s_# zE7LP1VxEqE<(PSa^ydm?O*&Vg3#c)aW_JaWhU8*$u9z1=E0k8Lu+VJ5;>t7YLD(RH z|HMYOoY<(;(W_)GB=PR=U}j$kwqUN+N?av#c!{S_Yu7T(hSsxev~;z1m7zj2eI-n5 zLZliLtXp+7RJjAysfrqUq&YW_coLV_Qwt0iOx#_uT7e>5N_2UV!hAn`E}n8&u?&c# zo%4{qccU+1szZmK(lxomhbs({unM|^Whhxndg88fm-$KJHqKXRE4&S>Hc$cXy@|ev zexWV&q%b;FmZ2*T(;P4=Yw9jY7k?}%SU5iuTaQT1D@LsHhdFU;?)W1BuBNf@ZA9e+ z@JH9Xdps+|`&)gktysB`0DyOo%?#4U!5`)+N)lr`BEI>I?UDwhs=FucTZQF z`LMZvZp76ALR@b-PI@H|TsJP>9`g*}{mBk!SeI$63mHzIvU5{2`_2I(Y9WyezR)^> zZ?K;PS)@GU_|PWhR(p1Qp3}VtNOmD+^HUs^qg%wekJP&<@IL@`@Yv`f4l#53f+qohmtSug(6>0v zN(YU76H0h~|G{Jlw}Jp|ff}?lw$Y_iCF{qG3Lc<;}f&&FfRY4r^3<#YxB{Li88i7M=ZU_gSF|Nylz6RBnUK`RFoCOCR0VXY=8J6aU5zTms_ZaI2qVplqoIzl>e>SSS{gzkfu&+9Ye^%9Ty`|>XcNkREU}UYeHVww1C0wW;LxC*E zWG`RWV|W}^qspL|^eHoIS7qpwhF_U6|6%Jg(vQ9wp=!-V$;j0;7hP_J?E#?UTeqq{s1~Z!rEO5Ng`mOYyi&S+Kc_ zVJqz=6o1aO%^PwDZAbKxZgohUYe?~5O4ejMcD{npI8u-@#uvhX>}RZ%xgR>n-O(yL zu`JsM<|ClUGafBOv?bu5{_JL&LBQ(GAwD?iL=R`=OC>A+1|8%Dkx$NWRXKN67P_~2%{ zK7r7hMg|@`|F8Ra;FZWAD$ONp3}a18jo3h1#`BuHfN#}+j6wtoW${WOA1OzW{dLyy zRDa7gfUm&-xZ*-OpxuO4EwJ;jTGfJbmN&~+KWOGT`GyEu;seMzM)yUS{t%-Ta=7W+ z`FK~6jz1uEg09T!aukgzQQ*m;MxiFQDKB1_-dRgeWZ;3EweVelsl=yXx~diEI>=H9 z2^MaI$4HFmP#$W?R+R~!E}|T<*oaAmlHalE2GZpdq{-Z@9)q1!{v0gn%B!eFCOgci zz2)>|K|+V|Z;2wt!AP~LPZs>LxNPOCXVeU|Dj?e9TDjGlWF@qXFZ@*b%p#SalW1-H z^IrC~T*s2thnZY5Lw*fn5`zwk`ThT&z+167o-Gan(MnnTf(WOB+v)<4a!Fn$@>NoF zvye;vY~9!U9)^wQQZu~{QkdHuv349JVYuFFfCiV*ZspQ6|-Q-q1BN)a%{sJtd ztlZSypJBq>eDM>0Q|=oa-I4C|)WSomVBZ)35f2R|Nt${Xw4_PA5Dax%a*CNM*;zbc zq@9Q=T4<#u#v}xxC!bW)_}EjA9DCZoulq4N_SDng)wTMur=E`WJNxw5TFyRUhQ6Qo z15kU``3TH0#Q|6yJ`JVZ#VVbKlJyY``!h+UA$F)p&Hgjkg}j4IJO%FqcwtkZ$pFpVr0HVi`B^Dm5P)ATXiC0n^pRQ8JS|!>fszH1hgXI>`D%Qbj zM2rrXM{yf4ZKvpxHSH8V9z%4{e(++X!O}Yycn-n z)JYzxDLFh~la&b*t+8d*wllu_EGP$t1fW3Rs6Y679e*837S(J~R*_^;1#98}uK7F# z_>ZcvQAsD21i?OT124ebKI`2}>~4-wdg*Z%tJq0XIOPau@FbgK85YPmYGJDiQ?&A; zRW^m(6K;h1VJoEju@%o~v2(_gtbkJQxM3G5Bi%)%xG*Z52U1j6*ULtFsTO4gb2Be! zjBKiNJlqG9R+4w2ko%L^GRi^tl?EFb zro`=HEFk0?YB@C*>iC_0kup>jG^+m3a;27Et_a6;+VyU zO3i^nm^sy;!SEC6pnis~Y_n(DS*mj`etaUCV!;EGmvYlZvlZ!3D0_Ic3rdA2|4iyv5?rLq$wAFgp7D8-@9s1QkxNh>28E&Uyc^ux zDa~dj8uz7S(WY1#fP%~!d~cnMe3&&c0<)d5EvK@6&?7~Ic+7PmhqAEF7i_s-kmIPZ zswx7=SCvX-i!5q))#tq&#S9@aVeA;zAkH<&DRoB1El7khtEejB2P>MWns6PcI(J8f z{i*{Tj6)NFR55S6#ctz&4ylyz(G7&rJku zcdaurAZaVsW`z?gqSZnU24FF0vr)&5wPlF%^q1KZLsWrEjYphE>E;3q&4YS2WSg>` zahE3%9h&@k;e(NGwBe9UsrxNWD@ifxFzL^+5V*T@>uRi*FCN#io#bz?shx*NTR)CR zLgvbWfitWpM(Kfe=tfWMJ5P&==|P3W-76i+QFb9+L2h%Smmum>dCjQiPxj!m=7YcF zKe(kA>^}j6xV&@GFpxQSNWQWY*#4|ECM##Ibe#IcD1*)wD$pr#noC+Pm&(I$Ncsd? zz4!`l?=%xKkZfz5U?Y=UOw76pYd#bq$Z-`PJ0}4e@ytI4(ZOYbJ!7Ri$YvvsRJ5Z< z|BvQnu4ZgXj<|Q2(LNyVaFDUli!mf&xXC8N$6`d7kuoSw813ZCfrn*ajmH}+Ih6;# zjniR16*<9i&rPu=&Mx6ewJM?Qbvx%;SK2i-p6i5qb}|d&G|g9)c~)-HI?1O6bws;F z+LZeN-oZHoNU3qQ}3K5IA(omyZmW6T78v?gQqC*DL*T# zwtjM6(KAyTEEZut3a0g)dFRCRC_J?ubO4{6D}<->#|yw`_#`~-C#~5)ubgF*sPzn8 zVo#~CTL-=4i5$_42PthI;S;1c^|4>QAdwrBTgiAwU-;g5z;>`3$5~icy#R2R|%iLADuRO7}jYIv*V+% zm4||6=WcGI)*P9>Jg-5?9lG&CwltqbCb<2gh&WyOir>3akyw6)rVGCZ)sISo9pNmn&@NR&<}1-e6L%&=lkk!K1DDxyig zIDz!>R43=5om%1)}KGe>$=>KR#}JrjXzTh?rfo>{hX*Q{(W_so^bP|E?`yj_Qx zc5@byozCY`7X|g#&Jo)HPIXx-%^SEtQz5sN{arIJIBv9D6K|A3+kqbVGDSj9x0h>` zwH>brztKYHGU}bnz-2SQHqf)P_z~)6$#JTV12_3#+T_(xH7j`o8+UTmMKfhVl!KOz z72GALx4nXRol2Kuk58el1iKcH?6!|FT60`Cf&J?k^k9Z%2z!Xp;C5{)fHI7oSiUflNAjj@y;$9 zRk-zAY>Nfs-D2?TV9!*ZP%ybRf1qYZgH=hXviX9?N1N7}{G`n1nl1EtLVn_U>}di@ zT?~tAVhC7_{l%mWBc@EcdX_esy)+oD^Pmp&DJ8R5Qa)HY3_Zcx=dgGRcqV90+|b}& z#6g{eu{q#>d%_AeH?jaABDw}PC+`M*NcwLI;FAS5pE1f8T(Kr$cD+3uM5slMAhdF` zOO|%LET7~~I}(^;#ObS4~+H@qv7gKpMoU`6)N6wyONh^>3t z19cxRPinYXI76|b{Rw8>aqFdnP+M=8szG}Djm=BxP)V@n^ z%ADnqN}SWS4_g@xp2oh*a`5$tS(Z+DCsXoA@X|G3u^Of3R^pgws2N9yc6n|@4@vH6 z<%EUO5cwr}1tr}pJwz08R;l$0;xM#1+E;eqsh-UrDL+y40fT?Q;6J|%uC{Y7-vx^V zlvQdsr&#kSkuF&K#Kjr4mPPf8(Li;AF2gPDQ+OCah)6wH?Z}A+j>Kx6LF`c0xC)hj zWaT+`&NTJ@asBZpov{(|qCQ5-xLSTv4J58|ehmHH5F%$z+d56reQmmq7_%3x4Dp2< z2D!5#%3jjwl9I;d7I2lj@+woIWiikKH8NY=EDgF5PSaLpxdDo-eDi#{)sjc8GN{?S zi@`h_)uJnx-HpNBik^MwC&jg%=Et=AB93nKFmT*UYfqTLhL`q^dxs70DHXC)?l}Q6 z3drRNco{e!1ZX8!S2}P39n%&tJ3w2KxmmFbqW`RW_&~Oe@x~f-Wpa3*CMh?9Q9O0+ zro(`*mpX+^R(*$W-XTvU@5ULQeF;rb*-K<_JcH}|Bzt&}HKMx{DhCEv>J%1gV>%U zf!FsG9}wj8s>GsIm96k*kv+2^m&N!XHxu@yeoCsfTU=Syh8E7({67n z>rXPwmBTf$c*+3H@^Xg({E7SaEK z(@_dEfCd+Q3JdI5Of^^|W-9>X*gw&Ls_B%bG8tm2y^ePMdtNn_2D9#-saGj{ zqq7A%Ag1kYY6d5O=oTk!9%8mBJ1grM6Vw@5!ck_bXz`mvLX(QwqQ!3z(eGTUWZx(E zqBdWn0-%c3Cn(mvaw%b!F7XSJ3u`LtVJqxGbN@Y~&iiWn@Xpj|2Rjz>j=$fBjOJ&k zwtL~}IZuiz#>a_6g~@d9n?on-R=kw}gtE%(PALH=E4N6<#9W!ST)hw-J|(|Dhv`<* z)=tdv^+VC%?U2!E<(mwJ{X*H-e;1V8b!WyTZ6j6om7Bs82m5_a*LIp6oe^(w4&FK+*oHd$PCf?swTxt(=nJ4`wtPLj!Y6PCn>c z?R-ccH1F6{LEx;H$yNyY`{OdOT~>V^(WCwiIXUYB)ovAc@PRf;TNaMT?TyRRs&2f( zB+PTwZM7?z^#8N>F57J!+1g-@dMykz`KR53GzgbTnScODzR|Y+BTI5wrz~5)r8+*f zB$QSXNRn9ukT4Pu$l~E^^q}9T-=Swc=?Ce3jax=0KuLC0opb6!k(qJJh#e98`t7)N zyum1iRvSIaO~g*p5gC_;Fsir1VC`t9#$bhLhruARQoG5d6((qf3Zv@N&1iH`>qXY= za^O3C#@!BTx1uxrRwdh_e=E|!+qP9(YyTy+Q&qc28b@2KzEG1_oDdQdxbcEhUsPH) zcZn;wpVrp{3s-I#bC4L1&@FBeHU`;jGZko!Kd~Et%KKMOZg!wF=TES;$#6xE79_Qc z%%<@v7^9)k4t>K|Ok5+?p-R9`0L)t-Fm_v;xv3BDueEnKTA$z9m~74C`|+Dtw3<;H zdLv7HaP8(Lb=5zy)T9wpsC#hSf>C$fqWL< zbP@qJV%3FiPj7$vd)QZjc(Q}d#zeq#wNezTX!Y#(;UeP=Z81?)QortZc)@<3^e+Y{ z{r-V*)p6?M&8}vJ2VdZ32#G~B0KfN%~Y$>MwAV8xN4SD1Jh#7yOkSI+b z66Bp5Vdd_R%VeL$qJzjbaW@I-G(8lXs*>+8A*^=dk41H0Uw)Z50b#h;mrF`FOQ<$8 z)T!oD)g*=B&p-5_DXm&l%3zejYKdxE_vDh}#CpD&ePloY9R;iX5D9zpGon{M)Xx+t z&`*Ju#pqrsGM%;Z)(5FPsLquipyum=H(Bk6rikjm^N8Ve8ZTiY#BXxIxkrmbnh{0q z4vauNc{ux1NNYCbxeI;Mw0oMBczRtTlj|@6;TYn6biQFG>d|En6466#KOQBlZx^OJ zro!^|QdmFGN<}M0G_z6l7@S0{dRfd7@1t_MdGDOIQO7lBR@8URIf*E@MtbxA_G&3=O>1`aOe~R-|Fn{RiX14K(kx03# zde3;r^G2a%+ofya3J(kP6hTqYf^2vemeksMmhFEQM=GI`&Il0Lp++>%awlVnrS(Tsj<) zsARoaAiQ5Y35Rl;!dsHD5kh2+Oq-bxIfHilx@6zLa!s?-bb5%bh~XS|G1eo%(*vD` z4`TDM7JI>-g69*h&@elOTCSV)fk?~^t+;U19=|2g&RZ@kg|`zZ*nRkuD<0rc&CX#}BWlXHW07RbMrZ_`5*EnwkYCig~)xaZU94t`9lCYe{h+mUy-c^K3h!<&2z zs=+_IoMKfcfbg)1G+DJ2$H)cqkMrqApN>%zE>ZY#;7hpP2%uBAZIagLa_%J$%4|Sv`tUB<+~&E<6JkGm&{C$Gddf2 z|Lcs8yxDddV0?TQo8Uc;FE%eXAunfq4jjU-G{Bw4=S;JED4J3`%b{)j(l&8sZECb_ zu@5Mhhyh$O!L2JT!FCG*8iamjf6SfzfyW^stwJ$WGp<+crfHnOc9lL!w+fe128Xi` zEknGy!J9KNX;}M_`6HhT2BjomIMUC?m`wg^Z;{P3vQTPTZQ$4U*uG@2pmh#Q{(78W z`F!u=%U-Rwf&CU4qRoCareqU?Ticz>sI;rO^H2K*1495eRHIIYd&shWWRKcy zhiH=gp>R)QX{2xxD+Iw5j4GL;dZr|7Y{xfZxEm+A%SuNNnBg}2Y;?_{qz`Rr3RZIt zgrPK>9irb2gh3<9fZFKvo8kDFzzl`cwHY~CAF}x=$ek~z@{4G7N?Rf~ekPg@q02cZ zwW!2wb;eG58_&yF(=6mBlNx;D0I`gS+>R*UW!E3q zIA}$-{c%0s#P&*zw$N@UTPf^BVS1Wi$H(|OYBs>g4kv`l5}jrQ=4JAc&%`xsc3gwj z7X~E+JRO%JrtX2OH6gz147h`gWD$^lFx3vD2h2mmF>+&@Wx809Dh@;>1elUAw)q5E zyGJtT#w`V>t~}4tir2uVwVqmGHO{K3PIOQ26R4yL*i-M^a=+n_n7dZDrlfo~7422{ zH=eR9G2hiDqT9t_P$iP+*`OO;Q`vPM z92=Ac+J4mVpLT(a>>rDF&Ts7y>D(+9V4CzmBp_Z<^}(^}iZF^6a7HS&y{Mt@2rC~5 zV!bN59Q~tRr~(vqq!~hyrb~&9YiU%Q<(yE|yTeg-4oMQ=G3q-pT&~QQ3%qXfN3Eosf0(e zDC1#KMY!1+7Ig_Ug3we1IE{a|6~SM(a~dXqh__2h&}z%JU9k=_J%_0Z(v`^%48(GR z*Oa6Zz`SymWCH9EhJUJG1EJhNEe7I}FQKGnVFL!0%T9QFOqnE<+H>cYI*H9ht$EUD zcy*|B7@lL0a>`)e1Vx4;rt*J^%_62gU@j5X`%AteXDNc!YTA-D+}932fDqXdNzx+l zevCw>bFIF-f1eV0UTtU)%?5cIy6*2)!3}osslEF6<4Mo&veAURLxnIrI)&lsV_W{p zy4i@Mn#e_bw@CCt+4B?n#r57M)Pp!j|jk0W<^?F4{ zY(zCEnU%%U)oWeHwFCb=J49i_V%tK>J7BX{J5YfGD&j9bzxYR3^hQY39TxjmfG8u8 zu5@NQXe-i!p071XI$X^gyAFU}MXAgwb!9k}06I8oW7sLD9crr>SQM}12hSfqdE#7f zd}CAK1f%L%GpmUPBDnc<<*_Z6=ir;45-gX>L6|TM-{<=y4QZ;mu_bquwIG}Y7k08Q zsTlcoP3^`Iw;b4f#8HuBG z*`MeJwJOJL?8K(3M6W1HHx(ymbq~{5yMq4I!mlH~DSlIEaj|-?O^px~#@mImkVP1e z9WE8KBg3tF;5;501f?)s8XO`OD^O6;vmjkn4}7O|eziA{b9e-|(2eh$U8PJBcs8D}Q_~}-*>2MBIs#I^NfvUIhINcAG0~m_sUyx* zUpNfy_0D2wGnd;SR9f%Ns*cakQ=jvLm0K6SRBtUAby&VarZhFa_{>b zHaQ)VaVzFv5Yyb5t}B4~6{!4^d_F0in~To?t3l$FXsk`6dke+yuB3i6613zoaq=3Z zE46~`CEvkH!=5|z(1|pm5u7_3H&QveC}0q6M2SG(b(OlE81 z1l7>3Jq03u_1vr`k0l62Wc~2yqznX__l3bfQ%*#ZPRWceL?w1{4i2FBb*4?age0G^ zrtoajr?+kHajJE*lUeytN+;iXu6&8%KC1=?YJ~0g<+URlbd+M={WwN$rMclcFlCw zXfdD?W+I#~ZP5S0Y|HlXA)sRtdKLGVshsg_<+00pDAAxB9%aU{p=w-sL466I;v#$* z9AHf|ZE`$0y)@A1Q-O*lpx7<>e`pXr!`Wb7c0COEiAakIKg*xOAF_XOh%5-oNvM;Y z<*OBQcP2X!9ursBPL3c>{>zE5(KOek6cOWM3AbBvO6itX+OF;ze{C$-%9R4CUtcF% zfNbma2?mVadV_2OwKrZByF$$i%6ucBy{{&Co91^0u~#1pgT3C3r`@;jREJ?xk~ZK{zgqxq~07U@DY4?4wdI(XH{ls(<@3(OizAO6SbV+zO|vCr5`W7=tDN<3SRp zu9urNcZ#D zz6d@))o^HB5}l!-gRASeOIR3wyMmd1gN(>BJ6TT!&q9%V6~RJLEhtFTKwMukrqAAnQ!w~d6=iTNFfS~eoaO5U~1HqG`5E7v{WLHe3{b=K#H4l zK4=2Ds+u`{0B=3;n{#I=FJq-(exhTJoIMQ#--5l#Odd9MpgGoFH9;@<^`5M<*+Eno zk8o(=F0XVQFHqmdtyqXK6$_MOvX5UA0(K3bwIK9sM{p5U3T3~AHx&5F+E>oQXn1i- zvH)czyrH}aAFoLh3DyVwF&p?M^yAW?E2u$W-DhmrRD_5sJC!<;)jM)hZ^K2&l*iep zo1jZ=$AMBX_XtpHBWTo?tb9$0T7(~Xt5n}Em$DTvD~|sY1JbF&)SH;#I{g}+hrj#X z|8}*9S@v)mdN6X@CAv>e&?-I2PACF+6=d>#&AIuWl75y6biB-vVhJusQ}=1mwrrLl zgDLNspB_FxO8#Yk4+i~Ya^w!@@J%x4-Ax8xeDV36{ug%!_maWqN5i{E!+Us#&#~pl zAhdRf|33No!B0Ou_~FHq$IpqA*z;E+ddSJL zR2Kzx9TS3JK!wfRSsXdLP-{}0n#k=-Z1jy{+n%iF6jli{$a9GRl_ze>#*(v0Lp@a1 z9cLkrDR6l+WMw(y%%L&ZDf36qk)q(}L9_*tV1@dXoyK4AkUdm%08$x=5gYYT2tLES zPnc0soJA@oKLX^zYmARWma)yGepHHX(T6M~9&bsXOE^)KxQ12t2Ky}4HD3sNp<_EJ zmJZYg%uBvlPbs0~YCG63rfVrPgVf-m{OJ5(jXwlahcV2^5jwLzy_6+_Z>I&oCP+v7 zZ}=Cs!cn>~VFY@i34^e6nc@8z=g-72fdM)1q{~y%T0MZ}p08)ecpt${HJRj0M$(9L zi#UXRwK3n|3P_HVKVsa zs6RaVFKFemAH2&h;O@W0o zTC%Bxfc2be=B$;yKS@{VG5SE@K%v?UQR~P;BYDgCH03V!9K=42LW33ErTT%q$-J@Z znG~LgcowGm07<9J`H&I^{S*b>)2UL-oNf%_UGO+Xe}28BQi)v1Hk23al%xE(+CF^* zH7H+?RmtE>Eaw`JO#x8MLC6yy7gVO&V^0oD86%;joR~|2tq?SOawa;Ll%LdG0Cn&x z6~fmGAXtk-@t7$^jQSR~IDZzoKPC(#McNB~?3}|6{am?6u9FsTk}XzeNsr8z13^#w zSB9vhO^}94?g*Ka=Q1hAa1+JkNGmn)cubHt@i@f9ESKq}^&jH% zLDHzOI~pBmlt>2cDd#0}msP05p3Nw;59a*{63v*kCZs7}G-G}-&GKfKWYo9wn<+_urz zr!c<P8CGOgfptWxnnP6ORT2eQ?4nG3XEPU5^@S4Z>Q3 zU1|-(T0>K7v~@Pj8hjJ(BAt#{i3&w;?T4wP(#c-(446XLoqFqu$C0yH#p8*Fz^?FY z3~XUIFk(?Vg-Mo6CX~pbMA%tufP-J?R>NZsZjm{ue%A}Uwg;blh?m#k&Rvy^Fm)ox z3nyzhqv76M>Gg@8Qt0pqRZr<8Mmu!N*$I7MjE5eb(x8b_4QPX1w@yC7J*Am+$+kNm z56lkinA*1opWur2gQ7#5)B2N7y0-Yiox9f#UQUNvy`SK}LkYq{Yn2@wm8j^VBZY>Q zq-nNS=mCadT|MjzcpR#)qa;zY%cKkO7m~jQ2l{+?u${{J1ga(R%Il<~$L-dpS5V{h zj83qiRrk#e8sx#m8g$8!W*xq30_OJTWSKAfyeqp$}M6G2L+NjY;Clt1C$I!sGRNy|OqYgB?A1vCJ|80C$3% z6(=b8h_R8hQY2JXe;uQ4XObCZ*QHc;-e+$ZJek~_(2W!6mYv#k&VJ5BFhcX9F2Gqa zHOsKVVFJgo%2EU&PX3A$DwUVn^irT1UGm=$1O+P$K?pi7xcv$Hk#36Rxz4rtOc}sO zSlShcw&%zi7(yJN|KAK*;BOtp!fAkJgPnd`ASyE|5O{iPhXeM zHR_seMCg6zFIx|fi;c5lqYHdITM2w+TFtkyoM%d{2 z;iuB(OJ?y|_@k_Bum$BEs$6b&}puP&Mtv313Nf%*qtsMGC zg{xo@iX?@EZJG6wq%r96I5<{P&VF;~hqYxTuy-S1GsG?5SG>6iSz#rHG!uvEx2@^c z{i_H+Et{U~l;h2bqM|Pd<|&t$N@tqrl#{bruo8HlyFtq;Pa8@R0%Aq?p}2;S@kbSP z%uYHpkDxV39bTMF`uzmx%y zf7Ql*qJKU`z$!Vg`sy00IPE!}(SA3sPQb_vOb2&IqYA6u+<@O@1?^#sUQhGw9p4+( zewWt+Mh=-4j#aX0e9VpHmW+DA`cMlY?q7#5yXv@u>sx^VM(v1Qfvf2)^9ZGix$mCt>U~A8 zhnt3yoYE^^PIg46`XyqWqi&aU|M2&L;~UF$jxVj3ZMGaUgl>3hbJ4DG1u0kQa%EUd zJb|HZhLxevlldw;MS(t>PAMJ`9kbT#0-^&!$()BsI$b;;rT3%c6V0e01z?1q^gldI z1_P67Lt4RVDCzee~s8P5Px44eRv!I4^%$XT}+k8BDa)_(m{^{6f2Ko2#_V@lc`7A1LLy z(e_Ih#vRc&0EDWEWH0-4oE;A;W(8LNsu=2Mt@c1*3lZM(m-p3dJprN6^*Uek)zm1_QsRr&%VgW&iTKe@3EA<-N{DPeaAVW z=d)o97MO)}6`d&do_W&Jbxcr`SvFlDuV#X?)%R0djao*{2+1z`Su*VR`*-^H(C?=I z`O)3GM|TI??V|6&>jo{WpZvpHR=e-(KVrEg{N&>dI7H*J;~8k_g7&CF;6;1yb1XQ! zE0_ih<7bZ^?egf>E&MfkPK5XsCEmX8SOPnEP+&~eit2?fuX1pl9waY6{8^&m_?bN$ z;H<`X%mG*4Iu+e2uG1ck%|N?C@eePO4=-U0x+CXIy7$fTwo@g_uD0!Sn+D$r=b<^X zlKE7PQIJ@)k>3&JQskfjR{0y>K6mhg;A5SHpEaNR&7d2drbo;4w4sj9Qc`)N@YDqw6fdmG&J;GF*AoF6vt!Vo?z%SF$yXG5!aSq6^7sS zNqc)X7BY<(aqOb&WMwyjlFUfC*bgj1PjiHS743>w^(3V{?G&7-aadHkPCbX$xy!FP z4*r}{&~fm0BBs2Lz1pDXd{bVWO*25=j`{oGJAgerxn$>dgqWmHbK_<#d(5ye+obp7kX8lZHWrJI2Xo(Rqf zXw06&`5g9+5=2d+GpEsEL!<7|ymPY^Dz41LzqwNu}9Z*@2|&^-Ikdy`_1itX${ZpvEY5gE`7Pr$^7gTt^uM9g0jzr!B72A@gu(3AgF zLcsR|&V;i|Zc?TL8iMo-!{E!r#C^c6y_CFhz+bf;dt`YNGKW_1ReQZ?i;5Q$w5dM3 z*ra%*5GQsBUBYgbVyFO~v6)}WtO`o=j52Ji^*sL@&5-$k@`%StDc|@^CK!62C8+YV zWO~FeLcKL6ZL`zpOyE(1s29K@M0qtR|+-aw$X+C%Qa~gx9Kz9@RmKAe;2<9&CY%YOYnu8+)ryi$^``Z>rym6hH zC;^UhbVTklY?)@<$wx9DJDe1}GpjSwv=>mq%cNnd@llf=m-`NeYcaz6$NWwFI(pUh z`U>Hojeg}61LmZdk{WGP?I%_$o*AvaxX(-O2Lnv*C*CI}=7wkDooE&%hoaLKwQ5<(Nws&E`+;(mfYd~ED?KbDUccnTX;99hXa7h{9ybBG?O zqtU3D3DQyN=CR{~+a;OCU?NiT&ZnQ%4q0#CsA zA`3JN8{V1Z&6>~2ybo^Q;b&Z_{)X&*r4^L*>!dqU&uy3OWM+o0Y$w=9EZuRIl+t3b z$P$hVU@OW69{Gxt=n(PKJv8DF5et^5C?nrDfN@Gb^7 ze;rF9BtqO&+uM7yyqUq0?d@~1y$$a4KTZ0>qu~%^-hV6G+o%6+d)sPzGt}|hncw0- z7&UMc;wof7DR-_oOUIb$q&yQeA<^3EUie3}`@w6Y%Ehwgk|Se=qk1+U;ahgL*B3Hr zJIs4q0UXsQ@&p<$HaN$!WQI=>nLA&tc~|hQo+e}~5-1xAdDI*o?$NV4!&J4{0nI$Z zy-=ENarP`T*q)q-9G$0d$5B+HY}{mD!#*!gt@M)uE(^QLEH}P$aanG$7wF~Z4x6ah*j{HxH zE!}%7vX=n6_l6F8T`HwLic~$$7^alCrCz*2Z$G;Y%8Q#dIE;VRaEBEc+Ce-jG$o5- zlo?H=gThU$e5|dZo!y4EhC8F`) zlo+-;yjiR7nKFm(nKGjWaD4lsSbS5!gv^@OLTe9qs$Hq>n~aG7E`cvwk;(lHCK|1F z8JdVIwFV92jCJ@d#i)w<4(n{wmD;h&p&>dL?OD9bis89Zt!bd~KFvVSnm@CqZ>M^! zHr!RkvZ+?h`jP3cB1lsdv8kEasV zHgk4ybrks~TyRNINYLLY65*kUmW<0P-Wf`DnxsR&$RWL7myBR)wh>Xp!HbqR!c7a2 zDK5Z+H$^^Syp&|Zs;qLcUQ&7yy|MYK4DH7r?REUtEiI_|&XA0ku%?bS0}>H}dfS7A z6nNgjAvD4@OAX>K5qbb7mWxrGalO-q_1>|e&TrwzQ6&x~ur8I*zeNAyc9t?qu%fFm zC=VK=Fx6EGE4mr5X-(Cpm>CTO!0807V#k@;=KsZPZVpAkzS0SP4;DActJ>|_a}V~I zE=B7q4v|CLaHElOYwzXEj6qyMTMxpVQqg{Ms!iF))f!`y3w=i*D^}g+!g;U z7O5@6ubQL$OLVK_1%Dc9%Uy?yin|4E-dToVV4CPe!oiH~L9r<5z9B=z4jzZK*Vc=O zabsnB*4}u`i;UxMD;vh5Sw5 zx>`jl^hXi&u4*~L@*0M_3JU1az5~fq6bi-zGI7mFRl-LEdh2^D4>Edg~`(ciH#9YJ$2On7D z;1R&%qh&^@^n0*-W(#}SOO(C%Fs&C8qq%qFjT43Sz`ErBE4ANYFPS7)-ku6K%-imj zPPpccJB3VNMCkIHo$2;(Nb-Vr@XeDy@%7+Ci17T>R38^!s1+#D;m65vu z1zjotM?IR4mlBs^1Mn@t>Kc37<%YqFY3?}vQ_401vYxVjiqQes)K^~4SLsD|Vh3#A=`z3M>97+Bt*P7+%h zrI1-iCX!|^I9|gl;fYNn;KNT3n-Xn^ON#ORCeT1rKnZKPNveAb{zSlLOL z&qH4+ZS*_5csqnPy)Va7-*CN)x$7pDDF(i}Juvz;-zH^v%zll!Q0fo2)gJ_4hZU=w zm*5W3H3h#fFxB*K-PEcVF^0VlXJyyYapIaL^3obaSf5P!x=5lTS9Rmu>=+vg%~n?D z)Eu}pC&`bltR;HN;|x(oON%m=8o&F&Z%3@VxC7B1KfB*!8uducG4}hgT|g z6m+#V1~gnRLn)HWa-&LO2g=m-gcsaIe?&Jhe7nX)(G|KA88Km_i}(K+0CjWPn;T}1 zF`n5}zl(WuoCJP>W46-;Ic9(QcXiDEr${&Rf~U;pBV+Wvm4{e5qr7penoMOtq06~h z8BGn3XDRLFacb^cCqwo=ob}T+U9R&C1Bp#)MoK^RLh`wIO{-Zj8XKy zC5gy+zLcaag5~DHlDgT%uuo0Y_`*?ll@@22HzKF#wn-SF+Y6fe%O((5C!eJGvi-@L z)AnQ&`t%Dbec>FrVi2#41qxFl$=2mAh4qZa75`CI98Tw}3o>$C!q02ty@#pjVU9tP zMsT@U#xieVU~;Jj6Ew&`nx6&kb9D6}7->Tm&e|agIOela62l2(U{fro#~{sjx^%4c zW|_pV`gENx)A=gXQ$t4xWs*kt|PY5+RVtPIJs}Ce43yi7@n-MoI8o zaj=YQsS(EVk%!4LmE?QrJS@bYm+Qn}&N)2t@;Q5iOmlH9S40!dYB$L+7tZ9%gi;n0 zkZ7Tki+(f4ZeymDlYDM4pS1M@zc98eN)3j$$%O%dEQ-~I$=mFpBVJZ3UAmPnol54C zly#C~@|Tul`1UH$2p2Y=(BWz$`%5)lsMskzI8-g&M%s1^*6}e(>1M;c6mIvb&9&P; zU}|zj;t=Kx8YEYgbRsu(I0GEl?8!CN$rVr7cX}|HMH!2c;4qD?+g#OC^r_)Qr_!Es z9+HVef=+ci9FgzlhQ3cC74hSZ(VFOYGm|Oda*^V`0Lnzq9w%`+lNEYuKS-Wb z`;zfXZ}6o)d@&!!TPo93QVU|R;Y@y`3W6`w2vw$Bxy*-!Nx(dEv$k%zAq{m`F25+jEs^hh&jD}*x7rpdbiGWJ+Ra-3OI`=^o$B-JYvqcAz6u*rk%W&tplvgL#DWSW!=l~Jy!mmfkNq*%<5 zwk6}ZtxSEGkFlbu&d(K&8(UpnF0zVVjHa9qYw8&bB^~@ZiY9^RU~5Kf8dVMNTre=U z>(y`I8iHF*m0QwF9}Y4aNqZD;Vk%JF@(E$(@X9oe#P_&{E;tz{x4K(OLuZLzoM+&3xvJl)7ZI@XQ)CryXp6 zG)g}B8XYDb6nI;j!4;@r(l@4QZm|p8(P)J0D2FtCbEKkQ?PKa3Cg6I6hJTlQP4`sK zUJ5*i6T1EU{4E^8`I2uAoIpBz=fo2WM&5XtFWe$Yhbjpy82uhw4Jm|P-?SFe&i2*d zAvx>O+PWBArNdo#3*ya6Ft;+I__735d6f(S%A7>otE`qzk**i+9@{Y2g0JKWo;crg z;bgm?|37=o6uvbm0CAPd+;ue70TZH0=Hs zil=IY&ru+FP79KcOL)Ir6zWLxpAtaeF|RI9FY$;Lie@drE@qfVGza3ajC{xw%n>y2 z&ezi^sq)oDJ{6CA42GGL)wfL6up5>jh!aO5u8+u5G0nEA)pn9k92xDxX@;sPM=FWN zF0wHuET$YlXDNY*J%oQj9>^S3uxK~n63f0!fZbk@L9b0}>w00l z5EgiwmuJOtMb%5b6{uFZLOxABp>=nJhRL475k4*6WHejw}D1$`Zx1yOO7>u7v00$;JAxY{`@z2O5Ll>(xYDfm}Lw2k|nC=WtU>B6w|}m3mj~svf#u^8EJhc zoKtU|muECGgoGy#s0E);*f)krVUFq+*?7}rS!@oOd*JLRc9i%%{B=(e6GN>ztIMgx z+sKDI>DrVkkC?uIdJZvH+~kl#Ir4et*nV2yBRMeaz^q~iVqguXcSGaeE_lyi8-ITs z5%)s*je-1MVAn2$0zP0X*T6Do`nJle)%7>O9>dmmgqB3BDs?3133qwAtOyirejN6AJ?`O&XM2HPIJT!RcC5@ zQ(;SS^o6=ve zY&XKgu{AcwYg0e3u{C-p6li#6wPL90KsY(E(IisO`Vnf==C*nHco?@p?N=L2d0V-;PQ) zxaf%6yKd@#%M66=c6)GF&?j>ag6*mRDLq@r;5@h~7~JV8=`6lXC@gLMky`OID?2;ZO%YoRnDI*qTC)cD z=sY@O;qk+seNDgNrh=~-HO+s0Z9H!4Yv=x|dGqM=cw~vGEj(MmQrLU##$KFt>JWm->Ty zPfeTIg7rCbJ{(sX&4SJv$19>gZLG4RDv8$r>fw5I-|nN=s0M;Z6$$YxRIgVGqA93S z@)?j=78a$4kyb&9T$-|0dr(We*Rjr?t1|GuyK_v26sxp7KtHP(POR{PGDt`95%kAr zOfcT?_<3oSlXO)G)>CnU2Vc-2PzE8T*BxaaK4341C#Q4tfrfKDc`#iaCQq|f%9aM9 z0Mz3u0R4JCMez0P0sz#47v;@_k#5&)#GxUF0%VQ?=*pL z?mAPor@_~WH<>so(PGgpv$dd%r0(?}pS@P4iBljJYrPx7v2ps*VUm5MW|%}24<-}R z#6u?;G*)(}`FU2OUe&Ko!!1&?7q&6JkwSPqwyPxpo^`%ieV=h<$G8 z;Nl5;=O%VxB0tPJ9hK}7{hW=l$mu7g!AI#;a&h4&-TPv; zJ~+$eu#8-#T7zDy9(+cd$Ox&hqZY2lNkPU@16p{If=ciR2{Ppt3MBhf%;Jbj%1yKe7MerTg^q;2;Jy>JDXKlOtB&y3h!hG>aI{$if|%zPt=^xqX5#6(7M9}~f#R$+_)!X~h)&5p6B z*&OlBGMmR{MQN=j>oK;7DhG7@qq|LStJ0@LJ2vMcxOA;Onrjgz_fc{u84UXe$?fFc z^++I<0`{11$~L^aXxCksBO6ote7#tpUm@x*Xy!LK7D}xOoc;RZ&Yz$m`aGH|_=Wtj z7(ii`E*3TjlOpD6mL;$_BfTMp;ga7)$pL4V#hUf|sng*htipUE4N=GDmP-X7`J_nF z)e#qIovl`jqdRvtn@umDFY~l_vb=L%q|@}yxR|Ep9csBtO?P=7?}SQ)Z{FIEqyAPAMKKcrp&kwi4RUVoJ^@Dl=nBIOmg!D_U0 zc}aK_jA>)^TBRQf?z$7Q&oEjnxH)pSP`6=6HOBCv97;x>q0(IwzJ>VhNhA}8SpR$1 z4Vrc_EwmW9K>m44F&kFx&0;mDBO?9~!UegJ{7dKJ&;^$`J}wv}ihe;fo7#vQD&b@D zIQTg>1*@OkoNDz)2gz5-zW;DIx-&dzXv~bcjW5vgg%+dj(vLbKZqMp0iD`JFqG4Lp zu{f>By6zeON{Spq#k|r3UTosbT4KDl#ZfV;WHx=^af;+Lo~HRsYcJL-wzKU>C^#Zk z!PdggGa+HU3ztd?4-STk8*;lujqOd=gy|0@OfDwcSZXcRjT;L zs9h6Zs=*jOmu;h+jdxxdAHeMd$9IEICx_0>jQ-ykXsABp`O0RarFn`aptTf-z^BQ+ zuec|7YE<_fFx(H8Ej>`NZkhiLhNrlf{s*8?OO}k%LuxKH$p?9HukvZsmmUq?#0|Jd zCK|Zs%pJg5n97u$_YL|$qYM0cxz&A<01Z$8iLeUMQGKNYr~arz2|mMb z<_8r0$;BiL-RQ!d3R=Kc;U-MndJDJA+YKg=aG_qCDxiO6o2UWX{sx^mz9ERD5mYCq zl@B^XO5CI${_04H(kk~KH2DD85Ny%;Zm%Kp>DSTusq2hBpKX3d;L zz93k=Yj?%)czeqga~KLNXzXR}kvA*0m<$}}L#-&hzM}@BtJdG%kr_{=2cHqIks@7y z5^FrD?!GqhPv%UiiPmUEZeHFuQb&CrIuAxGuboLtvuI<_5gJM7Yu`Gd6o;+3(6r z6J^K3q<;_DNxKqq*}{s^m19VYV`Kl`7mdFs!xKF`w5sVX`~$&1%{_r3Led?J4An%x z@dg-XfE{xT9kVA&jE0S55DE?P-0_D*Cs?u!`9uO>)Yh04l_qL|F>0mGLuPoM#j?iu z#KvFdbNp|?hr2Z9+HvcBZ!qK1dt=f~B+V{)#q6p~Gs3V;-T5Q25SVh4S(c(7lbY-V z>%}1z046*;Sy5yo1w9{bPgt1jbG|Dls+n?trEe%Sn7&Olp`?a0`bU%7ZhQt`h$krU z_Sy7=;OgcY?~5m$LI->Jk2G*a^(bAGaG%wu_*$GF0*6Ffl-qzJ*3j2fGx_aItu8T| zWxU$FQ}!GvJ!t7Gfi4OwcAINnxMN_$motQm-G^}D z4dG(T5TY00Z<+-) za41{{p(fI$%IcH#Y<9^P6)~-H>@wci&ZoBkcE509-Z2*2OpFHc>#*y!gx2WigLBvA zBylfs9L3jPlNYnaqeGZ)*IU25_AlcK6RG;W>OHIOuO=l>W<7CT{*ftl`>75$2xHA* zB)*{zgt!&P5}Giv^?}0Ar9yYA1$vIzG{tbYH`+>$)m=ckgEhup2$Vg#vK7+YcSd=Z zQcwXVhtx;{)~b+FhQ@>wrEOkjtAh%EX>%q*|2NLpwu8TWg`Ds^zf$|Bn+wWg&#+Y7 z*DWZi^aT}2Mr_st+NNs8;z$1o8_%0X0>@6V&~P3 z76oW_cAp#eO^nrZIS4~7xDj;F!bk~|5Y+^vsWY_Fs2FENq*QhYLW{#GNzk@Pc*}fz zZeSp7AE3IR#0@5lLoO#F50^&PXeGZl^Y76rSzCdEs@& zVj4?rgy92?l$qU;zP8^$)1Hw*p4@zGpfDA2f_;r03r(mc+p4fnf>6(StaJAqa=0$( z4H$+LF?J-;stjj`^F|@oRW^O*B)8&k_82%voq8zmCmBNUpgseS9DXJ#vFs9+l#3Qc zS^~BqK9rV$X4F4^T&mhZz^y-mmYhx;Mq$sLz2p&H*|WkY2bV{f7tYA%#pX+1AmS3R z1qUUaQSOuWxL7Ws!t}Cj7Yn|0DH?3J|1qg8UKZFuNoy~!(Adtz*zG1cmqG}j)M_Pg zxi*EiB_M^=kmLjIB`?2OpB^Qjd@=lD)T>F4k=Ez{$mZv~GeI2o^*DGP!0@@}WeTTd z=eSmPU}BmYGMCw=?t?tv*p!@#)$b)%GfmnbPI@0s+Qe-=fIa)bd3)@={RZBCo_%ga zZKgH$E<5Fw8?#|buWMFlpT7A)m*;?NxI7E|{)#!*!Cg%W5(myP_MCMLTP z@n>|fdC=&>Wrs|YO_!nItBwXP6cOM?7-K4pveK?m*tqs!VhhDN%D=26If7JaPDdCw zZWV5r4u3oP>{!SpM#M73_SYqIf$Xh-NLHs)$0T>)oxU=waPS&wAY%A0HR04Y#mpox zQxKRYb%>mz7pgK|Hk1suh_Ho}lJNJxPr`D<tRkp4}#{yR`)hU|=4<`9qroKgl*U~IX`J2VrK4~n3^>x%XHbvO?24tEaPtO|vu_@@B0bI+ z43LB_t!C5S$pmnjBZMzN-VR~UWHkxw?PGpSXl?q!XKEaJL7{4k!ajHITQ_ikucq9) znygnvJYXd75bWfYobK2FyfE!pmH~wyI}*j#q+UM;q2YSe>$q*yumsqOXbR}ah`eiu z0c#G(Jr?QYwQ0WPvs8jn$07XNRnV*BZu4$+=*)o4r>DzwamJ^ooZg~~a`JDvHwH`N zUQ?;lkmUN{;|L)fkEiMU+_gK2OIe!G8+PA#e^f5&qbjG5`;I^h%M1~#13Q3DU^R`K z?@q?9S+0T8f%F|%U)t);frks%M)eW40C!CL)x2#F{tD2(uteyj#zi@CdF5uJX4@c1 zJHXXMsLSjW$U5m#jyp`t_?MSSYxMDc4;UG@dFQ);klQxnGVAo1pSJep*qnTvIJx5R zpZp6{GvCa)Woo$M;VWqi}$ZQCe4{}b;T-WlDSZW}X! z$WT!vZo|gmX3W+h|3+tJ>T;G;H$hy*7HVvrUn0V6M3F zs6oP?1~xE12C1OVxgwnw@(eThxb{uabCYq&%f2TWuN?M?`ZE%g<5O)^P8BxU3Yd+d(%=&vqbR8l-9e!F z3Aeg5z_{uvBWaftr>ojcP@{4%jrbI5mueH-YoV8Qgr5n{*R7WVyQ61 zB85lS`UjI$(K80<`q}|)+~7EM7sJV)q^s1-epSaZ5+5=%5;oBLUOw(?NzCBAPdeC( z&zc(8qxU^kp5`uWV?W2tVd_&Nw~Df~+~~nO%{6?`Kf+YE8uez?g{XIaL;a1Ow#9tq z=8~`@ku%G6o?!i|aqzHqs<)n79^)oZySNVeRc++1*c%jf=;TAvMw;i*k<4!76{m6T z`10ZRPo91A9KP&&><3HmH3|!2`ESksur;UcMT2weI&mdz&ALEEkc!n*hq`#ijA#`bAHub zUt~z^6lUee6Na%6$;FAZ*AA3!+*E@%A4ja$8f8LJ?n01}wPtFhj@aT6RU&{mfcq6w zlb|$`I(c!GJN&y)#$Hk^u#<0SgDTyj^45Qb%Hy!Ik zqW!=0zS6mSzx(PwMi>P9%E~8RkdZ`H;lmN_qUg@ztY!a@dn*i@GPK@x;+1N5*q*D@ zIxEgI(nT%dcXVvR4;m{5;&RC;qDb!Ns-z~eZbif^@|sMGVj-Fzamz{eDe2jP1gp7g zW)u1q_Qh44tcC7%GA*0+@ z8a|z(J1o^s_Q@F!gD6mzBaaan@_|M^BQZ|W#Y)1Lk+(fZ<1~CaW>0%WNIQS*CEsS4 zwoKG0)l_!fVZYzUgYv;&*T-q{yqHqzIZ{MDz}#h68qM(V`ENKhxth_>Srtm^_jzyF z8*)y+LI2L+GwA7P_{GsD0}u{1qu;FsOcYM@64+0~c$t-_AduX;CHX_qarE|MZ1xeY zRnMH>d{P}9aRvByoV1_gG`%R2?~7B`f3s}$h|^MSZ&Tw-+DAvL^P?jskE0{{tfM1b zgck+2jTf4v1D=C0M_|y2$((!3KBK&+k;Vx4hR*hAPkb{%AvxdQq{|%LQpBy1p3#q< z%(;9>aqi)cttelyWV~Kx(>yy#%Juv_o5x*cDTyU9u!FwEHV{`z+q^7oO6twhqm&qR_!;EiA}j~u;Ukj+;|Sfh)kkHDP_e7q@}Y`8&S*%Az29ndY1`GPyCM0w=uXSBO7h z^Ujz=7*7m>b}4iGi?ENLnRcB7Eb8ef>G2ahp(@%+nNyhS_`1p5Tdy)~rDGbjFMy(w zmj)c42ZH6Uk$V_@Y5ktDAff=m8VeWMrOcJ|q639ZCh{N8*^hm}3CUskJ}Px}R26ta z+#PECFsxu+pcJzTaBj2~-Aj}{}*__07<1jh=hxK^nZ<~7sT)Zr z{lyZlAkF@+WXwhj60j+@6j|V6eyXSjcl%-$WV_%&BGLAHRDOjC4EATND}d7X5;;do z;+VNV+M8pP^JwHROy%9WF<(*A{v2?|7cF62| zdDQ7(dkN+9716CYjfoz=k{lh2qo4<$9;PYxdks>IQ#bttLo9l|HrL~nJnFH}Wk5)W ziE3`T+JfhsAFb25!q%@}At_*oD0xzUN(Nim#OQ_g!0yq6xcK(SSAqoPsmxLG;ow!L zY}0&?0^U|Ge<1&)1OJDwnB`?zxk%6RMe>xXw6xc#;Q)i;kAxwb(khGn3avoVhsMc!y<9Bwk{+R`TlUO|(XyXc*_4p9-sTuy&r3$&%q9a#5gl|g z`KGvd1~;Qi*(b~D?DSv(>tE_xZyO#N@MvV!)?GnFM80L3qccVKc!Ef-)jqdXv78$U z>ya-4Q3Od=h!gqBDgJR*TL(MkI`o^VkaV+)1=9Jz9u7YzFL|;Y>4!Hk%UM5@3_X9q5JnGI~5rL52}cp5wzbn#o!N;vR2D==G10*gL{3qMe!yYcn?|JW@HcNvCL@4 zxgni~6nlIHm(BScU3EI{jcEq4Oc(4pFMjnn{9|CG?6>#=zLhuIGDGZO)wXNmRHdb0 zjSw%!rB{rqb0Ko|(N(%c7QkO^EiHy&M6YS%k^5@i!G&vkg~G7jzT^fVuvRT334tj` z4Q2REG~t~};Zm@o`OsJ%JyM1}lz^ss^wKFR*eLmGma^laupwM$njTk9%^n=`Nf(va z`N^fshqXq*d;ot0yrpH9Y6aXKfbtUw0{xLq8wSk((D0fiehH8NRx3JQ`M9q9Tk0ue zZ*XcqKtMjE_)$m9!1MlAYn;yC0P|bZ1@D!+L$gEZ*D8(ot0xz?AWF3Y)n1a<6;0pTAfgx%h{|V`P%m~arXtiRLYqUliTLpTluZ08#Yp{_s&+Q0` zH7rny{gRX{T$pg1b;}*doCP1M6S~oWGW@s%!Bx zmEQCur-#1wuB5P57G*p6NOXnu-Bi~YzEK;dIJZtN9XSi$(zVJq@;9yipfCLe^B=pI zJGrv}u+M+S*)1eU4S`fC>>VTL5Vc=t4sBV}-=ApU@6LRZjk%>I!4k!Jn?dL8BVn)G z9C>@APnp3*frI|+3)dZq1PeFdin&J=T^%4NS1@P11I#@q#I;qIt~FVkZiz9f$N&hmdiU)t}-?&VRLH%21MJ=~~dj%j_3= zP+MH?Nn4yB)Rs3FvmU@ds?;B{c+ly-_*d(c*gmyW@*i4! zfO>dLXDAN)CN&NN>ca2L`DuaL;f1;sGaorXD266PZs{o24_sJ_Rs>_Y0z4KiD^1G zVaB*vT=sfBS2-gXk4jS4yDDyK2#6j#6oj`btKaQCOyAiRrM$Kgs_m$d^U_scP$%-` zU$YL~gxRnb-A_0EyWgGsUl?LEFN(9*BmBK z=3^e?^Gs+St$S^ll?>$M9>N!uZTcV=YZLyrHg+J~4k&CMuf;>1b}oWgK~skY^C?Xp zJ$e4{`v*^+KK?2B@!RCV_unT!KltgV2S2=c^7uIp0@v@yM?W4VP#N|RqOdNrSw`_= z1TV~q0G9b`l^H91ty4$TF+#~8baepX>m1Dt@bHs7 z0e%BN(L0bs5^5lu+gDEbFC5@FOt(G1tyy}SkN=omBKH%vMQ%DX+|1Y_Ir}V&@g0;6 z;6y4;=ec2Zoc1ohC(S$j=TrT-^dg_FXUU$$aX4O6(gO;XlxgzYDS=;lid{ot9Tz^c zDG5YXGvh+H{ObAq*>rshjlXo!N69bmb-Fy2OV1P+CivO1m@QV^nexR8euidD6c^~P z0kGY8Hsii^&J^v`+=YI#SLON`1eEqmr8snn%qOGd!=!y3v024y@4uu?gB)w}aw(@gsuy@aV>z|%~SG%c?=Z(V6{pS(-!}h za#9TGpWR{~^7AJ^CN<$f=FlXjMR}#z85#?dYyD8T;2v&wSJw^kC2m+xW#}B^gXQTV zOGOgW746R$00%PELZ3_$BowLYnl} zeqOAX;|%R{UI!JwBeV2eVaL|LL#3}&+|t37xA51ybr2ZM9#RmP_GevH+`*!Bkh*P0r1+eo_Ucnt4=&b$As zme7UVYAA_b#`=4>_QyZ0E^*@L)Jx0?eDxL7zJDLSPe$18z=r(z-`l(P4cyT-`fBPN zs#kk|xNGkeZ5OQFO}eN0)&Bpj{T2tGml?aY!_489sjgdVw|T?LIPf~+tnHSQ8CRF= zhW(legZ5yyT1^M*ciD6i9;|2d%sp6Ju>y80wEQ=*PkV4&tXI(kwN*V$sj#~fd#*ae zzkeKWR$#eE_iW~*Vy0wGbFVzc8YAC4ISQ6zRN5b&90sn^K@J!Ux@1cy3TfV4Q=W+X>5^2s+0Tz z7*JojHS6~c*&4^{cSg+wIi6QQ1It#|Nz@E1c|+-Z?iD_suCuz*d|7$LU+sPV?Y(<< z?>1B!2NnAL&p#K3?MMY+-&Y5>$snXE5-`01G0Zs7= zj{1tG-uSb7<1Y5Rb=D6d&WSg7*ls4&1|ZU7q2J=oY0x8mlur#mt5;>8X#zAiaAnTHeEfldwfjm+2cp!ci6lH`BEz2rzr5$`clA9G6ZO+gZ55P!cLEk#C5k z$l)Z5Wfsr%6BP!eOV4#b^fLZ&kmvPYeS&Be)UqW;I>nA;IIHP2*vM(DQLzON zaG0zlh*Ck4{HRLSLxXLQ&)2D<7l`a$ifBvv0**|=FOzt9dbcY@$v0l162YY^fw+EY zu003$ntF30K4ug3qx3`axVR6$0+&J^+L#8+NiTxx)%LORIrJ=A))vb6a`lS5)Ofnl z$n%8cpb7m-3L)V>IvgMAhT=sqzk<*dnu?Lcvda|n$q?jKVLgr^5UeSDqz)xK{U}|U zw;U!%I=to?W|B?TiNSV#ar>JCygh)-n58Q7Xc1i$`T~ zY=Cj4p5R!B!bUZ7P#xd@u%2OO3MFPuGHRrn7UR?nmDWb9yBbNZ+xnSYpi`S2Bt6fL zC_MX+lxT;%Sg`%cmMKFR1c!l6ts7?~A0SmM1E7gFv41(gu{+~kfLliU!3b8PRn&)H zYrL^J_pfxySsYPZuuvJ;9bAv%nI>ub`Hg6IZS_N-k%k%SYA+MrmZnzA{V?aT6FcLE z-iC?~%TOp^;ujPDI$MnAm(O?NSmg`kABsYcO!==m-(Iu#!&c!c;6E&tz3p1HYWWBE zpl$82h_`lMly_SY+GZ}n_%q=Y4Y>_DA7jTFGSPw$PlbfpaP;?*@|6D^Vq}nqB~>}H z@|9+LNH9Y*A45j|$0~;1@VOEUqDKs<0{M^7rhsF{USiybocnNAeLGDFMV^5kE;R!R zw*k+ojS8cpW`iqjNJP&diq$o~L@sEp?B?~;@E5@&h|3pVIsxZK<}-ngk}CPNU1N>2 zTy6hMiPfZ^uU@M1UMjvCwS|OSSe;fZ9Pg!P*64T^JaiFqY%wE`EInO)Ff07w?{_wa zZ#x^q>TE=3qJ2MU`x`GVa#la7gP$K4EjMlou`OcdrctQGBEjlBBuf(P*>A|KNI*zI z5w%OYuzwDOi>otUdToM*lJgnS|_f5)erZ?JA?tSJ)U)Y#rEN#;IZz+D0uA$+Mzd>F?s%WP)lsn-My> zX^hWa@&^t#rmwSurf8mr&N-s~tH9m7BtJhaKT59H=}&v>c(3u#QF7hVu71umKky`< zpskgYDlp`%h>;3YXZ#7Z>8~CNUdbP`%WiR>FbUXU=3A2t6Q}UdqG^gnmrdUjC&8wB zK<;tIDdcW(mCj)8(WH%L>3n69B=cR@?IwhEvSoBDcXUrq=j6=;Q~Y2GqkEdIQub+( zDwr3Kvp$syfC@~=G#}?HOfHAIsGi1s+B+ymL_P%u=2as?H4%Urr#ThsBvJZSWZW<& z95V$hz_9nwErnbIt|NtU?9tNK%`*}y?>j{U*}yE&J%r{FYT-3P2;INmYJG)s`lrQx z_Z`A^nRl4{q4M_0Y?e*(6fGSsZ*}~l*hy{CMWyI-LPnyV-Ga+X_caB}`?uVZk4al? zKICyZP8ZqzY6;XQd2MlmGpzG%q&O;SYKlLL6#qB0ZbVD}n^*cpdW_}#FUsRZlvINE zcp;n570=?@_kVo$`Z3;s{+x+5CK$%lYvzx@*WuMrDR%CUR!@pbxz+tjm(ljtUODus zd&r`4rR3l43u^&1&a6IKbMV0I0O{Xq`R6F&HC=f&0Dp7gJbRi2$t?8Y&&jLRt(FEI zL9>qATeX=AAsTp2Xh;POVgK*jOB2jAoX%k_0P$djo(+slX>nQcKNf#WbMz@g>n^*7GVY^;kC-}|viA!w? z5@%{Gs_Xr){pn#A7m7CJpR!uU$aHUMP?Mm_QwL7ERX_dTq~r7F=q~urGY=my2zLTK zV#nJFGd@w>!T5%Ar3d5LePI_Pvp9;Kd*1<%*R+woij6lET%g)jm=fta^fr!EGEMLD zX=&xtXzZg%6=?CkMSiUvCs4@tZnH|a*!rlU#$@;T6f}j(M%j8I+57mWebtox`s>Qn zG;L&mX~Xx`S#Irc%BoighNSK#>3-PF1bD*N#2e>2rE>)cgB?A}4cn8b<>W zh0FzGlZKiUwB&7rsj0U8eERQsaE27# z?!U=o1X7^K>#B(cZ7tgyU{NvJz+9oaVhu1)L=_EsQ-xi6$*kHRvek2g8xN14{q*GN zgP;C9s{cMmDvt7DA3mt9`t29@S%^rdiN@oInrD2LPbWz)uyF1k!S82p(*z0Pgs?h) zJGJZ(2|%H9SBi9(<#MctVC6=YLhS4Q*CL<0O}a5Hqh`Wb^KvHg9}H!hWtyr8 z-VZnzCK|=Ih(Go6 zPgMYlmF-+Of!&U%zPG0u&u?5E@}$7cNEROqU*J@;$0^#s3#&H<$-i`4p>=RIx}+K* z|0QyZtd%xiy)xt@Z2E9KvP2Wem=u@uEX|4Qe6^pvI%s5fD+9v7qVsI^>ka8;@@jPR zA!WbbfUc5P*Ebu`FY98JO^&DUb2$GC+pG~z>W5;l9s-;E@Il)N*o<`bB0WXL2^}Zb zzBV9q7yD0_LOhWVVfV9~aHTO_^eQvib;NE9OPKy6WgPd{WS6Al?;(x&jgyFzQ(cDm z^P~&0Z8{WvvwY*>Fza*!uGLb?!0pg#&Ribxdx&Nn^BpeT=;CFuUXih@RKEj`21jep zrCzzu)~oX2j3{iJB79P6X@lYS4Sb<)2IZit6o_0R&=ZoASanzIejstmM+zF+X2;Mr z`ckynF5Kpv5kxB8fFj*dR4kVA>`bfOS-R<9{r6}fj;_+pFoQQqbi4A8<9I@(TDSkw0-LYi}lw$KUOyF^fX+zT~93_)W^pqoh zjVk>s?swS&z)DMhyBd(`6OGffiQ^9@f&xUMGa(C&mePbvA<8ehu%M~*#dvz>#km0! zCbaDx2gZ$6qC3xDFYws;97!qcn_`|#PHl2ty#;K|C&wl=M<8H$sq%>$mUe43XI zuex_6h#VG1u{A6rHs<(kzk2zXSNNaNtCz^0t&od<_2t#|tM;po`lT=i)=S!aXc0}i zCLJq+08+Bx4*oEzWP3`(9}YB0PRJ3+qHvq0m`a%<+2qN`!?7mgI4#%5Nf-B78wW|l zef2+Iy}AwKv-yZ~^vluiMLU5Iw@|i!os6q)-M(WHJ7B0YGpgh;Qe-qTw+x=PXzioL zi1!xw9r^d-)_OM>;hS_>GdjixyYb+*Rg3N}%Sy}s`UV4baEBRef(5<>7S5(sMdzC# zae`$Dq^}u>g_jg0M-&u4;<0?xbN3*#Zp1lZ5*tQdg57nVp!Q&%oZ*>DnT;qO2oEJq zKZ*2Xa-zTz15ceYurdKMW@xr2R_bD$EhJqKner#etB*84?xe`b9fiPQm=_*P;$Wv~ z+|kH&_Ik;WXUQg;PRY>`2Qj}y=Z>?qbaJvBXR8$+AWuF*HSoD6dAYNul( z)|g{j>XVavO!%{eG%~{vq#TkLtMUe?%U;qN58xd$W4KV9ra52It0BB9GlZcI-XXvU zbXgv?0XnoCJiovr4ef1y*+`0c+afSY%^H*aa zG9NOqA0lJ#{1q*mkuP{9>7}+!wztaLKY&*^@&U&A|Js0=2Mw8(Nt_`Wt=DW6#5^~b zqU$o)1QuV0K87|LvCLj8ZkBU<-g|}N|FE8wI{4{z4b|TOtiABB065Y%=vQej0#cjM zDJmsM@Wmsa-Wb+vJ!jmQ$)SVOb<9;*^3f^2QdNRTzsc*@A8i#*4R zoTL7@aRXchTr}&xS~=e6bf_!9URVP9h9Wuw6q43H3KqFPLrK;S(4b_C8k|1M@L~PV zCN9MA{J`#Tqc+JVX8fU*v84`1Ne4?hX~Uv~L>OM$!pP-wdHmc+Y{5c(geyeDUdbgc zI-L>E2XjXj9yblBS&WB9v6h-+~m4dIl^^>V^}3Nji>w^gB%MuxxS1L^mEZ9Qiz~{bx`S zqq+YBrEvP?-@MAY6oIzQTvI$itA3`8Go>R(P)XSSt=5y1aB5r-Hd08;yMN1;1xrIt zW7GyVLHglr;;5(XB#9#3laB9ME4SV;iTyQ(m-9ao8g zf7huo@SRa)gc@yX$y29SZ+uuQd;Ma0_s&r`6x6nHLN(ljNYS^2yTq87m*O)k^h!Ee zWHMVg>9K-B&$b}!irY!Gpwhc7s8KhLXoBUhu6<)K6fmPPy=iNfO*fWw?yke?WWq%t zZ^wO%>1LA`0(-M8p%O;mmqHe6AaWsv>(^b`w@m)76d1N@_mQ4<2*`tEAvCy~19^T>eSM?X>`JaAx^6y-Sk@Sl>s^d`^ zQ@su=yVe9EVxdm<5!V6)trgL6I4e_6{hC`o}Ntv6$fPCk}!owW1yn56`l(N#)1c(h$lR;nU|TXNmm_J+hD_&a-U6Oc5{>QT3%F%ol*EY-HqWgo!ic#Y1^xAm^(PO5F5a6E#8(} zQL~g=gT)oJMi&DJ((tP(YAFsc8oobfa9-04g|e-tfk&2pin{L8qByxcM38Vdypdpz zN!%i)mXMFR0g|X>%gkf~ojIe~$V=Qz9eRzQ=oP#FAAAs5DHJGqhJ5xSelB;+87@b# zd_ldiW4NL4enq@1x>REKYx9k1tNml%mQ9zXPKSS4%5rQs-$6Av<|BYkyoMG@1Y5+Iu9A<=G924gSu>w!i!^G!f810l=eG+#nrsLK03NRs+=Css--(MY=8-%G2-`oA=>@2QAe^4cuAqwqagaVrkA$?Qiiqh_UbuWe+-n{d9 zs5{ToTkqytKE&J6!I`tmjeGqTyV?#{w)M9;9)6UZt+H=`#Yx!#y*SZnW^)ilWP*6Z zDp|A!$%e=Mg={q?-CXr*P!Z(8)^y!CE7qhdN7CSjzQ+PK8*C1unO2aOlJi8BtDS zpG^mdU4ScCS+ubF>b9}t!H)`&>Mb)J-5;3SG)pQ;rL)nO4DFSXDV0j))ly?qET?iN zg*A43<=cj{{QlQ4<&L_9y%?Ys9FJuoarl0!YIxEY#RqjX8buXHO265diFZzJzd7C* zm=?|jBDv+II=J<_-+lRiWB!oS+9054Mu# znu(^Du^m%(nL!^@%k=N`?_p}0{uf8XPmVsh%Sb3q$z|^SlcbD!Ob9>>%9K%-rxPzz zUSfDQC?8D0Hca$uEP~&}sP+7*yVY{fmD85PqI~jz0${hvtd={0x6)&XaM! zQs(X)>SD*9mH+lZsHT4!BST|R( z>8)E1ZtByT75rQmI{016jPd7Z+MP>Rcb!HeAGPhd+tlYZRpjRo428 z?AM{UUpb*}b-xZ{`*pZ&ze0)ley#giw~tRw>`yZpYvK0lGBxL@}b zkKtq-KEGT4T$;+lSD*3kH+lZsHT4!BST|R(>8)E1ZtC-z6_iCE+i`lt;2iD2&KOrW zcfV%S$DT(>^llBg4!3N)m?8t-9mScWElCUud}mDzq`+ z10)Nd-}Rq+XM9bSx-LH7N`95Qaa{9(ljA~nzU!$pp`%6CXmz&z!<1Qn=v9jRa7O8dX>g=-0H`O}~>uIk}!oPQOautbT z9G4j0VZZuP>t%*I?8t_ViLINhV(aFnV(aJ49M)T08lTn@W($o85V*T~;v zD;j#wGw-?AR8}LsoisfUMEuWVuj0=KhjEp_;O5$byIaK8lba|Qq7w64C>{niB7TG7 z;ck7Ex-NdT3-<0#7wp~Ge!aVOzux`FlU;wCrp7lsMH(dP9jolpRNbg{e7*~dwBz$% z>G0m7W*YpXGsJ|6@zjBvU<2HQR7w+4&%(M9vx6oau8odOF%15hl- z42$e`qIT%x^=ehj%U%c=;isp;P^rrR1|w(aBsKm~koiuAze6-RYi)F68Ly{sP-vKo zQz0**0c=ug!bfqtQ%=RzdRR=cEwp7)_{Lg2wGoiiz=n`jl17y#W2^x+C)om~4!XOC zqoFK*I57y%!4OMNixv6|^Cw9}TdRtyfw&y`o0MTr<#Bmdtf!P^!ks`x+Ub#FPB@wK za+ReVdD2qbB;~Q36k{^Ovn7(i+%oh%Mt{I$LzzRomT(!c89_R62+2z_Xs}M6!SFp_ z;KZMTTMldvmwsBFLUZ(Zy+E&(y*?o%A&wvWOH0m(7fwo(Hz}%E1a6BnUgqNbne4Zd z_5sZ^zRYHe)uo2ZazpA%Oo#!+EK|IjSvpTKng{bDanV-GCOJJR3Qdf-$4Ex(nIVq^snLRb91YXc8?)ujz5FVLXuy)@`Ck&2Qe zlwbASHm*(!2{@wv73Xa~kMDT;EM1n_L&`e)e1Wb8o20|v0Tnp7(D9GZfFsUY zd__J!n{-KTVeF3o%Q`EOD6bjAai6~Sfcz7?>{7wy+Q%@bJQYj@ui9>fSM8%@hGEsm z;^%)zw)aERKAjiRb-OtMD&XV=fZgFWYuX`Ie6XM4lQD6wy4 zboA7n5NRkV`B0w5CWPjCOaD#l@vi+}X63x7?HS%izWmSd)aw>nh!p#wNE-Uw^3CtF z=eL=cAlT47A?f%IPDt8~?g<(0N;n+P@&7y$%rk1%{V<^kq2tq;ns(%jsU&!;A$#_2 zo#qpSYEc)r+U#CTvC=IWUke z`lcfGbv8V2PDZz+%Q@*D(X{zl<~!yy>F)!5ix(b8*KC4%CZ#>RiR835pDIjk!Y+u+ zZsU59b2DK}kzlmUkiA(+ta`pogsUnG5(%U+bQe$3=>{c*a+O{tl)`tRT%gnu#KR={ z218^cJgBrra#M+kkS|r|Lf)1x9icAGaMBjGEW$@GRO%|RzRyk4*m z6cOGGzmf>hXJJO1nF{H~blC~Fi0lYVfBde@-+FGu$pNhRC6np|WEzazaW~b;lF77p zENikLgeLks>6W;c{{QygG)k^BI}EE{2(X5%k;YnVYq1|*7YE(V?qWB<;gAImF(3eP zFarWG(HwGuE+Vh1UU%1YRlQQZDl~dp<;-z5=fvkYC$W#WbG)47*hk5aI66rr*@By>7f4jG`{e$Ll*pU1c;U z6!S>T^NrxOE_-~?_>ordRujD<&OmW!84;G8)P^Rl;u7&p=-@)K-1^}NvxSfeH3iMs zP3-pMjR|KK>};v*c?c{Cm6MJw5lg~+jHT0qh@8>B`@4f>p#ZFO!QeJ82hXnr@Fk;fF^9UDm>|}={Ob-b z>*N8b@&FwiY$erK2kS;j4Uh2D!(Ze5Zu?+>NiQYtoaR)|h=d|ussFESU+8;+*4P{H zzl)prf8Nw1+(F4?ObK#Gqh3~>O1uRByKoWz&(+z~Qzr2I301k`OJ!B36bx=RDW3sf z5#SUY93r1rS*1A9(Nb=c{LOjR~* z*->(sE4bkll!NS3hF6cUild0v(0{^L2ouWFZPc8YdK+FETXd>-WiWCLjyRr}h+PxT zUqbn{hvU?yF2OIHxkLmk>l}pzZRi$sDIIpl)`y7QmU(n-z|4R6sHOyCCK zyD)GAjcmh7%OV59I|(_gq%L`^OTrq2zbMP3yDe&SSPKkLB&;5n6@0S{BcI61?FrspbnvcLU2-J{H^Vai z#`LUF8|3(S6pc|?YTSkC$^cakcq~9Gyw>#QMu$Re>i97(6Kf}A$?K-nE9zXXON0I0 zGifvsm9hvLA}75Ij#$eS@`*FY%E9%y2&X%eJTKnhKHUi37LnJvz>xrOlVOL3 zEn>-Di~*`gN3Q>#Gy`(QVNBkrlwy6SyT>7c(5I2~J~&|RS`R*sszK=imXtH z*IE8P!jRWBCs)KBjAzABaS%ol>n|hIN{cVD`Y8%fM5lHEOx-?{SW2fnPLjs^)7Ei) z+#r6T0u7TEbZa|#eB-lfb7avOJW zh#)g@AN)hg#Uq(+=)$U}_<|y(KP(~LI&rjH` zq6H=WS_7lqac&SSj7z(hKttrt-sxhzO^W8;)%-6RmtH#ra_RlF@#x)nG1z#a`Kgzh z7hXKsqxXf6zB6yZ6|35A;Oo?}x(L@r@+WnF$kB8gm~sl~7=Pm(vQ(uaY~Ij|_o5zc zsK9wk2+|?{`zr79I=8UW2yPp+j|QSCSN#k{=11hg3@>l*W43{+Da5&7Qtpe|T#@(? zxJ$^EVh6(kOBfOi?_cdF9a2Pch$kh;`WE`dFq)}hX|d4_X_NzY?oA?KNyma@)CueK zd9n?o-n3W;I}FFYb#VWx9(ivQsfF=!R8?b^LIXLnz{7z=7`>KBGiFa2b&$T|_GKs} zZA{vg4~IaRwLTO0H8D&ob`tn1i+uNvR&h&we=p1{1G3GAKh`Wpp2 zzmpzXxr%yK!3w@D*Qo%W!V;JhSKqu1GBr1)=7=~WTg)$YK}x}*J1u2PU6fLQ4Y)|A zq+ja!R*ok&P?AM!1)mITP>jrk6<=I|(KS$TV9=Tt+;a+AZHHXQz1+M9XoYQm5qJG- zgho)N#juwqc<&-U*cO6*H%%Su5WUuGvILklLn=ZZnWP)}2fJ1nFj*CN)}3X@+`%=G zA_|jXg1Ar+lYE!Q+$RlbYTHL#;T3 zZ4SgON2#%C4Xk1SBnr4{!bR~=aKfm?k$0KJllYmr4#=8?11i}T>ZS*tdT1oZs?GUi zBJ36ni|*CKqUdH`p|B(}iwuO~v#dXsKg4QOtHde>ua7`d=8#168*RIXj*%oCuo!{S z@a*SPW_po-j)Xhx4oGJaQ8F;Tz2igU_5h=nL>LqXPYbTK>-N-5n>I-u$prK{Cc8yE zw1I$toVMmBx?r=r0f}#EU=;OEz(Y==iC;Ogx8%FSrB&NPXo~q6+cQW1OpP!F&5=AH z$MKr9;*J6ne0P&c3Wp_+yJH7NObG~`e1JZt#bdi);qw84_eCC;bv4qt1LQ_?wT-H$c}X|1~PGY zawn(U4#$NvO_F6AxE9auY*nhB~FOmc1wkz%oVuf+{HYj1zr%*e z0%Vu8b;oJk+YN{WOW9)Z=^zk%C6@RO0_)7mEne_0U2R&j#3}pI5T}|o-Qz1FmtnH~ z12|V(%GPL82HCOn3bBwUw#C${tT9?S(^^3o^CG;_xll$0ydlg2COc<^lSP{XiVc%7 z`KAjeO$c^EIg5#w@ylbQp|I7@NgQlMJ9|{bm|1{5Mfj7hie7N3!fp^B(gCd`)Fze5 z5{^QIR7%P|B`2WdEDbc(4{o6m$I&fd8oGlx8tL*BB^)fN^2P3G3`;0+U5&wPtbv{lDE%$=uZrlv6Ub`OL zdv&tc3@*I%!bS_|Up^ao5h3%D!(|jQ2Loc*sanjScyVI%B5F{E^cIYg+!@h>b;x*2 z=(g=$2oy9ZSF!cnrYJ*n=g7-rI`KD(>X@w|Wm`ixZzyU_;T%&G=i+PPm4){`1H1^e z+-DX)3OP}+<;-j^9BX!enN(JX`-vQ=m`;nvQoN+$%tZZF;<21u3j=(m@qZjvcVzN-j@R#h>xOrm8`CZUTF zcdL9?k~V_7-F}xG8JU;6YHnGAtpn*8{=?*Q%PV@H`bN|ywR^{8&`?V{7rFd#ANv{Y zZGIxnTc1;Yj#2Y@0qyO)cdrB&i*!kx-UOWym;qaJEUdRf{6OmHW000(&PR6HJf=aT z(YQPfE+6-!HV!wqED!SKve@7AQfi!Q7FTw4ipxgXh&C%Lt-$%c>8USi-5Dy=a%hke ziYyAfh9#Qs!!gw^U^n)o6m?%XrsX;{;Ar1$I!UZ+3~oX$7%YqWH;sox`gLGr-C}1d z&6eNw*Rg_eJF=bT^GO`Pdk=jKxWZ~9#IBsgwb_}yo{Xj>riZmZb2)5 zu`*x5KYz6H?^XU%nh#`Z^co+_T?@W z{VY0a#|jdwT(I zZ#OrZ8!t3BFPwaPyNU6bFOpK=&3KQZNDC2tYXG!%l;RxW4IIc_nB<@vHA=%ezxdI= z2}Y3J2aYpV-X~DOkFuR}?0k15)G}0B$0Z>JEIR4q3$vD}q;xFfz3L=*;x%M{I2lWp zqXCkEF{Tuy3`~5_k5IkROA}2BhgY4(Z(SVa>7p6qQFl~|Fe7903{>56w)ycsFhl`| z0_m9G_0|%=-kApQ3)m5O&xe`=q2mmPM4xclDL*p7rpKh$!Ru6y&<_J9Y_vmKg;Jw! zX1P9Onem*Ty@yJy26fD0glX)SbNza)xN6iU#o* z8~Z?p9DZC2mgB}=V=V~B2jL1@XCU!P2G!~p`5~~`LizT;eE<~3R(r9r zLG^~X0M+Up{D-BI88sRgsSZx|F3qrdqj25^I$C*rfRr2S#)B_LBjnrQ=|Ojt4CrRk z8XzS=#0RikQgQ1G_ix^K_0219eu*Y2RjaQvINfUGn}|BG4vJ%@-}?gc6?<#wA=I&g zI}iv4L&^J~a}3Oo1L;3+OCTQ*aN40uN?@wY*xmqYP;-+88h+7SD>4sg16N#igQ{4o zm;GqeIqagnO+=<0dJ}@V<`96?f)(j38FI(ia&tde|1Mj=pBGb#72`Q1Iq)>UeZq|kQ#lZRF4>wcVl$_F-E;N7_ z=&_ZDh)l>c>HKPiZE||HFDG!;_?g;xm)dj~|)bYgzrELX~7dRkZUpzhi zq42qjz`-hw#&gj0bGu2h+1RL7mkF3V-GM_Lh$TzMc);&>;}L=$ke}=N)lKc^i2R?f z37MJpJ>dX1PR*SOdYG1Uovm8Xb9sFp_Rgj@6qF4CZ@odj?9FIvc5?;8DsR&u2xTHA zi`r`@8>m5x0wlr5WY;cmOH2^7t-TRtJS}dpZhC5+h@rMDB4$v4jwiN|8O!@^#v2Ij zkoVKIUy+4M&D7Ocy%+7Y?rp5U)LKOzhKM-~Fh?T9Kq=7CJ5=FOhvY%x^fSvWsNZO7 zR;#{>p-b63Q)hl+ZDgo;z3Y9Ve%<*%3--KY;w0xca0H{HF|k8*xYEUb8to#-Ge+~S z7){~CEgb7fu2U?y$4SCWaq^6re9h%-A)XibPJqZ2gGH7NGe=-KTO2*xk z*eXJqkn)2&tcbZz!BD2SC`zNcF~~OBnI<2_7Rg}<(PMj1^qEIm@=>FVvC(y(E-Hz! zHmHe4-(C>f$^prH*)%49Jy0tWYS85yy-&_7UF@UgYKx%Z+#SQXjd>Gudx>m`*my770`PbskEm*#f+b{2XUxjZOKuzU{0q&JDFhnXkKlSv9UEN^OT2_v-mI>9nkhh`93o!bzUgg`s|Ki z{lvtcm{OXT+&A*d{xL z%2&JrN1aX=5eIc7+7n(?$kL$kAK$w}SsGO!Heb*!K>5Zl9s{-!ERTrFmmS_hl3fYq zY(@!w6=g_IaiisqagGI11&Q`tHHq7;^fd$NoJ$DCZG%QSCYnojBZS%8fTY(UuFYgI z#+1gGs@qE$PhVZa%bkQvgr7J`tM3vGpvtKi8XFm+ZR@J~3o$WwGr1kQz}pUWKbEyd zS`6AL9Tl|E90fnKGp4UUMDaTrl{H2YE*%1}bu>gF5zZG*Q%JcjQVNjC7ofNe${I^i z--xm#lQUOOsOma213}q1W^b*smb3---b}r1Z^xq6pKSZxO-mtW6d|~WaRpQ3)dX!c z>~TvbzO>6e^BD}isJBG)iV)t#D|g-QGkI+`kv;JEL1yphUW;f8wcm2ko3LM4rNSn4 zUlCKo?2^g$T)+cKVLakzvQ1>fkGrvMHfHWSNk*1`^1kB^;%()btZk zEgN8<>Sg+V7kA9PpxSzN`QE$m4`utNW#k(g{7eBMrY5op>3!t2x!Au)tA-#zXTQ4n z9yXg{i|+iZc~E0ZlKI=cDw4V@=qpoDE7%cH*OL@@~!v$3X#i`3*Y`RJ)od*-Egh zcGj7*MSx(AXbXoz7!=MwKX-TDGfpkJ`!cQ;c^MJ+q1>RWKw2y^LNn!JkX-i4U9XW2 znJpIo!_<{0*%%GViXMRcust~x8esZc0#NxNj)y5mHRL8xeB^?d9HZaKwgC*~Rb6s30QCbf$iPS_INIw*X)HH3#B*RH ze5GE^tc>%*?Wtzn4YOid)zPlwB5D!oe4PqPY#b@FPw_%4Br4VL=MzoX`Hg&RE&MB&A% zn9Ny%q@5|a$Ni;7DXsQN(8#_qv8KbK*Oh1{BDCmeP#4w_J0m#<#NHWC40{Y0d%I{N&YET7sJx)VVs+0)rLqnrvM5Z_pp%gO zy%eSUp@vQ%38Du{w?n32Yj`aM$b#BfA_#S!%l1aF+yg#jMA36tN}8Z$+ezT2eSc0U%v%8CIMII*S?- zSdJYB%o5(ty$AOWQ|l#J*gg&5BMtjpdoxcDJD*bmjR&CUZ40Kx+?9{6ti!v6n#)aA z+(x^pJ1K$y5xT~Vr3$wTc3GWcc$BZ8b|XBByL2FsdyHwGagkO+cM8O#M8YGbwEoWh zY8w03pSu`HO>~T6?2Rl5-lY{YCD057Z8%CMdh8HoT;n+45>lVUS2WJX2vf?tU_gf= zuF5m1X4WK=z$?Pb!PGNgO$^5>#2dMPof-yyQh<5tV=MpvcL9^zm1iW}U9deU{oTyc0ZR&V&%-A?;9_=u{1XKr4tc1)v{ z5d_$YZe-fojs~x!1+$TN@(go%GgW` zVOB=AZTtH`&%Q6c^@Vc*;R+k6^boC6RyPH^6XbUl^c{l;G=w!T*ec)T3wki)&az0e z*#%;ScYsLo&^m#0?`d^4XEQ28c7QU(H#-LI+leX4wS}<uG{H*D1_!GM`fj9y(#(6&5sA%Jao@_IyJLecHJW_IpUS6!-uC|#S!RcoTIp9IVAeJqcby1 zBhv+D37uF~9+zdM1Jz4mkqi|eP!2f6)yOJjLt`|B^>6IDUkn=I8cRkSyf9od;U9^o zWmXHV*hF6^q}II~Aenni?r5C}neO?+V{Un{=9;+C9Zl3%sUnR@ilSgVm;)gp{jm68 z8}$q{U|MGDF4NvVEL5MvBu5OzUd(QVJSne99zTHyh|2iiScEg(=QcM}HS4`$+FdPQ&h}+09 z7@q3S2~ptr2R56l1;>KXk))zMQJqWP{6<{Ej|b@#&Sn4P&$1)4y3{|M8E>|Qa|xd_ zi+w6$fY@`QoReaTacZDhXn25_TAkKXa6KCJx~NRijV}tl4l5DQr>aH-gu8_?z8!W! z6oDqW8>_2T9hld%kz$R>8VK4Ujm^_g(F-DLZyHg}+JQP|%1UkuNEYXtlk9NJ&=C3Y z1-1rua^>x+*>LD- zfzIS4^*Z^aQN*3yXwW`FjWn6~uqicDrjTy~LK1`=Swh2Ln4tT+Mw^|@?WYlzQ4{eN zXBO)lV=n74t%;zm`UPE6$C#-wj?%6Mt&cjvvJDpB9iJyD8;J-mxyGA^U7iB#ihkT3 z;6{KmNV|I&FFPK$8+l_Mn~uaWFu7+a6Yr9hmI>=3Q#khBC|uVOv@dxk#WV`04t`9B zJrr^6LbPB{qumKxHY5YJ{_W8fkS10qL_uP`b2OGq0Y|rkM<2!+hn2)*YeZRdGz&R? zrcn5!bW9u31c{f>yW^cU8K0?R-;&i1T5X=5q^>?M2;L?M0uMlHL0i(h52IC_48}l{ zln9U`YMKO2(nK6nnz^Q>{AEa}Zlcc$v}K%wgWxWlQRF)#O*oFZ&TSWYg?8|oB~ZV8 z9+mq4m~k=ZW(_kuKmo50tao=zaUHlEA_+E0aaVD1+B6MTIda$ry{E9TSt4K+lA+Dk z$ioF@08eTO{6s<9xq*`H&q~r-&bLR~8^I~k9hqgFI{D#Dh+j_iVGI_yWV5-`Mw-&H zHmy}-8|tpF7Nkfa^x=4F*1kSNiB1kw8Ty%Nvw)OV-zP1N@gjQ&Xh32`hPI-IMfF7e zM|N;NwXGJA+iDrTt@;Fa&~3*Vdb^vaw`;mjqfr7vk~Tug!(EC?86h;}zEb9tH>hq8 z?n;|bDw`$3=EAXr_BLwO4?;ZO7xg?1`Se5iWpFGbz)OxO2Eb)lOt4H6!@Y;=5!7hGN^f^u1%UxLf>AY;4}k7#`v zU${~zA)$?KKqXR_T#HT z6Tc#(2Ltpb!yemOYOa1}@?jQ2$3Wd(R!ovatgmAZG}n!WlmMP|P-G~P`<54l@^XNa z1t3Lp+H5I$Z&J(AFUc)e;F92oOxQ3CY@Cs#HdNB6K7#&?)52ljC-o`A^xn#F^KzBo z!21BK8j-jkP5c_!gbb^^q*oXjP%DMJmBT_A(YsI-jMJLA!qZy$ucEvD&;z`HhSg1Z zNfd~tsD~<*rRSCc*k3L_R*1(-?)Qy4cu!v9T#}s$P6<w1SjwY{z?ih_%*wnRJWuu6PAPjva&aNS4!B|3nmN*?(bIHE= zJ+-HYjIM0X8X55>BaKSgk{FZnm3dVL7=@FQp$V@gbC+zuG@}dhLq@%hzdcq!o5%!6 zVnDz=vKSl~G=iV7`S(~&*&T}k_%2Mcp$*aTW73GUF+!>a2WwO4(*3xH*$^EiL|21T zYsUt3sw6X$_KuQlnhtgVv4;5g(Xj2J8o5V!_&I0~4ewhSrvXYFS#(@T!cV$x4*@IJ zBtOF%nQo5OG{h?|;2JH%nk)?k;D*hVgx>i_9xHeXVwbqUtHAr&rGYMLHVz`qL?d77 zOxD}R`6>txM+pF#op768>`SLb9wbJ-jN2U3(sAl2P=?{yR7?1SjEblLX}s%4v16lvayxnkUMIyOO@no?NnSXu z1sbZ(GT@5W-AhtQ2qGjOl_7tS6a2gfSjhO zFH zMGA?Tg*t*9;!#Z(wNBB3MW8B2KH~22#th?RaiU`P>d}0ki9Bynx_JwDJV;h3Yj8ma zIgBFs93OMZlW@shHI>Tw49ZF3b#FKYsayby(1xv^!77QW@4qyJK1<`*rGF&!sI)*2 z%eu7u@@I05!&ky&E;02|92DX(7c4?#`7$**OMUS3unIAfxN=3w>mzXiI|<=1Xh9Z> z%)2Z~yctsf5w}^17b0QOReMHE2M;xi7(C456KM-IQLx$`yx9IAr{!XW`8KdEqUWl@ zGikZ%^f&xcHJ84?hFTej67wklWivc-kc-FTqxInkl~^4&%Fbz^J?Wo*bMs9hDU&k` zbVcqUaR4*vI?dqt7`i>x9;{!)rU(9<-1MS#zrG z0h`~3+k@?KNO^!Y+lPRmE|b@5+VGhdIzjME8d5w|bZZhA3yii01#W}fRt7VP{}Rl6 zEgnmVK+WVzX3t8QRmZ5FM&0q6xfq1n>a*&e4@M{)t4l83SaSNR0<5MFE?ygTx7QM( zb0=v8!8PU)i8oo_TtoJVV+3jhP-iYqug(tGqI?V)euxbwv5$fHXXgnR%{DEZuF>*a z<9oEP@mtOAFj|S@V^sn?`Z>p9zCGtWm4d&!V9)TTCazob17`1X8t425sTE2AVr@hM zh6@a8HJf^pA{02=fj&4|GTH|l60zQ4tW0`JOOI?Yf$AI4kOO6+JqpcOk#@wHiv^GT zI}%!^ax9#UdWdN^Y~D4X=1JP6VCWotQZ0Y!Du`oPlD#g~;!o&QxEFbKh)?g1S;|hy zWRBg`6p66`*@hfgYkkvPog^u)LfgQedb^@Q2qXj#v9id<#a%L%-ch%8*(#jHf#O`6 z-H=c*swo*LTt`TkM=sc1v4K4rDymFH77l_zVtmELI^7PszesEOQ;5PD(DY8;9~tcj z*AnBalaG&eIyH`GoC0VEBc}##*rI$?B281*s~+b2a&^6XDJPN_wQ4qTfAyV1xR z*!a0_rI%MuPs?(h>~qZMqzzOJHu6#IbzmT$Ax^A!Jsoj!g4#Vk>clsuVs(jo4L3Bv zm#lz<$pnIxc5&bEpw#-Na0~MQX%_h*W;ZF%{uG<^#FJLKbGWGL&PamD%bw}l1=w!5{j`xk_ptCppS|x{jq11pUU*Scp@KV4b{=4lI)AbD#w(tAsSo~PpVN58+6uV_(7dyeT zRrKz6Q#u)&YK^`<;O&IYX5>17_WoM>(~VENmX@7mD=Q1f?WQaDnnHwfw zL}TAZ5oXhBqXQ~!wC3z_L=SdZP2KVF5lf+9B`wtsT6o7cHdJ@qFq7w;FHVPug0`^+ z+9DffnaV;%C)tE7Cz%utV?YWg=Y=>jA*q=N#lT%a5qQN28M6$cos2(e6G7KWu!QjD z0Qt$S!h=Bi`ue@_7q!#>Tuen^O!kY*~DEvX7gpoQ2CNQ^3^P!cNBIBD+&R z$(AN5bFEqL-?xEpGo@$d>#~U(Gl>`L&P=FrN{(pc6SZ&6mU6GjaEdan((Ga0FOY>w zGezN$TeU|U>CAynYq>;m7PCv>TX%|lh=9wnt=x`D!#6OHtzjkDE1JaGY&q-#E#tkN z$GE$z5T}BJJ+uU>+p;l-k3w==?l$lqM|qJ*!Y#??i;R1 z-KqSGt`1H>Gbt1t%8n<_*aJ6bR4uDIIl1bzFwkcXGX)|N#dB84iCc0qGc!GoQNX$4 zxVg>1&?E)i)J<9;hGE-ojA!|-qB?w=CR(rIFn(;A;Y^r3|_ zMPFzEFV$?uBNR=xkxSvwo^8@2Bk5}h4_e~gN4LmUQ!5U#cac5oN2p}OxGd=elkBFN z@}5u1HH{-lUYpbvu?=g;=m94oO&Nc)wOl~%G~a@a6hxG5kkGaLrW^w{(E^-w<^|mc zVNk>+k&f^(H`z0)!DVJIMC+J5K;K{xJ_iBi(B6|=WHsxhJjSS&l8&i&#KE1?F`V)v zWgMahQMZR1VP!USVZm-Ddo4c=h)SXGB{*hmBs^13O^mxP-PPr@i#Li4l61=ph?a>+ z<%jtr&KDh2JCYIpV;k?>0*5&H z>Slwr1OBzfev}%&Lnq`irbI*Y6%5J%TP$P`h$`=I#4V016Avh}&^UEcDH$KUSaLL& zn1;kwS1)+uFiABu^c&%aB#Lqe%DKI81Y1U8(D1r9cuefo%z2CLjTH8Iv7wPYjGj8O zt3Z%O$2<_hj>w278LpE+*5n?8e${wQ+E9e}Ymgc6B~2?8gkYT{u`yXg%n{kb`Jv2d^ibwCn?l27sMe9}WSF zxNG}h$wo2JTwZ*Wc1TxrURW6l@STi0M(vSEvKpsP?5o|I7=g`o4pheu-PevInVV8w zNTECv%3*$FsdXQ@L24b&GY79umDX!1homr_)9z3csUse|@6GAm$rU=CxKX~scgI${|>;$2X9@4f`59v^nmi3@AznOc7nFOv_fW86`6Ka|G3-E|2Pj=~w< zw@yUQhbE}f=62`?gv9$KY_-Olw-)54~a8fpMQXq5?V=QE`GlREl zR5&-&1~%vm6BdDegw7P<;rJMx$tskmPj&VUWS|>*M1_GMsX_Y^{ukT@4wJ=@UW8#X zP+iv})n&5Frvf7!M>JSQq5$|#Rm~+_C|#S_w<`^5UmOGQ-szsiX0VeY+avp()jCRu z@zsXj@mfj_uUo--@WK>R#8dr(tx>$tctc)wR~x(Fb6|}tl?()5N-)*g~I1iUIJ)woL!G_s=t*axL5GB{RkRn~68M9QS<>2S3 zp_Cp%^GDmSNX^m!zsopwYU3Nemxn_frBUoLf3^u1nr2awz_HqLv%D3qGUloC!9=e^ zdlKXhxYHh0NWns}QyLg?fz$LE=W^)6oQ0lbWTbOPLgK{hc5EKYoVKhRSTQ7FCy7CV zuu#E<)NGYCS!kK$0Wh55o=Auc;At7HH4CcJ0D`m&Jji+azdSHHXoaj+;-#S5!%ENV1pBi#YQnlDZe(|Gkdkx z02xdmzM=%%xJlQmeuizwod_nyk|H+VkZ_{RS2}hnBx%?$_I}b)4zN)nSwF6;N0zx5 z%>Ic`50nh>F4So^vTh|oL9Fi5*4W4ZSSOID8l1v=%n``ef?P9dqv?f1g z!;{g0T(txAoi%VKCb<$>dCA!qFl-*jK9hVr$dS^8tRKcxGg)|dd1i!Usguu|W4<33 zoJ?+}(Tud_S_|ij6}e;<9W^aHBf^lKGH2a#__xeT`8KjV>bZLcop?Nj#lNONkaSt+ znF3-3Bm;-hQOY8;a7G?DLw9K!-d>ord(JFyJ%V$k;em@PvgF~Nu$!~axQ)!gb>C*r3vN0YjU~+$ z+o;%NsmAEX-cuW6k{Tz+w1MXU1e}XY_2Uvp+=(#hXjV9&B3Wjc3kNr)w0C4#qi!-* z!PAPZxHjOc8?KI6CJDAFry3T+i@GF0*TJHb>{gOV8ty>q_)!V9BU@O_R`Fe^+W?7) z8cQ~lO4{wGKAT>6w{Q76s#YY<1qXDrjHZB8U6FxN?W`%O3Rdj}PoWb#Y*mu`0_gsEyyofSn6T}$lwxdVBil%ps-lO zO~T=;VTLkLXFWqTuSJ%Y^<(bPlitD-H1XTnY?-X(Qv+2Cb(T3w@ddUBx(Y-Rou8m? zf$auy%IFAl)+)PJAhSuovk^mVmTxaTcbw6{TkU4?S+nV!HOelExwKlI7NNA zi5h#97WKC%L*Tj0`T}Au0dLa;!+vLzvI?xs0yvlJ23|Tv4w^Hw-MBAUMOs} z1Q1glle7*Dh7?@xN2JH0t0g)=1wIHMW4AlzBw{!R`n;owSBWekLH4pyJv(K&3-FaR zUwZ4iH%LYvYB^jmxg%ZQS)Is1}urvp+-2s{wRBAkt%Y9QwS5|6{AHCHNlxXj`p=Pt? z!EBJU;k<_pzlI1%Q`J|G0x+)`#BKpTJT{x=T%9FrRjk?m&G z9K|WRV43Khlv zM&qA+=1e-(!~w0!z7`yh*@?w2CySZza?c)CtKrJyJ7b(vL?cwoa7rad$7*Mg_&eAO zj?=Y{9>&8N32)fN3X)MTH(I0-G$FJHsT@riA=*!AZHl{1 z7G!lI=G?W|b{Il4$Bb!Ce)ET6;Z0CW?V|Jdyv6yMOouE5P;awRITeNkpRH7zoleTq z0l5M;nT1(Tq6X}gr)$tbmqXk@qMR3_Le6(07LL1tCi!Y7BTVR%3^+1Z6r}sHWJ((2 zwZtf6r>Iemt-}HPJ`Bkl2t}LFxjP7gS25)h89QqB1Y{q`I1iWC%qmrl1G#Rw-hI&y zUKX498+2U;e1DBoxWlf=XJieW6lUg zwbzc3qsU7IDv~!skxL#Y?$pXCIs)UM){(;U#u}j^?sxfsUL$TpPVFd_nY}gWK16_6 zqA1wPDd2MSkXIcIAzhHq(w9*UPhG9{c)8C-Ix+V<8J!!WGer4U8RJtSiR~WVGY*eP za~O1Dw84xhU*{-@+xu|79^j*>?fPhUOY?+(f>9qojX?VAV*0$JA?4!^9wfce47jK8 zWdKCm5?fTc4?Itd{(0W4>)k=Es`n%Qj6y0G&hpJb#|Olc>+fu>Xm=XTkUfZkOPnK2 zj1rHh787|-0^*L)SDURY0M?GDotO}Xm+EduA-o8SVm)MQ(~3ZkxD#ko&{k;Wvh8IZ zv3xMt%NbD}8rT0q3=t;Ha|wB_?PZqr`c^jrH=PZa#V$8BUI?9V7|g$(nWdu)q$Zd> zoYs$_up7^VKFYGy@dxRT&++?iYCS&rqaO=)=2WSCt04S`aZYr3f_>Fu`HqF`xz}o4 zYFrA-aqaCJx31lI({YKi26g=bUeHlJhn^@|rSv313aGMD7% zB@aHj$PX~C9Fbn4!`Q&I@Gg!#vY_-z$-sEmP>C>O!=`%ws;%gJ?IY2 z#R%ExjexmAAw)PQ}59TmJ4gc)(9ajfw##!S}h-kfLbgWr>C1z5w7cTvJx~~ zC8U6D7yS|8yN0nCEXF(;TrmVriE$@FfQotwj{*?Pz`cwlFjEE7aAAxF-bNz zzLqgbUi|1M6}swJZ3(E2XqipE(`*h8_5iI&9)!pHa@S+%sjfZe_@+BojyAn>MCJPj zd`mk{%ry}QgwXmVCW%2Awj(whwnQTvj)6i-N2Hrr$2?*KiC@RQ8jVvGENq!hjE6XzVR-z78Owy$J6IE(J%)gsvmd z2MjjP1Jsa_KL|3>NLM-u2gP%vMv95}K6cyd?wB50nK)Pl#tn8f5>L%DzY`@>;c6cn zpkR193Tqr>G*6yrl~Wy=n2!(17@1k`artDXrxIUg1q*OByIvFPgM=;^l+@}R>pI02 z57UI+QM{KKgf;OwJwRN>}DkgIm>uHmM znq#tMqi~tdRoTkecS)>7)ma+B7mvDaZG(K#)`IVvP}tT~jY#+wDM=2*iK@%jQ)+p@ zYoKj-8VqyyiA}L(pw7d@B|^k#N^RJaMO$GvNpP7^-wyw3PZEcW6B$?|uUe4}mc&2W z10-3;S0F#?C(TtT3m|?6zA2Wb`pGRi;R&xeKC)>ZFSs96z$MT{4&rRzOF=@te8`l{ zlgYH`FwI}N~1vagp(qZfgBvLPf^2m)&R5A!?_A@ z9R$7TD_sp+z-Q%%!m&y|UT%LeB2p zh=M&u0kAo#j9HqZVUwv5h_l|f?~G!4kJbwYO&D+avVbq2HH0a$dG4>>yeUfO zPE5i!d&O7j=yecqBFgm`gaXPPZLRAm@Wd!*3U5V$?m%deZ=cWUb*+bb^$J>I5RoM4 z*nE)&z1Mh60Po3urHYYtDf^z@sjz9aL}WE)Cw#?^j_p*ZPch5rV3$iiwAGRf^iF_; zlmc);1(-_1VL_BWc^M36_^2xpWZwBWblbQr+w(F!0p1_czp~&sBm6CRi;wG<3D%l1 z850Lz4yTu#s3W7jt7NKCnn}@=csbZC4c=Ok1ZR6tr%B{AVFXfd`D=kh9-~M?2J@Y#8LQ79;5-r z4|mKnph$`~hSCi@?f}9bcqU`I9>ze?&TZ2#hzn{c&OTB^Vdti`$x$jHq-4e6UZm_~zTX+DR4O z)_VSu8g?0Ri?SKmbj!ZGm(xVXvBYm2{|;A~dk9xcrG~JTokP;=T*GM$52gQhhm>`f&~Z-os-W zZ!-_+uG1J)kfv8-KGFe$QfG=G2ZF66ppf`ov~}bo1jKESGCHo!_L{Y>7h#%%c3=x$ zG3*P&K}2lmC?^(ra~2K<>vMW|w98;#4Eg5*`GoZ-9#2`E;{w~{0KOd)o8Aq+;+&rn zV!{Nmlam-*NP8%&b;T}i>*~$>H*dW9=9M?U#IBRZDwDL~%W-3`p$rl*(PL@>gqV1x zfdZ0?BqXUBi**Khiw1p@EuUq$yapZ@BGOgQI3O67jDmdnYvG*ORLDF0vM@F#&P=0x zXUw`G!z_}Bt8JJYjt;aLoEN`$dfz%9I<+#PFpw!X6ExBLi-{#G7yN))(nZT3+F?ZI zZcVg;F|8wxWyidxhCuERQEenasU@R8a9&4r-gW#mcMqsI^Ty-C?_4(fZtn2F>YF+T zi_2MS>XLO(jy%(x;ns@Ao+X4emMi==Hd?th>uuvvJJP(XMPqYZvh8A=ribl;aP4?- zHHkcWR_P}6e+e)I6;J3TEX`veraGBvhg%0~?2c9%h*6w*g`4v3Ma_9-Y8Y$ByW`0Y(Rf!DQ?uvP!FE7m<4h)T zn|;xvVR8YJSf*{=zb{YskzjHWX3(X;@gWmz=FqEECr~AQu~|B~*JIVVT!Nv9=4K3x zgJ^Q4SZYF18YYHk?vDo+9y^%|&oRwqoz@U~HX5RY&C>6)11Ajr)4tn|XDyg(3zZQgv9M@1QQKgz z0La=&{IKX!M=Oz^L5xkJJGe3JQSUrfs*yP;2D&>ufbHJVx&RGTdZ1#-IlOH^`+~tJ zXmS@668*JmqK#rJ)#@cU@kR4U&9a5&P*n(S1=ZPHGWr{4uu1di7JNu$ZYIgl%-L%v z-kI!C5oE*Y*B*uSu|?1_he{Ap3dwqnU3|hdnz;6^O|{$HHO8C zTUGb9SJ99IskW7=gnR00zvEXjCcN&z;zKQWD?WsCu`P}UC52&A;ik)%x2&I`ceM;* zL6?BNXjG?4F8=08%VU13^!oS9-l$cE21S zlZw3Aoci&C_<|h2$xCA%oO;&S$cCfU9V^w@?~eef#&8@bu&jGBUG`%w>rFhRFs#yY zRXIn1WK(6qDb8>HHM4uHV;a`hq01m1mJX-ofj|n`_LuA0!U}3!$e%Iaws(TYEkg$i($>c!%5NB>p3x3O^ut^RO-G@hHheiX*eIv z55c#qx*8_zXu!%=jbO7AYY>$j!ZH;UA}F6(T5;gx!MK%gge-BfR^BZ)*Od}k{muyL zc2Lqjm$YQ#3fUEuODLTOIaDHmF!F-f>{H*O=XoN#T3B?n$R2fM(ZVpyh3BT-cGEU4G37K>oXP`G@cKUmXR5|Uo6S{rQ^&u7b1l^v3V5&>{+FMH zPq6JE++&3~#_SouPV%`H>)A8GI@n7L%fZaHr{zt1u0DPP&d6a;pxUgDKK4vi9A_;< zsW3ZHN{FHL3T7Vdcq{}f9?cBthQO=3j7@7Hk)fE!KcX5W;bRe z*As?p{f|`rk#Waz$~K!ViD=+9SQscEx5Q9i@fN)f$W2J}wIVNz&l4YqRF3|dfdJ5^ zpjY(-MA5MtgfWp6n4sQ7N15^dD4Fc-`?dni4fvFU4nPX8Pn9EMlOjs?jyNF#Wx~kW zm>~QSSgOKQJz7?c$1GlH>`>!>cCLt!6fkGH9LmyK;E@<-niQ+j{J8UDX?c(}vK~d1 z@S_Kkc|L;no{A{h)3SB44%Fxv`Pzleq*xzS=P)7?&(I7c8zJQb55Zb5NXKwY)+MTj zqoBf;=_D`e3qQ1+Ail&LbJ#&sdY01JsLWSsm1AAvqwVc76(dy)kVmKo7YWV(kN|+r2AV84#0aiJIdZ zVfjIMHXEDUgRr=&niL~6jA@b{9ow!kMIGV3ZRCTp7Fjup{AousH*>O)fhXQb{0QLr zl2KVxFp3Dr;A?AP2$GnO(vPsjK%!t-JGP1LE^8X>G&pqT*fBI)r)#~qbb_uOTAF0C z>8V4t1_yIf=an}YuzPGu63TYgp34rFxM_7~FKbRrY|z`AmtjpJ{EJ?0n_Lel7>Xn* zoCQ0y!{YnRfw4XklmYq98UteeT6W7R)pDs7ZKIaSjYXj=ol7+G#ZkTvq7k32Ea z8lp+fA>=w*a|*+ez*(oPX()#XcHBJJ3=oxfZ13;u@>AK9CW#H&pJ7VV(OB(4Gdt1W z%(zcdTS!Pg8g`<=uehBH59S&nnqUyZX_4)y1_U+k8oT-J_%aLZeY0U#*`}Kt6!#hvu@pFHitI!+i>_1zNf5%YT6FwayP=& zjVcqB)v&Q++-{2|+RBCQp3zcC~O2^E^gG_Kr1V3OQU&cdSxc*FC?9fF(l1JmVf>T|{lB zc+!c+(GID`3<7#{L?q1S9R(qd?Km9=Ln2-nE~!84A&;=yNcVd?E#G0YoANRC(04_| zi?4fTvUEh%AGZ7x_Q)wg%SRBxd_^sD%4YED$blI75^?SIQ95dyv&gpuFlh#)tQ>*x zdz!}u$6TPuIl>4aBqPX`p3>DUml^`+G-ykDGXG4}7H3>6W|hJO-G(fvbRMtS@j^?a&6`_xv|yA!Xfb((;?@N?j`316h$#2l~4{- zUvue4Kc+@l0VwK5Rfw?8ZX{76^XiO@3NOnSR8{>?*Wnwd>tGy z5z6@rjkNWl2gDFfO-Gu(6}QSD?(u=ToQYpe5iyEZU`0ZCS5L7FC$EC8r`z>3@KjZg zxH1I{Tfw^6wO9&DPYjAzB}zGSgzsXYE7>>M`*?i)w!4+H+)rj#yTpsU%yDPQdK4xw zN4THTFS)PNDToVEhIhq;xp;?Vr$)x2C&BxXxju&(%Lk!&IGY?iT*;*8B6j?twG1vA zzpF~g?&aJbHsCW}DCW%uf|Sxt6<$c0gC!gBJ{twZiS>T$sC4X6M8nSL_6u6iu$vjR z6~$DjzRn(}W{*j@Mp2nMMwCTr6g_vKodRLMJ2tU0DZZCxf-Eq|%yULnv@@$#ZN63# zi9|^(Q&4udNrE!z;i^>`0C}&|YhhdTgD_6~4JE;9l{9a37+pSQ)!XGMeQz`xT#o6$ zNhRsY_jz0wpUzGoZJ=Tb>Qk<9j%r7>oG6(@giu?Pnmazs#N3N986sXkaGT=#m}{2h zI!%0(+UR$z=@5U(&ZKA7I;JGzy?7Uk?5>Fe2Nw~Q6pxX0*0`RI83!ihv?foMTh3P^ z=Q*juqeP1j0~i7lnX!-?=qUC>hswOq$DNF}OcZ5Qi+H>>VU#SsNEhcjn#jSAUIA<7 zCZU>%>RGLpGR*$w@*GKRy3l3vodZH`F1l@+M)VfIEC6Ly)?I7)Tb{Dn$L!J;#1FLy zhcBbwX)vRvtWjxQC+r|rBm<~hlRoTd3{qC&e2O=1wwrCo+Z5lDW%L`IbQjv7p9KBw z@R@Ww)O@_BZcn7-+ru%)c-GC4J+P(GQ#Uq9&}-`U=q|wphUe|j!i_Jn;8}AMYQ$W* zl(Tla)|nRbZ;FY~-p`0uP z;%O$s#XZRkQ_o{4_0w{!O$h+>cBN>%&iNe*0NrtsF7xpYN*RgM56pG!E$GYLQn`j& z#m>G&m-%(KF;kqXUh@o;gMzl;|aQ z`gzNcg`6B3ZY%65YzYCL`>z=fVl#Nj+>j@fcn(HKEKi2xQJU1g!IAJB3j@_Jy4)H zcoJlfBa>$!ST(BU$q?hsVgh+y05^RkRZ~qe{%ASWGX(xEqKw0ocxu2U!b~jDe)O;> z0ZjZb{RL(u{A}Xp=K^!O=}U1t)Uk0-4@12b7Wac;+OiVcf_^-ks~WZ7<%MbM{f}Rh zhTY|c_0)SNU48}_cL2H$k8C?6!?~6UpIKi`gU>+ekSEKfrL8*krx9L_BBE0H#8Z@A zwd02Mv_@fkvz?Oh5C+C~9NQ#~6AXp!+R?Ce2d{`&4@W9-29R+Q)jN0)?D|kjoB=4q z2RcxXF)SdWE81-w(amXxoL_cg(xh^-vfh!%yt@>yY8O$5o@wtE5P&a$1CFa9DG zZ;!g;VHX7UtH}s`UdJX7|JQ$`26;-S3rKYC1&oNg@!ZDda~C#)jSI~SpK4xwG1yOb zc2c2oa>;G8B^iHSW6eVOEHkF?nCUcXld^gwGR@*(aHTV zK0?NXuJ8bKoUxo@si<#WG&1`X+ect-%y^6fd6^be8?o4|lJ(4(| zHpN`B>s+t7n-Vva4Nqy}j1Ch#W;LxHsULa8Xj1E&#<-mViIMXGncv#2UQ}6Ze0WGE z!wrR)bM9$*kOr%)iBor^R!4oH6&(Ckr%`Zi3w`31s!%#(m(ie4XnD3?y&+Ky@go;w zbrwY-@qyu7x@H&Q7<;191rboa#q?I*=71QFvhg1ARh>ua2TGD0Wb0(l1P}=8UYqr7 zm*1Ux<5vi|uMz3lyb#|eF{+4+Tm%DNJS#(+whFS_Zx-OHWOREh$SPrZzFyc$nX3?A z6uxLAN$Vgj-$ezRU z*{BV(y}kQ3qUQTTYP^CT}y&!#QMwm_rU+j2P8w7iM0<+iYE_<=V>F;#YJuKFnYY_33< zO~YM$5_~w6nhM?Cy#=iH`$uYOQMEfu1D7F`RFwQM9G z5d_Yz+J}V3860*SdN#{UeEo6wjwEaQ5b#)7k5eJ?*8vZ_nSYeectMf^BAGe)pIylp z*{;vRvJIn+5tw4EQAId9e2R~KTI!85469V;e(%qJPx@<@fAPXbWw8Q3;lIlFN9&*d z{^;3%x03nuu`fsMgD*#zQUZR}#s|Zr@qRLBpgA&r|M4rGj>Hb)3;Z;=K^LWTYmOL5 zx!a-<8~WZI;~hHsBI2C^tO1%#;$=Jj+YEO0Sd~Vx^rKwRZ#3ot1P)1$a6>H6Fg0rw z97Yt&f9X2>`?t^>xbm%wf2V!W?NlmH{Bj$hS^4-A zzg78HE0sV1zwnPMqe|s>y+_Z#Tsf>%zUg&({*}rfgy%m>&%avv*Wvl+==s+wf230R z=HE}x|FrVQ;CYXpf4%Y-;Q2qM=ijJ&4?O=iK0o#SmG7-ozU4AK|3Kxh!t=jL&wr)z zL-70)^!!&VKV7MO>+h!L|Dy8u;rTv2|Cg121kZnoo`10N>+t;R^!(T6<|~!o{b_ps z>vP`<&;JTN|Il0r&wrDie|T=aQu#gKK+pfx+>7x1Ha-8>b64T{&(ZVWnEO0D{}Mg_ z$lRSu<@Y{E&wq379y}k?^M5lJ!Si3E=O3L*DwS_LOV596?g*Z5)ANtb!JNMBPtfy! zJNIwH^WUTAAD;t6|Mv6r{NK$%pWmL)^H0qENAUc8^!$@^@b9-1{Ga-%xgV}nzJuWZ z)KAa-7(5gFpZb}(pMqzC|5HCZ_w$v?cM|-c`rC8R&vz31pZYs`TY$4|8f4C;hEw8Kh1w9JTv@% zVSX8&8UBB7eiJZ=;r~C+H{qG#|M%x#foF#QKbZeQrE-qp{}1Q?06a7N|Cjl9;F;n7 zi}TRWIfnl~ng<*W8UDXCpTaZ4{~ym!;hEw8Pv-w{rLx5E|K)jr?GnTPSLXjLJTv@% zbsomM#PI*M`M+GL)EWN&bp8k7nc@HI^FImC4FBJl{{?tv`2XhouT?6~F#P}5`QL$O zhX4Pz@Dw~V{QvibZ>m&2$?*R_7QPLh8UDYua1Nds{=dDj3eODx|8oK6be`e=I}0zs zGsFM?TKEh+GyMPW1=#P)4FCUUVH=(q{{QbnAD$Wh|7_s_JTv^?TY$Z}LhygOvH-hz zh2a16+yd;)6@vfM^9z5xQduSVKfSO3@L47JKfSo{AHXxgzw*_E|1enilTXs~A6ocN zgUaeJ$@?D;D$o8Ye*fNk@cf_Q7j55V(xKlN7@ zelDo=A2JPD_=TYIr;nM2Ec{|n`Q9I88nW;!LFG5Uk!i@nZw7OVKgl#?;dg?$ml$XM z`ocd8=6;m%`G*$I1am*}pEC_v{CF_;tACbh$l^B#^H0{8hAe(ZF#oCFU>dSm59UAj z4AYRsm0oZU*yz_s=j5S$rv2xcm~+kj2ji3&-;etHpk0@h`svbNMRJVH_j1 zv+z$U-vTGZw+lV|wxBZq3GS-`c(=ef{3BR)@yD4yR5mJ=GfPY#DnRSb9x)xLz5*zX9(qgRP?>1`>z|lSPc$x3~+3-QrFXjh|=(A9(PwcCx!0$M^e_y|a7C&Q32L zJpmlv&e0S5z{`!F=mYl^pBcu3cDHvn-Jgudz4*y=IEs$i(O?ldlEv{TK6v5~t*)tu zGdq*^K|DUw#_&wNGjGOe_bc()_$cm-lHt?x?>ahLpZ!Xb^nrzXlKxF5<0s#_-=2)p zWb{M?48Y+xqMuFYK0V*>B!`2KyDug~n#Pkm$zFo@lD}&w8IP0xeKaV%-%dt@c=S#3 zimpB6-Ba=oQ?-9gp2smhKD?g}yQ8T0v388w{`gD=*M8I;)jHj%pA0(p>CHkX8J~gwpo6D7$pj$G6L_jK0+H)}FB|^r8ZZDpUvI_*j-lV@T@M0}?+sWW#n3b4&ev&`|)2Pw|&X`}}eDPri zmNOYV+3VehPGDVoBYs%uM}w#P-A<<$a}f^>&LEV=@#3&INk9HwlQ>0Lg6C9aNJEz& z<0tG>UP7l&(UbH#8u#w^VC|kvqizpZvX<`9DsxkxfM5IfU4Y?t8b1B{IQ-&<8Jh5O zGPG46cvTg1&!iOe{0uB~Cm#8Dd}fR*F+MXU*nNDQ44vM-!Te+_`bPZiqScf50%v;` zA7HMuEuNexXko=hajzFWIT0B1j(OrCUOZK=P*Uz!lZQ3hv$xTW5Pp3^a-s$1`~3Le z48!jXAQ^z~3A#djVmE0|(zD3O0@^I%Za=+OR z(0LKBBF_rLeHMM66Mzyh*wDv^wLDR|TXb}zh&fa0(`pg}=YF$L> h?BjPv$(PAkKDZVEBtbBE^X~O)Kx`+KAE@O1{D0*Q488yW diff --git a/Mac/Resources/version.r b/Mac/Resources/version.r deleted file mode 100644 index 85d7466136e5..000000000000 --- a/Mac/Resources/version.r +++ /dev/null @@ -1,30 +0,0 @@ -/* -** Create the 'vers' version resource from information in the -** Python include files. -*/ - -#include "Types.r" - -#include "patchlevel.h" - -/* Invent the Mac version from the Python version */ -#if PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_ALPHA -#define V_RELEASE alpha -#endif -#if PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_BETA -#define V_RELEASE beta -#endif -#ifndef V_RELEASE -#define V_RELEASE final -#endif - -resource 'vers' (1) { - PY_MAJOR_VERSION, - (PY_MINOR_VERSION<<4) | (PY_MICRO_VERSION), - V_RELEASE, - PY_RELEASE_SERIAL, - 0, - PY_VERSION, - $$Format("%s, © Python Software Foundation %s", - PY_VERSION, $$Date) -}; diff --git a/Mac/Tools/CGI/BuildCGIApplet.py b/Mac/Tools/CGI/BuildCGIApplet.py deleted file mode 100644 index 0ee2ce000805..000000000000 --- a/Mac/Tools/CGI/BuildCGIApplet.py +++ /dev/null @@ -1,76 +0,0 @@ -"""BuildCGIApplet.py -- Create a CGI applet from a Python script. - -Specilized version of BuildApplet, enabling Python CGI scripts to be -used under Mac web servers like WebStar. The __main__ program is -PythonCGISlave.py, which provides a compatibility layer, emulating -Unix-style CGI scripts. See CGI_README.txt for details. -""" - -import sys -import os -import macfs -import MacOS -from Carbon import Res -import EasyDialogs -import buildtools -import py_resource - - -def main(): - try: - buildcgiapplet() - except buildtools.BuildError, detail: - EasyDialogs.Message(detail) - - -def buildcgiapplet(): - buildtools.DEBUG=1 - - # Find the template - # (there's no point in proceeding if we can't find it) - - template = buildtools.findtemplate() - wrapper = "PythonCGISlave.py" - if not os.path.exists("PythonCGISlave.py"): - wrapper = os.path.join(sys.exec_prefix, ":Mac:Tools:CGI", wrapper) - - # Ask for source text if not specified in sys.argv[1:] - if not sys.argv[1:]: - srcfss, ok = macfs.PromptGetFile('Select a CGI script:', 'TEXT', 'APPL') - if not ok: - return - filename = srcfss.as_pathname() - dstfilename = mkcgifilename(filename) - dstfss, ok = macfs.StandardPutFile('Save application as:', - os.path.basename(dstfilename)) - if not ok: - return - dstfilename = dstfss.as_pathname() - buildone(template, wrapper, filename, dstfilename) - else: - # Loop over all files to be processed - for filename in sys.argv[1:]: - dstfilename = mkcgifilename(filename) - buildone(template, wrapper, filename, dstfilename) - - -def mkcgifilename(filename): - if filename[-3:] == '.py': - filename = filename[:-3] - filename = filename + ".cgi" - return filename - - -def buildone(template, wrapper, src, dst): - buildtools.process(template, wrapper, dst, 1) - # write source as a PYC resource into dst - ref = Res.FSpOpenResFile(dst, 2) - try: - Res.UseResFile(ref) - py_resource.frompyfile(src, "CGI_MAIN", preload=1) - finally: - Res.CloseResFile(ref) - - -if __name__ == '__main__': - main() diff --git a/Mac/Tools/CGI/BuildCGIApplet.rsrc b/Mac/Tools/CGI/BuildCGIApplet.rsrc deleted file mode 100644 index cc111083a279e79d5d4bd88056a340c83432792a..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 581 zc-muN6=PsvV!#BKLmnGusS>ATT zzek-w3KNwO^bn;#_`wF*^vC{*DE$)2!2IPq_ za6nCg0f7+Lh>#$yFl#N=(kq zO3W)x1qBnf@Ilzb!GPimM)c4R_74hSdB)HH^idQ8lY8iPPoSt&Kz>09kXB31&P)N) rMjDL&|HI9E3T9`4*$rS)1Vr!!6y;~7CYR(FDYzt-B*G$v0S5p8942Ku diff --git a/Mac/Tools/CGI/CGI_README.txt b/Mac/Tools/CGI/CGI_README.txt deleted file mode 100644 index 89f559f6f2ca..000000000000 --- a/Mac/Tools/CGI/CGI_README.txt +++ /dev/null @@ -1,66 +0,0 @@ -Python CGI under MacOS - -This folder contains two tools that enable Python CGI scripts under -Mac based web servers, like WebStar, Quid Quo Pro, NetPresentz or -Apple's Personal Webserver. - -Both tools emulate Unix style CGI's, allowing for cross platform -CGI scripts. In short, this happens by converting an AppleEvent sent -by the web server into os.environ dictionary entries. See below for more -details. - -Both tools serve slightly different purposes: -- PythonCGISlave enables execution of Python scripts as plain *.py - text files. The web server must be configured to handle .py requests - over to PythonCGISlave. Not all web servers support that. Eg. WebStar - does, but NetPresentz does not. -- BuildCGIApplet wraps a Python CGI script in a compatibility layer, and - creates a CGI Applet which can be executed by any web server. - -The pros and cons of using PythonCGISlave are (+ is good, - is bad): - + support plain .py files, no need to wrap each script - - not supported b all servers, requires more complicated configuration -The pros and cons of using BuildCGIApplet are: - + supported by more servers - + less configuration troubles - - must wrap each script - - -Using BuildCGIApplet - -Drop your CGI script onto BuildCGIApplet. An applet called