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 HcmV?d00001 literal 42274 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 diff --git a/Mac/Build/PythonCore.axp b/Mac/Build/PythonCore.axp deleted file mode 100644 index 035d7b80b25..00000000000 --- a/Mac/Build/PythonCore.axp +++ /dev/null @@ -1,7 +0,0 @@ -__terminate -__initialize -__start -__ptmf_null -__vec_longjmp -longjmp -exit diff --git a/Mac/Build/PythonCore.mcp b/Mac/Build/PythonCore.mcp deleted file mode 100644 index 7ec096f13e9565d55546b55e978e922dc53543a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 173876 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ƪ^nkesY3@a zxz2sS802*Wa~4qAdEumeh@UlWah-E0O0Gj3N|y6+NN(Oi@T%xow4PV{OP)jcN>=gM zP3JfSZaTZ5jnWx~?I1ah@tVyn5>hHNKT<_GXQ6+Aer0;j;4WGE`c;1-CjV3_`OXn; z%XK)G;<2r^a}Mluc2SQNhIHDzxE~#YSvGQrWVUc}mt>W4mx*x)XPewoJD`9GGp5fj z5%*~ehuBYNJI8<8!l@6W^Bwv@I=gsZu;)7T2fIl@3)?db+cTZ(*f(+wio|5bAis~K zGaQ;Oo$aRWocl|9FD0ixs{OGnJ_X9;mhrCaz|p&sSuh>S?Ah7xY**~WfLd+r(4TbJ zD+}l0+-Bqu*)|L3;IR^md#4 zxVPmwgucz9RP@`-oI60FQR%~#KrOryu?p2V=DXfYd zhGfl%1syJjmWHDXr6G!58?K!)xkwwyP9jkGWR09pxp>}Y=Wy1|HF7@j=Gr-(dvmQE zPQSTErQ5?+fsA3Xk5&jYqY7aLc86+_p472`5~6_eaEJes@%E9ZB%D0ZID-I4RD z-d0-4Ge9;NoX-QfHf7ERxyG)&Dy5h4s+bh@8kg2>F}~%f`efcLWLkSFHX)^MmFDHB zv5#2>A0KR%qVtAlHA(R|ESx(n9#=z0&YcXJp-!K({j(y0g1fJcf#53UN(skVNQtnN z3v%ZQsbSl(QrSV>xnfzH5|vX%&J|SIr7Ecmq`^v5G#e=;s+%=(u5{MMX&#ofDAVe; zZlf%V&wBH%N;xvG=%N$7Je#6Ho>!*h^x0-tqW!WZmTbkWS&6oEni)9VFfBDNDsd;( z@iwZ{J=APD1?Om|4pvt@$V%KGbGS>Z)DE#v3&ujFEsPB3JGUmM$SJu_Uo6_j z!@6P}M~{FG1BuQo(mhI#n>x3k6KHjj+DRuY9_l6Uj5>|Y++B7UnALSg;l;mFJGCPx zfl|{3wQXTL%2v6P17%pG@>mv|0yy1Cu5&!mt81Dfl`GY$C9lM(zT9P!$}gTKa~siN{6E*Df@W+q;E38nI#uOd{o)5U|zbhu{7Ew^BFQP~dXG?iC;lu=pE7f>p@ z_~k?<%OO%T`6Z@f8JmJe%j7sToZ}UO+R*XBKeK8nXf;V72bz`;ol zqnX;w;W|d;IgV;7R|XUZ2b37yGMknd;W9SmI*pW5+)2epyZS()DHe5_HJMz85zpk7 z81syU^QdPGoW?zq?J)A?mtQdU83TvW&*T;#|4gRy2xtt7kAb#Khp4w%lxR|$RY9ZL z@(P38WIB$9Ir&9qW$FC<5z*+2jfp0!)Tn4TDKakFvzx(&RdhlIi@SuLMO_N`Id;`341Ln2MDw#b)DFPN7LbNp+2?=cyn4cn;9!A$^cex#?Z!=C`d0B~~Su2i56o zc|6#fdkQPe&N+t_W*3~q3Qcs4vd=gcTI8O_3iET$V};q7V=%rew8%M=6=vH{Wrex< z=dvOexevlR8D!2Eg$CIZLt&mYAfar#$608T7bArRYA2atCl*9>9#>LN`nrPv28+a`sh zl`S)8n6l~f#wUA@ZD1;{PLD`=xjEe=FRvi*^YYE$lc&ucb&6*ehE{r<$+Iuw)SQvU zW}Y*o*z|d0i7m%Ih~%lA+){Md$lJD*+iU|x-d5?Fn(-sqT4s`!V~{gu6x&0lQ>O=y zVn+F+NHLq-;iQ;F&bU&{Aag7x3X0j}j5Ngz>_bkm{QR+}s7>x5`Wi6WhpF zCOC&Y zyeQboJy2w>w{v;Kdw0;z)!yZ5TkRtvGDe?(B|s9SKs%6c6s-YkfqZjDzCm;rkZ%sj zw}#FI@@=8@fN!>_ZwP%7c_EN*1#=#^CjXqacr20fb2V*E4@4rdSk!-fC=$0CmiqOhAd2n2rqYOi#4}LLbXAwPXC3a6%4HoL|6~DgrZ6Pkuk|_PU52Asvj{H?$?PE#i?(D|+Cse2qdB{(+99)=AqoD3Hd{_I z5)RtdQVD*c&zPp#sY!ONBc5Fe@Ny^KnIsNr#QFSLiZl`JFbNgMn+UdslauT7I z(AwO!xR@ncn!;@@*^C%lXV#Kd{}oBbt2 zDGA*aA%KxMI2KE-j!DO=Bok!-~|n3dTs$6Cg+ zEg&HvK1hGFPS(BTdEg`Pz^=?tyySVn^8g<~^qk;%!1I9Tft}m~6$ABy4(W+^p*y^h zvd|}<#`A#Z0nY=T2RsjW9`HQidBF34=K;?Ho(DV+d^|kRi-*{vu_!;*)`r%GiXZb- zQDdkUX(_9nN>x_%{1|TpER*z~Wt993U*Cm`7S@;9P1$TIr;L$r@yun5YgJitNCscub_^u1aRwc3ayLF4;gmR-ZG?^8&WA?X<`0b7tud&|~GS3&-up zpU-=uoCfu>3VB{A{c4K*QmoylH8##G(Dtxm1^eUGrrjAXTpf{=(=g-Yvh}e&OQl`p zYVWy54fEzq&(##J^+-7l^R`Vnjq_#|)*x5YBlTHYKO=XqJ-@bsUG~Jeu-uVJIqDo$ z=IlXV*3aijw8>L>c}ZpF>GD@~IpfFY>+S13S5D~)^;|h6hrsM}jotQJyktQ=R-e$? zlI7Ujs;gYjy-IK0-TDk>_qv=9H{P=4e7NnCDTfycmGWG7{kA^sH_9pHxt=RWo)axq zqweK3rt4F5CYs&1JY-xdmCKiHn`6P!6XQ|^xXfFDT~EyQ%M~Z(NUAM!CDjw>Q&kSm zQw4rV3yA|swap!oaFgc6mOWOVSh2llbv;oIr4zLSq-Iq&U=30C1Xnnb% zbJvAMt~%T~x}kH|gVjgtFgAsEF&|ob%=r@;a)!UCxKwKAHNsz0U1oeby7r zdhX@&I=9>9>^O5gh#l zE9F(mRD0REaZi*ZM^d}3?hll?ZtsbBQ}v0*V`ZIJz6l&HR+yaH5BWk#%HhR!haTd$ zy(G?*Z42|zj<|=OIUR`XTY&kCHUfnGxmT2yV>s@V{o_m!t?ryxTXXoj1T>X~O zMZaarDf0*p^-=EtEmh}odEw6eX75m=a-~>Sc)|3!<*XJootb|5N|(!#GCJ`aL-)$r zR&$7wzc5&q?cRU)>QiQ}(qrwzn^j81LXVY`;Ir)|l60O>(u7j!RHsM04XSdDZD{ci`X zUT3N_Y;66488gTF$Ih6xcp9Q{PW|Gso!NnB`%!to`zyerp3mI9_5KPl$3Nx%I&Z46 z_WlYm$8ATK^r#(ym zpq>52RJ>N?iKrg`g}&S6l&(lxlV^~-s;%h_?Bj@;3nCX_RMCw`%qNa)geTa~k|exdjN3Q*kL zqiF?u+g5X9@2>zm-*k;^qQ>+xf6r6yFP+Qf%aM711=#uaku4ZJ`HNmA){ZZ`@%{?1 z@ZBTseC_=epgTX=tyZw2#tiST0PSwEdi*-K$hEW-=)N46*SXy;$K`cy_sc0+Q0BV5 zyX9Cv!f zlyy0Ie+Afi*R5a^@2>zm?>D(dl2lvf$$Iav0JWde%M}psuK?5D$d#G7io@S}xS!*d zoDyY!W9WW4B@61Y`gnf@m=h@F;vhT6b2<0wVjN`3@%{?1Q|+@JYkhyM?6sKpSAaR5 z)hnI&jlm(Zi|n+BYMZ@D!22t}BHk~rs@)cU1z2r+1ikzrb;)7{TWzb~L%cVJckMUF zPTmvl@^70BJL0oK+v?ugHh4Rx_nUp!`i~5Z+w6S0Eq}AGl$v?T^T0>ufnAxQc**mC z=K=38YrPooJm7i2^FYPGhJ|zGoE+zdoS_!(-t4mk$CSV{)im!6}uyPz`GZ^Betqnr_Ojl`heFD z+<44;FR>dh?Nl~9{dDA5w~FKAD7t?7>=sqa?vI8$|?n_r`o7l-fUsct8) z|4v{1su{EAEeoy+H#a6?XD(gTSlK0z1fWA^?~gvAU}d*sjw<7Usa$sv^LcB(&enuFmsuFM`&u-_u{;z zoT|KQ7ia&t&GCA>TTktnb``Zd;>Vk|eOvXjxZbm@7b^4|n(syxpG;%NoZB~`oZYss zfmfpE0nY=T2fFA1@4j>w9rxjF=FROsJl}pS_FVkFw0Cv)v1q)WI7n{<=m{@=eD~p9 z-F*aY=aYM1rra8FB1%jS)~+Oh_j{oC~e*ngGTzg_Q>ZTrR(p_SG(E1rj&A02(~ zzz^2?Q}%+(Z<8YSW-(XkuYR%*ocXMz3hLv#MB9%)1w}8VwkqF8U#snZc@MfOt*_b- z*<0)X^-p-U(NDV;z;~Zo3hagRTKluiHPor-_n)*KbD%`L2yHjquzO`ROCq5$i?qFe#Gk!5# z{6&hqM-}I_rCRWl-TzC7hl+#R;z`=quD^V%xTJAjGG$$Jl=ygx?8UN%(2nVNu-lJ1 z4Sj!I-}gqs8v$w5%Ph41y6fh_R{&DodKTJm*Ih6hF7+ghdX0tl+jUnz2@i@Ew{B(8 zyDbpm`0Z)8Wvt!Q7KrERn~tTaPgBR^8}vtPZq!?~d?BN^wk$^X6|Eog3FOeWSbm(3 z*aN-x=cseO2LF?`A2A83+i_I#-*7o@(ukv2==zSj@AvROix$1qaiBV$QCD3H|BGnR z|AIEF*7`AzqIg}j_~)nSU())CSD|=QsjU&`BhB%gei=4HjQ&cbIi6<@KyTu3#P#US z@ti{(`b->-xE;MYo|9Y9@2dB6 zhU}&Hv*q9DC2mNgT4ka2*Zd6q(MoNNxF2bb^WyKIKSt|E{tBtveNd9V?j!Ccjg+xM zxBH+Vk8JqN-MNu(qu1>|=+y_&Pi38S$_sFFoPQVxpQiPrE$U!L##j?4gD$!lK11u@I0*k=ruTEzO7t_e{_O|Qn|7Q-U-r$?`cr=mH|_N- zDxdTp(tF?K{PMEi&ru7|OWcsAh(8Z8disiQj#B%ouOn>MYyA*>=$otcgU8S=#-Cfi ziT(twAIdmfd9$|vCT;GUr}WnH&mdpW`pqjFvi%(E7mT@I_ib zrkdk_TI;VBf65p~n({J>TCIQn67)-y+PBv)>0hSYGo-)JPb3}Lm&M-Ne&#dimnyY& zB<+~4*KwDkrwmC)PGvDf+y9bS^PMbO#xdGD9naIAM1P7>Tf6&^rrgLE(VwdIN8gJ4 zoZioEe?)(p)-R)7tTVNK)mrqYYkl1or1pQ!rQbu(I3;OKf<=?Eueo<$^dY78?ejaj z-5W~ZyH`7UIX=?Tr&){^z3=H}V#ya)YU|)3#HVG(G4Y8>LtlfeH{+O1fA|aN8Q;`+ zXwwgs{inw_n|@d;`d(&y%jzpS&}Yge9!#oeBc3zmX7$$4yV0l1wdt1)M4v9#rXTej z`rfA8tlqbXHZtSn#`<&c!zSzy%ZQ);Hz~hu9QF{3%~~H?pRwO?(IoU&YWl9?fbSZuU-K4v zJzi~`ycPWyw0>9wsmIj~??`+STat#wS?Fj3jjQ+<+ zJ-%(&@@MqocaDGR6Vz9aV;lRgMNb_>KWiC!J&tX7hC2FgPhW!3T>AS>+Wyp|GvnLFfd`@gs@6Bt zMrM55@D1A9ceB>FJdOS~-Ht~OMt_UaTf+}S>hW!3l$i0|s_mm=GUMBZi)7sUnzrAq zKT?lx8?L_(J?$rHH$MyAA2(b+75(k3lSasRqsP4s|M?60JCxcQu^g$#fsJFtZ+B{a z?H1${`Zz~(F7w@`^%E~Z>VCbkaUb+wSNe(+$8Y-ehRdm|?{1~{#qpCFCpR8RjQGBx z?Khl@AM`l6;aAn@?@@Yd;vbNDoZN8JRP>x1NENHrvCzl4;nDx1|CZ8Q>)u1^adN}@ zf1zCm-Wxq!FuF=y7u6>;QUVPSRN;SeW=cP5deKC!HeoFy;PsE_%*k zlFp(pm~nE$``G#(P-@?cmm&2yx#4ro=pR&i>nz%xaUhwBBl~C_OW(0qXZr8vv~0zK6B`o+mT?ebWaopnpW`U;JmLzi&RBSo1xq z^;@=P`upaic18b~(p$;tw2PicZMuoR?)$E`Z=8o-_xDZj9)q5-Ueb^YS?K=0`LNCC zzpvERkc~*~&&|Pl^gl3q>S+4=<}oSsKQ#KSNZsEz{aoVhM@p}%Vfy>#6Ml>S$6Eh= z{A~LB=HYDXdtB+QA#WnpdBoa$va~zng{0L@aNXZG51$JEiBkI>|9qyuZ{Gb4^!QQI z(7r5mf8TVkj1^BQbw$NZnf|_Mllb$eTHk+P{GEQWoah;&NfnpO&-C}r{d=MRxzbxh8D~s9Z(dAUzGscT5vlw8=HzJf&l&wn zr0(yVZhRE|FN|K|Psj77XB*J}QtLlY44eMG>B;`+pV#`shah!--+Tcv-DoD%&@+Wxc6_(Avg%}Xvr|0``j^lYT=@0(|%^S!L?2TjTJ z_szYjlkXL6e>gE?`upZ#wdj9s^t5BzKP@5jztQ^LCL?u!-*k=aXRFp9ej8H9=caFL wKu>H*I{f=AjDIfwANt=ZwRJfC$n^J3Z@rHG_gcSH{H*)?<~f(3|AXlN9}z_sYXATM diff --git a/Mac/Build/PythonInterpreter.mcp b/Mac/Build/PythonInterpreter.mcp deleted file mode 100644 index 830d7663d0db86c81afe4ab3c112e25f0c07b5c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109654 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 diff --git a/Mac/Build/PythonStandSmall.mcp b/Mac/Build/PythonStandSmall.mcp deleted file mode 100644 index 131b9ba2504db0949890e4d265b832b8e0b3fb11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349209 zcmeF431A#m{l{mv&C&ZVJz;@D3x%XDw3Ki(ZF;3mn$WbCawVH&+iaU;m)!(f^e-Dl zJOII40Ra(E5fv40Im8PU6$ItRa;YeCD2JT=e|~R%vpY$X&Dpdh^V)BI-*?Qs_kQp9 z-n@A;JFg}ht+y;|h-KMxtgQL-t*ix`E$iSr@YmS^n<&Q>MQg*GLh*Pc8V{DoquatY zO>WfSkV8||%(kuFyItSz-L^RK9_R?6U-*J$E!i#qh_S6<*`?9OP)$^#I℘Io5Fd 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
    @# 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 RIOuV`W5rJ($CxyX{|`#gW8eS) diff --git a/Mac/Build/PythonStandalone.mcp b/Mac/Build/PythonStandalone.mcp deleted file mode 100644 index 451422413e7eebd867e3c393d0da118a4d7c9b6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230859 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%0AJcxP}nCt9UMOK5!mD@15EJyr*fs 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 I#tp>%|F&?&tpET3 diff --git a/Mac/Build/_dummy_tkinter.mcp.exp b/Mac/Build/_dummy_tkinter.mcp.exp deleted file mode 100644 index 87b86e873d7..00000000000 --- 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 HcmV?d00001 literal 132924 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 rC&@y6K5Su!ULRAxq&M+5=yvG!1kL&PoX<80: - 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 150611143e1..00000000000 --- 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 bcb8d4e9d0d..00000000000 --- 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 HcmV?d00001 literal 45208 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 diff --git a/Mac/Contrib/BBPy.lm/BBpy.r b/Mac/Contrib/BBPy.lm/BBpy.r deleted file mode 100644 index 7d80b4a4274..00000000000 --- 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 67ee70fdcbd..00000000000 --- 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 f889e90903e..00000000000 --- 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 540060a1517..00000000000 --- 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 b60f0343ce7..00000000000 --- 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 f8c32f73880..00000000000 --- 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 1ac688760f2..00000000000 --- 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 51d206dfc29..00000000000 --- 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 51d206dfc29..00000000000 --- 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 22974eaaf37..00000000000 --- 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 12e2d04654e..00000000000 --- 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 f9b964cee19..00000000000 --- 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 f9b964cee19..00000000000 --- 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 a96b271abb3..00000000000 --- 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 ac261b5d37b..00000000000 --- 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 44a38c55c4d..00000000000 --- 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 89762f454d6..00000000000 --- 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 b6267f75621..00000000000 --- 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 HcmV?d00001 literal 13234 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 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 HcmV?d00001 literal 13853 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 LW=K0+fB*jgEMlFD diff --git a/Mac/Contrib/PythonDetector/PythonDetector b/Mac/Contrib/PythonDetector/PythonDetector deleted file mode 100644 index 6fc28b8faa8e8f698228e696c5d75dcd85e49c34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27559 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 diff --git a/Mac/Contrib/Sherlock/readme.txt b/Mac/Contrib/Sherlock/readme.txt deleted file mode 100644 index 2603bfcf856..00000000000 --- 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 821f7e15380..00000000000 --- 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 c6d32237dc5..00000000000 --- 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 34646c4ea52..00000000000 --- 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 aa9a5da3351..00000000000 --- 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 d567a95f46b..00000000000 --- 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 2fd046997ac..00000000000 --- 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 HcmV?d00001 literal 71523 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 z - * 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 dda7bbb0c1f..00000000000 --- 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 HcmV?d00001 literal 693147 zcmc$n2YeL8`~TmW}2oMRJ6oYgXMOp#`DUpOCg5i=}l7q|Lad#o1ihL0P5fuxf zAVCGCh)NS8Dq>ee#a_XJ4Y6QD5&3_f+1;B>+pxLG|2Mv7cFinz&-c9umq zXDotMOp*9gUF0i~6Ob*)*Rfbz2OJ}CT*x98wV9Bb-g81~pf4&Lb#%I>U_`!`2ys}SZu>nEVfY_{dLLo9T&5PmgAOt zB9EOzveemq`TDVxaa|BO0zZZ#pZ*_e=YOC3#M+7f5C6@Y;50U>j#e8w{-U1Y3;x?Y zIP~XgPewbk(`E6az+>fYPYYZye1=rM@CE;fNBghZ?GrP0hXI4x}y{rd#< zi%Jt(7M9LAV*}9^#v+?C*5WnBX1uj-Z1C~qNZZ}G zgs?sqSe~yLn|V6%E!1$V#uBlHdOf+Wyh6WI;p5Fq6;eBt&W(Q$`6&K>7BZTc(4lsX z{%Gxr|FbBfM&Y!w<|VF&9zrcb{I#mHWM_f5QW*!tjVc`wM_r%@8FE%5V>etCp~y(> zuo@Xxl;E24P1$ZoAm9v8`%wQ0nmv9HHC1T#sLM#1ltBv6uGu;Cg+$6QVAnBrLALhy z4LANy|GbD%!U-Q71k z9Gu5@PI;3uaNcLE-BRs)y|cef#yR115jYC2wL5A!PCbb@L%jt)x3f4*o*ju%eJL|m z?;r5=(0H1+zED$7SHUyz1l3zF)_7ti@+3Qg&On$nn=iS3DP{cJ7?PsC&}ec__xl6q zq@8Yp<~lwcS&5lzCq^bsRzbKd%MzzCC^(Bu z&5Uz+@|3BrT6#hm2-bil=q$!) zp`?B9{dI^kOb}XG1WcQfRu2 z?8mwe#2IO(k6=+)t(T#OvotUo4o$N7op~^z&Ol8}ufB_e<^{?SaW6D%dGh2iy#yxopGZsu>ueyIDaEYbHw6dMQa{1eguAoW z%TdFb8p>pv9SAxLRHVwR*Y2ae79gL%m(NA6-g=GTVsb&FaT*(4$&>+qr^F`!hPF_- zPAi=SSmYk%K#y#6(O$h2&kFFJ)%+hQ7y9LQ); zF$*->F~gbbay!kcM?a|SSu`P!G9>>J-JHgBo@{Nmf2Yzcs6gYuCDNN(%?1^Hx7pj~ z;0ns%fOIi5kn=RVU456zGEcB5tSvHeiFB46L{PeCS7xW+VO>ob-?{*~dOJ0V%f}@o z3nkObD#+N5j1U>(Cs*pM=qAcf9%<0K zEq9hEmseSq^{{fiUNa!&gF%4!oH7`olUU3+l$7%HB5FqjGQI-HWYloY7&;^-L7(w9G(iw4#8#SlRNEWOsz&MA2E8F2-+DcA z^}T`Ij#`>?6gYzp2~ov;>AUZsjFB{!v4%Wc0HN7a8R^v8uSY|gBz|_Pfggxait@7? zMiuWWp^FVt*&dPN%FT7UYtV}HZtaf5rgJC*=WE7nsoJ-1x^S_gHOr6J2pk31dL6D( zES6CRH;dybtV!T%bh_}Xc0GFKddiHoU5mR$*&59Jgj+tsIq7DyfN4j6W7g0BVHhGc z3FGqQAV8WQEO47OTKX>j#P84UqzvO*!dOzsgMHI-M8dza=pvNyf(Va3(@HV)Mk8lzc&kQ)!8wY}!DqtQyK=sxv6kJC#?Lj&m zV0YNj(!{3oVGp2_y8ReyA4B3&y7GpOHXI1&I)Sq-pX#jC(KwEg_iMJvrO)jyVm@ig)ETrzf@MZ?Y4bz^e2>2*Acl5T}0{ITN?Gm zVIh8VhxpBT6|?5z$axGst-DK<%d0G-c#Sr>&GBXjf_{Wb!fZvmu3ZwOj1Wm2W6jAc zjwVL|tdQ8AM z@nq|Gc(s*!I@eINk^MEvGc0vfN_sdWIR_}^!ANF)IWk^TOsx2~4y|;e-AWn!SPp~Mg))}bbYB3y1OtJ(djU@T7 zy=XUjuH_hpkiOgQ-hCz1kR%<4uVAIDqh=f>A;OVev-_pAS%pbYsi6OP(U z;!=7bzkeYPgyRx8(ce&=wEzXjF^vD3)DF$*GZi~+(y);-I?t@@OoWX5!5}$5v*c_%)kga5np`+a`hvmmkY_oq=2W? z5i-YRE~Zl6{oS_qj?R?vt1rNUxkn)%PpO^%r6}qR_|@GNesv#es_z)9OZX>MT}1IJ zZGg;nyPTeIZ;Whx@y~&jf%7|KjaF-4{?tc*eTj3zDG)dcu5~7AIF6ymXcng+C%4FC zmng5CtuL(2qKx<=hKaZ}8qN4QITXPl8jql9mrV6mKMGD`IM$n{@df?PaQ*qcUp+OG zGUi#Ztrvs_l?^+ysgDqkSMc=sjPnFE9>YP!EYGZf+m#ijdbZhO-l7aw>_^6$og#55 zjp@^oX2gW!6F67@Lv>a-ZndBu;CQoVgvo>Zy`NJC&uRF|%Sm2J&;69w8wcW1lp%@$4{pws-8Zi!vnKfq}m<$xCV6M|UH{#CiOJ=YM3#nUzY;W9W~W zY;FaPa2MRcd2v(5Xg>|z=OvPr(jS4$Avln30)l1njZ|kXLcv+AMsBicmKo0Md|C_T z_L`l{kW~7#vvJ2Zl%bu6AnMOrUAKu3HpDqm1qGE-YlUyEP#FeaOj7x?16hRyzHpo} zp`wUSG5&;La^8B}s=^djfSIkq7|u1#!$=uT_s!n_2xWx)5M}M0t0;i6Ll1tMt`f}> zL<+H$x)yJAGVL|g6TZEMf@V;La&V&}j=UJ2&i4M9hE8g2MFOY$c&fC{MZs|lJxr4d z8aK2?295;MCv=^7%J|z9WHQA(HR*NF^Ee@(VgaPoS?A%%fubZD1%LJ|Q;Vm{dpe?} zHAGA6QmV+xShq_?tW`;7S0I_Mk;pX!vud*ZRv#(fW{cfK8RKYwv>%^ZpArjpUd!^305JyfTwTXcwOxNa#rJr~yW8hqgI~S7`aT$BH z@br5)Cm7wj5CzssvsLM)Ea1#8^t*!L`fA%6j=GdGY%@HtMm%CcP)EAX9H9c~mWEiL zr8?^(6dXwAP=knb&F+Wm12k}>zorcRKt>CK8cO={lWZDxNI%z$Zqt4v)ms0Dg5$`X zxdjRf)R|jlu?(zYTZnuT-%LLyIlnyig=3}3x)^^}?}_tRhQyU@zS)6U{246un@tD% zF}Ba9j5dUiXc%%=>NWbdDgLksE7>j)Kf3ZQ9p1%}|L8`O|A=;u#x`QiCpD zW`WVh0gLt`)7zrLwm}wy#FDd*F>Y~HY@X2oXDz6&w4jZcbhb)iw$eQ@&SW_CHOb`34b+%O@52i%MI1)Vg$78T3VM9> z7EXxhCeh|PzfYCc6(~57VHY<^WZs7_Ke-b9Cjx#|>@OrMrNMinKgEGqmI{_6nmRJ; zEhspPVeH5xi{DcS_p0U^(z{sOTU-}MnK63OdU7gBO=rQHEr{qbodzBTp;8d-+A2EJin2S>Y!q7eE2pu3TMNX}PzgvOnwo zR(7Dza@J@`w7yT{S*CuJ@hih$Z-#!Yqzf0lPPU3*ZWS;Jtd+b04r4SMF$?3Ind=Jo z0eO&IN*QYT2X5~@Dhx}j6A4vun%e|Tb83;ydKU`ms>yX^hkKWJ&)!MxDFbE)U~)-V zO20gL)s;AqYHk-WttoE8tYnGh!}z^5S!b+oXPEK&D8u*q7?Be`dXvDZ{~r4R2ZC88 zVA_65bym7D&S4Cr+9o?qZqOG9I)dTGw$RK5P=?`cij|)qkie8W|N7l{90=$R0dx@@ zP5@DZS1WiUSsx1^ofvONn7ea--BO@%HKK!rA0h|!ddVzB#w-eTfP{VNyXUirV zS@`iXsAV)|uoOc;?lBWgOV8$>DocrA8T>TWSvR7Pt{P=d9cD}0vv=|%lwqQeVfZ{k z;!-*|xX(v8kZLvvoMci8vu;AcaSS)sFsYhCPnOFc%+GOzd$$cUVYms^Kv_0_`P6+2gfiszh z68N$bjw91T7lr$f+n)Z7y_BJu1Zd_N1%xqw-`kF}h>Lq6C+krDNA+z=P)OIz%tEKr zV|Fe|;^`gB6mL?Y$5CML z;NG>k;YWi9MTV)(Tac?vwq~eOZ}`>0snl2?79%^uiv@07@K_{eNQUs4#inummT*G> z&TnOwleY4|ysbHE_%CnhSZ*xAWkxBAS89eb%kOpMWIMv%v}yMtrt2AIjW783MY|H{dWUsbo_0 z37ip66QQBV-BfF9iK6~NFdIv7nNcc-6Aa(EoP5FdgOe{nJmW3K65y37Df^YKn{h@g%>+yHu~cir zY*fB#^1QzMuvN43NbGZz(aJ`_PczwG(Kt;DK{JpGV2ekMbQ(XlQ1I5k3g{jG$N#vX zH)W6MKW7^ z6r9H}l(De{ml>t9{YK@inZd133CP2?O`~jR3P#Xa>GKT7H2`D&_;iP$E2`)2A zWr2cDx5pW7m{#Z~@(L^#=Y4}jSn%MEWE==5Uf`tDV8d)M>I#mbce$|yml>sUIQf2W zVP3wkP##hQaH5rOfgEpL-LwM^gw$3bO}>~!RNvo#GnrkeFvmxJPM9rj`{4fFC_}hi z$e$wfw4?MvmV(zz6!tm0P)K!wR~|P|K*LAC|e#W(LSt-V_Ew}v*R#(`sN?IL{o+ngMqTn8SQ)f zZcZV?OE6ao7zNfwm>kA%!f6s_xYOhGJA&StOwjbM+1?kH-a;9T4C;yCwuz{2%KVkW zdqgx)5Vhp4n+@GaAu@E$OcI6fn&FO25oJVSasMyl4&tCR`}7@4aUhmKf~9o{)!9-| zNN;KZYy}l&Q`>V}>JZBC$tEKr8!`c@S3P zQAV%Xj+IV3At+D3Ea}t@@xD^z{Q_rhAF6D#9)(=2K!Nm8<5>|^qC^c5D~*k zOlXvR^17RbszgruHb_gFF4EmE@4)dD|l)tn3#53Rc zDMLm?O`>Rs=E?KVLyK@iNW%q^f^54AHPyFwlSqgh7kOL`Png5SWBCW3q73`$!75Kx@lahKoF^;19L^Ddzw>#XZ#I_Bux1p?%Sk98PlL+FS*WJZFyI z5$;x3+X`FWMj0}$M1BLArzv-AqWcm=G)53jr-?nYjYCm8M6+DZaETB|9zz*J&_i(Y zX_mrM`)<2;;e?3B3Zfaf21My7IFX?bX|n&!aJj?XnR|Q33ujP9gF6Hhw}gbH)VN`D za@7bXO~4diM0K_d6dcCThcpR8OZ+5kMFyB`%5cY?!I(;;B~Lfp-02pa5YW{EXzmWG zw2eo>feho6CV@sfJZb1dVOndnw5utDrvYQF5Ry^SmusK80B6KAPVn6RAJy6>ppf3$ z3b2Yfe3%h{fqNf?uF|jt2}@~YZXul$OuB&CdMnl0CZgalGM&=VSQJ5eVc5;fsir;(q8%-vrR(5kqmcFH`(5>s;C`HMrsTU)wg z-0UYQ1FJdmJ`$T!?9Spu90+T?zmjEAdsGUp6YA}<0wcnJq4cwbI>qp(2d4XhEIw%#}|;2z^v=ee-_|C zG}j247yD41Z7K?`Aj24-$#&;22$u!Zh1V&=BkcgQ;2~Kl-L|jfFb>2rS+KnK0oB>A zL%~@LpVTnPlAaGIZX#mN-mtxdlaF`Zj?5T6!F5Grl9^KM##d=fBBpBv(^nMHWVTEc zoJr=qA>ehpf({q`6XqHrO6Pnr7AERIq4#D)`(`BpiyXT zHYmg!#-o z%0R$)AA#{iNyQ`5$&%wZjsT0^NcFaS6dWwRR=|pqW?^67Y;5S4geanf zu)z%=ya6J=gyHicBA^u8=$-mF5TR2L)_sxcY%Ua>u#H5*ELuKalvGgY4kl$g-0nb< zFDW?N7p}7dxc^Z`+eG_}Ahq$-to|dUE&|LIfQ<=_*~r*%z-AHwmC$?=&FQ4I&KrSt zBf4A+W)Go(HSWQ`cc^H20?l@Yqai?~pvB2Y%k#T(a>9Rs&f{agewi}3dZ8tv_bF*{ z|D$)}j8v8{xLVy$wKg{j>Ag->S%G&JsFJ+?q-?Cnp|>fAZ!niYb4wsHJn%Y2L_q14 zx&0|FM1(Fu*r6@e*$Pl_!j|$irxK$3d9nXf_;kxaw+#Aw4QoI{k*>d461hl3H(k(m zA)PXtN26;|3v^^tTzF%2QXuR%AOh@W%FqQmS@feMJf-6ozy1IY1UEy#_3lJqrn_r?X-R#Jw*b_{tiEK0iOlb;iDMtp9;cj*zTwUHxJTYN=H zMXsDYXE2HGVI;}W-wNjfStxj$lsPe=czP1tW$r5nlDxS|q)=ClwhPd&*~XIk zAZ2K75N?jbpeSiwqZ3VWMuY)DIG3j7%tpqcP4+rYC~G>m8d_ToOVSa7CXmdO z5^w$MC=SFF6iiDyP@Sz91!t1k={(+GQc=Dmm^9m4m{j1(%MT_6^Ie`9NfZSMGs3V2 zh--j24sw&l;OV!olUm?}5DNw3@*z}dn~mcCA7ZcY5$^@!y^wh+TIaKbK&e$%7me10 zI7=X|*h6);IVhwf`W$$O+MndW#MS4<3tRn3K`%U&@E@lH-hGsz#W9e3Ga*p=>fN4B z90;*UAl^Y6Am*h|++`#+rL(uiX6RFaM*uFv~(@^@n7~^<&L4p-2 z0aFRQ$PSo+XOYa5@`tsdRz^&71k*Z&3E>rmNoG_CTi%qYWl z41>I(SoxE`J=GF_B(!+~Z5y{OwuPwSXofL;leQ!LXG)-=2Ps3iM=+ad1Sxr%_WY~8 za6&Be18@k*&v+Mp`%92)vDu7vodRC=#F2GtIU>g#+O& z5O}-yQk`uP3i+*2!Go9Vl!mqmXq(UqZ-W(qyQQSH!~dmV0ij(l(Dw7GqwRmF;b<~P zFl;%O1I@{@i;sW`ZPAhiQA1OjQD^?WK&4tJsGjXi%(lfEl}xukP?(kNb_4=RcoS}b z8%QNeBEc|j1|h5hUlaK+5m37M+*=>wKzh4D5I*+;)!A-D!SyEdR!*?Uo5YP{QXU=| z@<{;O3b3tE9cH7EBS~;d7fnC<0S*MVNPrzaKy|hyC^(qRprkqrRYJ+I`UT#wS9AdE zQObbJhs3)`cuM0}UP7P*_dfx5q#o7TZbHG~WZKE{a8g{XoxSeLpbUBA(J@vz{_^@(lXOMcTIqZQW?VB_Q24 zuL`gYSIY+?)u;Tuy++;KMj{VoQAY}&53!G z5ee*w?G4F=;px41(~^L94f161?50xJY9)@mTNo`5j2Ks^uf=F4k*g8=oG8!+;D#;%R^vVww z(88Z8I!2mmUZYqe}3gBkvoAwy3y7xxC7HF0vB!0DE6VUW(9yX?;$Pmo zWb+#;%#Q*_fo((Pm%|u6(G+14#-nH^++Ln};gmhdFj^3@?$_Ec`RjKp4y!yT1y7&B zRNrO|3hB!6<2j5Pz~~+DJ#$Z;qYUZNV6rq8*1h|pUsaf&1k9CWe_5M*G#DcX+^llK z51Z*&UPEI$p}}Mh|9id4^0QzWqOg!l&lO{|9^NdA-|54GsT!z8?~v@7KBqrrsAW4G zk}ev~PTT33D$XwgXM~mN+uU6nICvK$_RS3!C-3ANdyw(?1%7YGa4Yew!?aefsz z<1gblcWF2>ZCY`GgPg@GhLP(qj5siQM6=k-Xg+E9&Kh2eE@YCO_KR2%HZM}$(AD_G$0nHuUQrHxJ)e%079+Gp(fywy?4_@QHAO=&FV zY1~i$3$ob$S;)FY)Jk3aBRE#yX-&>Z9a-3-r+cxlz|6d8(vYffusb?`uaYA2swJr- zR2<#XX%**T4aexIj|h`ESzdQe_u?#BG>bsPEhfplZu}9KN~2pQO>dFH3!yim;L0&{ z|4hH}q+159)W$zpyF}(} zf+n$c6ef=Chy6vMQ%PU9@7+Wt(k**d>f#^3k?Y9lR=HW5kR8&Iub_KRNp=p-N#qcTj#YJU~L%35Xb5y0)HeaI|(RJ%2l}5LES*eXb zudub*9+c~HJEa;q_Kn`_*^xbGyb7dSudD*C!%_Oc8Uixe-m3O{7GPlQplRq_{d>o# zK)Th+Dv%O`!T-p#2jnKWvQ68As(I$=9feW%7tL3BbPJUg-uO@iMyBU8y%0CLb7xBg zA_cYA6x8sy{y8d;Zdq~!MV487C<qVxOQ?<`?DMp{^nsSEZkJXf;TXn3|#@~Y@HwW@*Oxl8~X%aB@{HoEo zMjYF(>PENTSfPy%#bIRj9qhfrH(rr9sY3))7`GOOe*8-X(ycC5)f0-u$TV(#S~G3F z^Hi;%D>3@?(G+y!!r$tuJi4XCDo-dBBa;UYreRY+vy<-Osl#%8{#iwu+`_@`))jBY z3=KX(-=>dL9^JZOmFG?zdG|34Et#}!h}m?{bLC3%tjSP!(;$;p;1$|RKt#7(ScReI z5IBtCeKC_TxP|2O)7m(*=8g6^)CZaOHcj3~8H@cEV%5Qy8qybY{(b^TQ;{=8=ubtu zT|+W72wO|E53Ay+gtWC)9;su}GX{?u)je2jdP9TCfh>>UhsTUTNr(2IdQ=6PCV&*+ zc-&c5bY$3pOaduUbKZ0 zuv_Yn&e-Q4Z~g~(vypY{vz6-jmFM-dZz~CXTIDBY+tCm_dgS%i5)3Cs54P()2+hpmOz#9H>2R%F|=AHwKJ5$ zHd6I70e4|~k-(IGeC*|~R3P2D>r448JAOGX;6R2}%QO%k*7JtDiHA->-Ld}_{q#J& z9Di3^l}ESOdckEz!f5$?>6Nv#hHiP7)G+=Yf-&7vms%pm~s*Aq~g>;@YuTLsZObHs? z4w9GBH!E6EAeZ!`TTJcZZbAGKTp*n%eZ(lNe-HP0C!wEMj6cnO;4moe+kb4C%A;F9 zJ)2q@i@y;?E%Ai=h@{|&PC!uUagvwP$G4SsQh9U>rf>CAUHoDcoX2n;VA8;4`1uk( zGxLD*8-oj&I_(&XLsrtn#YZfx!HGAJ-x0>(-VRjT;TQ_(%1L(lskMc9|6lOL;J%Kv zDalJ|M9W(TsXXrro^6Aut^;lh*9wme{n(#Bx)&Mon(tr?5=mZ4O;!(&VGUPbgxpW? z?B~X>!_T;Y>qn-0kmm3>b0*ekDUjY9Ep5|qP3dJ_Azmj0p;jO+t)w#>7SN41nx#3! zq(-TW{~wMV$Z+Cma#Dj?w0Nwiig}H?B;OLl>Ybqoli@OrwpeunF}a{II5l1aVOddv zYtA=e8LZ!z9ac|&J0)>1GNv`jc;iHp_RZbuHJ#7uolQX=R{n=?dk9x?9;5B?BAzVK zKCFsk*=dc!l8N^kN~F`ALa#d6i|^mX+el%?*1KqkZWICQt?rg5TD2 z+IPQ^KlZSS(@@|jxQU^TVmQ8=#qku((>^zql!=(HpQSN)EWH@E~1vkMM-3{WY_w@lA&^jU8#qX`ub!vhm?-qu? z_pc?&)L*xn|IdmMXQkbK{Sd&W%5g zuf?Fif{Y~?+FRQOTxC&2tcTOe>}?7Dt|ZINO9yM`)gM!egHBHX`|t*;k(Amvq^(BM z2XIw2j{ug0gtBa3YRDbBke{UD^+?!X#Ed~L`vG`O^9$2gQf92j6vnP!uGL%b-S;=n z*Wl61b)t1BwYCRwthRMn9^;_~?E@=0mK`02ju<>6MhzXHZ?7-HY!1poniMb+(6bz4?C9_G~_AefgT!=?nSRkUE*svRzH~3 z5XfilIS@r8Q3{~wad;t63$5n*eRX0~4e4I=s?;XFiev2ox!jeS;JNW%l+Nu+%bjU) zY4s-fFoFO5dbazyN2=9V zSuD;pHtemV1W*)y{rV>~pxZMnlR1#(R4&2io6s|r%7f?cNZ7Tz=2e?Loh9-ha;G6 z4+_pCQ&mF?{Zdt>w!laqutF1rsYh<0`3hm}6j&>0)h)9peF^;I|)>0qnL>F<~Ph&E4_;E*PBmbQ@Ub*9Jx(|wO3%BfI$J)eiYKNhG)sO zfok)Myay4T=SgfzqwULn#DTE(39MhyM1l1*3XUanxEh|rJC#(=qQL~lI(HzMDJ|Q( zeJ_*nR<)bSKr@4xr#*hHnuw zX#xo>&Ea+igHAbInt#z5{>2LJ*vzEft!mXl8lu3qHHGuv}0q_@M=Y;SF}!}j+x zHggb(P3g?b&hKy_bv+Zp;x)iJh!c)w7>zWkF3uFbZ>t$VH^yI8UdHBbX+R1inr8)# zLTe*4$!Uz1TAA%toMvdgSLST-Fzz>aHKz6B(#XdpqyqwJ!62%)5iCbC+K8e?NXd9> zmNX?rWZ@1dnw^q*Ja;Qu10vD|U~Z>K60^}gQch&FeyK)8DIP4#%9bzzR$E?!Sa|2% zNoYz9N8S1Z4g_^jsA)BMgUm+8v3ArX)!Z;;HC5_&J)gaa|XAedgDIX<(!f}+-#uvbm^-AN0*z;kGl zLNZgj-MasF9Ej;f!SwPkRA&ptkfj?4ns|gyq*-x{LG^P;VoHS*pIwXt5xpdcKIuz! zwosT~x`9xA2x(C4G-ALRBs8Ux)l=x4pk5YG-%x~|*54ZuQrG9H`I5g#dLnvF5S=NaN*jC)g~;gfv>J`K z8R0(7C3qsx>7#kOBAM?>o7e*f;(0y9V`(yo>TE>HH6%00!Uv}C9}obLYQgKnzIBWv zfhqOqcnx_71awFMwMwEo+gm7Vp(Al5S+R3%!t?-EgHZ&Tr-^s|dn-J33PU?5f6 z$Z&8fnQ`XSf}m6^b#RKoVw5-@Lm|kY9)pqxfC6YJK!W{?4~Y=lyS1R1zE3KsLu8t3h5ne zw5wJcV#GEm>~9jA(u0p~O2B~>c0^!Z9!qt$_fbf1h@)jUM9m&zaE;}|EXh7+m4n;| z;?g~LIE3H8vQb=6zPbXna*MPHY~dA)2#L~V(^?L|fv|LsAC4@hIvZI{jwN&YG1krF zd@?7A%@M)uP7+gUy8PK?I1tf$q5&@Xhw5y!jD!=(ocPvC^b+nx%*`Y-rDLN;9>;;0 z-WNTI8*;8-&64;|j+lxRlHinze(1Fq2Lk&N1S#Y+s__SVqs;nswgO(&gOw&|JVpZ~@8f<0)r*>c2Q4 zEgcm&14(nt_7w{0T1wB8yXr;5S_-Ua5}Q)Dxy?uygmp|{ji^g?wy#mh$13zl?Ni## z0{BBweMxLeH)YOVg#%%IA+XXKQJsyvDUK!c)@TL{yS!z8QJD8OypE)$w8$0k;y^TC z3Yv_eRA>7Jg>)rl}1rZjMAmNra%6~a=gnC)Afa4ebOm<&9LFO^H} zQ*{^O;j&*<(OKcOL6V--^|jzqxNYBQTr#6)6ANkuD=G>bA;4)@(%*k3lR+S?;{wZD zpK5L2qmbSTCuP;j@Ef%UUIiRnB^_x08+A0o`bJ~pohRZzSl2VL;2%kJN?T7XfqQY& zEM(o*w#$!DT`LNqaWt7X5i&FJ#@1kFrnLKu(TGDgfETEwm?KaBsRHR%;NScV)wWuJ zLOKu`!VE`Vx%Y;$1l?1c`#SB2$0SoIZH3S|I+vLbCmYKdBF`(RWm~gMs)*)ypZaWh@hZ;Io|kUYKI#lWjlaSbgK!xm3Bl%ChY5t-g!dER4SK>^Ru@KFat;bXyDg zpFABMe`r2V2<8U?qfWwqK@Ep7Y&<4mB<$r8GE;PaDVA>7@^oy?Lx*ufEGGm@)HPIT zBX>@^VghJlH5f$niosR@?^4DlkEby_>?UC;&73y&Ees;Nk#!5m8@8vqRuoL;FovU| zNyQLMjyKz21Mb=A+H}wBe&jXC{DujRl_uLM{Q0~$;5ON{v++LQpsAPjRXx_lx)H~w zuqRKcy)LH#;C?islcEtRbvB9&^WWWYiN-E-y&F$x_wu>I-9cElM8kt68q*bt8JmC4 zgxg;Fuv}6{M;l z{!lHC1d`C_Hg_f~MnJy`pk6Oho$W6a(t%v`^l2~O>>8Nj$~6=@2+tdYO!3*(O}ayD z0y-stu2g2qFxv84oDa{PN?E3=^`LDSC;x+_JSBhq&?1}=&u@Y!s?f5Biq4&3~%t51#&xP*Ju>d`_IDfiNZ{+-XRi~($n*Y zXv6B?0%wa72Rw%hIF8}O#w3o^iA@It|6b)FC<@;i1#8Du^N(QJMNw%MM+IjwTn1y3 zC7ADb2J-RRNrK zK8fAi*mC^+39YW)@t!whs+NnKS3U^SY8kHLIMLg+>nk2Dk1Zr@gH$#sFl2n{sAOG8 zfFJW0W2-#?a z!84oz)9(+fynlC_g{8}PYNFrq=*N$MZxr%q(Z7}2#20YnKfKX+AMx>0?Zc`#mhBLT zT?7FmZFuDSNlewg`m&!c|48K-Q-Oy@nkssQ_V00lNuG)@)pqepf*k5C%{p0FO&OYV zc53wgcHa1`%acVHSKbSicu<3>ct5=)L}Rv#2b{q|A5>Fmm%x^{*!Gr&Gx~yikPXd8 zTr{qzW}EQ@T%sh)_JxDA^XiYTg1kyaMBod-uX*@@4ag>@g$a zC|6i}mOb(9+D?=q-^Xxh4{Jg+X#CEjIN!i5KSh*p;BhpbM9`In4%3s>VU+E#_^re3 ztV7Q|y$>039l&CxeGrf*&&$o8#R;)Q3KoSmj;ttWF?24>vt$)e1J?~=u?f0XQrU=H zzPs-F!f}Q&JRmpKK77L;)_5q7Gq!IDd5j+dYtg*NT zC~AeLxVSico|a&03G0TLZNmj5FQxfu7h(Frd13|6ja+|mH1Fj+k}X0Yk9K+w$07iw z6=mQog75btp-}qbs@?D5K2N73+z~M94e)WL*N$1H{2W(q# zI|ZSv3&_}FRfJ{Zl*?~0ukYR0;uTe>EgxL05UL$M*EKC;Kz-nA^RKwbL?Ju{eSh~%C$0P2w z>b5qH+QQ0{h}9ifuQB%M=ge}w*0(ksnT43EV(4}IMgj+^&14j{VKRJ%TWlYo??yV$ zuGI=y&tUv&$5`?R{4?GNkF1UAqGIXx7o$&29?>Qphg!k%Nz_&kU>(9@p3aQ*dsxFd z`uGn)6-&1_P0IIpZP{&YM%5A)`Ki(jVOL-wuzJr!EVB186>H;^eeLV2SQWN3Xp^F0 zNjC67tco?@!ng8Np%udFrj8z-r+-VuWBx<&lyQd%t*_Z0?ceT-Pj}(G1b#Rria<5UX}r@9{B{2-SLESfx(9pgZxIj;0Q)kK%8 zl~w;86u%5-vat2vZ^l!`kLbqK6jn@0?RppXz}bWN&0C1!N2!ZzizENd4Wl9Z77kLb zuc|Ejo9DTSh3+4jod1-6o5t3rJF_S=mINVtb=AH;f9qxEa85`qDxB=8haX6%21u<`tSMQX-&Ipe>?IWe`Vz;r<^G5Pbdl!j;SWjp1=rD$|> zD5IhL4l9PRsgk~*d~Iu-5mT=UOqZfYx}L~9NQ;-wLcA2W(qa&uZ;!x_k|s3zWFgLo zskdNKnBy)(4QDbOXiT;}VhTS(e;!7>kKjpcO0;qPH6EG9p@t^Be52dlKWiLic&{+b zaW|5{lrDJs^@TW)g8B-e&Non9+~p{^f(%!nnN$#7&=?w&st96zTROLGH+=VIk0((UFDv#icQe{u9f+c6y|1j;M7(zr*w{yyZW( z^vZedOXvLl24jO3FiZ3>t$x*KI~L%aXx^(pLs3XhV`#9<(m4DzSih*rs~t=8x_(5N zvD9(Q(jGT@lyueh(d5|^&)Nz+jZnjR34o8mG|(rmeRT1U^Fdb zxNI!Ju!q}Axtv^5x+fKjB`8%V%d_Xx!~a~Ue1hARm6S8vCD`>oh)`Pxt#5UetwS#?_lxcA}Mj+Wr)-s`lrPjI9o*Z0E=voKlm?W93XQ zfhh|P@+M3m5hYZZw*36;V=B`m!8CpiW7CrD`)h}3ggmBKz?6p=(!Gqi9?+OR>UVgD z%5;rjavW#u^_%QZYfMHn8S{Gb83jD?l{{5w>6I($O+Xdm>Hi^&<) zCG@eldXojz8=aY@?>PH2xQaJEqld3eLk;Ecr%Rb-bVES_JI^rMWj$U88Ya?1cQH#W z<~2$ibdRvD`~Erae>l_E4Folx51j z#D1W5n1;(^dK*l$u?-m}(|s_kDtZcjVC$qZO%+Ue;9k4Y{#@-a8O1vBjXa%aw|W;$ z3lJQ52BEc(o_^T(n5L)e1e5Z)_JcU`ZY9-L3=O*FDe8SdErJ0Y!q{Xo*L-(f)HmMEJX(m>cOk-?5#pg6Hrs8GPeGD`wJRW z#rs&OQIlyafxVw3QhfrdIBpG!;id1vSOC zW32f%_-9;Im$dl)B9$t;ELHPw>@RCnQirKw63yQiV7ePjb}(HHX-QKXTfg=B7L_SS zFtxl18vW1?;V~tJkJE?^L;*f~&`T z#s;jgzly7Px02cdM>yTme87a3H-ah=J|HF_L!Bzs#x2)exmKmZLmpbFVPF!r^IBzp zO`|f}UDC9+^1VSkgCo%c{03m_5Lx^V-UYmNr5RrQ#XrkbFx`_Yi!n;y`L_La4Xol~ z8PurBG+62o#l4j`6n_sgOz)Z_$aU>k5Q{g&<3n<$sbu*=Wp^XCdg>bcAzUTjzNcn; z$GfsjEQ{e8f za4&*Lp=vba$T5{_x}ZWWlKn6W`BbBwo7@Bai8KFhN6&CSzSa zO>jw58#}-G?foiKK?NqPu2b5d)Uo*L9B*!JKpxj$;5vYX&ih$JA|e=yuGT-X0wWps z20azH&{h>Lxw?{QEB*!(rWf%$7@HQYG2QX_qTwo&w=C1NX!|=FlhkSBIHyEKodFb# zU+g^?uTDc;ZYm~y*W^hR$|s;4F#pB(+uzloDz2$Rjhal4!s*$5!?p&R&;BGXAa;Wa#e6_63W1@LlKm4D z@(m)rElra5p3rg~pf1IV2AH{|(A+rf*ekfPz@duELM1uvz*nGTdQaI7w>!rzEtZ?m z@&LFdV`)JwTB08kPXo{9A&Xu;pmNO?To>0vV1AzcGmWd_Gcu@Ali5LeC_NyPh8w@w zs6vv?F6%oUY*#Qg;!DPM{szH#4;!*3>jsr=j$l*7wttSJ^d6Su2s*K%NSdKfX!!uZ zhA?)~JjSL5Ao3IdZFqh0T38<580VG+n;Nhm)xc!Bhj}@M&n76p>3POK6Izx6Y68}V z%);Xo|EW+L`#!e{H@P{~JOPynySXdQeoTXs*~9X413q`5M1SKEaKVMDw-&SH@haDb z_NkY`tKeMo1=nu4!f!ROf1z>7bbDRddG11qZSWo}cgG-n{`1( zHV&p8-uc^z7%ENhgKgLUrIIZYWT-{5e}jULTQbf294u|psjG^GSTR_L)f|G2h6tNk zbqlffa6!4K)E}iT#Pa6lxjcF2y$B03mtW($@63>CrE}vl80!Kr{J!Ckkf%>a-@2S5 z#$geY=9Q~;cGzs?w>Mg}8}ZWy_4=v~7G7~gt(LV@|Cu3gm3I4c5xU40IIc7`;;H$) z-#(%OZL0vZ7ng7i8SM&S76_}vb6w$XLb31kWyeeB{1JzzgXb`o-CCt#&L8%{H$@YS ztM{nDQE=@PmF74y^^@=LT%Ow=>t}QFijH!g$reI`IZ*IYYT{)ful2Tu?45 zrb|+dm(T48CKXiN@c>`LQw8S*LRV-^{cZ@B7Vd#N(qJ27o%?J5HYz&y0B4M=_nhb* zO07K+M^0qe*}pQ^m>f=@BRkx8ua^=IGH`G+sl!bgPCK8guZnX};3&9uTv>hJh%k+# zEk+J!aN#^$Jq;1s@BM?ubKg@}=c+u<3!ahBQN6uWE%Cr#3EOss^b>`SQTL3-bF|Y! ztIG3&;8{S946~C*&6}H1z|pjRd_K1`fUzIJ)bRFc5p6EAow8m)p=vnn64+>%iMV<% z3Z|u-IMan1lac>lBPKkjP*i{|v87R2;8sRtD@=Hg{N9hWp7fHSx^*R|>a0;2S>+m1 z6?#0THzcjp+Rga`Vn$zqRX77Qs3tRe$Ed1$SwP+XD~IY*D^UKtS+@6R>$l#O))#Kj{>r|*$1l0QO9IC4ZW%Q7hSxpTt%yD@$F(S!md)(?pehDi9 zuRux9PF!_CZUKdEm)=-@t ztH5eOQHA7Nb1-fts_@N_Ofh>PA&C57qc?)hmI%=g);yVvQ1i zWFbt~pb%ZZ5FZA2hlSkcKb$Y1>3}e4TA1nvMSRh8k3>BSraC{nmz1>rxG>z1=~x}B!;Jkk9@3+q`KG0D#Z3n zaS884hEpArM2c4+TTLAxYAXc^uK}|Bm7=QYJ23?Hdz9+!m!aTLGS#F(g}eJMIXkMu zQ^r4t7_|Hul}PuB$$l?!A_{16BANcd&|%@5x=K-=KRjMDb-EW!_WO{dTwW_E!)poU z;j@e2=yP+Rd%t8q9>KC>@?8sB33tO?(ZC`O!P`GazdEJOi?*QqaFic)UFKh^vr`O# zH!zt4&`@uI&+CzDtRvu0$Gk}*Q+mbG0I^YyqNBRA(QIf@4V?TD^YfaIE3ZcV)}dRavKd%&gn)RiSk6a@_SZhZ>?m$#lBu32j-v zPs9<}JpQwjydO3m1!Zvqp?i(vZeDL6sDf>GIC2=>OB>$|Ql)()3T~`rM&JlW;^0|k7B}#^Kj2Dp8r^Ff&wkEnuF_~^ z&f>6VfqBK~-{vL^0BZ*Uo0F)Nden>lTSd{mt??{k3sB4`6kIVf4S>2;fh?R@ggp`` zlDL$f-?|BLLav#A#q{UD7^<_A8Q?fFT>%A0UQ4s=$Gy?EBrm0hkNB=pdCrD-EEi0r zIy-t;E%Y1AedN)UHEFS))9CSBJO2rqPIEZTSdB)eNs}6JV+jzkB?(LEgPZHGRbkHQ zU{+F{Jq-nKYBHy9q1_c^^&NgQZZio?Y25MGhA2Sw(FC?tS2a?(EP~5U?Ty*TX7E6OEh=U#`St+fr`{~;%i+Gox z#hyiV_H-0nM>5CJRB}J1(Ui3ZDM@eMr_zYG`B}2)J}I+jXf!hI0pIaLmTD~UH6#8d zVJWRVmy51M#;v}1m!Bnz=4;G89))z(5R5$4L|lP6br+JBQo+cyB9%tG#?Rs$M0Iv> zD>O0(QoIgJsg8ea0#c98SNeI%yBuAoq=o#E5Y=^kESXS zvu$|j1r6Ul%)vnXJLc zG}iL*PoyC!d2rm^+E$F>)(mfT&vMYRSj)=BTF@9m$zJT$D6OKF!gmXmvI=3 zxk@{eIfuhuH_}kb%;7Q{p2kd#>!pDXg(jlRPE!SL1!T_Q)Gcmg;aFaQ!+DCtr8Mh_ z`{6!woQ66a2i4iHL&0%mE;zV4c`SD9$@V*)^8B{4t!G<#7cvQ;3;!X=zY=9Gsv zQj*1D!Q?ZdgNnkAbjG@OKH=(BloB@O?5OkQJtNvg7mgV8$n59p?21aWaa6C ziO;Dl&2%jHQk^{)h4i*2_J5K^)Ckh{sl#bdoSJs)Y?Y|Fj%X*<+w)LxBB^bS?#Ij1 zPix4?oqv+}s}A2CQfYK=i0fBMb@qG|oJQs_imjexDaP_S7EAEQbV%H{UVd?nilTcn zTtDCe#f5^S$P6E9vr%b4u~%ZpkM<-mrHo$+m#9Fxx5D**n(FLyBZvdZoQqBzoSu;) z_wHy})Amb~y3s0?!Fk}!w{@x(P^0x=jGZO1tbisJ`|E&>ldv3N*4wiDb-_4Wc3)$^Eq zN;W&Upa!oY@(29cFRxO0-Vi*>HFghWODlbUTni4MM>#%j^e2pC~5lbii#MUy<~8V z3iMV5pqUzwOeHB>7D#)dZ)ESqct>9k#^&tOm?qv;9IrCHEtnK$J9*jCyV5Yfqrf@Q z>zA@605^8zk+uFzBielT=TE3aM+DLF6soreG$KR4$7Hi}NqH`oKTZ-^f)z)&nV_U) zC#JVkQQirmSXc+DwFgmf1)`z-u5N;S6C zOMHAoWgk-RZ+|XS{*Xxzu?Ah9^gdV7$SFIg` zGp2tLq@5ZSZ!U%g_e6C>io%bmUn%bi(INmr#K`Ngy(>AuJbmN)8=fNvYA=8kU^{Le zC_sicqD%s*I?Ciqf_GU>qZ)o*jS7=Wtx-{Avzl&Ts!782n8s0c4~Lkx2PZfuUeD})c9+}`a+&?$}=C`tparrKnk#Z zt_EbZC0v9_Af1LX1Jw1U%~>v;#4KHD$u>`G&aPdhk|hc4I~8ibMdITFU z14&8S8?30O;`J1Gw@;&5`*IXqUxw3ClXxi(zuSerf?>8m9#!NbY{J%?q^9&&c7aEw z>LsXt8c22an^ABo!$)_`Qh5psoPJq*u&Ju5b1Ci;gof7dr~U86(JFHx~B5m*Yg z9kUSy%kU`}lUQkfFYPmtneBE2WcI8&n7ekpP{m?x7IjKixh@r4UFkj?v(xP$>FTN_ z&ovep9e&lYu6m zaPiTi>X7^I=*Xx>LrQYk@whgf_Wjp-lBay53UhjmcwG>OyCbD7s zualz?oQm||$%-wImZ$7iQ*k>NjB)j^5I?_CXTJ+a-dzm+*Khyt{8tWCrz<+jLPcb3 z=K1m}IOiN_fB;f}?bKa3kfDQT5@@t{j?3+K$chlpDpk~kTSRrO8r7=z24AI8T`8!N zK#uOeTB9;tbYzk$jl#oeZih$0`f3%4b~CB}tcKLK8bO*E`$uf3^M#Tq2A1}mQ3n%cmUKmPCr7_l7zAw)}*l(}Tm5*2H( zz?#D6!FIT|O1Cn4WoU#+ZH2HXgd$gCk$=Jj0#8X_E?<32MH?c}9CQPm+3!QaEr#La zJ|@vc9rpf&If=uOGYvC3S9kA#RV)KZ5*;Kzpzg)m}&qk)s(#$xZ61B3fpz?95C@Ad~Ja zRq8eji2EA1V2(otWUs4t8`eQ?)orMYQ<=A5(t|na64xsYL&nul z5z0{N?DymN|A;#e_@;~h|9{d#S!G4`&ZjKdd+!YbA|N0jB~8;d(l#Y&fHGtc5fQgC zw8~Oc!~rD%0TB^V5y8PyQHBG>g^J4fzutHE$ptFmn|?08|2-ae3BAz1pLyTC?|ttZ zAEu13e#6=Se|`hofMGk0=N%_=k#YI=mfznNKz;H7J!1fc4Wvd0)SaGoffEbZ2NMjW zns)IRS+UxhR%eYt)?s4iU_sV5A6c$J7Pj9+NQNW9uFPz=H!Tsdy-cSg+cn9Ros-xT z6F+5Uuegp!;{=_FQn}5Z6O8>NBmWNSQafYKv1-uf8{dt5jfs#kcvvgZxWP`b5@X<( z$K7fO_@TAQ^8&EH1RU(3`no{>AB>+0Kx(ooPIHN=prr)_FKjUWv%UN;f^mRk98RG= zt?p`rF|0=zA!E=ZWQI~%+bmrTw~Vwju*$#najd|)O=69pScF!WdMRt0DzSpDlUgj= z)luXQ18dc)DPIY!ffDQaJq&BDffaT~ZG_qyPET1^+{@zNIFt)I@7AyGDlV7?Nv2KZ z857ohxT?ZVvm#}JE2tQW=EJp1lE{?We){ek0%@>B+EbtE>aIt@T3^_}QKU!|I2w$N z!q{6RHcj2YRXQVFrGXIe=B^U#pW!MYf~3?{8jiIYSEfB(&G1X-IxXiQB1>CiR=|Q; z1|q^TL@I#S)qMf4OaWm%rPKePJ*A?x(V~*L$au2JH?>J&1ayZ4;=pw`7(ij|S%g4_ zdV=lAq@KjVltq^`OD?r4mYyu}*c4#VL7Pv48@5GV-52qO=_%~qfCx8iXV@L$)Pw1x zP~zxNkvN=tXexx(iraRV5k#NnBYMdo3VS9pa-tLkE}n4^svPbZ33@=;jq1NCXg-rP zoVM=E22EJo9662KtLy;B)IVUC;~D`e(NNIzrl0&KkUp14bw*KrUGh~~lM6e9MvmkW zr@qa5JE9xW1;ypt7))grdJvFc-ROv9YMsZJUWo?NAgoYy@6C>;C}S%29b$UH*}|G$ zj-`U>sAL+zHn`T^WH5z|DMzTMA+9Nd>{%mmH+Ghq2kfyEDy0TvrEH9$slPK;K`TsC z$0U`LP4Vl#YEXq8m?EUgO2~~EYbca= zr%4EVVVA3&Kbuy~s8kdY@XBWx5Q<)%c0zupq!W_qwdbh5?&~NRlS->s;M2w=QfLZz z@^<1O&#-z`5fDm5+v6!dd&nxp@a{y;lt{d;UJ1N1q_FYUNZXw&Bhm*U30Z?LfzIW6 zQ-*Yy1;rgSD!yEHHCMn)lrS8&UU35^>@s?UFtm?|d{u`#BLn-TO!uXQO9O2d!o0P~nBtVu5a-^b?$dcFup zwfV!EwwK&emY$fSPr@5|Aa`6ou3D&JjW3+hiF~ zP#n5;JZhMh!g;Qiow@v1-LS+Y4e5}mPjlL{CYq!Pba6K1DyrB-)9ySWezo@cvUX4# zquD2EI>0x_mCpa7U^L-o7Ln2r>-X0FiB z{UasOgFjMb!apefhhCIR9}bhQ)lW9!B$MF|nN?BI0aZ9q*;<;`BWT9&soG^YWFeq- z5@;8#tZNChcFTamjY*NJ$cxhnCSm;hZfOFT!_ZD6*tx|dETzXhhiJPK!Bh^ySYlJD zF5w~y1{2O_h!n={ZQ;zAl4Z|MGmF&xjWd2^xIF0QG1W`kusfTuVKr(@XObfAzc^bZpbXHtNS#?hF{R)wGNV{Erwq>vmc{iEaBoO zk+LKvX3-%(cVc3b6t~-?it>)vdVyOxD@M{@X(TqKcN@>xh!?_oIRtAk)#;=>h81q* zIZ~`)aO={YqXrEeI;7_?r)QGsnUdc&?p?}QdBz;P0fr@>?%%t-7~T=uj3An*(?7x+ zhNiMZW!OCvd|64@foxJ+5~it1pTj9eLoYBee2jJpcSRf0yj)IZ&soIHO-yvMK&{+^N;;HhBAEW zy=Y1w7{C6pjUUcpi1C(ba<0H@_4o10fWrBnG23$a$8T6(J8CLA^1nov;~DIIA2f5H9jD*&*_NZJa?F%GrZmKoty@r^aXZ5iBz# zi;Z;{{X>H#oXZ(0i#OYD-UZ0np6N%1;!+`$0jExP>9d7X~X_5aYlx99SY->{5M_ulb(vL6{; z0zPChIA1)?Pdji<03}Eu4y^CMXKrqAC}~{iwdH;lIS+t`=RM?p-@iL zAK^3tGTr3fcW&_`Yg%>mBOl0kay<0)ErO_?BpM7u0ixX~7?IqJ%Kukr8L5s2;fxLL zR5IIzb}ZfNN5+yn2AAS>4T+w3bQb;%D;{sDFL~a6l+~jA)NR6xJ(?uon>#&f%F?(NpvMJD!>cm@5cL ze`)~j9@qnMKL*r50v%+XOoxvh9ToM@P|)axRDRo!3=#XG;mH8n$76O0qK1;_^SMN< zqlt2&u!+yvs1A1 z-2c-*Z73rMy%bTW#~2NYkBhhwykJ0$CD7@LRIl$t!GOZLoDnK%2!++nKA*+^)5#f> zfdk`R?>!Qi(rf>Yd`RFl3F27FzeII9eTw0PoexBab7!_I-SjZD`iwi!+*Spxtp-|K zJ(8Bvk=Au*BX;IT-X>`}`=~A<==rF06%w&Ng@9m-=4JYrFSTh!!;x8}qjyilYTIBOF#bW)Inb z=@6By7)ygcZn#QN?Uz*dvqqWV$43}d*d4D0pc?GXR0noug@4&ztv-tq=+D8Ti*8)>Au@ zYy7esywZ0e7o$VMw*UF1cecKQaQPefuIWps1&Hup`euAW95VYKzVw?4OQISn*`95W zG*(V)xyJtwbdIS>83-^<7K(zi)Zy}9WNAM^{#0%<=5+}m=U;l*k>hAC|M(5dYrpgi zZ)#$*=1sDvMBIq3P0e`CRhE(_~CbKxi~dJS`RSoQ96x;xw8z{qDU_37#X8r&KG(^J>(1S}Eiy zjxW85!LukkkrvCT{~VP(W&dD2o1(_kS|JalEL76qN$UFAJA&t!-czWrJWfKKY$YJJ6&8RkEBZ}zQgSP5;vc2*f;2=TyUoBd#CCfg6C_=)A}moc|K}9D*OXO zKWIfUvq@e`U-W#ugy8u`@(lQs>JqT17$yCv@DBt}4D?et=y#7hyPJFi%BLjHpvjDf zrpnRjKPvnK!BhAm+FNjG_g-gA#6j9L+Ry)kc4|L2Ibj(c=h$@mo@>245+PGBk{2+PUN2o6085Ggs zQQ;p59u4y!?S7J%(!$#R4iY@)B+q1S-)KoBIy@@;1B2&YNXbIw#B=xgGKM|)F@%RL zCnnIRqQj%YKM*{H2V*>CQW8(qi=&c-etwcXQ&@XUSQ#}Q^Zr4X6mI|-BhGk)ms=AH zr4OFm8!LFuOP(c|BccD$EHyg%QQ;p5{ottuT1*d;m(p9$y>7(cewI9svi6v;93O}d zj|%_5=s$?!(!vc-39fP-gnoXJJdb}xwFyt5hz^em{~!VO8gVGLldUhO!6xaet5XEe zuaf7ND@}Cj`&$l84tNJdRh!6Ykh#%+Xx_@f((fSj{0(KP0Dz z9haebnzd@zB-ND?$)d@f1G|qLKH~OX#$O7w>2*J4oM3|i8$)}#SUP%WTo)W{{Q@~8 z$iwUEP^gDNh20YoA(Wjq=F!4i6T2@GqT#(q4Zm*L#AtSNAm=_VGj5%!ds`<#boqKU z)rmKVR4<#fRN=-MW}ykX(Q^jRaCh60g6B#I596& zr13NpBBVq4kRHVc7*g1aM+=OEO?t^rhv`j+?=IWsM+VtR>{(%Z+legxjmfkINo0p5 z87EJ8#2^cIA~dGpWZ2W6?em!4WBt>~m3$*uX*dNPsuC8Zhr556fqwNC@;h>mQ6**< z>lDEUZr%VgdfRr40nYnn5iKiF%`?Z$eEB7nCeP z_^mjR9ipVYpRROsPk+q&quQ^O!2_=?HW=wGdFlSLj4@vOMt=32QV*`whux0zW-kBu z4a;jyK*)BSNPV18o3?e;=kHL~w32(V;UE}F)Rw-104S6eubq-W99R!-r3ib9GD09b z{55k&lJfSA97P%5AXqFTjc@Xm&4jGDxEkZaL!1a*%WWnbj)AXHi&#)j z-)!K7JM{G{UOMz`rrY@IOga>3-vIttH8i)BpdDDf!3j79^R0w=@FjxPw-_*C zU9|{dvU2FbMH$L?5}wzzH57YdX~faZ?+TvpBoD9C^YF^LPT0v?#5^?or#drD5^e22 zydE@!=}XCKn%1%{ml^l@yzu@?LG*n-qOAszN)35)GLqb;4^iZOP;EP9eC5+I3s`6H z;~Oj}Ry8c!MOfkR!olfl%rauakF#`I%8COD{^ zNoA9p)# zUDZe7B$~vL@2`g%)N4rUv`7n>zffhH_m(`+Frh?9~l#XQJ6I2 zm8aOcZQz7KWyP<|mOvc1=6-yJ^^0(gC?-N6yVv1znd}mItJXbC8ND10y#iFiQ(nyI z=7MI9q$%?x)z*9;1)~XTwIZZR!!v9qICD($Y;iqMo-!m{fczXXOWyCTkeX>{uH>nE zmMUw0fI_);vh118bdxmH&Ujm+34Ens=V_V|b6n8OlQi`fF`5qz8kO3i$at3B?A4x< zCw3fW0W3B_GG`?e!AQuoGhgy_#Y7w0Ie_|KhvfUWn4tqO4C-)BY7$P zkoxd$ywHFWa#f)vGlRMuo@iU~4$$2K>C5GasRhwuQ04LZM5Rifu1_1#d_{SM%|Fj2fn&aJD*9 z{q*TMc=$lG)*$Z6VLvjwF?eMy(c*ZT{Y2^oh@_E3ef|({kV;@HC)*HqFKeNnWm~wIWYPtBEgwBZV_?kt)cQ>CM7pp`fB0 z_+%f$Cxe{0V}#_w8{`|NnxCLb_+$tZAPh|g{Mu9|_|Kcm8vH2UWTo4)8z(v4-qs<0 znN}-AqWphLv(WNpXy|WCp>IB<3^V*1zWq;)zfddrM-1|yEPl18G{wBOCVh%ErotPI z&l|6jCMGS{_~8v+ul39N55Bfv+!W>d-Tk(f)-hMu3;_;4)x60d3ipS|p@+P-3(}Xr3e)w6+m~#B1 zX*KL5C#8X{?){U27Qfmj-}in5AGrDV-ZPheQJ56HCNu(n^={)Ym-mgiBvAV1Lph31 zDMty{gbt$#!T4Dk;1A!t2_0kNMZF1`vO;J+t0~{02{nKf>Ywj>hwJ-4eD6JS@v(5} z|F#Jc%7A<*Cm`U>n^1%(H*P}Hs+Y!kTun5ghWNubZ$e)%@tA-m=&Mvcig^%=cZY@- zZfg6lAI9=7{niCn|Ly_O2Fzi{l9ZH|EuMgYJ1~o19h~o5{}LZyQ2FnX2pPs+$faKt zCSBWrIEyoLlFQ@1E_@v^)zmLN#&&}0_Iy;dF_HK7aD#J! zsPbQ<9WfFqiZa3`J#ftobBYM+Xq)y1(vW;eC!>Po_Ic7<2&5Yf)@Na95gTB;aBkjB zzGh;w@4gh?D(@z~OxKjjc8{~InbCU7KM%E}j4jn5>pF=9rL@-D(7{NHUmcoH0pH*Q zj4Q0ew<(u?QJ8dXPf_9Uje)~A27mE!07 zr<;ND!j#Sv1j_JyD5njS{1c!M`xT*9h7BKj`;g(ouJy%>)`Ad*O#jQY!vEbbpYf*| z49Ua;`8pf_H~v6JQUFcp+LIcti6CG>o2y3Uj5{kQ*=>5EH?HeFeq`Qfde1j#_I!JW z$cSc8J{t5c^)%j$>@3sKw_0sZ_>nQ?dmfj99yDl1)^D&(&?HJ4PFwR^gC<-k{^k?d zYb^j4MYHM2sU{oSmbXsEQbrpsikxcz?f$COGy&w0K#n`9zUFr*m>tO9d8nSJNP&j; z9y+N1?bLbxb3mC^y=-9m?UAF#AJ;q?B<6Efz0e&4-M`3(|>YPhK$s&DO|?Vcc1ME2o=TWBcjL&BT}g%yDyt> z#WxwojoI2Y4;dn6AyfZhssBS(OiP%GN`?S2VB1W5gaL)!ry8M(lI+QR14JTUl5T0z zf)SM!P^|yb4?lwGth6MHu~NNl zHj1c|wN^()PW00xIi;^_C(IILWkSf_r8?Uj6j3K@qmGO$_FE)5rQ`26c~+2>m1MC_ zsc|?9&?GsfpJspGT##8MS)saAXPbv2ie#B?2j+BUx4pv9*QX3oVeAV9 zb=LoFx~-A*vs*&Q`ZBUr23gqCWD(lNWVa749ro{I_iF*v6?*pSm7E_2Qr5J~oivN@ zG6_v-{+gjMlMJeygyMBJ>WEBTDo3zXk2A-Un$*PSbKbzStB;6UM+nuL35J4;^WUZI z8T?#aHW`Pv;XS*Xdqkms#qG<^@ds9zV>hnj4?auW8u=Zz8yQ_V#iSHNVA(l+WPSw2PorDuY;VlC6c9q8wX=P z3Z=!zTn<5E$hPP35r!0Yr(uDRe5u&5>q^ZGi5V2F71C%hHeR3dHK;dQEKR43?jDbr z=N{ufJoZbC8G`AmWQw85gl1cVB06eH!lPelCz2VY&EE~SP=@%OAZK9%X<6;3X$cQ% zij9#-MPFt}>kXuEVS@s-JZ#T1MYFs02b+;0c^W3$SYzes(0e&k1Wh4HQylBBP!M^w zOhMu1r3Ir&N1HRllUKRVV>ogIPo@M`Fc*6{jizmDIkuYMDJ*$-t!;zBqueey+)j_f z5O>@DbMNqC$l8R%VFu5}tXTGNd03TUS*8Y0qw)kRynSh7kQo z^)@mMj3}%ZP%s_2C%8-j`ImoNj536;04Z-bfS%l1Z=V1vCV`5xvA{-)ISeSQuT~Hs z=M;w%kK~2FW=2bLgpI}Ywb}p!D)x!)69iOo2^Bwr>TRzWP|DjK_9;5-=@C6m&5+o5 z4S7l`^`!R3&%fOFPG><>LK4-_rFz>Y6wzsSDIWJ!rzvBXx4zq6$`G*+G8=F3sx2Qi zuAcyk4*@z#b+%VgL9$460y zjBvg!E`#X4c5C7VQ5i|pv=-IdC`!cIoN}VH?CdP;k2OQI<-Rs^DMQAUAP5dem43e! z{wiy9WhGIw`xwy{gUCvD{06B&UR}B?(>H~MjFX*{%y4bq-(f0c2nTOYyTuUltErz` z1(#KFHK&P$X8Yex{}p6ZN_S_bI;UirA@awq+)NpQ&OzQr5>x8iF|6~G$OneJpbG_+lQ=CrRA=*}U^vPrM;XbX zTfU0cf(Y~%DFsF2|D-ZlXZ&dMzu!-$jDPn)?rr@1{G3lJ3Yzkgrd1Br+X5&Ujq(|J zhAYFF?ZydBGa7nzU7g!0BeruAn_F0eBDq^l*#J|{OhbhbrX5sgqh`sNlsk5Vz%

    1g#+Cmus*v(uhXus_LybmveK~<7aU3?7cO#@1OFUqi+G71|{fA$q+2uMzl zgT$qD_{hG~0;jUX>6t)vHqumddQqlxvKi%odwhINLQSL0bv*;AMDWc7DTaKU% z8Lt^si?!PPfFP;=bB9{4(#Qi5c< ztv1!$_Mu=*%1w8c$DLv_?6`T(#W9p2V>je3$Se&gyc>}d=J(W=M1u!YrR_Zwj7Ysr zFlV;mB%GxT`Ct>YX~--MvK?$HXzGN}ETKxZG_HXlrMbI?(8XM zn%l-tz8^;!64GE=6PcyE%YC|A@Z2hS5^3_I*$$v!JjzEPY(#KnnDP*0oY4YXR*l*b zONYKX_nZJ~5CU|9Ds3O3U_i?IkH_Umb7YvB)@^w#{xQms5lv2;gv?SE|JbgAsG%g9 z{ybIMFj_^c$+>a!j+rL6_3W-`lp*_Y2uWcQmR{U-c8B0;EO};N%mvRO6ih?PyAaN2 zWtm#@+W6bKlawK06XZI`EZuh^y@%jwB6((#9yQxx6pTlC7oxov=0f$aFDNyaGDO7s z!{7@fFr^>fo`?_#8-kjJ08!*hvweypN!Ov8H(rtWv6-YfN3*bXv_S0Ehs}oiuCkFW~sxiH5Lk>782+q0@rMxqhLT` zFMln_kjjCa$=S|~EVI6;|IxTO%9>_HT&~M8#)YE!fMmR9x@sAMHj?UX@FO^y@|_sj z?g`FJ*HlvmV(aejCsBrwFk_b6NMuScrL|6bgHzGA{meJ>4VQK8{8s&yA%bC@pZRp|rqO~9u{ZUFq_)BORtTTQX=ukE< zF!hfVs0TgXLm_XL&a|6YShLRTfIKh=BDD4E*<5zcB4hGhF3}QtlGqQ z&Kf*nEnb8?9%mx6-zJZE1&Xg<$}jGzG6cJT$T+j)yW_%h0;qBj$Wn>=kY@W91yfMi zM^8iuG_-g3UW0l^;xAlp6}D9AmPi?mEf>RP4#`TXNB@Uk7c5nREWApy(V)awRCXX1 z@h-4_LJyG#s{WB4m{t-#YIPmY7S0f2Yw@2yOQC$SbX6r2XSRKBFsW^DsUB)^1!!=g zK(Btf*h3k@SHL$PY;eE6h z0tUgln8c+tyZIUP5~iQ(66c{Gsm^u|1#5FE_2b23jT8U{YHX-TS<^~lq-!&b1g5mJ z!Bg7>Pz?#RhT=t$Xow#f{u~_Y;xtWQX-=KJXn+h#mrxwq_6t738eQ0p>IF~}pj17+A$Zi? zg5DqVionvkzJ1{X!IdDns-;uCjW*FRE|oqVQw;sm+bvG)9%YyHR|SczSN6xwI$$D{QY3aYx2YRubIX`{Izqf+VL z@rH-15?p58Aw2i78D(e*{zK*63D|*P+wuG*DKTDQ!vX{Uqa<9qe|PKC>T`O)rtZ&KjXB&NvtgoOnj0X3buw` zmocGee|5wOfz?oAEuKU5HtJi^(Nz*2)`wH0CZTX?$*q*pp`d~IDI_$dUp8f46i|&q zpq{5X+dn86lyXyH++tvsDrdXfj|_s>Ko(07a1*1}KDnOOy zH2t(Lhp#zI1y){*!u;LpCz&Z_u6ePgU}_?nRwPiJ?Gg&cqpDM_7EH|~)2V$_ zXS;$TN^0^ZC(|RYOd$nrMC_xO=(2&8#BO{1IOgZfo;R0BKf>Du60Co;kbEgFw*n-z zJO_3Y?$)$i>Lx55Sbe3wKx!e8c%4o!OiRkg-6WqYJ=~iD4pL0AN;4K_W|W5d38j6^(7sUJ$jCM4VVBnrIPanSIii9B(bB z;UC>?5MBQC8H1>`Br4U8>UA2w7?JYXlf(3FwqMr;>p4-Ts2}49h|EDH?rP%GlQK7D3fbQf=%@l{!WE;70z7Ia|BcoGIhp9l5<7wC5v2a_NsR(%%-v_g(RxgVpTAd1yc*j;(v#O%@ z*Jc4!6f+f_3Wl7g*^3IJ>oBU2$MPL{glcsw3Pu$LqfXcNsbFG*Z)^iiD>;i~rgXIW zkv4*I3^RrFEiRim2&z3f__X>ArJC9M*$X1 zFNY#ZmV)nXGY{1gCa@*MT!VZHnWf*$o?j`TLLTY&7g=*nC(naHsrP0*Ia#LHY`*`z zoF5r7jzy2MF&-43^vyjikow8i_t&pfuUA09kd)62lan$`>L^h2L=QehjhUobUK&6G zQ~L7khjsy!@9}>+7UrX*Bi#AoFg<^F_*!wKQe6<1_=WMHxa)&gG4*AADc@rN^-2bk za<`8mW&2FGJW!!CwSt`8kZ(t3=^MvkM35QPZL;NYYP~W(5*-Vn=4saeYC{>r?ojv= zG?QiN+t@ZK0&1XyYSxu1^(rVBlzLUUJPx}fO~DW)sOa)(e)~5`o>!|K6v9+BNK&=u zzAWu6U{uQEe95Mx5{$)9F;(3m zn_e##g4SyqRO(gb%SbXmM)~(vY)ctp?g0d>1y41u^Z+D-3VCkgpjW6?uZ4p3C*^*G zGsEsu(52eK@Bu0INlfBLlE{==ow~QQKni(&;@~q>r<1o4B_xk0Q^m3xkG8~RXH3O8GFQVpK*6|_cPVkZwpl2&J>LFea&k?vIa0^ozB>krHX%(^RL|LBWueuYl6|X!A;H2PGlGS2!74 zV-Z5mEPY9w>l4$8As@3bFU_{E-*NDiKi3i-6$7&BOTJp>V8e7C5(buQ`@tnZA zOJY6SgzEHqC>WOV4waILB>{)&H33J?DnBw>AEtY8c;#u$x`qg-u+}$PLak#~M6Yi^ zsqav3&xGbC^%N-l_d?1TpD;VB7xa+cZv8jrR19g1M0yFaGw2DycCIJo(W4YMRt?p) zz1Z>KLR6Ng(bZB6HI0=_pRjrzaVE~Be8Q2ErH1Oe+Ly39@eauO8$^9VKxvLR?_{B= zyCu~Z!>L}!!NO>1iajpDWa}eW0*h>jT^1b$X_pvGzf@}evtSx0nZBZPHJaYYU{Y`V ze3=e=cDBcKNH#d_u)qU~yUA>fQ8MU^$*lF;vio8RWrzuPR)ed@)7Qt6e-}`82~~uz z-H=(2CY0IfVcz=N##4rvh)igh`0~`h=%vB}Dk%i&YpT_op@=3_OOwsdKkd~F%CHm& z4ON@Nk?>g1t@Hj8P!0)Ilvzg|b9@e^Jlv9M`jO}Gjf8)+6ea@JkEf*l>)-;iaW`4= z)S(!krlW@QD0gI26-?lBj!fd~Pz~W6J++zhXxg_U|2iv(oIxT{snfCnYj(<~hN;d> zy1Ck|!kCK<^p-UcmNt>IboT@s{2->Olzd#R@R8_rr&MRQ-IHp1gmU;gp!s#c-g&q` zR_qYt>9)m{+6t&t3B{rH)&`XF5eiUl)5|u2SnCqXnpP4WrA0Y|>B(;$7=f9h(j-%P zW*7A~29xqB2bkztt7h$9FfdUJcCYdu2GsCUC0-FwE(z6lKh^6{VYKX?=?Q$W;l+BO zs7DN*^t|&%nE4*bW8cYm+8I3R?H(Q}rA$L~Tr&1sgJ|8b`}zqDO^`(Hp^OOgVy+?e zU5Py;%PiBQF@IvCSgfX1fV@4E45p1O+Z#cNbjjo;8cl~WiI&ad&&e_i6>NGI*oGLI zm$Ou)(8@fas0<0UWd&909Z@htu6$WH)noP;9vy( zzD@NyCL|n4eP5dDGEF2^gkdRmBS}oD;km8b1(914?fi`D^v)=lij)(j*}bMiM)w!* z<449odyl4-Vu53ldbst<0YQ`{iQb+^b$S;RQ6kE)oAzAiG+pgS2GPABB7s@j)+Zh_ zb2iLQlthOdRH=7G!HAR(vuW;ZFS0t@0KcG6IwL~yaLc_E!lY|hJQC_8hw2tRsO*e% zJVs9$R556#_TvUrHGAwS0p*oYr$3^4y}JRW+#^o|l(MrMc;?}4un@2k#VQzFkF42) zw@g{tK`u)%C)MjcP(-N(@@F0@Q&!wq47;30jSI*5}H!qzgE={P?IE7{rOa<_d*dZs8ls8HXSi{f@e?&bBz)dJYuQF zn!eQq)MN?O?q90Zd!t}b${jveMiy=cGTHh9B`<8FjP5iQ!)<^8q4@A<6WBV|`ld*x zUUsV2F{njLQJLN>1t)cV2d4#^+iK!!QH)gSmq=(zpSGC@&w@ea1fh79ruW4grYPm! z1U)FwteVRFwJv~+#izQMwqu2cr#EA3z#uT9sgj5j>zIXbBIWV&bVMSYYI;;BOg9Qa z&TkOl8*E^WuQ9@yIdy}yAK_9pqQx%A;M34avnkoW{UyLQbZUrlPvf3EUf z*r%8bv?kD+SNt9AsRfHa6&jl^(H7AhO4A3Rh>o#HcjM5m*(K|MmUI_iwJH5P?kg{A zFcmqOwM#I~kW5Qorg|Ntb(H!QJ;~OrmK?rLFzJ{Z#b6zv$O@8}QscCEM4VZ_x>pkI z+d*~uKom?%x4@d*D8&@00fI=}=42LZ)PnVXWQa%Bx{D#^jF0CSalV-n?BHEguhTLI z15@s-i-!)Ig$imb7QRCKVgss&&GVDc)~pbyCm0kNmFPgxPO&7n>Dxcj`+o07hLj_) zVFKozr<7J&NdYxmLVaPQTK#qu(Sq`L)68GJg@w>S!$0Tnqpp=7=SZ41u16PGI@Yh| zNT_dU?A7!k29)v-WXp2k+2y5L$AEqct94WWXN(`e+nU0&U9J= zqtune;EilpGQoi$-bGgk%{jh%cF=b2(;dqy4wtyrbFsT~;&8+#ulIkhg6Htvu!J44* zy>D)_w$Fcmi6;;fLsu!X1&=Fzf#jvMrQxh@g69#*^U4~k(<$T}9owg7P3q#}zC46! zK~%O#(4P1IeWPK|AC*jBQiw&G8F5Dt=wpn`Up+^i`{&*0`Lc2tuB!q4`kn)Kk zfRrrWNN=z3Qp}(j5*5zeXVG_^e+!T_iE3 zhqlyeCWxMtMAbP_3O*1e3qhl<*=^a(5GPpMW0nsXvAATE7urmJ#ZDT9R>c9fpOIsqa&!=NqIZuBsSx{Wubp zrS4zefmX(h#4{484dx{1QyD0js?-BbHhU{>z*;W`haKL9YlKNgB{q>Dp`Xqj`H=w1 zl|Y@|pgKJhMU;$0jw3zE^fV)=q!Lg-eM|&-dVB7`3WDib$u#^B)#`2(Q8E%aP8y%g z`mjMLx*4r}fFo(zu_NAZ1=MpAYQ`+8*Wn;WNl_DhZrF3POzA&m;p8NwEb$T!Ius$9 zDW$e8K2b2OmQ0UypgJ8joJsk7&|`K#f&bH(=P4r=b^$H~<`z7yd|}#o!Lvs4ywja( zbq@;G@RTn>v4{JaRguHj4PFuKL$QMxn`|6N(;jQo_M|{sE0GSLpn9FcEDTAxOO8k3 znYIpVCjae61`))p#Tpe!efrmf9R<-kNp$%#)#=$NqGRzqDUNn6%(~&Rq8$zQDRC>a%GsF;|7`HKEXjrxO_Z~&m7TTFg-7sYV+XA zB!fx0tLJe!(i|CP7ir|GI~_c>Y%rkumhXW1A@d(zkWk&WQ@uXffKqQE+&EWg)FyyEB{3E17n)6=uO#vJ2C z3B-Z*90N$Xj=T;`+Rf@Hh(xD_;#h2-px#@0*Ds>ky(E$D`IYMQsVJgjAH2?V1)E~? zHeL23fM6rWyv&=#mMw&_yA*4ZXdjFNQ~K$-mx~IZS0vCg7=Zya z14Wcto+~xe{AREhwQX4PgfCR~BJQ?)fn=t1Xxi*mf@zav+5o=^O!uOQ5|i68!D)7S z5xAw*LzE#u=1Z}6kj#`S+V;*DOs`6&f5_Zv`b-pzN%=yWmoX)Jy$X)$_T&+W!oOjo zIW7IMwD`Tum4fRv$#r=@RqC@)FfQe>70%^#dM26PLQhY4r;MxG_hCcq7?PaQ{Jzh_ zzB5ztdXUUg1~w98vr#ZI^`^r7?8)Kl3EPJ_WDzV?ROm(mQ)=?pnV$vF8xm;nT&mOO zpkP4C*F5o5=ag($hUuYq%J)fpjWBi|hN?~^HKhR`oPI}8ZI)EYh@gXt*cg@a{So|G z)#i`7Ri)(mFjfRM@dt|*z>ph-)@#Fctb&48AMoM z+If2DyM34{u@03Nq!M*Hj3cK~@AqYUR2*CD1x59OZ~h#f7>usP)7+|q5bt70TO|@l z))yE^(P(@=huM(|JiRGH{ucP|Z!?&t{yp$Z!Q_`r1Gz`B&|p%2#KG&!WY3~ac1|+c z{sPwagT>*YV_4gWH^8bqKMj3{DJvks29ugJeUSmCURl1(WRKbXIn1qK;iKYvF^LZt zOrPEQM0>%sO)`yuiwLIs3?}tXx-Uz?8AI6uwZ|dqX%d=JpE3hK7Es$Ily@N2>5EZB zX`sr<$hIe$J`4q_K9u48t%0YGc_B}G=PkM$IT4-{^<=xh1k(=5G^-ZXv&;J!Q^nxQf${(3Yk`hKaVBSSqMF?jdEa01BST>) z5zH)P2)BFeNy8BClyD2bqI&%S6b!CXwBWLx8Chx;MMZOr>4IGbG}U0K_NK)~C)*|I zmYt$XeJKh?r+k+ISDj160X>0b`2mrbvy2JFOY3))7cKHFiS>9A)$53(aV+KWbQKP+ z!`B!6tS@9lAG4&A#FRQdm#zaJ0QRhJ@nO=_a!T)gDRp z42^A?PD65(x|GN6a3)b~@GS6fBI6j^MMKc5VGvKH3X+y)c#tAm>gyiA-tM^M4_1%bMN3 zAQG?Abm~(KNx5t5%XHDBHBI&<|68lhQ^w4`nx>UxJ_E_V zDp8F;AzEPU5roXD6BVUqi>qPCV(Qv2$vC_>mP$2MBqH zh#t0 z0eYw0o0#m%H2=6-T+A?@G6bZdXFoDa7apl%Og=sfGFf70Q>Bg=C}&bWNP)@gMsQu3 zrYMpWizdfY;Lw9;icC|VOR7R_okRz3lr%L((e@X^M+(6AGmx}>XV)9iu_KbH$mjF{ zeO)w}JXxl%nZ@OOeq`tbk`}6OKpksw+Z>^%qmrovXIgJCDGy{$p|CnGhBIybf`+2d zD6DJWYhbm1Z2PwY>zKqUeU<9<=M607)(=-UtC%Ft$ZgDBq_S9k>;I+!HOPA5ihw#U zp{mSaP_+MtSwH22)Kv3V2))v$dmd%Tn2o%MB&IaZHUA4ibV3p(V`zq&HlSccs@({? z=>wHpmXtkD8M4D|C{&T;rBv}kE@pwu>U|NyvzzMl7g0n-Llki-h<%{vDUf88UYYpm z9?F{b#&pe6g}!^1b~G7bgfG7g5{WwfCA?uos$+e$Z`wxwFXdi&~0BED}(el2pV9}Y1zRCymGCma*6#>YjfM^GZc4*q#6PotJ ze1oWgPRH;V(aC&7#2pnCc~X-K0yHEiJIxT>|7hU@+|JP$TP(x)dACiyjj7<*`G9DZ zg8?ZWlf=?SB3)Rj;JD$9pQT=6;0IcXLGcocW7`@USjrtebW-9 z*1(`r9=W8eFV)=XnfHe_n=-uDDmZ)Clmw@ArAoJkxTn4tas>(2jcv%X+3^9^3RTWE zvU2d4?i6=&viV(^^6H>12p?gL;)y+|n={=mneM7bwYKpn7?b)YsOUl6;ht&DsfJ1_ zJJv)%m1s~YUt&}8OzUt@q2x$+OQfWZ3~8K!q_Xj`tC~|(J%y4#)cQZ3@Wq)zp752- zVlXzc7p(Cq_sJDK;VayOM>tf-gGW-?T7Ye=0j1n0PmA({M>tW)gGVNjucz6@7(~j| z^ndW+5f0^%{b?SD8XY|-B@Z46d))+wlGjaW_f=w=x+`i>{|DDiaHx>$CLVg2L1B*1 zt%UM5UbWXv+&Fy1$z=FQ+jg3fjWo!V+jNA)6oii)zLr=DZ3$-rGqQ@gBr~Pui%zxG z;?K`T4%uF{lQHR-+N*bx*f{0zdAz1?%H3LVcqU~C*$*3$b}}Fo>;66dIcNI0w6qnU z&!c)BGp{HyWjV82v}$WU94ofkTfh`Egk+|)JO(pqrl+4-WQ$;B(&Qkip zL4RsxmVA!P);t#lcKeBfG}Z$GJO}a;66`%h$B4SFc{tEd2&j zWdeT0nUp)}Np822_4Xx95^(JktdanK_vBzz;mSqku(uhft0WW1=CW6jqC^i zSrq8#0E;xkPNdU@S<`W{aY^6$ks;oGv_gdZcpBU*?l!?zFQ_fSo^U@t!`PI2fNVOS z$Oui7Iecx<4%Pxb;XQ@76u|cMM6n19%GU(ymrWf009h~Gx zhO!2rA2|)IE^kaOA+TxBedzfW@`7lu9=?5ue_Av|MZY7~9-8IZ!RzQUW{^q_zbqTc7g+VFbUFGs(?*yJJ z;4s~xf)7iu1keWAtchfw)wS2Nf-6}nYyAwWOQ3Zh#--e^$Z#k7R2<+l9;?y_i#jyA zvh-HT!@6K{N~V`6kgg@rxW<^28;OjpsV1F@Ko`dW$`Fxy6CDR&sotfW;{qroq_mk^ zy}9^Ebd*HX#5OHWGGTBM7Xruhfb$nGkhFhWRJdC($!BhATZl$Wm}4+0H+)%iA+TAb ze+wP*BLfGmsnQPyQcBa89~Vd=&&JwD-no`AJ8DQ1eNLYO^U#&w1zZY~`9{IX{Jk6g zOcqEX&yxBihat@}kd&JTk3G};6K?`FmW`*3?t%Gv+;WncQj@<=bP-JQF+LXUJ*rEX ziGuYe*t9iol%*6-}uamGZ?=k2}eY zCy*dUW_B_kC_11j--BKfTSe|i3{3fq%Ih@0I{(vi zJ^aX!5e`z!^F%|*)+nx&AdLNr3R%3 zwiQSrSD~jjrn-b_C>WCR>4w*xlI_Lu8`I|RuMVTcrAd8oR_aR>@Dg_6<-#uJr9NU{a>>ELpD~UL90`)mYq}=!+I-8~D=(TZ} z{5ebu_Zn0Sdsf*bsN}Vu+9(WVXns=+D&@nJHzzaO^zDm*D)ZV?hB3#m+u|dGsl}^B zjo5^|AyXS$iZM+#n3QXZHnvUnn149i^3SJ<4OdpI;#4!JmK3h~rqEQ#HF!&D{YFc` zbf33B<ddv2fUn|OX3Qv?r1g^wCP3+MeekkFJay`O0jP_M~Owf1kSOYos!ol3bu z&!+R_W_?*4`iF~-o>HiVrj>l1M5c7-{`QRpQa~boy_)J0Fg|l6<&iO*5}kx+&e3*l z(~+_J%RPzHDo;YxrSQ~0CCMpWxxIQBK^AgK{^t=?m*7Rgl%>1{PENypy2(jq)ip2X zCqFXA-cFFTHwjH?(!#H+3#da?(J{(G^_m`6B%1m>5T-k|^G^go14g6i# zkEaY#j{xpfys~uHWAX0@u#mGwe`Qf+!bB8ITPo-BSj1MbH8W87?}d2I0EVcTEtq{^ z+bmE0dspqISxYQJmbVpZf7__GPGJ-bNcm8e}OQ)^eq4O@=c*FC!|EIw(v!cq-kACRG1~8s!OPDT^JOmVjN2O zOgO`rp6ya_AS@7f`c2Ag@med|+Q3@BwEsbYrAw?nZ5Y;N1FQT-GovU z(_K^T*)F%)ux+5~Cky#?ld*AVhNle?o%5b;AkaeA6bG{ryY?jmO?m%vd%cS8(ez_l zLK!|hnqleA2H5%Mjz1#68cUsxyq)T6|7(CLcQt6)psm^6Wr51KZ{<%}wxogU7lUbm z-#Jk*g&ZqLVXj8)f1<|ZO>?H3K0hxEdgjXM$+DBgyFo5uHJphN{S)E@KF7yauvXw&pHVEIi$E zJ&m8QxHRy70rj|q8jTnmpn?+;;2;*l~Rj%0O@F?)*$Bl)@4#UpV=57yT`p7I_$dk2ZjiB0k!Rd%{ zgYL?9da|(*Fw)4GkUIDh=+f$at|x05ggK8H6(z>*nJ=(H9&q#o(_=mQP;^X1x;r&B z^4XOkwDB59+4LlbViz(#W&FJF+a;z7sExAm9e$kZ>jozw%44^fgru0(Q_3dsH1-%Y zy`l&T^0ch`y{!aNNR0h>Q>v{SoPsFds{|ysS4sOD(`8ry8RGUprt>N+omklPQ^6Gy zl{sCFD(eR4Aj%!}EcQfpC18^i+yP`bv~U2e9XOVzWfULxrvMANYv?ouqqVx1P_T}r zybWg2gQU%xz>#g&29Png?*lpK7)YPLd2E0{`b~DLKVN1@(VKgC(|p;kNOwXTG8?af zbP1beUc=Fs;II zc(V&|z28}*ZfUKm9syKT0`c0q!HI|R08F;sQ-DZ?A++%tnE2XEXbF~&&i)o!X#D)H z(jUAdpc>|bqA*Q#MyV;>Ohnk7hIb#@XIPu|IG4i{(-gD?KcSCi*=qb)>odYPSwMvx zs^Zmk|H3PSQr+~Rs3ypf-iYTplFLWOWwLi9~D4t@@eT$ ze1rk1_Rs}Tlhmn^GF@{?uK*^YUpuS!#R~yVmO!r; zrMg-{4J5<_!G_T&LYw($dT_&3i+gXZZ_t#lXrUrE z{49ReOAH}&z!YiT4onfM~R?xo=*M?%c z<{H232Cvt4ibO0-V^um4o#MvddBaW+su>du#SMNh`>~D6SZQTv)i%Kyg!PLfY;MjeSdvWgxzZ!QkjW6*cx6xk!`L?%G12wL&ug!3{HFH>xA&wHcp?d}jrGbIv7u1g~jYj-M<2IKz2 zJ}zt!igdTTfnvM{Mx_^`jID(2u*ZG8@$;WfE;t~NW=o_>L#V#)Zzz-_VceGu?>`63 z&bL$yAmiJ|JcT(b;Rj4wH4phlhHKn5A2F(b8m=(LR+tnyAjk#TzU;GcPh@A2$xm{lS6fDciwE=4szgfyV^X zTFF$aE7jUcpis`ldIeoV9r2(+alC7$wY}yv@FT<5pNgm3(u9>I+lG5*3Z`|EY1I8x zX^Tg}n8NyB5$Y)o2lUd-^PKAVhaVYZ#FvOWU~K29ez)T^f1!@FUh+J+h-z&mQ7|5r z9SIhJ0>@?>U0$zK&2fzKUCdq3;Fvf2Vmw|bk}`wTam^I7G-{ZN!V%p(I&rP7Bcd#af)oBl ztIi4_Lr1XQ4Znh{EVa4&PfTJ!6uap3^+c7QL=7Vf=S)UQG})Py8}{d{Jwd&jPRWSp&@j%Tc| zHE>?NttDxTG_+RYjO|PHl^;jJG!z%cp@|eH%VYX{O^+RK`;qa~A(%G@Tpym+*qiLZ zJ7QTVS+*fm02T~ToF$yej+6!49SX2EcD-%_vDPJ&;U-kUunHfDr~18yufjXxk@mn+ zvj){xeiQ}MjY=L|wn}H!BAi-Y&*SglsnEFar%*= zmsW_NApp(OeXndJK?!DLKA5{vqr9o9xz(-LfEYhA2AxWpb}It^Je5qpxEt>XXOzU@ zxYlu~VL0KOw}^FvbGVMQh@(vTOuOQO30H8$6|}H3>{}i2a5SA2Q78nPhrax8=bXr{gjO z^r52t@I*C=!?KiI^jt^0A*{P4)=zNpfaO5JuvEGTz*2B-glsmq+hsq~w7z3VUP`eQ zT99KyJmZ2qmRL8{S(8yP9+mEBlIioqvImtJp=lk?kgSyEH*~&_7h*{avalMkV8r4q zN_!BU9*%VP+4Uw{;?Q?pbdHc%%bHpEbG#><@e+sQS`k`^29DPm@z(F_as0<#oXUUO0&}Rl>w>jI*wGA$-&3}$)={Ut$UgqgLnjW>i%M|Ts=B4 zU9hA`mMLqf-byvB@2H&n&_%Uo6;os3Ww<&!;158=;ctHlrS-az{XMS*hxnqkfiiCuc>j2G}iNFlpu zsRl?M6bvcc=9@@Io}TW^6j$mH6_*(LXPl{o0cbC-c>WSj!n;gr6mvEX{TeR>6%tP5 z&{nSjrPgRid}Q=`v#|A!;lFMrhD%5S zhu;l#bJG?2M<8W3Tedc}o8{_X1N_MN#pl5?$oK=(cC22D_Z#q~pS}KshBXH@H*ZC| za*bbhgI74|NQk(yq-Z}>Am+>>%J{B#V+oOlb(TJAweAYu5YV?0hyz<`dcc6f4lEG@ z**%Ul*Cc16f^|1&=r*iVy^0$m;c@Os=17|MkoMyj0_r;n#cQq845+Z{@DV~ega;7m z4#?|A7b2nz|9PCI-PYeAYI)!s8D3J;_xXt6qH;Bb?d*{fvANm}I{V+)v<73Oy~t#` zS!bVtPyNqZA1ybP6TdB(@U@dCX|k(}uiS!06zej6_bqWdy5aqc_{#s0+f#V06`%Yc zy82tW{Npz)qteyUeg;y8Tl^2EmfelNem)}yZZZSrB+Jt{yge5g||#*St2!{g>}t38-;oW(dK%S3X;vO*mi8(IziG>n$z>Ms(2xqE0U(;dsJtg zgF?N6h$d0NZYYUV{X0B$q7I2nsZ$Z!+scrxN~F8jQk``!3WgMRT#2;JF(d^$I)Y8E z>}cFx!GaYeb(aY}ci;s|`Weo$v19GM{Zwb2hk_A>4Q3RG$n-Q!swnmi%qx>gU`n&* z{qQ_q2*?ryvJ|FxfM%VKf&r;Cat_S<&ECQ$X)3P6V|6|wX(`>)Epr=Qh$cqTlwn~3 z>jKm;ny{;b5vqqhStmWx%L4wxjS)jo(JR>GMYfBj6B90ikMYC?c|@IcA>J^aaC@gM z1>;FHzeQ5&=oa|qz1|jLYr|`QMxjj7Q6b61nXT}*)wejWf?-wCSYHCotp?2%?WUzrx*nTC{_IHF1PWM!BfhXRGh*ePQd(MDVmSH>Xfyua#rK~z!_ zt*1D;R(Y^N6m}^p!Zyd;p2W#G=!M5rnWQ2;VU1un+#igtWh)p|himODE~u=M>V0yx zwaPSIWqMLd#fBoU!{f?|_#q&M)W+-PQRh=AW9BdvqJCuj-22Y4QG%+Rq~f)e;n1q5 z5)+6-dZcVRw&$6gN#M@E3xDAF3kJ|uqYSEkXWqrtD6CJF&qsx+9;XT$NsF)r;(9U! zZ%sD6K(Td2C}UFe8;01e2F}JtCHDxNiV}z8R;GvvYkFZr1`*L3omm|Y7Al$^7GGL+Q=F`lJ{vi@4| zc?H2$MRN6qJ%OF*7fr5$S&AV&`*a^RvOn2nmSEA7C?gnx1rZnvky86Q&T7_TFCp)e zT)eXOF}$)ysM2vY?74GFL`K38*mwtfX0ytzdPlkCh=5h6wCq&{UB@GiLJ zYMq5%3)0yR5I_161Qs0VU+Q~-(QhC#NG2a8nn-Lv%e*xzZuB@O)~fp{IA z%-}#Oo0}Rh+-Po@@ESUEaj{8f+i$%E%=vsU4;V0EJ%$LIo73aL9s~1(tH7yH4VyxP zjjia8kq--;pCt~*wbD?<8e3S8AwrxKJRLSC5vO6?SqeOG0ag5Y9EhQBpQTkJPd$z| z)Zl)RP$LRcrS(A+3@YqQDN-nGF;Lcp*qq{)TAJ4TB1uf?=~<6{j~62PRT51i)oIpc zD3q%y!#l~$$_X8HBH<|cFP43sGNu%l-~`c9BunKd*6)Bf1Ql}U;&x^?tPi1vL8)9h z8QQyhuR*=dOe6xav0ln>*BuF*cbLGWL$&GOTQp#DGh(L*n4;(nhTQV7@G`QDd?@d17Q!9l9`boM3gZh ze+|*pRzySTu0d|tlGsh{A>$B5ZNEy>E&cn-IF=EnscD9=nqddby0|sdy=gyRqku>sB{*R99db) z*Y9tE%iSqpK&?1!c~n4!w7A2wsJ?O^6s*OC4KGBfBu7pvW~|D3Qt|uaco?!IJiB^i z%UCL1w(CN{bt%~REM;iK)hhQ!!MId9K`?mEOf}6wDB=nF=gwP>K6{LeGLg?KHQ4o=ENiO6h$;HcsDn&$8L`3YO5*1NU z_*#H)5djgw22vD7P!YijiYSQv|9NI-Zj(&1VY73;|GZwayJVKVdG9mx%rnoFHHdod zrS$lLI4~kp$AU#kk^0WEKTvLTU2DP#*JcuBm_owwGq-7Bo%bPr6$H|gw1&NK!GKH` z&RGP?p6>QdMN7-(#M+(_6Kregd%PW!c+RymNBmQ?=zH!&Ty9|L*a_s^XILuLggaYV z!(_(>)>LY9D1X{_Qq0?Iml>?4&ilvfI$cS{)r?;O7Q zP^}otjXzRaOY$=?0jV@r)7`20wrQHIt`b1RQd$ESeOy4si{lga5}ePcih~ zLp0;korCowv_Y|*K2PAS_g&a_5;j_uyWk4>Oi*0iyfMv9T8H7)aYmKUQ)5msC>%`n z@mmG@?d2XzzIa75E(32ZJwOp_ve9>LxnKPHptkoshHC=CSeGbCI&jQsq*PpzECS(M zaahW1+qpC2sc!;^C}?O~!afl^kN0bt!Fg^lc)Gqw=`layP;ouC%9EGovAu9HNJH6+ z2wKzq7hOuT6-YW044NJb@HZ{yXB?DE2b(nDbAEPLE0JV$=~Tx%??~Pn7OD+7wFDQ$ zbECm?WeO$6oWVi4bkcG=b+!AUJAS4Eu3<{@46oj*gvP+>_tJYI+BAlBHoIBi<7IPK{CLGl`UDV-3{E3B1 zBPqKSGH1opAPM12GH_mFEq=_eNC^c_m+qaENvA4|mj)XNg~B%xpHPMgC&j>drzfSw zz-$W5S-m z3U&g+!N9%1IYoXQE#`d4aJs6K&IZg>dYiIK;oGzK@5G6uV|+u=QKbW=#r%##Xr$9k z8BP^sKQ`Em)``h)$8pkv(s9%wou^io#XYD8;VJ1=FILWhN$R^UW9Q-U}w1vr1>g5j8UoGlwU-MXmL z1d$J7q5%nnh0kkju7L}p$uwwm+8F9Shk{0h0s1Xko^PR|(b5~{^zz7Sp5QbdgJu|w zV`(w}hK8nlCj}M`r=b-=O{s&!!d)$nQY9hT+-%UyxPcO5{=*>zvgxT%Hj&Ao=|j1t zaP--hU2!6ssRqp>pHUjq6``Q%si4W>vWZN^RQb0kw-iQ49Eih-XtE5N!g`eEbl?yI znqDewX;IS9);Fc@KMR}g|NA{$5KXp0^RX@)A_)nN0^3v2EQD-wbQXL~;OFY_MKhWl zgXY{jlqRBOAI_#q~C)~QBp;2Jk2%7n*H@8!6DLkEV?OvRS<`#oyWD=!0tKtv} z+4NA?-mp(==231bynA5ETAYZ+7o=e+pdn*BBs2;-)Iv6>CyhxSEX*I}gCmsD+3zE%rgXXbsDA8FHhmg>yYj3K;yVQ6S<(9&r!JP-=L^LxDngEqC%~=bF zkkDLVzwgOQT2<(<2FyIB93Q-eeKLt?W*Rhywo{t3HV&bn>8Y;XRDTKmXGA@Og?}20 zE25cY(409)sm?k$goH+2y>YyXnXLCxZYlh>`maVf5zXu%jibptN^`=4pwpPnwXx_I z@Z@=W_3C~_in_Pg$l=aJ)wWPJ}eiKpIV>Aexg@M(B{#X@>}8vhF_0GKH0Q{k94xLYi+N zCDVYM<|I!7Lkfjyq`% z!l{{Sl5jyp3xY&EjXotAIwExyiMr5iDK^XZQwx{p9{L4UiHt zB6VJoaP)_2kww75G4HT@a6v?i45B2Gj^?Db3n3#?Fy_PU?lAO+s!$DKVOF!rRR4(x z^QpyX_D$&1f{3iXkP#{DN&JTGpH5JYDb)M#vzu@tqPq;D)c%y_Y>WdVQaQI}s@Kyi z#iy)eD7*Nl4qBLhS92k^J8;GE$_}p&0d-M|xCxWfrs6XYH!k&gViLu}%2GRCy zl;&)X10yosFsTw^@}#-5u&bi7s#F!4q3I~fGlegl+FLl0l zM^a+dNu8-mLywJ^aZTB-{a)RfI1$oP1L^P4l;%vpfg!0bcs?)ozEmcp$bKNYjdD!E z(dF%NI1v%{gW?U6qkbW!Ini{5rr`PWeN#R5w}1{-Cfdz9oHe49@3U8au@EO>T4peH z??q|OOL1UQGF|p(wKAoqCVTP2oV)!PjsitOpE<^~s<#S}mw!ITcDwV0m(|%}b8U_O5c=#lhsI($vfMXQXsi*I#k~C+suIE``-ev&iBmIXz_H3?X%> zIZ2r?9F@vk$4N<5SfL&*PW0~i*FngL9yW-EcVyk=Zo|Vv{Zy;&<;dXs*d3n)r~I5BWLi z?hH?kTY-(omz{)7#F9CtqAAx$+wT4nUqOEjvCtqIL(Q+&_&pq$d{lNX^p8)burC?e zZ*s*-rv(txaLP1=?bSOD;80r(s2g%9t?|1!FesIJ4y#W(cT+c15ta@a1^xQYM}FAF zaXvF}CT?ap?+6@~dJf+Tb#R=K4HJpo}hH7@#82Wzxf`d7~mYl(8Rz!$TI5)_4~V%1fQk>rd&d&IcX=!>%Uz zy;)c{dg=y_^H;Fc@wCQoQcuO`O+KYIB(Cx{Oq}t_r=ysaW{La!Wa$xcvDO zSXBR;7QLj4QR3pJQ(D4Q9F$j}Tvt}M*LKHm$*?g2L}c&_C_1vRSy;8P<7|%8!@y}m z3Y&dURL3#hlIN`g_N4L;5iIEdzah`>!|HBDeZG&wFAX5#txtdh{DR2COV{;mr^Qqc zN4&zIYR1~umY?D-P)jvyFV-faxStFQg-10;{T+;`q@<|-}76^K(vm?%o$47T<4wQ`}AWeHlR!Dh_TC zV|q~3;~lAYN<=daqNldvZ<@1JAeqA6FNKd8Okt)T0Lvd z!ij)p89*;TL}|{hI4}{J_KBGD6MS0|&-q>cO{I+NNZAZGY}5sI4P? zn3u7IGD~6TyXk0;7|dJ)h7B`oPAYK>MrHdm#haVy_9>`6r+@fKuRV3qO})AU(NMT* zXzf-wQE{6WBw{HL57jI6;+f^KYaVRcsLi2>C67xqZ6vceDbLAkC(yJRf|+l?=&(+j zgvMY@M6@mOIDq@y~>F&TbV7H25HlBJ2a$W}V1A#ljDl&w*9Pu&^zhu;Lce zD6{5-0@1NlsszHaU*?Lc{BZ|G%HX{!cMeknZA_2s@ek(d@3JS<6bUWqdklUg1n zEfBOqQTy}rF+UL9y8*0)ppiJeK& zTYKq$ghJuq-M9C_iEtK5IFzDXJRWSOWWTs=dazpxMYO2!_S6cxuUb5~`DxB`hs1NW z;87}`>?xV)wx>0nY7v4&E$V-xgg{a3F^wN)c?b zYUr%#;nwbd!W00a8ky7z%-&vqPs@!AAuCyyXJ=c|Hcbd|siQYaGQH;jJ z2U;k8d{X_L^!AD8af3(ab&{%PJf{0rTI8|s7AVHD8U=@@jj}NBr}lBUAeI#dOY~Qi z=p2XxV=?WbS!Yr4q42`FBVs9{utlS=!RxMv1`&VVk1GOt!T_od!x}(?a8M6~DI%FF zOIuYK&GlHHk}{qA{w_aG1oWf<)M5suIjMiZfJ}9;MG4WT+->`zp1bp-zbGPqM=@$O zl(I`9@XXwFoCxPB1E+T_N^=guf#H~TYOLbq+lF~@bi?x$p`T-r!_kyk3LT&LxH(P) zv(kX+cO9iU30XM|hOzCAVjHTUZa?hj@1V?5NPPZE@-h)jfdSM1SxR#b!-2u5RBIX8 zc721J)_hh#5t-``72SsNN}S%{c-G2BT6(XL-}6D)`RA+SD~QC?bawi;rAC_O%8B zfdM^h0Nrtt0g;!00jX4JIqvDuYBs%so7OzAog!SEMR43sqU=(*5cA(OoJc;a44iw; zQJRw`0yCT{Wa5<*92Qktj@=DmH?8?}K1JO^t{zlqlM4R&7kMO<=M0oxV=3QGx=VRc zBRehI<*_?k&roVLVQaQ#ts`Z6<@w*M;Y2{I4WNBbQ=0P{92k(w<|fJIv-{b`SAXx8 zKoPk^!KzY~GD~5D|6}r85X|!i%msZV5Ovy=!{mCiX4O0P z^%JfL<^==hpQe<`2H%y#`0UT}NA>Sd5mH%;wcX$8D4KR8vDXtEW{m;!FAWK3&M`PJ z7?mo(Z`V<~s^`WF6d{vbxvUMMIBK&VgOe12a=9q@T+GW8^WLC{ z>@`7*Lu6s*$9o_r2J@l;6Rq0;$w*-^re0@@s(E^*%b(}Pj6<8%#!zUq@;R!2;o#6@ z!^H78k$7GzMiiiQCmEi~#WO40Tdo6RcH=78m!CYxFC(r&44RX;mV$F8{=^*^OshGl zBV97|3;xrwZGP~&;tO(M_@@@zlwWIBEI0D+XpYiD=bQc*7zRiGTQF5}FighUZ~EQm z?@h!E4iGwi-XDDBlz`xzg#&x#vboZaZeYQ&Yd*g!@1(!B13Y|3hFgmXZ`nT-_XI0HQ{>B}3IaW+13i??X(EOaKL5L*OY$YD1Q z10usYDB;{HaO4?j{g9*wtI`>ai5g0f0>3tBLlLhWeUd7BM26hGt|qNT68cC&nu8Q3 zA$dkxKk)#~I?{~fQtmR#0@~as`d*62-aeGKe36*};Ws{oYohsBqM3^nMkCLT?k65# znPzO7&zqIyPEW??lS-;#%TTZMdN7hA+)OWF!UlQ7SjauoWDzb1>W~CA4=L)QJosk2 znsP@~i6X5329VV2Iuh3G-1iw-Gz9gD1T|kk$%BCXkfaBz<<38KfH%wQ8-PKXywcxh zwk)g753W8(5ifr;s?+x(Q#-nLuZ3&E`c%TY4Jk}ks#KyvTODIBGlYn)- zz#4GH!8DF_Si)K$u;f{H{lo(-*Q?~In0A-vcjfriwN15<)60&DEHxiH@O@m9sEk?q zJkfbOE|{oPYQE&D>7{Ko%LOm+VZCJi%ZpVZCAQ-p%X8PuqjzwcBa(y`3L2G~4+fB` z#%a@ke_p=kUOw6nMM z*TTjhLq=H$OBq0Aif}%ca7e|o5+{$S_hbK?4pwzu@>I4$(PqQ+zw_V!O%V-KeN2KP z6P$%PGvcY95YHD9&z(qNJZj6_D0g0-Yl^$ScZN-<&D|%jqX<_n`lXG~;_Bhtbr*)> zilDxfpzcBngHo%($Es^@16$%Qr-<1p!05J^Q)#}B7q917$0V$~1(wpPl<)JGUZ!YS z-4!*g^;ppr?P_aU&kQ(p{t!6*H^wJvQCHo8SZw_>L-y}d*;!GU}+Y0nYm3xd}DWcDp zg$0T#21WyCuir%x_2*Gd^Jj~nuQjx=FRqE`Zi7fCc9M6F5y^#3{C~Vyt3=*3SLwoL zSwKZiUY?5YX&;1e;MpN0J>2s7f4}02a26XlbN{4NCt6`0N7mbvt_Q0)*jFRh<+nTg zd()cP_fmx3?gYKf+-j7c$isJT!HIb8F?d!`*H&{Z-jH?qJoWS>ea%kvzu03rR}h`L>Ve~&XqiEz6FW&WgobEluKmwv zHu%7S`M3@^>w4omW^W6k7ZWxN;6(QuM3X+Ebms#&Fe2GmN9lU7TH;1QM&o=Q`-@x( zGXrxeVt(WTjQ+M48A|-5J*hG(cFPT<>5oym^FbUKlFD`!#moKvoNgcf^N7VoCge?S9VgOlQf{96jn zBK(QZIjD(Cm5U~FvCn3QDefG%&ts`ll+I+~l0FkC;_nj?T_XMUusxUHdK3Jf#dcfK zQ=PBlT(PqHpg_O9+#^&9!U3M{a|6d#od~XOk3=ip;5GhSt!A&r=&`Xv^i=6W6bsLe zj-s+<%=PBFbGq2A;xNHT>a8&l4bG><<849d^SYlc555i84-k@on zVPWdwWT9sVu88PqgJ=@@0kqiWIE02sfiV`i=GyacuUCgR4XUe6Tgowo-@Co~2~I@x zj6t-l9;L;$z=07dtwGrBtMtHIg$;gb>je|QofI)EcPln>y+GNeuyy>p8*n0=XAK;d zq{SxS%y3L+wOh4bd|p=I>{>8E?_k4QHEk@Z0TzC&*APP@3}}@E)DkHSNM&Cpmjl_f zVuC#JlQnHZ(EC*XwUezl&vOQk&KrBF;89xMFt?!e)Pf4jTj^PR0ngoux`7$l5fy{n zO)UIlF%(SdjyK6!M`~QBWsK zN2SetZN59-u5dQL`N{PZVGz8mX$`NS+)}vtvK2`<5zShIrmdUOV%y=MTsZnxlXlBm zy*Um{8QqVaZZ-n~eoj3k{5q=|t_bJFAP!H9ZI27(IJES@n{5*(@X6vYpbfSogYyw# z?&#shFQ09OE5donz|nDIFGC8$QR&j~*)3>=MQ_Zdh=PU~%W65n96Y-1ZjQ3fK$$w9 z(qhR6%1~6=p*}ZlCFk~)nqOqO*)cX&2~UMGU{!;1-SgSokK;tbS#J={PouP0G*CK` zJRgVB^AdgA0QCp8<8}JCqnp zcQG-kRMvpX%eU*V*&P1R1-$}=7hp0kRSg#UXFfX%7liY&fwS^=N{sD<1H)12NW)@L z+bz!ryZ*tT;V5MBE=?P~i!w{$iVeFHaUz&k44Cx^los0=2L_|E^xa|%Q1XfMo zOA)(z{;6pTR#R>%{4viTj}y_nYS6GGEw&5J>PuQiTCXm)-3Epi1g%ai>vdA5*G}mL zJcjd{ghTcZ!%;cQ!Jt6{#@P+i#w0<=xw-mnohrWK!Xf_!%Bd(^j*d91A8kIfMyeUd{!HS=Lm2SUP z9gNYL?I4en4Yq7m>P+!pCSu-m+``u>p=@e`?t)5T9Y61ptJ^>)p1W^(D7(y`Fox)e;E zH-`$u!^%0Al){)ni33LsvdS{1U0SAie9`PiPKx+Xmya%!PG-<}# zh;%Y5QKpX1Lujx}LrIp=`Pno=)iKwfX;PBvq5#pW+>Y+DX-P^rfV;x=Y+_-Y7FEV7 zUi_H{M}?UcchZ?>^`hT<70r>CnU$I}(_iep*L%Hac0CM_xq4$4m3nyUB%nS0>!A*~ z2Z+&2Uexe{icjfIIEcI0dzTjxP`30CcC@1RuD>^WKNM1Ou=UW)j%hAmsyC-&URJ6- ztoU(7v*X9XLhhnzV|L^D(7TT3Tv@B2gBjLK64pn!t3m~370c!Gxn^eM4VF{QdAVhvsvj zEe4PdobV~`Vg<>p@vsU6$yi}2Q;Ef|L~Y0HiqRJ|?QSwbSZyEs+lPZV%NquZPMUC7 zu*9s_|5Db`DoaKNx?0#v(a>V$v>{Y4nj>#$!Y-m-e1^R7dVw;gv|eC+UAiSJr1Wbl z414A!iun6L#H&R5sptP(!T_U}Y?EI85!}TJl4;HOBJ?$*?9%iuO4GZr)%(F#C;OaA z)6+jp={uDJZI^(K3Lw)a(JBxVPO-vdOM~@U`bZ%nu<+&^97l#(h?w7M2FH3+!ulMy zFgcmIz``tI=~ULnVR>eQr$X;HjVa;}mmt;_2@$<-y@}K8FlcnzgfDOxqcQsgPNis4 z(Dlgkz;3ZXRd&&P07dTst;(`}T8;TXBEOSCv*y3-VXxs#*4TQfb^lUOU1FxlELvk( zF4AKuS?H@MDu0`MI>RVpEHekHLN~gR^?HHL=$0|I|4D4e1e>YEEV7Nn;z5@$F>8uD zmF+%Ori$(p^BpG6eTSU&Wx2xvc_}v}e1#;gqN#|fG+jm|+N$@>e;rzgh)nfEoQ}xC z#MGP6$pu~XlAT6P(bE!+<4hQuseb-4^!mAs*B)4Y=yQq~E_z9G)O%0QvZm!7JJ6m3 zy)6NKEr85M_QEUzjY_mq-%U}pMaUpIwpi$~{Mvsx$}S1z1a4unF`Ker9i=iVtSlsF z?8*Ql{B~n73f7SmX-{V?hn>l)`OC$sIYUl3DUi(EkQLkedJPpF%26(SoXqN=p2)5^ z8-=aTa(pYHs`&fHtA9rih2gwn;KZ{DG6~-Z9J5g{%Qz!lmWK4oY+mZUgUu6@)e5+_d|BC6`P zdANuo{yrEH#+V+4ZTRh41{=NP9jVcQ(?c&>rUt>W|1SnX;oeU^qlkIh8=%^n3!s%h zJn!Z}?-m1MzzL@XkZCJw5hy4ptBagPmc`jXD%rhBJh~ZPN)*WGCGQzXZSSN1m+%t~ z6>I8BBdO8=LG!IP`kg(|uhGMGt6yjYG-`x485*GNla!k9GY$;RY_#911{lNUnK3`6 z6+5oXhBZD7{kAk%2y->}UPi7b0KusoG>NcaT_A@a+P89l^K?`GrTMK@3c!BVvLYX!l%FTHTdI1*8sJ}@eZ zo|`8{v7Hj8y<|q3K0w+~Jo|6&TPS3Fub=WLiBe0zopx z%8?==p&f~U{i%ob?e6c*nf6LdzX>K&1#OXOEauF6^8B7OOA5MdF`){@*Tt;tr?A%v zl_pl>-GAQ+(Xkr8S*r2p1d>W`Mn1kunyE-on_vFDIYsPq@Fy&3km(`ymBkn#WK;o( z>b#&*X`Nk%=}MM0GqNZxaKPqHMLia+hl_9)Yy;}@u<*zC4UXZ0W-7c+x}f;DO>7^e zF#TZGf3rH%l!pDSG&5zv>>Bh$01@+HwrJWE%x2WX?pM~q&|xrJ3>Y0Y_G+Xs7_&}} zWteOg8v_(BX>=n+7|V^|2pr3Cw1^*nxs~(0Vel-wj?!b{j?;O}dlTWrLvRc>e3W=7%;{B) zOlM+x(_p$jlG4~ZFUDln5LJ$;%q?%Dnn9bMy&@aVNR@=eZe{qo3malxp}8luWjvDvdWb+@tPA#4YR;BFV_lUL4s3)dv4w+tekI2K+xok(dz z1RKaEjIj}9L~ZoCR|uFR>&DOFFgp#Hj6;;pKF_RPJb+QL5u_m=$9VK3Y6zlL?r_)+ zOgwKJM7g&xq9HgkBBf0$h^E>9#_xqsRs|3-+BRR)+CNA6rEnqj*sC~Eaoc6^DL$$36c?+%`dPjqP+YZSH3bD2mCY<`zW^* z+GVUGSrE;8K^jNL9+Vafqe7=qS>PB=y2oo1DDdXzcTZ1OrP78uAo_+)%u+PA~YOyc8w#HV+wb-+4KTVROt2@L`S}$ zwAjCJP_7jGUY92$Lz#}N5)GUT$}WYpgU>#&$nTx%wlo>6 zEN{>0CKCdPP;nsXxSeuKq4#aMWZw|Y0fXk(rj!=@4-Sk*Y5gG@&n(;StJ{_)2N1C) z5?!^{v%nnND_=ra^s>)bC zHdsc&&f}jBR9|@%?5VuzbJsqK&}>`K2U<J>kQ?W!pd)-pn5_)p9FbW3V4Wx@u=+2Varkbwn5;h^KOdR zvg^2}E$hg0tZj=)&*M0sN;u&HN2Pdl9NSCS4?Y*J?=Mgt73WgQDGS>NFM`*UiRZAy z6M+;a9+kQpJW9&jlMi|Vh{z!(98_WUGZ9@s($j?leP#gZz;RUskVlwKqE1tYO^5?{JZZGitr9kf`7-yXmFU_qduuRlF;V{ z(8y;fJuV6d24pruY}I){64HG>yb%qoc{kEDS#(*-hsX7L|^{}?VB;oG;(m=UwKc&W1$AO`!R0h*s_BR&D zU0f%C2z%{QSfXT&v9Pn{w@=}M#)}3{cJf76yMVyG|D}!f0bNs~BL<-|k+4M}$RI+o|<`0e^q6l38ZQW=G!BA+i z{wD~H0UbAhPTWIjaZrUikV;c$M!HXdsncZD6zr8S1@kE&o4f9%>{96cQv~T{lF!!$ z4olMF;9m#uPL-d^^Yyg{ZPDnT;H|5o5mPdtCComx~h9WZ9 z0G)-PZ7|`!D+{&oyOI%aFnDy{`acRDm8H#vy&XKZ8`8cnRKa|gb(+=;>N<5YGRnf1 z7d&k_PPTz_^Jz+~PX-SYk4l^YUhh;7xeUsgT>TuDS3QT0a~R7OE?7RxIn@82Wszl) z46};%<0vTSIc5DhEgyR$Sy}>HdXB`Vv+lMO@fJ}Zs(Qq)#7(F=8gxG({-~i(P<)b6 z{qJxW<1tggVFL@q!^$~RC&Ji~Jf(7r!%G7h-(U_#6}C6!mtUQIn8NCRy(qy{w zQl`3X4;2KzkVz(e{a|ssJUa|u&Sk~zCxfRIk!bZ#hJuH7qsevI9XTvk+F<-g{zUnu zked+sI_LS>;OTn}rPV)y11oJR^{Gg)moImU4WO_A1>#}l zoJ+Qp!$y}ZM-`%!ermDLkdTY-CXpVOexU$RNO zvTpzpy7E@+I067oS=fK!j&?F6L&z z<)w#Dnw-3jvlvrqIct4*$#oW$eW*M(kGrIzifU$2=N3gZoKF!r@R+t|4KxAuxas@@ z9H&^1eHj@dTK$7KFwv;=txk8Rruw|ob%%bL3Tt-b_SmNJvWsr>&^jWUETiaODeV@{ z$j&OJrYyhpz`!3D6-{UaPeE7@xEg;&?pT;`xDdwqJrfXblq5eMnm2YTR@jDNzFtf#f1Ka-Fdgn8rb7GfOcnzy; zhOc_Hcy!xye`er)Pei<_^zx8)wZR5=pbeWT!&*#eVup&HMswp?#}SHn;?0P;^k@n)qzaiZx(@=7K2VM zvlPM1#U2b7Z+1~*86vYQ&o#r&3lB72_aQ}?UFcxcu0}7L!n0kL6rl8^BBm94;ViBG zyEs)`g03!Lcb9(%NeSBY<>5amqRBwB9s~Pb55KONyMhCy8$dd6eHb-5kl8xXFsnfB z8ENiZKX#V1v|#~MlQg6=aNYvlHm-%&-U~Le9^N@!^bluq8%)j6kw-5OEsT05Rx4=! zy5*)_W?IlLFmORT*!r{3pAC-PHeWk;9%srhn8vf20`+$ZCR6j+qMS0Zl}wg>p0BSw z7eGWu7LLLeXxsJBrr#0jzfeV*V({E|7p2yJ8wceT2^xW1({>A8;lQsuW8xi(Q7sg> z&OufDM61ijbD&HE=oM5r0PPe&X3Kc3RwT6Q!6H|tI_?v*AKrF!z#S1+E{3oe(F&z;);00 zhNT@4@!#VX#$@Vh&n(a%RqnB*R#xe1heJ+d^_YHp#edx&<0y?J6cV9w6#IVClRX9p z5MkqXLkqc(Fev;mW%&+_3pPXSL)k7qRiI%_+@O~36D3;@3ub?wQAp+1BmD;euJrwcL<)H-=2hA zn0!`9Jfr}ae9VkTtMbXi7Av+#*7yB8p=j1`@Ca4+qe1B+XzsY9HRcC1n(YRSPTP>| zH%4P-+gqiX?(*eey_($yB`{&ql@wu_Ey3KtzXi~%-?SLQfl!S^^_fyg=?$XT}y&u~zufxU&>tI-@gNYn0%LUe;}`7TIbU;{68C!q+IhQES0t=A5v~lai8= z@6Y$SEq_>|v{6=6>$f8Q9obHrHuH=?8a~XwnIjcjs=u5iH)4G|FH()ayBATDAS+^W>#@i#sMN9AGb9kP81kdo_$ln1hbBs2>w4mlT#Qp1Mhk zoQ{`29Zqmj*Y&hUZk!pEyt7TTehb~OrXYA-_C?92QfG1JO!N3kZ}D%LYIEY-0xVpMXCw@U?YWM)aXv1KF@6h-(a`eQd3Y7JR9+~W#? z^o@j+hFjDld9nPdi;NW2tXOr3)N@z-DD{>%y?HF0BK{j%4@ZHxdB>OCX0z%QIlYNg z=~HnRLsF^4k_U|$HSC(PB}HVJC(x|NQHtmcynu=5`vlLpHtm*aQCE&fEVi6W=WT>O zwa%l`5XhUEjU5xRY_BEWddmrYU%y7Mi9NxFbLH{ajvVM)LqJV)3AoYBPyprQYfRkm zET?1n4LX)ECQ*{Avo~w5nBQTUWaX$fS4bi{wh`ZUATd9nRYH;E}#dQgb0>)fZw5_bBRp|``n1Dm*iHLcl2C*l59;|vgSn;7zntbjgGQ%q{CFs61`imWJkoB9QuW`10Yvm#(0l0$ zXNDebdt}N2o#x-#1`XT5TWd^aDU*$C$B6%rH?yt4_(z#nB{jg%{NX2G4>#2={jii~k(kc>pD|6E%?~G-IQ25)KuP7p~u+Fr8 zdY(0Hb*rbkYBjZ9h`kLV>8Z`f;>?63?@NA0JODy^I(S|7MM)v0q~zkO&{D1vcJ zFP4Q`f8SFVul_5<EtjXwPk!~DIo+S;Vd;U_MG3z+NvKF=&-my~xXLkLgCpnJPuWUX#6gavcsbuqF2M1PJ zWOIRY{hW?#IF8h(Y)-uZCLMXndF7>(4M&Den82me4(J<)H9~RA21`kI7cXlYrjjsue-u9NxH_^L!`qj1W9>LurR64Kt9Yl-_I0a&g-{ zEV(r#gn@}#jbP366h!UUy#E9z`d%U$E{If02>oO1j%ZsOe9&l1AtLI-t?-?#7CeOm zXGCxwtV%8EJ8M2n@TgR7c{6kTu2NrNvn(D~fd;&Y`hDp@O?!E=z$RvcsA`5JNEuA9FOEmk{PKw{ZBXjSM z94J8oLLE{MG$@BuvCppN3N*Q_IYkt=Cdg&5t(@01<#`U&QUV$vfJ`-)MF|b^`MmaV z_N{#{fQV^ib205IPRQq~XYcre<6J7?^cOg$O{GPgA?_Tv&!yLMJDr-q)~y35LO>u2 zgZEVrU;q156ensW5haF#Xc(p)6Oip9_r7~m01=LH)T4YVOf00`|CN&ywU&tb;TEP8 zOf|7Z8I5x1<+-Mm@{LkjlojEQf6+aE{FhoIW-OI8ffL-xWBo{x$A?j?+=X zxkBK`;{(OI1s2QPb@F6c>om`v^cHn)-TYQzAMPN}^Kxyjqvh>nFAc5MgS6 zgfEsoC5WnrCC=bPyCfpg?o7+cqaKwnaj9s8dUT`a$gYqM-*gMMt{tsub$`&bK0#N( z4c)qZ!;yANNPyRoR9Zg+GHDd2)c!8kMYM0nA9@$>5-9AUzY7s9?*HvGoacRs=b+$G zspE#0vBtqV&enUE1rYJR`@>a$u~0pws;~bE14hS66Sx^>r9F?_E^xbwWIN??qP5X( zw!tJ-Jxu>KrXB}7B!TV2J<1itE&1MDpGSp)IDPC1y+YM_7~57h6iCYx_hfUVw@V|n zf~l?^DTOU}bfu@;^}Pj}PufiphALEejZX#A=9=^S!1qSuqEjjR#b@C+?9SpSyl;th8^4~H`;V&JsDMC0q;WD^Husk-|KbW)3 zkyvQX2V*g{q%E@K;q!O49Xd0&HTsVHG1D|{V5UIY-C@ppjJ`lGaX5~zGKB3aW_o+#7p%Du&AJqmQ*aFQZ49onC;#)9U2tFQOzH21_x zG*bkP+y+&iCdWP9F3UU4j#wFiu2}SCa86-3OAinE4tP0Byu^|rSX8PxZ(bL7Htj$| zD7$`N(*xsDTD%K0zGSAwl?Ft}bMt6~> zjkrf(9C>ugNG*EF9K^Y$+suS?hJ}OaH0VzX#KX!tmo(38&*&x$9YsUu5I6ms-O2D`$Z2``-DDECV!69tNChsz?$*lPxi7?ftol67X?i94(-=) zm~j%!1OX%aUCxLHSoU?%=Iyk@etE6P>_+D>(d-=RLVqnL>J|KssZrH(FUzE^q$pDg z{9Whg(}VEgl)UuxR6FfQQPmOD!QGCne3oG4;Slyz94_fL_*OVg(-GaJYedUExIu3e z*Ngkbxmf#gra=6$oO8+cLy@NQwozn284}P3xU1qu#3E4X zFJ@J!cuO}TMOFS-q}PZlld-I9wm=DNA8;Q>nIfTJs6t0EHL5J5cvEk-sjLG3y*yc8 z30rjxn#AV>&9Qz3b2v?=M1%QgI*sZ0on;!IJFWDG>MJXqkKrRuf^?{rV4?kY_dLjX zJQB~lxJ7x*Nl(qgnx)booU;y8cW`fA71V15%`%MhXwUud`x6}KW(nw>&;YTe*S1@f zx&vDQ=uN1C0*szy37}p3Juh&esS*&zT0&9c#4crJ_R?8{(!Q$Rpg=`c)S$rHN4{A( zVmj2cK?$p{cF=nf4GOIgx7D6#J)cJ{{~tY53Nh8P@ZPhHoz(O@TE2~Q#kJz+0_lMz z{}7t?q(|;udLasfi!|~E@ss`6*1H5S1e7BI?ZjQmfk-qduB=ku$+2F|sa0XMqWUR} z{5~Lns?~V^IS%BNfG}N72a?xX7Hjb>N=OIF!^ZH*^l)hK zgA+Jbu7tHiV42SAs|* z1Eb68bWD8>8q&4#&rWXn>9d_q-W@bEG^8 ziKdb;B-5!cl_`3v%z3D-`dpvv zT&*sr%9p6#5LC*wANFcWNz3xu9;Y;lU>F1y6=3BLhpt^}k*Pz%nkHdw5m?HLAijW> zl7kUt6*|4gqL-0RjJ|45A+pe9^m7|H)pUvKb=<-#mOQFwQ&-&V_2k$k(t1*N8#+4t z1T^{p4x}}hwA;&xW=KRuAtTDdcYEv;t>yMnKa8)uCy4GEex?>Dnkf-c`3#MW6s&?S z(t5tgWdzSnoyP=G|EN_zbD~)i(PlxUyoI_Y-<_|dB6+^s0Rt9VFa8OEG_PmjZjLlt zLMjXy61v|xw6}(>jz*Q1DUcG7s>6G8)%5~t=a^lWawO>+AT2iuB;~e|Ka;j?w#(Gx z&ZS^NBU%Mx0kzu*rk{TpyOenvW1>ExdQ*J1Nz09bN&c?M8SwziF3|M+?ChB->YxAy zl~)^06M1Y|Sl4O$P!9E}1hoOTFa;4Kc^K6|VUJe`tL)x*w9SWQdX zCxEnuU$p1-{a>lRlfQ_`N2Lo_gVvg9Jw8fPex+C&vNX;gMz1r zM;5f0rbAV$DnXIzVo*dYA(C*Xb~cs8ffL3%{Y&C$93=F6IvM5 zim6sh0$L}4WN&=sfpVu#xwx+jU)*5ZODvE2YbPjE-)P1AozWwNHfA%J(p|pko*X+G zxv0nOM<~Mk(F5*+paT2govE!*<2NF1l4?8+hcYPB@$}OLlwXrjQX^ZQ=1}^{28u@G zA1;ypde|N~M;Qvf%~Z-@p~|Big-s18r#X+rr#fq1baPHF0mXZ@l_)@1NMWz^+~&ui z;Mb_MDC%u`i&q{|C2BifImI`nSN?){<)+Qw*9GEX<(x~F9+x}UWxxB_12~AlX^By^ zJH;UV;v*5ICxawch^Sj$y{$<$d^876GiG#&c|*>)`jYm#FOUVoaPI=T6;M$~1R& zewKorX;}I5eD@ZNlSXh~oE1=={(c&ZN|_3ON78vu3n){!rp5Bd_B=_^m-eY?l){fg zOTg~e!?tmc9pgmrN<;;?hiM6wH7XT*?7^$)D&tdhmD3Zf@YR9WqJx`5Y5%-*X&9$^ zPoi2Ws7xJ!7Uje~^r@_QVn~f4r0Wj}q^%bg%;QM%qVuN&l2SqC)0gNf_=4%|#?|18 zK_#J?cBmK?O^kRFckqc3RdH!<{8wxs&?AKHHo)ae_1d)iZ_7v3&&NYy?r8hy=@ibn zcXk8a=ZIfOPS_`K1FIx*AF`N&K2<;uG6^LuH&s*Zf-R0lZi^W4`_muuHRC{ENU?H^QzMxi~eL9J;{okr8{ z-ahmh&hxdz^N8RvT^L}MC)e(J4a1IhzN%?cNcpm`^QE`ua+VVk%fq;Zl{C}#(K?IU zg&j}RY`evR#jP1Kde={!NSpll^`kk`NeSs8fn?gD&w zA(+B{?%RhmeIqeFD40ym&B`zhb!RCkc$}!_8GKI{y#qbedf_wCl71@@(L^^^@Jzcp z7KwDLK(&}!Agl45NxRbV`yei+?**m2mWlG#-s^;_`$0lk77~;pAwqfnp9LMbRDP6D?h6Tu-TmE-0v7fGhL-h3%629ZAc_&9YEg{`2kmS+w%6Ae5 zcys(dZ&qSj8a8`nyKdX`5bz3A@06xx{;CTK^9r>t?{Ti5B(5cbOJ(PWb15)PIgn!! zI-UIlP}bAcPII82C7^o*km*E1t8I|i=N{}ucbYjp)M*FE$#GU-{W$9RJdSln!dfh_ zls2uv8iG}LnF{7n8x2tjqkHtUWsh^HUnHoz1(Zsodw}2e^!*@9*a7G~rpZW1pVk?9 zmb09dSnd)mDmz32Jub{oQCE*jc8D5uTD*|+{3`L#FcBkHDVu>=cIR>!?Ga-MxU?6APpzzzRml)BbvP3uUVZWgv3 z@xe>VJaB(VFt_0rR&!K(;0Q*cf-cdE>pSV3a3B0B(aaY#DtmE*)%6!Na*bYs$U>*; zRsP_D`Ab5Xhg+CnR4RbM-Yol*(v0RNs+*=IjN>%gTQ9C&&vE{iaOMgem8O7>qpqYm zwqWe0vEX_BK<*8k=O2k@j^I&RZ_xKqM^n-mh|0O(=QRIHG`9*Gl`2iC$Bjl&HEhtK zhfnUQfwkdGrTr(t%*H*e=BVtx4ePJFrz)YNlVKR7>Pj3*CTQXe>hR$TP7^NCOcyjN^}$Gw?T?Zg#msR% zD*4|+G)w=>Si@l=B$#OeMx|&7MxAKFu0o%>t)R&so;01)RFP=j{QaRi>%AM|U4Rq(FDVW|Sh80Tagt||!+R2fkBqVeq^n#~SCya9EoYlq_w_-LR>3+q$;IlqHyymNs>M zsj3q&TL;~2Jv5D6%Ex_c)R9o83KW%2&};KOX;a||wYz(@A)K~5u%*K9f~fGWv3t01 zq9r17VX*?IoG97;PU!}bHXQj(3KH#!dz%y0m54loNM)C2j6!Fd1D(&X7J}tK%hZ24 zON_)qom%D60gE@^hp}H}Rsr+51*an(xH9H)PUMt`rU)XHR>9abeNRs{HfYJws?|>( zprs?^Hi(sIG6apvvNkqHVM|KoEI8pvYd#L&@MA1-5(`a&S6q-Sr>ZM!wI9dS zf=J|*g|n0Io5_hTk%-c93nNlm)@VFlUCn8LJjUoOn)Y>z?>^u(^&}cv_QPmYHlxW3 zrdNx}5?^4l#4iG6-|n{`<0$ndlvIJD(tRj;qsn9xb+x87Xexk`&*by*sv7YUkV^om z?2C>|9Gg5y?dWJp)po{NtqPY>0|{xeKvJpN#;I5f$IDyPH=5S;T_K)-n?+s5SsF?# zDS}0%LkBGB-suVyn;&~B?8J;PsH?gs1<%PH0~Ua1JK_h@N~B2_#q)K6cvv}S*dYi9 zcxqZkc82v4QeU1gZOqs~1NlQVm~4F2ulP$7%pn@wzSlpymvf#y63pJ;G=YRYDFK7u5+Isk54%9*dB9|ZoibaD`GDHXe8DzxN@tULE0FklB{&@m6F%wmSM0O4CVr20O$wp!G4)1igZ)#r3SbSI_D_CjNl*BLy zuF7eFcXsZ<>o{IZ32(H(Gu3St1vkchOTNeFR_C6nwhEgo0!k0frwqnEcT8TFN>7E+49?hA zVjPBB7^7*OvB)?YA1q6A<+_7)#-?r)SkFLocXBE%dvQ8C%B(E5ld#A|pd3r+Hq}`0 z+Exip=;-$8mvE;uto9PtkWgSr8cvb4;DCuJ5YoDHS8or;x=g|vEU-*_%oYpbbz?>< z7F3lB_=sC?LDao()DBM6K_VI?h)j(li$vqxsVV(oJmk53K{Aup=f&{FPGjw8F;Mzo7y(t70`oBLWtX<>NjiJ zkf5G^_L1{na-dEUP=Dl-0h!vO7J+EBF80QA`|?s?0DpOq7k16f1n=L z*Ia@?j zRjQo)Y`0I<9&B7xk-adLHQ2O%f79<+g5e>p3l)-PILz@d6bP%v>X!ossy46jMe^I~^Rw_=qM z@gBw%X)P5Cch+ColVkOiu&%@{OwXIHg0YB|IV#J=>*tDG~!z(1LD+HEPp)yRy*1{Wax zqMbIm&Zr4_bqQ+1gdFkWz#fo8>*6ZxXwXiQ`lZ&=qdm^hL@}-E5 ztZn;sLd0CS>2t8M0{#>|q{ZKqi*j`(;#Jb??}2+*buqPHzb)X;D(@6J`;`GjwnIgk zFMj;|?&UQ(P#+1XJMLmYrY);Qpi$mgo~$gFDi86rB3(=vBB~a2T`&JQaRjHjTB5>0 zl1^nh>Bu5g61j(yvRpX|=2vqh+RdcKHX*3S1^;3X16K0-N=RhcGC`RtYKurg&xs;m zKF5mek0ETQz}j}>okbk0pM=#V6j{v2!lV^v z*8W(ORuGF^C~74ZejX|?nAPKpA34U+`b%h?1e)n`AB$)-Ls6NVwHkDKPxkgnP%-1Z zWUZ1uA0WY8E?`v33DZHc(#Lr)mI=p@5;;wXh=dM|g#Pnk>&IUSi$a^&)`PW}IR_Ar zltyb!^^d&-Q!lwiImu`#UD8rgTzM%pvQ(zo&?n{uhF~yeNz*JYV$woKz@2$V?QP#DYR!2}(twoN=nR;{I`UAjt;^}Z!% zG$$J(k+m0OruD`m8I}Zla{S)B%oOMfuVg2qJcf=_c684TCygyqlnbrG;5!3@+A65j)r^7GhW~rUJJW8Ql}p5ud(e^=+60NO!T~ zsZxk#0#cF9Rxk~McLg0Vh{7=2Ne_Q+i95p?hf9oY1f!`%XiGO9hi@H_Iv$OhLtpgZjfQYw1FQY54K(4IF8- zgoJiN7n7;u$SM*!jz(jmFyEk|;oYbBuO zxT|7)W)Vn;Cs>|r%84&bx$AGuQSgGmdbGwvn4nU9JK{&uZ2D#b%XDtQ*9GEX<(x~( zDchCCS3M}0g3e~sM^?qU2kPaqP`&w%XioI8MAQ_wFhQBFiL_3nV!H&f5GodXj07zp z|7C67;53IM8u)2-8dKeDoyMD|YyrotbI{9G(UXWy(Z!=_w_g6yS&sCHgw$9dnKq%; zk$imBw|#4eS0mb>IF4M!EJWYwqiqwY8ht7;!7kFpq>^bAMko>ov85@>n5umTpI)%H zuxeo1QqFW(VrnRuOnu50<&@-^G0K%Y4y)O7)qG%&tx%~w8Y5-2dW(fWvY#yERG&#y z4R8xn52g*1MXKB^?Bs>jA1cJe^c}vYrL}m8^Jssasd@_sIwAql+II$|vgl2N+Y7T? zT}n3k6x9iXl<{yN>0#hi+s<>QqY_hn!K6~_ReH6t$g(&W`3kq;!;a8;4WH7q6qG$Z z)buAk2_GJ&gwM$-jnp~@_b@S;`dh7*J5RRN@6m|NigQt)*g+JLyAx33`^4YBSoRjzyJOfX{~<7RXKI(jJQd2Yt>0YDQDv}5U;g>4Xqp()#}d;|xQj6v0|Vm!Ri4T3@>OCfwfJ3eE}HS;w-hls z3SN+GG7MPQaP`a&InS38&uQGkcx3y|29FOWD@t6M{khqVFT)B$8e)A5(U0grEH}hO zBgvuXF&vjsWw^eL|LnM@!1QUxopc2UWU($nRI_4P!LUN<;7A@cKDqeLv74{W*i$s? zj{yE#O~hb1&aAg&IR5inn&X!mrC)elu(Hc`fboNl!v)4a%DgIBDN@oh-Dy*&VQ!?y zOM9)B^Wr<;#dpNxb|TWtH+@xcx{hUqgWg63FTTPY;}O9?b2)vU)H1W##~ELQhs~gZUJ(_Hn4DUG{*; z!sZb_AI0_CC@a#|RB`Co=mlSH7{vd_+c{ET{G-gPl4Ye7RLO?nqUwMj&M5Ii8(aVR zF-81)Eh4EC7M}WW#d=&2SFvrXbndt~q?DsX_5V#rt6XGX!RPFs;jf@r?ZU$=E>@S| zE?%tY{i!Tg{re{sUrT;b@4UF)Dcmr-1w{6?$9p@>XwhX3vl@$=`Zg^j^A zF%{c_N@tD>8n*JDGvfcF99d)(<0oJTT|~8jWf7`s;mvbpU$ly?qB-(1vr>y!i=r!!zFjoC(GtAw49p;+ zmzfIjKV5zH_{X*C5qBUiD*f6UQ8UP1yFA?(DLgnV+TPcUP0a3?#y%6>F)ypUX08F6 zIqE;}MXXpKp?@S^d~IB+)JME{U@CE%UteVIaLmVVR9x~Qvb<#P%&~Mch1Z6S+euOX z7abc<(zLEguG?1pjeqP#EpA&{1aX%krQ(u*q5!vQmf zjh}7|lX;yNIOA;~jnjORG)AT^ur@n<$0J@%q23~EBUKRq?i zpWa<$0a))*6#vGTLpo~O)Is5og-yWU2(5idG#Kzk>(`6DCj%R?3nmFE2MECmo7b53e4a(~~0J6WZ%AynFf(XZ4&$dw0&q9S2aB`jmX{Vcp{T zA*EvF`&|KUGYchazFw9(q~Nx-}jt~3zAVkgGWz`8-O#DkxHHl zD?IgU(cnA6webB#$bm!8P1(ozLj0Xqcz73-R`_Ar*iDJPE&+#ul}caQ0kZLz=2ue0 z%S0WFAVZynpKoY=zZTJ`0P*S4?>>GLZej0Uo=m|1JKb<&f$@(ruS!<>K{Na&V<8n* z{L)~B>s%cv!iIwL7+^YhJoUX8m^>CD{=aoFCMx);D$z|RMJRr_ zsMgjA6j6?rVH?bc#ot{otjgy=&l*52E~WJN4LC3$vo48MNsaPO^SH0`d$LN+@w+G) z6|eZk3LoSY4kf0C$WH6=$#+)xRvAc%uTyILYdA0@vmT>Wq%rV3jB=ORy+VaYrN`Kx zqbhoRWQ~|s`i50-2e0(iajCME$F!)lEVl~_sO?nwO~aROrHD?}OYmg{M+rNPdG-Mi zeu%iwc$N+y z`ShEp#zuDN=Sl?h+WYq(IjV%SmRQJ@%2>?o z#jr}T(7QHqi1H4I;|i_T3K;B~scLF*3U}~gR1KFZi&1v&^t_pQSe$M3=}FfEa1i3)(l5USO}}F=U!JhV|2y5Vy}qj>SCB31rkzZ%xY{AtB*#U&OAz);QdA-bhAk)shu!a44;B#>xnvM`m>8qW=7*}6y-ANFB<_bK{aQ|TSWt2 zOonAWQPUDho3ha7i(6jA1yKz!sK!yz)8Yo>z^Kf+6%LD3w5w~nCua&nDqEpB8^IKB zgdhJ1krc0~LW_f@5DJZ6MFmQ?!tCM^!I0+4%1Y0&{N_uT8jbf{S%?TbJQcmvuf?++ zLw@-c*B{}{Uu#qoJv9!BLVxpSy&uO91^Vsf9!r)d-R)tu$`^0BUyD0dND&fQhztfx zQI9V-k`shj#uzL*YaA5BMbr(8EEs`8<>2C}M7N?iRpGkSKPaLUb-^fYkN-#AdB8_e zy#IeM2@pC0xeG{%GzB3PDJs1RNRtkta7ix7K^m6?2v`uifE7DxR8YR4fV32`At+W5 zREmlX5fnQrVEcbQGrKpJglyQ`&F}U4&+9d_o14wuy!V-T=9y<^XN}vLwQFHboobw- zssoz^Z3Es0No8gXT9pv?qQ)*oqRN$Lk@RlR6pe#RhCV{9xN%&LtMuL;O3T^Ck>a;g znbuAj_!c8d)eDh!tq7ZMne!4(K0;-hsBXK=iy4Vyg?*yy`+RwMxoOFUk(k0=z;ohp zv{;o&zkXqJW6D$jMThMwurxzjC7!W3E2hv6ar61#4`W1=cnZ60 zbAf^g1FmVXA1CY(2dNHGGRKTTj*wK@HF)yBnOf}-S?la}?*+%MxSA1d9TKX>j$4GE zX4Xf?BWMOInpoIpP+?af5j3X0^<(C}FX{uoENC3>}(ISOl)xnrls&8O&HNk`y=H ztY?pCYkpfw-}EGm4Xs(dMp=y`INCGfDT#TStIJ)%&%bx0mlrG@N;mP?a|{+U`_L+j z5Q_lH3d}rX9a_+|BUZxn!;gQASaBCP7FX$YC>p0u+K0Y*!Vc+VwHk$L*R>5hyj47T zFRM&G3K}%3raf^XYyZd4L{m%O`j~OZ5!J}d9pXBUFEkCM`a!NurR{357v!W&sBT@~ z&XvuGMv;KWqh2wJ(5$m4GIi?^rHv$U44aS0Hmgilb*mvC6NMDCr}m)$6<4MSxT9S!%lCuJH<{GznQ~G03jBwIIxz^y+ga{3v{rwnD_Tkn~D^r^^2PnAfl9yK=u7>6k)@vZEbK)sH@6A zO+t>SPp0;V4Jd2&M;S{ocS}FmRQ(JVwEjhir{7=o&Nn*K)n%9_8%(Bd1{+M_Sc;)7 ze^dH$FC$ug3r%ao&Q63Y2TW*$6Sn-zRLhrnF;j4?td`&TY+AlF_;B}SfzF)9U`n=< zTYeWSjpPh1KMpNF4y}F@{0yrMij&{(y&dQKaqDN4sZg916t~{A<^Py(d|5fi@>+fu z2U>nZwETv+^AAC#1xFrh`wq)PSqSAV12qjf0?M@I+kkSsl_X_!Ki$T55t+;L@=9Ps((SKu?HTc{a+{D3H0MapajuF}nz zvsk`h$!E&3U%a2Mx3!|q#*DhGgdwx}{O=Ai!UcaCo1WZ+@`^CO%W~S22T-4q%Cr*n zJ7>}If65o%RDM!Yoh8EQfEiEkEIc`pkz$3Zw2Iys^JN`I6mmIk|F1>~R;`{%rz4qs zWtb9>BPx`srEifbeU_M9$g!%Q%O`3C+oTbFJ|di|H9Za|BuZ99k~k(2ITbe%t3;go z@nTiHb4Ya|qNBn`!hc#35h^5TT$k+h?JQn_i46hJ(n+|2LEE+ z#uqFw!_|{hhvGmPr7EBf=!*d4Ln44o4FiinSpi?NFW}2a#5Vl)q3WV3VSpTQH=5FM z7Mfvpjj?Q2gz_t>0jro7lZ-?_nL50zLWw7<$WxB9qLc2dIEY`bczl_Ht8~R&9j8t@ zEBxsx3F193R&-eDu^84SUR6A`<_xSNMRTZ?jWUYx-4#Q2ad^l<>lq3CG~O;Ck$^zsQ(4aM<+3&h;LwYdC2(r&MQ3Ia89B$MI?!1{K#>f2>S<3 z_jAQ>7(}6?u!6r{^f6*602S7#kwNtBO&|S%bJ}9VmElsKeqb$TCX$L9M}?L^DH&xX z`R3U-#LoZjC~SeFSU=Dnlh+9>FGGvk3;x1^JeMn;3rV8I%t9h~OdrX$$b$t#aF6*i z`1E$R+0e2Xtg+@O!6%3nH~KVORY}&^m|+9QJJRZ>q2*&_RdqNz#T!sw5w?90HwP!5 zKmr-6jmW&1bR2~QOg(zPBX

    8$&GR>wsemKa8f#7 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
      4TtjBcPqw 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

      JHTeC;iY&Y@ZssRl4 zQ+tusy!{&1H?)?xYJlZe%((*=(*IuKsu_dd8z28*XK45?FQG26NlEg6U=QCG7Vy^S3QDX!#9I-7K$W3|r8XPL z%`d@efo|#v%z-?%F!L-l-Jc6Zn6L> z80-XBiJ7o@lVQx2yo>-schTA=xj2NvchI)gKDv*7N119%3)wtwP1+4J*GmyTvMEK5 z8iN?feuYZfGamrBWBILPGF_U zB^M2dmryFnGgxIP(P*b&dVrjR6XO8!Ywim=i7U(|QYeOkD0* zfDs4fKO6^zuvo-L!8rmHBagJ`oSml{j74sit}J%VETKqh`qWl}U^u?4Yb~CIFpr0A zD^}KQX?IydEH>ek*7z3;Auu=(v9Wg)=qe<|vRcA2N_bx4FVu_Iu-MKr?oCc!aa^Pg zJH+Ju0(L8=F2sHUE98VkU;1&~Gv*0wA$W5f#X6+Jeoi@XGZbJWf;k07kT;HnS;OGM zs1%B9+2n}>E&&CC;+8a|_TA=o9r;053}R?Hw$_hedz@{NI!KGOhL2}AG;1KC$nrqIG%ga!twfr&mSOqqle7*7Z=}uxdz$ZUKlBJ(r2$L2Dc9UX>$u2wwOK|7C-zw~5QT4zg4a)%k{}AsMw&K*+M8yucSKQ&EqOy@+6jkfj7-upqo7 z%wE}dOl)e9R6Rk8cf19(r=Af=r6)=l$)rXT9}MnMf)=PEi^npqCh0FW?nKwx^7bHB|k7MNMQf}Qg9%4N?RtJ&Lp? zixlPZclfP^5FF>9d=V3=L~8ur&oHqxCFzjBQTL>5FUQ^id7o!;3^7Hxnx6B5eKY1F z1~i9NaPB1VAOy0;`9d%VPTdrPGdiQm{8aEn6hgwoI+7Jv0icvn5cr5G?3x~X>M+Ni z_V3;IQ91V1(bEpZVL5)xJ%&Sz&B6mkXOKD=^k|*VK7F)o?4%NBpIC4A&-($WUF&=V z=9ncG>REX=3^b{37b|xfitBg~JJ`E%R$iMx3DssEYHTxa)dfK$NHnAiB~?nCVL6W; zDz1;b!%oZ}P(MM5S6f^AxRmD!K5Hoq;jA7^4Bsos@-R5Y8SE4dV67wB_(1~hFkaG@{v9Pzq*FSBbEg2PVgNO;uHc$!~UVK z6o|p;e(fNhvCGNSNe}Vp^f`=EF!+`~Dn`0JFMFR=?5;DjR(hxtDgxtek zIOZMr|JZw%?zpZaUC^Vu76zX5w0m#_CaXY+2?C>Qo~;zGSm4npy;PS+!`CRsu+X zc?lq4WP&7$mw)39`j_>rC;dbE`@V?Sk8@5YK#4B9R#jbJk<7E7u_I!~Ye$UExC=ji z?&1Z`2v4!J=vN~XKy^AP?V>vJtP&Pt8etyfQx|fzS#^_K>RHePSWK&hm5AKLJ03%w z<1xyBatLBSCOR?f(Rd;HBDM<`8y9~%J%ybRONUVI+e%Nt@QrEG@cqpM8DU=ksK)j} zNvq&cQS7@X*rkXmp-$ zW^4Yqj+jwNm1;4LY|MI{f-c`s^Fjhs*n7>y#_=?ie1WFC1LitN z)&GD1NWdV*#X~T2C|@h;#>c1_cXPeD$4iF%u+0n|=Tma;+5CcUxQU8yMhN*u?vn;X z;Q#zaG`xGlL@4`^OeY5uXC;o1Ttz0NEuR`TfDH5wacb_8m)9L!Tay(p& zH<)K5&j%+IZ&Lqg&<-{Qwgw#&d4?3!Ea0!^RbY(gjzoBB9uF8wHH0M0vH12J(h*Zs zA*TS21Z6(RxS5)Vi3YHM^U2JzadOohjydB^bz-KQf*iY~lONrb zjlW}+ws?!d#`W#q2n!HYXDdQSah_r5;;fSJ=P;u5H>*Id4Hv^Dn4rr%D^ zW^)`23QN7jChRrSF+RBWTH*GTuS|=RtYV=V;PrePZ?Yx~Qs9_MhYRr+cNolxPzxsS z#{0+`1kv6jxyd`MWZ5oQyr|tqBi@qs;St%Lj?SdjJ)H7U6DQ{vTYxJj=5e%VF)qnV zF81Pfbd1lDF8A;ibUbscKriD%e7)s=g$Fc)f4N zSHSaB{WGtLa`xy5nN;_AJ&#Y&+Z6zrQ~)z30YLr~WbsE+S0M=GLJtPdJCinRFO_&U zHGP%8i;@Bj1t8OGO-x1gbvxpcJp5T?I%BeDyj6>v(V~;e4q@G1y?&gs7yWQTD7y=S zNK|%k19bn}r^cQ}c{njt5N>~aJU4wG>x~#)v$@%SK_zIF>E!x5yfJI8tFm|EMa|td z??9j69!8SZrRdS2<3-aHeT>#%e4ot%^0q$v@Q~pdH5oQ{?b9>Zg>mP2FYEO9OH>S&ez}Nb{Ij>6V-b<3xOr+ZYGBFa`{pjZ@|5y%1;u$}&o)ez zdV>nnvm4GJ#J?E_{sscsB0mm+z=>(|)Yt8|Er>D9n|zFJXAx4KSmaS%VZ0tJwvORL@|}hRO!<7dAz59_+?kCO7Tgpdk$1 zl)+nDr0F|bA3T%-+@zVEBGE4_D2ToRY%B~LdH5h{YY}dz%%J72bv1E{+GvpjW?b$^ zl+62g(A402dR3nnKUfFUvHn!7oQNJ8$VpF6#LUwnx z3Oi^(hU&M&w7ZsISLxE4RRrWPvx8Jtj!dT&k)6LHgBxrlc-x8+B}6)mvZkvHSYf4} z&j1XhT0lqiIbohm3Pv)B++N=hRnhf(cEi(l3PNN#z~Ao4bU>Xh6gCf7n-KVe+;cPx z5Zw0Pf|nV6plo(xK=z9PsAy;w`m&+@Vh!0lUluk5jG_=!HEsRbI->6B1j3x5aWRq6 zHSL&wdllcLdtwdx(`VK($5lahq1{jO*S{a1Fo(Zl(0Ld?y9|4yI= z)RgOdNDM#+Pd2IPP=k}uq;d<6$DgrfRSLiXLxsnv^n*+hFkU$DDjyC9OoRBaUfG4o z2V*K*19V+;2AHjQXwr(hpP%kykFfb7huvuQ+Dc-IE94T%u*dJcDvo#`s3>#Xj$4JK z^qFyAalq3y|&b!U4IFhpFrMFY%&* z;M?(la2vzu)CddXU*zFGV1L|c! zrRmx9#H|Kw$u?F?j8ER3*`g^55Yqotw6v(Mw51{HY>S32aO74f&&IJt%(nQnL-5Tw zAYl&56a!jTpeMh3v`(sl@KN({Bbchao`_Bs_`cZuu(MN5TR^J7&=nh{z+*gn29V-5 zOf1?CD+*Ao`16yBvxo$9au})VIHK|PVrZGWL|v? zny15a9B)z9e<3)|EWzl%5ZvhDZ;9ZM%Dm*{SLK00z%J}kpm*LEx95V(AYnkF5@&7d zm)O` zcGE482)^)!!O~lt;X~78-iloq5Bks?&khZyNU#f$QaT)+k0y(GUghZ_ypKb&UvOH~ zlH5my3V z8e!x7S>6{9bfW+rK#Vt##eVt>Hm2HBYq2Wy#Fd+<@62#m*a;xb$|&H)6Icu!`Zx6P zHTsS0!37THM$7DgEhAQq5d

      u#BuLK)yT#vlr1l5Wq66+9tCpE0x|r%|`_&aqzR z^@cVu9IWSjau!d)2QF=L1aLNOjQ7zkG7>Diom9Cl^U z(9Q{n`-z3LZA?9f;kyk393|01i4MZ}|}ey21m0h~#vqX8SNgpw*N5 zD|CR>NT?laEls7WH$pLm*|6oMqm)-GB8*XtUu+EjL3n4@dKCmIQ=j+P<+Od6Y$8O> z&MCv3xN-;!7tBt!hO=>4f1m<^$lV@g>QP~0$>gdjjHUNkPed#h$!UfU5htnlc(+I6 z)>l@C)~gwJf|_JBLZnZ#CNtPuXtd2g!`e-o8si^~q}77PYab;bD67#4(+FZaq##RB zrN|qHrK;l6ziVu6di3V)u{|1xxqbYPm`8`t5pAwGz@rPMvf?gX4|MM0Rv!K9hH=<} zW!cX#A%v3bypOHQS}rS1&+^rgYtNOP+OxRMP+7WoUI-fU>NblNjjB`a zgXSu)H80}jdf|shIq9LO%RT;e44Lj{EISoEbrcFaGkfylAh8o|Q+-wjS+9Yh$&?Ke zjIL%Hzu>ev$SO^VPKK5Hh$@0}g0>Kh8vW}YxW7EmEtrZ~YFK_qxa4o1tYVe~F{?Wl zI=KH!S2WeozC(8z$7?}Z4=8R=ux&pMRvQXe!DQy-A5{&yosZ`4zQUSzT@wYi}#+n4%p*c}5UIcgvH z25KDxt>|AS#^4z(|7DODz##VeJ@?dJXe{8<&fVJ3(Gdoa)5orPIGR*Ex44T^SFyiE zYbZP-Im2%ie>t9F!TLmFdn!1y=y3d3L8~skyyk6 zBqTi-o1V|x-!0m_5>FMrWD=}h_HuWRFbKyjLX^@|9da+oc5vwFWiKxLB@XPRUN(xA z=T@s?*sQFq(!jimdHM3ec4Ub?fy{U$53ktj`Kf<5xy)T597l%Yn{Edlt~{t6a{kr@ z%U<)C^Z)aP+Ip-$uM`r8oj`yR#$n{-)xvcp8ggYh1=eAXV{E=O zJ$qqH7V8t}dhOHJNVfrDTpo=hf+Lb4xLazt^qACNoxp@y`;Ge@_a;(h#h?eaSw;&|@G&b?- zBsXOL1^2a+K013(PN|P_CTI6}qRm7&oQBptQf{vgy-yBLQqT=|@(?8{+qiF2N@sa$J{yhzEr(!1A0y z+L7FXjO)vjArqWCURWzCW&W1h0R(>rWoY$!Yme)PPg04G79a!4OkQ>T3jF3!DN4xZ zqdS&?zX^?D02+gBMVy-RT_wFeoE6zZZzcsm|0w93tlMi#Dx(Vk54 zA_>nq{g<`*_z2|S*Yz87@prVmNOP0kFjnO{D!K&zR z^9SHDvUr6=XTqFBNN$Lf_MEDT&;j~B?1*?|M%1z=Z$^*6E;e$b=>rfps*e))xgy+X zu_)39>|)pq)FKq{?vP2sUZOs1nvZq2VS3PCkCE?Yqg?IMT-{cSVJD%IO5vEnR@S+{CzDhjoxPzyIaDj8M6W6I+y z^z`&y+cs`ne0HlrL~j^W?8hBz?BMFydUIGBXXGNUHTJ~GW2tmhykYQgQ(8XIf&`%7 z?G6KvV&I=>9YP9hokd9S&CwQPvSLt)%Rp5n=$K5&C=$(7e#x;0Il#W<8X**b}^ zNDY?7SlHmXpO0a`9m~wKo_J}^#(Qdk1X-A8Fuj4oVIdCo7xIH$$!{HZ>A^UY2!XdtDsv{?tQKrRnjj=7X06{6Up5=dCj+Fo;zT^ik zr^$}dT4&Y9t<*Bv_c`bip|L<=e{FUN4vPmldFkbhQzMF^Q#~?kBo7~cdc%8HwN7DT zJVnw0I3C19xJ(FArCKCZ1xnxuF#x2kz0omzl4sN7Dj1*#Vc$yY2~ThuC%*=<6+d%p z`*39wi?Ea|kQDQ42K>YI&B)C#wX8y;U@5*`2#Xs&L~hAfWUv*$C{v@jLl!p3Y8m}X zkdT4+H>etyk$%C!>W89n2ZG5;7nR45wXAlQmv+yx_Zg}-25JZglnBZY}FwXtikEb}+P9#vr}!e?>(w@=1kl@3+((K3Rg>9;bX0xw8}Y}(OVNz}18Yh^J$0vYW_3n()d zR2WN4_8=X0{jb5F+UrR+AFT(^1!3%YdT_w4Dk7)7>&r&31U~K|>%-Vf_aw+&ZQBrz zQdKFv+=67puansW_Z7Cd9hwWap6#~;uEeCLEP`0P%o39MT*?B2^HNTogk--(6H%#o zN+bpF3OqTPUeK+(s@`7Y4rDg@^ZCcG^!Kim<-fDIDt07N$3jX$dS(pz zp^goJj8B-sWft(D{RxWp)ppmcrLO^yPXXi`M>11flnGTy%tVEC*L4pi>n zAldJ=jpijYkOMbknQ{EwbjD75$VxOWD0ayx1`)envt=CJ{k8KYmlY)|@-R;YyM}*S z#~WnTlD1r!rrOVzIb@ADlWc&vhX8DTZ0WyQZgalQR0SrRTYI8X+#7JwzJ=Ya=k8J~ znAv)6FG}k5RpR?rAJcb9jIK2GXtn19u%i6PO^`y`ZAUdGLTvpwaq(;uX9ET7r?g=>rxw?>;K>OYlkllKHZMYT>?< zo}b%2lC{i)z~N>F55*hEfCL}ycm{#L&iWM1R$xh{cW$IyVE_7ZZh}v^zH-`tOAq)K zqE`XGA|1kCX@L%x-J=}j87frs%x4GRDvPv~8N{TN!xoyNC~Mft8%y;&kb0;7&Nj~dh*_C&KV z3fr%le<>JFf+0bNSt}m@|t)xX8ntYsX?_Rl>blzpDpQ!l$+db5Mz9Xx;lv-0MCb`%=n0c+vwf|rol_?T zxcS$>Qs->GTwsL02S6BQAr$Dx5npqHWm`_ms0OB~ad@P*Z68rs0EM9EeyhN9yp=$c zWazR_03KG4tz~zjKagw5-b)>9_*myB!V~}t{^vOvm7gu7HdsHync~(lat~hrwqqD+ z*_EJ~BWb?YTbY&ck$Y&bu=;I)u4os>L~O-LIrt-J8X_xy-d$8injh!h? zi^2*d>(KQ9d+}5hD+d>!jZc_GPkp$vMaRsAmZ#Q72;@|@F(6HlO{oJ|H+N*2JbjIc-)ZHrr)EmiNukf@MhF6d}-u&Y)x@{BJGJiVv zOlj=x8QzJ|WP<#|cqh_$;sGc;blg9j%xF;9*ANU#VMxd9^@LALmWXL9BuQ9Ta+dA3 zs1`O+m|ncn+)6UQ9#(v-+yfSjNR}0po-QInt!r zFf2^Eg#8*%(|x8EV=2V!YtWxh5F!ZV#g_{fIOG$LAb#}wzs_M*qEQCnyEx?*qc0d*)Q}_`KLzI#oc-C8 zoux2Mwhb^^du#l`yi_}i8O@BeF9N`PVFh1P^A+bcT(x8Xu^fz#gb04FY1oCV#yC$t zpwMx3`nGnRHC-=*iL;=EnN0-1Vh3HdfK}UD7IR`&n9H4bYH$$^T31Fe=RtG~k)JEL z*8G8(0%!N=d_L8i+^jhQFJu6PHRc3b;cPYn*3mH)ScPs$a-xQNOS)|^MXm*QmYcG7 z^10k>0%tkGlokzfetHXrI94-r?bhEV8Ei`>2;eP5^ipZ@O=dZ-@VxQuv_)5GTiG2o zgV`VUT(c$upp2byMw_B%U~$|BWxd7QJtUU$1=@{kLY{>g1Wid7we8o*8^TtUP=JH zs&X8lP!@<_+$66whYP)4>IEcud=NXK-R`7409cO8_9^<|8%q^4gegO*WN8Fcs$9Ze?#v%}u&wi$38L(fz`fT&^ z7KBlPVl<^HQ$esVX7|Q)_Ok>FwTEgSVKyG92DAh~EQl`NG{C6B_3;11#65aD*o{vb zts@bXg+H}FV(nOj``bApz4()pb36|06%S)aW)-l`$tVEHm$GcYCm5^kbBWQsy%Xyw zux2xfVJ@UkF4&k5R>-bA80OP~Okq1M;?*jiDPc0ZG1s&{q0eBqjuHtbS%$ z0x;&Puyt$4NA9GAYeAjcDEFU`%)wZ%xvSh51l<&n4o}C1(<4|o1O70v40i_q{U3)y zqB=8(9%(V$*W_g3hPo%bjg6(^7c*Hd!Gb_c%1<#z)L<>a>&3PLkKaT zN=Xb3>b$=qbr`PPBrZ-@P7xTIA7QoKprY@>T;z*t$33SzFk|ha+Zo{r&OiD*uI!&} zKfDjq^UZA8EB5a#!khycz9T+h|4yD9yl?whQUJL8d<9@~#EzlVQ}}Rc4kyP$$XCW! z+R?fGa~5*OW3(mZ}Rp+3Cc%Jq65o{Tg^F)nzB!?G87tJ zayv>WFGX@U)dvZJ@{D&_P=^7+9@hsifVRPaj^iEU)sPA(BSb7wCJ5^99HUw|q5M*x7>~M03sh*S)+zOWZ~0YTFU@Lm3UupE!YWb$6YE>vPh|HB@v=NV&`yOjyu{2s)oX=y z)$%!7XC>Nu=I~cul)8b~F5Q|`CV9t7m1L41M38w^z?JIe;aWl_kJ4564c9mCDZhr` z{AMYZ0=v8C!1C^#p0@#cMv1>yx^qY#+DzO!mE3Mb!8We&MCc;_*`*ktQEiuogY&>$ zL89q%p)REDxY00H+E!~Pw3^$ji4m9MG_WM_ z_&*R^&2=-`9)3DOggD%MeEH(>>(-1m?D4??Q;Xu!#`%%5lS&5JMd9mL2%U>zxWpMp zQ4?+m7JOtqJ8XXS>t7+694G4{NC&dMI=JN*7$yaZCHj)tYT^|@pOcIuEM(>Zsvt70 zyWgdvPoZa}B6s09s!SN%{8EPP8O%HEnkI6b88ex?tb_bRD#|7NFbecj7G%Wd$gaqM z!MIP4tXgXll^_Q)XNsvZM8<4|>0DxcQHCa*U2tcb4x7NExfz`YLoD)n5Wr zV`|)wI>j~*~Auw)Z3s^@XeP)g5i7s?MB=g_TLRutOoIqVpjP|paXX8US+?)6R zYHW4zKmV0{5Py)n;*Xab!>@P#=fD2$19I(};8XB5MBW&_+2OK9ydMfjscEQxb9Ve$ zu;V@|6M}s(JXq=ih_TJcVpwDWLnzf2LKJd4CPd zMIrICiwDx0fDyt(V6|1o0VDHggr>8fD&4f}^?V(gHE(zjDMS!oJtoFv3G1j?mf$GS zj0ngj6ET<7|Is4Y$d(Qaeyr#rFa!I=wMA_OW7<}1BWv$&GKnhnq{pyH9#7_E)|BU> zIuOfpy#HYD??i7L<{!j@rR^HnJRUxS5 zxhtMOi=Gluh1w9(iPHg~}xs&ogw>9+u|G)_F`jN}JBr7|rC{t5I_FE5MY35CJq0A`D%VI?T3feyWOdvw=Yj@remZf8SX6dCp?WS2${WoWjI45pjX_es@VZ?+dNPk`@gy$D~ z4$UJ82(>17AGdQ2q{XP;2Al6)9pK+bTJk*v9v++@0fm^)LZSjNBr;e;Rtr56HKQ(~ zKrZMF(IZCYv*250h(0-&h2Q#`gyhyIAqQYfL|(OBg$YEM#6wCMAzHgJV$Ph(vZS&{ zj2>t1E#;~xjy*nyn4@!bYjGXOE-v2>{Mg@TFP9{_>iV{QFP79QRiP*r=U>X&S;qME z!89|73!FZ%rHA({S$GF)YM+k@dAz$(5J3zW?31(E{}nv6uixYO_?X4V*bzc71AuKn zH;K90z_HxXUTnQHwdU#0)lL|98{y%KhD>qn*a?)8M=i?Uz)Q!6SiSO}>b zw4yIGSh~LiKRFZDWNb{W#Gg07THDF@s&;)A7UP+iow?>2kGVu{f{YSA5eQkQXinxV zrp)o#*Ke~zobnCX2h8>}Bq>hvu~L+SykC4;6!#QtuPsk4VO9JKBe?g4xOM)Wm zc%S*_W%Fm&OPa+vM@sqatTI4iay?*uF-7_={isxA(Beoa#mJI*L1rN`O%^G9FC8`Vl>$ z7r+!PvIQ2yTCL6}m>wyX#u)vYvb!%n_o7Yzqzw@`_9&v6oe45cG5h8(mD|7J(!+eSa|B% z-VOHo65ALfG58_KKs7kHhaXN51C45rD2oRv>cQw}0un!&j7Ud4BW$0aG*2eXyM}}$ z<71?#dwjBI%ibQFS}!oIB3*)B{~+}9c(y8kX(=dSrRTE|lJgM~sHA~6{$~>a2bo(i zv8*A`-8ht)rR5oG9zNcF@ZG(~PaZvMo_^ch`|i8u#l2_G?)~Zc<44FMqS{UI?bvCEk09+=g=d47Efehsql*5+45;Jj5U047h z$MYRxGKUY1M!&Z@D+zSy_lgo>0d-h+O%1@_bpV*%B6t7$=;#~;s8?2G{^#i_>4hJk zCU*$0Dd`~&9S@{76}&S#!wg&BVx!AK26 z*o&)Tm|rj-p!U-%txto;Bv=^UAtB9>y;F&w0a{GBKbblc9=h2oZ?zeAwxiL3M2Z~7 zqc@$JUDZ{cm_>3g!w4Ce*TaD4@5OWjidRv|N5bS76q9K?;mLqGLci2 zuom&rc%Ny*h{*t5cP~)b*Qlm-zZCQ7e))=b#n-%FHny70U*Fl-y7Sd-(8TWUY}xJd z)ezl&-TX(mAb{lGJ9K1@cp#2sN^C?&?g@x9Jd$9hFu-%f!pLB|Q38t)#XxkG0K8SV z#A}`QQ3Q9i%NPh=cIbw(S*Vyr_0#K?88@{lgAa1fWY91ZxgWKx?>y+3G`F1uhP#q-A{WgH)mVvuPJ31?Zx3tO>n zYuW_X0~#gJaO0rF6j6=?AHx9)w&@8JCotgKwmXXEdX+$4Gu&PY)M6NXp>F}71}D7 zj~$|hhn#^|$apTEjLJ9TNIBB69jm>P@Uu6QJi-G~7XU7)2I;Xf!Bzl=*A7;*mXQnk zbi55_+h$|O_MIZSY-8Th__DP~v(;BzYk0fvEdA-K?q*x?1qeN_0=or9mvzs(cP9tV zXyOUPV?)JoBQ>>9~b`K-A^Xzc9Sy$nP5(>6!wmj%-Sqz_B?vKupsq8-5<1=Eh zn`_rMw%*1655x1?*PkZ{V-*{$BmC8`HsEphJK7D@t#+HaU4MhE)WBB6CGyqHqD|L@!9--<|rm+eVd3b){-QH2RsjoI0{bcp73De2SAjIL%@#)*aBR&Ppbb^L6&;A zoY&Jj-JS*ufDV|h1iWsy08jr!;5ts3C$YJ)^`)J}f?k_^xL@|-xm?-{*)r;0JS^+w zsh;!SjBrLGl`H=(ZK(}rf9si zT+~Hl>N!)?6+nXtv{<{)?0J}OelkhiA}2Ea!p4Mad-JR7yu3DV-R2!iPRinn&=+7* zKBCS)kL#0>QVe*+#3+6QjpYnXaHXJx4G6|tLgTS&S<7sQFcF%l=3nVm!EP@_Y$R|!KYS$))*_tp%SQ}oi|HG%{L)<8-MGE+ zD}S>e5&{GODDBMCB4LR_A-QxQwn8#s%!M}x4^x=kIV#^;8RR7KLVm(!@8$_8%0P0F z6zcMh=J?04J(`Tr`DXpcAAf|62JrmRMGwL4?J=ar`77jzeY>bhkk4P5_pZRfjPeFD zO_7+=O}__c5Ew0P0cbg!?@r&vO;V_^(itIG$_`a3hBMeLAi%)Nb#$ax$o=uE1Ce2nwU7+ zqYIRyfcsb#Q`SgP?TednKmZagE_!%E!4J)$m>lpxIY#_o=9UnP$;PmEUk94%bg3V4 zHZ6X(zP>)2BCY_1`1Hf`Gg$tJA|~5P$n*i)n=mbvEg+VhjG-7{1K8B@Xx|NeV5=A2 zx%fVY+|L9e3Oq#@)vvXnwt(4-v4tfOBIy8N$>GCx#TU)FOh_Cs4loIE^FNpY!l!~c zLi(5+pF-V2s(b`GnZXcduU&+YaKXAYFz)os#JL>Xni4)jb(_Qf340)kEL#dqR(=f= z$t*yG6LD%2Q~>k+sX|=O&meryK~thX%zkd>H6`%(-mR@BRI}Z|mJdUa`yVzp*N`XY2)sr+>;~OFv1a)`FmFLkH{gjC&;6+<* z#41QFb~^(6Z_s#)S}QOBm#m_+z`N~Q1_^@1P6FM-Vz6#r4|^*Ka%Cfzy<~o(BU=o*e-t4&&%#s1~>~m~eh6aut`gAhuIRcrX+Y$@8^Ct{-f-4S;ccErVMQoVFz8?fB&VgJBXI4vBRol3S`l$gc`Guk9? zHezhYmcSp)ii`|lGVJWBA#V?}_Ooy`TLt0n?>@C#t0LV!5iWZ5$XI*7Wc6O{cssTG~qjg13Xq>u@Zv{rE)GAi0X@VbTkJ= zX@POFPe>mfZJ@YUJY@^F=hR^*{?ZpjYR5JPFe8qqIuJ6pQ*n4)3C-$n|9s+y!)pX&b0A%XFZ?XU~et` z<3{tVjh$6=N+`-q-#n9F1jE73XY zzu{Lf8jUF1hqMZLt+jYfWG6|^lk9pV8eC4s8=Mo1mq^WlG=p5{V9~qsEJMQ4Lmkg< zZo@%Sj*wjBi(#Zi57)M)!<4xO?&~wXI?xCD*U%R!n2?Wlh^W{(oYvrJ$a79H^c7^y zV_I)1Jo-YYncEU&(esQm+SkHr5JrQT$v*XL(>@eyt|lrB8_l)7{oP-GJ(i#I ze}9c98`QG)8}-?_bcxnJ}XMBUJ{`qkgPXLb0g z{txFzpYpK2*Xh7@fhv-j z^UGiIug$isMRy6GfH)G+x+51Wp#TpjP0vO%j9QK0g zA&Ocp=@U>w+;0hSj27t9{-Tw5Ik91}PNePL8y`IzBkaqJ8ou;LC;Pqz?evPLx77=P zt)&py`Uw!&8ZLss*3}?TEcDYt-~se=*mp}1i&*^k?;$+T79H#lr!DY3hX2DVeFJ^q zEJ6t29EQh}sh?MU`h@bb0bmI}xnu~IGg&sorE7RbXU(z^uCRyz;icf%og6NLMT~JJ zm|S6;D*)ySqg)L-O9uJ_qB;V)KncpFnS(JFh7xSa5kSTZ+s~&--mUq0pRo{zph)%t zp;xYvq>jBC>Y2LY3n>lZI>q%i)BPpuSX>mmXW>R=`d6@a{;TSG05cj*x^y96fZV!A znAQWU=NwPdn7oE|@i5X#3hqti&tSN8mb~lD!d``khoN`z#%bLU1IP(9wix@z4H4dX zzavb^Sboc34D1@2I1euDp&f=XK=>d$N!>s$-`j90C?$V3hx3BjA`+ijQK~gtJ_ECa z@LR4AY?In|AJxsr0#k8=U4j*=vze++0$o(g77CVZ$~q-jC{-<%UKT!{gMva>knF z27;SlPN4`5e+kCJol6{WuN)tD`Iw&qA7}^mku_=yKZ=dl7?RDIXOlOAn6yKCW~f?} z*uV`B5#=Y8o8x)3&R;#d*fv1xRnu-Z9X0&w&36F?%Y1lp0p-H{C5ug-x=M^hfQyp6avC1!6Z_h=|}sk{~qIwkLII)PEibaAu`Ny zD&BVk8HXxac%PmAC3m{$>9na%Eus*Q@>t^8`3VeMJ+vYDXaQA#DbcSeq96{Zg2sXi zzkthuTiNf9hnw)wy*(k77;|J>a)mQSIzqPw3KdKdz1Jq|<8}K?AS~PsX??DG{plR@$yeWW-YQ3%q}A+V(@1n#|vO2DJeP~W{ZO( z_Bbwum1^*AnED&yAnM7@U4x7I+rQlS0JCz*^g{MsezpJ}xD|aj$mu+0T2E&E*O`H} z;LveEMjhgN<~covwN#F5YY3Lc^Z{1~bi7g&bB=Yse;e1=M=_@*IDa;pFv_(AO6ETc zz*2|@jN37}mAG%1CkL94k)B1s2Jqv_ft4v^{+Uz|F@M8;0u=WEkU@50;5IyKNGQ*A zsm}#ng-N9eB%%1cpclJL(z_4b+DH&jX#|G4!&S^5{z&Te_~*R{Xy$90h0+B^;oFMU z^V3y4{a`_67HA85_Vg{(c|5+LBz6;m0;t)W(EzNL^Jp`lVqPfyha7Kv@^7#rqK<3; zZibp~Tqn)Xc=JTDf0gYGO6c<9mAx0@j%c?AGz&0_oDG0?8fI=Xg#p{fGPG=q1t_{; zz0UMwXN+KDHZGy^%8H&d_+70_9ZpM@I`AdUpit8vW**tq(IK7_6!R5>;n*R7&~0)$ zo}18!UGf1A!`WzJLkx%zJmVZ#20>47*?fyJUfjbSALb;c+v5ZJA#%X@IGfZ`-hd+u z;wB^!GjSMp9ZC8_gLFE$WjF-G+3HFfshdT`jdo{iSr&u5&HIOBrx7KuGpcS~VRavh zLGKpLpfOI5^n%TnMzeXECk7s*z!svw@cE=V7U&}lD2zXk$XlW&UpG(6b_8-k0I z1BOTOV|I`d<&+%Vb!0P1^f7frd02|{ zybMg>2?;}4vrQneTTvGThOj#WOpPxtc+J|Cig#8gc-#qg!Lbzd^fBDqljb~8x%omj zyhPckcv1zmT9V<}{ak53h$9iUY4uA{FzXB<-gic!u5T1rVt^?*GS30#&+F`ux=&fb z+r?NHQnz>|gl^}#k92Cho*qMs%{f@;HpCGkrV#7~QO}CX>mq?}Wr?|Z(;OB8N>a-Y zH{vKSSN`3oAgqbj)u|Sc;2X%oB2bG|3wTo|a_Q3@BLP95(!BAnA2bjTxvh$u92uX9 zQqCdWaG);*mq_w43aoPE;!~fl6-``aTGdl~^YRxx!D*yzS#WRr12n1)$cDf8#qj^7 zndgkbtUt%$R-Yr~F(Q&OZieselX>3KV&!}Ljr-m%5~ zx{w7`dc6(WFQEsRM>a)E|NFV$O6f2xY6B!~_%TAy%XAYSh?CSD2pDCTic-<^6RFDT5=bubA-8fC?pWq|U+1 z;{eg~Q-J+2Jf;ZAGdTrcF#v2A=L(4QTYc2XSEQGr2o>a$M?)<;uH7Ae@ z4Ff6njg(E?c(XCGQt&pjq~Wws>Q$rXt3X)|fA+aOJ;Kv)f7zhR=gt4DM z0~yU==Y*2uCi(=Y@MejFOSPz-yvnxLlN!k`i~EQE?gId}`=rOI8}^XYMRVCbR341# zr?l5sI1IN1GrKPza#!fw^8Ti6^?En?^=!FQy#OKYZMPh5xeL)*?@9xscSArO6mK z%@-Vzqs)c8%`ywOMESl=ZDlX#lCdN(Mn>-?W7WKZn%T#ncG_EXH$1)cw5?gV$I~d~ zu3$&GzX=jP0ufW|LBzN59c2wkUbhVCtzkWCqM`PvTOT*-C&tX|Fc(Ak*_i42QAUk8 zis#eQ`_uV+dc2JCqIWuirM)|Rw00TuEbd<*6A|bZTc?Z-gI26)=Nd868T z_7WeeGZ$Bo%J(~A3ZEs32E%Pp8g5}Vi6jKcPur`OwR2AatwR&iem_+VtpUSwM- zO}fIm922!n(GES;ZDHn%GoPVZPfd=o-_5o$sI=+wJ92U)A0CxiebgA9;am3qn(n+YnA~cXmSIGjK8e$xH+t?~bbi<*GW63;|VTIeP&pNjZZ~U4{ z&i5ALDCP??EgrhUV+houEYc*%{1@`)10Tot}d)A*Zba*mMLu z{aJ#0A$a@f%x`R>O}Ot8%5W5cQVJIS(TAJlEd_JgHiY_E1gQ*oJj%p4oVl1VOZS-^ zQ!}O>z%x&4MroG|T@bX9qjwTF;uO20e5LR8=|2`Zf@FqzJs1CS({S1WlsLRmW4MR~ zk&jW3nc5khU-)qqPbjBvH_f$Xp%z=KQ1iB-03Pl0g)ANp2bmKZZsGsW;BzCNaEt<7 z1%M3zKg;9hbybJM%=Zws97nP8K4>BYFChOb-tcgWrEr+CmB|6!R$Hr!T4^X9eci^y zLmP>0JPv$i1y672Ff{@Zgeg!{+*o!R-bz=x9!#ny3=Q>r)!EG^v?|4}?rmn^^Q zj#7toi7wz~9#jJ(jNO?qLm_PoO$osQ6t|PZEkwM>W9C3~_fk9u3kOv6G^vMIoQG^I zjS1jtnZThV{X7Sot36z-eIWkInPWCvGu~y{!`;H^UBhA7-6naVi;x+?+-wG4gga&n z2e_egVb>Q!MtIfWoyKi{fyIAd=@W`C$-RKbdhVkz@ri9FZ#Hs#mJ>tS!Silu11Wn~ zx1Dl%S<0B!%n;78C`?mGS{#i(Wv6^!C-~coKCR~yT%(4L$8r19bEIZpOD|EoYiyA1 z$SO(Qx@61A4PIU0k{g$!Jl`hiRkk75v0heKuDcXsW{3-vhxla%DWch-;$`4YfuUz| zfLAQS#+-uIao7@g{3B#OW~IM|V5Q^JeA)Xe`?#)5Z(V~@e7JXjFFs-%3w2ud{kd8+>Gjt za39>=^ch0Uu8)tP2@Zo1h~T`o6j#H2?XESJ7&uwqBqlgrK~L-;gUphJG_7Hqq^pHj)m}8l1O*f*Zik${&v}s zyKga%5M50F$7w{IVX+8tlrQ-5-atsWw*>jn29`4d+5RVjNB5f)gDBdzdz z0mT=o_y!C#4xANFFse_g-^b$$F@|euBULVUwXL%b0lE*3_|Dzspis;Z?c2QzfMmwJ z5u6D|PW6|@tKtEEPOy4T>#9jy%WoK7OeaOqKWqo)hU4RD3SO2Sz+8Q^3#21{rze-_ zw=gAD5b`}mIwlwqZ+e~=T`xiWaQ*kM6r`*|1+tRHqlNUShSv-h z$<^;q_mo4ueIppuf$*5>XWs&UHQvqV44~uz7I`(CG`%1xD8jyt9ptBhCcg;%++~d8 z-j>Kh-a*hI?Mo549#MfiX4izr5wsi&G5_ZeD8Ho<3Mtn67ZQlvA8kEDTdtT_TwoRurm^wYLOlU?SHDlx%A|v?bE$2WhhkX>OXQXl}{) zp=TepD{U4&-%yT=HCoE_s3C*(a5!X^)Q9+!ED8boM?y8jb z2*u-3lP#T$_!!(3XlqvwaGE&G5v@qIGFz|VmDbU@p6R2M5}zhVX-1Wwdd~Tg=&u^u zV|kTA4_{Cwi(yRi%WH>AXC&9_V)HKHAY`RjxTST$3Q z(uY7mrR57+jrHIMnFyToFhYc(9u%!`mUO7oY?99ocM~my_=&@qgTNA-vR$x24hw;w zHW`=Eh#Efeb7JM;`3P^i=3`xbenMO!+8_8@*c``+fJ*@1F ztPg)51(8Ou03G@;xNAp9T*ADTzLwY|@~4k5f|A=Z0dm#Iwl}flNY_+zjx29-Vi6%n zeDuxOV0)+xF@USZ#$YlW12ItY853*uhtmKq<7SfICXs`cO2;?n^_10ck)de$Mx3uQ zCBR|>ghGHk>&w4`{ogJ+vrDVfMYj_kBIZs=LXtXZO}wQ1oV=O;E81E5_Vj2rUN?B- zw1t6ngZU`_;ufc(T&NkTyr*SbORZO*0D8qc(*8C1*jjnsbr`kW2(N8IEu1FvDM9!Y{At zBgWKNp;I3(L~E}^f=AKF@)YzM6hlVE#MV+Pot2fO<;WFea3>Jb0U`3`0*k!FBpa{W zC=xQ!!3P4-o?TGu#sr<-WP@)By8VIg>H$|T}FoG*Rk8rahn3DrKdT7g3L;3 zD3iv+g>^c+eTWPC?#v3kj<5tD#GX{+Vejsg84DR5X0{vhQs_75yH<~JEtnldSyXlz^L3KPaNswwm8Mm5B^}vDaUyc~U=tj^x$AJfdWjWQ;dLo_{%L$MD@^*?_9P z5EXZ-6M`QjGQ;>MgPG;kgHSMha!Fyje?i z7j7VtvcwqdIY}MHn~FvdD`1O=EXgKy^eB(BvpoqP+tYL8QFciQl>UU3D{#jerJKQx zf>C6)*P6=o_Hikv6-mh2pD{CYgFiIOpQz22GRXAwn7FOcXs!z(ik7jJv}2r*r-BIh zyyv<(DqJeaglyU6$)a_F0=dQU1jAE!% zI4^j9arM&;Z0#%8OEPXb9>S5bI^-Js66y?bB=EOto zkAOHD0Xi?WGjr|m2kWA}RcjrnHFATT#OgW$LdD%^qXrjL8C2eMgGqDupHK%0^Wa~t zt23XAjzme(wKzMQ$qpD`@39!aOe!tPR5ih4KOSH_sTx#?mw@U_e%I|6FROq|J z(Ji@x8p7%xVGK4Rd<007#B=lvTU>2l$GRJ09t;2oIDzB8MBg;MCd`+D!H_hJV6=*K z^#rdGpbdcB#W`yI&6{_&Drf|gQ;>jNE(Fy;oq%X;rN8%`hBsniHJyczbNOl5l8WOQhAXHtVWjx5}gO3k!pv>1s1aIqvq2K7Fu zj6W?2cdSq5rp>MOt#y>n+t@%RfG_dCX5-g)zWVi@&0k-h3;?enzyA6YW#e9KcoJSh z!+kYx*7k0&l=5$=5NzvkCwnt|KRca9Kq>9T+bByVp^k;OkV6VZ4^XlRIdYC+$0TQ` z4(YXHD5;&RUK#lwa%`b=#n}X+F}!maO8PS7tpf~Ysy_RVnum|KAAEQ3@smf-ny243 z_rCkCd2#RAvwMGf{`k>0<&IC8F#B5b=tw!mV55f!D1p|_pQ&h|is-S6EL~hCvUp+P z5?dedQx1XLh^uaRf|`mlj`j}Lg&0QNLLvnZfk-ueH{N5xVhTohx1}Uv5AY}S0oWaqDcG$W2xA+=aPS(% zekstwnl#2ca;yb|!OqNJlj$3-6;dM(LeV*=y!&SeV1XE*B==%O>NT6wc*2ZqjD%)C z;)Q2ZOOtbH@?kuI4@4kC!GhtxjnAeK)%Z||oy^I>8aQcCbhJy`XVd|rgM?d}QU?}(t! zvDn%C0>sK&J~kd9u!tWDtOROfd}0x*Y6CYAyvHh;EH07K->!T|bg;Aoc4pZqX<=7^ z?;4EjPv}c3z)+tu*Zrp(>!;@MFE5l&ytxLhlVyqgpW`NM?xyG8^Vj_0z8*tuHrFG2 z0&QV9IV3;bx|`!@NuuO;nKa z^NXohvZn0#@G+-|v{KdJ4)&`Jekt&)p@G*`a)SaGS3>K1xPZ6Gs$nx~5B!KZTJw|b z2ekc1*@L?6qVyq)yF6&;{O`ebKjUhu`dvL~dwV>8fb=xLdJJK7GThv&H`97gzo6R} z?QUhJf=(Zl|Ke{yoYL+79VmwL4>uWsQBWK|W)NO&koFjcH{G58aeQH1i8H^{?irg3 zlY*E9)K4antd?U#^?>7&vA$S1RvSk3Kv#m1EvgHt%ZF-1DzK^xs|ri}=)QN^DB(@R zj8zh?0r**BQh3>o;+!Mfn=8;)!He%Ww# zHnHO_T>H-Gr^2RECMWpBv6y$k4!uyFqF2m!k8 zCMu4yi6^4fT@(GT1cHUVJ1egyeUIfb7Fz~_*3RqsJLA+4Xpd8(!1K{=fS)dbWWsf? zJkZE&{5XG=!?JoKcuXRbv0Z_W?M_D9Kf@YqPD6-XD`ox13VH^$V(M!RgY2NfPfwuO z!m9BadU~?YQNr1iwj@2@sDfPg@)+aS`K7=|q zPj!JxPfvI&DNs?fJi+G7$`2Kw0iMbz&&NVKUbM2Xm8^6nHBAuB1%Go>lh9OA4oMPS zYPHt&GVjCavVDr@oUyOJ{z^3imKtzyX%apV?7h8b`$&14)$w}vQqoZ%(yZJNx+N{w zwO5Bub-E_#1{AK?DJC=wtfrl1^}p2YT1q2$#G`j}@&?S6B;s|dkdlqIH~8ca?@l}QA&uX}B0XOx zS!8Rz$Kvb(FJEt)S-mtQ!+Kc0rx|*hF<33ZHd_M%>A(_avly~H*7bWh2be7%AL61x zv^ zbauK^pjmrHBiM!+zQjO17KMcs6~ADFyLrh~DNqZGQBrDHqp(yEl2MV&%p^7$^I^?~ zVVbW`G4|WDDK4X?d58)gQ`x-lK7!%(bo>omw}obnJrDD|@2|zovVWS6l*}>7~%YP8_BEk3XMCs7caE z_4N|0OjSvL_O@tIT(YmEo?kN2bBM60Cjs`2%Q?oYI8$K7!aS4!u6jnLQJuQ^ zqO~K@C6wOeCAb6&D=LOqy?}}Y`(D+jmnCN&^wB3DLj9ucb=Abb_6i^hJ&7_0rs@+Z zp`Xuic_UU8aU7Hdc9G-fb@LC+D}=WkDa6Ho8Ghq&K(8kANKs?I(6P@aAQjPnoH$aD z$F~fNew?^Bj(~c}UWz}Yb~4&o&CrBm>M4hM=-gOkfIp-?c?$$S zjQd+qkf|>gE$k^Y7%(ZG>g6jl26V~FAfDn4V0S%&dcA_Dik5|2uB;2qg;v=A(Wu%x zNsp1dZ&qL<33i`EZ#R7S9S#l#6p-tVmDQf2mLc)YGwkTst2-t zb6pDAYS1=(`$oJJzSW3bDEE!o4`r|uSVb8+1CCSk8s5c7BGeqftPW#Cs1(79*yk8; z6;OG#y0b$RNcM___W?i9!WL483s9#KhharK1WH%ZVI{|7i^6Cj|!l9_9 zo~6PHfe>|1+awdURDKvdUf}+kzGY4yqlxL37J{KwVUG!f^(u<@)2ao=9*$3# z=X0Fv*kEx8VckDRd>neAKgQKNoF)nkr4liw+vc?u7r{m8Ci0-`A%Od^xz%iLZQMZS zy)O~OYblkmO@c3CitVOc#kY5>IG*0pMpByyS45JYpCYt$F8hTbkHEVzUb|!6h!r@0 zck2fXMC?Bntne4T=ClL~$A})rjjv;{L<#Cm%RQk4mI>Jjo&XCIRJNpp=3;to_I*4> z;lZd2BIy8qA4n6Y``7CI=uzZoe#e@uyqeEX@7%ie_U+sC$;sJdw0>}Q>-BVWG`h8i z8a=aH8hNOp5&cO|f^`k3@NlV4dek{ zX~A3f`%(3P$X_%AKoDE-Di--VY2boMDn(BVnikcGCy5-x%xI%C#JwVB)w1s-yB1oO zPr-|UWeT&mBQ_jPY5b0OZOJv#5SBjFo|5tGWwpa}Fx;Vaf0j21i0LI0UTPy!@}Gx! zcD;o_tR=_G&GfkXUoL4D?~6!e1r+NvE#w+dHI<@7`)YnScz1JfVTvrj?(R-4hnoJv zY&Q0-OK=0V2xm(?1w#j+opCDhO+5Q6s++6V1`4mh=xBAh}f6p3FzWQjd=K8?#2j}j%hc?68Zokj?e@4?d2F_ z7y};|!$W&9Yi~^vwhFk}r))|#e+k(sEvqoSPFQaXr#d+~g~9%SGWrz}1zp?(D=h0v zJ8y{e9K*jWvBWXfwrCrqRaxkCwZM1B$TulZL#suHcS?L^$?_yd{7<y5geTx)>1GD&KEdgvm~p*5g?h$Q7o2E$Zx^6VBcTZbuh$ZHlHnfQ z@}^>`Z{XD<-BJiYClTbtmBSfob>o)zyq8L1ka#LqgK&6gcr#l7{%chdm|}PW?*^l| z5sjah2&!UR#?muR90N#_2ycQM+|0y^R|4=|q|R_a$p5{|3~9&bM{~x)f@&sklYMF` zdBPhQ1OpZlxwA+S&B}^>xhTGr=$}s7@V|NQ=b6)0RHUGQwUB`9;TKUGEF*NGg;*=R zbZ-?9(s-Vs?*}vg_TcpZBNvR9b2-Knsmn16eol0s9`jju!~POvt(T?SWX10gQiB?i z3KqimH~-Y!HeOv2Y)Q>wI}}ahMHxIuF_Ph-F$KsYL|Muui6q;ry6Zc!y-ULPmw?>! zihf||wKubovTwiWV0$aO2yB`fGCBUoDDa=Qn3jf%O{@y0jL%#ZHgN3wFv`8YuM|l; zSO<@~`E1~*B;j9+AyBm?A5~f+?mUian`jMrkLAKSVzF<5J_br#$0qrqXt!)KZGqvc zi{@Ll13RTIU~DamU{b6sc3=Z_wxAQEm+L2<7@!#f1+kwaDNt;cfXqZ>z9V}9*<9L!hEWD2}8 zEiqDY@1o8ID;??DVuO&^lX5VB%j9?I21Vm4j}F*mr20&4u6Q|7>M~5TT0d!R=33`! z@bY5MWjK=Hi!(>{nNT~5)Ka3rMLtBCKpZ3(n)HLI^yVw z^qk_kxy%)E>tG0}y|7ZP1(1G}HY_b0^x`jv=?-9N20)di(qWM(eK?Gjh1g#!4WWLD zXp_W23^sFHOP{ddku;i#qQDYjPSO+6`D$9{O%r&&cL^voTdk!=HrrV(@dGGrZg80# zUgDS@K)6kDaqJB;HDwL5HuQYFke*)B^c_*56;c8(WLZQzQRlYb!%h-P%LgR?WiV@f1%g(((7I9v{T*@y_xS96~8eksahW@lT55Lncj>>K5)X4L@0 zk{GFj0rC?$s+j3*9CEAh-w@jOUXAz9;aOzHlkpMahxoD+@&iSMRSZBA7n|1kA88S! zB}zHL#ELw4J4x%N3}67$iRmQ5iYjcRbWhy0-8itsegRZGcD*v+EID5~#`kagSsqE2 zH{xfl%tF8=z=P$lMD^vR39B(gS#SSpEO#Aoj}iqCy|RUExhag(7&~f>gyizQ9f!+% znmFxiFqd4hgerjk(t(O4R2_Skz%3R~F>-5ZwE#hg7g%Nd_2P!$NVe-}C!Bf=CH|$^ z!@g3vB#7iTUOGAKYp3L#+u_UxHqi_qq%r1@4J^_cJ!fNRZ9q6DOc39_Bff2hzKHO| z4&%fb0TV%8KtC#@wC?~jNz+CtNUH}LnVp}}c&!)o{N7mvy1$vsCa9j|Gm^AfUk}mB z^|HAXd-ldu6HsnoD&mm)=g08ONUWF8>gE})V3;eB$`kxt2*?)Vkjg)K~-&(R~gujy3 z@U?I#)$*fh<$!o?x!_@ktxsGX2_P)j9ADxmS&J!dU9iLuAx9cJH|ADA5)96sy$7gi zg2shm@+oW3vT+*QZg?d0h~^)0#yrp=ld|`oYzH-QRiyKV0fvtX@TNY!BrvOrj51=< zfK9Baxfsux!mO4r4XDHl%zqhHcp?^map5O<0-!93%qQQh(24uJ>ojKw40nt_Axx5@~SM~%XHe=K6iv#`p^7Ly@2!4?>yAT<8c(cuc}dsaOAmS6>b z(jozeHLy;K4n2%y8KlkwXj6z;1|U5f73jxQq|w=-)e%5yaqw%Uwq@$xGgt#t8pup$ zv^YX@gT#Rm;1tIcNj-y?hzZHTqV>84RN^Z#c?&jCRE9=QNb=_iDR>XU2~DN`HV0TU zhp^=4chlMsB#tD!ui#=jkqeQuXQNW8qdXNH7-J$f2!;ZL`C4QE15eb%{;5C)O&u;& zt^vL(&Z!jYs2YyRT`F~sUPxU&8;rywc>EAVj>TvZOf_%?eiPNMLpS|CGy1J*ed+%dYIy$=xjG+L^0WkwQ69GMcH(BS#mz& zw|DR)g&Ii9WJSc6_s}!W#j=;qSyGeX*GhGhO-aTvV8R{DtrI!w+b@q&&eIS-rl$etmycrn-Be*?YDn zhE)u9tFQO*^?vbnulo7`UmxfzS2>{YcAp#NUmko>)bpI8)K+?f=(+KD&+%aiX2f=2 zDAX8pHAS*P>rGzkvUmiCgwoqH%xH&&tYDevAmKCR5SVH)$mj^hb!VPnq1U+q1`TdENhrhPXtcTmdhLY{jR$PmWr#D$oT(>A=L z@|ged4`N1TI|)!w;=P$PaH0-|^E1e!Wd>x@P?CupsQ$;mVi+(&ArBRzPmx(flFu_4 z7fkiEyVS8Rfmy1jw7$_UFCX0NR(u2a(St(}N^qLMOuFXC{U!b2ZLx_I{DdaoPR?es zB_XHRTVyPw%5gjbCE))HKO%cJ;Cgg^42{{O1S{5!n|K;Un`e|=7~zF()APeu3Ia2S z2!5e7z?^GjW2Y!mg`V?Q77t}AFrBv?;6#1XrU4M#TO^#m)nEhLV;GtsOK21ffGp1J z;sz&7Wdh~y7^(1;%?@C5>4J3i5t?&BLFgE|u@*>SfZX6D)aqOgk_VRB+(8N%$#zV8 z2Emjc0k)NuFYIR;`qGD5s44J;O4SmTir4X^xNjY)i>ql;T}>k7bT!4D5#$jD8whO{ zA&A_wq7P2vrW>9XOgsET;}}V>0o5(uUWU<;2~|jp)S4$BcGhEjjj=!^;3#e>5X&g2 zTnZh&tvcBW+$Tdq!%YOj4tZ8-s>hIF~ZY^5JG42&xai>xNSbM}(=LyvA6GYAnqoI_Znh zjQIl5f~^D z;m&z)iFzeR1g7SjgUrQxGid}zz#X&t=M(&wwP?xs{T2%BPLdUt;7zS?dFN(Qyx1yi zN{(2>Bi(CwynuJN%@8P#jG{1K{p-tSW#@~vbqF%$@V+vx3jD{H#8J$qCkipjlHa%w zCSTv1F3~NP&vPwTy6Vjzl_&Z!|I}Y3K?>AP(P)My17;xaPQ0 zkS}jng?j)gmtYNJFN?L=o#9j-E38SISn5QYZlHcLNh3>B;@X1Xh3Ox=2kz6>_p>RU zLv;wg3qvh)8M)^rmBd;Q-gfa0Q?w`RHm(koLPEUVWR4&;LeluSy36Gtc(4|3O+EA!D_BWg`HdR`hM+& zIfU{lsx+N5FE1@Xn$Mgp(4cIuy8f^hZU|iTfkx!sYe-36F{Qi^caP< zKTK)zLssq#Cb-dHa`H~B%gs)o?k2_i2#DOnl|R+{rHJ^JRYj5@i(Eg)C?A5goQw|< z+fP|p$&X#mr2~~c_)elQ#Ft0_{-Nng{!vG2mx3ZlrgB^kY^k~6t|+0_>H31XGhg_f zOMe|l>8-5~J2y8>^fM~!(8KTQDDRD(oAnQywM#HRht8Ovkv)~+vx8rymqCxGkp%qw z#7gbT{t5?#o9P%qO8jM0pb`ao3P+&;>*2>3B?y4CGgOL;XoxmWQA6@n9qMl$zKp7c zUP8`DnjyNPfg6?4Kdsi*AhTXx2M~rMGgKfJVTy{4WoyJJ98X4u&|@$)JXxp2I1Zo? zgBT%Ai750m)j}dLs3`;hbdyXDX^E7zSh#=2oNl_BjrI!L% z4^b)e&d?4*PRqihHI3hWreU)s2>2N7Wwm-!Wl1uXp>#1d2+U0j(ap!sPZrR`fDnJk z#lzL(OV_GkseG8Brw{A*rl(BL&BM(s+7oe82@ZpFL}3s~jwYw7ZnWsERmcYXH-)#D zGaxunUQnDZA@ z^nOF8v`3#BRF&nf4emAUAGerStMXe#g(LxOy8#!fX;*?Z9MgXfpr(^?vE9tbuRMsw z!EdzR1h+*z5i;g0!@Rg>U}x~G#BBjgv#$ceE!6B+fv*BvTVp^s;v|cQfLrE?~ zBhMDuC+VkG=JPCMRoYtq*$^J5Bcq!YG0nYk%f(v<4{T$71d5(6`S=CPvu7`i1Fnx+ ztwROeCkYRdYcw&1soTWX7p)cyw20|F$NbJPTbCR@^jZZ!M)T91Qj1mnuTh&-i^qZP z|ADojh&YAhmkzH~8&@opir>D+4GXO4z6}`IYB?#u`}BYqAoB?);II1r^dKe(z8bL< zKW!a-v&P7LkX$eP3J96dA)mEX?A7w2tYFa8#yPQ073u(WMV2OEIT?66PRDyF=YfBQ zboe*H3_OE^k!fY++YnJ9sqqyO{@^2Ekwn^2En~%b2P$BsQVGzuy+$JMWZ*E0Nzv4x z69|ZJKZk)_8CeT)h|<$58r1WtGLsmXj2%Oq5PwzL0y&Oru2=9{5ftRb0a7qOAttB;caO~FZi@r%#?7Xr?ZlKKqsVh|9-N?@IO z%t}@Sx22+RGo3fgwnsAzV*ilrQOOlgf~SXgSM?68dj1N-ki%$f)ZCh-f^6hDrd=sW ziWSNcho#$)iZPR9z^sYLvJt#S`xpjW0Zsrp7)C{*5;H0i8-`7Js^u29Zcu^Y99L~C ztwN~6rLcFireM4oqXD7I;rbn+Eb!qC>?0xL{^*qAgS2Z1r?2UphCh$h(-1s{_?|zm zH{Xs~w#=Uh~Me^xLwUew!P&P|9!f>pNRt-}wqpP$2d^f){H5 z^C19*+Z03p<(z3K3KM?`7O)x#5 zHs4JT&EsWS?!)oH2v4*x9}^OX-j}T2xif!#=Z>MrojXE^J9l^p&!-%lGNP9QK7qYg z$)J%v4S8nZhrIY@{!MjHdj?bD8_CZ-AMe~T?FWrq(ta~S`V@qvc#;+gO8U>bBe(-+ z`kFlGU~)(+`w&QoG-C*=2KF|?v+>bnj2OrBlh=sq;}zWrmF15nz;15j+y?#@hSX=K zmfj^B^1~k)Yo@^Pwy77WX(dSjWvLLp^kY`I+1qruCf>b=sKO>YJw-B|17vUD`69mfqCo%@V((8!`|q0D$NI|!{<8eEs+r!S zPH>!BRMP(QwRjJsLfbFvb4<%XIZLSHgpfafFw6L2%uY1ayl2;#w(qzAqQc&>7TWra zLKU@xB7PuX>|5|&#Cd(b{<#-m4;@iAT+txvvj=Xm8Zwjvp391#mK{=yyMXc$z=TOw zcUIQHgm+e!Hh)ggr1o4r$))nKu3)G8%?a+^e{Ga5%~9IyrP;64lgX{Z{pLK7=H zwrHN$0ZAXhTX-knyLoE^LKVhBSQPs$B?&YzjZFlnJW2RzIdVV5WqLNfz-y2ay;kex zuhL$=I(WM(T5mI0p^P&=2ucK(CsDa`Cu9ogFmVY}ZirgC47()oAcKUU!rM{~9T~-$ zSw-bYVQA3ZqGaik5Dy?h@cAPJhPH@8@e*-zW=;5LL1i?9K*C6I$}5sjuqMeEy5#){ z0}_M6&~>KzsH%vm^@T7Lihc$Hn^teR)&4O#R7t&pAkQ5z1+4qopTRpn0~engqyh5> zU{n)keTN_lC!d{tp!BfwTTMp99IzoAH;m#jEF>F-!%QCrXpAe3XN$b`01l2227Ls; zON9JK2z+)rjhg~_HjuL*=<`_tlEOgfN7{QI0TGQdkQ9jE;w1(?X)Gz4R#gI~U~9z3 zoU&bLNr+8fudK94`sr($1NhN})Ng?qE0*unekX5zrVD>%_26hUU(G-N0p55Bb1R-- zuws&ZbN#VzuJ_L;%rQ6I{0%e+E~K2$M2wy(gOCE~&(C08qKrb&hrA6C0sUc~olo%y zhwjZadiE8Oi7@!v8}1cUvVWuy#48#*LbgYA`BAebX&mHq(tOE~KxrhBm~B4M<{q?= zsI1N5?g|uvN;t!Y+YEvDc$o_&l-GK4@oT8A9dvU#A1CN z$H9J9k|!eetqlxd0MzoKyCWpTS-70Rd#?Ng0^+3lp&+qqhXR_D9$~joOzgeT?qwQn z0PJb_SOX2)7oghQX|8Ynd4R&(gm=D6jpg{|4^nFe`2PUv@dQtkT2#0FdUD!4F|80H z0QGKeJrt65^M}#~0o!j@Arv`IZLT*DfCG;55axzQh+#f*L!mUq{mC05J!wEM)TgK3 zmulqh6m=|)8Jsz1>;>m{_YGdw>e8!kxescBd2E{cBbXr~(V>ZD^-9g(9ybQ~R`Y>= zjV2QigT#H-La0ar}V{-i6WwB|IJeIy$`Kbctu&hh>xu1=PSZf$!1 z{`B4Vh;Pzrd=Cd_6w>O3>o`EQ>HUav(#Ok|CkLMBwL5yL0J_R|HkvR1ez?1jTCyvx zE|~MOE`+cl5|#Cy9YGZ#$~tlmA<`Z3AFs5TzCN7P`si<|LoxkA(GmHd7sEumz-|Y_7j>q>P4z25v_Y zZ+Q%6*P1Pu!HAlaHi&oRqGoa1oy?IY*Sx>R;H}Tm2v1(x2oJHb8PY*CIY4d%hCU4q z6AerUkj0uoA($nSP8Yk|BNoVkg%IeL2#BW^N0^fN-%PURj61RQ|8k{wy}r4j|H%$o zQhw8>@mm>?Z^93bSHOf7jt?>~`8{G^Mkj9|{I-}#OkuQgd#f2bh3KykHzjgr9N*}$ zAs@kwYEu|OAh~Qbw>SAe!?82+FeF2e^kk{>+sv#UMGe1hzHYW|^M5u9q&nu_cdEW* z9X^8f|GIyK%pJu&`XST$l_(UX4NpMpD-I|zB{~wwWump4dFo$e@8LSMfC1c8Egc04-rALH^c z!w{Fjd8o?bfzmHm`i{PsrhCTNqpiT-xeX>hQE}iaVc{FU^^ZFJO;ArC{M*~a6j)qw zaCpi6g10m*3!-Z#QYHBLqFY(}19J3b9sR?Bd+`>qsUCHeC`j35O9ylRwTv1iy2|R2o4e1fy6DRL-rn}r1g_rhZr}Q5LH{s+U4LO? z)U#(BdnVjqE`j9z>k11$g+Zs~U#%k{|NIpa03*!@;A=4q9+c?r1#0B{b~px_@wp`B z08kc9@jeXFdBJ+}8mSAKSNQ+C6FiQ_&5ZYm^uxmDeoy+? zXl_3&Y>!Om=B8cqE|6pq>teIko7#cX0YO(1UvJ#Pog7z=_k43Uoz9WT+%|;RS3!Y$ zxagn6*V>*1lh~JqlU%eXsfQ@_4_mISIu0#iPOIA&gLhvHOj5t=zgzh1}V zU1pWQ^T=J{h;p0@H%+310jaoV@ciOi37RkUHA4pe5pMxN4<4|P9Kccx!_dy`gJgrTU)!M4-59`y{vEkoC%v|23!cnj~riLjTgV*YJ%Q==7<2{9+N^5XbDofG_%4dlVnR<8~CC3#DB{1(Sdl z&k7uv7*(AZT9z0HM9&lWgu}4MfXsOaqrOJG@nIG~unkD0NNEP)5Z>cGNC$H)=UY@< zKn8)EX&<&nRHwGnm#LjbT=0+a!2$aD!M}M+i22p7-aIT9BL=oAw8w;N|{(LCF4iBfi~S1{bj5YR;+{aj!WuVM=kHUuMb2x*2MI2>4o>#{Q2sZsG! zYj*CgNqpy+z+S>uR`j~u_%D8O@PETAK0TRDk#G(|gGXjqoPx~m{0Qxu8Qpo<-qvpo z;VDeEg$Z848g#Ye=Sana7zH?ohBSeAg)a_<$5#lfph@1cvY$^-&=rU4b{mXADww@O z6okh>v|<;Eb*I>cFLUg|*Nk2Ga^nty7;@|aqq}=TDK@|U`s)Typ(gM)@6FKS?35ms zPRp-`X!&atcR6XEOqk~20>S6UNC5TtWDgzCWgEU4(Ivfmt8h%fD+kabeGv?q+)#0q z;vGM9LPk>1enN6!STD|x*Q}QUfxrW8-6K-if7CpDy#3(2dyk(yde%Jswz>D+cg>4? z&z{};)APrVwz&v&eg5>}(>sW6APq6?JkoVBDiTpd(4YT*_TFZ@jw{LclY4oBfjqer zPrO#@5V`_c1VoUkDhX0aO;J=8y7a+IQl;)iplA>{AWsp%Vc|m*3r#N%?U4t50gvqE z2l2qK;V1F$|Bu)^GtbFGf+|(rZu_dMK_D~tSL}$`@wFo&r~dO}>g&QxQh-<()FHt; zf+aeE5d{sxjnsPLP`;kZ%>Xk0lHe3k*x|_-h)N{TON`k>$gtQQ+yjD#(YN2hUB5#Q zY1{#hQ-@Kgx%g4)7|0chJ?Zw>?~8!X$u4<}Pv~d1FNf(M&+IDGg`qF^_xsWf;7HTQ zsyvXQPMzD~&W~RyPKxfDUzNq}{5Uy0J7k&6iV5=e(HYE1dM~J)VCv6{fU@UbYiK?$ z^U|}nBtaU~JU?Pq`^_gucMi_TRM9-JuPtwiIOg>sNzJm5N}Y8I!5BIZpPdFki(Jf- z^$ezAb-{nFBX)~7>$+zQY@SjEtsbs^x92Bkk5EuX4+_Q|VGo-S6#i~A3dY&;Ffr%h z)+-N$=^Pu>dU){c`QA3=TVBzl9LnUR@m)P(@iQ1oHSCL0PM-pQ-eBe=B#9mIL*JDP zj`z01xUeA|OgLAFg1L%!7ExUe|hgp@3!J6w&`8My&-o^*17C0>&V8+LG zO9^r7c-6<&gJEJJ39Uc<6fbhlaI_3T{^Fm58tYmYkB!jW1Kzba8=U6zqu;vd z=)P^&8-D$bhIjk<@&7=es80AdLcCCqe9sCC<^>=plIhLe`?geZ@0FXT#+vvdV_h2hpe2Pm!kU{7(ZNmXY@7}< z)OK-|oBHD}C9btc^vq-f8FX;Mw}{@8`?3;HvpVCZ3`_Ic$s>iAY~wENxF@$gU^p@5 z1=Lq{zoQ}HqeqcbAwCW_tiGFb_Vr!0ZrFPDT9<6Ll*cQE$CyTqB%Fa9{|gUtaCp?7 z<;03PXu^Xq!xE}&r`h?}M62&kaoB|E9bPivAI18O&9`1hd}WWJQteNEL;$6gXfb7x zx__VRHk+msyW@!|V{tpVlT*(A29O*#)8N{*4?oO+?SU~6-TAAcgF#1)mCbzLnx#2XWobRyRb|3^vgkv$~B(Lh#);*a1d76RD;R89(zt5 zFB^?)u~1{4Y&s*^vW%nj2GxtK(MPKl>M|RLLb*6Bvln(40ZFMyISr#=YYwd&aocp< z?xg00^_^Id!EfWh(nsPAv!7r%iTiZK`1xeZz)T}tU8S#(#2Cx;lAo5Q?a?GKbrHK< zTrntO#ue{^GZ?a=RJft-I2A#Jy3wporShueeqv-x^{uuel__sW1os9?6LQ@n4jH#d z8s#yPh-P4)w9tdLSMIU7f>oc~d-{r=3?-}I+vWYj$KTblZ z^rfR<8%r9lNO>liG7c9rOmaf}>RUAjyAy$s*=&+BlRelDpwmW7cst3BYes>UJ-C-hMV>qsTKM9*0w z`#QNFl!i`ZZ>R?vK)+GfS<~*%dJOBP`Z3hf zJZOt_O<}yxecsv*eW~>h*G^`y<2|_Db!((YJV)ZfbnILJbvqbQqGk0v4?rbE5u~D@ z5gONjDm1RoL&Fp|3yIOEO@W#h8ta@_Ip;T+2=BuP!JShrpH~Ln1x0L=*n3y4%#If* zmD<6GSE##l3-OI>5|g9P?N(Gmrr8ZFeo3#0_qr{pBc(4Z*=8~%D8)T0)I#o`i?d`- z)I!jTW z#RIRd&2b9{o0k3zUZ(BaU`RI)G`PRt<_?ViD5EX+UUPlv2ZF+v+yO%o&q*gLma#Y4 zldm<3DgcUde>O0tIG}r7f5I5fSAt`Eb^0kz%3MP8W$w=*A$vy@9rWcI6enb7dvwE% zzDIUZa{C7415hz9T?j{+WJ%hkC*)p`OIvPf4v11DIfM^t2szh@8!n#RX?J#;k72X; zVFB^Y17`O%H?1PeMlMKo@sJv=S7!oL+~CAda6g)?wz{+#;W-4pgEpxd!)|vJz9(f( zGm#c4M6EXf5p^YACw5wu4uJLN&74+&s4pxqZOSwd6AvEq$UL|L)nRZ!fj)l(wtB`-1e#b8j~f4{--@d5zC{ zxYPesgDm{CKc+sthX-Q!iAV0NZ}oU?_yr%He2UwkUB+!+AgT+wjf3~uxYt*FA$wA9 z&?s;wz^eEtV{Re*C@QQP?+dSBn)d8F^!4>kT|_>+PvGw*dEdn`4* z8r!hpOwkhXLn}$W^b(bLNpdB9& zh(QG=Wjw4xWorrL)6`wtFZG+tprvxK2$f&cVSp+WWrmSlSspD0|L0scy@%uS-w_;? zZGwDy4aHxy0otUpXNfH{L|;LYkdLoc*LUlSi@~a#G*3QFX|gcBPg*FZh}vgZzeC1r z@oav+pA2Ejtl~nm^IV@Sqc(Lz4XtrTylbFQMZ&%fyg$RTw4J%7dG6Z-vLhTdnYmPq zd!=T#E{%5QiE6VL`^vCDC*<=AQT0AFYH1N;FQAk@JTo5y^Xl#Y>yMZAJbnce92{%G zyfB>3f@X*_RI05Cy|#9C{&QWuYJcmInR190gl-eDV7sY-<>ekT-~^RYP7Q{8y&ifU z@ndGRjt6e#I|rF7Xj~2=)IBmXwkxf;TXpupr9SdnYI`L@yp9(qU6svI`f1~B4QS8? z3=G=R{Sbzf?%*^|ryV5w+Jj+1vx*f9LH}RiU_-(uhQk*#r#nbBdrDmBJgsDQ5u~VO z7FwW?qI%JOmoAcLC}az_uyzot;$R1oMizFkX^Gm5IgRUe0`W?Ggose(Uc`uU&yfRi zSMm7H-OaCW-u)L`G(z_wN<(L1WhW=e_>)_=9lv{XVbd=^awA(uOCpst^AOcf9iBCe zlU+IN;y3uMooLE#p3Ba#4T=#yJeY9n;P}Nx@;Qe*i0|entH&qDyTz0{ccSJ;5$pb^ zDPFx!m!*}uWcrH%m!X^CZqrnCm5Im?;@E9eBepVpXKyzK!azw4Hb`cZd9ksS)KIr= z-Hcs_`F6@?NU!RDl795wH(6Tal}m|0P}cHqeySyC6go__2pGsfE>JC^giaBK>I$;G zvSgHUOLW@?5U`H`Nx=vFg>Z&|6ID1|1_V6WiD*Ud!YQ|@c580!d5me%}{Iz%VTRd z#uyOQakCenm0gRj&0$i^kDLR=yr4_%g*R_)S?dy}Pt3|zuTvkpQuvJi?t3|Rb|%MK z*w#w3b-9(K+vN%F!xPeNq^I1NR<^dk$&?;6Tib6wrSacxLg&ra%Qu_QpUQj4G1-y2*jD>^S)gC>r>AyIYc|l)v%ca|v-p$7oUVN;rUxW19u-DvPzEOmJTW>{U#9XTYCBzS|{dr*sT; zM9f2yZTYVtPxlm{VjOZ6MWX~BBjslouQ=WpDwK&|)UWOB@{5!XTy)&rp%catY^^eU zH(PFNU9=}?TSgqV`({PNWftO=Ce9bzgxWqk7_B)oZmLr4C;BbzJziJLcXpZyxW0bL z`9P1e)-jHba92f7e36awA8NCsRN!4zpl%67;j50>qfZbSa4CXdSML)KLLM3JxpFy+ zUo-9?ZiCC)^P-r5?~qyc76BgY`|b`gQh0kRZt#o?#;Ie1g&7}JgtGbgC`pOn(|u4i z1L*|x=tl8Z8zpJzC;~%AN*k)*`FaFK7YdFpT8!+@VlG%ASAOonqfJ3S2@NxG3N55_ zh7>z6*H~72Z|)3F5_bOt2XSoVjE`8ip-K?*f<0=t<~DWQPt6XW%i${q;MkI+?CCxL z)5Ff)@bJVj-RTQ^ipg}3`%}BGAQgtD0q$oo{t;JxsjPDVE7>C_J`Tud#4@|lKas_& zkN}a?c@uqr;S2`3dWkh?y66pSGl1{~kwHi#y2(@8#8)ar01o*E@BQ6__wPS#N-|-^ zd|Y&5(OI2Yx!w8nA$I-UCtu+!i70>6kIYj>`a-gpkq28jFu7tAr4Jm9Ef?tb2whYU zc>8T8m3M{Rl^x*QZ!=Bl9c}NUfWZuUl_RfEuAJ=@8gIiaW9O6T#8D@wWZ}(A)PGT7 zg&_A%lgPtMtsN(EXqw+mpR>GUXD^d%2qxr9CGDlSn=pw)v4>~GcHO%39XAIKb$N1* z!k3;etriU`($R-&xR(Pzr@FCGmR1V3iC?}mA6$`_$RS!*<=h&<6h*yb>LHA_9{h1j z|7~wQ*g`xzl@!1A@%hWG(bjT_OVP&@*Wrn}=OlJSP;@y~W%+k`@MZNDbSVQ50E-I; z{IOk+E0RMgbA)n6M4$DuVz*5tY|{MVdU|H)pZnR|+JerQE&u2LKHJ*5!u&idiN|z3 zYKKqj1UXaB`I^AK$dlDgQwe5PO$OpJkhMeDhO>#=%G)PYSTI@~U)4;R zjq+T4ZMzDkT0v>y3~?bXm>q9^%H&?xY>>KIbtCEPb9B6?qA=h67co4OGD0MVF1HZW zOPX@1VfVUNDS2Se@b2dcmT^0lu0m0KFLv`i9bIPU2B41K2tQE~8<;E(SE%bLsgcFh z$l2c{ zxhtLe-gNA66eovqd=0l_UE{dhwL)0v3LhZbTd8Td?Aet@g)r9xt@?Y?m+BAARM@rzmU6J zYL<4_;XL7{(?)5-v~diyw0oUb$J<*Bd9txI!*q=WZ#Uh_9hGafD1#)s z%cZC5&H2IPP#&z8MX-27PG*`;Iisk}a#otbU{|nUr+|;(S`al^BEr#*t>LgxcwXiR zV?epHZ9EnWp+EWwKJ%kkn*443Z!bFb@+M2v?#q9YXR~Zb2gq`Es@*F$8n6^d3%xF| zfY@Cp&*(3}<*PIxYv6xfv`a|Tor$#s?p3STAyIU_1LDh6*kV?vWk zrB!MpW2`{#ICRUg`u0-qV;ZoZb8Up!a}Tql#V0^mFZxFSEbTc-;@X42W)pK!PvoR= zy+cXZep5xSvm*m@ymz&er_1X;i7)qB6-ug5w1#2E9=zGP0t@S2EL+SXe>$%V;K1zu zS~h3$Xay`|QlWKWgbZWWw&OFy!4YK4H!_6`v6Y&S)Vyymo_RPhdd|dA==Ol zwLb;2SE*+CPyaD8dR+jswV)2d2Ak?*_l&2%_cdJX4bZ#TeXHD7`Qv1X_z#0 zB}xWyowQ+F?v`TRJ3F>?@&;-Gr}ab!dEEMo&Sf5uP=?U-IBZ`_6P@UoNOE}2`q?iS zn@`FN_)hn`x>>N0jjX+dbwCANmfQzIjU8x+Os&AD_S7&R6bAx6P)GOHrhQ@|j>FT6 z*zEzfn`M1zoQkqxgDlcHyh;z-?jnWoSZZ`)8_$gFa%;vOQ4~j+d^oTtnMZEt&@vye zbA9);-K1$y;k?N(00bt7J8|PfqN@5Qx;p@OaSia&l9JG}DVb203+^{*zjg5>(%q{3L>gML%-`?9WyY9eThz1u#&;vARqk=c!VJntoX8?L(ZrG2P zE||2UxWnfCQ0m@qP=j3c?y{jdEZ)YnR_@SHx7GiZ-QD#sf9N$Xv|)o?il^OUDkd2E zkB&iCoWV9!^#~tmkpI%s=KicHzng>&%se7J;a|qbRBB|&-Ok*Hy0Cp%gE3M&nV5sa z%E^M*)sNy3MoBy7j_J}8dX&ti%s=djx+j5ChJ=|ozZ9$jPd~~tm}?jcICY_-;9e0T zjG}OK<}7}YP3b?%84dD=fHNhvsM{tp5mtkOg*x|``vT*|*48=33;owKV4UW)sK3^P zp?F28rF^?Z>8L~D! zCgv~!2@zKqeTBXRB;AR55P&TBs>;{L5=FV?I^7-mF!8zl5URLB1@_q<3%<7>mRmQ> zLS$WLApJ&v7iTXQJ?m@=^)#h7OSXMadMscW8xK==UIa%wuINs8xV$b4cn)mS!Za5D zq_k}gqp6Tx0xxqZaYWmYY%PxP)C0$qpJ8$=?rM!8Z*|Msyl=4&ejLBD0c;ObqH*85 z;Ki&gYxqx_^~+LcW>2jyJ(nojB-8ZlxL<9woq)d6jdR0>dIr`o zgUP0R69gN;Nt56M3v8O;>iV_?{Y$ePX9kIqDaTU`K1ze(7;Y!KZoTUidO99cVw%%N@(Hx`xb$^`tM7?A zA(!%sC+_ifRfG}KIe7>#x64i%h;6v?esCJmdh%CI`h93!i|E2BsbK(I@=OraGdaE@ z6USjdNb8R=%5{yZ3%J+HG|=H8;YxwU&Cw|u+S)gY$s#(=9BXii&c|&jzLCmDUk^lCIYol?^Z{9I=G;x0>NYV`&1 z5Tnre>DA)S92st7w0$ML)?G>ayZk0330c`^Y$}Dls>k2_rVLb`GR<6RK|3=|KBk+( zxhw1!uWb3yd&rd4Pd4;c^)TkMEAL;aIKv1PQu74!zSwtm=LyXBHr!XYVYKf$EGRD) z2Lm=leywA)7^j2A;TEh3^;r;-O>lg`KIb{gu9$;Lq{r(0w0S(8?!UOIB;g{Na=p=M zj-6m!B0wW%a1t}JMwKKJ=(v0sZ@fxFV{*bSfFj~}+N0j*@4pd^l$34e1-5|g~R?~ znfNsT^cnXZ&0zEG>Cp0VW4Xlm$oZj7K9Z>1J%Pn4N2VfO2*RR4ST3m1Y(3~aj9Ls^ zm`&pXw}({y(*D75bOJYQ4~`B}^@fa2W>#^2bnK8T5Rg_9zI-*PRBNN_H`2vE1oYj&XQw@aSEzxDH?G*T3W65vo}P|*mg zN|ddCb2`c9|4vDzLWONexzaem7L3u9&sT8suWVnrytT5jb_I1w+l37t%OIiPG6}@F z45R#t6Gq0aD8=^TJ#=|$=*Tl#rERz-&5n0oto3kW0G0h!97QtSQI>_FjLNUXP~n5H zo9)EUO}nj?S0ZV!>Y`uLD%mtv_dLfsJuUP5*5y3W3fAd;OJ5zz^5B8EZUlsUK`=5D zFeC(_3j;epOi5fFS=u|Rj$8jNNwhupnN5fCW2zU1(=3s_5>WDGB8SlV!0A@xkRC

      Q-{)K3 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 diff --git a/Mac/Resources/version.r b/Mac/Resources/version.r deleted file mode 100644 index 85d7466136e..00000000000 --- 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 0ee2ce00080..00000000000 --- 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 HcmV?d00001 literal 581 zcmZQz6=PsvV!#BU*%R)8pBtOK$^II}H+ z>~sTS6^pwJc|g7#0|y5q3xlvzX=YA}v%9BbK|xMxiC$50QF3K*aAmP(QBiVgaVpaa zkVsIls|(O-ejvmETUi*zA%cuq3=G_TU!pnce&_P3G;ZQQ`%0FXPp6k#GMbkq;_F%7 zcEi6%oq%c?84a!kgY|&?19CExiU5%2&MVEy0n#!I3.cgi -will be created. Move it to the appropriate location in the HTTP document tree. -Make sure your web server is configured to handle .cgi applet files. Usually -it is configured correctly by default, since .cgi is a standard extension. -If your CGI applet starts up for the first time, a file .errors -is created. If your CGI script causes an exception, debug info will be written -to that file. - - -Using PythonCGISlave - -Place the PythonCGISlave applet somewhere in the HTTP document tree. Configure -your web server so it'll pass requests for .py files to PythonCGISlave. For -Webstar, this goes roughly like this: -- in the WebStar Admin app, create a new "action", call it PYTHON, click the - "Choose" button and select our applet. Save the settings. -- go to Suffix Mappings, create a new suffix .PY, type TEXT, creator *, and - choose PYTHON in the actions popup. Save the settings. - - -How it works - -For each Python CGI request, the web server will send an AppleEvent to the -CGI applet. Most relevant CGI parameters are taken from the AppleEvent and -get stuffed into the os.environ dictionary. Then the script gets executed. -This emulates Unix-style CGI as much as possible, so CGI scripts that are -written portably should now also work under a Mac web server. - -Since the applet does not quit after each request by default, there is hardly -any startup overhead except the first time it starts up. If an exception occurs -in the CGI script, the applet will write a traceback to a file called -.errors, and then quit. The latter seems a good idea, just in case -we leak memory. The applet will be restarted upon the next request. - - -Please direct feedback to and/or . diff --git a/Mac/Tools/CGI/PythonCGISlave.py b/Mac/Tools/CGI/PythonCGISlave.py deleted file mode 100644 index f14a582daeb..00000000000 --- a/Mac/Tools/CGI/PythonCGISlave.py +++ /dev/null @@ -1,244 +0,0 @@ -"""PythonCGISlave.py - -This program can be used in two ways: -- As a Python CGI script server for web servers supporting "Actions", like WebStar. -- As a wrapper for a single Python CGI script, for any "compliant" Mac web server. - -See CGI_README.txt for more details. -""" - -# -# Written by Just van Rossum, but partly stolen from example code by Jack. -# - - -LONG_RUNNING = 1 # If true, don't quit after each request. - - -import MacOS -MacOS.SchedParams(0, 0) -from MiniAEFrame import AEServer, MiniApplication - -import os -import string -import cStringIO -import sys -import traceback -import mimetools - -__version__ = '3.2' - - -slave_dir = os.getcwd() - - -# log file for errors -sys.stderr = open(sys.argv[0] + ".errors", "a+") - -def convertFSSpec(fss): - return fss.as_pathname() - - -# AE -> os.environ mappings -ae2environ = { - 'kfor': 'QUERY_STRING', - 'Kcip': 'REMOTE_ADDR', - 'svnm': 'SERVER_NAME', - 'svpt': 'SERVER_PORT', - 'addr': 'REMOTE_HOST', - 'scnm': 'SCRIPT_NAME', - 'meth': 'REQUEST_METHOD', - 'ctyp': 'CONTENT_TYPE', -} - - -ERROR_MESSAGE = """\ -Content-type: text/html - - - -Error response - - -

      Error response

      -

      Error code %d. -

      Message: %s. - - -""" - - -def get_cgi_code(): - # If we're a CGI wrapper, the CGI code resides in a PYC resource. - from Carbon import Res - import marshal - try: - code = Res.GetNamedResource('PYC ', "CGI_MAIN") - except Res.Error: - return None - else: - return marshal.loads(code.data[8:]) - - - -class PythonCGISlave(AEServer, MiniApplication): - - def __init__(self): - self.crumblezone = 100000 * "\0" - MiniApplication.__init__(self) - AEServer.__init__(self) - self.installaehandler('aevt', 'oapp', self.open_app) - self.installaehandler('aevt', 'quit', self.quit) - self.installaehandler('WWW\275', 'sdoc', self.cgihandler) - - self.code = get_cgi_code() - self.long_running = LONG_RUNNING - - if self.code is None: - print "%s version %s, ready to serve." % (self.__class__.__name__, __version__) - else: - print "%s, ready to serve." % os.path.basename(sys.argv[0]) - - try: - self.mainloop() - except: - self.crumblezone = None - sys.stderr.write("- " * 30 + '\n') - self.message("Unexpected exception") - self.dump_environ() - sys.stderr.write("%s: %s\n" % sys.exc_info()[:2]) - - def getabouttext(self): - if self.code is None: - return "PythonCGISlave %s, written by Just van Rossum." % __version__ - else: - return "Python CGI script, wrapped by BuildCGIApplet and " \ - "PythonCGISlave, version %s." % __version__ - - def getaboutmenutext(self): - return "About %s\311" % os.path.basename(sys.argv[0]) - - def message(self, msg): - import time - sys.stderr.write("%s (%s)\n" % (msg, time.asctime(time.localtime(time.time())))) - - def dump_environ(self): - sys.stderr.write("os.environ = {\n") - keys = os.environ.keys() - keys.sort() - for key in keys: - sys.stderr.write(" %s: %s,\n" % (repr(key), repr(os.environ[key]))) - sys.stderr.write("}\n") - - def quit(self, **args): - self.quitting = 1 - - def open_app(self, **args): - pass - - def cgihandler(self, pathargs, **args): - # We emulate the unix way of doing CGI: fill os.environ with stuff. - environ = os.environ - - # First, find the document root. If we don't get a DIRE parameter, - # we take the directory of this program, which may be wrong if - # it doesn't live the actual http document root folder. - if args.has_key('DIRE'): - http_root = args['DIRE'].as_pathname() - del args['DIRE'] - else: - http_root = slave_dir - environ['DOCUMENT_ROOT'] = http_root - - if self.code is None: - # create a Mac pathname to the Python CGI script or applet - script = string.replace(args['scnm'], '/', ':') - script_path = os.path.join(http_root, script) - else: - script_path = sys.argv[0] - - if not os.path.exists(script_path): - rv = "HTTP/1.0 404 Not found\n" - rv = rv + ERROR_MESSAGE % (404, "Not found") - return rv - - # Kfrq is the complete http request. - infile = cStringIO.StringIO(args['Kfrq']) - firstline = infile.readline() - - msg = mimetools.Message(infile, 0) - - uri, protocol = string.split(firstline)[1:3] - environ['REQUEST_URI'] = uri - environ['SERVER_PROTOCOL'] = protocol - - # Make all http headers available as HTTP_* fields. - for key in msg.keys(): - environ['HTTP_' + string.upper(string.replace(key, "-", "_"))] = msg[key] - - # Translate the AE parameters we know of to the appropriate os.environ - # entries. Make the ones we don't know available as AE_* fields. - items = args.items() - items.sort() - for key, value in items: - if key[0] == "_": - continue - if ae2environ.has_key(key): - envkey = ae2environ[key] - environ[envkey] = value - else: - environ['AE_' + string.upper(key)] = str(value) - - # Redirect stdout and stdin. - saveout = sys.stdout - savein = sys.stdin - out = sys.stdout = cStringIO.StringIO() - postdata = args.get('post', "") - if postdata: - environ['CONTENT_LENGTH'] = str(len(postdata)) - sys.stdin = cStringIO.StringIO(postdata) - - # Set up the Python environment - script_dir = os.path.dirname(script_path) - os.chdir(script_dir) - sys.path.insert(0, script_dir) - sys.argv[:] = [script_path] - namespace = {"__name__": "__main__"} - rv = "HTTP/1.0 200 OK\n" - - try: - if self.code is None: - # we're a Python script server - execfile(script_path, namespace) - else: - # we're a CGI wrapper, self.code is the CGI code - exec self.code in namespace - except SystemExit: - # We're not exiting dammit! ;-) - pass - except: - self.crumblezone = None - sys.stderr.write("- " * 30 + '\n') - self.message("CGI exception") - self.dump_environ() - traceback.print_exc() - sys.stderr.flush() - self.quitting = 1 - # XXX we should return an error AE, but I don't know how to :-( - rv = "HTTP/1.0 500 Internal error\n" - - # clean up - namespace.clear() - environ.clear() - sys.path.remove(script_dir) - sys.stdout = saveout - sys.stdin = savein - - if not self.long_running: - # quit after each request - self.quitting = 1 - - return rv + out.getvalue() - - -PythonCGISlave() diff --git a/Mac/Tools/CGI/PythonCGISlave.rsrc b/Mac/Tools/CGI/PythonCGISlave.rsrc deleted file mode 100644 index caf8e7634166a392d411990e4ff820ef0f7ce4f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 581 zcmZQz6=PsvV!#BU*%R)8pBtOK$^II}H+ z>~sTS6^pwJc|g7#0|y5q3xjY#Wl2VUp0m4Wa86=bs$NlXQF5ejPJX&(QBiVgaVpaa zkVsIls|zE;e;@$rL<3t{7{wt%j9Cl}+KLmnGus zS>ATTzek;bY8e>~t^|Yifcyh;GLwn`kmk-S&B+1MG7Jm|bsTCdI(aXeeFZ551IA7d zpg%k;?tJxd;z3EOho7h`v--vh%qz(eH6vO z - - - Creating CGI scripts with MacPython - - - -

      Creating CGI scripts with MacPython

      -
      -Note: this document is work-in-progress, and not tested. -
      - -

      MacPython allows you to use Python as a CGI scripting language -for your webserver. Moreover, there are some helper applications -that allow you to write your CGI scripts in the same way as for -Unix and Windows, i.e. obtaining their arguments from os.environ -and sending their results to stdout. MacPython also has -all the facilities to program CGI scripts in the Macintosh way, -through AppleEvents, but that falls outside the scope of this -document (reading the source code for the helper scripts will -give you an idea about how to do this).

      - -

      For the purpose of this document we will assume you are using -Apple's Personal Webserver 1.5, which comes standard with your -machine as of MacOS 9.

      - -

      The first step is to start the webserver, you will find it -in your control panels. Give it a folder to serve documents from, -and check that it is working by pointing your browser at it.

      - -

      The next step is to tell the webserver that documents with -a ".py" extension should be served through -the PythonCGISlave helper application. Open the webserver, -choose Preferences, tab Action, Add, Start on Extension, extension -".py", select application PythonCGISlave (which -lives in Python:Mac:Tools:CGI).

      - -

      The last step is to try it. Put the following script in Macintosh -HD:Webpages:hello.py (assuming your webserver has the default -settings for its document folder):

      - -
      -

      print "Content-type: text/plain"
      - print
      - print "Hello world!"
      - import time
      - print "Local time is", time.ctime(time.time())

      - -

      Point your webbrowser at http://localhost/hello.py -and check whether it works. - - - diff --git a/Mac/Unsupported/unshar.py b/Mac/Unsupported/unshar.py deleted file mode 100644 index ec14f2ebfdf..00000000000 --- a/Mac/Unsupported/unshar.py +++ /dev/null @@ -1,97 +0,0 @@ -# Extract files from a SHAR archive. -# Run this on the Mac. -# Usage: -# >>> import unshar -# >>> f = open('SHAR') -# >>> unshar.unshar(f) - -import string -import EasyDialogs - -def unshar(fp, verbose=0, overwrite=0): - ofp = None - file = None - while 1: - line = fp.readline() - if verbose > 3: print 'Got:', `line` - if line[:1] == 'X': - # Most common case first - if ofp: ofp.write(line[1:]) - continue - if not line: - if verbose: print 'EOF' - if ofp: - print 'Unterminated file -- closing' - ofp.close() - ofp = None - break - if line[0] == '#': - if verbose: print line, - continue - if line[:14] == 'sed "s/^X//" >': - if verbose: print "!!!", `line` - i = string.find(line, "'") - j = string.find(line, "'", i+1) - if i >= 0 and j > i: - file = line[i+1:j] - if '/' in file: - words = string.splitfields(file, '/') - for funny in '', '.': - while funny in words: words.remove(funny) - for i in range(len(words)): - if words[i] == '..': words[i] = '' - words.insert(0, '') - file = string.joinfields(words, ':') - try: - ofp = open(file, 'r') - ofp.close() - ofp = None - over = 1 - except IOError: - over = 0 - if over and not overwrite: - print 'Skipping', file, '(already exists) ...' - continue - ofp = open(file, 'w') - if over: - print 'Overwriting', file, '...' - else: - print 'Writing', file, '...' - continue - if line == 'END_OF_FILE\n': - if not file: - print 'Unexpected END_OF_FILE marker' - if ofp: - print 'done' - ofp.close() - ofp = None - else: - print 'done skipping' - file = None - continue - if verbose: print "...", `line` - -def main(): - import sys - import os - if len(sys.argv) > 1: - for fname in sys.argv[1:]: - fp = open(fname, 'r') - dir, fn = os.path.split(fname) - if dir: - os.chdir(dir) - unshar(fp) - else: - import macfs - fname = EasyDialogs.AskFileForOpen() - if not fname: - sys.exit(0) - fp = open(fname, 'r') - dirname = EasyDialogs.AskFolder(message='Folder to save files in:') - if not dirname: - sys.exit(0) - os.chdir(dirname) - unshar(fp) - -if __name__ == '__main__': - main() diff --git a/Mac/_checkversion.py b/Mac/_checkversion.py deleted file mode 100644 index 91b395448b2..00000000000 --- a/Mac/_checkversion.py +++ /dev/null @@ -1,16 +0,0 @@ -"""This file (which is sourced, not imported) checks the version of the -"versioncheck" package. It is also an example of how to format your own -_checkversion.py file""" - -import pyversioncheck - -_PACKAGE="MacPython" -_VERSION="2.3a2" -_URL="http://www.cwi.nl/~jack/macpythonversion.txt" - -try: - _myverbose=VERBOSE -except NameError: - _myverbose=1 - -pyversioncheck.versioncheck(_PACKAGE, _URL, _VERSION, verbose=_myverbose) diff --git a/Mac/mwerks/errno_unix.h b/Mac/mwerks/errno_unix.h deleted file mode 100644 index 4127f3ce0ec..00000000000 --- a/Mac/mwerks/errno_unix.h +++ /dev/null @@ -1,63 +0,0 @@ -/*********************************************************** -Copyright 1991-1997 by Stichting Mathematisch Centrum, Amsterdam, -The Netherlands. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the names of Stichting Mathematisch -Centrum or CWI or Corporation for National Research Initiatives or -CNRI not be used in advertising or publicity pertaining to -distribution of the software without specific, written prior -permission. - -While CWI is the initial source for this software, a modified version -is made available by the Corporation for National Research Initiatives -(CNRI) at the Internet address ftp://ftp.python.org. - -STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH -CENTRUM OR CNRI 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 -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - -******************************************************************/ - -/* -** There are various sources of unix-like error numbers: GUSI headers, -** MSL headers and Carbon-specific MSL headers. The later are triggered, -** apparently, by the _POSIX define. -*/ -#ifndef USE_GUSI2 -#define ENOTDIR (-120) -#ifndef __MSL__ -#define EACCES (-54) -#endif -#ifndef _POSIX -#define EEXIST (-48) -#define ENOENT (-43) -#define ENFILE (-42) -#define ENOSPC (-34) -#define EIO (-36) -#endif -#define EBUSY (-47) -#define EROFS (-44) -#endif - -#ifndef USE_GUSI2 -#define ESRCH 3 -#define EINTR 4 -#define ENODEV 19 -#endif -#ifndef _POSIX -#define EBADF 9 -#define EINVAL 22 -#define EMFILE 24 -#endif - diff --git a/Mac/mwerks/macuseshlstart.c b/Mac/mwerks/macuseshlstart.c deleted file mode 100644 index edbb24628a7..00000000000 --- a/Mac/mwerks/macuseshlstart.c +++ /dev/null @@ -1,29 +0,0 @@ -/* -** mac __start for python-with-shared-library. -** -** Partially stolen from MW Startup.c, which is -** Copyright © 1993 metrowerks inc. All Rights Reserved. -*/ - -#include - -/* - * clear_stackframe_backlink - set 0(SP) to 0 - * - */ - -static asm void clear_stackframe_backlink(void) -{ - li r3,0 - stw r3,0(SP) - blr -} - -void __start(void) -{ - char *argv = 0; - - clear_stackframe_backlink(); - main(0, &argv); - exit(0); -} diff --git a/Mac/mwerks/malloc/README b/Mac/mwerks/malloc/README deleted file mode 100644 index 56547e733d5..00000000000 --- a/Mac/mwerks/malloc/README +++ /dev/null @@ -1,84 +0,0 @@ - - What is this? - ------------- -This package is a memory allocator for the Macintosh. It was initially -implemented for use with the MetroWerks CodeWarrior compiler on the -PowerPC Mac, but may also be useful (in a more limited way) for use -with MW 68K or Think compilers. - -This is distribution 1.1, dated May 28, 1997. - - How does it work? - ----------------- -Actually, 99% of the code comes straight from the old old BSD-unix -"fast malloc", only the interface to the low-level memory allocator -and the handling of large blocks is different. The allocator follows -one of two strategies, based upon block size: -- for small blocks (anything up to 8K, as distributed), the size is - rounded up to the next power of two, and that much is - allocated. Realloc, etc. understand about this. Small blocks are - packed into 8K segments. -- Larger blocks are allocated directly using NewPtr(). - - Why should I want it? - --------------------- -The reason for writing this is that I've had serious problems with MW -malloc, especially in one piece of software, the Python -interpreter. Python is a very-high level interpreted language, and -spends very large amounts of time in malloc. Moreover, it reallocs() -like there's no tomorrow, and allocates and frees tiny and huge blocks -intermixedly. After some time running, this caused two things (using -the original MW malloc): memory useage grew exponentially and so did -runtime. MetroWerks have tried to be helpful, but I have been unable -to provide them with simple sample-programs that showed the problem: -it seems to be something to do with fragmentation and only happens -under very heavy use. - -The 68K MW malloc has the same problems, and the Think C malloc -has a similar one: it shows the same growth problem but not the -increase in runtime. - -Two additional reasons for using it: -- It is blindingly fast. -- It has pretty good range checking and such (enabled with a #define), - so it'll help you catch various programming errors like referencing - outside the bounds of the malloced block. - -One reason for not using it: -- It is rather wasteful of memory. Small blocks, on average, occupy - 25% more memory than they need, and the allocation in 8K chunks - wastes another 50K (on average). Also, memory is never returned from - malloc()s pool to the Memory Manager. - - How do I use it? - ---------------- -You may want to look at the source: most debugging options are off by -default, and so is returning cache-aligned blocks. Near the top of -malloc.c you will see a couple of defines you can turn on. - -For MW PPC: simply add the sources to your project. Due to the way the -linker works all mallocs will use the new malloc, even the malloc -calls that come from the libraries. - -For MW 68K: ditto, only supposedly the library malloc calls will still -use the original malloc. The two packages don't bite each other, -however, so there shouldn't be any problems. - -For Think: more work, but you can rebuild the ANSI library with this -malloc, since the Think distribution contains everything you need for -this. - - Is that all? - ------------ - -Yes. Let me finish off by asking that you send bug reports, fixes, -enhancement, etc to me at the address below. - - Jack Jansen - Centrum voor Wiskunde en Informatica - Kruislaan 413 - 1098 SJ Amsterdam - the Netherlands - - - diff --git a/Mac/mwerks/malloc/calloc.c b/Mac/mwerks/malloc/calloc.c deleted file mode 100644 index 41d69ea9883..00000000000 --- a/Mac/mwerks/malloc/calloc.c +++ /dev/null @@ -1,53 +0,0 @@ -/*- - * Copyright (c) 1990 The Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#if defined(LIBC_SCCS) && !defined(lint) -/*static char *sccsid = "from: @(#)calloc.c 5.6 (Berkeley) 2/23/91";*/ -static char *rcsid = "$Id$"; -#endif /* LIBC_SCCS and not lint */ - -#include -#include - -void * -calloc(num, size) - size_t num; - register size_t size; -{ - register void *p; - - size *= num; - if (p = malloc(size)) - memset(p, '\0', size); - return(p); -} diff --git a/Mac/mwerks/malloc/malloc.c b/Mac/mwerks/malloc/malloc.c deleted file mode 100644 index 38bd32a857b..00000000000 --- a/Mac/mwerks/malloc/malloc.c +++ /dev/null @@ -1,447 +0,0 @@ -/* - * Attempt at a memory allocator for the Mac, Jack Jansen, CWI, 1995-1997. - * - * Code adapted from BSD malloc, which is: - * - * Copyright (c) 1983 Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#if defined(LIBC_SCCS) && !defined(lint) -/*static char *sccsid = "from: @(#)malloc.c 5.11 (Berkeley) 2/23/91";*/ -static char *rcsid = "$Id$"; -#endif /* LIBC_SCCS and not lint */ - -/* - * malloc.c (Caltech) 2/21/82 - * Chris Kingsley, kingsley@cit-20. Modified by Jack Jansen, CWI. - * - * This is a very fast storage allocator. It allocates blocks of a small - * number of different sizes, and keeps free lists of each size. Blocks that - * don't exactly fit are passed up to the next larger size. - * - * Blocks over a certain size are directly allocated by calling NewPtr. - * - */ - -#ifdef USE_MALLOC_DEBUG -/* You may also selectively enable some of these (but some are interdependent) */ -#define DEBUG -#define DEBUG2 -#define MSTATS -#define RCHECK -#define VCHECK -#endif /* USE_MALLOC_DEBUG */ - -/* - * Set the next define if you want to return memory that is aligned to 32-byte - * boundaries. This allows 604 (and, to a lesser extent, any PPC) programs to - * make better use of the L1 cache. - */ -/* #define USE_CACHE_ALIGNED 8 /* The alignment (in 4-byte words) */ - -typedef unsigned char u_char; -typedef unsigned long u_long; -typedef unsigned int u_int; -typedef unsigned short u_short; -typedef u_long caddr_t; - -#include -#include -#include - -#ifndef NULL -#define NULL 0 -#endif - -static void morecore(); - -/* - * The overhead on a block is at least 4 bytes. When free, this space - * contains a pointer to the next free block, and the bottom two bits must - * be zero. When in use, the first byte is set to MAGIC, and the second - * byte is the size index. The remaining bytes are for alignment. - * If range checking is enabled then a second word holds the size of the - * requested block, less 1, rounded up to a multiple of sizeof(RMAGIC). - * The order of elements is critical: ov_magic must overlay the low order - * bits of ov_next, and ov_magic can not be a valid ov_next bit pattern. - */ -union overhead { - union overhead *ov_next; /* when free */ - struct { - u_char ovu_magic0; /* magic number */ - u_char ovu_index; /* bucket # */ - u_char ovu_unused; /* unused */ - u_char ovu_magic1; /* other magic number */ -#ifdef RCHECK - u_short ovu_rmagic; /* range magic number */ - u_long ovu_size; /* actual block size */ -#endif - } ovu; -#define ov_magic0 ovu.ovu_magic0 -#define ov_magic1 ovu.ovu_magic1 -#define ov_index ovu.ovu_index -#define ov_rmagic ovu.ovu_rmagic -#define ov_size ovu.ovu_size -#ifdef USE_CACHE_ALIGNED - struct cachealigner { - u_long ovalign[USE_CACHE_ALIGNED]; - } ovu_aligner; -#endif /* USE_CACHE_ALIGN */ -}; - -#define MAGIC 0xef /* magic # on accounting info */ -#define RMAGIC 0x5555 /* magic # on range info */ - -#ifdef RCHECK -#define RSLOP sizeof (u_short) -#else -#define RSLOP 0 -#endif - -#define OVERHEAD (sizeof(union overhead) + RSLOP) - -/* - * nextf[i] is the pointer to the next free block of size 2^(i+3). The - * smallest allocatable block is 8 bytes. The overhead information - * precedes the data area returned to the user. - */ -#define NBUCKETS 11 -#define MAXMALLOC (1<<(NBUCKETS+2)) -static union overhead *nextf[NBUCKETS]; - -#ifdef MSTATS -/* - * nmalloc[i] is the difference between the number of mallocs and frees - * for a given block size. - */ -static u_int nmalloc[NBUCKETS+1]; -#include -#endif - -#if defined(DEBUG) || defined(RCHECK) || defined(DEBUG2) -#define ASSERT(p) if (!(p)) botch(# p) -#include -static -botch(s) - char *s; -{ - fprintf(stderr, "\r\nmalloc assertion botched: %s\r\n", s); - (void) fflush(stderr); /* just in case user buffered it */ - abort(); -} -#else -#define ASSERT(p) -#endif - -void * -malloc(nbytes) - size_t nbytes; -{ - register union overhead *op; - register long bucket; - register unsigned amt; - - /* - ** First the simple case: we simple allocate big blocks directly - */ - if ( nbytes + OVERHEAD >= MAXMALLOC ) { - op = (union overhead *)NewPtr(nbytes+OVERHEAD); - if ( op == NULL ) - return NULL; - op->ov_magic0 = op->ov_magic1 = MAGIC; - op->ov_index = 0xff; -#ifdef MSTATS - nmalloc[NBUCKETS]++; -#endif -#ifdef RCHECK - /* - * Record allocated size of block and - * bound space with magic numbers. - */ - op->ov_size = (nbytes + RSLOP - 1) & ~(RSLOP - 1); - op->ov_rmagic = RMAGIC; - *(u_short *)((caddr_t)(op + 1) + op->ov_size) = RMAGIC; -#endif - return (void *)(op+1); - } - /* - * Convert amount of memory requested into closest block size - * stored in hash buckets which satisfies request. - * Account for space used per block for accounting. - */ -#ifndef RCHECK - amt = 8; /* size of first bucket */ - bucket = 0; -#else - amt = 16; /* size of first bucket */ - bucket = 1; -#endif - while (nbytes + OVERHEAD > amt) { - amt <<= 1; - if (amt == 0) - return (NULL); - bucket++; - } -#ifdef DEBUG2 - ASSERT( bucket < NBUCKETS ); -#endif - /* - * If nothing in hash bucket right now, - * request more memory from the system. - */ - if ((op = nextf[bucket]) == NULL) { - morecore(bucket); - if ((op = nextf[bucket]) == NULL) - return (NULL); - } - /* remove from linked list */ - nextf[bucket] = op->ov_next; - op->ov_magic0 = op->ov_magic1 = MAGIC; - op->ov_index = bucket; -#ifdef MSTATS - nmalloc[bucket]++; -#endif -#ifdef RCHECK - /* - * Record allocated size of block and - * bound space with magic numbers. - */ - op->ov_size = (nbytes + RSLOP - 1) & ~(RSLOP - 1); - op->ov_rmagic = RMAGIC; - *(u_short *)((caddr_t)(op + 1) + op->ov_size) = RMAGIC; -#endif -#ifdef VCHECK - memset((char *)(op+1), 0x41, nbytes); -#endif - return ((char *)(op + 1)); -} - -/* - * Allocate more memory to the indicated bucket. - */ -static void -morecore(bucket) - int bucket; -{ - register union overhead *op; - register long sz; /* size of desired block */ - long amt; /* amount to allocate */ - int nblks; /* how many blocks we get */ - - /* - * sbrk_size <= 0 only for big, FLUFFY, requests (about - * 2^30 bytes on a VAX, I think) or for a negative arg. - */ - sz = 1 << (bucket + 3); -#ifdef DEBUG2 - ASSERT(sz > 0); -#endif - amt = MAXMALLOC; - nblks = amt / sz; -#ifdef DEBUG2 - ASSERT(nblks*sz == amt); -#endif -#ifdef USE_CACHE_ALIGNED - op = (union overhead *)NewPtr(amt+4*USE_CACHE_ALIGNED); -#else - op = (union overhead *)NewPtr(amt); -#endif - /* no more room! */ - if (op == NULL) - return; -#ifdef USE_CACHE_ALIGNED -#define ALIGN_MASK (4*USE_CACHE_ALIGNED-1) - while ((long)op & ALIGN_MASK ) - op = (union overhead *)((long)op+1); -#endif /* USE_CACHE_ALIGNED */ - /* - * Add new memory allocated to that on - * free list for this hash bucket. - */ - nextf[bucket] = op; - while (--nblks > 0) { - op->ov_next = (union overhead *)((caddr_t)op + sz); - op = (union overhead *)((caddr_t)op + sz); - } - op->ov_next = (union overhead *)NULL; -} - -void -free(cp) - void *cp; -{ - register long size; - register union overhead *op; - - if (cp == NULL) - return; - op = (union overhead *)((caddr_t)cp - sizeof (union overhead)); -#ifdef DEBUG - ASSERT(op->ov_magic0 == MAGIC); /* make sure it was in use */ - ASSERT(op->ov_magic1 == MAGIC); -#else - if (op->ov_magic0 != MAGIC || op->ov_magic1 != MAGIC) - return; /* sanity */ -#endif -#ifdef RCHECK - ASSERT(op->ov_rmagic == RMAGIC); - ASSERT(*(u_short *)((caddr_t)(op + 1) + op->ov_size) == RMAGIC); -#endif -#ifdef VCHECK - memset(cp, 43, op->ov_size); -#endif - size = op->ov_index; - if ( size == 0xff ) { -#ifdef MSTATS - nmalloc[NBUCKETS]--; -#endif - DisposePtr((Ptr)op); - return; - } - ASSERT(size < NBUCKETS); - op->ov_next = nextf[size]; /* also clobbers ov_magic */ - nextf[size] = op; -#ifdef MSTATS - nmalloc[size]--; -#endif -} - -void * -realloc(cp, nbytes) - void *cp; - size_t nbytes; -{ - int i; - union overhead *op; - int expensive; - u_long maxsize; - - if (cp == NULL) - return (malloc(nbytes)); - op = (union overhead *)((caddr_t)cp - sizeof (union overhead)); -#ifdef DEBUG - ASSERT(op->ov_magic0 == MAGIC); /* make sure it was in use */ - ASSERT(op->ov_magic1 == MAGIC); -#else - if (op->ov_magic0 != MAGIC || op->ov_magic1 != MAGIC) - return NULL; /* sanity */ -#endif -#ifdef RCHECK - ASSERT(op->ov_rmagic == RMAGIC); - ASSERT(*(u_short *)((caddr_t)(op + 1) + op->ov_size) == RMAGIC); -#endif - i = op->ov_index; - /* - ** First the malloc/copy cases - */ - expensive = 0; - if ( i == 0xff ) { - /* Big block. See if it has to stay big */ - if (nbytes+OVERHEAD > MAXMALLOC) { - /* Yup, try to resize it first */ - SetPtrSize((Ptr)op, nbytes+OVERHEAD); - if ( MemError() == 0 ) { -#ifdef RCHECK - op->ov_size = (nbytes + RSLOP - 1) & ~(RSLOP - 1); - *(u_short *)((caddr_t)(op + 1) + op->ov_size) = RMAGIC; -#endif - return cp; - } - /* Nope, failed. Take the long way */ - } - maxsize = GetPtrSize((Ptr)op); - expensive = 1; - } else { - maxsize = 1 << (i+3); - if ( nbytes + OVERHEAD > maxsize ) - expensive = 1; - else if ( i > 0 && nbytes + OVERHEAD < (maxsize/2) ) - expensive = 1; - } - if ( expensive ) { - void *newp; - - newp = malloc(nbytes); - if ( newp == NULL ) { - return NULL; - } - maxsize -= OVERHEAD; - if ( maxsize < nbytes ) - nbytes = maxsize; - memcpy(newp, cp, nbytes); - free(cp); - return newp; - } - /* - ** Ok, we don't have to copy, it fits as-is - */ -#ifdef RCHECK - op->ov_size = (nbytes + RSLOP - 1) & ~(RSLOP - 1); - *(u_short *)((caddr_t)(op + 1) + op->ov_size) = RMAGIC; -#endif - return(cp); -} - - -#ifdef MSTATS -/* - * mstats - print out statistics about malloc - * - * Prints two lines of numbers, one showing the length of the free list - * for each size category, the second showing the number of mallocs - - * frees for each size category. - */ -mstats(s) - char *s; -{ - register int i, j; - register union overhead *p; - int totfree = 0, - totused = 0; - - fprintf(stderr, "Memory allocation statistics %s\nfree:\t", s); - for (i = 0; i < NBUCKETS; i++) { - for (j = 0, p = nextf[i]; p; p = p->ov_next, j++) - ; - fprintf(stderr, " %d", j); - totfree += j * (1 << (i + 3)); - } - fprintf(stderr, "\nused:\t"); - for (i = 0; i < NBUCKETS; i++) { - fprintf(stderr, " %d", nmalloc[i]); - totused += nmalloc[i] * (1 << (i + 3)); - } - fprintf(stderr, "\n\tTotal small in use: %d, total free: %d\n", - totused, totfree); - fprintf(stderr, "\n\tNumber of big (>%d) blocks in use: %d\n", MAXMALLOC, nmalloc[NBUCKETS]); -} -#endif diff --git a/Mac/mwerks/mwerks_nscarbon.pch b/Mac/mwerks/mwerks_nscarbon.pch deleted file mode 100644 index 74827553b73..00000000000 --- a/Mac/mwerks/mwerks_nscarbon.pch +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once on - -#pragma precompile_target "mwerks_nscarbon_pch" - -#include "mwerks_nscarbon_config.h" -#include -#include "Python.h" diff --git a/Mac/mwerks/mwerks_nscarbon_config.h b/Mac/mwerks/mwerks_nscarbon_config.h deleted file mode 100644 index 675f56a0b23..00000000000 --- a/Mac/mwerks/mwerks_nscarbon_config.h +++ /dev/null @@ -1,47 +0,0 @@ -/* -** Configuration file for standalone Carbon Python. -** -** Note: enabling the switches below is not enough to enable the -** specific features, you may also need different sets of sources. -*/ -#define ACCESSOR_CALLS_ARE_FUNCTIONS 1 -#define OPAQUE_TOOLBOX_STRUCTS 1 -#define TARGET_API_MAC_CARBON 1 - -#define USE_GUSI2 /* Stdio implemented with GUSI 2 */ -#define USE_GUSI -#define WITH_THREAD /* Use thread support (needs GUSI 2, not GUSI 1) */ -#define USE_MSL /* Use Mw Standard Library (as opposed to Plaugher C libraries) */ -#define USE_TOOLBOX /* Include toolbox modules in core Python */ -#define USE_QT /* Include quicktime modules in core Python */ -#define USE_WASTE /* Include waste module in core Python */ -/* #define USE_IMG /* Include img modules in core Python */ -/* #define USE_MAC_SHARED_LIBRARY /* Enable code to add shared-library resources */ -/* #define USE_MAC_APPLET_SUPPORT /* Enable code to run a PYC resource */ -/* #define HAVE_DYNAMIC_LOADING /* Enable dynamically loaded modules */ -#define USE_GDBM /* Include the gdbm module */ -#define USE_ZLIB /* Include the zlib module */ -#define USE_IC /* Include Internet Config module */ -#define USE_PYEXPAT /* Include Pyexpat module */ -#define XML_NS 1 -#define XML_DTD 1 -#define BYTEORDER 4321 -#define XML_CONTEXT_BYTES 1024 -#define USE_MSL_MALLOC /* Disable private malloc. Also disables next two defines */ -#ifndef USE_MSL_MALLOC -/* #define USE_MALLOC_DEBUG /* Enable range checking and other malloc debugging */ -#endif -#define WITHOUT_FRAMEWORKS /* Use old-style Universal Header includes, not Carbon/Carbon.h */ - -#ifdef USE_MSL -#define MSL_USE_PRECOMPILED_HEADERS 0 /* Don't use precomp headers: we include our own */ -#include -#endif -/* Missing declarations. Should these go to pyport.h? */ -#ifdef USE_GUSI2 -#include -extern int fileno(FILE *); -#endif -#ifndef Py_DEBUG -#define NDEBUG -#endif diff --git a/Mac/mwerks/mwerks_pyexpat_config.h b/Mac/mwerks/mwerks_pyexpat_config.h deleted file mode 100644 index 4ca4b07cf37..00000000000 --- a/Mac/mwerks/mwerks_pyexpat_config.h +++ /dev/null @@ -1,9 +0,0 @@ -/* -** Configuration file for dynamically loaded Carbon pyexpat module. -*/ -#include "mwerks_shcarbon_config.h" - -#define XML_NS 1 -#define XML_DTD 1 -#define BYTEORDER 4321 -#define XML_CONTEXT_BYTES 1024 diff --git a/Mac/mwerks/mwerks_shcarbon.pch b/Mac/mwerks/mwerks_shcarbon.pch deleted file mode 100644 index 8f2352b69eb..00000000000 --- a/Mac/mwerks/mwerks_shcarbon.pch +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once on - -#pragma precompile_target "mwerks_shcarbon_pch" - -#include "mwerks_shcarbon_config.h" -#include -#include "Python.h" diff --git a/Mac/mwerks/mwerks_shcarbon_config.h b/Mac/mwerks/mwerks_shcarbon_config.h deleted file mode 100644 index d155b3bbd2c..00000000000 --- a/Mac/mwerks/mwerks_shcarbon_config.h +++ /dev/null @@ -1,50 +0,0 @@ -/* -** Configuration file for dynamically loaded Carbon PythonCore, -** interpreter and extension modules. -** -** Note: enabling the switches below is not enough to enable the -** specific features, you may also need different sets of sources. -*/ -#define ACCESSOR_CALLS_ARE_FUNCTIONS 1 -#define OPAQUE_TOOLBOX_STRUCTS 1 -#define TARGET_API_MAC_CARBON 1 - -#define USE_GUSI2 /* Stdio implemented with GUSI 2 */ -#define WITH_THREAD /* Use thread support (needs GUSI 2, not GUSI 1) */ -#define USE_MSL /* Use Mw Standard Library (as opposed to Plaugher C libraries) */ -/* #define USE_CORE_TOOLBOX /* Include core toolbox modules (Dlg,Ctl,Menu,Win,Res,Qd) */ -/* #define USE_TOOLBOX /* Include all toolbox modules in core Python */ -/* #define USE_QT /* Include quicktime modules in core Python */ -/* #define USE_WASTE /* Include waste module in core Python */ -/* #define USE_MACSPEECH /* Include macspeech module in core Python */ -/* #define USE_IMG /* Include img modules in core Python */ -/* #define USE_MACCTB /* Include ctb module in core Python */ -/* #define USE_STDWIN /* Include stdwin module in core Python */ -/* #define USE_MACTCP /* Include mactcp (*not* socket) modules in core */ -/* #define USE_TK /* Include _tkinter module in core Python */ -/* #define MAC_TCL /* This *must* be on if USE_TK is on */ -#define USE_MAC_SHARED_LIBRARY /* Enable code to add shared-library resources */ -#define USE_MAC_APPLET_SUPPORT /* Enable code to run a PYC resource */ -#define HAVE_DYNAMIC_LOADING /* Enable dynamically loaded modules */ -/* #define USE_GDBM /* Include the gdbm module */ -/* #define USE_ZLIB /* Include the zlib module */ -#define WITHOUT_FRAMEWORKS /* Use old-style Universal Header includes, not Carbon/Carbon.h */ -#define USE_TOOLBOX_OBJECT_GLUE /* Call toolbox object converters indirectly */ - -#define USE_MSL_MALLOC /* Disable private malloc. Also disables next two defines */ -#ifndef USE_MSL_MALLOC -/* #define USE_MALLOC_DEBUG /* Enable range checking and other malloc debugging */ -#endif - -#ifdef USE_MSL -#define MSL_USE_PRECOMPILED_HEADERS 0 /* Don't use precomp headers: we include our own */ -#include -#endif -/* Missing declarations. Should these go to pyport.h? */ -#ifdef USE_GUSI2 -#include -extern int fileno(FILE *); -#endif -#ifndef Py_DEBUG -#define NDEBUG -#endif diff --git a/Mac/mwerks/mwerks_smcarbon.pch b/Mac/mwerks/mwerks_smcarbon.pch deleted file mode 100644 index 9025ceea5b9..00000000000 --- a/Mac/mwerks/mwerks_smcarbon.pch +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once on - -#pragma precompile_target "mwerks_smcarbon_pch" - -#include "mwerks_smcarbon_config.h" -#include -#include "Python.h" diff --git a/Mac/mwerks/mwerks_smcarbon_config.h b/Mac/mwerks/mwerks_smcarbon_config.h deleted file mode 100644 index 6b134bd21fa..00000000000 --- a/Mac/mwerks/mwerks_smcarbon_config.h +++ /dev/null @@ -1,43 +0,0 @@ -/* -** Configuration file for small standalone Carbon Python. -** -** Note: enabling the switches below is not enough to enable the -** specific features, you may also need different sets of sources. -*/ -#define ACCESSOR_CALLS_ARE_FUNCTIONS 1 -#define OPAQUE_TOOLBOX_STRUCTS 1 -#define TARGET_API_MAC_CARBON 1 - -#define USE_GUSI2 /* Stdio implemented with GUSI 2 */ -#define USE_MSL /* Use Mw Standard Library (as opposed to Plaugher C libraries) */ -#define USE_TOOLBOX /* Include toolbox modules in core Python */ -/* #define USE_CORE_TOOLBOX /* Include minimal set of toolbox modules in core Python */ -#define USE_QT /* Include quicktime modules in core Python */ -/* #define USE_WASTE /* Include waste module in core Python */ -/* #define USE_MACSPEECH /* Include macspeech module in core Python */ -/* #define USE_IMG /* Include img modules in core Python */ -/* #define USE_MACCTB /* Include ctb module in core Python */ -/* #define USE_STDWIN /* Include stdwin module in core Python */ -/* #define USE_MACTCP /* Include mactcp (*not* socket) modules in core */ -/* #define USE_TK /* Include _tkinter module in core Python */ -/* #define MAC_TCL /* This *must* be on if USE_TK is on */ -/* #define USE_MAC_SHARED_LIBRARY /* Enable code to add shared-library resources */ -/* #define USE_MAC_APPLET_SUPPORT /* Enable code to run a PYC resource */ -/* #define HAVE_DYNAMIC_LOADING /* Enable dynamically loaded modules */ -/* #define USE_GDBM /* Include the gdbm module */ -/* #define USE_ZLIB /* Include the zlib module */ -#define WITH_HOTSHOT /* Enable hotshot profiler */ - -#define USE_MSL_MALLOC /* Disable private malloc. Also disables next two defines */ -#ifndef USE_MSL_MALLOC -/* #define USE_MALLOC_DEBUG /* Enable range checking and other malloc debugging */ -#endif -#define WITHOUT_FRAMEWORKS /* Use old-style Universal Header includes, not Carbon/Carbon.h */ - -#ifdef USE_MSL -#define MSL_USE_PRECOMPILED_HEADERS 0 /* Don't use precomp headers: we include our own */ -#include -#endif -#ifndef Py_DEBUG -#define NDEBUG -#endif diff --git a/Mac/mwerks/mwerks_thrcarbonsm_config.h b/Mac/mwerks/mwerks_thrcarbonsm_config.h deleted file mode 100644 index 958f1c6f08e..00000000000 --- a/Mac/mwerks/mwerks_thrcarbonsm_config.h +++ /dev/null @@ -1,43 +0,0 @@ -/* -** Configuration file for small standalone 68k/ppc Python. -** -** Note: enabling the switches below is not enough to enable the -** specific features, you may also need different sets of sources. -*/ -#define ACCESSOR_CALLS_ARE_FUNCTIONS 1 -#define OPAQUE_TOOLBOX_STRUCTS 1 -#define TARGET_API_MAC_CARBON 1 - -#define USE_GUSI2 /* Stdio implemented with GUSI 2 */ -#define WITH_THREAD /* Use thread support (needs GUSI 2, not GUSI 1) */ -#define USE_MSL /* Use Mw Standard Library (as opposed to Plaugher C libraries) */ -#define USE_TOOLBOX /* Include toolbox modules in core Python */ -/* #define USE_CORE_TOOLBOX /* Include minimal set of toolbox modules in core Python */ -#define USE_QT /* Include quicktime modules in core Python */ -/* #define USE_WASTE /* Include waste module in core Python */ -/* #define USE_MACSPEECH /* Include macspeech module in core Python */ -/* #define USE_IMG /* Include img modules in core Python */ -/* #define USE_MACCTB /* Include ctb module in core Python */ -/* #define USE_STDWIN /* Include stdwin module in core Python */ -/* #define USE_MACTCP /* Include mactcp (*not* socket) modules in core */ -/* #define USE_TK /* Include _tkinter module in core Python */ -/* #define MAC_TCL /* This *must* be on if USE_TK is on */ -/* #define USE_MAC_SHARED_LIBRARY /* Enable code to add shared-library resources */ -/* #define USE_MAC_APPLET_SUPPORT /* Enable code to run a PYC resource */ -/* #define HAVE_DYNAMIC_LOADING /* Enable dynamically loaded modules */ -/* #define USE_GDBM /* Include the gdbm module */ -/* #define USE_ZLIB /* Include the zlib module */ -#define WITHOUT_FRAMEWORKS /* Use old-style Universal Header includes, not Carbon/Carbon.h */ - -#define USE_MSL_MALLOC /* Disable private malloc. Also disables next two defines */ -#ifndef USE_MSL_MALLOC -/* #define USE_MALLOC_DEBUG /* Enable range checking and other malloc debugging */ -#endif - -#ifdef USE_MSL -#define MSL_USE_PRECOMPILED_HEADERS 0 /* Don't use precomp headers: we include our own */ -#include -#endif -#ifndef Py_DEBUG -#define NDEBUG -#endif diff --git a/Mac/mwerks/mwerks_threadsmall_config.h b/Mac/mwerks/mwerks_threadsmall_config.h deleted file mode 100644 index 302a36a167c..00000000000 --- a/Mac/mwerks/mwerks_threadsmall_config.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -** Configuration file for small standalone 68k/ppc Python. -** -** Note: enabling the switches below is not enough to enable the -** specific features, you may also need different sets of sources. -*/ - -#define USE_GUSI2 /* Stdio implemented with GUSI 2 */ -#define WITH_THREAD /* Use thread support */ -#define USE_MSL /* Use Mw Standard Library (as opposed to Plaugher C libraries) */ -#define USE_TOOLBOX /* Include toolbox modules in core Python */ -#define USE_QT /* Include quicktime modules in core Python */ -/* #define USE_WASTE /* Include waste module in core Python */ -#define USE_MACSPEECH /* Include macspeech module in core Python */ -/* #define USE_IMG /* Include img modules in core Python */ -#define USE_MACCTB /* Include ctb module in core Python */ -/* #define USE_STDWIN /* Include stdwin module in core Python */ -/* #define USE_MACTCP /* Include mactcp (*not* socket) modules in core */ -/* #define USE_TK /* Include _tkinter module in core Python */ -/* #define MAC_TCL /* This *must* be on if USE_TK is on */ -/* #define USE_MAC_SHARED_LIBRARY /* Enable code to add shared-library resources */ -/* #define USE_MAC_APPLET_SUPPORT /* Enable code to run a PYC resource */ -/* #define HAVE_DYNAMIC_LOADING /* Enable dynamically loaded modules */ -/* #define USE_GDBM /* Include the gdbm module */ -/* #define USE_ZLIB /* Include the zlib module */ -#define WITHOUT_FRAMEWORKS /* Use old-style Universal Header includes, not Carbon/Carbon.h */ - -#define USE_MSL_MALLOC /* Disable private malloc. Also disables next two defines */ -#ifndef USE_MSL_MALLOC -/* #define USE_MALLOC_DEBUG /* Enable range checking and other malloc debugging */ -#endif - -#ifdef USE_MSL -#define MSL_USE_PRECOMPILED_HEADERS 0 /* Don't use precomp headers: we include our own */ -#include -#endif -#ifndef Py_DEBUG -#define NDEBUG -#endif diff --git a/Mac/mwerks/mwerks_tkplugin_config.h b/Mac/mwerks/mwerks_tkplugin_config.h deleted file mode 100644 index f3b4e092162..00000000000 --- a/Mac/mwerks/mwerks_tkplugin_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* -** Special config-file for _tkinter plugin. -*/ - -#define USE_GUSI2 /* Stdio implemented with GUSI 2 */ -/* #define USE_GUSI1 /* Stdio implemented with GUSI 1.X */ -#if defined(USE_GUSI2) -#define USE_GUSI -#endif -#define WITH_THREAD /* Use thread support (needs GUSI 2, not GUSI 1) */ -#define USE_TK /* Include _tkinter module in core Python */ -#define MAC_TCL /* This *must* be on if USE_TK is on */ -#define WITHOUT_FRAMEWORKS /* Use old-style Universal Header includes, not Carbon/Carbon.h */ -#ifndef Py_DEBUG -#define NDEBUG -#endif diff --git a/Mac/mwerks/mwfopenrf.c b/Mac/mwerks/mwfopenrf.c deleted file mode 100644 index 31eca1b75fe..00000000000 --- a/Mac/mwerks/mwfopenrf.c +++ /dev/null @@ -1,79 +0,0 @@ -/*********************************************************** -Copyright 1991-1997 by Stichting Mathematisch Centrum, Amsterdam, -The Netherlands. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the names of Stichting Mathematisch -Centrum or CWI or Corporation for National Research Initiatives or -CNRI not be used in advertising or publicity pertaining to -distribution of the software without specific, written prior -permission. - -While CWI is the initial source for this software, a modified version -is made available by the Corporation for National Research Initiatives -(CNRI) at the Internet address ftp://ftp.python.org. - -STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH -CENTRUM OR CNRI 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 -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - -******************************************************************/ - -/* -** mwfopenrf - Open resource fork as stdio file for CodeWarrior. -*/ - -#if defined(__MWERKS__) && !defined(USE_GUSI) -#include -#include -#include -#include "errno_unix.h" - -FILE * -fopenRF(name, mode) - char *name; - char *mode; -{ - int fd; - int modebits = -1; - int extramodebits = 0; - char *modep; - - for(modep=mode; *modep; modep++) { - switch(*modep) { - case 'r': modebits = O_RDONLY; break; - case 'w': modebits = O_WRONLY; extramodebits |= O_CREAT|O_TRUNC; break; - case 'a': modebits = O_RDONLY; - extramodebits |= O_CREAT|O_APPEND; - extramodebits &= ~O_TRUNC; - break; - case '+': modebits = O_RDWR; - extramodebits &= ~O_TRUNC; - break; - case 'b': extramodebits |= O_BINARY; - break; - default: - errno = EINVAL; - return NULL; - } - } - if ( modebits == -1 ) { - errno = EINVAL; - return NULL; - } - fd = open(name, modebits|extramodebits|O_RSRC); - if ( fd < 0 ) - return NULL; - return fdopen(fd, mode); -} -#endif /* __MWERKS__ */ diff --git a/Mac/scripts/BuildApplication.py b/Mac/scripts/BuildApplication.py deleted file mode 100644 index c919b3f748b..00000000000 --- a/Mac/scripts/BuildApplication.py +++ /dev/null @@ -1,140 +0,0 @@ -"""Create a standalone application from a Python script. - -This puts up a dialog asking for a Python source file ('TEXT'). -The output is a file with the same name but its ".py" suffix dropped. -It is created by copying an applet template, all used shared libs and -then adding 'PYC ' resources containing compiled versions of all used -modules written in Python and the main script itself, as __main__. -""" - - -import sys - -import string -import os -import MacOS -from Carbon import Res -from Carbon import Dlg -import EasyDialogs -import buildtools -import macresource - -# Hmmm... -MACFREEZEPATH = os.path.join(sys.prefix, ":Mac:Tools:macfreeze") -if MACFREEZEPATH not in sys.path: - sys.path.append(MACFREEZEPATH) - -import macgen_bin - -# dialog, items -DLG_ID = 400 -OK_BUTTON = 1 -CANCEL_BUTTON = 2 -GENFAT_BUTTON = 4 -GENPPC_BUTTON = 5 -GEN68K_BUTTON = 6 - -# Define this if we cannot generate 68/fat binaries (Python 1.6) -PPC_ONLY=1 - - -macresource.need('DITL', DLG_ID, "BuildApplication.rsrc") - -def main(): - try: - buildapplication() - except buildtools.BuildError, detail: - EasyDialogs.Message(detail) - - -def buildapplication(debug = 0): - buildtools.DEBUG = debug - - # Ask for source text if not specified in sys.argv[1:] - - if not sys.argv[1:]: - filename = EasyDialogs.AskFileForOpen(message='Select Python source:', - fileTypes=('TEXT',)) - if not filename: - return - else: - if sys.argv[2:]: - raise buildtools.BuildError, "please select one file at a time" - filename = sys.argv[1] - tp, tf = os.path.split(filename) - - # interact with user - architecture, ok = interact(tf) - if not ok: - return - if tf[-3:] == '.py': - tf = tf[:-3] - else: - tf = tf + '.app' - - dstfilename = EasyDialogs.AskFileForSate(message='Save application as:', - savedFileName=tf) - if not ok: - return - - macgen_bin.generate(filename, dstfilename, None, architecture, 1) - - -class radio: - - def __init__(self, dlg, *items): - self.items = {} - for item in items: - ctl = dlg.GetDialogItemAsControl(item) - self.items[item] = ctl - - def set(self, setitem): - for item, ctl in self.items.items(): - if item == setitem: - ctl.SetControlValue(1) - else: - ctl.SetControlValue(0) - - def get(self): - for item, ctl in self.items.items(): - if ctl.GetControlValue(): - return item - - def hasitem(self, item): - return self.items.has_key(item) - - -def interact(scriptname): - if PPC_ONLY: - return 'pwpc', 1 - d = Dlg.GetNewDialog(DLG_ID, -1) - if not d: - raise "Can't get DLOG resource with id =", DLG_ID - d.SetDialogDefaultItem(OK_BUTTON) - d.SetDialogCancelItem(CANCEL_BUTTON) - Dlg.ParamText(scriptname, "", "", "") - - radiogroup = radio(d, GENFAT_BUTTON, GENPPC_BUTTON, GEN68K_BUTTON) - radiogroup.set(GENFAT_BUTTON) - - gentype = 'fat' - while 1: - n = Dlg.ModalDialog(None) - if n == OK_BUTTON or n == CANCEL_BUTTON: - break - elif radiogroup.hasitem(n): - radiogroup.set(n) - genitem = radiogroup.get() - del radiogroup - del d - if genitem == GENFAT_BUTTON: - gentype = 'fat' - elif genitem == GENPPC_BUTTON: - gentype = 'pwpc' - elif genitem == GEN68K_BUTTON: - gentype = 'm68k' - return gentype, n == OK_BUTTON - - -if __name__ == '__main__': - main() diff --git a/Mac/scripts/BuildApplication.rsrc b/Mac/scripts/BuildApplication.rsrc deleted file mode 100644 index 06174180d9993de9f7faa5569708649186a305e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3858 zcmb_fUuaWT82?V1v}qfXwACTbnTrlBwCk#f6B#zzR97c8ZIjK3D~oB`#%66uBmMy) zZbN(;B70jI-5#VHLxKz(iZ1M7PZdV@u)%Z|hOn1GHes~$&)x4k=iZx}G%XH1;oR@f z@B4SYd(XWmM^%tYM3k!5P1uksZ4xeuqPylf^;6*WdjI#ek5wd6vdru zw1_rFYqapWruu9K4} z$5f!bYSw_(EMRJodf1NL2Tj z$cGttEc4gty2`IVB_Stj(e(vP4YHh^A9gCg{uuZoCgKGU*H=KyT($f`?t>%e3c7<` zi+;aJV0$t1I{lU5kNY;A!CRz{9Rbz6D>Q#=x=a=RNe*1M0M@ zflm3=3>aR;fI|azt&jrhJON$-m#{Qg=C3asWvhgJ8?{+uscmVgJj62hau`J+f;B3= zk&Eq3e5pEa!fl+rO8hc^F37%w%KVTk@iKp-Br8Ove+6D`{W=W|4XFU^ZG}huvVXd6 z;Z)6^O8$tFcj1>`l1->+KIh0QTpCn?fvbT4)nHksj>e<3vc5>byy&ZWvk@Y!>@5ve zhs{LKmGWoj*@myetcX{XZTMW}2E}mLZr~%AFJLn-y67*P?4xkFgj+XUIrykB$K&oj zBVq+kK9aZzL-s&%$0jS>?5~OI{F=ou{dF>B)8CYpf6>58`HMI6>~7Vkvs`*$iKI;Z z{n5K~bN6L3TwIXfox7ugvmA{=wqR&{_wJQoc6(9=vw`K!aK(mIs%O30zo%tBX1@$& z#oN2$Z7q#;muYMD$OxjVEpBZAONJr)ShBGco6IkYQaFBdumiSi*>+{wip~buaLX1T z^;Iu9o7Q}ijYr&kw2S2P!%CKd?)&hN+=nbFo+Krk^rm5VlPG#j-OK1PHph5k+&eRm z(&9@W={XX?XB|Uc+QVnE+gR8?(6e8j5OV;|gZrSjyKggVM7uOq+t|{EsXt4J3DV~GU*n6~x z9AZm+JUI;g!QpuJIOto$snOG*$CL5Y4$ukEU7%-^@u|(A7eHBm8I<*(C6(V-l;hWz z`w!$KaS6wIs(;Po@mHi!;v0}p* 0x9ff: - do_copy = 1 - return do_copy - do_copy = 0 - if macfs.FSSpec(sys.exec_prefix).as_tuple()[0] != -1: # XXXX - try: - from Carbon import Dlg - rv = Dlg.CautionAlert(ALERT_NONBOOT, None) - if rv == ALERT_NONBOOT_COPY: - do_copy = 1 - except ImportError: - pass - return do_copy - - -# Copied from fullbuild, should probably go to buildtools -def buildapplet(top, dummy, list): - """Create python applets""" - import buildtools - for src, dst, tmpl in list: - template = buildtools.findtemplate(tmpl) - if src[-3:] != '.py': - raise 'Should end in .py', src - base = os.path.basename(src) - src = os.path.join(top, src) - dst = os.path.join(top, dst) - try: - os.unlink(dst) - except os.error: - pass - try: - buildtools.process(template, src, dst, 1) - except buildtools.BuildError, arg: - print '**', dst, arg - -def buildcopy(top, dummy, list): - import macostools - for src, dst in list: - src = os.path.join(top, src) - dst = os.path.join(top, dst) - macostools.copy(src, dst, forcetype="APPL") - -def main(): - verbose = 0 - try: - h = Res.GetResource('DLOG', SPLASH_COPYCORE) - del h - except Res.Error: - verbose = 1 - print "Not running as applet: verbose on" - oldcwd = os.getcwd() - os.chdir(sys.prefix) - newcwd = os.getcwd() - if verbose: - print "Not running as applet: Skipping check for preference file correctness." - elif oldcwd != newcwd: - # Hack to make sure we get the new MACFS - sys.path.insert(0, os.path.join(oldcwd, ':Mac:Lib')) - from Carbon import Dlg - rv = Dlg.CautionAlert(ALERT_NOTPYTHONFOLDER, None) - if rv == ALERT_NOTPYTHONFOLDER_REMOVE_QUIT: - import pythonprefs, preferences - prefpathname = pythonprefs.pref_fss.as_pathname() - os.remove(prefpathname) - sys.exit(0) - elif rv == ALERT_NOTPYTHONFOLDER_QUIT: - sys.exit(0) - - sys.path.append('::Mac:Lib') - import macostools - - # Create the PythonCore alias(es) - MacOS.splash(SPLASH_COPYCORE) - if verbose: - print "Copying PythonCoreCarbon..." - n = 0 - n = n + mkcorealias('PythonCoreCarbon', 'PythonCoreCarbon') - if n == 0: - from Carbon import Dlg - Dlg.CautionAlert(ALERT_NOCORE, None) - if verbose: - print "Warning: PythonCore not copied to Extensions folder" - print " (Applets will not work unless run from the Python folder)" - MacOS.splash(SPLASH_BUILDAPPLETS) - buildapplet(sys.prefix, None, APPLET_LIST) - -if __name__ == '__main__': - main() - MacOS.splash() diff --git a/Mac/scripts/ConfigurePython.rsrc b/Mac/scripts/ConfigurePython.rsrc deleted file mode 100644 index f91ae61fbbb36cfdced2a184b5004e07d8f9820c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9088 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 Vqbtjj-a>xA-(SKx-jgn+{|COLMMVGr diff --git a/Mac/scripts/EditPythonPrefs.py b/Mac/scripts/EditPythonPrefs.py deleted file mode 100644 index 64c5218c6a3..00000000000 --- a/Mac/scripts/EditPythonPrefs.py +++ /dev/null @@ -1,213 +0,0 @@ -"""Edit the Python Preferences file.""" -# -# This program is getting more and more clunky. It should really -# be rewritten in a modeless way some time soon. - -from Carbon.Dlg import * -from Carbon.Events import * -from Carbon.Res import * -from Carbon import Controls -import string -import struct -import macfs -import MacOS -import os -import sys -from Carbon import Res # For Res.Error -import pythonprefs -import macresource -import EasyDialogs -try: - from Carbon import Help -except ImportError: - Help = None - -# resource IDs in our own resources (dialogs, etc) -MESSAGE_ID = 256 - -DIALOG_ID = 511 -TEXT_ITEM = 1 -OK_ITEM = 2 -CANCEL_ITEM = 3 -DIR_ITEM = 4 -TITLE_ITEM = 5 -OPTIONS_ITEM = 7 -HELP_ITEM = 9 - -# The options dialog. There is a correspondence between -# the dialog item numbers and the option. -OPT_DIALOG_ID = 510 - -# Map dialog item numbers to option names (and the reverse) -opt_dialog_map = [ - None, - None, - None, - "inspect", - "verbose", - "optimize", - "unbuffered", - "debugging", - "tabwarn", - "nosite", - "nonavservice", - "nointopt", - "noargs", - "delayconsole", - "divisionwarn", - "unixnewlines", - ] -opt_dialog_dict = {} -for i in range(len(opt_dialog_map)): - if opt_dialog_map[i]: - opt_dialog_dict[opt_dialog_map[i]] = i -# 1 thru 10 are the options -# The GUSI creator/type and delay-console -OD_CREATOR_ITEM = 20 -OD_TYPE_ITEM = 21 -OD_OK_ITEM = 1 -OD_CANCEL_ITEM = 2 -OD_HELP_ITEM = 22 -OD_KEEPALWAYS_ITEM = 16 -OD_KEEPOUTPUT_ITEM = 17 -OD_KEEPERROR_ITEM = 18 -OD_KEEPNEVER_ITEM = 19 - -def optinteract(options): - """Let the user interact with the options dialog""" - d = GetNewDialog(OPT_DIALOG_ID, -1) - htext = d.GetDialogItemAsControl(OD_CREATOR_ITEM) - SetDialogItemText(htext, options['creator']) - htext = d.GetDialogItemAsControl(OD_TYPE_ITEM) - SetDialogItemText(htext, options['type']) - d.SetDialogDefaultItem(OD_OK_ITEM) - d.SetDialogCancelItem(OD_CANCEL_ITEM) - if not Help: - d.HideDialogItem(OD_HELP_ITEM) - while 1: - for name in opt_dialog_dict.keys(): - num = opt_dialog_dict[name] - ctl = d.GetDialogItemAsControl(num) - ctl.SetControlValue(options[name]) - ctl = d.GetDialogItemAsControl(OD_KEEPALWAYS_ITEM) - ctl.SetControlValue(options['keep_console'] == 3) - ctl = d.GetDialogItemAsControl(OD_KEEPOUTPUT_ITEM) - ctl.SetControlValue(options['keep_console'] == 1) - ctl = d.GetDialogItemAsControl(OD_KEEPERROR_ITEM) - ctl.SetControlValue(options['keep_console'] == 2) - ctl = d.GetDialogItemAsControl(OD_KEEPNEVER_ITEM) - ctl.SetControlValue(options['keep_console'] == 0) - n = ModalDialog(None) - if n == OD_OK_ITEM: - htext = d.GetDialogItemAsControl(OD_CREATOR_ITEM) - ncreator = GetDialogItemText(htext) - htext = d.GetDialogItemAsControl(OD_TYPE_ITEM) - ntype = GetDialogItemText(htext) - if len(ncreator) == 4 and len(ntype) == 4: - options['creator'] = ncreator - options['type'] = ntype - return options - else: - MacOS.SysBeep() - elif n == OD_CANCEL_ITEM: - return - elif n in (OD_CREATOR_ITEM, OD_TYPE_ITEM): - pass - elif n == OD_KEEPALWAYS_ITEM: - options['keep_console'] = 3; - elif n == OD_KEEPOUTPUT_ITEM: - options['keep_console'] = 1; - elif n == OD_KEEPERROR_ITEM: - options['keep_console'] = 2; - elif n == OD_KEEPNEVER_ITEM: - options['keep_console'] = 0; - elif n == OD_HELP_ITEM and Help: - onoff = Help.HMGetBalloons() - Help.HMSetBalloons(not onoff) - elif 1 <= n <= len(opt_dialog_map): - options[opt_dialog_map[n]] = (not options[opt_dialog_map[n]]) - - -def interact(options, title): - """Let the user interact with the dialog""" - try: - # Try to go to the "correct" dir for GetDirectory - os.chdir(options['dir'].as_pathname()) - except os.error: - pass - d = GetNewDialog(DIALOG_ID, -1) - htext = d.GetDialogItemAsControl(TITLE_ITEM) - SetDialogItemText(htext, title) - path_ctl = d.GetDialogItemAsControl(TEXT_ITEM) - data = string.joinfields(options['path'], '\r') - path_ctl.SetControlData(Controls.kControlEditTextPart, Controls.kControlEditTextTextTag, data) - - d.SelectDialogItemText(TEXT_ITEM, 0, 32767) - d.SelectDialogItemText(TEXT_ITEM, 0, 0) -## d.SetDialogDefaultItem(OK_ITEM) - d.SetDialogCancelItem(CANCEL_ITEM) - if not Help: - d.HideDialogItem(HELP_ITEM) - d.GetDialogWindow().ShowWindow() - d.DrawDialog() - while 1: - n = ModalDialog(None) - if n == OK_ITEM: - break - if n == CANCEL_ITEM: - return None -## if n == REVERT_ITEM: -## return [], pythondir - if n == DIR_ITEM: - fss = EasyDialogs.AskFolder(message='Select python home folder:', - wanted=macfs.FSSpec) - if fss: - options['dir'] = fss - elif n == HELP_ITEM and Help: - onoff = Help.HMGetBalloons() - Help.HMSetBalloons(not onoff) - if n == OPTIONS_ITEM: - noptions = options - for k in options.keys(): - noptions[k] = options[k] - noptions = optinteract(noptions) - if noptions: - options = noptions - data = path_ctl.GetControlData(Controls.kControlEditTextPart, Controls.kControlEditTextTextTag) - tmp = string.splitfields(data, '\r') - newpath = [] - for i in tmp: - if i: - newpath.append(i) - options['path'] = newpath - return options - - -def edit_preferences(): - handler = pythonprefs.PythonOptions() - options = handler.load() - if options['noargs']: - EasyDialogs.Message('Warning: system-wide sys.argv processing is off.\nIf you dropped an applet I have not seen it.') - result = interact(options, 'System-wide preferences') - if result: - handler.save(result) - -def edit_applet(name): - handler = pythonprefs.AppletOptions(name) - result = interact(handler.load(), os.path.split(name)[1]) - if result: - handler.save(result) - -def main(): - macresource.need('DLOG', DIALOG_ID, 'EditPythonPrefs.rsrc') - - MacOS.SchedParams(1, 0) - if len(sys.argv) <= 1: - edit_preferences() - else: - for appl in sys.argv[1:]: - edit_applet(appl) - - -if __name__ == '__main__': - main() diff --git a/Mac/scripts/EditPythonPrefs.rsrc b/Mac/scripts/EditPythonPrefs.rsrc deleted file mode 100644 index 745cbeccb22874dfd64955244836df0817a0fb1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9780 zcmd5?eQ;FQbw6+QjU;P@pb)_5@)adk!1YQj`OtpR{P9q-{!ry z5=v_$$8JLXhwE`$+xerNNz!KGW|C0PbeN`NsyLnakCNg^r)j4hTpEwtxbz|U`uMus=Cvo8JRcch_Xq6g%vh!T7llB`EA76QA+u(N+ZEgGM(V0~P z8QUM8@pDdL*tN1=iUp+8`HbbNJyzlQ1jQtNg`TdK_uAjRc87*`KNob)ecd*0@9hlU z?C}h72RI z>(SBOss7guT7SUE_G}+JxbD-lY9z6P{)|$a>EBus2K7F(ON z+Q}pPi5G>JATdi+-%Hf2h>}U7O=pSvo+Wzb4KnJ!ONpk1+4`nudzd9D0w9!4rO6sK-7iQ@=1So7tvL5`KAqV^u zkYhj|&1(5|=$qzIE20%&%iH$ZUOWQm^Vk5M`r@?`v82wuLFFWz`qW149H{ofbxP?x5qRP4jhE zz;PD#38UB-(`ej5cKi{f=OmIsy6I2-%t$^;U(Hv8yEkOm>7Xf%_V}Rf~JSEy-$i2>o9|t>R#l&*V1R!&p z87&n22t04HoD-fc5S%SO7s8Gy_?XBuQ}FJ{?u9I6w_t9lgz$)44?z5}#@d9+vdXjg zbnpOe9zhqaBLvKkbugfV9-n85dHlnFU@s8>c(@tNw+D>+*;|(b1_YPUcfj@J2+s%9 zh7WVQ1R_jsV}1bWN9M+jD*fd=sGIEQ&^7>*GDh35(ZrjCtO zI52{rBLbis#vTvE=#X&(o+2GsaK~Ht(gZT=<`2pQg8o5p5j_(Kx+A!WAtC*7#|=r6 zs6Dtj-!UhTZ}B&tFA=gJb!-SO1HyP>f{xCM!Ot$g)h^r41OZ*V1PC(`0(5PF$TM@0 zUA}lxKX=T@mQmX!ka4?-XV9{W(mLjtzKjL|gUe_wB8C=%7@7$dp+T?+4T4Cv2*g(; z8$)r%rk!YdxD^##55w<2F>t?tX7T;>u_J?9_{rF%$&BZX=Y?C6lGK?9+PE4a`c(K~ z6l1sg%qxMc|EV0}oU8Qfr>b_*WKrKxzhab7{ zCnt_!^xND1Y4x>tx4zKQl)n8cy?w0l=@lg|wAt82uM@8Ev5H9z9hkDf+fk z@SvX95`GytX@p4~sc=lMp$F*4^w=+z8lMGpE!|6##>>X<*LSfya%1az*e}`F zxuGy;-(nxrfO2}M3!m#lJSAQ%;~2Gy>M=!8L?`6A$t5;clbLpfDWHJ=z7X`lwC;YOBoA&IjE)-$4)M=WlxyC zl}h4*#`Dy4&MK%3qHb!d27q1OGN&x%S-x)ZDpV)(hbMt>TyT(7K7?25fl<~?*s;Y(XsqxAY~eLSPAX(fH=_<7JgAB;5}&WkEN4Sg zd1=?iBOWI00=CFY4KC#c8^J8c+r!*!&Z9-w;`!xidP{4ud#J)r=fs$DS^5ZEkT_F>3SMe=HCwHx=Q~AZBe%Q0iuk8~xtdy5 z$n#;nI(}?$2xj4-l$NZmvREXguN2kzjBll#jFnPH?I~7Gd3k#xhg~T`{ZcXIS2NeD zL>^MjU-sULu^#1Y#(M_)r36`Gi)!1JgL(IJ8ld_Gu>b&2j7mj)qsn+Q=%2hk0DXYdUxR}jhf=kXxGoAI+NaVTq+j&c+5q7*nBoz}i7qjF$yTcPN)7Y8pbS?^w z-tx?JY#P+z8TG0fvD_(}7j)V+iztb`so22?T?X6529`Vo0C5!4JH<=DYK!HIO5iBg zN)%*t7zL0UqI3Z>_=FXUdCTWvekPTUiPh&(uWdy#mM<2oapYCTLR9iRR^@;ea*!7S z3m1AaUj%6k4mpKC;Qc7mw$m_c^yiwyN8#`p;;M%8md;Sb~@{5G&PE75R z%*8CRJF1V37?|SM3Rw?*C?&?mtmTzjWUdpclCkB?>8*|HlIAlEUoMNq`%3{X$jK5} zNR}lFQ{m38gN@7Zit=j5qjgzo>Q`gSE4zx{Om(KCaF`q|NAE%V*ryj4NE{-_N7cKwS{QEwNHB$DJO8|sx7kO&m ztu?GUXJCocaP`x9C#)`)ZYd7K;xdM}a(@lUm8}$J;w3evo{*{Ra&Q^W{fpv4=!@Fj zIIJO|>SQC{o;9Zs#E~yh9i8@-g^LfzO&wvDQoQ^;{P;#COxfc|LNiDXo{yV^y0iMN z%y^mJG`?XN<@=MDsoD4j4J^7p*@!!s9;3Zsi!R+I5|}7(P{*OnLNJjMP@AvcKK5b8 z0A{Qi<%%P!qHv&4Q*ubtRG$UaGe%oO=Me5VChgBv>KKjxBJf`_S{v4m6~;^1EXq2h zX+MJlekVH1b>$7@cR}@SV?{$(zcpT(P({<_e4@QT^Z6rCd=C_xPFB)CN-7=qppF{t zJB%!3PFR}$&q4nq;TT3yuadMi#ovPBsI?e13-&)u%V-oaF87&R#BYGr>^qrh3lr>q(qmp+Dn)56uUj*f*ek%`W zUvj8*a4n$3v@%-zW6=IFtowRd4^|dsLzs;+_LS{Koat9U>40)uAHUm3*5Y>$uG}Qm z^12YSv5h3X(Ad}~@l$Le`n-`enj4ct1u*d}L{7ayf?b6fTj|Nhc3`oq z(8oG$hul_S=2m*Av0>1fvRo};7yX`bfZhu)XZ!Iq8a?68<|nkqFv8m~z7K1~ecoT4 zT^FV9*h`0AbdPnQtFZK@(QW-gPasPIvPC|7{$5CWMF}ZjAA77@Hxqr05 zA7B0VuTCF&cW)2z+K4je&)@mX`SY9pVkx5)PvBkn2@{T10IKGnweXbjz6@dlUYRV8 zt*8h*#MMQ&&Qf$mAt8FfY3J7^Go7{&wYdPUl(O;AAQ3_CtdrqAX}Er(`ih6I(34Ps zKLV)ymCne}iP8Em&@638Y^2qP2m6nMZMr2TR9 zPi68Gr{R{*OrQKs9%J2ct*nof)~8MA^|>> prompt after a script terminates. -3.3 Turn this item off to have the interpreter terminate when a script terminates. -4.1 Turn this option on to get feedback on where modules are found and what their type is. -4.3 Turn this option off to stop import feedback. -5.1 Turn this option on to strip LINO instructions from Python bytecode. Gives a slight speedup. -5.3 Turn this option off to include LINO instructions in the bytecode. This enables line numbers in traceback printouts. -6.1 Turn this on to show output byte-by-byte as it is produced. Slows things down. -6.3 Turn this off to show output on a line-by-line basis, or when input is requested. -7.1 Print gibberish only Guido understands. -7.3 Stop printing gibberish. -8.1 Select to warn about mixing tabs and spaces in your source. -8.3 Deselect to treat tabs as 4 spaces without warning. -9.1 Selecting this disables the site-python feature. -9.3 Deselecting this enables the site-python feature. -10.1 Select this to keep the old behaviour for macfs Standard File calls -10.3 Deselect this to auto-import macfsn which replaces macfs Standard File calls with Navigation Services wrappers -11.1 Turn this on to stop the user from asking for the startup option dialog with the option key. Use this on applets only. -11.3 Turn this off to enable the user to set options by depressing

      .*)<<(?P.*)>>(?P[^=].*)")
      -ENDDEFINITION=re.compile("^@")
      -GREMLINS=re.compile("[\xa0\xca]")
      -
      -DEFAULT_CONFIG="""
      -filepatterns = [
      -	("^.*\.cp$", ":unweave-src"),
      -	("^.*\.h$", ":unweave-include"),
      -]
      -genlinedirectives = 0
      -gencomments = 1
      -"""
      -
      -class Processor:
      -	def __init__(self, filename, config={}):
      -		self.items = {}
      -		self.filename = filename
      -		self.fp = open(filename)
      -		self.lineno = 0
      -		self.resolving = {}
      -		self.resolved = {}
      -		self.pushback = None
      -		# Options
      -		if config.has_key("genlinedirectives"):
      -			self.genlinedirectives = config["genlinedirectives"]
      -		else:
      -			self.genlinedirectives = 1
      -		if config.has_key("gencomments"):
      -			self.gencomments = config["gencomments"]
      -		else:
      -			self.gencomments = 0
      -		if config.has_key("filepatterns"):
      -			self.filepatterns = config["filepatterns"]
      -		else:
      -			self.filepatterns = []
      -		self.filepattern_relist = []
      -		for pat, dummy in self.filepatterns:
      -			self.filepattern_relist.append(re.compile(pat))
      -		
      -	def _readline(self):
      -		"""Read a line. Allow for pushback"""
      -		if self.pushback:
      -			rv = self.pushback
      -			self.pushback = None
      -			return rv
      -		self.lineno = self.lineno + 1
      -		return self.lineno, self.fp.readline()
      -		
      -	def _linedirective(self, lineno):
      -		"""Return a #line cpp directive for this file position"""
      -		return '#line %d "%s"\n'%(lineno-3, os.path.split(self.filename)[1])
      -		
      -	def _readitem(self):
      -		"""Read the definition of an item. Insert #line where needed. """
      -		rv = []
      -		while 1:
      -			lineno, line = self._readline()
      -			if not line:
      -				break
      -			if ENDDEFINITION.search(line):
      -				break
      -			if BEGINDEFINITION.match(line):
      -				self.pushback = lineno, line
      -				break
      -			mo = USEDEFINITION.match(line)
      -			if mo:
      -				pre = mo.group('pre')
      -				if pre:
      -##					rv.append((lineno, pre+'\n'))
      -					rv.append((lineno, pre))
      -			rv.append((lineno, line))
      -			if mo:
      -				post = mo.group('post')
      -				if post and post != '\n':
      -					rv.append((lineno, post))
      -		return rv
      -		
      -	def _define(self, name, value):
      -		"""Define an item, or append to an existing definition"""
      -		if self.items.has_key(name):
      -			self.items[name] = self.items[name] + value
      -		else:
      -			self.items[name] = value
      -			
      -	def read(self):
      -		"""Read the source file and store all definitions"""
      -		savedcomment = []
      -		while 1:
      -			lineno, line = self._readline()
      -			if not line: break
      -			mo = BEGINDEFINITION.search(line)
      -			if mo:
      -				name = mo.group('name')
      -				value = self._readitem()
      -				if self.gencomments:
      -					defline = [(lineno, '// <%s>=\n'%name)]
      -					if savedcomment:
      -						savedcomment = savedcomment + [(lineno, '//\n')] + defline
      -					else:
      -						savedcomment = defline
      -					savedcomment = self._processcomment(savedcomment)
      -					value = savedcomment + value
      -					savedcomment = []
      -				isfilepattern = 0
      -				for rexp in self.filepattern_relist:
      -					if rexp.search(name):
      -						isfilepattern = 1
      -						break
      -				if 0 and not isfilepattern:
      -					value = self._addspace(value)
      -				self._define(name, value)
      -			else:
      -				if self.gencomments:
      -					# It seems initial blank lines are ignored:-(
      -					if savedcomment or line.strip():
      -						savedcomment.append((lineno, '// '+line))
      -						
      -	def _processcomment(self, comment):
      -		# This routine mimicks some artefact of Matthias' code.
      -		rv = []
      -		for lineno, line in comment:
      -			line = line[:-1]
      -			line = GREMLINS.subn(' ', line)[0]
      -			if len(line) < 75:
      -				line = line + (75-len(line))*' '
      -			line = line + '\n'
      -			rv.append((lineno, line))
      -		return rv
      -		
      -	def _addspace(self, value, howmany):
      -		# Yet another routine to mimick yet another artefact
      -		rv = value[0:1]
      -		for lineno, line in value[1:]:
      -			rv.append((lineno, (' '*howmany)+line))
      -		return rv
      -		
      -	def resolve(self):
      -		"""Resolve all references"""
      -		for name in self.items.keys():
      -			self._resolve_one(name)
      -			
      -	def _resolve_one(self, name):
      -		"""Resolve references in one definition, recursively"""
      -		# First check for unknown macros and recursive calls
      -		if not self.items.has_key(name):
      -			print "Undefined macro:", name
      -			return ['<<%s>>'%name]
      -		if self.resolving.has_key(name):
      -			print "Recursive macro:", name
      -			return ['<<%s>>'%name]
      -		# Then check that we haven't handled this one before
      -		if self.resolved.has_key(name):
      -			return self.items[name]
      -		# No rest for the wicked: we have work to do.
      -		self.resolving[name] = 1
      -		result = []
      -		lastlineincomplete = 0
      -		for lineno, line in self.items[name]:
      -			mo = USEDEFINITION.search(line)
      -			if mo:
      -				# We replace the complete line. Is this correct?
      -				macro = mo.group('name')
      -				replacement = self._resolve_one(macro)
      -				if lastlineincomplete:
      -					replacement = self._addspace(replacement, lastlineincomplete)
      -				result = result + replacement
      -			else:
      -				result.append((lineno, line))
      -			if line[-1] == '\n':
      -				lastlineincomplete = 0
      -			else:
      -				lastlineincomplete = len(line)
      -		self.items[name] = result
      -		self.resolved[name] = 1
      -		del self.resolving[name]
      -		return result
      -		
      -	def save(self, dir, pattern):
      -		"""Save macros that match pattern to folder dir"""
      -		# Compile the pattern, if needed
      -		if type(pattern) == type(''):
      -			pattern = re.compile(pattern)
      -		# If the directory is relative it is relative to the sourcefile
      -		if not os.path.isabs(dir):
      -			sourcedir = os.path.split(self.filename)[0]
      -			dir = os.path.join(sourcedir, dir)
      -		for name in self.items.keys():
      -			if pattern.search(name):
      -				pathname = os.path.join(dir, name)
      -				data = self._addlinedirectives(self.items[name])
      -				self._dosave(pathname, data)
      -				
      -	def _addlinedirectives(self, data):
      -		curlineno = -100
      -		rv = []
      -		for lineno, line in data:
      -			curlineno = curlineno + 1
      -			if self.genlinedirectives and line and line != '\n' and lineno != curlineno:
      -				rv.append(self._linedirective(lineno))
      -				curlineno = lineno
      -			rv.append(line)
      -		return rv
      -		
      -	def _dosave(self, pathname, data):
      -		"""Save data to pathname, unless it is identical to what is there"""
      -		if os.path.exists(pathname):
      -			olddata = open(pathname).readlines()
      -			if olddata == data:
      -				return
      -		macostools.mkdirs(os.path.split(pathname)[0])
      -		fp = open(pathname, "w").writelines(data)
      -		
      -def process(file, config):
      -	pr = Processor(file, config)
      -	pr.read()
      -	pr.resolve()
      -	for pattern, folder in config['filepatterns']:
      -		pr.save(folder, pattern)
      -	
      -def readconfig():
      -	"""Read a configuration file, if it doesn't exist create it."""
      -	configname = sys.argv[0] + '.config'
      -	if not os.path.exists(configname):
      -		confstr = DEFAULT_CONFIG
      -		open(configname, "w").write(confstr)
      -		print "Created config file", configname
      -##		print "Please check and adapt (if needed)"
      -##		sys.exit(0)
      -	namespace = {}
      -	execfile(configname, namespace)
      -	return namespace
      -
      -def main():
      -	config = readconfig()
      -	if len(sys.argv) > 1:
      -		for file in sys.argv[1:]:
      -			if file[-3:] == '.nw':
      -				print "Processing", file
      -				process(file, config)
      -			else:
      -				print "Skipping", file
      -	else:
      -		fss, ok = macfs.PromptGetFile("Select .nw source file", "TEXT")
      -		if not ok:
      -			sys.exit(0)
      -		process(fss.as_pathname(), config)
      -		
      -if __name__ == "__main__":
      -	main()
      

    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%0Dk>?juB$F8aadihB7RIdF(~3gr5}UVcB>>cC2La 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 Cb42X` diff --git a/Mac/Distributions/binary.exclude b/Mac/Distributions/binary.exclude deleted file mode 100644 index 9356cac90b6..00000000000 --- 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 ad2072960a3..00000000000 --- 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 c1cb22b05b8..00000000000 --- 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 962ca5706ee..00000000000 --- 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 e63e55e9405..00000000000 --- 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 ec735c7b094..00000000000 --- 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 5eb8fec9fb8..00000000000 --- 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 -